@pie-lib/editable-html 11.3.0-beta.0 → 11.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.json +12 -3322
- package/CHANGELOG.md +116 -100
- package/lib/block-tags.js +1 -1
- package/lib/block-tags.js.map +1 -0
- package/lib/constants.js +1 -1
- package/lib/constants.js.map +1 -0
- package/lib/editor.js +7 -7
- package/lib/editor.js.map +1 -0
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -0
- package/lib/parse-html.js +1 -1
- package/lib/parse-html.js.map +1 -0
- package/lib/plugins/characters/custom-popper.js +1 -1
- package/lib/plugins/characters/custom-popper.js.map +1 -0
- package/lib/plugins/characters/index.js +1 -1
- package/lib/plugins/characters/index.js.map +1 -0
- package/lib/plugins/characters/utils.js +1 -1
- package/lib/plugins/characters/utils.js.map +1 -0
- package/lib/plugins/css/icons/index.js +1 -1
- package/lib/plugins/css/icons/index.js.map +1 -0
- package/lib/plugins/css/index.js +1 -1
- package/lib/plugins/css/index.js.map +1 -0
- package/lib/plugins/customPlugin/index.js +1 -1
- package/lib/plugins/customPlugin/index.js.map +1 -0
- package/lib/plugins/html/icons/index.js +1 -1
- package/lib/plugins/html/icons/index.js.map +1 -0
- package/lib/plugins/html/index.js +1 -1
- package/lib/plugins/html/index.js.map +1 -0
- package/lib/plugins/image/alt-dialog.js +1 -1
- package/lib/plugins/image/alt-dialog.js.map +1 -0
- package/lib/plugins/image/component.js +1 -1
- package/lib/plugins/image/component.js.map +1 -0
- package/lib/plugins/image/image-toolbar.js +1 -1
- package/lib/plugins/image/image-toolbar.js.map +1 -0
- package/lib/plugins/image/index.js +1 -1
- package/lib/plugins/image/index.js.map +1 -0
- package/lib/plugins/image/insert-image-handler.js +1 -1
- package/lib/plugins/image/insert-image-handler.js.map +1 -0
- package/lib/plugins/index.js +1 -1
- package/lib/plugins/index.js.map +1 -0
- package/lib/plugins/list/index.js +1 -1
- package/lib/plugins/list/index.js.map +1 -0
- package/lib/plugins/math/index.js +1 -1
- package/lib/plugins/math/index.js.map +1 -0
- package/lib/plugins/media/index.js +1 -1
- package/lib/plugins/media/index.js.map +1 -0
- package/lib/plugins/media/media-dialog.js +4 -4
- package/lib/plugins/media/media-dialog.js.map +1 -0
- package/lib/plugins/media/media-toolbar.js +1 -1
- package/lib/plugins/media/media-toolbar.js.map +1 -0
- package/lib/plugins/media/media-wrapper.js +1 -1
- package/lib/plugins/media/media-wrapper.js.map +1 -0
- package/lib/plugins/rendering/index.js +1 -1
- package/lib/plugins/rendering/index.js.map +1 -0
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +4 -4
- package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -0
- package/lib/plugins/respArea/drag-in-the-blank/index.js +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -0
- package/lib/plugins/respArea/explicit-constructed-response/index.js +1 -1
- package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -0
- package/lib/plugins/respArea/icons/index.js +1 -1
- package/lib/plugins/respArea/icons/index.js.map +1 -0
- package/lib/plugins/respArea/index.js +1 -1
- package/lib/plugins/respArea/index.js.map +1 -0
- package/lib/plugins/respArea/inline-dropdown/index.js +1 -1
- package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -0
- package/lib/plugins/respArea/math-templated/index.js +1 -1
- package/lib/plugins/respArea/math-templated/index.js.map +1 -0
- package/lib/plugins/respArea/utils.js +1 -1
- package/lib/plugins/respArea/utils.js.map +1 -0
- package/lib/plugins/table/CustomTablePlugin.js +1 -1
- package/lib/plugins/table/CustomTablePlugin.js.map +1 -0
- package/lib/plugins/table/icons/index.js +1 -1
- package/lib/plugins/table/icons/index.js.map +1 -0
- package/lib/plugins/table/index.js +1 -1
- package/lib/plugins/table/index.js.map +1 -0
- package/lib/plugins/table/table-toolbar.js +1 -1
- package/lib/plugins/table/table-toolbar.js.map +1 -0
- package/lib/plugins/textAlign/icons/index.js +1 -1
- package/lib/plugins/textAlign/icons/index.js.map +1 -0
- package/lib/plugins/textAlign/index.js +1 -1
- package/lib/plugins/textAlign/index.js.map +1 -0
- package/lib/plugins/toolbar/default-toolbar.js +1 -1
- package/lib/plugins/toolbar/default-toolbar.js.map +1 -0
- package/lib/plugins/toolbar/done-button.js +1 -1
- package/lib/plugins/toolbar/done-button.js.map +1 -0
- package/lib/plugins/toolbar/editor-and-toolbar.js +4 -4
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -0
- package/lib/plugins/toolbar/index.js +1 -1
- package/lib/plugins/toolbar/index.js.map +1 -0
- package/lib/plugins/toolbar/toolbar-buttons.js +1 -1
- package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -0
- package/lib/plugins/toolbar/toolbar.js +1 -1
- package/lib/plugins/toolbar/toolbar.js.map +1 -0
- package/lib/plugins/utils.js +1 -1
- package/lib/plugins/utils.js.map +1 -0
- package/lib/serialization.js +1 -1
- package/lib/serialization.js.map +1 -0
- package/lib/shared/alert-dialog.js +75 -0
- package/lib/shared/index.js +136 -0
- package/lib/theme.js +1 -1
- package/lib/theme.js.map +1 -0
- package/package.json +7 -6
- package/src/editor.jsx +3 -3
- package/src/plugins/media/media-dialog.js +1 -1
- package/src/plugins/respArea/drag-in-the-blank/choice.jsx +1 -1
- package/src/plugins/toolbar/default-toolbar.jsx +6 -4
- package/src/plugins/toolbar/editor-and-toolbar.jsx +1 -1
- package/src/plugins/toolbar/toolbar.jsx +4 -4
- package/lib/__tests__/editor.test.js +0 -470
- package/lib/__tests__/serialization.test.js +0 -246
- package/lib/__tests__/utils.js +0 -106
- package/lib/plugins/image/__tests__/component.test.js +0 -51
- package/lib/plugins/image/__tests__/image-toolbar-logic.test.js +0 -56
- package/lib/plugins/image/__tests__/image-toolbar.test.js +0 -26
- package/lib/plugins/image/__tests__/index.test.js +0 -98
- package/lib/plugins/image/__tests__/insert-image-handler.test.js +0 -125
- package/lib/plugins/image/__tests__/mock-change.js +0 -25
- package/lib/plugins/list/__tests__/index.test.js +0 -79
- package/lib/plugins/math/__tests__/index.test.js +0 -300
- package/lib/plugins/media/__tests__/index.test.js +0 -71
- package/lib/plugins/table/__tests__/index.test.js +0 -442
- package/lib/plugins/table/__tests__/table-toolbar.test.js +0 -54
- package/lib/plugins/toolbar/__tests__/default-toolbar.test.js +0 -128
- package/lib/plugins/toolbar/__tests__/editor-and-toolbar.test.js +0 -51
- package/lib/plugins/toolbar/__tests__/toolbar-buttons.test.js +0 -54
- package/lib/plugins/toolbar/__tests__/toolbar.test.js +0 -120
|
@@ -451,4 +451,4 @@ var serialization = {
|
|
|
451
451
|
}
|
|
452
452
|
};
|
|
453
453
|
exports.serialization = serialization;
|
|
454
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wbHVnaW5zL21hdGgvaW5kZXguanN4Il0sIm5hbWVzIjpbImxvZyIsIlRFWFRfTk9ERSIsImdlbmVyYXRlQWRkaXRpb25hbEtleXMiLCJrZXlEYXRhIiwibWFwIiwia2V5IiwibmFtZSIsImxhdGV4Iiwid3JpdGUiLCJsYWJlbCIsIkN1c3RvbVRvb2xiYXJDb21wIiwiUmVhY3QiLCJtZW1vIiwicHJvcHMiLCJub2RlIiwidmFsdWUiLCJvbkZvY3VzIiwib25CbHVyIiwib25DbGljayIsInBsdWdpblByb3BzIiwibWF0aCIsImtleXBhZE1vZGUiLCJjdXN0b21LZXlzIiwiY29udHJvbGxlZEtleXBhZE1vZGUiLCJvbkRvbmUiLCJ1cGRhdGUiLCJkYXRhIiwidG9PYmplY3QiLCJjaGFuZ2UiLCJzZXROb2RlQnlLZXkiLCJuZXh0VGV4dCIsImRvY3VtZW50IiwiZ2V0TmV4dFRleHQiLCJtb3ZlRm9jdXNUbyIsIm1vdmVBbmNob3JUbyIsIm9uVG9vbGJhckRvbmUiLCJvbkNoYW5nZSIsIm9uRGF0YUNoYW5nZSIsImdldCIsInByZXYiLCJuZXh0Iiwibm9kZU5leHQiLCJrZXlwYWRNb2RlTmV4dCIsImNvbnRyb2xsZWRLZXlwYWRNb2RlTmV4dCIsImtleXBhZE1vZGVDaGFuZ2VkIiwiY29udHJvbGxlZEtleXBhZE1vZGVDaGFuZ2VkIiwiZXF1YWwiLCJlcXVhbHMiLCJwcm9wVHlwZXMiLCJTbGF0ZVByb3BUeXBlcyIsImlzUmVxdWlyZWQiLCJQcm9wVHlwZXMiLCJmdW5jIiwiTWF0aFBsdWdpbiIsIm9wdHMiLCJtYXRoTWxPcHRpb25zIiwibW1sT3V0cHV0IiwibW1sRWRpdGluZyIsInRvb2xiYXIiLCJhcmlhTGFiZWwiLCJpY29uIiwiaW5saW5lTWF0aCIsImluc2VydElubGluZSIsInN1cHBvcnRzIiwib2JqZWN0IiwidHlwZSIsInNjaGVtYSIsIm1hdGNoIiwicGx1Z2luU3R5bGVzIiwicGFyZW50Tm9kZSIsInAiLCJwb3NpdGlvbiIsInRvcCIsInJlbmRlck5vZGUiLCJodG1sIiwiYXR0cmlidXRlcyIsIl9faHRtbCIsIlJPVU5EX0JSQUNLRVRTIiwiU1FVQVJFX0JSQUNLRVRTIiwiRE9MTEFSIiwiRE9VQkxFX0RPTExBUiIsIklubGluZSIsImNyZWF0ZSIsImlzVm9pZCIsImh0bWxEZWNvZGUiLCJpbnB1dCIsImRvYyIsIkRPTVBhcnNlciIsInBhcnNlRnJvbVN0cmluZyIsImRvY3VtZW50RWxlbWVudCIsInRleHRDb250ZW50IiwiZ2V0VGFnTmFtZSIsImVsIiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwiYXJyb3dIYW5kbGluZ0Nhc2UiLCJyZXBsYWNlIiwicmVwbGFjZUxlZnRSaWdodCIsImxhdGV4SW5wdXQiLCJjb252ZXJ0TGF0ZXhUb01hdGhNbCIsImRlY29kZWQiLCJ3cmFwcGVyIiwicmVtb3ZlRW1wdHlNb3MiLCJtbWxGcm9tTGF0ZXgiLCJyZWdleCIsImhhbmRsZWQiLCJsYXRleFRvQ29udmVydCIsIm1hdGhNbEZyb21MYXRleCIsInNraXBXYWl0Rm9yTWF0aFJlbmRlcmluZ0xpYiIsImNvbnZlcnNpb25EaWROb3RXb3JrIiwibGF0ZXhGcm9tTWF0aE1sIiwic3RyaXBwZWRMIiwic3RyaXBwZWROZXdMIiwiY29ycmVjdGVkTGF0ZXgiLCJjb25zb2xlIiwiaW5pdGlhbExhdGV4IiwibmV3TGF0ZXgiLCJtYXRoTUwiLCJjb252ZXJ0TWF0aE1sVG9MYXRleCIsIm1hdGhNbCIsImh0bWxXaXRoUmVtb3ZlZFNwYWNlcyIsInJlcGxhY2VBbGwiLCJodG1sVG9Vc2UiLCJzZXJpYWxpemF0aW9uIiwiZGVzZXJpYWxpemUiLCJoYXNNYXRoQ2hpbGQiLCJCTE9DS19UQUdTIiwiY2hpbGROb2RlcyIsImxlbmd0aCIsImZpcnN0Q2hpbGQiLCJkYXRhc2V0IiwiaW5uZXJIVE1MIiwib3V0ZXJIVE1MIiwidW53cmFwcGVkIiwid3JhcFR5cGUiLCJub2RlcyIsIm5vZGVUeXBlIiwiaGFzTGF0ZXgiLCJoYXNBdHRyaWJ1dGUiLCJzZXJpYWxp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QixVQUFBLHVCQUF1QixFQUFFO0FBQUV6QixZQUFBQSxNQUFNLEVBQUUrQjtBQUFWO0FBQWxELFVBQVA7QUFDRDs7QUFFRCwwQkFDRTtBQUFNLHNCQUFXLEVBQWpCO0FBQW9CLG9CQUFVUDtBQUE5QixTQUNHLDZCQUFTQSxPQUFULEVBQWtCQyxPQUFsQixDQURILENBREY7QUFLRDtBQUVEO0FBQ0o7QUFDQTs7O0FBQ0ksUUFBSXJDLE1BQU0sQ0FBQ0MsSUFBUCxLQUFnQixRQUFwQixFQUE4QjtBQUM1QixVQUFNUyxJQUFJLEdBQUdWLE1BQU0sQ0FBQ3RDLElBQVAsQ0FBWVksR0FBWixDQUFnQixNQUFoQixDQUFiO0FBRUEsMEJBQU87QUFBTSxxQkFBVSxRQUFoQjtBQUF5QixRQUFBLHVCQUF1QixFQUFFO0FBQUVzQyxVQUFBQSxNQUFNLEVBQUVGO0FBQVY7QUFBbEQsUUFBUDtBQUNEO0FBQ0Y7QUE3RzBCLENBQXRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEZ1bmN0aW9ucyBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRnVuY3Rpb25zJztcbmltcG9ydCB7IElubGluZSB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IE1hdGhQcmV2aWV3LCBNYXRoVG9vbGJhciB9IGZyb20gJ0BwaWUtbGliL21hdGgtdG9vbGJhcic7XG5pbXBvcnQgeyB3cmFwTWF0aCwgdW5XcmFwTWF0aCwgbW1sVG9MYXRleCwgcmVuZGVyTWF0aCB9IGZyb20gJ0BwaWUtbGliL21hdGgtcmVuZGVyaW5nJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFNsYXRlUHJvcFR5cGVzIGZyb20gJ3NsYXRlLXByb3AtdHlwZXMnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcblxuaW1wb3J0IHsgQkxPQ0tfVEFHUyB9IGZyb20gJy4uLy4uL2Jsb2NrLXRhZ3MnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuXG5jb25zdCBsb2cgPSBkZWJ1ZygnQHBpZS1saWI6ZWRpdGFibGUtaHRtbDpwbHVnaW5zOm1hdGgnKTtcblxuY29uc3QgVEVYVF9OT0RFID0gMztcblxuZnVuY3Rpb24gZ2VuZXJhdGVBZGRpdGlvbmFsS2V5cyhrZXlEYXRhID0gW10pIHtcbiAgcmV0dXJuIGtleURhdGEubWFwKChrZXkpID0+ICh7XG4gICAgbmFtZToga2V5LFxuICAgIGxhdGV4OiBrZXksXG4gICAgd3JpdGU6IGtleSxcbiAgICBsYWJlbDoga2V5LFxuICB9KSk7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9kaXNwbGF5LW5hbWVcbmV4cG9ydCBjb25zdCBDdXN0b21Ub29sYmFyQ29tcCA9IFJlYWN0Lm1lbW8oXG4gIChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgbm9kZSwgdmFsdWUsIG9uRm9jdXMsIG9uQmx1ciwgb25DbGljayB9ID0gcHJvcHM7XG4gICAgY29uc3QgeyBwbHVnaW5Qcm9wcyB9ID0gcHJvcHMgfHwge307XG4gICAgY29uc3QgeyBtYXRoIH0gPSBwbHVnaW5Qcm9wcyB8fCB7fTtcbiAgICBjb25zdCB7IGtleXBhZE1vZGUsIGN1c3RvbUtleXMsIGNvbnRyb2xsZWRLZXlwYWRNb2RlID0gdHJ1ZSB9ID0gbWF0aCB8fCB7fTtcblxuICAgIGNvbnN0IG9uRG9uZSA9IChsYXRleCkgPT4ge1xuICAgICAgY29uc3QgdXBkYXRlID0ge1xuICAgICAgICAuLi5ub2RlLmRhdGEudG9PYmplY3QoKSxcbiAgICAgICAgbGF0ZXgsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjaGFuZ2UgPSB2YWx1ZS5jaGFuZ2UoKS5zZXROb2RlQnlLZXkobm9kZS5rZXksIHsgZGF0YTogdXBkYXRlIH0pO1xuXG4gICAgICBjb25zdCBuZXh0VGV4dCA9IHZhbHVlLmRvY3VtZW50LmdldE5leHRUZXh0KG5vZGUua2V5KTtcblxuICAgICAgY2hhbmdlLm1vdmVGb2N1c1RvKG5leHRUZXh0LmtleSwgMCkubW92ZUFuY2hvclRvKG5leHRUZXh0LmtleSwgMCk7XG5cbiAgICAgIHByb3BzLm9uVG9vbGJhckRvbmUoY2hhbmdlLCBmYWxzZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uQ2hhbmdlID0gKGxhdGV4KSA9PiB7XG4gICAgICBjb25zdCB1cGRhdGUgPSB7XG4gICAgICAgIC4uLm5vZGUuZGF0YS50b09iamVjdCgpLFxuICAgICAgICBsYXRleCxcbiAgICAgIH07XG4gICAgICBjb25zdCBjaGFuZ2UgPSB2YWx1ZS5jaGFuZ2UoKS5zZXROb2RlQnlLZXkobm9kZS5rZXksIHsgZGF0YTogdXBkYXRlIH0pO1xuICAgICAgbG9nKCdjYWxsIG9uVG9vbGJhckNoYW5nZTonLCBjaGFuZ2UpO1xuICAgICAgcHJvcHMub25EYXRhQ2hhbmdlKG5vZGUua2V5LCB1cGRhdGUpO1xuICAgIH07XG5cbiAgICBjb25zdCBsYXRleCA9IG5vZGUuZGF0YS5nZXQoJ2xhdGV4Jyk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPE1hdGhUb29sYmFyXG4gICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICBhZGRpdGlvbmFsS2V5cz17Z2VuZXJhdGVBZGRpdGlvbmFsS2V5cyhjdXN0b21LZXlzKX1cbiAgICAgICAgbGF0ZXg9e2xhdGV4fVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIG9uRG9uZT17b25Eb25lfVxuICAgICAgICBvbkJsdXI9e29uQmx1cn1cbiAgICAgICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAga2V5cGFkTW9kZT17a2V5cGFkTW9kZX1cbiAgICAgICAgY29udHJvbGxlZEtleXBhZE1vZGU9e2NvbnRyb2xsZWRLZXlwYWRNb2RlfVxuICAgICAgLz5cbiAgICApO1xuICB9LFxuICAocHJldiwgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHsgbm9kZSwgcGx1Z2luUHJvcHM6IHsgbWF0aDogeyBrZXlwYWRNb2RlLCBjb250cm9sbGVkS2V5cGFkTW9kZSB9ID0ge30gfSA9IHt9IH0gPSBwcmV2O1xuICAgIGNvbnN0IHtcbiAgICAgIG5vZGU6IG5vZGVOZXh0LFxuICAgICAgcGx1Z2luUHJvcHM6IHsgbWF0aDogeyBrZXlwYWRNb2RlOiBrZXlwYWRNb2RlTmV4dCwgY29udHJvbGxlZEtleXBhZE1vZGU6IGNvbnRyb2xsZWRLZXlwYWRNb2RlTmV4dCB9ID0ge30gfSA9IHt9LFxuICAgIH0gPSBuZXh0O1xuICAgIGNvbnN0IGtleXBhZE1vZGVDaGFuZ2VkID0ga2V5cGFkTW9kZSAhPT0ga2V5cGFkTW9kZU5leHQ7XG4gICAgY29uc3QgY29udHJvbGxlZEtleXBhZE1vZGVDaGFuZ2VkID0gY29udHJvbGxlZEtleXBhZE1vZGUgIT09IGNvbnRyb2xsZWRLZXlwYWRNb2RlTmV4dDtcblxuICAgIGNvbnN0IGVxdWFsID0gbm9kZS5lcXVhbHMobm9kZU5leHQpO1xuICAgIHJldHVybiBlcXVhbCAmJiAha2V5cGFkTW9kZUNoYW5nZWQgJiYgIWNvbnRyb2xsZWRLZXlwYWRNb2RlQ2hhbmdlZDtcbiAgfSxcbik7XG5cbkN1c3RvbVRvb2xiYXJDb21wLnByb3BUeXBlcyA9IHtcbiAgbm9kZTogU2xhdGVQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICB2YWx1ZTogU2xhdGVQcm9wVHlwZXMudmFsdWUsXG4gIG9uVG9vbGJhckRvbmU6IFByb3BUeXBlcy5mdW5jLFxuICBvbkRhdGFDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBvbkZvY3VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNYXRoUGx1Z2luKG9wdHMpIHtcbiAgTWF0aFBsdWdpbi5tYXRoTWxPcHRpb25zID0ge1xuICAgIG1tbE91dHB1dDogb3B0cy5tbWxPdXRwdXQsXG4gICAgbW1sRWRpdGluZzogb3B0cy5tbWxFZGl0aW5nLFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ21hdGgnLFxuICAgIHRvb2xiYXI6IHtcbiAgICAgIGFyaWFMYWJlbDogJ01hdGggVG9vbGJhcicsXG4gICAgICBpY29uOiA8RnVuY3Rpb25zIC8+LFxuICAgICAgb25DbGljazogKHZhbHVlLCBvbkNoYW5nZSkgPT4ge1xuICAgICAgICBsb2coJ1tpbnNlcnRNYXRoXScpO1xuICAgICAgICBjb25zdCBtYXRoID0gaW5saW5lTWF0aCgpO1xuICAgICAgICBjb25zdCBjaGFuZ2UgPSB2YWx1ZS5jaGFuZ2UoKS5pbnNlcnRJbmxpbmUobWF0aCk7XG4gICAgICAgIG9uQ2hhbmdlKGNoYW5nZSk7XG4gICAgICB9LFxuICAgICAgc3VwcG9ydHM6IChub2RlKSA9PiBub2RlICYmIG5vZGUub2JqZWN0ID09PSAnaW5saW5lJyAmJiBub2RlLnR5cGUgPT09ICdtYXRoJyxcbiAgICAgIC8qKlxuICAgICAgICogUmV0dXJuIGEgcmVhY3QgY29tcG9uZW50IGZ1bmN0aW9uXG4gICAgICAgKiBAcGFyYW0gbm9kZSB7U2xhdGUuTm9kZX1cbiAgICAgICAqIEBwYXJhbSB2YWx1ZSB7U2xhdGUuVmFsdWV9XG4gICAgICAgKiBAcGFyYW0gb25Eb25lIHsoY2hhbmdlPzogU2xhdGUuQ2hhbmdlLCBmaW5pc2hFZGl0aW5nIDpib29sZWEpID0+IHZvaWR9IC0gYSBmdW5jdGlvbiB0byBjYWxsIG9uY2UgdGhlIHRvb2xiYXJcbiAgICAgICAqICAgaGFzIG1hZGUgYW55IGNoYW5nZXMsIGNhbGwgd2l0aCB0aGUgbm9kZS5rZXkgYW5kIGEgZGF0YSBvYmplY3QuXG4gICAgICAgKi9cbiAgICAgIEN1c3RvbVRvb2xiYXJDb21wLFxuICAgIH0sXG4gICAgc2NoZW1hOiB7XG4gICAgICBkb2N1bWVudDogeyBtYXRjaDogW3sgdHlwZTogJ21hdGgnIH1dIH0sXG4gICAgfSxcblxuICAgIHBsdWdpblN0eWxlczogKG5vZGUsIHBhcmVudE5vZGUsIHApID0+IHtcbiAgICAgIGlmIChwKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgdG9wOiAnaW5pdGlhbCcsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSxcblxuICAgIHJlbmRlck5vZGU6IChwcm9wcykgPT4ge1xuICAgICAgaWYgKHByb3BzLm5vZGUudHlwZSA9PT0gJ21hdGgnKSB7XG4gICAgICAgIGxvZygnW3JlbmRlck5vZGVdOiBkYXRhOicsIHByb3BzLm5vZGUuZGF0YSk7XG4gICAgICAgIHJldHVybiA8TWF0aFByZXZpZXcgey4uLnByb3BzfSAvPjtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBIZXJlIGZvciByZW5kZXJpbmcgbWF0aG1sIGNvbnRlbnRcbiAgICAgICAqL1xuICAgICAgaWYgKHByb3BzLm5vZGUudHlwZSA9PT0gJ21hdGhtbCcpIHtcbiAgICAgICAgY29uc3QgaHRtbCA9IHByb3BzLm5vZGUuZGF0YS5nZXQoJ2h0bWwnKTtcblxuICAgICAgICByZXR1cm4gPHNwYW4gey4uLnByb3BzLmF0dHJpYnV0ZXN9IGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogaHRtbCB9fSAvPjtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuXG5NYXRoUGx1Z2luLlJPVU5EX0JSQUNLRVRTID0gJ3JvdW5kX2JyYWNrZXRzJztcbk1hdGhQbHVnaW4uU1FVQVJFX0JSQUNLRVRTID0gJ3NxdWFyZV9icmFja2V0cyc7XG5NYXRoUGx1Z2luLkRPTExBUiA9ICdkb2xsYXInO1xuTWF0aFBsdWdpbi5ET1VCTEVfRE9MTEFSID0gJ2RvdWJsZV9kb2xsYXInO1xuTWF0aFBsdWdpbi5tYXRoTWxPcHRpb25zID0ge307XG5cbk1hdGhQbHVnaW4ucHJvcFR5cGVzID0ge1xuICBhdHRyaWJ1dGVzOiBQcm9wVHlwZXMub2JqZWN0LFxuICBub2RlOiBTbGF0ZVByb3BUeXBlcy5ub2RlLFxufTtcblxuZXhwb3J0IGNvbnN0IGlubGluZU1hdGggPSAoKSA9PlxuICBJbmxpbmUuY3JlYXRlKHtcbiAgICBvYmplY3Q6ICdpbmxpbmUnLFxuICAgIHR5cGU6ICdtYXRoJyxcbiAgICBpc1ZvaWQ6IHRydWUsXG4gICAgZGF0YToge1xuICAgICAgbGF0ZXg6ICcnLFxuICAgIH0sXG4gIH0pO1xuXG5jb25zdCBodG1sRGVjb2RlID0gKGlucHV0KSA9PiB7XG4gIGNvbnN0IGRvYyA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoaW5wdXQsICd0ZXh0L2h0bWwnKTtcblxuICByZXR1cm4gZG9jLmRvY3VtZW50RWxlbWVudC50ZXh0Q29udGVudDtcbn07XG5cbmNvbnN0IGdldFRhZ05hbWUgPSAoZWwpID0+IHtcbiAgcmV0dXJuICgoZWwgJiYgZWwudGFnTmFtZSkgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG59O1xuXG4vKipcbiAqIE1ha2VzIHN1cmUgdGhhdCBzdHJpbmdzIHRoYXQgY29udGFpbiBzdHVmZiBsaWtlOlxuICogeDx5IGFyZSBub3QgdHJhbnNmb3JtZWQgaW50byB4IGJ5IHRoZSBET01QYXJzZXIgYmVjYXVzZSBpdCB0aGlua3NcbiAqIHRoYXQgPHkgaXMgdGhlIHN0YXJ0IG9mIGEgZG9tIGVsZW1lbnQgdGFnXG4gKiBAcGFyYW0gaW5wdXRcbiAqIEByZXR1cm5zIHsqfVxuICovXG5jb25zdCBhcnJvd0hhbmRsaW5nQ2FzZSA9IChpbnB1dCkgPT4ge1xuICAvKlxuICBJZiB3ZSBoYXZlIGEgPCBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkgYSBsZXR0ZXJcbiAgd2UgbWFrZSBzdXJlIHRvIHJlcGxhY2UgaXQgd2l0aCBhICZsdDsgc2lnbiBpbnN0ZWFkXG4gICAqL1xuICByZXR1cm4gaW5wdXQucmVwbGFjZSgvPChbYS16QS1aXSopL2csICcmbHQ7JDEnKTtcbn07XG5cbmZ1bmN0aW9uIHJlcGxhY2VMZWZ0UmlnaHQobGF0ZXhJbnB1dCkge1xuICAvLyBmb3Igc29tZSByZWFzb24sIG1tbFRvTGF0ZXggcGFyc2VzICgpIGluY29ycmVjdGx5IC0gb3IgYXQgbGVhc3QgaW4gYSB3YXkgdGhhdCBvdXIgaW50ZXJwcmV0ZXIgY2FuIG5vdCB1c2UgdGhlbVxuICAvLyBSZXBsYWNlICdcXFxcbGVmdC4nIGFuZCAnXFxcXHJpZ2h0Licgd2l0aCBhbiBlbXB0eSBzdHJpbmdcbiAgcmV0dXJuIGxhdGV4SW5wdXQucmVwbGFjZSgvXFxcXGxlZnRcXC5cXHMqfFxcXFxyaWdodFxcLlxccyovZywgJycpO1xufVxuXG5jb25zdCBjb252ZXJ0TGF0ZXhUb01hdGhNbCA9ICh7IGxhdGV4LCBkZWNvZGVkLCB3cmFwcGVyIH0pID0+IHtcbiAgY29uc3QgcmVtb3ZlRW1wdHlNb3MgPSAobW1sRnJvbUxhdGV4KSA9PiB7XG4gICAgLy8gUmVndWxhciBleHByZXNzaW9uIHRvIG1hdGNoIDxtbz4mI3gyMDYxOzwvbW8+IGFuZCA8bW8gLi4uPiYjeDIwNjE7PC9tbz4sIHdoaWNoIGdldCBhZGRlZCB3aGVuIHVzaW5nIGxvZyB3aXRoIGJhc2VcbiAgICAvLyBub3Qgc3VyZSB3aHkgdGhleSBnZXQgYWRkZWQsIGJ1dCB0aGV5IGFkZCBhbiBleHRyYSBzcGFjZSB3aGljaCBpcyBub3QgbmVlZGVkXG4gICAgY29uc3QgcmVnZXggPSAvPG1vKD86IFtePl0qKT8+JiN4MjA2MTs8XFwvbW8+L2c7XG5cbiAgICAvLyBSZXBsYWNlIGFsbCBvY2N1cnJlbmNlcyBvZiB0aGUgbWF0Y2hlZCBwYXR0ZXJuc1xuICAgIHJldHVybiBtbWxGcm9tTGF0ZXgucmVwbGFjZShyZWdleCwgJycpO1xuICB9O1xuICBjb25zdCBoYW5kbGVkID0gYXJyb3dIYW5kbGluZ0Nhc2UoZGVjb2RlZCk7XG5cbiAgY29uc3QgbGF0ZXhUb0NvbnZlcnQgPSBgPHNwYW4gZGF0YS1sYXRleD1cIlwiIGRhdGEtcmF3PVwiJHtoYW5kbGVkfVwiPiR7d3JhcE1hdGgoaGFuZGxlZCwgd3JhcHBlcil9PC9zcGFuPmA7XG5cbiAgLy8gdXNlIG1hdGggcmVuZGVyaW5nIChNYXRoSmF4KSB0byBjb252ZXJ0IGxhdGV4IHRvIG1hdGhNbFxuICBsZXQgbWF0aE1sRnJvbUxhdGV4ID0gcmVuZGVyTWF0aChsYXRleFRvQ29udmVydCwge1xuICAgIHNraXBXYWl0Rm9yTWF0aFJlbmRlcmluZ0xpYjogdHJ1ZSxcbiAgfSk7XG5cbiAgLy8gaWYgcmVuZGVyTWF0aCByZXR1cm5lZCB0aGUgZXhhY3Qgc2FtZSBzdHJpbmcgdGhhdCB3ZSBzZW50LCBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIGNvbnZlcnNpb24gY291bGQgbm90IGJlIGRvbmVcbiAgY29uc3QgY29udmVyc2lvbkRpZE5vdFdvcmsgPSBpc0VxdWFsKGxhdGV4VG9Db252ZXJ0LCBtYXRoTWxGcm9tTGF0ZXgpO1xuXG4gIG1hdGhNbEZyb21MYXRleCA9IHJlbW92ZUVtcHR5TW9zKG1hdGhNbEZyb21MYXRleCk7XG5cbiAgLy8gd2UgY29udmVydCByZXN1bHRlZCBtYXRobWwgdG8gbGF0ZXggdG8gY2hlY2sgaWYgdGhlIHJlc3VsdGVkIG1hdGhNbCBjYW4gYmUgY29udmVydGVkIGJhY2sgdG8gbGF0ZXggaWYgdXNlciB3YW50cyB0byBlZGl0IGl0IGxhdGVyXG4gIGNvbnN0IGxhdGV4RnJvbU1hdGhNbCA9IG1hdGhNbEZyb21MYXRleCA/IG1tbFRvTGF0ZXgobWF0aE1sRnJvbUxhdGV4KSA6ICcnO1xuXG4gIC8vIHdlIG5lZWQgdG8gcmVtb3ZlIGFsbCB0aGUgc3BhY2VzIGZyb20gdGhlIGxhdGV4IHRvIGJlIGFibGUgdG8gY29tcGFyZSBpdFxuICBjb25zdCBzdHJpcHBlZEwgPSBsYXRleC5yZXBsYWNlKC9cXHMvZywgJycpO1xuICBjb25zdCBzdHJpcHBlZE5ld0wgPSBsYXRleEZyb21NYXRoTWwucmVwbGFjZSgvXFxzL2csICcnKTtcblxuICAvLyB3ZSBjaGVjayBpZiB0aGUgbGF0ZXgga2VlcHMgaGlzIGZvcm0gYWZ0ZXIgYmVpbmcgY29udmVydGVkIHRvIG1hdGhtbCBhbmQgYmFjayB0byBsYXRleFxuICAvLyBpZiBpdCBkb2VzLCB3ZSBjYW4gc2FmZWx5IGNvbnZlcnQgaXQgdG8gbWF0aG1sXG4gIGlmICghaXNFcXVhbChzdHJpcHBlZEwsIHN0cmlwcGVkTmV3TCkpIHtcbiAgICBjb25zdCBjb3JyZWN0ZWRMYXRleCA9IHJlcGxhY2VMZWZ0UmlnaHQobGF0ZXhGcm9tTWF0aE1sKTtcblxuICAgIC8vIEFzIEdlb3JnZSByZXF1ZXN0ZWQgaW4gUEQtMzE2NywgSSB3aWxsIHNldCB0aGUgbmV3IG1hdGhNTCBhbnl3YXksIGFuZCBhbHNvIGxvZyBkaWZmZXJlbmNlc1xuICAgIC8vIGlmIGl0IGRvZXNuJ3QsIHdlIGtlZXAgdGhlIGxhdGV4IHZlcnNpb25cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUubG9nKCdUaGlzIGxhdGV4IGNhbiBub3QgYmUgc2FmZWx5IGNvbnZlcnRlZCB0byBtYXRobWwgc28gd2Ugd2lsbCBrZWVwIHRoZSBsYXRleCB2ZXJzaW9uISEhJywge1xuICAgICAgaW5pdGlhbExhdGV4OiBsYXRleCxcbiAgICAgIG5ld0xhdGV4OiBsYXRleEZyb21NYXRoTWwsXG4gICAgICBjb3JyZWN0ZWRMYXRleCxcbiAgICAgIG1hdGhNTDogbWF0aE1sRnJvbUxhdGV4LFxuICAgICAgY29udmVyc2lvbkRpZE5vdFdvcmssXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4geyBtYXRoTWxGcm9tTGF0ZXgsIGNvbnZlcnNpb25EaWROb3RXb3JrIH07XG59O1xuXG5jb25zdCBjb252ZXJ0TWF0aE1sVG9MYXRleCA9IChtYXRoTWwpID0+IHtcbiAgY29uc3QgaHRtbFdpdGhSZW1vdmVkU3BhY2VzID0gbWF0aE1sLnJlcGxhY2VBbGwoJyZuYnNwOycsICcgJyk7XG4gIGNvbnN0IGh0bWxUb1VzZSA9IG1tbFRvTGF0ZXgoaHRtbFdpdGhSZW1vdmVkU3BhY2VzKTtcbiAgY29uc3QgbGF0ZXggPSBodG1sRGVjb2RlKGh0bWxUb1VzZSk7XG5cbiAgLy8gdG9kbyBmaXggdGhpcyBpbiBtYXRobWwtdG8tbGF0ZXhcbiAgcmV0dXJuIHJlcGxhY2VMZWZ0UmlnaHQobGF0ZXgpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNlcmlhbGl6YXRpb24gPSB7XG4gIGRlc2VyaWFsaXplKGVsKSB7XG4gICAgY29uc3QgdGFnTmFtZSA9IGdldFRhZ05hbWUoZWwpO1xuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgdXNlZCBmb3Igd2hlbiB0aGVyZSdzIGEgd3JhcHBlciBvdmVyIHRoZSBtYXRobWwgZWxlbWVudC5cbiAgICAgKiBCZWNhdXNlIG9mIHRoaXMgc2xhdGUgcnVsZTogXCJPbmx5IGFsbG93IGJsb2NrIG5vZGVzIG9yIGlubGluZSBhbmQgdGV4dCBub2RlcyBpbiBibG9ja3MuXCJcbiAgICAgKiBUaGUgZWxlbWVudCB0aGF0IGNvbnRhaW5zIG9ubHkgdGhlIG1hdGhtbCBpcyByZW1vdmVkIChhbG9uZyB3aXRoIHRoZSBtYXRoKSBiZWNhdXNlIGl0IGhhc1xuICAgICAqIGFuIGlubGluZSBjaGlsZCBhbmQgdGhlIGJsb2NrIGlzIG9mIHR5cGUgYmxvY2tcbiAgICAgKiBUaGlzIGlzIGZvciBsZWdhY3kgY29udGVudCBvbmx5IHNpbmNlIG91ciBtYXRoIHJlbmRlcmluZyBpcyB2YWxpZCBmb3IgdGhlIGNvcmUgc2xhdGUgcnVsZXNcbiAgICAgKi9cbiAgICBjb25zdCBoYXNNYXRoQ2hpbGQgPSBCTE9DS19UQUdTW3RhZ05hbWVdICYmIGVsLmNoaWxkTm9kZXMubGVuZ3RoID09PSAxICYmIGdldFRhZ05hbWUoZWwuZmlyc3RDaGlsZCkgPT09ICdtYXRoJztcbiAgICBsb2coJ1tkZXNlcmlhbGl6ZV0gbmFtZTogJywgdGFnTmFtZSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGhlcmUgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byByZW5kZXIgbWF0aG1sIGNvbnRlbnRcbiAgICAgKi9cbiAgICBpZiAodGFnTmFtZSA9PT0gJ21hdGgnIHx8IChlbC5kYXRhc2V0ICYmIGVsLmRhdGFzZXQudHlwZSA9PT0gJ21hdGhtbCcpIHx8IGhhc01hdGhDaGlsZCkge1xuICAgICAgY29uc3QgbWF0aE1sID0gaGFzTWF0aENoaWxkID8gZWwuaW5uZXJIVE1MIDogZWwub3V0ZXJIVE1MO1xuXG4gICAgICBpZiAoTWF0aFBsdWdpbi5tYXRoTWxPcHRpb25zLm1tbEVkaXRpbmcpIHtcbiAgICAgICAgY29uc3QgeyB1bndyYXBwZWQsIHdyYXBUeXBlIH0gPSB1bldyYXBNYXRoKGNvbnZlcnRNYXRoTWxUb0xhdGV4KG1hdGhNbCkpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgb2JqZWN0OiAnaW5saW5lJyxcbiAgICAgICAgICB0eXBlOiAnbWF0aCcsXG4gICAgICAgICAgaXNWb2lkOiB0cnVlLFxuICAgICAgICAgIG5vZGVzOiBbXSxcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBsYXRleDogdW53cmFwcGVkLFxuICAgICAgICAgICAgd3JhcHBlcjogd3JhcFR5cGUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2JqZWN0OiAnaW5saW5lJyxcbiAgICAgICAgaXNWb2lkOiB0cnVlLFxuICAgICAgICB0eXBlOiAnbWF0aG1sJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGh0bWw6IG1hdGhNbCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGVsLm5vZGVUeXBlID09PSBURVhUX05PREUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGFnTmFtZSAhPT0gJ3NwYW4nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaGFzTGF0ZXggPSBlbC5oYXNBdHRyaWJ1dGUoJ2RhdGEtbGF0ZXgnKSB8fCBlbC5oYXNBdHRyaWJ1dGUoJ2xhdGV4Jyk7XG5cbiAgICBpZiAoaGFzTGF0ZXgpIHtcbiAgICAgIGNvbnN0IGxhdGV4ID0gaHRtbERlY29kZShlbC5pbm5lckhUTUwpO1xuICAgICAgY29uc3QgeyB1bndyYXBwZWQsIHdyYXBUeXBlIH0gPSB1bldyYXBNYXRoKGxhdGV4KTtcbiAgICAgIGxvZygnW2Rlc2VyaWFsaXplXTogbm9CcmFja2V0czogJywgdW53cmFwcGVkLCB3cmFwVHlwZSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvYmplY3Q6ICdpbmxpbmUnLFxuICAgICAgICB0eXBlOiAnbWF0aCcsXG4gICAgICAgIGlzVm9pZDogdHJ1ZSxcbiAgICAgICAgbm9kZXM6IFtdLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgbGF0ZXg6IHVud3JhcHBlZCxcbiAgICAgICAgICB3cmFwcGVyOiB3cmFwVHlwZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICB9LFxuICBzZXJpYWxpemUob2JqZWN0KSB7XG4gICAgaWYgKG9iamVjdC50eXBlID09PSAnbWF0aCcpIHtcbiAgICAgIGNvbnN0IGxhdGV4ID0gb2JqZWN0LmRhdGEuZ2V0KCdsYXRleCcpO1xuICAgICAgY29uc3Qgd3JhcHBlciA9IG9iamVjdC5kYXRhLmdldCgnd3JhcHBlcicpO1xuICAgICAgY29uc3QgZGVjb2RlZCA9IGh0bWxEZWNvZGUoYXJyb3dIYW5kbGluZ0Nhc2UobGF0ZXgpKTtcblxuICAgICAgbG9nKCdbc2VyaWFsaXplXSBsYXRleDogJywgbGF0ZXgpO1xuXG4gICAgICBpZiAoTWF0aFBsdWdpbi5tYXRoTWxPcHRpb25zLm1tbE91dHB1dCkge1xuICAgICAgICBjb25zdCB7IG1hdGhNbEZyb21MYXRleCwgY29udmVyc2lvbkRpZE5vdFdvcmsgfSA9IGNvbnZlcnRMYXRleFRvTWF0aE1sKHsgbGF0ZXgsIGRlY29kZWQsIHdyYXBwZXIgfSk7XG5cbiAgICAgICAgaWYgKGNvbnZlcnNpb25EaWROb3RXb3JrKSB7XG4gICAgICAgICAgLy8gdGhpcyBtZWFucyB3ZSBjb3VsZCBub3QgY29udmVydCBsYXRleCB0byBtYXRoTWwsIHNvIGp1c3QgcmV0dXJuIHRoZSBsYXRleCB2ZXJzaW9uLFxuICAgICAgICAgIC8vIHNhbWUgYXMgd2Ugd291bGQgZG8gaWYgbW1sT3V0cHV0IHdvdWxkIG5vdCBiZSBlbmFibGVkXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxzcGFuIGRhdGEtbGF0ZXg9XCJcIiBkYXRhLXJhdz17ZGVjb2RlZH0+XG4gICAgICAgICAgICAgIHt3cmFwTWF0aChkZWNvZGVkLCB3cmFwcGVyKX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDxzcGFuIGRhdGEtdHlwZT1cIm1hdGhtbFwiIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogbWF0aE1sRnJvbUxhdGV4IH19IC8+O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8c3BhbiBkYXRhLWxhdGV4PVwiXCIgZGF0YS1yYXc9e2RlY29kZWR9PlxuICAgICAgICAgIHt3cmFwTWF0aChkZWNvZGVkLCB3cmFwcGVyKX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIZXJlIGZvciByZW5kZXJpbmcgbWF0aG1sIGNvbnRlbnRcbiAgICAgKi9cbiAgICBpZiAob2JqZWN0LnR5cGUgPT09ICdtYXRobWwnKSB7XG4gICAgICBjb25zdCBodG1sID0gb2JqZWN0LmRhdGEuZ2V0KCdodG1sJyk7XG5cbiAgICAgIHJldHVybiA8c3BhbiBkYXRhLXR5cGU9XCJtYXRobWxcIiBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IGh0bWwgfX0gLz47XG4gICAgfVxuICB9LFxufTtcbiJdfQ==
|
|
454
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/plugins/math/index.jsx"],"names":["log","TEXT_NODE","generateAdditionalKeys","keyData","map","key","name","latex","write","label","CustomToolbarComp","React","memo","props","node","value","onFocus","onBlur","onClick","pluginProps","math","keypadMode","customKeys","controlledKeypadMode","onDone","update","data","toObject","change","setNodeByKey","nextText","document","getNextText","moveFocusTo","moveAnchorTo","onToolbarDone","onChange","onDataChange","get","prev","next","nodeNext","keypadModeNext","controlledKeypadModeNext","keypadModeChanged","controlledKeypadModeChanged","equal","equals","propTypes","SlatePropTypes","isRequired","PropTypes","func","MathPlugin","opts","mathMlOptions","mmlOutput","mmlEditing","toolbar","ariaLabel","icon","inlineMath","insertInline","supports","object","type","schema","match","pluginStyles","parentNode","p","position","top","renderNode","html","attributes","__html","ROUND_BRACKETS","SQUARE_BRACKETS","DOLLAR","DOUBLE_DOLLAR","Inline","create","isVoid","htmlDecode","input","doc","DOMParser","parseFromString","documentElement","textContent","getTagName","el","tagName","toLowerCase","arrowHandlingCase","replace","replaceLeftRight","latexInput","convertLatexToMathMl","decoded","wrapper","removeEmptyMos","mmlFromLatex","regex","handled","latexToConvert","mathMlFromLatex","skipWaitForMathRenderingLib","conversionDidNotWork","latexFromMathMl","strippedL","strippedNewL","correctedLatex","console","initialLatex","newLatex","mathML","convertMathMlToLatex","mathMl","htmlWithRemovedSpaces","replaceAll","htmlToUse","serialization","deserialize","hasMathChild","BLOCK_TAGS","childNodes","length","firstChild","dataset","innerHTML","outerHTML","unwrapped","wrapType","nodes","nodeType","hasLatex","hasAttribute","serialize"],"mappings":"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","sourcesContent":["import Functions from '@material-ui/icons/Functions';\nimport { Inline } from 'slate';\nimport { MathPreview, MathToolbar } from '@pie-lib/math-toolbar';\nimport { wrapMath, unWrapMath, mmlToLatex, renderMath } from '@pie-lib/math-rendering';\nimport React from 'react';\nimport debug from 'debug';\nimport SlatePropTypes from 'slate-prop-types';\nimport PropTypes from 'prop-types';\n\nimport { BLOCK_TAGS } from '../../block-tags';\nimport isEqual from 'lodash/isEqual';\n\nconst log = debug('@pie-lib:editable-html:plugins:math');\n\nconst TEXT_NODE = 3;\n\nfunction generateAdditionalKeys(keyData = []) {\n return keyData.map((key) => ({\n name: key,\n latex: key,\n write: key,\n label: key,\n }));\n}\n\n// eslint-disable-next-line react/display-name\nexport const CustomToolbarComp = React.memo(\n (props) => {\n const { node, value, onFocus, onBlur, onClick } = props;\n const { pluginProps } = props || {};\n const { math } = pluginProps || {};\n const { keypadMode, customKeys, controlledKeypadMode = true } = math || {};\n\n const onDone = (latex) => {\n const update = {\n ...node.data.toObject(),\n latex,\n };\n\n const change = value.change().setNodeByKey(node.key, { data: update });\n\n const nextText = value.document.getNextText(node.key);\n\n change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);\n\n props.onToolbarDone(change, false);\n };\n\n const onChange = (latex) => {\n const update = {\n ...node.data.toObject(),\n latex,\n };\n const change = value.change().setNodeByKey(node.key, { data: update });\n log('call onToolbarChange:', change);\n props.onDataChange(node.key, update);\n };\n\n const latex = node.data.get('latex');\n\n return (\n <MathToolbar\n autoFocus\n additionalKeys={generateAdditionalKeys(customKeys)}\n latex={latex}\n onChange={onChange}\n onDone={onDone}\n onBlur={onBlur}\n onFocus={onFocus}\n onClick={onClick}\n keypadMode={keypadMode}\n controlledKeypadMode={controlledKeypadMode}\n />\n );\n },\n (prev, next) => {\n const { node, pluginProps: { math: { keypadMode, controlledKeypadMode } = {} } = {} } = prev;\n const {\n node: nodeNext,\n pluginProps: { math: { keypadMode: keypadModeNext, controlledKeypadMode: controlledKeypadModeNext } = {} } = {},\n } = next;\n const keypadModeChanged = keypadMode !== keypadModeNext;\n const controlledKeypadModeChanged = controlledKeypadMode !== controlledKeypadModeNext;\n\n const equal = node.equals(nodeNext);\n return equal && !keypadModeChanged && !controlledKeypadModeChanged;\n },\n);\n\nCustomToolbarComp.propTypes = {\n node: SlatePropTypes.node.isRequired,\n value: SlatePropTypes.value,\n onToolbarDone: PropTypes.func,\n onDataChange: PropTypes.func,\n onFocus: PropTypes.func,\n onClick: PropTypes.func,\n onBlur: PropTypes.func,\n};\n\nexport default function MathPlugin(opts) {\n MathPlugin.mathMlOptions = {\n mmlOutput: opts.mmlOutput,\n mmlEditing: opts.mmlEditing,\n };\n\n return {\n name: 'math',\n toolbar: {\n ariaLabel: 'Math Toolbar',\n icon: <Functions />,\n onClick: (value, onChange) => {\n log('[insertMath]');\n const math = inlineMath();\n const change = value.change().insertInline(math);\n onChange(change);\n },\n supports: (node) => node && node.object === 'inline' && node.type === 'math',\n /**\n * Return a react component function\n * @param node {Slate.Node}\n * @param value {Slate.Value}\n * @param onDone {(change?: Slate.Change, finishEditing :boolea) => void} - a function to call once the toolbar\n * has made any changes, call with the node.key and a data object.\n */\n CustomToolbarComp,\n },\n schema: {\n document: { match: [{ type: 'math' }] },\n },\n\n pluginStyles: (node, parentNode, p) => {\n if (p) {\n return {\n position: 'absolute',\n top: 'initial',\n };\n }\n },\n\n renderNode: (props) => {\n if (props.node.type === 'math') {\n log('[renderNode]: data:', props.node.data);\n return <MathPreview {...props} />;\n }\n\n /**\n * Here for rendering mathml content\n */\n if (props.node.type === 'mathml') {\n const html = props.node.data.get('html');\n\n return <span {...props.attributes} dangerouslySetInnerHTML={{ __html: html }} />;\n }\n },\n };\n}\n\nMathPlugin.ROUND_BRACKETS = 'round_brackets';\nMathPlugin.SQUARE_BRACKETS = 'square_brackets';\nMathPlugin.DOLLAR = 'dollar';\nMathPlugin.DOUBLE_DOLLAR = 'double_dollar';\nMathPlugin.mathMlOptions = {};\n\nMathPlugin.propTypes = {\n attributes: PropTypes.object,\n node: SlatePropTypes.node,\n};\n\nexport const inlineMath = () =>\n Inline.create({\n object: 'inline',\n type: 'math',\n isVoid: true,\n data: {\n latex: '',\n },\n });\n\nconst htmlDecode = (input) => {\n const doc = new DOMParser().parseFromString(input, 'text/html');\n\n return doc.documentElement.textContent;\n};\n\nconst getTagName = (el) => {\n return ((el && el.tagName) || '').toLowerCase();\n};\n\n/**\n * Makes sure that strings that contain stuff like:\n * x<y are not transformed into x by the DOMParser because it thinks\n * that <y is the start of a dom element tag\n * @param input\n * @returns {*}\n */\nconst arrowHandlingCase = (input) => {\n /*\n If we have a < character followed by a letter\n we make sure to replace it with a < sign instead\n */\n return input.replace(/<([a-zA-Z]*)/g, '<$1');\n};\n\nfunction replaceLeftRight(latexInput) {\n // for some reason, mmlToLatex parses () incorrectly - or at least in a way that our interpreter can not use them\n // Replace '\\\\left.' and '\\\\right.' with an empty string\n return latexInput.replace(/\\\\left\\.\\s*|\\\\right\\.\\s*/g, '');\n}\n\nconst convertLatexToMathMl = ({ latex, decoded, wrapper }) => {\n const removeEmptyMos = (mmlFromLatex) => {\n // Regular expression to match <mo>⁡</mo> and <mo ...>⁡</mo>, which get added when using log with base\n // not sure why they get added, but they add an extra space which is not needed\n const regex = /<mo(?: [^>]*)?>⁡<\\/mo>/g;\n\n // Replace all occurrences of the matched patterns\n return mmlFromLatex.replace(regex, '');\n };\n const handled = arrowHandlingCase(decoded);\n\n const latexToConvert = `<span data-latex=\"\" data-raw=\"${handled}\">${wrapMath(handled, wrapper)}</span>`;\n\n // use math rendering (MathJax) to convert latex to mathMl\n let mathMlFromLatex = renderMath(latexToConvert, {\n skipWaitForMathRenderingLib: true,\n });\n\n // if renderMath returned the exact same string that we sent, it just means that the conversion could not be done\n const conversionDidNotWork = isEqual(latexToConvert, mathMlFromLatex);\n\n mathMlFromLatex = removeEmptyMos(mathMlFromLatex);\n\n // we convert resulted mathml to latex to check if the resulted mathMl can be converted back to latex if user wants to edit it later\n const latexFromMathMl = mathMlFromLatex ? mmlToLatex(mathMlFromLatex) : '';\n\n // we need to remove all the spaces from the latex to be able to compare it\n const strippedL = latex.replace(/\\s/g, '');\n const strippedNewL = latexFromMathMl.replace(/\\s/g, '');\n\n // we check if the latex keeps his form after being converted to mathml and back to latex\n // if it does, we can safely convert it to mathml\n if (!isEqual(strippedL, strippedNewL)) {\n const correctedLatex = replaceLeftRight(latexFromMathMl);\n\n // As George requested in PD-3167, I will set the new mathML anyway, and also log differences\n // if it doesn't, we keep the latex version\n // eslint-disable-next-line no-console\n console.log('This latex can not be safely converted to mathml so we will keep the latex version!!!', {\n initialLatex: latex,\n newLatex: latexFromMathMl,\n correctedLatex,\n mathML: mathMlFromLatex,\n conversionDidNotWork,\n });\n }\n\n return { mathMlFromLatex, conversionDidNotWork };\n};\n\nconst convertMathMlToLatex = (mathMl) => {\n const htmlWithRemovedSpaces = mathMl.replaceAll(' ', ' ');\n const htmlToUse = mmlToLatex(htmlWithRemovedSpaces);\n const latex = htmlDecode(htmlToUse);\n\n // todo fix this in mathml-to-latex\n return replaceLeftRight(latex);\n};\n\nexport const serialization = {\n deserialize(el) {\n const tagName = getTagName(el);\n /**\n * This is used for when there's a wrapper over the mathml element.\n * Because of this slate rule: \"Only allow block nodes or inline and text nodes in blocks.\"\n * The element that contains only the mathml is removed (along with the math) because it has\n * an inline child and the block is of type block\n * This is for legacy content only since our math rendering is valid for the core slate rules\n */\n const hasMathChild = BLOCK_TAGS[tagName] && el.childNodes.length === 1 && getTagName(el.firstChild) === 'math';\n log('[deserialize] name: ', tagName);\n\n /**\n * This is here in order to be able to render mathml content\n */\n if (tagName === 'math' || (el.dataset && el.dataset.type === 'mathml') || hasMathChild) {\n const mathMl = hasMathChild ? el.innerHTML : el.outerHTML;\n\n if (MathPlugin.mathMlOptions.mmlEditing) {\n const { unwrapped, wrapType } = unWrapMath(convertMathMlToLatex(mathMl));\n\n return {\n object: 'inline',\n type: 'math',\n isVoid: true,\n nodes: [],\n data: {\n latex: unwrapped,\n wrapper: wrapType,\n },\n };\n }\n\n return {\n object: 'inline',\n isVoid: true,\n type: 'mathml',\n data: {\n html: mathMl,\n },\n };\n }\n\n if (el.nodeType === TEXT_NODE) {\n return;\n }\n\n if (tagName !== 'span') {\n return;\n }\n\n const hasLatex = el.hasAttribute('data-latex') || el.hasAttribute('latex');\n\n if (hasLatex) {\n const latex = htmlDecode(el.innerHTML);\n const { unwrapped, wrapType } = unWrapMath(latex);\n log('[deserialize]: noBrackets: ', unwrapped, wrapType);\n return {\n object: 'inline',\n type: 'math',\n isVoid: true,\n nodes: [],\n data: {\n latex: unwrapped,\n wrapper: wrapType,\n },\n };\n }\n },\n serialize(object) {\n if (object.type === 'math') {\n const latex = object.data.get('latex');\n const wrapper = object.data.get('wrapper');\n const decoded = htmlDecode(arrowHandlingCase(latex));\n\n log('[serialize] latex: ', latex);\n\n if (MathPlugin.mathMlOptions.mmlOutput) {\n const { mathMlFromLatex, conversionDidNotWork } = convertLatexToMathMl({ latex, decoded, wrapper });\n\n if (conversionDidNotWork) {\n // this means we could not convert latex to mathMl, so just return the latex version,\n // same as we would do if mmlOutput would not be enabled\n return (\n <span data-latex=\"\" data-raw={decoded}>\n {wrapMath(decoded, wrapper)}\n </span>\n );\n }\n\n return <span data-type=\"mathml\" dangerouslySetInnerHTML={{ __html: mathMlFromLatex }} />;\n }\n\n return (\n <span data-latex=\"\" data-raw={decoded}>\n {wrapMath(decoded, wrapper)}\n </span>\n );\n }\n\n /**\n * Here for rendering mathml content\n */\n if (object.type === 'mathml') {\n const html = object.data.get('html');\n\n return <span data-type=\"mathml\" dangerouslySetInnerHTML={{ __html: html }} />;\n }\n },\n};\n"],"file":"index.js"}
|
|
@@ -384,4 +384,4 @@ var serialization = {
|
|
|
384
384
|
}
|
|
385
385
|
};
|
|
386
386
|
exports.serialization = serialization;
|
|
387
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wbHVnaW5zL21lZGlhL2luZGV4LmpzeCJdLCJuYW1lcyI6WyJsb2ciLCJyZW1vdmVEaWFsb2dzIiwicHJldkRpYWxvZ3MiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb3JFYWNoIiwicyIsInJlbW92ZSIsImluc2VydERpYWxvZyIsInByb3BzIiwibmV3RWwiLCJjcmVhdGVFbGVtZW50IiwidHlwZSIsImNhbGxiYWNrIiwib3B0cyIsInJlc3QiLCJpbml0aWFsQm9keU92ZXJmbG93IiwiYm9keSIsInN0eWxlIiwib3ZlcmZsb3ciLCJjbGFzc05hbWUiLCJoYW5kbGVDbG9zZSIsInZhbCIsImRhdGEiLCJlbCIsInVwbG9hZFNvdW5kU3VwcG9ydCIsIlJlYWN0RE9NIiwicmVuZGVyIiwiYXBwZW5kQ2hpbGQiLCJ0eXBlcyIsIk1lZGlhUGx1Z2luIiwidG9vbGJhciIsImljb24iLCJhcmlhTGFiZWwiLCJvbkNsaWNrIiwidmFsdWUiLCJvbkNoYW5nZSIsImlubGluZSIsIklubGluZSIsImNyZWF0ZSIsImlzVm9pZCIsImVkaXRpbmciLCJlbmRzIiwidW5kZWZpbmVkIiwiaGVpZ2h0IiwidGl0bGUiLCJzdGFydHMiLCJzcmMiLCJ1cmwiLCJ3aWR0aCIsImNoYW5nZSIsImluc2VydElubGluZSIsIm5vZGVJc1RoZXJlIiwiZmluZERlc2NlbmRhbnQiLCJkIiwia2V5IiwiYyIsInJlbW92ZU5vZGVCeUtleSIsImZvY3VzIiwic2V0Tm9kZUJ5S2V5Iiwic3VwcG9ydHMiLCJub2RlIiwib2JqZWN0IiwibmFtZSIsImRlbGV0ZU5vZGUiLCJlIiwicHJldmVudERlZmF1bHQiLCJyZW5kZXJOb2RlIiwianNvbkRhdGEiLCJ0b0pTT04iLCJ0YWciLCJoYW5kbGVFZGl0IiwiY3JlYXRlQ2hhbmdlIiwiZWRpdCIsImdldCIsImhhbmRsZURlbGV0ZSIsIm5vcm1hbGl6ZU5vZGUiLCJ0ZXh0Tm9kZU1hcCIsInVwZGF0ZU5vZGVzQXJyYXkiLCJpbmRleCIsImlzTWVkaWEiLCJpbmRleE9mIiwidGV4dCIsInB1c2giLCJsZW5ndGgiLCJ3aXRob3V0Tm9ybWFsaXphdGlvbiIsIm4iLCJpbnNlcnRUZXh0QnlLZXkiLCJzZXJpYWxpemF0aW9uIiwiZGVzZXJpYWxpemUiLCJkYXRhc2V0IiwidHlwZUluZGV4IiwiRWxlbWVudCIsInRhZ05hbWUiLCJ0b0xvd2VyQ2FzZSIsImZpcnN0Q2hpbGQiLCJnZXRBdHRyaWJ1dGUiLCJwYXJzZUludCIsIm91dCIsInNlcmlhbGl6ZSIsImRpdlByb3BzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7OztBQUVBLElBQU1BLEdBQUcsR0FBRyx1QkFBTSxzQ0FBTixDQUFaOztBQUVBLElBQU1DLGFBQWEsR0FBRyxTQUFoQkEsYUFBZ0IsR0FBTTtBQUMxQixNQUFNQyxXQUFXLEdBQUdDLFFBQVEsQ0FBQ0MsZ0JBQVQsQ0FBMEIsc0JBQTFCLENBQXBCO0FBRUFGLEVBQUFBLFdBQVcsQ0FBQ0csT0FBWixDQUFvQixVQUFDQyxDQUFEO0FBQUEsV0FBT0EsQ0FBQyxDQUFDQyxNQUFGLEVBQVA7QUFBQSxHQUFwQjtBQUNELENBSkQ7O0FBTU8sSUFBTUMsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBQ0MsS0FBRCxFQUFXO0FBQ3JDLE1BQU1DLEtBQUssR0FBR1AsUUFBUSxDQUFDUSxhQUFULENBQXVCLEtBQXZCLENBQWQ7QUFDQSxNQUFRQyxJQUFSLEdBQTBDSCxLQUExQyxDQUFRRyxJQUFSO0FBQUEsTUFBY0MsUUFBZCxHQUEwQ0osS0FBMUMsQ0FBY0ksUUFBZDtBQUFBLE1BQXdCQyxJQUF4QixHQUEwQ0wsS0FBMUMsQ0FBd0JLLElBQXhCO0FBQUEsTUFBaUNDLElBQWpDLDZDQUEwQ04sS0FBMUM7QUFDQSxNQUFNTyxtQkFBbUIsR0FBR2IsUUFBUSxDQUFDYyxJQUFULENBQWNDLEtBQWQsQ0FBb0JDLFFBQWhE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LEVBQXFCO0FBQ25CLDBCQUNFO0FBQU8sUUFBQSxRQUFRLEVBQUMsVUFBaEI7QUFBMkIsUUFBQSxZQUFZLEVBQUM7QUFBeEMsc0JBQ0U7QUFBUSxRQUFBLElBQUksRUFBQyxXQUFiO0FBQXlCLFFBQUEsR0FBRyxFQUFFdkI7QUFBOUIsUUFERixDQURGO0FBS0Q7O0FBRUQsd0JBQ0U7QUFDRSxtQkFBV25DLElBRGI7QUFFRSxNQUFBLEdBQUcsRUFBRW1DO0FBRlAsT0FHTXFELFFBSE47QUFJRSxNQUFBLFdBQVcsRUFBQyxHQUpkO0FBS0UsTUFBQSxLQUFLLEVBQUMsMEZBTFI7QUFNRSxNQUFBLGVBQWU7QUFOakIsT0FPTTNGLEtBUE4sRUFERjtBQVdEO0FBcEcwQixDQUF0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCB7IElubGluZSB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCBUaGVhdGVyc0ljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL1RoZWF0ZXJzJztcbmltcG9ydCBWb2x1bWVVcEljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL1ZvbHVtZVVwJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5cbmltcG9ydCBNZWRpYURpYWxvZyBmcm9tICcuL21lZGlhLWRpYWxvZyc7XG5pbXBvcnQgTWVkaWFUb29sYmFyIGZyb20gJy4vbWVkaWEtdG9vbGJhcic7XG5pbXBvcnQgTWVkaWFXcmFwcGVyIGZyb20gJy4vbWVkaWEtd3JhcHBlcic7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdAcGllLWxpYjplZGl0YWJsZS1odG1sOnBsdWdpbnM6aW1hZ2UnKTtcblxuY29uc3QgcmVtb3ZlRGlhbG9ncyA9ICgpID0+IHtcbiAgY29uc3QgcHJldkRpYWxvZ3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuaW5zZXJ0LW1lZGlhLWRpYWxvZycpO1xuXG4gIHByZXZEaWFsb2dzLmZvckVhY2goKHMpID0+IHMucmVtb3ZlKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydERpYWxvZyA9IChwcm9wcykgPT4ge1xuICBjb25zdCBuZXdFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBjb25zdCB7IHR5cGUsIGNhbGxiYWNrLCBvcHRzLCAuLi5yZXN0IH0gPSBwcm9wcztcbiAgY29uc3QgaW5pdGlhbEJvZHlPdmVyZmxvdyA9IGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c7XG5cbiAgcmVtb3ZlRGlhbG9ncygpO1xuXG4gIG5ld0VsLmNsYXNzTmFtZSA9ICdpbnNlcnQtbWVkaWEtZGlhbG9nJztcbiAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gKHZhbCwgZGF0YSkgPT4ge1xuICAgIGNhbGxiYWNrKHZhbCwgZGF0YSk7XG4gICAgbmV3RWwucmVtb3ZlKCk7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9IGluaXRpYWxCb2R5T3ZlcmZsb3c7XG4gIH07XG5cbiAgY29uc3QgZWwgPSAoXG4gICAgPE1lZGlhRGlhbG9nXG4gICAgICB7Li4ucmVzdH1cbiAgICAgIHVwbG9hZFNvdW5kU3VwcG9ydD17b3B0cy51cGxvYWRTb3VuZFN1cHBvcnR9XG4gICAgICB0eXBlPXt0eXBlfVxuICAgICAgZGlzYWJsZVBvcnRhbD17dHJ1ZX1cbiAgICAgIG9wZW49e3RydWV9XG4gICAgICBoYW5kbGVDbG9zZT17aGFuZGxlQ2xvc2V9XG4gICAgLz5cbiAgKTtcblxuICBSZWFjdERPTS5yZW5kZXIoZWwsIG5ld0VsKTtcblxuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5ld0VsKTtcbn07XG5cbmNvbnN0IHR5cGVzID0gWydhdWRpbycsICd2aWRlbyddO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNZWRpYVBsdWdpbih0eXBlLCBvcHRzKSB7XG4gIGNvbnN0IHRvb2xiYXIgPSB7XG4gICAgaWNvbjogdHlwZSA9PT0gJ2F1ZGlvJyA/IDxWb2x1bWVVcEljb24gLz4gOiA8VGhlYXRlcnNJY29uIC8+LFxuICAgIGFyaWFMYWJlbDogdHlwZSA9PT0gJ2F1ZGlvJyA/ICdJbnNlcnQgYXVkaW8nIDogJ0luc2VydCB2aWRlbycsXG4gICAgb25DbGljazogKHZhbHVlLCBvbkNoYW5nZSkgPT4ge1xuICAgICAgbG9nKCdbdG9vbGJhcl0gb25DbGljaycpO1xuICAgICAgY29uc3QgaW5saW5lID0gSW5saW5lLmNyZWF0ZSh7XG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIGlzVm9pZDogdHJ1ZSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGVkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgIGVuZHM6IHVuZGVmaW5lZCxcbiAgICAgICAgICBoZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICB0aXRsZTogdW5kZWZpbmVkLFxuICAgICAgICAgIHN0YXJ0czogdW5kZWZpbmVkLFxuICAgICAgICAgIHNyYzogdW5kZWZpbmVkLFxuICAgICAgICAgIHVybDogdW5kZWZpbmVkLFxuICAgICAgICAgIHdpZHRoOiB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgY2hhbmdlID0gdmFsdWUuY2hhbmdlKCkuaW5zZXJ0SW5saW5lKGlubGluZSk7XG4gICAgICBvbkNoYW5nZShjaGFuZ2UpO1xuICAgICAgaW5zZXJ0RGlhbG9nKHtcbiAgICAgICAgdHlwZSxcbiAgICAgICAgb3B0cyxcbiAgICAgICAgY2FsbGJhY2s6ICh2YWwsIGRhdGEpID0+IHtcbiAgICAgICAgICBjb25zdCBub2RlSXNUaGVyZSA9IGNoYW5nZS52YWx1ZS5kb2N1bWVudC5maW5kRGVzY2VuZGFudCgoZCkgPT4gZC5rZXkgPT09IGlubGluZS5rZXkpO1xuXG4gICAgICAgICAgaWYgKG5vZGVJc1RoZXJlKSB7XG4gICAgICAgICAgICBpZiAoIXZhbCkge1xuICAgICAgICAgICAgICBjb25zdCBjID0gY2hhbmdlLnJlbW92ZU5vZGVCeUtleShpbmxpbmUua2V5KTtcbiAgICAgICAgICAgICAgb25DaGFuZ2UoYywgKCkgPT4gb3B0cy5mb2N1cygpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IGMgPSBjaGFuZ2Uuc2V0Tm9kZUJ5S2V5KGlubGluZS5rZXksIHsgZGF0YSB9KTtcbiAgICAgICAgICAgICAgb25DaGFuZ2UoYywgKCkgPT4gb3B0cy5mb2N1cygnYmVnaW5uaW5nJywgbm9kZUlzVGhlcmUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3B0cy5mb2N1cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgc3VwcG9ydHM6IChub2RlKSA9PiBub2RlLm9iamVjdCA9PT0gJ2lubGluZScgJiYgbm9kZS50eXBlID09PSB0eXBlLFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogdHlwZSxcbiAgICB0b29sYmFyLFxuICAgIGRlbGV0ZU5vZGU6IChlLCBub2RlLCB2YWx1ZSwgb25DaGFuZ2UpID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNvbnN0IGNoYW5nZSA9IHZhbHVlLmNoYW5nZSgpLnJlbW92ZU5vZGVCeUtleShub2RlLmtleSk7XG5cbiAgICAgIG9uQ2hhbmdlKGNoYW5nZSk7XG4gICAgfSxcbiAgICByZW5kZXJOb2RlKHByb3BzKSB7XG4gICAgICBpZiAocHJvcHMubm9kZS50eXBlID09PSB0eXBlKSB7XG4gICAgICAgIGNvbnN0IHsgbm9kZSwga2V5IH0gPSBwcm9wcztcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBub2RlO1xuICAgICAgICBjb25zdCBqc29uRGF0YSA9IGRhdGEudG9KU09OKCk7XG4gICAgICAgIGNvbnN0IHsgc3JjLCBoZWlnaHQsIHdpZHRoLCBlZGl0aW5nLCB0YWcsIC4uLnJlc3QgfSA9IGpzb25EYXRhO1xuICAgICAgICBjb25zdCBoYW5kbGVFZGl0ID0gKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoYW5nZSA9IG9wdHMuY3JlYXRlQ2hhbmdlKCk7XG4gICAgICAgICAgY29uc3QgYyA9IGNoYW5nZS5zZXROb2RlQnlLZXkoa2V5LCB7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgIC4uLmpzb25EYXRhLFxuICAgICAgICAgICAgICBlZGl0aW5nOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG9wdHMub25DaGFuZ2UoYywgKCkgPT4ge1xuICAgICAgICAgICAgaW5zZXJ0RGlhbG9nKHtcbiAgICAgICAgICAgICAgLi4uanNvbkRhdGEsXG4gICAgICAgICAgICAgIGVkaXQ6IHRydWUsXG4gICAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICAgIG9wdHMsXG4gICAgICAgICAgICAgIGNhbGxiYWNrOiAodmFsLCBkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBrZXkgfSA9IG5vZGU7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBub2RlSXNUaGVyZSA9IGNoYW5nZS52YWx1ZS5kb2N1bWVudC5maW5kRGVzY2VuZGFudChcbiAgICAgICAgICAgICAgICAgIChkKSA9PiBkLnR5cGUgPT09IHR5cGUgJiYgZC5kYXRhLmdldCgnZWRpdGluZycpLFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBpZiAobm9kZUlzVGhlcmUgJiYgdmFsKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBjID0gY2hhbmdlLnNldE5vZGVCeUtleShrZXksIHsgZGF0YSwgZWRpdGluZzogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgICBvcHRzLm9uQ2hhbmdlKGMsICgpID0+IG9wdHMuZm9jdXMoJ2JlZ2lubmluZycsIG5vZGVJc1RoZXJlKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG9wdHMuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgaGFuZGxlRGVsZXRlID0gKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoYW5nZSA9IG9wdHMuY3JlYXRlQ2hhbmdlKCk7XG4gICAgICAgICAgY29uc3QgYyA9IGNoYW5nZS5yZW1vdmVOb2RlQnlLZXkobm9kZS5rZXkpO1xuXG4gICAgICAgICAgb3B0cy5vbkNoYW5nZShjKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgc3R5bGUgPSB7fTtcblxuICAgICAgICBpZiAod2lkdGgpIHtcbiAgICAgICAgICBzdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoZWlnaHQpIHtcbiAgICAgICAgICBzdHlsZS5oZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRhZyA9PT0gJ2F1ZGlvJykge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8TWVkaWFXcmFwcGVyIGVkaXRvciBkYXRhLXR5cGU9e3R5cGV9IHdpZHRoPXtzdHlsZS53aWR0aH0gey4uLnJlc3R9PlxuICAgICAgICAgICAgICA8YXVkaW8gY29udHJvbHM9XCJjb250cm9sc1wiIGNvbnRyb2xzTGlzdD1cIm5vZG93bmxvYWRcIj5cbiAgICAgICAgICAgICAgICA8c291cmNlIHR5cGU9XCJhdWRpby9tcDNcIiBzcmM9e3NyY30gLz5cbiAgICAgICAgICAgICAgPC9hdWRpbz5cbiAgICAgICAgICAgICAgPE1lZGlhVG9vbGJhciBoaWRlRWRpdCBvblJlbW92ZT17aGFuZGxlRGVsZXRlfSAvPlxuICAgICAgICAgICAgPC9NZWRpYVdyYXBwZXI+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPE1lZGlhV3JhcHBlciBlZGl0b3IgZGF0YS10eXBlPXt0eXBlfSB3aWR0aD17c3R5bGUud2lkdGh9IHsuLi5yZXN0fT5cbiAgICAgICAgICAgIDxpZnJhbWVcbiAgICAgICAgICAgICAgZnJhbWVCb3JkZXI9XCIwXCJcbiAgICAgICAgICAgICAgYWxsb3c9XCJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgY2xpcGJvYXJkLXdyaXRlOyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlXCJcbiAgICAgICAgICAgICAgYWxsb3dGdWxsU2NyZWVuXG4gICAgICAgICAgICAgIHNyYz17c3JjfVxuICAgICAgICAgICAgICBlZGl0aW5nPXtlZGl0aW5nID8gMSA6IDB9XG4gICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgICB7Li4uc3R5bGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPE1lZGlhVG9vbGJhciBvbkVkaXQ9e2hhbmRsZUVkaXR9IG9uUmVtb3ZlPXtoYW5kbGVEZWxldGV9IC8+XG4gICAgICAgICAgPC9NZWRpYVdyYXBwZXI+XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSxcbiAgICBub3JtYWxpemVOb2RlOiAobm9kZSkgPT4ge1xuICAgICAgY29uc3QgdGV4dE5vZGVNYXAgPSB7fTtcbiAgICAgIGNvbnN0IHVwZGF0ZU5vZGVzQXJyYXkgPSBbXTtcbiAgICAgIGxldCBpbmRleCA9IDA7XG5cbiAgICAgIGlmIChub2RlLm9iamVjdCAhPT0gJ2RvY3VtZW50JykgcmV0dXJuO1xuXG4gICAgICBub2RlLmZpbmREZXNjZW5kYW50KChkKSA9PiB7XG4gICAgICAgIGlmIChkLm9iamVjdCA9PT0gJ3RleHQnKSB7XG4gICAgICAgICAgdGV4dE5vZGVNYXBbaW5kZXhdID0gZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzTWVkaWEgPSB0eXBlcy5pbmRleE9mKGQudHlwZSkgPj0gMDtcblxuICAgICAgICBpZiAoaXNNZWRpYSkge1xuICAgICAgICAgIGlmIChpbmRleCA+IDAgJiYgdGV4dE5vZGVNYXBbaW5kZXggLSAxXSAmJiB0ZXh0Tm9kZU1hcFtpbmRleCAtIDFdLnRleHQgPT09ICcnKSB7XG4gICAgICAgICAgICB1cGRhdGVOb2Rlc0FycmF5LnB1c2godGV4dE5vZGVNYXBbaW5kZXggLSAxXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaW5kZXgrKztcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXVwZGF0ZU5vZGVzQXJyYXkubGVuZ3RoKSByZXR1cm47XG5cbiAgICAgIHJldHVybiAoY2hhbmdlKSA9PiB7XG4gICAgICAgIGNoYW5nZS53aXRob3V0Tm9ybWFsaXphdGlvbigoKSA9PiB7XG4gICAgICAgICAgdXBkYXRlTm9kZXNBcnJheS5mb3JFYWNoKChuKSA9PiBjaGFuZ2UuaW5zZXJ0VGV4dEJ5S2V5KG4ua2V5LCAwLCAnICcpKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBzZXJpYWxpemF0aW9uID0ge1xuICBkZXNlcmlhbGl6ZShlbCAvKiwgbmV4dCovKSB7XG4gICAgbGV0IHR5cGUgPSBlbC5kYXRhc2V0ICYmIGVsLmRhdGFzZXQudHlwZTtcbiAgICBsZXQgdGFnID0gJ2lmcmFtZSc7XG4gICAgbGV0IHNyYztcbiAgICBjb25zdCB0eXBlSW5kZXggPSB0eXBlcy5pbmRleE9mKHR5cGUpO1xuXG4gICAgaWYgKHR5cGVJbmRleCA8IDApIHtcbiAgICAgIGlmIChlbCBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgZWwudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYXVkaW8nKSB7XG4gICAgICAgIHR5cGUgPSAnYXVkaW8nO1xuICAgICAgICB0YWcgPSAnYXVkaW8nO1xuICAgICAgICBzcmMgPSBlbC5maXJzdENoaWxkPy5nZXRBdHRyaWJ1dGUoJ3NyYycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgZW5kcywgc3RhcnRzLCB0aXRsZSwgZWRpdGluZywgdXJsIH0gPSBlbC5kYXRhc2V0IHx8IHt9O1xuXG4gICAgbG9nKCdkZXNlcmlhbGl6ZTogJywgbmFtZSk7XG4gICAgY29uc3Qgd2lkdGggPSBwYXJzZUludChlbC5nZXRBdHRyaWJ1dGUoJ3dpZHRoJyksIDEwKSB8fCBudWxsO1xuICAgIGNvbnN0IGhlaWdodCA9IHBhcnNlSW50KGVsLmdldEF0dHJpYnV0ZSgnaGVpZ2h0JyksIDEwKSB8fCBudWxsO1xuXG4gICAgY29uc3Qgb3V0ID0ge1xuICAgICAgb2JqZWN0OiAnaW5saW5lJyxcbiAgICAgIHR5cGU6IHR5cGUsXG4gICAgICBpc1ZvaWQ6IHRydWUsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHRhZyxcbiAgICAgICAgc3JjOiBzcmMgfHwgZWwuZ2V0QXR0cmlidXRlKCdzcmMnKSxcbiAgICAgICAgZWRpdGluZyxcbiAgICAgICAgZW5kcyxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICBzdGFydHMsXG4gICAgICAgIHRpdGxlLFxuICAgICAgICB3aWR0aCxcbiAgICAgICAgdXJsLFxuICAgICAgfSxcbiAgICB9O1xuICAgIGxvZygncmV0dXJuIG9iamVjdDogJywgb3V0KTtcbiAgICByZXR1cm4gb3V0O1xuICB9LFxuICBzZXJpYWxpemUob2JqZWN0IC8qLCBjaGlsZHJlbiovKSB7XG4gICAgY29uc3QgdHlwZUluZGV4ID0gdHlwZXMuaW5kZXhPZihvYmplY3QudHlwZSk7XG5cbiAgICBpZiAodHlwZUluZGV4IDwgMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgdHlwZSA9IHR5cGVzW3R5cGVJbmRleF07XG5cbiAgICBjb25zdCB7IGRhdGEgfSA9IG9iamVjdDtcbiAgICBjb25zdCBlZGl0aW5nID0gZGF0YS5nZXQoJ2VkaXRpbmcnKTtcbiAgICBjb25zdCB0YWcgPSBkYXRhLmdldCgndGFnJyk7XG4gICAgY29uc3QgZW5kcyA9IGRhdGEuZ2V0KCdlbmRzJyk7XG4gICAgY29uc3Qgc3JjID0gZGF0YS5nZXQoJ3NyYycpO1xuICAgIGNvbnN0IHN0YXJ0cyA9IGRhdGEuZ2V0KCdzdGFydHMnKTtcbiAgICBjb25zdCB0aXRsZSA9IGRhdGEuZ2V0KCd0aXRsZScpO1xuICAgIGNvbnN0IHdpZHRoID0gZGF0YS5nZXQoJ3dpZHRoJyk7XG4gICAgY29uc3QgaGVpZ2h0ID0gZGF0YS5nZXQoJ2hlaWdodCcpO1xuICAgIGNvbnN0IHVybCA9IGRhdGEuZ2V0KCd1cmwnKTtcbiAgICBjb25zdCBzdHlsZSA9IHt9O1xuXG4gICAgaWYgKHdpZHRoKSB7XG4gICAgICBzdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICB9XG5cbiAgICBpZiAoaGVpZ2h0KSB7XG4gICAgICBzdHlsZS5oZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xuICAgIH1cblxuICAgIGNvbnN0IGRpdlByb3BzID0ge1xuICAgICAgJ2RhdGEtZWRpdGluZyc6IGVkaXRpbmcsXG4gICAgICAnZGF0YS1lbmRzJzogZW5kcyxcbiAgICAgICdkYXRhLXN0YXJ0cyc6IHN0YXJ0cyxcbiAgICAgICdkYXRhLXRpdGxlJzogdGl0bGUsXG4gICAgICAnZGF0YS11cmwnOiB1cmwsXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgIC4uLnN0eWxlLFxuICAgICAgc3JjLFxuICAgIH07XG5cbiAgICBpZiAodGFnID09PSAnYXVkaW8nKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8YXVkaW8gY29udHJvbHM9XCJjb250cm9sc1wiIGNvbnRyb2xzTGlzdD1cIm5vZG93bmxvYWRcIj5cbiAgICAgICAgICA8c291cmNlIHR5cGU9XCJhdWRpby9tcDNcIiBzcmM9e3NyY30gLz5cbiAgICAgICAgPC9hdWRpbz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxpZnJhbWVcbiAgICAgICAgZGF0YS10eXBlPXt0eXBlfVxuICAgICAgICBzcmM9e3NyY31cbiAgICAgICAgey4uLmRpdlByb3BzfVxuICAgICAgICBmcmFtZUJvcmRlcj1cIjBcIlxuICAgICAgICBhbGxvdz1cImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBjbGlwYm9hcmQtd3JpdGU7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmVcIlxuICAgICAgICBhbGxvd0Z1bGxTY3JlZW5cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgLz5cbiAgICApO1xuICB9LFxufTtcbiJdfQ==
|
|
387
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/plugins/media/index.jsx"],"names":["log","removeDialogs","prevDialogs","document","querySelectorAll","forEach","s","remove","insertDialog","props","newEl","createElement","type","callback","opts","rest","initialBodyOverflow","body","style","overflow","className","handleClose","val","data","el","uploadSoundSupport","ReactDOM","render","appendChild","types","MediaPlugin","toolbar","icon","ariaLabel","onClick","value","onChange","inline","Inline","create","isVoid","editing","ends","undefined","height","title","starts","src","url","width","change","insertInline","nodeIsThere","findDescendant","d","key","c","removeNodeByKey","focus","setNodeByKey","supports","node","object","name","deleteNode","e","preventDefault","renderNode","jsonData","toJSON","tag","handleEdit","createChange","edit","get","handleDelete","normalizeNode","textNodeMap","updateNodesArray","index","isMedia","indexOf","text","push","length","withoutNormalization","n","insertTextByKey","serialization","deserialize","dataset","typeIndex","Element","tagName","toLowerCase","firstChild","getAttribute","parseInt","out","serialize","divProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Inline } from 'slate';\nimport TheatersIcon from '@material-ui/icons/Theaters';\nimport VolumeUpIcon from '@material-ui/icons/VolumeUp';\nimport debug from 'debug';\n\nimport MediaDialog from './media-dialog';\nimport MediaToolbar from './media-toolbar';\nimport MediaWrapper from './media-wrapper';\n\nconst log = debug('@pie-lib:editable-html:plugins:image');\n\nconst removeDialogs = () => {\n const prevDialogs = document.querySelectorAll('.insert-media-dialog');\n\n prevDialogs.forEach((s) => s.remove());\n};\n\nexport const insertDialog = (props) => {\n const newEl = document.createElement('div');\n const { type, callback, opts, ...rest } = props;\n const initialBodyOverflow = document.body.style.overflow;\n\n removeDialogs();\n\n newEl.className = 'insert-media-dialog';\n document.body.style.overflow = 'hidden';\n\n const handleClose = (val, data) => {\n callback(val, data);\n newEl.remove();\n document.body.style.overflow = initialBodyOverflow;\n };\n\n const el = (\n <MediaDialog\n {...rest}\n uploadSoundSupport={opts.uploadSoundSupport}\n type={type}\n disablePortal={true}\n open={true}\n handleClose={handleClose}\n />\n );\n\n ReactDOM.render(el, newEl);\n\n document.body.appendChild(newEl);\n};\n\nconst types = ['audio', 'video'];\n\nexport default function MediaPlugin(type, opts) {\n const toolbar = {\n icon: type === 'audio' ? <VolumeUpIcon /> : <TheatersIcon />,\n ariaLabel: type === 'audio' ? 'Insert audio' : 'Insert video',\n onClick: (value, onChange) => {\n log('[toolbar] onClick');\n const inline = Inline.create({\n type: type,\n isVoid: true,\n data: {\n editing: false,\n ends: undefined,\n height: undefined,\n title: undefined,\n starts: undefined,\n src: undefined,\n url: undefined,\n width: undefined,\n },\n });\n\n const change = value.change().insertInline(inline);\n onChange(change);\n insertDialog({\n type,\n opts,\n callback: (val, data) => {\n const nodeIsThere = change.value.document.findDescendant((d) => d.key === inline.key);\n\n if (nodeIsThere) {\n if (!val) {\n const c = change.removeNodeByKey(inline.key);\n onChange(c, () => opts.focus());\n } else {\n const c = change.setNodeByKey(inline.key, { data });\n onChange(c, () => opts.focus('beginning', nodeIsThere));\n }\n } else {\n opts.focus();\n }\n },\n });\n },\n supports: (node) => node.object === 'inline' && node.type === type,\n };\n\n return {\n name: type,\n toolbar,\n deleteNode: (e, node, value, onChange) => {\n e.preventDefault();\n const change = value.change().removeNodeByKey(node.key);\n\n onChange(change);\n },\n renderNode(props) {\n if (props.node.type === type) {\n const { node, key } = props;\n const { data } = node;\n const jsonData = data.toJSON();\n const { src, height, width, editing, tag, ...rest } = jsonData;\n const handleEdit = () => {\n const change = opts.createChange();\n const c = change.setNodeByKey(key, {\n data: {\n ...jsonData,\n editing: true,\n },\n });\n\n opts.onChange(c, () => {\n insertDialog({\n ...jsonData,\n edit: true,\n type,\n opts,\n callback: (val, data) => {\n const { key } = node;\n\n const nodeIsThere = change.value.document.findDescendant(\n (d) => d.type === type && d.data.get('editing'),\n );\n\n if (nodeIsThere && val) {\n const c = change.setNodeByKey(key, { data, editing: false });\n opts.onChange(c, () => opts.focus('beginning', nodeIsThere));\n } else {\n opts.focus();\n }\n },\n });\n });\n };\n const handleDelete = () => {\n const change = opts.createChange();\n const c = change.removeNodeByKey(node.key);\n\n opts.onChange(c);\n };\n const style = {};\n\n if (width) {\n style.width = `${width}px`;\n }\n\n if (height) {\n style.height = `${height}px`;\n }\n\n if (tag === 'audio') {\n return (\n <MediaWrapper editor data-type={type} width={style.width} {...rest}>\n <audio controls=\"controls\" controlsList=\"nodownload\">\n <source type=\"audio/mp3\" src={src} />\n </audio>\n <MediaToolbar hideEdit onRemove={handleDelete} />\n </MediaWrapper>\n );\n }\n\n return (\n <MediaWrapper editor data-type={type} width={style.width} {...rest}>\n <iframe\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n src={src}\n editing={editing ? 1 : 0}\n {...rest}\n {...style}\n />\n <MediaToolbar onEdit={handleEdit} onRemove={handleDelete} />\n </MediaWrapper>\n );\n }\n },\n normalizeNode: (node) => {\n const textNodeMap = {};\n const updateNodesArray = [];\n let index = 0;\n\n if (node.object !== 'document') return;\n\n node.findDescendant((d) => {\n if (d.object === 'text') {\n textNodeMap[index] = d;\n }\n\n const isMedia = types.indexOf(d.type) >= 0;\n\n if (isMedia) {\n if (index > 0 && textNodeMap[index - 1] && textNodeMap[index - 1].text === '') {\n updateNodesArray.push(textNodeMap[index - 1]);\n }\n }\n\n index++;\n });\n\n if (!updateNodesArray.length) return;\n\n return (change) => {\n change.withoutNormalization(() => {\n updateNodesArray.forEach((n) => change.insertTextByKey(n.key, 0, ' '));\n });\n };\n },\n };\n}\n\nexport const serialization = {\n deserialize(el /*, next*/) {\n let type = el.dataset && el.dataset.type;\n let tag = 'iframe';\n let src;\n const typeIndex = types.indexOf(type);\n\n if (typeIndex < 0) {\n if (el instanceof Element && el.tagName.toLowerCase() === 'audio') {\n type = 'audio';\n tag = 'audio';\n src = el.firstChild?.getAttribute('src');\n } else {\n return;\n }\n }\n\n const { ends, starts, title, editing, url } = el.dataset || {};\n\n log('deserialize: ', name);\n const width = parseInt(el.getAttribute('width'), 10) || null;\n const height = parseInt(el.getAttribute('height'), 10) || null;\n\n const out = {\n object: 'inline',\n type: type,\n isVoid: true,\n data: {\n tag,\n src: src || el.getAttribute('src'),\n editing,\n ends,\n height,\n starts,\n title,\n width,\n url,\n },\n };\n log('return object: ', out);\n return out;\n },\n serialize(object /*, children*/) {\n const typeIndex = types.indexOf(object.type);\n\n if (typeIndex < 0) return;\n\n const type = types[typeIndex];\n\n const { data } = object;\n const editing = data.get('editing');\n const tag = data.get('tag');\n const ends = data.get('ends');\n const src = data.get('src');\n const starts = data.get('starts');\n const title = data.get('title');\n const width = data.get('width');\n const height = data.get('height');\n const url = data.get('url');\n const style = {};\n\n if (width) {\n style.width = `${width}px`;\n }\n\n if (height) {\n style.height = `${height}px`;\n }\n\n const divProps = {\n 'data-editing': editing,\n 'data-ends': ends,\n 'data-starts': starts,\n 'data-title': title,\n 'data-url': url,\n };\n const props = {\n ...style,\n src,\n };\n\n if (tag === 'audio') {\n return (\n <audio controls=\"controls\" controlsList=\"nodownload\">\n <source type=\"audio/mp3\" src={src} />\n </audio>\n );\n }\n\n return (\n <iframe\n data-type={type}\n src={src}\n {...divProps}\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n {...props}\n />\n );\n },\n};\n"],"file":"index.js"}
|
|
@@ -31,7 +31,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
31
31
|
|
|
32
32
|
var _debug = _interopRequireDefault(require("debug"));
|
|
33
33
|
|
|
34
|
-
var
|
|
34
|
+
var _index = require("./../../shared/index");
|
|
35
35
|
|
|
36
36
|
var _styles = require("@material-ui/core/styles");
|
|
37
37
|
|
|
@@ -687,8 +687,8 @@ var styles = function styles(theme) {
|
|
|
687
687
|
cursor: 'pointer'
|
|
688
688
|
},
|
|
689
689
|
active: {
|
|
690
|
-
color:
|
|
691
|
-
borderBottom: "2px solid ".concat(
|
|
690
|
+
color: _index.color.primary(),
|
|
691
|
+
borderBottom: "2px solid ".concat(_index.color.primary())
|
|
692
692
|
},
|
|
693
693
|
uploadInput: {
|
|
694
694
|
marginTop: theme.spacing.unit * 1.5
|
|
@@ -706,4 +706,4 @@ var styles = function styles(theme) {
|
|
|
706
706
|
var _default = (0, _styles.withStyles)(styles)(MediaDialog);
|
|
707
707
|
|
|
708
708
|
exports["default"] = _default;
|
|
709
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wbHVnaW5zL21lZGlhL21lZGlhLWRpYWxvZy5qcyJdLCJuYW1lcyI6WyJsb2ciLCJtYXRjaFlvdXR1YmVVcmwiLCJ1cmwiLCJwIiwibWF0Y2giLCJtYXRjaFZpbWVvVXJsIiwidGVzdCIsIm1hdGNoRHJpdmVVcmwiLCJtYXRjaFNvdW5kQ2xvdWRVcmwiLCJyZWdleHAiLCJtYWtlQXBpUmVxdWVzdCIsIlByb21pc2UiLCJyZXNvbHZlIiwiZmV0Y2giLCJ0aGVuIiwicmVzcG9uc2UiLCJqc29uIiwiZCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsImh0bWwiLCJpZnJhbWUiLCJxdWVyeVNlbGVjdG9yIiwic3JjIiwiZXJyIiwidHlwZU1hcCIsInZpZGVvIiwiYXVkaW8iLCJ0YWJzVHlwZU1hcCIsInVwbG9hZEZpbGUiLCJpbnNlcnRVcmwiLCJNZWRpYURpYWxvZyIsInByb3BzIiwic3RhdGUiLCJ1cmxUb1VzZSIsInN0YXJ0cyIsImVuZHMiLCJpc1lvdXR1YmUiLCJpc1ZpbWVvIiwiZm9ybWF0dGVkVXJsIiwicGFyYW1zIiwicGFyYW1OYW1lIiwicGFyYW1TdGFydCIsInB1c2giLCJsZW5ndGgiLCJqb2luIiwiY2FsbGJhY2siLCJzZXRTdGF0ZSIsInVwZGF0aW5nIiwibmV3U3RhdGUiLCJmb3JtYXRVcmwiLCJ2YWx1ZSIsImhhbmRsZVN0YXRlQ2hhbmdlIiwiaW52YWxpZCIsInJlZ0V4cCIsImlkIiwicmVwbGFjZSIsImUiLCJ0YXJnZXQiLCJ0eXBlIiwiY2hlY2tBdWRpbyIsImNoZWNrVmlkZW8iLCJ2YWwiLCJoYW5kbGVDbG9zZSIsInRhYlZhbHVlIiwiZmlsZVVwbG9hZCIsImlzSW5zZXJ0VVJMIiwiaGFuZGxlUmVtb3ZlRmlsZSIsImhlaWdodCIsIndpZHRoIiwidGFnIiwibG9hZGluZyIsInNjaGVkdWxlZCIsInByZXZlbnREZWZhdWx0IiwiZXJyb3IiLCJmaWxlQ2hvc2VuIiwiZmlsZXMiLCJyZWFkZXIiLCJGaWxlUmVhZGVyIiwib25sb2FkIiwiZGF0YVVSTCIsInJlc3VsdCIsIm1pbWVUeXBlIiwicmVhZEFzRGF0YVVSTCIsInVwbG9hZFNvdW5kU3VwcG9ydCIsImFkZCIsImRvbmUiLCJjb25zb2xlIiwiaGFuZGxlRG9uZSIsImJpbmQiLCJ1bmRlZmluZWQiLCJzaG93VXBsb2FkRmlsZSIsInVybENoYW5nZSIsImNsYXNzZXMiLCJvcGVuIiwiZGlzYWJsZVBvcnRhbCIsImVkaXQiLCJpc1VwbG9hZE1lZGlhIiwic3VibWl0SXNEaXNhYmxlZCIsInBhcGVyIiwicm93IiwiZXZlbnQiLCJyb290IiwicHJvcGVydGllcyIsImNoYW5nZUhhbmRsZXIiLCJ1cGxvYWRJbnB1dCIsImRlbGV0ZUljb24iLCJpbnB1dCIsImhhbmRsZVVwbG9hZEZpbGUiLCJSZWFjdCIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJib29sIiwiZnVuYyIsInNoYXBlIiwic3RyaW5nIiwibnVtYmVyIiwic3R5bGVzIiwidGhlbWUiLCJtaW5XaWR0aCIsInBhZGRpbmciLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsInJvd0l0ZW0iLCJtYXJnaW5SaWdodCIsInNwYWNpbmciLCJ1bml0IiwiY3Vyc29yIiwiYWN0aXZlIiwiY29sb3IiLCJwcmltYXJ5IiwiYm9yZGVyQm90dG9tIiwibWFyZ2luVG9wIiwicGFsZXR0ZSIsIm1haW4iLCJtYXJnaW5MZWZ0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUVBLElBQU1BLEdBQUcsR0FBRyx1QkFBTSw2Q0FBTixDQUFaOztBQUVBLElBQU1DLGVBQWUsR0FBRyxTQUFsQkEsZUFBa0IsQ0FBQ0MsR0FBRCxFQUFTO0FBQy9C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TkMsTUFBQUEsS0FBSyxFQUFFQSxnQkFBTUMsT0FBTixFQUREO0FBRU5DLE1BQUFBLFlBQVksc0JBQWVGLGdCQUFNQyxPQUFOLEVBQWY7QUFGTixLQWZpQjtBQW1CekIzQixJQUFBQSxXQUFXLEVBQUU7QUFDWDZCLE1BQUFBLFNBQVMsRUFBRWQsS0FBSyxDQUFDTyxPQUFOLENBQWNDLElBQWQsR0FBcUI7QUFEckIsS0FuQlk7QUFzQnpCdEQsSUFBQUEsS0FBSyxFQUFFO0FBQ0w0RCxNQUFBQSxTQUFTLEVBQUVkLEtBQUssQ0FBQ08sT0FBTixDQUFjQyxJQUFkLEdBQXFCLEdBRDNCO0FBRUxHLE1BQUFBLEtBQUssRUFBRVgsS0FBSyxDQUFDZSxPQUFOLENBQWM3RCxLQUFkLENBQW9COEQ7QUFGdEIsS0F0QmtCO0FBMEJ6QjlCLElBQUFBLFVBQVUsRUFBRTtBQUNWK0IsTUFBQUEsVUFBVSxFQUFFakIsS0FBSyxDQUFDTyxPQUFOLENBQWNDLElBQWQsR0FBcUI7QUFEdkI7QUExQmEsR0FBWjtBQUFBLENBQWY7O2VBK0JlLHdCQUFXVCxNQUFYLEVBQW1CeEYsV0FBbkIsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7IGNvbG9yIH0gZnJvbSAnQHBpZS1saWIvcmVuZGVyLXVpJztcbmltcG9ydCB7IHdpdGhTdHlsZXMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9zdHlsZXMnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9CdXR0b24nO1xuaW1wb3J0IERpYWxvZyBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9EaWFsb2cnO1xuaW1wb3J0IE11aVRhYnMgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvVGFicyc7XG5pbXBvcnQgTXVpVGFiIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL1RhYic7XG5pbXBvcnQgRGlhbG9nVGl0bGUgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvRGlhbG9nVGl0bGUnO1xuaW1wb3J0IERpYWxvZ0NvbnRlbnQgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvRGlhbG9nQ29udGVudCc7XG5pbXBvcnQgRGlhbG9nQ29udGVudFRleHQgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvRGlhbG9nQ29udGVudFRleHQnO1xuaW1wb3J0IERpYWxvZ0FjdGlvbnMgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvRGlhbG9nQWN0aW9ucyc7XG5pbXBvcnQgVGV4dEZpZWxkIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL1RleHRGaWVsZCc7XG5pbXBvcnQgVHlwb2dyYXBoeSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9UeXBvZ3JhcGh5JztcbmltcG9ydCBJY29uQnV0dG9uIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0ljb25CdXR0b24nO1xuaW1wb3J0IEFjdGlvbkRlbGV0ZSBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRGVsZXRlJztcblxuY29uc3QgbG9nID0gZGVidWcoJ0BwaWUtbGliOmVkaXRhYmxlLWh0bWw6cGx1Z2luczptZWRpYTpkaWFsb2cnKTtcblxuY29uc3QgbWF0Y2hZb3V0dWJlVXJsID0gKHVybCkgPT4ge1xuICBpZiAoIXVybCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHAgPSAvXig/Omh0dHBzPzpcXC9cXC8pPyg/Om1cXC58d3d3XFwuKT8oPzp5b3V0dVxcLmJlXFwvfHlvdXR1YmVcXC5jb21cXC8oPzplbWJlZFxcL3x2XFwvfHdhdGNoXFw/dj18d2F0Y2hcXD8uKyZ2PSkpKChcXHd8LSl7MTF9KSg/OlxcUyspPyQvO1xuICBpZiAodXJsLm1hdGNoKHApKSB7XG4gICAgcmV0dXJuIHVybC5tYXRjaChwKVsxXTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5jb25zdCBtYXRjaFZpbWVvVXJsID0gKHVybCkgPT5cbiAgdXJsICYmXG4gIC8oaHR0cHxodHRwcyk/OlxcL1xcLyh3d3dcXC4pPyhwbGF5ZXJcXC4pP3ZpbWVvLmNvbVxcLyg/OmNoYW5uZWxzXFwvKD86XFx3K1xcLyk/fGdyb3Vwc1xcLyhbXi9dKilcXC92aWRlb3NcXC98KSh2aWRlb1xcLyk/KFxcZCspKD86fFxcL1xcPykvLnRlc3QoXG4gICAgdXJsLFxuICApO1xuXG5jb25zdCBtYXRjaERyaXZlVXJsID0gKHVybCkgPT5cbiAgdXJsICYmIC9eaHR0cHM6XFwvXFwvZHJpdmVcXC5nb29nbGVcXC5jb21cXC8oPzpmaWxlXFwvZFxcL3xkcml2ZVxcLyg/OnVcXC9cXGQrXFwvKT9mb2xkZXJzXFwvfHVjXFw/aWQ9KShbYS16QS1aMC05Xy1dKykvLnRlc3QodXJsKTtcblxuY29uc3QgbWF0Y2hTb3VuZENsb3VkVXJsID0gKHVybCkgPT4ge1xuICBpZiAoIXVybCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHJlZ2V4cCA9IC9eaHR0cHM/OlxcL1xcLyhzb3VuZGNsb3VkXFwuY29tfHNuZFxcLnNjKVxcLyguKikkLztcbiAgcmV0dXJuIHVybC5tYXRjaChyZWdleHApICYmIHVybC5tYXRjaChyZWdleHApWzJdO1xufTtcblxuY29uc3QgbWFrZUFwaVJlcXVlc3QgPSAodXJsKSA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBmZXRjaChgaHR0cHM6Ly9zb3VuZGNsb3VkLmNvbS9vZW1iZWQ/Zm9ybWF0PWpzb24mdXJsPSR7dXJsfWApXG4gICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuanNvbigpKVxuICAgICAgICAudGhlbigoanNvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICAgICAgICAgIGQuaW5uZXJIVE1MID0ganNvbi5odG1sO1xuXG4gICAgICAgICAgY29uc3QgaWZyYW1lID0gZC5xdWVyeVNlbGVjdG9yKCdpZnJhbWUnKTtcblxuICAgICAgICAgIHJlc29sdmUoaWZyYW1lLnNyYyk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZSgnJyk7XG4gICAgICAgICAgbG9nKGVycik7XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmVzb2x2ZSgnJyk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IHR5cGVNYXAgPSB7XG4gIHZpZGVvOiAnVmlkZW8nLFxuICBhdWRpbzogJ0F1ZGlvJyxcbn07XG5cbmNvbnN0IHRhYnNUeXBlTWFwID0ge1xuICB1cGxvYWRGaWxlOiAndXBsb2FkLWZpbGUnLFxuICBpbnNlcnRVcmw6ICdpbnNlcnQtdXJsJyxcbn07XG5cbmV4cG9ydCBjbGFzcyBNZWRpYURpYWxvZyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICAgIGVkaXQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGRpc2FibGVQb3J0YWw6IFByb3BUeXBlcy5ib29sLFxuICAgIGhhbmRsZUNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICB1cGxvYWRTb3VuZFN1cHBvcnQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBhZGQ6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgZGVsZXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICB9KSxcbiAgICB0eXBlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHNyYzogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB1cmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdXJsVG9Vc2U6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc3RhcnRzOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGVuZHM6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgaGVpZ2h0OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHdpZHRoOiBQcm9wVHlwZXMubnVtYmVyLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgY29uc3QgeyBlbmRzLCBoZWlnaHQsIHNyYywgc3RhcnRzLCB0eXBlLCB1cGxvYWRTb3VuZFN1cHBvcnQsIHVybCwgdXJsVG9Vc2UsIHdpZHRoIH0gPSBwcm9wcztcbiAgICBjb25zdCBzaG93VXBsb2FkRmlsZSA9IHVwbG9hZFNvdW5kU3VwcG9ydD8uYWRkICYmIHVwbG9hZFNvdW5kU3VwcG9ydD8uZGVsZXRlICYmIHR5cGUgIT09ICd2aWRlbyc7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgZW5kczogZW5kcyB8fCAwLFxuICAgICAgdXJsOiB1cmwsXG4gICAgICB1cmxUb1VzZTogdXJsVG9Vc2UsXG4gICAgICBmb3JtYXR0ZWRVcmw6IHNyYyxcbiAgICAgIGhlaWdodDogaGVpZ2h0IHx8IDMxNSxcbiAgICAgIGludmFsaWQ6IGZhbHNlLFxuICAgICAgc3RhcnRzOiBzdGFydHMgfHwgMCxcbiAgICAgIHdpZHRoOiB3aWR0aCB8fCA1NjAsXG4gICAgICAvLyBkZWZhdWx0IHNlbGVjdGVkIHRhYiBzaG91bGQgYmUgdXBsb2FkIGZpbGUgaWYgYXZhaWxhYmxlXG4gICAgICB0YWJWYWx1ZTogc2hvd1VwbG9hZEZpbGUgPyB0YWJzVHlwZU1hcC51cGxvYWRGaWxlIDogdGFic1R5cGVNYXAuaW5zZXJ0VXJsLFxuICAgICAgZmlsZVVwbG9hZDoge1xuICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgIHNjaGVkdWxlZDogZmFsc2UsXG4gICAgICAgIHVybDogJycsXG4gICAgICAgIG1pbWVUeXBlOiAnJyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIGlmICh0aGlzLnByb3BzLnVybCkge1xuICAgICAgdGhpcy51cmxDaGFuZ2Uoe1xuICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICB2YWx1ZTogdGhpcy5wcm9wcy51cmwsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBmb3JtYXRVcmwgPSAoKSA9PiB7XG4gICAgY29uc3QgeyB1cmwsIHVybFRvVXNlLCBzdGFydHMsIGVuZHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgaXNZb3V0dWJlID0gbWF0Y2hZb3V0dWJlVXJsKHVybCk7XG4gICAgY29uc3QgaXNWaW1lbyA9IG1hdGNoVmltZW9VcmwodXJsKTtcbiAgICBsZXQgZm9ybWF0dGVkVXJsID0gdXJsVG9Vc2U7XG5cbiAgICBpZiAoKGlzWW91dHViZSB8fCBpc1ZpbWVvKSAmJiB1cmxUb1VzZSkge1xuICAgICAgY29uc3QgcGFyYW1zID0gW107XG5cbiAgICAgIGxldCBwYXJhbU5hbWU7XG4gICAgICBsZXQgcGFyYW1TdGFydDtcblxuICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgIGNhc2UgaXNWaW1lbzpcbiAgICAgICAgICBwYXJhbU5hbWUgPSAndCc7XG4gICAgICAgICAgcGFyYW1TdGFydCA9ICcjJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBpc1lvdXR1YmU6XG4gICAgICAgICAgcGFyYW1OYW1lID0gJ3N0YXJ0JztcbiAgICAgICAgICBwYXJhbVN0YXJ0ID0gJz8nO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHBhcmFtTmFtZSA9ICdzdGFydCc7XG4gICAgICAgICAgcGFyYW1TdGFydCA9ICc/JztcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXJ0cykge1xuICAgICAgICBwYXJhbXMucHVzaChgJHtwYXJhbU5hbWV9PSR7c3RhcnRzfWApO1xuICAgICAgfVxuXG4gICAgICBpZiAoZW5kcykge1xuICAgICAgICBwYXJhbXMucHVzaChgZW5kPSR7ZW5kc31gKTtcbiAgICAgIH1cblxuICAgICAgZm9ybWF0dGVkVXJsID0gYCR7dXJsVG9Vc2V9JHtwYXJhbXMubGVuZ3RoID8gcGFyYW1TdGFydCA6ICcnfSR7cGFyYW1zLmpvaW4oJyYnKX1gO1xuICAgIH1cblxuICAgIGNvbnN0IGNhbGxiYWNrID0gKCkgPT4gdGhpcy5zZXRTdGF0ZSh7IGZvcm1hdHRlZFVybCwgdXBkYXRpbmc6IGZhbHNlIH0pO1xuXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGZvcm1hdHRlZFVybDogbnVsbCwgdXBkYXRpbmc6IHRydWUgfSwgY2FsbGJhY2spO1xuICB9O1xuXG4gIGhhbmRsZVN0YXRlQ2hhbmdlID0gKG5ld1N0YXRlKSA9PiB0aGlzLnNldFN0YXRlKG5ld1N0YXRlLCB0aGlzLmZvcm1hdFVybCk7XG5cbiAgY2hlY2tBdWRpbyA9ICh2YWx1ZSkgPT4ge1xuICAgIGlmIChtYXRjaFNvdW5kQ2xvdWRVcmwodmFsdWUpKSB7XG4gICAgICBtYWtlQXBpUmVxdWVzdCh2YWx1ZSlcbiAgICAgICAgLnRoZW4oKHVybFRvVXNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVTdGF0ZUNoYW5nZSh7XG4gICAgICAgICAgICB1cmxUb1VzZSxcbiAgICAgICAgICAgIGludmFsaWQ6ICF1cmxUb1VzZSxcbiAgICAgICAgICAgIHVybDogdmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChsb2cpO1xuICAgIH1cbiAgfTtcblxuICBjaGVja1ZpZGVvID0gKHZhbHVlKSA9PiB7XG4gICAgaWYgKG1hdGNoWW91dHViZVVybCh2YWx1ZSkpIHtcbiAgICAgIGNvbnN0IHJlZ0V4cCA9IC9eLiooeW91dHVcXC5iZVxcL3x2XFwvfHVcXC9cXHdcXC98ZW1iZWRcXC98d2F0Y2hcXD92PXwmdj0pKFteIyY/XSopLiovO1xuICAgICAgY29uc3QgbWF0Y2ggPSB2YWx1ZS5tYXRjaChyZWdFeHApO1xuICAgICAgY29uc3QgaWQgPSBtYXRjaFsyXTtcbiAgICAgIGNvbnN0IHVybFRvVXNlID0gYGh0dHBzOi8veW91dHViZS5jb20vZW1iZWQvJHtpZH1gO1xuXG4gICAgICBsb2coJ2lzIHlvdXR1YmUnKTtcblxuICAgICAgdGhpcy5oYW5kbGVTdGF0ZUNoYW5nZSh7XG4gICAgICAgIHVybFRvVXNlLFxuICAgICAgICB1cmw6IHZhbHVlLFxuICAgICAgICBpbnZhbGlkOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChtYXRjaFZpbWVvVXJsKHZhbHVlKSkge1xuICAgICAgY29uc3QgaWQgPSB2YWx1ZS5yZXBsYWNlKC8uKnZpbWVvLmNvbVxcLyguKikvZywgJyQxJyk7XG4gICAgICBjb25zdCB1cmxUb1VzZSA9IGBodHRwczovL3BsYXllci52aW1lby5jb20vdmlkZW8vJHtpZH1gO1xuXG4gICAgICBsb2coJ2lzIHZpbWVvJyk7XG5cbiAgICAgIHRoaXMuaGFuZGxlU3RhdGVDaGFuZ2Uoe1xuICAgICAgICB1cmxUb1VzZSxcbiAgICAgICAgdXJsOiB2YWx1ZSxcbiAgICAgICAgZW5kczogbnVsbCxcbiAgICAgICAgaW52YWxpZDogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAobWF0Y2hEcml2ZVVybCh2YWx1ZSkpIHtcbiAgICAgIC8vIGh0dHBzOi8vZHJpdmUuZ29vZ2xlLmNvbS9maWxlL2QvMTFRa0tfZ1VPMDY4YW1OdlpCbTljeFpwS1g3NFdZYjhxL3ZpZXdcbiAgICAgIGNvbnN0IGlkID0gdmFsdWUucmVwbGFjZShcbiAgICAgICAgL15odHRwczpcXC9cXC9kcml2ZVxcLmdvb2dsZVxcLmNvbVxcLyg/OmZpbGVcXC9kXFwvfGRyaXZlXFwvKD86dVxcL1xcZCtcXC8pP2ZvbGRlcnNcXC98dWNcXD9pZD0pKFthLXpBLVowLTlfLV0rKVxcLy4qLyxcbiAgICAgICAgJyQxJyxcbiAgICAgICk7XG4gICAgICBjb25zdCB1cmxUb1VzZSA9IGBodHRwczovL2RyaXZlLmdvb2dsZS5jb20vZmlsZS9kLyR7aWR9L3ByZXZpZXdgO1xuXG4gICAgICBsb2coJ2lzIGdvb2dsZSBkcml2ZScpO1xuXG4gICAgICB0aGlzLmhhbmRsZVN0YXRlQ2hhbmdlKHtcbiAgICAgICAgdXJsVG9Vc2UsXG4gICAgICAgIHVybDogdmFsdWUsXG4gICAgICAgIGVuZHM6IG51bGwsXG4gICAgICAgIGludmFsaWQ6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIHVybENoYW5nZSA9IChlKSA9PiB7XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gZS50YXJnZXQgfHwge307XG4gICAgY29uc3QgeyB0eXBlIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKHR5cGUgJiYgdHlwZSA9PT0gJ2F1ZGlvJykge1xuICAgICAgdGhpcy5jaGVja0F1ZGlvKCk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmICh0eXBlICYmIHR5cGUgPT09ICd2aWRlbycpIHtcbiAgICAgIHRoaXMuY2hlY2tWaWRlbyh2YWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5oYW5kbGVTdGF0ZUNoYW5nZSh7XG4gICAgICB1cmxUb1VzZTogbnVsbCxcbiAgICAgIHVybDogbnVsbCxcbiAgICAgIGludmFsaWQ6IHRydWUsXG4gICAgfSk7XG4gIH07XG5cbiAgY2hhbmdlSGFuZGxlciA9ICh0eXBlKSA9PiAoZSkgPT4gdGhpcy5oYW5kbGVTdGF0ZUNoYW5nZSh7IFt0eXBlXTogZS50YXJnZXQudmFsdWUgfSk7XG5cbiAgaGFuZGxlRG9uZSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCB7IGhhbmRsZUNsb3NlIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHsgdGFiVmFsdWUsIGZpbGVVcGxvYWQgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgaXNJbnNlcnRVUkwgPSB0YWJWYWx1ZSA9PT0gdGFic1R5cGVNYXAuaW5zZXJ0VXJsO1xuXG4gICAgaWYgKCF2YWwpIHtcbiAgICAgIGlmIChmaWxlVXBsb2FkLnVybCkge1xuICAgICAgICB0aGlzLmhhbmRsZVJlbW92ZUZpbGUoKTtcbiAgICAgIH1cblxuICAgICAgaGFuZGxlQ2xvc2UodmFsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaXNJbnNlcnRVUkwpIHtcbiAgICAgIGNvbnN0IHsgZW5kcywgaGVpZ2h0LCB1cmwsIHVybFRvVXNlLCBmb3JtYXR0ZWRVcmwsIHN0YXJ0cywgd2lkdGggfSA9IHRoaXMuc3RhdGU7XG5cbiAgICAgIGhhbmRsZUNsb3NlKHZhbCwge1xuICAgICAgICB0YWc6ICdpZnJhbWUnLFxuICAgICAgICBlbmRzLFxuICAgICAgICBoZWlnaHQsXG4gICAgICAgIHN0YXJ0cyxcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIHVybCxcbiAgICAgICAgdXJsVG9Vc2UsXG4gICAgICAgIHNyYzogZm9ybWF0dGVkVXJsLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFmaWxlVXBsb2FkLmxvYWRpbmcpIHtcbiAgICAgIGhhbmRsZUNsb3NlKHZhbCwge1xuICAgICAgICB0YWc6ICdhdWRpbycsXG4gICAgICAgIHNyYzogZmlsZVVwbG9hZC51cmwsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGZpbGVVcGxvYWQ6IHtcbiAgICAgICAgLi4uZmlsZVVwbG9hZCxcbiAgICAgICAgc2NoZWR1bGVkOiB0cnVlLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfTtcblxuICBoYW5kbGVVcGxvYWRGaWxlID0gYXN5bmMgKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGZpbGVVcGxvYWQ6IHtcbiAgICAgICAgLi4udGhpcy5zdGF0ZS5maWxlVXBsb2FkLFxuICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgbG9hZGluZzogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBmaWxlQ2hvc2VuID0gZS50YXJnZXQuZmlsZXNbMF07XG5cbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGFVUkwgPSByZWFkZXIucmVzdWx0O1xuXG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZmlsZVVwbG9hZDoge1xuICAgICAgICAgIC4uLnRoaXMuc3RhdGUuZmlsZVVwbG9hZCxcbiAgICAgICAgICB1cmw6IGRhdGFVUkwsXG4gICAgICAgICAgbWltZVR5cGU6IGZpbGVDaG9zZW4udHlwZSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH07XG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZUNob3Nlbik7XG5cbiAgICB0aGlzLnByb3BzLnVwbG9hZFNvdW5kU3VwcG9ydC5hZGQoe1xuICAgICAgZmlsZUNob3NlbixcbiAgICAgIGRvbmU6IChlcnIsIHNyYykgPT4ge1xuICAgICAgICBsb2coJ2RvbmU6IGVycjonLCBlcnIpO1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgZmlsZVVwbG9hZDoge1xuICAgICAgICAgICAgICAuLi50aGlzLnN0YXRlLmZpbGVVcGxvYWQsXG4gICAgICAgICAgICAgIHNjaGVkdWxlZDogZmFsc2UsXG4gICAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICBlcnJvcjogZXJyLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGZpbGVVcGxvYWQgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGNvbnN0IGNhbGxiYWNrID0gZmlsZVVwbG9hZCAmJiBmaWxlVXBsb2FkLnNjaGVkdWxlZCA/IHRoaXMuaGFuZGxlRG9uZS5iaW5kKHRoaXMsIHRydWUpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoXG4gICAgICAgICAge1xuICAgICAgICAgICAgZmlsZVVwbG9hZDoge1xuICAgICAgICAgICAgICAuLi5maWxlVXBsb2FkLFxuICAgICAgICAgICAgICBzY2hlZHVsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgdXJsOiBzcmMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2FsbGJhY2ssXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9O1xuXG4gIGhhbmRsZVJlbW92ZUZpbGUgPSBhc3luYyAoKSA9PiB7XG4gICAgdGhpcy5wcm9wcy51cGxvYWRTb3VuZFN1cHBvcnQuZGVsZXRlKHRoaXMuc3RhdGUuZmlsZVVwbG9hZC51cmwsIChlcnIpID0+IHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgZmlsZVVwbG9hZDoge1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZS5maWxlVXBsb2FkLFxuICAgICAgICAgICAgZXJyb3I6IGVycixcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIHdlIHNob3VsZCBwdXQgaXQgaW5zaWRlIHVwbG9hZFNvdW5kU3VwcG9ydC5kZWxldGUgYnV0IHdlIGNhbiBsZWF2ZSBpdCBoZXJlIGZvciB0ZXN0aW5nIHB1cnBvc2VzXG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBmaWxlVXBsb2FkOiB7XG4gICAgICAgIC4uLnRoaXMuc3RhdGUuZmlsZVVwbG9hZCxcbiAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgIHVybDogJycsXG4gICAgICAgIG1pbWVUeXBlOiAnJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgY2xhc3Nlcywgb3BlbiwgZGlzYWJsZVBvcnRhbCwgdHlwZSwgZWRpdCwgdXBsb2FkU291bmRTdXBwb3J0IH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHtcbiAgICAgIGVuZHMsXG4gICAgICBoZWlnaHQsXG4gICAgICBpbnZhbGlkLFxuICAgICAgc3RhcnRzLFxuICAgICAgd2lkdGgsXG4gICAgICB1cmwsXG4gICAgICBtaW1lVHlwZSxcbiAgICAgIGZvcm1hdHRlZFVybCxcbiAgICAgIHVwZGF0aW5nLFxuICAgICAgdGFiVmFsdWUsXG4gICAgICBmaWxlVXBsb2FkLFxuICAgIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IGlzWW91dHViZSA9IG1hdGNoWW91dHViZVVybCh1cmwpO1xuICAgIGNvbnN0IGlzSW5zZXJ0VVJMID0gdGFiVmFsdWUgPT09IHRhYnNUeXBlTWFwLmluc2VydFVybDtcbiAgICBjb25zdCBpc1VwbG9hZE1lZGlhID0gdGFiVmFsdWUgPT09IHRhYnNUeXBlTWFwLnVwbG9hZEZpbGU7XG4gICAgY29uc3Qgc3VibWl0SXNEaXNhYmxlZCA9IGlzSW5zZXJ0VVJMXG4gICAgICA/IGludmFsaWQgfHwgdXJsID09PSBudWxsIHx8IHVybCA9PT0gdW5kZWZpbmVkXG4gICAgICA6ICFmaWxlVXBsb2FkLnVybCB8fCBmaWxlVXBsb2FkLnNjaGVkdWxlZDtcbiAgICBjb25zdCBzaG93VXBsb2FkRmlsZSA9IHVwbG9hZFNvdW5kU3VwcG9ydD8uYWRkICYmIHVwbG9hZFNvdW5kU3VwcG9ydD8uZGVsZXRlICYmIHR5cGUgIT09ICd2aWRlbyc7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPERpYWxvZ1xuICAgICAgICBjbGFzc2VzPXt7XG4gICAgICAgICAgcGFwZXI6IGNsYXNzZXMucGFwZXIsXG4gICAgICAgIH19XG4gICAgICAgIGRpc2FibGVQb3J0YWw9e2Rpc2FibGVQb3J0YWx9XG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHRoaXMuaGFuZGxlRG9uZShmYWxzZSl9XG4gICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImZvcm0tZGlhbG9nLXRpdGxlXCJcbiAgICAgID5cbiAgICAgICAgPERpYWxvZ1RpdGxlIGlkPVwiZm9ybS1kaWFsb2ctdGl0bGVcIj5JbnNlcnQge3R5cGVNYXBbdHlwZV19PC9EaWFsb2dUaXRsZT5cbiAgICAgICAgPERpYWxvZ0NvbnRlbnQ+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLnJvd30+XG4gICAgICAgICAgICAgIDxNdWlUYWJzXG4gICAgICAgICAgICAgICAgaW5kaWNhdG9yQ29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFiVmFsdWV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhldmVudCwgdmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyB0YWJWYWx1ZTogdmFsdWUgfSk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkRmlsZSA/IDxNdWlUYWIgdmFsdWU9e3RhYnNUeXBlTWFwLnVwbG9hZEZpbGV9IGxhYmVsPVwiVXBsb2FkIGZpbGVcIiAvPiA6IG51bGx9XG4gICAgICAgICAgICAgICAgPE11aVRhYlxuICAgICAgICAgICAgICAgICAgdmFsdWU9e3RhYnNUeXBlTWFwLmluc2VydFVybH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXt0eXBlID09PSAndmlkZW8nID8gJ0luc2VydCBZb3VUdWJlLCBWaW1lbywgb3IgR29vZ2xlIERyaXZlIFVSTCcgOiAnSW5zZXJ0IFNvdW5kQ2xvdWQgVVJMJ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L011aVRhYnM+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIHtpc0luc2VydFVSTCAmJiAoXG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgICAgICAgYXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICBlcnJvcj17aW52YWxpZH1cbiAgICAgICAgICAgICAgICAgIGhlbHBlclRleHQ9e2ludmFsaWQgPyAnSW52YWxpZCBVUkwnIDogJyd9XG4gICAgICAgICAgICAgICAgICBtYXJnaW49XCJkZW5zZVwiXG4gICAgICAgICAgICAgICAgICBpZD1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgbGFiZWw9XCJVUkxcIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2BQYXN0ZSBVUkwgb2YgJHt0eXBlfS4uLmB9XG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy51cmxDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17dXJsfVxuICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB7dHlwZSA9PT0gJ3ZpZGVvJyAmJiAoXG4gICAgICAgICAgICAgICAgICA8RGlhbG9nQ29udGVudFxuICAgICAgICAgICAgICAgICAgICBjbGFzc2VzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgcm9vdDogY2xhc3Nlcy5wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8RGlhbG9nQ29udGVudFRleHQ+VmlkZW8gUHJvcGVydGllczwvRGlhbG9nQ29udGVudFRleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICBtYXJnaW49XCJkZW5zZVwiXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ3aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJXaWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJXaWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3dpZHRofVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmNoYW5nZUhhbmRsZXIoJ3dpZHRoJyl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICBtYXJnaW49XCJkZW5zZVwiXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiSGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2hlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5jaGFuZ2VIYW5kbGVyKCdoZWlnaHQnKX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvRGlhbG9nQ29udGVudD5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtmb3JtYXR0ZWRVcmwgJiYgKFxuICAgICAgICAgICAgICAgICAgPGlmcmFtZVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD17d2lkdGh9XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD17aGVpZ2h0fVxuICAgICAgICAgICAgICAgICAgICBzcmM9e2Zvcm1hdHRlZFVybH1cbiAgICAgICAgICAgICAgICAgICAgZnJhbWVCb3JkZXI9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgYWxsb3c9XCJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgY2xpcGJvYXJkLXdyaXRlOyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlXCJcbiAgICAgICAgICAgICAgICAgICAgYWxsb3dGdWxsU2NyZWVuXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge3R5cGUgPT09ICd2aWRlbycgJiYgKGZvcm1hdHRlZFVybCB8fCB1cGRhdGluZykgJiYgIWludmFsaWQgJiYgKFxuICAgICAgICAgICAgICAgICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICAgICAgICAgICA8RGlhbG9nQ29udGVudFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXM9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb3Q6IGNsYXNzZXMucHJvcGVydGllcyxcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW49XCJkZW5zZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInN0YXJ0c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIlN0YXJ0c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU3RhcnRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtzdGFydHN9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5jaGFuZ2VIYW5kbGVyKCdzdGFydHMnKX1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIHtpc1lvdXR1YmUgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luPVwiZGVuc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVuZHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIkVuZHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbmRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2VuZHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmNoYW5nZUhhbmRsZXIoJ2VuZHMnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9EaWFsb2dDb250ZW50PlxuICAgICAgICAgICAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7aXNVcGxvYWRNZWRpYSAmJiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLnVwbG9hZElucHV0fT5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAge2ZpbGVVcGxvYWQudXJsID8gKFxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLnJvd30+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXVkaW8gY29udHJvbHM9XCJjb250cm9sc1wiIGNvbnRyb2xzTGlzdD1cIm5vZG93bmxvYWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSB0eXBlPXttaW1lVHlwZX0gc3JjPXtmaWxlVXBsb2FkLnVybH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXVkaW8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZGVsZXRlXCIgY2xhc3NOYW1lPXtjbGFzc2VzLmRlbGV0ZUljb259IG9uQ2xpY2s9e3RoaXMuaGFuZGxlUmVtb3ZlRmlsZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBY3Rpb25EZWxldGUgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICB7IWZpbGVVcGxvYWQuc2NoZWR1bGVkICYmIGZpbGVVcGxvYWQubG9hZGluZyA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJzdWJoZWFkaW5nXCI+TG9hZGluZy4uLjwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZVVwbG9hZC5zY2hlZHVsZWQgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwic3ViaGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBXYWl0aW5nIGZvciBVcGxvYWQgdG8gZmluaXNoLCB0aGVuIGluc2VydGluZyBpdGVtLi4uXG4gICAgICAgICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgKSA6ICFmaWxlVXBsb2FkLmxvYWRpbmcgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhY2NlcHQ9XCJhdWRpby8qXCIgY2xhc3NOYW1lPXtjbGFzc2VzLmlucHV0fSBvbkNoYW5nZT17dGhpcy5oYW5kbGVVcGxvYWRGaWxlfSB0eXBlPVwiZmlsZVwiIC8+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgIHshIWZpbGVVcGxvYWQuZXJyb3IgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeSBjbGFzc05hbWU9e2NsYXNzZXMuZXJyb3J9IHZhcmlhbnQ9XCJjYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVVcGxvYWQuZXJyb3J9XG4gICAgICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9EaWFsb2dDb250ZW50PlxuICAgICAgICA8RGlhbG9nQWN0aW9ucz5cbiAgICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9eygpID0+IHRoaXMuaGFuZGxlRG9uZShmYWxzZSl9IGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgQ2FuY2VsXG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPEJ1dHRvbiBkaXNhYmxlZD17c3VibWl0SXNEaXNhYmxlZH0gb25DbGljaz17KCkgPT4gdGhpcy5oYW5kbGVEb25lKHRydWUpfSBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICAgIHtlZGl0ID8gJ1VwZGF0ZScgOiAnSW5zZXJ0J31cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9EaWFsb2dBY3Rpb25zPlxuICAgICAgPC9EaWFsb2c+XG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBzdHlsZXMgPSAodGhlbWUpID0+ICh7XG4gIHBhcGVyOiB7XG4gICAgbWluV2lkdGg6ICc1MDBweCcsXG4gIH0sXG4gIHByb3BlcnRpZXM6IHtcbiAgICBwYWRkaW5nOiAwLFxuICB9LFxuICByb3c6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ3NwYWNlLWJldHdlZW4nLFxuICB9LFxuICByb3dJdGVtOiB7XG4gICAgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDEuNSxcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgfSxcbiAgYWN0aXZlOiB7XG4gICAgY29sb3I6IGNvbG9yLnByaW1hcnkoKSxcbiAgICBib3JkZXJCb3R0b206IGAycHggc29saWQgJHtjb2xvci5wcmltYXJ5KCl9YCxcbiAgfSxcbiAgdXBsb2FkSW5wdXQ6IHtcbiAgICBtYXJnaW5Ub3A6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDEuNSxcbiAgfSxcbiAgZXJyb3I6IHtcbiAgICBtYXJnaW5Ub3A6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDEuNSxcbiAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS5lcnJvci5tYWluLFxuICB9LFxuICBkZWxldGVJY29uOiB7XG4gICAgbWFyZ2luTGVmdDogdGhlbWUuc3BhY2luZy51bml0ICogMS41LFxuICB9LFxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhTdHlsZXMoc3R5bGVzKShNZWRpYURpYWxvZyk7XG4iXX0=
|
|
709
|
+
//# sourceMappingURL=media-dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/plugins/media/media-dialog.js"],"names":["log","matchYoutubeUrl","url","p","match","matchVimeoUrl","test","matchDriveUrl","matchSoundCloudUrl","regexp","makeApiRequest","Promise","resolve","fetch","then","response","json","d","document","createElement","innerHTML","html","iframe","querySelector","src","err","typeMap","video","audio","tabsTypeMap","uploadFile","insertUrl","MediaDialog","props","state","urlToUse","starts","ends","isYoutube","isVimeo","formattedUrl","params","paramName","paramStart","push","length","join","callback","setState","updating","newState","formatUrl","value","handleStateChange","invalid","regExp","id","replace","e","target","type","checkAudio","checkVideo","val","handleClose","tabValue","fileUpload","isInsertURL","handleRemoveFile","height","width","tag","loading","scheduled","preventDefault","error","fileChosen","files","reader","FileReader","onload","dataURL","result","mimeType","readAsDataURL","uploadSoundSupport","add","done","console","handleDone","bind","undefined","showUploadFile","urlChange","classes","open","disablePortal","edit","isUploadMedia","submitIsDisabled","paper","row","event","root","properties","changeHandler","uploadInput","deleteIcon","input","handleUploadFile","React","Component","PropTypes","object","isRequired","bool","func","shape","string","number","styles","theme","minWidth","padding","display","flexDirection","rowItem","marginRight","spacing","unit","cursor","active","color","primary","borderBottom","marginTop","palette","main","marginLeft"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,6CAAN,CAAZ;;AAEA,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,CAACC,GAAD,EAAS;AAC/B,MAAI,CAACA,GAAL,EAAU;AACR,WAAO,KAAP;AACD;;AAED,MAAMC,CAAC,GAAG,0HAAV;;AACA,MAAID,GAAG,CAACE,KAAJ,CAAUD,CAAV,CAAJ,EAAkB;AAChB,WAAOD,GAAG,CAACE,KAAJ,CAAUD,CAAV,EAAa,CAAb,CAAP;AACD;;AACD,SAAO,KAAP;AACD,CAVD;;AAYA,IAAME,aAAa,GAAG,SAAhBA,aAAgB,CAACH,GAAD;AAAA,SACpBA,GAAG,IACH,8HAA8HI,IAA9H,CACEJ,GADF,CAFoB;AAAA,CAAtB;;AAMA,IAAMK,aAAa,GAAG,SAAhBA,aAAgB,CAACL,GAAD;AAAA,SACpBA,GAAG,IAAI,qGAAqGI,IAArG,CAA0GJ,GAA1G,CADa;AAAA,CAAtB;;AAGA,IAAMM,kBAAkB,GAAG,SAArBA,kBAAqB,CAACN,GAAD,EAAS;AAClC,MAAI,CAACA,GAAL,EAAU;AACR,WAAO,KAAP;AACD;;AAED,MAAMO,MAAM,GAAG,8CAAf;AACA,SAAOP,GAAG,CAACE,KAAJ,CAAUK,MAAV,KAAqBP,GAAG,CAACE,KAAJ,CAAUK,MAAV,EAAkB,CAAlB,CAA5B;AACD,CAPD;;AASA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAACR,GAAD,EAAS;AAC9B,SAAO,IAAIS,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9B,QAAI;AACFC,MAAAA,KAAK,yDAAkDX,GAAlD,EAAL,CACGY,IADH,CACQ,UAACC,QAAD;AAAA,eAAcA,QAAQ,CAACC,IAAT,EAAd;AAAA,OADR,EAEGF,IAFH,CAEQ,UAACE,IAAD,EAAU;AACd,YAAMC,CAAC,GAAGC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAV;AAEAF,QAAAA,CAAC,CAACG,SAAF,GAAcJ,IAAI,CAACK,IAAnB;AAEA,YAAMC,MAAM,GAAGL,CAAC,CAACM,aAAF,CAAgB,QAAhB,CAAf;AAEAX,QAAAA,OAAO,CAACU,MAAM,CAACE,GAAR,CAAP;AACD,OAVH,WAWS,UAACC,GAAD,EAAS;AACdb,QAAAA,OAAO,CAAC,EAAD,CAAP;AACAZ,QAAAA,GAAG,CAACyB,GAAD,CAAH;AACD,OAdH;AAeD,KAhBD,CAgBE,OAAOA,GAAP,EAAY;AACZb,MAAAA,OAAO,CAAC,EAAD,CAAP;AACD;AACF,GApBM,CAAP;AAqBD,CAtBD;;AAwBA,IAAMc,OAAO,GAAG;AACdC,EAAAA,KAAK,EAAE,OADO;AAEdC,EAAAA,KAAK,EAAE;AAFO,CAAhB;AAKA,IAAMC,WAAW,GAAG;AAClBC,EAAAA,UAAU,EAAE,aADM;AAElBC,EAAAA,SAAS,EAAE;AAFO,CAApB;;IAKaC,W;;;;;AAqBX,uBAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;AADiB,kGAqCP,YAAM;AAChB,wBAAwC,MAAKC,KAA7C;AAAA,UAAQhC,GAAR,eAAQA,GAAR;AAAA,UAAaiC,QAAb,eAAaA,QAAb;AAAA,UAAuBC,MAAvB,eAAuBA,MAAvB;AAAA,UAA+BC,IAA/B,eAA+BA,IAA/B;AACA,UAAMC,SAAS,GAAGrC,eAAe,CAACC,GAAD,CAAjC;AACA,UAAMqC,OAAO,GAAGlC,aAAa,CAACH,GAAD,CAA7B;AACA,UAAIsC,YAAY,GAAGL,QAAnB;;AAEA,UAAI,CAACG,SAAS,IAAIC,OAAd,KAA0BJ,QAA9B,EAAwC;AACtC,YAAMM,MAAM,GAAG,EAAf;AAEA,YAAIC,SAAJ;AACA,YAAIC,UAAJ;;AAEA,gBAAQ,IAAR;AACE,eAAKJ,OAAL;AACEG,YAAAA,SAAS,GAAG,GAAZ;AACAC,YAAAA,UAAU,GAAG,GAAb;AACA;;AACF,eAAKL,SAAL;AACEI,YAAAA,SAAS,GAAG,OAAZ;AACAC,YAAAA,UAAU,GAAG,GAAb;AACA;;AACF;AACED,YAAAA,SAAS,GAAG,OAAZ;AACAC,YAAAA,UAAU,GAAG,GAAb;AAXJ;;AAcA,YAAIP,MAAJ,EAAY;AACVK,UAAAA,MAAM,CAACG,IAAP,WAAeF,SAAf,cAA4BN,MAA5B;AACD;;AAED,YAAIC,IAAJ,EAAU;AACRI,UAAAA,MAAM,CAACG,IAAP,eAAmBP,IAAnB;AACD;;AAEDG,QAAAA,YAAY,aAAML,QAAN,SAAiBM,MAAM,CAACI,MAAP,GAAgBF,UAAhB,GAA6B,EAA9C,SAAmDF,MAAM,CAACK,IAAP,CAAY,GAAZ,CAAnD,CAAZ;AACD;;AAED,UAAMC,QAAQ,GAAG,SAAXA,QAAW;AAAA,eAAM,MAAKC,QAAL,CAAc;AAAER,UAAAA,YAAY,EAAZA,YAAF;AAAgBS,UAAAA,QAAQ,EAAE;AAA1B,SAAd,CAAN;AAAA,OAAjB;;AAEA,YAAKD,QAAL,CAAc;AAAER,QAAAA,YAAY,EAAE,IAAhB;AAAsBS,QAAAA,QAAQ,EAAE;AAAhC,OAAd,EAAsDF,QAAtD;AACD,KA7EkB;AAAA,0GA+EC,UAACG,QAAD;AAAA,aAAc,MAAKF,QAAL,CAAcE,QAAd,EAAwB,MAAKC,SAA7B,CAAd;AAAA,KA/ED;AAAA,mGAiFN,UAACC,KAAD,EAAW;AACtB,UAAI5C,kBAAkB,CAAC4C,KAAD,CAAtB,EAA+B;AAC7B1C,QAAAA,cAAc,CAAC0C,KAAD,CAAd,CACGtC,IADH,CACQ,UAACqB,QAAD,EAAc;AAClB,gBAAKkB,iBAAL,CAAuB;AACrBlB,YAAAA,QAAQ,EAARA,QADqB;AAErBmB,YAAAA,OAAO,EAAE,CAACnB,QAFW;AAGrBjC,YAAAA,GAAG,EAAEkD;AAHgB,WAAvB;AAKD,SAPH,WAQSpD,GART;AASD;AACF,KA7FkB;AAAA,mGA+FN,UAACoD,KAAD,EAAW;AACtB,UAAInD,eAAe,CAACmD,KAAD,CAAnB,EAA4B;AAC1B,YAAMG,MAAM,GAAG,+DAAf;AACA,YAAMnD,KAAK,GAAGgD,KAAK,CAAChD,KAAN,CAAYmD,MAAZ,CAAd;AACA,YAAMC,EAAE,GAAGpD,KAAK,CAAC,CAAD,CAAhB;AACA,YAAM+B,QAAQ,uCAAgCqB,EAAhC,CAAd;AAEAxD,QAAAA,GAAG,CAAC,YAAD,CAAH;;AAEA,cAAKqD,iBAAL,CAAuB;AACrBlB,UAAAA,QAAQ,EAARA,QADqB;AAErBjC,UAAAA,GAAG,EAAEkD,KAFgB;AAGrBE,UAAAA,OAAO,EAAE;AAHY,SAAvB;AAKD;;AAED,UAAIjD,aAAa,CAAC+C,KAAD,CAAjB,EAA0B;AACxB,YAAMI,GAAE,GAAGJ,KAAK,CAACK,OAAN,CAAc,oBAAd,EAAoC,IAApC,CAAX;;AACA,YAAMtB,UAAQ,4CAAqCqB,GAArC,CAAd;;AAEAxD,QAAAA,GAAG,CAAC,UAAD,CAAH;;AAEA,cAAKqD,iBAAL,CAAuB;AACrBlB,UAAAA,QAAQ,EAARA,UADqB;AAErBjC,UAAAA,GAAG,EAAEkD,KAFgB;AAGrBf,UAAAA,IAAI,EAAE,IAHe;AAIrBiB,UAAAA,OAAO,EAAE;AAJY,SAAvB;AAMD;;AAED,UAAI/C,aAAa,CAAC6C,KAAD,CAAjB,EAA0B;AACxB;AACA,YAAMI,IAAE,GAAGJ,KAAK,CAACK,OAAN,CACT,wGADS,EAET,IAFS,CAAX;;AAIA,YAAMtB,UAAQ,6CAAsCqB,IAAtC,aAAd;;AAEAxD,QAAAA,GAAG,CAAC,iBAAD,CAAH;;AAEA,cAAKqD,iBAAL,CAAuB;AACrBlB,UAAAA,QAAQ,EAARA,UADqB;AAErBjC,UAAAA,GAAG,EAAEkD,KAFgB;AAGrBf,UAAAA,IAAI,EAAE,IAHe;AAIrBiB,UAAAA,OAAO,EAAE;AAJY,SAAvB;AAMD;AACF,KA9IkB;AAAA,kGAgJP,UAACI,CAAD,EAAO;AACjB,iBAAkBA,CAAC,CAACC,MAAF,IAAY,EAA9B;AAAA,UAAQP,KAAR,QAAQA,KAAR;;AACA,UAAQQ,IAAR,GAAiB,MAAK3B,KAAtB,CAAQ2B,IAAR;;AAEA,UAAIA,IAAI,IAAIA,IAAI,KAAK,OAArB,EAA8B;AAC5B,cAAKC,UAAL;;AACA;AACD,OAHD,MAGO,IAAID,IAAI,IAAIA,IAAI,KAAK,OAArB,EAA8B;AACnC,cAAKE,UAAL,CAAgBV,KAAhB;;AACA;AACD;;AAED,YAAKC,iBAAL,CAAuB;AACrBlB,QAAAA,QAAQ,EAAE,IADW;AAErBjC,QAAAA,GAAG,EAAE,IAFgB;AAGrBoD,QAAAA,OAAO,EAAE;AAHY,OAAvB;AAKD,KAjKkB;AAAA,sGAmKH,UAACM,IAAD;AAAA,aAAU,UAACF,CAAD;AAAA,eAAO,MAAKL,iBAAL,sCAA0BO,IAA1B,EAAiCF,CAAC,CAACC,MAAF,CAASP,KAA1C,EAAP;AAAA,OAAV;AAAA,KAnKG;AAAA,mGAqKN,UAACW,GAAD,EAAS;AACpB,UAAQC,WAAR,GAAwB,MAAK/B,KAA7B,CAAQ+B,WAAR;AACA,yBAAiC,MAAK9B,KAAtC;AAAA,UAAQ+B,QAAR,gBAAQA,QAAR;AAAA,UAAkBC,UAAlB,gBAAkBA,UAAlB;AACA,UAAMC,WAAW,GAAGF,QAAQ,KAAKpC,WAAW,CAACE,SAA7C;;AAEA,UAAI,CAACgC,GAAL,EAAU;AACR,YAAIG,UAAU,CAAChE,GAAf,EAAoB;AAClB,gBAAKkE,gBAAL;AACD;;AAEDJ,QAAAA,WAAW,CAACD,GAAD,CAAX;AACA;AACD;;AAED,UAAII,WAAJ,EAAiB;AACf,2BAAqE,MAAKjC,KAA1E;AAAA,YAAQG,IAAR,gBAAQA,IAAR;AAAA,YAAcgC,MAAd,gBAAcA,MAAd;AAAA,YAAsBnE,GAAtB,gBAAsBA,GAAtB;AAAA,YAA2BiC,QAA3B,gBAA2BA,QAA3B;AAAA,YAAqCK,YAArC,gBAAqCA,YAArC;AAAA,YAAmDJ,MAAnD,gBAAmDA,MAAnD;AAAA,YAA2DkC,KAA3D,gBAA2DA,KAA3D;AAEAN,QAAAA,WAAW,CAACD,GAAD,EAAM;AACfQ,UAAAA,GAAG,EAAE,QADU;AAEflC,UAAAA,IAAI,EAAJA,IAFe;AAGfgC,UAAAA,MAAM,EAANA,MAHe;AAIfjC,UAAAA,MAAM,EAANA,MAJe;AAKfkC,UAAAA,KAAK,EAALA,KALe;AAMfpE,UAAAA,GAAG,EAAHA,GANe;AAOfiC,UAAAA,QAAQ,EAARA,QAPe;AAQfX,UAAAA,GAAG,EAAEgB;AARU,SAAN,CAAX;AAUA;AACD;;AAED,UAAI,CAAC0B,UAAU,CAACM,OAAhB,EAAyB;AACvBR,QAAAA,WAAW,CAACD,GAAD,EAAM;AACfQ,UAAAA,GAAG,EAAE,OADU;AAEf/C,UAAAA,GAAG,EAAE0C,UAAU,CAAChE;AAFD,SAAN,CAAX;AAIA;AACD;;AAED,YAAK8C,QAAL,CAAc;AACZkB,QAAAA,UAAU,kCACLA,UADK;AAERO,UAAAA,SAAS,EAAE;AAFH;AADE,OAAd;AAMD,KAjNkB;AAAA;AAAA,gGAmNA,iBAAOf,CAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AACjBA,gBAAAA,CAAC,CAACgB,cAAF;;AAEA,sBAAK1B,QAAL,CAAc;AACZkB,kBAAAA,UAAU,kCACL,MAAKhC,KAAL,CAAWgC,UADN;AAERS,oBAAAA,KAAK,EAAE,IAFC;AAGRH,oBAAAA,OAAO,EAAE;AAHD;AADE,iBAAd;;AAQMI,gBAAAA,UAXW,GAWElB,CAAC,CAACC,MAAF,CAASkB,KAAT,CAAe,CAAf,CAXF;AAaXC,gBAAAA,MAbW,GAaF,IAAIC,UAAJ,EAbE;;AAejBD,gBAAAA,MAAM,CAACE,MAAP,GAAgB,YAAM;AACpB,sBAAMC,OAAO,GAAGH,MAAM,CAACI,MAAvB;;AAEA,wBAAKlC,QAAL,CAAc;AACZkB,oBAAAA,UAAU,kCACL,MAAKhC,KAAL,CAAWgC,UADN;AAERhE,sBAAAA,GAAG,EAAE+E,OAFG;AAGRE,sBAAAA,QAAQ,EAAEP,UAAU,CAAChB;AAHb;AADE,mBAAd;AAOD,iBAVD;;AAWAkB,gBAAAA,MAAM,CAACM,aAAP,CAAqBR,UAArB;;AAEA,sBAAK3C,KAAL,CAAWoD,kBAAX,CAA8BC,GAA9B,CAAkC;AAChCV,kBAAAA,UAAU,EAAVA,UADgC;AAEhCW,kBAAAA,IAAI,EAAE,cAAC9D,GAAD,EAAMD,GAAN,EAAc;AAClBxB,oBAAAA,GAAG,CAAC,YAAD,EAAeyB,GAAf,CAAH;;AACA,wBAAIA,GAAJ,EAAS;AACP;AACA+D,sBAAAA,OAAO,CAACxF,GAAR,CAAYyB,GAAZ;;AACA,4BAAKuB,QAAL,CAAc;AACZkB,wBAAAA,UAAU,kCACL,MAAKhC,KAAL,CAAWgC,UADN;AAERO,0BAAAA,SAAS,EAAE,KAFH;AAGRD,0BAAAA,OAAO,EAAE,KAHD;AAIRG,0BAAAA,KAAK,EAAElD;AAJC;AADE,uBAAd;;AAQA;AACD;;AAED,wBAAQyC,UAAR,GAAuB,MAAKhC,KAA5B,CAAQgC,UAAR;AACA,wBAAMnB,QAAQ,GAAGmB,UAAU,IAAIA,UAAU,CAACO,SAAzB,GAAqC,MAAKgB,UAAL,CAAgBC,IAAhB,iDAA2B,IAA3B,CAArC,GAAwEC,SAAzF;;AAEA,0BAAK3C,QAAL,CACE;AACEkB,sBAAAA,UAAU,kCACLA,UADK;AAERO,wBAAAA,SAAS,EAAE,KAFH;AAGRD,wBAAAA,OAAO,EAAE,KAHD;AAIRtE,wBAAAA,GAAG,EAAEsB;AAJG;AADZ,qBADF,EASEuB,QATF;AAWD;AAhC+B,iBAAlC;;AA5BiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAnNA;;AAAA;AAAA;AAAA;AAAA;AAAA,oMAmRA;AAAA;AAAA;AAAA;AAAA;AACjB,oBAAKd,KAAL,CAAWoD,kBAAX,WAAqC,MAAKnD,KAAL,CAAWgC,UAAX,CAAsBhE,GAA3D,EAAgE,UAACuB,GAAD,EAAS;AACvE,oBAAIA,GAAJ,EAAS;AACP;AACA+D,kBAAAA,OAAO,CAACxF,GAAR,CAAYyB,GAAZ;;AACA,wBAAKuB,QAAL,CAAc;AACZkB,oBAAAA,UAAU,kCACL,MAAKhC,KAAL,CAAWgC,UADN;AAERS,sBAAAA,KAAK,EAAElD;AAFC;AADE,mBAAd;AAMD;AACF,eAXD,EADiB,CAcjB;;;AACA,oBAAKuB,QAAL,CAAc;AACZkB,gBAAAA,UAAU,kCACL,MAAKhC,KAAL,CAAWgC,UADN;AAERM,kBAAAA,OAAO,EAAE,KAFD;AAGRtE,kBAAAA,GAAG,EAAE,EAHG;AAIRiF,kBAAAA,QAAQ,EAAE;AAJF;AADE,eAAd;;AAfiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAnRA;AAGjB,QAAQ9C,KAAR,GAAsFJ,KAAtF,CAAQI,IAAR;AAAA,QAAcgC,OAAd,GAAsFpC,KAAtF,CAAcoC,MAAd;AAAA,QAAsB7C,IAAtB,GAAsFS,KAAtF,CAAsBT,GAAtB;AAAA,QAA2BY,OAA3B,GAAsFH,KAAtF,CAA2BG,MAA3B;AAAA,QAAmCwB,KAAnC,GAAsF3B,KAAtF,CAAmC2B,IAAnC;AAAA,QAAyCyB,kBAAzC,GAAsFpD,KAAtF,CAAyCoD,kBAAzC;AAAA,QAA6DnF,IAA7D,GAAsF+B,KAAtF,CAA6D/B,GAA7D;AAAA,QAAkEiC,SAAlE,GAAsFF,KAAtF,CAAkEE,QAAlE;AAAA,QAA4EmC,MAA5E,GAAsFrC,KAAtF,CAA4EqC,KAA5E;AACA,QAAMsB,cAAc,GAAG,CAAAP,kBAAkB,SAAlB,IAAAA,kBAAkB,WAAlB,YAAAA,kBAAkB,CAAEC,GAApB,MAA2BD,kBAA3B,aAA2BA,kBAA3B,uBAA2BA,kBAAkB,UAA7C,KAAyDzB,KAAI,KAAK,OAAzF;AAEA,UAAK1B,KAAL,GAAa;AACXG,MAAAA,IAAI,EAAEA,KAAI,IAAI,CADH;AAEXnC,MAAAA,GAAG,EAAEA,IAFM;AAGXiC,MAAAA,QAAQ,EAAEA,SAHC;AAIXK,MAAAA,YAAY,EAAEhB,IAJH;AAKX6C,MAAAA,MAAM,EAAEA,OAAM,IAAI,GALP;AAMXf,MAAAA,OAAO,EAAE,KANE;AAOXlB,MAAAA,MAAM,EAAEA,OAAM,IAAI,CAPP;AAQXkC,MAAAA,KAAK,EAAEA,MAAK,IAAI,GARL;AASX;AACAL,MAAAA,QAAQ,EAAE2B,cAAc,GAAG/D,WAAW,CAACC,UAAf,GAA4BD,WAAW,CAACE,SAVrD;AAWXmC,MAAAA,UAAU,EAAE;AACVS,QAAAA,KAAK,EAAE,IADG;AAEVH,QAAAA,OAAO,EAAE,KAFC;AAGVC,QAAAA,SAAS,EAAE,KAHD;AAIVvE,QAAAA,GAAG,EAAE,EAJK;AAKViF,QAAAA,QAAQ,EAAE;AALA;AAXD,KAAb;AANiB;AAyBlB;;;;WAED,6BAAoB;AAClB,UAAI,KAAKlD,KAAL,CAAW/B,GAAf,EAAoB;AAClB,aAAK2F,SAAL,CAAe;AACblC,UAAAA,MAAM,EAAE;AACNP,YAAAA,KAAK,EAAE,KAAKnB,KAAL,CAAW/B;AADZ;AADK,SAAf;AAKD;AACF;;;WAyQD,kBAAS;AAAA;;AACP,wBAAyE,KAAK+B,KAA9E;AAAA,UAAQ6D,OAAR,eAAQA,OAAR;AAAA,UAAiBC,IAAjB,eAAiBA,IAAjB;AAAA,UAAuBC,aAAvB,eAAuBA,aAAvB;AAAA,UAAsCpC,IAAtC,eAAsCA,IAAtC;AAAA,UAA4CqC,IAA5C,eAA4CA,IAA5C;AAAA,UAAkDZ,kBAAlD,eAAkDA,kBAAlD;AACA,yBAYI,KAAKnD,KAZT;AAAA,UACEG,IADF,gBACEA,IADF;AAAA,UAEEgC,MAFF,gBAEEA,MAFF;AAAA,UAGEf,OAHF,gBAGEA,OAHF;AAAA,UAIElB,MAJF,gBAIEA,MAJF;AAAA,UAKEkC,KALF,gBAKEA,KALF;AAAA,UAMEpE,GANF,gBAMEA,GANF;AAAA,UAOEiF,QAPF,gBAOEA,QAPF;AAAA,UAQE3C,YARF,gBAQEA,YARF;AAAA,UASES,QATF,gBASEA,QATF;AAAA,UAUEgB,QAVF,gBAUEA,QAVF;AAAA,UAWEC,UAXF,gBAWEA,UAXF;AAaA,UAAM5B,SAAS,GAAGrC,eAAe,CAACC,GAAD,CAAjC;AACA,UAAMiE,WAAW,GAAGF,QAAQ,KAAKpC,WAAW,CAACE,SAA7C;AACA,UAAMmE,aAAa,GAAGjC,QAAQ,KAAKpC,WAAW,CAACC,UAA/C;AACA,UAAMqE,gBAAgB,GAAGhC,WAAW,GAChCb,OAAO,IAAIpD,GAAG,KAAK,IAAnB,IAA2BA,GAAG,KAAKyF,SADH,GAEhC,CAACzB,UAAU,CAAChE,GAAZ,IAAmBgE,UAAU,CAACO,SAFlC;AAGA,UAAMmB,cAAc,GAAG,CAAAP,kBAAkB,SAAlB,IAAAA,kBAAkB,WAAlB,YAAAA,kBAAkB,CAAEC,GAApB,MAA2BD,kBAA3B,aAA2BA,kBAA3B,uBAA2BA,kBAAkB,UAA7C,KAAyDzB,IAAI,KAAK,OAAzF;AAEA,0BACE,gCAAC,kBAAD;AACE,QAAA,OAAO,EAAE;AACPwC,UAAAA,KAAK,EAAEN,OAAO,CAACM;AADR,SADX;AAIE,QAAA,aAAa,EAAEJ,aAJjB;AAKE,QAAA,IAAI,EAAED,IALR;AAME,QAAA,OAAO,EAAE;AAAA,iBAAM,MAAI,CAACN,UAAL,CAAgB,KAAhB,CAAN;AAAA,SANX;AAOE,2BAAgB;AAPlB,sBASE,gCAAC,uBAAD;AAAa,QAAA,EAAE,EAAC;AAAhB,oBAA4C/D,OAAO,CAACkC,IAAD,CAAnD,CATF,eAUE,gCAAC,yBAAD,qBACE,0DACE;AAAK,QAAA,SAAS,EAAEkC,OAAO,CAACO;AAAxB,sBACE,gCAAC,gBAAD;AACE,QAAA,cAAc,EAAC,SADjB;AAEE,QAAA,KAAK,EAAEpC,QAFT;AAGE,QAAA,QAAQ,EAAE,kBAACqC,KAAD,EAAQlD,KAAR,EAAkB;AAC1B,UAAA,MAAI,CAACJ,QAAL,CAAc;AAAEiB,YAAAA,QAAQ,EAAEb;AAAZ,WAAd;AACD;AALH,SAOGwC,cAAc,gBAAG,gCAAC,eAAD;AAAQ,QAAA,KAAK,EAAE/D,WAAW,CAACC,UAA3B;AAAuC,QAAA,KAAK,EAAC;AAA7C,QAAH,GAAmE,IAPpF,eAQE,gCAAC,eAAD;AACE,QAAA,KAAK,EAAED,WAAW,CAACE,SADrB;AAEE,QAAA,KAAK,EAAE6B,IAAI,KAAK,OAAT,GAAmB,4CAAnB,GAAkE;AAF3E,QARF,CADF,CADF,EAgBGO,WAAW,iBACV,0DACE,gCAAC,qBAAD;AACE,QAAA,SAAS,MADX;AAEE,QAAA,KAAK,EAAEb,OAFT;AAGE,QAAA,UAAU,EAAEA,OAAO,GAAG,aAAH,GAAmB,EAHxC;AAIE,QAAA,MAAM,EAAC,OAJT;AAKE,QAAA,EAAE,EAAC,MALL;AAME,QAAA,KAAK,EAAC,KANR;AAOE,QAAA,WAAW,yBAAkBM,IAAlB,QAPb;AAQE,QAAA,IAAI,EAAC,MARP;AASE,QAAA,QAAQ,EAAE,KAAKiC,SATjB;AAUE,QAAA,KAAK,EAAE3F,GAVT;AAWE,QAAA,SAAS;AAXX,QADF,EAcG0D,IAAI,KAAK,OAAT,iBACC,gCAAC,yBAAD;AACE,QAAA,OAAO,EAAE;AACP2C,UAAAA,IAAI,EAAET,OAAO,CAACU;AADP;AADX,sBAKE,gCAAC,6BAAD,2BALF,eAME,gCAAC,qBAAD;AACE,QAAA,SAAS,MADX;AAEE,QAAA,MAAM,EAAC,OAFT;AAGE,QAAA,EAAE,EAAC,OAHL;AAIE,QAAA,KAAK,EAAC,OAJR;AAKE,QAAA,IAAI,EAAC,QALP;AAME,QAAA,WAAW,EAAC,OANd;AAOE,QAAA,KAAK,EAAElC,KAPT;AAQE,QAAA,QAAQ,EAAE,KAAKmC,aAAL,CAAmB,OAAnB;AARZ,QANF,eAgBE,gCAAC,qBAAD;AACE,QAAA,SAAS,MADX;AAEE,QAAA,MAAM,EAAC,OAFT;AAGE,QAAA,EAAE,EAAC,QAHL;AAIE,QAAA,KAAK,EAAC,QAJR;AAKE,QAAA,IAAI,EAAC,QALP;AAME,QAAA,WAAW,EAAC,QANd;AAOE,QAAA,KAAK,EAAEpC,MAPT;AAQE,QAAA,QAAQ,EAAE,KAAKoC,aAAL,CAAmB,QAAnB;AARZ,QAhBF,CAfJ,EA2CGjE,YAAY,iBACX;AACE,QAAA,KAAK,EAAE8B,KADT;AAEE,QAAA,MAAM,EAAED,MAFV;AAGE,QAAA,GAAG,EAAE7B,YAHP;AAIE,QAAA,WAAW,EAAC,GAJd;AAKE,QAAA,KAAK,EAAC,0FALR;AAME,QAAA,eAAe;AANjB,QA5CJ,EAqDGoB,IAAI,KAAK,OAAT,KAAqBpB,YAAY,IAAIS,QAArC,KAAkD,CAACK,OAAnD,iBACC,gCAAC,iBAAD,CAAO,QAAP,qBACE,gCAAC,yBAAD;AACE,QAAA,OAAO,EAAE;AACPiD,UAAAA,IAAI,EAAET,OAAO,CAACU;AADP;AADX,sBAKE,gCAAC,qBAAD;AACE,QAAA,SAAS,MADX;AAEE,QAAA,MAAM,EAAC,OAFT;AAGE,QAAA,EAAE,EAAC,QAHL;AAIE,QAAA,KAAK,EAAC,QAJR;AAKE,QAAA,IAAI,EAAC,QALP;AAME,QAAA,WAAW,EAAC,QANd;AAOE,QAAA,KAAK,EAAEpE,MAPT;AAQE,QAAA,QAAQ,EAAE,KAAKqE,aAAL,CAAmB,QAAnB;AARZ,QALF,EAeGnE,SAAS,iBACR,gCAAC,qBAAD;AACE,QAAA,SAAS,MADX;AAEE,QAAA,MAAM,EAAC,OAFT;AAGE,QAAA,EAAE,EAAC,MAHL;AAIE,QAAA,KAAK,EAAC,MAJR;AAKE,QAAA,IAAI,EAAC,QALP;AAME,QAAA,WAAW,EAAC,MANd;AAOE,QAAA,KAAK,EAAED,IAPT;AAQE,QAAA,QAAQ,EAAE,KAAKoE,aAAL,CAAmB,MAAnB;AARZ,QAhBJ,CADF,CAtDJ,CAjBJ,EAwGGP,aAAa,iBACZ;AAAK,QAAA,SAAS,EAAEJ,OAAO,CAACY;AAAxB,sBACE,6CACGxC,UAAU,CAAChE,GAAX,gBACC,+EACE;AAAK,QAAA,SAAS,EAAE4F,OAAO,CAACO;AAAxB,sBACE;AAAO,QAAA,QAAQ,EAAC,UAAhB;AAA2B,QAAA,YAAY,EAAC;AAAxC,sBACE;AAAQ,QAAA,IAAI,EAAElB,QAAd;AAAwB,QAAA,GAAG,EAAEjB,UAAU,CAAChE;AAAxC,QADF,CADF,eAIE,gCAAC,sBAAD;AAAY,sBAAW,QAAvB;AAAgC,QAAA,SAAS,EAAE4F,OAAO,CAACa,UAAnD;AAA+D,QAAA,OAAO,EAAE,KAAKvC;AAA7E,sBACE,gCAAC,kBAAD,OADF,CAJF,CADF,EASG,CAACF,UAAU,CAACO,SAAZ,IAAyBP,UAAU,CAACM,OAApC,gBACC,gCAAC,sBAAD;AAAY,QAAA,OAAO,EAAC;AAApB,sBADD,GAEG,IAXN,EAYGN,UAAU,CAACO,SAAX,gBACC,gCAAC,sBAAD;AAAY,QAAA,OAAO,EAAC;AAApB,gEADD,GAIG,IAhBN,CADD,GAmBG,CAACP,UAAU,CAACM,OAAZ,gBACF;AAAO,QAAA,MAAM,EAAC,SAAd;AAAwB,QAAA,SAAS,EAAEsB,OAAO,CAACc,KAA3C;AAAkD,QAAA,QAAQ,EAAE,KAAKC,gBAAjE;AAAmF,QAAA,IAAI,EAAC;AAAxF,QADE,GAEA,IAtBN,EAuBG,CAAC,CAAC3C,UAAU,CAACS,KAAb,iBACC,gCAAC,sBAAD;AAAY,QAAA,SAAS,EAAEmB,OAAO,CAACnB,KAA/B;AAAsC,QAAA,OAAO,EAAC;AAA9C,SACGT,UAAU,CAACS,KADd,CAxBJ,CADF,CAzGJ,CADF,CAVF,eAsJE,gCAAC,yBAAD,qBACE,gCAAC,kBAAD;AAAQ,QAAA,OAAO,EAAE;AAAA,iBAAM,MAAI,CAACc,UAAL,CAAgB,KAAhB,CAAN;AAAA,SAAjB;AAA+C,QAAA,KAAK,EAAC;AAArD,kBADF,eAIE,gCAAC,kBAAD;AAAQ,QAAA,QAAQ,EAAEU,gBAAlB;AAAoC,QAAA,OAAO,EAAE;AAAA,iBAAM,MAAI,CAACV,UAAL,CAAgB,IAAhB,CAAN;AAAA,SAA7C;AAA0E,QAAA,KAAK,EAAC;AAAhF,SACGQ,IAAI,GAAG,QAAH,GAAc,QADrB,CAJF,CAtJF,CADF;AAiKD;;;EAzf8Ba,kBAAMC,S;;;iCAA1B/E,W,eACQ;AACjB8D,EAAAA,OAAO,EAAEkB,sBAAUC,MAAV,CAAiBC,UADT;AAEjBnB,EAAAA,IAAI,EAAEiB,sBAAUG,IAFC;AAGjBlB,EAAAA,IAAI,EAAEe,sBAAUG,IAHC;AAIjBnB,EAAAA,aAAa,EAAEgB,sBAAUG,IAJR;AAKjBnD,EAAAA,WAAW,EAAEgD,sBAAUI,IALN;AAMjB/B,EAAAA,kBAAkB,EAAE2B,sBAAUK,KAAV,CAAgB;AAClC/B,IAAAA,GAAG,EAAE0B,sBAAUI,IADmB;AAElC,cAAQJ,sBAAUI;AAFgB,GAAhB,CANH;AAUjBxD,EAAAA,IAAI,EAAEoD,sBAAUM,MAVC;AAWjB9F,EAAAA,GAAG,EAAEwF,sBAAUM,MAXE;AAYjBpH,EAAAA,GAAG,EAAE8G,sBAAUM,MAZE;AAajBnF,EAAAA,QAAQ,EAAE6E,sBAAUM,MAbH;AAcjBlF,EAAAA,MAAM,EAAE4E,sBAAUO,MAdD;AAejBlF,EAAAA,IAAI,EAAE2E,sBAAUO,MAfC;AAgBjBlD,EAAAA,MAAM,EAAE2C,sBAAUO,MAhBD;AAiBjBjD,EAAAA,KAAK,EAAE0C,sBAAUO;AAjBA,C;;AA2frB,IAAMC,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBrB,IAAAA,KAAK,EAAE;AACLsB,MAAAA,QAAQ,EAAE;AADL,KADkB;AAIzBlB,IAAAA,UAAU,EAAE;AACVmB,MAAAA,OAAO,EAAE;AADC,KAJa;AAOzBtB,IAAAA,GAAG,EAAE;AACHuB,MAAAA,OAAO,EAAE,MADN;AAEHC,MAAAA,aAAa,EAAE;AAFZ,KAPoB;AAWzBC,IAAAA,OAAO,EAAE;AACPC,MAAAA,WAAW,EAAEN,KAAK,CAACO,OAAN,CAAcC,IAAd,GAAqB,GAD3B;AAEPC,MAAAA,MAAM,EAAE;AAFD,KAXgB;AAezBC,IAAAA,MAAM,EAAE;AACNC,MAAAA,KAAK,EAAEA,aAAMC,OAAN,EADD;AAENC,MAAAA,YAAY,sBAAeF,aAAMC,OAAN,EAAf;AAFN,KAfiB;AAmBzB3B,IAAAA,WAAW,EAAE;AACX6B,MAAAA,SAAS,EAAEd,KAAK,CAACO,OAAN,CAAcC,IAAd,GAAqB;AADrB,KAnBY;AAsBzBtD,IAAAA,KAAK,EAAE;AACL4D,MAAAA,SAAS,EAAEd,KAAK,CAACO,OAAN,CAAcC,IAAd,GAAqB,GAD3B;AAELG,MAAAA,KAAK,EAAEX,KAAK,CAACe,OAAN,CAAc7D,KAAd,CAAoB8D;AAFtB,KAtBkB;AA0BzB9B,IAAAA,UAAU,EAAE;AACV+B,MAAAA,UAAU,EAAEjB,KAAK,CAACO,OAAN,CAAcC,IAAd,GAAqB;AADvB;AA1Ba,GAAZ;AAAA,CAAf;;eA+Be,wBAAWT,MAAX,EAAmBxF,WAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport { color } from '../../../../render-ui/src/index';\nimport { withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport MuiTabs from '@material-ui/core/Tabs';\nimport MuiTab from '@material-ui/core/Tab';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport TextField from '@material-ui/core/TextField';\nimport Typography from '@material-ui/core/Typography';\nimport IconButton from '@material-ui/core/IconButton';\nimport ActionDelete from '@material-ui/icons/Delete';\n\nconst log = debug('@pie-lib:editable-html:plugins:media:dialog');\n\nconst matchYoutubeUrl = (url) => {\n if (!url) {\n return false;\n }\n\n const p = /^(?:https?:\\/\\/)?(?:m\\.|www\\.)?(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))((\\w|-){11})(?:\\S+)?$/;\n if (url.match(p)) {\n return url.match(p)[1];\n }\n return false;\n};\n\nconst matchVimeoUrl = (url) =>\n url &&\n /(http|https)?:\\/\\/(www\\.)?(player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^/]*)\\/videos\\/|)(video\\/)?(\\d+)(?:|\\/\\?)/.test(\n url,\n );\n\nconst matchDriveUrl = (url) =>\n url && /^https:\\/\\/drive\\.google\\.com\\/(?:file\\/d\\/|drive\\/(?:u\\/\\d+\\/)?folders\\/|uc\\?id=)([a-zA-Z0-9_-]+)/.test(url);\n\nconst matchSoundCloudUrl = (url) => {\n if (!url) {\n return false;\n }\n\n const regexp = /^https?:\\/\\/(soundcloud\\.com|snd\\.sc)\\/(.*)$/;\n return url.match(regexp) && url.match(regexp)[2];\n};\n\nconst makeApiRequest = (url) => {\n return new Promise((resolve) => {\n try {\n fetch(`https://soundcloud.com/oembed?format=json&url=${url}`)\n .then((response) => response.json())\n .then((json) => {\n const d = document.createElement('div');\n\n d.innerHTML = json.html;\n\n const iframe = d.querySelector('iframe');\n\n resolve(iframe.src);\n })\n .catch((err) => {\n resolve('');\n log(err);\n });\n } catch (err) {\n resolve('');\n }\n });\n};\n\nconst typeMap = {\n video: 'Video',\n audio: 'Audio',\n};\n\nconst tabsTypeMap = {\n uploadFile: 'upload-file',\n insertUrl: 'insert-url',\n};\n\nexport class MediaDialog extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n open: PropTypes.bool,\n edit: PropTypes.bool,\n disablePortal: PropTypes.bool,\n handleClose: PropTypes.func,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func,\n delete: PropTypes.func,\n }),\n type: PropTypes.string,\n src: PropTypes.string,\n url: PropTypes.string,\n urlToUse: PropTypes.string,\n starts: PropTypes.number,\n ends: PropTypes.number,\n height: PropTypes.number,\n width: PropTypes.number,\n };\n\n constructor(props) {\n super(props);\n\n const { ends, height, src, starts, type, uploadSoundSupport, url, urlToUse, width } = props;\n const showUploadFile = uploadSoundSupport?.add && uploadSoundSupport?.delete && type !== 'video';\n\n this.state = {\n ends: ends || 0,\n url: url,\n urlToUse: urlToUse,\n formattedUrl: src,\n height: height || 315,\n invalid: false,\n starts: starts || 0,\n width: width || 560,\n // default selected tab should be upload file if available\n tabValue: showUploadFile ? tabsTypeMap.uploadFile : tabsTypeMap.insertUrl,\n fileUpload: {\n error: null,\n loading: false,\n scheduled: false,\n url: '',\n mimeType: '',\n },\n };\n }\n\n componentDidMount() {\n if (this.props.url) {\n this.urlChange({\n target: {\n value: this.props.url,\n },\n });\n }\n }\n\n formatUrl = () => {\n const { url, urlToUse, starts, ends } = this.state;\n const isYoutube = matchYoutubeUrl(url);\n const isVimeo = matchVimeoUrl(url);\n let formattedUrl = urlToUse;\n\n if ((isYoutube || isVimeo) && urlToUse) {\n const params = [];\n\n let paramName;\n let paramStart;\n\n switch (true) {\n case isVimeo:\n paramName = 't';\n paramStart = '#';\n break;\n case isYoutube:\n paramName = 'start';\n paramStart = '?';\n break;\n default:\n paramName = 'start';\n paramStart = '?';\n }\n\n if (starts) {\n params.push(`${paramName}=${starts}`);\n }\n\n if (ends) {\n params.push(`end=${ends}`);\n }\n\n formattedUrl = `${urlToUse}${params.length ? paramStart : ''}${params.join('&')}`;\n }\n\n const callback = () => this.setState({ formattedUrl, updating: false });\n\n this.setState({ formattedUrl: null, updating: true }, callback);\n };\n\n handleStateChange = (newState) => this.setState(newState, this.formatUrl);\n\n checkAudio = (value) => {\n if (matchSoundCloudUrl(value)) {\n makeApiRequest(value)\n .then((urlToUse) => {\n this.handleStateChange({\n urlToUse,\n invalid: !urlToUse,\n url: value,\n });\n })\n .catch(log);\n }\n };\n\n checkVideo = (value) => {\n if (matchYoutubeUrl(value)) {\n const regExp = /^.*(youtu\\.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n const match = value.match(regExp);\n const id = match[2];\n const urlToUse = `https://youtube.com/embed/${id}`;\n\n log('is youtube');\n\n this.handleStateChange({\n urlToUse,\n url: value,\n invalid: false,\n });\n }\n\n if (matchVimeoUrl(value)) {\n const id = value.replace(/.*vimeo.com\\/(.*)/g, '$1');\n const urlToUse = `https://player.vimeo.com/video/${id}`;\n\n log('is vimeo');\n\n this.handleStateChange({\n urlToUse,\n url: value,\n ends: null,\n invalid: false,\n });\n }\n\n if (matchDriveUrl(value)) {\n // https://drive.google.com/file/d/11QkK_gUO068amNvZBm9cxZpKX74WYb8q/view\n const id = value.replace(\n /^https:\\/\\/drive\\.google\\.com\\/(?:file\\/d\\/|drive\\/(?:u\\/\\d+\\/)?folders\\/|uc\\?id=)([a-zA-Z0-9_-]+)\\/.*/,\n '$1',\n );\n const urlToUse = `https://drive.google.com/file/d/${id}/preview`;\n\n log('is google drive');\n\n this.handleStateChange({\n urlToUse,\n url: value,\n ends: null,\n invalid: false,\n });\n }\n };\n\n urlChange = (e) => {\n const { value } = e.target || {};\n const { type } = this.props;\n\n if (type && type === 'audio') {\n this.checkAudio();\n return;\n } else if (type && type === 'video') {\n this.checkVideo(value);\n return;\n }\n\n this.handleStateChange({\n urlToUse: null,\n url: null,\n invalid: true,\n });\n };\n\n changeHandler = (type) => (e) => this.handleStateChange({ [type]: e.target.value });\n\n handleDone = (val) => {\n const { handleClose } = this.props;\n const { tabValue, fileUpload } = this.state;\n const isInsertURL = tabValue === tabsTypeMap.insertUrl;\n\n if (!val) {\n if (fileUpload.url) {\n this.handleRemoveFile();\n }\n\n handleClose(val);\n return;\n }\n\n if (isInsertURL) {\n const { ends, height, url, urlToUse, formattedUrl, starts, width } = this.state;\n\n handleClose(val, {\n tag: 'iframe',\n ends,\n height,\n starts,\n width,\n url,\n urlToUse,\n src: formattedUrl,\n });\n return;\n }\n\n if (!fileUpload.loading) {\n handleClose(val, {\n tag: 'audio',\n src: fileUpload.url,\n });\n return;\n }\n\n this.setState({\n fileUpload: {\n ...fileUpload,\n scheduled: true,\n },\n });\n };\n\n handleUploadFile = async (e) => {\n e.preventDefault();\n\n this.setState({\n fileUpload: {\n ...this.state.fileUpload,\n error: null,\n loading: true,\n },\n });\n\n const fileChosen = e.target.files[0];\n\n const reader = new FileReader();\n\n reader.onload = () => {\n const dataURL = reader.result;\n\n this.setState({\n fileUpload: {\n ...this.state.fileUpload,\n url: dataURL,\n mimeType: fileChosen.type,\n },\n });\n };\n reader.readAsDataURL(fileChosen);\n\n this.props.uploadSoundSupport.add({\n fileChosen,\n done: (err, src) => {\n log('done: err:', err);\n if (err) {\n //eslint-disable-next-line\n console.log(err);\n this.setState({\n fileUpload: {\n ...this.state.fileUpload,\n scheduled: false,\n loading: false,\n error: err,\n },\n });\n return;\n }\n\n const { fileUpload } = this.state;\n const callback = fileUpload && fileUpload.scheduled ? this.handleDone.bind(this, true) : undefined;\n\n this.setState(\n {\n fileUpload: {\n ...fileUpload,\n scheduled: false,\n loading: false,\n url: src,\n },\n },\n callback,\n );\n },\n });\n };\n\n handleRemoveFile = async () => {\n this.props.uploadSoundSupport.delete(this.state.fileUpload.url, (err) => {\n if (err) {\n //eslint-disable-next-line\n console.log(err);\n this.setState({\n fileUpload: {\n ...this.state.fileUpload,\n error: err,\n },\n });\n }\n });\n\n // we should put it inside uploadSoundSupport.delete but we can leave it here for testing purposes\n this.setState({\n fileUpload: {\n ...this.state.fileUpload,\n loading: false,\n url: '',\n mimeType: '',\n },\n });\n };\n\n render() {\n const { classes, open, disablePortal, type, edit, uploadSoundSupport } = this.props;\n const {\n ends,\n height,\n invalid,\n starts,\n width,\n url,\n mimeType,\n formattedUrl,\n updating,\n tabValue,\n fileUpload,\n } = this.state;\n const isYoutube = matchYoutubeUrl(url);\n const isInsertURL = tabValue === tabsTypeMap.insertUrl;\n const isUploadMedia = tabValue === tabsTypeMap.uploadFile;\n const submitIsDisabled = isInsertURL\n ? invalid || url === null || url === undefined\n : !fileUpload.url || fileUpload.scheduled;\n const showUploadFile = uploadSoundSupport?.add && uploadSoundSupport?.delete && type !== 'video';\n\n return (\n <Dialog\n classes={{\n paper: classes.paper,\n }}\n disablePortal={disablePortal}\n open={open}\n onClose={() => this.handleDone(false)}\n aria-labelledby=\"form-dialog-title\"\n >\n <DialogTitle id=\"form-dialog-title\">Insert {typeMap[type]}</DialogTitle>\n <DialogContent>\n <div>\n <div className={classes.row}>\n <MuiTabs\n indicatorColor=\"primary\"\n value={tabValue}\n onChange={(event, value) => {\n this.setState({ tabValue: value });\n }}\n >\n {showUploadFile ? <MuiTab value={tabsTypeMap.uploadFile} label=\"Upload file\" /> : null}\n <MuiTab\n value={tabsTypeMap.insertUrl}\n label={type === 'video' ? 'Insert YouTube, Vimeo, or Google Drive URL' : 'Insert SoundCloud URL'}\n />\n </MuiTabs>\n </div>\n {isInsertURL && (\n <div>\n <TextField\n autoFocus\n error={invalid}\n helperText={invalid ? 'Invalid URL' : ''}\n margin=\"dense\"\n id=\"name\"\n label=\"URL\"\n placeholder={`Paste URL of ${type}...`}\n type=\"text\"\n onChange={this.urlChange}\n value={url}\n fullWidth\n />\n {type === 'video' && (\n <DialogContent\n classes={{\n root: classes.properties,\n }}\n >\n <DialogContentText>Video Properties</DialogContentText>\n <TextField\n autoFocus\n margin=\"dense\"\n id=\"width\"\n label=\"Width\"\n type=\"number\"\n placeholder=\"Width\"\n value={width}\n onChange={this.changeHandler('width')}\n />\n <TextField\n autoFocus\n margin=\"dense\"\n id=\"height\"\n label=\"Height\"\n type=\"number\"\n placeholder=\"Height\"\n value={height}\n onChange={this.changeHandler('height')}\n />\n </DialogContent>\n )}\n {formattedUrl && (\n <iframe\n width={width}\n height={height}\n src={formattedUrl}\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n />\n )}\n {type === 'video' && (formattedUrl || updating) && !invalid && (\n <React.Fragment>\n <DialogContent\n classes={{\n root: classes.properties,\n }}\n >\n <TextField\n autoFocus\n margin=\"dense\"\n id=\"starts\"\n label=\"Starts\"\n type=\"number\"\n placeholder=\"Starts\"\n value={starts}\n onChange={this.changeHandler('starts')}\n />\n {isYoutube && (\n <TextField\n autoFocus\n margin=\"dense\"\n id=\"ends\"\n label=\"Ends\"\n type=\"number\"\n placeholder=\"Ends\"\n value={ends}\n onChange={this.changeHandler('ends')}\n />\n )}\n </DialogContent>\n </React.Fragment>\n )}\n </div>\n )}\n {isUploadMedia && (\n <div className={classes.uploadInput}>\n <div>\n {fileUpload.url ? (\n <>\n <div className={classes.row}>\n <audio controls=\"controls\" controlsList=\"nodownload\">\n <source type={mimeType} src={fileUpload.url} />\n </audio>\n <IconButton aria-label=\"delete\" className={classes.deleteIcon} onClick={this.handleRemoveFile}>\n <ActionDelete />\n </IconButton>\n </div>\n {!fileUpload.scheduled && fileUpload.loading ? (\n <Typography variant=\"subheading\">Loading...</Typography>\n ) : null}\n {fileUpload.scheduled ? (\n <Typography variant=\"subheading\">\n Waiting for Upload to finish, then inserting item...\n </Typography>\n ) : null}\n </>\n ) : !fileUpload.loading ? (\n <input accept=\"audio/*\" className={classes.input} onChange={this.handleUploadFile} type=\"file\" />\n ) : null}\n {!!fileUpload.error && (\n <Typography className={classes.error} variant=\"caption\">\n {fileUpload.error}\n </Typography>\n )}\n </div>\n </div>\n )}\n </div>\n </DialogContent>\n <DialogActions>\n <Button onClick={() => this.handleDone(false)} color=\"primary\">\n Cancel\n </Button>\n <Button disabled={submitIsDisabled} onClick={() => this.handleDone(true)} color=\"primary\">\n {edit ? 'Update' : 'Insert'}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n}\n\nconst styles = (theme) => ({\n paper: {\n minWidth: '500px',\n },\n properties: {\n padding: 0,\n },\n row: {\n display: 'flex',\n flexDirection: 'space-between',\n },\n rowItem: {\n marginRight: theme.spacing.unit * 1.5,\n cursor: 'pointer',\n },\n active: {\n color: color.primary(),\n borderBottom: `2px solid ${color.primary()}`,\n },\n uploadInput: {\n marginTop: theme.spacing.unit * 1.5,\n },\n error: {\n marginTop: theme.spacing.unit * 1.5,\n color: theme.palette.error.main,\n },\n deleteIcon: {\n marginLeft: theme.spacing.unit * 1.5,\n },\n});\n\nexport default withStyles(styles)(MediaDialog);\n"],"file":"media-dialog.js"}
|
|
@@ -98,4 +98,4 @@ var MediaToolbar = /*#__PURE__*/function (_React$Component) {
|
|
|
98
98
|
var _default = useStyles(MediaToolbar);
|
|
99
99
|
|
|
100
100
|
exports["default"] = _default;
|
|
101
|
-
//# sourceMappingURL=
|
|
101
|
+
//# sourceMappingURL=media-toolbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/plugins/media/media-toolbar.jsx"],"names":["useStyles","theme","root","position","bottom","left","width","background","palette","common","white","display","padding","boxShadow","editContainer","cursor","flex","border","black","textAlign","borderWidth","marginRight","paddingRight","removeContainer","MediaToolbar","props","classes","hideEdit","onEdit","onRemove","React","Component","PropTypes","object","func","bool"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;AAEA,IAAMA,SAAS,GAAG,wBAAW,UAACC,KAAD;AAAA,SAAY;AACvCC,IAAAA,IAAI,EAAE;AACJC,MAAAA,QAAQ,EAAE,UADN;AAEJC,MAAAA,MAAM,EAAE,KAFJ;AAGJC,MAAAA,IAAI,EAAE,CAHF;AAIJC,MAAAA,KAAK,EAAE,MAJH;AAKJC,MAAAA,UAAU,EAAEN,KAAK,CAACO,OAAN,CAAcC,MAAd,CAAqBC,KAL7B;AAMJC,MAAAA,OAAO,EAAE,aANL;AAOJC,MAAAA,OAAO,EAAE,KAPL;AAQJC,MAAAA,SAAS,EAAE;AARP,KADiC;AAWvCC,IAAAA,aAAa,EAAE;AACbC,MAAAA,MAAM,EAAE,SADK;AAEbC,MAAAA,IAAI,EAAE,CAFO;AAGbC,MAAAA,MAAM,kBAAWhB,KAAK,CAACO,OAAN,CAAcC,MAAd,CAAqBS,KAAhC,CAHO;AAIbC,MAAAA,SAAS,EAAE,OAJE;AAKbC,MAAAA,WAAW,EAAE,WALA;AAMbC,MAAAA,WAAW,EAAE,KANA;AAObC,MAAAA,YAAY,EAAE;AAPD,KAXwB;AAoBvCC,IAAAA,eAAe,EAAE;AACfR,MAAAA,MAAM,EAAE;AADO;AApBsB,GAAZ;AAAA,CAAX,CAAlB;;IAyBMS,Y;;;;;;;;;;;;WAQJ,kBAAS;AACP,wBAAgD,KAAKC,KAArD;AAAA,UAAQC,OAAR,eAAQA,OAAR;AAAA,UAAiBC,QAAjB,eAAiBA,QAAjB;AAAA,UAA2BC,MAA3B,eAA2BA,MAA3B;AAAA,UAAmCC,QAAnC,eAAmCA,QAAnC;AAEA,0BACE;AAAM,QAAA,SAAS,EAAEH,OAAO,CAACxB;AAAzB,SACGyB,QAAQ,GAAG,IAAH,gBACP;AAAM,QAAA,SAAS,EAAED,OAAO,CAACZ,aAAzB;AAAwC,QAAA,OAAO,EAAEc;AAAjD,yBAFJ,eAME;AAAM,QAAA,SAAS,EAAEF,OAAO,CAACH,eAAzB;AAA0C,QAAA,OAAO,EAAEM;AAAnD,kBANF,CADF;AAYD;;;EAvBwBC,kBAAMC,S;;iCAA3BP,Y,eACe;AACjBE,EAAAA,OAAO,EAAEM,sBAAUC,MADF;AAEjBL,EAAAA,MAAM,EAAEI,sBAAUE,IAFD;AAGjBP,EAAAA,QAAQ,EAAEK,sBAAUG,IAHH;AAIjBN,EAAAA,QAAQ,EAAEG,sBAAUE;AAJH,C;;eAyBNlC,SAAS,CAACwB,YAAD,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst useStyles = withStyles((theme) => ({\n root: {\n position: 'relative',\n bottom: '5px',\n left: 0,\n width: '100%',\n background: theme.palette.common.white,\n display: 'inline-flex',\n padding: '5px',\n boxShadow: '0px 4px 4px rgba(0, 0, 0, 0.25)',\n },\n editContainer: {\n cursor: 'pointer',\n flex: 3,\n border: `solid ${theme.palette.common.black}`,\n textAlign: 'right',\n borderWidth: '0 2px 0 0',\n marginRight: '5px',\n paddingRight: '5px',\n },\n removeContainer: {\n cursor: 'pointer',\n },\n}));\n\nclass MediaToolbar extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n onEdit: PropTypes.func,\n hideEdit: PropTypes.bool,\n onRemove: PropTypes.func,\n };\n\n render() {\n const { classes, hideEdit, onEdit, onRemove } = this.props;\n\n return (\n <span className={classes.root}>\n {hideEdit ? null : (\n <span className={classes.editContainer} onClick={onEdit}>\n Edit Settings\n </span>\n )}\n <span className={classes.removeContainer} onClick={onRemove}>\n Remove\n </span>\n </span>\n );\n }\n}\n\nexport default useStyles(MediaToolbar);\n"],"file":"media-toolbar.js"}
|
|
@@ -90,4 +90,4 @@ var MediaWrapper = /*#__PURE__*/function (_React$Component) {
|
|
|
90
90
|
var _default = useStyles(MediaWrapper);
|
|
91
91
|
|
|
92
92
|
exports["default"] = _default;
|
|
93
|
-
//# sourceMappingURL=
|
|
93
|
+
//# sourceMappingURL=media-wrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/plugins/media/media-wrapper.jsx"],"names":["useStyles","root","position","editor","display","overflow","MediaWrapper","props","classes","children","width","rest","React","Component","PropTypes","object","array","bool","oneOfType","number","string"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;AAEA,IAAMA,SAAS,GAAG,wBAAW;AAAA,SAAO;AAClCC,IAAAA,IAAI,EAAE;AACJC,MAAAA,QAAQ,EAAE;AADN,KAD4B;AAIlCC,IAAAA,MAAM,EAAE;AACNC,MAAAA,OAAO,EAAE,cADH;AAENC,MAAAA,QAAQ,EAAE;AAFJ;AAJ0B,GAAP;AAAA,CAAX,CAAlB;;IAUMC,Y;;;;;;;;;;;;WAQJ,kBAAS;AACP,wBAAsD,KAAKC,KAA3D;AAAA,UAAQJ,MAAR,eAAQA,MAAR;AAAA,UAAgBK,OAAhB,eAAgBA,OAAhB;AAAA,UAAyBC,QAAzB,eAAyBA,QAAzB;AAAA,UAAmCC,KAAnC,eAAmCA,KAAnC;AAAA,UAA6CC,IAA7C;AAEA,0BACE;AACE,QAAA,SAAS,EAAE,4BAAWH,OAAO,CAACP,IAAnB,uCACRO,OAAO,CAACL,MADA,EACSA,MADT;AADb,SAIMQ,IAJN;AAKE,QAAA,KAAK,EAAE;AACLD,UAAAA,KAAK,EAAEA,KAAK,IAAI;AADX;AALT,UASGD,QATH,CADF;AAaD;;;EAxBwBG,kBAAMC,S;;iCAA3BP,Y,eACe;AACjBE,EAAAA,OAAO,EAAEM,sBAAUC,MADF;AAEjBN,EAAAA,QAAQ,EAAEK,sBAAUE,KAFH;AAGjBb,EAAAA,MAAM,EAAEW,sBAAUG,IAHD;AAIjBP,EAAAA,KAAK,EAAEI,sBAAUI,SAAV,CAAoB,CAACJ,sBAAUK,MAAX,EAAmBL,sBAAUM,MAA7B,CAApB;AAJU,C;;eA0BNpB,SAAS,CAACM,YAAD,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst useStyles = withStyles(() => ({\n root: {\n position: 'relative',\n },\n editor: {\n display: 'inline-block',\n overflow: 'hidden',\n },\n}));\n\nclass MediaWrapper extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n children: PropTypes.array,\n editor: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n };\n\n render() {\n const { editor, classes, children, width, ...rest } = this.props;\n\n return (\n <span\n className={classNames(classes.root, {\n [classes.editor]: editor,\n })}\n {...rest}\n style={{\n width: width || 300,\n }}\n >\n {children}\n </span>\n );\n }\n}\n\nexport default useStyles(MediaWrapper);\n"],"file":"media-wrapper.js"}
|
|
@@ -43,4 +43,4 @@ var _default = function _default() {
|
|
|
43
43
|
};
|
|
44
44
|
|
|
45
45
|
exports["default"] = _default;
|
|
46
|
-
//# sourceMappingURL=
|
|
46
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/plugins/rendering/index.js"],"names":["name","renderNode","props","attributes","children","node","object","Tag","style","position","extraAttributes","data","get","React","createElement"],"mappings":";;;;;;;;;;;AAAA;;;;;;AAEA;AACA;AACA;eACe,oBAAM;AACnB,SAAO;AACLA,IAAAA,IAAI,EAAE,iBADD;AAELC,IAAAA,UAAU,EAAE,oBAACC,KAAD,EAAW;AACrB,UAAQC,UAAR,GAAuCD,KAAvC,CAAQC,UAAR;AAAA,UAAoBC,QAApB,GAAuCF,KAAvC,CAAoBE,QAApB;AAAA,UAA8BC,IAA9B,GAAuCH,KAAvC,CAA8BG,IAA9B;;AAEA,UAAIA,IAAI,CAACC,MAAL,KAAgB,OAAhB,IAA2BD,IAAI,CAACC,MAAL,KAAgB,QAA/C,EAAyD;AACvD;AACD;;AAED,UAAMC,GAAG,GAAGF,IAAI,CAACC,MAAL,KAAgB,OAAhB,GAA0B,KAA1B,GAAkC,MAA9C;AACA,UAAME,KAAK,GAAG;AAAEC,QAAAA,QAAQ,EAAE;AAAZ,OAAd;AACA,UAAMC,eAAe,GAAGL,IAAI,CAACM,IAAL,CAAUC,GAAV,CAAc,YAAd,CAAxB;AAEA,0BAAOC,kBAAMC,aAAN,CACLP,GADK,gDAGAJ,UAHA,GAIAO,eAJA;AAKHF,QAAAA,KAAK,EAAEA;AALJ,UAOLJ,QAPK,CAAP;AASD;AAtBI,GAAP;AAwBD,C","sourcesContent":["import React from 'react';\n\n/**\n * Plugin to render the normal divs and spans with attributes (if they are provided)\n */\nexport default () => {\n return {\n name: 'renderingPlugin',\n renderNode: (props) => {\n const { attributes, children, node } = props;\n\n if (node.object !== 'block' && node.object !== 'inline') {\n return;\n }\n\n const Tag = node.object === 'block' ? 'div' : 'span';\n const style = { position: 'relative' };\n const extraAttributes = node.data.get('attributes');\n\n return React.createElement(\n Tag,\n {\n ...attributes,\n ...extraAttributes,\n style: style,\n },\n children,\n );\n },\n };\n};\n"],"file":"index.js"}
|