@harbour-enterprises/superdoc 0.22.1 → 0.22.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/dist/chunks/{PdfViewer-CBmOiHsj.es.js → PdfViewer-BLHsHKWf.es.js} +1 -1
  2. package/dist/chunks/{PdfViewer-D2BPnEBG.cjs → PdfViewer-C9bdbIaV.cjs} +1 -1
  3. package/dist/chunks/{index-BSDcfSFc.es.js → index-DGn4kyLG.es.js} +3 -3
  4. package/dist/chunks/{index-B0CI50e4.cjs → index-QO_BuqN-.cjs} +3 -3
  5. package/dist/chunks/{super-editor.es-DOOwW-Iv.cjs → super-editor.es-CX7qZELP.cjs} +19 -3
  6. package/dist/chunks/{super-editor.es-BW1T3N2-.es.js → super-editor.es-YBQ4PDxD.es.js} +19 -3
  7. package/dist/super-editor/ai-writer.es.js +2 -2
  8. package/dist/super-editor/chunks/{converter-UuZxU-p8.js → converter-DIyhRrPw.js} +18 -2
  9. package/dist/super-editor/chunks/{docx-zipper-Bss48sB0.js → docx-zipper-BHvvfWr8.js} +1 -1
  10. package/dist/super-editor/chunks/{editor--v3HbUU0.js → editor-DsJzlCE-.js} +3 -3
  11. package/dist/super-editor/chunks/{toolbar-BeXlvdV8.js → toolbar-BOfUqY_R.js} +2 -2
  12. package/dist/super-editor/converter.es.js +1 -1
  13. package/dist/super-editor/docx-zipper.es.js +2 -2
  14. package/dist/super-editor/editor.es.js +3 -3
  15. package/dist/super-editor/file-zipper.es.js +1 -1
  16. package/dist/super-editor/src/core/helpers/htmlSanitizer.d.ts +1 -1
  17. package/dist/super-editor/super-editor.es.js +6 -6
  18. package/dist/super-editor/toolbar.es.js +2 -2
  19. package/dist/super-editor.cjs +1 -1
  20. package/dist/super-editor.es.js +1 -1
  21. package/dist/superdoc.cjs +2 -2
  22. package/dist/superdoc.es.js +2 -2
  23. package/dist/superdoc.umd.js +20 -4
  24. package/dist/superdoc.umd.js.map +1 -1
  25. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { m as defineComponent, B as h, O as Transition, $ as process$1, I as watchEffect, d as computed, r as ref, j as onMounted, W as onUnmounted, c as createElementBlock, o as openBlock, a as createBaseVNode, f as createCommentVNode, v as createVNode, x as unref } from "./vue-CXxsqYcP.es.js";
2
- import { d as derived, c, a as cB, f as fadeInTransition, b as cM, N as NBaseLoading, w as warnOnce, u as useConfig, e as useTheme, p as pxfy, g as createKey, h as useThemeClass, i as useCompitable, _ as _export_sfc, j as useSuperdocStore, s as storeToRefs, k as useSelection } from "./index-BSDcfSFc.es.js";
2
+ import { d as derived, c, a as cB, f as fadeInTransition, b as cM, N as NBaseLoading, w as warnOnce, u as useConfig, e as useTheme, p as pxfy, g as createKey, h as useThemeClass, i as useCompitable, _ as _export_sfc, j as useSuperdocStore, s as storeToRefs, k as useSelection } from "./index-DGn4kyLG.es.js";
3
3
  function self(vars) {
4
4
  const {
5
5
  opacityDisabled,
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const vue = require("./vue-DWle4Cai.cjs");
4
- const superdoc = require("./index-B0CI50e4.cjs");
4
+ const superdoc = require("./index-QO_BuqN-.cjs");
5
5
  function self(vars) {
6
6
  const {
7
7
  opacityDisabled,
@@ -1,4 +1,4 @@
1
- import { q as index$1, C as CommentsPluginKey, h as TrackChangesBasePluginKey, E as Editor, n as getRichTextExtensions, f as SuperInput, e as SuperEditor, A as AIWriter, g as SuperToolbar, i as createZip } from "./super-editor.es-BW1T3N2-.es.js";
1
+ import { q as index$1, C as CommentsPluginKey, h as TrackChangesBasePluginKey, E as Editor, n as getRichTextExtensions, f as SuperInput, e as SuperEditor, A as AIWriter, g as SuperToolbar, i as createZip } from "./super-editor.es-YBQ4PDxD.es.js";
2
2
  import { a0 as effectScope, r as ref, _ as markRaw, $ as process$1, a1 as toRaw, d as computed, a2 as isRef, a3 as isReactive, C as toRef, i as inject, p as getCurrentInstance, l as watch, x as unref, a4 as hasInjectionContext, M as reactive, s as nextTick, a5 as getCurrentScope, a6 as onScopeDispose, a7 as toRefs, g as global$1, J as shallowRef, N as readonly, j as onMounted, k as onBeforeUnmount, h as onBeforeMount, S as onActivated, q as onDeactivated, z as createTextVNode, F as Fragment, Q as Comment, m as defineComponent, D as provide, H as withDirectives, B as h, U as Teleport, R as renderSlot, V as isVNode, I as watchEffect, O as Transition, a8 as TransitionGroup, E as mergeProps, P as vShow, G as cloneVNode, T as Text, c as createElementBlock, o as openBlock, t as toDisplayString, v as createVNode, y as withCtx, a as createBaseVNode, A as normalizeStyle, f as createCommentVNode, u as createBlock, w as withModifiers, n as normalizeClass, a9 as resolveDirective, e as renderList, b as createApp, X as resolveDynamicComponent, aa as defineAsyncComponent } from "./vue-CXxsqYcP.es.js";
3
3
  import { B as Buffer$2 } from "./jszip-B8KIZSNe.es.js";
4
4
  import { B as BlankDOCX } from "./blank-docx-iwdyG9RH.es.js";
@@ -17397,7 +17397,7 @@ const _sfc_main = {
17397
17397
  __name: "SuperDoc",
17398
17398
  emits: ["selection-update"],
17399
17399
  setup(__props, { emit: __emit }) {
17400
- const PdfViewer = defineAsyncComponent(() => import("./PdfViewer-CBmOiHsj.es.js"));
17400
+ const PdfViewer = defineAsyncComponent(() => import("./PdfViewer-BLHsHKWf.es.js"));
17401
17401
  const superdocStore = useSuperdocStore();
17402
17402
  const commentsStore = useCommentsStore();
17403
17403
  const {
@@ -18044,7 +18044,7 @@ class SuperDoc extends EventEmitter {
18044
18044
  this.config.colors = shuffleArray(this.config.colors);
18045
18045
  this.userColorMap = /* @__PURE__ */ new Map();
18046
18046
  this.colorIndex = 0;
18047
- this.version = "0.22.0";
18047
+ this.version = "0.22.2";
18048
18048
  this.#log("🦋 [superdoc] Using SuperDoc version:", this.version);
18049
18049
  this.superdocId = config.superdocId || v4();
18050
18050
  this.colors = this.config.colors;
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- const superEditor_es = require("./super-editor.es-DOOwW-Iv.cjs");
2
+ const superEditor_es = require("./super-editor.es-CX7qZELP.cjs");
3
3
  const vue = require("./vue-DWle4Cai.cjs");
4
4
  const jszip = require("./jszip-b7l8QkfH.cjs");
5
5
  const blankDocx = require("./blank-docx-CPqX9RF5.cjs");
@@ -17414,7 +17414,7 @@ const _sfc_main = {
17414
17414
  __name: "SuperDoc",
17415
17415
  emits: ["selection-update"],
17416
17416
  setup(__props, { emit: __emit }) {
17417
- const PdfViewer = vue.defineAsyncComponent(() => Promise.resolve().then(() => require("./PdfViewer-D2BPnEBG.cjs")));
17417
+ const PdfViewer = vue.defineAsyncComponent(() => Promise.resolve().then(() => require("./PdfViewer-C9bdbIaV.cjs")));
17418
17418
  const superdocStore = useSuperdocStore();
17419
17419
  const commentsStore = useCommentsStore();
17420
17420
  const {
@@ -18061,7 +18061,7 @@ class SuperDoc extends eventemitter3.EventEmitter {
18061
18061
  this.config.colors = shuffleArray(this.config.colors);
18062
18062
  this.userColorMap = /* @__PURE__ */ new Map();
18063
18063
  this.colorIndex = 0;
18064
- this.version = "0.22.0";
18064
+ this.version = "0.22.2";
18065
18065
  this.#log("🦋 [superdoc] Using SuperDoc version:", this.version);
18066
18066
  this.superdocId = config.superdocId || uuid.v4();
18067
18067
  this.colors = this.config.colors;
@@ -21414,6 +21414,16 @@ function stripHtmlStyles(html) {
21414
21414
  if (node.nodeType !== window.Node.ELEMENT_NODE) return;
21415
21415
  [...node.attributes].forEach((attr) => {
21416
21416
  const name = attr.name.toLowerCase();
21417
+ if (node.nodeName.toLowerCase() === "span") {
21418
+ node.innerHTML = node.innerHTML.replace(/(\S) (<\/span>)/g, "$1&nbsp;$2");
21419
+ }
21420
+ if (name === "style") {
21421
+ const cleanedStyle = cleanStyle(attr.value);
21422
+ if (!cleanedStyle) {
21423
+ node.removeAttribute(attr.name);
21424
+ } else node.setAttribute(attr.name, cleanedStyle);
21425
+ return;
21426
+ }
21417
21427
  const shouldKeep = SUPPORTED_ATTRS.includes(name) || name.startsWith("data-");
21418
21428
  if (!shouldKeep) {
21419
21429
  node.removeAttribute(attr.name);
@@ -21424,6 +21434,12 @@ function stripHtmlStyles(html) {
21424
21434
  cleanNode(doc2.body);
21425
21435
  return doc2.body.innerHTML;
21426
21436
  }
21437
+ function cleanStyle(style2) {
21438
+ if (!style2) return "";
21439
+ const declarations = style2.split(";").map((s) => s.trim()).filter(Boolean);
21440
+ const textAlign = declarations.find((d2) => d2.startsWith("text-align"));
21441
+ return textAlign ? `${textAlign};` : "";
21442
+ }
21427
21443
  function createDocFromHTML(content, schema, options = {}) {
21428
21444
  const { isImport = false } = options;
21429
21445
  let parsedContent;
@@ -33508,7 +33524,7 @@ const _SuperConverter = class _SuperConverter2 {
33508
33524
  return;
33509
33525
  }
33510
33526
  }
33511
- static updateDocumentVersion(docx = this.convertedXml, version2 = "0.22.0") {
33527
+ static updateDocumentVersion(docx = this.convertedXml, version2 = "0.22.2") {
33512
33528
  const customLocation = "docProps/custom.xml";
33513
33529
  if (!docx[customLocation]) {
33514
33530
  docx[customLocation] = generateCustomXml();
@@ -33997,7 +34013,7 @@ function storeSuperdocVersion(docx) {
33997
34013
  function generateCustomXml() {
33998
34014
  return DEFAULT_CUSTOM_XML;
33999
34015
  }
34000
- function generateSuperdocVersion(pid = 2, version2 = "0.22.0") {
34016
+ function generateSuperdocVersion(pid = 2, version2 = "0.22.2") {
34001
34017
  return {
34002
34018
  type: "element",
34003
34019
  name: "property",
@@ -51440,7 +51456,7 @@ const _Editor = class _Editor2 extends EventEmitter$1 {
51440
51456
  * @returns {Object | void} Migration results
51441
51457
  */
51442
51458
  processCollaborationMigrations() {
51443
- console.debug("[checkVersionMigrations] Current editor version", "0.22.0");
51459
+ console.debug("[checkVersionMigrations] Current editor version", "0.22.2");
51444
51460
  if (!this.options.ydoc) return;
51445
51461
  const metaMap = this.options.ydoc.getMap("meta");
51446
51462
  let docVersion = metaMap.get("version");
@@ -21397,6 +21397,16 @@ function stripHtmlStyles(html) {
21397
21397
  if (node.nodeType !== window.Node.ELEMENT_NODE) return;
21398
21398
  [...node.attributes].forEach((attr) => {
21399
21399
  const name = attr.name.toLowerCase();
21400
+ if (node.nodeName.toLowerCase() === "span") {
21401
+ node.innerHTML = node.innerHTML.replace(/(\S) (<\/span>)/g, "$1&nbsp;$2");
21402
+ }
21403
+ if (name === "style") {
21404
+ const cleanedStyle = cleanStyle(attr.value);
21405
+ if (!cleanedStyle) {
21406
+ node.removeAttribute(attr.name);
21407
+ } else node.setAttribute(attr.name, cleanedStyle);
21408
+ return;
21409
+ }
21400
21410
  const shouldKeep = SUPPORTED_ATTRS.includes(name) || name.startsWith("data-");
21401
21411
  if (!shouldKeep) {
21402
21412
  node.removeAttribute(attr.name);
@@ -21407,6 +21417,12 @@ function stripHtmlStyles(html) {
21407
21417
  cleanNode(doc2.body);
21408
21418
  return doc2.body.innerHTML;
21409
21419
  }
21420
+ function cleanStyle(style2) {
21421
+ if (!style2) return "";
21422
+ const declarations = style2.split(";").map((s) => s.trim()).filter(Boolean);
21423
+ const textAlign = declarations.find((d2) => d2.startsWith("text-align"));
21424
+ return textAlign ? `${textAlign};` : "";
21425
+ }
21410
21426
  function createDocFromHTML(content, schema, options = {}) {
21411
21427
  const { isImport = false } = options;
21412
21428
  let parsedContent;
@@ -33491,7 +33507,7 @@ const _SuperConverter = class _SuperConverter2 {
33491
33507
  return;
33492
33508
  }
33493
33509
  }
33494
- static updateDocumentVersion(docx = this.convertedXml, version2 = "0.22.0") {
33510
+ static updateDocumentVersion(docx = this.convertedXml, version2 = "0.22.2") {
33495
33511
  const customLocation = "docProps/custom.xml";
33496
33512
  if (!docx[customLocation]) {
33497
33513
  docx[customLocation] = generateCustomXml();
@@ -33980,7 +33996,7 @@ function storeSuperdocVersion(docx) {
33980
33996
  function generateCustomXml() {
33981
33997
  return DEFAULT_CUSTOM_XML;
33982
33998
  }
33983
- function generateSuperdocVersion(pid = 2, version2 = "0.22.0") {
33999
+ function generateSuperdocVersion(pid = 2, version2 = "0.22.2") {
33984
34000
  return {
33985
34001
  type: "element",
33986
34002
  name: "property",
@@ -51423,7 +51439,7 @@ const _Editor = class _Editor2 extends EventEmitter$1 {
51423
51439
  * @returns {Object | void} Migration results
51424
51440
  */
51425
51441
  processCollaborationMigrations() {
51426
- console.debug("[checkVersionMigrations] Current editor version", "0.22.0");
51442
+ console.debug("[checkVersionMigrations] Current editor version", "0.22.2");
51427
51443
  if (!this.options.ydoc) return;
51428
51444
  const metaMap = this.options.ydoc.getMap("meta");
51429
51445
  let docVersion = metaMap.get("version");
@@ -1,6 +1,6 @@
1
1
  import { ref, onMounted, onUnmounted, computed, createElementBlock, openBlock, withModifiers, createElementVNode, withDirectives, unref, vModelText, createCommentVNode, nextTick } from "vue";
2
- import { T as TextSelection } from "./chunks/converter-UuZxU-p8.js";
3
- import { _ as _export_sfc } from "./chunks/editor--v3HbUU0.js";
2
+ import { T as TextSelection } from "./chunks/converter-DIyhRrPw.js";
3
+ import { _ as _export_sfc } from "./chunks/editor-DsJzlCE-.js";
4
4
  const DEFAULT_API_ENDPOINT = "https://sd-dev-express-gateway-i6xtm.ondigitalocean.app/insights";
5
5
  const SYSTEM_PROMPT = "You are an expert copywriter and you are immersed in a document editor. You are to provide document related text responses based on the user prompts. Only write what is asked for. Do not provide explanations. Try to keep placeholders as short as possible. Do not output your prompt. Your instructions are: ";
6
6
  async function baseInsightsFetch(payload, options = {}) {
@@ -21395,6 +21395,16 @@ function stripHtmlStyles(html) {
21395
21395
  if (node.nodeType !== window.Node.ELEMENT_NODE) return;
21396
21396
  [...node.attributes].forEach((attr) => {
21397
21397
  const name = attr.name.toLowerCase();
21398
+ if (node.nodeName.toLowerCase() === "span") {
21399
+ node.innerHTML = node.innerHTML.replace(/(\S) (<\/span>)/g, "$1&nbsp;$2");
21400
+ }
21401
+ if (name === "style") {
21402
+ const cleanedStyle = cleanStyle(attr.value);
21403
+ if (!cleanedStyle) {
21404
+ node.removeAttribute(attr.name);
21405
+ } else node.setAttribute(attr.name, cleanedStyle);
21406
+ return;
21407
+ }
21398
21408
  const shouldKeep = SUPPORTED_ATTRS.includes(name) || name.startsWith("data-");
21399
21409
  if (!shouldKeep) {
21400
21410
  node.removeAttribute(attr.name);
@@ -21405,6 +21415,12 @@ function stripHtmlStyles(html) {
21405
21415
  cleanNode(doc2.body);
21406
21416
  return doc2.body.innerHTML;
21407
21417
  }
21418
+ function cleanStyle(style) {
21419
+ if (!style) return "";
21420
+ const declarations = style.split(";").map((s) => s.trim()).filter(Boolean);
21421
+ const textAlign = declarations.find((d2) => d2.startsWith("text-align"));
21422
+ return textAlign ? `${textAlign};` : "";
21423
+ }
21408
21424
  function createDocFromHTML(content, schema, options = {}) {
21409
21425
  const { isImport = false } = options;
21410
21426
  let parsedContent;
@@ -33498,7 +33514,7 @@ const _SuperConverter = class _SuperConverter {
33498
33514
  return;
33499
33515
  }
33500
33516
  }
33501
- static updateDocumentVersion(docx = this.convertedXml, version = "0.22.0") {
33517
+ static updateDocumentVersion(docx = this.convertedXml, version = "0.22.2") {
33502
33518
  const customLocation = "docProps/custom.xml";
33503
33519
  if (!docx[customLocation]) {
33504
33520
  docx[customLocation] = generateCustomXml();
@@ -33990,7 +34006,7 @@ function storeSuperdocVersion(docx) {
33990
34006
  function generateCustomXml() {
33991
34007
  return DEFAULT_CUSTOM_XML;
33992
34008
  }
33993
- function generateSuperdocVersion(pid = 2, version = "0.22.0") {
34009
+ function generateSuperdocVersion(pid = 2, version = "0.22.2") {
33994
34010
  return {
33995
34011
  type: "element",
33996
34012
  name: "property",
@@ -1,4 +1,4 @@
1
- import { p as process$1, aw as commonjsGlobal, B as Buffer, ax as getDefaultExportFromCjs, ay as getContentTypesFromXml, az as xmljs } from "./converter-UuZxU-p8.js";
1
+ import { p as process$1, aw as commonjsGlobal, B as Buffer, ax as getDefaultExportFromCjs, ay as getContentTypesFromXml, az as xmljs } from "./converter-DIyhRrPw.js";
2
2
  function commonjsRequire(path) {
3
3
  throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
4
4
  }
@@ -12,9 +12,9 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
12
12
  var _Attribute_static, getGlobalAttributes_fn, getNodeAndMarksAttributes_fn, _Schema_static, createNodesSchema_fn, createMarksSchema_fn, _events, _ExtensionService_instances, setupExtensions_fn, attachEditorEvents_fn, _editor, _stateValidators, _xmlValidators, _requiredNodeTypes, _requiredMarkTypes, _SuperValidator_instances, initializeValidators_fn, collectValidatorRequirements_fn, analyzeDocument_fn, _commandService, _Editor_instances, initContainerElement_fn, init_fn, initRichText_fn, onFocus_fn, checkHeadless_fn, registerCopyHandler_fn, insertNewFileData_fn, registerPluginByNameIfNotExists_fn, createExtensionService_fn, createCommandService_fn, createConverter_fn, initMedia_fn, initFonts_fn, createSchema_fn, generatePmData_fn, createView_fn, onCollaborationReady_fn, initComments_fn, initPagination_fn, dispatchTransaction_fn, handleNodeSelection_fn, prepareDocumentForImport_fn, prepareDocumentForExport_fn, endCollaboration_fn, validateDocumentInit_fn, validateDocumentExport_fn, initDevTools_fn, _DocumentSectionView_instances, init_fn2, addToolTip_fn, _ListItemNodeView_instances, init_fn3, _FieldAnnotationView_instances, createAnnotation_fn, _AutoPageNumberNodeView_instances, renderDom_fn, scheduleUpdateNodeStyle_fn;
13
13
  import * as Y from "yjs";
14
14
  import { UndoManager, Item as Item$1, ContentType, Text as Text$1, XmlElement, encodeStateAsUpdate } from "yjs";
15
- import { P as PluginKey, a as Plugin, M as Mapping, N as NodeSelection, S as Selection, T as TextSelection, b as Slice, D as DOMSerializer, F as Fragment, c as DOMParser$1, d as Mark$1, e as dropPoint, A as AllSelection, p as process$1, B as Buffer2, f as callOrGet, g as getExtensionConfigField, h as getMarkType, i as getMarksFromSelection, j as getNodeType, k as getSchemaTypeNameByName, l as Schema$1, m as cleanSchemaItem, n as canSplit, o as defaultBlockAt$1, q as liftTarget, r as canJoin, s as joinPoint, t as replaceStep$1, R as ReplaceAroundStep$1, u as isTextSelection, v as getMarkRange, w as isMarkActive, x as isNodeActive, y as deleteProps, z as processContent, C as ReplaceStep, E as NodeRange, G as findWrapping, L as ListHelpers, H as findParentNode, I as isMacOS, J as isIOS, K as getSchemaTypeByName, O as inputRulesPlugin, Q as TrackDeleteMarkName, U as TrackInsertMarkName, V as v4, W as TrackFormatMarkName, X as comments_module_events, Y as findMark, Z as objectIncludes, _ as AddMarkStep, $ as RemoveMarkStep, a0 as twipsToLines, a1 as pixelsToTwips, a2 as helpers, a3 as posToDOMRect, a4 as CommandService, a5 as SuperConverter, a6 as createDocument, a7 as createDocFromMarkdown, a8 as createDocFromHTML, a9 as EditorState, aa as hasSomeParentWithClass, ab as isActive, ac as unflattenListsInHtml, ad as parseSizeUnit, ae as minMax, af as getLineHeightValueString, ag as updateDOMAttributes, ah as findChildren$5, ai as htmlHandler, aj as generateRandomSigned32BitIntStrId, ak as InputRule, al as kebabCase, am as findParentNodeClosestToPos, an as getListItemStyleDefinitions, ao as docxNumberigHelpers, ap as parseIndentElement, aq as combineIndents, ar as SelectionRange, as as Transform, at as isInTable$1, au as generateDocxRandomId, av as insertNewRelationship } from "./converter-UuZxU-p8.js";
15
+ import { P as PluginKey, a as Plugin, M as Mapping, N as NodeSelection, S as Selection, T as TextSelection, b as Slice, D as DOMSerializer, F as Fragment, c as DOMParser$1, d as Mark$1, e as dropPoint, A as AllSelection, p as process$1, B as Buffer2, f as callOrGet, g as getExtensionConfigField, h as getMarkType, i as getMarksFromSelection, j as getNodeType, k as getSchemaTypeNameByName, l as Schema$1, m as cleanSchemaItem, n as canSplit, o as defaultBlockAt$1, q as liftTarget, r as canJoin, s as joinPoint, t as replaceStep$1, R as ReplaceAroundStep$1, u as isTextSelection, v as getMarkRange, w as isMarkActive, x as isNodeActive, y as deleteProps, z as processContent, C as ReplaceStep, E as NodeRange, G as findWrapping, L as ListHelpers, H as findParentNode, I as isMacOS, J as isIOS, K as getSchemaTypeByName, O as inputRulesPlugin, Q as TrackDeleteMarkName, U as TrackInsertMarkName, V as v4, W as TrackFormatMarkName, X as comments_module_events, Y as findMark, Z as objectIncludes, _ as AddMarkStep, $ as RemoveMarkStep, a0 as twipsToLines, a1 as pixelsToTwips, a2 as helpers, a3 as posToDOMRect, a4 as CommandService, a5 as SuperConverter, a6 as createDocument, a7 as createDocFromMarkdown, a8 as createDocFromHTML, a9 as EditorState, aa as hasSomeParentWithClass, ab as isActive, ac as unflattenListsInHtml, ad as parseSizeUnit, ae as minMax, af as getLineHeightValueString, ag as updateDOMAttributes, ah as findChildren$5, ai as htmlHandler, aj as generateRandomSigned32BitIntStrId, ak as InputRule, al as kebabCase, am as findParentNodeClosestToPos, an as getListItemStyleDefinitions, ao as docxNumberigHelpers, ap as parseIndentElement, aq as combineIndents, ar as SelectionRange, as as Transform, at as isInTable$1, au as generateDocxRandomId, av as insertNewRelationship } from "./converter-DIyhRrPw.js";
16
16
  import { ref, computed, createElementBlock, openBlock, withModifiers, Fragment as Fragment$1, renderList, normalizeClass, createCommentVNode, toDisplayString, createElementVNode, createApp } from "vue";
17
- import { D as DocxZipper } from "./docx-zipper-Bss48sB0.js";
17
+ import { D as DocxZipper } from "./docx-zipper-BHvvfWr8.js";
18
18
  var GOOD_LEAF_SIZE = 200;
19
19
  var RopeSequence = function RopeSequence2() {
20
20
  };
@@ -14876,7 +14876,7 @@ const _Editor = class _Editor extends EventEmitter {
14876
14876
  * @returns {Object | void} Migration results
14877
14877
  */
14878
14878
  processCollaborationMigrations() {
14879
- console.debug("[checkVersionMigrations] Current editor version", "0.22.0");
14879
+ console.debug("[checkVersionMigrations] Current editor version", "0.22.2");
14880
14880
  if (!this.options.ydoc) return;
14881
14881
  const metaMap = this.options.ydoc.getMap("meta");
14882
14882
  let docVersion = metaMap.get("version");
@@ -1,6 +1,6 @@
1
1
  import { computed, createElementBlock, openBlock, createElementVNode, createCommentVNode, normalizeClass, normalizeStyle, ref, withKeys, unref, withModifiers, createBlock, toDisplayString, withDirectives, vModelText, nextTick, getCurrentInstance, createVNode, readonly, watch, onMounted, onBeforeUnmount, reactive, onBeforeMount, inject, onActivated, onDeactivated, createTextVNode, Fragment, Comment, defineComponent, provide, h, Teleport, toRef, renderSlot, isVNode, shallowRef, watchEffect, mergeProps, Transition, vShow, cloneVNode, Text, renderList, withCtx } from "vue";
2
- import { p as process$1 } from "./converter-UuZxU-p8.js";
3
- import { _ as _export_sfc, u as useHighContrastMode, g as global$1 } from "./editor--v3HbUU0.js";
2
+ import { p as process$1 } from "./converter-DIyhRrPw.js";
3
+ import { _ as _export_sfc, u as useHighContrastMode, g as global$1 } from "./editor-DsJzlCE-.js";
4
4
  const sanitizeNumber = (value, defaultNumber) => {
5
5
  let sanitized = value.replace(/[^0-9.]/g, "");
6
6
  sanitized = parseFloat(sanitized);
@@ -1,4 +1,4 @@
1
- import { a5 } from "./chunks/converter-UuZxU-p8.js";
1
+ import { a5 } from "./chunks/converter-DIyhRrPw.js";
2
2
  import "vue";
3
3
  export {
4
4
  a5 as SuperConverter
@@ -1,5 +1,5 @@
1
- import "./chunks/converter-UuZxU-p8.js";
2
- import { D } from "./chunks/docx-zipper-Bss48sB0.js";
1
+ import "./chunks/converter-DIyhRrPw.js";
2
+ import { D } from "./chunks/docx-zipper-BHvvfWr8.js";
3
3
  export {
4
4
  D as default
5
5
  };
@@ -1,6 +1,6 @@
1
- import { E } from "./chunks/editor--v3HbUU0.js";
2
- import "./chunks/converter-UuZxU-p8.js";
3
- import "./chunks/docx-zipper-Bss48sB0.js";
1
+ import { E } from "./chunks/editor-DsJzlCE-.js";
2
+ import "./chunks/converter-DIyhRrPw.js";
3
+ import "./chunks/docx-zipper-BHvvfWr8.js";
4
4
  export {
5
5
  E as Editor
6
6
  };
@@ -1,4 +1,4 @@
1
- import { J as JSZip } from "./chunks/docx-zipper-Bss48sB0.js";
1
+ import { J as JSZip } from "./chunks/docx-zipper-BHvvfWr8.js";
2
2
  async function createZip(blobs, fileNames) {
3
3
  const zip = new JSZip();
4
4
  blobs.forEach((blob, index) => {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Strip all inline styles and non-semantic attributes from HTML
2
+ * Strip all inline styles(but alignment) and non-semantic attributes from HTML
3
3
  * Preserves structure while removing presentation
4
4
  *
5
5
  * @param {string} html - Raw HTML string
@@ -9,14 +9,14 @@ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read fr
9
9
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
10
10
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
11
11
  var _SuperToolbar_instances, initToolbarGroups_fn, _interceptedCommands, makeToolbarItems_fn, initDefaultFonts_fn, updateHighlightColors_fn, deactivateAll_fn, updateToolbarHistory_fn, runCommandWithArgumentOnly_fn;
12
- import { ax as getDefaultExportFromCjs, V as v4, T as TextSelection$1, v as getMarkRange, aA as vClickOutside, H as findParentNode, aB as getActiveFormatting, at as isInTable, aC as readFromClipboard, aD as handleClipboardPaste, aE as getFileObject, aF as runPropertyTranslators, aG as translator, aH as translator$1, aI as translator$2, aJ as translator$3, aK as translator$4, aL as translator$5, aM as translator$6, aN as translator$7, aO as translator$8, aP as translator$9, aQ as translator$a, aR as translator$b, aS as translator$c, aT as translator$d, aU as translator$e, aV as translator$f, aW as translator$g, aX as translator$h, aY as translator$i, aZ as translator$j, a_ as translator$k, a$ as translator$l, b0 as translator$m, b1 as translator$n, b2 as translator$o, b3 as translator$p, b4 as translator$q, b5 as translator$r, b6 as translator$s, b7 as translator$t, b8 as translator$u, b9 as translator$v, ba as translator$w, bb as translator$x, bc as translator$y, bd as translator$z, be as translator$A, bf as translator$B, bg as translator$C, bh as translator$D, bi as translator$E, bj as translator$F, bk as translator$G, bl as translator$H, bm as translator$I, bn as translator$J, bo as translator$K, bp as translator$L, bq as translator$M, br as translator$N, bs as translator$O, bt as translator$P, bu as translator$Q, bv as translator$R, bw as translator$S, bx as translator$T, by as translator$U, bz as translator$V, bA as translator$W, bB as translator$X, bC as translator$Y, bD as translator$Z, bE as translator$_, bF as translator$$, bG as translator$10, a as Plugin } from "./chunks/converter-UuZxU-p8.js";
13
- import { bH, a5, i, a2 } from "./chunks/converter-UuZxU-p8.js";
14
- import { _ as _export_sfc, u as useHighContrastMode, a as getQuickFormatList, b as generateLinkedStyleString, c as getFileOpener, d as checkAndProcessImage, r as replaceSelectionWithImagePlaceholder, e as uploadAndInsertImage, y as yUndoPluginKey, f as undoDepth, h as redoDepth, s as shouldBypassContextMenu, S as SlashMenuPluginKey, E as Editor, i as getStarterExtensions, P as Placeholder, j as getRichTextExtensions, M as Mark, k as Extension, A as Attribute, N as Node } from "./chunks/editor--v3HbUU0.js";
15
- import { n, C, o, T, l, p, m } from "./chunks/editor--v3HbUU0.js";
12
+ import { ax as getDefaultExportFromCjs, V as v4, T as TextSelection$1, v as getMarkRange, aA as vClickOutside, H as findParentNode, aB as getActiveFormatting, at as isInTable, aC as readFromClipboard, aD as handleClipboardPaste, aE as getFileObject, aF as runPropertyTranslators, aG as translator, aH as translator$1, aI as translator$2, aJ as translator$3, aK as translator$4, aL as translator$5, aM as translator$6, aN as translator$7, aO as translator$8, aP as translator$9, aQ as translator$a, aR as translator$b, aS as translator$c, aT as translator$d, aU as translator$e, aV as translator$f, aW as translator$g, aX as translator$h, aY as translator$i, aZ as translator$j, a_ as translator$k, a$ as translator$l, b0 as translator$m, b1 as translator$n, b2 as translator$o, b3 as translator$p, b4 as translator$q, b5 as translator$r, b6 as translator$s, b7 as translator$t, b8 as translator$u, b9 as translator$v, ba as translator$w, bb as translator$x, bc as translator$y, bd as translator$z, be as translator$A, bf as translator$B, bg as translator$C, bh as translator$D, bi as translator$E, bj as translator$F, bk as translator$G, bl as translator$H, bm as translator$I, bn as translator$J, bo as translator$K, bp as translator$L, bq as translator$M, br as translator$N, bs as translator$O, bt as translator$P, bu as translator$Q, bv as translator$R, bw as translator$S, bx as translator$T, by as translator$U, bz as translator$V, bA as translator$W, bB as translator$X, bC as translator$Y, bD as translator$Z, bE as translator$_, bF as translator$$, bG as translator$10, a as Plugin } from "./chunks/converter-DIyhRrPw.js";
13
+ import { bH, a5, i, a2 } from "./chunks/converter-DIyhRrPw.js";
14
+ import { _ as _export_sfc, u as useHighContrastMode, a as getQuickFormatList, b as generateLinkedStyleString, c as getFileOpener, d as checkAndProcessImage, r as replaceSelectionWithImagePlaceholder, e as uploadAndInsertImage, y as yUndoPluginKey, f as undoDepth, h as redoDepth, s as shouldBypassContextMenu, S as SlashMenuPluginKey, E as Editor, i as getStarterExtensions, P as Placeholder, j as getRichTextExtensions, M as Mark, k as Extension, A as Attribute, N as Node } from "./chunks/editor-DsJzlCE-.js";
15
+ import { n, C, o, T, l, p, m } from "./chunks/editor-DsJzlCE-.js";
16
16
  import { ref, onMounted, createElementBlock, openBlock, normalizeClass, unref, Fragment, renderList, createElementVNode, withModifiers, toDisplayString, createCommentVNode, normalizeStyle, computed, watch, withDirectives, withKeys, vModelText, createTextVNode, createVNode, h, createApp, markRaw, nextTick, onBeforeUnmount, reactive, onUnmounted, renderSlot, shallowRef, createBlock, withCtx, resolveDynamicComponent, normalizeProps, guardReactiveProps } from "vue";
17
- import { t as toolbarIcons, s as sanitizeNumber, T as Toolbar, m as magicWandIcon, p as plusIconSvg, a as trashIconSvg, l as linkIconSvg, b as tableIconSvg, c as scissorsIconSvg, d as copyIconSvg, e as pasteIconSvg, f as borderNoneIconSvg, g as arrowsToDotIconSvg, h as arrowsLeftRightIconSvg, w as wrenchIconSvg, u as useMessage, N as NSkeleton } from "./chunks/toolbar-BeXlvdV8.js";
17
+ import { t as toolbarIcons, s as sanitizeNumber, T as Toolbar, m as magicWandIcon, p as plusIconSvg, a as trashIconSvg, l as linkIconSvg, b as tableIconSvg, c as scissorsIconSvg, d as copyIconSvg, e as pasteIconSvg, f as borderNoneIconSvg, g as arrowsToDotIconSvg, h as arrowsLeftRightIconSvg, w as wrenchIconSvg, u as useMessage, N as NSkeleton } from "./chunks/toolbar-BOfUqY_R.js";
18
18
  import AIWriter from "./ai-writer.es.js";
19
- import { D } from "./chunks/docx-zipper-Bss48sB0.js";
19
+ import { D } from "./chunks/docx-zipper-BHvvfWr8.js";
20
20
  import { createZip } from "./file-zipper.es.js";
21
21
  var eventemitter3 = { exports: {} };
22
22
  var hasRequiredEventemitter3;
@@ -1,6 +1,6 @@
1
1
  import "vue";
2
- import { T } from "./chunks/toolbar-BeXlvdV8.js";
3
- import "./chunks/editor--v3HbUU0.js";
2
+ import { T } from "./chunks/toolbar-BOfUqY_R.js";
3
+ import "./chunks/editor-DsJzlCE-.js";
4
4
  export {
5
5
  T as default
6
6
  };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const superEditor_es = require("./chunks/super-editor.es-DOOwW-Iv.cjs");
3
+ const superEditor_es = require("./chunks/super-editor.es-CX7qZELP.cjs");
4
4
  require("./chunks/vue-DWle4Cai.cjs");
5
5
  exports.AIWriter = superEditor_es.AIWriter;
6
6
  exports.AnnotatorHelpers = superEditor_es.AnnotatorHelpers;
@@ -1,4 +1,4 @@
1
- import { A, a, _, C, D, E, b, S, c, d, e, f, g, T, h, i, j, k, l, m, n, o, p, r, q } from "./chunks/super-editor.es-BW1T3N2-.es.js";
1
+ import { A, a, _, C, D, E, b, S, c, d, e, f, g, T, h, i, j, k, l, m, n, o, p, r, q } from "./chunks/super-editor.es-YBQ4PDxD.es.js";
2
2
  import "./chunks/vue-CXxsqYcP.es.js";
3
3
  export {
4
4
  A as AIWriter,
package/dist/superdoc.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const superEditor_es = require("./chunks/super-editor.es-DOOwW-Iv.cjs");
4
- const superdoc = require("./chunks/index-B0CI50e4.cjs");
3
+ const superEditor_es = require("./chunks/super-editor.es-CX7qZELP.cjs");
4
+ const superdoc = require("./chunks/index-QO_BuqN-.cjs");
5
5
  require("./chunks/vue-DWle4Cai.cjs");
6
6
  require("./chunks/jszip-b7l8QkfH.cjs");
7
7
  const blankDocx = require("./chunks/blank-docx-CPqX9RF5.cjs");
@@ -1,5 +1,5 @@
1
- import { a, E, b, S, d, i, j, n, r, p, q } from "./chunks/super-editor.es-BW1T3N2-.es.js";
2
- import { D, H, P, S as S2, m, l } from "./chunks/index-BSDcfSFc.es.js";
1
+ import { a, E, b, S, d, i, j, n, r, p, q } from "./chunks/super-editor.es-YBQ4PDxD.es.js";
2
+ import { D, H, P, S as S2, m, l } from "./chunks/index-DGn4kyLG.es.js";
3
3
  import "./chunks/vue-CXxsqYcP.es.js";
4
4
  import "./chunks/jszip-B8KIZSNe.es.js";
5
5
  import { B } from "./chunks/blank-docx-iwdyG9RH.es.js";
@@ -29139,6 +29139,16 @@
29139
29139
  if (node.nodeType !== window.Node.ELEMENT_NODE) return;
29140
29140
  [...node.attributes].forEach((attr) => {
29141
29141
  const name = attr.name.toLowerCase();
29142
+ if (node.nodeName.toLowerCase() === "span") {
29143
+ node.innerHTML = node.innerHTML.replace(/(\S) (<\/span>)/g, "$1&nbsp;$2");
29144
+ }
29145
+ if (name === "style") {
29146
+ const cleanedStyle = cleanStyle(attr.value);
29147
+ if (!cleanedStyle) {
29148
+ node.removeAttribute(attr.name);
29149
+ } else node.setAttribute(attr.name, cleanedStyle);
29150
+ return;
29151
+ }
29142
29152
  const shouldKeep = SUPPORTED_ATTRS.includes(name) || name.startsWith("data-");
29143
29153
  if (!shouldKeep) {
29144
29154
  node.removeAttribute(attr.name);
@@ -29149,6 +29159,12 @@
29149
29159
  cleanNode(doc2.body);
29150
29160
  return doc2.body.innerHTML;
29151
29161
  }
29162
+ function cleanStyle(style2) {
29163
+ if (!style2) return "";
29164
+ const declarations = style2.split(";").map((s) => s.trim()).filter(Boolean);
29165
+ const textAlign = declarations.find((d2) => d2.startsWith("text-align"));
29166
+ return textAlign ? `${textAlign};` : "";
29167
+ }
29152
29168
  function createDocFromHTML(content, schema, options = {}) {
29153
29169
  const { isImport = false } = options;
29154
29170
  let parsedContent;
@@ -41206,7 +41222,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
41206
41222
  return;
41207
41223
  }
41208
41224
  }
41209
- static updateDocumentVersion(docx = this.convertedXml, version2 = "0.22.0") {
41225
+ static updateDocumentVersion(docx = this.convertedXml, version2 = "0.22.2") {
41210
41226
  const customLocation = "docProps/custom.xml";
41211
41227
  if (!docx[customLocation]) {
41212
41228
  docx[customLocation] = generateCustomXml();
@@ -41695,7 +41711,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
41695
41711
  function generateCustomXml() {
41696
41712
  return DEFAULT_CUSTOM_XML;
41697
41713
  }
41698
- function generateSuperdocVersion(pid = 2, version2 = "0.22.0") {
41714
+ function generateSuperdocVersion(pid = 2, version2 = "0.22.2") {
41699
41715
  return {
41700
41716
  type: "element",
41701
41717
  name: "property",
@@ -59138,7 +59154,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
59138
59154
  * @returns {Object | void} Migration results
59139
59155
  */
59140
59156
  processCollaborationMigrations() {
59141
- console.debug("[checkVersionMigrations] Current editor version", "0.22.0");
59157
+ console.debug("[checkVersionMigrations] Current editor version", "0.22.2");
59142
59158
  if (!this.options.ydoc) return;
59143
59159
  const metaMap = this.options.ydoc.getMap("meta");
59144
59160
  let docVersion = metaMap.get("version");
@@ -111085,7 +111101,7 @@ ${style2}
111085
111101
  this.config.colors = shuffleArray(this.config.colors);
111086
111102
  this.userColorMap = /* @__PURE__ */ new Map();
111087
111103
  this.colorIndex = 0;
111088
- this.version = "0.22.0";
111104
+ this.version = "0.22.2";
111089
111105
  this.#log("🦋 [superdoc] Using SuperDoc version:", this.version);
111090
111106
  this.superdocId = config2.superdocId || v4();
111091
111107
  this.colors = this.config.colors;