{"version":3,"sources":["webpack:///scripts/plugin--collapsible--8ac6be24a0cc53be8cbc.js","webpack:///./project/client/src/core/plugins/jquery__collapsible/collapsible.js"],"names":["webpackJsonp","/tool/node_modules/babel-loader/lib/index.js??ref--11-0!/tool/node_modules/eslint-loader/index.js!/tool/project/client/src/core/plugins/jquery__collapsible/collapsible.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","init","watch","hidden","doCollapse","undefined","open","isCollapsed","addEventListener","toggle","observe","attributes","setAttribute","_this","forEach","className","classList","add","remove","selfClosing","close","dataset","collapsibleOpen","openedEvent","CustomEvent","onUncollapse","bubbles","cancelable","dispatchEvent","closedEvent","onCollapse","onDocumentClick","removeEventListener","event","clickTarget","contains","mutationList","observer","filter","mutation","type","attributeName","startsWith","onOpenChanged","DEFAULTS"],"mappings":"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","file":"scripts/plugin--collapsible--8ac6be24a0cc53be8cbc.js","sourcesContent":["webpackJsonp([\"plugin--collapsible\"],{\n\n/***/ \"/tool/node_modules/babel-loader/lib/index.js??ref--11-0!/tool/node_modules/eslint-loader/index.js!/tool/project/client/src/core/plugins/jquery__collapsible/collapsible.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--11-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\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.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\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\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: \"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// scripts/plugin--collapsible--8ac6be24a0cc53be8cbc.js","import debug from \"debug\";\r\n\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\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.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\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\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\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.js"],"sourceRoot":""}