material 0.7.0 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -5
- package/dist/demo-bundle.js +2281 -2
- package/dist/demo-bundle.js.map +7 -1
- package/dist/demo.js +13 -13
- package/esbuild.js +22 -0
- package/esbuild.watch.js +25 -0
- package/form.js +27 -0
- package/index.js +59 -58
- package/list.js +35 -0
- package/package.json +8 -17
- package/src/appbar.js +7 -204
- package/src/badge.js +27 -0
- package/src/button.js +127 -177
- package/src/calendar.js +53 -55
- package/src/card.js +1 -3
- package/src/checkbox.js +5 -55
- package/src/component.js +0 -2
- package/src/container.js +0 -2
- package/src/datehour.js +38 -0
- package/src/dialog.js +104 -151
- package/src/divider.js +1 -3
- package/src/drawer.js +1 -19
- package/src/element/attribute.js +7 -10
- package/src/element/build.js +6 -7
- package/src/element/create.js +3 -6
- package/src/element/event.js +2 -2
- package/src/element/insert.js +6 -17
- package/src/element/observer.js +22 -0
- package/src/element/offset.js +2 -2
- package/src/element/style.js +12 -12
- package/src/element.js +2 -2
- package/src/field/email.js +9 -44
- package/src/field/image.js +17 -51
- package/src/{control/file.js → file.js} +15 -45
- package/src/form/build.js +7 -7
- package/src/form/controller.js +8 -8
- package/src/form/create.js +1 -1
- package/src/form/data.js +9 -9
- package/src/form/delete.js +1 -1
- package/src/form/render.js +9 -9
- package/src/form/set.js +1 -1
- package/src/form/submit.js +6 -6
- package/src/form/update.js +3 -3
- package/src/form/verify.js +6 -6
- package/src/form.js +9 -11
- package/src/icon.js +4 -6
- package/src/image.js +39 -106
- package/src/item.js +1 -3
- package/src/layout.js +14 -14
- package/src/{control/link.js → link.js} +13 -32
- package/src/list/build.js +10 -10
- package/src/list/click.js +3 -3
- package/src/list/collection.js +1 -1
- package/src/list/filter.js +11 -11
- package/src/list/image.js +3 -3
- package/src/list/render.js +15 -15
- package/src/list/request.js +8 -8
- package/src/list/search.js +12 -12
- package/src/list/select.js +18 -18
- package/src/list/status.js +1 -1
- package/src/list/update.js +6 -6
- package/src/list/virtual.js +20 -20
- package/src/list/virtual.new.js +5 -5
- package/src/list.js +29 -217
- package/src/loading.js +73 -0
- package/src/map/build.js +2 -2
- package/src/map/countries.js +8 -8
- package/src/map/display.js +13 -13
- package/src/map/focus.js +7 -7
- package/src/map/select.js +2 -2
- package/src/map/set.js +3 -3
- package/src/map/viewport.js +11 -11
- package/src/menu.js +59 -115
- package/src/mixin/control.js +3 -3
- package/src/mixin/controller.js +5 -5
- package/src/mixin/create.js +1 -1
- package/src/mixin/display.js +1 -2
- package/src/mixin/events.js +4 -16
- package/src/mixin/focus.js +1 -1
- package/src/mixin/icon.js +2 -2
- package/src/mixin/init.js +2 -2
- package/src/mixin/insert.js +7 -29
- package/src/mixin/label.js +2 -2
- package/src/mixin/settings.js +5 -5
- package/src/module/attach.js +35 -49
- package/src/{control/module → module}/attributes.js +4 -4
- package/src/module/build.js +12 -12
- package/src/module/classify.js +4 -4
- package/src/module/controller.js +5 -32
- package/src/module/css.js +12 -84
- package/src/module/dataset.js +1 -1
- package/src/module/dom.js +8 -3
- package/src/module/dot.js +4 -4
- package/src/module/emitter.js +1 -1
- package/src/module/event.js +2 -2
- package/src/module/events.js +29 -35
- package/src/module/extract.js +10 -10
- package/src/module/last.js +18 -0
- package/src/module/mediator.js +1 -13
- package/src/module/object.js +4 -4
- package/src/module/observer.js +43 -16
- package/src/module/remove.js +10 -10
- package/src/module/ripple.js +19 -24
- package/src/module/scrollbar.js +10 -14
- package/src/module/smoothscroll.js +5 -9
- package/src/module/utils.js +14 -23
- package/src/module/viewport.js +5 -5
- package/src/navigation.js +19 -0
- package/src/progress.js +1 -11
- package/src/search.js +66 -0
- package/src/select.js +58 -273
- package/src/{control/selecter.js → selecter.js} +42 -42
- package/src/selector.js +3 -3
- package/src/skin/material/component/navigation.sass +9 -0
- package/src/skin/material/control/button.sass +10 -0
- package/src/slider.js +1 -3
- package/src/snackbar.js +72 -50
- package/src/switch.js +111 -103
- package/src/{control/switcher.js → switcher.js} +28 -31
- package/src/tabs.js +4 -5
- package/src/tabview.js +26 -46
- package/src/text.js +25 -74
- package/src/textfield.js +97 -234
- package/src/toolbar.js +12 -12
- package/src/tooltip.js +7 -7
- package/src/tree.js +10 -66
- package/src/view/build.js +2 -2
- package/src/view/dataset.js +1 -1
- package/src/view.js +9 -74
- package/rollup.config.js +0 -34
- package/src/banner.js +0 -231
- package/src/control/button.js +0 -239
- package/src/control/button.new.js +0 -190
- package/src/control/datehour.js +0 -65
- package/src/control/dialog.js +0 -175
- package/src/control/image.js +0 -92
- package/src/control/list.js +0 -67
- package/src/control/loading.js +0 -128
- package/src/control/menu.js +0 -85
- package/src/control/module/addclass.js +0 -16
- package/src/control/search.js +0 -98
- package/src/control/select.js +0 -130
- package/src/control/snackbar.js +0 -91
- package/src/control/switch.js +0 -272
- package/src/control/text.js +0 -70
- package/src/control/textfield.js +0 -177
- package/src/element/ripple.js +0 -90
- package/src/tabs/setup.js +0 -0
package/dist/demo-bundle.js.map
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{"version":3,"file":"demo-bundle.js","sources":["../src/module/css.js","../src/component/classify.js","../src/component/create.js","../src/element/create.js","../src/module/dom.js","../src/element/insert.js","../src/module/utils.js","../src/element/style.js","../src/element/offset.js","../src/component/ripple.js","../src/module/extract.js","../src/module/object.js","../src/component/label.js","../src/element/attribute.js","../src/element/build.js","../src/component/init.js","../src/component/control.js","../src/module/emitter.js","../src/module/attach.js","../src/Button.js","../src/button.js","../src/component/insert.js","../src/layout.js","../src/card.js","../src/component/events.js","../src/component.js","../src/container.js","../src/checkbox.js","../src/skin/material/icon/checkbox.svg","../src/component/controller.js","../src/divider.js","../src/drawer.js","../src/item.js","../src/list.js","../src/progress.js","../src/slider.js","../src/skin/material/icon/pin.svg","../src/switch.js","../src/tabs.js","../src/text.js","../src/toolbar.js","icon/navi.svg","demo.js","icon/more.svg"],"sourcesContent":["/**\n * This function checks if the element className passed in parameters\n *\n * @since 0.0.6\n * @module css/has\n * @category Element\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} iteratee The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @see unzip, unzipWith, zip, zipObject, zipObjectDeep, zipWith\n * @example\n *\n * has(element, 'show');\n * // => [111, 222]\n */\nfunction has(element, className) {\n if (!element || !className) {\n return false\n }\n\n return !!element.className.match(new RegExp('(\\\\s|^)' + className + '(\\\\s|$)'))\n}\n\n/**\n * This function adds className to the element's attribute class\n *\n * @since 0.0.6\n * @module css/add\n * @category css\n * @param {HTMLElement} element Related element\n * @param {String} className the className to add\n * grouped values.\n * @returns {HTMLElement} The augmented element\n * @example\n *\n * add(element, 'hidden');\n * // => <div class=\"element hidden\">...</div>\n */\nfunction add(element, className) {\n if (!element || !className) {\n return\n }\n\n let classNames = className.split(' ')\n\n for (var i = 0; i < classNames.length; i++) {\n var cn = classNames[i]\n if (!has(element, cn)) {\n element.classList.add(cn)\n }\n }\n return element\n}\n\n/**\n * This function removes className to the element's attribute class\n *\n * @since 0.0.6\n * @module css/remove\n * @category css\n * @param {HTMLElement} element Related element\n * @param {String} className the className to add\n * @returns {HTMLElement} The element with the removed className\n * @example\n *\n * remove(element, 'hidden');\n * // => <div class=\"element\">...</div>\n */\nfunction remove(element, className) {\n if (!element || !className) {\n return\n }\n\n element.classList.remove(className)\n\n return element\n}\n\n/**\n * This function toggles className from the element's attribute class\n *\n * @since 0.0.6\n * @module css/toggle\n * @category Element\n * @param {HTMLElement} element Related element\n * @param {String} className the className to add\n * grouped values.\n * @returns {HTMLElement} The modified element\n * @example\n *\n * toggle(element, 'hidden');\n * // => <div class=\"element\">...</div>\n * toggle(element, 'hidden');\n * // => <div class=\"element hidden\">...</div>\n */\nfunction toggle(element, className) {\n if (has(element, className)) {\n remove(element, className)\n } else {\n add(element, className)\n }\n\n return element\n}\n\nexport default { has, add, remove, toggle }","import css from '../module/css'\n\n/**\n * Classify component related functions\n * @module component/classify\n * @category component\n */\n\n/**\n * Init component class\n * @param {element} element The component root element\n * @param {object} options component class options\n * @return {Instance} The Class instance\n *\n */\nfunction classify (element, options) {\n css.add(element, options.prefix + '-' + options.class)\n\n if (options.name) {\n css.add(element, options.class + '-' + options.name)\n }\n\n if (options.type) {\n //css.add(element, options.class + '-' + options.type)\n css.add(element, 'type-' + options.type)\n }\n\n if (options.color) {\n css.add(element, options.color + '-color')\n }\n\n if (options.css) {\n css.add(element, options.css)\n }\n\n if (options.elevation) {\n css.add(element, 'elevation-z' + options.elevation)\n }\n\n if (options.name) {\n // console.log('name', options.name)\n element.dataset.name = options.name\n }\n\n if (options.label) {\n element.title = options.label\n }\n\n if (options.style) {\n var styles = options.style.split(' ')\n for (var i = 0; i < styles.length; i++) {\n css.add(element, 'style-' + styles[i])\n }\n }\n\n if (options.theme) {\n element.classList.add(options.theme + '-theme')\n }\n}\n\nexport default classify\n","import classify from './classify'\n\nfunction create (options) {\n var element = document.createElement(options.tag || 'div')\n\n classify(element, options)\n\n return element\n}\n\nexport default create\n","import css from '../module/css'\n\nfunction create (tag, className) {\n tag = tag || 'div'\n\n var element = document.createElement(tag)\n css.add(element, className)\n\n return element\n}\n\nexport default create\n","'use strict'\n\n/**\n * Element insertion related methods\n * @module module/dom\n */\n\n/**\n * Inserts content specified by the container argument at the end of HTMLElement\n *\n * @param {HTMLElement} container\n * @param {String|HTMLElement} html\n * @return {HTMLElement} inserted element\n */\nfunction append (container, element) {\n container.appendChild(element)\n return element\n}\n\n/**\n * Inserts content specified by the html argument at the beginning of HTMLElement\n *\n * @param {HTMLElement} container\n * @param {string|HTMLElement} html\n * @returns {HTMLElement} inserted container\n */\nfunction prepend (container, element) {\n return container.insertBefore(element, container.firstChild)\n}\n\n/**\n * Inserts content specified by the html argument after the HTMLElement\n *\n * @param {HTMLElement} container\n * @returns {HTMLElement} inserted container\n */\nfunction after (container, element) {\n return container.parentNode.insertBefore(element, container.nextSibling)\n}\n\n/**\n * Inserts content specified by the html argument before the HTMLElement\n *\n * @param {HTMLElement} container\n * @returns {HTMLElement} inserted container\n */\nfunction before (container, element) {\n return container.insertBefore(element, container)\n}\n\n/**\n * Replaces given html container with content specified in html parameter\n *\n * @param {HTMLElement} container\n * @param {string|HTMLElement} html\n * @returns {HTMLElement} inserted container\n */\nfunction replace (container, element) {\n return container.parentNode.replaceChild(element, container)\n}\n\n/**\n * Removes HTMLElement from dom tree\n *\n * @param {HTMLElement} container\n * @returns {HTMLElement} removed container\n */\nfunction remove (element) {\n var parent = element.parentNode\n return parent.removeChild(element)\n}\n\n/**\n * [dispose description]\n * @return {Object} The class instance\n */\nfunction dispose (element) {\n var el = element\n return (el.parentNode) ? el.parentNode.removeChild(el) : el\n}\n\n/**\n * empty\n * @return {void}\n */\nfunction empty (element) {\n while (element.firstChild) {\n element.removeChild(element.firstChild)\n }\n}\n\n/**\n * [destroy description]\n * @return {Object} this class\n */\nfunction destroy (element) {\n return element.parentNode.removeChild(element)\n}\n\nexport default { append, prepend, after, before, replace, remove, destroy, empty, dispose }\n","'use strict'\n\nimport dom from '../module/dom'\n\n/**\n * insert element into dom\n * @param {HTMLElement} element [description]\n * @param {HTMLElement} container [description]\n * @param {string} context [description]\n * @return {?} [description]\n */\nfunction insert (element, container, context) {\n if (!element || !container) return\n\n element = element.root || element\n container = container.root || container\n\n context = context || 'bottom'\n\n var contexts = ['top', 'bottom', 'after', 'before']\n var methods = ['prepend', 'append', 'after', 'before']\n\n var index = contexts.indexOf(context)\n if (index === -1) {\n return\n }\n\n var method = methods[index]\n\n // insert component element to the dom tree using dom\n dom[method](container, element)\n\n return element\n}\n\nexport default insert\n","'use strict'\n\n/**\n * Utility functions\n * @module module/utils\n */\n\n/**\n * Checks if given value is an array\n * @param {*} object\n * @returns {boolean}\n * @private\n */\nfunction _isArray (object) {\n return Object.prototype.toString.call(object) === '[object Array]'\n}\n\n/**\n * Checks if javascript object is plain object\n * @param {Object} object\n * @returns {*|boolean}\n * @private\n */\nfunction _isLiteralObject (object) {\n return object && typeof object === 'object' && Object.getPrototypeOf(object) === Object.getPrototypeOf({})\n}\n\n/**\n * Checks if object is iterable\n * @param {Object} object\n * @returns {boolean}\n * @private\n */\nfunction _isIterable (object) {\n var r = _isLiteralObject(object) ||\n _isArray(object) ||\n (typeof object === 'object' &&\n object !== null &&\n object.length !== undefined)\n\n return r\n}\n\n/**\n *\n * @param {Object} object\n * @param {Function} callback\n * @private\n */\nfunction _each (object, callback) {\n if (_isArray(object) || (typeof object === 'object' && object.length !== undefined)) {\n for (var i = 0, l = object.length; i < l; i++) {\n callback.apply(object[i], [object[i], i])\n }\n return\n }\n\n if (_isLiteralObject(object)) {\n for (var key in object) {\n callback.apply(object[key], [object[key], key])\n }\n }\n}\n\n/**\n * Array.indexOf support\n * @param {Array} array\n * @param {*} obj\n * @returns {number}\n * @private\n */\nfunction _indexOf (array, obj) {\n if (Array.prototype.indexOf) {\n return Array.prototype.indexOf.call(array, obj)\n }\n for (var i = 0, j = array.length; i < j; i++) {\n if (array[i] === obj) {\n return i\n }\n }\n return -1\n}\n\nexport { _isArray, _isIterable, _isLiteralObject, _each, _indexOf }\n","/**\n * Element style related methods\n * @module component/style\n */\nimport {\n _isIterable,\n _isLiteralObject,\n _isArray,\n _each\n} from '../module/utils'\n\n/**\n * Gets element's computed style\n * @param {string} prop\n * @returns {*}\n * @private\n */\nfunction get (element, style) {\n // console.log('get', element, style);\n // get array of elements\n if (_isArray(style)) {\n var css = {}\n for (var i in list) {\n css[list[i]] = this.get(element, list[i])\n }\n return css\n } else {\n var computedStyle\n\n if (typeof window.getComputedStyle === 'function') { // normal browsers\n computedStyle = window.getComputedStyle(element)\n } else if (typeof document.currentStyle !== undefined) { // other browsers\n computedStyle = element.currentStyle\n } else {\n computedStyle = element.style\n }\n\n if (style) {\n return computedStyle[style]\n } else {\n return computedStyle\n }\n }\n}\n\n/**\n * set element style\n * @param { ? } element [description]\n * @param {?} style [description]\n */\nfunction set (element, style) {\n if (_isIterable(element) && _isLiteralObject(style)) {\n _each(element, function (e) {\n set(e, style)\n })\n return element\n }\n\n if (_isLiteralObject(style)) {\n // console.log('style', element, style);\n for (var i in style) {\n element.style[i] = style[i]\n }\n return style\n }\n\n return false\n}\n\nexport default { get, set }\n","'use strict'\n\n/**\n * Element style related methods\n * @module component/style\n */\nimport style from './style'\n\nfunction offset (element, prop) {\n var rect = element.getBoundingClientRect()\n\n var offset = {\n top: Math.round(rect.top),\n right: Math.round(rect.right),\n bottom: Math.round(rect.bottom),\n left: Math.round(rect.left),\n width: rect.width ? Math.round(rect.width) : Math.round(element.offsetWidth),\n height: rect.height ? Math.round(rect.height) : Math.round(element.offsetHeight)\n }\n\n // css width and height\n if (offset.width <= 0) {\n offset.width = parseFloat(style.get(element, 'width'))\n }\n if (offset.height <= 0) {\n offset.height = parseFloat(style.get(element, 'height'))\n }\n\n if (prop) {\n return offset[prop]\n } else {\n return offset\n }\n}\n\nexport default offset\n","import create from '../element/create'\nimport insert from '../element/insert'\nimport offset from '../element/offset'\n\nconst defaults = {\n transition: '.5s cubic-bezier(0.4, 0.0, 0.2, 1)',\n opacity: ['1', '.3']\n}\n\n/**\n * init ripple\n * @param {?} container [description]\n * @return {?} [description]\n */\nfunction init (instance) {\n instance.on('built', (container) => {\n set(container)\n })\n}\n\n/**\n * this function set the event listener\n * @param {HTMLElement} container [description]\n */\nfunction set (container) {\n container.addEventListener('mousedown', (e) => {\n show(e)\n })\n}\n\n/**\n * show method\n * @param {event} e The event related to the the touch\n * @param {Object} coord\n * @return {void}\n */\nfunction show (e) {\n // console.log('show', e);\n var container = e.target\n var offs = offset(container)\n\n let ripple = create('div', 'material-ripple')\n let end = coordinate(offs)\n let initial = {\n left: (e.offsetX || offs.width / 2) + 'px',\n top: (e.offsetY || offs.height / 2) + 'px'\n }\n\n ripple.style.left = initial.left\n ripple.style.top = initial.top\n //ripple.style.opacity = defaults.opacity[1]\n ripple.style.transition = defaults.transition\n\n insert(ripple, container, 'top')\n\n setTimeout(() => {\n // console.log('style coord', end);\n ripple.style.left = end.left\n ripple.style.top = end.top\n ripple.style.width = end.size\n ripple.style.height = end.size\n //ripple.style.opacity = defaults.opacity[1]\n }, 1)\n\n document.body.onmouseup = () => {\n destroy(ripple)\n }\n}\n\n/**\n * this method hides the given ripple\n * @return {Object} Size and position\n */\nfunction destroy (ripple) {\n if (ripple.parentNode) { ripple.style.opacity = '0' }\n\n document.body.onmouseup = null\n\n setTimeout(() => {\n if (ripple.parentNode) { ripple.parentNode.removeChild(ripple) }\n }, 1000)\n}\n\n/**\n * Get ripple final coordinates\n * @return {Object} Size and position\n */\nfunction coordinate (o) {\n var size = o.width\n var top = -o.height / 2\n\n if (o.width > o.height) {\n top = -(o.width - o.height / 2)\n }\n\n return {\n size: (size * 2) + 'px',\n top: top + 'px',\n left: (size / -2) + 'px'\n }\n}\n\nexport default init","/**\n * extract.f extract a function from a string using dot\n * @param {string} func A string representing a function accessible in dot notation\n * @return {function} The function\n */\nfunction f(instance, func) {\n if (!func) return\n\n if (typeof func === 'function') {\n return func\n } else if (!func.match(/\\./)) return instance[func]\n var iteration\n\n var keys = func.split('.')\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i]\n\n iteration = iteration || instance\n iteration = iteration[key]\n }\n\n return iteration\n}\n\n/**\n * extract.e extract a event and the context\n * @param {[type]} str [description]\n * @return {[type]} [description]\n */\nfunction e(instance, ev) {\n if (!ev) return instance\n else if (!ev.match(/\\./)) return instance[ev]\n var iteration\n var obj = {}\n var element\n\n var keys = ev.split('.')\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i]\n\n iteration = iteration || instance\n iteration = iteration[key]\n\n if (i === keys.length - 2) {\n element = iteration\n }\n }\n\n obj.element = element\n obj.name = keys[keys.length - 1]\n return obj\n}\n\nexport default { e, f }","function is (object) {\n return object &&\n typeof object === 'object' &&\n Object.getPrototypeOf(object) === Object.getPrototypeOf({})\n}\n\nexport { is }\n","import create from '../element/create'\nimport insert from '../element/insert'\n\nconst prefix = 'material'\n\n/**\n * [initLabel description]\n * @return {?} [description]\n */\nfunction label (root, text, options) {\n text = text || null\n\n var prefix = options.class || options.prefix\n\n var label = create('label', prefix + '-label')\n label.textContent = text\n label.setAttribute('for', options.name)\n insert(label, root)\n\n return label\n}\n\nexport default label\n","'use strict'\n\nfunction init (element, attribute) {\n for (var key in attribute) {\n if (attribute.hasOwnProperty(key)) {\n element.setAttribute(key, attribute[key])\n }\n }\n\n return element\n}\n\nfunction set (element, name, value) {\n return element.setAttribute(name, '' + value)\n}\n\nfunction get (element, name) {\n return element.getAttribute(name) || null\n}\n\nfunction remove (element, name) {\n return element.removeAttribute(name)\n}\n\nexport default { init, set, get, remove }\n","import attribute from './attribute'\nimport create from './create'\nimport insert from './insert'\n\nfunction isObject (object) {\n return object &&\n typeof object === 'object' &&\n Object.getPrototypeOf(object) === Object.getPrototypeOf({})\n}\n\nfunction process (string) {\n const tags = string.match(/^[\\w-]+/)\n const ids = string.match(/#([\\w-]+)/)\n const classes = string.match(/\\.[\\w-]+/g)\n const names = string.match(/\\$([\\w-]+)/)\n\n const properties = {\n tag: tags ? tags[0] : 'div'\n }\n\n if (ids) properties.id = ids[1]\n if (names) properties.name = names[1]\n\n if (classes) {\n properties.class = classes\n .join(' ')\n .replace(/\\./g, '')\n }\n\n return properties\n}\n\nfunction build (schema, container, object, level) {\n let element\n object = object || {}\n\n for (var i = 0; i < schema.length; i++) {\n if (typeof schema[i] === 'string') {\n var property = process(schema[i])\n element = create(property.tag, property.class)\n insert(element, container)\n\n if (property.name) { object[property.name] = element }\n } else if (isObject(schema[i])) {\n attribute.init(element, schema[i])\n } else if (Array.isArray(schema[i])) {\n build(schema[i], element, object, level)\n }\n }\n\n return object\n}\n\nexport default build\n","import controller from './controller'\n\nfunction init (instance) {\n // assign modules\n modules(instance)\n\n controller.register(instance)\n\n return instance\n}\n\nfunction modules (instance) {\n var modules = instance.options.modules\n\n for (var i = 0; i < modules.length; i++) {\n if (typeof modules[i] === 'function') {\n modules[i](instance)\n } else {\n Object.assign(instance, modules[i])\n }\n }\n}\n\nexport default init\n","import create from '../element/create'\nimport css from '../module/css'\nimport insert from '../element/insert'\n\nconst KEYCODE = {\n ENTER: 13,\n SPACE: 32\n}\n\nvar control = {\n /**\n * [toggle description]\n * @return {Object} The class instance\n */\n toggle () {\n if (this.disabled) return\n\n this.focus()\n\n if (this.checked) {\n this.check(false)\n } else {\n this.check(true)\n }\n\n return this\n },\n\n /**\n * Set checkbox value\n * @param {boolean} value [description]\n */\n check (checked) {\n if (checked) {\n css.add(this.root, 'is-checked')\n this.element.input.checked = true\n this.checked = true\n this.emit('change', this.checked)\n } else {\n css.remove(this.root, 'is-checked')\n this.element.input.checked = false\n this.checked = false\n this.emit('change', this.checked)\n }\n return this\n },\n\n /**\n * [initLabel description]\n * @return {?} [description]\n */\n label (label) {\n if (!label) return\n\n this.element = this.element || {}\n\n if (!this.element.label) {\n this.element.label = create('label', this.options.class + '-label')\n }\n\n this.element.label.textContent = label\n\n insert(this.element.label, this.root)\n },\n\n /**\n * [_initIcon description]\n * @param {string} type\n * @return {string}\n */\n icon (icon) {\n if (!icon) return\n\n var position = 'top'\n if (this.options.type === 'text-icon') {\n position = 'bottom'\n }\n\n this.element = this.element || {}\n\n this.element.icon = create('i', this.options.class + '-icon')\n insert(this.element.icon, this.root, position)\n\n this.element.icon.innerHTML = icon\n },\n\n /**\n * [initLabel description]\n * @return {?} [description]\n */\n error (error) {\n error = error || this.options.error\n if (this.options.error === null) return\n\n let text = this.options.error || this.options.text\n\n if (!this.element.error) { this.element.error = create('error', this.options.class + '-error') }\n\n if (text) {\n this.element.error.textContent = text\n }\n\n insert(this.element.error, this.root, 'bottom')\n },\n\n disable () {\n this.disabled = true\n\n this.element.input.setAttribute('disabled', 'disabled')\n css.add(this.root, 'is-disabled')\n return this\n },\n\n enable () {\n this.disabled = false\n\n this.element.input.removeAttribute('disabled')\n css.remove(this.root, 'is-disabled')\n return this\n },\n\n keydown (e) {\n if (e.altKey) return\n\n switch (e.keyCode) {\n case KEYCODE.ENTER:\n case KEYCODE.SPACE:\n e.preventDefault()\n this.toggle(e)\n break\n default:\n break\n }\n },\n\n /**\n * Setter\n * @param {string} prop\n * @param {string} value\n * @return {Object} The class instance\n */\n get (prop) {\n switch (prop) {\n case 'name':\n this.getName()\n break\n // case 'value':\n // this.setValue(prop)\n // break\n // case 'label':\n // this.setLabel(prop)\n // break\n default:\n this.setValue(prop)\n }\n\n return this\n },\n\n getName () {\n return this.root.dataset.name\n },\n\n /**\n * [_onInputFocus description]\n * @return {?} [description]\n */\n focus () {\n if (this.disabled === true) return this\n\n css.add(this.root, 'is-focused')\n if (this.element.input !== document.activeElement) { this.element.input.focus() }\n return this\n },\n\n /**\n * [_onInputBlur description]\n * @return {?} [description]\n */\n blur () {\n css.remove(this.root, 'is-focused')\n return this\n }\n}\n\nexport default control\n","export default {\n on (event, cb) {\n this.event = this.event || {}\n this.event[event] = this.event[event] || []\n this.event[event].push(cb)\n return this\n },\n off (event, cb) {\n this.event = this.event || {}\n if (event in this.event === false) return\n this.event[event].splice(this.event[event].indexOf(cb), 1)\n return this\n },\n emit (event /* , args... */) {\n this.event = this.event || {}\n if (event in this.event === false) return\n for (var i = 0; i < this.event[event].length; i++) {\n this.event[event][i].apply(this, Array.prototype.slice.call(arguments, 1))\n }\n return this\n }\n}\n","'use strict'\n\nimport extract from './extract'\n\n/**\n * attach function to events\n * @module module/attach\n * @category module\n */\n\n/**\n * [attach description]\n * @param {object} component [description]\n * @param {[type]} events [description]\n * @return {[type]} [description]\n */\nexport default {\n attach: function (events) {\n events = events || this.options.events\n if (!events) return\n\n // console.log('attach', events, this)\n var instance = this\n events.map((def) => {\n // console.log('map', def)\n\n var e = extract.e(instance, def[0])\n var f = extract.f(instance, def[1])\n\n e.element.addEventListener(e.name, f.bind(this))\n })\n\n return this\n }\n}\n","'use strict'\n\nimport create from './component/create'\nimport control from './component/control'\nimport ripple from './component/ripple'\n\nimport insert from './element/insert'\n\nimport emitter from './module/emitter'\nimport attach from './module/attach'\n\nconst defaults = {\n prefix: 'material',\n class: 'button',\n tag: 'button',\n events: [\n ['root.click', 'handleClick']\n ]\n}\n\n/**\n * Class that represents a button\n * @class\n * @since 0.0.1\n * @example\n * var button = new Button({\n * label: 'Button raised',\n * type: 'raised',\n * color: 'primary'\n * }).on('click', function(e) {\n * console.log('button click', e);\n * }).insert(document.body);\n */\nclass Button {\n /**\n * The init method of the Button class\n * @param {Object} options [description]\n * @private\n * @return {Object} The class instance\n */\n constructor (options) {\n this.init(options)\n this.build()\n this.setup()\n this.attach()\n\n this.emit('ready')\n\n return this\n }\n\n /**\n * [init description]\n * @param {?} options [description]\n * @return {?} [description]\n */\n init (options) {\n this.options = Object.assign({}, defaults, options || {})\n Object.assign(this, control, emitter, attach, ripple)\n\n this.element = this.element || {}\n\n // init module\n ripple(this)\n\n this.emit('init')\n }\n\n /**\n * Build button's method\n * @override\n * @return {void}\n */\n build () {\n this.element = {}\n\n this.root = create(this.options)\n\n this.options.label = this.options.label || this.options.text\n\n this.root.setAttribute('aria-label', this.options.label || this.options.name)\n\n this.label(this.options.label)\n this.icon(this.options.icon)\n\n if (this.options.container) {\n insert(this.root, this.options.container)\n }\n\n this.emit('built', this.root)\n\n return this\n }\n\n /**\n * insert method\n * @param {?} container [description]\n * @param {?} context [description]\n * @return {?} [description]\n */\n insert (container, context) {\n insert(this.root, container, context)\n\n return this\n }\n\n /**\n * [setup description]\n * @return {?} [description]\n */\n setup () {\n this.element.input = this.root\n\n if (this.options.name) {\n this.root.dataset.name = this.options.name\n }\n\n // if (this.options.label) {\n // this.root.title = this.options.label\n // }\n\n if (this.options.content) {\n this.root.innerHTML = this.options.content\n }\n }\n\n /**\n * Setter\n * @param {string} prop\n * @param {string} value\n * @return {Object} The class instance\n */\n set (prop, value) {\n switch (prop) {\n case 'disabled':\n this.disable(value)\n break\n case 'value':\n this.setValue(value)\n break\n case 'label':\n this.setLabel(value)\n break\n default:\n this.setValue(prop)\n }\n\n return this\n }\n\n /**\n * [_onElementMouseDown description]\n * @param {event} e\n * @return {void}\n */\n handleClick (e) {\n e.preventDefault()\n\n if (this.disabled === true) return\n if (this.options.upload) return\n\n // this.publish('click');\n this.emit('click', e)\n\n return this\n }\n}\n\nexport default Button\n","'use strict'\n\nimport create from './component/create'\nimport control from './component/control'\nimport ripple from './component/ripple'\n\nimport insert from './element/insert'\n\nimport emitter from './module/emitter'\nimport attach from './module/attach'\n\nconst defaults = {\n prefix: 'material',\n class: 'button',\n tag: 'button',\n events: [\n ['root.click', 'handleClick']\n ]\n}\n\n/**\n * Class that represents a button\n * @class\n * @since 0.0.1\n * @example\n * var button = new Button({\n * label: 'Button raised',\n * type: 'raised',\n * color: 'primary'\n * }).on('click', function(e) {\n * console.log('button click', e);\n * }).insert(document.body);\n */\nclass Button {\n /**\n * The init method of the Button class\n * @param {Object} options [description]\n * @private\n * @return {Object} The class instance\n */\n constructor (options) {\n this.init(options)\n this.build()\n this.setup()\n this.attach()\n\n this.emit('ready')\n\n return this\n }\n\n /**\n * [init description]\n * @param {?} options [description]\n * @return {?} [description]\n */\n init (options) {\n this.options = Object.assign({}, defaults, options || {})\n Object.assign(this, control, emitter, attach, ripple)\n\n this.element = this.element || {}\n\n // init module\n ripple(this)\n\n this.emit('init')\n }\n\n /**\n * Build button's method\n * @override\n * @return {void}\n */\n build () {\n this.element = {}\n\n this.root = create(this.options)\n\n this.options.label = this.options.label || this.options.text\n\n this.root.setAttribute('aria-label', this.options.label || this.options.name)\n\n this.label(this.options.label)\n this.icon(this.options.icon)\n\n if (this.options.container) {\n insert(this.root, this.options.container)\n }\n\n this.emit('built', this.root)\n\n return this\n }\n\n /**\n * insert method\n * @param {?} container [description]\n * @param {?} context [description]\n * @return {?} [description]\n */\n insert (container, context) {\n insert(this.root, container, context)\n\n return this\n }\n\n /**\n * [setup description]\n * @return {?} [description]\n */\n setup () {\n this.element.input = this.root\n\n if (this.options.name) {\n this.root.dataset.name = this.options.name\n }\n\n // if (this.options.label) {\n // this.root.title = this.options.label\n // }\n\n if (this.options.content) {\n this.root.innerHTML = this.options.content\n }\n }\n\n /**\n * Setter\n * @param {string} prop\n * @param {string} value\n * @return {Object} The class instance\n */\n set (prop, value) {\n switch (prop) {\n case 'disabled':\n this.disable(value)\n break\n case 'value':\n this.setValue(value)\n break\n case 'label':\n this.setLabel(value)\n break\n default:\n this.setValue(prop)\n }\n\n return this\n }\n\n /**\n * [_onElementMouseDown description]\n * @param {event} e\n * @return {void}\n */\n handleClick (e) {\n e.preventDefault()\n\n if (this.disabled === true) return\n if (this.options.upload) return\n\n // this.publish('click');\n this.emit('click', e)\n\n return this\n }\n}\n\nexport default Button\n","'use strict'\n\nimport dom from '../module/dom'\n\n/**\n * Inject method insert element to the domtree using Dom methods\n * @param {HTMLElement} container [description]\n * @param {string} context - Injection context\n * @return {Object} This class intance\n */\nexport default {\n\n /**\n * [insert description]\n * @param {?} container [description]\n * @param {?} context [description]\n * @param {?} debug [description]\n * @return {?} [description]\n */\n insert (container, context) {\n var element = this.root\n\n this.insertElement(element, container, context)\n\n return this\n },\n\n /**\n * [insertElement description]\n\n * @param {?} element [description]\n * @param {?} container [description]\n * @param {?} context [description]\n * @param {?} debug [description]\n * @return {?} [description]\n */\n insertElement (element, container, context) {\n if (container && container.root) {\n container = container.root\n }\n\n this.container = container\n\n // if (debug) {\n // console.log('insert', container);\n // }\n\n // this.emit('insert');\n\n context = context || 'bottom'\n\n var contexts = ['top', 'bottom', 'after', 'before']\n var methods = ['prepend', 'append', 'after', 'before']\n\n var index = contexts.indexOf(context)\n if (index === -1) {\n return\n }\n\n var method = methods[index]\n\n // this.emit('insert');\n\n // insert component element to the dom tree using Dom\n // console.log('dom', method, element);\n dom[method](container, element)\n // this.emit('injected');\n //\n return element\n }\n}\n","import { is as isObject } from './module/object'\nimport css from './module/css'\nimport insert from './element/insert'\n\n/**\n *\n */\nclass Layout {\n /**\n * [constructor description]\n * @param {?} schema [description]\n * @param {?} container [description]\n * @return {?} [description]\n */\n constructor (schema, container) {\n this.component = this.create(schema, container)\n\n return this\n }\n\n /**\n * [create description]\n * @param {?} schema [description]\n * @param {?} container [description]\n * @param {?} structure [description]\n * @return {?} [description]\n */\n create (schema, container, structure, level) {\n level = level || 0\n level++\n\n // console.log('level', level, schema)\n // console.log('-------------')\n\n structure = structure || {}\n let component = null\n\n for (var i = 0; i < schema.length; i++) {\n // console.log('index', i, typeof schema[i])\n var name\n var options = {}\n\n if (schema[i] instanceof Object &&\n typeof schema[i] === 'function') {\n if (isObject(schema[i + 2])) {\n options = schema[i + 2]\n }\n\n if (typeof schema[i + 1] === 'string') {\n name = schema[i + 1]\n options.name = name\n }\n\n component = new schema[i](options)\n\n if (name) {\n structure[name] = component\n }\n\n if (component) {\n this.display(component.root, options)\n this.style(component, options)\n }\n\n if (level === 1) {\n var isClass = fn => /^\\sclass/.test(schema[i].toString())\n\n // console.log('isClass', isClass)\n // console.log('root', component.root)\n structure.root = component.root\n }\n\n if (component && container) {\n if (component.insert) component.insert(container)\n else insert(component, container)\n }\n } else if (Array.isArray(schema[i])) {\n // console.log('------', schema[i])\n if (component == null) {\n component = container\n }\n this.create(schema[i], component, structure, level)\n }\n }\n\n return structure\n }\n\n /**\n * [_initFlexDirection description]\n * @param {Element} container Init direction for the given container\n * @param {string} direction (horizontal,vertical)\n */\n display (element, options) {\n var display = options.display\n var direction = options.direction || 'horizontal'\n\n if (!element || !display) return\n\n if (direction === 'horizontal') {\n element.className += ' ' + 'flex-row'\n } else if (direction === 'vertical') {\n element.className += ' ' + 'flex-column'\n }\n }\n\n /**\n * [style description]\n * @param {?} component [description]\n * @return {?} [description]\n */\n style (component) {\n var options = component.options || {}\n\n // console.log('component', component);\n\n if (options.flex) {\n css.add(component.root, 'flex-' + options.flex)\n } else {\n var size = options.size\n if (options.size && options.width) {\n component.root.width = size + 'px'\n } else if (options.size && options.height) {\n component.root.height = size + 'px'\n }\n }\n\n if (options.position) {\n component.root.position = options.position\n }\n\n if (options.bottom) {\n component.root.bottom = options.bottom\n }\n\n if (options.hide) {\n component.root.display = 'none'\n }\n\n if (options.theme) {\n css.add(component.root, 'theme' + '-' + options.theme)\n }\n }\n\n /**\n * [get description]\n * @param {?} name [description]\n * @return {?} [description]\n */\n get (name) {\n if (name) return this.component[name]\n else return this.component\n }\n}\n\nexport default Layout\n","'use strict'\n\n// import modules\nimport create from './component/create'\nimport insert from './component/insert'\n// import components\nimport Layout from './layout'\n\nlet defaults = {\n prefix: 'material',\n class: 'card',\n tag: 'div'\n}\n\nclass Card {\n /**\n * Constructor\n * @param {Object} options - Component options\n * @return {Object} Class instance\n */\n constructor (options) {\n this.init(options)\n this.build()\n }\n\n init (options) {\n this.options = Object.assign({}, defaults, options || {})\n Object.assign(this, insert)\n }\n\n /**\n * build the component using the super method\n * @return {Object} The class instance\n */\n build () {\n this.root = create(this.options)\n\n if (this.options.layout) {\n this.layout = new Layout(this.options.layout, this.root)\n }\n }\n}\n\nexport default Card\n","export default {\n\n /**\n * cross browser addEvent\n * @param {string} event The event to add\n * @param {Function} fn [description]\n */\n addEvent (event, fn) {\n var element = this.root\n // avoid memory overhead of new anonymous functions for every event handler that's installed\n // by using local functions\n function listenHandler (e) {\n var ret = fn.apply(this, arguments)\n if (ret === false) {\n e.stopPropagation()\n e.preventDefault()\n }\n return (ret)\n }\n\n function attachHandler () {\n // set the this pointer same as addEventListener when fn is called\n // and make sure the event is passed to the fn also so that works the same too\n var ret = fn.call(element, window.event)\n if (ret === false) {\n window.event.returnValue = false\n window.event.cancelBubble = true\n }\n return (ret)\n }\n\n if (element.addEventListener) {\n element.addEventListener(event, listenHandler, false)\n } else {\n element.attachEvent('on' + event, attachHandler)\n }\n\n return this\n },\n\n /**\n * cross browser removeEvent\n * @param {string} event The event to remove\n * @param {Function} fn [description]\n * @return {Object} [description]\n */\n removeEvent (event, fn) {\n var element = this.root\n\n if (element.removeEventListener) {\n element.removeEventListener(event, fn, false)\n } else if (element.detachEvent) {\n element.detachEvent('on' + event, element[fn.toString() + event])\n element[fn.toString() + event] = null\n } else {\n element['on' + event] = function () {}\n }\n\n return this\n }\n}\n","'use strict'\n\nimport create from './component/create'\nimport events from './component/events'\nimport insert from './component/insert'\n\nimport emitter from './module/emitter'\n\nconst defaults = {\n prefix: 'material',\n class: 'component',\n tag: 'span'\n}\n\n/**\n * Base class for all ui components\n * @class\n * @param {Object} options - The component options\n * @return {Object} The class Instance\n */\n\n/**\n * Class representing a UI Container. Can add components.\n *\n * @extends Component\n * @return {parent} The class instance\n * @example new Container({\n * container: document.body\n * });\n */\nclass Component {\n /**\n * Constructor\n * @param {Object} options - Component options\n * @return {Object} Class instance\n */\n constructor (options) {\n this.init(options)\n this.build()\n\n return this\n }\n\n /**\n * init method\n * @param {Object} Options\n * @return {Object} Instance\n */\n init (options) {\n this.options = Object.assign({}, defaults, options || {})\n\n Object.assign(this, emitter, events, insert)\n\n return this\n }\n\n /**\n * Build Method\n * @return {Object} This class instance\n */\n build () {\n this.root = create(this.options)\n\n if (this.options.container) {\n this.insert(this.options.container)\n }\n\n return this\n }\n}\n\nexport default Component\n","'use strict'\n\nimport create from './component/create'\nimport insert from './element/insert'\nimport emitter from './module/emitter'\n\nconst defaults = {\n prefix: 'material',\n class: 'container',\n tag: 'div'\n}\n\n/**\n * Class representing a UI Container. Can add components.\n *\n * @extends Component\n * @return {parent} The class instance\n * @example new Container({\n * container: document.body\n * });\n */\nclass Container {\n /**\n * Constructor\n * @param {Object} options - Component options\n * @return {Object} Class instance\n */\n constructor (options) {\n // init and build\n this.init(options)\n this.build()\n\n return this\n }\n\n /**\n * Init class\n * @params {Object} options The instance options\n * @return {Object} This class instance\n */\n init (options) {\n this.options = Object.assign({}, defaults, options || {})\n Object.assign(this, emitter)\n\n return this\n }\n\n /**\n * [build description]\n * @return {Object} This class instance\n */\n build () {\n this.root = create(this.options)\n\n if (this.options.container) {\n insert(this.root, this.options.container)\n }\n\n return this\n }\n\n insert (container, context) {\n insert(this.root, container, context)\n return this\n }\n}\n\nexport default Container\n","'use strict'\n\nimport events from './component/events'\nimport control from './component/control'\nimport label from './component/label'\n\nimport insert from './element/insert'\nimport build from './element/build'\n\nimport emitter from './module/emitter'\nimport attach from './module/attach'\nimport css from './module/css'\n\nimport icon from './skin/material/icon/checkbox.svg'\n// element related modules\n\nlet defaults = {\n prefix: 'material',\n class: 'checkbox',\n type: 'control',\n // modules: [events, control, emitter, attach],\n build: ['$root.material-checkbox', {},\n ['input$input', {}],\n ['span$control.checkbox-control']\n ],\n events: [\n ['element.control.click', 'click', {}],\n ['element.label.click', 'toggle', {}],\n // for accessibility purpose\n // ['element.input.click', 'toggle', {}],\n ['element.input.focus', 'focus'],\n ['element.input.blur', 'blur'],\n ['element.input.keydown', 'keydown', {}]\n ]\n}\n/**\n * Checkbox control class\n * @class\n * @extends Control\n * @since 0.0.1\n * @example\n * var chkbox = checkbox({\n * label: 'Primary raised button',\n * type: 'raised',\n * primary: true\n * }).on('click', function(e) {\n * console.log('button click', e);\n * }).insert(document.body);\n */\nclass Checkbox {\n /**\n * Constructor\n * @param {Object} options - Component options\n * @return {Object} Class instance\n */\n constructor (options) {\n this.init(options)\n this.build()\n this.attach()\n\n return this\n }\n\n /**\n * Constructor\n * @param {Object} options The class options\n * @return {Object} This class instance\n */\n init (options) {\n this.options = Object.assign({}, defaults, options || {})\n Object.assign(this, events, control, emitter, attach)\n\n return this\n }\n\n /**\n * build the component using the super method\n * @return {Object} The class instance\n */\n build () {\n this.element = build(this.options.build)\n this.root = this.element.root\n\n this.element.control.innerHTML = icon\n\n var text = this.options.text || this.options.label\n\n this.element.label = label(this.root, text, this.options)\n\n this.element.input.setAttribute('type', 'checkbox')\n this.element.input.setAttribute('name', this.options.name)\n this.element.input.setAttribute('aria-label', this.options.name)\n\n if (this.options.value) {\n this.element.input.setAttribute('value', this.options.value)\n }\n\n if (this.options.disabled) {\n this.disabled = this.options.disabled\n this.element.input.setAttribute('disabled', 'disabled')\n css.add(this.root, 'is-disabled')\n }\n\n if (this.options.checked) {\n this.check(true)\n }\n\n if (this.options.value) {\n this.set('value', this.value)\n }\n\n // insert if container options is given\n if (this.options.container) {\n insert(this.root, this.options.container)\n }\n\n return this\n }\n\n /**\n * Setter\n * @param {string} prop\n * @param {string} value\n * @return {Object} The class instance\n */\n set (prop, value) {\n switch (prop) {\n case 'checked':\n this.check(value)\n break\n case 'value':\n this.setValue(value)\n break\n case 'label':\n this.setLabel(value)\n break\n default:\n this.check(prop)\n }\n\n return this\n }\n\n /**\n * [insert description]\n * @param {?} container [description]\n * @param {?} context [description]\n * @return {?} [description]\n */\n insert (container, context) {\n insert(this.root, container, context)\n\n return this\n }\n\n /**\n * [click description]\n * @param {event} e [description]\n * @return {?} [description]\n */\n click (e) {\n this.toggle(e)\n this.element.input.focus()\n\n return this\n }\n\n /**\n * Set checkbox value\n * @param {boolean} value [description]\n */\n setValue (value) {\n console.log('setValue', value)\n this.value = value\n this.element.input.setAttribute('value', value)\n\n return this\n }\n}\n\nexport default Checkbox\n","export default `\n<svg width=\"18px\" height=\"18px\" class=\"checkbox-icon\" viewBox=\"0 0 18 18\">\n <polygon class=\"checkbox-check\" points=\"7 14.42 2 9.42 3.41 8.01 7 11.59 14.59 4 16 5.42\"></polygon>\n</svg>`;","'use strict'\n\nlet instance = null\n\n/**\n *\n */\nclass Controller {\n /**\n * Setting up block level variable to store class state\n * , set's to null by default.\n * credits: http://amanvirk.me/singleton-classes-in-es6/\n */\n constructor () {\n if (!instance) {\n instance = this\n }\n\n this.components = this.components || []\n this.component = this.component || {}\n\n this.init()\n\n return instance\n }\n\n init () {\n this.subscribe('settings', (message) => {\n // console.log('settings', message);\n // this.setSettings(message.key, message.value);\n })\n }\n\n // setSettings(key, value) {\n // var text = Cookies.get(key);\n\n // var current = {};\n\n // if (text) {\n // current = JSON.parse(text);\n // }\n\n // console.log('settings value', current, value);\n // //settings = [settings, value].reduce(Object.assign, {});\n // var settings = merge(current, value);\n\n // console.log('settings ' + key, settings);\n\n // Cookies.set(key, JSON.stringify(settings));\n\n // }\n\n // getSettings(key) {\n // var json = Cookies.get(key);\n\n // if (!json) {\n // return null;\n // }\n // var value = JSON.parse(json);\n\n // console.log('settings' + key, value);\n\n // return value;\n\n // }\n\n /**\n * [register description]\n * @param {component} component [description]\n * @return {Object} The class instance\n */\n register (component) {\n this.components.push(component)\n\n this.component[component.name] = this.component[component.name] || []\n\n this.component[component.name].push(component)\n\n return this\n }\n\n /**\n * This method subscribes to a specific topic\n * @param {string} topic\n * @param {Function} callback\n * @return {boolean} true\n */\n subscribe (topic, callback) {\n this._topics = this._topics || {}\n\n // _log.debug('subscribe', topic);\n if (!this._topics.hasOwnProperty(topic)) {\n this._topics[topic] = []\n }\n\n this._topics[topic].push(callback)\n return true\n }\n\n /**\n * This method unsubscribes to a specific topic\n * @param {string} topic\n * @param {Function} callback\n * @return {boolean} true\n */\n unsunscribe (topic, callback) {\n this._topics = this._topics || {}\n // _log.debug('unsubscribe', topic);\n if (!this._topics.hasOwnProperty(topic)) {\n return false\n }\n\n for (var i = 0, len = this._topics[topic].length; i < len; i++) {\n if (this._topics[topic][i] === callback) {\n this._topics[topic].splice(i, 1)\n return true\n }\n }\n\n return false\n }\n\n /**\n * [publish description]\n * @return {?} [description]\n */\n publish () {\n this._topics = this._topics || {}\n\n var args = Array.prototype.slice.call(arguments)\n var topic = args.shift()\n // _log.debug('publish', topic);\n if (!this._topics.hasOwnProperty(topic)) {\n return false\n }\n\n for (var i = 0, len = this._topics[topic].length; i < len; i++) {\n this._topics[topic][i].apply(undefined, args)\n }\n return true\n }\n}\n\nvar controller = new Controller()\n\nexport default controller\n","'use strict'\n\nimport create from './component/create'\nimport insert from './component/insert'\n\nvar defaults = {\n prefix: 'material',\n class: 'divider',\n tag: 'span'\n}\n\n/**\n * this class component represent an divider usually in a list\n *\n * @class\n * @extends {Component}\n * @return {Object} The class instance\n * @example new Item(object);\n */\nclass Divider {\n /**\n * init\n * @return {Object} The class options\n */\n constructor (options) {\n this.init(options)\n this.build()\n\n return this\n }\n\n /**\n * [init description]\n * @param {?} options [description]\n * @return {?} [description]\n */\n init (options) {\n this.options = Object.assign({}, defaults, options || {})\n\n Object.assign(this, insert)\n }\n\n /**\n * Build function for item\n * @return {Object} This class instance\n */\n build () {\n this.root = create(this.options)\n\n if (this.options.text) {\n this.root.textContent = this.options.text\n }\n\n if (this.options.container) {\n this.insert(this.options.container)\n }\n }\n}\n\nexport default Divider\n","'use strict'\n\nimport init from './component/init'\nimport insert from './element/insert'\nimport classify from './component/classify'\nimport css from './module/css'\nimport events from './component/events'\nimport create from './element/create'\nimport emitter from './module/emitter'\n\nconst defaults = {\n prefix: 'material',\n class: 'drawer',\n modifier: 'width',\n state: 'closed',\n position: 'left',\n tag: 'div',\n width: '340',\n modules: [emitter, events]\n}\n\n/**\n * Class representing a UI Container. Can add components.\n *\n * @extends Component\n * @return {parent} The class instance\n * @example new Container({\n * container: document.body\n * });\n */\nclass Drawer {\n /**\n * Constructor\n * @param {Object} options - Component options\n * @return {Object} Class instance\n */\n constructor (options) {\n this.options = Object.assign({}, defaults, options || {})\n\n init(this)\n\n this.build()\n this.attach()\n\n this.emit('ready')\n\n return this\n }\n\n /**\n * Build Method\n * @return {Object} This class instance\n */\n build () {\n this.wrapper = create('div')\n\n classify(this.wrapper, this.options)\n\n this.root = create('aside')\n\n css.add(this.root, 'drawer-panel')\n\n insert(this.root, this.wrapper)\n\n if (this.options.position) {\n css.add(this.root, 'position-' + this.options.position)\n }\n\n if (this.options.fixed) {\n this.wrapper.classList.add('is-fixed')\n }\n\n if (this.options.size) {\n if (this.options.position === 'top' || this.options.position === 'bottom') {\n this.root.style = 'height: ' + this.options.size + 'px;'\n } else {\n this.root.style = 'width: ' + this.options.size + 'px;'\n }\n }\n\n if (this.options.container) { insert(this.wrapper, this.options.container) }\n\n this.emit('built', this.root)\n\n return this\n }\n\n attach () {\n this.wrapper.addEventListener('click', (e) => {\n console.log(' click close')\n this.close()\n })\n }\n /**\n * [toggle description]\n * @return {Object} The class instance\n */\n toggle () {\n // console.log('toggle', this.root);\n if (this.wrapper.classList.contains('show')) {\n this.close()\n } else {\n this.open()\n }\n\n return this\n }\n\n /**\n * [minimize description]\n * @return {Object} The class instance\n */\n close () {\n // console.log('close');\n css.remove(this.wrapper, 'show')\n // css.remove(this.underlay, 'show')\n\n return this\n }\n\n /**\n * [normalize description]\n * @return {Object} The class instance\n */\n open () {\n // console.log('open');\n\n css.add(this.wrapper, 'show')\n\n return this\n }\n\n /**\n * [insert description]\n * @param {?} container [description]\n * @return {?} [description]\n */\n insert (container, context) {\n insert(this.wrapper, container, context)\n\n return this\n }\n}\n\nexport default Drawer\n","'use strict'\n\nimport Layout from './layout'\n\nimport create from './component/create'\nimport insert from './component/insert'\n\n\nvar defaults = {\n prefix: 'material',\n class: 'item',\n type: 'default',\n types: {\n default: 'span',\n display4: 'h1',\n display3: 'h1',\n display2: 'h1',\n display1: 'h1',\n headline: 'h1',\n title: 'h2',\n subheading2: 'h3',\n subheading1: 'h4',\n body: 'p',\n body2: 'aside',\n caption: 'span'\n }\n}\n\n/**\n * The class represents an item ie for list\n *\n * @class\n * @return {Object} The class instance\n * @example new Item(object);\n */\nclass Item {\n /**\n * init\n * @return {Object} The class options\n */\n constructor (options) {\n this.init(options)\n this.build()\n\n return this\n }\n\n /**\n * [init description]\n * @param {?} options [description]\n * @return {?} [description]\n */\n init (options) {\n // merge options\n this.options = Object.assign({}, defaults, options || {})\n\n // define class\n\n // assign modules\n Object.assign(this, insert)\n }\n\n /**\n * Build function for item\n * @return {Object} This class instance\n */\n build () {\n // define main tag\n this.options.tag = this.options.types[this.options.type]\n\n this.root = create(this.options)\n\n if (this.options.text) {\n this.set(this.options.text)\n }\n\n if (this.options.layout) {\n this.layout = new Layout(this.options.layout, this.root)\n } else {\n if (this.options.container) {\n this.insert(this.options.container)\n }\n }\n }\n\n /**\n * Get or set text value of the element\n * @param {string} value The text to set\n * @returns {*}\n */\n set (value) {\n if (value) {\n if (this.root.innerText) {\n this.root.innerText = value\n } else {\n this.root.textContent = value\n }\n\n return this\n }\n\n return this\n }\n}\n\nexport default Item\n","'use strict'\n\nimport { Item, Divider } from '../index'\n\nimport init from './component/init'\nimport emitter from './module/emitter'\nimport insert from './element/insert'\nimport css from './module/css'\nimport attach from './module/attach'\n\nconst defaults = {\n prefix: 'material',\n class: 'list',\n functions: ['render', 'select'],\n target: '.material-item',\n events: [\n ['root.click', 'handleSelect']\n ]\n}\n\n/**\n * List view class\n * @class\n * @param {Object} options Default options for view\n * @extends {View}\n * @since 0.0.4\n * @author Jerome Vial\n *\n * @type {prime}\n */\nclass List {\n /**\n * init\n * @return {Object} The class options\n */\n constructor (options) {\n this.options = Object.assign({}, defaults, options || {})\n\n this.init(this.options)\n this.build(this.options)\n this.attach(this.options.events)\n\n return this\n }\n\n /**\n * [_initView description]\n * @return Class instance\n */\n init () {\n this.filters = []\n this.data = []\n this.items = []\n\n // assign modules\n Object.assign(this, emitter, attach)\n\n // init function\n this._initFunction(this.options.functions)\n\n return this\n }\n\n /**\n * [_initFunction description]\n * @param {?} functions [description]\n * @return {?} [description]\n */\n _initFunction (functions) {\n for (var i = 0; i < functions.length; i++) {\n var name = functions[i]\n if (this.options[name]) {\n this[name] = this.options[name]\n }\n }\n }\n\n /**\n * [_initList description]\n * @param {Object} options this class options\n * @return {Object} The class instance\n */\n build (options) {\n // define main tag\n var tag = this.options.tag || 'div'\n\n this.root = document.createElement(tag)\n css.add(this.root, 'material-' + this.options.class)\n\n if (options.name) {\n css.add(this.root, options.class + '-' + options.name)\n }\n\n if (this.options.list) {\n this.set('list', this.options.list)\n }\n\n if (this.options.container) {\n insert(this.root, this.options.container)\n }\n\n // this.root.addEventListener(\"click\", function(e) {\n // // console.log(\"list\", this, e);\n // // e.target was the clicked element\n // });\n\n return this\n }\n\n /**\n * [onSelect description]\n * @param {?} e [description]\n * @return {?} [description]\n */\n handleSelect (e) {\n // console.log('onSelect', e.target, this.options.target);\n if (e.target && e.target.matches(this.options.target)) {\n // console.log(\"item clicked: \", e.target);\n css.remove(this.item, 'is-selected')\n css.add(e.target, 'is-selected')\n\n this.select(e.target, e, this.item)\n this.item = e.target\n }\n }\n\n /**\n * select\n * @param {Element} item [description]\n * @param {event} event The caller event\n * @return [description]\n */\n select (item, e, selected) {\n this.emit('select', item)\n }\n\n /**\n * [render description]\n * @param {?} info [description]\n * @return {?} [description]\n */\n render (info) {\n var item\n\n if (info.type === 'divider') {\n item = new Divider()\n } else {\n item = new Item({\n name: info.name,\n text: info.text || info.name\n })\n }\n\n return item\n }\n\n /**\n * Setter\n * @param {string} prop\n * @param {string} value\n */\n set (prop, value, options) {\n switch (prop) {\n case 'list':\n this.setList(value, options)\n break\n default:\n this.setList(prop, options)\n }\n\n return this\n }\n\n /**\n * Set list\n * @param {Array} list List of info object\n * @return {Object} The class instance\n */\n setList (list) {\n for (var i = 0; i < list.length; i++) {\n this.addItem(this.render(list[i]), i)\n }\n\n return this\n }\n\n /**\n * [add description]\n * @param {Object} item [description]\n */\n addItem (item /*, index */) {\n if (!item) {\n return\n }\n\n var where = 'bottom'\n insert(item.root, this.root, where)\n\n this.items.push(item)\n\n return item\n }\n\n insert (container, context) {\n insert(this.root, container, context)\n }\n\n empty () {\n this.root.innerHTML = ''\n this.items = []\n this.item = null\n }\n\n /**\n * Reverse the list order\n * @return {Object} The class instance\n */\n reverse () {\n this.list.reverse()\n this.update(this.list)\n\n return this\n }\n}\n\nexport default List\n","'use strict'\n\n// import Component from './component';\nimport create from './element/create'\nimport classify from './component/classify'\nimport css from './module/css'\nimport insert from './element/insert'\n\nvar defaults = {\n prefix: 'material',\n class: 'progress',\n tag: 'div',\n progress: '0%',\n circular: `<svg class=\"progress\" width=\"65px\" height=\"65px\" viewBox=\"0 0 66 66\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle class=\"path\" fill=\"none\" stroke-width=\"6\" stroke-linecap=\"round\" cx=\"33\" cy=\"33\" r=\"30\"></circle>\n </svg>`\n}\n\n/**\n * The class represents an item ie for list\n *\n * @class\n * @return {Object} The class instance\n * @example new Item(object);\n */\nclass Spinner {\n /**\n * init\n * @return {Object} The class options\n */\n constructor (options) {\n this.init(options)\n this.build()\n\n return this\n }\n\n /**\n * [init description]\n * @param {?} options [description]\n * @return {?} [description]\n */\n init (options) {\n // merge options\n this.options = Object.assign({}, defaults, options || {})\n\n // define class\n\n // assign modules\n Object.assign(this, insert)\n }\n\n /**\n * Build function for item\n * @return {Object} This class instance\n */\n build (options) {\n this.root = create(this.options.tag)\n classify(this.root, this.options)\n\n if (this.options.type === 'circular') {\n this.root.innerHTML = this.options.circular\n } if (this.options.type === 'indeterminate') {\n this.bar = create('div', 'bar')\n insert(this.bar, this.root)\n } else {\n this.bar = create('div', 'bar')\n insert(this.bar, this.root)\n\n this.set(this.options.progress)\n }\n\n if (this.options.container) {\n insert(this.root, this.options.container)\n }\n\n return this\n }\n\n set (progress) {\n this.bar.setAttribute('style', 'width: ' + progress)\n }\n};\n\nexport default Spinner\n","'use strict'\n\nimport init from './component/init'\nimport build from './element/build'\nimport control from './component/control'\n\nimport events from './component/events'\nimport insert from './element/insert'\nimport offset from './element/offset'\nimport classify from './component/classify'\n// import control from './control';\nimport attach from './module/attach'\nimport css from './module/css'\nimport emitter from './module/emitter'\n\nimport icon from './skin/material/icon/pin.svg'\n\nlet defaults = {\n prefix: 'material',\n class: 'slider',\n type: 'control',\n label: null,\n checked: false,\n error: false,\n value: false,\n range: [0, 100],\n step: 5,\n modules: [events, control, emitter, attach],\n mixins: [],\n build: ['$root.material-slider', {},\n ['label$label.slider-label', {}],\n ['input$input'],\n ['$control.slider-control', {},\n ['$track.slider-track', {},\n ['canvas$canvas.slider-canvas', {}],\n ['$trackvalue.slider-track-value', {}],\n ['$knob.slider-knob', {}],\n ['$marker.slider-marker', {},\n ['$value.slider-value', {}]\n ]\n ]\n ]\n ],\n events: [\n ['element.input.focus', 'focus'],\n ['element.input.blur', 'blur']\n ]\n}\n\n/**\n * Switch class\n * @class\n * @extends Control\n */\nclass Slider {\n /**\n * init\n * @return {Object} The class options\n */\n constructor (options) {\n this.options = Object.assign({}, defaults, options || {})\n\n this.init(this.options)\n this.build(this.options)\n this.attach()\n\n return this\n }\n\n /**\n * Constructor\n * @param {Object} options The class options\n * @return {Object} This class instance\n */\n init (options) {\n init(this)\n\n return this\n }\n\n /**\n * build method\n * @return {Object} The class instance\n */\n build () {\n this.element = build(this.options.build)\n this.root = this.element.root\n\n classify(this.root, this.options)\n\n if (this.options.container) {\n insert(this.root, this.options.container)\n }\n\n var value = this.element.marker.innerHTML\n this.element.marker.innerHTML = icon + value\n\n if (this.options.type) {\n css.add(this.root, 'type-' + this.options.type)\n }\n\n // init input\n if (this.options.disabled) {\n this.disable(true)\n }\n\n // if (this.options.name) {\n // this.root.dataset.name = name\n // this.element.input.name = name\n // }\n\n // init text\n let text = this.options.label || this.options.text\n this.element.label.textContent = text\n\n this.options.label = this.options.label || this.options.text\n\n this.initTrack()\n\n var delay = 50\n\n setTimeout(() => {\n this.initCanvas()\n }, delay)\n }\n\n initCanvas () {\n window.addEventListener('resize', () => {\n console.log('resize')\n this.drawCanvas()\n }, false)\n this.drawCanvas()\n }\n\n drawCanvas () {\n var width = offset(this.element.track, 'width')\n var height = offset(this.element.track, 'height')\n\n this.element.canvas.width = width\n this.element.canvas.height = height\n\n var context = this.element.canvas.getContext('2d')\n context.lineWidth = 2\n context.beginPath()\n\n context.moveTo(0, (height / 2) + 1)\n context.lineTo(width, (height / 2) + 1)\n context.strokeStyle = 'rgba(34, 31, 31, .26)'\n context.stroke()\n }\n\n /**\n * [buildControl description]\n * @return {?} [description]\n */\n initTrack () {\n this.element.track.addEventListener('mousedown', (ev) => {\n if (this.disabled === true) return\n this.initTrackSize()\n var position = ev.layerX\n this.update(position)\n })\n\n this.element.knob.addEventListener('click', (ev) => {\n ev.stopPropagation()\n })\n\n this.initDragging()\n\n var delay = 100\n\n setTimeout(() => {\n this.setValue(this.options.value)\n }, delay)\n }\n\n initTrackSize () {\n this._tracksize = offset(this.element.track, 'width')\n this._knobsize = offset(this.element.knob, 'width')\n this._markersize = 32 /* offset(this.element.marker, 'width') */\n this._trackleft = offset(this.element.track, 'left')\n return this\n }\n\n /**\n * [initDragging description]\n * @return {?} [description]\n */\n initDragging () {\n this.element.knob.onmousedown = (e) => {\n if (this.disabled === true) return\n\n e.stopPropagation()\n e = e || window.event\n\n css.add(this.element.control, 'dragging')\n\n var start = 0\n var position = 0\n\n if (e.pageX) start = e.pageX\n else if (e.clientX) start = e.clientX\n\n start = this._trackleft\n document.body.onmousemove = (e) => {\n if (this.disabled === true) return\n console.log('mousedown', this.disabled)\n\n e = e || window.event\n var end = 0\n if (e.pageX) end = e.pageX\n else if (e.clientX) end = e.clientX\n\n position = end - start\n this.update(position)\n }\n document.body.onmouseup = (e) => {\n document.body.onmousemove = document.body.onmouseup = null\n\n e = e || window.event\n var end = 0\n if (e.pageX) end = e.pageX\n else if (e.clientX) end = e.clientX\n\n position = end - start\n this.update(position)\n css.remove(this.element.control, 'dragging')\n }\n }\n }\n\n update (position) {\n var size = this._tracksize\n var range = this.options.range[1] - this.options.range[0]\n\n if (position > size) {\n position = size\n }\n\n if (position < 0) {\n position = 0\n }\n\n var ratio = (size / position)\n var value = Math.round((range / ratio)) + this.options.range[0]\n\n if (position === 0) {\n css.remove(this.element.knob, 'notnull')\n }\n\n this.element.knob.style.left = position - this._knobsize / 2 + 'px'\n this.element.trackvalue.style.width = (position) + 'px'\n this.element.marker.style.left = position - this._markersize / 2 + 'px'\n\n this.element.value.textContent = value\n\n this.element.input.value = value\n if (value > this.options.range[0]) {\n css.add(this.element.knob, 'notnull')\n } else {\n css.remove(this.element.knob, 'notnull')\n }\n }\n\n updateValue (value) {\n this.initTrackSize()\n\n var size = offset(this.element.track, 'width')\n size = parseInt(size)\n\n var range = this.options.range[1] - this.options.range[0]\n var ratio = value * 100 / range\n var position = Math.round(size * ratio / 100)\n\n this.update(position)\n\n return this\n }\n\n /**\n * [insert description]\n * @param {?} container [description]\n * @param {?} context [description]\n * @return {?} [description]\n */\n insert (container, context) {\n insert(this.root, container, context)\n }\n\n /**\n * Setter\n * @param {string} prop\n * @param {string} value\n */\n set (prop, value) {\n switch (prop) {\n case 'value':\n this.setValue(value)\n break\n case 'label':\n this.setLabel(value)\n break\n default:\n this.setValue(prop)\n }\n\n return this\n }\n\n /**\n * Getter\n * @param {string} prop\n * @param {string} value\n */\n get (prop) {\n var value\n\n switch (prop) {\n case 'value':\n value = this.getValue()\n break\n case 'name':\n value = this.name\n break\n default:\n return this.getValue()\n }\n\n return value\n }\n\n /**\n * [getValue description]\n * @return {Object} The class instance\n */\n getValue () {\n return this.element.input.value\n }\n\n /**\n * [setValue description]\n * @param {string} value [description]\n */\n setValue (value) {\n value = value || this.options.range[0]\n this.element.input.value = value\n this.updateValue(value)\n }\n\n /**\n * [setLabel description]\n * @param {?} text [description]\n */\n setLabel (text) {\n text = text || this.options.label || this.options.text\n\n if (text !== null && this.label) {\n this.label.textContent = text\n }\n }\n}\n\nexport default Slider\n","export default `\n<svg width=\"24px\" class=\"slider-pin\" height=\"32px\" viewBox=\"0 0 24 32\">\n <path d=\"M12.4799395,31.9994146 C12.4799395,31.9994146 24,18.0312233 24,11.6159251 C24,5.2006268 18.627417,0 12,0 C5.372583,0 0,5.2006268 0,11.6159251 C0,18.0312233 12.4799395,31.9994146 12.4799395,31.9994146 Z\"></path>\n</svg>`;","'use strict'\n\n// import control from '../control';\nimport control from './component/control'\nimport build from './element/build'\nimport emitter from './module/emitter'\nimport insert from './component/insert'\nimport attach from './module/attach'\nimport classify from './component/classify'\n\nlet defaults = {\n prefix: 'material',\n class: 'switch',\n type: 'control',\n label: null,\n checked: false,\n error: false,\n value: false,\n disabled: false,\n build: ['$root.material-switch', {},\n ['input$input$switch-input', { type: 'checkbox' }],\n ['span$control.switch-control', {},\n ['span$track.switch-track', {},\n ['span$knob.switch-knob', {}]\n ]\n ],\n ['label$label.switch-label']\n ],\n events: [\n ['element.control.click', 'toggle'],\n ['element.label.click', 'toggle'],\n // for accessibility purpose\n ['element.input.click', 'toggle'],\n ['element.input.focus', 'focus'],\n ['element.input.blur', 'blur']\n // ['element.input.keydown', 'keydown']\n ]\n}\n\n/**\n * Switch class\n * @class\n * @extends Control\n */\nclass Switch {\n /**\n * Constructor\n * @param {Object} options\n - Component options\n * @return {Object} Class instance\n */\n constructor (options) {\n this.init(options)\n this.build()\n this.attach()\n\n return this\n }\n\n /**\n * Constructor\n * @param {Object} options The class options\n * @return {Object} This class instance\n */\n init (options) {\n this.options = Object.assign({}, defaults, options || {})\n Object.assign(this, emitter, control, attach, insert)\n\n this.value = this.options.value\n\n return this\n }\n\n /**\n * build method\n * @return {Object} The class instance\n */\n build () {\n this.element = build(this.options.build)\n this.root = this.element.root\n\n classify(this.root, this.options)\n\n if (this.options.disabled) {\n this.disable()\n }\n\n if (this.value) {\n this.element.input.setAttribute('checked', 'checked')\n }\n\n this.element.input.setAttribute('aria-label', this.options.name)\n\n let text = this.options.label || this.options.text || ''\n\n this.element.label.textContent = text\n this.element.label.setAttribute('for', this.options.name)\n if (this.options.checked) {\n this.check(true)\n }\n\n if (this.options.container) {\n this.insert(this.options.container)\n }\n }\n\n /**\n * Setter\n * @param {string} prop\n * @param {string} value\n * @return {Object} The class instance\n */\n set (prop, value) {\n switch (prop) {\n case 'value':\n this.setValue(value)\n break\n case 'disabled':\n if (value === true) {\n this.disable()\n } else if (value === false) {\n this.enable()\n }\n break\n default:\n this.setValue(prop)\n }\n\n return this\n }\n\n get () {\n return this.value\n }\n\n /**\n * set switch value\n * @param {boolean} value [description]\n */\n getValue () {\n return this.value\n }\n\n /**\n * set switch value\n * @param {boolean} value [description]\n */\n setValue (value) {\n if (value) {\n this.check()\n } else {\n this.unCheck()\n }\n }\n}\n\nexport default Switch\n","'use strict'\n\nimport create from './component/create'\nimport insert from './component/insert'\nimport emitter from './module/emitter'\n\nimport offset from './element/offset'\n\nimport List from './list'\nimport Button from './button'\n\nconst defaults = {\n prefix: 'material',\n class: 'tabs',\n tag: 'div',\n indicator: {\n prefix: 'material',\n class: 'indicator',\n tag: 'div'\n }\n}\n\nclass Tabs {\n /**\n * Constructor\n * @param {Object} options - Component options\n * @return {Object} Class instance\n */\n constructor (options) {\n this.init(options)\n this.build()\n\n return this\n }\n\n init (options) {\n this.options = Object.assign({}, defaults, options || {})\n Object.assign(this, insert, emitter)\n }\n\n /**\n * Build Method\n * @return {Object} This class instance\n */\n build () {\n this.root = create(this.options)\n\n if (this.options.list) {\n this.list = new List({\n // root: this.root,\n list: this.options.list,\n target: '.material-button',\n height: 600,\n label: 'Flat',\n\n render: (info) => {\n var item\n\n item = new Button({\n name: info.name,\n text: info.text || info.name\n })\n\n return item\n },\n select: (item) => {\n console.log('click')\n this.selected = item\n this.click(item)\n }\n }).insert(this.root)\n }\n\n this.indicator = create(this.options.indicator)\n this.insertElement(this.indicator, this.root)\n\n if (this.options.container) {\n this.insert(this.options.container)\n }\n\n return this\n }\n\n click (item) {\n var or = offset(this.root)\n var o = offset(item)\n this.indicator.setAttribute('style', 'width: ' + o.width + 'px; left: ' + (o.left - or.left) + 'px;')\n this.emit('select', item.dataset.name)\n }\n}\n\nexport default Tabs\n","'use strict'\n\nimport create from './component/create'\nimport insert from './component/insert'\n\nvar defaults = {\n prefix: 'material',\n class: 'text',\n type: 'default',\n types: {\n default: 'span',\n display4: 'h1',\n display3: 'h1',\n display2: 'h1',\n display1: 'h1',\n headline: 'h1',\n title: 'h2',\n subheading2: 'h3',\n subheading1: 'h4',\n body: 'p',\n body2: 'aside',\n caption: 'span'\n }\n}\n\n/**\n * this class creates a text component\n *\n * @since 0.0.6\n * @category Element\n * @param {HTMLElement} element Related element\n * @param {String} className the className to add\n * grouped values.\n * @returns {HTMLElement} The modified element\n * @example\n *\n * var text = new Text({\n * text: 'hello',\n * type: 'title'\n * }).insert(document.body);\n *\n * // => Hello\n */\nclass Text {\n /**\n * init\n * @return {Object} The class options\n */\n constructor (options) {\n this.init(options)\n this.build()\n\n return this\n }\n\n init (options) {\n this.options = Object.assign({}, defaults, options || {})\n\n Object.assign(this, insert)\n }\n\n /**\n * Build function for item\n * @return {Object} This class instance\n */\n build () {\n this.options.tag = this.options.types[this.options.type]\n\n this.root = create(this.options)\n\n if (this.options.text) {\n this.set(this.options.text)\n }\n\n if (this.options.container) {\n this.insert(this.options.container)\n }\n return this\n }\n\n /**\n * Get or set text value of the element\n * @param {string} value The text to set\n * @returns {*}\n */\n set (value) {\n if (value) {\n if (this.root.innerText) {\n this.root.innerText = value\n } else {\n this.root.textContent = value\n }\n\n return this\n }\n\n return this\n }\n}\n\nexport default Text\n","'use strict'\n\nimport create from './component/create'\nimport insert from './component/insert'\nimport offset from './element/offset'\n\nconst defaults = {\n prefix: 'material',\n class: 'toolbar',\n tag: 'header'\n}\n\nclass Toolbar {\n /**\n * Constructor\n * @param {Object} options - Component options\n * @return {Object} Class instance\n */\n constructor (options) {\n this.init(options)\n this.build()\n this.attach()\n return this\n }\n\n init (options) {\n this.options = Object.assign({}, defaults, options || {})\n Object.assign(this, insert)\n\n console.log('waterfALL', this.options.waterfall)\n\n this.waterfall = this.options.waterfall\n }\n\n /**\n * Build Method\n * @return {Object} This class instance\n */\n build () {\n this.root = create(this.options)\n\n console.log(this.options.height, this.options.fixed)\n\n if (this.options.height) {\n this.root.style.height = this.options.height + 'px'\n }\n\n if (this.options.fixed) {\n console.log('is-fixed')\n this.root.classList.add('is-fixed')\n }\n\n if (this.options.flexible) {\n this.root.classList.add('is-flexible')\n }\n\n // if (this.options.container) {\n // this.insert(this.options.container)\n // }\n\n return this\n }\n\n attach () {\n this.root.addEventListener('DOMNodeInserted', (e) => {\n var textNode = e.target\n if (textNode !== this.root) return\n\n var size = this.size = offset(this.root, 'height')\n\n var view = this.view = this.root.parentNode\n\n console.log('view', view)\n\n var padding = window.getComputedStyle(view)['padding-top']\n // console.log('paddingTop', padding)\n // if (!padding) padding = window.getComputedStyle(this.root.parentNode, 'padding')\n // console.log('padding', padding)\n\n padding = parseInt(padding, 10)\n // size = parseInt(size, 10)\n\n this.padding = padding\n\n // console.log(' toolbar inserted in', size, 'padding', padding)\n var ptop = this.ptop = size + padding\n\n // console.log('ptop', ptop)\n\n if (document.body == view) {\n console.log('toolbar container body')\n this.root.classList.add('toolbar-body')\n }\n\n view.setAttribute('style', 'padding-top: ' + ptop + 'px')\n\n this.scroll(view)\n })\n }\n\n /**\n * Setter\n * @param {string} prop\n * @param {string} value\n * @return {Object} The class instance\n */\n set (prop, value) {\n switch (prop) {\n case 'minimize':\n this.root.setAttribute('style', 'height: 64px')\n break\n case 'value':\n this.setValue(value)\n break\n case 'label':\n this.setLabel(value)\n break\n default:\n this.check(prop)\n }\n\n return this\n }\n\n scroll (view) {\n // console.log('initScroll')\n\n var isBody = false\n\n var element = view\n\n this.scrolling = view\n\n if (view === document.body) {\n isBody = true\n element = document\n this.scrolling = document.body\n }\n\n view.classList.add()\n\n element.addEventListener('scroll', (e) => {\n var scrollTop\n if (isBody) {\n scrollTop = (document.documentElement ||\n document.body.parentNode ||\n document.body).scrollTop\n } else {\n scrollTop = view.scrollTop\n }\n\n if (scrollTop > 0) {\n this.root.classList.add('is-scrolled')\n } else {\n this.root.classList.remove('is-scrolled')\n }\n\n // console.log('scroll', scrollTop)\n\n this.update(e, scrollTop)\n })\n }\n\n update (e, scrollTop) {\n if (this.options.fixed) { this.fixed(e, scrollTop) }\n if (this.options.flexible) { this.flexible(e, scrollTop) }\n }\n\n flexible (e, scrollTop) {\n var size = offset(this.root, 'height')\n // console.log('flexible', size, this.root.offsetHeight, scrollTop)\n // if (scrollTop < this.size) {\n //\n var height = '64'\n if (size < height) {\n this.root.style.height = height + 'px'\n } else {\n height = this.size - scrollTop\n if (height < 64) height = 64\n this.root.style.height = height + 'px'\n }\n\n // console.log('scroll', this.root.style.top, scrollTop)\n\n // if (scrollTop > 50) {\n // this.root.style.trans = scrollTop + 'px'\n // } else {\n // this.root.style.top = scrollTop + 'px'\n // }\n // }\n // this.root.style.top = scrollTop + 'px'\n // this.root.style.height = this.size - scrollTop\n // } else {\n // console.log('size scroll', this.size, scrollTop)\n\n // this.root.style.height = this.size - scrollTop + 'px'\n // // this.root.style.top = scrollTop + 'px'\n // }\n }\n\n fixed (e, scrollTop) {\n if (scrollTop > 0) {\n this.root.style.transform = 'translateY(' + scrollTop + 'px)'\n } else {\n this.root.style.transform = 'translateY(' + scrollTop + 'px)'\n }\n }\n\n waterfall$ (e) {}\n}\n\nexport default Toolbar\n","export default `\n<svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\" />\n</svg>`;","console.log('demo')\n\nimport {\n Button,\n Component,\n Container,\n Card,\n Checkbox,\n Dialog,\n Divider,\n Drawer,\n Form,\n Image,\n List,\n Item,\n Progress,\n Menu,\n Tabs,\n Slider,\n Switch,\n Text,\n Textfield,\n Toolbar,\n Layout\n} from 'material'\n\nimport css from '../src/module/css'\n\n// import Material from 'material';\n// console.log('Material', Material);\n\nimport iconMenu from './icon/navi.svg'\nimport iconMore from './icon/more.svg'\nimport iconApps from './icon/apps.svg'\nimport iconStar from './icon/star.svg'\nimport iconHappy from './icon/happy.svg'\n\nconsole.log('log')\nvar list = [{\n text: 'One',\n name: 'one'\n}, {\n text: 'Two',\n name: 'two'\n}, {\n text: 'Three',\n name: 'three'\n}, {\n text: 'Four',\n name: 'four'\n}]\n\ndocument.addEventListener('DOMContentLoaded', function () {\n var layout = new Layout([Component, 'demo', { display: 'flex', direction: 'vertical' },\n [Component, 'head', { display: 'flex', direction: 'horizontal' },\n [Toolbar, 'toolbar', { flex: 1, display: 'flex', direction: 'horizontal' },\n [Button, 'menu-navi', { icon: iconMenu, type: 'action' }],\n [Text, 'app-title', { text: 'Material' }]\n ],\n [Toolbar, 'desk', { display: 'flex', direction: 'horizontal' },\n [Button, 'menu-more', { icon: iconMore, type: 'action' }]\n ]\n ],\n [Drawer, 'navi', { css: 'drawer-temporary', type: 'temporary', size: '280px' },\n [Component, 'navi-head', { theme: 'dark' },\n [Text, 'app-title', { text: 'Components' }]\n ],\n [List, 'navi-list', { theme: 'dark' }]\n ],\n [Tabs, 'tabs', { color: 'primary', list: list, flex: 'none' }],\n [Container, 'body', { flex: '1' },\n [Container, 'container-components', { },\n [Text, 'text', { text: 'Components', type: 'title' }]\n ],\n // Buttons\n [Card, 'buttons', { },\n [Toolbar, 'toolbar-buttons', {},\n [Text, 'buttons-title', { text: 'Buttons'}]\n ],\n [Container, 'button-body', {},\n [Button, 'first', { text: 'Flat' }],\n [Button, 'second', { text: 'Raised', type: 'raised', color: 'primary' }],\n [Button, 'third', { icon: iconStar, type: 'action' }],\n [Button, 'fourth', { icon: iconStar, text: 'text' }]\n ]\n ],\n\n // Buttons\n [Card, 'buttons', { },\n [Toolbar, 'toolbar-buttons', {},\n [Text, 'buttons-title', { text: 'Floating Buttons'}]\n ],\n [Container, 'button-body', {},\n [Button, 'fifth', { icon: iconStar, type: 'floating', color: 'primary' }],\n [Button, 'six', { icon: iconHappy, type: 'floating', style: 'mini', color: 'primary' }],\n [Button, 'fifth', { icon: iconStar, type: 'floating', color: 'secondary' }],\n [Button, 'six', { icon: iconHappy, type: 'floating', style: 'mini', color: 'secondary' }]\n ]\n ],\n [Card, 'checkboxes', { },\n [Toolbar, 'toolbar', {},\n [Text, 'checkbox-title', { text: 'Checkboxes'}]\n ],\n [Container, 'checkbox-body', {},\n [Checkbox, 'checkbox', { text: 'Checkbox' }],\n [Checkbox, 'checkbox-checked', { text: 'Checked', checked: true }],\n [Checkbox, 'checkbox-disabled', { text: 'Disabled', disabled: true }]\n ]\n ],\n [Card, 'switches', { },\n [Toolbar, 'switch-toolbar', {},\n [Text, 'switch-title', { text: 'Switches'}]\n ],\n [Container, 'switch-body', {},\n [Switch, 'switch', { text: 'Switch' }],\n [Switch, 'switch-checked', { text: 'Checked', checked: true }],\n [Switch, 'switch-disabled', { text: 'Disabled', disabled: true }]\n ]\n ],\n [Card, 'progress indicators', { },\n [Toolbar, 'progress-toolbar', {},\n [Text, 'progress-title', { text: 'Progress indicators'}]\n ],\n [Container, 'progress-body', {},\n [Progress, 'progress', { progress: '60%' }],\n [Progress, 'progress-indeterminate', { type: 'indeterminate' }]\n ]\n ],\n [Card, 'sliders', { },\n [Toolbar, 'slider-toolbar', {},\n [Text, 'slider-title', { text: 'Sliders'}]\n ],\n [Container, 'slider-body', {},\n [Slider, 'slider', { text: 'Slider' }],\n [Slider, 'slider-checked', { text: 'Checked', checked: true }],\n [Slider, 'slider-disabled', { text: 'Disabled', disabled: true }]\n ]\n ]\n ]\n ], document.body)\n\n var moreButton = layout.get('menu-more').on('click', (e) => {\n layout.get('more-menu').show(e)\n })\n\n layout.get('body').root.addEventListener('scroll', (e) => {\n if (layout.get('body').root.scrollTop > 0) {\n css.add(layout.get('tabs').root, 'head-shadow')\n } else {\n css.remove(layout.get('tabs').root, 'head-shadow')\n }\n })\n\n var naviMenu = layout.get('menu-navi')\n\n naviMenu.on('click', (e) => {\n layout.get('navi').open()\n })\n})\n","export default `\n<svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n</svg>`"],"names":["has","element","className","match","RegExp","add","classNames","split","i","length","cn","classList","remove","toggle","classify","options","css","prefix","class","name","type","color","elevation","dataset","label","title","style","styles","theme","create","document","createElement","tag","append","container","appendChild","prepend","insertBefore","firstChild","after","parentNode","nextSibling","before","replace","replaceChild","removeChild","dispose","el","empty","destroy","insert","context","root","methods","index","indexOf","dom","_isArray","object","Object","prototype","toString","call","_isLiteralObject","getPrototypeOf","_isIterable","undefined","_each","callback","l","apply","key","get","list","this","computedStyle","window","getComputedStyle","currentStyle","set","e","offset","prop","rect","getBoundingClientRect","top","Math","round","right","bottom","left","width","offsetWidth","height","offsetHeight","parseFloat","init","instance","on","addEventListener","show","target","offs","ripple","end","coordinate","initial","offsetX","offsetY","transition","defaults","setTimeout","size","body","onmouseup","opacity","o","f","func","iteration","keys","ev","obj","is","text","textContent","setAttribute","attribute","hasOwnProperty","value","getAttribute","removeAttribute","isObject","process","string","tags","ids","classes","names","properties","id","join","build","schema","level","property","Array","isArray","modules","controller","register","assign","KEYCODE","ENTER","SPACE","control","[object Object]","disabled","focus","checked","check","input","emit","icon","position","innerHTML","error","altKey","keyCode","preventDefault","getName","setValue","activeElement","event","cb","push","splice","slice","arguments","attach","events","map","def","extract","bind","Button","setup","emitter","content","disable","setLabel","upload","insertElement","Layout","component","structure","display","direction","flex","hide","Card","layout","fn","listenHandler","ret","stopPropagation","attachHandler","returnValue","cancelBubble","attachEvent","removeEventListener","detachEvent","Component","Container","Checkbox","console","log","Controller","components","subscribe","message","topic","_topics","len","args","shift","Divider","modifier","state","Drawer","wrapper","fixed","close","contains","open","types","default","display4","display3","display2","display1","headline","subheading2","subheading1","body2","caption","Item","innerText","functions","List","filters","data","items","_initFunction","matches","item","select","selected","info","setList","addItem","render","reverse","update","progress","circular","Spinner","bar","range","step","mixins","Slider","marker","initTrack","initCanvas","drawCanvas","track","canvas","getContext","lineWidth","beginPath","moveTo","lineTo","strokeStyle","stroke","initTrackSize","layerX","knob","initDragging","_tracksize","_knobsize","_markersize","_trackleft","onmousedown","start","pageX","clientX","onmousemove","ratio","trackvalue","parseInt","getValue","updateValue","Switch","enable","unCheck","indicator","Tabs","click","or","Text","Toolbar","waterfall","flexible","textNode","view","padding","ptop","scroll","isBody","scrolling","scrollTop","documentElement","transform","iconStar","iconHappy","Progress"],"mappings":"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"}
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../node_modules/material/src/module/css.js", "../../../node_modules/material/src/component/classify.js", "../../../node_modules/material/src/component/create.js", "../../../node_modules/material/src/element/create.js", "../../../node_modules/material/src/module/dom.js", "../../../node_modules/material/src/element/insert.js", "../../../node_modules/material/src/component/control.js", "../../../node_modules/material/src/module/utils.js", "../../../node_modules/material/src/element/style.js", "../../../node_modules/material/src/element/offset.js", "../../../node_modules/material/src/component/ripple.js", "../../../node_modules/material/src/module/emitter.js", "../../../node_modules/material/src/module/extract.js", "../../../node_modules/material/src/module/attach.js", "../../../node_modules/material/src/Button.js", "../../../node_modules/material/src/component/insert.js", "../../../node_modules/material/src/module/object.js", "../../../node_modules/material/src/layout.js", "../../../node_modules/material/src/card.js", "../../../node_modules/material/src/component/events.js", "../../../node_modules/material/src/component.js", "../../../node_modules/material/src/container.js", "../../../node_modules/material/src/component/label.js", "../../../node_modules/material/src/element/attribute.js", "../../../node_modules/material/src/element/build.js", "../../../node_modules/material/src/checkbox.js", "../../../node_modules/material/src/component/controller.js", "../../../node_modules/material/src/divider.js", "../../../node_modules/material/src/component/init.js", "../../../node_modules/material/src/drawer.js", "../../../node_modules/material/src/item.js", "../../../node_modules/material/src/list.js", "../../../node_modules/material/src/progress.js", "../../../node_modules/material/src/slider.js", "../../../node_modules/material/src/switch.js", "../../../node_modules/material/src/tabs.js", "../../../node_modules/material/src/text.js", "../../../node_modules/material/src/toolbar.js", "../src/module/css.js", "demo.js"],
|
|
4
|
+
"sourcesContent": ["/**\n * This function checks if the element className passed in parameters\n *\n * @since 0.0.6\n * @module css/has\n * @category Element\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} iteratee The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @see unzip, unzipWith, zip, zipObject, zipObjectDeep, zipWith\n * @example\n *\n * has(element, 'show');\n * // => [111, 222]\n */\nfunction has(element, className) {\n if (!element || !className) {\n return false\n }\n\n return !!element.className.match(new RegExp('(\\\\s|^)' + className + '(\\\\s|$)'))\n}\n\n/**\n * This function adds className to the element's attribute class\n *\n * @since 0.0.6\n * @module css/add\n * @category css\n * @param {HTMLElement} element Related element\n * @param {String} className the className to add\n * grouped values.\n * @returns {HTMLElement} The augmented element\n * @example\n *\n * add(element, 'hidden');\n * // => <div class=\"element hidden\">...</div>\n */\nfunction add(element, className) {\n if (!element || !className) {\n return\n }\n\n let classNames = className.split(' ')\n\n for (var i = 0; i < classNames.length; i++) {\n var cn = classNames[i]\n if (!has(element, cn)) {\n element.classList.add(cn)\n }\n }\n return element\n}\n\n/**\n * This function removes className to the element's attribute class\n *\n * @since 0.0.6\n * @module css/remove\n * @category css\n * @param {HTMLElement} element Related element\n * @param {String} className the className to add\n * @returns {HTMLElement} The element with the removed className\n * @example\n *\n * remove(element, 'hidden');\n * // => <div class=\"element\">...</div>\n */\nfunction remove(element, className) {\n if (!element || !className) {\n return\n }\n\n element.classList.remove(className)\n\n return element\n}\n\n/**\n * This function toggles className from the element's attribute class\n *\n * @since 0.0.6\n * @module css/toggle\n * @category Element\n * @param {HTMLElement} element Related element\n * @param {String} className the className to add\n * grouped values.\n * @returns {HTMLElement} The modified element\n * @example\n *\n * toggle(element, 'hidden');\n * // => <div class=\"element\">...</div>\n * toggle(element, 'hidden');\n * // => <div class=\"element hidden\">...</div>\n */\nfunction toggle(element, className) {\n if (has(element, className)) {\n remove(element, className)\n } else {\n add(element, className)\n }\n\n return element\n}\n\nexport default { has, add, remove, toggle }", "import css from '../module/css'\n\n/**\n * Classify component related functions\n * @module component/classify\n * @category component\n */\n\n/**\n * Init component class\n * @param {element} element The component root element\n * @param {object} options component class options\n * @return {Instance} The Class instance\n *\n */\nfunction classify (element, options) {\n css.add(element, options.prefix + '-' + options.class)\n\n if (options.name) {\n css.add(element, options.class + '-' + options.name)\n }\n\n if (options.type) {\n //css.add(element, options.class + '-' + options.type)\n css.add(element, 'type-' + options.type)\n }\n\n if (options.color) {\n css.add(element, options.color + '-color')\n }\n\n if (options.css) {\n css.add(element, options.css)\n }\n\n if (options.elevation) {\n css.add(element, 'elevation-z' + options.elevation)\n }\n\n if (options.name) {\n // console.log('name', options.name)\n element.dataset.name = options.name\n }\n\n if (options.label) {\n element.title = options.label\n }\n\n if (options.style) {\n var styles = options.style.split(' ')\n for (var i = 0; i < styles.length; i++) {\n css.add(element, 'style-' + styles[i])\n }\n }\n\n if (options.theme) {\n element.classList.add(options.theme + '-theme')\n }\n}\n\nexport default classify\n", "import classify from './classify'\n\nfunction create (options) {\n var element = document.createElement(options.tag || 'div')\n\n classify(element, options)\n\n return element\n}\n\nexport default create\n", "import css from '../module/css'\n\nfunction create (tag, className) {\n tag = tag || 'div'\n\n var element = document.createElement(tag)\n css.add(element, className)\n\n return element\n}\n\nexport default create\n", "'use strict'\n\n/**\n * Element insertion related methods\n * @module module/dom\n */\n\n/**\n * Inserts content specified by the container argument at the end of HTMLElement\n *\n * @param {HTMLElement} container\n * @param {String|HTMLElement} html\n * @return {HTMLElement} inserted element\n */\nfunction append (container, element) {\n container.appendChild(element)\n return element\n}\n\n/**\n * Inserts content specified by the html argument at the beginning of HTMLElement\n *\n * @param {HTMLElement} container\n * @param {string|HTMLElement} html\n * @returns {HTMLElement} inserted container\n */\nfunction prepend (container, element) {\n return container.insertBefore(element, container.firstChild)\n}\n\n/**\n * Inserts content specified by the html argument after the HTMLElement\n *\n * @param {HTMLElement} container\n * @returns {HTMLElement} inserted container\n */\nfunction after (container, element) {\n return container.parentNode.insertBefore(element, container.nextSibling)\n}\n\n/**\n * Inserts content specified by the html argument before the HTMLElement\n *\n * @param {HTMLElement} container\n * @returns {HTMLElement} inserted container\n */\nfunction before (container, element) {\n return container.insertBefore(element, container)\n}\n\n/**\n * Replaces given html container with content specified in html parameter\n *\n * @param {HTMLElement} container\n * @param {string|HTMLElement} html\n * @returns {HTMLElement} inserted container\n */\nfunction replace (container, element) {\n return container.parentNode.replaceChild(element, container)\n}\n\n/**\n * Removes HTMLElement from dom tree\n *\n * @param {HTMLElement} container\n * @returns {HTMLElement} removed container\n */\nfunction remove (element) {\n var parent = element.parentNode\n return parent.removeChild(element)\n}\n\n/**\n * [dispose description]\n * @return {Object} The class instance\n */\nfunction dispose (element) {\n var el = element\n return (el.parentNode) ? el.parentNode.removeChild(el) : el\n}\n\n/**\n * empty\n * @return {void}\n */\nfunction empty (element) {\n while (element.firstChild) {\n element.removeChild(element.firstChild)\n }\n}\n\n/**\n * [destroy description]\n * @return {Object} this class\n */\nfunction destroy (element) {\n return element.parentNode.removeChild(element)\n}\n\nexport default { append, prepend, after, before, replace, remove, destroy, empty, dispose }\n", "'use strict'\n\nimport dom from '../module/dom'\n\n/**\n * insert element into dom\n * @param {HTMLElement} element [description]\n * @param {HTMLElement} container [description]\n * @param {string} context [description]\n * @return {?} [description]\n */\nfunction insert (element, container, context) {\n if (!element || !container) return\n\n element = element.root || element\n container = container.root || container\n\n context = context || 'bottom'\n\n var contexts = ['top', 'bottom', 'after', 'before']\n var methods = ['prepend', 'append', 'after', 'before']\n\n var index = contexts.indexOf(context)\n if (index === -1) {\n return\n }\n\n var method = methods[index]\n\n // insert component element to the dom tree using dom\n dom[method](container, element)\n\n return element\n}\n\nexport default insert\n", "import create from '../element/create'\nimport css from '../module/css'\nimport insert from '../element/insert'\n\nconst KEYCODE = {\n ENTER: 13,\n SPACE: 32\n}\n\nvar control = {\n /**\n * [toggle description]\n * @return {Object} The class instance\n */\n toggle () {\n if (this.disabled) return\n\n this.focus()\n\n if (this.checked) {\n this.check(false)\n } else {\n this.check(true)\n }\n\n return this\n },\n\n /**\n * Set checkbox value\n * @param {boolean} value [description]\n */\n check (checked) {\n if (checked) {\n css.add(this.root, 'is-checked')\n this.element.input.checked = true\n this.checked = true\n this.emit('change', this.checked)\n } else {\n css.remove(this.root, 'is-checked')\n this.element.input.checked = false\n this.checked = false\n this.emit('change', this.checked)\n }\n return this\n },\n\n /**\n * [initLabel description]\n * @return {?} [description]\n */\n label (label, container) {\n if (!label) return\n\n this.element = this.element || {}\n\n if (!this.element.label) {\n this.element.label = create('label', this.options.class + '-label')\n }\n\n this.element.label.textContent = label\n\n container = container || this.root\n\n insert(this.element.label, container)\n },\n\n /**\n * [_initIcon description]\n * @param {string} type\n * @return {string}\n */\n icon (icon, container, position) {\n if (!icon) return\n\n container = container || this.root\n\n position = position || 'top'\n if (this.options.type === 'text-icon') {\n position = 'bottom'\n }\n\n this.element = this.element || {}\n\n this.element.icon = create('i', this.options.class + '-icon')\n insert(this.element.icon, container, position)\n\n this.element.icon.innerHTML = icon\n },\n\n /**\n * [initLabel description]\n * @return {?} [description]\n */\n error (error) {\n error = error || this.options.error\n if (this.options.error === null) return\n\n let text = this.options.error || this.options.text\n\n if (!this.element.error) { this.element.error = create('error', this.options.class + '-error') }\n\n if (text) {\n this.element.error.textContent = text\n }\n\n insert(this.element.error, this.root, 'bottom')\n },\n\n disable () {\n this.disabled = true\n\n this.element.input.setAttribute('disabled', 'disabled')\n css.add(this.root, 'is-disabled')\n return this\n },\n\n enable () {\n this.disabled = false\n\n this.element.input.removeAttribute('disabled')\n css.remove(this.root, 'is-disabled')\n return this\n },\n\n keydown (e) {\n if (e.altKey) return\n\n switch (e.keyCode) {\n case KEYCODE.ENTER:\n case KEYCODE.SPACE:\n e.preventDefault()\n this.toggle(e)\n break\n default:\n break\n }\n },\n\n /**\n * Setter\n * @param {string} prop\n * @param {string} value\n * @return {Object} The class instance\n */\n get (prop) {\n switch (prop) {\n case 'name':\n this.getName()\n break\n // case 'value':\n // this.setValue(prop)\n // break\n // case 'label':\n // this.setLabel(prop)\n // break\n default:\n this.setValue(prop)\n }\n\n return this\n },\n\n getName () {\n return this.root.dataset.name\n },\n\n /**\n * [_onInputFocus description]\n * @return {?} [description]\n */\n focus () {\n if (this.disabled === true) return this\n\n css.add(this.root, 'is-focused')\n if (this.element.input !== document.activeElement) { this.element.input.focus() }\n return this\n },\n\n /**\n * [_onInputBlur description]\n * @return {?} [description]\n */\n blur () {\n css.remove(this.root, 'is-focused')\n return this\n }\n}\n\nexport default control\n", "'use strict'\n\n/**\n * Utility functions\n * @module module/utils\n */\n\n/**\n * Checks if given value is an array\n * @param {*} object\n * @returns {boolean}\n * @private\n */\nfunction _isArray (object) {\n return Object.prototype.toString.call(object) === '[object Array]'\n}\n\n/**\n * Checks if javascript object is plain object\n * @param {Object} object\n * @returns {*|boolean}\n * @private\n */\nfunction _isLiteralObject (object) {\n return object && typeof object === 'object' && Object.getPrototypeOf(object) === Object.getPrototypeOf({})\n}\n\n/**\n * Checks if object is iterable\n * @param {Object} object\n * @returns {boolean}\n * @private\n */\nfunction _isIterable (object) {\n var r = _isLiteralObject(object) ||\n _isArray(object) ||\n (typeof object === 'object' &&\n object !== null &&\n object.length !== undefined)\n\n return r\n}\n\n/**\n *\n * @param {Object} object\n * @param {Function} callback\n * @private\n */\nfunction _each (object, callback) {\n if (_isArray(object) || (typeof object === 'object' && object.length !== undefined)) {\n for (var i = 0, l = object.length; i < l; i++) {\n callback.apply(object[i], [object[i], i])\n }\n return\n }\n\n if (_isLiteralObject(object)) {\n for (var key in object) {\n callback.apply(object[key], [object[key], key])\n }\n }\n}\n\n/**\n * Array.indexOf support\n * @param {Array} array\n * @param {*} obj\n * @returns {number}\n * @private\n */\nfunction _indexOf (array, obj) {\n if (Array.prototype.indexOf) {\n return Array.prototype.indexOf.call(array, obj)\n }\n for (var i = 0, j = array.length; i < j; i++) {\n if (array[i] === obj) {\n return i\n }\n }\n return -1\n}\n\nexport { _isArray, _isIterable, _isLiteralObject, _each, _indexOf }\n", "/**\n * Element style related methods\n * @module component/style\n */\nimport {\n _isIterable,\n _isLiteralObject,\n _isArray,\n _each\n} from '../module/utils'\n\n/**\n * Gets element's computed style\n * @param {string} prop\n * @returns {*}\n * @private\n */\nfunction get (element, style) {\n // console.log('get', element, style);\n // get array of elements\n if (_isArray(style)) {\n var css = {}\n for (var i in list) {\n css[list[i]] = this.get(element, list[i])\n }\n return css\n } else {\n var computedStyle\n\n if (typeof window.getComputedStyle === 'function') { // normal browsers\n computedStyle = window.getComputedStyle(element)\n } else if (typeof document.currentStyle !== undefined) { // other browsers\n computedStyle = element.currentStyle\n } else {\n computedStyle = element.style\n }\n\n if (style) {\n return computedStyle[style]\n } else {\n return computedStyle\n }\n }\n}\n\n/**\n * set element style\n * @param { ? } element [description]\n * @param {?} style [description]\n */\nfunction set (element, style) {\n if (_isIterable(element) && _isLiteralObject(style)) {\n _each(element, function (e) {\n set(e, style)\n })\n return element\n }\n\n if (_isLiteralObject(style)) {\n // console.log('style', element, style);\n for (var i in style) {\n element.style[i] = style[i]\n }\n return style\n }\n\n return false\n}\n\nexport default { get, set }\n", "'use strict'\n\n/**\n * Element style related methods\n * @module component/style\n */\nimport style from './style'\n\nfunction offset (element, prop) {\n var rect = element.getBoundingClientRect()\n\n var offset = {\n top: Math.round(rect.top),\n right: Math.round(rect.right),\n bottom: Math.round(rect.bottom),\n left: Math.round(rect.left),\n width: rect.width ? Math.round(rect.width) : Math.round(element.offsetWidth),\n height: rect.height ? Math.round(rect.height) : Math.round(element.offsetHeight)\n }\n\n // css width and height\n if (offset.width <= 0) {\n offset.width = parseFloat(style.get(element, 'width'))\n }\n if (offset.height <= 0) {\n offset.height = parseFloat(style.get(element, 'height'))\n }\n\n if (prop) {\n return offset[prop]\n } else {\n return offset\n }\n}\n\nexport default offset\n", "import create from '../element/create'\nimport insert from '../element/insert'\nimport offset from '../element/offset'\n\nconst defaults = {\n transition: '.5s cubic-bezier(0.4, 0.0, 0.2, 1)',\n opacity: ['1', '.3']\n}\n\n/**\n * init ripple\n * @param {?} container [description]\n * @return {?} [description]\n */\nfunction init (instance) {\n instance.on('built', (container) => {\n set(container)\n })\n}\n\n/**\n * this function set the event listener\n * @param {HTMLElement} container [description]\n */\nfunction set (container) {\n container.addEventListener('mousedown', (e) => {\n show(e)\n })\n}\n\n/**\n * show method\n * @param {event} e The event related to the the touch\n * @param {Object} coord\n * @return {void}\n */\nfunction show (e) {\n // console.log('show', e);\n var container = e.target\n var offs = offset(container)\n\n let ripple = create('div', 'material-ripple')\n let end = coordinate(offs)\n let initial = {\n left: (e.offsetX || offs.width / 2) + 'px',\n top: (e.offsetY || offs.height / 2) + 'px'\n }\n\n ripple.style.left = initial.left\n ripple.style.top = initial.top\n //ripple.style.opacity = defaults.opacity[1]\n ripple.style.transition = defaults.transition\n\n insert(ripple, container, 'top')\n\n setTimeout(() => {\n // console.log('style coord', end);\n ripple.style.left = end.left\n ripple.style.top = end.top\n ripple.style.width = end.size\n ripple.style.height = end.size\n //ripple.style.opacity = defaults.opacity[1]\n }, 1)\n\n document.body.onmouseup = () => {\n destroy(ripple)\n }\n}\n\n/**\n * this method hides the given ripple\n * @return {Object} Size and position\n */\nfunction destroy (ripple) {\n if (ripple.parentNode) { ripple.style.opacity = '0' }\n\n document.body.onmouseup = null\n\n setTimeout(() => {\n if (ripple.parentNode) { ripple.parentNode.removeChild(ripple) }\n }, 1000)\n}\n\n/**\n * Get ripple final coordinates\n * @return {Object} Size and position\n */\nfunction coordinate (o) {\n var size = o.width\n var top = -o.height / 2\n\n if (o.width > o.height) {\n top = -(o.width - o.height / 2)\n }\n\n return {\n size: (size * 2) + 'px',\n top: top + 'px',\n left: (size / -2) + 'px'\n }\n}\n\nexport default init", "export default {\n on (event, cb) {\n this.event = this.event || {}\n this.event[event] = this.event[event] || []\n this.event[event].push(cb)\n return this\n },\n off (event, cb) {\n this.event = this.event || {}\n if (event in this.event === false) return\n this.event[event].splice(this.event[event].indexOf(cb), 1)\n return this\n },\n emit (event /* , args... */) {\n this.event = this.event || {}\n if (event in this.event === false) return\n for (var i = 0; i < this.event[event].length; i++) {\n this.event[event][i].apply(this, Array.prototype.slice.call(arguments, 1))\n }\n return this\n }\n}\n", "/**\n * extract.f extract a function from a string using dot\n * @param {string} func A string representing a function accessible in dot notation\n * @return {function} The function\n */\nfunction f(instance, func) {\n if (!func) return\n\n if (typeof func === 'function') {\n return func\n } else if (!func.match(/\\./)) return instance[func]\n var iteration\n\n var keys = func.split('.')\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i]\n\n iteration = iteration || instance\n iteration = iteration[key]\n }\n\n return iteration\n}\n\n/**\n * extract.e extract a event and the context\n * @param {[type]} str [description]\n * @return {[type]} [description]\n */\nfunction e(instance, ev) {\n if (!ev) return instance\n else if (!ev.match(/\\./)) return instance[ev]\n var iteration\n var obj = {}\n var element\n\n var keys = ev.split('.')\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i]\n\n iteration = iteration || instance\n iteration = iteration[key]\n\n if (i === keys.length - 2) {\n element = iteration\n }\n }\n\n obj.element = element\n obj.name = keys[keys.length - 1]\n return obj\n}\n\nexport default { e, f }", "'use strict'\n\nimport extract from './extract'\n\n/**\n * attach function to events\n * @module module/attach\n * @category module\n */\n\n/**\n * [attach description]\n * @param {object} component [description]\n * @param {[type]} events [description]\n * @return {[type]} [description]\n */\nexport default {\n attach: function (events) {\n events = events || this.options.events\n if (!events) return\n\n // console.log('attach', events, this)\n var instance = this\n events.map((def) => {\n // console.log('map', def)\n\n var e = extract.e(instance, def[0])\n var f = extract.f(instance, def[1])\n\n e.element.addEventListener(e.name, f.bind(this))\n })\n\n return this\n }\n}\n", "'use strict'\n\nimport create from './component/create'\nimport control from './component/control'\nimport ripple from './component/ripple'\n\nimport insert from './element/insert'\n\nimport emitter from './module/emitter'\nimport attach from './module/attach'\n\nconst defaults = {\n prefix: 'material',\n class: 'button',\n tag: 'button',\n events: [\n ['root.click', 'handleClick']\n ]\n}\n\n/**\n * Class that represents a button\n * @class\n * @since 0.0.1\n * @example\n * var button = new Button({\n * label: 'Button raised',\n * type: 'raised',\n * color: 'primary'\n * }).on('click', function(e) {\n * console.log('button click', e);\n * }).insert(document.body);\n */\nclass Button {\n /**\n * The init method of the Button class\n * @param {Object} options [description]\n * @private\n * @return {Object} The class instance\n */\n constructor (options) {\n this.init(options)\n this.build()\n this.setup()\n this.attach()\n\n this.emit('ready')\n\n return this\n }\n\n /**\n * [init description]\n * @param {?} options [description]\n * @return {?} [description]\n */\n init (options) {\n this.options = Object.assign({}, defaults, options || {})\n Object.assign(this, control, emitter, attach, ripple)\n\n this.element = this.element || {}\n\n // init module\n ripple(this)\n\n this.emit('init')\n }\n\n /**\n * Build button's method\n * @override\n * @return {void}\n */\n build () {\n this.element = {}\n\n this.root = create(this.options)\n\n this.options.label = this.options.label || this.options.text\n\n this.root.setAttribute('aria-label', this.options.label || this.options.name)\n\n this.label(this.options.label)\n this.icon(this.options.icon)\n\n if (this.options.container) {\n insert(this.root, this.options.container)\n }\n\n this.emit('built', this.root)\n\n return this\n }\n\n /**\n * insert method\n * @param {?} container [description]\n * @param {?} context [description]\n * @return {?} [description]\n */\n insert (container, context) {\n insert(this.root, container, context)\n\n return this\n }\n\n /**\n * [setup description]\n * @return {?} [description]\n */\n setup () {\n this.element.input = this.root\n\n if (this.options.name) {\n this.root.dataset.name = this.options.name\n }\n\n // if (this.options.label) {\n // this.root.title = this.options.label\n // }\n\n if (this.options.content) {\n this.root.innerHTML = this.options.content\n }\n }\n\n /**\n * Setter\n * @param {string} prop\n * @param {string} value\n * @return {Object} The class instance\n */\n set (prop, value) {\n switch (prop) {\n case 'disabled':\n this.disable(value)\n break\n case 'value':\n this.setValue(value)\n break\n case 'label':\n this.setLabel(value)\n break\n default:\n this.setValue(prop)\n }\n\n return this\n }\n\n /**\n * [_onElementMouseDown description]\n * @param {event} e\n * @return {void}\n */\n handleClick (e) {\n e.preventDefault()\n\n if (this.disabled === true) return\n if (this.options.upload) return\n\n // this.publish('click');\n this.emit('click', e)\n\n return this\n }\n}\n\nexport default Button\n", "'use strict'\n\nimport dom from '../module/dom'\n\n/**\n * Inject method insert element to the domtree using Dom methods\n * @param {HTMLElement} container [description]\n * @param {string} context - Injection context\n * @return {Object} This class intance\n */\nexport default {\n\n /**\n * [insert description]\n * @param {?} container [description]\n * @param {?} context [description]\n * @param {?} debug [description]\n * @return {?} [description]\n */\n insert (container, context) {\n var element = this.root\n\n this.insertElement(element, container, context)\n\n return this\n },\n\n /**\n * [insertElement description]\n\n * @param {?} element [description]\n * @param {?} container [description]\n * @param {?} context [description]\n * @param {?} debug [description]\n * @return {?} [description]\n */\n insertElement (element, container, context) {\n if (container && container.root) {\n container = container.root\n }\n\n this.container = container\n\n // if (debug) {\n // console.log('insert', container);\n // }\n\n // this.emit('insert');\n\n context = context || 'bottom'\n\n var contexts = ['top', 'bottom', 'after', 'before']\n var methods = ['prepend', 'append', 'after', 'before']\n\n var index = contexts.indexOf(context)\n if (index === -1) {\n return\n }\n\n var method = methods[index]\n\n // this.emit('insert');\n\n // insert component element to the dom tree using Dom\n // console.log('dom', method, element);\n dom[method](container, element)\n // this.emit('injected');\n //\n return element\n }\n}\n", "function is (object) {\n return object &&\n typeof object === 'object' &&\n Object.getPrototypeOf(object) === Object.getPrototypeOf({})\n}\n\nexport { is }\n", "import { is as isObject } from './module/object'\nimport css from './module/css'\nimport insert from './element/insert'\n\n/**\n *\n */\nclass Layout {\n /**\n * [constructor description]\n * @param {?} schema [description]\n * @param {?} container [description]\n * @return {?} [description]\n */\n constructor (schema, container) {\n this.component = this.create(schema, container)\n\n return this\n }\n\n /**\n * [create description]\n * @param {?} schema [description]\n * @param {?} container [description]\n * @param {?} structure [description]\n * @return {?} [description]\n */\n create (schema, container, structure, level) {\n level = level || 0\n level++\n\n // console.log('level', level, schema)\n // console.log('-------------')\n\n structure = structure || {}\n let component = null\n\n for (var i = 0; i < schema.length; i++) {\n // console.log('index', i, typeof schema[i])\n var name\n var options = {}\n\n if (schema[i] instanceof Object &&\n typeof schema[i] === 'function') {\n if (isObject(schema[i + 2])) {\n options = schema[i + 2]\n }\n\n if (typeof schema[i + 1] === 'string') {\n name = schema[i + 1]\n options.name = name\n }\n\n component = new schema[i](options)\n\n if (name) {\n structure[name] = component\n }\n\n if (component) {\n this.display(component.root, options)\n this.style(component, options)\n }\n\n if (level === 1) {\n var isClass = fn => /^\\sclass/.test(schema[i].toString())\n\n // console.log('isClass', isClass)\n // console.log('root', component.root)\n structure.root = component.root\n }\n\n if (component && container) {\n if (component.insert) component.insert(container)\n else insert(component, container)\n }\n } else if (Array.isArray(schema[i])) {\n // console.log('------', schema[i])\n if (component == null) {\n component = container\n }\n this.create(schema[i], component, structure, level)\n }\n }\n\n return structure\n }\n\n /**\n * [_initFlexDirection description]\n * @param {Element} container Init direction for the given container\n * @param {string} direction (horizontal,vertical)\n */\n display (element, options) {\n var display = options.display\n var direction = options.direction || 'horizontal'\n\n if (!element || !display) return\n\n if (direction === 'horizontal') {\n element.className += ' ' + 'flex-row'\n } else if (direction === 'vertical') {\n element.className += ' ' + 'flex-column'\n }\n }\n\n /**\n * [style description]\n * @param {?} component [description]\n * @return {?} [description]\n */\n style (component) {\n var options = component.options || {}\n\n // console.log('component', component);\n\n if (options.flex) {\n css.add(component.root, 'flex-' + options.flex)\n } else {\n var size = options.size\n if (options.size && options.width) {\n component.root.width = size + 'px'\n } else if (options.size && options.height) {\n component.root.height = size + 'px'\n }\n }\n\n if (options.position) {\n component.root.position = options.position\n }\n\n if (options.bottom) {\n component.root.bottom = options.bottom\n }\n\n if (options.hide) {\n component.root.display = 'none'\n }\n\n if (options.theme) {\n css.add(component.root, 'theme' + '-' + options.theme)\n }\n }\n\n /**\n * [get description]\n * @param {?} name [description]\n * @return {?} [description]\n */\n get (name) {\n if (name) return this.component[name]\n else return this.component\n }\n}\n\nexport default Layout\n", "'use strict'\n\n// import modules\nimport create from './component/create'\nimport insert from './component/insert'\n// import components\nimport Layout from './layout'\n\nlet defaults = {\n prefix: 'material',\n class: 'card',\n tag: 'div'\n}\n\nclass Card {\n /**\n * Constructor\n * @param {Object} options - Component options\n * @return {Object} Class instance\n */\n constructor (options) {\n this.init(options)\n this.build()\n }\n\n init (options) {\n this.options = Object.assign({}, defaults, options || {})\n Object.assign(this, insert)\n }\n\n /**\n * build the component using the super method\n * @return {Object} The class instance\n */\n build () {\n this.root = create(this.options)\n\n if (this.options.layout) {\n this.layout = new Layout(this.options.layout, this.root)\n }\n }\n}\n\nexport default Card\n", "export default {\n\n /**\n * cross browser addEvent\n * @param {string} event The event to add\n * @param {Function} fn [description]\n */\n addEvent (event, fn) {\n var element = this.root\n // avoid memory overhead of new anonymous functions for every event handler that's installed\n // by using local functions\n function listenHandler (e) {\n var ret = fn.apply(this, arguments)\n if (ret === false) {\n e.stopPropagation()\n e.preventDefault()\n }\n return (ret)\n }\n\n function attachHandler () {\n // set the this pointer same as addEventListener when fn is called\n // and make sure the event is passed to the fn also so that works the same too\n var ret = fn.call(element, window.event)\n if (ret === false) {\n window.event.returnValue = false\n window.event.cancelBubble = true\n }\n return (ret)\n }\n\n if (element.addEventListener) {\n element.addEventListener(event, listenHandler, false)\n } else {\n element.attachEvent('on' + event, attachHandler)\n }\n\n return this\n },\n\n /**\n * cross browser removeEvent\n * @param {string} event The event to remove\n * @param {Function} fn [description]\n * @return {Object} [description]\n */\n removeEvent (event, fn) {\n var element = this.root\n\n if (element.removeEventListener) {\n element.removeEventListener(event, fn, false)\n } else if (element.detachEvent) {\n element.detachEvent('on' + event, element[fn.toString() + event])\n element[fn.toString() + event] = null\n } else {\n element['on' + event] = function () {}\n }\n\n return this\n }\n}\n", "'use strict'\n\nimport create from './component/create'\nimport events from './component/events'\nimport insert from './component/insert'\n\nimport emitter from './module/emitter'\n\nconst defaults = {\n prefix: 'material',\n class: 'component',\n tag: 'span'\n}\n\n/**\n * Base class for all ui components\n * @class\n * @param {Object} options - The component options\n * @return {Object} The class Instance\n */\n\n/**\n * Class representing a UI Container. Can add components.\n *\n * @extends Component\n * @return {parent} The class instance\n * @example new Container({\n * container: document.body\n * });\n */\nclass Component {\n /**\n * Constructor\n * @param {Object} options - Component options\n * @return {Object} Class instance\n */\n constructor (options) {\n this.init(options)\n this.build()\n\n return this\n }\n\n /**\n * init method\n * @param {Object} Options\n * @return {Object} Instance\n */\n init (options) {\n this.options = Object.assign({}, defaults, options || {})\n\n Object.assign(this, emitter, events, insert)\n\n return this\n }\n\n /**\n * Build Method\n * @return {Object} This class instance\n */\n build () {\n this.root = create(this.options)\n\n if (this.options.container) {\n this.insert(this.options.container)\n }\n\n return this\n }\n}\n\nexport default Component\n", "'use strict'\n\nimport create from './component/create'\nimport insert from './element/insert'\nimport emitter from './module/emitter'\n\nconst defaults = {\n prefix: 'material',\n class: 'container',\n tag: 'div'\n}\n\n/**\n * Class representing a UI Container. Can add components.\n *\n * @extends Component\n * @return {parent} The class instance\n * @example new Container({\n * container: document.body\n * });\n */\nclass Container {\n /**\n * Constructor\n * @param {Object} options - Component options\n * @return {Object} Class instance\n */\n constructor (options) {\n // init and build\n this.init(options)\n this.build()\n\n return this\n }\n\n /**\n * Init class\n * @params {Object} options The instance options\n * @return {Object} This class instance\n */\n init (options) {\n this.options = Object.assign({}, defaults, options || {})\n Object.assign(this, emitter)\n\n return this\n }\n\n /**\n * [build description]\n * @return {Object} This class instance\n */\n build () {\n this.root = create(this.options)\n\n if (this.options.container) {\n insert(this.root, this.options.container)\n }\n\n return this\n }\n\n insert (container, context) {\n insert(this.root, container, context)\n return this\n }\n}\n\nexport default Container\n", "import create from '../element/create'\nimport insert from '../element/insert'\n\nconst prefix = 'material'\n\n/**\n * [initLabel description]\n * @return {?} [description]\n */\nfunction label (root, text, options) {\n text = text || null\n\n var prefix = options.class || options.prefix\n\n var label = create('label', prefix + '-label')\n label.textContent = text\n label.setAttribute('for', options.name)\n insert(label, root)\n\n return label\n}\n\nexport default label\n", "'use strict'\n\nfunction init (element, attribute) {\n for (var key in attribute) {\n if (attribute.hasOwnProperty(key)) {\n element.setAttribute(key, attribute[key])\n }\n }\n\n return element\n}\n\nfunction set (element, name, value) {\n return element.setAttribute(name, '' + value)\n}\n\nfunction get (element, name) {\n return element.getAttribute(name) || null\n}\n\nfunction remove (element, name) {\n return element.removeAttribute(name)\n}\n\nexport default { init, set, get, remove }\n", "import attribute from './attribute'\nimport create from './create'\nimport insert from './insert'\n\nfunction isObject (object) {\n return object &&\n typeof object === 'object' &&\n Object.getPrototypeOf(object) === Object.getPrototypeOf({})\n}\n\nfunction process (string) {\n const tags = string.match(/^[\\w-]+/)\n const ids = string.match(/#([\\w-]+)/)\n const classes = string.match(/\\.[\\w-]+/g)\n const names = string.match(/\\$([\\w-]+)/)\n\n const properties = {\n tag: tags ? tags[0] : 'div'\n }\n\n if (ids) properties.id = ids[1]\n if (names) properties.name = names[1]\n\n if (classes) {\n properties.class = classes\n .join(' ')\n .replace(/\\./g, '')\n }\n\n return properties\n}\n\nfunction build (schema, container, object, level) {\n let element\n object = object || {}\n\n for (var i = 0; i < schema.length; i++) {\n if (typeof schema[i] === 'string') {\n var property = process(schema[i])\n element = create(property.tag, property.class)\n insert(element, container)\n\n if (property.name) { object[property.name] = element }\n } else if (isObject(schema[i])) {\n attribute.init(element, schema[i])\n } else if (Array.isArray(schema[i])) {\n build(schema[i], element, object, level)\n }\n }\n\n return object\n}\n\nexport default build\n", "'use strict'\n\nimport events from './component/events'\nimport control from './component/control'\nimport label from './component/label'\n\nimport insert from './element/insert'\nimport build from './element/build'\n\nimport emitter from './module/emitter'\nimport attach from './module/attach'\nimport css from './module/css'\n\nimport icon from './skin/material/icon/checkbox.svg'\n// element related modules\n\nlet defaults = {\n prefix: 'material',\n class: 'checkbox',\n type: 'control',\n // modules: [events, control, emitter, attach],\n build: ['$root.material-checkbox', {},\n ['input$input', {}],\n ['span$control.checkbox-control']\n ],\n events: [\n ['element.control.click', 'click', {}],\n ['element.label.click', 'toggle', {}],\n // for accessibility purpose\n // ['element.input.click', 'toggle', {}],\n ['element.input.focus', 'focus'],\n ['element.input.blur', 'blur'],\n ['element.input.keydown', 'keydown', {}]\n ]\n}\n/**\n * Checkbox control class\n * @class\n * @extends Control\n * @since 0.0.1\n * @example\n * var chkbox = checkbox({\n * label: 'Primary raised button',\n * type: 'raised',\n * primary: true\n * }).on('click', function(e) {\n * console.log('button click', e);\n * }).insert(document.body);\n */\nclass Checkbox {\n /**\n * Constructor\n * @param {Object} options - Component options\n * @return {Object} Class instance\n */\n constructor (options) {\n this.init(options)\n this.build()\n this.attach()\n\n return this\n }\n\n /**\n * Constructor\n * @param {Object} options The class options\n * @return {Object} This class instance\n */\n init (options) {\n this.options = Object.assign({}, defaults, options || {})\n Object.assign(this, events, control, emitter, attach)\n\n return this\n }\n\n /**\n * build the component using the super method\n * @return {Object} The class instance\n */\n build () {\n this.element = build(this.options.build)\n this.root = this.element.root\n\n this.element.control.innerHTML = icon\n\n var text = this.options.text || this.options.label\n\n this.element.label = label(this.root, text, this.options)\n\n this.element.input.setAttribute('type', 'checkbox')\n this.element.input.setAttribute('name', this.options.name)\n this.element.input.setAttribute('aria-label', this.options.name)\n\n if (this.options.value) {\n this.element.input.setAttribute('value', this.options.value)\n }\n\n if (this.options.disabled) {\n this.disabled = this.options.disabled\n this.element.input.setAttribute('disabled', 'disabled')\n css.add(this.root, 'is-disabled')\n }\n\n if (this.options.checked) {\n this.check(true)\n }\n\n if (this.options.value) {\n this.set('value', this.value)\n }\n\n // insert if container options is given\n if (this.options.container) {\n insert(this.root, this.options.container)\n }\n\n return this\n }\n\n /**\n * Setter\n * @param {string} prop\n * @param {string} value\n * @return {Object} The class instance\n */\n set (prop, value) {\n switch (prop) {\n case 'checked':\n this.check(value)\n break\n case 'value':\n this.setValue(value)\n break\n case 'label':\n this.setLabel(value)\n break\n default:\n this.check(prop)\n }\n\n return this\n }\n\n /**\n * [insert description]\n * @param {?} container [description]\n * @param {?} context [description]\n * @return {?} [description]\n */\n insert (container, context) {\n insert(this.root, container, context)\n\n return this\n }\n\n /**\n * [click description]\n * @param {event} e [description]\n * @return {?} [description]\n */\n click (e) {\n this.toggle(e)\n this.element.input.focus()\n\n return this\n }\n\n /**\n * Set checkbox value\n * @param {boolean} value [description]\n */\n setValue (value) {\n console.log('setValue', value)\n this.value = value\n this.element.input.setAttribute('value', value)\n\n return this\n }\n}\n\nexport default Checkbox\n", "'use strict'\n\nlet instance = null\n\n/**\n *\n */\nclass Controller {\n /**\n * Setting up block level variable to store class state\n * , set's to null by default.\n * credits: http://amanvirk.me/singleton-classes-in-es6/\n */\n constructor () {\n if (!instance) {\n instance = this\n }\n\n this.components = this.components || []\n this.component = this.component || {}\n\n this.init()\n\n return instance\n }\n\n init () {\n this.subscribe('settings', (message) => {\n // console.log('settings', message);\n // this.setSettings(message.key, message.value);\n })\n }\n\n // setSettings(key, value) {\n // var text = Cookies.get(key);\n\n // var current = {};\n\n // if (text) {\n // current = JSON.parse(text);\n // }\n\n // console.log('settings value', current, value);\n // //settings = [settings, value].reduce(Object.assign, {});\n // var settings = merge(current, value);\n\n // console.log('settings ' + key, settings);\n\n // Cookies.set(key, JSON.stringify(settings));\n\n // }\n\n // getSettings(key) {\n // var json = Cookies.get(key);\n\n // if (!json) {\n // return null;\n // }\n // var value = JSON.parse(json);\n\n // console.log('settings' + key, value);\n\n // return value;\n\n // }\n\n /**\n * [register description]\n * @param {component} component [description]\n * @return {Object} The class instance\n */\n register (component) {\n this.components.push(component)\n\n this.component[component.name] = this.component[component.name] || []\n\n this.component[component.name].push(component)\n\n return this\n }\n\n /**\n * This method subscribes to a specific topic\n * @param {string} topic\n * @param {Function} callback\n * @return {boolean} true\n */\n subscribe (topic, callback) {\n this._topics = this._topics || {}\n\n // _log.debug('subscribe', topic);\n if (!this._topics.hasOwnProperty(topic)) {\n this._topics[topic] = []\n }\n\n this._topics[topic].push(callback)\n return true\n }\n\n /**\n * This method unsubscribes to a specific topic\n * @param {string} topic\n * @param {Function} callback\n * @return {boolean} true\n */\n unsunscribe (topic, callback) {\n this._topics = this._topics || {}\n // _log.debug('unsubscribe', topic);\n if (!this._topics.hasOwnProperty(topic)) {\n return false\n }\n\n for (var i = 0, len = this._topics[topic].length; i < len; i++) {\n if (this._topics[topic][i] === callback) {\n this._topics[topic].splice(i, 1)\n return true\n }\n }\n\n return false\n }\n\n /**\n * [publish description]\n * @return {?} [description]\n */\n publish () {\n this._topics = this._topics || {}\n\n var args = Array.prototype.slice.call(arguments)\n var topic = args.shift()\n // _log.debug('publish', topic);\n if (!this._topics.hasOwnProperty(topic)) {\n return false\n }\n\n for (var i = 0, len = this._topics[topic].length; i < len; i++) {\n this._topics[topic][i].apply(undefined, args)\n }\n return true\n }\n}\n\nvar controller = new Controller()\n\nexport default controller\n", "'use strict'\n\nimport create from './component/create'\nimport insert from './component/insert'\n\nvar defaults = {\n prefix: 'material',\n class: 'divider',\n tag: 'span'\n}\n\n/**\n * this class component represent an divider usually in a list\n *\n * @class\n * @extends {Component}\n * @return {Object} The class instance\n * @example new Item(object);\n */\nclass Divider {\n /**\n * init\n * @return {Object} The class options\n */\n constructor (options) {\n this.init(options)\n this.build()\n\n return this\n }\n\n /**\n * [init description]\n * @param {?} options [description]\n * @return {?} [description]\n */\n init (options) {\n this.options = Object.assign({}, defaults, options || {})\n\n Object.assign(this, insert)\n }\n\n /**\n * Build function for item\n * @return {Object} This class instance\n */\n build () {\n this.root = create(this.options)\n\n if (this.options.text) {\n this.root.textContent = this.options.text\n }\n\n if (this.options.container) {\n this.insert(this.options.container)\n }\n }\n}\n\nexport default Divider\n", "import controller from './controller'\n\nfunction init (instance) {\n // assign modules\n modules(instance)\n\n controller.register(instance)\n\n return instance\n}\n\nfunction modules (instance) {\n var modules = instance.options.modules\n\n for (var i = 0; i < modules.length; i++) {\n if (typeof modules[i] === 'function') {\n modules[i](instance)\n } else {\n Object.assign(instance, modules[i])\n }\n }\n}\n\nexport default init\n", "'use strict'\n\nimport init from './component/init'\nimport insert from './element/insert'\nimport classify from './component/classify'\nimport css from './module/css'\nimport events from './component/events'\nimport create from './element/create'\nimport emitter from './module/emitter'\n\nconst defaults = {\n prefix: 'material',\n class: 'drawer',\n modifier: 'width',\n state: 'closed',\n position: 'left',\n tag: 'div',\n width: '340',\n modules: [emitter, events]\n}\n\n/**\n * Class representing a UI Container. Can add components.\n *\n * @extends Component\n * @return {parent} The class instance\n * @example new Container({\n * container: document.body\n * });\n */\nclass Drawer {\n /**\n * Constructor\n * @param {Object} options - Component options\n * @return {Object} Class instance\n */\n constructor (options) {\n this.options = Object.assign({}, defaults, options || {})\n\n init(this)\n\n this.build()\n this.attach()\n\n this.emit('ready')\n\n return this\n }\n\n /**\n * Build Method\n * @return {Object} This class instance\n */\n build () {\n this.wrapper = create('div')\n\n classify(this.wrapper, this.options)\n\n this.root = create('aside')\n\n css.add(this.root, 'drawer-panel')\n\n insert(this.root, this.wrapper)\n\n if (this.options.position) {\n css.add(this.root, 'position-' + this.options.position)\n }\n\n if (this.options.fixed) {\n this.wrapper.classList.add('is-fixed')\n }\n\n if (this.options.size) {\n if (this.options.position === 'top' || this.options.position === 'bottom') {\n this.root.style = 'height: ' + this.options.size + 'px;'\n } else {\n this.root.style = 'width: ' + this.options.size + 'px;'\n }\n }\n\n if (this.options.container) { insert(this.wrapper, this.options.container) }\n\n this.emit('built', this.root)\n\n return this\n }\n\n attach () {\n this.wrapper.addEventListener('click', (e) => {\n console.log(' click close')\n this.close()\n })\n }\n /**\n * [toggle description]\n * @return {Object} The class instance\n */\n toggle () {\n // console.log('toggle', this.root);\n if (this.wrapper.classList.contains('show')) {\n this.close()\n } else {\n this.open()\n }\n\n return this\n }\n\n /**\n * [minimize description]\n * @return {Object} The class instance\n */\n close () {\n // console.log('close');\n css.remove(this.wrapper, 'show')\n // css.remove(this.underlay, 'show')\n\n return this\n }\n\n /**\n * [normalize description]\n * @return {Object} The class instance\n */\n open () {\n // console.log('open');\n\n css.add(this.wrapper, 'show')\n\n return this\n }\n\n /**\n * [insert description]\n * @param {?} container [description]\n * @return {?} [description]\n */\n insert (container, context) {\n insert(this.wrapper, container, context)\n\n return this\n }\n}\n\nexport default Drawer\n", "'use strict'\n\nimport Layout from './layout'\n\nimport create from './component/create'\nimport insert from './component/insert'\n\nvar defaults = {\n prefix: 'material',\n class: 'item',\n type: 'default',\n tag: 'li',\n types: {\n default: 'span',\n display4: 'h1',\n display3: 'h1',\n display2: 'h1',\n display1: 'h1',\n headline: 'h1',\n title: 'h2',\n subheading2: 'h3',\n subheading1: 'h4',\n body: 'p',\n body2: 'aside',\n caption: 'span'\n }\n}\n\n/**\n * The class represents an item ie for list\n *\n * @class\n * @return {Object} The class instance\n * @example new Item(object);\n */\nclass Item {\n /**\n * init\n * @return {Object} The class options\n */\n constructor (options) {\n this.init(options)\n this.build()\n\n return this\n }\n\n /**\n * [init description]\n * @param {?} options [description]\n * @return {?} [description]\n */\n init (options) {\n // merge options\n this.options = Object.assign({}, defaults, options || {})\n\n // define class\n\n // assign modules\n Object.assign(this, insert)\n }\n\n /**\n * Build function for item\n * @return {Object} This class instance\n */\n build () {\n // define main tag\n this.options.tag = this.options.tag || this.options.types[this.options.type]\n\n this.options.tag = this.options.tag\n\n this.root = create(this.options)\n\n if (this.options.text) {\n this.set(this.options.text)\n }\n\n if (this.options.layout) {\n this.layout = new Layout(this.options.layout, this.root)\n } else {\n if (this.options.container) {\n this.insert(this.options.container)\n }\n }\n }\n\n /**\n * Get or set text value of the element\n * @param {string} value The text to set\n * @returns {*}\n */\n set (value) {\n if (value) {\n if (this.root.innerText) {\n this.root.innerText = value\n } else {\n this.root.textContent = value\n }\n\n return this\n }\n\n return this\n }\n}\n\nexport default Item\n", "'use strict'\n\nimport { Item, Divider } from '../index'\n\nimport init from './component/init'\nimport emitter from './module/emitter'\nimport insert from './element/insert'\nimport css from './module/css'\nimport attach from './module/attach'\n\nconst defaults = {\n prefix: 'material',\n class: 'list',\n tag: 'ul',\n functions: ['render', 'select'],\n target: '.material-item',\n events: [\n ['root.click', 'handleSelect']\n ]\n}\n\n/**\n * List view class\n * @class\n * @param {Object} options Default options for view\n * @extends {View}\n * @since 0.0.4\n * @author Jerome Vial\n *\n * @type {prime}\n */\nclass List {\n /**\n * init\n * @return {Object} The class options\n */\n constructor (options) {\n this.options = Object.assign({}, defaults, options || {})\n\n this.init(this.options)\n this.build(this.options)\n this.attach(this.options.events)\n\n return this\n }\n\n /**\n * [_initView description]\n * @return Class instance\n */\n init () {\n this.filters = []\n this.data = []\n this.items = []\n\n // assign modules\n Object.assign(this, emitter, attach)\n\n // init function\n this._initFunction(this.options.functions)\n\n return this\n }\n\n /**\n * [_initFunction description]\n * @param {?} functions [description]\n * @return {?} [description]\n */\n _initFunction (functions) {\n for (var i = 0; i < functions.length; i++) {\n var name = functions[i]\n if (this.options[name]) {\n this[name] = this.options[name]\n }\n }\n }\n\n /**\n * [_initList description]\n * @param {Object} options this class options\n * @return {Object} The class instance\n */\n build (options) {\n // define main tag\n var tag = this.options.tag || 'ul'\n\n this.root = document.createElement(tag)\n css.add(this.root, 'material-' + this.options.class)\n\n if (options.name) {\n css.add(this.root, options.class + '-' + options.name)\n }\n\n if (options.type) {\n css.add(this.root, 'type-' + options.type)\n }\n\n if (options.layout) {\n css.add(this.root, 'layout-' + options.layout)\n }\n\n if (this.options.list) {\n this.set('list', this.options.list)\n }\n\n if (this.options.container) {\n insert(this.root, this.options.container)\n }\n\n // this.root.addEventListener(\"click\", function(e) {\n // // console.log(\"list\", this, e);\n // // e.target was the clicked element\n // });\n\n return this\n }\n\n /**\n * [onSelect description]\n * @param {?} e [description]\n * @return {?} [description]\n */\n handleSelect (e) {\n // console.log('onSelect', e.target, this.options.target);\n if (e.target && e.target.matches(this.options.target)) {\n // console.log(\"item clicked: \", e.target);\n css.remove(this.item, 'is-selected')\n css.add(e.target, 'is-selected')\n\n this.select(e.target, e, this.item)\n this.item = e.target\n }\n }\n\n /**\n * select\n * @param {Element} item [description]\n * @param {event} event The caller event\n * @return [description]\n */\n select (item, e, selected) {\n this.emit('select', item)\n }\n\n /**\n * [render description]\n * @param {?} info [description]\n * @return {?} [description]\n */\n render (info) {\n var item\n\n if (info.type === 'divider') {\n item = new Divider()\n } else {\n item = new Item({\n name: info.name,\n text: info.text || info.name\n })\n }\n\n return item\n }\n\n /**\n * Setter\n * @param {string} prop\n * @param {string} value\n */\n set (prop, value, options) {\n switch (prop) {\n case 'list':\n this.setList(value, options)\n break\n default:\n this.setList(prop, options)\n }\n\n return this\n }\n\n /**\n * Set list\n * @param {Array} list List of info object\n * @return {Object} The class instance\n */\n setList (list) {\n for (var i = 0; i < list.length; i++) {\n this.addItem(this.render(list[i]), i)\n }\n\n return this\n }\n\n /**\n * [add description]\n * @param {Object} item [description]\n */\n addItem (item /*, index */) {\n if (!item) {\n return\n }\n\n var where = 'bottom'\n insert(item.root, this.root, where)\n\n this.items.push(item)\n\n return item\n }\n\n insert (container, context) {\n insert(this.root, container, context)\n }\n\n empty () {\n this.root.innerHTML = ''\n this.items = []\n this.item = null\n }\n\n /**\n * Reverse the list order\n * @return {Object} The class instance\n */\n reverse () {\n this.list.reverse()\n this.update(this.list)\n\n return this\n }\n}\n\nexport default List\n", "'use strict'\n\n// import Component from './component';\nimport create from './element/create'\nimport classify from './component/classify'\nimport css from './module/css'\nimport insert from './element/insert'\n\nvar defaults = {\n prefix: 'material',\n class: 'progress',\n tag: 'div',\n progress: '0%',\n circular: `<svg class=\"progress\" width=\"65px\" height=\"65px\" viewBox=\"0 0 66 66\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle class=\"path\" fill=\"none\" stroke-width=\"6\" stroke-linecap=\"round\" cx=\"33\" cy=\"33\" r=\"30\"></circle>\n </svg>`\n}\n\n/**\n * The class represents an item ie for list\n *\n * @class\n * @return {Object} The class instance\n * @example new Item(object);\n */\nclass Spinner {\n /**\n * init\n * @return {Object} The class options\n */\n constructor (options) {\n this.init(options)\n this.build()\n\n return this\n }\n\n /**\n * [init description]\n * @param {?} options [description]\n * @return {?} [description]\n */\n init (options) {\n // merge options\n this.options = Object.assign({}, defaults, options || {})\n\n // define class\n\n // assign modules\n Object.assign(this, insert)\n }\n\n /**\n * Build function for item\n * @return {Object} This class instance\n */\n build (options) {\n this.root = create(this.options.tag)\n classify(this.root, this.options)\n\n if (this.options.type === 'circular') {\n this.root.innerHTML = this.options.circular\n } if (this.options.type === 'indeterminate') {\n this.bar = create('div', 'bar')\n insert(this.bar, this.root)\n } else {\n this.bar = create('div', 'bar')\n insert(this.bar, this.root)\n\n this.set(this.options.progress)\n }\n\n if (this.options.container) {\n insert(this.root, this.options.container)\n }\n\n return this\n }\n\n set (progress) {\n this.bar.setAttribute('style', 'width: ' + progress)\n }\n};\n\nexport default Spinner\n", "'use strict'\n\nimport init from './component/init'\nimport build from './element/build'\nimport control from './component/control'\n\nimport events from './component/events'\nimport insert from './element/insert'\nimport offset from './element/offset'\nimport classify from './component/classify'\n// import control from './control';\nimport attach from './module/attach'\nimport css from './module/css'\nimport emitter from './module/emitter'\n\nimport icon from './skin/material/icon/pin.svg'\n\nlet defaults = {\n prefix: 'material',\n class: 'slider',\n type: 'control',\n label: null,\n checked: false,\n error: false,\n value: false,\n range: [0, 100],\n step: 5,\n modules: [events, control, emitter, attach],\n mixins: [],\n build: ['$root.material-slider', {},\n ['label$label.slider-label', {}],\n ['input$input'],\n ['$control.slider-control', {},\n ['$track.slider-track', {},\n ['canvas$canvas.slider-canvas', {}],\n ['$trackvalue.slider-track-value', {}],\n ['$knob.slider-knob', {}],\n ['$marker.slider-marker', {},\n ['$value.slider-value', {}]\n ]\n ]\n ]\n ],\n events: [\n ['element.input.focus', 'focus'],\n ['element.input.blur', 'blur']\n ]\n}\n\n/**\n * Switch class\n * @class\n * @extends Control\n */\nclass Slider {\n /**\n * init\n * @return {Object} The class options\n */\n constructor (options) {\n this.options = Object.assign({}, defaults, options || {})\n\n this.init(this.options)\n this.build(this.options)\n this.attach()\n\n return this\n }\n\n /**\n * Constructor\n * @param {Object} options The class options\n * @return {Object} This class instance\n */\n init (options) {\n init(this)\n\n return this\n }\n\n /**\n * build method\n * @return {Object} The class instance\n */\n build () {\n this.element = build(this.options.build)\n this.root = this.element.root\n\n classify(this.root, this.options)\n\n if (this.options.container) {\n insert(this.root, this.options.container)\n }\n\n var value = this.element.marker.innerHTML\n this.element.marker.innerHTML = icon + value\n\n if (this.options.type) {\n css.add(this.root, 'type-' + this.options.type)\n }\n\n // init input\n if (this.options.disabled) {\n this.disable(true)\n }\n\n // if (this.options.name) {\n // this.root.dataset.name = name\n // this.element.input.name = name\n // }\n\n // init text\n let text = this.options.label || this.options.text\n this.element.label.textContent = text\n\n this.options.label = this.options.label || this.options.text\n\n this.initTrack()\n\n var delay = 50\n\n setTimeout(() => {\n this.initCanvas()\n }, delay)\n }\n\n initCanvas () {\n window.addEventListener('resize', () => {\n console.log('resize')\n this.drawCanvas()\n }, false)\n this.drawCanvas()\n }\n\n drawCanvas () {\n var width = offset(this.element.track, 'width')\n var height = offset(this.element.track, 'height')\n\n this.element.canvas.width = width\n this.element.canvas.height = height\n\n var context = this.element.canvas.getContext('2d')\n context.lineWidth = 2\n context.beginPath()\n\n context.moveTo(0, (height / 2) + 1)\n context.lineTo(width, (height / 2) + 1)\n context.strokeStyle = 'rgba(34, 31, 31, .26)'\n context.stroke()\n }\n\n /**\n * [buildControl description]\n * @return {?} [description]\n */\n initTrack () {\n this.element.track.addEventListener('mousedown', (ev) => {\n if (this.disabled === true) return\n this.initTrackSize()\n var position = ev.layerX\n this.update(position)\n })\n\n this.element.knob.addEventListener('click', (ev) => {\n ev.stopPropagation()\n })\n\n this.initDragging()\n\n var delay = 100\n\n setTimeout(() => {\n this.setValue(this.options.value)\n }, delay)\n }\n\n initTrackSize () {\n this._tracksize = offset(this.element.track, 'width')\n this._knobsize = offset(this.element.knob, 'width')\n this._markersize = 32 /* offset(this.element.marker, 'width') */\n this._trackleft = offset(this.element.track, 'left')\n return this\n }\n\n /**\n * [initDragging description]\n * @return {?} [description]\n */\n initDragging () {\n this.element.knob.onmousedown = (e) => {\n if (this.disabled === true) return\n\n e.stopPropagation()\n e = e || window.event\n\n css.add(this.element.control, 'dragging')\n\n var start = 0\n var position = 0\n\n if (e.pageX) start = e.pageX\n else if (e.clientX) start = e.clientX\n\n start = this._trackleft\n document.body.onmousemove = (e) => {\n if (this.disabled === true) return\n console.log('mousedown', this.disabled)\n\n e = e || window.event\n var end = 0\n if (e.pageX) end = e.pageX\n else if (e.clientX) end = e.clientX\n\n position = end - start\n this.update(position)\n }\n document.body.onmouseup = (e) => {\n document.body.onmousemove = document.body.onmouseup = null\n\n e = e || window.event\n var end = 0\n if (e.pageX) end = e.pageX\n else if (e.clientX) end = e.clientX\n\n position = end - start\n this.update(position)\n css.remove(this.element.control, 'dragging')\n }\n }\n }\n\n update (position) {\n var size = this._tracksize\n var range = this.options.range[1] - this.options.range[0]\n\n if (position > size) {\n position = size\n }\n\n if (position < 0) {\n position = 0\n }\n\n var ratio = (size / position)\n var value = Math.round((range / ratio)) + this.options.range[0]\n\n if (position === 0) {\n css.remove(this.element.knob, 'notnull')\n }\n\n this.element.knob.style.left = position - this._knobsize / 2 + 'px'\n this.element.trackvalue.style.width = (position) + 'px'\n this.element.marker.style.left = position - this._markersize / 2 + 'px'\n\n this.element.value.textContent = value\n\n this.element.input.value = value\n if (value > this.options.range[0]) {\n css.add(this.element.knob, 'notnull')\n } else {\n css.remove(this.element.knob, 'notnull')\n }\n }\n\n updateValue (value) {\n this.initTrackSize()\n\n var size = offset(this.element.track, 'width')\n size = parseInt(size)\n\n var range = this.options.range[1] - this.options.range[0]\n var ratio = value * 100 / range\n var position = Math.round(size * ratio / 100)\n\n this.update(position)\n\n return this\n }\n\n /**\n * [insert description]\n * @param {?} container [description]\n * @param {?} context [description]\n * @return {?} [description]\n */\n insert (container, context) {\n insert(this.root, container, context)\n }\n\n /**\n * Setter\n * @param {string} prop\n * @param {string} value\n */\n set (prop, value) {\n switch (prop) {\n case 'value':\n this.setValue(value)\n break\n case 'label':\n this.setLabel(value)\n break\n default:\n this.setValue(prop)\n }\n\n return this\n }\n\n /**\n * Getter\n * @param {string} prop\n * @param {string} value\n */\n get (prop) {\n var value\n\n switch (prop) {\n case 'value':\n value = this.getValue()\n break\n case 'name':\n value = this.name\n break\n default:\n return this.getValue()\n }\n\n return value\n }\n\n /**\n * [getValue description]\n * @return {Object} The class instance\n */\n getValue () {\n return this.element.input.value\n }\n\n /**\n * [setValue description]\n * @param {string} value [description]\n */\n setValue (value) {\n value = value || this.options.range[0]\n this.element.input.value = value\n this.updateValue(value)\n }\n\n /**\n * [setLabel description]\n * @param {?} text [description]\n */\n setLabel (text) {\n text = text || this.options.label || this.options.text\n\n if (text !== null && this.label) {\n this.label.textContent = text\n }\n }\n}\n\nexport default Slider\n", "'use strict'\n\n// import control from '../control';\nimport control from './component/control'\nimport build from './element/build'\nimport emitter from './module/emitter'\nimport insert from './component/insert'\nimport attach from './module/attach'\nimport classify from './component/classify'\n\nlet defaults = {\n prefix: 'material',\n class: 'switch',\n type: 'control',\n label: null,\n checked: false,\n error: false,\n value: false,\n disabled: false,\n build: ['$root.material-switch', {},\n ['input$input$switch-input', { type: 'checkbox' }],\n ['span$control.switch-control', {},\n ['span$track.switch-track', {},\n ['span$knob.switch-knob', {}]\n ]\n ],\n ['label$label.switch-label']\n ],\n events: [\n ['element.control.click', 'toggle'],\n ['element.label.click', 'toggle'],\n // for accessibility purpose\n ['element.input.click', 'toggle'],\n ['element.input.focus', 'focus'],\n ['element.input.blur', 'blur']\n // ['element.input.keydown', 'keydown']\n ]\n}\n\n/**\n * Switch class\n * @class\n * @extends Control\n */\nclass Switch {\n /**\n * Constructor\n * @param {Object} options\n - Component options\n * @return {Object} Class instance\n */\n constructor (options) {\n this.init(options)\n this.build()\n this.attach()\n\n return this\n }\n\n /**\n * Constructor\n * @param {Object} options The class options\n * @return {Object} This class instance\n */\n init (options) {\n this.options = Object.assign({}, defaults, options || {})\n Object.assign(this, emitter, control, attach, insert)\n\n this.value = this.options.value\n\n return this\n }\n\n /**\n * build method\n * @return {Object} The class instance\n */\n build () {\n this.element = build(this.options.build)\n this.root = this.element.root\n\n classify(this.root, this.options)\n\n if (this.options.disabled) {\n this.disable()\n }\n\n if (this.value) {\n this.element.input.setAttribute('checked', 'checked')\n }\n\n this.element.input.setAttribute('aria-label', this.options.name)\n\n let text = this.options.label || this.options.text || ''\n\n this.element.label.textContent = text\n this.element.label.setAttribute('for', this.options.name)\n if (this.options.checked) {\n this.check(true)\n }\n\n if (this.options.container) {\n this.insert(this.options.container)\n }\n }\n\n /**\n * Setter\n * @param {string} prop\n * @param {string} value\n * @return {Object} The class instance\n */\n set (prop, value) {\n switch (prop) {\n case 'value':\n this.setValue(value)\n break\n case 'disabled':\n if (value === true) {\n this.disable()\n } else if (value === false) {\n this.enable()\n }\n break\n default:\n this.setValue(prop)\n }\n\n return this\n }\n\n get () {\n return this.value\n }\n\n /**\n * set switch value\n * @param {boolean} value [description]\n */\n getValue () {\n return this.value\n }\n\n /**\n * set switch value\n * @param {boolean} value [description]\n */\n setValue (value) {\n if (value) {\n this.check()\n } else {\n this.unCheck()\n }\n }\n}\n\nexport default Switch\n", "'use strict'\n\nimport create from './component/create'\nimport insert from './component/insert'\nimport emitter from './module/emitter'\n\nimport offset from './element/offset'\n\nimport List from './list'\nimport Button from './button'\n\nconst defaults = {\n prefix: 'material',\n class: 'tabs',\n tag: 'div',\n indicator: {\n prefix: 'material',\n class: 'indicator',\n tag: 'div'\n }\n}\n\nclass Tabs {\n /**\n * Constructor\n * @param {Object} options - Component options\n * @return {Object} Class instance\n */\n constructor (options) {\n this.init(options)\n this.build()\n\n return this\n }\n\n init (options) {\n this.options = Object.assign({}, defaults, options || {})\n Object.assign(this, insert, emitter)\n }\n\n /**\n * Build Method\n * @return {Object} This class instance\n */\n build () {\n this.root = create(this.options)\n\n if (this.options.list) {\n this.list = new List({\n // root: this.root,\n list: this.options.list,\n target: '.material-button',\n height: 600,\n label: 'Flat',\n\n render: (info) => {\n var item\n\n item = new Button({\n name: info.name,\n text: info.text || info.name\n })\n\n return item\n },\n select: (item) => {\n console.log('click')\n this.selected = item\n this.click(item)\n }\n }).insert(this.root)\n }\n\n this.indicator = create(this.options.indicator)\n this.insertElement(this.indicator, this.root)\n\n if (this.options.container) {\n this.insert(this.options.container)\n }\n\n return this\n }\n\n click (item) {\n var or = offset(this.root)\n var o = offset(item)\n this.indicator.setAttribute('style', 'width: ' + o.width + 'px; left: ' + (o.left - or.left) + 'px;')\n this.emit('select', item.dataset.name)\n }\n}\n\nexport default Tabs\n", "'use strict'\n\nimport create from './component/create'\nimport insert from './component/insert'\n\nvar defaults = {\n prefix: 'material',\n class: 'text',\n type: 'default',\n types: {\n default: 'span',\n display4: 'h1',\n display3: 'h1',\n display2: 'h1',\n display1: 'h1',\n headline: 'h1',\n title: 'h2',\n subheading2: 'h3',\n subheading1: 'h4',\n body: 'p',\n body2: 'aside',\n caption: 'span'\n }\n}\n\n/**\n * this class creates a text component\n *\n * @since 0.0.6\n * @category Element\n * @param {HTMLElement} element Related element\n * @param {String} className the className to add\n * grouped values.\n * @returns {HTMLElement} The modified element\n * @example\n *\n * var text = new Text({\n * text: 'hello',\n * type: 'title'\n * }).insert(document.body);\n *\n * // => Hello\n */\nclass Text {\n /**\n * init\n * @return {Object} The class options\n */\n constructor (options) {\n this.init(options)\n this.build()\n\n return this\n }\n\n init (options) {\n this.options = Object.assign({}, defaults, options || {})\n\n Object.assign(this, insert)\n }\n\n /**\n * Build function for item\n * @return {Object} This class instance\n */\n build () {\n this.options.tag = this.options.types[this.options.type]\n\n this.root = create(this.options)\n\n if (this.options.text) {\n this.set(this.options.text)\n }\n\n if (this.options.container) {\n this.insert(this.options.container)\n }\n return this\n }\n\n /**\n * Get or set text value of the element\n * @param {string} value The text to set\n * @returns {*}\n */\n set (value) {\n if (value) {\n if (this.root.innerText) {\n this.root.innerText = value\n } else {\n this.root.textContent = value\n }\n\n return this\n }\n\n return this\n }\n}\n\nexport default Text\n", "'use strict'\n\nimport create from './component/create'\nimport insert from './component/insert'\nimport offset from './element/offset'\n\nconst defaults = {\n prefix: 'material',\n class: 'toolbar',\n tag: 'header'\n}\n\nclass Toolbar {\n /**\n * Constructor\n * @param {Object} options - Component options\n * @return {Object} Class instance\n */\n constructor (options) {\n this.init(options)\n this.build()\n this.attach()\n return this\n }\n\n init (options) {\n this.options = Object.assign({}, defaults, options || {})\n Object.assign(this, insert)\n\n console.log('waterfALL', this.options.waterfall)\n\n this.waterfall = this.options.waterfall\n }\n\n /**\n * Build Method\n * @return {Object} This class instance\n */\n build () {\n this.root = create(this.options)\n\n console.log(this.options.height, this.options.fixed)\n\n if (this.options.height) {\n this.root.style.height = this.options.height + 'px'\n }\n\n if (this.options.fixed) {\n console.log('is-fixed')\n this.root.classList.add('is-fixed')\n }\n\n if (this.options.flexible) {\n this.root.classList.add('is-flexible')\n }\n\n // if (this.options.container) {\n // this.insert(this.options.container)\n // }\n\n return this\n }\n\n attach () {\n this.root.addEventListener('DOMNodeInserted', (e) => {\n var textNode = e.target\n if (textNode !== this.root) return\n\n var size = this.size = offset(this.root, 'height')\n\n var view = this.view = this.root.parentNode\n\n console.log('view', view)\n\n var padding = window.getComputedStyle(view)['padding-top']\n // console.log('paddingTop', padding)\n // if (!padding) padding = window.getComputedStyle(this.root.parentNode, 'padding')\n // console.log('padding', padding)\n\n padding = parseInt(padding, 10)\n // size = parseInt(size, 10)\n\n this.padding = padding\n\n // console.log(' toolbar inserted in', size, 'padding', padding)\n var ptop = this.ptop = size + padding\n\n // console.log('ptop', ptop)\n\n if (document.body == view) {\n console.log('toolbar container body')\n this.root.classList.add('toolbar-body')\n }\n\n view.setAttribute('style', 'padding-top: ' + ptop + 'px')\n\n this.scroll(view)\n })\n }\n\n /**\n * Setter\n * @param {string} prop\n * @param {string} value\n * @return {Object} The class instance\n */\n set (prop, value) {\n switch (prop) {\n case 'minimize':\n this.root.setAttribute('style', 'height: 64px')\n break\n case 'value':\n this.setValue(value)\n break\n case 'label':\n this.setLabel(value)\n break\n default:\n this.check(prop)\n }\n\n return this\n }\n\n scroll (view) {\n // console.log('initScroll')\n\n var isBody = false\n\n var element = view\n\n this.scrolling = view\n\n if (view === document.body) {\n isBody = true\n element = document\n this.scrolling = document.body\n }\n\n view.classList.add()\n\n element.addEventListener('scroll', (e) => {\n var scrollTop\n if (isBody) {\n scrollTop = (document.documentElement ||\n document.body.parentNode ||\n document.body).scrollTop\n } else {\n scrollTop = view.scrollTop\n }\n\n if (scrollTop > 0) {\n this.root.classList.add('is-scrolled')\n } else {\n this.root.classList.remove('is-scrolled')\n }\n\n // console.log('scroll', scrollTop)\n\n this.update(e, scrollTop)\n })\n }\n\n update (e, scrollTop) {\n if (this.options.fixed) { this.fixed(e, scrollTop) }\n if (this.options.flexible) { this.flexible(e, scrollTop) }\n }\n\n flexible (e, scrollTop) {\n var size = offset(this.root, 'height')\n // console.log('flexible', size, this.root.offsetHeight, scrollTop)\n // if (scrollTop < this.size) {\n //\n var height = '64'\n if (size < height) {\n this.root.style.height = height + 'px'\n } else {\n height = this.size - scrollTop\n if (height < 64) height = 64\n this.root.style.height = height + 'px'\n }\n\n // console.log('scroll', this.root.style.top, scrollTop)\n\n // if (scrollTop > 50) {\n // this.root.style.trans = scrollTop + 'px'\n // } else {\n // this.root.style.top = scrollTop + 'px'\n // }\n // }\n // this.root.style.top = scrollTop + 'px'\n // this.root.style.height = this.size - scrollTop\n // } else {\n // console.log('size scroll', this.size, scrollTop)\n\n // this.root.style.height = this.size - scrollTop + 'px'\n // // this.root.style.top = scrollTop + 'px'\n // }\n }\n\n fixed (e, scrollTop) {\n if (scrollTop > 0) {\n this.root.style.transform = 'translateY(' + scrollTop + 'px)'\n } else {\n this.root.style.transform = 'translateY(' + scrollTop + 'px)'\n }\n }\n\n waterfall$ (e) {}\n}\n\nexport default Toolbar\n", "const has = (element, className) => {\n if (!element || !className) return false\n return !!element.className.match(new RegExp(`(\\\\s|^)${className}(\\\\s|$)`))\n}\n\nconst add = (element, className) => {\n if (!element || !className) return\n\n const sanitizedClassName = className.trim().replace(/\\s+/g, ' ')\n const classNames = sanitizedClassName.split(' ')\n\n for (let cn of classNames) {\n if (!has(element, cn)) {\n element.classList.add(cn)\n }\n }\n return element\n}\n\nconst remove = (element, className) => {\n if (!element || !className) return\n element.classList.remove(className)\n return element\n}\n\nconst toggle = (element, className) => {\n if (has(element, className)) {\n remove(element, className)\n } else {\n add(element, className)\n }\n return element\n}\n\nexport default { has, add, remove, toggle }\n", "console.log('demo')\n\nimport {\n Button,\n Component,\n Container,\n Card,\n Checkbox,\n Dialog,\n Divider,\n Drawer,\n Form,\n Image,\n List,\n Item,\n Progress,\n Menu,\n Tabs,\n Slider,\n Switch,\n Text,\n Textfield,\n Toolbar,\n Layout\n} from 'material'\n\nimport css from '../src/module/css'\n\n// import Material from 'material';\n// console.log('Material', Material);\n\nimport iconMenu from './icon/navi.svg'\nimport iconMore from './icon/more.svg'\nimport iconApps from './icon/apps.svg'\nimport iconStar from './icon/star.svg'\nimport iconHappy from './icon/happy.svg'\n\nconsole.log('log')\nvar list = [{\n text: 'One',\n name: 'one'\n}, {\n text: 'Two',\n name: 'two'\n}, {\n text: 'Three',\n name: 'three'\n}, {\n text: 'Four',\n name: 'four'\n}]\n\ndocument.addEventListener('DOMContentLoaded', function () {\n var layout = new Layout([Component, 'demo', { display: 'flex', direction: 'vertical' },\n [Component, 'head', { display: 'flex', direction: 'horizontal' },\n [Toolbar, 'toolbar', { flex: 1, display: 'flex', direction: 'horizontal' },\n [Button, 'menu-navi', { icon: iconMenu, type: 'action' }],\n [Text, 'app-title', { text: 'Material' }]\n ],\n [Toolbar, 'desk', { display: 'flex', direction: 'horizontal' },\n [Button, 'menu-more', { icon: iconMore, type: 'action' }]\n ]\n ],\n [Drawer, 'navi', { css: 'drawer-temporary', type: 'temporary', size: '280px' },\n [Component, 'navi-head', { theme: 'dark' },\n [Text, 'app-title', { text: 'Components' }]\n ],\n [List, 'navi-list', { theme: 'dark' }]\n ],\n [Tabs, 'tabs', { color: 'primary', list: list, flex: 'none' }],\n [Container, 'body', { flex: '1' },\n [Container, 'container-components', { },\n [Text, 'text', { text: 'Components', type: 'title' }]\n ],\n // Buttons\n [Card, 'buttons', { },\n [Toolbar, 'toolbar-buttons', {},\n [Text, 'buttons-title', { text: 'Buttons'}]\n ],\n [Container, 'button-body', {},\n [Button, 'first', { text: 'Flat' }],\n [Button, 'second', { text: 'Raised', type: 'raised', color: 'primary' }],\n [Button, 'third', { icon: iconStar, type: 'action' }],\n [Button, 'fourth', { icon: iconStar, text: 'text' }]\n ]\n ],\n\n // Buttons\n [Card, 'buttons', { },\n [Toolbar, 'toolbar-buttons', {},\n [Text, 'buttons-title', { text: 'Floating Buttons'}]\n ],\n [Container, 'button-body', {},\n [Button, 'fifth', { icon: iconStar, type: 'floating', color: 'primary' }],\n [Button, 'six', { icon: iconHappy, type: 'floating', style: 'mini', color: 'primary' }],\n [Button, 'fifth', { icon: iconStar, type: 'floating', color: 'secondary' }],\n [Button, 'six', { icon: iconHappy, type: 'floating', style: 'mini', color: 'secondary' }]\n ]\n ],\n [Card, 'checkboxes', { },\n [Toolbar, 'toolbar', {},\n [Text, 'checkbox-title', { text: 'Checkboxes'}]\n ],\n [Container, 'checkbox-body', {},\n [Checkbox, 'checkbox', { text: 'Checkbox' }],\n [Checkbox, 'checkbox-checked', { text: 'Checked', checked: true }],\n [Checkbox, 'checkbox-disabled', { text: 'Disabled', disabled: true }]\n ]\n ],\n [Card, 'switches', { },\n [Toolbar, 'switch-toolbar', {},\n [Text, 'switch-title', { text: 'Switches'}]\n ],\n [Container, 'switch-body', {},\n [Switch, 'switch', { text: 'Switch' }],\n [Switch, 'switch-checked', { text: 'Checked', checked: true }],\n [Switch, 'switch-disabled', { text: 'Disabled', disabled: true }]\n ]\n ],\n [Card, 'progress indicators', { },\n [Toolbar, 'progress-toolbar', {},\n [Text, 'progress-title', { text: 'Progress indicators'}]\n ],\n [Container, 'progress-body', {},\n [Progress, 'progress', { progress: '60%' }],\n [Progress, 'progress-indeterminate', { type: 'indeterminate' }]\n ]\n ],\n [Card, 'sliders', { },\n [Toolbar, 'slider-toolbar', {},\n [Text, 'slider-title', { text: 'Sliders'}]\n ],\n [Container, 'slider-body', {},\n [Slider, 'slider', { text: 'Slider' }],\n [Slider, 'slider-checked', { text: 'Checked', checked: true }],\n [Slider, 'slider-disabled', { text: 'Disabled', disabled: true }]\n ]\n ]\n ]\n ], document.body)\n\n var moreButton = layout.get('menu-more').on('click', (e) => {\n layout.get('more-menu').show(e)\n })\n\n layout.get('body').root.addEventListener('scroll', (e) => {\n if (layout.get('body').root.scrollTop > 0) {\n css.add(layout.get('tabs').root, 'head-shadow')\n } else {\n css.remove(layout.get('tabs').root, 'head-shadow')\n }\n })\n\n var naviMenu = layout.get('menu-navi')\n\n naviMenu.on('click', (e) => {\n layout.get('navi').open()\n })\n})\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["create", "create_default", "remove", "label", "create_default", "e", "e", "offset", "instance", "set", "e", "create_default", "destroy", "instance", "instance", "e", "f", "defaults", "e", "insert_default", "defaults", "insert_default", "e", "defaults", "insert_default", "defaults", "label", "create_default", "init", "set", "get", "remove", "create_default", "defaults", "e", "checkbox_default", "defaults", "insert_default", "init", "instance", "modules", "defaults", "create_default", "e", "defaults", "insert_default", "defaults", "e", "list", "defaults", "create_default", "defaults", "e", "defaults", "insert_default", "defaults", "insert_default", "defaults", "insert_default", "defaults", "insert_default", "e", "has", "add", "remove", "toggle", "css_default", "list", "checkbox_default", "e", "css_default"]
|
|
7
|
+
}
|