commspliant-html-editor 0.0.9 → 0.0.11
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/LICENSE +21 -0
- package/README.md +64 -12
- package/dist/commspliant-html-editor.css +1 -1
- package/dist/components/Editor.d.ts +1 -1
- package/dist/components/Editor.d.ts.map +1 -1
- package/dist/components/MultiPageVisualSurface.d.ts +15 -0
- package/dist/components/MultiPageVisualSurface.d.ts.map +1 -1
- package/dist/components/RulerVisualFrame.d.ts +41 -0
- package/dist/components/RulerVisualFrame.d.ts.map +1 -0
- package/dist/components/VisualSurface.d.ts +15 -0
- package/dist/components/VisualSurface.d.ts.map +1 -1
- package/dist/components/rulerDocumentHandlers.d.ts +14 -0
- package/dist/components/rulerDocumentHandlers.d.ts.map +1 -0
- package/dist/components/useMultiPageRulerMetrics.d.ts +10 -0
- package/dist/components/useMultiPageRulerMetrics.d.ts.map +1 -0
- package/dist/components/usePageRulerMetrics.d.ts +8 -0
- package/dist/components/usePageRulerMetrics.d.ts.map +1 -0
- package/dist/core/commandTypes.d.ts +43 -10
- package/dist/core/commandTypes.d.ts.map +1 -1
- package/dist/core/customActions.d.ts.map +1 -1
- package/dist/core/documentStyles.d.ts.map +1 -1
- package/dist/core/fontFamily.d.ts.map +1 -1
- package/dist/core/image.d.ts.map +1 -1
- package/dist/core/imageWebp.d.ts +6 -0
- package/dist/core/imageWebp.d.ts.map +1 -0
- package/dist/core/multiPage.d.ts +1 -0
- package/dist/core/multiPage.d.ts.map +1 -1
- package/dist/core/page.d.ts +6 -0
- package/dist/core/page.d.ts.map +1 -1
- package/dist/core/pageAtRule.d.ts.map +1 -1
- package/dist/core/pageBackgroundImage.d.ts +2 -0
- package/dist/core/pageBackgroundImage.d.ts.map +1 -1
- package/dist/core/pageBreak.d.ts +1 -0
- package/dist/core/pageBreak.d.ts.map +1 -1
- package/dist/core/pageCanvasLayout.d.ts +17 -1
- package/dist/core/pageCanvasLayout.d.ts.map +1 -1
- package/dist/core/pageGeometry.d.ts +18 -0
- package/dist/core/pageGeometry.d.ts.map +1 -0
- package/dist/core/pageProperties.d.ts +4 -1
- package/dist/core/pageProperties.d.ts.map +1 -1
- package/dist/core/pageZoom.d.ts +1 -0
- package/dist/core/pageZoom.d.ts.map +1 -1
- package/dist/core/paragraphBackgroundImage.d.ts +4 -0
- package/dist/core/paragraphBackgroundImage.d.ts.map +1 -0
- package/dist/core/paragraphIndent.d.ts +19 -0
- package/dist/core/paragraphIndent.d.ts.map +1 -0
- package/dist/core/printLayout.d.ts +3 -0
- package/dist/core/printLayout.d.ts.map +1 -0
- package/dist/core/rulerUnits.d.ts +35 -0
- package/dist/core/rulerUnits.d.ts.map +1 -0
- package/dist/core/sanitizeHtml.d.ts +5 -0
- package/dist/core/sanitizeHtml.d.ts.map +1 -0
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/es.d.ts.map +1 -1
- package/dist/i18n/types.d.ts +23 -2
- package/dist/i18n/types.d.ts.map +1 -1
- package/dist/icons/RulerIcon.d.ts +3 -0
- package/dist/icons/RulerIcon.d.ts.map +1 -0
- package/dist/icons/index.d.ts +1 -0
- package/dist/icons/index.d.ts.map +1 -1
- package/dist/index.cjs +40 -8
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9811 -7900
- package/dist/modules/contextMenu/ContextMenu.d.ts +2 -1
- package/dist/modules/contextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/modules/file/printHtml.d.ts.map +1 -1
- package/dist/modules/format/DeletePageConfirmDialog.d.ts +8 -0
- package/dist/modules/format/DeletePageConfirmDialog.d.ts.map +1 -0
- package/dist/modules/format/PagePropertiesDialog.d.ts +6 -2
- package/dist/modules/format/PagePropertiesDialog.d.ts.map +1 -1
- package/dist/modules/format/ParagraphPropertiesDialog.d.ts +11 -2
- package/dist/modules/format/ParagraphPropertiesDialog.d.ts.map +1 -1
- package/dist/modules/format/paragraphDialog.d.ts.map +1 -1
- package/dist/modules/history/catalog.d.ts.map +1 -1
- package/dist/modules/history/history.d.ts +2 -0
- package/dist/modules/history/history.d.ts.map +1 -1
- package/dist/modules/insert/catalog.d.ts.map +1 -1
- package/dist/modules/insert/commands.d.ts +2 -2
- package/dist/modules/insert/commands.d.ts.map +1 -1
- package/dist/modules/ruler/HorizontalRuler.d.ts +27 -0
- package/dist/modules/ruler/HorizontalRuler.d.ts.map +1 -0
- package/dist/modules/ruler/IndentArrowIcon.d.ts +14 -0
- package/dist/modules/ruler/IndentArrowIcon.d.ts.map +1 -0
- package/dist/modules/ruler/VerticalRuler.d.ts +20 -0
- package/dist/modules/ruler/VerticalRuler.d.ts.map +1 -0
- package/dist/modules/ruler/index.d.ts +5 -0
- package/dist/modules/ruler/index.d.ts.map +1 -0
- package/dist/modules/ruler/rulerTypes.d.ts +26 -0
- package/dist/modules/ruler/rulerTypes.d.ts.map +1 -0
- package/dist/modules/ruler/useRulerPointerDrag.d.ts +17 -0
- package/dist/modules/ruler/useRulerPointerDrag.d.ts.map +1 -0
- package/dist/modules/view/DocumentPreviewDialog.d.ts +1 -0
- package/dist/modules/view/DocumentPreviewDialog.d.ts.map +1 -1
- package/dist/modules/view/catalog.d.ts.map +1 -1
- package/dist/modules/view/commands.d.ts +2 -2
- package/dist/modules/view/commands.d.ts.map +1 -1
- package/dist/toolbar/commentsChrome.d.ts.map +1 -1
- package/dist/toolbar/defaultLayout.d.ts.map +1 -1
- package/dist/toolbar/multiPageChrome.d.ts +5 -0
- package/dist/toolbar/multiPageChrome.d.ts.map +1 -0
- package/dist/types.d.ts +29 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 CommsPliant Communication
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# commspliant-html-editor
|
|
2
2
|
|
|
3
|
+
> **Beta.** This component is in beta. APIs and behaviour may change.
|
|
4
|
+
|
|
3
5
|
**Try it out here:** [https://htmleditor.commspliant.com/](https://htmleditor.commspliant.com/)
|
|
4
6
|
|
|
5
7
|
[](https://htmleditor.commspliant.com/)
|
|
@@ -76,7 +78,8 @@ Give the editor a parent with a definite height (`height: 100%` on a sized ances
|
|
|
76
78
|
| `loadCustomParagraphStyles` | `() => CustomParagraphStyle[] \| Promise<…>` | — | Load host-persisted custom paragraph styles. See [Custom paragraph styles](#custom-paragraph-styles) |
|
|
77
79
|
| `onSaveCustomParagraphStyle` | `(style: CustomParagraphStyle) => void` | — | Persist a created or edited custom paragraph style. Custom styles stay hidden unless this and `loadCustomParagraphStyles` are both set |
|
|
78
80
|
| `onDeleteCustomParagraphStyle` | `(id: string) => void` | — | Persist deletion of a custom paragraph style. The Delete button is shown only when this is set |
|
|
79
|
-
| `
|
|
81
|
+
| `sanitizeHtml` | `boolean` | `true` | Strip `<script>` tags and `javascript:` URLs from document HTML on load and every write. See [HTML sanitization](#html-sanitization) |
|
|
82
|
+
| `transformHtml` | `(html: string) => string` | — | Optional map over document HTML after built-in sanitization. See [Transform HTML](#transform-html) |
|
|
80
83
|
| `customImagePicker` | `CustomImagePicker` | — | Optional third Insert image source. See [Custom image picker](#custom-image-picker) |
|
|
81
84
|
| `disableBuiltinImageInsert` | `boolean` | `false` | Skip the Insert image dialog and call `customImagePicker.onPick` from the toolbar or Insert menu |
|
|
82
85
|
| `customAudioPicker` | `CustomAudioPicker` | — | Optional third Insert audio source. See [Custom audio picker](#custom-audio-picker) |
|
|
@@ -84,10 +87,14 @@ Give the editor a parent with a definite height (`height: 100%` on a sized ances
|
|
|
84
87
|
| `customVideoPicker` | `CustomVideoPicker` | — | Optional third Insert YouTube video source. See [Custom video picker](#custom-video-picker) |
|
|
85
88
|
| `disableBuiltinVideoInsert` | `boolean` | `false` | Skip the Insert YouTube video dialog and call `customVideoPicker.onPick` from the Insert menu |
|
|
86
89
|
| `disableHtmlFileDrop` | `boolean` | `false` | When true, dropping an HTML file on the editor does not replace the document. File → Open is unchanged |
|
|
90
|
+
| `enablePageProperties` | `boolean` | `false` | When true, the Page properties dialog includes the Print tab. Font and Paragraph tabs are always available. See [Page properties](#page-properties) |
|
|
91
|
+
| `defaultPageProperties` | `DefaultPageProperties` | — | Optional partial page settings applied to uncontrolled initial content and each page inserted with Insert → Page → Page before / Page after. Does not mutate controlled `value` / `pages`. See [Page properties](#page-properties) |
|
|
87
92
|
| `enableMultiPages` | `boolean` | `false` | When true, edit multiple independent HTML pages in visual mode. See [Multi-page editing](#multi-page-editing) |
|
|
88
93
|
| `pages` | `string[]` | — | Controlled page HTML strings when `enableMultiPages` is true |
|
|
89
94
|
| `defaultPages` | `string[]` | — | Initial pages when uncontrolled and `enableMultiPages` is true |
|
|
90
95
|
| `onPagesChange` | `(pages: string[], activePageIndex: number) => void` | — | Fires when any page changes while multi-page mode is enabled |
|
|
96
|
+
| `defaultRulerVisible` | `boolean` | `true` | Initial ruler visibility in visual mode when the page has a defined size. Toggle at runtime with `commands.toggleRuler()` / `queries.isRulerVisible()` |
|
|
97
|
+
| `rulerUnit` | `'in' \| 'cm' \| 'mm' \| 'pt'` | `'in'` | Measurement unit for ruler ticks, snapping, and margin/indent serialization |
|
|
91
98
|
| `enableComments` | `boolean` | `false` | When true, comment chrome and thread state are enabled. See [Comments](#comments) |
|
|
92
99
|
| `defaultCommentsVisible` | `boolean` | `true` | Initial comment highlight visibility when `enableComments` is true. When `true`, highlights are shown and View shows "Hide comments". See [Comments](#comments) |
|
|
93
100
|
| `commentAuthor` | `CommentAuthor` | — | `{ userId, userName }` identity for posting messages in the comment panel |
|
|
@@ -98,7 +105,7 @@ Give the editor a parent with a definite height (`height: 100%` on a sized ances
|
|
|
98
105
|
| `darkMode` | `boolean` | `false` | Initial chrome theme when nothing is persisted (`true` = dark). See [Dark mode](#dark-mode) |
|
|
99
106
|
| `darkModePersistence` | `DarkModePersistence` | — | Host load/save for the chrome theme. Omit to persist in `localStorage`. See [Dark mode](#dark-mode) |
|
|
100
107
|
|
|
101
|
-
`mode`, `value`, and `fullscreen` are optional. Omit them for internal state; pass them to control from the parent. Chrome includes a File menu (Save, Load, and Print), an Edit menu (Undo, Redo, and Page properties), an Insert menu (Link, Bookmark, Image, Audio, YouTube video, Table, Horizontal line, and Page break), a Table menu (Insert table, row and column items, Merge cells, Unmerge cells, and table/cell/row properties), a View menu (Visual, HTML, Toolbar customize and position, Zoom, Light/Dark mode, Preview, Read aloud, and Full screen), and a Format menu (paragraph styles, font, clear formatting, paragraph, and image properties), unless `menuVisible` is `false`. The icon toolbar has File (Save and Load), Print, Edit (Undo and Redo), Insert (Link, Bookmark, Image, Table, and Horizontal line), Table (Merge cells and Unmerge cells), Font, Align, Paragraph, and View (Visual | HTML | Preview | Read aloud) groups, with Full screen pinned last, unless `toolbarVisible` is `false`. Hide both to drop the chrome slot entirely. View → Toolbar → Position docks the icon toolbar (the menu bar stays at the top). Top and bottom wrap onto multiple rows when they cannot fit on one line; Full screen stays last, pinned to the right of the first row. Left and right stay a single column and grow the editor instead of wrapping into extra columns. Full screen covers the host page with a fixed overlay; an X control (and Escape) returns to the in-page layout. Visual and HTML mode stay independent of the overlay. By default, Save writes the current document to an HTML file and Load replaces it from an HTML file; pass `onSave` and/or `onOpen` to delegate to host callbacks instead (see [Save and open](#save-and-open)). Dropping an `.html` / `.htm` file onto the document surface does the same as Load, unless `disableHtmlFileDrop` is set. Print opens the browser print dialog for the document HTML only (not the editor chrome). Preview (View menu and View icon group) opens a large dialog with a scrollable rendering of the current document HTML. Read aloud (View menu and View icon group) uses the browser’s built-in speech synthesis to read the current selection, or the full document when nothing is selected; click again to stop. Undo and Redo walk document HTML history; they are grayed out when there is nothing to undo or redo. The File, Edit, and Insert menu items use the same icons as the toolbar buttons where both exist. Link wraps the selection (or inserts the URL as the visible text at the caret) in an `<a href>` tag; an optional title becomes the native hover tooltip, and opening in a new tab sets `target="_blank"`. Bookmark inserts a named destination (`id`) at the caret or around the selection. Audio and YouTube video are available from the Insert menu only (no toolbar buttons). Horizontal line inserts an `<hr>` at the caret. Page break inserts a hard print break at the caret (Insert → Page break, or Ctrl/Cmd+Enter in visual mode). Content after the break starts on a new printed page. Serialized HTML uses inline `break-after: page` / `page-break-after: always` on a `<div>` — distinct from **Insert → Page**, which adds a new editor page when `enableMultiPages` is on.
|
|
108
|
+
`mode`, `value`, and `fullscreen` are optional. Omit them for internal state; pass them to control from the parent. Chrome includes a File menu (Save, Load, and Print), an Edit menu (Undo, Redo, and Page properties), an Insert menu (Link, Bookmark, Image, Page background image, Paragraph background image, Audio, YouTube video, Table, Horizontal line, and Page break), a Table menu (Insert table, row and column items, Merge cells, Unmerge cells, and table/cell/row properties), a View menu (Visual, HTML, Toolbar customize and position, Zoom, Light/Dark mode, Preview, Read aloud, and Full screen), and a Format menu (paragraph styles, font, clear formatting, paragraph, and image properties), unless `menuVisible` is `false`. The icon toolbar has File (Save and Load), Print, Edit (Undo and Redo), Insert (Link, Bookmark, Image, Table, and Horizontal line), Table (Merge cells and Unmerge cells), Font, Align, Paragraph, and View (Visual | HTML | Preview | Read aloud) groups, with Full screen pinned last, unless `toolbarVisible` is `false`. Hide both to drop the chrome slot entirely. **Page background image** is disabled outside visual mode and, when `enableMultiPages` is true, until a page is selected. **Paragraph background image** is disabled outside visual mode or when the caret is not in a paragraph block. View → Toolbar → Position docks the icon toolbar (the menu bar stays at the top). Top and bottom wrap onto multiple rows when they cannot fit on one line; Full screen stays last, pinned to the right of the first row. Left and right stay a single column and grow the editor instead of wrapping into extra columns. Full screen covers the host page with a fixed overlay; an X control (and Escape) returns to the in-page layout. Visual and HTML mode stay independent of the overlay. By default, Save writes the current document to an HTML file and Load replaces it from an HTML file; pass `onSave` and/or `onOpen` to delegate to host callbacks instead (see [Save and open](#save-and-open)). Dropping an `.html` / `.htm` file onto the document surface does the same as Load, unless `disableHtmlFileDrop` is set. Print opens the browser print dialog for the document HTML only (not the editor chrome). Preview (View menu and View icon group) opens a large dialog with a scrollable rendering of the current document HTML. Read aloud (View menu and View icon group) uses the browser’s built-in speech synthesis to read the current selection, or the full document when nothing is selected; click again to stop. Undo and Redo walk document HTML history; they are grayed out when there is nothing to undo or redo. The File, Edit, and Insert menu items use the same icons as the toolbar buttons where both exist. Link wraps the selection (or inserts the URL as the visible text at the caret) in an `<a href>` tag; an optional title becomes the native hover tooltip, and opening in a new tab sets `target="_blank"`. Bookmark inserts a named destination (`id`) at the caret or around the selection. Audio and YouTube video are available from the Insert menu only (no toolbar buttons). Horizontal line inserts an `<hr>` at the caret. Page break inserts a hard print break at the caret (Insert → Page break, or Ctrl/Cmd+Enter in visual mode). Content after the break starts on a new printed page. Serialized HTML uses inline `break-after: page` / `page-break-after: always` on a `<div>` — distinct from **Insert → Page**, which adds a new editor page when `enableMultiPages` is on.
|
|
102
109
|
|
|
103
110
|
`menuColor`, `menuBackground`, `menuFontSize`, and `menuFontFamily` restyle the dropdown menu bar and panels only — not the icon toolbar. `border` is the outer editor box and is ignored in fullscreen. Custom menu fonts must already be available on the page.
|
|
104
111
|
|
|
@@ -117,9 +124,24 @@ import { Editor } from 'commspliant-html-editor'
|
|
|
117
124
|
|
|
118
125
|
### Page properties
|
|
119
126
|
|
|
120
|
-
Edit → Page →
|
|
127
|
+
**Edit → Page → Page properties** is always available and opens a dialog with **Font** and **Paragraph** tabs. Paragraph sub-tabs include **Spacing**, **Border**, **Background** (fill color and page opacity), and **Background Image**.
|
|
128
|
+
|
|
129
|
+
Pass `enablePageProperties` to add the **Print** tab for `@page` size, orientation, and margins. In visual mode, the white editing surface previews that page size and print margins on screen (display-only; serialized HTML is unchanged). Use **View → Zoom** for screen-only fit and percentage zoom; zoom is not stored in the document.
|
|
121
130
|
|
|
122
|
-
|
|
131
|
+
Pass `defaultPageProperties` to apply partial page settings automatically on uncontrolled initial content (`defaultValue` / `defaultPages`) and on each page inserted with **Insert → Page → Page before** or **Page after** (visible only when `enableMultiPages` is true and the editor is in visual mode; both items are disabled until you select a page). Controlled `value` / `pages` are not modified on load. All fields are optional; print settings use the `atRule` object (`sizePreset`, `customWidth`, `customHeight`, `orientation`, `margin`). You can set defaults without enabling the Print tab.
|
|
132
|
+
|
|
133
|
+
```tsx
|
|
134
|
+
import { Editor } from 'commspliant-html-editor'
|
|
135
|
+
|
|
136
|
+
<Editor
|
|
137
|
+
enablePageProperties
|
|
138
|
+
defaultPageProperties={{
|
|
139
|
+
atRule: { sizePreset: 'A4', orientation: 'portrait' },
|
|
140
|
+
}}
|
|
141
|
+
/>
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
The first time page properties are applied, content is wrapped in a single `<div data-page>` shell with `width: 100%` and `height: 100%`. Background **color** is written on that shell. Background **image** uses the same file, URL, or custom picker as Insert → Image, plus independent width and height (default width `100%`, height unset), and opacity, fit, and position controls (the same options as Image properties → Advanced). Rotation is not supported for page backgrounds. Width and height write `background-size`; keyword fit values (`cover`, `contain`) replace those dimensions. File uploads for background images follow the same WebP embedding rules as Insert → Image (see [Custom image picker](#custom-image-picker)).
|
|
123
145
|
|
|
124
146
|
When a background image is set, a single managed first child `<div id="commspliant-background" data-page-bg contenteditable="false">` holds the image layer so image opacity does not fade page text. If that id already exists in the editor, it is reused and extras are removed. The layer sits behind content (`z-index: -1`) so the document stays editable:
|
|
125
147
|
|
|
@@ -184,7 +206,7 @@ If `toolbar` is set, custom action ids must be listed to appear on the icon bar.
|
|
|
184
206
|
|
|
185
207
|
Empty arrays hide that surface (`menus: []` shows no dropdowns; `toolbar: []` shows no icons). The right-click context menu is not filtered. Commands stay registered; this only hides chrome.
|
|
186
208
|
|
|
187
|
-
Page properties (
|
|
209
|
+
Page properties (Font and Paragraph tabs) live under **Edit → Page**. The Print tab appears when `enablePageProperties` is true. Hosts that allow only `format` in `allowedChrome` will not show Page properties unless `edit` is included too.
|
|
188
210
|
|
|
189
211
|
View → Toolbar → Customize toolbar and its persistence still work as they do today, on the allowed toolbar subset. The dialog lists only allowed icon-toolbar items.
|
|
190
212
|
|
|
@@ -357,24 +379,46 @@ let stored: CustomParagraphStyle[] = []
|
|
|
357
379
|
|
|
358
380
|
Omit all three props to keep only the built-in styles.
|
|
359
381
|
|
|
382
|
+
### HTML sanitization
|
|
383
|
+
|
|
384
|
+
By default (`sanitizeHtml={true}`), the editor strips `<script>` tags (and their content) and removes `javascript:` URLs from element attributes on **inbound** `value` / `defaultValue` / `pages` and on **every outbound write** (visual typing, paste, HTML-source edits, file load/drop, inserts, `setHtml`). The stored HTML and `onChange` / `onPagesChange` payloads are sanitized.
|
|
385
|
+
|
|
386
|
+
```tsx
|
|
387
|
+
import { Editor, sanitizeDocumentHtml } from 'commspliant-html-editor'
|
|
388
|
+
|
|
389
|
+
// Disable built-in sanitization and use transformHtml instead:
|
|
390
|
+
<Editor sanitizeHtml={false} transformHtml={mySanitizer} />
|
|
391
|
+
|
|
392
|
+
// Sanitize publish HTML the same way (e.g. after stripCommentAnchors):
|
|
393
|
+
const publishHtml = sanitizeDocumentHtml(stripCommentAnchors(html))
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
**What is removed:** `<script>…</script>` tags; `javascript:` in `href`, `src`, `style`, and other attributes.
|
|
397
|
+
|
|
398
|
+
**What is left alone:** other tags and attributes (including `onclick`), `vbscript:`, arbitrary inline CSS, and HTML comments (including the multi-page `<!-- wysiwyg-page-separator -->` marker).
|
|
399
|
+
|
|
400
|
+
This is a **minimal** XSS guard, not a full HTML allowlist (no DOMPurify). For untrusted content, combine with host-side validation or a stricter `transformHtml`.
|
|
401
|
+
|
|
402
|
+
Set `sanitizeHtml={false}` to skip built-in sanitization.
|
|
403
|
+
|
|
360
404
|
### Transform HTML
|
|
361
405
|
|
|
362
|
-
Pass `transformHtml` to sanitize or enhance the document on every write: visual typing and paste, HTML-source edits, Load, dropped HTML files, inserts, and `setHtml`. The result is what the editor stores and what `onChange` receives.
|
|
406
|
+
Pass `transformHtml` to further sanitize or enhance the document on every write: visual typing and paste, HTML-source edits, Load, dropped HTML files, inserts, and `setHtml`. It runs **after** built-in sanitization when `sanitizeHtml` is true (default). The result is what the editor stores and what `onChange` receives.
|
|
363
407
|
|
|
364
408
|
```tsx
|
|
365
409
|
<Editor
|
|
366
410
|
defaultValue="<p>Hello</p>"
|
|
367
|
-
transformHtml={(html) => html.replace(/<
|
|
411
|
+
transformHtml={(html) => html.replace(/<iframe[\s\S]*?<\/iframe>/gi, '')}
|
|
368
412
|
/>
|
|
369
413
|
```
|
|
370
414
|
|
|
371
|
-
Keep the callback idempotent. If it rewrites markup on every keystroke (pretty-print, wrap tags), the visual surface resyncs `innerHTML` and the caret may jump. Prefer stripping disallowed tags over format-on-type.
|
|
415
|
+
Keep the callback idempotent. If it rewrites markup on every keystroke (pretty-print, wrap tags), the visual surface resyncs `innerHTML` and the caret may jump. Prefer stripping disallowed tags over format-on-type. Do **not** strip HTML comments in `transformHtml` when using multi-page mode — that removes `<!-- wysiwyg-page-separator -->` and collapses pages.
|
|
372
416
|
|
|
373
417
|
### Auto save
|
|
374
418
|
|
|
375
419
|
Pass `onAutoSave` to persist the document HTML from the host. The editor polls every second and calls the callback only when that HTML changed since the last auto-save. Omit the prop to disable (the default). The callback is not awaited, so a slow or failing save does not block editing.
|
|
376
420
|
|
|
377
|
-
The HTML is the same string `onChange` receives (after `transformHtml`, with font stylesheet links when a custom face is used). The initial document is not treated as a change.
|
|
421
|
+
The HTML is the same string `onChange` receives (after built-in sanitization and `transformHtml`, with font stylesheet links when a custom face is used). The initial document is not treated as a change.
|
|
378
422
|
|
|
379
423
|
```tsx
|
|
380
424
|
import { Editor } from 'commspliant-html-editor'
|
|
@@ -391,7 +435,7 @@ import { Editor } from 'commspliant-html-editor'
|
|
|
391
435
|
|
|
392
436
|
By default, File → Save and the Save toolbar button write the document to a local HTML file (browser save picker or download). File → Open and the Open toolbar button load from a local HTML file. Omit both callbacks to keep that behavior.
|
|
393
437
|
|
|
394
|
-
Pass `onSave` to persist through the host instead of the built-in file picker. It receives the current document HTML (same as `onChange`, after `transformHtml`) and is awaited.
|
|
438
|
+
Pass `onSave` to persist through the host instead of the built-in file picker. It receives the current document HTML (same as `onChange`, after sanitization and `transformHtml`) and is awaited.
|
|
395
439
|
|
|
396
440
|
Pass `onOpen` to load through the host instead of the built-in file picker. Return document HTML to replace the editor, or `null` to cancel. The callback is awaited. HTML file drag-drop is unchanged — it still reads a local file and does not call `onOpen`.
|
|
397
441
|
|
|
@@ -415,7 +459,7 @@ import { Editor } from 'commspliant-html-editor'
|
|
|
415
459
|
|
|
416
460
|
### Multi-page editing
|
|
417
461
|
|
|
418
|
-
Set `enableMultiPages` to edit several independent HTML pages in visual mode. Pages appear stacked with toolbar-colored gaps between them.
|
|
462
|
+
Set `enableMultiPages` to edit several independent HTML pages in visual mode. Pages appear stacked with toolbar-colored gaps between them. **Insert → Page → Page before** and **Page after** are shown only when `enableMultiPages` is true and the editor is in visual mode; both are disabled until you click a page to select it. **Edit → Page → Delete page** is shown under the same conditions and is disabled when only one page remains; choosing it opens a confirmation dialog before the selected page is removed. The visual context menu also includes **Page properties** and **Delete page** (with the same delete guards). When `enablePageProperties` is true, Edit → Page → Page properties includes a Print tab for `@page` size, orientation, and margins; Reset removes the print rule from the active page.
|
|
419
463
|
|
|
420
464
|
When multi-page mode is off (default), behavior is unchanged.
|
|
421
465
|
|
|
@@ -431,6 +475,8 @@ When multi-page mode is off (default), behavior is unchanged.
|
|
|
431
475
|
- Host `onSave`, `onOpen`, and `onAutoSave` receive **all pages** as a `string[]` when `enableMultiPages` is true.
|
|
432
476
|
- Use `onPagesChange` for controlled multi-page state. Export helpers: `splitPagesFromHtml`, `joinPagesToHtml`, and `PAGE_SEPARATOR` from the package.
|
|
433
477
|
|
|
478
|
+
**Rulers:** When a page defines a **page size** (`@page` size preset such as A4, letter, or legal, or custom width and height), horizontal and vertical rulers appear for that page in visual mode. Orientation alone does not enable rulers. **View → Ruler** toggles them. The horizontal ruler stays pinned at the top of the document well while scrolling (like the toolbar stays above the scrollport). In multi-page mode, rulers follow the selected page (or page 1 before any page is selected). Each page row shows a vertical ruler only when that page has a size; unsized pages fill the workspace at 100% width and height. Drag margin splitters to change `@page` margins; the on-screen margin preview updates live while dragging and commits on release. Drag indent markers to set paragraph `text-indent` and `margin-left` / `margin-right` on the selection. Set `defaultRulerVisible={false}` to start hidden, and `rulerUnit` to change tick units (`in`, `cm`, `mm`, `pt`). Page zoom (View → Zoom) scales the page canvas; ruler band thickness stays 24px on screen.
|
|
479
|
+
|
|
434
480
|
```tsx
|
|
435
481
|
import { useState } from 'react'
|
|
436
482
|
import { Editor } from 'commspliant-html-editor'
|
|
@@ -460,7 +506,7 @@ export function MultiPageEditor() {
|
|
|
460
506
|
|
|
461
507
|
In visual mode, use **Insert → Page break** or **Ctrl/Cmd+Enter** to insert a hard print break at the caret. The editor shows a dashed line; serialized HTML is a `<div>` with inline `break-after: page` and `page-break-after: always`. Content after the break starts on a new page when printing.
|
|
462
508
|
|
|
463
|
-
This is not the same as **Insert → Page** (multi-page mode), which adds
|
|
509
|
+
This is not the same as **Insert → Page → Page before / Page after** (multi-page mode), which adds separate editor page surfaces.
|
|
464
510
|
|
|
465
511
|
### Comments
|
|
466
512
|
|
|
@@ -601,6 +647,8 @@ Omit `customImagePicker` to keep File and URL only. Set `disableBuiltinImageInse
|
|
|
601
647
|
|
|
602
648
|
`insertImage` uses the same insert path as File and URL: an `<img>` with inline `max-width: 100%; height: auto`, then any host `css`. `src` must be `http(s)`, a relative path, or a raster `data:` URL.
|
|
603
649
|
|
|
650
|
+
When you choose **File** in Insert → Image, Page properties → Background Image, or Paragraph properties → Background Image, the editor embeds the image as a `data:` URL in the serialized HTML. Uploaded JPEG, PNG, and BMP files are converted to WebP first when the browser supports encoding; if conversion fails or is unsupported, the original format is embedded. GIF uploads are kept as GIF so animation is preserved. URL and custom-picker sources are unchanged.
|
|
651
|
+
|
|
604
652
|
`onPick` from Page properties (Edit → Page → Page properties → Background Image) leaves the editor dialog open so the picked URL can fill the draft. If your picker is a modal overlay, give it a `z-index` above editor dialogs (`1200`).
|
|
605
653
|
|
|
606
654
|
### Custom audio picker
|
|
@@ -776,4 +824,8 @@ The live demo is the playground static build. DigitalOcean App Platform defaults
|
|
|
776
824
|
import { Editor } from 'commspliant-html-editor'
|
|
777
825
|
```
|
|
778
826
|
|
|
827
|
+
## License
|
|
828
|
+
|
|
829
|
+
MIT. See [LICENSE](LICENSE).
|
|
830
|
+
|
|
779
831
|
[Brought to you by CommsPliant Communication](https://commspliant.com/)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
._chrome_boy0f_1{--wysiwyg-chrome-text: #444;--wysiwyg-chrome-text-strong: #111;--wysiwyg-chrome-text-muted: #555;--wysiwyg-chrome-toolbar: #f0f0f0;--wysiwyg-chrome-menu: #fff;--wysiwyg-chrome-border: #e5e5e5;--wysiwyg-chrome-divider: #d0d0d0;--wysiwyg-chrome-hover: #f0f0f0;--wysiwyg-chrome-pressed: #ececec;--wysiwyg-chrome-dialog: #fff;--wysiwyg-chrome-dialog-text: #222;--wysiwyg-chrome-dialog-border: #c8c8c8;--wysiwyg-chrome-dialog-muted: #f7f7f7;--wysiwyg-chrome-dialog-group: #fafafa;--wysiwyg-chrome-input: #fff;--wysiwyg-chrome-focus: #8ab4ff;--wysiwyg-chrome-backdrop: rgb(0 0 0 / 32%);--wysiwyg-chrome-shadow: rgb(0 0 0 / 18%);--wysiwyg-chrome-menu-shadow: rgb(0 0 0 / 8%);--wysiwyg-chrome-tooltip-bg: #222;--wysiwyg-chrome-tooltip-fg: #fff;--wysiwyg-chrome-selected: #e8f0fe;--wysiwyg-chrome-danger: #b33;--wysiwyg-chrome-primary: #4a7fd4;--wysiwyg-chrome-primary-fg: #fff;--wysiwyg-chrome-primary-soft: #e8eef8;--wysiwyg-chrome-empty: #ddd;--wysiwyg-chrome-icon: #333}._chrome_boy0f_1[data-wysiwyg-theme=dark]{--wysiwyg-chrome-text: #e4e4e4;--wysiwyg-chrome-text-strong: #fff;--wysiwyg-chrome-text-muted: #bbb;--wysiwyg-chrome-toolbar: #2b2b2b;--wysiwyg-chrome-menu: #1e1e1e;--wysiwyg-chrome-border: #3a3a3a;--wysiwyg-chrome-divider: #4a4a4a;--wysiwyg-chrome-hover: #3a3a3a;--wysiwyg-chrome-pressed: #444;--wysiwyg-chrome-dialog: #252525;--wysiwyg-chrome-dialog-text: #e8e8e8;--wysiwyg-chrome-dialog-border: #4a4a4a;--wysiwyg-chrome-dialog-muted: #1a1a1a;--wysiwyg-chrome-dialog-group: #1a1a1a;--wysiwyg-chrome-input: #1e1e1e;--wysiwyg-chrome-focus: #8ab4ff;--wysiwyg-chrome-backdrop: rgb(0 0 0 / 55%);--wysiwyg-chrome-shadow: rgb(0 0 0 / 45%);--wysiwyg-chrome-menu-shadow: rgb(0 0 0 / 40%);--wysiwyg-chrome-tooltip-bg: #eee;--wysiwyg-chrome-tooltip-fg: #111;--wysiwyg-chrome-selected: #2a3a50;--wysiwyg-chrome-danger: #f66;--wysiwyg-chrome-primary: #6a9ae0;--wysiwyg-chrome-primary-fg: #111;--wysiwyg-chrome-primary-soft: #2a3a50;--wysiwyg-chrome-empty: #555;--wysiwyg-chrome-icon: #eee}._menu_c1m45_1{position:fixed;z-index:1150;display:flex;flex-direction:column;min-width:12rem;max-height:calc(100vh - 16px);margin:0;padding:.25rem 0;overflow:auto;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:4px;background:var(--wysiwyg-chrome-menu, #fff);box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 8%));color:var(--wysiwyg-chrome-text, #444);font:.875rem/1.4 system-ui,sans-serif}._item_c1m45_19{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;align-items:center;width:100%;margin:0;padding:.4rem .75rem;border:0;border-radius:0;background:transparent;color:inherit;font:inherit;text-align:start;white-space:nowrap;cursor:pointer;box-shadow:none}._item_c1m45_19:hover,._item_c1m45_19:focus-visible{background:var(--wysiwyg-chrome-hover, #f0f0f0);color:var(--wysiwyg-chrome-text-strong, #111)}._item_c1m45_19:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-2px}._item_c1m45_19:disabled{cursor:not-allowed;opacity:.5}._item_c1m45_19:disabled:hover,._item_c1m45_19:disabled:focus-visible{background:transparent;color:inherit}._separator_c1m45_59{height:1px;margin:.25rem .5rem;background:var(--wysiwyg-chrome-divider, #d0d0d0);border:0}._picker_ag1yo_1{display:flex;flex-direction:column;gap:.45rem;box-sizing:border-box;width:14.5rem;padding:.4rem .5rem .5rem;color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.2 system-ui,sans-serif}._none_ag1yo_12,._customToggle_ag1yo_13,._eyedrop_ag1yo_14{display:flex;align-items:center;gap:.4rem;width:100%;margin:0;padding:.25rem .35rem;border:0;border-radius:3px;background:transparent;color:inherit;font:inherit;text-align:start;cursor:pointer}._none_ag1yo_12:hover,._none_ag1yo_12:focus-visible,._customToggle_ag1yo_13:hover,._customToggle_ag1yo_13:focus-visible,._eyedrop_ag1yo_14:hover,._eyedrop_ag1yo_14:focus-visible{background:var(--wysiwyg-chrome-selected, #e8f0fe);outline:none}._none_ag1yo_12[aria-checked=true],._none_ag1yo_12[aria-selected=true]{font-weight:600}._none_ag1yo_12:disabled,._customToggle_ag1yo_13:disabled,._eyedrop_ag1yo_14:disabled,._swatch_ag1yo_48:disabled,._field_ag1yo_49 input:disabled{cursor:not-allowed;opacity:.5}._grid_ag1yo_54,._recents_ag1yo_55{display:grid;grid-template-columns:repeat(8,1.25rem);gap:.22rem;justify-content:space-between}._swatch_ag1yo_48{box-sizing:border-box;width:1.25rem;height:1.25rem;padding:0;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:2px;cursor:pointer}._swatch_ag1yo_48:hover,._swatch_ag1yo_48:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._swatch_ag1yo_48[aria-checked=true],._swatch_ag1yo_48[aria-selected=true]{outline:2px solid #111;outline-offset:1px}._sectionLabel_ag1yo_84{margin:.15rem 0 0;font-weight:600}._custom_ag1yo_13{display:flex;flex-direction:column;gap:.45rem}._sv_ag1yo_95{position:relative;width:100%;height:7.5rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;cursor:crosshair;touch-action:none}._svThumb_ag1yo_105{position:absolute;width:.7rem;height:.7rem;border:2px solid #fff;border-radius:50%;box-shadow:0 0 0 1px #111;transform:translate(-50%,-50%);pointer-events:none}._hue_ag1yo_116{width:100%;height:.85rem;margin:0;padding:0;border-radius:3px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:linear-gradient(to right,red,#ff0,#0f0,#0ff,#00f,#f0f,red);cursor:pointer}._hue_ag1yo_116::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:.7rem;height:.85rem;border:2px solid #fff;border-radius:2px;background:transparent;box-shadow:0 0 0 1px #111}._hue_ag1yo_116::-moz-range-thumb{width:.7rem;height:.85rem;border:2px solid #fff;border-radius:2px;background:transparent;box-shadow:0 0 0 1px #111}._rgbRow_ag1yo_155,._hexRow_ag1yo_156{display:flex;align-items:center;gap:.3rem}._field_ag1yo_49{display:flex;flex:1 1 0;flex-direction:column;gap:.1rem;min-width:0}._field_ag1yo_49 label{font-weight:600}._field_ag1yo_49 input{box-sizing:border-box;width:100%;margin:0;padding:.15rem .25rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);color:inherit;font:inherit}._hexRow_ag1yo_156 ._field_ag1yo_49{flex:1 1 auto}._eyedrop_ag1yo_14{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23222' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15.5 4.5l4 4-9 9H6.5v-4.5z'/%3E%3Cpath d='M13.5 6.5l4 4'/%3E%3C/svg%3E") 2 18,crosshair}._wrap_hfz5s_1{position:relative;display:inline-flex;flex-shrink:0;align-items:stretch}._button_hfz5s_8{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem;min-width:1.75rem;padding:.4rem .5rem .3rem}._icon_hfz5s_18{display:block;width:1rem;height:1rem}._bar_hfz5s_24{display:block;width:1rem;height:.2rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:1px;background:transparent}._barEmpty_hfz5s_33{background:repeating-linear-gradient(-45deg,var(--wysiwyg-chrome-empty, #ddd),var(--wysiwyg-chrome-empty, #ddd) 1px,transparent 1px,transparent 3px)}._popover_hfz5s_43{position:fixed;z-index:1300;max-height:calc(100vh - 8px);overflow:auto;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:4px;background:var(--wysiwyg-chrome-dialog, #fff);box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 12%))}._field_1knrr_1{display:flex;align-items:center;justify-content:space-between;gap:.75rem}._label_1knrr_8{font-weight:600}._button_1knrr_12{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;width:2.4rem;height:1.5rem;margin:0;padding:.15rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);cursor:pointer}._button_1knrr_12:disabled{cursor:not-allowed;opacity:.5}._button_1knrr_12:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._swatch_1knrr_37{display:block;width:100%;height:100%;border-radius:2px}._swatchEmpty_1knrr_44{background:repeating-linear-gradient(-45deg,var(--wysiwyg-chrome-empty, #ddd),var(--wysiwyg-chrome-empty, #ddd) 1px,transparent 1px,transparent 3px)}._toolbar_1aggm_1{display:flex;flex-direction:column;align-items:stretch;width:100%;min-width:0}._toolbar_1aggm_1._toolbar_1aggm_1{display:flex;flex-direction:column;container-type:inline-size}._toolbar_1aggm_1._toolbar_1aggm_1[data-toolbar-position=left],._toolbar_1aggm_1._toolbar_1aggm_1[data-toolbar-position=right]{container-type:normal;width:100%;min-width:0;height:auto;min-height:100%}._toolbar_1aggm_1._toolbar_1aggm_1[data-menu-overlay-portal]{container-type:normal;width:0;height:0;min-width:0;overflow:visible}._toolbar_1aggm_1 ._menuBar_1aggm_35{display:flex;align-items:stretch;width:100%;background:var(--wysiwyg-menu-background, var(--wysiwyg-chrome-menu, #fff));border-bottom:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._toolbar_1aggm_1 ._menuBarDesktop_1aggm_43{display:flex;align-items:stretch;min-width:0}._toolbar_1aggm_1 ._brandMark_1aggm_49{display:inline-flex;flex-shrink:0;align-items:center;padding:.25rem .65rem .25rem .5rem}._toolbar_1aggm_1 ._brandMarkIcon_1aggm_56{display:block;height:2.5rem;width:auto;aspect-ratio:616.23 / 542.09;overflow:visible}._toolbar_1aggm_1 ._brandMarkIcon_1aggm_56 *{stroke:none}._toolbar_1aggm_1 ._menuBarCompact_1aggm_68{display:none;align-items:stretch}._toolbar_1aggm_1[data-compact] ._menuBarDesktop_1aggm_43{display:none}._toolbar_1aggm_1[data-compact] ._menuBarCompact_1aggm_68{display:flex}@container (max-width: 40rem){._toolbar_1aggm_1 ._menuBarDesktop_1aggm_43{display:none}._toolbar_1aggm_1 ._menuBarCompact_1aggm_68{display:flex}}._toolbar_1aggm_1 ._menuWrap_1aggm_91{position:relative;display:flex;align-items:stretch}._toolbar_1aggm_1 ._menuButton_1aggm_97,._toolbar_1aggm_1 ._iconButton_1aggm_98,._toolbar_1aggm_1 ._menuItem_1aggm_99{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;border:0;border-radius:0;background:transparent;font:inherit;font-weight:400;line-height:inherit;letter-spacing:inherit;text-transform:none;text-decoration:none;color:var(--wysiwyg-chrome-text, #444);cursor:pointer;box-shadow:none}._toolbar_1aggm_1 ._menuButton_1aggm_97,._toolbar_1aggm_1 ._menuItem_1aggm_99{color:var(--wysiwyg-menu-color, var(--wysiwyg-chrome-text, #444));font-size:var(--wysiwyg-menu-font-size, .875rem);font-family:var(--wysiwyg-menu-font-family, inherit)}._toolbar_1aggm_1 ._menuButton_1aggm_97{display:inline-flex;align-items:center;padding:.5rem .9rem;text-align:center}._toolbar_1aggm_1 ._menuButton_1aggm_97:after{content:"";display:inline-block;width:0;height:0;margin-left:.4rem;border-style:solid;border-width:.28rem .22rem 0;border-color:currentColor transparent transparent;transform:translateY(.08em)}._toolbar_1aggm_1 ._hamburgerButton_1aggm_142:after{content:none;display:none;margin:0;border:0}._toolbar_1aggm_1 ._iconNav_1aggm_149{position:relative;display:flex;flex-wrap:nowrap;align-items:flex-start;width:100%;max-width:100%;min-width:0;background:var(--wysiwyg-toolbar-background, var(--wysiwyg-chrome-toolbar, #f0f0f0))}._toolbar_1aggm_1 ._iconNavMain_1aggm_160{display:flex;flex:1 1 auto;flex-wrap:wrap;align-items:stretch;min-width:0;max-width:100%}._toolbar_1aggm_1 ._iconNavEnd_1aggm_169{display:flex;flex:0 0 auto;flex-wrap:nowrap;align-items:stretch;align-self:flex-start}._toolbar_1aggm_1 ._iconNavMain_1aggm_160+._iconNavEnd_1aggm_169:before{content:"";width:1px;align-self:stretch;margin:.35rem .15rem;background:var(--wysiwyg-chrome-divider, #d0d0d0)}._toolbar_1aggm_1 ._iconGroup_1aggm_185{display:flex;flex:0 0 auto;flex-wrap:wrap;align-items:stretch;max-width:100%}._toolbar_1aggm_1 ._iconNavEnd_1aggm_169 ._iconGroup_1aggm_185{flex-wrap:nowrap}._toolbar_1aggm_1[data-toolbar-position=left] ._iconNav_1aggm_149,._toolbar_1aggm_1[data-toolbar-position=right] ._iconNav_1aggm_149{flex:1 0 auto;flex-direction:column;flex-wrap:nowrap;align-items:stretch;width:100%;min-width:0;max-width:none;height:auto;min-height:100%}._toolbar_1aggm_1[data-toolbar-position=left] ._iconNavMain_1aggm_160,._toolbar_1aggm_1[data-toolbar-position=right] ._iconNavMain_1aggm_160{flex:1 0 auto;flex-direction:column;flex-wrap:nowrap;width:100%;min-width:0;max-width:none}._toolbar_1aggm_1[data-toolbar-position=left] ._iconNavEnd_1aggm_169,._toolbar_1aggm_1[data-toolbar-position=right] ._iconNavEnd_1aggm_169{flex-direction:column;margin-top:auto;align-self:stretch}._toolbar_1aggm_1[data-toolbar-position=left] ._iconGroup_1aggm_185,._toolbar_1aggm_1[data-toolbar-position=right] ._iconGroup_1aggm_185{flex-direction:column;flex-wrap:nowrap;width:100%;min-width:0;max-width:none}._toolbar_1aggm_1[data-toolbar-position=left] ._iconGroup_1aggm_185:not(:last-child):after,._toolbar_1aggm_1[data-toolbar-position=right] ._iconGroup_1aggm_185:not(:last-child):after{width:auto;height:1px;margin:.15rem .35rem}._toolbar_1aggm_1[data-toolbar-position=left] ._iconNavMain_1aggm_160+._iconNavEnd_1aggm_169:before,._toolbar_1aggm_1[data-toolbar-position=right] ._iconNavMain_1aggm_160+._iconNavEnd_1aggm_169:before{width:auto;height:1px;align-self:stretch;margin:.15rem .35rem}._toolbar_1aggm_1[data-toolbar-position=left] ._iconButton_1aggm_98[aria-pressed=true],._toolbar_1aggm_1[data-toolbar-position=right] ._iconButton_1aggm_98[aria-pressed=true]{box-shadow:inset -2px 0 0 var(--wysiwyg-chrome-text-strong, #111)}._toolbar_1aggm_1 ._iconGroup_1aggm_185:not(:last-child):after{content:"";width:1px;align-self:stretch;margin:.35rem .15rem;background:var(--wysiwyg-chrome-divider, #d0d0d0)}._toolbar_1aggm_1 ._iconButton_1aggm_98{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;padding:.5rem .65rem}._toolbar_1aggm_1 ._iconNav_1aggm_149 ._iconButton_1aggm_98{padding:calc(.5rem + 2px) .65rem calc(.5rem - 2px)}._tooltipTrigger_1aggm_276{display:inline-flex;flex-shrink:0;align-items:stretch}._toolbar_1aggm_1 ._iconButton_1aggm_98[aria-pressed=true]{color:var(--wysiwyg-chrome-text-strong, #111);background:var(--wysiwyg-chrome-pressed, #ececec);box-shadow:inset 0 -2px 0 var(--wysiwyg-chrome-text-strong, #111)}._toolbar_1aggm_1 ._menu_1aggm_35{position:absolute;top:100%;left:0;z-index:2;display:flex;flex-direction:column;min-width:10rem;margin:0;padding:.25rem 0;overflow:visible;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:4px;background:var(--wysiwyg-menu-background, var(--wysiwyg-chrome-menu, #fff));box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 8%))}._toolbar_1aggm_1 ._submenuWrap_1aggm_305{position:relative}._toolbar_1aggm_1 ._submenu_1aggm_305{top:0;left:100%;z-index:3}._toolbar_1aggm_1 ._submenuTrigger_1aggm_315{justify-content:space-between}._toolbar_1aggm_1 ._submenuTrigger_1aggm_315:after{content:"";display:inline-block;width:0;height:0;margin-left:.75rem;border-style:solid;border-width:.22rem 0 .22rem .28rem;border-color:transparent transparent transparent currentColor}._toolbar_1aggm_1 ._menuOverlay_1aggm_330{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1100;display:flex;flex-direction:column;background:var(--wysiwyg-menu-background, var(--wysiwyg-chrome-menu, #fff));color:var(--wysiwyg-menu-color, var(--wysiwyg-chrome-text, #444));font-size:var(--wysiwyg-menu-font-size, .875rem);font-family:var(--wysiwyg-menu-font-family, inherit)}._toolbar_1aggm_1 ._menuOverlayHeader_1aggm_342{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:.5rem;padding:.15rem .15rem .15rem .9rem;border-bottom:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._toolbar_1aggm_1 ._menuOverlayTitle_1aggm_352{font-size:inherit;font-weight:600;color:inherit}._toolbar_1aggm_1 ._menuOverlayBody_1aggm_358{display:flex;flex:1 1 auto;flex-direction:column;min-height:0;overflow:auto}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._menuWrap_1aggm_91{flex-direction:column;align-items:stretch;width:100%}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._menuButton_1aggm_97{width:100%;justify-content:space-between}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._menu_1aggm_35{position:static;top:auto;left:auto;z-index:auto;min-width:0;width:100%;border:0;border-radius:0;box-shadow:none;padding:0 0 .25rem}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._submenuWrap_1aggm_305{position:static}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._submenu_1aggm_305{position:static;top:auto;left:auto;z-index:auto}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._submenuTrigger_1aggm_315:after{transform:rotate(90deg)}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._menuItem_1aggm_99{white-space:normal}._toolbar_1aggm_1 ._menuSeparator_1aggm_409{height:1px;margin:.25rem .5rem;background:var(--wysiwyg-chrome-divider, #d0d0d0);border:0}._toolbar_1aggm_1 ._menuItem_1aggm_99{display:flex;align-items:center;gap:.5rem;width:100%;padding:.4rem .75rem;text-align:start;white-space:nowrap}._toolbar_1aggm_1 ._menuItem_1aggm_99:hover,._toolbar_1aggm_1 ._menuItem_1aggm_99:focus-visible{background:var(--wysiwyg-chrome-hover, #f0f0f0);color:var(--wysiwyg-chrome-text-strong, #111)}._toolbar_1aggm_1 ._menuItem_1aggm_99[aria-checked=true]{color:var(--wysiwyg-chrome-text-strong, #111);font-weight:600}._toolbar_1aggm_1 ._menuButton_1aggm_97:hover,._toolbar_1aggm_1 ._iconButton_1aggm_98:hover,._toolbar_1aggm_1 ._menuButton_1aggm_97:focus-visible,._toolbar_1aggm_1 ._iconButton_1aggm_98:focus-visible{color:var(--wysiwyg-chrome-text-strong, #111);background:var(--wysiwyg-chrome-hover, #f0f0f0)}._toolbar_1aggm_1 ._menuButton_1aggm_97:focus-visible,._toolbar_1aggm_1 ._iconButton_1aggm_98:focus-visible,._toolbar_1aggm_1 ._menuItem_1aggm_99:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-2px}._toolbar_1aggm_1 ._menuButton_1aggm_97:disabled,._toolbar_1aggm_1 ._iconButton_1aggm_98:disabled,._toolbar_1aggm_1 ._menuItem_1aggm_99:disabled{cursor:not-allowed;opacity:.5}._toolbar_1aggm_1 ._menuItem_1aggm_99:disabled:hover,._toolbar_1aggm_1 ._menuItem_1aggm_99:disabled:focus-visible{background:transparent;color:inherit}._toolbar_1aggm_1 ._icon_1aggm_98,._toolbar_1aggm_1 ._icon_1aggm_98 *{overflow:visible;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}._toolbar_1aggm_1 ._icon_1aggm_98{display:block;width:1rem;height:1rem;flex-shrink:0}._tooltip_1aggm_276{position:fixed;z-index:1100;padding:.2rem .45rem;border-radius:3px;background:var(--wysiwyg-chrome-tooltip-bg, #222);color:var(--wysiwyg-chrome-tooltip-fg, #fff);font:.75rem/1.2 system-ui,sans-serif;white-space:nowrap;pointer-events:none}._tooltipElevated_1aggm_494{z-index:1300;max-width:18rem;white-space:normal}._wrap_1vjt0_1._wrap_1vjt0_1{display:inline-flex;flex-shrink:0;align-items:stretch}._wrap_1vjt0_1._wrapToolbar_1vjt0_7{align-self:stretch;padding:5px .35rem 0}._wrap_1vjt0_1 ._field_1vjt0_12{position:relative;display:flex;flex:0 0 auto;align-items:stretch;height:1.6rem}._wrap_1vjt0_1 ._trigger_1vjt0_20{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;min-width:9.5rem;max-width:12rem;height:100%;margin:0;padding:0 1.35rem 0 .45rem;overflow:hidden;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.2 system-ui,sans-serif;text-align:start;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}._wrap_1vjt0_1 ._trigger_1vjt0_20:focus{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-1px}._wrap_1vjt0_1 ._trigger_1vjt0_20:disabled{cursor:not-allowed;opacity:.5}._wrap_1vjt0_1 ._chevron_1vjt0_50{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;width:1.15rem;pointer-events:none;color:var(--wysiwyg-chrome-text, #444)}._wrap_1vjt0_1 ._chevron_1vjt0_50:after{content:"";display:block;width:0;height:0;border-style:solid;border-width:.28rem .22rem 0;border-color:currentColor transparent transparent}._list_1vjt0_73{position:fixed;z-index:1300;min-width:12rem;max-height:min(18rem,calc(100vh - 8px));margin:0;padding:.15rem 0;overflow:auto;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 12%));list-style:none}._listInline_1vjt0_88{position:static;z-index:auto;min-width:100%;max-height:min(14rem,calc(100vh - 8px));box-shadow:none}._option_1vjt0_96{display:block;width:100%;margin:0;padding:.3rem .75rem;border:0;background:transparent;color:var(--wysiwyg-chrome-dialog-text, #222);font-size:.875rem;line-height:1.3;text-align:start;cursor:pointer}._option_1vjt0_96:hover,._option_1vjt0_96:focus-visible{background:var(--wysiwyg-chrome-selected, #e8f0fe);outline:none}._option_1vjt0_96[aria-checked=true]{font-weight:600}._option_1vjt0_96:disabled{cursor:not-allowed;opacity:.5}._separator_1vjt0_125{height:1px;margin:.25rem .5rem;padding:0;background:var(--wysiwyg-chrome-divider, #d0d0d0);border:0;list-style:none}._wrap_58i0x_1._wrap_58i0x_1{display:inline-flex;flex-direction:row;flex-shrink:0;align-items:center;gap:.25rem}._wrap_58i0x_1._wrapToolbar_58i0x_9{align-self:stretch;padding:5px .35rem 0}._wrap_58i0x_1 ._field_58i0x_14{position:relative;display:flex;flex:0 0 auto;align-items:stretch;height:1.6rem}._wrap_58i0x_1 ._input_58i0x_22{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;width:3.4rem;height:100%;margin:0;padding:0 1.35rem 0 .35rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.2 system-ui,sans-serif}._wrap_58i0x_1 ._input_58i0x_22:focus{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-1px}._wrap_58i0x_1 ._toggle_58i0x_41,._wrap_58i0x_1 ._chevron_58i0x_42{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:1.15rem;margin:0;padding:0;border:0;border-radius:0 3px 3px 0;background:transparent;color:var(--wysiwyg-chrome-text, #444)}._wrap_58i0x_1 ._toggle_58i0x_41{cursor:pointer}._wrap_58i0x_1 ._chevron_58i0x_42{pointer-events:none}._wrap_58i0x_1 ._toggle_58i0x_41:after,._wrap_58i0x_1 ._chevron_58i0x_42:after{content:"";display:block;width:0;height:0;margin:0;border-style:solid;border-width:.28rem .22rem 0;border-color:currentColor transparent transparent}._wrap_58i0x_1 ._unit_58i0x_80{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;width:3.4rem;height:100%;margin:0;padding:0 1.35rem 0 .35rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.2 system-ui,sans-serif}._wrap_58i0x_1 ._unit_58i0x_80::-ms-expand{display:none}._wrap_58i0x_1 ._unit_58i0x_80:focus{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-1px}._wrap_58i0x_1 ._input_58i0x_22:disabled,._wrap_58i0x_1 ._toggle_58i0x_41:disabled,._wrap_58i0x_1 ._unit_58i0x_80:disabled{cursor:not-allowed;opacity:.5}._list_58i0x_110{position:fixed;z-index:1300;min-width:4.5rem;max-height:min(12rem,calc(100vh - 8px));margin:0;padding:.15rem 0;overflow:auto;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 12%));list-style:none}._list_58i0x_110 ._option_58i0x_125{display:block;width:100%;margin:0;padding:.2rem .5rem;border:0;background:transparent;color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.3 system-ui,sans-serif;text-align:start;cursor:pointer}._list_58i0x_110 ._option_58i0x_125:hover,._list_58i0x_110 ._option_58i0x_125:focus-visible{background:var(--wysiwyg-chrome-selected, #e8f0fe);outline:none}._backdrop_1p9zk_1{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;display:flex;align-items:center;justify-content:center;padding:1rem;background:var(--wysiwyg-chrome-backdrop, rgb(0 0 0 / 32%))}._backdrop_1p9zk_1 ._dialog_1p9zk_12{display:flex;flex-direction:column;box-sizing:border-box;width:min(32rem,100%);max-width:100%;min-width:0;max-height:100%;margin:0;padding:0;overflow:hidden;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:6px;background:var(--wysiwyg-chrome-dialog, #fff);box-shadow:0 8px 24px var(--wysiwyg-chrome-shadow, rgb(0 0 0 / 18%));color:var(--wysiwyg-chrome-dialog-text, #222);font:.875rem/1.4 system-ui,sans-serif}._backdrop_1p9zk_1 ._dialogWide_1p9zk_31{width:min(38rem,100%)}._backdrop_1p9zk_1 ._header_1p9zk_35{flex-shrink:0;margin:0;padding:.75rem 1rem .5rem;font-size:1rem;font-weight:600}._backdrop_1p9zk_1 ._tabs_1p9zk_43{display:flex;flex-shrink:0;flex-wrap:wrap;gap:.15rem;padding:0 1rem;border-bottom:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._backdrop_1p9zk_1 ._tab_1p9zk_43{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0 0 -1px;padding:.4rem .75rem;border:1px solid transparent;border-bottom:0;border-radius:4px 4px 0 0;background:transparent;color:inherit;font:inherit;cursor:pointer}._backdrop_1p9zk_1 ._tab_1p9zk_43[aria-selected=true]{border-color:var(--wysiwyg-chrome-border, #e5e5e5);background:var(--wysiwyg-chrome-dialog, #fff);font-weight:600}._backdrop_1p9zk_1 ._tab_1p9zk_43:disabled{cursor:not-allowed;opacity:.5}._backdrop_1p9zk_1 ._body_1p9zk_76{display:flex;flex:1 1 auto;flex-direction:column;gap:.85rem;min-height:0;padding:1rem;overflow:auto}._backdrop_1p9zk_1 ._field_1p9zk_86{display:flex;flex-direction:column;gap:.35rem}._backdrop_1p9zk_1 ._label_1p9zk_92{font-weight:600}._backdrop_1p9zk_1 ._sizeRow_1p9zk_96{display:flex;gap:.4rem;align-items:center}._backdrop_1p9zk_1 ._fileRow_1p9zk_102{display:flex;align-items:center;gap:.5rem}._backdrop_1p9zk_1 ._fileName_1p9zk_108{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--wysiwyg-chrome-text-muted, #555)}._backdrop_1p9zk_1 ._previewImage_1p9zk_115{display:block;max-width:100%;max-height:8rem;margin-top:.35rem;object-fit:contain;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:4px}._backdrop_1p9zk_1 ._marks_1p9zk_125{display:flex;flex-direction:column;gap:.35rem;margin:0;padding:0;border:0}._backdrop_1p9zk_1 ._mark_1p9zk_125{display:flex;align-items:center;gap:.4rem}._backdrop_1p9zk_1 ._actions_1p9zk_140{display:flex;flex-shrink:0;justify-content:flex-end;gap:.5rem;padding:.75rem 1rem 1rem}._backdrop_1p9zk_1 ._actionsSpread_1p9zk_148{justify-content:space-between}._backdrop_1p9zk_1 ._actionsEnd_1p9zk_152{display:flex;gap:.5rem}._backdrop_1p9zk_1 ._headerRow_1p9zk_157{display:flex;flex-shrink:0;align-items:flex-start;gap:.5rem;padding:.75rem .5rem .5rem 1rem}._backdrop_1p9zk_1 ._headerRow_1p9zk_157 ._header_1p9zk_35{flex:1;padding:0}._backdrop_1p9zk_1 ._close_1p9zk_170{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex-shrink:0;margin:0;padding:.25rem;border:0;border-radius:4px;background:transparent;color:inherit;cursor:pointer}._backdrop_1p9zk_1 ._close_1p9zk_170:hover,._backdrop_1p9zk_1 ._close_1p9zk_170:focus-visible{background:var(--wysiwyg-chrome-hover, #f0f0f0)}._backdrop_1p9zk_1 ._nameSection_1p9zk_187{flex-shrink:0;padding:.5rem 1rem .75rem}._backdrop_1p9zk_1 ._nameInput_1p9zk_192{box-sizing:border-box;width:100%;margin:0;padding:.35rem .5rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog, #fff);color:inherit;font:inherit}._backdrop_1p9zk_1 ._nameInput_1p9zk_192:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._backdrop_1p9zk_1 ._labelRow_1p9zk_209{display:flex;align-items:center;gap:.35rem}._backdrop_1p9zk_1 ._help_1p9zk_215{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;margin:0;padding:0;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:50%;background:var(--wysiwyg-chrome-dialog-muted, #f7f7f7);color:inherit;font:.7rem/1 system-ui,sans-serif;font-weight:700;cursor:help}._backdrop_1p9zk_1 ._textInput_1p9zk_233{box-sizing:border-box;width:100%;margin:0;padding:.35rem .5rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog, #fff);color:inherit;font:inherit}._backdrop_1p9zk_1 ._fullSelect_1p9zk_245{width:100%}._backdrop_1p9zk_1 ._error_1p9zk_249{color:var(--wysiwyg-chrome-danger, #b33);font-size:.8rem}._backdrop_1p9zk_1 ._emptyHint_1p9zk_254{margin:0;color:var(--wysiwyg-chrome-text-muted, #666)}._backdrop_1p9zk_1 ._action_1p9zk_140[aria-pressed=true],._backdrop_1p9zk_1 ._action_1p9zk_140[aria-checked=true]{border-color:var(--wysiwyg-chrome-primary, #4a7fd4);background:var(--wysiwyg-chrome-primary-soft, #e8eef8)}._backdrop_1p9zk_1 ._textarea_1p9zk_265{box-sizing:border-box;width:100%;min-height:6.5rem;margin:0;padding:.4rem .5rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog, #fff);color:inherit;font:.8rem/1.4 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;resize:vertical}._backdrop_1p9zk_1 ._actionDanger_1p9zk_279{border-color:var(--wysiwyg-chrome-danger, #c44);background:var(--wysiwyg-chrome-dialog, #fff);color:var(--wysiwyg-chrome-danger, #b33)}._backdrop_1p9zk_1 ._confirmBody_1p9zk_285{flex-shrink:0;padding:1rem}._backdrop_1p9zk_1 ._emptyPanel_1p9zk_290{min-height:4rem}._backdrop_1p9zk_1 ._nestedPanel_1p9zk_294{display:flex;flex:1 1 auto;flex-direction:column;min-height:0;margin:.85rem 1rem .15rem;overflow:hidden;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px}._backdrop_1p9zk_1 ._nestedPanel_1p9zk_294 ._tabs_1p9zk_43{padding-top:.4rem}._spinnerWrap_1p9zk_309{display:flex;align-items:center;justify-content:center;padding:.5rem .75rem}._spinner_1p9zk_309{width:1.1rem;height:1.1rem;border:2px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-top-color:var(--wysiwyg-chrome-primary, #4a7fd4);border-radius:50%;animation:_spin_1p9zk_309 .7s linear infinite}@keyframes _spin_1p9zk_309{to{transform:rotate(360deg)}}._backdrop_1p9zk_1 ._action_1p9zk_140{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:5.5rem;margin:0;padding:.35rem .75rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog-muted, #f7f7f7);color:inherit;font:inherit;cursor:pointer}._backdrop_1p9zk_1 ._actionPrimary_1p9zk_344{border-color:var(--wysiwyg-chrome-primary, #4a7fd4);background:var(--wysiwyg-chrome-primary, #4a7fd4);color:var(--wysiwyg-chrome-primary-fg, #fff)}._backdrop_1p9zk_1 ._action_1p9zk_140:disabled{cursor:not-allowed;opacity:.5}._backdrop_1p9zk_1 ._action_1p9zk_140:focus-visible,._backdrop_1p9zk_1 ._tab_1p9zk_43:focus-visible,._backdrop_1p9zk_1 ._close_1p9zk_170:focus-visible,._backdrop_1p9zk_1 ._iconButton_1p9zk_358:focus-visible,._backdrop_1p9zk_1 ._select_1p9zk_359:focus-visible,._backdrop_1p9zk_1 ._lengthInput_1p9zk_360:focus-visible,._backdrop_1p9zk_1 ._lengthUnit_1p9zk_361:focus-visible,._backdrop_1p9zk_1 ._textInput_1p9zk_233:focus-visible,._backdrop_1p9zk_1 ._textarea_1p9zk_265:focus-visible,._backdrop_1p9zk_1 ._help_1p9zk_215:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._backdrop_1p9zk_1 ._group_1p9zk_369{display:flex;flex-direction:column;gap:.75rem;margin:0;padding:.75rem;border:1px solid var(--wysiwyg-chrome-border, #e5e5e5);border-radius:4px}._backdrop_1p9zk_1 ._nestedGroup_1p9zk_379{display:flex;flex-direction:column;gap:.5rem;margin:0;padding:.6rem .7rem;border:1px solid var(--wysiwyg-chrome-border, #ececec);border-radius:4px}._backdrop_1p9zk_1 ._subLabel_1p9zk_389{font-weight:600}._backdrop_1p9zk_1 ._iconRow_1p9zk_393{display:flex;gap:.25rem}._backdrop_1p9zk_1 ._iconButton_1p9zk_358{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin:0;padding:0;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog-muted, #f7f7f7);color:inherit;cursor:pointer}._backdrop_1p9zk_1 ._iconButton_1p9zk_358[aria-checked=true],._backdrop_1p9zk_1 ._iconButton_1p9zk_358[aria-pressed=true]{border-color:var(--wysiwyg-chrome-primary, #4a7fd4);background:var(--wysiwyg-chrome-primary-soft, #e8eef8)}._backdrop_1p9zk_1 ._iconButton_1p9zk_358:disabled{cursor:not-allowed;opacity:.5}._backdrop_1p9zk_1 ._lengthField_1p9zk_425{display:flex;flex-direction:column;gap:.25rem}._backdrop_1p9zk_1 ._sideLabel_1p9zk_431{font-weight:600}._backdrop_1p9zk_1 ._lengthRow_1p9zk_435{display:flex;gap:.35rem;align-items:center}._backdrop_1p9zk_1 ._lengthInput_1p9zk_360,._backdrop_1p9zk_1 ._select_1p9zk_359,._backdrop_1p9zk_1 ._lengthUnit_1p9zk_361{box-sizing:border-box;margin:0;padding:.3rem .4rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog, #fff);color:inherit;font:inherit}._backdrop_1p9zk_1 ._lengthInput_1p9zk_360{width:4.75rem}._backdrop_1p9zk_1 ._select_1p9zk_359,._backdrop_1p9zk_1 ._lengthUnit_1p9zk_361{min-width:4.5rem}._backdrop_1p9zk_1 ._sideGrid_1p9zk_463,._backdrop_1p9zk_1 ._shadowGrid_1p9zk_464{display:grid;grid-template-columns:1fr 1fr;gap:.55rem .75rem}@media(max-width:28rem){._backdrop_1p9zk_1 ._sideGrid_1p9zk_463,._backdrop_1p9zk_1 ._shadowGrid_1p9zk_464{grid-template-columns:1fr}}._frame_bwkh8_1{position:fixed;z-index:1140;box-sizing:border-box;pointer-events:none;border:1px solid #4a90d9}._handle_bwkh8_9{position:absolute;box-sizing:border-box;padding:0;pointer-events:auto;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;box-shadow:none}._handle_bwkh8_9:focus{outline:none}._handle_bwkh8_9:focus-visible{outline:2px solid #8ab4ff;outline-offset:1px}._handleEast_bwkh8_29{top:0;right:-4px;width:8px;height:calc(100% - 10px);cursor:e-resize}._handleSouth_bwkh8_37{left:0;bottom:-4px;width:calc(100% - 10px);height:8px;cursor:s-resize}._handleSouthEast_bwkh8_45{right:-5px;bottom:-5px;z-index:1;width:10px;height:10px;cursor:se-resize;border:1px solid #4a90d9;background:#fff}._grid_1bpma_1{display:grid;grid-template-columns:repeat(10,1.15rem);gap:2px;width:max-content}._cell_1bpma_8{width:1.15rem;height:1.15rem;padding:0;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);background:var(--wysiwyg-chrome-input, #fff);cursor:pointer}._cell_1bpma_8[data-active=true]{background:var(--wysiwyg-chrome-selected, #cfe3ff);border-color:var(--wysiwyg-chrome-primary, #4a90d9)}._cell_1bpma_8:focus-visible{outline:2px solid var(--wysiwyg-chrome-primary, #4a90d9);outline-offset:1px}._sizeLabel_1bpma_27{margin:.35rem 0 0;color:var(--wysiwyg-chrome-text, #444);font-variant-numeric:tabular-nums}._sizeFields_1bpma_33{align-items:flex-end}._numberInput_1bpma_37{box-sizing:border-box;width:4.5rem;margin:0;padding:.35rem .4rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-input, #fff);color:inherit;font:inherit}._numberInput_1bpma_37:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._backdrop_9d3gw_1{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;display:flex;align-items:center;justify-content:center;padding:1rem;background:var(--wysiwyg-chrome-backdrop, rgb(0 0 0 / 32%))}._dialog_9d3gw_12{display:flex;flex-direction:column;width:min(90vw,72rem);height:min(90vh,56rem);max-height:calc(100% - 2rem);margin:0;padding:0;overflow:hidden;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:6px;background:var(--wysiwyg-chrome-dialog, #fff);box-shadow:0 8px 24px var(--wysiwyg-chrome-shadow, rgb(0 0 0 / 18%));color:var(--wysiwyg-chrome-dialog-text, #222);font:.875rem/1.4 system-ui,sans-serif}._headerRow_9d3gw_29{display:flex;align-items:flex-start;gap:.5rem;padding:.75rem .5rem .5rem 1rem}._header_9d3gw_29{flex:1;margin:0;padding:0;font-size:1rem;font-weight:600}._close_9d3gw_44{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex-shrink:0;margin:0;padding:.25rem;border:0;border-radius:4px;background:transparent;color:inherit;cursor:pointer}._close_9d3gw_44:hover,._close_9d3gw_44:focus-visible{background:var(--wysiwyg-chrome-hover, #f0f0f0)}._close_9d3gw_44:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._body_9d3gw_66{flex:1;min-height:0;overflow:hidden;border-top:1px solid var(--wysiwyg-chrome-border, #e5e5e5);border-bottom:1px solid var(--wysiwyg-chrome-border, #e5e5e5);background:var(--wysiwyg-chrome-dialog-muted, #f3f3f3)}._frame_9d3gw_75{display:block;width:100%;height:100%;border:0;background:#fff}._actions_9d3gw_83{display:flex;justify-content:flex-end;gap:.5rem;padding:.75rem 1rem 1rem}._action_9d3gw_83{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:5.5rem;margin:0;padding:.35rem .75rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog-muted, #f7f7f7);color:inherit;font:inherit;cursor:pointer}._action_9d3gw_83:hover,._action_9d3gw_83:focus-visible{background:var(--wysiwyg-chrome-dialog, #fff)}._action_9d3gw_83:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._panel_6xdnw_1{position:fixed;right:16px;bottom:16px;z-index:10000;width:min(360px,calc(100vw - 32px));max-height:min(480px,calc(100vh - 32px));display:flex;flex-direction:column;border:1px solid var(--wysiwyg-border-color, #d0d0d0);border-radius:8px;background:var(--wysiwyg-surface-background, #fff);color:var(--wysiwyg-text-color, #222);box-shadow:0 8px 24px #0000001f}._header_6xdnw_17{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 12px 8px;border-bottom:1px solid var(--wysiwyg-border-color, #e8e8e8)}._title_6xdnw_26{margin:0;font-size:.9375rem;font-weight:600}._close_6xdnw_32{display:flex;align-items:center;justify-content:center;padding:4px;border:none;border-radius:4px;background:transparent;color:inherit;cursor:pointer}._close_6xdnw_32:hover{background:#0000000f}._messages_6xdnw_48{flex:1;overflow:auto;padding:12px;display:flex;flex-direction:column;gap:12px}._empty_6xdnw_57{margin:0;color:var(--wysiwyg-muted-color, #666);font-size:.875rem}._message_6xdnw_48{display:flex;flex-direction:column;gap:4px}._messageHeader_6xdnw_69{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:.8125rem}._author_6xdnw_77{font-weight:600}._time_6xdnw_81{color:var(--wysiwyg-muted-color, #666);font-size:.75rem}._body_6xdnw_86{margin:0;font-size:.875rem;line-height:1.45}._reply_6xdnw_92{display:flex;flex-direction:column;gap:8px;padding:12px;border-top:1px solid var(--wysiwyg-border-color, #e8e8e8)}._input_6xdnw_100{width:100%;min-height:72px;padding:8px;border:1px solid var(--wysiwyg-border-color, #d0d0d0);border-radius:6px;font:inherit;resize:vertical;box-sizing:border-box}._post_6xdnw_111{align-self:flex-end;padding:6px 14px;border:none;border-radius:6px;background:var(--wysiwyg-accent-color, #2563eb);color:#fff;font-size:.875rem;font-weight:600;cursor:pointer}._post_6xdnw_111:disabled{opacity:.5;cursor:not-allowed}._backdrop_11w4e_1{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;display:flex;align-items:center;justify-content:center;padding:1rem;background:var(--wysiwyg-chrome-backdrop, rgb(0 0 0 / 32%))}._dialog_11w4e_12{display:flex;flex-direction:column;box-sizing:border-box;width:min(52rem,100%);max-width:100%;min-width:0;max-height:100%;margin:0;padding:0;overflow:hidden;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:6px;background:var(--wysiwyg-chrome-dialog, #fff);box-shadow:0 8px 24px var(--wysiwyg-chrome-shadow, rgb(0 0 0 / 18%));color:var(--wysiwyg-chrome-dialog-text, #222);font:.875rem/1.4 system-ui,sans-serif}._header_11w4e_31{flex-shrink:0;margin:0;padding:.75rem 1rem .5rem;font-size:1rem;font-weight:600}._body_11w4e_39{display:flex;flex:1 1 auto;flex-direction:column;gap:.75rem;min-height:0;padding:.75rem 1rem;overflow:auto}._group_11w4e_49{border:1px solid var(--wysiwyg-chrome-border, #e5e5e5);border-radius:6px;background:var(--wysiwyg-chrome-dialog-group, #fafafa)}._groupDragging_11w4e_55{opacity:.55}._groupDropTarget_11w4e_59{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-2px}._groupHeader_11w4e_64{display:flex;align-items:center;gap:.4rem;padding:.45rem .6rem;border-bottom:1px solid var(--wysiwyg-chrome-border, #ececec)}._groupTitle_11w4e_72{flex:1;font-weight:600}._dragHandle_11w4e_77,._moveButton_11w4e_78{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;width:1.6rem;height:1.6rem;margin:0;padding:0;border:1px solid transparent;border-radius:4px;background:transparent;color:var(--wysiwyg-chrome-text-muted, #555);cursor:grab}._moveButton_11w4e_78{cursor:pointer}._dragHandle_11w4e_77:hover,._moveButton_11w4e_78:hover,._dragHandle_11w4e_77:focus-visible,._moveButton_11w4e_78:focus-visible{border-color:var(--wysiwyg-chrome-divider, #d0d0d0);background:var(--wysiwyg-chrome-dialog, #fff);color:var(--wysiwyg-chrome-text-strong, #111)}._dragHandle_11w4e_77:focus-visible,._moveButton_11w4e_78:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-2px}._dragHandle_11w4e_77:disabled,._moveButton_11w4e_78:disabled{cursor:not-allowed;opacity:.4}._items_11w4e_119{display:flex;flex-wrap:wrap;gap:.75rem 1rem;padding:.75rem .85rem .85rem}._item_11w4e_119{display:flex;flex-direction:column;align-items:center;gap:.3rem;min-width:4.5rem;max-width:6.5rem}._itemIcon_11w4e_135{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;color:var(--wysiwyg-chrome-icon, #333)}._itemTitle_11w4e_144{text-align:center;font-size:.75rem;line-height:1.25;overflow-wrap:anywhere}._itemCheckbox_11w4e_151{margin:0}._actions_11w4e_155{display:flex;flex-shrink:0;justify-content:space-between;gap:.5rem;padding:.75rem 1rem 1rem}._action_11w4e_155{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:5.5rem;margin:0;padding:.35rem .75rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog-muted, #f7f7f7);color:inherit;font:inherit;cursor:pointer}._action_11w4e_155:hover,._action_11w4e_155:focus-visible{background:var(--wysiwyg-chrome-dialog, #fff)}._action_11w4e_155:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._action_11w4e_155:disabled{cursor:not-allowed;opacity:.5}._spinnerWrap_11w4e_191{display:flex;align-items:center;justify-content:center;min-height:6rem}._spinner_11w4e_191{width:1.1rem;height:1.1rem;border:2px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-top-color:var(--wysiwyg-chrome-primary, #4a7fd4);border-radius:50%;animation:_spin_11w4e_191 .7s linear infinite}@keyframes _spin_11w4e_191{to{transform:rotate(360deg)}}._wrap_1gtdc_1._wrap_1gtdc_1{display:inline-flex;flex-shrink:0;align-items:stretch}._wrap_1gtdc_1._wrapToolbar_1gtdc_7{align-self:stretch;padding:5px .35rem 0}._wrap_1gtdc_1 ._field_1gtdc_12{position:relative;display:flex;flex:0 0 auto;align-items:stretch;height:1.6rem}._wrap_1gtdc_1 ._trigger_1gtdc_20{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;min-width:8.5rem;height:100%;margin:0;padding:0 1.35rem 0 .45rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.2 system-ui,sans-serif;text-align:start;cursor:pointer}._wrap_1gtdc_1 ._trigger_1gtdc_20:focus{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-1px}._wrap_1gtdc_1 ._trigger_1gtdc_20:disabled{cursor:not-allowed;opacity:.5}._wrap_1gtdc_1 ._chevron_1gtdc_46{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;width:1.15rem;pointer-events:none;color:var(--wysiwyg-chrome-text, #444)}._wrap_1gtdc_1 ._chevron_1gtdc_46:after{content:"";display:block;width:0;height:0;border-style:solid;border-width:.28rem .22rem 0;border-color:currentColor transparent transparent}._list_1gtdc_69{position:fixed;z-index:1300;min-width:10rem;max-height:min(18rem,calc(100vh - 8px));margin:0;padding:.15rem 0;overflow:auto;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 12%));list-style:none}._option_1gtdc_84{display:block;width:100%;margin:0;padding:.25rem .75rem;border:0;background:transparent;color:var(--wysiwyg-chrome-dialog-text, #222);font-family:system-ui,sans-serif;line-height:1.25;text-align:start;cursor:pointer}._option_1gtdc_84:hover,._option_1gtdc_84:focus-visible{background:var(--wysiwyg-chrome-selected, #e8f0fe);outline:none}._option_1gtdc_84[aria-checked=true]{font-weight:600}._option_1gtdc_84:disabled{cursor:not-allowed;opacity:.5}._separator_1gtdc_113{height:1px;margin:.25rem .5rem;padding:0;background:var(--wysiwyg-chrome-divider, #d0d0d0);border:0;list-style:none}._root_3hjd3_1{all:revert;position:relative;box-sizing:border-box;display:flex;flex-direction:column;flex:1 1 auto;width:100%;min-width:0;height:100%;max-height:100%;min-height:16rem;border:var(--wysiwyg-border-width, 1px) solid var(--wysiwyg-border-color, var(--wysiwyg-chrome-divider, #d0d0d0));border-radius:var(--wysiwyg-border-radius, 6px);box-shadow:var(--wysiwyg-border-shadow, none);overflow:hidden;background:#fff;color:#111;font-family:system-ui,sans-serif;font-size:1rem;font-weight:400;font-style:normal;font-variant:normal;line-height:1.5;letter-spacing:normal;text-align:start;text-indent:0;text-transform:none;text-decoration:none;text-shadow:none;white-space:normal;word-spacing:normal;direction:ltr}._root_3hjd3_1._fullscreen_3hjd3_36{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;width:100%;height:100%;min-height:0;border:none;border-radius:0;box-shadow:none}._root_3hjd3_1 ._exitFullscreen_3hjd3_48{position:absolute;z-index:2;top:.4rem;right:.4rem;display:inline-flex;align-items:center;justify-content:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:2rem;height:2rem;margin:0;padding:0;border:0;border-radius:4px;background:var(--wysiwyg-chrome-menu, #fff);color:var(--wysiwyg-chrome-text, #444);font:inherit;cursor:pointer;box-shadow:0 1px 3px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 20%))}._root_3hjd3_1 ._exitFullscreen_3hjd3_48:hover{background:var(--wysiwyg-chrome-hover, #f4f4f4)}._root_3hjd3_1 ._exitFullscreen_3hjd3_48:focus{outline:none;box-shadow:inset 0 0 0 2px var(--wysiwyg-chrome-focus, #8ab4ff)}._root_3hjd3_1 ._exitFullscreenIcon_3hjd3_79{display:block;width:1rem;height:1rem;flex-shrink:0}._root_3hjd3_1 *:not(:is(svg,svg *)),._root_3hjd3_1 *:before,._root_3hjd3_1 *:after{all:revert;box-sizing:border-box}._root_3hjd3_1 ._menuChrome_3hjd3_94{display:flex;flex-direction:column;flex-shrink:0;align-items:stretch;z-index:2;width:100%;min-width:0}._root_3hjd3_1 ._body_3hjd3_105._body_3hjd3_105{position:relative;display:grid;flex:1 1 auto;min-width:0;min-height:0;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}._root_3hjd3_1 ._body_3hjd3_105._body_3hjd3_105[data-icon-dock=top]{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr)}._root_3hjd3_1 ._body_3hjd3_105._body_3hjd3_105[data-icon-dock=bottom]{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr)}._root_3hjd3_1 ._body_3hjd3_105._body_3hjd3_105[data-icon-dock=left]{grid-template-columns:12rem minmax(0,1fr);grid-template-rows:minmax(min-content,1fr)}._root_3hjd3_1 ._body_3hjd3_105._body_3hjd3_105[data-icon-dock=right]{grid-template-columns:minmax(0,1fr) 12rem;grid-template-rows:minmax(min-content,1fr)}._root_3hjd3_1 ._iconChrome_3hjd3_135._iconChrome_3hjd3_135{display:flex;flex-direction:column;align-items:stretch;z-index:1;min-width:0}._root_3hjd3_1[data-toolbar-position=top] ._iconChrome_3hjd3_135{width:100%;border-bottom:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._root_3hjd3_1[data-toolbar-position=bottom] ._iconChrome_3hjd3_135{width:100%;border-top:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._root_3hjd3_1[data-toolbar-position=left] ._iconChrome_3hjd3_135._iconChrome_3hjd3_135,._root_3hjd3_1[data-toolbar-position=right] ._iconChrome_3hjd3_135._iconChrome_3hjd3_135{align-self:stretch;box-sizing:border-box;width:100%;min-width:12rem;overflow-x:hidden;overflow-y:auto}._root_3hjd3_1[data-toolbar-position=left] ._iconChrome_3hjd3_135{border-right:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._root_3hjd3_1[data-toolbar-position=right] ._iconChrome_3hjd3_135{border-left:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._root_3hjd3_1[data-toolbar-position=left] ._iconChrome_3hjd3_135>*,._root_3hjd3_1[data-toolbar-position=right] ._iconChrome_3hjd3_135>*{width:100%;min-width:0;height:auto;min-height:100%}._root_3hjd3_1 ._workspace_3hjd3_179{position:relative;display:flex;flex:1 1 auto;flex-direction:column;min-width:0;min-height:0;overflow:auto;padding:1rem;background:#f0f0f0}._root_3hjd3_1 ._workspacePageSized_3hjd3_191{align-items:center}._root_3hjd3_1 ._pageCanvasViewport_3hjd3_195{display:flex;flex:1 0 auto;flex-direction:column;align-items:center;width:100%;min-height:min-content;transform-origin:top center}._root_3hjd3_1 ._htmlFileDropOverlay_3hjd3_205{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:flex;align-items:center;justify-content:center;pointer-events:none;background:#ffffffd9;color:#111;font-size:1rem;font-weight:600}._root_3hjd3_1 ._surface_3hjd3_219{width:100%;min-height:100%;background:#fff;box-shadow:0 1px 3px #0000001f}._root_3hjd3_1 ._visual_3hjd3_226{flex:1 0 auto;min-height:100%;padding:.75rem;outline:none;user-select:text;-webkit-user-select:text}._root_3hjd3_1 ._visual_3hjd3_226[data-page-sized]{flex:0 0 auto;width:auto;min-height:auto;margin:0 auto;padding:0;box-sizing:border-box}._root_3hjd3_1 ._visual_3hjd3_226:focus{box-shadow:inset 0 0 0 2px #8ab4ff}._root_3hjd3_1 ._visual_3hjd3_226:empty:before{content:attr(data-placeholder);color:#888}._root_3hjd3_1 ._visual_3hjd3_226[aria-disabled=true]{opacity:.6;background:#f7f7f7}._root_3hjd3_1 ._multiPageContainer_3hjd3_258{display:flex;flex-direction:column;align-items:center;width:100%;min-height:100%}._root_3hjd3_1 ._pageBlock_3hjd3_266{display:flex;flex-direction:column;width:100%;align-items:center}._root_3hjd3_1 ._pageGap_3hjd3_273{flex-shrink:0;height:1.5rem;background:var(--wysiwyg-toolbar-background, var(--wysiwyg-chrome-toolbar, #f4f4f4))}._root_3hjd3_1 ._pageSurface_3hjd3_279{flex-shrink:0;min-height:12rem}._root_3hjd3_1 ._html_3hjd3_205{display:block;-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;flex:1 1 auto;width:100%;margin:0;min-height:100%;padding:.75rem;border:0;border-radius:0;resize:none;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.875rem;font-weight:400;font-style:normal;line-height:1.5;letter-spacing:normal;color:#111;outline:none;background:#fff}._root_3hjd3_1 ._html_3hjd3_205:focus{box-shadow:inset 0 0 0 2px #8ab4ff}._root_3hjd3_1 ._html_3hjd3_205:disabled{opacity:.6}._visual_3hjd3_226 p{margin:0 0 .75em}._visual_3hjd3_226 p:last-child{margin-bottom:0}._visual_3hjd3_226 h1,._visual_3hjd3_226 h2,._visual_3hjd3_226 h3,._visual_3hjd3_226 h4,._visual_3hjd3_226 h5,._visual_3hjd3_226 h6{margin:1em 0 .5em;font-weight:600;line-height:1.25;color:inherit}._visual_3hjd3_226 h1:first-child,._visual_3hjd3_226 h2:first-child,._visual_3hjd3_226 h3:first-child,._visual_3hjd3_226 h4:first-child,._visual_3hjd3_226 h5:first-child,._visual_3hjd3_226 h6:first-child{margin-top:0}._visual_3hjd3_226 h1{font-size:1.75rem}._visual_3hjd3_226 h2{font-size:1.5rem}._visual_3hjd3_226 h3{font-size:1.25rem}._visual_3hjd3_226 h4{font-size:1.125rem}._visual_3hjd3_226 h5{font-size:1rem}._visual_3hjd3_226 h6{font-size:.875rem}._visual_3hjd3_226 ul,._visual_3hjd3_226 ol{margin:0 0 .75em;padding-left:1.5em}._visual_3hjd3_226 li{margin:.25em 0}._visual_3hjd3_226 a{color:#06c;text-decoration:underline}._visual_3hjd3_226 strong,._visual_3hjd3_226 b{font-weight:700}._visual_3hjd3_226 em,._visual_3hjd3_226 i{font-style:italic}._visual_3hjd3_226 u{text-decoration:underline}._visual_3hjd3_226 s{text-decoration:line-through}._visual_3hjd3_226 blockquote{margin:0 0 .75em;padding:0 0 0 .75em;border:0;border-left:3px solid #d0d0d0;color:#444}._visual_3hjd3_226 code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.875em;background:#f4f4f4;padding:.1em .3em;border-radius:3px}._visual_3hjd3_226 pre{margin:0 0 .75em;padding:.75em;overflow:auto;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.875rem;line-height:1.5;background:#f4f4f4;border-radius:4px}._visual_3hjd3_226 pre code{background:transparent;padding:0;font-size:inherit}._visual_3hjd3_226 hr{margin:1em 0;border:0;border-top:1px solid #d0d0d0}._visual_3hjd3_226 img{max-width:100%;vertical-align:middle}._root_3hjd3_1[data-comments-visible] .wysiwyg-comment-anchor{background-color:#ffd40059;outline:1px solid rgba(255,170,0,.8)}._root_3hjd3_1[data-comments-visible] img.wysiwyg-comment-anchor{outline:2px solid rgba(255,170,0,.9);outline-offset:2px}
|
|
1
|
+
._chrome_boy0f_1{--wysiwyg-chrome-text: #444;--wysiwyg-chrome-text-strong: #111;--wysiwyg-chrome-text-muted: #555;--wysiwyg-chrome-toolbar: #f0f0f0;--wysiwyg-chrome-menu: #fff;--wysiwyg-chrome-border: #e5e5e5;--wysiwyg-chrome-divider: #d0d0d0;--wysiwyg-chrome-hover: #f0f0f0;--wysiwyg-chrome-pressed: #ececec;--wysiwyg-chrome-dialog: #fff;--wysiwyg-chrome-dialog-text: #222;--wysiwyg-chrome-dialog-border: #c8c8c8;--wysiwyg-chrome-dialog-muted: #f7f7f7;--wysiwyg-chrome-dialog-group: #fafafa;--wysiwyg-chrome-input: #fff;--wysiwyg-chrome-focus: #8ab4ff;--wysiwyg-chrome-backdrop: rgb(0 0 0 / 32%);--wysiwyg-chrome-shadow: rgb(0 0 0 / 18%);--wysiwyg-chrome-menu-shadow: rgb(0 0 0 / 8%);--wysiwyg-chrome-tooltip-bg: #222;--wysiwyg-chrome-tooltip-fg: #fff;--wysiwyg-chrome-selected: #e8f0fe;--wysiwyg-chrome-danger: #b33;--wysiwyg-chrome-primary: #4a7fd4;--wysiwyg-chrome-primary-fg: #fff;--wysiwyg-chrome-primary-soft: #e8eef8;--wysiwyg-chrome-empty: #ddd;--wysiwyg-chrome-icon: #333}._chrome_boy0f_1[data-wysiwyg-theme=dark]{--wysiwyg-chrome-text: #e4e4e4;--wysiwyg-chrome-text-strong: #fff;--wysiwyg-chrome-text-muted: #bbb;--wysiwyg-chrome-toolbar: #2b2b2b;--wysiwyg-chrome-menu: #1e1e1e;--wysiwyg-chrome-border: #3a3a3a;--wysiwyg-chrome-divider: #4a4a4a;--wysiwyg-chrome-hover: #3a3a3a;--wysiwyg-chrome-pressed: #444;--wysiwyg-chrome-dialog: #252525;--wysiwyg-chrome-dialog-text: #e8e8e8;--wysiwyg-chrome-dialog-border: #4a4a4a;--wysiwyg-chrome-dialog-muted: #1a1a1a;--wysiwyg-chrome-dialog-group: #1a1a1a;--wysiwyg-chrome-input: #1e1e1e;--wysiwyg-chrome-focus: #8ab4ff;--wysiwyg-chrome-backdrop: rgb(0 0 0 / 55%);--wysiwyg-chrome-shadow: rgb(0 0 0 / 45%);--wysiwyg-chrome-menu-shadow: rgb(0 0 0 / 40%);--wysiwyg-chrome-tooltip-bg: #eee;--wysiwyg-chrome-tooltip-fg: #111;--wysiwyg-chrome-selected: #2a3a50;--wysiwyg-chrome-danger: #f66;--wysiwyg-chrome-primary: #6a9ae0;--wysiwyg-chrome-primary-fg: #111;--wysiwyg-chrome-primary-soft: #2a3a50;--wysiwyg-chrome-empty: #555;--wysiwyg-chrome-icon: #eee}._menu_c1m45_1{position:fixed;z-index:1150;display:flex;flex-direction:column;min-width:12rem;max-height:calc(100vh - 16px);margin:0;padding:.25rem 0;overflow:auto;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:4px;background:var(--wysiwyg-chrome-menu, #fff);box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 8%));color:var(--wysiwyg-chrome-text, #444);font:.875rem/1.4 system-ui,sans-serif}._item_c1m45_19{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;align-items:center;width:100%;margin:0;padding:.4rem .75rem;border:0;border-radius:0;background:transparent;color:inherit;font:inherit;text-align:start;white-space:nowrap;cursor:pointer;box-shadow:none}._item_c1m45_19:hover,._item_c1m45_19:focus-visible{background:var(--wysiwyg-chrome-hover, #f0f0f0);color:var(--wysiwyg-chrome-text-strong, #111)}._item_c1m45_19:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-2px}._item_c1m45_19:disabled{cursor:not-allowed;opacity:.5}._item_c1m45_19:disabled:hover,._item_c1m45_19:disabled:focus-visible{background:transparent;color:inherit}._separator_c1m45_59{height:1px;margin:.25rem .5rem;background:var(--wysiwyg-chrome-divider, #d0d0d0);border:0}._picker_ag1yo_1{display:flex;flex-direction:column;gap:.45rem;box-sizing:border-box;width:14.5rem;padding:.4rem .5rem .5rem;color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.2 system-ui,sans-serif}._none_ag1yo_12,._customToggle_ag1yo_13,._eyedrop_ag1yo_14{display:flex;align-items:center;gap:.4rem;width:100%;margin:0;padding:.25rem .35rem;border:0;border-radius:3px;background:transparent;color:inherit;font:inherit;text-align:start;cursor:pointer}._none_ag1yo_12:hover,._none_ag1yo_12:focus-visible,._customToggle_ag1yo_13:hover,._customToggle_ag1yo_13:focus-visible,._eyedrop_ag1yo_14:hover,._eyedrop_ag1yo_14:focus-visible{background:var(--wysiwyg-chrome-selected, #e8f0fe);outline:none}._none_ag1yo_12[aria-checked=true],._none_ag1yo_12[aria-selected=true]{font-weight:600}._none_ag1yo_12:disabled,._customToggle_ag1yo_13:disabled,._eyedrop_ag1yo_14:disabled,._swatch_ag1yo_48:disabled,._field_ag1yo_49 input:disabled{cursor:not-allowed;opacity:.5}._grid_ag1yo_54,._recents_ag1yo_55{display:grid;grid-template-columns:repeat(8,1.25rem);gap:.22rem;justify-content:space-between}._swatch_ag1yo_48{box-sizing:border-box;width:1.25rem;height:1.25rem;padding:0;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:2px;cursor:pointer}._swatch_ag1yo_48:hover,._swatch_ag1yo_48:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._swatch_ag1yo_48[aria-checked=true],._swatch_ag1yo_48[aria-selected=true]{outline:2px solid #111;outline-offset:1px}._sectionLabel_ag1yo_84{margin:.15rem 0 0;font-weight:600}._custom_ag1yo_13{display:flex;flex-direction:column;gap:.45rem}._sv_ag1yo_95{position:relative;width:100%;height:7.5rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;cursor:crosshair;touch-action:none}._svThumb_ag1yo_105{position:absolute;width:.7rem;height:.7rem;border:2px solid #fff;border-radius:50%;box-shadow:0 0 0 1px #111;transform:translate(-50%,-50%);pointer-events:none}._hue_ag1yo_116{width:100%;height:.85rem;margin:0;padding:0;border-radius:3px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:linear-gradient(to right,red,#ff0,#0f0,#0ff,#00f,#f0f,red);cursor:pointer}._hue_ag1yo_116::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:.7rem;height:.85rem;border:2px solid #fff;border-radius:2px;background:transparent;box-shadow:0 0 0 1px #111}._hue_ag1yo_116::-moz-range-thumb{width:.7rem;height:.85rem;border:2px solid #fff;border-radius:2px;background:transparent;box-shadow:0 0 0 1px #111}._rgbRow_ag1yo_155,._hexRow_ag1yo_156{display:flex;align-items:center;gap:.3rem}._field_ag1yo_49{display:flex;flex:1 1 0;flex-direction:column;gap:.1rem;min-width:0}._field_ag1yo_49 label{font-weight:600}._field_ag1yo_49 input{box-sizing:border-box;width:100%;margin:0;padding:.15rem .25rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);color:inherit;font:inherit}._hexRow_ag1yo_156 ._field_ag1yo_49{flex:1 1 auto}._eyedrop_ag1yo_14{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23222' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15.5 4.5l4 4-9 9H6.5v-4.5z'/%3E%3Cpath d='M13.5 6.5l4 4'/%3E%3C/svg%3E") 2 18,crosshair}._wrap_hfz5s_1{position:relative;display:inline-flex;flex-shrink:0;align-items:stretch}._button_hfz5s_8{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem;min-width:1.75rem;padding:.4rem .5rem .3rem}._icon_hfz5s_18{display:block;width:1rem;height:1rem}._bar_hfz5s_24{display:block;width:1rem;height:.2rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:1px;background:transparent}._barEmpty_hfz5s_33{background:repeating-linear-gradient(-45deg,var(--wysiwyg-chrome-empty, #ddd),var(--wysiwyg-chrome-empty, #ddd) 1px,transparent 1px,transparent 3px)}._popover_hfz5s_43{position:fixed;z-index:1300;max-height:calc(100vh - 8px);overflow:auto;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:4px;background:var(--wysiwyg-chrome-dialog, #fff);box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 12%))}._field_1knrr_1{display:flex;align-items:center;justify-content:space-between;gap:.75rem}._label_1knrr_8{font-weight:600}._button_1knrr_12{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;width:2.4rem;height:1.5rem;margin:0;padding:.15rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);cursor:pointer}._button_1knrr_12:disabled{cursor:not-allowed;opacity:.5}._button_1knrr_12:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._swatch_1knrr_37{display:block;width:100%;height:100%;border-radius:2px}._swatchEmpty_1knrr_44{background:repeating-linear-gradient(-45deg,var(--wysiwyg-chrome-empty, #ddd),var(--wysiwyg-chrome-empty, #ddd) 1px,transparent 1px,transparent 3px)}._toolbar_1aggm_1{display:flex;flex-direction:column;align-items:stretch;width:100%;min-width:0}._toolbar_1aggm_1._toolbar_1aggm_1{display:flex;flex-direction:column;container-type:inline-size}._toolbar_1aggm_1._toolbar_1aggm_1[data-toolbar-position=left],._toolbar_1aggm_1._toolbar_1aggm_1[data-toolbar-position=right]{container-type:normal;width:100%;min-width:0;height:auto;min-height:100%}._toolbar_1aggm_1._toolbar_1aggm_1[data-menu-overlay-portal]{container-type:normal;width:0;height:0;min-width:0;overflow:visible}._toolbar_1aggm_1 ._menuBar_1aggm_35{display:flex;align-items:stretch;width:100%;background:var(--wysiwyg-menu-background, var(--wysiwyg-chrome-menu, #fff));border-bottom:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._toolbar_1aggm_1 ._menuBarDesktop_1aggm_43{display:flex;align-items:stretch;min-width:0}._toolbar_1aggm_1 ._brandMark_1aggm_49{display:inline-flex;flex-shrink:0;align-items:center;padding:.25rem .65rem .25rem .5rem}._toolbar_1aggm_1 ._brandMarkIcon_1aggm_56{display:block;height:2.5rem;width:auto;aspect-ratio:616.23 / 542.09;overflow:visible}._toolbar_1aggm_1 ._brandMarkIcon_1aggm_56 *{stroke:none}._toolbar_1aggm_1 ._menuBarCompact_1aggm_68{display:none;align-items:stretch}._toolbar_1aggm_1[data-compact] ._menuBarDesktop_1aggm_43{display:none}._toolbar_1aggm_1[data-compact] ._menuBarCompact_1aggm_68{display:flex}@container (max-width: 40rem){._toolbar_1aggm_1 ._menuBarDesktop_1aggm_43{display:none}._toolbar_1aggm_1 ._menuBarCompact_1aggm_68{display:flex}}._toolbar_1aggm_1 ._menuWrap_1aggm_91{position:relative;display:flex;align-items:stretch}._toolbar_1aggm_1 ._menuButton_1aggm_97,._toolbar_1aggm_1 ._iconButton_1aggm_98,._toolbar_1aggm_1 ._menuItem_1aggm_99{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;border:0;border-radius:0;background:transparent;font:inherit;font-weight:400;line-height:inherit;letter-spacing:inherit;text-transform:none;text-decoration:none;color:var(--wysiwyg-chrome-text, #444);cursor:pointer;box-shadow:none}._toolbar_1aggm_1 ._menuButton_1aggm_97,._toolbar_1aggm_1 ._menuItem_1aggm_99{color:var(--wysiwyg-menu-color, var(--wysiwyg-chrome-text, #444));font-size:var(--wysiwyg-menu-font-size, .875rem);font-family:var(--wysiwyg-menu-font-family, inherit)}._toolbar_1aggm_1 ._menuButton_1aggm_97{display:inline-flex;align-items:center;padding:.5rem .9rem;text-align:center}._toolbar_1aggm_1 ._menuButton_1aggm_97:after{content:"";display:inline-block;width:0;height:0;margin-left:.4rem;border-style:solid;border-width:.28rem .22rem 0;border-color:currentColor transparent transparent;transform:translateY(.08em)}._toolbar_1aggm_1 ._hamburgerButton_1aggm_142:after{content:none;display:none;margin:0;border:0}._toolbar_1aggm_1 ._iconNav_1aggm_149{position:relative;display:flex;flex-wrap:nowrap;align-items:flex-start;width:100%;max-width:100%;min-width:0;background:var(--wysiwyg-toolbar-background, var(--wysiwyg-chrome-toolbar, #f0f0f0))}._toolbar_1aggm_1 ._iconNavMain_1aggm_160{display:flex;flex:1 1 auto;flex-wrap:wrap;align-items:stretch;min-width:0;max-width:100%}._toolbar_1aggm_1 ._iconNavEnd_1aggm_169{display:flex;flex:0 0 auto;flex-wrap:nowrap;align-items:stretch;align-self:flex-start}._toolbar_1aggm_1 ._iconNavMain_1aggm_160+._iconNavEnd_1aggm_169:before{content:"";width:1px;align-self:stretch;margin:.35rem .15rem;background:var(--wysiwyg-chrome-divider, #d0d0d0)}._toolbar_1aggm_1 ._iconGroup_1aggm_185{display:flex;flex:0 0 auto;flex-wrap:wrap;align-items:stretch;max-width:100%}._toolbar_1aggm_1 ._iconNavEnd_1aggm_169 ._iconGroup_1aggm_185{flex-wrap:nowrap}._toolbar_1aggm_1[data-toolbar-position=left] ._iconNav_1aggm_149,._toolbar_1aggm_1[data-toolbar-position=right] ._iconNav_1aggm_149{flex:1 0 auto;flex-direction:column;flex-wrap:nowrap;align-items:stretch;width:100%;min-width:0;max-width:none;height:auto;min-height:100%}._toolbar_1aggm_1[data-toolbar-position=left] ._iconNavMain_1aggm_160,._toolbar_1aggm_1[data-toolbar-position=right] ._iconNavMain_1aggm_160{flex:1 0 auto;flex-direction:column;flex-wrap:nowrap;width:100%;min-width:0;max-width:none}._toolbar_1aggm_1[data-toolbar-position=left] ._iconNavEnd_1aggm_169,._toolbar_1aggm_1[data-toolbar-position=right] ._iconNavEnd_1aggm_169{flex-direction:column;margin-top:auto;align-self:stretch}._toolbar_1aggm_1[data-toolbar-position=left] ._iconGroup_1aggm_185,._toolbar_1aggm_1[data-toolbar-position=right] ._iconGroup_1aggm_185{flex-direction:column;flex-wrap:nowrap;width:100%;min-width:0;max-width:none}._toolbar_1aggm_1[data-toolbar-position=left] ._iconGroup_1aggm_185:not(:last-child):after,._toolbar_1aggm_1[data-toolbar-position=right] ._iconGroup_1aggm_185:not(:last-child):after{width:auto;height:1px;margin:.15rem .35rem}._toolbar_1aggm_1[data-toolbar-position=left] ._iconNavMain_1aggm_160+._iconNavEnd_1aggm_169:before,._toolbar_1aggm_1[data-toolbar-position=right] ._iconNavMain_1aggm_160+._iconNavEnd_1aggm_169:before{width:auto;height:1px;align-self:stretch;margin:.15rem .35rem}._toolbar_1aggm_1[data-toolbar-position=left] ._iconButton_1aggm_98[aria-pressed=true],._toolbar_1aggm_1[data-toolbar-position=right] ._iconButton_1aggm_98[aria-pressed=true]{box-shadow:inset -2px 0 0 var(--wysiwyg-chrome-text-strong, #111)}._toolbar_1aggm_1 ._iconGroup_1aggm_185:not(:last-child):after{content:"";width:1px;align-self:stretch;margin:.35rem .15rem;background:var(--wysiwyg-chrome-divider, #d0d0d0)}._toolbar_1aggm_1 ._iconButton_1aggm_98{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;padding:.5rem .65rem}._toolbar_1aggm_1 ._iconNav_1aggm_149 ._iconButton_1aggm_98{padding:calc(.5rem + 2px) .65rem calc(.5rem - 2px)}._tooltipTrigger_1aggm_276{display:inline-flex;flex-shrink:0;align-items:stretch}._toolbar_1aggm_1 ._iconButton_1aggm_98[aria-pressed=true]{color:var(--wysiwyg-chrome-text-strong, #111);background:var(--wysiwyg-chrome-pressed, #ececec);box-shadow:inset 0 -2px 0 var(--wysiwyg-chrome-text-strong, #111)}._toolbar_1aggm_1 ._menu_1aggm_35{position:absolute;top:100%;left:0;z-index:2;display:flex;flex-direction:column;min-width:10rem;margin:0;padding:.25rem 0;overflow:visible;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:4px;background:var(--wysiwyg-menu-background, var(--wysiwyg-chrome-menu, #fff));box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 8%))}._toolbar_1aggm_1 ._submenuWrap_1aggm_305{position:relative}._toolbar_1aggm_1 ._submenu_1aggm_305{top:0;left:100%;z-index:3}._toolbar_1aggm_1 ._submenuTrigger_1aggm_315{justify-content:space-between}._toolbar_1aggm_1 ._submenuTrigger_1aggm_315:after{content:"";display:inline-block;width:0;height:0;margin-left:.75rem;border-style:solid;border-width:.22rem 0 .22rem .28rem;border-color:transparent transparent transparent currentColor}._toolbar_1aggm_1 ._menuOverlay_1aggm_330{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1100;display:flex;flex-direction:column;background:var(--wysiwyg-menu-background, var(--wysiwyg-chrome-menu, #fff));color:var(--wysiwyg-menu-color, var(--wysiwyg-chrome-text, #444));font-size:var(--wysiwyg-menu-font-size, .875rem);font-family:var(--wysiwyg-menu-font-family, inherit)}._toolbar_1aggm_1 ._menuOverlayHeader_1aggm_342{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:.5rem;padding:.15rem .15rem .15rem .9rem;border-bottom:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._toolbar_1aggm_1 ._menuOverlayTitle_1aggm_352{font-size:inherit;font-weight:600;color:inherit}._toolbar_1aggm_1 ._menuOverlayBody_1aggm_358{display:flex;flex:1 1 auto;flex-direction:column;min-height:0;overflow:auto}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._menuWrap_1aggm_91{flex-direction:column;align-items:stretch;width:100%}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._menuButton_1aggm_97{width:100%;justify-content:space-between}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._menu_1aggm_35{position:static;top:auto;left:auto;z-index:auto;min-width:0;width:100%;border:0;border-radius:0;box-shadow:none;padding:0 0 .25rem}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._submenuWrap_1aggm_305{position:static}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._submenu_1aggm_305{position:static;top:auto;left:auto;z-index:auto}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._submenuTrigger_1aggm_315:after{transform:rotate(90deg)}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._menuItem_1aggm_99{white-space:normal}._toolbar_1aggm_1 ._menuSeparator_1aggm_409{height:1px;margin:.25rem .5rem;background:var(--wysiwyg-chrome-divider, #d0d0d0);border:0}._toolbar_1aggm_1 ._menuItem_1aggm_99{display:flex;align-items:center;gap:.5rem;width:100%;padding:.4rem .75rem;text-align:start;white-space:nowrap}._toolbar_1aggm_1 ._menuItem_1aggm_99:hover,._toolbar_1aggm_1 ._menuItem_1aggm_99:focus-visible{background:var(--wysiwyg-chrome-hover, #f0f0f0);color:var(--wysiwyg-chrome-text-strong, #111)}._toolbar_1aggm_1 ._menuItem_1aggm_99[aria-checked=true]{color:var(--wysiwyg-chrome-text-strong, #111);font-weight:600}._toolbar_1aggm_1 ._menuButton_1aggm_97:hover,._toolbar_1aggm_1 ._iconButton_1aggm_98:hover,._toolbar_1aggm_1 ._menuButton_1aggm_97:focus-visible,._toolbar_1aggm_1 ._iconButton_1aggm_98:focus-visible{color:var(--wysiwyg-chrome-text-strong, #111);background:var(--wysiwyg-chrome-hover, #f0f0f0)}._toolbar_1aggm_1 ._menuButton_1aggm_97:focus-visible,._toolbar_1aggm_1 ._iconButton_1aggm_98:focus-visible,._toolbar_1aggm_1 ._menuItem_1aggm_99:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-2px}._toolbar_1aggm_1 ._menuButton_1aggm_97:disabled,._toolbar_1aggm_1 ._iconButton_1aggm_98:disabled,._toolbar_1aggm_1 ._menuItem_1aggm_99:disabled{cursor:not-allowed;opacity:.5}._toolbar_1aggm_1 ._menuItem_1aggm_99:disabled:hover,._toolbar_1aggm_1 ._menuItem_1aggm_99:disabled:focus-visible{background:transparent;color:inherit}._toolbar_1aggm_1 ._icon_1aggm_98,._toolbar_1aggm_1 ._icon_1aggm_98 *{overflow:visible;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}._toolbar_1aggm_1 ._icon_1aggm_98{display:block;width:1rem;height:1rem;flex-shrink:0}._tooltip_1aggm_276{position:fixed;z-index:1100;padding:.2rem .45rem;border-radius:3px;background:var(--wysiwyg-chrome-tooltip-bg, #222);color:var(--wysiwyg-chrome-tooltip-fg, #fff);font:.75rem/1.2 system-ui,sans-serif;white-space:nowrap;pointer-events:none}._tooltipElevated_1aggm_494{z-index:1300;max-width:18rem;white-space:normal}._wrap_1vjt0_1._wrap_1vjt0_1{display:inline-flex;flex-shrink:0;align-items:stretch}._wrap_1vjt0_1._wrapToolbar_1vjt0_7{align-self:stretch;padding:5px .35rem 0}._wrap_1vjt0_1 ._field_1vjt0_12{position:relative;display:flex;flex:0 0 auto;align-items:stretch;height:1.6rem}._wrap_1vjt0_1 ._trigger_1vjt0_20{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;min-width:9.5rem;max-width:12rem;height:100%;margin:0;padding:0 1.35rem 0 .45rem;overflow:hidden;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.2 system-ui,sans-serif;text-align:start;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}._wrap_1vjt0_1 ._trigger_1vjt0_20:focus{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-1px}._wrap_1vjt0_1 ._trigger_1vjt0_20:disabled{cursor:not-allowed;opacity:.5}._wrap_1vjt0_1 ._chevron_1vjt0_50{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;width:1.15rem;pointer-events:none;color:var(--wysiwyg-chrome-text, #444)}._wrap_1vjt0_1 ._chevron_1vjt0_50:after{content:"";display:block;width:0;height:0;border-style:solid;border-width:.28rem .22rem 0;border-color:currentColor transparent transparent}._list_1vjt0_73{position:fixed;z-index:1300;min-width:12rem;max-height:min(18rem,calc(100vh - 8px));margin:0;padding:.15rem 0;overflow:auto;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 12%));list-style:none}._listInline_1vjt0_88{position:static;z-index:auto;min-width:100%;max-height:min(14rem,calc(100vh - 8px));box-shadow:none}._option_1vjt0_96{display:block;width:100%;margin:0;padding:.3rem .75rem;border:0;background:transparent;color:var(--wysiwyg-chrome-dialog-text, #222);font-size:.875rem;line-height:1.3;text-align:start;cursor:pointer}._option_1vjt0_96:hover,._option_1vjt0_96:focus-visible{background:var(--wysiwyg-chrome-selected, #e8f0fe);outline:none}._option_1vjt0_96[aria-checked=true]{font-weight:600}._option_1vjt0_96:disabled{cursor:not-allowed;opacity:.5}._separator_1vjt0_125{height:1px;margin:.25rem .5rem;padding:0;background:var(--wysiwyg-chrome-divider, #d0d0d0);border:0;list-style:none}._wrap_58i0x_1._wrap_58i0x_1{display:inline-flex;flex-direction:row;flex-shrink:0;align-items:center;gap:.25rem}._wrap_58i0x_1._wrapToolbar_58i0x_9{align-self:stretch;padding:5px .35rem 0}._wrap_58i0x_1 ._field_58i0x_14{position:relative;display:flex;flex:0 0 auto;align-items:stretch;height:1.6rem}._wrap_58i0x_1 ._input_58i0x_22{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;width:3.4rem;height:100%;margin:0;padding:0 1.35rem 0 .35rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.2 system-ui,sans-serif}._wrap_58i0x_1 ._input_58i0x_22:focus{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-1px}._wrap_58i0x_1 ._toggle_58i0x_41,._wrap_58i0x_1 ._chevron_58i0x_42{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:1.15rem;margin:0;padding:0;border:0;border-radius:0 3px 3px 0;background:transparent;color:var(--wysiwyg-chrome-text, #444)}._wrap_58i0x_1 ._toggle_58i0x_41{cursor:pointer}._wrap_58i0x_1 ._chevron_58i0x_42{pointer-events:none}._wrap_58i0x_1 ._toggle_58i0x_41:after,._wrap_58i0x_1 ._chevron_58i0x_42:after{content:"";display:block;width:0;height:0;margin:0;border-style:solid;border-width:.28rem .22rem 0;border-color:currentColor transparent transparent}._wrap_58i0x_1 ._unit_58i0x_80{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;width:3.4rem;height:100%;margin:0;padding:0 1.35rem 0 .35rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.2 system-ui,sans-serif}._wrap_58i0x_1 ._unit_58i0x_80::-ms-expand{display:none}._wrap_58i0x_1 ._unit_58i0x_80:focus{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-1px}._wrap_58i0x_1 ._input_58i0x_22:disabled,._wrap_58i0x_1 ._toggle_58i0x_41:disabled,._wrap_58i0x_1 ._unit_58i0x_80:disabled{cursor:not-allowed;opacity:.5}._list_58i0x_110{position:fixed;z-index:1300;min-width:4.5rem;max-height:min(12rem,calc(100vh - 8px));margin:0;padding:.15rem 0;overflow:auto;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 12%));list-style:none}._list_58i0x_110 ._option_58i0x_125{display:block;width:100%;margin:0;padding:.2rem .5rem;border:0;background:transparent;color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.3 system-ui,sans-serif;text-align:start;cursor:pointer}._list_58i0x_110 ._option_58i0x_125:hover,._list_58i0x_110 ._option_58i0x_125:focus-visible{background:var(--wysiwyg-chrome-selected, #e8f0fe);outline:none}._backdrop_1p9zk_1{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;display:flex;align-items:center;justify-content:center;padding:1rem;background:var(--wysiwyg-chrome-backdrop, rgb(0 0 0 / 32%))}._backdrop_1p9zk_1 ._dialog_1p9zk_12{display:flex;flex-direction:column;box-sizing:border-box;width:min(32rem,100%);max-width:100%;min-width:0;max-height:100%;margin:0;padding:0;overflow:hidden;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:6px;background:var(--wysiwyg-chrome-dialog, #fff);box-shadow:0 8px 24px var(--wysiwyg-chrome-shadow, rgb(0 0 0 / 18%));color:var(--wysiwyg-chrome-dialog-text, #222);font:.875rem/1.4 system-ui,sans-serif}._backdrop_1p9zk_1 ._dialogWide_1p9zk_31{width:min(38rem,100%)}._backdrop_1p9zk_1 ._header_1p9zk_35{flex-shrink:0;margin:0;padding:.75rem 1rem .5rem;font-size:1rem;font-weight:600}._backdrop_1p9zk_1 ._tabs_1p9zk_43{display:flex;flex-shrink:0;flex-wrap:wrap;gap:.15rem;padding:0 1rem;border-bottom:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._backdrop_1p9zk_1 ._tab_1p9zk_43{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0 0 -1px;padding:.4rem .75rem;border:1px solid transparent;border-bottom:0;border-radius:4px 4px 0 0;background:transparent;color:inherit;font:inherit;cursor:pointer}._backdrop_1p9zk_1 ._tab_1p9zk_43[aria-selected=true]{border-color:var(--wysiwyg-chrome-border, #e5e5e5);background:var(--wysiwyg-chrome-dialog, #fff);font-weight:600}._backdrop_1p9zk_1 ._tab_1p9zk_43:disabled{cursor:not-allowed;opacity:.5}._backdrop_1p9zk_1 ._body_1p9zk_76{display:flex;flex:1 1 auto;flex-direction:column;gap:.85rem;min-height:0;padding:1rem;overflow:auto}._backdrop_1p9zk_1 ._field_1p9zk_86{display:flex;flex-direction:column;gap:.35rem}._backdrop_1p9zk_1 ._label_1p9zk_92{font-weight:600}._backdrop_1p9zk_1 ._sizeRow_1p9zk_96{display:flex;gap:.4rem;align-items:center}._backdrop_1p9zk_1 ._fileRow_1p9zk_102{display:flex;align-items:center;gap:.5rem}._backdrop_1p9zk_1 ._fileName_1p9zk_108{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--wysiwyg-chrome-text-muted, #555)}._backdrop_1p9zk_1 ._previewImage_1p9zk_115{display:block;max-width:100%;max-height:8rem;margin-top:.35rem;object-fit:contain;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:4px}._backdrop_1p9zk_1 ._marks_1p9zk_125{display:flex;flex-direction:column;gap:.35rem;margin:0;padding:0;border:0}._backdrop_1p9zk_1 ._mark_1p9zk_125{display:flex;align-items:center;gap:.4rem}._backdrop_1p9zk_1 ._actions_1p9zk_140{display:flex;flex-shrink:0;justify-content:flex-end;gap:.5rem;padding:.75rem 1rem 1rem}._backdrop_1p9zk_1 ._actionsSpread_1p9zk_148{justify-content:space-between}._backdrop_1p9zk_1 ._actionsEnd_1p9zk_152{display:flex;gap:.5rem}._backdrop_1p9zk_1 ._headerRow_1p9zk_157{display:flex;flex-shrink:0;align-items:flex-start;gap:.5rem;padding:.75rem .5rem .5rem 1rem}._backdrop_1p9zk_1 ._headerRow_1p9zk_157 ._header_1p9zk_35{flex:1;padding:0}._backdrop_1p9zk_1 ._close_1p9zk_170{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex-shrink:0;margin:0;padding:.25rem;border:0;border-radius:4px;background:transparent;color:inherit;cursor:pointer}._backdrop_1p9zk_1 ._close_1p9zk_170:hover,._backdrop_1p9zk_1 ._close_1p9zk_170:focus-visible{background:var(--wysiwyg-chrome-hover, #f0f0f0)}._backdrop_1p9zk_1 ._nameSection_1p9zk_187{flex-shrink:0;padding:.5rem 1rem .75rem}._backdrop_1p9zk_1 ._nameInput_1p9zk_192{box-sizing:border-box;width:100%;margin:0;padding:.35rem .5rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog, #fff);color:inherit;font:inherit}._backdrop_1p9zk_1 ._nameInput_1p9zk_192:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._backdrop_1p9zk_1 ._labelRow_1p9zk_209{display:flex;align-items:center;gap:.35rem}._backdrop_1p9zk_1 ._help_1p9zk_215{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;margin:0;padding:0;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:50%;background:var(--wysiwyg-chrome-dialog-muted, #f7f7f7);color:inherit;font:.7rem/1 system-ui,sans-serif;font-weight:700;cursor:help}._backdrop_1p9zk_1 ._textInput_1p9zk_233{box-sizing:border-box;width:100%;margin:0;padding:.35rem .5rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog, #fff);color:inherit;font:inherit}._backdrop_1p9zk_1 ._fullSelect_1p9zk_245{width:100%}._backdrop_1p9zk_1 ._error_1p9zk_249{color:var(--wysiwyg-chrome-danger, #b33);font-size:.8rem}._backdrop_1p9zk_1 ._emptyHint_1p9zk_254{margin:0;color:var(--wysiwyg-chrome-text-muted, #666)}._backdrop_1p9zk_1 ._action_1p9zk_140[aria-pressed=true],._backdrop_1p9zk_1 ._action_1p9zk_140[aria-checked=true]{border-color:var(--wysiwyg-chrome-primary, #4a7fd4);background:var(--wysiwyg-chrome-primary-soft, #e8eef8)}._backdrop_1p9zk_1 ._textarea_1p9zk_265{box-sizing:border-box;width:100%;min-height:6.5rem;margin:0;padding:.4rem .5rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog, #fff);color:inherit;font:.8rem/1.4 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;resize:vertical}._backdrop_1p9zk_1 ._actionDanger_1p9zk_279{border-color:var(--wysiwyg-chrome-danger, #c44);background:var(--wysiwyg-chrome-dialog, #fff);color:var(--wysiwyg-chrome-danger, #b33)}._backdrop_1p9zk_1 ._confirmBody_1p9zk_285{flex-shrink:0;padding:1rem}._backdrop_1p9zk_1 ._emptyPanel_1p9zk_290{min-height:4rem}._backdrop_1p9zk_1 ._nestedPanel_1p9zk_294{display:flex;flex:1 1 auto;flex-direction:column;min-height:0;margin:.85rem 1rem .15rem;overflow:hidden;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px}._backdrop_1p9zk_1 ._nestedPanel_1p9zk_294 ._tabs_1p9zk_43{padding-top:.4rem}._spinnerWrap_1p9zk_309{display:flex;align-items:center;justify-content:center;padding:.5rem .75rem}._spinner_1p9zk_309{width:1.1rem;height:1.1rem;border:2px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-top-color:var(--wysiwyg-chrome-primary, #4a7fd4);border-radius:50%;animation:_spin_1p9zk_309 .7s linear infinite}@keyframes _spin_1p9zk_309{to{transform:rotate(360deg)}}._backdrop_1p9zk_1 ._action_1p9zk_140{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:5.5rem;margin:0;padding:.35rem .75rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog-muted, #f7f7f7);color:inherit;font:inherit;cursor:pointer}._backdrop_1p9zk_1 ._actionPrimary_1p9zk_344{border-color:var(--wysiwyg-chrome-primary, #4a7fd4);background:var(--wysiwyg-chrome-primary, #4a7fd4);color:var(--wysiwyg-chrome-primary-fg, #fff)}._backdrop_1p9zk_1 ._action_1p9zk_140:disabled{cursor:not-allowed;opacity:.5}._backdrop_1p9zk_1 ._action_1p9zk_140:focus-visible,._backdrop_1p9zk_1 ._tab_1p9zk_43:focus-visible,._backdrop_1p9zk_1 ._close_1p9zk_170:focus-visible,._backdrop_1p9zk_1 ._iconButton_1p9zk_358:focus-visible,._backdrop_1p9zk_1 ._select_1p9zk_359:focus-visible,._backdrop_1p9zk_1 ._lengthInput_1p9zk_360:focus-visible,._backdrop_1p9zk_1 ._lengthUnit_1p9zk_361:focus-visible,._backdrop_1p9zk_1 ._textInput_1p9zk_233:focus-visible,._backdrop_1p9zk_1 ._textarea_1p9zk_265:focus-visible,._backdrop_1p9zk_1 ._help_1p9zk_215:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._backdrop_1p9zk_1 ._group_1p9zk_369{display:flex;flex-direction:column;gap:.75rem;margin:0;padding:.75rem;border:1px solid var(--wysiwyg-chrome-border, #e5e5e5);border-radius:4px}._backdrop_1p9zk_1 ._nestedGroup_1p9zk_379{display:flex;flex-direction:column;gap:.5rem;margin:0;padding:.6rem .7rem;border:1px solid var(--wysiwyg-chrome-border, #ececec);border-radius:4px}._backdrop_1p9zk_1 ._subLabel_1p9zk_389{font-weight:600}._backdrop_1p9zk_1 ._iconRow_1p9zk_393{display:flex;gap:.25rem}._backdrop_1p9zk_1 ._iconButton_1p9zk_358{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin:0;padding:0;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog-muted, #f7f7f7);color:inherit;cursor:pointer}._backdrop_1p9zk_1 ._iconButton_1p9zk_358[aria-checked=true],._backdrop_1p9zk_1 ._iconButton_1p9zk_358[aria-pressed=true]{border-color:var(--wysiwyg-chrome-primary, #4a7fd4);background:var(--wysiwyg-chrome-primary-soft, #e8eef8)}._backdrop_1p9zk_1 ._iconButton_1p9zk_358:disabled{cursor:not-allowed;opacity:.5}._backdrop_1p9zk_1 ._lengthField_1p9zk_425{display:flex;flex-direction:column;gap:.25rem}._backdrop_1p9zk_1 ._sideLabel_1p9zk_431{font-weight:600}._backdrop_1p9zk_1 ._lengthRow_1p9zk_435{display:flex;gap:.35rem;align-items:center}._backdrop_1p9zk_1 ._lengthInput_1p9zk_360,._backdrop_1p9zk_1 ._select_1p9zk_359,._backdrop_1p9zk_1 ._lengthUnit_1p9zk_361{box-sizing:border-box;margin:0;padding:.3rem .4rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog, #fff);color:inherit;font:inherit}._backdrop_1p9zk_1 ._lengthInput_1p9zk_360{width:4.75rem}._backdrop_1p9zk_1 ._select_1p9zk_359,._backdrop_1p9zk_1 ._lengthUnit_1p9zk_361{min-width:4.5rem}._backdrop_1p9zk_1 ._sideGrid_1p9zk_463,._backdrop_1p9zk_1 ._shadowGrid_1p9zk_464{display:grid;grid-template-columns:1fr 1fr;gap:.55rem .75rem}@media(max-width:28rem){._backdrop_1p9zk_1 ._sideGrid_1p9zk_463,._backdrop_1p9zk_1 ._shadowGrid_1p9zk_464{grid-template-columns:1fr}}._frame_bwkh8_1{position:fixed;z-index:1140;box-sizing:border-box;pointer-events:none;border:1px solid #4a90d9}._handle_bwkh8_9{position:absolute;box-sizing:border-box;padding:0;pointer-events:auto;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;box-shadow:none}._handle_bwkh8_9:focus{outline:none}._handle_bwkh8_9:focus-visible{outline:2px solid #8ab4ff;outline-offset:1px}._handleEast_bwkh8_29{top:0;right:-4px;width:8px;height:calc(100% - 10px);cursor:e-resize}._handleSouth_bwkh8_37{left:0;bottom:-4px;width:calc(100% - 10px);height:8px;cursor:s-resize}._handleSouthEast_bwkh8_45{right:-5px;bottom:-5px;z-index:1;width:10px;height:10px;cursor:se-resize;border:1px solid #4a90d9;background:#fff}._grid_1bpma_1{display:grid;grid-template-columns:repeat(10,1.15rem);gap:2px;width:max-content}._cell_1bpma_8{width:1.15rem;height:1.15rem;padding:0;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);background:var(--wysiwyg-chrome-input, #fff);cursor:pointer}._cell_1bpma_8[data-active=true]{background:var(--wysiwyg-chrome-selected, #cfe3ff);border-color:var(--wysiwyg-chrome-primary, #4a90d9)}._cell_1bpma_8:focus-visible{outline:2px solid var(--wysiwyg-chrome-primary, #4a90d9);outline-offset:1px}._sizeLabel_1bpma_27{margin:.35rem 0 0;color:var(--wysiwyg-chrome-text, #444);font-variant-numeric:tabular-nums}._sizeFields_1bpma_33{align-items:flex-end}._numberInput_1bpma_37{box-sizing:border-box;width:4.5rem;margin:0;padding:.35rem .4rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-input, #fff);color:inherit;font:inherit}._numberInput_1bpma_37:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._backdrop_9d3gw_1{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;display:flex;align-items:center;justify-content:center;padding:1rem;background:var(--wysiwyg-chrome-backdrop, rgb(0 0 0 / 32%))}._dialog_9d3gw_12{display:flex;flex-direction:column;width:min(90vw,72rem);height:min(90vh,56rem);max-height:calc(100% - 2rem);margin:0;padding:0;overflow:hidden;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:6px;background:var(--wysiwyg-chrome-dialog, #fff);box-shadow:0 8px 24px var(--wysiwyg-chrome-shadow, rgb(0 0 0 / 18%));color:var(--wysiwyg-chrome-dialog-text, #222);font:.875rem/1.4 system-ui,sans-serif}._headerRow_9d3gw_29{display:flex;align-items:flex-start;gap:.5rem;padding:.75rem .5rem .5rem 1rem}._header_9d3gw_29{flex:1;margin:0;padding:0;font-size:1rem;font-weight:600}._close_9d3gw_44{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex-shrink:0;margin:0;padding:.25rem;border:0;border-radius:4px;background:transparent;color:inherit;cursor:pointer}._close_9d3gw_44:hover,._close_9d3gw_44:focus-visible{background:var(--wysiwyg-chrome-hover, #f0f0f0)}._close_9d3gw_44:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._body_9d3gw_66{flex:1;min-height:0;overflow:hidden;border-top:1px solid var(--wysiwyg-chrome-border, #e5e5e5);border-bottom:1px solid var(--wysiwyg-chrome-border, #e5e5e5);background:var(--wysiwyg-chrome-dialog-muted, #f3f3f3)}._frame_9d3gw_75{display:block;width:100%;height:100%;border:0;background:#fff}._actions_9d3gw_83{display:flex;justify-content:flex-end;gap:.5rem;padding:.75rem 1rem 1rem}._action_9d3gw_83{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:5.5rem;margin:0;padding:.35rem .75rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog-muted, #f7f7f7);color:inherit;font:inherit;cursor:pointer}._action_9d3gw_83:hover,._action_9d3gw_83:focus-visible{background:var(--wysiwyg-chrome-dialog, #fff)}._action_9d3gw_83:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._panel_6xdnw_1{position:fixed;right:16px;bottom:16px;z-index:10000;width:min(360px,calc(100vw - 32px));max-height:min(480px,calc(100vh - 32px));display:flex;flex-direction:column;border:1px solid var(--wysiwyg-border-color, #d0d0d0);border-radius:8px;background:var(--wysiwyg-surface-background, #fff);color:var(--wysiwyg-text-color, #222);box-shadow:0 8px 24px #0000001f}._header_6xdnw_17{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 12px 8px;border-bottom:1px solid var(--wysiwyg-border-color, #e8e8e8)}._title_6xdnw_26{margin:0;font-size:.9375rem;font-weight:600}._close_6xdnw_32{display:flex;align-items:center;justify-content:center;padding:4px;border:none;border-radius:4px;background:transparent;color:inherit;cursor:pointer}._close_6xdnw_32:hover{background:#0000000f}._messages_6xdnw_48{flex:1;overflow:auto;padding:12px;display:flex;flex-direction:column;gap:12px}._empty_6xdnw_57{margin:0;color:var(--wysiwyg-muted-color, #666);font-size:.875rem}._message_6xdnw_48{display:flex;flex-direction:column;gap:4px}._messageHeader_6xdnw_69{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:.8125rem}._author_6xdnw_77{font-weight:600}._time_6xdnw_81{color:var(--wysiwyg-muted-color, #666);font-size:.75rem}._body_6xdnw_86{margin:0;font-size:.875rem;line-height:1.45}._reply_6xdnw_92{display:flex;flex-direction:column;gap:8px;padding:12px;border-top:1px solid var(--wysiwyg-border-color, #e8e8e8)}._input_6xdnw_100{width:100%;min-height:72px;padding:8px;border:1px solid var(--wysiwyg-border-color, #d0d0d0);border-radius:6px;font:inherit;resize:vertical;box-sizing:border-box}._post_6xdnw_111{align-self:flex-end;padding:6px 14px;border:none;border-radius:6px;background:var(--wysiwyg-accent-color, #2563eb);color:#fff;font-size:.875rem;font-weight:600;cursor:pointer}._post_6xdnw_111:disabled{opacity:.5;cursor:not-allowed}._backdrop_11w4e_1{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;display:flex;align-items:center;justify-content:center;padding:1rem;background:var(--wysiwyg-chrome-backdrop, rgb(0 0 0 / 32%))}._dialog_11w4e_12{display:flex;flex-direction:column;box-sizing:border-box;width:min(52rem,100%);max-width:100%;min-width:0;max-height:100%;margin:0;padding:0;overflow:hidden;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:6px;background:var(--wysiwyg-chrome-dialog, #fff);box-shadow:0 8px 24px var(--wysiwyg-chrome-shadow, rgb(0 0 0 / 18%));color:var(--wysiwyg-chrome-dialog-text, #222);font:.875rem/1.4 system-ui,sans-serif}._header_11w4e_31{flex-shrink:0;margin:0;padding:.75rem 1rem .5rem;font-size:1rem;font-weight:600}._body_11w4e_39{display:flex;flex:1 1 auto;flex-direction:column;gap:.75rem;min-height:0;padding:.75rem 1rem;overflow:auto}._group_11w4e_49{border:1px solid var(--wysiwyg-chrome-border, #e5e5e5);border-radius:6px;background:var(--wysiwyg-chrome-dialog-group, #fafafa)}._groupDragging_11w4e_55{opacity:.55}._groupDropTarget_11w4e_59{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-2px}._groupHeader_11w4e_64{display:flex;align-items:center;gap:.4rem;padding:.45rem .6rem;border-bottom:1px solid var(--wysiwyg-chrome-border, #ececec)}._groupTitle_11w4e_72{flex:1;font-weight:600}._dragHandle_11w4e_77,._moveButton_11w4e_78{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;width:1.6rem;height:1.6rem;margin:0;padding:0;border:1px solid transparent;border-radius:4px;background:transparent;color:var(--wysiwyg-chrome-text-muted, #555);cursor:grab}._moveButton_11w4e_78{cursor:pointer}._dragHandle_11w4e_77:hover,._moveButton_11w4e_78:hover,._dragHandle_11w4e_77:focus-visible,._moveButton_11w4e_78:focus-visible{border-color:var(--wysiwyg-chrome-divider, #d0d0d0);background:var(--wysiwyg-chrome-dialog, #fff);color:var(--wysiwyg-chrome-text-strong, #111)}._dragHandle_11w4e_77:focus-visible,._moveButton_11w4e_78:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-2px}._dragHandle_11w4e_77:disabled,._moveButton_11w4e_78:disabled{cursor:not-allowed;opacity:.4}._items_11w4e_119{display:flex;flex-wrap:wrap;gap:.75rem 1rem;padding:.75rem .85rem .85rem}._item_11w4e_119{display:flex;flex-direction:column;align-items:center;gap:.3rem;min-width:4.5rem;max-width:6.5rem}._itemIcon_11w4e_135{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;color:var(--wysiwyg-chrome-icon, #333)}._itemTitle_11w4e_144{text-align:center;font-size:.75rem;line-height:1.25;overflow-wrap:anywhere}._itemCheckbox_11w4e_151{margin:0}._actions_11w4e_155{display:flex;flex-shrink:0;justify-content:space-between;gap:.5rem;padding:.75rem 1rem 1rem}._action_11w4e_155{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:5.5rem;margin:0;padding:.35rem .75rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog-muted, #f7f7f7);color:inherit;font:inherit;cursor:pointer}._action_11w4e_155:hover,._action_11w4e_155:focus-visible{background:var(--wysiwyg-chrome-dialog, #fff)}._action_11w4e_155:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._action_11w4e_155:disabled{cursor:not-allowed;opacity:.5}._spinnerWrap_11w4e_191{display:flex;align-items:center;justify-content:center;min-height:6rem}._spinner_11w4e_191{width:1.1rem;height:1.1rem;border:2px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-top-color:var(--wysiwyg-chrome-primary, #4a7fd4);border-radius:50%;animation:_spin_11w4e_191 .7s linear infinite}@keyframes _spin_11w4e_191{to{transform:rotate(360deg)}}._wrap_1gtdc_1._wrap_1gtdc_1{display:inline-flex;flex-shrink:0;align-items:stretch}._wrap_1gtdc_1._wrapToolbar_1gtdc_7{align-self:stretch;padding:5px .35rem 0}._wrap_1gtdc_1 ._field_1gtdc_12{position:relative;display:flex;flex:0 0 auto;align-items:stretch;height:1.6rem}._wrap_1gtdc_1 ._trigger_1gtdc_20{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;min-width:8.5rem;height:100%;margin:0;padding:0 1.35rem 0 .45rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.2 system-ui,sans-serif;text-align:start;cursor:pointer}._wrap_1gtdc_1 ._trigger_1gtdc_20:focus{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-1px}._wrap_1gtdc_1 ._trigger_1gtdc_20:disabled{cursor:not-allowed;opacity:.5}._wrap_1gtdc_1 ._chevron_1gtdc_46{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;width:1.15rem;pointer-events:none;color:var(--wysiwyg-chrome-text, #444)}._wrap_1gtdc_1 ._chevron_1gtdc_46:after{content:"";display:block;width:0;height:0;border-style:solid;border-width:.28rem .22rem 0;border-color:currentColor transparent transparent}._list_1gtdc_69{position:fixed;z-index:1300;min-width:10rem;max-height:min(18rem,calc(100vh - 8px));margin:0;padding:.15rem 0;overflow:auto;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 12%));list-style:none}._option_1gtdc_84{display:block;width:100%;margin:0;padding:.25rem .75rem;border:0;background:transparent;color:var(--wysiwyg-chrome-dialog-text, #222);font-family:system-ui,sans-serif;line-height:1.25;text-align:start;cursor:pointer}._option_1gtdc_84:hover,._option_1gtdc_84:focus-visible{background:var(--wysiwyg-chrome-selected, #e8f0fe);outline:none}._option_1gtdc_84[aria-checked=true]{font-weight:600}._option_1gtdc_84:disabled{cursor:not-allowed;opacity:.5}._separator_1gtdc_113{height:1px;margin:.25rem .5rem;padding:0;background:var(--wysiwyg-chrome-divider, #d0d0d0);border:0;list-style:none}._root_1febl_1{all:revert;position:relative;box-sizing:border-box;display:flex;flex-direction:column;flex:1 1 auto;width:100%;min-width:0;height:100%;max-height:100%;min-height:16rem;border:var(--wysiwyg-border-width, 1px) solid var(--wysiwyg-border-color, var(--wysiwyg-chrome-divider, #d0d0d0));border-radius:var(--wysiwyg-border-radius, 6px);box-shadow:var(--wysiwyg-border-shadow, none);overflow:hidden;background:#fff;color:#111;font-family:system-ui,sans-serif;font-size:1rem;font-weight:400;font-style:normal;font-variant:normal;line-height:1.5;letter-spacing:normal;text-align:start;text-indent:0;text-transform:none;text-decoration:none;text-shadow:none;white-space:normal;word-spacing:normal;direction:ltr}._root_1febl_1._fullscreen_1febl_36{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;width:100%;height:100%;min-height:0;border:none;border-radius:0;box-shadow:none}._root_1febl_1 ._exitFullscreen_1febl_48{position:absolute;z-index:2;top:.4rem;right:.4rem;display:inline-flex;align-items:center;justify-content:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:2rem;height:2rem;margin:0;padding:0;border:0;border-radius:4px;background:var(--wysiwyg-chrome-menu, #fff);color:var(--wysiwyg-chrome-text, #444);font:inherit;cursor:pointer;box-shadow:0 1px 3px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 20%))}._root_1febl_1 ._exitFullscreen_1febl_48:hover{background:var(--wysiwyg-chrome-hover, #f4f4f4)}._root_1febl_1 ._exitFullscreen_1febl_48:focus{outline:none;box-shadow:inset 0 0 0 2px var(--wysiwyg-chrome-focus, #8ab4ff)}._root_1febl_1 ._exitFullscreenIcon_1febl_79{display:block;width:1rem;height:1rem;flex-shrink:0}._root_1febl_1 *:not(:is(svg,svg *)),._root_1febl_1 *:before,._root_1febl_1 *:after{all:revert;box-sizing:border-box}._root_1febl_1 ._menuChrome_1febl_94{display:flex;flex-direction:column;flex-shrink:0;align-items:stretch;z-index:1000;width:100%;min-width:0;position:relative}._root_1febl_1 ._body_1febl_106._body_1febl_106{position:relative;display:grid;flex:1 1 auto;min-width:0;min-height:0;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}._root_1febl_1 ._body_1febl_106._body_1febl_106[data-icon-dock=top]{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr)}._root_1febl_1 ._body_1febl_106._body_1febl_106[data-icon-dock=bottom]{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr)}._root_1febl_1 ._body_1febl_106._body_1febl_106[data-icon-dock=left]{grid-template-columns:12rem minmax(0,1fr);grid-template-rows:minmax(min-content,1fr)}._root_1febl_1 ._body_1febl_106._body_1febl_106[data-icon-dock=right]{grid-template-columns:minmax(0,1fr) 12rem;grid-template-rows:minmax(min-content,1fr)}._root_1febl_1 ._iconChrome_1febl_136._iconChrome_1febl_136{display:flex;flex-direction:column;align-items:stretch;z-index:500;min-width:0;position:relative}._root_1febl_1[data-toolbar-position=top] ._iconChrome_1febl_136{width:100%;border-bottom:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._root_1febl_1[data-toolbar-position=bottom] ._iconChrome_1febl_136{width:100%;border-top:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._root_1febl_1[data-toolbar-position=left] ._iconChrome_1febl_136._iconChrome_1febl_136,._root_1febl_1[data-toolbar-position=right] ._iconChrome_1febl_136._iconChrome_1febl_136{align-self:stretch;box-sizing:border-box;width:100%;min-width:12rem;overflow-x:hidden;overflow-y:auto}._root_1febl_1[data-toolbar-position=left] ._iconChrome_1febl_136{border-right:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._root_1febl_1[data-toolbar-position=right] ._iconChrome_1febl_136{border-left:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._root_1febl_1[data-toolbar-position=left] ._iconChrome_1febl_136>*,._root_1febl_1[data-toolbar-position=right] ._iconChrome_1febl_136>*{width:100%;min-width:0;height:auto;min-height:100%}._root_1febl_1 ._workspace_1febl_181{position:relative;display:flex;flex:1 1 auto;flex-direction:column;min-width:0;min-height:0;overflow:auto;padding:1rem;background:#f0f0f0}._root_1febl_1 ._workspacePageSized_1febl_193{align-items:center}._root_1febl_1 ._workspaceWithRuler_1febl_197{padding-top:0}._root_1febl_1 ._pageCanvasViewport_1febl_201{display:flex;flex:1 0 auto;flex-direction:column;align-items:center;width:100%;min-height:min-content;overflow:visible}._root_1febl_1 ._multiPageRulerLayer_1febl_211{flex:0 0 auto;position:sticky;top:0;z-index:400;width:100%;display:flex;justify-content:center;padding-top:6px;background:#f0f0f0;border-top:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._root_1febl_1 ._pageCanvasViewport_1febl_201[data-page-canvas-sized]{flex:0 0 auto}._root_1febl_1 ._pageCanvasViewport_1febl_201:not([data-page-canvas-sized]){flex:1 1 auto;min-height:0;align-items:stretch}._root_1febl_1 ._pageCanvasViewport_1febl_201[data-page-canvas-sized] ._multiPageContainer_1febl_234{min-height:min-content}._root_1febl_1 ._pageCanvasViewport_1febl_201:not([data-page-canvas-sized]) ._multiPageContainer_1febl_234{flex:1 1 auto;min-height:100%;align-items:stretch}._root_1febl_1 ._pageZoomContent_1febl_244{display:flex;flex-direction:column;width:100%;flex:1 1 auto;min-height:0;align-items:center}._root_1febl_1 ._pageCanvasViewport_1febl_201:not([data-page-canvas-sized]) ._pageZoomContent_1febl_244{align-items:stretch;min-height:100%}._root_1febl_1 ._pageZoomContent_1febl_244 [data-testid=vertical-ruler]{width:calc(24px / var(--page-zoom, 1))!important}._root_1febl_1 ._htmlFileDropOverlay_1febl_262{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:flex;align-items:center;justify-content:center;pointer-events:none;background:#ffffffd9;color:#111;font-size:1rem;font-weight:600}._root_1febl_1 ._surface_1febl_276{width:100%;min-height:100%;background:#fff;box-shadow:0 1px 3px #0000001f}._root_1febl_1 ._visual_1febl_283{flex:1 0 auto;min-height:100%;padding:.75rem;outline:none;user-select:text;-webkit-user-select:text}._root_1febl_1 ._visual_1febl_283[data-page-sized]{flex:0 0 auto;width:auto;min-height:auto;margin:0 auto;padding:0;box-sizing:border-box}._root_1febl_1 ._visual_1febl_283:not([data-page-sized]){width:100%;height:100%;min-height:100%;flex:1 1 auto;box-sizing:border-box}._root_1febl_1 ._visual_1febl_283:focus{box-shadow:inset 0 0 0 2px #8ab4ff}._root_1febl_1 ._visual_1febl_283:empty:before{content:attr(data-placeholder);color:#888}._root_1febl_1 ._visual_1febl_283[aria-disabled=true]{opacity:.6;background:#f7f7f7}._root_1febl_1 ._multiPageContainer_1febl_234{display:flex;flex-direction:column;align-items:center;width:100%;min-height:100%}._root_1febl_1 ._pageBlock_1febl_331{display:flex;flex-direction:row;width:max-content;align-items:flex-start}._root_1febl_1 ._pageBlockFluid_1febl_338{width:100%;max-width:100%;height:100%;min-height:100%;box-sizing:border-box;flex:1 1 auto}._root_1febl_1 ._pageSurfaceRulerGutter_1febl_347{flex:0 0 24px;width:24px;pointer-events:auto}._root_1febl_1 ._pageGap_1febl_353{flex-shrink:0;height:1.5rem;background:var(--wysiwyg-toolbar-background, var(--wysiwyg-chrome-toolbar, #f4f4f4))}._root_1febl_1 ._pageSurface_1febl_347{flex-shrink:0;min-height:12rem}._root_1febl_1 ._pageSurface_1febl_347:focus{outline:none}._root_1febl_1 ._html_1febl_262{display:block;-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;flex:1 1 auto;width:100%;margin:0;min-height:100%;padding:.75rem;border:0;border-radius:0;resize:none;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.875rem;font-weight:400;font-style:normal;line-height:1.5;letter-spacing:normal;color:#111;outline:none;background:#fff}._root_1febl_1 ._html_1febl_262:focus{box-shadow:inset 0 0 0 2px #8ab4ff}._root_1febl_1 ._html_1febl_262:disabled{opacity:.6}._visual_1febl_283 p{margin:0 0 .75em}._visual_1febl_283 p:last-child{margin-bottom:0}._visual_1febl_283 h1,._visual_1febl_283 h2,._visual_1febl_283 h3,._visual_1febl_283 h4,._visual_1febl_283 h5,._visual_1febl_283 h6{margin:1em 0 .5em;font-weight:600;line-height:1.25;color:inherit}._visual_1febl_283 h1:first-child,._visual_1febl_283 h2:first-child,._visual_1febl_283 h3:first-child,._visual_1febl_283 h4:first-child,._visual_1febl_283 h5:first-child,._visual_1febl_283 h6:first-child{margin-top:0}._visual_1febl_283 h1{font-size:1.75rem}._visual_1febl_283 h2{font-size:1.5rem}._visual_1febl_283 h3{font-size:1.25rem}._visual_1febl_283 h4{font-size:1.125rem}._visual_1febl_283 h5{font-size:1rem}._visual_1febl_283 h6{font-size:.875rem}._visual_1febl_283 ul,._visual_1febl_283 ol{margin:0 0 .75em;padding-left:1.5em}._visual_1febl_283 li{margin:.25em 0}._visual_1febl_283 a{color:#06c;text-decoration:underline}._visual_1febl_283 strong,._visual_1febl_283 b{font-weight:700}._visual_1febl_283 em,._visual_1febl_283 i{font-style:italic}._visual_1febl_283 u{text-decoration:underline}._visual_1febl_283 s{text-decoration:line-through}._visual_1febl_283 blockquote{margin:0 0 .75em;padding:0 0 0 .75em;border:0;border-left:3px solid #d0d0d0;color:#444}._visual_1febl_283 code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.875em;background:#f4f4f4;padding:.1em .3em;border-radius:3px}._visual_1febl_283 pre{margin:0 0 .75em;padding:.75em;overflow:auto;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.875rem;line-height:1.5;background:#f4f4f4;border-radius:4px}._visual_1febl_283 pre code{background:transparent;padding:0;font-size:inherit}._visual_1febl_283 hr{margin:1em 0;border:0;border-top:1px solid #d0d0d0}._visual_1febl_283 img{max-width:100%;vertical-align:middle}._root_1febl_1[data-comments-visible] .wysiwyg-comment-anchor{background-color:#ffd40059;outline:1px solid rgba(255,170,0,.8)}._root_1febl_1[data-comments-visible] img.wysiwyg-comment-anchor{outline:2px solid rgba(255,170,0,.9);outline-offset:2px}._rulerRoot_j57vt_5,._rulerRoot_j57vt_5 *{box-sizing:border-box}._rulerRoot_j57vt_5{user-select:none;-webkit-user-select:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif!important;font-size:10px!important;line-height:1!important;color:#333!important}._horizontalRulerGroup_j57vt_22{position:relative!important;overflow:visible!important;display:block!important}._horizontalRulerTrack_j57vt_28{--ruler-track-height: 24px;--ruler-handle-size: 12px;--ruler-handle-half: calc(var(--ruler-handle-size) / 2);--ruler-handle-width: 18px;--ruler-handle-border: calc(var(--ruler-handle-width) / 2);height:var(--ruler-track-height)!important;position:relative!important;background-color:#e4e4e4!important;border:1px solid #b8b8b8!important;overflow:visible!important;display:block!important}._horizontalRulerShelf_j57vt_42{height:8px!important;background-color:#e4e4e4!important;border-left:1px solid #b8b8b8!important;border-right:1px solid #b8b8b8!important;border-bottom:1px solid #b8b8b8!important}._horizontalInner_j57vt_51{position:absolute!important;top:0!important;bottom:0!important;background-color:#fff!important;border-left:1px solid #b8b8b8!important;border-right:1px solid #b8b8b8!important;z-index:2!important;overflow:visible!important}._dragEdgeLeft_j57vt_63{position:absolute!important;top:0!important;bottom:0!important;left:-4px!important;width:8px!important;cursor:ew-resize!important;z-index:10!important}._dragEdgeRight_j57vt_73{position:absolute!important;top:0!important;bottom:0!important;right:-4px!important;width:8px!important;cursor:ew-resize!important;z-index:10!important}._dragEdgeLeft_j57vt_63:hover,._dragEdgeRight_j57vt_73:hover,._dragEdgeActive_j57vt_85{background-color:#0078d466!important}._verticalRuler_j57vt_92{width:24px!important;position:relative!important;background-color:#e4e4e4!important;border:1px solid #b8b8b8!important;overflow:visible!important;display:block!important}._verticalInner_j57vt_102{position:absolute!important;left:0!important;right:0!important;background-color:#fff!important;border-top:1px solid #b8b8b8!important;border-bottom:1px solid #b8b8b8!important;z-index:2!important;overflow:visible!important}._dragEdgeTop_j57vt_114{position:absolute!important;left:0!important;right:0!important;top:-4px!important;height:8px!important;cursor:ns-resize!important;z-index:10!important}._dragEdgeBottom_j57vt_124{position:absolute!important;left:0!important;right:0!important;bottom:-4px!important;height:8px!important;cursor:ns-resize!important;z-index:10!important}._dragEdgeTop_j57vt_114:hover,._dragEdgeBottom_j57vt_124:hover,._dragEdgeActiveV_j57vt_136{background-color:#0078d466!important}._tickH_j57vt_143{position:absolute!important;bottom:0!important;width:1px!important;background-color:#666!important;pointer-events:none!important;z-index:3!important}._tickV_j57vt_152{position:absolute!important;right:0!important;height:1px!important;background-color:#666!important;pointer-events:none!important;z-index:3!important}._tickLabelH_j57vt_161{position:absolute!important;top:3px!important;transform:translate(-50%)!important;font-size:10px!important;font-weight:500!important;line-height:1!important;color:#333!important;pointer-events:none!important;z-index:4!important;white-space:nowrap!important;display:inline-block!important}._tickLabelV_j57vt_175{position:absolute!important;left:3px!important;transform:translateY(-50%)!important;font-size:10px!important;font-weight:500!important;line-height:1!important;color:#333!important;pointer-events:none!important;z-index:4!important;white-space:nowrap!important;display:inline-block!important}._arrowIconWrapper_j57vt_192{position:absolute!important;z-index:20!important;cursor:pointer!important;touch-action:none!important;display:flex!important;align-items:center!important;justify-content:center!important}._arrowDown_j57vt_203{top:calc(-1 * var(--ruler-handle-half, 6px))!important;width:var(--ruler-handle-width, 18px)!important;height:var(--ruler-handle-size, 12px)!important;margin-left:calc(-1 * var(--ruler-handle-border, 9px))!important;align-items:flex-start!important}._arrowDown_j57vt_203 ._arrowGlyph_j57vt_211{width:0!important;height:0!important;border-left:var(--ruler-handle-border, 9px) solid transparent!important;border-right:var(--ruler-handle-border, 9px) solid transparent!important;border-top:var(--ruler-handle-size, 12px) solid #6e6e6e!important}._arrowDown_j57vt_203:hover ._arrowGlyph_j57vt_211,._arrowDown_j57vt_203._arrowActive_j57vt_220 ._arrowGlyph_j57vt_211{border-top-color:#0078d4!important}._arrowUp_j57vt_225{top:calc(var(--ruler-track-height, 24px) - var(--ruler-handle-half, 6px))!important;width:var(--ruler-handle-width, 18px)!important;height:var(--ruler-handle-size, 12px)!important;margin-left:calc(-1 * var(--ruler-handle-border, 9px))!important;align-items:flex-end!important}._arrowUp_j57vt_225 ._arrowGlyph_j57vt_211{width:0!important;height:0!important;border-left:var(--ruler-handle-border, 9px) solid transparent!important;border-right:var(--ruler-handle-border, 9px) solid transparent!important;border-bottom:var(--ruler-handle-size, 12px) solid #6e6e6e!important}._arrowUp_j57vt_225:hover ._arrowGlyph_j57vt_211,._arrowUp_j57vt_225._arrowActive_j57vt_220 ._arrowGlyph_j57vt_211{border-bottom-color:#0078d4!important}._rulerTooltip_j57vt_249{position:fixed;background:#242424;color:#fff;padding:4px 8px;border-radius:4px;font-size:11px;font-weight:600;pointer-events:none;white-space:nowrap;box-shadow:0 4px 12px #0000004d;z-index:9999;transform:translate(-50%,-100%);margin-top:-10px}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { EditorProps } from '../types';
|
|
2
|
-
export declare function Editor({ value, defaultValue, onChange, onAutoSave, onSave, onOpen, mode: modeProp, defaultMode, onModeChange, fullscreen: fullscreenProp, defaultFullscreen, onFullscreenChange, placeholder, disabled, readOnly, className, locale, toolbarBackground, menuColor, menuBackground, menuFontSize, menuFontFamily, border, menuVisible, toolbarVisible, allowedChrome, customActions, customFonts, transformHtml, loadCustomParagraphStyles, onSaveCustomParagraphStyle, onDeleteCustomParagraphStyle, customImagePicker, disableBuiltinImageInsert, customAudioPicker, disableBuiltinAudioInsert, customVideoPicker, disableBuiltinVideoInsert, disableHtmlFileDrop, toolbarCustomization, darkMode, darkModePersistence, toolbarPosition, toolbarPositionPersistence, enableMultiPages, pages: pagesProp, defaultPages, onPagesChange, enableComments, defaultCommentsVisible, commentAuthor, comments: commentsProp, defaultComments, onCommentsChange, }: EditorProps): import("react").JSX.Element;
|
|
2
|
+
export declare function Editor({ value, defaultValue, onChange, onAutoSave, onSave, onOpen, mode: modeProp, defaultMode, onModeChange, fullscreen: fullscreenProp, defaultFullscreen, onFullscreenChange, placeholder, disabled, readOnly, className, locale, toolbarBackground, menuColor, menuBackground, menuFontSize, menuFontFamily, border, menuVisible, toolbarVisible, allowedChrome, customActions, customFonts, transformHtml, sanitizeHtml, loadCustomParagraphStyles, onSaveCustomParagraphStyle, onDeleteCustomParagraphStyle, customImagePicker, disableBuiltinImageInsert, customAudioPicker, disableBuiltinAudioInsert, customVideoPicker, disableBuiltinVideoInsert, disableHtmlFileDrop, toolbarCustomization, darkMode, darkModePersistence, toolbarPosition, toolbarPositionPersistence, enablePageProperties, defaultPageProperties, enableMultiPages, pages: pagesProp, defaultPages, onPagesChange, defaultRulerVisible, rulerUnit, enableComments, defaultCommentsVisible, commentAuthor, comments: commentsProp, defaultComments, onCommentsChange, }: EditorProps): import("react").JSX.Element;
|
|
3
3
|
//# sourceMappingURL=Editor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Editor.d.ts","sourceRoot":"","sources":["../../src/components/Editor.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Editor.d.ts","sourceRoot":"","sources":["../../src/components/Editor.tsx"],"names":[],"mappings":"AAqQA,OAAO,KAAK,EASV,WAAW,EAIZ,MAAM,UAAU,CAAA;AAkBjB,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,YAAiB,EACjB,QAAQ,EACR,UAAU,EACV,MAAM,EACN,MAAM,EACN,IAAI,EAAE,QAAQ,EACd,WAAsB,EACtB,YAAY,EACZ,UAAU,EAAE,cAAc,EAC1B,iBAAyB,EACzB,kBAAkB,EAClB,WAAW,EACX,QAAQ,EACR,QAAgB,EAChB,SAAS,EACT,MAAa,EACb,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,YAAY,EACZ,cAAc,EACd,MAAM,EACN,WAAkB,EAClB,cAAqB,EACrB,aAAa,EACb,aAAa,EACb,WAAW,EACX,aAAa,EACb,YAAmB,EACnB,yBAAyB,EACzB,0BAA0B,EAC1B,4BAA4B,EAC5B,iBAAiB,EACjB,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,EACzB,mBAA2B,EAC3B,oBAAoB,EACpB,QAAgB,EAChB,mBAAmB,EACnB,eAAuB,EACvB,0BAA0B,EAC1B,oBAA4B,EAC5B,qBAAqB,EACrB,gBAAwB,EACxB,KAAK,EAAE,SAAS,EAChB,YAAY,EACZ,aAAa,EACb,mBAA0B,EAC1B,SAAgB,EAChB,cAAsB,EACtB,sBAA6B,EAC7B,aAAa,EACb,QAAQ,EAAE,YAAY,EACtB,eAAoB,EACpB,gBAAgB,GACjB,EAAE,WAAW,+BAy8Gb"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { MouseEvent as ReactMouseEvent, PointerEvent as ReactPointerEvent } from 'react';
|
|
2
|
+
import { PageMarginSidesPx } from '../core/pageCanvasLayout';
|
|
3
|
+
import { RulerUnit } from '../core/rulerUnits';
|
|
2
4
|
export type MultiPageVisualSurfaceHandle = {
|
|
3
5
|
getContainer: () => HTMLDivElement | null;
|
|
4
6
|
getActivePageRoot: () => HTMLElement | null;
|
|
@@ -8,10 +10,23 @@ export type MultiPageVisualSurfaceHandle = {
|
|
|
8
10
|
type MultiPageVisualSurfaceProps = {
|
|
9
11
|
pages: readonly string[];
|
|
10
12
|
activePageIndex: number;
|
|
13
|
+
hasSelectedPage?: boolean;
|
|
11
14
|
onActivePageIndexChange: (index: number) => void;
|
|
15
|
+
onPageSelected?: (index: number) => void;
|
|
12
16
|
onPageChange: (index: number, html: string) => void;
|
|
13
17
|
placeholder?: string;
|
|
14
18
|
disabled?: boolean;
|
|
19
|
+
rulerVisible?: boolean;
|
|
20
|
+
rulerUnit?: RulerUnit;
|
|
21
|
+
/** Viewport zoom factor for converting screen pointer deltas to document px during ruler drag. */
|
|
22
|
+
zoomScale?: number;
|
|
23
|
+
onMarginChange?: (pageIndex: number, margins: PageMarginSidesPx) => void;
|
|
24
|
+
onMarginPreview?: (pageIndex: number, margins: PageMarginSidesPx) => void;
|
|
25
|
+
onIndentChange?: (indent: {
|
|
26
|
+
firstLineIndentPx?: number;
|
|
27
|
+
leftIndentPx?: number;
|
|
28
|
+
rightIndentPx?: number;
|
|
29
|
+
}) => void;
|
|
15
30
|
onBeforeInput?: (event: InputEvent) => void;
|
|
16
31
|
onPointerDown?: (event: ReactPointerEvent<HTMLDivElement>) => void;
|
|
17
32
|
onMouseUp?: (event: ReactMouseEvent<HTMLDivElement>) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiPageVisualSurface.d.ts","sourceRoot":"","sources":["../../src/components/MultiPageVisualSurface.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,UAAU,IAAI,eAAe,EAClC,KAAK,YAAY,IAAI,iBAAiB,EACvC,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"MultiPageVisualSurface.d.ts","sourceRoot":"","sources":["../../src/components/MultiPageVisualSurface.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,UAAU,IAAI,eAAe,EAClC,KAAK,YAAY,IAAI,iBAAiB,EACvC,MAAM,OAAO,CAAA;AAYd,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAGjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAMnD,MAAM,MAAM,4BAA4B,GAAG;IACzC,YAAY,EAAE,MAAM,cAAc,GAAG,IAAI,CAAA;IACzC,iBAAiB,EAAE,MAAM,WAAW,GAAG,IAAI,CAAA;IAC3C,kBAAkB,EAAE,MAAM,MAAM,CAAA;IAChC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;CAChD,CAAA;AAED,KAAK,2BAA2B,GAAG;IACjC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,uBAAuB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACnD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,kGAAkG;IAClG,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACxE,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACzE,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAChH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;IAC3C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAA;IAClE,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,cAAc,CAAC,KAAK,IAAI,CAAA;IAC5D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,cAAc,CAAC,KAAK,IAAI,CAAA;CACjE,CAAA;AAED,eAAO,MAAM,sBAAsB,sIAmOjC,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { CSSProperties, ReactNode } from 'react';
|
|
2
|
+
import { PageMarginSidesPx } from '../core/pageCanvasLayout';
|
|
3
|
+
import { ParagraphIndentState } from '../core/paragraphIndent';
|
|
4
|
+
import { PageGeometry } from '../core/pageGeometry';
|
|
5
|
+
import { RulerUnit } from '../core/rulerUnits';
|
|
6
|
+
import { RulerIndentSides } from './rulerDocumentHandlers';
|
|
7
|
+
type RulerHorizontalChromeProps = {
|
|
8
|
+
showRulers: boolean;
|
|
9
|
+
geometry: PageGeometry | null;
|
|
10
|
+
indentState: ParagraphIndentState;
|
|
11
|
+
rulerUnit: RulerUnit;
|
|
12
|
+
zoomScale: number;
|
|
13
|
+
onMarginChange?: (sides: PageMarginSidesPx) => void;
|
|
14
|
+
onMarginPreview?: (sides: PageMarginSidesPx) => void;
|
|
15
|
+
onIndentChange?: (indents: RulerIndentSides) => void;
|
|
16
|
+
};
|
|
17
|
+
type RulerVerticalChromeProps = {
|
|
18
|
+
geometry: PageGeometry | null;
|
|
19
|
+
rulerUnit: RulerUnit;
|
|
20
|
+
zoomScale: number;
|
|
21
|
+
onMarginChange?: (sides: PageMarginSidesPx) => void;
|
|
22
|
+
onMarginPreview?: (sides: PageMarginSidesPx) => void;
|
|
23
|
+
};
|
|
24
|
+
export declare function buildPageZoomContentStyle(zoomScale: number): CSSProperties | undefined;
|
|
25
|
+
export declare function RulerHorizontalHeader({ showRulers, geometry, indentState, rulerUnit, zoomScale, onMarginChange, onMarginPreview, onIndentChange, }: RulerHorizontalChromeProps): import("react").JSX.Element | null;
|
|
26
|
+
type RulerPageRowProps = RulerVerticalChromeProps & {
|
|
27
|
+
children: ReactNode;
|
|
28
|
+
pageBlockStyle?: CSSProperties;
|
|
29
|
+
/** When true, show the vertical ruler gutter and ruler for this page row. */
|
|
30
|
+
showVerticalRuler?: boolean;
|
|
31
|
+
/** When true, the page has a fixed @page size; when false, use full-width / full-height fluid layout. */
|
|
32
|
+
pageSized?: boolean;
|
|
33
|
+
};
|
|
34
|
+
export declare function RulerPageRow({ showVerticalRuler, pageSized, geometry, rulerUnit, zoomScale, onMarginChange, onMarginPreview, children, pageBlockStyle, }: RulerPageRowProps): import("react").JSX.Element;
|
|
35
|
+
type RulerVisualFrameProps = RulerHorizontalChromeProps & {
|
|
36
|
+
children: ReactNode;
|
|
37
|
+
};
|
|
38
|
+
/** Single-page print layout: horizontal ruler header + page row with vertical ruler. */
|
|
39
|
+
export declare function RulerVisualFrame({ showRulers, geometry, indentState, rulerUnit, zoomScale, onMarginChange, onMarginPreview, onIndentChange, children, }: RulerVisualFrameProps): import("react").JSX.Element;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=RulerVisualFrame.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RulerVisualFrame.d.ts","sourceRoot":"","sources":["../../src/components/RulerVisualFrame.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAMnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAG/D,KAAK,0BAA0B,GAAG;IAChC,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAA;IAC7B,WAAW,EAAE,oBAAoB,CAAA;IACjC,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACnD,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACpD,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAA;CACrD,CAAA;AAED,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAA;IAC7B,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACnD,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAA;CACrD,CAAA;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAMtF;AAED,wBAAgB,qBAAqB,CAAC,EACpC,UAAU,EACV,QAAQ,EACR,WAAW,EACX,SAAS,EACT,SAAS,EACT,cAAc,EACd,eAAe,EACf,cAAc,GACf,EAAE,0BAA0B,sCAyB5B;AAED,KAAK,iBAAiB,GAAG,wBAAwB,GAAG;IAClD,QAAQ,EAAE,SAAS,CAAA;IACnB,cAAc,CAAC,EAAE,aAAa,CAAA;IAC9B,6EAA6E;IAC7E,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,yGAAyG;IACzG,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,wBAAgB,YAAY,CAAC,EAC3B,iBAAyB,EACzB,SAAiB,EACjB,QAAQ,EACR,SAAS,EACT,SAAS,EACT,cAAc,EACd,eAAe,EACf,QAAQ,EACR,cAAc,GACf,EAAE,iBAAiB,+BA0BnB;AAED,KAAK,qBAAqB,GAAG,0BAA0B,GAAG;IACxD,QAAQ,EAAE,SAAS,CAAA;CACpB,CAAA;AAED,wFAAwF;AACxF,wBAAgB,gBAAgB,CAAC,EAC/B,UAAU,EACV,QAAQ,EACR,WAAW,EACX,SAAS,EACT,SAAS,EACT,cAAc,EACd,eAAe,EACf,cAAc,EACd,QAAQ,GACT,EAAE,qBAAqB,+BAyCvB"}
|