@vendure/admin-ui 3.3.6-master-202507110238 → 3.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -844,7 +844,6 @@ function useRouteParams() {
844
844
  subscription.add(activatedRoute.queryParams.subscribe(value => setQueryParams(value)));
845
845
  return () => subscription.unsubscribe();
846
846
  }, []);
847
- activatedRoute;
848
847
  return {
849
848
  params,
850
849
  queryParams,
@@ -1 +1 @@
1
- {"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 activatedRoute;\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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"}
1
+ {"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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"}
@@ -2175,7 +2175,6 @@ class ShippingMethodDetailComponent extends TypedBaseDetailComponent {
2175
2175
  if (!selectedChecker || !selectedCalculator || !checker || !calculator) {
2176
2176
  return;
2177
2177
  }
2178
- const formValue = this.detailForm.value;
2179
2178
  const input = {
2180
2179
  ...this.getUpdatedShippingMethod({
2181
2180
  createdAt: '',
@@ -2214,7 +2213,6 @@ class ShippingMethodDetailComponent extends TypedBaseDetailComponent {
2214
2213
  }
2215
2214
  combineLatest([this.entity$, this.languageCode$])
2216
2215
  .pipe(take(1), mergeMap(([shippingMethod, languageCode]) => {
2217
- const formValue = this.detailForm.value;
2218
2216
  const input = {
2219
2217
  ...this.getUpdatedShippingMethod(shippingMethod, this.detailForm, languageCode),
2220
2218
  checker: toConfigurableOperationInput(selectedChecker, checker),
@@ -2931,19 +2929,18 @@ class TaxRateDetailComponent extends TypedBaseDetailComponent {
2931
2929
  if (!this.detailForm.dirty) {
2932
2930
  return;
2933
2931
  }
2934
- const { name, enabled, value, taxCategoryId, zoneId, customerGroupId, customFields } = this.detailForm.value;
2932
+ const { name, enabled, value, taxCategoryId, zoneId, customFields, customerGroupId } = this.detailForm.value;
2935
2933
  if (!name || enabled == null || value == null || !taxCategoryId || !zoneId) {
2936
2934
  return;
2937
2935
  }
2938
- const formValue = this.detailForm.value;
2939
2936
  const input = {
2940
2937
  name,
2941
2938
  enabled,
2942
2939
  value,
2943
2940
  categoryId: taxCategoryId,
2944
2941
  zoneId,
2945
- customerGroupId: formValue.customerGroupId,
2946
- customFields: formValue.customFields,
2942
+ customerGroupId,
2943
+ customFields,
2947
2944
  };
2948
2945
  this.dataService.settings.createTaxRate(input).subscribe(data => {
2949
2946
  this.notificationService.success(marker('common.notify-create-success'), {