roosterjs-content-model-dom 9.22.0 → 9.23.0

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 (118) hide show
  1. package/lib/domToModel/processors/blockProcessor.js +2 -0
  2. package/lib/domToModel/processors/blockProcessor.js.map +1 -1
  3. package/lib/domToModel/processors/linkProcessor.js +23 -4
  4. package/lib/domToModel/processors/linkProcessor.js.map +1 -1
  5. package/lib/domUtils/hiddenProperties/hiddenProperty.d.ts +22 -0
  6. package/lib/domUtils/hiddenProperties/hiddenProperty.js +23 -0
  7. package/lib/domUtils/hiddenProperties/hiddenProperty.js.map +1 -0
  8. package/lib/domUtils/hiddenProperties/paragraphMarker.d.ts +8 -0
  9. package/lib/domUtils/hiddenProperties/paragraphMarker.js +19 -0
  10. package/lib/domUtils/hiddenProperties/paragraphMarker.js.map +1 -0
  11. package/lib/domUtils/hiddenProperties/undeletableLink.d.ts +14 -0
  12. package/lib/domUtils/hiddenProperties/undeletableLink.js +26 -0
  13. package/lib/domUtils/hiddenProperties/undeletableLink.js.map +1 -0
  14. package/lib/formatHandlers/defaultFormatHandlers.js +3 -0
  15. package/lib/formatHandlers/defaultFormatHandlers.js.map +1 -1
  16. package/lib/formatHandlers/segment/linkFormatHandler.js +4 -2
  17. package/lib/formatHandlers/segment/linkFormatHandler.js.map +1 -1
  18. package/lib/formatHandlers/segment/undeletableLinkFormatHandler.d.ts +6 -0
  19. package/lib/formatHandlers/segment/undeletableLinkFormatHandler.js +21 -0
  20. package/lib/formatHandlers/segment/undeletableLinkFormatHandler.js.map +1 -0
  21. package/lib/index.d.ts +2 -0
  22. package/lib/index.js +10 -3
  23. package/lib/index.js.map +1 -1
  24. package/lib/modelApi/common/addDecorators.js +1 -1
  25. package/lib/modelApi/common/addDecorators.js.map +1 -1
  26. package/lib/modelApi/common/isEmpty.d.ts +1 -1
  27. package/lib/modelApi/common/isEmpty.js +3 -2
  28. package/lib/modelApi/common/isEmpty.js.map +1 -1
  29. package/lib/modelApi/common/normalizeParagraph.js +1 -1
  30. package/lib/modelApi/common/normalizeParagraph.js.map +1 -1
  31. package/lib/modelApi/editing/deleteExpandedSelection.js +4 -1
  32. package/lib/modelApi/editing/deleteExpandedSelection.js.map +1 -1
  33. package/lib/modelApi/editing/deleteSegment.d.ts +3 -2
  34. package/lib/modelApi/editing/deleteSegment.js +47 -11
  35. package/lib/modelApi/editing/deleteSegment.js.map +1 -1
  36. package/lib/modelApi/editing/deleteSelection.js +7 -3
  37. package/lib/modelApi/editing/deleteSelection.js.map +1 -1
  38. package/lib/modelToDom/handlers/handleParagraph.js +4 -3
  39. package/lib/modelToDom/handlers/handleParagraph.js.map +1 -1
  40. package/lib-amd/domToModel/processors/blockProcessor.js +2 -0
  41. package/lib-amd/domToModel/processors/blockProcessor.js.map +1 -1
  42. package/lib-amd/domToModel/processors/linkProcessor.js +22 -5
  43. package/lib-amd/domToModel/processors/linkProcessor.js.map +1 -1
  44. package/lib-amd/domUtils/hiddenProperties/hiddenProperty.d.ts +22 -0
  45. package/lib-amd/domUtils/hiddenProperties/hiddenProperty.js +25 -0
  46. package/lib-amd/domUtils/hiddenProperties/hiddenProperty.js.map +1 -0
  47. package/lib-amd/domUtils/hiddenProperties/paragraphMarker.d.ts +8 -0
  48. package/lib-amd/domUtils/hiddenProperties/paragraphMarker.js +20 -0
  49. package/lib-amd/domUtils/hiddenProperties/paragraphMarker.js.map +1 -0
  50. package/lib-amd/domUtils/hiddenProperties/undeletableLink.d.ts +14 -0
  51. package/lib-amd/domUtils/hiddenProperties/undeletableLink.js +27 -0
  52. package/lib-amd/domUtils/hiddenProperties/undeletableLink.js.map +1 -0
  53. package/lib-amd/formatHandlers/defaultFormatHandlers.js +3 -1
  54. package/lib-amd/formatHandlers/defaultFormatHandlers.js.map +1 -1
  55. package/lib-amd/formatHandlers/segment/linkFormatHandler.js +4 -2
  56. package/lib-amd/formatHandlers/segment/linkFormatHandler.js.map +1 -1
  57. package/lib-amd/formatHandlers/segment/undeletableLinkFormatHandler.d.ts +6 -0
  58. package/lib-amd/formatHandlers/segment/undeletableLinkFormatHandler.js +21 -0
  59. package/lib-amd/formatHandlers/segment/undeletableLinkFormatHandler.js.map +1 -0
  60. package/lib-amd/index.d.ts +2 -0
  61. package/lib-amd/index.js +6 -2
  62. package/lib-amd/index.js.map +1 -1
  63. package/lib-amd/modelApi/common/addDecorators.js +1 -1
  64. package/lib-amd/modelApi/common/addDecorators.js.map +1 -1
  65. package/lib-amd/modelApi/common/isEmpty.d.ts +1 -1
  66. package/lib-amd/modelApi/common/isEmpty.js +3 -2
  67. package/lib-amd/modelApi/common/isEmpty.js.map +1 -1
  68. package/lib-amd/modelApi/common/normalizeParagraph.js +1 -1
  69. package/lib-amd/modelApi/common/normalizeParagraph.js.map +1 -1
  70. package/lib-amd/modelApi/editing/deleteExpandedSelection.js +4 -1
  71. package/lib-amd/modelApi/editing/deleteExpandedSelection.js.map +1 -1
  72. package/lib-amd/modelApi/editing/deleteSegment.d.ts +3 -2
  73. package/lib-amd/modelApi/editing/deleteSegment.js +47 -11
  74. package/lib-amd/modelApi/editing/deleteSegment.js.map +1 -1
  75. package/lib-amd/modelApi/editing/deleteSelection.js +7 -3
  76. package/lib-amd/modelApi/editing/deleteSelection.js.map +1 -1
  77. package/lib-amd/modelToDom/handlers/handleParagraph.js +4 -3
  78. package/lib-amd/modelToDom/handlers/handleParagraph.js.map +1 -1
  79. package/lib-mjs/domToModel/processors/blockProcessor.js +2 -0
  80. package/lib-mjs/domToModel/processors/blockProcessor.js.map +1 -1
  81. package/lib-mjs/domToModel/processors/linkProcessor.js +23 -4
  82. package/lib-mjs/domToModel/processors/linkProcessor.js.map +1 -1
  83. package/lib-mjs/domUtils/hiddenProperties/hiddenProperty.d.ts +22 -0
  84. package/lib-mjs/domUtils/hiddenProperties/hiddenProperty.js +18 -0
  85. package/lib-mjs/domUtils/hiddenProperties/hiddenProperty.js.map +1 -0
  86. package/lib-mjs/domUtils/hiddenProperties/paragraphMarker.d.ts +8 -0
  87. package/lib-mjs/domUtils/hiddenProperties/paragraphMarker.js +14 -0
  88. package/lib-mjs/domUtils/hiddenProperties/paragraphMarker.js.map +1 -0
  89. package/lib-mjs/domUtils/hiddenProperties/undeletableLink.d.ts +14 -0
  90. package/lib-mjs/domUtils/hiddenProperties/undeletableLink.js +21 -0
  91. package/lib-mjs/domUtils/hiddenProperties/undeletableLink.js.map +1 -0
  92. package/lib-mjs/formatHandlers/defaultFormatHandlers.js +3 -0
  93. package/lib-mjs/formatHandlers/defaultFormatHandlers.js.map +1 -1
  94. package/lib-mjs/formatHandlers/segment/linkFormatHandler.js +4 -2
  95. package/lib-mjs/formatHandlers/segment/linkFormatHandler.js.map +1 -1
  96. package/lib-mjs/formatHandlers/segment/undeletableLinkFormatHandler.d.ts +6 -0
  97. package/lib-mjs/formatHandlers/segment/undeletableLinkFormatHandler.js +18 -0
  98. package/lib-mjs/formatHandlers/segment/undeletableLinkFormatHandler.js.map +1 -0
  99. package/lib-mjs/index.d.ts +2 -0
  100. package/lib-mjs/index.js +2 -0
  101. package/lib-mjs/index.js.map +1 -1
  102. package/lib-mjs/modelApi/common/addDecorators.js +1 -1
  103. package/lib-mjs/modelApi/common/addDecorators.js.map +1 -1
  104. package/lib-mjs/modelApi/common/isEmpty.d.ts +1 -1
  105. package/lib-mjs/modelApi/common/isEmpty.js +3 -2
  106. package/lib-mjs/modelApi/common/isEmpty.js.map +1 -1
  107. package/lib-mjs/modelApi/common/normalizeParagraph.js +1 -1
  108. package/lib-mjs/modelApi/common/normalizeParagraph.js.map +1 -1
  109. package/lib-mjs/modelApi/editing/deleteExpandedSelection.js +4 -1
  110. package/lib-mjs/modelApi/editing/deleteExpandedSelection.js.map +1 -1
  111. package/lib-mjs/modelApi/editing/deleteSegment.d.ts +3 -2
  112. package/lib-mjs/modelApi/editing/deleteSegment.js +47 -11
  113. package/lib-mjs/modelApi/editing/deleteSegment.js.map +1 -1
  114. package/lib-mjs/modelApi/editing/deleteSelection.js +7 -3
  115. package/lib-mjs/modelApi/editing/deleteSelection.js.map +1 -1
  116. package/lib-mjs/modelToDom/handlers/handleParagraph.js +4 -3
  117. package/lib-mjs/modelToDom/handlers/handleParagraph.js.map +1 -1
  118. package/package.json +2 -2
@@ -11,6 +11,7 @@ var SegmentDecoratorTags = ['A', 'CODE'];
11
11
  * @internal
12
12
  */
13
13
  function blockProcessor(group, element, context, segmentFormat) {
14
+ var _a;
14
15
  var decorator = context.blockDecorator.tagName ? context.blockDecorator : undefined;
15
16
  var isSegmentDecorator = SegmentDecoratorTags.indexOf(element.tagName) >= 0;
16
17
  (0, parseFormat_1.parseFormat)(element, context.formatParsers.block, context.blockFormat, context);
@@ -23,6 +24,7 @@ function blockProcessor(group, element, context, segmentFormat) {
23
24
  });
24
25
  if (!isSegmentDecorator) {
25
26
  var paragraph = (0, createParagraph_1.createParagraph)(false /*isImplicit*/, blockFormat, segmentFormat, decorator);
27
+ (_a = context.paragraphMap) === null || _a === void 0 ? void 0 : _a.assignMarkerToModel(element, paragraph);
26
28
  (0, addBlock_1.addBlock)(group, paragraph);
27
29
  }
28
30
  context.elementProcessors.child(group, element, context);
@@ -1 +1 @@
1
- {"version":3,"file":"blockProcessor.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/domToModel/processors/blockProcessor.ts"],"names":[],"mappings":";;;;AAAA,2DAA0D;AAC1D,uEAA2D;AAC3D,2EAA0E;AAC1E,oDAAmD;AAOnD,IAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAE3C;;GAEG;AACH,SAAgB,cAAc,CAC1B,KAA6B,EAC7B,OAAoB,EACpB,OAA0B,EAC1B,aAAyC;IAEzC,IAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,IAAM,kBAAkB,GAAG,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9E,IAAA,yBAAW,EAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAEhF,IAAM,WAAW,6BAAQ,OAAO,CAAC,WAAW,CAAE,CAAC;IAE/C,IAAA,yBAAW,EAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAE5E,wCAAa,CAAC,OAAO,CAAC,UAAA,KAAK;QACvB,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;YACpB,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;SACnD;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kBAAkB,EAAE;QACrB,IAAM,SAAS,GAAG,IAAA,iCAAe,EAC7B,KAAK,CAAC,cAAc,EACpB,WAAW,EACX,aAAa,EACb,SAAS,CACZ,CAAC;QAEF,IAAA,mBAAQ,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;KAC9B;IAED,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7D,CAAC;AAjCD,wCAiCC","sourcesContent":["import { addBlock } from '../../modelApi/common/addBlock';\nimport { ContextStyles } from './formatContainerProcessor';\nimport { createParagraph } from '../../modelApi/creators/createParagraph';\nimport { parseFormat } from '../utils/parseFormat';\nimport type {\n ContentModelBlockGroup,\n ContentModelSegmentFormat,\n DomToModelContext,\n} from 'roosterjs-content-model-types';\n\nconst SegmentDecoratorTags = ['A', 'CODE'];\n\n/**\n * @internal\n */\nexport function blockProcessor(\n group: ContentModelBlockGroup,\n element: HTMLElement,\n context: DomToModelContext,\n segmentFormat?: ContentModelSegmentFormat\n) {\n const decorator = context.blockDecorator.tagName ? context.blockDecorator : undefined;\n const isSegmentDecorator = SegmentDecoratorTags.indexOf(element.tagName) >= 0;\n\n parseFormat(element, context.formatParsers.block, context.blockFormat, context);\n\n const blockFormat = { ...context.blockFormat };\n\n parseFormat(element, context.formatParsers.container, blockFormat, context);\n\n ContextStyles.forEach(style => {\n if (blockFormat[style]) {\n context.blockFormat[style] = blockFormat[style];\n }\n });\n\n if (!isSegmentDecorator) {\n const paragraph = createParagraph(\n false /*isImplicit*/,\n blockFormat,\n segmentFormat,\n decorator\n );\n\n addBlock(group, paragraph);\n }\n\n context.elementProcessors.child(group, element, context);\n}\n"]}
1
+ {"version":3,"file":"blockProcessor.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/domToModel/processors/blockProcessor.ts"],"names":[],"mappings":";;;;AAAA,2DAA0D;AAC1D,uEAA2D;AAC3D,2EAA0E;AAC1E,oDAAmD;AAOnD,IAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAE3C;;GAEG;AACH,SAAgB,cAAc,CAC1B,KAA6B,EAC7B,OAAoB,EACpB,OAA0B,EAC1B,aAAyC;;IAEzC,IAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,IAAM,kBAAkB,GAAG,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9E,IAAA,yBAAW,EAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAEhF,IAAM,WAAW,6BAAQ,OAAO,CAAC,WAAW,CAAE,CAAC;IAE/C,IAAA,yBAAW,EAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAE5E,wCAAa,CAAC,OAAO,CAAC,UAAA,KAAK;QACvB,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;YACpB,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;SACnD;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kBAAkB,EAAE;QACrB,IAAM,SAAS,GAAG,IAAA,iCAAe,EAC7B,KAAK,CAAC,cAAc,EACpB,WAAW,EACX,aAAa,EACb,SAAS,CACZ,CAAC;QAEF,MAAA,OAAO,CAAC,YAAY,0CAAE,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAE9D,IAAA,mBAAQ,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;KAC9B;IAED,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7D,CAAC;AAnCD,wCAmCC","sourcesContent":["import { addBlock } from '../../modelApi/common/addBlock';\nimport { ContextStyles } from './formatContainerProcessor';\nimport { createParagraph } from '../../modelApi/creators/createParagraph';\nimport { parseFormat } from '../utils/parseFormat';\nimport type {\n ContentModelBlockGroup,\n ContentModelSegmentFormat,\n DomToModelContext,\n} from 'roosterjs-content-model-types';\n\nconst SegmentDecoratorTags = ['A', 'CODE'];\n\n/**\n * @internal\n */\nexport function blockProcessor(\n group: ContentModelBlockGroup,\n element: HTMLElement,\n context: DomToModelContext,\n segmentFormat?: ContentModelSegmentFormat\n) {\n const decorator = context.blockDecorator.tagName ? context.blockDecorator : undefined;\n const isSegmentDecorator = SegmentDecoratorTags.indexOf(element.tagName) >= 0;\n\n parseFormat(element, context.formatParsers.block, context.blockFormat, context);\n\n const blockFormat = { ...context.blockFormat };\n\n parseFormat(element, context.formatParsers.container, blockFormat, context);\n\n ContextStyles.forEach(style => {\n if (blockFormat[style]) {\n context.blockFormat[style] = blockFormat[style];\n }\n });\n\n if (!isSegmentDecorator) {\n const paragraph = createParagraph(\n false /*isImplicit*/,\n blockFormat,\n segmentFormat,\n decorator\n );\n\n context.paragraphMap?.assignMarkerToModel(element, paragraph);\n\n addBlock(group, paragraph);\n }\n\n context.elementProcessors.child(group, element, context);\n}\n"]}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.linkProcessor = void 0;
4
+ var addSegment_1 = require("../../modelApi/common/addSegment");
5
+ var createText_1 = require("../../modelApi/creators/createText");
4
6
  var knownElementProcessor_1 = require("./knownElementProcessor");
5
7
  var parseFormat_1 = require("../utils/parseFormat");
6
8
  var stackFormat_1 = require("../utils/stackFormat");
@@ -8,15 +10,32 @@ var stackFormat_1 = require("../utils/stackFormat");
8
10
  * @internal
9
11
  */
10
12
  var linkProcessor = function (group, element, context) {
11
- if (element.hasAttribute('href')) {
12
- (0, stackFormat_1.stackFormat)(context, { link: 'linkDefault' }, function () {
13
+ var name = element.getAttribute('name');
14
+ var href = element.getAttribute('href');
15
+ if (name || href) {
16
+ var isAnchor_1 = !!name && !href;
17
+ var option = {
18
+ // For anchor (name without ref), no need to add other styles
19
+ // For link (href exists), add default link styles
20
+ link: isAnchor_1 ? 'empty' : 'linkDefault',
21
+ };
22
+ (0, stackFormat_1.stackFormat)(context, option, function () {
13
23
  (0, parseFormat_1.parseFormat)(element, context.formatParsers.link, context.link.format, context);
14
24
  (0, parseFormat_1.parseFormat)(element, context.formatParsers.dataset, context.link.dataset, context);
15
- (0, knownElementProcessor_1.knownElementProcessor)(group, element, context);
25
+ if (isAnchor_1 && !element.firstChild) {
26
+ // Empty anchor, need to make sure it has some child in model
27
+ (0, addSegment_1.addSegment)(group, (0, createText_1.createText)('', context.segmentFormat, {
28
+ dataset: context.link.dataset,
29
+ format: context.link.format,
30
+ }));
31
+ }
32
+ else {
33
+ (0, knownElementProcessor_1.knownElementProcessor)(group, element, context);
34
+ }
16
35
  });
17
36
  }
18
37
  else {
19
- // A tag without href, can be treated as normal SPAN tag
38
+ // A tag without name or href, can be treated as normal SPAN tag
20
39
  (0, knownElementProcessor_1.knownElementProcessor)(group, element, context);
21
40
  }
22
41
  };
@@ -1 +1 @@
1
- {"version":3,"file":"linkProcessor.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/domToModel/processors/linkProcessor.ts"],"names":[],"mappings":";;;AAAA,iEAAgE;AAChE,oDAAmD;AACnD,oDAAmD;AAGnD;;GAEG;AACI,IAAM,aAAa,GAAkC,UAAC,KAAK,EAAE,OAAO,EAAE,OAAO;IAChF,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;QAC9B,IAAA,yBAAW,EAAC,OAAO,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE;YAC1C,IAAA,yBAAW,EAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC/E,IAAA,yBAAW,EAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAEnF,IAAA,6CAAqB,EAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;KACN;SAAM;QACH,wDAAwD;QACxD,IAAA,6CAAqB,EAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;KAClD;AACL,CAAC,CAAC;AAZW,QAAA,aAAa,iBAYxB","sourcesContent":["import { knownElementProcessor } from './knownElementProcessor';\nimport { parseFormat } from '../utils/parseFormat';\nimport { stackFormat } from '../utils/stackFormat';\nimport type { ElementProcessor } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const linkProcessor: ElementProcessor<HTMLElement> = (group, element, context) => {\n if (element.hasAttribute('href')) {\n stackFormat(context, { link: 'linkDefault' }, () => {\n parseFormat(element, context.formatParsers.link, context.link.format, context);\n parseFormat(element, context.formatParsers.dataset, context.link.dataset, context);\n\n knownElementProcessor(group, element, context);\n });\n } else {\n // A tag without href, can be treated as normal SPAN tag\n knownElementProcessor(group, element, context);\n }\n};\n"]}
1
+ {"version":3,"file":"linkProcessor.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/domToModel/processors/linkProcessor.ts"],"names":[],"mappings":";;;AAAA,+DAA8D;AAC9D,iEAAgE;AAChE,iEAAgE;AAChE,oDAAmD;AACnD,oDAAmD;AAInD;;GAEG;AACI,IAAM,aAAa,GAAkC,UAAC,KAAK,EAAE,OAAO,EAAE,OAAO;IAChF,IAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAE1C,IAAI,IAAI,IAAI,IAAI,EAAE;QACd,IAAM,UAAQ,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;QACjC,IAAM,MAAM,GAAuB;YAC/B,6DAA6D;YAC7D,kDAAkD;YAClD,IAAI,EAAE,UAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa;SAC3C,CAAC;QAEF,IAAA,yBAAW,EAAC,OAAO,EAAE,MAAM,EAAE;YACzB,IAAA,yBAAW,EAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC/E,IAAA,yBAAW,EAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAEnF,IAAI,UAAQ,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;gBACjC,6DAA6D;gBAC7D,IAAA,uBAAU,EACN,KAAK,EACL,IAAA,uBAAU,EAAC,EAAE,EAAE,OAAO,CAAC,aAAa,EAAE;oBAClC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;oBAC7B,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;iBAC9B,CAAC,CACL,CAAC;aACL;iBAAM;gBACH,IAAA,6CAAqB,EAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;aAClD;QACL,CAAC,CAAC,CAAC;KACN;SAAM;QACH,gEAAgE;QAChE,IAAA,6CAAqB,EAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;KAClD;AACL,CAAC,CAAC;AAjCW,QAAA,aAAa,iBAiCxB","sourcesContent":["import { addSegment } from '../../modelApi/common/addSegment';\nimport { createText } from '../../modelApi/creators/createText';\nimport { knownElementProcessor } from './knownElementProcessor';\nimport { parseFormat } from '../utils/parseFormat';\nimport { stackFormat } from '../utils/stackFormat';\nimport type { StackFormatOptions } from '../utils/stackFormat';\nimport type { ElementProcessor } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const linkProcessor: ElementProcessor<HTMLElement> = (group, element, context) => {\n const name = element.getAttribute('name');\n const href = element.getAttribute('href');\n\n if (name || href) {\n const isAnchor = !!name && !href;\n const option: StackFormatOptions = {\n // For anchor (name without ref), no need to add other styles\n // For link (href exists), add default link styles\n link: isAnchor ? 'empty' : 'linkDefault',\n };\n\n stackFormat(context, option, () => {\n parseFormat(element, context.formatParsers.link, context.link.format, context);\n parseFormat(element, context.formatParsers.dataset, context.link.dataset, context);\n\n if (isAnchor && !element.firstChild) {\n // Empty anchor, need to make sure it has some child in model\n addSegment(\n group,\n createText('', context.segmentFormat, {\n dataset: context.link.dataset,\n format: context.link.format,\n })\n );\n } else {\n knownElementProcessor(group, element, context);\n }\n });\n } else {\n // A tag without name or href, can be treated as normal SPAN tag\n knownElementProcessor(group, element, context);\n }\n};\n"]}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @internal
3
+ */
4
+ export interface HiddenProperty {
5
+ /**
6
+ * A marker string that can be used to identify a specific paragraph in the DOM.
7
+ * This is useful for scenarios where you need to track or manipulate specific paragraphs
8
+ */
9
+ paragraphMarker?: string;
10
+ /**
11
+ * Specify we should not delete this element when delete/backspace key is pressed
12
+ */
13
+ undeletable?: boolean;
14
+ }
15
+ /**
16
+ * @internal
17
+ */
18
+ export declare function getHiddenProperty<Key extends keyof HiddenProperty>(node: Node, key: Key): HiddenProperty[Key] | undefined;
19
+ /**
20
+ * @internal
21
+ */
22
+ export declare function setHiddenProperty<Key extends keyof HiddenProperty>(node: Node, key: Key, value: HiddenProperty[Key]): void;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setHiddenProperty = exports.getHiddenProperty = void 0;
4
+ /**
5
+ * @internal
6
+ */
7
+ function getHiddenProperty(node, key) {
8
+ var nodeWithHiddenProperty = node;
9
+ var hiddenProperty = nodeWithHiddenProperty.__roosterjsHiddenProperty;
10
+ return hiddenProperty ? hiddenProperty[key] : undefined;
11
+ }
12
+ exports.getHiddenProperty = getHiddenProperty;
13
+ /**
14
+ * @internal
15
+ */
16
+ function setHiddenProperty(node, key, value) {
17
+ var nodeWithHiddenProperty = node;
18
+ var hiddenProperty = nodeWithHiddenProperty.__roosterjsHiddenProperty || {};
19
+ hiddenProperty[key] = value;
20
+ nodeWithHiddenProperty.__roosterjsHiddenProperty = hiddenProperty;
21
+ }
22
+ exports.setHiddenProperty = setHiddenProperty;
23
+ //# sourceMappingURL=hiddenProperty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hiddenProperty.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/domUtils/hiddenProperties/hiddenProperty.ts"],"names":[],"mappings":";;;AAsBA;;GAEG;AACH,SAAgB,iBAAiB,CAC7B,IAAU,EACV,GAAQ;IAER,IAAM,sBAAsB,GAAG,IAA8B,CAAC;IAC9D,IAAM,cAAc,GAAG,sBAAsB,CAAC,yBAAyB,CAAC;IAExE,OAAO,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5D,CAAC;AARD,8CAQC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAC7B,IAAU,EACV,GAAQ,EACR,KAA0B;IAE1B,IAAM,sBAAsB,GAAG,IAA8B,CAAC;IAC9D,IAAM,cAAc,GAAG,sBAAsB,CAAC,yBAAyB,IAAI,EAAE,CAAC;IAE9E,cAAc,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC5B,sBAAsB,CAAC,yBAAyB,GAAG,cAAc,CAAC;AACtE,CAAC;AAVD,8CAUC","sourcesContent":["/**\n * @internal\n */\nexport interface HiddenProperty {\n /**\n * A marker string that can be used to identify a specific paragraph in the DOM.\n * This is useful for scenarios where you need to track or manipulate specific paragraphs\n */\n paragraphMarker?: string;\n\n /**\n * Specify we should not delete this element when delete/backspace key is pressed\n */\n undeletable?: boolean;\n\n // Add more properties as needed\n}\n\ninterface NodeWithHiddenProperty extends Node {\n __roosterjsHiddenProperty?: HiddenProperty;\n}\n\n/**\n * @internal\n */\nexport function getHiddenProperty<Key extends keyof HiddenProperty>(\n node: Node,\n key: Key\n): HiddenProperty[Key] | undefined {\n const nodeWithHiddenProperty = node as NodeWithHiddenProperty;\n const hiddenProperty = nodeWithHiddenProperty.__roosterjsHiddenProperty;\n\n return hiddenProperty ? hiddenProperty[key] : undefined;\n}\n\n/**\n * @internal\n */\nexport function setHiddenProperty<Key extends keyof HiddenProperty>(\n node: Node,\n key: Key,\n value: HiddenProperty[Key]\n) {\n const nodeWithHiddenProperty = node as NodeWithHiddenProperty;\n const hiddenProperty = nodeWithHiddenProperty.__roosterjsHiddenProperty || {};\n\n hiddenProperty[key] = value;\n nodeWithHiddenProperty.__roosterjsHiddenProperty = hiddenProperty;\n}\n"]}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Get paragraph marker from element. This is used to mark the end of a paragraph in a block element.
3
+ */
4
+ export declare function getParagraphMarker(element: HTMLElement): string | undefined;
5
+ /**
6
+ * Set paragraph marker to element. This is used to mark the end of a paragraph in a block element.
7
+ */
8
+ export declare function setParagraphMarker(element: HTMLElement, marker: string): void;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setParagraphMarker = exports.getParagraphMarker = void 0;
4
+ var hiddenProperty_1 = require("./hiddenProperty");
5
+ /**
6
+ * Get paragraph marker from element. This is used to mark the end of a paragraph in a block element.
7
+ */
8
+ function getParagraphMarker(element) {
9
+ return (0, hiddenProperty_1.getHiddenProperty)(element, 'paragraphMarker');
10
+ }
11
+ exports.getParagraphMarker = getParagraphMarker;
12
+ /**
13
+ * Set paragraph marker to element. This is used to mark the end of a paragraph in a block element.
14
+ */
15
+ function setParagraphMarker(element, marker) {
16
+ (0, hiddenProperty_1.setHiddenProperty)(element, 'paragraphMarker', marker);
17
+ }
18
+ exports.setParagraphMarker = setParagraphMarker;
19
+ //# sourceMappingURL=paragraphMarker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paragraphMarker.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/domUtils/hiddenProperties/paragraphMarker.ts"],"names":[],"mappings":";;;AAAA,mDAAwE;AAExE;;GAEG;AACH,SAAgB,kBAAkB,CAAC,OAAoB;IACnD,OAAO,IAAA,kCAAiB,EAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AACzD,CAAC;AAFD,gDAEC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,OAAoB,EAAE,MAAc;IACnE,IAAA,kCAAiB,EAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;AAC1D,CAAC;AAFD,gDAEC","sourcesContent":["import { getHiddenProperty, setHiddenProperty } from './hiddenProperty';\n\n/**\n * Get paragraph marker from element. This is used to mark the end of a paragraph in a block element.\n */\nexport function getParagraphMarker(element: HTMLElement): string | undefined {\n return getHiddenProperty(element, 'paragraphMarker');\n}\n\n/**\n * Set paragraph marker to element. This is used to mark the end of a paragraph in a block element.\n */\nexport function setParagraphMarker(element: HTMLElement, marker: string): void {\n setHiddenProperty(element, 'paragraphMarker', marker);\n}\n"]}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Set a hidden property on a link element to indicate whether it is undeletable or not.
3
+ * This is used to prevent the link from being deleted when the user tries to delete it.
4
+ * @param a The link element to set the property on
5
+ * @param undeletable Whether the link is undeletable or not
6
+ */
7
+ export declare function setLinkUndeletable(a: HTMLAnchorElement, undeletable: boolean): void;
8
+ /**
9
+ * Check if a link element is undeletable or not.
10
+ * This is used to determine if the link can be deleted when the user tries to delete it.
11
+ * @param a The link element to check
12
+ * @returns True if the link is undeletable, false otherwise
13
+ */
14
+ export declare function isLinkUndeletable(a: HTMLAnchorElement): boolean;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isLinkUndeletable = exports.setLinkUndeletable = void 0;
4
+ var hiddenProperty_1 = require("./hiddenProperty");
5
+ var UndeletableLinkKey = 'undeletable';
6
+ /**
7
+ * Set a hidden property on a link element to indicate whether it is undeletable or not.
8
+ * This is used to prevent the link from being deleted when the user tries to delete it.
9
+ * @param a The link element to set the property on
10
+ * @param undeletable Whether the link is undeletable or not
11
+ */
12
+ function setLinkUndeletable(a, undeletable) {
13
+ (0, hiddenProperty_1.setHiddenProperty)(a, UndeletableLinkKey, undeletable);
14
+ }
15
+ exports.setLinkUndeletable = setLinkUndeletable;
16
+ /**
17
+ * Check if a link element is undeletable or not.
18
+ * This is used to determine if the link can be deleted when the user tries to delete it.
19
+ * @param a The link element to check
20
+ * @returns True if the link is undeletable, false otherwise
21
+ */
22
+ function isLinkUndeletable(a) {
23
+ return !!(0, hiddenProperty_1.getHiddenProperty)(a, UndeletableLinkKey);
24
+ }
25
+ exports.isLinkUndeletable = isLinkUndeletable;
26
+ //# sourceMappingURL=undeletableLink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"undeletableLink.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/domUtils/hiddenProperties/undeletableLink.ts"],"names":[],"mappings":";;;AAAA,mDAAwE;AAGxE,IAAM,kBAAkB,GAAyB,aAAa,CAAC;AAE/D;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,CAAoB,EAAE,WAAoB;IACzE,IAAA,kCAAiB,EAAC,CAAC,EAAE,kBAAkB,EAAE,WAAW,CAAC,CAAC;AAC1D,CAAC;AAFD,gDAEC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,CAAoB;IAClD,OAAO,CAAC,CAAC,IAAA,kCAAiB,EAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;AACtD,CAAC;AAFD,8CAEC","sourcesContent":["import { getHiddenProperty, setHiddenProperty } from './hiddenProperty';\nimport type { HiddenProperty } from './hiddenProperty';\n\nconst UndeletableLinkKey: keyof HiddenProperty = 'undeletable';\n\n/**\n * Set a hidden property on a link element to indicate whether it is undeletable or not.\n * This is used to prevent the link from being deleted when the user tries to delete it.\n * @param a The link element to set the property on\n * @param undeletable Whether the link is undeletable or not\n */\nexport function setLinkUndeletable(a: HTMLAnchorElement, undeletable: boolean) {\n setHiddenProperty(a, UndeletableLinkKey, undeletable);\n}\n\n/**\n * Check if a link element is undeletable or not.\n * This is used to determine if the link can be deleted when the user tries to delete it.\n * @param a The link element to check\n * @returns True if the link is undeletable, false otherwise\n */\nexport function isLinkUndeletable(a: HTMLAnchorElement): boolean {\n return !!getHiddenProperty(a, UndeletableLinkKey);\n}\n"]}
@@ -36,6 +36,7 @@ var textAlignFormatHandler_1 = require("./block/textAlignFormatHandler");
36
36
  var textColorFormatHandler_1 = require("./segment/textColorFormatHandler");
37
37
  var textColorOnTableCellFormatHandler_1 = require("./table/textColorOnTableCellFormatHandler");
38
38
  var textIndentFormatHandler_1 = require("./block/textIndentFormatHandler");
39
+ var undeletableLinkFormatHandler_1 = require("./segment/undeletableLinkFormatHandler");
39
40
  var underlineFormatHandler_1 = require("./segment/underlineFormatHandler");
40
41
  var verticalAlignFormatHandler_1 = require("./common/verticalAlignFormatHandler");
41
42
  var whiteSpaceFormatHandler_1 = require("./block/whiteSpaceFormatHandler");
@@ -74,6 +75,7 @@ var defaultFormatHandlerMap = {
74
75
  textColor: textColorFormatHandler_1.textColorFormatHandler,
75
76
  textColorOnTableCell: textColorOnTableCellFormatHandler_1.textColorOnTableCellFormatHandler,
76
77
  textIndent: textIndentFormatHandler_1.textIndentFormatHandler,
78
+ undeletableLink: undeletableLinkFormatHandler_1.undeletableLinkFormatHandler,
77
79
  underline: underlineFormatHandler_1.underlineFormatHandler,
78
80
  verticalAlign: verticalAlignFormatHandler_1.verticalAlignFormatHandler,
79
81
  whiteSpace: whiteSpaceFormatHandler_1.whiteSpaceFormatHandler,
@@ -179,6 +181,7 @@ exports.defaultFormatKeysPerCategory = {
179
181
  'border',
180
182
  'size',
181
183
  'textAlign',
184
+ 'undeletableLink',
182
185
  ],
183
186
  segmentUnderLink: ['textColor'],
184
187
  code: ['fontFamily', 'display'],
@@ -1 +1 @@
1
- {"version":3,"file":"defaultFormatHandlers.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-dom/lib/formatHandlers/defaultFormatHandlers.ts"],"names":[],"mappings":";;;;AAAA,gEAA+D;AAC/D,sFAAqF;AACrF,iEAAgE;AAChE,0EAAyE;AACzE,oEAAmE;AACnE,0EAAyE;AACzE,sEAAqE;AACrE,yEAAwE;AACxE,qEAAoE;AACpE,oEAAmE;AACnE,kEAAiE;AACjE,6EAA4E;AAC5E,yEAAwE;AACxE,2DAA0D;AAC1D,yEAAwE;AACxE,4DAA2D;AAC3D,qEAAoE;AACpE,mFAAkF;AAClF,2EAA0E;AAC1E,iEAAgE;AAChE,kFAAiF;AACjF,oFAAmF;AACnF,wEAAuE;AACvE,mEAAkE;AAClE,qEAAoE;AACpE,gEAA+D;AAC/D,qEAAoE;AACpE,yFAAwF;AACxF,6EAA4E;AAC5E,+EAA8E;AAC9E,yEAAwE;AACxE,2EAA0E;AAC1E,+FAA8F;AAC9F,2EAA0E;AAC1E,2EAA0E;AAC1E,kFAAiF;AACjF,2EAA0E;AAC1E,0EAAyE;AAgBzE,IAAM,uBAAuB,GAAmB;IAC5C,IAAI,EAAE,qCAAiB;IACvB,eAAe,EAAE,2DAA4B;IAC7C,IAAI,EAAE,qCAAiB;IACvB,MAAM,EAAE,yCAAmB;IAC3B,SAAS,EAAE,+CAAsB;IACjC,SAAS,EAAE,+CAAsB;IACjC,OAAO,EAAE,2CAAoB;IAC7B,SAAS,EAAE,+CAAsB;IACjC,OAAO,EAAE,2CAAoB;IAC7B,KAAK,EAAE,uCAAkB;IACzB,UAAU,EAAE,iDAAuB;IACnC,QAAQ,EAAE,6CAAqB;IAC/B,MAAM,EAAE,yCAAmB;IAC3B,SAAS,EAAE,+CAAsB;IACjC,EAAE,EAAE,iCAAe;IACnB,MAAM,EAAE,yCAAmB;IAC3B,aAAa,EAAE,uDAA0B;IACzC,UAAU,EAAE,iDAAuB;IACnC,IAAI,EAAE,qCAAiB;IACvB,cAAc,EAAE,yDAA2B;IAC3C,eAAe,EAAE,2DAA4B;IAC7C,SAAS,EAAE,+CAAsB;IACjC,MAAM,EAAE,yCAAmB;IAC3B,OAAO,EAAE,2CAAoB;IAC7B,IAAI,EAAE,qCAAiB;IACvB,MAAM,EAAE,yCAAmB;IAC3B,gBAAgB,EAAE,6DAA6B;IAC/C,WAAW,EAAE,mDAAwB;IACrC,YAAY,EAAE,qDAAyB;IACvC,SAAS,EAAE,+CAAsB;IACjC,SAAS,EAAE,+CAAsB;IACjC,oBAAoB,EAAE,qEAAiC;IACvD,UAAU,EAAE,iDAAuB;IACnC,SAAS,EAAE,+CAAsB;IACjC,aAAa,EAAE,uDAA0B;IACzC,UAAU,EAAE,iDAAuB;IACnC,SAAS,EAAE,+CAAsB;CACpC,CAAC;AAEF,IAAM,wBAAwB,GAAmC;IAC7D,eAAe;IACf,YAAY;IACZ,UAAU;CACb,CAAC;AAEF,IAAM,0BAA0B,GAAmC;IAC/D,QAAQ;IACR,WAAW;IACX,kBAAkB;IAClB,QAAQ;IACR,MAAM;CACT,CAAC;AACF,IAAM,kBAAkB,GAAmC;IACvD,WAAW;IACX,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,YAAY;CACf,CAAC;AACF,IAAM,sBAAsB,GAAmC;IAC3D,iBAAiB;IACjB,QAAQ;IACR,SAAS;IACT,QAAQ;CACX,CAAC;AAEF;;GAEG;AACU,QAAA,4BAA4B,GAErC;IACA,KAAK,EAAE,kBAAkB;IACzB,cAAc,EAAE,CAAC,gBAAgB,CAAC;IAClC,eAAe,EAAE,CAAC,iBAAiB,CAAC;IACpC,eAAe,gFACR,kBAAkB;QACrB,WAAW;QACX,WAAW;QACX,YAAY;QACZ,QAAQ;QACR,WAAW;aACd;IACD,SAAS,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,CAAC;IAC1F,iBAAiB,gFAAM,wBAAwB,YAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,SAAC;IAC9F,mBAAmB,EAAE,0BAA0B;IAC/C,OAAO,2GACA,wBAAwB,+BACxB,0BAA0B;QAC7B,WAAW;QACX,iBAAiB;QACjB,YAAY;aACf;IACD,cAAc,2GAAM,wBAAwB,+BAAK,0BAA0B,YAAE,WAAW,SAAC;IACzF,kBAAkB,2GACX,wBAAwB,+BACxB,0BAA0B;QAC7B,sBAAsB;aACzB;IACD,SAAS,EAAE;QACP,QAAQ;QACR,iBAAiB;QACjB,SAAS;QACT,eAAe;QACf,WAAW;QACX,WAAW;QACX,WAAW;QACX,MAAM;KACT;IACD,QAAQ,EAAE,CAAC,iBAAiB,CAAC;IAC7B,WAAW,EAAE,CAAC,MAAM,CAAC;IACrB,KAAK,EAAE;QACH,MAAM;QACN,IAAI;QACJ,QAAQ;QACR,iBAAiB;QACjB,SAAS;QACT,WAAW;QACX,QAAQ;QACR,MAAM;QACN,aAAa;QACb,WAAW;KACd;IACD,WAAW,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC;IAC1C,eAAe,EAAE,CAAC,WAAW,CAAC;IAC9B,KAAK,EAAE;QACH,IAAI;QACJ,MAAM;QACN,QAAQ;QACR,SAAS;QACT,WAAW;QACX,QAAQ;QACR,WAAW;QACX,SAAS;QACT,OAAO;QACP,eAAe;KAClB;IACD,IAAI,EAAE;QACF,MAAM;QACN,WAAW;QACX,WAAW;QACX,SAAS;QACT,QAAQ;QACR,SAAS;QACT,iBAAiB;QACjB,QAAQ;QACR,MAAM;QACN,WAAW;KACd;IACD,gBAAgB,EAAE,CAAC,WAAW,CAAC;IAC/B,IAAI,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;IAC/B,OAAO,EAAE,CAAC,SAAS,CAAC;IACpB,OAAO,2GAAM,kBAAkB,+BAAK,sBAAsB,YAAE,SAAS,EAAE,MAAM,EAAE,WAAW,SAAC;IAC3F,SAAS,gFAAM,sBAAsB,YAAE,WAAW,EAAE,MAAM,EAAE,SAAS,SAAC;IACtE,MAAM,EAAE,CAAC,QAAQ,CAAC;IAClB,OAAO,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE,mEAAmE;CACjH,CAAC;AAEF;;GAEG;AACU,QAAA,oBAAoB,GAAkB,IAAA,6BAAa,EAAC,uBAAuB,CAAC,CAAC,MAAM,CAC5F,UAAC,MAAM,EAAE,GAAG;IACR,MAAM,CAAC,GAAG,CAAC,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC,KAA0B,CAAC;IACtE,OAAO,MAAM,CAAC;AAClB,CAAC,EACc,EAAE,CACpB,CAAC;AAEF;;GAEG;AACU,QAAA,qBAAqB,GAAmB,IAAA,6BAAa,EAAC,uBAAuB,CAAC,CAAC,MAAM,CAC9F,UAAC,MAAM,EAAE,GAAG;IACR,MAAM,CAAC,GAAG,CAAC,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC,KAA2B,CAAC;IACvE,OAAO,MAAM,CAAC;AAClB,CAAC,EACe,EAAE,CACrB,CAAC","sourcesContent":["import { ariaFormatHandler } from './common/ariaFormatHandler';\nimport { backgroundColorFormatHandler } from './common/backgroundColorFormatHandler';\nimport { boldFormatHandler } from './segment/boldFormatHandler';\nimport { borderBoxFormatHandler } from './common/borderBoxFormatHandler';\nimport { borderFormatHandler } from './common/borderFormatHandler';\nimport { boxShadowFormatHandler } from './common/boxShadowFormatHandler';\nimport { datasetFormatHandler } from './common/datasetFormatHandler';\nimport { directionFormatHandler } from './block/directionFormatHandler';\nimport { displayFormatHandler } from './block/displayFormatHandler';\nimport { entityFormatHandler } from './entity/entityFormatHandler';\nimport { floatFormatHandler } from './common/floatFormatHandler';\nimport { fontFamilyFormatHandler } from './segment/fontFamilyFormatHandler';\nimport { fontSizeFormatHandler } from './segment/fontSizeFormatHandler';\nimport { getObjectKeys } from '../domUtils/getObjectKeys';\nimport { htmlAlignFormatHandler } from './block/htmlAlignFormatHandler';\nimport { idFormatHandler } from './common/idFormatHandler';\nimport { italicFormatHandler } from './segment/italicFormatHandler';\nimport { letterSpacingFormatHandler } from './segment/letterSpacingFormatHandler';\nimport { lineHeightFormatHandler } from './block/lineHeightFormatHandler';\nimport { linkFormatHandler } from './segment/linkFormatHandler';\nimport { listItemThreadFormatHandler } from './list/listItemThreadFormatHandler';\nimport { listLevelThreadFormatHandler } from './list/listLevelThreadFormatHandler';\nimport { listStyleFormatHandler } from './list/listStyleFormatHandler';\nimport { marginFormatHandler } from './block/marginFormatHandler';\nimport { paddingFormatHandler } from './block/paddingFormatHandler';\nimport { sizeFormatHandler } from './common/sizeFormatHandler';\nimport { strikeFormatHandler } from './segment/strikeFormatHandler';\nimport { superOrSubScriptFormatHandler } from './segment/superOrSubScriptFormatHandler';\nimport { tableLayoutFormatHandler } from './table/tableLayoutFormatHandler';\nimport { tableSpacingFormatHandler } from './table/tableSpacingFormatHandler';\nimport { textAlignFormatHandler } from './block/textAlignFormatHandler';\nimport { textColorFormatHandler } from './segment/textColorFormatHandler';\nimport { textColorOnTableCellFormatHandler } from './table/textColorOnTableCellFormatHandler';\nimport { textIndentFormatHandler } from './block/textIndentFormatHandler';\nimport { underlineFormatHandler } from './segment/underlineFormatHandler';\nimport { verticalAlignFormatHandler } from './common/verticalAlignFormatHandler';\nimport { whiteSpaceFormatHandler } from './block/whiteSpaceFormatHandler';\nimport { wordBreakFormatHandler } from './common/wordBreakFormatHandler';\nimport type { FormatHandler } from './FormatHandler';\nimport type {\n ContentModelFormatMap,\n FormatApplier,\n FormatAppliers,\n FormatHandlerTypeMap,\n FormatKey,\n FormatParser,\n FormatParsers,\n} from 'roosterjs-content-model-types';\n\ntype FormatHandlers = {\n [Key in FormatKey]: FormatHandler<FormatHandlerTypeMap[Key]>;\n};\n\nconst defaultFormatHandlerMap: FormatHandlers = {\n aria: ariaFormatHandler,\n backgroundColor: backgroundColorFormatHandler,\n bold: boldFormatHandler,\n border: borderFormatHandler,\n borderBox: borderBoxFormatHandler,\n boxShadow: boxShadowFormatHandler,\n dataset: datasetFormatHandler,\n direction: directionFormatHandler,\n display: displayFormatHandler,\n float: floatFormatHandler,\n fontFamily: fontFamilyFormatHandler,\n fontSize: fontSizeFormatHandler,\n entity: entityFormatHandler,\n htmlAlign: htmlAlignFormatHandler,\n id: idFormatHandler,\n italic: italicFormatHandler,\n letterSpacing: letterSpacingFormatHandler,\n lineHeight: lineHeightFormatHandler,\n link: linkFormatHandler,\n listItemThread: listItemThreadFormatHandler,\n listLevelThread: listLevelThreadFormatHandler,\n listStyle: listStyleFormatHandler,\n margin: marginFormatHandler,\n padding: paddingFormatHandler,\n size: sizeFormatHandler,\n strike: strikeFormatHandler,\n superOrSubScript: superOrSubScriptFormatHandler,\n tableLayout: tableLayoutFormatHandler,\n tableSpacing: tableSpacingFormatHandler,\n textAlign: textAlignFormatHandler,\n textColor: textColorFormatHandler,\n textColorOnTableCell: textColorOnTableCellFormatHandler,\n textIndent: textIndentFormatHandler,\n underline: underlineFormatHandler,\n verticalAlign: verticalAlignFormatHandler,\n whiteSpace: whiteSpaceFormatHandler,\n wordBreak: wordBreakFormatHandler,\n};\n\nconst styleBasedSegmentFormats: (keyof FormatHandlerTypeMap)[] = [\n 'letterSpacing',\n 'fontFamily',\n 'fontSize',\n];\n\nconst elementBasedSegmentFormats: (keyof FormatHandlerTypeMap)[] = [\n 'strike',\n 'underline',\n 'superOrSubScript',\n 'italic',\n 'bold',\n];\nconst sharedBlockFormats: (keyof FormatHandlerTypeMap)[] = [\n 'direction',\n 'textAlign',\n 'textIndent',\n 'lineHeight',\n 'whiteSpace',\n];\nconst sharedContainerFormats: (keyof FormatHandlerTypeMap)[] = [\n 'backgroundColor',\n 'margin',\n 'padding',\n 'border',\n];\n\n/**\n * @internal\n */\nexport const defaultFormatKeysPerCategory: {\n [key in keyof ContentModelFormatMap]: (keyof FormatHandlerTypeMap)[];\n} = {\n block: sharedBlockFormats,\n listItemThread: ['listItemThread'],\n listLevelThread: ['listLevelThread'],\n listItemElement: [\n ...sharedBlockFormats,\n 'direction',\n 'textAlign',\n 'lineHeight',\n 'margin',\n 'listStyle',\n ],\n listLevel: ['direction', 'textAlign', 'margin', 'padding', 'listStyle', 'backgroundColor'],\n styleBasedSegment: [...styleBasedSegmentFormats, 'textColor', 'backgroundColor', 'lineHeight'],\n elementBasedSegment: elementBasedSegmentFormats,\n segment: [\n ...styleBasedSegmentFormats,\n ...elementBasedSegmentFormats,\n 'textColor',\n 'backgroundColor',\n 'lineHeight',\n ],\n segmentOnBlock: [...styleBasedSegmentFormats, ...elementBasedSegmentFormats, 'textColor'],\n segmentOnTableCell: [\n ...styleBasedSegmentFormats,\n ...elementBasedSegmentFormats,\n 'textColorOnTableCell',\n ],\n tableCell: [\n 'border',\n 'backgroundColor',\n 'padding',\n 'verticalAlign',\n 'wordBreak',\n 'textColor',\n 'htmlAlign',\n 'size',\n ],\n tableRow: ['backgroundColor'],\n tableColumn: ['size'],\n table: [\n 'aria',\n 'id',\n 'border',\n 'backgroundColor',\n 'display',\n 'htmlAlign',\n 'margin',\n 'size',\n 'tableLayout',\n 'textColor',\n ],\n tableBorder: ['borderBox', 'tableSpacing'],\n tableCellBorder: ['borderBox'],\n image: [\n 'id',\n 'size',\n 'margin',\n 'padding',\n 'borderBox',\n 'border',\n 'boxShadow',\n 'display',\n 'float',\n 'verticalAlign',\n ],\n link: [\n 'link',\n 'textColor',\n 'underline',\n 'display',\n 'margin',\n 'padding',\n 'backgroundColor',\n 'border',\n 'size',\n 'textAlign',\n ],\n segmentUnderLink: ['textColor'],\n code: ['fontFamily', 'display'],\n dataset: ['dataset'],\n divider: [...sharedBlockFormats, ...sharedContainerFormats, 'display', 'size', 'htmlAlign'],\n container: [...sharedContainerFormats, 'htmlAlign', 'size', 'display'],\n entity: ['entity'],\n general: ['textColor', 'backgroundColor'], // General model still need to do color transformation in dark mode\n};\n\n/**\n * @internal\n */\nexport const defaultFormatParsers: FormatParsers = getObjectKeys(defaultFormatHandlerMap).reduce(\n (result, key) => {\n result[key] = defaultFormatHandlerMap[key].parse as FormatParser<any>;\n return result;\n },\n <FormatParsers>{}\n);\n\n/**\n * @internal\n */\nexport const defaultFormatAppliers: FormatAppliers = getObjectKeys(defaultFormatHandlerMap).reduce(\n (result, key) => {\n result[key] = defaultFormatHandlerMap[key].apply as FormatApplier<any>;\n return result;\n },\n <FormatAppliers>{}\n);\n"]}
1
+ {"version":3,"file":"defaultFormatHandlers.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-dom/lib/formatHandlers/defaultFormatHandlers.ts"],"names":[],"mappings":"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","sourcesContent":["import { ariaFormatHandler } from './common/ariaFormatHandler';\nimport { backgroundColorFormatHandler } from './common/backgroundColorFormatHandler';\nimport { boldFormatHandler } from './segment/boldFormatHandler';\nimport { borderBoxFormatHandler } from './common/borderBoxFormatHandler';\nimport { borderFormatHandler } from './common/borderFormatHandler';\nimport { boxShadowFormatHandler } from './common/boxShadowFormatHandler';\nimport { datasetFormatHandler } from './common/datasetFormatHandler';\nimport { directionFormatHandler } from './block/directionFormatHandler';\nimport { displayFormatHandler } from './block/displayFormatHandler';\nimport { entityFormatHandler } from './entity/entityFormatHandler';\nimport { floatFormatHandler } from './common/floatFormatHandler';\nimport { fontFamilyFormatHandler } from './segment/fontFamilyFormatHandler';\nimport { fontSizeFormatHandler } from './segment/fontSizeFormatHandler';\nimport { getObjectKeys } from '../domUtils/getObjectKeys';\nimport { htmlAlignFormatHandler } from './block/htmlAlignFormatHandler';\nimport { idFormatHandler } from './common/idFormatHandler';\nimport { italicFormatHandler } from './segment/italicFormatHandler';\nimport { letterSpacingFormatHandler } from './segment/letterSpacingFormatHandler';\nimport { lineHeightFormatHandler } from './block/lineHeightFormatHandler';\nimport { linkFormatHandler } from './segment/linkFormatHandler';\nimport { listItemThreadFormatHandler } from './list/listItemThreadFormatHandler';\nimport { listLevelThreadFormatHandler } from './list/listLevelThreadFormatHandler';\nimport { listStyleFormatHandler } from './list/listStyleFormatHandler';\nimport { marginFormatHandler } from './block/marginFormatHandler';\nimport { paddingFormatHandler } from './block/paddingFormatHandler';\nimport { sizeFormatHandler } from './common/sizeFormatHandler';\nimport { strikeFormatHandler } from './segment/strikeFormatHandler';\nimport { superOrSubScriptFormatHandler } from './segment/superOrSubScriptFormatHandler';\nimport { tableLayoutFormatHandler } from './table/tableLayoutFormatHandler';\nimport { tableSpacingFormatHandler } from './table/tableSpacingFormatHandler';\nimport { textAlignFormatHandler } from './block/textAlignFormatHandler';\nimport { textColorFormatHandler } from './segment/textColorFormatHandler';\nimport { textColorOnTableCellFormatHandler } from './table/textColorOnTableCellFormatHandler';\nimport { textIndentFormatHandler } from './block/textIndentFormatHandler';\nimport { undeletableLinkFormatHandler } from './segment/undeletableLinkFormatHandler';\nimport { underlineFormatHandler } from './segment/underlineFormatHandler';\nimport { verticalAlignFormatHandler } from './common/verticalAlignFormatHandler';\nimport { whiteSpaceFormatHandler } from './block/whiteSpaceFormatHandler';\nimport { wordBreakFormatHandler } from './common/wordBreakFormatHandler';\nimport type { FormatHandler } from './FormatHandler';\nimport type {\n ContentModelFormatMap,\n FormatApplier,\n FormatAppliers,\n FormatHandlerTypeMap,\n FormatKey,\n FormatParser,\n FormatParsers,\n} from 'roosterjs-content-model-types';\n\ntype FormatHandlers = {\n [Key in FormatKey]: FormatHandler<FormatHandlerTypeMap[Key]>;\n};\n\nconst defaultFormatHandlerMap: FormatHandlers = {\n aria: ariaFormatHandler,\n backgroundColor: backgroundColorFormatHandler,\n bold: boldFormatHandler,\n border: borderFormatHandler,\n borderBox: borderBoxFormatHandler,\n boxShadow: boxShadowFormatHandler,\n dataset: datasetFormatHandler,\n direction: directionFormatHandler,\n display: displayFormatHandler,\n float: floatFormatHandler,\n fontFamily: fontFamilyFormatHandler,\n fontSize: fontSizeFormatHandler,\n entity: entityFormatHandler,\n htmlAlign: htmlAlignFormatHandler,\n id: idFormatHandler,\n italic: italicFormatHandler,\n letterSpacing: letterSpacingFormatHandler,\n lineHeight: lineHeightFormatHandler,\n link: linkFormatHandler,\n listItemThread: listItemThreadFormatHandler,\n listLevelThread: listLevelThreadFormatHandler,\n listStyle: listStyleFormatHandler,\n margin: marginFormatHandler,\n padding: paddingFormatHandler,\n size: sizeFormatHandler,\n strike: strikeFormatHandler,\n superOrSubScript: superOrSubScriptFormatHandler,\n tableLayout: tableLayoutFormatHandler,\n tableSpacing: tableSpacingFormatHandler,\n textAlign: textAlignFormatHandler,\n textColor: textColorFormatHandler,\n textColorOnTableCell: textColorOnTableCellFormatHandler,\n textIndent: textIndentFormatHandler,\n undeletableLink: undeletableLinkFormatHandler,\n underline: underlineFormatHandler,\n verticalAlign: verticalAlignFormatHandler,\n whiteSpace: whiteSpaceFormatHandler,\n wordBreak: wordBreakFormatHandler,\n};\n\nconst styleBasedSegmentFormats: (keyof FormatHandlerTypeMap)[] = [\n 'letterSpacing',\n 'fontFamily',\n 'fontSize',\n];\n\nconst elementBasedSegmentFormats: (keyof FormatHandlerTypeMap)[] = [\n 'strike',\n 'underline',\n 'superOrSubScript',\n 'italic',\n 'bold',\n];\nconst sharedBlockFormats: (keyof FormatHandlerTypeMap)[] = [\n 'direction',\n 'textAlign',\n 'textIndent',\n 'lineHeight',\n 'whiteSpace',\n];\nconst sharedContainerFormats: (keyof FormatHandlerTypeMap)[] = [\n 'backgroundColor',\n 'margin',\n 'padding',\n 'border',\n];\n\n/**\n * @internal\n */\nexport const defaultFormatKeysPerCategory: {\n [key in keyof ContentModelFormatMap]: (keyof FormatHandlerTypeMap)[];\n} = {\n block: sharedBlockFormats,\n listItemThread: ['listItemThread'],\n listLevelThread: ['listLevelThread'],\n listItemElement: [\n ...sharedBlockFormats,\n 'direction',\n 'textAlign',\n 'lineHeight',\n 'margin',\n 'listStyle',\n ],\n listLevel: ['direction', 'textAlign', 'margin', 'padding', 'listStyle', 'backgroundColor'],\n styleBasedSegment: [...styleBasedSegmentFormats, 'textColor', 'backgroundColor', 'lineHeight'],\n elementBasedSegment: elementBasedSegmentFormats,\n segment: [\n ...styleBasedSegmentFormats,\n ...elementBasedSegmentFormats,\n 'textColor',\n 'backgroundColor',\n 'lineHeight',\n ],\n segmentOnBlock: [...styleBasedSegmentFormats, ...elementBasedSegmentFormats, 'textColor'],\n segmentOnTableCell: [\n ...styleBasedSegmentFormats,\n ...elementBasedSegmentFormats,\n 'textColorOnTableCell',\n ],\n tableCell: [\n 'border',\n 'backgroundColor',\n 'padding',\n 'verticalAlign',\n 'wordBreak',\n 'textColor',\n 'htmlAlign',\n 'size',\n ],\n tableRow: ['backgroundColor'],\n tableColumn: ['size'],\n table: [\n 'aria',\n 'id',\n 'border',\n 'backgroundColor',\n 'display',\n 'htmlAlign',\n 'margin',\n 'size',\n 'tableLayout',\n 'textColor',\n ],\n tableBorder: ['borderBox', 'tableSpacing'],\n tableCellBorder: ['borderBox'],\n image: [\n 'id',\n 'size',\n 'margin',\n 'padding',\n 'borderBox',\n 'border',\n 'boxShadow',\n 'display',\n 'float',\n 'verticalAlign',\n ],\n link: [\n 'link',\n 'textColor',\n 'underline',\n 'display',\n 'margin',\n 'padding',\n 'backgroundColor',\n 'border',\n 'size',\n 'textAlign',\n 'undeletableLink',\n ],\n segmentUnderLink: ['textColor'],\n code: ['fontFamily', 'display'],\n dataset: ['dataset'],\n divider: [...sharedBlockFormats, ...sharedContainerFormats, 'display', 'size', 'htmlAlign'],\n container: [...sharedContainerFormats, 'htmlAlign', 'size', 'display'],\n entity: ['entity'],\n general: ['textColor', 'backgroundColor'], // General model still need to do color transformation in dark mode\n};\n\n/**\n * @internal\n */\nexport const defaultFormatParsers: FormatParsers = getObjectKeys(defaultFormatHandlerMap).reduce(\n (result, key) => {\n result[key] = defaultFormatHandlerMap[key].parse as FormatParser<any>;\n return result;\n },\n <FormatParsers>{}\n);\n\n/**\n * @internal\n */\nexport const defaultFormatAppliers: FormatAppliers = getObjectKeys(defaultFormatHandlerMap).reduce(\n (result, key) => {\n result[key] = defaultFormatHandlerMap[key].apply as FormatApplier<any>;\n return result;\n },\n <FormatAppliers>{}\n);\n"]}
@@ -39,8 +39,10 @@ exports.linkFormatHandler = {
39
39
  }
40
40
  },
41
41
  apply: function (format, element) {
42
- if ((0, isElementOfType_1.isElementOfType)(element, 'a') && format.href) {
43
- element.href = format.href;
42
+ if ((0, isElementOfType_1.isElementOfType)(element, 'a') && (format.href || format.name)) {
43
+ if (format.href) {
44
+ element.href = format.href;
45
+ }
44
46
  if (format.name) {
45
47
  element.name = format.name;
46
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"linkFormatHandler.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/formatHandlers/segment/linkFormatHandler.ts"],"names":[],"mappings":";;;AAAA,kEAAiE;AAIjE;;GAEG;AACU,QAAA,iBAAiB,GAA8B;IACxD,KAAK,EAAE,UAAC,MAAM,EAAE,OAAO;QACnB,IAAI,IAAA,iCAAe,EAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YAC/B,IAAM,MAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YAC1B,IAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,0EAA0E;YACrH,IAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAC9B,IAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;YACxB,IAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;YACtB,IAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACpC,IAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAE5B,IAAI,MAAI,EAAE;gBACN,MAAM,CAAC,IAAI,GAAG,MAAI,CAAC;aACtB;YAED,IAAI,IAAI,EAAE;gBACN,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;aACtB;YAED,IAAI,MAAM,EAAE;gBACR,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;aAC1B;YAED,IAAI,EAAE,EAAE;gBACJ,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;aACxB;YAED,IAAI,GAAG,EAAE;gBACL,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC;aAC7B;YAED,IAAI,KAAK,EAAE;gBACP,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;aAC9B;YAED,IAAI,SAAS,EAAE;gBACX,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC;aAClC;SACJ;IACL,CAAC;IACD,KAAK,EAAE,UAAC,MAAM,EAAE,OAAO;QACnB,IAAI,IAAA,iCAAe,EAAC,OAAO,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE;YAC9C,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YAE3B,IAAI,MAAM,CAAC,IAAI,EAAE;gBACb,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;aAC9B;YAED,IAAI,MAAM,CAAC,MAAM,EAAE;gBACf,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;aAClC;YAED,IAAI,MAAM,CAAC,QAAQ,EAAE;gBACjB,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;aAChC;YAED,IAAI,MAAM,CAAC,WAAW,EAAE;gBACpB,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC;aAC1C;YAED,IAAI,MAAM,CAAC,WAAW,EAAE;gBACpB,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;aACtC;YAED,IAAI,MAAM,CAAC,YAAY,EAAE;gBACrB,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC;aACrC;SACJ;IACL,CAAC;CACJ,CAAC","sourcesContent":["import { isElementOfType } from '../../domUtils/isElementOfType';\nimport type { FormatHandler } from '../FormatHandler';\nimport type { LinkFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const linkFormatHandler: FormatHandler<LinkFormat> = {\n parse: (format, element) => {\n if (isElementOfType(element, 'a')) {\n const name = element.name;\n const href = element.getAttribute('href'); // Use getAttribute to get original HREF but not the resolved absolute url\n const target = element.target;\n const rel = element.rel;\n const id = element.id;\n const className = element.className;\n const title = element.title;\n\n if (name) {\n format.name = name;\n }\n\n if (href) {\n format.href = href;\n }\n\n if (target) {\n format.target = target;\n }\n\n if (id) {\n format.anchorId = id;\n }\n\n if (rel) {\n format.relationship = rel;\n }\n\n if (title) {\n format.anchorTitle = title;\n }\n\n if (className) {\n format.anchorClass = className;\n }\n }\n },\n apply: (format, element) => {\n if (isElementOfType(element, 'a') && format.href) {\n element.href = format.href;\n\n if (format.name) {\n element.name = format.name;\n }\n\n if (format.target) {\n element.target = format.target;\n }\n\n if (format.anchorId) {\n element.id = format.anchorId;\n }\n\n if (format.anchorClass) {\n element.className = format.anchorClass;\n }\n\n if (format.anchorTitle) {\n element.title = format.anchorTitle;\n }\n\n if (format.relationship) {\n element.rel = format.relationship;\n }\n }\n },\n};\n"]}
1
+ {"version":3,"file":"linkFormatHandler.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/formatHandlers/segment/linkFormatHandler.ts"],"names":[],"mappings":";;;AAAA,kEAAiE;AAIjE;;GAEG;AACU,QAAA,iBAAiB,GAA8B;IACxD,KAAK,EAAE,UAAC,MAAM,EAAE,OAAO;QACnB,IAAI,IAAA,iCAAe,EAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YAC/B,IAAM,MAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YAC1B,IAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,0EAA0E;YACrH,IAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAC9B,IAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;YACxB,IAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;YACtB,IAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACpC,IAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAE5B,IAAI,MAAI,EAAE;gBACN,MAAM,CAAC,IAAI,GAAG,MAAI,CAAC;aACtB;YAED,IAAI,IAAI,EAAE;gBACN,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;aACtB;YAED,IAAI,MAAM,EAAE;gBACR,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;aAC1B;YAED,IAAI,EAAE,EAAE;gBACJ,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;aACxB;YAED,IAAI,GAAG,EAAE;gBACL,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC;aAC7B;YAED,IAAI,KAAK,EAAE;gBACP,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;aAC9B;YAED,IAAI,SAAS,EAAE;gBACX,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC;aAClC;SACJ;IACL,CAAC;IACD,KAAK,EAAE,UAAC,MAAM,EAAE,OAAO;QACnB,IAAI,IAAA,iCAAe,EAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;YAC/D,IAAI,MAAM,CAAC,IAAI,EAAE;gBACb,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;aAC9B;YAED,IAAI,MAAM,CAAC,IAAI,EAAE;gBACb,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;aAC9B;YAED,IAAI,MAAM,CAAC,MAAM,EAAE;gBACf,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;aAClC;YAED,IAAI,MAAM,CAAC,QAAQ,EAAE;gBACjB,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;aAChC;YAED,IAAI,MAAM,CAAC,WAAW,EAAE;gBACpB,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC;aAC1C;YAED,IAAI,MAAM,CAAC,WAAW,EAAE;gBACpB,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;aACtC;YAED,IAAI,MAAM,CAAC,YAAY,EAAE;gBACrB,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC;aACrC;SACJ;IACL,CAAC;CACJ,CAAC","sourcesContent":["import { isElementOfType } from '../../domUtils/isElementOfType';\nimport type { FormatHandler } from '../FormatHandler';\nimport type { LinkFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const linkFormatHandler: FormatHandler<LinkFormat> = {\n parse: (format, element) => {\n if (isElementOfType(element, 'a')) {\n const name = element.name;\n const href = element.getAttribute('href'); // Use getAttribute to get original HREF but not the resolved absolute url\n const target = element.target;\n const rel = element.rel;\n const id = element.id;\n const className = element.className;\n const title = element.title;\n\n if (name) {\n format.name = name;\n }\n\n if (href) {\n format.href = href;\n }\n\n if (target) {\n format.target = target;\n }\n\n if (id) {\n format.anchorId = id;\n }\n\n if (rel) {\n format.relationship = rel;\n }\n\n if (title) {\n format.anchorTitle = title;\n }\n\n if (className) {\n format.anchorClass = className;\n }\n }\n },\n apply: (format, element) => {\n if (isElementOfType(element, 'a') && (format.href || format.name)) {\n if (format.href) {\n element.href = format.href;\n }\n\n if (format.name) {\n element.name = format.name;\n }\n\n if (format.target) {\n element.target = format.target;\n }\n\n if (format.anchorId) {\n element.id = format.anchorId;\n }\n\n if (format.anchorClass) {\n element.className = format.anchorClass;\n }\n\n if (format.anchorTitle) {\n element.title = format.anchorTitle;\n }\n\n if (format.relationship) {\n element.rel = format.relationship;\n }\n }\n },\n};\n"]}
@@ -0,0 +1,6 @@
1
+ import type { UndeletableFormat } from 'roosterjs-content-model-types';
2
+ import type { FormatHandler } from '../FormatHandler';
3
+ /**
4
+ * @internal
5
+ */
6
+ export declare const undeletableLinkFormatHandler: FormatHandler<UndeletableFormat>;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.undeletableLinkFormatHandler = void 0;
4
+ var isElementOfType_1 = require("../../domUtils/isElementOfType");
5
+ var undeletableLink_1 = require("../../domUtils/hiddenProperties/undeletableLink");
6
+ /**
7
+ * @internal
8
+ */
9
+ exports.undeletableLinkFormatHandler = {
10
+ parse: function (format, element) {
11
+ if ((0, isElementOfType_1.isElementOfType)(element, 'a') && (0, undeletableLink_1.isLinkUndeletable)(element)) {
12
+ format.undeletable = true;
13
+ }
14
+ },
15
+ apply: function (format, element) {
16
+ if (format.undeletable && (0, isElementOfType_1.isElementOfType)(element, 'a')) {
17
+ (0, undeletableLink_1.setLinkUndeletable)(element, true);
18
+ }
19
+ },
20
+ };
21
+ //# sourceMappingURL=undeletableLinkFormatHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"undeletableLinkFormatHandler.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/formatHandlers/segment/undeletableLinkFormatHandler.ts"],"names":[],"mappings":";;;AAAA,kEAAiE;AACjE,mFAGyD;AAIzD;;GAEG;AACU,QAAA,4BAA4B,GAAqC;IAC1E,KAAK,EAAE,UAAC,MAAM,EAAE,OAAO;QACnB,IAAI,IAAA,iCAAe,EAAC,OAAO,EAAE,GAAG,CAAC,IAAI,IAAA,mCAAiB,EAAC,OAAO,CAAC,EAAE;YAC7D,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;SAC7B;IACL,CAAC;IAED,KAAK,EAAE,UAAC,MAAM,EAAE,OAAO;QACnB,IAAI,MAAM,CAAC,WAAW,IAAI,IAAA,iCAAe,EAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACrD,IAAA,oCAAkB,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;SACrC;IACL,CAAC;CACJ,CAAC","sourcesContent":["import { isElementOfType } from '../../domUtils/isElementOfType';\nimport {\n isLinkUndeletable,\n setLinkUndeletable,\n} from '../../domUtils/hiddenProperties/undeletableLink';\nimport type { UndeletableFormat } from 'roosterjs-content-model-types';\nimport type { FormatHandler } from '../FormatHandler';\n\n/**\n * @internal\n */\nexport const undeletableLinkFormatHandler: FormatHandler<UndeletableFormat> = {\n parse: (format, element) => {\n if (isElementOfType(element, 'a') && isLinkUndeletable(element)) {\n format.undeletable = true;\n }\n },\n\n apply: (format, element) => {\n if (format.undeletable && isElementOfType(element, 'a')) {\n setLinkUndeletable(element, true);\n }\n },\n};\n"]}
package/lib/index.d.ts CHANGED
@@ -22,6 +22,7 @@ export { isEntityElement, findClosestEntityWrapper, getAllEntityWrappers, parseE
22
22
  export { reuseCachedElement } from './domUtils/reuseCachedElement';
23
23
  export { isWhiteSpacePreserved } from './domUtils/isWhiteSpacePreserved';
24
24
  export { normalizeRect } from './domUtils/normalizeRect';
25
+ export { setLinkUndeletable, isLinkUndeletable } from './domUtils/hiddenProperties/undeletableLink';
25
26
  export { createBr } from './modelApi/creators/createBr';
26
27
  export { createListItem } from './modelApi/creators/createListItem';
27
28
  export { createFormatContainer } from './modelApi/creators/createFormatContainer';
@@ -72,6 +73,7 @@ export { readFile } from './domUtils/readFile';
72
73
  export { transformColor } from './domUtils/style/transformColor';
73
74
  export { extractClipboardItems } from './domUtils/event/extractClipboardItems';
74
75
  export { cacheGetEventData } from './domUtils/event/cacheGetEventData';
76
+ export { setParagraphMarker, getParagraphMarker, } from './domUtils/hiddenProperties/paragraphMarker';
75
77
  export { isBlockGroupOfType } from './modelApi/typeCheck/isBlockGroupOfType';
76
78
  export { iterateSelections } from './modelApi/selection/iterateSelections';
77
79
  export { getFirstSelectedListItem, getFirstSelectedTable, getOperationalBlocks, getSelectedParagraphs, getSelectedSegments, getSelectedSegmentsAndParagraphs, } from './modelApi/selection/collectSelections';
package/lib/index.js CHANGED
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createGeneralBlock = exports.createGeneralSegment = exports.createParagraphDecorator = exports.createContentModelDocument = exports.createImage = exports.createText = exports.createTableCell = exports.createTable = exports.createSelectionMarker = exports.createParagraph = exports.createFormatContainer = exports.createListItem = exports.createBr = exports.normalizeRect = exports.isWhiteSpacePreserved = exports.reuseCachedElement = exports.findClosestBlockEntityContainer = exports.isBlockEntityContainer = exports.isEntityDelimiter = exports.addDelimiters = exports.generateEntityClassNames = exports.parseEntityFormat = exports.getAllEntityWrappers = exports.findClosestEntityWrapper = exports.isEntityElement = exports.unwrap = exports.wrap = exports.wrapAllChildNodes = exports.moveChildNodes = exports.toArray = exports.getSafeIdSelector = exports.getObjectKeys = exports.isElementOfType = exports.isNodeOfType = exports.hasMetadata = exports.getMetadata = exports.updateMetadata = exports.buildSelectionMarker = exports.isBlockElement = exports.areSameFormats = exports.parseFormat = exports.getRegularSelectionOffsets = exports.tableProcessor = exports.entityProcessor = exports.processChildNode = exports.handleRegularSelection = exports.childProcessor = exports.contentModelToText = exports.contentModelToDom = exports.domToContentModel = void 0;
4
- exports.transformColor = exports.readFile = exports.parseTableCells = exports.normalizeText = exports.isSpace = exports.isPunctuation = exports.extractBorderValues = exports.combineBorderValue = exports.isCursorMovingKey = exports.isModifierKey = exports.isCharacterValue = exports.getDOMInsertPointRect = exports.getSelectionRootNode = exports.isBold = exports.createModelToDomConfig = exports.createModelToDomContextWithConfig = exports.createModelToDomContext = exports.createDomToModelConfig = exports.createDomToModelContextWithConfig = exports.createDomToModelContext = exports.defaultGenerateColorKey = exports.parseColor = exports.setColor = exports.getColor = exports.DeprecatedColors = exports.BorderKeys = exports.parseValueWithUnit = exports.getAutoListStyleType = exports.getOrderedListNumberStr = exports.setParagraphNotImplicit = exports.mergeTextSegments = exports.normalizeSingleSegment = exports.isEmpty = exports.addSegment = exports.unwrapBlock = exports.isGeneralSegment = exports.normalizeContentModel = exports.normalizeParagraph = exports.addTextSegment = exports.addLink = exports.addCode = exports.addBlock = exports.mutateSegment = exports.mutateSegments = exports.mutateBlock = exports.createTableRow = exports.createEmptyModel = exports.createListLevel = exports.createDivider = exports.createEntity = void 0;
5
- exports.EmptySegmentFormat = exports.UnorderedListStyleMap = exports.OrderedListStyleMap = exports.TableBorderFormat = exports.NumberingListType = exports.BulletListType = exports.ChangeSource = exports.ListMetadataDefinition = exports.getListMetadata = exports.updateListMetadata = exports.getTableMetadata = exports.updateTableMetadata = exports.getTableCellMetadata = exports.updateTableCellMetadata = exports.getImageMetadata = exports.updateImageMetadata = exports.runEditSteps = exports.getClosestAncestorBlockGroupIndex = exports.getSegmentTextFormat = exports.getListStyleTypeFromString = exports.retrieveModelFormatState = exports.setTableCellBackgroundColor = exports.MIN_ALLOWED_TABLE_CELL_HEIGHT = exports.MIN_ALLOWED_TABLE_CELL_WIDTH = exports.normalizeTable = exports.setFirstColumnFormatBorders = exports.applyTableFormat = exports.deleteBlock = exports.deleteSegment = exports.deleteSelection = exports.mergeModel = exports.cloneModel = exports.setSelection = exports.hasSelectionInBlockGroup = exports.hasSelectionInSegment = exports.hasSelectionInBlock = exports.getSelectedCells = exports.getSelectedSegmentsAndParagraphs = exports.getSelectedSegments = exports.getSelectedParagraphs = exports.getOperationalBlocks = exports.getFirstSelectedTable = exports.getFirstSelectedListItem = exports.iterateSelections = exports.isBlockGroupOfType = exports.cacheGetEventData = exports.extractClipboardItems = void 0;
3
+ exports.createParagraphDecorator = exports.createContentModelDocument = exports.createImage = exports.createText = exports.createTableCell = exports.createTable = exports.createSelectionMarker = exports.createParagraph = exports.createFormatContainer = exports.createListItem = exports.createBr = exports.isLinkUndeletable = exports.setLinkUndeletable = exports.normalizeRect = exports.isWhiteSpacePreserved = exports.reuseCachedElement = exports.findClosestBlockEntityContainer = exports.isBlockEntityContainer = exports.isEntityDelimiter = exports.addDelimiters = exports.generateEntityClassNames = exports.parseEntityFormat = exports.getAllEntityWrappers = exports.findClosestEntityWrapper = exports.isEntityElement = exports.unwrap = exports.wrap = exports.wrapAllChildNodes = exports.moveChildNodes = exports.toArray = exports.getSafeIdSelector = exports.getObjectKeys = exports.isElementOfType = exports.isNodeOfType = exports.hasMetadata = exports.getMetadata = exports.updateMetadata = exports.buildSelectionMarker = exports.isBlockElement = exports.areSameFormats = exports.parseFormat = exports.getRegularSelectionOffsets = exports.tableProcessor = exports.entityProcessor = exports.processChildNode = exports.handleRegularSelection = exports.childProcessor = exports.contentModelToText = exports.contentModelToDom = exports.domToContentModel = void 0;
4
+ exports.parseTableCells = exports.normalizeText = exports.isSpace = exports.isPunctuation = exports.extractBorderValues = exports.combineBorderValue = exports.isCursorMovingKey = exports.isModifierKey = exports.isCharacterValue = exports.getDOMInsertPointRect = exports.getSelectionRootNode = exports.isBold = exports.createModelToDomConfig = exports.createModelToDomContextWithConfig = exports.createModelToDomContext = exports.createDomToModelConfig = exports.createDomToModelContextWithConfig = exports.createDomToModelContext = exports.defaultGenerateColorKey = exports.parseColor = exports.setColor = exports.getColor = exports.DeprecatedColors = exports.BorderKeys = exports.parseValueWithUnit = exports.getAutoListStyleType = exports.getOrderedListNumberStr = exports.setParagraphNotImplicit = exports.mergeTextSegments = exports.normalizeSingleSegment = exports.isEmpty = exports.addSegment = exports.unwrapBlock = exports.isGeneralSegment = exports.normalizeContentModel = exports.normalizeParagraph = exports.addTextSegment = exports.addLink = exports.addCode = exports.addBlock = exports.mutateSegment = exports.mutateSegments = exports.mutateBlock = exports.createTableRow = exports.createEmptyModel = exports.createListLevel = exports.createDivider = exports.createEntity = exports.createGeneralBlock = exports.createGeneralSegment = void 0;
5
+ exports.UnorderedListStyleMap = exports.OrderedListStyleMap = exports.TableBorderFormat = exports.NumberingListType = exports.BulletListType = exports.ChangeSource = exports.ListMetadataDefinition = exports.getListMetadata = exports.updateListMetadata = exports.getTableMetadata = exports.updateTableMetadata = exports.getTableCellMetadata = exports.updateTableCellMetadata = exports.getImageMetadata = exports.updateImageMetadata = exports.runEditSteps = exports.getClosestAncestorBlockGroupIndex = exports.getSegmentTextFormat = exports.getListStyleTypeFromString = exports.retrieveModelFormatState = exports.setTableCellBackgroundColor = exports.MIN_ALLOWED_TABLE_CELL_HEIGHT = exports.MIN_ALLOWED_TABLE_CELL_WIDTH = exports.normalizeTable = exports.setFirstColumnFormatBorders = exports.applyTableFormat = exports.deleteBlock = exports.deleteSegment = exports.deleteSelection = exports.mergeModel = exports.cloneModel = exports.setSelection = exports.hasSelectionInBlockGroup = exports.hasSelectionInSegment = exports.hasSelectionInBlock = exports.getSelectedCells = exports.getSelectedSegmentsAndParagraphs = exports.getSelectedSegments = exports.getSelectedParagraphs = exports.getOperationalBlocks = exports.getFirstSelectedTable = exports.getFirstSelectedListItem = exports.iterateSelections = exports.isBlockGroupOfType = exports.getParagraphMarker = exports.setParagraphMarker = exports.cacheGetEventData = exports.extractClipboardItems = exports.transformColor = exports.readFile = void 0;
6
+ exports.EmptySegmentFormat = void 0;
6
7
  var domToContentModel_1 = require("./domToModel/domToContentModel");
7
8
  Object.defineProperty(exports, "domToContentModel", { enumerable: true, get: function () { return domToContentModel_1.domToContentModel; } });
8
9
  var contentModelToDom_1 = require("./modelToDom/contentModelToDom");
@@ -64,6 +65,9 @@ var isWhiteSpacePreserved_1 = require("./domUtils/isWhiteSpacePreserved");
64
65
  Object.defineProperty(exports, "isWhiteSpacePreserved", { enumerable: true, get: function () { return isWhiteSpacePreserved_1.isWhiteSpacePreserved; } });
65
66
  var normalizeRect_1 = require("./domUtils/normalizeRect");
66
67
  Object.defineProperty(exports, "normalizeRect", { enumerable: true, get: function () { return normalizeRect_1.normalizeRect; } });
68
+ var undeletableLink_1 = require("./domUtils/hiddenProperties/undeletableLink");
69
+ Object.defineProperty(exports, "setLinkUndeletable", { enumerable: true, get: function () { return undeletableLink_1.setLinkUndeletable; } });
70
+ Object.defineProperty(exports, "isLinkUndeletable", { enumerable: true, get: function () { return undeletableLink_1.isLinkUndeletable; } });
67
71
  var createBr_1 = require("./modelApi/creators/createBr");
68
72
  Object.defineProperty(exports, "createBr", { enumerable: true, get: function () { return createBr_1.createBr; } });
69
73
  var createListItem_1 = require("./modelApi/creators/createListItem");
@@ -179,6 +183,9 @@ var extractClipboardItems_1 = require("./domUtils/event/extractClipboardItems");
179
183
  Object.defineProperty(exports, "extractClipboardItems", { enumerable: true, get: function () { return extractClipboardItems_1.extractClipboardItems; } });
180
184
  var cacheGetEventData_1 = require("./domUtils/event/cacheGetEventData");
181
185
  Object.defineProperty(exports, "cacheGetEventData", { enumerable: true, get: function () { return cacheGetEventData_1.cacheGetEventData; } });
186
+ var paragraphMarker_1 = require("./domUtils/hiddenProperties/paragraphMarker");
187
+ Object.defineProperty(exports, "setParagraphMarker", { enumerable: true, get: function () { return paragraphMarker_1.setParagraphMarker; } });
188
+ Object.defineProperty(exports, "getParagraphMarker", { enumerable: true, get: function () { return paragraphMarker_1.getParagraphMarker; } });
182
189
  var isBlockGroupOfType_1 = require("./modelApi/typeCheck/isBlockGroupOfType");
183
190
  Object.defineProperty(exports, "isBlockGroupOfType", { enumerable: true, get: function () { return isBlockGroupOfType_1.isBlockGroupOfType; } });
184
191
  var iterateSelections_1 = require("./modelApi/selection/iterateSelections");
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../packages/roosterjs-content-model-dom/lib/index.ts"],"names":[],"mappings":"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","sourcesContent":["export { domToContentModel } from './domToModel/domToContentModel';\nexport { contentModelToDom } from './modelToDom/contentModelToDom';\nexport { contentModelToText } from './modelToText/contentModelToText';\n\nexport {\n childProcessor,\n handleRegularSelection,\n processChildNode,\n} from './domToModel/processors/childProcessor';\nexport { entityProcessor } from './domToModel/processors/entityProcessor';\nexport { tableProcessor } from './domToModel/processors/tableProcessor';\nexport { getRegularSelectionOffsets } from './domToModel/utils/getRegularSelectionOffsets';\nexport { parseFormat } from './domToModel/utils/parseFormat';\nexport { areSameFormats } from './domToModel/utils/areSameFormats';\nexport { isBlockElement } from './domToModel/utils/isBlockElement';\nexport { buildSelectionMarker } from './domToModel/utils/buildSelectionMarker';\n\nexport { updateMetadata, getMetadata, hasMetadata } from './modelApi/metadata/updateMetadata';\nexport { isNodeOfType } from './domUtils/isNodeOfType';\nexport { isElementOfType } from './domUtils/isElementOfType';\nexport { getObjectKeys } from './domUtils/getObjectKeys';\nexport { getSafeIdSelector } from './domUtils/getSafeIdSelector';\nexport { toArray } from './domUtils/toArray';\nexport { moveChildNodes, wrapAllChildNodes } from './domUtils/moveChildNodes';\nexport { wrap } from './domUtils/wrap';\nexport { unwrap } from './domUtils/unwrap';\nexport {\n isEntityElement,\n findClosestEntityWrapper,\n getAllEntityWrappers,\n parseEntityFormat,\n generateEntityClassNames,\n addDelimiters,\n isEntityDelimiter,\n isBlockEntityContainer,\n findClosestBlockEntityContainer,\n} from './domUtils/entityUtils';\nexport { reuseCachedElement } from './domUtils/reuseCachedElement';\nexport { isWhiteSpacePreserved } from './domUtils/isWhiteSpacePreserved';\nexport { normalizeRect } from './domUtils/normalizeRect';\n\nexport { createBr } from './modelApi/creators/createBr';\nexport { createListItem } from './modelApi/creators/createListItem';\nexport { createFormatContainer } from './modelApi/creators/createFormatContainer';\nexport { createParagraph } from './modelApi/creators/createParagraph';\nexport { createSelectionMarker } from './modelApi/creators/createSelectionMarker';\nexport { createTable } from './modelApi/creators/createTable';\nexport { createTableCell } from './modelApi/creators/createTableCell';\nexport { createText } from './modelApi/creators/createText';\nexport { createImage } from './modelApi/creators/createImage';\nexport { createContentModelDocument } from './modelApi/creators/createContentModelDocument';\nexport { createParagraphDecorator } from './modelApi/creators/createParagraphDecorator';\nexport { createGeneralSegment } from './modelApi/creators/createGeneralSegment';\nexport { createGeneralBlock } from './modelApi/creators/createGeneralBlock';\nexport { createEntity } from './modelApi/creators/createEntity';\nexport { createDivider } from './modelApi/creators/createDivider';\nexport { createListLevel } from './modelApi/creators/createListLevel';\nexport { createEmptyModel } from './modelApi/creators/createEmptyModel';\nexport { createTableRow } from './modelApi/creators/createTableRow';\n\nexport { mutateBlock, mutateSegments, mutateSegment } from './modelApi/common/mutate';\nexport { addBlock } from './modelApi/common/addBlock';\nexport { addCode } from './modelApi/common/addDecorators';\nexport { addLink } from './modelApi/common/addDecorators';\nexport { addTextSegment } from './modelApi/common/addTextSegment';\nexport { normalizeParagraph } from './modelApi/common/normalizeParagraph';\n\nexport { normalizeContentModel } from './modelApi/common/normalizeContentModel';\nexport { isGeneralSegment } from './modelApi/typeCheck/isGeneralSegment';\nexport { unwrapBlock } from './modelApi/common/unwrapBlock';\nexport { addSegment } from './modelApi/common/addSegment';\nexport { isEmpty } from './modelApi/common/isEmpty';\nexport { normalizeSingleSegment } from './modelApi/common/normalizeSegment';\nexport { mergeTextSegments } from './modelApi/common/mergeTextSegments';\n\nexport { setParagraphNotImplicit } from './modelApi/block/setParagraphNotImplicit';\nexport { getOrderedListNumberStr } from './modelApi/list/getOrderedListNumberStr';\nexport { getAutoListStyleType } from './modelApi/list/getAutoListStyleType';\n\nexport { parseValueWithUnit } from './formatHandlers/utils/parseValueWithUnit';\nexport { BorderKeys } from './formatHandlers/common/borderFormatHandler';\nexport {\n DeprecatedColors,\n getColor,\n setColor,\n parseColor,\n defaultGenerateColorKey,\n} from './formatHandlers/utils/color';\n\nexport {\n createDomToModelContext,\n createDomToModelContextWithConfig,\n createDomToModelConfig,\n} from './domToModel/context/createDomToModelContext';\nexport {\n createModelToDomContext,\n createModelToDomContextWithConfig,\n createModelToDomConfig,\n} from './modelToDom/context/createModelToDomContext';\n\nexport { isBold } from './domUtils/style/isBold';\nexport { getSelectionRootNode } from './domUtils/selection/getSelectionRootNode';\nexport { getDOMInsertPointRect } from './domUtils/selection/getDOMInsertPointRect';\nexport { isCharacterValue, isModifierKey, isCursorMovingKey } from './domUtils/event/eventUtils';\nexport { combineBorderValue, extractBorderValues } from './domUtils/style/borderValues';\nexport { isPunctuation, isSpace, normalizeText } from './domUtils/stringUtil';\nexport { parseTableCells } from './domUtils/table/parseTableCells';\nexport { readFile } from './domUtils/readFile';\nexport { transformColor } from './domUtils/style/transformColor';\nexport { extractClipboardItems } from './domUtils/event/extractClipboardItems';\nexport { cacheGetEventData } from './domUtils/event/cacheGetEventData';\n\nexport { isBlockGroupOfType } from './modelApi/typeCheck/isBlockGroupOfType';\n\nexport { iterateSelections } from './modelApi/selection/iterateSelections';\nexport {\n getFirstSelectedListItem,\n getFirstSelectedTable,\n getOperationalBlocks,\n getSelectedParagraphs,\n getSelectedSegments,\n getSelectedSegmentsAndParagraphs,\n} from './modelApi/selection/collectSelections';\nexport { getSelectedCells } from './modelApi/selection/getSelectedCells';\nexport { hasSelectionInBlock } from './modelApi/selection/hasSelectionInBlock';\nexport { hasSelectionInSegment } from './modelApi/selection/hasSelectionInSegment';\nexport { hasSelectionInBlockGroup } from './modelApi/selection/hasSelectionInBlockGroup';\nexport { setSelection } from './modelApi/selection/setSelection';\n\nexport { cloneModel } from './modelApi/editing/cloneModel';\nexport { mergeModel } from './modelApi/editing/mergeModel';\nexport { deleteSelection } from './modelApi/editing/deleteSelection';\nexport { deleteSegment } from './modelApi/editing/deleteSegment';\nexport { deleteBlock } from './modelApi/editing/deleteBlock';\nexport { applyTableFormat, setFirstColumnFormatBorders } from './modelApi/editing/applyTableFormat';\nexport {\n normalizeTable,\n MIN_ALLOWED_TABLE_CELL_WIDTH,\n MIN_ALLOWED_TABLE_CELL_HEIGHT,\n} from './modelApi/editing/normalizeTable';\nexport { setTableCellBackgroundColor } from './modelApi/editing/setTableCellBackgroundColor';\nexport { retrieveModelFormatState } from './modelApi/editing/retrieveModelFormatState';\nexport { getListStyleTypeFromString } from './modelApi/editing/getListStyleTypeFromString';\nexport { getSegmentTextFormat } from './modelApi/editing/getSegmentTextFormat';\nexport { getClosestAncestorBlockGroupIndex } from './modelApi/editing/getClosestAncestorBlockGroupIndex';\nexport { runEditSteps } from './modelApi/editing/runEditSteps';\n\nexport { updateImageMetadata, getImageMetadata } from './modelApi/metadata/updateImageMetadata';\nexport {\n updateTableCellMetadata,\n getTableCellMetadata,\n} from './modelApi/metadata/updateTableCellMetadata';\nexport { updateTableMetadata, getTableMetadata } from './modelApi/metadata/updateTableMetadata';\nexport {\n updateListMetadata,\n getListMetadata,\n ListMetadataDefinition,\n} from './modelApi/metadata/updateListMetadata';\n\nexport { ChangeSource } from './constants/ChangeSource';\nexport { BulletListType } from './constants/BulletListType';\nexport { NumberingListType } from './constants/NumberingListType';\nexport { TableBorderFormat } from './constants/TableBorderFormat';\nexport { OrderedListStyleMap } from './constants/OrderedListStyleMap';\nexport { UnorderedListStyleMap } from './constants/UnorderedListStyleMap';\nexport { EmptySegmentFormat } from './constants/EmptySegmentFormat';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../packages/roosterjs-content-model-dom/lib/index.ts"],"names":[],"mappings":"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","sourcesContent":["export { domToContentModel } from './domToModel/domToContentModel';\nexport { contentModelToDom } from './modelToDom/contentModelToDom';\nexport { contentModelToText } from './modelToText/contentModelToText';\n\nexport {\n childProcessor,\n handleRegularSelection,\n processChildNode,\n} from './domToModel/processors/childProcessor';\nexport { entityProcessor } from './domToModel/processors/entityProcessor';\nexport { tableProcessor } from './domToModel/processors/tableProcessor';\nexport { getRegularSelectionOffsets } from './domToModel/utils/getRegularSelectionOffsets';\nexport { parseFormat } from './domToModel/utils/parseFormat';\nexport { areSameFormats } from './domToModel/utils/areSameFormats';\nexport { isBlockElement } from './domToModel/utils/isBlockElement';\nexport { buildSelectionMarker } from './domToModel/utils/buildSelectionMarker';\n\nexport { updateMetadata, getMetadata, hasMetadata } from './modelApi/metadata/updateMetadata';\nexport { isNodeOfType } from './domUtils/isNodeOfType';\nexport { isElementOfType } from './domUtils/isElementOfType';\nexport { getObjectKeys } from './domUtils/getObjectKeys';\nexport { getSafeIdSelector } from './domUtils/getSafeIdSelector';\nexport { toArray } from './domUtils/toArray';\nexport { moveChildNodes, wrapAllChildNodes } from './domUtils/moveChildNodes';\nexport { wrap } from './domUtils/wrap';\nexport { unwrap } from './domUtils/unwrap';\nexport {\n isEntityElement,\n findClosestEntityWrapper,\n getAllEntityWrappers,\n parseEntityFormat,\n generateEntityClassNames,\n addDelimiters,\n isEntityDelimiter,\n isBlockEntityContainer,\n findClosestBlockEntityContainer,\n} from './domUtils/entityUtils';\nexport { reuseCachedElement } from './domUtils/reuseCachedElement';\nexport { isWhiteSpacePreserved } from './domUtils/isWhiteSpacePreserved';\nexport { normalizeRect } from './domUtils/normalizeRect';\n\nexport { setLinkUndeletable, isLinkUndeletable } from './domUtils/hiddenProperties/undeletableLink';\n\nexport { createBr } from './modelApi/creators/createBr';\nexport { createListItem } from './modelApi/creators/createListItem';\nexport { createFormatContainer } from './modelApi/creators/createFormatContainer';\nexport { createParagraph } from './modelApi/creators/createParagraph';\nexport { createSelectionMarker } from './modelApi/creators/createSelectionMarker';\nexport { createTable } from './modelApi/creators/createTable';\nexport { createTableCell } from './modelApi/creators/createTableCell';\nexport { createText } from './modelApi/creators/createText';\nexport { createImage } from './modelApi/creators/createImage';\nexport { createContentModelDocument } from './modelApi/creators/createContentModelDocument';\nexport { createParagraphDecorator } from './modelApi/creators/createParagraphDecorator';\nexport { createGeneralSegment } from './modelApi/creators/createGeneralSegment';\nexport { createGeneralBlock } from './modelApi/creators/createGeneralBlock';\nexport { createEntity } from './modelApi/creators/createEntity';\nexport { createDivider } from './modelApi/creators/createDivider';\nexport { createListLevel } from './modelApi/creators/createListLevel';\nexport { createEmptyModel } from './modelApi/creators/createEmptyModel';\nexport { createTableRow } from './modelApi/creators/createTableRow';\n\nexport { mutateBlock, mutateSegments, mutateSegment } from './modelApi/common/mutate';\nexport { addBlock } from './modelApi/common/addBlock';\nexport { addCode } from './modelApi/common/addDecorators';\nexport { addLink } from './modelApi/common/addDecorators';\nexport { addTextSegment } from './modelApi/common/addTextSegment';\nexport { normalizeParagraph } from './modelApi/common/normalizeParagraph';\n\nexport { normalizeContentModel } from './modelApi/common/normalizeContentModel';\nexport { isGeneralSegment } from './modelApi/typeCheck/isGeneralSegment';\nexport { unwrapBlock } from './modelApi/common/unwrapBlock';\nexport { addSegment } from './modelApi/common/addSegment';\nexport { isEmpty } from './modelApi/common/isEmpty';\nexport { normalizeSingleSegment } from './modelApi/common/normalizeSegment';\nexport { mergeTextSegments } from './modelApi/common/mergeTextSegments';\n\nexport { setParagraphNotImplicit } from './modelApi/block/setParagraphNotImplicit';\nexport { getOrderedListNumberStr } from './modelApi/list/getOrderedListNumberStr';\nexport { getAutoListStyleType } from './modelApi/list/getAutoListStyleType';\n\nexport { parseValueWithUnit } from './formatHandlers/utils/parseValueWithUnit';\nexport { BorderKeys } from './formatHandlers/common/borderFormatHandler';\nexport {\n DeprecatedColors,\n getColor,\n setColor,\n parseColor,\n defaultGenerateColorKey,\n} from './formatHandlers/utils/color';\n\nexport {\n createDomToModelContext,\n createDomToModelContextWithConfig,\n createDomToModelConfig,\n} from './domToModel/context/createDomToModelContext';\nexport {\n createModelToDomContext,\n createModelToDomContextWithConfig,\n createModelToDomConfig,\n} from './modelToDom/context/createModelToDomContext';\n\nexport { isBold } from './domUtils/style/isBold';\nexport { getSelectionRootNode } from './domUtils/selection/getSelectionRootNode';\nexport { getDOMInsertPointRect } from './domUtils/selection/getDOMInsertPointRect';\nexport { isCharacterValue, isModifierKey, isCursorMovingKey } from './domUtils/event/eventUtils';\nexport { combineBorderValue, extractBorderValues } from './domUtils/style/borderValues';\nexport { isPunctuation, isSpace, normalizeText } from './domUtils/stringUtil';\nexport { parseTableCells } from './domUtils/table/parseTableCells';\nexport { readFile } from './domUtils/readFile';\nexport { transformColor } from './domUtils/style/transformColor';\nexport { extractClipboardItems } from './domUtils/event/extractClipboardItems';\nexport { cacheGetEventData } from './domUtils/event/cacheGetEventData';\nexport {\n setParagraphMarker,\n getParagraphMarker,\n} from './domUtils/hiddenProperties/paragraphMarker';\n\nexport { isBlockGroupOfType } from './modelApi/typeCheck/isBlockGroupOfType';\n\nexport { iterateSelections } from './modelApi/selection/iterateSelections';\nexport {\n getFirstSelectedListItem,\n getFirstSelectedTable,\n getOperationalBlocks,\n getSelectedParagraphs,\n getSelectedSegments,\n getSelectedSegmentsAndParagraphs,\n} from './modelApi/selection/collectSelections';\nexport { getSelectedCells } from './modelApi/selection/getSelectedCells';\nexport { hasSelectionInBlock } from './modelApi/selection/hasSelectionInBlock';\nexport { hasSelectionInSegment } from './modelApi/selection/hasSelectionInSegment';\nexport { hasSelectionInBlockGroup } from './modelApi/selection/hasSelectionInBlockGroup';\nexport { setSelection } from './modelApi/selection/setSelection';\n\nexport { cloneModel } from './modelApi/editing/cloneModel';\nexport { mergeModel } from './modelApi/editing/mergeModel';\nexport { deleteSelection } from './modelApi/editing/deleteSelection';\nexport { deleteSegment } from './modelApi/editing/deleteSegment';\nexport { deleteBlock } from './modelApi/editing/deleteBlock';\nexport { applyTableFormat, setFirstColumnFormatBorders } from './modelApi/editing/applyTableFormat';\nexport {\n normalizeTable,\n MIN_ALLOWED_TABLE_CELL_WIDTH,\n MIN_ALLOWED_TABLE_CELL_HEIGHT,\n} from './modelApi/editing/normalizeTable';\nexport { setTableCellBackgroundColor } from './modelApi/editing/setTableCellBackgroundColor';\nexport { retrieveModelFormatState } from './modelApi/editing/retrieveModelFormatState';\nexport { getListStyleTypeFromString } from './modelApi/editing/getListStyleTypeFromString';\nexport { getSegmentTextFormat } from './modelApi/editing/getSegmentTextFormat';\nexport { getClosestAncestorBlockGroupIndex } from './modelApi/editing/getClosestAncestorBlockGroupIndex';\nexport { runEditSteps } from './modelApi/editing/runEditSteps';\n\nexport { updateImageMetadata, getImageMetadata } from './modelApi/metadata/updateImageMetadata';\nexport {\n updateTableCellMetadata,\n getTableCellMetadata,\n} from './modelApi/metadata/updateTableCellMetadata';\nexport { updateTableMetadata, getTableMetadata } from './modelApi/metadata/updateTableMetadata';\nexport {\n updateListMetadata,\n getListMetadata,\n ListMetadataDefinition,\n} from './modelApi/metadata/updateListMetadata';\n\nexport { ChangeSource } from './constants/ChangeSource';\nexport { BulletListType } from './constants/BulletListType';\nexport { NumberingListType } from './constants/NumberingListType';\nexport { TableBorderFormat } from './constants/TableBorderFormat';\nexport { OrderedListStyleMap } from './constants/OrderedListStyleMap';\nexport { UnorderedListStyleMap } from './constants/UnorderedListStyleMap';\nexport { EmptySegmentFormat } from './constants/EmptySegmentFormat';\n"]}
@@ -6,7 +6,7 @@ var tslib_1 = require("tslib");
6
6
  * @internal
7
7
  */
8
8
  function addLink(segment, link) {
9
- if (link.format.href) {
9
+ if (link.format.href || link.format.name) {
10
10
  segment.link = {
11
11
  format: (0, tslib_1.__assign)({}, link.format),
12
12
  dataset: (0, tslib_1.__assign)({}, link.dataset),
@@ -1 +1 @@
1
- {"version":3,"file":"addDecorators.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/modelApi/common/addDecorators.ts"],"names":[],"mappings":";;;;AAOA;;GAEG;AACH,SAAgB,OAAO,CACnB,OAA0C,EAC1C,IAA8B;IAE9B,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QAClB,OAAO,CAAC,IAAI,GAAG;YACX,MAAM,4BAAO,IAAI,CAAC,MAAM,CAAE;YAC1B,OAAO,4BAAO,IAAI,CAAC,OAAO,CAAE;SAC/B,CAAC;KACL;AACL,CAAC;AAVD,0BAUC;AAED;;;;GAIG;AACH,SAAgB,OAAO,CACnB,OAA0C,EAC1C,IAA8B;IAE9B,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;QACxB,OAAO,CAAC,IAAI,GAAG;YACX,MAAM,4BAAO,IAAI,CAAC,MAAM,CAAE;SAC7B,CAAC;KACL;AACL,CAAC;AATD,0BASC;AAED;;GAEG;AACH,SAAgB,aAAa,CACzB,OAA0C,EAC1C,OAAmC;IAEnC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAND,sCAMC","sourcesContent":["import type {\n DomToModelDecoratorContext,\n ReadonlyContentModelCode,\n ReadonlyContentModelLink,\n ShallowMutableContentModelSegment,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function addLink(\n segment: ShallowMutableContentModelSegment,\n link: ReadonlyContentModelLink\n) {\n if (link.format.href) {\n segment.link = {\n format: { ...link.format },\n dataset: { ...link.dataset },\n };\n }\n}\n\n/**\n * Add a code decorator into segment if any\n * @param segment The segment to add decorator to\n * @param code The code decorator to add\n */\nexport function addCode(\n segment: ShallowMutableContentModelSegment,\n code: ReadonlyContentModelCode\n) {\n if (code.format.fontFamily) {\n segment.code = {\n format: { ...code.format },\n };\n }\n}\n\n/**\n * @internal\n */\nexport function addDecorators(\n segment: ShallowMutableContentModelSegment,\n context: DomToModelDecoratorContext\n) {\n addLink(segment, context.link);\n addCode(segment, context.code);\n}\n"]}
1
+ {"version":3,"file":"addDecorators.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/modelApi/common/addDecorators.ts"],"names":[],"mappings":";;;;AAOA;;GAEG;AACH,SAAgB,OAAO,CACnB,OAA0C,EAC1C,IAA8B;IAE9B,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACtC,OAAO,CAAC,IAAI,GAAG;YACX,MAAM,4BAAO,IAAI,CAAC,MAAM,CAAE;YAC1B,OAAO,4BAAO,IAAI,CAAC,OAAO,CAAE;SAC/B,CAAC;KACL;AACL,CAAC;AAVD,0BAUC;AAED;;;;GAIG;AACH,SAAgB,OAAO,CACnB,OAA0C,EAC1C,IAA8B;IAE9B,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;QACxB,OAAO,CAAC,IAAI,GAAG;YACX,MAAM,4BAAO,IAAI,CAAC,MAAM,CAAE;SAC7B,CAAC;KACL;AACL,CAAC;AATD,0BASC;AAED;;GAEG;AACH,SAAgB,aAAa,CACzB,OAA0C,EAC1C,OAAmC;IAEnC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAND,sCAMC","sourcesContent":["import type {\n DomToModelDecoratorContext,\n ReadonlyContentModelCode,\n ReadonlyContentModelLink,\n ShallowMutableContentModelSegment,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function addLink(\n segment: ShallowMutableContentModelSegment,\n link: ReadonlyContentModelLink\n) {\n if (link.format.href || link.format.name) {\n segment.link = {\n format: { ...link.format },\n dataset: { ...link.dataset },\n };\n }\n}\n\n/**\n * Add a code decorator into segment if any\n * @param segment The segment to add decorator to\n * @param code The code decorator to add\n */\nexport function addCode(\n segment: ShallowMutableContentModelSegment,\n code: ReadonlyContentModelCode\n) {\n if (code.format.fontFamily) {\n segment.code = {\n format: { ...code.format },\n };\n }\n}\n\n/**\n * @internal\n */\nexport function addDecorators(\n segment: ShallowMutableContentModelSegment,\n context: DomToModelDecoratorContext\n) {\n addLink(segment, context.link);\n addCode(segment, context.code);\n}\n"]}
@@ -10,7 +10,7 @@ export declare function isBlockGroupEmpty(group: ReadonlyContentModelBlockGroup)
10
10
  /**
11
11
  * @internal
12
12
  */
13
- export declare function isSegmentEmpty(segment: ReadonlyContentModelSegment): boolean;
13
+ export declare function isSegmentEmpty(segment: ReadonlyContentModelSegment, treatAnchorAsNotEmpty?: boolean): boolean;
14
14
  /**
15
15
  * Get whether the model is empty.
16
16
  * @returns true if the model is empty.
@@ -41,10 +41,11 @@ exports.isBlockGroupEmpty = isBlockGroupEmpty;
41
41
  /**
42
42
  * @internal
43
43
  */
44
- function isSegmentEmpty(segment) {
44
+ function isSegmentEmpty(segment, treatAnchorAsNotEmpty) {
45
+ var _a;
45
46
  switch (segment.segmentType) {
46
47
  case 'Text':
47
- return !segment.text;
48
+ return !segment.text && (!treatAnchorAsNotEmpty || !((_a = segment.link) === null || _a === void 0 ? void 0 : _a.format.name));
48
49
  default:
49
50
  return false;
50
51
  }