@adhese/sdk-devtools 1.0.2 → 1.0.3-nightly-20260903114728

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.
Files changed (59) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/AdheseContext.js +1 -1
  3. package/dist/AdheseContext.js.map +1 -1
  4. package/dist/Devtools.hooks.js.map +1 -1
  5. package/dist/Devtools.js +1 -1
  6. package/dist/Devtools.js.map +1 -1
  7. package/dist/cjs/AdheseContext.cjs.map +1 -1
  8. package/dist/cjs/Devtools.cjs +1 -1
  9. package/dist/cjs/Devtools.cjs.map +1 -1
  10. package/dist/cjs/Devtools.hooks.cjs.map +1 -1
  11. package/dist/cjs/components/badge.cjs.map +1 -1
  12. package/dist/cjs/components/button.cjs.map +1 -1
  13. package/dist/cjs/components/editSlot.cjs.map +1 -1
  14. package/dist/cjs/components/form.cjs.map +1 -1
  15. package/dist/cjs/components/fronttailSettings.cjs.map +1 -1
  16. package/dist/cjs/components/input.cjs.map +1 -1
  17. package/dist/cjs/components/label.cjs.map +1 -1
  18. package/dist/cjs/components/logTable.cjs.map +1 -1
  19. package/dist/cjs/components/parametersTable.cjs.map +1 -1
  20. package/dist/cjs/components/previewButton.cjs.map +1 -1
  21. package/dist/cjs/components/settings.cjs.map +1 -1
  22. package/dist/cjs/components/sheet.cjs.map +1 -1
  23. package/dist/cjs/components/slotsTable.cjs +5 -1
  24. package/dist/cjs/components/slotsTable.cjs.map +1 -1
  25. package/dist/cjs/components/switch.cjs.map +1 -1
  26. package/dist/cjs/components/table.cjs.map +1 -1
  27. package/dist/cjs/components/tabs.cjs.map +1 -1
  28. package/dist/cjs/devtools.composables.cjs.map +1 -1
  29. package/dist/cjs/main.cjs.map +1 -1
  30. package/dist/cjs/modifiedSlots.store.cjs.map +1 -1
  31. package/dist/cjs/sdkDevtools.cjs.map +1 -1
  32. package/dist/cjs/utils.cjs.map +1 -1
  33. package/dist/components/badge.js.map +1 -1
  34. package/dist/components/button.js.map +1 -1
  35. package/dist/components/editSlot.js +2 -2
  36. package/dist/components/editSlot.js.map +1 -1
  37. package/dist/components/form.js +1 -1
  38. package/dist/components/form.js.map +1 -1
  39. package/dist/components/fronttailSettings.js.map +1 -1
  40. package/dist/components/input.js.map +1 -1
  41. package/dist/components/label.js.map +1 -1
  42. package/dist/components/logTable.js.map +1 -1
  43. package/dist/components/parametersTable.js.map +1 -1
  44. package/dist/components/previewButton.js.map +1 -1
  45. package/dist/components/settings.js.map +1 -1
  46. package/dist/components/sheet.js +1 -1
  47. package/dist/components/sheet.js.map +1 -1
  48. package/dist/components/slotsTable.js +5 -1
  49. package/dist/components/slotsTable.js.map +1 -1
  50. package/dist/components/switch.js.map +1 -1
  51. package/dist/components/table.js.map +1 -1
  52. package/dist/components/tabs.js.map +1 -1
  53. package/dist/devtools.composables.js.map +1 -1
  54. package/dist/main.js.map +1 -1
  55. package/dist/modifiedSlots.store.js +1 -1
  56. package/dist/modifiedSlots.store.js.map +1 -1
  57. package/dist/sdkDevtools.js.map +1 -1
  58. package/dist/utils.js.map +1 -1
  59. package/package.json +4 -3
@@ -1 +1 @@
1
- {"version":3,"file":"form.cjs","sources":["../../../src/components/form.tsx"],"sourcesContent":["// eslint-disable-next-line ts/naming-convention\nimport type * as LabelPrimitive from '@radix-ui/react-label';\nimport { Slot } from '@radix-ui/react-slot';\nimport {\n type ComponentPropsWithoutRef,\n createContext,\n type ElementRef,\n forwardRef,\n type HTMLAttributes,\n useContext,\n useId,\n} from 'react';\n\nimport {\n Controller,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n FormProvider,\n useFormContext,\n} from 'react-hook-form';\nimport { cn } from '../utils';\nimport { Label } from './label';\n\n// eslint-disable-next-line ts/naming-convention\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n T extends FieldValues = FieldValues,\n U extends FieldPath<T> = FieldPath<T>,\n> = {\n name: U;\n};\n\n// eslint-disable-next-line ts/naming-convention\nconst FormFieldContext = createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\n// eslint-disable-next-line ts/naming-convention,ts/explicit-function-return-type,ts/explicit-module-boundary-types\nfunction FormField<\n T extends FieldValues = FieldValues,\n U extends FieldPath<T> = FieldPath<T>,\n>({\n ...props\n}: ControllerProps<T, U>) {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n}\n\ntype FormItemContextValue = {\n id: string;\n};\n\n// eslint-disable-next-line ts/naming-convention\nconst FormItemContext = createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n\n// eslint-disable-next-line ts/explicit-function-return-type,ts/explicit-module-boundary-types\nfunction useFormField() {\n const fieldContext = useContext(FormFieldContext);\n const itemContext = useContext(FormItemContext);\n const { getFieldState, formState } = useFormContext();\n\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error('useFormField should be used within <FormField>');\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n}\n\n// eslint-disable-next-line ts/naming-convention\nconst FormItem = forwardRef<\n HTMLDivElement,\n HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const id = useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div ref={ref} className={cn('space-y-2', className)} {...props} />\n </FormItemContext.Provider>\n );\n});\nFormItem.displayName = 'FormItem';\n\n// eslint-disable-next-line ts/naming-convention\nconst FormLabel = forwardRef<\n ElementRef<typeof LabelPrimitive.Root>,\n ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n ref={ref}\n className={cn(error && 'text-destructive', className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n});\nFormLabel.displayName = 'FormLabel';\n\n// eslint-disable-next-line ts/naming-convention\nconst FormControl = forwardRef<\n ElementRef<typeof Slot>,\n ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField();\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={\n error ? `${formDescriptionId} ${formMessageId}` : `${formDescriptionId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n});\nFormControl.displayName = 'FormControl';\n\n// eslint-disable-next-line ts/naming-convention\nconst FormDescription = forwardRef<\n HTMLParagraphElement,\n HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn('text-[0.8rem] text-muted-foreground', className)}\n {...props}\n />\n );\n});\nFormDescription.displayName = 'FormDescription';\n\n// eslint-disable-next-line ts/naming-convention\nconst FormMessage = forwardRef<\n HTMLParagraphElement,\n HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message) : children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn('text-[0.8rem] font-medium text-destructive', className)}\n {...props}\n >\n {body}\n </p>\n );\n});\nFormMessage.displayName = 'FormMessage';\n\nexport {\n Form,\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n useFormField,\n};\n"],"names":["FormProvider","createContext","jsx","Controller","useContext","useFormContext","forwardRef","useId","cn","Label","Slot"],"mappings":"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"}
1
+ {"version":3,"file":"form.cjs","sources":["../../../src/components/form.tsx"],"sourcesContent":["// eslint-disable-next-line ts/naming-convention\nimport type * as LabelPrimitive from '@radix-ui/react-label';\nimport { Slot } from '@radix-ui/react-slot';\nimport {\n type ComponentPropsWithoutRef,\n createContext,\n type ElementRef,\n forwardRef,\n type HTMLAttributes,\n useContext,\n useId,\n} from 'react';\n\nimport {\n Controller,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n FormProvider,\n useFormContext,\n} from 'react-hook-form';\nimport { cn } from '../utils';\nimport { Label } from './label';\n\n// eslint-disable-next-line ts/naming-convention\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n T extends FieldValues = FieldValues,\n U extends FieldPath<T> = FieldPath<T>,\n> = {\n name: U;\n};\n\n// eslint-disable-next-line ts/naming-convention\nconst FormFieldContext = createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\n// eslint-disable-next-line ts/naming-convention,ts/explicit-function-return-type,ts/explicit-module-boundary-types\nfunction FormField<\n T extends FieldValues = FieldValues,\n U extends FieldPath<T> = FieldPath<T>,\n>({\n ...props\n}: ControllerProps<T, U>) {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n}\n\ntype FormItemContextValue = {\n id: string;\n};\n\n// eslint-disable-next-line ts/naming-convention\nconst FormItemContext = createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n\n// eslint-disable-next-line ts/explicit-function-return-type,ts/explicit-module-boundary-types\nfunction useFormField() {\n const fieldContext = useContext(FormFieldContext);\n const itemContext = useContext(FormItemContext);\n const { getFieldState, formState } = useFormContext();\n\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error('useFormField should be used within <FormField>');\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n}\n\n// eslint-disable-next-line ts/naming-convention\nconst FormItem = forwardRef<\n HTMLDivElement,\n HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const id = useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div ref={ref} className={cn('space-y-2', className)} {...props} />\n </FormItemContext.Provider>\n );\n});\nFormItem.displayName = 'FormItem';\n\n// eslint-disable-next-line ts/naming-convention\nconst FormLabel = forwardRef<\n ElementRef<typeof LabelPrimitive.Root>,\n ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n ref={ref}\n className={cn(error && 'text-destructive', className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n});\nFormLabel.displayName = 'FormLabel';\n\n// eslint-disable-next-line ts/naming-convention\nconst FormControl = forwardRef<\n ElementRef<typeof Slot>,\n ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField();\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={\n error ? `${formDescriptionId} ${formMessageId}` : `${formDescriptionId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n});\nFormControl.displayName = 'FormControl';\n\n// eslint-disable-next-line ts/naming-convention\nconst FormDescription = forwardRef<\n HTMLParagraphElement,\n HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn('text-[0.8rem] text-muted-foreground', className)}\n {...props}\n />\n );\n});\nFormDescription.displayName = 'FormDescription';\n\n// eslint-disable-next-line ts/naming-convention\nconst FormMessage = forwardRef<\n HTMLParagraphElement,\n HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message) : children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn('text-[0.8rem] font-medium text-destructive', className)}\n {...props}\n >\n {body}\n </p>\n );\n});\nFormMessage.displayName = 'FormMessage';\n\nexport {\n Form,\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n useFormField,\n};\n"],"names":["FormProvider","createContext","jsx","Controller","useContext","useFormContext","forwardRef","useId","cn","Label","Slot"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fronttailSettings.cjs","sources":["../../../src/components/fronttailSettings.tsx"],"sourcesContent":["import { deleteCookie, getCookie, hasCookie, setCookie } from '@adhese/sdk-shared';\nimport { type ChangeEventHandler, type HTMLAttributes, type ReactElement, useCallback, useId, useMemo, useState } from 'react';\nimport { useAdheseContext } from '../AdheseContext';\nimport { cn } from '../utils';\nimport { Button } from './button';\nimport { Input } from './input';\nimport { Label } from './label';\nimport { Switch } from './switch';\n\nconst cookieKey = 'debugKey';\n\nfunction setDebugCookie(value: string): void {\n setCookie({\n key: cookieKey,\n value,\n expires: new Date(Date.now() + 24 * 60 * 60 * 1000),\n });\n}\n\nfunction simpleStringify(value: unknown): string {\n if (typeof value === 'object')\n return Object.values(value as object).map(nestedValue => `${simpleStringify(nestedValue)}`).join('');\n\n if (typeof value === 'boolean')\n return value ? '1' : '0';\n\n return String(value);\n}\n\n// eslint-disable-next-line ts/naming-convention\nexport function FronttailSettings({\n className,\n 'aria-labelledby': ariaLabelledBy,\n ...props\n}: HTMLAttributes<HTMLDivElement>): ReactElement {\n const adheseContext = useAdheseContext()!;\n\n const autoGeneratedKey = useMemo(() => `adhese-${adheseContext.options.account}-${btoa(simpleStringify(adheseContext.options)).slice(0, 20)}`, [adheseContext.options]);\n\n const [fronttailDebugKey, setFronttailDebugKey] = useState(getCookie(cookieKey) ?? autoGeneratedKey);\n const [isFronttailEnabled, setIsFronttailEnabled] = useState(hasCookie(cookieKey));\n\n const onFronttailDebugKeyChange = useCallback((event) => {\n const { value } = event.target;\n\n setFronttailDebugKey(value);\n\n if (isFronttailEnabled && value.length > 4)\n setDebugCookie(value);\n }, [setDebugCookie, isFronttailEnabled]) satisfies ChangeEventHandler<HTMLInputElement>;\n\n const onFrontailEnabledChange = useCallback(() => {\n setIsFronttailEnabled((value) => {\n if (value)\n deleteCookie(cookieKey);\n\n else\n setDebugCookie(fronttailDebugKey);\n\n return !value;\n });\n }, [setDebugCookie, fronttailDebugKey]);\n\n const id = useId();\n return (\n <section className={cn('flex flex-col gap-6', className)} aria-labelledby={ariaLabelledBy ?? `fronttailHeading${id}`} {...props}>\n <h2 className=\"text-lg font-semibold\" id={`fronttailHeading${id}`}>Fronttail settings</h2>\n\n <div className=\"flex items-center gap-4\">\n <Switch checked={isFronttailEnabled} onCheckedChange={onFrontailEnabledChange} id={`fronttailSwitch${id}`} />\n <Label htmlFor={`fronttailSwitch${id}`}>\n Enable Fronttail debugging\n <span className=\"text-gray-400 font-normal\"> – Cookie will expire automatically in 1 day</span>\n </Label>\n </div>\n\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor={`fronttailDebugKey${id}`}>\n Debug key\n </Label>\n <div className=\"flex items-center gap-4\">\n <Input\n id={`fronttailDebugKey${id}`}\n value={fronttailDebugKey}\n onChange={onFronttailDebugKeyChange}\n className={\n cn('max-w-60', {\n // eslint-disable-next-line ts/naming-convention\n 'border-destructive': fronttailDebugKey.length < 4,\n })\n }\n />\n\n <Button\n variant=\"outline\"\n onClick={() => {\n setFronttailDebugKey(autoGeneratedKey);\n\n if (isFronttailEnabled)\n setDebugCookie(autoGeneratedKey);\n }}\n >\n Auto generate key\n </Button>\n </div>\n {\n fronttailDebugKey.length < 4\n && <span className=\"text-sm text-destructive\">Debug key must contain at least 4 characters</span>\n }\n </div>\n </section>\n );\n}\n"],"names":["setCookie","useAdheseContext","useMemo","useState","getCookie","hasCookie","useCallback","deleteCookie","useId","jsxs","cn","jsx","Switch","Label","Input","Button"],"mappings":"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"}
1
+ {"version":3,"file":"fronttailSettings.cjs","sources":["../../../src/components/fronttailSettings.tsx"],"sourcesContent":["import { deleteCookie, getCookie, hasCookie, setCookie } from '@adhese/sdk-shared';\nimport { type ChangeEventHandler, type HTMLAttributes, type ReactElement, useCallback, useId, useMemo, useState } from 'react';\nimport { useAdheseContext } from '../AdheseContext';\nimport { cn } from '../utils';\nimport { Button } from './button';\nimport { Input } from './input';\nimport { Label } from './label';\nimport { Switch } from './switch';\n\nconst cookieKey = 'debugKey';\n\nfunction setDebugCookie(value: string): void {\n setCookie({\n key: cookieKey,\n value,\n expires: new Date(Date.now() + 24 * 60 * 60 * 1000),\n });\n}\n\nfunction simpleStringify(value: unknown): string {\n if (typeof value === 'object')\n return Object.values(value as object).map(nestedValue => `${simpleStringify(nestedValue)}`).join('');\n\n if (typeof value === 'boolean')\n return value ? '1' : '0';\n\n return String(value);\n}\n\n// eslint-disable-next-line ts/naming-convention\nexport function FronttailSettings({\n className,\n 'aria-labelledby': ariaLabelledBy,\n ...props\n}: HTMLAttributes<HTMLDivElement>): ReactElement {\n const adheseContext = useAdheseContext()!;\n\n const autoGeneratedKey = useMemo(() => `adhese-${adheseContext.options.account}-${btoa(simpleStringify(adheseContext.options)).slice(0, 20)}`, [adheseContext.options]);\n\n const [fronttailDebugKey, setFronttailDebugKey] = useState(getCookie(cookieKey) ?? autoGeneratedKey);\n const [isFronttailEnabled, setIsFronttailEnabled] = useState(hasCookie(cookieKey));\n\n const onFronttailDebugKeyChange = useCallback((event) => {\n const { value } = event.target;\n\n setFronttailDebugKey(value);\n\n if (isFronttailEnabled && value.length > 4)\n setDebugCookie(value);\n }, [setDebugCookie, isFronttailEnabled]) satisfies ChangeEventHandler<HTMLInputElement>;\n\n const onFrontailEnabledChange = useCallback(() => {\n setIsFronttailEnabled((value) => {\n if (value)\n deleteCookie(cookieKey);\n\n else\n setDebugCookie(fronttailDebugKey);\n\n return !value;\n });\n }, [setDebugCookie, fronttailDebugKey]);\n\n const id = useId();\n return (\n <section className={cn('flex flex-col gap-6', className)} aria-labelledby={ariaLabelledBy ?? `fronttailHeading${id}`} {...props}>\n <h2 className=\"text-lg font-semibold\" id={`fronttailHeading${id}`}>Fronttail settings</h2>\n\n <div className=\"flex items-center gap-4\">\n <Switch checked={isFronttailEnabled} onCheckedChange={onFrontailEnabledChange} id={`fronttailSwitch${id}`} />\n <Label htmlFor={`fronttailSwitch${id}`}>\n Enable Fronttail debugging\n <span className=\"text-gray-400 font-normal\"> – Cookie will expire automatically in 1 day</span>\n </Label>\n </div>\n\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor={`fronttailDebugKey${id}`}>\n Debug key\n </Label>\n <div className=\"flex items-center gap-4\">\n <Input\n id={`fronttailDebugKey${id}`}\n value={fronttailDebugKey}\n onChange={onFronttailDebugKeyChange}\n className={\n cn('max-w-60', {\n // eslint-disable-next-line ts/naming-convention\n 'border-destructive': fronttailDebugKey.length < 4,\n })\n }\n />\n\n <Button\n variant=\"outline\"\n onClick={() => {\n setFronttailDebugKey(autoGeneratedKey);\n\n if (isFronttailEnabled)\n setDebugCookie(autoGeneratedKey);\n }}\n >\n Auto generate key\n </Button>\n </div>\n {\n fronttailDebugKey.length < 4\n && <span className=\"text-sm text-destructive\">Debug key must contain at least 4 characters</span>\n }\n </div>\n </section>\n );\n}\n"],"names":["setCookie","useAdheseContext","useMemo","useState","getCookie","hasCookie","useCallback","deleteCookie","useId","jsxs","cn","jsx","Switch","Label","Input","Button"],"mappings":";;;;;;;;;;;AASA,MAAM,YAAY;AAElB,SAAS,eAAe,OAAqB;AAC3CA,sBAAU;AAAA,IACR,KAAK;AAAA,IACL;AAAA,IACA,SAAS,IAAI,KAAK,KAAK,QAAQ,KAAK,KAAK,KAAK,GAAI;AAAA,EAAA,CACnD;AACH;AAEA,SAAS,gBAAgB,OAAwB;AAC/C,MAAI,OAAO,UAAU;AACnB,WAAO,OAAO,OAAO,KAAe,EAAE,IAAI,CAAA,gBAAe,GAAG,gBAAgB,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE;AAErG,MAAI,OAAO,UAAU;AACnB,WAAO,QAAQ,MAAM;AAEvB,SAAO,OAAO,KAAK;AACrB;AAGO,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA,mBAAmB;AAAA,EACnB,GAAG;AACL,GAAiD;AAC/C,QAAM,gBAAgBC,cAAAA,iBAAA;AAEtB,QAAM,mBAAmBC,cAAQ,MAAM,UAAU,cAAc,QAAQ,OAAO,IAAI,KAAK,gBAAgB,cAAc,OAAO,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC;AAEtK,QAAM,CAAC,mBAAmB,oBAAoB,IAAIC,MAAAA,SAASC,oBAAU,SAAS,KAAK,gBAAgB;AACnG,QAAM,CAAC,oBAAoB,qBAAqB,IAAID,MAAAA,SAASE,UAAAA,UAAU,SAAS,CAAC;AAEjF,QAAM,4BAA4BC,kBAAY,CAAC,UAAU;AACvD,UAAM,EAAE,UAAU,MAAM;AAExB,yBAAqB,KAAK;AAE1B,QAAI,sBAAsB,MAAM,SAAS;AACvC,qBAAe,KAAK;AAAA,EACxB,GAAG,CAAC,gBAAgB,kBAAkB,CAAC;AAEvC,QAAM,0BAA0BA,MAAAA,YAAY,MAAM;AAChD,0BAAsB,CAAC,UAAU;AAC/B,UAAI;AACFC,kBAAAA,aAAa,SAAS;AAAA;AAGtB,uBAAe,iBAAiB;AAElC,aAAO,CAAC;AAAA,IACV,CAAC;AAAA,EACH,GAAG,CAAC,gBAAgB,iBAAiB,CAAC;AAEtC,QAAM,KAAKC,MAAAA,MAAA;AACX,SACEC,2BAAAA,KAAC,WAAA,EAAQ,WAAWC,MAAAA,GAAG,uBAAuB,SAAS,GAAG,mBAAiB,kBAAkB,mBAAmB,EAAE,IAAK,GAAG,OACxH,UAAA;AAAA,IAAAC,2BAAAA,IAAC,QAAG,WAAU,yBAAwB,IAAI,mBAAmB,EAAE,IAAI,UAAA,qBAAA,CAAkB;AAAA,IAErFF,2BAAAA,KAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,MAAAE,2BAAAA,IAACC,QAAAA,QAAA,EAAO,SAAS,oBAAoB,iBAAiB,yBAAyB,IAAI,kBAAkB,EAAE,GAAA,CAAI;AAAA,MAC3GH,2BAAAA,KAACI,MAAAA,OAAA,EAAM,SAAS,kBAAkB,EAAE,IAAI,UAAA;AAAA,QAAA;AAAA,QAEtCF,2BAAAA,IAAC,QAAA,EAAK,WAAU,6BAA4B,UAAA,+CAAA,CAA4C;AAAA,MAAA,EAAA,CAC1F;AAAA,IAAA,GACF;AAAA,IAEAF,2BAAAA,KAAC,OAAA,EAAI,WAAU,uBACb,UAAA;AAAA,MAAAE,+BAACE,MAAAA,OAAA,EAAM,SAAS,oBAAoB,EAAE,IAAI,UAAA,aAE1C;AAAA,MACAJ,2BAAAA,KAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,QAAAE,2BAAAA;AAAAA,UAACG,MAAAA;AAAAA,UAAA;AAAA,YACC,IAAI,oBAAoB,EAAE;AAAA,YAC1B,OAAO;AAAA,YACP,UAAU;AAAA,YACV,WACEJ,MAAAA,GAAG,YAAY;AAAA;AAAA,cAEb,sBAAsB,kBAAkB,SAAS;AAAA,YAAA,CAClD;AAAA,UAAA;AAAA,QAAA;AAAA,QAILC,2BAAAA;AAAAA,UAACI,OAAAA;AAAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,SAAS,MAAM;AACb,mCAAqB,gBAAgB;AAErC,kBAAI;AACF,+BAAe,gBAAgB;AAAA,YACnC;AAAA,YACD,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED,GACF;AAAA,MAEE,kBAAkB,SAAS,oCACvB,QAAA,EAAK,WAAU,4BAA2B,UAAA,+CAAA,CAA4C;AAAA,IAAA,EAAA,CAE9F;AAAA,EAAA,GACF;AAEJ;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"input.cjs","sources":["../../../src/components/input.tsx"],"sourcesContent":["import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../utils';\n\nexport interface InputProps\n extends InputHTMLAttributes<HTMLInputElement> {}\n\n// eslint-disable-next-line ts/naming-convention\nconst Input = forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => (\n <input\n type={type}\n className={cn(\n 'flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n ref={ref}\n {...props}\n />\n ),\n);\nInput.displayName = 'Input';\n\nexport { Input };\n"],"names":["forwardRef","jsx","cn"],"mappings":";;;;;AAOA,MAAM,QAAQA,MAAA;AAAA,EACZ,CAAC,EAAE,WAAW,MAAM,GAAG,SAAS,QAC9BC,2BAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,WAAWC,MAAA;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,MACC,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;AACA,MAAM,cAAc;;"}
1
+ {"version":3,"file":"input.cjs","sources":["../../../src/components/input.tsx"],"sourcesContent":["import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../utils';\n\nexport interface InputProps\n extends InputHTMLAttributes<HTMLInputElement> {}\n\n// eslint-disable-next-line ts/naming-convention\nconst Input = forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => (\n <input\n type={type}\n className={cn(\n 'flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n ref={ref}\n {...props}\n />\n ),\n);\nInput.displayName = 'Input';\n\nexport { Input };\n"],"names":["forwardRef","jsx","cn"],"mappings":";;;;;AAOA,MAAM,QAAQA,MAAAA;AAAAA,EACZ,CAAC,EAAE,WAAW,MAAM,GAAG,MAAA,GAAS,QAC9BC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,WAAWC,MAAAA;AAAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAEF;AAAA,MACC,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;AACA,MAAM,cAAc;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"label.cjs","sources":["../../../src/components/label.tsx"],"sourcesContent":["// eslint-disable-next-line ts/naming-convention\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from 'react';\nimport { cn } from '../utils';\n\nconst labelVariants = cva(\n 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n);\n\n// eslint-disable-next-line ts/naming-convention\nconst Label = forwardRef<\n ElementRef<typeof LabelPrimitive.Root>,\n ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n"],"names":["cva","forwardRef","jsx","LabelPrimitive","cn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,gBAAgBA,uBAAA;AAAA,EACpB;AACF;AAGM,MAAA,QAAQC,iBAIZ,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAA;AAAA,EAACC,0BAAe;AAAA,EAAf;AAAA,IACC;AAAA,IACA,WAAWC,MAAA,GAAG,cAAc,GAAG,SAAS;AAAA,IACvC,GAAG;AAAA,EAAA;AACN,CACD;AACD,MAAM,cAAcD,0BAAe,KAAK;;"}
1
+ {"version":3,"file":"label.cjs","sources":["../../../src/components/label.tsx"],"sourcesContent":["// eslint-disable-next-line ts/naming-convention\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from 'react';\nimport { cn } from '../utils';\n\nconst labelVariants = cva(\n 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n);\n\n// eslint-disable-next-line ts/naming-convention\nconst Label = forwardRef<\n ElementRef<typeof LabelPrimitive.Root>,\n ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n"],"names":["cva","forwardRef","jsx","LabelPrimitive","cn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,gBAAgBA,uBAAAA;AAAAA,EACpB;AACF;AAGA,MAAM,QAAQC,MAAAA,WAIZ,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAACC,0BAAe;AAAA,EAAf;AAAA,IACC;AAAA,IACA,WAAWC,MAAAA,GAAG,cAAA,GAAiB,SAAS;AAAA,IACvC,GAAG;AAAA,EAAA;AACN,CACD;AACD,MAAM,cAAcD,0BAAe,KAAK;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"logTable.cjs","sources":["../../../src/components/logTable.tsx"],"sourcesContent":["import type { Log } from '@adhese/sdk-shared';\nimport { type ReactElement, useEffect, useState } from 'react';\nimport { useAdheseContext } from '../AdheseContext';\nimport { Badge } from './badge';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from './table';\n\nconst dateFormatter = new Intl.DateTimeFormat('en-US', {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n fractionalSecondDigits: 3,\n hour12: false,\n});\n\nconst logTableRowClasses: Record<string, string> = {\n error: 'bg-red-100 text-red-900',\n warn: 'bg-amber-100 text-amber-900',\n};\n\nconst logBadgeClasses: Record<string, string> = {\n error: 'bg-red-500 text-white',\n warn: 'bg-amber-500 text-white',\n info: 'bg-blue-500 text-white',\n};\n\n// eslint-disable-next-line ts/naming-convention\nexport function LogTable(): ReactElement {\n const [logs, setLogs] = useState<ReadonlyArray<Log<string>>>([]);\n\n const adheseContext = useAdheseContext();\n\n useEffect(() => {\n function onLogsChange(): void {\n setLogs(\n adheseContext?.logger?.getLogs().toSorted(\n (a, b) => b.timestamp - a.timestamp,\n ) ?? [],\n );\n }\n\n adheseContext?.logger?.events.log.addListener(onLogsChange);\n\n onLogsChange();\n\n return (): void => {\n adheseContext?.logger?.events.log.removeListener(onLogsChange);\n };\n }, []);\n\n return (\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>Time</TableHead>\n <TableHead>Scope</TableHead>\n <TableHead>Level</TableHead>\n <TableHead>Message</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {logs.map(log => (\n <TableRow key={log.id} className={logTableRowClasses[log.level] ?? ''}>\n <TableCell>{dateFormatter.format(new Date(log.timestamp))}</TableCell>\n <TableCell>{log.scope}</TableCell>\n <TableCell>\n <Badge\n variant=\"secondary\"\n className={logBadgeClasses[log.level] ?? ''}\n >\n {log.level}\n </Badge>\n </TableCell>\n <TableCell>{log.message}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n );\n}\n"],"names":["useState","useAdheseContext","useEffect","_a","Table","jsx","TableHeader","TableRow","TableHead","TableBody","jsxs","TableCell","Badge"],"mappings":";;;;;;;AAMA,MAAM,gBAAgB,IAAI,KAAK,eAAe,SAAS;AAAA,EACrD,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,wBAAwB;AAAA,EACxB,QAAQ;AACV,CAAC;AAED,MAAM,qBAA6C;AAAA,EACjD,OAAO;AAAA,EACP,MAAM;AACR;AAEA,MAAM,kBAA0C;AAAA,EAC9C,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AACR;AAGO,SAAS,WAAyB;AACvC,QAAM,CAAC,MAAM,OAAO,IAAIA,MAAAA,SAAqC,CAAA,CAAE;AAE/D,QAAM,gBAAgBC,cAAAA,iBAAiB;AAEvCC,QAAAA,UAAU,MAAM;;AACd,aAAS,eAAqB;;AAC5B;AAAA,UACEC,MAAA,+CAAe,WAAf,gBAAAA,IAAuB,UAAU;AAAA,UAC/B,CAAC,GAAG,MAAM,EAAE,YAAY,EAAE;AAAA,cACvB,CAAA;AAAA,MACP;AAAA,IAAA;AAGF,yDAAe,WAAf,mBAAuB,OAAO,IAAI,YAAY;AAEjC,iBAAA;AAEb,WAAO,MAAY;;AACjB,OAAAA,MAAA,+CAAe,WAAf,gBAAAA,IAAuB,OAAO,IAAI,eAAe;AAAA,IACnD;AAAA,EACF,GAAG,EAAE;AAEL,yCACGC,aACC,EAAA,UAAA;AAAA,IAACC,2BAAA,IAAAC,MAAA,aAAA,EACC,0CAACC,MAAAA,UACC,EAAA,UAAA;AAAA,MAAAF,2BAAAA,IAACG,mBAAU,UAAI,OAAA,CAAA;AAAA,MACfH,2BAAAA,IAACG,mBAAU,UAAK,QAAA,CAAA;AAAA,MAChBH,2BAAAA,IAACG,mBAAU,UAAK,QAAA,CAAA;AAAA,MAChBH,2BAAAA,IAACG,mBAAU,UAAO,UAAA,CAAA;AAAA,IAAA,EAAA,CACpB,EACF,CAAA;AAAA,IACCH,2BAAA,IAAAI,MAAA,WAAA,EACE,UAAK,KAAA,IAAI,CACR,QAAAC,2BAAAA,KAACH,MAAAA,UAAsB,EAAA,WAAW,mBAAmB,IAAI,KAAK,KAAK,IACjE,UAAA;AAAA,MAACF,2BAAAA,IAAAM,MAAA,WAAA,EAAW,wBAAc,OAAO,IAAI,KAAK,IAAI,SAAS,CAAC,GAAE;AAAA,MAC1DN,2BAAAA,IAACM,MAAAA,WAAW,EAAA,UAAA,IAAI,MAAM,CAAA;AAAA,qCACrBA,MAAAA,WACC,EAAA,UAAAN,2BAAA;AAAA,QAACO,MAAA;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,WAAW,gBAAgB,IAAI,KAAK,KAAK;AAAA,UAExC,UAAI,IAAA;AAAA,QAAA;AAAA,MAAA,GAET;AAAA,MACAP,2BAAAA,IAACM,MAAAA,WAAW,EAAA,UAAA,IAAI,QAAQ,CAAA;AAAA,IAAA,KAXX,IAAI,EAYnB,CACD,EACH,CAAA;AAAA,EAAA,GACF;AAEJ;;"}
1
+ {"version":3,"file":"logTable.cjs","sources":["../../../src/components/logTable.tsx"],"sourcesContent":["import type { Log } from '@adhese/sdk-shared';\nimport { type ReactElement, useEffect, useState } from 'react';\nimport { useAdheseContext } from '../AdheseContext';\nimport { Badge } from './badge';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from './table';\n\nconst dateFormatter = new Intl.DateTimeFormat('en-US', {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n fractionalSecondDigits: 3,\n hour12: false,\n});\n\nconst logTableRowClasses: Record<string, string> = {\n error: 'bg-red-100 text-red-900',\n warn: 'bg-amber-100 text-amber-900',\n};\n\nconst logBadgeClasses: Record<string, string> = {\n error: 'bg-red-500 text-white',\n warn: 'bg-amber-500 text-white',\n info: 'bg-blue-500 text-white',\n};\n\n// eslint-disable-next-line ts/naming-convention\nexport function LogTable(): ReactElement {\n const [logs, setLogs] = useState<ReadonlyArray<Log<string>>>([]);\n\n const adheseContext = useAdheseContext();\n\n useEffect(() => {\n function onLogsChange(): void {\n setLogs(\n adheseContext?.logger?.getLogs().toSorted(\n (a, b) => b.timestamp - a.timestamp,\n ) ?? [],\n );\n }\n\n adheseContext?.logger?.events.log.addListener(onLogsChange);\n\n onLogsChange();\n\n return (): void => {\n adheseContext?.logger?.events.log.removeListener(onLogsChange);\n };\n }, []);\n\n return (\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>Time</TableHead>\n <TableHead>Scope</TableHead>\n <TableHead>Level</TableHead>\n <TableHead>Message</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {logs.map(log => (\n <TableRow key={log.id} className={logTableRowClasses[log.level] ?? ''}>\n <TableCell>{dateFormatter.format(new Date(log.timestamp))}</TableCell>\n <TableCell>{log.scope}</TableCell>\n <TableCell>\n <Badge\n variant=\"secondary\"\n className={logBadgeClasses[log.level] ?? ''}\n >\n {log.level}\n </Badge>\n </TableCell>\n <TableCell>{log.message}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n );\n}\n"],"names":["useState","useAdheseContext","useEffect","_a","Table","jsx","TableHeader","TableRow","TableHead","TableBody","jsxs","TableCell","Badge"],"mappings":";;;;;;;AAMA,MAAM,gBAAgB,IAAI,KAAK,eAAe,SAAS;AAAA,EACrD,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,wBAAwB;AAAA,EACxB,QAAQ;AACV,CAAC;AAED,MAAM,qBAA6C;AAAA,EACjD,OAAO;AAAA,EACP,MAAM;AACR;AAEA,MAAM,kBAA0C;AAAA,EAC9C,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AACR;AAGO,SAAS,WAAyB;AACvC,QAAM,CAAC,MAAM,OAAO,IAAIA,MAAAA,SAAqC,CAAA,CAAE;AAE/D,QAAM,gBAAgBC,cAAAA,iBAAA;AAEtBC,QAAAA,UAAU,MAAM;;AACd,aAAS,eAAqB;;AAC5B;AAAA,UACEC,MAAA,+CAAe,WAAf,gBAAAA,IAAuB,UAAU;AAAA,UAC/B,CAAC,GAAG,MAAM,EAAE,YAAY,EAAE;AAAA,cACvB,CAAA;AAAA,MAAC;AAAA,IAEV;AAEA,yDAAe,WAAf,mBAAuB,OAAO,IAAI,YAAY;AAE9C,iBAAA;AAEA,WAAO,MAAY;;AACjB,OAAAA,MAAA,+CAAe,WAAf,gBAAAA,IAAuB,OAAO,IAAI,eAAe;AAAA,IACnD;AAAA,EACF,GAAG,CAAA,CAAE;AAEL,yCACGC,aAAA,EACC,UAAA;AAAA,IAAAC,2BAAAA,IAACC,MAAAA,aAAA,EACC,0CAACC,MAAAA,UAAA,EACC,UAAA;AAAA,MAAAF,2BAAAA,IAACG,MAAAA,aAAU,UAAA,OAAA,CAAI;AAAA,MACfH,2BAAAA,IAACG,MAAAA,aAAU,UAAA,QAAA,CAAK;AAAA,MAChBH,2BAAAA,IAACG,MAAAA,aAAU,UAAA,QAAA,CAAK;AAAA,MAChBH,2BAAAA,IAACG,MAAAA,aAAU,UAAA,UAAA,CAAO;AAAA,IAAA,EAAA,CACpB,EAAA,CACF;AAAA,IACAH,2BAAAA,IAACI,MAAAA,WAAA,EACE,UAAA,KAAK,IAAI,CAAA,QACRC,2BAAAA,KAACH,MAAAA,UAAA,EAAsB,WAAW,mBAAmB,IAAI,KAAK,KAAK,IACjE,UAAA;AAAA,MAAAF,2BAAAA,IAACM,MAAAA,WAAA,EAAW,wBAAc,OAAO,IAAI,KAAK,IAAI,SAAS,CAAC,GAAE;AAAA,MAC1DN,2BAAAA,IAACM,MAAAA,WAAA,EAAW,UAAA,IAAI,MAAA,CAAM;AAAA,qCACrBA,MAAAA,WAAA,EACC,UAAAN,2BAAAA;AAAAA,QAACO,MAAAA;AAAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,WAAW,gBAAgB,IAAI,KAAK,KAAK;AAAA,UAExC,UAAA,IAAI;AAAA,QAAA;AAAA,MAAA,GAET;AAAA,MACAP,2BAAAA,IAACM,MAAAA,WAAA,EAAW,UAAA,IAAI,QAAA,CAAQ;AAAA,IAAA,KAXX,IAAI,EAYnB,CACD,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"parametersTable.cjs","sources":["../../../src/components/parametersTable.tsx"],"sourcesContent":["import { watch } from '@adhese/sdk-shared';\nimport { type ReactElement, useEffect, useState } from 'react';\nimport { useAdheseContext } from '../AdheseContext';\nimport { Badge } from './badge';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from './table';\n\n// eslint-disable-next-line ts/naming-convention\nexport function ParametersTable(): ReactElement {\n const [parameters, setParameters] = useState<ReadonlyArray<{\n name: string;\n value: string | ReadonlyArray<string>;\n }>>([]);\n\n const adheseContext = useAdheseContext();\n\n useEffect(() => {\n if (!adheseContext)\n return;\n\n const disposeWatcher = watch(() => adheseContext.parameters, (newParameters) => {\n setParameters(Array.from(newParameters.entries())\n .map(([name, value]) => ({\n name,\n value,\n }))\n .filter(({ value }) => value)\n .toSorted((a, b) => a.name.localeCompare(b.name)));\n }, {\n immediate: true,\n deep: true,\n });\n\n return (): void => {\n disposeWatcher();\n };\n }, [adheseContext?.parameters]);\n\n return (\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>Parameter</TableHead>\n <TableHead>Value</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {parameters.map(parameter => (\n <TableRow key={parameter.name}>\n <TableCell>\n <Badge variant=\"outline\">{parameter.name}</Badge>\n </TableCell>\n <TableCell>\n {\n Array.isArray(parameter.value)\n ? (\n <ul className=\"flex gap-1\">\n {parameter.value.map((item, index) => (\n <li key={index}>\n <Badge variant=\"outline\">{item}</Badge>\n </li>\n ))}\n </ul>\n )\n : <Badge variant=\"outline\">{parameter.value}</Badge>\n }\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n );\n}\n"],"names":["useState","useAdheseContext","useEffect","watch","Table","jsx","TableHeader","TableRow","TableHead","TableBody","TableCell","Badge"],"mappings":";;;;;;;;AAOO,SAAS,kBAAgC;AAC9C,QAAM,CAAC,YAAY,aAAa,IAAIA,MAAAA,SAGhC,CAAA,CAAE;AAEN,QAAM,gBAAgBC,cAAAA,iBAAiB;AAEvCC,QAAAA,UAAU,MAAM;AACd,QAAI,CAAC;AACH;AAEF,UAAM,iBAAiBC,UAAAA,MAAM,MAAM,cAAc,YAAY,CAAC,kBAAkB;AAChE,oBAAA,MAAM,KAAK,cAAc,QAAQ,CAAC,EAC7C,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO;AAAA,QACvB;AAAA,QACA;AAAA,MAAA,EACA,EACD,OAAO,CAAC,EAAE,YAAY,KAAK,EAC3B,SAAS,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC,CAAC;AAAA,IAAA,GAClD;AAAA,MACD,WAAW;AAAA,MACX,MAAM;AAAA,IAAA,CACP;AAED,WAAO,MAAY;AACF,qBAAA;AAAA,IACjB;AAAA,EAAA,GACC,CAAC,+CAAe,UAAU,CAAC;AAE9B,yCACGC,aACC,EAAA,UAAA;AAAA,IAACC,2BAAA,IAAAC,MAAA,aAAA,EACC,0CAACC,MAAAA,UACC,EAAA,UAAA;AAAA,MAAAF,2BAAAA,IAACG,mBAAU,UAAS,YAAA,CAAA;AAAA,MACpBH,2BAAAA,IAACG,mBAAU,UAAK,QAAA,CAAA;AAAA,IAAA,EAAA,CAClB,EACF,CAAA;AAAA,mCACCC,MACE,WAAA,EAAA,UAAA,WAAW,IAAI,CAAA,8CACbF,gBACC,EAAA,UAAA;AAAA,MAAAF,2BAAAA,IAACK,MAAAA,aACC,UAACL,2BAAAA,IAAAM,MAAAA,OAAA,EAAM,SAAQ,WAAW,UAAA,UAAU,MAAK,EAC3C,CAAA;AAAA,MACCN,+BAAAK,MAAAA,WAAA,EAEG,UAAM,MAAA,QAAQ,UAAU,KAAK,IAEtBL,+BAAA,MAAA,EAAG,WAAU,cACX,UAAA,UAAU,MAAM,IAAI,CAAC,MAAM,UACzBA,+BAAA,MAAA,EACC,yCAACM,MAAM,OAAA,EAAA,SAAQ,WAAW,UAAA,MAAK,KADxB,KAET,CACD,EACH,CAAA,mCAEDA,MAAM,OAAA,EAAA,SAAQ,WAAW,UAAA,UAAU,OAAM,EAElD,CAAA;AAAA,IAAA,KAlBa,UAAU,IAmBzB,CACD,EACH,CAAA;AAAA,EAAA,GACF;AAEJ;;"}
1
+ {"version":3,"file":"parametersTable.cjs","sources":["../../../src/components/parametersTable.tsx"],"sourcesContent":["import { watch } from '@adhese/sdk-shared';\nimport { type ReactElement, useEffect, useState } from 'react';\nimport { useAdheseContext } from '../AdheseContext';\nimport { Badge } from './badge';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from './table';\n\n// eslint-disable-next-line ts/naming-convention\nexport function ParametersTable(): ReactElement {\n const [parameters, setParameters] = useState<ReadonlyArray<{\n name: string;\n value: string | ReadonlyArray<string>;\n }>>([]);\n\n const adheseContext = useAdheseContext();\n\n useEffect(() => {\n if (!adheseContext)\n return;\n\n const disposeWatcher = watch(() => adheseContext.parameters, (newParameters) => {\n setParameters(Array.from(newParameters.entries())\n .map(([name, value]) => ({\n name,\n value,\n }))\n .filter(({ value }) => value)\n .toSorted((a, b) => a.name.localeCompare(b.name)));\n }, {\n immediate: true,\n deep: true,\n });\n\n return (): void => {\n disposeWatcher();\n };\n }, [adheseContext?.parameters]);\n\n return (\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>Parameter</TableHead>\n <TableHead>Value</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {parameters.map(parameter => (\n <TableRow key={parameter.name}>\n <TableCell>\n <Badge variant=\"outline\">{parameter.name}</Badge>\n </TableCell>\n <TableCell>\n {\n Array.isArray(parameter.value)\n ? (\n <ul className=\"flex gap-1\">\n {parameter.value.map((item, index) => (\n <li key={index}>\n <Badge variant=\"outline\">{item}</Badge>\n </li>\n ))}\n </ul>\n )\n : <Badge variant=\"outline\">{parameter.value}</Badge>\n }\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n );\n}\n"],"names":["useState","useAdheseContext","useEffect","watch","Table","jsx","TableHeader","TableRow","TableHead","TableBody","TableCell","Badge"],"mappings":";;;;;;;;AAOO,SAAS,kBAAgC;AAC9C,QAAM,CAAC,YAAY,aAAa,IAAIA,MAAAA,SAGhC,CAAA,CAAE;AAEN,QAAM,gBAAgBC,cAAAA,iBAAA;AAEtBC,QAAAA,UAAU,MAAM;AACd,QAAI,CAAC;AACH;AAEF,UAAM,iBAAiBC,UAAAA,MAAM,MAAM,cAAc,YAAY,CAAC,kBAAkB;AAC9E,oBAAc,MAAM,KAAK,cAAc,QAAA,CAAS,EAC7C,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO;AAAA,QACvB;AAAA,QACA;AAAA,MAAA,EACA,EACD,OAAO,CAAC,EAAE,MAAA,MAAY,KAAK,EAC3B,SAAS,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC,CAAC;AAAA,IACrD,GAAG;AAAA,MACD,WAAW;AAAA,MACX,MAAM;AAAA,IAAA,CACP;AAED,WAAO,MAAY;AACjB,qBAAA;AAAA,IACF;AAAA,EACF,GAAG,CAAC,+CAAe,UAAU,CAAC;AAE9B,yCACGC,aAAA,EACC,UAAA;AAAA,IAAAC,2BAAAA,IAACC,MAAAA,aAAA,EACC,0CAACC,MAAAA,UAAA,EACC,UAAA;AAAA,MAAAF,2BAAAA,IAACG,MAAAA,aAAU,UAAA,YAAA,CAAS;AAAA,MACpBH,2BAAAA,IAACG,MAAAA,aAAU,UAAA,QAAA,CAAK;AAAA,IAAA,EAAA,CAClB,EAAA,CACF;AAAA,mCACCC,MAAAA,WAAA,EACE,UAAA,WAAW,IAAI,CAAA,8CACbF,gBAAA,EACC,UAAA;AAAA,MAAAF,2BAAAA,IAACK,MAAAA,aACC,UAAAL,2BAAAA,IAACM,MAAAA,OAAA,EAAM,SAAQ,WAAW,UAAA,UAAU,MAAK,EAAA,CAC3C;AAAA,MACAN,+BAACK,MAAAA,WAAA,EAEG,UAAA,MAAM,QAAQ,UAAU,KAAK,IAEvBL,+BAAC,MAAA,EAAG,WAAU,cACX,UAAA,UAAU,MAAM,IAAI,CAAC,MAAM,UAC1BA,+BAAC,MAAA,EACC,yCAACM,MAAAA,OAAA,EAAM,SAAQ,WAAW,UAAA,MAAK,KADxB,KAET,CACD,EAAA,CACH,mCAEDA,MAAAA,OAAA,EAAM,SAAQ,WAAW,UAAA,UAAU,OAAM,EAAA,CAElD;AAAA,IAAA,KAlBa,UAAU,IAmBzB,CACD,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"previewButton.cjs","sources":["../../../src/components/previewButton.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport { Button } from './button';\n\n// eslint-disable-next-line ts/naming-convention\nexport function PreviewButton(): ReactElement {\n return (\n <>\n {\n window.location.search.includes('adhesePreviewCreativeId') && (\n <Button\n onClick={() => {\n const currentUrl = new URL(window.location.href);\n\n window.location.replace(`${currentUrl.origin}${currentUrl.pathname === '/' ? '' : currentUrl.pathname}`);\n }}\n variant=\"secondary\"\n >\n Disable preview mode\n </Button>\n )\n }\n </>\n );\n}\n"],"names":["jsx","Button"],"mappings":";;;;AAIO,SAAS,gBAA8B;AAC5C,+DAGM,UAAO,OAAA,SAAS,OAAO,SAAS,yBAAyB,KACvDA,2BAAA;AAAA,IAACC,OAAA;AAAA,IAAA;AAAA,MACC,SAAS,MAAM;AACb,cAAM,aAAa,IAAI,IAAI,OAAO,SAAS,IAAI;AAE/C,eAAO,SAAS,QAAQ,GAAG,WAAW,MAAM,GAAG,WAAW,aAAa,MAAM,KAAK,WAAW,QAAQ,EAAE;AAAA,MACzG;AAAA,MACA,SAAQ;AAAA,MACT,UAAA;AAAA,IAAA;AAAA,EAAA,GAKP;AAEJ;;"}
1
+ {"version":3,"file":"previewButton.cjs","sources":["../../../src/components/previewButton.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport { Button } from './button';\n\n// eslint-disable-next-line ts/naming-convention\nexport function PreviewButton(): ReactElement {\n return (\n <>\n {\n window.location.search.includes('adhesePreviewCreativeId') && (\n <Button\n onClick={() => {\n const currentUrl = new URL(window.location.href);\n\n window.location.replace(`${currentUrl.origin}${currentUrl.pathname === '/' ? '' : currentUrl.pathname}`);\n }}\n variant=\"secondary\"\n >\n Disable preview mode\n </Button>\n )\n }\n </>\n );\n}\n"],"names":["jsx","Button"],"mappings":";;;;AAIO,SAAS,gBAA8B;AAC5C,+DAGM,UAAA,OAAO,SAAS,OAAO,SAAS,yBAAyB,KACvDA,2BAAAA;AAAAA,IAACC,OAAAA;AAAAA,IAAA;AAAA,MACC,SAAS,MAAM;AACb,cAAM,aAAa,IAAI,IAAI,OAAO,SAAS,IAAI;AAE/C,eAAO,SAAS,QAAQ,GAAG,WAAW,MAAM,GAAG,WAAW,aAAa,MAAM,KAAK,WAAW,QAAQ,EAAE;AAAA,MACzG;AAAA,MACA,SAAQ;AAAA,MACT,UAAA;AAAA,IAAA;AAAA,EAAA,GAKP;AAEJ;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"settings.cjs","sources":["../../../src/components/settings.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport { FronttailSettings } from './fronttailSettings';\n\nconst settingClasses = 'border-solid border-b-2 border-accent pb-8 mb-8 last:mb-0 last:pb-0 last:border-0';\n\n// eslint-disable-next-line ts/naming-convention\nexport function Settings(): ReactElement {\n return (\n <div>\n <FronttailSettings className={settingClasses} />\n </div>\n );\n}\n"],"names":["jsx","FronttailSettings"],"mappings":";;;;AAGA,MAAM,iBAAiB;AAGhB,SAAS,WAAyB;AACvC,wCACG,OACC,EAAA,UAAAA,2BAAAA,IAACC,kBAAkB,mBAAA,EAAA,WAAW,eAAgB,CAAA,GAChD;AAEJ;;"}
1
+ {"version":3,"file":"settings.cjs","sources":["../../../src/components/settings.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport { FronttailSettings } from './fronttailSettings';\n\nconst settingClasses = 'border-solid border-b-2 border-accent pb-8 mb-8 last:mb-0 last:pb-0 last:border-0';\n\n// eslint-disable-next-line ts/naming-convention\nexport function Settings(): ReactElement {\n return (\n <div>\n <FronttailSettings className={settingClasses} />\n </div>\n );\n}\n"],"names":["jsx","FronttailSettings"],"mappings":";;;;AAGA,MAAM,iBAAiB;AAGhB,SAAS,WAAyB;AACvC,wCACG,OAAA,EACC,UAAAA,2BAAAA,IAACC,kBAAAA,mBAAA,EAAkB,WAAW,gBAAgB,GAChD;AAEJ;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"sheet.cjs","sources":["../../../src/components/sheet.tsx"],"sourcesContent":["/* eslint-disable ts/naming-convention */\nimport * as SheetPrimitive from '@radix-ui/react-dialog';\nimport { Cross2Icon } from '@radix-ui/react-icons';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef, type HTMLAttributes, type ReactElement } from 'react';\nimport { cn } from '../utils';\n\nconst Sheet = SheetPrimitive.Root;\n\nconst SheetTrigger = SheetPrimitive.Trigger;\n\nconst SheetClose = SheetPrimitive.Close;\n\nconst SheetPortal = SheetPrimitive.Portal;\n\nconst SheetOverlay = forwardRef<\n ElementRef<typeof SheetPrimitive.Overlay>,\n ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\n 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className,\n )}\n {...props}\n ref={ref}\n />\n));\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName;\n\nconst sheetVariants = cva(\n 'fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500',\n {\n variants: {\n side: {\n top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',\n bottom:\n 'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',\n left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',\n right:\n 'inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',\n },\n },\n defaultVariants: {\n side: 'right',\n },\n },\n);\n\ninterface SheetContentProps\n extends ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = forwardRef<\n ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = 'right', className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n <Cross2Icon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n));\nSheetContent.displayName = SheetPrimitive.Content.displayName;\n\nfunction SheetHeader({\n className,\n ...props\n}: HTMLAttributes<HTMLDivElement>): ReactElement {\n return (\n <div\n className={cn(\n 'flex flex-col space-y-2 text-center sm:text-left',\n className,\n )}\n {...props}\n />\n );\n}\nSheetHeader.displayName = 'SheetHeader';\n\nfunction SheetFooter({\n className,\n ...props\n}: HTMLAttributes<HTMLDivElement>): ReactElement {\n return (\n <div\n className={cn(\n 'flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2',\n className,\n )}\n {...props}\n />\n );\n}\nSheetFooter.displayName = 'SheetFooter';\n\nconst SheetTitle = forwardRef<\n ElementRef<typeof SheetPrimitive.Title>,\n ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold text-foreground', className)}\n {...props}\n />\n));\nSheetTitle.displayName = SheetPrimitive.Title.displayName;\n\nconst SheetDescription = forwardRef<\n ElementRef<typeof SheetPrimitive.Description>,\n ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n));\nSheetDescription.displayName = SheetPrimitive.Description.displayName;\n\nexport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetOverlay,\n SheetPortal,\n SheetTitle,\n SheetTrigger,\n};\n"],"names":["SheetPrimitive","forwardRef","jsx","cn","cva","jsxs","Cross2Icon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM,QAAQA,0BAAe;AAE7B,MAAM,eAAeA,0BAAe;AAIpC,MAAM,cAAcA,0BAAe;AAE7B,MAAA,eAAeC,iBAGnB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAA;AAAA,EAACF,0BAAe;AAAA,EAAf;AAAA,IACC,WAAWG,MAAA;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA,IACJ;AAAA,EAAA;AACF,CACD;AACD,aAAa,cAAcH,0BAAe,QAAQ;AAElD,MAAM,gBAAgBI,uBAAA;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,KAAK;AAAA,QACL,QACE;AAAA,QACF,MAAM;AAAA,QACN,OACE;AAAA,MAAA;AAAA,IAEN;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ;AAMA,MAAM,eAAeH,MAAAA,WAGnB,CAAC,EAAE,OAAO,SAAS,WAAW,UAAU,GAAG,MAAS,GAAA,wCACnD,aACC,EAAA,UAAA;AAAA,EAAAC,2BAAA,IAAC,cAAa,EAAA;AAAA,EACdG,2BAAA;AAAA,IAACL,0BAAe;AAAA,IAAf;AAAA,MACC;AAAA,MACA,WAAWG,MAAG,GAAA,cAAc,EAAE,KAAM,CAAA,GAAG,SAAS;AAAA,MAC/C,GAAG;AAAA,MAEH,UAAA;AAAA,QAAA;AAAA,QACAE,2BAAA,KAAAL,0BAAe,OAAf,EAAqB,WAAU,4OAC9B,UAAA;AAAA,UAACE,2BAAAA,IAAAI,WAAA,YAAA,EAAW,WAAU,UAAU,CAAA;AAAA,UAC/BJ,2BAAA,IAAA,QAAA,EAAK,WAAU,WAAU,UAAK,QAAA,CAAA;AAAA,QAAA,EACjC,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AACF,GACF,CACD;AACD,aAAa,cAAcF,0BAAe,QAAQ;AAElD,SAAS,YAAY;AAAA,EACnB;AAAA,EACA,GAAG;AACL,GAAiD;AAE7C,SAAAE,2BAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,MAAA;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,IAAA;AAAA,EACN;AAEJ;AACA,YAAY,cAAc;AAkBpB,MAAA,aAAaF,iBAGjB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAA;AAAA,EAACF,0BAAe;AAAA,EAAf;AAAA,IACC;AAAA,IACA,WAAWG,MAAAA,GAAG,yCAAyC,SAAS;AAAA,IAC/D,GAAG;AAAA,EAAA;AACN,CACD;AACD,WAAW,cAAcH,0BAAe,MAAM;AAExC,MAAA,mBAAmBC,iBAGvB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAA;AAAA,EAACF,0BAAe;AAAA,EAAf;AAAA,IACC;AAAA,IACA,WAAWG,MAAAA,GAAG,iCAAiC,SAAS;AAAA,IACvD,GAAG;AAAA,EAAA;AACN,CACD;AACD,iBAAiB,cAAcH,0BAAe,YAAY;;;;;;;;;"}
1
+ {"version":3,"file":"sheet.cjs","sources":["../../../src/components/sheet.tsx"],"sourcesContent":["/* eslint-disable ts/naming-convention */\nimport * as SheetPrimitive from '@radix-ui/react-dialog';\nimport { Cross2Icon } from '@radix-ui/react-icons';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef, type HTMLAttributes, type ReactElement } from 'react';\nimport { cn } from '../utils';\n\nconst Sheet = SheetPrimitive.Root;\n\nconst SheetTrigger = SheetPrimitive.Trigger;\n\nconst SheetClose = SheetPrimitive.Close;\n\nconst SheetPortal = SheetPrimitive.Portal;\n\nconst SheetOverlay = forwardRef<\n ElementRef<typeof SheetPrimitive.Overlay>,\n ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\n 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className,\n )}\n {...props}\n ref={ref}\n />\n));\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName;\n\nconst sheetVariants = cva(\n 'fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500',\n {\n variants: {\n side: {\n top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',\n bottom:\n 'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',\n left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',\n right:\n 'inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',\n },\n },\n defaultVariants: {\n side: 'right',\n },\n },\n);\n\ninterface SheetContentProps\n extends ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = forwardRef<\n ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = 'right', className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n <Cross2Icon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n));\nSheetContent.displayName = SheetPrimitive.Content.displayName;\n\nfunction SheetHeader({\n className,\n ...props\n}: HTMLAttributes<HTMLDivElement>): ReactElement {\n return (\n <div\n className={cn(\n 'flex flex-col space-y-2 text-center sm:text-left',\n className,\n )}\n {...props}\n />\n );\n}\nSheetHeader.displayName = 'SheetHeader';\n\nfunction SheetFooter({\n className,\n ...props\n}: HTMLAttributes<HTMLDivElement>): ReactElement {\n return (\n <div\n className={cn(\n 'flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2',\n className,\n )}\n {...props}\n />\n );\n}\nSheetFooter.displayName = 'SheetFooter';\n\nconst SheetTitle = forwardRef<\n ElementRef<typeof SheetPrimitive.Title>,\n ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold text-foreground', className)}\n {...props}\n />\n));\nSheetTitle.displayName = SheetPrimitive.Title.displayName;\n\nconst SheetDescription = forwardRef<\n ElementRef<typeof SheetPrimitive.Description>,\n ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n));\nSheetDescription.displayName = SheetPrimitive.Description.displayName;\n\nexport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetOverlay,\n SheetPortal,\n SheetTitle,\n SheetTrigger,\n};\n"],"names":["SheetPrimitive","forwardRef","jsx","cn","cva","jsxs","Cross2Icon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM,QAAQA,0BAAe;AAE7B,MAAM,eAAeA,0BAAe;AAIpC,MAAM,cAAcA,0BAAe;AAEnC,MAAM,eAAeC,MAAAA,WAGnB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAACF,0BAAe;AAAA,EAAf;AAAA,IACC,WAAWG,MAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,IACJ;AAAA,EAAA;AACF,CACD;AACD,aAAa,cAAcH,0BAAe,QAAQ;AAElD,MAAM,gBAAgBI,uBAAAA;AAAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,KAAK;AAAA,QACL,QACE;AAAA,QACF,MAAM;AAAA,QACN,OACE;AAAA,MAAA;AAAA,IACJ;AAAA,IAEF,iBAAiB;AAAA,MACf,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ;AAMA,MAAM,eAAeH,MAAAA,WAGnB,CAAC,EAAE,OAAO,SAAS,WAAW,UAAU,GAAG,MAAA,GAAS,wCACnD,aAAA,EACC,UAAA;AAAA,EAAAC,2BAAAA,IAAC,cAAA,EAAa;AAAA,EACdG,2BAAAA;AAAAA,IAACL,0BAAe;AAAA,IAAf;AAAA,MACC;AAAA,MACA,WAAWG,MAAAA,GAAG,cAAc,EAAE,KAAA,CAAM,GAAG,SAAS;AAAA,MAC/C,GAAG;AAAA,MAEH,UAAA;AAAA,QAAA;AAAA,QACDE,2BAAAA,KAACL,0BAAe,OAAf,EAAqB,WAAU,4OAC9B,UAAA;AAAA,UAAAE,2BAAAA,IAACI,WAAAA,YAAA,EAAW,WAAU,UAAA,CAAU;AAAA,UAChCJ,2BAAAA,IAAC,QAAA,EAAK,WAAU,WAAU,UAAA,QAAA,CAAK;AAAA,QAAA,EAAA,CACjC;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AACF,GACF,CACD;AACD,aAAa,cAAcF,0BAAe,QAAQ;AAElD,SAAS,YAAY;AAAA,EACnB;AAAA,EACA,GAAG;AACL,GAAiD;AAC/C,SACEE,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,MAAAA;AAAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;AACA,YAAY,cAAc;AAkB1B,MAAM,aAAaF,MAAAA,WAGjB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAACF,0BAAe;AAAA,EAAf;AAAA,IACC;AAAA,IACA,WAAWG,MAAAA,GAAG,yCAAyC,SAAS;AAAA,IAC/D,GAAG;AAAA,EAAA;AACN,CACD;AACD,WAAW,cAAcH,0BAAe,MAAM;AAE9C,MAAM,mBAAmBC,MAAAA,WAGvB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAACF,0BAAe;AAAA,EAAf;AAAA,IACC;AAAA,IACA,WAAWG,MAAAA,GAAG,iCAAiC,SAAS;AAAA,IACvD,GAAG;AAAA,EAAA;AACN,CACD;AACD,iBAAiB,cAAcH,0BAAe,YAAY;;;;;;;;;"}
@@ -115,6 +115,7 @@ function SlotsTable() {
115
115
  format,
116
116
  location,
117
117
  status,
118
+ isEmpty,
118
119
  isViewabilityTracked,
119
120
  isImpressionTracked,
120
121
  element,
@@ -149,7 +150,10 @@ function SlotsTable() {
149
150
  /* @__PURE__ */ jsxRuntime.jsx("ins", { className: "no-underline text-green-700", children: data == null ? void 0 : data.adFormat })
150
151
  ] }) }),
151
152
  origins.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(table.TableCell, { children: (data == null ? void 0 : data.origin) && /* @__PURE__ */ jsxRuntime.jsx(badge.Badge, { className: utils.cn(slotIndexBadgeClasses[origins.indexOf(data.origin) % slotIndexBadgeClasses.length], "text-white"), children: data.origin.toLowerCase() }) }),
152
- /* @__PURE__ */ jsxRuntime.jsx(table.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsx(badge.Badge, { variant: "outline", className: utils.cn(status === "error" ? "bg-red-500 text-red-50" : ""), children: renderStatusMap[status] }) }),
153
+ /* @__PURE__ */ jsxRuntime.jsxs(table.TableCell, { children: [
154
+ /* @__PURE__ */ jsxRuntime.jsx(badge.Badge, { variant: "outline", className: utils.cn(status === "error" ? "bg-red-500 text-red-50" : ""), children: renderStatusMap[status] }),
155
+ status === "rendered" && isEmpty && /* @__PURE__ */ jsxRuntime.jsx(badge.Badge, { variant: "secondary", className: "ml-1", children: "No-fill" })
156
+ ] }),
153
157
  /* @__PURE__ */ jsxRuntime.jsx(table.TableCell, { children: (data == null ? void 0 : data.orderId) && (data == null ? void 0 : data.orderId) !== "0" ? /* @__PURE__ */ jsxRuntime.jsx(
154
158
  "a",
155
159
  {
@@ -1 +1 @@
1
- {"version":3,"file":"slotsTable.cjs","sources":["../../../src/components/slotsTable.tsx"],"sourcesContent":["import type { AdheseAd, AdheseSlot } from '@adhese/sdk';\nimport type { DevtoolsSlotPluginOptions } from '../devtools.composables';\nimport { generateName, type UnwrapRef, watch } from '@adhese/sdk-shared';\nimport { ResetIcon } from '@radix-ui/react-icons';\nimport { Fragment, type ReactElement, useEffect, useMemo, useState } from 'react';\nimport { useAdheseContext } from '../AdheseContext';\nimport { useModifiedSlots } from '../modifiedSlots.store';\nimport { cn } from '../utils';\nimport { Badge } from './badge';\nimport { Button, buttonVariants } from './button';\nimport { EditSlot } from './editSlot';\nimport { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger } from './sheet';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from './table';\n\nexport const slotIndexBadgeClasses = [\n 'bg-blue-500 hover:bg-blue-500',\n 'bg-amber-500 hover:bg-amber-500',\n 'bg-green-500 hover:bg-green-500',\n 'bg-red-500 hover:bg-red-500',\n 'bg-purple-500 hover:bg-purple-500',\n 'bg-cyan-500 hover:bg-cyan-500',\n 'bg-pink-500 hover:bg-pink-500',\n] as const;\n\nconst renderStatusMap = {\n initializing: 'Initializing',\n initialized: 'Initialized',\n loading: 'Loading',\n loaded: 'Loaded',\n rendering: 'Rendering',\n rendered: 'Rendered',\n empty: 'Empty',\n error: 'Error',\n} as const satisfies Record<UnwrapRef<AdheseSlot['status']>, string>;\n\n// eslint-disable-next-line ts/naming-convention\nexport function SlotsTable(): ReactElement {\n const [slots, setSlots] = useState<ReadonlyArray<AdheseSlot>>([]);\n\n const adheseContext = useAdheseContext();\n\n useEffect(() => {\n if (!adheseContext)\n return;\n\n const disposeWatcher = watch(() => adheseContext.slots, (newSlots) => {\n setSlots(Array.from(newSlots.values()));\n }, { immediate: true, deep: true });\n\n return (): void => {\n disposeWatcher();\n };\n }, [adheseContext]);\n const modifiedSlots = useModifiedSlots();\n\n const formattedSlots = useMemo(() => slots\n .filter(slot => !(slot.pluginOptions?.devtools as DevtoolsSlotPluginOptions)?.hijackedSlot)\n .map((slot) => {\n const hijackedSlotOptions = modifiedSlots.slots.get(slot.name);\n const hijackedSlot = (adheseContext && hijackedSlotOptions) && adheseContext.get?.(generateName(adheseContext.location, hijackedSlotOptions.format, hijackedSlotOptions.slot));\n\n let interimSlot = hijackedSlot ?? slot;\n\n if (interimSlot.data?.origin === 'DALE') {\n // @ts-expect-error - Data structure is not typed and very messy to type\n\n const nestedAdheseData = interimSlot.data?.originData?.seatbid[0]?.bid[0]?.ext?.adhese as AdheseAd;\n\n interimSlot = {\n ...interimSlot,\n data: {\n ...interimSlot.data,\n ...nestedAdheseData,\n },\n };\n }\n\n return ({\n ...interimSlot,\n parameters: Array.from((hijackedSlot ?? slot).parameters.entries()),\n hijackedSlot,\n originalSlot: slot,\n });\n })\n .toSorted((a, b) => {\n const offsetA = a.element?.getBoundingClientRect().top ?? 0;\n const offsetB = b.element?.getBoundingClientRect().top ?? 0;\n\n return offsetA - offsetB;\n }), [slots]);\n\n const slotParametersExist = useMemo(() => formattedSlots.some(formattedSlot => formattedSlot.parameters.length > 0), [formattedSlots]);\n const previewExist = useMemo(() => formattedSlots.some(formattedSlot => formattedSlot.data?.preview), [formattedSlots]);\n const slotCodeExists = useMemo(() => formattedSlots.some(formattedSlot => formattedSlot.slot), [formattedSlots]);\n\n const origins: ReadonlyArray<string> = useMemo(() => {\n const set = new Set<string>();\n\n for (const slot of formattedSlots) {\n const { data } = slot;\n\n if (data)\n set.add(data.origin);\n }\n\n return Array.from(set);\n }, [formattedSlots]);\n\n return (\n adheseContext && (formattedSlots.length > 0)\n ? (\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>Name</TableHead>\n <TableHead>Location</TableHead>\n {slotCodeExists && <TableHead>Slot</TableHead>}\n <TableHead>Format</TableHead>\n {origins.length > 1 && <TableHead>Origin</TableHead>}\n <TableHead>Render Status</TableHead>\n <TableHead>Campaign ID</TableHead>\n <TableHead>Booking ID</TableHead>\n <TableHead>Creative ID</TableHead>\n <TableHead>Traffic ID</TableHead>\n <TableHead>Creative type</TableHead>\n <TableHead>Impression tracked</TableHead>\n <TableHead>Viewability tracked</TableHead>\n {\n slotParametersExist && <TableHead>Parameters</TableHead>\n }\n {\n previewExist && <TableHead>Preview</TableHead>\n }\n <TableHead>Controls</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {formattedSlots.map(({\n data,\n name,\n format,\n location,\n status,\n isViewabilityTracked,\n isImpressionTracked,\n element,\n parameters,\n slot,\n hijackedSlot,\n originalSlot,\n }, index) => (\n <Fragment key={originalSlot.id}>\n <TableRow id={name}>\n <TableCell className=\"font-medium\">\n <button\n onClick={() => {\n if (element) {\n element.scrollIntoView();\n element.style.outline = 'solid 5px red';\n\n setTimeout(() => {\n element.style.outline = '';\n }, 1000);\n }\n }}\n className=\"flex flex-col gap-1\"\n >\n <Badge className={cn(slotIndexBadgeClasses[index % slotIndexBadgeClasses.length], 'text-white')}>\n {name}\n </Badge>\n {hijackedSlot && <del className=\"text-xs text-muted-foreground\">{originalSlot.name}</del>}\n </button>\n </TableCell>\n <TableCell>{location}</TableCell>\n {slotCodeExists && <TableCell>{slot ?? ''}</TableCell>}\n <TableCell>\n {!data?.adFormat || data?.adFormat === format\n ? format\n : (\n <>\n <del className=\"text-red-300 italic\">{format}</del>\n <ins className=\"no-underline text-green-700\">{data?.adFormat}</ins>\n </>\n )}\n </TableCell>\n {origins.length > 1 && (\n <TableCell>\n {data?.origin && <Badge className={cn(slotIndexBadgeClasses[origins.indexOf(data.origin) % slotIndexBadgeClasses.length], 'text-white')}>{data.origin.toLowerCase()}</Badge>}\n </TableCell>\n )}\n <TableCell>\n <Badge variant=\"outline\" className={cn(status === 'error' ? 'bg-red-500 text-red-50' : '')}>\n {renderStatusMap[status]}\n </Badge>\n </TableCell>\n <TableCell>\n {data?.orderId && data?.orderId !== '0'\n ? (\n <a\n href={`https://${adheseContext.options.account}.adhese.org/campaigns.html#campaignDetail/editCampaign/${data.orderId}`}\n target=\"_blank\"\n referrerPolicy=\"no-referrer\"\n className={cn(buttonVariants({\n variant: 'ghost',\n size: 'sm',\n }))}\n >\n {data.orderId}\n </a>\n )\n : '-'}\n </TableCell>\n <TableCell>\n {data?.adspaceId && data?.adspaceId !== '0'\n ? (\n <a\n href={`https://${adheseContext.options.account}.adhese.org/campaigns.html#campaignDetail/bookingDetail/${data.adspaceId}/${data.orderId}`}\n target=\"_blank\"\n referrerPolicy=\"no-referrer\"\n className={cn(buttonVariants({\n variant: 'ghost',\n size: 'sm',\n }))}\n >\n {data.adspaceId}\n </a>\n )\n : '-'}\n </TableCell>\n <TableCell>\n {data?.libId && data?.orderId !== '0'\n ? (\n <a\n href={`https://${adheseContext.options.account}.adhese.org/campaigns.html#campaignDetail/creativeDetail/${data.libId}/${data.orderId}`}\n target=\"_blank\"\n referrerPolicy=\"no-referrer\"\n className={cn(buttonVariants({\n variant: 'ghost',\n size: 'sm',\n }))}\n >\n {data.libId}\n </a>\n )\n : '-'}\n </TableCell>\n <TableCell>{data?.id ?? '-'}</TableCell>\n <TableCell>{data?.ext ? <Badge variant=\"outline\">{data.ext}</Badge> : '-'}</TableCell>\n <TableCell>\n {isImpressionTracked\n ? <Badge className=\"bg-green-100 text-green-900 hover:bg-green-100\">Yes</Badge>\n : <Badge variant=\"secondary\">No</Badge>}\n </TableCell>\n <TableCell>\n {isViewabilityTracked\n ? <Badge className=\"bg-green-100 text-green-900 hover:bg-green-100\">Yes</Badge>\n : <Badge variant=\"secondary\">No</Badge>}\n </TableCell>\n {\n slotParametersExist && (\n <TableCell>\n {\n parameters.length > 0 && (\n <Sheet>\n <SheetTrigger className={buttonVariants({\n variant: 'secondary',\n size: 'sm',\n })}\n >\n Show\n </SheetTrigger>\n <SheetContent className=\"bg-white flex flex-col gap-4\">\n <SheetHeader>\n <SheetTitle>\n Parameters\n </SheetTitle>\n </SheetHeader>\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>Key</TableHead>\n <TableHead>Value</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {parameters.map(([parameterName, value]) => (\n <TableRow key={parameterName}>\n <TableCell>\n <Badge variant=\"outline\">{parameterName}</Badge>\n </TableCell>\n <TableCell>\n {\n Array.isArray(value)\n ? (\n <ul className=\"flex gap-1\">\n {value.map((item, paramIndex) => (\n <li key={paramIndex}>\n <Badge variant=\"outline\">{item}</Badge>\n </li>\n ))}\n </ul>\n )\n : <Badge variant=\"outline\">{value}</Badge>\n }\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </SheetContent>\n </Sheet>\n )\n }\n </TableCell>\n )\n }\n {previewExist && (\n <TableCell>\n {data?.preview\n && (\n <Badge className=\"bg-amber-400 text-amber-950 hover:bg-amber-400\">\n PREVIEW\n </Badge>\n )}\n </TableCell>\n )}\n <TableCell className=\"flex gap-1\">\n <EditSlot id={originalSlot.id} />\n {modifiedSlots.slots.has(originalSlot.name) && (\n <Button\n onClick={\n () => {\n modifiedSlots.remove(originalSlot.name);\n }\n }\n variant=\"ghost\"\n size=\"sm\"\n title=\"Reset\"\n >\n <ResetIcon />\n </Button>\n )}\n </TableCell>\n </TableRow>\n </Fragment>\n ))}\n </TableBody>\n </Table>\n )\n : <p>No slots available</p>\n );\n}\n"],"names":["useState","useAdheseContext","useEffect","watch","useModifiedSlots","useMemo","generateName","Table","jsx","TableHeader","TableRow","TableHead","TableBody","Fragment","jsxs","TableCell","Badge","cn","buttonVariants","Sheet","SheetTrigger","SheetContent","SheetHeader","SheetTitle","EditSlot","Button","ResetIcon"],"mappings":"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"}
1
+ {"version":3,"file":"slotsTable.cjs","sources":["../../../src/components/slotsTable.tsx"],"sourcesContent":["import type { AdheseAd, AdheseSlot } from '@adhese/sdk';\nimport type { DevtoolsSlotPluginOptions } from '../devtools.composables';\nimport { generateName, type UnwrapRef, watch } from '@adhese/sdk-shared';\nimport { ResetIcon } from '@radix-ui/react-icons';\nimport { Fragment, type ReactElement, useEffect, useMemo, useState } from 'react';\nimport { useAdheseContext } from '../AdheseContext';\nimport { useModifiedSlots } from '../modifiedSlots.store';\nimport { cn } from '../utils';\nimport { Badge } from './badge';\nimport { Button, buttonVariants } from './button';\nimport { EditSlot } from './editSlot';\nimport { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger } from './sheet';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from './table';\n\nexport const slotIndexBadgeClasses = [\n 'bg-blue-500 hover:bg-blue-500',\n 'bg-amber-500 hover:bg-amber-500',\n 'bg-green-500 hover:bg-green-500',\n 'bg-red-500 hover:bg-red-500',\n 'bg-purple-500 hover:bg-purple-500',\n 'bg-cyan-500 hover:bg-cyan-500',\n 'bg-pink-500 hover:bg-pink-500',\n] as const;\n\nconst renderStatusMap = {\n initializing: 'Initializing',\n initialized: 'Initialized',\n loading: 'Loading',\n loaded: 'Loaded',\n rendering: 'Rendering',\n rendered: 'Rendered',\n empty: 'Empty',\n error: 'Error',\n} as const satisfies Record<UnwrapRef<AdheseSlot['status']>, string>;\n\n// eslint-disable-next-line ts/naming-convention\nexport function SlotsTable(): ReactElement {\n const [slots, setSlots] = useState<ReadonlyArray<AdheseSlot>>([]);\n\n const adheseContext = useAdheseContext();\n\n useEffect(() => {\n if (!adheseContext)\n return;\n\n const disposeWatcher = watch(() => adheseContext.slots, (newSlots) => {\n setSlots(Array.from(newSlots.values()));\n }, { immediate: true, deep: true });\n\n return (): void => {\n disposeWatcher();\n };\n }, [adheseContext]);\n const modifiedSlots = useModifiedSlots();\n\n const formattedSlots = useMemo(() => slots\n .filter(slot => !(slot.pluginOptions?.devtools as DevtoolsSlotPluginOptions)?.hijackedSlot)\n .map((slot) => {\n const hijackedSlotOptions = modifiedSlots.slots.get(slot.name);\n const hijackedSlot = (adheseContext && hijackedSlotOptions) && adheseContext.get?.(generateName(adheseContext.location, hijackedSlotOptions.format, hijackedSlotOptions.slot));\n\n let interimSlot = hijackedSlot ?? slot;\n\n if (interimSlot.data?.origin === 'DALE') {\n // @ts-expect-error - Data structure is not typed and very messy to type\n\n const nestedAdheseData = interimSlot.data?.originData?.seatbid[0]?.bid[0]?.ext?.adhese as AdheseAd;\n\n interimSlot = {\n ...interimSlot,\n data: {\n ...interimSlot.data,\n ...nestedAdheseData,\n },\n };\n }\n\n return ({\n ...interimSlot,\n parameters: Array.from((hijackedSlot ?? slot).parameters.entries()),\n hijackedSlot,\n originalSlot: slot,\n });\n })\n .toSorted((a, b) => {\n const offsetA = a.element?.getBoundingClientRect().top ?? 0;\n const offsetB = b.element?.getBoundingClientRect().top ?? 0;\n\n return offsetA - offsetB;\n }), [slots]);\n\n const slotParametersExist = useMemo(() => formattedSlots.some(formattedSlot => formattedSlot.parameters.length > 0), [formattedSlots]);\n const previewExist = useMemo(() => formattedSlots.some(formattedSlot => formattedSlot.data?.preview), [formattedSlots]);\n const slotCodeExists = useMemo(() => formattedSlots.some(formattedSlot => formattedSlot.slot), [formattedSlots]);\n\n const origins: ReadonlyArray<string> = useMemo(() => {\n const set = new Set<string>();\n\n for (const slot of formattedSlots) {\n const { data } = slot;\n\n if (data)\n set.add(data.origin);\n }\n\n return Array.from(set);\n }, [formattedSlots]);\n\n return (\n adheseContext && (formattedSlots.length > 0)\n ? (\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>Name</TableHead>\n <TableHead>Location</TableHead>\n {slotCodeExists && <TableHead>Slot</TableHead>}\n <TableHead>Format</TableHead>\n {origins.length > 1 && <TableHead>Origin</TableHead>}\n <TableHead>Render Status</TableHead>\n <TableHead>Campaign ID</TableHead>\n <TableHead>Booking ID</TableHead>\n <TableHead>Creative ID</TableHead>\n <TableHead>Traffic ID</TableHead>\n <TableHead>Creative type</TableHead>\n <TableHead>Impression tracked</TableHead>\n <TableHead>Viewability tracked</TableHead>\n {\n slotParametersExist && <TableHead>Parameters</TableHead>\n }\n {\n previewExist && <TableHead>Preview</TableHead>\n }\n <TableHead>Controls</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {formattedSlots.map(({\n data,\n name,\n format,\n location,\n status,\n isEmpty,\n isViewabilityTracked,\n isImpressionTracked,\n element,\n parameters,\n slot,\n hijackedSlot,\n originalSlot,\n }, index) => (\n <Fragment key={originalSlot.id}>\n <TableRow id={name}>\n <TableCell className=\"font-medium\">\n <button\n onClick={() => {\n if (element) {\n element.scrollIntoView();\n element.style.outline = 'solid 5px red';\n\n setTimeout(() => {\n element.style.outline = '';\n }, 1000);\n }\n }}\n className=\"flex flex-col gap-1\"\n >\n <Badge className={cn(slotIndexBadgeClasses[index % slotIndexBadgeClasses.length], 'text-white')}>\n {name}\n </Badge>\n {hijackedSlot && <del className=\"text-xs text-muted-foreground\">{originalSlot.name}</del>}\n </button>\n </TableCell>\n <TableCell>{location}</TableCell>\n {slotCodeExists && <TableCell>{slot ?? ''}</TableCell>}\n <TableCell>\n {!data?.adFormat || data?.adFormat === format\n ? format\n : (\n <>\n <del className=\"text-red-300 italic\">{format}</del>\n <ins className=\"no-underline text-green-700\">{data?.adFormat}</ins>\n </>\n )}\n </TableCell>\n {origins.length > 1 && (\n <TableCell>\n {data?.origin && <Badge className={cn(slotIndexBadgeClasses[origins.indexOf(data.origin) % slotIndexBadgeClasses.length], 'text-white')}>{data.origin.toLowerCase()}</Badge>}\n </TableCell>\n )}\n <TableCell>\n <Badge variant=\"outline\" className={cn(status === 'error' ? 'bg-red-500 text-red-50' : '')}>\n {renderStatusMap[status]}\n </Badge>\n {status === 'rendered' && isEmpty && (\n <Badge variant=\"secondary\" className=\"ml-1\">No-fill</Badge>\n )}\n </TableCell>\n <TableCell>\n {data?.orderId && data?.orderId !== '0'\n ? (\n <a\n href={`https://${adheseContext.options.account}.adhese.org/campaigns.html#campaignDetail/editCampaign/${data.orderId}`}\n target=\"_blank\"\n referrerPolicy=\"no-referrer\"\n className={cn(buttonVariants({\n variant: 'ghost',\n size: 'sm',\n }))}\n >\n {data.orderId}\n </a>\n )\n : '-'}\n </TableCell>\n <TableCell>\n {data?.adspaceId && data?.adspaceId !== '0'\n ? (\n <a\n href={`https://${adheseContext.options.account}.adhese.org/campaigns.html#campaignDetail/bookingDetail/${data.adspaceId}/${data.orderId}`}\n target=\"_blank\"\n referrerPolicy=\"no-referrer\"\n className={cn(buttonVariants({\n variant: 'ghost',\n size: 'sm',\n }))}\n >\n {data.adspaceId}\n </a>\n )\n : '-'}\n </TableCell>\n <TableCell>\n {data?.libId && data?.orderId !== '0'\n ? (\n <a\n href={`https://${adheseContext.options.account}.adhese.org/campaigns.html#campaignDetail/creativeDetail/${data.libId}/${data.orderId}`}\n target=\"_blank\"\n referrerPolicy=\"no-referrer\"\n className={cn(buttonVariants({\n variant: 'ghost',\n size: 'sm',\n }))}\n >\n {data.libId}\n </a>\n )\n : '-'}\n </TableCell>\n <TableCell>{data?.id ?? '-'}</TableCell>\n <TableCell>{data?.ext ? <Badge variant=\"outline\">{data.ext}</Badge> : '-'}</TableCell>\n <TableCell>\n {isImpressionTracked\n ? <Badge className=\"bg-green-100 text-green-900 hover:bg-green-100\">Yes</Badge>\n : <Badge variant=\"secondary\">No</Badge>}\n </TableCell>\n <TableCell>\n {isViewabilityTracked\n ? <Badge className=\"bg-green-100 text-green-900 hover:bg-green-100\">Yes</Badge>\n : <Badge variant=\"secondary\">No</Badge>}\n </TableCell>\n {\n slotParametersExist && (\n <TableCell>\n {\n parameters.length > 0 && (\n <Sheet>\n <SheetTrigger className={buttonVariants({\n variant: 'secondary',\n size: 'sm',\n })}\n >\n Show\n </SheetTrigger>\n <SheetContent className=\"bg-white flex flex-col gap-4\">\n <SheetHeader>\n <SheetTitle>\n Parameters\n </SheetTitle>\n </SheetHeader>\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>Key</TableHead>\n <TableHead>Value</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {parameters.map(([parameterName, value]) => (\n <TableRow key={parameterName}>\n <TableCell>\n <Badge variant=\"outline\">{parameterName}</Badge>\n </TableCell>\n <TableCell>\n {\n Array.isArray(value)\n ? (\n <ul className=\"flex gap-1\">\n {value.map((item, paramIndex) => (\n <li key={paramIndex}>\n <Badge variant=\"outline\">{item}</Badge>\n </li>\n ))}\n </ul>\n )\n : <Badge variant=\"outline\">{value}</Badge>\n }\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </SheetContent>\n </Sheet>\n )\n }\n </TableCell>\n )\n }\n {previewExist && (\n <TableCell>\n {data?.preview\n && (\n <Badge className=\"bg-amber-400 text-amber-950 hover:bg-amber-400\">\n PREVIEW\n </Badge>\n )}\n </TableCell>\n )}\n <TableCell className=\"flex gap-1\">\n <EditSlot id={originalSlot.id} />\n {modifiedSlots.slots.has(originalSlot.name) && (\n <Button\n onClick={\n () => {\n modifiedSlots.remove(originalSlot.name);\n }\n }\n variant=\"ghost\"\n size=\"sm\"\n title=\"Reset\"\n >\n <ResetIcon />\n </Button>\n )}\n </TableCell>\n </TableRow>\n </Fragment>\n ))}\n </TableBody>\n </Table>\n )\n : <p>No slots available</p>\n );\n}\n"],"names":["useState","useAdheseContext","useEffect","watch","useModifiedSlots","useMemo","generateName","Table","jsx","TableHeader","TableRow","TableHead","TableBody","Fragment","jsxs","TableCell","Badge","cn","buttonVariants","Sheet","SheetTrigger","SheetContent","SheetHeader","SheetTitle","EditSlot","Button","ResetIcon"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"switch.cjs","sources":["../../../src/components/switch.tsx"],"sourcesContent":["// eslint-disable-next-line ts/naming-convention\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\n\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from 'react';\nimport { cn } from '../utils';\n\n// eslint-disable-next-line ts/naming-convention\nconst Switch = forwardRef<\n ElementRef<typeof SwitchPrimitives.Root>,\n ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n 'peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input',\n className,\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n 'pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0',\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n"],"names":["forwardRef","jsx","SwitchPrimitives","cn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAOM,MAAA,SAASA,iBAGb,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAA;AAAA,EAACC,4BAAiB;AAAA,EAAjB;AAAA,IACC,WAAWC,MAAA;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA,IACJ;AAAA,IAEA,UAAAF,2BAAA;AAAA,MAACC,4BAAiB;AAAA,MAAjB;AAAA,QACC,WAAWC,MAAA;AAAA,UACT;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EACF;AACF,CACD;AACD,OAAO,cAAcD,4BAAiB,KAAK;;"}
1
+ {"version":3,"file":"switch.cjs","sources":["../../../src/components/switch.tsx"],"sourcesContent":["// eslint-disable-next-line ts/naming-convention\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\n\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from 'react';\nimport { cn } from '../utils';\n\n// eslint-disable-next-line ts/naming-convention\nconst Switch = forwardRef<\n ElementRef<typeof SwitchPrimitives.Root>,\n ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n 'peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input',\n className,\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n 'pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0',\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n"],"names":["forwardRef","jsx","SwitchPrimitives","cn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM,SAASA,MAAAA,WAGb,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAACC,4BAAiB;AAAA,EAAjB;AAAA,IACC,WAAWC,MAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,IACJ;AAAA,IAEA,UAAAF,2BAAAA;AAAAA,MAACC,4BAAiB;AAAA,MAAjB;AAAA,QACC,WAAWC,MAAAA;AAAAA,UACT;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EACF;AACF,CACD;AACD,OAAO,cAAcD,4BAAiB,KAAK;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"table.cjs","sources":["../../../src/components/table.tsx"],"sourcesContent":["/* eslint-disable ts/naming-convention */\nimport { forwardRef, type HTMLAttributes, type TdHTMLAttributes, type ThHTMLAttributes } from 'react';\nimport { cn } from '../utils';\n\nconst Table = forwardRef<\n HTMLTableElement,\n HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn('w-full caption-bottom text-sm', className)}\n {...props}\n />\n </div>\n));\nTable.displayName = 'Table';\n\nconst TableHeader = forwardRef<\n HTMLTableSectionElement,\n HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn('[&_tr]:border-b', className)} {...props} />\n));\nTableHeader.displayName = 'TableHeader';\n\nconst TableBody = forwardRef<\n HTMLTableSectionElement,\n HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn('[&_tr:last-child]:border-0', className)}\n {...props}\n />\n));\nTableBody.displayName = 'TableBody';\n\nconst TableFooter = forwardRef<\n HTMLTableSectionElement,\n HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n 'border-t bg-muted/50 font-medium [&>tr]:last:border-b-0',\n className,\n )}\n {...props}\n />\n));\nTableFooter.displayName = 'TableFooter';\n\nconst TableRow = forwardRef<\n HTMLTableRowElement,\n HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n 'border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted',\n className,\n )}\n {...props}\n />\n));\nTableRow.displayName = 'TableRow';\n\nconst TableHead = forwardRef<\n HTMLTableCellElement,\n ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n 'h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className,\n )}\n {...props}\n />\n));\nTableHead.displayName = 'TableHead';\n\nconst TableCell = forwardRef<\n HTMLTableCellElement,\n TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n 'p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className,\n )}\n {...props}\n />\n));\nTableCell.displayName = 'TableCell';\n\nconst TableCaption = forwardRef<\n HTMLTableCaptionElement,\n HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn('mt-4 text-sm text-muted-foreground', className)}\n {...props}\n />\n));\nTableCaption.displayName = 'TableCaption';\n\nexport {\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n};\n"],"names":["forwardRef","jsx","cn"],"mappings":";;;;;AAIA,MAAM,QAAQA,MAAAA,WAGZ,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1BC,2BAAAA,IAAC,OAAI,EAAA,WAAU,iCACb,UAAAA,2BAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IACA,WAAWC,MAAAA,GAAG,iCAAiC,SAAS;AAAA,IACvD,GAAG;AAAA,EAAA;AACN,GACF,CACD;AACD,MAAM,cAAc;AAEpB,MAAM,cAAcF,MAGlB,WAAA,CAAC,EAAE,WAAW,GAAG,SAAS,uCACzB,SAAM,EAAA,KAAU,WAAWE,MAAG,GAAA,mBAAmB,SAAS,GAAI,GAAG,OAAO,CAC1E;AACD,YAAY,cAAc;AAEpB,MAAA,YAAYF,iBAGhB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IACA,WAAWC,MAAAA,GAAG,8BAA8B,SAAS;AAAA,IACpD,GAAG;AAAA,EAAA;AACN,CACD;AACD,UAAU,cAAc;AAElB,MAAA,cAAcF,iBAGlB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IACA,WAAWC,MAAA;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA,EAAA;AACN,CACD;AACD,YAAY,cAAc;AAEpB,MAAA,WAAWF,iBAGf,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IACA,WAAWC,MAAA;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA,EAAA;AACN,CACD;AACD,SAAS,cAAc;AAEjB,MAAA,YAAYF,iBAGhB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IACA,WAAWC,MAAA;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA,EAAA;AACN,CACD;AACD,UAAU,cAAc;AAElB,MAAA,YAAYF,iBAGhB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IACA,WAAWC,MAAA;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA,EAAA;AACN,CACD;AACD,UAAU,cAAc;AAElB,MAAA,eAAeF,iBAGnB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IACA,WAAWC,MAAAA,GAAG,sCAAsC,SAAS;AAAA,IAC5D,GAAG;AAAA,EAAA;AACN,CACD;AACD,aAAa,cAAc;;;;;;;;;"}
1
+ {"version":3,"file":"table.cjs","sources":["../../../src/components/table.tsx"],"sourcesContent":["/* eslint-disable ts/naming-convention */\nimport { forwardRef, type HTMLAttributes, type TdHTMLAttributes, type ThHTMLAttributes } from 'react';\nimport { cn } from '../utils';\n\nconst Table = forwardRef<\n HTMLTableElement,\n HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn('w-full caption-bottom text-sm', className)}\n {...props}\n />\n </div>\n));\nTable.displayName = 'Table';\n\nconst TableHeader = forwardRef<\n HTMLTableSectionElement,\n HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn('[&_tr]:border-b', className)} {...props} />\n));\nTableHeader.displayName = 'TableHeader';\n\nconst TableBody = forwardRef<\n HTMLTableSectionElement,\n HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn('[&_tr:last-child]:border-0', className)}\n {...props}\n />\n));\nTableBody.displayName = 'TableBody';\n\nconst TableFooter = forwardRef<\n HTMLTableSectionElement,\n HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n 'border-t bg-muted/50 font-medium [&>tr]:last:border-b-0',\n className,\n )}\n {...props}\n />\n));\nTableFooter.displayName = 'TableFooter';\n\nconst TableRow = forwardRef<\n HTMLTableRowElement,\n HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n 'border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted',\n className,\n )}\n {...props}\n />\n));\nTableRow.displayName = 'TableRow';\n\nconst TableHead = forwardRef<\n HTMLTableCellElement,\n ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n 'h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className,\n )}\n {...props}\n />\n));\nTableHead.displayName = 'TableHead';\n\nconst TableCell = forwardRef<\n HTMLTableCellElement,\n TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n 'p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className,\n )}\n {...props}\n />\n));\nTableCell.displayName = 'TableCell';\n\nconst TableCaption = forwardRef<\n HTMLTableCaptionElement,\n HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn('mt-4 text-sm text-muted-foreground', className)}\n {...props}\n />\n));\nTableCaption.displayName = 'TableCaption';\n\nexport {\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n};\n"],"names":["forwardRef","jsx","cn"],"mappings":";;;;;AAIA,MAAM,QAAQA,MAAAA,WAGZ,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA,IAAC,OAAA,EAAI,WAAU,iCACb,UAAAA,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IACA,WAAWC,MAAAA,GAAG,iCAAiC,SAAS;AAAA,IACvD,GAAG;AAAA,EAAA;AACN,GACF,CACD;AACD,MAAM,cAAc;AAEpB,MAAM,cAAcF,MAAAA,WAGlB,CAAC,EAAE,WAAW,GAAG,SAAS,uCACzB,SAAA,EAAM,KAAU,WAAWE,MAAAA,GAAG,mBAAmB,SAAS,GAAI,GAAG,OAAO,CAC1E;AACD,YAAY,cAAc;AAE1B,MAAM,YAAYF,MAAAA,WAGhB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IACA,WAAWC,MAAAA,GAAG,8BAA8B,SAAS;AAAA,IACpD,GAAG;AAAA,EAAA;AACN,CACD;AACD,UAAU,cAAc;AAExB,MAAM,cAAcF,MAAAA,WAGlB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IACA,WAAWC,MAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AACD,YAAY,cAAc;AAE1B,MAAM,WAAWF,MAAAA,WAGf,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IACA,WAAWC,MAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AACD,SAAS,cAAc;AAEvB,MAAM,YAAYF,MAAAA,WAGhB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IACA,WAAWC,MAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AACD,UAAU,cAAc;AAExB,MAAM,YAAYF,MAAAA,WAGhB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IACA,WAAWC,MAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AACD,UAAU,cAAc;AAExB,MAAM,eAAeF,MAAAA,WAGnB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IACA,WAAWC,MAAAA,GAAG,sCAAsC,SAAS;AAAA,IAC5D,GAAG;AAAA,EAAA;AACN,CACD;AACD,aAAa,cAAc;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.cjs","sources":["../../../src/components/tabs.tsx"],"sourcesContent":["/* eslint-disable ts/naming-convention */\n\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from 'react';\nimport { cn } from '../utils';\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = forwardRef<\n ElementRef<typeof TabsPrimitive.List>,\n ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n 'inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground',\n className,\n )}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = forwardRef<\n ElementRef<typeof TabsPrimitive.Trigger>,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow',\n className,\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = forwardRef<\n ElementRef<typeof TabsPrimitive.Content>,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n 'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className,\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsContent, TabsList, TabsTrigger };\n"],"names":["TabsPrimitive","forwardRef","jsx","cn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,OAAOA,yBAAc;AAErB,MAAA,WAAWC,iBAGf,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAA;AAAA,EAACF,yBAAc;AAAA,EAAd;AAAA,IACC;AAAA,IACA,WAAWG,MAAA;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA,EAAA;AACN,CACD;AACD,SAAS,cAAcH,yBAAc,KAAK;AAEpC,MAAA,cAAcC,iBAGlB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAA;AAAA,EAACF,yBAAc;AAAA,EAAd;AAAA,IACC;AAAA,IACA,WAAWG,MAAA;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA,EAAA;AACN,CACD;AACD,YAAY,cAAcH,yBAAc,QAAQ;AAE1C,MAAA,cAAcC,iBAGlB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAA;AAAA,EAACF,yBAAc;AAAA,EAAd;AAAA,IACC;AAAA,IACA,WAAWG,MAAA;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA,EAAA;AACN,CACD;AACD,YAAY,cAAcH,yBAAc,QAAQ;;;;;"}
1
+ {"version":3,"file":"tabs.cjs","sources":["../../../src/components/tabs.tsx"],"sourcesContent":["/* eslint-disable ts/naming-convention */\n\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from 'react';\nimport { cn } from '../utils';\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = forwardRef<\n ElementRef<typeof TabsPrimitive.List>,\n ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n 'inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground',\n className,\n )}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = forwardRef<\n ElementRef<typeof TabsPrimitive.Trigger>,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow',\n className,\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = forwardRef<\n ElementRef<typeof TabsPrimitive.Content>,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n 'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className,\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsContent, TabsList, TabsTrigger };\n"],"names":["TabsPrimitive","forwardRef","jsx","cn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,OAAOA,yBAAc;AAE3B,MAAM,WAAWC,MAAAA,WAGf,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAACF,yBAAc;AAAA,EAAd;AAAA,IACC;AAAA,IACA,WAAWG,MAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AACD,SAAS,cAAcH,yBAAc,KAAK;AAE1C,MAAM,cAAcC,MAAAA,WAGlB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAACF,yBAAc;AAAA,EAAd;AAAA,IACC;AAAA,IACA,WAAWG,MAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AACD,YAAY,cAAcH,yBAAc,QAAQ;AAEhD,MAAM,cAAcC,MAAAA,WAGlB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAACF,yBAAc;AAAA,EAAd;AAAA,IACC;AAAA,IACA,WAAWG,MAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AACD,YAAY,cAAcH,yBAAc,QAAQ;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"devtools.composables.cjs","sources":["../../src/devtools.composables.tsx"],"sourcesContent":["import type { AdheseContext, AdhesePlugin, AdheseSlot } from '@adhese/sdk';\nimport type { ModifiedSlotsStore, modifiedSlotsStore } from './modifiedSlots.store';\nimport { computed, omit, type Ref, ref, type useLogger, watch, watchEffect } from '@adhese/sdk-shared';\n\nexport type DevtoolsSlotPluginOptions = {\n hijackedSlot?: string;\n};\n\nexport function useDevtoolsUi(context: AdheseContext, { onInit, onDispose }: Parameters<AdhesePlugin>[1]['hooks']): void {\n const wrapperElement = document.createElement('div');\n let unmount: (() => void) | undefined;\n\n async function initDevtools(): Promise<void> {\n const main = await import('./main');\n\n if (!unmount) {\n document.body.appendChild(wrapperElement);\n\n unmount = main.createAdheseDevtools(wrapperElement, context);\n }\n }\n\n onInit(() => {\n watch(() => [context.debug, context.isDisposed], async ([debug, isDisposed]) => {\n if (debug && !isDisposed) {\n await initDevtools();\n }\n else {\n dispose();\n }\n }, {\n immediate: true,\n });\n });\n\n function dispose(): void {\n unmount?.();\n unmount = undefined;\n if (wrapperElement.parentElement)\n wrapperElement.outerHTML = '';\n }\n\n onDispose(dispose);\n}\n\nexport function useModifiedSlotsHijack(\n context: AdheseContext,\n { onSlotCreate }: Parameters<AdhesePlugin>[1]['hooks'],\n logger: ReturnType<typeof useLogger>,\n): void {\n async function initStore(): Promise<typeof modifiedSlotsStore> {\n const { modifiedSlotsStore: store } = await import('./modifiedSlots.store');\n\n return store;\n }\n\n onSlotCreate(slot =>\n ({\n ...slot,\n setup(slotContext, slotHooks): void {\n slot.setup?.(slotContext, slotHooks);\n\n let store: typeof modifiedSlotsStore | undefined;\n const state = ref<ModifiedSlotsStore | null>(null);\n const hijackSlot = ref<AdheseSlot | null>(null);\n\n const hijackSlotOptions = computed(() => (state.value ?? store?.getState())?.slots.get(slotContext.value?.name ?? ''));\n\n let disposeSub: (() => void) | undefined;\n\n async function createHijack(): Promise<void> {\n if (context.debug && slotContext.value && slotContext.value.element) {\n hijackSlot.value?.dispose();\n\n if (hijackSlotOptions.value) {\n slotContext.value.renderMode = 'none';\n\n hijackSlot.value = context.addSlot?.({\n ...omit(slotContext.value.options, ['setup']),\n ...hijackSlotOptions.value,\n containingElement: slotContext.value.element,\n lazyLoading: false,\n lazyLoadingOptions: undefined,\n pluginOptions: {\n devtools: {\n hijackedSlot: slotContext.value.name,\n } satisfies DevtoolsSlotPluginOptions,\n },\n }) ?? null;\n\n logger.value.debug(`Hijacking slot ${slotContext.value.name} with new slot ${hijackSlot.value?.name}`);\n\n await hijackSlot.value?.render();\n }\n else {\n slotContext.value.renderMode = slotContext.value.options.renderMode ?? 'iframe';\n\n hijackSlot.value?.dispose();\n hijackSlot.value = null;\n\n await slotContext.value.render();\n }\n }\n }\n\n watchEffect(() => {\n if (context.debug && slotContext.value?.element) {\n slotContext.value.element.style.position = 'relative';\n }\n else {\n slotContext.value?.element?.style.removeProperty('position');\n }\n });\n\n slotHooks.onInit(async () => {\n if (context.debug && slotContext.value) {\n store = await initStore();\n\n disposeSub = store.subscribe((newState) => {\n state.value = newState;\n });\n\n state.value = store.getState();\n\n await createHijack();\n }\n });\n\n slotHooks.onRender(async () => {\n if (hijackSlot.value) {\n await hijackSlot.value.render();\n }\n });\n\n watch(state, async () => {\n await createHijack();\n }, { immediate: true });\n\n watch(() => context.debug, async (debug) => {\n if (!debug)\n hijackSlot.value?.dispose();\n });\n\n slotHooks.onDispose(() => {\n disposeSub?.();\n hijackSlot.value?.dispose();\n });\n },\n }),\n );\n}\n\nexport function useSlotBadge(\n context: AdheseContext,\n hooks: Parameters<AdhesePlugin>[1]['hooks'],\n): void {\n const modifiedSlots = useModifiedSlots(context, hooks);\n\n const sortedSlots = computed(() => Array.from(context.slots.values()).toSorted((a, b) => {\n const offsetA = a.element?.getBoundingClientRect().top ?? 0;\n const offsetB = b.element?.getBoundingClientRect().top ?? 0;\n\n return offsetA - offsetB;\n }));\n\n hooks.onSlotCreate(slot => ({\n ...slot,\n setup(slotContext, slotHooks): void {\n slot.setup?.(slotContext, slotHooks);\n\n const element = ref<HTMLElement | null>(null);\n\n async function renderBadges(): Promise<void> {\n if (!slotContext.value || slotContext.value.renderMode === 'none' || !context.debug || !slotContext.value.isVisible)\n return;\n\n const [\n { renderToStaticMarkup },\n // eslint-disable-next-line ts/naming-convention\n { Badge },\n { slotIndexBadgeClasses },\n { cn },\n ] = await Promise.all([\n import('react-dom/server'),\n import('./components/badge'),\n import('./components/slotsTable'),\n import('./utils'),\n ]);\n\n const slotIndex = sortedSlots.value\n .filter(({ name }) => !modifiedSlots.value?.slots.has(name))\n .findIndex(({ name }) => name === slotContext.value?.name,\n );\n\n const template = renderToStaticMarkup(\n <>\n <div className=\"adhese-devtools\">\n <div className=\"absolute top-0 flex gap-1 flex-col pointer-events-none\">\n <Badge\n className={cn('w-fit', slotIndexBadgeClasses[slotIndex % slotIndexBadgeClasses.length])}\n >\n {slotContext.value?.name}\n </Badge>\n </div>\n </div>\n {modifiedSlots.value?.slots.has((slotContext.value.pluginOptions?.devtools as DevtoolsSlotPluginOptions)?.hijackedSlot ?? '') && <Badge className=\"bg-red-500 w-fit\">EDITED IN DEVTOOLS</Badge>}\n </>,\n );\n\n element.value?.remove();\n element.value = document.createElement('div');\n slotContext.value.element?.appendChild(element.value);\n\n element.value.innerHTML = template;\n }\n\n slotHooks.onRender(async () => {\n await renderBadges();\n });\n\n watch(() => context.slots, async () => {\n await renderBadges();\n }, { immediate: false, deep: true });\n\n watch(() => context.debug, async (debug) => {\n if (debug) {\n await renderBadges();\n }\n else {\n element.value?.remove();\n }\n }, { immediate: true });\n },\n }));\n}\n\nfunction useModifiedSlots(context: AdheseContext, { onInit, onDispose }: Parameters<AdhesePlugin>[1]['hooks']): Ref<ModifiedSlotsStore | null> {\n let disposeSub: (() => void) | undefined;\n const state = ref<ModifiedSlotsStore | null>(null);\n async function initStore(): Promise<typeof modifiedSlotsStore> {\n const { modifiedSlotsStore: store } = await import('./modifiedSlots.store');\n\n disposeSub = store.subscribe((newState) => {\n state.value = newState;\n });\n\n state.value = store.getState();\n\n return store;\n }\n\n onInit(async () => {\n await initStore();\n });\n\n watch(() => context.debug, async (debug) => {\n if (debug) {\n await initStore();\n }\n }, { immediate: true });\n\n onDispose(() => {\n disposeSub?.();\n });\n\n return state;\n}\n"],"names":["watch","ref","computed","_a","omit","watchEffect","jsxs","Fragment","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAQO,SAAS,cAAc,SAAwB,EAAE,QAAQ,aAAyD;AACjH,QAAA,iBAAiB,SAAS,cAAc,KAAK;AAC/C,MAAA;AAEJ,iBAAe,eAA8B;AACrC,UAAA,OAAO,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,YAAQ,CAAA;AAElC,QAAI,CAAC,SAAS;AACH,eAAA,KAAK,YAAY,cAAc;AAE9B,gBAAA,KAAK,qBAAqB,gBAAgB,OAAO;AAAA,IAAA;AAAA,EAC7D;AAGF,SAAO,MAAM;AACLA,oBAAA,MAAM,CAAC,QAAQ,OAAO,QAAQ,UAAU,GAAG,OAAO,CAAC,OAAO,UAAU,MAAM;AAC1E,UAAA,SAAS,CAAC,YAAY;AACxB,cAAM,aAAa;AAAA,MAAA,OAEhB;AACK,gBAAA;AAAA,MAAA;AAAA,IACV,GACC;AAAA,MACD,WAAW;AAAA,IAAA,CACZ;AAAA,EAAA,CACF;AAED,WAAS,UAAgB;AACb;AACA,cAAA;AACV,QAAI,eAAe;AACjB,qBAAe,YAAY;AAAA,EAAA;AAG/B,YAAU,OAAO;AACnB;AAEO,SAAS,uBACd,SACA,EAAE,aAAA,GACF,QACM;AACN,iBAAe,YAAgD;AAC7D,UAAM,EAAE,oBAAoB,UAAU,MAAM,QAAO,QAAA,EAAA,KAAA,MAAA,QAAA,2BAAuB,CAAA;AAEnE,WAAA;AAAA,EAAA;AAGT;AAAA,IAAa,CACV,UAAA;AAAA,MACC,GAAG;AAAA,MACH,MAAM,aAAa,WAAiB;;AAC7B,mBAAA,UAAA,8BAAQ,aAAa;AAEtB,YAAA;AACE,cAAA,QAAQC,cAA+B,IAAI;AAC3C,cAAA,aAAaA,cAAuB,IAAI;AAE9C,cAAM,oBAAoBC,UAAAA,SAAS,MAAA;;AAAO,6BAAM,UAAS,+BAAO,gBAAtB,mBAAmC,MAAM,MAAIC,MAAA,YAAY,UAAZ,gBAAAA,IAAmB,SAAQ;AAAA,SAAG;AAEjH,YAAA;AAEJ,uBAAe,eAA8B;;AAC3C,cAAI,QAAQ,SAAS,YAAY,SAAS,YAAY,MAAM,SAAS;AACnE,aAAAA,MAAA,WAAW,UAAX,gBAAAA,IAAkB;AAElB,gBAAI,kBAAkB,OAAO;AAC3B,0BAAY,MAAM,aAAa;AAEpB,yBAAA,UAAQ,aAAQ,YAAR,iCAAkB;AAAA,gBACnC,GAAGC,UAAAA,KAAK,YAAY,MAAM,SAAS,CAAC,OAAO,CAAC;AAAA,gBAC5C,GAAG,kBAAkB;AAAA,gBACrB,mBAAmB,YAAY,MAAM;AAAA,gBACrC,aAAa;AAAA,gBACb,oBAAoB;AAAA,gBACpB,eAAe;AAAA,kBACb,UAAU;AAAA,oBACR,cAAc,YAAY,MAAM;AAAA,kBAAA;AAAA,gBAClC;AAAA,cAEH,OAAK;AAEC,qBAAA,MAAM,MAAM,kBAAkB,YAAY,MAAM,IAAI,mBAAkB,gBAAW,UAAX,mBAAkB,IAAI,EAAE;AAE/F,sBAAA,gBAAW,UAAX,mBAAkB;AAAA,YAAO,OAE5B;AACH,0BAAY,MAAM,aAAa,YAAY,MAAM,QAAQ,cAAc;AAEvE,+BAAW,UAAX,mBAAkB;AAClB,yBAAW,QAAQ;AAEb,oBAAA,YAAY,MAAM,OAAO;AAAA,YAAA;AAAA,UACjC;AAAA,QACF;AAGFC,kBAAAA,YAAY,MAAM;;AAChB,cAAI,QAAQ,WAASF,MAAA,YAAY,UAAZ,gBAAAA,IAAmB,UAAS;AACnC,wBAAA,MAAM,QAAQ,MAAM,WAAW;AAAA,UAAA,OAExC;AACH,oCAAY,UAAZ,mBAAmB,YAAnB,mBAA4B,MAAM,eAAe;AAAA,UAAU;AAAA,QAC7D,CACD;AAED,kBAAU,OAAO,YAAY;AACvB,cAAA,QAAQ,SAAS,YAAY,OAAO;AACtC,oBAAQ,MAAM,UAAU;AAEX,yBAAA,MAAM,UAAU,CAAC,aAAa;AACzC,oBAAM,QAAQ;AAAA,YAAA,CACf;AAEK,kBAAA,QAAQ,MAAM,SAAS;AAE7B,kBAAM,aAAa;AAAA,UAAA;AAAA,QACrB,CACD;AAED,kBAAU,SAAS,YAAY;AAC7B,cAAI,WAAW,OAAO;AACd,kBAAA,WAAW,MAAM,OAAO;AAAA,UAAA;AAAA,QAChC,CACD;AAEDH,kBAAA,MAAM,OAAO,YAAY;AACvB,gBAAM,aAAa;AAAA,QAAA,GAClB,EAAE,WAAW,MAAM;AAEtBA,kBAAAA,MAAM,MAAM,QAAQ,OAAO,OAAO,UAAU;;AAC1C,cAAI,CAAC;AACH,aAAAG,MAAA,WAAW,UAAX,gBAAAA,IAAkB;AAAA,QAAQ,CAC7B;AAED,kBAAU,UAAU,MAAM;;AACX;AACb,WAAAA,MAAA,WAAW,UAAX,gBAAAA,IAAkB;AAAA,QAAQ,CAC3B;AAAA,MAAA;AAAA,IAEL;AAAA,EACF;AACF;AAEgB,SAAA,aACd,SACA,OACM;AACA,QAAA,gBAAgB,iBAAiB,SAAS,KAAK;AAErD,QAAM,cAAcD,UAAA,SAAS,MAAM,MAAM,KAAK,QAAQ,MAAM,OAAQ,CAAA,EAAE,SAAS,CAAC,GAAG,MAAM;;AACvF,UAAM,YAAU,OAAE,YAAF,mBAAW,wBAAwB,QAAO;AAC1D,UAAM,YAAU,OAAE,YAAF,mBAAW,wBAAwB,QAAO;AAE1D,WAAO,UAAU;AAAA,EAAA,CAClB,CAAC;AAEF,QAAM,aAAa,CAAS,UAAA;AAAA,IAC1B,GAAG;AAAA,IACH,MAAM,aAAa,WAAiB;;AAC7B,iBAAA,UAAA,8BAAQ,aAAa;AAEpB,YAAA,UAAUD,cAAwB,IAAI;AAE5C,qBAAe,eAA8B;;AAC3C,YAAI,CAAC,YAAY,SAAS,YAAY,MAAM,eAAe,UAAU,CAAC,QAAQ,SAAS,CAAC,YAAY,MAAM;AACxG;AAEI,cAAA;AAAA,UACJ,EAAE,qBAAqB;AAAA;AAAA,UAEvB,EAAE,MAAM;AAAA,UACR,EAAE,sBAAsB;AAAA,UACxB,EAAE,GAAG;AAAA,QAAA,IACH,MAAM,QAAQ,IAAI;AAAA,UACpB,OAAO,kBAAkB;AAAA,UACzB,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,wBAAoB,CAAA;AAAA,UAC3B,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,6BAAyB,CAAA;AAAA,UAChC,qCAAO,aAAS,CAAA;AAAA,QAAA,CACjB;AAED,cAAM,YAAY,YAAY,MAC3B,OAAO,CAAC,EAAE,KAAA,MAAW;;AAAA,oBAACE,MAAA,cAAc,UAAd,gBAAAA,IAAqB,MAAM,IAAI;AAAA,SAAK,EAC1D;AAAA,UAAU,CAAC,EAAE,KAAW,MAAA;;AAAA,8BAASA,MAAA,YAAY,UAAZ,gBAAAA,IAAmB;AAAA;AAAA,QACrD;AAEF,cAAM,WAAW;AAAA,UAEbG,gCAAAC,WAAAA,UAAA,EAAA,UAAA;AAAA,YAAAC,2BAAAA,IAAC,SAAI,WAAU,mBACb,UAACA,+BAAA,OAAA,EAAI,WAAU,0DACb,UAAAA,2BAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAW,GAAG,SAAS,sBAAsB,YAAY,sBAAsB,MAAM,CAAC;AAAA,gBAErF,6BAAY,8BAAO;AAAA,cAAA;AAAA,eAExB,EACF,CAAA;AAAA,cACC,mBAAc,UAAd,mBAAqB,MAAM,MAAK,uBAAY,MAAM,kBAAlB,mBAAiC,aAAjC,mBAAyE,iBAAgB,QAAOA,2BAAAA,IAAC,OAAM,EAAA,WAAU,oBAAmB,UAAkB,qBAAA,CAAA;AAAA,UAAA,EACzL,CAAA;AAAA,QACF;AAEA,sBAAQ,UAAR,mBAAe;AACP,gBAAA,QAAQ,SAAS,cAAc,KAAK;AAC5C,0BAAY,MAAM,YAAlB,mBAA2B,YAAY,QAAQ;AAE/C,gBAAQ,MAAM,YAAY;AAAA,MAAA;AAG5B,gBAAU,SAAS,YAAY;AAC7B,cAAM,aAAa;AAAA,MAAA,CACpB;AAEKR,sBAAA,MAAM,QAAQ,OAAO,YAAY;AACrC,cAAM,aAAa;AAAA,SAClB,EAAE,WAAW,OAAO,MAAM,MAAM;AAEnCA,gBAAAA,MAAM,MAAM,QAAQ,OAAO,OAAO,UAAU;;AAC1C,YAAI,OAAO;AACT,gBAAM,aAAa;AAAA,QAAA,OAEhB;AACH,WAAAG,MAAA,QAAQ,UAAR,gBAAAA,IAAe;AAAA,QAAO;AAAA,MACxB,GACC,EAAE,WAAW,MAAM;AAAA,IAAA;AAAA,EACxB,EACA;AACJ;AAEA,SAAS,iBAAiB,SAAwB,EAAE,QAAQ,aAAmF;AACzI,MAAA;AACE,QAAA,QAAQF,cAA+B,IAAI;AACjD,iBAAe,YAAgD;AAC7D,UAAM,EAAE,oBAAoB,UAAU,MAAM,QAAO,QAAA,EAAA,KAAA,MAAA,QAAA,2BAAuB,CAAA;AAE7D,iBAAA,MAAM,UAAU,CAAC,aAAa;AACzC,YAAM,QAAQ;AAAA,IAAA,CACf;AAEK,UAAA,QAAQ,MAAM,SAAS;AAEtB,WAAA;AAAA,EAAA;AAGT,SAAO,YAAY;AACjB,UAAM,UAAU;AAAA,EAAA,CACjB;AAEDD,YAAAA,MAAM,MAAM,QAAQ,OAAO,OAAO,UAAU;AAC1C,QAAI,OAAO;AACT,YAAM,UAAU;AAAA,IAAA;AAAA,EAClB,GACC,EAAE,WAAW,MAAM;AAEtB,YAAU,MAAM;AACD;AAAA,EAAA,CACd;AAEM,SAAA;AACT;;;;"}
1
+ {"version":3,"file":"devtools.composables.cjs","sources":["../../src/devtools.composables.tsx"],"sourcesContent":["import type { AdheseContext, AdhesePlugin, AdheseSlot } from '@adhese/sdk';\nimport type { ModifiedSlotsStore, modifiedSlotsStore } from './modifiedSlots.store';\nimport { computed, omit, type Ref, ref, type useLogger, watch, watchEffect } from '@adhese/sdk-shared';\n\nexport type DevtoolsSlotPluginOptions = {\n hijackedSlot?: string;\n};\n\nexport function useDevtoolsUi(context: AdheseContext, { onInit, onDispose }: Parameters<AdhesePlugin>[1]['hooks']): void {\n const wrapperElement = document.createElement('div');\n let unmount: (() => void) | undefined;\n\n async function initDevtools(): Promise<void> {\n const main = await import('./main');\n\n if (!unmount) {\n document.body.appendChild(wrapperElement);\n\n unmount = main.createAdheseDevtools(wrapperElement, context);\n }\n }\n\n onInit(() => {\n watch(() => [context.debug, context.isDisposed], async ([debug, isDisposed]) => {\n if (debug && !isDisposed) {\n await initDevtools();\n }\n else {\n dispose();\n }\n }, {\n immediate: true,\n });\n });\n\n function dispose(): void {\n unmount?.();\n unmount = undefined;\n if (wrapperElement.parentElement)\n wrapperElement.outerHTML = '';\n }\n\n onDispose(dispose);\n}\n\nexport function useModifiedSlotsHijack(\n context: AdheseContext,\n { onSlotCreate }: Parameters<AdhesePlugin>[1]['hooks'],\n logger: ReturnType<typeof useLogger>,\n): void {\n async function initStore(): Promise<typeof modifiedSlotsStore> {\n const { modifiedSlotsStore: store } = await import('./modifiedSlots.store');\n\n return store;\n }\n\n onSlotCreate(slot =>\n ({\n ...slot,\n setup(slotContext, slotHooks): void {\n slot.setup?.(slotContext, slotHooks);\n\n let store: typeof modifiedSlotsStore | undefined;\n const state = ref<ModifiedSlotsStore | null>(null);\n const hijackSlot = ref<AdheseSlot | null>(null);\n\n const hijackSlotOptions = computed(() => (state.value ?? store?.getState())?.slots.get(slotContext.value?.name ?? ''));\n\n let disposeSub: (() => void) | undefined;\n\n async function createHijack(): Promise<void> {\n if (context.debug && slotContext.value && slotContext.value.element) {\n hijackSlot.value?.dispose();\n\n if (hijackSlotOptions.value) {\n slotContext.value.renderMode = 'none';\n\n hijackSlot.value = context.addSlot?.({\n ...omit(slotContext.value.options, ['setup']),\n ...hijackSlotOptions.value,\n containingElement: slotContext.value.element,\n lazyLoading: false,\n lazyLoadingOptions: undefined,\n pluginOptions: {\n devtools: {\n hijackedSlot: slotContext.value.name,\n } satisfies DevtoolsSlotPluginOptions,\n },\n }) ?? null;\n\n logger.value.debug(`Hijacking slot ${slotContext.value.name} with new slot ${hijackSlot.value?.name}`);\n\n await hijackSlot.value?.render();\n }\n else {\n slotContext.value.renderMode = slotContext.value.options.renderMode ?? 'iframe';\n\n hijackSlot.value?.dispose();\n hijackSlot.value = null;\n\n await slotContext.value.render();\n }\n }\n }\n\n watchEffect(() => {\n if (context.debug && slotContext.value?.element) {\n slotContext.value.element.style.position = 'relative';\n }\n else {\n slotContext.value?.element?.style.removeProperty('position');\n }\n });\n\n slotHooks.onInit(async () => {\n if (context.debug && slotContext.value) {\n store = await initStore();\n\n disposeSub = store.subscribe((newState) => {\n state.value = newState;\n });\n\n state.value = store.getState();\n\n await createHijack();\n }\n });\n\n slotHooks.onRender(async () => {\n if (hijackSlot.value) {\n await hijackSlot.value.render();\n }\n });\n\n watch(state, async () => {\n await createHijack();\n }, { immediate: true });\n\n watch(() => context.debug, async (debug) => {\n if (!debug)\n hijackSlot.value?.dispose();\n });\n\n slotHooks.onDispose(() => {\n disposeSub?.();\n hijackSlot.value?.dispose();\n });\n },\n }),\n );\n}\n\nexport function useSlotBadge(\n context: AdheseContext,\n hooks: Parameters<AdhesePlugin>[1]['hooks'],\n): void {\n const modifiedSlots = useModifiedSlots(context, hooks);\n\n const sortedSlots = computed(() => Array.from(context.slots.values()).toSorted((a, b) => {\n const offsetA = a.element?.getBoundingClientRect().top ?? 0;\n const offsetB = b.element?.getBoundingClientRect().top ?? 0;\n\n return offsetA - offsetB;\n }));\n\n hooks.onSlotCreate(slot => ({\n ...slot,\n setup(slotContext, slotHooks): void {\n slot.setup?.(slotContext, slotHooks);\n\n const element = ref<HTMLElement | null>(null);\n\n async function renderBadges(): Promise<void> {\n if (!slotContext.value || slotContext.value.renderMode === 'none' || !context.debug || !slotContext.value.isVisible)\n return;\n\n const [\n { renderToStaticMarkup },\n // eslint-disable-next-line ts/naming-convention\n { Badge },\n { slotIndexBadgeClasses },\n { cn },\n ] = await Promise.all([\n import('react-dom/server'),\n import('./components/badge'),\n import('./components/slotsTable'),\n import('./utils'),\n ]);\n\n const slotIndex = sortedSlots.value\n .filter(({ name }) => !modifiedSlots.value?.slots.has(name))\n .findIndex(({ name }) => name === slotContext.value?.name,\n );\n\n const template = renderToStaticMarkup(\n <>\n <div className=\"adhese-devtools\">\n <div className=\"absolute top-0 flex gap-1 flex-col pointer-events-none\">\n <Badge\n className={cn('w-fit', slotIndexBadgeClasses[slotIndex % slotIndexBadgeClasses.length])}\n >\n {slotContext.value?.name}\n </Badge>\n </div>\n </div>\n {modifiedSlots.value?.slots.has((slotContext.value.pluginOptions?.devtools as DevtoolsSlotPluginOptions)?.hijackedSlot ?? '') && <Badge className=\"bg-red-500 w-fit\">EDITED IN DEVTOOLS</Badge>}\n </>,\n );\n\n element.value?.remove();\n element.value = document.createElement('div');\n slotContext.value.element?.appendChild(element.value);\n\n element.value.innerHTML = template;\n }\n\n slotHooks.onRender(async () => {\n await renderBadges();\n });\n\n watch(() => context.slots, async () => {\n await renderBadges();\n }, { immediate: false, deep: true });\n\n watch(() => context.debug, async (debug) => {\n if (debug) {\n await renderBadges();\n }\n else {\n element.value?.remove();\n }\n }, { immediate: true });\n },\n }));\n}\n\nfunction useModifiedSlots(context: AdheseContext, { onInit, onDispose }: Parameters<AdhesePlugin>[1]['hooks']): Ref<ModifiedSlotsStore | null> {\n let disposeSub: (() => void) | undefined;\n const state = ref<ModifiedSlotsStore | null>(null);\n async function initStore(): Promise<typeof modifiedSlotsStore> {\n const { modifiedSlotsStore: store } = await import('./modifiedSlots.store');\n\n disposeSub = store.subscribe((newState) => {\n state.value = newState;\n });\n\n state.value = store.getState();\n\n return store;\n }\n\n onInit(async () => {\n await initStore();\n });\n\n watch(() => context.debug, async (debug) => {\n if (debug) {\n await initStore();\n }\n }, { immediate: true });\n\n onDispose(() => {\n disposeSub?.();\n });\n\n return state;\n}\n"],"names":["watch","ref","computed","_a","omit","watchEffect","jsxs","Fragment","jsx"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"main.cjs","sources":["../../src/main.tsx"],"sourcesContent":["import type { AdheseContext } from '@adhese/sdk';\nimport { StrictMode } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { AdheseProvider } from './AdheseContext';\nimport { Devtools } from './Devtools';\n\nexport function createAdheseDevtools(element: HTMLElement, context: AdheseContext): () => void {\n const root = createRoot(element);\n\n root.render((\n <StrictMode>\n <AdheseProvider adhese={context}>\n <Devtools />\n </AdheseProvider>\n </StrictMode>\n ));\n\n return () => {\n root.unmount();\n };\n}\n"],"names":["createRoot","jsx","StrictMode","AdheseProvider","Devtools"],"mappings":";;;;;;;AAMgB,SAAA,qBAAqB,SAAsB,SAAoC;AACvF,QAAA,OAAOA,kBAAW,OAAO;AAE1B,OAAA,OACFC,+BAAAC,MAAAA,YAAA,EACC,UAACD,2BAAA,IAAAE,8BAAA,EAAe,QAAQ,SACtB,UAACF,+BAAAG,SAAAA,UAAA,CAAA,CAAS,EACZ,CAAA,EAAA,CACF,CACD;AAED,SAAO,MAAM;AACX,SAAK,QAAQ;AAAA,EACf;AACF;;"}
1
+ {"version":3,"file":"main.cjs","sources":["../../src/main.tsx"],"sourcesContent":["import type { AdheseContext } from '@adhese/sdk';\nimport { StrictMode } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { AdheseProvider } from './AdheseContext';\nimport { Devtools } from './Devtools';\n\nexport function createAdheseDevtools(element: HTMLElement, context: AdheseContext): () => void {\n const root = createRoot(element);\n\n root.render((\n <StrictMode>\n <AdheseProvider adhese={context}>\n <Devtools />\n </AdheseProvider>\n </StrictMode>\n ));\n\n return () => {\n root.unmount();\n };\n}\n"],"names":["createRoot","jsx","StrictMode","AdheseProvider","Devtools"],"mappings":";;;;;;;AAMO,SAAS,qBAAqB,SAAsB,SAAoC;AAC7F,QAAM,OAAOA,OAAAA,WAAW,OAAO;AAE/B,OAAK,OACHC,+BAACC,MAAAA,YAAA,EACC,UAAAD,2BAAAA,IAACE,8BAAA,EAAe,QAAQ,SACtB,UAAAF,+BAACG,SAAAA,UAAA,CAAA,CAAS,EAAA,CACZ,EAAA,CACF,CACD;AAED,SAAO,MAAM;AACX,SAAK,QAAA;AAAA,EACP;AACF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"modifiedSlots.store.cjs","sources":["../../src/modifiedSlots.store.ts"],"sourcesContent":["import { useStore } from 'zustand';\nimport { persist, type StorageValue } from 'zustand/middleware';\nimport { createStore } from 'zustand/vanilla';\nimport { name as packageName, version } from '../package.json';\n\ntype SlotOptions = {\n format: string;\n slot?: string;\n};\n\nexport type ModifiedSlotsStore = {\n slots: Map<string, SlotOptions>;\n set(name: string, slot: SlotOptions): string;\n remove(id: string): void;\n};\n\nconst storeName = `${packageName}/modifiedSlots`;\n\nexport const modifiedSlotsStore = createStore(persist<ModifiedSlotsStore>(\n set => ({\n slots: new Map(),\n set(name: string, slot: SlotOptions): string {\n set((state) => {\n state.slots.set(name, slot);\n\n return {\n slots: new Map(state.slots),\n };\n });\n\n return name;\n },\n remove(id: string): void {\n set((state) => {\n state.slots.delete(id);\n\n return {\n slots: new Map(state.slots),\n };\n });\n },\n }),\n {\n name: storeName,\n version: Number(version.split('.')[0]),\n storage: {\n getItem(key) {\n const data = JSON.parse(localStorage.getItem(key) ?? '') as StorageValue<ModifiedSlotsStore> | null;\n\n if (!data) {\n return null;\n }\n\n return {\n state: {\n ...data.state,\n slots: new Map(data.state.slots),\n },\n };\n },\n setItem(key, newValue) {\n const str = JSON.stringify({\n state: {\n ...newValue.state,\n slots: Array.from(newValue.state.slots.entries()),\n },\n }, null);\n localStorage.setItem(key, str);\n },\n removeItem(key) {\n localStorage.removeItem(key);\n },\n },\n },\n));\n\nexport const useModifiedSlots = (): ModifiedSlotsStore => useStore(modifiedSlotsStore);\n"],"names":["packageName","createStore","persist","version","useStore"],"mappings":";;;;;;AAgBA,MAAM,YAAY,GAAGA,SAAW,IAAA;AAEzB,MAAM,qBAAqBC,QAAY,YAAAC,WAAA;AAAA,EAC5C,CAAQ,SAAA;AAAA,IACN,2BAAW,IAAI;AAAA,IACf,IAAI,MAAc,MAA2B;AAC3C,UAAI,CAAC,UAAU;AACP,cAAA,MAAM,IAAI,MAAM,IAAI;AAEnB,eAAA;AAAA,UACL,OAAO,IAAI,IAAI,MAAM,KAAK;AAAA,QAC5B;AAAA,MAAA,CACD;AAEM,aAAA;AAAA,IACT;AAAA,IACA,OAAO,IAAkB;AACvB,UAAI,CAAC,UAAU;AACP,cAAA,MAAM,OAAO,EAAE;AAEd,eAAA;AAAA,UACL,OAAO,IAAI,IAAI,MAAM,KAAK;AAAA,QAC5B;AAAA,MAAA,CACD;AAAA,IAAA;AAAA,EACH;AAAA,EAEF;AAAA,IACE,MAAM;AAAA,IACN,SAAS,OAAOC,SAAA,QAAQ,MAAM,GAAG,EAAE,CAAC,CAAC;AAAA,IACrC,SAAS;AAAA,MACP,QAAQ,KAAK;AACX,cAAM,OAAO,KAAK,MAAM,aAAa,QAAQ,GAAG,KAAK,EAAE;AAEvD,YAAI,CAAC,MAAM;AACF,iBAAA;AAAA,QAAA;AAGF,eAAA;AAAA,UACL,OAAO;AAAA,YACL,GAAG,KAAK;AAAA,YACR,OAAO,IAAI,IAAI,KAAK,MAAM,KAAK;AAAA,UAAA;AAAA,QAEnC;AAAA,MACF;AAAA,MACA,QAAQ,KAAK,UAAU;AACf,cAAA,MAAM,KAAK,UAAU;AAAA,UACzB,OAAO;AAAA,YACL,GAAG,SAAS;AAAA,YACZ,OAAO,MAAM,KAAK,SAAS,MAAM,MAAM,QAAS,CAAA;AAAA,UAAA;AAAA,WAEjD,IAAI;AACM,qBAAA,QAAQ,KAAK,GAAG;AAAA,MAC/B;AAAA,MACA,WAAW,KAAK;AACd,qBAAa,WAAW,GAAG;AAAA,MAAA;AAAA,IAC7B;AAAA,EACF;AAEJ,CAAC;AAEY,MAAA,mBAAmB,MAA0BC,QAAAA,SAAS,kBAAkB;;;"}
1
+ {"version":3,"file":"modifiedSlots.store.cjs","sources":["../../src/modifiedSlots.store.ts"],"sourcesContent":["import { useStore } from 'zustand';\nimport { persist, type StorageValue } from 'zustand/middleware';\nimport { createStore } from 'zustand/vanilla';\nimport { name as packageName, version } from '../package.json';\n\ntype SlotOptions = {\n format: string;\n slot?: string;\n};\n\nexport type ModifiedSlotsStore = {\n slots: Map<string, SlotOptions>;\n set(name: string, slot: SlotOptions): string;\n remove(id: string): void;\n};\n\nconst storeName = `${packageName}/modifiedSlots`;\n\nexport const modifiedSlotsStore = createStore(persist<ModifiedSlotsStore>(\n set => ({\n slots: new Map(),\n set(name: string, slot: SlotOptions): string {\n set((state) => {\n state.slots.set(name, slot);\n\n return {\n slots: new Map(state.slots),\n };\n });\n\n return name;\n },\n remove(id: string): void {\n set((state) => {\n state.slots.delete(id);\n\n return {\n slots: new Map(state.slots),\n };\n });\n },\n }),\n {\n name: storeName,\n version: Number(version.split('.')[0]),\n storage: {\n getItem(key) {\n const data = JSON.parse(localStorage.getItem(key) ?? '') as StorageValue<ModifiedSlotsStore> | null;\n\n if (!data) {\n return null;\n }\n\n return {\n state: {\n ...data.state,\n slots: new Map(data.state.slots),\n },\n };\n },\n setItem(key, newValue) {\n const str = JSON.stringify({\n state: {\n ...newValue.state,\n slots: Array.from(newValue.state.slots.entries()),\n },\n }, null);\n localStorage.setItem(key, str);\n },\n removeItem(key) {\n localStorage.removeItem(key);\n },\n },\n },\n));\n\nexport const useModifiedSlots = (): ModifiedSlotsStore => useStore(modifiedSlotsStore);\n"],"names":["packageName","createStore","persist","version","useStore"],"mappings":";;;;;;AAgBA,MAAM,YAAY,GAAGA,SAAAA,IAAW;AAEzB,MAAM,qBAAqBC,QAAAA,YAAYC,WAAAA;AAAAA,EAC5C,CAAA,SAAQ;AAAA,IACN,2BAAW,IAAA;AAAA,IACX,IAAI,MAAc,MAA2B;AAC3C,UAAI,CAAC,UAAU;AACb,cAAM,MAAM,IAAI,MAAM,IAAI;AAE1B,eAAO;AAAA,UACL,OAAO,IAAI,IAAI,MAAM,KAAK;AAAA,QAAA;AAAA,MAE9B,CAAC;AAED,aAAO;AAAA,IACT;AAAA,IACA,OAAO,IAAkB;AACvB,UAAI,CAAC,UAAU;AACb,cAAM,MAAM,OAAO,EAAE;AAErB,eAAO;AAAA,UACL,OAAO,IAAI,IAAI,MAAM,KAAK;AAAA,QAAA;AAAA,MAE9B,CAAC;AAAA,IACH;AAAA,EAAA;AAAA,EAEF;AAAA,IACE,MAAM;AAAA,IACN,SAAS,OAAOC,SAAAA,QAAQ,MAAM,GAAG,EAAE,CAAC,CAAC;AAAA,IACrC,SAAS;AAAA,MACP,QAAQ,KAAK;AACX,cAAM,OAAO,KAAK,MAAM,aAAa,QAAQ,GAAG,KAAK,EAAE;AAEvD,YAAI,CAAC,MAAM;AACT,iBAAO;AAAA,QACT;AAEA,eAAO;AAAA,UACL,OAAO;AAAA,YACL,GAAG,KAAK;AAAA,YACR,OAAO,IAAI,IAAI,KAAK,MAAM,KAAK;AAAA,UAAA;AAAA,QACjC;AAAA,MAEJ;AAAA,MACA,QAAQ,KAAK,UAAU;AACrB,cAAM,MAAM,KAAK,UAAU;AAAA,UACzB,OAAO;AAAA,YACL,GAAG,SAAS;AAAA,YACZ,OAAO,MAAM,KAAK,SAAS,MAAM,MAAM,SAAS;AAAA,UAAA;AAAA,QAClD,GACC,IAAI;AACP,qBAAa,QAAQ,KAAK,GAAG;AAAA,MAC/B;AAAA,MACA,WAAW,KAAK;AACd,qBAAa,WAAW,GAAG;AAAA,MAC7B;AAAA,IAAA;AAAA,EACF;AAEJ,CAAC;AAEM,MAAM,mBAAmB,MAA0BC,QAAAA,SAAS,kBAAkB;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"sdkDevtools.cjs","sources":["../../src/sdkDevtools.ts"],"sourcesContent":["import type { AdhesePlugin } from '@adhese/sdk';\nimport { useLogger } from '@adhese/sdk-shared';\nimport { name, version } from '../package.json';\nimport { useDevtoolsUi, useModifiedSlotsHijack, useSlotBadge } from './devtools.composables';\n\nexport type { DevtoolsSlotPluginOptions } from './devtools.composables';\n\nexport const devtoolsPlugin: AdhesePlugin<{\n name: 'devtools';\n}> = (context, plugin) => {\n const logger = useLogger({\n scope: `${name}@${version}`,\n }, { context, plugin });\n\n useDevtoolsUi(context, plugin.hooks);\n\n useModifiedSlotsHijack(context, plugin.hooks, logger);\n\n useSlotBadge(context, plugin.hooks);\n\n return {\n name: 'devtools',\n };\n};\n"],"names":["useLogger","name","version","useDevtoolsUi","useModifiedSlotsHijack","useSlotBadge"],"mappings":";;;;;AAOa,MAAA,iBAER,CAAC,SAAS,WAAW;AACxB,QAAM,SAASA,UAAAA,UAAU;AAAA,IACvB,OAAO,GAAGC,aAAI,IAAIC,SAAAA,OAAO;AAAA,EAAA,GACxB,EAAE,SAAS,QAAQ;AAERC,qCAAA,SAAS,OAAO,KAAK;AAEZC,uBAAAA,uBAAA,SAAS,OAAO,OAAO,MAAM;AAEvCC,oCAAA,SAAS,OAAO,KAAK;AAE3B,SAAA;AAAA,IACL,MAAM;AAAA,EACR;AACF;;"}
1
+ {"version":3,"file":"sdkDevtools.cjs","sources":["../../src/sdkDevtools.ts"],"sourcesContent":["import type { AdhesePlugin } from '@adhese/sdk';\nimport { useLogger } from '@adhese/sdk-shared';\nimport { name, version } from '../package.json';\nimport { useDevtoolsUi, useModifiedSlotsHijack, useSlotBadge } from './devtools.composables';\n\nexport type { DevtoolsSlotPluginOptions } from './devtools.composables';\n\nexport const devtoolsPlugin: AdhesePlugin<{\n name: 'devtools';\n}> = (context, plugin) => {\n const logger = useLogger({\n scope: `${name}@${version}`,\n }, { context, plugin });\n\n useDevtoolsUi(context, plugin.hooks);\n\n useModifiedSlotsHijack(context, plugin.hooks, logger);\n\n useSlotBadge(context, plugin.hooks);\n\n return {\n name: 'devtools',\n };\n};\n"],"names":["useLogger","name","version","useDevtoolsUi","useModifiedSlotsHijack","useSlotBadge"],"mappings":";;;;;AAOO,MAAM,iBAER,CAAC,SAAS,WAAW;AACxB,QAAM,SAASA,UAAAA,UAAU;AAAA,IACvB,OAAO,GAAGC,aAAI,IAAIC,SAAAA,OAAO;AAAA,EAAA,GACxB,EAAE,SAAS,QAAQ;AAEtBC,qCAAc,SAAS,OAAO,KAAK;AAEnCC,uBAAAA,uBAAuB,SAAS,OAAO,OAAO,MAAM;AAEpDC,oCAAa,SAAS,OAAO,KAAK;AAElC,SAAO;AAAA,IACL,MAAM;AAAA,EAAA;AAEV;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.cjs","sources":["../../src/utils.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: Array<ClassValue>): string {\n return twMerge(clsx(inputs));\n}\n"],"names":["twMerge","clsx"],"mappings":";;;;AAGO,SAAS,MAAM,QAAmC;AAChD,SAAAA,cAAA,QAAQC,UAAK,MAAM,CAAC;AAC7B;;"}
1
+ {"version":3,"file":"utils.cjs","sources":["../../src/utils.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: Array<ClassValue>): string {\n return twMerge(clsx(inputs));\n}\n"],"names":["twMerge","clsx"],"mappings":";;;;AAGO,SAAS,MAAM,QAAmC;AACvD,SAAOA,cAAAA,QAAQC,UAAK,MAAM,CAAC;AAC7B;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"badge.js","sources":["../../src/components/badge.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactElement } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../utils';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n variants: {\n variant: {\n default:\n 'border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80',\n secondary:\n 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\n destructive:\n 'border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80',\n outline: 'text-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nexport interface BadgeProps\n extends HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\n// eslint-disable-next-line ts/naming-convention\nfunction Badge({ className, variant, ...props }: BadgeProps): ReactElement {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n"],"names":[],"mappings":";;;AAIA,MAAM,gBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,WACE;AAAA,QACF,aACE;AAAA,QACF,SAAS;AAAA,MAAA;AAAA,IAEb;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;AAOA,SAAS,MAAM,EAAE,WAAW,SAAS,GAAG,SAAmC;AACzE,SACG,oBAAA,OAAA,EAAI,WAAW,GAAG,cAAc,EAAE,QAAS,CAAA,GAAG,SAAS,GAAI,GAAG,MAAO,CAAA;AAE1E;"}
1
+ {"version":3,"file":"badge.js","sources":["../../src/components/badge.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactElement } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../utils';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n variants: {\n variant: {\n default:\n 'border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80',\n secondary:\n 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\n destructive:\n 'border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80',\n outline: 'text-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nexport interface BadgeProps\n extends HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\n// eslint-disable-next-line ts/naming-convention\nfunction Badge({ className, variant, ...props }: BadgeProps): ReactElement {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n"],"names":[],"mappings":";;;AAIA,MAAM,gBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,WACE;AAAA,QACF,aACE;AAAA,QACF,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;AAOA,SAAS,MAAM,EAAE,WAAW,SAAS,GAAG,SAAmC;AACzE,SACE,oBAAC,OAAA,EAAI,WAAW,GAAG,cAAc,EAAE,QAAA,CAAS,GAAG,SAAS,GAAI,GAAG,MAAA,CAAO;AAE1E;"}