{"version":3,"file":"worker.mjs","names":[],"sources":["../../src/widgets/remote/worker/capability-use.ts","../../src/widgets/remote/worker/widget-package.ts","../../src/widgets/remote/contract/elements/search-sort.ts","../../src/widgets/remote/worker/elements/SearchSort.tsx","../../src/widgets/remote/contract/elements/fluid-spacer-widget.ts","../../src/widgets/remote/worker/elements/FluidSpacerWidget.tsx","../../src/widgets/remote/worker/elements/FluidUi.tsx"],"sourcesContent":["const DECLARATIVE_CAPABILITY_USE: unique symbol = Symbol(\n  \"fluid.declarativeCapabilityUse\",\n);\n\n/** A capability declaration that does not expose individual Portal functions. */\nexport interface DeclarativeCapabilityUse {\n  /** Internal marker used to validate `uses` entries. */\n  readonly [DECLARATIVE_CAPABILITY_USE]: true;\n  /** Stable capability name. */\n  readonly name: string;\n  /** Required capability contract version. */\n  readonly version: string;\n}\n\n/**\n * Declares that a widget can make direct network requests.\n * Add this marker to the widget's `uses` list. The portal host can require user\n * consent before mounting a package that declares network access. This marker\n * does not bypass browser CORS, Content Security Policy, or host network policy.\n *\n * @example\n * ```ts\n * const widget = defineWidget({\n *   name: \"remote-data\",\n *   component: RemoteData,\n *   uses: [networkAccess],\n * });\n * ```\n */\nexport const networkAccess: DeclarativeCapabilityUse = {\n  [DECLARATIVE_CAPABILITY_USE]: true,\n  name: \"networkAccess\",\n  version: \"1\",\n};\n\nexport function isDeclarativeCapabilityUse(\n  value: unknown,\n): value is DeclarativeCapabilityUse {\n  return (\n    typeof value === \"object\" &&\n    value !== null &&\n    DECLARATIVE_CAPABILITY_USE in value &&\n    value[DECLARATIVE_CAPABILITY_USE] === true\n  );\n}\n","import type { ComponentType } from \"react\";\nimport {\n  startRemoteDomWidgetWorker,\n  type RemoteDomCapabilityFunctionMetadata,\n  type RemoteDomWidgetWorkerController,\n  type RemoteDomWidgetWorkerDefinition,\n} from \"@fluid-app/widget-runtime/worker\";\nimport type {\n  JsonValue,\n  WidgetSourcePropertySchema,\n} from \"@fluid-app/portal-core/remote-dom-widget-package\";\nimport {\n  getPortalFunctionMetadata,\n  type AnyPortalFunction,\n} from \"../contract/portal-function\";\nimport {\n  isDeclarativeCapabilityUse,\n  type DeclarativeCapabilityUse,\n} from \"./capability-use\";\n\nconst SOURCE_WIDGET_MARKER = \"__fluidSourceWidget\";\nconst SOURCE_WIDGET_PACKAGE_MARKER = \"__fluidSourceWidgetPackage\";\n\ninterface RegisteredPortalFunctions {\n  readonly capabilities: readonly WidgetSourceCapabilityDeclaration[];\n  readonly functions: readonly RemoteDomCapabilityFunctionMetadata[];\n}\n\nconst portalFunctionsByWidgetName = new Map<\n  string,\n  RegisteredPortalFunctions[]\n>();\n\n/** JSON-serializable default props accepted by a source widget. */\nexport type WidgetSourceDefaultProps = Readonly<Record<string, JsonValue>>;\n\n/** Builder resize behavior declared by a source widget. */\nexport type WidgetSourceResizable =\n  | boolean\n  | \"horizontal\"\n  | \"vertical\"\n  | \"both\"\n  | {\n      /** Allow horizontal resizing. */\n      readonly horizontal?: boolean;\n      /** Allow vertical resizing. */\n      readonly vertical?: boolean;\n      /** Minimum width in builder layout units. */\n      readonly minWidth?: number;\n      /** Minimum height in builder layout units. */\n      readonly minHeight?: number;\n    };\n\n/** Versioned host capability required by a widget. */\nexport interface WidgetSourceCapabilityDeclaration {\n  /** Stable capability name enforced by the worker and host. */\n  readonly name: string;\n  /** Capability contract version required by the widget. */\n  readonly version: string;\n}\n\n/** Authoring options accepted by {@link defineWidget}. */\nexport interface DefineWidgetOptions<\n  Name extends string = string,\n  Props = WidgetSourceDefaultProps,\n> {\n  /** Stable URL-safe widget name used in the canonical widget type. */\n  readonly name: Name;\n  /** React component rendered by the Remote DOM worker. */\n  readonly component: ComponentType<Props & object>;\n  /** Human-readable builder palette name. */\n  readonly displayName?: string;\n  /** Builder palette description of the widget's purpose. */\n  readonly description?: string;\n  /** Icon identifier displayed in the builder palette. */\n  readonly icon?: string;\n  /** Builder palette category. */\n  readonly category?: string;\n  /** JSON-serializable property editor schema. */\n  readonly propertySchema?: WidgetSourcePropertySchema;\n  /** JSON-serializable props assigned to new widget instances. */\n  readonly defaultProps?: Partial<Props>;\n  /** Host layout treatment for the widget. */\n  readonly container?: \"inline\" | \"block\" | \"card\" | \"fullscreen\";\n  /** Oldest portal SDK version that can host the widget. */\n  readonly minSdkVersion?: string;\n  /** Typed portal functions and declarative capabilities used by the widget. */\n  readonly uses?: readonly (AnyPortalFunction | DeclarativeCapabilityUse)[];\n  /** Builder resize behavior and optional minimum dimensions. */\n  readonly resizable?: WidgetSourceResizable;\n}\n\n/** Normalized source widget returned by {@link defineWidget}. */\nexport interface SourceWidget<\n  Name extends string = string,\n  Props = WidgetSourceDefaultProps,\n> extends DefineWidgetOptions<Name, Props> {\n  /** Internal marker that distinguishes normalized source widgets. */\n  readonly [SOURCE_WIDGET_MARKER]: true;\n  /** Normalized defaults; an omitted author value becomes an empty object. */\n  readonly defaultProps: Partial<Props>;\n  /** Normalized typed functions and declarative capability markers. */\n  readonly uses: readonly (AnyPortalFunction | DeclarativeCapabilityUse)[];\n  /** Capability declarations derived from {@link uses}. */\n  readonly capabilities: readonly WidgetSourceCapabilityDeclaration[];\n}\n\n/** Heterogeneous source widget type used by package arrays. */\n// oxlint-disable-next-line typescript/no-explicit-any -- a package intentionally contains widgets with heterogeneous props.\nexport type AnySourceWidget = SourceWidget<string, any>;\n\ninterface DefineWidgetPackageBase<Scope extends string = string> {\n  /** Namespace used as the first segment of the package id. */\n  readonly scope: Scope;\n  /** SemVer package version without build metadata. @defaultValue `\"0.0.0-dev\"` */\n  readonly version?: string;\n  /** Widgets published in this package. */\n  readonly widgets: readonly AnySourceWidget[];\n  /** Absolute runtime stylesheet URLs; build tooling normally injects these. */\n  readonly cssUrls?: readonly string[];\n}\n\n/** Authoring options accepted by {@link defineWidgetPackage}. */\nexport type DefineWidgetPackageOptions<\n  Scope extends string = string,\n  StableId extends string = string,\n> = DefineWidgetPackageBase<Scope> &\n  (\n    | {\n        /** Company-owned package. This is the default package type. */\n        readonly packageType?: \"company\";\n        /** Stable company owner identifier. */\n        readonly packageStableId: StableId;\n      }\n    | {\n        /** Standalone package owned by a Droplet. */\n        readonly packageType: \"droplet\";\n        /** Stable Droplet identifier; the CLI can inject it during publication. */\n        readonly packageStableId?: StableId;\n      }\n  );\n\n/** Canonical source package returned by {@link defineWidgetPackage}. */\nexport interface SourceWidgetPackage<\n  Scope extends string = string,\n  StableId extends string = string,\n> {\n  /** Internal marker that distinguishes normalized source packages. */\n  readonly [SOURCE_WIDGET_PACKAGE_MARKER]: true;\n  /** Widget package descriptor format version. */\n  readonly manifestVersion: 1;\n  /** Namespace used as the first segment of the package id. */\n  readonly scope: Scope;\n  /** Stable company or droplet owner identifier. */\n  readonly packageStableId: StableId;\n  /** Canonical `${scope}.${packageStableId}` package id. */\n  readonly packageId: `${Scope}.${StableId}`;\n  /** Ownership model used for validation, consent, and publication. */\n  readonly packageType: \"company\" | \"droplet\";\n  /** Normalized SemVer package version. */\n  readonly version: string;\n  /** Widgets included in the package. */\n  readonly widgets: readonly AnySourceWidget[];\n  /** Runtime stylesheet URLs included in the published descriptor. */\n  readonly cssUrls: readonly string[];\n}\n\n/** Generated runtime widget definition accepted by {@link startWidgetPackage}. */\nexport interface RuntimeSourceWidget {\n  /** Fully qualified widget type registered with the worker runtime. */\n  readonly type: string;\n  /** Source name retained by generated company worker entries. */\n  readonly name?: string;\n  /** React component rendered for this runtime widget type. */\n  readonly component: ComponentType<Record<string, unknown>>;\n  /** Capability declarations enforced for generated runtime widgets. */\n  readonly capabilities?: readonly WidgetSourceCapabilityDeclaration[];\n}\n\n/** Generated-worker options accepted by {@link startWidgetPackage}. */\nexport interface StartWidgetPackageOptions {\n  /** Generated runtime widgets to register when no source package is available. */\n  readonly widgets: readonly RuntimeSourceWidget[];\n}\n\n/**\n * Defines one widget and derives its enforced capability declarations.\n *\n * @param options - Component, builder metadata, defaults, property schema, and typed capability uses.\n * @returns The normalized widget used by {@link defineWidgetPackage}.\n * @throws If `uses` contains an invalid entry or conflicting capability versions.\n * @remarks Call during worker module initialization. Default props and property values must cross the worker boundary as JSON values. Every Portal function the component calls must appear in `uses`.\n *\n * @example\n * ```tsx\n * const greeting = defineWidget({\n *   name: \"greeting\",\n *   displayName: \"Greeting\",\n *   component: Greeting,\n *   defaultProps: { message: \"Hello\" },\n *   uses: [getUserAccount],\n * });\n * ```\n */\nexport function defineWidget<\n  const Name extends string,\n  Props = WidgetSourceDefaultProps,\n>(options: DefineWidgetOptions<Name, Props>): SourceWidget<Name, Props> {\n  const uses = options.uses ?? [];\n  const normalized = normalizePortalFunctions(uses);\n  const registrations = portalFunctionsByWidgetName.get(options.name) ?? [];\n  registrations.push(normalized);\n  portalFunctionsByWidgetName.set(options.name, registrations);\n  return {\n    ...options,\n    [SOURCE_WIDGET_MARKER]: true,\n    defaultProps: options.defaultProps ?? {},\n    uses,\n    capabilities: normalized.capabilities,\n  };\n}\n\n/**\n * Defines a company- or droplet-owned widget package.\n *\n * @param options - Package identity, SemVer version, widgets, and optional runtime stylesheets.\n * @returns A canonical source package descriptor. Build and dev replace runtime artifact URLs.\n * @throws If a company package omits `packageStableId`.\n * @remarks Define one package during worker module initialization. Company packages require a stable company identifier; Droplet publication can inject its stable identifier through the CLI.\n *\n * @example\n * ```ts\n * const widgetPackage = defineWidgetPackage({\n *   scope: \"acme\",\n *   packageStableId: \"company-public-id\",\n *   version: \"1.0.0\",\n *   widgets: [greeting],\n * });\n * ```\n */\nexport function defineWidgetPackage<\n  const Scope extends string,\n  const StableId extends string,\n>(\n  options: DefineWidgetPackageOptions<Scope, StableId>,\n): SourceWidgetPackage<Scope, StableId> {\n  const packageType = options.packageType ?? \"company\";\n  const packageStableId = options.packageStableId;\n  if (!packageStableId && packageType !== \"droplet\") {\n    throw new Error(\n      \"defineWidgetPackage requires packageStableId for company packages.\",\n    );\n  }\n\n  const stableId = (packageStableId ?? \"__fluid_cli_managed__\") as StableId;\n  const hasLegacyNavigationOrigins = Object.prototype.hasOwnProperty.call(\n    options,\n    \"navigationOrigins\",\n  );\n  const legacyNavigationOrigins = (\n    options as unknown as Record<string, unknown>\n  ).navigationOrigins;\n  return {\n    [SOURCE_WIDGET_PACKAGE_MARKER]: true,\n    manifestVersion: 1,\n    scope: options.scope,\n    packageStableId: stableId,\n    packageId: `${options.scope}.${stableId}`,\n    packageType,\n    version: options.version ?? \"0.0.0-dev\",\n    widgets: options.widgets,\n    cssUrls: options.cssUrls ?? [],\n    ...(hasLegacyNavigationOrigins\n      ? { navigationOrigins: legacyNavigationOrigins }\n      : {}),\n  };\n}\n\n/**\n * Starts one Remote DOM worker containing every widget in the source package.\n *\n * @param widgetPackage - A source package or generated runtime widget list.\n * @returns A controller that owns the worker connection and registered widget definitions.\n * @throws If generated widgets cannot be matched to an unambiguous source `uses` declaration.\n * @remarks Call once from the worker entry after all widgets and the package are defined. The returned controller owns the active Remote DOM connection.\n *\n * @example\n * ```ts\n * startWidgetPackage(widgetPackage);\n * ```\n */\nexport function startWidgetPackage(\n  widgetPackage: SourceWidgetPackage | StartWidgetPackageOptions,\n): RemoteDomWidgetWorkerController {\n  const widgets =\n    \"packageId\" in widgetPackage\n      ? Object.fromEntries(\n          widgetPackage.widgets.map((widget) => [\n            `${getCanonicalRuntimePackageId(widgetPackage)}.${widget.name}`,\n            {\n              component: widget.component,\n              capabilities: widget.capabilities,\n              functions: readSourcePortalFunctions(widget),\n            },\n          ]),\n        )\n      : Object.fromEntries(\n          widgetPackage.widgets.map((widget) => [\n            widget.type,\n            {\n              component: widget.component,\n              capabilities: widget.capabilities ?? [],\n              functions: readGeneratedPortalFunctions(widget),\n            },\n          ]),\n        );\n  return startRemoteDomWidgetWorker({\n    widgets: widgets as Readonly<\n      Record<string, RemoteDomWidgetWorkerDefinition>\n    >,\n  });\n}\n\nfunction normalizePortalFunctions(\n  uses: readonly (AnyPortalFunction | DeclarativeCapabilityUse)[],\n): {\n  readonly capabilities: readonly WidgetSourceCapabilityDeclaration[];\n  readonly functions: readonly RemoteDomCapabilityFunctionMetadata[];\n} {\n  const versionByCapability = new Map<string, string>();\n  const functionsByIdentity = new Map<\n    string,\n    RemoteDomCapabilityFunctionMetadata\n  >();\n  for (const portalFunction of uses) {\n    if (isDeclarativeCapabilityUse(portalFunction)) {\n      const currentVersion = versionByCapability.get(portalFunction.name);\n      if (currentVersion && currentVersion !== portalFunction.version) {\n        throw new Error(\n          `defineWidget cannot use capability \"${portalFunction.name}\" at both version \"${currentVersion}\" and version \"${portalFunction.version}\".`,\n        );\n      }\n      versionByCapability.set(portalFunction.name, portalFunction.version);\n      continue;\n    }\n    const metadata = getPortalFunctionMetadata(portalFunction);\n    if (!metadata) {\n      throw new Error(\n        \"defineWidget uses must contain portal functions or declarative capability markers.\",\n      );\n    }\n\n    const currentVersion = versionByCapability.get(metadata.capability);\n    if (currentVersion && currentVersion !== metadata.version) {\n      throw new Error(\n        `defineWidget cannot use capability \"${metadata.capability}\" at both version \"${currentVersion}\" and version \"${metadata.version}\".`,\n      );\n    }\n    versionByCapability.set(metadata.capability, metadata.version);\n    functionsByIdentity.set(\n      JSON.stringify([metadata.capability, metadata.version, metadata.method]),\n      metadata,\n    );\n  }\n\n  return {\n    capabilities: [...versionByCapability].map(([name, version]) => ({\n      name,\n      version,\n    })),\n    functions: [...functionsByIdentity.values()],\n  };\n}\n\nfunction readGeneratedPortalFunctions(\n  widget: RuntimeSourceWidget,\n): readonly RemoteDomCapabilityFunctionMetadata[] {\n  if (!widget.name) return [];\n  const registrations = portalFunctionsByWidgetName.get(widget.name) ?? [];\n  portalFunctionsByWidgetName.delete(widget.name);\n  const capabilities = widget.capabilities ?? [];\n  const matchingRegistrations = registrations.filter((registration) =>\n    haveSameCapabilityDeclarations(registration.capabilities, capabilities),\n  );\n  const uniqueFunctions = new Map<\n    string,\n    readonly RemoteDomCapabilityFunctionMetadata[]\n  >();\n  for (const registration of matchingRegistrations) {\n    uniqueFunctions.set(\n      portalFunctionSetKey(registration.functions),\n      registration.functions,\n    );\n  }\n\n  if (uniqueFunctions.size > 1) {\n    throw new Error(\n      `Generated worker entry cannot recover an unambiguous uses declaration for widget \"${widget.name}\" (${widget.type}). Multiple widgets with that name declare the same capabilities but different portal functions; give every source widget a unique name.`,\n    );\n  }\n\n  return uniqueFunctions.values().next().value ?? [];\n}\n\nfunction readSourcePortalFunctions(\n  widget: AnySourceWidget,\n): readonly RemoteDomCapabilityFunctionMetadata[] {\n  portalFunctionsByWidgetName.delete(widget.name);\n  return normalizePortalFunctions(widget.uses).functions;\n}\n\nfunction haveSameCapabilityDeclarations(\n  left: readonly WidgetSourceCapabilityDeclaration[],\n  right: readonly WidgetSourceCapabilityDeclaration[],\n): boolean {\n  if (left.length !== right.length) return false;\n  const rightKeys = new Set(\n    right.map(({ name, version }) => JSON.stringify([name, version])),\n  );\n  return left.every(({ name, version }) =>\n    rightKeys.has(JSON.stringify([name, version])),\n  );\n}\n\nfunction portalFunctionSetKey(\n  functions: readonly RemoteDomCapabilityFunctionMetadata[],\n): string {\n  return JSON.stringify(\n    functions\n      .map(({ capability, version, method }) => [capability, version, method])\n      .sort(([leftCapability, leftVersion, leftMethod], right) =>\n        `${leftCapability}\\u0000${leftVersion}\\u0000${leftMethod}`.localeCompare(\n          right.join(\"\\u0000\"),\n        ),\n      ),\n  );\n}\n\nfunction getCanonicalRuntimePackageId(\n  widgetPackage: SourceWidgetPackage,\n): string {\n  const owner = widgetPackage.packageType;\n  const scope = widgetPackage.scope;\n  const stableId = widgetPackage.packageStableId;\n  const packageKey =\n    scope !== \"company\" &&\n    scope !== \"droplet\" &&\n    !stableId.startsWith(`${scope}.`)\n      ? `${scope}.${stableId}`\n      : stableId;\n  return `${owner}.${packageKey}`;\n}\n\nexport type { RemoteDomWidgetWorkerController };\n","export const FLUID_SEARCH_SORT_TAG_NAME = \"fluid-ui-search-sort\";\n\nexport const FLUID_SEARCH_SORT_EVENT_NAMES = {\n  searchChange: \"search-change\",\n  sortChange: \"sort-change\",\n} as const;\n\nexport type FluidSearchSortEventName =\n  (typeof FLUID_SEARCH_SORT_EVENT_NAMES)[keyof typeof FLUID_SEARCH_SORT_EVENT_NAMES];\n\nexport interface FluidSearchSortEventDetails {\n  readonly \"search-change\": string;\n  readonly \"sort-change\": string;\n}\n\nexport interface FluidSearchSortOption {\n  readonly label: string;\n  readonly value: string;\n}\n\nexport interface FluidSearchSortElementProperties {\n  /** Current search text displayed by the control. */\n  readonly searchValue: string;\n  /** Search-input placeholder. */\n  readonly placeholder?: string;\n  /** Accessible label for the button that clears the search input. */\n  readonly clearLabel?: string;\n  /** Accessible label for the sort control. */\n  readonly sortLabel?: string;\n  /** Sort choices displayed by the control. */\n  readonly sortOptions?: readonly FluidSearchSortOption[];\n  /** Value of the selected sort choice. */\n  readonly sortValue?: string;\n}\n","import { createElement, useEffect, useRef, type ReactElement } from \"react\";\nimport {\n  FLUID_SEARCH_SORT_EVENT_NAMES,\n  FLUID_SEARCH_SORT_TAG_NAME,\n  type FluidSearchSortElementProperties,\n  type FluidSearchSortEventDetails,\n  type FluidSearchSortEventName,\n} from \"../../contract/elements/search-sort\";\n\n/** Props for the worker-safe Portal search and sort control. */\nexport interface SearchSortProps extends FluidSearchSortElementProperties {\n  /** Called when the search value changes. */\n  readonly onSearchChange: (value: string) => void;\n  /** Called when the selected sort value changes. */\n  readonly onSortChange?: (value: string) => void;\n}\n\n/**\n * Renders the Portal-provided search and sort control in a Remote DOM widget.\n *\n * @param props - Search, sort, option, and change-handler configuration.\n * @returns A worker-safe React element backed by the Portal custom element.\n * @remarks Render this component only inside a started Remote DOM widget worker. The Portal host owns its visual implementation.\n * @example\n * ```tsx\n * <SearchSort\n *   searchValue={query}\n *   placeholder=\"Search products\"\n *   onSearchChange={setQuery}\n * />\n * ```\n */\nexport function SearchSort({\n  onSearchChange,\n  onSortChange,\n  ...props\n}: SearchSortProps): ReactElement {\n  const elementRef = useRef<HTMLElement | null>(null);\n  const searchChangeRef = useRef(onSearchChange);\n  const sortChangeRef = useRef(onSortChange);\n  searchChangeRef.current = onSearchChange;\n  sortChangeRef.current = onSortChange;\n\n  useEffect(() => {\n    const element = elementRef.current;\n    if (!element) return;\n    const handleSearchChange = (event: Event): void => {\n      const value = readRemoteEventValue(event);\n      if (value !== undefined) searchChangeRef.current(value);\n    };\n    const handleSortChange = (event: Event): void => {\n      const value = readRemoteEventValue(event);\n      if (value !== undefined) sortChangeRef.current?.(value);\n    };\n    element.addEventListener(\n      FLUID_SEARCH_SORT_EVENT_NAMES.searchChange,\n      handleSearchChange,\n    );\n    element.addEventListener(\n      FLUID_SEARCH_SORT_EVENT_NAMES.sortChange,\n      handleSortChange,\n    );\n    return () => {\n      element.removeEventListener(\n        FLUID_SEARCH_SORT_EVENT_NAMES.searchChange,\n        handleSearchChange,\n      );\n      element.removeEventListener(\n        FLUID_SEARCH_SORT_EVENT_NAMES.sortChange,\n        handleSortChange,\n      );\n    };\n  }, []);\n\n  return createElement(FLUID_SEARCH_SORT_TAG_NAME, {\n    ...props,\n    ref: elementRef,\n  });\n}\n\nfunction readRemoteEventValue(\n  event: Event,\n): FluidSearchSortEventDetails[FluidSearchSortEventName] | undefined {\n  if (!(event instanceof CustomEvent)) return undefined;\n  if (typeof event.detail === \"string\") return event.detail;\n  if (\n    typeof event.detail === \"object\" &&\n    event.detail !== null &&\n    \"detail\" in event.detail &&\n    typeof event.detail.detail === \"string\"\n  ) {\n    return event.detail.detail;\n  }\n  return undefined;\n}\n","export const FLUID_SPACER_WIDGET_TAG_NAME = \"fluid-spacer-widget\";\n\nexport interface FluidSpacerWidgetElementProperties {\n  readonly customHeight?: string;\n  readonly previewMode?: boolean;\n}\n","import { createElement, type ReactElement } from \"react\";\nimport {\n  FLUID_SPACER_WIDGET_TAG_NAME,\n  type FluidSpacerWidgetElementProperties,\n} from \"../../contract/elements/fluid-spacer-widget\";\n\n/** Props for the worker-safe Portal spacer element. */\nexport interface FluidSpacerWidgetProps {\n  /** Explicit spacer height accepted by the Portal element. */\n  readonly customHeight?: FluidSpacerWidgetElementProperties[\"customHeight\"];\n  /** Whether the spacer is rendered in builder preview mode. */\n  readonly previewMode?: FluidSpacerWidgetElementProperties[\"previewMode\"];\n}\n\n/**\n * Renders a Portal spacer inside a Remote DOM widget.\n *\n * @param props - Spacer height and preview state.\n * @returns A worker-safe React element backed by the Portal custom element.\n * @remarks Render this component only inside a started Remote DOM widget worker. The Portal host determines the final layout behavior.\n * @example\n * ```tsx\n * <FluidSpacerWidget customHeight={24} />\n * ```\n */\nexport function FluidSpacerWidget(props: FluidSpacerWidgetProps): ReactElement {\n  return createElement(FLUID_SPACER_WIDGET_TAG_NAME, props);\n}\n","import { createElement, type ComponentType, type ReactElement } from \"react\";\nimport { createRemoteComponent } from \"@remote-dom/react\";\nimport {\n  REMOTE_DOM_UI_COMPONENTS,\n  type RemoteDomUiComponentName,\n  type RemoteDomUiComponentProps,\n  type RemoteDomUiValueCodec,\n} from \"@fluid-app/widget-runtime/worker\";\n\ntype RemoteElementConstructor = NonNullable<\n  Parameters<typeof createRemoteComponent>[1]\n>;\nconst INVALID_EVENT_PAYLOAD = Symbol(\"invalid-event-payload\");\n\n/** A worker-safe Fluid UI component with its reviewed serializable props. */\nexport type FluidUiComponent<Name extends RemoteDomUiComponentName> =\n  ComponentType<RemoteDomUiComponentProps<Name>>;\n\nfunction createFluidUiComponent<Name extends RemoteDomUiComponentName>(\n  name: Name,\n): ComponentType<RemoteDomUiComponentProps<Name>> {\n  const definition = REMOTE_DOM_UI_COMPONENTS.find(\n    ({ exportName }) => exportName === name,\n  );\n  if (!definition) {\n    throw new Error(`Missing Remote DOM UI definition for ${name}.`);\n  }\n  const componentDefinition = definition;\n  const tagName = `fluid-ui-${name\n    .replace(/([a-z0-9])([A-Z])/g, \"$1-$2\")\n    .toLowerCase()}`;\n  let RemoteComponent:\n    | ComponentType<RemoteDomUiComponentProps<Name>>\n    | undefined;\n  function RemoteFluidUiComponent(\n    props: RemoteDomUiComponentProps<Name>,\n  ): ReactElement {\n    if (!RemoteComponent) {\n      const Element = customElements.get(tagName);\n      if (!Element) {\n        throw new Error(`Remote DOM UI element ${tagName} is not registered.`);\n      }\n      RemoteComponent = createRemoteComponent(\n        tagName as keyof HTMLElementTagNameMap,\n        Element as unknown as RemoteElementConstructor,\n        {\n          eventProps: Object.fromEntries(\n            componentDefinition.events.map(({ eventName, propName }) => [\n              propName,\n              { event: eventName },\n            ]),\n          ),\n        },\n      ) as ComponentType<RemoteDomUiComponentProps<Name>>;\n    }\n    const remoteProps = { ...props } as Record<string, unknown>;\n    for (const { payload, propName } of componentDefinition.events) {\n      const listener = props[propName as keyof typeof props];\n      if (typeof listener !== \"function\") continue;\n      const callback = listener as (...args: readonly unknown[]) => unknown;\n      remoteProps[propName] = (event: unknown) => {\n        if (payload === \"void\") {\n          callback();\n          return;\n        }\n        const detail = readEventDetail(event);\n        const value = decodeRemoteEventPayload(detail, payload);\n        if (value !== INVALID_EVENT_PAYLOAD) callback(value);\n      };\n    }\n    return createElement(\n      RemoteComponent as ComponentType<Record<string, unknown>>,\n      remoteProps,\n    );\n  }\n  RemoteFluidUiComponent.displayName = name;\n  return RemoteFluidUiComponent;\n}\n\nfunction readEventDetail(event: unknown): unknown {\n  return event && typeof event === \"object\" && Reflect.has(event, \"detail\")\n    ? Reflect.get(event, \"detail\")\n    : event;\n}\n\nfunction decodeRemoteEventPayload(\n  value: unknown,\n  codec: RemoteDomUiValueCodec,\n): unknown | typeof INVALID_EVENT_PAYLOAD {\n  if (codec === \"boolean\") {\n    return typeof value === \"boolean\" ? value : INVALID_EVENT_PAYLOAD;\n  }\n  if (codec === \"finite-number\") {\n    return typeof value === \"number\" && Number.isFinite(value)\n      ? value\n      : INVALID_EVENT_PAYLOAD;\n  }\n  if (codec === \"finite-number-array\") {\n    return isFiniteNumberArray(value) ? value : INVALID_EVENT_PAYLOAD;\n  }\n  if (codec === \"string\") {\n    return typeof value === \"string\" ? value : INVALID_EVENT_PAYLOAD;\n  }\n  if (codec === \"string-array\") {\n    return isStringArray(value) ? value : INVALID_EVENT_PAYLOAD;\n  }\n  if (codec === \"string-or-string-array\") {\n    return typeof value === \"string\" || isStringArray(value)\n      ? value\n      : INVALID_EVENT_PAYLOAD;\n  }\n  if (codec === \"option-array\") {\n    return isOptionArray(value) ? value : INVALID_EVENT_PAYLOAD;\n  }\n  return INVALID_EVENT_PAYLOAD;\n}\n\nfunction isFiniteNumberArray(value: unknown): value is readonly number[] {\n  return (\n    Array.isArray(value) &&\n    value.every((item) => typeof item === \"number\" && Number.isFinite(item))\n  );\n}\n\nfunction isStringArray(value: unknown): value is readonly string[] {\n  return (\n    Array.isArray(value) && value.every((item) => typeof item === \"string\")\n  );\n}\n\nfunction isOptionArray(\n  value: unknown,\n): value is readonly { readonly label: string; readonly value: string }[] {\n  return (\n    Array.isArray(value) &&\n    value.every(\n      (item) =>\n        item !== null &&\n        typeof item === \"object\" &&\n        Object.getPrototypeOf(item) === Object.prototype &&\n        typeof Reflect.get(item, \"label\") === \"string\" &&\n        typeof Reflect.get(item, \"value\") === \"string\" &&\n        Object.keys(item).every((key) => key === \"label\" || key === \"value\"),\n    )\n  );\n}\n\n/** Worker-safe Fluid accordion root. */\nexport const Accordion: FluidUiComponent<\"Accordion\"> =\n  createFluidUiComponent(\"Accordion\");\n/** Worker-safe Fluid accordion item. */\nexport const AccordionItem: FluidUiComponent<\"AccordionItem\"> =\n  createFluidUiComponent(\"AccordionItem\");\n/** Worker-safe Fluid accordion trigger. */\nexport const AccordionTrigger: FluidUiComponent<\"AccordionTrigger\"> =\n  createFluidUiComponent(\"AccordionTrigger\");\n/** Worker-safe Fluid accordion content. */\nexport const AccordionContent: FluidUiComponent<\"AccordionContent\"> =\n  createFluidUiComponent(\"AccordionContent\");\n/** Worker-safe Fluid alert. */\nexport const Alert: FluidUiComponent<\"Alert\"> = createFluidUiComponent(\"Alert\");\n/** Worker-safe Fluid alert title. */\nexport const AlertTitle: FluidUiComponent<\"AlertTitle\"> =\n  createFluidUiComponent(\"AlertTitle\");\n/** Worker-safe Fluid alert description. */\nexport const AlertDescription: FluidUiComponent<\"AlertDescription\"> =\n  createFluidUiComponent(\"AlertDescription\");\n/** Worker-safe Fluid alert dialog root. */\nexport const AlertDialog: FluidUiComponent<\"AlertDialog\"> =\n  createFluidUiComponent(\"AlertDialog\");\n/** Worker-safe Fluid alert dialog trigger. */\nexport const AlertDialogTrigger: FluidUiComponent<\"AlertDialogTrigger\"> =\n  createFluidUiComponent(\"AlertDialogTrigger\");\n/** Worker-safe Fluid alert dialog content. */\nexport const AlertDialogContent: FluidUiComponent<\"AlertDialogContent\"> =\n  createFluidUiComponent(\"AlertDialogContent\");\n/** Worker-safe Fluid alert dialog header. */\nexport const AlertDialogHeader: FluidUiComponent<\"AlertDialogHeader\"> =\n  createFluidUiComponent(\"AlertDialogHeader\");\n/** Worker-safe Fluid alert dialog footer. */\nexport const AlertDialogFooter: FluidUiComponent<\"AlertDialogFooter\"> =\n  createFluidUiComponent(\"AlertDialogFooter\");\n/** Worker-safe Fluid alert dialog title. */\nexport const AlertDialogTitle: FluidUiComponent<\"AlertDialogTitle\"> =\n  createFluidUiComponent(\"AlertDialogTitle\");\n/** Worker-safe Fluid alert dialog description. */\nexport const AlertDialogDescription: FluidUiComponent<\"AlertDialogDescription\"> =\n  createFluidUiComponent(\"AlertDialogDescription\");\n/** Worker-safe Fluid alert dialog media region. */\nexport const AlertDialogMedia: FluidUiComponent<\"AlertDialogMedia\"> =\n  createFluidUiComponent(\"AlertDialogMedia\");\n/** Worker-safe Fluid alert dialog action. */\nexport const AlertDialogAction: FluidUiComponent<\"AlertDialogAction\"> =\n  createFluidUiComponent(\"AlertDialogAction\");\n/** Worker-safe Fluid alert dialog cancel action. */\nexport const AlertDialogCancel: FluidUiComponent<\"AlertDialogCancel\"> =\n  createFluidUiComponent(\"AlertDialogCancel\");\n/** Worker-safe Fluid avatar root. */\nexport const Avatar: FluidUiComponent<\"Avatar\"> =\n  createFluidUiComponent(\"Avatar\");\n/** Worker-safe Fluid avatar image. */\nexport const AvatarImage: FluidUiComponent<\"AvatarImage\"> =\n  createFluidUiComponent(\"AvatarImage\");\n/** Worker-safe Fluid avatar fallback. */\nexport const AvatarFallback: FluidUiComponent<\"AvatarFallback\"> =\n  createFluidUiComponent(\"AvatarFallback\");\n/** Worker-safe Fluid avatar badge. */\nexport const AvatarBadge: FluidUiComponent<\"AvatarBadge\"> =\n  createFluidUiComponent(\"AvatarBadge\");\n/** Worker-safe Fluid avatar group. */\nexport const AvatarGroup: FluidUiComponent<\"AvatarGroup\"> =\n  createFluidUiComponent(\"AvatarGroup\");\n/** Worker-safe Fluid avatar group count. */\nexport const AvatarGroupCount: FluidUiComponent<\"AvatarGroupCount\"> =\n  createFluidUiComponent(\"AvatarGroupCount\");\n/** Worker-safe Fluid badge. */\nexport const Badge: FluidUiComponent<\"Badge\"> = createFluidUiComponent(\"Badge\");\n/** Worker-safe Fluid breadcrumb root. */\nexport const Breadcrumb: FluidUiComponent<\"Breadcrumb\"> =\n  createFluidUiComponent(\"Breadcrumb\");\n/** Worker-safe Fluid breadcrumb list. */\nexport const BreadcrumbList: FluidUiComponent<\"BreadcrumbList\"> =\n  createFluidUiComponent(\"BreadcrumbList\");\n/** Worker-safe Fluid breadcrumb item. */\nexport const BreadcrumbItem: FluidUiComponent<\"BreadcrumbItem\"> =\n  createFluidUiComponent(\"BreadcrumbItem\");\n/** Worker-safe Fluid breadcrumb link. */\nexport const BreadcrumbLink: FluidUiComponent<\"BreadcrumbLink\"> =\n  createFluidUiComponent(\"BreadcrumbLink\");\n/** Worker-safe Fluid breadcrumb page. */\nexport const BreadcrumbPage: FluidUiComponent<\"BreadcrumbPage\"> =\n  createFluidUiComponent(\"BreadcrumbPage\");\n/** Worker-safe Fluid breadcrumb separator. */\nexport const BreadcrumbSeparator: FluidUiComponent<\"BreadcrumbSeparator\"> =\n  createFluidUiComponent(\"BreadcrumbSeparator\");\n/** Worker-safe Fluid breadcrumb overflow marker. */\nexport const BreadcrumbEllipsis: FluidUiComponent<\"BreadcrumbEllipsis\"> =\n  createFluidUiComponent(\"BreadcrumbEllipsis\");\n/** Worker-safe Fluid button. */\nexport const Button: FluidUiComponent<\"Button\"> =\n  createFluidUiComponent(\"Button\");\n/** Worker-safe Fluid single-date calendar with ISO date props. */\nexport const Calendar: FluidUiComponent<\"Calendar\"> =\n  createFluidUiComponent(\"Calendar\");\n/** Worker-safe Fluid checkbox. */\nexport const Checkbox: FluidUiComponent<\"Checkbox\"> =\n  createFluidUiComponent(\"Checkbox\");\n/** Worker-safe Fluid card root. */\nexport const Card: FluidUiComponent<\"Card\"> = createFluidUiComponent(\"Card\");\n/** Worker-safe Fluid card header. */\nexport const CardHeader: FluidUiComponent<\"CardHeader\"> =\n  createFluidUiComponent(\"CardHeader\");\n/** Worker-safe Fluid card footer. */\nexport const CardFooter: FluidUiComponent<\"CardFooter\"> =\n  createFluidUiComponent(\"CardFooter\");\n/** Worker-safe Fluid card title. */\nexport const CardTitle: FluidUiComponent<\"CardTitle\"> =\n  createFluidUiComponent(\"CardTitle\");\n/** Worker-safe Fluid card action region. */\nexport const CardAction: FluidUiComponent<\"CardAction\"> =\n  createFluidUiComponent(\"CardAction\");\n/** Worker-safe Fluid card description. */\nexport const CardDescription: FluidUiComponent<\"CardDescription\"> =\n  createFluidUiComponent(\"CardDescription\");\n/** Worker-safe Fluid card content. */\nexport const CardContent: FluidUiComponent<\"CardContent\"> =\n  createFluidUiComponent(\"CardContent\");\n/** Worker-safe Fluid collapsible root. */\nexport const Collapsible: FluidUiComponent<\"Collapsible\"> =\n  createFluidUiComponent(\"Collapsible\");\n/** Worker-safe Fluid collapsible trigger. */\nexport const CollapsibleTrigger: FluidUiComponent<\"CollapsibleTrigger\"> =\n  createFluidUiComponent(\"CollapsibleTrigger\");\n/** Worker-safe Fluid collapsible content. */\nexport const CollapsibleContent: FluidUiComponent<\"CollapsibleContent\"> =\n  createFluidUiComponent(\"CollapsibleContent\");\n/** Worker-safe Fluid command root. */\nexport const Command: FluidUiComponent<\"Command\"> =\n  createFluidUiComponent(\"Command\");\n/** Worker-safe Fluid command input. */\nexport const CommandInput: FluidUiComponent<\"CommandInput\"> =\n  createFluidUiComponent(\"CommandInput\");\n/** Worker-safe Fluid command list. */\nexport const CommandList: FluidUiComponent<\"CommandList\"> =\n  createFluidUiComponent(\"CommandList\");\n/** Worker-safe Fluid command empty state. */\nexport const CommandEmpty: FluidUiComponent<\"CommandEmpty\"> =\n  createFluidUiComponent(\"CommandEmpty\");\n/** Worker-safe Fluid command group. */\nexport const CommandGroup: FluidUiComponent<\"CommandGroup\"> =\n  createFluidUiComponent(\"CommandGroup\");\n/** Worker-safe Fluid command item. */\nexport const CommandItem: FluidUiComponent<\"CommandItem\"> =\n  createFluidUiComponent(\"CommandItem\");\n/** Worker-safe Fluid command keyboard shortcut. */\nexport const CommandShortcut: FluidUiComponent<\"CommandShortcut\"> =\n  createFluidUiComponent(\"CommandShortcut\");\n/** Worker-safe Fluid command separator. */\nexport const CommandSeparator: FluidUiComponent<\"CommandSeparator\"> =\n  createFluidUiComponent(\"CommandSeparator\");\n/** Worker-safe Fluid date picker with an ISO date value. */\nexport const DatePicker: FluidUiComponent<\"DatePicker\"> =\n  createFluidUiComponent(\"DatePicker\");\n/** Worker-safe Fluid dialog root. */\nexport const Dialog: FluidUiComponent<\"Dialog\"> =\n  createFluidUiComponent(\"Dialog\");\n/** Worker-safe Fluid dialog trigger. */\nexport const DialogTrigger: FluidUiComponent<\"DialogTrigger\"> =\n  createFluidUiComponent(\"DialogTrigger\");\n/** Worker-safe Fluid dialog content contained by the widget. */\nexport const DialogContent: FluidUiComponent<\"DialogContent\"> =\n  createFluidUiComponent(\"DialogContent\");\n/** Worker-safe Fluid dialog header. */\nexport const DialogHeader: FluidUiComponent<\"DialogHeader\"> =\n  createFluidUiComponent(\"DialogHeader\");\n/** Worker-safe Fluid dialog footer. */\nexport const DialogFooter: FluidUiComponent<\"DialogFooter\"> =\n  createFluidUiComponent(\"DialogFooter\");\n/** Worker-safe Fluid dialog title. */\nexport const DialogTitle: FluidUiComponent<\"DialogTitle\"> =\n  createFluidUiComponent(\"DialogTitle\");\n/** Worker-safe Fluid dialog description. */\nexport const DialogDescription: FluidUiComponent<\"DialogDescription\"> =\n  createFluidUiComponent(\"DialogDescription\");\n/** Worker-safe Fluid dialog close action. */\nexport const DialogClose: FluidUiComponent<\"DialogClose\"> =\n  createFluidUiComponent(\"DialogClose\");\n/** Worker-safe Fluid dropdown menu root. */\nexport const DropdownMenu: FluidUiComponent<\"DropdownMenu\"> =\n  createFluidUiComponent(\"DropdownMenu\");\n/** Worker-safe Fluid dropdown menu trigger. */\nexport const DropdownMenuTrigger: FluidUiComponent<\"DropdownMenuTrigger\"> =\n  createFluidUiComponent(\"DropdownMenuTrigger\");\n/** Worker-safe Fluid dropdown menu content contained by the widget. */\nexport const DropdownMenuContent: FluidUiComponent<\"DropdownMenuContent\"> =\n  createFluidUiComponent(\"DropdownMenuContent\");\n/** Worker-safe Fluid dropdown menu group. */\nexport const DropdownMenuGroup: FluidUiComponent<\"DropdownMenuGroup\"> =\n  createFluidUiComponent(\"DropdownMenuGroup\");\n/** Worker-safe Fluid dropdown menu label. */\nexport const DropdownMenuLabel: FluidUiComponent<\"DropdownMenuLabel\"> =\n  createFluidUiComponent(\"DropdownMenuLabel\");\n/** Worker-safe Fluid dropdown menu item. */\nexport const DropdownMenuItem: FluidUiComponent<\"DropdownMenuItem\"> =\n  createFluidUiComponent(\"DropdownMenuItem\");\n/** Worker-safe Fluid dropdown menu checkbox item. */\nexport const DropdownMenuCheckboxItem: FluidUiComponent<\"DropdownMenuCheckboxItem\"> =\n  createFluidUiComponent(\"DropdownMenuCheckboxItem\");\n/** Worker-safe Fluid dropdown menu radio group. */\nexport const DropdownMenuRadioGroup: FluidUiComponent<\"DropdownMenuRadioGroup\"> =\n  createFluidUiComponent(\"DropdownMenuRadioGroup\");\n/** Worker-safe Fluid dropdown menu radio item. */\nexport const DropdownMenuRadioItem: FluidUiComponent<\"DropdownMenuRadioItem\"> =\n  createFluidUiComponent(\"DropdownMenuRadioItem\");\n/** Worker-safe Fluid dropdown menu separator. */\nexport const DropdownMenuSeparator: FluidUiComponent<\"DropdownMenuSeparator\"> =\n  createFluidUiComponent(\"DropdownMenuSeparator\");\n/** Worker-safe Fluid dropdown menu keyboard shortcut. */\nexport const DropdownMenuShortcut: FluidUiComponent<\"DropdownMenuShortcut\"> =\n  createFluidUiComponent(\"DropdownMenuShortcut\");\n/** Worker-safe Fluid dropdown submenu root. */\nexport const DropdownMenuSub: FluidUiComponent<\"DropdownMenuSub\"> =\n  createFluidUiComponent(\"DropdownMenuSub\");\n/** Worker-safe Fluid dropdown submenu trigger. */\nexport const DropdownMenuSubTrigger: FluidUiComponent<\"DropdownMenuSubTrigger\"> =\n  createFluidUiComponent(\"DropdownMenuSubTrigger\");\n/** Worker-safe Fluid dropdown submenu content contained by the widget. */\nexport const DropdownMenuSubContent: FluidUiComponent<\"DropdownMenuSubContent\"> =\n  createFluidUiComponent(\"DropdownMenuSubContent\");\n/** Worker-safe Fluid text input with string change events. */\nexport const Input: FluidUiComponent<\"Input\"> = createFluidUiComponent(\"Input\");\n/** Worker-safe Fluid label. */\nexport const Label: FluidUiComponent<\"Label\"> = createFluidUiComponent(\"Label\");\n/** Worker-safe Fluid pagination root. */\nexport const Pagination: FluidUiComponent<\"Pagination\"> =\n  createFluidUiComponent(\"Pagination\");\n/** Worker-safe Fluid pagination content. */\nexport const PaginationContent: FluidUiComponent<\"PaginationContent\"> =\n  createFluidUiComponent(\"PaginationContent\");\n/** Worker-safe Fluid pagination item. */\nexport const PaginationItem: FluidUiComponent<\"PaginationItem\"> =\n  createFluidUiComponent(\"PaginationItem\");\n/** Worker-safe Fluid pagination link. */\nexport const PaginationLink: FluidUiComponent<\"PaginationLink\"> =\n  createFluidUiComponent(\"PaginationLink\");\n/** Worker-safe Fluid previous-page link. */\nexport const PaginationPrevious: FluidUiComponent<\"PaginationPrevious\"> =\n  createFluidUiComponent(\"PaginationPrevious\");\n/** Worker-safe Fluid next-page link. */\nexport const PaginationNext: FluidUiComponent<\"PaginationNext\"> =\n  createFluidUiComponent(\"PaginationNext\");\n/** Worker-safe Fluid pagination overflow marker. */\nexport const PaginationEllipsis: FluidUiComponent<\"PaginationEllipsis\"> =\n  createFluidUiComponent(\"PaginationEllipsis\");\n/** Worker-safe Fluid popover root. */\nexport const Popover: FluidUiComponent<\"Popover\"> =\n  createFluidUiComponent(\"Popover\");\n/** Worker-safe Fluid popover trigger. */\nexport const PopoverTrigger: FluidUiComponent<\"PopoverTrigger\"> =\n  createFluidUiComponent(\"PopoverTrigger\");\n/** Worker-safe Fluid popover anchor. */\nexport const PopoverAnchor: FluidUiComponent<\"PopoverAnchor\"> =\n  createFluidUiComponent(\"PopoverAnchor\");\n/** Worker-safe Fluid popover content contained by the widget. */\nexport const PopoverContent: FluidUiComponent<\"PopoverContent\"> =\n  createFluidUiComponent(\"PopoverContent\");\n/** Worker-safe Fluid popover header. */\nexport const PopoverHeader: FluidUiComponent<\"PopoverHeader\"> =\n  createFluidUiComponent(\"PopoverHeader\");\n/** Worker-safe Fluid popover title. */\nexport const PopoverTitle: FluidUiComponent<\"PopoverTitle\"> =\n  createFluidUiComponent(\"PopoverTitle\");\n/** Worker-safe Fluid popover description. */\nexport const PopoverDescription: FluidUiComponent<\"PopoverDescription\"> =\n  createFluidUiComponent(\"PopoverDescription\");\n/** Worker-safe Fluid progress indicator. */\nexport const Progress: FluidUiComponent<\"Progress\"> =\n  createFluidUiComponent(\"Progress\");\n/** Worker-safe Fluid radio group. */\nexport const RadioGroup: FluidUiComponent<\"RadioGroup\"> =\n  createFluidUiComponent(\"RadioGroup\");\n/** Worker-safe Fluid radio group item. */\nexport const RadioGroupItem: FluidUiComponent<\"RadioGroupItem\"> =\n  createFluidUiComponent(\"RadioGroupItem\");\n/** Worker-safe Fluid scroll area. */\nexport const ScrollArea: FluidUiComponent<\"ScrollArea\"> =\n  createFluidUiComponent(\"ScrollArea\");\n/** Worker-safe Fluid scroll bar. */\nexport const ScrollBar: FluidUiComponent<\"ScrollBar\"> =\n  createFluidUiComponent(\"ScrollBar\");\n/** Worker-safe Fluid select root. */\nexport const Select: FluidUiComponent<\"Select\"> =\n  createFluidUiComponent(\"Select\");\n/** Worker-safe Fluid select group. */\nexport const SelectGroup: FluidUiComponent<\"SelectGroup\"> =\n  createFluidUiComponent(\"SelectGroup\");\n/** Worker-safe Fluid select value. */\nexport const SelectValue: FluidUiComponent<\"SelectValue\"> =\n  createFluidUiComponent(\"SelectValue\");\n/** Worker-safe Fluid select trigger. */\nexport const SelectTrigger: FluidUiComponent<\"SelectTrigger\"> =\n  createFluidUiComponent(\"SelectTrigger\");\n/** Worker-safe Fluid select content contained by the widget. */\nexport const SelectContent: FluidUiComponent<\"SelectContent\"> =\n  createFluidUiComponent(\"SelectContent\");\n/** Worker-safe Fluid select label. */\nexport const SelectLabel: FluidUiComponent<\"SelectLabel\"> =\n  createFluidUiComponent(\"SelectLabel\");\n/** Worker-safe Fluid select item. */\nexport const SelectItem: FluidUiComponent<\"SelectItem\"> =\n  createFluidUiComponent(\"SelectItem\");\n/** Worker-safe Fluid select separator. */\nexport const SelectSeparator: FluidUiComponent<\"SelectSeparator\"> =\n  createFluidUiComponent(\"SelectSeparator\");\n/** Worker-safe Fluid select scroll-up control. */\nexport const SelectScrollUpButton: FluidUiComponent<\"SelectScrollUpButton\"> =\n  createFluidUiComponent(\"SelectScrollUpButton\");\n/** Worker-safe Fluid select scroll-down control. */\nexport const SelectScrollDownButton: FluidUiComponent<\"SelectScrollDownButton\"> =\n  createFluidUiComponent(\"SelectScrollDownButton\");\n/** Worker-safe Fluid separator. */\nexport const Separator: FluidUiComponent<\"Separator\"> =\n  createFluidUiComponent(\"Separator\");\n/** Worker-safe Fluid sheet root. */\nexport const Sheet: FluidUiComponent<\"Sheet\"> = createFluidUiComponent(\"Sheet\");\n/** Worker-safe Fluid sheet trigger. */\nexport const SheetTrigger: FluidUiComponent<\"SheetTrigger\"> =\n  createFluidUiComponent(\"SheetTrigger\");\n/** Worker-safe Fluid sheet content contained by the widget. */\nexport const SheetContent: FluidUiComponent<\"SheetContent\"> =\n  createFluidUiComponent(\"SheetContent\");\n/** Worker-safe Fluid sheet header. */\nexport const SheetHeader: FluidUiComponent<\"SheetHeader\"> =\n  createFluidUiComponent(\"SheetHeader\");\n/** Worker-safe Fluid sheet footer. */\nexport const SheetFooter: FluidUiComponent<\"SheetFooter\"> =\n  createFluidUiComponent(\"SheetFooter\");\n/** Worker-safe Fluid sheet title. */\nexport const SheetTitle: FluidUiComponent<\"SheetTitle\"> =\n  createFluidUiComponent(\"SheetTitle\");\n/** Worker-safe Fluid sheet description. */\nexport const SheetDescription: FluidUiComponent<\"SheetDescription\"> =\n  createFluidUiComponent(\"SheetDescription\");\n/** Worker-safe Fluid sheet close action. */\nexport const SheetClose: FluidUiComponent<\"SheetClose\"> =\n  createFluidUiComponent(\"SheetClose\");\n/** Worker-safe Fluid skeleton placeholder. */\nexport const Skeleton: FluidUiComponent<\"Skeleton\"> =\n  createFluidUiComponent(\"Skeleton\");\n/** Worker-safe Fluid slider. */\nexport const Slider: FluidUiComponent<\"Slider\"> =\n  createFluidUiComponent(\"Slider\");\n/** Worker-safe Fluid spinner. */\nexport const Spinner: FluidUiComponent<\"Spinner\"> =\n  createFluidUiComponent(\"Spinner\");\n/** Worker-safe Fluid spinner with status text. */\nexport const SpinnerWithText: FluidUiComponent<\"SpinnerWithText\"> =\n  createFluidUiComponent(\"SpinnerWithText\");\n/** Worker-safe Fluid switch. */\nexport const Switch: FluidUiComponent<\"Switch\"> =\n  createFluidUiComponent(\"Switch\");\n/** Worker-safe Fluid table root. */\nexport const Table: FluidUiComponent<\"Table\"> = createFluidUiComponent(\"Table\");\n/** Worker-safe Fluid table header. */\nexport const TableHeader: FluidUiComponent<\"TableHeader\"> =\n  createFluidUiComponent(\"TableHeader\");\n/** Worker-safe Fluid table body. */\nexport const TableBody: FluidUiComponent<\"TableBody\"> =\n  createFluidUiComponent(\"TableBody\");\n/** Worker-safe Fluid table footer. */\nexport const TableFooter: FluidUiComponent<\"TableFooter\"> =\n  createFluidUiComponent(\"TableFooter\");\n/** Worker-safe Fluid table row. */\nexport const TableRow: FluidUiComponent<\"TableRow\"> =\n  createFluidUiComponent(\"TableRow\");\n/** Worker-safe Fluid table heading cell. */\nexport const TableHead: FluidUiComponent<\"TableHead\"> =\n  createFluidUiComponent(\"TableHead\");\n/** Worker-safe Fluid table data cell. */\nexport const TableCell: FluidUiComponent<\"TableCell\"> =\n  createFluidUiComponent(\"TableCell\");\n/** Worker-safe Fluid table caption. */\nexport const TableCaption: FluidUiComponent<\"TableCaption\"> =\n  createFluidUiComponent(\"TableCaption\");\n/** Worker-safe Fluid tabs root. */\nexport const Tabs: FluidUiComponent<\"Tabs\"> = createFluidUiComponent(\"Tabs\");\n/** Worker-safe Fluid tabs list. */\nexport const TabsList: FluidUiComponent<\"TabsList\"> =\n  createFluidUiComponent(\"TabsList\");\n/** Worker-safe Fluid tabs trigger. */\nexport const TabsTrigger: FluidUiComponent<\"TabsTrigger\"> =\n  createFluidUiComponent(\"TabsTrigger\");\n/** Worker-safe Fluid tabs content. */\nexport const TabsContent: FluidUiComponent<\"TabsContent\"> =\n  createFluidUiComponent(\"TabsContent\");\n/** Worker-safe Fluid multiline text input with string change events. */\nexport const Textarea: FluidUiComponent<\"Textarea\"> =\n  createFluidUiComponent(\"Textarea\");\n/** Worker-safe Fluid toggle. */\nexport const Toggle: FluidUiComponent<\"Toggle\"> =\n  createFluidUiComponent(\"Toggle\");\n/** Worker-safe Fluid toggle group. */\nexport const ToggleGroup: FluidUiComponent<\"ToggleGroup\"> =\n  createFluidUiComponent(\"ToggleGroup\");\n/** Worker-safe Fluid toggle group item. */\nexport const ToggleGroupItem: FluidUiComponent<\"ToggleGroupItem\"> =\n  createFluidUiComponent(\"ToggleGroupItem\");\n/** Worker-safe Fluid tooltip root. */\nexport const Tooltip: FluidUiComponent<\"Tooltip\"> =\n  createFluidUiComponent(\"Tooltip\");\n/** Worker-safe Fluid tooltip trigger. */\nexport const TooltipTrigger: FluidUiComponent<\"TooltipTrigger\"> =\n  createFluidUiComponent(\"TooltipTrigger\");\n/** Worker-safe Fluid tooltip content contained by the widget. */\nexport const TooltipContent: FluidUiComponent<\"TooltipContent\"> =\n  createFluidUiComponent(\"TooltipContent\");\n/** Worker-safe Fluid combobox. */\nexport const Combobox: FluidUiComponent<\"Combobox\"> =\n  createFluidUiComponent(\"Combobox\");\n/** Worker-safe Fluid infinite-scroll sentinel. */\nexport const InfiniteScrollSentinel: FluidUiComponent<\"InfiniteScrollSentinel\"> =\n  createFluidUiComponent(\"InfiniteScrollSentinel\");\n/** Worker-safe Fluid phone input. */\nexport const PhoneInput: FluidUiComponent<\"PhoneInput\"> =\n  createFluidUiComponent(\"PhoneInput\");\n"],"mappings":"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"}