@krainovsd/js-helpers 0.13.3 → 0.13.5
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.
- package/lib/cjs/index.cjs +223 -354
- package/lib/cjs/index.cjs.map +1 -1
- package/lib/esm/lib/api/core.js +21 -8
- package/lib/esm/lib/api/core.js.map +1 -1
- package/lib/esm/lib/browser/get-visible-position.js +197 -341
- package/lib/esm/lib/browser/get-visible-position.js.map +1 -1
- package/lib/esm/lib/utils/limit-stream-of-requests.js +5 -5
- package/lib/esm/lib/utils/limit-stream-of-requests.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-visible-position.js","sources":["../../../../src/lib/browser/get-visible-position.ts"],"sourcesContent":["export type PositionPlacements =\n | \"bottom-center\"\n | \"bottom-left\"\n | \"bottom-right\"\n | \"right-center\"\n | \"right-top\"\n | \"right-bottom\"\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"left-center\"\n | \"left-top\"\n | \"left-bottom\"\n | \"flex\";\n\nexport type VisiblePosition = {\n top: number;\n left: number;\n right: number;\n bottom: number;\n placement: PositionPlacements;\n};\n\ntype InitialPosition = {\n targetNode?: HTMLElement;\n position?: {\n x: number;\n y: number;\n width: number;\n height: number;\n };\n};\ntype GetVisiblePositionOptions = {\n node: HTMLElement;\n visibleArea?: HTMLElement;\n initialPosition?: InitialPosition;\n placement?: Exclude<PositionPlacements, \"flex\">;\n stepX?: number;\n stepY?: number;\n flex?: boolean;\n};\nexport function getVisiblePosition({\n initialPosition,\n node,\n visibleArea,\n placement = \"bottom-center\",\n stepX = placement === \"bottom-center\" ||\n placement === \"bottom-left\" ||\n placement === \"bottom-right\" ||\n placement === \"top-left\" ||\n placement === \"top-center\" ||\n placement === \"top-right\"\n ? 0\n : 10,\n stepY = placement === \"left-bottom\" ||\n placement === \"left-center\" ||\n placement === \"left-top\" ||\n placement === \"right-bottom\" ||\n placement === \"right-top\" ||\n placement === \"right-center\"\n ? 0\n : 10,\n flex,\n}: GetVisiblePositionOptions): VisiblePosition {\n const windowWidth = document.documentElement.clientWidth;\n const windowHeight = document.documentElement.clientHeight;\n let xStart = 0;\n let xEnd = windowWidth;\n let yStart = 0;\n let yEnd = windowHeight;\n\n if (visibleArea) {\n const { top, left, height, width } = visibleArea.getBoundingClientRect();\n xStart = left;\n xEnd = left + width;\n yStart = top;\n yEnd = top + height;\n }\n\n let targetHeight = 0;\n let targetWidth = 0;\n\n let {\n top: targetTopPosition,\n left: targetLeftPosition,\n height: nodeHeight,\n width: nodeWidth,\n } = node.getBoundingClientRect();\n\n if (initialPosition?.targetNode) {\n const {\n top: childTop,\n left: childLeft,\n height,\n width,\n } = initialPosition.targetNode.getBoundingClientRect();\n targetHeight = height;\n targetWidth = width;\n targetTopPosition = childTop;\n targetLeftPosition = childLeft;\n }\n if (initialPosition?.position) {\n if (initialPosition.position.x) {\n targetLeftPosition = initialPosition.position.x;\n }\n if (initialPosition.position.y) {\n targetTopPosition = initialPosition.position.y;\n }\n if (initialPosition.position.height) {\n targetHeight = initialPosition.position.height;\n }\n if (initialPosition.position.width) {\n targetWidth = initialPosition.position.width;\n }\n }\n\n function isCompletelyVisibleX(left: number) {\n const endXPosition = nodeWidth + left;\n\n return xStart <= left && xEnd >= endXPosition;\n }\n function isCompletelyVisibleY(top: number) {\n const endYPosition = nodeHeight + top;\n\n return yStart <= top && yEnd >= endYPosition;\n }\n\n let correctLeft: number | null = targetLeftPosition;\n let correctTop: number | null = targetTopPosition;\n\n const { x, y } = getStartPositions({\n targetHeight,\n targetWidth,\n targetLeftPosition,\n nodeHeight,\n nodeWidth,\n stepX,\n stepY,\n targetTopPosition,\n });\n switch (placement) {\n case \"bottom-center\": {\n correctLeft = x.bottomCenter;\n correctTop = y.bottom;\n let placement: PositionPlacements = \"bottom-center\";\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.bottomLeft)) {\n placement = \"bottom-left\";\n correctLeft = x.bottomLeft;\n } else if (isCompletelyVisibleX(x.bottomRight)) {\n placement = \"bottom-right\";\n correctLeft = x.bottomRight;\n }\n }\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.top)) {\n placement = placement.replace(\"bottom\", \"top\") as PositionPlacements;\n correctTop = y.top;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"bottom-left\": {\n correctLeft = x.bottomLeft;\n correctTop = y.bottom;\n let placement: PositionPlacements = \"bottom-left\";\n\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.bottomCenter)) {\n placement = \"bottom-center\";\n correctLeft = x.bottomCenter;\n } else if (isCompletelyVisibleX(x.bottomRight)) {\n placement = \"bottom-right\";\n correctLeft = x.bottomRight;\n }\n }\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.top)) {\n placement = placement.replace(\"bottom\", \"top\") as PositionPlacements;\n correctTop = y.top;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"bottom-right\": {\n correctLeft = x.bottomRight;\n correctTop = y.bottom;\n let placement: PositionPlacements = \"bottom-right\";\n\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.bottomCenter)) {\n placement = \"bottom-center\";\n correctLeft = x.bottomCenter;\n } else if (isCompletelyVisibleX(x.bottomLeft)) {\n placement = \"bottom-left\";\n correctLeft = x.bottomLeft;\n }\n }\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.top)) {\n placement = placement.replace(\"bottom\", \"top\") as PositionPlacements;\n correctTop = y.top;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"right-bottom\": {\n correctLeft = x.right;\n correctTop = y.rightBottom;\n let placement: PositionPlacements = \"right-bottom\";\n\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.rightCenter)) {\n placement = \"right-center\";\n correctTop = y.rightCenter;\n } else if (isCompletelyVisibleY(y.rightTop)) {\n placement = \"right-top\";\n correctTop = y.rightTop;\n }\n }\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.left)) {\n placement = placement.replace(\"right\", \"left\") as PositionPlacements;\n correctLeft = x.left;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"right-center\": {\n correctLeft = x.right;\n correctTop = y.rightCenter;\n let placement: PositionPlacements = \"right-center\";\n\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.rightTop)) {\n placement = \"right-top\";\n correctTop = y.rightTop;\n } else if (isCompletelyVisibleY(y.rightBottom)) {\n placement = \"right-bottom\";\n correctTop = y.rightBottom;\n }\n }\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.left)) {\n placement = placement.replace(\"right\", \"left\") as PositionPlacements;\n correctLeft = x.left;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"right-top\": {\n correctLeft = x.right;\n correctTop = y.rightTop;\n let placement: PositionPlacements = \"right-top\";\n\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.rightCenter)) {\n placement = \"right-center\";\n correctTop = y.rightCenter;\n } else if (isCompletelyVisibleY(y.rightBottom)) {\n placement = \"right-bottom\";\n correctTop = y.rightBottom;\n }\n }\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.left)) {\n placement = placement.replace(\"right\", \"left\") as PositionPlacements;\n correctLeft = x.left;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"top-center\": {\n correctLeft = x.bottomCenter;\n correctTop = y.top;\n let placement: PositionPlacements = \"top-center\";\n\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.bottomLeft)) {\n placement = \"top-left\";\n correctLeft = x.bottomLeft;\n } else if (isCompletelyVisibleX(x.bottomRight)) {\n placement = \"top-right\";\n correctLeft = x.bottomRight;\n }\n }\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.bottom)) {\n placement = placement.replace(\"top\", \"bottom\") as PositionPlacements;\n correctTop = y.bottom;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"top-left\": {\n correctLeft = x.bottomLeft;\n correctTop = y.top;\n let placement: PositionPlacements = \"top-left\";\n\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.bottomCenter)) {\n placement = \"top-center\";\n correctLeft = x.bottomCenter;\n } else if (isCompletelyVisibleX(x.bottomRight)) {\n placement = \"top-right\";\n correctLeft = x.bottomRight;\n }\n }\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.bottom)) {\n placement = placement.replace(\"top\", \"bottom\") as PositionPlacements;\n correctTop = y.bottom;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"top-right\": {\n correctLeft = x.bottomRight;\n correctTop = y.top;\n let placement: PositionPlacements = \"top-right\";\n\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.bottomCenter)) {\n placement = \"top-center\";\n correctLeft = x.bottomCenter;\n } else if (isCompletelyVisibleX(x.bottomLeft)) {\n placement = \"top-left\";\n correctLeft = x.bottomLeft;\n }\n }\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.bottom)) {\n placement = placement.replace(\"top\", \"bottom\") as PositionPlacements;\n correctTop = y.bottom;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"left-bottom\": {\n correctLeft = x.left;\n correctTop = y.rightBottom;\n let placement: PositionPlacements = \"left-bottom\";\n\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.rightCenter)) {\n placement = \"left-center\";\n correctTop = y.rightCenter;\n } else if (isCompletelyVisibleY(y.rightTop)) {\n placement = \"left-top\";\n correctTop = y.rightTop;\n }\n }\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.right)) {\n placement = placement.replace(\"left\", \"right\") as PositionPlacements;\n correctLeft = x.right;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"left-center\": {\n correctLeft = x.left;\n correctTop = y.rightCenter;\n let placement: PositionPlacements = \"left-center\";\n\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.rightTop)) {\n placement = \"left-top\";\n correctTop = y.rightTop;\n } else if (isCompletelyVisibleY(y.rightBottom)) {\n placement = \"left-bottom\";\n correctTop = y.rightBottom;\n }\n }\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.right)) {\n placement = placement.replace(\"left\", \"right\") as PositionPlacements;\n correctLeft = x.right;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"left-top\": {\n correctLeft = x.left;\n correctTop = y.rightTop;\n let placement: PositionPlacements = \"left-top\";\n\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.rightCenter)) {\n placement = \"left-center\";\n correctTop = y.rightCenter;\n } else if (isCompletelyVisibleY(y.rightBottom)) {\n placement = \"left-bottom\";\n correctTop = y.rightBottom;\n }\n }\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.right)) {\n placement = placement.replace(\"left\", \"right\") as PositionPlacements;\n\n correctLeft = x.right;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n default: {\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n }\n}\n\ntype GetStartPositions = {\n targetWidth: number;\n targetHeight: number;\n nodeWidth: number;\n nodeHeight: number;\n targetLeftPosition: number;\n targetTopPosition: number;\n stepY: number;\n stepX: number;\n};\ntype XPositions = \"bottomCenter\" | \"bottomLeft\" | \"bottomRight\" | \"right\" | \"left\";\ntype YPosition = \"rightCenter\" | \"rightTop\" | \"rightBottom\" | \"bottom\" | \"top\";\n\nfunction getStartPositions({\n targetHeight,\n targetWidth,\n nodeHeight,\n nodeWidth,\n targetLeftPosition,\n targetTopPosition,\n stepX,\n stepY,\n}: GetStartPositions) {\n const childBottomCenter = targetWidth ? targetLeftPosition + targetWidth / 2 : targetLeftPosition;\n const childBottom = targetHeight ? targetTopPosition + targetHeight : targetTopPosition;\n const childRightCenter = targetHeight ? targetTopPosition + targetHeight / 2 : targetTopPosition;\n\n const x: Record<XPositions, number> = {\n bottomCenter: childBottomCenter - nodeWidth / 2 + stepX,\n bottomRight: targetLeftPosition + targetWidth + stepX - nodeWidth,\n bottomLeft: targetLeftPosition + stepX,\n left: targetLeftPosition - nodeWidth - stepX,\n right: targetLeftPosition + targetWidth + stepX,\n };\n\n const y: Record<YPosition, number> = {\n bottom: childBottom + stepY,\n top: targetTopPosition - stepY - nodeHeight,\n rightCenter: childRightCenter - nodeHeight / 2 + stepY,\n rightBottom: targetTopPosition + targetHeight - nodeHeight + stepY,\n rightTop: targetTopPosition + stepY,\n };\n\n return { x, y };\n}\n\ntype GetFlexVisiblePosition = {\n isCompletelyVisibleY: (top: number) => boolean;\n isCompletelyVisibleX: (left: number) => boolean;\n initialLeft: number;\n initialTop: number;\n xEnd: number;\n yEnd: number;\n nodeWidth: number;\n nodeHeight: number;\n};\n\nfunction getFlexVisiblePosition({\n initialLeft,\n initialTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n}: GetFlexVisiblePosition): VisiblePosition {\n if (!isCompletelyVisibleY(initialTop)) {\n initialTop = yEnd - nodeHeight;\n }\n if (!isCompletelyVisibleX(initialLeft)) {\n initialLeft = xEnd - nodeWidth;\n }\n\n return {\n top: initialTop,\n left: initialLeft,\n bottom: yEnd - initialTop - nodeHeight,\n right: xEnd - initialLeft - nodeWidth,\n placement: \"flex\",\n };\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"get-visible-position.js","sources":["../../../../src/lib/browser/get-visible-position.ts"],"sourcesContent":["type XPositions = \"insideCenter\" | \"insideLeft\" | \"insideRight\" | \"right\" | \"left\";\ntype YPosition = \"insideCenter\" | \"insideTop\" | \"insideBottom\" | \"bottom\" | \"top\";\n\nexport type PositionPlacements =\n | \"bottom-center\"\n | \"bottom-left\"\n | \"bottom-right\"\n | \"right-center\"\n | \"right-top\"\n | \"right-bottom\"\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"left-center\"\n | \"left-top\"\n | \"left-bottom\"\n | \"flex\";\n\nexport type VisiblePosition = {\n top: number;\n left: number;\n right: number;\n bottom: number;\n placement: PositionPlacements;\n};\n\ntype InitialVisiblePosition = {\n top: number;\n left: number;\n placement: PositionPlacements;\n};\n\ntype InitialPosition = {\n targetNode?: HTMLElement;\n position?: {\n x: number;\n y: number;\n width: number;\n height: number;\n };\n};\ntype GetVisiblePositionOptions = {\n node: HTMLElement;\n initialPosition?: InitialPosition;\n visibleArea?: HTMLElement;\n placement?: Exclude<PositionPlacements, \"flex\">;\n stepX?: number;\n stepY?: number;\n flex?: boolean;\n};\nexport function getVisiblePosition({\n initialPosition,\n node,\n visibleArea,\n placement = \"bottom-center\",\n stepX = placement === \"bottom-center\" ||\n placement === \"bottom-left\" ||\n placement === \"bottom-right\" ||\n placement === \"top-left\" ||\n placement === \"top-center\" ||\n placement === \"top-right\"\n ? 0\n : 10,\n stepY = placement === \"left-bottom\" ||\n placement === \"left-center\" ||\n placement === \"left-top\" ||\n placement === \"right-bottom\" ||\n placement === \"right-top\" ||\n placement === \"right-center\"\n ? 0\n : 10,\n flex,\n}: GetVisiblePositionOptions): VisiblePosition {\n /** Viewport Variables */\n const viewport = visibleArea ?? document.documentElement;\n const scrollTop = document.documentElement.scrollTop;\n const scrollLeft = document.documentElement.scrollLeft;\n const rect = viewport.getBoundingClientRect();\n const viewportWidth = viewport.clientWidth;\n const viewportHeight = viewport.clientHeight;\n const xStart = visibleArea ? viewport.offsetLeft - viewport.scrollLeft : Math.abs(rect.left);\n const xEnd = xStart + viewportWidth;\n const yStart = visibleArea ? viewport.offsetTop : Math.abs(rect.top);\n const yEnd = yStart + viewportHeight;\n\n /** Target Variables */\n let targetHeight = 0;\n let targetWidth = 0;\n let targetTopPosition = 0;\n let targetLeftPosition = 0;\n\n const { height: nodeHeight, width: nodeWidth } = node.getBoundingClientRect();\n\n if (initialPosition?.targetNode) {\n const { top, left, height, width } = initialPosition.targetNode.getBoundingClientRect();\n targetHeight = height;\n targetWidth = width;\n targetTopPosition = top + scrollTop;\n targetLeftPosition = left + scrollLeft;\n }\n if (initialPosition?.position) {\n if (initialPosition.position.x) {\n targetLeftPosition = initialPosition.position.x + scrollLeft;\n }\n if (initialPosition.position.y) {\n targetTopPosition = initialPosition.position.y + scrollTop;\n }\n if (initialPosition.position.height) {\n targetHeight = initialPosition.position.height;\n }\n if (initialPosition.position.width) {\n targetWidth = initialPosition.position.width;\n }\n }\n /** Initial Position */\n const targetXCenter = targetWidth ? targetLeftPosition + targetWidth / 2 : targetLeftPosition;\n const targetYCenter = targetHeight ? targetTopPosition + targetHeight / 2 : targetTopPosition;\n const targetYEnd = targetHeight ? targetTopPosition + targetHeight : targetTopPosition;\n\n const x: Record<XPositions, number> = {\n insideCenter: targetXCenter - nodeWidth / 2 + stepX,\n insideRight: targetLeftPosition + targetWidth + stepX - nodeWidth,\n insideLeft: targetLeftPosition + stepX,\n left: targetLeftPosition - nodeWidth - stepX,\n right: targetLeftPosition + targetWidth + stepX,\n };\n\n const y: Record<YPosition, number> = {\n bottom: targetYEnd + stepY,\n top: targetTopPosition - stepY - nodeHeight,\n insideCenter: targetYCenter - nodeHeight / 2 + stepY,\n insideBottom: targetTopPosition + targetHeight - nodeHeight + stepY,\n insideTop: targetTopPosition + stepY,\n };\n /** Find visible position */\n function isCompletelyVisibleX(left: number) {\n const endXPosition = nodeWidth + left;\n\n return xStart <= left && xEnd >= endXPosition;\n }\n function isCompletelyVisibleY(top: number) {\n const endYPosition = nodeHeight + top;\n\n return yStart <= top && yEnd >= endYPosition;\n }\n\n let visiblePositions = processVisiblePositions({\n targetLeftPosition,\n targetTopPosition,\n x,\n y,\n placement,\n flex,\n nodeHeight,\n nodeWidth,\n xEnd,\n xStart,\n yEnd,\n yStart,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n });\n if (\n flex &&\n (!isCompletelyVisibleX(visiblePositions.left) || !isCompletelyVisibleY(visiblePositions.top))\n ) {\n visiblePositions = getFlexVisiblePosition({\n initialLeft: visiblePositions.left,\n initialTop: visiblePositions.top,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n placement: visiblePositions.placement,\n left: visiblePositions.left,\n top: visiblePositions.top,\n bottom: yEnd - scrollTop - (visiblePositions.top + nodeHeight),\n right: xEnd - scrollLeft - (visiblePositions.left + nodeWidth),\n };\n}\n\ntype ProcessVisiblePositions = {\n placement: Exclude<PositionPlacements, \"flex\">;\n x: Record<XPositions, number>;\n y: Record<YPosition, number>;\n targetLeftPosition: number;\n targetTopPosition: number;\n nodeWidth: number;\n nodeHeight: number;\n xStart: number;\n xEnd: number;\n yStart: number;\n yEnd: number;\n flex: boolean | undefined;\n isCompletelyVisibleX: (position: number) => boolean;\n isCompletelyVisibleY: (position: number) => boolean;\n};\nfunction processVisiblePositions(opts: ProcessVisiblePositions): InitialVisiblePosition {\n let correctLeft: number | null = opts.targetLeftPosition;\n let correctTop: number | null = opts.targetTopPosition;\n\n switch (opts.placement) {\n case \"bottom-center\": {\n correctLeft = opts.x.insideCenter;\n correctTop = opts.y.bottom;\n let placement: PositionPlacements = \"bottom-center\";\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.insideLeft)) {\n placement = \"bottom-left\";\n correctLeft = opts.x.insideLeft;\n } else if (opts.isCompletelyVisibleX(opts.x.insideRight)) {\n placement = \"bottom-right\";\n correctLeft = opts.x.insideRight;\n }\n }\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.top)) {\n placement = placement.replace(\"bottom\", \"top\") as PositionPlacements;\n correctTop = opts.y.top;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"bottom-left\": {\n correctLeft = opts.x.insideLeft;\n correctTop = opts.y.bottom;\n let placement: PositionPlacements = \"bottom-left\";\n\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.insideCenter)) {\n placement = \"bottom-center\";\n correctLeft = opts.x.insideCenter;\n } else if (opts.isCompletelyVisibleX(opts.x.insideRight)) {\n placement = \"bottom-right\";\n correctLeft = opts.x.insideRight;\n }\n }\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.top)) {\n placement = placement.replace(\"bottom\", \"top\") as PositionPlacements;\n correctTop = opts.y.top;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"bottom-right\": {\n correctLeft = opts.x.insideRight;\n correctTop = opts.y.bottom;\n let placement: PositionPlacements = \"bottom-right\";\n\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.insideCenter)) {\n placement = \"bottom-center\";\n correctLeft = opts.x.insideCenter;\n } else if (opts.isCompletelyVisibleX(opts.x.insideLeft)) {\n placement = \"bottom-left\";\n correctLeft = opts.x.insideLeft;\n }\n }\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.top)) {\n placement = placement.replace(\"bottom\", \"top\") as PositionPlacements;\n correctTop = opts.y.top;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"right-bottom\": {\n correctLeft = opts.x.right;\n correctTop = opts.y.insideBottom;\n let placement: PositionPlacements = \"right-bottom\";\n\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.insideCenter)) {\n placement = \"right-center\";\n correctTop = opts.y.insideCenter;\n } else if (opts.isCompletelyVisibleY(opts.y.insideTop)) {\n placement = \"right-top\";\n correctTop = opts.y.insideTop;\n }\n }\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.left)) {\n placement = placement.replace(\"right\", \"left\") as PositionPlacements;\n correctLeft = opts.x.left;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"right-center\": {\n correctLeft = opts.x.right;\n correctTop = opts.y.insideCenter;\n let placement: PositionPlacements = \"right-center\";\n\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.insideTop)) {\n placement = \"right-top\";\n correctTop = opts.y.insideTop;\n } else if (opts.isCompletelyVisibleY(opts.y.insideBottom)) {\n placement = \"right-bottom\";\n correctTop = opts.y.insideBottom;\n }\n }\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.left)) {\n placement = placement.replace(\"right\", \"left\") as PositionPlacements;\n correctLeft = opts.x.left;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"right-top\": {\n correctLeft = opts.x.right;\n correctTop = opts.y.insideTop;\n let placement: PositionPlacements = \"right-top\";\n\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.insideCenter)) {\n placement = \"right-center\";\n correctTop = opts.y.insideCenter;\n } else if (opts.isCompletelyVisibleY(opts.y.insideBottom)) {\n placement = \"right-bottom\";\n correctTop = opts.y.insideBottom;\n }\n }\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.left)) {\n placement = placement.replace(\"right\", \"left\") as PositionPlacements;\n correctLeft = opts.x.left;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"top-center\": {\n correctLeft = opts.x.insideCenter;\n correctTop = opts.y.top;\n let placement: PositionPlacements = \"top-center\";\n\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.insideLeft)) {\n placement = \"top-left\";\n correctLeft = opts.x.insideLeft;\n } else if (opts.isCompletelyVisibleX(opts.x.insideRight)) {\n placement = \"top-right\";\n correctLeft = opts.x.insideRight;\n }\n }\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.bottom)) {\n placement = placement.replace(\"top\", \"bottom\") as PositionPlacements;\n correctTop = opts.y.bottom;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"top-left\": {\n correctLeft = opts.x.insideLeft;\n correctTop = opts.y.top;\n let placement: PositionPlacements = \"top-left\";\n\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.insideCenter)) {\n placement = \"top-center\";\n correctLeft = opts.x.insideCenter;\n } else if (opts.isCompletelyVisibleX(opts.x.insideRight)) {\n placement = \"top-right\";\n correctLeft = opts.x.insideRight;\n }\n }\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.bottom)) {\n placement = placement.replace(\"top\", \"bottom\") as PositionPlacements;\n correctTop = opts.y.bottom;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"top-right\": {\n correctLeft = opts.x.insideRight;\n correctTop = opts.y.top;\n let placement: PositionPlacements = \"top-right\";\n\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.insideCenter)) {\n placement = \"top-center\";\n correctLeft = opts.x.insideCenter;\n } else if (opts.isCompletelyVisibleX(opts.x.insideLeft)) {\n placement = \"top-left\";\n correctLeft = opts.x.insideLeft;\n }\n }\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.bottom)) {\n placement = placement.replace(\"top\", \"bottom\") as PositionPlacements;\n correctTop = opts.y.bottom;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"left-bottom\": {\n correctLeft = opts.x.left;\n correctTop = opts.y.insideBottom;\n let placement: PositionPlacements = \"left-bottom\";\n\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.insideCenter)) {\n placement = \"left-center\";\n correctTop = opts.y.insideCenter;\n } else if (opts.isCompletelyVisibleY(opts.y.insideTop)) {\n placement = \"left-top\";\n correctTop = opts.y.insideTop;\n }\n }\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.right)) {\n placement = placement.replace(\"left\", \"right\") as PositionPlacements;\n correctLeft = opts.x.right;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"left-center\": {\n correctLeft = opts.x.left;\n correctTop = opts.y.insideCenter;\n let placement: PositionPlacements = \"left-center\";\n\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.insideTop)) {\n placement = \"left-top\";\n correctTop = opts.y.insideTop;\n } else if (opts.isCompletelyVisibleY(opts.y.insideBottom)) {\n placement = \"left-bottom\";\n correctTop = opts.y.insideBottom;\n }\n }\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.right)) {\n placement = placement.replace(\"left\", \"right\") as PositionPlacements;\n correctLeft = opts.x.right;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"left-top\": {\n correctLeft = opts.x.left;\n correctTop = opts.y.insideTop;\n let placement: PositionPlacements = \"left-top\";\n\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.insideCenter)) {\n placement = \"left-center\";\n correctTop = opts.y.insideCenter;\n } else if (opts.isCompletelyVisibleY(opts.y.insideBottom)) {\n placement = \"left-bottom\";\n correctTop = opts.y.insideBottom;\n }\n }\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.right)) {\n placement = placement.replace(\"left\", \"right\") as PositionPlacements;\n\n correctLeft = opts.x.right;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n default: {\n return {\n top: correctTop,\n left: correctLeft,\n placement: opts.placement,\n };\n }\n }\n}\n\ntype GetFlexVisiblePosition = {\n isCompletelyVisibleY: (top: number) => boolean;\n isCompletelyVisibleX: (left: number) => boolean;\n initialLeft: number;\n initialTop: number;\n xEnd: number;\n yEnd: number;\n nodeWidth: number;\n nodeHeight: number;\n};\n\nfunction getFlexVisiblePosition({\n initialLeft,\n initialTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n}: GetFlexVisiblePosition): InitialVisiblePosition {\n if (!isCompletelyVisibleY(initialTop)) {\n initialTop = yEnd - nodeHeight;\n }\n if (!isCompletelyVisibleX(initialLeft)) {\n initialLeft = xEnd - nodeWidth;\n }\n\n return {\n top: initialTop,\n left: initialLeft,\n placement: \"flex\",\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ function limitStreamOfRequests({ countRequests, maxCountInParallel, promiseGette
|
|
|
8
8
|
cancel: () => {
|
|
9
9
|
isStopped = true;
|
|
10
10
|
},
|
|
11
|
-
promise: new Promise((resolve) => {
|
|
11
|
+
promise: new Promise((resolve, reject) => {
|
|
12
12
|
let currentRequests = 0;
|
|
13
13
|
let currentResponses = 0;
|
|
14
14
|
const results = [];
|
|
@@ -20,9 +20,9 @@ function limitStreamOfRequests({ countRequests, maxCountInParallel, promiseGette
|
|
|
20
20
|
return void resolve(results);
|
|
21
21
|
if (currentResponses === countRequests)
|
|
22
22
|
return void resolve(results);
|
|
23
|
-
if (position > countRequests
|
|
24
|
-
|
|
25
|
-
promise
|
|
23
|
+
if (position > countRequests)
|
|
24
|
+
resolve(results);
|
|
25
|
+
Promise.resolve(promise)
|
|
26
26
|
.then((result) => {
|
|
27
27
|
if (isStopped)
|
|
28
28
|
return void resolve(results);
|
|
@@ -44,7 +44,7 @@ function limitStreamOfRequests({ countRequests, maxCountInParallel, promiseGette
|
|
|
44
44
|
return void wait(1000).then(() => request(promiseGetter(position), position, tryCount + 1));
|
|
45
45
|
}
|
|
46
46
|
if (throwError) {
|
|
47
|
-
|
|
47
|
+
reject(error);
|
|
48
48
|
}
|
|
49
49
|
currentResponses++;
|
|
50
50
|
request(promiseGetter(++currentRequests), currentRequests);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limit-stream-of-requests.js","sources":["../../../../src/lib/utils/limit-stream-of-requests.ts"],"sourcesContent":["import { wait } from \"./wait\";\n\ntype LimitStreamOfRequestsOptions<T> = {\n countRequests: number;\n maxCountInParallel: number;\n promiseGetter: (count: number) => Promise<T>;\n refetchAfterError?: boolean;\n maxTryCount?: number;\n collectResult?: boolean;\n resultCb?: (result: T) => void;\n throwError?: boolean;\n errorCb?: (error: unknown, position: number, tryCount: number) => void;\n};\n\nexport function limitStreamOfRequests<T>({\n countRequests,\n maxCountInParallel,\n promiseGetter,\n refetchAfterError,\n resultCb,\n collectResult,\n maxTryCount = 3,\n throwError,\n errorCb,\n}: LimitStreamOfRequestsOptions<T>): { promise: Promise<T[]>; cancel: () => void } {\n let isStopped = false;\n\n if (maxCountInParallel > countRequests) maxCountInParallel = countRequests;\n\n return {\n cancel: () => {\n isStopped = true;\n },\n promise: new Promise((resolve) => {\n let currentRequests = 0;\n let currentResponses = 0;\n const results: T[] = [];\n\n for (let i = 0; i < maxCountInParallel; i++) {\n request(promiseGetter(++currentRequests), currentRequests);\n }\n\n function request(promise: Promise<T
|
|
1
|
+
{"version":3,"file":"limit-stream-of-requests.js","sources":["../../../../src/lib/utils/limit-stream-of-requests.ts"],"sourcesContent":["import { wait } from \"./wait\";\n\ntype LimitStreamOfRequestsOptions<T> = {\n countRequests: number;\n maxCountInParallel: number;\n promiseGetter: (count: number) => Promise<T>;\n refetchAfterError?: boolean;\n maxTryCount?: number;\n collectResult?: boolean;\n resultCb?: (result: T) => void;\n throwError?: boolean;\n errorCb?: (error: unknown, position: number, tryCount: number) => void;\n};\n\nexport function limitStreamOfRequests<T>({\n countRequests,\n maxCountInParallel,\n promiseGetter,\n refetchAfterError,\n resultCb,\n collectResult,\n maxTryCount = 3,\n throwError,\n errorCb,\n}: LimitStreamOfRequestsOptions<T>): { promise: Promise<T[]>; cancel: () => void } {\n let isStopped = false;\n\n if (maxCountInParallel > countRequests) maxCountInParallel = countRequests;\n\n return {\n cancel: () => {\n isStopped = true;\n },\n promise: new Promise((resolve, reject) => {\n let currentRequests = 0;\n let currentResponses = 0;\n const results: T[] = [];\n\n for (let i = 0; i < maxCountInParallel; i++) {\n request(promiseGetter(++currentRequests), currentRequests);\n }\n\n function request(promise: Promise<T> | T, position: number, tryCount: number = 1) {\n if (isStopped) return void resolve(results);\n if (currentResponses === countRequests) return void resolve(results);\n if (position > countRequests) resolve(results);\n\n Promise.resolve(promise)\n .then((result) => {\n if (isStopped) return void resolve(results);\n\n if (collectResult) results.push(result);\n if (resultCb) resultCb(result);\n currentResponses++;\n if (currentResponses === countRequests) return void resolve(results);\n\n request(promiseGetter(++currentRequests), currentRequests);\n })\n .catch((error: unknown) => {\n if (errorCb) errorCb(error, position, tryCount);\n\n if (isStopped) return void resolve(results);\n\n if (refetchAfterError && maxTryCount > tryCount) {\n return void wait(1000).then(() =>\n request(promiseGetter(position), position, tryCount + 1),\n );\n }\n\n if (throwError) {\n reject(error);\n }\n\n currentResponses++;\n request(promiseGetter(++currentRequests), currentRequests);\n });\n }\n }),\n };\n}\n"],"names":[],"mappings":";;AAcM,SAAU,qBAAqB,CAAI,EACvC,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,QAAQ,EACR,aAAa,EACb,WAAW,GAAG,CAAC,EACf,UAAU,EACV,OAAO,GACyB,EAAA;IAChC,IAAI,SAAS,GAAG,KAAK;IAErB,IAAI,kBAAkB,GAAG,aAAa;QAAE,kBAAkB,GAAG,aAAa;IAE1E,OAAO;QACL,MAAM,EAAE,MAAK;YACX,SAAS,GAAG,IAAI;SACjB;QACD,OAAO,EAAE,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;YACvC,IAAI,eAAe,GAAG,CAAC;YACvB,IAAI,gBAAgB,GAAG,CAAC;YACxB,MAAM,OAAO,GAAQ,EAAE;AAEvB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,EAAE,CAAC,EAAE,EAAE;gBAC3C,OAAO,CAAC,aAAa,CAAC,EAAE,eAAe,CAAC,EAAE,eAAe,CAAC;;AAG5D,YAAA,SAAS,OAAO,CAAC,OAAuB,EAAE,QAAgB,EAAE,WAAmB,CAAC,EAAA;AAC9E,gBAAA,IAAI,SAAS;AAAE,oBAAA,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;gBAC3C,IAAI,gBAAgB,KAAK,aAAa;AAAE,oBAAA,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;gBACpE,IAAI,QAAQ,GAAG,aAAa;oBAAE,OAAO,CAAC,OAAO,CAAC;AAE9C,gBAAA,OAAO,CAAC,OAAO,CAAC,OAAO;AACpB,qBAAA,IAAI,CAAC,CAAC,MAAM,KAAI;AACf,oBAAA,IAAI,SAAS;AAAE,wBAAA,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;AAE3C,oBAAA,IAAI,aAAa;AAAE,wBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AACvC,oBAAA,IAAI,QAAQ;wBAAE,QAAQ,CAAC,MAAM,CAAC;AAC9B,oBAAA,gBAAgB,EAAE;oBAClB,IAAI,gBAAgB,KAAK,aAAa;AAAE,wBAAA,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;oBAEpE,OAAO,CAAC,aAAa,CAAC,EAAE,eAAe,CAAC,EAAE,eAAe,CAAC;AAC5D,iBAAC;AACA,qBAAA,KAAK,CAAC,CAAC,KAAc,KAAI;AACxB,oBAAA,IAAI,OAAO;AAAE,wBAAA,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAE/C,oBAAA,IAAI,SAAS;AAAE,wBAAA,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;AAE3C,oBAAA,IAAI,iBAAiB,IAAI,WAAW,GAAG,QAAQ,EAAE;wBAC/C,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAC1B,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,CAAC,CAAC,CACzD;;oBAGH,IAAI,UAAU,EAAE;wBACd,MAAM,CAAC,KAAK,CAAC;;AAGf,oBAAA,gBAAgB,EAAE;oBAClB,OAAO,CAAC,aAAa,CAAC,EAAE,eAAe,CAAC,EAAE,eAAe,CAAC;AAC5D,iBAAC,CAAC;;AAER,SAAC,CAAC;KACH;AACH;;;;"}
|
package/lib/index.d.ts
CHANGED
|
@@ -58,9 +58,9 @@ type RequestInterface<T, Incoming, Body, Outcoming> = {
|
|
|
58
58
|
transformOutcomingData?: (data: Body) => Outcoming;
|
|
59
59
|
transformIncomingData?: (data: Incoming) => T;
|
|
60
60
|
mock?: (() => Incoming) | Incoming;
|
|
61
|
+
defaultResponse?: (() => Incoming) | Incoming;
|
|
61
62
|
downloadFile?: boolean;
|
|
62
63
|
token?: string;
|
|
63
|
-
withoutResponse?: boolean;
|
|
64
64
|
signal?: AbortSignal;
|
|
65
65
|
};
|
|
66
66
|
type Middleware = <T, Incoming, Body, Outcoming>(request: RequestInterface<T, Incoming, Body, Outcoming>) => Promise<unknown>;
|
|
@@ -217,8 +217,8 @@ type InitialPosition = {
|
|
|
217
217
|
};
|
|
218
218
|
type GetVisiblePositionOptions = {
|
|
219
219
|
node: HTMLElement;
|
|
220
|
-
visibleArea?: HTMLElement;
|
|
221
220
|
initialPosition?: InitialPosition;
|
|
221
|
+
visibleArea?: HTMLElement;
|
|
222
222
|
placement?: Exclude<PositionPlacements, "flex">;
|
|
223
223
|
stepX?: number;
|
|
224
224
|
stepY?: number;
|