@widgetic/editor 4.0.10 → 4.1.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 (84) hide show
  1. package/README.md +242 -0
  2. package/dist/components/WidgetPreview.svelte +123 -86
  3. package/dist/components/WidgetPreview.svelte.d.ts +8 -0
  4. package/dist/components/color-select/ColorSelect.svelte +4 -4
  5. package/dist/components/editors/CompositionEditorApp.svelte +562 -0
  6. package/dist/components/editors/CompositionEditorApp.svelte.d.ts +95 -0
  7. package/dist/components/editors/EmbedEditor.svelte +33 -22
  8. package/dist/components/editors/EmbedEditor.svelte.d.ts +1 -1
  9. package/dist/components/editors/PropsEditor.svelte +267 -850
  10. package/dist/components/editors/PropsEditor.svelte.d.ts +10 -3
  11. package/dist/components/ic/AngleInputController.svelte +1 -1
  12. package/dist/components/ic/BrowserInputController.svelte +58 -31
  13. package/dist/components/ic/ColorPickerInputController.svelte +55 -21
  14. package/dist/components/ic/DateFieldInputController.svelte +34 -14
  15. package/dist/components/ic/DatePickerInputController.svelte +37 -21
  16. package/dist/components/ic/DropdownInputController.svelte +21 -9
  17. package/dist/components/ic/DropdownInputController.svelte.d.ts +1 -1
  18. package/dist/components/ic/FixedPositionInputController.svelte +12 -6
  19. package/dist/components/ic/FontInputController.svelte +100 -76
  20. package/dist/components/ic/InputControllerHeader.svelte +16 -9
  21. package/dist/components/ic/NumberControls.svelte +4 -4
  22. package/dist/components/ic/NumberInputController.svelte +6 -4
  23. package/dist/components/ic/PositionInputController.svelte +23 -15
  24. package/dist/components/ic/RangeCalendarInputController.svelte +36 -20
  25. package/dist/components/ic/RoundedCornersInputController.svelte +39 -26
  26. package/dist/components/ic/SliderInputController.svelte +7 -2
  27. package/dist/components/ic/SwitchInputController.svelte +12 -3
  28. package/dist/components/ic/TagsInputController.svelte +19 -4
  29. package/dist/components/ic/TextAreaInputController.svelte +79 -51
  30. package/dist/components/ic/TextAreaPreviewInputController.svelte +27 -72
  31. package/dist/components/ic/TextInputController.svelte +17 -1
  32. package/dist/components/ic/TimeInputController.svelte +11 -4
  33. package/dist/components/ic/VectorInputController.svelte +101 -70
  34. package/dist/components/ic/shared/ItemGrid.svelte +12 -4
  35. package/dist/components/ic/shared/RecentItemsSection.svelte +16 -11
  36. package/dist/components/ic/shared/RecentItemsSection.svelte.d.ts +1 -1
  37. package/dist/composition/compositionApi.d.ts +95 -0
  38. package/dist/composition/compositionApi.js +289 -0
  39. package/dist/composition/compositionEditorController.d.ts +263 -0
  40. package/dist/composition/compositionEditorController.js +746 -0
  41. package/dist/composition/compositionHelpers.d.ts +74 -0
  42. package/dist/composition/compositionHelpers.js +405 -0
  43. package/dist/i18n/index.d.ts +4 -0
  44. package/dist/i18n/index.js +4 -0
  45. package/dist/i18n/labels.d.ts +15 -0
  46. package/dist/i18n/labels.js +57 -0
  47. package/dist/i18n/language.d.ts +228 -0
  48. package/dist/i18n/language.js +34 -0
  49. package/dist/i18n/languageKit.d.ts +54 -0
  50. package/dist/i18n/languageKit.js +102 -0
  51. package/dist/i18n/messages.d.ts +241 -0
  52. package/dist/i18n/messages.js +253 -0
  53. package/dist/i18n/translate.d.ts +6 -0
  54. package/dist/i18n/translate.js +8 -0
  55. package/dist/index.d.ts +4 -0
  56. package/dist/index.js +8 -0
  57. package/dist/mediaLibraryContext.d.ts +10 -0
  58. package/dist/mediaLibraryContext.js +30 -0
  59. package/dist/utils/FontManager.d.ts +21 -5
  60. package/dist/utils/FontManager.js +62 -67
  61. package/dist/utils/VectorManager.d.ts +0 -1
  62. package/dist/utils/VectorManager.js +10 -12
  63. package/dist/utils/dockPlacement.d.ts +12 -0
  64. package/dist/utils/dockPlacement.js +13 -0
  65. package/dist/utils/editorStorage.d.ts +23 -0
  66. package/dist/utils/editorStorage.js +95 -0
  67. package/dist/utils/fieldDirection.d.ts +13 -0
  68. package/dist/utils/fieldDirection.js +25 -0
  69. package/dist/utils/fontUtils.js +5 -3
  70. package/dist/utils/htmlSafety.d.ts +21 -0
  71. package/dist/utils/htmlSafety.js +38 -0
  72. package/dist/utils/itemReorder.d.ts +90 -0
  73. package/dist/utils/itemReorder.js +354 -0
  74. package/dist/utils/recentColors.js +4 -2
  75. package/dist/utils/richTextPreview.d.ts +38 -0
  76. package/dist/utils/richTextPreview.js +207 -0
  77. package/dist/utils/scrollActivity.d.ts +14 -0
  78. package/dist/utils/scrollActivity.js +63 -0
  79. package/dist/utils/shadowDom.d.ts +67 -0
  80. package/dist/utils/shadowDom.js +211 -0
  81. package/dist/utils/vectorUtils.js +5 -3
  82. package/dist/utils/visibilityCondition.d.ts +40 -0
  83. package/dist/utils/visibilityCondition.js +535 -0
  84. package/package.json +7 -6
@@ -13,12 +13,14 @@ import { onMount } from 'svelte';
13
13
  import { toast, CopyableHeader } from '@widgetic/design-system/components';
14
14
  import OK from '../icons/ok.svelte';
15
15
  import PropsEditor from './PropsEditor.svelte';
16
+ import { useEditorLanguage } from '../../i18n/language';
16
17
 
17
18
  /** Component configuration — existing public props and methods are preserved. */
18
19
  let className = '';
19
20
  export { className as class };
20
21
  export let style = '';
21
- export let embedHeaderText = 'Embed code';
22
+ /** The title of the code box. Without one, the editor's own word in the language of the page. */
23
+ export let embedHeaderText: string | undefined = undefined;
22
24
  export let embedCode = '';
23
25
  export let height = 720;
24
26
  export let embedSchema: any;
@@ -33,6 +35,9 @@ export let saveDirty = false;
33
35
  /** True while a save request is in flight. */
34
36
  export let saveSaving = false;
35
37
 
38
+ // The words of the editor in the language of the page: the editor above this one chose it (see `provideEditorLanguage`).
39
+ const { t } = useEditorLanguage();
40
+
36
41
  // Loading is currently local initialization; preserve the loading/error presentation.
37
42
  let loading = true;
38
43
  let wrapperElement = null;
@@ -52,9 +57,11 @@ function showToast(type: 'success' | 'error', message: string, options = {}) {
52
57
  ...options,
53
58
  duration: 5000,
54
59
  unstyled: true,
60
+ // The toast puts itself in place with its own classes below (fixed, at the end of the line), so the corner that the
61
+ // toaster knows is only a name it needs.
55
62
  position: 'bottom-right',
56
63
  classes: {
57
- toast: 'embed-editor-toast flex items-center gap-3 fixed bottom-5 right-5',
64
+ toast: 'embed-editor-toast flex items-center gap-3 fixed bottom-5 end-5',
58
65
  title: 'embed-editor-toast-title',
59
66
  description: 'embed-editor-toast-description',
60
67
  closeButton: 'embed-editor-toast-close-button'
@@ -99,7 +106,7 @@ export function getPosition() {
99
106
  {showSaveButton}
100
107
  {saveDirty}
101
108
  {saveSaving}
102
- title="Edit Options"
109
+ title={$t('editor.embed.title')}
103
110
  dragHandleClass="text-forest-green"
104
111
  headerClass={!loading && embedCode ? 'bg-grey2' : ''}
105
112
  showSchemaError={false}
@@ -108,28 +115,32 @@ export function getPosition() {
108
115
  >
109
116
  {#snippet headerContent()}
110
117
  {#if loading}
111
- <div class="embed-editor-loading subtext text-grey5 flex items-center justify-center h-full">Loading...</div>
118
+ <div class="embed-editor-loading subtext text-grey5 flex items-center justify-center h-full">{$t('editor.embed.loading')}</div>
112
119
  {:else if !embedCode}
113
120
  <div class="embed-editor-error flex flex-col items-center justify-center h-full">
114
- <div class="embed-editor-error-title text-error text-lg font-medium">No embed code available</div>
115
- <div class="embed-editor-error-code text-grey5 subtext mt-1">Error code: EMBED_CODE_NOT_FOUND</div>
121
+ <div class="embed-editor-error-title text-error text-lg font-medium">{$t('editor.embed.noCode')}</div>
122
+ <div class="embed-editor-error-code text-grey5 subtext mt-1">{$t('editor.failure.errorCode', { code: 'EMBED_CODE_NOT_FOUND' })}</div>
116
123
  </div>
117
124
  {:else}
118
125
  <!-- The only additional panel: code display, help link and clipboard control. -->
119
- <section class="embed-editor-code-header header-hover-area relative shrink-0 bg-grey2" aria-label="Embed code header area">
126
+ <section class="embed-editor-code-header header-hover-area relative shrink-0 bg-grey2" aria-label={$t('editor.embed.headerArea')}>
120
127
  <CopyableHeader
121
- headerText={embedHeaderText}
128
+ headerText={embedHeaderText ?? $t('editor.embed.codeHeader')}
122
129
  content={embedCode}
123
- helpText="Read more about embedding"
130
+ helpText={$t('editor.embed.readMore')}
124
131
  helpUrl="/embed"
125
132
  showStandaloneCopyButton={true}
126
- standaloneCopyButtonText="Copy to clipboard"
133
+ standaloneCopyButtonText={$t('editor.embed.copy')}
134
+ copiedTitle={$t('editor.embed.copied')}
135
+ copiedDescription={$t('editor.embed.copiedDone')}
136
+ copyFailedTitle={$t('editor.embed.copyFailed')}
137
+ copyFailedDescription={$t('editor.embed.copyFailedHint')}
127
138
  showButtonText={false}
128
139
  buttonClass="bg-grey2 text-grey7 hover:bg-white rounded-small focus:outline-none focus-visible:outline-none focus:shadow-none focus-visible:shadow-none"
129
- style="border-top-left-radius: var(--radius-large); border-top-right-radius: var(--radius-large);"
140
+ style="border-start-start-radius: var(--radius-large); border-start-end-radius: var(--radius-large);"
130
141
  on:copy={() => {
131
- showToast('success', 'Copied to clipboard', {
132
- description: 'Paste it anywhere on your site.',
142
+ showToast('success', $t('editor.embed.copied'), {
143
+ description: $t('editor.embed.copiedHint'),
133
144
  icon: OK
134
145
  });
135
146
  }}
@@ -161,16 +172,16 @@ export function getPosition() {
161
172
  border-radius: var(--radius-medium) !important;
162
173
  }
163
174
  :global(.embed-editor-container .accordion-item[data-position="first"]) {
164
- border-top-left-radius: var(--radius-medium) !important;
165
- border-top-right-radius: var(--radius-medium) !important;
166
- border-bottom-left-radius: 0 !important;
167
- border-bottom-right-radius: 0 !important;
175
+ border-start-start-radius: var(--radius-medium) !important;
176
+ border-start-end-radius: var(--radius-medium) !important;
177
+ border-end-start-radius: 0 !important;
178
+ border-end-end-radius: 0 !important;
168
179
  }
169
180
  :global(.embed-editor-container .accordion-item[data-position="last"]) {
170
- border-top-left-radius: 0 !important;
171
- border-top-right-radius: 0 !important;
172
- border-bottom-left-radius: var(--radius-medium) !important;
173
- border-bottom-right-radius: var(--radius-medium) !important;
181
+ border-start-start-radius: 0 !important;
182
+ border-start-end-radius: 0 !important;
183
+ border-end-start-radius: var(--radius-medium) !important;
184
+ border-end-end-radius: var(--radius-medium) !important;
174
185
  margin-bottom: 0 !important;
175
186
  }
176
187
  :global(.embed-editor-container .accordion-trigger) {
@@ -224,7 +235,7 @@ export function getPosition() {
224
235
  :global(.embed-editor-toast) {
225
236
  position: fixed !important;
226
237
  bottom: 20px !important;
227
- right: 20px !important;
238
+ inset-inline-end: 20px !important;
228
239
  top: auto !important;
229
240
  display: flex !important;
230
241
  align-items: center !important;
@@ -14,7 +14,7 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
14
14
  declare const EmbedEditor: $$__sveltets_2_IsomorphicComponent<{
15
15
  /** Component configuration — existing public props and methods are preserved. */ class?: string;
16
16
  style?: string;
17
- embedHeaderText?: string;
17
+ /** The title of the code box. Without one, the editor's own word in the language of the page. */ embedHeaderText?: string | undefined;
18
18
  embedCode?: string;
19
19
  height?: number;
20
20
  embedSchema: any;