@adhese/sdk-react 1.6.3 → 1.6.4-nightly-20250331111606
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 +6 -0
- package/dist/AdheseSlot.js +1 -0
- package/dist/AdheseSlot.js.map +1 -1
- package/dist/cjs/AdheseSlot.cjs +1 -0
- package/dist/cjs/AdheseSlot.cjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/dist/AdheseSlot.js
CHANGED
package/dist/AdheseSlot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdheseSlot.js","sources":["../src/AdheseSlot.tsx"],"sourcesContent":["'use client';\n\nimport type { AdheseSlotOptions, AdheseSlot as Slot } from '@adhese/sdk';\nimport { watch } from '@adhese/sdk-shared';\nimport { type HTMLAttributes, type ReactNode, useCallback, useId, useMemo } from 'react';\nimport { useAdheseSlot, useWatch } from './useAdheseSlot';\n\nexport type AdheseSlotProps = {\n /**\n * Placeholder to be shown when the slot is not rendered yet.\n */\n placeholder?: ReactNode;\n /**\n * Callback to be called when the slot is created or disposed\n */\n onChange?(slot: Slot | null): void;\n /**\n * Inject custom React elements into the slot when it's rendered.\n */\n render?(slot: Slot): ReactNode;\n} & Omit<AdheseSlotOptions, 'containingElement' | 'context'> & HTMLAttributes<HTMLDivElement>;\n\n/**\n * Component to create an Adhese slot. The slot will be disposed when the component is unmounted. The slot will be\n * created when the containing element is available and the Adhese instance is available.\n *\n * @warning Make sure to wrap your `setup` function in a `useCallback` as it can trigger an infinite loop if it's not\n * memoized.\n */\n// eslint-disable-next-line ts/naming-convention\nexport function AdheseSlot({\n onChange,\n width,\n height,\n lazyLoading,\n lazyLoadingOptions,\n slot,\n pluginOptions,\n renderMode,\n type,\n setup,\n parameters,\n format,\n id,\n render,\n placeholder,\n style,\n ...props\n}: AdheseSlotProps): ReactNode {\n const reactId = useId().replaceAll(':', '');\n const componentId = id ?? `slot-${reactId}`;\n\n const slotState = useAdheseSlot(componentId, {\n width,\n height,\n lazyLoading,\n lazyLoadingOptions,\n slot,\n pluginOptions,\n renderMode: render ? 'none' : renderMode,\n type,\n parameters,\n format,\n setup: useCallback(((context, hooks): void => {\n setup?.(context, hooks);\n\n watch(context, (newSlot) => {\n onChange?.(newSlot);\n }, { immediate: true, deep: true });\n }) satisfies AdheseSlotOptions['setup'], [setup, onChange]),\n });\n\n const status = useWatch(slotState ? (): Slot['status'] => slotState.status : undefined);\n const slotFormat = useWatch(slotState ? (): Slot['format'] => slotState.format : undefined);\n const name = useWatch(slotState ? (): Slot['name'] => slotState.name : undefined);\n const data = useWatch(slotState ? (): Slot['data'] => slotState.data : undefined, { deep: true });\n\n const renderOutput = useMemo(() => slotState && data ? render?.(slotState) : placeholder, [slotState, render, placeholder, data]);\n\n if (['error', 'empty'].includes(status ?? '')) {\n return null;\n }\n\n return (\n <div\n data-name={name}\n data-status={status}\n data-format={slotFormat}\n data-slot={slot}\n data-preview={data?.preview}\n id={componentId}\n style={{\n width,\n height,\n ...style,\n }}\n {...props}\n >\n {renderOutput}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;AA8BO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA+B;AAC7B,QAAM,UAAU,MAAA,EAAQ,WAAW,KAAK,EAAE;AACpC,QAAA,cAAc,MAAM,QAAQ,OAAO;AAEnC,QAAA,YAAY,cAAc,aAAa;AAAA,IAC3C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY,SAAS,SAAS;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,YAAa,CAAC,SAAS,UAAgB;AAC5C,qCAAQ,SAAS;AAEX,YAAA,SAAS,CAAC,YAAY;AAC1B,6CAAW;AAAA,SACV,EAAE,WAAW,MAAM,MAAM,MAAM;AAAA,IAAA,GACK,CAAC,OAAO,QAAQ,CAAC;AAAA,EAAA,CAC3D;AAED,QAAM,SAAS,SAAS,YAAY,MAAsB,UAAU,SAAS,MAAS;AACtF,QAAM,aAAa,SAAS,YAAY,MAAsB,UAAU,SAAS,MAAS;AAC1F,QAAM,OAAO,SAAS,YAAY,MAAoB,UAAU,OAAO,MAAS;AAC1E,QAAA,OAAO,SAAS,YAAY,MAAoB,UAAU,OAAO,QAAW,EAAE,MAAM,MAAM;AAEhG,QAAM,eAAe,QAAQ,MAAM,aAAa,OAAO,iCAAS,aAAa,aAAa,CAAC,WAAW,QAAQ,aAAa,IAAI,CAAC;AAEhI,MAAI,CAAC,SAAS,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG;AACtC,WAAA;AAAA,EAAA;AAIP,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAW;AAAA,MACX,eAAa;AAAA,MACb,eAAa;AAAA,MACb,aAAW;AAAA,MACX,gBAAc,6BAAM;AAAA,MACpB,IAAI;AAAA,MACJ,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,GAAG;AAAA,MACL;AAAA,MACC,GAAG;AAAA,MAEH,UAAA;AAAA,IAAA;AAAA,EACH;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"AdheseSlot.js","sources":["../src/AdheseSlot.tsx"],"sourcesContent":["'use client';\n\nimport type { AdheseSlotOptions, AdheseSlot as Slot } from '@adhese/sdk';\nimport { watch } from '@adhese/sdk-shared';\nimport { type HTMLAttributes, type ReactNode, useCallback, useId, useMemo } from 'react';\nimport { useAdheseSlot, useWatch } from './useAdheseSlot';\n\nexport type AdheseSlotProps = {\n /**\n * Placeholder to be shown when the slot is not rendered yet.\n */\n placeholder?: ReactNode;\n /**\n * Callback to be called when the slot is created or disposed\n */\n onChange?(slot: Slot | null): void;\n /**\n * Inject custom React elements into the slot when it's rendered.\n */\n render?(slot: Slot): ReactNode;\n} & Omit<AdheseSlotOptions, 'containingElement' | 'context'> & HTMLAttributes<HTMLDivElement>;\n\n/**\n * Component to create an Adhese slot. The slot will be disposed when the component is unmounted. The slot will be\n * created when the containing element is available and the Adhese instance is available.\n *\n * @warning Make sure to wrap your `setup` function in a `useCallback` as it can trigger an infinite loop if it's not\n * memoized.\n */\n// eslint-disable-next-line ts/naming-convention\nexport function AdheseSlot({\n onChange,\n width,\n height,\n lazyLoading,\n lazyLoadingOptions,\n slot,\n pluginOptions,\n renderMode,\n type,\n setup,\n parameters,\n format,\n id,\n render,\n placeholder,\n style,\n ...props\n}: AdheseSlotProps): ReactNode {\n const reactId = useId().replaceAll(':', '');\n const componentId = id ?? `slot-${reactId}`;\n\n const slotState = useAdheseSlot(componentId, {\n width,\n height,\n lazyLoading,\n lazyLoadingOptions,\n slot,\n pluginOptions,\n renderMode: render ? 'none' : renderMode,\n type,\n parameters,\n format,\n setup: useCallback(((context, hooks): void => {\n setup?.(context, hooks);\n\n watch(context, (newSlot) => {\n onChange?.(newSlot);\n }, { immediate: true, deep: true });\n }) satisfies AdheseSlotOptions['setup'], [setup, onChange]),\n });\n\n const status = useWatch(slotState ? (): Slot['status'] => slotState.status : undefined);\n const slotFormat = useWatch(slotState ? (): Slot['format'] => slotState.format : undefined);\n const name = useWatch(slotState ? (): Slot['name'] => slotState.name : undefined);\n const data = useWatch(slotState ? (): Slot['data'] => slotState.data : undefined, { deep: true });\n\n const renderOutput = useMemo(() => slotState && data ? render?.(slotState) : placeholder, [slotState, render, placeholder, data]);\n\n if (['error', 'empty'].includes(status ?? '')) {\n return null;\n }\n\n return (\n <div\n data-name={name}\n data-status={status}\n data-format={slotFormat}\n data-slot={slot}\n data-preview={data?.preview}\n id={componentId}\n className='adhese-devtools'\n style={{\n width,\n height,\n ...style,\n }}\n {...props}\n >\n {renderOutput}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;AA8BO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA+B;AAC7B,QAAM,UAAU,MAAA,EAAQ,WAAW,KAAK,EAAE;AACpC,QAAA,cAAc,MAAM,QAAQ,OAAO;AAEnC,QAAA,YAAY,cAAc,aAAa;AAAA,IAC3C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY,SAAS,SAAS;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,YAAa,CAAC,SAAS,UAAgB;AAC5C,qCAAQ,SAAS;AAEX,YAAA,SAAS,CAAC,YAAY;AAC1B,6CAAW;AAAA,SACV,EAAE,WAAW,MAAM,MAAM,MAAM;AAAA,IAAA,GACK,CAAC,OAAO,QAAQ,CAAC;AAAA,EAAA,CAC3D;AAED,QAAM,SAAS,SAAS,YAAY,MAAsB,UAAU,SAAS,MAAS;AACtF,QAAM,aAAa,SAAS,YAAY,MAAsB,UAAU,SAAS,MAAS;AAC1F,QAAM,OAAO,SAAS,YAAY,MAAoB,UAAU,OAAO,MAAS;AAC1E,QAAA,OAAO,SAAS,YAAY,MAAoB,UAAU,OAAO,QAAW,EAAE,MAAM,MAAM;AAEhG,QAAM,eAAe,QAAQ,MAAM,aAAa,OAAO,iCAAS,aAAa,aAAa,CAAC,WAAW,QAAQ,aAAa,IAAI,CAAC;AAEhI,MAAI,CAAC,SAAS,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG;AACtC,WAAA;AAAA,EAAA;AAIP,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAW;AAAA,MACX,eAAa;AAAA,MACb,eAAa;AAAA,MACb,aAAW;AAAA,MACX,gBAAc,6BAAM;AAAA,MACpB,IAAI;AAAA,MACJ,WAAU;AAAA,MACV,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,GAAG;AAAA,MACL;AAAA,MACC,GAAG;AAAA,MAEH,UAAA;AAAA,IAAA;AAAA,EACH;AAEJ;"}
|
package/dist/cjs/AdheseSlot.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdheseSlot.cjs","sources":["../../src/AdheseSlot.tsx"],"sourcesContent":["'use client';\n\nimport type { AdheseSlotOptions, AdheseSlot as Slot } from '@adhese/sdk';\nimport { watch } from '@adhese/sdk-shared';\nimport { type HTMLAttributes, type ReactNode, useCallback, useId, useMemo } from 'react';\nimport { useAdheseSlot, useWatch } from './useAdheseSlot';\n\nexport type AdheseSlotProps = {\n /**\n * Placeholder to be shown when the slot is not rendered yet.\n */\n placeholder?: ReactNode;\n /**\n * Callback to be called when the slot is created or disposed\n */\n onChange?(slot: Slot | null): void;\n /**\n * Inject custom React elements into the slot when it's rendered.\n */\n render?(slot: Slot): ReactNode;\n} & Omit<AdheseSlotOptions, 'containingElement' | 'context'> & HTMLAttributes<HTMLDivElement>;\n\n/**\n * Component to create an Adhese slot. The slot will be disposed when the component is unmounted. The slot will be\n * created when the containing element is available and the Adhese instance is available.\n *\n * @warning Make sure to wrap your `setup` function in a `useCallback` as it can trigger an infinite loop if it's not\n * memoized.\n */\n// eslint-disable-next-line ts/naming-convention\nexport function AdheseSlot({\n onChange,\n width,\n height,\n lazyLoading,\n lazyLoadingOptions,\n slot,\n pluginOptions,\n renderMode,\n type,\n setup,\n parameters,\n format,\n id,\n render,\n placeholder,\n style,\n ...props\n}: AdheseSlotProps): ReactNode {\n const reactId = useId().replaceAll(':', '');\n const componentId = id ?? `slot-${reactId}`;\n\n const slotState = useAdheseSlot(componentId, {\n width,\n height,\n lazyLoading,\n lazyLoadingOptions,\n slot,\n pluginOptions,\n renderMode: render ? 'none' : renderMode,\n type,\n parameters,\n format,\n setup: useCallback(((context, hooks): void => {\n setup?.(context, hooks);\n\n watch(context, (newSlot) => {\n onChange?.(newSlot);\n }, { immediate: true, deep: true });\n }) satisfies AdheseSlotOptions['setup'], [setup, onChange]),\n });\n\n const status = useWatch(slotState ? (): Slot['status'] => slotState.status : undefined);\n const slotFormat = useWatch(slotState ? (): Slot['format'] => slotState.format : undefined);\n const name = useWatch(slotState ? (): Slot['name'] => slotState.name : undefined);\n const data = useWatch(slotState ? (): Slot['data'] => slotState.data : undefined, { deep: true });\n\n const renderOutput = useMemo(() => slotState && data ? render?.(slotState) : placeholder, [slotState, render, placeholder, data]);\n\n if (['error', 'empty'].includes(status ?? '')) {\n return null;\n }\n\n return (\n <div\n data-name={name}\n data-status={status}\n data-format={slotFormat}\n data-slot={slot}\n data-preview={data?.preview}\n id={componentId}\n style={{\n width,\n height,\n ...style,\n }}\n {...props}\n >\n {renderOutput}\n </div>\n );\n}\n"],"names":["useId","useAdheseSlot","useCallback","watch","useWatch","useMemo","jsx"],"mappings":";;;;;;AA8BO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA+B;AAC7B,QAAM,UAAUA,MAAA,MAAA,EAAQ,WAAW,KAAK,EAAE;AACpC,QAAA,cAAc,MAAM,QAAQ,OAAO;AAEnC,QAAA,YAAYC,4BAAc,aAAa;AAAA,IAC3C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY,SAAS,SAAS;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAOC,MAAA,YAAa,CAAC,SAAS,UAAgB;AAC5C,qCAAQ,SAAS;AAEXC,sBAAA,SAAS,CAAC,YAAY;AAC1B,6CAAW;AAAA,SACV,EAAE,WAAW,MAAM,MAAM,MAAM;AAAA,IAAA,GACK,CAAC,OAAO,QAAQ,CAAC;AAAA,EAAA,CAC3D;AAED,QAAM,SAASC,cAAAA,SAAS,YAAY,MAAsB,UAAU,SAAS,MAAS;AACtF,QAAM,aAAaA,cAAAA,SAAS,YAAY,MAAsB,UAAU,SAAS,MAAS;AAC1F,QAAM,OAAOA,cAAAA,SAAS,YAAY,MAAoB,UAAU,OAAO,MAAS;AAC1E,QAAA,OAAOA,cAAAA,SAAS,YAAY,MAAoB,UAAU,OAAO,QAAW,EAAE,MAAM,MAAM;AAEhG,QAAM,eAAeC,MAAA,QAAQ,MAAM,aAAa,OAAO,iCAAS,aAAa,aAAa,CAAC,WAAW,QAAQ,aAAa,IAAI,CAAC;AAEhI,MAAI,CAAC,SAAS,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG;AACtC,WAAA;AAAA,EAAA;AAIP,SAAAC,2BAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAW;AAAA,MACX,eAAa;AAAA,MACb,eAAa;AAAA,MACb,aAAW;AAAA,MACX,gBAAc,6BAAM;AAAA,MACpB,IAAI;AAAA,MACJ,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,GAAG;AAAA,MACL;AAAA,MACC,GAAG;AAAA,MAEH,UAAA;AAAA,IAAA;AAAA,EACH;AAEJ;;"}
|
|
1
|
+
{"version":3,"file":"AdheseSlot.cjs","sources":["../../src/AdheseSlot.tsx"],"sourcesContent":["'use client';\n\nimport type { AdheseSlotOptions, AdheseSlot as Slot } from '@adhese/sdk';\nimport { watch } from '@adhese/sdk-shared';\nimport { type HTMLAttributes, type ReactNode, useCallback, useId, useMemo } from 'react';\nimport { useAdheseSlot, useWatch } from './useAdheseSlot';\n\nexport type AdheseSlotProps = {\n /**\n * Placeholder to be shown when the slot is not rendered yet.\n */\n placeholder?: ReactNode;\n /**\n * Callback to be called when the slot is created or disposed\n */\n onChange?(slot: Slot | null): void;\n /**\n * Inject custom React elements into the slot when it's rendered.\n */\n render?(slot: Slot): ReactNode;\n} & Omit<AdheseSlotOptions, 'containingElement' | 'context'> & HTMLAttributes<HTMLDivElement>;\n\n/**\n * Component to create an Adhese slot. The slot will be disposed when the component is unmounted. The slot will be\n * created when the containing element is available and the Adhese instance is available.\n *\n * @warning Make sure to wrap your `setup` function in a `useCallback` as it can trigger an infinite loop if it's not\n * memoized.\n */\n// eslint-disable-next-line ts/naming-convention\nexport function AdheseSlot({\n onChange,\n width,\n height,\n lazyLoading,\n lazyLoadingOptions,\n slot,\n pluginOptions,\n renderMode,\n type,\n setup,\n parameters,\n format,\n id,\n render,\n placeholder,\n style,\n ...props\n}: AdheseSlotProps): ReactNode {\n const reactId = useId().replaceAll(':', '');\n const componentId = id ?? `slot-${reactId}`;\n\n const slotState = useAdheseSlot(componentId, {\n width,\n height,\n lazyLoading,\n lazyLoadingOptions,\n slot,\n pluginOptions,\n renderMode: render ? 'none' : renderMode,\n type,\n parameters,\n format,\n setup: useCallback(((context, hooks): void => {\n setup?.(context, hooks);\n\n watch(context, (newSlot) => {\n onChange?.(newSlot);\n }, { immediate: true, deep: true });\n }) satisfies AdheseSlotOptions['setup'], [setup, onChange]),\n });\n\n const status = useWatch(slotState ? (): Slot['status'] => slotState.status : undefined);\n const slotFormat = useWatch(slotState ? (): Slot['format'] => slotState.format : undefined);\n const name = useWatch(slotState ? (): Slot['name'] => slotState.name : undefined);\n const data = useWatch(slotState ? (): Slot['data'] => slotState.data : undefined, { deep: true });\n\n const renderOutput = useMemo(() => slotState && data ? render?.(slotState) : placeholder, [slotState, render, placeholder, data]);\n\n if (['error', 'empty'].includes(status ?? '')) {\n return null;\n }\n\n return (\n <div\n data-name={name}\n data-status={status}\n data-format={slotFormat}\n data-slot={slot}\n data-preview={data?.preview}\n id={componentId}\n className='adhese-devtools'\n style={{\n width,\n height,\n ...style,\n }}\n {...props}\n >\n {renderOutput}\n </div>\n );\n}\n"],"names":["useId","useAdheseSlot","useCallback","watch","useWatch","useMemo","jsx"],"mappings":";;;;;;AA8BO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA+B;AAC7B,QAAM,UAAUA,MAAA,MAAA,EAAQ,WAAW,KAAK,EAAE;AACpC,QAAA,cAAc,MAAM,QAAQ,OAAO;AAEnC,QAAA,YAAYC,4BAAc,aAAa;AAAA,IAC3C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY,SAAS,SAAS;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAOC,MAAA,YAAa,CAAC,SAAS,UAAgB;AAC5C,qCAAQ,SAAS;AAEXC,sBAAA,SAAS,CAAC,YAAY;AAC1B,6CAAW;AAAA,SACV,EAAE,WAAW,MAAM,MAAM,MAAM;AAAA,IAAA,GACK,CAAC,OAAO,QAAQ,CAAC;AAAA,EAAA,CAC3D;AAED,QAAM,SAASC,cAAAA,SAAS,YAAY,MAAsB,UAAU,SAAS,MAAS;AACtF,QAAM,aAAaA,cAAAA,SAAS,YAAY,MAAsB,UAAU,SAAS,MAAS;AAC1F,QAAM,OAAOA,cAAAA,SAAS,YAAY,MAAoB,UAAU,OAAO,MAAS;AAC1E,QAAA,OAAOA,cAAAA,SAAS,YAAY,MAAoB,UAAU,OAAO,QAAW,EAAE,MAAM,MAAM;AAEhG,QAAM,eAAeC,MAAA,QAAQ,MAAM,aAAa,OAAO,iCAAS,aAAa,aAAa,CAAC,WAAW,QAAQ,aAAa,IAAI,CAAC;AAEhI,MAAI,CAAC,SAAS,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG;AACtC,WAAA;AAAA,EAAA;AAIP,SAAAC,2BAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAW;AAAA,MACX,eAAa;AAAA,MACb,eAAa;AAAA,MACb,aAAW;AAAA,MACX,gBAAc,6BAAM;AAAA,MACpB,IAAI;AAAA,MACJ,WAAU;AAAA,MACV,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,GAAG;AAAA,MACL;AAAA,MACC,GAAG;AAAA,MAEH,UAAA;AAAA,IAAA;AAAA,EACH;AAEJ;;"}
|