@payloadcms/richtext-slate 1.0.0-beta.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/dist/cell/index.d.ts +6 -0
- package/dist/cell/index.d.ts.map +1 -0
- package/dist/cell/index.js +24 -0
- package/dist/data/defaultValue.d.ts +6 -0
- package/dist/data/defaultValue.d.ts.map +1 -0
- package/dist/data/defaultValue.js +21 -0
- package/dist/data/populate.d.ts +20 -0
- package/dist/data/populate.d.ts.map +1 -0
- package/dist/data/populate.js +31 -0
- package/dist/data/recurseNestedFields.d.ts +14 -0
- package/dist/data/recurseNestedFields.d.ts.map +1 -0
- package/dist/data/recurseNestedFields.js +176 -0
- package/dist/data/richTextRelationshipPromise.d.ts +17 -0
- package/dist/data/richTextRelationshipPromise.d.ts.map +1 -0
- package/dist/data/richTextRelationshipPromise.js +117 -0
- package/dist/data/validation.d.ts +4 -0
- package/dist/data/validation.d.ts.map +1 -0
- package/dist/data/validation.js +21 -0
- package/dist/field/RichText.d.ts +16 -0
- package/dist/field/RichText.d.ts.map +1 -0
- package/dist/field/RichText.js +492 -0
- package/dist/field/elements/Button.d.ts +7 -0
- package/dist/field/elements/Button.d.ts.map +1 -0
- package/dist/field/elements/Button.js +102 -0
- package/dist/field/elements/EnabledRelationshipsCondition.d.ts +3 -0
- package/dist/field/elements/EnabledRelationshipsCondition.d.ts.map +1 -0
- package/dist/field/elements/EnabledRelationshipsCondition.js +75 -0
- package/dist/field/elements/ListButton.d.ts +7 -0
- package/dist/field/elements/ListButton.d.ts.map +1 -0
- package/dist/field/elements/ListButton.js +90 -0
- package/dist/field/elements/areAllChildrenElements.d.ts +3 -0
- package/dist/field/elements/areAllChildrenElements.d.ts.map +1 -0
- package/dist/field/elements/areAllChildrenElements.js +16 -0
- package/dist/field/elements/blockquote/index.d.ts +11 -0
- package/dist/field/elements/blockquote/index.d.ts.map +1 -0
- package/dist/field/elements/blockquote/index.js +32 -0
- package/dist/field/elements/getCommonBlock.d.ts +4 -0
- package/dist/field/elements/getCommonBlock.d.ts.map +1 -0
- package/dist/field/elements/getCommonBlock.js +32 -0
- package/dist/field/elements/h1/index.d.ts +10 -0
- package/dist/field/elements/h1/index.d.ts.map +1 -0
- package/dist/field/elements/h1/index.js +28 -0
- package/dist/field/elements/h2/index.d.ts +10 -0
- package/dist/field/elements/h2/index.d.ts.map +1 -0
- package/dist/field/elements/h2/index.js +28 -0
- package/dist/field/elements/h3/index.d.ts +10 -0
- package/dist/field/elements/h3/index.d.ts.map +1 -0
- package/dist/field/elements/h3/index.js +28 -0
- package/dist/field/elements/h4/index.d.ts +10 -0
- package/dist/field/elements/h4/index.d.ts.map +1 -0
- package/dist/field/elements/h4/index.js +28 -0
- package/dist/field/elements/h5/index.d.ts +10 -0
- package/dist/field/elements/h5/index.d.ts.map +1 -0
- package/dist/field/elements/h5/index.js +28 -0
- package/dist/field/elements/h6/index.d.ts +10 -0
- package/dist/field/elements/h6/index.d.ts.map +1 -0
- package/dist/field/elements/h6/index.js +28 -0
- package/dist/field/elements/indent/index.d.ts +10 -0
- package/dist/field/elements/indent/index.d.ts.map +1 -0
- package/dist/field/elements/indent/index.js +239 -0
- package/dist/field/elements/index.d.ts +117 -0
- package/dist/field/elements/index.d.ts.map +1 -0
- package/dist/field/elements/index.js +50 -0
- package/dist/field/elements/injectVoid.d.ts +4 -0
- package/dist/field/elements/injectVoid.d.ts.map +1 -0
- package/dist/field/elements/injectVoid.js +46 -0
- package/dist/field/elements/isActive.d.ts +4 -0
- package/dist/field/elements/isActive.d.ts.map +1 -0
- package/dist/field/elements/isActive.js +22 -0
- package/dist/field/elements/isBlockElement.d.ts +9 -0
- package/dist/field/elements/isBlockElement.d.ts.map +1 -0
- package/dist/field/elements/isBlockElement.js +28 -0
- package/dist/field/elements/isLastSelectedElementEmpty.d.ts +3 -0
- package/dist/field/elements/isLastSelectedElementEmpty.d.ts.map +1 -0
- package/dist/field/elements/isLastSelectedElementEmpty.js +23 -0
- package/dist/field/elements/isListActive.d.ts +4 -0
- package/dist/field/elements/isListActive.d.ts.map +1 -0
- package/dist/field/elements/isListActive.js +28 -0
- package/dist/field/elements/isWithinListItem.d.ts +3 -0
- package/dist/field/elements/isWithinListItem.d.ts.map +1 -0
- package/dist/field/elements/isWithinListItem.js +25 -0
- package/dist/field/elements/li/index.d.ts +6 -0
- package/dist/field/elements/li/index.d.ts.map +1 -0
- package/dist/field/elements/li/index.js +33 -0
- package/dist/field/elements/link/Button/index.d.ts +7 -0
- package/dist/field/elements/link/Button/index.d.ts.map +1 -0
- package/dist/field/elements/link/Button/index.js +175 -0
- package/dist/field/elements/link/Element/index.d.ts +12 -0
- package/dist/field/elements/link/Element/index.d.ts.map +1 -0
- package/dist/field/elements/link/Element/index.js +233 -0
- package/dist/field/elements/link/LinkDrawer/baseFields.d.ts +4 -0
- package/dist/field/elements/link/LinkDrawer/baseFields.d.ts.map +1 -0
- package/dist/field/elements/link/LinkDrawer/baseFields.js +77 -0
- package/dist/field/elements/link/LinkDrawer/index.d.ts +5 -0
- package/dist/field/elements/link/LinkDrawer/index.d.ts.map +1 -0
- package/dist/field/elements/link/LinkDrawer/index.js +97 -0
- package/dist/field/elements/link/LinkDrawer/types.d.ts +9 -0
- package/dist/field/elements/link/LinkDrawer/types.d.ts.map +1 -0
- package/dist/field/elements/link/LinkDrawer/types.js +6 -0
- package/dist/field/elements/link/index.d.ts +17 -0
- package/dist/field/elements/link/index.d.ts.map +1 -0
- package/dist/field/elements/link/index.js +23 -0
- package/dist/field/elements/link/shared.d.ts +2 -0
- package/dist/field/elements/link/shared.d.ts.map +1 -0
- package/dist/field/elements/link/shared.js +13 -0
- package/dist/field/elements/link/utilities.d.ts +16 -0
- package/dist/field/elements/link/utilities.d.ts.map +1 -0
- package/dist/field/elements/link/utilities.js +105 -0
- package/dist/field/elements/listTypes.d.ts +3 -0
- package/dist/field/elements/listTypes.d.ts.map +1 -0
- package/dist/field/elements/listTypes.js +16 -0
- package/dist/field/elements/ol/index.d.ts +11 -0
- package/dist/field/elements/ol/index.d.ts.map +1 -0
- package/dist/field/elements/ol/index.js +32 -0
- package/dist/field/elements/relationship/Button/Fields/index.d.ts +4 -0
- package/dist/field/elements/relationship/Button/Fields/index.d.ts.map +1 -0
- package/dist/field/elements/relationship/Button/Fields/index.js +94 -0
- package/dist/field/elements/relationship/Button/index.d.ts +9 -0
- package/dist/field/elements/relationship/Button/index.d.ts.map +1 -0
- package/dist/field/elements/relationship/Button/index.js +124 -0
- package/dist/field/elements/relationship/Element/index.d.ts +13 -0
- package/dist/field/elements/relationship/Element/index.d.ts.map +1 -0
- package/dist/field/elements/relationship/Element/index.js +212 -0
- package/dist/field/elements/relationship/index.d.ts +16 -0
- package/dist/field/elements/relationship/index.d.ts.map +1 -0
- package/dist/field/elements/relationship/index.js +27 -0
- package/dist/field/elements/relationship/plugin.d.ts +3 -0
- package/dist/field/elements/relationship/plugin.d.ts.map +1 -0
- package/dist/field/elements/relationship/plugin.js +19 -0
- package/dist/field/elements/textAlign/index.d.ts +7 -0
- package/dist/field/elements/textAlign/index.d.ts.map +1 -0
- package/dist/field/elements/textAlign/index.js +37 -0
- package/dist/field/elements/toggle.d.ts +4 -0
- package/dist/field/elements/toggle.d.ts.map +1 -0
- package/dist/field/elements/toggle.js +47 -0
- package/dist/field/elements/toggleList.d.ts +4 -0
- package/dist/field/elements/toggleList.d.ts.map +1 -0
- package/dist/field/elements/toggleList.js +94 -0
- package/dist/field/elements/types.d.ts +11 -0
- package/dist/field/elements/types.d.ts.map +1 -0
- package/dist/field/elements/types.js +6 -0
- package/dist/field/elements/ul/index.d.ts +11 -0
- package/dist/field/elements/ul/index.d.ts.map +1 -0
- package/dist/field/elements/ul/index.js +32 -0
- package/dist/field/elements/unwrapList.d.ts +4 -0
- package/dist/field/elements/unwrapList.d.ts.map +1 -0
- package/dist/field/elements/unwrapList.js +49 -0
- package/dist/field/elements/upload/Button/index.d.ts +9 -0
- package/dist/field/elements/upload/Button/index.d.ts.map +1 -0
- package/dist/field/elements/upload/Button/index.js +121 -0
- package/dist/field/elements/upload/Element/UploadDrawer/index.d.ts +8 -0
- package/dist/field/elements/upload/Element/UploadDrawer/index.d.ts.map +1 -0
- package/dist/field/elements/upload/Element/UploadDrawer/index.js +123 -0
- package/dist/field/elements/upload/Element/index.d.ts +14 -0
- package/dist/field/elements/upload/Element/index.d.ts.map +1 -0
- package/dist/field/elements/upload/Element/index.js +229 -0
- package/dist/field/elements/upload/index.d.ts +11 -0
- package/dist/field/elements/upload/index.d.ts.map +1 -0
- package/dist/field/elements/upload/index.js +27 -0
- package/dist/field/elements/upload/plugin.d.ts +3 -0
- package/dist/field/elements/upload/plugin.d.ts.map +1 -0
- package/dist/field/elements/upload/plugin.js +19 -0
- package/dist/field/enablePlugins.d.ts +3 -0
- package/dist/field/enablePlugins.d.ts.map +1 -0
- package/dist/field/enablePlugins.js +38 -0
- package/dist/field/hotkeys.d.ts +8 -0
- package/dist/field/hotkeys.d.ts.map +1 -0
- package/dist/field/hotkeys.js +18 -0
- package/dist/field/icons/AlignCenter/index.d.ts +4 -0
- package/dist/field/icons/AlignCenter/index.d.ts.map +1 -0
- package/dist/field/icons/AlignCenter/index.js +27 -0
- package/dist/field/icons/AlignLeft/index.d.ts +4 -0
- package/dist/field/icons/AlignLeft/index.d.ts.map +1 -0
- package/dist/field/icons/AlignLeft/index.js +27 -0
- package/dist/field/icons/AlignRight/index.d.ts +4 -0
- package/dist/field/icons/AlignRight/index.d.ts.map +1 -0
- package/dist/field/icons/AlignRight/index.js +27 -0
- package/dist/field/icons/Blockquote/index.d.ts +4 -0
- package/dist/field/icons/Blockquote/index.d.ts.map +1 -0
- package/dist/field/icons/Blockquote/index.js +33 -0
- package/dist/field/icons/Bold/index.d.ts +4 -0
- package/dist/field/icons/Bold/index.d.ts.map +1 -0
- package/dist/field/icons/Bold/index.js +33 -0
- package/dist/field/icons/Code/index.d.ts +4 -0
- package/dist/field/icons/Code/index.d.ts.map +1 -0
- package/dist/field/icons/Code/index.js +30 -0
- package/dist/field/icons/IndentLeft/index.d.ts +5 -0
- package/dist/field/icons/IndentLeft/index.d.ts.map +1 -0
- package/dist/field/icons/IndentLeft/index.js +46 -0
- package/dist/field/icons/IndentRight/index.d.ts +5 -0
- package/dist/field/icons/IndentRight/index.d.ts.map +1 -0
- package/dist/field/icons/IndentRight/index.js +46 -0
- package/dist/field/icons/Italic/index.d.ts +4 -0
- package/dist/field/icons/Italic/index.d.ts.map +1 -0
- package/dist/field/icons/Italic/index.js +33 -0
- package/dist/field/icons/Link/index.d.ts +5 -0
- package/dist/field/icons/Link/index.d.ts.map +1 -0
- package/dist/field/icons/Link/index.js +34 -0
- package/dist/field/icons/OrderedList/index.d.ts +4 -0
- package/dist/field/icons/OrderedList/index.d.ts.map +1 -0
- package/dist/field/icons/OrderedList/index.js +33 -0
- package/dist/field/icons/Relationship/index.d.ts +5 -0
- package/dist/field/icons/Relationship/index.d.ts.map +1 -0
- package/dist/field/icons/Relationship/index.js +40 -0
- package/dist/field/icons/Strikethrough/index.d.ts +4 -0
- package/dist/field/icons/Strikethrough/index.d.ts.map +1 -0
- package/dist/field/icons/Strikethrough/index.js +33 -0
- package/dist/field/icons/Underline/index.d.ts +4 -0
- package/dist/field/icons/Underline/index.d.ts.map +1 -0
- package/dist/field/icons/Underline/index.js +33 -0
- package/dist/field/icons/UnorderedList/index.d.ts +4 -0
- package/dist/field/icons/UnorderedList/index.d.ts.map +1 -0
- package/dist/field/icons/UnorderedList/index.js +33 -0
- package/dist/field/icons/Upload/index.d.ts +5 -0
- package/dist/field/icons/Upload/index.d.ts.map +1 -0
- package/dist/field/icons/Upload/index.js +33 -0
- package/dist/field/icons/headings/H1/index.d.ts +4 -0
- package/dist/field/icons/headings/H1/index.d.ts.map +1 -0
- package/dist/field/icons/headings/H1/index.js +33 -0
- package/dist/field/icons/headings/H2/index.d.ts +4 -0
- package/dist/field/icons/headings/H2/index.d.ts.map +1 -0
- package/dist/field/icons/headings/H2/index.js +33 -0
- package/dist/field/icons/headings/H3/index.d.ts +4 -0
- package/dist/field/icons/headings/H3/index.d.ts.map +1 -0
- package/dist/field/icons/headings/H3/index.js +33 -0
- package/dist/field/icons/headings/H4/index.d.ts +4 -0
- package/dist/field/icons/headings/H4/index.d.ts.map +1 -0
- package/dist/field/icons/headings/H4/index.js +33 -0
- package/dist/field/icons/headings/H5/index.d.ts +4 -0
- package/dist/field/icons/headings/H5/index.d.ts.map +1 -0
- package/dist/field/icons/headings/H5/index.js +33 -0
- package/dist/field/icons/headings/H6/index.d.ts +4 -0
- package/dist/field/icons/headings/H6/index.d.ts.map +1 -0
- package/dist/field/icons/headings/H6/index.js +33 -0
- package/dist/field/icons/headings/index.d.ts +11 -0
- package/dist/field/icons/headings/index.d.ts.map +1 -0
- package/dist/field/icons/headings/index.js +31 -0
- package/dist/field/index.d.ts +5 -0
- package/dist/field/index.d.ts.map +1 -0
- package/dist/field/index.js +61 -0
- package/dist/field/leaves/Button.d.ts +8 -0
- package/dist/field/leaves/Button.d.ts.map +1 -0
- package/dist/field/leaves/Button.js +38 -0
- package/dist/field/leaves/bold/index.d.ts +10 -0
- package/dist/field/leaves/bold/index.d.ts.map +1 -0
- package/dist/field/leaves/bold/index.js +28 -0
- package/dist/field/leaves/code/index.d.ts +10 -0
- package/dist/field/leaves/code/index.d.ts.map +1 -0
- package/dist/field/leaves/code/index.js +28 -0
- package/dist/field/leaves/index.d.ts +40 -0
- package/dist/field/leaves/index.d.ts.map +1 -0
- package/dist/field/leaves/index.js +29 -0
- package/dist/field/leaves/isActive.d.ts +3 -0
- package/dist/field/leaves/isActive.d.ts.map +1 -0
- package/dist/field/leaves/isActive.js +18 -0
- package/dist/field/leaves/italic/index.d.ts +10 -0
- package/dist/field/leaves/italic/index.d.ts.map +1 -0
- package/dist/field/leaves/italic/index.js +28 -0
- package/dist/field/leaves/strikethrough/index.d.ts +10 -0
- package/dist/field/leaves/strikethrough/index.d.ts.map +1 -0
- package/dist/field/leaves/strikethrough/index.js +28 -0
- package/dist/field/leaves/toggle.d.ts +3 -0
- package/dist/field/leaves/toggle.d.ts.map +1 -0
- package/dist/field/leaves/toggle.js +28 -0
- package/dist/field/leaves/underline/index.d.ts +10 -0
- package/dist/field/leaves/underline/index.d.ts.map +1 -0
- package/dist/field/leaves/underline/index.js +28 -0
- package/dist/field/mergeCustomFunctions.d.ts +3 -0
- package/dist/field/mergeCustomFunctions.d.ts.map +1 -0
- package/dist/field/mergeCustomFunctions.js +35 -0
- package/dist/field/plugins/withEnterBreakOut.d.ts +3 -0
- package/dist/field/plugins/withEnterBreakOut.d.ts.map +1 -0
- package/dist/field/plugins/withEnterBreakOut.js +27 -0
- package/dist/field/plugins/withHTML.d.ts +3 -0
- package/dist/field/plugins/withHTML.d.ts.map +1 -0
- package/dist/field/plugins/withHTML.js +132 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/types.d.ts +55 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +15 -0
- package/package.json +40 -0
- package/src/index.ts +49 -0
|
@@ -0,0 +1,492 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return _default;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _ishotkey = /*#__PURE__*/ _interop_require_default(require("is-hotkey"));
|
|
12
|
+
const _forms = require("payload/components/forms");
|
|
13
|
+
const _utilities = require("payload/components/utilities");
|
|
14
|
+
const _utilities1 = require("payload/utilities");
|
|
15
|
+
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
|
16
|
+
const _reacti18next = require("react-i18next");
|
|
17
|
+
const _slate = require("slate");
|
|
18
|
+
const _slatehistory = require("slate-history");
|
|
19
|
+
const _slatereact = require("slate-react");
|
|
20
|
+
const _defaultValue = require("../data/defaultValue");
|
|
21
|
+
const _validation = require("../data/validation");
|
|
22
|
+
const _elements = /*#__PURE__*/ _interop_require_default(require("./elements"));
|
|
23
|
+
const _listTypes = /*#__PURE__*/ _interop_require_default(require("./elements/listTypes"));
|
|
24
|
+
const _enablePlugins = /*#__PURE__*/ _interop_require_default(require("./enablePlugins"));
|
|
25
|
+
const _hotkeys = /*#__PURE__*/ _interop_require_default(require("./hotkeys"));
|
|
26
|
+
require("./index.scss");
|
|
27
|
+
const _leaves = /*#__PURE__*/ _interop_require_default(require("./leaves"));
|
|
28
|
+
const _toggle = /*#__PURE__*/ _interop_require_default(require("./leaves/toggle"));
|
|
29
|
+
const _mergeCustomFunctions = /*#__PURE__*/ _interop_require_default(require("./mergeCustomFunctions"));
|
|
30
|
+
const _withEnterBreakOut = /*#__PURE__*/ _interop_require_default(require("./plugins/withEnterBreakOut"));
|
|
31
|
+
const _withHTML = /*#__PURE__*/ _interop_require_default(require("./plugins/withHTML"));
|
|
32
|
+
function _interop_require_default(obj) {
|
|
33
|
+
return obj && obj.__esModule ? obj : {
|
|
34
|
+
default: obj
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
38
|
+
if (typeof WeakMap !== "function") return null;
|
|
39
|
+
var cacheBabelInterop = new WeakMap();
|
|
40
|
+
var cacheNodeInterop = new WeakMap();
|
|
41
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
42
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
43
|
+
})(nodeInterop);
|
|
44
|
+
}
|
|
45
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
46
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
47
|
+
return obj;
|
|
48
|
+
}
|
|
49
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
50
|
+
return {
|
|
51
|
+
default: obj
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
55
|
+
if (cache && cache.has(obj)) {
|
|
56
|
+
return cache.get(obj);
|
|
57
|
+
}
|
|
58
|
+
var newObj = {};
|
|
59
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
60
|
+
for(var key in obj){
|
|
61
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
62
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
63
|
+
if (desc && (desc.get || desc.set)) {
|
|
64
|
+
Object.defineProperty(newObj, key, desc);
|
|
65
|
+
} else {
|
|
66
|
+
newObj[key] = obj[key];
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
newObj.default = obj;
|
|
71
|
+
if (cache) {
|
|
72
|
+
cache.set(obj, newObj);
|
|
73
|
+
}
|
|
74
|
+
return newObj;
|
|
75
|
+
}
|
|
76
|
+
const defaultElements = [
|
|
77
|
+
'h1',
|
|
78
|
+
'h2',
|
|
79
|
+
'h3',
|
|
80
|
+
'h4',
|
|
81
|
+
'h5',
|
|
82
|
+
'h6',
|
|
83
|
+
'ul',
|
|
84
|
+
'ol',
|
|
85
|
+
'indent',
|
|
86
|
+
'link',
|
|
87
|
+
'relationship',
|
|
88
|
+
'upload'
|
|
89
|
+
];
|
|
90
|
+
const defaultLeaves = [
|
|
91
|
+
'bold',
|
|
92
|
+
'italic',
|
|
93
|
+
'underline',
|
|
94
|
+
'strikethrough',
|
|
95
|
+
'code'
|
|
96
|
+
];
|
|
97
|
+
const baseClass = 'rich-text';
|
|
98
|
+
const RichText = (props)=>{
|
|
99
|
+
const { name, admin: { className, condition, description, hideGutter, placeholder, readOnly, style, width } = {
|
|
100
|
+
className: undefined,
|
|
101
|
+
condition: undefined,
|
|
102
|
+
description: undefined,
|
|
103
|
+
hideGutter: undefined,
|
|
104
|
+
placeholder: undefined,
|
|
105
|
+
readOnly: undefined,
|
|
106
|
+
style: undefined,
|
|
107
|
+
width: undefined
|
|
108
|
+
}, admin, defaultValue: defaultValueFromProps, label, path: pathFromProps, required, validate = _validation.richText } = props;
|
|
109
|
+
const elements = admin?.elements || defaultElements;
|
|
110
|
+
const leaves = admin?.leaves || defaultLeaves;
|
|
111
|
+
const path = pathFromProps || name;
|
|
112
|
+
const { i18n } = (0, _reacti18next.useTranslation)();
|
|
113
|
+
const [loaded, setLoaded] = (0, _react.useState)(false);
|
|
114
|
+
const [enabledElements, setEnabledElements] = (0, _react.useState)({});
|
|
115
|
+
const [enabledLeaves, setEnabledLeaves] = (0, _react.useState)({});
|
|
116
|
+
const editorRef = (0, _react.useRef)(null);
|
|
117
|
+
const toolbarRef = (0, _react.useRef)(null);
|
|
118
|
+
const drawerDepth = (0, _utilities.useEditDepth)();
|
|
119
|
+
const drawerIsOpen = drawerDepth > 1;
|
|
120
|
+
const renderElement = (0, _react.useCallback)(({ attributes, children, element })=>{
|
|
121
|
+
const matchedElement = enabledElements[element.type];
|
|
122
|
+
const Element = matchedElement?.Element;
|
|
123
|
+
let attr = {
|
|
124
|
+
...attributes
|
|
125
|
+
};
|
|
126
|
+
// this converts text alignment to margin when dealing with void elements
|
|
127
|
+
if (element.textAlign) {
|
|
128
|
+
if (element.type === 'relationship' || element.type === 'upload') {
|
|
129
|
+
switch(element.textAlign){
|
|
130
|
+
case 'left':
|
|
131
|
+
attr = {
|
|
132
|
+
...attr,
|
|
133
|
+
style: {
|
|
134
|
+
marginRight: 'auto'
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
break;
|
|
138
|
+
case 'right':
|
|
139
|
+
attr = {
|
|
140
|
+
...attr,
|
|
141
|
+
style: {
|
|
142
|
+
marginLeft: 'auto'
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
break;
|
|
146
|
+
case 'center':
|
|
147
|
+
attr = {
|
|
148
|
+
...attr,
|
|
149
|
+
style: {
|
|
150
|
+
marginLeft: 'auto',
|
|
151
|
+
marginRight: 'auto'
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
break;
|
|
155
|
+
default:
|
|
156
|
+
attr = {
|
|
157
|
+
...attr,
|
|
158
|
+
style: {
|
|
159
|
+
textAlign: element.textAlign
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
} else if (element.type === 'li') {
|
|
165
|
+
switch(element.textAlign){
|
|
166
|
+
case 'right':
|
|
167
|
+
attr = {
|
|
168
|
+
...attr,
|
|
169
|
+
style: {
|
|
170
|
+
listStylePosition: 'inside',
|
|
171
|
+
textAlign: 'right'
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
break;
|
|
175
|
+
case 'center':
|
|
176
|
+
attr = {
|
|
177
|
+
...attr,
|
|
178
|
+
style: {
|
|
179
|
+
listStylePosition: 'inside',
|
|
180
|
+
textAlign: 'center'
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
break;
|
|
184
|
+
case 'left':
|
|
185
|
+
default:
|
|
186
|
+
attr = {
|
|
187
|
+
...attr,
|
|
188
|
+
style: {
|
|
189
|
+
listStylePosition: 'outside',
|
|
190
|
+
textAlign: 'left'
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
} else {
|
|
196
|
+
attr = {
|
|
197
|
+
...attr,
|
|
198
|
+
style: {
|
|
199
|
+
textAlign: element.textAlign
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
if (Element) {
|
|
205
|
+
const el = /*#__PURE__*/ _react.default.createElement(Element, {
|
|
206
|
+
attributes: attr,
|
|
207
|
+
editorRef: editorRef,
|
|
208
|
+
element: element,
|
|
209
|
+
fieldProps: props,
|
|
210
|
+
path: path
|
|
211
|
+
}, children);
|
|
212
|
+
return el;
|
|
213
|
+
}
|
|
214
|
+
return /*#__PURE__*/ _react.default.createElement("div", attr, children);
|
|
215
|
+
}, [
|
|
216
|
+
enabledElements,
|
|
217
|
+
path,
|
|
218
|
+
props
|
|
219
|
+
]);
|
|
220
|
+
const renderLeaf = (0, _react.useCallback)(({ attributes, children, leaf })=>{
|
|
221
|
+
const matchedLeaves = Object.entries(enabledLeaves).filter(([leafName])=>leaf[leafName]);
|
|
222
|
+
if (matchedLeaves.length > 0) {
|
|
223
|
+
return matchedLeaves.reduce((result, [leafName], i)=>{
|
|
224
|
+
if (enabledLeaves[leafName]?.Leaf) {
|
|
225
|
+
const Leaf = enabledLeaves[leafName]?.Leaf;
|
|
226
|
+
return /*#__PURE__*/ _react.default.createElement(Leaf, {
|
|
227
|
+
editorRef: editorRef,
|
|
228
|
+
fieldProps: props,
|
|
229
|
+
key: i,
|
|
230
|
+
leaf: leaf,
|
|
231
|
+
path: path
|
|
232
|
+
}, result);
|
|
233
|
+
}
|
|
234
|
+
return result;
|
|
235
|
+
}, /*#__PURE__*/ _react.default.createElement("span", attributes, children));
|
|
236
|
+
}
|
|
237
|
+
return /*#__PURE__*/ _react.default.createElement("span", attributes, children);
|
|
238
|
+
}, [
|
|
239
|
+
enabledLeaves,
|
|
240
|
+
path,
|
|
241
|
+
props
|
|
242
|
+
]);
|
|
243
|
+
const memoizedValidate = (0, _react.useCallback)((value, validationOptions)=>{
|
|
244
|
+
return validate(value, {
|
|
245
|
+
...validationOptions,
|
|
246
|
+
required
|
|
247
|
+
});
|
|
248
|
+
}, [
|
|
249
|
+
validate,
|
|
250
|
+
required
|
|
251
|
+
]);
|
|
252
|
+
const fieldType = (0, _forms.useField)({
|
|
253
|
+
condition,
|
|
254
|
+
path,
|
|
255
|
+
validate: memoizedValidate
|
|
256
|
+
});
|
|
257
|
+
const { errorMessage, initialValue, setValue, showError, value } = fieldType;
|
|
258
|
+
const classes = [
|
|
259
|
+
baseClass,
|
|
260
|
+
'field-type',
|
|
261
|
+
className,
|
|
262
|
+
showError && 'error',
|
|
263
|
+
readOnly && `${baseClass}--read-only`,
|
|
264
|
+
!hideGutter && `${baseClass}--gutter`
|
|
265
|
+
].filter(Boolean).join(' ');
|
|
266
|
+
const editor = (0, _react.useMemo)(()=>{
|
|
267
|
+
let CreatedEditor = (0, _withEnterBreakOut.default)((0, _slatehistory.withHistory)((0, _slatereact.withReact)((0, _slate.createEditor)())));
|
|
268
|
+
CreatedEditor = (0, _withHTML.default)(CreatedEditor);
|
|
269
|
+
CreatedEditor = (0, _enablePlugins.default)(CreatedEditor, elements);
|
|
270
|
+
CreatedEditor = (0, _enablePlugins.default)(CreatedEditor, leaves);
|
|
271
|
+
return CreatedEditor;
|
|
272
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
273
|
+
}, [
|
|
274
|
+
elements,
|
|
275
|
+
leaves,
|
|
276
|
+
path
|
|
277
|
+
]);
|
|
278
|
+
// All slate changes fire the onChange event
|
|
279
|
+
// including selection changes
|
|
280
|
+
// so we will filter the set_selection operations out
|
|
281
|
+
// and only fire setValue when onChange is because of value
|
|
282
|
+
const handleChange = (0, _react.useCallback)((val)=>{
|
|
283
|
+
const ops = editor.operations.filter((o)=>{
|
|
284
|
+
if (o) {
|
|
285
|
+
return o.type !== 'set_selection';
|
|
286
|
+
}
|
|
287
|
+
return false;
|
|
288
|
+
});
|
|
289
|
+
if (ops && Array.isArray(ops) && ops.length > 0) {
|
|
290
|
+
if (!readOnly && val !== _defaultValue.defaultRichTextValue && val !== value) {
|
|
291
|
+
setValue(val);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}, [
|
|
295
|
+
editor.operations,
|
|
296
|
+
readOnly,
|
|
297
|
+
setValue,
|
|
298
|
+
value
|
|
299
|
+
]);
|
|
300
|
+
(0, _react.useEffect)(()=>{
|
|
301
|
+
if (!loaded) {
|
|
302
|
+
const mergedElements = (0, _mergeCustomFunctions.default)(elements, _elements.default);
|
|
303
|
+
const mergedLeaves = (0, _mergeCustomFunctions.default)(leaves, _leaves.default);
|
|
304
|
+
setEnabledElements(mergedElements);
|
|
305
|
+
setEnabledLeaves(mergedLeaves);
|
|
306
|
+
setLoaded(true);
|
|
307
|
+
}
|
|
308
|
+
}, [
|
|
309
|
+
loaded,
|
|
310
|
+
elements,
|
|
311
|
+
leaves
|
|
312
|
+
]);
|
|
313
|
+
(0, _react.useEffect)(()=>{
|
|
314
|
+
function setClickableState(clickState) {
|
|
315
|
+
const selectors = 'button, a, [role="button"]';
|
|
316
|
+
const toolbarButtons = toolbarRef.current?.querySelectorAll(selectors);
|
|
317
|
+
(toolbarButtons || []).forEach((child)=>{
|
|
318
|
+
const isButton = child.tagName === 'BUTTON';
|
|
319
|
+
const isDisabling = clickState === 'disabled';
|
|
320
|
+
child.setAttribute('tabIndex', isDisabling ? '-1' : '0');
|
|
321
|
+
if (isButton) child.setAttribute('disabled', isDisabling ? 'disabled' : null);
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
if (loaded && readOnly) {
|
|
325
|
+
setClickableState('disabled');
|
|
326
|
+
}
|
|
327
|
+
return ()=>{
|
|
328
|
+
if (loaded && readOnly) {
|
|
329
|
+
setClickableState('enabled');
|
|
330
|
+
}
|
|
331
|
+
};
|
|
332
|
+
}, [
|
|
333
|
+
loaded,
|
|
334
|
+
readOnly
|
|
335
|
+
]);
|
|
336
|
+
// useEffect(() => {
|
|
337
|
+
// // If there is a change to the initial value, we need to reset Slate history
|
|
338
|
+
// // and clear selection because the old selection may no longer be valid
|
|
339
|
+
// // as returned JSON may be modified in hooks and have a different shape
|
|
340
|
+
// if (editor.selection) {
|
|
341
|
+
// console.log('deselecting');
|
|
342
|
+
// ReactEditor.deselect(editor);
|
|
343
|
+
// }
|
|
344
|
+
// }, [path, editor]);
|
|
345
|
+
if (!loaded) {
|
|
346
|
+
return null;
|
|
347
|
+
}
|
|
348
|
+
let valueToRender = value;
|
|
349
|
+
if (typeof valueToRender === 'string') {
|
|
350
|
+
try {
|
|
351
|
+
const parsedJSON = JSON.parse(valueToRender);
|
|
352
|
+
valueToRender = parsedJSON;
|
|
353
|
+
} catch (err) {
|
|
354
|
+
valueToRender = null;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
if (!valueToRender) valueToRender = defaultValueFromProps || _defaultValue.defaultRichTextValue;
|
|
358
|
+
return /*#__PURE__*/ _react.default.createElement("div", {
|
|
359
|
+
className: classes,
|
|
360
|
+
style: {
|
|
361
|
+
...style,
|
|
362
|
+
width
|
|
363
|
+
}
|
|
364
|
+
}, /*#__PURE__*/ _react.default.createElement("div", {
|
|
365
|
+
className: `${baseClass}__wrap`
|
|
366
|
+
}, /*#__PURE__*/ _react.default.createElement(_forms.Error, {
|
|
367
|
+
message: errorMessage,
|
|
368
|
+
showError: showError
|
|
369
|
+
}), /*#__PURE__*/ _react.default.createElement(_forms.Label, {
|
|
370
|
+
htmlFor: `field-${path.replace(/\./g, '__')}`,
|
|
371
|
+
label: label,
|
|
372
|
+
required: required
|
|
373
|
+
}), /*#__PURE__*/ _react.default.createElement(_slatereact.Slate, {
|
|
374
|
+
editor: editor,
|
|
375
|
+
key: JSON.stringify({
|
|
376
|
+
initialValue,
|
|
377
|
+
path
|
|
378
|
+
}),
|
|
379
|
+
onChange: handleChange,
|
|
380
|
+
value: valueToRender
|
|
381
|
+
}, /*#__PURE__*/ _react.default.createElement("div", {
|
|
382
|
+
className: `${baseClass}__wrapper`
|
|
383
|
+
}, /*#__PURE__*/ _react.default.createElement("div", {
|
|
384
|
+
className: [
|
|
385
|
+
`${baseClass}__toolbar`,
|
|
386
|
+
drawerIsOpen && `${baseClass}__drawerIsOpen`
|
|
387
|
+
].filter(Boolean).join(' '),
|
|
388
|
+
ref: toolbarRef
|
|
389
|
+
}, /*#__PURE__*/ _react.default.createElement("div", {
|
|
390
|
+
className: `${baseClass}__toolbar-wrap`
|
|
391
|
+
}, elements.map((element, i)=>{
|
|
392
|
+
let elementName;
|
|
393
|
+
if (typeof element === 'object' && element?.name) elementName = element.name;
|
|
394
|
+
if (typeof element === 'string') elementName = element;
|
|
395
|
+
const elementType = enabledElements[elementName];
|
|
396
|
+
const Button = elementType?.Button;
|
|
397
|
+
if (Button) {
|
|
398
|
+
return /*#__PURE__*/ _react.default.createElement(Button, {
|
|
399
|
+
fieldProps: props,
|
|
400
|
+
key: i,
|
|
401
|
+
path: path
|
|
402
|
+
});
|
|
403
|
+
}
|
|
404
|
+
return null;
|
|
405
|
+
}), leaves.map((leaf, i)=>{
|
|
406
|
+
let leafName;
|
|
407
|
+
if (typeof leaf === 'object' && leaf?.name) leafName = leaf.name;
|
|
408
|
+
if (typeof leaf === 'string') leafName = leaf;
|
|
409
|
+
const leafType = enabledLeaves[leafName];
|
|
410
|
+
const Button = leafType?.Button;
|
|
411
|
+
if (Button) {
|
|
412
|
+
return /*#__PURE__*/ _react.default.createElement(Button, {
|
|
413
|
+
fieldProps: props,
|
|
414
|
+
key: i,
|
|
415
|
+
path: path
|
|
416
|
+
});
|
|
417
|
+
}
|
|
418
|
+
return null;
|
|
419
|
+
}))), /*#__PURE__*/ _react.default.createElement("div", {
|
|
420
|
+
className: `${baseClass}__editor`,
|
|
421
|
+
ref: editorRef
|
|
422
|
+
}, /*#__PURE__*/ _react.default.createElement(_slatereact.Editable, {
|
|
423
|
+
className: `${baseClass}__input`,
|
|
424
|
+
id: `field-${path.replace(/\./g, '__')}`,
|
|
425
|
+
onKeyDown: (event)=>{
|
|
426
|
+
if (event.key === 'Enter') {
|
|
427
|
+
if (event.shiftKey) {
|
|
428
|
+
event.preventDefault();
|
|
429
|
+
editor.insertText('\n');
|
|
430
|
+
} else {
|
|
431
|
+
const selectedElement = _slate.Node.descendant(editor, editor.selection.anchor.path.slice(0, -1));
|
|
432
|
+
if (_slate.Element.isElement(selectedElement)) {
|
|
433
|
+
// Allow hard enter to "break out" of certain elements
|
|
434
|
+
if (editor.shouldBreakOutOnEnter(selectedElement)) {
|
|
435
|
+
event.preventDefault();
|
|
436
|
+
const selectedLeaf = _slate.Node.descendant(editor, editor.selection.anchor.path);
|
|
437
|
+
if (_slate.Text.isText(selectedLeaf) && String(selectedLeaf.text).length === editor.selection.anchor.offset) {
|
|
438
|
+
_slate.Transforms.insertNodes(editor, {
|
|
439
|
+
children: [
|
|
440
|
+
{
|
|
441
|
+
text: ''
|
|
442
|
+
}
|
|
443
|
+
]
|
|
444
|
+
});
|
|
445
|
+
} else {
|
|
446
|
+
_slate.Transforms.splitNodes(editor);
|
|
447
|
+
_slate.Transforms.setNodes(editor, {});
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
if (event.key === 'Backspace') {
|
|
454
|
+
const selectedElement = _slate.Node.descendant(editor, editor.selection.anchor.path.slice(0, -1));
|
|
455
|
+
if (_slate.Element.isElement(selectedElement) && selectedElement.type === 'li') {
|
|
456
|
+
const selectedLeaf = _slate.Node.descendant(editor, editor.selection.anchor.path);
|
|
457
|
+
if (_slate.Text.isText(selectedLeaf) && String(selectedLeaf.text).length === 0) {
|
|
458
|
+
event.preventDefault();
|
|
459
|
+
_slate.Transforms.unwrapNodes(editor, {
|
|
460
|
+
match: (n)=>_slate.Element.isElement(n) && _listTypes.default.includes(n.type),
|
|
461
|
+
mode: 'lowest',
|
|
462
|
+
split: true
|
|
463
|
+
});
|
|
464
|
+
_slate.Transforms.setNodes(editor, {
|
|
465
|
+
type: undefined
|
|
466
|
+
});
|
|
467
|
+
}
|
|
468
|
+
} else if (editor.isVoid(selectedElement)) {
|
|
469
|
+
_slate.Transforms.removeNodes(editor);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
Object.keys(_hotkeys.default).forEach((hotkey)=>{
|
|
473
|
+
if ((0, _ishotkey.default)(hotkey, event)) {
|
|
474
|
+
event.preventDefault();
|
|
475
|
+
const mark = _hotkeys.default[hotkey];
|
|
476
|
+
(0, _toggle.default)(editor, mark);
|
|
477
|
+
}
|
|
478
|
+
});
|
|
479
|
+
},
|
|
480
|
+
placeholder: (0, _utilities1.getTranslation)(placeholder, i18n),
|
|
481
|
+
readOnly: readOnly,
|
|
482
|
+
renderElement: renderElement,
|
|
483
|
+
renderLeaf: renderLeaf,
|
|
484
|
+
spellCheck: true
|
|
485
|
+
})))), /*#__PURE__*/ _react.default.createElement(_forms.FieldDescription, {
|
|
486
|
+
description: description,
|
|
487
|
+
value: value
|
|
488
|
+
})));
|
|
489
|
+
};
|
|
490
|
+
const _default = (0, _forms.withCondition)(RichText);
|
|
491
|
+
|
|
492
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZC9SaWNoVGV4dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBCYXNlRWRpdG9yLCBCYXNlT3BlcmF0aW9uIH0gZnJvbSAnc2xhdGUnXG5pbXBvcnQgdHlwZSB7IEhpc3RvcnlFZGl0b3IgfSBmcm9tICdzbGF0ZS1oaXN0b3J5J1xuaW1wb3J0IHR5cGUgeyBSZWFjdEVkaXRvciB9IGZyb20gJ3NsYXRlLXJlYWN0J1xuXG5pbXBvcnQgaXNIb3RrZXkgZnJvbSAnaXMtaG90a2V5J1xuaW1wb3J0IHsgRXJyb3IsIEZpZWxkRGVzY3JpcHRpb24sIExhYmVsLCB1c2VGaWVsZCwgd2l0aENvbmRpdGlvbiB9IGZyb20gJ3BheWxvYWQvY29tcG9uZW50cy9mb3JtcydcbmltcG9ydCB7IHVzZUVkaXREZXB0aCB9IGZyb20gJ3BheWxvYWQvY29tcG9uZW50cy91dGlsaXRpZXMnXG5pbXBvcnQgeyBnZXRUcmFuc2xhdGlvbiB9IGZyb20gJ3BheWxvYWQvdXRpbGl0aWVzJ1xuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IE5vZGUsIEVsZW1lbnQgYXMgU2xhdGVFbGVtZW50LCBUZXh0LCBUcmFuc2Zvcm1zLCBjcmVhdGVFZGl0b3IgfSBmcm9tICdzbGF0ZSdcbmltcG9ydCB7IHdpdGhIaXN0b3J5IH0gZnJvbSAnc2xhdGUtaGlzdG9yeSdcbmltcG9ydCB7IEVkaXRhYmxlLCBTbGF0ZSwgd2l0aFJlYWN0IH0gZnJvbSAnc2xhdGUtcmVhY3QnXG5cbmltcG9ydCB0eXBlIHsgRWxlbWVudE5vZGUsIEZpZWxkUHJvcHMsIFJpY2hUZXh0RWxlbWVudCwgUmljaFRleHRMZWFmLCBUZXh0Tm9kZSB9IGZyb20gJy4uL3R5cGVzJ1xuXG5pbXBvcnQgeyBkZWZhdWx0UmljaFRleHRWYWx1ZSB9IGZyb20gJy4uL2RhdGEvZGVmYXVsdFZhbHVlJ1xuaW1wb3J0IHsgcmljaFRleHQgfSBmcm9tICcuLi9kYXRhL3ZhbGlkYXRpb24nXG5pbXBvcnQgZWxlbWVudFR5cGVzIGZyb20gJy4vZWxlbWVudHMnXG5pbXBvcnQgbGlzdFR5cGVzIGZyb20gJy4vZWxlbWVudHMvbGlzdFR5cGVzJ1xuaW1wb3J0IGVuYWJsZVBsdWdpbnMgZnJvbSAnLi9lbmFibGVQbHVnaW5zJ1xuaW1wb3J0IGhvdGtleXMgZnJvbSAnLi9ob3RrZXlzJ1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnXG5pbXBvcnQgbGVhZlR5cGVzIGZyb20gJy4vbGVhdmVzJ1xuaW1wb3J0IHRvZ2dsZUxlYWYgZnJvbSAnLi9sZWF2ZXMvdG9nZ2xlJ1xuaW1wb3J0IG1lcmdlQ3VzdG9tRnVuY3Rpb25zIGZyb20gJy4vbWVyZ2VDdXN0b21GdW5jdGlvbnMnXG5pbXBvcnQgd2l0aEVudGVyQnJlYWtPdXQgZnJvbSAnLi9wbHVnaW5zL3dpdGhFbnRlckJyZWFrT3V0J1xuaW1wb3J0IHdpdGhIVE1MIGZyb20gJy4vcGx1Z2lucy93aXRoSFRNTCdcblxuY29uc3QgZGVmYXVsdEVsZW1lbnRzOiBSaWNoVGV4dEVsZW1lbnRbXSA9IFtcbiAgJ2gxJyxcbiAgJ2gyJyxcbiAgJ2gzJyxcbiAgJ2g0JyxcbiAgJ2g1JyxcbiAgJ2g2JyxcbiAgJ3VsJyxcbiAgJ29sJyxcbiAgJ2luZGVudCcsXG4gICdsaW5rJyxcbiAgJ3JlbGF0aW9uc2hpcCcsXG4gICd1cGxvYWQnLFxuXVxuY29uc3QgZGVmYXVsdExlYXZlczogUmljaFRleHRMZWFmW10gPSBbJ2JvbGQnLCAnaXRhbGljJywgJ3VuZGVybGluZScsICdzdHJpa2V0aHJvdWdoJywgJ2NvZGUnXVxuXG5jb25zdCBiYXNlQ2xhc3MgPSAncmljaC10ZXh0J1xuXG5kZWNsYXJlIG1vZHVsZSAnc2xhdGUnIHtcbiAgaW50ZXJmYWNlIEN1c3RvbVR5cGVzIHtcbiAgICBFZGl0b3I6IEJhc2VFZGl0b3IgJiBSZWFjdEVkaXRvciAmIEhpc3RvcnlFZGl0b3JcbiAgICBFbGVtZW50OiBFbGVtZW50Tm9kZVxuICAgIFRleHQ6IFRleHROb2RlXG4gIH1cbn1cblxuY29uc3QgUmljaFRleHQ6IFJlYWN0LkZDPEZpZWxkUHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBuYW1lLFxuICAgIGFkbWluOiB7XG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb25kaXRpb24sXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIGhpZGVHdXR0ZXIsXG4gICAgICBwbGFjZWhvbGRlcixcbiAgICAgIHJlYWRPbmx5LFxuICAgICAgc3R5bGUsXG4gICAgICB3aWR0aCxcbiAgICB9ID0ge1xuICAgICAgY2xhc3NOYW1lOiB1bmRlZmluZWQsXG4gICAgICBjb25kaXRpb246IHVuZGVmaW5lZCxcbiAgICAgIGRlc2NyaXB0aW9uOiB1bmRlZmluZWQsXG4gICAgICBoaWRlR3V0dGVyOiB1bmRlZmluZWQsXG4gICAgICBwbGFjZWhvbGRlcjogdW5kZWZpbmVkLFxuICAgICAgcmVhZE9ubHk6IHVuZGVmaW5lZCxcbiAgICAgIHN0eWxlOiB1bmRlZmluZWQsXG4gICAgICB3aWR0aDogdW5kZWZpbmVkLFxuICAgIH0sXG4gICAgYWRtaW4sXG4gICAgZGVmYXVsdFZhbHVlOiBkZWZhdWx0VmFsdWVGcm9tUHJvcHMsXG4gICAgbGFiZWwsXG4gICAgcGF0aDogcGF0aEZyb21Qcm9wcyxcbiAgICByZXF1aXJlZCxcbiAgICB2YWxpZGF0ZSA9IHJpY2hUZXh0LFxuICB9ID0gcHJvcHNcblxuICBjb25zdCBlbGVtZW50czogUmljaFRleHRFbGVtZW50W10gPSBhZG1pbj8uZWxlbWVudHMgfHwgZGVmYXVsdEVsZW1lbnRzXG4gIGNvbnN0IGxlYXZlczogUmljaFRleHRMZWFmW10gPSBhZG1pbj8ubGVhdmVzIHx8IGRlZmF1bHRMZWF2ZXNcblxuICBjb25zdCBwYXRoID0gcGF0aEZyb21Qcm9wcyB8fCBuYW1lXG5cbiAgY29uc3QgeyBpMThuIH0gPSB1c2VUcmFuc2xhdGlvbigpXG4gIGNvbnN0IFtsb2FkZWQsIHNldExvYWRlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2VuYWJsZWRFbGVtZW50cywgc2V0RW5hYmxlZEVsZW1lbnRzXSA9IHVzZVN0YXRlKHt9KVxuICBjb25zdCBbZW5hYmxlZExlYXZlcywgc2V0RW5hYmxlZExlYXZlc10gPSB1c2VTdGF0ZSh7fSlcbiAgY29uc3QgZWRpdG9yUmVmID0gdXNlUmVmKG51bGwpXG4gIGNvbnN0IHRvb2xiYXJSZWYgPSB1c2VSZWYobnVsbClcblxuICBjb25zdCBkcmF3ZXJEZXB0aCA9IHVzZUVkaXREZXB0aCgpXG4gIGNvbnN0IGRyYXdlcklzT3BlbiA9IGRyYXdlckRlcHRoID4gMVxuXG4gIGNvbnN0IHJlbmRlckVsZW1lbnQgPSB1c2VDYWxsYmFjayhcbiAgICAoeyBhdHRyaWJ1dGVzLCBjaGlsZHJlbiwgZWxlbWVudCB9KSA9PiB7XG4gICAgICBjb25zdCBtYXRjaGVkRWxlbWVudCA9IGVuYWJsZWRFbGVtZW50c1tlbGVtZW50LnR5cGVdXG4gICAgICBjb25zdCBFbGVtZW50ID0gbWF0Y2hlZEVsZW1lbnQ/LkVsZW1lbnRcblxuICAgICAgbGV0IGF0dHIgPSB7IC4uLmF0dHJpYnV0ZXMgfVxuXG4gICAgICAvLyB0aGlzIGNvbnZlcnRzIHRleHQgYWxpZ25tZW50IHRvIG1hcmdpbiB3aGVuIGRlYWxpbmcgd2l0aCB2b2lkIGVsZW1lbnRzXG4gICAgICBpZiAoZWxlbWVudC50ZXh0QWxpZ24pIHtcbiAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ3JlbGF0aW9uc2hpcCcgfHwgZWxlbWVudC50eXBlID09PSAndXBsb2FkJykge1xuICAgICAgICAgIHN3aXRjaCAoZWxlbWVudC50ZXh0QWxpZ24pIHtcbiAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgICBhdHRyID0geyAuLi5hdHRyLCBzdHlsZTogeyBtYXJnaW5SaWdodDogJ2F1dG8nIH0gfVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgICAgICBhdHRyID0geyAuLi5hdHRyLCBzdHlsZTogeyBtYXJnaW5MZWZ0OiAnYXV0bycgfSB9XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICAgICAgICBhdHRyID0geyAuLi5hdHRyLCBzdHlsZTogeyBtYXJnaW5MZWZ0OiAnYXV0bycsIG1hcmdpblJpZ2h0OiAnYXV0bycgfSB9XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBhdHRyID0geyAuLi5hdHRyLCBzdHlsZTogeyB0ZXh0QWxpZ246IGVsZW1lbnQudGV4dEFsaWduIH0gfVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnR5cGUgPT09ICdsaScpIHtcbiAgICAgICAgICBzd2l0Y2ggKGVsZW1lbnQudGV4dEFsaWduKSB7XG4gICAgICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICAgIGF0dHIgPSB7IC4uLmF0dHIsIHN0eWxlOiB7IGxpc3RTdHlsZVBvc2l0aW9uOiAnaW5zaWRlJywgdGV4dEFsaWduOiAncmlnaHQnIH0gfVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgICAgICAgYXR0ciA9IHsgLi4uYXR0ciwgc3R5bGU6IHsgbGlzdFN0eWxlUG9zaXRpb246ICdpbnNpZGUnLCB0ZXh0QWxpZ246ICdjZW50ZXInIH0gfVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBhdHRyID0geyAuLi5hdHRyLCBzdHlsZTogeyBsaXN0U3R5bGVQb3NpdGlvbjogJ291dHNpZGUnLCB0ZXh0QWxpZ246ICdsZWZ0JyB9IH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXR0ciA9IHsgLi4uYXR0ciwgc3R5bGU6IHsgdGV4dEFsaWduOiBlbGVtZW50LnRleHRBbGlnbiB9IH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoRWxlbWVudCkge1xuICAgICAgICBjb25zdCBlbCA9IChcbiAgICAgICAgICA8RWxlbWVudFxuICAgICAgICAgICAgYXR0cmlidXRlcz17YXR0cn1cbiAgICAgICAgICAgIGVkaXRvclJlZj17ZWRpdG9yUmVmfVxuICAgICAgICAgICAgZWxlbWVudD17ZWxlbWVudH1cbiAgICAgICAgICAgIGZpZWxkUHJvcHM9e3Byb3BzfVxuICAgICAgICAgICAgcGF0aD17cGF0aH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgPC9FbGVtZW50PlxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIGVsXG4gICAgICB9XG5cbiAgICAgIHJldHVybiA8ZGl2IHsuLi5hdHRyfT57Y2hpbGRyZW59PC9kaXY+XG4gICAgfSxcbiAgICBbZW5hYmxlZEVsZW1lbnRzLCBwYXRoLCBwcm9wc10sXG4gIClcblxuICBjb25zdCByZW5kZXJMZWFmID0gdXNlQ2FsbGJhY2soXG4gICAgKHsgYXR0cmlidXRlcywgY2hpbGRyZW4sIGxlYWYgfSkgPT4ge1xuICAgICAgY29uc3QgbWF0Y2hlZExlYXZlcyA9IE9iamVjdC5lbnRyaWVzKGVuYWJsZWRMZWF2ZXMpLmZpbHRlcigoW2xlYWZOYW1lXSkgPT4gbGVhZltsZWFmTmFtZV0pXG5cbiAgICAgIGlmIChtYXRjaGVkTGVhdmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIG1hdGNoZWRMZWF2ZXMucmVkdWNlKFxuICAgICAgICAgIChyZXN1bHQsIFtsZWFmTmFtZV0sIGkpID0+IHtcbiAgICAgICAgICAgIGlmIChlbmFibGVkTGVhdmVzW2xlYWZOYW1lXT8uTGVhZikge1xuICAgICAgICAgICAgICBjb25zdCBMZWFmID0gZW5hYmxlZExlYXZlc1tsZWFmTmFtZV0/LkxlYWZcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8TGVhZiBlZGl0b3JSZWY9e2VkaXRvclJlZn0gZmllbGRQcm9wcz17cHJvcHN9IGtleT17aX0gbGVhZj17bGVhZn0gcGF0aD17cGF0aH0+XG4gICAgICAgICAgICAgICAgICB7cmVzdWx0fVxuICAgICAgICAgICAgICAgIDwvTGVhZj5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgICAgfSxcbiAgICAgICAgICA8c3BhbiB7Li4uYXR0cmlidXRlc30+e2NoaWxkcmVufTwvc3Bhbj4sXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIDxzcGFuIHsuLi5hdHRyaWJ1dGVzfT57Y2hpbGRyZW59PC9zcGFuPlxuICAgIH0sXG4gICAgW2VuYWJsZWRMZWF2ZXMsIHBhdGgsIHByb3BzXSxcbiAgKVxuXG4gIGNvbnN0IG1lbW9pemVkVmFsaWRhdGUgPSB1c2VDYWxsYmFjayhcbiAgICAodmFsdWUsIHZhbGlkYXRpb25PcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gdmFsaWRhdGUodmFsdWUsIHsgLi4udmFsaWRhdGlvbk9wdGlvbnMsIHJlcXVpcmVkIH0pXG4gICAgfSxcbiAgICBbdmFsaWRhdGUsIHJlcXVpcmVkXSxcbiAgKVxuXG4gIGNvbnN0IGZpZWxkVHlwZSA9IHVzZUZpZWxkKHtcbiAgICBjb25kaXRpb24sXG4gICAgcGF0aCxcbiAgICB2YWxpZGF0ZTogbWVtb2l6ZWRWYWxpZGF0ZSxcbiAgfSlcblxuICBjb25zdCB7IGVycm9yTWVzc2FnZSwgaW5pdGlhbFZhbHVlLCBzZXRWYWx1ZSwgc2hvd0Vycm9yLCB2YWx1ZSB9ID0gZmllbGRUeXBlXG5cbiAgY29uc3QgY2xhc3NlcyA9IFtcbiAgICBiYXNlQ2xhc3MsXG4gICAgJ2ZpZWxkLXR5cGUnLFxuICAgIGNsYXNzTmFtZSxcbiAgICBzaG93RXJyb3IgJiYgJ2Vycm9yJyxcbiAgICByZWFkT25seSAmJiBgJHtiYXNlQ2xhc3N9LS1yZWFkLW9ubHlgLFxuICAgICFoaWRlR3V0dGVyICYmIGAke2Jhc2VDbGFzc30tLWd1dHRlcmAsXG4gIF1cbiAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgLmpvaW4oJyAnKVxuXG4gIGNvbnN0IGVkaXRvciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGxldCBDcmVhdGVkRWRpdG9yID0gd2l0aEVudGVyQnJlYWtPdXQod2l0aEhpc3Rvcnkod2l0aFJlYWN0KGNyZWF0ZUVkaXRvcigpKSkpXG5cbiAgICBDcmVhdGVkRWRpdG9yID0gd2l0aEhUTUwoQ3JlYXRlZEVkaXRvcilcbiAgICBDcmVhdGVkRWRpdG9yID0gZW5hYmxlUGx1Z2lucyhDcmVhdGVkRWRpdG9yLCBlbGVtZW50cylcbiAgICBDcmVhdGVkRWRpdG9yID0gZW5hYmxlUGx1Z2lucyhDcmVhdGVkRWRpdG9yLCBsZWF2ZXMpXG5cbiAgICByZXR1cm4gQ3JlYXRlZEVkaXRvclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2VsZW1lbnRzLCBsZWF2ZXMsIHBhdGhdKVxuXG4gIC8vIEFsbCBzbGF0ZSBjaGFuZ2VzIGZpcmUgdGhlIG9uQ2hhbmdlIGV2ZW50XG4gIC8vIGluY2x1ZGluZyBzZWxlY3Rpb24gY2hhbmdlc1xuICAvLyBzbyB3ZSB3aWxsIGZpbHRlciB0aGUgc2V0X3NlbGVjdGlvbiBvcGVyYXRpb25zIG91dFxuICAvLyBhbmQgb25seSBmaXJlIHNldFZhbHVlIHdoZW4gb25DaGFuZ2UgaXMgYmVjYXVzZSBvZiB2YWx1ZVxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAodmFsOiB1bmtub3duKSA9PiB7XG4gICAgICBjb25zdCBvcHMgPSBlZGl0b3Iub3BlcmF0aW9ucy5maWx0ZXIoKG86IEJhc2VPcGVyYXRpb24pID0+IHtcbiAgICAgICAgaWYgKG8pIHtcbiAgICAgICAgICByZXR1cm4gby50eXBlICE9PSAnc2V0X3NlbGVjdGlvbidcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH0pXG5cbiAgICAgIGlmIChvcHMgJiYgQXJyYXkuaXNBcnJheShvcHMpICYmIG9wcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmICghcmVhZE9ubHkgJiYgdmFsICE9PSBkZWZhdWx0UmljaFRleHRWYWx1ZSAmJiB2YWwgIT09IHZhbHVlKSB7XG4gICAgICAgICAgc2V0VmFsdWUodmFsKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbZWRpdG9yLm9wZXJhdGlvbnMsIHJlYWRPbmx5LCBzZXRWYWx1ZSwgdmFsdWVdLFxuICApXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWxvYWRlZCkge1xuICAgICAgY29uc3QgbWVyZ2VkRWxlbWVudHMgPSBtZXJnZUN1c3RvbUZ1bmN0aW9ucyhlbGVtZW50cywgZWxlbWVudFR5cGVzKVxuICAgICAgY29uc3QgbWVyZ2VkTGVhdmVzID0gbWVyZ2VDdXN0b21GdW5jdGlvbnMobGVhdmVzLCBsZWFmVHlwZXMpXG5cbiAgICAgIHNldEVuYWJsZWRFbGVtZW50cyhtZXJnZWRFbGVtZW50cylcbiAgICAgIHNldEVuYWJsZWRMZWF2ZXMobWVyZ2VkTGVhdmVzKVxuXG4gICAgICBzZXRMb2FkZWQodHJ1ZSlcbiAgICB9XG4gIH0sIFtsb2FkZWQsIGVsZW1lbnRzLCBsZWF2ZXNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZnVuY3Rpb24gc2V0Q2xpY2thYmxlU3RhdGUoY2xpY2tTdGF0ZTogJ2Rpc2FibGVkJyB8ICdlbmFibGVkJykge1xuICAgICAgY29uc3Qgc2VsZWN0b3JzID0gJ2J1dHRvbiwgYSwgW3JvbGU9XCJidXR0b25cIl0nXG4gICAgICBjb25zdCB0b29sYmFyQnV0dG9uczogKEhUTUxBbmNob3JFbGVtZW50IHwgSFRNTEJ1dHRvbkVsZW1lbnQpW10gPVxuICAgICAgICB0b29sYmFyUmVmLmN1cnJlbnQ/LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3JzKVxuXG4gICAgICA7KHRvb2xiYXJCdXR0b25zIHx8IFtdKS5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICBjb25zdCBpc0J1dHRvbiA9IGNoaWxkLnRhZ05hbWUgPT09ICdCVVRUT04nXG4gICAgICAgIGNvbnN0IGlzRGlzYWJsaW5nID0gY2xpY2tTdGF0ZSA9PT0gJ2Rpc2FibGVkJ1xuICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoJ3RhYkluZGV4JywgaXNEaXNhYmxpbmcgPyAnLTEnIDogJzAnKVxuICAgICAgICBpZiAoaXNCdXR0b24pIGNoaWxkLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCBpc0Rpc2FibGluZyA/ICdkaXNhYmxlZCcgOiBudWxsKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAobG9hZGVkICYmIHJlYWRPbmx5KSB7XG4gICAgICBzZXRDbGlja2FibGVTdGF0ZSgnZGlzYWJsZWQnKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAobG9hZGVkICYmIHJlYWRPbmx5KSB7XG4gICAgICAgIHNldENsaWNrYWJsZVN0YXRlKCdlbmFibGVkJylcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtsb2FkZWQsIHJlYWRPbmx5XSlcblxuICAvLyB1c2VFZmZlY3QoKCkgPT4ge1xuICAvLyAgIC8vIElmIHRoZXJlIGlzIGEgY2hhbmdlIHRvIHRoZSBpbml0aWFsIHZhbHVlLCB3ZSBuZWVkIHRvIHJlc2V0IFNsYXRlIGhpc3RvcnlcbiAgLy8gICAvLyBhbmQgY2xlYXIgc2VsZWN0aW9uIGJlY2F1c2UgdGhlIG9sZCBzZWxlY3Rpb24gbWF5IG5vIGxvbmdlciBiZSB2YWxpZFxuICAvLyAgIC8vIGFzIHJldHVybmVkIEpTT04gbWF5IGJlIG1vZGlmaWVkIGluIGhvb2tzIGFuZCBoYXZlIGEgZGlmZmVyZW50IHNoYXBlXG4gIC8vICAgaWYgKGVkaXRvci5zZWxlY3Rpb24pIHtcbiAgLy8gICAgIGNvbnNvbGUubG9nKCdkZXNlbGVjdGluZycpO1xuICAvLyAgICAgUmVhY3RFZGl0b3IuZGVzZWxlY3QoZWRpdG9yKTtcbiAgLy8gICB9XG4gIC8vIH0sIFtwYXRoLCBlZGl0b3JdKTtcblxuICBpZiAoIWxvYWRlZCkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBsZXQgdmFsdWVUb1JlbmRlciA9IHZhbHVlXG5cbiAgaWYgKHR5cGVvZiB2YWx1ZVRvUmVuZGVyID09PSAnc3RyaW5nJykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJzZWRKU09OID0gSlNPTi5wYXJzZSh2YWx1ZVRvUmVuZGVyKVxuICAgICAgdmFsdWVUb1JlbmRlciA9IHBhcnNlZEpTT05cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHZhbHVlVG9SZW5kZXIgPSBudWxsXG4gICAgfVxuICB9XG5cbiAgaWYgKCF2YWx1ZVRvUmVuZGVyKSB2YWx1ZVRvUmVuZGVyID0gZGVmYXVsdFZhbHVlRnJvbVByb3BzIHx8IGRlZmF1bHRSaWNoVGV4dFZhbHVlXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2NsYXNzZXN9XG4gICAgICBzdHlsZT17e1xuICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X193cmFwYH0+XG4gICAgICAgIDxFcnJvciBtZXNzYWdlPXtlcnJvck1lc3NhZ2V9IHNob3dFcnJvcj17c2hvd0Vycm9yfSAvPlxuICAgICAgICA8TGFiZWwgaHRtbEZvcj17YGZpZWxkLSR7cGF0aC5yZXBsYWNlKC9cXC4vZywgJ19fJyl9YH0gbGFiZWw9e2xhYmVsfSByZXF1aXJlZD17cmVxdWlyZWR9IC8+XG4gICAgICAgIDxTbGF0ZVxuICAgICAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgICAgIGtleT17SlNPTi5zdHJpbmdpZnkoeyBpbml0aWFsVmFsdWUsIHBhdGggfSl9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICB2YWx1ZT17dmFsdWVUb1JlbmRlciBhcyBhbnlbXX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X193cmFwcGVyYH0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17W2Ake2Jhc2VDbGFzc31fX3Rvb2xiYXJgLCBkcmF3ZXJJc09wZW4gJiYgYCR7YmFzZUNsYXNzfV9fZHJhd2VySXNPcGVuYF1cbiAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgLmpvaW4oJyAnKX1cbiAgICAgICAgICAgICAgcmVmPXt0b29sYmFyUmVmfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fdG9vbGJhci13cmFwYH0+XG4gICAgICAgICAgICAgICAge2VsZW1lbnRzLm1hcCgoZWxlbWVudCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgbGV0IGVsZW1lbnROYW1lOiBzdHJpbmdcbiAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ29iamVjdCcgJiYgZWxlbWVudD8ubmFtZSkgZWxlbWVudE5hbWUgPSBlbGVtZW50Lm5hbWVcbiAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZycpIGVsZW1lbnROYW1lID0gZWxlbWVudFxuXG4gICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50VHlwZSA9IGVuYWJsZWRFbGVtZW50c1tlbGVtZW50TmFtZV1cbiAgICAgICAgICAgICAgICAgIGNvbnN0IEJ1dHRvbiA9IGVsZW1lbnRUeXBlPy5CdXR0b25cblxuICAgICAgICAgICAgICAgICAgaWYgKEJ1dHRvbikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gPEJ1dHRvbiBmaWVsZFByb3BzPXtwcm9wc30ga2V5PXtpfSBwYXRoPXtwYXRofSAvPlxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIHtsZWF2ZXMubWFwKChsZWFmLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICBsZXQgbGVhZk5hbWU6IHN0cmluZ1xuICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBsZWFmID09PSAnb2JqZWN0JyAmJiBsZWFmPy5uYW1lKSBsZWFmTmFtZSA9IGxlYWYubmFtZVxuICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBsZWFmID09PSAnc3RyaW5nJykgbGVhZk5hbWUgPSBsZWFmXG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGxlYWZUeXBlID0gZW5hYmxlZExlYXZlc1tsZWFmTmFtZV1cbiAgICAgICAgICAgICAgICAgIGNvbnN0IEJ1dHRvbiA9IGxlYWZUeXBlPy5CdXR0b25cblxuICAgICAgICAgICAgICAgICAgaWYgKEJ1dHRvbikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gPEJ1dHRvbiBmaWVsZFByb3BzPXtwcm9wc30ga2V5PXtpfSBwYXRoPXtwYXRofSAvPlxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2VkaXRvcmB9IHJlZj17ZWRpdG9yUmVmfT5cbiAgICAgICAgICAgICAgPEVkaXRhYmxlXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19pbnB1dGB9XG4gICAgICAgICAgICAgICAgaWQ9e2BmaWVsZC0ke3BhdGgucmVwbGFjZSgvXFwuL2csICdfXycpfWB9XG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgIGVkaXRvci5pbnNlcnRUZXh0KCdcXG4nKVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudCA9IE5vZGUuZGVzY2VuZGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvci5zZWxlY3Rpb24uYW5jaG9yLnBhdGguc2xpY2UoMCwgLTEpLFxuICAgICAgICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChTbGF0ZUVsZW1lbnQuaXNFbGVtZW50KHNlbGVjdGVkRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFsbG93IGhhcmQgZW50ZXIgdG8gXCJicmVhayBvdXRcIiBvZiBjZXJ0YWluIGVsZW1lbnRzXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRpdG9yLnNob3VsZEJyZWFrT3V0T25FbnRlcihzZWxlY3RlZEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRMZWFmID0gTm9kZS5kZXNjZW5kYW50KGVkaXRvciwgZWRpdG9yLnNlbGVjdGlvbi5hbmNob3IucGF0aClcblxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dC5pc1RleHQoc2VsZWN0ZWRMZWFmKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyhzZWxlY3RlZExlYWYudGV4dCkubGVuZ3RoID09PSBlZGl0b3Iuc2VsZWN0aW9uLmFuY2hvci5vZmZzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlcyhlZGl0b3IsIHsgY2hpbGRyZW46IFt7IHRleHQ6ICcnIH1dIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zcGxpdE5vZGVzKGVkaXRvcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGVzKGVkaXRvciwge30pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0JhY2tzcGFjZScpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50ID0gTm9kZS5kZXNjZW5kYW50KFxuICAgICAgICAgICAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgICAgICAgICAgICBlZGl0b3Iuc2VsZWN0aW9uLmFuY2hvci5wYXRoLnNsaWNlKDAsIC0xKSxcbiAgICAgICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChTbGF0ZUVsZW1lbnQuaXNFbGVtZW50KHNlbGVjdGVkRWxlbWVudCkgJiYgc2VsZWN0ZWRFbGVtZW50LnR5cGUgPT09ICdsaScpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZExlYWYgPSBOb2RlLmRlc2NlbmRhbnQoZWRpdG9yLCBlZGl0b3Iuc2VsZWN0aW9uLmFuY2hvci5wYXRoKVxuICAgICAgICAgICAgICAgICAgICAgIGlmIChUZXh0LmlzVGV4dChzZWxlY3RlZExlYWYpICYmIFN0cmluZyhzZWxlY3RlZExlYWYudGV4dCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnVud3JhcE5vZGVzKGVkaXRvciwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaDogKG4pID0+IFNsYXRlRWxlbWVudC5pc0VsZW1lbnQobikgJiYgbGlzdFR5cGVzLmluY2x1ZGVzKG4udHlwZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6ICdsb3dlc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXMoZWRpdG9yLCB7IHR5cGU6IHVuZGVmaW5lZCB9KVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlZGl0b3IuaXNWb2lkKHNlbGVjdGVkRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnJlbW92ZU5vZGVzKGVkaXRvcilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhob3RrZXlzKS5mb3JFYWNoKChob3RrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzSG90a2V5KGhvdGtleSwgZXZlbnQgYXMgYW55KSkge1xuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXJrID0gaG90a2V5c1tob3RrZXldXG4gICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlTGVhZihlZGl0b3IsIG1hcmspXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17Z2V0VHJhbnNsYXRpb24ocGxhY2Vob2xkZXIsIGkxOG4pfVxuICAgICAgICAgICAgICAgIHJlYWRPbmx5PXtyZWFkT25seX1cbiAgICAgICAgICAgICAgICByZW5kZXJFbGVtZW50PXtyZW5kZXJFbGVtZW50fVxuICAgICAgICAgICAgICAgIHJlbmRlckxlYWY9e3JlbmRlckxlYWZ9XG4gICAgICAgICAgICAgICAgc3BlbGxDaGVja1xuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvU2xhdGU+XG4gICAgICAgIDxGaWVsZERlc2NyaXB0aW9uIGRlc2NyaXB0aW9uPXtkZXNjcmlwdGlvbn0gdmFsdWU9e3ZhbHVlfSAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIClcbn1cbmV4cG9ydCBkZWZhdWx0IHdpdGhDb25kaXRpb24oUmljaFRleHQpXG4iXSwibmFtZXMiOlsiZGVmYXVsdEVsZW1lbnRzIiwiZGVmYXVsdExlYXZlcyIsImJhc2VDbGFzcyIsIlJpY2hUZXh0IiwicHJvcHMiLCJuYW1lIiwiYWRtaW4iLCJjbGFzc05hbWUiLCJjb25kaXRpb24iLCJkZXNjcmlwdGlvbiIsImhpZGVHdXR0ZXIiLCJwbGFjZWhvbGRlciIsInJlYWRPbmx5Iiwic3R5bGUiLCJ3aWR0aCIsInVuZGVmaW5lZCIsImRlZmF1bHRWYWx1ZSIsImRlZmF1bHRWYWx1ZUZyb21Qcm9wcyIsImxhYmVsIiwicGF0aCIsInBhdGhGcm9tUHJvcHMiLCJyZXF1aXJlZCIsInZhbGlkYXRlIiwicmljaFRleHQiLCJlbGVtZW50cyIsImxlYXZlcyIsImkxOG4iLCJ1c2VUcmFuc2xhdGlvbiIsImxvYWRlZCIsInNldExvYWRlZCIsInVzZVN0YXRlIiwiZW5hYmxlZEVsZW1lbnRzIiwic2V0RW5hYmxlZEVsZW1lbnRzIiwiZW5hYmxlZExlYXZlcyIsInNldEVuYWJsZWRMZWF2ZXMiLCJlZGl0b3JSZWYiLCJ1c2VSZWYiLCJ0b29sYmFyUmVmIiwiZHJhd2VyRGVwdGgiLCJ1c2VFZGl0RGVwdGgiLCJkcmF3ZXJJc09wZW4iLCJyZW5kZXJFbGVtZW50IiwidXNlQ2FsbGJhY2siLCJhdHRyaWJ1dGVzIiwiY2hpbGRyZW4iLCJlbGVtZW50IiwibWF0Y2hlZEVsZW1lbnQiLCJ0eXBlIiwiRWxlbWVudCIsImF0dHIiLCJ0ZXh0QWxpZ24iLCJtYXJnaW5SaWdodCIsIm1hcmdpbkxlZnQiLCJsaXN0U3R5bGVQb3NpdGlvbiIsImVsIiwiZmllbGRQcm9wcyIsImRpdiIsInJlbmRlckxlYWYiLCJsZWFmIiwibWF0Y2hlZExlYXZlcyIsIk9iamVjdCIsImVudHJpZXMiLCJmaWx0ZXIiLCJsZWFmTmFtZSIsImxlbmd0aCIsInJlZHVjZSIsInJlc3VsdCIsImkiLCJMZWFmIiwia2V5Iiwic3BhbiIsIm1lbW9pemVkVmFsaWRhdGUiLCJ2YWx1ZSIsInZhbGlkYXRpb25PcHRpb25zIiwiZmllbGRUeXBlIiwidXNlRmllbGQiLCJlcnJvck1lc3NhZ2UiLCJpbml0aWFsVmFsdWUiLCJzZXRWYWx1ZSIsInNob3dFcnJvciIsImNsYXNzZXMiLCJCb29sZWFuIiwiam9pbiIsImVkaXRvciIsInVzZU1lbW8iLCJDcmVhdGVkRWRpdG9yIiwid2l0aEVudGVyQnJlYWtPdXQiLCJ3aXRoSGlzdG9yeSIsIndpdGhSZWFjdCIsImNyZWF0ZUVkaXRvciIsIndpdGhIVE1MIiwiZW5hYmxlUGx1Z2lucyIsImhhbmRsZUNoYW5nZSIsInZhbCIsIm9wcyIsIm9wZXJhdGlvbnMiLCJvIiwiQXJyYXkiLCJpc0FycmF5IiwiZGVmYXVsdFJpY2hUZXh0VmFsdWUiLCJ1c2VFZmZlY3QiLCJtZXJnZWRFbGVtZW50cyIsIm1lcmdlQ3VzdG9tRnVuY3Rpb25zIiwiZWxlbWVudFR5cGVzIiwibWVyZ2VkTGVhdmVzIiwibGVhZlR5cGVzIiwic2V0Q2xpY2thYmxlU3RhdGUiLCJjbGlja1N0YXRlIiwic2VsZWN0b3JzIiwidG9vbGJhckJ1dHRvbnMiLCJjdXJyZW50IiwicXVlcnlTZWxlY3RvckFsbCIsImZvckVhY2giLCJjaGlsZCIsImlzQnV0dG9uIiwidGFnTmFtZSIsImlzRGlzYWJsaW5nIiwic2V0QXR0cmlidXRlIiwidmFsdWVUb1JlbmRlciIsInBhcnNlZEpTT04iLCJKU09OIiwicGFyc2UiLCJlcnIiLCJFcnJvciIsIm1lc3NhZ2UiLCJMYWJlbCIsImh0bWxGb3IiLCJyZXBsYWNlIiwiU2xhdGUiLCJzdHJpbmdpZnkiLCJvbkNoYW5nZSIsInJlZiIsIm1hcCIsImVsZW1lbnROYW1lIiwiZWxlbWVudFR5cGUiLCJCdXR0b24iLCJsZWFmVHlwZSIsIkVkaXRhYmxlIiwiaWQiLCJvbktleURvd24iLCJldmVudCIsInNoaWZ0S2V5IiwicHJldmVudERlZmF1bHQiLCJpbnNlcnRUZXh0Iiwic2VsZWN0ZWRFbGVtZW50IiwiTm9kZSIsImRlc2NlbmRhbnQiLCJzZWxlY3Rpb24iLCJhbmNob3IiLCJzbGljZSIsIlNsYXRlRWxlbWVudCIsImlzRWxlbWVudCIsInNob3VsZEJyZWFrT3V0T25FbnRlciIsInNlbGVjdGVkTGVhZiIsIlRleHQiLCJpc1RleHQiLCJTdHJpbmciLCJ0ZXh0Iiwib2Zmc2V0IiwiVHJhbnNmb3JtcyIsImluc2VydE5vZGVzIiwic3BsaXROb2RlcyIsInNldE5vZGVzIiwidW53cmFwTm9kZXMiLCJtYXRjaCIsIm4iLCJsaXN0VHlwZXMiLCJpbmNsdWRlcyIsIm1vZGUiLCJzcGxpdCIsImlzVm9pZCIsInJlbW92ZU5vZGVzIiwia2V5cyIsImhvdGtleXMiLCJob3RrZXkiLCJpc0hvdGtleSIsIm1hcmsiLCJ0b2dnbGVMZWFmIiwiZ2V0VHJhbnNsYXRpb24iLCJzcGVsbENoZWNrIiwiRmllbGREZXNjcmlwdGlvbiIsIndpdGhDb25kaXRpb24iXSwibWFwcGluZ3MiOiI7Ozs7K0JBZ2NBOzs7ZUFBQTs7O2lFQTVicUI7dUJBQ21EOzJCQUMzQzs0QkFDRTsrREFDMEM7OEJBQzFDO3VCQUMrQzs4QkFDbEQ7NEJBQ2U7OEJBSU47NEJBQ1o7aUVBQ0E7a0VBQ0g7c0VBQ0k7Z0VBQ047UUFDYjsrREFDZTsrREFDQzs2RUFDVTswRUFDSDtpRUFDVDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXJCLE1BQU1BLGtCQUFxQztJQUN6QztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7Q0FDRDtBQUNELE1BQU1DLGdCQUFnQztJQUFDO0lBQVE7SUFBVTtJQUFhO0lBQWlCO0NBQU87QUFFOUYsTUFBTUMsWUFBWTtBQVVsQixNQUFNQyxXQUFpQyxDQUFDQztJQUN0QyxNQUFNLEVBQ0pDLElBQUksRUFDSkMsT0FBTyxFQUNMQyxTQUFTLEVBQ1RDLFNBQVMsRUFDVEMsV0FBVyxFQUNYQyxVQUFVLEVBQ1ZDLFdBQVcsRUFDWEMsUUFBUSxFQUNSQyxLQUFLLEVBQ0xDLEtBQUssRUFDTixHQUFHO1FBQ0ZQLFdBQVdRO1FBQ1hQLFdBQVdPO1FBQ1hOLGFBQWFNO1FBQ2JMLFlBQVlLO1FBQ1pKLGFBQWFJO1FBQ2JILFVBQVVHO1FBQ1ZGLE9BQU9FO1FBQ1BELE9BQU9DO0lBQ1QsQ0FBQyxFQUNEVCxLQUFLLEVBQ0xVLGNBQWNDLHFCQUFxQixFQUNuQ0MsS0FBSyxFQUNMQyxNQUFNQyxhQUFhLEVBQ25CQyxRQUFRLEVBQ1JDLFdBQVdDLG9CQUFRLEVBQ3BCLEdBQUduQjtJQUVKLE1BQU1vQixXQUE4QmxCLE9BQU9rQixZQUFZeEI7SUFDdkQsTUFBTXlCLFNBQXlC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
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ButtonProps } from './types';
|
|
3
|
+
import '../buttons.scss';
|
|
4
|
+
export declare const baseClass = "rich-text__button";
|
|
5
|
+
declare const ElementButton: React.FC<ButtonProps>;
|
|
6
|
+
export default ElementButton;
|
|
7
|
+
//# sourceMappingURL=Button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/field/elements/Button.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAGpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,OAAO,iBAAiB,CAAA;AAIxB,eAAO,MAAM,SAAS,sBAAsB,CAAA;AAE5C,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAmCxC,CAAA;AAED,eAAe,aAAa,CAAA"}
|