diff --git a/bun.lock b/bun.lock index 58bd80b4..946fd2f5 100644 --- a/bun.lock +++ b/bun.lock @@ -17,6 +17,7 @@ "@typescript-eslint/eslint-plugin": "^8.54.0", "@typescript-eslint/parser": "^8.54.0", "@vitejs/plugin-react": "^5.1.2", + "@vitejs/plugin-vue": "^6.0.4", "autoprefixer": "^10.4.17", "class-variance-authority": "^0.7.0", "eslint": "^10.0.3", @@ -34,11 +35,12 @@ "tsup": "^8.0.1", "typescript": "^5.3.3", "vite": "^7.3.1", + "vue": "^3.5.29", }, }, "packages/agent-use": { "name": "@eigenpal/docx-editor-agents", - "version": "0.0.31", + "version": "0.0.32", "dependencies": { "docxtemplater": "^3.50.0", "jszip": "^3.10.1", @@ -70,7 +72,7 @@ }, "packages/react": { "name": "@eigenpal/docx-js-editor", - "version": "0.0.31", + "version": "0.0.32", "dependencies": { "@radix-ui/react-select": "^2.2.6", "clsx": "^2.1.0", @@ -101,6 +103,7 @@ "@eigenpal/docx-core": "workspace:*", }, "devDependencies": { + "prosemirror-state": "^1.4.3", "prosemirror-view": "^1.41.6", }, "peerDependencies": { @@ -465,6 +468,8 @@ "@vitejs/plugin-react": ["@vitejs/plugin-react@5.2.0", "", { "dependencies": { "@babel/core": "^7.29.0", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", "@rolldown/pluginutils": "1.0.0-rc.3", "@types/babel__core": "^7.20.5", "react-refresh": "^0.18.0" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw=="], + "@vitejs/plugin-vue": ["@vitejs/plugin-vue@6.0.5", "", { "dependencies": { "@rolldown/pluginutils": "1.0.0-rc.2" }, "peerDependencies": { "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", "vue": "^3.2.25" } }, "sha512-bL3AxKuQySfk1iGcBsQnoRVexTPJq0Z/ixFVM8OhVJAP6ZXXXLtM7NFKWhLl30Kg7uTBqIaPXbh+nuQCuBDedg=="], + "@vue/compiler-core": ["@vue/compiler-core@3.5.30", "", { "dependencies": { "@babel/parser": "^7.29.0", "@vue/shared": "3.5.30", "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "sha512-s3DfdZkcu/qExZ+td75015ljzHc6vE+30cFMGRPROYjqkroYI5NV2X1yAMX9UeyBNWB9MxCfPcsjpLS11nzkkw=="], "@vue/compiler-dom": ["@vue/compiler-dom@3.5.30", "", { "dependencies": { "@vue/compiler-core": "3.5.30", "@vue/shared": "3.5.30" } }, "sha512-eCFYESUEVYHhiMuK4SQTldO3RYxyMR/UQL4KdGD1Yrkfdx4m/HYuZ9jSfPdA+nWJY34VWndiYdW/wZXyiPEB9g=="], @@ -1297,6 +1302,8 @@ "@manypkg/get-packages/fs-extra": ["fs-extra@8.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g=="], + "@vitejs/plugin-vue/@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.2", "", {}, "sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw=="], + "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], "chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], diff --git a/examples/vue/public/sample.docx b/examples/vue/public/sample.docx new file mode 100644 index 00000000..a18bf186 Binary files /dev/null and b/examples/vue/public/sample.docx differ diff --git a/examples/vue/src/App.vue b/examples/vue/src/App.vue index 0eedf409..ac0c2da9 100644 --- a/examples/vue/src/App.vue +++ b/examples/vue/src/App.vue @@ -1,59 +1,226 @@ - diff --git a/package.json b/package.json index 6d4b70f3..30aa4f63 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "dev:nextjs": "cd examples/nextjs && npm run dev", "dev:remix": "cd examples/remix && npm run dev", "dev:astro": "cd examples/astro && npm run dev", + "dev:vue": "cd examples/vue && bun run dev", "dev:demo": "bash examples/dev-all.sh", "build": "bun run --filter '@eigenpal/docx-core' build && bun run --filter '@eigenpal/docx-js-editor' build", "build:demo": "vite build --config examples/vite/vite.config.ts", @@ -47,6 +48,7 @@ "@typescript-eslint/eslint-plugin": "^8.54.0", "@typescript-eslint/parser": "^8.54.0", "@vitejs/plugin-react": "^5.1.2", + "@vitejs/plugin-vue": "^6.0.4", "autoprefixer": "^10.4.17", "class-variance-authority": "^0.7.0", "eslint": "^10.0.3", @@ -63,7 +65,8 @@ "tailwindcss-animate": "^1.0.7", "tsup": "^8.0.1", "typescript": "^5.3.3", - "vite": "^7.3.1" + "vite": "^7.3.1", + "vue": "^3.5.29" }, "keywords": [ "docx", diff --git a/packages/vue/i18n/en.json b/packages/vue/i18n/en.json new file mode 100644 index 00000000..0c8e38fe --- /dev/null +++ b/packages/vue/i18n/en.json @@ -0,0 +1,745 @@ +{ + "_lang": "en", + "common": { + "cancel": "Cancel", + "insert": "Insert", + "apply": "Apply", + "close": "Close", + "delete": "Delete", + "update": "Update", + "save": "Save", + "retry": "Retry", + "send": "Send", + "edit": "Edit", + "comment": "Comment", + "reply": "Reply", + "accept": "Accept", + "reject": "Reject", + "dismiss": "Dismiss", + "change": "Change", + "px": "px", + "closeDialog": "Close dialog" + }, + "toolbar": { + "ariaLabel": "Formatting toolbar", + "file": "File", + "format": "Format", + "insert": "Insert", + "print": "Print", + "printShortcut": "Ctrl+P", + "pageSetup": "Page setup", + "leftToRight": "Left-to-right text", + "rightToLeft": "Right-to-left text", + "image": "Image", + "table": "Table", + "pageBreak": "Page break", + "tableOfContents": "Table of contents", + "symbol": "Symbol" + }, + "formattingBar": { + "groups": { + "history": "History", + "zoom": "Zoom", + "styles": "Styles", + "font": "Font", + "textFormatting": "Text formatting", + "script": "Script", + "alignment": "Alignment", + "listFormatting": "List formatting", + "image": "Image", + "table": "Table" + }, + "undo": "Undo", + "undoShortcut": "Undo (Ctrl+Z)", + "redo": "Redo", + "redoShortcut": "Redo (Ctrl+Y)", + "bold": "Bold", + "boldShortcut": "Bold (Ctrl+B)", + "italic": "Italic", + "italicShortcut": "Italic (Ctrl+I)", + "underline": "Underline", + "underlineShortcut": "Underline (Ctrl+U)", + "strikethrough": "Strikethrough", + "fontColor": "Font Color", + "highlightColor": "Text Highlight Color", + "insertLink": "Insert link", + "insertLinkShortcut": "Insert link (Ctrl+K)", + "superscript": "Superscript", + "superscriptShortcut": "Superscript (Ctrl+Shift+=)", + "subscript": "Subscript", + "subscriptShortcut": "Subscript (Ctrl+=)", + "imageProperties": "Image properties", + "imagePropertiesShortcut": "Image properties (alt text, border)...", + "clearFormatting": "Clear formatting" + }, + "alignment": { + "alignLeft": "Align Left", + "alignLeftShortcut": "Ctrl+L", + "center": "Center", + "centerShortcut": "Ctrl+E", + "alignRight": "Align Right", + "alignRightShortcut": "Ctrl+R", + "justify": "Justify", + "justifyShortcut": "Ctrl+J" + }, + "lists": { + "ariaLabel": "List formatting", + "typeAriaLabel": "List type", + "indentationAriaLabel": "List indentation", + "bulletList": "Bullet List", + "numberedList": "Numbered List", + "decreaseIndent": "Decrease Indent", + "increaseIndent": "Increase Indent" + }, + "lineSpacing": { + "single": "Single", + "double": "Double", + "lineSpacingTitle": "Line spacing: {label}", + "paragraphSpacing": "Paragraph spacing" + }, + "styles": { + "selectAriaLabel": "Select paragraph style", + "normalText": "Normal text", + "title": "Title", + "subtitle": "Subtitle", + "heading1": "Heading 1", + "heading2": "Heading 2", + "heading3": "Heading 3" + }, + "font": { + "selectAriaLabel": "Select font family", + "sansSerif": "Sans Serif", + "serif": "Serif", + "monospace": "Monospace" + }, + "fontSize": { + "decrease": "Decrease font size", + "increase": "Increase font size", + "label": "Font size", + "listLabel": "Font sizes" + }, + "zoom": { + "ariaLabel": "Zoom: {label}" + }, + "colorPicker": { + "ariaLabel": "{type} color picker", + "highlightColors": "Highlight Colors", + "customColor": "Custom Color", + "noColor": "No Color", + "automatic": "Automatic", + "themeColors": "Theme Colors", + "standardColors": "Standard Colors", + "colors": { + "black": "Black", + "darkRed": "Dark Red", + "red": "Red", + "orange": "Orange", + "yellow": "Yellow", + "darkYellow": "Dark Yellow", + "green": "Green", + "darkGreen": "Dark Green", + "teal": "Teal", + "darkTeal": "Dark Teal", + "blue": "Blue", + "darkBlue": "Dark Blue", + "purple": "Purple", + "darkPurple": "Dark Purple", + "brown": "Brown", + "grey50": "Grey 50%", + "grey25": "Grey 25%", + "grey10": "Grey 10%", + "white": "White", + "lightRed": "Light Red", + "lightOrange": "Light Orange", + "lightYellow": "Light Yellow", + "lightGreen": "Light Green", + "lightBlue": "Light Blue", + "lightPurple": "Light Purple", + "pink": "Pink", + "rose": "Rose", + "gold": "Gold", + "aqua": "Aqua", + "lavender": "Lavender", + "silver": "Silver", + "darkOrange": "Dark Orange", + "darkGray": "Dark Gray", + "gray": "Gray", + "cyan": "Cyan", + "magenta": "Magenta", + "paleGreen": "Pale Green", + "lightCyan": "Light Cyan", + "skyBlue": "Sky Blue", + "lightBlue2": "Light Blue 2", + "lightMagenta": "Light Magenta", + "brightGreen": "Bright Green", + "violet": "Violet" + } + }, + "dialogs": { + "findReplace": { + "titleFind": "Find", + "titleFindReplace": "Find and Replace", + "findLabel": "Find:", + "findPlaceholder": "Enter text to find...", + "findAriaLabel": "Find text", + "findPrevious": "Find previous", + "findPreviousTitle": "Find Previous (Shift+Enter)", + "findNext": "Find next", + "findNextTitle": "Find Next (Enter)", + "matchCount": "{current} of {total} matches", + "noResults": "No results found", + "replaceLabel": "Replace:", + "replacePlaceholder": "Enter replacement text...", + "replaceAriaLabel": "Replace text", + "replaceButton": "Replace", + "replaceCurrentTitle": "Replace current match", + "replaceAllButton": "Replace All", + "replaceAllTitle": "Replace all matches", + "matchCase": "Match case", + "wholeWords": "Whole words", + "toggleReplace": "+ Replace" + }, + "hyperlink": { + "titleEdit": "Edit Hyperlink", + "titleInsert": "Insert Hyperlink", + "tabWebAddress": "Web Address", + "tabBookmark": "Bookmark", + "urlLabel": "URL", + "urlPlaceholder": "https://example.com", + "urlHint": "Enter a web address, email (mailto:), or phone (tel:)", + "bookmarkLabel": "Bookmark", + "bookmarkPlaceholder": "Select a bookmark...", + "displayTextLabel": "Display Text", + "displayTextPlaceholder": "Text to display (optional)", + "displayTextHint": "Leave empty to use the selected text", + "tooltipLabel": "Tooltip (optional)", + "tooltipPlaceholder": "Text shown on hover", + "removeLink": "Remove Link", + "invalidUrl": "Please enter a valid URL", + "urlRequired": "URL is required" + }, + "insertTable": { + "title": "Insert Table", + "hoverToSelect": "Hover to select size", + "tableSize": "{cols} x {rows} Table", + "orSpecifySize": "or specify size", + "rowsLabel": "Rows:", + "columnsLabel": "Columns:", + "insertButton": "Insert Table", + "sizeSelector": "Table size selector" + }, + "insertImage": { + "title": "Insert Image", + "uploadAriaLabel": "Click or drag to upload image", + "uploadText": "Click to select or drag and drop an image", + "uploadSubtext": "PNG, JPG, GIF up to 10MB", + "dimensions": "Dimensions", + "widthLabel": "Width:", + "heightLabel": "Height:", + "aspectRatioLocked": "Aspect ratio locked", + "aspectRatioUnlocked": "Aspect ratio unlocked", + "altTextLabel": "Alt Text (optional)", + "altTextPlaceholder": "Describe the image for accessibility", + "insertButton": "Insert Image", + "invalidFile": "Please select a valid image file", + "fileTooLarge": "Image file is too large (max 10MB)", + "readFailed": "Failed to read image file", + "loadFailed": "Failed to load image", + "preview": "Preview" + }, + "insertSymbol": { + "title": "Insert Symbol", + "searchPlaceholder": "Search symbols (character or Unicode)...", + "noResults": "No symbols found for \"{query}\"", + "decimal": "Decimal: {value}", + "categories": { + "common": "Common", + "arrows": "Arrows", + "math": "Math", + "greek": "Greek", + "shapes": "Shapes", + "punctuation": "Punctuation", + "currency": "Currency", + "music": "Music", + "emoji": "Emoji" + } + }, + "imageProperties": { + "title": "Image Properties", + "altText": "Alt Text", + "altTextPlaceholder": "Describe this image for accessibility...", + "border": "Border", + "width": "Width", + "style": "Style", + "color": "Color", + "preview": "Preview", + "borderStyles": { + "solid": "Solid", + "dashed": "Dashed", + "dotted": "Dotted", + "double": "Double", + "groove": "Groove", + "ridge": "Ridge", + "inset": "Inset", + "outset": "Outset" + } + }, + "imagePosition": { + "title": "Image Position", + "horizontal": "Horizontal", + "vertical": "Vertical", + "position": "Position", + "alignment": "Alignment", + "offset": "Offset", + "offsetPx": "Offset (px)", + "align": "Align", + "relativeTo": "Relative to", + "alignOptions": { + "left": "Left", + "center": "Center", + "right": "Right", + "top": "Top", + "bottom": "Bottom" + }, + "relativeOptions": { + "page": "Page", + "column": "Column", + "margin": "Margin", + "character": "Character", + "paragraph": "Paragraph", + "line": "Line" + } + }, + "pageSetup": { + "title": "Page Setup", + "pageSize": "PAGE SIZE", + "sizeLabel": "Size", + "custom": "Custom", + "orientation": "Orientation", + "portrait": "Portrait", + "landscape": "Landscape", + "margins": "MARGINS", + "top": "Top", + "bottom": "Bottom", + "left": "Left", + "right": "Right", + "pageSizes": { + "letter": "Letter (8.5\" × 11\")", + "a4": "A4 (8.27\" × 11.69\")", + "legal": "Legal (8.5\" × 14\")", + "a3": "A3 (11.69\" × 16.54\")", + "a5": "A5 (5.83\" × 8.27\")", + "b5": "B5 (6.93\" × 9.84\")", + "executive": "Executive (7.25\" × 10.5\")" + } + }, + "tableProperties": { + "title": "Table Properties", + "widthType": "Width type", + "widthLabel": "Width", + "alignmentLabel": "Alignment", + "widthTypes": { + "auto": "Auto", + "fixed": "Fixed (twips)", + "percentage": "Percentage" + }, + "units": { + "fiftiethsPercent": "(50ths of %)", + "twips": "tw" + }, + "alignOptions": { + "left": "Left", + "center": "Center", + "right": "Right" + } + }, + "pasteSpecial": { + "title": "Paste Special", + "keepFormatting": "Keep Source Formatting", + "keepFormattingDescription": "Paste with original formatting", + "keepFormattingShortcut": "Ctrl+V", + "plainText": "Paste as Plain Text", + "plainTextDescription": "Paste without any formatting", + "plainTextShortcut": "Ctrl+Shift+V", + "readingClipboard": "Reading clipboard...", + "preview": "Preview:", + "noContent": "No content available to paste", + "clipboardError": "Unable to read clipboard. Please use Ctrl+V to paste." + }, + "footnoteProperties": { + "title": "Footnote & Endnote Properties", + "footnotes": "Footnotes", + "endnotes": "Endnotes", + "position": "Position", + "numberFormat": "Number format", + "startAt": "Start at", + "numbering": "Numbering", + "footnotePositions": { + "bottomOfPage": "Bottom of page", + "belowText": "Below text" + }, + "endnotePositions": { + "endOfDocument": "End of document", + "endOfSection": "End of section" + }, + "numberingOptions": { + "continuous": "Continuous", + "restartSection": "Restart each section", + "restartPage": "Restart each page" + }, + "formats": { + "decimal": "1, 2, 3, ...", + "lowerRoman": "i, ii, iii, ...", + "upperRoman": "I, II, III, ...", + "lowerAlpha": "a, b, c, ...", + "upperAlpha": "A, B, C, ...", + "symbols": "*, †, ‡, ..." + } + }, + "keyboardShortcuts": { + "ariaLabel": "Keyboard Shortcuts", + "searchPlaceholder": "Search shortcuts...", + "categories": { + "editing": "Editing", + "formatting": "Formatting", + "navigation": "Navigation", + "clipboard": "Clipboard", + "selection": "Selection", + "view": "View", + "file": "File", + "other": "Other" + }, + "shortcuts": { + "save": "Save", + "saveDescription": "Save document", + "print": "Print", + "printDescription": "Print document", + "undo": "Undo", + "undoDescription": "Undo last action", + "redo": "Redo", + "redoDescription": "Redo last action", + "delete": "Delete", + "deleteDescription": "Delete selected text", + "find": "Find", + "findDescription": "Find text in document", + "findReplace": "Find & Replace", + "findReplaceDescription": "Find and replace text", + "cut": "Cut", + "cutDescription": "Cut selected text", + "copy": "Copy", + "copyDescription": "Copy selected text", + "paste": "Paste", + "pasteDescription": "Paste from clipboard", + "pastePlainText": "Paste as Plain Text", + "pastePlainTextDescription": "Paste without formatting", + "bold": "Bold", + "boldDescription": "Toggle bold formatting", + "italic": "Italic", + "italicDescription": "Toggle italic formatting", + "underline": "Underline", + "underlineDescription": "Toggle underline formatting", + "strikethrough": "Strikethrough", + "strikethroughDescription": "Toggle strikethrough", + "subscript": "Subscript", + "subscriptDescription": "Toggle subscript", + "superscript": "Superscript", + "superscriptDescription": "Toggle superscript", + "alignLeft": "Align Left", + "alignLeftDescription": "Left align paragraph", + "alignCenter": "Align Center", + "alignCenterDescription": "Center align paragraph", + "alignRight": "Align Right", + "alignRightDescription": "Right align paragraph", + "justify": "Justify", + "justifyDescription": "Justify paragraph", + "increaseIndent": "Increase Indent", + "increaseIndentDescription": "Increase paragraph indent", + "decreaseIndent": "Decrease Indent", + "decreaseIndentDescription": "Decrease paragraph indent", + "selectAll": "Select All", + "selectAllDescription": "Select all content", + "selectWord": "Select Word", + "selectWordDescription": "Select current word", + "selectParagraph": "Select Paragraph", + "selectParagraphDescription": "Select current paragraph", + "extendSelectionByWord": "Extend Selection by Word", + "extendSelectionByWordDescription": "Extend selection to next/previous word", + "extendSelectionToLineEdge": "Extend Selection to Line Edge", + "extendSelectionToLineEdgeDescription": "Extend selection to line start/end", + "moveByWord": "Move by Word", + "moveByWordDescription": "Move cursor to next/previous word", + "moveToLineStart": "Move to Line Start", + "moveToLineStartDescription": "Move cursor to start of line", + "moveToLineEnd": "Move to Line End", + "moveToLineEndDescription": "Move cursor to end of line", + "moveToDocumentStart": "Move to Document Start", + "moveToDocumentStartDescription": "Move cursor to start of document", + "moveToDocumentEnd": "Move to Document End", + "moveToDocumentEndDescription": "Move cursor to end of document", + "pageUp": "Page Up", + "pageUpDescription": "Scroll up one page", + "pageDown": "Page Down", + "pageDownDescription": "Scroll down one page", + "zoomIn": "Zoom In", + "zoomInDescription": "Increase zoom level", + "zoomOut": "Zoom Out", + "zoomOutDescription": "Decrease zoom level", + "resetZoom": "Reset Zoom", + "resetZoomDescription": "Reset zoom to 100%", + "keyboardShortcuts": "Keyboard Shortcuts", + "keyboardShortcutsDescription": "Show this help dialog" + }, + "noResults": "No shortcuts found matching \"{query}\"", + "pressEscToClose": "Press {key} to close", + "or": "or" + } + }, + "comments": { + "resolved": "Resolved", + "resolve": "Resolve", + "reopen": "Reopen", + "moreOptions": "More options", + "unknown": "Unknown", + "addComment": "Add a comment...", + "replyPlaceholder": "Reply or add others with @", + "replyCount": "{count, plural, one {# reply} other {# replies}}" + }, + "trackedChanges": { + "unknown": "Unknown", + "replaced": "Replaced", + "with": "with", + "added": "Added", + "deleted": "Deleted" + }, + "contextMenu": { + "ariaLabel": "AI actions menu", + "textMenuAriaLabel": "Text editing menu", + "customPromptPlaceholder": "Enter custom prompt...", + "cut": "Cut", + "cutShortcut": "Ctrl+X", + "copy": "Copy", + "copyShortcut": "Ctrl+C", + "paste": "Paste", + "pasteShortcut": "Ctrl+V", + "pastePlainText": "Paste as Plain Text", + "pastePlainTextShortcut": "Ctrl+Shift+V", + "delete": "Delete", + "deleteShortcut": "Del", + "selectAll": "Select All", + "selectAllShortcut": "Ctrl+A", + "selected": "Selected:", + "aiActions": { + "askAi": "Ask AI", + "rewrite": "Rewrite", + "expand": "Expand", + "summarize": "Summarize", + "translate": "Translate", + "explain": "Explain", + "fixGrammar": "Fix Grammar", + "makeFormal": "Make Formal", + "makeCasual": "Make Casual", + "custom": "Custom" + } + }, + "documentOutline": { + "ariaLabel": "Document outline", + "closeAriaLabel": "Close outline", + "closeTitle": "Close outline", + "title": "Outline", + "noHeadings": "No headings found. Add headings to your document to see them here." + }, + "sidebar": { + "ariaLabel": "Annotations sidebar" + }, + "titleBar": { + "untitled": "Untitled", + "documentNameAriaLabel": "Document name", + "menuBarAriaLabel": "Menu bar" + }, + "errors": { + "loadingDocument": "Loading document...", + "noDocumentLoaded": "No document loaded", + "failedToLoad": "Failed to Load Document", + "unableToParse": "Unable to Parse Document", + "somethingWentWrong": "Something went wrong", + "errorDescription": "An error occurred while rendering this component. Please try again or contact support if the problem persists.", + "errorLabel": "Error:", + "componentStack": "Component Stack:", + "tryAgain": "Try Again", + "showDetails": "Show details", + "hideDetails": "Hide details", + "unsavedChanges": "You have unsaved changes. Are you sure you want to leave?" + }, + "table": { + "insertRowAbove": "Insert row above", + "insertRowBelow": "Insert row below", + "insertColumnLeft": "Insert column left", + "insertColumnRight": "Insert column right", + "deleteRow": "Delete row", + "deleteColumn": "Delete column", + "deleteTable": "Delete table", + "mergeCells": "Merge cells", + "splitCell": "Split cell", + "editingTools": "Table editing tools", + "label": "Table:", + "cellFillColor": "Cell Fill Color", + "borderColor": "Border Color", + "borderWidth": "Border width", + "unknownAction": "Unknown Action", + "borders": { + "all": "All borders", + "outside": "Outside borders", + "inside": "Inside borders", + "none": "No borders", + "remove": "Remove borders", + "top": "Top border", + "bottom": "Bottom border", + "left": "Left border", + "right": "Right border", + "styleAriaLabel": "Border style", + "tooltip": "Borders" + }, + "moreOptions": "More table options", + "styles": { + "title": "Table Styles", + "label": "Styles", + "normalTable": "Normal Table", + "tableGrid": "Table Grid", + "gridTableLight": "Grid Table Light", + "plainTable1": "Plain Table 1", + "plainTable2": "Plain Table 2", + "plainTable3": "Plain Table 3", + "plainTable4": "Plain Table 4", + "gridTable1Light": "Grid Table 1 Light", + "gridTable4Accent1": "Grid Table 4 Accent 1", + "gridTable5Dark": "Grid Table 5 Dark", + "listTable3Accent2": "List Table 3 Accent 2", + "listTable4Accent3": "List Table 4 Accent 3", + "gridTable4Accent5": "Grid Table 4 Accent 5", + "gridTable4Accent6": "Grid Table 4 Accent 6" + } + }, + "tableAdvanced": { + "verticalAlignment": "Vertical alignment", + "top": "Top", + "middle": "Middle", + "bottom": "Bottom", + "cellMargins": "Cell margins", + "textDirection": "Text direction", + "textDirections": { + "horizontal": "Horizontal (LR)", + "verticalRL": "Vertical (top-bottom, RL)", + "verticalLR": "Vertical (bottom-top, LR)" + }, + "toggleNoWrap": "Toggle no-wrap", + "rowHeight": "Row height", + "heightRules": { + "auto": "Auto", + "atLeast": "At least", + "exact": "Exact" + }, + "rule": "Rule", + "height": "Height", + "toggleHeaderRow": "Toggle header row", + "distributeColumns": "Distribute columns evenly", + "autoFit": "Auto-fit to contents", + "tableProperties": "Table properties...", + "tableAlignment": "Table alignment", + "alignTableLeft": "Align table left", + "alignTableCenter": "Align table center", + "alignTableRight": "Align table right", + "tableOptionsMenu": "Table options menu", + "tableOptions": "Table options" + }, + "imageTransform": { + "tooltip": "Transform", + "rotateClockwise": "Rotate clockwise", + "rotateCounterClockwise": "Rotate counter-clockwise", + "flipHorizontal": "Flip horizontal", + "flipVertical": "Flip vertical" + }, + "imageWrap": { + "inline": "Inline with text", + "floatLeft": "Float left (wrap right)", + "floatRight": "Float right (wrap left)", + "topAndBottom": "Top and bottom", + "behindText": "Behind text", + "inFrontOfText": "In front of text", + "tooltipPrefix": "Wrap: {label}" + }, + "responsePreview": { + "loading": "{action}...", + "result": "{action} Result", + "closeEsc": "Close (Esc)", + "editPrompt": "Edit the result before accepting:", + "changes": "Changes:", + "original": "Original:", + "new": "New:", + "cancelEdit": "Cancel Edit" + }, + "commentMarkers": { + "resolvedComment": "Resolved comment", + "comment": "Comment" + }, + "editor": { + "toggleCommentsSidebar": "Toggle comments sidebar", + "showDocumentOutline": "Show document outline", + "editing": "Editing", + "editingDescription": "Edit document directly", + "suggesting": "Suggesting", + "suggestingDescription": "Edits become suggestions", + "viewing": "Viewing", + "viewingDescription": "Read-only, no edits", + "failedToParse": "Failed to parse document", + "linkRemoved": "Link removed", + "linkCopied": "Link copied to clipboard", + "failedToSave": "Failed to save document" + }, + "hyperlinkPopup": { + "displayTextPlaceholder": "Display text", + "urlPlaceholder": "https://example.com", + "copyLink": "Copy link", + "editLink": "Edit link", + "removeLink": "Remove link" + }, + "headerFooter": { + "header": "Header", + "footer": "Footer", + "options": "Options", + "insertPageNumber": "Insert current page number", + "insertTotalPages": "Insert total page count", + "remove": "Remove {label}", + "closeEditing": "Close {label} editing" + }, + "image": { + "placeholder": "Image placeholder", + "placeholderText": "[Image]", + "editableAriaLabel": "Editable image" + }, + "ruler": { + "horizontal": "Horizontal ruler", + "vertical": "Vertical ruler", + "firstLineIndent": "First line indent", + "leftIndent": "Left indent", + "rightIndent": "Right indent", + "topMargin": "Top margin", + "bottomMargin": "Bottom margin" + }, + "print": { + "label": "Print", + "allPages": "All ({totalPages} pages)", + "singlePage": "Page {start}", + "pageRange": "Pages {start}-{end}" + }, + "unsaved": { + "unsaved": "Unsaved", + "saved": "Saved", + "unsavedTitle": "Document has unsaved changes", + "savedTitle": "All changes saved", + "unsavedAriaLabel": "Unsaved changes", + "savedAriaLabel": "All changes saved" + }, + "loading": { + "label": "Loading" + } +} diff --git a/packages/vue/package.json b/packages/vue/package.json index 867142a2..c4f929ae 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -45,6 +45,7 @@ "access": "public" }, "devDependencies": { + "prosemirror-state": "^1.4.3", "prosemirror-view": "^1.41.6" } } diff --git a/packages/vue/src/components/AIContextMenu.vue b/packages/vue/src/components/AIContextMenu.vue new file mode 100644 index 00000000..2f518b04 --- /dev/null +++ b/packages/vue/src/components/AIContextMenu.vue @@ -0,0 +1,133 @@ + + + + + diff --git a/packages/vue/src/components/AIResponsePreview.vue b/packages/vue/src/components/AIResponsePreview.vue new file mode 100644 index 00000000..f3f0aaa9 --- /dev/null +++ b/packages/vue/src/components/AIResponsePreview.vue @@ -0,0 +1,196 @@ + + + + + diff --git a/packages/vue/src/components/InlineHeaderFooterEditor.vue b/packages/vue/src/components/InlineHeaderFooterEditor.vue new file mode 100644 index 00000000..cb740a57 --- /dev/null +++ b/packages/vue/src/components/InlineHeaderFooterEditor.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/packages/vue/src/components/InsertImageDialog.vue b/packages/vue/src/components/InsertImageDialog.vue new file mode 100644 index 00000000..33e07993 --- /dev/null +++ b/packages/vue/src/components/InsertImageDialog.vue @@ -0,0 +1,173 @@ + + + + + diff --git a/packages/vue/src/components/InsertSymbolDialog.vue b/packages/vue/src/components/InsertSymbolDialog.vue new file mode 100644 index 00000000..991b858c --- /dev/null +++ b/packages/vue/src/components/InsertSymbolDialog.vue @@ -0,0 +1,214 @@ + + + + + diff --git a/packages/vue/src/components/InsertTableDialog.vue b/packages/vue/src/components/InsertTableDialog.vue new file mode 100644 index 00000000..6cb1b3ca --- /dev/null +++ b/packages/vue/src/components/InsertTableDialog.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/packages/vue/src/components/KeyboardShortcutsDialog.vue b/packages/vue/src/components/KeyboardShortcutsDialog.vue new file mode 100644 index 00000000..e45b74a2 --- /dev/null +++ b/packages/vue/src/components/KeyboardShortcutsDialog.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/packages/vue/src/components/MenuBar.vue b/packages/vue/src/components/MenuBar.vue new file mode 100644 index 00000000..f79d5667 --- /dev/null +++ b/packages/vue/src/components/MenuBar.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/packages/vue/src/components/PageSetupDialog.vue b/packages/vue/src/components/PageSetupDialog.vue new file mode 100644 index 00000000..7e49615d --- /dev/null +++ b/packages/vue/src/components/PageSetupDialog.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/packages/vue/src/components/PasteSpecialDialog.vue b/packages/vue/src/components/PasteSpecialDialog.vue new file mode 100644 index 00000000..9fce8966 --- /dev/null +++ b/packages/vue/src/components/PasteSpecialDialog.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/packages/vue/src/components/PrintButton.vue b/packages/vue/src/components/PrintButton.vue new file mode 100644 index 00000000..31e2ff20 --- /dev/null +++ b/packages/vue/src/components/PrintButton.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/packages/vue/src/components/ResponsiveToolbar.vue b/packages/vue/src/components/ResponsiveToolbar.vue new file mode 100644 index 00000000..8d08dd91 --- /dev/null +++ b/packages/vue/src/components/ResponsiveToolbar.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/packages/vue/src/components/TablePropertiesDialog.vue b/packages/vue/src/components/TablePropertiesDialog.vue new file mode 100644 index 00000000..e14b6b2b --- /dev/null +++ b/packages/vue/src/components/TablePropertiesDialog.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/packages/vue/src/components/TableStyleGallery.vue b/packages/vue/src/components/TableStyleGallery.vue new file mode 100644 index 00000000..9a06e4d9 --- /dev/null +++ b/packages/vue/src/components/TableStyleGallery.vue @@ -0,0 +1,137 @@ + + + + + diff --git a/packages/vue/src/components/TableToolbar.vue b/packages/vue/src/components/TableToolbar.vue new file mode 100644 index 00000000..ebbd3a04 --- /dev/null +++ b/packages/vue/src/components/TableToolbar.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/packages/vue/src/components/TextContextMenu.vue b/packages/vue/src/components/TextContextMenu.vue new file mode 100644 index 00000000..c0bf98fd --- /dev/null +++ b/packages/vue/src/components/TextContextMenu.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/packages/vue/src/components/UnsavedIndicator.vue b/packages/vue/src/components/UnsavedIndicator.vue new file mode 100644 index 00000000..f9fb2d47 --- /dev/null +++ b/packages/vue/src/components/UnsavedIndicator.vue @@ -0,0 +1,104 @@ + + + + + diff --git a/packages/vue/src/components/VerticalRuler.vue b/packages/vue/src/components/VerticalRuler.vue new file mode 100644 index 00000000..36ad080d --- /dev/null +++ b/packages/vue/src/components/VerticalRuler.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/packages/vue/src/components/sidebar/AddCommentCard.vue b/packages/vue/src/components/sidebar/AddCommentCard.vue new file mode 100644 index 00000000..b9ad390a --- /dev/null +++ b/packages/vue/src/components/sidebar/AddCommentCard.vue @@ -0,0 +1,95 @@ +