{"version":3,"sources":["webpack:///scripts/plugin--remove-element-classes--8b980e664ef33c30df14.js","webpack:///./client/src/core/plugins/jquery__remove-element-classes/plugin.js"],"names":["webpackJsonp","/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/core/plugins/jquery__remove-element-classes/plugin.js","module","exports","__webpack_require__","_interopRequireDefault","obj","__esModule","default","_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","prototype","_jquery2","_jquery","_debug2","_debug","_lib2","_lib","log","PLUGIN_NAME","PluginKlass","element","options","this","$element","$classes","classes","split","$targets","watch","value","on","delegate","remove","document","filterNonDelegateEvents","boundEvent","fn","ignoreChildEvents","event","call","trigger","forEach","index","$target","$utils","selectors","selectTarget","$has","hasClass","removeClass","DEFAULTS"],"mappings":"AAAAA,cAAc,mCAERC,6OACA,SAAUC,EAAQC,EAASC,GAEjC,YAiEA,SAASC,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAhEhH,GAAIC,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAIC,GAAI,EAAGA,EAAID,EAAME,OAAQD,IAAK,CAAE,GAAIE,GAAaH,EAAMC,EAAIE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeT,EAAQI,EAAWM,IAAKN,IAAiB,MAAO,UAAUR,EAAae,EAAYC,GAAiJ,MAA9HD,IAAYZ,EAAiBH,EAAYiB,UAAWF,GAAiBC,GAAab,EAAiBH,EAAagB,GAAqBhB,MCsChiB,yBDYIkB,EAAWxB,EAAuByB,GCVtC,mNDcIC,EAAU1B,EAAuB2B,GCbrC,sNDiBIC,EAAQ5B,EAAuB6B,GChBnC,iPAEMC,GAAM,wBAAiBC,eAEvBC,E,WAEJ,WAAYC,EAASC,GAAS,UAC5BC,KAAKF,QAAUA,EACfE,KAAKC,UAAW,aAAEH,GAClBE,KAAKD,QAAUA,EAEfC,KAAKE,SAAWF,KAAKD,QAAQI,QAAQC,MAAM,KAC3CJ,KAAKK,SAAWL,KAAKD,QAAQxB,OAAO6B,MAAM,KAC1CT,EAAI,YAAaG,EAASC,GAE1BC,KAAKM,QDgFP,MAtDAjC,GAAawB,IACXZ,IAAK,QACLsB,MAAO,WCxBA,MACyBP,KAAKD,QAA7BS,EADD,EACCA,GAAIjC,EADL,EACKA,OAAQkC,EADb,EACaA,QACT,WAAPD,EACFR,KAAKU,SAEGD,GAKR,aAAEE,UACCH,GAAGA,EAAIR,KAAKF,QAASE,KAAKY,wBAAwBZ,KAAKU,SAL1DV,KAAKa,WAAab,KAAKC,SACpBO,GAAGA,EAAIR,KAAKY,wBAAwBZ,KAAKU,SAM9Cf,EAAI,WAAYK,KAAKF,SAAWU,KAAIjC,SAAQkC,gBD2B5CxB,IAAK,0BACLsB,MAAO,SCzBgBO,GAAI,WAEzBC,EACEf,KAAKD,QADPgB,iBAEF,OAAO,UAACC,GACFD,GACFC,EAAMzC,SAAW,EAAKuB,SAGtBgB,EAAGG,KAAK,OD8BZhC,IAAK,SACLsB,MAAO,WC1BC,UACRZ,GAAI,SAAUK,KAAKD,SACnBC,KAAKC,SAASiB,QAAWtB,cAAzB,UAA+CI,KAAKD,SACpDC,KAAKK,SAASc,QAAS,SAAC5C,EAAQ6C,GAC9B,GAAMlB,GAAW,EAAKA,SAASkB,EAC/BzB,GAAI,kBAAmBpB,SAAQ2B,YAC/B,IAAMmB,GAAU,EAAKC,OAAOC,UAAUC,aAAajD,EAAQ,EAAK0B,UAC1DwB,EAAOJ,EAAQK,SAASxB,EAE9BmB,GAAQH,QAAWtB,cAAnB,gBAA+C,EAAKG,SACpDsB,EAAQM,YAAYzB,GACpBmB,EAAQH,QAAWtB,cAAnB,eAA8C,EAAKG,SACnDJ,EAAI,UAAW0B,UAASnB,WAAUuB,WAEpCzB,KAAKC,SAASiB,QAAWtB,cAAzB,SAA8CI,KAAKD,aDgC9CF,IC3BTA,GAAY+B,UACVpB,GAAI,QACJjC,OAAQ,GACR4B,QAAS,GACTM,UAAU,EACVM,mBAAmB,IAIrB,aAAOnB,cAAaC","file":"scripts/plugin--remove-element-classes--8b980e664ef33c30df14.js","sourcesContent":["webpackJsonp([\"plugin--remove-element-classes\"],{\n\n/***/ \"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/core/plugins/jquery__remove-element-classes/plugin.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Remove Element Classes\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ### Html Attributes\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ```\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       data-remove-element-classes\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       data-remove-element-classes--on=\"valid jquery event name or (now)\"\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       data-remove-element-classes--target=\"[scoping-directive] .valid-jquery > selector\"\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       data-remove-element-classes--classes=\"space separated class name(s)\"\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       data-remove-element-classes--delegate=\"true|false, bind event on element, or on document root\"\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       data-remove-element-classes--ignore-child-events=\"true|false, child triggers events\"\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ```\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     #### scoping directives\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Scoping directives control where or what direction in the dom the selector is applied\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     - `(parent)` Find a parent\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     - `(parents)` Find all parents\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     - `(here)` Find siblings or descendants\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     - `(siblings)` Find siblings\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     - `(self)` current element\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Markup:\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     {{#> Core.Styleguide.Box\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         modifier_class=\"remove-class-box u-align u-align--horizontal u-align--horizontal-center\"\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         width=\"100%\" height=\"5rem\" grow=\"0\"}}\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     <button class=\"button\"\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       data-remove-element-classes\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       data-remove-element-classes--target=\".remove-class-box\"\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       data-remove-element-classes--classes=\"styleguide-box--red\">\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       remove on click\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     </button>\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     <button class=\"button\"\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       data-remove-element-classes\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       data-remove-element-classes--on=\"ToggleElementClasses-before\"\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       data-remove-element-classes--target=\".remove-class-box\"\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       data-remove-element-classes--classes=\"styleguide-box--blue\">\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       remove on the 'ToggleElementClasses-before' event.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     </button>\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     {{/Core.Styleguide.Box}}\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Styleguide Global.Javascript.RemoveClass\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     */\n\n\nvar _jquery = __webpack_require__(\"external \\\"jQuery\\\"\");\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _debug = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/node_modules/debug/src/browser.js\");\n\nvar _debug2 = _interopRequireDefault(_debug);\n\nvar _lib = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/core/plugins/lib/index.js\");\n\nvar _lib2 = _interopRequireDefault(_lib);\n\nvar _index = __webpack_require__(\"/home/vsts/work/1/s/src/SCF/node_modules/babel-loader/lib/index.js??ref--11-0!/home/vsts/work/1/s/src/SCF/node_modules/eslint-loader/index.js!/home/vsts/work/1/s/src/SCF/client/src/core/plugins/jquery__remove-element-classes/index.js\");\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)('plugins/' + _index.PLUGIN_NAME);\n\nvar PluginKlass = function () {\n  function PluginKlass(element, options) {\n    _classCallCheck(this, PluginKlass);\n\n    this.element = element;\n    this.$element = (0, _jquery2.default)(element);\n    this.options = options;\n\n    this.$classes = this.options.classes.split(',');\n    this.$targets = this.options.target.split(',');\n    log('construct', element, options);\n\n    this.watch();\n  }\n\n  _createClass(PluginKlass, [{\n    key: 'watch',\n    value: function watch() {\n      var _options = this.options,\n          on = _options.on,\n          target = _options.target,\n          delegate = _options.delegate;\n\n      if (on === '(now)') {\n        this.remove();\n      } else if (!delegate) {\n        this.boundEvent = this.$element.on(on, this.filterNonDelegateEvents(this.remove));\n      } else {\n        (0, _jquery2.default)(document).on(on, this.element, this.filterNonDelegateEvents(this.remove));\n      }\n      log('watching', this.element, { on: on, target: target, delegate: delegate });\n    }\n  }, {\n    key: 'filterNonDelegateEvents',\n    value: function filterNonDelegateEvents(fn) {\n      var _this = this;\n\n      var ignoreChildEvents = this.options.ignoreChildEvents;\n\n      return function (event) {\n        if (ignoreChildEvents && event.target !== _this.element) {\n          return;\n        } else {\n          fn.call(_this);\n        }\n      };\n    }\n  }, {\n    key: 'remove',\n    value: function remove() {\n      var _this2 = this;\n\n      log('remove', this.options);\n      this.$element.trigger(_index.PLUGIN_NAME + '.before', this.options);\n      this.$targets.forEach(function (target, index) {\n        var $classes = _this2.$classes[index];\n        log('remove.targets', { target: target, $classes: $classes });\n        var $target = _this2.$utils.selectors.selectTarget(target, _this2.$element);\n        var $has = $target.hasClass($classes);\n\n        $target.trigger(_index.PLUGIN_NAME + '.beforeTarget', _this2.options);\n        $target.removeClass($classes);\n        $target.trigger(_index.PLUGIN_NAME + '.afterTarget', _this2.options);\n        log('remove', { $target: $target, $classes: $classes, $has: $has });\n      });\n      this.$element.trigger(_index.PLUGIN_NAME + '.after', this.options);\n    }\n  }]);\n\n  return PluginKlass;\n}();\n\nPluginKlass.DEFAULTS = {\n  on: 'click', // event which current element is triggered\n  target: '', // selector for the target to remove classnames on\n  classes: '', // the classname to remove\n  delegate: false, // bind on element or use delegate events on document.\n  ignoreChildEvents: false // whether or not child events trigger\n};\n\n(0, _lib2.default)(_index.PLUGIN_NAME, PluginKlass);\n\n/***/ })\n\n});\n\n\n// WEBPACK FOOTER //\n// scripts/plugin--remove-element-classes--8b980e664ef33c30df14.js","/*\nRemove Element Classes\n\n### Html Attributes\n\n```\n  data-remove-element-classes\n  data-remove-element-classes--on=\"valid jquery event name or (now)\"\n  data-remove-element-classes--target=\"[scoping-directive] .valid-jquery > selector\"\n  data-remove-element-classes--classes=\"space separated class name(s)\"\n  data-remove-element-classes--delegate=\"true|false, bind event on element, or on document root\"\n  data-remove-element-classes--ignore-child-events=\"true|false, child triggers events\"\n```\n\n#### scoping directives\n\nScoping directives control where or what direction in the dom the selector is applied\n\n- `(parent)` Find a parent\n- `(parents)` Find all parents\n- `(here)` Find siblings or descendants\n- `(siblings)` Find siblings\n- `(self)` current element\n\n\nMarkup:\n{{#> Core.Styleguide.Box\n    modifier_class=\"remove-class-box u-align u-align--horizontal u-align--horizontal-center\"\n    width=\"100%\" height=\"5rem\" grow=\"0\"}}\n<button class=\"button\"\n  data-remove-element-classes\n  data-remove-element-classes--target=\".remove-class-box\"\n  data-remove-element-classes--classes=\"styleguide-box--red\">\n  remove on click\n</button>\n<button class=\"button\"\n  data-remove-element-classes\n  data-remove-element-classes--on=\"ToggleElementClasses-before\"\n  data-remove-element-classes--target=\".remove-class-box\"\n  data-remove-element-classes--classes=\"styleguide-box--blue\">\n  remove on the 'ToggleElementClasses-before' event.\n</button>\n{{/Core.Styleguide.Box}}\n\nStyleguide Global.Javascript.RemoveClass\n*/\nimport $ from 'jquery';\n\nimport debug from 'debug';\nimport plugin from '@core/plugins/lib';\nimport { ELEMENT_SELECTOR, PLUGIN_NAME } from './index';\n\nconst log = debug(`plugins/${PLUGIN_NAME}`);\n\nclass PluginKlass {\n\n  constructor(element, options) {\n    this.element = element;\n    this.$element = $(element);\n    this.options = options;\n\n    this.$classes = this.options.classes.split(',');\n    this.$targets = this.options.target.split(',');\n    log('construct', element, options);\n\n    this.watch();\n\n  }\n\n  watch () {\n    const { on, target, delegate} = this.options;\n    if (on === '(now)') {\n      this.remove();\n    }\n    else if (!delegate) {\n      this.boundEvent = this.$element\n        .on(on, this.filterNonDelegateEvents(this.remove));\n    }\n    else {\n      $(document)\n        .on(on, this.element, this.filterNonDelegateEvents(this.remove));\n    }\n    log('watching', this.element, { on, target, delegate });\n  }\n\n  filterNonDelegateEvents (fn) {\n    const {\n      ignoreChildEvents\n    } = this.options;\n    return (event) => {\n      if (ignoreChildEvents &&\n        event.target !== this.element) {\n        return;\n      } else {\n        fn.call(this);\n      }\n    };\n  }\n\n  remove () {\n    log('remove', this.options);\n    this.$element.trigger(`${PLUGIN_NAME}.before`, this.options);\n    this.$targets.forEach( (target, index) => {\n      const $classes = this.$classes[index];\n      log('remove.targets', {target, $classes});\n      const $target = this.$utils.selectors.selectTarget(target, this.$element);\n      const $has = $target.hasClass($classes);\n\n      $target.trigger(`${PLUGIN_NAME}.beforeTarget`, this.options);\n      $target.removeClass($classes);\n      $target.trigger(`${PLUGIN_NAME}.afterTarget`, this.options);\n      log('remove', {$target, $classes, $has});\n    });\n    this.$element.trigger(`${PLUGIN_NAME}.after`, this.options);\n  }\n\n}\n\nPluginKlass.DEFAULTS = {\n  on: 'click', // event which current element is triggered\n  target: '', // selector for the target to remove classnames on\n  classes: '', // the classname to remove\n  delegate: false, // bind on element or use delegate events on document.\n  ignoreChildEvents: false, // whether or not child events trigger\n};\n\n\nplugin(PLUGIN_NAME, PluginKlass);\n\n\n\n// WEBPACK FOOTER //\n// ./client/src/core/plugins/jquery__remove-element-classes/plugin.js"],"sourceRoot":""}