@payloadcms/plugin-search 3.0.0-canary.fb81f02 → 3.0.0-canary.ff8c8fd

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.
@@ -62,11 +62,11 @@ export const syncWithSearch = async (args)=>{
62
62
  depth: 0,
63
63
  req,
64
64
  where: {
65
- 'doc.value': {
66
- equals: id
67
- },
68
65
  'doc.relationTo': {
69
66
  equals: collection
67
+ },
68
+ 'doc.value': {
69
+ equals: id
70
70
  }
71
71
  }
72
72
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Search/hooks/syncWithSearch.ts"],"sourcesContent":["import type { DocToSync, SyncWithSearch } from '../../types.js'\n\nexport const syncWithSearch: SyncWithSearch = async (args) => {\n const {\n collection,\n doc,\n operation,\n pluginConfig,\n req: { payload },\n req,\n } = args\n\n const { id, _status: status, title } = doc || {}\n\n const { beforeSync, defaultPriorities, deleteDrafts, syncDrafts } = pluginConfig\n\n let dataToSave: DocToSync = {\n doc: {\n relationTo: collection,\n value: id,\n },\n title,\n }\n\n if (typeof beforeSync === 'function') {\n let docToSyncWith = doc\n if (payload.config?.localization) {\n docToSyncWith = await payload.findByID({\n id,\n collection,\n locale: 'all',\n req,\n })\n }\n dataToSave = await beforeSync({\n originalDoc: docToSyncWith,\n payload,\n req,\n searchDoc: dataToSave,\n })\n }\n\n let defaultPriority = 0\n if (defaultPriorities) {\n const { [collection]: priority } = defaultPriorities\n\n if (typeof priority === 'function') {\n try {\n defaultPriority = await priority(doc)\n } catch (err: unknown) {\n payload.logger.error(err)\n payload.logger.error(\n `Error gathering default priority for search documents related to ${collection}`,\n )\n }\n } else {\n defaultPriority = priority\n }\n }\n\n const doSync = syncDrafts || (!syncDrafts && status !== 'draft')\n\n try {\n if (operation === 'create') {\n if (doSync) {\n await payload.create({\n collection: 'search',\n data: {\n ...dataToSave,\n priority: defaultPriority,\n },\n req,\n })\n }\n }\n\n if (operation === 'update') {\n try {\n // find the correct doc to sync with\n const searchDocQuery = await payload.find({\n collection: 'search',\n depth: 0,\n req,\n where: {\n 'doc.value': {\n equals: id,\n },\n 'doc.relationTo': {\n equals: collection,\n },\n },\n })\n\n const docs: Array<{\n id: number | string\n priority?: number\n }> = searchDocQuery?.docs || []\n\n const [foundDoc, ...duplicativeDocs] = docs\n\n // delete all duplicative search docs (docs that reference the same page)\n // to ensure the same, out-of-date result does not appear twice (where only syncing the first found doc)\n if (duplicativeDocs.length > 0) {\n try {\n const duplicativeDocIDs = duplicativeDocs.map(({ id }) => id)\n await payload.delete({\n collection: 'search',\n req,\n where: { id: { in: duplicativeDocIDs } },\n })\n } catch (err: unknown) {\n payload.logger.error(`Error deleting duplicative search documents.`)\n }\n }\n\n if (foundDoc) {\n const { id: searchDocID } = foundDoc\n\n if (doSync) {\n // update the doc normally\n try {\n await payload.update({\n id: searchDocID,\n collection: 'search',\n data: {\n ...dataToSave,\n priority: foundDoc.priority || defaultPriority,\n },\n req,\n })\n } catch (err: unknown) {\n payload.logger.error(`Error updating search document.`)\n }\n }\n if (deleteDrafts && status === 'draft') {\n // do not include draft docs in search results, so delete the record\n try {\n await payload.delete({\n id: searchDocID,\n collection: 'search',\n req,\n })\n } catch (err: unknown) {\n payload.logger.error(`Error deleting search document: ${err}`)\n }\n }\n } else if (doSync) {\n try {\n await payload.create({\n collection: 'search',\n data: {\n ...dataToSave,\n priority: defaultPriority,\n },\n req,\n })\n } catch (err: unknown) {\n payload.logger.error(`Error creating search document: ${err}`)\n }\n }\n } catch (err: unknown) {\n payload.logger.error(`Error finding search document: ${err}`)\n }\n }\n } catch (err: unknown) {\n payload.logger.error(\n `Error syncing search document related to ${collection} with id: '${id}': ${err}`,\n )\n }\n\n return doc\n}\n"],"names":["syncWithSearch","args","collection","doc","operation","pluginConfig","req","payload","id","_status","status","title","beforeSync","defaultPriorities","deleteDrafts","syncDrafts","dataToSave","relationTo","value","docToSyncWith","config","localization","findByID","locale","originalDoc","searchDoc","defaultPriority","priority","err","logger","error","doSync","create","data","searchDocQuery","find","depth","where","equals","docs","foundDoc","duplicativeDocs","length","duplicativeDocIDs","map","delete","in","searchDocID","update"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/Search/hooks/syncWithSearch.ts"],"sourcesContent":["import type { DocToSync, SyncWithSearch } from '../../types.js'\n\nexport const syncWithSearch: SyncWithSearch = async (args) => {\n const {\n collection,\n doc,\n operation,\n pluginConfig,\n req: { payload },\n req,\n } = args\n\n const { id, _status: status, title } = doc || {}\n\n const { beforeSync, defaultPriorities, deleteDrafts, syncDrafts } = pluginConfig\n\n let dataToSave: DocToSync = {\n doc: {\n relationTo: collection,\n value: id,\n },\n title,\n }\n\n if (typeof beforeSync === 'function') {\n let docToSyncWith = doc\n if (payload.config?.localization) {\n docToSyncWith = await payload.findByID({\n id,\n collection,\n locale: 'all',\n req,\n })\n }\n dataToSave = await beforeSync({\n originalDoc: docToSyncWith,\n payload,\n req,\n searchDoc: dataToSave,\n })\n }\n\n let defaultPriority = 0\n if (defaultPriorities) {\n const { [collection]: priority } = defaultPriorities\n\n if (typeof priority === 'function') {\n try {\n defaultPriority = await priority(doc)\n } catch (err: unknown) {\n payload.logger.error(err)\n payload.logger.error(\n `Error gathering default priority for search documents related to ${collection}`,\n )\n }\n } else {\n defaultPriority = priority\n }\n }\n\n const doSync = syncDrafts || (!syncDrafts && status !== 'draft')\n\n try {\n if (operation === 'create') {\n if (doSync) {\n await payload.create({\n collection: 'search',\n data: {\n ...dataToSave,\n priority: defaultPriority,\n },\n req,\n })\n }\n }\n\n if (operation === 'update') {\n try {\n // find the correct doc to sync with\n const searchDocQuery = await payload.find({\n collection: 'search',\n depth: 0,\n req,\n where: {\n 'doc.relationTo': {\n equals: collection,\n },\n 'doc.value': {\n equals: id,\n },\n },\n })\n\n const docs: Array<{\n id: number | string\n priority?: number\n }> = searchDocQuery?.docs || []\n\n const [foundDoc, ...duplicativeDocs] = docs\n\n // delete all duplicative search docs (docs that reference the same page)\n // to ensure the same, out-of-date result does not appear twice (where only syncing the first found doc)\n if (duplicativeDocs.length > 0) {\n try {\n const duplicativeDocIDs = duplicativeDocs.map(({ id }) => id)\n await payload.delete({\n collection: 'search',\n req,\n where: { id: { in: duplicativeDocIDs } },\n })\n } catch (err: unknown) {\n payload.logger.error(`Error deleting duplicative search documents.`)\n }\n }\n\n if (foundDoc) {\n const { id: searchDocID } = foundDoc\n\n if (doSync) {\n // update the doc normally\n try {\n await payload.update({\n id: searchDocID,\n collection: 'search',\n data: {\n ...dataToSave,\n priority: foundDoc.priority || defaultPriority,\n },\n req,\n })\n } catch (err: unknown) {\n payload.logger.error(`Error updating search document.`)\n }\n }\n if (deleteDrafts && status === 'draft') {\n // do not include draft docs in search results, so delete the record\n try {\n await payload.delete({\n id: searchDocID,\n collection: 'search',\n req,\n })\n } catch (err: unknown) {\n payload.logger.error(`Error deleting search document: ${err}`)\n }\n }\n } else if (doSync) {\n try {\n await payload.create({\n collection: 'search',\n data: {\n ...dataToSave,\n priority: defaultPriority,\n },\n req,\n })\n } catch (err: unknown) {\n payload.logger.error(`Error creating search document: ${err}`)\n }\n }\n } catch (err: unknown) {\n payload.logger.error(`Error finding search document: ${err}`)\n }\n }\n } catch (err: unknown) {\n payload.logger.error(\n `Error syncing search document related to ${collection} with id: '${id}': ${err}`,\n )\n }\n\n return doc\n}\n"],"names":["syncWithSearch","args","collection","doc","operation","pluginConfig","req","payload","id","_status","status","title","beforeSync","defaultPriorities","deleteDrafts","syncDrafts","dataToSave","relationTo","value","docToSyncWith","config","localization","findByID","locale","originalDoc","searchDoc","defaultPriority","priority","err","logger","error","doSync","create","data","searchDocQuery","find","depth","where","equals","docs","foundDoc","duplicativeDocs","length","duplicativeDocIDs","map","delete","in","searchDocID","update"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Search/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAS,MAAM,SAAS,CAAA;AAEtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAKrD,eAAO,MAAM,wBAAwB,iBAAkB,kBAAkB,KAAG,gBAuE3E,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Search/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAS,MAAM,SAAS,CAAA;AAEtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAGrD,eAAO,MAAM,wBAAwB,iBAAkB,kBAAkB,KAAG,gBAsE3E,CAAA"}
@@ -1,4 +1,3 @@
1
- import { LinkToDoc } from './ui/index.js';
2
1
  // all settings can be overridden by the config
3
2
  export const generateSearchCollection = (pluginConfig)=>{
4
3
  const defaultFields = [
@@ -33,7 +32,7 @@ export const generateSearchCollection = (pluginConfig)=>{
33
32
  type: 'ui',
34
33
  admin: {
35
34
  components: {
36
- Field: LinkToDoc
35
+ Field: '@payloadcms/plugin-search/client#LinkToDoc'
37
36
  },
38
37
  position: 'sidebar'
39
38
  }
@@ -59,12 +58,11 @@ export const generateSearchCollection = (pluginConfig)=>{
59
58
  fields: pluginConfig?.searchOverrides?.fields && typeof pluginConfig?.searchOverrides?.fields === 'function' ? pluginConfig?.searchOverrides.fields({
60
59
  defaultFields
61
60
  }) : defaultFields,
62
- hooks: {
63
- ...pluginConfig?.searchOverrides?.hooks || {}
64
- },
65
61
  labels: {
66
- plural: 'Search Results',
67
- singular: 'Search Result'
62
+ ...pluginConfig?.searchOverrides?.labels || {
63
+ plural: 'Search Results',
64
+ singular: 'Search Result'
65
+ }
68
66
  }
69
67
  };
70
68
  return newConfig;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Search/index.ts"],"sourcesContent":["import type { CollectionConfig, Field } from 'payload'\n\nimport type { SearchPluginConfig } from '../types.js'\n\nimport { LinkToDoc } from './ui/index.js'\n\n// all settings can be overridden by the config\nexport const generateSearchCollection = (pluginConfig: SearchPluginConfig): CollectionConfig => {\n const defaultFields: Field[] = [\n {\n name: 'title',\n type: 'text',\n admin: {\n readOnly: true,\n },\n },\n {\n name: 'priority',\n type: 'number',\n admin: {\n position: 'sidebar',\n },\n },\n {\n name: 'doc',\n type: 'relationship',\n admin: {\n position: 'sidebar',\n readOnly: true,\n },\n index: true,\n maxDepth: 0,\n relationTo: pluginConfig?.collections || [],\n required: true,\n },\n {\n name: 'docUrl',\n type: 'ui',\n admin: {\n components: {\n Field: LinkToDoc,\n },\n position: 'sidebar',\n },\n },\n ]\n\n const newConfig: CollectionConfig = {\n ...(pluginConfig?.searchOverrides || {}),\n slug: pluginConfig?.searchOverrides?.slug || 'search',\n access: {\n create: (): boolean => false,\n read: (): boolean => true,\n ...(pluginConfig?.searchOverrides?.access || {}),\n },\n admin: {\n defaultColumns: ['title'],\n description:\n 'This is a collection of automatically created search results. These results are used by the global site search and will be updated automatically as documents in the CMS are created or updated.',\n enableRichTextRelationship: false,\n useAsTitle: 'title',\n ...(pluginConfig?.searchOverrides?.admin || {}),\n },\n fields:\n pluginConfig?.searchOverrides?.fields &&\n typeof pluginConfig?.searchOverrides?.fields === 'function'\n ? pluginConfig?.searchOverrides.fields({ defaultFields })\n : defaultFields,\n hooks: {\n ...(pluginConfig?.searchOverrides?.hooks || {}),\n },\n labels: {\n plural: 'Search Results',\n singular: 'Search Result',\n },\n }\n\n return newConfig\n}\n"],"names":["LinkToDoc","generateSearchCollection","pluginConfig","defaultFields","name","type","admin","readOnly","position","index","maxDepth","relationTo","collections","required","components","Field","newConfig","searchOverrides","slug","access","create","read","defaultColumns","description","enableRichTextRelationship","useAsTitle","fields","hooks","labels","plural","singular"],"mappings":"AAIA,SAASA,SAAS,QAAQ,gBAAe;AAEzC,+CAA+C;AAC/C,OAAO,MAAMC,2BAA2B,CAACC;IACvC,MAAMC,gBAAyB;QAC7B;YACEC,MAAM;YACNC,MAAM;YACNC,OAAO;gBACLC,UAAU;YACZ;QACF;QACA;YACEH,MAAM;YACNC,MAAM;YACNC,OAAO;gBACLE,UAAU;YACZ;QACF;QACA;YACEJ,MAAM;YACNC,MAAM;YACNC,OAAO;gBACLE,UAAU;gBACVD,UAAU;YACZ;YACAE,OAAO;YACPC,UAAU;YACVC,YAAYT,cAAcU,eAAe,EAAE;YAC3CC,UAAU;QACZ;QACA;YACET,MAAM;YACNC,MAAM;YACNC,OAAO;gBACLQ,YAAY;oBACVC,OAAOf;gBACT;gBACAQ,UAAU;YACZ;QACF;KACD;IAED,MAAMQ,YAA8B;QAClC,GAAId,cAAce,mBAAmB,CAAC,CAAC;QACvCC,MAAMhB,cAAce,iBAAiBC,QAAQ;QAC7CC,QAAQ;YACNC,QAAQ,IAAe;YACvBC,MAAM,IAAe;YACrB,GAAInB,cAAce,iBAAiBE,UAAU,CAAC,CAAC;QACjD;QACAb,OAAO;YACLgB,gBAAgB;gBAAC;aAAQ;YACzBC,aACE;YACFC,4BAA4B;YAC5BC,YAAY;YACZ,GAAIvB,cAAce,iBAAiBX,SAAS,CAAC,CAAC;QAChD;QACAoB,QACExB,cAAce,iBAAiBS,UAC/B,OAAOxB,cAAce,iBAAiBS,WAAW,aAC7CxB,cAAce,gBAAgBS,OAAO;YAAEvB;QAAc,KACrDA;QACNwB,OAAO;YACL,GAAIzB,cAAce,iBAAiBU,SAAS,CAAC,CAAC;QAChD;QACAC,QAAQ;YACNC,QAAQ;YACRC,UAAU;QACZ;IACF;IAEA,OAAOd;AACT,EAAC"}
1
+ {"version":3,"sources":["../../src/Search/index.ts"],"sourcesContent":["import type { CollectionConfig, Field } from 'payload'\n\nimport type { SearchPluginConfig } from '../types.js'\n\n// all settings can be overridden by the config\nexport const generateSearchCollection = (pluginConfig: SearchPluginConfig): CollectionConfig => {\n const defaultFields: Field[] = [\n {\n name: 'title',\n type: 'text',\n admin: {\n readOnly: true,\n },\n },\n {\n name: 'priority',\n type: 'number',\n admin: {\n position: 'sidebar',\n },\n },\n {\n name: 'doc',\n type: 'relationship',\n admin: {\n position: 'sidebar',\n readOnly: true,\n },\n index: true,\n maxDepth: 0,\n relationTo: pluginConfig?.collections || [],\n required: true,\n },\n {\n name: 'docUrl',\n type: 'ui',\n admin: {\n components: {\n Field: '@payloadcms/plugin-search/client#LinkToDoc',\n },\n position: 'sidebar',\n },\n },\n ]\n\n const newConfig: CollectionConfig = {\n ...(pluginConfig?.searchOverrides || {}),\n slug: pluginConfig?.searchOverrides?.slug || 'search',\n access: {\n create: (): boolean => false,\n read: (): boolean => true,\n ...(pluginConfig?.searchOverrides?.access || {}),\n },\n admin: {\n defaultColumns: ['title'],\n description:\n 'This is a collection of automatically created search results. These results are used by the global site search and will be updated automatically as documents in the CMS are created or updated.',\n enableRichTextRelationship: false,\n useAsTitle: 'title',\n ...(pluginConfig?.searchOverrides?.admin || {}),\n },\n fields:\n pluginConfig?.searchOverrides?.fields &&\n typeof pluginConfig?.searchOverrides?.fields === 'function'\n ? pluginConfig?.searchOverrides.fields({ defaultFields })\n : defaultFields,\n labels: {\n ...(pluginConfig?.searchOverrides?.labels || {\n plural: 'Search Results',\n singular: 'Search Result',\n }),\n },\n }\n\n return newConfig\n}\n"],"names":["generateSearchCollection","pluginConfig","defaultFields","name","type","admin","readOnly","position","index","maxDepth","relationTo","collections","required","components","Field","newConfig","searchOverrides","slug","access","create","read","defaultColumns","description","enableRichTextRelationship","useAsTitle","fields","labels","plural","singular"],"mappings":"AAIA,+CAA+C;AAC/C,OAAO,MAAMA,2BAA2B,CAACC;IACvC,MAAMC,gBAAyB;QAC7B;YACEC,MAAM;YACNC,MAAM;YACNC,OAAO;gBACLC,UAAU;YACZ;QACF;QACA;YACEH,MAAM;YACNC,MAAM;YACNC,OAAO;gBACLE,UAAU;YACZ;QACF;QACA;YACEJ,MAAM;YACNC,MAAM;YACNC,OAAO;gBACLE,UAAU;gBACVD,UAAU;YACZ;YACAE,OAAO;YACPC,UAAU;YACVC,YAAYT,cAAcU,eAAe,EAAE;YAC3CC,UAAU;QACZ;QACA;YACET,MAAM;YACNC,MAAM;YACNC,OAAO;gBACLQ,YAAY;oBACVC,OAAO;gBACT;gBACAP,UAAU;YACZ;QACF;KACD;IAED,MAAMQ,YAA8B;QAClC,GAAId,cAAce,mBAAmB,CAAC,CAAC;QACvCC,MAAMhB,cAAce,iBAAiBC,QAAQ;QAC7CC,QAAQ;YACNC,QAAQ,IAAe;YACvBC,MAAM,IAAe;YACrB,GAAInB,cAAce,iBAAiBE,UAAU,CAAC,CAAC;QACjD;QACAb,OAAO;YACLgB,gBAAgB;gBAAC;aAAQ;YACzBC,aACE;YACFC,4BAA4B;YAC5BC,YAAY;YACZ,GAAIvB,cAAce,iBAAiBX,SAAS,CAAC,CAAC;QAChD;QACAoB,QACExB,cAAce,iBAAiBS,UAC/B,OAAOxB,cAAce,iBAAiBS,WAAW,aAC7CxB,cAAce,gBAAgBS,OAAO;YAAEvB;QAAc,KACrDA;QACNwB,QAAQ;YACN,GAAIzB,cAAce,iBAAiBU,UAAU;gBAC3CC,QAAQ;gBACRC,UAAU;YACZ,CAAC;QACH;IACF;IAEA,OAAOb;AACT,EAAC"}
@@ -7,7 +7,7 @@ export const LinkToDocClient = ()=>{
7
7
  const form = useWatchForm();
8
8
  const fields = form.fields;
9
9
  const { doc: { value: { relationTo, value: docId } } } = fields;
10
- const config = useConfig();
10
+ const { config } = useConfig();
11
11
  const { routes: { admin: adminRoute }, serverURL } = config;
12
12
  const href = `${serverURL}${formatAdminURL({
13
13
  adminRoute,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Search/ui/index.client.tsx"],"sourcesContent":["'use client'\n\nimport type { FormState } from 'payload'\n\nimport { useConfig, useWatchForm } from '@payloadcms/ui'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\nimport React from 'react'\n// TODO: fix this import to work in dev mode within the monorepo in a way that is backwards compatible with 1.x\n// import CopyToClipboard from 'payload/dist/admin/components/elements/CopyToClipboard'\n\ntype FieldsWithDoc = {\n doc: {\n value: {\n relationTo: string\n value: string\n }\n }\n} & FormState\n\nexport const LinkToDocClient: React.FC = () => {\n const form = useWatchForm()\n const fields = form.fields as FieldsWithDoc\n\n const {\n doc: {\n value: { relationTo, value: docId },\n },\n } = fields\n\n const config = useConfig()\n\n const {\n routes: {\n admin: adminRoute, // already includes leading slash\n },\n serverURL,\n } = config\n\n const href = `${serverURL}${formatAdminURL({\n adminRoute,\n path: '/collections/${relationTo}/${docId}',\n })}`\n\n return (\n <div>\n <div>\n <span\n className=\"label\"\n style={{\n color: '#9A9A9A',\n }}\n >\n Doc URL\n </span>\n {/* <CopyToClipboard value={href} /> */}\n </div>\n <div\n style={{\n fontWeight: '600',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n >\n <a href={href}>{href}</a>\n </div>\n </div>\n )\n}\n"],"names":["useConfig","useWatchForm","formatAdminURL","React","LinkToDocClient","form","fields","doc","value","relationTo","docId","config","routes","admin","adminRoute","serverURL","href","path","div","span","className","style","color","fontWeight","overflow","textOverflow","a"],"mappings":"AAAA;;AAIA,SAASA,SAAS,EAAEC,YAAY,QAAQ,iBAAgB;AACxD,SAASC,cAAc,QAAQ,wBAAuB;AACtD,OAAOC,WAAW,QAAO;AAazB,OAAO,MAAMC,kBAA4B;IACvC,MAAMC,OAAOJ;IACb,MAAMK,SAASD,KAAKC,MAAM;IAE1B,MAAM,EACJC,KAAK,EACHC,OAAO,EAAEC,UAAU,EAAED,OAAOE,KAAK,EAAE,EACpC,EACF,GAAGJ;IAEJ,MAAMK,SAASX;IAEf,MAAM,EACJY,QAAQ,EACNC,OAAOC,UAAU,EAClB,EACDC,SAAS,EACV,GAAGJ;IAEJ,MAAMK,OAAO,CAAC,EAAED,UAAU,EAAEb,eAAe;QACzCY;QACAG,MAAM;IACR,GAAG,CAAC;IAEJ,qBACE,MAACC;;0BACC,KAACA;0BACC,cAAA,KAACC;oBACCC,WAAU;oBACVC,OAAO;wBACLC,OAAO;oBACT;8BACD;;;0BAKH,KAACJ;gBACCG,OAAO;oBACLE,YAAY;oBACZC,UAAU;oBACVC,cAAc;gBAChB;0BAEA,cAAA,KAACC;oBAAEV,MAAMA;8BAAOA;;;;;AAIxB,EAAC"}
1
+ {"version":3,"sources":["../../../src/Search/ui/index.client.tsx"],"sourcesContent":["'use client'\n\nimport type { FormState } from 'payload'\n\nimport { useConfig, useWatchForm } from '@payloadcms/ui'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\nimport React from 'react'\n// TODO: fix this import to work in dev mode within the monorepo in a way that is backwards compatible with 1.x\n// import CopyToClipboard from 'payload/dist/admin/components/elements/CopyToClipboard'\n\ntype FieldsWithDoc = {\n doc: {\n value: {\n relationTo: string\n value: string\n }\n }\n} & FormState\n\nexport const LinkToDocClient: React.FC = () => {\n const form = useWatchForm()\n const fields = form.fields as FieldsWithDoc\n\n const {\n doc: {\n value: { relationTo, value: docId },\n },\n } = fields\n\n const { config } = useConfig()\n\n const {\n routes: {\n admin: adminRoute, // already includes leading slash\n },\n serverURL,\n } = config\n\n const href = `${serverURL}${formatAdminURL({\n adminRoute,\n path: '/collections/${relationTo}/${docId}',\n })}`\n\n return (\n <div>\n <div>\n <span\n className=\"label\"\n style={{\n color: '#9A9A9A',\n }}\n >\n Doc URL\n </span>\n {/* <CopyToClipboard value={href} /> */}\n </div>\n <div\n style={{\n fontWeight: '600',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n >\n <a href={href}>{href}</a>\n </div>\n </div>\n )\n}\n"],"names":["useConfig","useWatchForm","formatAdminURL","React","LinkToDocClient","form","fields","doc","value","relationTo","docId","config","routes","admin","adminRoute","serverURL","href","path","div","span","className","style","color","fontWeight","overflow","textOverflow","a"],"mappings":"AAAA;;AAIA,SAASA,SAAS,EAAEC,YAAY,QAAQ,iBAAgB;AACxD,SAASC,cAAc,QAAQ,wBAAuB;AACtD,OAAOC,WAAW,QAAO;AAazB,OAAO,MAAMC,kBAA4B;IACvC,MAAMC,OAAOJ;IACb,MAAMK,SAASD,KAAKC,MAAM;IAE1B,MAAM,EACJC,KAAK,EACHC,OAAO,EAAEC,UAAU,EAAED,OAAOE,KAAK,EAAE,EACpC,EACF,GAAGJ;IAEJ,MAAM,EAAEK,MAAM,EAAE,GAAGX;IAEnB,MAAM,EACJY,QAAQ,EACNC,OAAOC,UAAU,EAClB,EACDC,SAAS,EACV,GAAGJ;IAEJ,MAAMK,OAAO,CAAC,EAAED,UAAU,EAAEb,eAAe;QACzCY;QACAG,MAAM;IACR,GAAG,CAAC;IAEJ,qBACE,MAACC;;0BACC,KAACA;0BACC,cAAA,KAACC;oBACCC,WAAU;oBACVC,OAAO;wBACLC,OAAO;oBACT;8BACD;;;0BAKH,KAACJ;gBACCG,OAAO;oBACLE,YAAY;oBACZC,UAAU;oBACVC,cAAc;gBAChB;0BAEA,cAAA,KAACC;oBAAEV,MAAMA;8BAAOA;;;;;AAIxB,EAAC"}
@@ -0,0 +1,2 @@
1
+ export { LinkToDoc } from '../Search/ui/index.js';
2
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/exports/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { LinkToDoc } from '../Search/ui/index.js';
2
+
3
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/exports/client.ts"],"sourcesContent":["export { LinkToDoc } from '../Search/ui/index.js'\n"],"names":["LinkToDoc"],"mappings":"AAAA,SAASA,SAAS,QAAQ,wBAAuB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/plugin-search",
3
- "version": "3.0.0-canary.fb81f02",
3
+ "version": "3.0.0-canary.ff8c8fd",
4
4
  "description": "Search plugin for Payload",
5
5
  "keywords": [
6
6
  "payload",
@@ -25,10 +25,15 @@
25
25
  "types": "./dist/index.d.ts",
26
26
  "default": "./dist/index.js"
27
27
  },
28
- "./*": {
29
- "import": "./dist/exports/*.js",
30
- "types": "./dist/exports/*.d.ts",
31
- "default": "./dist/exports/*.js"
28
+ "./types": {
29
+ "import": "./dist/exports/types.js",
30
+ "types": "./dist/exports/types.d.ts",
31
+ "default": "./dist/exports/types.js"
32
+ },
33
+ "./client": {
34
+ "import": "./dist/exports/client.js",
35
+ "types": "./dist/exports/client.d.ts",
36
+ "default": "./dist/exports/client.js"
32
37
  }
33
38
  },
34
39
  "main": "./dist/index.js",
@@ -37,19 +42,19 @@
37
42
  "dist"
38
43
  ],
39
44
  "dependencies": {
40
- "@payloadcms/ui": "3.0.0-canary.fb81f02"
45
+ "@payloadcms/ui": "3.0.0-canary.ff8c8fd"
41
46
  },
42
47
  "devDependencies": {
43
48
  "@types/express": "^4.17.9",
44
49
  "@types/react": "npm:types-react@19.0.0-rc.0",
45
50
  "@types/react-dom": "npm:types-react-dom@19.0.0-rc.0",
46
- "@payloadcms/eslint-config": "3.0.0-beta.59",
47
- "payload": "3.0.0-canary.fb81f02"
51
+ "payload": "3.0.0-canary.ff8c8fd",
52
+ "@payloadcms/eslint-config": "3.0.0-beta.59"
48
53
  },
49
54
  "peerDependencies": {
50
55
  "react": "^19.0.0 || ^19.0.0-rc-06d0b89e-20240801",
51
56
  "react-dom": "^19.0.0 || ^19.0.0-rc-06d0b89e-20240801",
52
- "payload": "3.0.0-canary.fb81f02"
57
+ "payload": "3.0.0-canary.ff8c8fd"
53
58
  },
54
59
  "publishConfig": {
55
60
  "registry": "https://registry.npmjs.org/"