@topvisor/ui 1.0.42-checkvisibility.0 → 1.0.42-checkvisibility.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -21,7 +21,7 @@ export declare function isVisible(el?: HTMLElement): boolean;
21
21
  * @param el
22
22
  * @returns - вернет true, если элемент считается видимым
23
23
  */
24
- export declare const checkVisibilityPolyfill: (el: Element | null | undefined) => boolean | undefined;
24
+ export declare const checkVisibilityPolyfill: (el: Element | null | undefined) => boolean;
25
25
  /**
26
26
  * Получить координаты элемента относительно документа
27
27
  * @param el
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@topvisor/ui",
3
3
  "private": false,
4
- "version": "1.0.42-checkvisibility.0",
4
+ "version": "1.0.42-checkvisibility.1",
5
5
  "type": "module",
6
6
  "description": "Topvisor UI-kit Vue",
7
7
  "author": "Topvisor",
package/utils/dom.amd.js CHANGED
@@ -1,2 +1,2 @@
1
- define(["require","exports"],function(q,i){"use strict";if(typeof p>"u")var p=window.Vue;function f(e,t,...n){const l=document.createElement(e);for(const r in t)r.indexOf("on")===0?l[r]=t[r]:l.setAttribute(r,t[r]);return n.forEach(r=>{typeof r=="string"?l.insertAdjacentHTML("beforeend",r):l.append(r)}),l}function u(e){if(!e)return!1;const t=e.getBoundingClientRect();return!!(t.width||t.height)}const S=e=>{if(!(e instanceof HTMLElement))return!1;if(typeof e.checkVisibility=="function")e.checkVisibility();else{const t=window.getComputedStyle(e);if(t.display==="none"||t.visibility==="hidden"||t.opacity==="0"||!document.body.contains(e))return!1;const n=e.getBoundingClientRect();return!(n.width===0||n.height===0)}};function s(e){const t=e.getBoundingClientRect();return{top:t.top+window.scrollY,left:t.left+window.scrollX}}function c(e,t){return window.getComputedStyle(e).getPropertyValue(t)}function a(e,t){return parseInt(c(e,t))}function d(e,t){const n=document.createElement(t);return e.after(n),n.append(e),n}function y(e,t){return o(e,t).find(u)||null}function b(e,t){return o(e,t).findLast(u)||null}function g(e,t){return o(e,t).filter(u)}function o(e,t){return e?[...e.querySelectorAll(t)]:[]}function w(e,t="common",n=void 0){if(e)return e.topData||(e.topData={}),n&&(e.topData[t]=n),n===null&&delete e.topData[t],e.topData[t]}function V(e){e&&delete e.topData}const m={genEl:f,isVisible:u,offset:s,css:c,cssNumber:a,wrap:d,querySelectorVisible:y,querySelectorVisibleLast:b,querySelectorAllVisible:g,querySelectorAllArray:o,storage:w,storageClear:V};i.checkVisibilityPolyfill=S,i.css=c,i.cssNumber=a,i.default=m,i.genEl=f,i.isVisible=u,i.offset=s,i.querySelectorAllArray=o,i.querySelectorAllVisible=g,i.querySelectorVisible=y,i.querySelectorVisibleLast=b,i.storage=w,i.storageClear=V,i.wrap=d,Object.defineProperties(i,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
1
+ define(["require","exports"],function(q,n){"use strict";if(typeof p>"u")var p=window.Vue;function f(e,t,...i){const l=document.createElement(e);for(const r in t)r.indexOf("on")===0?l[r]=t[r]:l.setAttribute(r,t[r]);return i.forEach(r=>{typeof r=="string"?l.insertAdjacentHTML("beforeend",r):l.append(r)}),l}function u(e){if(!e)return!1;const t=e.getBoundingClientRect();return!!(t.width||t.height)}const S=e=>{if(!(e instanceof HTMLElement))return!1;if(typeof e.checkVisibility=="function")return e.checkVisibility();{const t=window.getComputedStyle(e);if(t.display==="none"||t.visibility==="hidden"||t.opacity==="0"||!document.body.contains(e))return!1;const i=e.getBoundingClientRect();return!(i.width===0||i.height===0)}};function s(e){const t=e.getBoundingClientRect();return{top:t.top+window.scrollY,left:t.left+window.scrollX}}function c(e,t){return window.getComputedStyle(e).getPropertyValue(t)}function a(e,t){return parseInt(c(e,t))}function d(e,t){const i=document.createElement(t);return e.after(i),i.append(e),i}function y(e,t){return o(e,t).find(u)||null}function b(e,t){return o(e,t).findLast(u)||null}function g(e,t){return o(e,t).filter(u)}function o(e,t){return e?[...e.querySelectorAll(t)]:[]}function w(e,t="common",i=void 0){if(e)return e.topData||(e.topData={}),i&&(e.topData[t]=i),i===null&&delete e.topData[t],e.topData[t]}function V(e){e&&delete e.topData}const m={genEl:f,isVisible:u,offset:s,css:c,cssNumber:a,wrap:d,querySelectorVisible:y,querySelectorVisibleLast:b,querySelectorAllVisible:g,querySelectorAllArray:o,storage:w,storageClear:V};n.checkVisibilityPolyfill=S,n.css=c,n.cssNumber=a,n.default=m,n.genEl=f,n.isVisible=u,n.offset=s,n.querySelectorAllArray=o,n.querySelectorAllVisible=g,n.querySelectorVisible=y,n.querySelectorVisibleLast=b,n.storage=w,n.storageClear=V,n.wrap=d,Object.defineProperties(n,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
2
2
  //# sourceMappingURL=dom.amd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dom.amd.js","sources":["../../src/core/utils/dom.ts"],"sourcesContent":["/**\n * Работа с Document Object Model (DOM)\n * @packageDocumentation\n */\n\n/**\n * Создать элемент\n * @param tagName\n * @param attrs - атрибуты\n * @param elsChildrens\n * @returns - созданный элемент\n */\nexport function genEl(tagName: string, attrs?: Record<string, string>, ...elsChildrens: HTMLElement[] | string[]): HTMLElement {\n\tconst el: any = document.createElement(tagName);\n\n\tfor (const name in attrs) {\n\t\tif (name.indexOf('on') === 0) {\n\t\t\t// events\n\t\t\tel[name] = attrs[name];\n\t\t} else {\n\t\t\tel.setAttribute(name, attrs[name]);\n\t\t}\n\t}\n\n\telsChildrens.forEach((elChildren: HTMLElement | string) => {\n\t\tif (typeof (elChildren) === 'string') {\n\t\t\tel.insertAdjacentHTML('beforeend', elChildren);\n\t\t} else {\n\t\t\tel.append(elChildren);\n\t\t}\n\t});\n\n\treturn el;\n}\n\n/**\n * Проверить видимость элемента\n * @param el\n * @returns - вернет true, если элемент считается видимым\n */\nexport function isVisible(el?: HTMLElement): boolean {\n\tif (!el) {\n\t\treturn false;\n\t}\n\n\tconst boundingClientRect = el.getBoundingClientRect();\n\treturn !!(boundingClientRect.width || boundingClientRect.height);\n}\n\n/**\n * Проверить видимость элемента (полифил для Element.checkVisibility())\n * @param el\n * @returns - вернет true, если элемент считается видимым\n */\nexport const checkVisibilityPolyfill = (el: Element | null | undefined) => {\n\tif (!(el instanceof HTMLElement)) return false;\n\n\tif (typeof el.checkVisibility === 'function') {\n\t\tel.checkVisibility();\n\t} else {\n\t\t// Проверка на видимость\n\t\tconst style = window.getComputedStyle(el);\n\t\tif (style.display === 'none' || style.visibility === 'hidden' || style.opacity === '0') return false;\n\n\t\t// Проверка, находится ли элемент в пределах документа\n\t\tif (!document.body.contains(el)) return false;\n\n\t\t// Проверка размеров\n\t\tconst rect = el.getBoundingClientRect();\n\t\tif (rect.width === 0 || rect.height === 0) return false;\n\n\t\treturn true;\n\t}\n}\n\n/**\n * Получить координаты элемента относительно документа\n * @param el\n * @returns - координаты элемента относительно документа\n */\nexport function offset(el: HTMLElement): { top: number, left: number } {\n\tconst boundingClientRect = el.getBoundingClientRect();\n\n\treturn {\n\t\ttop: boundingClientRect.top + window.scrollY,\n\t\tleft: boundingClientRect.left + window.scrollX,\n\t};\n}\n\n/**\n * Получить значение css свойства элемента\n *\n * @param el\n * @param property - имя свойства\n * @return - значение css стиля\n */\nexport function css(el: HTMLElement, property: string): string {\n\treturn window.getComputedStyle(el).getPropertyValue(property);\n}\n\n/**\n * Получить значение css свойства целочисленного типа\n *\n * @param el\n * @param property - имя свойства\n * @return - значение css стиля\n */\nexport function cssNumber(el: HTMLElement, property: string): number {\n\treturn parseInt(css(el, property));\n}\n\n/**\n * Обернуть элемент и вернуть только что созданный элемент\n * @param el - элемент, который требуется обернуть\n * @param tagName - имя тега элемента, в который треубется обернуть элемент\n */\nexport function wrap(el: HTMLElement, tagName: string): HTMLElement {\n\tconst elWrapper = document.createElement(tagName);\n\tel.after(elWrapper);\n\n\telWrapper.append(el);\n\n\treturn elWrapper;\n}\n\n/**\n * Найти и вернуть первый видимый элемент\n * @param el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n */\nexport function querySelectorVisible(el: HTMLElement, selectors: string): HTMLElement | null {\n\treturn querySelectorAllArray(el, selectors).find(isVisible) || null;\n}\n\n/**\n * Найти и вернуть последний видимый элемент\n * @param el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n */\nexport function querySelectorVisibleLast(el: HTMLElement, selectors: string): HTMLElement | null {\n\treturn querySelectorAllArray(el, selectors).findLast(isVisible) || null;\n}\n\n/**\n * Найти видимые элементы\n * @param el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n */\nexport function querySelectorAllVisible(el: HTMLElement | Document, selectors: string): HTMLElement[] {\n\treturn querySelectorAllArray(el, selectors).filter(isVisible);\n}\n\n/**\n * Найти элементы и вернуть в виде массива\n * @param el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n */\nexport function querySelectorAllArray<El extends HTMLElement = HTMLElement>(el: HTMLElement | Document, selectors: string) {\n\tif (!el) {\n\t\treturn [];\n\t}\n\n\treturn [...el.querySelectorAll<El>(selectors)];\n}\n\n/**\n * Хранилище данных элемента\n * @param el\n * @param contextName - контекст, обычно используется имя компонента\n * @param contextData - установить объект с данными, предыдущие данные будут заменены, установите null для удаления данных\n * @returns - вернет объект контекста или undefined, если данные контекста не найдены\n */\nexport function storage(\n\tel?: HTMLElement & { topData?: any },\n\tcontextName: string = 'common',\n\tcontextData: object | null | undefined = undefined,\n): any | undefined {\n\tif (!el) {\n\t\treturn;\n\t}\n\n\tif (!el.topData) {\n\t\tel.topData = {};\n\t}\n\n\tif (contextData) {\n\t\tel.topData[contextName] = contextData;\n\t}\n\n\tif (contextData === null) {\n\t\tdelete el.topData[contextName];\n\t}\n\n\treturn el.topData[contextName];\n}\n\n/**\n * Очистить хранилище элемента\n */\nexport function storageClear(el?: HTMLElement & { topData?: any }): void {\n\tif (!el) {\n\t\treturn;\n\t}\n\n\tdelete el.topData;\n}\n\nexport default {\n\tgenEl,\n\tisVisible,\n\toffset,\n\tcss,\n\tcssNumber,\n\twrap,\n\tquerySelectorVisible,\n\tquerySelectorVisibleLast,\n\tquerySelectorAllVisible,\n\tquerySelectorAllArray,\n\tstorage,\n\tstorageClear,\n};\n"],"names":["name","attrs","elsChildrens","elChildren","el","boundingClientRect","checkVisibilityPolyfill","rect","css","property","cssNumber","wrap","tagName","elWrapper","querySelectorVisible","selectors","querySelectorAllArray","isVisible","querySelectorVisibleLast","querySelectorAllVisible","contextName","contextData","DOM","genEl","offset","storage"],"mappings":"gJAeC,UAAAA,KAAAC,uDASA,OAAAC,EAAA,QAAAC,GAAA,CACC,OAAAA,GAAA,SACCC,EAAA,mBAAA,YAAAD,CAAA,EAEAC,EAAA,OAAAD,CAAA,CACD,CAAA,EAGDC,CACD,qBASE,MAAA,GAGD,MAAAC,EAAAD,EAAA,sBAAA,6BAED,CAOa,MAAAE,EAAAF,GAAA,yCAGZ,GAAA,OAAAA,EAAA,iBAAA,mCACoB,oCAOnB,iEAAA,CAAA,SAAA,KAAA,SAAAA,CAAA,EAAA,MAAA,GAGA,MAAAG,EAAAH,EAAA,sBAAA,EACA,MAAA,EAAAG,EAAA,QAAA,GAAAA,EAAA,SAAA,EAEO,CAET,gBAQC,MAAAF,EAAAD,EAAA,sBAAA,EAEA,MAAA,0BACsC,KAAAC,EAAA,KAAA,OAAA,QAGvC,CASgB,SAAAG,EAAAJ,EAAAK,EAAA,sDAEhB,CASgB,SAAAC,EAAAN,EAAAK,EAAA,wBAEhB,CAOgB,SAAAE,EAAAP,EAAAQ,EAAA,mCAEf,OAAAR,EAAA,MAAAS,CAAA,EAEAA,EAAA,OAAAT,CAAA,EAEAS,CACD,CAOgB,SAAAC,EAAAV,EAAAW,EAAA,CACf,OAAAC,EAAAZ,EAAAW,CAAA,EAAA,KAAAE,CAAA,GAAA,IACD,CAOgB,SAAAC,EAAAd,EAAAW,EAAA,CACf,OAAAC,EAAAZ,EAAAW,CAAA,EAAA,SAAAE,CAAA,GAAA,IACD,CAOgB,SAAAE,EAAAf,EAAAW,EAAA,wBAEhB,CAOgB,SAAAC,EAAAZ,EAAAW,EAAA,qCAEd,CAAA,CAIF,wCAkBC,OAAAX,EAAA,UACCA,EAAA,QAAA,CAAA,OAIAA,EAAA,QAAAgB,CAAA,EAAAC,GAGDA,IAAA,MACC,OAAAjB,EAAA,QAAAgB,CAAA,EAGDhB,EAAA,QAAAgB,CAAA,CACD,kCAWA,CAEA,MAAAE,EAAA,CAAe,MAAAC,EACd,UAAAN,EACA,OAAAO,EACA,IAAAhB,EACA,UAAAE,EACA,KAAAC,EACA,qBAAAG,EACA,yBAAAI,EACA,wBAAAC,EACA,sBAAAH,EACA,QAAAS"}
1
+ {"version":3,"file":"dom.amd.js","sources":["../../src/core/utils/dom.ts"],"sourcesContent":["/**\n * Работа с Document Object Model (DOM)\n * @packageDocumentation\n */\n\n/**\n * Создать элемент\n * @param tagName\n * @param attrs - атрибуты\n * @param elsChildrens\n * @returns - созданный элемент\n */\nexport function genEl(tagName: string, attrs?: Record<string, string>, ...elsChildrens: HTMLElement[] | string[]): HTMLElement {\n\tconst el: any = document.createElement(tagName);\n\n\tfor (const name in attrs) {\n\t\tif (name.indexOf('on') === 0) {\n\t\t\t// events\n\t\t\tel[name] = attrs[name];\n\t\t} else {\n\t\t\tel.setAttribute(name, attrs[name]);\n\t\t}\n\t}\n\n\telsChildrens.forEach((elChildren: HTMLElement | string) => {\n\t\tif (typeof (elChildren) === 'string') {\n\t\t\tel.insertAdjacentHTML('beforeend', elChildren);\n\t\t} else {\n\t\t\tel.append(elChildren);\n\t\t}\n\t});\n\n\treturn el;\n}\n\n/**\n * Проверить видимость элемента\n * @param el\n * @returns - вернет true, если элемент считается видимым\n */\nexport function isVisible(el?: HTMLElement): boolean {\n\tif (!el) {\n\t\treturn false;\n\t}\n\n\tconst boundingClientRect = el.getBoundingClientRect();\n\treturn !!(boundingClientRect.width || boundingClientRect.height);\n}\n\n/**\n * Проверить видимость элемента (полифил для Element.checkVisibility())\n * @param el\n * @returns - вернет true, если элемент считается видимым\n */\nexport const checkVisibilityPolyfill = (el: Element | null | undefined) => {\n\tif (!(el instanceof HTMLElement)) return false;\n\n\tif (typeof el.checkVisibility === 'function') {\n\t\treturn el.checkVisibility();\n\t} else {\n\t\t// Проверка на видимость\n\t\tconst style = window.getComputedStyle(el);\n\t\tif (style.display === 'none' || style.visibility === 'hidden' || style.opacity === '0') return false;\n\n\t\t// Проверка, находится ли элемент в пределах документа\n\t\tif (!document.body.contains(el)) return false;\n\n\t\t// Проверка размеров\n\t\tconst rect = el.getBoundingClientRect();\n\t\tif (rect.width === 0 || rect.height === 0) return false;\n\n\t\treturn true;\n\t}\n}\n\n/**\n * Получить координаты элемента относительно документа\n * @param el\n * @returns - координаты элемента относительно документа\n */\nexport function offset(el: HTMLElement): { top: number, left: number } {\n\tconst boundingClientRect = el.getBoundingClientRect();\n\n\treturn {\n\t\ttop: boundingClientRect.top + window.scrollY,\n\t\tleft: boundingClientRect.left + window.scrollX,\n\t};\n}\n\n/**\n * Получить значение css свойства элемента\n *\n * @param el\n * @param property - имя свойства\n * @return - значение css стиля\n */\nexport function css(el: HTMLElement, property: string): string {\n\treturn window.getComputedStyle(el).getPropertyValue(property);\n}\n\n/**\n * Получить значение css свойства целочисленного типа\n *\n * @param el\n * @param property - имя свойства\n * @return - значение css стиля\n */\nexport function cssNumber(el: HTMLElement, property: string): number {\n\treturn parseInt(css(el, property));\n}\n\n/**\n * Обернуть элемент и вернуть только что созданный элемент\n * @param el - элемент, который требуется обернуть\n * @param tagName - имя тега элемента, в который треубется обернуть элемент\n */\nexport function wrap(el: HTMLElement, tagName: string): HTMLElement {\n\tconst elWrapper = document.createElement(tagName);\n\tel.after(elWrapper);\n\n\telWrapper.append(el);\n\n\treturn elWrapper;\n}\n\n/**\n * Найти и вернуть первый видимый элемент\n * @param el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n */\nexport function querySelectorVisible(el: HTMLElement, selectors: string): HTMLElement | null {\n\treturn querySelectorAllArray(el, selectors).find(isVisible) || null;\n}\n\n/**\n * Найти и вернуть последний видимый элемент\n * @param el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n */\nexport function querySelectorVisibleLast(el: HTMLElement, selectors: string): HTMLElement | null {\n\treturn querySelectorAllArray(el, selectors).findLast(isVisible) || null;\n}\n\n/**\n * Найти видимые элементы\n * @param el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n */\nexport function querySelectorAllVisible(el: HTMLElement | Document, selectors: string): HTMLElement[] {\n\treturn querySelectorAllArray(el, selectors).filter(isVisible);\n}\n\n/**\n * Найти элементы и вернуть в виде массива\n * @param el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n */\nexport function querySelectorAllArray<El extends HTMLElement = HTMLElement>(el: HTMLElement | Document, selectors: string) {\n\tif (!el) {\n\t\treturn [];\n\t}\n\n\treturn [...el.querySelectorAll<El>(selectors)];\n}\n\n/**\n * Хранилище данных элемента\n * @param el\n * @param contextName - контекст, обычно используется имя компонента\n * @param contextData - установить объект с данными, предыдущие данные будут заменены, установите null для удаления данных\n * @returns - вернет объект контекста или undefined, если данные контекста не найдены\n */\nexport function storage(\n\tel?: HTMLElement & { topData?: any },\n\tcontextName: string = 'common',\n\tcontextData: object | null | undefined = undefined,\n): any | undefined {\n\tif (!el) {\n\t\treturn;\n\t}\n\n\tif (!el.topData) {\n\t\tel.topData = {};\n\t}\n\n\tif (contextData) {\n\t\tel.topData[contextName] = contextData;\n\t}\n\n\tif (contextData === null) {\n\t\tdelete el.topData[contextName];\n\t}\n\n\treturn el.topData[contextName];\n}\n\n/**\n * Очистить хранилище элемента\n */\nexport function storageClear(el?: HTMLElement & { topData?: any }): void {\n\tif (!el) {\n\t\treturn;\n\t}\n\n\tdelete el.topData;\n}\n\nexport default {\n\tgenEl,\n\tisVisible,\n\toffset,\n\tcss,\n\tcssNumber,\n\twrap,\n\tquerySelectorVisible,\n\tquerySelectorVisibleLast,\n\tquerySelectorAllVisible,\n\tquerySelectorAllArray,\n\tstorage,\n\tstorageClear,\n};\n"],"names":["name","attrs","elsChildrens","elChildren","el","boundingClientRect","checkVisibilityPolyfill","rect","css","property","cssNumber","wrap","tagName","elWrapper","querySelectorVisible","selectors","querySelectorAllArray","isVisible","querySelectorVisibleLast","querySelectorAllVisible","contextName","contextData","DOM","genEl","offset","storage"],"mappings":"gJAeC,UAAAA,KAAAC,uDASA,OAAAC,EAAA,QAAAC,GAAA,CACC,OAAAA,GAAA,SACCC,EAAA,mBAAA,YAAAD,CAAA,EAEAC,EAAA,OAAAD,CAAA,CACD,CAAA,EAGDC,CACD,qBASE,MAAA,GAGD,MAAAC,EAAAD,EAAA,sBAAA,6BAED,CAOa,MAAAE,EAAAF,GAAA,yCAGZ,GAAA,OAAAA,EAAA,iBAAA,WACC,OAAAA,EAAA,gBAAA,EAA0B,oCAO1B,iEAAA,CAAA,SAAA,KAAA,SAAAA,CAAA,EAAA,MAAA,GAGA,MAAAG,EAAAH,EAAA,sBAAA,EACA,MAAA,EAAAG,EAAA,QAAA,GAAAA,EAAA,SAAA,EAEO,CAET,gBAQC,MAAAF,EAAAD,EAAA,sBAAA,EAEA,MAAA,0BACsC,KAAAC,EAAA,KAAA,OAAA,QAGvC,CASgB,SAAAG,EAAAJ,EAAAK,EAAA,sDAEhB,CASgB,SAAAC,EAAAN,EAAAK,EAAA,wBAEhB,CAOgB,SAAAE,EAAAP,EAAAQ,EAAA,mCAEf,OAAAR,EAAA,MAAAS,CAAA,EAEAA,EAAA,OAAAT,CAAA,EAEAS,CACD,CAOgB,SAAAC,EAAAV,EAAAW,EAAA,CACf,OAAAC,EAAAZ,EAAAW,CAAA,EAAA,KAAAE,CAAA,GAAA,IACD,CAOgB,SAAAC,EAAAd,EAAAW,EAAA,CACf,OAAAC,EAAAZ,EAAAW,CAAA,EAAA,SAAAE,CAAA,GAAA,IACD,CAOgB,SAAAE,EAAAf,EAAAW,EAAA,wBAEhB,CAOgB,SAAAC,EAAAZ,EAAAW,EAAA,qCAEd,CAAA,CAIF,wCAkBC,OAAAX,EAAA,UACCA,EAAA,QAAA,CAAA,OAIAA,EAAA,QAAAgB,CAAA,EAAAC,GAGDA,IAAA,MACC,OAAAjB,EAAA,QAAAgB,CAAA,EAGDhB,EAAA,QAAAgB,CAAA,CACD,kCAWA,CAEA,MAAAE,EAAA,CAAe,MAAAC,EACd,UAAAN,EACA,OAAAO,EACA,IAAAhB,EACA,UAAAE,EACA,KAAAC,EACA,qBAAAG,EACA,yBAAAI,EACA,wBAAAC,EACA,sBAAAH,EACA,QAAAS"}
package/utils/dom.js CHANGED
@@ -15,8 +15,8 @@ function o(t) {
15
15
  const w = (t) => {
16
16
  if (!(t instanceof HTMLElement)) return !1;
17
17
  if (typeof t.checkVisibility == "function")
18
- t.checkVisibility();
19
- else {
18
+ return t.checkVisibility();
19
+ {
20
20
  const e = window.getComputedStyle(t);
21
21
  if (e.display === "none" || e.visibility === "hidden" || e.opacity === "0" || !document.body.contains(t)) return !1;
22
22
  const n = t.getBoundingClientRect();
package/utils/dom.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dom.js","sources":["../../src/core/utils/dom.ts"],"sourcesContent":["/**\n * Работа с Document Object Model (DOM)\n * @packageDocumentation\n */\n\n/**\n * Создать элемент\n * @param tagName\n * @param attrs - атрибуты\n * @param elsChildrens\n * @returns - созданный элемент\n */\nexport function genEl(tagName: string, attrs?: Record<string, string>, ...elsChildrens: HTMLElement[] | string[]): HTMLElement {\n\tconst el: any = document.createElement(tagName);\n\n\tfor (const name in attrs) {\n\t\tif (name.indexOf('on') === 0) {\n\t\t\t// events\n\t\t\tel[name] = attrs[name];\n\t\t} else {\n\t\t\tel.setAttribute(name, attrs[name]);\n\t\t}\n\t}\n\n\telsChildrens.forEach((elChildren: HTMLElement | string) => {\n\t\tif (typeof (elChildren) === 'string') {\n\t\t\tel.insertAdjacentHTML('beforeend', elChildren);\n\t\t} else {\n\t\t\tel.append(elChildren);\n\t\t}\n\t});\n\n\treturn el;\n}\n\n/**\n * Проверить видимость элемента\n * @param el\n * @returns - вернет true, если элемент считается видимым\n */\nexport function isVisible(el?: HTMLElement): boolean {\n\tif (!el) {\n\t\treturn false;\n\t}\n\n\tconst boundingClientRect = el.getBoundingClientRect();\n\treturn !!(boundingClientRect.width || boundingClientRect.height);\n}\n\n/**\n * Проверить видимость элемента (полифил для Element.checkVisibility())\n * @param el\n * @returns - вернет true, если элемент считается видимым\n */\nexport const checkVisibilityPolyfill = (el: Element | null | undefined) => {\n\tif (!(el instanceof HTMLElement)) return false;\n\n\tif (typeof el.checkVisibility === 'function') {\n\t\tel.checkVisibility();\n\t} else {\n\t\t// Проверка на видимость\n\t\tconst style = window.getComputedStyle(el);\n\t\tif (style.display === 'none' || style.visibility === 'hidden' || style.opacity === '0') return false;\n\n\t\t// Проверка, находится ли элемент в пределах документа\n\t\tif (!document.body.contains(el)) return false;\n\n\t\t// Проверка размеров\n\t\tconst rect = el.getBoundingClientRect();\n\t\tif (rect.width === 0 || rect.height === 0) return false;\n\n\t\treturn true;\n\t}\n}\n\n/**\n * Получить координаты элемента относительно документа\n * @param el\n * @returns - координаты элемента относительно документа\n */\nexport function offset(el: HTMLElement): { top: number, left: number } {\n\tconst boundingClientRect = el.getBoundingClientRect();\n\n\treturn {\n\t\ttop: boundingClientRect.top + window.scrollY,\n\t\tleft: boundingClientRect.left + window.scrollX,\n\t};\n}\n\n/**\n * Получить значение css свойства элемента\n *\n * @param el\n * @param property - имя свойства\n * @return - значение css стиля\n */\nexport function css(el: HTMLElement, property: string): string {\n\treturn window.getComputedStyle(el).getPropertyValue(property);\n}\n\n/**\n * Получить значение css свойства целочисленного типа\n *\n * @param el\n * @param property - имя свойства\n * @return - значение css стиля\n */\nexport function cssNumber(el: HTMLElement, property: string): number {\n\treturn parseInt(css(el, property));\n}\n\n/**\n * Обернуть элемент и вернуть только что созданный элемент\n * @param el - элемент, который требуется обернуть\n * @param tagName - имя тега элемента, в который треубется обернуть элемент\n */\nexport function wrap(el: HTMLElement, tagName: string): HTMLElement {\n\tconst elWrapper = document.createElement(tagName);\n\tel.after(elWrapper);\n\n\telWrapper.append(el);\n\n\treturn elWrapper;\n}\n\n/**\n * Найти и вернуть первый видимый элемент\n * @param el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n */\nexport function querySelectorVisible(el: HTMLElement, selectors: string): HTMLElement | null {\n\treturn querySelectorAllArray(el, selectors).find(isVisible) || null;\n}\n\n/**\n * Найти и вернуть последний видимый элемент\n * @param el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n */\nexport function querySelectorVisibleLast(el: HTMLElement, selectors: string): HTMLElement | null {\n\treturn querySelectorAllArray(el, selectors).findLast(isVisible) || null;\n}\n\n/**\n * Найти видимые элементы\n * @param el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n */\nexport function querySelectorAllVisible(el: HTMLElement | Document, selectors: string): HTMLElement[] {\n\treturn querySelectorAllArray(el, selectors).filter(isVisible);\n}\n\n/**\n * Найти элементы и вернуть в виде массива\n * @param el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n */\nexport function querySelectorAllArray<El extends HTMLElement = HTMLElement>(el: HTMLElement | Document, selectors: string) {\n\tif (!el) {\n\t\treturn [];\n\t}\n\n\treturn [...el.querySelectorAll<El>(selectors)];\n}\n\n/**\n * Хранилище данных элемента\n * @param el\n * @param contextName - контекст, обычно используется имя компонента\n * @param contextData - установить объект с данными, предыдущие данные будут заменены, установите null для удаления данных\n * @returns - вернет объект контекста или undefined, если данные контекста не найдены\n */\nexport function storage(\n\tel?: HTMLElement & { topData?: any },\n\tcontextName: string = 'common',\n\tcontextData: object | null | undefined = undefined,\n): any | undefined {\n\tif (!el) {\n\t\treturn;\n\t}\n\n\tif (!el.topData) {\n\t\tel.topData = {};\n\t}\n\n\tif (contextData) {\n\t\tel.topData[contextName] = contextData;\n\t}\n\n\tif (contextData === null) {\n\t\tdelete el.topData[contextName];\n\t}\n\n\treturn el.topData[contextName];\n}\n\n/**\n * Очистить хранилище элемента\n */\nexport function storageClear(el?: HTMLElement & { topData?: any }): void {\n\tif (!el) {\n\t\treturn;\n\t}\n\n\tdelete el.topData;\n}\n\nexport default {\n\tgenEl,\n\tisVisible,\n\toffset,\n\tcss,\n\tcssNumber,\n\twrap,\n\tquerySelectorVisible,\n\tquerySelectorVisibleLast,\n\tquerySelectorAllVisible,\n\tquerySelectorAllArray,\n\tstorage,\n\tstorageClear,\n};\n"],"names":["genEl","tagName","attrs","elsChildrens","el","name","elChildren","isVisible","boundingClientRect","checkVisibilityPolyfill","style","rect","offset","css","property","cssNumber","wrap","elWrapper","querySelectorVisible","selectors","querySelectorAllArray","querySelectorVisibleLast","querySelectorAllVisible","storage","contextName","contextData","storageClear","DOM"],"mappings":"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"}
1
+ {"version":3,"file":"dom.js","sources":["../../src/core/utils/dom.ts"],"sourcesContent":["/**\n * Работа с Document Object Model (DOM)\n * @packageDocumentation\n */\n\n/**\n * Создать элемент\n * @param tagName\n * @param attrs - атрибуты\n * @param elsChildrens\n * @returns - созданный элемент\n */\nexport function genEl(tagName: string, attrs?: Record<string, string>, ...elsChildrens: HTMLElement[] | string[]): HTMLElement {\n\tconst el: any = document.createElement(tagName);\n\n\tfor (const name in attrs) {\n\t\tif (name.indexOf('on') === 0) {\n\t\t\t// events\n\t\t\tel[name] = attrs[name];\n\t\t} else {\n\t\t\tel.setAttribute(name, attrs[name]);\n\t\t}\n\t}\n\n\telsChildrens.forEach((elChildren: HTMLElement | string) => {\n\t\tif (typeof (elChildren) === 'string') {\n\t\t\tel.insertAdjacentHTML('beforeend', elChildren);\n\t\t} else {\n\t\t\tel.append(elChildren);\n\t\t}\n\t});\n\n\treturn el;\n}\n\n/**\n * Проверить видимость элемента\n * @param el\n * @returns - вернет true, если элемент считается видимым\n */\nexport function isVisible(el?: HTMLElement): boolean {\n\tif (!el) {\n\t\treturn false;\n\t}\n\n\tconst boundingClientRect = el.getBoundingClientRect();\n\treturn !!(boundingClientRect.width || boundingClientRect.height);\n}\n\n/**\n * Проверить видимость элемента (полифил для Element.checkVisibility())\n * @param el\n * @returns - вернет true, если элемент считается видимым\n */\nexport const checkVisibilityPolyfill = (el: Element | null | undefined) => {\n\tif (!(el instanceof HTMLElement)) return false;\n\n\tif (typeof el.checkVisibility === 'function') {\n\t\treturn el.checkVisibility();\n\t} else {\n\t\t// Проверка на видимость\n\t\tconst style = window.getComputedStyle(el);\n\t\tif (style.display === 'none' || style.visibility === 'hidden' || style.opacity === '0') return false;\n\n\t\t// Проверка, находится ли элемент в пределах документа\n\t\tif (!document.body.contains(el)) return false;\n\n\t\t// Проверка размеров\n\t\tconst rect = el.getBoundingClientRect();\n\t\tif (rect.width === 0 || rect.height === 0) return false;\n\n\t\treturn true;\n\t}\n}\n\n/**\n * Получить координаты элемента относительно документа\n * @param el\n * @returns - координаты элемента относительно документа\n */\nexport function offset(el: HTMLElement): { top: number, left: number } {\n\tconst boundingClientRect = el.getBoundingClientRect();\n\n\treturn {\n\t\ttop: boundingClientRect.top + window.scrollY,\n\t\tleft: boundingClientRect.left + window.scrollX,\n\t};\n}\n\n/**\n * Получить значение css свойства элемента\n *\n * @param el\n * @param property - имя свойства\n * @return - значение css стиля\n */\nexport function css(el: HTMLElement, property: string): string {\n\treturn window.getComputedStyle(el).getPropertyValue(property);\n}\n\n/**\n * Получить значение css свойства целочисленного типа\n *\n * @param el\n * @param property - имя свойства\n * @return - значение css стиля\n */\nexport function cssNumber(el: HTMLElement, property: string): number {\n\treturn parseInt(css(el, property));\n}\n\n/**\n * Обернуть элемент и вернуть только что созданный элемент\n * @param el - элемент, который требуется обернуть\n * @param tagName - имя тега элемента, в который треубется обернуть элемент\n */\nexport function wrap(el: HTMLElement, tagName: string): HTMLElement {\n\tconst elWrapper = document.createElement(tagName);\n\tel.after(elWrapper);\n\n\telWrapper.append(el);\n\n\treturn elWrapper;\n}\n\n/**\n * Найти и вернуть первый видимый элемент\n * @param el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n */\nexport function querySelectorVisible(el: HTMLElement, selectors: string): HTMLElement | null {\n\treturn querySelectorAllArray(el, selectors).find(isVisible) || null;\n}\n\n/**\n * Найти и вернуть последний видимый элемент\n * @param el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n */\nexport function querySelectorVisibleLast(el: HTMLElement, selectors: string): HTMLElement | null {\n\treturn querySelectorAllArray(el, selectors).findLast(isVisible) || null;\n}\n\n/**\n * Найти видимые элементы\n * @param el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n */\nexport function querySelectorAllVisible(el: HTMLElement | Document, selectors: string): HTMLElement[] {\n\treturn querySelectorAllArray(el, selectors).filter(isVisible);\n}\n\n/**\n * Найти элементы и вернуть в виде массива\n * @param el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n */\nexport function querySelectorAllArray<El extends HTMLElement = HTMLElement>(el: HTMLElement | Document, selectors: string) {\n\tif (!el) {\n\t\treturn [];\n\t}\n\n\treturn [...el.querySelectorAll<El>(selectors)];\n}\n\n/**\n * Хранилище данных элемента\n * @param el\n * @param contextName - контекст, обычно используется имя компонента\n * @param contextData - установить объект с данными, предыдущие данные будут заменены, установите null для удаления данных\n * @returns - вернет объект контекста или undefined, если данные контекста не найдены\n */\nexport function storage(\n\tel?: HTMLElement & { topData?: any },\n\tcontextName: string = 'common',\n\tcontextData: object | null | undefined = undefined,\n): any | undefined {\n\tif (!el) {\n\t\treturn;\n\t}\n\n\tif (!el.topData) {\n\t\tel.topData = {};\n\t}\n\n\tif (contextData) {\n\t\tel.topData[contextName] = contextData;\n\t}\n\n\tif (contextData === null) {\n\t\tdelete el.topData[contextName];\n\t}\n\n\treturn el.topData[contextName];\n}\n\n/**\n * Очистить хранилище элемента\n */\nexport function storageClear(el?: HTMLElement & { topData?: any }): void {\n\tif (!el) {\n\t\treturn;\n\t}\n\n\tdelete el.topData;\n}\n\nexport default {\n\tgenEl,\n\tisVisible,\n\toffset,\n\tcss,\n\tcssNumber,\n\twrap,\n\tquerySelectorVisible,\n\tquerySelectorVisibleLast,\n\tquerySelectorAllVisible,\n\tquerySelectorAllArray,\n\tstorage,\n\tstorageClear,\n};\n"],"names":["genEl","tagName","attrs","elsChildrens","el","name","elChildren","isVisible","boundingClientRect","checkVisibilityPolyfill","style","rect","offset","css","property","cssNumber","wrap","elWrapper","querySelectorVisible","selectors","querySelectorAllArray","querySelectorVisibleLast","querySelectorAllVisible","storage","contextName","contextData","storageClear","DOM"],"mappings":"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"}