yuyeon 0.3.4-beta.19 → 0.3.4-beta.21

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.
@@ -1 +1 @@
1
- {"version":3,"file":"levitation.js","names":["computed","nextTick","onScopeDispose","ref","watch","flipAlign","flipCorner","flipSide","getAxis","parseAnchor","clamp","$computed","getOverflow","MutableRect","getScrollParents","getBoundingPureRect","pixelCeil","pixelRound","toStyleSizeValue","anchorToPoint","getOffset","applyLevitation","props","state","coordination","coordinateStyles","contentEl","base","active","isRtl","isFlipped","minWidth","minHeight","maxWidth","maxHeight","map","key","val","parseFloat","isNaN","Infinity","preferredAnchor","preferredOrigin","location","position","align","parsedAnchor","parsedOrigin","origin","side","offset","Array","isArray","split","length","push","viewportMargin","observe","resizeObserver","ResizeObserver","updateCoordinate","_ref","_ref2","neoBaseEl","neoContentEl","oldBaseEl","oldContentEl","nodeType","unobserve","immediate","disconnect","getIgnoreInsetRect","el","rect","x","style","left","y","top","$base","value","$content","requestAnimationFrame","baseRect","width","height","getBoundingClientRect","contentRect","scrollParents","document","documentElement","viewport","reduce","box","scrollBox","clientWidth","clientHeight","Math","max","min","right","bottom","undefined","placement","anchor","checkOverflow","_placement","targetPoint","contentPoint","overflows","available","flipped","resets","_x","_y","axis","hasOverflowX","before","after","hasOverflowY","reset","forEach","newPlacement","flip","newOverflows","Object","assign","transformOrigin","result"],"sources":["../../../src/composables/coordinate/levitation.ts"],"sourcesContent":["import type { CSSProperties, Ref } from \"vue\";\nimport { computed, nextTick, onScopeDispose, ref, watch } from \"vue\";\n\nimport {\n type Anchor,\n flipAlign,\n flipCorner,\n flipSide,\n getAxis,\n parseAnchor,\n} from \"@/util/anchor\";\nimport { clamp } from \"@/util/common\";\nimport { $computed } from \"@/util/reactivity\";\nimport { getOverflow, MutableRect, type Rect } from \"@/util/rect\";\nimport { getScrollParents } from \"@/util/scroll\";\nimport {\n getBoundingPureRect,\n pixelCeil,\n pixelRound,\n toStyleSizeValue,\n} from \"@/util/ui\";\n\nimport type { CoordinateState } from \"./types\";\nimport { anchorToPoint, getOffset } from \"./utils/point\";\nimport { posix } from \"path/win32\";\n\nexport function applyLevitation(\n props: any,\n state: CoordinateState,\n coordination: Ref<any>,\n coordinateStyles: Ref<CSSProperties>,\n) {\n const { contentEl, base, active } = state;\n\n const isRtl = ref(false);\n const isFlipped = ref([false, false]);\n\n /* Content Limitations */\n const [minWidth, minHeight, maxWidth, maxHeight] = (\n [\"minWidth\", \"minHeight\", \"maxWidth\", \"maxHeight\"] as const\n ).map((key) => {\n return computed(() => {\n const val = parseFloat(props[key]!);\n return isNaN(val) ? Infinity : val;\n });\n });\n\n const { preferredAnchor, preferredOrigin } = $computed(() => {\n const location = `${props.position} ${props.align}` as Anchor;\n const parsedAnchor = parseAnchor(location, false);\n const parsedOrigin =\n props.origin === \"overlap\"\n ? parsedAnchor\n : props.origin === \"auto\"\n ? flipSide(parsedAnchor)\n : parseAnchor(props.origin, false);\n\n // Some combinations of props may produce an invalid origin\n if (\n parsedAnchor.side === parsedOrigin.side &&\n parsedAnchor.align === flipAlign(parsedOrigin).align\n ) {\n return {\n preferredAnchor: flipCorner(parsedAnchor),\n preferredOrigin: flipCorner(parsedOrigin),\n };\n } else {\n return {\n preferredAnchor: parsedAnchor,\n preferredOrigin: parsedOrigin,\n };\n }\n });\n\n /* Offset */\n const offset = computed(() => {\n if (Array.isArray(props.offset)) {\n return props.offset;\n }\n if (typeof props.offset === \"string\") {\n const offset = props.offset.split(\" \").map(parseFloat);\n if (offset.length < 2) offset.push(0);\n return offset;\n }\n return typeof props.offset === \"number\" ? [props.offset, 0] : [0, 0];\n });\n\n /* Viewport Margin */\n const viewportMargin = computed(() => {\n if (Array.isArray(props.viewportMargin)) {\n return props.viewportMargin;\n }\n if (typeof props.viewportMargin === \"string\") {\n const offset = props.viewportMargin.split(\" \").map(parseFloat);\n if (offset.length < 2) offset.push(0);\n return offset;\n }\n return typeof props.viewportMargin === \"number\"\n ? [props.viewportMargin, 0]\n : [0, 0];\n });\n\n /* Observing Update */\n let observe = false;\n const resizeObserver = new ResizeObserver(() => {\n if (observe) updateCoordinate();\n });\n\n watch(\n [state.base, state.contentEl],\n ([neoBaseEl, neoContentEl], [oldBaseEl, oldContentEl]) => {\n if (oldBaseEl && !Array.isArray(oldBaseEl) && oldBaseEl.nodeType === 1)\n resizeObserver.unobserve(oldBaseEl);\n if (neoBaseEl && !Array.isArray(neoBaseEl) && neoBaseEl.nodeType === 1)\n resizeObserver.observe(neoBaseEl);\n\n if (oldContentEl) resizeObserver.unobserve(oldContentEl);\n if (neoContentEl) resizeObserver.observe(neoContentEl);\n },\n { immediate: true },\n );\n\n onScopeDispose(() => {\n resizeObserver.disconnect();\n });\n\n function getIgnoreInsetRect(el: HTMLElement) {\n const rect = getBoundingPureRect(el);\n rect.x -= parseFloat(el.style.left || \"0\");\n rect.y -= parseFloat(el.style.top || \"0\");\n return rect;\n }\n\n function updateCoordinate(): any {\n observe = false;\n const $base = base.value;\n const $content = contentEl.value;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n observe = true\n });\n });\n\n if (!$base || !$content) return;\n\n const baseRect = Array.isArray($base)\n ? new MutableRect({\n x: $base?.[0] ?? 0,\n y: $base?.[1] ?? 0,\n width: 0,\n height: 0,\n })\n : $base.getBoundingClientRect();\n const contentRect = getIgnoreInsetRect($content);\n const scrollParents = getScrollParents($content);\n\n if (scrollParents.length < 1) {\n scrollParents.push(document.documentElement);\n }\n\n /**\n * Viewport area\n */\n const viewport = scrollParents.reduce<MutableRect>(\n (box: MutableRect | undefined, el) => {\n const rect = el.getBoundingClientRect();\n const scrollBox = new MutableRect({\n x: el === document.documentElement ? 0 : rect.x,\n y: el === document.documentElement ? 0 : rect.y,\n width: el.clientWidth,\n height: el.clientHeight,\n });\n\n if (box) {\n return new MutableRect({\n x: Math.max(box.left, scrollBox.left),\n y: Math.max(box.top, scrollBox.top),\n width:\n Math.min(box.right, scrollBox.right) -\n Math.max(box.left, scrollBox.left),\n height:\n Math.min(box.bottom, scrollBox.bottom) -\n Math.max(box.top, scrollBox.top),\n });\n }\n return scrollBox;\n },\n undefined!,\n );\n viewport.x += viewportMargin.value[0];\n viewport.y += viewportMargin.value[1];\n viewport.width -= viewportMargin.value[0] * 2;\n viewport.height -= viewportMargin.value[1] * 2;\n\n let placement = {\n anchor: preferredAnchor.value,\n origin: preferredOrigin.value,\n };\n\n function checkOverflow(_placement: typeof placement) {\n const box = new MutableRect(contentRect);\n const targetPoint = anchorToPoint(_placement.anchor, baseRect);\n const contentPoint = anchorToPoint(_placement.origin, box);\n\n let { x, y } = getOffset(targetPoint, contentPoint);\n\n switch (_placement.anchor.side) {\n case \"top\":\n y -= offset.value[0];\n break;\n case \"bottom\":\n y += offset.value[0];\n break;\n case \"left\":\n x -= offset.value[0];\n break;\n case \"right\":\n x += offset.value[0];\n break;\n }\n\n switch (_placement.anchor.align) {\n case \"top\":\n y -= offset.value[1];\n break;\n case \"bottom\":\n y += offset.value[1];\n break;\n case \"left\":\n x -= offset.value[1];\n break;\n case \"right\":\n x += offset.value[1];\n break;\n case \"center\": {\n if (_placement.anchor.side === \"top\" || _placement.anchor.side === \"bottom\") {\n x += offset.value[1];\n } else {\n y += offset.value[1];\n }\n break;\n }\n }\n\n box.x += x;\n box.y += y;\n\n box.width = Math.min(box.width, maxWidth.value);\n box.height = Math.min(box.height, maxHeight.value);\n\n const overflows = getOverflow(box, viewport);\n\n return { overflows, x, y };\n }\n\n let x = 0;\n let y = 0;\n const available = { x: 0, y: 0 };\n const flipped = { x: false, y: false };\n let resets = -1;\n while (true) {\n if (resets++ > 10) {\n break;\n }\n\n const { x: _x, y: _y, overflows } = checkOverflow(placement);\n\n x += _x;\n y += _y;\n\n contentRect.x += _x;\n contentRect.y += _y;\n\n // flip\n {\n const axis = getAxis(placement.anchor);\n const hasOverflowX = overflows.x.before || overflows.x.after;\n const hasOverflowY = overflows.y.before || overflows.y.after;\n\n let reset = false;\n [\"x\", \"y\"].forEach((key) => {\n if (\n (key === \"x\" && hasOverflowX && !flipped.x) ||\n (key === \"y\" && hasOverflowY && !flipped.y)\n ) {\n const newPlacement = {\n anchor: { ...placement.anchor },\n origin: { ...placement.origin },\n };\n const flip =\n key === \"x\"\n ? axis === \"y\"\n ? flipAlign\n : flipSide\n : axis === \"y\"\n ? flipSide\n : flipAlign;\n newPlacement.anchor = flip(newPlacement.anchor);\n newPlacement.origin = flip(newPlacement.origin);\n const { overflows: newOverflows } = checkOverflow(newPlacement);\n if (\n (newOverflows[key].before <= overflows[key].before &&\n newOverflows[key].after <= overflows[key].after) ||\n newOverflows[key].before + newOverflows[key].after <\n (overflows[key].before + overflows[key].after) / 2\n ) {\n placement = newPlacement;\n reset = flipped[key] = true;\n }\n }\n });\n if (reset) continue;\n }\n\n // shift\n if (overflows.x.before) {\n x += overflows.x.before;\n contentRect.x += overflows.x.before;\n }\n if (overflows.x.after) {\n x -= overflows.x.after;\n contentRect.x -= overflows.x.after;\n }\n if (overflows.y.before) {\n y += overflows.y.before;\n contentRect.y += overflows.y.before;\n }\n if (overflows.y.after) {\n y -= overflows.y.after;\n contentRect.y -= overflows.y.after;\n }\n\n // size\n {\n const overflows = getOverflow(contentRect, viewport);\n available.x = viewport.width - overflows.x.before - overflows.x.after;\n available.y = viewport.height - overflows.y.before - overflows.y.after;\n\n x += overflows.x.before;\n contentRect.x += overflows.x.before;\n y += overflows.y.before;\n contentRect.y += overflows.y.before;\n }\n\n break;\n }\n\n const axis = getAxis(placement.anchor);\n\n coordination.value = {\n side: placement.anchor.side,\n align: placement.anchor.align,\n rect: new MutableRect({x, y, width: contentRect.width, height: contentRect.height}),\n offset: [0, 0],\n }\n\n Object.assign(coordinateStyles.value, {\n \"--y-levitation-anchor-origin\": `${placement.anchor.side} ${placement.anchor.align}`,\n transformOrigin: `${placement.origin.side} ${placement.origin.align}`,\n top: toStyleSizeValue(pixelRound(y)),\n left: isRtl.value ? undefined : toStyleSizeValue(pixelRound(x)),\n right: isRtl.value ? toStyleSizeValue(pixelRound(-x)) : undefined,\n minWidth: toStyleSizeValue(\n axis === \"y\"\n ? Math.min(minWidth.value, baseRect.width)\n : minWidth.value,\n ),\n maxWidth: toStyleSizeValue(\n pixelCeil(\n clamp(\n available.x,\n minWidth.value === Infinity ? 0 : minWidth.value,\n maxWidth.value,\n ),\n ),\n ),\n maxHeight: toStyleSizeValue(\n pixelCeil(\n clamp(\n available.y,\n minHeight.value === Infinity ? 0 : minHeight.value,\n maxHeight.value,\n ),\n ),\n ),\n });\n\n isFlipped.value = [flipped.x, flipped.y];\n\n return {\n available,\n contentRect,\n flipped,\n placement,\n };\n }\n\n watch(\n () => [\n props.offset,\n props.minWidth,\n props.minHeight,\n props.maxWidth,\n props.maxHeight,\n preferredAnchor.value,\n preferredOrigin.value,\n ],\n () => updateCoordinate(),\n );\n\n nextTick(() => {\n const result = updateCoordinate();\n if (!result) return;\n const { available, contentRect } = result;\n if (contentRect.height > available.y) {\n requestAnimationFrame(() => {\n updateCoordinate();\n requestAnimationFrame(() => {\n updateCoordinate();\n });\n });\n }\n });\n\n return {\n updateCoordinate,\n isFlipped,\n preferredAnchor,\n preferredOrigin,\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"levitation.js","names":["computed","nextTick","onScopeDispose","ref","watch","flipAlign","flipCorner","flipSide","getAxis","parseAnchor","clamp","$computed","getOverflow","MutableRect","getScrollParents","getBoundingPureRect","pixelCeil","pixelRound","toStyleSizeValue","anchorToPoint","getOffset","applyLevitation","props","state","coordination","coordinateStyles","contentEl","base","active","isRtl","isFlipped","minWidth","minHeight","maxWidth","maxHeight","map","key","val","parseFloat","isNaN","Infinity","preferredAnchor","preferredOrigin","location","position","align","parsedAnchor","parsedOrigin","origin","side","offset","Array","isArray","split","length","push","viewportMargin","observe","resizeObserver","ResizeObserver","updateCoordinate","_ref","_ref2","neoBaseEl","neoContentEl","oldBaseEl","oldContentEl","nodeType","unobserve","immediate","disconnect","getIgnoreInsetRect","el","rect","x","style","left","y","top","$base","value","$content","requestAnimationFrame","baseRect","width","height","getBoundingClientRect","contentRect","scrollParents","document","documentElement","viewport","reduce","box","scrollBox","clientWidth","clientHeight","Math","max","min","right","bottom","undefined","placement","anchor","checkOverflow","_placement","targetPoint","contentPoint","overflows","available","flipped","resets","_x","_y","axis","hasOverflowX","before","after","hasOverflowY","reset","forEach","newPlacement","flip","newOverflows","Object","assign","transformOrigin","result"],"sources":["../../../src/composables/coordinate/levitation.ts"],"sourcesContent":["import type { CSSProperties, Ref } from \"vue\";\nimport { computed, nextTick, onScopeDispose, ref, watch } from \"vue\";\n\nimport {\n\ttype Anchor,\n\tflipAlign,\n\tflipCorner,\n\tflipSide,\n\tgetAxis,\n\tparseAnchor,\n} from \"@/util/anchor\";\nimport { clamp } from \"@/util/common\";\nimport { $computed } from \"@/util/reactivity\";\nimport { getOverflow, MutableRect } from \"@/util/rect\";\nimport { getScrollParents } from \"@/util/scroll\";\nimport {\n\tgetBoundingPureRect,\n\tpixelCeil,\n\tpixelRound,\n\ttoStyleSizeValue,\n} from \"@/util/ui\";\n\nimport type { CoordinateState } from \"./types\";\nimport { anchorToPoint, getOffset } from \"./utils/point\";\n\nexport function applyLevitation(\n\tprops: any,\n\tstate: CoordinateState,\n\tcoordination: Ref<any>,\n\tcoordinateStyles: Ref<CSSProperties>,\n) {\n\tconst { contentEl, base, active } = state;\n\n\tconst isRtl = ref(false);\n\tconst isFlipped = ref([false, false]);\n\n\t/* Content Limitations */\n\tconst [minWidth, minHeight, maxWidth, maxHeight] = (\n\t\t[\"minWidth\", \"minHeight\", \"maxWidth\", \"maxHeight\"] as const\n\t).map((key) => {\n\t\treturn computed(() => {\n\t\t\tconst val = parseFloat(props[key]!);\n\t\t\treturn isNaN(val) ? Infinity : val;\n\t\t});\n\t});\n\n\tconst { preferredAnchor, preferredOrigin } = $computed(() => {\n\t\tconst location = `${props.position} ${props.align}` as Anchor;\n\t\tconst parsedAnchor = parseAnchor(location, false);\n\t\tconst parsedOrigin =\n\t\t\tprops.origin === \"overlap\"\n\t\t\t\t? parsedAnchor\n\t\t\t\t: props.origin === \"auto\"\n\t\t\t\t\t? flipSide(parsedAnchor)\n\t\t\t\t\t: parseAnchor(props.origin, false);\n\n\t\t// Some combinations of props may produce an invalid origin\n\t\tif (\n\t\t\tparsedAnchor.side === parsedOrigin.side &&\n\t\t\tparsedAnchor.align === flipAlign(parsedOrigin).align\n\t\t) {\n\t\t\treturn {\n\t\t\t\tpreferredAnchor: flipCorner(parsedAnchor),\n\t\t\t\tpreferredOrigin: flipCorner(parsedOrigin),\n\t\t\t};\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tpreferredAnchor: parsedAnchor,\n\t\t\t\tpreferredOrigin: parsedOrigin,\n\t\t\t};\n\t\t}\n\t});\n\n\t/* Offset */\n\tconst offset = computed(() => {\n\t\tif (Array.isArray(props.offset)) {\n\t\t\treturn props.offset;\n\t\t}\n\t\tif (typeof props.offset === \"string\") {\n\t\t\tconst offset = props.offset.split(\" \").map(parseFloat);\n\t\t\tif (offset.length < 2) offset.push(0);\n\t\t\treturn offset;\n\t\t}\n\t\treturn typeof props.offset === \"number\" ? [props.offset, 0] : [0, 0];\n\t});\n\n\t/* Viewport Margin */\n\tconst viewportMargin = computed(() => {\n\t\tif (Array.isArray(props.viewportMargin)) {\n\t\t\treturn props.viewportMargin;\n\t\t}\n\t\tif (typeof props.viewportMargin === \"string\") {\n\t\t\tconst offset = props.viewportMargin.split(\" \").map(parseFloat);\n\t\t\tif (offset.length < 2) offset.push(0);\n\t\t\treturn offset;\n\t\t}\n\t\treturn typeof props.viewportMargin === \"number\"\n\t\t\t? [props.viewportMargin, 0]\n\t\t\t: [0, 0];\n\t});\n\n\t/* Observing Update */\n\tlet observe = false;\n\tconst resizeObserver = new ResizeObserver(() => {\n\t\tif (observe) updateCoordinate();\n\t});\n\n\twatch(\n\t\t[state.base, state.contentEl],\n\t\t([neoBaseEl, neoContentEl], [oldBaseEl, oldContentEl]) => {\n\t\t\tif (oldBaseEl && !Array.isArray(oldBaseEl) && oldBaseEl.nodeType === 1)\n\t\t\t\tresizeObserver.unobserve(oldBaseEl);\n\t\t\tif (neoBaseEl && !Array.isArray(neoBaseEl) && neoBaseEl.nodeType === 1)\n\t\t\t\tresizeObserver.observe(neoBaseEl);\n\n\t\t\tif (oldContentEl) resizeObserver.unobserve(oldContentEl);\n\t\t\tif (neoContentEl) resizeObserver.observe(neoContentEl);\n\t\t},\n\t\t{ immediate: true },\n\t);\n\n\tonScopeDispose(() => {\n\t\tresizeObserver.disconnect();\n\t});\n\n\tfunction getIgnoreInsetRect(el: HTMLElement) {\n\t\tconst rect = getBoundingPureRect(el);\n\t\trect.x -= parseFloat(el.style.left || \"0\");\n\t\trect.y -= parseFloat(el.style.top || \"0\");\n\t\treturn rect;\n\t}\n\n\tfunction updateCoordinate(): any {\n\t\tobserve = false;\n\t\tconst $base = base.value;\n\t\tconst $content = contentEl.value;\n\t\trequestAnimationFrame(() => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tobserve = true;\n\t\t\t});\n\t\t});\n\n\t\tif (!$base || !$content) return;\n\n\t\tconst baseRect = Array.isArray($base)\n\t\t\t? new MutableRect({\n\t\t\t\t\tx: $base?.[0] ?? 0,\n\t\t\t\t\ty: $base?.[1] ?? 0,\n\t\t\t\t\twidth: 0,\n\t\t\t\t\theight: 0,\n\t\t\t\t})\n\t\t\t: $base.getBoundingClientRect();\n\t\tconst contentRect = getIgnoreInsetRect($content);\n\t\tconst scrollParents = getScrollParents($content);\n\n\t\tif (scrollParents.length < 1) {\n\t\t\tscrollParents.push(document.documentElement);\n\t\t}\n\n\t\t/**\n\t\t * Viewport area\n\t\t */\n\t\tconst viewport = scrollParents.reduce<MutableRect>(\n\t\t\t(box: MutableRect | undefined, el) => {\n\t\t\t\tconst rect = el.getBoundingClientRect();\n\t\t\t\tconst scrollBox = new MutableRect({\n\t\t\t\t\tx: el === document.documentElement ? 0 : rect.x,\n\t\t\t\t\ty: el === document.documentElement ? 0 : rect.y,\n\t\t\t\t\twidth: el.clientWidth,\n\t\t\t\t\theight: el.clientHeight,\n\t\t\t\t});\n\n\t\t\t\tif (box) {\n\t\t\t\t\treturn new MutableRect({\n\t\t\t\t\t\tx: Math.max(box.left, scrollBox.left),\n\t\t\t\t\t\ty: Math.max(box.top, scrollBox.top),\n\t\t\t\t\t\twidth:\n\t\t\t\t\t\t\tMath.min(box.right, scrollBox.right) -\n\t\t\t\t\t\t\tMath.max(box.left, scrollBox.left),\n\t\t\t\t\t\theight:\n\t\t\t\t\t\t\tMath.min(box.bottom, scrollBox.bottom) -\n\t\t\t\t\t\t\tMath.max(box.top, scrollBox.top),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn scrollBox;\n\t\t\t},\n\t\t\tundefined!,\n\t\t);\n\t\tviewport.x += viewportMargin.value[0];\n\t\tviewport.y += viewportMargin.value[1];\n\t\tviewport.width -= viewportMargin.value[0] * 2;\n\t\tviewport.height -= viewportMargin.value[1] * 2;\n\n\t\tlet placement = {\n\t\t\tanchor: preferredAnchor.value,\n\t\t\torigin: preferredOrigin.value,\n\t\t};\n\n\t\tfunction checkOverflow(_placement: typeof placement) {\n\t\t\tconst box = new MutableRect(contentRect);\n\t\t\tconst targetPoint = anchorToPoint(_placement.anchor, baseRect);\n\t\t\tconst contentPoint = anchorToPoint(_placement.origin, box);\n\n\t\t\tlet { x, y } = getOffset(targetPoint, contentPoint);\n\n\t\t\tswitch (_placement.anchor.side) {\n\t\t\t\tcase \"top\":\n\t\t\t\t\ty -= offset.value[0];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"bottom\":\n\t\t\t\t\ty += offset.value[0];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"left\":\n\t\t\t\t\tx -= offset.value[0];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"right\":\n\t\t\t\t\tx += offset.value[0];\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tswitch (_placement.anchor.align) {\n\t\t\t\tcase \"top\":\n\t\t\t\t\ty -= offset.value[1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"bottom\":\n\t\t\t\t\ty += offset.value[1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"left\":\n\t\t\t\t\tx -= offset.value[1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"right\":\n\t\t\t\t\tx += offset.value[1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"center\": {\n\t\t\t\t\tif (\n\t\t\t\t\t\t_placement.anchor.side === \"top\" ||\n\t\t\t\t\t\t_placement.anchor.side === \"bottom\"\n\t\t\t\t\t) {\n\t\t\t\t\t\tx += offset.value[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\ty += offset.value[1];\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbox.x += x;\n\t\t\tbox.y += y;\n\n\t\t\tbox.width = Math.min(box.width, maxWidth.value);\n\t\t\tbox.height = Math.min(box.height, maxHeight.value);\n\n\t\t\tconst overflows = getOverflow(box, viewport);\n\n\t\t\treturn { overflows, x, y };\n\t\t}\n\n\t\tlet x = 0;\n\t\tlet y = 0;\n\t\tconst available = { x: 0, y: 0 };\n\t\tconst flipped = { x: false, y: false };\n\t\tlet resets = -1;\n\t\twhile (true) {\n\t\t\tif (resets++ > 10) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst { x: _x, y: _y, overflows } = checkOverflow(placement);\n\n\t\t\tx += _x;\n\t\t\ty += _y;\n\n\t\t\tcontentRect.x += _x;\n\t\t\tcontentRect.y += _y;\n\n\t\t\t// flip\n\t\t\t{\n\t\t\t\tconst axis = getAxis(placement.anchor);\n\t\t\t\tconst hasOverflowX = overflows.x.before || overflows.x.after;\n\t\t\t\tconst hasOverflowY = overflows.y.before || overflows.y.after;\n\n\t\t\t\tlet reset = false;\n\t\t\t\t[\"x\", \"y\"].forEach((key) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\t(key === \"x\" && hasOverflowX && !flipped.x) ||\n\t\t\t\t\t\t(key === \"y\" && hasOverflowY && !flipped.y)\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst newPlacement = {\n\t\t\t\t\t\t\tanchor: { ...placement.anchor },\n\t\t\t\t\t\t\torigin: { ...placement.origin },\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst flip =\n\t\t\t\t\t\t\tkey === \"x\"\n\t\t\t\t\t\t\t\t? axis === \"y\"\n\t\t\t\t\t\t\t\t\t? flipAlign\n\t\t\t\t\t\t\t\t\t: flipSide\n\t\t\t\t\t\t\t\t: axis === \"y\"\n\t\t\t\t\t\t\t\t\t? flipSide\n\t\t\t\t\t\t\t\t\t: flipAlign;\n\t\t\t\t\t\tnewPlacement.anchor = flip(newPlacement.anchor);\n\t\t\t\t\t\tnewPlacement.origin = flip(newPlacement.origin);\n\t\t\t\t\t\tconst { overflows: newOverflows } = checkOverflow(newPlacement);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t(newOverflows[key].before <= overflows[key].before &&\n\t\t\t\t\t\t\t\tnewOverflows[key].after <= overflows[key].after) ||\n\t\t\t\t\t\t\tnewOverflows[key].before + newOverflows[key].after <\n\t\t\t\t\t\t\t\t(overflows[key].before + overflows[key].after) / 2\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tplacement = newPlacement;\n\t\t\t\t\t\t\treset = flipped[key] = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (reset) continue;\n\t\t\t}\n\n\t\t\t// shift\n\t\t\tif (overflows.x.before) {\n\t\t\t\tx += overflows.x.before;\n\t\t\t\tcontentRect.x += overflows.x.before;\n\t\t\t}\n\t\t\tif (overflows.x.after) {\n\t\t\t\tx -= overflows.x.after;\n\t\t\t\tcontentRect.x -= overflows.x.after;\n\t\t\t}\n\t\t\tif (overflows.y.before) {\n\t\t\t\ty += overflows.y.before;\n\t\t\t\tcontentRect.y += overflows.y.before;\n\t\t\t}\n\t\t\tif (overflows.y.after) {\n\t\t\t\ty -= overflows.y.after;\n\t\t\t\tcontentRect.y -= overflows.y.after;\n\t\t\t}\n\n\t\t\t// size\n\t\t\t{\n\t\t\t\tconst overflows = getOverflow(contentRect, viewport);\n\t\t\t\tavailable.x = viewport.width - overflows.x.before - overflows.x.after;\n\t\t\t\tavailable.y = viewport.height - overflows.y.before - overflows.y.after;\n\n\t\t\t\tx += overflows.x.before;\n\t\t\t\tcontentRect.x += overflows.x.before;\n\t\t\t\ty += overflows.y.before;\n\t\t\t\tcontentRect.y += overflows.y.before;\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tconst axis = getAxis(placement.anchor);\n\n\t\tcoordination.value = {\n\t\t\tside: placement.anchor.side,\n\t\t\talign: placement.anchor.align,\n\t\t\trect: new MutableRect({\n\t\t\t\tx,\n\t\t\t\ty,\n\t\t\t\twidth: contentRect.width,\n\t\t\t\theight: contentRect.height,\n\t\t\t}),\n\t\t\toffset: [0, 0],\n\t\t};\n\n\t\tObject.assign(coordinateStyles.value, {\n\t\t\t\"--y-levitation-anchor-origin\": `${placement.anchor.side} ${placement.anchor.align}`,\n\t\t\ttransformOrigin: `${placement.origin.side} ${placement.origin.align}`,\n\t\t\ttop: toStyleSizeValue(pixelRound(y)),\n\t\t\tleft: isRtl.value ? undefined : toStyleSizeValue(pixelRound(x)),\n\t\t\tright: isRtl.value ? toStyleSizeValue(pixelRound(-x)) : undefined,\n\t\t\tminWidth: toStyleSizeValue(\n\t\t\t\taxis === \"y\"\n\t\t\t\t\t? Math.min(minWidth.value, baseRect.width)\n\t\t\t\t\t: minWidth.value,\n\t\t\t),\n\t\t\tmaxWidth: toStyleSizeValue(\n\t\t\t\tpixelCeil(\n\t\t\t\t\tclamp(\n\t\t\t\t\t\tavailable.x,\n\t\t\t\t\t\tminWidth.value === Infinity ? 0 : minWidth.value,\n\t\t\t\t\t\tmaxWidth.value,\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t),\n\t\t\tmaxHeight: toStyleSizeValue(\n\t\t\t\tpixelCeil(\n\t\t\t\t\tclamp(\n\t\t\t\t\t\tavailable.y,\n\t\t\t\t\t\tminHeight.value === Infinity ? 0 : minHeight.value,\n\t\t\t\t\t\tmaxHeight.value,\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t),\n\t\t});\n\n\t\tisFlipped.value = [flipped.x, flipped.y];\n\n\t\treturn {\n\t\t\tavailable,\n\t\t\tcontentRect,\n\t\t\tflipped,\n\t\t\tplacement,\n\t\t};\n\t}\n\n\twatch(\n\t\t() => [\n\t\t\tprops.offset,\n\t\t\tprops.minWidth,\n\t\t\tprops.minHeight,\n\t\t\tprops.maxWidth,\n\t\t\tprops.maxHeight,\n\t\t\tpreferredAnchor.value,\n\t\t\tpreferredOrigin.value,\n\t\t],\n\t\t() => updateCoordinate(),\n\t);\n\n\tnextTick(() => {\n\t\tconst result = updateCoordinate();\n\t\tif (!result) return;\n\t\tconst { available, contentRect } = result;\n\t\tif (contentRect.height > available.y) {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tupdateCoordinate();\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tupdateCoordinate();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t});\n\n\treturn {\n\t\tupdateCoordinate,\n\t\tisFlipped,\n\t\tpreferredAnchor,\n\t\tpreferredOrigin,\n\t};\n}\n"],"mappings":"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","ignoreList":[]}
@@ -39,12 +39,20 @@ export function useTimer(cb, duration, options) {
39
39
  function tick() {
40
40
  const now = Date.now();
41
41
  const realTick = now - tickStart.value;
42
- drift.value = drift.value - realTick;
43
- if (drift.value < 1) {
42
+ let nextInterval = tickInterval;
43
+ const left = drift.value - realTick;
44
+ drift.value = left;
45
+ if (left < 1) {
44
46
  cb();
45
- } else {
46
- const tickDrift = now - tickStart.value + tickInterval;
47
- const nextInterval = tickDrift >= 1 ? tickDrift : tickInterval;
47
+ return;
48
+ }
49
+ const tickDelta = realTick - tickInterval;
50
+ if (tickDelta > 0) {
51
+ nextInterval -= tickDelta;
52
+ } else if (tickDelta < 0) {
53
+ nextInterval += tickDelta;
54
+ }
55
+ if (left >= 1) {
48
56
  tickStart.value = now;
49
57
  timer = window.setTimeout(tick, nextInterval);
50
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"timing.js","names":["computed","ref","unref","watch","useLazy","eager","updated","tick","tack","value","lazyValue","onAfterUpdate","entered","useTimer","cb","duration","options","tickDuration","tickInterval","timer","tickStart","drift","isWork","now","Date","realTick","tickDrift","nextInterval","window","setTimeout","start","stop","clearTimeout","reset","useDelay","props","callback","state","clearDelay","propKey","setDelay","timeout","resolve","active","generateDelay","delayTime","Promise","delay","parseInt","String","startOpenDelay","startCloseDelay"],"sources":["../../src/composables/timing.ts"],"sourcesContent":["import { type MaybeRef, type Ref, computed, ref, unref, watch } from 'vue';\n\nexport function useLazy(eager: Ref<boolean | undefined>, updated: Ref<any>) {\n const tick = ref(false);\n const tack = ref();\n tack.value = updated.value;\n const lazyValue = computed(() => {\n if (eager.value) return updated.value;\n return tack.value;\n });\n watch(updated, () => {\n if (!tick.value) {\n tack.value = updated.value;\n }\n if (!eager.value) {\n tick.value = true;\n }\n });\n function onAfterUpdate() {\n tack.value = updated.value;\n if (!eager.value) {\n tick.value = false;\n }\n }\n return {\n entered: tick,\n lazyValue,\n onAfterUpdate,\n };\n}\n\nexport function useTimer(\n cb: () => void,\n duration: MaybeRef<number>,\n options?: { tickDuration: number },\n) {\n const { tickDuration } = options ?? {};\n let tickInterval = tickDuration ?? 100;\n let timer = -1;\n\n const tickStart = ref(0);\n const drift = ref(unref(duration));\n const isWork = ref(false);\n\n function tick() {\n const now = Date.now();\n const realTick = now - tickStart.value;\n drift.value = drift.value - realTick;\n if (drift.value < 1) {\n cb();\n } else {\n const tickDrift = now - tickStart.value + tickInterval;\n const nextInterval = tickDrift >= 1 ? tickDrift : tickInterval;\n tickStart.value = now;\n timer = window.setTimeout(tick, nextInterval);\n }\n }\n\n function start() {\n if (isWork.value) return;\n isWork.value = true;\n tickStart.value = Date.now();\n timer = window.setTimeout(tick, tickInterval);\n }\n\n function stop() {\n window.clearTimeout(timer);\n timer = -1;\n isWork.value = false;\n }\n\n function reset() {\n stop();\n drift.value = unref(duration);\n }\n\n return {\n start,\n stop,\n reset,\n drift,\n isWork,\n };\n}\n\ntype DelayType = 'closeDelay' | 'openDelay';\n\nexport function useDelay(props: any, callback?: (active: boolean) => void) {\n const state: Partial<Record<DelayType, number>> = {};\n\n function clearDelay(propKey: DelayType) {\n state[propKey] && window.clearTimeout(state[propKey]);\n delete state[propKey];\n }\n\n function setDelay(propKey: DelayType, timeout: number, resolve: any) {\n state[propKey] = window.setTimeout(() => {\n const active = propKey === 'openDelay';\n callback?.(active);\n resolve(active);\n }, timeout);\n }\n\n const generateDelay = (propKey: DelayType) => () => {\n clearDelay('openDelay');\n clearDelay('closeDelay');\n const delayTime = props[propKey] ?? 0;\n return new Promise<boolean>((resolve) => {\n const delay = parseInt(String(delayTime), 10);\n setDelay(propKey, delay, resolve);\n });\n };\n\n return {\n startOpenDelay: generateDelay('openDelay'),\n startCloseDelay: generateDelay('closeDelay'),\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"timing.js","names":["computed","ref","unref","watch","useLazy","eager","updated","tick","tack","value","lazyValue","onAfterUpdate","entered","useTimer","cb","duration","options","tickDuration","tickInterval","timer","tickStart","drift","isWork","now","Date","realTick","nextInterval","left","tickDelta","window","setTimeout","start","stop","clearTimeout","reset","useDelay","props","callback","state","clearDelay","propKey","setDelay","timeout","resolve","active","generateDelay","delayTime","Promise","delay","parseInt","String","startOpenDelay","startCloseDelay"],"sources":["../../src/composables/timing.ts"],"sourcesContent":["import { type MaybeRef, type Ref, computed, ref, unref, watch } from 'vue';\n\nexport function useLazy(eager: Ref<boolean | undefined>, updated: Ref<any>) {\n const tick = ref(false);\n const tack = ref();\n tack.value = updated.value;\n const lazyValue = computed(() => {\n if (eager.value) return updated.value;\n return tack.value;\n });\n watch(updated, () => {\n if (!tick.value) {\n tack.value = updated.value;\n }\n if (!eager.value) {\n tick.value = true;\n }\n });\n function onAfterUpdate() {\n tack.value = updated.value;\n if (!eager.value) {\n tick.value = false;\n }\n }\n return {\n entered: tick,\n lazyValue,\n onAfterUpdate,\n };\n}\n\nexport function useTimer(\n cb: () => void,\n duration: MaybeRef<number>,\n options?: { tickDuration: number },\n) {\n const { tickDuration } = options ?? {};\n let tickInterval = tickDuration ?? 100;\n let timer = -1;\n\n const tickStart = ref(0);\n const drift = ref(unref(duration));\n const isWork = ref(false);\n\n function tick() {\n const now = Date.now();\n const realTick = now - tickStart.value;\n let nextInterval = tickInterval;\n const left = drift.value - realTick;\n drift.value = left;\n if (left < 1) {\n cb();\n return;\n }\n const tickDelta = realTick - tickInterval;\n if (tickDelta > 0) {\n nextInterval -= tickDelta;\n } else if (tickDelta < 0) {\n nextInterval += tickDelta;\n }\n if (left >= 1) {\n tickStart.value = now;\n timer = window.setTimeout(tick, nextInterval);\n }\n }\n\n function start() {\n if (isWork.value) return;\n isWork.value = true;\n tickStart.value = Date.now();\n timer = window.setTimeout(tick, tickInterval);\n }\n\n function stop() {\n window.clearTimeout(timer);\n timer = -1;\n isWork.value = false;\n }\n\n function reset() {\n stop();\n drift.value = unref(duration);\n }\n\n return {\n start,\n stop,\n reset,\n drift,\n isWork,\n };\n}\n\ntype DelayType = 'closeDelay' | 'openDelay';\n\nexport function useDelay(props: any, callback?: (active: boolean) => void) {\n const state: Partial<Record<DelayType, number>> = {};\n\n function clearDelay(propKey: DelayType) {\n state[propKey] && window.clearTimeout(state[propKey]);\n delete state[propKey];\n }\n\n function setDelay(propKey: DelayType, timeout: number, resolve: any) {\n state[propKey] = window.setTimeout(() => {\n const active = propKey === 'openDelay';\n callback?.(active);\n resolve(active);\n }, timeout);\n }\n\n const generateDelay = (propKey: DelayType) => () => {\n clearDelay('openDelay');\n clearDelay('closeDelay');\n const delayTime = props[propKey] ?? 0;\n return new Promise<boolean>((resolve) => {\n const delay = parseInt(String(delayTime), 10);\n setDelay(propKey, delay, resolve);\n });\n };\n\n return {\n startOpenDelay: generateDelay('openDelay'),\n startCloseDelay: generateDelay('closeDelay'),\n };\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yuyeon",
3
- "version": "0.3.4-beta.19",
3
+ "version": "0.3.4-beta.21",
4
4
  "keywords": [
5
5
  "UI Library",
6
6
  "Vue"
@@ -566,6 +566,7 @@ export declare const YDialog: import('vue').DefineComponent<{
566
566
  onAfterUpdate: () => void;
567
567
  scrim$: import('vue').Ref<HTMLElement | undefined, HTMLElement | undefined>;
568
568
  content$: import('vue').Ref<HTMLElement | undefined, HTMLElement | undefined>;
569
+ base: import('vue').ComputedRef<any>;
569
570
  base$: import('vue').Ref<any, any>;
570
571
  baseEl: import('vue').Ref<HTMLElement | undefined, HTMLElement | undefined>;
571
572
  baseFromSlotEl: import('vue').ComputedRef<any>;
@@ -693,6 +694,7 @@ export declare const YDialog: import('vue').DefineComponent<{
693
694
  onAfterUpdate: () => void;
694
695
  scrim$: import('vue').Ref<HTMLElement | undefined, HTMLElement | undefined>;
695
696
  content$: import('vue').Ref<HTMLElement | undefined, HTMLElement | undefined>;
697
+ base: import('vue').ComputedRef<any>;
696
698
  base$: import('vue').Ref<any, any>;
697
699
  baseEl: import('vue').Ref<HTMLElement | undefined, HTMLElement | undefined>;
698
700
  baseFromSlotEl: import('vue').ComputedRef<any>;
@@ -418,6 +418,7 @@ export declare const YLayer: import('vue').DefineComponent<{
418
418
  onAfterUpdate: () => void;
419
419
  scrim$: import('vue').Ref<HTMLElement | undefined, HTMLElement | undefined>;
420
420
  content$: import('vue').Ref<HTMLElement | undefined, HTMLElement | undefined>;
421
+ base: import('vue').ComputedRef<any>;
421
422
  base$: import('vue').Ref<any, any>;
422
423
  baseEl: import('vue').Ref<HTMLElement | undefined, HTMLElement | undefined>;
423
424
  baseFromSlotEl: import('vue').ComputedRef<any>;
@@ -17,8 +17,12 @@ export declare const pressBasePropsOptions: <Defaults extends {
17
17
  interface BaseProps {
18
18
  base: BaseType;
19
19
  baseProps: Record<string, any> | undefined;
20
+ modelValue?: boolean;
20
21
  }
21
22
  export declare function useBase(props: BaseProps): {
23
+ /**
24
+ * for templateRef from base slot
25
+ */
22
26
  base$: import('vue').Ref<any, any>;
23
27
  baseEl: import('vue').Ref<HTMLElement | undefined, HTMLElement | undefined>;
24
28
  baseSlot: import('vue').Ref<any, any>;
@@ -362,6 +362,7 @@ export declare const YMenu: import('vue').DefineComponent<{
362
362
  onAfterUpdate: () => void;
363
363
  scrim$: import('vue').Ref<HTMLElement | undefined, HTMLElement | undefined>;
364
364
  content$: import('vue').Ref<HTMLElement | undefined, HTMLElement | undefined>;
365
+ base: import('vue').ComputedRef<any>;
365
366
  base$: import('vue').Ref<any, any>;
366
367
  baseEl: import('vue').Ref<HTMLElement | undefined, HTMLElement | undefined>;
367
368
  baseFromSlotEl: import('vue').ComputedRef<any>;
@@ -489,6 +490,7 @@ export declare const YMenu: import('vue').DefineComponent<{
489
490
  onAfterUpdate: () => void;
490
491
  scrim$: import('vue').Ref<HTMLElement | undefined, HTMLElement | undefined>;
491
492
  content$: import('vue').Ref<HTMLElement | undefined, HTMLElement | undefined>;
493
+ base: import('vue').ComputedRef<any>;
492
494
  base$: import('vue').Ref<any, any>;
493
495
  baseEl: import('vue').Ref<HTMLElement | undefined, HTMLElement | undefined>;
494
496
  baseFromSlotEl: import('vue').ComputedRef<any>;
@@ -507,7 +509,7 @@ export declare const YMenu: import('vue').DefineComponent<{
507
509
  }, string> | undefined>;
508
510
  baseEl: import('vue').ComputedRef<any>;
509
511
  classes: import('vue').ComputedRef<{
510
- 'y-menu': boolean;
512
+ "y-menu": boolean;
511
513
  }>;
512
514
  children: import('vue').ShallowRef<any[], any[]>;
513
515
  parent: import('../layer/active-stack').ActiveStackProvide | null;