@pie-lib/editable-html-tip-tap 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/lib/components/CharacterPicker.js +221 -0
  2. package/lib/components/CharacterPicker.js.map +1 -0
  3. package/lib/components/EditableHtml.js +323 -0
  4. package/lib/components/EditableHtml.js.map +1 -0
  5. package/lib/components/MenuBar.js +694 -0
  6. package/lib/components/MenuBar.js.map +1 -0
  7. package/lib/components/TiptapContainer.js +90 -0
  8. package/lib/components/TiptapContainer.js.map +1 -0
  9. package/lib/components/buttons/done-button.js +53 -0
  10. package/lib/components/characters/characterUtils.js +112 -0
  11. package/lib/components/characters/characterUtils.js.map +1 -0
  12. package/lib/components/characters/custom-popper.js +73 -0
  13. package/lib/components/characters/custom-popper.js.map +1 -0
  14. package/lib/components/common/done-button.js +53 -0
  15. package/lib/components/common/done-button.js.map +1 -0
  16. package/lib/components/common/toolbar-buttons.js +194 -0
  17. package/lib/components/icons/CssIcon.js +37 -0
  18. package/lib/components/icons/CssIcon.js.map +1 -0
  19. package/lib/components/icons/RespArea.js +95 -0
  20. package/lib/components/icons/RespArea.js.map +1 -0
  21. package/lib/components/icons/TableIcons.js +69 -0
  22. package/lib/components/icons/TableIcons.js.map +1 -0
  23. package/lib/components/icons/TextAlign.js +194 -0
  24. package/lib/components/icons/TextAlign.js.map +1 -0
  25. package/lib/components/icons/index.js +194 -0
  26. package/lib/components/image/AltDialog.js +129 -0
  27. package/lib/components/image/ImageToolbar.js +177 -0
  28. package/lib/components/image/ImageToolbar.js.map +1 -0
  29. package/lib/components/image/InsertImageHandler.js +115 -0
  30. package/lib/components/image/InsertImageHandler.js.map +1 -0
  31. package/lib/components/image/alt-dialog.js +2 -0
  32. package/lib/components/media/MediaDialog.js +709 -0
  33. package/lib/components/media/MediaDialog.js.map +1 -0
  34. package/lib/components/media/MediaToolbar.js +101 -0
  35. package/lib/components/media/MediaToolbar.js.map +1 -0
  36. package/lib/components/media/MediaWrapper.js +93 -0
  37. package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js +94 -0
  38. package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js.map +1 -0
  39. package/lib/components/respArea/DragInTheBlank/choice.js +289 -0
  40. package/lib/components/respArea/DragInTheBlank/choice.js.map +1 -0
  41. package/lib/components/respArea/DragInTheBlank.js +94 -0
  42. package/lib/components/respArea/ExplicitConstructedResponse.js +120 -0
  43. package/lib/components/respArea/ExplicitConstructedResponse.js.map +1 -0
  44. package/lib/components/respArea/InlineDropdown.js +126 -0
  45. package/lib/components/respArea/InlineDropdown.js.map +1 -0
  46. package/lib/components/respArea/ToolbarIcon.js +105 -0
  47. package/lib/components/respArea/ToolbarIcon.js.map +1 -0
  48. package/lib/components/respArea/choice.js +2 -0
  49. package/lib/constants.js.map +1 -0
  50. package/lib/extensions/component.js +5 -5
  51. package/lib/extensions/component.js.map +1 -0
  52. package/lib/extensions/css.js.map +1 -0
  53. package/lib/extensions/custom-toolbar-wrapper.js +2 -4
  54. package/lib/extensions/custom-toolbar-wrapper.js.map +1 -0
  55. package/lib/extensions/extended-table.js +30 -0
  56. package/lib/extensions/extended-table.js.map +1 -0
  57. package/lib/extensions/image.js +2 -8
  58. package/lib/extensions/image.js.map +1 -0
  59. package/lib/extensions/index.js +52 -0
  60. package/lib/extensions/index.js.map +1 -0
  61. package/lib/extensions/math.js.map +1 -0
  62. package/lib/extensions/media.js +7 -7
  63. package/lib/extensions/media.js.map +1 -0
  64. package/lib/extensions/responseArea.js +7 -7
  65. package/lib/extensions/responseArea.js.map +1 -0
  66. package/lib/index.js +16 -1481
  67. package/lib/index.js.map +1 -0
  68. package/lib/plugins/index.js +8 -80
  69. package/lib/styles/editorContainerStyles.js +200 -0
  70. package/lib/styles/editorContainerStyles.js.map +1 -0
  71. package/lib/theme.js.map +1 -0
  72. package/lib/utils/size.js +34 -0
  73. package/lib/utils/size.js.map +1 -0
  74. package/package.json +1 -1
  75. package/src/components/CharacterPicker.jsx +185 -0
  76. package/src/components/EditableHtml.jsx +306 -0
  77. package/src/components/MenuBar.jsx +630 -0
  78. package/src/components/TiptapContainer.jsx +96 -0
  79. package/src/components/characters/characterUtils.js +127 -0
  80. package/src/{plugins/image/image-toolbar.jsx → components/image/ImageToolbar.jsx} +2 -2
  81. package/src/{plugins/image/insert-image-handler.js → components/image/InsertImageHandler.js} +0 -1
  82. package/src/{plugins/media/media-dialog.js → components/media/MediaDialog.js} +2 -2
  83. package/src/{plugins/respArea/drag-in-the-blank → components/respArea/DragInTheBlank}/choice.jsx +1 -1
  84. package/src/{plugins/respArea/inline-dropdown/index.jsx → components/respArea/InlineDropdown.jsx} +1 -1
  85. package/src/components/respArea/ToolbarIcon.jsx +68 -0
  86. package/src/extensions/component.jsx +2 -2
  87. package/src/extensions/custom-toolbar-wrapper.jsx +6 -7
  88. package/src/extensions/extended-table.js +27 -0
  89. package/src/extensions/image.js +2 -2
  90. package/src/extensions/index.js +76 -0
  91. package/src/extensions/media.js +12 -7
  92. package/src/extensions/responseArea.js +7 -7
  93. package/src/index.jsx +3 -1440
  94. package/src/styles/editorContainerStyles.js +203 -0
  95. package/src/utils/size.js +32 -0
  96. package/src/__tests__/editor.test.jsx +0 -363
  97. package/src/__tests__/serialization.test.js +0 -291
  98. package/src/block-tags.js +0 -17
  99. package/src/editor.jsx +0 -1197
  100. package/src/extensions/characters.js +0 -46
  101. package/src/old-index.jsx +0 -162
  102. package/src/parse-html.js +0 -8
  103. package/src/plugins/README.md +0 -27
  104. package/src/plugins/characters/index.jsx +0 -284
  105. package/src/plugins/characters/utils.js +0 -447
  106. package/src/plugins/css/index.jsx +0 -340
  107. package/src/plugins/customPlugin/index.jsx +0 -85
  108. package/src/plugins/html/icons/index.jsx +0 -19
  109. package/src/plugins/html/index.jsx +0 -72
  110. package/src/plugins/image/__tests__/__snapshots__/component.test.jsx.snap +0 -51
  111. package/src/plugins/image/__tests__/__snapshots__/image-toolbar-logic.test.jsx.snap +0 -27
  112. package/src/plugins/image/__tests__/__snapshots__/image-toolbar.test.jsx.snap +0 -44
  113. package/src/plugins/image/__tests__/component.test.jsx +0 -41
  114. package/src/plugins/image/__tests__/image-toolbar-logic.test.jsx +0 -42
  115. package/src/plugins/image/__tests__/image-toolbar.test.jsx +0 -11
  116. package/src/plugins/image/__tests__/index.test.js +0 -95
  117. package/src/plugins/image/__tests__/insert-image-handler.test.js +0 -113
  118. package/src/plugins/image/__tests__/mock-change.js +0 -15
  119. package/src/plugins/image/component.jsx +0 -343
  120. package/src/plugins/image/index.jsx +0 -227
  121. package/src/plugins/index.jsx +0 -377
  122. package/src/plugins/list/__tests__/index.test.js +0 -54
  123. package/src/plugins/list/index.jsx +0 -305
  124. package/src/plugins/math/__tests__/__snapshots__/index.test.jsx.snap +0 -48
  125. package/src/plugins/math/__tests__/index.test.jsx +0 -245
  126. package/src/plugins/math/index.jsx +0 -379
  127. package/src/plugins/media/__tests__/index.test.js +0 -75
  128. package/src/plugins/media/index.jsx +0 -325
  129. package/src/plugins/rendering/index.js +0 -31
  130. package/src/plugins/respArea/index.jsx +0 -299
  131. package/src/plugins/respArea/math-templated/index.jsx +0 -104
  132. package/src/plugins/respArea/utils.jsx +0 -90
  133. package/src/plugins/table/CustomTablePlugin.js +0 -113
  134. package/src/plugins/table/__tests__/__snapshots__/table-toolbar.test.jsx.snap +0 -44
  135. package/src/plugins/table/__tests__/index.test.jsx +0 -401
  136. package/src/plugins/table/__tests__/table-toolbar.test.jsx +0 -42
  137. package/src/plugins/table/index.jsx +0 -427
  138. package/src/plugins/table/table-toolbar.jsx +0 -136
  139. package/src/plugins/textAlign/index.jsx +0 -23
  140. package/src/plugins/toolbar/__tests__/__snapshots__/default-toolbar.test.jsx.snap +0 -923
  141. package/src/plugins/toolbar/__tests__/__snapshots__/editor-and-toolbar.test.jsx.snap +0 -20
  142. package/src/plugins/toolbar/__tests__/__snapshots__/toolbar-buttons.test.jsx.snap +0 -36
  143. package/src/plugins/toolbar/__tests__/__snapshots__/toolbar.test.jsx.snap +0 -46
  144. package/src/plugins/toolbar/__tests__/default-toolbar.test.jsx +0 -94
  145. package/src/plugins/toolbar/__tests__/editor-and-toolbar.test.jsx +0 -37
  146. package/src/plugins/toolbar/__tests__/toolbar-buttons.test.jsx +0 -51
  147. package/src/plugins/toolbar/__tests__/toolbar.test.jsx +0 -106
  148. package/src/plugins/toolbar/default-toolbar.jsx +0 -206
  149. package/src/plugins/toolbar/editor-and-toolbar.jsx +0 -257
  150. package/src/plugins/toolbar/index.jsx +0 -23
  151. package/src/plugins/toolbar/toolbar.jsx +0 -338
  152. package/src/plugins/utils.js +0 -31
  153. package/src/serialization.jsx +0 -621
  154. /package/src/{plugins → components}/characters/custom-popper.js +0 -0
  155. /package/src/{plugins/toolbar → components/common}/done-button.jsx +0 -0
  156. /package/src/{plugins/toolbar → components/common}/toolbar-buttons.jsx +0 -0
  157. /package/src/{plugins/css/icons/index.jsx → components/icons/CssIcon.jsx} +0 -0
  158. /package/src/{plugins/respArea/icons/index.jsx → components/icons/RespArea.jsx} +0 -0
  159. /package/src/{plugins/table/icons/index.jsx → components/icons/TableIcons.jsx} +0 -0
  160. /package/src/{plugins/textAlign/icons/index.jsx → components/icons/TextAlign.jsx} +0 -0
  161. /package/src/{plugins/image/alt-dialog.jsx → components/image/AltDialog.jsx} +0 -0
  162. /package/src/{plugins/media/media-toolbar.jsx → components/media/MediaToolbar.jsx} +0 -0
  163. /package/src/{plugins/media/media-wrapper.jsx → components/media/MediaWrapper.jsx} +0 -0
  164. /package/src/{plugins/respArea/drag-in-the-blank/index.jsx → components/respArea/DragInTheBlank/DragInTheBlank.jsx} +0 -0
  165. /package/src/{plugins/respArea/explicit-constructed-response/index.jsx → components/respArea/ExplicitConstructedResponse.jsx} +0 -0
@@ -0,0 +1,694 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
16
+ var _react = _interopRequireWildcard(require("react"));
17
+
18
+ var _classnames = _interopRequireDefault(require("classnames"));
19
+
20
+ var _styles = require("@material-ui/core/styles");
21
+
22
+ var _prosemirrorState = require("prosemirror-state");
23
+
24
+ var _FormatBold = _interopRequireDefault(require("@material-ui/icons/FormatBold"));
25
+
26
+ var _FormatItalic = _interopRequireDefault(require("@material-ui/icons/FormatItalic"));
27
+
28
+ var _FormatStrikethrough = _interopRequireDefault(require("@material-ui/icons/FormatStrikethrough"));
29
+
30
+ var _Code = _interopRequireDefault(require("@material-ui/icons/Code"));
31
+
32
+ var _GridOn = _interopRequireDefault(require("@material-ui/icons/GridOn"));
33
+
34
+ var _FormatListBulleted = _interopRequireDefault(require("@material-ui/icons/FormatListBulleted"));
35
+
36
+ var _FormatListNumbered = _interopRequireDefault(require("@material-ui/icons/FormatListNumbered"));
37
+
38
+ var _FormatUnderlined = _interopRequireDefault(require("@material-ui/icons/FormatUnderlined"));
39
+
40
+ var _Functions = _interopRequireDefault(require("@material-ui/icons/Functions"));
41
+
42
+ var _Image = _interopRequireDefault(require("@material-ui/icons/Image"));
43
+
44
+ var _Redo = _interopRequireDefault(require("@material-ui/icons/Redo"));
45
+
46
+ var _Undo = _interopRequireDefault(require("@material-ui/icons/Undo"));
47
+
48
+ var _Theaters = _interopRequireDefault(require("@material-ui/icons/Theaters"));
49
+
50
+ var _VolumeUp = _interopRequireDefault(require("@material-ui/icons/VolumeUp"));
51
+
52
+ var _BorderAll = _interopRequireDefault(require("@material-ui/icons/BorderAll"));
53
+
54
+ var _react2 = require("@tiptap/react");
55
+
56
+ var _constants = require("../constants");
57
+
58
+ var _ToolbarIcon = require("./respArea/ToolbarIcon");
59
+
60
+ var _characterUtils = require("./characters/characterUtils");
61
+
62
+ var _TextAlign = _interopRequireDefault(require("./icons/TextAlign"));
63
+
64
+ var _CssIcon = _interopRequireDefault(require("./icons/CssIcon"));
65
+
66
+ var _tableIcons = require("./icons/tableIcons");
67
+
68
+ var _CharacterPicker = require("./CharacterPicker");
69
+
70
+ var _doneButton = require("./common/done-button");
71
+
72
+ 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); }
73
+
74
+ 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; }
75
+
76
+ 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; }
77
+
78
+ 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; }
79
+
80
+ var SuperscriptIcon = function SuperscriptIcon() {
81
+ return /*#__PURE__*/_react["default"].createElement("svg", {
82
+ xmlns: "http://www.w3.org/2000/svg",
83
+ height: "24px",
84
+ viewBox: "0 0 24 24",
85
+ width: "24px",
86
+ fill: "none"
87
+ }, /*#__PURE__*/_react["default"].createElement("path", {
88
+ 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",
89
+ fill: "currentColor"
90
+ }));
91
+ };
92
+
93
+ var SubscriptIcon = function SubscriptIcon() {
94
+ return /*#__PURE__*/_react["default"].createElement("svg", {
95
+ xmlns: "http://www.w3.org/2000/svg",
96
+ height: "24px",
97
+ viewBox: "0 0 24 24",
98
+ width: "24px",
99
+ fill: "none"
100
+ }, /*#__PURE__*/_react["default"].createElement("path", {
101
+ 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",
102
+ fill: "currentColor"
103
+ }));
104
+ };
105
+
106
+ var HeadingIcon = function HeadingIcon() {
107
+ return /*#__PURE__*/_react["default"].createElement("svg", {
108
+ width: "30",
109
+ height: "28",
110
+ viewBox: "0 0 30 28",
111
+ fill: "none",
112
+ xmlns: "http://www.w3.org/2000/svg",
113
+ style: {
114
+ width: '20px',
115
+ height: '18px'
116
+ }
117
+ }, /*#__PURE__*/_react["default"].createElement("path", {
118
+ 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",
119
+ fill: "currentColor"
120
+ }));
121
+ };
122
+
123
+ function MenuBar(_ref) {
124
+ var _classNames;
125
+
126
+ var editor = _ref.editor,
127
+ classes = _ref.classes,
128
+ activePlugins = _ref.activePlugins,
129
+ toolOpts = _ref.toolbarOpts,
130
+ responseAreaProps = _ref.responseAreaProps,
131
+ onChange = _ref.onChange;
132
+
133
+ var _useState = (0, _react.useState)(false),
134
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
135
+ showPicker = _useState2[0],
136
+ setShowPicker = _useState2[1];
137
+
138
+ var toolbarOpts = toolOpts !== null && toolOpts !== void 0 ? toolOpts : {};
139
+ var editorState = (0, _react2.useEditorState)({
140
+ editor: editor,
141
+ selector: function selector(ctx) {
142
+ var _ctx$editor, _ctx$editor2, _ctx$editor3, _ctx$editor4, _ctx$editor5, _ctx$editor$isActive, _ctx$editor$can$chain, _ctx$editor$isActive2, _ref3, _ctx$editor$getAttrib, _ctx$editor$can$chain2, _ctx$editor$isActive3, _ctx$editor$can$chain3, _ctx$editor$isActive4, _ctx$editor$can$chain4, _ctx$editor$isActive5, _ctx$editor$can$chain5, _ctx$editor$can$chain6, _ctx$editor$isActive6, _ctx$editor$isActive7, _ctx$editor$isActive8, _ctx$editor$isActive9, _ctx$editor$isActive10, _ctx$editor$isActive11, _ctx$editor$isActive12, _ctx$editor$isActive13, _ctx$editor$isActive14, _ctx$editor$isActive15, _ctx$editor$isActive16, _ctx$editor$isActive17, _ctx$editor$isActive18, _ctx$editor$isActive19, _ctx$editor$can$chain7, _ctx$editor$can$chain8;
143
+
144
+ var _ref2 = ((_ctx$editor = ctx.editor) === null || _ctx$editor === void 0 ? void 0 : _ctx$editor.state) || {},
145
+ selection = _ref2.selection;
146
+
147
+ var currentNode;
148
+
149
+ if (selection instanceof _prosemirrorState.NodeSelection) {
150
+ currentNode = selection.node; // the selected node
151
+ }
152
+
153
+ var hideDefaultToolbar = ((_ctx$editor2 = ctx.editor) === null || _ctx$editor2 === void 0 ? void 0 : _ctx$editor2.isActive('math')) || ((_ctx$editor3 = ctx.editor) === null || _ctx$editor3 === void 0 ? void 0 : _ctx$editor3.isActive('explicit_constructed_response')) || ((_ctx$editor4 = ctx.editor) === null || _ctx$editor4 === void 0 ? void 0 : _ctx$editor4.isActive('imageUploadNode'));
154
+ return {
155
+ currentNode: currentNode,
156
+ hideDefaultToolbar: hideDefaultToolbar,
157
+ isFocused: (_ctx$editor5 = ctx.editor) === null || _ctx$editor5 === void 0 ? void 0 : _ctx$editor5.isFocused,
158
+ isBold: (_ctx$editor$isActive = ctx.editor.isActive('bold')) !== null && _ctx$editor$isActive !== void 0 ? _ctx$editor$isActive : false,
159
+ canBold: (_ctx$editor$can$chain = ctx.editor.can().chain().toggleBold().run()) !== null && _ctx$editor$can$chain !== void 0 ? _ctx$editor$can$chain : false,
160
+ isTable: (_ctx$editor$isActive2 = ctx.editor.isActive('table')) !== null && _ctx$editor$isActive2 !== void 0 ? _ctx$editor$isActive2 : false,
161
+ tableHasBorder: (_ref3 = ((_ctx$editor$getAttrib = ctx.editor.getAttributes('table')) === null || _ctx$editor$getAttrib === void 0 ? void 0 : _ctx$editor$getAttrib.border) === '1') !== null && _ref3 !== void 0 ? _ref3 : false,
162
+ canTable: (_ctx$editor$can$chain2 = ctx.editor.can().chain().insertTable().run()) !== null && _ctx$editor$can$chain2 !== void 0 ? _ctx$editor$can$chain2 : false,
163
+ isItalic: (_ctx$editor$isActive3 = ctx.editor.isActive('italic')) !== null && _ctx$editor$isActive3 !== void 0 ? _ctx$editor$isActive3 : false,
164
+ canItalic: (_ctx$editor$can$chain3 = ctx.editor.can().chain().toggleItalic().run()) !== null && _ctx$editor$can$chain3 !== void 0 ? _ctx$editor$can$chain3 : false,
165
+ isStrike: (_ctx$editor$isActive4 = ctx.editor.isActive('strike')) !== null && _ctx$editor$isActive4 !== void 0 ? _ctx$editor$isActive4 : false,
166
+ canStrike: (_ctx$editor$can$chain4 = ctx.editor.can().chain().toggleStrike().run()) !== null && _ctx$editor$can$chain4 !== void 0 ? _ctx$editor$can$chain4 : false,
167
+ isCode: (_ctx$editor$isActive5 = ctx.editor.isActive('code')) !== null && _ctx$editor$isActive5 !== void 0 ? _ctx$editor$isActive5 : false,
168
+ canCode: (_ctx$editor$can$chain5 = ctx.editor.can().chain().toggleCode().run()) !== null && _ctx$editor$can$chain5 !== void 0 ? _ctx$editor$can$chain5 : false,
169
+ canClearMarks: (_ctx$editor$can$chain6 = ctx.editor.can().chain().unsetAllMarks().run()) !== null && _ctx$editor$can$chain6 !== void 0 ? _ctx$editor$can$chain6 : false,
170
+ isUnderline: (_ctx$editor$isActive6 = ctx.editor.isActive('underline')) !== null && _ctx$editor$isActive6 !== void 0 ? _ctx$editor$isActive6 : false,
171
+ isSubScript: (_ctx$editor$isActive7 = ctx.editor.isActive('subscript')) !== null && _ctx$editor$isActive7 !== void 0 ? _ctx$editor$isActive7 : false,
172
+ isSuperScript: (_ctx$editor$isActive8 = ctx.editor.isActive('superscript')) !== null && _ctx$editor$isActive8 !== void 0 ? _ctx$editor$isActive8 : false,
173
+ isParagraph: (_ctx$editor$isActive9 = ctx.editor.isActive('paragraph')) !== null && _ctx$editor$isActive9 !== void 0 ? _ctx$editor$isActive9 : false,
174
+ isHeading1: (_ctx$editor$isActive10 = ctx.editor.isActive('heading', {
175
+ level: 1
176
+ })) !== null && _ctx$editor$isActive10 !== void 0 ? _ctx$editor$isActive10 : false,
177
+ isHeading2: (_ctx$editor$isActive11 = ctx.editor.isActive('heading', {
178
+ level: 2
179
+ })) !== null && _ctx$editor$isActive11 !== void 0 ? _ctx$editor$isActive11 : false,
180
+ isHeading3: (_ctx$editor$isActive12 = ctx.editor.isActive('heading', {
181
+ level: 3
182
+ })) !== null && _ctx$editor$isActive12 !== void 0 ? _ctx$editor$isActive12 : false,
183
+ isHeading4: (_ctx$editor$isActive13 = ctx.editor.isActive('heading', {
184
+ level: 4
185
+ })) !== null && _ctx$editor$isActive13 !== void 0 ? _ctx$editor$isActive13 : false,
186
+ isHeading5: (_ctx$editor$isActive14 = ctx.editor.isActive('heading', {
187
+ level: 5
188
+ })) !== null && _ctx$editor$isActive14 !== void 0 ? _ctx$editor$isActive14 : false,
189
+ isHeading6: (_ctx$editor$isActive15 = ctx.editor.isActive('heading', {
190
+ level: 6
191
+ })) !== null && _ctx$editor$isActive15 !== void 0 ? _ctx$editor$isActive15 : false,
192
+ isBulletList: (_ctx$editor$isActive16 = ctx.editor.isActive('bulletList')) !== null && _ctx$editor$isActive16 !== void 0 ? _ctx$editor$isActive16 : false,
193
+ isOrderedList: (_ctx$editor$isActive17 = ctx.editor.isActive('orderedList')) !== null && _ctx$editor$isActive17 !== void 0 ? _ctx$editor$isActive17 : false,
194
+ isCodeBlock: (_ctx$editor$isActive18 = ctx.editor.isActive('codeBlock')) !== null && _ctx$editor$isActive18 !== void 0 ? _ctx$editor$isActive18 : false,
195
+ isBlockquote: (_ctx$editor$isActive19 = ctx.editor.isActive('blockquote')) !== null && _ctx$editor$isActive19 !== void 0 ? _ctx$editor$isActive19 : false,
196
+ canUndo: (_ctx$editor$can$chain7 = ctx.editor.can().chain().undo().run()) !== null && _ctx$editor$can$chain7 !== void 0 ? _ctx$editor$can$chain7 : false,
197
+ canRedo: (_ctx$editor$can$chain8 = ctx.editor.can().chain().redo().run()) !== null && _ctx$editor$can$chain8 !== void 0 ? _ctx$editor$can$chain8 : false
198
+ };
199
+ }
200
+ });
201
+ var hasDoneButton = false;
202
+ var autoWidth = false;
203
+ var names = (0, _classnames["default"])(classes.toolbar, _constants.PIE_TOOLBAR__CLASS, (_classNames = {}, (0, _defineProperty2["default"])(_classNames, classes.toolbarWithNoDone, !hasDoneButton), (0, _defineProperty2["default"])(_classNames, classes.toolbarTop, toolbarOpts.position === 'top'), (0, _defineProperty2["default"])(_classNames, classes.toolbarRight, toolbarOpts.alignment === 'right'), (0, _defineProperty2["default"])(_classNames, classes.focused, toolbarOpts.alwaysVisible || editorState.isFocused && !editor._toolbarOpened), (0, _defineProperty2["default"])(_classNames, classes.autoWidth, autoWidth), (0, _defineProperty2["default"])(_classNames, classes.fullWidth, !autoWidth), (0, _defineProperty2["default"])(_classNames, classes.hidden, toolbarOpts.isHidden === true), _classNames));
204
+ var customStyles = toolbarOpts.minWidth !== undefined ? {
205
+ minWidth: toolbarOpts.minWidth
206
+ } : {};
207
+
208
+ var handleMouseDown = function handleMouseDown(e) {
209
+ e.preventDefault();
210
+ };
211
+
212
+ var toolbarButtons = (0, _react.useMemo)(function () {
213
+ return [{
214
+ icon: /*#__PURE__*/_react["default"].createElement(_GridOn["default"], null),
215
+ onClick: function onClick(editor) {
216
+ return editor.chain().focus().insertTable({
217
+ rows: 2,
218
+ cols: 2,
219
+ withHeaderRow: false
220
+ }).run();
221
+ },
222
+ hidden: function hidden(state) {
223
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('table')) || state.isTable;
224
+ },
225
+ isActive: function isActive(state) {
226
+ return state.isTable;
227
+ },
228
+ isDisabled: function isDisabled(state) {
229
+ return !state.canTable;
230
+ }
231
+ }, {
232
+ icon: /*#__PURE__*/_react["default"].createElement(_tableIcons.AddRow, null),
233
+ onClick: function onClick(editor) {
234
+ return editor.chain().focus().addRowAfter().run();
235
+ },
236
+ hidden: function hidden(state) {
237
+ return !state.isTable;
238
+ },
239
+ isActive: function isActive(state) {
240
+ return state.isTable;
241
+ },
242
+ isDisabled: function isDisabled(state) {
243
+ return !state.canTable;
244
+ }
245
+ }, {
246
+ icon: /*#__PURE__*/_react["default"].createElement(_tableIcons.RemoveRow, null),
247
+ onClick: function onClick(editor) {
248
+ return editor.chain().focus().deleteRow().run();
249
+ },
250
+ hidden: function hidden(state) {
251
+ return !state.isTable;
252
+ },
253
+ isActive: function isActive(state) {
254
+ return state.isTable;
255
+ },
256
+ isDisabled: function isDisabled(state) {
257
+ return !state.canTable;
258
+ }
259
+ }, {
260
+ icon: /*#__PURE__*/_react["default"].createElement(_tableIcons.AddColumn, null),
261
+ onClick: function onClick(editor) {
262
+ return editor.chain().focus().addColumnAfter().run();
263
+ },
264
+ hidden: function hidden(state) {
265
+ return !state.isTable;
266
+ },
267
+ isActive: function isActive(state) {
268
+ return state.isTable;
269
+ },
270
+ isDisabled: function isDisabled(state) {
271
+ return !state.canTable;
272
+ }
273
+ }, {
274
+ icon: /*#__PURE__*/_react["default"].createElement(_tableIcons.RemoveColumn, null),
275
+ onClick: function onClick(editor) {
276
+ return editor.chain().focus().deleteColumn().run();
277
+ },
278
+ hidden: function hidden(state) {
279
+ return !state.isTable;
280
+ },
281
+ isActive: function isActive(state) {
282
+ return state.isTable;
283
+ },
284
+ isDisabled: function isDisabled(state) {
285
+ return !state.canTable;
286
+ }
287
+ }, {
288
+ icon: /*#__PURE__*/_react["default"].createElement(_tableIcons.RemoveTable, null),
289
+ onClick: function onClick(editor) {
290
+ return editor.chain().focus().deleteTable().run();
291
+ },
292
+ hidden: function hidden(state) {
293
+ return !state.isTable;
294
+ },
295
+ isActive: function isActive(state) {
296
+ return state.isTable;
297
+ },
298
+ isDisabled: function isDisabled(state) {
299
+ return !state.canTable;
300
+ }
301
+ }, {
302
+ icon: /*#__PURE__*/_react["default"].createElement(_BorderAll["default"], null),
303
+ onClick: function onClick(editor) {
304
+ var tableAttrs = editor.getAttributes('table');
305
+
306
+ var update = _objectSpread(_objectSpread({}, tableAttrs), {}, {
307
+ border: tableAttrs.border !== '0' ? '0' : '1'
308
+ });
309
+
310
+ editor.commands.updateAttributes('table', update);
311
+ },
312
+ hidden: function hidden(state) {
313
+ return !state.isTable;
314
+ },
315
+ isActive: function isActive(state) {
316
+ return state.tableHasBorder;
317
+ },
318
+ isDisabled: function isDisabled(state) {
319
+ return !state.canTable;
320
+ }
321
+ }, {
322
+ icon: /*#__PURE__*/_react["default"].createElement(_FormatBold["default"], null),
323
+ onClick: function onClick(editor) {
324
+ return editor.chain().focus().toggleBold().run();
325
+ },
326
+ hidden: function hidden(state) {
327
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('bold')) || state.isTable;
328
+ },
329
+ isActive: function isActive(state) {
330
+ return state.isBold;
331
+ },
332
+ isDisabled: function isDisabled(state) {
333
+ return !state.canBold;
334
+ }
335
+ }, {
336
+ icon: /*#__PURE__*/_react["default"].createElement(_FormatItalic["default"], null),
337
+ onClick: function onClick(editor) {
338
+ return editor.chain().focus().toggleItalic().run();
339
+ },
340
+ hidden: function hidden(state) {
341
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('italic')) || state.isTable;
342
+ },
343
+ isActive: function isActive(state) {
344
+ return state.isItalic;
345
+ },
346
+ isDisabled: function isDisabled(state) {
347
+ return !state.canItalic;
348
+ }
349
+ }, {
350
+ icon: /*#__PURE__*/_react["default"].createElement(_FormatStrikethrough["default"], null),
351
+ onClick: function onClick(editor) {
352
+ return editor.chain().focus().toggleStrike().run();
353
+ },
354
+ hidden: function hidden(state) {
355
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('strikethrough')) || state.isTable;
356
+ },
357
+ isActive: function isActive(state) {
358
+ return state.isStrike;
359
+ },
360
+ isDisabled: function isDisabled(state) {
361
+ return !state.canStrike;
362
+ }
363
+ }, {
364
+ icon: /*#__PURE__*/_react["default"].createElement(_Code["default"], null),
365
+ onClick: function onClick(editor) {
366
+ return editor.chain().focus().toggleCode().run();
367
+ },
368
+ hidden: function hidden(state) {
369
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('code')) || state.isTable;
370
+ },
371
+ isActive: function isActive(state) {
372
+ return state.isCode;
373
+ },
374
+ isDisabled: function isDisabled(state) {
375
+ return !state.canCode;
376
+ }
377
+ }, {
378
+ icon: /*#__PURE__*/_react["default"].createElement(_FormatUnderlined["default"], null),
379
+ onClick: function onClick(editor) {
380
+ return editor.chain().focus().toggleUnderline().run();
381
+ },
382
+ hidden: function hidden(state) {
383
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('underline')) || state.isTable;
384
+ },
385
+ isActive: function isActive(state) {
386
+ return state.isUnderline;
387
+ }
388
+ }, {
389
+ icon: /*#__PURE__*/_react["default"].createElement(SubscriptIcon, null),
390
+ onClick: function onClick(editor) {
391
+ return editor.chain().focus().toggleSubscript().run();
392
+ },
393
+ hidden: function hidden(state) {
394
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('subscript')) || state.isTable;
395
+ },
396
+ isActive: function isActive(state) {
397
+ return state.isSubScript;
398
+ }
399
+ }, {
400
+ icon: /*#__PURE__*/_react["default"].createElement(SuperscriptIcon, null),
401
+ onClick: function onClick(editor) {
402
+ return editor.chain().focus().toggleSuperscript().run();
403
+ },
404
+ hidden: function hidden(state) {
405
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('superscript')) || state.isTable;
406
+ },
407
+ isActive: function isActive(state) {
408
+ return state.isSuperScript;
409
+ }
410
+ }, {
411
+ icon: /*#__PURE__*/_react["default"].createElement(_Image["default"], null),
412
+ hidden: function hidden(state) {
413
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('image')) || state.isTable;
414
+ },
415
+ onClick: function onClick(editor) {
416
+ return editor.chain().focus().setImageUploadNode().run();
417
+ }
418
+ }, {
419
+ icon: /*#__PURE__*/_react["default"].createElement(_Theaters["default"], null),
420
+ hidden: function hidden(state) {
421
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('video')) || state.isTable;
422
+ },
423
+ onClick: function onClick(editor) {
424
+ return editor.chain().focus().insertMedia({
425
+ type: 'video'
426
+ }).run();
427
+ }
428
+ }, {
429
+ icon: /*#__PURE__*/_react["default"].createElement(_VolumeUp["default"], null),
430
+ hidden: function hidden(state) {
431
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('audio')) || state.isTable;
432
+ },
433
+ onClick: function onClick(editor) {
434
+ return editor.chain().focus().insertMedia({
435
+ type: 'audio',
436
+ tag: 'audio'
437
+ }).run();
438
+ }
439
+ }, {
440
+ icon: /*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null),
441
+ hidden: function hidden(state) {
442
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('css')) || state.isTable;
443
+ },
444
+ onClick: function onClick(editor) {
445
+ return editor.commands.openCSSClassDialog();
446
+ }
447
+ }, {
448
+ icon: /*#__PURE__*/_react["default"].createElement(HeadingIcon, null),
449
+ hidden: function hidden(state) {
450
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('h3')) || state.isTable;
451
+ },
452
+ onClick: function onClick(editor) {
453
+ return editor.chain().focus().toggleHeading({
454
+ level: 3
455
+ }).run();
456
+ },
457
+ isActive: function isActive(state) {
458
+ return state.isHeading3;
459
+ }
460
+ }, {
461
+ icon: /*#__PURE__*/_react["default"].createElement(_Functions["default"], null),
462
+ hidden: function hidden() {
463
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('math'));
464
+ },
465
+ onClick: function onClick(editor) {
466
+ return editor.chain().focus().insertMath('').run();
467
+ }
468
+ }, {
469
+ icon: /*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterIcon, {
470
+ letter: "\xF1"
471
+ }),
472
+ hidden: function hidden(state) {
473
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('languageCharacters')) || state.isTable;
474
+ },
475
+ onClick: function onClick() {
476
+ return setShowPicker(_characterUtils.spanishConfig);
477
+ }
478
+ }, {
479
+ icon: /*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterIcon, {
480
+ letter: "\u20AC"
481
+ }),
482
+ hidden: function hidden(state) {
483
+ return (activePlugins === null || activePlugins === void 0 ? void 0 : activePlugins.filter(function (p) {
484
+ return p === 'languageCharacters';
485
+ }).length) !== 2 || state.isTable;
486
+ },
487
+ onClick: function onClick() {
488
+ return setShowPicker(_characterUtils.specialConfig);
489
+ }
490
+ }, {
491
+ icon: /*#__PURE__*/_react["default"].createElement(_TextAlign["default"], {
492
+ editor: editor
493
+ }),
494
+ hidden: function hidden(state) {
495
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('text-align')) || state.isTable;
496
+ },
497
+ onClick: function onClick() {}
498
+ }, {
499
+ icon: /*#__PURE__*/_react["default"].createElement(_FormatListBulleted["default"], null),
500
+ hidden: function hidden(state) {
501
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('bulleted-list')) || state.isTable;
502
+ },
503
+ onClick: function onClick(editor) {
504
+ return editor.chain().focus().toggleBulletList().run();
505
+ },
506
+ isActive: function isActive(state) {
507
+ return state.isBulletList;
508
+ }
509
+ }, {
510
+ icon: /*#__PURE__*/_react["default"].createElement(_FormatListNumbered["default"], null),
511
+ hidden: function hidden(state) {
512
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('numbered-list')) || state.isTable;
513
+ },
514
+ onClick: function onClick(editor) {
515
+ return editor.chain().focus().toggleOrderedList().run();
516
+ },
517
+ isActive: function isActive(state) {
518
+ return state.isOrderedList;
519
+ }
520
+ }, {
521
+ icon: /*#__PURE__*/_react["default"].createElement(_Undo["default"], null),
522
+ hidden: function hidden(state) {
523
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('undo')) || state.isTable;
524
+ },
525
+ onClick: function onClick(editor) {
526
+ return editor.chain().focus().undo().run();
527
+ },
528
+ isDisabled: function isDisabled(state) {
529
+ return !state.canUndo;
530
+ }
531
+ }, {
532
+ icon: /*#__PURE__*/_react["default"].createElement(_Redo["default"], null),
533
+ hidden: function hidden(state) {
534
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('redo')) || state.isTable;
535
+ },
536
+ onClick: function onClick(editor) {
537
+ return editor.chain().focus().redo().run();
538
+ },
539
+ isDisabled: function isDisabled(state) {
540
+ return !state.canRedo;
541
+ }
542
+ }];
543
+ }, [activePlugins, editor]);
544
+ return /*#__PURE__*/_react["default"].createElement("div", {
545
+ className: names,
546
+ style: _objectSpread({}, customStyles),
547
+ onMouseDown: handleMouseDown
548
+ }, !editorState.hideDefaultToolbar && /*#__PURE__*/_react["default"].createElement("div", {
549
+ className: classes.defaultToolbar,
550
+ tabIndex: "1"
551
+ }, /*#__PURE__*/_react["default"].createElement("div", {
552
+ className: classes.buttonsContainer
553
+ }, toolbarButtons.filter(function (btn) {
554
+ var _btn$hidden;
555
+
556
+ return !((_btn$hidden = btn.hidden) !== null && _btn$hidden !== void 0 && _btn$hidden.call(btn, editorState));
557
+ }).map(function (btn, index) {
558
+ var _btn$isDisabled, _btn$isActive;
559
+
560
+ var disabled = (_btn$isDisabled = btn.isDisabled) === null || _btn$isDisabled === void 0 ? void 0 : _btn$isDisabled.call(btn, editorState);
561
+ var active = (_btn$isActive = btn.isActive) === null || _btn$isActive === void 0 ? void 0 : _btn$isActive.call(btn, editorState);
562
+ return /*#__PURE__*/_react["default"].createElement("button", {
563
+ key: index,
564
+ disabled: disabled,
565
+ onClick: function onClick(e) {
566
+ e.preventDefault();
567
+ btn.onClick(editor);
568
+ },
569
+ className: (0, _classnames["default"])(classes.button, (0, _defineProperty2["default"])({}, classes.active, active))
570
+ }, btn.icon);
571
+ })), (activePlugins === null || activePlugins === void 0 ? void 0 : activePlugins.includes('responseArea')) && /*#__PURE__*/_react["default"].createElement("button", {
572
+ onClick: function onClick() {
573
+ editor.chain().focus().insertResponseArea(responseAreaProps.type).run();
574
+ },
575
+ className: classes.button
576
+ }, /*#__PURE__*/_react["default"].createElement(_ToolbarIcon.ToolbarIcon, null)), /*#__PURE__*/_react["default"].createElement(_doneButton.DoneButton, {
577
+ onClick: function onClick() {
578
+ onChange === null || onChange === void 0 ? void 0 : onChange(editor.getHTML());
579
+ editor.commands.blur();
580
+ }
581
+ })), showPicker && /*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
582
+ editor: editor,
583
+ opts: _objectSpread(_objectSpread({}, showPicker), {}, {
584
+ renderPopOver: function renderPopOver(ev, ch) {
585
+ return console.log('Show popover', ch);
586
+ },
587
+ closePopOver: function closePopOver() {
588
+ return console.log('Close popover');
589
+ }
590
+ }),
591
+ onClose: function onClose() {
592
+ return setShowPicker(false);
593
+ }
594
+ }));
595
+ }
596
+
597
+ var style = function style(theme) {
598
+ return {
599
+ defaultToolbar: {
600
+ display: 'flex',
601
+ width: '100%',
602
+ justifyContent: 'space-between'
603
+ },
604
+ buttonsContainer: {
605
+ alignItems: 'center',
606
+ display: 'flex',
607
+ width: '100%'
608
+ },
609
+ button: {
610
+ color: 'grey',
611
+ display: 'inline-flex',
612
+ padding: '2px',
613
+ background: 'none',
614
+ border: 'none',
615
+ cursor: 'pointer',
616
+ '&:hover': {
617
+ color: 'black'
618
+ },
619
+ '&:focus': {
620
+ outline: "2px solid ".concat(theme.palette.grey[700])
621
+ }
622
+ },
623
+ active: {
624
+ color: 'black'
625
+ },
626
+ disabled: {
627
+ opacity: 0.7,
628
+ cursor: 'not-allowed',
629
+ '& :hover': {
630
+ color: 'grey'
631
+ }
632
+ },
633
+ isActive: {
634
+ background: 'var(--purple)',
635
+ color: 'var(--white)'
636
+ },
637
+ toolbar: {
638
+ position: 'absolute',
639
+ zIndex: 20,
640
+ cursor: 'pointer',
641
+ justifyContent: 'space-between',
642
+ background: 'var(--editable-html-toolbar-bg, #efefef)',
643
+ minWidth: '280px',
644
+ margin: '5px 0 0 0',
645
+ padding: '2px',
646
+ boxShadow: '0px 1px 5px 0px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 3px 1px -2px rgba(0, 0, 0, 0.12)',
647
+ boxSizing: 'border-box',
648
+ display: 'flex',
649
+ opacity: 0,
650
+ pointerEvents: 'none'
651
+ },
652
+ toolbarWithNoDone: {
653
+ minWidth: '265px'
654
+ },
655
+ toolbarTop: {
656
+ top: '-45px'
657
+ },
658
+ toolbarRight: {
659
+ right: 0
660
+ },
661
+ fullWidth: {
662
+ width: '100%'
663
+ },
664
+ hidden: {
665
+ visibility: 'hidden'
666
+ },
667
+ autoWidth: {
668
+ width: 'auto'
669
+ },
670
+ focused: {
671
+ opacity: 1,
672
+ pointerEvents: 'auto'
673
+ },
674
+ iconRoot: {
675
+ width: '28px',
676
+ height: '28px',
677
+ padding: '4px',
678
+ verticalAlign: 'top'
679
+ },
680
+ label: {
681
+ color: 'var(--editable-html-toolbar-check, #00bb00)'
682
+ },
683
+ shared: {
684
+ display: 'flex'
685
+ }
686
+ };
687
+ };
688
+
689
+ var StyledMenuBar = (0, _styles.withStyles)(style, {
690
+ index: 1000
691
+ })(MenuBar);
692
+ var _default = StyledMenuBar;
693
+ exports["default"] = _default;
694
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL01lbnVCYXIuanN4Il0sIm5hbWVzIjpbIlN1cGVyc2NyaXB0SWNvbiIsIlN1YnNjcmlwdEljb24iLCJIZWFkaW5nSWNvbiIsIndpZHRoIiwiaGVpZ2h0IiwiTWVudUJhciIsImVkaXRvciIsImNsYXNzZXMiLCJhY3RpdmVQbHVnaW5zIiwidG9vbE9wdHMiLCJ0b29sYmFyT3B0cyIsInJlc3BvbnNlQXJlYVByb3BzIiwib25DaGFuZ2UiLCJzaG93UGlja2VyIiwic2V0U2hvd1BpY2tlciIsImVkaXRvclN0YXRlIiwic2VsZWN0b3IiLCJjdHgiLCJzdGF0ZSIsInNlbGVjdGlvbiIsImN1cnJlbnROb2RlIiwiTm9kZVNlbGVjdGlvbiIsIm5vZGUiLCJoaWRlRGVmYXVsdFRvb2xiYXIiLCJpc0FjdGl2ZSIsImlzRm9jdXNlZCIsImlzQm9sZCIsImNhbkJvbGQiLCJjYW4iLCJjaGFpbiIsInRvZ2dsZUJvbGQiLCJydW4iLCJpc1RhYmxlIiwidGFibGVIYXNCb3JkZXIiLCJnZXRBdHRyaWJ1dGVzIiwiYm9yZGVyIiwiY2FuVGFibGUiLCJpbnNlcnRUYWJsZSIsImlzSXRhbGljIiwiY2FuSXRhbGljIiwidG9nZ2xlSXRhbGljIiwiaXNTdHJpa2UiLCJjYW5TdHJpa2UiLCJ0b2dnbGVTdHJpa2UiLCJpc0NvZGUiLCJjYW5Db2RlIiwidG9nZ2xlQ29kZSIsImNhbkNsZWFyTWFya3MiLCJ1bnNldEFsbE1hcmtzIiwiaXNVbmRlcmxpbmUiLCJpc1N1YlNjcmlwdCIsImlzU3VwZXJTY3JpcHQiLCJpc1BhcmFncmFwaCIsImlzSGVhZGluZzEiLCJsZXZlbCIsImlzSGVhZGluZzIiLCJpc0hlYWRpbmczIiwiaXNIZWFkaW5nNCIsImlzSGVhZGluZzUiLCJpc0hlYWRpbmc2IiwiaXNCdWxsZXRMaXN0IiwiaXNPcmRlcmVkTGlzdCIsImlzQ29kZUJsb2NrIiwiaXNCbG9ja3F1b3RlIiwiY2FuVW5kbyIsInVuZG8iLCJjYW5SZWRvIiwicmVkbyIsImhhc0RvbmVCdXR0b24iLCJhdXRvV2lkdGgiLCJuYW1lcyIsInRvb2xiYXIiLCJQSUVfVE9PTEJBUl9fQ0xBU1MiLCJ0b29sYmFyV2l0aE5vRG9uZSIsInRvb2xiYXJUb3AiLCJwb3NpdGlvbiIsInRvb2xiYXJSaWdodCIsImFsaWdubWVudCIsImZvY3VzZWQiLCJhbHdheXNWaXNpYmxlIiwiX3Rvb2xiYXJPcGVuZWQiLCJmdWxsV2lkdGgiLCJoaWRkZW4iLCJpc0hpZGRlbiIsImN1c3RvbVN0eWxlcyIsIm1pbldpZHRoIiwidW5kZWZpbmVkIiwiaGFuZGxlTW91c2VEb3duIiwiZSIsInByZXZlbnREZWZhdWx0IiwidG9vbGJhckJ1dHRvbnMiLCJpY29uIiwib25DbGljayIsImZvY3VzIiwicm93cyIsImNvbHMiLCJ3aXRoSGVhZGVyUm93IiwiaW5jbHVkZXMiLCJpc0Rpc2FibGVkIiwiYWRkUm93QWZ0ZXIiLCJkZWxldGVSb3ciLCJhZGRDb2x1bW5BZnRlciIsImRlbGV0ZUNvbHVtbiIsImRlbGV0ZVRhYmxlIiwidGFibGVBdHRycyIsInVwZGF0ZSIsImNvbW1hbmRzIiwidXBkYXRlQXR0cmlidXRlcyIsInRvZ2dsZVVuZGVybGluZSIsInRvZ2dsZVN1YnNjcmlwdCIsInRvZ2dsZVN1cGVyc2NyaXB0Iiwic2V0SW1hZ2VVcGxvYWROb2RlIiwiaW5zZXJ0TWVkaWEiLCJ0eXBlIiwidGFnIiwib3BlbkNTU0NsYXNzRGlhbG9nIiwidG9nZ2xlSGVhZGluZyIsImluc2VydE1hdGgiLCJzcGFuaXNoQ29uZmlnIiwiZmlsdGVyIiwicCIsImxlbmd0aCIsInNwZWNpYWxDb25maWciLCJ0b2dnbGVCdWxsZXRMaXN0IiwidG9nZ2xlT3JkZXJlZExpc3QiLCJkZWZhdWx0VG9vbGJhciIsImJ1dHRvbnNDb250YWluZXIiLCJidG4iLCJtYXAiLCJpbmRleCIsImRpc2FibGVkIiwiYWN0aXZlIiwiYnV0dG9uIiwiaW5zZXJ0UmVzcG9uc2VBcmVhIiwiZ2V0SFRNTCIsImJsdXIiLCJyZW5kZXJQb3BPdmVyIiwiZXYiLCJjaCIsImNvbnNvbGUiLCJsb2ciLCJjbG9zZVBvcE92ZXIiLCJzdHlsZSIsInRoZW1lIiwiZGlzcGxheSIsImp1c3RpZnlDb250ZW50IiwiYWxpZ25JdGVtcyIsImNvbG9yIiwicGFkZGluZyIsImJhY2tncm91bmQiLCJjdXJzb3IiLCJvdXRsaW5lIiwicGFsZXR0ZSIsImdyZXkiLCJvcGFjaXR5IiwiekluZGV4IiwibWFyZ2luIiwiYm94U2hhZG93IiwiYm94U2l6aW5nIiwicG9pbnRlckV2ZW50cyIsInRvcCIsInJpZ2h0IiwidmlzaWJpbGl0eSIsImljb25Sb290IiwidmVydGljYWxBbGlnbiIsImxhYmVsIiwic2hhcmVkIiwiU3R5bGVkTWVudUJhciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCO0FBQUEsc0JBQ3RCO0FBQUssSUFBQSxLQUFLLEVBQUMsNEJBQVg7QUFBd0MsSUFBQSxNQUFNLEVBQUMsTUFBL0M7QUFBc0QsSUFBQSxPQUFPLEVBQUMsV0FBOUQ7QUFBMEUsSUFBQSxLQUFLLEVBQUMsTUFBaEY7QUFBdUYsSUFBQSxJQUFJLEVBQUM7QUFBNUYsa0JBQ0U7QUFDRSxJQUFBLENBQUMsRUFBQyxnTkFESjtBQUVFLElBQUEsSUFBSSxFQUFDO0FBRlAsSUFERixDQURzQjtBQUFBLENBQXhCOztBQVNBLElBQU1DLGFBQWEsR0FBRyxTQUFoQkEsYUFBZ0I7QUFBQSxzQkFDcEI7QUFBSyxJQUFBLEtBQUssRUFBQyw0QkFBWDtBQUF3QyxJQUFBLE1BQU0sRUFBQyxNQUEvQztBQUFzRCxJQUFBLE9BQU8sRUFB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LEVBQUU7QUFDVDlFLE1BQUFBLEtBQUssRUFBRTtBQURFLEtBaEVhO0FBbUV4QitFLElBQUFBLE1BQU0sRUFBRTtBQUNOZ0YsTUFBQUEsVUFBVSxFQUFFO0FBRE4sS0FuRWdCO0FBc0V4QjdGLElBQUFBLFNBQVMsRUFBRTtBQUNUbEUsTUFBQUEsS0FBSyxFQUFFO0FBREUsS0F0RWE7QUF5RXhCMkUsSUFBQUEsT0FBTyxFQUFFO0FBQ1A0RSxNQUFBQSxPQUFPLEVBQUUsQ0FERjtBQUVQSyxNQUFBQSxhQUFhLEVBQUU7QUFGUixLQXpFZTtBQTZFeEJJLElBQUFBLFFBQVEsRUFBRTtBQUNSaEssTUFBQUEsS0FBSyxFQUFFLE1BREM7QUFFUkMsTUFBQUEsTUFBTSxFQUFFLE1BRkE7QUFHUmdKLE1BQUFBLE9BQU8sRUFBRSxLQUhEO0FBSVJnQixNQUFBQSxhQUFhLEVBQUU7QUFKUCxLQTdFYztBQW1GeEJDLElBQUFBLEtBQUssRUFBRTtBQUNMbEIsTUFBQUEsS0FBSyxFQUFFO0FBREYsS0FuRmlCO0FBc0Z4Qm1CLElBQUFBLE1BQU0sRUFBRTtBQUNOdEIsTUFBQUEsT0FBTyxFQUFFO0FBREg7QUF0RmdCLEdBQVo7QUFBQSxDQUFkOztBQTJGQSxJQUFNdUIsYUFBYSxHQUFHLHdCQUFXekIsS0FBWCxFQUFrQjtBQUFFYixFQUFBQSxLQUFLLEVBQUU7QUFBVCxDQUFsQixFQUFtQzVILE9BQW5DLENBQXRCO2VBRWVrSyxhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvc3R5bGVzJztcbmltcG9ydCB7IE5vZGVTZWxlY3Rpb24gfSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XG5cbmltcG9ydCBCb2xkIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9Gb3JtYXRCb2xkJztcbmltcG9ydCBJdGFsaWMgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Zvcm1hdEl0YWxpYyc7XG5pbXBvcnQgU3RyaWtldGhyb3VnaCBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRm9ybWF0U3RyaWtldGhyb3VnaCc7XG5pbXBvcnQgQ29kZSBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvQ29kZSc7XG5pbXBvcnQgR3JpZE9uIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9HcmlkT24nO1xuaW1wb3J0IEJ1bGxldGVkTGlzdEljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Zvcm1hdExpc3RCdWxsZXRlZCc7XG5pbXBvcnQgTnVtYmVyZWRMaXN0SWNvbiBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRm9ybWF0TGlzdE51bWJlcmVkJztcbmltcG9ydCBVbmRlcmxpbmUgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Zvcm1hdFVuZGVybGluZWQnO1xuaW1wb3J0IEZ1bmN0aW9ucyBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRnVuY3Rpb25zJztcbmltcG9ydCBJbWFnZUljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0ltYWdlJztcbmltcG9ydCBSZWRvIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9SZWRvJztcbmltcG9ydCBVbmRvIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9VbmRvJztcbmltcG9ydCBUaGVhdGVyc0ljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL1RoZWF0ZXJzJztcbmltcG9ydCBWb2x1bWVVcEljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL1ZvbHVtZVVwJztcbmltcG9ydCBCb3JkZXJBbGwgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0JvcmRlckFsbCc7XG5cbmltcG9ydCB7IEVkaXRvckNvbnRlbnQsIHVzZUVkaXRvclN0YXRlIH0gZnJvbSAnQHRpcHRhcC9yZWFjdCc7XG5cbmltcG9ydCB7IFBJRV9UT09MQkFSX19DTEFTUyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUb29sYmFySWNvbiB9IGZyb20gJy4vcmVzcEFyZWEvVG9vbGJhckljb24nO1xuaW1wb3J0IHsgc3BhbmlzaENvbmZpZywgc3BlY2lhbENvbmZpZyB9IGZyb20gJy4vY2hhcmFjdGVycy9jaGFyYWN0ZXJVdGlscyc7XG5pbXBvcnQgVGV4dEFsaWduSWNvbiBmcm9tICcuL2ljb25zL1RleHRBbGlnbic7XG5pbXBvcnQgQ1NTSWNvbiBmcm9tICcuL2ljb25zL0Nzc0ljb24nO1xuaW1wb3J0IHsgQWRkQ29sdW1uLCBBZGRSb3csIFJlbW92ZUNvbHVtbiwgUmVtb3ZlUm93LCBSZW1vdmVUYWJsZSB9IGZyb20gJy4vaWNvbnMvdGFibGVJY29ucyc7XG5cbmltcG9ydCB7IENoYXJhY3Rlckljb24sIENoYXJhY3RlclBpY2tlciB9IGZyb20gJy4vQ2hhcmFjdGVyUGlja2VyJztcbmltcG9ydCB7IERvbmVCdXR0b24gfSBmcm9tICcuL2NvbW1vbi9kb25lLWJ1dHRvbic7XG5cbmNvbnN0IFN1cGVyc2NyaXB0SWNvbiA9ICgpID0+IChcbiAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjRweFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0cHhcIiBmaWxsPVwibm9uZVwiPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTIyLDdoLTJ2MWgzdjFoLTRWN2MwLTAuNTUsMC40NS0xLDEtMWgyVjVoLTNWNGgzYzAuNTUsMCwxLDAuNDUsMSwxdjFDMjMsNi41NSwyMi41NSw3LDIyLDd6IE01Ljg4LDIwaDIuNjZsMy40LTUuNDJoMC4xMiBsMy40LDUuNDJoMi42NmwtNC42NS03LjI3TDE3LjgxLDZoLTIuNjhsLTMuMDcsNC45OWgtMC4xMkw4Ljg1LDZINi4xOWw0LjMyLDYuNzNMNS44OCwyMHpcIlxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgLz5cbiAgPC9zdmc+XG4pO1xuXG5jb25zdCBTdWJzY3JpcHRJY29uID0gKCkgPT4gKFxuICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBoZWlnaHQ9XCIyNHB4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRweFwiIGZpbGw9XCJub25lXCI+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNMjIsMThoLTJ2MWgzdjFoLTR2LTJjMC0wLjU1LDAuNDUtMSwxLTFoMnYtMWgtM3YtMWgzYzAuNTUsMCwxLDAuNDUsMSwxdjFDMjMsMTcuNTUsMjIuNTUsMTgsMjIsMTh6IE01Ljg4LDE4aDIuNjYgbDMuNC01LjQyaDAuMTJsMy40LDUuNDJoMi42NmwtNC42NS03LjI3TDE3LjgxLDRoLTIuNjhsLTMuMDcsNC45OWgtMC4xMkw4Ljg1LDRINi4xOWw0LjMyLDYuNzNMNS44OCwxOHpcIlxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgLz5cbiAgPC9zdmc+XG4pO1xuXG5jb25zdCBIZWFkaW5nSWNvbiA9ICgpID0+IChcbiAgPHN2Z1xuICAgIHdpZHRoPVwiMzBcIlxuICAgIGhlaWdodD1cIjI4XCJcbiAgICB2aWV3Qm94PVwiMCAwIDMwIDI4XCJcbiAgICBmaWxsPVwibm9uZVwiXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgc3R5bGU9e3sgd2lkdGg6ICcyMHB4JywgaGVpZ2h0OiAnMThweCcgfX1cbiAgPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTI3IDRWMjRIMjlDMjkuNSAyNCAzMCAyNC41IDMwIDI1VjI3QzMwIDI3LjU2MjUgMjkuNSAyOCAyOSAyOEgxOUMxOC40Mzc1IDI4IDE4IDI3LjU2MjUgMTggMjdWMjVDMTggMjQuNSAxOC40Mzc1IDI0IDE5IDI0SDIxVjE2SDlWMjRIMTFDMTEuNSAyNCAxMiAyNC41IDEyIDI1VjI3QzEyIDI3LjU2MjUgMTEuNSAyOCAxMSAyOEgxQzAuNDM3NSAyOCAwIDI3LjU2MjUgMCAyN1YyNUMwIDI0LjUgMC40Mzc1IDI0IDEgMjRIM1Y0SDFDMC40Mzc1IDQgMCAzLjU2MjUgMCAzVjFDMCAwLjUgMC40Mzc1IDAgMSAwSDExQzExLjUgMCAxMiAwLjUgMTIgMVYzQzEyIDMuNTYyNSAxMS41IDQgMTEgNEg5VjEySDIxVjRIMTlDMTguNDM3NSA0IDE4IDMuNTYyNSAxOCAzVjFDMTggMC41IDE4LjQzNzUgMCAxOSAwSDI5QzI5LjUgMCAzMCAwLjUgMzAgMVYzQzMwIDMuNTYyNSAyOS41IDQgMjkgNEgyN1pcIlxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgLz5cbiAgPC9zdmc+XG4pO1xuXG5mdW5jdGlvbiBNZW51QmFyKHsgZWRpdG9yLCBjbGFzc2VzLCBhY3RpdmVQbHVnaW5zLCB0b29sYmFyT3B0czogdG9vbE9wdHMsIHJlc3BvbnNlQXJlYVByb3BzLCBvbkNoYW5nZSB9KSB7XG4gIGNvbnN0IFtzaG93UGlja2VyLCBzZXRTaG93UGlja2VyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgdG9vbGJhck9wdHMgPSB0b29sT3B0cyA/PyB7fTtcblxuICBjb25zdCBlZGl0b3JTdGF0ZSA9IHVzZUVkaXRvclN0YXRlKHtcbiAgICBlZGl0b3IsXG4gICAgc2VsZWN0b3I6IChjdHgpID0+IHtcbiAgICAgIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSBjdHguZWRpdG9yPy5zdGF0ZSB8fCB7fTtcblxuICAgICAgbGV0IGN1cnJlbnROb2RlO1xuXG4gICAgICBpZiAoc2VsZWN0aW9uIGluc3RhbmNlb2YgTm9kZVNlbGVjdGlvbikge1xuICAgICAgICBjdXJyZW50Tm9kZSA9IHNlbGVjdGlvbi5ub2RlOyAvLyB0aGUgc2VsZWN0ZWQgbm9kZVxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaWRlRGVmYXVsdFRvb2xiYXIgPVxuICAgICAgICBjdHguZWRpdG9yPy5pc0FjdGl2ZSgnbWF0aCcpIHx8XG4gICAgICAgIGN0eC5lZGl0b3I/LmlzQWN0aXZlKCdleHBsaWNpdF9jb25zdHJ1Y3RlZF9yZXNwb25zZScpIHx8XG4gICAgICAgIGN0eC5lZGl0b3I/LmlzQWN0aXZlKCdpbWFnZVVwbG9hZE5vZGUnKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY3VycmVudE5vZGUsXG4gICAgICAgIGhpZGVEZWZhdWx0VG9vbGJhcixcbiAgICAgICAgaXNGb2N1c2VkOiBjdHguZWRpdG9yPy5pc0ZvY3VzZWQsXG4gICAgICAgIGlzQm9sZDogY3R4LmVkaXRvci5pc0FjdGl2ZSgnYm9sZCcpID8/IGZhbHNlLFxuICAgICAgICBjYW5Cb2xkOlxuICAgICAgICAgIGN0eC5lZGl0b3JcbiAgICAgICAgICAgIC5jYW4oKVxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC50b2dnbGVCb2xkKClcbiAgICAgICAgICAgIC5ydW4oKSA/PyBmYWxzZSxcbiAgICAgICAgaXNUYWJsZTogY3R4LmVkaXRvci5pc0FjdGl2ZSgndGFibGUnKSA/PyBmYWxzZSxcbiAgICAgICAgdGFibGVIYXNCb3JkZXI6IGN0eC5lZGl0b3IuZ2V0QXR0cmlidXRlcygndGFibGUnKT8uYm9yZGVyID09PSAnMScgPz8gZmFsc2UsXG4gICAgICAgIGNhblRhYmxlOlxuICAgICAgICAgIGN0eC5lZGl0b3JcbiAgICAgICAgICAgIC5jYW4oKVxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5pbnNlcnRUYWJsZSgpXG4gICAgICAgICAgICAucnVuKCkgPz8gZmFsc2UsXG4gICAgICAgIGlzSXRhbGljOiBjdHguZWRpdG9yLmlzQWN0aXZlKCdpdGFsaWMnKSA/PyBmYWxzZSxcbiAgICAgICAgY2FuSXRhbGljOlxuICAgICAgICAgIGN0eC5lZGl0b3JcbiAgICAgICAgICAgIC5jYW4oKVxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC50b2dnbGVJdGFsaWMoKVxuICAgICAgICAgICAgLnJ1bigpID8/IGZhbHNlLFxuICAgICAgICBpc1N0cmlrZTogY3R4LmVkaXRvci5pc0FjdGl2ZSgnc3RyaWtlJykgPz8gZmFsc2UsXG4gICAgICAgIGNhblN0cmlrZTpcbiAgICAgICAgICBjdHguZWRpdG9yXG4gICAgICAgICAgICAuY2FuKClcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAudG9nZ2xlU3RyaWtlKClcbiAgICAgICAgICAgIC5ydW4oKSA/PyBmYWxzZSxcbiAgICAgICAgaXNDb2RlOiBjdHguZWRpdG9yLmlzQWN0aXZlKCdjb2RlJykgPz8gZmFsc2UsXG4gICAgICAgIGNhbkNvZGU6XG4gICAgICAgICAgY3R4LmVkaXRvclxuICAgICAgICAgICAgLmNhbigpXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLnRvZ2dsZUNvZGUoKVxuICAgICAgICAgICAgLnJ1bigpID8/IGZhbHNlLFxuICAgICAgICBjYW5DbGVhck1hcmtzOlxuICAgICAgICAgIGN0eC5lZGl0b3JcbiAgICAgICAgICAgIC5jYW4oKVxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC51bnNldEFsbE1hcmtzKClcbiAgICAgICAgICAgIC5ydW4oKSA/PyBmYWxzZSxcbiAgICAgICAgaXNVbmRlcmxpbmU6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ3VuZGVybGluZScpID8/IGZhbHNlLFxuICAgICAgICBpc1N1YlNjcmlwdDogY3R4LmVkaXRvci5pc0FjdGl2ZSgnc3Vic2NyaXB0JykgPz8gZmFsc2UsXG4gICAgICAgIGlzU3VwZXJTY3JpcHQ6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ3N1cGVyc2NyaXB0JykgPz8gZmFsc2UsXG4gICAgICAgIGlzUGFyYWdyYXBoOiBjdHguZWRpdG9yLmlzQWN0aXZlKCdwYXJhZ3JhcGgnKSA/PyBmYWxzZSxcbiAgICAgICAgaXNIZWFkaW5nMTogY3R4LmVkaXRvci5pc0FjdGl2ZSgnaGVhZGluZycsIHsgbGV2ZWw6IDEgfSkgPz8gZmFsc2UsXG4gICAgICAgIGlzSGVhZGluZzI6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ2hlYWRpbmcnLCB7IGxldmVsOiAyIH0pID8/IGZhbHNlLFxuICAgICAgICBpc0hlYWRpbmczOiBjdHguZWRpdG9yLmlzQWN0aXZlKCdoZWFkaW5nJywgeyBsZXZlbDogMyB9KSA/PyBmYWxzZSxcbiAgICAgICAgaXNIZWFkaW5nNDogY3R4LmVkaXRvci5pc0FjdGl2ZSgnaGVhZGluZycsIHsgbGV2ZWw6IDQgfSkgPz8gZmFsc2UsXG4gICAgICAgIGlzSGVhZGluZzU6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ2hlYWRpbmcnLCB7IGxldmVsOiA1IH0pID8/IGZhbHNlLFxuICAgICAgICBpc0hlYWRpbmc2OiBjdHguZWRpdG9yLmlzQWN0aXZlKCdoZWFkaW5nJywgeyBsZXZlbDogNiB9KSA/PyBmYWxzZSxcbiAgICAgICAgaXNCdWxsZXRMaXN0OiBjdHguZWRpdG9yLmlzQWN0aXZlKCdidWxsZXRMaXN0JykgPz8gZmFsc2UsXG4gICAgICAgIGlzT3JkZXJlZExpc3Q6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ29yZGVyZWRMaXN0JykgPz8gZmFsc2UsXG4gICAgICAgIGlzQ29kZUJsb2NrOiBjdHguZWRpdG9yLmlzQWN0aXZlKCdjb2RlQmxvY2snKSA/PyBmYWxzZSxcbiAgICAgICAgaXNCbG9ja3F1b3RlOiBjdHguZWRpdG9yLmlzQWN0aXZlKCdibG9ja3F1b3RlJykgPz8gZmFsc2UsXG4gICAgICAgIGNhblVuZG86XG4gICAgICAgICAgY3R4LmVkaXRvclxuICAgICAgICAgICAgLmNhbigpXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLnVuZG8oKVxuICAgICAgICAgICAgLnJ1bigpID8/IGZhbHNlLFxuICAgICAgICBjYW5SZWRvOlxuICAgICAgICAgIGN0eC5lZGl0b3JcbiAgICAgICAgICAgIC5jYW4oKVxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5yZWRvKClcbiAgICAgICAgICAgIC5ydW4oKSA/PyBmYWxzZSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3QgaGFzRG9uZUJ1dHRvbiA9IGZhbHNlO1xuICBjb25zdCBhdXRvV2lkdGggPSBmYWxzZTtcblxuICBjb25zdCBuYW1lcyA9IGNsYXNzTmFtZXMoY2xhc3Nlcy50b29sYmFyLCBQSUVfVE9PTEJBUl9fQ0xBU1MsIHtcbiAgICBbY2xhc3Nlcy50b29sYmFyV2l0aE5vRG9uZV06ICFoYXNEb25lQnV0dG9uLFxuICAgIFtjbGFzc2VzLnRvb2xiYXJUb3BdOiB0b29sYmFyT3B0cy5wb3NpdGlvbiA9PT0gJ3RvcCcsXG4gICAgW2NsYXNzZXMudG9vbGJhclJpZ2h0XTogdG9vbGJhck9wdHMuYWxpZ25tZW50ID09PSAncmlnaHQnLFxuICAgIFtjbGFzc2VzLmZvY3VzZWRdOiB0b29sYmFyT3B0cy5hbHdheXNWaXNpYmxlIHx8IChlZGl0b3JTdGF0ZS5pc0ZvY3VzZWQgJiYgIWVkaXRvci5fdG9vbGJhck9wZW5lZCksXG4gICAgW2NsYXNzZXMuYXV0b1dpZHRoXTogYXV0b1dpZHRoLFxuICAgIFtjbGFzc2VzLmZ1bGxXaWR0aF06ICFhdXRvV2lkdGgsXG4gICAgW2NsYXNzZXMuaGlkZGVuXTogdG9vbGJhck9wdHMuaXNIaWRkZW4gPT09IHRydWUsXG4gIH0pO1xuXG4gIGNvbnN0IGN1c3RvbVN0eWxlcyA9IHRvb2xiYXJPcHRzLm1pbldpZHRoICE9PSB1bmRlZmluZWQgPyB7IG1pbldpZHRoOiB0b29sYmFyT3B0cy5taW5XaWR0aCB9IDoge307XG5cbiAgY29uc3QgaGFuZGxlTW91c2VEb3duID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH07XG5cbiAgY29uc3QgdG9vbGJhckJ1dHRvbnMgPSB1c2VNZW1vKFxuICAgICgpID0+IFtcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPEdyaWRPbiAvPixcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLmluc2VydFRhYmxlKHsgcm93czogMiwgY29sczogMiwgd2l0aEhlYWRlclJvdzogZmFsc2UgfSlcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygndGFibGUnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5UYWJsZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxBZGRSb3cgLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC5hZGRSb3dBZnRlcigpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgaXNEaXNhYmxlZDogKHN0YXRlKSA9PiAhc3RhdGUuY2FuVGFibGUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8UmVtb3ZlUm93IC8+LFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAuZGVsZXRlUm93KClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5UYWJsZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxBZGRDb2x1bW4gLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC5hZGRDb2x1bW5BZnRlcigpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgaXNEaXNhYmxlZDogKHN0YXRlKSA9PiAhc3RhdGUuY2FuVGFibGUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8UmVtb3ZlQ29sdW1uIC8+LFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAuZGVsZXRlQ29sdW1uKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5UYWJsZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxSZW1vdmVUYWJsZSAvPixcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLmRlbGV0ZVRhYmxlKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5UYWJsZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxCb3JkZXJBbGwgLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+IHtcbiAgICAgICAgICBjb25zdCB0YWJsZUF0dHJzID0gZWRpdG9yLmdldEF0dHJpYnV0ZXMoJ3RhYmxlJyk7XG5cbiAgICAgICAgICBjb25zdCB1cGRhdGUgPSB7XG4gICAgICAgICAgICAuLi50YWJsZUF0dHJzLFxuICAgICAgICAgICAgYm9yZGVyOiB0YWJsZUF0dHJzLmJvcmRlciAhPT0gJzAnID8gJzAnIDogJzEnLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBlZGl0b3IuY29tbWFuZHMudXBkYXRlQXR0cmlidXRlcygndGFibGUnLCB1cGRhdGUpO1xuICAgICAgICB9LFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIXN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLnRhYmxlSGFzQm9yZGVyLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5UYWJsZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxCb2xkIC8+LFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAudG9nZ2xlQm9sZCgpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ2JvbGQnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc0JvbGQsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhbkJvbGQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8SXRhbGljIC8+LFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAudG9nZ2xlSXRhbGljKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnaXRhbGljJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUuaXNJdGFsaWMsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhbkl0YWxpYyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxTdHJpa2V0aHJvdWdoIC8+LFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAudG9nZ2xlU3RyaWtlKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnc3RyaWtldGhyb3VnaCcpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzU3RyaWtlLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5TdHJpa2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8Q29kZSAvPixcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLnRvZ2dsZUNvZGUoKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdjb2RlJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUuaXNDb2RlLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5Db2RlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPFVuZGVybGluZSAvPixcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLnRvZ2dsZVVuZGVybGluZSgpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ3VuZGVybGluZScpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzVW5kZXJsaW5lLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPFN1YnNjcmlwdEljb24gLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC50b2dnbGVTdWJzY3JpcHQoKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdzdWJzY3JpcHQnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc1N1YlNjcmlwdCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxTdXBlcnNjcmlwdEljb24gLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC50b2dnbGVTdXBlcnNjcmlwdCgpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ3N1cGVyc2NyaXB0JykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUuaXNTdXBlclNjcmlwdCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxJbWFnZUljb24gLz4sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ2ltYWdlJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLnNldEltYWdlVXBsb2FkTm9kZSgpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8VGhlYXRlcnNJY29uIC8+LFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCd2aWRlbycpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC5pbnNlcnRNZWRpYSh7IHR5cGU6ICd2aWRlbycgfSlcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxWb2x1bWVVcEljb24gLz4sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ2F1ZGlvJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLmluc2VydE1lZGlhKHsgdHlwZTogJ2F1ZGlvJywgdGFnOiAnYXVkaW8nIH0pXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8Q1NTSWNvbiAvPixcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnY3NzJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT4gZWRpdG9yLmNvbW1hbmRzLm9wZW5DU1NDbGFzc0RpYWxvZygpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPEhlYWRpbmdJY29uIC8+LFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdoMycpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC50b2dnbGVIZWFkaW5nKHsgbGV2ZWw6IDMgfSlcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUuaXNIZWFkaW5nMyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxGdW5jdGlvbnMgLz4sXG4gICAgICAgIGhpZGRlbjogKCkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdtYXRoJyksXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC5pbnNlcnRNYXRoKCcnKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPENoYXJhY3Rlckljb24gbGV0dGVyPVwiw7FcIiAvPixcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnbGFuZ3VhZ2VDaGFyYWN0ZXJzJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgb25DbGljazogKCkgPT4gc2V0U2hvd1BpY2tlcihzcGFuaXNoQ29uZmlnKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxDaGFyYWN0ZXJJY29uIGxldHRlcj1cIuKCrFwiIC8+LFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gYWN0aXZlUGx1Z2lucz8uZmlsdGVyKChwKSA9PiBwID09PSAnbGFuZ3VhZ2VDaGFyYWN0ZXJzJykubGVuZ3RoICE9PSAyIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IHNldFNob3dQaWNrZXIoc3BlY2lhbENvbmZpZyksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8VGV4dEFsaWduSWNvbiBlZGl0b3I9e2VkaXRvcn0gLz4sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ3RleHQtYWxpZ24nKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBvbkNsaWNrOiAoKSA9PiB7fSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxCdWxsZXRlZExpc3RJY29uIC8+LFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdidWxsZXRlZC1saXN0JykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLnRvZ2dsZUJ1bGxldExpc3QoKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc0J1bGxldExpc3QsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8TnVtYmVyZWRMaXN0SWNvbiAvPixcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnbnVtYmVyZWQtbGlzdCcpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC50b2dnbGVPcmRlcmVkTGlzdCgpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzT3JkZXJlZExpc3QsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8VW5kbyAvPixcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygndW5kbycpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC51bmRvKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaXNEaXNhYmxlZDogKHN0YXRlKSA9PiAhc3RhdGUuY2FuVW5kbyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxSZWRvIC8+LFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdyZWRvJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLnJlZG8oKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5SZWRvLFxuICAgICAgfSxcbiAgICBdLFxuICAgIFthY3RpdmVQbHVnaW5zLCBlZGl0b3JdLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e25hbWVzfSBzdHlsZT17eyAuLi5jdXN0b21TdHlsZXMgfX0gb25Nb3VzZURvd249e2hhbmRsZU1vdXNlRG93bn0+XG4gICAgICB7IWVkaXRvclN0YXRlLmhpZGVEZWZhdWx0VG9vbGJhciAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmRlZmF1bHRUb29sYmFyfSB0YWJJbmRleD1cIjFcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5idXR0b25zQ29udGFpbmVyfT5cbiAgICAgICAgICAgIHt0b29sYmFyQnV0dG9uc1xuICAgICAgICAgICAgICAuZmlsdGVyKChidG4pID0+ICFidG4uaGlkZGVuPy4oZWRpdG9yU3RhdGUpKVxuICAgICAgICAgICAgICAubWFwKChidG4sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlzYWJsZWQgPSBidG4uaXNEaXNhYmxlZD8uKGVkaXRvclN0YXRlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmUgPSBidG4uaXNBY3RpdmU/LihlZGl0b3JTdGF0ZSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgIGJ0bi5vbkNsaWNrKGVkaXRvcik7XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc2VzLmJ1dHRvbiwgeyBbY2xhc3Nlcy5hY3RpdmVdOiBhY3RpdmUgfSl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtidG4uaWNvbn1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIHthY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygncmVzcG9uc2VBcmVhJykgJiYgKFxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgICAgICAgIC5pbnNlcnRSZXNwb25zZUFyZWEocmVzcG9uc2VBcmVhUHJvcHMudHlwZSlcbiAgICAgICAgICAgICAgICAgIC5ydW4oKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmJ1dHRvbn1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFRvb2xiYXJJY29uIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICApfVxuXG4gICAgICAgICAgPERvbmVCdXR0b25cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgb25DaGFuZ2U/LihlZGl0b3IuZ2V0SFRNTCgpKTtcbiAgICAgICAgICAgICAgZWRpdG9yLmNvbW1hbmRzLmJsdXIoKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAge3Nob3dQaWNrZXIgJiYgKFxuICAgICAgICA8Q2hhcmFjdGVyUGlja2VyXG4gICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgb3B0cz17e1xuICAgICAgICAgICAgLi4uc2hvd1BpY2tlcixcbiAgICAgICAgICAgIHJlbmRlclBvcE92ZXI6IChldiwgY2gpID0+IGNvbnNvbGUubG9nKCdTaG93IHBvcG92ZXInLCBjaCksXG4gICAgICAgICAgICBjbG9zZVBvcE92ZXI6ICgpID0+IGNvbnNvbGUubG9nKCdDbG9zZSBwb3BvdmVyJyksXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93UGlja2VyKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmNvbnN0IHN0eWxlID0gKHRoZW1lKSA9PiAoe1xuICBkZWZhdWx0VG9vbGJhcjoge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gIH0sXG4gIGJ1dHRvbnNDb250YWluZXI6IHtcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgfSxcbiAgYnV0dG9uOiB7XG4gICAgY29sb3I6ICdncmV5JyxcbiAgICBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLFxuICAgIHBhZGRpbmc6ICcycHgnLFxuICAgIGJhY2tncm91bmQ6ICdub25lJyxcbiAgICBib3JkZXI6ICdub25lJyxcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAnJjpob3Zlcic6IHtcbiAgICAgIGNvbG9yOiAnYmxhY2snLFxuICAgIH0sXG4gICAgJyY6Zm9jdXMnOiB7XG4gICAgICBvdXRsaW5lOiBgMnB4IHNvbGlkICR7dGhlbWUucGFsZXR0ZS5ncmV5WzcwMF19YCxcbiAgICB9LFxuICB9LFxuICBhY3RpdmU6IHtcbiAgICBjb2xvcjogJ2JsYWNrJyxcbiAgfSxcbiAgZGlzYWJsZWQ6IHtcbiAgICBvcGFjaXR5OiAwLjcsXG4gICAgY3Vyc29yOiAnbm90LWFsbG93ZWQnLFxuICAgICcmIDpob3Zlcic6IHtcbiAgICAgIGNvbG9yOiAnZ3JleScsXG4gICAgfSxcbiAgfSxcbiAgaXNBY3RpdmU6IHtcbiAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHVycGxlKScsXG4gICAgY29sb3I6ICd2YXIoLS13aGl0ZSknLFxuICB9LFxuICB0b29sYmFyOiB7XG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgekluZGV4OiAyMCxcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgIGJhY2tncm91bmQ6ICd2YXIoLS1lZGl0YWJsZS1odG1sLXRvb2xiYXItYmcsICNlZmVmZWYpJyxcbiAgICBtaW5XaWR0aDogJzI4MHB4JyxcbiAgICBtYXJnaW46ICc1cHggMCAwIDAnLFxuICAgIHBhZGRpbmc6ICcycHgnLFxuICAgIGJveFNoYWRvdzpcbiAgICAgICcwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMTIpJyxcbiAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgb3BhY2l0eTogMCxcbiAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gIH0sXG4gIHRvb2xiYXJXaXRoTm9Eb25lOiB7XG4gICAgbWluV2lkdGg6ICcyNjVweCcsXG4gIH0sXG4gIHRvb2xiYXJUb3A6IHtcbiAgICB0b3A6ICctNDVweCcsXG4gIH0sXG4gIHRvb2xiYXJSaWdodDoge1xuICAgIHJpZ2h0OiAwLFxuICB9LFxuICBmdWxsV2lkdGg6IHtcbiAgICB3aWR0aDogJzEwMCUnLFxuICB9LFxuICBoaWRkZW46IHtcbiAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyxcbiAgfSxcbiAgYXV0b1dpZHRoOiB7XG4gICAgd2lkdGg6ICdhdXRvJyxcbiAgfSxcbiAgZm9jdXNlZDoge1xuICAgIG9wYWNpdHk6IDEsXG4gICAgcG9pbnRlckV2ZW50czogJ2F1dG8nLFxuICB9LFxuICBpY29uUm9vdDoge1xuICAgIHdpZHRoOiAnMjhweCcsXG4gICAgaGVpZ2h0OiAnMjhweCcsXG4gICAgcGFkZGluZzogJzRweCcsXG4gICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gIH0sXG4gIGxhYmVsOiB7XG4gICAgY29sb3I6ICd2YXIoLS1lZGl0YWJsZS1odG1sLXRvb2xiYXItY2hlY2ssICMwMGJiMDApJyxcbiAgfSxcbiAgc2hhcmVkOiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICB9LFxufSk7XG5cbmNvbnN0IFN0eWxlZE1lbnVCYXIgPSB3aXRoU3R5bGVzKHN0eWxlLCB7IGluZGV4OiAxMDAwIH0pKE1lbnVCYXIpO1xuXG5leHBvcnQgZGVmYXVsdCBTdHlsZWRNZW51QmFyO1xuIl19