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.
- package/dist/admin/ErrorBoundary.d.ts +1 -10
- package/dist/admin/ErrorBoundary.js +14 -5
- package/dist/admin/ErrorBoundary.js.map +1 -1
- package/dist/admin/LiveEditorOverlay.js +4 -2
- package/dist/admin/LiveEditorOverlay.js.map +1 -1
- package/dist/admin/LiveEditorToggle.d.ts +2 -0
- package/dist/admin/LiveEditorToggle.js +14 -9
- package/dist/admin/LiveEditorToggle.js.map +1 -1
- package/dist/admin/PreviewFrame.js +6 -4
- package/dist/admin/PreviewFrame.js.map +1 -1
- package/dist/admin/PreviewToolbar.js +20 -13
- package/dist/admin/PreviewToolbar.js.map +1 -1
- package/dist/admin/SettingsBanner.js +10 -5
- package/dist/admin/SettingsBanner.js.map +1 -1
- package/dist/admin/ViewportToggle.js +30 -25
- package/dist/admin/ViewportToggle.js.map +1 -1
- package/dist/admin/blocks/AddBlockDrawer.js +7 -3
- package/dist/admin/blocks/AddBlockDrawer.js.map +1 -1
- package/dist/admin/blocks/BlockActionsToolbar.js +13 -11
- package/dist/admin/blocks/BlockActionsToolbar.js.map +1 -1
- package/dist/admin/blocks/BlockEmptyState.js +7 -3
- package/dist/admin/blocks/BlockEmptyState.js.map +1 -1
- package/dist/admin/blocks/BlockHeader.d.ts +1 -0
- package/dist/admin/blocks/BlockHeader.js +9 -8
- package/dist/admin/blocks/BlockHeader.js.map +1 -1
- package/dist/admin/blocks/schema.js +38 -7
- package/dist/admin/blocks/schema.js.map +1 -1
- package/dist/admin/sidebar/BlockSettingsTab.js +19 -4
- package/dist/admin/sidebar/BlockSettingsTab.js.map +1 -1
- package/dist/admin/sidebar/DocumentMetaTab.js +6 -2
- package/dist/admin/sidebar/DocumentMetaTab.js.map +1 -1
- package/dist/admin/sidebar/DocumentSettingsTab.js +6 -2
- package/dist/admin/sidebar/DocumentSettingsTab.js.map +1 -1
- package/dist/admin/sidebar/Sidebar.js +21 -16
- package/dist/admin/sidebar/Sidebar.js.map +1 -1
- package/dist/admin/sidebar/ValidationSummary.js +5 -2
- package/dist/admin/sidebar/ValidationSummary.js.map +1 -1
- package/dist/global.js +54 -39
- package/dist/global.js.map +1 -1
- package/dist/hooks/usePreviewBinding.js +6 -2
- package/dist/hooks/usePreviewBinding.js.map +1 -1
- package/dist/hooks/usePreviewSettingsSync.js +8 -3
- package/dist/hooks/usePreviewSettingsSync.js.map +1 -1
- package/dist/i18n/cs.d.ts +2 -0
- package/dist/i18n/cs.js +136 -0
- package/dist/i18n/cs.js.map +1 -0
- package/dist/i18n/da.d.ts +2 -0
- package/dist/i18n/da.js +136 -0
- package/dist/i18n/da.js.map +1 -0
- package/dist/i18n/de.d.ts +2 -0
- package/dist/i18n/de.js +135 -0
- package/dist/i18n/de.js.map +1 -0
- package/dist/i18n/en.d.ts +2 -0
- package/dist/i18n/en.js +135 -0
- package/dist/i18n/en.js.map +1 -0
- package/dist/i18n/es.d.ts +2 -0
- package/dist/i18n/es.js +136 -0
- package/dist/i18n/es.js.map +1 -0
- package/dist/i18n/fr.d.ts +2 -0
- package/dist/i18n/fr.js +136 -0
- package/dist/i18n/fr.js.map +1 -0
- package/dist/i18n/index.d.ts +2 -0
- package/dist/i18n/index.js +34 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/it.d.ts +2 -0
- package/dist/i18n/it.js +136 -0
- package/dist/i18n/it.js.map +1 -0
- package/dist/i18n/merge.d.ts +8 -0
- package/dist/i18n/merge.js +22 -0
- package/dist/i18n/merge.js.map +1 -0
- package/dist/i18n/nb.d.ts +2 -0
- package/dist/i18n/nb.js +136 -0
- package/dist/i18n/nb.js.map +1 -0
- package/dist/i18n/nl.d.ts +2 -0
- package/dist/i18n/nl.js +136 -0
- package/dist/i18n/nl.js.map +1 -0
- package/dist/i18n/pl.d.ts +2 -0
- package/dist/i18n/pl.js +136 -0
- package/dist/i18n/pl.js.map +1 -0
- package/dist/i18n/pt.d.ts +2 -0
- package/dist/i18n/pt.js +136 -0
- package/dist/i18n/pt.js.map +1 -0
- package/dist/i18n/ro.d.ts +2 -0
- package/dist/i18n/ro.js +136 -0
- package/dist/i18n/ro.js.map +1 -0
- package/dist/i18n/sv.d.ts +2 -0
- package/dist/i18n/sv.js +136 -0
- package/dist/i18n/sv.js.map +1 -0
- package/dist/i18n/tr.d.ts +2 -0
- package/dist/i18n/tr.js +136 -0
- package/dist/i18n/tr.js.map +1 -0
- package/dist/i18n/types.d.ts +133 -0
- package/dist/i18n/types.js +3 -0
- package/dist/i18n/types.js.map +1 -0
- package/dist/i18n/uk.d.ts +2 -0
- package/dist/i18n/uk.js +136 -0
- package/dist/i18n/uk.js.map +1 -0
- package/dist/i18n/useBetterEditorT.d.ts +2 -0
- package/dist/i18n/useBetterEditorT.js +10 -0
- package/dist/i18n/useBetterEditorT.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +19 -2
- package/dist/index.js.map +1 -1
- package/dist/preview/HoverToolbar.d.ts +8 -0
- package/dist/preview/HoverToolbar.js +31 -29
- package/dist/preview/HoverToolbar.js.map +1 -1
- package/dist/preview/HoverToolbarController.d.ts +6 -0
- package/dist/preview/HoverToolbarController.js +20 -5
- package/dist/preview/HoverToolbarController.js.map +1 -1
- package/dist/styles/blocks-tab.css +1 -7
- package/dist/styles/overlay.css +2 -0
- package/dist/styles/sidebar.css +1 -0
- package/dist/styles/toggle.css +17 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +13 -14
package/dist/i18n/tr.js
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
// Machine-translated (not reviewed by a native speaker) — may contain errors.
|
|
2
|
+
export const tr = {
|
|
3
|
+
toggle: {
|
|
4
|
+
open: 'Better Editor’ı aç',
|
|
5
|
+
close: 'Better Editor’ı kapat'
|
|
6
|
+
},
|
|
7
|
+
overlay: {
|
|
8
|
+
dialogLabel: 'Better Editor',
|
|
9
|
+
resizeSidebar: 'Kenar çubuğunu yeniden boyutlandır (← / → ok tuşlarını kullanın)'
|
|
10
|
+
},
|
|
11
|
+
toolbar: {
|
|
12
|
+
undo: 'Geri al',
|
|
13
|
+
undoTitle: 'Geri al (Cmd/Ctrl+Z)',
|
|
14
|
+
redo: 'Yinele',
|
|
15
|
+
redoTitle: 'Yinele (Cmd/Ctrl+Shift+Z)',
|
|
16
|
+
enterFullscreen: 'Tam ekrana geç',
|
|
17
|
+
exitFullscreen: 'Tam ekrandan çık',
|
|
18
|
+
switchToEdit: 'Düzenleme moduna geç',
|
|
19
|
+
switchToInteract: 'Etkileşim moduna geç (formlar, akordeonlar, bağlantılar)',
|
|
20
|
+
switchToInteractShort: 'Etkileşim moduna geç',
|
|
21
|
+
showSidebar: 'Kenar çubuğunu göster',
|
|
22
|
+
hideSidebar: 'Kenar çubuğunu gizle'
|
|
23
|
+
},
|
|
24
|
+
viewport: {
|
|
25
|
+
groupLabel: 'Önizleme görünümü',
|
|
26
|
+
desktop: 'Masaüstü',
|
|
27
|
+
tablet: 'Tablet',
|
|
28
|
+
mobile: 'Mobil',
|
|
29
|
+
responsive: 'Duyarlı (boyutlandırmak için sürükleyin)'
|
|
30
|
+
},
|
|
31
|
+
sidebar: {
|
|
32
|
+
tabs: {
|
|
33
|
+
page: 'Sayfa',
|
|
34
|
+
block: 'Bloklar',
|
|
35
|
+
settings: 'Ayarlar'
|
|
36
|
+
},
|
|
37
|
+
blockSelected: 'Seçili blok: ',
|
|
38
|
+
noBlockSelected: 'Seçili blok yok',
|
|
39
|
+
validationLabel: 'Doğrulama hataları',
|
|
40
|
+
validationSingular: '1 alan dikkat gerektiriyor',
|
|
41
|
+
validationPlural: ' alan dikkat gerektiriyor'
|
|
42
|
+
},
|
|
43
|
+
blocks: {
|
|
44
|
+
kicker: 'Blok',
|
|
45
|
+
emptyPrompt: 'Ayarlarını düzenlemek için önizlemede bir blok seçin.',
|
|
46
|
+
addBlock: 'Blok ekle',
|
|
47
|
+
blockName: 'Blok adı',
|
|
48
|
+
blockNamePlaceholder: 'Bu blok için isteğe bağlı etiket',
|
|
49
|
+
schemaError: 'Bu yol için blok şeması çözümlenemedi.',
|
|
50
|
+
drawerSingular: 'Blok',
|
|
51
|
+
drawerPlural: 'Bloklar',
|
|
52
|
+
deselect: 'Seçimi kaldır',
|
|
53
|
+
actions: {
|
|
54
|
+
toolbar: 'Blok işlemleri',
|
|
55
|
+
moveUp: 'Yukarı taşı',
|
|
56
|
+
moveUpLabel: 'Bloğu yukarı taşı',
|
|
57
|
+
moveDown: 'Aşağı taşı',
|
|
58
|
+
moveDownLabel: 'Bloğu aşağı taşı',
|
|
59
|
+
duplicate: 'Çoğalt',
|
|
60
|
+
duplicateLabel: 'Bloğu çoğalt',
|
|
61
|
+
addBelow: 'Altına blok ekle',
|
|
62
|
+
addBelowLabel: 'Altına blok ekle',
|
|
63
|
+
delete: 'Sil',
|
|
64
|
+
deleteLabel: 'Bloğu sil'
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
documentFields: {
|
|
68
|
+
noFields: 'Belge düzeyinde alan bulunamadı.',
|
|
69
|
+
noSettings: 'Belge ayarı yok.'
|
|
70
|
+
},
|
|
71
|
+
preview: {
|
|
72
|
+
title: 'Better Editor önizlemesi',
|
|
73
|
+
loading: 'Önizleme yükleniyor',
|
|
74
|
+
resizeLeft: 'Önizlemeyi soldan yeniden boyutlandır',
|
|
75
|
+
resizeRight: 'Önizlemeyi sağdan yeniden boyutlandır'
|
|
76
|
+
},
|
|
77
|
+
error: {
|
|
78
|
+
heading: 'Better Editor çöktü',
|
|
79
|
+
unknown: 'Bilinmeyen hata.',
|
|
80
|
+
tryAgain: 'Tekrar dene',
|
|
81
|
+
closeEditor: 'Düzenleyiciyi kapat'
|
|
82
|
+
},
|
|
83
|
+
banner: {
|
|
84
|
+
builtBy: 'Bu eklentiyi faydalı bulduysanız lütfen bir yıldız bırakın ⭐',
|
|
85
|
+
star: 'Star',
|
|
86
|
+
github: 'GitHub',
|
|
87
|
+
reportBug: 'Hata bildir'
|
|
88
|
+
},
|
|
89
|
+
settings: {
|
|
90
|
+
globalLabel: 'Ayarlar',
|
|
91
|
+
globalDescription: 'Better Editor katmanı için editör geneli tercihler.',
|
|
92
|
+
sidebar: {
|
|
93
|
+
tabLabel: 'Kenar çubuğu',
|
|
94
|
+
tabDescription: 'Kenar çubuğunun nerede durduğu ve alanlarının nasıl dizildiği.',
|
|
95
|
+
position: 'Konum',
|
|
96
|
+
positionRight: 'Sağ',
|
|
97
|
+
positionLeft: 'Sol',
|
|
98
|
+
forceFullWidth: 'Alanları tam genişlikte diz',
|
|
99
|
+
forceFullWidthDesc: 'Kenar çubuğu alanlarında admin.width değerini geçersiz kılarak her zaman satırın tamamını kaplamalarını sağla.'
|
|
100
|
+
},
|
|
101
|
+
viewport: {
|
|
102
|
+
tabLabel: 'Görünüm',
|
|
103
|
+
tabDescription: 'Tablet ve Mobil önizleme modları için piksel genişlikleri.',
|
|
104
|
+
tabletWidth: 'Tablet (px)',
|
|
105
|
+
mobileWidth: 'Mobil (px)'
|
|
106
|
+
},
|
|
107
|
+
outline: {
|
|
108
|
+
tabLabel: 'Çerçeve',
|
|
109
|
+
tabDescription: 'Üzerine gelinen veya seçilen blokta gösterilen çerçeve + renk tonu.',
|
|
110
|
+
topLevelColor: 'Üst düzey renk',
|
|
111
|
+
topLevelColorDesc: 'Onaltılık renk (ör. `#3b82f6`).',
|
|
112
|
+
nestedColor: 'İç içe renk',
|
|
113
|
+
nestedColorDesc: 'Başka bir bloğun içine yerleştirilmiş bloklar için onaltılık renk.',
|
|
114
|
+
outlineWidth: 'Çerçeve kalınlığı (px)',
|
|
115
|
+
outlineWidthDesc: 'Piksel cinsinden çerçeve kalınlığı (1–5).'
|
|
116
|
+
},
|
|
117
|
+
toolbar: {
|
|
118
|
+
tabLabel: 'Araç çubuğu',
|
|
119
|
+
tabDescription: 'Seçili blokta görünen kayan Taşı / Çoğalt / Sil araç çubuğu.',
|
|
120
|
+
enabled: 'Etkin',
|
|
121
|
+
anchorCorner: 'Sabitleme köşesi',
|
|
122
|
+
topRight: 'Sağ üst',
|
|
123
|
+
topLeft: 'Sol üst',
|
|
124
|
+
bottomRight: 'Sağ alt',
|
|
125
|
+
bottomLeft: 'Sol alt'
|
|
126
|
+
},
|
|
127
|
+
validation: {
|
|
128
|
+
colorRequired: 'Renk gereklidir',
|
|
129
|
+
colorInvalid: 'Onaltılık bir renk (ör. #3b82f6) veya rgb()/rgba() olmalıdır',
|
|
130
|
+
mustBeNumber: 'Bir sayı olmalıdır',
|
|
131
|
+
outlineRange: '1 ile 5 arasında olmalıdır'
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
//# sourceMappingURL=tr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/i18n/tr.ts"],"sourcesContent":["// Machine-translated (not reviewed by a native speaker) — may contain errors.\nimport type { BetterEditorTranslations } from './types'\n\nexport const tr: BetterEditorTranslations = {\n toggle: {\n open: 'Better Editor’ı aç',\n close: 'Better Editor’ı kapat',\n },\n overlay: {\n dialogLabel: 'Better Editor',\n resizeSidebar: 'Kenar çubuğunu yeniden boyutlandır (← / → ok tuşlarını kullanın)',\n },\n toolbar: {\n undo: 'Geri al',\n undoTitle: 'Geri al (Cmd/Ctrl+Z)',\n redo: 'Yinele',\n redoTitle: 'Yinele (Cmd/Ctrl+Shift+Z)',\n enterFullscreen: 'Tam ekrana geç',\n exitFullscreen: 'Tam ekrandan çık',\n switchToEdit: 'Düzenleme moduna geç',\n switchToInteract: 'Etkileşim moduna geç (formlar, akordeonlar, bağlantılar)',\n switchToInteractShort: 'Etkileşim moduna geç',\n showSidebar: 'Kenar çubuğunu göster',\n hideSidebar: 'Kenar çubuğunu gizle',\n },\n viewport: {\n groupLabel: 'Önizleme görünümü',\n desktop: 'Masaüstü',\n tablet: 'Tablet',\n mobile: 'Mobil',\n responsive: 'Duyarlı (boyutlandırmak için sürükleyin)',\n },\n sidebar: {\n tabs: {\n page: 'Sayfa',\n block: 'Bloklar',\n settings: 'Ayarlar',\n },\n blockSelected: 'Seçili blok: ',\n noBlockSelected: 'Seçili blok yok',\n validationLabel: 'Doğrulama hataları',\n validationSingular: '1 alan dikkat gerektiriyor',\n validationPlural: ' alan dikkat gerektiriyor',\n },\n blocks: {\n kicker: 'Blok',\n emptyPrompt: 'Ayarlarını düzenlemek için önizlemede bir blok seçin.',\n addBlock: 'Blok ekle',\n blockName: 'Blok adı',\n blockNamePlaceholder: 'Bu blok için isteğe bağlı etiket',\n schemaError: 'Bu yol için blok şeması çözümlenemedi.',\n drawerSingular: 'Blok',\n drawerPlural: 'Bloklar',\n deselect: 'Seçimi kaldır',\n actions: {\n toolbar: 'Blok işlemleri',\n moveUp: 'Yukarı taşı',\n moveUpLabel: 'Bloğu yukarı taşı',\n moveDown: 'Aşağı taşı',\n moveDownLabel: 'Bloğu aşağı taşı',\n duplicate: 'Çoğalt',\n duplicateLabel: 'Bloğu çoğalt',\n addBelow: 'Altına blok ekle',\n addBelowLabel: 'Altına blok ekle',\n delete: 'Sil',\n deleteLabel: 'Bloğu sil',\n },\n },\n documentFields: {\n noFields: 'Belge düzeyinde alan bulunamadı.',\n noSettings: 'Belge ayarı yok.',\n },\n preview: {\n title: 'Better Editor önizlemesi',\n loading: 'Önizleme yükleniyor',\n resizeLeft: 'Önizlemeyi soldan yeniden boyutlandır',\n resizeRight: 'Önizlemeyi sağdan yeniden boyutlandır',\n },\n error: {\n heading: 'Better Editor çöktü',\n unknown: 'Bilinmeyen hata.',\n tryAgain: 'Tekrar dene',\n closeEditor: 'Düzenleyiciyi kapat',\n },\n banner: {\n builtBy: 'Bu eklentiyi faydalı bulduysanız lütfen bir yıldız bırakın ⭐',\n star: 'Star',\n github: 'GitHub',\n reportBug: 'Hata bildir',\n },\n settings: {\n globalLabel: 'Ayarlar',\n globalDescription: 'Better Editor katmanı için editör geneli tercihler.',\n sidebar: {\n tabLabel: 'Kenar çubuğu',\n tabDescription: 'Kenar çubuğunun nerede durduğu ve alanlarının nasıl dizildiği.',\n position: 'Konum',\n positionRight: 'Sağ',\n positionLeft: 'Sol',\n forceFullWidth: 'Alanları tam genişlikte diz',\n forceFullWidthDesc:\n 'Kenar çubuğu alanlarında admin.width değerini geçersiz kılarak her zaman satırın tamamını kaplamalarını sağla.',\n },\n viewport: {\n tabLabel: 'Görünüm',\n tabDescription: 'Tablet ve Mobil önizleme modları için piksel genişlikleri.',\n tabletWidth: 'Tablet (px)',\n mobileWidth: 'Mobil (px)',\n },\n outline: {\n tabLabel: 'Çerçeve',\n tabDescription: 'Üzerine gelinen veya seçilen blokta gösterilen çerçeve + renk tonu.',\n topLevelColor: 'Üst düzey renk',\n topLevelColorDesc: 'Onaltılık renk (ör. `#3b82f6`).',\n nestedColor: 'İç içe renk',\n nestedColorDesc: 'Başka bir bloğun içine yerleştirilmiş bloklar için onaltılık renk.',\n outlineWidth: 'Çerçeve kalınlığı (px)',\n outlineWidthDesc: 'Piksel cinsinden çerçeve kalınlığı (1–5).',\n },\n toolbar: {\n tabLabel: 'Araç çubuğu',\n tabDescription:\n 'Seçili blokta görünen kayan Taşı / Çoğalt / Sil araç çubuğu.',\n enabled: 'Etkin',\n anchorCorner: 'Sabitleme köşesi',\n topRight: 'Sağ üst',\n topLeft: 'Sol üst',\n bottomRight: 'Sağ alt',\n bottomLeft: 'Sol alt',\n },\n validation: {\n colorRequired: 'Renk gereklidir',\n colorInvalid: 'Onaltılık bir renk (ör. #3b82f6) veya rgb()/rgba() olmalıdır',\n mustBeNumber: 'Bir sayı olmalıdır',\n outlineRange: '1 ile 5 arasında olmalıdır',\n },\n },\n}\n"],"names":["tr","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,133 @@
|
|
|
1
|
+
export type BetterEditorTranslations = {
|
|
2
|
+
toggle: {
|
|
3
|
+
open: string;
|
|
4
|
+
close: string;
|
|
5
|
+
};
|
|
6
|
+
overlay: {
|
|
7
|
+
dialogLabel: string;
|
|
8
|
+
resizeSidebar: string;
|
|
9
|
+
};
|
|
10
|
+
toolbar: {
|
|
11
|
+
undo: string;
|
|
12
|
+
undoTitle: string;
|
|
13
|
+
redo: string;
|
|
14
|
+
redoTitle: string;
|
|
15
|
+
enterFullscreen: string;
|
|
16
|
+
exitFullscreen: string;
|
|
17
|
+
switchToEdit: string;
|
|
18
|
+
switchToInteract: string;
|
|
19
|
+
switchToInteractShort: string;
|
|
20
|
+
showSidebar: string;
|
|
21
|
+
hideSidebar: string;
|
|
22
|
+
};
|
|
23
|
+
viewport: {
|
|
24
|
+
groupLabel: string;
|
|
25
|
+
desktop: string;
|
|
26
|
+
tablet: string;
|
|
27
|
+
mobile: string;
|
|
28
|
+
responsive: string;
|
|
29
|
+
};
|
|
30
|
+
sidebar: {
|
|
31
|
+
tabs: {
|
|
32
|
+
page: string;
|
|
33
|
+
block: string;
|
|
34
|
+
settings: string;
|
|
35
|
+
};
|
|
36
|
+
blockSelected: string;
|
|
37
|
+
noBlockSelected: string;
|
|
38
|
+
validationLabel: string;
|
|
39
|
+
validationSingular: string;
|
|
40
|
+
validationPlural: string;
|
|
41
|
+
};
|
|
42
|
+
blocks: {
|
|
43
|
+
kicker: string;
|
|
44
|
+
emptyPrompt: string;
|
|
45
|
+
addBlock: string;
|
|
46
|
+
blockName: string;
|
|
47
|
+
blockNamePlaceholder: string;
|
|
48
|
+
schemaError: string;
|
|
49
|
+
drawerSingular: string;
|
|
50
|
+
drawerPlural: string;
|
|
51
|
+
deselect: string;
|
|
52
|
+
actions: {
|
|
53
|
+
toolbar: string;
|
|
54
|
+
moveUp: string;
|
|
55
|
+
moveUpLabel: string;
|
|
56
|
+
moveDown: string;
|
|
57
|
+
moveDownLabel: string;
|
|
58
|
+
duplicate: string;
|
|
59
|
+
duplicateLabel: string;
|
|
60
|
+
addBelow: string;
|
|
61
|
+
addBelowLabel: string;
|
|
62
|
+
delete: string;
|
|
63
|
+
deleteLabel: string;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
documentFields: {
|
|
67
|
+
noFields: string;
|
|
68
|
+
noSettings: string;
|
|
69
|
+
};
|
|
70
|
+
preview: {
|
|
71
|
+
title: string;
|
|
72
|
+
loading: string;
|
|
73
|
+
resizeLeft: string;
|
|
74
|
+
resizeRight: string;
|
|
75
|
+
};
|
|
76
|
+
error: {
|
|
77
|
+
heading: string;
|
|
78
|
+
unknown: string;
|
|
79
|
+
tryAgain: string;
|
|
80
|
+
closeEditor: string;
|
|
81
|
+
};
|
|
82
|
+
banner: {
|
|
83
|
+
builtBy: string;
|
|
84
|
+
star: string;
|
|
85
|
+
github: string;
|
|
86
|
+
reportBug: string;
|
|
87
|
+
};
|
|
88
|
+
settings: {
|
|
89
|
+
globalLabel: string;
|
|
90
|
+
globalDescription: string;
|
|
91
|
+
sidebar: {
|
|
92
|
+
tabLabel: string;
|
|
93
|
+
tabDescription: string;
|
|
94
|
+
position: string;
|
|
95
|
+
positionRight: string;
|
|
96
|
+
positionLeft: string;
|
|
97
|
+
forceFullWidth: string;
|
|
98
|
+
forceFullWidthDesc: string;
|
|
99
|
+
};
|
|
100
|
+
viewport: {
|
|
101
|
+
tabLabel: string;
|
|
102
|
+
tabDescription: string;
|
|
103
|
+
tabletWidth: string;
|
|
104
|
+
mobileWidth: string;
|
|
105
|
+
};
|
|
106
|
+
outline: {
|
|
107
|
+
tabLabel: string;
|
|
108
|
+
tabDescription: string;
|
|
109
|
+
topLevelColor: string;
|
|
110
|
+
topLevelColorDesc: string;
|
|
111
|
+
nestedColor: string;
|
|
112
|
+
nestedColorDesc: string;
|
|
113
|
+
outlineWidth: string;
|
|
114
|
+
outlineWidthDesc: string;
|
|
115
|
+
};
|
|
116
|
+
toolbar: {
|
|
117
|
+
tabLabel: string;
|
|
118
|
+
tabDescription: string;
|
|
119
|
+
enabled: string;
|
|
120
|
+
anchorCorner: string;
|
|
121
|
+
topRight: string;
|
|
122
|
+
topLeft: string;
|
|
123
|
+
bottomRight: string;
|
|
124
|
+
bottomLeft: string;
|
|
125
|
+
};
|
|
126
|
+
validation: {
|
|
127
|
+
colorRequired: string;
|
|
128
|
+
colorInvalid: string;
|
|
129
|
+
mustBeNumber: string;
|
|
130
|
+
outlineRange: string;
|
|
131
|
+
};
|
|
132
|
+
};
|
|
133
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/i18n/types.ts"],"sourcesContent":["export type BetterEditorTranslations = {\n toggle: {\n open: string\n close: string\n }\n overlay: {\n dialogLabel: string\n resizeSidebar: string\n }\n toolbar: {\n undo: string\n undoTitle: string\n redo: string\n redoTitle: string\n enterFullscreen: string\n exitFullscreen: string\n switchToEdit: string\n switchToInteract: string\n switchToInteractShort: string\n showSidebar: string\n hideSidebar: string\n }\n viewport: {\n groupLabel: string\n desktop: string\n tablet: string\n mobile: string\n responsive: string\n }\n sidebar: {\n tabs: { page: string; block: string; settings: string }\n blockSelected: string\n noBlockSelected: string\n validationLabel: string\n validationSingular: string\n validationPlural: string\n }\n blocks: {\n kicker: string\n emptyPrompt: string\n addBlock: string\n blockName: string\n blockNamePlaceholder: string\n schemaError: string\n drawerSingular: string\n drawerPlural: string\n deselect: string\n actions: {\n toolbar: string\n moveUp: string\n moveUpLabel: string\n moveDown: string\n moveDownLabel: string\n duplicate: string\n duplicateLabel: string\n addBelow: string\n addBelowLabel: string\n delete: string\n deleteLabel: string\n }\n }\n documentFields: {\n noFields: string\n noSettings: string\n }\n preview: {\n title: string\n loading: string\n resizeLeft: string\n resizeRight: string\n }\n error: {\n heading: string\n unknown: string\n tryAgain: string\n closeEditor: string\n }\n banner: {\n builtBy: string\n star: string\n github: string\n reportBug: string\n }\n settings: {\n globalLabel: string\n globalDescription: string\n sidebar: {\n tabLabel: string\n tabDescription: string\n position: string\n positionRight: string\n positionLeft: string\n forceFullWidth: string\n forceFullWidthDesc: string\n }\n viewport: {\n tabLabel: string\n tabDescription: string\n tabletWidth: string\n mobileWidth: string\n }\n outline: {\n tabLabel: string\n tabDescription: string\n topLevelColor: string\n topLevelColorDesc: string\n nestedColor: string\n nestedColorDesc: string\n outlineWidth: string\n outlineWidthDesc: string\n }\n toolbar: {\n tabLabel: string\n tabDescription: string\n enabled: string\n anchorCorner: string\n topRight: string\n topLeft: string\n bottomRight: string\n bottomLeft: string\n }\n validation: {\n colorRequired: string\n colorInvalid: string\n mustBeNumber: string\n outlineRange: string\n }\n }\n}\n"],"names":[],"mappings":"AAAA,WAgIC"}
|
package/dist/i18n/uk.js
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
// Machine-translated (not reviewed by a native speaker) — may contain errors.
|
|
2
|
+
export const uk = {
|
|
3
|
+
toggle: {
|
|
4
|
+
open: 'Відкрити Better Editor',
|
|
5
|
+
close: 'Закрити Better Editor'
|
|
6
|
+
},
|
|
7
|
+
overlay: {
|
|
8
|
+
dialogLabel: 'Better Editor',
|
|
9
|
+
resizeSidebar: 'Змінити розмір бічної панелі (використовуйте стрілки ← / →)'
|
|
10
|
+
},
|
|
11
|
+
toolbar: {
|
|
12
|
+
undo: 'Скасувати',
|
|
13
|
+
undoTitle: 'Скасувати (Cmd/Ctrl+Z)',
|
|
14
|
+
redo: 'Повторити',
|
|
15
|
+
redoTitle: 'Повторити (Cmd/Ctrl+Shift+Z)',
|
|
16
|
+
enterFullscreen: 'Увімкнути повноекранний режим',
|
|
17
|
+
exitFullscreen: 'Вийти з повноекранного режиму',
|
|
18
|
+
switchToEdit: 'Перейти в режим редагування',
|
|
19
|
+
switchToInteract: 'Перейти в режим взаємодії (форми, акордеони, посилання)',
|
|
20
|
+
switchToInteractShort: 'Перейти в режим взаємодії',
|
|
21
|
+
showSidebar: 'Показати бічну панель',
|
|
22
|
+
hideSidebar: 'Приховати бічну панель'
|
|
23
|
+
},
|
|
24
|
+
viewport: {
|
|
25
|
+
groupLabel: 'Область попереднього перегляду',
|
|
26
|
+
desktop: 'Комп’ютер',
|
|
27
|
+
tablet: 'Планшет',
|
|
28
|
+
mobile: 'Смартфон',
|
|
29
|
+
responsive: 'Адаптивний (перетягніть, щоб змінити розмір)'
|
|
30
|
+
},
|
|
31
|
+
sidebar: {
|
|
32
|
+
tabs: {
|
|
33
|
+
page: 'Сторінка',
|
|
34
|
+
block: 'Блоки',
|
|
35
|
+
settings: 'Налаштування'
|
|
36
|
+
},
|
|
37
|
+
blockSelected: 'Вибрано блок: ',
|
|
38
|
+
noBlockSelected: 'Блок не вибрано',
|
|
39
|
+
validationLabel: 'Помилки перевірки',
|
|
40
|
+
validationSingular: '1 поле потребує уваги',
|
|
41
|
+
validationPlural: ' полів потребує уваги'
|
|
42
|
+
},
|
|
43
|
+
blocks: {
|
|
44
|
+
kicker: 'Блок',
|
|
45
|
+
emptyPrompt: 'Виберіть блок у попередньому перегляді, щоб редагувати його налаштування.',
|
|
46
|
+
addBlock: 'Додати блок',
|
|
47
|
+
blockName: 'Назва блоку',
|
|
48
|
+
blockNamePlaceholder: 'Необов’язкова мітка для цього блоку',
|
|
49
|
+
schemaError: 'Не вдалося визначити схему блоку для цього шляху.',
|
|
50
|
+
drawerSingular: 'Блок',
|
|
51
|
+
drawerPlural: 'Блоки',
|
|
52
|
+
deselect: 'Скасувати вибір',
|
|
53
|
+
actions: {
|
|
54
|
+
toolbar: 'Дії з блоком',
|
|
55
|
+
moveUp: 'Перемістити вгору',
|
|
56
|
+
moveUpLabel: 'Перемістити блок вгору',
|
|
57
|
+
moveDown: 'Перемістити вниз',
|
|
58
|
+
moveDownLabel: 'Перемістити блок вниз',
|
|
59
|
+
duplicate: 'Дублювати',
|
|
60
|
+
duplicateLabel: 'Дублювати блок',
|
|
61
|
+
addBelow: 'Додати блок нижче',
|
|
62
|
+
addBelowLabel: 'Додати блок нижче',
|
|
63
|
+
delete: 'Видалити',
|
|
64
|
+
deleteLabel: 'Видалити блок'
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
documentFields: {
|
|
68
|
+
noFields: 'Полів рівня документа не знайдено.',
|
|
69
|
+
noSettings: 'Немає налаштувань документа.'
|
|
70
|
+
},
|
|
71
|
+
preview: {
|
|
72
|
+
title: 'Попередній перегляд Better Editor',
|
|
73
|
+
loading: 'Завантаження попереднього перегляду',
|
|
74
|
+
resizeLeft: 'Змінити розмір попереднього перегляду зліва',
|
|
75
|
+
resizeRight: 'Змінити розмір попереднього перегляду справа'
|
|
76
|
+
},
|
|
77
|
+
error: {
|
|
78
|
+
heading: 'Better Editor аварійно завершив роботу',
|
|
79
|
+
unknown: 'Невідома помилка.',
|
|
80
|
+
tryAgain: 'Спробувати ще раз',
|
|
81
|
+
closeEditor: 'Закрити редактор'
|
|
82
|
+
},
|
|
83
|
+
banner: {
|
|
84
|
+
builtBy: 'Якщо цей плагін вам корисний, будь ласка, поставте зірку ⭐',
|
|
85
|
+
star: 'Star',
|
|
86
|
+
github: 'GitHub',
|
|
87
|
+
reportBug: 'Повідомити про помилку'
|
|
88
|
+
},
|
|
89
|
+
settings: {
|
|
90
|
+
globalLabel: 'Налаштування',
|
|
91
|
+
globalDescription: 'Загальні налаштування накладки Better Editor.',
|
|
92
|
+
sidebar: {
|
|
93
|
+
tabLabel: 'Бічна панель',
|
|
94
|
+
tabDescription: 'Де розташована бічна панель і як складаються її поля.',
|
|
95
|
+
position: 'Розташування',
|
|
96
|
+
positionRight: 'Праворуч',
|
|
97
|
+
positionLeft: 'Ліворуч',
|
|
98
|
+
forceFullWidth: 'Складати поля на всю ширину',
|
|
99
|
+
forceFullWidthDesc: 'Перевизначити admin.width для полів бічної панелі, щоб вони завжди займали весь рядок.'
|
|
100
|
+
},
|
|
101
|
+
viewport: {
|
|
102
|
+
tabLabel: 'Область перегляду',
|
|
103
|
+
tabDescription: 'Ширина в пікселях для режимів попереднього перегляду «Планшет» і «Смартфон».',
|
|
104
|
+
tabletWidth: 'Планшет (px)',
|
|
105
|
+
mobileWidth: 'Смартфон (px)'
|
|
106
|
+
},
|
|
107
|
+
outline: {
|
|
108
|
+
tabLabel: 'Контур',
|
|
109
|
+
tabDescription: 'Контур + відтінок, що показується на наведеному або вибраному блоці.',
|
|
110
|
+
topLevelColor: 'Колір верхнього рівня',
|
|
111
|
+
topLevelColorDesc: 'Шістнадцятковий колір (напр. `#3b82f6`).',
|
|
112
|
+
nestedColor: 'Колір вкладених блоків',
|
|
113
|
+
nestedColorDesc: 'Шістнадцятковий колір для блоків, вкладених в інший блок.',
|
|
114
|
+
outlineWidth: 'Товщина контуру (px)',
|
|
115
|
+
outlineWidthDesc: 'Товщина контуру в пікселях (1–5).'
|
|
116
|
+
},
|
|
117
|
+
toolbar: {
|
|
118
|
+
tabLabel: 'Панель інструментів',
|
|
119
|
+
tabDescription: 'Плаваюча панель «Перемістити / Дублювати / Видалити», що з’являється на вибраному блоці.',
|
|
120
|
+
enabled: 'Увімкнено',
|
|
121
|
+
anchorCorner: 'Кут прив’язки',
|
|
122
|
+
topRight: 'Праворуч угорі',
|
|
123
|
+
topLeft: 'Ліворуч угорі',
|
|
124
|
+
bottomRight: 'Праворуч унизу',
|
|
125
|
+
bottomLeft: 'Ліворуч унизу'
|
|
126
|
+
},
|
|
127
|
+
validation: {
|
|
128
|
+
colorRequired: 'Колір обов’язковий',
|
|
129
|
+
colorInvalid: 'Має бути шістнадцятковий колір (напр. #3b82f6) або rgb()/rgba()',
|
|
130
|
+
mustBeNumber: 'Має бути числом',
|
|
131
|
+
outlineRange: 'Має бути від 1 до 5'
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
//# sourceMappingURL=uk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/i18n/uk.ts"],"sourcesContent":["// Machine-translated (not reviewed by a native speaker) — may contain errors.\nimport type { BetterEditorTranslations } from './types'\n\nexport const uk: BetterEditorTranslations = {\n toggle: {\n open: 'Відкрити Better Editor',\n close: 'Закрити Better Editor',\n },\n overlay: {\n dialogLabel: 'Better Editor',\n resizeSidebar: 'Змінити розмір бічної панелі (використовуйте стрілки ← / →)',\n },\n toolbar: {\n undo: 'Скасувати',\n undoTitle: 'Скасувати (Cmd/Ctrl+Z)',\n redo: 'Повторити',\n redoTitle: 'Повторити (Cmd/Ctrl+Shift+Z)',\n enterFullscreen: 'Увімкнути повноекранний режим',\n exitFullscreen: 'Вийти з повноекранного режиму',\n switchToEdit: 'Перейти в режим редагування',\n switchToInteract: 'Перейти в режим взаємодії (форми, акордеони, посилання)',\n switchToInteractShort: 'Перейти в режим взаємодії',\n showSidebar: 'Показати бічну панель',\n hideSidebar: 'Приховати бічну панель',\n },\n viewport: {\n groupLabel: 'Область попереднього перегляду',\n desktop: 'Комп’ютер',\n tablet: 'Планшет',\n mobile: 'Смартфон',\n responsive: 'Адаптивний (перетягніть, щоб змінити розмір)',\n },\n sidebar: {\n tabs: {\n page: 'Сторінка',\n block: 'Блоки',\n settings: 'Налаштування',\n },\n blockSelected: 'Вибрано блок: ',\n noBlockSelected: 'Блок не вибрано',\n validationLabel: 'Помилки перевірки',\n validationSingular: '1 поле потребує уваги',\n validationPlural: ' полів потребує уваги',\n },\n blocks: {\n kicker: 'Блок',\n emptyPrompt: 'Виберіть блок у попередньому перегляді, щоб редагувати його налаштування.',\n addBlock: 'Додати блок',\n blockName: 'Назва блоку',\n blockNamePlaceholder: 'Необов’язкова мітка для цього блоку',\n schemaError: 'Не вдалося визначити схему блоку для цього шляху.',\n drawerSingular: 'Блок',\n drawerPlural: 'Блоки',\n deselect: 'Скасувати вибір',\n actions: {\n toolbar: 'Дії з блоком',\n moveUp: 'Перемістити вгору',\n moveUpLabel: 'Перемістити блок вгору',\n moveDown: 'Перемістити вниз',\n moveDownLabel: 'Перемістити блок вниз',\n duplicate: 'Дублювати',\n duplicateLabel: 'Дублювати блок',\n addBelow: 'Додати блок нижче',\n addBelowLabel: 'Додати блок нижче',\n delete: 'Видалити',\n deleteLabel: 'Видалити блок',\n },\n },\n documentFields: {\n noFields: 'Полів рівня документа не знайдено.',\n noSettings: 'Немає налаштувань документа.',\n },\n preview: {\n title: 'Попередній перегляд Better Editor',\n loading: 'Завантаження попереднього перегляду',\n resizeLeft: 'Змінити розмір попереднього перегляду зліва',\n resizeRight: 'Змінити розмір попереднього перегляду справа',\n },\n error: {\n heading: 'Better Editor аварійно завершив роботу',\n unknown: 'Невідома помилка.',\n tryAgain: 'Спробувати ще раз',\n closeEditor: 'Закрити редактор',\n },\n banner: {\n builtBy: 'Якщо цей плагін вам корисний, будь ласка, поставте зірку ⭐',\n star: 'Star',\n github: 'GitHub',\n reportBug: 'Повідомити про помилку',\n },\n settings: {\n globalLabel: 'Налаштування',\n globalDescription: 'Загальні налаштування накладки Better Editor.',\n sidebar: {\n tabLabel: 'Бічна панель',\n tabDescription: 'Де розташована бічна панель і як складаються її поля.',\n position: 'Розташування',\n positionRight: 'Праворуч',\n positionLeft: 'Ліворуч',\n forceFullWidth: 'Складати поля на всю ширину',\n forceFullWidthDesc:\n 'Перевизначити admin.width для полів бічної панелі, щоб вони завжди займали весь рядок.',\n },\n viewport: {\n tabLabel: 'Область перегляду',\n tabDescription: 'Ширина в пікселях для режимів попереднього перегляду «Планшет» і «Смартфон».',\n tabletWidth: 'Планшет (px)',\n mobileWidth: 'Смартфон (px)',\n },\n outline: {\n tabLabel: 'Контур',\n tabDescription: 'Контур + відтінок, що показується на наведеному або вибраному блоці.',\n topLevelColor: 'Колір верхнього рівня',\n topLevelColorDesc: 'Шістнадцятковий колір (напр. `#3b82f6`).',\n nestedColor: 'Колір вкладених блоків',\n nestedColorDesc: 'Шістнадцятковий колір для блоків, вкладених в інший блок.',\n outlineWidth: 'Товщина контуру (px)',\n outlineWidthDesc: 'Товщина контуру в пікселях (1–5).',\n },\n toolbar: {\n tabLabel: 'Панель інструментів',\n tabDescription:\n 'Плаваюча панель «Перемістити / Дублювати / Видалити», що з’являється на вибраному блоці.',\n enabled: 'Увімкнено',\n anchorCorner: 'Кут прив’язки',\n topRight: 'Праворуч угорі',\n topLeft: 'Ліворуч угорі',\n bottomRight: 'Праворуч унизу',\n bottomLeft: 'Ліворуч унизу',\n },\n validation: {\n colorRequired: 'Колір обов’язковий',\n colorInvalid: 'Має бути шістнадцятковий колір (напр. #3b82f6) або rgb()/rgba()',\n mustBeNumber: 'Має бути числом',\n outlineRange: 'Має бути від 1 до 5',\n },\n },\n}\n"],"names":["uk","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,10 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useTranslation } from '@payloadcms/ui';
|
|
3
|
+
import { en } from './en';
|
|
4
|
+
export const useBetterEditorT = ()=>{
|
|
5
|
+
const { i18n } = useTranslation();
|
|
6
|
+
const custom = i18n.translations?.betterEditor;
|
|
7
|
+
return custom ?? en;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=useBetterEditorT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/i18n/useBetterEditorT.ts"],"sourcesContent":["'use client'\n\nimport { useTranslation } from '@payloadcms/ui'\nimport type { BetterEditorTranslations } from './types'\nimport { en } from './en'\n\nexport const useBetterEditorT = (): BetterEditorTranslations => {\n const { i18n } = useTranslation()\n const custom = (i18n.translations as Record<string, unknown>)?.betterEditor\n return (custom as BetterEditorTranslations | undefined) ?? en\n}\n"],"names":["useTranslation","en","useBetterEditorT","i18n","custom","translations","betterEditor"],"mappings":"AAAA;AAEA,SAASA,cAAc,QAAQ,iBAAgB;AAE/C,SAASC,EAAE,QAAQ,OAAM;AAEzB,OAAO,MAAMC,mBAAmB;IAC9B,MAAM,EAAEC,IAAI,EAAE,GAAGH;IACjB,MAAMI,SAAUD,KAAKE,YAAY,EAA8BC;IAC/D,OAAO,AAACF,UAAmDH;AAC7D,EAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,8 @@ import type { BetterEditorConfig } from './types';
|
|
|
3
3
|
export type { BetterEditorConfig };
|
|
4
4
|
export type { BetterEditorSettings, HoverToolbarPosition } from './state/useBetterEditorSettings';
|
|
5
5
|
export type { SidebarPosition } from './internal/constants';
|
|
6
|
-
export {
|
|
6
|
+
export type { BetterEditorTranslations } from './i18n/types';
|
|
7
|
+
export { BETTER_EDITOR_SETTINGS_SLUG, betterEditorSettingsGlobal } from './global';
|
|
7
8
|
/** Plugin signature — handy for typing plugin lists in consumer code. */
|
|
8
9
|
export type BetterEditorPlugin = (config: Config) => Config;
|
|
9
10
|
export { VERSION } from './version';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { BETTER_EDITOR_SETTINGS_BANNER_FIELD, betterEditorSettingsGlobal } from './global';
|
|
2
2
|
import { normalizeEntities } from './internal/entities';
|
|
3
|
-
|
|
3
|
+
import { translations as builtinTranslations } from './i18n';
|
|
4
|
+
import { mergeTranslations } from './i18n/merge';
|
|
5
|
+
export { BETTER_EDITOR_SETTINGS_SLUG, betterEditorSettingsGlobal } from './global';
|
|
4
6
|
export { VERSION } from './version';
|
|
5
7
|
const DEFAULT_BLOCKS_FIELD = 'layout';
|
|
6
8
|
const TOGGLE_COMPONENT_PATH = 'payload-better-editor/client#LiveEditorToggle';
|
|
@@ -79,7 +81,8 @@ const warnMissingBlocksField = (kind, slug, blocksField)=>{
|
|
|
79
81
|
const toggleClientProps = (blocksField)=>({
|
|
80
82
|
blocksField,
|
|
81
83
|
adminPortalSelector: pluginOptions?.adminPortalSelector,
|
|
82
|
-
storageNamespace: pluginOptions?.storageNamespace
|
|
84
|
+
storageNamespace: pluginOptions?.storageNamespace,
|
|
85
|
+
hideToggleLabel: pluginOptions?.hideToggleLabel
|
|
83
86
|
});
|
|
84
87
|
const showBanner = pluginOptions?.showSettingsBanner !== false;
|
|
85
88
|
const settingsGlobal = showBanner ? betterEditorSettingsGlobal : {
|
|
@@ -92,6 +95,20 @@ const warnMissingBlocksField = (kind, slug, blocksField)=>{
|
|
|
92
95
|
...existingGlobals,
|
|
93
96
|
settingsGlobal
|
|
94
97
|
];
|
|
98
|
+
const existingTranslations = config.i18n?.translations ?? {};
|
|
99
|
+
config.i18n = {
|
|
100
|
+
...config.i18n,
|
|
101
|
+
translations: {
|
|
102
|
+
...existingTranslations,
|
|
103
|
+
...Object.fromEntries(Object.entries(builtinTranslations).map(([locale, builtin])=>[
|
|
104
|
+
locale,
|
|
105
|
+
{
|
|
106
|
+
...existingTranslations[locale] ?? {},
|
|
107
|
+
betterEditor: mergeTranslations(builtin, existingTranslations[locale])
|
|
108
|
+
}
|
|
109
|
+
]))
|
|
110
|
+
}
|
|
111
|
+
};
|
|
95
112
|
if (collectionMap.size === 0 && globalMap.size === 0) {
|
|
96
113
|
if (isDev) {
|
|
97
114
|
console.warn('[better-editor] plugin loaded with empty `collections` and `globals` — toggle button will not appear anywhere. Pass `collections: ["pages"]` (or similar) to BetterEditorConfig.');
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { CollectionConfig, Config, Field, GlobalConfig } from 'payload'\nimport type { BetterEditorConfig } from './types'\nimport { BETTER_EDITOR_SETTINGS_BANNER_FIELD, betterEditorSettingsGlobal } from './global'\nimport { normalizeEntities } from './internal/entities'\n\nexport type { BetterEditorConfig }\nexport type { BetterEditorSettings, HoverToolbarPosition } from './state/useBetterEditorSettings'\nexport type { SidebarPosition } from './internal/constants'\nexport { BETTER_EDITOR_SETTINGS_SLUG } from './global'\n\n/** Plugin signature — handy for typing plugin lists in consumer code. */\nexport type BetterEditorPlugin = (config: Config) => Config\n\nexport { VERSION } from './version'\n\nconst DEFAULT_BLOCKS_FIELD = 'layout'\nconst TOGGLE_COMPONENT_PATH = 'payload-better-editor/client#LiveEditorToggle'\nconst isDev = process.env.NODE_ENV !== 'production'\n\n/**\n * Checks whether a field with the given `name` exists at the document's\n * top-level data path. Recurses into presentational containers that do\n * not introduce a path segment (`tabs` without a name, `row`, `collapsible`)\n * but stops at `group` and named tabs, since those namespace their children.\n */\nconst hasBlocksField = (fields: Field[] | undefined, name: string): boolean => {\n if (!Array.isArray(fields)) return false\n return fields.some((field) => {\n if ('name' in field && field.name === name) return true\n if (field.type === 'row' || field.type === 'collapsible') {\n return hasBlocksField(field.fields, name)\n }\n if (field.type === 'tabs') {\n return field.tabs.some((tab) =>\n 'name' in tab && tab.name ? false : hasBlocksField(tab.fields, name),\n )\n }\n return false\n })\n}\n\ntype ToggleSlot = 'edit' | 'elements'\n\ntype ToggleClientProps = {\n blocksField: string\n adminPortalSelector?: string\n storageNamespace?: string\n}\n\nconst withToggleInjected = <T extends CollectionConfig | GlobalConfig>(\n entity: T,\n slot: ToggleSlot,\n clientProps: ToggleClientProps,\n): T => {\n const admin = { ...(entity.admin ?? {}) } as NonNullable<T['admin']>\n const components = { ...(admin.components ?? {}) } as Record<string, unknown>\n const target = { ...((components[slot] as Record<string, unknown>) ?? {}) }\n const before = (target.beforeDocumentControls as unknown[]) ?? []\n return {\n ...entity,\n admin: {\n ...admin,\n components: {\n ...components,\n [slot]: {\n ...target,\n beforeDocumentControls: [\n ...before,\n { path: TOGGLE_COMPONENT_PATH, clientProps },\n ],\n },\n },\n },\n }\n}\n\nconst warnMissingBlocksField = (kind: 'collection' | 'global', slug: string, blocksField: string) => {\n\n console.warn(\n `[better-editor] ${kind} \"${slug}\" has no top-level field named \"${blocksField}\" — the sidebar Blocks tab will be empty. Set \\`blocksField\\` to the actual blocks field name.`,\n )\n}\n\n/**\n * Payload CMS plugin factory for the Better Editor overlay. Adds an\n * \"Open Better Editor\" toggle to the configured collections / globals\n * and registers a `BetterEditorSettings` global with editor-wide options.\n *\n * @example\n * import { betterEditor } from 'payload-better-editor'\n *\n * export default buildConfig({\n * plugins: [betterEditor({ collections: ['pages'] })],\n * // ...\n * })\n *\n * @see {@link BetterEditorConfig} for all options.\n */\nexport const betterEditor =\n (pluginOptions?: BetterEditorConfig): BetterEditorPlugin =>\n (config: Config): Config => {\n if (pluginOptions?.disabled) return config\n\n const defaultBlocksField = pluginOptions?.blocksField || DEFAULT_BLOCKS_FIELD\n const collectionMap = normalizeEntities(pluginOptions?.collections, defaultBlocksField)\n const globalMap = normalizeEntities(pluginOptions?.globals, defaultBlocksField)\n const toggleClientProps = (blocksField: string): ToggleClientProps => ({\n blocksField,\n adminPortalSelector: pluginOptions?.adminPortalSelector,\n storageNamespace: pluginOptions?.storageNamespace,\n })\n\n const showBanner = pluginOptions?.showSettingsBanner !== false\n const settingsGlobal: GlobalConfig = showBanner\n ? betterEditorSettingsGlobal\n : {\n ...betterEditorSettingsGlobal,\n fields: betterEditorSettingsGlobal.fields.filter(\n (f) => !('name' in f && f.name === BETTER_EDITOR_SETTINGS_BANNER_FIELD),\n ),\n }\n\n const existingGlobals = config.globals ?? []\n const hasSettingsGlobal = existingGlobals.some((g) => g.slug === settingsGlobal.slug)\n config.globals = hasSettingsGlobal\n ? existingGlobals\n : [...existingGlobals, settingsGlobal]\n\n if (collectionMap.size === 0 && globalMap.size === 0) {\n if (isDev) {\n\n console.warn(\n '[better-editor] plugin loaded with empty `collections` and `globals` — toggle button will not appear anywhere. Pass `collections: [\"pages\"]` (or similar) to BetterEditorConfig.',\n )\n }\n return config\n }\n\n if (collectionMap.size > 0 && config.collections) {\n config.collections = config.collections.map((collection) => {\n const blocksField = collectionMap.get(collection.slug)\n if (blocksField === undefined) return collection\n if (isDev && !hasBlocksField(collection.fields, blocksField)) {\n warnMissingBlocksField('collection', collection.slug, blocksField)\n }\n return withToggleInjected(collection, 'edit', toggleClientProps(blocksField))\n })\n }\n\n if (globalMap.size > 0) {\n config.globals = (config.globals ?? []).map((global) => {\n const blocksField = globalMap.get(global.slug)\n if (blocksField === undefined) return global\n if (isDev && !hasBlocksField(global.fields, blocksField)) {\n warnMissingBlocksField('global', global.slug, blocksField)\n }\n return withToggleInjected(global, 'elements', toggleClientProps(blocksField))\n })\n }\n\n return config\n }\n"],"names":["BETTER_EDITOR_SETTINGS_BANNER_FIELD","betterEditorSettingsGlobal","normalizeEntities","BETTER_EDITOR_SETTINGS_SLUG","VERSION","DEFAULT_BLOCKS_FIELD","TOGGLE_COMPONENT_PATH","isDev","process","env","NODE_ENV","hasBlocksField","fields","name","Array","isArray","some","field","type","tabs","tab","withToggleInjected","entity","slot","clientProps","admin","components","target","before","beforeDocumentControls","path","warnMissingBlocksField","kind","slug","blocksField","console","warn","betterEditor","pluginOptions","config","disabled","defaultBlocksField","collectionMap","collections","globalMap","globals","toggleClientProps","adminPortalSelector","storageNamespace","showBanner","showSettingsBanner","settingsGlobal","filter","f","existingGlobals","hasSettingsGlobal","g","size","map","collection","get","undefined","global"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { CollectionConfig, Config, Field, GlobalConfig } from 'payload'\nimport type { BetterEditorConfig } from './types'\nimport { BETTER_EDITOR_SETTINGS_BANNER_FIELD, betterEditorSettingsGlobal } from './global'\nimport { normalizeEntities } from './internal/entities'\nimport { translations as builtinTranslations } from './i18n'\nimport { mergeTranslations } from './i18n/merge'\n\nexport type { BetterEditorConfig }\nexport type { BetterEditorSettings, HoverToolbarPosition } from './state/useBetterEditorSettings'\nexport type { SidebarPosition } from './internal/constants'\nexport type { BetterEditorTranslations } from './i18n/types'\nexport { BETTER_EDITOR_SETTINGS_SLUG, betterEditorSettingsGlobal } from './global'\n\n/** Plugin signature — handy for typing plugin lists in consumer code. */\nexport type BetterEditorPlugin = (config: Config) => Config\n\nexport { VERSION } from './version'\n\nconst DEFAULT_BLOCKS_FIELD = 'layout'\nconst TOGGLE_COMPONENT_PATH = 'payload-better-editor/client#LiveEditorToggle'\nconst isDev = process.env.NODE_ENV !== 'production'\n\n/**\n * Checks whether a field with the given `name` exists at the document's\n * top-level data path. Recurses into presentational containers that do\n * not introduce a path segment (`tabs` without a name, `row`, `collapsible`)\n * but stops at `group` and named tabs, since those namespace their children.\n */\nconst hasBlocksField = (fields: Field[] | undefined, name: string): boolean => {\n if (!Array.isArray(fields)) return false\n return fields.some((field) => {\n if ('name' in field && field.name === name) return true\n if (field.type === 'row' || field.type === 'collapsible') {\n return hasBlocksField(field.fields, name)\n }\n if (field.type === 'tabs') {\n return field.tabs.some((tab) =>\n 'name' in tab && tab.name ? false : hasBlocksField(tab.fields, name),\n )\n }\n return false\n })\n}\n\ntype ToggleSlot = 'edit' | 'elements'\n\ntype ToggleClientProps = {\n blocksField: string\n adminPortalSelector?: string\n storageNamespace?: string\n hideToggleLabel?: boolean\n}\n\nconst withToggleInjected = <T extends CollectionConfig | GlobalConfig>(\n entity: T,\n slot: ToggleSlot,\n clientProps: ToggleClientProps,\n): T => {\n const admin = { ...(entity.admin ?? {}) } as NonNullable<T['admin']>\n const components = { ...(admin.components ?? {}) } as Record<string, unknown>\n const target = { ...((components[slot] as Record<string, unknown>) ?? {}) }\n const before = (target.beforeDocumentControls as unknown[]) ?? []\n return {\n ...entity,\n admin: {\n ...admin,\n components: {\n ...components,\n [slot]: {\n ...target,\n beforeDocumentControls: [\n ...before,\n { path: TOGGLE_COMPONENT_PATH, clientProps },\n ],\n },\n },\n },\n }\n}\n\nconst warnMissingBlocksField = (kind: 'collection' | 'global', slug: string, blocksField: string) => {\n\n console.warn(\n `[better-editor] ${kind} \"${slug}\" has no top-level field named \"${blocksField}\" — the sidebar Blocks tab will be empty. Set \\`blocksField\\` to the actual blocks field name.`,\n )\n}\n\n/**\n * Payload CMS plugin factory for the Better Editor overlay. Adds an\n * \"Open Better Editor\" toggle to the configured collections / globals\n * and registers a `BetterEditorSettings` global with editor-wide options.\n *\n * @example\n * import { betterEditor } from 'payload-better-editor'\n *\n * export default buildConfig({\n * plugins: [betterEditor({ collections: ['pages'] })],\n * // ...\n * })\n *\n * @see {@link BetterEditorConfig} for all options.\n */\nexport const betterEditor =\n (pluginOptions?: BetterEditorConfig): BetterEditorPlugin =>\n (config: Config): Config => {\n if (pluginOptions?.disabled) return config\n\n const defaultBlocksField = pluginOptions?.blocksField || DEFAULT_BLOCKS_FIELD\n const collectionMap = normalizeEntities(pluginOptions?.collections, defaultBlocksField)\n const globalMap = normalizeEntities(pluginOptions?.globals, defaultBlocksField)\n const toggleClientProps = (blocksField: string): ToggleClientProps => ({\n blocksField,\n adminPortalSelector: pluginOptions?.adminPortalSelector,\n storageNamespace: pluginOptions?.storageNamespace,\n hideToggleLabel: pluginOptions?.hideToggleLabel,\n })\n\n const showBanner = pluginOptions?.showSettingsBanner !== false\n const settingsGlobal: GlobalConfig = showBanner\n ? betterEditorSettingsGlobal\n : {\n ...betterEditorSettingsGlobal,\n fields: betterEditorSettingsGlobal.fields.filter(\n (f) => !('name' in f && f.name === BETTER_EDITOR_SETTINGS_BANNER_FIELD),\n ),\n }\n\n const existingGlobals = config.globals ?? []\n const hasSettingsGlobal = existingGlobals.some((g) => g.slug === settingsGlobal.slug)\n config.globals = hasSettingsGlobal\n ? existingGlobals\n : [...existingGlobals, settingsGlobal]\n\n const existingTranslations = (config.i18n?.translations ?? {}) as Record<\n string,\n Record<string, unknown> | undefined\n >\n config.i18n = {\n ...config.i18n,\n translations: {\n ...existingTranslations,\n ...Object.fromEntries(\n Object.entries(builtinTranslations).map(([locale, builtin]) => [\n locale,\n {\n ...(existingTranslations[locale] ?? {}),\n betterEditor: mergeTranslations(builtin, existingTranslations[locale]),\n },\n ]),\n ),\n },\n }\n\n if (collectionMap.size === 0 && globalMap.size === 0) {\n if (isDev) {\n\n console.warn(\n '[better-editor] plugin loaded with empty `collections` and `globals` — toggle button will not appear anywhere. Pass `collections: [\"pages\"]` (or similar) to BetterEditorConfig.',\n )\n }\n return config\n }\n\n if (collectionMap.size > 0 && config.collections) {\n config.collections = config.collections.map((collection) => {\n const blocksField = collectionMap.get(collection.slug)\n if (blocksField === undefined) return collection\n if (isDev && !hasBlocksField(collection.fields, blocksField)) {\n warnMissingBlocksField('collection', collection.slug, blocksField)\n }\n return withToggleInjected(collection, 'edit', toggleClientProps(blocksField))\n })\n }\n\n if (globalMap.size > 0) {\n config.globals = (config.globals ?? []).map((global) => {\n const blocksField = globalMap.get(global.slug)\n if (blocksField === undefined) return global\n if (isDev && !hasBlocksField(global.fields, blocksField)) {\n warnMissingBlocksField('global', global.slug, blocksField)\n }\n return withToggleInjected(global, 'elements', toggleClientProps(blocksField))\n })\n }\n\n return config\n }\n"],"names":["BETTER_EDITOR_SETTINGS_BANNER_FIELD","betterEditorSettingsGlobal","normalizeEntities","translations","builtinTranslations","mergeTranslations","BETTER_EDITOR_SETTINGS_SLUG","VERSION","DEFAULT_BLOCKS_FIELD","TOGGLE_COMPONENT_PATH","isDev","process","env","NODE_ENV","hasBlocksField","fields","name","Array","isArray","some","field","type","tabs","tab","withToggleInjected","entity","slot","clientProps","admin","components","target","before","beforeDocumentControls","path","warnMissingBlocksField","kind","slug","blocksField","console","warn","betterEditor","pluginOptions","config","disabled","defaultBlocksField","collectionMap","collections","globalMap","globals","toggleClientProps","adminPortalSelector","storageNamespace","hideToggleLabel","showBanner","showSettingsBanner","settingsGlobal","filter","f","existingGlobals","hasSettingsGlobal","g","existingTranslations","i18n","Object","fromEntries","entries","map","locale","builtin","size","collection","get","undefined","global"],"mappings":"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"}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { BlockActionMessage } from './protocol';
|
|
3
3
|
type Action = BlockActionMessage['action'];
|
|
4
|
+
export type HoverToolbarLabels = {
|
|
5
|
+
moveUp: string;
|
|
6
|
+
moveDown: string;
|
|
7
|
+
duplicate: string;
|
|
8
|
+
addBelow: string;
|
|
9
|
+
delete: string;
|
|
10
|
+
};
|
|
4
11
|
export type HoverToolbarProps = {
|
|
5
12
|
onAction: (action: Action) => void;
|
|
13
|
+
labels: HoverToolbarLabels;
|
|
6
14
|
};
|
|
7
15
|
export declare const HoverToolbar: React.FC<HoverToolbarProps>;
|
|
8
16
|
export {};
|