| Current Path : /var/www/homesaver/www/bitrix/js/landing/ui/tool/auto_font_scale/dist/ |
| Current File : /var/www/homesaver/www/bitrix/js/landing/ui/tool/auto_font_scale/dist/auto_font_scale.bundle.js.map |
{"version":3,"file":"auto_font_scale.bundle.js","sources":["../src/entry.js","../src/auto_font_scale.js"],"sourcesContent":["import {Dom, Type} from 'main.core';\n\nexport default class Entry\n{\n\tstatic STEP_SIZE_PERCENTS = 10;\n\n\tstatic MIN_SIZE = 12;\n\tstatic MIN_LINE_HEIGHT = 1.4;\n\tstatic MIN_LETTER_SPACING = 0;\n\n\tstatic WIDTH_RESET_CLASS = 'scroll-width-reset';\n\n\telement: HTMLElement;\n\n\tstartSize: number;\n\tcurrentSize: number;\n\n\tletterSpacingRatio: number;\n\tcurrentLetterSpacing: number;\n\n\tstartLineHeight: number;\n\tcurrentLineHeight: number;\n\n\tprevWidth: number;\n\tmaxHeight: number = 0;\n\n\tintervalId: number;\n\n\tconstructor(element: HTMLElement)\n\t{\n\t\tthis.element = element;\n\n\t\tEntry.MIN_SIZE = 8;\n\t\tthis.startSize = parseInt(Dom.style(element, \"font-size\"));\n\t\tthis.currentSize = this.startSize;\n\n\t\tthis.letterSpacingRatio = Dom.style(element, \"letter-spacing\");\n\t\tthis.letterSpacingRatio = parseFloat(this.letterSpacingRatio) || 0;\n\t\tthis.letterSpacingRatio /= this.startSize;\n\t\tthis.currentLetterSpacing = Entry.MIN_LETTER_SPACING;\n\n\t\tthis.startLineHeight = parseFloat(Dom.style(element, \"line-height\"));\n\t\tthis.startLineHeight = Type.isNumber(this.startLineHeight)\n\t\t\t? (this.startLineHeight / this.startSize).toFixed(1)\n\t\t\t: Entry.MIN_LINE_HEIGHT;\n\t\tthis.currentLineHeight = this.startLineHeight;\n\n\t\tthis.calcCurrentWidth();\n\t\tthis.calcMaxHeight();\n\t}\n\n\t/**\n\t * Calculate max height by parent element\n\t */\n\tcalcMaxHeight()\n\t{\n\t\tthis.maxHeight = document.documentElement.clientHeight * 0.9;\n\t\tif (this.element.offsetParent)\n\t\t{\n\t\t\t// todo: need check parent height if it has, f.e. min-height: 75vh?\n\t\t\tthis.maxHeight = Math.min(this.maxHeight, this.element.offsetParent.clientHeight);\n\t\t}\n\t}\n\n\tcalcCurrentWidth()\n\t{\n\t\tDom.addClass(this.element, Entry.WIDTH_RESET_CLASS);\n\t\tthis.prevWidth = this.element.clientWidth;\n\t\tDom.removeClass(this.element, Entry.WIDTH_RESET_CLASS);\n\t}\n\n\t/**\n\t * Resets font size style\n\t */\n\tresetSize()\n\t{\n\t\tthis.element.style.setProperty('font-size', null);\n\t\tthis.element.style.setProperty('letter-spacing', null);\n\t\tthis.element.style.setProperty('line-height', null);\n\n\t\tthis.currentSize = this.startSize;\n\t\tthis.currentLineHeight = this.startLineHeight;\n\t\tthis.currentLetterSpacing = this.letterSpacingRatio * this.startSize;\n\t}\n\n\t/**\n\t * Check needed and adjust\n\t */\n\tadjust()\n\t{\n\t\tthis.calcMaxHeight();\n\n\t\tif (this.isNeedDecrease())\n\t\t{\n\t\t\tthis.decreaseSize();\n\t\t}\n\t\telse if (this.isNeedIncrease())\n\t\t{\n\t\t\tthis.increaseSize();\n\t\t}\n\t}\n\n\t/**\n\t * Check if need decrease size\n\t * @return {boolean}\n\t */\n\tisNeedDecrease(): boolean\n\t{\n\t\tconst fullScrollWidth = this.element.scrollWidth;\n\t\tDom.addClass(this.element, Entry.WIDTH_RESET_CLASS);\n\t\tconst res = (\n\t\t\t(\n\t\t\t\tfullScrollWidth > this.element.clientWidth\n\t\t\t\t|| this.element.offsetHeight > this.maxHeight\n\t\t\t)\n\t\t\t&& this.currentSize > Entry.MIN_SIZE\n\t\t);\n\t\tDom.removeClass(this.element, Entry.WIDTH_RESET_CLASS);\n\n\t\treturn res;\n\t}\n\n\t/**\n\t * Decrease size step-by-step, until text is big\n\t */\n\tdecreaseSize(): void\n\t{\n\t\tlet newSize = this.currentSize - (this.currentSize * Entry.STEP_SIZE_PERCENTS / 100);\n\t\tnewSize = Math.floor(newSize);\n\t\tnewSize = Math.max(Entry.MIN_SIZE, newSize);\n\n\t\tif (this.currentSize !== newSize)\n\t\t{\n\t\t\tif (!this.intervalId)\n\t\t\t{\n\t\t\t\tthis.intervalId = setInterval(() =>\n\t\t\t\t{\n\t\t\t\t\tif (this.isNeedDecrease())\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.decreaseSize();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.finishAdjust();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.setFontSize(newSize);\n\t\t}\n\n\n\t}\n\n\t/**\n\t * Check if need increase size\n\t * @return {boolean}\n\t */\n\tisNeedIncrease(): boolean\n\t{\n\t\tif (this.isNeedDecrease())\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tDom.addClass(this.element, Entry.WIDTH_RESET_CLASS);\n\t\tconst res = (\n\t\t\tthis.element.clientWidth > this.prevWidth\n\t\t\t&& (this.element.clientWidth - this.prevWidth) > (this.element.clientWidth * Entry.STEP_SIZE_PERCENTS / 100)\n\t\t\t&& this.currentSize < this.startSize\n\t\t);\n\t\tDom.removeClass(this.element, Entry.WIDTH_RESET_CLASS);\n\n\t\treturn res;\n\t}\n\n\t/**\n\t * Increase size step-by-step, until text is small\n\t */\n\tincreaseSize(): void\n\t{\n\t\tlet newSize = this.currentSize + (this.currentSize * Entry.STEP_SIZE_PERCENTS / (100 - Entry.STEP_SIZE_PERCENTS));\n\t\tnewSize = Math.ceil(newSize);\n\t\tnewSize = Math.min(this.startSize, newSize);\n\n\t\tif (this.currentSize !== newSize)\n\t\t{\n\t\t\tif (!this.intervalId)\n\t\t\t{\n\t\t\t\tthis.intervalId = setInterval(() =>\n\t\t\t\t{\n\t\t\t\t\tif (this.isNeedIncrease())\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.increaseSize();\n\t\t\t\t\t}\n\t\t\t\t\telse if (this.isNeedDecrease())\n\t\t\t\t\t{\n\t\t\t\t\t\t// one step correction if size big\n\t\t\t\t\t\tthis.decreaseSize();\n\t\t\t\t\t\tthis.finishAdjust();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.finishAdjust();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.setFontSize(newSize);\n\t\t}\n\t}\n\n\t/**\n\t * Stop increase or decrease processing\n\t */\n\tfinishAdjust()\n\t{\n\t\tclearInterval(this.intervalId);\n\t\tthis.intervalId = null;\n\t\tthis.calcCurrentWidth();\n\t}\n\n\t/**\n\t * Set (if needed) new font size, calculate and set new letter spacing and line height\n\t * @param size\n\t */\n\tsetFontSize(size: number)\n\t{\n\t\tif (\n\t\t\tsize !== this.currentSize\n\t\t\t&& size <= this.startSize\n\t\t)\n\t\t{\n\t\t\tthis.currentSize = size;\n\t\t\tthis.element.style.setProperty('font-size', this.currentSize + \"px\", \"important\");\n\n\t\t\t// LINE HEIGHT correction\n\t\t\tif (this.startLineHeight > Entry.MIN_LINE_HEIGHT)\n\t\t\t{\n\t\t\t\tlet newLineHeight =\n\t\t\t\t\tEntry.MIN_LINE_HEIGHT\n\t\t\t\t\t+ ((this.startLineHeight - Entry.MIN_LINE_HEIGHT) * size / this.startSize)\n\t\t\t\t;\n\t\t\t\tnewLineHeight = newLineHeight.toFixed(1);\n\t\t\t\tnewLineHeight = Math.max(newLineHeight, Entry.MIN_LINE_HEIGHT);\n\n\t\t\t\tif (\n\t\t\t\t\tnewLineHeight <= this.startLineHeight\n\t\t\t\t\t&& newLineHeight !== this.currentLineHeight\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\tthis.element.style.setProperty('line-height', newLineHeight, \"important\");\n\t\t\t\t\tthis.currentLineHeight = newLineHeight;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// LETTER SPACING correction\n\t\t\tif (this.letterSpacingRatio > Entry.MIN_LETTER_SPACING)\n\t\t\t{\n\t\t\t\tlet newLetterSpacing = this.letterSpacingRatio * size;\n\t\t\t\tnewLetterSpacing = Math.round(newLetterSpacing);\n\n\t\t\t\tif (newLetterSpacing !== this.currentLetterSpacing)\n\t\t\t\t{\n\t\t\t\t\tthis.element.style.setProperty('letter-spacing', newLetterSpacing + 'px', \"important\");\n\t\t\t\t\tthis.currentLetterSpacing = newLetterSpacing;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","import {Type, Runtime} from 'main.core';\nimport Entry from './entry';\n\nconst bind = BX.Landing.Utils.bind;\nconst slice = BX.Landing.Utils.slice;\nconst onCustomEvent = BX.Landing.Utils.onCustomEvent;\nlet lastWidth = BX.width(window);\n\nexport class AutoFontScale\n{\n\tstatic WIDTH_LIMIT: number = 768;\n\tstatic SELECTORS = ['h1', 'h2', 'h3', 'h4', 'h5', '[data-auto-font-scale]'];\n\tstatic NEGATIVE_SELECTORS = ['[class*=product-]'];\n\n\t/**\n\t * First init\n\t * @param parentElement - find all elements in this parent\n\t */\n\tstatic init(parentElement: HTMLElement | Document)\n\t{\n\t\tconst elements = AutoFontScale.findElements(parentElement);\n\t\tnew AutoFontScale(elements);\n\t}\n\n\t/**\n\t * Find elements by parent\n\t * @param parentElement - find all elements in this parent\n\t * @return {*}\n\t */\n\tstatic findElements(parentElement: HTMLElement | Document)\n\t{\n\t\tconst negativeString = AutoFontScale.NEGATIVE_SELECTORS.map(sel => ':not(' + sel + ')').join('');\n\t\tconst summarySelector= AutoFontScale.SELECTORS.map(sel => sel + negativeString).join(', ');\n\n\t\treturn slice(parentElement.querySelectorAll(summarySelector));\n\t}\n\n\t/**\n\t * Checks than need adjust\n\t * @return {boolean}\n\t */\n\tstatic isNeedAdjust()\n\t{\n\t\treturn BX.width(window) <= AutoFontScale.WIDTH_LIMIT;\n\t}\n\n\t/**\n\t * Checks that window resize\n\t * @return {boolean}\n\t */\n\tstatic isResized()\n\t{\n\t\tconst result = lastWidth !== BX.width(window);\n\t\tlastWidth = BX.width(window);\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Implements interface for works with responsive texts\n\t * @param {HTMLElement[]} elements\n\t */\n\tconstructor(elements: [HTMLElement])\n\t{\n\t\tthis.entries = elements.map(this.createEntry, this);\n\n\t\tthis.onResize = Runtime.debounce(this.onResize, 500);\n\t\tbind(window, \"resize\", this.onResize.bind(this, false));\n\t\tbind(window, \"orientationchange\", this.onResize.bind(this, true));\n\n\t\tonCustomEvent(\"BX.Landing.Block:init\", this.onAddBlock.bind(this));\n\t\tthis.adjust(true);\n\t}\n\n\tonResize(forceAdjust)\n\t{\n\t\tthis.adjust(forceAdjust);\n\t}\n\n\t/**\n\t * Adjusts text\n\t * @param {boolean} [forceAdjust]\n\t */\n\tadjust(forceAdjust)\n\t{\n\t\tif (forceAdjust === true || AutoFontScale.isResized())\n\t\t{\n\t\t\tconst needAdjust = AutoFontScale.isNeedAdjust();\n\t\t\tthis.entries.forEach(entry =>\n\t\t\t{\n\t\t\t\tif (needAdjust)\n\t\t\t\t{\n\t\t\t\t\tentry.adjust();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tentry.resetSize();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Creates entry\n\t * @param {HTMLElement} element\n\t * @return {Entry}\n\t */\n\tcreateEntry(element: HTMLElement)\n\t{\n\t\treturn new Entry(element);\n\t}\n\n\t/**\n\t * Adds elements\n\t * @param {HTMLElement[]} elements\n\t */\n\taddElements(elements)\n\t{\n\t\telements.forEach(element => {\n\t\t\tconst containsElement = this.entries.some(entry => {\n\t\t\t\treturn entry.element === element;\n\t\t\t});\n\n\t\t\tif (!containsElement)\n\t\t\t{\n\t\t\t\tthis.entries.push(this.createEntry(element));\n\t\t\t}\n\t\t}, this);\n\t}\n\n\t/**\n\t * Handles add block event\n\t * @param {BX.Landing.Event.Block} event\n\t */\n\tonAddBlock(event)\n\t{\n\t\tconst elements = AutoFontScale.findElements(event.block);\n\t\tthis.addElements(elements);\n\t}\n}"],"names":["Entry","constructor","element","maxHeight","MIN_SIZE","startSize","parseInt","Dom","style","currentSize","letterSpacingRatio","parseFloat","currentLetterSpacing","MIN_LETTER_SPACING","startLineHeight","Type","isNumber","toFixed","MIN_LINE_HEIGHT","currentLineHeight","calcCurrentWidth","calcMaxHeight","document","documentElement","clientHeight","offsetParent","Math","min","addClass","WIDTH_RESET_CLASS","prevWidth","clientWidth","removeClass","resetSize","setProperty","adjust","isNeedDecrease","decreaseSize","isNeedIncrease","increaseSize","fullScrollWidth","scrollWidth","res","offsetHeight","newSize","STEP_SIZE_PERCENTS","floor","max","intervalId","setInterval","finishAdjust","setFontSize","ceil","clearInterval","size","newLineHeight","newLetterSpacing","round","bind","BX","Landing","Utils","slice","onCustomEvent","lastWidth","width","window","AutoFontScale","init","parentElement","elements","findElements","negativeString","NEGATIVE_SELECTORS","map","sel","join","summarySelector","SELECTORS","querySelectorAll","isNeedAdjust","WIDTH_LIMIT","isResized","result","entries","createEntry","onResize","Runtime","debounce","onAddBlock","forceAdjust","needAdjust","forEach","entry","addElements","containsElement","some","push","event","block"],"mappings":"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"}