@atlaskit/editor-common 71.0.3 → 72.0.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 (130) hide show
  1. package/CHANGELOG.md +71 -0
  2. package/dist/cjs/analytics/types/enums.js +20 -1
  3. package/dist/cjs/i18n/index.js +13 -5
  4. package/dist/cjs/i18n/languages.js +42 -0
  5. package/dist/cjs/keymaps/index.js +55 -3
  6. package/dist/cjs/styles/index.js +8 -2
  7. package/dist/cjs/styles/shared/annotation.js +4 -7
  8. package/dist/cjs/styles/shared/block-marks.js +1 -1
  9. package/dist/cjs/styles/shared/code-block.js +3 -4
  10. package/dist/cjs/styles/shared/lists.js +55 -4
  11. package/dist/cjs/styles/shared/panel.js +6 -12
  12. package/dist/cjs/styles/shared/shadow.js +3 -1
  13. package/dist/cjs/styles/shared/table.js +2 -2
  14. package/dist/cjs/types/next-editor-plugin.js +5 -0
  15. package/dist/cjs/ui/DropList/index.js +1 -1
  16. package/dist/cjs/ui/Emoji/index.js +11 -2
  17. package/dist/cjs/ui/Popup/index.js +72 -2
  18. package/dist/cjs/ui/Popup/utils.js +13 -6
  19. package/dist/cjs/ui/UnsupportedBlock/index.js +2 -2
  20. package/dist/cjs/ui/UnsupportedInline/index.js +2 -2
  21. package/dist/cjs/ui-color/ColorPalette/Palettes/paletteMessagesTokenModeNames.js +138 -0
  22. package/dist/cjs/ui-color/ColorPalette/index.js +19 -1
  23. package/dist/cjs/ui-menu/DropdownMenu/index.js +2 -0
  24. package/dist/cjs/ui-menu/ToolbarButton/index.js +3 -1
  25. package/dist/cjs/utils/analytics.js +1 -38
  26. package/dist/cjs/utils/builder.js +44 -0
  27. package/dist/cjs/utils/compareNodes.js +86 -33
  28. package/dist/cjs/utils/index.js +47 -1
  29. package/dist/cjs/utils/list.js +47 -0
  30. package/dist/cjs/utils/plugin-state-factory.js +9 -9
  31. package/dist/cjs/utils/referentiality.js +281 -2
  32. package/dist/cjs/utils/track-unsupported-content.js +19 -20
  33. package/dist/cjs/utils/validate-using-spec.js +8 -2
  34. package/dist/cjs/version.json +1 -1
  35. package/dist/es2019/analytics/types/enums.js +20 -1
  36. package/dist/es2019/i18n/index.js +4 -3
  37. package/dist/es2019/i18n/languages.js +34 -0
  38. package/dist/es2019/keymaps/index.js +47 -0
  39. package/dist/es2019/styles/index.js +1 -1
  40. package/dist/es2019/styles/shared/annotation.js +4 -7
  41. package/dist/es2019/styles/shared/block-marks.js +8 -1
  42. package/dist/es2019/styles/shared/code-block.js +7 -6
  43. package/dist/es2019/styles/shared/lists.js +44 -2
  44. package/dist/es2019/styles/shared/panel.js +6 -11
  45. package/dist/es2019/styles/shared/shadow.js +21 -6
  46. package/dist/es2019/styles/shared/table.js +2 -3
  47. package/dist/es2019/types/next-editor-plugin.js +1 -0
  48. package/dist/es2019/ui/DropList/index.js +1 -1
  49. package/dist/es2019/ui/Emoji/index.js +11 -2
  50. package/dist/es2019/ui/Popup/index.js +68 -2
  51. package/dist/es2019/ui/Popup/utils.js +13 -6
  52. package/dist/es2019/ui/UnsupportedBlock/index.js +1 -1
  53. package/dist/es2019/ui/UnsupportedInline/index.js +1 -1
  54. package/dist/es2019/ui-color/ColorPalette/Palettes/paletteMessagesTokenModeNames.js +120 -0
  55. package/dist/es2019/ui-color/ColorPalette/index.js +28 -12
  56. package/dist/es2019/ui-menu/DropdownMenu/index.js +2 -0
  57. package/dist/es2019/ui-menu/ToolbarButton/index.js +3 -1
  58. package/dist/es2019/utils/analytics.js +0 -33
  59. package/dist/es2019/utils/builder.js +16 -0
  60. package/dist/es2019/utils/compareNodes.js +79 -28
  61. package/dist/es2019/utils/index.js +4 -2
  62. package/dist/es2019/utils/list.js +31 -0
  63. package/dist/es2019/utils/plugin-state-factory.js +9 -9
  64. package/dist/es2019/utils/referentiality.js +240 -0
  65. package/dist/es2019/utils/track-unsupported-content.js +20 -16
  66. package/dist/es2019/utils/validate-using-spec.js +8 -2
  67. package/dist/es2019/version.json +1 -1
  68. package/dist/esm/analytics/types/enums.js +20 -1
  69. package/dist/esm/i18n/index.js +4 -3
  70. package/dist/esm/i18n/languages.js +34 -0
  71. package/dist/esm/keymaps/index.js +48 -0
  72. package/dist/esm/styles/index.js +1 -1
  73. package/dist/esm/styles/shared/annotation.js +4 -7
  74. package/dist/esm/styles/shared/block-marks.js +1 -1
  75. package/dist/esm/styles/shared/code-block.js +3 -4
  76. package/dist/esm/styles/shared/lists.js +49 -2
  77. package/dist/esm/styles/shared/panel.js +6 -11
  78. package/dist/esm/styles/shared/shadow.js +2 -2
  79. package/dist/esm/styles/shared/table.js +2 -3
  80. package/dist/esm/types/next-editor-plugin.js +1 -0
  81. package/dist/esm/ui/DropList/index.js +1 -1
  82. package/dist/esm/ui/Emoji/index.js +11 -2
  83. package/dist/esm/ui/Popup/index.js +73 -2
  84. package/dist/esm/ui/Popup/utils.js +13 -6
  85. package/dist/esm/ui/UnsupportedBlock/index.js +1 -1
  86. package/dist/esm/ui/UnsupportedInline/index.js +1 -1
  87. package/dist/esm/ui-color/ColorPalette/Palettes/paletteMessagesTokenModeNames.js +124 -0
  88. package/dist/esm/ui-color/ColorPalette/index.js +18 -2
  89. package/dist/esm/ui-menu/DropdownMenu/index.js +2 -0
  90. package/dist/esm/ui-menu/ToolbarButton/index.js +3 -1
  91. package/dist/esm/utils/analytics.js +0 -33
  92. package/dist/esm/utils/builder.js +30 -0
  93. package/dist/esm/utils/compareNodes.js +83 -32
  94. package/dist/esm/utils/index.js +4 -2
  95. package/dist/esm/utils/list.js +31 -0
  96. package/dist/esm/utils/plugin-state-factory.js +9 -9
  97. package/dist/esm/utils/referentiality.js +269 -0
  98. package/dist/esm/utils/track-unsupported-content.js +19 -20
  99. package/dist/esm/utils/validate-using-spec.js +8 -2
  100. package/dist/esm/version.json +1 -1
  101. package/dist/types/analytics/types/enums.d.ts +23 -4
  102. package/dist/types/collab/types.d.ts +1 -1
  103. package/dist/types/i18n/index.d.ts +4 -3
  104. package/dist/types/i18n/languages.d.ts +35 -0
  105. package/dist/types/keymaps/index.d.ts +1 -0
  106. package/dist/types/styles/index.d.ts +1 -1
  107. package/dist/types/styles/shared/lists.d.ts +3 -1
  108. package/dist/types/types/collab.d.ts +1 -1
  109. package/dist/types/types/copy-button.d.ts +4 -0
  110. package/dist/types/types/feature-flags.d.ts +30 -25
  111. package/dist/types/types/floating-toolbar.d.ts +26 -1
  112. package/dist/types/types/index.d.ts +2 -1
  113. package/dist/types/types/next-editor-plugin.d.ts +61 -0
  114. package/dist/types/ui/Emoji/index.d.ts +2 -0
  115. package/dist/types/ui/Popup/index.d.ts +19 -0
  116. package/dist/types/ui/Popup/utils.d.ts +3 -3
  117. package/dist/types/ui-color/ColorPalette/Palettes/paletteMessagesTokenModeNames.d.ts +214 -0
  118. package/dist/types/ui-color/ColorPalette/index.d.ts +7 -0
  119. package/dist/types/ui-menu/DropdownMenu/types.d.ts +1 -0
  120. package/dist/types/ui-menu/ToolbarButton/index.d.ts +3 -1
  121. package/dist/types/utils/analytics.d.ts +1 -21
  122. package/dist/types/utils/builder.d.ts +8 -0
  123. package/dist/types/utils/compareNodes.d.ts +16 -0
  124. package/dist/types/utils/index.d.ts +3 -1
  125. package/dist/types/utils/list.d.ts +10 -0
  126. package/dist/types/utils/plugin-state-factory.d.ts +1 -1
  127. package/dist/types/utils/referentiality.d.ts +4 -0
  128. package/dist/types/utils/track-unsupported-content.d.ts +14 -2
  129. package/package.json +14 -11
  130. package/report.api.md +1 -1
@@ -5,13 +5,15 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.createCompareNodes = void 0;
8
+ exports.createCompareNodes = exports.ContentType = void 0;
9
+ exports.extractMetaFromTextNode = extractMetaFromTextNode;
9
10
 
10
11
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
12
 
12
13
  var _types = require("../types");
13
14
 
14
15
  var ContentType;
16
+ exports.ContentType = ContentType;
15
17
 
16
18
  (function (ContentType) {
17
19
  ContentType[ContentType["NUMBER"] = 0] = "NUMBER";
@@ -20,7 +22,7 @@ var ContentType;
20
22
  ContentType[ContentType["DATE"] = 15] = "DATE";
21
23
  ContentType[ContentType["STATUS"] = 20] = "STATUS";
22
24
  ContentType[ContentType["LINK"] = 25] = "LINK";
23
- })(ContentType || (ContentType = {}));
25
+ })(ContentType || (exports.ContentType = ContentType = {}));
24
26
 
25
27
  function getLinkMark(node) {
26
28
  var _node$marks$filter = node.marks.filter(function (mark) {
@@ -30,6 +32,83 @@ function getLinkMark(node) {
30
32
  linkMark = _node$marks$filter2[0];
31
33
 
32
34
  return linkMark || null;
35
+ } // Source: https://stackoverflow.com/questions/12004808/does-javascript-take-local-decimal-separators-into-account
36
+
37
+
38
+ function parseLocaleNumber(stringNumber) {
39
+ if (stringNumber.trim() === '') {
40
+ return null;
41
+ }
42
+
43
+ var locale = window.navigator.language;
44
+ var thousandSeparator = Intl.NumberFormat(locale).format(11111).replace(/(?:[0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D58-\u0D5E\u0D66-\u0D78\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]|\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDD30-\uDD39\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDF30-\uDF3B]|\uD806[\uDCE0-\uDCF2\uDD50-\uDD59]|\uD807[\uDC50-\uDC6C\uDD50-\uDD59\uDDA0-\uDDA9\uDFC0-\uDFD4]|\uD809[\uDC00-\uDC6E]|\uD81A[\uDE60-\uDE69\uDEC0-\uDEC9\uDF50-\uDF59\uDF5B-\uDF61]|\uD81B[\uDE80-\uDE96]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD83A[\uDCC7-\uDCCF\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9])/g, '');
45
+ var decimalSeparator = Intl.NumberFormat(locale).format(1.1).replace(/(?:[0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D58-\u0D5E\u0D66-\u0D78\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]|\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDD30-\uDD39\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDF30-\uDF3B]|\uD806[\uDCE0-\uDCF2\uDD50-\uDD59]|\uD807[\uDC50-\uDC6C\uDD50-\uDD59\uDDA0-\uDDA9\uDFC0-\uDFD4]|\uD809[\uDC00-\uDC6E]|\uD81A[\uDE60-\uDE69\uDEC0-\uDEC9\uDF50-\uDF59\uDF5B-\uDF61]|\uD81B[\uDE80-\uDE96]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD83A[\uDCC7-\uDCCF\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9])/g, '');
46
+ var maybeANumber = Number(stringNumber.replace(new RegExp('\\' + thousandSeparator, 'g'), '').replace(new RegExp('\\' + decimalSeparator), '.'));
47
+ var isANumber = !Number.isNaN(maybeANumber);
48
+
49
+ if (!isANumber) {
50
+ return null;
51
+ }
52
+
53
+ return maybeANumber;
54
+ }
55
+
56
+ function extractFirstWordFromString(text) {
57
+ // Firefox is the only browser that doesn't support it
58
+ if (!Intl || !Intl.Segmenter) {
59
+ // If the Segment API is not available
60
+ // let's fallback to a dumb way to extract the first word.
61
+ // However, this method doesn't cover some languages like Japanase
62
+ var firstEmptySpace = text.indexOf(' ');
63
+ var firstWord = firstEmptySpace !== -1 ? text.substring(0, firstEmptySpace) : text;
64
+ return firstWord;
65
+ }
66
+
67
+ var languageSegment = new Intl.Segmenter(window.navigator.language, {
68
+ granularity: 'word'
69
+ });
70
+ var segmentsIterator = languageSegment.segment(text);
71
+
72
+ if (!segmentsIterator) {
73
+ return text;
74
+ }
75
+
76
+ var segmentsArray = Array.from(segmentsIterator);
77
+
78
+ if (segmentsArray.length === 0) {
79
+ return text;
80
+ }
81
+
82
+ return segmentsArray[0].segment;
83
+ }
84
+
85
+ function extractMetaFromTextNode(textNode) {
86
+ // treat as a link if contain a link
87
+ var linkMark = getLinkMark(textNode);
88
+
89
+ if (linkMark) {
90
+ var value = textNode.text || '';
91
+ return {
92
+ type: ContentType.LINK,
93
+ value: value
94
+ };
95
+ }
96
+
97
+ var text = textNode.text || '';
98
+ var firstWord = extractFirstWordFromString(text);
99
+ var maybeANumber = parseLocaleNumber(firstWord);
100
+
101
+ if (maybeANumber !== null) {
102
+ return {
103
+ type: ContentType.NUMBER,
104
+ value: maybeANumber
105
+ };
106
+ }
107
+
108
+ return {
109
+ type: ContentType.TEXT,
110
+ value: firstWord
111
+ };
33
112
  }
34
113
 
35
114
  function getMetaFromNode(node, options) {
@@ -78,41 +157,15 @@ function getMetaFromNode(node, options) {
78
157
 
79
158
  case 'text':
80
159
  {
81
- // treat as a link if contain a link
82
- var linkMark = getLinkMark(firstChild);
83
-
84
- if (linkMark) {
85
- var value = firstChild.text || '';
86
- return {
87
- type: ContentType.LINK,
88
- value: value
89
- };
90
- }
91
-
92
- var text = firstChild.text || '';
93
- var firstEmptySpace = text.indexOf(' ');
94
- var firstWord = firstEmptySpace !== -1 ? text.substring(0, firstEmptySpace) : text;
95
- var maybeANumber = Number.parseFloat(firstWord);
96
-
97
- if (!Number.isNaN(maybeANumber)) {
98
- return {
99
- type: ContentType.NUMBER,
100
- value: maybeANumber
101
- };
102
- }
103
-
104
- return {
105
- type: ContentType.TEXT,
106
- value: firstWord
107
- };
160
+ return extractMetaFromTextNode(firstChild);
108
161
  }
109
162
 
110
163
  case 'status':
111
164
  {
112
- var _text = firstChild.attrs.text;
165
+ var text = firstChild.attrs.text;
113
166
  return {
114
167
  type: ContentType.STATUS,
115
- value: _text
168
+ value: text
116
169
  };
117
170
  }
118
171
 
@@ -128,11 +181,11 @@ function getMetaFromNode(node, options) {
128
181
  case 'mention':
129
182
  {
130
183
  // TODO: Check what should be the fallback when mention does not have a text
131
- var _text2 = firstChild.attrs.text || '';
184
+ var _text = firstChild.attrs.text || '';
132
185
 
133
186
  return {
134
187
  type: ContentType.MENTION,
135
- value: _text2.toLowerCase()
188
+ value: _text.toLowerCase()
136
189
  };
137
190
  }
138
191
 
@@ -11,6 +11,12 @@ Object.defineProperty(exports, "ADFTraversor", {
11
11
  return _traversor.default;
12
12
  }
13
13
  });
14
+ Object.defineProperty(exports, "Builder", {
15
+ enumerable: true,
16
+ get: function get() {
17
+ return _builder.Builder;
18
+ }
19
+ });
14
20
  Object.defineProperty(exports, "ErrorReporter", {
15
21
  enumerable: true,
16
22
  get: function get() {
@@ -215,6 +221,12 @@ Object.defineProperty(exports, "getAnnotationIdsFromRange", {
215
221
  return _annotation.getAnnotationIdsFromRange;
216
222
  }
217
223
  });
224
+ Object.defineProperty(exports, "getChildrenInfo", {
225
+ enumerable: true,
226
+ get: function get() {
227
+ return _referentiality.getChildrenInfo;
228
+ }
229
+ });
218
230
  Object.defineProperty(exports, "getDistortedDurationMonitor", {
219
231
  enumerable: true,
220
232
  get: function get() {
@@ -239,12 +251,30 @@ Object.defineProperty(exports, "getFragmentBackingArray", {
239
251
  return _slice.getFragmentBackingArray;
240
252
  }
241
253
  });
254
+ Object.defineProperty(exports, "getItemCounterDigitsSize", {
255
+ enumerable: true,
256
+ get: function get() {
257
+ return _list.getItemCounterDigitsSize;
258
+ }
259
+ });
242
260
  Object.defineProperty(exports, "getModeFromTheme", {
243
261
  enumerable: true,
244
262
  get: function get() {
245
263
  return _getModeFromTheme.getModeFromTheme;
246
264
  }
247
265
  });
266
+ Object.defineProperty(exports, "getNodeName", {
267
+ enumerable: true,
268
+ get: function get() {
269
+ return _referentiality.getNodeName;
270
+ }
271
+ });
272
+ Object.defineProperty(exports, "getOrderFromOrderedListNode", {
273
+ enumerable: true,
274
+ get: function get() {
275
+ return _list.getOrderFromOrderedListNode;
276
+ }
277
+ });
248
278
  Object.defineProperty(exports, "getPerformanceOptions", {
249
279
  enumerable: true,
250
280
  get: function get() {
@@ -443,12 +473,24 @@ Object.defineProperty(exports, "pluginFactory", {
443
473
  return _pluginStateFactory.pluginFactory;
444
474
  }
445
475
  });
476
+ Object.defineProperty(exports, "removeConnectedNodes", {
477
+ enumerable: true,
478
+ get: function get() {
479
+ return _referentiality.removeConnectedNodes;
480
+ }
481
+ });
446
482
  Object.defineProperty(exports, "removeNestedEmptyEls", {
447
483
  enumerable: true,
448
484
  get: function get() {
449
485
  return _dom.removeNestedEmptyEls;
450
486
  }
451
487
  });
488
+ Object.defineProperty(exports, "resolveOrder", {
489
+ enumerable: true,
490
+ get: function get() {
491
+ return _list.resolveOrder;
492
+ }
493
+ });
452
494
  Object.defineProperty(exports, "sendLogs", {
453
495
  enumerable: true,
454
496
  get: function get() {
@@ -666,4 +708,8 @@ var _outdatedBrowsers = require("./outdated-browsers");
666
708
 
667
709
  var _referentiality = require("./referentiality");
668
710
 
669
- var _sendLogs = require("./sendLogs");
711
+ var _sendLogs = require("./sendLogs");
712
+
713
+ var _builder = require("./builder");
714
+
715
+ var _list = require("./list");
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.resolveOrder = exports.getOrderFromOrderedListNode = exports.getItemCounterDigitsSize = exports.DEFAULT_ORDER = void 0;
7
+ var DEFAULT_ORDER = 1; // resolve "order" to a safe, 0+ integer, otherwise return undefined
8
+ // Note: Any changes to this function should also be made to "resolveStart"
9
+ // in packages/editor/adf-schema/src/schema/nodes/ordered-list.ts
10
+
11
+ exports.DEFAULT_ORDER = DEFAULT_ORDER;
12
+
13
+ var resolveOrder = function resolveOrder(order) {
14
+ var num = Number(order);
15
+
16
+ if (Number.isNaN(num)) {
17
+ return;
18
+ }
19
+
20
+ if (num < 0) {
21
+ return;
22
+ }
23
+
24
+ return Math.floor(Math.max(num, 0));
25
+ };
26
+
27
+ exports.resolveOrder = resolveOrder;
28
+
29
+ var getOrderFromOrderedListNode = function getOrderFromOrderedListNode(orderedListNode) {
30
+ var _orderedListNode$attr, _resolveOrder;
31
+
32
+ var order = orderedListNode === null || orderedListNode === void 0 ? void 0 : (_orderedListNode$attr = orderedListNode.attrs) === null || _orderedListNode$attr === void 0 ? void 0 : _orderedListNode$attr.order;
33
+ return (_resolveOrder = resolveOrder(order)) !== null && _resolveOrder !== void 0 ? _resolveOrder : DEFAULT_ORDER;
34
+ };
35
+
36
+ exports.getOrderFromOrderedListNode = getOrderFromOrderedListNode;
37
+
38
+ var getItemCounterDigitsSize = function getItemCounterDigitsSize(options) {
39
+ var _resolveOrder2, _String, _String$split, _String$split$;
40
+
41
+ var order = (_resolveOrder2 = resolveOrder(options.order)) !== null && _resolveOrder2 !== void 0 ? _resolveOrder2 : DEFAULT_ORDER;
42
+ var itemsCount = typeof options.itemsCount === 'number' ? options.itemsCount : 0;
43
+ var largestCounter = order + (itemsCount - 1);
44
+ return (_String = String(largestCounter)) === null || _String === void 0 ? void 0 : (_String$split = _String.split('.')) === null || _String$split === void 0 ? void 0 : (_String$split$ = _String$split[0]) === null || _String$split$ === void 0 ? void 0 : _String$split$.length;
45
+ };
46
+
47
+ exports.getItemCounterDigitsSize = getItemCounterDigitsSize;
@@ -66,26 +66,26 @@ function pluginFactory(pluginKey, reducer) {
66
66
  init: function init(_, state) {
67
67
  return isFunction(initialState) ? initialState(state) : initialState;
68
68
  },
69
- apply: function apply(tr, _pluginState) {
70
- var oldState = mapping ? mapping(tr, _pluginState) : _pluginState;
71
- var newState = oldState;
69
+ apply: function apply(tr, _pluginState, _oldEditorState, newEditorState) {
70
+ var oldPluginState = mapping ? mapping(tr, _pluginState, newEditorState) : _pluginState;
71
+ var newPluginState = oldPluginState;
72
72
  var meta = tr.getMeta(pluginKey);
73
73
 
74
74
  if (meta) {
75
- newState = reducer(oldState, meta);
75
+ newPluginState = reducer(oldPluginState, meta);
76
76
  }
77
77
 
78
78
  if (onDocChanged && tr.docChanged) {
79
- newState = onDocChanged(tr, newState);
79
+ newPluginState = onDocChanged(tr, newPluginState, newEditorState);
80
80
  } else if (onSelectionChanged && tr.selectionSet) {
81
- newState = onSelectionChanged(tr, newState);
81
+ newPluginState = onSelectionChanged(tr, newPluginState, newEditorState);
82
82
  }
83
83
 
84
- if (newState !== oldState) {
85
- dispatch(pluginKey, newState);
84
+ if (newPluginState !== oldPluginState) {
85
+ dispatch(pluginKey, newPluginState);
86
86
  }
87
87
 
88
- return newState;
88
+ return newPluginState;
89
89
  }
90
90
  };
91
91
  },
@@ -1,9 +1,23 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
- exports.isReferencedSource = void 0;
8
+ exports.removeConnectedNodes = exports.isReferencedSource = exports.getNodeName = exports.getChildrenInfo = void 0;
9
+
10
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
+
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
16
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
17
+
18
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
19
+
20
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
7
21
 
8
22
  var isReferencedSource = function isReferencedSource(state, node) {
9
23
  var _node$attrs, _node$marks, _node$marks$find, _node$marks$find$attr;
@@ -46,4 +60,269 @@ var isReferencedSource = function isReferencedSource(state, node) {
46
60
  return found;
47
61
  };
48
62
 
49
- exports.isReferencedSource = isReferencedSource;
63
+ exports.isReferencedSource = isReferencedSource;
64
+
65
+ var getConnections = function getConnections(state) {
66
+ var result = {};
67
+ var doc = state.doc,
68
+ schema = state.schema; // Keeps a map of all raw ids -> to their preferred normalised varient. A node with both fragmentMark & localId will
69
+ // have both ids mapped here to the same normalized version.
70
+
71
+ var normalizedIds = new Map();
72
+ var dataConsumerSources = new Map(); // Perform a prelim scan creating the initial id to connection link mappings.
73
+ // This will also save a list of data sources consumed per node.
74
+
75
+ doc.descendants(function (node, pos) {
76
+ var _node$attrs2, _fragmentMark$attrs$l, _fragmentMark, _fragmentMark$attrs, _node$attrs3, _fragmentMark2, _fragmentMark2$attrs, _node$attrs4, _fragmentMark$attrs$n, _fragmentMark3, _fragmentMark3$attrs;
77
+
78
+ var dataConsumer;
79
+ var fragmentMark;
80
+ node.marks.some(function (mark) {
81
+ if (mark.type === schema.marks.dataConsumer) {
82
+ dataConsumer = mark;
83
+ } else if (mark.type === schema.marks.fragment) {
84
+ fragmentMark = mark;
85
+ } // Stop searching marks if we've found both consumer and fragment.
86
+
87
+
88
+ return !!dataConsumer && !!fragmentMark;
89
+ }); // If node cannot be referenced by any means then abort.
90
+
91
+ if (!fragmentMark && !((_node$attrs2 = node.attrs) !== null && _node$attrs2 !== void 0 && _node$attrs2.localId)) {
92
+ return true;
93
+ }
94
+
95
+ var normalizedId = (_fragmentMark$attrs$l = (_fragmentMark = fragmentMark) === null || _fragmentMark === void 0 ? void 0 : (_fragmentMark$attrs = _fragmentMark.attrs) === null || _fragmentMark$attrs === void 0 ? void 0 : _fragmentMark$attrs.localId) !== null && _fragmentMark$attrs$l !== void 0 ? _fragmentMark$attrs$l : (_node$attrs3 = node.attrs) === null || _node$attrs3 === void 0 ? void 0 : _node$attrs3.localId;
96
+
97
+ if (!normalizedId) {
98
+ return true;
99
+ }
100
+
101
+ if (!!((_fragmentMark2 = fragmentMark) !== null && _fragmentMark2 !== void 0 && (_fragmentMark2$attrs = _fragmentMark2.attrs) !== null && _fragmentMark2$attrs !== void 0 && _fragmentMark2$attrs.localId)) {
102
+ normalizedIds.set(fragmentMark.attrs.localId, normalizedId);
103
+ }
104
+
105
+ if (!!((_node$attrs4 = node.attrs) !== null && _node$attrs4 !== void 0 && _node$attrs4.localId)) {
106
+ normalizedIds.set(node.attrs.localId, normalizedId);
107
+ }
108
+
109
+ if (!!result[normalizedId]) {
110
+ // Duplicate ID has been found, we'll care about the first one for now.
111
+ return true;
112
+ }
113
+
114
+ result[normalizedId] = {
115
+ localId: normalizedId,
116
+ name: (_fragmentMark$attrs$n = (_fragmentMark3 = fragmentMark) === null || _fragmentMark3 === void 0 ? void 0 : (_fragmentMark3$attrs = _fragmentMark3.attrs) === null || _fragmentMark3$attrs === void 0 ? void 0 : _fragmentMark3$attrs.name) !== null && _fragmentMark$attrs$n !== void 0 ? _fragmentMark$attrs$n : normalizedId,
117
+ node: node,
118
+ pos: pos,
119
+ targets: []
120
+ };
121
+
122
+ if (!!dataConsumer && dataConsumer.attrs.sources.length) {
123
+ dataConsumerSources.set(normalizedId, dataConsumer.attrs.sources);
124
+ } // Do not descend into children of a node which has a dataConsumer attached. This assumes all children of the node cannot
125
+ // be referenced by another node.
126
+
127
+
128
+ return !dataConsumer;
129
+ }); // This 2nd-pass only looks at the consumer sources and updates all connections with the correct id refs.
130
+
131
+ var _iterator = _createForOfIteratorHelper(dataConsumerSources),
132
+ _step;
133
+
134
+ try {
135
+ var _loop = function _loop() {
136
+ var _step$value = (0, _slicedToArray2.default)(_step.value, 2),
137
+ localId = _step$value[0],
138
+ sources = _step$value[1];
139
+
140
+ // This is a ref to the node (connection link) which contains the consumer.
141
+ sources.forEach(function (src) {
142
+ var _normalizedIds$get;
143
+
144
+ var normalizedId = (_normalizedIds$get = normalizedIds.get(src)) !== null && _normalizedIds$get !== void 0 ? _normalizedIds$get : src;
145
+ var srcLink = result[normalizedId];
146
+
147
+ if (srcLink && normalizedId !== localId) {
148
+ srcLink.targets.push(localId);
149
+ }
150
+ });
151
+ };
152
+
153
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
154
+ _loop();
155
+ }
156
+ } catch (err) {
157
+ _iterator.e(err);
158
+ } finally {
159
+ _iterator.f();
160
+ }
161
+
162
+ return result;
163
+ };
164
+
165
+ var removeConnectedNodes = function removeConnectedNodes(state, node) {
166
+ if (!node) {
167
+ return state.tr;
168
+ }
169
+
170
+ var selectedLocalIds = getSelectedLocalIds(state, node);
171
+ var allNodes = getConnections(state);
172
+ var idsToBeDeleted = getIdsToBeDeleted(selectedLocalIds, allNodes);
173
+
174
+ if (!(idsToBeDeleted !== null && idsToBeDeleted !== void 0 && idsToBeDeleted.length)) {
175
+ return state.tr;
176
+ }
177
+
178
+ var tr = state.tr;
179
+ var newTr = tr;
180
+ idsToBeDeleted.forEach(function (id) {
181
+ if (!allNodes[id]) {
182
+ return;
183
+ }
184
+
185
+ var _allNodes$id = allNodes[id],
186
+ node = _allNodes$id.node,
187
+ pos = _allNodes$id.pos;
188
+ newTr = newTr.delete(newTr.mapping.map(pos), newTr.mapping.map(node.nodeSize + pos));
189
+ });
190
+ return newTr;
191
+ }; // find all ids need to be remove connected to selected extension
192
+
193
+
194
+ exports.removeConnectedNodes = removeConnectedNodes;
195
+
196
+ var getIdsToBeDeleted = function getIdsToBeDeleted(selectedIds, allNodes) {
197
+ if (!selectedIds.size) {
198
+ return [];
199
+ }
200
+
201
+ var searchSet = (0, _toConsumableArray2.default)(selectedIds);
202
+ var deletedIds = new Set();
203
+
204
+ while (searchSet.length) {
205
+ var id = searchSet.pop();
206
+
207
+ if (allNodes[id]) {
208
+ var _allNodes$id$targets$, _allNodes$id2;
209
+
210
+ deletedIds.add(allNodes[id].localId);
211
+ searchSet = searchSet.concat((_allNodes$id$targets$ = (_allNodes$id2 = allNodes[id]) === null || _allNodes$id2 === void 0 ? void 0 : _allNodes$id2.targets.filter(function (targetId) {
212
+ var _allNodes$targetId;
213
+
214
+ return !deletedIds.has((_allNodes$targetId = allNodes[targetId]) === null || _allNodes$targetId === void 0 ? void 0 : _allNodes$targetId.localId);
215
+ })) !== null && _allNodes$id$targets$ !== void 0 ? _allNodes$id$targets$ : []);
216
+ }
217
+ }
218
+
219
+ return Array.from(deletedIds);
220
+ }; // for get children info for confirmation dialog
221
+
222
+
223
+ var getChildrenInfo = function getChildrenInfo(state, node) {
224
+ if (!node) {
225
+ return [];
226
+ }
227
+
228
+ var childrenIdSet = new Set();
229
+ var childrenInfoArray = [];
230
+ var allNodes = getConnections(state);
231
+ var selectedNodeIds = getSelectedLocalIds(state, node);
232
+ selectedNodeIds.forEach(function (id) {
233
+ if (allNodes[id]) {
234
+ allNodes[id].targets.forEach(childrenIdSet.add, childrenIdSet);
235
+ }
236
+ });
237
+ childrenIdSet.forEach(function (id) {
238
+ childrenInfoArray.push({
239
+ id: id,
240
+ name: getNodeNameById(id, allNodes),
241
+ amount: getChildrenNodeAmount(id, allNodes)
242
+ });
243
+ });
244
+ return childrenInfoArray;
245
+ };
246
+
247
+ exports.getChildrenInfo = getChildrenInfo;
248
+
249
+ var getChildrenNodeAmount = function getChildrenNodeAmount(id, allNodes) {
250
+ var searchTerms = new Set([id]);
251
+ var traverseHistory = new Map();
252
+ var childrenIds = new Set();
253
+ traverseHistory.set(id, false);
254
+
255
+ while (searchTerms.size > 0) {
256
+ var _searchTerms = (0, _slicedToArray2.default)(searchTerms, 1),
257
+ currTerm = _searchTerms[0];
258
+
259
+ var targets = getNodeTargetsById(currTerm, allNodes);
260
+ targets.forEach(function (target) {
261
+ var isTargetCounted = traverseHistory.get(target);
262
+
263
+ if (!isTargetCounted) {
264
+ searchTerms.add(target);
265
+ childrenIds.add(target);
266
+ }
267
+
268
+ target !== id && childrenIds.add(target);
269
+ });
270
+ traverseHistory.set(currTerm, true);
271
+ searchTerms.delete(currTerm);
272
+ }
273
+
274
+ return childrenIds.size;
275
+ };
276
+
277
+ var getNodeTargetsById = function getNodeTargetsById(id, allNodes) {
278
+ if (!id || !allNodes[id]) {
279
+ return [];
280
+ }
281
+
282
+ return allNodes[id].targets;
283
+ };
284
+
285
+ var DEFAULT_EXTENSION_NAME = 'Default extension';
286
+
287
+ var getNodeNameById = function getNodeNameById(id, allNodes) {
288
+ if ((0, _typeof2.default)(id) === 'object') {
289
+ var _name2;
290
+
291
+ var name;
292
+ id.forEach(function (localId) {
293
+ var _name, _allNodes$localId;
294
+
295
+ name = (_name = name) !== null && _name !== void 0 ? _name : (_allNodes$localId = allNodes[localId]) === null || _allNodes$localId === void 0 ? void 0 : _allNodes$localId.name;
296
+ });
297
+ return (_name2 = name) !== null && _name2 !== void 0 ? _name2 : DEFAULT_EXTENSION_NAME;
298
+ }
299
+
300
+ if (!id || !allNodes[id]) {
301
+ return DEFAULT_EXTENSION_NAME;
302
+ }
303
+
304
+ return allNodes[id].name;
305
+ };
306
+
307
+ var getSelectedLocalIds = function getSelectedLocalIds(state, node) {
308
+ var _node$attrs5, _node$marks2, _node$marks2$find, _node$marks2$find$att;
309
+
310
+ if (!node) {
311
+ return new Set([]);
312
+ }
313
+
314
+ var localIds = new Set([(_node$attrs5 = node.attrs) === null || _node$attrs5 === void 0 ? void 0 : _node$attrs5.localId, (_node$marks2 = node.marks) === null || _node$marks2 === void 0 ? void 0 : (_node$marks2$find = _node$marks2.find(function (mark) {
315
+ return mark.type === state.schema.marks.fragment;
316
+ })) === null || _node$marks2$find === void 0 ? void 0 : (_node$marks2$find$att = _node$marks2$find.attrs) === null || _node$marks2$find$att === void 0 ? void 0 : _node$marks2$find$att.localId].filter(Boolean));
317
+ return localIds;
318
+ };
319
+
320
+ var getNodeName = function getNodeName(state, node) {
321
+ var _node$marks$find$attr2, _node$marks3, _node$marks3$find, _node$marks3$find$att;
322
+
323
+ return (_node$marks$find$attr2 = node === null || node === void 0 ? void 0 : (_node$marks3 = node.marks) === null || _node$marks3 === void 0 ? void 0 : (_node$marks3$find = _node$marks3.find(function (mark) {
324
+ return mark.type === state.schema.marks.fragment;
325
+ })) === null || _node$marks3$find === void 0 ? void 0 : (_node$marks3$find$att = _node$marks3$find.attrs) === null || _node$marks3$find$att === void 0 ? void 0 : _node$marks3$find$att.name) !== null && _node$marks$find$attr2 !== void 0 ? _node$marks$find$attr2 : '';
326
+ };
327
+
328
+ exports.getNodeName = getNodeName;