roosterjs-content-model-dom 9.23.0 → 9.24.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.
@@ -24,10 +24,14 @@ var linkProcessor = function (group, element, context) {
24
24
  (0, parseFormat_1.parseFormat)(element, context.formatParsers.dataset, context.link.dataset, context);
25
25
  if (isAnchor_1 && !element.firstChild) {
26
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, {
27
+ var emptyText = (0, createText_1.createText)('', context.segmentFormat, {
28
28
  dataset: context.link.dataset,
29
29
  format: context.link.format,
30
- }));
30
+ });
31
+ if (context.isInSelection) {
32
+ emptyText.isSelected = true;
33
+ }
34
+ (0, addSegment_1.addSegment)(group, emptyText);
31
35
  }
32
36
  else {
33
37
  (0, knownElementProcessor_1.knownElementProcessor)(group, element, context);
@@ -1 +1 @@
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"]}
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,IAAM,SAAS,GAAG,IAAA,uBAAU,EAAC,EAAE,EAAE,OAAO,CAAC,aAAa,EAAE;oBACpD,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;oBAC7B,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;iBAC9B,CAAC,CAAC;gBAEH,IAAI,OAAO,CAAC,aAAa,EAAE;oBACvB,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC;iBAC/B;gBAED,IAAA,uBAAU,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;aAChC;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;AApCW,QAAA,aAAa,iBAoCxB","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 const emptyText = createText('', context.segmentFormat, {\n dataset: context.link.dataset,\n format: context.link.format,\n });\n\n if (context.isInSelection) {\n emptyText.isSelected = true;\n }\n\n addSegment(group, emptyText);\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"]}
@@ -20,10 +20,14 @@ define(["require", "exports", "../../modelApi/common/addSegment", "../../modelAp
20
20
  (0, parseFormat_1.parseFormat)(element, context.formatParsers.dataset, context.link.dataset, context);
21
21
  if (isAnchor_1 && !element.firstChild) {
22
22
  // Empty anchor, need to make sure it has some child in model
23
- (0, addSegment_1.addSegment)(group, (0, createText_1.createText)('', context.segmentFormat, {
23
+ var emptyText = (0, createText_1.createText)('', context.segmentFormat, {
24
24
  dataset: context.link.dataset,
25
25
  format: context.link.format,
26
- }));
26
+ });
27
+ if (context.isInSelection) {
28
+ emptyText.isSelected = true;
29
+ }
30
+ (0, addSegment_1.addSegment)(group, emptyText);
27
31
  }
28
32
  else {
29
33
  (0, knownElementProcessor_1.knownElementProcessor)(group, element, context);
@@ -1 +1 @@
1
- {"version":3,"file":"linkProcessor.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/domToModel/processors/linkProcessor.ts"],"names":[],"mappings":";;;;IAQA;;OAEG;IACI,IAAM,aAAa,GAAkC,UAAC,KAAK,EAAE,OAAO,EAAE,OAAO;QAChF,IAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAE1C,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,IAAM,UAAQ,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;YACjC,IAAM,MAAM,GAAuB;gBAC/B,6DAA6D;gBAC7D,kDAAkD;gBAClD,IAAI,EAAE,UAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa;aAC3C,CAAC;YAEF,IAAA,yBAAW,EAAC,OAAO,EAAE,MAAM,EAAE;gBACzB,IAAA,yBAAW,EAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC/E,IAAA,yBAAW,EAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAEnF,IAAI,UAAQ,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;oBACjC,6DAA6D;oBAC7D,IAAA,uBAAU,EACN,KAAK,EACL,IAAA,uBAAU,EAAC,EAAE,EAAE,OAAO,CAAC,aAAa,EAAE;wBAClC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;wBAC7B,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;qBAC9B,CAAC,CACL,CAAC;iBACL;qBAAM;oBACH,IAAA,6CAAqB,EAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;iBAClD;YACL,CAAC,CAAC,CAAC;SACN;aAAM;YACH,gEAAgE;YAChE,IAAA,6CAAqB,EAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAClD;IACL,CAAC,CAAC;IAjCW,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"]}
1
+ {"version":3,"file":"linkProcessor.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/domToModel/processors/linkProcessor.ts"],"names":[],"mappings":";;;;IAQA;;OAEG;IACI,IAAM,aAAa,GAAkC,UAAC,KAAK,EAAE,OAAO,EAAE,OAAO;QAChF,IAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAE1C,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,IAAM,UAAQ,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;YACjC,IAAM,MAAM,GAAuB;gBAC/B,6DAA6D;gBAC7D,kDAAkD;gBAClD,IAAI,EAAE,UAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa;aAC3C,CAAC;YAEF,IAAA,yBAAW,EAAC,OAAO,EAAE,MAAM,EAAE;gBACzB,IAAA,yBAAW,EAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC/E,IAAA,yBAAW,EAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAEnF,IAAI,UAAQ,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;oBACjC,6DAA6D;oBAC7D,IAAM,SAAS,GAAG,IAAA,uBAAU,EAAC,EAAE,EAAE,OAAO,CAAC,aAAa,EAAE;wBACpD,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;wBAC7B,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;qBAC9B,CAAC,CAAC;oBAEH,IAAI,OAAO,CAAC,aAAa,EAAE;wBACvB,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC;qBAC/B;oBAED,IAAA,uBAAU,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;iBAChC;qBAAM;oBACH,IAAA,6CAAqB,EAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;iBAClD;YACL,CAAC,CAAC,CAAC;SACN;aAAM;YACH,gEAAgE;YAChE,IAAA,6CAAqB,EAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAClD;IACL,CAAC,CAAC;IApCW,QAAA,aAAa,iBAoCxB","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 const emptyText = createText('', context.segmentFormat, {\n dataset: context.link.dataset,\n format: context.link.format,\n });\n\n if (context.isInSelection) {\n emptyText.isSelected = true;\n }\n\n addSegment(group, emptyText);\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"]}
@@ -21,10 +21,14 @@ export var linkProcessor = function (group, element, context) {
21
21
  parseFormat(element, context.formatParsers.dataset, context.link.dataset, context);
22
22
  if (isAnchor_1 && !element.firstChild) {
23
23
  // Empty anchor, need to make sure it has some child in model
24
- addSegment(group, createText('', context.segmentFormat, {
24
+ var emptyText = createText('', context.segmentFormat, {
25
25
  dataset: context.link.dataset,
26
26
  format: context.link.format,
27
- }));
27
+ });
28
+ if (context.isInSelection) {
29
+ emptyText.isSelected = true;
30
+ }
31
+ addSegment(group, emptyText);
28
32
  }
29
33
  else {
30
34
  knownElementProcessor(group, element, context);
@@ -1 +1 @@
1
- {"version":3,"file":"linkProcessor.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/domToModel/processors/linkProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAInD;;GAEG;AACH,MAAM,CAAC,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,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE;YACzB,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC/E,WAAW,CAAC,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,UAAU,CACN,KAAK,EACL,UAAU,CAAC,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,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;aAClD;QACL,CAAC,CAAC,CAAC;KACN;SAAM;QACH,gEAAgE;QAChE,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;KAClD;AACL,CAAC,CAAC","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"]}
1
+ {"version":3,"file":"linkProcessor.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-dom/lib/domToModel/processors/linkProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAInD;;GAEG;AACH,MAAM,CAAC,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,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE;YACzB,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC/E,WAAW,CAAC,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,IAAM,SAAS,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,aAAa,EAAE;oBACpD,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;oBAC7B,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;iBAC9B,CAAC,CAAC;gBAEH,IAAI,OAAO,CAAC,aAAa,EAAE;oBACvB,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC;iBAC/B;gBAED,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;aAChC;iBAAM;gBACH,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;aAClD;QACL,CAAC,CAAC,CAAC;KACN;SAAM;QACH,gEAAgE;QAChE,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;KAClD;AACL,CAAC,CAAC","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 const emptyText = createText('', context.segmentFormat, {\n dataset: context.link.dataset,\n format: context.link.format,\n });\n\n if (context.isInSelection) {\n emptyText.isSelected = true;\n }\n\n addSegment(group, emptyText);\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"]}
package/package.json CHANGED
@@ -3,9 +3,9 @@
3
3
  "description": "Content Model for roosterjs",
4
4
  "dependencies": {
5
5
  "tslib": "^2.3.1",
6
- "roosterjs-content-model-types": "^9.23.0"
6
+ "roosterjs-content-model-types": "^9.24.0"
7
7
  },
8
- "version": "9.23.0",
8
+ "version": "9.24.0",
9
9
  "main": "./lib/index.js",
10
10
  "typings": "./lib/index.d.ts",
11
11
  "module": "./lib-mjs/index.js",