ivue-material-plus
Version:
A high quality UI components Library with Vue.js
1 lines • 3.11 kB
Source Map (JSON)
{"version":3,"file":"utils.mjs","sources":["../../../../../src/components/ivue-affix/utils.ts"],"sourcesContent":["import type { BindElement } from './types/affix';\r\n\r\n/**\r\n * 获取目标节点的元素大小及其相对于视口的位置的信息 top和bottom\r\n *\r\n * @param target 当前节点\r\n * @returns {DOMRect}\r\n */\r\nexport function getTargetRect(target: BindElement): DOMRect {\r\n // 是否是window节点\r\n return target !== window\r\n ? // 不是则使用 getBoundingClientRect\r\n (target as HTMLElement).getBoundingClientRect()\r\n : // 否者自定义对象\r\n ({ top: 0, bottom: window.innerHeight } as DOMRect);\r\n}\r\n\r\n/**\r\n * 获取固定到顶部的位置\r\n *\r\n * @param placeholderReact 占位节点\r\n * @param targetRect 目标节点\r\n * @param offsetTop 固定位置\r\n * @returns\r\n */\r\nexport function getFixedTop(\r\n placeholderReact: DOMRect,\r\n targetRect: DOMRect,\r\n offsetTop?: number\r\n): number | undefined {\r\n // 目标节点 top > 占位节点 top - 固定位置\r\n if (\r\n offsetTop !== undefined &&\r\n targetRect.top > placeholderReact.top - offsetTop\r\n ) {\r\n // 距离窗口顶部达到指定偏移量后触发 + 目标元素 top\r\n return offsetTop + targetRect.top;\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\n/**\r\n * 获取固定到底部的位置\r\n *\r\n * @param placeholderReact 占位节点\r\n * @param targetRect 目标节点\r\n * @param offsetBottom 固定位置\r\n * @returns\r\n */\r\nexport function getFixedBottom(\r\n placeholderReact: DOMRect,\r\n targetRect: DOMRect,\r\n offsetBottom?: number\r\n): number | undefined {\r\n // 目标节点 bottom < 占位节点 bottom + 固定位置\r\n if (\r\n offsetBottom !== undefined &&\r\n targetRect.bottom < placeholderReact.bottom + offsetBottom\r\n ) {\r\n // innerHeight - 目标元素 bottom\r\n const targetBottomOffset = window.innerHeight - targetRect.bottom;\r\n\r\n // 距离窗口底部达到指定偏移量后触发 + targetBottomOffset\r\n return offsetBottom + targetBottomOffset;\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\n// 获取默认目标节点\r\nexport function getDefaultTarget(): Window | null {\r\n return typeof window !== 'undefined' ? window : null;\r\n}\r\n"],"names":[],"mappings":"AAQO,SAAS,cAAc,MAA8B,EAAA;AAE1D,EAAO,OAAA,MAAA,KAAW,MAEb,GAAA,MAAA,CAAuB,qBAAsB,EAAA,GAE7C,EAAE,GAAK,EAAA,CAAA,EAAG,MAAQ,EAAA,MAAA,CAAO,WAAY,EAAA,CAAA;AAC5C,CAAA;AAUgB,SAAA,WAAA,CACd,gBACA,EAAA,UAAA,EACA,SACoB,EAAA;AAEpB,EAAA,IACE,cAAc,KACd,CAAA,IAAA,UAAA,CAAW,GAAM,GAAA,gBAAA,CAAiB,MAAM,SACxC,EAAA;AAEA,IAAA,OAAO,YAAY,UAAW,CAAA,GAAA,CAAA;AAAA,GAChC;AAEA,EAAO,OAAA,KAAA,CAAA,CAAA;AACT,CAAA;AAUgB,SAAA,cAAA,CACd,gBACA,EAAA,UAAA,EACA,YACoB,EAAA;AAEpB,EAAA,IACE,iBAAiB,KACjB,CAAA,IAAA,UAAA,CAAW,MAAS,GAAA,gBAAA,CAAiB,SAAS,YAC9C,EAAA;AAEA,IAAM,MAAA,kBAAA,GAAqB,MAAO,CAAA,WAAA,GAAc,UAAW,CAAA,MAAA,CAAA;AAG3D,IAAA,OAAO,YAAe,GAAA,kBAAA,CAAA;AAAA,GACxB;AAEA,EAAO,OAAA,KAAA,CAAA,CAAA;AACT,CAAA;AAGO,SAAS,gBAAkC,GAAA;AAChD,EAAO,OAAA,OAAO,MAAW,KAAA,WAAA,GAAc,MAAS,GAAA,IAAA,CAAA;AAClD;;;;"}