{"version":3,"names":["dynamic","createMemo","omit","composeRefs","userRef","FloatingFocusManager","mergeRootProps","resolveClassStyle","useDialogRootContext","useDialogPortalContext","COMPOSITE_KEYS","Set","DialogPopup","props","root","setPopupRef","el","popupRef","current","setPopupElement","nestedDialogOpen","nestedOpenDialogCount","state","open","transitionStatus","nested","defaultInitialFocus","interactionType","resolvedInitialFocus","value","initialFocus","undefined","resolvedFinalFocus","finalFocus","modalValue","modal","closeOnFocusOut","disablePointerDismissal","internal","role","tabIndex","hidden","mounted","aria-labelledby","titleId","aria-describedby","descriptionId","onKeyDown","event","has","key","stopPropagation","style","String","data-open","data-closed","data-starting-style","data-ending-style","data-nested","data-nested-dialog-open","userClassStyle","userProps","merged","interactions","getFloatingProps","Tag","as","popupElement","floatingRootContext","openMethod"],"sources":["dialog-popup.tsx"],"sourcesContent":["import type { JSX, ValidComponent } from \"@solidjs/web\";\n/**\n * `<Dialog.Popup>` — the container for dialog contents.\n */\n\nimport { dynamic } from \"@solidjs/web\";\nimport { createMemo, omit } from \"solid-js\";\nimport { composeRefs, userRef } from \"../../internals/compose-refs\";\nimport {\n\tFloatingFocusManager,\n\ttype InteractionType,\n} from \"../../internals/floating-ui/components/floating-focus-manager\";\nimport { mergeRootProps } from \"../../internals/merge-root-props\";\nimport { resolveClassStyle } from \"../../internals/resolve-class-style\";\nimport type { BaseUIComponentProps } from \"../../internals/types\";\nimport type { TransitionStatus } from \"../../internals/use-transition-status/use-transition-status\";\nimport { useDialogRootContext } from \"../dialog-root-context\";\nimport { useDialogPortalContext } from \"../portal/dialog-portal-context\";\n\nconst COMPOSITE_KEYS = new Set<string>([\n\t\"ArrowUp\",\n\t\"ArrowDown\",\n\t\"ArrowLeft\",\n\t\"ArrowRight\",\n\t\"Home\",\n\t\"End\",\n\t\"PageUp\",\n\t\"PageDown\",\n]);\n\nexport interface DialogPopupState {\n\topen: boolean;\n\ttransitionStatus: TransitionStatus;\n\tnested: boolean;\n\tnestedDialogOpen: boolean;\n}\n\nexport type DialogFocusHandle =\n\t| boolean\n\t| HTMLElement\n\t| { current: HTMLElement | null }\n\t| ((\n\t\t\tinteractionType: InteractionType,\n\t  ) => boolean | HTMLElement | null | undefined);\n\nexport interface DialogPopupProps\n\textends BaseUIComponentProps<\"div\", DialogPopupState> {\n\t/**\n\t * Tag/component to render. Defaults to `\"div\"`. Replaces the\n\t * pre-spike `render` prop (axis G).\n\t */\n\tas?: ValidComponent;\n\tinitialFocus?: DialogFocusHandle | undefined;\n\tfinalFocus?: DialogFocusHandle | undefined;\n}\n\n/**\n * A container for the dialog contents. Renders a `<div>` element.\n */\nexport function DialogPopup(props: DialogPopupProps): JSX.Element {\n\tconst root = useDialogRootContext();\n\tuseDialogPortalContext();\n\n\tconst setPopupRef = (el: HTMLElement | null): void => {\n\t\troot.popupRef.current = el;\n\t\troot.setPopupElement(el);\n\t};\n\n\tconst nestedDialogOpen = (): boolean => root.nestedOpenDialogCount() > 0;\n\n\tconst state = createMemo<DialogPopupState>(() => ({\n\t\topen: root.open(),\n\t\ttransitionStatus: root.transitionStatus(),\n\t\tnested: root.nested(),\n\t\tnestedDialogOpen: nestedDialogOpen(),\n\t}));\n\n\tconst defaultInitialFocus = (interactionType: InteractionType) => {\n\t\tif (interactionType === \"touch\") {\n\t\t\treturn root.popupRef.current;\n\t\t}\n\t\treturn true;\n\t};\n\n\tconst resolvedInitialFocus = ():\n\t\t| boolean\n\t\t| HTMLElement\n\t\t| { current: HTMLElement | null }\n\t\t| ((t: InteractionType) => boolean | HTMLElement | null | undefined) => {\n\t\tconst value = props.initialFocus;\n\t\tif (value === undefined) return defaultInitialFocus;\n\t\treturn value;\n\t};\n\n\tconst resolvedFinalFocus = ():\n\t\t| boolean\n\t\t| HTMLElement\n\t\t| { current: HTMLElement | null }\n\t\t| ((t: InteractionType) => boolean | HTMLElement | null | undefined)\n\t\t| undefined => {\n\t\treturn props.finalFocus ?? true;\n\t};\n\n\tconst modalValue = (): boolean => root.modal() !== false;\n\tconst closeOnFocusOut = (): boolean => !root.disablePointerDismissal();\n\n\tconst internal = {\n\t\tget role() {\n\t\t\treturn root.role();\n\t\t},\n\t\ttabIndex: -1,\n\t\tget hidden() {\n\t\t\treturn !root.mounted();\n\t\t},\n\t\tget \"aria-labelledby\"() {\n\t\t\treturn root.titleId() ?? \"\";\n\t\t},\n\t\tget \"aria-describedby\"() {\n\t\t\treturn root.descriptionId() ?? \"\";\n\t\t},\n\t\tonKeyDown(event: KeyboardEvent) {\n\t\t\tif (COMPOSITE_KEYS.has(event.key)) {\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t},\n\t\tget style(): JSX.CSSProperties {\n\t\t\treturn {\n\t\t\t\t\"--nested-dialogs\": String(root.nestedOpenDialogCount()),\n\t\t\t} as JSX.CSSProperties;\n\t\t},\n\t\tget \"data-open\"() {\n\t\t\treturn state().open ? \"\" : undefined;\n\t\t},\n\t\tget \"data-closed\"() {\n\t\t\treturn state().open ? undefined : \"\";\n\t\t},\n\t\tget \"data-starting-style\"() {\n\t\t\treturn state().transitionStatus === \"starting\" ? \"\" : undefined;\n\t\t},\n\t\tget \"data-ending-style\"() {\n\t\t\treturn state().transitionStatus === \"ending\" ? \"\" : undefined;\n\t\t},\n\t\tget \"data-nested\"() {\n\t\t\treturn state().nested ? \"\" : undefined;\n\t\t},\n\t\tget \"data-nested-dialog-open\"() {\n\t\t\treturn state().nestedDialogOpen ? \"\" : undefined;\n\t\t},\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\"initialFocus\",\n\t\t\"finalFocus\",\n\t);\n\n\tlet merged: Record<string, unknown> = mergeRootProps(\n\t\troot.interactions.getFloatingProps(),\n\t\tinternal,\n\t);\n\tmerged = mergeRootProps(merged, userClassStyle);\n\tmerged = mergeRootProps(merged, userProps);\n\n\tconst Tag = dynamic(() => props.as ?? \"div\");\n\tconst popupElement = (\n\t\t<Tag {...merged} ref={composeRefs(setPopupRef, userRef(props))} />\n\t);\n\n\treturn (\n\t\t<FloatingFocusManager\n\t\t\tcontext={root.floatingRootContext}\n\t\t\topenInteractionType={root.openMethod()}\n\t\t\tdisabled={!root.mounted()}\n\t\t\tcloseOnFocusOut={closeOnFocusOut()}\n\t\t\tinitialFocus={resolvedInitialFocus()}\n\t\t\treturnFocus={resolvedFinalFocus()}\n\t\t\tmodal={modalValue()}\n\t\t\trestoreFocus=\"popup\"\n\t\t>\n\t\t\t{popupElement}\n\t\t</FloatingFocusManager>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}