@adhese/sdk-devtools 1.0.3 → 1.0.4-nightly-20261002071913

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @adhese/sdk-devtools
2
2
 
3
+ ## 1.0.4-nightly-20261002071913
4
+
5
+ ### Patch Changes
6
+
7
+ - 54b51de: Move the default Adhese hosts to the new `adhese.eu` domains.
8
+
9
+ - `host`: `https://ads-<account>.adhese.com` → `https://<account>.ads.adhese.eu`
10
+ - `poolHost`: `https://pool-<account>.adhese.com` → `https://<account>.pool.adhese.eu`
11
+ - `previewHost`: `https://<account>-preview.adhese.org` → `https://<account>.preview.adhese.eu`
12
+
13
+ This applies to the SDK, the server-side ad request helpers, SDK Lite and the user sync plugin. The devtools campaign, booking and creative links now point to `https://<account>.classic.adhese.eu`.
14
+
15
+ Setups that pass `host`, `poolHost` or `previewHost` explicitly are not affected. If your site restricts outgoing requests (for example with a Content-Security-Policy `connect-src` or `frame-src`), add the new `*.adhese.eu` hosts.
16
+ - Updated dependencies [54b51de]
17
+ - @adhese/sdk@1.13.0-nightly-20261002071913
18
+
3
19
  ## 1.0.3
4
20
 
5
21
  ### Patch Changes
@@ -157,7 +157,7 @@ function SlotsTable() {
157
157
  /* @__PURE__ */ jsxRuntime.jsx(table.TableCell, { children: (data == null ? void 0 : data.orderId) && (data == null ? void 0 : data.orderId) !== "0" ? /* @__PURE__ */ jsxRuntime.jsx(
158
158
  "a",
159
159
  {
160
- href: `https://${adheseContext.options.account}.adhese.org/campaigns.html#campaignDetail/editCampaign/${data.orderId}`,
160
+ href: `https://${adheseContext.options.account}.classic.adhese.eu/campaigns.html#campaignDetail/editCampaign/${data.orderId}`,
161
161
  target: "_blank",
162
162
  referrerPolicy: "no-referrer",
163
163
  className: utils.cn(button.buttonVariants({
@@ -170,7 +170,7 @@ function SlotsTable() {
170
170
  /* @__PURE__ */ jsxRuntime.jsx(table.TableCell, { children: (data == null ? void 0 : data.adspaceId) && (data == null ? void 0 : data.adspaceId) !== "0" ? /* @__PURE__ */ jsxRuntime.jsx(
171
171
  "a",
172
172
  {
173
- href: `https://${adheseContext.options.account}.adhese.org/campaigns.html#campaignDetail/bookingDetail/${data.adspaceId}/${data.orderId}`,
173
+ href: `https://${adheseContext.options.account}.classic.adhese.eu/campaigns.html#campaignDetail/bookingDetail/${data.adspaceId}/${data.orderId}`,
174
174
  target: "_blank",
175
175
  referrerPolicy: "no-referrer",
176
176
  className: utils.cn(button.buttonVariants({
@@ -183,7 +183,7 @@ function SlotsTable() {
183
183
  /* @__PURE__ */ jsxRuntime.jsx(table.TableCell, { children: (data == null ? void 0 : data.libId) && (data == null ? void 0 : data.orderId) !== "0" ? /* @__PURE__ */ jsxRuntime.jsx(
184
184
  "a",
185
185
  {
186
- href: `https://${adheseContext.options.account}.adhese.org/campaigns.html#campaignDetail/creativeDetail/${data.libId}/${data.orderId}`,
186
+ href: `https://${adheseContext.options.account}.classic.adhese.eu/campaigns.html#campaignDetail/creativeDetail/${data.libId}/${data.orderId}`,
187
187
  target: "_blank",
188
188
  referrerPolicy: "no-referrer",
189
189
  className: utils.cn(button.buttonVariants({
@@ -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 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
+ {"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}.classic.adhese.eu/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}.classic.adhese.eu/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}.classic.adhese.eu/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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"}
@@ -155,7 +155,7 @@ function SlotsTable() {
155
155
  /* @__PURE__ */ jsx(TableCell, { children: (data == null ? void 0 : data.orderId) && (data == null ? void 0 : data.orderId) !== "0" ? /* @__PURE__ */ jsx(
156
156
  "a",
157
157
  {
158
- href: `https://${adheseContext.options.account}.adhese.org/campaigns.html#campaignDetail/editCampaign/${data.orderId}`,
158
+ href: `https://${adheseContext.options.account}.classic.adhese.eu/campaigns.html#campaignDetail/editCampaign/${data.orderId}`,
159
159
  target: "_blank",
160
160
  referrerPolicy: "no-referrer",
161
161
  className: cn(buttonVariants({
@@ -168,7 +168,7 @@ function SlotsTable() {
168
168
  /* @__PURE__ */ jsx(TableCell, { children: (data == null ? void 0 : data.adspaceId) && (data == null ? void 0 : data.adspaceId) !== "0" ? /* @__PURE__ */ jsx(
169
169
  "a",
170
170
  {
171
- href: `https://${adheseContext.options.account}.adhese.org/campaigns.html#campaignDetail/bookingDetail/${data.adspaceId}/${data.orderId}`,
171
+ href: `https://${adheseContext.options.account}.classic.adhese.eu/campaigns.html#campaignDetail/bookingDetail/${data.adspaceId}/${data.orderId}`,
172
172
  target: "_blank",
173
173
  referrerPolicy: "no-referrer",
174
174
  className: cn(buttonVariants({
@@ -181,7 +181,7 @@ function SlotsTable() {
181
181
  /* @__PURE__ */ jsx(TableCell, { children: (data == null ? void 0 : data.libId) && (data == null ? void 0 : data.orderId) !== "0" ? /* @__PURE__ */ jsx(
182
182
  "a",
183
183
  {
184
- href: `https://${adheseContext.options.account}.adhese.org/campaigns.html#campaignDetail/creativeDetail/${data.libId}/${data.orderId}`,
184
+ href: `https://${adheseContext.options.account}.classic.adhese.eu/campaigns.html#campaignDetail/creativeDetail/${data.libId}/${data.orderId}`,
185
185
  target: "_blank",
186
186
  referrerPolicy: "no-referrer",
187
187
  className: cn(buttonVariants({
@@ -1 +1 @@
1
- {"version":3,"file":"slotsTable.js","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":["Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"slotsTable.js","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}.classic.adhese.eu/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}.classic.adhese.eu/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}.classic.adhese.eu/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":["Fragment"],"mappings":";;;;;;;;;;;;AAcO,MAAM,wBAAwB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,MAAM,kBAAkB;AAAA,EACtB,cAAc;AAAA,EACd,aAAa;AAAA,EACb,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,UAAU;AAAA,EACV,OAAO;AAAA,EACP,OAAO;AACT;AAGO,SAAS,aAA2B;AACzC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAoC,CAAA,CAAE;AAEhE,QAAM,gBAAgB,iBAAA;AAEtB,YAAU,MAAM;AACd,QAAI,CAAC;AACH;AAEF,UAAM,iBAAiB,MAAM,MAAM,cAAc,OAAO,CAAC,aAAa;AACpE,eAAS,MAAM,KAAK,SAAS,OAAA,CAAQ,CAAC;AAAA,IACxC,GAAG,EAAE,WAAW,MAAM,MAAM,MAAM;AAElC,WAAO,MAAY;AACjB,qBAAA;AAAA,IACF;AAAA,EACF,GAAG,CAAC,aAAa,CAAC;AAClB,QAAM,gBAAgB,iBAAA;AAEtB,QAAM,iBAAiB,QAAQ,MAAM,MAClC,OAAO,CAAA,SAAA;;AAAQ,cAAE,gBAAK,kBAAL,mBAAoB,aAApB,mBAA4D;AAAA,GAAY,EACzF,IAAI,CAAC,SAAS;;AACb,UAAM,sBAAsB,cAAc,MAAM,IAAI,KAAK,IAAI;AAC7D,UAAM,eAAgB,iBAAiB,yBAAwB,mBAAc,QAAd,uCAAoB,aAAa,cAAc,UAAU,oBAAoB,QAAQ,oBAAoB,IAAI;AAE5K,QAAI,cAAc,gBAAgB;AAElC,UAAI,iBAAY,SAAZ,mBAAkB,YAAW,QAAQ;AAGvC,YAAM,oBAAmB,yCAAY,SAAZ,mBAAkB,eAAlB,mBAA8B,QAAQ,OAAtC,mBAA0C,IAAI,OAA9C,mBAAkD,QAAlD,mBAAuD;AAEhF,oBAAc;AAAA,QACZ,GAAG;AAAA,QACH,MAAM;AAAA,UACJ,GAAG,YAAY;AAAA,UACf,GAAG;AAAA,QAAA;AAAA,MACL;AAAA,IAEJ;AAEA,WAAQ;AAAA,MACN,GAAG;AAAA,MACH,YAAY,MAAM,MAAM,gBAAgB,MAAM,WAAW,SAAS;AAAA,MAClE;AAAA,MACA,cAAc;AAAA,IAAA;AAAA,EAElB,CAAC,EACA,SAAS,CAAC,GAAG,MAAM;;AAClB,UAAM,YAAU,OAAE,YAAF,mBAAW,wBAAwB,QAAO;AAC1D,UAAM,YAAU,OAAE,YAAF,mBAAW,wBAAwB,QAAO;AAE1D,WAAO,UAAU;AAAA,EACnB,CAAC,GAAG,CAAC,KAAK,CAAC;AAEb,QAAM,sBAAsB,QAAQ,MAAM,eAAe,KAAK,CAAA,kBAAiB,cAAc,WAAW,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;AACrI,QAAM,eAAe,QAAQ,MAAM,eAAe,KAAK,CAAA,kBAAA;;AAAiB,+BAAc,SAAd,mBAAoB;AAAA,GAAO,GAAG,CAAC,cAAc,CAAC;AACtH,QAAM,iBAAiB,QAAQ,MAAM,eAAe,KAAK,CAAA,kBAAiB,cAAc,IAAI,GAAG,CAAC,cAAc,CAAC;AAE/G,QAAM,UAAiC,QAAQ,MAAM;AACnD,UAAM,0BAAU,IAAA;AAEhB,eAAW,QAAQ,gBAAgB;AACjC,YAAM,EAAE,SAAS;AAEjB,UAAI;AACF,YAAI,IAAI,KAAK,MAAM;AAAA,IACvB;AAEA,WAAO,MAAM,KAAK,GAAG;AAAA,EACvB,GAAG,CAAC,cAAc,CAAC;AAEnB,SACE,iBAAkB,eAAe,SAAS,yBAEnC,OAAA,EACC,UAAA;AAAA,IAAA,oBAAC,aAAA,EACC,+BAAC,UAAA,EACC,UAAA;AAAA,MAAA,oBAAC,aAAU,UAAA,OAAA,CAAI;AAAA,MACf,oBAAC,aAAU,UAAA,WAAA,CAAQ;AAAA,MAClB,kBAAkB,oBAAC,WAAA,EAAU,UAAA,OAAA,CAAI;AAAA,MAClC,oBAAC,aAAU,UAAA,SAAA,CAAM;AAAA,MAChB,QAAQ,SAAS,KAAK,oBAAC,aAAU,UAAA,UAAM;AAAA,MACxC,oBAAC,aAAU,UAAA,gBAAA,CAAa;AAAA,MACxB,oBAAC,aAAU,UAAA,cAAA,CAAW;AAAA,MACtB,oBAAC,aAAU,UAAA,aAAA,CAAU;AAAA,MACrB,oBAAC,aAAU,UAAA,cAAA,CAAW;AAAA,MACtB,oBAAC,aAAU,UAAA,aAAA,CAAU;AAAA,MACrB,oBAAC,aAAU,UAAA,gBAAA,CAAa;AAAA,MACxB,oBAAC,aAAU,UAAA,qBAAA,CAAkB;AAAA,MAC7B,oBAAC,aAAU,UAAA,sBAAA,CAAmB;AAAA,MAE5B,uBAAuB,oBAAC,WAAA,EAAU,UAAA,aAAA,CAAU;AAAA,MAG5C,gBAAgB,oBAAC,WAAA,EAAU,UAAA,UAAA,CAAO;AAAA,MAEpC,oBAAC,aAAU,UAAA,WAAA,CAAQ;AAAA,IAAA,EAAA,CACrB,EAAA,CACF;AAAA,IACA,oBAAC,WAAA,EACE,UAAA,eAAe,IAAI,CAAC;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,GACC,UACD,oBAACA,UAAA,EACC,UAAA,qBAAC,UAAA,EAAS,IAAI,MACZ,UAAA;AAAA,MAAA,oBAAC,WAAA,EAAU,WAAU,eACnB,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAAS,MAAM;AACb,gBAAI,SAAS;AACX,sBAAQ,eAAA;AACR,sBAAQ,MAAM,UAAU;AAExB,yBAAW,MAAM;AACf,wBAAQ,MAAM,UAAU;AAAA,cAC1B,GAAG,GAAI;AAAA,YACT;AAAA,UACF;AAAA,UACA,WAAU;AAAA,UAEV,UAAA;AAAA,YAAA,oBAAC,OAAA,EAAM,WAAW,GAAG,sBAAsB,QAAQ,sBAAsB,MAAM,GAAG,YAAY,GAC3F,UAAA,KAAA,CACH;AAAA,YACC,gBAAgB,oBAAC,OAAA,EAAI,WAAU,iCAAiC,uBAAa,KAAA,CAAK;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA,GAEvF;AAAA,MACA,oBAAC,aAAW,UAAA,SAAA,CAAS;AAAA,MACpB,kBAAkB,oBAAC,WAAA,EAAW,UAAA,QAAQ,IAAG;AAAA,MAC1C,oBAAC,aACE,UAAA,EAAC,6BAAM,cAAY,6BAAM,cAAa,SACnC,SAEE,qBAAAA,YAAA,EACE,UAAA;AAAA,QAAA,oBAAC,OAAA,EAAI,WAAU,uBAAuB,UAAA,QAAO;AAAA,QAC7C,oBAAC,OAAA,EAAI,WAAU,+BAA+B,uCAAM,SAAA,CAAS;AAAA,MAAA,EAAA,CAC/D,EAAA,CAER;AAAA,MACC,QAAQ,SAAS,KAChB,oBAAC,WAAA,EACE,WAAA,6BAAM,WAAU,oBAAC,OAAA,EAAM,WAAW,GAAG,sBAAsB,QAAQ,QAAQ,KAAK,MAAM,IAAI,sBAAsB,MAAM,GAAG,YAAY,GAAI,UAAA,KAAK,OAAO,YAAA,EAAY,CAAE,EAAA,CACtK;AAAA,2BAED,WAAA,EACC,UAAA;AAAA,QAAA,oBAAC,OAAA,EAAM,SAAQ,WAAU,WAAW,GAAG,WAAW,UAAU,2BAA2B,EAAE,GACtF,UAAA,gBAAgB,MAAM,GACzB;AAAA,QACC,WAAW,cAAc,WACxB,oBAAC,SAAM,SAAQ,aAAY,WAAU,QAAO,UAAA,UAAA,CAAO;AAAA,MAAA,GAEvD;AAAA,0BACC,WAAA,EACE,WAAA,6BAAM,aAAW,6BAAM,aAAY,MAE9B;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAM,WAAW,cAAc,QAAQ,OAAO,iEAAiE,KAAK,OAAO;AAAA,UAC3H,QAAO;AAAA,UACP,gBAAe;AAAA,UACf,WAAW,GAAG,eAAe;AAAA,YAC3B,SAAS;AAAA,YACT,MAAM;AAAA,UAAA,CACP,CAAC;AAAA,UAED,UAAA,KAAK;AAAA,QAAA;AAAA,MAAA,IAGV,IAAA,CACN;AAAA,0BACC,WAAA,EACE,WAAA,6BAAM,eAAa,6BAAM,eAAc,MAElC;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAM,WAAW,cAAc,QAAQ,OAAO,kEAAkE,KAAK,SAAS,IAAI,KAAK,OAAO;AAAA,UAC9I,QAAO;AAAA,UACP,gBAAe;AAAA,UACf,WAAW,GAAG,eAAe;AAAA,YAC3B,SAAS;AAAA,YACT,MAAM;AAAA,UAAA,CACP,CAAC;AAAA,UAED,UAAA,KAAK;AAAA,QAAA;AAAA,MAAA,IAGV,IAAA,CACN;AAAA,0BACC,WAAA,EACE,WAAA,6BAAM,WAAS,6BAAM,aAAY,MAE5B;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAM,WAAW,cAAc,QAAQ,OAAO,mEAAmE,KAAK,KAAK,IAAI,KAAK,OAAO;AAAA,UAC3I,QAAO;AAAA,UACP,gBAAe;AAAA,UACf,WAAW,GAAG,eAAe;AAAA,YAC3B,SAAS;AAAA,YACT,MAAM;AAAA,UAAA,CACP,CAAC;AAAA,UAED,UAAA,KAAK;AAAA,QAAA;AAAA,MAAA,IAGV,IAAA,CACN;AAAA,MACA,oBAAC,WAAA,EAAW,WAAA,6BAAM,OAAM,KAAI;AAAA,MAC5B,oBAAC,WAAA,EAAW,WAAA,6BAAM,OAAM,oBAAC,OAAA,EAAM,SAAQ,WAAW,UAAA,KAAK,IAAA,CAAI,IAAW,KAAI;AAAA,MAC1E,oBAAC,WAAA,EACE,UAAA,sBACG,oBAAC,SAAM,WAAU,kDAAiD,UAAA,OAAG,IACrE,oBAAC,OAAA,EAAM,SAAQ,aAAY,gBAAE,GACnC;AAAA,MACA,oBAAC,WAAA,EACE,UAAA,uBACG,oBAAC,SAAM,WAAU,kDAAiD,UAAA,OAAG,IACrE,oBAAC,OAAA,EAAM,SAAQ,aAAY,gBAAE,GACnC;AAAA,MAEE,uBACE,oBAAC,WAAA,EAEG,qBAAW,SAAS,0BACjB,OAAA,EACC,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YAAa,WAAW,eAAe;AAAA,cACtC,SAAS;AAAA,cACT,MAAM;AAAA,YAAA,CACP;AAAA,YACA,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGD,qBAAC,cAAA,EAAa,WAAU,gCACtB,UAAA;AAAA,UAAA,oBAAC,aAAA,EACC,UAAA,oBAAC,YAAA,EAAW,UAAA,aAAA,CAEZ,GACF;AAAA,+BACC,OAAA,EACC,UAAA;AAAA,YAAA,oBAAC,aAAA,EACC,+BAAC,UAAA,EACC,UAAA;AAAA,cAAA,oBAAC,aAAU,UAAA,MAAA,CAAG;AAAA,cACd,oBAAC,aAAU,UAAA,QAAA,CAAK;AAAA,YAAA,EAAA,CAClB,EAAA,CACF;AAAA,YACA,oBAAC,WAAA,EACE,UAAA,WAAW,IAAI,CAAC,CAAC,eAAe,KAAK,MACpC,qBAAC,UAAA,EACC,UAAA;AAAA,cAAA,oBAAC,aACC,UAAA,oBAAC,OAAA,EAAM,SAAQ,WAAW,yBAAc,EAAA,CAC1C;AAAA,cACA,oBAAC,WAAA,EAEG,UAAA,MAAM,QAAQ,KAAK,IAEb,oBAAC,MAAA,EAAG,WAAU,cACX,UAAA,MAAM,IAAI,CAAC,MAAM,eAChB,oBAAC,MAAA,EACC,UAAA,oBAAC,OAAA,EAAM,SAAQ,WAAW,UAAA,KAAA,CAAK,KADxB,UAET,CACD,GACH,IAEF,oBAAC,OAAA,EAAM,SAAQ,WAAW,iBAAM,EAAA,CAExC;AAAA,YAAA,EAAA,GAlBa,aAmBf,CACD,EAAA,CACH;AAAA,UAAA,EAAA,CACF;AAAA,QAAA,EAAA,CACF;AAAA,MAAA,EAAA,CACF,EAAA,CAGN;AAAA,MAGH,gBACC,oBAAC,WAAA,EACE,WAAA,6BAAM,gCAEJ,OAAA,EAAM,WAAU,kDAAiD,UAAA,UAAA,CAElE,EAAA,CAEJ;AAAA,MAEF,qBAAC,WAAA,EAAU,WAAU,cACnB,UAAA;AAAA,QAAA,oBAAC,UAAA,EAAS,IAAI,aAAa,GAAA,CAAI;AAAA,QAC9B,cAAc,MAAM,IAAI,aAAa,IAAI,KACxC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SACE,MAAM;AACJ,4BAAc,OAAO,aAAa,IAAI;AAAA,YACxC;AAAA,YAEF,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,OAAM;AAAA,YAEN,8BAAC,WAAA,CAAA,CAAU;AAAA,UAAA;AAAA,QAAA;AAAA,MACb,EAAA,CAEJ;AAAA,IAAA,EAAA,CACF,EAAA,GAnMa,aAAa,EAoM5B,CACD,EAAA,CACH;AAAA,EAAA,EAAA,CACF,IAEF,oBAAC,KAAA,EAAE,UAAA,qBAAA,CAAkB;AAE7B;"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@adhese/sdk-devtools",
3
3
  "type": "module",
4
- "version": "1.0.3",
4
+ "version": "1.0.4-nightly-20261002071913",
5
5
  "description": "Adhese SDK Devtools",
6
6
  "license": "GPL-3.0",
7
7
  "repository": {
@@ -27,7 +27,7 @@
27
27
  "prepareRelease": "npm run build"
28
28
  },
29
29
  "peerDependencies": {
30
- "@adhese/sdk": ">=1.0.0",
30
+ "@adhese/sdk": "1.13.0-nightly-20261002071913",
31
31
  "react": ">=16.13",
32
32
  "react-dom": ">=16.13"
33
33
  },