@atlaskit/editor-common 71.0.3 → 72.0.1
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.
- package/CHANGELOG.md +78 -0
- package/dist/cjs/analytics/types/enums.js +20 -1
- package/dist/cjs/i18n/index.js +13 -5
- package/dist/cjs/i18n/languages.js +42 -0
- package/dist/cjs/keymaps/index.js +56 -6
- package/dist/cjs/styles/index.js +8 -2
- package/dist/cjs/styles/shared/annotation.js +9 -14
- package/dist/cjs/styles/shared/block-marks.js +1 -1
- package/dist/cjs/styles/shared/blockquote.js +1 -3
- package/dist/cjs/styles/shared/code-block.js +13 -16
- package/dist/cjs/styles/shared/code-mark.js +2 -4
- package/dist/cjs/styles/shared/lists.js +55 -4
- package/dist/cjs/styles/shared/panel.js +29 -39
- package/dist/cjs/styles/shared/rule.js +2 -4
- package/dist/cjs/styles/shared/shadow.js +1 -1
- package/dist/cjs/styles/shared/table.js +24 -26
- package/dist/cjs/types/next-editor-plugin.js +5 -0
- package/dist/cjs/ui/Caption/index.js +2 -4
- package/dist/cjs/ui/DropList/index.js +5 -7
- package/dist/cjs/ui/Emoji/index.js +11 -2
- package/dist/cjs/ui/Expand/index.js +17 -19
- package/dist/cjs/ui/Messages/index.js +3 -5
- package/dist/cjs/ui/Popup/index.js +72 -2
- package/dist/cjs/ui/Popup/utils.js +13 -6
- package/dist/cjs/ui/UnsupportedBlock/index.js +3 -5
- package/dist/cjs/ui/UnsupportedInline/index.js +3 -5
- package/dist/cjs/ui-color/ColorPalette/Palettes/paletteMessagesTokenModeNames.js +138 -0
- package/dist/cjs/ui-color/ColorPalette/index.js +20 -2
- package/dist/cjs/ui-menu/DropdownMenu/index.js +12 -12
- package/dist/cjs/ui-menu/ToolbarButton/index.js +3 -1
- package/dist/cjs/utils/analytics.js +1 -38
- package/dist/cjs/utils/builder.js +44 -0
- package/dist/cjs/utils/compareNodes.js +86 -33
- package/dist/cjs/utils/index.js +47 -1
- package/dist/cjs/utils/list.js +47 -0
- package/dist/cjs/utils/plugin-state-factory.js +9 -9
- package/dist/cjs/utils/referentiality.js +281 -2
- package/dist/cjs/utils/track-unsupported-content.js +19 -20
- package/dist/cjs/utils/validate-using-spec.js +8 -2
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/analytics/types/enums.js +20 -1
- package/dist/es2019/i18n/index.js +4 -3
- package/dist/es2019/i18n/languages.js +34 -0
- package/dist/es2019/keymaps/index.js +48 -2
- package/dist/es2019/styles/index.js +1 -1
- package/dist/es2019/styles/shared/annotation.js +9 -13
- package/dist/es2019/styles/shared/block-marks.js +8 -1
- package/dist/es2019/styles/shared/blockquote.js +1 -2
- package/dist/es2019/styles/shared/code-block.js +18 -18
- package/dist/es2019/styles/shared/code-mark.js +2 -3
- package/dist/es2019/styles/shared/lists.js +44 -2
- package/dist/es2019/styles/shared/panel.js +29 -37
- package/dist/es2019/styles/shared/rule.js +2 -3
- package/dist/es2019/styles/shared/shadow.js +20 -6
- package/dist/es2019/styles/shared/table.js +24 -26
- package/dist/es2019/types/next-editor-plugin.js +1 -0
- package/dist/es2019/ui/Caption/index.js +2 -3
- package/dist/es2019/ui/DropList/index.js +5 -6
- package/dist/es2019/ui/Emoji/index.js +11 -2
- package/dist/es2019/ui/Expand/index.js +17 -18
- package/dist/es2019/ui/Messages/index.js +3 -4
- package/dist/es2019/ui/Popup/index.js +68 -2
- package/dist/es2019/ui/Popup/utils.js +13 -6
- package/dist/es2019/ui/UnsupportedBlock/index.js +3 -4
- package/dist/es2019/ui/UnsupportedInline/index.js +3 -4
- package/dist/es2019/ui-color/ColorPalette/Palettes/paletteMessagesTokenModeNames.js +120 -0
- package/dist/es2019/ui-color/ColorPalette/index.js +29 -13
- package/dist/es2019/ui-menu/DropdownMenu/index.js +13 -12
- package/dist/es2019/ui-menu/ToolbarButton/index.js +3 -1
- package/dist/es2019/utils/analytics.js +0 -33
- package/dist/es2019/utils/builder.js +16 -0
- package/dist/es2019/utils/compareNodes.js +79 -28
- package/dist/es2019/utils/index.js +4 -2
- package/dist/es2019/utils/list.js +31 -0
- package/dist/es2019/utils/plugin-state-factory.js +9 -9
- package/dist/es2019/utils/referentiality.js +240 -0
- package/dist/es2019/utils/track-unsupported-content.js +20 -16
- package/dist/es2019/utils/validate-using-spec.js +8 -2
- package/dist/es2019/version.json +1 -1
- package/dist/esm/analytics/types/enums.js +20 -1
- package/dist/esm/i18n/index.js +4 -3
- package/dist/esm/i18n/languages.js +34 -0
- package/dist/esm/keymaps/index.js +49 -2
- package/dist/esm/styles/index.js +1 -1
- package/dist/esm/styles/shared/annotation.js +9 -13
- package/dist/esm/styles/shared/block-marks.js +1 -1
- package/dist/esm/styles/shared/blockquote.js +1 -2
- package/dist/esm/styles/shared/code-block.js +13 -15
- package/dist/esm/styles/shared/code-mark.js +2 -3
- package/dist/esm/styles/shared/lists.js +49 -2
- package/dist/esm/styles/shared/panel.js +29 -37
- package/dist/esm/styles/shared/rule.js +2 -3
- package/dist/esm/styles/shared/shadow.js +1 -2
- package/dist/esm/styles/shared/table.js +24 -26
- package/dist/esm/types/next-editor-plugin.js +1 -0
- package/dist/esm/ui/Caption/index.js +2 -3
- package/dist/esm/ui/DropList/index.js +5 -6
- package/dist/esm/ui/Emoji/index.js +11 -2
- package/dist/esm/ui/Expand/index.js +17 -18
- package/dist/esm/ui/Messages/index.js +3 -4
- package/dist/esm/ui/Popup/index.js +73 -2
- package/dist/esm/ui/Popup/utils.js +13 -6
- package/dist/esm/ui/UnsupportedBlock/index.js +2 -3
- package/dist/esm/ui/UnsupportedInline/index.js +2 -3
- package/dist/esm/ui-color/ColorPalette/Palettes/paletteMessagesTokenModeNames.js +124 -0
- package/dist/esm/ui-color/ColorPalette/index.js +19 -3
- package/dist/esm/ui-menu/DropdownMenu/index.js +12 -11
- package/dist/esm/ui-menu/ToolbarButton/index.js +3 -1
- package/dist/esm/utils/analytics.js +0 -33
- package/dist/esm/utils/builder.js +30 -0
- package/dist/esm/utils/compareNodes.js +83 -32
- package/dist/esm/utils/index.js +4 -2
- package/dist/esm/utils/list.js +31 -0
- package/dist/esm/utils/plugin-state-factory.js +9 -9
- package/dist/esm/utils/referentiality.js +269 -0
- package/dist/esm/utils/track-unsupported-content.js +19 -20
- package/dist/esm/utils/validate-using-spec.js +8 -2
- package/dist/esm/version.json +1 -1
- package/dist/types/analytics/types/enums.d.ts +23 -4
- package/dist/types/collab/types.d.ts +1 -1
- package/dist/types/i18n/index.d.ts +4 -3
- package/dist/types/i18n/languages.d.ts +35 -0
- package/dist/types/keymaps/index.d.ts +1 -0
- package/dist/types/styles/index.d.ts +1 -1
- package/dist/types/styles/shared/lists.d.ts +3 -1
- package/dist/types/types/collab.d.ts +1 -1
- package/dist/types/types/copy-button.d.ts +4 -0
- package/dist/types/types/feature-flags.d.ts +30 -25
- package/dist/types/types/floating-toolbar.d.ts +26 -1
- package/dist/types/types/index.d.ts +2 -1
- package/dist/types/types/next-editor-plugin.d.ts +61 -0
- package/dist/types/ui/Emoji/index.d.ts +2 -0
- package/dist/types/ui/Popup/index.d.ts +19 -0
- package/dist/types/ui/Popup/utils.d.ts +3 -3
- package/dist/types/ui-color/ColorPalette/Palettes/paletteMessagesTokenModeNames.d.ts +214 -0
- package/dist/types/ui-color/ColorPalette/index.d.ts +7 -0
- package/dist/types/ui-menu/DropdownMenu/types.d.ts +1 -0
- package/dist/types/ui-menu/ToolbarButton/index.d.ts +3 -1
- package/dist/types/utils/analytics.d.ts +1 -21
- package/dist/types/utils/builder.d.ts +8 -0
- package/dist/types/utils/compareNodes.d.ts +16 -0
- package/dist/types/utils/index.d.ts +3 -1
- package/dist/types/utils/list.d.ts +10 -0
- package/dist/types/utils/plugin-state-factory.d.ts +1 -1
- package/dist/types/utils/referentiality.d.ts +4 -0
- package/dist/types/utils/track-unsupported-content.d.ts +14 -2
- package/package.json +15 -12
- package/report.api.md +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
2
|
import { SortOrder } from '../types';
|
|
3
|
-
var ContentType;
|
|
3
|
+
export var ContentType;
|
|
4
4
|
|
|
5
5
|
(function (ContentType) {
|
|
6
6
|
ContentType[ContentType["NUMBER"] = 0] = "NUMBER";
|
|
@@ -19,6 +19,83 @@ function getLinkMark(node) {
|
|
|
19
19
|
linkMark = _node$marks$filter2[0];
|
|
20
20
|
|
|
21
21
|
return linkMark || null;
|
|
22
|
+
} // Source: https://stackoverflow.com/questions/12004808/does-javascript-take-local-decimal-separators-into-account
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
function parseLocaleNumber(stringNumber) {
|
|
26
|
+
if (stringNumber.trim() === '') {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
var locale = window.navigator.language;
|
|
31
|
+
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, '');
|
|
32
|
+
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, '');
|
|
33
|
+
var maybeANumber = Number(stringNumber.replace(new RegExp('\\' + thousandSeparator, 'g'), '').replace(new RegExp('\\' + decimalSeparator), '.'));
|
|
34
|
+
var isANumber = !Number.isNaN(maybeANumber);
|
|
35
|
+
|
|
36
|
+
if (!isANumber) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return maybeANumber;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function extractFirstWordFromString(text) {
|
|
44
|
+
// Firefox is the only browser that doesn't support it
|
|
45
|
+
if (!Intl || !Intl.Segmenter) {
|
|
46
|
+
// If the Segment API is not available
|
|
47
|
+
// let's fallback to a dumb way to extract the first word.
|
|
48
|
+
// However, this method doesn't cover some languages like Japanase
|
|
49
|
+
var firstEmptySpace = text.indexOf(' ');
|
|
50
|
+
var firstWord = firstEmptySpace !== -1 ? text.substring(0, firstEmptySpace) : text;
|
|
51
|
+
return firstWord;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
var languageSegment = new Intl.Segmenter(window.navigator.language, {
|
|
55
|
+
granularity: 'word'
|
|
56
|
+
});
|
|
57
|
+
var segmentsIterator = languageSegment.segment(text);
|
|
58
|
+
|
|
59
|
+
if (!segmentsIterator) {
|
|
60
|
+
return text;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
var segmentsArray = Array.from(segmentsIterator);
|
|
64
|
+
|
|
65
|
+
if (segmentsArray.length === 0) {
|
|
66
|
+
return text;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return segmentsArray[0].segment;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export function extractMetaFromTextNode(textNode) {
|
|
73
|
+
// treat as a link if contain a link
|
|
74
|
+
var linkMark = getLinkMark(textNode);
|
|
75
|
+
|
|
76
|
+
if (linkMark) {
|
|
77
|
+
var value = textNode.text || '';
|
|
78
|
+
return {
|
|
79
|
+
type: ContentType.LINK,
|
|
80
|
+
value: value
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
var text = textNode.text || '';
|
|
85
|
+
var firstWord = extractFirstWordFromString(text);
|
|
86
|
+
var maybeANumber = parseLocaleNumber(firstWord);
|
|
87
|
+
|
|
88
|
+
if (maybeANumber !== null) {
|
|
89
|
+
return {
|
|
90
|
+
type: ContentType.NUMBER,
|
|
91
|
+
value: maybeANumber
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return {
|
|
96
|
+
type: ContentType.TEXT,
|
|
97
|
+
value: firstWord
|
|
98
|
+
};
|
|
22
99
|
}
|
|
23
100
|
|
|
24
101
|
function getMetaFromNode(node, options) {
|
|
@@ -67,41 +144,15 @@ function getMetaFromNode(node, options) {
|
|
|
67
144
|
|
|
68
145
|
case 'text':
|
|
69
146
|
{
|
|
70
|
-
|
|
71
|
-
var linkMark = getLinkMark(firstChild);
|
|
72
|
-
|
|
73
|
-
if (linkMark) {
|
|
74
|
-
var value = firstChild.text || '';
|
|
75
|
-
return {
|
|
76
|
-
type: ContentType.LINK,
|
|
77
|
-
value: value
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
var text = firstChild.text || '';
|
|
82
|
-
var firstEmptySpace = text.indexOf(' ');
|
|
83
|
-
var firstWord = firstEmptySpace !== -1 ? text.substring(0, firstEmptySpace) : text;
|
|
84
|
-
var maybeANumber = Number.parseFloat(firstWord);
|
|
85
|
-
|
|
86
|
-
if (!Number.isNaN(maybeANumber)) {
|
|
87
|
-
return {
|
|
88
|
-
type: ContentType.NUMBER,
|
|
89
|
-
value: maybeANumber
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
return {
|
|
94
|
-
type: ContentType.TEXT,
|
|
95
|
-
value: firstWord
|
|
96
|
-
};
|
|
147
|
+
return extractMetaFromTextNode(firstChild);
|
|
97
148
|
}
|
|
98
149
|
|
|
99
150
|
case 'status':
|
|
100
151
|
{
|
|
101
|
-
var
|
|
152
|
+
var text = firstChild.attrs.text;
|
|
102
153
|
return {
|
|
103
154
|
type: ContentType.STATUS,
|
|
104
|
-
value:
|
|
155
|
+
value: text
|
|
105
156
|
};
|
|
106
157
|
}
|
|
107
158
|
|
|
@@ -117,11 +168,11 @@ function getMetaFromNode(node, options) {
|
|
|
117
168
|
case 'mention':
|
|
118
169
|
{
|
|
119
170
|
// TODO: Check what should be the fallback when mention does not have a text
|
|
120
|
-
var
|
|
171
|
+
var _text = firstChild.attrs.text || '';
|
|
121
172
|
|
|
122
173
|
return {
|
|
123
174
|
type: ContentType.MENTION,
|
|
124
|
-
value:
|
|
175
|
+
value: _text.toLowerCase()
|
|
125
176
|
};
|
|
126
177
|
}
|
|
127
178
|
|
package/dist/esm/utils/index.js
CHANGED
|
@@ -33,5 +33,7 @@ export { validateADFEntity, validationErrorHandler } from './validate-using-spec
|
|
|
33
33
|
export { getShallowPropsDifference, getPropsDifference } from './compare-props';
|
|
34
34
|
export { useComponentRenderTracking } from './performance/hooks/use-component-render-tracking';
|
|
35
35
|
export { isOutdatedBrowser } from './outdated-browsers';
|
|
36
|
-
export { isReferencedSource } from './referentiality';
|
|
37
|
-
export { sendLogs } from './sendLogs';
|
|
36
|
+
export { isReferencedSource, removeConnectedNodes, getChildrenInfo, getNodeName } from './referentiality';
|
|
37
|
+
export { sendLogs } from './sendLogs';
|
|
38
|
+
export { Builder } from './builder';
|
|
39
|
+
export { getItemCounterDigitsSize, getOrderFromOrderedListNode, resolveOrder } from './list';
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export var DEFAULT_ORDER = 1; // resolve "order" to a safe, 0+ integer, otherwise return undefined
|
|
2
|
+
// Note: Any changes to this function should also be made to "resolveStart"
|
|
3
|
+
// in packages/editor/adf-schema/src/schema/nodes/ordered-list.ts
|
|
4
|
+
|
|
5
|
+
export var resolveOrder = function resolveOrder(order) {
|
|
6
|
+
var num = Number(order);
|
|
7
|
+
|
|
8
|
+
if (Number.isNaN(num)) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
if (num < 0) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return Math.floor(Math.max(num, 0));
|
|
17
|
+
};
|
|
18
|
+
export var getOrderFromOrderedListNode = function getOrderFromOrderedListNode(orderedListNode) {
|
|
19
|
+
var _orderedListNode$attr, _resolveOrder;
|
|
20
|
+
|
|
21
|
+
var order = orderedListNode === null || orderedListNode === void 0 ? void 0 : (_orderedListNode$attr = orderedListNode.attrs) === null || _orderedListNode$attr === void 0 ? void 0 : _orderedListNode$attr.order;
|
|
22
|
+
return (_resolveOrder = resolveOrder(order)) !== null && _resolveOrder !== void 0 ? _resolveOrder : DEFAULT_ORDER;
|
|
23
|
+
};
|
|
24
|
+
export var getItemCounterDigitsSize = function getItemCounterDigitsSize(options) {
|
|
25
|
+
var _resolveOrder2, _String, _String$split, _String$split$;
|
|
26
|
+
|
|
27
|
+
var order = (_resolveOrder2 = resolveOrder(options.order)) !== null && _resolveOrder2 !== void 0 ? _resolveOrder2 : DEFAULT_ORDER;
|
|
28
|
+
var itemsCount = typeof options.itemsCount === 'number' ? options.itemsCount : 0;
|
|
29
|
+
var largestCounter = order + (itemsCount - 1);
|
|
30
|
+
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;
|
|
31
|
+
};
|
|
@@ -59,26 +59,26 @@ export function pluginFactory(pluginKey, reducer) {
|
|
|
59
59
|
init: function init(_, state) {
|
|
60
60
|
return isFunction(initialState) ? initialState(state) : initialState;
|
|
61
61
|
},
|
|
62
|
-
apply: function apply(tr, _pluginState) {
|
|
63
|
-
var
|
|
64
|
-
var
|
|
62
|
+
apply: function apply(tr, _pluginState, _oldEditorState, newEditorState) {
|
|
63
|
+
var oldPluginState = mapping ? mapping(tr, _pluginState, newEditorState) : _pluginState;
|
|
64
|
+
var newPluginState = oldPluginState;
|
|
65
65
|
var meta = tr.getMeta(pluginKey);
|
|
66
66
|
|
|
67
67
|
if (meta) {
|
|
68
|
-
|
|
68
|
+
newPluginState = reducer(oldPluginState, meta);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
if (onDocChanged && tr.docChanged) {
|
|
72
|
-
|
|
72
|
+
newPluginState = onDocChanged(tr, newPluginState, newEditorState);
|
|
73
73
|
} else if (onSelectionChanged && tr.selectionSet) {
|
|
74
|
-
|
|
74
|
+
newPluginState = onSelectionChanged(tr, newPluginState, newEditorState);
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
if (
|
|
78
|
-
dispatch(pluginKey,
|
|
77
|
+
if (newPluginState !== oldPluginState) {
|
|
78
|
+
dispatch(pluginKey, newPluginState);
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
return
|
|
81
|
+
return newPluginState;
|
|
82
82
|
}
|
|
83
83
|
};
|
|
84
84
|
},
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
import _typeof from "@babel/runtime/helpers/typeof";
|
|
2
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
3
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
4
|
+
|
|
5
|
+
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; } } }; }
|
|
6
|
+
|
|
7
|
+
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); }
|
|
8
|
+
|
|
9
|
+
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; }
|
|
10
|
+
|
|
1
11
|
export var isReferencedSource = function isReferencedSource(state, node) {
|
|
2
12
|
var _node$attrs, _node$marks, _node$marks$find, _node$marks$find$attr;
|
|
3
13
|
|
|
@@ -37,4 +47,263 @@ export var isReferencedSource = function isReferencedSource(state, node) {
|
|
|
37
47
|
return !found;
|
|
38
48
|
});
|
|
39
49
|
return found;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
var getConnections = function getConnections(state) {
|
|
53
|
+
var result = {};
|
|
54
|
+
var doc = state.doc,
|
|
55
|
+
schema = state.schema; // Keeps a map of all raw ids -> to their preferred normalised varient. A node with both fragmentMark & localId will
|
|
56
|
+
// have both ids mapped here to the same normalized version.
|
|
57
|
+
|
|
58
|
+
var normalizedIds = new Map();
|
|
59
|
+
var dataConsumerSources = new Map(); // Perform a prelim scan creating the initial id to connection link mappings.
|
|
60
|
+
// This will also save a list of data sources consumed per node.
|
|
61
|
+
|
|
62
|
+
doc.descendants(function (node, pos) {
|
|
63
|
+
var _node$attrs2, _fragmentMark$attrs$l, _fragmentMark, _fragmentMark$attrs, _node$attrs3, _fragmentMark2, _fragmentMark2$attrs, _node$attrs4, _fragmentMark$attrs$n, _fragmentMark3, _fragmentMark3$attrs;
|
|
64
|
+
|
|
65
|
+
var dataConsumer;
|
|
66
|
+
var fragmentMark;
|
|
67
|
+
node.marks.some(function (mark) {
|
|
68
|
+
if (mark.type === schema.marks.dataConsumer) {
|
|
69
|
+
dataConsumer = mark;
|
|
70
|
+
} else if (mark.type === schema.marks.fragment) {
|
|
71
|
+
fragmentMark = mark;
|
|
72
|
+
} // Stop searching marks if we've found both consumer and fragment.
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
return !!dataConsumer && !!fragmentMark;
|
|
76
|
+
}); // If node cannot be referenced by any means then abort.
|
|
77
|
+
|
|
78
|
+
if (!fragmentMark && !((_node$attrs2 = node.attrs) !== null && _node$attrs2 !== void 0 && _node$attrs2.localId)) {
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
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;
|
|
83
|
+
|
|
84
|
+
if (!normalizedId) {
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (!!((_fragmentMark2 = fragmentMark) !== null && _fragmentMark2 !== void 0 && (_fragmentMark2$attrs = _fragmentMark2.attrs) !== null && _fragmentMark2$attrs !== void 0 && _fragmentMark2$attrs.localId)) {
|
|
89
|
+
normalizedIds.set(fragmentMark.attrs.localId, normalizedId);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (!!((_node$attrs4 = node.attrs) !== null && _node$attrs4 !== void 0 && _node$attrs4.localId)) {
|
|
93
|
+
normalizedIds.set(node.attrs.localId, normalizedId);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (!!result[normalizedId]) {
|
|
97
|
+
// Duplicate ID has been found, we'll care about the first one for now.
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
result[normalizedId] = {
|
|
102
|
+
localId: normalizedId,
|
|
103
|
+
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,
|
|
104
|
+
node: node,
|
|
105
|
+
pos: pos,
|
|
106
|
+
targets: []
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
if (!!dataConsumer && dataConsumer.attrs.sources.length) {
|
|
110
|
+
dataConsumerSources.set(normalizedId, dataConsumer.attrs.sources);
|
|
111
|
+
} // Do not descend into children of a node which has a dataConsumer attached. This assumes all children of the node cannot
|
|
112
|
+
// be referenced by another node.
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
return !dataConsumer;
|
|
116
|
+
}); // This 2nd-pass only looks at the consumer sources and updates all connections with the correct id refs.
|
|
117
|
+
|
|
118
|
+
var _iterator = _createForOfIteratorHelper(dataConsumerSources),
|
|
119
|
+
_step;
|
|
120
|
+
|
|
121
|
+
try {
|
|
122
|
+
var _loop = function _loop() {
|
|
123
|
+
var _step$value = _slicedToArray(_step.value, 2),
|
|
124
|
+
localId = _step$value[0],
|
|
125
|
+
sources = _step$value[1];
|
|
126
|
+
|
|
127
|
+
// This is a ref to the node (connection link) which contains the consumer.
|
|
128
|
+
sources.forEach(function (src) {
|
|
129
|
+
var _normalizedIds$get;
|
|
130
|
+
|
|
131
|
+
var normalizedId = (_normalizedIds$get = normalizedIds.get(src)) !== null && _normalizedIds$get !== void 0 ? _normalizedIds$get : src;
|
|
132
|
+
var srcLink = result[normalizedId];
|
|
133
|
+
|
|
134
|
+
if (srcLink && normalizedId !== localId) {
|
|
135
|
+
srcLink.targets.push(localId);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
141
|
+
_loop();
|
|
142
|
+
}
|
|
143
|
+
} catch (err) {
|
|
144
|
+
_iterator.e(err);
|
|
145
|
+
} finally {
|
|
146
|
+
_iterator.f();
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
return result;
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
export var removeConnectedNodes = function removeConnectedNodes(state, node) {
|
|
153
|
+
if (!node) {
|
|
154
|
+
return state.tr;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
var selectedLocalIds = getSelectedLocalIds(state, node);
|
|
158
|
+
var allNodes = getConnections(state);
|
|
159
|
+
var idsToBeDeleted = getIdsToBeDeleted(selectedLocalIds, allNodes);
|
|
160
|
+
|
|
161
|
+
if (!(idsToBeDeleted !== null && idsToBeDeleted !== void 0 && idsToBeDeleted.length)) {
|
|
162
|
+
return state.tr;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
var tr = state.tr;
|
|
166
|
+
var newTr = tr;
|
|
167
|
+
idsToBeDeleted.forEach(function (id) {
|
|
168
|
+
if (!allNodes[id]) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
var _allNodes$id = allNodes[id],
|
|
173
|
+
node = _allNodes$id.node,
|
|
174
|
+
pos = _allNodes$id.pos;
|
|
175
|
+
newTr = newTr.delete(newTr.mapping.map(pos), newTr.mapping.map(node.nodeSize + pos));
|
|
176
|
+
});
|
|
177
|
+
return newTr;
|
|
178
|
+
}; // find all ids need to be remove connected to selected extension
|
|
179
|
+
|
|
180
|
+
var getIdsToBeDeleted = function getIdsToBeDeleted(selectedIds, allNodes) {
|
|
181
|
+
if (!selectedIds.size) {
|
|
182
|
+
return [];
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
var searchSet = _toConsumableArray(selectedIds);
|
|
186
|
+
|
|
187
|
+
var deletedIds = new Set();
|
|
188
|
+
|
|
189
|
+
while (searchSet.length) {
|
|
190
|
+
var id = searchSet.pop();
|
|
191
|
+
|
|
192
|
+
if (allNodes[id]) {
|
|
193
|
+
var _allNodes$id$targets$, _allNodes$id2;
|
|
194
|
+
|
|
195
|
+
deletedIds.add(allNodes[id].localId);
|
|
196
|
+
searchSet = searchSet.concat((_allNodes$id$targets$ = (_allNodes$id2 = allNodes[id]) === null || _allNodes$id2 === void 0 ? void 0 : _allNodes$id2.targets.filter(function (targetId) {
|
|
197
|
+
var _allNodes$targetId;
|
|
198
|
+
|
|
199
|
+
return !deletedIds.has((_allNodes$targetId = allNodes[targetId]) === null || _allNodes$targetId === void 0 ? void 0 : _allNodes$targetId.localId);
|
|
200
|
+
})) !== null && _allNodes$id$targets$ !== void 0 ? _allNodes$id$targets$ : []);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
return Array.from(deletedIds);
|
|
205
|
+
}; // for get children info for confirmation dialog
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
export var getChildrenInfo = function getChildrenInfo(state, node) {
|
|
209
|
+
if (!node) {
|
|
210
|
+
return [];
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
var childrenIdSet = new Set();
|
|
214
|
+
var childrenInfoArray = [];
|
|
215
|
+
var allNodes = getConnections(state);
|
|
216
|
+
var selectedNodeIds = getSelectedLocalIds(state, node);
|
|
217
|
+
selectedNodeIds.forEach(function (id) {
|
|
218
|
+
if (allNodes[id]) {
|
|
219
|
+
allNodes[id].targets.forEach(childrenIdSet.add, childrenIdSet);
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
childrenIdSet.forEach(function (id) {
|
|
223
|
+
childrenInfoArray.push({
|
|
224
|
+
id: id,
|
|
225
|
+
name: getNodeNameById(id, allNodes),
|
|
226
|
+
amount: getChildrenNodeAmount(id, allNodes)
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
return childrenInfoArray;
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
var getChildrenNodeAmount = function getChildrenNodeAmount(id, allNodes) {
|
|
233
|
+
var searchTerms = new Set([id]);
|
|
234
|
+
var traverseHistory = new Map();
|
|
235
|
+
var childrenIds = new Set();
|
|
236
|
+
traverseHistory.set(id, false);
|
|
237
|
+
|
|
238
|
+
while (searchTerms.size > 0) {
|
|
239
|
+
var _searchTerms = _slicedToArray(searchTerms, 1),
|
|
240
|
+
currTerm = _searchTerms[0];
|
|
241
|
+
|
|
242
|
+
var targets = getNodeTargetsById(currTerm, allNodes);
|
|
243
|
+
targets.forEach(function (target) {
|
|
244
|
+
var isTargetCounted = traverseHistory.get(target);
|
|
245
|
+
|
|
246
|
+
if (!isTargetCounted) {
|
|
247
|
+
searchTerms.add(target);
|
|
248
|
+
childrenIds.add(target);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
target !== id && childrenIds.add(target);
|
|
252
|
+
});
|
|
253
|
+
traverseHistory.set(currTerm, true);
|
|
254
|
+
searchTerms.delete(currTerm);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
return childrenIds.size;
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
var getNodeTargetsById = function getNodeTargetsById(id, allNodes) {
|
|
261
|
+
if (!id || !allNodes[id]) {
|
|
262
|
+
return [];
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
return allNodes[id].targets;
|
|
266
|
+
};
|
|
267
|
+
|
|
268
|
+
var DEFAULT_EXTENSION_NAME = 'Default extension';
|
|
269
|
+
|
|
270
|
+
var getNodeNameById = function getNodeNameById(id, allNodes) {
|
|
271
|
+
if (_typeof(id) === 'object') {
|
|
272
|
+
var _name2;
|
|
273
|
+
|
|
274
|
+
var name;
|
|
275
|
+
id.forEach(function (localId) {
|
|
276
|
+
var _name, _allNodes$localId;
|
|
277
|
+
|
|
278
|
+
name = (_name = name) !== null && _name !== void 0 ? _name : (_allNodes$localId = allNodes[localId]) === null || _allNodes$localId === void 0 ? void 0 : _allNodes$localId.name;
|
|
279
|
+
});
|
|
280
|
+
return (_name2 = name) !== null && _name2 !== void 0 ? _name2 : DEFAULT_EXTENSION_NAME;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
if (!id || !allNodes[id]) {
|
|
284
|
+
return DEFAULT_EXTENSION_NAME;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
return allNodes[id].name;
|
|
288
|
+
};
|
|
289
|
+
|
|
290
|
+
var getSelectedLocalIds = function getSelectedLocalIds(state, node) {
|
|
291
|
+
var _node$attrs5, _node$marks2, _node$marks2$find, _node$marks2$find$att;
|
|
292
|
+
|
|
293
|
+
if (!node) {
|
|
294
|
+
return new Set([]);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
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) {
|
|
298
|
+
return mark.type === state.schema.marks.fragment;
|
|
299
|
+
})) === 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));
|
|
300
|
+
return localIds;
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
export var getNodeName = function getNodeName(state, node) {
|
|
304
|
+
var _node$marks$find$attr2, _node$marks3, _node$marks3$find, _node$marks3$find$att;
|
|
305
|
+
|
|
306
|
+
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) {
|
|
307
|
+
return mark.type === state.schema.marks.fragment;
|
|
308
|
+
})) === 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 : '';
|
|
40
309
|
};
|
|
@@ -4,7 +4,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
4
4
|
|
|
5
5
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
6
6
|
|
|
7
|
-
import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '
|
|
7
|
+
import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '../analytics';
|
|
8
8
|
var whitelistedAttributes = ['align', 'annotationType', 'extensionKey', 'extensionType', 'layout', 'type', 'localId', 'mode', 'language', 'timestamp', 'state', 'originalWidth', 'originalHeight', 'height', 'width', 'shortName', 'level', 'userType', 'order', 'panelType', 'color', 'style', 'isNumberColumnEnabled', 'colspan', 'rowspan', 'colwidth', 'background'];
|
|
9
9
|
|
|
10
10
|
function concatAncestorHierarchy(node, ancestoryHierarchy) {
|
|
@@ -70,8 +70,6 @@ export var findAndTrackUnsupportedContentNodes = function findAndTrackUnsupporte
|
|
|
70
70
|
var _ref = mark.attrs || {},
|
|
71
71
|
originalValue = _ref.originalValue;
|
|
72
72
|
|
|
73
|
-
var sanitizedAttrs = sanitizeAttributes(originalValue.attrs) || {};
|
|
74
|
-
|
|
75
73
|
var _ref2 = originalValue || {},
|
|
76
74
|
type = _ref2.type;
|
|
77
75
|
|
|
@@ -80,21 +78,19 @@ export var findAndTrackUnsupportedContentNodes = function findAndTrackUnsupporte
|
|
|
80
78
|
ancestry: ancestorHierarchy,
|
|
81
79
|
parentType: parentType,
|
|
82
80
|
marks: [],
|
|
83
|
-
attrs:
|
|
81
|
+
attrs: originalValue.attrs || {}
|
|
84
82
|
};
|
|
85
83
|
fireUnsupportedEvent(dispatchAnalyticsEvent, ACTION_SUBJECT_ID.UNSUPPORTED_MARK, unsupportedNode);
|
|
86
84
|
} else if (mark.type === unsupportedNodeAttribute) {
|
|
87
85
|
var _ref3 = mark.attrs || {},
|
|
88
86
|
unsupported = _ref3.unsupported;
|
|
89
87
|
|
|
90
|
-
var _sanitizedAttrs = sanitizeAttributes(unsupported) || {};
|
|
91
|
-
|
|
92
88
|
var _unsupportedNodeAttribute = {
|
|
93
89
|
type: nodeType.name || '',
|
|
94
90
|
ancestry: ancestorHierarchy,
|
|
95
91
|
parentType: parentType,
|
|
96
92
|
marks: [],
|
|
97
|
-
attrs:
|
|
93
|
+
attrs: unsupported || {}
|
|
98
94
|
};
|
|
99
95
|
fireUnsupportedEvent(dispatchAnalyticsEvent, ACTION_SUBJECT_ID.UNSUPPORTED_NODE_ATTRIBUTE, _unsupportedNodeAttribute);
|
|
100
96
|
}
|
|
@@ -118,8 +114,8 @@ export var findAndTrackUnsupportedContentNodes = function findAndTrackUnsupporte
|
|
|
118
114
|
type: type || '',
|
|
119
115
|
ancestry: ancestorHierarchy,
|
|
120
116
|
parentType: parentType,
|
|
121
|
-
marks:
|
|
122
|
-
attrs:
|
|
117
|
+
marks: marks || [],
|
|
118
|
+
attrs: attrs || {}
|
|
123
119
|
};
|
|
124
120
|
var actionSubjectId = nodeType === unsupportedInline ? ACTION_SUBJECT_ID.UNSUPPORTED_INLINE : ACTION_SUBJECT_ID.UNSUPPORTED_BLOCK;
|
|
125
121
|
fireUnsupportedEvent(dispatchAnalyticsEvent, actionSubjectId, unsupportedNode);
|
|
@@ -130,22 +126,25 @@ export var findAndTrackUnsupportedContentNodes = function findAndTrackUnsupporte
|
|
|
130
126
|
});
|
|
131
127
|
}
|
|
132
128
|
};
|
|
133
|
-
export var fireUnsupportedEvent = function fireUnsupportedEvent(dispatchAnalyticsEvent, actionSubjectId) {
|
|
134
|
-
var
|
|
135
|
-
var
|
|
136
|
-
var
|
|
137
|
-
|
|
129
|
+
export var fireUnsupportedEvent = function fireUnsupportedEvent(dispatchAnalyticsEvent, actionSubjectId, unsupportedNode, errorCode) {
|
|
130
|
+
var sanitizedAttrs = sanitizeAttributes(unsupportedNode.attrs);
|
|
131
|
+
var sanitizedMarks = sanitizeMarks(unsupportedNode.marks);
|
|
132
|
+
var sanitizedUnsupportedNode = {
|
|
133
|
+
type: unsupportedNode.type,
|
|
134
|
+
ancestry: unsupportedNode.ancestry,
|
|
135
|
+
parentType: unsupportedNode.parentType,
|
|
136
|
+
attrs: sanitizedAttrs,
|
|
137
|
+
marks: sanitizedMarks
|
|
138
138
|
};
|
|
139
|
-
|
|
140
|
-
if (errorCode) {
|
|
141
|
-
attrs.errorCode = errorCode;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
139
|
var payload = {
|
|
145
140
|
action: ACTION.UNSUPPORTED_CONTENT_ENCOUNTERED,
|
|
146
141
|
actionSubject: ACTION_SUBJECT.DOCUMENT,
|
|
147
142
|
actionSubjectId: actionSubjectId,
|
|
148
|
-
attributes:
|
|
143
|
+
attributes: _objectSpread({
|
|
144
|
+
unsupportedNode: sanitizedUnsupportedNode
|
|
145
|
+
}, !!errorCode && {
|
|
146
|
+
errorCode: errorCode
|
|
147
|
+
}),
|
|
149
148
|
eventType: EVENT_TYPE.TRACK
|
|
150
149
|
};
|
|
151
150
|
dispatchAnalyticsEvent(payload);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { validator } from '@atlaskit/adf-utils/validator';
|
|
2
|
+
import { ACTION_SUBJECT_ID } from '../analytics';
|
|
2
3
|
export var UNSUPPORTED_NODE_ATTRIBUTE = 'unsupportedNodeAttribute';
|
|
3
|
-
import { ACTION_SUBJECT_ID } from './analytics';
|
|
4
4
|
import { fireUnsupportedEvent } from './track-unsupported-content';
|
|
5
5
|
|
|
6
6
|
var errorCallbackFor = function errorCallbackFor(marks, validate, dispatchAnalyticsEvent) {
|
|
@@ -106,7 +106,13 @@ function trackValidationError(dispatchAnalyticsEvent, error, entity) {
|
|
|
106
106
|
return;
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
fireUnsupportedEvent(dispatchAnalyticsEvent, ACTION_SUBJECT_ID.UNSUPPORTED_ERROR,
|
|
109
|
+
fireUnsupportedEvent(dispatchAnalyticsEvent, ACTION_SUBJECT_ID.UNSUPPORTED_ERROR, {
|
|
110
|
+
type: entity.type || '',
|
|
111
|
+
ancestry: entity.ancestorHierarchy || '',
|
|
112
|
+
parentType: entity.parentType || '',
|
|
113
|
+
marks: entity.marks || [],
|
|
114
|
+
attrs: entity.attrs || {}
|
|
115
|
+
}, error.code);
|
|
110
116
|
}
|
|
111
117
|
|
|
112
118
|
export var validateADFEntity = function validateADFEntity(schema, node, dispatchAnalyticsEvent) {
|
package/dist/esm/version.json
CHANGED