{"version":3,"sources":["webpack:///./src/js/modules/breakToLines.js","webpack:///./src/js/modules/caseStudiesTabItems.js","webpack:///./node_modules/splitting/dist/splitting.js"],"names":["Module","this","dom","overlay","el","querySelector","text","link","svg","image","lineSplit","target","by","handleResize","addEventListener","handleHover","bind","handleMouseOut","window","isMobile","matchMedia","matches","visible","timeOverlay","offsetWidth","showTime","style","visibility","showSequence","lines","reduce","sequence","line","index","lineSequence","opacity","transform","at","duration","delay","push","lineSplitEnd","length","svgSequence","animate","timeline","dissappearTime","hideSequence","finished","then","Component","caseStudiesTabButton","grid","items","CASE_STUDIES","limit","Number","dataset","loadMoreLimit","loadMoreItem","loadAll","lastIndex","initGrid","handleClick","handleHoverIn","handleHoverOut","color","getElements","showLoadFullButton","getNextItems","nextItems","minHeight","max","appendChild","getCardTemplate","querySelectorAll","forEach","card","classList","contains","breakToLines","add","display","item","shortTeaser","trim","title","technology","url","imageMobile","description","article","document","createElement","hoverText","hasTeaser","innerHTML","join","module","exports","root","createText","createTextNode","setProperty","varName","value","child","parent","key","whitespace","className","setAttribute","textContent","getData","getAttribute","$","e","nodeName","slice","call","Array2D","len","a","each","fn","some","selectFrom","obj","plugins","createPlugin","depends","split","resolve","resolvePlugins","deps","indexOf","unshift","p","indexOfParent","splice","map","opts","splitText","splitOn","includePrevious","preserveWhitespace","normalize","elements","F","createDocumentFragment","previousSibling","allElements","childNodes","next","tagName","hasChildNodes","apply","wholeText","contents","i","splitEl","wordPlugin","charPlugin","options","ctx","results","word","Splitting","force","opts2","dest","src","k","copy","plugin","pluginBy","key2","element","prefix","cssVar","Array","isArray","detectGrid","side","matching","children","c","w","val","Math","round","Object","keys","sort","byNumber","b","html","content","outerHTML","linePlugin","itemPlugin","rowPlugin","columnPlugin","gridPlugin","layoutPlugin","rows","columns","currentSrc","img","totalCells","container","cell","cellRowPlugin","rowCount","result","floor","cellColumnPlugin","columnCount","cellPlugin","opt","factory"],"mappings":"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","file":"26.3f15b47b264528c36ab0.js","sourcesContent":["import { animate, timeline } from 'motion';\n\nimport { Component } from '@verndale/core';\nimport Splitting from 'splitting';\n\nclass Module extends Component {\n  setupDefaults() {\n    this.dom = {\n      overlay: this.el.querySelector('.card__overlay'),\n      text: this.el.querySelector('.card__text'),\n      link: this.el.querySelector('a'),\n      svg: this.el.querySelector('svg'),\n      image: this.el.querySelector('img')\n    };\n\n    this.dom.text.lineSplit = Splitting({\n      target: this.dom.text,\n      by: 'lines'\n    });\n    this.handleResize();\n  }\n\n  addListeners() {\n    this.dom.link.addEventListener('mouseover', this.handleHover.bind(this));\n    this.dom.link.addEventListener('mouseout', this.handleMouseOut.bind(this));\n    window.addEventListener('resize', this.handleResize.bind(this));\n  }\n\n  handleResize() {\n    this.isMobile = window.matchMedia('(max-width: 1025px)').matches;\n    if (this.visible && this.isMobile) {\n      this.handleMouseOut();\n    }\n  }\n\n  handleHover() {\n    if (!this.isMobile) {\n      this.timeOverlay = 0.35 + this.el.offsetWidth * 0.0003;\n\n      this.showTime = this.timeOverlay * 0.12;\n      this.dom.text.style.visibility = 'visible';\n\n      const showSequence = this.dom.text.lineSplit[0].lines.reduce(\n        (sequence, line, index) => {\n          const lineSequence = [\n            line,\n            {\n              opacity: [0, 1],\n              transform: ['translate(-50px, 0)', 'translate(0, 0)']\n            },\n            { at: this.showTime * index },\n            { duration: this.showTime, delay: this.timeOverlay * 0.6 }\n          ];\n          sequence.push(lineSequence);\n          return sequence;\n        },\n        []\n      );\n\n      const lineSplitEnd = this.dom.text.lineSplit[0].lines.length;\n\n      const svgSequence = [\n        this.dom.svg,\n        {\n          opacity: [0, 1],\n          transform: ['translate(-50px, 0)', 'translate(0, 0)']\n        },\n        { at: this.showTime * lineSplitEnd },\n        { duration: this.showTime, delay: this.timeOverlay * 0.6 }\n      ];\n      showSequence.push(svgSequence);\n\n      animate(\n        this.dom.overlay,\n        { transform: 'skew(-30deg) scale(2.1, 1)' },\n        { duration: this.timeOverlay }\n      );\n\n      timeline(showSequence);\n\n      if (this.dom.image)\n        animate(this.dom.image, { transform: 'scale(1.25)' }, { duration: 1 });\n    }\n    this.visible = true;\n  }\n\n  handleMouseOut() {\n    this.visible = false;\n    this.dissappearTime = this.showTime * 0.85;\n    const hideSequence = this.dom.text.lineSplit[0].lines.reduce(\n      (sequence, line, index) => {\n        const lineSequence = [\n          line,\n          {\n            opacity: 0,\n            transform: ['translate(0, 0)', 'translate(-50px, 0)']\n          },\n          { at: this.dissappearTime * index },\n          { duration: this.dissappearTime }\n        ];\n        sequence.push(lineSequence);\n        return sequence;\n      },\n      []\n    );\n\n    const lineSplitEnd = this.dom.text.lineSplit[0].lines.length;\n\n    const lineSequence = [\n      this.dom.svg,\n      {\n        opacity: 0,\n        transform: ['translate(0, 0)', 'translate(-50px, 0)']\n      },\n      { at: this.dissappearTime * lineSplitEnd },\n      { duration: this.dissappearTime }\n    ];\n\n    hideSequence.push(lineSequence);\n\n    timeline(hideSequence).finished.then(() => {\n      if (!this.visible) {\n        this.dom.text.style.visibility = 'hidden';\n      }\n    });\n\n    animate(\n      this.dom.overlay,\n      { transform: 'skew(-30deg) scale(0, 1)' },\n      { duration: this.timeOverlay, delay: lineSplitEnd * this.dissappearTime }\n    );\n\n    if (this.dom.image)\n      animate(\n        this.dom.image,\n        { transform: 'scale(1)' },\n        { duration: this.timeOverlay * 2.6, delay: this.timeOverlay * 0.3 }\n      );\n  }\n}\n\nexport default Module;\n","import { animate, timeline } from 'motion';\n\nimport { Component } from '@verndale/core';\nimport breakToLines from './breakToLines';\n\nclass Module extends Component {\n  setupDefaults() {\n    this.dom = {\n      caseStudiesTabButton: this.el.querySelector('.case-studies-tab__button'),\n      grid: this.el.querySelector('.case-studies-tab__grid'),\n      overlay: this.el.querySelector('.overlay'),\n      text: this.el.querySelector('.case-studies-tab__button .text')\n    };\n\n    this.items = window.CASE_STUDIES.items;\n    this.limit = Number(this.el.dataset.loadMoreLimit);\n    this.loadMoreItem =\n      this.items.length < this.limit ? this.items.length : this.limit;\n    this.loadAll = this.el.dataset.loadAll === 'true';\n    this.lastIndex = 0;\n    this.initGrid();\n  }\n\n  addListeners() {\n    this.dom.caseStudiesTabButton.addEventListener('click', ::this.handleClick);\n    this.dom.caseStudiesTabButton.addEventListener(\n      'mouseenter',\n      this.handleHoverIn.bind(this)\n    );\n    this.dom.caseStudiesTabButton.addEventListener(\n      'mouseleave',\n      this.handleHoverOut.bind(this)\n    );\n  }\n\n  handleHoverIn() {\n    const sequence = [\n      [\n        this.dom.text,\n        {\n          opacity: [1, 0],\n          transform: ['translate(0, 0)', 'translate(100px, 0)'],\n          color: '#fff'\n        },\n        { duration: 0.15, delay: 0.05 }\n      ],\n      [\n        this.dom.text,\n        {\n          opacity: [0, 1],\n          transform: ['translate(-100px, 0)', 'translate(0, 0)']\n        },\n        { at: 0.17 + 0.05 },\n        { duration: 0.15, delay: 0.05 }\n      ]\n    ];\n\n    timeline(sequence);\n\n    animate(\n      this.dom.overlay,\n      { transform: 'scale(2, 1)' },\n      { duration: 0.7 }\n    ).finished.then(() => {});\n  }\n\n  handleHoverOut() {\n    const sequence = [\n      [\n        this.dom.text,\n        {\n          opacity: [1, 0],\n          transform: ['translate(0, 0)', 'translate(-100px, 0)'],\n          color: '#000'\n        },\n        { duration: 0.15, delay: 0.05 }\n      ],\n      [\n        this.dom.text,\n        {\n          opacity: [0, 1],\n          transform: ['translate(100px, 0)', 'translate(0, 0)']\n        },\n        { at: 0.17 + 0.05 },\n        { duration: 0.15, delay: 0.05 }\n      ]\n    ];\n\n    timeline(sequence);\n\n    animate(\n      this.dom.overlay,\n      { transform: 'scale(0, 1)' },\n      { duration: 0.7 }\n    ).finished.then(() => {});\n  }\n\n  handleClick() {\n    if (this.loadAll) {\n      this.getElements(this.lastIndex, this.items.length);\n      return this.showLoadFullButton();\n    }\n\n    this.getElements(this.lastIndex, this.getNextItems());\n    this.showLoadFullButton();\n  }\n\n  getNextItems() {\n    const nextItems = this.lastIndex + this.loadMoreItem;\n\n    return nextItems > this.items.length ? this.items.length : nextItems;\n  }\n\n  initGrid() {\n    this.getElements();\n    this.showLoadFullButton();\n    this.dom.grid.style.minHeight = 'auto';\n  }\n\n  getElements(index = 0, max = this.loadMoreItem) {\n    for (; index < max; index++) {\n      this.dom.grid.appendChild(this.getCardTemplate(this.items[index]));\n      this.lastIndex = index + 1;\n    }\n\n    [...this.dom.grid.querySelectorAll('.case-studies-tab__card')].forEach(\n      card => {\n        if (!card.classList.contains('loaded')) {\n          new breakToLines(card);\n        }\n\n        card.classList.add('loaded');\n      }\n    );\n  }\n\n  showLoadFullButton() {\n    if (this.lastIndex < this.items.length) {\n      return (this.dom.caseStudiesTabButton.style.display = 'block');\n    }\n\n    if (this.lastIndex === this.items.length) {\n      this.dom.caseStudiesTabButton.style.display = 'none';\n    }\n  }\n\n  hasTeaser(item) {\n    const { shortTeaser } = item;\n    if (shortTeaser !== null) {\n      if (!shortTeaser !== '' || shortTeaser.trim() !== '') {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  getCardTemplate(item) {\n    const {\n      title,\n      technology,\n      url,\n      image,\n      imageMobile,\n      shortTeaser,\n      description\n    } = item;\n    const article = document.createElement('article');\n    const hoverText = this.hasTeaser(item) ? shortTeaser : description;\n    article.classList.add('case-studies-tab__card');\n    article.innerHTML = `\n    <a href=\"${url}\" aria-label=\"Click to Open ${title}\"></a>\n    <div class=\"case-studies-tab-card__image-wrapper\">\n      <div class=\"image-v2--rounded card\">\n          <div class=\"card__overlay\"></div>\n            <picture class=\"image-v2__wrapper\">\n                ${\n                  imageMobile\n                    ? `<source media=\"(max-width:677px)\" srcset=\"${imageMobile}\">`\n                    : ''\n                }\n                <img src=\"${image}\" alt=\"${title}\" class=\"image-v2 image-v2--rounded\">\n            </picture>\n            <div class=\"case-studies-tab__card-text card__text\">\n            ${hoverText}    \n            <p class=\"svg__wrapper\">\n              <svg viewBox=\"0 0 320 147\">\n                <use xlink:href=\"#arrow-right-v2\" />\n              </svg>\n            </p>\n          </div>\n      </div>\n    </div>\n    <div class=\"case-studies-tab-card__header\">\n      <h3>\n       <a href=\"${url}\">\n            ${title}\n        </a>\n        </h3>\n        <p>\n            <strong>${technology.join('|')}</strong>\n        </p>\n    </div>\n    `;\n\n    return article;\n  }\n}\n\nexport default Module;\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<string, import('./types').ISplittingPlugin>}\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 <img> 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":""}