{"version":3,"sources":["webpack:///js/plugin--collapsible--2da3a78d6e443b336ef2.js","webpack:///./project/client/src/core/plugins/jquery__collapsible/collapsible-v1.1.0.custom.js"],"names":["webpackJsonpHort","/tool/node_modules/babel-loader/lib/index.js??ref--7-0!/tool/node_modules/eslint-loader/index.js!/tool/project/client/src/core/plugins/jquery__collapsible/collapsible-v1.1.0.custom.js","module","exports","__webpack_require__","_classCallCheck","instance","Constructor","TypeError","getJSONValue","stringValue","JSON","parse","error","Object","defineProperty","value","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","key","protoProps","staticProps","prototype","_debug","_debug2","obj","__esModule","default","log","Collapsible","element","options","this","scopes","document","contentSelectorIsId","contentSelector","contentSelectorScope","button","buttonSelector","querySelector","content","collapseWith","collapsedClass","split","toggleMethod","toggleWithClass","toggleWithHidden","attributeObserver","MutationObserver","onAttributeChange","bind","bindDocumentEvents","closeWithDocumentClick","bindDocumentClick","unbindDocumentEvents","unbindDocumentClick","initEventName","dataset","init","watch","hidden","doCollapse","undefined","open","isCollapsed","dispatchEvent","CustomEvent","bubbles","cancelable","addEventListener","toggle","observe","attributes","closeOnPageshow","window","handlePageShow","setAttribute","_this","forEach","className","classList","add","remove","selfClosing","close","collapsibleOpen","openedEvent","onUncollapse","closedEvent","onCollapse","onDocumentClick","removeEventListener","event","persisted","clickTarget","contains","mutationList","observer","filter","mutation","type","attributeName","startsWith","onOpenChanged","DEFAULTS"],"mappings":"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","file":"js/plugin--collapsible--2da3a78d6e443b336ef2.js","sourcesContent":["webpackJsonpHort([\"plugin--collapsible\"],{\n\n/***/ \"/tool/node_modules/babel-loader/lib/index.js??ref--7-0!/tool/node_modules/eslint-loader/index.js!/tool/project/client/src/core/plugins/jquery__collapsible/collapsible-v1.1.0.custom.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _debug = __webpack_require__(\"/tool/node_modules/babel-loader/lib/index.js??ref--7-0!/tool/node_modules/eslint-loader/index.js!/tool/node_modules/debug/src/browser.js\");\n\nvar _debug2 = _interopRequireDefault(_debug);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar log = (0, _debug2.default)('collapsible');\n\nfunction getJSONValue(stringValue) {\n\ttry {\n\t\treturn JSON.parse(stringValue);\n\t} catch (error) {\n\t\treturn stringValue;\n\t}\n}\n\nvar Collapsible = function () {\n\tfunction Collapsible(element, options) {\n\t\t_classCallCheck(this, Collapsible);\n\n\t\tthis.element = element;\n\t\tthis.options = options;\n\n\t\tvar scopes = {\n\t\t\tdocument: document,\n\t\t\telement: this.element\n\t\t};\n\n\t\t//\tLook for the content element within this element or elsewhere\n\t\tvar contentSelectorIsId = this.options.contentSelector && this.options.contentSelector[0] === \"#\";\n\n\t\tif (contentSelectorIsId) {\n\t\t\tthis.contentSelectorScope = scopes[\"document\"];\n\t\t} else {\n\t\t\tthis.contentSelectorScope = scopes[this.options.contentSelectorScope] ? scopes[this.options.contentSelectorScope] : scopes[\"element\"];\n\t\t}\n\n\t\t// if no button is specified perhaps this is the button\n\t\tthis.button = this.options.buttonSelector ? this.element.querySelector(this.options.buttonSelector) : this.element;\n\n\t\tif (!this.button) {\n\t\t\tlog('The provided button selector in data-collapsible-button-selector=\"' + this.options.buttonSelector + '\" failed to match a button. Aborting.');\n\t\t\treturn false;\n\t\t}\n\n\t\t// Content is optional\n\t\t//\twe may be toggling with CSS based on aria-expanded button attr\n\t\tthis.content = this.options.contentSelector && this.contentSelectorScope.querySelector(this.options.contentSelector);\n\t\tthis.collapseWith = this.options.collapsedClass ? \"class\" : \"hidden\";\n\n\t\t// Class could be multiple space separated classes\n\t\tthis.collapsedClass = this.options.collapsedClass && this.options.collapsedClass.split(\" \");\n\n\t\tthis.toggleMethod = this.collapseWith === \"class\" ? this.toggleWithClass : this.toggleWithHidden;\n\n\t\tthis.attributeObserver = new MutationObserver(this.onAttributeChange.bind(this));\n\n\t\tthis.bindDocumentEvents = this.options.closeWithDocumentClick ? this.bindDocumentClick : function () {};\n\n\t\tthis.unbindDocumentEvents = this.options.closeWithDocumentClick ? this.unbindDocumentClick : function () {};\n\n\t\tthis.initEventName = this.element.dataset[\"initStateEvent\"];\n\n\t\tthis.init();\n\t\tthis.watch();\n\t}\n\n\t_createClass(Collapsible, [{\n\t\tkey: 'init',\n\t\tvalue: function init() {\n\t\t\t// component enabled - show the button\n\t\t\tthis.button.hidden = false;\n\n\t\t\t// Determine initial collapse state\n\t\t\t//\tif set open option determines init state\n\t\t\tvar doCollapse = this.options.open !== undefined ? !this.options.open : true;\n\n\t\t\tthis.toggleMethod(doCollapse);\n\t\t\tthis.isCollapsed = doCollapse;\n\n\t\t\tif (this.initEventName) {\n\t\t\t\tthis.element.dispatchEvent(new CustomEvent(this.initEventName, {\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcancelable: true\n\t\t\t\t}));\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'watch',\n\t\tvalue: function watch() {\n\t\t\tthis.button.addEventListener(\"click\", this.toggle.bind(this));\n\t\t\tthis.attributeObserver.observe(this.element, { attributes: true });\n\n\t\t\tif (this.content) {\n\t\t\t\tthis.content.addEventListener(\"escape\", this.toggle.bind(this));\n\t\t\t}\n\n\t\t\tif (this.options.closeOnPageshow === true) {\n\t\t\t\twindow.addEventListener('pageshow', this.handlePageShow.bind(this));\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'toggleWithHidden',\n\t\tvalue: function toggleWithHidden(doCollapse) {\n\t\t\tthis.button.setAttribute(\"aria-expanded\", !doCollapse);\n\n\t\t\tif (!this.content) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.content.hidden = doCollapse;\n\t\t}\n\t}, {\n\t\tkey: 'toggleWithClass',\n\t\tvalue: function toggleWithClass(doCollapse) {\n\t\t\tvar _this = this;\n\n\t\t\tthis.button.setAttribute(\"aria-expanded\", !doCollapse);\n\n\t\t\tif (!this.content) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (doCollapse) {\n\t\t\t\tthis.collapsedClass.forEach(function (className) {\n\t\t\t\t\t_this.content.classList.add(className);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.collapsedClass.forEach(function (className) {\n\t\t\t\t\t_this.content.classList.remove(className);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// button click handler\n\n\t}, {\n\t\tkey: 'toggle',\n\t\tvalue: function toggle() {\n\t\t\tif (!this.options.selfClosing && !this.isCollapsed) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar handler = this.isCollapsed ? this.open.bind(this) : this.close.bind(this);\n\t\t\thandler();\n\t\t}\n\t}, {\n\t\tkey: 'open',\n\t\tvalue: function open() {\n\t\t\tthis.toggleMethod(false);\n\t\t\tthis.isCollapsed = false;\n\t\t\tthis.element.dataset.collapsibleOpen = true;\n\t\t\tthis.bindDocumentEvents();\n\n\t\t\tvar openedEvent = new CustomEvent(this.options.onUncollapse, {\n\t\t\t\tbubbles: true,\n\t\t\t\tcancelable: true\n\t\t\t\t// detail: {}\n\t\t\t});\n\n\t\t\tthis.element.dispatchEvent(openedEvent);\n\t\t}\n\t}, {\n\t\tkey: 'close',\n\t\tvalue: function close() {\n\t\t\tthis.toggleMethod(true);\n\t\t\tthis.isCollapsed = true;\n\t\t\tthis.element.dataset.collapsibleOpen = false;\n\t\t\tthis.unbindDocumentEvents();\n\n\t\t\tvar closedEvent = new CustomEvent(this.options.onCollapse, {\n\t\t\t\tbubbles: true,\n\t\t\t\tcancelable: true\n\t\t\t});\n\n\t\t\tthis.element.dispatchEvent(closedEvent);\n\t\t}\n\t}, {\n\t\tkey: 'bindDocumentClick',\n\t\tvalue: function bindDocumentClick() {\n\t\t\tdocument.addEventListener(\"click\", this.onDocumentClick.bind(this));\n\t\t}\n\t}, {\n\t\tkey: 'unbindDocumentClick',\n\t\tvalue: function unbindDocumentClick() {\n\t\t\tdocument.removeEventListener(\"click\", this.onDocumentClick);\n\t\t}\n\t}, {\n\t\tkey: 'handlePageShow',\n\t\tvalue: function handlePageShow(event) {\n\t\t\tif (event.persisted && this.isCollapsed === false) {\n\t\t\t\tthis.close();\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'onDocumentClick',\n\t\tvalue: function onDocumentClick(event) {\n\t\t\tvar clickTarget = event.target;\n\n\t\t\t// clicked this.button\n\t\t\tif (clickTarget === this.button || this.button.contains(clickTarget)) {\n\t\t\t\tlog(\"clicked button\");\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// clicked this.content\n\t\t\tif (this.content && (clickTarget === this.content || this.content.contains(clickTarget))) {\n\t\t\t\tlog(\"clicked content or inside it\");\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.close();\n\t\t}\n\t}, {\n\t\tkey: 'onAttributeChange',\n\t\tvalue: function onAttributeChange(mutationList, observer) {\n\t\t\tmutationList.filter(function (mutation) {\n\t\t\t\treturn mutation.type === \"attributes\" && mutation.attributeName.startsWith(\"data-collapsible-open\");\n\t\t\t}).forEach(this.onOpenChanged.bind(this));\n\t\t}\n\t}, {\n\t\tkey: 'onOpenChanged',\n\t\tvalue: function onOpenChanged(mutation) {\n\t\t\tvar doCollapse = !getJSONValue(this.element.dataset.collapsibleOpen);\n\t\t\tif (this.isCollapsed !== doCollapse) {\n\t\t\t\tthis.toggleMethod(doCollapse);\n\t\t\t\tthis.isCollapsed = doCollapse;\n\t\t\t}\n\t\t}\n\t}]);\n\n\treturn Collapsible;\n}();\n\nCollapsible.DEFAULTS = {\n\tselfClosing: true,\n\tonCollapse: \"collapsibleClosed\",\n\tonUncollapse: \"collapsibleOpened\"\n};\n\nexports.default = Collapsible;\n\n/***/ })\n\n});\n\n\n// WEBPACK FOOTER //\n// js/plugin--collapsible--2da3a78d6e443b336ef2.js","import debug from 'debug';\r\nconst log = debug('collapsible');\r\n\r\nfunction getJSONValue(stringValue) {\r\n\ttry {\r\n\t\treturn JSON.parse(stringValue);\r\n\t} catch (error) {\r\n\t\treturn stringValue;\r\n\t}\r\n}\r\n\r\nclass Collapsible {\r\n\tconstructor(element, options) {\r\n\t\tthis.element = element;\r\n\t\tthis.options = options;\r\n\r\n\t\tconst scopes = {\r\n\t\t\tdocument: document,\r\n\t\t\telement: this.element,\r\n\t\t};\r\n\r\n\t\t//\tLook for the content element within this element or elsewhere\r\n\t\tconst contentSelectorIsId =\r\n\t\t\tthis.options.contentSelector &&\r\n\t\t\tthis.options.contentSelector[0] === \"#\";\r\n\r\n\t\tif (contentSelectorIsId) {\r\n\t\t\tthis.contentSelectorScope = scopes[\"document\"];\r\n\t\t} else {\r\n\t\t\tthis.contentSelectorScope = scopes[\r\n\t\t\t\tthis.options.contentSelectorScope\r\n\t\t\t]\r\n\t\t\t\t? scopes[this.options.contentSelectorScope]\r\n\t\t\t\t: scopes[\"element\"];\r\n\t\t}\r\n\r\n\t\t// if no button is specified perhaps this is the button\r\n\t\tthis.button = this.options.buttonSelector\r\n\t\t\t? this.element.querySelector(this.options.buttonSelector)\r\n\t\t\t: this.element;\r\n\r\n\t\tif(!this.button) {\r\n\t\t\tlog(`The provided button selector in data-collapsible-button-selector=\"${this.options.buttonSelector}\" failed to match a button. Aborting.`);\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Content is optional\r\n\t\t//\twe may be toggling with CSS based on aria-expanded button attr\r\n\t\tthis.content =\r\n\t\t\tthis.options.contentSelector &&\r\n\t\t\tthis.contentSelectorScope.querySelector(\r\n\t\t\t\tthis.options.contentSelector\r\n\t\t\t);\r\n\t\tthis.collapseWith = this.options.collapsedClass ? \"class\" : \"hidden\";\r\n\r\n\t\t// Class could be multiple space separated classes\r\n\t\tthis.collapsedClass =\r\n\t\t\tthis.options.collapsedClass &&\r\n\t\t\tthis.options.collapsedClass.split(\" \");\r\n\r\n\t\tthis.toggleMethod =\r\n\t\t\tthis.collapseWith === \"class\"\r\n\t\t\t\t? this.toggleWithClass\r\n\t\t\t\t: this.toggleWithHidden;\r\n\r\n\t\tthis.attributeObserver = new MutationObserver(\r\n\t\t\tthis.onAttributeChange.bind(this)\r\n\t\t);\r\n\r\n\t\tthis.bindDocumentEvents = this.options.closeWithDocumentClick\r\n\t\t\t? this.bindDocumentClick\r\n\t\t\t: function () {};\r\n\r\n\t\tthis.unbindDocumentEvents = this.options.closeWithDocumentClick\r\n\t\t\t? this.unbindDocumentClick\r\n\t\t\t: function () {};\r\n\r\n\t\tthis.initEventName = this.element.dataset[\"initStateEvent\"];\r\n\r\n\t\tthis.init();\r\n\t\tthis.watch();\r\n\t}\r\n\r\n\tinit() {\r\n\t\t// component enabled - show the button\r\n\t\tthis.button.hidden = false;\r\n\r\n\t\t// Determine initial collapse state\r\n\t\t//\tif set open option determines init state\r\n\t\tvar doCollapse =\r\n\t\t\tthis.options.open !== undefined ? !this.options.open : true;\r\n\r\n\t\tthis.toggleMethod(doCollapse);\r\n\t\tthis.isCollapsed = doCollapse;\r\n\r\n\t\tif (this.initEventName) {\r\n\t\t\tthis.element.dispatchEvent(new CustomEvent(this.initEventName, {\r\n\t\t\t\tbubbles: true,\r\n\t\t\t\tcancelable: true,\r\n\t\t\t}));\r\n\t\t}\r\n\t}\r\n\r\n\twatch() {\r\n\t\tthis.button.addEventListener(\"click\", this.toggle.bind(this));\r\n\t\tthis.attributeObserver.observe(this.element, { attributes: true });\r\n\r\n\t\tif (this.content) {\r\n\t\t\tthis.content.addEventListener(\"escape\", this.toggle.bind(this));\r\n\t\t}\r\n\r\n\t\tif (this.options.closeOnPageshow === true) {\r\n\t\t\twindow.addEventListener('pageshow', this.handlePageShow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleWithHidden(doCollapse) {\r\n\t\tthis.button.setAttribute(\"aria-expanded\", !doCollapse);\r\n\r\n\t\tif (!this.content) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tthis.content.hidden = doCollapse;\r\n\t}\r\n\r\n\ttoggleWithClass(doCollapse) {\r\n\t\tthis.button.setAttribute(\"aria-expanded\", !doCollapse);\r\n\r\n\t\tif (!this.content) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (doCollapse) {\r\n\t\t\tthis.collapsedClass.forEach((className) => {\r\n\t\t\t\tthis.content.classList.add(className);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.collapsedClass.forEach((className) => {\r\n\t\t\t\tthis.content.classList.remove(className);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t// button click handler\r\n\ttoggle() {\r\n\t\tif (!this.options.selfClosing && !this.isCollapsed) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst handler = this.isCollapsed\r\n\t\t\t? this.open.bind(this)\r\n\t\t\t: this.close.bind(this);\r\n\t\thandler();\r\n\t}\r\n\r\n\topen() {\r\n\t\tthis.toggleMethod(false);\r\n\t\tthis.isCollapsed = false;\r\n\t\tthis.element.dataset.collapsibleOpen = true;\r\n\t\tthis.bindDocumentEvents();\r\n\r\n\t\tconst openedEvent = new CustomEvent(this.options.onUncollapse, {\r\n\t\t\tbubbles: true,\r\n\t\t\tcancelable: true,\r\n\t\t\t// detail: {}\r\n\t\t});\r\n\r\n\t\tthis.element.dispatchEvent(openedEvent);\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.toggleMethod(true);\r\n\t\tthis.isCollapsed = true;\r\n\t\tthis.element.dataset.collapsibleOpen = false;\r\n\t\tthis.unbindDocumentEvents();\r\n\r\n\t\tconst closedEvent = new CustomEvent(this.options.onCollapse, {\r\n\t\t\tbubbles: true,\r\n\t\t\tcancelable: true,\r\n\t\t});\r\n\r\n\t\tthis.element.dispatchEvent(closedEvent);\r\n\t}\r\n\r\n\tbindDocumentClick() {\r\n\t\tdocument.addEventListener(\"click\", this.onDocumentClick.bind(this));\r\n\t}\r\n\r\n\tunbindDocumentClick() {\r\n\t\tdocument.removeEventListener(\"click\", this.onDocumentClick);\r\n\t}\r\n\r\n\thandlePageShow(event){\r\n\t\tif (event.persisted && this.isCollapsed === false) {\r\n\t\t\tthis.close();\r\n\t\t}\r\n\t}\r\n\r\n\tonDocumentClick(event) {\r\n\t\tconst clickTarget = event.target;\r\n\r\n\t\t// clicked this.button\r\n\t\tif (clickTarget === this.button || this.button.contains(clickTarget)) {\r\n\t\t\tlog(\"clicked button\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// clicked this.content\r\n\t\tif (\r\n\t\t\tthis.content &&\r\n\t\t\t(clickTarget === this.content || this.content.contains(clickTarget))\r\n\t\t) {\r\n\t\t\tlog(\"clicked content or inside it\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tthis.close();\r\n\t}\r\n\r\n\tonAttributeChange(mutationList, observer) {\r\n\t\tmutationList\r\n\t\t\t.filter((mutation) => {\r\n\t\t\t\treturn (\r\n\t\t\t\t\tmutation.type === \"attributes\" &&\r\n\t\t\t\t\tmutation.attributeName.startsWith(\"data-collapsible-open\")\r\n\t\t\t\t);\r\n\t\t\t})\r\n\t\t\t.forEach(this.onOpenChanged.bind(this));\r\n\t}\r\n\r\n\tonOpenChanged(mutation) {\r\n\t\tconst doCollapse = !getJSONValue(this.element.dataset.collapsibleOpen);\r\n\t\tif (this.isCollapsed !== doCollapse) {\r\n\t\t\tthis.toggleMethod(doCollapse);\r\n\t\t\tthis.isCollapsed = doCollapse;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nCollapsible.DEFAULTS = {\r\n\tselfClosing: true,\r\n\tonCollapse: \"collapsibleClosed\",\r\n\tonUncollapse: \"collapsibleOpened\",\r\n};\r\n\r\nexport default Collapsible;\r\n\n\n\n// WEBPACK FOOTER //\n// ./project/client/src/core/plugins/jquery__collapsible/collapsible-v1.1.0.custom.js"],"sourceRoot":""}