{"version":3,"file":"js/fit_title_preview-71bf3ad6cda05e1deed9.js","mappings":"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","sources":["webpack://avala/./app/javascript/packs/fit_title_preview.js","webpack://avala/./app/javascript/sharedStore.js","webpack://avala/./node_modules/fast-deep-equal/index.js"],"sourcesContent":["import { subscribeTo } from '../sharedStore';\nimport isEqual from 'fast-deep-equal';\n\n(function initTitleResize() {\n const assertElementFitsWidth = () =>\n titleChildEl().offsetWidth <= titleParentEl().offsetWidth;\n const assertElementFitsHeight = () =>\n titleChildEl().offsetHeight <= titleParentEl().offsetHeight;\n\n const prepFontOptions = (fontSize) => {\n const defOpts = { fontSize, paddingRight: 3 };\n\n if (fontSize > 71) {\n return {\n ...defOpts,\n lineHeight: fontSize * 0.25 + fontSize,\n };\n } else if (fontSize > 65) {\n return {\n ...defOpts,\n lineHeight: fontSize * 0.27 + fontSize,\n };\n } else if (fontSize > 46) {\n return {\n ...defOpts,\n lineHeight: fontSize * 0.28 + fontSize,\n };\n } else if (fontSize > 37) {\n return {\n ...defOpts,\n lineHeight: fontSize * 0.32 + fontSize,\n };\n } else if (fontSize > 32) {\n return {\n ...defOpts,\n lineHeight: fontSize * 0.37 + fontSize,\n };\n } else if (fontSize > 27) {\n return {\n ...defOpts,\n lineHeight: fontSize * 0.36 + fontSize,\n };\n } else if (fontSize > 23) {\n return {\n ...defOpts,\n lineHeight: 33.2,\n paddingRight: 2,\n };\n } else if (fontSize > 19) {\n return {\n ...defOpts,\n lineHeight: 29.2,\n paddingRight: 2,\n };\n } else if (fontSize > 17) {\n return {\n ...defOpts,\n lineHeight: 24,\n paddingRight: 1,\n };\n } else if (fontSize > 15) {\n return {\n ...defOpts,\n lineHeight: 22.4,\n paddingRight: 1,\n };\n } else if (fontSize > 13) {\n return {\n ...defOpts,\n lineHeight: 20.4,\n paddingRight: 1,\n };\n } else {\n return {\n ...defOpts,\n lineHeight: 18.4,\n paddingRight: 1,\n };\n }\n };\n const prepStyles = ({ fontSize, lineHeight, ready, paddingRight }) => `\n #TitleMainWrapper {\n position: absolute;\n top: ${config.mobileTop}%;\n left: ${config.mobileLeft}%;\n height: ${config.height < 0 ? 0 : config.height}%;\n width: ${config.width}%;\n overflow-y: hidden;\n }\n #TitleMainWrapper #TitleParent {\n font-size: ${fontSize}px;\n line-height: ${lineHeight}px;\n overflow: ${ready ? 'inherit' : 'hidden'};\n height: 100%;\n opacity: ${ready ? 1 : 0.01} !important;\n }\n\n #TitleMainWrapper #TitleParent span {\n padding-right: ${paddingRight}px;\n }\n\n #TitleMainWrapper #TitleParent #TitleChild {\n display: ${ready ? 'block' : 'inline-block'};\n }\n `;\n const setStyles = (fontSize, { ready }) => {\n const options = prepFontOptions(fontSize);\n const styles = prepStyles({ ...options, ready });\n\n stylesEl.innerHTML = styles;\n };\n\n const resizeFont = (currentPid, maxFontSize) => {\n setTimeout(() => {\n for (let fontSize = maxFontSize; fontSize >= config.fontMin; fontSize--) {\n if (config.pid !== currentPid) {\n break;\n }\n\n if (fontSize === config.fontMin) {\n setStyles(fontSize, {\n ready: true,\n });\n break;\n }\n\n setStyles(fontSize, { ready: false });\n\n const isFit = assertElementFitsHeight() && assertElementFitsWidth();\n\n if (isFit) {\n setStyles(fontSize, {\n ready: true,\n });\n titleMainEl().style.overflow = 'hidden';\n break;\n }\n }\n }, 0);\n };\n\n const prepConfig = (val) => {\n const {\n positionBottom,\n positionLeft,\n positionRight,\n positionTop,\n titleElements,\n } = val;\n let { fontSizeMax, fontSizeMin } = val;\n const paragraphEl = document.querySelector('#TitleChild p');\n\n if (document.querySelector('#TitleChild h1')) {\n // Size of h1 is 2em, because of that max font size\n // should be such one to make h1 to be with max font size\n fontSizeMax = parseInt(fontSizeMax / 2);\n\n if (!paragraphEl) {\n // Size of h1 is 2em, because of that min font size\n // should be such one to make h1 to be with min font size\n fontSizeMin = parseInt(fontSizeMin / 2);\n }\n } else if (document.querySelector('#TitleChild h2')) {\n fontSizeMax = parseInt(fontSizeMax / 1.5);\n\n if (!paragraphEl) {\n fontSizeMin = parseInt(fontSizeMin / 1.5);\n }\n } else if (document.querySelector('#TitleChild h3')) {\n fontSizeMax = parseInt(fontSizeMax / 1.17);\n\n if (!paragraphEl) {\n fontSizeMin = parseInt(fontSizeMin / 1.17);\n }\n } else if (!paragraphEl) {\n fontSizeMin = parseInt(fontSizeMin / 1.5);\n }\n\n return {\n width: 100 - parseInt(positionLeft) - parseInt(positionRight),\n height: 100 - parseInt(positionTop) - parseInt(positionBottom),\n mobileTop: parseInt(positionTop),\n mobileLeft: parseInt(positionLeft),\n fontMin: parseInt(fontSizeMin),\n fontMax: parseInt(fontSizeMax),\n titleElements,\n };\n };\n\n const titleMainEl = () => document.getElementById('TitleMainWrapper');\n const titleParentEl = () => document.getElementById('TitleParent');\n const titleChildEl = () => document.getElementById('TitleChild');\n const stylesEl = document.createElement('style');\n document.head.appendChild(stylesEl);\n const config = { pid: 0 };\n const updateIfChanged = (val) => {\n const nextConf = Object.assign({}, val);\n const el = titleChildEl();\n if (el) {\n nextConf.html = el.innerHTML;\n }\n\n if (!isEqual(config, nextConf)) {\n Object.assign(config, nextConf);\n config.pid++;\n\n resizeFont(config.pid, config.fontMax);\n }\n };\n\n subscribeTo('titleSetting', (val) => {\n setTimeout(() => {\n updateIfChanged(prepConfig(val));\n }, 0);\n });\n\n setInterval(() => {\n updateIfChanged(config);\n }, 300);\n})();\n","const getCallbacks = (key) => {\n if (!window.sharedStoreCallbacks) {\n window.sharedStoreCallbacks = {};\n }\n\n if (!window.sharedStoreCallbacks[key]) {\n window.sharedStoreCallbacks[key] = [];\n }\n\n return window.sharedStoreCallbacks[key];\n};\n\nconst getStore = () => {\n if (!window.sharedStoreValues) {\n window.sharedStoreValues = {};\n }\n\n return window.sharedStoreValues;\n};\n\nconst getValueFromStore = (key) => {\n const store = getStore();\n\n return store[key];\n};\n\nconst setValueToStore = (key, val) => {\n const store = getStore();\n const callbacks = getCallbacks(key);\n\n store[key] = val;\n\n if (callbacks) {\n for (const func of callbacks) {\n func(val);\n }\n }\n};\n\nconst subscribeTo = (key, callback) => {\n getCallbacks(key).push(callback);\n};\n\nconst unsubscribeFrom = (key) => {\n delete window.sharedStoreCallbacks[key];\n};\n\nexport { setValueToStore, subscribeTo, unsubscribeFrom, getValueFromStore };\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n"],"names":["setStyles","fontSize","ready","options","paddingRight","lineHeight","prepFontOptions","styles","config","mobileTop","mobileLeft","height","width","prepStyles","stylesEl","innerHTML","titleMainEl","document","getElementById","titleParentEl","titleChildEl","createElement","head","appendChild","pid","updateIfChanged","val","currentPid","maxFontSize","nextConf","Object","assign","el","html","isEqual","fontMax","setTimeout","fontMin","offsetHeight","offsetWidth","style","overflow","subscribeTo","positionBottom","positionLeft","positionRight","positionTop","titleElements","fontSizeMax","fontSizeMin","paragraphEl","querySelector","parseInt","prepConfig","setInterval","getCallbacks","key","window","sharedStoreCallbacks","getStore","sharedStoreValues","getValueFromStore","setValueToStore","store","callbacks","func","callback","push","unsubscribeFrom","module","exports","equal","a","b","constructor","length","i","keys","Array","isArray","RegExp","source","flags","valueOf","prototype","toString","hasOwnProperty","call"],"sourceRoot":""}