UNPKG

tdesign-mobile-vue

Version:
1 lines 2.77 kB
{"version":3,"file":"index.mjs","sources":["../../../src/shared/useScrollParent/index.ts"],"sourcesContent":["import { ref, Ref, onMounted } from 'vue';\nimport { isBrowser } from '../util';\n\ntype ScrollElement = HTMLElement | Window;\n\nconst overflowScrollReg = /scroll|auto/i;\nconst defaultRoot = isBrowser ? window : undefined;\n\nfunction isElement(node: Element) {\n const ELEMENT_NODE_TYPE = 1;\n return node.tagName !== 'HTML' && node.tagName !== 'BODY' && node.nodeType === ELEMENT_NODE_TYPE;\n}\n\nexport function getScrollParent(el: Element, root: ScrollElement | undefined = defaultRoot) {\n let node = el;\n\n while (node && node !== root && isElement(node)) {\n const { overflowY } = window.getComputedStyle(node);\n if (overflowScrollReg.test(overflowY)) {\n return node;\n }\n node = node.parentNode as Element;\n }\n\n return root;\n}\n\nexport function useScrollParent(el: Ref<Element | undefined>, root: ScrollElement | undefined = defaultRoot) {\n const scrollParent = ref<Element | Window>();\n\n onMounted(() => {\n if (el.value) {\n scrollParent.value = getScrollParent(el.value, root);\n }\n });\n\n return scrollParent;\n}\n"],"names":["overflowScrollReg","defaultRoot","isBrowser","window","isElement","node","ELEMENT_NODE_TYPE","tagName","nodeType","getScrollParent","el","root","arguments","length","undefined","_window$getComputedSt","getComputedStyle","overflowY","test","parentNode","useScrollParent","scrollParent","ref","onMounted","value"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAKA,IAAMA,iBAAoB,GAAA,cAAA,CAAA;AAC1B,IAAMC,WAAA,GAAcC,YAAYC,MAAS,GAAA,KAAA,CAAA,CAAA;AAEzC,SAASC,UAAUC,IAAe,EAAA;EAChC,IAAMC,iBAAoB,GAAA,CAAA,CAAA;AAC1B,EAAA,OAAOD,KAAKE,OAAY,KAAA,MAAA,IAAUF,KAAKE,OAAY,KAAA,MAAA,IAAUF,KAAKG,QAAa,KAAAF,iBAAA,CAAA;AACjF,CAAA;AAEgB,SAAAG,eAAAA,CAAgBC,EAAa,EAA+C;AAAA,EAAA,IAA/CC,IAAA,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAkCX,WAAa,CAAA;EAC1F,IAAII,IAAO,GAAAK,EAAA,CAAA;EAEX,OAAOL,IAAQ,IAAAA,IAAA,KAASM,IAAQ,IAAAP,SAAA,CAAUC,IAAI,CAAG,EAAA;AAC/C,IAAA,IAAAU,qBAAA,GAAsBZ,MAAA,CAAOa,iBAAiBX,IAAI,CAAA;MAA1CY,SAAA,GAAAF,qBAAA,CAAAE,SAAA,CAAA;AACJ,IAAA,IAAAjB,iBAAA,CAAkBkB,IAAK,CAAAD,SAAS,CAAG,EAAA;AAC9B,MAAA,OAAAZ,IAAA,CAAA;AACT,KAAA;IACAA,IAAA,GAAOA,IAAK,CAAAc,UAAA,CAAA;AACd,GAAA;AAEO,EAAA,OAAAR,IAAA,CAAA;AACT,CAAA;AAEgB,SAAAS,eAAAA,CAAgBV,EAA8B,EAA+C;AAAA,EAAA,IAA/CC,IAAA,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAkCX,WAAa,CAAA;AAC3G,EAAA,IAAMoB,eAAeC,GAAsB,EAAA,CAAA;AAE3CC,EAAAA,SAAA,CAAU,YAAM;IACd,IAAIb,GAAGc,KAAO,EAAA;MACZH,YAAA,CAAaG,KAAQ,GAAAf,eAAA,CAAgBC,EAAG,CAAAc,KAAA,EAAOb,IAAI,CAAA,CAAA;AACrD,KAAA;AACF,GAAC,CAAA,CAAA;AAEM,EAAA,OAAAU,YAAA,CAAA;AACT;;;;"}