{"version":3,"sources":["webpack://BirnPartners/./Src/Scripts/components/split-text.js","webpack://BirnPartners/./node_modules/splitting/dist/splitting.js"],"names":["constructor","heroHeadline","document","querySelector","style","opacity","module","exports","root","createText","createTextNode","bind","setProperty","el","varName","value","appendChild","child","createElement","parent","key","text","whitespace","className","setAttribute","textContent","getData","getAttribute","$","e","length","nodeName","slice","call","querySelectorAll","Array2D","len","a","each","items","fn","some","selectFrom","obj","plugins","resolvePlugins","by","deps","index","indexOf","unshift","depends","p","indexOfParent","splice","createPlugin","split","resolve","map","add","opts","splitText","splitOn","includePrevious","preserveWhitespace","normalize","elements","F","createDocumentFragment","push","previousSibling","allElements","childNodes","next","tagName","hasChildNodes","apply","wholeText","contents","trim","i","splitEl","innerHTML","WORDS","wordPlugin","CHARS","charPlugin","options","ctx","results","word","Splitting","target","force","opts2","dest","src","k","copy","plugin","pluginBy","key2","element","prefix","cssVar","Array","isArray","item","classList","detectGrid","side","matching","children","c","w","val","Math","round","Object","keys","Number","sort","byNumber","b","html","content","outerHTML","linePlugin","itemPlugin","rowPlugin","columnPlugin","gridPlugin","LAYOUT","layoutPlugin","rows","columns","image","currentSrc","img","totalCells","container","cell","cellRowPlugin","rowCount","result","floor","cellColumnPlugin","columnCount","cellPlugin","opt","factory"],"mappings":"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","file":"388.a3fee2c9f97ca622ed61.js","sourcesContent":["import Splitting from \"splitting\";\n\nexport default class SplitText {\n constructor() {\n const heroHeadline = document.querySelector('.hero__headline');\n\n Splitting();\n\n heroHeadline.style.opacity = '1';\n }\n}\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.Splitting = factory());\n}(this, (function () { 'use strict';\n\nvar root = document;\nvar createText = root.createTextNode.bind(root);\n\n/**\n * # setProperty\n * Apply a CSS var\n * @param el{HTMLElement} \n * @param varName {string} \n * @param value {string|number} \n */\nfunction setProperty(el, varName, value) {\n el.style.setProperty(varName, value);\n} \n\n/**\n * \n * @param {Node} el \n * @param {Node} child \n */\nfunction appendChild(el, child) {\n return el.appendChild(child);\n}\n\nfunction createElement(parent, key, text, whitespace) {\n var el = root.createElement('span');\n key && (el.className = key); \n if (text) { \n !whitespace && el.setAttribute(\"data-\" + key, text);\n el.textContent = text; \n }\n return (parent && appendChild(parent, el)) || el;\n}\n\nfunction getData(el, key) {\n return el.getAttribute(\"data-\" + key)\n}\n\n/**\n * \n * @param e {import('../types').Target} \n * @param parent {HTMLElement}\n * @returns {HTMLElement[]}\n */\nfunction $(e, parent) {\n return !e || e.length == 0\n ? // null or empty string returns empty array\n []\n : e.nodeName\n ? // a single element is wrapped in an array\n [e]\n : // selector and NodeList are converted to Element[]\n [].slice.call(e[0].nodeName ? e : (parent || root).querySelectorAll(e));\n}\n\n/**\n * Creates and fills an array with the value provided\n * @template {T}\n * @param {number} len\n * @param {() => T} valueProvider\n * @return {T}\n */\nfunction Array2D(len) {\n var a = [];\n for (; len--; ) {\n a[len] = [];\n }\n return a;\n}\n\nfunction each(items, fn) {\n items && items.some(fn);\n}\n\nfunction selectFrom(obj) {\n return function (key) {\n return obj[key];\n }\n}\n\n/**\n * # Splitting.index\n * Index split elements and add them to a Splitting instance.\n *\n * @param element {HTMLElement}\n * @param key {string}\n * @param items {HTMLElement[] | HTMLElement[][]}\n */\nfunction index(element, key, items) {\n var prefix = '--' + key;\n var cssVar = prefix + \"-index\";\n\n each(items, function (items, i) {\n if (Array.isArray(items)) {\n each(items, function(item) {\n setProperty(item, cssVar, i);\n });\n } else {\n setProperty(items, cssVar, i);\n }\n });\n\n setProperty(element, prefix + \"-total\", items.length);\n}\n\n/**\n * @type {Record}\n */\nvar plugins = {};\n\n/**\n * @param by {string}\n * @param parent {string}\n * @param deps {string[]}\n * @return {string[]}\n */\nfunction resolvePlugins(by, parent, deps) {\n // skip if already visited this dependency\n var index = deps.indexOf(by);\n if (index == -1) {\n // if new to dependency array, add to the beginning\n deps.unshift(by);\n\n // recursively call this function for all dependencies\n each(plugins[by].depends, function(p) {\n resolvePlugins(p, by, deps);\n });\n } else {\n // if this dependency was added already move to the left of\n // the parent dependency so it gets loaded in order\n var indexOfParent = deps.indexOf(parent);\n deps.splice(index, 1);\n deps.splice(indexOfParent, 0, by);\n }\n return deps;\n}\n\n/**\n * Internal utility for creating plugins... essentially to reduce\n * the size of the library\n * @param {string} by \n * @param {string} key \n * @param {string[]} depends \n * @param {Function} split \n * @returns {import('./types').ISplittingPlugin}\n */\nfunction createPlugin(by, depends, key, split) {\n return {\n by: by,\n depends: depends,\n key: key,\n split: split\n }\n}\n\n/**\n *\n * @param by {string}\n * @returns {import('./types').ISplittingPlugin[]}\n */\nfunction resolve(by) {\n return resolvePlugins(by, 0, []).map(selectFrom(plugins));\n}\n\n/**\n * Adds a new plugin to splitting\n * @param opts {import('./types').ISplittingPlugin}\n */\nfunction add(opts) {\n plugins[opts.by] = opts;\n}\n\n/**\n * # Splitting.split\n * Split an element's textContent into individual elements\n * @param el {Node} Element to split\n * @param key {string}\n * @param splitOn {string}\n * @param includeSpace {boolean}\n * @returns {HTMLElement[]}\n */\nfunction splitText(el, key, splitOn, includePrevious, preserveWhitespace) {\n // Combine any strange text nodes or empty whitespace.\n el.normalize();\n\n // Use fragment to prevent unnecessary DOM thrashing.\n var elements = [];\n var F = document.createDocumentFragment();\n\n if (includePrevious) {\n elements.push(el.previousSibling);\n }\n\n var allElements = [];\n $(el.childNodes).some(function(next) {\n if (next.tagName && !next.hasChildNodes()) {\n // keep elements without child nodes (no text and no children)\n allElements.push(next);\n return;\n }\n // Recursively run through child nodes\n if (next.childNodes && next.childNodes.length) {\n allElements.push(next);\n elements.push.apply(elements, splitText(next, key, splitOn, includePrevious, preserveWhitespace));\n return;\n }\n\n // Get the text to split, trimming out the whitespace\n /** @type {string} */\n var wholeText = next.wholeText || '';\n var contents = wholeText.trim();\n\n // If there's no text left after trimming whitespace, continue the loop\n if (contents.length) {\n // insert leading space if there was one\n if (wholeText[0] === ' ') {\n allElements.push(createText(' '));\n }\n // Concatenate the split text children back into the full array\n each(contents.split(splitOn), function(splitText, i) {\n if (i && preserveWhitespace) {\n allElements.push(createElement(F, \"whitespace\", \" \", preserveWhitespace));\n }\n var splitEl = createElement(F, key, splitText);\n elements.push(splitEl);\n allElements.push(splitEl);\n }); \n // insert trailing space if there was one\n if (wholeText[wholeText.length - 1] === ' ') {\n allElements.push(createText(' '));\n }\n }\n });\n\n each(allElements, function(el) {\n appendChild(F, el);\n });\n\n // Clear out the existing element\n el.innerHTML = \"\";\n appendChild(el, F);\n return elements;\n}\n\n/** an empty value */\nvar _ = 0;\n\nfunction copy(dest, src) {\n for (var k in src) {\n dest[k] = src[k];\n }\n return dest;\n}\n\nvar WORDS = 'words';\n\nvar wordPlugin = createPlugin(\n /*by: */ WORDS,\n /*depends: */ _,\n /*key: */ 'word', \n /*split: */ function(el) {\n return splitText(el, 'word', /\\s+/, 0, 1)\n }\n);\n\nvar CHARS = \"chars\";\n\nvar charPlugin = createPlugin(\n /*by: */ CHARS,\n /*depends: */ [WORDS],\n /*key: */ \"char\", \n /*split: */ function(el, options, ctx) {\n var results = [];\n\n each(ctx[WORDS], function(word, i) {\n results.push.apply(results, splitText(word, \"char\", \"\", options.whitespace && i));\n });\n\n return results;\n }\n);\n\n/**\n * # Splitting\n * \n * @param opts {import('./types').ISplittingOptions} \n */\nfunction Splitting (opts) {\n opts = opts || {};\n var key = opts.key;\n\n return $(opts.target || '[data-splitting]').map(function(el) {\n var ctx = el['🍌']; \n if (!opts.force && ctx) {\n return ctx;\n }\n\n ctx = el['🍌'] = { el: el };\n var items = resolve(opts.by || getData(el, 'splitting') || CHARS);\n var opts2 = copy({}, opts);\n each(items, function(plugin) {\n if (plugin.split) {\n var pluginBy = plugin.by;\n var key2 = (key ? '-' + key : '') + plugin.key;\n var results = plugin.split(el, opts2, ctx);\n key2 && index(el, key2, results);\n ctx[pluginBy] = results;\n el.classList.add(pluginBy);\n } \n });\n\n el.classList.add('splitting');\n return ctx;\n })\n}\n\n/**\n * # Splitting.html\n * \n * @param opts {import('./types').ISplittingOptions}\n */\nfunction html(opts) {\n opts = opts || {};\n var parent = opts.target = createElement();\n parent.innerHTML = opts.content;\n Splitting(opts);\n return parent.outerHTML\n}\n\nSplitting.html = html;\nSplitting.add = add;\n\nfunction detectGrid(el, options, side) {\n var items = $(options.matching || el.children, el);\n var c = {};\n\n each(items, function(w) {\n var val = Math.round(w[side]);\n (c[val] || (c[val] = [])).push(w);\n });\n\n return Object.keys(c).map(Number).sort(byNumber).map(selectFrom(c));\n}\n\nfunction byNumber(a, b) {\n return a - b;\n}\n\nvar linePlugin = createPlugin(\n /*by: */ 'lines',\n /*depends: */ [WORDS],\n /*key: */ 'line',\n /*split: */ function(el, options, ctx) {\n return detectGrid(el, { matching: ctx[WORDS] }, 'offsetTop')\n }\n);\n\nvar itemPlugin = createPlugin(\n /*by: */ 'items',\n /*depends: */ _,\n /*key: */ 'item', \n /*split: */ function(el, options) {\n return $(options.matching || el.children, el)\n }\n);\n\nvar rowPlugin = createPlugin(\n /*by: */ 'rows',\n /*depends: */ _,\n /*key: */ 'row', \n /*split: */ function(el, options) {\n return detectGrid(el, options, \"offsetTop\");\n }\n);\n\nvar columnPlugin = createPlugin(\n /*by: */ 'cols',\n /*depends: */ _,\n /*key: */ \"col\", \n /*split: */ function(el, options) {\n return detectGrid(el, options, \"offsetLeft\");\n }\n);\n\nvar gridPlugin = createPlugin(\n /*by: */ 'grid',\n /*depends: */ ['rows', 'cols']\n);\n\nvar LAYOUT = \"layout\";\n\nvar layoutPlugin = createPlugin(\n /*by: */ LAYOUT,\n /*depends: */ _,\n /*key: */ _,\n /*split: */ function(el, opts) {\n // detect and set options\n var rows = opts.rows = +(opts.rows || getData(el, 'rows') || 1);\n var columns = opts.columns = +(opts.columns || getData(el, 'columns') || 1);\n\n // Seek out the first if the value is true \n opts.image = opts.image || getData(el, 'image') || el.currentSrc || el.src;\n if (opts.image) {\n var img = $(\"img\", el)[0];\n opts.image = img && (img.currentSrc || img.src);\n }\n\n // add optional image to background\n if (opts.image) {\n setProperty(el, \"background-image\", \"url(\" + opts.image + \")\");\n }\n\n var totalCells = rows * columns;\n var elements = [];\n\n var container = createElement(_, \"cell-grid\");\n while (totalCells--) {\n // Create a span\n var cell = createElement(container, \"cell\");\n createElement(cell, \"cell-inner\");\n elements.push(cell);\n }\n\n // Append elements back into the parent\n appendChild(el, container);\n\n return elements;\n }\n);\n\nvar cellRowPlugin = createPlugin(\n /*by: */ \"cellRows\",\n /*depends: */ [LAYOUT],\n /*key: */ \"row\",\n /*split: */ function(el, opts, ctx) {\n var rowCount = opts.rows;\n var result = Array2D(rowCount);\n\n each(ctx[LAYOUT], function(cell, i, src) {\n result[Math.floor(i / (src.length / rowCount))].push(cell);\n });\n\n return result;\n }\n);\n\nvar cellColumnPlugin = createPlugin(\n /*by: */ \"cellColumns\",\n /*depends: */ [LAYOUT],\n /*key: */ \"col\",\n /*split: */ function(el, opts, ctx) {\n var columnCount = opts.columns;\n var result = Array2D(columnCount);\n\n each(ctx[LAYOUT], function(cell, i) {\n result[i % columnCount].push(cell);\n });\n\n return result;\n }\n);\n\nvar cellPlugin = createPlugin(\n /*by: */ \"cells\",\n /*depends: */ ['cellRows', 'cellColumns'],\n /*key: */ \"cell\", \n /*split: */ function(el, opt, ctx) { \n // re-index the layout as the cells\n return ctx[LAYOUT];\n }\n);\n\n// install plugins\n// word/char plugins\nadd(wordPlugin);\nadd(charPlugin);\nadd(linePlugin);\n// grid plugins\nadd(itemPlugin);\nadd(rowPlugin);\nadd(columnPlugin);\nadd(gridPlugin);\n// cell-layout plugins\nadd(layoutPlugin);\nadd(cellRowPlugin);\nadd(cellColumnPlugin);\nadd(cellPlugin);\n\nreturn Splitting;\n\n})));\n"],"sourceRoot":""}