{"version":3,"names":["dynamic","createEffect","createMemo","omit","onCleanup","untrack","useBaseUiId","composeRefs","userRef","useFocus","useHover","safePolygon","mergeRootProps","resolveClassStyle","useIsoLayoutEffect","CLOSE_DELAY","OPEN_DELAY","usePreviewCardRootContext","PreviewCardTrigger","props","root","delayProp","delay","closeDelayProp","closeDelay","fallbackId","thisTriggerId","id","isActive","activeTriggerId","active","closeDelayRef","current","hoverProps","floatingRootContext","mouseOnly","move","handleClose","open","close","focusProps","referenceProps","interactions","getReferenceProps","state","storeFor","handle","store","registeredId","registeredElement","triggerRef","el","s","context","triggerElements","getById","delete","undefined","add","setTriggerElement","setActiveTriggerId","payload","setPayload","markActive","stateAttrs","data-popup-open","onPointerEnter","onFocus","userClassStyle","userProps","merged","reference","Tag","as"],"sources":["preview-card-trigger.tsx"],"sourcesContent":["import type { JSX, ValidComponent } from \"@solidjs/web\";\nimport { dynamic } from \"@solidjs/web\";\nimport { createEffect, createMemo, omit, onCleanup, untrack } from \"solid-js\";\nimport { useBaseUiId } from \"../../internals/base-ui-id\";\nimport { composeRefs, userRef } from \"../../internals/compose-refs\";\nimport { useFocus } from \"../../internals/floating-ui/hooks/use-focus\";\nimport { useHover } from \"../../internals/floating-ui/hooks/use-hover\";\nimport { safePolygon } from \"../../internals/floating-ui/safe-polygon\";\nimport type { Delay } from \"../../internals/floating-ui/types\";\nimport { mergeRootProps } from \"../../internals/merge-root-props\";\nimport { resolveClassStyle } from \"../../internals/resolve-class-style\";\nimport type { BaseUIComponentProps } from \"../../internals/types\";\nimport { useIsoLayoutEffect } from \"../../internals/use-iso-layout-effect\";\nimport { CLOSE_DELAY, OPEN_DELAY } from \"../constants\";\nimport { usePreviewCardRootContext } from \"../preview-card-root-context\";\nimport type { PreviewCardHandle } from \"../store/preview-card-store\";\n\nexport interface PreviewCardTriggerState {\n\t/** Whether the preview card is currently open. */\n\topen: boolean;\n}\n\nexport interface PreviewCardTriggerProps<Payload = unknown>\n\textends BaseUIComponentProps<\"a\", PreviewCardTriggerState> {\n\t/**\n\t * Tag/component to render. Defaults to `\"a\"`. Replaces the\n\t * pre-spike `render` prop (axis G).\n\t */\n\tas?: ValidComponent;\n\t/** @default 600 */\n\tdelay?: number | undefined;\n\t/** @default 300 */\n\tcloseDelay?: number | undefined;\n\t/**\n\t * Optional handle this trigger should register with. When supplied, the\n\t * trigger registers in `handle.store.context.triggerElements` instead of\n\t * the enclosing root's store.\n\t */\n\thandle?: PreviewCardHandle<Payload> | undefined;\n\t/** Stable id for multi-trigger setups. */\n\tid?: string | undefined;\n\t/** Payload associated with this trigger (surfaces via `payload` render-fn). */\n\tpayload?: Payload | undefined;\n}\n\n/**\n * A link that opens the preview card on hover / focus. Renders an `<a>`\n * element (matches Base UI React — preview-card is designed for inline\n * links that surface a preview on hover).\n *\n * Solid 2.0-native rewire (§1 wave 2): replaces `renderElement` with\n * `dynamic(() => props.as ?? \"a\")` and composes hover + focus +\n * dismiss reference props + state-attr getters via `mergeRootProps`.\n */\nexport function PreviewCardTrigger<Payload = unknown>(\n\tprops: PreviewCardTriggerProps<Payload>,\n): JSX.Element {\n\tconst root = usePreviewCardRootContext();\n\n\tconst delayProp = (): number => props.delay ?? OPEN_DELAY;\n\tconst closeDelayProp = (): number => props.closeDelay ?? CLOSE_DELAY;\n\n\tconst fallbackId = useBaseUiId();\n\tconst thisTriggerId = (): string => props.id ?? fallbackId;\n\n\tconst isActive = createMemo<boolean>(() => {\n\t\treturn root.activeTriggerId() === thisTriggerId();\n\t});\n\n\tuseIsoLayoutEffect(\n\t\t() => ({ active: isActive(), delay: closeDelayProp() }),\n\t\t({ active, delay }) => {\n\t\t\tif (active) {\n\t\t\t\troot.closeDelayRef.current = delay;\n\t\t\t}\n\t\t},\n\t);\n\n\tconst hoverProps = useHover(root.floatingRootContext, {\n\t\tmouseOnly: true,\n\t\tmove: false,\n\t\thandleClose: safePolygon(),\n\t\tdelay: (): Delay => ({\n\t\t\topen: delayProp(),\n\t\t\tclose: closeDelayProp(),\n\t\t}),\n\t});\n\n\tconst focusProps = useFocus(root.floatingRootContext, {\n\t\tdelay: delayProp(),\n\t});\n\n\tconst referenceProps = root.interactions.getReferenceProps();\n\n\tconst state = createMemo<PreviewCardTriggerState>(() => ({\n\t\topen: root.open() && isActive(),\n\t}));\n\n\t// Trigger registration in the store's trigger map.\n\tconst storeFor = () => props.handle?.store ?? root.store;\n\tlet registeredId: string | null = null;\n\tlet registeredElement: HTMLElement | null = null;\n\tconst triggerRef = (el: HTMLElement | null): void =>\n\t\tuntrack(() => {\n\t\t\tconst id = thisTriggerId();\n\t\t\tconst s = storeFor();\n\n\t\t\tif (registeredId !== null && registeredElement !== null) {\n\t\t\t\tconst current = s.context.triggerElements.getById(registeredId);\n\t\t\t\tif (current === registeredElement) {\n\t\t\t\t\ts.context.triggerElements.delete(registeredId);\n\t\t\t\t}\n\t\t\t\tregisteredId = null;\n\t\t\t\tregisteredElement = null;\n\t\t\t}\n\n\t\t\tif (el && id !== undefined) {\n\t\t\t\ts.context.triggerElements.add(id, el);\n\t\t\t\tregisteredId = id;\n\t\t\t\tregisteredElement = el;\n\t\t\t}\n\n\t\t\tif (el && (isActive() || root.activeTriggerId() == null)) {\n\t\t\t\troot.setTriggerElement(el);\n\t\t\t\tif (root.activeTriggerId() == null) {\n\t\t\t\t\troot.setActiveTriggerId(thisTriggerId());\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\tonCleanup(() => {\n\t\tif (registeredId !== null && registeredElement !== null) {\n\t\t\tconst s = storeFor();\n\t\t\tconst current = s.context.triggerElements.getById(registeredId);\n\t\t\tif (current === registeredElement) {\n\t\t\t\ts.context.triggerElements.delete(registeredId);\n\t\t\t}\n\t\t}\n\t});\n\n\tcreateEffect(\n\t\t() => ({ active: isActive(), payload: props.payload }),\n\t\t({ active, payload }) => {\n\t\t\tif (active && \"payload\" in props) {\n\t\t\t\troot.setPayload(payload);\n\t\t\t}\n\t\t},\n\t);\n\n\tconst markActive = (): void => {\n\t\tconst id = thisTriggerId();\n\t\tif (id !== undefined) {\n\t\t\troot.setActiveTriggerId(id);\n\t\t}\n\t\tif (\"payload\" in props) {\n\t\t\troot.setPayload(props.payload);\n\t\t}\n\t};\n\n\tconst stateAttrs = {\n\t\tget \"data-popup-open\"() {\n\t\t\treturn state().open ? \"\" : undefined;\n\t\t},\n\t\tget id() {\n\t\t\treturn thisTriggerId();\n\t\t},\n\t\tonPointerEnter: markActive,\n\t\tonFocus: markActive,\n\t};\n\n\tconst userClassStyle = resolveClassStyle(props, () => state());\n\n\tconst userProps = omit(\n\t\tprops,\n\t\t\"as\",\n\t\t\"class\",\n\t\t\"style\",\n\t\t\"attrs\",\n\n\t\t\"delay\",\n\t\t\"closeDelay\",\n\t\t\"handle\",\n\t\t\"payload\",\n\t);\n\n\tlet merged: Record<string, unknown> = mergeRootProps(\n\t\thoverProps ?? {},\n\t\tfocusProps.reference,\n\t);\n\tmerged = mergeRootProps(merged, referenceProps);\n\tmerged = mergeRootProps(merged, stateAttrs);\n\tmerged = mergeRootProps(merged, userClassStyle);\n\tmerged = mergeRootProps(merged, userProps);\n\n\tconst Tag = dynamic(() => props.as ?? \"a\");\n\treturn <Tag {...merged} ref={composeRefs(triggerRef, userRef(props))} />;\n}\n"],"mappings":"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","ignoreList":[]}