payload-better-editor 1.2.2 → 1.4.0

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 (119) hide show
  1. package/dist/admin/ErrorBoundary.d.ts +1 -10
  2. package/dist/admin/ErrorBoundary.js +14 -5
  3. package/dist/admin/ErrorBoundary.js.map +1 -1
  4. package/dist/admin/LiveEditorOverlay.js +4 -2
  5. package/dist/admin/LiveEditorOverlay.js.map +1 -1
  6. package/dist/admin/LiveEditorToggle.d.ts +2 -0
  7. package/dist/admin/LiveEditorToggle.js +14 -9
  8. package/dist/admin/LiveEditorToggle.js.map +1 -1
  9. package/dist/admin/PreviewFrame.js +6 -4
  10. package/dist/admin/PreviewFrame.js.map +1 -1
  11. package/dist/admin/PreviewToolbar.js +20 -13
  12. package/dist/admin/PreviewToolbar.js.map +1 -1
  13. package/dist/admin/SettingsBanner.js +10 -5
  14. package/dist/admin/SettingsBanner.js.map +1 -1
  15. package/dist/admin/ViewportToggle.js +30 -25
  16. package/dist/admin/ViewportToggle.js.map +1 -1
  17. package/dist/admin/blocks/AddBlockDrawer.js +7 -3
  18. package/dist/admin/blocks/AddBlockDrawer.js.map +1 -1
  19. package/dist/admin/blocks/BlockActionsToolbar.js +13 -11
  20. package/dist/admin/blocks/BlockActionsToolbar.js.map +1 -1
  21. package/dist/admin/blocks/BlockEmptyState.js +7 -3
  22. package/dist/admin/blocks/BlockEmptyState.js.map +1 -1
  23. package/dist/admin/blocks/BlockHeader.d.ts +1 -0
  24. package/dist/admin/blocks/BlockHeader.js +9 -8
  25. package/dist/admin/blocks/BlockHeader.js.map +1 -1
  26. package/dist/admin/blocks/schema.js +38 -7
  27. package/dist/admin/blocks/schema.js.map +1 -1
  28. package/dist/admin/sidebar/BlockSettingsTab.js +19 -4
  29. package/dist/admin/sidebar/BlockSettingsTab.js.map +1 -1
  30. package/dist/admin/sidebar/DocumentMetaTab.js +6 -2
  31. package/dist/admin/sidebar/DocumentMetaTab.js.map +1 -1
  32. package/dist/admin/sidebar/DocumentSettingsTab.js +6 -2
  33. package/dist/admin/sidebar/DocumentSettingsTab.js.map +1 -1
  34. package/dist/admin/sidebar/Sidebar.js +21 -16
  35. package/dist/admin/sidebar/Sidebar.js.map +1 -1
  36. package/dist/admin/sidebar/ValidationSummary.js +5 -2
  37. package/dist/admin/sidebar/ValidationSummary.js.map +1 -1
  38. package/dist/global.js +54 -39
  39. package/dist/global.js.map +1 -1
  40. package/dist/hooks/usePreviewBinding.js +6 -2
  41. package/dist/hooks/usePreviewBinding.js.map +1 -1
  42. package/dist/hooks/usePreviewSettingsSync.js +8 -3
  43. package/dist/hooks/usePreviewSettingsSync.js.map +1 -1
  44. package/dist/i18n/cs.d.ts +2 -0
  45. package/dist/i18n/cs.js +136 -0
  46. package/dist/i18n/cs.js.map +1 -0
  47. package/dist/i18n/da.d.ts +2 -0
  48. package/dist/i18n/da.js +136 -0
  49. package/dist/i18n/da.js.map +1 -0
  50. package/dist/i18n/de.d.ts +2 -0
  51. package/dist/i18n/de.js +135 -0
  52. package/dist/i18n/de.js.map +1 -0
  53. package/dist/i18n/en.d.ts +2 -0
  54. package/dist/i18n/en.js +135 -0
  55. package/dist/i18n/en.js.map +1 -0
  56. package/dist/i18n/es.d.ts +2 -0
  57. package/dist/i18n/es.js +136 -0
  58. package/dist/i18n/es.js.map +1 -0
  59. package/dist/i18n/fr.d.ts +2 -0
  60. package/dist/i18n/fr.js +136 -0
  61. package/dist/i18n/fr.js.map +1 -0
  62. package/dist/i18n/index.d.ts +2 -0
  63. package/dist/i18n/index.js +34 -0
  64. package/dist/i18n/index.js.map +1 -0
  65. package/dist/i18n/it.d.ts +2 -0
  66. package/dist/i18n/it.js +136 -0
  67. package/dist/i18n/it.js.map +1 -0
  68. package/dist/i18n/merge.d.ts +8 -0
  69. package/dist/i18n/merge.js +22 -0
  70. package/dist/i18n/merge.js.map +1 -0
  71. package/dist/i18n/nb.d.ts +2 -0
  72. package/dist/i18n/nb.js +136 -0
  73. package/dist/i18n/nb.js.map +1 -0
  74. package/dist/i18n/nl.d.ts +2 -0
  75. package/dist/i18n/nl.js +136 -0
  76. package/dist/i18n/nl.js.map +1 -0
  77. package/dist/i18n/pl.d.ts +2 -0
  78. package/dist/i18n/pl.js +136 -0
  79. package/dist/i18n/pl.js.map +1 -0
  80. package/dist/i18n/pt.d.ts +2 -0
  81. package/dist/i18n/pt.js +136 -0
  82. package/dist/i18n/pt.js.map +1 -0
  83. package/dist/i18n/ro.d.ts +2 -0
  84. package/dist/i18n/ro.js +136 -0
  85. package/dist/i18n/ro.js.map +1 -0
  86. package/dist/i18n/sv.d.ts +2 -0
  87. package/dist/i18n/sv.js +136 -0
  88. package/dist/i18n/sv.js.map +1 -0
  89. package/dist/i18n/tr.d.ts +2 -0
  90. package/dist/i18n/tr.js +136 -0
  91. package/dist/i18n/tr.js.map +1 -0
  92. package/dist/i18n/types.d.ts +133 -0
  93. package/dist/i18n/types.js +3 -0
  94. package/dist/i18n/types.js.map +1 -0
  95. package/dist/i18n/uk.d.ts +2 -0
  96. package/dist/i18n/uk.js +136 -0
  97. package/dist/i18n/uk.js.map +1 -0
  98. package/dist/i18n/useBetterEditorT.d.ts +2 -0
  99. package/dist/i18n/useBetterEditorT.js +10 -0
  100. package/dist/i18n/useBetterEditorT.js.map +1 -0
  101. package/dist/index.d.ts +2 -1
  102. package/dist/index.js +19 -2
  103. package/dist/index.js.map +1 -1
  104. package/dist/preview/HoverToolbar.d.ts +8 -0
  105. package/dist/preview/HoverToolbar.js +31 -29
  106. package/dist/preview/HoverToolbar.js.map +1 -1
  107. package/dist/preview/HoverToolbarController.d.ts +6 -0
  108. package/dist/preview/HoverToolbarController.js +20 -5
  109. package/dist/preview/HoverToolbarController.js.map +1 -1
  110. package/dist/styles/blocks-tab.css +1 -7
  111. package/dist/styles/overlay.css +2 -0
  112. package/dist/styles/sidebar.css +1 -0
  113. package/dist/styles/toggle.css +17 -0
  114. package/dist/types.d.ts +6 -0
  115. package/dist/types.js.map +1 -1
  116. package/dist/version.d.ts +1 -1
  117. package/dist/version.js +1 -1
  118. package/dist/version.js.map +1 -1
  119. package/package.json +13 -14
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/usePreviewBinding.ts"],"sourcesContent":["'use client'\n\nimport { useCallback, useEffect, useRef, type RefObject } from 'react'\nimport { HoverToolbarController } from '../preview/HoverToolbarController'\nimport { installClickToFocus } from '../preview/installClickToFocus'\nimport { installHoverStyles } from '../preview/installHoverStyles'\nimport type { BlockActionMessage } from '../preview/protocol'\nimport { BLOCK_ID_SELECTOR } from '../internal/dom'\nimport { getSameOriginDocument } from '../internal/iframe'\nimport { useLatestRef } from './useLatestRef'\n\nexport type PreviewBindingSettings = {\n hoverColorTopLevel: string\n hoverColorNested: string\n hoverOutlineWidth: number\n showHoverToolbar: boolean\n hoverToolbarPosition: import('../internal/constants').HoverToolbarPosition\n}\n\nexport type UsePreviewBindingArgs = {\n iframeRef: RefObject<HTMLIFrameElement | null>\n settings: PreviewBindingSettings\n interactModeRef: RefObject<boolean>\n onFocusBlock: (id: string) => void\n onBlockAction: (id: string, action: BlockActionMessage['action']) => void\n onLoadingChange: (loading: boolean) => void\n}\n\nexport type UsePreviewBindingReturn = {\n controllerRef: RefObject<HoverToolbarController | null>\n isBoundRef: RefObject<boolean>\n}\n\n/**\n * Owns the iframe load → install styles + click handler + hover toolbar\n * lifecycle. Idempotent: tears down previous bindings before installing\n * new ones, and unbinds on unmount.\n */\nexport const usePreviewBinding = ({\n iframeRef,\n settings,\n interactModeRef,\n onFocusBlock,\n onBlockAction,\n onLoadingChange,\n}: UsePreviewBindingArgs): UsePreviewBindingReturn => {\n const teardownRef = useRef<(() => void) | null>(null)\n const controllerRef = useRef<HoverToolbarController | null>(null)\n const isBoundRef = useRef(false)\n // One-shot flags so dev-only console warnings don't repeat on every\n // iframe re-load during a single editor session.\n const warnedMissingBlocksRef = useRef(false)\n const warnedCrossOriginRef = useRef(false)\n const settingsRef = useLatestRef(settings)\n const onFocusBlockRef = useLatestRef(onFocusBlock)\n const onBlockActionRef = useLatestRef(onBlockAction)\n const onLoadingChangeRef = useLatestRef(onLoadingChange)\n\n const bindToDocument = useCallback(\n (doc: Document) => {\n teardownRef.current?.()\n controllerRef.current?.destroy()\n controllerRef.current = null\n\n const s = settingsRef.current\n\n const removeStyles = installHoverStyles(doc, {\n topColor: s.hoverColorTopLevel,\n nestedColor: s.hoverColorNested,\n outlineWidth: s.hoverOutlineWidth,\n })\n const removeClick = installClickToFocus(doc, (id) => onFocusBlockRef.current(id), {\n isEnabled: () => !interactModeRef.current,\n })\n\n if (s.showHoverToolbar) {\n controllerRef.current = new HoverToolbarController(doc, {\n position: s.hoverToolbarPosition,\n outlineWidth: s.hoverOutlineWidth,\n onAction: (id, action) => onBlockActionRef.current(id, action),\n })\n }\n\n // Dev-only sanity check: zero [data-better-editor-id] elements means\n // the consumer forgot to spread getBlockProps() on their block wrappers\n // (or the page just has no blocks yet — both look identical from here).\n // Warn at most once per editor session to avoid console spam.\n if (process.env.NODE_ENV !== 'production' && !warnedMissingBlocksRef.current) {\n const blockCount = doc.querySelectorAll(BLOCK_ID_SELECTOR).length\n if (blockCount === 0) {\n warnedMissingBlocksRef.current = true\n console.warn(\n \"[better-editor] no [data-better-editor-id] elements found in the preview iframe — if your page has blocks, wrap them with `getBlockProps(block)` from 'payload-better-editor/client' so click-to-edit works.\",\n )\n }\n }\n\n isBoundRef.current = true\n teardownRef.current = () => {\n removeStyles()\n removeClick()\n controllerRef.current?.destroy()\n controllerRef.current = null\n isBoundRef.current = false\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps -- refs are stable\n [],\n )\n\n // Bind once on mount; teardown on unmount. All inputs flow through\n // stable refs, so the load listener doesn't need to re-attach.\n useEffect(() => {\n const iframe = iframeRef.current\n if (!iframe) return\n\n const onLoad = () => {\n const doc = getSameOriginDocument(iframe)\n if (!doc) {\n onLoadingChangeRef.current(false)\n if (process.env.NODE_ENV !== 'production' && !warnedCrossOriginRef.current) {\n warnedCrossOriginRef.current = true\n console.warn(\n '[better-editor] preview iframe is cross-origin — click-to-edit, hover styles, and the in-iframe toolbar are disabled. Serve your preview URL from the same origin as the Payload admin.',\n )\n }\n return\n }\n // Fresh iframes report readyState='complete' on their initial\n // `about:blank` document before `src` has navigated. Skip and wait\n // for the real `load` event so we don't bind to an empty body.\n // `doc.URL` is a non-nullable string on Document — safer than\n // `doc.location.href`, which Firefox can briefly expose as null.\n if (!doc.URL || doc.URL === 'about:blank') return\n onLoadingChangeRef.current(false)\n bindToDocument(doc)\n }\n\n const initialDoc = getSameOriginDocument(iframe)\n if (initialDoc && initialDoc.readyState === 'complete') {\n onLoad()\n }\n iframe.addEventListener('load', onLoad)\n\n return () => {\n iframe.removeEventListener('load', onLoad)\n teardownRef.current?.()\n teardownRef.current = null\n controllerRef.current?.destroy()\n controllerRef.current = null\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- refs are stable\n }, [])\n\n return { controllerRef, isBoundRef }\n}\n"],"names":["useCallback","useEffect","useRef","HoverToolbarController","installClickToFocus","installHoverStyles","BLOCK_ID_SELECTOR","getSameOriginDocument","useLatestRef","usePreviewBinding","iframeRef","settings","interactModeRef","onFocusBlock","onBlockAction","onLoadingChange","teardownRef","controllerRef","isBoundRef","warnedMissingBlocksRef","warnedCrossOriginRef","settingsRef","onFocusBlockRef","onBlockActionRef","onLoadingChangeRef","bindToDocument","doc","current","destroy","s","removeStyles","topColor","hoverColorTopLevel","nestedColor","hoverColorNested","outlineWidth","hoverOutlineWidth","removeClick","id","isEnabled","showHoverToolbar","position","hoverToolbarPosition","onAction","action","process","env","NODE_ENV","blockCount","querySelectorAll","length","console","warn","iframe","onLoad","URL","initialDoc","readyState","addEventListener","removeEventListener"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/hooks/usePreviewBinding.ts"],"sourcesContent":["'use client'\n\nimport { useCallback, useEffect, useRef, type RefObject } from 'react'\nimport { HoverToolbarController, toHoverToolbarLabels } from '../preview/HoverToolbarController'\nimport { useBetterEditorT } from '../i18n/useBetterEditorT'\nimport { installClickToFocus } from '../preview/installClickToFocus'\nimport { installHoverStyles } from '../preview/installHoverStyles'\nimport type { BlockActionMessage } from '../preview/protocol'\nimport { BLOCK_ID_SELECTOR } from '../internal/dom'\nimport { getSameOriginDocument } from '../internal/iframe'\nimport { useLatestRef } from './useLatestRef'\n\nexport type PreviewBindingSettings = {\n hoverColorTopLevel: string\n hoverColorNested: string\n hoverOutlineWidth: number\n showHoverToolbar: boolean\n hoverToolbarPosition: import('../internal/constants').HoverToolbarPosition\n}\n\nexport type UsePreviewBindingArgs = {\n iframeRef: RefObject<HTMLIFrameElement | null>\n settings: PreviewBindingSettings\n interactModeRef: RefObject<boolean>\n onFocusBlock: (id: string) => void\n onBlockAction: (id: string, action: BlockActionMessage['action']) => void\n onLoadingChange: (loading: boolean) => void\n}\n\nexport type UsePreviewBindingReturn = {\n controllerRef: RefObject<HoverToolbarController | null>\n isBoundRef: RefObject<boolean>\n}\n\n/**\n * Owns the iframe load → install styles + click handler + hover toolbar\n * lifecycle. Idempotent: tears down previous bindings before installing\n * new ones, and unbinds on unmount.\n */\nexport const usePreviewBinding = ({\n iframeRef,\n settings,\n interactModeRef,\n onFocusBlock,\n onBlockAction,\n onLoadingChange,\n}: UsePreviewBindingArgs): UsePreviewBindingReturn => {\n const t = useBetterEditorT()\n const labelsRef = useLatestRef(t.blocks.actions)\n const teardownRef = useRef<(() => void) | null>(null)\n const controllerRef = useRef<HoverToolbarController | null>(null)\n const isBoundRef = useRef(false)\n // One-shot flags so dev-only console warnings don't repeat on every\n // iframe re-load during a single editor session.\n const warnedMissingBlocksRef = useRef(false)\n const warnedCrossOriginRef = useRef(false)\n const settingsRef = useLatestRef(settings)\n const onFocusBlockRef = useLatestRef(onFocusBlock)\n const onBlockActionRef = useLatestRef(onBlockAction)\n const onLoadingChangeRef = useLatestRef(onLoadingChange)\n\n const bindToDocument = useCallback(\n (doc: Document) => {\n teardownRef.current?.()\n controllerRef.current?.destroy()\n controllerRef.current = null\n\n const s = settingsRef.current\n\n const removeStyles = installHoverStyles(doc, {\n topColor: s.hoverColorTopLevel,\n nestedColor: s.hoverColorNested,\n outlineWidth: s.hoverOutlineWidth,\n })\n const removeClick = installClickToFocus(doc, (id) => onFocusBlockRef.current(id), {\n isEnabled: () => !interactModeRef.current,\n })\n\n if (s.showHoverToolbar) {\n controllerRef.current = new HoverToolbarController(doc, {\n position: s.hoverToolbarPosition,\n outlineWidth: s.hoverOutlineWidth,\n onAction: (id, action) => onBlockActionRef.current(id, action),\n labels: toHoverToolbarLabels(labelsRef.current),\n })\n }\n\n // Dev-only sanity check: zero [data-better-editor-id] elements means\n // the consumer forgot to spread getBlockProps() on their block wrappers\n // (or the page just has no blocks yet — both look identical from here).\n // Warn at most once per editor session to avoid console spam.\n if (process.env.NODE_ENV !== 'production' && !warnedMissingBlocksRef.current) {\n const blockCount = doc.querySelectorAll(BLOCK_ID_SELECTOR).length\n if (blockCount === 0) {\n warnedMissingBlocksRef.current = true\n console.warn(\n \"[better-editor] no [data-better-editor-id] elements found in the preview iframe — if your page has blocks, wrap them with `getBlockProps(block)` from 'payload-better-editor/client' so click-to-edit works.\",\n )\n }\n }\n\n isBoundRef.current = true\n teardownRef.current = () => {\n removeStyles()\n removeClick()\n controllerRef.current?.destroy()\n controllerRef.current = null\n isBoundRef.current = false\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps -- refs are stable\n [],\n )\n\n // Bind once on mount; teardown on unmount. All inputs flow through\n // stable refs, so the load listener doesn't need to re-attach.\n useEffect(() => {\n const iframe = iframeRef.current\n if (!iframe) return\n\n const onLoad = () => {\n const doc = getSameOriginDocument(iframe)\n if (!doc) {\n onLoadingChangeRef.current(false)\n if (process.env.NODE_ENV !== 'production' && !warnedCrossOriginRef.current) {\n warnedCrossOriginRef.current = true\n console.warn(\n '[better-editor] preview iframe is cross-origin — click-to-edit, hover styles, and the in-iframe toolbar are disabled. Serve your preview URL from the same origin as the Payload admin.',\n )\n }\n return\n }\n // Fresh iframes report readyState='complete' on their initial\n // `about:blank` document before `src` has navigated. Skip and wait\n // for the real `load` event so we don't bind to an empty body.\n // `doc.URL` is a non-nullable string on Document — safer than\n // `doc.location.href`, which Firefox can briefly expose as null.\n if (!doc.URL || doc.URL === 'about:blank') return\n onLoadingChangeRef.current(false)\n bindToDocument(doc)\n }\n\n const initialDoc = getSameOriginDocument(iframe)\n if (initialDoc && initialDoc.readyState === 'complete') {\n onLoad()\n }\n iframe.addEventListener('load', onLoad)\n\n return () => {\n iframe.removeEventListener('load', onLoad)\n teardownRef.current?.()\n teardownRef.current = null\n controllerRef.current?.destroy()\n controllerRef.current = null\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- refs are stable\n }, [])\n\n return { controllerRef, isBoundRef }\n}\n"],"names":["useCallback","useEffect","useRef","HoverToolbarController","toHoverToolbarLabels","useBetterEditorT","installClickToFocus","installHoverStyles","BLOCK_ID_SELECTOR","getSameOriginDocument","useLatestRef","usePreviewBinding","iframeRef","settings","interactModeRef","onFocusBlock","onBlockAction","onLoadingChange","t","labelsRef","blocks","actions","teardownRef","controllerRef","isBoundRef","warnedMissingBlocksRef","warnedCrossOriginRef","settingsRef","onFocusBlockRef","onBlockActionRef","onLoadingChangeRef","bindToDocument","doc","current","destroy","s","removeStyles","topColor","hoverColorTopLevel","nestedColor","hoverColorNested","outlineWidth","hoverOutlineWidth","removeClick","id","isEnabled","showHoverToolbar","position","hoverToolbarPosition","onAction","action","labels","process","env","NODE_ENV","blockCount","querySelectorAll","length","console","warn","iframe","onLoad","URL","initialDoc","readyState","addEventListener","removeEventListener"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  'use client';
2
2
  import { useEffect } from 'react';
3
- import { HoverToolbarController } from '../preview/HoverToolbarController';
3
+ import { HoverToolbarController, toHoverToolbarLabels } from '../preview/HoverToolbarController';
4
+ import { useBetterEditorT } from '../i18n/useBetterEditorT';
4
5
  import { ACTIVE_CLASS, ACTIVE_SELECTOR } from '../internal/dom';
5
6
  import { TOOLBAR_ID, setHoverVars } from '../preview/hover-css';
6
7
  import { getSameOriginDocument } from '../internal/iframe';
@@ -9,6 +10,8 @@ import { getSameOriginDocument } from '../internal/iframe';
9
10
  * the iframe without recreating the controller — that would lose the
10
11
  * current selection.
11
12
  */ export const usePreviewSettingsSync = ({ iframeRef, controllerRef, isBoundRef, settings, onBlockAction })=>{
13
+ const t = useBetterEditorT();
14
+ const { blocks: { actions } } = t;
12
15
  const { hoverColorTopLevel, hoverColorNested, hoverOutlineWidth, showHoverToolbar, hoverToolbarPosition } = settings;
13
16
  useEffect(()=>{
14
17
  if (!isBoundRef.current) return;
@@ -25,7 +28,8 @@ import { getSameOriginDocument } from '../internal/iframe';
25
28
  const next = {
26
29
  position: hoverToolbarPosition,
27
30
  outlineWidth: hoverOutlineWidth,
28
- onAction: onBlockAction
31
+ onAction: onBlockAction,
32
+ labels: toHoverToolbarLabels(actions)
29
33
  };
30
34
  if (controllerRef.current) {
31
35
  controllerRef.current.update(next);
@@ -48,7 +52,8 @@ import { getSameOriginDocument } from '../internal/iframe';
48
52
  hoverOutlineWidth,
49
53
  showHoverToolbar,
50
54
  hoverToolbarPosition,
51
- onBlockAction
55
+ onBlockAction,
56
+ actions
52
57
  ]);
53
58
  };
54
59
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/usePreviewSettingsSync.ts"],"sourcesContent":["'use client'\n\nimport { useEffect, type RefObject } from 'react'\nimport { HoverToolbarController, type HoverToolbarOptions } from '../preview/HoverToolbarController'\nimport { ACTIVE_CLASS, ACTIVE_SELECTOR } from '../internal/dom'\nimport { TOOLBAR_ID, setHoverVars } from '../preview/hover-css'\nimport type { BlockActionMessage } from '../preview/protocol'\nimport { getSameOriginDocument } from '../internal/iframe'\nimport type { PreviewBindingSettings } from './usePreviewBinding'\n\nexport type UsePreviewSettingsSyncArgs = {\n iframeRef: RefObject<HTMLIFrameElement | null>\n controllerRef: RefObject<HoverToolbarController | null>\n isBoundRef: RefObject<boolean>\n settings: PreviewBindingSettings\n onBlockAction: (id: string, action: BlockActionMessage['action']) => void\n}\n\n/**\n * Pushes setting changes (hover colors, toolbar visibility/position) into\n * the iframe without recreating the controller — that would lose the\n * current selection.\n */\nexport const usePreviewSettingsSync = ({\n iframeRef,\n controllerRef,\n isBoundRef,\n settings,\n onBlockAction,\n}: UsePreviewSettingsSyncArgs): void => {\n const {\n hoverColorTopLevel,\n hoverColorNested,\n hoverOutlineWidth,\n showHoverToolbar,\n hoverToolbarPosition,\n } = settings\n\n useEffect(() => {\n if (!isBoundRef.current) return\n const iframe = iframeRef.current\n if (!iframe) return\n const doc = getSameOriginDocument(iframe)\n if (!doc) return\n\n setHoverVars(doc, {\n topColor: hoverColorTopLevel,\n nestedColor: hoverColorNested,\n outlineWidth: hoverOutlineWidth,\n })\n\n if (showHoverToolbar) {\n const next: HoverToolbarOptions = {\n position: hoverToolbarPosition,\n outlineWidth: hoverOutlineWidth,\n onAction: onBlockAction,\n }\n if (controllerRef.current) {\n controllerRef.current.update(next)\n } else {\n controllerRef.current = new HoverToolbarController(doc, next)\n }\n } else if (controllerRef.current) {\n controllerRef.current.destroy()\n controllerRef.current = null\n // Defensive: drop residue if styles outlived a previous controller.\n doc.getElementById(TOOLBAR_ID)?.remove()\n doc.querySelectorAll(ACTIVE_SELECTOR).forEach((el) => el.classList.remove(ACTIVE_CLASS))\n }\n }, [\n iframeRef,\n controllerRef,\n isBoundRef,\n hoverColorTopLevel,\n hoverColorNested,\n hoverOutlineWidth,\n showHoverToolbar,\n hoverToolbarPosition,\n onBlockAction,\n ])\n}\n"],"names":["useEffect","HoverToolbarController","ACTIVE_CLASS","ACTIVE_SELECTOR","TOOLBAR_ID","setHoverVars","getSameOriginDocument","usePreviewSettingsSync","iframeRef","controllerRef","isBoundRef","settings","onBlockAction","hoverColorTopLevel","hoverColorNested","hoverOutlineWidth","showHoverToolbar","hoverToolbarPosition","current","iframe","doc","topColor","nestedColor","outlineWidth","next","position","onAction","update","destroy","getElementById","remove","querySelectorAll","forEach","el","classList"],"mappings":"AAAA;AAEA,SAASA,SAAS,QAAwB,QAAO;AACjD,SAASC,sBAAsB,QAAkC,oCAAmC;AACpG,SAASC,YAAY,EAAEC,eAAe,QAAQ,kBAAiB;AAC/D,SAASC,UAAU,EAAEC,YAAY,QAAQ,uBAAsB;AAE/D,SAASC,qBAAqB,QAAQ,qBAAoB;AAW1D;;;;CAIC,GACD,OAAO,MAAMC,yBAAyB,CAAC,EACrCC,SAAS,EACTC,aAAa,EACbC,UAAU,EACVC,QAAQ,EACRC,aAAa,EACc;IAC3B,MAAM,EACJC,kBAAkB,EAClBC,gBAAgB,EAChBC,iBAAiB,EACjBC,gBAAgB,EAChBC,oBAAoB,EACrB,GAAGN;IAEJX,UAAU;QACR,IAAI,CAACU,WAAWQ,OAAO,EAAE;QACzB,MAAMC,SAASX,UAAUU,OAAO;QAChC,IAAI,CAACC,QAAQ;QACb,MAAMC,MAAMd,sBAAsBa;QAClC,IAAI,CAACC,KAAK;QAEVf,aAAae,KAAK;YAChBC,UAAUR;YACVS,aAAaR;YACbS,cAAcR;QAChB;QAEA,IAAIC,kBAAkB;YACpB,MAAMQ,OAA4B;gBAChCC,UAAUR;gBACVM,cAAcR;gBACdW,UAAUd;YACZ;YACA,IAAIH,cAAcS,OAAO,EAAE;gBACzBT,cAAcS,OAAO,CAACS,MAAM,CAACH;YAC/B,OAAO;gBACLf,cAAcS,OAAO,GAAG,IAAIjB,uBAAuBmB,KAAKI;YAC1D;QACF,OAAO,IAAIf,cAAcS,OAAO,EAAE;YAChCT,cAAcS,OAAO,CAACU,OAAO;YAC7BnB,cAAcS,OAAO,GAAG;YACxB,oEAAoE;YACpEE,IAAIS,cAAc,CAACzB,aAAa0B;YAChCV,IAAIW,gBAAgB,CAAC5B,iBAAiB6B,OAAO,CAAC,CAACC,KAAOA,GAAGC,SAAS,CAACJ,MAAM,CAAC5B;QAC5E;IACF,GAAG;QACDM;QACAC;QACAC;QACAG;QACAC;QACAC;QACAC;QACAC;QACAL;KACD;AACH,EAAC"}
1
+ {"version":3,"sources":["../../src/hooks/usePreviewSettingsSync.ts"],"sourcesContent":["'use client'\n\nimport { useEffect, type RefObject } from 'react'\nimport { HoverToolbarController, toHoverToolbarLabels, type HoverToolbarOptions } from '../preview/HoverToolbarController'\nimport { useBetterEditorT } from '../i18n/useBetterEditorT'\nimport { ACTIVE_CLASS, ACTIVE_SELECTOR } from '../internal/dom'\nimport { TOOLBAR_ID, setHoverVars } from '../preview/hover-css'\nimport type { BlockActionMessage } from '../preview/protocol'\nimport { getSameOriginDocument } from '../internal/iframe'\nimport type { PreviewBindingSettings } from './usePreviewBinding'\n\nexport type UsePreviewSettingsSyncArgs = {\n iframeRef: RefObject<HTMLIFrameElement | null>\n controllerRef: RefObject<HoverToolbarController | null>\n isBoundRef: RefObject<boolean>\n settings: PreviewBindingSettings\n onBlockAction: (id: string, action: BlockActionMessage['action']) => void\n}\n\n/**\n * Pushes setting changes (hover colors, toolbar visibility/position) into\n * the iframe without recreating the controller — that would lose the\n * current selection.\n */\nexport const usePreviewSettingsSync = ({\n iframeRef,\n controllerRef,\n isBoundRef,\n settings,\n onBlockAction,\n}: UsePreviewSettingsSyncArgs): void => {\n const t = useBetterEditorT()\n const { blocks: { actions } } = t\n const {\n hoverColorTopLevel,\n hoverColorNested,\n hoverOutlineWidth,\n showHoverToolbar,\n hoverToolbarPosition,\n } = settings\n\n useEffect(() => {\n if (!isBoundRef.current) return\n const iframe = iframeRef.current\n if (!iframe) return\n const doc = getSameOriginDocument(iframe)\n if (!doc) return\n\n setHoverVars(doc, {\n topColor: hoverColorTopLevel,\n nestedColor: hoverColorNested,\n outlineWidth: hoverOutlineWidth,\n })\n\n if (showHoverToolbar) {\n const next: HoverToolbarOptions = {\n position: hoverToolbarPosition,\n outlineWidth: hoverOutlineWidth,\n onAction: onBlockAction,\n labels: toHoverToolbarLabels(actions),\n }\n if (controllerRef.current) {\n controllerRef.current.update(next)\n } else {\n controllerRef.current = new HoverToolbarController(doc, next)\n }\n } else if (controllerRef.current) {\n controllerRef.current.destroy()\n controllerRef.current = null\n // Defensive: drop residue if styles outlived a previous controller.\n doc.getElementById(TOOLBAR_ID)?.remove()\n doc.querySelectorAll(ACTIVE_SELECTOR).forEach((el) => el.classList.remove(ACTIVE_CLASS))\n }\n }, [\n iframeRef,\n controllerRef,\n isBoundRef,\n hoverColorTopLevel,\n hoverColorNested,\n hoverOutlineWidth,\n showHoverToolbar,\n hoverToolbarPosition,\n onBlockAction,\n actions,\n ])\n}\n"],"names":["useEffect","HoverToolbarController","toHoverToolbarLabels","useBetterEditorT","ACTIVE_CLASS","ACTIVE_SELECTOR","TOOLBAR_ID","setHoverVars","getSameOriginDocument","usePreviewSettingsSync","iframeRef","controllerRef","isBoundRef","settings","onBlockAction","t","blocks","actions","hoverColorTopLevel","hoverColorNested","hoverOutlineWidth","showHoverToolbar","hoverToolbarPosition","current","iframe","doc","topColor","nestedColor","outlineWidth","next","position","onAction","labels","update","destroy","getElementById","remove","querySelectorAll","forEach","el","classList"],"mappings":"AAAA;AAEA,SAASA,SAAS,QAAwB,QAAO;AACjD,SAASC,sBAAsB,EAAEC,oBAAoB,QAAkC,oCAAmC;AAC1H,SAASC,gBAAgB,QAAQ,2BAA0B;AAC3D,SAASC,YAAY,EAAEC,eAAe,QAAQ,kBAAiB;AAC/D,SAASC,UAAU,EAAEC,YAAY,QAAQ,uBAAsB;AAE/D,SAASC,qBAAqB,QAAQ,qBAAoB;AAW1D;;;;CAIC,GACD,OAAO,MAAMC,yBAAyB,CAAC,EACrCC,SAAS,EACTC,aAAa,EACbC,UAAU,EACVC,QAAQ,EACRC,aAAa,EACc;IAC3B,MAAMC,IAAIZ;IACV,MAAM,EAAEa,QAAQ,EAAEC,OAAO,EAAE,EAAE,GAAGF;IAChC,MAAM,EACJG,kBAAkB,EAClBC,gBAAgB,EAChBC,iBAAiB,EACjBC,gBAAgB,EAChBC,oBAAoB,EACrB,GAAGT;IAEJb,UAAU;QACR,IAAI,CAACY,WAAWW,OAAO,EAAE;QACzB,MAAMC,SAASd,UAAUa,OAAO;QAChC,IAAI,CAACC,QAAQ;QACb,MAAMC,MAAMjB,sBAAsBgB;QAClC,IAAI,CAACC,KAAK;QAEVlB,aAAakB,KAAK;YAChBC,UAAUR;YACVS,aAAaR;YACbS,cAAcR;QAChB;QAEA,IAAIC,kBAAkB;YACpB,MAAMQ,OAA4B;gBAChCC,UAAUR;gBACVM,cAAcR;gBACdW,UAAUjB;gBACVkB,QAAQ9B,qBAAqBe;YAC/B;YACA,IAAIN,cAAcY,OAAO,EAAE;gBACzBZ,cAAcY,OAAO,CAACU,MAAM,CAACJ;YAC/B,OAAO;gBACLlB,cAAcY,OAAO,GAAG,IAAItB,uBAAuBwB,KAAKI;YAC1D;QACF,OAAO,IAAIlB,cAAcY,OAAO,EAAE;YAChCZ,cAAcY,OAAO,CAACW,OAAO;YAC7BvB,cAAcY,OAAO,GAAG;YACxB,oEAAoE;YACpEE,IAAIU,cAAc,CAAC7B,aAAa8B;YAChCX,IAAIY,gBAAgB,CAAChC,iBAAiBiC,OAAO,CAAC,CAACC,KAAOA,GAAGC,SAAS,CAACJ,MAAM,CAAChC;QAC5E;IACF,GAAG;QACDM;QACAC;QACAC;QACAM;QACAC;QACAC;QACAC;QACAC;QACAR;QACAG;KACD;AACH,EAAC"}
@@ -0,0 +1,2 @@
1
+ import type { BetterEditorTranslations } from './types';
2
+ export declare const cs: BetterEditorTranslations;
@@ -0,0 +1,136 @@
1
+ // Machine-translated (not reviewed by a native speaker) — may contain errors.
2
+ export const cs = {
3
+ toggle: {
4
+ open: 'Otevřít Better Editor',
5
+ close: 'Zavřít Better Editor'
6
+ },
7
+ overlay: {
8
+ dialogLabel: 'Better Editor',
9
+ resizeSidebar: 'Změnit velikost postranního panelu (použijte šipky ← / →)'
10
+ },
11
+ toolbar: {
12
+ undo: 'Zpět',
13
+ undoTitle: 'Zpět (Cmd/Ctrl+Z)',
14
+ redo: 'Znovu',
15
+ redoTitle: 'Znovu (Cmd/Ctrl+Shift+Z)',
16
+ enterFullscreen: 'Přejít na celou obrazovku',
17
+ exitFullscreen: 'Ukončit celou obrazovku',
18
+ switchToEdit: 'Přepnout do režimu úprav',
19
+ switchToInteract: 'Přepnout do interaktivního režimu (formuláře, akordeony, odkazy)',
20
+ switchToInteractShort: 'Přepnout do interaktivního režimu',
21
+ showSidebar: 'Zobrazit postranní panel',
22
+ hideSidebar: 'Skrýt postranní panel'
23
+ },
24
+ viewport: {
25
+ groupLabel: 'Oblast náhledu',
26
+ desktop: 'Počítač',
27
+ tablet: 'Tablet',
28
+ mobile: 'Mobil',
29
+ responsive: 'Responzivní (přetažením změníte velikost)'
30
+ },
31
+ sidebar: {
32
+ tabs: {
33
+ page: 'Stránka',
34
+ block: 'Bloky',
35
+ settings: 'Nastavení'
36
+ },
37
+ blockSelected: 'Vybraný blok: ',
38
+ noBlockSelected: 'Není vybrán žádný blok',
39
+ validationLabel: 'Chyby ověření',
40
+ validationSingular: '1 pole vyžaduje pozornost',
41
+ validationPlural: ' polí vyžaduje pozornost'
42
+ },
43
+ blocks: {
44
+ kicker: 'Blok',
45
+ emptyPrompt: 'Vyberte blok v náhledu a upravte jeho nastavení.',
46
+ addBlock: 'Přidat blok',
47
+ blockName: 'Název bloku',
48
+ blockNamePlaceholder: 'Volitelný popisek pro tento blok',
49
+ schemaError: 'Nepodařilo se určit schéma bloku pro tuto cestu.',
50
+ drawerSingular: 'Blok',
51
+ drawerPlural: 'Bloky',
52
+ deselect: 'Zrušit výběr',
53
+ actions: {
54
+ toolbar: 'Akce bloku',
55
+ moveUp: 'Posunout nahoru',
56
+ moveUpLabel: 'Posunout blok nahoru',
57
+ moveDown: 'Posunout dolů',
58
+ moveDownLabel: 'Posunout blok dolů',
59
+ duplicate: 'Duplikovat',
60
+ duplicateLabel: 'Duplikovat blok',
61
+ addBelow: 'Přidat blok níže',
62
+ addBelowLabel: 'Přidat blok níže',
63
+ delete: 'Odstranit',
64
+ deleteLabel: 'Odstranit blok'
65
+ }
66
+ },
67
+ documentFields: {
68
+ noFields: 'Nebyla nalezena žádná pole na úrovni dokumentu.',
69
+ noSettings: 'Žádná nastavení dokumentu.'
70
+ },
71
+ preview: {
72
+ title: 'Náhled Better Editor',
73
+ loading: 'Načítání náhledu',
74
+ resizeLeft: 'Změnit velikost náhledu zleva',
75
+ resizeRight: 'Změnit velikost náhledu zprava'
76
+ },
77
+ error: {
78
+ heading: 'Better Editor selhal',
79
+ unknown: 'Neznámá chyba.',
80
+ tryAgain: 'Zkusit znovu',
81
+ closeEditor: 'Zavřít editor'
82
+ },
83
+ banner: {
84
+ builtBy: 'Pokud je pro vás tento plugin užitečný, nechte prosím hvězdičku ⭐',
85
+ star: 'Star',
86
+ github: 'GitHub',
87
+ reportBug: 'Nahlásit chybu'
88
+ },
89
+ settings: {
90
+ globalLabel: 'Nastavení',
91
+ globalDescription: 'Předvolby pro celý editor pro překryv Better Editor.',
92
+ sidebar: {
93
+ tabLabel: 'Postranní panel',
94
+ tabDescription: 'Kde se postranní panel nachází a jak jsou jeho pole uspořádána.',
95
+ position: 'Pozice',
96
+ positionRight: 'Vpravo',
97
+ positionLeft: 'Vlevo',
98
+ forceFullWidth: 'Uspořádat pole na celou šířku',
99
+ forceFullWidthDesc: 'Přepíše admin.width u polí postranního panelu, aby vždy zabírala celý řádek.'
100
+ },
101
+ viewport: {
102
+ tabLabel: 'Oblast náhledu',
103
+ tabDescription: 'Šířky v pixelech pro režimy náhledu Tablet a Mobil.',
104
+ tabletWidth: 'Tablet (px)',
105
+ mobileWidth: 'Mobil (px)'
106
+ },
107
+ outline: {
108
+ tabLabel: 'Obrys',
109
+ tabDescription: 'Obrys a zabarvení zobrazené na najetém nebo vybraném bloku.',
110
+ topLevelColor: 'Barva nejvyšší úrovně',
111
+ topLevelColorDesc: 'Šestnáctková barva (např. `#3b82f6`).',
112
+ nestedColor: 'Vnořená barva',
113
+ nestedColorDesc: 'Šestnáctková barva pro bloky vnořené uvnitř jiného bloku.',
114
+ outlineWidth: 'Šířka obrysu (px)',
115
+ outlineWidthDesc: 'Tloušťka obrysu v pixelech (1–5).'
116
+ },
117
+ toolbar: {
118
+ tabLabel: 'Panel nástrojů',
119
+ tabDescription: 'Plovoucí panel nástrojů Posunout / Duplikovat / Odstranit, který se zobrazí na vybraném bloku.',
120
+ enabled: 'Povoleno',
121
+ anchorCorner: 'Ukotvení v rohu',
122
+ topRight: 'Vpravo nahoře',
123
+ topLeft: 'Vlevo nahoře',
124
+ bottomRight: 'Vpravo dole',
125
+ bottomLeft: 'Vlevo dole'
126
+ },
127
+ validation: {
128
+ colorRequired: 'Barva je povinná',
129
+ colorInvalid: 'Musí být šestnáctková barva (např. #3b82f6) nebo rgb()/rgba()',
130
+ mustBeNumber: 'Musí být číslo',
131
+ outlineRange: 'Musí být mezi 1 a 5'
132
+ }
133
+ }
134
+ };
135
+
136
+ //# sourceMappingURL=cs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/i18n/cs.ts"],"sourcesContent":["// Machine-translated (not reviewed by a native speaker) — may contain errors.\nimport type { BetterEditorTranslations } from './types'\n\nexport const cs: BetterEditorTranslations = {\n toggle: {\n open: 'Otevřít Better Editor',\n close: 'Zavřít Better Editor',\n },\n overlay: {\n dialogLabel: 'Better Editor',\n resizeSidebar: 'Změnit velikost postranního panelu (použijte šipky ← / →)',\n },\n toolbar: {\n undo: 'Zpět',\n undoTitle: 'Zpět (Cmd/Ctrl+Z)',\n redo: 'Znovu',\n redoTitle: 'Znovu (Cmd/Ctrl+Shift+Z)',\n enterFullscreen: 'Přejít na celou obrazovku',\n exitFullscreen: 'Ukončit celou obrazovku',\n switchToEdit: 'Přepnout do režimu úprav',\n switchToInteract: 'Přepnout do interaktivního režimu (formuláře, akordeony, odkazy)',\n switchToInteractShort: 'Přepnout do interaktivního režimu',\n showSidebar: 'Zobrazit postranní panel',\n hideSidebar: 'Skrýt postranní panel',\n },\n viewport: {\n groupLabel: 'Oblast náhledu',\n desktop: 'Počítač',\n tablet: 'Tablet',\n mobile: 'Mobil',\n responsive: 'Responzivní (přetažením změníte velikost)',\n },\n sidebar: {\n tabs: {\n page: 'Stránka',\n block: 'Bloky',\n settings: 'Nastavení',\n },\n blockSelected: 'Vybraný blok: ',\n noBlockSelected: 'Není vybrán žádný blok',\n validationLabel: 'Chyby ověření',\n validationSingular: '1 pole vyžaduje pozornost',\n validationPlural: ' polí vyžaduje pozornost',\n },\n blocks: {\n kicker: 'Blok',\n emptyPrompt: 'Vyberte blok v náhledu a upravte jeho nastavení.',\n addBlock: 'Přidat blok',\n blockName: 'Název bloku',\n blockNamePlaceholder: 'Volitelný popisek pro tento blok',\n schemaError: 'Nepodařilo se určit schéma bloku pro tuto cestu.',\n drawerSingular: 'Blok',\n drawerPlural: 'Bloky',\n deselect: 'Zrušit výběr',\n actions: {\n toolbar: 'Akce bloku',\n moveUp: 'Posunout nahoru',\n moveUpLabel: 'Posunout blok nahoru',\n moveDown: 'Posunout dolů',\n moveDownLabel: 'Posunout blok dolů',\n duplicate: 'Duplikovat',\n duplicateLabel: 'Duplikovat blok',\n addBelow: 'Přidat blok níže',\n addBelowLabel: 'Přidat blok níže',\n delete: 'Odstranit',\n deleteLabel: 'Odstranit blok',\n },\n },\n documentFields: {\n noFields: 'Nebyla nalezena žádná pole na úrovni dokumentu.',\n noSettings: 'Žádná nastavení dokumentu.',\n },\n preview: {\n title: 'Náhled Better Editor',\n loading: 'Načítání náhledu',\n resizeLeft: 'Změnit velikost náhledu zleva',\n resizeRight: 'Změnit velikost náhledu zprava',\n },\n error: {\n heading: 'Better Editor selhal',\n unknown: 'Neznámá chyba.',\n tryAgain: 'Zkusit znovu',\n closeEditor: 'Zavřít editor',\n },\n banner: {\n builtBy: 'Pokud je pro vás tento plugin užitečný, nechte prosím hvězdičku ⭐',\n star: 'Star',\n github: 'GitHub',\n reportBug: 'Nahlásit chybu',\n },\n settings: {\n globalLabel: 'Nastavení',\n globalDescription: 'Předvolby pro celý editor pro překryv Better Editor.',\n sidebar: {\n tabLabel: 'Postranní panel',\n tabDescription: 'Kde se postranní panel nachází a jak jsou jeho pole uspořádána.',\n position: 'Pozice',\n positionRight: 'Vpravo',\n positionLeft: 'Vlevo',\n forceFullWidth: 'Uspořádat pole na celou šířku',\n forceFullWidthDesc:\n 'Přepíše admin.width u polí postranního panelu, aby vždy zabírala celý řádek.',\n },\n viewport: {\n tabLabel: 'Oblast náhledu',\n tabDescription: 'Šířky v pixelech pro režimy náhledu Tablet a Mobil.',\n tabletWidth: 'Tablet (px)',\n mobileWidth: 'Mobil (px)',\n },\n outline: {\n tabLabel: 'Obrys',\n tabDescription: 'Obrys a zabarvení zobrazené na najetém nebo vybraném bloku.',\n topLevelColor: 'Barva nejvyšší úrovně',\n topLevelColorDesc: 'Šestnáctková barva (např. `#3b82f6`).',\n nestedColor: 'Vnořená barva',\n nestedColorDesc: 'Šestnáctková barva pro bloky vnořené uvnitř jiného bloku.',\n outlineWidth: 'Šířka obrysu (px)',\n outlineWidthDesc: 'Tloušťka obrysu v pixelech (1–5).',\n },\n toolbar: {\n tabLabel: 'Panel nástrojů',\n tabDescription:\n 'Plovoucí panel nástrojů Posunout / Duplikovat / Odstranit, který se zobrazí na vybraném bloku.',\n enabled: 'Povoleno',\n anchorCorner: 'Ukotvení v rohu',\n topRight: 'Vpravo nahoře',\n topLeft: 'Vlevo nahoře',\n bottomRight: 'Vpravo dole',\n bottomLeft: 'Vlevo dole',\n },\n validation: {\n colorRequired: 'Barva je povinná',\n colorInvalid: 'Musí být šestnáctková barva (např. #3b82f6) nebo rgb()/rgba()',\n mustBeNumber: 'Musí být číslo',\n outlineRange: 'Musí být mezi 1 a 5',\n },\n },\n}\n"],"names":["cs","toggle","open","close","overlay","dialogLabel","resizeSidebar","toolbar","undo","undoTitle","redo","redoTitle","enterFullscreen","exitFullscreen","switchToEdit","switchToInteract","switchToInteractShort","showSidebar","hideSidebar","viewport","groupLabel","desktop","tablet","mobile","responsive","sidebar","tabs","page","block","settings","blockSelected","noBlockSelected","validationLabel","validationSingular","validationPlural","blocks","kicker","emptyPrompt","addBlock","blockName","blockNamePlaceholder","schemaError","drawerSingular","drawerPlural","deselect","actions","moveUp","moveUpLabel","moveDown","moveDownLabel","duplicate","duplicateLabel","addBelow","addBelowLabel","delete","deleteLabel","documentFields","noFields","noSettings","preview","title","loading","resizeLeft","resizeRight","error","heading","unknown","tryAgain","closeEditor","banner","builtBy","star","github","reportBug","globalLabel","globalDescription","tabLabel","tabDescription","position","positionRight","positionLeft","forceFullWidth","forceFullWidthDesc","tabletWidth","mobileWidth","outline","topLevelColor","topLevelColorDesc","nestedColor","nestedColorDesc","outlineWidth","outlineWidthDesc","enabled","anchorCorner","topRight","topLeft","bottomRight","bottomLeft","validation","colorRequired","colorInvalid","mustBeNumber","outlineRange"],"mappings":"AAAA,8EAA8E;AAG9E,OAAO,MAAMA,KAA+B;IAC1CC,QAAQ;QACNC,MAAM;QACNC,OAAO;IACT;IACAC,SAAS;QACPC,aAAa;QACbC,eAAe;IACjB;IACAC,SAAS;QACPC,MAAM;QACNC,WAAW;QACXC,MAAM;QACNC,WAAW;QACXC,iBAAiB;QACjBC,gBAAgB;QAChBC,cAAc;QACdC,kBAAkB;QAClBC,uBAAuB;QACvBC,aAAa;QACbC,aAAa;IACf;IACAC,UAAU;QACRC,YAAY;QACZC,SAAS;QACTC,QAAQ;QACRC,QAAQ;QACRC,YAAY;IACd;IACAC,SAAS;QACPC,MAAM;YACJC,MAAM;YACNC,OAAO;YACPC,UAAU;QACZ;QACAC,eAAe;QACfC,iBAAiB;QACjBC,iBAAiB;QACjBC,oBAAoB;QACpBC,kBAAkB;IACpB;IACAC,QAAQ;QACNC,QAAQ;QACRC,aAAa;QACbC,UAAU;QACVC,WAAW;QACXC,sBAAsB;QACtBC,aAAa;QACbC,gBAAgB;QAChBC,cAAc;QACdC,UAAU;QACVC,SAAS;YACPtC,SAAS;YACTuC,QAAQ;YACRC,aAAa;YACbC,UAAU;YACVC,eAAe;YACfC,WAAW;YACXC,gBAAgB;YAChBC,UAAU;YACVC,eAAe;YACfC,QAAQ;YACRC,aAAa;QACf;IACF;IACAC,gBAAgB;QACdC,UAAU;QACVC,YAAY;IACd;IACAC,SAAS;QACPC,OAAO;QACPC,SAAS;QACTC,YAAY;QACZC,aAAa;IACf;IACAC,OAAO;QACLC,SAAS;QACTC,SAAS;QACTC,UAAU;QACVC,aAAa;IACf;IACAC,QAAQ;QACNC,SAAS;QACTC,MAAM;QACNC,QAAQ;QACRC,WAAW;IACb;IACA5C,UAAU;QACR6C,aAAa;QACbC,mBAAmB;QACnBlD,SAAS;YACPmD,UAAU;YACVC,gBAAgB;YAChBC,UAAU;YACVC,eAAe;YACfC,cAAc;YACdC,gBAAgB;YAChBC,oBACE;QACJ;QACA/D,UAAU;YACRyD,UAAU;YACVC,gBAAgB;YAChBM,aAAa;YACbC,aAAa;QACf;QACAC,SAAS;YACPT,UAAU;YACVC,gBAAgB;YAChBS,eAAe;YACfC,mBAAmB;YACnBC,aAAa;YACbC,iBAAiB;YACjBC,cAAc;YACdC,kBAAkB;QACpB;QACApF,SAAS;YACPqE,UAAU;YACVC,gBACE;YACFe,SAAS;YACTC,cAAc;YACdC,UAAU;YACVC,SAAS;YACTC,aAAa;YACbC,YAAY;QACd;QACAC,YAAY;YACVC,eAAe;YACfC,cAAc;YACdC,cAAc;YACdC,cAAc;QAChB;IACF;AACF,EAAC"}
@@ -0,0 +1,2 @@
1
+ import type { BetterEditorTranslations } from './types';
2
+ export declare const da: BetterEditorTranslations;
@@ -0,0 +1,136 @@
1
+ // Machine-translated (not reviewed by a native speaker) — may contain errors.
2
+ export const da = {
3
+ toggle: {
4
+ open: 'Åbn Better Editor',
5
+ close: 'Luk Better Editor'
6
+ },
7
+ overlay: {
8
+ dialogLabel: 'Better Editor',
9
+ resizeSidebar: 'Tilpas sidepanelets størrelse (brug ← / → piletasterne)'
10
+ },
11
+ toolbar: {
12
+ undo: 'Fortryd',
13
+ undoTitle: 'Fortryd (Cmd/Ctrl+Z)',
14
+ redo: 'Gentag',
15
+ redoTitle: 'Gentag (Cmd/Ctrl+Shift+Z)',
16
+ enterFullscreen: 'Åbn fuldskærm',
17
+ exitFullscreen: 'Afslut fuldskærm',
18
+ switchToEdit: 'Skift til redigeringstilstand',
19
+ switchToInteract: 'Skift til interaktionstilstand (brug formularer, harmonikaer, links)',
20
+ switchToInteractShort: 'Skift til interaktionstilstand',
21
+ showSidebar: 'Vis sidepanel',
22
+ hideSidebar: 'Skjul sidepanel'
23
+ },
24
+ viewport: {
25
+ groupLabel: 'Forhåndsvisning',
26
+ desktop: 'Computer',
27
+ tablet: 'Tablet',
28
+ mobile: 'Mobil',
29
+ responsive: 'Responsiv (træk for at tilpasse størrelsen)'
30
+ },
31
+ sidebar: {
32
+ tabs: {
33
+ page: 'Side',
34
+ block: 'Blokke',
35
+ settings: 'Indstillinger'
36
+ },
37
+ blockSelected: 'Valgt blok: ',
38
+ noBlockSelected: 'Ingen blok valgt',
39
+ validationLabel: 'Valideringsfejl',
40
+ validationSingular: '1 felt kræver opmærksomhed',
41
+ validationPlural: ' felter kræver opmærksomhed'
42
+ },
43
+ blocks: {
44
+ kicker: 'Blok',
45
+ emptyPrompt: 'Vælg en blok i forhåndsvisningen for at redigere dens indstillinger.',
46
+ addBlock: 'Tilføj blok',
47
+ blockName: 'Bloknavn',
48
+ blockNamePlaceholder: 'Valgfri etiket til denne blok',
49
+ schemaError: 'Blokskemaet kunne ikke findes for denne sti.',
50
+ drawerSingular: 'Blok',
51
+ drawerPlural: 'Blokke',
52
+ deselect: 'Fravælg',
53
+ actions: {
54
+ toolbar: 'Blokhandlinger',
55
+ moveUp: 'Flyt op',
56
+ moveUpLabel: 'Flyt blokken op',
57
+ moveDown: 'Flyt ned',
58
+ moveDownLabel: 'Flyt blokken ned',
59
+ duplicate: 'Dupliker',
60
+ duplicateLabel: 'Dupliker blokken',
61
+ addBelow: 'Tilføj blok nedenfor',
62
+ addBelowLabel: 'Tilføj blok nedenfor',
63
+ delete: 'Slet',
64
+ deleteLabel: 'Slet blokken'
65
+ }
66
+ },
67
+ documentFields: {
68
+ noFields: 'Ingen felter på dokumentniveau blev fundet.',
69
+ noSettings: 'Ingen dokumentindstillinger.'
70
+ },
71
+ preview: {
72
+ title: 'Forhåndsvisning af Better Editor',
73
+ loading: 'Indlæser forhåndsvisning',
74
+ resizeLeft: 'Tilpas forhåndsvisningen fra venstre',
75
+ resizeRight: 'Tilpas forhåndsvisningen fra højre'
76
+ },
77
+ error: {
78
+ heading: 'Better Editor gik ned',
79
+ unknown: 'Ukendt fejl.',
80
+ tryAgain: 'Prøv igen',
81
+ closeEditor: 'Luk editoren'
82
+ },
83
+ banner: {
84
+ builtBy: 'Hvis du finder dette plugin nyttigt, så giv det gerne en stjerne ⭐',
85
+ star: 'Star',
86
+ github: 'GitHub',
87
+ reportBug: 'Rapportér en fejl'
88
+ },
89
+ settings: {
90
+ globalLabel: 'Indstillinger',
91
+ globalDescription: 'Overordnede indstillinger for Better Editor-overlayet.',
92
+ sidebar: {
93
+ tabLabel: 'Sidepanel',
94
+ tabDescription: 'Hvor sidepanelet er placeret, og hvordan dets felter stables.',
95
+ position: 'Position',
96
+ positionRight: 'Højre',
97
+ positionLeft: 'Venstre',
98
+ forceFullWidth: 'Stabl felter i fuld bredde',
99
+ forceFullWidthDesc: 'Tilsidesæt admin.width på sidepanelets felter, så de altid fylder hele rækken.'
100
+ },
101
+ viewport: {
102
+ tabLabel: 'Forhåndsvisning',
103
+ tabDescription: 'Pixelbredder for forhåndsvisningstilstandene Tablet og Mobil.',
104
+ tabletWidth: 'Tablet (px)',
105
+ mobileWidth: 'Mobil (px)'
106
+ },
107
+ outline: {
108
+ tabLabel: 'Kontur',
109
+ tabDescription: 'Kontur + farvetone, der vises på den blok, du peger på eller vælger.',
110
+ topLevelColor: 'Farve på øverste niveau',
111
+ topLevelColorDesc: 'Hexfarve (f.eks. `#3b82f6`).',
112
+ nestedColor: 'Farve for indlejrede',
113
+ nestedColorDesc: 'Hexfarve for blokke, der er indlejret i en anden blok.',
114
+ outlineWidth: 'Konturbredde (px)',
115
+ outlineWidthDesc: 'Konturens tykkelse i pixels (1–5).'
116
+ },
117
+ toolbar: {
118
+ tabLabel: 'Værktøjslinje',
119
+ tabDescription: 'Flydende værktøjslinje til Flyt / Dupliker / Slet, der vises på den valgte blok.',
120
+ enabled: 'Aktiveret',
121
+ anchorCorner: 'Forankringshjørne',
122
+ topRight: 'Øverst til højre',
123
+ topLeft: 'Øverst til venstre',
124
+ bottomRight: 'Nederst til højre',
125
+ bottomLeft: 'Nederst til venstre'
126
+ },
127
+ validation: {
128
+ colorRequired: 'Farve er påkrævet',
129
+ colorInvalid: 'Skal være en hexfarve (f.eks. #3b82f6) eller rgb()/rgba()',
130
+ mustBeNumber: 'Skal være et tal',
131
+ outlineRange: 'Skal være mellem 1 og 5'
132
+ }
133
+ }
134
+ };
135
+
136
+ //# sourceMappingURL=da.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/i18n/da.ts"],"sourcesContent":["// Machine-translated (not reviewed by a native speaker) — may contain errors.\nimport type { BetterEditorTranslations } from './types'\n\nexport const da: BetterEditorTranslations = {\n toggle: {\n open: 'Åbn Better Editor',\n close: 'Luk Better Editor',\n },\n overlay: {\n dialogLabel: 'Better Editor',\n resizeSidebar: 'Tilpas sidepanelets størrelse (brug ← / → piletasterne)',\n },\n toolbar: {\n undo: 'Fortryd',\n undoTitle: 'Fortryd (Cmd/Ctrl+Z)',\n redo: 'Gentag',\n redoTitle: 'Gentag (Cmd/Ctrl+Shift+Z)',\n enterFullscreen: 'Åbn fuldskærm',\n exitFullscreen: 'Afslut fuldskærm',\n switchToEdit: 'Skift til redigeringstilstand',\n switchToInteract: 'Skift til interaktionstilstand (brug formularer, harmonikaer, links)',\n switchToInteractShort: 'Skift til interaktionstilstand',\n showSidebar: 'Vis sidepanel',\n hideSidebar: 'Skjul sidepanel',\n },\n viewport: {\n groupLabel: 'Forhåndsvisning',\n desktop: 'Computer',\n tablet: 'Tablet',\n mobile: 'Mobil',\n responsive: 'Responsiv (træk for at tilpasse størrelsen)',\n },\n sidebar: {\n tabs: {\n page: 'Side',\n block: 'Blokke',\n settings: 'Indstillinger',\n },\n blockSelected: 'Valgt blok: ',\n noBlockSelected: 'Ingen blok valgt',\n validationLabel: 'Valideringsfejl',\n validationSingular: '1 felt kræver opmærksomhed',\n validationPlural: ' felter kræver opmærksomhed',\n },\n blocks: {\n kicker: 'Blok',\n emptyPrompt: 'Vælg en blok i forhåndsvisningen for at redigere dens indstillinger.',\n addBlock: 'Tilføj blok',\n blockName: 'Bloknavn',\n blockNamePlaceholder: 'Valgfri etiket til denne blok',\n schemaError: 'Blokskemaet kunne ikke findes for denne sti.',\n drawerSingular: 'Blok',\n drawerPlural: 'Blokke',\n deselect: 'Fravælg',\n actions: {\n toolbar: 'Blokhandlinger',\n moveUp: 'Flyt op',\n moveUpLabel: 'Flyt blokken op',\n moveDown: 'Flyt ned',\n moveDownLabel: 'Flyt blokken ned',\n duplicate: 'Dupliker',\n duplicateLabel: 'Dupliker blokken',\n addBelow: 'Tilføj blok nedenfor',\n addBelowLabel: 'Tilføj blok nedenfor',\n delete: 'Slet',\n deleteLabel: 'Slet blokken',\n },\n },\n documentFields: {\n noFields: 'Ingen felter på dokumentniveau blev fundet.',\n noSettings: 'Ingen dokumentindstillinger.',\n },\n preview: {\n title: 'Forhåndsvisning af Better Editor',\n loading: 'Indlæser forhåndsvisning',\n resizeLeft: 'Tilpas forhåndsvisningen fra venstre',\n resizeRight: 'Tilpas forhåndsvisningen fra højre',\n },\n error: {\n heading: 'Better Editor gik ned',\n unknown: 'Ukendt fejl.',\n tryAgain: 'Prøv igen',\n closeEditor: 'Luk editoren',\n },\n banner: {\n builtBy: 'Hvis du finder dette plugin nyttigt, så giv det gerne en stjerne ⭐',\n star: 'Star',\n github: 'GitHub',\n reportBug: 'Rapportér en fejl',\n },\n settings: {\n globalLabel: 'Indstillinger',\n globalDescription: 'Overordnede indstillinger for Better Editor-overlayet.',\n sidebar: {\n tabLabel: 'Sidepanel',\n tabDescription: 'Hvor sidepanelet er placeret, og hvordan dets felter stables.',\n position: 'Position',\n positionRight: 'Højre',\n positionLeft: 'Venstre',\n forceFullWidth: 'Stabl felter i fuld bredde',\n forceFullWidthDesc:\n 'Tilsidesæt admin.width på sidepanelets felter, så de altid fylder hele rækken.',\n },\n viewport: {\n tabLabel: 'Forhåndsvisning',\n tabDescription: 'Pixelbredder for forhåndsvisningstilstandene Tablet og Mobil.',\n tabletWidth: 'Tablet (px)',\n mobileWidth: 'Mobil (px)',\n },\n outline: {\n tabLabel: 'Kontur',\n tabDescription: 'Kontur + farvetone, der vises på den blok, du peger på eller vælger.',\n topLevelColor: 'Farve på øverste niveau',\n topLevelColorDesc: 'Hexfarve (f.eks. `#3b82f6`).',\n nestedColor: 'Farve for indlejrede',\n nestedColorDesc: 'Hexfarve for blokke, der er indlejret i en anden blok.',\n outlineWidth: 'Konturbredde (px)',\n outlineWidthDesc: 'Konturens tykkelse i pixels (1–5).',\n },\n toolbar: {\n tabLabel: 'Værktøjslinje',\n tabDescription:\n 'Flydende værktøjslinje til Flyt / Dupliker / Slet, der vises på den valgte blok.',\n enabled: 'Aktiveret',\n anchorCorner: 'Forankringshjørne',\n topRight: 'Øverst til højre',\n topLeft: 'Øverst til venstre',\n bottomRight: 'Nederst til højre',\n bottomLeft: 'Nederst til venstre',\n },\n validation: {\n colorRequired: 'Farve er påkrævet',\n colorInvalid: 'Skal være en hexfarve (f.eks. #3b82f6) eller rgb()/rgba()',\n mustBeNumber: 'Skal være et tal',\n outlineRange: 'Skal være mellem 1 og 5',\n },\n },\n}\n"],"names":["da","toggle","open","close","overlay","dialogLabel","resizeSidebar","toolbar","undo","undoTitle","redo","redoTitle","enterFullscreen","exitFullscreen","switchToEdit","switchToInteract","switchToInteractShort","showSidebar","hideSidebar","viewport","groupLabel","desktop","tablet","mobile","responsive","sidebar","tabs","page","block","settings","blockSelected","noBlockSelected","validationLabel","validationSingular","validationPlural","blocks","kicker","emptyPrompt","addBlock","blockName","blockNamePlaceholder","schemaError","drawerSingular","drawerPlural","deselect","actions","moveUp","moveUpLabel","moveDown","moveDownLabel","duplicate","duplicateLabel","addBelow","addBelowLabel","delete","deleteLabel","documentFields","noFields","noSettings","preview","title","loading","resizeLeft","resizeRight","error","heading","unknown","tryAgain","closeEditor","banner","builtBy","star","github","reportBug","globalLabel","globalDescription","tabLabel","tabDescription","position","positionRight","positionLeft","forceFullWidth","forceFullWidthDesc","tabletWidth","mobileWidth","outline","topLevelColor","topLevelColorDesc","nestedColor","nestedColorDesc","outlineWidth","outlineWidthDesc","enabled","anchorCorner","topRight","topLeft","bottomRight","bottomLeft","validation","colorRequired","colorInvalid","mustBeNumber","outlineRange"],"mappings":"AAAA,8EAA8E;AAG9E,OAAO,MAAMA,KAA+B;IAC1CC,QAAQ;QACNC,MAAM;QACNC,OAAO;IACT;IACAC,SAAS;QACPC,aAAa;QACbC,eAAe;IACjB;IACAC,SAAS;QACPC,MAAM;QACNC,WAAW;QACXC,MAAM;QACNC,WAAW;QACXC,iBAAiB;QACjBC,gBAAgB;QAChBC,cAAc;QACdC,kBAAkB;QAClBC,uBAAuB;QACvBC,aAAa;QACbC,aAAa;IACf;IACAC,UAAU;QACRC,YAAY;QACZC,SAAS;QACTC,QAAQ;QACRC,QAAQ;QACRC,YAAY;IACd;IACAC,SAAS;QACPC,MAAM;YACJC,MAAM;YACNC,OAAO;YACPC,UAAU;QACZ;QACAC,eAAe;QACfC,iBAAiB;QACjBC,iBAAiB;QACjBC,oBAAoB;QACpBC,kBAAkB;IACpB;IACAC,QAAQ;QACNC,QAAQ;QACRC,aAAa;QACbC,UAAU;QACVC,WAAW;QACXC,sBAAsB;QACtBC,aAAa;QACbC,gBAAgB;QAChBC,cAAc;QACdC,UAAU;QACVC,SAAS;YACPtC,SAAS;YACTuC,QAAQ;YACRC,aAAa;YACbC,UAAU;YACVC,eAAe;YACfC,WAAW;YACXC,gBAAgB;YAChBC,UAAU;YACVC,eAAe;YACfC,QAAQ;YACRC,aAAa;QACf;IACF;IACAC,gBAAgB;QACdC,UAAU;QACVC,YAAY;IACd;IACAC,SAAS;QACPC,OAAO;QACPC,SAAS;QACTC,YAAY;QACZC,aAAa;IACf;IACAC,OAAO;QACLC,SAAS;QACTC,SAAS;QACTC,UAAU;QACVC,aAAa;IACf;IACAC,QAAQ;QACNC,SAAS;QACTC,MAAM;QACNC,QAAQ;QACRC,WAAW;IACb;IACA5C,UAAU;QACR6C,aAAa;QACbC,mBAAmB;QACnBlD,SAAS;YACPmD,UAAU;YACVC,gBAAgB;YAChBC,UAAU;YACVC,eAAe;YACfC,cAAc;YACdC,gBAAgB;YAChBC,oBACE;QACJ;QACA/D,UAAU;YACRyD,UAAU;YACVC,gBAAgB;YAChBM,aAAa;YACbC,aAAa;QACf;QACAC,SAAS;YACPT,UAAU;YACVC,gBAAgB;YAChBS,eAAe;YACfC,mBAAmB;YACnBC,aAAa;YACbC,iBAAiB;YACjBC,cAAc;YACdC,kBAAkB;QACpB;QACApF,SAAS;YACPqE,UAAU;YACVC,gBACE;YACFe,SAAS;YACTC,cAAc;YACdC,UAAU;YACVC,SAAS;YACTC,aAAa;YACbC,YAAY;QACd;QACAC,YAAY;YACVC,eAAe;YACfC,cAAc;YACdC,cAAc;YACdC,cAAc;QAChB;IACF;AACF,EAAC"}
@@ -0,0 +1,2 @@
1
+ import type { BetterEditorTranslations } from './types';
2
+ export declare const de: BetterEditorTranslations;
@@ -0,0 +1,135 @@
1
+ export const de = {
2
+ toggle: {
3
+ open: 'Better Editor öffnen',
4
+ close: 'Better Editor schließen'
5
+ },
6
+ overlay: {
7
+ dialogLabel: 'Better Editor',
8
+ resizeSidebar: 'Sidebar-Breite ändern (← / → Pfeiltasten)'
9
+ },
10
+ toolbar: {
11
+ undo: 'Rückgängig',
12
+ undoTitle: 'Rückgängig (Cmd/Strg+Z)',
13
+ redo: 'Wiederholen',
14
+ redoTitle: 'Wiederholen (Cmd/Strg+Umschalt+Z)',
15
+ enterFullscreen: 'Vollbild aktivieren',
16
+ exitFullscreen: 'Vollbild beenden',
17
+ switchToEdit: 'In den Bearbeitungsmodus wechseln',
18
+ switchToInteract: 'In den Interaktionsmodus wechseln (Formulare, Akkordeons, Links)',
19
+ switchToInteractShort: 'In den Interaktionsmodus wechseln',
20
+ showSidebar: 'Sidebar einblenden',
21
+ hideSidebar: 'Sidebar ausblenden'
22
+ },
23
+ viewport: {
24
+ groupLabel: 'Vorschau-Ansicht',
25
+ desktop: 'Desktop',
26
+ tablet: 'Tablet',
27
+ mobile: 'Mobil',
28
+ responsive: 'Responsiv (Größe per Drag ändern)'
29
+ },
30
+ sidebar: {
31
+ tabs: {
32
+ page: 'Seite',
33
+ block: 'Blöcke',
34
+ settings: 'Einstellungen'
35
+ },
36
+ blockSelected: 'Block ausgewählt: ',
37
+ noBlockSelected: 'Kein Block ausgewählt',
38
+ validationLabel: 'Validierungsfehler',
39
+ validationSingular: '1 Feld benötigt Aufmerksamkeit',
40
+ validationPlural: ' Felder benötigen Aufmerksamkeit'
41
+ },
42
+ blocks: {
43
+ kicker: 'Block',
44
+ emptyPrompt: 'Block in der Vorschau auswählen, um seine Einstellungen zu bearbeiten.',
45
+ addBlock: 'Block hinzufügen',
46
+ blockName: 'Blockname',
47
+ blockNamePlaceholder: 'Optionale Bezeichnung für diesen Block',
48
+ schemaError: 'Block-Schema für diesen Pfad konnte nicht aufgelöst werden.',
49
+ drawerSingular: 'Block',
50
+ drawerPlural: 'Blöcke',
51
+ deselect: 'Abwählen',
52
+ actions: {
53
+ toolbar: 'Block-Aktionen',
54
+ moveUp: 'Nach oben',
55
+ moveUpLabel: 'Block nach oben verschieben',
56
+ moveDown: 'Nach unten',
57
+ moveDownLabel: 'Block nach unten verschieben',
58
+ duplicate: 'Duplizieren',
59
+ duplicateLabel: 'Block duplizieren',
60
+ addBelow: 'Block darunter einfügen',
61
+ addBelowLabel: 'Block darunter einfügen',
62
+ delete: 'Löschen',
63
+ deleteLabel: 'Block löschen'
64
+ }
65
+ },
66
+ documentFields: {
67
+ noFields: 'Keine Felder auf Dokumentebene gefunden.',
68
+ noSettings: 'Keine Dokument-Einstellungen.'
69
+ },
70
+ preview: {
71
+ title: 'Better Editor Vorschau',
72
+ loading: 'Vorschau wird geladen',
73
+ resizeLeft: 'Vorschau von links vergrößern',
74
+ resizeRight: 'Vorschau von rechts vergrößern'
75
+ },
76
+ error: {
77
+ heading: 'Better Editor ist abgestürzt',
78
+ unknown: 'Unbekannter Fehler.',
79
+ tryAgain: 'Erneut versuchen',
80
+ closeEditor: 'Editor schließen'
81
+ },
82
+ banner: {
83
+ builtBy: 'Wenn dir dieses Plugin gefällt, hinterlasse bitte einen Stern ⭐',
84
+ star: 'Stern geben',
85
+ github: 'GitHub',
86
+ reportBug: 'Fehler melden'
87
+ },
88
+ settings: {
89
+ globalLabel: 'Einstellungen',
90
+ globalDescription: 'Editorweite Einstellungen für das Better Editor Overlay.',
91
+ sidebar: {
92
+ tabLabel: 'Sidebar',
93
+ tabDescription: 'Position und Feldanordnung der Sidebar.',
94
+ position: 'Position',
95
+ positionRight: 'Rechts',
96
+ positionLeft: 'Links',
97
+ forceFullWidth: 'Felder in voller Breite stapeln',
98
+ forceFullWidthDesc: 'Überschreibt admin.width für Sidebar-Felder, sodass sie immer die volle Zeile einnehmen.'
99
+ },
100
+ viewport: {
101
+ tabLabel: 'Ansicht',
102
+ tabDescription: 'Pixelbreiten für Tablet- und Mobil-Vorschau.',
103
+ tabletWidth: 'Tablet (px)',
104
+ mobileWidth: 'Mobil (px)'
105
+ },
106
+ outline: {
107
+ tabLabel: 'Umrandung',
108
+ tabDescription: 'Umrandung und Einfärbung des ausgewählten Blocks.',
109
+ topLevelColor: 'Farbe oberste Ebene',
110
+ topLevelColorDesc: 'Hex-Farbe (z. B. `#3b82f6`).',
111
+ nestedColor: 'Farbe verschachtelt',
112
+ nestedColorDesc: 'Hex-Farbe für Blöcke innerhalb eines anderen Blocks.',
113
+ outlineWidth: 'Umrandungsbreite (px)',
114
+ outlineWidthDesc: 'Linienstärke in Pixeln (1–5).'
115
+ },
116
+ toolbar: {
117
+ tabLabel: 'Werkzeugleiste',
118
+ tabDescription: 'Schwebende Werkzeugleiste mit Verschieben / Duplizieren / Löschen für den ausgewählten Block.',
119
+ enabled: 'Aktiviert',
120
+ anchorCorner: 'Ankerposition',
121
+ topRight: 'Oben rechts',
122
+ topLeft: 'Oben links',
123
+ bottomRight: 'Unten rechts',
124
+ bottomLeft: 'Unten links'
125
+ },
126
+ validation: {
127
+ colorRequired: 'Farbe ist erforderlich',
128
+ colorInvalid: 'Muss eine Hex-Farbe (z. B. #3b82f6) oder rgb()/rgba() sein',
129
+ mustBeNumber: 'Muss eine Zahl sein',
130
+ outlineRange: 'Muss zwischen 1 und 5 liegen'
131
+ }
132
+ }
133
+ };
134
+
135
+ //# sourceMappingURL=de.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/i18n/de.ts"],"sourcesContent":["import type { BetterEditorTranslations } from './types'\n\nexport const de: BetterEditorTranslations = {\n toggle: {\n open: 'Better Editor öffnen',\n close: 'Better Editor schließen',\n },\n overlay: {\n dialogLabel: 'Better Editor',\n resizeSidebar: 'Sidebar-Breite ändern (← / → Pfeiltasten)',\n },\n toolbar: {\n undo: 'Rückgängig',\n undoTitle: 'Rückgängig (Cmd/Strg+Z)',\n redo: 'Wiederholen',\n redoTitle: 'Wiederholen (Cmd/Strg+Umschalt+Z)',\n enterFullscreen: 'Vollbild aktivieren',\n exitFullscreen: 'Vollbild beenden',\n switchToEdit: 'In den Bearbeitungsmodus wechseln',\n switchToInteract: 'In den Interaktionsmodus wechseln (Formulare, Akkordeons, Links)',\n switchToInteractShort: 'In den Interaktionsmodus wechseln',\n showSidebar: 'Sidebar einblenden',\n hideSidebar: 'Sidebar ausblenden',\n },\n viewport: {\n groupLabel: 'Vorschau-Ansicht',\n desktop: 'Desktop',\n tablet: 'Tablet',\n mobile: 'Mobil',\n responsive: 'Responsiv (Größe per Drag ändern)',\n },\n sidebar: {\n tabs: {\n page: 'Seite',\n block: 'Blöcke',\n settings: 'Einstellungen',\n },\n blockSelected: 'Block ausgewählt: ',\n noBlockSelected: 'Kein Block ausgewählt',\n validationLabel: 'Validierungsfehler',\n validationSingular: '1 Feld benötigt Aufmerksamkeit',\n validationPlural: ' Felder benötigen Aufmerksamkeit',\n },\n blocks: {\n kicker: 'Block',\n emptyPrompt: 'Block in der Vorschau auswählen, um seine Einstellungen zu bearbeiten.',\n addBlock: 'Block hinzufügen',\n blockName: 'Blockname',\n blockNamePlaceholder: 'Optionale Bezeichnung für diesen Block',\n schemaError: 'Block-Schema für diesen Pfad konnte nicht aufgelöst werden.',\n drawerSingular: 'Block',\n drawerPlural: 'Blöcke',\n deselect: 'Abwählen',\n actions: {\n toolbar: 'Block-Aktionen',\n moveUp: 'Nach oben',\n moveUpLabel: 'Block nach oben verschieben',\n moveDown: 'Nach unten',\n moveDownLabel: 'Block nach unten verschieben',\n duplicate: 'Duplizieren',\n duplicateLabel: 'Block duplizieren',\n addBelow: 'Block darunter einfügen',\n addBelowLabel: 'Block darunter einfügen',\n delete: 'Löschen',\n deleteLabel: 'Block löschen',\n },\n },\n documentFields: {\n noFields: 'Keine Felder auf Dokumentebene gefunden.',\n noSettings: 'Keine Dokument-Einstellungen.',\n },\n preview: {\n title: 'Better Editor Vorschau',\n loading: 'Vorschau wird geladen',\n resizeLeft: 'Vorschau von links vergrößern',\n resizeRight: 'Vorschau von rechts vergrößern',\n },\n error: {\n heading: 'Better Editor ist abgestürzt',\n unknown: 'Unbekannter Fehler.',\n tryAgain: 'Erneut versuchen',\n closeEditor: 'Editor schließen',\n },\n banner: {\n builtBy: 'Wenn dir dieses Plugin gefällt, hinterlasse bitte einen Stern ⭐',\n star: 'Stern geben',\n github: 'GitHub',\n reportBug: 'Fehler melden',\n },\n settings: {\n globalLabel: 'Einstellungen',\n globalDescription: 'Editorweite Einstellungen für das Better Editor Overlay.',\n sidebar: {\n tabLabel: 'Sidebar',\n tabDescription: 'Position und Feldanordnung der Sidebar.',\n position: 'Position',\n positionRight: 'Rechts',\n positionLeft: 'Links',\n forceFullWidth: 'Felder in voller Breite stapeln',\n forceFullWidthDesc:\n 'Überschreibt admin.width für Sidebar-Felder, sodass sie immer die volle Zeile einnehmen.',\n },\n viewport: {\n tabLabel: 'Ansicht',\n tabDescription: 'Pixelbreiten für Tablet- und Mobil-Vorschau.',\n tabletWidth: 'Tablet (px)',\n mobileWidth: 'Mobil (px)',\n },\n outline: {\n tabLabel: 'Umrandung',\n tabDescription: 'Umrandung und Einfärbung des ausgewählten Blocks.',\n topLevelColor: 'Farbe oberste Ebene',\n topLevelColorDesc: 'Hex-Farbe (z. B. `#3b82f6`).',\n nestedColor: 'Farbe verschachtelt',\n nestedColorDesc: 'Hex-Farbe für Blöcke innerhalb eines anderen Blocks.',\n outlineWidth: 'Umrandungsbreite (px)',\n outlineWidthDesc: 'Linienstärke in Pixeln (1–5).',\n },\n toolbar: {\n tabLabel: 'Werkzeugleiste',\n tabDescription:\n 'Schwebende Werkzeugleiste mit Verschieben / Duplizieren / Löschen für den ausgewählten Block.',\n enabled: 'Aktiviert',\n anchorCorner: 'Ankerposition',\n topRight: 'Oben rechts',\n topLeft: 'Oben links',\n bottomRight: 'Unten rechts',\n bottomLeft: 'Unten links',\n },\n validation: {\n colorRequired: 'Farbe ist erforderlich',\n colorInvalid: 'Muss eine Hex-Farbe (z. B. #3b82f6) oder rgb()/rgba() sein',\n mustBeNumber: 'Muss eine Zahl sein',\n outlineRange: 'Muss zwischen 1 und 5 liegen',\n },\n },\n}\n"],"names":["de","toggle","open","close","overlay","dialogLabel","resizeSidebar","toolbar","undo","undoTitle","redo","redoTitle","enterFullscreen","exitFullscreen","switchToEdit","switchToInteract","switchToInteractShort","showSidebar","hideSidebar","viewport","groupLabel","desktop","tablet","mobile","responsive","sidebar","tabs","page","block","settings","blockSelected","noBlockSelected","validationLabel","validationSingular","validationPlural","blocks","kicker","emptyPrompt","addBlock","blockName","blockNamePlaceholder","schemaError","drawerSingular","drawerPlural","deselect","actions","moveUp","moveUpLabel","moveDown","moveDownLabel","duplicate","duplicateLabel","addBelow","addBelowLabel","delete","deleteLabel","documentFields","noFields","noSettings","preview","title","loading","resizeLeft","resizeRight","error","heading","unknown","tryAgain","closeEditor","banner","builtBy","star","github","reportBug","globalLabel","globalDescription","tabLabel","tabDescription","position","positionRight","positionLeft","forceFullWidth","forceFullWidthDesc","tabletWidth","mobileWidth","outline","topLevelColor","topLevelColorDesc","nestedColor","nestedColorDesc","outlineWidth","outlineWidthDesc","enabled","anchorCorner","topRight","topLeft","bottomRight","bottomLeft","validation","colorRequired","colorInvalid","mustBeNumber","outlineRange"],"mappings":"AAEA,OAAO,MAAMA,KAA+B;IAC1CC,QAAQ;QACNC,MAAM;QACNC,OAAO;IACT;IACAC,SAAS;QACPC,aAAa;QACbC,eAAe;IACjB;IACAC,SAAS;QACPC,MAAM;QACNC,WAAW;QACXC,MAAM;QACNC,WAAW;QACXC,iBAAiB;QACjBC,gBAAgB;QAChBC,cAAc;QACdC,kBAAkB;QAClBC,uBAAuB;QACvBC,aAAa;QACbC,aAAa;IACf;IACAC,UAAU;QACRC,YAAY;QACZC,SAAS;QACTC,QAAQ;QACRC,QAAQ;QACRC,YAAY;IACd;IACAC,SAAS;QACPC,MAAM;YACJC,MAAM;YACNC,OAAO;YACPC,UAAU;QACZ;QACAC,eAAe;QACfC,iBAAiB;QACjBC,iBAAiB;QACjBC,oBAAoB;QACpBC,kBAAkB;IACpB;IACAC,QAAQ;QACNC,QAAQ;QACRC,aAAa;QACbC,UAAU;QACVC,WAAW;QACXC,sBAAsB;QACtBC,aAAa;QACbC,gBAAgB;QAChBC,cAAc;QACdC,UAAU;QACVC,SAAS;YACPtC,SAAS;YACTuC,QAAQ;YACRC,aAAa;YACbC,UAAU;YACVC,eAAe;YACfC,WAAW;YACXC,gBAAgB;YAChBC,UAAU;YACVC,eAAe;YACfC,QAAQ;YACRC,aAAa;QACf;IACF;IACAC,gBAAgB;QACdC,UAAU;QACVC,YAAY;IACd;IACAC,SAAS;QACPC,OAAO;QACPC,SAAS;QACTC,YAAY;QACZC,aAAa;IACf;IACAC,OAAO;QACLC,SAAS;QACTC,SAAS;QACTC,UAAU;QACVC,aAAa;IACf;IACAC,QAAQ;QACNC,SAAS;QACTC,MAAM;QACNC,QAAQ;QACRC,WAAW;IACb;IACA5C,UAAU;QACR6C,aAAa;QACbC,mBAAmB;QACnBlD,SAAS;YACPmD,UAAU;YACVC,gBAAgB;YAChBC,UAAU;YACVC,eAAe;YACfC,cAAc;YACdC,gBAAgB;YAChBC,oBACE;QACJ;QACA/D,UAAU;YACRyD,UAAU;YACVC,gBAAgB;YAChBM,aAAa;YACbC,aAAa;QACf;QACAC,SAAS;YACPT,UAAU;YACVC,gBAAgB;YAChBS,eAAe;YACfC,mBAAmB;YACnBC,aAAa;YACbC,iBAAiB;YACjBC,cAAc;YACdC,kBAAkB;QACpB;QACApF,SAAS;YACPqE,UAAU;YACVC,gBACE;YACFe,SAAS;YACTC,cAAc;YACdC,UAAU;YACVC,SAAS;YACTC,aAAa;YACbC,YAAY;QACd;QACAC,YAAY;YACVC,eAAe;YACfC,cAAc;YACdC,cAAc;YACdC,cAAc;QAChB;IACF;AACF,EAAC"}
@@ -0,0 +1,2 @@
1
+ import type { BetterEditorTranslations } from './types';
2
+ export declare const en: BetterEditorTranslations;