@payloadcms/richtext-lexical 3.59.0-internal.5d79493 → 3.59.0-internal.7dedb09

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 (117) hide show
  1. package/dist/exports/client/Field-CJFETHA3.js +2 -0
  2. package/dist/exports/client/Field-CJFETHA3.js.map +7 -0
  3. package/dist/exports/client/RelationshipComponent-TSIENULZ.js +2 -0
  4. package/dist/exports/client/RelationshipComponent-TSIENULZ.js.map +7 -0
  5. package/dist/exports/client/bundled.css +1 -1
  6. package/dist/exports/client/chunk-BQCXN3B4.js +2 -0
  7. package/dist/exports/client/chunk-BQCXN3B4.js.map +7 -0
  8. package/dist/exports/client/chunk-XNERFY6G.js +2 -0
  9. package/dist/exports/client/chunk-XNERFY6G.js.map +7 -0
  10. package/dist/exports/client/component-CYFKY3IL.js +2 -0
  11. package/dist/exports/client/component-CYFKY3IL.js.map +7 -0
  12. package/dist/exports/client/componentInline-NGTRUSGB.js +2 -0
  13. package/dist/exports/client/index.js +24 -24
  14. package/dist/exports/client/index.js.map +3 -3
  15. package/dist/features/align/server/i18n.d.ts.map +1 -1
  16. package/dist/features/align/server/i18n.js +6 -0
  17. package/dist/features/align/server/i18n.js.map +1 -1
  18. package/dist/features/blockquote/server/i18n.d.ts.map +1 -1
  19. package/dist/features/blockquote/server/i18n.js +3 -0
  20. package/dist/features/blockquote/server/i18n.js.map +1 -1
  21. package/dist/features/blocks/client/component/BlockContent.d.ts.map +1 -1
  22. package/dist/features/blocks/client/component/BlockContent.js +4 -1
  23. package/dist/features/blocks/client/component/BlockContent.js.map +1 -1
  24. package/dist/features/blocks/client/component/index.d.ts.map +1 -1
  25. package/dist/features/blocks/client/component/index.js +15 -12
  26. package/dist/features/blocks/client/component/index.js.map +1 -1
  27. package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
  28. package/dist/features/blocks/client/componentInline/index.js +13 -10
  29. package/dist/features/blocks/client/componentInline/index.js.map +1 -1
  30. package/dist/features/blocks/premade/CodeBlock/Component/Block.d.ts +1 -1
  31. package/dist/features/blocks/premade/CodeBlock/Component/Block.d.ts.map +1 -1
  32. package/dist/features/blocks/premade/CodeBlock/Component/Block.js +20 -15
  33. package/dist/features/blocks/premade/CodeBlock/Component/Block.js.map +1 -1
  34. package/dist/features/blocks/server/i18n.d.ts.map +1 -1
  35. package/dist/features/blocks/server/i18n.js +47 -38
  36. package/dist/features/blocks/server/i18n.js.map +1 -1
  37. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts.map +1 -1
  38. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js +5 -3
  39. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js.map +1 -1
  40. package/dist/features/heading/server/i18n.d.ts.map +1 -1
  41. package/dist/features/heading/server/i18n.js +3 -0
  42. package/dist/features/heading/server/i18n.js.map +1 -1
  43. package/dist/features/horizontalRule/server/i18n.d.ts.map +1 -1
  44. package/dist/features/horizontalRule/server/i18n.js +3 -0
  45. package/dist/features/horizontalRule/server/i18n.js.map +1 -1
  46. package/dist/features/indent/server/i18n.d.ts.map +1 -1
  47. package/dist/features/indent/server/i18n.js +4 -0
  48. package/dist/features/indent/server/i18n.js.map +1 -1
  49. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
  50. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +3 -1
  51. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  52. package/dist/features/link/server/i18n.d.ts.map +1 -1
  53. package/dist/features/link/server/i18n.js +4 -0
  54. package/dist/features/link/server/i18n.js.map +1 -1
  55. package/dist/features/lists/checklist/server/i18n.d.ts.map +1 -1
  56. package/dist/features/lists/checklist/server/i18n.js +3 -0
  57. package/dist/features/lists/checklist/server/i18n.js.map +1 -1
  58. package/dist/features/lists/orderedList/server/i18n.d.ts.map +1 -1
  59. package/dist/features/lists/orderedList/server/i18n.js +3 -0
  60. package/dist/features/lists/orderedList/server/i18n.js.map +1 -1
  61. package/dist/features/lists/unorderedList/server/i18n.d.ts.map +1 -1
  62. package/dist/features/lists/unorderedList/server/i18n.js +3 -0
  63. package/dist/features/lists/unorderedList/server/i18n.js.map +1 -1
  64. package/dist/features/paragraph/server/i18n.d.ts.map +1 -1
  65. package/dist/features/paragraph/server/i18n.js +4 -0
  66. package/dist/features/paragraph/server/i18n.js.map +1 -1
  67. package/dist/features/relationship/client/components/RelationshipComponent.d.ts.map +1 -1
  68. package/dist/features/relationship/client/components/RelationshipComponent.js +5 -9
  69. package/dist/features/relationship/client/components/RelationshipComponent.js.map +1 -1
  70. package/dist/features/relationship/server/i18n.d.ts.map +1 -1
  71. package/dist/features/relationship/server/i18n.js +3 -0
  72. package/dist/features/relationship/server/i18n.js.map +1 -1
  73. package/dist/features/textState/i18n.d.ts.map +1 -1
  74. package/dist/features/textState/i18n.js +3 -0
  75. package/dist/features/textState/i18n.js.map +1 -1
  76. package/dist/features/toolbars/fixed/client/Toolbar/index.d.ts.map +1 -1
  77. package/dist/features/toolbars/fixed/client/Toolbar/index.js +7 -1
  78. package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
  79. package/dist/features/toolbars/inline/client/Toolbar/index.d.ts.map +1 -1
  80. package/dist/features/toolbars/inline/client/Toolbar/index.js +3 -1
  81. package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
  82. package/dist/features/upload/client/component/index.d.ts.map +1 -1
  83. package/dist/features/upload/client/component/index.js +6 -5
  84. package/dist/features/upload/client/component/index.js.map +1 -1
  85. package/dist/features/upload/server/i18n.d.ts.map +1 -1
  86. package/dist/features/upload/server/i18n.js +3 -0
  87. package/dist/features/upload/server/i18n.js.map +1 -1
  88. package/dist/field/bundled.css +1 -1
  89. package/dist/field/rscEntry.d.ts.map +1 -1
  90. package/dist/field/rscEntry.js +2 -0
  91. package/dist/field/rscEntry.js.map +1 -1
  92. package/dist/i18n.d.ts.map +1 -1
  93. package/dist/i18n.js +6 -0
  94. package/dist/i18n.js.map +1 -1
  95. package/dist/lexical/LexicalEditor.d.ts.map +1 -1
  96. package/dist/lexical/LexicalEditor.js +20 -26
  97. package/dist/lexical/LexicalEditor.js.map +1 -1
  98. package/dist/utilities/buildInitialState.d.ts +1 -0
  99. package/dist/utilities/buildInitialState.d.ts.map +1 -1
  100. package/dist/utilities/buildInitialState.js +1 -0
  101. package/dist/utilities/buildInitialState.js.map +1 -1
  102. package/dist/utilities/fieldsDrawer/DrawerContent.d.ts.map +1 -1
  103. package/dist/utilities/fieldsDrawer/DrawerContent.js +7 -3
  104. package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
  105. package/package.json +6 -6
  106. package/dist/exports/client/Field-2MCIQXRP.js +0 -2
  107. package/dist/exports/client/Field-2MCIQXRP.js.map +0 -7
  108. package/dist/exports/client/RelationshipComponent-APF3CN47.js +0 -2
  109. package/dist/exports/client/RelationshipComponent-APF3CN47.js.map +0 -7
  110. package/dist/exports/client/chunk-CYLMY5ZJ.js +0 -2
  111. package/dist/exports/client/chunk-CYLMY5ZJ.js.map +0 -7
  112. package/dist/exports/client/chunk-K47TNP5J.js +0 -2
  113. package/dist/exports/client/chunk-K47TNP5J.js.map +0 -7
  114. package/dist/exports/client/component-VDJI45F2.js +0 -2
  115. package/dist/exports/client/component-VDJI45F2.js.map +0 -7
  116. package/dist/exports/client/componentInline-AGFSKAY4.js +0 -2
  117. /package/dist/exports/client/{componentInline-AGFSKAY4.js.map → componentInline-NGTRUSGB.js.map} +0 -0
@@ -4,6 +4,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
4
4
  import React, { createContext, useCallback, useEffect, useMemo, useRef } from 'react';
5
5
  const baseClass = 'inline-block';
6
6
  import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
7
+ import { useLexicalEditable } from '@lexical/react/useLexicalEditable';
7
8
  import { getTranslation } from '@payloadcms/translations';
8
9
  import { Button, Drawer, EditDepthProvider, Form, formatDrawerSlug, FormSubmit, RenderFields, ShimmerEffect, useConfig, useDocumentForm, useDocumentInfo, useEditDepth, useServerFunctions, useTranslation } from '@payloadcms/ui';
9
10
  import { abortAndIgnore } from '@payloadcms/ui/shared';
@@ -24,6 +25,7 @@ export const InlineBlockComponent = props => {
24
25
  nodeKey
25
26
  } = props;
26
27
  const [editor] = useLexicalComposerContext();
28
+ const isEditable = useLexicalEditable();
27
29
  const {
28
30
  i18n,
29
31
  t
@@ -33,7 +35,6 @@ export const InlineBlockComponent = props => {
33
35
  fieldProps: {
34
36
  featureClientSchemaMap,
35
37
  initialLexicalFormState,
36
- readOnly,
37
38
  schemaPath
38
39
  },
39
40
  setCreatedInlineBlock,
@@ -131,6 +132,7 @@ export const InlineBlockComponent = props => {
131
132
  initialBlockData: formData,
132
133
  initialBlockFormState: formData,
133
134
  operation: 'update',
135
+ readOnly: !isEditable,
134
136
  renderAllFields: true,
135
137
  schemaPath: schemaFieldsPath,
136
138
  signal: abortController.signal
@@ -157,7 +159,7 @@ export const InlineBlockComponent = props => {
157
159
  return () => {
158
160
  abortAndIgnore(abortController);
159
161
  };
160
- }, [getFormState, editor, nodeKey, schemaFieldsPath, id, formData, initialState, collectionSlug, globalSlug, getDocPreferences, parentDocumentFields]);
162
+ }, [getFormState, editor, nodeKey, isEditable, schemaFieldsPath, id, formData, initialState, collectionSlug, globalSlug, getDocPreferences, parentDocumentFields]);
161
163
  /**
162
164
  * HANDLE ONCHANGE
163
165
  */
@@ -182,6 +184,7 @@ export const InlineBlockComponent = props => {
182
184
  globalSlug,
183
185
  initialBlockFormState: prevFormState,
184
186
  operation: 'update',
187
+ readOnly: !isEditable,
185
188
  renderAllFields: submit ? true : false,
186
189
  schemaPath: schemaFieldsPath,
187
190
  signal: controller.signal
@@ -194,7 +197,7 @@ export const InlineBlockComponent = props => {
194
197
  setCustomBlock(state_0['_components']?.customComponents?.Block);
195
198
  }
196
199
  return state_0;
197
- }, [getFormState, id, collectionSlug, getDocPreferences, parentDocumentFields, globalSlug, schemaFieldsPath]);
200
+ }, [getFormState, id, collectionSlug, getDocPreferences, parentDocumentFields, globalSlug, isEditable, schemaFieldsPath]);
198
201
  // cleanup effect
199
202
  useEffect(() => {
200
203
  const isStateOutOfSync = (formData_0, initialState_0) => {
@@ -225,7 +228,7 @@ export const InlineBlockComponent = props => {
225
228
  const RemoveButton = useMemo(() => () => /*#__PURE__*/_jsx(Button, {
226
229
  buttonStyle: "icon-label",
227
230
  className: `${baseClass}__removeButton`,
228
- disabled: readOnly,
231
+ disabled: !isEditable,
229
232
  icon: "x",
230
233
  onClick: e => {
231
234
  e.preventDefault();
@@ -236,11 +239,11 @@ export const InlineBlockComponent = props => {
236
239
  tooltip: t('lexical:blocks:inlineBlocks:remove', {
237
240
  label: blockDisplayName
238
241
  })
239
- }), [blockDisplayName, readOnly, removeInlineBlock, t]);
242
+ }), [blockDisplayName, isEditable, removeInlineBlock, t]);
240
243
  const EditButton = useMemo(() => () => /*#__PURE__*/_jsx(Button, {
241
244
  buttonStyle: "icon-label",
242
245
  className: `${baseClass}__editButton`,
243
- disabled: readOnly,
246
+ disabled: !isEditable,
244
247
  el: "button",
245
248
  icon: "edit",
246
249
  onClick: () => {
@@ -251,7 +254,7 @@ export const InlineBlockComponent = props => {
251
254
  tooltip: t('lexical:blocks:inlineBlocks:edit', {
252
255
  label: blockDisplayName
253
256
  })
254
- }), [blockDisplayName, readOnly, t, toggleDrawer]);
257
+ }), [blockDisplayName, isEditable, t, toggleDrawer]);
255
258
  const InlineBlockContainer = useMemo(() => ({
256
259
  children,
257
260
  className
@@ -274,7 +277,7 @@ export const InlineBlockComponent = props => {
274
277
  className: `${baseClass}-not-found`,
275
278
  children: [/*#__PURE__*/_jsxs("span", {
276
279
  children: ["Error: Block '", formData.blockType, "' not found"]
277
- }), editor.isEditable() ? /*#__PURE__*/_jsx("div", {
280
+ }), isEditable ? /*#__PURE__*/_jsx("div", {
278
281
  className: `${baseClass}__actions`,
279
282
  children: /*#__PURE__*/_jsx(RemoveButton, {})
280
283
  }) : null]
@@ -317,7 +320,7 @@ export const InlineBlockComponent = props => {
317
320
 
318
321
  parentSchemaPath: schemaFieldsPath,
319
322
  permissions: true,
320
- readOnly: false
323
+ readOnly: !isEditable
321
324
  }), /*#__PURE__*/_jsx(FormSubmit, {
322
325
  programmaticSubmit: true,
323
326
  children: t('fields:saveChanges')
@@ -338,7 +341,7 @@ export const InlineBlockComponent = props => {
338
341
  children: [initialState ? /*#__PURE__*/_jsx(Label, {}) : /*#__PURE__*/_jsx(ShimmerEffect, {
339
342
  height: "15px",
340
343
  width: "40px"
341
- }), editor.isEditable() ? /*#__PURE__*/_jsxs("div", {
344
+ }), isEditable ? /*#__PURE__*/_jsxs("div", {
342
345
  className: `${baseClass}__actions`,
343
346
  children: [/*#__PURE__*/_jsx(EditButton, {}), /*#__PURE__*/_jsx(RemoveButton, {})]
344
347
  }) : null]
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","createContext","useCallback","useEffect","useMemo","useRef","baseClass","useLexicalComposerContext","getTranslation","Button","Drawer","EditDepthProvider","Form","formatDrawerSlug","FormSubmit","RenderFields","ShimmerEffect","useConfig","useDocumentForm","useDocumentInfo","useEditDepth","useServerFunctions","useTranslation","abortAndIgnore","$getNodeByKey","deepCopyObjectSimpleWithoutReactComponents","reduceFieldsToValues","v4","uuid","useEditorConfigContext","useLexicalDrawer","$isInlineBlockNode","InlineBlockComponentContext","initialState","useInlineBlockComponentContext","use","InlineBlockComponent","props","cacheBuster","formData","nodeKey","editor","i18n","t","createdInlineBlock","fieldProps","featureClientSchemaMap","initialLexicalFormState","readOnly","schemaPath","setCreatedInlineBlock","uuidFromContext","fields","parentDocumentFields","getFormState","editDepth","firstTimeDrawer","setInitialState","useState","id","formState","hasMounted","prevCacheBuster","current","CustomLabel","setCustomLabel","customComponents","BlockLabel","CustomBlock","setCustomBlock","Block","drawerSlug","slug","depth","toggleDrawer","inlineBlockElemElemRef","collectionSlug","getDocPreferences","globalSlug","config","componentMapRenderedBlockPath","blockType","clientSchemaMap","blocksField","clientBlock","blockReferences","blocksMap","blocks","clientBlockFields","getKey","length","undefined","removeInlineBlock","update","remove","blockDisplayName","labels","singular","onChangeAbortControllerRef","AbortController","schemaFieldsPath","abortController","awaitInitialState","state","data","docPermissions","docPreferences","documentFormState","initialBlockData","initialBlockFormState","operation","renderAllFields","signal","newFormStateData","node","newData","setFields","onChange","prevFormState","submit","controller","isStateOutOfSync","Object","keys","some","key","value","onFormSubmit","RemoveButton","_jsx","buttonStyle","className","disabled","icon","onClick","e","preventDefault","round","size","tooltip","label","EditButton","el","InlineBlockContainer","children","filter","Boolean","join","ref","Label","_jsxs","isEditable","beforeSubmit","disableValidationOnSubmit","onSubmit","title","_Fragment","forceRender","parentIndexPath","parentPath","parentSchemaPath","permissions","programmaticSubmit","height","width"],"sources":["../../../../../src/features/blocks/client/componentInline/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { createContext, useCallback, useEffect, useMemo, useRef } from 'react'\nconst baseClass = 'inline-block'\n\nimport type { BlocksFieldClient, ClientBlock, Data, FormState } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n Drawer,\n EditDepthProvider,\n Form,\n formatDrawerSlug,\n FormSubmit,\n RenderFields,\n ShimmerEffect,\n useConfig,\n useDocumentForm,\n useDocumentInfo,\n useEditDepth,\n useServerFunctions,\n useTranslation,\n} from '@payloadcms/ui'\nimport { abortAndIgnore } from '@payloadcms/ui/shared'\nimport { $getNodeByKey } from 'lexical'\n\nimport './index.scss'\n\nimport { deepCopyObjectSimpleWithoutReactComponents, reduceFieldsToValues } from 'payload/shared'\nimport { v4 as uuid } from 'uuid'\n\nimport type { InlineBlockFields } from '../../server/nodes/InlineBlocksNode.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport { $isInlineBlockNode } from '../nodes/InlineBlocksNode.js'\n\ntype Props = {\n /**\n * Can be modified by the node in order to trigger the re-fetch of the initial state based on the\n * formData. This is useful when node.setFields() is explicitly called from outside of the form - in\n * this case, the new field state is likely not reflected in the form state, so we need to re-fetch\n */\n readonly cacheBuster: number\n readonly formData: InlineBlockFields\n readonly nodeKey: string\n}\n\ntype InlineBlockComponentContextType = {\n EditButton?: React.FC\n initialState: false | FormState | undefined\n InlineBlockContainer?: React.FC<{ children: React.ReactNode }>\n Label?: React.FC\n nodeKey?: string\n RemoveButton?: React.FC\n}\n\nconst InlineBlockComponentContext = createContext<InlineBlockComponentContextType>({\n initialState: false,\n})\n\nexport const useInlineBlockComponentContext = () => React.use(InlineBlockComponentContext)\n\nexport const InlineBlockComponent: React.FC<Props> = (props) => {\n const { cacheBuster, formData, nodeKey } = props\n\n const [editor] = useLexicalComposerContext()\n const { i18n, t } = useTranslation<object, string>()\n const {\n createdInlineBlock,\n fieldProps: { featureClientSchemaMap, initialLexicalFormState, readOnly, schemaPath },\n setCreatedInlineBlock,\n uuid: uuidFromContext,\n } = useEditorConfigContext()\n const { fields: parentDocumentFields } = useDocumentForm()\n\n const { getFormState } = useServerFunctions()\n const editDepth = useEditDepth()\n const firstTimeDrawer = useRef(false)\n\n const [initialState, setInitialState] = React.useState<false | FormState | undefined>(\n () => initialLexicalFormState?.[formData.id]?.formState,\n )\n\n const hasMounted = useRef(false)\n const prevCacheBuster = useRef(cacheBuster)\n useEffect(() => {\n if (hasMounted.current) {\n if (prevCacheBuster.current !== cacheBuster) {\n setInitialState(false)\n }\n prevCacheBuster.current = cacheBuster\n } else {\n hasMounted.current = true\n }\n }, [cacheBuster])\n\n const [CustomLabel, setCustomLabel] = React.useState<React.ReactNode | undefined>(\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n initialState?.['_components']?.customComponents?.BlockLabel,\n )\n\n const [CustomBlock, setCustomBlock] = React.useState<React.ReactNode | undefined>(\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n initialState?.['_components']?.customComponents?.Block,\n )\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-inlineBlocks-create-${uuidFromContext}-${formData.id}`,\n depth: editDepth,\n })\n const { toggleDrawer } = useLexicalDrawer(drawerSlug, true)\n\n const inlineBlockElemElemRef = useRef<HTMLDivElement | null>(null)\n const { id, collectionSlug, getDocPreferences, globalSlug } = useDocumentInfo()\n const { config } = useConfig()\n\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${formData.blockType}`\n\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap?.[\n componentMapRenderedBlockPath\n ]?.[0] as BlocksFieldClient\n\n const clientBlock: ClientBlock | undefined = blocksField.blockReferences\n ? typeof blocksField?.blockReferences?.[0] === 'string'\n ? config.blocksMap[blocksField?.blockReferences?.[0]]\n : blocksField?.blockReferences?.[0]\n : blocksField?.blocks?.[0]\n\n const clientBlockFields = clientBlock?.fields ?? []\n\n // Open drawer on \"mount\"\n useEffect(() => {\n if (!firstTimeDrawer.current && createdInlineBlock?.getKey() === nodeKey) {\n // > 2 because they always have \"id\" and \"blockName\" fields\n if (clientBlockFields.length > 2) {\n toggleDrawer()\n }\n setCreatedInlineBlock?.(undefined)\n firstTimeDrawer.current = true\n }\n }, [clientBlockFields.length, createdInlineBlock, nodeKey, setCreatedInlineBlock, toggleDrawer])\n\n const removeInlineBlock = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey)?.remove()\n })\n }, [editor, nodeKey])\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock?.labels.singular, i18n)\n : clientBlock?.slug\n\n const onChangeAbortControllerRef = useRef(new AbortController())\n const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${clientBlock?.slug}.fields`\n\n // Initial state for newly created blocks\n useEffect(() => {\n const abortController = new AbortController()\n\n const awaitInitialState = async () => {\n /*\n * This will only run if a new block is created. For all existing blocks that are loaded when the document is loaded, or when the form is saved,\n * this is not run, as the lexical field RSC will fetch the state server-side and pass it to the client. That way, we avoid unnecessary client-side\n * requests. Though for newly created blocks, we need to fetch the state client-side, as the server doesn't know about the block yet.\n */\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: formData,\n docPermissions: { fields: true },\n docPreferences: await getDocPreferences(),\n documentFormState: deepCopyObjectSimpleWithoutReactComponents(parentDocumentFields),\n globalSlug,\n initialBlockData: formData,\n initialBlockFormState: formData,\n operation: 'update',\n renderAllFields: true,\n schemaPath: schemaFieldsPath,\n signal: abortController.signal,\n })\n\n if (state) {\n const newFormStateData: InlineBlockFields = reduceFieldsToValues(\n deepCopyObjectSimpleWithoutReactComponents(state),\n true,\n ) as InlineBlockFields\n\n // Things like default values may come back from the server => update the node with the new data\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isInlineBlockNode(node)) {\n const newData = newFormStateData\n newData.blockType = formData.blockType\n\n node.setFields(newData, true)\n }\n })\n\n setInitialState(state)\n setCustomLabel(state['_components']?.customComponents?.BlockLabel)\n setCustomBlock(state['_components']?.customComponents?.Block)\n }\n }\n\n if (formData && !initialState) {\n void awaitInitialState()\n }\n\n return () => {\n abortAndIgnore(abortController)\n }\n }, [\n getFormState,\n editor,\n nodeKey,\n schemaFieldsPath,\n id,\n formData,\n initialState,\n collectionSlug,\n globalSlug,\n getDocPreferences,\n parentDocumentFields,\n ])\n\n /**\n * HANDLE ONCHANGE\n */\n const onChange = useCallback(\n async ({ formState: prevFormState, submit }: { formState: FormState; submit?: boolean }) => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n\n const controller = new AbortController()\n onChangeAbortControllerRef.current = controller\n\n const { state } = await getFormState({\n id,\n collectionSlug,\n docPermissions: {\n fields: true,\n },\n docPreferences: await getDocPreferences(),\n documentFormState: deepCopyObjectSimpleWithoutReactComponents(parentDocumentFields),\n formState: prevFormState,\n globalSlug,\n initialBlockFormState: prevFormState,\n operation: 'update',\n renderAllFields: submit ? true : false,\n schemaPath: schemaFieldsPath,\n signal: controller.signal,\n })\n\n if (!state) {\n return prevFormState\n }\n\n if (submit) {\n setCustomLabel(state['_components']?.customComponents?.BlockLabel)\n setCustomBlock(state['_components']?.customComponents?.Block)\n }\n\n return state\n },\n [\n getFormState,\n id,\n collectionSlug,\n getDocPreferences,\n parentDocumentFields,\n globalSlug,\n schemaFieldsPath,\n ],\n )\n // cleanup effect\n useEffect(() => {\n const isStateOutOfSync = (formData: InlineBlockFields, initialState: FormState) => {\n return Object.keys(initialState).some(\n (key) => initialState[key] && formData[key] !== initialState[key].value,\n )\n }\n\n return () => {\n // If the component is unmounted (either via removeInlineBlock or via lexical itself) and the form state got changed before,\n // we need to reset the initial state to force a re-fetch of the initial state when it gets mounted again (e.g. via lexical history undo).\n // Otherwise it would use an outdated initial state.\n if (initialState && isStateOutOfSync(formData, initialState)) {\n setInitialState(false)\n }\n abortAndIgnore(onChangeAbortControllerRef.current)\n }\n }, [formData, initialState])\n\n /**\n * HANDLE FORM SUBMIT\n */\n const onFormSubmit = useCallback(\n (formState: FormState, newData: Data) => {\n newData.blockType = formData.blockType\n\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isInlineBlockNode(node)) {\n node.setFields(newData as InlineBlockFields, true)\n }\n })\n },\n [editor, nodeKey, formData],\n )\n\n const RemoveButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={readOnly}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeInlineBlock()\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:remove', { label: blockDisplayName })}\n />\n ),\n [blockDisplayName, readOnly, removeInlineBlock, t],\n )\n\n const EditButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__editButton`}\n disabled={readOnly}\n el=\"button\"\n icon=\"edit\"\n onClick={() => {\n toggleDrawer()\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:edit', { label: blockDisplayName })}\n />\n ),\n [blockDisplayName, readOnly, t, toggleDrawer],\n )\n\n const InlineBlockContainer = useMemo(\n () =>\n ({ children, className }: { children: React.ReactNode; className?: string }) => (\n <div\n className={[baseClass, baseClass + '-' + formData.blockType, className]\n .filter(Boolean)\n .join(' ')}\n ref={inlineBlockElemElemRef}\n >\n {children}\n </div>\n ),\n [formData.blockType],\n )\n\n const Label = useMemo(() => {\n if (CustomLabel) {\n return () => CustomLabel\n } else {\n return () => (\n <div>{clientBlock?.labels ? getTranslation(clientBlock?.labels.singular, i18n) : ''}</div>\n )\n }\n }, [CustomLabel, clientBlock?.labels, i18n])\n\n if (!clientBlock) {\n return (\n <InlineBlockContainer className={`${baseClass}-not-found`}>\n <span>Error: Block '{formData.blockType}' not found</span>\n {editor.isEditable() ? (\n <div className={`${baseClass}__actions`}>\n <RemoveButton />\n </div>\n ) : null}\n </InlineBlockContainer>\n )\n }\n\n return (\n <Form\n beforeSubmit={[\n async ({ formState }) => {\n // This is only called when form is submitted from drawer\n return await onChange({ formState, submit: true })\n },\n ]}\n disableValidationOnSubmit\n el=\"div\"\n fields={clientBlock?.fields}\n initialState={initialState || {}}\n onChange={[onChange]}\n onSubmit={(formState, data) => {\n onFormSubmit(formState, data)\n toggleDrawer()\n }}\n uuid={uuid()}\n >\n <EditDepthProvider>\n <Drawer\n className={''}\n slug={drawerSlug}\n title={t(`lexical:blocks:inlineBlocks:${formData?.id ? 'edit' : 'create'}`, {\n label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label'),\n })}\n >\n {initialState ? (\n <>\n <RenderFields\n fields={clientBlock?.fields}\n forceRender\n parentIndexPath=\"\"\n parentPath=\"\" // See Blocks feature path for details as for why this is empty\n parentSchemaPath={schemaFieldsPath}\n permissions={true}\n readOnly={false}\n />\n <FormSubmit programmaticSubmit={true}>{t('fields:saveChanges')}</FormSubmit>\n </>\n ) : null}\n </Drawer>\n </EditDepthProvider>\n {CustomBlock ? (\n <InlineBlockComponentContext\n value={{\n EditButton,\n initialState,\n InlineBlockContainer,\n Label,\n nodeKey,\n RemoveButton,\n }}\n >\n {CustomBlock}\n </InlineBlockComponentContext>\n ) : (\n <InlineBlockContainer>\n {initialState ? <Label /> : <ShimmerEffect height=\"15px\" width=\"40px\" />}\n {editor.isEditable() ? (\n <div className={`${baseClass}__actions`}>\n <EditButton />\n <RemoveButton />\n </div>\n ) : null}\n </InlineBlockContainer>\n )}\n </Form>\n )\n}\n"],"mappings":"AAAA;;;AAEA,OAAOA,KAAA,IAASC,aAAa,EAAEC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,QAAQ;AAC9E,MAAMC,SAAA,GAAY;AAIlB,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,cAAc,QAAQ;AAC/B,SACEC,MAAM,EACNC,MAAM,EACNC,iBAAiB,EACjBC,IAAI,EACJC,gBAAgB,EAChBC,UAAU,EACVC,YAAY,EACZC,aAAa,EACbC,SAAS,EACTC,eAAe,EACfC,eAAe,EACfC,YAAY,EACZC,kBAAkB,EAClBC,cAAc,QACT;AACP,SAASC,cAAc,QAAQ;AAC/B,SAASC,aAAa,QAAQ;AAI9B,SAASC,0CAA0C,EAAEC,oBAAoB,QAAQ;AACjF,SAASC,EAAA,IAAMC,IAAI,QAAQ;AAI3B,SAASC,sBAAsB,QAAQ;AACvC,SAASC,gBAAgB,QAAQ;AACjC,SAASC,kBAAkB,QAAQ;AAsBnC,MAAMC,2BAAA,gBAA8B/B,aAAA,CAA+C;EACjFgC,YAAA,EAAc;AAChB;AAEA,OAAO,MAAMC,8BAAA,GAAiCA,CAAA,KAAMlC,KAAA,CAAMmC,GAAG,CAACH,2BAAA;AAE9D,OAAO,MAAMI,oBAAA,GAAyCC,KAAA;EACpD,MAAM;IAAEC,WAAW;IAAEC,QAAQ;IAAEC;EAAO,CAAE,GAAGH,KAAA;EAE3C,MAAM,CAACI,MAAA,CAAO,GAAGlC,yBAAA;EACjB,MAAM;IAAEmC,IAAI;IAAEC;EAAC,CAAE,GAAGrB,cAAA;EACpB,MAAM;IACJsB,kBAAkB;IAClBC,UAAA,EAAY;MAAEC,sBAAsB;MAAEC,uBAAuB;MAAEC,QAAQ;MAAEC;IAAU,CAAE;IACrFC,qBAAqB;IACrBtB,IAAA,EAAMuB;EAAe,CACtB,GAAGtB,sBAAA;EACJ,MAAM;IAAEuB,MAAA,EAAQC;EAAoB,CAAE,GAAGnC,eAAA;EAEzC,MAAM;IAAEoC;EAAY,CAAE,GAAGjC,kBAAA;EACzB,MAAMkC,SAAA,GAAYnC,YAAA;EAClB,MAAMoC,eAAA,GAAkBnD,MAAA,CAAO;EAE/B,MAAM,CAAC4B,YAAA,EAAcwB,eAAA,CAAgB,GAAGzD,KAAA,CAAM0D,QAAQ,CACpD,MAAMX,uBAAA,GAA0BR,QAAA,CAASoB,EAAE,CAAC,EAAEC,SAAA;EAGhD,MAAMC,UAAA,GAAaxD,MAAA,CAAO;EAC1B,MAAMyD,eAAA,GAAkBzD,MAAA,CAAOiC,WAAA;EAC/BnC,SAAA,CAAU;IACR,IAAI0D,UAAA,CAAWE,OAAO,EAAE;MACtB,IAAID,eAAA,CAAgBC,OAAO,KAAKzB,WAAA,EAAa;QAC3CmB,eAAA,CAAgB;MAClB;MACAK,eAAA,CAAgBC,OAAO,GAAGzB,WAAA;IAC5B,OAAO;MACLuB,UAAA,CAAWE,OAAO,GAAG;IACvB;EACF,GAAG,CAACzB,WAAA,CAAY;EAEhB,MAAM,CAAC0B,WAAA,EAAaC,cAAA,CAAe,GAAGjE,KAAA,CAAM0D,QAAQ;EAClD;EACAzB,YAAA,GAAe,cAAc,EAAEiC,gBAAA,EAAkBC,UAAA;EAGnD,MAAM,CAACC,WAAA,EAAaC,cAAA,CAAe,GAAGrE,KAAA,CAAM0D,QAAQ;EAClD;EACAzB,YAAA,GAAe,cAAc,EAAEiC,gBAAA,EAAkBI,KAAA;EAGnD,MAAMC,UAAA,GAAa1D,gBAAA,CAAiB;IAClC2D,IAAA,EAAM,+BAA+BrB,eAAA,IAAmBZ,QAAA,CAASoB,EAAE,EAAE;IACrEc,KAAA,EAAOlB;EACT;EACA,MAAM;IAAEmB;EAAY,CAAE,GAAG5C,gBAAA,CAAiByC,UAAA,EAAY;EAEtD,MAAMI,sBAAA,GAAyBtE,MAAA,CAA8B;EAC7D,MAAM;IAAEsD,EAAE;IAAEiB,cAAc;IAAEC,iBAAiB;IAAEC;EAAU,CAAE,GAAG3D,eAAA;EAC9D,MAAM;IAAE4D;EAAM,CAAE,GAAG9D,SAAA;EAEnB,MAAM+D,6BAAA,GAAgC,GAAG/B,UAAA,0DAAoEV,QAAA,CAAS0C,SAAS,EAAE;EAEjI,MAAMC,eAAA,GAAkBpC,sBAAsB,CAAC,SAAS;EAExD,MAAMqC,WAAA,GAAiCD,eAAA,GACrCF,6BAAA,CACD,GAAG,EAAE;EAEN,MAAMI,WAAA,GAAuCD,WAAA,CAAYE,eAAe,GACpE,OAAOF,WAAA,EAAaE,eAAA,GAAkB,EAAE,KAAK,WAC3CN,MAAA,CAAOO,SAAS,CAACH,WAAA,EAAaE,eAAA,GAAkB,EAAE,CAAC,GACnDF,WAAA,EAAaE,eAAA,GAAkB,EAAE,GACnCF,WAAA,EAAaI,MAAA,GAAS,EAAE;EAE5B,MAAMC,iBAAA,GAAoBJ,WAAA,EAAahC,MAAA,IAAU,EAAE;EAEnD;EACAjD,SAAA,CAAU;IACR,IAAI,CAACqD,eAAA,CAAgBO,OAAO,IAAInB,kBAAA,EAAoB6C,MAAA,OAAajD,OAAA,EAAS;MACxE;MACA,IAAIgD,iBAAA,CAAkBE,MAAM,GAAG,GAAG;QAChChB,YAAA;MACF;MACAxB,qBAAA,GAAwByC,SAAA;MACxBnC,eAAA,CAAgBO,OAAO,GAAG;IAC5B;EACF,GAAG,CAACyB,iBAAA,CAAkBE,MAAM,EAAE9C,kBAAA,EAAoBJ,OAAA,EAASU,qBAAA,EAAuBwB,YAAA,CAAa;EAE/F,MAAMkB,iBAAA,GAAoB1F,WAAA,CAAY;IACpCuC,MAAA,CAAOoD,MAAM,CAAC;MACZrE,aAAA,CAAcgB,OAAA,GAAUsD,MAAA;IAC1B;EACF,GAAG,CAACrD,MAAA,EAAQD,OAAA,CAAQ;EAEpB,MAAMuD,gBAAA,GAAmBX,WAAA,EAAaY,MAAA,EAAQC,QAAA,GAC1CzF,cAAA,CAAe4E,WAAA,EAAaY,MAAA,CAAOC,QAAA,EAAUvD,IAAA,IAC7C0C,WAAA,EAAaZ,IAAA;EAEjB,MAAM0B,0BAAA,GAA6B7F,MAAA,CAAO,IAAI8F,eAAA;EAC9C,MAAMC,gBAAA,GAAmB,GAAGnD,UAAA,0DAAoEmC,WAAA,EAAaZ,IAAA,SAAa;EAE1H;EACArE,SAAA,CAAU;IACR,MAAMkG,eAAA,GAAkB,IAAIF,eAAA;IAE5B,MAAMG,iBAAA,GAAoB,MAAAA,CAAA;MACxB;;;;;MAKA,MAAM;QAAEC;MAAK,CAAE,GAAG,MAAMjD,YAAA,CAAa;QACnCK,EAAA;QACAiB,cAAA;QACA4B,IAAA,EAAMjE,QAAA;QACNkE,cAAA,EAAgB;UAAErD,MAAA,EAAQ;QAAK;QAC/BsD,cAAA,EAAgB,MAAM7B,iBAAA;QACtB8B,iBAAA,EAAmBlF,0CAAA,CAA2C4B,oBAAA;QAC9DyB,UAAA;QACA8B,gBAAA,EAAkBrE,QAAA;QAClBsE,qBAAA,EAAuBtE,QAAA;QACvBuE,SAAA,EAAW;QACXC,eAAA,EAAiB;QACjB9D,UAAA,EAAYmD,gBAAA;QACZY,MAAA,EAAQX,eAAA,CAAgBW;MAC1B;MAEA,IAAIT,KAAA,EAAO;QACT,MAAMU,gBAAA,GAAsCvF,oBAAA,CAC1CD,0CAAA,CAA2C8E,KAAA,GAC3C;QAGF;QACA9D,MAAA,CAAOoD,MAAM,CAAC;UACZ,MAAMqB,IAAA,GAAO1F,aAAA,CAAcgB,OAAA;UAC3B,IAAI0E,IAAA,IAAQnF,kBAAA,CAAmBmF,IAAA,GAAO;YACpC,MAAMC,OAAA,GAAUF,gBAAA;YAChBE,OAAA,CAAQlC,SAAS,GAAG1C,QAAA,CAAS0C,SAAS;YAEtCiC,IAAA,CAAKE,SAAS,CAACD,OAAA,EAAS;UAC1B;QACF;QAEA1D,eAAA,CAAgB8C,KAAA;QAChBtC,cAAA,CAAesC,KAAK,CAAC,cAAc,EAAErC,gBAAA,EAAkBC,UAAA;QACvDE,cAAA,CAAekC,KAAK,CAAC,cAAc,EAAErC,gBAAA,EAAkBI,KAAA;MACzD;IACF;IAEA,IAAI/B,QAAA,IAAY,CAACN,YAAA,EAAc;MAC7B,KAAKqE,iBAAA;IACP;IAEA,OAAO;MACL/E,cAAA,CAAe8E,eAAA;IACjB;EACF,GAAG,CACD/C,YAAA,EACAb,MAAA,EACAD,OAAA,EACA4D,gBAAA,EACAzC,EAAA,EACApB,QAAA,EACAN,YAAA,EACA2C,cAAA,EACAE,UAAA,EACAD,iBAAA,EACAxB,oBAAA,CACD;EAED;;;EAGA,MAAMgE,QAAA,GAAWnH,WAAA,CACf,OAAO;IAAE0D,SAAA,EAAW0D,aAAa;IAAEC;EAAM,CAA8C;IACrFhG,cAAA,CAAe2E,0BAAA,CAA2BnC,OAAO;IAEjD,MAAMyD,UAAA,GAAa,IAAIrB,eAAA;IACvBD,0BAAA,CAA2BnC,OAAO,GAAGyD,UAAA;IAErC,MAAM;MAAEjB,KAAK,EAALA;IAAK,CAAE,GAAG,MAAMjD,YAAA,CAAa;MACnCK,EAAA;MACAiB,cAAA;MACA6B,cAAA,EAAgB;QACdrD,MAAA,EAAQ;MACV;MACAsD,cAAA,EAAgB,MAAM7B,iBAAA;MACtB8B,iBAAA,EAAmBlF,0CAAA,CAA2C4B,oBAAA;MAC9DO,SAAA,EAAW0D,aAAA;MACXxC,UAAA;MACA+B,qBAAA,EAAuBS,aAAA;MACvBR,SAAA,EAAW;MACXC,eAAA,EAAiBQ,MAAA,GAAS,OAAO;MACjCtE,UAAA,EAAYmD,gBAAA;MACZY,MAAA,EAAQQ,UAAA,CAAWR;IACrB;IAEA,IAAI,CAACT,OAAA,EAAO;MACV,OAAOe,aAAA;IACT;IAEA,IAAIC,MAAA,EAAQ;MACVtD,cAAA,CAAesC,OAAK,CAAC,cAAc,EAAErC,gBAAA,EAAkBC,UAAA;MACvDE,cAAA,CAAekC,OAAK,CAAC,cAAc,EAAErC,gBAAA,EAAkBI,KAAA;IACzD;IAEA,OAAOiC,OAAA;EACT,GACA,CACEjD,YAAA,EACAK,EAAA,EACAiB,cAAA,EACAC,iBAAA,EACAxB,oBAAA,EACAyB,UAAA,EACAsB,gBAAA,CACD;EAEH;EACAjG,SAAA,CAAU;IACR,MAAMsH,gBAAA,GAAmBA,CAAClF,UAAA,EAA6BN,cAAA;MACrD,OAAOyF,MAAA,CAAOC,IAAI,CAAC1F,cAAA,EAAc2F,IAAI,CAClCC,GAAA,IAAQ5F,cAAY,CAAC4F,GAAA,CAAI,IAAItF,UAAQ,CAACsF,GAAA,CAAI,KAAK5F,cAAY,CAAC4F,GAAA,CAAI,CAACC,KAAK;IAE3E;IAEA,OAAO;MACL;MACA;MACA;MACA,IAAI7F,YAAA,IAAgBwF,gBAAA,CAAiBlF,QAAA,EAAUN,YAAA,GAAe;QAC5DwB,eAAA,CAAgB;MAClB;MACAlC,cAAA,CAAe2E,0BAAA,CAA2BnC,OAAO;IACnD;EACF,GAAG,CAACxB,QAAA,EAAUN,YAAA,CAAa;EAE3B;;;EAGA,MAAM8F,YAAA,GAAe7H,WAAA,CACnB,CAAC0D,SAAA,EAAsBuD,SAAA;IACrBA,SAAA,CAAQlC,SAAS,GAAG1C,QAAA,CAAS0C,SAAS;IAEtCxC,MAAA,CAAOoD,MAAM,CAAC;MACZ,MAAMqB,MAAA,GAAO1F,aAAA,CAAcgB,OAAA;MAC3B,IAAI0E,MAAA,IAAQnF,kBAAA,CAAmBmF,MAAA,GAAO;QACpCA,MAAA,CAAKE,SAAS,CAACD,SAAA,EAA8B;MAC/C;IACF;EACF,GACA,CAAC1E,MAAA,EAAQD,OAAA,EAASD,QAAA,CAAS;EAG7B,MAAMyF,YAAA,GAAe5H,OAAA,CACnB,MAAM,mBACJ6H,IAAA,CAACxH,MAAA;IACCyH,WAAA,EAAY;IACZC,SAAA,EAAW,GAAG7H,SAAA,gBAAyB;IACvC8H,QAAA,EAAUpF,QAAA;IACVqF,IAAA,EAAK;IACLC,OAAA,EAAUC,CAAA;MACRA,CAAA,CAAEC,cAAc;MAChB5C,iBAAA;IACF;IACA6C,KAAK;IACLC,IAAA,EAAK;IACLC,OAAA,EAAShG,CAAA,CAAE,sCAAsC;MAAEiG,KAAA,EAAO7C;IAAiB;MAG/E,CAACA,gBAAA,EAAkB/C,QAAA,EAAU4C,iBAAA,EAAmBjD,CAAA,CAAE;EAGpD,MAAMkG,UAAA,GAAazI,OAAA,CACjB,MAAM,mBACJ6H,IAAA,CAACxH,MAAA;IACCyH,WAAA,EAAY;IACZC,SAAA,EAAW,GAAG7H,SAAA,cAAuB;IACrC8H,QAAA,EAAUpF,QAAA;IACV8F,EAAA,EAAG;IACHT,IAAA,EAAK;IACLC,OAAA,EAASA,CAAA;MACP5D,YAAA;IACF;IACA+D,KAAK;IACLC,IAAA,EAAK;IACLC,OAAA,EAAShG,CAAA,CAAE,oCAAoC;MAAEiG,KAAA,EAAO7C;IAAiB;MAG7E,CAACA,gBAAA,EAAkB/C,QAAA,EAAUL,CAAA,EAAG+B,YAAA,CAAa;EAG/C,MAAMqE,oBAAA,GAAuB3I,OAAA,CAC3B,MACE,CAAC;IAAE4I,QAAQ;IAAEb;EAAS,CAAqD,kBACzEF,IAAA,CAAC;IACCE,SAAA,EAAW,CAAC7H,SAAA,EAAWA,SAAA,GAAY,MAAMiC,QAAA,CAAS0C,SAAS,EAAEkD,SAAA,CAAU,CACpEc,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;IACRC,GAAA,EAAKzE,sBAAA;cAEJqE;MAGP,CAACzG,QAAA,CAAS0C,SAAS,CAAC;EAGtB,MAAMoE,KAAA,GAAQjJ,OAAA,CAAQ;IACpB,IAAI4D,WAAA,EAAa;MACf,OAAO,MAAMA,WAAA;IACf,OAAO;MACL,OAAO,mBACLiE,IAAA,CAAC;kBAAK7C,WAAA,EAAaY,MAAA,GAASxF,cAAA,CAAe4E,WAAA,EAAaY,MAAA,CAAOC,QAAA,EAAUvD,IAAA,IAAQ;;IAErF;EACF,GAAG,CAACsB,WAAA,EAAaoB,WAAA,EAAaY,MAAA,EAAQtD,IAAA,CAAK;EAE3C,IAAI,CAAC0C,WAAA,EAAa;IAChB,oBACEkE,KAAA,CAACP,oBAAA;MAAqBZ,SAAA,EAAW,GAAG7H,SAAA,YAAqB;8BACvDgJ,KAAA,CAAC;mBAAK,kBAAe/G,QAAA,CAAS0C,SAAS,EAAC;UACvCxC,MAAA,CAAO8G,UAAU,kBAChBtB,IAAA,CAAC;QAAIE,SAAA,EAAW,GAAG7H,SAAA,WAAoB;kBACrC,aAAA2H,IAAA,CAACD,YAAA;WAED;;EAGV;EAEA,oBACEsB,KAAA,CAAC1I,IAAA;IACC4I,YAAA,EAAc,CACZ,OAAO;MAAE5F,SAAS,EAATA;IAAS,CAAE;MAClB;MACA,OAAO,MAAMyD,QAAA,CAAS;QAAEzD,SAAA,EAAAA,WAAA;QAAW2D,MAAA,EAAQ;MAAK;IAClD,EACD;IACDkC,yBAAyB;IACzBX,EAAA,EAAG;IACH1F,MAAA,EAAQgC,WAAA,EAAahC,MAAA;IACrBnB,YAAA,EAAcA,YAAA,IAAgB,CAAC;IAC/BoF,QAAA,EAAU,CAACA,QAAA,CAAS;IACpBqC,QAAA,EAAUA,CAAC9F,WAAA,EAAW4C,IAAA;MACpBuB,YAAA,CAAanE,WAAA,EAAW4C,IAAA;MACxB9B,YAAA;IACF;IACA9C,IAAA,EAAMA,IAAA;4BAENqG,IAAA,CAACtH,iBAAA;gBACC,aAAAsH,IAAA,CAACvH,MAAA;QACCyH,SAAA,EAAW;QACX3D,IAAA,EAAMD,UAAA;QACNoF,KAAA,EAAOhH,CAAA,CAAE,+BAA+BJ,QAAA,EAAUoB,EAAA,GAAK,SAAS,UAAU,EAAE;UAC1EiF,KAAA,EAAO7C,gBAAA,IAAoBpD,CAAA,CAAE;QAC/B;kBAECV,YAAA,gBACCqH,KAAA,CAAAM,SAAA;kCACE3B,IAAA,CAAClH,YAAA;YACCqC,MAAA,EAAQgC,WAAA,EAAahC,MAAA;YACrByG,WAAW;YACXC,eAAA,EAAgB;YAChBC,UAAA,EAAW,GAAG;YAAA;;YACdC,gBAAA,EAAkB5D,gBAAA;YAClB6D,WAAA,EAAa;YACbjH,QAAA,EAAU;2BAEZiF,IAAA,CAACnH,UAAA;YAAWoJ,kBAAA,EAAoB;sBAAOvH,CAAA,CAAE;;aAEzC;;QAGPyB,WAAA,gBACC6D,IAAA,CAACjG,2BAAA;MACC8F,KAAA,EAAO;QACLe,UAAA;QACA5G,YAAA;QACA8G,oBAAA;QACAM,KAAA;QACA7G,OAAA;QACAwF;MACF;gBAEC5D;sBAGHkF,KAAA,CAACP,oBAAA;iBACE9G,YAAA,gBAAegG,IAAA,CAACoB,KAAA,qBAAWpB,IAAA,CAACjH,aAAA;QAAcmJ,MAAA,EAAO;QAAOC,KAAA,EAAM;UAC9D3H,MAAA,CAAO8G,UAAU,kBAChBD,KAAA,CAAC;QAAInB,SAAA,EAAW,GAAG7H,SAAA,WAAoB;gCACrC2H,IAAA,CAACY,UAAA,O,aACDZ,IAAA,CAACD,YAAA;WAED;;;AAKd","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","createContext","useCallback","useEffect","useMemo","useRef","baseClass","useLexicalComposerContext","useLexicalEditable","getTranslation","Button","Drawer","EditDepthProvider","Form","formatDrawerSlug","FormSubmit","RenderFields","ShimmerEffect","useConfig","useDocumentForm","useDocumentInfo","useEditDepth","useServerFunctions","useTranslation","abortAndIgnore","$getNodeByKey","deepCopyObjectSimpleWithoutReactComponents","reduceFieldsToValues","v4","uuid","useEditorConfigContext","useLexicalDrawer","$isInlineBlockNode","InlineBlockComponentContext","initialState","useInlineBlockComponentContext","use","InlineBlockComponent","props","cacheBuster","formData","nodeKey","editor","isEditable","i18n","t","createdInlineBlock","fieldProps","featureClientSchemaMap","initialLexicalFormState","schemaPath","setCreatedInlineBlock","uuidFromContext","fields","parentDocumentFields","getFormState","editDepth","firstTimeDrawer","setInitialState","useState","id","formState","hasMounted","prevCacheBuster","current","CustomLabel","setCustomLabel","customComponents","BlockLabel","CustomBlock","setCustomBlock","Block","drawerSlug","slug","depth","toggleDrawer","inlineBlockElemElemRef","collectionSlug","getDocPreferences","globalSlug","config","componentMapRenderedBlockPath","blockType","clientSchemaMap","blocksField","clientBlock","blockReferences","blocksMap","blocks","clientBlockFields","getKey","length","undefined","removeInlineBlock","update","remove","blockDisplayName","labels","singular","onChangeAbortControllerRef","AbortController","schemaFieldsPath","abortController","awaitInitialState","state","data","docPermissions","docPreferences","documentFormState","initialBlockData","initialBlockFormState","operation","readOnly","renderAllFields","signal","newFormStateData","node","newData","setFields","onChange","prevFormState","submit","controller","isStateOutOfSync","Object","keys","some","key","value","onFormSubmit","RemoveButton","_jsx","buttonStyle","className","disabled","icon","onClick","e","preventDefault","round","size","tooltip","label","EditButton","el","InlineBlockContainer","children","filter","Boolean","join","ref","Label","_jsxs","beforeSubmit","disableValidationOnSubmit","onSubmit","title","_Fragment","forceRender","parentIndexPath","parentPath","parentSchemaPath","permissions","programmaticSubmit","height","width"],"sources":["../../../../../src/features/blocks/client/componentInline/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { createContext, useCallback, useEffect, useMemo, useRef } from 'react'\nconst baseClass = 'inline-block'\n\nimport type { BlocksFieldClient, ClientBlock, Data, FormState } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n Drawer,\n EditDepthProvider,\n Form,\n formatDrawerSlug,\n FormSubmit,\n RenderFields,\n ShimmerEffect,\n useConfig,\n useDocumentForm,\n useDocumentInfo,\n useEditDepth,\n useServerFunctions,\n useTranslation,\n} from '@payloadcms/ui'\nimport { abortAndIgnore } from '@payloadcms/ui/shared'\n\nimport './index.scss'\n\nimport { $getNodeByKey } from 'lexical'\nimport { deepCopyObjectSimpleWithoutReactComponents, reduceFieldsToValues } from 'payload/shared'\nimport { v4 as uuid } from 'uuid'\n\nimport type { InlineBlockFields } from '../../server/nodes/InlineBlocksNode.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport { $isInlineBlockNode } from '../nodes/InlineBlocksNode.js'\n\ntype Props = {\n /**\n * Can be modified by the node in order to trigger the re-fetch of the initial state based on the\n * formData. This is useful when node.setFields() is explicitly called from outside of the form - in\n * this case, the new field state is likely not reflected in the form state, so we need to re-fetch\n */\n readonly cacheBuster: number\n readonly formData: InlineBlockFields\n readonly nodeKey: string\n}\n\ntype InlineBlockComponentContextType = {\n EditButton?: React.FC\n initialState: false | FormState | undefined\n InlineBlockContainer?: React.FC<{ children: React.ReactNode }>\n Label?: React.FC\n nodeKey?: string\n RemoveButton?: React.FC\n}\n\nconst InlineBlockComponentContext = createContext<InlineBlockComponentContextType>({\n initialState: false,\n})\n\nexport const useInlineBlockComponentContext = () => React.use(InlineBlockComponentContext)\n\nexport const InlineBlockComponent: React.FC<Props> = (props) => {\n const { cacheBuster, formData, nodeKey } = props\n\n const [editor] = useLexicalComposerContext()\n const isEditable = useLexicalEditable()\n const { i18n, t } = useTranslation<object, string>()\n const {\n createdInlineBlock,\n fieldProps: { featureClientSchemaMap, initialLexicalFormState, schemaPath },\n setCreatedInlineBlock,\n uuid: uuidFromContext,\n } = useEditorConfigContext()\n const { fields: parentDocumentFields } = useDocumentForm()\n\n const { getFormState } = useServerFunctions()\n const editDepth = useEditDepth()\n const firstTimeDrawer = useRef(false)\n\n const [initialState, setInitialState] = React.useState<false | FormState | undefined>(\n () => initialLexicalFormState?.[formData.id]?.formState,\n )\n\n const hasMounted = useRef(false)\n const prevCacheBuster = useRef(cacheBuster)\n useEffect(() => {\n if (hasMounted.current) {\n if (prevCacheBuster.current !== cacheBuster) {\n setInitialState(false)\n }\n prevCacheBuster.current = cacheBuster\n } else {\n hasMounted.current = true\n }\n }, [cacheBuster])\n\n const [CustomLabel, setCustomLabel] = React.useState<React.ReactNode | undefined>(\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n initialState?.['_components']?.customComponents?.BlockLabel,\n )\n\n const [CustomBlock, setCustomBlock] = React.useState<React.ReactNode | undefined>(\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n initialState?.['_components']?.customComponents?.Block,\n )\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-inlineBlocks-create-${uuidFromContext}-${formData.id}`,\n depth: editDepth,\n })\n const { toggleDrawer } = useLexicalDrawer(drawerSlug, true)\n\n const inlineBlockElemElemRef = useRef<HTMLDivElement | null>(null)\n const { id, collectionSlug, getDocPreferences, globalSlug } = useDocumentInfo()\n const { config } = useConfig()\n\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${formData.blockType}`\n\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap?.[\n componentMapRenderedBlockPath\n ]?.[0] as BlocksFieldClient\n\n const clientBlock: ClientBlock | undefined = blocksField.blockReferences\n ? typeof blocksField?.blockReferences?.[0] === 'string'\n ? config.blocksMap[blocksField?.blockReferences?.[0]]\n : blocksField?.blockReferences?.[0]\n : blocksField?.blocks?.[0]\n\n const clientBlockFields = clientBlock?.fields ?? []\n\n // Open drawer on \"mount\"\n useEffect(() => {\n if (!firstTimeDrawer.current && createdInlineBlock?.getKey() === nodeKey) {\n // > 2 because they always have \"id\" and \"blockName\" fields\n if (clientBlockFields.length > 2) {\n toggleDrawer()\n }\n setCreatedInlineBlock?.(undefined)\n firstTimeDrawer.current = true\n }\n }, [clientBlockFields.length, createdInlineBlock, nodeKey, setCreatedInlineBlock, toggleDrawer])\n\n const removeInlineBlock = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey)?.remove()\n })\n }, [editor, nodeKey])\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock?.labels.singular, i18n)\n : clientBlock?.slug\n\n const onChangeAbortControllerRef = useRef(new AbortController())\n const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${clientBlock?.slug}.fields`\n\n // Initial state for newly created blocks\n useEffect(() => {\n const abortController = new AbortController()\n\n const awaitInitialState = async () => {\n /*\n * This will only run if a new block is created. For all existing blocks that are loaded when the document is loaded, or when the form is saved,\n * this is not run, as the lexical field RSC will fetch the state server-side and pass it to the client. That way, we avoid unnecessary client-side\n * requests. Though for newly created blocks, we need to fetch the state client-side, as the server doesn't know about the block yet.\n */\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: formData,\n docPermissions: { fields: true },\n docPreferences: await getDocPreferences(),\n documentFormState: deepCopyObjectSimpleWithoutReactComponents(parentDocumentFields),\n globalSlug,\n initialBlockData: formData,\n initialBlockFormState: formData,\n operation: 'update',\n readOnly: !isEditable,\n renderAllFields: true,\n schemaPath: schemaFieldsPath,\n signal: abortController.signal,\n })\n\n if (state) {\n const newFormStateData: InlineBlockFields = reduceFieldsToValues(\n deepCopyObjectSimpleWithoutReactComponents(state),\n true,\n ) as InlineBlockFields\n\n // Things like default values may come back from the server => update the node with the new data\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isInlineBlockNode(node)) {\n const newData = newFormStateData\n newData.blockType = formData.blockType\n\n node.setFields(newData, true)\n }\n })\n\n setInitialState(state)\n setCustomLabel(state['_components']?.customComponents?.BlockLabel)\n setCustomBlock(state['_components']?.customComponents?.Block)\n }\n }\n\n if (formData && !initialState) {\n void awaitInitialState()\n }\n\n return () => {\n abortAndIgnore(abortController)\n }\n }, [\n getFormState,\n editor,\n nodeKey,\n isEditable,\n schemaFieldsPath,\n id,\n formData,\n initialState,\n collectionSlug,\n globalSlug,\n getDocPreferences,\n parentDocumentFields,\n ])\n\n /**\n * HANDLE ONCHANGE\n */\n const onChange = useCallback(\n async ({ formState: prevFormState, submit }: { formState: FormState; submit?: boolean }) => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n\n const controller = new AbortController()\n onChangeAbortControllerRef.current = controller\n\n const { state } = await getFormState({\n id,\n collectionSlug,\n docPermissions: {\n fields: true,\n },\n docPreferences: await getDocPreferences(),\n documentFormState: deepCopyObjectSimpleWithoutReactComponents(parentDocumentFields),\n formState: prevFormState,\n globalSlug,\n initialBlockFormState: prevFormState,\n operation: 'update',\n readOnly: !isEditable,\n renderAllFields: submit ? true : false,\n schemaPath: schemaFieldsPath,\n signal: controller.signal,\n })\n\n if (!state) {\n return prevFormState\n }\n\n if (submit) {\n setCustomLabel(state['_components']?.customComponents?.BlockLabel)\n setCustomBlock(state['_components']?.customComponents?.Block)\n }\n\n return state\n },\n [\n getFormState,\n id,\n collectionSlug,\n getDocPreferences,\n parentDocumentFields,\n globalSlug,\n isEditable,\n schemaFieldsPath,\n ],\n )\n // cleanup effect\n useEffect(() => {\n const isStateOutOfSync = (formData: InlineBlockFields, initialState: FormState) => {\n return Object.keys(initialState).some(\n (key) => initialState[key] && formData[key] !== initialState[key].value,\n )\n }\n\n return () => {\n // If the component is unmounted (either via removeInlineBlock or via lexical itself) and the form state got changed before,\n // we need to reset the initial state to force a re-fetch of the initial state when it gets mounted again (e.g. via lexical history undo).\n // Otherwise it would use an outdated initial state.\n if (initialState && isStateOutOfSync(formData, initialState)) {\n setInitialState(false)\n }\n abortAndIgnore(onChangeAbortControllerRef.current)\n }\n }, [formData, initialState])\n\n /**\n * HANDLE FORM SUBMIT\n */\n const onFormSubmit = useCallback(\n (formState: FormState, newData: Data) => {\n newData.blockType = formData.blockType\n\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isInlineBlockNode(node)) {\n node.setFields(newData as InlineBlockFields, true)\n }\n })\n },\n [editor, nodeKey, formData],\n )\n\n const RemoveButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={!isEditable}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeInlineBlock()\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:remove', { label: blockDisplayName })}\n />\n ),\n [blockDisplayName, isEditable, removeInlineBlock, t],\n )\n\n const EditButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__editButton`}\n disabled={!isEditable}\n el=\"button\"\n icon=\"edit\"\n onClick={() => {\n toggleDrawer()\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:edit', { label: blockDisplayName })}\n />\n ),\n [blockDisplayName, isEditable, t, toggleDrawer],\n )\n\n const InlineBlockContainer = useMemo(\n () =>\n ({ children, className }: { children: React.ReactNode; className?: string }) => (\n <div\n className={[baseClass, baseClass + '-' + formData.blockType, className]\n .filter(Boolean)\n .join(' ')}\n ref={inlineBlockElemElemRef}\n >\n {children}\n </div>\n ),\n [formData.blockType],\n )\n\n const Label = useMemo(() => {\n if (CustomLabel) {\n return () => CustomLabel\n } else {\n return () => (\n <div>{clientBlock?.labels ? getTranslation(clientBlock?.labels.singular, i18n) : ''}</div>\n )\n }\n }, [CustomLabel, clientBlock?.labels, i18n])\n\n if (!clientBlock) {\n return (\n <InlineBlockContainer className={`${baseClass}-not-found`}>\n <span>Error: Block '{formData.blockType}' not found</span>\n {isEditable ? (\n <div className={`${baseClass}__actions`}>\n <RemoveButton />\n </div>\n ) : null}\n </InlineBlockContainer>\n )\n }\n\n return (\n <Form\n beforeSubmit={[\n async ({ formState }) => {\n // This is only called when form is submitted from drawer\n return await onChange({ formState, submit: true })\n },\n ]}\n disableValidationOnSubmit\n el=\"div\"\n fields={clientBlock?.fields}\n initialState={initialState || {}}\n onChange={[onChange]}\n onSubmit={(formState, data) => {\n onFormSubmit(formState, data)\n toggleDrawer()\n }}\n uuid={uuid()}\n >\n <EditDepthProvider>\n <Drawer\n className={''}\n slug={drawerSlug}\n title={t(`lexical:blocks:inlineBlocks:${formData?.id ? 'edit' : 'create'}`, {\n label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label'),\n })}\n >\n {initialState ? (\n <>\n <RenderFields\n fields={clientBlock?.fields}\n forceRender\n parentIndexPath=\"\"\n parentPath=\"\" // See Blocks feature path for details as for why this is empty\n parentSchemaPath={schemaFieldsPath}\n permissions={true}\n readOnly={!isEditable}\n />\n <FormSubmit programmaticSubmit={true}>{t('fields:saveChanges')}</FormSubmit>\n </>\n ) : null}\n </Drawer>\n </EditDepthProvider>\n {CustomBlock ? (\n <InlineBlockComponentContext\n value={{\n EditButton,\n initialState,\n InlineBlockContainer,\n Label,\n nodeKey,\n RemoveButton,\n }}\n >\n {CustomBlock}\n </InlineBlockComponentContext>\n ) : (\n <InlineBlockContainer>\n {initialState ? <Label /> : <ShimmerEffect height=\"15px\" width=\"40px\" />}\n {isEditable ? (\n <div className={`${baseClass}__actions`}>\n <EditButton />\n <RemoveButton />\n </div>\n ) : null}\n </InlineBlockContainer>\n )}\n </Form>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import React from 'react';
2
1
  import './index.scss';
2
+ import React from 'react';
3
3
  import type { AdditionalCodeComponentProps } from './Code.js';
4
4
  export declare const CodeBlockBlockComponent: React.FC<Required<Pick<AdditionalCodeComponentProps, 'languages'>>>;
5
5
  //# sourceMappingURL=Block.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Block.d.ts","sourceRoot":"","sources":["../../../../../../src/features/blocks/premade/CodeBlock/Component/Block.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,cAAc,CAAA;AAErB,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,WAAW,CAAA;AAQ7D,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAC5C,QAAQ,CAAC,IAAI,CAAC,4BAA4B,EAAE,WAAW,CAAC,CAAC,CA+F1D,CAAA"}
1
+ {"version":3,"file":"Block.d.ts","sourceRoot":"","sources":["../../../../../../src/features/blocks/premade/CodeBlock/Component/Block.tsx"],"names":[],"mappings":"AAKA,OAAO,cAAc,CAAA;AAWrB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,WAAW,CAAA;AAQ7D,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAC5C,QAAQ,CAAC,IAAI,CAAC,4BAA4B,EAAE,WAAW,CAAC,CAAC,CAmG1D,CAAA"}
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
5
+ import { useLexicalEditable } from '@lexical/react/useLexicalEditable';
5
6
  import { ChevronIcon, CopyToClipboard, Popup, PopupList, RenderFields, useForm, useFormFields } from '@payloadcms/ui';
6
7
  import React from 'react';
7
8
  import { CodeBlockIcon } from '../../../../../lexical/ui/icons/CodeBlock/index.js';
@@ -10,7 +11,7 @@ import { Collapse } from './Collapse/index.js';
10
11
  import { FloatingCollapse } from './FloatingCollapse/index.js';
11
12
  const baseClass = 'payload-richtext-code-block';
12
13
  export const CodeBlockBlockComponent = args => {
13
- const $ = _c(14);
14
+ const $ = _c(15);
14
15
  const {
15
16
  languages
16
17
  } = args;
@@ -51,11 +52,12 @@ export const CodeBlockBlockComponent = args => {
51
52
  setSelectedLanguage
52
53
  } = useFormFields(t0);
53
54
  const selectedLanguageLabel = languages[selectedLanguageField?.value];
55
+ const isEditable = useLexicalEditable();
54
56
  const t1 = selectedLanguageField?.value;
55
57
  let t2;
56
- if ($[2] !== BlockCollapsible || $[3] !== RemoveButton || $[4] !== codeField?.value || $[5] !== formSchema || $[6] !== languages || $[7] !== selectedLanguageLabel || $[8] !== setSelectedLanguage || $[9] !== t1) {
58
+ if ($[2] !== BlockCollapsible || $[3] !== RemoveButton || $[4] !== codeField?.value || $[5] !== formSchema || $[6] !== isEditable || $[7] !== languages || $[8] !== selectedLanguageLabel || $[9] !== setSelectedLanguage || $[10] !== t1) {
57
59
  let t3;
58
- if ($[11] !== languages || $[12] !== setSelectedLanguage) {
60
+ if ($[12] !== languages || $[13] !== setSelectedLanguage) {
59
61
  t3 = t4 => {
60
62
  const {
61
63
  close
@@ -79,11 +81,11 @@ export const CodeBlockBlockComponent = args => {
79
81
  })
80
82
  });
81
83
  };
82
- $[11] = languages;
83
- $[12] = setSelectedLanguage;
84
- $[13] = t3;
84
+ $[12] = languages;
85
+ $[13] = setSelectedLanguage;
86
+ $[14] = t3;
85
87
  } else {
86
- t3 = $[13];
88
+ t3 = $[14];
87
89
  }
88
90
  t2 = _jsx(BlockCollapsible, {
89
91
  Actions: _jsxs("div", {
@@ -99,13 +101,14 @@ export const CodeBlockBlockComponent = args => {
99
101
  })]
100
102
  }),
101
103
  className: `${baseClass}__language-selector`,
104
+ disabled: !isEditable,
102
105
  horizontalAlign: "right",
103
106
  render: t3,
104
107
  showScrollbar: true,
105
108
  size: "large"
106
109
  }), _jsx(CopyToClipboard, {
107
110
  value: codeField?.value ?? ""
108
- }), _jsx(Collapse, {}), _jsx(RemoveButton, {})]
111
+ }), _jsx(Collapse, {}), isEditable && _jsx(RemoveButton, {})]
109
112
  }),
110
113
  className: baseClass,
111
114
  collapsibleProps: {
@@ -124,7 +127,8 @@ export const CodeBlockBlockComponent = args => {
124
127
  parentIndexPath: "",
125
128
  parentPath: "",
126
129
  parentSchemaPath: "",
127
- permissions: true
130
+ permissions: true,
131
+ readOnly: !isEditable
128
132
  })
129
133
  })
130
134
  });
@@ -132,13 +136,14 @@ export const CodeBlockBlockComponent = args => {
132
136
  $[3] = RemoveButton;
133
137
  $[4] = codeField?.value;
134
138
  $[5] = formSchema;
135
- $[6] = languages;
136
- $[7] = selectedLanguageLabel;
137
- $[8] = setSelectedLanguage;
138
- $[9] = t1;
139
- $[10] = t2;
139
+ $[6] = isEditable;
140
+ $[7] = languages;
141
+ $[8] = selectedLanguageLabel;
142
+ $[9] = setSelectedLanguage;
143
+ $[10] = t1;
144
+ $[11] = t2;
140
145
  } else {
141
- t2 = $[10];
146
+ t2 = $[11];
142
147
  }
143
148
  return t2;
144
149
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Block.js","names":["c","_c","ChevronIcon","CopyToClipboard","Popup","PopupList","RenderFields","useForm","useFormFields","React","CodeBlockIcon","useBlockComponentContext","Collapse","FloatingCollapse","baseClass","CodeBlockBlockComponent","args","$","languages","BlockCollapsible","formSchema","RemoveButton","setModified","codeField","_temp","t0","t1","fields_0","dispatch","selectedLanguageField","fields","language","setSelectedLanguage","type","path","value","selectedLanguageLabel","t2","t3","t4","close","_jsx","ButtonGroup","children","Object","entries","map","t5","languageCode","languageLabel","Button","active","disabled","onClick","className","Actions","_jsxs","button","horizontalAlign","render","disableHeaderToggle","disableToggleIndicator","Pill","_Fragment","forceRender","parentIndexPath","parentPath","parentSchemaPath","permissions","code"],"sources":["../../../../../../src/features/blocks/premade/CodeBlock/Component/Block.tsx"],"sourcesContent":["'use client'\nimport type {} from 'payload'\n\nimport {\n ChevronIcon,\n CopyToClipboard,\n Popup,\n PopupList,\n RenderFields,\n useForm,\n useFormFields,\n} from '@payloadcms/ui'\nimport React from 'react'\n\nimport './index.scss'\n\nimport type { AdditionalCodeComponentProps } from './Code.js'\n\nimport { CodeBlockIcon } from '../../../../../lexical/ui/icons/CodeBlock/index.js'\nimport { useBlockComponentContext } from '../../../client/component/BlockContent.js'\nimport { Collapse } from './Collapse/index.js'\nimport { FloatingCollapse } from './FloatingCollapse/index.js'\n\nconst baseClass = 'payload-richtext-code-block'\nexport const CodeBlockBlockComponent: React.FC<\n Required<Pick<AdditionalCodeComponentProps, 'languages'>>\n> = (args) => {\n const { languages } = args\n const { BlockCollapsible, formSchema, RemoveButton } = useBlockComponentContext()\n const { setModified } = useForm()\n\n const { codeField } = useFormFields(([fields]) => ({\n codeField: fields?.code,\n }))\n\n const { selectedLanguageField, setSelectedLanguage } = useFormFields(([fields, dispatch]) => ({\n selectedLanguageField: fields?.language,\n setSelectedLanguage: (language: string) => {\n dispatch({\n type: 'UPDATE',\n path: 'language',\n value: language,\n })\n setModified(true)\n },\n }))\n\n const selectedLanguageLabel = languages[selectedLanguageField?.value as keyof typeof languages]\n\n return (\n <BlockCollapsible\n Actions={\n <div className={`${baseClass}__actions`}>\n <Popup\n button={\n <div\n className={`${baseClass}__language-selector-button`}\n data-selected-language={selectedLanguageField?.value}\n >\n <span>{selectedLanguageLabel}</span>\n <ChevronIcon className={`${baseClass}__chevron`} />\n </div>\n }\n className={`${baseClass}__language-selector`}\n horizontalAlign=\"right\"\n render={({ close }) => (\n <PopupList.ButtonGroup>\n {Object.entries(languages).map(([languageCode, languageLabel]) => {\n return (\n <PopupList.Button\n active={false}\n disabled={false}\n key={languageCode}\n onClick={() => {\n setSelectedLanguage(languageCode)\n close()\n }}\n >\n <span className={`${baseClass}__language-code`} data-language={languageCode}>\n {languageLabel}\n </span>\n </PopupList.Button>\n )\n })}\n </PopupList.ButtonGroup>\n )}\n showScrollbar\n size=\"large\"\n />\n <CopyToClipboard value={(codeField?.value as string) ?? ''} />\n\n <Collapse />\n\n <RemoveButton />\n </div>\n }\n className={baseClass}\n collapsibleProps={{\n AfterCollapsible: <FloatingCollapse />,\n disableHeaderToggle: true,\n disableToggleIndicator: true,\n }}\n Pill={\n <div className={`${baseClass}__pill`}>\n <CodeBlockIcon />\n </div>\n }\n >\n <>\n <RenderFields\n fields={formSchema}\n forceRender={true}\n parentIndexPath=\"\"\n parentPath={''}\n parentSchemaPath=\"\"\n permissions={true}\n />\n </>\n </BlockCollapsible>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SACEC,WAAW,EACXC,eAAe,EACfC,KAAK,EACLC,SAAS,EACTC,YAAY,EACZC,OAAO,EACPC,aAAa,QACR;AACP,OAAOC,KAAA,MAAW;AAMlB,SAASC,aAAa,QAAQ;AAC9B,SAASC,wBAAwB,QAAQ;AACzC,SAASC,QAAQ,QAAQ;AACzB,SAASC,gBAAgB,QAAQ;AAEjC,MAAMC,SAAA,GAAY;AAClB,OAAO,MAAMC,uBAAA,GAETC,IAAA;EAAA,MAAAC,CAAA,GAAAhB,EAAA;EACF;IAAAiB;EAAA,IAAsBF,IAAA;EACtB;IAAAG,gBAAA;IAAAC,UAAA;IAAAC;EAAA,IAAuDV,wBAAA;EACvD;IAAAW;EAAA,IAAwBf,OAAA;EAExB;IAAAgB;EAAA,IAAsBf,aAAA,CAAAgB,KAEtB;EAAA,IAAAC,EAAA;EAAA,IAAAR,CAAA,QAAAK,WAAA;IAEqEG,EAAA,GAAAC,EAAA;MAAC,OAAAC,QAAA,EAAAC,QAAA,IAAAF,EAAkB;MAAA;QAAAG,qBAAA,EAC/DC,QAAA,EAAAC,QAAA;QAAAC,mBAAA,EAAAD,QAAA;UAErBH,QAAA;YAAAK,IAAA,EACQ;YAAAC,IAAA,EACA;YAAAC,KAAA,EACCJ;UAAA,CACT;UACAT,WAAA,KAAY;QAAA;MAAA;IAAA;IAEhBL,CAAA,MAAAK,WAAA;IAAAL,CAAA,MAAAQ,EAAA;EAAA;IAAAA,EAAA,GAAAR,CAAA;EAAA;EAVA;IAAAY,qBAAA;IAAAG;EAAA,IAAuDxB,aAAA,CAAciB,EAUrE;EAEA,MAAAW,qBAAA,GAA8BlB,SAAS,CAACW,qBAAA,EAAAM,KAAA;EAUF,MAAAT,EAAA,GAAAG,qBAAA,EAAAM,KAAA;EAAuB,IAAAE,EAAA;EAAA,IAAApB,CAAA,QAAAE,gBAAA,IAAAF,CAAA,QAAAI,YAAA,IAAAJ,CAAA,QAAAM,SAAA,EAAAY,KAAA,IAAAlB,CAAA,QAAAG,UAAA,IAAAH,CAAA,QAAAC,SAAA,IAAAD,CAAA,QAAAmB,qBAAA,IAAAnB,CAAA,QAAAe,mBAAA,IAAAf,CAAA,QAAAS,EAAA;IAAA,IAAAY,EAAA;IAAA,IAAArB,CAAA,SAAAC,SAAA,IAAAD,CAAA,SAAAe,mBAAA;MAQ3CM,EAAA,GAAAC,EAAA;QAAC;UAAAC;QAAA,IAAAD,EAAS;QAAA,OAChBE,IAAA,CAAApC,SAAA,CAAAqC,WAAA;UAAAC,QAAA,EACGC,MAAA,CAAAC,OAAA,CAAe3B,SAAA,EAAA4B,GAAA,CAAAC,EAAA;YAAgB,OAAAC,YAAA,EAAAC,aAAA,IAAAF,EAA6B;YAAA,OAEzDN,IAAA,CAAApC,SAAA,CAAA6C,MAAA;cAAAC,MAAA;cAAAC,QAAA;cAAAC,OAAA,EAAAA,CAAA;gBAKIrB,mBAAA,CAAoBgB,YAAA;gBACpBR,KAAA;cAAA;cAAAG,QAAA,EAGFF,IAAA,CAAC;gBAAAa,SAAA,EAAgB,GAAAxC,SAAA,iBAA6B;gBAAA,iBAAiBkC,YAAA;gBAAAL,QAAA,EAC5DM;cAAA,C;eAPED,YAAA;UAAA,CAWX;QAAA,C;;;;;;;;IAjCZX,EAAA,GAAAI,IAAA,CAACtB,gBAAA;MAAAoC,OAAA,EAEGC,KAAA,CAAC;QAAAF,SAAA,EAAe,GAAAxC,SAAA,WAAuB;QAAA6B,QAAA,GACrCF,IAAA,CAAArC,KAAA;UAAAqD,MAAA,EAEID,KAAA,CAAC;YAAAF,SAAA,EACY,GAAAxC,SAAA,4BAAwC;YAAA,0BAC3BY,EAAuB;YAAAiB,QAAA,GAE/CF,IAAA,CAAC;cAAAE,QAAA,EAAMP;YAAA,C,GACPK,IAAA,CAAAvC,WAAA;cAAAoD,SAAA,EAAwB,GAAAxC,SAAA;YAAuB,C;;qBAGxC,GAAAA,SAAA,qBAAiC;UAAA4C,eAAA,EAC5B;UAAAC,MAAA,EACRrB,E;;gBAsBH;QAAA,C,GAEPG,IAAA,CAAAtC,eAAA;UAAAgC,KAAA,EAAwBZ,SAAC,EAAAY,KAAA,IAA+B;QAAA,C,GAExDM,IAAA,CAAA7B,QAAA,IAAC,GAED6B,IAAA,CAACpB,YAAA;MAAA,C;;;0BAKeoB,IAAA,CAAA5B,gBAAA,IAAC;QAAA+C,mBAAA;QAAAC,sBAAA;MAAA;MAAAC,IAAA,EAKnBrB,IAAA,CAAC;QAAAa,SAAA,EAAe,GAAAxC,SAAA,QAAoB;QAAA6B,QAAA,EAClCF,IAAA,CAAA/B,aAAA,IAAC;MAAA,C;gBAIL+B,IAAA,CAAAsB,SAAA;QAAApB,QAAA,EACEF,IAAA,CAAAnC,YAAA;UAAAwB,MAAA,EACUV,UAAA;UAAA4C,WAAA;UAAAC,eAAA,EAEQ;UAAAC,UAAA,EACJ;UAAAC,gBAAA,EACK;UAAAC,WAAA;QAAA,C;;;;;;;;;;;;;;;SAhEvB/B,E;CAsEJ;AA9FI,SAAAb,MAAAC,EAAA;EAKmC,OAAAK,MAAA,IAAAL,EAAQ;EAAA;IAAAF,SAAA,EAChCO,MAAA,EAAAuC;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"Block.js","names":["c","_c","useLexicalEditable","ChevronIcon","CopyToClipboard","Popup","PopupList","RenderFields","useForm","useFormFields","React","CodeBlockIcon","useBlockComponentContext","Collapse","FloatingCollapse","baseClass","CodeBlockBlockComponent","args","$","languages","BlockCollapsible","formSchema","RemoveButton","setModified","codeField","_temp","t0","t1","fields_0","dispatch","selectedLanguageField","fields","language","setSelectedLanguage","type","path","value","selectedLanguageLabel","isEditable","t2","t3","t4","close","_jsx","ButtonGroup","children","Object","entries","map","t5","languageCode","languageLabel","Button","active","disabled","onClick","className","Actions","_jsxs","button","horizontalAlign","render","disableHeaderToggle","disableToggleIndicator","Pill","_Fragment","forceRender","parentIndexPath","parentPath","parentSchemaPath","permissions","readOnly","code"],"sources":["../../../../../../src/features/blocks/premade/CodeBlock/Component/Block.tsx"],"sourcesContent":["'use client'\nimport type {} from 'payload'\n\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\n\nimport './index.scss'\n\nimport {\n ChevronIcon,\n CopyToClipboard,\n Popup,\n PopupList,\n RenderFields,\n useForm,\n useFormFields,\n} from '@payloadcms/ui'\nimport React from 'react'\n\nimport type { AdditionalCodeComponentProps } from './Code.js'\n\nimport { CodeBlockIcon } from '../../../../../lexical/ui/icons/CodeBlock/index.js'\nimport { useBlockComponentContext } from '../../../client/component/BlockContent.js'\nimport { Collapse } from './Collapse/index.js'\nimport { FloatingCollapse } from './FloatingCollapse/index.js'\n\nconst baseClass = 'payload-richtext-code-block'\nexport const CodeBlockBlockComponent: React.FC<\n Required<Pick<AdditionalCodeComponentProps, 'languages'>>\n> = (args) => {\n const { languages } = args\n const { BlockCollapsible, formSchema, RemoveButton } = useBlockComponentContext()\n const { setModified } = useForm()\n\n const { codeField } = useFormFields(([fields]) => ({\n codeField: fields?.code,\n }))\n\n const { selectedLanguageField, setSelectedLanguage } = useFormFields(([fields, dispatch]) => ({\n selectedLanguageField: fields?.language,\n setSelectedLanguage: (language: string) => {\n dispatch({\n type: 'UPDATE',\n path: 'language',\n value: language,\n })\n setModified(true)\n },\n }))\n\n const selectedLanguageLabel = languages[selectedLanguageField?.value as keyof typeof languages]\n\n const isEditable = useLexicalEditable()\n\n return (\n <BlockCollapsible\n Actions={\n <div className={`${baseClass}__actions`}>\n <Popup\n button={\n <div\n className={`${baseClass}__language-selector-button`}\n data-selected-language={selectedLanguageField?.value}\n >\n <span>{selectedLanguageLabel}</span>\n <ChevronIcon className={`${baseClass}__chevron`} />\n </div>\n }\n className={`${baseClass}__language-selector`}\n disabled={!isEditable}\n horizontalAlign=\"right\"\n render={({ close }) => (\n <PopupList.ButtonGroup>\n {Object.entries(languages).map(([languageCode, languageLabel]) => {\n return (\n <PopupList.Button\n active={false}\n disabled={false}\n key={languageCode}\n onClick={() => {\n setSelectedLanguage(languageCode)\n close()\n }}\n >\n <span className={`${baseClass}__language-code`} data-language={languageCode}>\n {languageLabel}\n </span>\n </PopupList.Button>\n )\n })}\n </PopupList.ButtonGroup>\n )}\n showScrollbar\n size=\"large\"\n />\n <CopyToClipboard value={(codeField?.value as string) ?? ''} />\n\n <Collapse />\n\n {isEditable && <RemoveButton />}\n </div>\n }\n className={baseClass}\n collapsibleProps={{\n AfterCollapsible: <FloatingCollapse />,\n disableHeaderToggle: true,\n disableToggleIndicator: true,\n }}\n Pill={\n <div className={`${baseClass}__pill`}>\n <CodeBlockIcon />\n </div>\n }\n >\n <>\n <RenderFields\n fields={formSchema}\n forceRender={true}\n parentIndexPath=\"\"\n parentPath={''}\n parentSchemaPath=\"\"\n permissions={true}\n readOnly={!isEditable}\n />\n </>\n </BlockCollapsible>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../src/features/blocks/server/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,eAAO,MAAM,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAqU1C,CAAA"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../src/features/blocks/server/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,eAAO,MAAM,IAAI,EAAE,OAAO,CAAC,gBAAgB,CA8U1C,CAAA"}
@@ -2,9 +2,9 @@ export const i18n = {
2
2
  ar: {
3
3
  inlineBlocks: {
4
4
  create: 'أنشئ {{label}}',
5
- edit: 'تحرير {{التسمية}}',
5
+ edit: 'تحرير {{label}}',
6
6
  label: 'الكتل الداخلية',
7
- remove: 'إزالة {{التسمية}}'
7
+ remove: 'إزالة {{label}}'
8
8
  },
9
9
  label: 'كتل'
10
10
  },
@@ -19,16 +19,16 @@ export const i18n = {
19
19
  },
20
20
  bg: {
21
21
  inlineBlocks: {
22
- create: 'Създайте {{етикет}}',
23
- edit: 'Редактирай {{етикет}}',
22
+ create: 'Създайте {{label}}',
23
+ edit: 'Редактирай {{label}}',
24
24
  label: 'Вградени блокове',
25
- remove: 'Премахнете {{етикет}}'
25
+ remove: 'Премахнете {{label}}'
26
26
  },
27
27
  label: 'Блокове'
28
28
  },
29
29
  cs: {
30
30
  inlineBlocks: {
31
- create: 'Vytvořte {{štítek}}',
31
+ create: 'Vytvořte {{label}}',
32
32
  edit: 'Upravit {{label}}',
33
33
  label: 'Inline bloky',
34
34
  remove: 'Odstraňte {{label}}'
@@ -64,8 +64,8 @@ export const i18n = {
64
64
  },
65
65
  es: {
66
66
  inlineBlocks: {
67
- create: 'Crear {{etiqueta}}',
68
- edit: 'Editar {{etiqueta}}',
67
+ create: 'Crear {{label}}',
68
+ edit: 'Editar {{label}}',
69
69
  label: 'Bloques en línea',
70
70
  remove: 'Eliminar {{label}}'
71
71
  },
@@ -82,10 +82,10 @@ export const i18n = {
82
82
  },
83
83
  fa: {
84
84
  inlineBlocks: {
85
- create: 'ایجاد {{برچسب}}',
86
- edit: 'ویرایش {{برچسب}}',
85
+ create: 'ایجاد {{label}}',
86
+ edit: 'ویرایش {{label}}',
87
87
  label: 'بلوک‌های درون خطی',
88
- remove: 'حذف {{برچسب}}'
88
+ remove: 'حذف {{label}}'
89
89
  },
90
90
  label: 'بلوک ها'
91
91
  },
@@ -100,34 +100,43 @@ export const i18n = {
100
100
  },
101
101
  he: {
102
102
  inlineBlocks: {
103
- create: 'צור {{תווית}}',
104
- edit: 'ערוך {{תווית}}',
103
+ create: 'צור {{label}}',
104
+ edit: 'ערוך {{label}}',
105
105
  label: 'בלוקים משורשרים',
106
- remove: 'הסר {{תווית}}'
106
+ remove: 'הסר {{label}}'
107
107
  },
108
108
  label: 'חסימות'
109
109
  },
110
110
  hr: {
111
111
  inlineBlocks: {
112
- create: 'Stvori {{oznaka}}',
112
+ create: 'Stvori {{label}}',
113
113
  edit: 'Uredi {{label}}',
114
114
  label: 'Unutrašnji blokovi',
115
- remove: 'Ukloni {{oznaka}}'
115
+ remove: 'Ukloni {{label}}'
116
116
  },
117
117
  label: 'Blokovi'
118
118
  },
119
119
  hu: {
120
120
  inlineBlocks: {
121
- create: 'Hozzon létre {{címke}}',
122
- edit: 'Szerkesztés {{címke}}',
121
+ create: 'Hozzon létre {{label}}',
122
+ edit: 'Szerkesztés {{label}}',
123
123
  label: 'Beágyazott blokkok',
124
124
  remove: 'Távolítsa el a {{label}}'
125
125
  },
126
126
  label: 'Blokkok'
127
127
  },
128
+ is: {
129
+ inlineBlocks: {
130
+ create: 'Skrá {{label}}',
131
+ edit: 'Breyta {{label}}',
132
+ label: 'Línublokkir',
133
+ remove: 'Fjarlægja {{label}}'
134
+ },
135
+ label: 'Blokkir'
136
+ },
128
137
  it: {
129
138
  inlineBlocks: {
130
- create: 'Crea {{etichetta}}',
139
+ create: 'Crea {{label}}',
131
140
  edit: 'Modifica {{label}}',
132
141
  label: 'Blocchi in linea',
133
142
  remove: 'Rimuovi {{label}}'
@@ -139,7 +148,7 @@ export const i18n = {
139
148
  create: '{{label}}を作成する',
140
149
  edit: '{{label}}を編集する',
141
150
  label: 'インラインブロック',
142
- remove: '{{ラベル}}を削除します'
151
+ remove: '{{label}}を削除します'
143
152
  },
144
153
  label: 'ブロック'
145
154
  },
@@ -182,9 +191,9 @@ export const i18n = {
182
191
  pl: {
183
192
  inlineBlocks: {
184
193
  create: 'Utwórz {{label}}',
185
- edit: 'Edytuj {{etykieta}}',
194
+ edit: 'Edytuj {{label}}',
186
195
  label: 'Blokowanie w linii',
187
- remove: 'Usuń {{etykieta}}'
196
+ remove: 'Usuń {{label}}'
188
197
  },
189
198
  label: 'Bloki'
190
199
  },
@@ -199,10 +208,10 @@ export const i18n = {
199
208
  },
200
209
  ro: {
201
210
  inlineBlocks: {
202
- create: 'Creează {{eticheta}}',
203
- edit: 'Editați {{eticheta}}',
211
+ create: 'Creează {{label}}',
212
+ edit: 'Editați {{label}}',
204
213
  label: 'Blocuri in linie',
205
- remove: 'Ștergeți {{etichetă}}'
214
+ remove: 'Ștergeți {{label}}'
206
215
  },
207
216
  label: 'Blocuri'
208
217
  },
@@ -220,22 +229,22 @@ export const i18n = {
220
229
  create: 'Kreiraj {{label}}',
221
230
  edit: 'Izmeni {{label}}',
222
231
  label: 'Umetnuti blokovi',
223
- remove: 'Ukloni {{oznaka}}'
232
+ remove: 'Ukloni {{label}}'
224
233
  },
225
234
  label: 'Blokovi'
226
235
  },
227
236
  ru: {
228
237
  inlineBlocks: {
229
238
  create: 'Создать {{label}}',
230
- edit: 'Изменить {{метка}}',
239
+ edit: 'Изменить {{label}}',
231
240
  label: 'Встроенные блоки',
232
- remove: 'Удалить {{метка}}'
241
+ remove: 'Удалить {{label}}'
233
242
  },
234
243
  label: 'Блоки'
235
244
  },
236
245
  sk: {
237
246
  inlineBlocks: {
238
- create: 'Vytvorte {{označenie}}',
247
+ create: 'Vytvorte {{label}}',
239
248
  edit: 'Upraviť {{label}}',
240
249
  label: 'Inline bloky',
241
250
  remove: 'Odstráňte {{label}}'
@@ -244,7 +253,7 @@ export const i18n = {
244
253
  },
245
254
  sl: {
246
255
  inlineBlocks: {
247
- create: 'Ustvari {{oznaka}}',
256
+ create: 'Ustvari {{label}}',
248
257
  edit: 'Uredi {{label}}',
249
258
  label: 'Vrstični bloki',
250
259
  remove: 'Odstrani {{label}}'
@@ -254,9 +263,9 @@ export const i18n = {
254
263
  sv: {
255
264
  inlineBlocks: {
256
265
  create: 'Skapa {{label}}',
257
- edit: 'Redigera {{etikett}}',
266
+ edit: 'Redigera {{label}}',
258
267
  label: 'Inline-blockar',
259
- remove: 'Ta bort {{etikett}}'
268
+ remove: 'Ta bort {{label}}'
260
269
  },
261
270
  label: 'Block'
262
271
  },
@@ -280,10 +289,10 @@ export const i18n = {
280
289
  },
281
290
  tr: {
282
291
  inlineBlocks: {
283
- create: '{{Etiketi}} oluşturun',
284
- edit: "{{Etiket}}'i düzenleyin",
292
+ create: '{{label}} oluşturun',
293
+ edit: "{{label}}'i düzenleyin",
285
294
  label: 'Satır İçi Bloklar',
286
- remove: '{{Etiketi}} kaldırın'
295
+ remove: '{{label}} kaldırın'
287
296
  },
288
297
  label: 'Bloklar'
289
298
  },
@@ -292,16 +301,16 @@ export const i18n = {
292
301
  create: 'Створити {{label}}',
293
302
  edit: 'Редагувати {{label}}',
294
303
  label: 'Вбудовані блоки',
295
- remove: 'Видалити {{мітку}}'
304
+ remove: 'Видалити {{label}}'
296
305
  },
297
306
  label: 'Блоки'
298
307
  },
299
308
  vi: {
300
309
  inlineBlocks: {
301
310
  create: 'Tạo {{label}}',
302
- edit: 'Chỉnh sửa {{nhãn}}',
311
+ edit: 'Chỉnh sửa {{label}}',
303
312
  label: 'Khối nội tuyến',
304
- remove: 'Xóa {{nhãn}}'
313
+ remove: 'Xóa {{label}}'
305
314
  },
306
315
  label: 'Khối'
307
316
  },