{"version":3,"file":"loader.bundle.js","sources":["../src/layout.js","../src/utils.js","../src/loader.js"],"sourcesContent":["import {Tag} from 'main.core';\n\nexport default function layout()\n{\n\tconst container = Tag.render`\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t`;\n\n\tconst circle = container.querySelector('.main-ui-loader-svg-circle');\n\n\treturn {container, circle};\n}","import {Type, Event, Tag, Dom} from 'main.core';\n\n\nexport function show(element)\n{\n\tif (!Type.isDomNode(element))\n\t{\n\t\treturn Promise.reject(new Error('element is not Element'));\n\t}\n\n\treturn new Promise((resolve) => {\n\t\tif (\n\t\t\telement.dataset.isShown === 'false'\n\t\t\t|| !element.dataset.isShown\n\t\t)\n\t\t{\n\t\t\tconst handler = (event) => {\n\t\t\t\tif (event.animationName === 'showMainLoader')\n\t\t\t\t{\n\t\t\t\t\tEvent.unbind(element, 'animationend', handler);\n\t\t\t\t\tresolve(event);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tEvent.bind(element, 'animationend', handler);\n\n\t\t\tTag.attrs(element)`\n\t\t\t\tdata-is-shown: true;\n\t\t\t`;\n\n\t\t\tTag.style(element)`\n\t\t\t\tdisplay: null;\n\t\t\t`;\n\n\t\t\tDom.removeClass(element, 'main-ui-hide');\n\t\t\tDom.addClass(element, 'main-ui-show');\n\t\t}\n\t});\n}\n\nexport function hide(element)\n{\n\tif (!Type.isDomNode(element))\n\t{\n\t\treturn Promise.reject(new Error('element is not Element'));\n\t}\n\n\treturn new Promise((resolve) => {\n\t\tif (element.dataset.isShown === 'true')\n\t\t{\n\t\t\tconst handler = function handler(event) {\n\t\t\t\tif (event.animationName === 'hideMainLoader')\n\t\t\t\t{\n\t\t\t\t\tTag.style(element)`\n\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t`;\n\n\t\t\t\t\tEvent.unbind(element, 'animationend', handler);\n\t\t\t\t\tresolve(event);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tEvent.bind(element, 'animationend', handler);\n\n\t\t\tTag.attrs(element)`\n\t\t\t\tdata-is-shown: false;\n\t\t\t`;\n\n\t\t\tDom.removeClass(element, 'main-ui-show');\n\t\t\tDom.addClass(element, 'main-ui-hide');\n\t\t}\n\t});\n}","import {\n\ttype,\n\tappend,\n\tremove,\n\taddClass,\n\tremoveClass,\n} from 'main.core';\nimport layout from './layout';\nimport {show, hide} from './utils';\nimport './loader.css';\n\nconst defaultOptions = {\n\tsize: 110,\n};\n\nconst STATE_READY = 'ready';\nconst STATE_SHOWN = 'shown';\nconst STATE_HIDDEN = 'hidden';\n\nexport class Loader\n{\n\tdata = layout();\n\tstate = STATE_READY;\n\tcurrentTarget = null;\n\n\tconstructor(options = {})\n\t{\n\t\tconst currentOptions = {...defaultOptions, ...options};\n\t\tthis.currentTarget = currentOptions.target;\n\t\tthis.setOptions(currentOptions);\n\t}\n\n\tget layout()\n\t{\n\t\treturn this.data.container;\n\t}\n\n\tget circle()\n\t{\n\t\treturn this.data.circle;\n\t}\n\n\tcreateLayout()\n\t{\n\t\treturn this.layout;\n\t}\n\n\tshow(target = null)\n\t{\n\t\treturn new Promise(() => {\n\t\t\tconst targetElement = target || this.currentTarget;\n\n\t\t\tif (\n\t\t\t\ttype.isDomNode(targetElement)\n\t\t\t\t&& targetElement !== this.layout.parentNode\n\t\t\t)\n\t\t\t{\n\t\t\t\tthis.currentTarget = targetElement;\n\t\t\t\tappend(this.layout, targetElement);\n\t\t\t}\n\n\t\t\tif (this.state !== STATE_SHOWN)\n\t\t\t{\n\t\t\t\tthis.state = STATE_SHOWN;\n\t\t\t\treturn show(this.layout);\n\t\t\t}\n\n\t\t\treturn false;\n\t\t});\n\t}\n\n\thide()\n\t{\n\t\treturn new Promise(() => {\n\t\t\tif (this.state !== STATE_HIDDEN)\n\t\t\t{\n\t\t\t\tthis.state = STATE_HIDDEN;\n\t\t\t\treturn hide(this.layout);\n\t\t\t}\n\n\t\t\treturn false;\n\t\t});\n\t}\n\n\tisShown()\n\t{\n\t\treturn this.state === STATE_SHOWN;\n\t}\n\n\tdestroy()\n\t{\n\t\tremove(this.layout);\n\t}\n\n\tsetOptions({target, size, color, offset, mode, strokeWidth})\n\t{\n\t\tconst layoutStyles = new Map();\n\t\tconst circleStyles = new Map();\n\n\t\tif (type.isDomNode(target))\n\t\t{\n\t\t\tthis.currentTarget = target;\n\t\t}\n\n\t\tif (type.isNumber(size))\n\t\t{\n\t\t\tlayoutStyles.set('width', `${size}px`);\n\t\t\tlayoutStyles.set('height', `${size}px`);\n\t\t}\n\n\t\tif (type.isString(color))\n\t\t{\n\t\t\tcircleStyles.set('stroke', color);\n\t\t}\n\n\t\tif (type.isObjectLike(offset))\n\t\t{\n\t\t\tconst prefix = /^inline$|^custom$/.test(mode) ? '' : 'margin-';\n\n\t\t\tif (type.isString(offset.top))\n\t\t\t{\n\t\t\t\tlayoutStyles.set(`${prefix}top`, offset.top);\n\t\t\t}\n\n\t\t\tif (type.isString(offset.left))\n\t\t\t{\n\t\t\t\tlayoutStyles.set(`${prefix}left`, offset.left);\n\t\t\t}\n\t\t}\n\n\t\tif (mode === 'inline')\n\t\t{\n\t\t\taddClass(this.layout, 'main-ui-loader-inline');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tremoveClass(this.layout, 'main-ui-loader-inline');\n\t\t}\n\n\t\tif (mode === 'custom')\n\t\t{\n\t\t\taddClass(this.layout, 'main-ui-loader-custom');\n\t\t\tremoveClass(this.layout, 'main-ui-loader-inline');\n\t\t}\n\n\t\tif (type.isNumber(strokeWidth))\n\t\t{\n\t\t\tcircleStyles.set('stroke-width', strokeWidth);\n\t\t}\n\n\t\tlayoutStyles.forEach((value, key) => {\n\t\t\tthis.layout.style[key] = value;\n\t\t});\n\n\t\tcircleStyles.forEach((value, key) => {\n\t\t\tthis.circle.style[key] = value;\n\t\t});\n\t}\n}\n"],"names":["layout","container","Tag","render","circle","querySelector","show","element","Type","isDomNode","Promise","reject","Error","resolve","dataset","isShown","handler","event","animationName","Event","unbind","bind","attrs","style","Dom","removeClass","addClass","hide","defaultOptions","size","STATE_READY","STATE_SHOWN","STATE_HIDDEN","Loader","options","currentOptions","currentTarget","target","setOptions","targetElement","type","parentNode","append","state","remove","color","offset","mode","strokeWidth","layoutStyles","Map","circleStyles","isNumber","set","isString","isObjectLike","prefix","test","top","left","forEach","value","key","data"],"mappings":"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"}