@harbour-enterprises/superdoc 0.15.3-next.4 → 0.15.3-next.6

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 (35) hide show
  1. package/dist/chunks/{super-editor.es-bv3S9L-4.es.js → super-editor.es-BP3SXura.es.js} +99 -38
  2. package/dist/chunks/{super-editor.es-Qa8EXNdK.cjs → super-editor.es-DDMJy7qM.cjs} +99 -38
  3. package/dist/super-editor/ai-writer.es.js +2 -2
  4. package/dist/super-editor/chunks/{converter-Bzvjvd9K.js → converter-Dv28F4Os.js} +40 -27
  5. package/dist/super-editor/chunks/{docx-zipper-CwDRuXVt.js → docx-zipper-DulJ_j0U.js} +1 -1
  6. package/dist/super-editor/chunks/{editor-D4Lw4qWd.js → editor-BgxpYGE3.js} +61 -13
  7. package/dist/super-editor/chunks/{toolbar-CsE2H8Ac.js → toolbar-BJShk4vA.js} +2 -2
  8. package/dist/super-editor/converter.es.js +1 -1
  9. package/dist/super-editor/core/super-converter/SuperConverter.d.ts +5 -0
  10. package/dist/super-editor/core/super-converter/SuperConverter.d.ts.map +1 -1
  11. package/dist/super-editor/core/super-converter/exporter.d.ts.map +1 -1
  12. package/dist/super-editor/core/super-converter/v2/importer/markImporter.d.ts.map +1 -1
  13. package/dist/super-editor/core/super-converter/v2/importer/paragraphNodeImporter.d.ts.map +1 -1
  14. package/dist/super-editor/core/super-converter/v2/importer/runNodeImporter.d.ts.map +1 -1
  15. package/dist/super-editor/docx-zipper.es.js +2 -2
  16. package/dist/super-editor/editor.es.js +3 -3
  17. package/dist/super-editor/extensions/bold/bold.d.ts.map +1 -1
  18. package/dist/super-editor/extensions/index.d.ts +2 -1
  19. package/dist/super-editor/extensions/index.d.ts.map +1 -1
  20. package/dist/super-editor/extensions/linked-styles/linked-styles.d.ts.map +1 -1
  21. package/dist/super-editor/extensions/paragraph/paragraph.d.ts.map +1 -1
  22. package/dist/super-editor/extensions/text-transform/index.d.ts +2 -0
  23. package/dist/super-editor/extensions/text-transform/index.d.ts.map +1 -0
  24. package/dist/super-editor/extensions/text-transform/text-transform.d.ts +2 -0
  25. package/dist/super-editor/extensions/text-transform/text-transform.d.ts.map +1 -0
  26. package/dist/super-editor/file-zipper.es.js +1 -1
  27. package/dist/super-editor/super-editor.es.js +6 -6
  28. package/dist/super-editor/toolbar.es.js +2 -2
  29. package/dist/super-editor.cjs +1 -1
  30. package/dist/super-editor.es.js +1 -1
  31. package/dist/superdoc.cjs +2 -2
  32. package/dist/superdoc.es.js +3 -3
  33. package/dist/superdoc.umd.js +100 -39
  34. package/dist/superdoc.umd.js.map +1 -1
  35. package/package.json +1 -1
@@ -19598,7 +19598,7 @@ function parseMarks(property2, unknownMarks = [], docx = null) {
19598
19598
  const marks = [];
19599
19599
  const seen = /* @__PURE__ */ new Set();
19600
19600
  const lang = property2?.elements?.find((el) => el.name === "w:lang");
19601
- const langAttrs = lang?.attributes || {};
19601
+ lang?.attributes || {};
19602
19602
  property2?.elements?.forEach((element) => {
19603
19603
  const marksForType = SuperConverter.markTypes.filter((mark) => mark.name === element.name);
19604
19604
  if (!marksForType.length) {
@@ -19625,13 +19625,21 @@ function parseMarks(property2, unknownMarks = [], docx = null) {
19625
19625
  seen.add(m.type);
19626
19626
  const { attributes = {} } = element;
19627
19627
  const newMark = { type: m.type };
19628
- if (attributes["w:val"] === "0" || attributes["w:val"] === "none") {
19628
+ const exceptionMarks = ["w:b", "w:caps"];
19629
+ if ((attributes["w:val"] === "0" || attributes["w:val"] === "none") && !exceptionMarks.includes(m.name)) {
19629
19630
  return;
19630
19631
  }
19631
- if (["w:bCs"].includes(m.name) && langAttrs["w:eastAsia"]) {
19632
+ if (m.mark) newMark.type = m.mark;
19633
+ if (m.name === "w:caps") {
19634
+ newMark.attrs = {};
19635
+ if (attributes["w:val"] === "0") {
19636
+ newMark.attrs[m.property] = "none";
19637
+ } else {
19638
+ newMark.attrs[m.property] = "uppercase";
19639
+ }
19640
+ marks.push(newMark);
19632
19641
  return;
19633
19642
  }
19634
- if (m.mark) newMark.type = m.mark;
19635
19643
  if (Object.keys(attributes).length) {
19636
19644
  const value = getMarkValue(m.type, attributes, docx);
19637
19645
  if (value === null || value === void 0) return;
@@ -19914,12 +19922,6 @@ const handleParagraphNode = (params2) => {
19914
19922
  };
19915
19923
  }
19916
19924
  }
19917
- if (docx) {
19918
- const { textCase } = getDefaultParagraphStyle(docx, styleId);
19919
- if (textCase) {
19920
- schemaNode.attrs.textCase = textCase;
19921
- }
19922
- }
19923
19925
  if (framePr && framePr.attributes["w:dropCap"]) {
19924
19926
  schemaNode.attrs.dropcap = {
19925
19927
  type: framePr.attributes["w:dropCap"],
@@ -20028,19 +20030,11 @@ const getDefaultParagraphStyle = (docx, styleId = "") => {
20028
20030
  let pPrStyleIdSpacingTag = {};
20029
20031
  let pPrStyleIdIndentTag = {};
20030
20032
  let pPrStyleJc = {};
20031
- let textCase = null;
20032
20033
  if (styleId) {
20033
20034
  const stylesById = styles.elements[0].elements?.find(
20034
20035
  (el) => el.name === "w:style" && el.attributes["w:styleId"] === styleId
20035
20036
  );
20036
20037
  const pPrById = stylesById?.elements?.find((el) => el.name === "w:pPr");
20037
- const basedOn = stylesById?.elements.find((el) => el.name === "w:basedOn");
20038
- const baseStyles = styles.elements[0].elements?.find(
20039
- (el) => el.name === "w:style" && el.attributes["w:styleId"] === basedOn?.attributes["w:val"]
20040
- );
20041
- const rprBaseStyles = baseStyles?.elements?.find((el) => el.name === "w:rPr");
20042
- const caps = rprBaseStyles?.elements?.find((el) => el.name === "w:caps");
20043
- if (caps) textCase = "uppercase";
20044
20038
  pPrStyleIdSpacingTag = pPrById?.elements?.find((el) => el.name === "w:spacing") || {};
20045
20039
  pPrStyleIdIndentTag = pPrById?.elements?.find((el) => el.name === "w:ind") || {};
20046
20040
  pPrStyleJc = pPrById?.elements?.find((el) => el.name === "w:jc") || {};
@@ -20057,8 +20051,7 @@ const getDefaultParagraphStyle = (docx, styleId = "") => {
20057
20051
  return {
20058
20052
  spacing: pPrByIdSpacingAttr || spacingRest,
20059
20053
  indent: pPrByIdIndentAttr || indentRest,
20060
- justify: pPrByIdJcAttr,
20061
- textCase
20054
+ justify: pPrByIdJcAttr
20062
20055
  };
20063
20056
  };
20064
20057
  const paragraphNodeHandlerEntity = {
@@ -26125,6 +26118,13 @@ function translateMark(mark) {
26125
26118
  let value;
26126
26119
  switch (mark.type) {
26127
26120
  case "bold":
26121
+ if (attrs?.value) {
26122
+ markElement.attributes["w:val"] = attrs.value;
26123
+ } else {
26124
+ delete markElement.attributes;
26125
+ }
26126
+ markElement.type = "element";
26127
+ break;
26128
26128
  case "italic":
26129
26129
  delete markElement.attributes;
26130
26130
  markElement.type = "element";
@@ -26158,6 +26158,14 @@ function translateMark(mark) {
26158
26158
  case "textIndent":
26159
26159
  markElement.attributes["w:firstline"] = inchesToTwips(attrs.textIndent);
26160
26160
  break;
26161
+ case "textTransform":
26162
+ if (attrs?.textTransform === "none") {
26163
+ markElement.attributes["w:val"] = "0";
26164
+ } else {
26165
+ delete markElement.attributes;
26166
+ }
26167
+ markElement.type = "element";
26168
+ break;
26161
26169
  case "lineHeight":
26162
26170
  markElement.attributes["w:line"] = linesToTwips(attrs.lineHeight);
26163
26171
  break;
@@ -27580,7 +27588,11 @@ const handleRunNode = (params2) => {
27580
27588
  const textStyleMark = marks.find((m) => m.type === "textStyle");
27581
27589
  const hasFontStyle = textStyleMark && Object.keys(textStyleMark.attrs).length > 0;
27582
27590
  if (defaultNodeStyles.marks && !hasFontStyle) {
27583
- marks.push(...defaultNodeStyles.marks);
27591
+ const hasBoldDisabled = marks.find((m) => m.type === "bold")?.attrs?.value === "0";
27592
+ for (let mark of defaultNodeStyles.marks) {
27593
+ if (["bold"].includes(mark.type) && hasBoldDisabled) continue;
27594
+ marks.push(mark);
27595
+ }
27584
27596
  }
27585
27597
  if (node2.marks) marks.push(...node2.marks);
27586
27598
  const newMarks = createImportMarks(marks);
@@ -28749,7 +28761,7 @@ const _SuperConverter = class _SuperConverter2 {
28749
28761
  return;
28750
28762
  }
28751
28763
  }
28752
- static updateDocumentVersion(docx = this.convertedXml, version2 = "0.15.3-next.4") {
28764
+ static updateDocumentVersion(docx = this.convertedXml, version2 = "0.15.3-next.6") {
28753
28765
  const customLocation = "docProps/custom.xml";
28754
28766
  if (!docx[customLocation]) {
28755
28767
  docx[customLocation] = generateCustomXml();
@@ -29178,10 +29190,10 @@ __publicField$2(_SuperConverter, "allowedElements", Object.freeze({
29178
29190
  "w:commentReference": "commentReference"
29179
29191
  }));
29180
29192
  __publicField$2(_SuperConverter, "markTypes", [
29181
- { name: "w:b", type: "bold" },
29182
- { name: "w:bCs", type: "bold" },
29193
+ { name: "w:b", type: "bold", property: "value" },
29194
+ // { name: 'w:bCs', type: 'bold' },
29183
29195
  { name: "w:i", type: "italic" },
29184
- { name: "w:iCs", type: "italic" },
29196
+ // { name: 'w:iCs', type: 'italic' },
29185
29197
  { name: "w:u", type: "underline", mark: "underline", property: "underlineType" },
29186
29198
  { name: "w:strike", type: "strike", mark: "strike" },
29187
29199
  { name: "w:color", type: "color", mark: "textStyle", property: "color" },
@@ -29193,7 +29205,8 @@ __publicField$2(_SuperConverter, "markTypes", [
29193
29205
  { name: "w:spacing", type: "lineHeight", mark: "textStyle", property: "lineHeight" },
29194
29206
  { name: "link", type: "link", mark: "link", property: "href" },
29195
29207
  { name: "w:highlight", type: "highlight", mark: "highlight", property: "color" },
29196
- { name: "w:shd", type: "highlight", mark: "highlight", property: "color" }
29208
+ { name: "w:shd", type: "highlight", mark: "highlight", property: "color" },
29209
+ { name: "w:caps", type: "textTransform", mark: "textStyle", property: "textTransform" }
29197
29210
  ]);
29198
29211
  __publicField$2(_SuperConverter, "propertyTypes", Object.freeze({
29199
29212
  "w:pPr": "paragraphProperties",
@@ -29227,7 +29240,7 @@ function storeSuperdocVersion(docx) {
29227
29240
  function generateCustomXml() {
29228
29241
  return DEFAULT_CUSTOM_XML;
29229
29242
  }
29230
- function generateSuperdocVersion(pid = 2, version2 = "0.15.3-next.4") {
29243
+ function generateSuperdocVersion(pid = 2, version2 = "0.15.3-next.6") {
29231
29244
  return {
29232
29245
  type: "element",
29233
29246
  name: "property",
@@ -45410,7 +45423,7 @@ const _Editor = class _Editor2 extends EventEmitter$1 {
45410
45423
  * @returns {Object | void} Migration results
45411
45424
  */
45412
45425
  processCollaborationMigrations() {
45413
- console.debug("[checkVersionMigrations] Current editor version", "0.15.3-next.4");
45426
+ console.debug("[checkVersionMigrations] Current editor version", "0.15.3-next.6");
45414
45427
  if (!this.options.ydoc) return;
45415
45428
  const metaMap = this.options.ydoc.getMap("meta");
45416
45429
  let docVersion = metaMap.get("version");
@@ -47498,6 +47511,9 @@ const generateLinkedStyleString = (linkedStyle, basedOnStyle, node2, parent, inc
47498
47511
  if (!linkedDefinitionStyles["font-size"] && basedOnDefinitionStyles["font-size"]) {
47499
47512
  resultStyles["font-size"] = basedOnDefinitionStyles["font-size"];
47500
47513
  }
47514
+ if (!linkedDefinitionStyles["text-transform"] && basedOnDefinitionStyles["text-transform"]) {
47515
+ resultStyles["text-transform"] = basedOnDefinitionStyles["text-transform"];
47516
+ }
47501
47517
  Object.entries(resultStyles).forEach(([k, value]) => {
47502
47518
  const key = kebabCase$1(k);
47503
47519
  const flattenedMarks = [];
@@ -47515,6 +47531,7 @@ const generateLinkedStyleString = (linkedStyle, basedOnStyle, node2, parent, inc
47515
47531
  const mark = flattenedMarks.find((n) => n.key === key);
47516
47532
  const hasParentIndent = Object.keys(parent?.attrs?.indent || {});
47517
47533
  const hasParentSpacing = Object.keys(parent?.attrs?.spacing || {});
47534
+ const listTypes = ["orderedList", "listItem"];
47518
47535
  if (!mark) {
47519
47536
  if (key === "spacing" && includeSpacing && !hasParentSpacing) {
47520
47537
  const space = getSpacingStyle(value);
@@ -47527,7 +47544,18 @@ const generateLinkedStyleString = (linkedStyle, basedOnStyle, node2, parent, inc
47527
47544
  if (rightIndent) markValue["margin-right"] = rightIndent + "px";
47528
47545
  if (firstLine) markValue["text-indent"] = firstLine + "px";
47529
47546
  } else if (key === "bold") {
47530
- markValue["font-weight"] = "bold";
47547
+ const val = value?.value;
47548
+ if (!listTypes.includes(node2.type.name) && val !== "0") {
47549
+ markValue["font-weight"] = "bold";
47550
+ }
47551
+ } else if (key === "text-transform") {
47552
+ if (!listTypes.includes(node2.type.name)) {
47553
+ markValue[key] = value;
47554
+ }
47555
+ } else if (key === "font-size") {
47556
+ if (!listTypes.includes(node2.type.name)) {
47557
+ markValue[key] = value;
47558
+ }
47531
47559
  } else if (typeof value === "string") {
47532
47560
  markValue[key] = value;
47533
47561
  }
@@ -48133,14 +48161,6 @@ const Paragraph = Node$1.create({
48133
48161
  else if (jc === "both") style2 += "text-align: justify;";
48134
48162
  return { style: style2 };
48135
48163
  }
48136
- },
48137
- textCase: {
48138
- renderDOM: (attrs) => {
48139
- if (!attrs.textCase) return {};
48140
- return {
48141
- style: `text-transform: ${attrs.textCase}`
48142
- };
48143
- }
48144
48164
  }
48145
48165
  };
48146
48166
  },
@@ -54192,6 +54212,20 @@ const Bold = Mark2.create({
54192
54212
  htmlAttributes: {}
54193
54213
  };
54194
54214
  },
54215
+ addAttributes() {
54216
+ return {
54217
+ value: {
54218
+ default: null,
54219
+ renderDOM: (attrs) => {
54220
+ if (!attrs.value) return {};
54221
+ if (attrs.value === "0") {
54222
+ return { style: "font-weight: normal" };
54223
+ }
54224
+ return {};
54225
+ }
54226
+ }
54227
+ };
54228
+ },
54195
54229
  parseDOM() {
54196
54230
  return [
54197
54231
  { tag: "strong" },
@@ -54962,6 +54996,32 @@ const getChangesByIdToResolve = (state2, id) => {
54962
54996
  }
54963
54997
  return [matchingChange, linkedChange].filter(Boolean);
54964
54998
  };
54999
+ const TextTransform = Extension.create({
55000
+ name: "textTransform",
55001
+ addOptions() {
55002
+ return {
55003
+ types: ["textStyle"]
55004
+ };
55005
+ },
55006
+ addGlobalAttributes() {
55007
+ return [
55008
+ {
55009
+ types: this.options.types,
55010
+ attributes: {
55011
+ textTransform: {
55012
+ default: null,
55013
+ renderDOM: (attrs) => {
55014
+ if (!attrs.textCase) return {};
55015
+ return {
55016
+ style: `text-transform: ${attrs.textCase}`
55017
+ };
55018
+ }
55019
+ }
55020
+ }
55021
+ }
55022
+ ];
55023
+ }
55024
+ });
54965
55025
  const Placeholder = Extension.create({
54966
55026
  name: "placeholder",
54967
55027
  addOptions() {
@@ -60440,7 +60500,8 @@ const getStarterExtensions = () => {
60440
60500
  StructuredContent,
60441
60501
  DocumentSection,
60442
60502
  NodeResizer,
60443
- CustomSelection
60503
+ CustomSelection,
60504
+ TextTransform
60444
60505
  ];
60445
60506
  };
60446
60507
  const sanitizeNumber = (value, defaultNumber) => {
@@ -19615,7 +19615,7 @@ function parseMarks(property2, unknownMarks = [], docx = null) {
19615
19615
  const marks = [];
19616
19616
  const seen = /* @__PURE__ */ new Set();
19617
19617
  const lang = property2?.elements?.find((el) => el.name === "w:lang");
19618
- const langAttrs = lang?.attributes || {};
19618
+ lang?.attributes || {};
19619
19619
  property2?.elements?.forEach((element) => {
19620
19620
  const marksForType = SuperConverter.markTypes.filter((mark) => mark.name === element.name);
19621
19621
  if (!marksForType.length) {
@@ -19642,13 +19642,21 @@ function parseMarks(property2, unknownMarks = [], docx = null) {
19642
19642
  seen.add(m.type);
19643
19643
  const { attributes = {} } = element;
19644
19644
  const newMark = { type: m.type };
19645
- if (attributes["w:val"] === "0" || attributes["w:val"] === "none") {
19645
+ const exceptionMarks = ["w:b", "w:caps"];
19646
+ if ((attributes["w:val"] === "0" || attributes["w:val"] === "none") && !exceptionMarks.includes(m.name)) {
19646
19647
  return;
19647
19648
  }
19648
- if (["w:bCs"].includes(m.name) && langAttrs["w:eastAsia"]) {
19649
+ if (m.mark) newMark.type = m.mark;
19650
+ if (m.name === "w:caps") {
19651
+ newMark.attrs = {};
19652
+ if (attributes["w:val"] === "0") {
19653
+ newMark.attrs[m.property] = "none";
19654
+ } else {
19655
+ newMark.attrs[m.property] = "uppercase";
19656
+ }
19657
+ marks.push(newMark);
19649
19658
  return;
19650
19659
  }
19651
- if (m.mark) newMark.type = m.mark;
19652
19660
  if (Object.keys(attributes).length) {
19653
19661
  const value = getMarkValue(m.type, attributes, docx);
19654
19662
  if (value === null || value === void 0) return;
@@ -19931,12 +19939,6 @@ const handleParagraphNode = (params2) => {
19931
19939
  };
19932
19940
  }
19933
19941
  }
19934
- if (docx) {
19935
- const { textCase } = getDefaultParagraphStyle(docx, styleId);
19936
- if (textCase) {
19937
- schemaNode.attrs.textCase = textCase;
19938
- }
19939
- }
19940
19942
  if (framePr && framePr.attributes["w:dropCap"]) {
19941
19943
  schemaNode.attrs.dropcap = {
19942
19944
  type: framePr.attributes["w:dropCap"],
@@ -20045,19 +20047,11 @@ const getDefaultParagraphStyle = (docx, styleId = "") => {
20045
20047
  let pPrStyleIdSpacingTag = {};
20046
20048
  let pPrStyleIdIndentTag = {};
20047
20049
  let pPrStyleJc = {};
20048
- let textCase = null;
20049
20050
  if (styleId) {
20050
20051
  const stylesById = styles.elements[0].elements?.find(
20051
20052
  (el) => el.name === "w:style" && el.attributes["w:styleId"] === styleId
20052
20053
  );
20053
20054
  const pPrById = stylesById?.elements?.find((el) => el.name === "w:pPr");
20054
- const basedOn = stylesById?.elements.find((el) => el.name === "w:basedOn");
20055
- const baseStyles = styles.elements[0].elements?.find(
20056
- (el) => el.name === "w:style" && el.attributes["w:styleId"] === basedOn?.attributes["w:val"]
20057
- );
20058
- const rprBaseStyles = baseStyles?.elements?.find((el) => el.name === "w:rPr");
20059
- const caps = rprBaseStyles?.elements?.find((el) => el.name === "w:caps");
20060
- if (caps) textCase = "uppercase";
20061
20055
  pPrStyleIdSpacingTag = pPrById?.elements?.find((el) => el.name === "w:spacing") || {};
20062
20056
  pPrStyleIdIndentTag = pPrById?.elements?.find((el) => el.name === "w:ind") || {};
20063
20057
  pPrStyleJc = pPrById?.elements?.find((el) => el.name === "w:jc") || {};
@@ -20074,8 +20068,7 @@ const getDefaultParagraphStyle = (docx, styleId = "") => {
20074
20068
  return {
20075
20069
  spacing: pPrByIdSpacingAttr || spacingRest,
20076
20070
  indent: pPrByIdIndentAttr || indentRest,
20077
- justify: pPrByIdJcAttr,
20078
- textCase
20071
+ justify: pPrByIdJcAttr
20079
20072
  };
20080
20073
  };
20081
20074
  const paragraphNodeHandlerEntity = {
@@ -26142,6 +26135,13 @@ function translateMark(mark) {
26142
26135
  let value;
26143
26136
  switch (mark.type) {
26144
26137
  case "bold":
26138
+ if (attrs?.value) {
26139
+ markElement.attributes["w:val"] = attrs.value;
26140
+ } else {
26141
+ delete markElement.attributes;
26142
+ }
26143
+ markElement.type = "element";
26144
+ break;
26145
26145
  case "italic":
26146
26146
  delete markElement.attributes;
26147
26147
  markElement.type = "element";
@@ -26175,6 +26175,14 @@ function translateMark(mark) {
26175
26175
  case "textIndent":
26176
26176
  markElement.attributes["w:firstline"] = inchesToTwips(attrs.textIndent);
26177
26177
  break;
26178
+ case "textTransform":
26179
+ if (attrs?.textTransform === "none") {
26180
+ markElement.attributes["w:val"] = "0";
26181
+ } else {
26182
+ delete markElement.attributes;
26183
+ }
26184
+ markElement.type = "element";
26185
+ break;
26178
26186
  case "lineHeight":
26179
26187
  markElement.attributes["w:line"] = linesToTwips(attrs.lineHeight);
26180
26188
  break;
@@ -27597,7 +27605,11 @@ const handleRunNode = (params2) => {
27597
27605
  const textStyleMark = marks.find((m) => m.type === "textStyle");
27598
27606
  const hasFontStyle = textStyleMark && Object.keys(textStyleMark.attrs).length > 0;
27599
27607
  if (defaultNodeStyles.marks && !hasFontStyle) {
27600
- marks.push(...defaultNodeStyles.marks);
27608
+ const hasBoldDisabled = marks.find((m) => m.type === "bold")?.attrs?.value === "0";
27609
+ for (let mark of defaultNodeStyles.marks) {
27610
+ if (["bold"].includes(mark.type) && hasBoldDisabled) continue;
27611
+ marks.push(mark);
27612
+ }
27601
27613
  }
27602
27614
  if (node2.marks) marks.push(...node2.marks);
27603
27615
  const newMarks = createImportMarks(marks);
@@ -28766,7 +28778,7 @@ const _SuperConverter = class _SuperConverter2 {
28766
28778
  return;
28767
28779
  }
28768
28780
  }
28769
- static updateDocumentVersion(docx = this.convertedXml, version2 = "0.15.3-next.4") {
28781
+ static updateDocumentVersion(docx = this.convertedXml, version2 = "0.15.3-next.6") {
28770
28782
  const customLocation = "docProps/custom.xml";
28771
28783
  if (!docx[customLocation]) {
28772
28784
  docx[customLocation] = generateCustomXml();
@@ -29195,10 +29207,10 @@ __publicField$2(_SuperConverter, "allowedElements", Object.freeze({
29195
29207
  "w:commentReference": "commentReference"
29196
29208
  }));
29197
29209
  __publicField$2(_SuperConverter, "markTypes", [
29198
- { name: "w:b", type: "bold" },
29199
- { name: "w:bCs", type: "bold" },
29210
+ { name: "w:b", type: "bold", property: "value" },
29211
+ // { name: 'w:bCs', type: 'bold' },
29200
29212
  { name: "w:i", type: "italic" },
29201
- { name: "w:iCs", type: "italic" },
29213
+ // { name: 'w:iCs', type: 'italic' },
29202
29214
  { name: "w:u", type: "underline", mark: "underline", property: "underlineType" },
29203
29215
  { name: "w:strike", type: "strike", mark: "strike" },
29204
29216
  { name: "w:color", type: "color", mark: "textStyle", property: "color" },
@@ -29210,7 +29222,8 @@ __publicField$2(_SuperConverter, "markTypes", [
29210
29222
  { name: "w:spacing", type: "lineHeight", mark: "textStyle", property: "lineHeight" },
29211
29223
  { name: "link", type: "link", mark: "link", property: "href" },
29212
29224
  { name: "w:highlight", type: "highlight", mark: "highlight", property: "color" },
29213
- { name: "w:shd", type: "highlight", mark: "highlight", property: "color" }
29225
+ { name: "w:shd", type: "highlight", mark: "highlight", property: "color" },
29226
+ { name: "w:caps", type: "textTransform", mark: "textStyle", property: "textTransform" }
29214
29227
  ]);
29215
29228
  __publicField$2(_SuperConverter, "propertyTypes", Object.freeze({
29216
29229
  "w:pPr": "paragraphProperties",
@@ -29244,7 +29257,7 @@ function storeSuperdocVersion(docx) {
29244
29257
  function generateCustomXml() {
29245
29258
  return DEFAULT_CUSTOM_XML;
29246
29259
  }
29247
- function generateSuperdocVersion(pid = 2, version2 = "0.15.3-next.4") {
29260
+ function generateSuperdocVersion(pid = 2, version2 = "0.15.3-next.6") {
29248
29261
  return {
29249
29262
  type: "element",
29250
29263
  name: "property",
@@ -45427,7 +45440,7 @@ const _Editor = class _Editor2 extends EventEmitter$1 {
45427
45440
  * @returns {Object | void} Migration results
45428
45441
  */
45429
45442
  processCollaborationMigrations() {
45430
- console.debug("[checkVersionMigrations] Current editor version", "0.15.3-next.4");
45443
+ console.debug("[checkVersionMigrations] Current editor version", "0.15.3-next.6");
45431
45444
  if (!this.options.ydoc) return;
45432
45445
  const metaMap = this.options.ydoc.getMap("meta");
45433
45446
  let docVersion = metaMap.get("version");
@@ -47515,6 +47528,9 @@ const generateLinkedStyleString = (linkedStyle, basedOnStyle, node2, parent, inc
47515
47528
  if (!linkedDefinitionStyles["font-size"] && basedOnDefinitionStyles["font-size"]) {
47516
47529
  resultStyles["font-size"] = basedOnDefinitionStyles["font-size"];
47517
47530
  }
47531
+ if (!linkedDefinitionStyles["text-transform"] && basedOnDefinitionStyles["text-transform"]) {
47532
+ resultStyles["text-transform"] = basedOnDefinitionStyles["text-transform"];
47533
+ }
47518
47534
  Object.entries(resultStyles).forEach(([k, value]) => {
47519
47535
  const key = kebabCase$1(k);
47520
47536
  const flattenedMarks = [];
@@ -47532,6 +47548,7 @@ const generateLinkedStyleString = (linkedStyle, basedOnStyle, node2, parent, inc
47532
47548
  const mark = flattenedMarks.find((n) => n.key === key);
47533
47549
  const hasParentIndent = Object.keys(parent?.attrs?.indent || {});
47534
47550
  const hasParentSpacing = Object.keys(parent?.attrs?.spacing || {});
47551
+ const listTypes = ["orderedList", "listItem"];
47535
47552
  if (!mark) {
47536
47553
  if (key === "spacing" && includeSpacing && !hasParentSpacing) {
47537
47554
  const space = getSpacingStyle(value);
@@ -47544,7 +47561,18 @@ const generateLinkedStyleString = (linkedStyle, basedOnStyle, node2, parent, inc
47544
47561
  if (rightIndent) markValue["margin-right"] = rightIndent + "px";
47545
47562
  if (firstLine) markValue["text-indent"] = firstLine + "px";
47546
47563
  } else if (key === "bold") {
47547
- markValue["font-weight"] = "bold";
47564
+ const val = value?.value;
47565
+ if (!listTypes.includes(node2.type.name) && val !== "0") {
47566
+ markValue["font-weight"] = "bold";
47567
+ }
47568
+ } else if (key === "text-transform") {
47569
+ if (!listTypes.includes(node2.type.name)) {
47570
+ markValue[key] = value;
47571
+ }
47572
+ } else if (key === "font-size") {
47573
+ if (!listTypes.includes(node2.type.name)) {
47574
+ markValue[key] = value;
47575
+ }
47548
47576
  } else if (typeof value === "string") {
47549
47577
  markValue[key] = value;
47550
47578
  }
@@ -48150,14 +48178,6 @@ const Paragraph = Node$1.create({
48150
48178
  else if (jc === "both") style2 += "text-align: justify;";
48151
48179
  return { style: style2 };
48152
48180
  }
48153
- },
48154
- textCase: {
48155
- renderDOM: (attrs) => {
48156
- if (!attrs.textCase) return {};
48157
- return {
48158
- style: `text-transform: ${attrs.textCase}`
48159
- };
48160
- }
48161
48181
  }
48162
48182
  };
48163
48183
  },
@@ -54209,6 +54229,20 @@ const Bold = Mark2.create({
54209
54229
  htmlAttributes: {}
54210
54230
  };
54211
54231
  },
54232
+ addAttributes() {
54233
+ return {
54234
+ value: {
54235
+ default: null,
54236
+ renderDOM: (attrs) => {
54237
+ if (!attrs.value) return {};
54238
+ if (attrs.value === "0") {
54239
+ return { style: "font-weight: normal" };
54240
+ }
54241
+ return {};
54242
+ }
54243
+ }
54244
+ };
54245
+ },
54212
54246
  parseDOM() {
54213
54247
  return [
54214
54248
  { tag: "strong" },
@@ -54979,6 +55013,32 @@ const getChangesByIdToResolve = (state2, id) => {
54979
55013
  }
54980
55014
  return [matchingChange, linkedChange].filter(Boolean);
54981
55015
  };
55016
+ const TextTransform = Extension.create({
55017
+ name: "textTransform",
55018
+ addOptions() {
55019
+ return {
55020
+ types: ["textStyle"]
55021
+ };
55022
+ },
55023
+ addGlobalAttributes() {
55024
+ return [
55025
+ {
55026
+ types: this.options.types,
55027
+ attributes: {
55028
+ textTransform: {
55029
+ default: null,
55030
+ renderDOM: (attrs) => {
55031
+ if (!attrs.textCase) return {};
55032
+ return {
55033
+ style: `text-transform: ${attrs.textCase}`
55034
+ };
55035
+ }
55036
+ }
55037
+ }
55038
+ }
55039
+ ];
55040
+ }
55041
+ });
54982
55042
  const Placeholder = Extension.create({
54983
55043
  name: "placeholder",
54984
55044
  addOptions() {
@@ -60457,7 +60517,8 @@ const getStarterExtensions = () => {
60457
60517
  StructuredContent,
60458
60518
  DocumentSection,
60459
60519
  NodeResizer,
60460
- CustomSelection
60520
+ CustomSelection,
60521
+ TextTransform
60461
60522
  ];
60462
60523
  };
60463
60524
  const sanitizeNumber = (value, defaultNumber) => {
@@ -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-Bzvjvd9K.js";
3
- import { _ as _export_sfc } from "./chunks/editor-D4Lw4qWd.js";
2
+ import { T as TextSelection } from "./chunks/converter-Dv28F4Os.js";
3
+ import { _ as _export_sfc } from "./chunks/editor-BgxpYGE3.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 = {}) {