@payloadcms/richtext-lexical 0.8.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/field/features/Blocks/component/index.d.ts.map +1 -1
- package/dist/field/features/Blocks/component/index.js +21 -10
- package/dist/field/features/Blocks/index.d.ts +5 -2
- package/dist/field/features/Blocks/index.d.ts.map +1 -1
- package/dist/field/features/Blocks/index.js +9 -10
- package/dist/field/features/Blocks/populationPromise.d.ts.map +1 -1
- package/dist/field/features/Blocks/populationPromise.js +12 -6
- package/dist/field/features/Blocks/validate.d.ts.map +1 -1
- package/dist/field/features/Blocks/validate.js +12 -6
- package/dist/field/features/Link/index.d.ts +3 -3
- package/dist/field/features/Link/index.d.ts.map +1 -1
- package/dist/field/features/Link/index.js +5 -5
- package/dist/field/features/Link/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
- package/dist/field/features/Link/plugins/floatingLinkEditor/LinkEditor/index.js +13 -7
- package/dist/field/features/Upload/component/ExtraFieldsDrawer/index.d.ts.map +1 -1
- package/dist/field/features/Upload/component/ExtraFieldsDrawer/index.js +21 -19
- package/dist/field/features/Upload/index.d.ts +2 -2
- package/dist/field/features/Upload/index.d.ts.map +1 -1
- package/dist/field/features/Upload/index.js +14 -7
- package/dist/field/features/converters/html/converter/index.d.ts.map +1 -1
- package/dist/field/features/converters/html/converter/index.js +21 -16
- package/dist/field/features/converters/html/field/index.d.ts.map +1 -1
- package/dist/field/features/horizontalrule/component/index.d.ts +10 -0
- package/dist/field/features/horizontalrule/component/index.d.ts.map +1 -0
- package/dist/field/features/horizontalrule/component/index.js +67 -0
- package/dist/field/features/horizontalrule/index.d.ts +3 -0
- package/dist/field/features/horizontalrule/index.d.ts.map +1 -0
- package/dist/field/features/horizontalrule/index.js +121 -0
- package/dist/field/features/horizontalrule/nodes/HorizontalRuleNode.d.ts +53 -0
- package/dist/field/features/horizontalrule/nodes/HorizontalRuleNode.d.ts.map +1 -0
- package/dist/field/features/horizontalrule/nodes/HorizontalRuleNode.js +148 -0
- package/dist/field/features/horizontalrule/plugin/index.d.ts +6 -0
- package/dist/field/features/horizontalrule/plugin/index.d.ts.map +1 -0
- package/dist/field/features/horizontalrule/plugin/index.js +39 -0
- package/dist/field/features/horizontalrule/plugin/index.scss +20 -0
- package/dist/field/features/lists/common/markdown.d.ts.map +1 -1
- package/dist/field/features/types.d.ts +4 -2
- package/dist/field/features/types.d.ts.map +1 -1
- package/dist/field/lexical/config/EditorConfigProvider.d.ts.map +1 -1
- package/dist/field/lexical/config/default.d.ts.map +1 -1
- package/dist/field/lexical/config/default.js +4 -2
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.d.ts.map +1 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.d.ts.map +1 -1
- package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.d.ts.map +1 -1
- package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js +12 -7
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts.map +1 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js +9 -4
- package/dist/field/lexical/plugins/handles/utils/doesLineHeightAffectElement.d.ts +9 -0
- package/dist/field/lexical/plugins/handles/utils/doesLineHeightAffectElement.d.ts.map +1 -0
- package/dist/field/lexical/plugins/handles/utils/doesLineHeightAffectElement.js +39 -0
- package/dist/field/lexical/plugins/handles/utils/setHandlePosition.d.ts +1 -1
- package/dist/field/lexical/plugins/handles/utils/setHandlePosition.d.ts.map +1 -1
- package/dist/field/lexical/plugins/handles/utils/setHandlePosition.js +18 -8
- package/dist/field/lexical/ui/icons/HorizontalRule/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/HorizontalRule/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/HorizontalRule/index.js +34 -0
- package/dist/field/lexical/utils/markdown/createBlockNode.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/populate/populate.d.ts +1 -1
- package/dist/populate/populate.d.ts.map +1 -1
- package/dist/validate/index.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -170,7 +170,9 @@ function useAddBlockHandle(editor, anchorElem, isEditable) {
|
|
|
170
170
|
const adjustedTop = top + window.scrollY;
|
|
171
171
|
const adjustedBottom = bottom + window.scrollY;
|
|
172
172
|
if (pageY < adjustedTop - verticalBuffer || pageY > adjustedBottom + verticalBuffer || pageX < left - horizontalBuffer || pageX > right + horizontalBuffer) {
|
|
173
|
-
|
|
173
|
+
if (hoveredElement !== null) {
|
|
174
|
+
setHoveredElement(null);
|
|
175
|
+
}
|
|
174
176
|
return;
|
|
175
177
|
}
|
|
176
178
|
// This is used to allow the _emptyBlockElem to be found when the mouse is in the
|
|
@@ -186,10 +188,12 @@ function useAddBlockHandle(editor, anchorElem, isEditable) {
|
|
|
186
188
|
if (!_emptyBlockElem) {
|
|
187
189
|
return;
|
|
188
190
|
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
191
|
+
if (hoveredElement?.node !== blockNode || hoveredElement?.elem !== _emptyBlockElem) {
|
|
192
|
+
setHoveredElement({
|
|
193
|
+
elem: _emptyBlockElem,
|
|
194
|
+
node: blockNode
|
|
195
|
+
});
|
|
196
|
+
}
|
|
193
197
|
}
|
|
194
198
|
// Since the draggableBlockElem is outside the actual editor, we need to listen to the document
|
|
195
199
|
// to be able to detect when the mouse is outside the editor and respect a buffer around
|
|
@@ -201,7 +205,8 @@ function useAddBlockHandle(editor, anchorElem, isEditable) {
|
|
|
201
205
|
}, [
|
|
202
206
|
scrollerElem,
|
|
203
207
|
anchorElem,
|
|
204
|
-
editor
|
|
208
|
+
editor,
|
|
209
|
+
hoveredElement
|
|
205
210
|
]);
|
|
206
211
|
(0, _react.useEffect)(()=>{
|
|
207
212
|
if (menuRef.current && hoveredElement?.node) {
|
|
@@ -281,4 +286,4 @@ function AddBlockHandlePlugin({ anchorElem = document.body }) {
|
|
|
281
286
|
return useAddBlockHandle(editor, anchorElem, editor._editable);
|
|
282
287
|
}
|
|
283
288
|
|
|
284
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9BZGRCbG9ja0hhbmRsZVBsdWdpbi9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgdHlwZSB7IFBhcmFncmFwaE5vZGUgfSBmcm9tICdsZXhpY2FsJ1xuXG5pbXBvcnQgeyB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENvbXBvc2VyQ29udGV4dCdcbmltcG9ydCB7ICRjcmVhdGVQYXJhZ3JhcGhOb2RlIH0gZnJvbSAnbGV4aWNhbCdcbmltcG9ydCB7ICRnZXROb2RlQnlLZXksIHR5cGUgTGV4aWNhbEVkaXRvciwgdHlwZSBMZXhpY2FsTm9kZSB9IGZyb20gJ2xleGljYWwnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcblxuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2d1YXJkJ1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9wb2ludCdcbmltcG9ydCB7IFJlY3QgfSBmcm9tICcuLi8uLi8uLi91dGlscy9yZWN0J1xuaW1wb3J0IHsgRU5BQkxFX1NMQVNIX01FTlVfQ09NTUFORCB9IGZyb20gJy4uLy4uL1NsYXNoTWVudS9MZXhpY2FsVHlwZWFoZWFkTWVudVBsdWdpbidcbmltcG9ydCB7IGdldENvbGxhcHNlZE1hcmdpbnMgfSBmcm9tICcuLi91dGlscy9nZXRDb2xsYXBzZWRNYXJnaW5zJ1xuaW1wb3J0IHsgZ2V0VG9wTGV2ZWxOb2RlS2V5cyB9IGZyb20gJy4uL3V0aWxzL2dldFRvcExldmVsTm9kZUtleXMnXG5pbXBvcnQgeyBpc09uSGFuZGxlRWxlbWVudCB9IGZyb20gJy4uL3V0aWxzL2lzT25IYW5kbGVFbGVtZW50J1xuaW1wb3J0IHsgc2V0SGFuZGxlUG9zaXRpb24gfSBmcm9tICcuLi91dGlscy9zZXRIYW5kbGVQb3NpdGlvbidcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5jb25zdCBTUEFDRSA9IC0yNFxuY29uc3QgQUREX0JMT0NLX01FTlVfQ0xBU1NOQU1FID0gJ2FkZC1ibG9jay1tZW51J1xuXG5jb25zdCBEb3dud2FyZCA9IDFcbmNvbnN0IFVwd2FyZCA9IC0xXG5jb25zdCBJbmRldGVybWluYXRlID0gMFxuXG5sZXQgcHJldkluZGV4ID0gSW5maW5pdHlcblxuZnVuY3Rpb24gZ2V0Q3VycmVudEluZGV4KGtleXNMZW5ndGg6IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChrZXlzTGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEluZmluaXR5XG4gIH1cbiAgaWYgKHByZXZJbmRleCA+PSAwICYmIHByZXZJbmRleCA8IGtleXNMZW5ndGgpIHtcbiAgICByZXR1cm4gcHJldkluZGV4XG4gIH1cblxuICByZXR1cm4gTWF0aC5mbG9vcihrZXlzTGVuZ3RoIC8gMilcbn1cblxuZnVuY3Rpb24gZ2V0QmxvY2tFbGVtZW50KFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yLFxuICBldmVudDogTW91c2VFdmVudCxcbiAgdXNlRWRnZUFzRGVmYXVsdCA9IGZhbHNlLFxuICBob3Jpem9udGFsT2Zmc2V0ID0gMCxcbik6IHtcbiAgYmxvY2tFbGVtOiBIVE1MRWxlbWVudCB8IG51bGxcbiAgYmxvY2tOb2RlOiBMZXhpY2FsTm9kZSB8IG51bGxcbn0ge1xuICBjb25zdCBhbmNob3JFbGVtZW50UmVjdCA9IGFuY2hvckVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgY29uc3QgdG9wTGV2ZWxOb2RlS2V5cyA9IGdldFRvcExldmVsTm9kZUtleXMoZWRpdG9yKVxuXG4gIGxldCBibG9ja0VsZW06IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGxcbiAgbGV0IGJsb2NrTm9kZTogTGV4aWNhbE5vZGUgfCBudWxsID0gbnVsbFxuXG4gIC8vIFJldHVybiBudWxsIGlmIG1hdGNoaW5nIGJsb2NrIGVsZW1lbnQgaXMgdGhlIGZpcnN0IG9yIGxhc3Qgbm9kZVxuICBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICBpZiAodXNlRWRnZUFzRGVmYXVsdCkge1xuICAgICAgY29uc3QgW2ZpcnN0Tm9kZSwgbGFzdE5vZGVdID0gW1xuICAgICAgICBlZGl0b3IuZ2V0RWxlbWVudEJ5S2V5KHRvcExldmVsTm9kZUtleXNbMF0pLFxuICAgICAgICBlZGl0b3IuZ2V0RWxlbWVudEJ5S2V5KHRvcExldmVsTm9kZUtleXNbdG9wTGV2ZWxOb2RlS2V5cy5sZW5ndGggLSAxXSksXG4gICAgICBdXG5cbiAgICAgIGNvbnN0IFtmaXJzdE5vZGVSZWN0LCBsYXN0Tm9kZVJlY3RdID0gW1xuICAgICAgICBmaXJzdE5vZGU/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgICBsYXN0Tm9kZT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICBdXG5cbiAgICAgIGlmIChmaXJzdE5vZGVSZWN0ICYmIGxhc3ROb2RlUmVjdCkge1xuICAgICAgICBpZiAoZXZlbnQueSA8IGZpcnN0Tm9kZVJlY3QudG9wKSB7XG4gICAgICAgICAgYmxvY2tFbGVtID0gZmlyc3ROb2RlXG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQueSA+IGxhc3ROb2RlUmVjdC5ib3R0b20pIHtcbiAgICAgICAgICBibG9ja0VsZW0gPSBsYXN0Tm9kZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJsb2NrRWxlbSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBibG9ja0VsZW06IG51bGwsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmluZCBtYXRjaGluZyBibG9jayBlbGVtZW50XG4gICAgbGV0IGluZGV4ID0gZ2V0Q3VycmVudEluZGV4KHRvcExldmVsTm9kZUtleXMubGVuZ3RoKVxuICAgIGxldCBkaXJlY3Rpb24gPSBJbmRldGVybWluYXRlXG5cbiAgICB3aGlsZSAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRvcExldmVsTm9kZUtleXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBrZXkgPSB0b3BMZXZlbE5vZGVLZXlzW2luZGV4XVxuICAgICAgY29uc3QgZWxlbSA9IGVkaXRvci5nZXRFbGVtZW50QnlLZXkoa2V5KVxuICAgICAgaWYgKGVsZW0gPT09IG51bGwpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBvaW50ID0gbmV3IFBvaW50KGV2ZW50LnggKyBob3Jpem9udGFsT2Zmc2V0LCBldmVudC55KVxuICAgICAgY29uc3QgZG9tUmVjdCA9IFJlY3QuZnJvbURPTShlbGVtKVxuICAgICAgY29uc3QgeyBtYXJnaW5Cb3R0b20sIG1hcmdpblRvcCB9ID0gZ2V0Q29sbGFwc2VkTWFyZ2lucyhlbGVtKVxuXG4gICAgICBjb25zdCByZWN0ID0gZG9tUmVjdC5nZW5lcmF0ZU5ld1JlY3Qoe1xuICAgICAgICBib3R0b206IGRvbVJlY3QuYm90dG9tICsgbWFyZ2luQm90dG9tLFxuICAgICAgICBsZWZ0OiBhbmNob3JFbGVtZW50UmVjdC5sZWZ0LFxuICAgICAgICByaWdodDogYW5jaG9yRWxlbWVudFJlY3QucmlnaHQsXG4gICAgICAgIHRvcDogZG9tUmVjdC50b3AgLSBtYXJnaW5Ub3AsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlYXNvbjogeyBpc09uQm90dG9tU2lkZSwgaXNPblRvcFNpZGUgfSxcbiAgICAgICAgcmVzdWx0LFxuICAgICAgfSA9IHJlY3QuY29udGFpbnMocG9pbnQpXG5cbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgYmxvY2tFbGVtID0gZWxlbVxuICAgICAgICBibG9ja05vZGUgPSAkZ2V0Tm9kZUJ5S2V5KGtleSlcbiAgICAgICAgcHJldkluZGV4ID0gaW5kZXhcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gSW5kZXRlcm1pbmF0ZSkge1xuICAgICAgICBpZiAoaXNPblRvcFNpZGUpIHtcbiAgICAgICAgICBkaXJlY3Rpb24gPSBVcHdhcmRcbiAgICAgICAgfSBlbHNlIGlmIChpc09uQm90dG9tU2lkZSkge1xuICAgICAgICAgIGRpcmVjdGlvbiA9IERvd253YXJkXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gc3RvcCBzZWFyY2ggYmxvY2sgZWxlbWVudFxuICAgICAgICAgIGRpcmVjdGlvbiA9IEluZmluaXR5XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaW5kZXggKz0gZGlyZWN0aW9uXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiB7XG4gICAgYmxvY2tFbGVtLFxuICAgIGJsb2NrTm9kZSxcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VBZGRCbG9ja0hhbmRsZShcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yLFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbiAgaXNFZGl0YWJsZTogYm9vbGVhbixcbik6IEpTWC5FbGVtZW50IHtcbiAgY29uc3Qgc2Nyb2xsZXJFbGVtID0gYW5jaG9yRWxlbS5wYXJlbnRFbGVtZW50XG5cbiAgY29uc3QgbWVudVJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbClcbiAgY29uc3QgW2hvdmVyZWRFbGVtZW50LCBzZXRIb3ZlcmVkRWxlbWVudF0gPSB1c2VTdGF0ZTx7XG4gICAgZWxlbTogSFRNTEVsZW1lbnRcbiAgICBub2RlOiBMZXhpY2FsTm9kZVxuICB9IHwgbnVsbD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZ1bmN0aW9uIG9uRG9jdW1lbnRNb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldFxuICAgICAgaWYgKCFpc0hUTUxFbGVtZW50KHRhcmdldCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGxldCBkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0gPSAwXG4gICAgICAvLyBDYWxjdWxhdGUgZGlzdGFuY2UgYmV0d2VlbiBzY3JvbGxlckVsZW0gYW5kIHRhcmdldCBpZiB0YXJnZXQgaXMgbm90IGluIHNjcm9sbGVyRWxlbVxuICAgICAgaWYgKHNjcm9sbGVyRWxlbSAmJiAhc2Nyb2xsZXJFbGVtLmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgY29uc3QgeyBib3R0b20sIGxlZnQsIHJpZ2h0LCB0b3AgfSA9IHNjcm9sbGVyRWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICBjb25zdCB7IHBhZ2VYLCBwYWdlWSB9ID0gZXZlbnRcbiAgICAgICAgY29uc3QgaG9yaXpvbnRhbEJ1ZmZlciA9IDUwXG4gICAgICAgIGNvbnN0IHZlcnRpY2FsQnVmZmVyID0gMjVcbiAgICAgICAgY29uc3QgYWRqdXN0ZWRUb3AgPSB0b3AgKyB3aW5kb3cuc2Nyb2xsWVxuICAgICAgICBjb25zdCBhZGp1c3RlZEJvdHRvbSA9IGJvdHRvbSArIHdpbmRvdy5zY3JvbGxZXG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBhZ2VZIDwgYWRqdXN0ZWRUb3AgLSB2ZXJ0aWNhbEJ1ZmZlciB8fFxuICAgICAgICAgIHBhZ2VZID4gYWRqdXN0ZWRCb3R0b20gKyB2ZXJ0aWNhbEJ1ZmZlciB8fFxuICAgICAgICAgIHBhZ2VYIDwgbGVmdCAtIGhvcml6b250YWxCdWZmZXIgfHxcbiAgICAgICAgICBwYWdlWCA+IHJpZ2h0ICsgaG9yaXpvbnRhbEJ1ZmZlclxuICAgICAgICApIHtcbiAgICAgICAgICBzZXRIb3ZlcmVkRWxlbWVudChudWxsKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyBpcyB1c2VkIHRvIGFsbG93IHRoZSBfZW1wdHlCbG9ja0VsZW0gdG8gYmUgZm91bmQgd2hlbiB0aGUgbW91c2UgaXMgaW4gdGhlXG4gICAgICAgIC8vIGJ1ZmZlciB6b25lIGFyb3VuZCB0aGUgc2Nyb2xsZXJFbGVtLlxuICAgICAgICBpZiAocGFnZVggPCBsZWZ0IHx8IHBhZ2VYID4gcmlnaHQpIHtcbiAgICAgICAgICBkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0gPSBwYWdlWCA8IGxlZnQgPyBwYWdlWCAtIGxlZnQgOiBwYWdlWCAtIHJpZ2h0XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGlzT25IYW5kbGVFbGVtZW50KHRhcmdldCwgQUREX0JMT0NLX01FTlVfQ0xBU1NOQU1FKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgYmxvY2tFbGVtOiBfZW1wdHlCbG9ja0VsZW0sIGJsb2NrTm9kZSB9ID0gZ2V0QmxvY2tFbGVtZW50KFxuICAgICAgICBhbmNob3JFbGVtLFxuICAgICAgICBlZGl0b3IsXG4gICAgICAgIGV2ZW50LFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgLWRpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbSxcbiAgICAgIClcbiAgICAgIGlmICghX2VtcHR5QmxvY2tFbGVtKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgc2V0SG92ZXJlZEVsZW1lbnQoe1xuICAgICAgICBlbGVtOiBfZW1wdHlCbG9ja0VsZW0sXG4gICAgICAgIG5vZGU6IGJsb2NrTm9kZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gU2luY2UgdGhlIGRyYWdnYWJsZUJsb2NrRWxlbSBpcyBvdXRzaWRlIHRoZSBhY3R1YWwgZWRpdG9yLCB3ZSBuZWVkIHRvIGxpc3RlbiB0byB0aGUgZG9jdW1lbnRcbiAgICAvLyB0byBiZSBhYmxlIHRvIGRldGVjdCB3aGVuIHRoZSBtb3VzZSBpcyBvdXRzaWRlIHRoZSBlZGl0b3IgYW5kIHJlc3BlY3QgYSBidWZmZXIgYXJvdW5kXG4gICAgLy8gdGhlIHNjcm9sbGVyRWxlbSB0byBhdm9pZCB0aGUgZHJhZ2dhYmxlQmxvY2tFbGVtIGRpc2FwcGVhcmluZyB0b28gZWFybHkuXG4gICAgZG9jdW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uRG9jdW1lbnRNb3VzZU1vdmUpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uRG9jdW1lbnRNb3VzZU1vdmUpXG4gICAgfVxuICB9LCBbc2Nyb2xsZXJFbGVtLCBhbmNob3JFbGVtLCBlZGl0b3JdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG1lbnVSZWYuY3VycmVudCAmJiBob3ZlcmVkRWxlbWVudD8ubm9kZSkge1xuICAgICAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgICAgIC8vIENoZWNrIGlmIGJsb2NrTm9kZSBpcyBhbiBlbXB0eSB0ZXh0IG5vZGVcbiAgICAgICAgbGV0IGlzRW1wdHlQYXJhZ3JhcGggPSB0cnVlXG4gICAgICAgIGlmIChcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudC5ub2RlLmdldFR5cGUoKSAhPT0gJ3BhcmFncmFwaCcgfHxcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudC5ub2RlLmdldFRleHRDb250ZW50KCkgIT09ICcnXG4gICAgICAgICkge1xuICAgICAgICAgIGlzRW1wdHlQYXJhZ3JhcGggPSBmYWxzZVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0SGFuZGxlUG9zaXRpb24oXG4gICAgICAgICAgaG92ZXJlZEVsZW1lbnQ/LmVsZW0sXG4gICAgICAgICAgbWVudVJlZi5jdXJyZW50LFxuICAgICAgICAgIGFuY2hvckVsZW0sXG4gICAgICAgICAgaXNFbXB0eVBhcmFncmFwaCA/IFNQQUNFIDogU1BBQ0UgLSAyMCxcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICB9XG4gIH0sIFthbmNob3JFbGVtLCBob3ZlcmVkRWxlbWVudCwgZWRpdG9yXSlcblxuICBjb25zdCBoYW5kbGVBZGRDbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudCkgPT4ge1xuICAgICAgbGV0IGhvdmVyZWRFbGVtZW50VG9Vc2UgPSBob3ZlcmVkRWxlbWVudFxuICAgICAgaWYgKCFob3ZlcmVkRWxlbWVudFRvVXNlPy5ub2RlKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyAxLiBVcGRhdGUgaG92ZXJlZEVsZW1lbnQubm9kZSB0byBhIG5ldyBwYXJhZ3JhcGggbm9kZSBpZiB0aGUgaG92ZXJlZEVsZW1lbnQubm9kZSBpcyBub3QgYSBwYXJhZ3JhcGggbm9kZVxuICAgICAgZWRpdG9yLnVwZGF0ZSgoKSA9PiB7XG4gICAgICAgIC8vIENoZWNrIGlmIGJsb2NrTm9kZSBpcyBhbiBlbXB0eSB0ZXh0IG5vZGVcbiAgICAgICAgbGV0IGlzRW1wdHlQYXJhZ3JhcGggPSB0cnVlXG4gICAgICAgIGlmIChcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlLm5vZGUuZ2V0VHlwZSgpICE9PSAncGFyYWdyYXBoJyB8fFxuICAgICAgICAgIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZS5nZXRUZXh0Q29udGVudCgpICE9PSAnJ1xuICAgICAgICApIHtcbiAgICAgICAgICBpc0VtcHR5UGFyYWdyYXBoID0gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNFbXB0eVBhcmFncmFwaCkge1xuICAgICAgICAgIGNvbnN0IG5ld1BhcmFncmFwaCA9ICRjcmVhdGVQYXJhZ3JhcGhOb2RlKClcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlLm5vZGUuaW5zZXJ0QWZ0ZXIobmV3UGFyYWdyYXBoKVxuXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlID0ge1xuICAgICAgICAgICAgICBlbGVtOiBlZGl0b3IuZ2V0RWxlbWVudEJ5S2V5KG5ld1BhcmFncmFwaC5nZXRLZXkoKSksXG4gICAgICAgICAgICAgIG5vZGU6IG5ld1BhcmFncmFwaCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldEhvdmVyZWRFbGVtZW50KGhvdmVyZWRFbGVtZW50VG9Vc2UpXG4gICAgICAgICAgfSwgMClcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgLy8gMi4gRm9jdXMgb24gdGhlIG5ldyBwYXJhZ3JhcGggbm9kZVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGVkaXRvci51cGRhdGUoKCkgPT4ge1xuICAgICAgICAgIGVkaXRvci5mb2N1cygpXG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlLm5vZGUgJiZcbiAgICAgICAgICAgICdzZWxlY3QnIGluIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZSAmJlxuICAgICAgICAgICAgdHlwZW9mIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZS5zZWxlY3QgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZS5zZWxlY3QoKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0sIDEpXG5cbiAgICAgIC8vIE1ha2Ugc3VyZSB0aGlzIGlzIGNhbGxlZCBBRlRFUiB0aGUgZm9jdXNpbmcgaGFzIGJlZW4gcHJvY2Vzc2VkIGJ5IHRoZSBicm93c2VyXG4gICAgICAvLyBPdGhlcndpc2UsIHRoaXMgd29uJ3Qgd29ya1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGVkaXRvci5kaXNwYXRjaENvbW1hbmQoRU5BQkxFX1NMQVNIX01FTlVfQ09NTUFORCwge1xuICAgICAgICAgIG5vZGU6IGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZSBhcyBQYXJhZ3JhcGhOb2RlLFxuICAgICAgICB9KVxuICAgICAgfSwgMilcblxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICB9LFxuICAgIFtlZGl0b3IsIGhvdmVyZWRFbGVtZW50XSxcbiAgKVxuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9XCJpY29uIGFkZC1ibG9jay1tZW51XCJcbiAgICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgaGFuZGxlQWRkQ2xpY2soZXZlbnQpXG4gICAgICAgIH19XG4gICAgICAgIHJlZj17bWVudVJlZn1cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtpc0VkaXRhYmxlID8gJ2ljb24nIDogJyd9IC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L1JlYWN0LkZyYWdtZW50PixcbiAgICBhbmNob3JFbGVtLFxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBZGRCbG9ja0hhbmRsZVBsdWdpbih7XG4gIGFuY2hvckVsZW0gPSBkb2N1bWVudC5ib2R5LFxufToge1xuICBhbmNob3JFbGVtPzogSFRNTEVsZW1lbnRcbn0pOiBKU1guRWxlbWVudCB7XG4gIGNvbnN0IFtlZGl0b3JdID0gdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCgpXG4gIHJldHVybiB1c2VBZGRCbG9ja0hhbmRsZShlZGl0b3IsIGFuY2hvckVsZW0sIGVkaXRvci5fZWRpdGFibGUpXG59XG4iXSwibmFtZXMiOlsiQWRkQmxvY2tIYW5kbGVQbHVnaW4iLCJTUEFDRSIsIkFERF9CTE9DS19NRU5VX0NMQVNTTkFNRSIsIkRvd253YXJkIiwiVXB3YXJkIiwiSW5kZXRlcm1pbmF0ZSIsInByZXZJbmRleCIsIkluZmluaXR5IiwiZ2V0Q3VycmVudEluZGV4Iiwia2V5c0xlbmd0aCIsIk1hdGgiLCJmbG9vciIsImdldEJsb2NrRWxlbWVudCIsImFuY2hvckVsZW0iLCJlZGl0b3IiLCJldmVudCIsInVzZUVkZ2VBc0RlZmF1bHQiLCJob3Jpem9udGFsT2Zmc2V0IiwiYW5jaG9yRWxlbWVudFJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0b3BMZXZlbE5vZGVLZXlzIiwiZ2V0VG9wTGV2ZWxOb2RlS2V5cyIsImJsb2NrRWxlbSIsImJsb2NrTm9kZSIsImdldEVkaXRvclN0YXRlIiwicmVhZCIsImZpcnN0Tm9kZSIsImxhc3ROb2RlIiwiZ2V0RWxlbWVudEJ5S2V5IiwibGVuZ3RoIiwiZmlyc3ROb2RlUmVjdCIsImxhc3ROb2RlUmVjdCIsInkiLCJ0b3AiLCJib3R0b20iLCJpbmRleCIsImRpcmVjdGlvbiIsImtleSIsImVsZW0iLCJwb2ludCIsIlBvaW50IiwieCIsImRvbVJlY3QiLCJSZWN0IiwiZnJvbURPTSIsIm1hcmdpbkJvdHRvbSIsIm1hcmdpblRvcCIsImdldENvbGxhcHNlZE1hcmdpbnMiLCJyZWN0IiwiZ2VuZXJhdGVOZXdSZWN0IiwibGVmdCIsInJpZ2h0IiwicmVhc29uIiwiaXNPbkJvdHRvbVNpZGUiLCJpc09uVG9wU2lkZSIsInJlc3VsdCIsImNvbnRhaW5zIiwiJGdldE5vZGVCeUtleSIsInVzZUFkZEJsb2NrSGFuZGxlIiwiaXNFZGl0YWJsZSIsInNjcm9sbGVyRWxlbSIsInBhcmVudEVsZW1lbnQiLCJtZW51UmVmIiwidXNlUmVmIiwiaG92ZXJlZEVsZW1lbnQiLCJzZXRIb3ZlcmVkRWxlbWVudCIsInVzZVN0YXRlIiwidXNlRWZmZWN0Iiwib25Eb2N1bWVudE1vdXNlTW92ZSIsInRhcmdldCIsImlzSFRNTEVsZW1lbnQiLCJkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0iLCJwYWdlWCIsInBhZ2VZIiwiaG9yaXpvbnRhbEJ1ZmZlciIsInZlcnRpY2FsQnVmZmVyIiwiYWRqdXN0ZWRUb3AiLCJ3aW5kb3ciLCJzY3JvbGxZIiwiYWRqdXN0ZWRCb3R0b20iLCJpc09uSGFuZGxlRWxlbWVudCIsIl9lbXB0eUJsb2NrRWxlbSIsIm5vZGUiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY3VycmVudCIsImlzRW1wdHlQYXJhZ3JhcGgiLCJnZXRUeXBlIiwiZ2V0VGV4dENvbnRlbnQiLCJzZXRIYW5kbGVQb3NpdGlvbiIsImhhbmRsZUFkZENsaWNrIiwidXNlQ2FsbGJhY2siLCJob3ZlcmVkRWxlbWVudFRvVXNlIiwidXBkYXRlIiwibmV3UGFyYWdyYXBoIiwiJGNyZWF0ZVBhcmFncmFwaE5vZGUiLCJpbnNlcnRBZnRlciIsInNldFRpbWVvdXQiLCJnZXRLZXkiLCJmb2N1cyIsInNlbGVjdCIsImRpc3BhdGNoQ29tbWFuZCIsIkVOQUJMRV9TTEFTSF9NRU5VX0NPTU1BTkQiLCJzdG9wUHJvcGFnYXRpb24iLCJwcmV2ZW50RGVmYXVsdCIsImNyZWF0ZVBvcnRhbCIsIlJlYWN0IiwiRnJhZ21lbnQiLCJidXR0b24iLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwicmVmIiwidHlwZSIsImRpdiIsImJvZHkiLCJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IiwiX2VkaXRhYmxlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7K0JBMFRnQkE7OztlQUFBQTs7O3dDQXZUMEI7eUJBQ0w7K0RBRWQ7MEJBRU07dUJBRUM7dUJBQ1I7c0JBQ0Q7NENBQ3FCO3FDQUNOO3FDQUNBO21DQUNGO21DQUNBO1FBQzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFUCxNQUFNQyxRQUFRLENBQUM7QUFDZixNQUFNQywyQkFBMkI7QUFFakMsTUFBTUMsV0FBVztBQUNqQixNQUFNQyxTQUFTLENBQUM7QUFDaEIsTUFBTUMsZ0JBQWdCO0FBRXRCLElBQUlDLFlBQVlDO0FBRWhCLFNBQVNDLGdCQUFnQkMsVUFBa0I7SUFDekMsSUFBSUEsZUFBZSxHQUFHO1FBQ3BCLE9BQU9GO0lBQ1Q7SUFDQSxJQUFJRCxhQUFhLEtBQUtBLFlBQVlHLFlBQVk7UUFDNUMsT0FBT0g7SUFDVDtJQUVBLE9B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
|
|
289
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9BZGRCbG9ja0hhbmRsZVBsdWdpbi9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgdHlwZSB7IFBhcmFncmFwaE5vZGUgfSBmcm9tICdsZXhpY2FsJ1xuXG5pbXBvcnQgeyB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENvbXBvc2VyQ29udGV4dCdcbmltcG9ydCB7ICRjcmVhdGVQYXJhZ3JhcGhOb2RlIH0gZnJvbSAnbGV4aWNhbCdcbmltcG9ydCB7ICRnZXROb2RlQnlLZXksIHR5cGUgTGV4aWNhbEVkaXRvciwgdHlwZSBMZXhpY2FsTm9kZSB9IGZyb20gJ2xleGljYWwnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcblxuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2d1YXJkJ1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9wb2ludCdcbmltcG9ydCB7IFJlY3QgfSBmcm9tICcuLi8uLi8uLi91dGlscy9yZWN0J1xuaW1wb3J0IHsgRU5BQkxFX1NMQVNIX01FTlVfQ09NTUFORCB9IGZyb20gJy4uLy4uL1NsYXNoTWVudS9MZXhpY2FsVHlwZWFoZWFkTWVudVBsdWdpbidcbmltcG9ydCB7IGdldENvbGxhcHNlZE1hcmdpbnMgfSBmcm9tICcuLi91dGlscy9nZXRDb2xsYXBzZWRNYXJnaW5zJ1xuaW1wb3J0IHsgZ2V0VG9wTGV2ZWxOb2RlS2V5cyB9IGZyb20gJy4uL3V0aWxzL2dldFRvcExldmVsTm9kZUtleXMnXG5pbXBvcnQgeyBpc09uSGFuZGxlRWxlbWVudCB9IGZyb20gJy4uL3V0aWxzL2lzT25IYW5kbGVFbGVtZW50J1xuaW1wb3J0IHsgc2V0SGFuZGxlUG9zaXRpb24gfSBmcm9tICcuLi91dGlscy9zZXRIYW5kbGVQb3NpdGlvbidcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5jb25zdCBTUEFDRSA9IC0yNFxuY29uc3QgQUREX0JMT0NLX01FTlVfQ0xBU1NOQU1FID0gJ2FkZC1ibG9jay1tZW51J1xuXG5jb25zdCBEb3dud2FyZCA9IDFcbmNvbnN0IFVwd2FyZCA9IC0xXG5jb25zdCBJbmRldGVybWluYXRlID0gMFxuXG5sZXQgcHJldkluZGV4ID0gSW5maW5pdHlcblxuZnVuY3Rpb24gZ2V0Q3VycmVudEluZGV4KGtleXNMZW5ndGg6IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChrZXlzTGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEluZmluaXR5XG4gIH1cbiAgaWYgKHByZXZJbmRleCA+PSAwICYmIHByZXZJbmRleCA8IGtleXNMZW5ndGgpIHtcbiAgICByZXR1cm4gcHJldkluZGV4XG4gIH1cblxuICByZXR1cm4gTWF0aC5mbG9vcihrZXlzTGVuZ3RoIC8gMilcbn1cblxuZnVuY3Rpb24gZ2V0QmxvY2tFbGVtZW50KFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yLFxuICBldmVudDogTW91c2VFdmVudCxcbiAgdXNlRWRnZUFzRGVmYXVsdCA9IGZhbHNlLFxuICBob3Jpem9udGFsT2Zmc2V0ID0gMCxcbik6IHtcbiAgYmxvY2tFbGVtOiBIVE1MRWxlbWVudCB8IG51bGxcbiAgYmxvY2tOb2RlOiBMZXhpY2FsTm9kZSB8IG51bGxcbn0ge1xuICBjb25zdCBhbmNob3JFbGVtZW50UmVjdCA9IGFuY2hvckVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgY29uc3QgdG9wTGV2ZWxOb2RlS2V5cyA9IGdldFRvcExldmVsTm9kZUtleXMoZWRpdG9yKVxuXG4gIGxldCBibG9ja0VsZW06IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGxcbiAgbGV0IGJsb2NrTm9kZTogTGV4aWNhbE5vZGUgfCBudWxsID0gbnVsbFxuXG4gIC8vIFJldHVybiBudWxsIGlmIG1hdGNoaW5nIGJsb2NrIGVsZW1lbnQgaXMgdGhlIGZpcnN0IG9yIGxhc3Qgbm9kZVxuICBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICBpZiAodXNlRWRnZUFzRGVmYXVsdCkge1xuICAgICAgY29uc3QgW2ZpcnN0Tm9kZSwgbGFzdE5vZGVdID0gW1xuICAgICAgICBlZGl0b3IuZ2V0RWxlbWVudEJ5S2V5KHRvcExldmVsTm9kZUtleXNbMF0pLFxuICAgICAgICBlZGl0b3IuZ2V0RWxlbWVudEJ5S2V5KHRvcExldmVsTm9kZUtleXNbdG9wTGV2ZWxOb2RlS2V5cy5sZW5ndGggLSAxXSksXG4gICAgICBdXG5cbiAgICAgIGNvbnN0IFtmaXJzdE5vZGVSZWN0LCBsYXN0Tm9kZVJlY3RdID0gW1xuICAgICAgICBmaXJzdE5vZGU/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgICBsYXN0Tm9kZT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICBdXG5cbiAgICAgIGlmIChmaXJzdE5vZGVSZWN0ICYmIGxhc3ROb2RlUmVjdCkge1xuICAgICAgICBpZiAoZXZlbnQueSA8IGZpcnN0Tm9kZVJlY3QudG9wKSB7XG4gICAgICAgICAgYmxvY2tFbGVtID0gZmlyc3ROb2RlXG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQueSA+IGxhc3ROb2RlUmVjdC5ib3R0b20pIHtcbiAgICAgICAgICBibG9ja0VsZW0gPSBsYXN0Tm9kZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJsb2NrRWxlbSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBibG9ja0VsZW06IG51bGwsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmluZCBtYXRjaGluZyBibG9jayBlbGVtZW50XG4gICAgbGV0IGluZGV4ID0gZ2V0Q3VycmVudEluZGV4KHRvcExldmVsTm9kZUtleXMubGVuZ3RoKVxuICAgIGxldCBkaXJlY3Rpb24gPSBJbmRldGVybWluYXRlXG5cbiAgICB3aGlsZSAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRvcExldmVsTm9kZUtleXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBrZXkgPSB0b3BMZXZlbE5vZGVLZXlzW2luZGV4XVxuICAgICAgY29uc3QgZWxlbSA9IGVkaXRvci5nZXRFbGVtZW50QnlLZXkoa2V5KVxuICAgICAgaWYgKGVsZW0gPT09IG51bGwpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBvaW50ID0gbmV3IFBvaW50KGV2ZW50LnggKyBob3Jpem9udGFsT2Zmc2V0LCBldmVudC55KVxuICAgICAgY29uc3QgZG9tUmVjdCA9IFJlY3QuZnJvbURPTShlbGVtKVxuICAgICAgY29uc3QgeyBtYXJnaW5Cb3R0b20sIG1hcmdpblRvcCB9ID0gZ2V0Q29sbGFwc2VkTWFyZ2lucyhlbGVtKVxuXG4gICAgICBjb25zdCByZWN0ID0gZG9tUmVjdC5nZW5lcmF0ZU5ld1JlY3Qoe1xuICAgICAgICBib3R0b206IGRvbVJlY3QuYm90dG9tICsgbWFyZ2luQm90dG9tLFxuICAgICAgICBsZWZ0OiBhbmNob3JFbGVtZW50UmVjdC5sZWZ0LFxuICAgICAgICByaWdodDogYW5jaG9yRWxlbWVudFJlY3QucmlnaHQsXG4gICAgICAgIHRvcDogZG9tUmVjdC50b3AgLSBtYXJnaW5Ub3AsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlYXNvbjogeyBpc09uQm90dG9tU2lkZSwgaXNPblRvcFNpZGUgfSxcbiAgICAgICAgcmVzdWx0LFxuICAgICAgfSA9IHJlY3QuY29udGFpbnMocG9pbnQpXG5cbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgYmxvY2tFbGVtID0gZWxlbVxuICAgICAgICBibG9ja05vZGUgPSAkZ2V0Tm9kZUJ5S2V5KGtleSlcbiAgICAgICAgcHJldkluZGV4ID0gaW5kZXhcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gSW5kZXRlcm1pbmF0ZSkge1xuICAgICAgICBpZiAoaXNPblRvcFNpZGUpIHtcbiAgICAgICAgICBkaXJlY3Rpb24gPSBVcHdhcmRcbiAgICAgICAgfSBlbHNlIGlmIChpc09uQm90dG9tU2lkZSkge1xuICAgICAgICAgIGRpcmVjdGlvbiA9IERvd253YXJkXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gc3RvcCBzZWFyY2ggYmxvY2sgZWxlbWVudFxuICAgICAgICAgIGRpcmVjdGlvbiA9IEluZmluaXR5XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaW5kZXggKz0gZGlyZWN0aW9uXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiB7XG4gICAgYmxvY2tFbGVtLFxuICAgIGJsb2NrTm9kZSxcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VBZGRCbG9ja0hhbmRsZShcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yLFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbiAgaXNFZGl0YWJsZTogYm9vbGVhbixcbik6IEpTWC5FbGVtZW50IHtcbiAgY29uc3Qgc2Nyb2xsZXJFbGVtID0gYW5jaG9yRWxlbS5wYXJlbnRFbGVtZW50XG5cbiAgY29uc3QgbWVudVJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbClcbiAgY29uc3QgW2hvdmVyZWRFbGVtZW50LCBzZXRIb3ZlcmVkRWxlbWVudF0gPSB1c2VTdGF0ZTx7XG4gICAgZWxlbTogSFRNTEVsZW1lbnRcbiAgICBub2RlOiBMZXhpY2FsTm9kZVxuICB9IHwgbnVsbD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZ1bmN0aW9uIG9uRG9jdW1lbnRNb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldFxuICAgICAgaWYgKCFpc0hUTUxFbGVtZW50KHRhcmdldCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGxldCBkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0gPSAwXG4gICAgICAvLyBDYWxjdWxhdGUgZGlzdGFuY2UgYmV0d2VlbiBzY3JvbGxlckVsZW0gYW5kIHRhcmdldCBpZiB0YXJnZXQgaXMgbm90IGluIHNjcm9sbGVyRWxlbVxuICAgICAgaWYgKHNjcm9sbGVyRWxlbSAmJiAhc2Nyb2xsZXJFbGVtLmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgY29uc3QgeyBib3R0b20sIGxlZnQsIHJpZ2h0LCB0b3AgfSA9IHNjcm9sbGVyRWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICBjb25zdCB7IHBhZ2VYLCBwYWdlWSB9ID0gZXZlbnRcbiAgICAgICAgY29uc3QgaG9yaXpvbnRhbEJ1ZmZlciA9IDUwXG4gICAgICAgIGNvbnN0IHZlcnRpY2FsQnVmZmVyID0gMjVcbiAgICAgICAgY29uc3QgYWRqdXN0ZWRUb3AgPSB0b3AgKyB3aW5kb3cuc2Nyb2xsWVxuICAgICAgICBjb25zdCBhZGp1c3RlZEJvdHRvbSA9IGJvdHRvbSArIHdpbmRvdy5zY3JvbGxZXG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBhZ2VZIDwgYWRqdXN0ZWRUb3AgLSB2ZXJ0aWNhbEJ1ZmZlciB8fFxuICAgICAgICAgIHBhZ2VZID4gYWRqdXN0ZWRCb3R0b20gKyB2ZXJ0aWNhbEJ1ZmZlciB8fFxuICAgICAgICAgIHBhZ2VYIDwgbGVmdCAtIGhvcml6b250YWxCdWZmZXIgfHxcbiAgICAgICAgICBwYWdlWCA+IHJpZ2h0ICsgaG9yaXpvbnRhbEJ1ZmZlclxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAoaG92ZXJlZEVsZW1lbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHNldEhvdmVyZWRFbGVtZW50KG51bGwpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyBpcyB1c2VkIHRvIGFsbG93IHRoZSBfZW1wdHlCbG9ja0VsZW0gdG8gYmUgZm91bmQgd2hlbiB0aGUgbW91c2UgaXMgaW4gdGhlXG4gICAgICAgIC8vIGJ1ZmZlciB6b25lIGFyb3VuZCB0aGUgc2Nyb2xsZXJFbGVtLlxuICAgICAgICBpZiAocGFnZVggPCBsZWZ0IHx8IHBhZ2VYID4gcmlnaHQpIHtcbiAgICAgICAgICBkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0gPSBwYWdlWCA8IGxlZnQgPyBwYWdlWCAtIGxlZnQgOiBwYWdlWCAtIHJpZ2h0XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGlzT25IYW5kbGVFbGVtZW50KHRhcmdldCwgQUREX0JMT0NLX01FTlVfQ0xBU1NOQU1FKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgYmxvY2tFbGVtOiBfZW1wdHlCbG9ja0VsZW0sIGJsb2NrTm9kZSB9ID0gZ2V0QmxvY2tFbGVtZW50KFxuICAgICAgICBhbmNob3JFbGVtLFxuICAgICAgICBlZGl0b3IsXG4gICAgICAgIGV2ZW50LFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgLWRpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbSxcbiAgICAgIClcbiAgICAgIGlmICghX2VtcHR5QmxvY2tFbGVtKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKGhvdmVyZWRFbGVtZW50Py5ub2RlICE9PSBibG9ja05vZGUgfHwgaG92ZXJlZEVsZW1lbnQ/LmVsZW0gIT09IF9lbXB0eUJsb2NrRWxlbSkge1xuICAgICAgICBzZXRIb3ZlcmVkRWxlbWVudCh7XG4gICAgICAgICAgZWxlbTogX2VtcHR5QmxvY2tFbGVtLFxuICAgICAgICAgIG5vZGU6IGJsb2NrTm9kZSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTaW5jZSB0aGUgZHJhZ2dhYmxlQmxvY2tFbGVtIGlzIG91dHNpZGUgdGhlIGFjdHVhbCBlZGl0b3IsIHdlIG5lZWQgdG8gbGlzdGVuIHRvIHRoZSBkb2N1bWVudFxuICAgIC8vIHRvIGJlIGFibGUgdG8gZGV0ZWN0IHdoZW4gdGhlIG1vdXNlIGlzIG91dHNpZGUgdGhlIGVkaXRvciBhbmQgcmVzcGVjdCBhIGJ1ZmZlciBhcm91bmRcbiAgICAvLyB0aGUgc2Nyb2xsZXJFbGVtIHRvIGF2b2lkIHRoZSBkcmFnZ2FibGVCbG9ja0VsZW0gZGlzYXBwZWFyaW5nIHRvbyBlYXJseS5cbiAgICBkb2N1bWVudD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Eb2N1bWVudE1vdXNlTW92ZSlcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Eb2N1bWVudE1vdXNlTW92ZSlcbiAgICB9XG4gIH0sIFtzY3JvbGxlckVsZW0sIGFuY2hvckVsZW0sIGVkaXRvciwgaG92ZXJlZEVsZW1lbnRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG1lbnVSZWYuY3VycmVudCAmJiBob3ZlcmVkRWxlbWVudD8ubm9kZSkge1xuICAgICAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgICAgIC8vIENoZWNrIGlmIGJsb2NrTm9kZSBpcyBhbiBlbXB0eSB0ZXh0IG5vZGVcbiAgICAgICAgbGV0IGlzRW1wdHlQYXJhZ3JhcGggPSB0cnVlXG4gICAgICAgIGlmIChcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudC5ub2RlLmdldFR5cGUoKSAhPT0gJ3BhcmFncmFwaCcgfHxcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudC5ub2RlLmdldFRleHRDb250ZW50KCkgIT09ICcnXG4gICAgICAgICkge1xuICAgICAgICAgIGlzRW1wdHlQYXJhZ3JhcGggPSBmYWxzZVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0SGFuZGxlUG9zaXRpb24oXG4gICAgICAgICAgaG92ZXJlZEVsZW1lbnQ/LmVsZW0sXG4gICAgICAgICAgbWVudVJlZi5jdXJyZW50LFxuICAgICAgICAgIGFuY2hvckVsZW0sXG4gICAgICAgICAgaXNFbXB0eVBhcmFncmFwaCA/IFNQQUNFIDogU1BBQ0UgLSAyMCxcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICB9XG4gIH0sIFthbmNob3JFbGVtLCBob3ZlcmVkRWxlbWVudCwgZWRpdG9yXSlcblxuICBjb25zdCBoYW5kbGVBZGRDbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudCkgPT4ge1xuICAgICAgbGV0IGhvdmVyZWRFbGVtZW50VG9Vc2UgPSBob3ZlcmVkRWxlbWVudFxuICAgICAgaWYgKCFob3ZlcmVkRWxlbWVudFRvVXNlPy5ub2RlKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyAxLiBVcGRhdGUgaG92ZXJlZEVsZW1lbnQubm9kZSB0byBhIG5ldyBwYXJhZ3JhcGggbm9kZSBpZiB0aGUgaG92ZXJlZEVsZW1lbnQubm9kZSBpcyBub3QgYSBwYXJhZ3JhcGggbm9kZVxuICAgICAgZWRpdG9yLnVwZGF0ZSgoKSA9PiB7XG4gICAgICAgIC8vIENoZWNrIGlmIGJsb2NrTm9kZSBpcyBhbiBlbXB0eSB0ZXh0IG5vZGVcbiAgICAgICAgbGV0IGlzRW1wdHlQYXJhZ3JhcGggPSB0cnVlXG4gICAgICAgIGlmIChcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlLm5vZGUuZ2V0VHlwZSgpICE9PSAncGFyYWdyYXBoJyB8fFxuICAgICAgICAgIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZS5nZXRUZXh0Q29udGVudCgpICE9PSAnJ1xuICAgICAgICApIHtcbiAgICAgICAgICBpc0VtcHR5UGFyYWdyYXBoID0gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNFbXB0eVBhcmFncmFwaCkge1xuICAgICAgICAgIGNvbnN0IG5ld1BhcmFncmFwaCA9ICRjcmVhdGVQYXJhZ3JhcGhOb2RlKClcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlLm5vZGUuaW5zZXJ0QWZ0ZXIobmV3UGFyYWdyYXBoKVxuXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlID0ge1xuICAgICAgICAgICAgICBlbGVtOiBlZGl0b3IuZ2V0RWxlbWVudEJ5S2V5KG5ld1BhcmFncmFwaC5nZXRLZXkoKSksXG4gICAgICAgICAgICAgIG5vZGU6IG5ld1BhcmFncmFwaCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldEhvdmVyZWRFbGVtZW50KGhvdmVyZWRFbGVtZW50VG9Vc2UpXG4gICAgICAgICAgfSwgMClcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgLy8gMi4gRm9jdXMgb24gdGhlIG5ldyBwYXJhZ3JhcGggbm9kZVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGVkaXRvci51cGRhdGUoKCkgPT4ge1xuICAgICAgICAgIGVkaXRvci5mb2N1cygpXG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlLm5vZGUgJiZcbiAgICAgICAgICAgICdzZWxlY3QnIGluIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZSAmJlxuICAgICAgICAgICAgdHlwZW9mIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZS5zZWxlY3QgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZS5zZWxlY3QoKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0sIDEpXG5cbiAgICAgIC8vIE1ha2Ugc3VyZSB0aGlzIGlzIGNhbGxlZCBBRlRFUiB0aGUgZm9jdXNpbmcgaGFzIGJlZW4gcHJvY2Vzc2VkIGJ5IHRoZSBicm93c2VyXG4gICAgICAvLyBPdGhlcndpc2UsIHRoaXMgd29uJ3Qgd29ya1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGVkaXRvci5kaXNwYXRjaENvbW1hbmQoRU5BQkxFX1NMQVNIX01FTlVfQ09NTUFORCwge1xuICAgICAgICAgIG5vZGU6IGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZSBhcyBQYXJhZ3JhcGhOb2RlLFxuICAgICAgICB9KVxuICAgICAgfSwgMilcblxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICB9LFxuICAgIFtlZGl0b3IsIGhvdmVyZWRFbGVtZW50XSxcbiAgKVxuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9XCJpY29uIGFkZC1ibG9jay1tZW51XCJcbiAgICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgaGFuZGxlQWRkQ2xpY2soZXZlbnQpXG4gICAgICAgIH19XG4gICAgICAgIHJlZj17bWVudVJlZn1cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtpc0VkaXRhYmxlID8gJ2ljb24nIDogJyd9IC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L1JlYWN0LkZyYWdtZW50PixcbiAgICBhbmNob3JFbGVtLFxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBZGRCbG9ja0hhbmRsZVBsdWdpbih7XG4gIGFuY2hvckVsZW0gPSBkb2N1bWVudC5ib2R5LFxufToge1xuICBhbmNob3JFbGVtPzogSFRNTEVsZW1lbnRcbn0pOiBKU1guRWxlbWVudCB7XG4gIGNvbnN0IFtlZGl0b3JdID0gdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCgpXG4gIHJldHVybiB1c2VBZGRCbG9ja0hhbmRsZShlZGl0b3IsIGFuY2hvckVsZW0sIGVkaXRvci5fZWRpdGFibGUpXG59XG4iXSwibmFtZXMiOlsiQWRkQmxvY2tIYW5kbGVQbHVnaW4iLCJTUEFDRSIsIkFERF9CTE9DS19NRU5VX0NMQVNTTkFNRSIsIkRvd253YXJkIiwiVXB3YXJkIiwiSW5kZXRlcm1pbmF0ZSIsInByZXZJbmRleCIsIkluZmluaXR5IiwiZ2V0Q3VycmVudEluZGV4Iiwia2V5c0xlbmd0aCIsIk1hdGgiLCJmbG9vciIsImdldEJsb2NrRWxlbWVudCIsImFuY2hvckVsZW0iLCJlZGl0b3IiLCJldmVudCIsInVzZUVkZ2VBc0RlZmF1bHQiLCJob3Jpem9udGFsT2Zmc2V0IiwiYW5jaG9yRWxlbWVudFJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0b3BMZXZlbE5vZGVLZXlzIiwiZ2V0VG9wTGV2ZWxOb2RlS2V5cyIsImJsb2NrRWxlbSIsImJsb2NrTm9kZSIsImdldEVkaXRvclN0YXRlIiwicmVhZCIsImZpcnN0Tm9kZSIsImxhc3ROb2RlIiwiZ2V0RWxlbWVudEJ5S2V5IiwibGVuZ3RoIiwiZmlyc3ROb2RlUmVjdCIsImxhc3ROb2RlUmVjdCIsInkiLCJ0b3AiLCJib3R0b20iLCJpbmRleCIsImRpcmVjdGlvbiIsImtleSIsImVsZW0iLCJwb2ludCIsIlBvaW50IiwieCIsImRvbVJlY3QiLCJSZWN0IiwiZnJvbURPTSIsIm1hcmdpbkJvdHRvbSIsIm1hcmdpblRvcCIsImdldENvbGxhcHNlZE1hcmdpbnMiLCJyZWN0IiwiZ2VuZXJhdGVOZXdSZWN0IiwibGVmdCIsInJpZ2h0IiwicmVhc29uIiwiaXNPbkJvdHRvbVNpZGUiLCJpc09uVG9wU2lkZSIsInJlc3VsdCIsImNvbnRhaW5zIiwiJGdldE5vZGVCeUtleSIsInVzZUFkZEJsb2NrSGFuZGxlIiwiaXNFZGl0YWJsZSIsInNjcm9sbGVyRWxlbSIsInBhcmVudEVsZW1lbnQiLCJtZW51UmVmIiwidXNlUmVmIiwiaG92ZXJlZEVsZW1lbnQiLCJzZXRIb3ZlcmVkRWxlbWVudCIsInVzZVN0YXRlIiwidXNlRWZmZWN0Iiwib25Eb2N1bWVudE1vdXNlTW92ZSIsInRhcmdldCIsImlzSFRNTEVsZW1lbnQiLCJkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0iLCJwYWdlWCIsInBhZ2VZIiwiaG9yaXpvbnRhbEJ1ZmZlciIsInZlcnRpY2FsQnVmZmVyIiwiYWRqdXN0ZWRUb3AiLCJ3aW5kb3ciLCJzY3JvbGxZIiwiYWRqdXN0ZWRCb3R0b20iLCJpc09uSGFuZGxlRWxlbWVudCIsIl9lbXB0eUJsb2NrRWxlbSIsIm5vZGUiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY3VycmVudCIsImlzRW1wdHlQYXJhZ3JhcGgiLCJnZXRUeXBlIiwiZ2V0VGV4dENvbnRlbnQiLCJzZXRIYW5kbGVQb3NpdGlvbiIsImhhbmRsZUFkZENsaWNrIiwidXNlQ2FsbGJhY2siLCJob3ZlcmVkRWxlbWVudFRvVXNlIiwidXBkYXRlIiwibmV3UGFyYWdyYXBoIiwiJGNyZWF0ZVBhcmFncmFwaE5vZGUiLCJpbnNlcnRBZnRlciIsInNldFRpbWVvdXQiLCJnZXRLZXkiLCJmb2N1cyIsInNlbGVjdCIsImRpc3BhdGNoQ29tbWFuZCIsIkVOQUJMRV9TTEFTSF9NRU5VX0NPTU1BTkQiLCJzdG9wUHJvcGFnYXRpb24iLCJwcmV2ZW50RGVmYXVsdCIsImNyZWF0ZVBvcnRhbCIsIlJlYWN0IiwiRnJhZ21lbnQiLCJidXR0b24iLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwicmVmIiwidHlwZSIsImRpdiIsImJvZHkiLCJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IiwiX2VkaXRhYmxlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7K0JBOFRnQkE7OztlQUFBQTs7O3dDQTNUMEI7eUJBQ0w7K0RBRWQ7MEJBRU07dUJBRUM7dUJBQ1I7c0JBQ0Q7NENBQ3FCO3FDQUNOO3FDQUNBO21DQUNGO21DQUNBO1FBQzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFUCxNQUFNQyxRQUFRLENBQUM7QUFDZixNQUFNQywyQkFBMkI7QUFFakMsTUFBTUMsV0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/handles/DraggableBlockPlugin/index.tsx"],"names":[],"mappings":";AAkBA,OAAO,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/handles/DraggableBlockPlugin/index.tsx"],"names":[],"mappings":";AAkBA,OAAO,cAAc,CAAA;AAoXrB,wBAAgB,oBAAoB,CAAC,EACnC,UAA0B,GAC3B,EAAE;IACD,UAAU,CAAC,EAAE,WAAW,CAAA;CACzB,GAAG,GAAG,CAAC,OAAO,CAGd"}
|
|
@@ -154,7 +154,9 @@ function useDraggableBlockMenu(editor, anchorElem, isEditable) {
|
|
|
154
154
|
if (!_draggableBlockElem && !isFoundNodeEmptyParagraph) {
|
|
155
155
|
return;
|
|
156
156
|
}
|
|
157
|
-
|
|
157
|
+
if (draggableBlockElem !== _draggableBlockElem) {
|
|
158
|
+
setDraggableBlockElem(_draggableBlockElem);
|
|
159
|
+
}
|
|
158
160
|
}
|
|
159
161
|
// Since the draggableBlockElem is outside the actual editor, we need to listen to the document
|
|
160
162
|
// to be able to detect when the mouse is outside the editor and respect a buffer around the
|
|
@@ -167,7 +169,8 @@ function useDraggableBlockMenu(editor, anchorElem, isEditable) {
|
|
|
167
169
|
scrollerElem,
|
|
168
170
|
anchorElem,
|
|
169
171
|
editor,
|
|
170
|
-
calculateDistanceFromScrollerElem
|
|
172
|
+
calculateDistanceFromScrollerElem,
|
|
173
|
+
draggableBlockElem
|
|
171
174
|
]);
|
|
172
175
|
(0, _react.useEffect)(()=>{
|
|
173
176
|
if (menuRef.current) {
|
|
@@ -278,7 +281,9 @@ function useDraggableBlockMenu(editor, anchorElem, isEditable) {
|
|
|
278
281
|
targetNode.insertAfter(draggedNode)
|
|
279
282
|
} else {
|
|
280
283
|
targetNode.insertBefore(draggedNode)
|
|
281
|
-
}*/
|
|
284
|
+
}*/ if (draggableBlockElem !== null) {
|
|
285
|
+
setDraggableBlockElem(null);
|
|
286
|
+
}
|
|
282
287
|
});
|
|
283
288
|
return true;
|
|
284
289
|
}
|
|
@@ -338,4 +343,4 @@ function DraggableBlockPlugin({ anchorElem = document.body }) {
|
|
|
338
343
|
return useDraggableBlockMenu(editor, anchorElem, editor._editable);
|
|
339
344
|
}
|
|
340
345
|
|
|
341
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgdHlwZSB7IExleGljYWxFZGl0b3IgfSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0IHR5cGUgeyBEcmFnRXZlbnQgYXMgUmVhY3REcmFnRXZlbnQgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCB9IGZyb20gJ0BsZXhpY2FsL3JlYWN0L0xleGljYWxDb21wb3NlckNvbnRleHQnXG5pbXBvcnQgeyBldmVudEZpbGVzIH0gZnJvbSAnQGxleGljYWwvcmljaC10ZXh0J1xuaW1wb3J0IHsgJGdldE5lYXJlc3ROb2RlRnJvbURPTU5vZGUsICRnZXROb2RlQnlLZXkgfSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5cbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9ndWFyZCdcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvcG9pbnQnXG5pbXBvcnQgeyBnZXRUb3BMZXZlbE5vZGVLZXlzIH0gZnJvbSAnLi4vdXRpbHMvZ2V0VG9wTGV2ZWxOb2RlS2V5cydcbmltcG9ydCB7IGlzT25IYW5kbGVFbGVtZW50IH0gZnJvbSAnLi4vdXRpbHMvaXNPbkhhbmRsZUVsZW1lbnQnXG5pbXBvcnQgeyBzZXRIYW5kbGVQb3NpdGlvbiB9IGZyb20gJy4uL3V0aWxzL3NldEhhbmRsZVBvc2l0aW9uJ1xuaW1wb3J0IHsgZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSB9IGZyb20gJy4vZ2V0Qm91bmRpbmdSZWN0V2l0aG91dFRyYW5zZm9ybSdcbmltcG9ydCB7IGdldE5vZGVDbG9zZVRvUG9pbnQgfSBmcm9tICcuL2dldE5vZGVDbG9zZVRvUG9pbnQnXG5pbXBvcnQgJy4vaW5kZXguc2NzcydcbmltcG9ydCB7IHNldFRhcmdldExpbmUgfSBmcm9tICcuL3NldFRhcmdldExpbmUnXG5cbmNvbnN0IFNQQUNFID0gLTI0XG5jb25zdCBEUkFHR0FCTEVfQkxPQ0tfTUVOVV9DTEFTU05BTUUgPSAnZHJhZ2dhYmxlLWJsb2NrLW1lbnUnXG5jb25zdCBEUkFHX0RBVEFfRk9STUFUID0gJ2FwcGxpY2F0aW9uL3gtbGV4aWNhbC1kcmFnLWJsb2NrJ1xuXG5sZXQgcHJldkluZGV4ID0gSW5maW5pdHlcblxuZnVuY3Rpb24gZ2V0Q3VycmVudEluZGV4KGtleXNMZW5ndGg6IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChrZXlzTGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEluZmluaXR5XG4gIH1cbiAgaWYgKHByZXZJbmRleCA+PSAwICYmIHByZXZJbmRleCA8IGtleXNMZW5ndGgpIHtcbiAgICByZXR1cm4gcHJldkluZGV4XG4gIH1cblxuICByZXR1cm4gTWF0aC5mbG9vcihrZXlzTGVuZ3RoIC8gMilcbn1cblxuZnVuY3Rpb24gc2V0RHJhZ0ltYWdlKGRhdGFUcmFuc2ZlcjogRGF0YVRyYW5zZmVyLCBkcmFnZ2FibGVCbG9ja0VsZW06IEhUTUxFbGVtZW50KSB7XG4gIGNvbnN0IHsgdHJhbnNmb3JtIH0gPSBkcmFnZ2FibGVCbG9ja0VsZW0uc3R5bGVcblxuICAvLyBSZW1vdmUgZHJhZ0ltYWdlIGJvcmRlcnNcbiAgZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZShkcmFnZ2FibGVCbG9ja0VsZW0sIDAsIDApXG5cbiAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgZHJhZ2dhYmxlQmxvY2tFbGVtLnN0eWxlLnRyYW5zZm9ybSA9IHRyYW5zZm9ybVxuICB9KVxufVxuXG5mdW5jdGlvbiBoaWRlVGFyZ2V0TGluZShcbiAgdGFyZ2V0TGluZUVsZW06IEhUTUxFbGVtZW50IHwgbnVsbCxcbiAgbGFzdFRhcmdldEJsb2NrRWxlbTogSFRNTEVsZW1lbnQgfCBudWxsLFxuKSB7XG4gIGlmICh0YXJnZXRMaW5lRWxlbSkge1xuICAgIHRhcmdldExpbmVFbGVtLnN0eWxlLm9wYWNpdHkgPSAnMCdcbiAgfVxuICBpZiAobGFzdFRhcmdldEJsb2NrRWxlbSkge1xuICAgIGxhc3RUYXJnZXRCbG9ja0VsZW0uc3R5bGUub3BhY2l0eSA9ICcxJ1xuICAgIGxhc3RUYXJnZXRCbG9ja0VsZW0uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZSgwLCAwKSdcbiAgICAvL2xhc3RUYXJnZXRCbG9ja0VsZW0uc3R5bGUuYm9yZGVyID0gJ25vbmUnXG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlRHJhZ2dhYmxlQmxvY2tNZW51KFxuICBlZGl0b3I6IExleGljYWxFZGl0b3IsXG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50LFxuICBpc0VkaXRhYmxlOiBib29sZWFuLFxuKTogSlNYLkVsZW1lbnQge1xuICBjb25zdCBzY3JvbGxlckVsZW0gPSBhbmNob3JFbGVtLnBhcmVudEVsZW1lbnRcblxuICBjb25zdCBtZW51UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB0YXJnZXRMaW5lUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBkZWJ1Z0hpZ2hsaWdodFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgaXNEcmFnZ2luZ0Jsb2NrUmVmID0gdXNlUmVmPGJvb2xlYW4+KGZhbHNlKVxuICBjb25zdCBbZHJhZ2dhYmxlQmxvY2tFbGVtLCBzZXREcmFnZ2FibGVCbG9ja0VsZW1dID0gdXNlU3RhdGU8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBbbGFzdFRhcmdldEJsb2NrRWxlbSwgc2V0TGFzdFRhcmdldEJsb2NrRWxlbV0gPSB1c2VTdGF0ZTxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgY2FsY3VsYXRlRGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgcGFnZVg6IG51bWJlcixcbiAgICAgIHBhZ2VZOiBudW1iZXIsXG4gICAgICB0YXJnZXQ6IEhUTUxFbGVtZW50LFxuICAgICAgaG9yaXpvbnRhbEJ1ZmZlcjogbnVtYmVyID0gNTAsXG4gICAgICB2ZXJ0aWNhbEJ1ZmZlcjogbnVtYmVyID0gMjUsXG4gICAgKTogbnVtYmVyID0+IHtcbiAgICAgIGxldCBkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0gPSAwXG4gICAgICAvLyBDYWxjdWxhdGUgZGlzdGFuY2UgYmV0d2VlbiBzY3JvbGxlckVsZW0gYW5kIHRhcmdldCBpZiB0YXJnZXQgaXMgbm90IGluIHNjcm9sbGVyRWxlbVxuICAgICAgaWYgKHNjcm9sbGVyRWxlbSAmJiAhc2Nyb2xsZXJFbGVtLmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgY29uc3QgeyBib3R0b20sIGxlZnQsIHJpZ2h0LCB0b3AgfSA9IHNjcm9sbGVyRWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXG4gICAgICAgIGNvbnN0IGFkanVzdGVkVG9wID0gdG9wICsgd2luZG93LnNjcm9sbFlcbiAgICAgICAgY29uc3QgYWRqdXN0ZWRCb3R0b20gPSBib3R0b20gKyB3aW5kb3cuc2Nyb2xsWVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBwYWdlWSA8IGFkanVzdGVkVG9wIC0gdmVydGljYWxCdWZmZXIgfHxcbiAgICAgICAgICBwYWdlWSA+IGFkanVzdGVkQm90dG9tICsgdmVydGljYWxCdWZmZXIgfHxcbiAgICAgICAgICBwYWdlWCA8IGxlZnQgLSBob3Jpem9udGFsQnVmZmVyIHx8XG4gICAgICAgICAgcGFnZVggPiByaWdodCArIGhvcml6b250YWxCdWZmZXJcbiAgICAgICAgKSB7XG4gICAgICAgICAgc2V0RHJhZ2dhYmxlQmxvY2tFbGVtKG51bGwpXG4gICAgICAgICAgcmV0dXJuIGRpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyBpcyB1c2VkIHRvIGFsbG93IHRoZSBfZHJhZ2dhYmxlQmxvY2tFbGVtIHRvIGJlIGZvdW5kIHdoZW4gdGhlIG1vdXNlIGlzIGluIHRoZVxuICAgICAgICAvLyBidWZmZXIgem9uZSBhcm91bmQgdGhlIHNjcm9sbGVyRWxlbS5cbiAgICAgICAgaWYgKHBhZ2VYIDwgbGVmdCB8fCBwYWdlWCA+IHJpZ2h0KSB7XG4gICAgICAgICAgZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtID0gcGFnZVggPCBsZWZ0ID8gcGFnZVggLSBsZWZ0IDogcGFnZVggLSByaWdodFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtXG4gICAgfSxcbiAgICBbc2Nyb2xsZXJFbGVtXSxcbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLyoqXG4gICAgICogSGFuZGxlcyBwb3NpdGlvbmluZyBvZiB0aGUgZHJhZyBoYW5kbGVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvbkRvY3VtZW50TW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXRcbiAgICAgIGlmICghaXNIVE1MRWxlbWVudCh0YXJnZXQpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0gPSBjYWxjdWxhdGVEaXN0YW5jZUZyb21TY3JvbGxlckVsZW0oXG4gICAgICAgIGV2ZW50LnBhZ2VYLFxuICAgICAgICBldmVudC5wYWdlWSxcbiAgICAgICAgdGFyZ2V0LFxuICAgICAgKVxuXG4gICAgICBpZiAoaXNPbkhhbmRsZUVsZW1lbnQodGFyZ2V0LCBEUkFHR0FCTEVfQkxPQ0tfTUVOVV9DTEFTU05BTUUpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB0b3BMZXZlbE5vZGVLZXlzID0gZ2V0VG9wTGV2ZWxOb2RlS2V5cyhlZGl0b3IpXG4gICAgICBjb25zdCB7XG4gICAgICAgIGJsb2NrRWxlbTogX2RyYWdnYWJsZUJsb2NrRWxlbSxcbiAgICAgICAgZm91bmRBdEluZGV4LFxuICAgICAgICBpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoLFxuICAgICAgfSA9IGdldE5vZGVDbG9zZVRvUG9pbnQoe1xuICAgICAgICBhbmNob3JFbGVtLFxuICAgICAgICBjYWNoZV90cmVzaG9sZDogMCxcbiAgICAgICAgZWRpdG9yLFxuICAgICAgICBob3Jpem9udGFsT2Zmc2V0OiAtZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtLFxuICAgICAgICBwb2ludDogbmV3IFBvaW50KGV2ZW50LngsIGV2ZW50LnkpLFxuICAgICAgICBzdGFydEluZGV4OiBnZXRDdXJyZW50SW5kZXgodG9wTGV2ZWxOb2RlS2V5cy5sZW5ndGgpLFxuICAgICAgICB1c2VFZGdlQXNEZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0pXG4gICAgICAvL2lmIChERUJVRyAmJiBfZHJhZ2dhYmxlQmxvY2tFbGVtKSB7XG4gICAgICAvL3RhcmdldEJsb2NrRWxlbS5zdHlsZS5ib3JkZXIgPSAnM3B4IHNvbGlkIHJlZCdcbiAgICAgIC8vIGhpZ2hsaWdodEVsZW1PcmlnaW5hbFBvc2l0aW9uKGRlYnVnSGlnaGxpZ2h0UmVmLCBfZHJhZ2dhYmxlQmxvY2tFbGVtLCBhbmNob3JFbGVtKVxuICAgICAgLy99XG4gICAgICBwcmV2SW5kZXggPSBmb3VuZEF0SW5kZXhcblxuICAgICAgaWYgKCFfZHJhZ2dhYmxlQmxvY2tFbGVtICYmICFpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBzZXREcmFnZ2FibGVCbG9ja0VsZW0oX2RyYWdnYWJsZUJsb2NrRWxlbSlcbiAgICB9XG5cbiAgICAvLyBTaW5jZSB0aGUgZHJhZ2dhYmxlQmxvY2tFbGVtIGlzIG91dHNpZGUgdGhlIGFjdHVhbCBlZGl0b3IsIHdlIG5lZWQgdG8gbGlzdGVuIHRvIHRoZSBkb2N1bWVudFxuICAgIC8vIHRvIGJlIGFibGUgdG8gZGV0ZWN0IHdoZW4gdGhlIG1vdXNlIGlzIG91dHNpZGUgdGhlIGVkaXRvciBhbmQgcmVzcGVjdCBhIGJ1ZmZlciBhcm91bmQgdGhlXG4gICAgLy8gdGhlIHNjcm9sbGVyRWxlbSB0byBhdm9pZCB0aGUgZHJhZ2dhYmxlQmxvY2tFbGVtIGRpc2FwcGVhcmluZyB0b28gZWFybHkuXG4gICAgZG9jdW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uRG9jdW1lbnRNb3VzZU1vdmUpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uRG9jdW1lbnRNb3VzZU1vdmUpXG4gICAgfVxuICB9LCBbc2Nyb2xsZXJFbGVtLCBhbmNob3JFbGVtLCBlZGl0b3IsIGNhbGN1bGF0ZURpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAobWVudVJlZi5jdXJyZW50KSB7XG4gICAgICBzZXRIYW5kbGVQb3NpdGlvbihkcmFnZ2FibGVCbG9ja0VsZW0sIG1lbnVSZWYuY3VycmVudCwgYW5jaG9yRWxlbSwgU1BBQ0UpXG4gICAgfVxuICB9LCBbYW5jaG9yRWxlbSwgZHJhZ2dhYmxlQmxvY2tFbGVtXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZ1bmN0aW9uIG9uRHJhZ292ZXIoZXZlbnQ6IERyYWdFdmVudCk6IGJvb2xlYW4ge1xuICAgICAgaWYgKCFpc0RyYWdnaW5nQmxvY2tSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIGNvbnN0IFtpc0ZpbGVUcmFuc2Zlcl0gPSBldmVudEZpbGVzKGV2ZW50KVxuICAgICAgaWYgKGlzRmlsZVRyYW5zZmVyKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHBhZ2VZLCB0YXJnZXQgfSA9IGV2ZW50XG4gICAgICBpZiAoIWlzSFRNTEVsZW1lbnQodGFyZ2V0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtID0gY2FsY3VsYXRlRGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtKFxuICAgICAgICBldmVudC5wYWdlWCxcbiAgICAgICAgZXZlbnQucGFnZVksXG4gICAgICAgIHRhcmdldCxcbiAgICAgICAgMTAwLFxuICAgICAgICA1MCxcbiAgICAgIClcblxuICAgICAgY29uc3QgdG9wTGV2ZWxOb2RlS2V5cyA9IGdldFRvcExldmVsTm9kZUtleXMoZWRpdG9yKVxuXG4gICAgICBjb25zdCB7XG4gICAgICAgIGJsb2NrRWxlbTogdGFyZ2V0QmxvY2tFbGVtLFxuICAgICAgICBmb3VuZEF0SW5kZXgsXG4gICAgICAgIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGgsXG4gICAgICB9ID0gZ2V0Tm9kZUNsb3NlVG9Qb2ludCh7XG4gICAgICAgIGFuY2hvckVsZW0sXG4gICAgICAgIGVkaXRvcixcbiAgICAgICAgZnV6enk6IHRydWUsXG4gICAgICAgIGhvcml6b250YWxPZmZzZXQ6IC1kaXN0YW5jZUZyb21TY3JvbGxlckVsZW0sXG4gICAgICAgIHBvaW50OiBuZXcgUG9pbnQoZXZlbnQueCwgZXZlbnQueSksXG4gICAgICAgIHN0YXJ0SW5kZXg6IGdldEN1cnJlbnRJbmRleCh0b3BMZXZlbE5vZGVLZXlzLmxlbmd0aCksXG4gICAgICAgIHVzZUVkZ2VBc0RlZmF1bHQ6IHRydWUsXG4gICAgICAgIHZlcmJvc2U6IHRydWUsXG4gICAgICB9KVxuICAgICAgcHJldkluZGV4ID0gZm91bmRBdEluZGV4XG5cbiAgICAgIGNvbnN0IHRhcmdldExpbmVFbGVtID0gdGFyZ2V0TGluZVJlZi5jdXJyZW50XG4gICAgICAvLyB0YXJnZXRCbG9ja0VsZW0gPT09IG51bGwgc2hvdWxkbid0IGhhcHBlblxuICAgICAgaWYgKHRhcmdldEJsb2NrRWxlbSA9PT0gbnVsbCB8fCB0YXJnZXRMaW5lRWxlbSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cblxuICAgICAgaWYgKGRyYWdnYWJsZUJsb2NrRWxlbSAhPT0gdGFyZ2V0QmxvY2tFbGVtKSB7XG4gICAgICAgIHNldFRhcmdldExpbmUoXG4gICAgICAgICAgU1BBQ0UsXG4gICAgICAgICAgdGFyZ2V0TGluZUVsZW0sXG4gICAgICAgICAgdGFyZ2V0QmxvY2tFbGVtLFxuICAgICAgICAgIGxhc3RUYXJnZXRCbG9ja0VsZW0sXG4gICAgICAgICAgcGFnZVksXG4gICAgICAgICAgYW5jaG9yRWxlbSxcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICBkZWJ1Z0hpZ2hsaWdodFJlZixcbiAgICAgICAgICBpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoLFxuICAgICAgICApXG5cbiAgICAgICAgLy8gUHJldmVudCBkZWZhdWx0IGV2ZW50IHRvIGJlIGFibGUgdG8gdHJpZ2dlciBvbkRyb3AgZXZlbnRzXG4gICAgICAgIC8vIENhbGxpbmcgcHJldmVudERlZmF1bHQoKSBhZGRzIHRoZSBncmVlbiBwbHVzIGljb24gdG8gdGhlIGN1cnNvcixcbiAgICAgICAgLy8gaW5kaWNhdGluZyB0aGF0IHRoZSBkcm9wIGlzIGFsbG93ZWQuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhpZGVUYXJnZXRMaW5lKHRhcmdldExpbmVFbGVtLCBsYXN0VGFyZ2V0QmxvY2tFbGVtKVxuICAgICAgfVxuXG4gICAgICBzZXRMYXN0VGFyZ2V0QmxvY2tFbGVtKHRhcmdldEJsb2NrRWxlbSlcblxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCk6IGJvb2xlYW4ge1xuICAgICAgaWYgKCFpc0RyYWdnaW5nQmxvY2tSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIGNvbnN0IFtpc0ZpbGVUcmFuc2Zlcl0gPSBldmVudEZpbGVzKGV2ZW50KVxuICAgICAgaWYgKGlzRmlsZVRyYW5zZmVyKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgY29uc3QgeyBkYXRhVHJhbnNmZXIsIHBhZ2VZLCB0YXJnZXQgfSA9IGV2ZW50XG4gICAgICBjb25zdCBkcmFnRGF0YSA9IGRhdGFUcmFuc2Zlcj8uZ2V0RGF0YShEUkFHX0RBVEFfRk9STUFUKSB8fCAnJ1xuXG4gICAgICBlZGl0b3IudXBkYXRlKCgpID0+IHtcbiAgICAgICAgY29uc3QgZHJhZ2dlZE5vZGUgPSAkZ2V0Tm9kZUJ5S2V5KGRyYWdEYXRhKVxuICAgICAgICBpZiAoIWRyYWdnZWROb2RlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0hUTUxFbGVtZW50KHRhcmdldCkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0gPSBjYWxjdWxhdGVEaXN0YW5jZUZyb21TY3JvbGxlckVsZW0oXG4gICAgICAgICAgZXZlbnQucGFnZVgsXG4gICAgICAgICAgZXZlbnQucGFnZVksXG4gICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgIDEwMCxcbiAgICAgICAgICA1MCxcbiAgICAgICAgKVxuXG4gICAgICAgIGNvbnN0IHsgYmxvY2tFbGVtOiB0YXJnZXRCbG9ja0VsZW0sIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGggfSA9IGdldE5vZGVDbG9zZVRvUG9pbnQoe1xuICAgICAgICAgIGFuY2hvckVsZW0sXG4gICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgIGZ1enp5OiB0cnVlLFxuICAgICAgICAgIGhvcml6b250YWxPZmZzZXQ6IC1kaXN0YW5jZUZyb21TY3JvbGxlckVsZW0sXG4gICAgICAgICAgcG9pbnQ6IG5ldyBQb2ludChldmVudC54LCBldmVudC55KSxcbiAgICAgICAgICB1c2VFZGdlQXNEZWZhdWx0OiB0cnVlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICghdGFyZ2V0QmxvY2tFbGVtKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGFyZ2V0Tm9kZSA9ICRnZXROZWFyZXN0Tm9kZUZyb21ET01Ob2RlKHRhcmdldEJsb2NrRWxlbSlcbiAgICAgICAgaWYgKCF0YXJnZXROb2RlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhcmdldE5vZGUgPT09IGRyYWdnZWROb2RlKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgaGVpZ2h0OiB0YXJnZXRCbG9ja0VsZW1IZWlnaHQsIHRvcDogdGFyZ2V0QmxvY2tFbGVtVG9wIH0gPVxuICAgICAgICAgIGdldEJvdW5kaW5nQ2xpZW50UmVjdFdpdGhvdXRUcmFuc2Zvcm0odGFyZ2V0QmxvY2tFbGVtKVxuXG4gICAgICAgIGNvbnN0IG1vdXNlWSA9IHBhZ2VZXG4gICAgICAgIGNvbnN0IGlzQmVsb3cgPSBtb3VzZVkgPj0gdGFyZ2V0QmxvY2tFbGVtVG9wICsgdGFyZ2V0QmxvY2tFbGVtSGVpZ2h0IC8gMiArIHdpbmRvdy5zY3JvbGxZXG5cbiAgICAgICAgaWYgKCFpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoKSB7XG4gICAgICAgICAgaWYgKGlzQmVsb3cpIHtcbiAgICAgICAgICAgIC8vIGJlbG93IHRhcmdldEJsb2NrRWxlbVxuICAgICAgICAgICAgdGFyZ2V0Tm9kZS5pbnNlcnRBZnRlcihkcmFnZ2VkTm9kZSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gYWJvdmUgdGFyZ2V0QmxvY2tFbGVtXG4gICAgICAgICAgICB0YXJnZXROb2RlLmluc2VydEJlZm9yZShkcmFnZ2VkTm9kZSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy9cbiAgICAgICAgICB0YXJnZXROb2RlLmluc2VydEJlZm9yZShkcmFnZ2VkTm9kZSlcbiAgICAgICAgICB0YXJnZXROb2RlLnJlbW92ZSgpXG4gICAgICAgIH1cblxuICAgICAgICAvKlxuICAgICAgICBpZiAocGFnZVkgPj0gdGFyZ2V0QmxvY2tFbGVtVG9wICsgdGFyZ2V0QmxvY2tFbGVtSGVpZ2h0IC8gMikge1xuICAgICAgICAgIHRhcmdldE5vZGUuaW5zZXJ0QWZ0ZXIoZHJhZ2dlZE5vZGUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0Tm9kZS5pbnNlcnRCZWZvcmUoZHJhZ2dlZE5vZGUpXG4gICAgICAgIH0qL1xuICAgICAgICBzZXREcmFnZ2FibGVCbG9ja0VsZW0obnVsbClcbiAgICAgIH0pXG5cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgLy8gcmVnaXN0ZXIgb25EcmFnb3ZlciBldmVudCBsaXN0ZW5lcnM6XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCBvbkRyYWdvdmVyKVxuICAgIC8vIHJlZ2lzdGVyIG9uRHJvcCBldmVudCBsaXN0ZW5lcnM6XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIG9uRHJvcClcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcmFnb3ZlcicsIG9uRHJhZ292ZXIpXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcm9wJywgb25Ecm9wKVxuICAgIH1cbiAgfSwgW1xuICAgIGFuY2hvckVsZW0sXG4gICAgZWRpdG9yLFxuICAgIGxhc3RUYXJnZXRCbG9ja0VsZW0sXG4gICAgY2FsY3VsYXRlRGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtLFxuICAgIGRyYWdnYWJsZUJsb2NrRWxlbSxcbiAgXSlcblxuICBmdW5jdGlvbiBvbkRyYWdTdGFydChldmVudDogUmVhY3REcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KTogdm9pZCB7XG4gICAgY29uc3QgZGF0YVRyYW5zZmVyID0gZXZlbnQuZGF0YVRyYW5zZmVyXG4gICAgaWYgKCFkYXRhVHJhbnNmZXIgfHwgIWRyYWdnYWJsZUJsb2NrRWxlbSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldERyYWdJbWFnZShkYXRhVHJhbnNmZXIsIGRyYWdnYWJsZUJsb2NrRWxlbSlcbiAgICBsZXQgbm9kZUtleSA9ICcnXG4gICAgZWRpdG9yLnVwZGF0ZSgoKSA9PiB7XG4gICAgICBjb25zdCBub2RlID0gJGdldE5lYXJlc3ROb2RlRnJvbURPTU5vZGUoZHJhZ2dhYmxlQmxvY2tFbGVtKVxuICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgbm9kZUtleSA9IG5vZGUuZ2V0S2V5KClcbiAgICAgIH1cbiAgICB9KVxuICAgIGlzRHJhZ2dpbmdCbG9ja1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIGRhdGFUcmFuc2Zlci5zZXREYXRhKERSQUdfREFUQV9GT1JNQVQsIG5vZGVLZXkpXG4gIH1cblxuICBmdW5jdGlvbiBvbkRyYWdFbmQoKTogdm9pZCB7XG4gICAgaXNEcmFnZ2luZ0Jsb2NrUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIGhpZGVUYXJnZXRMaW5lKHRhcmdldExpbmVSZWYuY3VycmVudCwgbGFzdFRhcmdldEJsb2NrRWxlbSlcbiAgfVxuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9XCJpY29uIGRyYWdnYWJsZS1ibG9jay1tZW51XCJcbiAgICAgICAgZHJhZ2dhYmxlXG4gICAgICAgIG9uRHJhZ0VuZD17b25EcmFnRW5kfVxuICAgICAgICBvbkRyYWdTdGFydD17b25EcmFnU3RhcnR9XG4gICAgICAgIHJlZj17bWVudVJlZn1cbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2lzRWRpdGFibGUgPyAnaWNvbicgOiAnJ30gLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJkcmFnZ2FibGUtYmxvY2stdGFyZ2V0LWxpbmVcIiByZWY9e3RhcmdldExpbmVSZWZ9IC8+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImRlYnVnLWhpZ2hsaWdodFwiIHJlZj17ZGVidWdIaWdobGlnaHRSZWZ9IC8+XG4gICAgPC9SZWFjdC5GcmFnbWVudD4sXG4gICAgYW5jaG9yRWxlbSxcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gRHJhZ2dhYmxlQmxvY2tQbHVnaW4oe1xuICBhbmNob3JFbGVtID0gZG9jdW1lbnQuYm9keSxcbn06IHtcbiAgYW5jaG9yRWxlbT86IEhUTUxFbGVtZW50XG59KTogSlNYLkVsZW1lbnQge1xuICBjb25zdCBbZWRpdG9yXSA9IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQoKVxuICByZXR1cm4gdXNlRHJhZ2dhYmxlQmxvY2tNZW51KGVkaXRvciwgYW5jaG9yRWxlbSwgZWRpdG9yLl9lZGl0YWJsZSlcbn1cbiJdLCJuYW1lcyI6WyJEcmFnZ2FibGVCbG9ja1BsdWdpbiIsIlNQQUNFIiwiRFJBR0dBQkxFX0JMT0NLX01FTlVfQ0xBU1NOQU1FIiwiRFJBR19EQVRBX0ZPUk1BVCIsInByZXZJbmRleCIsIkluZmluaXR5IiwiZ2V0Q3VycmVudEluZGV4Iiwia2V5c0xlbmd0aCIsIk1hdGgiLCJmbG9vciIsInNldERyYWdJbWFnZSIsImRhdGFUcmFuc2ZlciIsImRyYWdnYWJsZUJsb2NrRWxlbSIsInRyYW5zZm9ybSIsInN0eWxlIiwic2V0VGltZW91dCIsImhpZGVUYXJnZXRMaW5lIiwidGFyZ2V0TGluZUVsZW0iLCJsYXN0VGFyZ2V0QmxvY2tFbGVtIiwib3BhY2l0eSIsInVzZURyYWdnYWJsZUJsb2NrTWVudSIsImVkaXRvciIsImFuY2hvckVsZW0iLCJpc0VkaXRhYmxlIiwic2Nyb2xsZXJFbGVtIiwicGFyZW50RWxlbWVudCIsIm1lbnVSZWYiLCJ1c2VSZWYiLCJ0YXJnZXRMaW5lUmVmIiwiZGVidWdIaWdobGlnaHRSZWYiLCJpc0RyYWdnaW5nQmxvY2tSZWYiLCJzZXREcmFnZ2FibGVCbG9ja0VsZW0iLCJ1c2VTdGF0ZSIsInNldExhc3RUYXJnZXRCbG9ja0VsZW0iLCJjYWxjdWxhdGVEaXN0YW5jZUZyb21TY3JvbGxlckVsZW0iLCJ1c2VDYWxsYmFjayIsInBhZ2VYIiwicGFnZVkiLCJ0YXJnZXQiLCJob3Jpem9udGFsQnVmZmVyIiwidmVydGljYWxCdWZmZXIiLCJkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0iLCJjb250YWlucyIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsInRvcCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImFkanVzdGVkVG9wIiwid2luZG93Iiwic2Nyb2xsWSIsImFkanVzdGVkQm90dG9tIiwidXNlRWZmZWN0Iiwib25Eb2N1bWVudE1vdXNlTW92ZSIsImV2ZW50IiwiaXNIVE1MRWxlbWVudCIsImlzT25IYW5kbGVFbGVtZW50IiwidG9wTGV2ZWxOb2RlS2V5cyIsImdldFRvcExldmVsTm9kZUtleXMiLCJibG9ja0VsZW0iLCJfZHJhZ2dhYmxlQmxvY2tFbGVtIiwiZm91bmRBdEluZGV4IiwiaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaCIsImdldE5vZGVDbG9zZVRvUG9pbnQiLCJjYWNoZV90cmVzaG9sZCIsImhvcml6b250YWxPZmZzZXQiLCJwb2ludCIsIlBvaW50IiwieCIsInkiLCJzdGFydEluZGV4IiwibGVuZ3RoIiwidXNlRWRnZUFzRGVmYXVsdCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJjdXJyZW50Iiwic2V0SGFuZGxlUG9zaXRpb24iLCJvbkRyYWdvdmVyIiwiaXNGaWxlVHJhbnNmZXIiLCJldmVudEZpbGVzIiwidGFyZ2V0QmxvY2tFbGVtIiwiZnV6enkiLCJ2ZXJib3NlIiwic2V0VGFyZ2V0TGluZSIsInByZXZlbnREZWZhdWx0Iiwib25Ecm9wIiwiZHJhZ0RhdGEiLCJnZXREYXRhIiwidXBkYXRlIiwiZHJhZ2dlZE5vZGUiLCIkZ2V0Tm9kZUJ5S2V5IiwidGFyZ2V0Tm9kZSIsIiRnZXROZWFyZXN0Tm9kZUZyb21ET01Ob2RlIiwiaGVpZ2h0IiwidGFyZ2V0QmxvY2tFbGVtSGVpZ2h0IiwidGFyZ2V0QmxvY2tFbGVtVG9wIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSIsIm1vdXNlWSIsImlzQmVsb3ciLCJpbnNlcnRBZnRlciIsImluc2VydEJlZm9yZSIsInJlbW92ZSIsIm9uRHJhZ1N0YXJ0Iiwibm9kZUtleSIsIm5vZGUiLCJnZXRLZXkiLCJzZXREYXRhIiwib25EcmFnRW5kIiwiY3JlYXRlUG9ydGFsIiwiUmVhY3QiLCJGcmFnbWVudCIsImRpdiIsImNsYXNzTmFtZSIsImRyYWdnYWJsZSIsInJlZiIsImJvZHkiLCJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IiwiX2VkaXRhYmxlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7K0JBa1lnQkE7OztlQUFBQTs7O3dDQTlYMEI7MEJBQ2Y7eUJBQytCOytEQUNuQzswQkFFTTt1QkFFQzt1QkFDUjtxQ0FDYzttQ0FDRjttQ0FDQTtpREFDb0I7cUNBQ2xCO1FBQzdCOytCQUN1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTlCLE1BQU1DLFFBQVEsQ0FBQztBQUNmLE1BQU1DLGlDQUFpQztBQUN2QyxNQUFNQyxtQkFBbUI7QUFFekIsSUFBSUMsWUFBWUM7QUFFaEIsU0FBU0MsZ0JBQWdCQyxVQUFrQjtJQUN6QyxJQUFJQSxlQUFlLEdBQUc7UUFDcEIsT0FBT0Y7SUFDVDtJQUNBLElBQUlE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
|
|
346
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgdHlwZSB7IExleGljYWxFZGl0b3IgfSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0IHR5cGUgeyBEcmFnRXZlbnQgYXMgUmVhY3REcmFnRXZlbnQgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCB9IGZyb20gJ0BsZXhpY2FsL3JlYWN0L0xleGljYWxDb21wb3NlckNvbnRleHQnXG5pbXBvcnQgeyBldmVudEZpbGVzIH0gZnJvbSAnQGxleGljYWwvcmljaC10ZXh0J1xuaW1wb3J0IHsgJGdldE5lYXJlc3ROb2RlRnJvbURPTU5vZGUsICRnZXROb2RlQnlLZXkgfSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5cbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9ndWFyZCdcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvcG9pbnQnXG5pbXBvcnQgeyBnZXRUb3BMZXZlbE5vZGVLZXlzIH0gZnJvbSAnLi4vdXRpbHMvZ2V0VG9wTGV2ZWxOb2RlS2V5cydcbmltcG9ydCB7IGlzT25IYW5kbGVFbGVtZW50IH0gZnJvbSAnLi4vdXRpbHMvaXNPbkhhbmRsZUVsZW1lbnQnXG5pbXBvcnQgeyBzZXRIYW5kbGVQb3NpdGlvbiB9IGZyb20gJy4uL3V0aWxzL3NldEhhbmRsZVBvc2l0aW9uJ1xuaW1wb3J0IHsgZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSB9IGZyb20gJy4vZ2V0Qm91bmRpbmdSZWN0V2l0aG91dFRyYW5zZm9ybSdcbmltcG9ydCB7IGdldE5vZGVDbG9zZVRvUG9pbnQgfSBmcm9tICcuL2dldE5vZGVDbG9zZVRvUG9pbnQnXG5pbXBvcnQgJy4vaW5kZXguc2NzcydcbmltcG9ydCB7IHNldFRhcmdldExpbmUgfSBmcm9tICcuL3NldFRhcmdldExpbmUnXG5cbmNvbnN0IFNQQUNFID0gLTI0XG5jb25zdCBEUkFHR0FCTEVfQkxPQ0tfTUVOVV9DTEFTU05BTUUgPSAnZHJhZ2dhYmxlLWJsb2NrLW1lbnUnXG5jb25zdCBEUkFHX0RBVEFfRk9STUFUID0gJ2FwcGxpY2F0aW9uL3gtbGV4aWNhbC1kcmFnLWJsb2NrJ1xuXG5sZXQgcHJldkluZGV4ID0gSW5maW5pdHlcblxuZnVuY3Rpb24gZ2V0Q3VycmVudEluZGV4KGtleXNMZW5ndGg6IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChrZXlzTGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEluZmluaXR5XG4gIH1cbiAgaWYgKHByZXZJbmRleCA+PSAwICYmIHByZXZJbmRleCA8IGtleXNMZW5ndGgpIHtcbiAgICByZXR1cm4gcHJldkluZGV4XG4gIH1cblxuICByZXR1cm4gTWF0aC5mbG9vcihrZXlzTGVuZ3RoIC8gMilcbn1cblxuZnVuY3Rpb24gc2V0RHJhZ0ltYWdlKGRhdGFUcmFuc2ZlcjogRGF0YVRyYW5zZmVyLCBkcmFnZ2FibGVCbG9ja0VsZW06IEhUTUxFbGVtZW50KSB7XG4gIGNvbnN0IHsgdHJhbnNmb3JtIH0gPSBkcmFnZ2FibGVCbG9ja0VsZW0uc3R5bGVcblxuICAvLyBSZW1vdmUgZHJhZ0ltYWdlIGJvcmRlcnNcbiAgZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZShkcmFnZ2FibGVCbG9ja0VsZW0sIDAsIDApXG5cbiAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgZHJhZ2dhYmxlQmxvY2tFbGVtLnN0eWxlLnRyYW5zZm9ybSA9IHRyYW5zZm9ybVxuICB9KVxufVxuXG5mdW5jdGlvbiBoaWRlVGFyZ2V0TGluZShcbiAgdGFyZ2V0TGluZUVsZW06IEhUTUxFbGVtZW50IHwgbnVsbCxcbiAgbGFzdFRhcmdldEJsb2NrRWxlbTogSFRNTEVsZW1lbnQgfCBudWxsLFxuKSB7XG4gIGlmICh0YXJnZXRMaW5lRWxlbSkge1xuICAgIHRhcmdldExpbmVFbGVtLnN0eWxlLm9wYWNpdHkgPSAnMCdcbiAgfVxuICBpZiAobGFzdFRhcmdldEJsb2NrRWxlbSkge1xuICAgIGxhc3RUYXJnZXRCbG9ja0VsZW0uc3R5bGUub3BhY2l0eSA9ICcxJ1xuICAgIGxhc3RUYXJnZXRCbG9ja0VsZW0uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZSgwLCAwKSdcbiAgICAvL2xhc3RUYXJnZXRCbG9ja0VsZW0uc3R5bGUuYm9yZGVyID0gJ25vbmUnXG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlRHJhZ2dhYmxlQmxvY2tNZW51KFxuICBlZGl0b3I6IExleGljYWxFZGl0b3IsXG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50LFxuICBpc0VkaXRhYmxlOiBib29sZWFuLFxuKTogSlNYLkVsZW1lbnQge1xuICBjb25zdCBzY3JvbGxlckVsZW0gPSBhbmNob3JFbGVtLnBhcmVudEVsZW1lbnRcblxuICBjb25zdCBtZW51UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB0YXJnZXRMaW5lUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBkZWJ1Z0hpZ2hsaWdodFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgaXNEcmFnZ2luZ0Jsb2NrUmVmID0gdXNlUmVmPGJvb2xlYW4+KGZhbHNlKVxuICBjb25zdCBbZHJhZ2dhYmxlQmxvY2tFbGVtLCBzZXREcmFnZ2FibGVCbG9ja0VsZW1dID0gdXNlU3RhdGU8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBbbGFzdFRhcmdldEJsb2NrRWxlbSwgc2V0TGFzdFRhcmdldEJsb2NrRWxlbV0gPSB1c2VTdGF0ZTxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgY2FsY3VsYXRlRGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgcGFnZVg6IG51bWJlcixcbiAgICAgIHBhZ2VZOiBudW1iZXIsXG4gICAgICB0YXJnZXQ6IEhUTUxFbGVtZW50LFxuICAgICAgaG9yaXpvbnRhbEJ1ZmZlcjogbnVtYmVyID0gNTAsXG4gICAgICB2ZXJ0aWNhbEJ1ZmZlcjogbnVtYmVyID0gMjUsXG4gICAgKTogbnVtYmVyID0+IHtcbiAgICAgIGxldCBkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0gPSAwXG4gICAgICAvLyBDYWxjdWxhdGUgZGlzdGFuY2UgYmV0d2VlbiBzY3JvbGxlckVsZW0gYW5kIHRhcmdldCBpZiB0YXJnZXQgaXMgbm90IGluIHNjcm9sbGVyRWxlbVxuICAgICAgaWYgKHNjcm9sbGVyRWxlbSAmJiAhc2Nyb2xsZXJFbGVtLmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgY29uc3QgeyBib3R0b20sIGxlZnQsIHJpZ2h0LCB0b3AgfSA9IHNjcm9sbGVyRWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXG4gICAgICAgIGNvbnN0IGFkanVzdGVkVG9wID0gdG9wICsgd2luZG93LnNjcm9sbFlcbiAgICAgICAgY29uc3QgYWRqdXN0ZWRCb3R0b20gPSBib3R0b20gKyB3aW5kb3cuc2Nyb2xsWVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBwYWdlWSA8IGFkanVzdGVkVG9wIC0gdmVydGljYWxCdWZmZXIgfHxcbiAgICAgICAgICBwYWdlWSA+IGFkanVzdGVkQm90dG9tICsgdmVydGljYWxCdWZmZXIgfHxcbiAgICAgICAgICBwYWdlWCA8IGxlZnQgLSBob3Jpem9udGFsQnVmZmVyIHx8XG4gICAgICAgICAgcGFnZVggPiByaWdodCArIGhvcml6b250YWxCdWZmZXJcbiAgICAgICAgKSB7XG4gICAgICAgICAgc2V0RHJhZ2dhYmxlQmxvY2tFbGVtKG51bGwpXG4gICAgICAgICAgcmV0dXJuIGRpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyBpcyB1c2VkIHRvIGFsbG93IHRoZSBfZHJhZ2dhYmxlQmxvY2tFbGVtIHRvIGJlIGZvdW5kIHdoZW4gdGhlIG1vdXNlIGlzIGluIHRoZVxuICAgICAgICAvLyBidWZmZXIgem9uZSBhcm91bmQgdGhlIHNjcm9sbGVyRWxlbS5cbiAgICAgICAgaWYgKHBhZ2VYIDwgbGVmdCB8fCBwYWdlWCA+IHJpZ2h0KSB7XG4gICAgICAgICAgZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtID0gcGFnZVggPCBsZWZ0ID8gcGFnZVggLSBsZWZ0IDogcGFnZVggLSByaWdodFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtXG4gICAgfSxcbiAgICBbc2Nyb2xsZXJFbGVtXSxcbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLyoqXG4gICAgICogSGFuZGxlcyBwb3NpdGlvbmluZyBvZiB0aGUgZHJhZyBoYW5kbGVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvbkRvY3VtZW50TW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXRcbiAgICAgIGlmICghaXNIVE1MRWxlbWVudCh0YXJnZXQpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0gPSBjYWxjdWxhdGVEaXN0YW5jZUZyb21TY3JvbGxlckVsZW0oXG4gICAgICAgIGV2ZW50LnBhZ2VYLFxuICAgICAgICBldmVudC5wYWdlWSxcbiAgICAgICAgdGFyZ2V0LFxuICAgICAgKVxuXG4gICAgICBpZiAoaXNPbkhhbmRsZUVsZW1lbnQodGFyZ2V0LCBEUkFHR0FCTEVfQkxPQ0tfTUVOVV9DTEFTU05BTUUpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB0b3BMZXZlbE5vZGVLZXlzID0gZ2V0VG9wTGV2ZWxOb2RlS2V5cyhlZGl0b3IpXG4gICAgICBjb25zdCB7XG4gICAgICAgIGJsb2NrRWxlbTogX2RyYWdnYWJsZUJsb2NrRWxlbSxcbiAgICAgICAgZm91bmRBdEluZGV4LFxuICAgICAgICBpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoLFxuICAgICAgfSA9IGdldE5vZGVDbG9zZVRvUG9pbnQoe1xuICAgICAgICBhbmNob3JFbGVtLFxuICAgICAgICBjYWNoZV90cmVzaG9sZDogMCxcbiAgICAgICAgZWRpdG9yLFxuICAgICAgICBob3Jpem9udGFsT2Zmc2V0OiAtZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtLFxuICAgICAgICBwb2ludDogbmV3IFBvaW50KGV2ZW50LngsIGV2ZW50LnkpLFxuICAgICAgICBzdGFydEluZGV4OiBnZXRDdXJyZW50SW5kZXgodG9wTGV2ZWxOb2RlS2V5cy5sZW5ndGgpLFxuICAgICAgICB1c2VFZGdlQXNEZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0pXG4gICAgICAvL2lmIChERUJVRyAmJiBfZHJhZ2dhYmxlQmxvY2tFbGVtKSB7XG4gICAgICAvL3RhcmdldEJsb2NrRWxlbS5zdHlsZS5ib3JkZXIgPSAnM3B4IHNvbGlkIHJlZCdcbiAgICAgIC8vIGhpZ2hsaWdodEVsZW1PcmlnaW5hbFBvc2l0aW9uKGRlYnVnSGlnaGxpZ2h0UmVmLCBfZHJhZ2dhYmxlQmxvY2tFbGVtLCBhbmNob3JFbGVtKVxuICAgICAgLy99XG4gICAgICBwcmV2SW5kZXggPSBmb3VuZEF0SW5kZXhcblxuICAgICAgaWYgKCFfZHJhZ2dhYmxlQmxvY2tFbGVtICYmICFpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoZHJhZ2dhYmxlQmxvY2tFbGVtICE9PSBfZHJhZ2dhYmxlQmxvY2tFbGVtKSB7XG4gICAgICAgIHNldERyYWdnYWJsZUJsb2NrRWxlbShfZHJhZ2dhYmxlQmxvY2tFbGVtKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNpbmNlIHRoZSBkcmFnZ2FibGVCbG9ja0VsZW0gaXMgb3V0c2lkZSB0aGUgYWN0dWFsIGVkaXRvciwgd2UgbmVlZCB0byBsaXN0ZW4gdG8gdGhlIGRvY3VtZW50XG4gICAgLy8gdG8gYmUgYWJsZSB0byBkZXRlY3Qgd2hlbiB0aGUgbW91c2UgaXMgb3V0c2lkZSB0aGUgZWRpdG9yIGFuZCByZXNwZWN0IGEgYnVmZmVyIGFyb3VuZCB0aGVcbiAgICAvLyB0aGUgc2Nyb2xsZXJFbGVtIHRvIGF2b2lkIHRoZSBkcmFnZ2FibGVCbG9ja0VsZW0gZGlzYXBwZWFyaW5nIHRvbyBlYXJseS5cbiAgICBkb2N1bWVudD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Eb2N1bWVudE1vdXNlTW92ZSlcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Eb2N1bWVudE1vdXNlTW92ZSlcbiAgICB9XG4gIH0sIFtzY3JvbGxlckVsZW0sIGFuY2hvckVsZW0sIGVkaXRvciwgY2FsY3VsYXRlRGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtLCBkcmFnZ2FibGVCbG9ja0VsZW1dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG1lbnVSZWYuY3VycmVudCkge1xuICAgICAgc2V0SGFuZGxlUG9zaXRpb24oZHJhZ2dhYmxlQmxvY2tFbGVtLCBtZW51UmVmLmN1cnJlbnQsIGFuY2hvckVsZW0sIFNQQUNFKVxuICAgIH1cbiAgfSwgW2FuY2hvckVsZW0sIGRyYWdnYWJsZUJsb2NrRWxlbV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmdW5jdGlvbiBvbkRyYWdvdmVyKGV2ZW50OiBEcmFnRXZlbnQpOiBib29sZWFuIHtcbiAgICAgIGlmICghaXNEcmFnZ2luZ0Jsb2NrUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBjb25zdCBbaXNGaWxlVHJhbnNmZXJdID0gZXZlbnRGaWxlcyhldmVudClcbiAgICAgIGlmIChpc0ZpbGVUcmFuc2Zlcikge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBwYWdlWSwgdGFyZ2V0IH0gPSBldmVudFxuICAgICAgaWYgKCFpc0hUTUxFbGVtZW50KHRhcmdldCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbSA9IGNhbGN1bGF0ZURpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbShcbiAgICAgICAgZXZlbnQucGFnZVgsXG4gICAgICAgIGV2ZW50LnBhZ2VZLFxuICAgICAgICB0YXJnZXQsXG4gICAgICAgIDEwMCxcbiAgICAgICAgNTAsXG4gICAgICApXG5cbiAgICAgIGNvbnN0IHRvcExldmVsTm9kZUtleXMgPSBnZXRUb3BMZXZlbE5vZGVLZXlzKGVkaXRvcilcblxuICAgICAgY29uc3Qge1xuICAgICAgICBibG9ja0VsZW06IHRhcmdldEJsb2NrRWxlbSxcbiAgICAgICAgZm91bmRBdEluZGV4LFxuICAgICAgICBpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoLFxuICAgICAgfSA9IGdldE5vZGVDbG9zZVRvUG9pbnQoe1xuICAgICAgICBhbmNob3JFbGVtLFxuICAgICAgICBlZGl0b3IsXG4gICAgICAgIGZ1enp5OiB0cnVlLFxuICAgICAgICBob3Jpem9udGFsT2Zmc2V0OiAtZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtLFxuICAgICAgICBwb2ludDogbmV3IFBvaW50KGV2ZW50LngsIGV2ZW50LnkpLFxuICAgICAgICBzdGFydEluZGV4OiBnZXRDdXJyZW50SW5kZXgodG9wTGV2ZWxOb2RlS2V5cy5sZW5ndGgpLFxuICAgICAgICB1c2VFZGdlQXNEZWZhdWx0OiB0cnVlLFxuICAgICAgICB2ZXJib3NlOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIHByZXZJbmRleCA9IGZvdW5kQXRJbmRleFxuXG4gICAgICBjb25zdCB0YXJnZXRMaW5lRWxlbSA9IHRhcmdldExpbmVSZWYuY3VycmVudFxuICAgICAgLy8gdGFyZ2V0QmxvY2tFbGVtID09PSBudWxsIHNob3VsZG4ndCBoYXBwZW5cbiAgICAgIGlmICh0YXJnZXRCbG9ja0VsZW0gPT09IG51bGwgfHwgdGFyZ2V0TGluZUVsZW0gPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG5cbiAgICAgIGlmIChkcmFnZ2FibGVCbG9ja0VsZW0gIT09IHRhcmdldEJsb2NrRWxlbSkge1xuICAgICAgICBzZXRUYXJnZXRMaW5lKFxuICAgICAgICAgIFNQQUNFLFxuICAgICAgICAgIHRhcmdldExpbmVFbGVtLFxuICAgICAgICAgIHRhcmdldEJsb2NrRWxlbSxcbiAgICAgICAgICBsYXN0VGFyZ2V0QmxvY2tFbGVtLFxuICAgICAgICAgIHBhZ2VZLFxuICAgICAgICAgIGFuY2hvckVsZW0sXG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgZGVidWdIaWdobGlnaHRSZWYsXG4gICAgICAgICAgaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaCxcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIFByZXZlbnQgZGVmYXVsdCBldmVudCB0byBiZSBhYmxlIHRvIHRyaWdnZXIgb25Ecm9wIGV2ZW50c1xuICAgICAgICAvLyBDYWxsaW5nIHByZXZlbnREZWZhdWx0KCkgYWRkcyB0aGUgZ3JlZW4gcGx1cyBpY29uIHRvIHRoZSBjdXJzb3IsXG4gICAgICAgIC8vIGluZGljYXRpbmcgdGhhdCB0aGUgZHJvcCBpcyBhbGxvd2VkLlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoaWRlVGFyZ2V0TGluZSh0YXJnZXRMaW5lRWxlbSwgbGFzdFRhcmdldEJsb2NrRWxlbSlcbiAgICAgIH1cblxuICAgICAgc2V0TGFzdFRhcmdldEJsb2NrRWxlbSh0YXJnZXRCbG9ja0VsZW0pXG5cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gb25Ecm9wKGV2ZW50OiBEcmFnRXZlbnQpOiBib29sZWFuIHtcbiAgICAgIGlmICghaXNEcmFnZ2luZ0Jsb2NrUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBjb25zdCBbaXNGaWxlVHJhbnNmZXJdID0gZXZlbnRGaWxlcyhldmVudClcbiAgICAgIGlmIChpc0ZpbGVUcmFuc2Zlcikge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgZGF0YVRyYW5zZmVyLCBwYWdlWSwgdGFyZ2V0IH0gPSBldmVudFxuICAgICAgY29uc3QgZHJhZ0RhdGEgPSBkYXRhVHJhbnNmZXI/LmdldERhdGEoRFJBR19EQVRBX0ZPUk1BVCkgfHwgJydcblxuICAgICAgZWRpdG9yLnVwZGF0ZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRyYWdnZWROb2RlID0gJGdldE5vZGVCeUtleShkcmFnRGF0YSlcbiAgICAgICAgaWYgKCFkcmFnZ2VkTm9kZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgICAgIGlmICghaXNIVE1MRWxlbWVudCh0YXJnZXQpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtID0gY2FsY3VsYXRlRGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtKFxuICAgICAgICAgIGV2ZW50LnBhZ2VYLFxuICAgICAgICAgIGV2ZW50LnBhZ2VZLFxuICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAxMDAsXG4gICAgICAgICAgNTAsXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCB7IGJsb2NrRWxlbTogdGFyZ2V0QmxvY2tFbGVtLCBpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoIH0gPSBnZXROb2RlQ2xvc2VUb1BvaW50KHtcbiAgICAgICAgICBhbmNob3JFbGVtLFxuICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICBmdXp6eTogdHJ1ZSxcbiAgICAgICAgICBob3Jpem9udGFsT2Zmc2V0OiAtZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtLFxuICAgICAgICAgIHBvaW50OiBuZXcgUG9pbnQoZXZlbnQueCwgZXZlbnQueSksXG4gICAgICAgICAgdXNlRWRnZUFzRGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoIXRhcmdldEJsb2NrRWxlbSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhcmdldE5vZGUgPSAkZ2V0TmVhcmVzdE5vZGVGcm9tRE9NTm9kZSh0YXJnZXRCbG9ja0VsZW0pXG4gICAgICAgIGlmICghdGFyZ2V0Tm9kZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgICAgIGlmICh0YXJnZXROb2RlID09PSBkcmFnZ2VkTm9kZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGhlaWdodDogdGFyZ2V0QmxvY2tFbGVtSGVpZ2h0LCB0b3A6IHRhcmdldEJsb2NrRWxlbVRvcCB9ID1cbiAgICAgICAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3RXaXRob3V0VHJhbnNmb3JtKHRhcmdldEJsb2NrRWxlbSlcblxuICAgICAgICBjb25zdCBtb3VzZVkgPSBwYWdlWVxuICAgICAgICBjb25zdCBpc0JlbG93ID0gbW91c2VZID49IHRhcmdldEJsb2NrRWxlbVRvcCArIHRhcmdldEJsb2NrRWxlbUhlaWdodCAvIDIgKyB3aW5kb3cuc2Nyb2xsWVxuXG4gICAgICAgIGlmICghaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaCkge1xuICAgICAgICAgIGlmIChpc0JlbG93KSB7XG4gICAgICAgICAgICAvLyBiZWxvdyB0YXJnZXRCbG9ja0VsZW1cbiAgICAgICAgICAgIHRhcmdldE5vZGUuaW5zZXJ0QWZ0ZXIoZHJhZ2dlZE5vZGUpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGFib3ZlIHRhcmdldEJsb2NrRWxlbVxuICAgICAgICAgICAgdGFyZ2V0Tm9kZS5pbnNlcnRCZWZvcmUoZHJhZ2dlZE5vZGUpXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vXG4gICAgICAgICAgdGFyZ2V0Tm9kZS5pbnNlcnRCZWZvcmUoZHJhZ2dlZE5vZGUpXG4gICAgICAgICAgdGFyZ2V0Tm9kZS5yZW1vdmUoKVxuICAgICAgICB9XG5cbiAgICAgICAgLypcbiAgICAgICAgaWYgKHBhZ2VZID49IHRhcmdldEJsb2NrRWxlbVRvcCArIHRhcmdldEJsb2NrRWxlbUhlaWdodCAvIDIpIHtcbiAgICAgICAgICB0YXJnZXROb2RlLmluc2VydEFmdGVyKGRyYWdnZWROb2RlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldE5vZGUuaW5zZXJ0QmVmb3JlKGRyYWdnZWROb2RlKVxuICAgICAgICB9Ki9cbiAgICAgICAgaWYgKGRyYWdnYWJsZUJsb2NrRWxlbSAhPT0gbnVsbCkge1xuICAgICAgICAgIHNldERyYWdnYWJsZUJsb2NrRWxlbShudWxsKVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIC8vIHJlZ2lzdGVyIG9uRHJhZ292ZXIgZXZlbnQgbGlzdGVuZXJzOlxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgb25EcmFnb3ZlcilcbiAgICAvLyByZWdpc3RlciBvbkRyb3AgZXZlbnQgbGlzdGVuZXJzOlxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCBvbkRyb3ApXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCBvbkRyYWdvdmVyKVxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJvcCcsIG9uRHJvcClcbiAgICB9XG4gIH0sIFtcbiAgICBhbmNob3JFbGVtLFxuICAgIGVkaXRvcixcbiAgICBsYXN0VGFyZ2V0QmxvY2tFbGVtLFxuICAgIGNhbGN1bGF0ZURpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbSxcbiAgICBkcmFnZ2FibGVCbG9ja0VsZW0sXG4gIF0pXG5cbiAgZnVuY3Rpb24gb25EcmFnU3RhcnQoZXZlbnQ6IFJlYWN0RHJhZ0V2ZW50PEhUTUxEaXZFbGVtZW50Pik6IHZvaWQge1xuICAgIGNvbnN0IGRhdGFUcmFuc2ZlciA9IGV2ZW50LmRhdGFUcmFuc2ZlclxuICAgIGlmICghZGF0YVRyYW5zZmVyIHx8ICFkcmFnZ2FibGVCbG9ja0VsZW0pIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXREcmFnSW1hZ2UoZGF0YVRyYW5zZmVyLCBkcmFnZ2FibGVCbG9ja0VsZW0pXG4gICAgbGV0IG5vZGVLZXkgPSAnJ1xuICAgIGVkaXRvci51cGRhdGUoKCkgPT4ge1xuICAgICAgY29uc3Qgbm9kZSA9ICRnZXROZWFyZXN0Tm9kZUZyb21ET01Ob2RlKGRyYWdnYWJsZUJsb2NrRWxlbSlcbiAgICAgIGlmIChub2RlKSB7XG4gICAgICAgIG5vZGVLZXkgPSBub2RlLmdldEtleSgpXG4gICAgICB9XG4gICAgfSlcbiAgICBpc0RyYWdnaW5nQmxvY2tSZWYuY3VycmVudCA9IHRydWVcbiAgICBkYXRhVHJhbnNmZXIuc2V0RGF0YShEUkFHX0RBVEFfRk9STUFULCBub2RlS2V5KVxuICB9XG5cbiAgZnVuY3Rpb24gb25EcmFnRW5kKCk6IHZvaWQge1xuICAgIGlzRHJhZ2dpbmdCbG9ja1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBoaWRlVGFyZ2V0TGluZSh0YXJnZXRMaW5lUmVmLmN1cnJlbnQsIGxhc3RUYXJnZXRCbG9ja0VsZW0pXG4gIH1cblxuICByZXR1cm4gY3JlYXRlUG9ydGFsKFxuICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPVwiaWNvbiBkcmFnZ2FibGUtYmxvY2stbWVudVwiXG4gICAgICAgIGRyYWdnYWJsZVxuICAgICAgICBvbkRyYWdFbmQ9e29uRHJhZ0VuZH1cbiAgICAgICAgb25EcmFnU3RhcnQ9e29uRHJhZ1N0YXJ0fVxuICAgICAgICByZWY9e21lbnVSZWZ9XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtpc0VkaXRhYmxlID8gJ2ljb24nIDogJyd9IC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZHJhZ2dhYmxlLWJsb2NrLXRhcmdldC1saW5lXCIgcmVmPXt0YXJnZXRMaW5lUmVmfSAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZWJ1Zy1oaWdobGlnaHRcIiByZWY9e2RlYnVnSGlnaGxpZ2h0UmVmfSAvPlxuICAgIDwvUmVhY3QuRnJhZ21lbnQ+LFxuICAgIGFuY2hvckVsZW0sXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERyYWdnYWJsZUJsb2NrUGx1Z2luKHtcbiAgYW5jaG9yRWxlbSA9IGRvY3VtZW50LmJvZHksXG59OiB7XG4gIGFuY2hvckVsZW0/OiBIVE1MRWxlbWVudFxufSk6IEpTWC5FbGVtZW50IHtcbiAgY29uc3QgW2VkaXRvcl0gPSB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0KClcbiAgcmV0dXJuIHVzZURyYWdnYWJsZUJsb2NrTWVudShlZGl0b3IsIGFuY2hvckVsZW0sIGVkaXRvci5fZWRpdGFibGUpXG59XG4iXSwibmFtZXMiOlsiRHJhZ2dhYmxlQmxvY2tQbHVnaW4iLCJTUEFDRSIsIkRSQUdHQUJMRV9CTE9DS19NRU5VX0NMQVNTTkFNRSIsIkRSQUdfREFUQV9GT1JNQVQiLCJwcmV2SW5kZXgiLCJJbmZpbml0eSIsImdldEN1cnJlbnRJbmRleCIsImtleXNMZW5ndGgiLCJNYXRoIiwiZmxvb3IiLCJzZXREcmFnSW1hZ2UiLCJkYXRhVHJhbnNmZXIiLCJkcmFnZ2FibGVCbG9ja0VsZW0iLCJ0cmFuc2Zvcm0iLCJzdHlsZSIsInNldFRpbWVvdXQiLCJoaWRlVGFyZ2V0TGluZSIsInRhcmdldExpbmVFbGVtIiwibGFzdFRhcmdldEJsb2NrRWxlbSIsIm9wYWNpdHkiLCJ1c2VEcmFnZ2FibGVCbG9ja01lbnUiLCJlZGl0b3IiLCJhbmNob3JFbGVtIiwiaXNFZGl0YWJsZSIsInNjcm9sbGVyRWxlbSIsInBhcmVudEVsZW1lbnQiLCJtZW51UmVmIiwidXNlUmVmIiwidGFyZ2V0TGluZVJlZiIsImRlYnVnSGlnaGxpZ2h0UmVmIiwiaXNEcmFnZ2luZ0Jsb2NrUmVmIiwic2V0RHJhZ2dhYmxlQmxvY2tFbGVtIiwidXNlU3RhdGUiLCJzZXRMYXN0VGFyZ2V0QmxvY2tFbGVtIiwiY2FsY3VsYXRlRGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtIiwidXNlQ2FsbGJhY2siLCJwYWdlWCIsInBhZ2VZIiwidGFyZ2V0IiwiaG9yaXpvbnRhbEJ1ZmZlciIsInZlcnRpY2FsQnVmZmVyIiwiZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtIiwiY29udGFpbnMiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJhZGp1c3RlZFRvcCIsIndpbmRvdyIsInNjcm9sbFkiLCJhZGp1c3RlZEJvdHRvbSIsInVzZUVmZmVjdCIsIm9uRG9jdW1lbnRNb3VzZU1vdmUiLCJldmVudCIsImlzSFRNTEVsZW1lbnQiLCJpc09uSGFuZGxlRWxlbWVudCIsInRvcExldmVsTm9kZUtleXMiLCJnZXRUb3BMZXZlbE5vZGVLZXlzIiwiYmxvY2tFbGVtIiwiX2RyYWdnYWJsZUJsb2NrRWxlbSIsImZvdW5kQXRJbmRleCIsImlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGgiLCJnZXROb2RlQ2xvc2VUb1BvaW50IiwiY2FjaGVfdHJlc2hvbGQiLCJob3Jpem9udGFsT2Zmc2V0IiwicG9pbnQiLCJQb2ludCIsIngiLCJ5Iiwic3RhcnRJbmRleCIsImxlbmd0aCIsInVzZUVkZ2VBc0RlZmF1bHQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY3VycmVudCIsInNldEhhbmRsZVBvc2l0aW9uIiwib25EcmFnb3ZlciIsImlzRmlsZVRyYW5zZmVyIiwiZXZlbnRGaWxlcyIsInRhcmdldEJsb2NrRWxlbSIsImZ1enp5IiwidmVyYm9zZSIsInNldFRhcmdldExpbmUiLCJwcmV2ZW50RGVmYXVsdCIsIm9uRHJvcCIsImRyYWdEYXRhIiwiZ2V0RGF0YSIsInVwZGF0ZSIsImRyYWdnZWROb2RlIiwiJGdldE5vZGVCeUtleSIsInRhcmdldE5vZGUiLCIkZ2V0TmVhcmVzdE5vZGVGcm9tRE9NTm9kZSIsImhlaWdodCIsInRhcmdldEJsb2NrRWxlbUhlaWdodCIsInRhcmdldEJsb2NrRWxlbVRvcCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdFdpdGhvdXRUcmFuc2Zvcm0iLCJtb3VzZVkiLCJpc0JlbG93IiwiaW5zZXJ0QWZ0ZXIiLCJpbnNlcnRCZWZvcmUiLCJyZW1vdmUiLCJvbkRyYWdTdGFydCIsIm5vZGVLZXkiLCJub2RlIiwiZ2V0S2V5Iiwic2V0RGF0YSIsIm9uRHJhZ0VuZCIsImNyZWF0ZVBvcnRhbCIsIlJlYWN0IiwiRnJhZ21lbnQiLCJkaXYiLCJjbGFzc05hbWUiLCJkcmFnZ2FibGUiLCJyZWYiLCJib2R5IiwidXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCIsIl9lZGl0YWJsZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OytCQXNZZ0JBOzs7ZUFBQUE7Ozt3Q0FsWTBCOzBCQUNmO3lCQUMrQjsrREFDbkM7MEJBRU07dUJBRUM7dUJBQ1I7cUNBQ2M7bUNBQ0Y7bUNBQ0E7aURBQ29CO3FDQUNsQjtRQUM3QjsrQkFDdUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU5QixN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
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* From ChatGPT, only that verified it works for HR elements.
|
|
3
|
+
*
|
|
4
|
+
* HTML Elements can have CSS lineHeight applied to them, but it doesn't always affect the visual layout.
|
|
5
|
+
* This function checks if the line-height property has an effect on the element's layout.
|
|
6
|
+
* @param htmlElem
|
|
7
|
+
*/
|
|
8
|
+
export declare function doesLineHeightAffectElement(htmlElem: HTMLElement): boolean;
|
|
9
|
+
//# sourceMappingURL=doesLineHeightAffectElement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doesLineHeightAffectElement.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/handles/utils/doesLineHeightAffectElement.ts"],"names":[],"mappings":"AAaA;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,WAAW,WA2BhE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "doesLineHeightAffectElement", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return doesLineHeightAffectElement;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const replacedElements = [
|
|
12
|
+
'IMG',
|
|
13
|
+
'INPUT',
|
|
14
|
+
'TEXTAREA',
|
|
15
|
+
'SELECT',
|
|
16
|
+
'BUTTON',
|
|
17
|
+
'VIDEO',
|
|
18
|
+
'OBJECT',
|
|
19
|
+
'EMBED',
|
|
20
|
+
'IFRAME',
|
|
21
|
+
'HR'
|
|
22
|
+
];
|
|
23
|
+
function doesLineHeightAffectElement(htmlElem) {
|
|
24
|
+
if (!htmlElem) return false;
|
|
25
|
+
// Check for replaced elements, elements that typically don't support line-height adjustments,
|
|
26
|
+
// and elements without visible content
|
|
27
|
+
if (replacedElements.includes(htmlElem.tagName) || htmlElem.offsetHeight === 0 || htmlElem.offsetWidth === 0) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
// Check for specific CSS properties that negate line-height's visual effects
|
|
31
|
+
const style = window.getComputedStyle(htmlElem);
|
|
32
|
+
if (style.display === 'table-cell' || style.position === 'absolute' || style.visibility === 'hidden' || style.opacity === '0') {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
// This is a basic check, and there can be more complex scenarios where line-height doesn't have an effect.
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy91dGlscy9kb2VzTGluZUhlaWdodEFmZmVjdEVsZW1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgcmVwbGFjZWRFbGVtZW50cyA9IFtcbiAgJ0lNRycsXG4gICdJTlBVVCcsXG4gICdURVhUQVJFQScsXG4gICdTRUxFQ1QnLFxuICAnQlVUVE9OJyxcbiAgJ1ZJREVPJyxcbiAgJ09CSkVDVCcsXG4gICdFTUJFRCcsXG4gICdJRlJBTUUnLFxuICAnSFInLFxuXVxuXG4vKipcbiAqIEZyb20gQ2hhdEdQVCwgb25seSB0aGF0IHZlcmlmaWVkIGl0IHdvcmtzIGZvciBIUiBlbGVtZW50cy5cbiAqXG4gKiBIVE1MIEVsZW1lbnRzIGNhbiBoYXZlIENTUyBsaW5lSGVpZ2h0IGFwcGxpZWQgdG8gdGhlbSwgYnV0IGl0IGRvZXNuJ3QgYWx3YXlzIGFmZmVjdCB0aGUgdmlzdWFsIGxheW91dC5cbiAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBsaW5lLWhlaWdodCBwcm9wZXJ0eSBoYXMgYW4gZWZmZWN0IG9uIHRoZSBlbGVtZW50J3MgbGF5b3V0LlxuICogQHBhcmFtIGh0bWxFbGVtXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkb2VzTGluZUhlaWdodEFmZmVjdEVsZW1lbnQoaHRtbEVsZW06IEhUTUxFbGVtZW50KSB7XG4gIGlmICghaHRtbEVsZW0pIHJldHVybiBmYWxzZVxuXG4gIC8vIENoZWNrIGZvciByZXBsYWNlZCBlbGVtZW50cywgZWxlbWVudHMgdGhhdCB0eXBpY2FsbHkgZG9uJ3Qgc3VwcG9ydCBsaW5lLWhlaWdodCBhZGp1c3RtZW50cyxcbiAgLy8gYW5kIGVsZW1lbnRzIHdpdGhvdXQgdmlzaWJsZSBjb250ZW50XG5cbiAgaWYgKFxuICAgIHJlcGxhY2VkRWxlbWVudHMuaW5jbHVkZXMoaHRtbEVsZW0udGFnTmFtZSkgfHxcbiAgICBodG1sRWxlbS5vZmZzZXRIZWlnaHQgPT09IDAgfHxcbiAgICBodG1sRWxlbS5vZmZzZXRXaWR0aCA9PT0gMFxuICApIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIENoZWNrIGZvciBzcGVjaWZpYyBDU1MgcHJvcGVydGllcyB0aGF0IG5lZ2F0ZSBsaW5lLWhlaWdodCdzIHZpc3VhbCBlZmZlY3RzXG4gIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoaHRtbEVsZW0pXG4gIGlmIChcbiAgICBzdHlsZS5kaXNwbGF5ID09PSAndGFibGUtY2VsbCcgfHxcbiAgICBzdHlsZS5wb3NpdGlvbiA9PT0gJ2Fic29sdXRlJyB8fFxuICAgIHN0eWxlLnZpc2liaWxpdHkgPT09ICdoaWRkZW4nIHx8XG4gICAgc3R5bGUub3BhY2l0eSA9PT0gJzAnXG4gICkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gVGhpcyBpcyBhIGJhc2ljIGNoZWNrLCBhbmQgdGhlcmUgY2FuIGJlIG1vcmUgY29tcGxleCBzY2VuYXJpb3Mgd2hlcmUgbGluZS1oZWlnaHQgZG9lc24ndCBoYXZlIGFuIGVmZmVjdC5cbiAgcmV0dXJuIHRydWVcbn1cbiJdLCJuYW1lcyI6WyJkb2VzTGluZUhlaWdodEFmZmVjdEVsZW1lbnQiLCJyZXBsYWNlZEVsZW1lbnRzIiwiaHRtbEVsZW0iLCJpbmNsdWRlcyIsInRhZ05hbWUiLCJvZmZzZXRIZWlnaHQiLCJvZmZzZXRXaWR0aCIsInN0eWxlIiwid2luZG93IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImRpc3BsYXkiLCJwb3NpdGlvbiIsInZpc2liaWxpdHkiLCJvcGFjaXR5Il0sIm1hcHBpbmdzIjoiOzs7OytCQW9CZ0JBOzs7ZUFBQUE7OztBQXBCaEIsTUFBTUMsbUJBQW1CO0lBQ3ZCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0Q7QUFTTSxTQUFTRCw0QkFBNEJFLFFBQXFCO0lBQy9ELElBQUksQ0FBQ0EsVUFBVSxPQUFPO0lBRXRCLDhGQUE4RjtJQUM5Rix1Q0FBdUM7SUFFdkMsSUFDRUQsaUJBQWlCRSxRQUFRLENBQUNELFNBQVNFLE9BQU8sS0FDMUNGLFNBQVNHLFlBQVksS0FBSyxLQUMxQkgsU0FBU0ksV0FBVyxLQUFLLEdBQ3pCO1FBQ0EsT0FBTztJQUNUO0lBRUEsNkVBQTZFO0lBQzdFLE1BQU1DLFFBQVFDLE9BQU9DLGdCQUFnQixDQUFDUDtJQUN0QyxJQUNFSyxNQUFNRyxPQUFPLEtBQUssZ0JBQ2xCSCxNQUFNSSxRQUFRLEtBQUssY0FDbkJKLE1BQU1LLFVBQVUsS0FBSyxZQUNyQkwsTUFBTU0sT0FBTyxLQUFLLEtBQ2xCO1FBQ0EsT0FBTztJQUNUO0lBRUEsMkdBQTJHO0lBQzNHLE9BQU87QUFDVCJ9
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function setHandlePosition(targetElem: HTMLElement | null,
|
|
1
|
+
export declare function setHandlePosition(targetElem: HTMLElement | null, handleElem: HTMLElement, anchorElem: HTMLElement, leftOffset?: number): void;
|
|
2
2
|
//# sourceMappingURL=setHandlePosition.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setHandlePosition.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/handles/utils/setHandlePosition.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setHandlePosition.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/handles/utils/setHandlePosition.ts"],"names":[],"mappings":"AAEA,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,WAAW,GAAG,IAAI,EAC9B,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,WAAW,EACvB,UAAU,GAAE,MAAU,QAkCvB"}
|
|
@@ -8,20 +8,30 @@ Object.defineProperty(exports, "setHandlePosition", {
|
|
|
8
8
|
return setHandlePosition;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
|
|
11
|
+
const _doesLineHeightAffectElement = require("./doesLineHeightAffectElement");
|
|
12
|
+
function setHandlePosition(targetElem, handleElem, anchorElem, leftOffset = 0) {
|
|
12
13
|
if (!targetElem) {
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
handleElem.style.opacity = '0';
|
|
15
|
+
handleElem.style.transform = 'translate(-10000px, -10000px)';
|
|
15
16
|
return;
|
|
16
17
|
}
|
|
17
18
|
const targetRect = targetElem.getBoundingClientRect();
|
|
18
19
|
const targetStyle = window.getComputedStyle(targetElem);
|
|
19
|
-
const floatingElemRect =
|
|
20
|
+
const floatingElemRect = handleElem.getBoundingClientRect();
|
|
20
21
|
const anchorElementRect = anchorElem.getBoundingClientRect();
|
|
21
|
-
|
|
22
|
+
let top;
|
|
23
|
+
const shouldDisplayHandleInCenter = targetRect.height < 60;
|
|
24
|
+
if (!shouldDisplayHandleInCenter) {
|
|
25
|
+
// No need to let line height affect the re-positioning of the floating element if line height has no
|
|
26
|
+
// visual effect on the element. Otherwise, the floating element will be positioned incorrectly.
|
|
27
|
+
const actualLineHeight = (0, _doesLineHeightAffectElement.doesLineHeightAffectElement)(targetElem) ? parseInt(targetStyle.lineHeight, 10) : 0;
|
|
28
|
+
top = targetRect.top + (actualLineHeight - floatingElemRect.height) / 2 - anchorElementRect.top;
|
|
29
|
+
} else {
|
|
30
|
+
top = targetRect.top - floatingElemRect.height / 2 - anchorElementRect.top + targetRect.height / 2;
|
|
31
|
+
}
|
|
22
32
|
const left = leftOffset;
|
|
23
|
-
|
|
24
|
-
|
|
33
|
+
handleElem.style.opacity = '1';
|
|
34
|
+
handleElem.style.transform = `translate(${left}px, ${top}px)`;
|
|
25
35
|
}
|
|
26
36
|
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy91dGlscy9zZXRIYW5kbGVQb3NpdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkb2VzTGluZUhlaWdodEFmZmVjdEVsZW1lbnQgfSBmcm9tICcuL2RvZXNMaW5lSGVpZ2h0QWZmZWN0RWxlbWVudCdcblxuZXhwb3J0IGZ1bmN0aW9uIHNldEhhbmRsZVBvc2l0aW9uKFxuICB0YXJnZXRFbGVtOiBIVE1MRWxlbWVudCB8IG51bGwsXG4gIGhhbmRsZUVsZW06IEhUTUxFbGVtZW50LFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbiAgbGVmdE9mZnNldDogbnVtYmVyID0gMCwgLy8gU1BBQ0Vcbikge1xuICBpZiAoIXRhcmdldEVsZW0pIHtcbiAgICBoYW5kbGVFbGVtLnN0eWxlLm9wYWNpdHkgPSAnMCdcbiAgICBoYW5kbGVFbGVtLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUoLTEwMDAwcHgsIC0xMDAwMHB4KSdcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IHRhcmdldFJlY3QgPSB0YXJnZXRFbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gIGNvbnN0IHRhcmdldFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGFyZ2V0RWxlbSlcbiAgY29uc3QgZmxvYXRpbmdFbGVtUmVjdCA9IGhhbmRsZUVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgY29uc3QgYW5jaG9yRWxlbWVudFJlY3QgPSBhbmNob3JFbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cbiAgbGV0IHRvcDogbnVtYmVyXG5cbiAgY29uc3Qgc2hvdWxkRGlzcGxheUhhbmRsZUluQ2VudGVyID0gdGFyZ2V0UmVjdC5oZWlnaHQgPCA2MFxuXG4gIGlmICghc2hvdWxkRGlzcGxheUhhbmRsZUluQ2VudGVyKSB7XG4gICAgLy8gTm8gbmVlZCB0byBsZXQgbGluZSBoZWlnaHQgYWZmZWN0IHRoZSByZS1wb3NpdGlvbmluZyBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBpZiBsaW5lIGhlaWdodCBoYXMgbm9cbiAgICAvLyB2aXN1YWwgZWZmZWN0IG9uIHRoZSBlbGVtZW50LiBPdGhlcndpc2UsIHRoZSBmbG9hdGluZyBlbGVtZW50IHdpbGwgYmUgcG9zaXRpb25lZCBpbmNvcnJlY3RseS5cbiAgICBjb25zdCBhY3R1YWxMaW5lSGVpZ2h0ID0gZG9lc0xpbmVIZWlnaHRBZmZlY3RFbGVtZW50KHRhcmdldEVsZW0pXG4gICAgICA/IHBhcnNlSW50KHRhcmdldFN0eWxlLmxpbmVIZWlnaHQsIDEwKVxuICAgICAgOiAwXG5cbiAgICB0b3AgPSB0YXJnZXRSZWN0LnRvcCArIChhY3R1YWxMaW5lSGVpZ2h0IC0gZmxvYXRpbmdFbGVtUmVjdC5oZWlnaHQpIC8gMiAtIGFuY2hvckVsZW1lbnRSZWN0LnRvcFxuICB9IGVsc2Uge1xuICAgIHRvcCA9XG4gICAgICB0YXJnZXRSZWN0LnRvcCAtIGZsb2F0aW5nRWxlbVJlY3QuaGVpZ2h0IC8gMiAtIGFuY2hvckVsZW1lbnRSZWN0LnRvcCArIHRhcmdldFJlY3QuaGVpZ2h0IC8gMlxuICB9XG5cbiAgY29uc3QgbGVmdCA9IGxlZnRPZmZzZXRcblxuICBoYW5kbGVFbGVtLnN0eWxlLm9wYWNpdHkgPSAnMSdcbiAgaGFuZGxlRWxlbS5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7bGVmdH1weCwgJHt0b3B9cHgpYFxufVxuIl0sIm5hbWVzIjpbInNldEhhbmRsZVBvc2l0aW9uIiwidGFyZ2V0RWxlbSIsImhhbmRsZUVsZW0iLCJhbmNob3JFbGVtIiwibGVmdE9mZnNldCIsInN0eWxlIiwib3BhY2l0eSIsInRyYW5zZm9ybSIsInRhcmdldFJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0YXJnZXRTdHlsZSIsIndpbmRvdyIsImdldENvbXB1dGVkU3R5bGUiLCJmbG9hdGluZ0VsZW1SZWN0IiwiYW5jaG9yRWxlbWVudFJlY3QiLCJ0b3AiLCJzaG91bGREaXNwbGF5SGFuZGxlSW5DZW50ZXIiLCJoZWlnaHQiLCJhY3R1YWxMaW5lSGVpZ2h0IiwiZG9lc0xpbmVIZWlnaHRBZmZlY3RFbGVtZW50IiwicGFyc2VJbnQiLCJsaW5lSGVpZ2h0IiwibGVmdCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFFZ0JBOzs7ZUFBQUE7Ozs2Q0FGNEI7QUFFckMsU0FBU0Esa0JBQ2RDLFVBQThCLEVBQzlCQyxVQUF1QixFQUN2QkMsVUFBdUIsRUFDdkJDLGFBQXFCLENBQUM7SUFFdEIsSUFBSSxDQUFDSCxZQUFZO1FBQ2ZDLFdBQVdHLEtBQUssQ0FBQ0MsT0FBTyxHQUFHO1FBQzNCSixXQUFXRyxLQUFLLENBQUNFLFNBQVMsR0FBRztRQUM3QjtJQUNGO0lBRUEsTUFBTUMsYUFBYVAsV0FBV1EscUJBQXFCO0lBQ25ELE1BQU1DLGNBQWNDLE9BQU9DLGdCQUFnQixDQUFDWDtJQUM1QyxNQUFNWSxtQkFBbUJYLFdBQVdPLHFCQUFxQjtJQUN6RCxNQUFNSyxvQkFBb0JYLFdBQVdNLHFCQUFxQjtJQUUxRCxJQUFJTTtJQUVKLE1BQU1DLDhCQUE4QlIsV0FBV1MsTUFBTSxHQUFHO0lBRXhELElBQUksQ0FBQ0QsNkJBQTZCO1FBQ2hDLHFHQUFxRztRQUNyRyxnR0FBZ0c7UUFDaEcsTUFBTUUsbUJBQW1CQyxJQUFBQSx3REFBMkIsRUFBQ2xCLGNBQ2pEbUIsU0FBU1YsWUFBWVcsVUFBVSxFQUFFLE1BQ2pDO1FBRUpOLE1BQU1QLFdBQVdPLEdBQUcsR0FBRyxBQUFDRyxDQUFBQSxtQkFBbUJMLGlCQUFpQkksTUFBTSxBQUFELElBQUssSUFBSUgsa0JBQWtCQyxHQUFHO0lBQ2pHLE9BQU87UUFDTEEsTUFDRVAsV0FBV08sR0FBRyxHQUFHRixpQkFBaUJJLE1BQU0sR0FBRyxJQUFJSCxrQkFBa0JDLEdBQUcsR0FBR1AsV0FBV1MsTUFBTSxHQUFHO0lBQy9GO0lBRUEsTUFBTUssT0FBT2xCO0lBRWJGLFdBQVdHLEtBQUssQ0FBQ0MsT0FBTyxHQUFHO0lBQzNCSixXQUFXRyxLQUFLLENBQUNFLFNBQVMsR0FBRyxDQUFDLFVBQVUsRUFBRWUsS0FBSyxJQUFJLEVBQUVQLElBQUksR0FBRyxDQUFDO0FBQy9EIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/ui/icons/HorizontalRule/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAatC,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "HorizontalRuleIcon", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return HorizontalRuleIcon;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _react = /*#__PURE__*/ _interop_require_default(require("react"));
|
|
12
|
+
function _interop_require_default(obj) {
|
|
13
|
+
return obj && obj.__esModule ? obj : {
|
|
14
|
+
default: obj
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
const HorizontalRuleIcon = ()=>/*#__PURE__*/ _react.default.createElement("svg", {
|
|
18
|
+
"aria-hidden": "true",
|
|
19
|
+
className: "icon",
|
|
20
|
+
fill: "none",
|
|
21
|
+
focusable: "false",
|
|
22
|
+
height: "20",
|
|
23
|
+
viewBox: "0 0 20 20",
|
|
24
|
+
width: "20",
|
|
25
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
26
|
+
}, /*#__PURE__*/ _react.default.createElement("rect", {
|
|
27
|
+
fill: "currentColor",
|
|
28
|
+
height: "1",
|
|
29
|
+
width: "12",
|
|
30
|
+
x: "4",
|
|
31
|
+
y: "9.5"
|
|
32
|
+
}));
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3VpL2ljb25zL0hvcml6b250YWxSdWxlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmV4cG9ydCBjb25zdCBIb3Jpem9udGFsUnVsZUljb246IFJlYWN0LkZDID0gKCkgPT4gKFxuICA8c3ZnXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICBjbGFzc05hbWU9XCJpY29uXCJcbiAgICBmaWxsPVwibm9uZVwiXG4gICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgIGhlaWdodD1cIjIwXCJcbiAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICB3aWR0aD1cIjIwXCJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgPlxuICAgIDxyZWN0IGZpbGw9XCJjdXJyZW50Q29sb3JcIiBoZWlnaHQ9XCIxXCIgd2lkdGg9XCIxMlwiIHg9XCI0XCIgeT1cIjkuNVwiIC8+XG4gIDwvc3ZnPlxuKVxuIl0sIm5hbWVzIjpbIkhvcml6b250YWxSdWxlSWNvbiIsInN2ZyIsImFyaWEtaGlkZGVuIiwiY2xhc3NOYW1lIiwiZmlsbCIsImZvY3VzYWJsZSIsImhlaWdodCIsInZpZXdCb3giLCJ3aWR0aCIsInhtbG5zIiwicmVjdCIsIngiLCJ5Il0sIm1hcHBpbmdzIjoiOzs7OytCQUVhQTs7O2VBQUFBOzs7OERBRks7Ozs7OztBQUVYLE1BQU1BLHFCQUErQixrQkFDMUMsNkJBQUNDO1FBQ0NDLGVBQVk7UUFDWkMsV0FBVTtRQUNWQyxNQUFLO1FBQ0xDLFdBQVU7UUFDVkMsUUFBTztRQUNQQyxTQUFRO1FBQ1JDLE9BQU07UUFDTkMsT0FBTTtxQkFFTiw2QkFBQ0M7UUFBS04sTUFBSztRQUFlRSxRQUFPO1FBQUlFLE9BQU07UUFBS0csR0FBRTtRQUFJQyxHQUFFIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createBlockNode.d.ts","sourceRoot":"","sources":["../../../../../src/field/lexical/utils/markdown/createBlockNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"createBlockNode.d.ts","sourceRoot":"","sources":["../../../../../src/field/lexical/utils/markdown/createBlockNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,eAAO,MAAM,eAAe,eACd,CAAC,KAAK,EAAE,MAAM,MAAM,CAAC,KAAK,WAAW,KAChD,kBAAkB,CAAC,SAAS,CAS9B,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export type LexicalRichTextAdapter = RichTextAdapter<SerializedEditorState, Adap
|
|
|
15
15
|
};
|
|
16
16
|
export declare function lexicalEditor(props?: LexicalEditorProps): LexicalRichTextAdapter;
|
|
17
17
|
export { BlockQuoteFeature } from './field/features/BlockQuote';
|
|
18
|
-
export { BlocksFeature } from './field/features/Blocks';
|
|
18
|
+
export { BlocksFeature, type BlocksFeatureProps, type LexicalBlock } from './field/features/Blocks';
|
|
19
19
|
export { $createBlockNode, $isBlockNode, type BlockFields, BlockNode, type SerializedBlockNode, } from './field/features/Blocks/nodes/BlocksNode';
|
|
20
20
|
export { HeadingFeature } from './field/features/Heading';
|
|
21
21
|
export { LinkFeature } from './field/features/Link';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAIpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAY3C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,EACL,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE;QAAE,eAAe,EAAE,eAAe,EAAE,CAAA;KAAE,KAAK,eAAe,EAAE,CAAC,GACpF,eAAe,EAAE,CAAA;IACrB,OAAO,CAAC,EAAE,mBAAmB,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,eAAe,CAAC,qBAAqB,EAAE,YAAY,EAAE,GAAG,CAAC,GAAG;IAC/F,YAAY,EAAE,qBAAqB,CAAA;CACpC,CAAA;AAED,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,kBAAkB,GAAG,sBAAsB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|