@payloadcms/richtext-slate 3.0.0-beta.53 → 3.0.0-beta.55

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 (145) hide show
  1. package/dist/cell/index.js.map +1 -1
  2. package/dist/data/defaultValue.js.map +1 -1
  3. package/dist/data/populate.d.ts +1 -1
  4. package/dist/data/populate.d.ts.map +1 -1
  5. package/dist/data/populate.js.map +1 -1
  6. package/dist/data/recurseNestedFields.js.map +1 -1
  7. package/dist/data/richTextRelationshipPromise.js.map +1 -1
  8. package/dist/data/validation.js.map +1 -1
  9. package/dist/field/RichText.d.ts +2 -2
  10. package/dist/field/RichText.d.ts.map +1 -1
  11. package/dist/field/RichText.js.map +1 -1
  12. package/dist/field/createFeatureMap.d.ts.map +1 -1
  13. package/dist/field/createFeatureMap.js.map +1 -1
  14. package/dist/field/elements/Button.js.map +1 -1
  15. package/dist/field/elements/EnabledRelationshipsCondition.js.map +1 -1
  16. package/dist/field/elements/ListButton.js.map +1 -1
  17. package/dist/field/elements/areAllChildrenElements.js.map +1 -1
  18. package/dist/field/elements/blockquote/Blockquote.js.map +1 -1
  19. package/dist/field/elements/blockquote/index.js.map +1 -1
  20. package/dist/field/elements/getCommonBlock.d.ts.map +1 -1
  21. package/dist/field/elements/getCommonBlock.js.map +1 -1
  22. package/dist/field/elements/h1/Heading1.js.map +1 -1
  23. package/dist/field/elements/h1/index.js.map +1 -1
  24. package/dist/field/elements/h2/Heading2.js.map +1 -1
  25. package/dist/field/elements/h2/index.js.map +1 -1
  26. package/dist/field/elements/h3/Heading3.js.map +1 -1
  27. package/dist/field/elements/h3/index.js.map +1 -1
  28. package/dist/field/elements/h4/Heading4.js.map +1 -1
  29. package/dist/field/elements/h4/index.js.map +1 -1
  30. package/dist/field/elements/h5/Heading5.js.map +1 -1
  31. package/dist/field/elements/h5/index.js.map +1 -1
  32. package/dist/field/elements/h6/Heading6.js.map +1 -1
  33. package/dist/field/elements/h6/index.js.map +1 -1
  34. package/dist/field/elements/indent/Button.js.map +1 -1
  35. package/dist/field/elements/indent/Element.js.map +1 -1
  36. package/dist/field/elements/indent/index.js.map +1 -1
  37. package/dist/field/elements/indent/shared.js.map +1 -1
  38. package/dist/field/elements/index.js.map +1 -1
  39. package/dist/field/elements/injectVoid.js.map +1 -1
  40. package/dist/field/elements/isActive.js.map +1 -1
  41. package/dist/field/elements/isBlockElement.d.ts +2 -2
  42. package/dist/field/elements/isBlockElement.d.ts.map +1 -1
  43. package/dist/field/elements/isBlockElement.js.map +1 -1
  44. package/dist/field/elements/isLastSelectedElementEmpty.js.map +1 -1
  45. package/dist/field/elements/isListActive.js.map +1 -1
  46. package/dist/field/elements/isWithinListItem.js.map +1 -1
  47. package/dist/field/elements/li/ListItem.js.map +1 -1
  48. package/dist/field/elements/li/index.js.map +1 -1
  49. package/dist/field/elements/link/Button/index.js.map +1 -1
  50. package/dist/field/elements/link/Element/index.js.map +1 -1
  51. package/dist/field/elements/link/LinkDrawer/baseFields.js.map +1 -1
  52. package/dist/field/elements/link/LinkDrawer/index.js.map +1 -1
  53. package/dist/field/elements/link/LinkDrawer/types.js.map +1 -1
  54. package/dist/field/elements/link/WithLinks.js.map +1 -1
  55. package/dist/field/elements/link/index.js.map +1 -1
  56. package/dist/field/elements/link/shared.js.map +1 -1
  57. package/dist/field/elements/link/types.js.map +1 -1
  58. package/dist/field/elements/link/utilities.js.map +1 -1
  59. package/dist/field/elements/listTypes.js.map +1 -1
  60. package/dist/field/elements/ol/OrderedList.js.map +1 -1
  61. package/dist/field/elements/ol/index.js.map +1 -1
  62. package/dist/field/elements/relationship/Button/index.d.ts.map +1 -1
  63. package/dist/field/elements/relationship/Button/index.js.map +1 -1
  64. package/dist/field/elements/relationship/Element/index.d.ts.map +1 -1
  65. package/dist/field/elements/relationship/Element/index.js.map +1 -1
  66. package/dist/field/elements/relationship/index.js.map +1 -1
  67. package/dist/field/elements/relationship/plugin.js.map +1 -1
  68. package/dist/field/elements/relationship/shared.js.map +1 -1
  69. package/dist/field/elements/relationship/types.js.map +1 -1
  70. package/dist/field/elements/textAlign/index.js.map +1 -1
  71. package/dist/field/elements/toggle.js.map +1 -1
  72. package/dist/field/elements/toggleList.js.map +1 -1
  73. package/dist/field/elements/types.js.map +1 -1
  74. package/dist/field/elements/ul/UnorderedList.js.map +1 -1
  75. package/dist/field/elements/ul/index.js.map +1 -1
  76. package/dist/field/elements/unwrapList.d.ts.map +1 -1
  77. package/dist/field/elements/unwrapList.js.map +1 -1
  78. package/dist/field/elements/upload/Button/index.d.ts.map +1 -1
  79. package/dist/field/elements/upload/Button/index.js.map +1 -1
  80. package/dist/field/elements/upload/Element/UploadDrawer/index.js.map +1 -1
  81. package/dist/field/elements/upload/Element/index.d.ts.map +1 -1
  82. package/dist/field/elements/upload/Element/index.js.map +1 -1
  83. package/dist/field/elements/upload/index.js.map +1 -1
  84. package/dist/field/elements/upload/plugin.js.map +1 -1
  85. package/dist/field/elements/upload/shared.js.map +1 -1
  86. package/dist/field/elements/upload/types.js.map +1 -1
  87. package/dist/field/hotkeys.js.map +1 -1
  88. package/dist/field/icons/AlignCenter/index.js.map +1 -1
  89. package/dist/field/icons/AlignLeft/index.js.map +1 -1
  90. package/dist/field/icons/AlignRight/index.js.map +1 -1
  91. package/dist/field/icons/Blockquote/index.js.map +1 -1
  92. package/dist/field/icons/Bold/index.js.map +1 -1
  93. package/dist/field/icons/Code/index.js.map +1 -1
  94. package/dist/field/icons/IndentLeft/index.js.map +1 -1
  95. package/dist/field/icons/IndentRight/index.js.map +1 -1
  96. package/dist/field/icons/Italic/index.js.map +1 -1
  97. package/dist/field/icons/Link/index.js.map +1 -1
  98. package/dist/field/icons/OrderedList/index.js.map +1 -1
  99. package/dist/field/icons/Relationship/index.js.map +1 -1
  100. package/dist/field/icons/Strikethrough/index.js.map +1 -1
  101. package/dist/field/icons/Underline/index.js.map +1 -1
  102. package/dist/field/icons/UnorderedList/index.js.map +1 -1
  103. package/dist/field/icons/Upload/index.js.map +1 -1
  104. package/dist/field/icons/headings/H1/index.js.map +1 -1
  105. package/dist/field/icons/headings/H2/index.js.map +1 -1
  106. package/dist/field/icons/headings/H3/index.js.map +1 -1
  107. package/dist/field/icons/headings/H4/index.js.map +1 -1
  108. package/dist/field/icons/headings/H5/index.js.map +1 -1
  109. package/dist/field/icons/headings/H6/index.js.map +1 -1
  110. package/dist/field/index.js.map +1 -1
  111. package/dist/field/leaves/Button.js.map +1 -1
  112. package/dist/field/leaves/bold/Bold/index.js.map +1 -1
  113. package/dist/field/leaves/bold/index.js.map +1 -1
  114. package/dist/field/leaves/code/Code/index.js.map +1 -1
  115. package/dist/field/leaves/code/index.js.map +1 -1
  116. package/dist/field/leaves/index.js.map +1 -1
  117. package/dist/field/leaves/isActive.js.map +1 -1
  118. package/dist/field/leaves/italic/Italic/index.js.map +1 -1
  119. package/dist/field/leaves/italic/index.js.map +1 -1
  120. package/dist/field/leaves/strikethrough/Strikethrough/index.js.map +1 -1
  121. package/dist/field/leaves/strikethrough/index.js.map +1 -1
  122. package/dist/field/leaves/toggle.js.map +1 -1
  123. package/dist/field/leaves/underline/Underline/index.js.map +1 -1
  124. package/dist/field/leaves/underline/index.js.map +1 -1
  125. package/dist/field/mergeCustomFunctions.js.map +1 -1
  126. package/dist/field/plugins/withEnterBreakOut.js.map +1 -1
  127. package/dist/field/plugins/withHTML.js.map +1 -1
  128. package/dist/field/providers/ElementButtonProvider.js.map +1 -1
  129. package/dist/field/providers/ElementProvider.d.ts.map +1 -1
  130. package/dist/field/providers/ElementProvider.js.map +1 -1
  131. package/dist/field/providers/LeafButtonProvider.js.map +1 -1
  132. package/dist/field/providers/LeafProvider.js.map +1 -1
  133. package/dist/field/types.d.ts +0 -1
  134. package/dist/field/types.d.ts.map +1 -1
  135. package/dist/field/types.js.map +1 -1
  136. package/dist/generateComponentMap.d.ts +1 -1
  137. package/dist/generateComponentMap.js.map +1 -1
  138. package/dist/generateSchemaMap.d.ts +1 -1
  139. package/dist/generateSchemaMap.js.map +1 -1
  140. package/dist/index.js.map +1 -1
  141. package/dist/types.d.ts +0 -1
  142. package/dist/types.d.ts.map +1 -1
  143. package/dist/types.js.map +1 -1
  144. package/dist/utilities/useSlatePlugin.js.map +1 -1
  145. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/elements/indent/Button.tsx"],"sourcesContent":["'use client'\n\nimport React, { useCallback } from 'react'\nimport { Editor, Element, Text, Transforms } from 'slate'\nimport { ReactEditor, useSlate } from 'slate-react'\n\nimport type { ElementNode } from '../../../types.js'\n\nimport { IndentLeft } from '../../icons/IndentLeft/index.js'\nimport { IndentRight } from '../../icons/IndentRight/index.js'\nimport { baseClass } from '../Button.js'\nimport { getCommonBlock } from '../getCommonBlock.js'\nimport { isElementActive } from '../isActive.js'\nimport { isBlockElement } from '../isBlockElement.js'\nimport { listTypes } from '../listTypes.js'\nimport { unwrapList } from '../unwrapList.js'\nimport { indentType } from './shared.js'\n\nexport const IndentButton: React.FC = () => {\n const editor = useSlate()\n const handleIndent = useCallback(\n (e, dir) => {\n e.preventDefault()\n\n if (dir === 'left') {\n if (isElementActive(editor, 'li')) {\n const [, listPath] = getCommonBlock(\n editor,\n (n) => Element.isElement(n) && listTypes.includes(n.type),\n )\n\n const matchedParentList = Editor.above(editor, {\n at: listPath,\n match: (n: ElementNode) => !Editor.isEditor(n) && isBlockElement(editor, n),\n })\n\n if (matchedParentList) {\n const [parentListItem, parentListItemPath] = matchedParentList\n\n if (parentListItem.children.length > 1) {\n // Remove nested list\n Transforms.unwrapNodes(editor, {\n at: parentListItemPath,\n match: (node, path) => {\n const matches =\n !Editor.isEditor(node) &&\n Element.isElement(node) &&\n listTypes.includes(node.type) &&\n path.length === parentListItemPath.length + 1\n\n return matches\n },\n })\n\n // Set li type on any children that don't have a type\n Transforms.setNodes(\n editor,\n { type: 'li' },\n {\n at: parentListItemPath,\n match: (node, path) => {\n const matches =\n !Editor.isEditor(node) &&\n Element.isElement(node) &&\n node.type !== 'li' &&\n path.length === parentListItemPath.length + 1\n\n return matches\n },\n },\n )\n\n // Parent list item path has changed at this point\n // so we need to re-fetch the parent node\n const [newParentNode] = Editor.node(editor, parentListItemPath)\n\n // If the parent node is an li,\n // lift all li nodes within\n if (Element.isElement(newParentNode) && newParentNode.type === 'li') {\n // Lift the nested lis\n Transforms.liftNodes(editor, {\n at: parentListItemPath,\n match: (node, path) => {\n const matches =\n !Editor.isEditor(node) &&\n Element.isElement(node) &&\n path.length === parentListItemPath.length + 1 &&\n node.type === 'li'\n\n return matches\n },\n })\n }\n } else {\n Transforms.unwrapNodes(editor, {\n at: parentListItemPath,\n match: (node, path) => {\n return (\n Element.isElement(node) &&\n node.type === 'li' &&\n path.length === parentListItemPath.length\n )\n },\n })\n\n Transforms.unwrapNodes(editor, {\n match: (n) => Element.isElement(n) && listTypes.includes(n.type),\n })\n }\n } else {\n unwrapList(editor, listPath)\n }\n } else {\n Transforms.unwrapNodes(editor, {\n match: (n) => Element.isElement(n) && n.type === indentType,\n mode: 'lowest',\n split: true,\n })\n }\n }\n\n if (dir === 'right') {\n const isCurrentlyOL = isElementActive(editor, 'ol')\n const isCurrentlyUL = isElementActive(editor, 'ul')\n\n if (isCurrentlyOL || isCurrentlyUL) {\n // Get the path of the first selected li -\n // Multiple lis could be selected\n // and the selection may start in the middle of the first li\n const [[, firstSelectedLIPath]] = Array.from(\n Editor.nodes(editor, {\n match: (node) => Element.isElement(node) && node.type === 'li',\n mode: 'lowest',\n }),\n )\n\n // Is the first selected li the first in its list?\n const hasPrecedingLI = firstSelectedLIPath[firstSelectedLIPath.length - 1] > 0\n\n // If the first selected li is NOT the first in its list,\n // we need to inject it into the prior li\n if (hasPrecedingLI) {\n const [, precedingLIPath] = Editor.previous(editor, {\n at: firstSelectedLIPath,\n })\n\n const [precedingLIChildren] = Editor.node(editor, [...precedingLIPath, 0])\n const precedingLIChildrenIsText = Text.isText(precedingLIChildren)\n\n if (precedingLIChildrenIsText) {\n // Wrap the prior li text content so that it can be nested next to a list\n Transforms.wrapNodes(editor, { children: [] }, { at: [...precedingLIPath, 0] })\n }\n\n // Move the selected lis after the prior li contents\n Transforms.moveNodes(editor, {\n match: (node) => Element.isElement(node) && node.type === 'li',\n mode: 'lowest',\n to: [...precedingLIPath, 1],\n })\n\n // Wrap the selected lis in a new list\n Transforms.wrapNodes(\n editor,\n {\n type: isCurrentlyOL ? 'ol' : 'ul',\n children: [],\n },\n {\n match: (node) => Element.isElement(node) && node.type === 'li',\n mode: 'lowest',\n },\n )\n } else {\n // Otherwise, just wrap the node in a list / li\n Transforms.wrapNodes(\n editor,\n {\n type: isCurrentlyOL ? 'ol' : 'ul',\n children: [{ type: 'li', children: [] }],\n },\n {\n match: (node) => Element.isElement(node) && node.type === 'li',\n mode: 'lowest',\n },\n )\n }\n } else {\n Transforms.wrapNodes(editor, { type: indentType, children: [] })\n }\n }\n\n ReactEditor.focus(editor)\n },\n [editor],\n )\n\n const canDeIndent = isElementActive(editor, 'li') || isElementActive(editor, indentType)\n\n return (\n <React.Fragment>\n <button\n className={[baseClass, !canDeIndent && `${baseClass}--disabled`].filter(Boolean).join(' ')}\n onClick={canDeIndent ? (e) => handleIndent(e, 'left') : undefined}\n type=\"button\"\n >\n <IndentLeft />\n </button>\n <button className={baseClass} onClick={(e) => handleIndent(e, 'right')} type=\"button\">\n <IndentRight />\n </button>\n </React.Fragment>\n )\n}\n"],"names":["React","useCallback","Editor","Element","Text","Transforms","ReactEditor","useSlate","IndentLeft","IndentRight","baseClass","getCommonBlock","isElementActive","isBlockElement","listTypes","unwrapList","indentType","IndentButton","editor","handleIndent","e","dir","preventDefault","listPath","n","isElement","includes","type","matchedParentList","above","at","match","isEditor","parentListItem","parentListItemPath","children","length","unwrapNodes","node","path","matches","setNodes","newParentNode","liftNodes","mode","split","isCurrentlyOL","isCurrentlyUL","firstSelectedLIPath","Array","from","nodes","hasPrecedingLI","precedingLIPath","previous","precedingLIChildren","precedingLIChildrenIsText","isText","wrapNodes","moveNodes","to","focus","canDeIndent","Fragment","button","className","filter","Boolean","join","onClick","undefined"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/field/elements/indent/Button.tsx"],"sourcesContent":["'use client'\n\nimport React, { useCallback } from 'react'\nimport { Editor, Element, Text, Transforms } from 'slate'\nimport { ReactEditor, useSlate } from 'slate-react'\n\nimport type { ElementNode } from '../../../types.js'\n\nimport { IndentLeft } from '../../icons/IndentLeft/index.js'\nimport { IndentRight } from '../../icons/IndentRight/index.js'\nimport { baseClass } from '../Button.js'\nimport { getCommonBlock } from '../getCommonBlock.js'\nimport { isElementActive } from '../isActive.js'\nimport { isBlockElement } from '../isBlockElement.js'\nimport { listTypes } from '../listTypes.js'\nimport { unwrapList } from '../unwrapList.js'\nimport { indentType } from './shared.js'\n\nexport const IndentButton: React.FC = () => {\n const editor = useSlate()\n const handleIndent = useCallback(\n (e, dir) => {\n e.preventDefault()\n\n if (dir === 'left') {\n if (isElementActive(editor, 'li')) {\n const [, listPath] = getCommonBlock(\n editor,\n (n) => Element.isElement(n) && listTypes.includes(n.type),\n )\n\n const matchedParentList = Editor.above(editor, {\n at: listPath,\n match: (n: ElementNode) => !Editor.isEditor(n) && isBlockElement(editor, n),\n })\n\n if (matchedParentList) {\n const [parentListItem, parentListItemPath] = matchedParentList\n\n if (parentListItem.children.length > 1) {\n // Remove nested list\n Transforms.unwrapNodes(editor, {\n at: parentListItemPath,\n match: (node, path) => {\n const matches =\n !Editor.isEditor(node) &&\n Element.isElement(node) &&\n listTypes.includes(node.type) &&\n path.length === parentListItemPath.length + 1\n\n return matches\n },\n })\n\n // Set li type on any children that don't have a type\n Transforms.setNodes(\n editor,\n { type: 'li' },\n {\n at: parentListItemPath,\n match: (node, path) => {\n const matches =\n !Editor.isEditor(node) &&\n Element.isElement(node) &&\n node.type !== 'li' &&\n path.length === parentListItemPath.length + 1\n\n return matches\n },\n },\n )\n\n // Parent list item path has changed at this point\n // so we need to re-fetch the parent node\n const [newParentNode] = Editor.node(editor, parentListItemPath)\n\n // If the parent node is an li,\n // lift all li nodes within\n if (Element.isElement(newParentNode) && newParentNode.type === 'li') {\n // Lift the nested lis\n Transforms.liftNodes(editor, {\n at: parentListItemPath,\n match: (node, path) => {\n const matches =\n !Editor.isEditor(node) &&\n Element.isElement(node) &&\n path.length === parentListItemPath.length + 1 &&\n node.type === 'li'\n\n return matches\n },\n })\n }\n } else {\n Transforms.unwrapNodes(editor, {\n at: parentListItemPath,\n match: (node, path) => {\n return (\n Element.isElement(node) &&\n node.type === 'li' &&\n path.length === parentListItemPath.length\n )\n },\n })\n\n Transforms.unwrapNodes(editor, {\n match: (n) => Element.isElement(n) && listTypes.includes(n.type),\n })\n }\n } else {\n unwrapList(editor, listPath)\n }\n } else {\n Transforms.unwrapNodes(editor, {\n match: (n) => Element.isElement(n) && n.type === indentType,\n mode: 'lowest',\n split: true,\n })\n }\n }\n\n if (dir === 'right') {\n const isCurrentlyOL = isElementActive(editor, 'ol')\n const isCurrentlyUL = isElementActive(editor, 'ul')\n\n if (isCurrentlyOL || isCurrentlyUL) {\n // Get the path of the first selected li -\n // Multiple lis could be selected\n // and the selection may start in the middle of the first li\n const [[, firstSelectedLIPath]] = Array.from(\n Editor.nodes(editor, {\n match: (node) => Element.isElement(node) && node.type === 'li',\n mode: 'lowest',\n }),\n )\n\n // Is the first selected li the first in its list?\n const hasPrecedingLI = firstSelectedLIPath[firstSelectedLIPath.length - 1] > 0\n\n // If the first selected li is NOT the first in its list,\n // we need to inject it into the prior li\n if (hasPrecedingLI) {\n const [, precedingLIPath] = Editor.previous(editor, {\n at: firstSelectedLIPath,\n })\n\n const [precedingLIChildren] = Editor.node(editor, [...precedingLIPath, 0])\n const precedingLIChildrenIsText = Text.isText(precedingLIChildren)\n\n if (precedingLIChildrenIsText) {\n // Wrap the prior li text content so that it can be nested next to a list\n Transforms.wrapNodes(editor, { children: [] }, { at: [...precedingLIPath, 0] })\n }\n\n // Move the selected lis after the prior li contents\n Transforms.moveNodes(editor, {\n match: (node) => Element.isElement(node) && node.type === 'li',\n mode: 'lowest',\n to: [...precedingLIPath, 1],\n })\n\n // Wrap the selected lis in a new list\n Transforms.wrapNodes(\n editor,\n {\n type: isCurrentlyOL ? 'ol' : 'ul',\n children: [],\n },\n {\n match: (node) => Element.isElement(node) && node.type === 'li',\n mode: 'lowest',\n },\n )\n } else {\n // Otherwise, just wrap the node in a list / li\n Transforms.wrapNodes(\n editor,\n {\n type: isCurrentlyOL ? 'ol' : 'ul',\n children: [{ type: 'li', children: [] }],\n },\n {\n match: (node) => Element.isElement(node) && node.type === 'li',\n mode: 'lowest',\n },\n )\n }\n } else {\n Transforms.wrapNodes(editor, { type: indentType, children: [] })\n }\n }\n\n ReactEditor.focus(editor)\n },\n [editor],\n )\n\n const canDeIndent = isElementActive(editor, 'li') || isElementActive(editor, indentType)\n\n return (\n <React.Fragment>\n <button\n className={[baseClass, !canDeIndent && `${baseClass}--disabled`].filter(Boolean).join(' ')}\n onClick={canDeIndent ? (e) => handleIndent(e, 'left') : undefined}\n type=\"button\"\n >\n <IndentLeft />\n </button>\n <button className={baseClass} onClick={(e) => handleIndent(e, 'right')} type=\"button\">\n <IndentRight />\n </button>\n </React.Fragment>\n )\n}\n"],"names":["React","useCallback","Editor","Element","Text","Transforms","ReactEditor","useSlate","IndentLeft","IndentRight","baseClass","getCommonBlock","isElementActive","isBlockElement","listTypes","unwrapList","indentType","IndentButton","editor","handleIndent","e","dir","preventDefault","listPath","n","isElement","includes","type","matchedParentList","above","at","match","isEditor","parentListItem","parentListItemPath","children","length","unwrapNodes","node","path","matches","setNodes","newParentNode","liftNodes","mode","split","isCurrentlyOL","isCurrentlyUL","firstSelectedLIPath","Array","from","nodes","hasPrecedingLI","precedingLIPath","previous","precedingLIChildren","precedingLIChildrenIsText","isText","wrapNodes","moveNodes","to","focus","canDeIndent","Fragment","button","className","filter","Boolean","join","onClick","undefined"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/elements/indent/Element.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport { useElement } from '../../providers/ElementProvider.js'\n\nexport const IndentElement: React.FC = () => {\n const { attributes, children } = useElement()\n\n return (\n <div style={{ paddingLeft: 25 }} {...attributes}>\n {children}\n </div>\n )\n}\n"],"names":["React","useElement","IndentElement","attributes","children","div","style","paddingLeft"],"rangeMappings":";;;;;;;;;;;;;","mappings":"AAAA;;AAEA,OAAOA,WAAW,QAAO;AAEzB,SAASC,UAAU,QAAQ,qCAAoC;AAE/D,OAAO,MAAMC,gBAA0B;IACrC,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGH;IAEjC,qBACE,KAACI;QAAIC,OAAO;YAAEC,aAAa;QAAG;QAAI,GAAGJ,UAAU;kBAC5CC;;AAGP,EAAC"}
1
+ {"version":3,"sources":["../../../../src/field/elements/indent/Element.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport { useElement } from '../../providers/ElementProvider.js'\n\nexport const IndentElement: React.FC = () => {\n const { attributes, children } = useElement()\n\n return (\n <div style={{ paddingLeft: 25 }} {...attributes}>\n {children}\n </div>\n )\n}\n"],"names":["React","useElement","IndentElement","attributes","children","div","style","paddingLeft"],"mappings":"AAAA;;AAEA,OAAOA,WAAW,QAAO;AAEzB,SAASC,UAAU,QAAQ,qCAAoC;AAE/D,OAAO,MAAMC,gBAA0B;IACrC,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGH;IAEjC,qBACE,KAACI;QAAIC,OAAO;YAAEC,aAAa;QAAG;QAAI,GAAGJ,UAAU;kBAC5CC;;AAGP,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/elements/indent/index.ts"],"sourcesContent":["import type { RichTextCustomElement } from '../../../types.js'\n\nimport { IndentButton } from './Button.js'\nimport { IndentElement } from './Element.js'\nimport { indentType } from './shared.js'\n\nexport const indent: RichTextCustomElement = {\n name: indentType,\n Button: IndentButton,\n Element: IndentElement,\n}\n"],"names":["IndentButton","IndentElement","indentType","indent","name","Button","Element"],"rangeMappings":";;;;;;;","mappings":"AAEA,SAASA,YAAY,QAAQ,cAAa;AAC1C,SAASC,aAAa,QAAQ,eAAc;AAC5C,SAASC,UAAU,QAAQ,cAAa;AAExC,OAAO,MAAMC,SAAgC;IAC3CC,MAAMF;IACNG,QAAQL;IACRM,SAASL;AACX,EAAC"}
1
+ {"version":3,"sources":["../../../../src/field/elements/indent/index.ts"],"sourcesContent":["import type { RichTextCustomElement } from '../../../types.js'\n\nimport { IndentButton } from './Button.js'\nimport { IndentElement } from './Element.js'\nimport { indentType } from './shared.js'\n\nexport const indent: RichTextCustomElement = {\n name: indentType,\n Button: IndentButton,\n Element: IndentElement,\n}\n"],"names":["IndentButton","IndentElement","indentType","indent","name","Button","Element"],"mappings":"AAEA,SAASA,YAAY,QAAQ,cAAa;AAC1C,SAASC,aAAa,QAAQ,eAAc;AAC5C,SAASC,UAAU,QAAQ,cAAa;AAExC,OAAO,MAAMC,SAAgC;IAC3CC,MAAMF;IACNG,QAAQL;IACRM,SAASL;AACX,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/elements/indent/shared.ts"],"sourcesContent":["export const indentType = 'indent'\n"],"names":["indentType"],"rangeMappings":"","mappings":"AAAA,OAAO,MAAMA,aAAa,SAAQ"}
1
+ {"version":3,"sources":["../../../../src/field/elements/indent/shared.ts"],"sourcesContent":["export const indentType = 'indent'\n"],"names":["indentType"],"mappings":"AAAA,OAAO,MAAMA,aAAa,SAAQ"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/field/elements/index.tsx"],"sourcesContent":["import type { RichTextCustomElement } from '../../types.js'\n\nimport { blockquote } from './blockquote/index.js'\nimport { h1 } from './h1/index.js'\nimport { h2 } from './h2/index.js'\nimport { h3 } from './h3/index.js'\nimport { h4 } from './h4/index.js'\nimport { h5 } from './h5/index.js'\nimport { h6 } from './h6/index.js'\nimport { indent } from './indent/index.js'\nimport { li } from './li/index.js'\nimport { link } from './link/index.js'\nimport { ol } from './ol/index.js'\nimport { relationship } from './relationship/index.js'\nimport { textAlign } from './textAlign/index.js'\nimport { ul } from './ul/index.js'\nimport { upload } from './upload/index.js'\n\nexport const elements: Record<string, RichTextCustomElement> = {\n blockquote,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n indent,\n li,\n link,\n ol,\n relationship,\n textAlign,\n ul,\n upload,\n}\n"],"names":["blockquote","h1","h2","h3","h4","h5","h6","indent","li","link","ol","relationship","textAlign","ul","upload","elements"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,SAASA,UAAU,QAAQ,wBAAuB;AAClD,SAASC,EAAE,QAAQ,gBAAe;AAClC,SAASC,EAAE,QAAQ,gBAAe;AAClC,SAASC,EAAE,QAAQ,gBAAe;AAClC,SAASC,EAAE,QAAQ,gBAAe;AAClC,SAASC,EAAE,QAAQ,gBAAe;AAClC,SAASC,EAAE,QAAQ,gBAAe;AAClC,SAASC,MAAM,QAAQ,oBAAmB;AAC1C,SAASC,EAAE,QAAQ,gBAAe;AAClC,SAASC,IAAI,QAAQ,kBAAiB;AACtC,SAASC,EAAE,QAAQ,gBAAe;AAClC,SAASC,YAAY,QAAQ,0BAAyB;AACtD,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SAASC,EAAE,QAAQ,gBAAe;AAClC,SAASC,MAAM,QAAQ,oBAAmB;AAE1C,OAAO,MAAMC,WAAkD;IAC7Df;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/field/elements/index.tsx"],"sourcesContent":["import type { RichTextCustomElement } from '../../types.js'\n\nimport { blockquote } from './blockquote/index.js'\nimport { h1 } from './h1/index.js'\nimport { h2 } from './h2/index.js'\nimport { h3 } from './h3/index.js'\nimport { h4 } from './h4/index.js'\nimport { h5 } from './h5/index.js'\nimport { h6 } from './h6/index.js'\nimport { indent } from './indent/index.js'\nimport { li } from './li/index.js'\nimport { link } from './link/index.js'\nimport { ol } from './ol/index.js'\nimport { relationship } from './relationship/index.js'\nimport { textAlign } from './textAlign/index.js'\nimport { ul } from './ul/index.js'\nimport { upload } from './upload/index.js'\n\nexport const elements: Record<string, RichTextCustomElement> = {\n blockquote,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n indent,\n li,\n link,\n ol,\n relationship,\n textAlign,\n ul,\n upload,\n}\n"],"names":["blockquote","h1","h2","h3","h4","h5","h6","indent","li","link","ol","relationship","textAlign","ul","upload","elements"],"mappings":"AAEA,SAASA,UAAU,QAAQ,wBAAuB;AAClD,SAASC,EAAE,QAAQ,gBAAe;AAClC,SAASC,EAAE,QAAQ,gBAAe;AAClC,SAASC,EAAE,QAAQ,gBAAe;AAClC,SAASC,EAAE,QAAQ,gBAAe;AAClC,SAASC,EAAE,QAAQ,gBAAe;AAClC,SAASC,EAAE,QAAQ,gBAAe;AAClC,SAASC,MAAM,QAAQ,oBAAmB;AAC1C,SAASC,EAAE,QAAQ,gBAAe;AAClC,SAASC,IAAI,QAAQ,kBAAiB;AACtC,SAASC,EAAE,QAAQ,gBAAe;AAClC,SAASC,YAAY,QAAQ,0BAAyB;AACtD,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SAASC,EAAE,QAAQ,gBAAe;AAClC,SAASC,MAAM,QAAQ,oBAAmB;AAE1C,OAAO,MAAMC,WAAkD;IAC7Df;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/field/elements/injectVoid.ts"],"sourcesContent":["import type { Element } from 'slate'\n\nimport { Editor, Transforms } from 'slate'\n\nimport type { ElementNode } from '../../types.js'\n\nimport { isLastSelectedElementEmpty } from './isLastSelectedElementEmpty.js'\n\nexport const injectVoidElement = (editor: Editor, element: Element): void => {\n const lastSelectedElementIsEmpty = isLastSelectedElementEmpty(editor)\n const previous = Editor.previous<ElementNode>(editor)\n\n if (lastSelectedElementIsEmpty) {\n // If previous node is void\n if (previous?.[0] && Editor.isVoid(editor, previous[0])) {\n // Insert a blank element between void nodes\n // so user can place cursor between void nodes\n Transforms.insertNodes(editor, { children: [{ text: '' }] })\n Transforms.setNodes(editor, element)\n // Otherwise just set the empty node equal to new void\n } else {\n Transforms.setNodes(editor, element)\n }\n } else {\n Transforms.insertNodes(editor, element)\n }\n\n // Add an empty node after the new void\n Transforms.insertNodes(editor, { children: [{ text: '' }] })\n}\n"],"names":["Editor","Transforms","isLastSelectedElementEmpty","injectVoidElement","editor","element","lastSelectedElementIsEmpty","previous","isVoid","insertNodes","children","text","setNodes"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,SAASA,MAAM,EAAEC,UAAU,QAAQ,QAAO;AAI1C,SAASC,0BAA0B,QAAQ,kCAAiC;AAE5E,OAAO,MAAMC,oBAAoB,CAACC,QAAgBC;IAChD,MAAMC,6BAA6BJ,2BAA2BE;IAC9D,MAAMG,WAAWP,OAAOO,QAAQ,CAAcH;IAE9C,IAAIE,4BAA4B;QAC9B,2BAA2B;QAC3B,IAAIC,UAAU,CAAC,EAAE,IAAIP,OAAOQ,MAAM,CAACJ,QAAQG,QAAQ,CAAC,EAAE,GAAG;YACvD,4CAA4C;YAC5C,8CAA8C;YAC9CN,WAAWQ,WAAW,CAACL,QAAQ;gBAAEM,UAAU;oBAAC;wBAAEC,MAAM;oBAAG;iBAAE;YAAC;YAC1DV,WAAWW,QAAQ,CAACR,QAAQC;QAC5B,sDAAsD;QACxD,OAAO;YACLJ,WAAWW,QAAQ,CAACR,QAAQC;QAC9B;IACF,OAAO;QACLJ,WAAWQ,WAAW,CAACL,QAAQC;IACjC;IAEA,uCAAuC;IACvCJ,WAAWQ,WAAW,CAACL,QAAQ;QAAEM,UAAU;YAAC;gBAAEC,MAAM;YAAG;SAAE;IAAC;AAC5D,EAAC"}
1
+ {"version":3,"sources":["../../../src/field/elements/injectVoid.ts"],"sourcesContent":["import type { Element } from 'slate'\n\nimport { Editor, Transforms } from 'slate'\n\nimport type { ElementNode } from '../../types.js'\n\nimport { isLastSelectedElementEmpty } from './isLastSelectedElementEmpty.js'\n\nexport const injectVoidElement = (editor: Editor, element: Element): void => {\n const lastSelectedElementIsEmpty = isLastSelectedElementEmpty(editor)\n const previous = Editor.previous<ElementNode>(editor)\n\n if (lastSelectedElementIsEmpty) {\n // If previous node is void\n if (previous?.[0] && Editor.isVoid(editor, previous[0])) {\n // Insert a blank element between void nodes\n // so user can place cursor between void nodes\n Transforms.insertNodes(editor, { children: [{ text: '' }] })\n Transforms.setNodes(editor, element)\n // Otherwise just set the empty node equal to new void\n } else {\n Transforms.setNodes(editor, element)\n }\n } else {\n Transforms.insertNodes(editor, element)\n }\n\n // Add an empty node after the new void\n Transforms.insertNodes(editor, { children: [{ text: '' }] })\n}\n"],"names":["Editor","Transforms","isLastSelectedElementEmpty","injectVoidElement","editor","element","lastSelectedElementIsEmpty","previous","isVoid","insertNodes","children","text","setNodes"],"mappings":"AAEA,SAASA,MAAM,EAAEC,UAAU,QAAQ,QAAO;AAI1C,SAASC,0BAA0B,QAAQ,kCAAiC;AAE5E,OAAO,MAAMC,oBAAoB,CAACC,QAAgBC;IAChD,MAAMC,6BAA6BJ,2BAA2BE;IAC9D,MAAMG,WAAWP,OAAOO,QAAQ,CAAcH;IAE9C,IAAIE,4BAA4B;QAC9B,2BAA2B;QAC3B,IAAIC,UAAU,CAAC,EAAE,IAAIP,OAAOQ,MAAM,CAACJ,QAAQG,QAAQ,CAAC,EAAE,GAAG;YACvD,4CAA4C;YAC5C,8CAA8C;YAC9CN,WAAWQ,WAAW,CAACL,QAAQ;gBAAEM,UAAU;oBAAC;wBAAEC,MAAM;oBAAG;iBAAE;YAAC;YAC1DV,WAAWW,QAAQ,CAACR,QAAQC;QAC5B,sDAAsD;QACxD,OAAO;YACLJ,WAAWW,QAAQ,CAACR,QAAQC;QAC9B;IACF,OAAO;QACLJ,WAAWQ,WAAW,CAACL,QAAQC;IACjC;IAEA,uCAAuC;IACvCJ,WAAWQ,WAAW,CAACL,QAAQ;QAAEM,UAAU;YAAC;gBAAEC,MAAM;YAAG;SAAE;IAAC;AAC5D,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/field/elements/isActive.tsx"],"sourcesContent":["import { Editor, Element } from 'slate'\n\nexport const isElementActive = (editor: Editor, format: string, blockType = 'type'): boolean => {\n if (!editor.selection) return false\n\n const [match] = Array.from(\n Editor.nodes(editor, {\n at: Editor.unhangRange(editor, editor.selection),\n match: (n) => !Editor.isEditor(n) && Element.isElement(n) && n[blockType] === format,\n }),\n )\n\n return !!match\n}\n"],"names":["Editor","Element","isElementActive","editor","format","blockType","selection","match","Array","from","nodes","at","unhangRange","n","isEditor","isElement"],"rangeMappings":";;;;;;;;","mappings":"AAAA,SAASA,MAAM,EAAEC,OAAO,QAAQ,QAAO;AAEvC,OAAO,MAAMC,kBAAkB,CAACC,QAAgBC,QAAgBC,YAAY,MAAM;IAChF,IAAI,CAACF,OAAOG,SAAS,EAAE,OAAO;IAE9B,MAAM,CAACC,MAAM,GAAGC,MAAMC,IAAI,CACxBT,OAAOU,KAAK,CAACP,QAAQ;QACnBQ,IAAIX,OAAOY,WAAW,CAACT,QAAQA,OAAOG,SAAS;QAC/CC,OAAO,CAACM,IAAM,CAACb,OAAOc,QAAQ,CAACD,MAAMZ,QAAQc,SAAS,CAACF,MAAMA,CAAC,CAACR,UAAU,KAAKD;IAChF;IAGF,OAAO,CAAC,CAACG;AACX,EAAC"}
1
+ {"version":3,"sources":["../../../src/field/elements/isActive.tsx"],"sourcesContent":["import { Editor, Element } from 'slate'\n\nexport const isElementActive = (editor: Editor, format: string, blockType = 'type'): boolean => {\n if (!editor.selection) return false\n\n const [match] = Array.from(\n Editor.nodes(editor, {\n at: Editor.unhangRange(editor, editor.selection),\n match: (n) => !Editor.isEditor(n) && Element.isElement(n) && n[blockType] === format,\n }),\n )\n\n return !!match\n}\n"],"names":["Editor","Element","isElementActive","editor","format","blockType","selection","match","Array","from","nodes","at","unhangRange","n","isEditor","isElement"],"mappings":"AAAA,SAASA,MAAM,EAAEC,OAAO,QAAQ,QAAO;AAEvC,OAAO,MAAMC,kBAAkB,CAACC,QAAgBC,QAAgBC,YAAY,MAAM;IAChF,IAAI,CAACF,OAAOG,SAAS,EAAE,OAAO;IAE9B,MAAM,CAACC,MAAM,GAAGC,MAAMC,IAAI,CACxBT,OAAOU,KAAK,CAACP,QAAQ;QACnBQ,IAAIX,OAAOY,WAAW,CAACT,QAAQA,OAAOG,SAAS;QAC/CC,OAAO,CAACM,IAAM,CAACb,OAAOc,QAAQ,CAACD,MAAMZ,QAAQc,SAAS,CAACF,MAAMA,CAAC,CAACR,UAAU,KAAKD;IAChF;IAGF,OAAO,CAAC,CAACG;AACX,EAAC"}
@@ -1,9 +1,9 @@
1
- import { Editor } from 'slate';
1
+ import { Editor, Element } from 'slate';
2
2
  /**
3
3
  * Returns true, if the provided node is a Block Element.
4
4
  * Note: Using Editor.isBlock() is not sufficient, as since slate 0.90 it returns `true` for Text nodes and the editor as well.
5
5
  *
6
6
  * Related Issue: https://github.com/ianstormtaylor/slate/issues/5287
7
7
  */
8
- export declare const isBlockElement: (editor: Editor, node: any) => node is import("../../types.js").ElementNode;
8
+ export declare const isBlockElement: (editor: Editor, node: any) => node is Element;
9
9
  //# sourceMappingURL=isBlockElement.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"isBlockElement.d.ts","sourceRoot":"","sources":["../../../src/field/elements/isBlockElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAW,MAAM,OAAO,CAAA;AAkBvC;;;;;GAKG;AAEH,eAAO,MAAM,cAAc,WAAY,MAAM,QAAQ,GAAG,iDACP,CAAA"}
1
+ {"version":3,"file":"isBlockElement.d.ts","sourceRoot":"","sources":["../../../src/field/elements/isBlockElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAkBvC;;;;;GAKG;AAEH,eAAO,MAAM,cAAc,WAAY,MAAM,QAAQ,GAAG,KAAG,IAAI,IAAI,OAClB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/field/elements/isBlockElement.ts"],"sourcesContent":["import { Editor, Element } from 'slate'\n\n/**\n * Returns true, if the provided node is an Element (optionally of a specific type)\n */\nconst isElement = (node: any, specificType?: string | string[]): node is Element => {\n if (Editor.isEditor(node) || !Element.isElement(node)) {\n return false\n }\n if (undefined === specificType) {\n return true\n }\n if (typeof specificType === 'string') {\n return node.type === specificType\n }\n return specificType.includes(node.type)\n}\n\n/**\n * Returns true, if the provided node is a Block Element.\n * Note: Using Editor.isBlock() is not sufficient, as since slate 0.90 it returns `true` for Text nodes and the editor as well.\n *\n * Related Issue: https://github.com/ianstormtaylor/slate/issues/5287\n */\n\nexport const isBlockElement = (editor: Editor, node: any): node is Element =>\n Editor.isBlock(editor, node) && isElement(node)\n"],"names":["Editor","Element","isElement","node","specificType","isEditor","undefined","type","includes","isBlockElement","editor","isBlock"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,MAAM,EAAEC,OAAO,QAAQ,QAAO;AAEvC;;CAEC,GACD,MAAMC,YAAY,CAACC,MAAWC;IAC5B,IAAIJ,OAAOK,QAAQ,CAACF,SAAS,CAACF,QAAQC,SAAS,CAACC,OAAO;QACrD,OAAO;IACT;IACA,IAAIG,cAAcF,cAAc;QAC9B,OAAO;IACT;IACA,IAAI,OAAOA,iBAAiB,UAAU;QACpC,OAAOD,KAAKI,IAAI,KAAKH;IACvB;IACA,OAAOA,aAAaI,QAAQ,CAACL,KAAKI,IAAI;AACxC;AAEA;;;;;CAKC,GAED,OAAO,MAAME,iBAAiB,CAACC,QAAgBP,OAC7CH,OAAOW,OAAO,CAACD,QAAQP,SAASD,UAAUC,MAAK"}
1
+ {"version":3,"sources":["../../../src/field/elements/isBlockElement.ts"],"sourcesContent":["import { Editor, Element } from 'slate'\n\n/**\n * Returns true, if the provided node is an Element (optionally of a specific type)\n */\nconst isElement = (node: any, specificType?: string | string[]): node is Element => {\n if (Editor.isEditor(node) || !Element.isElement(node)) {\n return false\n }\n if (undefined === specificType) {\n return true\n }\n if (typeof specificType === 'string') {\n return node.type === specificType\n }\n return specificType.includes(node.type)\n}\n\n/**\n * Returns true, if the provided node is a Block Element.\n * Note: Using Editor.isBlock() is not sufficient, as since slate 0.90 it returns `true` for Text nodes and the editor as well.\n *\n * Related Issue: https://github.com/ianstormtaylor/slate/issues/5287\n */\n\nexport const isBlockElement = (editor: Editor, node: any): node is Element =>\n Editor.isBlock(editor, node) && isElement(node)\n"],"names":["Editor","Element","isElement","node","specificType","isEditor","undefined","type","includes","isBlockElement","editor","isBlock"],"mappings":"AAAA,SAASA,MAAM,EAAEC,OAAO,QAAQ,QAAO;AAEvC;;CAEC,GACD,MAAMC,YAAY,CAACC,MAAWC;IAC5B,IAAIJ,OAAOK,QAAQ,CAACF,SAAS,CAACF,QAAQC,SAAS,CAACC,OAAO;QACrD,OAAO;IACT;IACA,IAAIG,cAAcF,cAAc;QAC9B,OAAO;IACT;IACA,IAAI,OAAOA,iBAAiB,UAAU;QACpC,OAAOD,KAAKI,IAAI,KAAKH;IACvB;IACA,OAAOA,aAAaI,QAAQ,CAACL,KAAKI,IAAI;AACxC;AAEA;;;;;CAKC,GAED,OAAO,MAAME,iBAAiB,CAACC,QAAgBP,OAC7CH,OAAOW,OAAO,CAACD,QAAQP,SAASD,UAAUC,MAAK"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/field/elements/isLastSelectedElementEmpty.ts"],"sourcesContent":["import { Editor, Element } from 'slate'\n\nimport { nodeIsTextNode } from '../../types.js'\n\nexport const isLastSelectedElementEmpty = (editor: Editor): boolean => {\n if (!editor.selection) return false\n\n const currentlySelectedNodes = Array.from(\n Editor.nodes(editor, {\n at: Editor.unhangRange(editor, editor.selection),\n match: (n) => !Editor.isEditor(n) && Element.isElement(n) && (!n.type || n.type === 'p'),\n }),\n )\n\n const lastSelectedNode = currentlySelectedNodes?.[currentlySelectedNodes?.length - 1]\n\n return (\n lastSelectedNode &&\n Element.isElement(lastSelectedNode[0]) &&\n (!lastSelectedNode[0].type || lastSelectedNode[0].type === 'p') &&\n nodeIsTextNode(lastSelectedNode[0].children?.[0]) &&\n lastSelectedNode[0].children?.[0].text === ''\n )\n}\n"],"names":["Editor","Element","nodeIsTextNode","isLastSelectedElementEmpty","editor","selection","currentlySelectedNodes","Array","from","nodes","at","unhangRange","match","n","isEditor","isElement","type","lastSelectedNode","length","children","text"],"rangeMappings":";;;;;;;;;;","mappings":"AAAA,SAASA,MAAM,EAAEC,OAAO,QAAQ,QAAO;AAEvC,SAASC,cAAc,QAAQ,iBAAgB;AAE/C,OAAO,MAAMC,6BAA6B,CAACC;IACzC,IAAI,CAACA,OAAOC,SAAS,EAAE,OAAO;IAE9B,MAAMC,yBAAyBC,MAAMC,IAAI,CACvCR,OAAOS,KAAK,CAACL,QAAQ;QACnBM,IAAIV,OAAOW,WAAW,CAACP,QAAQA,OAAOC,SAAS;QAC/CO,OAAO,CAACC,IAAM,CAACb,OAAOc,QAAQ,CAACD,MAAMZ,QAAQc,SAAS,CAACF,MAAO,CAAA,CAACA,EAAEG,IAAI,IAAIH,EAAEG,IAAI,KAAK,GAAE;IACxF;IAGF,MAAMC,mBAAmBX,wBAAwB,CAACA,wBAAwBY,SAAS,EAAE;IAErF,OACED,oBACAhB,QAAQc,SAAS,CAACE,gBAAgB,CAAC,EAAE,KACpC,CAAA,CAACA,gBAAgB,CAAC,EAAE,CAACD,IAAI,IAAIC,gBAAgB,CAAC,EAAE,CAACD,IAAI,KAAK,GAAE,KAC7Dd,eAAee,gBAAgB,CAAC,EAAE,CAACE,QAAQ,EAAE,CAAC,EAAE,KAChDF,gBAAgB,CAAC,EAAE,CAACE,QAAQ,EAAE,CAAC,EAAE,CAACC,SAAS;AAE/C,EAAC"}
1
+ {"version":3,"sources":["../../../src/field/elements/isLastSelectedElementEmpty.ts"],"sourcesContent":["import { Editor, Element } from 'slate'\n\nimport { nodeIsTextNode } from '../../types.js'\n\nexport const isLastSelectedElementEmpty = (editor: Editor): boolean => {\n if (!editor.selection) return false\n\n const currentlySelectedNodes = Array.from(\n Editor.nodes(editor, {\n at: Editor.unhangRange(editor, editor.selection),\n match: (n) => !Editor.isEditor(n) && Element.isElement(n) && (!n.type || n.type === 'p'),\n }),\n )\n\n const lastSelectedNode = currentlySelectedNodes?.[currentlySelectedNodes?.length - 1]\n\n return (\n lastSelectedNode &&\n Element.isElement(lastSelectedNode[0]) &&\n (!lastSelectedNode[0].type || lastSelectedNode[0].type === 'p') &&\n nodeIsTextNode(lastSelectedNode[0].children?.[0]) &&\n lastSelectedNode[0].children?.[0].text === ''\n )\n}\n"],"names":["Editor","Element","nodeIsTextNode","isLastSelectedElementEmpty","editor","selection","currentlySelectedNodes","Array","from","nodes","at","unhangRange","match","n","isEditor","isElement","type","lastSelectedNode","length","children","text"],"mappings":"AAAA,SAASA,MAAM,EAAEC,OAAO,QAAQ,QAAO;AAEvC,SAASC,cAAc,QAAQ,iBAAgB;AAE/C,OAAO,MAAMC,6BAA6B,CAACC;IACzC,IAAI,CAACA,OAAOC,SAAS,EAAE,OAAO;IAE9B,MAAMC,yBAAyBC,MAAMC,IAAI,CACvCR,OAAOS,KAAK,CAACL,QAAQ;QACnBM,IAAIV,OAAOW,WAAW,CAACP,QAAQA,OAAOC,SAAS;QAC/CO,OAAO,CAACC,IAAM,CAACb,OAAOc,QAAQ,CAACD,MAAMZ,QAAQc,SAAS,CAACF,MAAO,CAAA,CAACA,EAAEG,IAAI,IAAIH,EAAEG,IAAI,KAAK,GAAE;IACxF;IAGF,MAAMC,mBAAmBX,wBAAwB,CAACA,wBAAwBY,SAAS,EAAE;IAErF,OACED,oBACAhB,QAAQc,SAAS,CAACE,gBAAgB,CAAC,EAAE,KACpC,CAAA,CAACA,gBAAgB,CAAC,EAAE,CAACD,IAAI,IAAIC,gBAAgB,CAAC,EAAE,CAACD,IAAI,KAAK,GAAE,KAC7Dd,eAAee,gBAAgB,CAAC,EAAE,CAACE,QAAQ,EAAE,CAAC,EAAE,KAChDF,gBAAgB,CAAC,EAAE,CAACE,QAAQ,EAAE,CAAC,EAAE,CAACC,SAAS;AAE/C,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/field/elements/isListActive.ts"],"sourcesContent":["import { Editor, Element } from 'slate'\n\nimport { getCommonBlock } from './getCommonBlock.js'\n\nexport const isListActive = (editor: Editor, format: string): boolean => {\n if (!editor.selection) return false\n const [topmostSelectedNode, topmostSelectedNodePath] = getCommonBlock(editor)\n\n if (Editor.isEditor(topmostSelectedNode)) return false\n\n const [match] = Array.from(\n Editor.nodes(editor, {\n at: topmostSelectedNodePath,\n match: (node, path) => {\n return (\n !Editor.isEditor(node) &&\n Element.isElement(node) &&\n node.type === format &&\n path.length >= topmostSelectedNodePath.length - 2\n )\n },\n mode: 'lowest',\n }),\n )\n\n return !!match\n}\n"],"names":["Editor","Element","getCommonBlock","isListActive","editor","format","selection","topmostSelectedNode","topmostSelectedNodePath","isEditor","match","Array","from","nodes","at","node","path","isElement","type","length","mode"],"rangeMappings":";;;;;;;;;;;;;;","mappings":"AAAA,SAASA,MAAM,EAAEC,OAAO,QAAQ,QAAO;AAEvC,SAASC,cAAc,QAAQ,sBAAqB;AAEpD,OAAO,MAAMC,eAAe,CAACC,QAAgBC;IAC3C,IAAI,CAACD,OAAOE,SAAS,EAAE,OAAO;IAC9B,MAAM,CAACC,qBAAqBC,wBAAwB,GAAGN,eAAeE;IAEtE,IAAIJ,OAAOS,QAAQ,CAACF,sBAAsB,OAAO;IAEjD,MAAM,CAACG,MAAM,GAAGC,MAAMC,IAAI,CACxBZ,OAAOa,KAAK,CAACT,QAAQ;QACnBU,IAAIN;QACJE,OAAO,CAACK,MAAMC;YACZ,OACE,CAAChB,OAAOS,QAAQ,CAACM,SACjBd,QAAQgB,SAAS,CAACF,SAClBA,KAAKG,IAAI,KAAKb,UACdW,KAAKG,MAAM,IAAIX,wBAAwBW,MAAM,GAAG;QAEpD;QACAC,MAAM;IACR;IAGF,OAAO,CAAC,CAACV;AACX,EAAC"}
1
+ {"version":3,"sources":["../../../src/field/elements/isListActive.ts"],"sourcesContent":["import { Editor, Element } from 'slate'\n\nimport { getCommonBlock } from './getCommonBlock.js'\n\nexport const isListActive = (editor: Editor, format: string): boolean => {\n if (!editor.selection) return false\n const [topmostSelectedNode, topmostSelectedNodePath] = getCommonBlock(editor)\n\n if (Editor.isEditor(topmostSelectedNode)) return false\n\n const [match] = Array.from(\n Editor.nodes(editor, {\n at: topmostSelectedNodePath,\n match: (node, path) => {\n return (\n !Editor.isEditor(node) &&\n Element.isElement(node) &&\n node.type === format &&\n path.length >= topmostSelectedNodePath.length - 2\n )\n },\n mode: 'lowest',\n }),\n )\n\n return !!match\n}\n"],"names":["Editor","Element","getCommonBlock","isListActive","editor","format","selection","topmostSelectedNode","topmostSelectedNodePath","isEditor","match","Array","from","nodes","at","node","path","isElement","type","length","mode"],"mappings":"AAAA,SAASA,MAAM,EAAEC,OAAO,QAAQ,QAAO;AAEvC,SAASC,cAAc,QAAQ,sBAAqB;AAEpD,OAAO,MAAMC,eAAe,CAACC,QAAgBC;IAC3C,IAAI,CAACD,OAAOE,SAAS,EAAE,OAAO;IAC9B,MAAM,CAACC,qBAAqBC,wBAAwB,GAAGN,eAAeE;IAEtE,IAAIJ,OAAOS,QAAQ,CAACF,sBAAsB,OAAO;IAEjD,MAAM,CAACG,MAAM,GAAGC,MAAMC,IAAI,CACxBZ,OAAOa,KAAK,CAACT,QAAQ;QACnBU,IAAIN;QACJE,OAAO,CAACK,MAAMC;YACZ,OACE,CAAChB,OAAOS,QAAQ,CAACM,SACjBd,QAAQgB,SAAS,CAACF,SAClBA,KAAKG,IAAI,KAAKb,UACdW,KAAKG,MAAM,IAAIX,wBAAwBW,MAAM,GAAG;QAEpD;QACAC,MAAM;IACR;IAGF,OAAO,CAAC,CAACV;AACX,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/field/elements/isWithinListItem.ts"],"sourcesContent":["import type { Ancestor, NodeEntry } from 'slate'\n\nimport { Editor, Element } from 'slate'\n\nexport const isWithinListItem = (editor: Editor): boolean => {\n let parentLI: NodeEntry<Ancestor>\n\n try {\n parentLI = Editor.parent(editor, editor.selection)\n } catch (e) {\n // swallow error, Slate\n }\n\n if (Element.isElement(parentLI?.[0]) && parentLI?.[0]?.type === 'li') {\n return true\n }\n\n return false\n}\n"],"names":["Editor","Element","isWithinListItem","editor","parentLI","parent","selection","e","isElement","type"],"rangeMappings":";;;;;;;;;;;;","mappings":"AAEA,SAASA,MAAM,EAAEC,OAAO,QAAQ,QAAO;AAEvC,OAAO,MAAMC,mBAAmB,CAACC;IAC/B,IAAIC;IAEJ,IAAI;QACFA,WAAWJ,OAAOK,MAAM,CAACF,QAAQA,OAAOG,SAAS;IACnD,EAAE,OAAOC,GAAG;IACV,uBAAuB;IACzB;IAEA,IAAIN,QAAQO,SAAS,CAACJ,UAAU,CAAC,EAAE,KAAKA,UAAU,CAAC,EAAE,EAAEK,SAAS,MAAM;QACpE,OAAO;IACT;IAEA,OAAO;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../src/field/elements/isWithinListItem.ts"],"sourcesContent":["import type { Ancestor, NodeEntry } from 'slate'\n\nimport { Editor, Element } from 'slate'\n\nexport const isWithinListItem = (editor: Editor): boolean => {\n let parentLI: NodeEntry<Ancestor>\n\n try {\n parentLI = Editor.parent(editor, editor.selection)\n } catch (e) {\n // swallow error, Slate\n }\n\n if (Element.isElement(parentLI?.[0]) && parentLI?.[0]?.type === 'li') {\n return true\n }\n\n return false\n}\n"],"names":["Editor","Element","isWithinListItem","editor","parentLI","parent","selection","e","isElement","type"],"mappings":"AAEA,SAASA,MAAM,EAAEC,OAAO,QAAQ,QAAO;AAEvC,OAAO,MAAMC,mBAAmB,CAACC;IAC/B,IAAIC;IAEJ,IAAI;QACFA,WAAWJ,OAAOK,MAAM,CAACF,QAAQA,OAAOG,SAAS;IACnD,EAAE,OAAOC,GAAG;IACV,uBAAuB;IACzB;IAEA,IAAIN,QAAQO,SAAS,CAACJ,UAAU,CAAC,EAAE,KAAKA,UAAU,CAAC,EAAE,EAAEK,SAAS,MAAM;QACpE,OAAO;IACT;IAEA,OAAO;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/elements/li/ListItem.tsx"],"sourcesContent":["'use client'\n\nimport type { Element } from 'slate'\n\nimport React from 'react'\n\nimport { useElement } from '../../providers/ElementProvider.js'\nimport { listTypes } from '../listTypes.js'\n\nexport const ListItemElement: React.FC = () => {\n const { attributes, children, element } = useElement<Element>()\n\n const listType = typeof element.children?.[0]?.type === 'string' ? element.children[0].type : ''\n const disableListStyle = element.children.length >= 1 && listTypes.includes(listType)\n\n return (\n <li\n style={{\n listStyle: disableListStyle ? 'none' : undefined,\n listStylePosition: disableListStyle ? 'outside' : undefined,\n }}\n {...attributes}\n >\n {children}\n </li>\n )\n}\n"],"names":["React","useElement","listTypes","ListItemElement","attributes","children","element","listType","type","disableListStyle","length","includes","li","style","listStyle","undefined","listStylePosition"],"rangeMappings":";;;;;;;;;;;;;;;;;","mappings":"AAAA;;AAIA,OAAOA,WAAW,QAAO;AAEzB,SAASC,UAAU,QAAQ,qCAAoC;AAC/D,SAASC,SAAS,QAAQ,kBAAiB;AAE3C,OAAO,MAAMC,kBAA4B;IACvC,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,OAAO,EAAE,GAAGL;IAE1C,MAAMM,WAAW,OAAOD,QAAQD,QAAQ,EAAE,CAAC,EAAE,EAAEG,SAAS,WAAWF,QAAQD,QAAQ,CAAC,EAAE,CAACG,IAAI,GAAG;IAC9F,MAAMC,mBAAmBH,QAAQD,QAAQ,CAACK,MAAM,IAAI,KAAKR,UAAUS,QAAQ,CAACJ;IAE5E,qBACE,KAACK;QACCC,OAAO;YACLC,WAAWL,mBAAmB,SAASM;YACvCC,mBAAmBP,mBAAmB,YAAYM;QACpD;QACC,GAAGX,UAAU;kBAEbC;;AAGP,EAAC"}
1
+ {"version":3,"sources":["../../../../src/field/elements/li/ListItem.tsx"],"sourcesContent":["'use client'\n\nimport type { Element } from 'slate'\n\nimport React from 'react'\n\nimport { useElement } from '../../providers/ElementProvider.js'\nimport { listTypes } from '../listTypes.js'\n\nexport const ListItemElement: React.FC = () => {\n const { attributes, children, element } = useElement<Element>()\n\n const listType = typeof element.children?.[0]?.type === 'string' ? element.children[0].type : ''\n const disableListStyle = element.children.length >= 1 && listTypes.includes(listType)\n\n return (\n <li\n style={{\n listStyle: disableListStyle ? 'none' : undefined,\n listStylePosition: disableListStyle ? 'outside' : undefined,\n }}\n {...attributes}\n >\n {children}\n </li>\n )\n}\n"],"names":["React","useElement","listTypes","ListItemElement","attributes","children","element","listType","type","disableListStyle","length","includes","li","style","listStyle","undefined","listStylePosition"],"mappings":"AAAA;;AAIA,OAAOA,WAAW,QAAO;AAEzB,SAASC,UAAU,QAAQ,qCAAoC;AAC/D,SAASC,SAAS,QAAQ,kBAAiB;AAE3C,OAAO,MAAMC,kBAA4B;IACvC,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,OAAO,EAAE,GAAGL;IAE1C,MAAMM,WAAW,OAAOD,QAAQD,QAAQ,EAAE,CAAC,EAAE,EAAEG,SAAS,WAAWF,QAAQD,QAAQ,CAAC,EAAE,CAACG,IAAI,GAAG;IAC9F,MAAMC,mBAAmBH,QAAQD,QAAQ,CAACK,MAAM,IAAI,KAAKR,UAAUS,QAAQ,CAACJ;IAE5E,qBACE,KAACK;QACCC,OAAO;YACLC,WAAWL,mBAAmB,SAASM;YACvCC,mBAAmBP,mBAAmB,YAAYM;QACpD;QACC,GAAGX,UAAU;kBAEbC;;AAGP,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/elements/li/index.tsx"],"sourcesContent":["import type { RichTextCustomElement } from '../../../types.js'\n\nimport { ListItemElement } from './ListItem.js'\n\nexport const li: RichTextCustomElement = {\n name: 'li',\n Element: ListItemElement,\n}\n"],"names":["ListItemElement","li","name","Element"],"rangeMappings":";;;;","mappings":"AAEA,SAASA,eAAe,QAAQ,gBAAe;AAE/C,OAAO,MAAMC,KAA4B;IACvCC,MAAM;IACNC,SAASH;AACX,EAAC"}
1
+ {"version":3,"sources":["../../../../src/field/elements/li/index.tsx"],"sourcesContent":["import type { RichTextCustomElement } from '../../../types.js'\n\nimport { ListItemElement } from './ListItem.js'\n\nexport const li: RichTextCustomElement = {\n name: 'li',\n Element: ListItemElement,\n}\n"],"names":["ListItemElement","li","name","Element"],"mappings":"AAEA,SAASA,eAAe,QAAQ,gBAAe;AAE/C,OAAO,MAAMC,KAA4B;IACvCC,MAAM;IACNC,SAASH;AACX,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/field/elements/link/Button/index.tsx"],"sourcesContent":["'use client'\n\nimport type { FormState } from 'payload'\n\nimport { useConfig, useDrawerSlug, useFieldProps, useModal, useTranslation } from '@payloadcms/ui'\nimport { getFormState, reduceFieldsToValues } from '@payloadcms/ui/shared'\nimport React, { Fragment, useState } from 'react'\nimport { Editor, Range, Transforms } from 'slate'\nimport { ReactEditor, useSlate } from 'slate-react'\n\nimport { LinkIcon } from '../../../icons/Link/index.js'\nimport { useElementButton } from '../../../providers/ElementButtonProvider.js'\nimport { ElementButton } from '../../Button.js'\nimport { isElementActive } from '../../isActive.js'\nimport { LinkDrawer } from '../LinkDrawer/index.js'\nimport { linkFieldsSchemaPath } from '../shared.js'\nimport { unwrapLink } from '../utilities.js'\n\n/**\n * This function is called when a new link is created - not when an existing link is edited.\n */\nconst insertLink = (editor, fields) => {\n const isCollapsed = editor.selection && Range.isCollapsed(editor.selection)\n const data = reduceFieldsToValues(fields, true)\n\n const newLink = {\n type: 'link',\n children: [],\n doc: data.doc,\n fields: data.fields, // Any custom user-added fields are part of data.fields\n linkType: data.linkType,\n newTab: data.newTab,\n url: data.url,\n }\n\n if (isCollapsed || !editor.selection) {\n // If selection anchor and focus are the same,\n // Just inject a new node with children already set\n Transforms.insertNodes(editor, {\n ...newLink,\n children: [{ text: String(data.text) }],\n })\n } else if (editor.selection) {\n // Otherwise we need to wrap the selected node in a link,\n // Delete its old text,\n // Move the selection one position forward into the link,\n // And insert the text back into the new link\n Transforms.wrapNodes(editor, newLink, { split: true })\n Transforms.delete(editor, { at: editor.selection.focus.path, unit: 'word' })\n Transforms.move(editor, { distance: 1, unit: 'offset' })\n Transforms.insertText(editor, String(data.text), { at: editor.selection.focus.path })\n }\n\n ReactEditor.focus(editor)\n}\n\nexport const LinkButton: React.FC = () => {\n const { fieldProps } = useElementButton()\n const [initialState, setInitialState] = useState<FormState>({})\n\n const { t } = useTranslation()\n const editor = useSlate()\n const config = useConfig()\n\n const { closeModal, openModal } = useModal()\n const drawerSlug = useDrawerSlug('rich-text-link')\n const { schemaPath } = useFieldProps()\n\n const { richTextComponentMap } = fieldProps\n\n const fieldMap = richTextComponentMap.get(linkFieldsSchemaPath)\n\n return (\n <Fragment>\n <ElementButton\n className=\"link\"\n format=\"link\"\n onClick={async () => {\n if (isElementActive(editor, 'link')) {\n unwrapLink(editor)\n } else {\n openModal(drawerSlug)\n const isCollapsed = editor.selection && Range.isCollapsed(editor.selection)\n if (!isCollapsed) {\n const data = {\n text: editor.selection ? Editor.string(editor, editor.selection) : '',\n }\n const state = await getFormState({\n apiRoute: config.routes.api,\n body: {\n data,\n operation: 'update',\n schemaPath: `${schemaPath}.${linkFieldsSchemaPath}`,\n },\n serverURL: config.serverURL,\n })\n setInitialState(state)\n }\n }\n }}\n tooltip={t('fields:addLink')}\n >\n <LinkIcon />\n </ElementButton>\n <LinkDrawer\n drawerSlug={drawerSlug}\n fieldMap={Array.isArray(fieldMap) ? fieldMap : []}\n handleClose={() => {\n closeModal(drawerSlug)\n }}\n handleModalSubmit={(fields) => {\n insertLink(editor, fields)\n closeModal(drawerSlug)\n }}\n initialState={initialState}\n />\n </Fragment>\n )\n}\n"],"names":["useConfig","useDrawerSlug","useFieldProps","useModal","useTranslation","getFormState","reduceFieldsToValues","React","Fragment","useState","Editor","Range","Transforms","ReactEditor","useSlate","LinkIcon","useElementButton","ElementButton","isElementActive","LinkDrawer","linkFieldsSchemaPath","unwrapLink","insertLink","editor","fields","isCollapsed","selection","data","newLink","type","children","doc","linkType","newTab","url","insertNodes","text","String","wrapNodes","split","delete","at","focus","path","unit","move","distance","insertText","LinkButton","fieldProps","initialState","setInitialState","t","config","closeModal","openModal","drawerSlug","schemaPath","richTextComponentMap","fieldMap","get","className","format","onClick","string","state","apiRoute","routes","api","body","operation","serverURL","tooltip","Array","isArray","handleClose","handleModalSubmit"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/field/elements/link/Button/index.tsx"],"sourcesContent":["'use client'\n\nimport type { FormState } from 'payload'\n\nimport { useConfig, useDrawerSlug, useFieldProps, useModal, useTranslation } from '@payloadcms/ui'\nimport { getFormState, reduceFieldsToValues } from '@payloadcms/ui/shared'\nimport React, { Fragment, useState } from 'react'\nimport { Editor, Range, Transforms } from 'slate'\nimport { ReactEditor, useSlate } from 'slate-react'\n\nimport { LinkIcon } from '../../../icons/Link/index.js'\nimport { useElementButton } from '../../../providers/ElementButtonProvider.js'\nimport { ElementButton } from '../../Button.js'\nimport { isElementActive } from '../../isActive.js'\nimport { LinkDrawer } from '../LinkDrawer/index.js'\nimport { linkFieldsSchemaPath } from '../shared.js'\nimport { unwrapLink } from '../utilities.js'\n\n/**\n * This function is called when a new link is created - not when an existing link is edited.\n */\nconst insertLink = (editor, fields) => {\n const isCollapsed = editor.selection && Range.isCollapsed(editor.selection)\n const data = reduceFieldsToValues(fields, true)\n\n const newLink = {\n type: 'link',\n children: [],\n doc: data.doc,\n fields: data.fields, // Any custom user-added fields are part of data.fields\n linkType: data.linkType,\n newTab: data.newTab,\n url: data.url,\n }\n\n if (isCollapsed || !editor.selection) {\n // If selection anchor and focus are the same,\n // Just inject a new node with children already set\n Transforms.insertNodes(editor, {\n ...newLink,\n children: [{ text: String(data.text) }],\n })\n } else if (editor.selection) {\n // Otherwise we need to wrap the selected node in a link,\n // Delete its old text,\n // Move the selection one position forward into the link,\n // And insert the text back into the new link\n Transforms.wrapNodes(editor, newLink, { split: true })\n Transforms.delete(editor, { at: editor.selection.focus.path, unit: 'word' })\n Transforms.move(editor, { distance: 1, unit: 'offset' })\n Transforms.insertText(editor, String(data.text), { at: editor.selection.focus.path })\n }\n\n ReactEditor.focus(editor)\n}\n\nexport const LinkButton: React.FC = () => {\n const { fieldProps } = useElementButton()\n const [initialState, setInitialState] = useState<FormState>({})\n\n const { t } = useTranslation()\n const editor = useSlate()\n const config = useConfig()\n\n const { closeModal, openModal } = useModal()\n const drawerSlug = useDrawerSlug('rich-text-link')\n const { schemaPath } = useFieldProps()\n\n const { richTextComponentMap } = fieldProps\n\n const fieldMap = richTextComponentMap.get(linkFieldsSchemaPath)\n\n return (\n <Fragment>\n <ElementButton\n className=\"link\"\n format=\"link\"\n onClick={async () => {\n if (isElementActive(editor, 'link')) {\n unwrapLink(editor)\n } else {\n openModal(drawerSlug)\n const isCollapsed = editor.selection && Range.isCollapsed(editor.selection)\n if (!isCollapsed) {\n const data = {\n text: editor.selection ? Editor.string(editor, editor.selection) : '',\n }\n const state = await getFormState({\n apiRoute: config.routes.api,\n body: {\n data,\n operation: 'update',\n schemaPath: `${schemaPath}.${linkFieldsSchemaPath}`,\n },\n serverURL: config.serverURL,\n })\n setInitialState(state)\n }\n }\n }}\n tooltip={t('fields:addLink')}\n >\n <LinkIcon />\n </ElementButton>\n <LinkDrawer\n drawerSlug={drawerSlug}\n fieldMap={Array.isArray(fieldMap) ? fieldMap : []}\n handleClose={() => {\n closeModal(drawerSlug)\n }}\n handleModalSubmit={(fields) => {\n insertLink(editor, fields)\n closeModal(drawerSlug)\n }}\n initialState={initialState}\n />\n </Fragment>\n )\n}\n"],"names":["useConfig","useDrawerSlug","useFieldProps","useModal","useTranslation","getFormState","reduceFieldsToValues","React","Fragment","useState","Editor","Range","Transforms","ReactEditor","useSlate","LinkIcon","useElementButton","ElementButton","isElementActive","LinkDrawer","linkFieldsSchemaPath","unwrapLink","insertLink","editor","fields","isCollapsed","selection","data","newLink","type","children","doc","linkType","newTab","url","insertNodes","text","String","wrapNodes","split","delete","at","focus","path","unit","move","distance","insertText","LinkButton","fieldProps","initialState","setInitialState","t","config","closeModal","openModal","drawerSlug","schemaPath","richTextComponentMap","fieldMap","get","className","format","onClick","string","state","apiRoute","routes","api","body","operation","serverURL","tooltip","Array","isArray","handleClose","handleModalSubmit"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/field/elements/link/Element/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n Popup,\n Translation,\n useAuth,\n useConfig,\n useDocumentInfo,\n useDrawerSlug,\n useLocale,\n useModal,\n useTranslation,\n} from '@payloadcms/ui'\nimport { getFormState, reduceFieldsToValues } from '@payloadcms/ui/shared'\nimport { deepCopyObject } from 'payload/shared'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { Editor, Node, Transforms } from 'slate'\nimport { ReactEditor, useSlate } from 'slate-react'\n\nimport type { LinkElementType } from '../types.js'\n\nimport { useElement } from '../../../providers/ElementProvider.js'\nimport { LinkDrawer } from '../LinkDrawer/index.js'\nimport { linkFieldsSchemaPath } from '../shared.js'\nimport { unwrapLink } from '../utilities.js'\nimport './index.scss'\n\nconst baseClass = 'rich-text-link'\n\n/**\n * This function is called when an existing link is edited.\n * When a link is first created, another function is called: {@link ../Button/index.tsx#insertLink}\n */\nconst insertChange = (editor, fields) => {\n const data = reduceFieldsToValues(fields, true)\n\n const [, parentPath] = Editor.above(editor)\n\n const newNode: Record<string, unknown> = {\n doc: data.doc,\n linkType: data.linkType,\n newTab: data.newTab,\n url: data.url,\n }\n\n if (data.fields) newNode.fields = data.fields\n\n Transforms.setNodes(editor, newNode, { at: parentPath })\n\n Transforms.delete(editor, { at: editor.selection.focus.path, unit: 'block' })\n Transforms.move(editor, { distance: 1, unit: 'offset' })\n Transforms.insertText(editor, String(data.text), { at: editor.selection.focus.path })\n\n ReactEditor.focus(editor)\n}\n\nexport const LinkElement = () => {\n const { attributes, children, editorRef, element, fieldProps, schemaPath } =\n useElement<LinkElementType>()\n\n const fieldMapPath = `${schemaPath}.${linkFieldsSchemaPath}`\n\n const { richTextComponentMap } = fieldProps\n const fieldMap = richTextComponentMap.get(linkFieldsSchemaPath)\n\n const editor = useSlate()\n const config = useConfig()\n const { user } = useAuth()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const { closeModal, openModal, toggleModal } = useModal()\n const [renderModal, setRenderModal] = useState(false)\n const [renderPopup, setRenderPopup] = useState(false)\n const [initialState, setInitialState] = useState<FormState>({})\n const { id, collectionSlug } = useDocumentInfo()\n\n const drawerSlug = useDrawerSlug('rich-text-link')\n\n const handleTogglePopup = useCallback((render) => {\n if (!render) {\n setRenderPopup(render)\n }\n }, [])\n\n useEffect(() => {\n const awaitInitialState = async () => {\n const data = {\n doc: element.doc,\n fields: deepCopyObject(element.fields),\n linkType: element.linkType,\n newTab: element.newTab,\n text: Node.string(element),\n url: element.url,\n }\n\n const state = await getFormState({\n apiRoute: config.routes.api,\n body: {\n data,\n operation: 'update',\n schemaPath: fieldMapPath,\n },\n serverURL: config.serverURL,\n })\n\n setInitialState(state)\n }\n\n if (renderModal) {\n void awaitInitialState()\n }\n }, [renderModal, element, user, locale, t, collectionSlug, config, id, fieldMapPath])\n\n return (\n <span className={baseClass} {...attributes}>\n <span contentEditable={false} style={{ userSelect: 'none' }}>\n {renderModal && (\n <LinkDrawer\n drawerSlug={drawerSlug}\n fieldMap={Array.isArray(fieldMap) ? fieldMap : []}\n handleClose={() => {\n toggleModal(drawerSlug)\n setRenderModal(false)\n }}\n handleModalSubmit={(fields) => {\n insertChange(editor, fields)\n closeModal(drawerSlug)\n setRenderModal(false)\n }}\n initialState={initialState}\n />\n )}\n <Popup\n boundingRef={editorRef}\n buttonType=\"none\"\n forceOpen={renderPopup}\n horizontalAlign=\"left\"\n onToggleOpen={handleTogglePopup}\n render={() => (\n <div className={`${baseClass}__popup`}>\n {element.linkType === 'internal' && element.doc?.relationTo && element.doc?.value && (\n <Translation\n elements={{\n '0': ({ children }) => (\n <a\n className={`${baseClass}__link-label`}\n href={`${config.routes.admin}/collections/${element.doc.relationTo}/${element.doc.value}`}\n rel=\"noreferrer\"\n target=\"_blank\"\n title={`${config.routes.admin}/collections/${element.doc.relationTo}/${element.doc.value}`}\n >\n {children}\n </a>\n ),\n }}\n i18nKey=\"fields:linkedTo\"\n t={t}\n variables={{\n label: getTranslation(\n config.collections.find(({ slug }) => slug === element.doc.relationTo)?.labels\n ?.singular,\n i18n,\n ),\n }}\n />\n )}\n {(element.linkType === 'custom' || !element.linkType) && (\n <a\n className={`${baseClass}__link-label`}\n href={element.url}\n rel=\"noreferrer\"\n target=\"_blank\"\n title={element.url}\n >\n {element.url}\n </a>\n )}\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__link-edit`}\n icon=\"edit\"\n onClick={(e) => {\n e.preventDefault()\n setRenderPopup(false)\n openModal(drawerSlug)\n setRenderModal(true)\n }}\n round\n tooltip={t('general:edit')}\n />\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__link-close`}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n unwrapLink(editor)\n }}\n round\n tooltip={t('general:remove')}\n />\n </div>\n )}\n size=\"fit-content\"\n verticalAlign=\"bottom\"\n />\n </span>\n <span\n className={[`${baseClass}__popup-toggler`].filter(Boolean).join(' ')}\n onClick={() => setRenderPopup(true)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') setRenderPopup(true)\n }}\n role=\"button\"\n tabIndex={0}\n >\n {children}\n </span>\n </span>\n )\n}\n"],"names":["getTranslation","Button","Popup","Translation","useAuth","useConfig","useDocumentInfo","useDrawerSlug","useLocale","useModal","useTranslation","getFormState","reduceFieldsToValues","deepCopyObject","React","useCallback","useEffect","useState","Editor","Node","Transforms","ReactEditor","useSlate","useElement","LinkDrawer","linkFieldsSchemaPath","unwrapLink","baseClass","insertChange","editor","fields","data","parentPath","above","newNode","doc","linkType","newTab","url","setNodes","at","delete","selection","focus","path","unit","move","distance","insertText","String","text","LinkElement","attributes","children","editorRef","element","fieldProps","schemaPath","fieldMapPath","richTextComponentMap","fieldMap","get","config","user","code","locale","i18n","t","closeModal","openModal","toggleModal","renderModal","setRenderModal","renderPopup","setRenderPopup","initialState","setInitialState","id","collectionSlug","drawerSlug","handleTogglePopup","render","awaitInitialState","string","state","apiRoute","routes","api","body","operation","serverURL","span","className","contentEditable","style","userSelect","Array","isArray","handleClose","handleModalSubmit","boundingRef","buttonType","forceOpen","horizontalAlign","onToggleOpen","div","relationTo","value","elements","a","href","admin","rel","target","title","i18nKey","variables","label","collections","find","slug","labels","singular","buttonStyle","icon","onClick","e","preventDefault","round","tooltip","size","verticalAlign","filter","Boolean","join","onKeyDown","key","role","tabIndex"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/field/elements/link/Element/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n Popup,\n Translation,\n useAuth,\n useConfig,\n useDocumentInfo,\n useDrawerSlug,\n useLocale,\n useModal,\n useTranslation,\n} from '@payloadcms/ui'\nimport { getFormState, reduceFieldsToValues } from '@payloadcms/ui/shared'\nimport { deepCopyObject } from 'payload/shared'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { Editor, Node, Transforms } from 'slate'\nimport { ReactEditor, useSlate } from 'slate-react'\n\nimport type { LinkElementType } from '../types.js'\n\nimport { useElement } from '../../../providers/ElementProvider.js'\nimport { LinkDrawer } from '../LinkDrawer/index.js'\nimport { linkFieldsSchemaPath } from '../shared.js'\nimport { unwrapLink } from '../utilities.js'\nimport './index.scss'\n\nconst baseClass = 'rich-text-link'\n\n/**\n * This function is called when an existing link is edited.\n * When a link is first created, another function is called: {@link ../Button/index.tsx#insertLink}\n */\nconst insertChange = (editor, fields) => {\n const data = reduceFieldsToValues(fields, true)\n\n const [, parentPath] = Editor.above(editor)\n\n const newNode: Record<string, unknown> = {\n doc: data.doc,\n linkType: data.linkType,\n newTab: data.newTab,\n url: data.url,\n }\n\n if (data.fields) newNode.fields = data.fields\n\n Transforms.setNodes(editor, newNode, { at: parentPath })\n\n Transforms.delete(editor, { at: editor.selection.focus.path, unit: 'block' })\n Transforms.move(editor, { distance: 1, unit: 'offset' })\n Transforms.insertText(editor, String(data.text), { at: editor.selection.focus.path })\n\n ReactEditor.focus(editor)\n}\n\nexport const LinkElement = () => {\n const { attributes, children, editorRef, element, fieldProps, schemaPath } =\n useElement<LinkElementType>()\n\n const fieldMapPath = `${schemaPath}.${linkFieldsSchemaPath}`\n\n const { richTextComponentMap } = fieldProps\n const fieldMap = richTextComponentMap.get(linkFieldsSchemaPath)\n\n const editor = useSlate()\n const config = useConfig()\n const { user } = useAuth()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const { closeModal, openModal, toggleModal } = useModal()\n const [renderModal, setRenderModal] = useState(false)\n const [renderPopup, setRenderPopup] = useState(false)\n const [initialState, setInitialState] = useState<FormState>({})\n const { id, collectionSlug } = useDocumentInfo()\n\n const drawerSlug = useDrawerSlug('rich-text-link')\n\n const handleTogglePopup = useCallback((render) => {\n if (!render) {\n setRenderPopup(render)\n }\n }, [])\n\n useEffect(() => {\n const awaitInitialState = async () => {\n const data = {\n doc: element.doc,\n fields: deepCopyObject(element.fields),\n linkType: element.linkType,\n newTab: element.newTab,\n text: Node.string(element),\n url: element.url,\n }\n\n const state = await getFormState({\n apiRoute: config.routes.api,\n body: {\n data,\n operation: 'update',\n schemaPath: fieldMapPath,\n },\n serverURL: config.serverURL,\n })\n\n setInitialState(state)\n }\n\n if (renderModal) {\n void awaitInitialState()\n }\n }, [renderModal, element, user, locale, t, collectionSlug, config, id, fieldMapPath])\n\n return (\n <span className={baseClass} {...attributes}>\n <span contentEditable={false} style={{ userSelect: 'none' }}>\n {renderModal && (\n <LinkDrawer\n drawerSlug={drawerSlug}\n fieldMap={Array.isArray(fieldMap) ? fieldMap : []}\n handleClose={() => {\n toggleModal(drawerSlug)\n setRenderModal(false)\n }}\n handleModalSubmit={(fields) => {\n insertChange(editor, fields)\n closeModal(drawerSlug)\n setRenderModal(false)\n }}\n initialState={initialState}\n />\n )}\n <Popup\n boundingRef={editorRef}\n buttonType=\"none\"\n forceOpen={renderPopup}\n horizontalAlign=\"left\"\n onToggleOpen={handleTogglePopup}\n render={() => (\n <div className={`${baseClass}__popup`}>\n {element.linkType === 'internal' && element.doc?.relationTo && element.doc?.value && (\n <Translation\n elements={{\n '0': ({ children }) => (\n <a\n className={`${baseClass}__link-label`}\n href={`${config.routes.admin}/collections/${element.doc.relationTo}/${element.doc.value}`}\n rel=\"noreferrer\"\n target=\"_blank\"\n title={`${config.routes.admin}/collections/${element.doc.relationTo}/${element.doc.value}`}\n >\n {children}\n </a>\n ),\n }}\n i18nKey=\"fields:linkedTo\"\n t={t}\n variables={{\n label: getTranslation(\n config.collections.find(({ slug }) => slug === element.doc.relationTo)?.labels\n ?.singular,\n i18n,\n ),\n }}\n />\n )}\n {(element.linkType === 'custom' || !element.linkType) && (\n <a\n className={`${baseClass}__link-label`}\n href={element.url}\n rel=\"noreferrer\"\n target=\"_blank\"\n title={element.url}\n >\n {element.url}\n </a>\n )}\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__link-edit`}\n icon=\"edit\"\n onClick={(e) => {\n e.preventDefault()\n setRenderPopup(false)\n openModal(drawerSlug)\n setRenderModal(true)\n }}\n round\n tooltip={t('general:edit')}\n />\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__link-close`}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n unwrapLink(editor)\n }}\n round\n tooltip={t('general:remove')}\n />\n </div>\n )}\n size=\"fit-content\"\n verticalAlign=\"bottom\"\n />\n </span>\n <span\n className={[`${baseClass}__popup-toggler`].filter(Boolean).join(' ')}\n onClick={() => setRenderPopup(true)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') setRenderPopup(true)\n }}\n role=\"button\"\n tabIndex={0}\n >\n {children}\n </span>\n </span>\n )\n}\n"],"names":["getTranslation","Button","Popup","Translation","useAuth","useConfig","useDocumentInfo","useDrawerSlug","useLocale","useModal","useTranslation","getFormState","reduceFieldsToValues","deepCopyObject","React","useCallback","useEffect","useState","Editor","Node","Transforms","ReactEditor","useSlate","useElement","LinkDrawer","linkFieldsSchemaPath","unwrapLink","baseClass","insertChange","editor","fields","data","parentPath","above","newNode","doc","linkType","newTab","url","setNodes","at","delete","selection","focus","path","unit","move","distance","insertText","String","text","LinkElement","attributes","children","editorRef","element","fieldProps","schemaPath","fieldMapPath","richTextComponentMap","fieldMap","get","config","user","code","locale","i18n","t","closeModal","openModal","toggleModal","renderModal","setRenderModal","renderPopup","setRenderPopup","initialState","setInitialState","id","collectionSlug","drawerSlug","handleTogglePopup","render","awaitInitialState","string","state","apiRoute","routes","api","body","operation","serverURL","span","className","contentEditable","style","userSelect","Array","isArray","handleClose","handleModalSubmit","boundingRef","buttonType","forceOpen","horizontalAlign","onToggleOpen","div","relationTo","value","elements","a","href","admin","rel","target","title","i18nKey","variables","label","collections","find","slug","labels","singular","buttonStyle","icon","onClick","e","preventDefault","round","tooltip","size","verticalAlign","filter","Boolean","join","onKeyDown","key","role","tabIndex"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/field/elements/link/LinkDrawer/baseFields.ts"],"sourcesContent":["import type { Field, SanitizedConfig, User } from 'payload'\n\nexport const getBaseFields = (config: SanitizedConfig): Field[] => [\n {\n name: 'text',\n type: 'text',\n label: ({ t }) => t('fields:textToDisplay'),\n required: true,\n },\n {\n name: 'linkType',\n type: 'radio',\n admin: {\n description: ({ t }) => t('fields:chooseBetweenCustomTextOrDocument'),\n },\n defaultValue: 'custom',\n label: ({ t }) => t('fields:linkType'),\n options: [\n {\n label: ({ t }) => t('fields:customURL'),\n value: 'custom',\n },\n {\n label: ({ t }) => t('fields:internalLink'),\n value: 'internal',\n },\n ],\n required: true,\n },\n {\n name: 'url',\n type: 'text',\n admin: {\n condition: ({ linkType }) => linkType !== 'internal',\n },\n label: ({ t }) => t('fields:enterURL'),\n required: true,\n },\n {\n name: 'doc',\n admin: {\n condition: ({ linkType }) => {\n return linkType === 'internal'\n },\n },\n // when admin.hidden is a function we need to dynamically call hidden with the user to know if the collection should be shown\n type: 'relationship',\n filterOptions: ({ relationTo, user }) => {\n const hidden = config.collections.find(({ slug }) => slug === relationTo).admin.hidden\n if (typeof hidden === 'function' && hidden({ user } as { user: User })) {\n return false\n }\n },\n label: ({ t }) => t('fields:chooseDocumentToLink'),\n relationTo: config.collections\n .filter(({ admin: { enableRichTextLink, hidden } }) => {\n if (typeof hidden !== 'function' && hidden) {\n return false\n }\n return enableRichTextLink\n })\n .map(({ slug }) => slug),\n required: true,\n },\n {\n name: 'newTab',\n type: 'checkbox',\n label: ({ t }) => t('fields:openInNewTab'),\n },\n]\n"],"names":["getBaseFields","config","name","type","label","t","required","admin","description","defaultValue","options","value","condition","linkType","filterOptions","relationTo","user","hidden","collections","find","slug","filter","enableRichTextLink","map"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,OAAO,MAAMA,gBAAgB,CAACC,SAAqC;QACjE;YACEC,MAAM;YACNC,MAAM;YACNC,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;YACpBC,UAAU;QACZ;QACA;YACEJ,MAAM;YACNC,MAAM;YACNI,OAAO;gBACLC,aAAa,CAAC,EAAEH,CAAC,EAAE,GAAKA,EAAE;YAC5B;YACAI,cAAc;YACdL,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;YACpBK,SAAS;gBACP;oBACEN,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;oBACpBM,OAAO;gBACT;gBACA;oBACEP,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;oBACpBM,OAAO;gBACT;aACD;YACDL,UAAU;QACZ;QACA;YACEJ,MAAM;YACNC,MAAM;YACNI,OAAO;gBACLK,WAAW,CAAC,EAAEC,QAAQ,EAAE,GAAKA,aAAa;YAC5C;YACAT,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;YACpBC,UAAU;QACZ;QACA;YACEJ,MAAM;YACNK,OAAO;gBACLK,WAAW,CAAC,EAAEC,QAAQ,EAAE;oBACtB,OAAOA,aAAa;gBACtB;YACF;YACA,6HAA6H;YAC7HV,MAAM;YACNW,eAAe,CAAC,EAAEC,UAAU,EAAEC,IAAI,EAAE;gBAClC,MAAMC,SAAShB,OAAOiB,WAAW,CAACC,IAAI,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASL,YAAYR,KAAK,CAACU,MAAM;gBACtF,IAAI,OAAOA,WAAW,cAAcA,OAAO;oBAAED;gBAAK,IAAsB;oBACtE,OAAO;gBACT;YACF;YACAZ,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;YACpBU,YAAYd,OAAOiB,WAAW,CAC3BG,MAAM,CAAC,CAAC,EAAEd,OAAO,EAAEe,kBAAkB,EAAEL,MAAM,EAAE,EAAE;gBAChD,IAAI,OAAOA,WAAW,cAAcA,QAAQ;oBAC1C,OAAO;gBACT;gBACA,OAAOK;YACT,GACCC,GAAG,CAAC,CAAC,EAAEH,IAAI,EAAE,GAAKA;YACrBd,UAAU;QACZ;QACA;YACEJ,MAAM;YACNC,MAAM;YACNC,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;QACtB;KACD,CAAA"}
1
+ {"version":3,"sources":["../../../../../src/field/elements/link/LinkDrawer/baseFields.ts"],"sourcesContent":["import type { Field, SanitizedConfig, User } from 'payload'\n\nexport const getBaseFields = (config: SanitizedConfig): Field[] => [\n {\n name: 'text',\n type: 'text',\n label: ({ t }) => t('fields:textToDisplay'),\n required: true,\n },\n {\n name: 'linkType',\n type: 'radio',\n admin: {\n description: ({ t }) => t('fields:chooseBetweenCustomTextOrDocument'),\n },\n defaultValue: 'custom',\n label: ({ t }) => t('fields:linkType'),\n options: [\n {\n label: ({ t }) => t('fields:customURL'),\n value: 'custom',\n },\n {\n label: ({ t }) => t('fields:internalLink'),\n value: 'internal',\n },\n ],\n required: true,\n },\n {\n name: 'url',\n type: 'text',\n admin: {\n condition: ({ linkType }) => linkType !== 'internal',\n },\n label: ({ t }) => t('fields:enterURL'),\n required: true,\n },\n {\n name: 'doc',\n admin: {\n condition: ({ linkType }) => {\n return linkType === 'internal'\n },\n },\n // when admin.hidden is a function we need to dynamically call hidden with the user to know if the collection should be shown\n type: 'relationship',\n filterOptions: ({ relationTo, user }) => {\n const hidden = config.collections.find(({ slug }) => slug === relationTo).admin.hidden\n if (typeof hidden === 'function' && hidden({ user } as { user: User })) {\n return false\n }\n },\n label: ({ t }) => t('fields:chooseDocumentToLink'),\n relationTo: config.collections\n .filter(({ admin: { enableRichTextLink, hidden } }) => {\n if (typeof hidden !== 'function' && hidden) {\n return false\n }\n return enableRichTextLink\n })\n .map(({ slug }) => slug),\n required: true,\n },\n {\n name: 'newTab',\n type: 'checkbox',\n label: ({ t }) => t('fields:openInNewTab'),\n },\n]\n"],"names":["getBaseFields","config","name","type","label","t","required","admin","description","defaultValue","options","value","condition","linkType","filterOptions","relationTo","user","hidden","collections","find","slug","filter","enableRichTextLink","map"],"mappings":"AAEA,OAAO,MAAMA,gBAAgB,CAACC,SAAqC;QACjE;YACEC,MAAM;YACNC,MAAM;YACNC,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;YACpBC,UAAU;QACZ;QACA;YACEJ,MAAM;YACNC,MAAM;YACNI,OAAO;gBACLC,aAAa,CAAC,EAAEH,CAAC,EAAE,GAAKA,EAAE;YAC5B;YACAI,cAAc;YACdL,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;YACpBK,SAAS;gBACP;oBACEN,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;oBACpBM,OAAO;gBACT;gBACA;oBACEP,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;oBACpBM,OAAO;gBACT;aACD;YACDL,UAAU;QACZ;QACA;YACEJ,MAAM;YACNC,MAAM;YACNI,OAAO;gBACLK,WAAW,CAAC,EAAEC,QAAQ,EAAE,GAAKA,aAAa;YAC5C;YACAT,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;YACpBC,UAAU;QACZ;QACA;YACEJ,MAAM;YACNK,OAAO;gBACLK,WAAW,CAAC,EAAEC,QAAQ,EAAE;oBACtB,OAAOA,aAAa;gBACtB;YACF;YACA,6HAA6H;YAC7HV,MAAM;YACNW,eAAe,CAAC,EAAEC,UAAU,EAAEC,IAAI,EAAE;gBAClC,MAAMC,SAAShB,OAAOiB,WAAW,CAACC,IAAI,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASL,YAAYR,KAAK,CAACU,MAAM;gBACtF,IAAI,OAAOA,WAAW,cAAcA,OAAO;oBAAED;gBAAK,IAAsB;oBACtE,OAAO;gBACT;YACF;YACAZ,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;YACpBU,YAAYd,OAAOiB,WAAW,CAC3BG,MAAM,CAAC,CAAC,EAAEd,OAAO,EAAEe,kBAAkB,EAAEL,MAAM,EAAE,EAAE;gBAChD,IAAI,OAAOA,WAAW,cAAcA,QAAQ;oBAC1C,OAAO;gBACT;gBACA,OAAOK;YACT,GACCC,GAAG,CAAC,CAAC,EAAEH,IAAI,EAAE,GAAKA;YACrBd,UAAU;QACZ;QACA;YACEJ,MAAM;YACNC,MAAM;YACNC,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;QACtB;KACD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/field/elements/link/LinkDrawer/index.tsx"],"sourcesContent":["'use client'\n\nimport type { FormProps } from '@payloadcms/ui'\n\nimport {\n Drawer,\n Form,\n FormSubmit,\n RenderFields,\n useConfig,\n useDocumentInfo,\n useEditDepth,\n useFieldProps,\n useHotkey,\n useTranslation,\n} from '@payloadcms/ui'\nimport { getFormState } from '@payloadcms/ui/shared'\nimport React, { useCallback, useRef } from 'react'\n\nimport type { Props } from './types.js'\n\nimport { linkFieldsSchemaPath } from '../shared.js'\nimport './index.scss'\n\nconst baseClass = 'rich-text-link-edit-modal'\n\nexport const LinkDrawer: React.FC<Props> = ({\n drawerSlug,\n fieldMap,\n handleModalSubmit,\n initialState,\n}) => {\n const { t } = useTranslation()\n const { schemaPath } = useFieldProps()\n const fieldMapPath = `${schemaPath}.${linkFieldsSchemaPath}`\n const { id } = useDocumentInfo()\n const config = useConfig()\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n return await getFormState({\n apiRoute: config.routes.api,\n body: {\n id,\n formState: prevFormState,\n operation: 'update',\n schemaPath: fieldMapPath,\n },\n serverURL: config.serverURL,\n })\n },\n\n [config.routes.api, config.serverURL, fieldMapPath, id],\n )\n\n return (\n <Drawer className={baseClass} slug={drawerSlug} title={t('fields:editLink')}>\n <Form\n beforeSubmit={[onChange]}\n disableValidationOnSubmit\n initialState={initialState}\n onChange={[onChange]}\n onSubmit={handleModalSubmit}\n >\n <RenderFields fieldMap={fieldMap} forceRender path=\"\" readOnly={false} schemaPath=\"\" />\n <LinkSubmit />\n </Form>\n </Drawer>\n )\n}\n\nconst LinkSubmit: React.FC = () => {\n const { t } = useTranslation()\n const ref = useRef<HTMLButtonElement>(null)\n const editDepth = useEditDepth()\n\n useHotkey({ cmdCtrlKey: true, editDepth, keyCodes: ['s'] }, (e) => {\n e.preventDefault()\n e.stopPropagation()\n if (ref?.current) {\n ref.current.click()\n }\n })\n\n return <FormSubmit ref={ref}>{t('general:submit')}</FormSubmit>\n}\n"],"names":["Drawer","Form","FormSubmit","RenderFields","useConfig","useDocumentInfo","useEditDepth","useFieldProps","useHotkey","useTranslation","getFormState","React","useCallback","useRef","linkFieldsSchemaPath","baseClass","LinkDrawer","drawerSlug","fieldMap","handleModalSubmit","initialState","t","schemaPath","fieldMapPath","id","config","onChange","formState","prevFormState","apiRoute","routes","api","body","operation","serverURL","className","slug","title","beforeSubmit","disableValidationOnSubmit","onSubmit","forceRender","path","readOnly","LinkSubmit","ref","editDepth","cmdCtrlKey","keyCodes","e","preventDefault","stopPropagation","current","click"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;AAIA,SACEA,MAAM,EACNC,IAAI,EACJC,UAAU,EACVC,YAAY,EACZC,SAAS,EACTC,eAAe,EACfC,YAAY,EACZC,aAAa,EACbC,SAAS,EACTC,cAAc,QACT,iBAAgB;AACvB,SAASC,YAAY,QAAQ,wBAAuB;AACpD,OAAOC,SAASC,WAAW,EAAEC,MAAM,QAAQ,QAAO;AAIlD,SAASC,oBAAoB,QAAQ,eAAc;AACnD,OAAO,eAAc;AAErB,MAAMC,YAAY;AAElB,OAAO,MAAMC,aAA8B,CAAC,EAC1CC,UAAU,EACVC,QAAQ,EACRC,iBAAiB,EACjBC,YAAY,EACb;IACC,MAAM,EAAEC,CAAC,EAAE,GAAGZ;IACd,MAAM,EAAEa,UAAU,EAAE,GAAGf;IACvB,MAAMgB,eAAe,CAAC,EAAED,WAAW,CAAC,EAAER,qBAAqB,CAAC;IAC5D,MAAM,EAAEU,EAAE,EAAE,GAAGnB;IACf,MAAMoB,SAASrB;IAEf,MAAMsB,WAAqCd,YACzC,OAAO,EAAEe,WAAWC,aAAa,EAAE;QACjC,OAAO,MAAMlB,aAAa;YACxBmB,UAAUJ,OAAOK,MAAM,CAACC,GAAG;YAC3BC,MAAM;gBACJR;gBACAG,WAAWC;gBACXK,WAAW;gBACXX,YAAYC;YACd;YACAW,WAAWT,OAAOS,SAAS;QAC7B;IACF,GAEA;QAACT,OAAOK,MAAM,CAACC,GAAG;QAAEN,OAAOS,SAAS;QAAEX;QAAcC;KAAG;IAGzD,qBACE,KAACxB;QAAOmC,WAAWpB;QAAWqB,MAAMnB;QAAYoB,OAAOhB,EAAE;kBACvD,cAAA,MAACpB;YACCqC,cAAc;gBAACZ;aAAS;YACxBa,yBAAyB;YACzBnB,cAAcA;YACdM,UAAU;gBAACA;aAAS;YACpBc,UAAUrB;;8BAEV,KAAChB;oBAAae,UAAUA;oBAAUuB,WAAW;oBAACC,MAAK;oBAAGC,UAAU;oBAAOrB,YAAW;;8BAClF,KAACsB;;;;AAIT,EAAC;AAED,MAAMA,aAAuB;IAC3B,MAAM,EAAEvB,CAAC,EAAE,GAAGZ;IACd,MAAMoC,MAAMhC,OAA0B;IACtC,MAAMiC,YAAYxC;IAElBE,UAAU;QAAEuC,YAAY;QAAMD;QAAWE,UAAU;YAAC;SAAI;IAAC,GAAG,CAACC;QAC3DA,EAAEC,cAAc;QAChBD,EAAEE,eAAe;QACjB,IAAIN,KAAKO,SAAS;YAChBP,IAAIO,OAAO,CAACC,KAAK;QACnB;IACF;IAEA,qBAAO,KAACnD;QAAW2C,KAAKA;kBAAMxB,EAAE;;AAClC"}
1
+ {"version":3,"sources":["../../../../../src/field/elements/link/LinkDrawer/index.tsx"],"sourcesContent":["'use client'\n\nimport type { FormProps } from '@payloadcms/ui'\n\nimport {\n Drawer,\n Form,\n FormSubmit,\n RenderFields,\n useConfig,\n useDocumentInfo,\n useEditDepth,\n useFieldProps,\n useHotkey,\n useTranslation,\n} from '@payloadcms/ui'\nimport { getFormState } from '@payloadcms/ui/shared'\nimport React, { useCallback, useRef } from 'react'\n\nimport type { Props } from './types.js'\n\nimport { linkFieldsSchemaPath } from '../shared.js'\nimport './index.scss'\n\nconst baseClass = 'rich-text-link-edit-modal'\n\nexport const LinkDrawer: React.FC<Props> = ({\n drawerSlug,\n fieldMap,\n handleModalSubmit,\n initialState,\n}) => {\n const { t } = useTranslation()\n const { schemaPath } = useFieldProps()\n const fieldMapPath = `${schemaPath}.${linkFieldsSchemaPath}`\n const { id } = useDocumentInfo()\n const config = useConfig()\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n return await getFormState({\n apiRoute: config.routes.api,\n body: {\n id,\n formState: prevFormState,\n operation: 'update',\n schemaPath: fieldMapPath,\n },\n serverURL: config.serverURL,\n })\n },\n\n [config.routes.api, config.serverURL, fieldMapPath, id],\n )\n\n return (\n <Drawer className={baseClass} slug={drawerSlug} title={t('fields:editLink')}>\n <Form\n beforeSubmit={[onChange]}\n disableValidationOnSubmit\n initialState={initialState}\n onChange={[onChange]}\n onSubmit={handleModalSubmit}\n >\n <RenderFields fieldMap={fieldMap} forceRender path=\"\" readOnly={false} schemaPath=\"\" />\n <LinkSubmit />\n </Form>\n </Drawer>\n )\n}\n\nconst LinkSubmit: React.FC = () => {\n const { t } = useTranslation()\n const ref = useRef<HTMLButtonElement>(null)\n const editDepth = useEditDepth()\n\n useHotkey({ cmdCtrlKey: true, editDepth, keyCodes: ['s'] }, (e) => {\n e.preventDefault()\n e.stopPropagation()\n if (ref?.current) {\n ref.current.click()\n }\n })\n\n return <FormSubmit ref={ref}>{t('general:submit')}</FormSubmit>\n}\n"],"names":["Drawer","Form","FormSubmit","RenderFields","useConfig","useDocumentInfo","useEditDepth","useFieldProps","useHotkey","useTranslation","getFormState","React","useCallback","useRef","linkFieldsSchemaPath","baseClass","LinkDrawer","drawerSlug","fieldMap","handleModalSubmit","initialState","t","schemaPath","fieldMapPath","id","config","onChange","formState","prevFormState","apiRoute","routes","api","body","operation","serverURL","className","slug","title","beforeSubmit","disableValidationOnSubmit","onSubmit","forceRender","path","readOnly","LinkSubmit","ref","editDepth","cmdCtrlKey","keyCodes","e","preventDefault","stopPropagation","current","click"],"mappings":"AAAA;;AAIA,SACEA,MAAM,EACNC,IAAI,EACJC,UAAU,EACVC,YAAY,EACZC,SAAS,EACTC,eAAe,EACfC,YAAY,EACZC,aAAa,EACbC,SAAS,EACTC,cAAc,QACT,iBAAgB;AACvB,SAASC,YAAY,QAAQ,wBAAuB;AACpD,OAAOC,SAASC,WAAW,EAAEC,MAAM,QAAQ,QAAO;AAIlD,SAASC,oBAAoB,QAAQ,eAAc;AACnD,OAAO,eAAc;AAErB,MAAMC,YAAY;AAElB,OAAO,MAAMC,aAA8B,CAAC,EAC1CC,UAAU,EACVC,QAAQ,EACRC,iBAAiB,EACjBC,YAAY,EACb;IACC,MAAM,EAAEC,CAAC,EAAE,GAAGZ;IACd,MAAM,EAAEa,UAAU,EAAE,GAAGf;IACvB,MAAMgB,eAAe,CAAC,EAAED,WAAW,CAAC,EAAER,qBAAqB,CAAC;IAC5D,MAAM,EAAEU,EAAE,EAAE,GAAGnB;IACf,MAAMoB,SAASrB;IAEf,MAAMsB,WAAqCd,YACzC,OAAO,EAAEe,WAAWC,aAAa,EAAE;QACjC,OAAO,MAAMlB,aAAa;YACxBmB,UAAUJ,OAAOK,MAAM,CAACC,GAAG;YAC3BC,MAAM;gBACJR;gBACAG,WAAWC;gBACXK,WAAW;gBACXX,YAAYC;YACd;YACAW,WAAWT,OAAOS,SAAS;QAC7B;IACF,GAEA;QAACT,OAAOK,MAAM,CAACC,GAAG;QAAEN,OAAOS,SAAS;QAAEX;QAAcC;KAAG;IAGzD,qBACE,KAACxB;QAAOmC,WAAWpB;QAAWqB,MAAMnB;QAAYoB,OAAOhB,EAAE;kBACvD,cAAA,MAACpB;YACCqC,cAAc;gBAACZ;aAAS;YACxBa,yBAAyB;YACzBnB,cAAcA;YACdM,UAAU;gBAACA;aAAS;YACpBc,UAAUrB;;8BAEV,KAAChB;oBAAae,UAAUA;oBAAUuB,WAAW;oBAACC,MAAK;oBAAGC,UAAU;oBAAOrB,YAAW;;8BAClF,KAACsB;;;;AAIT,EAAC;AAED,MAAMA,aAAuB;IAC3B,MAAM,EAAEvB,CAAC,EAAE,GAAGZ;IACd,MAAMoC,MAAMhC,OAA0B;IACtC,MAAMiC,YAAYxC;IAElBE,UAAU;QAAEuC,YAAY;QAAMD;QAAWE,UAAU;YAAC;SAAI;IAAC,GAAG,CAACC;QAC3DA,EAAEC,cAAc;QAChBD,EAAEE,eAAe;QACjB,IAAIN,KAAKO,SAAS;YAChBP,IAAIO,OAAO,CAACC,KAAK;QACnB;IACF;IAEA,qBAAO,KAACnD;QAAW2C,KAAKA;kBAAMxB,EAAE;;AAClC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/field/elements/link/LinkDrawer/types.ts"],"sourcesContent":["import type { FieldMap } from '@payloadcms/ui'\nimport type { FormState } from 'payload'\n\nexport type Props = {\n drawerSlug: string\n fieldMap: FieldMap\n handleClose: () => void\n handleModalSubmit: (fields: FormState, data: Record<string, unknown>) => void\n initialState?: FormState\n}\n"],"names":[],"rangeMappings":"","mappings":"AAGA,WAMC"}
1
+ {"version":3,"sources":["../../../../../src/field/elements/link/LinkDrawer/types.ts"],"sourcesContent":["import type { FieldMap } from '@payloadcms/ui'\nimport type { FormState } from 'payload'\n\nexport type Props = {\n drawerSlug: string\n fieldMap: FieldMap\n handleClose: () => void\n handleModalSubmit: (fields: FormState, data: Record<string, unknown>) => void\n initialState?: FormState\n}\n"],"names":[],"mappings":"AAGA,WAMC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/elements/link/WithLinks.tsx"],"sourcesContent":["'use client'\n\nimport type React from 'react'\nimport type { Editor } from 'slate'\n\nimport { useSlatePlugin } from '../../../utilities/useSlatePlugin.js'\n\nconst plugin = (incomingEditor: Editor): Editor => {\n const editor = incomingEditor\n const { isInline } = editor\n\n editor.isInline = (element) => {\n if (element.type === 'link') {\n return true\n }\n\n return isInline(element)\n }\n\n return editor\n}\n\nexport const WithLinks: React.FC = () => {\n useSlatePlugin('withLinks', plugin)\n return null\n}\n"],"names":["useSlatePlugin","plugin","incomingEditor","editor","isInline","element","type","WithLinks"],"rangeMappings":";;;;;;;;;;;;;;;;","mappings":"AAAA;AAKA,SAASA,cAAc,QAAQ,uCAAsC;AAErE,MAAMC,SAAS,CAACC;IACd,MAAMC,SAASD;IACf,MAAM,EAAEE,QAAQ,EAAE,GAAGD;IAErBA,OAAOC,QAAQ,GAAG,CAACC;QACjB,IAAIA,QAAQC,IAAI,KAAK,QAAQ;YAC3B,OAAO;QACT;QAEA,OAAOF,SAASC;IAClB;IAEA,OAAOF;AACT;AAEA,OAAO,MAAMI,YAAsB;IACjCP,eAAe,aAAaC;IAC5B,OAAO;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../../src/field/elements/link/WithLinks.tsx"],"sourcesContent":["'use client'\n\nimport type React from 'react'\nimport type { Editor } from 'slate'\n\nimport { useSlatePlugin } from '../../../utilities/useSlatePlugin.js'\n\nconst plugin = (incomingEditor: Editor): Editor => {\n const editor = incomingEditor\n const { isInline } = editor\n\n editor.isInline = (element) => {\n if (element.type === 'link') {\n return true\n }\n\n return isInline(element)\n }\n\n return editor\n}\n\nexport const WithLinks: React.FC = () => {\n useSlatePlugin('withLinks', plugin)\n return null\n}\n"],"names":["useSlatePlugin","plugin","incomingEditor","editor","isInline","element","type","WithLinks"],"mappings":"AAAA;AAKA,SAASA,cAAc,QAAQ,uCAAsC;AAErE,MAAMC,SAAS,CAACC;IACd,MAAMC,SAASD;IACf,MAAM,EAAEE,QAAQ,EAAE,GAAGD;IAErBA,OAAOC,QAAQ,GAAG,CAACC;QACjB,IAAIA,QAAQC,IAAI,KAAK,QAAQ;YAC3B,OAAO;QACT;QAEA,OAAOF,SAASC;IAClB;IAEA,OAAOF;AACT;AAEA,OAAO,MAAMI,YAAsB;IACjCP,eAAe,aAAaC;IAC5B,OAAO;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/elements/link/index.ts"],"sourcesContent":["import type { RichTextCustomElement } from '../../../types.js'\n\nimport { LinkButton } from './Button/index.js'\nimport { LinkElement } from './Element/index.js'\nimport { WithLinks } from './WithLinks.js'\n\nexport const link: RichTextCustomElement = {\n name: 'link',\n Button: LinkButton,\n Element: LinkElement,\n plugins: [WithLinks],\n}\n"],"names":["LinkButton","LinkElement","WithLinks","link","name","Button","Element","plugins"],"rangeMappings":";;;;;;;;;;","mappings":"AAEA,SAASA,UAAU,QAAQ,oBAAmB;AAC9C,SAASC,WAAW,QAAQ,qBAAoB;AAChD,SAASC,SAAS,QAAQ,iBAAgB;AAE1C,OAAO,MAAMC,OAA8B;IACzCC,MAAM;IACNC,QAAQL;IACRM,SAASL;IACTM,SAAS;QAACL;KAAU;AACtB,EAAC"}
1
+ {"version":3,"sources":["../../../../src/field/elements/link/index.ts"],"sourcesContent":["import type { RichTextCustomElement } from '../../../types.js'\n\nimport { LinkButton } from './Button/index.js'\nimport { LinkElement } from './Element/index.js'\nimport { WithLinks } from './WithLinks.js'\n\nexport const link: RichTextCustomElement = {\n name: 'link',\n Button: LinkButton,\n Element: LinkElement,\n plugins: [WithLinks],\n}\n"],"names":["LinkButton","LinkElement","WithLinks","link","name","Button","Element","plugins"],"mappings":"AAEA,SAASA,UAAU,QAAQ,oBAAmB;AAC9C,SAASC,WAAW,QAAQ,qBAAoB;AAChD,SAASC,SAAS,QAAQ,iBAAgB;AAE1C,OAAO,MAAMC,OAA8B;IACzCC,MAAM;IACNC,QAAQL;IACRM,SAASL;IACTM,SAAS;QAACL;KAAU;AACtB,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/elements/link/shared.ts"],"sourcesContent":["export const modalSlug = 'rich-text-link-modal'\nexport const linkFieldsSchemaPath = 'link.fields'\n"],"names":["modalSlug","linkFieldsSchemaPath"],"rangeMappings":";","mappings":"AAAA,OAAO,MAAMA,YAAY,uBAAsB;AAC/C,OAAO,MAAMC,uBAAuB,cAAa"}
1
+ {"version":3,"sources":["../../../../src/field/elements/link/shared.ts"],"sourcesContent":["export const modalSlug = 'rich-text-link-modal'\nexport const linkFieldsSchemaPath = 'link.fields'\n"],"names":["modalSlug","linkFieldsSchemaPath"],"mappings":"AAAA,OAAO,MAAMA,YAAY,uBAAsB;AAC/C,OAAO,MAAMC,uBAAuB,cAAa"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/elements/link/types.ts"],"sourcesContent":["import type { Element } from 'slate'\n\nexport type LinkElementType = Element & {\n doc: Record<string, unknown>\n fields: Record<string, unknown>\n linkType: string\n newTab: boolean\n url: string\n}\n"],"names":[],"rangeMappings":"","mappings":"AAEA,WAMC"}
1
+ {"version":3,"sources":["../../../../src/field/elements/link/types.ts"],"sourcesContent":["import type { Element } from 'slate'\n\nexport type LinkElementType = Element & {\n doc: Record<string, unknown>\n fields: Record<string, unknown>\n linkType: string\n newTab: boolean\n url: string\n}\n"],"names":[],"mappings":"AAEA,WAMC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/elements/link/utilities.tsx"],"sourcesContent":["import type { Field, SanitizedConfig } from 'payload'\nimport type { Editor } from 'slate'\n\nimport { Element, Range, Transforms } from 'slate'\n\nimport { getBaseFields } from './LinkDrawer/baseFields.js'\n\nexport const unwrapLink = (editor: Editor): void => {\n Transforms.unwrapNodes(editor, { match: (n) => Element.isElement(n) && n.type === 'link' })\n}\n\nexport const wrapLink = (editor: Editor): void => {\n const { selection } = editor\n const isCollapsed = selection && Range.isCollapsed(selection)\n\n const link = {\n type: 'link',\n children: isCollapsed ? [{ text: '' }] : [],\n newTab: false,\n url: undefined,\n }\n\n if (isCollapsed) {\n Transforms.insertNodes(editor, link)\n } else {\n Transforms.wrapNodes(editor, link, { split: true })\n Transforms.collapse(editor, { edge: 'end' })\n }\n}\n\n/**\n * This function is run to enrich the basefields which every link has with potential, custom user-added fields.\n */\nexport function transformExtraFields(\n customFieldSchema:\n | ((args: { config: SanitizedConfig; defaultFields: Field[] }) => Field[])\n | Field[],\n config: SanitizedConfig,\n): Field[] {\n const baseFields: Field[] = getBaseFields(config)\n\n const fields =\n typeof customFieldSchema === 'function'\n ? customFieldSchema({ config, defaultFields: baseFields })\n : baseFields\n\n // Wrap fields which are not part of the base schema in a group named 'fields' - otherwise they will be rendered but not saved\n const extraFields = []\n for (let i = fields.length - 1; i >= 0; i--) {\n const field = fields[i]\n\n if ('name' in field) {\n if (\n !baseFields.find((baseField) => !('name' in baseField) || baseField.name === field.name)\n ) {\n if (field.name !== 'fields' && field.type !== 'group') {\n extraFields.push(field)\n // Remove from fields from now, as they need to be part of the fields group below\n fields.splice(fields.indexOf(field), 1)\n }\n }\n }\n }\n\n if ((Array.isArray(customFieldSchema) && customFieldSchema?.length) || extraFields?.length) {\n fields.push({\n name: 'fields',\n type: 'group',\n admin: {\n style: {\n borderBottom: 0,\n borderTop: 0,\n margin: 0,\n padding: 0,\n },\n },\n fields: Array.isArray(customFieldSchema)\n ? customFieldSchema.concat(extraFields)\n : extraFields,\n })\n }\n return fields\n}\n"],"names":["Element","Range","Transforms","getBaseFields","unwrapLink","editor","unwrapNodes","match","n","isElement","type","wrapLink","selection","isCollapsed","link","children","text","newTab","url","undefined","insertNodes","wrapNodes","split","collapse","edge","transformExtraFields","customFieldSchema","config","baseFields","fields","defaultFields","extraFields","i","length","field","find","baseField","name","push","splice","indexOf","Array","isArray","admin","style","borderBottom","borderTop","margin","padding","concat"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAGA,SAASA,OAAO,EAAEC,KAAK,EAAEC,UAAU,QAAQ,QAAO;AAElD,SAASC,aAAa,QAAQ,6BAA4B;AAE1D,OAAO,MAAMC,aAAa,CAACC;IACzBH,WAAWI,WAAW,CAACD,QAAQ;QAAEE,OAAO,CAACC,IAAMR,QAAQS,SAAS,CAACD,MAAMA,EAAEE,IAAI,KAAK;IAAO;AAC3F,EAAC;AAED,OAAO,MAAMC,WAAW,CAACN;IACvB,MAAM,EAAEO,SAAS,EAAE,GAAGP;IACtB,MAAMQ,cAAcD,aAAaX,MAAMY,WAAW,CAACD;IAEnD,MAAME,OAAO;QACXJ,MAAM;QACNK,UAAUF,cAAc;YAAC;gBAAEG,MAAM;YAAG;SAAE,GAAG,EAAE;QAC3CC,QAAQ;QACRC,KAAKC;IACP;IAEA,IAAIN,aAAa;QACfX,WAAWkB,WAAW,CAACf,QAAQS;IACjC,OAAO;QACLZ,WAAWmB,SAAS,CAAChB,QAAQS,MAAM;YAAEQ,OAAO;QAAK;QACjDpB,WAAWqB,QAAQ,CAAClB,QAAQ;YAAEmB,MAAM;QAAM;IAC5C;AACF,EAAC;AAED;;CAEC,GACD,OAAO,SAASC,qBACdC,iBAEW,EACXC,MAAuB;IAEvB,MAAMC,aAAsBzB,cAAcwB;IAE1C,MAAME,SACJ,OAAOH,sBAAsB,aACzBA,kBAAkB;QAAEC;QAAQG,eAAeF;IAAW,KACtDA;IAEN,8HAA8H;IAC9H,MAAMG,cAAc,EAAE;IACtB,IAAK,IAAIC,IAAIH,OAAOI,MAAM,GAAG,GAAGD,KAAK,GAAGA,IAAK;QAC3C,MAAME,QAAQL,MAAM,CAACG,EAAE;QAEvB,IAAI,UAAUE,OAAO;YACnB,IACE,CAACN,WAAWO,IAAI,CAAC,CAACC,YAAc,CAAE,CAAA,UAAUA,SAAQ,KAAMA,UAAUC,IAAI,KAAKH,MAAMG,IAAI,GACvF;gBACA,IAAIH,MAAMG,IAAI,KAAK,YAAYH,MAAMxB,IAAI,KAAK,SAAS;oBACrDqB,YAAYO,IAAI,CAACJ;oBACjB,iFAAiF;oBACjFL,OAAOU,MAAM,CAACV,OAAOW,OAAO,CAACN,QAAQ;gBACvC;YACF;QACF;IACF;IAEA,IAAI,AAACO,MAAMC,OAAO,CAAChB,sBAAsBA,mBAAmBO,UAAWF,aAAaE,QAAQ;QAC1FJ,OAAOS,IAAI,CAAC;YACVD,MAAM;YACN3B,MAAM;YACNiC,OAAO;gBACLC,OAAO;oBACLC,cAAc;oBACdC,WAAW;oBACXC,QAAQ;oBACRC,SAAS;gBACX;YACF;YACAnB,QAAQY,MAAMC,OAAO,CAAChB,qBAClBA,kBAAkBuB,MAAM,CAAClB,eACzBA;QACN;IACF;IACA,OAAOF;AACT"}
1
+ {"version":3,"sources":["../../../../src/field/elements/link/utilities.tsx"],"sourcesContent":["import type { Field, SanitizedConfig } from 'payload'\nimport type { Editor } from 'slate'\n\nimport { Element, Range, Transforms } from 'slate'\n\nimport { getBaseFields } from './LinkDrawer/baseFields.js'\n\nexport const unwrapLink = (editor: Editor): void => {\n Transforms.unwrapNodes(editor, { match: (n) => Element.isElement(n) && n.type === 'link' })\n}\n\nexport const wrapLink = (editor: Editor): void => {\n const { selection } = editor\n const isCollapsed = selection && Range.isCollapsed(selection)\n\n const link = {\n type: 'link',\n children: isCollapsed ? [{ text: '' }] : [],\n newTab: false,\n url: undefined,\n }\n\n if (isCollapsed) {\n Transforms.insertNodes(editor, link)\n } else {\n Transforms.wrapNodes(editor, link, { split: true })\n Transforms.collapse(editor, { edge: 'end' })\n }\n}\n\n/**\n * This function is run to enrich the basefields which every link has with potential, custom user-added fields.\n */\nexport function transformExtraFields(\n customFieldSchema:\n | ((args: { config: SanitizedConfig; defaultFields: Field[] }) => Field[])\n | Field[],\n config: SanitizedConfig,\n): Field[] {\n const baseFields: Field[] = getBaseFields(config)\n\n const fields =\n typeof customFieldSchema === 'function'\n ? customFieldSchema({ config, defaultFields: baseFields })\n : baseFields\n\n // Wrap fields which are not part of the base schema in a group named 'fields' - otherwise they will be rendered but not saved\n const extraFields = []\n for (let i = fields.length - 1; i >= 0; i--) {\n const field = fields[i]\n\n if ('name' in field) {\n if (\n !baseFields.find((baseField) => !('name' in baseField) || baseField.name === field.name)\n ) {\n if (field.name !== 'fields' && field.type !== 'group') {\n extraFields.push(field)\n // Remove from fields from now, as they need to be part of the fields group below\n fields.splice(fields.indexOf(field), 1)\n }\n }\n }\n }\n\n if ((Array.isArray(customFieldSchema) && customFieldSchema?.length) || extraFields?.length) {\n fields.push({\n name: 'fields',\n type: 'group',\n admin: {\n style: {\n borderBottom: 0,\n borderTop: 0,\n margin: 0,\n padding: 0,\n },\n },\n fields: Array.isArray(customFieldSchema)\n ? customFieldSchema.concat(extraFields)\n : extraFields,\n })\n }\n return fields\n}\n"],"names":["Element","Range","Transforms","getBaseFields","unwrapLink","editor","unwrapNodes","match","n","isElement","type","wrapLink","selection","isCollapsed","link","children","text","newTab","url","undefined","insertNodes","wrapNodes","split","collapse","edge","transformExtraFields","customFieldSchema","config","baseFields","fields","defaultFields","extraFields","i","length","field","find","baseField","name","push","splice","indexOf","Array","isArray","admin","style","borderBottom","borderTop","margin","padding","concat"],"mappings":"AAGA,SAASA,OAAO,EAAEC,KAAK,EAAEC,UAAU,QAAQ,QAAO;AAElD,SAASC,aAAa,QAAQ,6BAA4B;AAE1D,OAAO,MAAMC,aAAa,CAACC;IACzBH,WAAWI,WAAW,CAACD,QAAQ;QAAEE,OAAO,CAACC,IAAMR,QAAQS,SAAS,CAACD,MAAMA,EAAEE,IAAI,KAAK;IAAO;AAC3F,EAAC;AAED,OAAO,MAAMC,WAAW,CAACN;IACvB,MAAM,EAAEO,SAAS,EAAE,GAAGP;IACtB,MAAMQ,cAAcD,aAAaX,MAAMY,WAAW,CAACD;IAEnD,MAAME,OAAO;QACXJ,MAAM;QACNK,UAAUF,cAAc;YAAC;gBAAEG,MAAM;YAAG;SAAE,GAAG,EAAE;QAC3CC,QAAQ;QACRC,KAAKC;IACP;IAEA,IAAIN,aAAa;QACfX,WAAWkB,WAAW,CAACf,QAAQS;IACjC,OAAO;QACLZ,WAAWmB,SAAS,CAAChB,QAAQS,MAAM;YAAEQ,OAAO;QAAK;QACjDpB,WAAWqB,QAAQ,CAAClB,QAAQ;YAAEmB,MAAM;QAAM;IAC5C;AACF,EAAC;AAED;;CAEC,GACD,OAAO,SAASC,qBACdC,iBAEW,EACXC,MAAuB;IAEvB,MAAMC,aAAsBzB,cAAcwB;IAE1C,MAAME,SACJ,OAAOH,sBAAsB,aACzBA,kBAAkB;QAAEC;QAAQG,eAAeF;IAAW,KACtDA;IAEN,8HAA8H;IAC9H,MAAMG,cAAc,EAAE;IACtB,IAAK,IAAIC,IAAIH,OAAOI,MAAM,GAAG,GAAGD,KAAK,GAAGA,IAAK;QAC3C,MAAME,QAAQL,MAAM,CAACG,EAAE;QAEvB,IAAI,UAAUE,OAAO;YACnB,IACE,CAACN,WAAWO,IAAI,CAAC,CAACC,YAAc,CAAE,CAAA,UAAUA,SAAQ,KAAMA,UAAUC,IAAI,KAAKH,MAAMG,IAAI,GACvF;gBACA,IAAIH,MAAMG,IAAI,KAAK,YAAYH,MAAMxB,IAAI,KAAK,SAAS;oBACrDqB,YAAYO,IAAI,CAACJ;oBACjB,iFAAiF;oBACjFL,OAAOU,MAAM,CAACV,OAAOW,OAAO,CAACN,QAAQ;gBACvC;YACF;QACF;IACF;IAEA,IAAI,AAACO,MAAMC,OAAO,CAAChB,sBAAsBA,mBAAmBO,UAAWF,aAAaE,QAAQ;QAC1FJ,OAAOS,IAAI,CAAC;YACVD,MAAM;YACN3B,MAAM;YACNiC,OAAO;gBACLC,OAAO;oBACLC,cAAc;oBACdC,WAAW;oBACXC,QAAQ;oBACRC,SAAS;gBACX;YACF;YACAnB,QAAQY,MAAMC,OAAO,CAAChB,qBAClBA,kBAAkBuB,MAAM,CAAClB,eACzBA;QACN;IACF;IACA,OAAOF;AACT"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/field/elements/listTypes.tsx"],"sourcesContent":["export const listTypes = ['ol', 'ul']\n"],"names":["listTypes"],"rangeMappings":";;;","mappings":"AAAA,OAAO,MAAMA,YAAY;IAAC;IAAM;CAAK,CAAA"}
1
+ {"version":3,"sources":["../../../src/field/elements/listTypes.tsx"],"sourcesContent":["export const listTypes = ['ol', 'ul']\n"],"names":["listTypes"],"mappings":"AAAA,OAAO,MAAMA,YAAY;IAAC;IAAM;CAAK,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/elements/ol/OrderedList.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport { useElement } from '../../providers/ElementProvider.js'\nimport './index.scss'\n\nexport const OrderedList: React.FC = () => {\n const { attributes, children } = useElement()\n\n return (\n <ol className=\"rich-text-ol\" {...attributes}>\n {children}\n </ol>\n )\n}\n"],"names":["React","useElement","OrderedList","attributes","children","ol","className"],"rangeMappings":";;;;;;;;;;;;","mappings":"AAAA;;AAEA,OAAOA,WAAW,QAAO;AAEzB,SAASC,UAAU,QAAQ,qCAAoC;AAC/D,OAAO,eAAc;AAErB,OAAO,MAAMC,cAAwB;IACnC,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGH;IAEjC,qBACE,KAACI;QAAGC,WAAU;QAAgB,GAAGH,UAAU;kBACxCC;;AAGP,EAAC"}
1
+ {"version":3,"sources":["../../../../src/field/elements/ol/OrderedList.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport { useElement } from '../../providers/ElementProvider.js'\nimport './index.scss'\n\nexport const OrderedList: React.FC = () => {\n const { attributes, children } = useElement()\n\n return (\n <ol className=\"rich-text-ol\" {...attributes}>\n {children}\n </ol>\n )\n}\n"],"names":["React","useElement","OrderedList","attributes","children","ol","className"],"mappings":"AAAA;;AAEA,OAAOA,WAAW,QAAO;AAEzB,SAASC,UAAU,QAAQ,qCAAoC;AAC/D,OAAO,eAAc;AAErB,OAAO,MAAMC,cAAwB;IACnC,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGH;IAEjC,qBACE,KAACI;QAAGC,WAAU;QAAgB,GAAGH,UAAU;kBACxCC;;AAGP,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/elements/ol/index.tsx"],"sourcesContent":["import React from 'react'\n\nimport type { RichTextCustomElement } from '../../../types.js'\n\nimport { OLIcon } from '../../icons/OrderedList/index.js'\nimport { ListButton } from '../ListButton.js'\nimport { OrderedList } from './OrderedList.js'\n\nconst name = 'ol'\n\nexport const ol: RichTextCustomElement = {\n name,\n Button: () => (\n <ListButton format={name}>\n <OLIcon />\n </ListButton>\n ),\n Element: OrderedList,\n}\n"],"names":["React","OLIcon","ListButton","OrderedList","name","ol","Button","format","Element"],"rangeMappings":";;;;;;;;;;;;;","mappings":";AAAA,OAAOA,WAAW,QAAO;AAIzB,SAASC,MAAM,QAAQ,mCAAkC;AACzD,SAASC,UAAU,QAAQ,mBAAkB;AAC7C,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,MAAMC,OAAO;AAEb,OAAO,MAAMC,KAA4B;IACvCD;IACAE,QAAQ,kBACN,KAACJ;YAAWK,QAAQH;sBAClB,cAAA,KAACH;;IAGLO,SAASL;AACX,EAAC"}
1
+ {"version":3,"sources":["../../../../src/field/elements/ol/index.tsx"],"sourcesContent":["import React from 'react'\n\nimport type { RichTextCustomElement } from '../../../types.js'\n\nimport { OLIcon } from '../../icons/OrderedList/index.js'\nimport { ListButton } from '../ListButton.js'\nimport { OrderedList } from './OrderedList.js'\n\nconst name = 'ol'\n\nexport const ol: RichTextCustomElement = {\n name,\n Button: () => (\n <ListButton format={name}>\n <OLIcon />\n </ListButton>\n ),\n Element: OrderedList,\n}\n"],"names":["React","OLIcon","ListButton","OrderedList","name","ol","Button","format","Element"],"mappings":";AAAA,OAAOA,WAAW,QAAO;AAIzB,SAASC,MAAM,QAAQ,mCAAkC;AACzD,SAASC,UAAU,QAAQ,mBAAkB;AAC7C,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,MAAMC,OAAO;AAEb,OAAO,MAAMC,KAA4B;IACvCD;IACAE,QAAQ,kBACN,KAACJ;YAAWK,QAAQH;sBAClB,cAAA,KAACH;;IAGLO,SAASL;AACX,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/elements/relationship/Button/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAqD,MAAM,OAAO,CAAA;AAOzE,OAAO,cAAc,CAAA;AAmBrB,KAAK,KAAK,GAAG;IACX,sBAAsB,EAAE,MAAM,EAAE,CAAA;IAChC,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAmDD,eAAO,MAAM,MAAM,UAAW,KAAK,KAAG,MAAM,SAM3C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/elements/relationship/Button/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAqD,MAAM,OAAO,CAAA;AAOzE,OAAO,cAAc,CAAA;AAmBrB,KAAK,KAAK,GAAG;IACX,sBAAsB,EAAE,MAAM,EAAE,CAAA;IAChC,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAmDD,eAAO,MAAM,MAAM,UAAW,KAAK,KAAG,KAAK,CAAC,SAM3C,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/field/elements/relationship/Button/index.tsx"],"sourcesContent":["'use client'\n\nimport { useListDrawer, useTranslation } from '@payloadcms/ui'\nimport React, { Fragment, useCallback, useEffect, useState } from 'react'\nimport { ReactEditor, useSlate } from 'slate-react'\n\nimport { RelationshipIcon } from '../../../icons/Relationship/index.js'\nimport { ElementButton } from '../../Button.js'\nimport { EnabledRelationshipsCondition } from '../../EnabledRelationshipsCondition.js'\nimport { injectVoidElement } from '../../injectVoid.js'\nimport './index.scss'\n\nconst baseClass = 'relationship-rich-text-button'\n\nconst insertRelationship = (editor, { relationTo, value }) => {\n const text = { text: ' ' }\n\n const relationship = {\n type: 'relationship',\n children: [text],\n relationTo,\n value,\n }\n\n injectVoidElement(editor, relationship)\n\n ReactEditor.focus(editor)\n}\n\ntype Props = {\n enabledCollectionSlugs: string[]\n path: string\n}\nconst RelationshipButton: React.FC<Props> = ({ enabledCollectionSlugs }) => {\n const { t } = useTranslation()\n const editor = useSlate()\n const [selectedCollectionSlug, setSelectedCollectionSlug] = useState(\n () => enabledCollectionSlugs[0],\n )\n const [ListDrawer, ListDrawerToggler, { closeDrawer, isDrawerOpen }] = useListDrawer({\n collectionSlugs: enabledCollectionSlugs,\n selectedCollection: selectedCollectionSlug,\n })\n\n const onSelect = useCallback(\n ({ collectionSlug, docID }) => {\n insertRelationship(editor, {\n relationTo: collectionSlug,\n value: {\n id: docID,\n },\n })\n closeDrawer()\n },\n [editor, closeDrawer],\n )\n\n useEffect(() => {\n // always reset back to first option\n // TODO: this is not working, see the ListDrawer component\n setSelectedCollectionSlug(enabledCollectionSlugs[0])\n }, [isDrawerOpen, enabledCollectionSlugs])\n\n return (\n <Fragment>\n <ListDrawerToggler>\n <ElementButton\n className={baseClass}\n el=\"div\"\n format=\"relationship\"\n onClick={() => {\n // do nothing\n }}\n tooltip={t('fields:addRelationship')}\n >\n <RelationshipIcon />\n </ElementButton>\n </ListDrawerToggler>\n <ListDrawer onSelect={onSelect} />\n </Fragment>\n )\n}\n\nexport const Button = (props: Props): React.ReactNode => {\n return (\n <EnabledRelationshipsCondition {...props}>\n <RelationshipButton {...props} />\n </EnabledRelationshipsCondition>\n )\n}\n"],"names":["useListDrawer","useTranslation","React","Fragment","useCallback","useEffect","useState","ReactEditor","useSlate","RelationshipIcon","ElementButton","EnabledRelationshipsCondition","injectVoidElement","baseClass","insertRelationship","editor","relationTo","value","text","relationship","type","children","focus","RelationshipButton","enabledCollectionSlugs","t","selectedCollectionSlug","setSelectedCollectionSlug","ListDrawer","ListDrawerToggler","closeDrawer","isDrawerOpen","collectionSlugs","selectedCollection","onSelect","collectionSlug","docID","id","className","el","format","onClick","tooltip","Button","props"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;AAEA,SAASA,aAAa,EAAEC,cAAc,QAAQ,iBAAgB;AAC9D,OAAOC,SAASC,QAAQ,EAAEC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AACzE,SAASC,WAAW,EAAEC,QAAQ,QAAQ,cAAa;AAEnD,SAASC,gBAAgB,QAAQ,uCAAsC;AACvE,SAASC,aAAa,QAAQ,kBAAiB;AAC/C,SAASC,6BAA6B,QAAQ,yCAAwC;AACtF,SAASC,iBAAiB,QAAQ,sBAAqB;AACvD,OAAO,eAAc;AAErB,MAAMC,YAAY;AAElB,MAAMC,qBAAqB,CAACC,QAAQ,EAAEC,UAAU,EAAEC,KAAK,EAAE;IACvD,MAAMC,OAAO;QAAEA,MAAM;IAAI;IAEzB,MAAMC,eAAe;QACnBC,MAAM;QACNC,UAAU;YAACH;SAAK;QAChBF;QACAC;IACF;IAEAL,kBAAkBG,QAAQI;IAE1BZ,YAAYe,KAAK,CAACP;AACpB;AAMA,MAAMQ,qBAAsC,CAAC,EAAEC,sBAAsB,EAAE;IACrE,MAAM,EAAEC,CAAC,EAAE,GAAGxB;IACd,MAAMc,SAASP;IACf,MAAM,CAACkB,wBAAwBC,0BAA0B,GAAGrB,SAC1D,IAAMkB,sBAAsB,CAAC,EAAE;IAEjC,MAAM,CAACI,YAAYC,mBAAmB,EAAEC,WAAW,EAAEC,YAAY,EAAE,CAAC,GAAG/B,cAAc;QACnFgC,iBAAiBR;QACjBS,oBAAoBP;IACtB;IAEA,MAAMQ,WAAW9B,YACf,CAAC,EAAE+B,cAAc,EAAEC,KAAK,EAAE;QACxBtB,mBAAmBC,QAAQ;YACzBC,YAAYmB;YACZlB,OAAO;gBACLoB,IAAID;YACN;QACF;QACAN;IACF,GACA;QAACf;QAAQe;KAAY;IAGvBzB,UAAU;QACR,oCAAoC;QACpC,0DAA0D;QAC1DsB,0BAA0BH,sBAAsB,CAAC,EAAE;IACrD,GAAG;QAACO;QAAcP;KAAuB;IAEzC,qBACE,MAACrB;;0BACC,KAAC0B;0BACC,cAAA,KAACnB;oBACC4B,WAAWzB;oBACX0B,IAAG;oBACHC,QAAO;oBACPC,SAAS;oBACP,aAAa;oBACf;oBACAC,SAASjB,EAAE;8BAEX,cAAA,KAAChB;;;0BAGL,KAACmB;gBAAWM,UAAUA;;;;AAG5B;AAEA,OAAO,MAAMS,SAAS,CAACC;IACrB,qBACE,KAACjC;QAA+B,GAAGiC,KAAK;kBACtC,cAAA,KAACrB;YAAoB,GAAGqB,KAAK;;;AAGnC,EAAC"}
1
+ {"version":3,"sources":["../../../../../src/field/elements/relationship/Button/index.tsx"],"sourcesContent":["'use client'\n\nimport { useListDrawer, useTranslation } from '@payloadcms/ui'\nimport React, { Fragment, useCallback, useEffect, useState } from 'react'\nimport { ReactEditor, useSlate } from 'slate-react'\n\nimport { RelationshipIcon } from '../../../icons/Relationship/index.js'\nimport { ElementButton } from '../../Button.js'\nimport { EnabledRelationshipsCondition } from '../../EnabledRelationshipsCondition.js'\nimport { injectVoidElement } from '../../injectVoid.js'\nimport './index.scss'\n\nconst baseClass = 'relationship-rich-text-button'\n\nconst insertRelationship = (editor, { relationTo, value }) => {\n const text = { text: ' ' }\n\n const relationship = {\n type: 'relationship',\n children: [text],\n relationTo,\n value,\n }\n\n injectVoidElement(editor, relationship)\n\n ReactEditor.focus(editor)\n}\n\ntype Props = {\n enabledCollectionSlugs: string[]\n path: string\n}\nconst RelationshipButton: React.FC<Props> = ({ enabledCollectionSlugs }) => {\n const { t } = useTranslation()\n const editor = useSlate()\n const [selectedCollectionSlug, setSelectedCollectionSlug] = useState(\n () => enabledCollectionSlugs[0],\n )\n const [ListDrawer, ListDrawerToggler, { closeDrawer, isDrawerOpen }] = useListDrawer({\n collectionSlugs: enabledCollectionSlugs,\n selectedCollection: selectedCollectionSlug,\n })\n\n const onSelect = useCallback(\n ({ collectionSlug, docID }) => {\n insertRelationship(editor, {\n relationTo: collectionSlug,\n value: {\n id: docID,\n },\n })\n closeDrawer()\n },\n [editor, closeDrawer],\n )\n\n useEffect(() => {\n // always reset back to first option\n // TODO: this is not working, see the ListDrawer component\n setSelectedCollectionSlug(enabledCollectionSlugs[0])\n }, [isDrawerOpen, enabledCollectionSlugs])\n\n return (\n <Fragment>\n <ListDrawerToggler>\n <ElementButton\n className={baseClass}\n el=\"div\"\n format=\"relationship\"\n onClick={() => {\n // do nothing\n }}\n tooltip={t('fields:addRelationship')}\n >\n <RelationshipIcon />\n </ElementButton>\n </ListDrawerToggler>\n <ListDrawer onSelect={onSelect} />\n </Fragment>\n )\n}\n\nexport const Button = (props: Props): React.ReactNode => {\n return (\n <EnabledRelationshipsCondition {...props}>\n <RelationshipButton {...props} />\n </EnabledRelationshipsCondition>\n )\n}\n"],"names":["useListDrawer","useTranslation","React","Fragment","useCallback","useEffect","useState","ReactEditor","useSlate","RelationshipIcon","ElementButton","EnabledRelationshipsCondition","injectVoidElement","baseClass","insertRelationship","editor","relationTo","value","text","relationship","type","children","focus","RelationshipButton","enabledCollectionSlugs","t","selectedCollectionSlug","setSelectedCollectionSlug","ListDrawer","ListDrawerToggler","closeDrawer","isDrawerOpen","collectionSlugs","selectedCollection","onSelect","collectionSlug","docID","id","className","el","format","onClick","tooltip","Button","props"],"mappings":"AAAA;;AAEA,SAASA,aAAa,EAAEC,cAAc,QAAQ,iBAAgB;AAC9D,OAAOC,SAASC,QAAQ,EAAEC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AACzE,SAASC,WAAW,EAAEC,QAAQ,QAAQ,cAAa;AAEnD,SAASC,gBAAgB,QAAQ,uCAAsC;AACvE,SAASC,aAAa,QAAQ,kBAAiB;AAC/C,SAASC,6BAA6B,QAAQ,yCAAwC;AACtF,SAASC,iBAAiB,QAAQ,sBAAqB;AACvD,OAAO,eAAc;AAErB,MAAMC,YAAY;AAElB,MAAMC,qBAAqB,CAACC,QAAQ,EAAEC,UAAU,EAAEC,KAAK,EAAE;IACvD,MAAMC,OAAO;QAAEA,MAAM;IAAI;IAEzB,MAAMC,eAAe;QACnBC,MAAM;QACNC,UAAU;YAACH;SAAK;QAChBF;QACAC;IACF;IAEAL,kBAAkBG,QAAQI;IAE1BZ,YAAYe,KAAK,CAACP;AACpB;AAMA,MAAMQ,qBAAsC,CAAC,EAAEC,sBAAsB,EAAE;IACrE,MAAM,EAAEC,CAAC,EAAE,GAAGxB;IACd,MAAMc,SAASP;IACf,MAAM,CAACkB,wBAAwBC,0BAA0B,GAAGrB,SAC1D,IAAMkB,sBAAsB,CAAC,EAAE;IAEjC,MAAM,CAACI,YAAYC,mBAAmB,EAAEC,WAAW,EAAEC,YAAY,EAAE,CAAC,GAAG/B,cAAc;QACnFgC,iBAAiBR;QACjBS,oBAAoBP;IACtB;IAEA,MAAMQ,WAAW9B,YACf,CAAC,EAAE+B,cAAc,EAAEC,KAAK,EAAE;QACxBtB,mBAAmBC,QAAQ;YACzBC,YAAYmB;YACZlB,OAAO;gBACLoB,IAAID;YACN;QACF;QACAN;IACF,GACA;QAACf;QAAQe;KAAY;IAGvBzB,UAAU;QACR,oCAAoC;QACpC,0DAA0D;QAC1DsB,0BAA0BH,sBAAsB,CAAC,EAAE;IACrD,GAAG;QAACO;QAAcP;KAAuB;IAEzC,qBACE,MAACrB;;0BACC,KAAC0B;0BACC,cAAA,KAACnB;oBACC4B,WAAWzB;oBACX0B,IAAG;oBACHC,QAAO;oBACPC,SAAS;oBACP,aAAa;oBACf;oBACAC,SAASjB,EAAE;8BAEX,cAAA,KAAChB;;;0BAGL,KAACmB;gBAAWM,UAAUA;;;;AAG5B;AAEA,OAAO,MAAMS,SAAS,CAACC;IACrB,qBACE,KAACjC;QAA+B,GAAGiC,KAAK;kBACtC,cAAA,KAACrB;YAAoB,GAAGqB,KAAK;;;AAGnC,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/elements/relationship/Element/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAWnD,OAAO,KAA4C,MAAM,OAAO,CAAA;AAQhE,OAAO,cAAc,CAAA;AAQrB,KAAK,KAAK,GAAG,aAAa,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;CACnD,CAAA;AAkKD,eAAO,MAAM,OAAO,UAAW,KAAK,KAAG,MAAM,SAM5C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/elements/relationship/Element/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAWnD,OAAO,KAA4C,MAAM,OAAO,CAAA;AAQhE,OAAO,cAAc,CAAA;AAQrB,KAAK,KAAK,GAAG,aAAa,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;CACnD,CAAA;AAkKD,eAAO,MAAM,OAAO,UAAW,KAAK,KAAG,KAAK,CAAC,SAM5C,CAAA"}