{"version":3,"file":"vendure-admin-ui-react.mjs","sources":["../../src/lib/react/src/directives/react-component-host.directive.ts","../../src/lib/react/src/components/react-custom-column.component.ts","../../src/lib/react/src/components/react-custom-detail.component.ts","../../src/lib/react/src/components/react-form-input.component.ts","../../src/lib/react/src/components/react-route.component.ts","../../src/lib/react/src/react-components/ActionBar.tsx","../../src/lib/react/src/react-components/Card.tsx","../../src/lib/react/src/react-components/CdsIcon.tsx","../../src/lib/react/src/react-components/FormField.tsx","../../src/lib/react/src/react-hooks/use-injector.ts","../../src/lib/react/src/react-components/Link.tsx","../../src/lib/react/src/react-components/PageBlock.tsx","../../src/lib/react/src/react-components/PageDetailLayout.tsx","../../src/lib/react/src/react-hooks/use-rich-text-editor.ts","../../src/lib/react/src/react-components/RichTextEditor.tsx","../../src/lib/react/src/react-hooks/use-detail-component-data.ts","../../src/lib/react/src/react-hooks/use-form-control.ts","../../src/lib/react/src/react-hooks/use-page-metadata.ts","../../src/lib/react/src/react-hooks/use-query.ts","../../src/lib/react/src/react-hooks/use-route-params.ts","../../src/lib/react/src/register-react-custom-detail-component.ts","../../src/lib/react/src/register-react-data-table-component.ts","../../src/lib/react/src/register-react-form-input-component.ts","../../src/lib/react/src/register-react-route-component.ts","../../src/lib/react/src/public_api.ts","../../src/lib/react/src/vendure-admin-ui-react.ts"],"sourcesContent":["import { Directive, ElementRef, Injector, Input, Optional } from '@angular/core';\nimport { PageMetadataService } from '@vendure/admin-ui/core';\nimport { ComponentProps, createContext, createElement, ElementType } from 'react';\nimport { createRoot, Root } from 'react-dom/client';\nimport { HostedReactComponentContext } from '../types';\n\nexport const HostedComponentContext = createContext<HostedReactComponentContext | null>(null);\n\n/**\n * Based on https://netbasal.com/using-react-in-angular-applications-1bb907ecac91\n */\n@Directive({\n    selector: '[vdrReactComponentHost]',\n    standalone: true,\n})\nexport class ReactComponentHostDirective<Comp extends ElementType> {\n    @Input('vdrReactComponentHost') reactComponent: Comp;\n    @Input() props: ComponentProps<Comp>;\n    @Input() context: Record<string, any> = {};\n\n    private root: Root | null = null;\n\n    constructor(\n        private host: ElementRef,\n        private injector: Injector,\n        @Optional() private pageMetadataService?: PageMetadataService,\n    ) {}\n\n    async ngOnChanges() {\n        const Comp = this.reactComponent;\n\n        if (!this.root) {\n            this.root = createRoot(this.host.nativeElement);\n        }\n\n        this.root.render(\n            createElement(\n                HostedComponentContext.Provider,\n                {\n                    value: {\n                        ...this.props,\n                        ...this.context,\n                        injector: this.injector,\n                        pageMetadataService: this.pageMetadataService,\n                    },\n                },\n                createElement(Comp, this.props),\n            ) as any,\n        );\n    }\n\n    ngOnDestroy() {\n        this.root?.unmount();\n    }\n}\n","import { Component, inject, InjectionToken, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CustomColumnComponent } from '@vendure/admin-ui/core';\nimport { ElementType } from 'react';\nimport { ReactComponentHostDirective } from '../directives/react-component-host.directive';\n\nexport const REACT_CUSTOM_COLUMN_COMPONENT_OPTIONS = new InjectionToken<{\n    component: ElementType;\n    props?: Record<string, any>;\n}>('REACT_CUSTOM_COLUMN_COMPONENT_OPTIONS');\n\n@Component({\n    selector: 'vdr-react-custom-column-component',\n    template: ` <div [vdrReactComponentHost]=\"reactComponent\" [props]=\"props\"></div> `,\n    styleUrls: ['./react-global-styles.scss'],\n    encapsulation: ViewEncapsulation.None,\n    imports: [ReactComponentHostDirective]\n})\nexport class ReactCustomColumnComponent implements CustomColumnComponent, OnInit {\n    @Input() rowItem: any;\n\n    protected reactComponent = inject(REACT_CUSTOM_COLUMN_COMPONENT_OPTIONS).component;\n    private options = inject(REACT_CUSTOM_COLUMN_COMPONENT_OPTIONS);\n    protected props: Record<string, any>;\n\n    ngOnInit() {\n        this.props = {\n            rowItem: this.rowItem,\n            ...(this.options.props ?? {}),\n        };\n    }\n}\n","import { Component, inject, InjectionToken, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormGroup, UntypedFormGroup } from '@angular/forms';\nimport { CustomDetailComponent } from '@vendure/admin-ui/core';\nimport { ElementType } from 'react';\nimport { Observable } from 'rxjs';\nimport { ReactComponentHostDirective } from '../directives/react-component-host.directive';\n\nexport const REACT_CUSTOM_DETAIL_COMPONENT_OPTIONS = new InjectionToken<{\n    component: ElementType;\n    props?: Record<string, any>;\n}>('REACT_CUSTOM_DETAIL_COMPONENT_OPTIONS');\n\nexport interface ReactCustomDetailComponentContext {\n    detailForm: FormGroup;\n    entity$: Observable<any>;\n}\n\n@Component({\n    selector: 'vdr-react-custom-detail-component',\n    template: ` <div [vdrReactComponentHost]=\"reactComponent\" [context]=\"context\" [props]=\"props\"></div> `,\n    styleUrls: ['./react-global-styles.scss'],\n    encapsulation: ViewEncapsulation.None,\n    imports: [ReactComponentHostDirective]\n})\nexport class ReactCustomDetailComponent implements CustomDetailComponent, OnInit {\n    detailForm: UntypedFormGroup;\n    entity$: Observable<any>;\n    protected props = inject(REACT_CUSTOM_DETAIL_COMPONENT_OPTIONS).props ?? {};\n    protected reactComponent = inject(REACT_CUSTOM_DETAIL_COMPONENT_OPTIONS).component;\n    protected context: ReactCustomDetailComponentContext;\n\n    ngOnInit() {\n        this.context = {\n            detailForm: this.detailForm,\n            entity$: this.entity$,\n        };\n    }\n}\n","import { Component, inject, InjectionToken, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { CustomField, FormInputComponent } from '@vendure/admin-ui/core';\nimport { ElementType } from 'react';\nimport { ReactComponentHostDirective } from '../directives/react-component-host.directive';\nimport { ReactFormInputOptions } from '../types';\n\nexport const REACT_INPUT_COMPONENT_OPTIONS = new InjectionToken<{\n    component: ElementType;\n}>('REACT_INPUT_COMPONENT_OPTIONS');\n\n@Component({\n    selector: 'vdr-react-form-input-component',\n    template: ` <div [vdrReactComponentHost]=\"reactComponent\" [context]=\"context\" [props]=\"context\"></div> `,\n    styleUrls: ['./react-global-styles.scss'],\n    encapsulation: ViewEncapsulation.None,\n    imports: [ReactComponentHostDirective]\n})\nexport class ReactFormInputComponent implements FormInputComponent, OnInit {\n    static readonly id: string = 'react-form-input-component';\n    readonly: boolean;\n    formControl: FormControl;\n    config: CustomField & Record<string, any>;\n\n    protected context: ReactFormInputOptions;\n\n    protected reactComponent = inject(REACT_INPUT_COMPONENT_OPTIONS).component;\n\n    ngOnInit() {\n        this.context = {\n            formControl: this.formControl,\n            readonly: this.readonly,\n            config: this.config,\n        };\n    }\n}\n","import { Component, inject, InjectionToken, ViewEncapsulation } from '@angular/core';\nimport { ROUTE_COMPONENT_OPTIONS, RouteComponent, SharedModule } from '@vendure/admin-ui/core';\nimport { ReactComponentHostDirective } from '../directives/react-component-host.directive';\nimport { ReactRouteComponentOptions } from '../types';\n\nexport const REACT_ROUTE_COMPONENT_OPTIONS = new InjectionToken<ReactRouteComponentOptions>(\n    'REACT_ROUTE_COMPONENT_OPTIONS',\n);\n\n@Component({\n    selector: 'vdr-react-route-component',\n    template: `\n        <vdr-route-component\n            ><div [vdrReactComponentHost]=\"reactComponent\" [props]=\"props\"></div\n        ></vdr-route-component>\n    `,\n    styleUrls: ['./react-global-styles.scss'],\n    encapsulation: ViewEncapsulation.None,\n    imports: [ReactComponentHostDirective, RouteComponent, SharedModule]\n})\nexport class ReactRouteComponent {\n    protected props = inject(REACT_ROUTE_COMPONENT_OPTIONS).props;\n    protected reactComponent = inject(ROUTE_COMPONENT_OPTIONS).component;\n}\n","import React, { PropsWithChildren, ReactNode } from 'react';\n\n/**\n * @description\n * A container for the primary actions on a list or detail page\n *\n * @example\n * ```ts\n * import { ActionBar } from '@vendure/admin-ui/react';\n *\n * export function MyComponent() {\n *   return (\n *     <ActionBar leftContent={<div>Optional left content</div>}>\n *       <button className='button primary'>Primary action</button>\n *     </ActionBar>\n *   );\n * }\n * ```\n *\n * @docsCategory react-components\n */\nexport function ActionBar(props: PropsWithChildren<{ leftContent?: ReactNode }>) {\n    return (\n        <div className={'vdr-action-bar'}>\n            <div className=\"left-content\">{props.leftContent}</div>\n            <div className=\"right-content\">{props.children}</div>\n        </div>\n    );\n}\n","import React, { PropsWithChildren } from 'react';\n\n/**\n * @description\n * A card component which can be used to group related content.\n *\n * @example\n * ```ts\n * import { Card } from '@vendure/admin-ui/react';\n *\n * export function MyComponent() {\n *   return (\n *     <Card title='My Title'>\n *       <p>Some content</p>\n *     </Card>\n *   );\n * }\n * ```\n *\n * @docsCategory react-components\n */\nexport function Card(props: PropsWithChildren<{ title?: string; paddingX?: boolean }>) {\n    return (\n        <div className={'vdr-card'}>\n            <div className={`card-container ${props.paddingX !== false ? 'padding-x' : ''}`}>\n                {props.title && (\n                    <div className={'title-row'}>\n                        <div className=\"title\">{props.title}</div>\n                    </div>\n                )}\n                <div className=\"contents\">{props.children}</div>\n            </div>\n        </div>\n    );\n}\n","import { ClarityIcons } from '@cds/core/icon';\nimport { IconShapeTuple } from '@cds/core/icon/interfaces/icon.interfaces';\nimport React, { DOMAttributes, useEffect } from 'react';\n\ntype CustomElement<T> = Partial<T & DOMAttributes<T> & { children: any }>;\n\nexport interface CdsIconProps {\n    shape: string;\n    size: string | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';\n    direction: 'up' | 'down' | 'left' | 'right';\n    flip: 'horizontal' | 'vertical';\n    solid: boolean;\n    status: 'info' | 'success' | 'warning' | 'danger';\n    inverse: boolean;\n    badge: 'info' | 'success' | 'warning' | 'danger';\n}\n\ndeclare module 'react' {\n    namespace JSX {\n        interface IntrinsicElements {\n            ['cds-icon']: CustomElement<CdsIconProps>;\n        }\n    }\n}\n\nexport function registerCdsIcon(icon: IconShapeTuple) {\n    ClarityIcons.addIcons(icon);\n}\n\n/**\n * @description\n * A React wrapper for the Clarity UI icon component.\n *\n * @example\n * ```ts\n * import { userIcon } from '@cds/core/icon';\n * import { CdsIcon } from '@vendure/admin-ui/react';\n *\n * registerCdsIcon(userIcon);\n * export function MyComponent() {\n *    return <CdsIcon icon={userIcon} badge=\"warning\" solid size=\"lg\"></CdsIcon>;\n * }\n * ```\n *\n * @docsCategory react-components\n */\nexport function CdsIcon(props: { icon: IconShapeTuple; className?: string } & Partial<CdsIconProps>) {\n    const { icon, ...rest } = props;\n    useEffect(() => {\n        ClarityIcons.addIcons(icon);\n    }, [icon]);\n    return <cds-icon {...rest} shape={icon[0]}></cds-icon>;\n}\n","import React, { PropsWithChildren } from 'react';\n\n/**\n * @description\n * A wrapper around form fields which provides a label, tooltip and error message.\n *\n * @example\n * ```ts\n * import { FormField } from '@vendure/admin-ui/react';\n *\n * export function MyReactComponent() {\n *     return (\n *        <FormField label=\"My field\" tooltip=\"This is a tooltip\" invalid errorMessage=\"This field is invalid\">\n *            <input type=\"text\" />\n *        </FormField>\n *     );\n * }\n * ```\n *\n * @docsCategory react-components\n */\nexport function FormField(\n    props: PropsWithChildren<{\n        for?: string;\n        label?: string;\n        tooltip?: string;\n        invalid?: boolean;\n        errorMessage?: string;\n    }>,\n) {\n    return (\n        <div\n            className={`form-group ` + (!props.label ? 'no-label' : '') + (props.invalid ? 'clr-error' : '')}\n        >\n            {props.label && <label htmlFor={props.for ?? ''}>{props.label}</label>}\n            {props.tooltip && <div className=\"tooltip-text\">{props.tooltip}</div>}\n            <div className={`input-row ` + (props.invalid ? 'invalid' : '')}>{props.children}</div>\n            {props.errorMessage && <div className=\"error-message\">{props.errorMessage}</div>}\n        </div>\n    );\n}\n","import { ProviderToken } from '@angular/core';\nimport { useContext } from 'react';\nimport { HostedComponentContext } from '../directives/react-component-host.directive';\n\n/**\n * @description\n * Exposes the Angular injector which allows the injection of services into React components.\n *\n * @example\n * ```ts\n * import { useInjector } from '\\@vendure/admin-ui/react';\n * import { NotificationService } from '\\@vendure/admin-ui/core';\n *\n * export const MyComponent = () => {\n *     const notificationService = useInjector(NotificationService);\n *\n *     const handleClick = () => {\n *         notificationService.success('Hello world!');\n *     };\n *     // ...\n *     return <div>...</div>;\n * }\n * ```\n *\n * @docsCategory react-hooks\n */\nexport function useInjector<T = any>(token: ProviderToken<T>): T {\n    const context = useContext(HostedComponentContext);\n    const instance = context?.injector.get(token);\n    if (!instance) {\n        throw new Error(`Could not inject ${(token as any).name ?? token.toString()}`);\n    }\n    return instance;\n}\n","import { Router } from '@angular/router';\nimport React, { PropsWithChildren } from 'react';\nimport { useInjector } from '../react-hooks/use-injector';\n\n/**\n * @description\n * A React component which renders an anchor tag and navigates to the specified route when clicked.\n * This is useful when you want to use a React component in a Vendure UI plugin which navigates to\n * a route in the admin-ui.\n *\n * @example\n * ```ts\n * import { Link } from '@vendure/admin-ui/react';\n *\n * export const MyReactComponent = () => {\n *     return <Link href=\"/extensions/my-extension\">Go to my extension</Link>;\n * }\n * ```\n *\n * @docsCategory react-components\n */\nexport function Link(props: PropsWithChildren<{ href: string; [props: string]: any }>) {\n    const router = useInjector(Router);\n    const { href, ...rest } = props;\n\n    function onClick(e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) {\n        e.preventDefault();\n        void router.navigateByUrl(href);\n    }\n\n    return (\n        <a href={href} onClick={onClick} {...rest}>\n            {props.children}\n        </a>\n    );\n}\n","import React, { PropsWithChildren } from 'react';\n\n/**\n * @description\n * A container for page content which provides a consistent width and spacing.\n *\n * @example\n * ```ts\n * import { PageBlock } from '@vendure/admin-ui/react';\n *\n * export function MyComponent() {\n *   return (\n *     <PageBlock>\n *       ...\n *     </PageBlock>\n *   );\n * }\n * ```\n *\n * @docsCategory react-components\n */\nexport function PageBlock(props: PropsWithChildren) {\n    return <div className=\"page-block\">{props.children}</div>;\n}\n","import React, { PropsWithChildren, ReactNode } from 'react';\n\n/**\n * @description\n * A responsive container for detail views with a main content area and an optional sidebar.\n *\n * @example\n * ```ts\n * import { PageDetailLayout } from '@vendure/admin-ui/react';\n *\n * export function MyComponent() {\n *   return (\n *     <PageDetailLayout sidebar={<div>Sidebar content</div>}>\n *       <div>Main content</div>\n *     </PageDetailLayout>\n *   );\n * }\n * ```\n *\n * @docsCategory react-components\n */\nexport function PageDetailLayout(props: PropsWithChildren<{ sidebar?: ReactNode }>) {\n    return (\n        <div className={'vdr-page-detail-layout'}>\n            <div className=\"main\">{props.children}</div>\n            <div className=\"sidebar\">{props.sidebar}</div>\n        </div>\n    );\n}\n","import { useEffect, useRef } from 'react';\nimport { Injector } from '@angular/core';\n\nimport { CreateEditorViewOptions, ProsemirrorService, ContextMenuService } from '@vendure/admin-ui/core';\nimport { useInjector } from './use-injector';\n\nexport interface useRichTextEditorOptions extends Omit<CreateEditorViewOptions, 'element'> {\n    /**\n     * @description\n     * Control the DOM attributes of the editable element. May be either an object or a function going from an editor state to an object.\n     * By default, the element will get a class \"ProseMirror\", and will have its contentEditable attribute determined by the editable prop.\n     * Additional classes provided here will be added to the class. For other attributes, the value provided first (as in someProp) will be used.\n     * Copied from real property description.\n     */\n    attributes?: Record<string, string>;\n}\n\n/**\n * @description\n * Provides access to the ProseMirror (rich text editor) instance.\n *\n * @example\n * ```ts\n * import { useRichTextEditor } from '\\@vendure/admin-ui/react';\n * import React from 'react';\n *\n * export function Component() {\n *     const { ref, editor } = useRichTextEditor({\n *        attributes: { class: '' },\n *        onTextInput: (text) => console.log(text),\n *        isReadOnly: () => false,\n *     });\n *\n *     return <div className=\"w-full\" ref={ref} />\n * }\n * ```\n *\n * @docsCategory react-hooks\n */\nexport const useRichTextEditor = ({ attributes, onTextInput, isReadOnly }: useRichTextEditorOptions) => {\n    const injector = useInjector(Injector);\n    const ref = useRef<HTMLDivElement>(null);\n    const prosemirror = new ProsemirrorService(injector, useInjector(ContextMenuService));\n\n    useEffect(() => {\n        if (!ref.current) return;\n        prosemirror.createEditorView({\n            element: ref.current,\n            isReadOnly,\n            onTextInput,\n        });\n        const readOnly = isReadOnly();\n        prosemirror.editorView.setProps({\n            attributes,\n            editable: readOnly ? () => false : () => true,\n        });\n        return () => {\n            prosemirror.destroy();\n        };\n    }, [ref.current]);\n\n    return { ref, editor: prosemirror };\n};\n","import React, {\n    ChangeEvent,\n    ForwardedRef,\n    InputHTMLAttributes,\n    forwardRef,\n    useEffect,\n    useState,\n} from 'react';\nimport { ProsemirrorService } from '@vendure/admin-ui/core';\nimport { useRichTextEditor } from '../react-hooks/use-rich-text-editor';\n\nexport type RichTextEditorType = InputHTMLAttributes<HTMLInputElement> & {\n    /**\n     * @description\n     * Control the DOM attributes of the editable element. May be either an object or a function going from an editor state to an object.\n     * By default, the element will get a class \"ProseMirror\", and will have its contentEditable attribute determined by the editable prop.\n     * Additional classes provided here will be added to the class. For other attributes, the value provided first (as in someProp) will be used.\n     * Copied from real property description.\n     */\n    attributes?: Record<string, string>;\n    label?: string;\n    readOnly?: boolean;\n    onMount?: (editor: ProsemirrorService) => void;\n};\n\n/**\n * @description\n * A rich text editor component which uses ProseMirror (rich text editor) under the hood.\n *\n * @example\n * ```ts\n * import { RichTextEditor } from '@vendure/admin-ui/react';\n * import React from 'react';\n *\n * export function MyComponent() {\n *   const onSubmit = async (e: React.FormEvent) => {\n *     e.preventDefault();\n *     const form = new FormData(e.target as HTMLFormElement);\n *     const content = form.get(\"content\");\n *     console.log(content);\n *   };\n *\n *   return (\n *     <form className=\"w-full\" onSubmit={onSubmit}>\n *       <RichTextEditor\n *         name=\"content\"\n *         readOnly={false}\n *         onMount={(e) => console.log(\"Mounted\", e)}\n *       />\n *       <button type=\"submit\" className=\"btn btn-primary\">\n *         Submit\n *       </button>\n *     </form>\n *   );\n * }\n * ```\n *\n * @docsCategory react-components\n */\nexport const RichTextEditor = forwardRef((props: RichTextEditorType, ref: ForwardedRef<HTMLInputElement>) => {\n    const [data, setData] = useState<string>('');\n    const { readOnly, label, ...rest } = props;\n    const { ref: _ref, editor } = useRichTextEditor({\n        attributes: props.attributes,\n        isReadOnly: () => readOnly || false,\n        onTextInput: text => {\n            setData(text);\n            if (props.onChange) {\n                props.onChange({\n                    target: { value: text },\n                } as ChangeEvent<HTMLInputElement>);\n            }\n            if (ref && 'current' in ref && ref.current) {\n                ref.current.value = text;\n                const event = new Event('input', {\n                    bubbles: true,\n                    cancelable: true,\n                });\n                ref.current.dispatchEvent(event);\n            }\n        },\n    });\n\n    useEffect(() => {\n        if (props.onMount && editor) {\n            props.onMount(editor);\n        }\n        if (typeof props.defaultValue === 'string') {\n            editor.update(props.defaultValue);\n        }\n    }, []);\n    return (\n        <>\n            <div ref={_ref} {...rest}>\n                {label && <label className=\"rich-text-label\">{label}</label>}\n            </div>\n            <input type=\"hidden\" value={data} ref={ref} />\n        </>\n    );\n});\n\nRichTextEditor.displayName = 'RichTextEditor';\n","import { useContext, useEffect, useState } from 'react';\nimport { ReactCustomDetailComponentContext } from '../components/react-custom-detail.component';\nimport { HostedComponentContext } from '../directives/react-component-host.directive';\nimport { HostedReactComponentContext } from '../types';\n\n/**\n * @description\n * Provides the data available to React-based CustomDetailComponents.\n *\n * @example\n * ```ts\n * import { Card, useDetailComponentData } from '\\@vendure/admin-ui/react';\n * import React from 'react';\n *\n * export function CustomDetailComponent(props: any) {\n *     const { entity, detailForm } = useDetailComponentData();\n *     const updateName = () => {\n *         detailForm.get('name')?.setValue('New name');\n *         detailForm.markAsDirty();\n *     };\n *     return (\n *         <Card title={'Custom Detail Component'}>\n *             <button className=\"button\" onClick={updateName}>\n *                 Update name\n *             </button>\n *             <pre>{JSON.stringify(entity, null, 2)}</pre>\n *         </Card>\n *     );\n * }\n * ```\n *\n * @docsCategory react-hooks\n */\nexport function useDetailComponentData<T = any>() {\n    const context = useContext(\n        HostedComponentContext,\n    ) as HostedReactComponentContext<ReactCustomDetailComponentContext>;\n\n    if (!context.detailForm || !context.entity$) {\n        throw new Error(`The useDetailComponentData hook can only be used within a CustomDetailComponent`);\n    }\n\n    const [entity, setEntity] = useState<T | null>(null);\n\n    useEffect(() => {\n        const subscription = context.entity$.subscribe(value => {\n            setEntity(value);\n        });\n        return () => subscription.unsubscribe();\n    }, []);\n\n    return {\n        entity,\n        detailForm: context.detailForm,\n    };\n}\n","import { CustomFieldType } from '@vendure/common/lib/shared-types';\nimport { useContext, useEffect, useState } from 'react';\nimport { HostedComponentContext } from '../directives/react-component-host.directive';\nimport { HostedReactComponentContext, ReactFormInputOptions } from '../types';\n\n/**\n * @description\n * Provides access to the current FormControl value and a method to update the value.\n *\n * @example\n * ```ts\n * import { useFormControl, ReactFormInputProps } from '\\@vendure/admin-ui/react';\n * import React from 'react';\n *\n * export function ReactNumberInput({ readonly }: ReactFormInputProps) {\n *     const { value, setFormValue } = useFormControl();\n *\n *     const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n *         setFormValue(val);\n *     };\n *     return (\n *         <div>\n *             <input readOnly={readonly} type=\"number\" onChange={handleChange} value={value} />\n *         </div>\n *     );\n * }\n * ```\n *\n * @docsCategory react-hooks\n */\nexport function useFormControl() {\n    const context = useContext(HostedComponentContext);\n    if (!context) {\n        throw new Error('No HostedComponentContext found');\n    }\n    if (!isFormInputContext(context)) {\n        throw new Error('useFormControl() can only be used in a form input component');\n    }\n    const { formControl, config } = context;\n    const [value, setValue] = useState(formControl.value ?? 0);\n\n    useEffect(() => {\n        const subscription = formControl.valueChanges.subscribe(v => {\n            setValue(v);\n        });\n        return () => {\n            subscription.unsubscribe();\n        };\n    }, []);\n\n    function setFormValue(newValue: any) {\n        formControl.setValue(coerceFormValue(newValue, config.type as CustomFieldType));\n        formControl.markAsDirty();\n    }\n\n    return { value, setFormValue };\n}\n\nfunction isFormInputContext(\n    context: HostedReactComponentContext,\n): context is HostedReactComponentContext<ReactFormInputOptions> {\n    return context.config && context.formControl;\n}\n\nfunction coerceFormValue(value: any, type: CustomFieldType) {\n    switch (type) {\n        case 'int':\n        case 'float':\n            return Number(value);\n        case 'boolean':\n            return Boolean(value);\n        default:\n            return value;\n    }\n}\n","import { BreadcrumbValue } from '@vendure/admin-ui/core';\nimport { useContext } from 'react';\nimport { HostedComponentContext } from '../directives/react-component-host.directive';\nimport { HostedReactComponentContext, ReactRouteComponentOptions } from '../types';\n\n/**\n * @description\n * Provides functions for setting the current page title and breadcrumb.\n *\n * @example\n * ```ts\n * import { usePageMetadata } from '\\@vendure/admin-ui/react';\n * import { useEffect } from 'react';\n *\n * export const MyComponent = () => {\n *     const { setTitle, setBreadcrumb } = usePageMetadata();\n *     useEffect(() => {\n *         setTitle('My Page');\n *         setBreadcrumb([\n *             { link: ['./parent'], label: 'Parent Page' },\n *             { link: ['./'], label: 'This Page' },\n *         ]);\n *     }, []);\n *     // ...\n *     return <div>...</div>;\n * }\n * ```\n *\n * @docsCategory react-hooks\n */\nexport function usePageMetadata() {\n    const context = useContext(\n        HostedComponentContext,\n    ) as HostedReactComponentContext<ReactRouteComponentOptions>;\n    const setBreadcrumb = (newValue: BreadcrumbValue) => {\n        context.pageMetadataService?.setBreadcrumbs(newValue);\n    };\n    const setTitle = (newTitle: string) => {\n        context.pageMetadataService?.setTitle(newTitle);\n    };\n\n    return {\n        setBreadcrumb,\n        setTitle,\n    };\n}\n","import { TypedDocumentNode } from '@graphql-typed-document-node/core';\nimport { DataService } from '@vendure/admin-ui/core';\nimport { DocumentNode } from 'graphql/index';\nimport { useCallback, useContext, useEffect, useState } from 'react';\nimport { firstValueFrom, Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { HostedComponentContext } from '../directives/react-component-host.directive';\n\n/**\n * @description\n * A React hook which provides access to the results of a GraphQL query.\n *\n * @example\n * ```ts\n * import { useQuery } from '\\@vendure/admin-ui/react';\n * import { gql } from 'graphql-tag';\n *\n * const GET_PRODUCT = gql`\n *    query GetProduct($id: ID!) {\n *      product(id: $id) {\n *        id\n *        name\n *        description\n *      }\n *    }`;\n *\n * export const MyComponent = () => {\n *     const { data, loading, error } = useQuery(GET_PRODUCT, { id: '1' }, { refetchOnChannelChange: true });\n *\n *     if (loading) return <div>Loading...</div>;\n *     if (error) return <div>Error! { error }</div>;\n *     return (\n *         <div>\n *             <h1>{data.product.name}</h1>\n *             <p>{data.product.description}</p>\n *         </div>\n *     );\n * };\n * ```\n *\n * @docsCategory react-hooks\n */\nexport function useQuery<T, V extends Record<string, any> = Record<string, any>>(\n    query: DocumentNode | TypedDocumentNode<T, V>,\n    variables?: V,\n    options: { refetchOnChannelChange: boolean } = { refetchOnChannelChange: false },\n) {\n    const { refetchOnChannelChange } = options;\n    const { data, loading, error, runQuery } = useDataService<T, V>((dataService, vars) => {\n        let queryFn = dataService.query(query, vars);\n        if (refetchOnChannelChange) {\n            queryFn = queryFn.refetchOnChannelChange();\n        }\n        return queryFn.stream$;\n    });\n    useEffect(() => {\n        const subscription = runQuery(variables).subscribe();\n        return () => subscription.unsubscribe();\n    }, [runQuery]);\n\n    const refetch = (variables?: V) => firstValueFrom(runQuery(variables));\n    return { data, loading, error, refetch } as const;\n}\n\n/**\n * @description\n * A React hook which allows you to execute a GraphQL query lazily.\n *\n * @example\n * ```ts\n * import { useLazyQuery } from '\\@vendure/admin-ui/react';\n * import { gql } from 'graphql-tag';\n *\n * const GET_PRODUCT = gql`\n *    query GetProduct($id: ID!) {\n *      product(id: $id) {\n *        id\n *        name\n *        description\n *      }\n *    }`;\n * type ProductResponse = {\n *     product: {\n *         name: string\n *         description: string\n *     }\n * }\n *\n * export const MyComponent = () => {\n *     const [getProduct, { data, loading, error }] = useLazyQuery<ProductResponse>(GET_PRODUCT, { refetchOnChannelChange: true });\n *\n *    const handleClick = () => {\n *         getProduct({\n *              id: '1',\n *         }).then(result => {\n *             // do something with the result\n *         });\n *     };\n *\n *     if (loading) return <div>Loading...</div>;\n *     if (error) return <div>Error! { error }</div>;\n *\n *     return (\n *     <div>\n *         <button onClick={handleClick}>Get product</button>\n *         {data && (\n *              <div>\n *                  <h1>{data.product.name}</h1>\n *                  <p>{data.product.description}</p>\n *              </div>)}\n *     </div>\n *     );\n * };\n * ```\n *\n * @since 2.2.0\n * @docsCategory react-hooks\n */\nexport function useLazyQuery<T, V extends Record<string, any> = Record<string, any>>(\n    query: DocumentNode | TypedDocumentNode<T, V>,\n    options: { refetchOnChannelChange: boolean } = { refetchOnChannelChange: false },\n) {\n    const { refetchOnChannelChange } = options;\n    const { data, loading, error, runQuery } = useDataService<T, V>((dataService, vars) => {\n        let queryFn = dataService.query(query, vars);\n        if (refetchOnChannelChange) {\n            queryFn = queryFn.refetchOnChannelChange();\n        }\n        return queryFn.stream$;\n    });\n    const rest = { data, loading, error };\n    const execute = (variables?: V) => firstValueFrom(runQuery(variables));\n    return [execute, rest] as [typeof execute, typeof rest];\n}\n\n/**\n * @description\n * A React hook which allows you to execute a GraphQL mutation.\n *\n * @example\n * ```ts\n * import { useMutation } from '\\@vendure/admin-ui/react';\n * import { gql } from 'graphql-tag';\n *\n * const UPDATE_PRODUCT = gql`\n *   mutation UpdateProduct($input: UpdateProductInput!) {\n *     updateProduct(input: $input) {\n *     id\n *     name\n *   }\n * }`;\n *\n * export const MyComponent = () => {\n *     const [updateProduct, { data, loading, error }] = useMutation(UPDATE_PRODUCT);\n *\n *     const handleClick = () => {\n *         updateProduct({\n *             input: {\n *                 id: '1',\n *                 name: 'New name',\n *             },\n *         }).then(result => {\n *             // do something with the result\n *         });\n *     };\n *\n *     if (loading) return <div>Loading...</div>;\n *     if (error) return <div>Error! { error }</div>;\n *\n *     return (\n *     <div>\n *         <button onClick={handleClick}>Update product</button>\n *         {data && <div>Product updated!</div>}\n *     </div>\n *     );\n * };\n * ```\n *\n * @docsCategory react-hooks\n */\nexport function useMutation<T, V extends Record<string, any> = Record<string, any>>(\n    mutation: DocumentNode | TypedDocumentNode<T, V>,\n) {\n    const { data, loading, error, runQuery } = useDataService<T, V>((dataService, variables) =>\n        dataService.mutate(mutation, variables),\n    );\n    const rest = { data, loading, error };\n    const execute = (variables?: V) => firstValueFrom(runQuery(variables));\n    return [execute, rest] as [typeof execute, typeof rest];\n}\n\nexport function useDataService<T, V extends Record<string, any> = Record<string, any>>(\n    operation: (dataService: DataService, variables?: V) => Observable<T>,\n) {\n    const context = useContext(HostedComponentContext);\n    const dataService = context?.injector.get(DataService);\n    if (!dataService) {\n        throw new Error('No DataService found in HostedComponentContext');\n    }\n\n    const [data, setData] = useState<T>();\n    const [error, setError] = useState<string>();\n    const [loading, setLoading] = useState(false);\n\n    const runQuery = useCallback((variables?: V) => {\n        setLoading(true);\n        return operation(dataService, variables).pipe(\n            tap({\n                next: res => {\n                    setData(res);\n                    setLoading(false);\n                },\n                error: err => {\n                    setError(err.message);\n                    setLoading(false);\n                },\n            }),\n        );\n    }, []);\n\n    return { data, loading, error, runQuery };\n}\n","import { ActivatedRoute } from '@angular/router';\nimport { useEffect, useState } from 'react';\nimport { useInjector } from './use-injector';\n\n/**\n * @description\n * Provides access to the current route params and query params.\n *\n * @example\n * ```ts\n * import { useRouteParams } from '\\@vendure/admin-ui/react';\n * import React from 'react';\n *\n * export function MyComponent() {\n *     const { params, queryParams } = useRouteParams();\n *     // ...\n *     return <div>{ params.id }</div>;\n * }\n * ```\n *\n * @docsCategory react-hooks\n */\nexport function useRouteParams() {\n    const activatedRoute = useInjector(ActivatedRoute);\n    const [params, setParams] = useState(activatedRoute.snapshot.params);\n    const [queryParams, setQueryParams] = useState(activatedRoute.snapshot.queryParams);\n\n    useEffect(() => {\n        const subscription = activatedRoute.params.subscribe(value => {\n            setParams(value);\n        });\n        subscription.add(activatedRoute.queryParams.subscribe(value => setQueryParams(value)));\n        return () => subscription.unsubscribe();\n    }, []);\n\n    return {\n        params,\n        queryParams,\n    };\n}\n","import { inject, provideAppInitializer } from '@angular/core';\nimport { CustomDetailComponentLocationId, CustomDetailComponentService } from '@vendure/admin-ui/core';\nimport { ElementType } from 'react';\nimport {\n    REACT_CUSTOM_DETAIL_COMPONENT_OPTIONS,\n    ReactCustomDetailComponent,\n} from './components/react-custom-detail.component';\n\n/**\n * @description\n * Configures a React-based component to be placed in a detail page in the given location.\n *\n * @docsCategory react-extensions\n */\nexport interface ReactCustomDetailComponentConfig {\n    /**\n     * @description\n     * The id of the detail page location in which to place the component.\n     */\n    locationId: CustomDetailComponentLocationId;\n    /**\n     * @description\n     * The React component to render.\n     */\n    component: ElementType;\n    /**\n     * @description\n     * Optional props to pass to the React component.\n     */\n    props?: Record<string, any>;\n}\n\n/**\n * @description\n * Registers a React component to be rendered in a detail page in the given location.\n * Components used as custom detail components can make use of the {@link useDetailComponentData} hook.\n *\n * @docsCategory react-extensions\n */\nexport function registerReactCustomDetailComponent(config: ReactCustomDetailComponentConfig) {\n    return provideAppInitializer(() => {\n        const initializerFn = ((customDetailComponentService: CustomDetailComponentService) => () => {\n            customDetailComponentService.registerCustomDetailComponent({\n                component: ReactCustomDetailComponent,\n                locationId: config.locationId,\n                providers: [\n                    {\n                        provide: REACT_CUSTOM_DETAIL_COMPONENT_OPTIONS,\n                        useValue: {\n                            component: config.component,\n                            props: config.props,\n                        },\n                    },\n                ],\n            });\n        })(inject(CustomDetailComponentService));\n        return initializerFn();\n      });\n}\n","import { inject, provideAppInitializer } from '@angular/core';\nimport {\n    DataTableColumnId,\n    DataTableCustomComponentService,\n    DataTableLocationId,\n} from '@vendure/admin-ui/core';\nimport { ElementType } from 'react';\nimport {\n    REACT_CUSTOM_COLUMN_COMPONENT_OPTIONS,\n    ReactCustomColumnComponent,\n} from './components/react-custom-column.component';\n\n/**\n * @description\n * Configures a {@link CustomDetailComponent} to be placed in the given location.\n *\n * @docsCategory react-extensions\n */\nexport interface ReactDataTableComponentConfig {\n    /**\n     * @description\n     * The location in the UI where the custom component should be placed.\n     */\n    tableId: DataTableLocationId;\n    /**\n     * @description\n     * The column in the table where the custom component should be placed.\n     */\n    columnId: DataTableColumnId;\n    /**\n     * @description\n     * The component to render in the table cell. This component will receive the `rowItem` prop\n     * which is the data object for the row, e.g. the `Product` object if used in the `product-list` table.\n     */\n    component: ElementType;\n    /**\n     * @description\n     * Optional props to pass to the React component.\n     */\n    props?: Record<string, any>;\n}\n\n/**\n * @description\n * The props that will be passed to the React component registered via {@link registerReactDataTableComponent}.\n */\nexport interface ReactDataTableComponentProps<T = any> {\n    rowItem: T;\n    [prop: string]: any;\n}\n\n/**\n * @description\n * Registers a React component to be rendered in a data table in the given location.\n * The component will receive the `rowItem` prop which is the data object for the row,\n * e.g. the `Product` object if used in the `product-list` table.\n *\n * @example\n * ```ts title=\"components/SlugWithLink.tsx\"\n * import { ReactDataTableComponentProps } from '\\@vendure/admin-ui/react';\n * import React from 'react';\n *\n * export function SlugWithLink({ rowItem }: ReactDataTableComponentProps<{ slug: string }>) {\n *     return (\n *         <a href={`https://example.com/products/${rowItem.slug}`} target=\"_blank\">\n *             {rowItem.slug}\n *         </a>\n *     );\n * }\n * ```\n *\n * ```ts title=\"providers.ts\"\n * import { registerReactDataTableComponent } from '\\@vendure/admin-ui/react';\n * import { SlugWithLink } from './components/SlugWithLink';\n *\n * export default [\n *     registerReactDataTableComponent({\n *         component: SlugWithLink,\n *         tableId: 'product-list',\n *         columnId: 'slug',\n *         props: {\n *           foo: 'bar',\n *         },\n *     }),\n * ];\n * ```\n *\n * @docsCategory react-extensions\n */\nexport function registerReactDataTableComponent(config: ReactDataTableComponentConfig) {\n    return provideAppInitializer(() => {\n        const initializerFn = ((dataTableCustomComponentService: DataTableCustomComponentService) => () => {\n            dataTableCustomComponentService.registerCustomComponent({\n                ...config,\n                component: ReactCustomColumnComponent,\n                providers: [\n                    {\n                        provide: REACT_CUSTOM_COLUMN_COMPONENT_OPTIONS,\n                        useValue: {\n                            component: config.component,\n                            props: config.props,\n                        },\n                    },\n                ],\n            });\n        })(inject(DataTableCustomComponentService));\n        return initializerFn();\n      });\n}\n","import { inject, provideAppInitializer } from '@angular/core';\nimport { ComponentRegistryService } from '@vendure/admin-ui/core';\nimport { ElementType } from 'react';\nimport {\n    REACT_INPUT_COMPONENT_OPTIONS,\n    ReactFormInputComponent,\n} from './components/react-form-input.component';\n\n/**\n * @description\n * Registers a React component to be used as a {@link FormInputComponent}.\n *\n * @docsCategory react-extensions\n */\nexport function registerReactFormInputComponent(id: string, component: ElementType) {\n    return provideAppInitializer(() => {\n        const initializerFn = ((registry: ComponentRegistryService) => () => {\n            registry.registerInputComponent(id, ReactFormInputComponent, [\n                {\n                    provide: REACT_INPUT_COMPONENT_OPTIONS,\n                    useValue: {\n                        component,\n                    },\n                },\n            ]);\n        })(inject(ComponentRegistryService));\n        return initializerFn();\n    });\n}\n","import { Route } from '@angular/router';\nimport { ResultOf, TypedDocumentNode } from '@graphql-typed-document-node/core';\nimport { registerRouteComponent, RegisterRouteComponentOptions } from '@vendure/admin-ui/core';\nimport { DocumentNode } from 'graphql/index';\nimport { ElementType } from 'react';\nimport { REACT_ROUTE_COMPONENT_OPTIONS, ReactRouteComponent } from './components/react-route.component';\nimport { ReactRouteComponentOptions } from './types';\n\n/**\n * @description\n * Configuration for a React-based route component.\n *\n * @docsCategory react-extensions\n */\ntype RegisterReactRouteComponentOptions<\n    Entity extends { id: string; updatedAt?: string },\n    T extends DocumentNode | TypedDocumentNode<any, { id: string }>,\n    Field extends keyof ResultOf<T>,\n    R extends Field,\n> = RegisterRouteComponentOptions<ElementType, Entity, T, Field, R> & {\n    props?: Record<string, any>;\n};\n\n/**\n * @description\n * Registers a React component to be used as a route component.\n *\n * @docsCategory react-extensions\n */\nexport function registerReactRouteComponent<\n    Entity extends { id: string; updatedAt?: string },\n    T extends DocumentNode | TypedDocumentNode<any, { id: string }>,\n    Field extends keyof ResultOf<T>,\n    R extends Field,\n>(options: RegisterReactRouteComponentOptions<Entity, T, Field, R>): Route {\n    const routeDef = registerRouteComponent(options);\n    return {\n        ...routeDef,\n        providers: [\n            {\n                provide: REACT_ROUTE_COMPONENT_OPTIONS,\n                useValue: {\n                    props: options.props,\n                } satisfies ReactRouteComponentOptions,\n            },\n            ...(routeDef.providers ?? []),\n        ],\n        component: ReactRouteComponent,\n    };\n}\n","// This file was generated by the build-public-api.ts script\nexport * from './components/react-custom-column.component';\nexport * from './components/react-custom-detail.component';\nexport * from './components/react-form-input.component';\nexport * from './components/react-route.component';\nexport * from './directives/react-component-host.directive';\nexport * from './react-components/ActionBar';\nexport * from './react-components/Card';\nexport * from './react-components/CdsIcon';\nexport * from './react-components/FormField';\nexport * from './react-components/Link';\nexport * from './react-components/PageBlock';\nexport * from './react-components/PageDetailLayout';\nexport * from './react-components/RichTextEditor';\nexport * from './react-hooks/use-detail-component-data';\nexport * from './react-hooks/use-form-control';\nexport * from './react-hooks/use-injector';\nexport * from './react-hooks/use-page-metadata';\nexport * from './react-hooks/use-query';\nexport * from './react-hooks/use-rich-text-editor';\nexport * from './react-hooks/use-route-params';\nexport * from './register-react-custom-detail-component';\nexport * from './register-react-data-table-component';\nexport * from './register-react-form-input-component';\nexport * from './register-react-route-component';\nexport * from './types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}