@pie-lib/editable-html-tip-tap 1.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.
- package/CHANGELOG.json +32 -0
- package/CHANGELOG.md +2280 -0
- package/lib/__tests__/editor.test.js +470 -0
- package/lib/__tests__/serialization.test.js +246 -0
- package/lib/__tests__/utils.js +106 -0
- package/lib/block-tags.js +25 -0
- package/lib/constants.js +16 -0
- package/lib/editor.js +1356 -0
- package/lib/extensions/MediaView.js +112 -0
- package/lib/extensions/characters.js +65 -0
- package/lib/extensions/component.js +325 -0
- package/lib/extensions/css.js +252 -0
- package/lib/extensions/custom-toolbar-wrapper.js +124 -0
- package/lib/extensions/image.js +106 -0
- package/lib/extensions/math.js +330 -0
- package/lib/extensions/media.js +276 -0
- package/lib/extensions/responseArea.js +278 -0
- package/lib/index.js +1213 -0
- package/lib/old-index.js +269 -0
- package/lib/parse-html.js +16 -0
- package/lib/plugins/characters/custom-popper.js +73 -0
- package/lib/plugins/characters/index.js +305 -0
- package/lib/plugins/characters/utils.js +381 -0
- package/lib/plugins/css/icons/index.js +37 -0
- package/lib/plugins/css/index.js +390 -0
- package/lib/plugins/customPlugin/index.js +114 -0
- package/lib/plugins/html/icons/index.js +38 -0
- package/lib/plugins/html/index.js +81 -0
- package/lib/plugins/image/__tests__/component.test.js +51 -0
- package/lib/plugins/image/__tests__/image-toolbar-logic.test.js +56 -0
- package/lib/plugins/image/__tests__/image-toolbar.test.js +26 -0
- package/lib/plugins/image/__tests__/index.test.js +98 -0
- package/lib/plugins/image/__tests__/insert-image-handler.test.js +125 -0
- package/lib/plugins/image/__tests__/mock-change.js +25 -0
- package/lib/plugins/image/alt-dialog.js +129 -0
- package/lib/plugins/image/component.js +419 -0
- package/lib/plugins/image/image-toolbar.js +177 -0
- package/lib/plugins/image/index.js +263 -0
- package/lib/plugins/image/insert-image-handler.js +117 -0
- package/lib/plugins/index.js +413 -0
- package/lib/plugins/list/__tests__/index.test.js +79 -0
- package/lib/plugins/list/index.js +334 -0
- package/lib/plugins/math/__tests__/index.test.js +300 -0
- package/lib/plugins/math/index.js +454 -0
- package/lib/plugins/media/__tests__/index.test.js +71 -0
- package/lib/plugins/media/index.js +387 -0
- package/lib/plugins/media/media-dialog.js +709 -0
- package/lib/plugins/media/media-toolbar.js +101 -0
- package/lib/plugins/media/media-wrapper.js +93 -0
- package/lib/plugins/rendering/index.js +46 -0
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +289 -0
- package/lib/plugins/respArea/drag-in-the-blank/index.js +94 -0
- package/lib/plugins/respArea/explicit-constructed-response/index.js +120 -0
- package/lib/plugins/respArea/icons/index.js +95 -0
- package/lib/plugins/respArea/index.js +341 -0
- package/lib/plugins/respArea/inline-dropdown/index.js +126 -0
- package/lib/plugins/respArea/math-templated/index.js +130 -0
- package/lib/plugins/respArea/utils.js +125 -0
- package/lib/plugins/table/CustomTablePlugin.js +133 -0
- package/lib/plugins/table/__tests__/index.test.js +442 -0
- package/lib/plugins/table/__tests__/table-toolbar.test.js +54 -0
- package/lib/plugins/table/icons/index.js +69 -0
- package/lib/plugins/table/index.js +483 -0
- package/lib/plugins/table/table-toolbar.js +187 -0
- package/lib/plugins/textAlign/icons/index.js +194 -0
- package/lib/plugins/textAlign/index.js +34 -0
- package/lib/plugins/toolbar/__tests__/default-toolbar.test.js +128 -0
- package/lib/plugins/toolbar/__tests__/editor-and-toolbar.test.js +51 -0
- package/lib/plugins/toolbar/__tests__/toolbar-buttons.test.js +54 -0
- package/lib/plugins/toolbar/__tests__/toolbar.test.js +120 -0
- package/lib/plugins/toolbar/default-toolbar.js +229 -0
- package/lib/plugins/toolbar/done-button.js +53 -0
- package/lib/plugins/toolbar/editor-and-toolbar.js +286 -0
- package/lib/plugins/toolbar/index.js +34 -0
- package/lib/plugins/toolbar/toolbar-buttons.js +194 -0
- package/lib/plugins/toolbar/toolbar.js +376 -0
- package/lib/plugins/utils.js +62 -0
- package/lib/serialization.js +677 -0
- package/lib/shared/alert-dialog.js +75 -0
- package/lib/theme.js +9 -0
- package/package.json +69 -0
- package/src/__tests__/editor.test.jsx +363 -0
- package/src/__tests__/serialization.test.js +291 -0
- package/src/__tests__/utils.js +36 -0
- package/src/block-tags.js +17 -0
- package/src/constants.js +7 -0
- package/src/editor.jsx +1197 -0
- package/src/extensions/characters.js +46 -0
- package/src/extensions/component.jsx +294 -0
- package/src/extensions/css.js +217 -0
- package/src/extensions/custom-toolbar-wrapper.jsx +100 -0
- package/src/extensions/image.js +55 -0
- package/src/extensions/math.js +259 -0
- package/src/extensions/media.js +182 -0
- package/src/extensions/responseArea.js +205 -0
- package/src/index.jsx +1462 -0
- package/src/old-index.jsx +162 -0
- package/src/parse-html.js +8 -0
- package/src/plugins/README.md +27 -0
- package/src/plugins/characters/custom-popper.js +48 -0
- package/src/plugins/characters/index.jsx +284 -0
- package/src/plugins/characters/utils.js +447 -0
- package/src/plugins/css/icons/index.jsx +17 -0
- package/src/plugins/css/index.jsx +340 -0
- package/src/plugins/customPlugin/index.jsx +85 -0
- package/src/plugins/html/icons/index.jsx +19 -0
- package/src/plugins/html/index.jsx +72 -0
- package/src/plugins/image/__tests__/__snapshots__/component.test.jsx.snap +51 -0
- package/src/plugins/image/__tests__/__snapshots__/image-toolbar-logic.test.jsx.snap +27 -0
- package/src/plugins/image/__tests__/__snapshots__/image-toolbar.test.jsx.snap +44 -0
- package/src/plugins/image/__tests__/component.test.jsx +41 -0
- package/src/plugins/image/__tests__/image-toolbar-logic.test.jsx +42 -0
- package/src/plugins/image/__tests__/image-toolbar.test.jsx +11 -0
- package/src/plugins/image/__tests__/index.test.js +95 -0
- package/src/plugins/image/__tests__/insert-image-handler.test.js +113 -0
- package/src/plugins/image/__tests__/mock-change.js +15 -0
- package/src/plugins/image/alt-dialog.jsx +82 -0
- package/src/plugins/image/component.jsx +343 -0
- package/src/plugins/image/image-toolbar.jsx +100 -0
- package/src/plugins/image/index.jsx +227 -0
- package/src/plugins/image/insert-image-handler.js +79 -0
- package/src/plugins/index.jsx +377 -0
- package/src/plugins/list/__tests__/index.test.js +54 -0
- package/src/plugins/list/index.jsx +305 -0
- package/src/plugins/math/__tests__/__snapshots__/index.test.jsx.snap +48 -0
- package/src/plugins/math/__tests__/index.test.jsx +245 -0
- package/src/plugins/math/index.jsx +379 -0
- package/src/plugins/media/__tests__/index.test.js +75 -0
- package/src/plugins/media/index.jsx +325 -0
- package/src/plugins/media/media-dialog.js +624 -0
- package/src/plugins/media/media-toolbar.jsx +56 -0
- package/src/plugins/media/media-wrapper.jsx +43 -0
- package/src/plugins/rendering/index.js +31 -0
- package/src/plugins/respArea/drag-in-the-blank/choice.jsx +215 -0
- package/src/plugins/respArea/drag-in-the-blank/index.jsx +70 -0
- package/src/plugins/respArea/explicit-constructed-response/index.jsx +92 -0
- package/src/plugins/respArea/icons/index.jsx +71 -0
- package/src/plugins/respArea/index.jsx +299 -0
- package/src/plugins/respArea/inline-dropdown/index.jsx +108 -0
- package/src/plugins/respArea/math-templated/index.jsx +104 -0
- package/src/plugins/respArea/utils.jsx +90 -0
- package/src/plugins/table/CustomTablePlugin.js +113 -0
- package/src/plugins/table/__tests__/__snapshots__/table-toolbar.test.jsx.snap +44 -0
- package/src/plugins/table/__tests__/index.test.jsx +401 -0
- package/src/plugins/table/__tests__/table-toolbar.test.jsx +42 -0
- package/src/plugins/table/icons/index.jsx +53 -0
- package/src/plugins/table/index.jsx +427 -0
- package/src/plugins/table/table-toolbar.jsx +136 -0
- package/src/plugins/textAlign/icons/index.jsx +114 -0
- package/src/plugins/textAlign/index.jsx +23 -0
- package/src/plugins/toolbar/__tests__/__snapshots__/default-toolbar.test.jsx.snap +923 -0
- package/src/plugins/toolbar/__tests__/__snapshots__/editor-and-toolbar.test.jsx.snap +20 -0
- package/src/plugins/toolbar/__tests__/__snapshots__/toolbar-buttons.test.jsx.snap +36 -0
- package/src/plugins/toolbar/__tests__/__snapshots__/toolbar.test.jsx.snap +46 -0
- package/src/plugins/toolbar/__tests__/default-toolbar.test.jsx +94 -0
- package/src/plugins/toolbar/__tests__/editor-and-toolbar.test.jsx +37 -0
- package/src/plugins/toolbar/__tests__/toolbar-buttons.test.jsx +51 -0
- package/src/plugins/toolbar/__tests__/toolbar.test.jsx +106 -0
- package/src/plugins/toolbar/default-toolbar.jsx +206 -0
- package/src/plugins/toolbar/done-button.jsx +38 -0
- package/src/plugins/toolbar/editor-and-toolbar.jsx +257 -0
- package/src/plugins/toolbar/index.jsx +23 -0
- package/src/plugins/toolbar/toolbar-buttons.jsx +138 -0
- package/src/plugins/toolbar/toolbar.jsx +338 -0
- package/src/plugins/utils.js +31 -0
- package/src/serialization.jsx +621 -0
- package/src/theme.js +1 -0
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.buildPlugins = exports.SuperscriptIcon = exports.SubscriptIcon = exports.HeadingIcon = exports.EXTENSIONS_LIST = exports.DEFAULT_PLUGINS = exports.ALL_PLUGINS = void 0;
|
|
9
|
+
|
|
10
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
+
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
|
|
14
|
+
var _slateHotkeys = _interopRequireDefault(require("slate-hotkeys"));
|
|
15
|
+
|
|
16
|
+
var _slateDevEnvironment = require("slate-dev-environment");
|
|
17
|
+
|
|
18
|
+
var _slate = require("slate");
|
|
19
|
+
|
|
20
|
+
var _FormatBold = _interopRequireDefault(require("@material-ui/icons/FormatBold"));
|
|
21
|
+
|
|
22
|
+
var _FormatQuote = _interopRequireDefault(require("@material-ui/icons/FormatQuote"));
|
|
23
|
+
|
|
24
|
+
var _FormatListBulleted = _interopRequireDefault(require("@material-ui/icons/FormatListBulleted"));
|
|
25
|
+
|
|
26
|
+
var _FormatListNumbered = _interopRequireDefault(require("@material-ui/icons/FormatListNumbered"));
|
|
27
|
+
|
|
28
|
+
var _GridOn = _interopRequireDefault(require("@material-ui/icons/GridOn"));
|
|
29
|
+
|
|
30
|
+
var _Image = _interopRequireDefault(require("@material-ui/icons/Image"));
|
|
31
|
+
|
|
32
|
+
var _Redo = _interopRequireDefault(require("@material-ui/icons/Redo"));
|
|
33
|
+
|
|
34
|
+
var _Undo = _interopRequireDefault(require("@material-ui/icons/Undo"));
|
|
35
|
+
|
|
36
|
+
var _image = _interopRequireDefault(require("./image"));
|
|
37
|
+
|
|
38
|
+
var _media = _interopRequireDefault(require("./media"));
|
|
39
|
+
|
|
40
|
+
var _characters = _interopRequireDefault(require("./characters"));
|
|
41
|
+
|
|
42
|
+
var _FormatItalic = _interopRequireDefault(require("@material-ui/icons/FormatItalic"));
|
|
43
|
+
|
|
44
|
+
var _math = _interopRequireDefault(require("./math"));
|
|
45
|
+
|
|
46
|
+
var _react = _interopRequireDefault(require("react"));
|
|
47
|
+
|
|
48
|
+
var _FormatStrikethrough = _interopRequireDefault(require("@material-ui/icons/FormatStrikethrough"));
|
|
49
|
+
|
|
50
|
+
var _toolbar = _interopRequireDefault(require("./toolbar"));
|
|
51
|
+
|
|
52
|
+
var _FormatUnderlined = _interopRequireDefault(require("@material-ui/icons/FormatUnderlined"));
|
|
53
|
+
|
|
54
|
+
var _compact = _interopRequireDefault(require("lodash/compact"));
|
|
55
|
+
|
|
56
|
+
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
57
|
+
|
|
58
|
+
var _slateSoftBreak = _interopRequireDefault(require("slate-soft-break"));
|
|
59
|
+
|
|
60
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
61
|
+
|
|
62
|
+
var _list = _interopRequireDefault(require("./list"));
|
|
63
|
+
|
|
64
|
+
var _table = _interopRequireDefault(require("./table"));
|
|
65
|
+
|
|
66
|
+
var _respArea = _interopRequireDefault(require("./respArea"));
|
|
67
|
+
|
|
68
|
+
var _html = _interopRequireDefault(require("./html"));
|
|
69
|
+
|
|
70
|
+
var _css = _interopRequireDefault(require("./css"));
|
|
71
|
+
|
|
72
|
+
var _customPlugin = _interopRequireDefault(require("./customPlugin"));
|
|
73
|
+
|
|
74
|
+
var _rendering = _interopRequireDefault(require("./rendering"));
|
|
75
|
+
|
|
76
|
+
var _textAlign = _interopRequireDefault(require("./textAlign"));
|
|
77
|
+
|
|
78
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
79
|
+
|
|
80
|
+
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) { (0, _defineProperty2["default"])(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; }
|
|
81
|
+
|
|
82
|
+
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins');
|
|
83
|
+
|
|
84
|
+
var SuperscriptIcon = function SuperscriptIcon() {
|
|
85
|
+
return /*#__PURE__*/_react["default"].createElement("svg", {
|
|
86
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
87
|
+
height: "24px",
|
|
88
|
+
viewBox: "0 0 24 24",
|
|
89
|
+
width: "24px",
|
|
90
|
+
fill: "none"
|
|
91
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
92
|
+
d: "M22,7h-2v1h3v1h-4V7c0-0.55,0.45-1,1-1h2V5h-3V4h3c0.55,0,1,0.45,1,1v1C23,6.55,22.55,7,22,7z M5.88,20h2.66l3.4-5.42h0.12 l3.4,5.42h2.66l-4.65-7.27L17.81,6h-2.68l-3.07,4.99h-0.12L8.85,6H6.19l4.32,6.73L5.88,20z",
|
|
93
|
+
fill: "currentColor"
|
|
94
|
+
}));
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
exports.SuperscriptIcon = SuperscriptIcon;
|
|
98
|
+
|
|
99
|
+
var SubscriptIcon = function SubscriptIcon() {
|
|
100
|
+
return /*#__PURE__*/_react["default"].createElement("svg", {
|
|
101
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
102
|
+
height: "24px",
|
|
103
|
+
viewBox: "0 0 24 24",
|
|
104
|
+
width: "24px",
|
|
105
|
+
fill: "none"
|
|
106
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
107
|
+
d: "M22,18h-2v1h3v1h-4v-2c0-0.55,0.45-1,1-1h2v-1h-3v-1h3c0.55,0,1,0.45,1,1v1C23,17.55,22.55,18,22,18z M5.88,18h2.66 l3.4-5.42h0.12l3.4,5.42h2.66l-4.65-7.27L17.81,4h-2.68l-3.07,4.99h-0.12L8.85,4H6.19l4.32,6.73L5.88,18z",
|
|
108
|
+
fill: "currentColor"
|
|
109
|
+
}));
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
exports.SubscriptIcon = SubscriptIcon;
|
|
113
|
+
|
|
114
|
+
var HeadingIcon = function HeadingIcon() {
|
|
115
|
+
return /*#__PURE__*/_react["default"].createElement("svg", {
|
|
116
|
+
width: "30",
|
|
117
|
+
height: "28",
|
|
118
|
+
viewBox: "0 0 30 28",
|
|
119
|
+
fill: "none",
|
|
120
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
121
|
+
style: {
|
|
122
|
+
width: '20px',
|
|
123
|
+
height: '18px'
|
|
124
|
+
}
|
|
125
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
126
|
+
d: "M27 4V24H29C29.5 24 30 24.5 30 25V27C30 27.5625 29.5 28 29 28H19C18.4375 28 18 27.5625 18 27V25C18 24.5 18.4375 24 19 24H21V16H9V24H11C11.5 24 12 24.5 12 25V27C12 27.5625 11.5 28 11 28H1C0.4375 28 0 27.5625 0 27V25C0 24.5 0.4375 24 1 24H3V4H1C0.4375 4 0 3.5625 0 3V1C0 0.5 0.4375 0 1 0H11C11.5 0 12 0.5 12 1V3C12 3.5625 11.5 4 11 4H9V12H21V4H19C18.4375 4 18 3.5625 18 3V1C18 0.5 18.4375 0 19 0H29C29.5 0 30 0.5 30 1V3C30 3.5625 29.5 4 29 4H27Z",
|
|
127
|
+
fill: "currentColor"
|
|
128
|
+
}));
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
exports.HeadingIcon = HeadingIcon;
|
|
132
|
+
var STYLES_MAP = {
|
|
133
|
+
h3: {
|
|
134
|
+
fontSize: 'inherit',
|
|
135
|
+
fontWeight: 'inherit'
|
|
136
|
+
},
|
|
137
|
+
blockquote: {
|
|
138
|
+
background: '#f9f9f9',
|
|
139
|
+
borderLeft: '5px solid #ccc',
|
|
140
|
+
margin: '1.5em 10px',
|
|
141
|
+
padding: '.5em 10px'
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
function MarkHotkey(options) {
|
|
146
|
+
var type = options.type,
|
|
147
|
+
key = options.key,
|
|
148
|
+
icon = options.icon,
|
|
149
|
+
tag = options.tag; // Return our "plugin" object, containing the `onKeyDown` handler.
|
|
150
|
+
|
|
151
|
+
return {
|
|
152
|
+
name: type,
|
|
153
|
+
toolbar: {
|
|
154
|
+
isMark: true,
|
|
155
|
+
type: type,
|
|
156
|
+
icon: icon,
|
|
157
|
+
onToggle: function onToggle(change) {
|
|
158
|
+
log('[onToggleMark] type: ', type);
|
|
159
|
+
var selection = change.value.selection;
|
|
160
|
+
|
|
161
|
+
if (['blockquote', 'h3'].includes(type)) {
|
|
162
|
+
var texts = change.value.document.getTextsAtRangeAsArray(selection);
|
|
163
|
+
var onlyOneText = texts.length === 1;
|
|
164
|
+
var hasMark = false;
|
|
165
|
+
var sameMark = true;
|
|
166
|
+
texts.forEach(function (t) {
|
|
167
|
+
var marks = t.getMarksAsArray();
|
|
168
|
+
var markIsThere = marks.find(function (m) {
|
|
169
|
+
return m.type === type;
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
if (!markIsThere) {
|
|
173
|
+
// not all texts have this mark
|
|
174
|
+
sameMark = false;
|
|
175
|
+
} else {
|
|
176
|
+
// at least one mark
|
|
177
|
+
hasMark = true;
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
var shouldContinue = onlyOneText || sameMark || !hasMark;
|
|
181
|
+
|
|
182
|
+
if (!shouldContinue) {
|
|
183
|
+
return change;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
if (selection.startKey === selection.endKey && selection.anchorOffset === selection.focusOffset) {
|
|
187
|
+
var textNode = change.value.document.getNode(selection.startKey); // select the whole line if there is no selection
|
|
188
|
+
|
|
189
|
+
change.moveFocusTo(textNode.key, 0).moveAnchorTo(textNode.key, textNode.text.length); // remove toggle
|
|
190
|
+
|
|
191
|
+
var _hasMark = change.value.activeMarks.find(function (entry) {
|
|
192
|
+
return entry.type === type;
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
if (_hasMark) {
|
|
196
|
+
change.removeMark(_hasMark);
|
|
197
|
+
} else {
|
|
198
|
+
var newMark = _slate.Mark.create(type);
|
|
199
|
+
|
|
200
|
+
change.addMark(newMark);
|
|
201
|
+
} // move focus to end of text
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
return change.moveFocusTo(textNode.key, textNode.text.length).moveAnchorTo(textNode.key, textNode.text.length);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
return change.toggleMark(type);
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
renderMark: function renderMark(props) {
|
|
212
|
+
if (props.mark.type === type) {
|
|
213
|
+
var _ref = props.node || {},
|
|
214
|
+
data = _ref.data;
|
|
215
|
+
|
|
216
|
+
var jsonData = (data === null || data === void 0 ? void 0 : data.toJSON()) || {};
|
|
217
|
+
var K = tag || type;
|
|
218
|
+
var additionalStyles = STYLES_MAP[K];
|
|
219
|
+
|
|
220
|
+
if (additionalStyles) {
|
|
221
|
+
if (!jsonData.attributes) {
|
|
222
|
+
jsonData.attributes = {};
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
jsonData.attributes.style = _objectSpread(_objectSpread({}, jsonData.attributes.style), additionalStyles);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
return /*#__PURE__*/_react["default"].createElement(K, jsonData.attributes, props.children);
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
onKeyDown: function onKeyDown(event, change) {
|
|
232
|
+
// Check that the key pressed matches our `key` option.
|
|
233
|
+
if (!event.metaKey || event.key != key) return; // Prevent the default characters from being inserted.
|
|
234
|
+
|
|
235
|
+
event.preventDefault(); // Toggle the mark `type`.
|
|
236
|
+
|
|
237
|
+
change.toggleMark(type);
|
|
238
|
+
return true;
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
var ALL_PLUGINS = ['bold', // 'code',
|
|
244
|
+
'html', 'extraCSSRules', 'italic', 'underline', 'strikethrough', 'bulleted-list', 'numbered-list', 'image', 'math', 'languageCharacters', 'text-align', 'blockquote', 'h3', 'table', 'video', 'audio', 'responseArea', 'redo', 'undo', 'superscript', 'subscript'];
|
|
245
|
+
exports.ALL_PLUGINS = ALL_PLUGINS;
|
|
246
|
+
var DEFAULT_PLUGINS = ALL_PLUGINS.filter(function (plug) {
|
|
247
|
+
return !['responseArea', 'h3', 'blockquote'].includes(plug);
|
|
248
|
+
});
|
|
249
|
+
exports.DEFAULT_PLUGINS = DEFAULT_PLUGINS;
|
|
250
|
+
var EXTENSIONS_LIST = [_GridOn["default"], _FormatBold["default"], _FormatItalic["default"], _FormatStrikethrough["default"], _FormatUnderlined["default"], SuperscriptIcon, SubscriptIcon, _Image["default"], HeadingIcon, _FormatListBulleted["default"], _FormatListNumbered["default"], _FormatQuote["default"]];
|
|
251
|
+
exports.EXTENSIONS_LIST = EXTENSIONS_LIST;
|
|
252
|
+
var ICON_MAP = {
|
|
253
|
+
undo: _Undo["default"],
|
|
254
|
+
redo: _Redo["default"]
|
|
255
|
+
};
|
|
256
|
+
|
|
257
|
+
function UndoRedo(type) {
|
|
258
|
+
var IconToUse = ICON_MAP[type];
|
|
259
|
+
return {
|
|
260
|
+
name: type,
|
|
261
|
+
toolbar: {
|
|
262
|
+
type: type,
|
|
263
|
+
icon: /*#__PURE__*/_react["default"].createElement(IconToUse, null),
|
|
264
|
+
ariaLabel: type === 'undo' ? 'Undo (revert the last action)' : 'Redo (reapply the last undone action)',
|
|
265
|
+
onClick: function onClick(value, onChange) {
|
|
266
|
+
var change = value.change();
|
|
267
|
+
onChange(change[type]());
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
function EnterHandlingPlugin() {
|
|
274
|
+
return {
|
|
275
|
+
name: 'enterHandling',
|
|
276
|
+
onKeyDown: function onKeyDown(event, change) {
|
|
277
|
+
if (_slateHotkeys["default"].isSplitBlock(event) && !_slateDevEnvironment.IS_IOS) {
|
|
278
|
+
if (change.value.isInVoid) {
|
|
279
|
+
return change.collapseToStartOfNextText();
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
change.splitBlock();
|
|
283
|
+
var range = change.value.selection;
|
|
284
|
+
var newBlock = change.value.document.getClosestBlock(range.startKey);
|
|
285
|
+
|
|
286
|
+
if (newBlock.type !== 'paragraph') {
|
|
287
|
+
change.setNodeByKey(newBlock.key, {
|
|
288
|
+
type: 'paragraph'
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
return change;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
return undefined;
|
|
296
|
+
}
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
var buildPlugins = function buildPlugins(activePlugins, customPlugins, opts) {
|
|
301
|
+
log('[buildPlugins] opts: ', opts);
|
|
302
|
+
activePlugins = activePlugins || DEFAULT_PLUGINS;
|
|
303
|
+
|
|
304
|
+
var addIf = function addIf(key, p) {
|
|
305
|
+
return activePlugins.includes(key) && p;
|
|
306
|
+
};
|
|
307
|
+
|
|
308
|
+
var imagePlugin = opts.image && opts.image.onDelete && (0, _image["default"])(opts.image);
|
|
309
|
+
var mathPlugin = opts.math && (0, _math["default"])(opts.math);
|
|
310
|
+
var respAreaPlugin = opts.responseArea && opts.responseArea.type && (0, _respArea["default"])(opts.responseArea, (0, _compact["default"])([mathPlugin]));
|
|
311
|
+
var cssPlugin = !(0, _isEmpty["default"])(opts.extraCSSRules) && (0, _css["default"])(opts.extraCSSRules);
|
|
312
|
+
var languageCharactersPlugins = ((opts === null || opts === void 0 ? void 0 : opts.languageCharacters) || []).map(function (config) {
|
|
313
|
+
return (0, _characters["default"])(_objectSpread(_objectSpread({}, config), {}, {
|
|
314
|
+
keyPadCharacterRef: opts.keyPadCharacterRef,
|
|
315
|
+
setKeypadInteraction: opts.setKeypadInteraction
|
|
316
|
+
}));
|
|
317
|
+
});
|
|
318
|
+
var tablePlugins = [imagePlugin, mathPlugin, respAreaPlugin].concat((0, _toConsumableArray2["default"])(languageCharactersPlugins));
|
|
319
|
+
|
|
320
|
+
if (opts.responseArea && opts.responseArea.type === 'math-templated') {
|
|
321
|
+
tablePlugins.push(respAreaPlugin);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
var builtCustomPlugins = [];
|
|
325
|
+
customPlugins === null || customPlugins === void 0 ? void 0 : customPlugins.forEach(function (customPlugin) {
|
|
326
|
+
var _ref2 = customPlugin || {},
|
|
327
|
+
event = _ref2.event,
|
|
328
|
+
icon = _ref2.icon,
|
|
329
|
+
iconType = _ref2.iconType,
|
|
330
|
+
iconAlt = _ref2.iconAlt;
|
|
331
|
+
|
|
332
|
+
function isValidEventName(eventName) {
|
|
333
|
+
// Check if eventName is a non-empty string
|
|
334
|
+
if (typeof eventName !== 'string' || eventName.length === 0) {
|
|
335
|
+
return false;
|
|
336
|
+
} // Regular expression to match valid event names (only alphanumeric characters and underscore)
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
var regex = /^[a-zA-Z0-9_]+$/; // Check if the eventName matches the regular expression
|
|
340
|
+
|
|
341
|
+
return regex.test(eventName);
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
if (!isValidEventName(event)) {
|
|
345
|
+
console.error("The event name: ".concat(event, " is not a valid event name!"));
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
if (!icon && !iconType && !iconAlt) {
|
|
350
|
+
console.error('Your custom button requires icon, iconType and iconAlt');
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
builtCustomPlugins.push((0, _customPlugin["default"])('custom-plugin', customPlugin));
|
|
355
|
+
});
|
|
356
|
+
return (0, _compact["default"])([addIf('table', (0, _table["default"])(opts.table, (0, _compact["default"])(tablePlugins))), addIf('bold', MarkHotkey({
|
|
357
|
+
key: 'b',
|
|
358
|
+
type: 'bold',
|
|
359
|
+
icon: /*#__PURE__*/_react["default"].createElement(_FormatBold["default"], null),
|
|
360
|
+
tag: 'strong'
|
|
361
|
+
})), // addIf('code', MarkHotkey({ key: '`', type: 'code', icon: <Code /> })),
|
|
362
|
+
addIf('italic', MarkHotkey({
|
|
363
|
+
key: 'i',
|
|
364
|
+
type: 'italic',
|
|
365
|
+
icon: /*#__PURE__*/_react["default"].createElement(_FormatItalic["default"], null),
|
|
366
|
+
tag: 'em'
|
|
367
|
+
})), addIf('strikethrough', MarkHotkey({
|
|
368
|
+
key: '~',
|
|
369
|
+
type: 'strikethrough',
|
|
370
|
+
icon: /*#__PURE__*/_react["default"].createElement(_FormatStrikethrough["default"], null),
|
|
371
|
+
tag: 'del'
|
|
372
|
+
})), addIf('underline', MarkHotkey({
|
|
373
|
+
key: 'u',
|
|
374
|
+
type: 'underline',
|
|
375
|
+
icon: /*#__PURE__*/_react["default"].createElement(_FormatUnderlined["default"], null),
|
|
376
|
+
tag: 'u'
|
|
377
|
+
})), // icon should be modifies accordingly
|
|
378
|
+
addIf('superscript', MarkHotkey({
|
|
379
|
+
type: 'sup',
|
|
380
|
+
icon: /*#__PURE__*/_react["default"].createElement(SuperscriptIcon, null),
|
|
381
|
+
tag: 'sup'
|
|
382
|
+
})), // icon should be modifies accordingly
|
|
383
|
+
addIf('subscript', MarkHotkey({
|
|
384
|
+
type: 'sub',
|
|
385
|
+
icon: /*#__PURE__*/_react["default"].createElement(SubscriptIcon, null),
|
|
386
|
+
tag: 'sub'
|
|
387
|
+
})), addIf('image', imagePlugin), addIf('video', (0, _media["default"])('video', opts.media)), addIf('audio', (0, _media["default"])('audio', opts.media)), addIf('math', mathPlugin)].concat((0, _toConsumableArray2["default"])(languageCharactersPlugins.map(function (plugin) {
|
|
388
|
+
return addIf('languageCharacters', plugin);
|
|
389
|
+
})), [addIf('text-align', (0, _textAlign["default"])(opts.textAlign)), addIf('blockquote', MarkHotkey({
|
|
390
|
+
key: 'q',
|
|
391
|
+
type: 'blockquote',
|
|
392
|
+
icon: /*#__PURE__*/_react["default"].createElement(_FormatQuote["default"], null),
|
|
393
|
+
tag: 'blockquote'
|
|
394
|
+
})), addIf('h3', MarkHotkey({
|
|
395
|
+
key: 'h3',
|
|
396
|
+
type: 'h3',
|
|
397
|
+
icon: /*#__PURE__*/_react["default"].createElement(HeadingIcon, null),
|
|
398
|
+
tag: 'h3'
|
|
399
|
+
})), addIf('bulleted-list', (0, _list["default"])({
|
|
400
|
+
key: 'l',
|
|
401
|
+
type: 'ul_list',
|
|
402
|
+
icon: /*#__PURE__*/_react["default"].createElement(_FormatListBulleted["default"], null)
|
|
403
|
+
})), addIf('numbered-list', (0, _list["default"])({
|
|
404
|
+
key: 'n',
|
|
405
|
+
type: 'ol_list',
|
|
406
|
+
icon: /*#__PURE__*/_react["default"].createElement(_FormatListNumbered["default"], null)
|
|
407
|
+
})), addIf('undo', UndoRedo('undo')), addIf('redo', UndoRedo('redo')), (0, _toolbar["default"])(opts.toolbar), (0, _slateSoftBreak["default"])({
|
|
408
|
+
shift: true
|
|
409
|
+
})], builtCustomPlugins, [addIf('responseArea', respAreaPlugin), cssPlugin, addIf('html', (0, _html["default"])(opts.html)), EnterHandlingPlugin(), (0, _rendering["default"])()]));
|
|
410
|
+
};
|
|
411
|
+
|
|
412
|
+
exports.buildPlugins = buildPlugins;
|
|
413
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wbHVnaW5zL2luZGV4LmpzeCJdLCJuYW1lcyI6WyJsb2ciLCJTdXBlcnNjcmlwdEljb24iLCJTdWJzY3JpcHRJY29uIiwiSGVhZGluZ0ljb24iLCJ3aWR0aCIsImhlaWdodCIsIlNUWUxFU19NQVAiLCJoMyIsImZvbnRTaXplIiwiZm9udFdlaWdodCIsImJsb2NrcXVvdGUiLCJiYWNrZ3JvdW5kIiwiYm9yZGVyTGVmdCIsIm1hcmdpbiIsInBhZGRpbmciLCJNYXJrSG90a2V5Iiwib3B0aW9ucyIsInR5cGUiLCJrZXkiLCJpY29uIiwidGFnIiwibmFtZSIsInRvb2xiYXIiLCJpc01hcmsiLCJvblRvZ2dsZSIsImNoYW5nZSIsInNlbGVjdGlvbiIsInZhbHVlIiwiaW5jbHVkZXMiLCJ0ZXh0cyIsImRvY3VtZW50IiwiZ2V0VGV4dHNBdFJhbmdlQXNBcnJheSIsIm9ubHlPbmVUZXh0IiwibGVuZ3RoIiwiaGFzTWFyayIsInNhbWVNYXJrIiwiZm9yRWFjaCIsInQiLCJtYXJrcyIsImdldE1hcmtzQXNBcnJheSIsIm1hcmtJc1RoZXJlIiwiZmluZCIsIm0iLCJzaG91bGRDb250aW51ZSIsInN0YXJ0S2V5IiwiZW5kS2V5IiwiYW5jaG9yT2Zmc2V0IiwiZm9jdXNPZmZzZXQiLCJ0ZXh0Tm9kZSIsImdldE5vZGUiLCJtb3ZlRm9jdXNUbyIsIm1vdmVBbmNob3JUbyIsInRleHQiLCJhY3RpdmVNYXJrcyIsImVudHJ5IiwicmVtb3ZlTWFyayIsIm5ld01hcmsiLCJNYXJrIiwiY3JlYXRlIiwiYWRkTWFyayIsInRvZ2dsZU1hcmsiLCJyZW5kZXJNYXJrIiwicHJvcHMiLCJtYXJrIiwibm9kZSIsImRhdGEiLCJqc29uRGF0YSIsInRvSlNPTiIsIksiLCJhZGRpdGlvbmFsU3R5bGVzIiwiYXR0cmlidXRlcyIsInN0eWxlIiwiY2hpbGRyZW4iLCJvbktleURvd24iLCJldmVudCIsIm1ldGFLZXkiLCJwcmV2ZW50RGVmYXVsdCIsIkFMTF9QTFVHSU5TIiwiREVGQVVMVF9QTFVHSU5TIiwiZmlsdGVyIiwicGx1ZyIsIkVYVEVOU0lPTlNfTElTVCIsIkdyaWRPbiIsIkJvbGQiLCJJdGFsaWMiLCJTdHJpa2V0aHJvdWdoIiwiVW5kZXJsaW5lIiwiSW1hZ2UiLCJCdWxsZXRlZExpc3RJY29uIiwiTnVtYmVyZWRMaXN0SWNvbiIsIkZvcm1hdFF1b3RlIiwiSUNPTl9NQVAiLCJ1bmRvIiwiVW5kbyIsInJlZG8iLCJSZWRvIiwiVW5kb1JlZG8iLCJJY29uVG9Vc2UiLCJhcmlhTGFiZWwiLCJvbkNsaWNrIiwib25DaGFuZ2UiLCJFbnRlckhhbmRsaW5nUGx1Z2luIiwiSG90a2V5cyIsImlzU3BsaXRCbG9jayIsIklTX0lPUyIsImlzSW5Wb2lkIiwiY29sbGFwc2VUb1N0YXJ0T2ZOZXh0VGV4dCIsInNwbGl0QmxvY2siLCJyYW5nZSIsIm5ld0Jsb2NrIiwiZ2V0Q2xvc2VzdEJsb2NrIiwic2V0Tm9kZUJ5S2V5IiwidW5kZWZpbmVkIiwiYnVpbGRQbHVnaW5zIiwiYWN0aXZlUGx1Z2lucyIsImN1c3RvbVBsdWdpbnMiLCJvcHRzIiwiYWRkSWYiLCJwIiwiaW1hZ2VQbHVnaW4iLCJpbWFnZSIsIm9uRGVsZXRlIiwibWF0aFBsdWdpbiIsIm1hdGgiLCJyZXNwQXJlYVBsdWdpbiIsInJlc3BvbnNlQXJlYSIsImNzc1BsdWdpbiIsImV4dHJhQ1NTUnVsZXMiLCJsYW5ndWFnZUNoYXJhY3RlcnNQbHVnaW5zIiwibGFuZ3VhZ2VDaGFyYWN0ZXJzIiwibWFwIiwiY29uZmlnIiwia2V5UGFkQ2hhcmFjdGVyUmVmIiwic2V0S2V5cGFkSW50ZXJhY3Rpb24iLCJ0YWJsZVBsdWdpbnMiLCJwdXNoIiwiYnVpbHRDdXN0b21QbHVnaW5zIiwiY3VzdG9tUGx1Z2luIiwiaWNvblR5cGUiLCJpY29uQWx0IiwiaXNWYWxpZEV2ZW50TmFtZSIsImV2ZW50TmFtZSIsInJlZ2V4IiwidGVzdCIsImNvbnNvbGUiLCJlcnJvciIsInRhYmxlIiwibWVkaWEiLCJwbHVnaW4iLCJ0ZXh0QWxpZ24iLCJz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c0JBQVdELElBQUksQ0FBQ21DLElBQWhCLENBQVQsQ0FwQ0EsRUFxQ0xsRCxtQkFBbUIsRUFyQ2QsRUFzQ0wsNEJBdENLLEdBQVA7QUF3Q0QsQ0FsR00iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgSG90a2V5cyBmcm9tICdzbGF0ZS1ob3RrZXlzJztcbmltcG9ydCB7IElTX0lPUyB9IGZyb20gJ3NsYXRlLWRldi1lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBNYXJrIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IEJvbGQgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Zvcm1hdEJvbGQnO1xuaW1wb3J0IEZvcm1hdFF1b3RlIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9Gb3JtYXRRdW90ZSc7XG4vL2ltcG9ydCBDb2RlIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9Db2RlJztcbmltcG9ydCBCdWxsZXRlZExpc3RJY29uIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9Gb3JtYXRMaXN0QnVsbGV0ZWQnO1xuaW1wb3J0IE51bWJlcmVkTGlzdEljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Zvcm1hdExpc3ROdW1iZXJlZCc7XG5pbXBvcnQgR3JpZE9uIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9HcmlkT24nO1xuaW1wb3J0IEltYWdlIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9JbWFnZSc7XG5pbXBvcnQgUmVkbyBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvUmVkbyc7XG5pbXBvcnQgVW5kbyBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvVW5kbyc7XG5pbXBvcnQgSW1hZ2VQbHVnaW4gZnJvbSAnLi9pbWFnZSc7XG5pbXBvcnQgTWVkaWFQbHVnaW4gZnJvbSAnLi9tZWRpYSc7XG5pbXBvcnQgQ2hhcmFjdGVyc1BsdWdpbiBmcm9tICcuL2NoYXJhY3RlcnMnO1xuaW1wb3J0IEl0YWxpYyBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRm9ybWF0SXRhbGljJztcbmltcG9ydCBNYXRoUGx1Z2luIGZyb20gJy4vbWF0aCc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFN0cmlrZXRocm91Z2ggZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Zvcm1hdFN0cmlrZXRocm91Z2gnO1xuaW1wb3J0IFRvb2xiYXJQbHVnaW4gZnJvbSAnLi90b29sYmFyJztcbmltcG9ydCBVbmRlcmxpbmUgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Zvcm1hdFVuZGVybGluZWQnO1xuaW1wb3J0IGNvbXBhY3QgZnJvbSAnbG9kYXNoL2NvbXBhY3QnO1xuaW1wb3J0IGlzRW1wdHkgZnJvbSAnbG9kYXNoL2lzRW1wdHknO1xuaW1wb3J0IFNvZnRCcmVha1BsdWdpbiBmcm9tICdzbGF0ZS1zb2Z0LWJyZWFrJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgTGlzdCBmcm9tICcuL2xpc3QnO1xuaW1wb3J0IFRhYmxlUGx1Z2luIGZyb20gJy4vdGFibGUnO1xuaW1wb3J0IFJlc3BBcmVhUGx1Z2luIGZyb20gJy4vcmVzcEFyZWEnO1xuaW1wb3J0IEh0bWxQbHVnaW4gZnJvbSAnLi9odG1sJztcbmltcG9ydCBDU1NQbHVnaW4gZnJvbSAnLi9jc3MnO1xuaW1wb3J0IEN1c3RvbVBsdWdpbiBmcm9tICcuL2N1c3RvbVBsdWdpbic7XG5pbXBvcnQgUmVuZGVyaW5nUGx1Z2luIGZyb20gJy4vcmVuZGVyaW5nJztcbmltcG9ydCBUZXh0QWxpZ24gZnJvbSAnLi90ZXh0QWxpZ24nO1xuXG5jb25zdCBsb2cgPSBkZWJ1ZygnQHBpZS1saWI6ZWRpdGFibGUtaHRtbDpwbHVnaW5zJyk7XG5cbmV4cG9ydCBjb25zdCBTdXBlcnNjcmlwdEljb24gPSAoKSA9PiAoXG4gIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGhlaWdodD1cIjI0cHhcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNHB4XCIgZmlsbD1cIm5vbmVcIj5cbiAgICA8cGF0aFxuICAgICAgZD1cIk0yMiw3aC0ydjFoM3YxaC00VjdjMC0wLjU1LDAuNDUtMSwxLTFoMlY1aC0zVjRoM2MwLjU1LDAsMSwwLjQ1LDEsMXYxQzIzLDYuNTUsMjIuNTUsNywyMiw3eiBNNS44OCwyMGgyLjY2bDMuNC01LjQyaDAuMTIgbDMuNCw1LjQyaDIuNjZsLTQuNjUtNy4yN0wxNy44MSw2aC0yLjY4bC0zLjA3LDQuOTloLTAuMTJMOC44NSw2SDYuMTlsNC4zMiw2LjczTDUuODgsMjB6XCJcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgIC8+XG4gIDwvc3ZnPlxuKTtcblxuZXhwb3J0IGNvbnN0IFN1YnNjcmlwdEljb24gPSAoKSA9PiAoXG4gIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGhlaWdodD1cIjI0cHhcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNHB4XCIgZmlsbD1cIm5vbmVcIj5cbiAgICA8cGF0aFxuICAgICAgZD1cIk0yMiwxOGgtMnYxaDN2MWgtNHYtMmMwLTAuNTUsMC40NS0xLDEtMWgydi0xaC0zdi0xaDNjMC41NSwwLDEsMC40NSwxLDF2MUMyMywxNy41NSwyMi41NSwxOCwyMiwxOHogTTUuODgsMThoMi42NiBsMy40LTUuNDJoMC4xMmwzLjQsNS40MmgyLjY2bC00LjY1LTcuMjdMMTcuODEsNGgtMi42OGwtMy4wNyw0Ljk5aC0wLjEyTDguODUsNEg2LjE5bDQuMzIsNi43M0w1Ljg4LDE4elwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAvPlxuICA8L3N2Zz5cbik7XG5cbmV4cG9ydCBjb25zdCBIZWFkaW5nSWNvbiA9ICgpID0+IChcbiAgPHN2Z1xuICAgIHdpZHRoPVwiMzBcIlxuICAgIGhlaWdodD1cIjI4XCJcbiAgICB2aWV3Qm94PVwiMCAwIDMwIDI4XCJcbiAgICBmaWxsPVwibm9uZVwiXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgc3R5bGU9e3sgd2lkdGg6ICcyMHB4JywgaGVpZ2h0OiAnMThweCcgfX1cbiAgPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTI3IDRWMjRIMjlDMjkuNSAyNCAzMCAyNC41IDMwIDI1VjI3QzMwIDI3LjU2MjUgMjkuNSAyOCAyOSAyOEgxOUMxOC40Mzc1IDI4IDE4IDI3LjU2MjUgMTggMjdWMjVDMTggMjQuNSAxOC40Mzc1IDI0IDE5IDI0SDIxVjE2SDlWMjRIMTFDMTEuNSAyNCAxMiAyNC41IDEyIDI1VjI3QzEyIDI3LjU2MjUgMTEuNSAyOCAxMSAyOEgxQzAuNDM3NSAyOCAwIDI3LjU2MjUgMCAyN1YyNUMwIDI0LjUgMC40Mzc1IDI0IDEgMjRIM1Y0SDFDMC40Mzc1IDQgMCAzLjU2MjUgMCAzVjFDMCAwLjUgMC40Mzc1IDAgMSAwSDExQzExLjUgMCAxMiAwLjUgMTIgMVYzQzEyIDMuNTYyNSAxMS41IDQgMTEgNEg5VjEySDIxVjRIMTlDMTguNDM3NSA0IDE4IDMuNTYyNSAxOCAzVjFDMTggMC41IDE4LjQzNzUgMCAxOSAwSDI5QzI5LjUgMCAzMCAwLjUgMzAgMVYzQzMwIDMuNTYyNSAyOS41IDQgMjkgNEgyN1pcIlxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgLz5cbiAgPC9zdmc+XG4pO1xuY29uc3QgU1RZTEVTX01BUCA9IHtcbiAgaDM6IHtcbiAgICBmb250U2l6ZTogJ2luaGVyaXQnLFxuICAgIGZvbnRXZWlnaHQ6ICdpbmhlcml0JyxcbiAgfSxcbiAgYmxvY2txdW90ZToge1xuICAgIGJhY2tncm91bmQ6ICcjZjlmOWY5JyxcbiAgICBib3JkZXJMZWZ0OiAnNXB4IHNvbGlkICNjY2MnLFxuICAgIG1hcmdpbjogJzEuNWVtIDEwcHgnLFxuICAgIHBhZGRpbmc6ICcuNWVtIDEwcHgnLFxuICB9LFxufTtcblxuZnVuY3Rpb24gTWFya0hvdGtleShvcHRpb25zKSB7XG4gIGNvbnN0IHsgdHlwZSwga2V5LCBpY29uLCB0YWcgfSA9IG9wdGlvbnM7XG5cbiAgLy8gUmV0dXJuIG91ciBcInBsdWdpblwiIG9iamVjdCwgY29udGFpbmluZyB0aGUgYG9uS2V5RG93bmAgaGFuZGxlci5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiB0eXBlLFxuICAgIHRvb2xiYXI6IHtcbiAgICAgIGlzTWFyazogdHJ1ZSxcbiAgICAgIHR5cGUsXG4gICAgICBpY29uLFxuICAgICAgb25Ub2dnbGU6IChjaGFuZ2UpID0+IHtcbiAgICAgICAgbG9nKCdbb25Ub2dnbGVNYXJrXSB0eXBlOiAnLCB0eXBlKTtcbiAgICAgICAgY29uc3QgeyBzZWxlY3Rpb24gfSA9IGNoYW5nZS52YWx1ZTtcblxuICAgICAgICBpZiAoWydibG9ja3F1b3RlJywgJ2gzJ10uaW5jbHVkZXModHlwZSkpIHtcbiAgICAgICAgICBjb25zdCB0ZXh0cyA9IGNoYW5nZS52YWx1ZS5kb2N1bWVudC5nZXRUZXh0c0F0UmFuZ2VBc0FycmF5KHNlbGVjdGlvbik7XG4gICAgICAgICAgY29uc3Qgb25seU9uZVRleHQgPSB0ZXh0cy5sZW5ndGggPT09IDE7XG4gICAgICAgICAgbGV0IGhhc01hcmsgPSBmYWxzZTtcbiAgICAgICAgICBsZXQgc2FtZU1hcmsgPSB0cnVlO1xuXG4gICAgICAgICAgdGV4dHMuZm9yRWFjaCgodCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWFya3MgPSB0LmdldE1hcmtzQXNBcnJheSgpO1xuICAgICAgICAgICAgY29uc3QgbWFya0lzVGhlcmUgPSBtYXJrcy5maW5kKChtKSA9PiBtLnR5cGUgPT09IHR5cGUpO1xuXG4gICAgICAgICAgICBpZiAoIW1hcmtJc1RoZXJlKSB7XG4gICAgICAgICAgICAgIC8vIG5vdCBhbGwgdGV4dHMgaGF2ZSB0aGlzIG1hcmtcbiAgICAgICAgICAgICAgc2FtZU1hcmsgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIGF0IGxlYXN0IG9uZSBtYXJrXG4gICAgICAgICAgICAgIGhhc01hcmsgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3Qgc2hvdWxkQ29udGludWUgPSBvbmx5T25lVGV4dCB8fCBzYW1lTWFyayB8fCAhaGFzTWFyaztcblxuICAgICAgICAgIGlmICghc2hvdWxkQ29udGludWUpIHtcbiAgICAgICAgICAgIHJldHVybiBjaGFuZ2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlbGVjdGlvbi5zdGFydEtleSA9PT0gc2VsZWN0aW9uLmVuZEtleSAmJiBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0ID09PSBzZWxlY3Rpb24uZm9jdXNPZmZzZXQpIHtcbiAgICAgICAgICAgIGNvbnN0IHRleHROb2RlID0gY2hhbmdlLnZhbHVlLmRvY3VtZW50LmdldE5vZGUoc2VsZWN0aW9uLnN0YXJ0S2V5KTtcblxuICAgICAgICAgICAgLy8gc2VsZWN0IHRoZSB3aG9sZSBsaW5lIGlmIHRoZXJlIGlzIG5vIHNlbGVjdGlvblxuICAgICAgICAgICAgY2hhbmdlLm1vdmVGb2N1c1RvKHRleHROb2RlLmtleSwgMCkubW92ZUFuY2hvclRvKHRleHROb2RlLmtleSwgdGV4dE5vZGUudGV4dC5sZW5ndGgpO1xuXG4gICAgICAgICAgICAvLyByZW1vdmUgdG9nZ2xlXG4gICAgICAgICAgICBjb25zdCBoYXNNYXJrID0gY2hhbmdlLnZhbHVlLmFjdGl2ZU1hcmtzLmZpbmQoKGVudHJ5KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBlbnRyeS50eXBlID09PSB0eXBlO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChoYXNNYXJrKSB7XG4gICAgICAgICAgICAgIGNoYW5nZS5yZW1vdmVNYXJrKGhhc01hcmspO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3TWFyayA9IE1hcmsuY3JlYXRlKHR5cGUpO1xuXG4gICAgICAgICAgICAgIGNoYW5nZS5hZGRNYXJrKG5ld01hcmspO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBtb3ZlIGZvY3VzIHRvIGVuZCBvZiB0ZXh0XG4gICAgICAgICAgICByZXR1cm4gY2hhbmdlXG4gICAgICAgICAgICAgIC5tb3ZlRm9jdXNUbyh0ZXh0Tm9kZS5rZXksIHRleHROb2RlLnRleHQubGVuZ3RoKVxuICAgICAgICAgICAgICAubW92ZUFuY2hvclRvKHRleHROb2RlLmtleSwgdGV4dE5vZGUudGV4dC5sZW5ndGgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjaGFuZ2UudG9nZ2xlTWFyayh0eXBlKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICByZW5kZXJNYXJrKHByb3BzKSB7XG4gICAgICBpZiAocHJvcHMubWFyay50eXBlID09PSB0eXBlKSB7XG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcHJvcHMubm9kZSB8fCB7fTtcbiAgICAgICAgY29uc3QganNvbkRhdGEgPSBkYXRhPy50b0pTT04oKSB8fCB7fTtcbiAgICAgICAgY29uc3QgSyA9IHRhZyB8fCB0eXBlO1xuICAgICAgICBjb25zdCBhZGRpdGlvbmFsU3R5bGVzID0gU1RZTEVTX01BUFtLXTtcblxuICAgICAgICBpZiAoYWRkaXRpb25hbFN0eWxlcykge1xuICAgICAgICAgIGlmICghanNvbkRhdGEuYXR0cmlidXRlcykge1xuICAgICAgICAgICAganNvbkRhdGEuYXR0cmlidXRlcyA9IHt9O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGpzb25EYXRhLmF0dHJpYnV0ZXMuc3R5bGUgPSB7XG4gICAgICAgICAgICAuLi5qc29uRGF0YS5hdHRyaWJ1dGVzLnN0eWxlLFxuICAgICAgICAgICAgLi4uYWRkaXRpb25hbFN0eWxlcyxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDxLIHsuLi5qc29uRGF0YS5hdHRyaWJ1dGVzfT57cHJvcHMuY2hpbGRyZW59PC9LPjtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uS2V5RG93bihldmVudCwgY2hhbmdlKSB7XG4gICAgICAvLyBDaGVjayB0aGF0IHRoZSBrZXkgcHJlc3NlZCBtYXRjaGVzIG91ciBga2V5YCBvcHRpb24uXG4gICAgICBpZiAoIWV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQua2V5ICE9IGtleSkgcmV0dXJuO1xuXG4gICAgICAvLyBQcmV2ZW50IHRoZSBkZWZhdWx0IGNoYXJhY3RlcnMgZnJvbSBiZWluZyBpbnNlcnRlZC5cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgIC8vIFRvZ2dsZSB0aGUgbWFyayBgdHlwZWAuXG4gICAgICBjaGFuZ2UudG9nZ2xlTWFyayh0eXBlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBBTExfUExVR0lOUyA9IFtcbiAgJ2JvbGQnLFxuICAvLyAnY29kZScsXG4gICdodG1sJyxcbiAgJ2V4dHJhQ1NTUnVsZXMnLFxuICAnaXRhbGljJyxcbiAgJ3VuZGVybGluZScsXG4gICdzdHJpa2V0aHJvdWdoJyxcbiAgJ2J1bGxldGVkLWxpc3QnLFxuICAnbnVtYmVyZWQtbGlzdCcsXG4gICdpbWFnZScsXG4gICdtYXRoJyxcbiAgJ2xhbmd1YWdlQ2hhcmFjdGVycycsXG4gICd0ZXh0LWFsaWduJyxcbiAgJ2Jsb2NrcXVvdGUnLFxuICAnaDMnLFxuICAndGFibGUnLFxuICAndmlkZW8nLFxuICAnYXVkaW8nLFxuICAncmVzcG9uc2VBcmVhJyxcbiAgJ3JlZG8nLFxuICAndW5kbycsXG4gICdzdXBlcnNjcmlwdCcsXG4gICdzdWJzY3JpcHQnLFxuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfUExVR0lOUyA9IEFMTF9QTFVHSU5TLmZpbHRlcigocGx1ZykgPT4gIVsncmVzcG9uc2VBcmVhJywgJ2gzJywgJ2Jsb2NrcXVvdGUnXS5pbmNsdWRlcyhwbHVnKSk7XG5cbmV4cG9ydCBjb25zdCBFWFRFTlNJT05TX0xJU1QgPSBbXG4gIEdyaWRPbixcbiAgQm9sZCxcbiAgSXRhbGljLFxuICBTdHJpa2V0aHJvdWdoLFxuICBVbmRlcmxpbmUsXG4gIFN1cGVyc2NyaXB0SWNvbixcbiAgU3Vic2NyaXB0SWNvbixcbiAgSW1hZ2UsXG4gIEhlYWRpbmdJY29uLFxuICBCdWxsZXRlZExpc3RJY29uLFxuICBOdW1iZXJlZExpc3RJY29uLFxuICBGb3JtYXRRdW90ZSxcbl07XG5cbmNvbnN0IElDT05fTUFQID0ge1xuICB1bmRvOiBVbmRvLFxuICByZWRvOiBSZWRvLFxufTtcbmZ1bmN0aW9uIFVuZG9SZWRvKHR5cGUpIHtcbiAgY29uc3QgSWNvblRvVXNlID0gSUNPTl9NQVBbdHlwZV07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiB0eXBlLFxuICAgIHRvb2xiYXI6IHtcbiAgICAgIHR5cGUsXG4gICAgICBpY29uOiA8SWNvblRvVXNlIC8+LFxuICAgICAgYXJpYUxhYmVsOiB0eXBlID09PSAndW5kbycgPyAnVW5kbyAocmV2ZXJ0IHRoZSBsYXN0IGFjdGlvbiknIDogJ1JlZG8gKHJlYXBwbHkgdGhlIGxhc3QgdW5kb25lIGFjdGlvbiknLFxuICAgICAgb25DbGljazogKHZhbHVlLCBvbkNoYW5nZSkgPT4ge1xuICAgICAgICBjb25zdCBjaGFuZ2UgPSB2YWx1ZS5jaGFuZ2UoKTtcblxuICAgICAgICBvbkNoYW5nZShjaGFuZ2VbdHlwZV0oKSk7XG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIEVudGVySGFuZGxpbmdQbHVnaW4oKSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2VudGVySGFuZGxpbmcnLFxuICAgIG9uS2V5RG93bjogKGV2ZW50LCBjaGFuZ2UpID0+IHtcbiAgICAgIGlmIChIb3RrZXlzLmlzU3BsaXRCbG9jayhldmVudCkgJiYgIUlTX0lPUykge1xuICAgICAgICBpZiAoY2hhbmdlLnZhbHVlLmlzSW5Wb2lkKSB7XG4gICAgICAgICAgcmV0dXJuIGNoYW5nZS5jb2xsYXBzZVRvU3RhcnRPZk5leHRUZXh0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBjaGFuZ2Uuc3BsaXRCbG9jaygpO1xuXG4gICAgICAgIGNvbnN0IHJhbmdlID0gY2hhbmdlLnZhbHVlLnNlbGVjdGlvbjtcbiAgICAgICAgY29uc3QgbmV3QmxvY2sgPSBjaGFuZ2UudmFsdWUuZG9jdW1lbnQuZ2V0Q2xvc2VzdEJsb2NrKHJhbmdlLnN0YXJ0S2V5KTtcblxuICAgICAgICBpZiAobmV3QmxvY2sudHlwZSAhPT0gJ3BhcmFncmFwaCcpIHtcbiAgICAgICAgICBjaGFuZ2Uuc2V0Tm9kZUJ5S2V5KG5ld0Jsb2NrLmtleSwge1xuICAgICAgICAgICAgdHlwZTogJ3BhcmFncmFwaCcsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2hhbmdlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBidWlsZFBsdWdpbnMgPSAoYWN0aXZlUGx1Z2lucywgY3VzdG9tUGx1Z2lucywgb3B0cykgPT4ge1xuICBsb2coJ1tidWlsZFBsdWdpbnNdIG9wdHM6ICcsIG9wdHMpO1xuXG4gIGFjdGl2ZVBsdWdpbnMgPSBhY3RpdmVQbHVnaW5zIHx8IERFRkFVTFRfUExVR0lOUztcblxuICBjb25zdCBhZGRJZiA9IChrZXksIHApID0+IGFjdGl2ZVBsdWdpbnMuaW5jbHVkZXMoa2V5KSAmJiBwO1xuXG4gIGNvbnN0IGltYWdlUGx1Z2luID0gb3B0cy5pbWFnZSAmJiBvcHRzLmltYWdlLm9uRGVsZXRlICYmIEltYWdlUGx1Z2luKG9wdHMuaW1hZ2UpO1xuICBjb25zdCBtYXRoUGx1Z2luID0gb3B0cy5tYXRoICYmIE1hdGhQbHVnaW4ob3B0cy5tYXRoKTtcbiAgY29uc3QgcmVzcEFyZWFQbHVnaW4gPVxuICAgIG9wdHMucmVzcG9uc2VBcmVhICYmIG9wdHMucmVzcG9uc2VBcmVhLnR5cGUgJiYgUmVzcEFyZWFQbHVnaW4ob3B0cy5yZXNwb25zZUFyZWEsIGNvbXBhY3QoW21hdGhQbHVnaW5dKSk7XG4gIGNvbnN0IGNzc1BsdWdpbiA9ICFpc0VtcHR5KG9wdHMuZXh0cmFDU1NSdWxlcykgJiYgQ1NTUGx1Z2luKG9wdHMuZXh0cmFDU1NSdWxlcyk7XG5cbiAgY29uc3QgbGFuZ3VhZ2VDaGFyYWN0ZXJzUGx1Z2lucyA9IChvcHRzPy5sYW5ndWFnZUNoYXJhY3RlcnMgfHwgW10pLm1hcCgoY29uZmlnKSA9PlxuICAgIENoYXJhY3RlcnNQbHVnaW4oe1xuICAgICAgLi4uY29uZmlnLFxuICAgICAga2V5UGFkQ2hhcmFjdGVyUmVmOiBvcHRzLmtleVBhZENoYXJhY3RlclJlZixcbiAgICAgIHNldEtleXBhZEludGVyYWN0aW9uOiBvcHRzLnNldEtleXBhZEludGVyYWN0aW9uLFxuICAgIH0pLFxuICApO1xuXG4gIGNvbnN0IHRhYmxlUGx1Z2lucyA9IFtpbWFnZVBsdWdpbiwgbWF0aFBsdWdpbiwgcmVzcEFyZWFQbHVnaW4sIC4uLmxhbmd1YWdlQ2hhcmFjdGVyc1BsdWdpbnNdO1xuXG4gIGlmIChvcHRzLnJlc3BvbnNlQXJlYSAmJiBvcHRzLnJlc3BvbnNlQXJlYS50eXBlID09PSAnbWF0aC10ZW1wbGF0ZWQnKSB7XG4gICAgdGFibGVQbHVnaW5zLnB1c2gocmVzcEFyZWFQbHVnaW4pO1xuICB9XG5cbiAgbGV0IGJ1aWx0Q3VzdG9tUGx1Z2lucyA9IFtdO1xuXG4gIGN1c3RvbVBsdWdpbnM/LmZvckVhY2goKGN1c3RvbVBsdWdpbikgPT4ge1xuICAgIGNvbnN0IHsgZXZlbnQsIGljb24sIGljb25UeXBlLCBpY29uQWx0IH0gPSBjdXN0b21QbHVnaW4gfHwge307XG5cbiAgICBmdW5jdGlvbiBpc1ZhbGlkRXZlbnROYW1lKGV2ZW50TmFtZSkge1xuICAgICAgLy8gQ2hlY2sgaWYgZXZlbnROYW1lIGlzIGEgbm9uLWVtcHR5IHN0cmluZ1xuICAgICAgaWYgKHR5cGVvZiBldmVudE5hbWUgIT09ICdzdHJpbmcnIHx8IGV2ZW50TmFtZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvLyBSZWd1bGFyIGV4cHJlc3Npb24gdG8gbWF0Y2ggdmFsaWQgZXZlbnQgbmFtZXMgKG9ubHkgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIHVuZGVyc2NvcmUpXG4gICAgICBjb25zdCByZWdleCA9IC9eW2EtekEtWjAtOV9dKyQvO1xuXG4gICAgICAvLyBDaGVjayBpZiB0aGUgZXZlbnROYW1lIG1hdGNoZXMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvblxuICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QoZXZlbnROYW1lKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzVmFsaWRFdmVudE5hbWUoZXZlbnQpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBUaGUgZXZlbnQgbmFtZTogJHtldmVudH0gaXMgbm90IGEgdmFsaWQgZXZlbnQgbmFtZSFgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWljb24gJiYgIWljb25UeXBlICYmICFpY29uQWx0KSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdZb3VyIGN1c3RvbSBidXR0b24gcmVxdWlyZXMgaWNvbiwgaWNvblR5cGUgYW5kIGljb25BbHQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBidWlsdEN1c3RvbVBsdWdpbnMucHVzaChDdXN0b21QbHVnaW4oJ2N1c3RvbS1wbHVnaW4nLCBjdXN0b21QbHVnaW4pKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbXBhY3QoW1xuICAgIGFkZElmKCd0YWJsZScsIFRhYmxlUGx1Z2luKG9wdHMudGFibGUsIGNvbXBhY3QodGFibGVQbHVnaW5zKSkpLFxuICAgIGFkZElmKCdib2xkJywgTWFya0hvdGtleSh7IGtleTogJ2InLCB0eXBlOiAnYm9sZCcsIGljb246IDxCb2xkIC8+LCB0YWc6ICdzdHJvbmcnIH0pKSxcbiAgICAvLyBhZGRJZignY29kZScsIE1hcmtIb3RrZXkoeyBrZXk6ICdgJywgdHlwZTogJ2NvZGUnLCBpY29uOiA8Q29kZSAvPiB9KSksXG4gICAgYWRkSWYoJ2l0YWxpYycsIE1hcmtIb3RrZXkoeyBrZXk6ICdpJywgdHlwZTogJ2l0YWxpYycsIGljb246IDxJdGFsaWMgLz4sIHRhZzogJ2VtJyB9KSksXG4gICAgYWRkSWYoXG4gICAgICAnc3RyaWtldGhyb3VnaCcsXG4gICAgICBNYXJrSG90a2V5KHtcbiAgICAgICAga2V5OiAnficsXG4gICAgICAgIHR5cGU6ICdzdHJpa2V0aHJvdWdoJyxcbiAgICAgICAgaWNvbjogPFN0cmlrZXRocm91Z2ggLz4sXG4gICAgICAgIHRhZzogJ2RlbCcsXG4gICAgICB9KSxcbiAgICApLFxuICAgIGFkZElmKCd1bmRlcmxpbmUnLCBNYXJrSG90a2V5KHsga2V5OiAndScsIHR5cGU6ICd1bmRlcmxpbmUnLCBpY29uOiA8VW5kZXJsaW5lIC8+LCB0YWc6ICd1JyB9KSksXG4gICAgLy8gaWNvbiBzaG91bGQgYmUgbW9kaWZpZXMgYWNjb3JkaW5nbHlcbiAgICBhZGRJZignc3VwZXJzY3JpcHQnLCBNYXJrSG90a2V5KHsgdHlwZTogJ3N1cCcsIGljb246IDxTdXBlcnNjcmlwdEljb24gLz4sIHRhZzogJ3N1cCcgfSkpLFxuICAgIC8vIGljb24gc2hvdWxkIGJlIG1vZGlmaWVzIGFjY29yZGluZ2x5XG4gICAgYWRkSWYoJ3N1YnNjcmlwdCcsIE1hcmtIb3RrZXkoeyB0eXBlOiAnc3ViJywgaWNvbjogPFN1YnNjcmlwdEljb24gLz4sIHRhZzogJ3N1YicgfSkpLFxuICAgIGFkZElmKCdpbWFnZScsIGltYWdlUGx1Z2luKSxcbiAgICBhZGRJZigndmlkZW8nLCBNZWRpYVBsdWdpbigndmlkZW8nLCBvcHRzLm1lZGlhKSksXG4gICAgYWRkSWYoJ2F1ZGlvJywgTWVkaWFQbHVnaW4oJ2F1ZGlvJywgb3B0cy5tZWRpYSkpLFxuICAgIGFkZElmKCdtYXRoJywgbWF0aFBsdWdpbiksXG4gICAgLi4ubGFuZ3VhZ2VDaGFyYWN0ZXJzUGx1Z2lucy5tYXAoKHBsdWdpbikgPT4gYWRkSWYoJ2xhbmd1YWdlQ2hhcmFjdGVycycsIHBsdWdpbikpLFxuICAgIGFkZElmKCd0ZXh0LWFsaWduJywgVGV4dEFsaWduKG9wdHMudGV4dEFsaWduKSksXG4gICAgYWRkSWYoJ2Jsb2NrcXVvdGUnLCBNYXJrSG90a2V5KHsga2V5OiAncScsIHR5cGU6ICdibG9ja3F1b3RlJywgaWNvbjogPEZvcm1hdFF1b3RlIC8+LCB0YWc6ICdibG9ja3F1b3RlJyB9KSksXG4gICAgYWRkSWYoJ2gzJywgTWFya0hvdGtleSh7IGtleTogJ2gzJywgdHlwZTogJ2gzJywgaWNvbjogPEhlYWRpbmdJY29uIC8+LCB0YWc6ICdoMycgfSkpLFxuICAgIGFkZElmKCdidWxsZXRlZC1saXN0JywgTGlzdCh7IGtleTogJ2wnLCB0eXBlOiAndWxfbGlzdCcsIGljb246IDxCdWxsZXRlZExpc3RJY29uIC8+IH0pKSxcbiAgICBhZGRJZignbnVtYmVyZWQtbGlzdCcsIExpc3QoeyBrZXk6ICduJywgdHlwZTogJ29sX2xpc3QnLCBpY29uOiA8TnVtYmVyZWRMaXN0SWNvbiAvPiB9KSksXG4gICAgYWRkSWYoJ3VuZG8nLCBVbmRvUmVkbygndW5kbycpKSxcbiAgICBhZGRJZigncmVkbycsIFVuZG9SZWRvKCdyZWRvJykpLFxuICAgIFRvb2xiYXJQbHVnaW4ob3B0cy50b29sYmFyKSxcbiAgICBTb2Z0QnJlYWtQbHVnaW4oeyBzaGlmdDogdHJ1ZSB9KSxcbiAgICAuLi5idWlsdEN1c3RvbVBsdWdpbnMsXG4gICAgYWRkSWYoJ3Jlc3BvbnNlQXJlYScsIHJlc3BBcmVhUGx1Z2luKSxcbiAgICBjc3NQbHVnaW4sXG4gICAgYWRkSWYoJ2h0bWwnLCBIdG1sUGx1Z2luKG9wdHMuaHRtbCkpLFxuICAgIEVudGVySGFuZGxpbmdQbHVnaW4oKSxcbiAgICBSZW5kZXJpbmdQbHVnaW4oKSxcbiAgXSk7XG59O1xuIl19
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
|
|
9
|
+
var _index = _interopRequireWildcard(require("../index"));
|
|
10
|
+
|
|
11
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
12
|
+
|
|
13
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
14
|
+
|
|
15
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
16
|
+
|
|
17
|
+
var log = (0, _debug["default"])('@pie-lib:editable-html:test:plugins:list');
|
|
18
|
+
describe('ListPlugin', function () {
|
|
19
|
+
var next;
|
|
20
|
+
describe('deserialize', function () {
|
|
21
|
+
next = jest.fn();
|
|
22
|
+
|
|
23
|
+
var assertDeserialize = function assertDeserialize(tagName, expectedType) {
|
|
24
|
+
it("should deserialize ".concat(tagName, " to ").concat(expectedType), function () {
|
|
25
|
+
var out = _index.serialization.deserialize({
|
|
26
|
+
tagName: tagName,
|
|
27
|
+
children: [],
|
|
28
|
+
childNodes: []
|
|
29
|
+
}, next);
|
|
30
|
+
|
|
31
|
+
expect(out).toMatchObject({
|
|
32
|
+
object: 'block',
|
|
33
|
+
type: expectedType
|
|
34
|
+
});
|
|
35
|
+
expect(next).toHaveBeenCalledWith([]);
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
assertDeserialize('ul', 'ul_list');
|
|
40
|
+
assertDeserialize('ol', 'ol_list');
|
|
41
|
+
assertDeserialize('li', 'list_item');
|
|
42
|
+
});
|
|
43
|
+
describe('serialize', function () {
|
|
44
|
+
var assertSerialize = function assertSerialize(type, expectedType) {
|
|
45
|
+
it("should serialize ".concat(type, " to ").concat(expectedType), function () {
|
|
46
|
+
var out = _index.serialization.serialize({
|
|
47
|
+
object: 'block',
|
|
48
|
+
type: type
|
|
49
|
+
}, {});
|
|
50
|
+
|
|
51
|
+
log('out: ', out);
|
|
52
|
+
expect(out.type).toMatch(expectedType);
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
assertSerialize('ul_list', 'ul');
|
|
57
|
+
assertSerialize('ol_list', 'ol');
|
|
58
|
+
assertSerialize('list_item', 'li');
|
|
59
|
+
});
|
|
60
|
+
describe('renderNode', function () {
|
|
61
|
+
var plugin = (0, _index["default"])({});
|
|
62
|
+
|
|
63
|
+
var assertRenderNode = function assertRenderNode(type, expectedType) {
|
|
64
|
+
it("should renderNode ".concat(type, " to ").concat(expectedType), function () {
|
|
65
|
+
var out = plugin.renderNode({
|
|
66
|
+
node: {
|
|
67
|
+
type: type
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
expect(out.type).toMatch(expectedType);
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
assertRenderNode('ul_list', 'ul');
|
|
75
|
+
assertRenderNode('ol_list', 'ol');
|
|
76
|
+
assertRenderNode('list_item', 'li');
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wbHVnaW5zL2xpc3QvX190ZXN0c19fL2luZGV4LnRlc3QuanMiXSwibmFtZXMiOlsibG9nIiwiZGVzY3JpYmUiLCJuZXh0IiwiamVzdCIsImZuIiwiYXNzZXJ0RGVzZXJpYWxpemUiLCJ0YWdOYW1lIiwiZXhwZWN0ZWRUeXBlIiwiaXQiLCJvdXQiLCJzZXJpYWxpemF0aW9uIiwiZGVzZXJpYWxpemUiLCJjaGlsZHJlbiIsImNoaWxkTm9kZXMiLCJleHBlY3QiLCJ0b01hdGNoT2JqZWN0Iiwib2JqZWN0IiwidHlwZSIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwiYXNzZXJ0U2VyaWFsaXplIiwic2VyaWFsaXplIiwidG9NYXRjaCIsInBsdWdpbiIsImFzc2VydFJlbmRlck5vZGUiLCJyZW5kZXJOb2RlIiwibm9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBRUE7O0FBQ0E7Ozs7OztBQUVBLElBQU1BLEdBQUcsR0FBRyx1QkFBTSwwQ0FBTixDQUFaO0FBRUFDLFFBQVEsQ0FBQyxZQUFELEVBQWUsWUFBTTtBQUMzQixNQUFJQyxJQUFKO0FBRUFELEVBQUFBLFFBQVEsQ0FBQyxhQUFELEVBQWdCLFlBQU07QUFDNUJDLElBQUFBLElBQUksR0FBR0MsSUFBSSxDQUFDQyxFQUFMLEVBQVA7O0FBRUEsUUFBTUMsaUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFvQixDQUFDQyxPQUFELEVBQVVDLFlBQVYsRUFBMkI7QUFDbkRDLE1BQUFBLEVBQUUsOEJBQXVCRixPQUF2QixpQkFBcUNDLFlBQXJDLEdBQXFELFlBQU07QUFDM0QsWUFBTUUsR0FBRyxHQUFHQyxxQkFBY0MsV0FBZCxDQUEwQjtBQUFFTCxVQUFBQSxPQUFPLEVBQVBBLE9BQUY7QUFBV00sVUFBQUEsUUFBUSxFQUFFLEVBQXJCO0FBQXlCQyxVQUFBQSxVQUFVLEVBQUU7QUFBckMsU0FBMUIsRUFBcUVYLElBQXJFLENBQVo7O0FBRUFZLFFBQUFBLE1BQU0sQ0FBQ0wsR0FBRCxDQUFOLENBQVlNLGFBQVosQ0FBMEI7QUFBRUMsVUFBQUEsTUFBTSxFQUFFLE9BQVY7QUFBbUJDLFVBQUFBLElBQUksRUFBRVY7QUFBekIsU0FBMUI7QUFDQU8sUUFBQUEsTUFBTSxDQUFDWixJQUFELENBQU4sQ0FBYWdCLG9CQUFiLENBQWtDLEVBQWxDO0FBQ0QsT0FMQyxDQUFGO0FBTUQsS0FQRDs7QUFRQWIsSUFBQUEsaUJBQWlCLENBQUMsSUFBRCxFQUFPLFNBQVAsQ0FBakI7QUFDQUEsSUFBQUEsaUJBQWlCLENBQUMsSUFBRCxFQUFPLFNBQVAsQ0FBakI7QUFDQUEsSUFBQUEsaUJBQWlCLENBQUMsSUFBRCxFQUFPLFdBQVAsQ0FBakI7QUFDRCxHQWRPLENBQVI7QUFnQkFKLEVBQUFBLFFBQVEsQ0FBQyxXQUFELEVBQWMsWUFBTTtBQUMxQixRQUFNa0IsZUFBZSxHQUFHLFNBQWxCQSxlQUFrQixDQUFDRixJQUFELEVBQU9WLFlBQVAsRUFBd0I7QUFDOUNDLE1BQUFBLEVBQUUsNEJBQXFCUyxJQUFyQixpQkFBZ0NWLFlBQWhDLEdBQWdELFlBQU07QUFDdEQsWUFBTUUsR0FBRyxHQUFHQyxxQkFBY1UsU0FBZCxDQUF3QjtBQUFFSixVQUFBQSxNQUFNLEVBQUUsT0FBVjtBQUFtQkMsVUFBQUEsSUFBSSxFQUFKQTtBQUFuQixTQUF4QixFQUFtRCxFQUFuRCxDQUFaOztBQUNBakIsUUFBQUEsR0FBRyxDQUFDLE9BQUQsRUFBVVMsR0FBVixDQUFIO0FBQ0FLLFFBQUFBLE1BQU0sQ0FBQ0wsR0FBRyxDQUFDUSxJQUFMLENBQU4sQ0FBaUJJLE9BQWpCLENBQXlCZCxZQUF6QjtBQUNELE9BSkMsQ0FBRjtBQUtELEtBTkQ7O0FBT0FZLElBQUFBLGVBQWUsQ0FBQyxTQUFELEVBQVksSUFBWixDQUFmO0FBQ0FBLElBQUFBLGVBQWUsQ0FBQyxTQUFELEVBQVksSUFBWixDQUFmO0FBQ0FBLElBQUFBLGVBQWUsQ0FBQyxXQUFELEVBQWMsSUFBZCxDQUFmO0FBQ0QsR0FYTyxDQUFSO0FBYUFsQixFQUFBQSxRQUFRLENBQUMsWUFBRCxFQUFlLFlBQU07QUFDM0IsUUFBSXFCLE1BQU0sR0FBRyx1QkFBSyxFQUFMLENBQWI7O0FBRUEsUUFBTUMsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFtQixDQUFDTixJQUFELEVBQU9WLFlBQVAsRUFBd0I7QUFDL0NDLE1BQUFBLEVBQUUsNkJBQXNCUyxJQUF0QixpQkFBaUNWLFlBQWpDLEdBQWlELFlBQU07QUFDdkQsWUFBTUUsR0FBRyxHQUFHYSxNQUFNLENBQUNFLFVBQVAsQ0FBa0I7QUFBRUMsVUFBQUEsSUFBSSxFQUFFO0FBQUVSLFlBQUFBLElBQUksRUFBSkE7QUFBRjtBQUFSLFNBQWxCLENBQVo7QUFDQUgsUUFBQUEsTUFBTSxDQUFDTCxHQUFHLENBQUNRLElBQUwsQ0FBTixDQUFpQkksT0FBakIsQ0FBeUJkLFlBQXpCO0FBQ0QsT0FIQyxDQUFGO0FBSUQsS0FMRDs7QUFPQWdCLElBQUFBLGdCQUFnQixDQUFDLFNBQUQsRUFBWSxJQUFaLENBQWhCO0FBQ0FBLElBQUFBLGdCQUFnQixDQUFDLFNBQUQsRUFBWSxJQUFaLENBQWhCO0FBQ0FBLElBQUFBLGdCQUFnQixDQUFDLFdBQUQsRUFBYyxJQUFkLENBQWhCO0FBQ0QsR0FiTyxDQUFSO0FBY0QsQ0E5Q08sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCBMaXN0LCB7IHNlcmlhbGl6YXRpb24gfSBmcm9tICcuLi9pbmRleCc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuXG5jb25zdCBsb2cgPSBkZWJ1ZygnQHBpZS1saWI6ZWRpdGFibGUtaHRtbDp0ZXN0OnBsdWdpbnM6bGlzdCcpO1xuXG5kZXNjcmliZSgnTGlzdFBsdWdpbicsICgpID0+IHtcbiAgbGV0IG5leHQ7XG5cbiAgZGVzY3JpYmUoJ2Rlc2VyaWFsaXplJywgKCkgPT4ge1xuICAgIG5leHQgPSBqZXN0LmZuKCk7XG5cbiAgICBjb25zdCBhc3NlcnREZXNlcmlhbGl6ZSA9ICh0YWdOYW1lLCBleHBlY3RlZFR5cGUpID0+IHtcbiAgICAgIGl0KGBzaG91bGQgZGVzZXJpYWxpemUgJHt0YWdOYW1lfSB0byAke2V4cGVjdGVkVHlwZX1gLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG91dCA9IHNlcmlhbGl6YXRpb24uZGVzZXJpYWxpemUoeyB0YWdOYW1lLCBjaGlsZHJlbjogW10sIGNoaWxkTm9kZXM6IFtdIH0sIG5leHQpO1xuXG4gICAgICAgIGV4cGVjdChvdXQpLnRvTWF0Y2hPYmplY3QoeyBvYmplY3Q6ICdibG9jaycsIHR5cGU6IGV4cGVjdGVkVHlwZSB9KTtcbiAgICAgICAgZXhwZWN0KG5leHQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFtdKTtcbiAgICAgIH0pO1xuICAgIH07XG4gICAgYXNzZXJ0RGVzZXJpYWxpemUoJ3VsJywgJ3VsX2xpc3QnKTtcbiAgICBhc3NlcnREZXNlcmlhbGl6ZSgnb2wnLCAnb2xfbGlzdCcpO1xuICAgIGFzc2VydERlc2VyaWFsaXplKCdsaScsICdsaXN0X2l0ZW0nKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NlcmlhbGl6ZScsICgpID0+IHtcbiAgICBjb25zdCBhc3NlcnRTZXJpYWxpemUgPSAodHlwZSwgZXhwZWN0ZWRUeXBlKSA9PiB7XG4gICAgICBpdChgc2hvdWxkIHNlcmlhbGl6ZSAke3R5cGV9IHRvICR7ZXhwZWN0ZWRUeXBlfWAsICgpID0+IHtcbiAgICAgICAgY29uc3Qgb3V0ID0gc2VyaWFsaXphdGlvbi5zZXJpYWxpemUoeyBvYmplY3Q6ICdibG9jaycsIHR5cGUgfSwge30pO1xuICAgICAgICBsb2coJ291dDogJywgb3V0KTtcbiAgICAgICAgZXhwZWN0KG91dC50eXBlKS50b01hdGNoKGV4cGVjdGVkVHlwZSk7XG4gICAgICB9KTtcbiAgICB9O1xuICAgIGFzc2VydFNlcmlhbGl6ZSgndWxfbGlzdCcsICd1bCcpO1xuICAgIGFzc2VydFNlcmlhbGl6ZSgnb2xfbGlzdCcsICdvbCcpO1xuICAgIGFzc2VydFNlcmlhbGl6ZSgnbGlzdF9pdGVtJywgJ2xpJyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZW5kZXJOb2RlJywgKCkgPT4ge1xuICAgIGxldCBwbHVnaW4gPSBMaXN0KHt9KTtcblxuICAgIGNvbnN0IGFzc2VydFJlbmRlck5vZGUgPSAodHlwZSwgZXhwZWN0ZWRUeXBlKSA9PiB7XG4gICAgICBpdChgc2hvdWxkIHJlbmRlck5vZGUgJHt0eXBlfSB0byAke2V4cGVjdGVkVHlwZX1gLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG91dCA9IHBsdWdpbi5yZW5kZXJOb2RlKHsgbm9kZTogeyB0eXBlIH0gfSk7XG4gICAgICAgIGV4cGVjdChvdXQudHlwZSkudG9NYXRjaChleHBlY3RlZFR5cGUpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGFzc2VydFJlbmRlck5vZGUoJ3VsX2xpc3QnLCAndWwnKTtcbiAgICBhc3NlcnRSZW5kZXJOb2RlKCdvbF9saXN0JywgJ29sJyk7XG4gICAgYXNzZXJ0UmVuZGVyTm9kZSgnbGlzdF9pdGVtJywgJ2xpJyk7XG4gIH0pO1xufSk7XG4iXX0=
|