From 4b76bc97aa53570c3db690c664c4942858ca6287 Mon Sep 17 00:00:00 2001 From: Caio Pizzol Date: Tue, 20 Jan 2026 18:22:08 -0300 Subject: [PATCH 1/2] feat: view options print and web --- .../src/components/SuperEditor.vue | 45 ++++++- packages/super-editor/src/core/Editor.ts | 44 ++++++- .../src/core/renderers/ProseMirrorRenderer.ts | 99 ++++++++++----- .../src/core/types/EditorConfig.ts | 28 ++++ packages/superdoc/src/SuperDoc.vue | 7 +- .../src/assets/styles/elements/superdoc.css | 8 ++ packages/superdoc/src/core/SuperDoc.js | 13 ++ packages/superdoc/src/core/types/index.js | 15 +++ .../src/dev/components/SuperdocDev.vue | 120 +++++++++++++++++- 9 files changed, 339 insertions(+), 40 deletions(-) diff --git a/packages/super-editor/src/components/SuperEditor.vue b/packages/super-editor/src/components/SuperEditor.vue index ee70752440..a5abebabca 100644 --- a/packages/super-editor/src/components/SuperEditor.vue +++ b/packages/super-editor/src/components/SuperEditor.vue @@ -60,6 +60,14 @@ const contextMenuDisabled = computed(() => { return active?.options ? Boolean(active.options.disableContextMenu) : Boolean(props.options.disableContextMenu); }); +/** + * Computed property that determines if web layout mode is active (OOXML ST_View 'web'). + * @returns {boolean} True if viewOptions.layout is 'web' + */ +const isWebLayout = computed(() => { + return props.options.viewOptions?.layout === 'web'; +}); + /** * Reactive ruler visibility state. * Uses a ref with a deep watcher to ensure proper reactivity when options.rulers changes. @@ -126,6 +134,12 @@ watch( * falling back to 8.5in (letter size). */ const containerStyle = computed(() => { + // Web layout mode: no min-width, let CSS handle responsive width + if (isWebLayout.value) { + return {}; + } + + // Print layout mode: use fixed page dimensions // Default: 8.5 inches at 96 DPI = 816px (letter size) let maxWidth = 8.5 * 96; @@ -1040,7 +1054,7 @@ onBeforeUnmount(() => {