{"version":3,"file":"toruskit.js","sources":["../../../../../src/js/namespace.js","../../../../../src/js/css.js","../../../../../src/js/util.js","../../../../../src/js/group.js","../../../../../src/js/parent.js","../../../../../src/js/main.js","../../../../../src/js/slider.js","../../../../../src/js/bg.js"],"sourcesContent":["/**\n * ------------------------------------------------------------------------\n * Global namespace\n * ------------------------------------------------------------------------\n */\n\nvar TORUS = TORUS || {};\n\nexport default TORUS;","/**\n * ------------------------------------------------------------------------\n * Predefined CSS properties. Example: `[data-tor=\"bg-opacity()\"]`\n * ------------------------------------------------------------------------\n */\n\nconst CSS_PREDEFINED_PROPERTIES = [\n \"bg\",\n \"bg-opacity\",\n \"bg-lighten\",\n \"bg-darken\",\n \"bg-brightness\",\n \"block\",\n \"border\",\n \"border-opacity\",\n \"blur\",\n \"blur.to\",\n \"blur.from\",\n \"clip\",\n \"push.up\",\n \"push.down\",\n \"push.left\",\n \"push.right\",\n \"pull.up\",\n \"pull.left\",\n \"pull.right\",\n \"pull.down\",\n \"fade.in\",\n \"fade.out\",\n \"fade.to\",\n \"fade.from\",\n \"opacity\",\n \"reveal\",\n \"reveal.hide\",\n \"rotate.to\",\n \"rotate.from\",\n \"rotateX.to\",\n \"rotateX.from\",\n \"rotateY.to\",\n \"rotateY.from\",\n \"scale.to\",\n \"scale.from\",\n \"scaleX.to\",\n \"scaleX.from\",\n \"scaleY.to\",\n \"scaleY.from\",\n \"shadow\",\n \"svg-shadow\",\n \"shadow-offset.down\",\n \"shadow-offset.up\",\n \"shadow-offset.left\",\n \"shadow-offset.right\",\n \"shadow-intensity\",\n \"shadow-color\",\n \"skew.to\",\n \"skew.from\",\n \"skewX.to\",\n \"skewX.from\",\n \"skewY.to\",\n \"skewY.from\",\n \"text\",\n \"text-opacity\",\n \"delay\",\n \"duration\",\n \"top\",\n \"bottom\",\n \"up\",\n \"down\",\n \"left\",\n \"right\",\n \"shift.up\",\n \"shift.right\",\n \"shift.down\",\n \"shift.left\",\n \"originX\",\n \"originY\",\n \"originZ\",\n \"wait\",\n \"place.top\",\n \"place.right\",\n \"place.bottom\",\n \"place.left\",\n];\n\n/**\n * ------------------------------------------------------------------------\n * Differents\n * ------------------------------------------------------------------------\n */\n\nconst CSS_DIFFERENTS = {\n activeValue: {\n \"block\": \"var(--tor-block);\",\n \"fade.in\": \"0;\",\n \"fade.out\": \"0;\",\n \"clip\": \"var(--tor-clip-idle);\",\n \"block\": \"var(--tor-block-idle);\",\n \"reveal\": \"var(--tor-reveal-idle);\",\n \"reveal.hide\": \"var(--tor-reveal-idle);\",\n },\n additionalRules: {\n \"block\": \"--tor-block-scale: var(--tor-block-scale-idle); --tor-clip-delay: calc(var(--tor-duration-all) + var(--tor-delay-all, 0ms)); --tor-block-delay: var(--tor-delay-all, 0ms); --tor-block: var(--tor-block-idle);\",\n // \"block\": \"--tor-block-scale: var(--tor-block-scale-idle);\",\n \"reveal\": \"--tor-translateX: var(--tor-translateX-idle); --tor-translateY: var(--tor-translateY-idle);\",\n \"reveal.hide\": \"--tor-translateX: var(--tor-translateX-idle); --tor-translateY: var(--tor-translateY-idle);\",\n },\n alias: {\n \"blur*\": \"blur\",\n \"push*\": \"push-pull\",\n \"pull*\": \"push-pull\",\n \"shadow-offset*\": \"shadow-offset\",\n },\n calc: {\n \"push.up\": -1,\n \"push.left\": -1,\n \"pull.down\": -1,\n \"pull.right\": -1,\n \"shadow-offset.up\": -1,\n \"shadow-offset.left\": -1,\n \"shift.up\": -1,\n \"shift.left\": -1,\n },\n propertyAlias: {\n \"bg\": \"background-color\",\n \"bg-lighten\": \"--tor-bg-lightness\",\n \"bg-darken\": \"--tor-bg-lightness\",\n \"bg-brightness\": \"--tor-bg-lightness\",\n \"border\": \"border-color\",\n \"push.up\": \"--tor-translateY\",\n \"push.down\": \"--tor-translateY\",\n \"push.left\": \"--tor-translateX\",\n \"push.right\": \"--tor-translateX\",\n \"pull.up\": \"--tor-translateY\",\n \"pull.down\": \"--tor-translateY\",\n \"pull.left\": \"--tor-translateX\",\n \"pull.right\": \"--tor-translateX\",\n \"fade*\": \"--tor-opacity\",\n \"shadow\": \"box-shadow\",\n \"svg-shadow\": \"filter\",\n \"shadow-offset.down\": \"--tor-shadow-offsetY\",\n \"shadow-offset.up\": \"--tor-shadow-offsetY\",\n \"shadow-offset.left\": \"--tor-shadow-offsetX\",\n \"shadow-offset.right\": \"--tor-shadow-offsetX\",\n \"text\": \"color\",\n \"shift.up\": \"--tor-shiftY\",\n \"shift.down\": \"--tor-shiftY\",\n \"shift.left\": \"--tor-shiftX\",\n \"shift.right\": \"--tor-shiftX\",\n \"place.top\": \"--tor-top\",\n \"place.right\": \"--tor-right\",\n \"place.bottom\": \"--tor-bottom\",\n \"place.left\": \"--tor-left\",\n },\n cssNot: [\n \"blur.from\",\n \"block\",\n \"pull*\",\n \"clip\",\n \"fade.in\",\n \"reveal\",\n \"rotate.from\",\n \"rotateX.from\",\n \"rotateY.from\",\n \"scale.from\",\n \"scaleX.from\",\n \"scaleY.from\",\n \"skew.from\",\n \"skewX.from\",\n \"skewY.from\",\n ],\n percentage: [\n \"bg-opacity\",\n \"bg-brightness\",\n \"fade.to\",\n \"fade.from\",\n \"opacity\",\n \"scale*\",\n \"scaleX*\",\n \"scaleY*\",\n \"text-opacity\",\n ],\n}\n\n/**\n * ------------------------------------------------------------------------\n * Create object from `CSS_PREDEFINED_PROPERTIES`, compare with `CSS_DIFFERENTS`\n * and return the new object\n * ------------------------------------------------------------------------\n */\n\nconst createPredefinedCSSObject = () => {\n const cssProperties = {};\n\n for (const propertyName of CSS_PREDEFINED_PROPERTIES) {\n cssProperties[propertyName] = {};\n\n /** If property has `.` dot, extract everything before. Example: `fade.out` */\n let exec = /^(.*?)\\./.exec(propertyName);\n /** Assign extracted `exec` or default `property` */\n let item = exec ? exec[1] : propertyName;\n /** Add to object */\n cssProperties[propertyName].propertyAlias = `--tor-${item}`;\n\n addToPredefinedObject(\"propertyAlias\", propertyName);\n addToPredefinedObject(\"activeValue\", propertyName);\n addToPredefinedObject(\"additionalRules\", propertyName);\n addToPredefinedObject(\"alias\", propertyName);\n addToPredefinedObject(\"calc\", propertyName);\n addToPredefinedObject(\"percentage\", propertyName);\n addToPredefinedObject(\"cssNot\", propertyName);\n }\n\n function addToPredefinedObject(object, propertyName) {\n let isArray = CSS_DIFFERENTS[object] instanceof Array ? true : false;\n\n for (const [key, value] of Object.entries(CSS_DIFFERENTS[object])) {\n let itemKey = isArray ? value : key;\n let itemValue = isArray ? true : value;\n\n /** If CSS_DIFFERENTS definition contains a `*` wildcard */\n if (/\\*/g.test(itemKey)) {\n let matchKey = /^(.*?)\\*/.exec(itemKey)[1];\n let matchName = /^(.*?)\\./.exec(propertyName);\n\n if (matchName && matchKey === matchName[1]) {\n cssProperties[propertyName][object] = itemValue;\n }\n } else if (itemKey === propertyName) {\n cssProperties[propertyName][object] = itemValue;\n }\n }\n }\n\n return cssProperties;\n}\n\nexport {\n createPredefinedCSSObject,\n}","import TORUS from \"./namespace\";\n\nimport {\n createPredefinedCSSObject,\n} from \"./css\";\n\n/**\n * ------------------------------------------------------------------------------------------------------------------------------------------------\n * WINDOW object\n * ------------------------------------------------------------------------------------------------------------------------------------------------\n */\n\nconst WINDOW = {\n computedStyle: window.getComputedStyle(document.documentElement, null),\n height: window.innerHeight || document.documentElement.clientHeight,\n width: window.innerWidth || document.documentElement.clientWidth,\n resolution: {},\n resizing: false,\n scroll: {\n running: false,\n tick: 0,\n y: 0,\n x: 0,\n },\n mouse: {\n running: false,\n tick: 0,\n x: 0,\n y: 0,\n },\n idleCallback: window.requestIdleCallback ? true : false,\n isChrome: !!window.chrome,\n isUnsupportedSVG: !!window.chrome || /AppleWebKit/i.test(navigator.userAgent),\n isSafari: /Safari/i.test(navigator.userAgent) && !/Chrome/i.test(navigator.userAgent),\n mutationDone: false,\n};\n\n/**\n * ------------------------------------------------------------------------------------------------------------------------------------------------\n * UTILITIES\n * ------------------------------------------------------------------------------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Get current resolution\n * ------------------------------------------------------------------------\n */\n\nconst getCurrentResolution = () => {\n for (const [name, value] of Object.entries(CSS_BREAKPOINTS)) {\n if (WINDOW.width >= value.value) {\n WINDOW.resolution.name = name;\n WINDOW.resolution.value = value.value;\n break;\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Check if given resolution matches the current breakpoint\n * ------------------------------------------------------------------------\n */\n\nconst isCurrentResolution = (value) => {\n return WINDOW.resolution.value >= CSS_BREAKPOINTS[value].value;\n}\n\n/**\n * ------------------------------------------------------------------------\n * Create iterable elements from given parameter\n * ------------------------------------------------------------------------\n */\n\nconst getIterableElement = (elements) => {\n if (typeof elements === \"string\") {\n elements = [...document.querySelectorAll(elements)];\n }\n\n if (elements instanceof Node) {\n elements = [elements];\n }\n\n if (elements instanceof NodeList) {\n elements = [].slice.call(elements);\n }\n\n if (elements instanceof Set) {\n elements = [...elements];\n }\n\n if (!elements.length) {\n return false;\n }\n\n if (elements.length) {\n return elements;\n }\n\n else {\n return false;\n }\n};\n\n/**\n * ------------------------------------------------------------------------\n * Initialize Class\n * ------------------------------------------------------------------------\n */\nconst initClass = (params) => {\n\n if (!params.elements) return;\n\n async function loop() {\n let promise;\n for (const i in params.elements) {\n let element = params.elements[i];\n\n if (!element.TORUS) {\n element.TORUS = element.TORUS || {};\n }\n if (!element.TORUS[params.name]) {\n element.TORUS[params.name] = new TORUS[params.name](element, params.options);\n promise = await element.TORUS[params.name];\n } else {\n element.TORUS[params.name].refresh && element.TORUS[params.name].refresh();\n promise = await element.TORUS[params.name].refresh;\n }\n }\n\n return promise;\n }\n\n loop();\n};\n\n\n/**\n * ------------------------------------------------------------------------\n * Replace all with regex\n * ------------------------------------------------------------------------\n */\n\nString.prototype.replaceAll = function (value) {\n let replacedString = this;\n for (let x in value) {\n replacedString = replacedString.replace(new RegExp(x, \"g\"), value[x]);\n }\n return replacedString;\n};\n\n/**\n * ------------------------------------------------------------------------\n * Optimize given attributes\n * ------------------------------------------------------------------------\n */\n\nconst optimizeAttribute = (attribute, shortcuts) => {\n if (!attribute) {\n return \"\";\n }\n\n /**\n * Find `@parallax` and `@tilt` shortcuts\n */\n\n if (shortcuts) {\n shortcuts = attribute.match(/(scroll|mouse|mouseX|mouseY|sensorX|sensorY)(.*?):(.*?)(@parallax|@tilt)\\(.*?\\)/g);\n\n if (shortcuts) {\n for (const shortcut of shortcuts) {\n let replace = /@(.*?)\\)/.exec(shortcut)[0];\n let value = /\\((.*?)\\)/.exec(replace)[1];\n\n let transforms = {\n \"@parallax\": {\n name: \"translate\",\n method: \"continuous\",\n unit: \"px\",\n events: {\n mouseX: \"X\",\n mouseY: \"Y\",\n scroll: \"Y\",\n },\n },\n \"@tilt\": {\n name: \"rotate\",\n method: \"self-continuous\",\n unit: \"deg\",\n events: {\n mouseX: \"Y\",\n mouseY: \"X\",\n },\n },\n };\n\n for (const [type, values] of Object.entries(transforms)) {\n for (let [event, axis] of Object.entries(values.events)) {\n let test = new RegExp(`${event}(.*?)${type}`);\n\n /** Only one direction: `mouseX, mouseY, scroll` */\n if (test.test(shortcut)) {\n value = (type === \"@tilt\" && event === \"mouseY\") ? value : value.replace(/\\d*/g, match => match && match.replace(match, `-${match}`));\n attribute = attribute.replace(replace, `@T=${values.name}${axis}(${value}${values.unit};0${values.unit},{method:${values.method}})`);\n }\n else { /** Two directions: `mouse` */\n test = new RegExp(\"^mouse:\");\n\n if (test.test(shortcut)) {\n let arr = [];\n let re = new RegExp(`(mouse)(.*?)(${replace.replace(/\\(/g, \"\\\\(\").replace(/\\)/g, \"\\\\)\")})`, \"g\");\n let exec = re.exec(shortcut);\n\n for (const [event, axis] of Object.entries(values.events)) {\n let symbol = (type === \"@tilt\" && event === \"mouseY\") ? \"\" : \"-\";\n arr.push(exec[1].replace(exec[1], event) + exec[2] + `@T=${values.name}${axis}(${symbol}${value}${values.unit};0${values.unit}, {method:${values.method}})`)\n }\n\n let include = new RegExp(type);\n if (include.test(shortcut)) {\n attribute = attribute.replace(shortcut, arr.join(\" \"));\n }\n }\n }\n\n }\n }\n }\n }\n }\n\n /**\n * Optimize\n */\n\n let optimized = removeSpaces (\n attribute\n .replace(/\\s\\s+/g, \" \")\n .replace(/ $/g, \"\"),\n \"\\\\[ | \\\\]|{ | }| { | : |: | :| ; |; | ;| ,|, | , |\\\\( | \\\\)|\\\\(\\\\( | \\\\(\\\\(| \\\\(\\\\( | \\\\)\\\\)| =>|=> | => | \\\\+| \\\\+ |\\\\+ | ~| ~ |~ | \\\\(\")\n .replace(/\\((.*?)\\)+/g, match => match.replace(/ +/g, \"â–‘\"))\n .replace(/\\\\/g, \"\")\n .replace(/@T=/g, \"@transform=\")\n .replace(/@F=/g, \"@filter=\")\n .trim();\n\n return optimized;\n};\n\n/**\n * ------------------------------------------------------------------------\n * Get resolution and value from\n * ------------------------------------------------------------------------\n */\n\nconst getResolution = (value) => {\n let resolution = null;\n value = value;\n\n if (/(xs|sm|md|lg|xl|xxl)::/g.test(value)) {\n let split = value.split(\"::\");\n resolution = split[0];\n value = split[1];\n }\n\n return {\n resolution,\n value,\n };\n};\n\n/**\n * ------------------------------------------------------------------------\n * Get data from such as `value`, `unit`...\n * ------------------------------------------------------------------------\n */\n\nconst getValueData = (value) => {\n let unit = null;\n\n if (!/^@/.test(value) && /^(-|\\+|\\/\\+|\\/-|\\/~|\\.|.*?)\\d/g.test(value) && !Number(value)) {\n let unitMatch = /(?!\\d)(px|deg|%|cm|mm|in|pt|pc|em|ex|ch|rem|vw|vh|vmin|vmax|ms|s)+/g.exec(value.replace(/\\/+/g, \"\"));\n if (unitMatch) {\n unit = unitMatch[1];\n value = value.replace(unit, \"\");\n }\n }\n\n value = parseValue(value);\n\n if (/^--/.test(value)) {\n value = `var(${value})`;\n }\n\n return {\n value,\n unit,\n };\n};\n\n/**\n * ------------------------------------------------------------------------\n * Helper function that returns CSS `var(--tor-*)` property\n * ------------------------------------------------------------------------\n */\n\nconst getCSSVariable = (params) => {\n let property = params.property;\n let value = params.value;\n let unit = params.unit ? params.unit : \"\";\n let wrap = params.wrap;\n\n let CSSVariable;\n let tempProperty;\n\n /** If value is from predefined ones */\n if (CSS_PREDEFINED_VARIABLES.includes(value)) {\n /** If there is alias for property. Example `push.up` has `push` alias */\n if (CSS_PROPERTIES[property] && CSS_PROPERTIES[property].alias) {\n tempProperty = CSS_PROPERTIES[property].alias ? CSS_PROPERTIES[property].alias : property;\n }\n else {\n tempProperty = property;\n }\n\n /** Check for `calc`. Some properties needs to be calculated in reversed direction. Example: `push.up` has `calc: -1` */\n if (CSS_PROPERTIES[property] && CSS_PROPERTIES[property].calc) {\n CSSVariable = `calc(var(--tor-${tempProperty}-${value}) * ${CSS_PROPERTIES[property].calc})`;\n }\n else {\n CSSVariable = `var(--tor-${tempProperty}-${value})`;\n }\n }\n /** It's a custom value */\n else {\n if (CSS_PROPERTIES[property] && CSS_PROPERTIES[property].calc) {\n CSSVariable = `${value * CSS_PROPERTIES[property].calc}${unit}`;\n }\n else {\n CSSVariable = wrap ? `${wrap}(${value}${unit})` : `${value}${unit}`;\n }\n }\n\n /** If has active value, that has to be added immediately. Example: `fade.in` has `activeValue = 0` (opacity: 0) */\n if (CSS_PROPERTIES[property] && CSS_PROPERTIES[property].activeValue) {\n CSSVariable = CSS_PROPERTIES[property].activeValue;\n }\n\n return CSSVariable;\n}\n\n/**\n * ------------------------------------------------------------------------\n * Expand cluster defined by `[]`\n * Example: active:[opacity(50%) bg(red)] -> active:opacity(50%) active:bg(red)\n * ------------------------------------------------------------------------\n */\n\nconst expandCluster = (attributes) => {\n let matches = attributes.match(/\\b([^\\s]+)\\[(.*?)\\]/g);\n\n if (matches) {\n /** Loop trough all matches */\n for (let match of matches) {\n let attributesArray = [];\n let original = match;\n\n /** Extract options defined by `{<options>}` */\n let options = /,{(?:.(?!,{))+}(?=\\])/g.exec(match);\n\n if (options) {\n match = match.replace(options[0], \"\");\n options = /,{(.*?)}/.exec(options[0])[1];\n }\n\n /** Extract trigger defined by `trigger-name` and colon `:` */\n let trigger = /^(.*?)\\:/.exec(match)[1];\n\n /** Extract everything between curly brackets `{}` and split by the space */\n let contents = /\\[(.*?)\\]+/g.exec(match)[1].split(\" \");\n\n /** Combine every single content (attribute) with its trigger */\n for (let content of contents) {\n /** If has priority defined by `!` */\n if (/^!/.test(content)) {\n attributesArray.push(`!${trigger}:${getContent(options, content.replace(\"!\", \"\"))}`);\n }\n else {\n attributesArray.push(`${trigger}:${getContent(options, content)}`);\n }\n }\n\n /** Replace original attribute cluster with separated attributes */\n attributes = attributes.replace(original, attributesArray.join(\" \"));\n }\n }\n\n function getContent(options, content) {\n if (options) {\n if (/}\\)/.test(content)) {\n content = content.replace(\"})\", `,${options}})`);\n } else {\n content = content.replace(\")\", `,{${options}})`);\n }\n }\n return content;\n }\n\n return attributes;\n}\n\n/**\n * ------------------------------------------------------------------------\n * Parse value. string/integer/float\n * ------------------------------------------------------------------------\n */\n\nconst parseValue = (value) => {\n /** Check if number is float */\n if (/(^(\\d.*?)|^()|^(-\\d.*?))\\.(\\d)+/g.test(value)) {\n value = parseFloat(/((-|\\+|)[0-9]*[.])?[0-9]+/g.exec(value)[0]);\n }\n /** Number is integer */\n else if (/^[-+]?\\d+$/.test(value)) {\n value = parseInt(/[+-]?(\\d)+/g.exec(value)[0]);\n }\n /** Number is string (or contains number with non-number character) */\n else {\n value = value;\n }\n\n return value;\n};\n\n/**\n * ------------------------------------------------------------------------\n * Remove unnecessary spaces and unify them, remove tabs, etc\n * ------------------------------------------------------------------------\n */\n\nconst removeSpaces = (string, replacement) => {\n let oldString = string;\n let newString, re, replacedPattern;\n\n for (const pattern of replacement.split(\"|\")) {\n replacedPattern = pattern.replace(/ /g, \"\");\n re = new RegExp(pattern, \"g\");\n newString = oldString.replace(re, replacedPattern);\n oldString = newString.replace(/\\\\+/g, \"\");\n }\n\n return newString;\n}\n\n/**\n * ------------------------------------------------------------------------\n * Insert generated CSS into <head> stylesheet\n * ------------------------------------------------------------------------\n */\n\nconst insertStylesheet = (css) => {\n STYLE.sheet.insertRule(css, STYLE.sheet.cssRules.length);\n}\n\n/**\n * ------------------------------------------------------------------------\n * Calculate percents based on mouse move\n * ------------------------------------------------------------------------\n */\n\n/**\n *\n * @param {object} _this Object contains element bounds\n * @param {string} origin Origin for mouse position calculation\n * @returns {number}\n */\n\nconst getPercents = (_this, params) => {\n let percents = {};\n\n switch (params.event) {\n /**\n * Mouse\n */\n case \"mouse\": {\n switch (params.options.method) {\n case \"middle\": {\n percents = {\n x: 1 - Math.abs((WINDOW.width / 2 - WINDOW.mouse.x) / (WINDOW.width / 2)),\n y: (1 - Math.abs((WINDOW.height / 2 - WINDOW.mouse.y) / (WINDOW.height / 2))),\n all: (1 - Math.sqrt(Math.pow(WINDOW.width / 2 - WINDOW.mouse.x, 2) + Math.pow(WINDOW.height / 2 - WINDOW.mouse.y, 2)) / Math.sqrt(Math.pow(WINDOW.width / 2, 2) + Math.pow(WINDOW.height / 2, 2))),\n }\n break;\n }\n case \"continuous\": {\n percents = {\n x: (1 - (WINDOW.width / 2 - WINDOW.mouse.x) / (WINDOW.width / 2)),\n y: (1 - (WINDOW.height / 2 - WINDOW.mouse.y) / (WINDOW.height / 2)),\n }\n break;\n }\n case \"self\": {\n let _x = _this && 1 - Math.abs((WINDOW.mouse.x - _this.bounds.centerX) / _this.bounds.maxXSide);\n let _y = _this && 1 - Math.abs((WINDOW.mouse.y - _this.bounds.centerY) / _this.bounds.maxYSide);\n\n percents = {\n x: Math.min(1, Math.max(0, _x)),\n y: Math.min(1, Math.max(0, _y)),\n all: _this && (getMouseHoverPosition(_this, _this.bounds.centerX, _this.bounds.centerY))\n }\n break;\n }\n case \"self-continuous\": {\n percents = {\n x: _this && 1 + ((WINDOW.mouse.x - _this.bounds.centerX) / _this.bounds.maxXSide),\n y: _this && 1 + ((WINDOW.mouse.y - _this.bounds.centerY) / _this.bounds.maxYSide),\n // all: _this && (getMouseHoverPosition(_this, _this.bounds.centerX/_this.bounds.maxXSide, _this.bounds.centerY/_this.bounds.maxYSide))\n }\n break;\n }\n case \"parallax\": {\n percents = {\n x: ((WINDOW.mouse.x - WINDOW.width / 2) / (WINDOW.width / 2)),\n y: ((WINDOW.mouse.y - WINDOW.height / 2) / (WINDOW.height / 2))\n }\n break;\n }\n case \"start\": {\n let _x = WINDOW.mouse.x / WINDOW.width;\n let _y = WINDOW.mouse.y / WINDOW.height;\n\n percents = {\n x: _x,\n y: _y,\n all: (_x + _y) / 2,\n }\n\n break;\n }\n\n }\n break;\n }\n /**\n * Scroll\n */\n case \"scroll\": {\n let start;\n let end;\n let x;\n let y;\n let shiftStart = 0;\n let shiftEnd = 0;\n\n let optionsEnd = params.options.end;\n let optionsStart = params.options.start;\n\n if (optionsEnd === \"middle\") {\n shiftEnd = _this.bounds.height / 2;\n optionsEnd = 50;\n }\n if (optionsStart === \"shifted\") {\n optionsStart = 0;\n shiftStart = _this.bounds.height / 2;\n shiftEnd = 0;\n }\n\n start = (WINDOW.height / 100) * optionsStart + shiftStart;\n end = ((WINDOW.height / 100) * (optionsEnd - optionsStart)) + shiftEnd;\n\n x = null;\n y = (WINDOW.height + WINDOW.scroll.y - _this.bounds.offsetTop - start) / end;\n\n // let usingOffsetAmount = (end || start) ? true : false;\n // // let usingScrollAmount = (afterScrolledStart || afterScrolledEnd) ? true : false;\n // let usingScrollAmount = false;\n\n // if (usingScrollAmount) {\n // if (!afterScrolledStart) {\n // afterEnd = afterScrolledEnd;\n // } else {\n // afterStart = afterScrolledEnd;\n // afterEnd = afterScrolledStart;\n // }\n\n // if (afterScrolledStart && afterScrolledEnd) {\n // afterScrollDifference = afterScrolledEnd - afterScrolledStart;\n // }\n // }\n\n // let _x = null;\n // let _y = (-0.0001 + WINDOW.height - (_this.bounds.offsetTop - WINDOW.scroll.y + offsetA)) / (((WINDOW.height + (end === \"middle\" ? _this.bounds.height : 0)) / 100) * ((end === \"middle\" ? 49.99 : end) - offsetB));\n\n switch (params.options.method) {\n case \"continuous\": {\n percents = {\n x: x,\n y: y,\n }\n break;\n }\n\n case \"regular\": {\n // if (usingOffsetAmount) {\n percents = {\n x: x,\n y: Math.min(1, Math.max(0, y)),\n }\n // }\n // if (usingScrollAmount) {\n // percents = {\n // x: _x,\n // y: (WINDOW.scroll.y - afterEnd) / (afterScrollDifference || (WINDOW.height / 2)),\n // }\n // }\n break;\n }\n }\n break;\n }\n }\n\n return {\n x: Math.round(percents.x * 1000) / 1000,\n y: Math.round(percents.y *Â 1000) / 1000,\n all: Math.round(percents.all *Â 1000) / 1000,\n };\n};\n\n/**\n * ------------------------------------------------------------------------\n * Calculate the longest distance from element center to one of the screen corners\n * ------------------------------------------------------------------------\n */\n\nconst getMaxSide = (_this) => {\n let lt = Math.sqrt(Math.pow(_this.bounds.centerX, 2) + Math.pow(_this.bounds.centerY, 2));\n let lb = Math.sqrt(Math.pow(_this.bounds.centerX, 2) + Math.pow(WINDOW.height - _this.bounds.centerY, 2));\n let rt = Math.sqrt(Math.pow(WINDOW.width - _this.bounds.centerX, 2) + Math.pow(_this.bounds.centerY, 2));\n let rb = Math.sqrt((Math.pow(WINDOW.width - _this.bounds.centerX, 2) + Math.pow(WINDOW.height - _this.bounds.centerY, 2)));\n let ls = _this.bounds.centerX;\n let rs = WINDOW.width - _this.bounds.centerX;\n let ts = _this.bounds.centerY;\n let bs = WINDOW.height - _this.bounds.centerY;\n let corner = Math.max(...[lt, lb, rt, rb]);\n let xSide = Math.max(...[ls, rs]);\n let ySide = Math.max(...[ts, bs]);\n\n return { corner, xSide, ySide };\n};\n\n/**\n * ------------------------------------------------------------------------\n * Get the shortest distance from given centerX, centerY to mouse pointer\n * ------------------------------------------------------------------------\n */\n\nconst getMouseHoverPosition = (_this, centerX, centerY) => {\n return 1 - Math.abs(Math.sqrt(Math.pow(Math.abs(centerX - WINDOW.mouse.x), 2) + Math.pow(Math.abs(centerY - WINDOW.mouse.y), 2)) / _this.bounds.maxDiagonal);\n};\n\n/**\n * ------------------------------------------------------------------------\n * Get scroll values\n * ------------------------------------------------------------------------\n */\n\nconst getWindowScroll = () => {\n WINDOW.scroll.y = window.scrollY;\n WINDOW.scroll.x = window.scrollX;\n}\n\n/**\n * ------------------------------------------------------------------------\n * Run on browser idle\n * ------------------------------------------------------------------------\n */\n\nconst onIdle = (entry, svgRect, parentRect) => {\n let target = svgRect ? entry : entry.target;\n let rect = svgRect ? svgRect : entry.boundingClientRect;\n\n if (WINDOW.idleCallback) {\n requestIdleCallback(() =>Â {\n bounds();\n });\n } else {\n requestAnimationFrame(() => {\n setTimeout(() => {\n bounds();\n }, 0);\n });\n }\n\n function bounds() {\n if (target.TORUS && target.TORUS.Main) {\n if (svgRect) {\n target.TORUS.Main.set.bounds(rect, parentRect);\n } else {\n target.TORUS.Main.set.bounds(rect);\n }\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Return counting value\n * ------------------------------------------------------------------------\n */\n\nconst getCounting = (count, value) => {\n value = value.replace(/\\//g, \"\");\n\n /** Beginning value - defines the starting value of counting */\n let begin = /(.).*?(?=\\+|-|~)/.exec(value);\n if (begin) {\n value = value.replace(begin[0], \"\");\n begin = getValueData(begin[0]).value;\n }\n\n let symbol = /\\+|-|~/.exec(value);\n if (symbol) {\n symbol = symbol[0];\n value = value.replace(symbol, \"\");\n }\n\n let countValue = getValueData(value).value;\n let countUnit = getValueData(value).unit;\n\n switch (symbol) {\n case \"+\":\n count = count;\n break;\n\n case \"-\":\n count = -count;\n break;\n\n case \"~\":\n count = 1;\n countValue = (Math.round(Math.random() * (countValue - 0) + 0));\n break;\n }\n\n\n return `${begin + (count * countValue)}${countUnit ? countUnit : \"\"}`;\n}\n\n/**\n * ------------------------------------------------------------------------\n * Call given function in TORUS element\n * ------------------------------------------------------------------------\n */\n\nconst callFunction = (params) => {\n if (!params.elements) return;\n if (!params.elements.length) return;\n\n for (const element of getIterableElement(params.elements)) {\n if (element.TORUS && element.TORUS[params.object]) {\n element.TORUS[params.object][params.fn](params.argument);\n }\n }\n};\n\n/**\n * ------------------------------------------------------------------------------------------------------------------------------------------------\n * GLOBALS\n * ------------------------------------------------------------------------------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Generated predefined CSS variables\n * ------------------------------------------------------------------------\n */\n\nconst CSS_PREDEFINED_VARIABLES = WINDOW.computedStyle.getPropertyValue(\"--tor-predefined-values\").trim().split(\",\");\n// const CSS_PREDEFINED_VARIABLES = \"blue,indigo,purple,pink,red,orange,yellow,green,teal,cyan,white,gray,gray-dark,navy,maroon,brown,magenta,lime,black,primary,secondary,success,info,warning,danger,light,dark,no,xs,sm,md,lg,xl,full,half,risen,pop,fastest,faster,fast,slow,slower,slowest\".split(\",\");\n\n/**\n * ------------------------------------------------------------------------\n * Breakpoints names with their resolutions\n * ------------------------------------------------------------------------\n */\n\nconst CSS_BREAKPOINTS = {}\nconst cssBreakpoints = WINDOW.computedStyle.getPropertyValue(\"--tor-resolutions\").replace(/\"| +/g, \"\").split(\",\");\n// const cssBreakpoints = [\"xxl:1400px\", \"xl:1200px\", \"lg:992px\", \"md:768px\", \"sm:576px\", \"all:0px\"];\nlet cssBreakpointsLength = cssBreakpoints.length - 1;\n\nfor (const breakpoint of cssBreakpoints) {\n let split = breakpoint.split(\":\");\n let data = getValueData(split[1]);\n\n CSS_BREAKPOINTS[split[0]] = {}\n CSS_BREAKPOINTS[split[0]].value = data.value;\n CSS_BREAKPOINTS[split[0]].unit = data.unit;\n CSS_BREAKPOINTS[split[0]].id = cssBreakpointsLength--;\n}\n\ngetCurrentResolution();\n\n/**\n * ------------------------------------------------------------------------\n * Trigger aliases used to defined a CSS rule\n * ------------------------------------------------------------------------\n */\n\nconst CSS_TRIGGER_ALIAS = {\n inview: \".inview\",\n active: \".active\",\n show: \".show\",\n hover: \":hover\",\n focus: \":focus\",\n \"focus-within\": \":focus-within\",\n}\n\n/**\n * ------------------------------------------------------------------------\n * Property alias for default CSS rule definition\n * ------------------------------------------------------------------------\n */\n\nconst CSS_PROPERTIES = createPredefinedCSSObject();\n\n/**\n * ------------------------------------------------------------------------\n * Create <style> element\n * ------------------------------------------------------------------------\n */\n\nconst STYLE = document.createElement(\"style\");\n\n\n/**\n * ------------------------------------------------------------------------\n * Individual attribute properties\n * ------------------------------------------------------------------------\n */\n\nconst ATTRIBUTE_SEGMENTS = {\n priority: {\n indexReplace: 0,\n indexValue: 0,\n regex: /^!(.*?)/,\n },\n trigger: {\n indexReplace: 0,\n indexValue: 0,\n regex: /^((?:.)(?:((?!::)+(?!{))))*?(?:\\:)/,\n },\n resolution: {\n indexReplace: 0,\n indexValue: 2,\n regex: /^(<|=|)(xs|sm|md|lg|xl|xxl)(.*?)::/,\n },\n property: {\n indexReplace: 1,\n indexValue: 1,\n regex: /^(?:@|)(.*?)(\\(|$)/,\n },\n values: {\n indexReplace: 0,\n indexValue: 1,\n regex: /^\\((.*?)\\)$/,\n },\n}\n\n/**\n * ------------------------------------------------------------------------\n * Properties object\n * ------------------------------------------------------------------------\n */\n\nconst createPropertiesObject = (_this, array, group) => {\n let temp = {};\n _this.attributes[group] = _this.attributes[group] || {};\n\n /**\n * Sort attributes by their <group> and <trigger>\n */\n\n for (const item of array) {\n let triggerGroup;\n let trigger = /^((?:.)(?:((?!::)+(?!{))))*?(?=\\:)/g.exec(item);\n _this.attributes[group] = _this.attributes[group] || {};\n\n if (trigger) {\n trigger = trigger[0].replace(\"!\", \"\");\n temp[group] = temp[group] || {};\n\n if (/^(mouse|scroll|sensor)/.test(trigger)) {\n triggerGroup = /^.*?(?=(X|Y))/.exec(trigger);\n triggerGroup = triggerGroup ? triggerGroup[0] : trigger;\n\n _this.attributes[group][triggerGroup] = _this.attributes[group][triggerGroup] || {}\n _this.attributes[group][triggerGroup][trigger] = _this.attributes[group][triggerGroup][trigger] || {}\n\n temp[group][triggerGroup] = temp[group][triggerGroup] || {};\n temp[group][triggerGroup][trigger] = temp[group][triggerGroup][trigger] || [];\n temp[group][triggerGroup][trigger].push(item);\n } else {\n _this.attributes[group][trigger] = _this.attributes[group][trigger] || {}\n\n temp[group][trigger] = temp[group][trigger] || [];\n temp[group][trigger].push(item);\n }\n } else {\n _this.attributes[group].idle = _this.attributes[group].idle || {}\n temp[group] = temp[group] || {};\n temp[group].idle = temp[group].idle || [];\n temp[group].idle.push(item);\n }\n }\n\n /**\n * Call the `createSegment` function in loop\n */\n\n for (const [group, object] of Object.entries(temp)) {\n for (const [trigger, array] of Object.entries(object)) {\n if (/mouse|scroll|sensor/.test(trigger)) {\n for (const [specificTrigger, item] of Object.entries(array)) {\n createSegment(_this, group, trigger, item, specificTrigger);\n }\n } else {\n createSegment(_this, group, trigger, array);\n }\n }\n }\n\n /**\n * Create segment\n */\n\n function createSegment(_this, group, trigger, array, specificTrigger) {\n for (const [i, dataAttribute] of Object.entries(array)) {\n let temp = dataAttribute;\n let attribute;\n\n if (specificTrigger) {\n attribute = _this.attributes[group][trigger][specificTrigger][i] = {};\n } else {\n attribute = _this.attributes[group][trigger][i] = {};\n }\n\n /** Original [data-attribute] */\n attribute.original = dataAttribute;\n\n /** Check for custom property defined by `@`. Example: `hover:@opacity(0; 0.5)` */\n if (/@/.test(temp)) {\n attribute.isCustom = true;\n temp = temp.replace(\"@\", \"\");\n }\n\n /** Loop through all `ATTRIBUTE_SEGMENTS` (priority, trigger, property...) */\n for (let [segmentName, segmentValue] of Object.entries(ATTRIBUTE_SEGMENTS)) {\n let exec = segmentValue.regex.exec(temp);\n if (exec) {\n temp = temp.replace(exec[segmentValue.indexReplace], \"\");\n createSegmentObject(_this, attribute, exec, segmentName, segmentValue);\n } else {\n createSegmentObject(_this, attribute, exec, `${segmentName}:default`, segmentValue);\n }\n }\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Segments\n * ------------------------------------------------------------------------\n */\n\nconst createSegmentObject = (_this, attribute, exec, segmentName, segmentValue) => {\n switch (segmentName) {\n case \"priority\":\n attribute.priority = \"important\";\n break;\n\n case \"trigger\":\n attribute.trigger = {};\n let temp = exec[segmentValue.indexValue].replace(\":\", \"\");\n\n /** Check for trigger argument. @example: `hover(p):fade.in` */\n let argument = /\\((.*?)\\)/.exec(temp);\n\n if (argument) {\n attribute.trigger.name = temp.replace(argument[0], \"\");\n attribute.trigger.argument = argument[1];\n\n if (argument[1] === \"p\") {\n attribute.trigger.argument = \"parent\";\n }\n if (/^#/.test(argument[1])) {\n switch (attribute.trigger.name) {\n case \"scroll\":\n document.querySelector(argument[1]).addEventListener(\"scroll\", ON_ELEMENT_SCROLL, { passive: true });\n break;\n\n default:\n TORUS.Parent.init(document.querySelector(argument[1]), { trigger: attribute.trigger.name });\n break;\n }\n }\n } else {\n attribute.trigger.name = temp;\n }\n\n attribute.trigger.alias = CSS_TRIGGER_ALIAS[attribute.trigger.name];\n\n /** Direction. @example: `mouseX:`. direction = \"x\" */\n let match = /X$|Y$/i.exec(attribute.trigger.name);\n if (match) {\n attribute.trigger.direction = match[0].toLowerCase();\n } else {\n attribute.trigger.direction = \"all\";\n }\n\n if (attribute.trigger.name === \"scroll\") {\n attribute.trigger.direction = \"y\";\n }\n break;\n\n case \"resolution\":\n attribute.resolution = exec[segmentValue.indexValue];\n break;\n\n case \"property\":\n attribute.property = {};\n attribute.property.name = exec[segmentValue.indexValue];\n\n if (/=/.test(attribute.property.name)) {\n let split = attribute.property.name.split(\"=\");\n attribute.property.cssFunction = split[0];\n attribute.property.name = split[1];\n }\n\n if (/^bg$|^border$|^color$|^shadow$/.test(attribute.property.name)) {\n attribute.priority = true;\n }\n if (/^background-color$/.test(attribute.property.name)) {\n attribute.joinSymbol = \",\";\n } else {\n attribute.joinSymbol = \" \";\n }\n\n checkPredefined(_this, attribute);\n break;\n\n case \"values\":\n createValues(_this, attribute, exec, segmentValue);\n\n switch (attribute.property.name) {\n case \"offset\":\n _this.is.inviewOffset = attribute.values.all.end.value;\n break;\n }\n break;\n\n case \"resolution:default\":\n attribute.resolution = \"all\";\n break;\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Check for predefined properties\n * ------------------------------------------------------------------------\n */\n\nconst checkPredefined = (_this, attribute) => {\n let predefined = CSS_PROPERTIES[attribute.property.name];\n\n if (predefined) {\n attribute.property.alias = predefined.propertyAlias || \"\";\n\n /** If defined, replace the original triggerAlias with `:not(<trigger>)` */\n if (predefined.cssNot && attribute.trigger) {\n attribute.trigger.alias = `:not(${CSS_TRIGGER_ALIAS[attribute.trigger.name]})`;\n }\n } else {\n /** Don't process the attribute, but only if it's not a custom one */\n if (!attribute.isCustom) {\n attribute.noCSSProcess = true;\n\n switch (attribute.original) {\n case \"inview:revert\":\n _this.is.inviewRevert = true;\n break;\n }\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Create <values> object\n * ------------------------------------------------------------------------\n */\n\nconst createValues = (_this, attribute, exec, segmentValue) => {\n let valueSplit;\n let optionList;\n let tempValue;\n let valueObject = {};\n\n attribute.values = {};\n attribute.values.all = attribute.values.all || {};\n\n if (/\\.\\.\\./.test(attribute.original)) {\n attribute.values.multi = true;\n let cssFunction = /\\((.*?)\\(/.exec(attribute.original);\n\n if (cssFunction) {\n attribute.values.cssFunction = cssFunction[1];\n }\n }\n\n tempValue = exec[segmentValue.indexValue];\n\n // if (/'(.*?)'/.test(tempValue)) {\n // let exec = /'(.*?)'/.exec(tempValue);\n // tempValue = tempValue.replace(exec[0], exec[0].replace(/,+/g, \"|\").replace(/'+/g, \"\"))\n // }\n\n /**\n * <options>\n * If value has options defined by `{}`\n */\n\n attribute.options = {};\n\n /** Default options */\n if (attribute.trigger) {\n if (/mouse/.test(attribute.original)) {\n attribute.options.method = \"middle\";\n }\n if (/scroll(?!(.*?)class)/.test(attribute.original)) {\n attribute.options.start = 0;\n attribute.options.end = \"middle\";\n attribute.options.method = \"regular\";\n }\n }\n\n optionList = /(,{|^{)(.*?)}/.exec(tempValue);\n\n if (optionList) {\n for (const option of optionList[2].split(\",\")) {\n let split = option.split(\":\");\n let optionName = split[0];\n let optionValue = split[1];\n\n switch (optionName) {\n case \"target\":\n optionValue = optionValue.replace(/\\|+/g, \",\").replace(/â–‘+/g, \" \");\n attribute.options[optionName] = document.querySelectorAll(optionValue);\n break;\n\n default:\n if (/^--/.test(optionValue)) {\n attribute.options[optionName] = `var(${optionValue})`;\n } else {\n if (CSS_PREDEFINED_VARIABLES.includes(optionValue)) {\n attribute.options[optionName] = `var(--tor-${optionValue})`;\n } else {\n attribute.options[optionName] = /true|false/.test(optionValue) ? JSON.parse(optionValue) : optionValue;\n }\n }\n break;\n }\n }\n\n tempValue = tempValue.replace(optionList[0], \"\");\n }\n\n /** Check for <start> and <end> values */\n valueSplit = tempValue.split(\";\");\n valueObject.end = valueSplit[1];\n\n if (valueObject.end) {\n valueObject.start = checkMultiValues(valueSplit[0]);\n valueObject.end = checkMultiValues(valueSplit[1]);\n } else {\n valueObject.start = null;\n valueObject.end = valueSplit[0];\n }\n\n\n /**\n * <resolutions>\n * Value has resolutions defined by `::`. Example: `hover:scale.to(2 lg::3)`\n */\n\n for (const type of [\"start\", \"end\"]) {\n if (valueObject[type]) {\n if (/(xs|sm|md|lg|xl|xxl)::/g.test(valueObject[type])) {\n for (const value of valueObject[type].split(\"â–‘\")) {\n const GR = getResolution(value);\n let data = checkPercentage(getValueData(GR.value));\n\n if (GR.resolution) {\n attribute.values[GR.resolution] = attribute.values[GR.resolution] || {};\n addData(GR.resolution, type, data);\n }\n else {\n addData(\"all\", type, data);\n }\n }\n } else {\n /** Value has no resolutions */\n addData(\"all\", type, checkPercentage(getValueData(valueObject[type])) );\n }\n }\n }\n\n /**\n * Check if it's `class-actions` attribute\n */\n\n if (/:class./.test(attribute.original)) {\n if (!attribute.options.target) {\n attribute.options.target = _this.element;\n }\n }\n\n /** Helper function */\n\n function addData(resolution, type, data) {\n attribute.values[resolution][type] = {};\n attribute.values[resolution].original = tempValue;\n\n for (const [key, value] of Object.entries({ value: data.value, unit: data.unit })) {\n attribute.values[resolution][type][key] = (value || value === 0) ? value : null;\n }\n }\n\n /**\n * <percentage>\n * If value has `percentage` flag - the input value is in percents. Example `opacity(50%)` -> opacity: .5\n */\n\n function checkPercentage(params) {\n let value;\n let unit;\n\n if (CSS_PROPERTIES[attribute.property.name] && CSS_PROPERTIES[attribute.property.name].percentage) {\n value = params.unit === \"%\" ? params.value / 100 : params.value;\n unit = null;\n } else {\n value = params.value;\n unit = params.unit;\n }\n\n return {\n value,\n unit\n };\n }\n\n /**\n * Check for multi values defined by `...`\n * @param {string} original\n * @returns {object or string}\n */\n\n function checkMultiValues(original) {\n let temp = original;\n\n if (/\\.\\.\\./.test(temp)) {\n temp = {};\n original = original.replace(\"...\", \"\");\n original = attribute.values.cssFunction ? original.replace(attribute.values.cssFunction, \"\").replace(/\\(|\\)/g, \"\") : original;\n\n for (const [i, value] of Object.entries(original.split(\",\") ) ) {\n let GVD = getValueData(value);\n temp[i] = {};\n temp[i].value = GVD.value;\n temp[i].unit = GVD.unit;\n }\n }\n\n return temp;\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Get values\n * ------------------------------------------------------------------------\n */\n\nconst getValuesForCurrentResolution = (attribute, percents, index) => {\n if (!attribute.values) {\n return {\n value: null,\n unit: null,\n };\n }\n\n let unit;\n let start = 0;\n let end;\n let value;\n\n for (let i = 0; i <= CSS_BREAKPOINTS[WINDOW.resolution.name].id; i++) {\n let breakpoints = Object.keys(CSS_BREAKPOINTS).find(key => CSS_BREAKPOINTS[key].id === i);\n let available = attribute.values[breakpoints];\n\n if (available) {\n if (available.start) {\n start = index ? available.start.value[index].value : available.start.value;\n }\n if (available.end) {\n end = index ? available.end.value[index].value : available.end.value;\n\n if (index) {\n unit = available.end.value[index].unit ? available.end.value[index].unit : \"\";\n } else {\n unit = available.end.unit ? available.end.unit : \"\";\n }\n }\n }\n\n if (typeof start === \"string\" || typeof end === \"string\") {\n value = percents < 1 ? start : end;\n } else {\n value = Math.round((start + ((end - start) * percents)) * 1000) / 1000;\n }\n }\n\n if (/true|false/.test(value)) {\n value = JSON.parse(value);\n }\n\n return {\n value,\n unit,\n start,\n end,\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Wrap element\n * ------------------------------------------------------------------------\n */\n\nconst wrapElement = (elements, wrapper, elementClass) => {\n if(elements instanceof Node) {\n elements = [elements];\n }\n\n if (wrapper instanceof Object) {\n let newElement = document.createElement(\"div\");\n for (const element of elements) {\n newElement.appendChild(element);\n }\n\n wrapper.appendChild(newElement);\n elementClass && newElement.classList.add(elementClass);\n }\n else {\n for(let element of elements) {\n let newElement;\n let parentElement;\n let nextElement;\n\n nextElement = element.nextElementSibling;\n\n if(wrapper === \"svg\") {\n newElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n newElement.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n }\n else {\n newElement = document.createElement(wrapper);\n }\n\n parentElement = element.parentElement;\n newElement.appendChild(element);\n elementClass && newElement.classList.add(elementClass);\n parentElement.insertBefore(newElement, nextElement);\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Transform string to camel case\n * ------------------------------------------------------------------------\n */\n\n String.prototype.toCamelCase = function () {\n return this.replace(/[-_]+/g, \" \").replace(/ (.)/g, function ($1) { return $1.toUpperCase(); }).replace(/ /g, \"\");\n};\n\n/**\n * ------------------------------------------------------------------------\n * Check if SVG element (including <g> element) is in viewport\n * ------------------------------------------------------------------------\n */\n\nconst SVGIntersection = (bounds, method) => {\n let addition = 0;\n\n if (method === \"intersecting\") {\n addition = WINDOW.height/2;\n }\n\n return WINDOW.scroll.y + WINDOW.height + addition >= bounds.offsetTop &&\n WINDOW.scroll.y + WINDOW.height - addition <= bounds.offsetTop + bounds.height + WINDOW.height\n}\n\n/**\n * ------------------------------------------------------------------------\n * Calculate SVG elements bounds (Chrome only)\n * ------------------------------------------------------------------------\n */\n\nconst SVGBounds = (entry) => {\n if (WINDOW.idleCallback) {\n requestIdleCallback(() => {\n bounds(entry);\n });\n } else {\n requestAnimationFrame(() => {\n setTimeout(() => {\n bounds(entry);\n }, 0);\n });\n }\n\n function bounds(entry) {\n if (/svg/i.test(entry.target.nodeName)) {\n entry.target.TORUS = entry.target.TORUS || {};\n entry.target.TORUS.svg = entry.target.TORUS.svg || {};\n\n let rect = entry.boundingClientRect;\n let target = entry.target.TORUS.svg;\n let realWidth = entry.target.width.baseVal.value;\n let viewBoxWidth = entry.target.viewBox.baseVal.width ? entry.target.viewBox.baseVal.width : realWidth;\n\n target.rect = {\n offsetLeft: rect.left + WINDOW.scroll.x,\n offsetTop: rect.top + WINDOW.scroll.y,\n }\n\n for (const _this of target.children) {\n _this.set.bounds(_this.element.getBBox(), { rect: target.rect, ratio: realWidth / viewBoxWidth });\n _this.set.intersecting(SVGIntersection(_this.bounds, \"intersecting\"));\n\n if (_this.is.inviewElement) {\n _this.set.inview(SVGIntersection(_this.bounds, \"inview\"));\n }\n }\n target.calculated = true;\n }\n }\n}\n\nconst inviewOriginalPosition = (_this) => {\n let scrolledTop = ((WINDOW.scroll.y + WINDOW.height - _this.bounds.offsetTopOriginal) / WINDOW.height) * 100;\n let scrolledBottom = ((WINDOW.scroll.y + WINDOW.height - _this.bounds.offsetBottom) / WINDOW.height) * 100;\n\n if (scrolledTop >= 0 && scrolledBottom < 100) {\n !_this.is.inview && _this.set.inview(true, true);\n } else {\n _this.is.inview && _this.set.inview(false, true);\n }\n}\n\n/**\n * ------------------------------------------------------------------------------------------------------------------------------------------------\n * SETS\n * ------------------------------------------------------------------------------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * CSS\n * ------------------------------------------------------------------------\n */\n\nconst CSS_SET = {\n breakpoints: {},\n styles: new Set(),\n};\n\nfor (const breakpoint of Object.keys(CSS_BREAKPOINTS)) {\n CSS_SET.breakpoints[breakpoint] = new Set();\n}\n\n/**\n * ------------------------------------------------------------------------\n * ELements sets\n * ------------------------------------------------------------------------\n */\n\nconst INVIEW_ELEMENTS = new Set();\nconst SCROLL_ELEMENTS = new Set();\nconst MOUSE_ELEMENTS = new Set();\nconst GROUP_ELEMENTS = new Set();\nconst CLASS_SCROLL_ELEMENTS = new Set();\nconst SVG_ELEMENTS = new Set();\n\n/**\n * ------------------------------------------------------------------------------------------------------------------------------------------------\n * OBSERVERS\n * ------------------------------------------------------------------------------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Intersection observer\n * ------------------------------------------------------------------------\n */\n\nconst onIntersect = (entries, observer) => {\n for (const entry of entries) {\n const _this = entry.target.TORUS;\n\n if(_this) {\n /**\n * Main `data-tor` element\n */\n if (_this.Main) {\n /** Calculate the element bounds. Run only once */\n if (!_this.Main.bounds.calculated) {\n\n /** ScrollY is not undefined */\n if (WINDOW.scroll.y !== undefined) {\n _this.Main.set.bounds(entry.boundingClientRect);\n\n /** Element is intersecting */\n if (!_this.Main.is.svgChild) {\n if (entry.isIntersecting) {\n /** Check intersecting */\n _this.Main.set.intersecting(entry.isIntersecting);\n\n /** Check inview */\n // if (_this.Main.is.inviewElement) {\n // _this.Main.run.inview();\n // }\n }\n }\n }\n }\n\n if (/ 50%/.test(observer.rootMargin)) {\n if (!_this.Main.is.svgChild) {\n _this.Main.set.intersecting(entry.isIntersecting);\n }\n }\n\n if (/ 0%/.test(observer.rootMargin)) {\n if (!_this.Main.has.originalPosition) {\n _this.Main.set.inview(entry.isIntersecting);\n } else {\n inviewOriginalPosition(_this.Main);\n }\n }\n }\n\n /**\n * parent `data-tor-parent` element\n */\n if (_this.Parent) {\n if (_this.Parent.is.inviewElement) {\n _this.Parent.run.inview();\n }\n if (/ 0%/.test(observer.rootMargin)) {\n _this.Parent.set.inview(entry.isIntersecting);\n }\n }\n\n /**\n * Chrome bug\n *\n * `intersectionObserver` doesn't work in Chrome for SVG elements, so we need to get the parent SVG rect\n * and use them on `getIntersectionList` function later\n */\n\n if (WINDOW.isUnsupportedSVG && _this.svg) {\n SVGBounds(entry);\n }\n }\n }\n}\n\nconst INTERSECTION_OBSERVER = new IntersectionObserver(onIntersect, {root: null, rootMargin: \"50%\"});\nconst INVIEW_OBSERVER = new IntersectionObserver(onIntersect, {root: null, rootMargin: \"0%\"});\n\n/**\n * ------------------------------------------------------------------------\n * Mutation\n * ------------------------------------------------------------------------\n */\n\nlet MUTATION_OBSERVER;\n\nconst MUTATION = () => {\n /** Append new <style> to <head> */\n document.head.appendChild(STYLE);\n\n const inits = [\"Group\", \"Parent\", \"Main\", \"Slider\"];\n\n const callback = () => {\n for (let i = 0; i < inits.length; i++) {\n TORUS[inits[i]].init();\n }\n\n };\n\n MUTATION_OBSERVER = new MutationObserver(callback);\n MUTATION_OBSERVER.observe(document, {childList: true, subtree: true});\n};\n\n/**\n * ------------------------------------------------------------------------------------------------------------------------------------------------\n * LISTENER HANDLERS\n * ------------------------------------------------------------------------------------------------------------------------------------------------\n */\n\nfunction ON_RESIZE() {\n let tick = 0;\n\n if (!WINDOW.resizing) {\n requestAnimationFrame(raf);\n WINDOW.resizing = true;\n }\n\n function raf() {\n if (tick >= 50) {\n WINDOW.resizing = false;\n cancelAnimationFrame(raf);\n\n WINDOW.height = window.innerHeight || document.documentElement.clientHeight;\n WINDOW.width = window.innerWidth || document.documentElement.clientWidth;\n getCurrentResolution();\n\n if (TORUS.Main) {\n TORUS.Main.refresh();\n }\n\n if (TORUS.Loop) {\n TORUS.Loop.refresh();\n }\n\n if (TORUS.Slider) {\n TORUS.Slider.refresh();\n }\n }\n else {\n tick = tick + 1;\n requestAnimationFrame(raf);\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * On Scroll\n * ------------------------------------------------------------------------\n */\n\nconst ON_SCROLL = () => {\n let scroll = WINDOW.scroll;\n\n scroll.tick = 0;\n getWindowScroll();\n\n if (!scroll.running) {\n requestAnimationFrame(ON_RAF);\n scroll.running = true;\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * On Element Scroll\n * ------------------------------------------------------------------------\n */\n\nconst ON_ELEMENT_SCROLL = (e) => {\n let scroll;\n\n // scroll.tick = 0;\n console.log(e.target.scrollTop);\n\n // if (!scroll.running) {\n // requestAnimationFrame(ON_RAF);\n // scroll.running = true;\n // }\n}\n\n/**\n * ------------------------------------------------------------------------\n * On Mouse\n * ------------------------------------------------------------------------\n */\n\nconst ON_MOUSE = (e) => {\n let mouse = WINDOW.mouse;\n\n mouse.tick = 0;\n mouse.x = e.clientX;\n mouse.y = e.clientY;\n\n if (!mouse.running) {\n requestAnimationFrame(ON_RAF);\n mouse.running = true;\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * On RequestAnimationFrame\n * ------------------------------------------------------------------------\n */\n\nconst ON_RAF = () => {\n let mouseActive = checkMouse(WINDOW.mouse).running;\n let scrollActive = checkScroll(WINDOW.scroll).running;\n\n if (mouseActive) {\n for (const _this of MOUSE_ELEMENTS) {\n _this.run.event(\"mouse\");\n }\n }\n\n if (scrollActive) {\n for (const _this of SCROLL_ELEMENTS) {\n _this.run.event(\"scroll\");\n }\n\n for (const _this of MOUSE_ELEMENTS) {\n if (_this.is.intersecting) {\n _this._setBounds(false);\n }\n }\n\n for (const _this of CLASS_SCROLL_ELEMENTS) {\n _this.run.classScroll();\n }\n\n if (WINDOW.isUnsupportedSVG) {\n for (const _this of SVG_ELEMENTS) {\n _this.set.intersecting(SVGIntersection(_this.bounds, \"intersecting\"));\n if (_this.is.inviewElement) {\n _this.set.inview(SVGIntersection(_this.bounds, \"inview\"));\n }\n }\n }\n\n for (const _this of INVIEW_ELEMENTS) {\n if (_this.is.intersecting && _this.is.inviewOffset) {\n let scrolled = ((WINDOW.scroll.y + WINDOW.height - _this.bounds.offsetTop) / WINDOW.height) * 100;\n if (scrolled >= _this.is.inviewOffset) {\n !_this.is.inview && _this.set.inview(true, true);\n } else {\n _this.is.inview && _this.set.inview(false, true);\n }\n } else if (_this.has.originalPosition) {\n inviewOriginalPosition(_this);\n } else {\n INVIEW_OBSERVER.observe(_this.element);\n }\n }\n }\n\n if (scrollActive || mouseActive) {\n requestAnimationFrame(ON_RAF);\n } else {\n cancelAnimationFrame(ON_RAF);\n }\n\n}\n\nfunction checkScroll(e) {\n if (e.tick >= 10) {\n e.running = false;\n } else {\n e.tick += 1;\n }\n return e;\n}\n\nfunction checkMouse(e) {\n if (e.tick >= 5) {\n e.running = false;\n } else {\n e.tick += 1;\n }\n return e;\n}\n\n/**\n * ------------------------------------------------------------------------------------------------------------------------------------------------\n * On DOMContentLoaded\n * ------------------------------------------------------------------------------------------------------------------------------------------------\n */\n\nconst ON_DOM = () => {\n WINDOW.DOMReady = true;\n\n const ro = new ResizeObserver(entries => {\n for (const entry of entries) {\n if (entry.target === document.documentElement) {\n if (WINDOW.idleCallback) {\n requestIdleCallback(() => TORUS.Main.refresh());\n } else {\n requestAnimationFrame(() => TORUS.Main.refresh());\n }\n }\n }\n });\n\n requestAnimationFrame(() => {\n document.body.classList.add(\"tor-loaded\");\n WINDOW.isChrome && document.body.classList.add(\"tor-chrome\");\n WINDOW.isSafari && document.body.classList.add(\"tor-safari\");\n MUTATION_OBSERVER.disconnect();\n TORUS.BgImage.init();\n ro.observe(document.documentElement);\n });\n\n if (WINDOW.idleCallback) {\n requestIdleCallback(() => getWindowScroll());\n } else {\n requestAnimationFrame(() => getWindowScroll());\n }\n}\n\n/**\n * ------------------------------------------------------------------------------------------------------------------------------------------------\n * LISTENERS\n * ------------------------------------------------------------------------------------------------------------------------------------------------\n */\n\nwindow.addEventListener(\"scroll\", ON_SCROLL, { passive: true });\nwindow.addEventListener(\"pointermove\", ON_MOUSE, { passive: true });\nwindow.addEventListener(\"resize\", ON_RESIZE);\nwindow.addEventListener(\"DOMContentLoaded\", ON_DOM);\n\nexport {\n TORUS,\n WINDOW,\n ATTRIBUTE_SEGMENTS,\n CSS_BREAKPOINTS,\n CSS_SET,\n CSS_TRIGGER_ALIAS,\n CSS_PROPERTIES,\n STYLE,\n INTERSECTION_OBSERVER,\n INVIEW_OBSERVER,\n INVIEW_ELEMENTS,\n SCROLL_ELEMENTS,\n MOUSE_ELEMENTS,\n GROUP_ELEMENTS,\n CLASS_SCROLL_ELEMENTS,\n SVG_ELEMENTS,\n ON_ELEMENT_SCROLL,\n MUTATION,\n optimizeAttribute,\n initClass,\n getIterableElement,\n getResolution,\n getValueData,\n getCSSVariable,\n getMaxSide,\n getPercents,\n getCounting,\n getCurrentResolution,\n getWindowScroll,\n parseValue,\n insertStylesheet,\n expandCluster,\n callFunction,\n isCurrentResolution,\n createPropertiesObject,\n getValuesForCurrentResolution,\n wrapElement,\n onIntersect,\n inviewOriginalPosition,\n}","import TORUS from \"./namespace\";\n\nimport {\n CSS_SET,\n GROUP_ELEMENTS,\n optimizeAttribute,\n initClass,\n getIterableElement,\n getCounting,\n} from \"./util\";\n\nlet mut;\n\nTORUS.Group = class {\n constructor(element) {\n /** this element */\n this.element = element;\n\n if (!this.element.dataset.torGroup) {\n return;\n }\n\n /** Optimize and replace original [data-tor] attribute */\n this.element.dataset.torGroup = optimizeAttribute(this.element.dataset.torGroup);\n\n /** Replace all ` ` spaces in (<value>) definition and split into an array */\n this.dataset = this.element.dataset.torGroup.replace(/\\((.*?)\\)+/g, match => match.replace(/ +/g, \"â–‘\"));\n\n /** Create store objects */\n this.attributes = this.attributes || {};\n this.targets = [];\n\n this._sortAttributes();\n this._assignAttributes();\n TORUS.Main.init(this.targets);\n }\n\n _sortAttributes() {\n let group = this.dataset.match(/(.*?);(?![^()]*\\))/g);\n\n if (!group) {\n console.error(\"Missing semicolon at the end of \" + this.dataset);\n return;\n }\n\n for (const item of group) {\n let target = /^(.*?)=>/.exec(item)[1];\n let attributes = /=>(.*?)$/.exec(item)[1].replace(/;$/, \"\").replace(/\\s+(?=[^[\\]]*\\])/g, \"â–‘\");\n\n this.attributes[target] = this.attributes[target] || {};\n\n for (const [i, attribute] of Object.entries(attributes.split(\" \"))) {\n this.attributes[target][i] = attribute;\n }\n }\n }\n\n _assignAttributes() {\n for (const [targets, attributes] of Object.entries(this.attributes)) {\n let count = 0;\n let allTargets = this.element.querySelectorAll(targets);\n\n for (const target of allTargets) {\n let tempAttributes = [];\n\n for (let attribute of Object.values(attributes)) {\n attribute = attribute.replace(/â–‘+/g, \" \");\n\n /** Has counting */\n if (/\\/(.*?)\\//.test(attribute)) {\n tempAttributes.push(this._counting(count, attribute));\n } else {\n tempAttributes.push(attribute);\n }\n }\n count += 1;\n\n if (target.dataset.tor) {\n target.dataset.tor = target.dataset.tor + \" \" + tempAttributes.join(\" \");\n } else {\n target.dataset.tor = tempAttributes.join(\" \");\n }\n GROUP_ELEMENTS.add(target);\n this.targets.push(target);\n }\n }\n }\n\n _counting(count, attribute) {\n let startFinal;\n let endFinal;\n\n const original = attribute.match(/\\/(.*?)\\/+/g);\n\n for (const match of original) {\n const split = match.split(\";\");\n let start = split[0];\n let end = split[1];\n\n /** Only <start> and no <end> value */\n if (!end) {\n end = start;\n start = null;\n }\n\n /** Check if <start> value has counting defined by `//` */\n if (/\\/(.*?)\\//.test(start)) {\n startFinal = getCounting(count, start);\n } else {\n startFinal = start;\n }\n\n /** Check if <end> value has counting defined by `//` */\n if (/\\/(.*?)\\//.test(end)) {\n endFinal = getCounting(count, end);\n } else {\n endFinal = end;\n }\n attribute = attribute.replace(match, `${startFinal ? startFinal + \";\" : \"\"}${endFinal}`);\n }\n return attribute;\n }\n\n /**\n * ------------------------------------------------------------------------\n * Initialization\n * ------------------------------------------------------------------------\n */\n\n static init(elements) {\n elements = getIterableElement(elements || \"[data-tor-group]\");\n initClass({ name: \"Group\", elements: elements });\n }\n\n}\n\nexport default TORUS.Group;","import TORUS from \"./namespace\";\n\nimport {\n INVIEW_OBSERVER,\n INVIEW_ELEMENTS,\n optimizeAttribute,\n initClass,\n getIterableElement,\n expandCluster,\n callFunction,\n createPropertiesObject,\n} from \"./util\";\n\nTORUS.Parent = class {\n constructor(element, options) {\n /** this element */\n this.element = element;\n\n this.element.torusInitializedParent = true;\n\n if (options) {\n if (options.trigger) {\n this.element.dataset.torParent = this.element.dataset.torParent ? this.element.dataset.torParent + \" \" + options.trigger : options.trigger;\n }\n }\n\n /** Optimize and replace original [data-tor-parent] attribute */\n this.element.dataset.torParent = expandCluster(optimizeAttribute(this.element.dataset.torParent, true));\n\n /** Replace all ` ` spaces in (<value>) definition and split into an array */\n this.dataset = this.element.dataset.torParent.replace(/\\((.*?)\\)+/g, match => match.replace(/ +/g, \"â–‘\")).split(\" \");\n\n /** Create store objects */\n this.is = this.is || {};\n this.has = this.has || {};\n this.attributes = this.attributes || {};\n\n this._getterSetter();\n this._sortAttributes();\n this._addToElementsSet();\n }\n\n /**\n * ------------------------------------------------------------------------\n * Define getter and setter functions\n * ------------------------------------------------------------------------\n */\n\n _getterSetter() {\n /** Setter */\n this.set = {\n inview: (status, force) => {\n if (!this.is.inviewOffset || force) {\n this.is.inview = status;\n\n if (status) {\n requestAnimationFrame(() => this.element.classList.add(\"inview\"));\n } else {\n if (this.is.inviewRevert) {\n this.element.classList.remove(\"inview\");\n }\n }\n }\n },\n }\n\n /** Runner */\n this.run = {\n inview: () => {\n INVIEW_OBSERVER.observe(this.element);\n },\n }\n\n }\n\n /**\n * ------------------------------------------------------------------------\n * Sort attributes\n * ------------------------------------------------------------------------\n */\n\n _sortAttributes() {\n let temp = {};\n\n for (const dataAttribute of this.dataset) {\n temp.static = temp.static || [];\n temp.static.push(dataAttribute);\n }\n\n for (const [group, array] of Object.entries(temp)) {\n createPropertiesObject(this, array, group);\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Add element to corresponding set\n * ------------------------------------------------------------------------\n */\n\n _addToElementsSet() {\n if (/inview/.test(this.dataset)) {\n this.is.inviewElement = true;\n INVIEW_ELEMENTS.add(this);\n this.run.inview();\n }\n }\n\n /**\n * ------------------------------------------------------------------------------------------------------------------------------------------------\n * Initialization\n * ------------------------------------------------------------------------------------------------------------------------------------------------\n */\n\n static init(elements, options) {\n elements = getIterableElement(elements || \"[data-tor-parent~='inview']\");\n\n if(elements) {\n initClass({ name: \"Parent\", elements: elements, options: options });\n }\n }\n}\n\nexport default TORUS.Parent;","import TORUS from \"./namespace\";\n\nimport {\n MUTATION,\n INTERSECTION_OBSERVER,\n INVIEW_OBSERVER,\n CSS_SET,\n CSS_PROPERTIES,\n CSS_BREAKPOINTS,\n INVIEW_ELEMENTS,\n SCROLL_ELEMENTS,\n MOUSE_ELEMENTS,\n CLASS_SCROLL_ELEMENTS,\n SVG_ELEMENTS,\n WINDOW,\n optimizeAttribute,\n getValuesForCurrentResolution,\n getValueData,\n getCSSVariable,\n initClass,\n getIterableElement,\n insertStylesheet,\n expandCluster,\n getPercents,\n getMaxSide,\n callFunction,\n createPropertiesObject,\n} from \"./util\";\n\nTORUS.Main = class {\n constructor(element) {\n /** this element */\n this.element = element;\n\n this.element.torMainInit = true;\n\n /** Optimize and replace original [data-tor] attribute */\n this.element.dataset.tor = expandCluster(optimizeAttribute(this.element.dataset.tor, true));\n\n /** Replace all ` ` spaces in (<value>) definition and split into an array */\n this.dataset = this.element.dataset.tor.replace(/\\((.*?)\\)+/g, match => match.replace(/ +/g, \"â–‘\")).split(\" \");\n\n /** Create store objects */\n this.is = this.is || {};\n this.has = this.has || {};\n this.attributes = this.attributes || {};\n this.bounds = this.bounds || {};\n\n /** Getters and Setters init */\n this._getterSetter();\n\n /** Call functions */\n this._sortAttributes();\n this.get.bounds();\n this._addToElementsSet();\n }\n\n /**\n * ------------------------------------------------------------------------\n * Define getter and setter functions\n * ------------------------------------------------------------------------\n */\n\n _getterSetter() {\n /** Getter */\n this.get = {\n bounds: () => {\n this._getBounds();\n }\n }\n\n /** Setter */\n this.set = {\n bounds: (bounds, svgParentRect) => {\n this._setBounds(bounds, svgParentRect);\n // TODO:\n // requestAnimationFrame(() => this.element.classList.remove(\"tor-hidden\"));\n },\n\n intersecting: (status) => {\n this.is.intersecting = status;\n },\n\n inview: (status, force) => {\n if (!this.is.inviewOffset || force) {\n this.is.inview = status;\n\n if (status) {\n /**\n * Chrome bug\n *\n * Sometimes when user start to scroll immediately before DOMContentReady,\n * the `.inview` class is being added immediately without CSS transition.\n * To hack this, we need to add a little bit of delay if DOM is not ready\n */\n let delay = 0;\n if (WINDOW.isChrome) {\n delay = WINDOW.DOMReady ? 0 : 200;\n }\n\n requestAnimationFrame(() => {\n setTimeout(() => {\n this.element.classList.add(\"inview\");\n }, delay);\n });\n } else {\n if (this.is.inviewRevert) {\n requestAnimationFrame(() => this.element.classList.remove(\"inview\"));\n }\n }\n }\n },\n }\n\n /** Runner */\n this.run = {\n inview: () => {\n INVIEW_OBSERVER.observe(this.element);\n },\n event: (event, params) => {\n this._runEvent(event, params);\n },\n classScroll: () => {\n this._onClassScroll();\n },\n }\n\n }\n\n /**\n * ------------------------------------------------------------------------\n * Sort attributes\n * ------------------------------------------------------------------------\n */\n\n _sortAttributes() {\n let temp = {};\n\n for (const dataAttribute of this.dataset) {\n if (/class./.test(dataAttribute)) {\n temp.class = temp.class || [];\n temp.class.push(dataAttribute);\n } else if (/mouse|scroll|sensor/.test(dataAttribute)) {\n temp.dynamic = temp.dynamic || [];\n temp.dynamic.push(dataAttribute);\n this.is.dynamicAttribute = true;\n } else if (/loop:/.test(dataAttribute)) {\n temp.loop = temp.loop || [];\n temp.loop.push(dataAttribute);\n } else {\n temp.static = temp.static || [];\n temp.static.push(dataAttribute);\n\n if (/^inview(.*?)(pull\\.up|@transform=translateY\\(\\d)/.test(dataAttribute)) {\n this.has.originalPosition = true;\n this.element.classList.add(\"tor-original-position\");\n }\n }\n }\n\n for (const [group, array] of Object.entries(temp)) {\n createPropertiesObject(this, array, group);\n\n group === \"static\" && this._CSSAddToSet(this.attributes.static);\n group === \"loop\" && this._LOOPCreate();\n group === \"class\" && this._CLASSAddListeners(array);\n }\n\n if (this.attributes.dynamic && this.is.dynamicAttribute) {\n this.attributes.dynamic.styles = {};\n this.attributes.dynamic.currentStyles = new Set();\n\n // TODO:\n // this.element.classList.add(\"tor-hidden\");\n }\n\n /** Create hover hit area for some effects */\n if (/hover:(.*?)(push|pull|rotate)/.test(this.dataset)) {\n if (!this.element.querySelector(\".tor-hit-area\")) {\n const hit = document.createElement(\"span\");\n hit.classList.add(\"tor-hit-area\");\n this.element.appendChild(hit);\n }\n }\n\n if (/:block\\(/.test(this.dataset)) {\n let block = document.createElement(\"span\");\n block.classList.add(\"tor-block-element\");\n this.element.appendChild(block);\n }\n\n // this.element.style.setProperty(\"transform\", \"none\", \"important\");\n }\n\n /**\n * ------------------------------------------------------------------------\n * Create CSS looped animations rules\n * ------------------------------------------------------------------------\n */\n\n _LOOPCreate() {\n if (!this.attributes.loop) {\n return;\n }\n\n let names = [];\n let durations = [];\n let timings = [];\n let directions = [];\n let delays = [];\n let pauses = {};\n let hasPause = false;\n let indexes = {};\n\n for (const [i, attribute] of Object.entries(this.attributes.loop.loop)) {\n let radiate = /(radiate)(.*?)+/.exec(attribute.property.name);\n if (radiate) {\n attribute.property.name = attribute.property.name.replace(radiate[0], radiate[1])\n }\n\n let name = `loop-${attribute.property.name.replace(/\\./g, \"-\")}`;\n let duration = `calc(var(--tor-${name}-duration) * var(--tor-${name}-speed,1))`;\n let timing = `var(--tor-${name}-timing)`;\n let direction = `var(--tor-${name}-direction)`;\n\n let currentEnd = getValuesForCurrentResolution(attribute, 1);\n let currentStart = getValuesForCurrentResolution(attribute, 1).start;\n\n pauses[name] = {\n index: Number(i),\n pause: null,\n iterations: 0,\n currentIteration: 0,\n };\n\n indexes[i] = false;\n\n if (currentEnd.value) {\n this.element.style.setProperty(`--tor-${name}-value`, `${currentEnd.value}${currentEnd.unit}`);\n } else {\n this.element.style.removeProperty(`--tor-${name}-value`);\n }\n\n if (currentStart) {\n this.element.style.setProperty(`--tor-${name}-value-start`, `${currentStart}${currentEnd.unit}`);\n }\n\n if (attribute.options) {\n for (const [key, value] of Object.entries(attribute.options)) {\n switch (key) {\n case \"pause\":\n let temp = getValueData(attribute.options.pause);\n pauses[name].pause = temp.unit === \"s\" ? temp.value * 1000 : temp.value;\n hasPause = true;\n break;\n\n case \"iterations\":\n pauses[name].iterations = Number(attribute.options.iterations);\n break;\n\n case \"delay\":\n delays.push(`var(--tor-${name}-delay)`);\n this.element.style.setProperty(`--tor-${name}-delay`, `${value}`);\n break;\n\n default:\n this.element.style.setProperty(`--tor-${name}-${key}`, `${value}`);\n break;\n }\n }\n }\n\n names.push(name);\n durations.push(duration);\n timings.push(timing);\n directions.push(direction);\n }\n\n this.element.style.setProperty(\"animation-name\", names.join(\", \"));\n this.element.style.setProperty(\"animation-duration\", durations.join(\", \"));\n this.element.style.setProperty(\"animation-timing-function\", timings.join(\", \"));\n this.element.style.setProperty(\"animation-direction\", directions.join(\", \"));\n delays.length && this.element.style.setProperty(\"animation-delay\", delays.join(\", \"));\n\n if (hasPause) {\n /** Do on animation iteration */\n this.element.onanimationiteration = (e) => {\n\n /** Do only it it's current element */\n if (e.target === this.element) {\n\n /** If loop has `iterations` option, add to `currentIteration` counter */\n if (pauses[e.animationName].iterations) {\n pauses[e.animationName].currentIteration++;\n }\n\n /** If `currentIteration` equals the predefined iteration */\n if (pauses[e.animationName].iterations === pauses[e.animationName].currentIteration) {\n pauses[e.animationName].currentIteration = 0;\n\n if (pauses[e.animationName].pause) {\n let pause = pauses[e.animationName].pause;\n indexes[pauses[e.animationName].index] = true;\n\n let states = [...Object.values(indexes)].map(item => { return item ? \"paused\" : \"running\" });\n this.element.style.setProperty(\"animation-play-state\", states.join(\", \"));\n\n let time = setTimeout(() => {\n indexes[pauses[e.animationName].index] = false;\n states = [...Object.values(indexes)].map(item => { return !item ? \"running\" : \"paused\" });\n this.element.style.setProperty(\"animation-play-state\", states.join(\", \"));\n clearTimeout(time)\n }, pause);\n }\n }\n }\n };\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Create `@media` CSS rules and add to global CSS_SET\n * ------------------------------------------------------------------------\n */\n\n _CSSAddToSet(attributes) {\n const cssObject = {};\n\n for (const items of Object.values(attributes)) {\n for (const attribute of Object.values(items)) {\n if (attribute.noCSSProcess) {\n continue;\n }\n\n let CSSOptions = \"\";\n let CSSAdditional = \"\";\n let CSSParent = \"\";\n let tempOptions = [];\n let CSSWrap = null;\n\n let CSSTrigger = attribute.trigger ? `-${attribute.trigger.name}` : \"\";\n let CSSTriggerAlias = attribute.trigger ? attribute.trigger.alias : \"\";\n let CSSPriority = attribute.priority ? \" !important\" : \"\";\n let CSSPropertyName = attribute.property.name;\n let CSSPropertyAlias = attribute.property.alias;\n\n /** Default if no values */\n if (!attribute.values) {\n attribute.values = {\n all: {\n end: {\n value: \"0%\",\n }\n }\n }\n }\n\n if (attribute.trigger && attribute.trigger.argument) {\n if (attribute.trigger.argument === \"parent\") {\n CSSParent = `[data-tor-parent~=\"${attribute.trigger.name}\"]`;\n } else {\n CSSParent = `${attribute.trigger.argument}`;\n }\n }\n\n if (attribute.property.cssFunction) {\n CSSWrap = CSSPropertyName;\n CSSPropertyName = attribute.property.cssFunction;\n }\n\n /**\n * ---\n * If it's <custom> attribute. Example: `hover@padding(3rem)`\n * ---\n */\n\n if (attribute.isCustom) {\n /** Responsive <effect>. Example: `hover:xl::@margin(50%)` */\n for (const type of [\"start\", \"end\"]) {\n\n /** If attribute has <start> or <end> values */\n if (attribute.values.all[type]) {\n\n let triggerAlias = (type === \"end\") ? CSSTriggerAlias : \"\";\n let parent = CSSParent ? CSSParent + triggerAlias : \"\";\n\n /** default (start) value */\n addCSSRules({\n triggerAlias: triggerAlias,\n rule: CSSPropertyName,\n value: attribute.values.all[type].value,\n unit: attribute.values.all[type].unit,\n cssParent: parent,\n });\n\n /** Responsive <values>. Example: `hover:opacity(10% xl::50%)` */\n for (const [breakpoint, value] of Object.entries(attribute.values)) {\n addCSSRules({\n resolution: breakpoint,\n triggerAlias: triggerAlias,\n rule: CSSPropertyName,\n value: value[type].value,\n unit: value[type].unit,\n cssParent: parent,\n });\n }\n }\n }\n } else {\n\n /**\n * ---\n * Else, it's <static> attribute. Example: `hover:blur(sm)`\n * ---\n */\n\n let CSSValue = \"\";\n let CSSUnit = \"\";\n\n if (attribute.values) {\n /** Values */\n if (attribute.values.all.end) {\n CSSValue = attribute.values.all.end.value;\n } else {\n console.warn(`No default responsive value in \"${attribute.original}\" attribute. Setting \"0\" as default.`);\n CSSValue = \"0\";\n }\n\n /** Unit */\n if (attribute.values.all.end) {\n CSSUnit = attribute.values.all.end.unit;\n }\n }\n\n /**\n * Create CSS variables from options and push them to array\n */\n\n if (attribute.options) {\n for (const [key, value] of Object.entries(attribute.options)) {\n if (key !== \"target\") {\n tempOptions.push(`--tor-${attribute.property.name}-${key}: ${getCSSVariable({ property: key, value: value })}`);\n }\n }\n CSSOptions = `${tempOptions.length === 1 ? `${tempOptions};` : tempOptions.join(\";\")}`;\n }\n\n /**\n * Add additional CSS rules if applicable\n */\n\n if (CSS_PROPERTIES[attribute.property.name].additionalRules) {\n CSSAdditional = CSS_PROPERTIES[attribute.property.name].additionalRules;\n }\n\n /**\n * Add <default> CSS rule\n */\n\n let parent = CSSParent ? CSSParent + CSSTriggerAlias : \"\";\n\n addCSSRules.call(this, {\n trigger: CSSTrigger,\n triggerAlias: CSSTriggerAlias,\n rule: CSSPropertyAlias,\n value: CSSValue,\n unit: CSSUnit,\n cssParent: parent,\n });\n\n /**\n * Add <custom> CSS rule\n * Responsive <values>. Example: `hover:opacity(10% xl::50%)`\n */\n\n for (const [breakpoint, value] of Object.entries(attribute.values)) {\n if (breakpoint !== \"all\") {\n addCSSRules.call(this, {\n resolution: breakpoint,\n triggerAlias: CSSTriggerAlias,\n rule: CSSPropertyAlias,\n value: value.end.value,\n unit: value.end.unit,\n cssParent: parent,\n });\n }\n }\n }\n\n /**\n * Create and add CSS rules to CSS_SET\n */\n\n\n function addCSSRules(_) {\n\n const getCSS = getCSSVariable({\n property: _.propertyName || CSSPropertyName,\n value: _.value,\n unit: _.unit,\n wrap: CSSWrap\n })\n\n let css =\n `${_.cssParent ? _.cssParent : \"\"} [data-tor${_.selector || \"~\"}=\"${_.original || attribute.original}\"]${!_.cssParent ? _.triggerAlias : \"\"} {\n ${_.rule}: ${getCSS}${_.priority || CSSPriority};\n ${/\\:not/.test(_.triggerAlias) ? \"\" : _.options || CSSOptions}\n ${CSSAdditional}\n }\n ${_.options || CSSOptions ? `[data-tor${_.selector || \"~\"}=\"${_.original || attribute.original}\"]{\n ${_.options || CSSOptions}\n }` : \"\"}\n `\n .replace(/ +/g, \" \").replace(/\\t|\\n|\\r+/g, \"\").replace(/\\s*{\\s*/g, \"{\").replace(/\\s*}\\s*/g, \"}\").replace(\";;\", \";\").trim();\n\n let breakpoint = _.resolution || attribute.resolution;\n let set = CSS_SET.breakpoints[breakpoint];\n\n if (!set.has(css)) {\n insertStylesheet(`@media (min-width: ${CSS_BREAKPOINTS[breakpoint].value}${CSS_BREAKPOINTS[breakpoint].unit}) { ${css} }`);\n cssObject[breakpoint] = css;\n set.add(css);\n }\n }\n\n }\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Get element bounds\n * ------------------------------------------------------------------------\n */\n\n _getBounds() {\n this.bounds.calculated = false;\n let svgParent = this.element.ownerSVGElement;\n\n if (/^inview(.*?)(pull\\.up|@transform=translateY\\(\\d)/.test(this.dataset)) {\n this.element.classList.add(\"tor-original-position\");\n }\n\n /**\n * Chrome bug\n *\n * `intersectionObserver` doesn't work in Chrome, so we need to get the parent SVG rect\n */\n\n if (WINDOW.isUnsupportedSVG &&Â svgParent) {\n if (svgParent) {\n let svg;\n\n svgParent.TORUS = svgParent.TORUS || {};\n svgParent.TORUS.svg = svgParent.TORUS.svg || {};\n\n this.is.svgChild = true;\n this.has.svgParent = svgParent;\n\n svg = svgParent.TORUS.svg;\n svg.children = svg.children || new Set();\n svg.children.add(this);\n\n if (WINDOW.isSafari) {\n // requestAnimationFrame(() => {\n setTimeout(() => {\n INTERSECTION_OBSERVER.observe(svgParent);\n }, 50);\n // })\n } else {\n INTERSECTION_OBSERVER.observe(svgParent);\n }\n }\n } else {\n INTERSECTION_OBSERVER.observe(this.element);\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Set element bounds\n * ------------------------------------------------------------------------\n */\n\n _setBounds(bounds, svgParentRect) {\n let max;\n let B = this.bounds;\n let ratio = 1;\n let scrollLeft = WINDOW.scroll.x;\n let scrollTop = WINDOW.scroll.y;\n\n if (WINDOW.isUnsupportedSVG && svgParentRect) {\n ratio = svgParentRect.ratio;\n scrollLeft = svgParentRect.rect.offsetLeft;\n scrollTop = svgParentRect.rect.offsetTop;\n }\n\n if (bounds) {\n B.calculated = true;\n B.rect = bounds;\n B.width = B.rect.width * ratio;\n B.height = B.rect.height * ratio;\n B.top = B.rect.y * ratio;\n B.left = B.rect.x * ratio;\n B.right = B.rect.right || B.left + B.width;\n B.bottom = B.rect.bottom || B.top + B.height;\n B.offsetLeft = B.left + scrollLeft;\n B.offsetTop = B.top + scrollTop;\n B.offsetBottom = B.bottom + scrollTop;\n B.centerX = B.offsetLeft + B.width / 2 - WINDOW.scroll.x;\n B.centerY = B.offsetTop + B.height / 2 - WINDOW.scroll.y;\n\n if (/^inview(.*?)(pull\\.up|@transform=translateY\\(\\d)/.test(this.dataset)) {\n B.offsetTopOriginal = B.offsetTop;\n this.element.classList.remove(\"tor-original-position\");\n }\n\n // this._runAllEvents();\n } else {\n // TODO: test dynamic scrollTop for SVG on Chrome\n\n B.centerX = B.offsetLeft + B.width / 2 - WINDOW.scroll.x;\n B.centerY = B.offsetTop + B.height / 2 - WINDOW.scroll.y;\n this._runAllEvents(\"mouse\");\n }\n\n max = getMaxSide(this);\n this.bounds.maxDiagonal = Math.round(max.corner);\n this.bounds.maxXSide = max.xSide;\n this.bounds.maxYSide = max.ySide;\n\n // TODO:\n // if (this.is.dynamicAttribute) {\n // requestAnimationFrame(() => this.element.classList.remove(\"tor-hidden\"))\n // }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Add element to corresponding set\n * ------------------------------------------------------------------------\n */\n\n _addToElementsSet() {\n if (/scroll(.*?)\\:(?!(.*?)class)/.test(this.dataset)) {\n SCROLL_ELEMENTS.add(this);\n }\n if (/scroll(.*?)class/.test(this.dataset)) {\n CLASS_SCROLL_ELEMENTS.add(this);\n }\n if (/mouse(.*?)\\:/.test(this.dataset)) {\n MOUSE_ELEMENTS.add(this);\n }\n if (/inview(?!\\()/.test(this.dataset)) {\n this.is.inviewElement = true;\n INVIEW_ELEMENTS.add(this);\n }\n if (this.element.ownerSVGElement) {\n SVG_ELEMENTS.add(this);\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Run all events in loop to set the starting value immediately\n * ------------------------------------------------------------------------\n */\n\n _runAllEvents(event) {\n if (event) {\n if (this.attributes.dynamic && this.attributes.dynamic[event]) {\n this.run.event(event, true);\n }\n } else {\n for (const event of [\"mouse\", \"scroll\", \"sensor\", \"inview\"]) {\n if (event === \"inview\" && this.is.inviewElement) {\n this.run.inview();\n }\n if (this.attributes.dynamic && this.attributes.dynamic[event]) {\n this.run.event(event, true);\n }\n }\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Run events for dynamic attributes\n * @example: `scroll:@scale(0;1)`\n * ------------------------------------------------------------------------\n */\n\n _runEvent(event, force) {\n if (!this.is.intersecting) {\n if(!force) {\n return;\n }\n }\n\n let cssName;\n let fullValue;\n let wrap = [];\n let dynamic = this.attributes.dynamic;\n\n if (!dynamic) {\n return;\n }\n\n dynamic.allStyles = dynamic.allStyles || {};\n\n /**\n * Create `styles` object that stores the `live` CSS values\n */\n\n for (const group of Object.values(dynamic[event])) {\n for (const attribute of Object.values(group)) {\n let all;\n let percents = getPercents(this, { event: event, options: attribute.options })[attribute.trigger.direction];\n\n dynamic.styles[attribute.resolution] = dynamic.styles[attribute.resolution] || {};\n dynamic.styles[attribute.resolution][attribute.property.name] = dynamic.styles[attribute.resolution][attribute.property.name] || {};\n\n /**\n * Declare CSS styles\n */\n\n /** Attribute has multi values defined by `...` */\n if (attribute.values.multi) {\n all = [];\n\n for (let i in attribute.values.all.start.value) {\n let GV = getValuesForCurrentResolution(attribute, percents, i);\n all.push(`${GV.value}${GV.unit}`);\n }\n\n all = attribute.values.cssFunction ? `${attribute.values.cssFunction}(${all.join(attribute.joinSymbol)})` : all.join(\" \");\n } else {\n let GV = getValuesForCurrentResolution(attribute, percents);\n dynamic.styles[attribute.resolution][attribute.property.name].cssFunction = attribute.property.cssFunction;\n all = `${GV.value}${GV.unit}`;\n }\n\n dynamic.styles[attribute.resolution][attribute.property.name][`${event}${attribute.trigger.direction}`] = all;\n dynamic.styles[attribute.resolution][attribute.property.name].targets = attribute.options.target;\n dynamic.styles[attribute.resolution][attribute.property.name].priority = attribute.priority || \"\";\n }\n }\n\n /**\n * Loop trough all breakpoints from the current one down, and find the first object from the `styles`, that matches\n * the resolution from the loop\n */\n\n for (let i = CSS_BREAKPOINTS[WINDOW.resolution.name].id; i >= 0; i--) {\n let availableBreakpoints = Object.keys(CSS_BREAKPOINTS).find(key => CSS_BREAKPOINTS[key].id === i);\n\n if (dynamic.styles[availableBreakpoints]) {\n dynamic.currentStyles.add(Object.keys(dynamic.styles[availableBreakpoints])[0]);\n dynamic.allStyles[Object.keys(dynamic.styles[availableBreakpoints])[0]] = dynamic.styles[availableBreakpoints];\n break;\n } else {\n dynamic.currentStyles.clear();\n }\n }\n\n /**\n * Loop trough <all> available styles for the attribute and find if the <currentStyle> is used or not\n */\n\n for (const [name, style] of Object.entries(dynamic.allStyles)) {\n if (dynamic.currentStyles.has(name)) {\n assignCSS.call(this, style, \"add\");\n } else {\n assignCSS.call(this, style, \"remove\");\n }\n }\n\n /**\n * Add or remove the CSS style from the target element\n */\n\n function assignCSS(style, method) {\n let obj = {};\n for (const [name, value] of Object.entries(style)) {\n let tempValue = [];\n cssName = name;\n\n switch (method) {\n case \"add\": {\n for (const event of [\"mouseall\", \"mousex\", \"mousey\", \"scrollall\", \"scrollx\", \"scrolly\", \"sensorall\", \"sensorx\", \"sensory\"]) {\n value[event] && tempValue.push(value[event]);\n }\n\n fullValue = tempValue.length > 1 ? `calc(${tempValue.join(\" + \")})` : tempValue[0];\n\n if (value.cssFunction) {\n cssName = value.cssFunction;\n let perspective = /rotate/.test(name) ? \" perspective(1000px)\" : \"\";\n wrap.push(`${name}(${fullValue}) ${perspective}`);\n }\n\n /** Group multiple events together */\n obj[cssName] = {\n value: value.cssFunction ? wrap.join(\" \") : fullValue,\n priority: value.priority,\n };\n\n if (value.targets) {\n for (const target of value.targets) {\n for (const [name, value] of Object.entries(obj)) {\n target.style.setProperty(name, value.value, value.priority);\n }\n }\n } else {\n for (const [name, value] of Object.entries(obj)) {\n this.element.style.setProperty(name, value.value, value.priority);\n }\n }\n\n break;\n }\n\n case \"remove\": {\n if (value.targets) {\n for (const target of value.targets) {\n if (value.cssFunction) {\n target.style.this.element.style[value.cssFunction] = target.style[value.cssFunction].replace(target.style[value.cssFunction], \"\");\n }\n target.style.removeProperty(cssName);\n }\n } else {\n if (value.cssFunction) {\n this.element.style[value.cssFunction] = this.element.style[value.cssFunction].replace(this.element.style[value.cssFunction], \"\");\n }\n this.element.style.removeProperty(cssName);\n }\n\n delete dynamic.allStyles[cssName];\n break;\n }\n }\n }\n }\n }\n\n /**\n * ------------------------------------------------------------------------------------------------\n * CLASS ACTIONS\n * ------------------------------------------------------------------------------------------------\n */\n\n /**\n * ------------------------------------------------------------------------\n * Class: Add event listeners\n * ------------------------------------------------------------------------\n */\n\n _CLASSAddListeners(array) {\n const bodyIO = new IntersectionObserver((entries) => {\n WINDOW.documentHeight = Math.round(entries[0].boundingClientRect.height);\n\n this._CLASSCreateActions();\n\n if (array.some(item => /click:/.test(item))) {\n this.element.addEventListener(\"click\", this._onClassClick.bind(this));\n }\n if (array.some(item => /hover:/.test(item))) {\n this.element.addEventListener(\"mouseenter\", this._onClassMouseEnter.bind(this));\n this.element.addEventListener(\"mouseleave\", this._onClassMouseLeave.bind(this));\n }\n if (array.some(item => /timeout:/.test(item))) {\n this._onClassTimeout();\n }\n });\n\n bodyIO.observe(document.documentElement);\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class: Create `actions` object that stores the necessary data that\n * will be used when user performs a <trigger>\n * ------------------------------------------------------------------------\n */\n\n _CLASSCreateActions() {\n for (const attributes of Object.values(this.attributes.class)) {\n for (const attribute of Object.values(attributes.scroll ? attributes.scroll : attributes)) {\n let start = null;\n let end = null;\n let unit = null;\n\n if (attribute.options.start) {\n start = getValueData(attribute.options.start);\n }\n if (attribute.options.end) {\n end = getValueData(attribute.options.end);\n }\n\n switch (attribute.trigger.name) {\n case \"timeout\":\n if (start) {\n start = start.unit === \"s\" ? start.value * 1000 : start.value;\n }\n if (end) {\n end = end.unit === \"s\" ? end.value * 1000 : end.value;\n }\n break;\n\n default:\n if (start) {\n unit = start.unit;\n start = start.value;\n }\n if (end) {\n unit = end.unit;\n end = end.value;\n }\n break;\n }\n\n attribute.actions = {\n method: /class\\.(.*?)$/.exec(attribute.property.name)[1],\n classes: attribute.values.all.original.split(\"â–‘\"),\n target: attribute.options.target,\n trigger: attribute.trigger.name,\n start: start,\n end: end,\n unit: unit,\n disable: attribute.options.disable,\n }\n }\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class: On click\n * ------------------------------------------------------------------------\n */\n\n _onClassClick() {\n for (const attribute of Object.values(this.attributes.class.click)) {\n this._CLASSTriggerNewState(attribute);\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class: On mouse enter (hover)\n * ------------------------------------------------------------------------\n */\n\n _onClassMouseEnter() {\n for (const attribute of Object.values(this.attributes.class.hover)) {\n this._CLASSTriggerNewState(attribute);\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class: On mouse leave (hover out)\n * ------------------------------------------------------------------------\n */\n\n _onClassMouseLeave() {\n for (const attribute of Object.values(this.attributes.class.hover)) {\n if (attribute.actions.method === \"toggle\") {\n this._CLASSTriggerOldState(attribute);\n }\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class: On time out\n * ------------------------------------------------------------------------\n */\n\n _onClassTimeout() {\n for (const attribute of Object.values(this.attributes.class.timeout)) {\n let start = attribute.actions.start;\n let end = attribute.actions.end;\n\n attribute.time = setTimeout(() => {\n /** Trigger active state */\n this._CLASSTriggerNewState(attribute);\n\n /** If timeOut has end value */\n if (end) {\n attribute.time = setTimeout(() => {\n\n /** Trigger state back to inactive (original) */\n this._CLASSTriggerOldState(attribute);\n\n clearTimeout(attribute.time);\n }, end);\n }\n else {\n clearTimeout(attribute.time);\n }\n\n }, start);\n\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class: On scroll\n * ------------------------------------------------------------------------\n */\n\n _onClassScroll() {\n for (const attribute of Object.values(this.attributes.class.scroll.scroll)) {\n if (attribute.actions) {\n let scrolled = WINDOW.scroll.y;\n\n if (attribute.actions.unit === \"%\") {\n scrolled = WINDOW.scroll.y / (WINDOW.documentHeight - WINDOW.height) * 100;\n }\n\n if (attribute.actions.end) {\n if (scrolled >= attribute.actions.start && scrolled <= attribute.actions.end) {\n checkScroll.call(this, attribute, \"in\");\n } else {\n checkScroll.call(this, attribute, \"out\");\n }\n } else {\n if (scrolled >= attribute.actions.start) {\n checkScroll.call(this, attribute, \"in\");\n } else {\n if (attribute.actions.method === \"toggle\") {\n attribute.actions.done && toggle.call(this, attribute, true);\n }\n }\n }\n }\n }\n\n function checkScroll(attribute, method) {\n switch (method) {\n case \"in\":\n if (attribute.actions.method === \"toggle\") {\n !attribute.actions.done && toggle.call(this, attribute, false);\n } else {\n toggle.call(this, attribute, false);\n }\n break;\n\n case \"out\":\n if (attribute.actions.method === \"toggle\") {\n attribute.actions.done && toggle.call(this, attribute, true);\n } else {\n toggle.call(this, attribute, true);\n }\n break;\n }\n }\n\n function toggle(attribute, done) {\n if (!done) {\n this._CLASSTriggerNewState(attribute);\n attribute.actions.done = true;\n }\n if (done) {\n this._CLASSTriggerOldState(attribute);\n attribute.actions.done = false;\n }\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class: Trigger new state (add/remove/toggle class)\n * ------------------------------------------------------------------------\n */\n\n _CLASSTriggerNewState(attribute) {\n if (this.element.torClassDisabled) {\n return;\n }\n\n for (const target of getIterableElement(attribute.actions.target)) {\n if (attribute.priority) {\n setTimeout(() => {\n [...attribute.actions.classes].map(_class => target.classList[attribute.actions.method](_class) );\n }, 10);\n } else {\n [...attribute.actions.classes].map(_class => target.classList[attribute.actions.method](_class) );\n }\n\n if (attribute.actions.disable) {\n target.torClassDisabled = true;\n }\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class: Trigger old state (revert classList back to original)\n * ------------------------------------------------------------------------\n */\n\n _CLASSTriggerOldState(attribute) {\n if (this.element.torClassDisabled) {\n return;\n }\n\n let newMethod;\n\n switch (attribute.actions.method) {\n case \"add\":\n newMethod = \"remove\";\n break;\n\n case \"remove\":\n newMethod = \"add\";\n break;\n\n default:\n newMethod = \"toggle\";\n break;\n }\n\n for (const target of getIterableElement(attribute.actions.target)) {\n [...attribute.actions.classes].map(_class => target.classList[newMethod](_class) );\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Refresh\n * ------------------------------------------------------------------------\n */\n\n _refresh() {\n this.get.bounds();\n this._runAllEvents();\n this._LOOPCreate();\n }\n\n /**\n * ------------------------------------------------------------------------------------------------------------------------------------------------\n * Public functions\n * ------------------------------------------------------------------------------------------------------------------------------------------------\n */\n\n static refresh(elements) {\n INTERSECTION_OBSERVER.disconnect();\n\n callFunction({\n elements: getIterableElement(elements || \"[data-tor]\"),\n object: \"Main\",\n fn: \"_refresh\",\n });\n }\n\n /**\n * ------------------------------------------------------------------------------------------------------------------------------------------------\n * Initialization\n * ------------------------------------------------------------------------------------------------------------------------------------------------\n */\n\n static init(elements, options) {\n /** Get only elements that have not been initialized - doesn't have TORUS.Main class */\n elements = getIterableElement(elements || \"[data-tor]\");\n\n if (elements) {\n elements = elements.filter(item => { return !item.TORUS || !item.TORUS.Main });\n initClass({ name: \"Main\", elements: elements});\n }\n\n }\n}\n\nMUTATION();\n\nexport default TORUS.Main;","/**\n * ------------------------------------------------------------------------\n * Slider\n * (c) Torus Kit\n * ------------------------------------------------------------------------\n */\n\nimport TORUS from \"./namespace\";\n\nimport {\n getIterableElement,\n initClass,\n callFunction,\n optimizeAttribute,\n wrapElement,\n createPropertiesObject,\n getValuesForCurrentResolution,\n} from \"./util\";\n\nTORUS.Slider = class {\n constructor(element, options) {\n /** Main element */\n this.element = element;\n\n /** Element has been fully initialized */\n this.element.torusInitializedSlider = true;\n\n /** Optimize and replace original [data-tor] attribute */\n this.element.dataset.torSlider = optimizeAttribute(this.element.dataset.torSlider);\n\n /** Replace all ` ` spaces in (<value>) definition and split into an array */\n this.dataset = this.element.dataset.torSlider.replace(/\\((.*?)\\)+/g, match => match.replace(/ +/g, \"â–‘\")).split(\" \");\n\n /** Create store objects */\n this.attributes = {};\n this.bounds = {};\n this.items = {};\n this.navigation = {};\n\n /** Default Options */\n this.defaults = {\n count: 1, // Number of visible items per slide\n margin: 0, // Margin (space) between the items\n pullArea: 20, // If the slider doesn't exceed this area when dragging, it reverses back\n stretchOnDrag: true, // Stretch space between items on bounds when dragging\n stretchOnClick: false, // Stretch space between items on bounds on click next/prev button\n addParent: false, // Add parent `[data-tor-parent]` to `.tor-slider-item`\n slide: true, // Enable slider sliding\n vertical: false,\n drag: true,\n }\n\n this.sliderStart = 0;\n this.activeSlide = 0;\n this.lastSlide = 0;\n this.lastDifferenceStart = 0;\n this.axis = \"x\";\n this.bounds.lastStart = -1;\n this.bounds.lastEnd = 0;\n\n /** Run Getter and setter function */\n this._getterSetter();\n /** Set default and merge user options */\n this._setOptions(options);\n /** Wrap and create inner slider elements */\n this._wrapItems();\n /** Get slider and slider items dimensions */\n this.get.bounds();\n /** Add event listeners */\n this._addListeners();\n }\n\n /**\n * ------------------------------------------------------------------------\n * Options\n * ------------------------------------------------------------------------\n */\n\n _setOptions(options) {\n /** Options defined in [data-tor-slider] attribute */\n createPropertiesObject(this, this.dataset, \"slider\");\n\n /** Merge user options with defaults */\n this.options = Object.assign(this.defaults, options);\n this.options.additional = {};\n\n /** If there are additional options defined in `[data-tor-slider]`, create them or replace the default ones */\n for (const attribute of Object.values(this.attributes.slider.idle)) {\n if (attribute.values) {\n let GV = getValuesForCurrentResolution(attribute, 1);\n let name = attribute.property.name.toCamelCase();\n this.options[name] = GV.value;\n\n if (Object.keys(attribute.options).length) {\n for (const [key, value] of Object.entries(attribute.options)) {\n this.options.additional[name] = this.options.additional[name] || {};\n this.options.additional[name][key] = value;\n }\n }\n }\n }\n\n /** If `stack(true)` override some default options */\n if (this.options.stack) {\n this.options.slide = false;\n this.options.drag = false;\n this.options.count = 1;\n this.options.margin = 0;\n }\n\n this.options.count && this.element.style.setProperty(\"--tor-slider-items-count\", this.options.count);\n (this.options.margin || this.options.margin === 0) && this.element.style.setProperty(\"--tor-slider-margin\", `${this.options.margin}px`);\n\n if (this.options.additional) {\n let options = this.options.additional;\n\n (options.controls &&Â options.controls.icons === \"chevron\") && this.element.classList.add(\"tor-slider-controls-chevron\");\n (options.controls &&Â options.controls.theme === \"dark\") && this.element.classList.add(\"tor-slider-controls-dark\");\n (options.indicators && options.indicators.theme === \"dark\") && this.element.classList.add(\"tor-slider-indicators-dark\");\n (options.indicators && options.indicators.justify) && this.element.style.setProperty(\"--tor-indicators-justify\", options.indicators.justify);\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Wrap elements into corresponding wrappers\n * ------------------------------------------------------------------------\n */\n\n _wrapItems() {\n /** Select `.tor-slider-wrapper` wrapper element */\n this.slider = this.element.querySelector(\".tor-slider-wrapper\");\n\n /** If slider contains a wrapper */\n if (this.slider) {\n wrap.call(this, this.slider.children);\n } else {\n wrap.call(this, this.element.children);\n wrapElement(this.itemsElements, this.element, \"tor-slider-wrapper\");\n this.slider = this.element.querySelector(\".tor-slider-wrapper\");\n }\n\n /** Wrap each children into `.tor-slider-item` */\n function wrap([...children]) {\n children.map(item => {\n !/tor-slider/.test(item.classList) && wrapElement(item, \"div\", \"tor-slider-item\");\n });\n\n this.itemsElements = this.element.querySelectorAll(\".tor-slider-item\");\n }\n\n /** Add parent triggers if */\n if (this.options.addParent) {\n for (const [i, item] of Object.entries(this.itemsElements)) {\n i === \"0\" && item.classList.add(\"active\", \"show\");\n item.dataset.torParent = this.options.addParent.replace(/â–‘/g, \" \")\n }\n }\n\n /** If slider contains images */\n this.images = [...this.element.querySelectorAll(\"img\")];\n\n /** If slider contains `data-tor` elements */\n this.torElements = [...this.element.querySelectorAll(\"[data-tor]\")];\n\n this.itemsLength = this.itemsElements.length;\n this._createItemsObject();\n }\n\n /**\n * ------------------------------------------------------------------------\n * Create `this.items` object that stores data about each `.tor-slider-item`\n * ------------------------------------------------------------------------\n */\n\n _createItemsObject() {\n for (const [i, item] of Object.entries(this.itemsElements)) {\n this.items[i] = {};\n this.items[i].id = i;\n this.items[i].element = item;\n this.items[i].bounds = {};\n\n this.items[i].element.TORUS = this.items[i].element.TORUS || {};\n this.items[i].element.TORUS.sliderItem = {\n parent: this,\n id: i,\n calculated: false,\n };\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Defaults\n * ------------------------------------------------------------------------\n */\n\n _calculateDefaults() {\n this.maxStart = 0;\n this.maxEnd = -this.sliderSize + this.bounds.size - this.options.margin;\n this.maxSlides = this.itemsLength - this.options.count;\n\n if (this.options.vertical) {\n this.element.style.setProperty(\"--tor-slider-height\", `${this.bounds.size}px`);\n this.axis = \"y\";\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Define getter and setter functions\n * ------------------------------------------------------------------------\n */\n\n _getterSetter() {\n /** Getter */\n this.get = {\n bounds: () => {\n this._getBounds();\n },\n images: url => new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img);\n img.onerror = () => reject(img);\n\n img.src = url;\n }),\n }\n\n /** Setter */\n this.set = {\n bounds: (bounds, isItem) => {\n this._setBounds(bounds, isItem);\n },\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Get slider and child items bounds\n * ------------------------------------------------------------------------\n */\n\n _getBounds(params) {\n this.promises = [];\n this.sliderSize = 0;\n this.bounds.lastStart = -1;\n\n\n\n /** IO callback */\n const onIntersect = (entries) => {\n\n for (const entry of entries) {\n let _this = entry.target.TORUS;\n if (_this.Slider /*&& !this.bounds.calculated*/) {\n this.set.bounds(entry.boundingClientRect);\n }\n if (_this.sliderItem /*&& !_this.sliderItem.calculated*/) {\n this.set.bounds(entry.boundingClientRect, _this.sliderItem.id);\n }\n }\n\n IO.disconnect();\n\n Promise.all(this.promises).then(() => {\n this._promisesDone(params);\n });\n }\n\n /** IO init */\n const IO = new IntersectionObserver(onIntersect);\n\n if (this.images.length) {\n Promise.allSettled(this.images.map(item => item.src).map(this.get.images))\n .then(() => {\n runIO.call(this);\n });\n } else {\n runIO.call(this);\n }\n\n function runIO() {\n IO.observe(this.element);\n for (const item of Object.values(this.items)) {\n IO.observe(item.element);\n }\n }\n\n }\n\n /**\n * ------------------------------------------------------------------------\n * Set element bounds\n * ------------------------------------------------------------------------\n */\n\n _setBounds(bounds, id) {\n let promise = new Promise((resolve) => {\n let B;\n\n if (id) {\n B = this.items[id].bounds;\n } else {\n B = this.bounds;\n }\n\n B.calculated = true;\n B.rect = bounds;\n B.bottom = Math.round(B.rect.bottom);\n B.width = Math.round(B.rect.width);\n B.height = Math.round(B.rect.height);\n\n if (id) {\n if (this.options.vertical) {\n B.size = B.height + (Number(id) < this.itemsLength ? this.options.margin : -this.options.margin);\n } else {\n B.size = B.width + (Number(id) <Â this.itemsLength ? this.options.margin : -this.options.margin);\n }\n\n if (this.bounds.lastStart < 0) {\n this.bounds.lastStart = 0;\n B.start = 0;\n B.end = B.size;\n } else {\n this.bounds.lastStart += B.size;\n B.start = this.bounds.lastStart;\n B.end = B.start + B.size;\n }\n\n B.center = B.start + B.size / 2;\n this.sliderSize = Math.abs(this.sliderStart) + B.end - (this.options.margin*2);\n\n } else {\n if (this.options.vertical) {\n B.size = B.height - this.options.margin;\n } else {\n B.size = B.width;\n }\n }\n\n resolve(B);\n });\n\n this.promises.push(promise);\n }\n\n /**\n * ------------------------------------------------------------------------\n * When all promises are settled\n * ------------------------------------------------------------------------\n */\n\n _promisesDone(params) {\n this.element.classList.add(\"tor-done\");\n this._calculateDefaults();\n this._checkBounds();\n this._createNavigation();\n this._setClass(\"show\");\n this._setClass(\"active\");\n\n if (params && params.refreshing) {\n this.lastDifferenceStart = -this.items[this.activeSlide].bounds.start;\n this.sliderStart = -this.items[this.activeSlide].bounds.start;\n this._translate(this.sliderStart);\n }\n\n this._setIndicatorsClass();\n }\n\n /**\n * ------------------------------------------------------------------------\n * Set `.active` or `.show` class\n * ------------------------------------------------------------------------\n */\n\n _setClass(_class) {\n for (const item of Object.values(this.items)) {\n if (item.bounds.center + this.sliderStart > 0 && item.bounds.center + this.sliderStart < this.bounds.size) {\n item[_class] = true;\n item.element.classList.add(_class);\n } else {\n item[_class] = false;\n item.element.classList.remove(_class);\n }\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Define the sliding direction\n * ------------------------------------------------------------------------\n */\n\n _slideTo(direction) {\n switch (direction) {\n case \"next\":\n if (this.activeSlide < this.maxSlides) {\n this.activeSlide++;\n setActiveAndTranslate.call(this);\n }\n break;\n\n case \"prev\":\n if (this.activeSlide > 0) {\n this.activeSlide--;\n setActiveAndTranslate.call(this);\n }\n break;\n\n default:\n if (Number(direction) < this.maxSlides) {\n this.activeSlide = Number(direction);\n } else {\n this.activeSlide = this.maxSlides;\n }\n setActiveAndTranslate.call(this);\n break;\n }\n\n function setActiveAndTranslate() {\n if (this.activeSlide !== this.lastSlide) {\n this.sliderStart = this.lastDifferenceStart = -this.items[this.activeSlide].bounds.start;\n this._translate(this.sliderStart);\n this._checkBounds();\n\n (!this.options.stack || !this.options.slide) && this.element.classList.add(\"tor-translating\");\n }\n }\n\n if (this.options.stack) {\n this._setClass(\"active\");\n }\n\n this._setIndicatorsClass();\n this.lastSlide = this.activeSlide;\n }\n\n /**\n * ------------------------------------------------------------------------\n * When slider transition (sliding) ends\n * ------------------------------------------------------------------------\n */\n\n _onTransitionEnd(e) {\n if (e.propertyName === \"transform\" && e.target === this.slider) {\n this._setClass(\"active\");\n this.element.classList.remove(\"tor-translating\");\n\n this._setIndicatorsClass();\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * On pointer down (mouse or touch down)\n * ------------------------------------------------------------------------\n */\n\n _onDown(e) {\n requestAnimationFrame(() => {\n if (e.button === 0) {\n this.isDown = true;\n this.startX = e.clientX;\n this.startY = e.clientY;\n this._checkBounds();\n }\n })\n }\n\n /**\n * ------------------------------------------------------------------------\n * On pointer move (mouse or touch moving)\n * ------------------------------------------------------------------------\n */\n\n _onMove(e) {\n requestAnimationFrame(() => {\n if (this.isDown) {\n this.element.classList.add(\"tor-dragging\");\n\n if (this.options.vertical) {\n this.differenceStart = e.clientY - this.startY;\n } else {\n this.differenceStart = e.clientX - this.startX;\n }\n\n this.sliderStart = this.lastDifferenceStart + this.differenceStart;\n\n if (this.sliderStart > this.maxStart) {\n this.sliderStart = this.maxStart;\n }\n if (this.sliderStart < this.maxEnd) {\n this.sliderStart = this.maxEnd;\n }\n\n this._translate(this.sliderStart);\n }\n })\n }\n\n /**\n * ------------------------------------------------------------------------\n * On pointer up (mouse or touch release)\n * ------------------------------------------------------------------------\n */\n\n _onUp() {\n if (this.isDown) {\n this.element.classList.remove(\"tor-dragging\");\n this.isDown = false;\n\n if (this.differenceStart < 0) {\n for (let i = 0; i < this.itemsLength; i++) {\n let draggedStart = this.items[i].bounds.start + this.sliderStart;\n if (draggedStart > -this.options.pullArea) {\n setActiveAndTranslate.call(this, i);\n break;\n }\n }\n }\n\n if (this.differenceStart > 0) {\n for (let i = this.itemsLength - 1; i >= 0; i--) {\n let draggedStart = this.items[i].bounds.start + this.sliderStart;\n\n if (draggedStart < this.options.pullArea) {\n setActiveAndTranslate.call(this, i);\n break;\n }\n }\n }\n\n // TODO: Free drag\n // this.sliderStart += this.differenceStart;\n // if (this.sliderStart > this.maxStart) {\n // this.sliderStart = this.maxStart;\n // }\n // if (this.sliderStart < this.maxEnd) {\n // this.sliderStart = this.maxEnd;\n // }\n // this._translate({left: this.sliderStart});\n\n this.lastDifferenceStart = this.sliderStart;\n this._setClass(\"active\");\n\n function setActiveAndTranslate(i) {\n this.activeSlide = Number(this.items[i].id);\n this.sliderStart = -this.items[this.activeSlide].bounds.start;\n this._translate(this.sliderStart);\n }\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * On drag start\n *\n * Disable browser dragging behavior when pointer starts to drag a slider\n * ------------------------------------------------------------------------\n */\n\n _onDragStart(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n /**\n * ------------------------------------------------------------------------\n * Check if left or right bound has reached\n * ------------------------------------------------------------------------\n */\n\n _checkBounds() {\n this.reachedStart = this.sliderStart >= 0;\n this.reachedEnd = this.sliderStart <= this.maxEnd;\n }\n\n /**\n * ------------------------------------------------------------------------\n * Translate the `.tor-slider-wrapper` element\n * ------------------------------------------------------------------------\n */\n\n _translate(transform) {\n if (!this.options.stack) {\n let x = this.axis === \"x\" ? transform : 0;\n let y = this.axis === \"y\" ? transform : 0;\n\n this.slider.style.setProperty(\"transform\", `translate3d(${x}px, ${y}px, 0px)`);\n }\n\n this._setClass(\"show\");\n }\n\n /**\n * ------------------------------------------------------------------------\n * Add event listeners\n * ------------------------------------------------------------------------\n */\n\n _addListeners() {\n if (this.options.drag) {\n document.addEventListener(\"pointerup\", this._onUp.bind(this));\n document.addEventListener(\"pointermove\", this._onMove.bind(this), {passive: true});\n // document.addEventListener(\"mousemove\", this._onMove.bind(this), {passive: true});\n // document.addEventListener(\"touchmove\", this._onMove.bind(this), {passive: true});\n this.slider.addEventListener(\"pointerdown\", this._onDown.bind(this));\n }\n\n this.slider.addEventListener(\"transitionend\", this._onTransitionEnd.bind(this));\n this.slider.addEventListener(\"dragstart\", this._onDragStart.bind(this));\n }\n\n /**\n * ------------------------------------------------------------------------\n * Set or remove `.active` class from indicator item elements\n * ------------------------------------------------------------------------\n */\n\n _setIndicatorsClass() {\n if (this.options.indicators) {\n if (this.navigation.indicatorsElements && this.navigation.indicatorsElements[this.activeSlide]) {\n [...Object.values(this.navigation.indicatorsElements)].map(item => item.classList.remove(\"active\"));\n this.navigation.indicatorsElements[this.activeSlide].classList.add(\"active\");\n }\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Create Controls\n * ------------------------------------------------------------------------\n */\n\n _createNavigation() {\n if (this.options.controls) {\n /** At first, remove the controls element */\n this.navigation.controls && this.navigation.controls.remove();\n\n this.navigation.controls = document.createElement(\"nav\");\n this.navigation.controls.classList.add(\"tor-slider-controls\");\n this.element.appendChild(this.navigation.controls);\n\n for (const direction of [\"prev\", \"next\"]) {\n let control;\n control = document.createElement(\"div\");\n control.addEventListener(\"click\", this._slideTo.bind(this, direction));\n control.classList.add(`tor-slider-${direction}`);\n control.setAttribute(\"role\", \"button\");\n control.setAttribute(\"aria-label\", `Slider ${direction} button`);\n this.navigation.controls.appendChild(control);\n }\n } else {\n this.navigation.controls && this.navigation.controls.remove();\n }\n\n if (this.options.indicators) {\n /** At first, remove the indicator element */\n if (this.navigation.indicators) {\n [...Object.values(this.navigation.indicatorsElements)].map(item => item.remove());\n this.navigation.indicators.remove();\n }\n\n this.navigation.indicatorsElements = {};\n\n this.navigation.indicators = document.createElement(\"ul\");\n this.navigation.indicators.classList.add(\"tor-slider-indicators\");\n this.navigation.indicators.addEventListener(\"click\", clicked.bind(this));\n this.element.appendChild(this.navigation.indicators);\n\n for (let i = 0; i < this.itemsLength / this.options.count; i++) {\n let indicator;\n indicator = document.createElement(\"li\");\n indicator.setAttribute(\"role\", \"button\");\n indicator.setAttribute(\"aria-label\", `Show the number ${i * this.options.count} slide button`);\n indicator.setAttribute(\"data-tor-slide-to\", i * this.options.count);\n this.navigation.indicators.appendChild(indicator);\n this.navigation.indicatorsElements[i * this.options.count] = indicator;\n }\n\n function clicked(e) {\n this._slideTo(Number(e.target.dataset.torSlideTo));\n }\n } else {\n this.navigation.indicators && this.navigation.indicators.remove();\n }\n }\n\n _refresh() {\n this._setOptions();\n this.get.bounds({refreshing: true});\n }\n\n /**\n * ------------------------------------------------------------------------\n * Static functions\n * ------------------------------------------------------------------------\n */\n\n /**\n * Slide to specific slide\n */\n\n static slideTo(elements, direction) {\n callFunction({\n elements: getIterableElement(elements),\n object: \"Slider\",\n fn: \"_slideTo\",\n argument: direction,\n });\n }\n\n /**\n * Refresh slider\n */\n\n static refresh(elements) {\n callFunction({\n elements: getIterableElement(elements || \"[data-tor-slider]\"),\n object: \"Slider\",\n fn: \"_refresh\",\n });\n }\n\n /**\n * Create external controls\n */\n\n static externalNavigation() {\n for (const navigation of document.querySelectorAll(\"[data-tor-slider-target]\")) {\n\n if (!navigation.torExternalControl) {\n const targets = document.querySelectorAll(navigation.dataset.torSliderTarget);\n navigation.torExternalControl = true;\n\n navigation.addEventListener(\"click\", (e) => {\n e.preventDefault();\n let control = e.target.dataset.torSlideTo;\n if (control) {\n [...targets].map(target => TORUS.Slider.slideTo(target, control));\n }\n });\n }\n }\n }\n\n /**\n * Init\n */\n\n static init(elements, options) {\n elements = getIterableElement(elements || \"[data-tor-slider]\");\n initClass({ name: \"Slider\", elements: elements, options: options });\n this.externalNavigation();\n }\n}\n\nexport default TORUS.Slider;","/**\n * ------------------------------------------------------------------------\n * Background Image\n * (c) Torus Kit\n * ------------------------------------------------------------------------\n */\n\nimport TORUS from \"./namespace\";\n\nimport {\n getIterableElement,\n initClass,\n} from \"./util\";\n\nTORUS.BgImage = class {\n constructor(element, options) {\n this.element = element;\n this.bgImageElement = element.querySelector(\".bg-img\");\n\n if(this.bgImageElement) {\n this.element.style.setProperty(\"background-image\", `url('${this.bgImageElement.getAttribute(\"src\")}')`);\n }\n\n if(options) {\n this.element.style.setProperty(\"background-image\", `url('${options}')`);\n }\n }\n\n static init(elements, options) {\n elements = getIterableElement(elements || \".has-bg-img, .has-bg-pattern\");\n initClass({name: \"BgImage\", elements: elements, options: options});\n }\n}\n\nexport default TORUS.BgImage;"],"names":[],"mappings":"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"}