lisn.js
Version:
Simply handle user gestures and actions. Includes widgets.
1 lines • 9.2 kB
Source Map (JSON)
{"version":3,"file":"size.cjs","names":["MC","_interopRequireWildcard","require","MH","_domOptimize","_overlays","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","getEntryContentBox","entry","size","contentBoxSize","getSizeFromInlineBlock","rect","contentRect","S_WIDTH","S_HEIGHT","exports","getEntryBorderBox","fallbackToContent","borderBoxSize","NaN","isValidBox","box","includes","ALL_BOXES","isValidDimension","dimension","ALL_DIMENSIONS","tryGetViewportOverlay","viewportOverlay","fetchViewportOverlay","init","fetchViewportSize","realtime","_MH$getDocScrollingEl","_root$clientWidth","_root$clientHeight","waitForMeasureTime","root","hasDOM","getDocScrollingElement","getBody","clientWidth","clientHeight","S_INLINE_SIZE","S_BLOCK_SIZE","isIterableObject","initPromise","createOverlay","id","prefixName","style","position"],"sources":["../../../src/ts/utils/size.ts"],"sourcesContent":["/**\n * @module Utils\n */\n\nimport * as MC from \"@lisn/globals/minification-constants\";\nimport * as MH from \"@lisn/globals/minification-helpers\";\n\nimport { Box, Dimension, Size } from \"@lisn/globals/types\";\n\nimport { waitForMeasureTime } from \"@lisn/utils/dom-optimize\";\nimport { createOverlay } from \"@lisn/utils/overlays\";\n\n/**\n * Returns the content box size of the given\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserverEntry | ResizeObserverEntry}.\n *\n * @category Size measurements\n */\nexport const getEntryContentBox = (entry: ResizeObserverEntry): Size => {\n const size = entry.contentBoxSize;\n\n if (size) {\n return getSizeFromInlineBlock(size);\n }\n\n const rect = entry.contentRect;\n return { [MC.S_WIDTH]: rect[MC.S_WIDTH], [MC.S_HEIGHT]: rect[MC.S_HEIGHT] };\n};\n\n/**\n * Returns the border box size of the given\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserverEntry | ResizeObserverEntry}.\n *\n * @param fallbackToContent If the entry does not contain border box\n * measurements (depending on browser), then fall back\n * to using the content box size. Otherwise (by\n * default) will return `NaN` values for width and\n * height.\n *\n * @category Size measurements\n */\nexport const getEntryBorderBox = (\n entry: ResizeObserverEntry,\n fallbackToContent = false,\n): Size => {\n const size = entry.borderBoxSize;\n\n if (size) {\n return getSizeFromInlineBlock(size);\n } else if (fallbackToContent) {\n return getEntryContentBox(entry);\n }\n\n return { [MC.S_WIDTH]: NaN, [MC.S_HEIGHT]: NaN };\n};\n\n/**\n * Returns true if the given string is a valid box type.\n *\n * @category Validation\n */\nexport const isValidBox = (box: string): box is Box =>\n MH.includes(ALL_BOXES, box);\n\n/**\n * Returns true if the given string is a valid dimension.\n *\n * @category Validation\n */\nexport const isValidDimension = (dimension: string): dimension is Dimension =>\n MH.includes(ALL_DIMENSIONS, dimension);\n\n/**\n * @ignore\n * @internal\n */\nexport const tryGetViewportOverlay = (): HTMLElement | null =>\n viewportOverlay ?? null;\n\n/**\n * @ignore\n * @internal\n *\n * Exposed via SizeWatcher\n */\nexport const fetchViewportOverlay = async (): Promise<HTMLElement> => {\n await init();\n\n return viewportOverlay;\n};\n\n/**\n * @ignore\n * @internal\n */\nexport const fetchViewportSize = async (realtime = false) => {\n if (!realtime) {\n await waitForMeasureTime();\n }\n\n const root = MH.hasDOM()\n ? (MH.getDocScrollingElement() ?? MH.getBody())\n : null;\n\n return {\n [MC.S_WIDTH]: root?.clientWidth ?? 0,\n [MC.S_HEIGHT]: root?.clientHeight ?? 0,\n };\n};\n\n// ----------------------------------------\n\nconst S_INLINE_SIZE = \"inlineSize\";\nconst S_BLOCK_SIZE = \"blockSize\";\n\nconst ALL_BOXES: Box[] = [\"content\", \"border\"] as const;\nconst ALL_DIMENSIONS: Dimension[] = [MC.S_WIDTH, MC.S_HEIGHT] as const;\n\nconst getSizeFromInlineBlock = (\n size: ResizeObserverSize | ReadonlyArray<ResizeObserverSize>,\n): Size => {\n /* istanbul ignore else */\n if (MH.isIterableObject(size)) {\n return {\n [MC.S_WIDTH]: size[0][S_INLINE_SIZE],\n [MC.S_HEIGHT]: size[0][S_BLOCK_SIZE],\n };\n }\n return {\n // in some browsers inlineSize and blockSize are scalars and nor Arrays\n [MC.S_WIDTH]: (size as { [S_INLINE_SIZE]: number })[S_INLINE_SIZE],\n [MC.S_HEIGHT]: (size as { [S_BLOCK_SIZE]: number })[S_BLOCK_SIZE],\n };\n};\n\n// ------------------------------\n\nlet viewportOverlay: HTMLElement;\nlet initPromise: Promise<void> | null = null;\nconst init = (): Promise<void> => {\n if (!initPromise) {\n initPromise = (async () => {\n viewportOverlay = await createOverlay({\n id: MH.prefixName(\"vp-ovrl\"),\n style: {\n position: \"fixed\",\n [MC.S_WIDTH]: \"100vw\",\n [MC.S_HEIGHT]: \"100vh\",\n },\n });\n })();\n }\n\n return initPromise;\n};\n"],"mappings":"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","ignoreList":[]}