@payloadcms/ui 4.0.0-canary.14 → 4.0.0-canary.16

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 (37) hide show
  1. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -1
  2. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +109 -89
  3. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
  4. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +1 -1
  5. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js +2 -0
  6. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +1 -1
  7. package/dist/elements/Nav/SidebarTabs/index.client.d.ts.map +1 -1
  8. package/dist/elements/Nav/SidebarTabs/index.client.js +12 -5
  9. package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
  10. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts +1 -0
  11. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts.map +1 -1
  12. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js +2 -1
  13. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js.map +1 -1
  14. package/dist/elements/RelationshipTable/Pagination.d.ts +0 -1
  15. package/dist/elements/RelationshipTable/Pagination.d.ts.map +1 -1
  16. package/dist/elements/RelationshipTable/Pagination.js +27 -77
  17. package/dist/elements/RelationshipTable/Pagination.js.map +1 -1
  18. package/dist/elements/RelationshipTable/index.d.ts +1 -0
  19. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  20. package/dist/elements/RelationshipTable/index.js +4 -3
  21. package/dist/elements/RelationshipTable/index.js.map +1 -1
  22. package/dist/elements/TableSection/index.css +0 -1
  23. package/dist/fields/Blocks/index.js +3 -3
  24. package/dist/fields/Blocks/index.js.map +1 -1
  25. package/dist/fields/Join/index.css +9 -0
  26. package/dist/fields/Join/index.d.ts.map +1 -1
  27. package/dist/fields/Join/index.js +13 -9
  28. package/dist/fields/Join/index.js.map +1 -1
  29. package/dist/providers/SidebarTabs/index.d.ts +3 -2
  30. package/dist/providers/SidebarTabs/index.d.ts.map +1 -1
  31. package/dist/providers/SidebarTabs/index.js.map +1 -1
  32. package/dist/styles.css +1 -1
  33. package/dist/views/Logout/index.d.ts.map +1 -1
  34. package/dist/views/Logout/index.js +11 -0
  35. package/dist/views/Logout/index.js.map +1 -1
  36. package/package.json +4 -4
  37. package/dist/elements/RelationshipTable/Pagination.css +0 -39
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["ObjectIdImport","fieldAffectsData","flattenTopLevelFields","React","useMemo","ErrorPill","RelationshipTable","RenderCustomComponent","useField","withCondition","useConfig","useDocumentInfo","useTranslation","FieldDescription","FieldLabel","fieldBaseClass","ObjectId","default","getInitialDrawerData","collectionSlug","config","docID","fields","segments","flattenedFields","keepPresentationalFields","path","field","find","name","type","value","Array","isArray","relationTo","hasMany","nextSegments","slice","length","initialData","id","toHexString","_block","blocks","block","blocksMap","blockInitialData","blockType","slug","JoinFieldComponent","props","admin","allowCreate","description","collection","label","localized","on","required","pathFromProps","docConfig","getEntityConfig","i18n","customComponents","AfterInput","BeforeInput","Description","Label","errorPaths","showError","potentiallyStalePath","fieldErrorCount","fieldHasErrors","filterOptions","targetField","where","equals","and","initialDrawerData","relatedCollection","split","_jsxs","className","filter","Boolean","join","replace","_jsx","disableTable","fieldPath","docs","count","withMessage","parent","joinPath","undefined","CustomComponent","Fallback","JoinField"],"sources":["../../../src/fields/Join/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n ClientConfig,\n ClientField,\n JoinFieldClient,\n JoinFieldClientComponent,\n PaginatedDocs,\n Where,\n} from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { fieldAffectsData, flattenTopLevelFields } from 'payload/shared'\nimport React, { useMemo } from 'react'\n\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { RelationshipTable } from '../../elements/RelationshipTable/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { fieldBaseClass } from '../index.js'\nimport './index.css'\n\nconst ObjectId = 'default' in ObjectIdImport ? ObjectIdImport.default : ObjectIdImport\n\n/**\n * Recursively builds the default data for joined collection\n */\nconst getInitialDrawerData = ({\n collectionSlug,\n config,\n docID,\n fields,\n segments,\n}: {\n collectionSlug: string\n config: ClientConfig\n docID: number | string\n fields: ClientField[]\n segments: string[]\n}) => {\n const flattenedFields = flattenTopLevelFields(fields, {\n keepPresentationalFields: true,\n })\n\n const path = segments[0]\n\n const field = flattenedFields.find((field) => field.name === path)\n\n if (!field) {\n return null\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n let value: { relationTo: string; value: number | string } | number | string = docID\n if (Array.isArray(field.relationTo)) {\n value = {\n relationTo: collectionSlug,\n value: docID,\n }\n }\n return {\n [field.name]: field.hasMany ? [value] : value,\n }\n }\n\n const nextSegments = segments.slice(1, segments.length)\n\n if (field.type === 'tab' || (field.type === 'group' && fieldAffectsData(field))) {\n return {\n [field.name]: getInitialDrawerData({\n collectionSlug,\n config,\n docID,\n fields: field.fields,\n segments: nextSegments,\n }),\n }\n }\n\n if (field.type === 'array') {\n const initialData = getInitialDrawerData({\n collectionSlug,\n config,\n docID,\n fields: field.fields,\n segments: nextSegments,\n })\n\n initialData.id = ObjectId().toHexString()\n\n return {\n [field.name]: [initialData],\n }\n }\n\n if (field.type === 'blocks') {\n for (const _block of field.blocks) {\n const block = typeof _block === 'string' ? config.blocksMap[_block] : _block\n\n const blockInitialData = getInitialDrawerData({\n collectionSlug,\n config,\n docID,\n fields: block.fields,\n segments: nextSegments,\n })\n\n if (blockInitialData) {\n blockInitialData.id = ObjectId().toHexString()\n blockInitialData.blockType = block.slug\n\n return {\n [field.name]: [blockInitialData],\n }\n }\n }\n }\n}\n\nconst JoinFieldComponent: JoinFieldClientComponent = (props) => {\n const {\n field,\n field: { admin: { allowCreate, description } = {}, collection, label, localized, on, required },\n path: pathFromProps,\n } = props\n\n const { id: docID, docConfig } = useDocumentInfo()\n\n const { config, getEntityConfig } = useConfig()\n\n const { i18n } = useTranslation()\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Label } = {},\n errorPaths,\n path,\n showError,\n value,\n } = useField<PaginatedDocs>({\n potentiallyStalePath: pathFromProps,\n })\n\n const fieldErrorCount = errorPaths?.length || (showError ? 1 : 0)\n const fieldHasErrors = fieldErrorCount > 0\n\n const filterOptions: null | Where = useMemo(() => {\n if (!docID) {\n return null\n }\n\n let value: { relationTo: string; value: number | string } | number | string = docID\n\n if (Array.isArray(field.targetField.relationTo)) {\n value = {\n relationTo: docConfig.slug,\n value,\n }\n }\n\n const where = Array.isArray(collection)\n ? {}\n : {\n [on]: {\n equals: value,\n },\n }\n\n if (field.where) {\n return {\n and: [where, field.where],\n }\n }\n\n return where\n }, [docID, collection, field.targetField.relationTo, field.where, on, docConfig?.slug])\n\n const initialDrawerData = useMemo(() => {\n const relatedCollection = getEntityConfig({\n collectionSlug: Array.isArray(field.collection) ? field.collection[0] : field.collection,\n })\n\n return getInitialDrawerData({\n collectionSlug: docConfig?.slug,\n config,\n docID,\n fields: relatedCollection?.fields,\n segments: field.on.split('.'),\n })\n }, [getEntityConfig, field.collection, field.on, docConfig?.slug, docID, config])\n\n if (!docConfig) {\n return null\n }\n\n return (\n <div\n className={[fieldBaseClass, fieldHasErrors && 'error', 'join'].filter(Boolean).join(' ')}\n id={`field-${path?.replace(/\\./g, '__')}`}\n >\n <RelationshipTable\n AfterInput={AfterInput}\n allowCreate={typeof docID !== 'undefined' && allowCreate}\n BeforeInput={BeforeInput}\n disableTable={filterOptions === null}\n field={field as JoinFieldClient}\n fieldPath={path}\n filterOptions={filterOptions}\n initialData={docID && value ? value : ({ docs: [] } as PaginatedDocs)}\n initialDrawerData={initialDrawerData}\n Label={\n <div className=\"join__header-wrapper\">\n <h4>\n {Label || (\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n )}\n </h4>\n {fieldHasErrors && <ErrorPill count={fieldErrorCount} i18n={i18n} withMessage />}\n </div>\n }\n parent={\n typeof docID !== 'undefined'\n ? {\n id: docID,\n collectionSlug: docConfig.slug,\n joinPath: path,\n }\n : undefined\n }\n relationTo={collection}\n />\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n\nexport const JoinField = withCondition(JoinFieldComponent)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["ObjectIdImport","fieldAffectsData","flattenTopLevelFields","React","useMemo","ErrorPill","RelationshipTable","RenderCustomComponent","useField","withCondition","useConfig","useDocumentInfo","useTranslation","FieldDescription","FieldLabel","fieldBaseClass","ObjectId","default","getInitialDrawerData","collectionSlug","config","docID","fields","segments","flattenedFields","keepPresentationalFields","path","field","find","name","type","value","Array","isArray","relationTo","hasMany","nextSegments","slice","length","initialData","id","toHexString","_block","blocks","block","blocksMap","blockInitialData","blockType","slug","JoinFieldComponent","props","admin","allowCreate","description","collection","label","localized","on","required","pathFromProps","docConfig","getEntityConfig","i18n","customComponents","AfterInput","BeforeInput","Description","Label","errorPaths","showError","potentiallyStalePath","fieldErrorCount","fieldHasErrors","filterOptions","targetField","where","equals","and","initialDrawerData","relatedCollection","split","_jsx","className","filter","Boolean","join","replace","CustomComponent","Fallback","undefined","disableTable","fieldPath","docs","_jsxs","count","withMessage","parent","joinPath","JoinField"],"sources":["../../../src/fields/Join/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n ClientConfig,\n ClientField,\n JoinFieldClient,\n JoinFieldClientComponent,\n PaginatedDocs,\n Where,\n} from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { fieldAffectsData, flattenTopLevelFields } from 'payload/shared'\nimport React, { useMemo } from 'react'\n\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { RelationshipTable } from '../../elements/RelationshipTable/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { fieldBaseClass } from '../index.js'\nimport './index.css'\n\nconst ObjectId = 'default' in ObjectIdImport ? ObjectIdImport.default : ObjectIdImport\n\n/**\n * Recursively builds the default data for joined collection\n */\nconst getInitialDrawerData = ({\n collectionSlug,\n config,\n docID,\n fields,\n segments,\n}: {\n collectionSlug: string\n config: ClientConfig\n docID: number | string\n fields: ClientField[]\n segments: string[]\n}) => {\n const flattenedFields = flattenTopLevelFields(fields, {\n keepPresentationalFields: true,\n })\n\n const path = segments[0]\n\n const field = flattenedFields.find((field) => field.name === path)\n\n if (!field) {\n return null\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n let value: { relationTo: string; value: number | string } | number | string = docID\n if (Array.isArray(field.relationTo)) {\n value = {\n relationTo: collectionSlug,\n value: docID,\n }\n }\n return {\n [field.name]: field.hasMany ? [value] : value,\n }\n }\n\n const nextSegments = segments.slice(1, segments.length)\n\n if (field.type === 'tab' || (field.type === 'group' && fieldAffectsData(field))) {\n return {\n [field.name]: getInitialDrawerData({\n collectionSlug,\n config,\n docID,\n fields: field.fields,\n segments: nextSegments,\n }),\n }\n }\n\n if (field.type === 'array') {\n const initialData = getInitialDrawerData({\n collectionSlug,\n config,\n docID,\n fields: field.fields,\n segments: nextSegments,\n })\n\n initialData.id = ObjectId().toHexString()\n\n return {\n [field.name]: [initialData],\n }\n }\n\n if (field.type === 'blocks') {\n for (const _block of field.blocks) {\n const block = typeof _block === 'string' ? config.blocksMap[_block] : _block\n\n const blockInitialData = getInitialDrawerData({\n collectionSlug,\n config,\n docID,\n fields: block.fields,\n segments: nextSegments,\n })\n\n if (blockInitialData) {\n blockInitialData.id = ObjectId().toHexString()\n blockInitialData.blockType = block.slug\n\n return {\n [field.name]: [blockInitialData],\n }\n }\n }\n }\n}\n\nconst JoinFieldComponent: JoinFieldClientComponent = (props) => {\n const {\n field,\n field: { admin: { allowCreate, description } = {}, collection, label, localized, on, required },\n path: pathFromProps,\n } = props\n\n const { id: docID, docConfig } = useDocumentInfo()\n\n const { config, getEntityConfig } = useConfig()\n\n const { i18n } = useTranslation()\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Label } = {},\n errorPaths,\n path,\n showError,\n value,\n } = useField<PaginatedDocs>({\n potentiallyStalePath: pathFromProps,\n })\n\n const fieldErrorCount = errorPaths?.length || (showError ? 1 : 0)\n const fieldHasErrors = fieldErrorCount > 0\n\n const filterOptions: null | Where = useMemo(() => {\n if (!docID) {\n return null\n }\n\n let value: { relationTo: string; value: number | string } | number | string = docID\n\n if (Array.isArray(field.targetField.relationTo)) {\n value = {\n relationTo: docConfig.slug,\n value,\n }\n }\n\n const where = Array.isArray(collection)\n ? {}\n : {\n [on]: {\n equals: value,\n },\n }\n\n if (field.where) {\n return {\n and: [where, field.where],\n }\n }\n\n return where\n }, [docID, collection, field.targetField.relationTo, field.where, on, docConfig?.slug])\n\n const initialDrawerData = useMemo(() => {\n const relatedCollection = getEntityConfig({\n collectionSlug: Array.isArray(field.collection) ? field.collection[0] : field.collection,\n })\n\n return getInitialDrawerData({\n collectionSlug: docConfig?.slug,\n config,\n docID,\n fields: relatedCollection?.fields,\n segments: field.on.split('.'),\n })\n }, [getEntityConfig, field.collection, field.on, docConfig?.slug, docID, config])\n\n if (!docConfig) {\n return null\n }\n\n return (\n <div\n className={[fieldBaseClass, fieldHasErrors && 'error', 'join'].filter(Boolean).join(' ')}\n id={`field-${path?.replace(/\\./g, '__')}`}\n >\n <RelationshipTable\n AfterInput={AfterInput}\n allowCreate={typeof docID !== 'undefined' && allowCreate}\n BeforeInput={BeforeInput}\n Description={\n Description || description ? (\n <div className=\"join__description\">\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n ) : undefined\n }\n disableTable={filterOptions === null}\n field={field as JoinFieldClient}\n fieldPath={path}\n filterOptions={filterOptions}\n initialData={docID && value ? value : ({ docs: [] } as PaginatedDocs)}\n initialDrawerData={initialDrawerData}\n Label={\n <div className=\"join__header-wrapper\">\n <h4>\n {Label || (\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n )}\n </h4>\n {fieldHasErrors && <ErrorPill count={fieldErrorCount} i18n={i18n} withMessage />}\n </div>\n }\n parent={\n typeof docID !== 'undefined'\n ? {\n id: docID,\n collectionSlug: docConfig.slug,\n joinPath: path,\n }\n : undefined\n }\n relationTo={collection}\n />\n </div>\n )\n}\n\nexport const JoinField = withCondition(JoinFieldComponent)\n"],"mappings":"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","ignoreList":[]}
@@ -1,16 +1,17 @@
1
1
  import React from 'react';
2
+ import type { RenderTabServerFnArgs } from '../../elements/Nav/SidebarTabs/renderTabServerFn.js';
2
3
  export type SidebarTabsContextType = {
3
4
  activeTabSlug: null | string;
4
5
  /**
5
6
  * Reload the content for a specific tab, bypassing the cache.
6
7
  * Useful when the tab's data dependencies change.
7
8
  */
8
- reloadTabContent: (tabSlug: string) => void;
9
+ reloadTabContent: (tabSlug: string, serverArgs?: Partial<RenderTabServerFnArgs>) => void;
9
10
  };
10
11
  export type SidebarTabsProviderProps = {
11
12
  activeTabSlug: null | string;
12
13
  children: React.ReactNode;
13
- reloadTabContent: (tabSlug: string) => void;
14
+ reloadTabContent: (tabSlug: string, serverArgs?: Partial<RenderTabServerFnArgs>) => void;
14
15
  };
15
16
  export declare const SidebarTabsProvider: React.FC<SidebarTabsProviderProps>;
16
17
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/SidebarTabs/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA6B,MAAM,OAAO,CAAA;AAEjD,MAAM,MAAM,sBAAsB,GAAG;IACnC,aAAa,EAAE,IAAI,GAAG,MAAM,CAAA;IAC5B;;;OAGG;IACH,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAC5C,CAAA;AAID,MAAM,MAAM,wBAAwB,GAAG;IACrC,aAAa,EAAE,IAAI,GAAG,MAAM,CAAA;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAC5C,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAQlE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,QAAO,IAAI,GAAG,sBAExC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/SidebarTabs/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA6B,MAAM,OAAO,CAAA;AAEjD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAA;AAEhG,MAAM,MAAM,sBAAsB,GAAG;IACnC,aAAa,EAAE,IAAI,GAAG,MAAM,CAAA;IAC5B;;;OAGG;IACH,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,KAAK,IAAI,CAAA;CACzF,CAAA;AAID,MAAM,MAAM,wBAAwB,GAAG;IACrC,aAAa,EAAE,IAAI,GAAG,MAAM,CAAA;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,KAAK,IAAI,CAAA;CACzF,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAQlE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,QAAO,IAAI,GAAG,sBAExC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","createContext","use","SidebarTabsContext","SidebarTabsProvider","activeTabSlug","children","reloadTabContent","_jsx","value","useSidebarTabs"],"sources":["../../../src/providers/SidebarTabs/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { createContext, use } from 'react'\n\nexport type SidebarTabsContextType = {\n activeTabSlug: null | string\n /**\n * Reload the content for a specific tab, bypassing the cache.\n * Useful when the tab's data dependencies change.\n */\n reloadTabContent: (tabSlug: string) => void\n}\n\nconst SidebarTabsContext = createContext<null | SidebarTabsContextType>(null)\n\nexport type SidebarTabsProviderProps = {\n activeTabSlug: null | string\n children: React.ReactNode\n reloadTabContent: (tabSlug: string) => void\n}\n\nexport const SidebarTabsProvider: React.FC<SidebarTabsProviderProps> = ({\n activeTabSlug,\n children,\n reloadTabContent,\n}) => {\n return (\n <SidebarTabsContext value={{ activeTabSlug, reloadTabContent }}>{children}</SidebarTabsContext>\n )\n}\n\n/**\n * Hook to access sidebar tab controls.\n * Returns null if used outside of a SidebarTabsProvider (e.g., when there's only one tab).\n */\nexport const useSidebarTabs = (): null | SidebarTabsContextType => {\n return use(SidebarTabsContext)\n}\n"],"mappings":"AAAA;;;AAEA,OAAOA,KAAA,IAASC,aAAa,EAAEC,GAAG,QAAQ;AAW1C,MAAMC,kBAAA,gBAAqBF,aAAA,CAA6C;AAQxE,OAAO,MAAMG,mBAAA,GAA0DA,CAAC;EACtEC,aAAa;EACbC,QAAQ;EACRC;AAAgB,CACjB;EACC,oBACEC,IAAA,CAACL,kBAAA;IAAmBM,KAAA,EAAO;MAAEJ,aAAA;MAAeE;IAAiB;cAAID;;AAErE;AAEA;;;;AAIA,OAAO,MAAMI,cAAA,GAAiBA,CAAA;EAC5B,OAAOR,GAAA,CAAIC,kBAAA;AACb","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","createContext","use","SidebarTabsContext","SidebarTabsProvider","activeTabSlug","children","reloadTabContent","_jsx","value","useSidebarTabs"],"sources":["../../../src/providers/SidebarTabs/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { createContext, use } from 'react'\n\nimport type { RenderTabServerFnArgs } from '../../elements/Nav/SidebarTabs/renderTabServerFn.js'\n\nexport type SidebarTabsContextType = {\n activeTabSlug: null | string\n /**\n * Reload the content for a specific tab, bypassing the cache.\n * Useful when the tab's data dependencies change.\n */\n reloadTabContent: (tabSlug: string, serverArgs?: Partial<RenderTabServerFnArgs>) => void\n}\n\nconst SidebarTabsContext = createContext<null | SidebarTabsContextType>(null)\n\nexport type SidebarTabsProviderProps = {\n activeTabSlug: null | string\n children: React.ReactNode\n reloadTabContent: (tabSlug: string, serverArgs?: Partial<RenderTabServerFnArgs>) => void\n}\n\nexport const SidebarTabsProvider: React.FC<SidebarTabsProviderProps> = ({\n activeTabSlug,\n children,\n reloadTabContent,\n}) => {\n return (\n <SidebarTabsContext value={{ activeTabSlug, reloadTabContent }}>{children}</SidebarTabsContext>\n )\n}\n\n/**\n * Hook to access sidebar tab controls.\n * Returns null if used outside of a SidebarTabsProvider (e.g., when there's only one tab).\n */\nexport const useSidebarTabs = (): null | SidebarTabsContextType => {\n return use(SidebarTabsContext)\n}\n"],"mappings":"AAAA;;;AAEA,OAAOA,KAAA,IAASC,aAAa,EAAEC,GAAG,QAAQ;AAa1C,MAAMC,kBAAA,gBAAqBF,aAAA,CAA6C;AAQxE,OAAO,MAAMG,mBAAA,GAA0DA,CAAC;EACtEC,aAAa;EACbC,QAAQ;EACRC;AAAgB,CACjB;EACC,oBACEC,IAAA,CAACL,kBAAA;IAAmBM,KAAA,EAAO;MAAEJ,aAAA;MAAeE;IAAiB;cAAID;;AAErE;AAEA;;;;AAIA,OAAO,MAAMI,cAAA,GAAiBA,CAAA;EAC5B,OAAOR,GAAA,CAAIC,kBAAA;AACb","ignoreList":[]}