@payloadcms/richtext-lexical 3.0.0-alpha.41 → 3.0.0-alpha.42
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/components.js +1 -1
- package/dist/cell/index.js +1 -1
- package/dist/cell/index.js.map +1 -0
- package/dist/exports/components.js +1 -1
- package/dist/exports/components.js.map +1 -0
- package/dist/field/Field.js +1 -1
- package/dist/field/Field.js.map +1 -0
- package/dist/field/features/align/feature.client.js +1 -1
- package/dist/field/features/align/feature.client.js.map +1 -0
- package/dist/field/features/align/feature.server.js +1 -1
- package/dist/field/features/align/feature.server.js.map +1 -0
- package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.js +1 -1
- package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.js.map +1 -0
- package/dist/field/features/blockquote/feature.client.js +1 -1
- package/dist/field/features/blockquote/feature.client.js.map +1 -0
- package/dist/field/features/blockquote/feature.server.js +1 -1
- package/dist/field/features/blockquote/feature.server.js.map +1 -0
- package/dist/field/features/blockquote/markdownTransformer.js +1 -1
- package/dist/field/features/blockquote/markdownTransformer.js.map +1 -0
- package/dist/field/features/blocks/component/BlockContent.js +1 -1
- package/dist/field/features/blocks/component/BlockContent.js.map +1 -0
- package/dist/field/features/blocks/component/FormSavePlugin.js +1 -1
- package/dist/field/features/blocks/component/FormSavePlugin.js.map +1 -0
- package/dist/field/features/blocks/component/index.js +1 -1
- package/dist/field/features/blocks/component/index.js.map +1 -0
- package/dist/field/features/blocks/drawer/index.js +1 -1
- package/dist/field/features/blocks/drawer/index.js.map +1 -0
- package/dist/field/features/blocks/feature.client.js +1 -1
- package/dist/field/features/blocks/feature.client.js.map +1 -0
- package/dist/field/features/blocks/feature.server.js +1 -1
- package/dist/field/features/blocks/feature.server.js.map +1 -0
- package/dist/field/features/blocks/nodes/BlocksNode.js +1 -1
- package/dist/field/features/blocks/nodes/BlocksNode.js.map +1 -0
- package/dist/field/features/blocks/plugin/commands.js +1 -1
- package/dist/field/features/blocks/plugin/commands.js.map +1 -0
- package/dist/field/features/blocks/plugin/index.js +1 -1
- package/dist/field/features/blocks/plugin/index.js.map +1 -0
- package/dist/field/features/blocks/populationPromise.js +1 -1
- package/dist/field/features/blocks/populationPromise.js.map +1 -0
- package/dist/field/features/blocks/validate.js +1 -1
- package/dist/field/features/blocks/validate.js.map +1 -0
- package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.js +1 -1
- package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.js.map +1 -0
- package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.js +1 -1
- package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.js.map +1 -0
- package/dist/field/features/converters/html/converter/converters/linebreak.js +1 -1
- package/dist/field/features/converters/html/converter/converters/linebreak.js.map +1 -0
- package/dist/field/features/converters/html/converter/converters/paragraph.js +1 -1
- package/dist/field/features/converters/html/converter/converters/paragraph.js.map +1 -0
- package/dist/field/features/converters/html/converter/converters/text.js +1 -1
- package/dist/field/features/converters/html/converter/converters/text.js.map +1 -0
- package/dist/field/features/converters/html/converter/defaultConverters.js +1 -1
- package/dist/field/features/converters/html/converter/defaultConverters.js.map +1 -0
- package/dist/field/features/converters/html/converter/index.js +1 -1
- package/dist/field/features/converters/html/converter/index.js.map +1 -0
- package/dist/field/features/converters/html/converter/types.js +1 -1
- package/dist/field/features/converters/html/converter/types.js.map +1 -0
- package/dist/field/features/converters/html/feature.server.js +1 -1
- package/dist/field/features/converters/html/feature.server.js.map +1 -0
- package/dist/field/features/converters/html/field/index.js +1 -1
- package/dist/field/features/converters/html/field/index.js.map +1 -0
- package/dist/field/features/createClientComponent.js +1 -1
- package/dist/field/features/createClientComponent.js.map +1 -0
- package/dist/field/features/createFeaturePropComponent.js +1 -1
- package/dist/field/features/createFeaturePropComponent.js.map +1 -0
- package/dist/field/features/debug/testrecorder/feature.client.js +1 -1
- package/dist/field/features/debug/testrecorder/feature.client.js.map +1 -0
- package/dist/field/features/debug/testrecorder/feature.server.js +1 -1
- package/dist/field/features/debug/testrecorder/feature.server.js.map +1 -0
- package/dist/field/features/debug/testrecorder/plugin/index.js +1 -1
- package/dist/field/features/debug/testrecorder/plugin/index.js.map +1 -0
- package/dist/field/features/debug/treeview/feature.client.js +1 -1
- package/dist/field/features/debug/treeview/feature.client.js.map +1 -0
- package/dist/field/features/debug/treeview/feature.server.js +1 -1
- package/dist/field/features/debug/treeview/feature.server.js.map +1 -0
- package/dist/field/features/debug/treeview/plugin/index.js +1 -1
- package/dist/field/features/debug/treeview/plugin/index.js.map +1 -0
- package/dist/field/features/format/bold/feature.client.js +1 -1
- package/dist/field/features/format/bold/feature.client.js.map +1 -0
- package/dist/field/features/format/bold/feature.server.js +1 -1
- package/dist/field/features/format/bold/feature.server.js.map +1 -0
- package/dist/field/features/format/bold/markdownTransformers.js +1 -1
- package/dist/field/features/format/bold/markdownTransformers.js.map +1 -0
- package/dist/field/features/format/common/floatingSelectToolbarSection.js +1 -1
- package/dist/field/features/format/common/floatingSelectToolbarSection.js.map +1 -0
- package/dist/field/features/format/inlinecode/feature.client.js +1 -1
- package/dist/field/features/format/inlinecode/feature.client.js.map +1 -0
- package/dist/field/features/format/inlinecode/feature.server.js +1 -1
- package/dist/field/features/format/inlinecode/feature.server.js.map +1 -0
- package/dist/field/features/format/inlinecode/markdownTransformers.js +1 -1
- package/dist/field/features/format/inlinecode/markdownTransformers.js.map +1 -0
- package/dist/field/features/format/italic/feature.client.js +1 -1
- package/dist/field/features/format/italic/feature.client.js.map +1 -0
- package/dist/field/features/format/italic/feature.server.js +1 -1
- package/dist/field/features/format/italic/feature.server.js.map +1 -0
- package/dist/field/features/format/italic/markdownTransformers.js +1 -1
- package/dist/field/features/format/italic/markdownTransformers.js.map +1 -0
- package/dist/field/features/format/strikethrough/feature.client.js +1 -1
- package/dist/field/features/format/strikethrough/feature.client.js.map +1 -0
- package/dist/field/features/format/strikethrough/feature.server.js +1 -1
- package/dist/field/features/format/strikethrough/feature.server.js.map +1 -0
- package/dist/field/features/format/strikethrough/markdownTransformers.js +1 -1
- package/dist/field/features/format/strikethrough/markdownTransformers.js.map +1 -0
- package/dist/field/features/format/subscript/feature.client.js +1 -1
- package/dist/field/features/format/subscript/feature.client.js.map +1 -0
- package/dist/field/features/format/subscript/feature.server.js +1 -1
- package/dist/field/features/format/subscript/feature.server.js.map +1 -0
- package/dist/field/features/format/superscript/feature.client.js +1 -1
- package/dist/field/features/format/superscript/feature.client.js.map +1 -0
- package/dist/field/features/format/superscript/feature.server.js +1 -1
- package/dist/field/features/format/superscript/feature.server.js.map +1 -0
- package/dist/field/features/format/underline/feature.client.js +1 -1
- package/dist/field/features/format/underline/feature.client.js.map +1 -0
- package/dist/field/features/format/underline/feature.server.js +1 -1
- package/dist/field/features/format/underline/feature.server.js.map +1 -0
- package/dist/field/features/heading/feature.client.js +1 -1
- package/dist/field/features/heading/feature.client.js.map +1 -0
- package/dist/field/features/heading/feature.server.js +1 -1
- package/dist/field/features/heading/feature.server.js.map +1 -0
- package/dist/field/features/heading/markdownTransformer.js +1 -1
- package/dist/field/features/heading/markdownTransformer.js.map +1 -0
- package/dist/field/features/indent/feature.client.js +1 -1
- package/dist/field/features/indent/feature.client.js.map +1 -0
- package/dist/field/features/indent/feature.server.js +1 -1
- package/dist/field/features/indent/feature.server.js.map +1 -0
- package/dist/field/features/indent/floatingSelectToolbarIndentSection.js +1 -1
- package/dist/field/features/indent/floatingSelectToolbarIndentSection.js.map +1 -0
- package/dist/field/features/link/drawer/baseFields.js +1 -1
- package/dist/field/features/link/drawer/baseFields.js.map +1 -0
- package/dist/field/features/link/drawer/index.js +1 -1
- package/dist/field/features/link/drawer/index.js.map +1 -0
- package/dist/field/features/link/drawer/types.js +1 -1
- package/dist/field/features/link/drawer/types.js.map +1 -0
- package/dist/field/features/link/feature.client.js +1 -1
- package/dist/field/features/link/feature.client.js.map +1 -0
- package/dist/field/features/link/feature.server.js +1 -1
- package/dist/field/features/link/feature.server.js.map +1 -0
- package/dist/field/features/link/nodes/AutoLinkNode.js +1 -1
- package/dist/field/features/link/nodes/AutoLinkNode.js.map +1 -0
- package/dist/field/features/link/nodes/LinkNode.js +1 -1
- package/dist/field/features/link/nodes/LinkNode.js.map +1 -0
- package/dist/field/features/link/nodes/types.js +1 -1
- package/dist/field/features/link/nodes/types.js.map +1 -0
- package/dist/field/features/link/plugins/autoLink/index.js +1 -1
- package/dist/field/features/link/plugins/autoLink/index.js.map +1 -0
- package/dist/field/features/link/plugins/clickableLink/index.js +1 -1
- package/dist/field/features/link/plugins/clickableLink/index.js.map +1 -0
- package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.js +1 -1
- package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.js.map +1 -0
- package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.js +1 -1
- package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -0
- package/dist/field/features/link/plugins/floatingLinkEditor/index.js +1 -1
- package/dist/field/features/link/plugins/floatingLinkEditor/index.js.map +1 -0
- package/dist/field/features/link/plugins/floatingLinkEditor/types.js +1 -1
- package/dist/field/features/link/plugins/floatingLinkEditor/types.js.map +1 -0
- package/dist/field/features/link/plugins/floatingLinkEditor/utilities.js +1 -1
- package/dist/field/features/link/plugins/floatingLinkEditor/utilities.js.map +1 -0
- package/dist/field/features/link/plugins/link/index.js +1 -1
- package/dist/field/features/link/plugins/link/index.js.map +1 -0
- package/dist/field/features/link/populationPromise.js +1 -1
- package/dist/field/features/link/populationPromise.js.map +1 -0
- package/dist/field/features/lists/checklist/feature.client.js +1 -1
- package/dist/field/features/lists/checklist/feature.client.js.map +1 -0
- package/dist/field/features/lists/checklist/feature.server.js +1 -1
- package/dist/field/features/lists/checklist/feature.server.js.map +1 -0
- package/dist/field/features/lists/checklist/markdownTransformers.js +1 -1
- package/dist/field/features/lists/checklist/markdownTransformers.js.map +1 -0
- package/dist/field/features/lists/checklist/plugin/index.js +1 -1
- package/dist/field/features/lists/checklist/plugin/index.js.map +1 -0
- package/dist/field/features/lists/common/markdown.js +1 -1
- package/dist/field/features/lists/common/markdown.js.map +1 -0
- package/dist/field/features/lists/htmlConverter.js +1 -1
- package/dist/field/features/lists/htmlConverter.js.map +1 -0
- package/dist/field/features/lists/orderedlist/feature.client.js +1 -1
- package/dist/field/features/lists/orderedlist/feature.client.js.map +1 -0
- package/dist/field/features/lists/orderedlist/feature.server.js +1 -1
- package/dist/field/features/lists/orderedlist/feature.server.js.map +1 -0
- package/dist/field/features/lists/orderedlist/markdownTransformer.js +1 -1
- package/dist/field/features/lists/orderedlist/markdownTransformer.js.map +1 -0
- package/dist/field/features/lists/plugin/index.js +1 -1
- package/dist/field/features/lists/plugin/index.js.map +1 -0
- package/dist/field/features/lists/unorderedlist/feature.client.js +1 -1
- package/dist/field/features/lists/unorderedlist/feature.client.js.map +1 -0
- package/dist/field/features/lists/unorderedlist/feature.server.js +1 -1
- package/dist/field/features/lists/unorderedlist/feature.server.js.map +1 -0
- package/dist/field/features/lists/unorderedlist/markdownTransformer.js +1 -1
- package/dist/field/features/lists/unorderedlist/markdownTransformer.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/client.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/client.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/index.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/index.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/client.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/client.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/index.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/index.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/client.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/client.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/index.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/index.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/client.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/client.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/index.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/index.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/client.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/client.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/index.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/index.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/client.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/client.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/index.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/index.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/client.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/client.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/index.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/index.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/index.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/index.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/types.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/types.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/feature.client.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/feature.client.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/feature.server.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/feature.server.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/converter.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/converter.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/index.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/index.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/heading/client.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/heading/client.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/heading/converter.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/heading/converter.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/heading/index.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/heading/index.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/indent/client.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/indent/client.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/indent/converter.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/indent/converter.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/indent/index.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/indent/index.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/link/client.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/link/client.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/link/converter.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/link/converter.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/link/index.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/link/index.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/client.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/client.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/converter.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/converter.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/index.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/index.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/client.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/client.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/converter.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/converter.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/index.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/index.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/client.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/client.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/index.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/index.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/client.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/client.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/converter.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/converter.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/index.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/index.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/client.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/client.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/index.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/index.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/client.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/client.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/index.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/index.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/defaultConverters.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/defaultConverters.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/index.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/index.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/converter/types.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/types.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/feature.client.js +1 -1
- package/dist/field/features/migrations/slateToLexical/feature.client.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/feature.server.js +1 -1
- package/dist/field/features/migrations/slateToLexical/feature.server.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js +1 -1
- package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js.map +1 -0
- package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js +1 -1
- package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +1 -0
- package/dist/field/features/paragraph/feature.client.js +1 -1
- package/dist/field/features/paragraph/feature.client.js.map +1 -0
- package/dist/field/features/paragraph/feature.server.js +1 -1
- package/dist/field/features/paragraph/feature.server.js.map +1 -0
- package/dist/field/features/relationship/drawer/commands.js +1 -1
- package/dist/field/features/relationship/drawer/commands.js.map +1 -0
- package/dist/field/features/relationship/drawer/index.js +1 -1
- package/dist/field/features/relationship/drawer/index.js.map +1 -0
- package/dist/field/features/relationship/feature.client.js +1 -1
- package/dist/field/features/relationship/feature.client.js.map +1 -0
- package/dist/field/features/relationship/feature.server.js +1 -1
- package/dist/field/features/relationship/feature.server.js.map +1 -0
- package/dist/field/features/relationship/nodes/RelationshipNode.js +1 -1
- package/dist/field/features/relationship/nodes/RelationshipNode.js.map +1 -0
- package/dist/field/features/relationship/nodes/components/RelationshipComponent.js +1 -1
- package/dist/field/features/relationship/nodes/components/RelationshipComponent.js.map +1 -0
- package/dist/field/features/relationship/plugins/index.js +1 -1
- package/dist/field/features/relationship/plugins/index.js.map +1 -0
- package/dist/field/features/relationship/populationPromise.js +1 -1
- package/dist/field/features/relationship/populationPromise.js.map +1 -0
- package/dist/field/features/relationship/utils/EnabledRelationshipsCondition.js +1 -1
- package/dist/field/features/relationship/utils/EnabledRelationshipsCondition.js.map +1 -0
- package/dist/field/features/types.js +1 -1
- package/dist/field/features/types.js.map +1 -0
- package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js +1 -1
- package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js.map +1 -0
- package/dist/field/features/upload/component/index.js +1 -1
- package/dist/field/features/upload/component/index.js.map +1 -0
- package/dist/field/features/upload/drawer/commands.js +1 -1
- package/dist/field/features/upload/drawer/commands.js.map +1 -0
- package/dist/field/features/upload/drawer/index.js +1 -1
- package/dist/field/features/upload/drawer/index.js.map +1 -0
- package/dist/field/features/upload/feature.client.js +1 -1
- package/dist/field/features/upload/feature.client.js.map +1 -0
- package/dist/field/features/upload/feature.server.js +1 -1
- package/dist/field/features/upload/feature.server.js.map +1 -0
- package/dist/field/features/upload/nodes/UploadNode.js +1 -1
- package/dist/field/features/upload/nodes/UploadNode.js.map +1 -0
- package/dist/field/features/upload/plugin/index.js +1 -1
- package/dist/field/features/upload/plugin/index.js.map +1 -0
- package/dist/field/features/upload/populationPromise.js +1 -1
- package/dist/field/features/upload/populationPromise.js.map +1 -0
- package/dist/field/features/upload/validate.js +1 -1
- package/dist/field/features/upload/validate.js.map +1 -0
- package/dist/field/index.js +1 -1
- package/dist/field/index.js.map +1 -0
- package/dist/field/lexical/EditorPlugin.js +1 -1
- package/dist/field/lexical/EditorPlugin.js.map +1 -0
- package/dist/field/lexical/LexicalEditor.js +1 -1
- package/dist/field/lexical/LexicalEditor.js.map +1 -0
- package/dist/field/lexical/LexicalProvider.js +1 -1
- package/dist/field/lexical/LexicalProvider.js.map +1 -0
- package/dist/field/lexical/config/client/EditorConfigProvider.js +1 -1
- package/dist/field/lexical/config/client/EditorConfigProvider.js.map +1 -0
- package/dist/field/lexical/config/client/default.js +1 -1
- package/dist/field/lexical/config/client/default.js.map +1 -0
- package/dist/field/lexical/config/client/loader.js +1 -1
- package/dist/field/lexical/config/client/loader.js.map +1 -0
- package/dist/field/lexical/config/client/sanitize.js +1 -1
- package/dist/field/lexical/config/client/sanitize.js.map +1 -0
- package/dist/field/lexical/config/server/default.js +1 -1
- package/dist/field/lexical/config/server/default.js.map +1 -0
- package/dist/field/lexical/config/server/loader.js +1 -1
- package/dist/field/lexical/config/server/loader.js.map +1 -0
- package/dist/field/lexical/config/server/sanitize.js +1 -1
- package/dist/field/lexical/config/server/sanitize.js.map +1 -0
- package/dist/field/lexical/config/types.js +1 -1
- package/dist/field/lexical/config/types.js.map +1 -0
- package/dist/field/lexical/nodes/index.js +1 -1
- package/dist/field/lexical/nodes/index.js.map +1 -0
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.js +1 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.js.map +1 -0
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.js +1 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.js.map +1 -0
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.js +1 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.js.map +1 -0
- package/dist/field/lexical/plugins/FloatingSelectToolbar/index.js +1 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/index.js.map +1 -0
- package/dist/field/lexical/plugins/FloatingSelectToolbar/types.js +1 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/types.js.map +1 -0
- package/dist/field/lexical/plugins/MarkdownShortcut/index.js +1 -1
- package/dist/field/lexical/plugins/MarkdownShortcut/index.js.map +1 -0
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +1 -1
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -0
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +1 -1
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -0
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js +1 -1
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js.map +1 -0
- package/dist/field/lexical/plugins/SlashMenu/index.js +1 -1
- package/dist/field/lexical/plugins/SlashMenu/index.js.map +1 -0
- package/dist/field/lexical/plugins/SlashMenu/useMenuTriggerMatch.js +1 -1
- package/dist/field/lexical/plugins/SlashMenu/useMenuTriggerMatch.js.map +1 -0
- package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js +1 -1
- package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/debounce.js +1 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/debounce.js.map +1 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js +1 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js.map +1 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.js +1 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.js.map +1 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js +1 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js.map +1 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js +1 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +1 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js.map +1 -0
- package/dist/field/lexical/plugins/handles/utils/getCollapsedMargins.js +1 -1
- package/dist/field/lexical/plugins/handles/utils/getCollapsedMargins.js.map +1 -0
- package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.js +1 -1
- package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.js.map +1 -0
- package/dist/field/lexical/plugins/handles/utils/isOnHandleElement.js +1 -1
- package/dist/field/lexical/plugins/handles/utils/isOnHandleElement.js.map +1 -0
- package/dist/field/lexical/plugins/handles/utils/setHandlePosition.js +1 -1
- package/dist/field/lexical/plugins/handles/utils/setHandlePosition.js.map +1 -0
- package/dist/field/lexical/theme/EditorTheme.js +1 -1
- package/dist/field/lexical/theme/EditorTheme.js.map +1 -0
- package/dist/field/lexical/ui/ContentEditable.js +1 -1
- package/dist/field/lexical/ui/ContentEditable.js.map +1 -0
- package/dist/field/lexical/ui/icons/AI/index.js +1 -1
- package/dist/field/lexical/ui/icons/AI/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/AlignCenter/index.js +1 -1
- package/dist/field/lexical/ui/icons/AlignCenter/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/AlignJustify/index.js +1 -1
- package/dist/field/lexical/ui/icons/AlignJustify/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/AlignLeft/index.js +1 -1
- package/dist/field/lexical/ui/icons/AlignLeft/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/AlignRight/index.js +1 -1
- package/dist/field/lexical/ui/icons/AlignRight/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/Block/index.js +1 -1
- package/dist/field/lexical/ui/icons/Block/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/Blockquote/index.js +1 -1
- package/dist/field/lexical/ui/icons/Blockquote/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/Bold/index.js +1 -1
- package/dist/field/lexical/ui/icons/Bold/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/Checklist/index.js +1 -1
- package/dist/field/lexical/ui/icons/Checklist/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/Code/index.js +1 -1
- package/dist/field/lexical/ui/icons/Code/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/CodeBlock/index.js +1 -1
- package/dist/field/lexical/ui/icons/CodeBlock/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/H1/index.js +1 -1
- package/dist/field/lexical/ui/icons/H1/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/H2/index.js +1 -1
- package/dist/field/lexical/ui/icons/H2/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/H3/index.js +1 -1
- package/dist/field/lexical/ui/icons/H3/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/H4/index.js +1 -1
- package/dist/field/lexical/ui/icons/H4/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/H5/index.js +1 -1
- package/dist/field/lexical/ui/icons/H5/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/H6/index.js +1 -1
- package/dist/field/lexical/ui/icons/H6/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/IndentDecrease/index.js +1 -1
- package/dist/field/lexical/ui/icons/IndentDecrease/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/IndentIncrease/index.js +1 -1
- package/dist/field/lexical/ui/icons/IndentIncrease/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/Italic/index.js +1 -1
- package/dist/field/lexical/ui/icons/Italic/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/Link/index.js +1 -1
- package/dist/field/lexical/ui/icons/Link/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/OrderedList/index.js +1 -1
- package/dist/field/lexical/ui/icons/OrderedList/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/Relationship/index.js +1 -1
- package/dist/field/lexical/ui/icons/Relationship/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/Strikethrough/index.js +1 -1
- package/dist/field/lexical/ui/icons/Strikethrough/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/Subscript/index.js +1 -1
- package/dist/field/lexical/ui/icons/Subscript/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/Superscript/index.js +1 -1
- package/dist/field/lexical/ui/icons/Superscript/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/Text/index.js +1 -1
- package/dist/field/lexical/ui/icons/Text/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/Underline/index.js +1 -1
- package/dist/field/lexical/ui/icons/Underline/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/UnorderedList/index.js +1 -1
- package/dist/field/lexical/ui/icons/UnorderedList/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/Upload/index.js +1 -1
- package/dist/field/lexical/ui/icons/Upload/index.js.map +1 -0
- package/dist/field/lexical/utils/canUseDOM.js +1 -1
- package/dist/field/lexical/utils/canUseDOM.js.map +1 -0
- package/dist/field/lexical/utils/cloneDeep.js +1 -1
- package/dist/field/lexical/utils/cloneDeep.js.map +1 -0
- package/dist/field/lexical/utils/environment.js +1 -1
- package/dist/field/lexical/utils/environment.js.map +1 -0
- package/dist/field/lexical/utils/getDOMRangeRect.js +1 -1
- package/dist/field/lexical/utils/getDOMRangeRect.js.map +1 -0
- package/dist/field/lexical/utils/getSelectedNode.js +1 -1
- package/dist/field/lexical/utils/getSelectedNode.js.map +1 -0
- package/dist/field/lexical/utils/guard.js +1 -1
- package/dist/field/lexical/utils/guard.js.map +1 -0
- package/dist/field/lexical/utils/invariant.js +1 -1
- package/dist/field/lexical/utils/invariant.js.map +1 -0
- package/dist/field/lexical/utils/joinClasses.js +1 -1
- package/dist/field/lexical/utils/joinClasses.js.map +1 -0
- package/dist/field/lexical/utils/markdown/createBlockNode.js +1 -1
- package/dist/field/lexical/utils/markdown/createBlockNode.js.map +1 -0
- package/dist/field/lexical/utils/nodeFormat.js +1 -1
- package/dist/field/lexical/utils/nodeFormat.js.map +1 -0
- package/dist/field/lexical/utils/point.js +1 -1
- package/dist/field/lexical/utils/point.js.map +1 -0
- package/dist/field/lexical/utils/rect.js +1 -1
- package/dist/field/lexical/utils/rect.js.map +1 -0
- package/dist/field/lexical/utils/setFloatingElemPosition.js +1 -1
- package/dist/field/lexical/utils/setFloatingElemPosition.js.map +1 -0
- package/dist/field/lexical/utils/setFloatingElemPositionForLinkEditor.js +1 -1
- package/dist/field/lexical/utils/setFloatingElemPositionForLinkEditor.js.map +1 -0
- package/dist/field/lexical/utils/swipe.js +1 -1
- package/dist/field/lexical/utils/swipe.js.map +1 -0
- package/dist/field/lexical/utils/url.js +1 -1
- package/dist/field/lexical/utils/url.js.map +1 -0
- package/dist/generateComponentMap.js +1 -1
- package/dist/generateComponentMap.js.map +1 -0
- package/dist/generateSchemaMap.js +1 -1
- package/dist/generateSchemaMap.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -0
- package/dist/populate/defaultValue.js +1 -1
- package/dist/populate/defaultValue.js.map +1 -0
- package/dist/populate/populate.js +1 -1
- package/dist/populate/populate.js.map +1 -0
- package/dist/populate/recurseNestedFields.js +1 -1
- package/dist/populate/recurseNestedFields.js.map +1 -0
- package/dist/populate/richTextRelationshipPromise.js +1 -1
- package/dist/populate/richTextRelationshipPromise.js.map +1 -0
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -0
- package/dist/useLexicalFeature.js +1 -1
- package/dist/useLexicalFeature.js.map +1 -0
- package/dist/validate/index.js +1 -1
- package/dist/validate/index.js.map +1 -0
- package/dist/validate/validateNodes.js +1 -1
- package/dist/validate/validateNodes.js.map +1 -0
- package/package.json +7 -7
|
@@ -48,4 +48,4 @@ export const defaultEditorConfig = {
|
|
|
48
48
|
};
|
|
49
49
|
export const defaultSanitizedServerEditorConfig = sanitizeServerEditorConfig(defaultEditorConfig);
|
|
50
50
|
|
|
51
|
-
//# sourceMappingURL=
|
|
51
|
+
//# sourceMappingURL=default.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/field/lexical/config/server/default.ts"],"sourcesContent":["import type { EditorConfig as LexicalEditorConfig } from 'lexical/LexicalEditor.js'\n\nimport type { FeatureProviderServer } from '../../../features/types.js'\nimport type { SanitizedServerEditorConfig, ServerEditorConfig } from '../types.js'\n\nimport { AlignFeature } from '../../../features/align/feature.server.js'\nimport { BlockQuoteFeature } from '../../../features/blockquote/feature.server.js'\nimport { BoldFeature } from '../../../features/format/bold/feature.server.js'\nimport { InlineCodeFeature } from '../../../features/format/inlinecode/feature.server.js'\nimport { ItalicFeature } from '../../../features/format/italic/feature.server.js'\nimport { StrikethroughFeature } from '../../../features/format/strikethrough/feature.server.js'\nimport { SubscriptFeature } from '../../../features/format/subscript/feature.server.js'\nimport { SuperscriptFeature } from '../../../features/format/superscript/feature.server.js'\nimport { UnderlineFeature } from '../../../features/format/underline/feature.server.js'\nimport { HeadingFeature } from '../../../features/heading/feature.server.js'\nimport { IndentFeature } from '../../../features/indent/feature.server.js'\nimport { LinkFeature } from '../../../features/link/feature.server.js'\nimport { CheckListFeature } from '../../../features/lists/checklist/feature.server.js'\nimport { OrderedListFeature } from '../../../features/lists/orderedlist/feature.server.js'\nimport { UnorderedListFeature } from '../../../features/lists/unorderedlist/feature.server.js'\nimport { ParagraphFeature } from '../../../features/paragraph/feature.server.js'\nimport { RelationshipFeature } from '../../../features/relationship/feature.server.js'\nimport { UploadFeature } from '../../../features/upload/feature.server.js'\nimport { LexicalEditorTheme } from '../../theme/EditorTheme.js'\nimport { sanitizeServerEditorConfig } from './sanitize.js'\n\nexport const defaultEditorLexicalConfig: LexicalEditorConfig = {\n namespace: 'lexical',\n theme: LexicalEditorTheme,\n}\n\nexport const defaultEditorFeatures: FeatureProviderServer<unknown, unknown>[] = [\n BoldFeature(),\n ItalicFeature(),\n UnderlineFeature(),\n StrikethroughFeature(),\n SubscriptFeature(),\n SuperscriptFeature(),\n InlineCodeFeature(),\n ParagraphFeature(),\n HeadingFeature(),\n AlignFeature(),\n IndentFeature(),\n UnorderedListFeature(),\n OrderedListFeature(),\n CheckListFeature(),\n LinkFeature(),\n RelationshipFeature(),\n BlockQuoteFeature(),\n UploadFeature(),\n]\n\nexport const defaultEditorConfig: ServerEditorConfig = {\n features: defaultEditorFeatures,\n lexical: defaultEditorLexicalConfig,\n}\n\nexport const defaultSanitizedServerEditorConfig: SanitizedServerEditorConfig =\n sanitizeServerEditorConfig(defaultEditorConfig)\n"],"names":["AlignFeature","BlockQuoteFeature","BoldFeature","InlineCodeFeature","ItalicFeature","StrikethroughFeature","SubscriptFeature","SuperscriptFeature","UnderlineFeature","HeadingFeature","IndentFeature","LinkFeature","CheckListFeature","OrderedListFeature","UnorderedListFeature","ParagraphFeature","RelationshipFeature","UploadFeature","LexicalEditorTheme","sanitizeServerEditorConfig","defaultEditorLexicalConfig","namespace","theme","defaultEditorFeatures","defaultEditorConfig","features","lexical","defaultSanitizedServerEditorConfig"],"mappings":"AAKA,SAASA,YAAY,QAAQ,4CAA2C;AACxE,SAASC,iBAAiB,QAAQ,iDAAgD;AAClF,SAASC,WAAW,QAAQ,kDAAiD;AAC7E,SAASC,iBAAiB,QAAQ,wDAAuD;AACzF,SAASC,aAAa,QAAQ,oDAAmD;AACjF,SAASC,oBAAoB,QAAQ,2DAA0D;AAC/F,SAASC,gBAAgB,QAAQ,uDAAsD;AACvF,SAASC,kBAAkB,QAAQ,yDAAwD;AAC3F,SAASC,gBAAgB,QAAQ,uDAAsD;AACvF,SAASC,cAAc,QAAQ,8CAA6C;AAC5E,SAASC,aAAa,QAAQ,6CAA4C;AAC1E,SAASC,WAAW,QAAQ,2CAA0C;AACtE,SAASC,gBAAgB,QAAQ,sDAAqD;AACtF,SAASC,kBAAkB,QAAQ,wDAAuD;AAC1F,SAASC,oBAAoB,QAAQ,0DAAyD;AAC9F,SAASC,gBAAgB,QAAQ,gDAA+C;AAChF,SAASC,mBAAmB,QAAQ,mDAAkD;AACtF,SAASC,aAAa,QAAQ,6CAA4C;AAC1E,SAASC,kBAAkB,QAAQ,6BAA4B;AAC/D,SAASC,0BAA0B,QAAQ,gBAAe;AAE1D,OAAO,MAAMC,6BAAkD;IAC7DC,WAAW;IACXC,OAAOJ;AACT,EAAC;AAED,OAAO,MAAMK,wBAAmE;IAC9ErB;IACAE;IACAI;IACAH;IACAC;IACAC;IACAJ;IACAY;IACAN;IACAT;IACAU;IACAI;IACAD;IACAD;IACAD;IACAK;IACAf;IACAgB;CACD,CAAA;AAED,OAAO,MAAMO,sBAA0C;IACrDC,UAAUF;IACVG,SAASN;AACX,EAAC;AAED,OAAO,MAAMO,qCACXR,2BAA2BK,qBAAoB"}
|
|
@@ -115,4 +115,4 @@ export function loadFeatures({ unSanitizedEditorConfig }) {
|
|
|
115
115
|
return resolvedFeatures;
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL2NvbmZpZy9zZXJ2ZXIvbG9hZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgRmVhdHVyZVByb3ZpZGVyU2VydmVyLFxuICBSZXNvbHZlZFNlcnZlckZlYXR1cmVNYXAsXG4gIFNlcnZlckZlYXR1cmVQcm92aWRlck1hcCxcbn0gZnJvbSAnLi4vLi4vLi4vZmVhdHVyZXMvdHlwZXMuanMnXG5pbXBvcnQgdHlwZSB7IFNlcnZlckVkaXRvckNvbmZpZyB9IGZyb20gJy4uL3R5cGVzLmpzJ1xuXG50eXBlIERlcGVuZGVuY3lHcmFwaCA9IHtcbiAgW2tleTogc3RyaW5nXToge1xuICAgIGRlcGVuZGVuY2llczogc3RyaW5nW11cbiAgICBkZXBlbmRlbmNpZXNQcmlvcml0eTogc3RyaW5nW11cbiAgICBkZXBlbmRlbmNpZXNTb2Z0OiBzdHJpbmdbXVxuICAgIGZlYXR1cmVQcm92aWRlcjogRmVhdHVyZVByb3ZpZGVyU2VydmVyPHVua25vd24sIHVua25vd24+XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVwZW5kZW5jeUdyYXBoKFxuICBmZWF0dXJlUHJvdmlkZXJzOiBGZWF0dXJlUHJvdmlkZXJTZXJ2ZXI8dW5rbm93biwgdW5rbm93bj5bXSxcbik6IERlcGVuZGVuY3lHcmFwaCB7XG4gIGNvbnN0IGdyYXBoOiBEZXBlbmRlbmN5R3JhcGggPSB7fVxuICBmb3IgKGNvbnN0IGZwIG9mIGZlYXR1cmVQcm92aWRlcnMpIHtcbiAgICBncmFwaFtmcC5rZXldID0ge1xuICAgICAgZGVwZW5kZW5jaWVzOiBmcC5kZXBlbmRlbmNpZXMgfHwgW10sXG4gICAgICBkZXBlbmRlbmNpZXNQcmlvcml0eTogZnAuZGVwZW5kZW5jaWVzUHJpb3JpdHkgfHwgW10sXG4gICAgICBkZXBlbmRlbmNpZXNTb2Z0OiBmcC5kZXBlbmRlbmNpZXNTb2Z0IHx8IFtdLFxuICAgICAgZmVhdHVyZVByb3ZpZGVyOiBmcCxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGdyYXBoXG59XG5cbmZ1bmN0aW9uIHRvcG9sb2dpY2FsbHlTb3J0RmVhdHVyZXMoXG4gIGZlYXR1cmVQcm92aWRlcnM6IEZlYXR1cmVQcm92aWRlclNlcnZlcjx1bmtub3duLCB1bmtub3duPltdLFxuKTogRmVhdHVyZVByb3ZpZGVyU2VydmVyPHVua25vd24sIHVua25vd24+W10ge1xuICBjb25zdCBncmFwaCA9IGNyZWF0ZURlcGVuZGVuY3lHcmFwaChmZWF0dXJlUHJvdmlkZXJzKVxuICBjb25zdCB2aXNpdGVkOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9XG4gIGNvbnN0IHN0YWNrOiBGZWF0dXJlUHJvdmlkZXJTZXJ2ZXI8dW5rbm93biwgdW5rbm93bj5bXSA9IFtdXG5cbiAgZm9yIChjb25zdCBrZXkgaW4gZ3JhcGgpIHtcbiAgICBpZiAoIXZpc2l0ZWRba2V5XSkge1xuICAgICAgdmlzaXQoZ3JhcGgsIGtleSwgdmlzaXRlZCwgc3RhY2spXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YWNrLnJldmVyc2UoKVxufVxuXG5mdW5jdGlvbiB2aXNpdChcbiAgZ3JhcGg6IERlcGVuZGVuY3lHcmFwaCxcbiAga2V5OiBzdHJpbmcsXG4gIHZpc2l0ZWQ6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9LFxuICBzdGFjazogRmVhdHVyZVByb3ZpZGVyU2VydmVyPHVua25vd24sIHVua25vd24+W10sXG4gIGN1cnJlbnRQYXRoOiBzdHJpbmdbXSA9IFtdLFxuKSB7XG4gIGlmICghZ3JhcGhba2V5XSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmVhdHVyZSBrZXkgJHtrZXl9IGlzIG5vdCBwcmVzZW50IGluIHRoZSBkZXBlbmRlbmN5IGdyYXBoLmApXG4gIH1cblxuICBpZiAoY3VycmVudFBhdGguaW5jbHVkZXMoa2V5KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2lyY3VsYXIgZGVwZW5kZW5jeSBkZXRlY3RlZDogJHtjdXJyZW50UGF0aC5qb2luKCcgLT4gJyl9IC0+ICR7a2V5fWApXG4gIH1cblxuICBpZiAodmlzaXRlZFtrZXldKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2aXNpdGVkW2tleV0gPSB0cnVlXG4gIGN1cnJlbnRQYXRoLnB1c2goa2V5KVxuXG4gIC8vIEZpcnN0IHByb2Nlc3MgdGhlIGhhcmQgcHJpb3JpdHkgZGVwZW5kZW5jaWVzXG4gIGZvciAoY29uc3QgZGVwIG9mIGdyYXBoW2tleV0uZGVwZW5kZW5jaWVzUHJpb3JpdHkpIHtcbiAgICBpZiAoIXZpc2l0ZWRbZGVwXSkge1xuICAgICAgdmlzaXQoZ3JhcGgsIGRlcCwgdmlzaXRlZCwgc3RhY2ssIGN1cnJlbnRQYXRoKVxuICAgIH1cbiAgfVxuXG4gIC8vIFRoZW4gcHJvY2VzcyB0aGUgbm9ybWFsIGRlcGVuZGVuY2llcywgYnV0IG1ha2Ugc3VyZSB0byBub3QgdmlvbGF0ZSBoYXJkIGRlcGVuZGVuY2llc1xuICBmb3IgKGNvbnN0IGRlcCBvZiBncmFwaFtrZXldLmRlcGVuZGVuY2llcykge1xuICAgIGlmICghdmlzaXRlZFtkZXBdICYmICFncmFwaFtrZXldLmRlcGVuZGVuY2llc1ByaW9yaXR5LmluY2x1ZGVzKGRlcCkpIHtcbiAgICAgIHZpc2l0KGdyYXBoLCBkZXAsIHZpc2l0ZWQsIHN0YWNrLCBjdXJyZW50UGF0aClcbiAgICB9XG4gIH1cblxuICAvLyBUaGVuIHByb2Nlc3MgdGhlIHNvZnQgZGVwZW5kZW5jaWVzLiBNYWtlIHN1cmUgdG8gbm90IHZpb2xhdGUgaGFyZCBhbmQgbm9ybWFsIGRlcGVuZGVuY2llcy5cbiAgZm9yIChjb25zdCBkZXAgb2YgZ3JhcGhba2V5XS5kZXBlbmRlbmNpZXNTb2Z0KSB7XG4gICAgaWYgKFxuICAgICAgZ3JhcGhbZGVwXSAmJlxuICAgICAgIXZpc2l0ZWRbZGVwXSAmJlxuICAgICAgIWdyYXBoW2tleV0uZGVwZW5kZW5jaWVzUHJpb3JpdHkuaW5jbHVkZXMoZGVwKSAmJlxuICAgICAgIWdyYXBoW2tleV0uZGVwZW5kZW5jaWVzLmluY2x1ZGVzKGRlcClcbiAgICApIHtcbiAgICAgIHZpc2l0KGdyYXBoLCBkZXAsIHZpc2l0ZWQsIHN0YWNrLCBjdXJyZW50UGF0aClcbiAgICB9XG4gIH1cblxuICBzdGFjay5wdXNoKGdyYXBoW2tleV0uZmVhdHVyZVByb3ZpZGVyKVxuICBjdXJyZW50UGF0aC5wb3AoKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc29ydEZlYXR1cmVzRm9yT3B0aW1hbExvYWRpbmcoXG4gIGZlYXR1cmVQcm92aWRlcnM6IEZlYXR1cmVQcm92aWRlclNlcnZlcjx1bmtub3duLCB1bmtub3duPltdLFxuKTogRmVhdHVyZVByb3ZpZGVyU2VydmVyPHVua25vd24sIHVua25vd24+W10ge1xuICByZXR1cm4gdG9wb2xvZ2ljYWxseVNvcnRGZWF0dXJlcyhmZWF0dXJlUHJvdmlkZXJzKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZEZlYXR1cmVzKHtcbiAgdW5TYW5pdGl6ZWRFZGl0b3JDb25maWcsXG59OiB7XG4gIHVuU2FuaXRpemVkRWRpdG9yQ29uZmlnOiBTZXJ2ZXJFZGl0b3JDb25maWdcbn0pOiBSZXNvbHZlZFNlcnZlckZlYXR1cmVNYXAge1xuICAvLyBGaXJzdCByZW1vdmUgYWxsIGR1cGxpY2F0ZSBmZWF0dXJlcy4gVGhlIExBU1QgZmVhdHVyZSB3aXRoIGEgZ2l2ZW4ga2V5IHdpbnMuXG4gIHVuU2FuaXRpemVkRWRpdG9yQ29uZmlnLmZlYXR1cmVzID0gdW5TYW5pdGl6ZWRFZGl0b3JDb25maWcuZmVhdHVyZXNcbiAgICAucmV2ZXJzZSgpXG4gICAgLmZpbHRlcigoZiwgaSwgYXJyKSA9PiB7XG4gICAgICBjb25zdCBmaXJzdEluZGV4ID0gYXJyLmZpbmRJbmRleCgoZjIpID0+IGYyLmtleSA9PT0gZi5rZXkpXG4gICAgICByZXR1cm4gZmlyc3RJbmRleCA9PT0gaVxuICAgIH0pXG4gICAgLnJldmVyc2UoKVxuXG4gIHVuU2FuaXRpemVkRWRpdG9yQ29uZmlnLmZlYXR1cmVzID0gc29ydEZlYXR1cmVzRm9yT3B0aW1hbExvYWRpbmcodW5TYW5pdGl6ZWRFZGl0b3JDb25maWcuZmVhdHVyZXMpXG5cbiAgY29uc3QgZmVhdHVyZVByb3ZpZGVyTWFwOiBTZXJ2ZXJGZWF0dXJlUHJvdmlkZXJNYXAgPSBuZXcgTWFwKFxuICAgIHVuU2FuaXRpemVkRWRpdG9yQ29uZmlnLmZlYXR1cmVzLm1hcChcbiAgICAgIChmKSA9PiBbZi5rZXksIGZdIGFzIFtzdHJpbmcsIEZlYXR1cmVQcm92aWRlclNlcnZlcjx1bmtub3duLCB1bmtub3duPl0sXG4gICAgKSxcbiAgKVxuXG4gIGNvbnN0IHJlc29sdmVkRmVhdHVyZXM6IFJlc29sdmVkU2VydmVyRmVhdHVyZU1hcCA9IG5ldyBNYXAoKVxuXG4gIC8vIE1ha2Ugc3VyZSBhbGwgZGVwZW5kZW5jaWVzIGRlY2xhcmVkIGluIHRoZSByZXNwZWN0aXZlIGZlYXR1cmVzIGV4aXN0XG4gIGxldCBsb2FkZWQgPSAwXG4gIGZvciAoY29uc3QgZmVhdHVyZVByb3ZpZGVyIG9mIHVuU2FuaXRpemVkRWRpdG9yQ29uZmlnLmZlYXR1cmVzKSB7XG4gICAgaWYgKCFmZWF0dXJlUHJvdmlkZXIua2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBBIEZlYXR1cmUgeW91J3ZlIGFkZGVkIGRvZXMgbm90IGhhdmUgYSBrZXkuIFBsZWFzZSBhZGQgYSBrZXkgdG8gdGhlIGZlYXR1cmUuIFRoaXMgaXMgdXNlZCB0byB1bmlxdWVseSBpZGVudGlmeSB0aGUgZmVhdHVyZS5gLFxuICAgICAgKVxuICAgIH1cbiAgICBpZiAoZmVhdHVyZVByb3ZpZGVyLmRlcGVuZGVuY2llcz8ubGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IGRlcGVuZGVuY3lLZXkgb2YgZmVhdHVyZVByb3ZpZGVyLmRlcGVuZGVuY2llcykge1xuICAgICAgICBjb25zdCBmb3VuZCA9IHVuU2FuaXRpemVkRWRpdG9yQ29uZmlnLmZlYXR1cmVzLmZpbmQoKGYpID0+IGYua2V5ID09PSBkZXBlbmRlbmN5S2V5KVxuICAgICAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYEZlYXR1cmUgJHtmZWF0dXJlUHJvdmlkZXIua2V5fSBoYXMgYSBkZXBlbmRlbmN5ICR7ZGVwZW5kZW5jeUtleX0gd2hpY2ggZG9lcyBub3QgZXhpc3QuYCxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZmVhdHVyZVByb3ZpZGVyLmRlcGVuZGVuY2llc1ByaW9yaXR5Py5sZW5ndGgpIHtcbiAgICAgIGZvciAoY29uc3QgcHJpb3JpdHlEZXBlbmRlbmN5S2V5IG9mIGZlYXR1cmVQcm92aWRlci5kZXBlbmRlbmNpZXNQcmlvcml0eSkge1xuICAgICAgICAvLyBsb29rIGluIHRoZSByZXNvbHZlZCBmZWF0dXJlcyBpbnN0ZWFkIG9mIHRoZSBlZGl0b3JDb25maWcuZmVhdHVyZXMsIGFzIGEgZGVwZW5kZW5jeSByZXF1aXJlcyB0aGUgZmVhdHVyZSB0byBiZSBsb2FkZWQgYmVmb3JlIGl0LCBjb250cmFyeSB0byBhIHNvZnQtZGVwZW5kZW5jeVxuICAgICAgICBjb25zdCBmb3VuZCA9IHJlc29sdmVkRmVhdHVyZXMuZ2V0KHByaW9yaXR5RGVwZW5kZW5jeUtleSlcbiAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgIGNvbnN0IGV4aXN0c0luRWRpdG9yQ29uZmlnID0gdW5TYW5pdGl6ZWRFZGl0b3JDb25maWcuZmVhdHVyZXMuZmluZChcbiAgICAgICAgICAgIChmKSA9PiBmLmtleSA9PT0gcHJpb3JpdHlEZXBlbmRlbmN5S2V5LFxuICAgICAgICAgIClcbiAgICAgICAgICBpZiAoIWV4aXN0c0luRWRpdG9yQ29uZmlnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBGZWF0dXJlICR7ZmVhdHVyZVByb3ZpZGVyLmtleX0gaGFzIGEgcHJpb3JpdHkgZGVwZW5kZW5jeSAke3ByaW9yaXR5RGVwZW5kZW5jeUtleX0gd2hpY2ggZG9lcyBub3QgZXhpc3QuYCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgRmVhdHVyZSAke2ZlYXR1cmVQcm92aWRlci5rZXl9IGhhcyBhIHByaW9yaXR5IGRlcGVuZGVuY3kgJHtwcmlvcml0eURlcGVuZGVuY3lLZXl9IHdoaWNoIGlzIG5vdCBsb2FkZWQgYmVmb3JlIGl0LmAsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZmVhdHVyZSA9IGZlYXR1cmVQcm92aWRlci5mZWF0dXJlKHtcbiAgICAgIGZlYXR1cmVQcm92aWRlck1hcCxcbiAgICAgIHJlc29sdmVkRmVhdHVyZXMsXG4gICAgICB1blNhbml0aXplZEVkaXRvckNvbmZpZyxcbiAgICB9KVxuICAgIHJlc29sdmVkRmVhdHVyZXMuc2V0KGZlYXR1cmVQcm92aWRlci5rZXksIHtcbiAgICAgIC4uLmZlYXR1cmUsXG4gICAgICBkZXBlbmRlbmNpZXM6IGZlYXR1cmVQcm92aWRlci5kZXBlbmRlbmNpZXMsXG4gICAgICBkZXBlbmRlbmNpZXNQcmlvcml0eTogZmVhdHVyZVByb3ZpZGVyLmRlcGVuZGVuY2llc1ByaW9yaXR5LFxuICAgICAgZGVwZW5kZW5jaWVzU29mdDogZmVhdHVyZVByb3ZpZGVyLmRlcGVuZGVuY2llc1NvZnQsXG4gICAgICBrZXk6IGZlYXR1cmVQcm92aWRlci5rZXksXG4gICAgICBvcmRlcjogbG9hZGVkLFxuICAgIH0pXG5cbiAgICBsb2FkZWQrK1xuICB9XG5cbiAgcmV0dXJuIHJlc29sdmVkRmVhdHVyZXNcbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVEZXBlbmRlbmN5R3JhcGgiLCJmZWF0dXJlUHJvdmlkZXJzIiwiZ3JhcGgiLCJmcCIsImtleSIsImRlcGVuZGVuY2llcyIsImRlcGVuZGVuY2llc1ByaW9yaXR5IiwiZGVwZW5kZW5jaWVzU29mdCIsImZlYXR1cmVQcm92aWRlciIsInRvcG9sb2dpY2FsbHlTb3J0RmVhdHVyZXMiLCJ2aXNpdGVkIiwic3RhY2siLCJ2aXNpdCIsInJldmVyc2UiLCJjdXJyZW50UGF0aCIsIkVycm9yIiwiaW5jbHVkZXMiLCJqb2luIiwicHVzaCIsImRlcCIsInBvcCIsInNvcnRGZWF0dXJlc0Zvck9wdGltYWxMb2FkaW5nIiwibG9hZEZlYXR1cmVzIiwidW5TYW5pdGl6ZWRFZGl0b3JDb25maWciLCJmZWF0dXJlcyIsImZpbHRlciIsImYiLCJpIiwiYXJyIiwiZmlyc3RJbmRleCIsImZpbmRJbmRleCIsImYyIiwiZmVhdHVyZVByb3ZpZGVyTWFwIiwiTWFwIiwibWFwIiwicmVzb2x2ZWRGZWF0dXJlcyIsImxvYWRlZCIsImxlbmd0aCIsImRlcGVuZGVuY3lLZXkiLCJmb3VuZCIsImZpbmQiLCJwcmlvcml0eURlcGVuZGVuY3lLZXkiLCJnZXQiLCJleGlzdHNJbkVkaXRvckNvbmZpZyIsImZlYXR1cmUiLCJzZXQiLCJvcmRlciJdLCJtYXBwaW5ncyI6IkFBZ0JBLFNBQVNBLHNCQUNQQyxnQkFBMkQ7SUFFM0QsTUFBTUMsUUFBeUIsQ0FBQztJQUNoQyxLQUFLLE1BQU1DLE1BQU1GLGlCQUFrQjtRQUNqQ0MsS0FBSyxDQUFDQyxHQUFHQyxHQUFHLENBQUMsR0FBRztZQUNkQyxjQUFjRixHQUFHRSxZQUFZLElBQUksRUFBRTtZQUNuQ0Msc0JBQXNCSCxHQUFHRyxvQkFBb0IsSUFBSSxFQUFFO1lBQ25EQyxrQkFBa0JKLEdBQUdJLGdCQUFnQixJQUFJLEVBQUU7WUFDM0NDLGlCQUFpQkw7UUFDbkI7SUFDRjtJQUNBLE9BQU9EO0FBQ1Q7QUFFQSxTQUFTTywwQkFDUFIsZ0JBQTJEO0lBRTNELE1BQU1DLFFBQVFGLHNCQUFzQkM7SUFDcEMsTUFBTVMsVUFBc0MsQ0FBQztJQUM3QyxNQUFNQyxRQUFtRCxFQUFFO0lBRTNELElBQUssTUFBTVAsT0FBT0YsTUFBTztRQUN2QixJ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
|
|
118
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/field/lexical/config/server/loader.ts"],"sourcesContent":["import type {\n FeatureProviderServer,\n ResolvedServerFeatureMap,\n ServerFeatureProviderMap,\n} from '../../../features/types.js'\nimport type { ServerEditorConfig } from '../types.js'\n\ntype DependencyGraph = {\n [key: string]: {\n dependencies: string[]\n dependenciesPriority: string[]\n dependenciesSoft: string[]\n featureProvider: FeatureProviderServer<unknown, unknown>\n }\n}\n\nfunction createDependencyGraph(\n featureProviders: FeatureProviderServer<unknown, unknown>[],\n): DependencyGraph {\n const graph: DependencyGraph = {}\n for (const fp of featureProviders) {\n graph[fp.key] = {\n dependencies: fp.dependencies || [],\n dependenciesPriority: fp.dependenciesPriority || [],\n dependenciesSoft: fp.dependenciesSoft || [],\n featureProvider: fp,\n }\n }\n return graph\n}\n\nfunction topologicallySortFeatures(\n featureProviders: FeatureProviderServer<unknown, unknown>[],\n): FeatureProviderServer<unknown, unknown>[] {\n const graph = createDependencyGraph(featureProviders)\n const visited: { [key: string]: boolean } = {}\n const stack: FeatureProviderServer<unknown, unknown>[] = []\n\n for (const key in graph) {\n if (!visited[key]) {\n visit(graph, key, visited, stack)\n }\n }\n\n return stack.reverse()\n}\n\nfunction visit(\n graph: DependencyGraph,\n key: string,\n visited: { [key: string]: boolean },\n stack: FeatureProviderServer<unknown, unknown>[],\n currentPath: string[] = [],\n) {\n if (!graph[key]) {\n throw new Error(`Feature key ${key} is not present in the dependency graph.`)\n }\n\n if (currentPath.includes(key)) {\n throw new Error(`Circular dependency detected: ${currentPath.join(' -> ')} -> ${key}`)\n }\n\n if (visited[key]) {\n return\n }\n\n visited[key] = true\n currentPath.push(key)\n\n // First process the hard priority dependencies\n for (const dep of graph[key].dependenciesPriority) {\n if (!visited[dep]) {\n visit(graph, dep, visited, stack, currentPath)\n }\n }\n\n // Then process the normal dependencies, but make sure to not violate hard dependencies\n for (const dep of graph[key].dependencies) {\n if (!visited[dep] && !graph[key].dependenciesPriority.includes(dep)) {\n visit(graph, dep, visited, stack, currentPath)\n }\n }\n\n // Then process the soft dependencies. Make sure to not violate hard and normal dependencies.\n for (const dep of graph[key].dependenciesSoft) {\n if (\n graph[dep] &&\n !visited[dep] &&\n !graph[key].dependenciesPriority.includes(dep) &&\n !graph[key].dependencies.includes(dep)\n ) {\n visit(graph, dep, visited, stack, currentPath)\n }\n }\n\n stack.push(graph[key].featureProvider)\n currentPath.pop()\n}\n\nexport function sortFeaturesForOptimalLoading(\n featureProviders: FeatureProviderServer<unknown, unknown>[],\n): FeatureProviderServer<unknown, unknown>[] {\n return topologicallySortFeatures(featureProviders)\n}\n\nexport function loadFeatures({\n unSanitizedEditorConfig,\n}: {\n unSanitizedEditorConfig: ServerEditorConfig\n}): ResolvedServerFeatureMap {\n // First remove all duplicate features. The LAST feature with a given key wins.\n unSanitizedEditorConfig.features = unSanitizedEditorConfig.features\n .reverse()\n .filter((f, i, arr) => {\n const firstIndex = arr.findIndex((f2) => f2.key === f.key)\n return firstIndex === i\n })\n .reverse()\n\n unSanitizedEditorConfig.features = sortFeaturesForOptimalLoading(unSanitizedEditorConfig.features)\n\n const featureProviderMap: ServerFeatureProviderMap = new Map(\n unSanitizedEditorConfig.features.map(\n (f) => [f.key, f] as [string, FeatureProviderServer<unknown, unknown>],\n ),\n )\n\n const resolvedFeatures: ResolvedServerFeatureMap = new Map()\n\n // Make sure all dependencies declared in the respective features exist\n let loaded = 0\n for (const featureProvider of unSanitizedEditorConfig.features) {\n if (!featureProvider.key) {\n throw new Error(\n `A Feature you've added does not have a key. Please add a key to the feature. This is used to uniquely identify the feature.`,\n )\n }\n if (featureProvider.dependencies?.length) {\n for (const dependencyKey of featureProvider.dependencies) {\n const found = unSanitizedEditorConfig.features.find((f) => f.key === dependencyKey)\n if (!found) {\n throw new Error(\n `Feature ${featureProvider.key} has a dependency ${dependencyKey} which does not exist.`,\n )\n }\n }\n }\n\n if (featureProvider.dependenciesPriority?.length) {\n for (const priorityDependencyKey of featureProvider.dependenciesPriority) {\n // look in the resolved features instead of the editorConfig.features, as a dependency requires the feature to be loaded before it, contrary to a soft-dependency\n const found = resolvedFeatures.get(priorityDependencyKey)\n if (!found) {\n const existsInEditorConfig = unSanitizedEditorConfig.features.find(\n (f) => f.key === priorityDependencyKey,\n )\n if (!existsInEditorConfig) {\n throw new Error(\n `Feature ${featureProvider.key} has a priority dependency ${priorityDependencyKey} which does not exist.`,\n )\n } else {\n throw new Error(\n `Feature ${featureProvider.key} has a priority dependency ${priorityDependencyKey} which is not loaded before it.`,\n )\n }\n }\n }\n }\n\n const feature = featureProvider.feature({\n featureProviderMap,\n resolvedFeatures,\n unSanitizedEditorConfig,\n })\n resolvedFeatures.set(featureProvider.key, {\n ...feature,\n dependencies: featureProvider.dependencies,\n dependenciesPriority: featureProvider.dependenciesPriority,\n dependenciesSoft: featureProvider.dependenciesSoft,\n key: featureProvider.key,\n order: loaded,\n })\n\n loaded++\n }\n\n return resolvedFeatures\n}\n"],"names":["createDependencyGraph","featureProviders","graph","fp","key","dependencies","dependenciesPriority","dependenciesSoft","featureProvider","topologicallySortFeatures","visited","stack","visit","reverse","currentPath","Error","includes","join","push","dep","pop","sortFeaturesForOptimalLoading","loadFeatures","unSanitizedEditorConfig","features","filter","f","i","arr","firstIndex","findIndex","f2","featureProviderMap","Map","map","resolvedFeatures","loaded","length","dependencyKey","found","find","priorityDependencyKey","get","existsInEditorConfig","feature","set","order"],"mappings":"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"}
|
|
@@ -62,4 +62,4 @@ export function sanitizeServerEditorConfig(editorConfig) {
|
|
|
62
62
|
};
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
//# sourceMappingURL=
|
|
65
|
+
//# sourceMappingURL=sanitize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/field/lexical/config/server/sanitize.ts"],"sourcesContent":["import type { ResolvedServerFeatureMap, SanitizedServerFeatures } from '../../../features/types.js'\nimport type { SanitizedServerEditorConfig, ServerEditorConfig } from '../types.js'\n\nimport { loadFeatures } from './loader.js'\n\nexport const sanitizeServerFeatures = (\n features: ResolvedServerFeatureMap,\n): SanitizedServerFeatures => {\n const sanitized: SanitizedServerFeatures = {\n converters: {\n html: [],\n },\n enabledFeatures: [],\n\n generatedTypes: {\n modifyOutputSchemas: [],\n },\n hooks: {\n afterReadPromises: [],\n },\n markdownTransformers: [],\n nodes: [],\n populationPromises: new Map(),\n\n validations: new Map(),\n }\n\n if (!features?.size) {\n return sanitized\n }\n\n features.forEach((feature) => {\n if (feature?.generatedTypes?.modifyOutputSchema) {\n sanitized.generatedTypes.modifyOutputSchemas.push(feature.generatedTypes.modifyOutputSchema)\n }\n if (feature.hooks) {\n if (feature.hooks.afterReadPromise) {\n sanitized.hooks.afterReadPromises = sanitized.hooks.afterReadPromises.concat(\n feature.hooks.afterReadPromise,\n )\n }\n }\n\n if (feature.nodes?.length) {\n sanitized.nodes = sanitized.nodes.concat(feature.nodes)\n feature.nodes.forEach((node) => {\n const nodeType = 'with' in node.node ? node.node.replace.getType() : node.node.getType() // TODO: Idk if this works for node replacements\n if (node?.populationPromises?.length) {\n sanitized.populationPromises.set(nodeType, node.populationPromises)\n }\n if (node?.validations?.length) {\n sanitized.validations.set(nodeType, node.validations)\n }\n if (node?.converters?.html) {\n sanitized.converters.html.push(node.converters.html)\n }\n })\n }\n\n if (feature.markdownTransformers?.length) {\n sanitized.markdownTransformers = sanitized.markdownTransformers.concat(\n feature.markdownTransformers,\n )\n }\n\n sanitized.enabledFeatures.push(feature.key)\n })\n\n return sanitized\n}\n\nexport function sanitizeServerEditorConfig(\n editorConfig: ServerEditorConfig,\n): SanitizedServerEditorConfig {\n const resolvedFeatureMap = loadFeatures({\n unSanitizedEditorConfig: editorConfig,\n })\n\n return {\n features: sanitizeServerFeatures(resolvedFeatureMap),\n lexical: editorConfig.lexical,\n resolvedFeatureMap,\n }\n}\n"],"names":["loadFeatures","sanitizeServerFeatures","features","sanitized","converters","html","enabledFeatures","generatedTypes","modifyOutputSchemas","hooks","afterReadPromises","markdownTransformers","nodes","populationPromises","Map","validations","size","forEach","feature","modifyOutputSchema","push","afterReadPromise","concat","length","node","nodeType","replace","getType","set","key","sanitizeServerEditorConfig","editorConfig","resolvedFeatureMap","unSanitizedEditorConfig","lexical"],"mappings":"AAGA,SAASA,YAAY,QAAQ,cAAa;AAE1C,OAAO,MAAMC,yBAAyB,CACpCC;IAEA,MAAMC,YAAqC;QACzCC,YAAY;YACVC,MAAM,EAAE;QACV;QACAC,iBAAiB,EAAE;QAEnBC,gBAAgB;YACdC,qBAAqB,EAAE;QACzB;QACAC,OAAO;YACLC,mBAAmB,EAAE;QACvB;QACAC,sBAAsB,EAAE;QACxBC,OAAO,EAAE;QACTC,oBAAoB,IAAIC;QAExBC,aAAa,IAAID;IACnB;IAEA,IAAI,CAACZ,UAAUc,MAAM;QACnB,OAAOb;IACT;IAEAD,SAASe,OAAO,CAAC,CAACC;QAChB,IAAIA,SAASX,gBAAgBY,oBAAoB;YAC/ChB,UAAUI,cAAc,CAACC,mBAAmB,CAACY,IAAI,CAACF,QAAQX,cAAc,CAACY,kBAAkB;QAC7F;QACA,IAAID,QAAQT,KAAK,EAAE;YACjB,IAAIS,QAAQT,KAAK,CAACY,gBAAgB,EAAE;gBAClClB,UAAUM,KAAK,CAACC,iBAAiB,GAAGP,UAAUM,KAAK,CAACC,iBAAiB,CAACY,MAAM,CAC1EJ,QAAQT,KAAK,CAACY,gBAAgB;YAElC;QACF;QAEA,IAAIH,QAAQN,KAAK,EAAEW,QAAQ;YACzBpB,UAAUS,KAAK,GAAGT,UAAUS,KAAK,CAACU,MAAM,CAACJ,QAAQN,KAAK;YACtDM,QAAQN,KAAK,CAACK,OAAO,CAAC,CAACO;gBACrB,MAAMC,WAAW,UAAUD,KAAKA,IAAI,GAAGA,KAAKA,IAAI,CAACE,OAAO,CAACC,OAAO,KAAKH,KAAKA,IAAI,CAACG,OAAO,GAAG,gDAAgD;;gBACzI,IAAIH,MAAMX,oBAAoBU,QAAQ;oBACpCpB,UAAUU,kBAAkB,CAACe,GAAG,CAACH,UAAUD,KAAKX,kBAAkB;gBACpE;gBACA,IAAIW,MAAMT,aAAaQ,QAAQ;oBAC7BpB,UAAUY,WAAW,CAACa,GAAG,CAACH,UAAUD,KAAKT,WAAW;gBACtD;gBACA,IAAIS,MAAMpB,YAAYC,MAAM;oBAC1BF,UAAUC,UAAU,CAACC,IAAI,CAACe,IAAI,CAACI,KAAKpB,UAAU,CAACC,IAAI;gBACrD;YACF;QACF;QAEA,IAAIa,QAAQP,oBAAoB,EAAEY,QAAQ;YACxCpB,UAAUQ,oBAAoB,GAAGR,UAAUQ,oBAAoB,CAACW,MAAM,CACpEJ,QAAQP,oBAAoB;QAEhC;QAEAR,UAAUG,eAAe,CAACc,IAAI,CAACF,QAAQW,GAAG;IAC5C;IAEA,OAAO1B;AACT,EAAC;AAED,OAAO,SAAS2B,2BACdC,YAAgC;IAEhC,MAAMC,qBAAqBhC,aAAa;QACtCiC,yBAAyBF;IAC3B;IAEA,OAAO;QACL7B,UAAUD,uBAAuB+B;QACjCE,SAASH,aAAaG,OAAO;QAC7BF;IACF;AACF"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { };
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/field/lexical/config/types.ts"],"sourcesContent":["import type { EditorConfig as LexicalEditorConfig } from 'lexical/LexicalEditor.js'\n\nimport type {\n FeatureProviderClient,\n FeatureProviderServer,\n ResolvedClientFeatureMap,\n ResolvedServerFeatureMap,\n SanitizedClientFeatures,\n SanitizedServerFeatures,\n} from '../../features/types.js'\n\nexport type ServerEditorConfig = {\n features: FeatureProviderServer<unknown, unknown>[]\n lexical?: LexicalEditorConfig\n}\n\nexport type SanitizedServerEditorConfig = {\n features: SanitizedServerFeatures\n lexical: LexicalEditorConfig\n resolvedFeatureMap: ResolvedServerFeatureMap\n}\n\nexport type ClientEditorConfig = {\n features: FeatureProviderClient<unknown>[]\n lexical?: LexicalEditorConfig\n}\n\nexport type SanitizedClientEditorConfig = {\n features: SanitizedClientFeatures\n lexical: LexicalEditorConfig\n resolvedFeatureMap: ResolvedClientFeatureMap\n}\n"],"names":[],"mappings":"AA2BA,WAIC"}
|
|
@@ -7,4 +7,4 @@ export function getEnabledNodes({ editorConfig }) {
|
|
|
7
7
|
});
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
//# sourceMappingURL=
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/field/lexical/nodes/index.ts"],"sourcesContent":["import type { Klass, LexicalNode } from 'lexical'\nimport type { LexicalNodeReplacement } from 'lexical'\n\nimport type { SanitizedClientEditorConfig, SanitizedServerEditorConfig } from '../config/types.js'\n\nexport function getEnabledNodes({\n editorConfig,\n}: {\n editorConfig: SanitizedClientEditorConfig | SanitizedServerEditorConfig\n}): Array<Klass<LexicalNode> | LexicalNodeReplacement> {\n return editorConfig.features.nodes.map((node) => {\n if ('node' in node) {\n return node.node\n }\n return node\n })\n}\n"],"names":["getEnabledNodes","editorConfig","features","nodes","map","node"],"mappings":"AAKA,OAAO,SAASA,gBAAgB,EAC9BC,YAAY,EAGb;IACC,OAAOA,aAAaC,QAAQ,CAACC,KAAK,CAACC,GAAG,CAAC,CAACC;QACtC,IAAI,UAAUA,MAAM;YAClB,OAAOA,KAAKA,IAAI;QAClB;QACA,OAAOA;IACT;AACF"}
|
|
@@ -94,4 +94,4 @@ export const ToolbarButton = ({ children, entry })=>{
|
|
|
94
94
|
}, children);
|
|
95
95
|
};
|
|
96
96
|
|
|
97
|
-
//# sourceMappingURL=
|
|
97
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.tsx"],"sourcesContent":["'use client'\nimport lexicalComposerContextImport from '@lexical/react/LexicalComposerContext.js'\nconst { useLexicalComposerContext } = lexicalComposerContextImport\nimport lexicalUtilsImport from '@lexical/utils'\nconst { mergeRegister } = lexicalUtilsImport\n\nimport lexicalImport from 'lexical'\nconst { $getSelection } = lexicalImport\n\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { FloatingToolbarSectionEntry } from '../types.js'\n\nimport './index.scss'\n\nconst baseClass = 'floating-select-toolbar-popup__button'\n\nexport const ToolbarButton = ({\n children,\n entry,\n}: {\n children: React.JSX.Element\n entry: FloatingToolbarSectionEntry\n}) => {\n const [editor] = useLexicalComposerContext()\n const [enabled, setEnabled] = useState<boolean>(true)\n const [active, setActive] = useState<boolean>(false)\n const [className, setClassName] = useState<string>(baseClass)\n\n const updateStates = useCallback(() => {\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if (entry.isActive) {\n const isActive = entry.isActive({ editor, selection })\n if (active !== isActive) {\n setActive(isActive)\n }\n }\n if (entry.isEnabled) {\n const isEnabled = entry.isEnabled({ editor, selection })\n if (enabled !== isEnabled) {\n setEnabled(isEnabled)\n }\n }\n })\n }, [active, editor, enabled, entry])\n\n useEffect(() => {\n updateStates()\n }, [updateStates])\n\n useEffect(() => {\n document.addEventListener('mouseup', updateStates)\n return () => {\n document.removeEventListener('mouseup', updateStates)\n }\n }, [updateStates])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(() => {\n updateStates()\n }),\n )\n }, [editor, updateStates])\n\n useEffect(() => {\n setClassName(\n [\n baseClass,\n enabled === false ? 'disabled' : '',\n active ? 'active' : '',\n entry?.key ? `${baseClass}-` + entry.key : '',\n ]\n .filter(Boolean)\n .join(' '),\n )\n }, [enabled, active, className])\n\n return (\n <button\n className={className}\n onClick={() => {\n if (enabled !== false) {\n entry.onClick({\n editor,\n isActive: active,\n })\n }\n }}\n onMouseDown={(e) => {\n // This fixes a bug where you are unable to click the button if you are in a NESTED editor (editor in blocks field in editor).\n // Thus only happens if you click on the SVG of the button. Clicking on the outside works. Related issue: https://github.com/payloadcms/payload/issues/4025\n // TODO: Find out why exactly it happens and why e.preventDefault() on the mouseDown fixes it. Write that down here, or potentially fix a root cause, if there is any.\n e.preventDefault()\n }}\n type=\"button\"\n >\n {children}\n </button>\n )\n}\n"],"names":["lexicalComposerContextImport","useLexicalComposerContext","lexicalUtilsImport","mergeRegister","lexicalImport","$getSelection","React","useCallback","useEffect","useState","baseClass","ToolbarButton","children","entry","editor","enabled","setEnabled","active","setActive","className","setClassName","updateStates","getEditorState","read","selection","isActive","isEnabled","document","addEventListener","removeEventListener","registerUpdateListener","key","filter","Boolean","join","button","onClick","onMouseDown","e","preventDefault","type"],"mappings":"AAAA;AACA,OAAOA,kCAAkC,2CAA0C;AACnF,MAAM,EAAEC,yBAAyB,EAAE,GAAGD;AACtC,OAAOE,wBAAwB,iBAAgB;AAC/C,MAAM,EAAEC,aAAa,EAAE,GAAGD;AAE1B,OAAOE,mBAAmB,UAAS;AACnC,MAAM,EAAEC,aAAa,EAAE,GAAGD;AAE1B,OAAOE,SAASC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AAI/D,OAAO,eAAc;AAErB,MAAMC,YAAY;AAElB,OAAO,MAAMC,gBAAgB,CAAC,EAC5BC,QAAQ,EACRC,KAAK,EAIN;IACC,MAAM,CAACC,OAAO,GAAGb;IACjB,MAAM,CAACc,SAASC,WAAW,GAAGP,SAAkB;IAChD,MAAM,CAACQ,QAAQC,UAAU,GAAGT,SAAkB;IAC9C,MAAM,CAACU,WAAWC,aAAa,GAAGX,SAAiBC;IAEnD,MAAMW,eAAed,YAAY;QAC/BO,OAAOQ,cAAc,GAAGC,IAAI,CAAC;YAC3B,MAAMC,YAAYnB;YAClB,IAAIQ,MAAMY,QAAQ,EAAE;gBAClB,MAAMA,WAAWZ,MAAMY,QAAQ,CAAC;oBAAEX;oBAAQU;gBAAU;gBACpD,IAAIP,WAAWQ,UAAU;oBACvBP,UAAUO;gBACZ;YACF;YACA,IAAIZ,MAAMa,SAAS,EAAE;gBACnB,MAAMA,YAAYb,MAAMa,SAAS,CAAC;oBAAEZ;oBAAQU;gBAAU;gBACtD,IAAIT,YAAYW,WAAW;oBACzBV,WAAWU;gBACb;YACF;QACF;IACF,GAAG;QAACT;QAAQH;QAAQC;QAASF;KAAM;IAEnCL,UAAU;QACRa;IACF,GAAG;QAACA;KAAa;IAEjBb,UAAU;QACRmB,SAASC,gBAAgB,CAAC,WAAWP;QACrC,OAAO;YACLM,SAASE,mBAAmB,CAAC,WAAWR;QAC1C;IACF,GAAG;QAACA;KAAa;IAEjBb,UAAU;QACR,OAAOL,cACLW,OAAOgB,sBAAsB,CAAC;YAC5BT;QACF;IAEJ,GAAG;QAACP;QAAQO;KAAa;IAEzBb,UAAU;QACRY,aACE;YACEV;YACAK,YAAY,QAAQ,aAAa;YACjCE,SAAS,WAAW;YACpBJ,OAAOkB,MAAM,CAAC,EAAErB,UAAU,CAAC,CAAC,GAAGG,MAAMkB,GAAG,GAAG;SAC5C,CACEC,MAAM,CAACC,SACPC,IAAI,CAAC;IAEZ,GAAG;QAACnB;QAASE;QAAQE;KAAU;IAE/B,qBACE,oBAACgB;QACChB,WAAWA;QACXiB,SAAS;YACP,IAAIrB,YAAY,OAAO;gBACrBF,MAAMuB,OAAO,CAAC;oBACZtB;oBACAW,UAAUR;gBACZ;YACF;QACF;QACAoB,aAAa,CAACC;YACZ,8HAA8H;YAC9H,2JAA2J;YAC3J,sKAAsK;YACtKA,EAAEC,cAAc;QAClB;QACAC,MAAK;OAEJ5B;AAGP,EAAC"}
|
|
@@ -248,4 +248,4 @@ export function DropDown({ Icon, buttonAriaLabel, buttonClassName, children, dis
|
|
|
248
248
|
}, children), document.body));
|
|
249
249
|
}
|
|
250
250
|
|
|
251
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvRmxvYXRpbmdTZWxlY3RUb29sYmFyL1Rvb2xiYXJEcm9wZG93bi9Ecm9wRG93bi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgbGV4aWNhbENvbXBvc2VyQ29udGV4dEltcG9ydCBmcm9tICdAbGV4aWNhbC9yZWFjdC9MZXhpY2FsQ29tcG9zZXJDb250ZXh0LmpzJ1xuY29uc3QgeyB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IH0gPSBsZXhpY2FsQ29tcG9zZXJDb250ZXh0SW1wb3J0XG5cbmltcG9ydCBsZXhpY2FsVXRpbHNJbXBvcnQgZnJvbSAnQGxleGljYWwvdXRpbHMnXG5jb25zdCB7IG1lcmdlUmVnaXN0ZXIgfSA9IGxleGljYWxVdGlsc0ltcG9ydFxuXG5pbXBvcnQgbGV4aWNhbEltcG9ydCBmcm9tICdsZXhpY2FsJ1xuY29uc3QgeyAkZ2V0U2VsZWN0aW9uIH0gPSBsZXhpY2FsSW1wb3J0XG5cbmltcG9ydCB7IHR5cGUgUmVhY3ROb2RlLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5cbmltcG9ydCB0eXBlIHsgRmxvYXRpbmdUb29sYmFyU2VjdGlvbkVudHJ5IH0gZnJvbSAnLi4vdHlwZXMuanMnXG5cbmNvbnN0IGJhc2VDbGFzcyA9ICdmbG9hdGluZy1zZWxlY3QtdG9vbGJhci1wb3B1cF9fZHJvcGRvd24taXRlbSdcblxuaW50ZXJmYWNlIERyb3BEb3duQ29udGV4dFR5cGUge1xuICByZWdpc3Rlckl0ZW06IChyZWY6IFJlYWN0LlJlZk9iamVjdDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHZvaWRcbn1cblxuY29uc3QgRHJvcERvd25Db250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxEcm9wRG93bkNvbnRleHRUeXBlIHwgbnVsbD4obnVsbClcblxuZXhwb3J0IGZ1bmN0aW9uIERyb3BEb3duSXRlbSh7XG4gIGNoaWxkcmVuLFxuICBlbnRyeSxcbiAgdGl0bGUsXG59OiB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbiAgZW50cnk6IEZsb2F0aW5nVG9vbGJhclNlY3Rpb25FbnRyeVxuICB0aXRsZT86IHN0cmluZ1xufSk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IFtlZGl0b3JdID0gdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCgpXG4gIGNvbnN0IFtlbmFibGVkLCBzZXRFbmFibGVkXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHRydWUpXG4gIGNvbnN0IFthY3RpdmUsIHNldEFjdGl2ZV0gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSlcbiAgY29uc3QgW2NsYXNzTmFtZSwgc2V0Q2xhc3NOYW1lXSA9IHVzZVN0YXRlPHN0cmluZz4oYmFzZUNsYXNzKVxuXG4gIGNvbnN0IHVwZGF0ZVN0YXRlcyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9ICRnZXRTZWxlY3Rpb24oKVxuICAgICAgaWYgKGVudHJ5LmlzQWN0aXZlKSB7XG4gICAgICAgIGNvbnN0IGlzQWN0aXZlID0gZW50cnkuaXNBY3RpdmUoeyBlZGl0b3IsIHNlbGVjdGlvbiB9KVxuICAgICAgICBpZiAoYWN0aXZlICE9PSBpc0FjdGl2ZSkge1xuICAgICAgICAgIHNldEFjdGl2ZShpc0FjdGl2ZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGVudHJ5LmlzRW5hYmxlZCkge1xuICAgICAgICBjb25zdCBpc0VuYWJsZWQgPSBlbnRyeS5pc0VuYWJsZWQoeyBlZGl0b3IsIHNlbGVjdGlvbiB9KVxuICAgICAgICBpZiAoZW5hYmxlZCAhPT0gaXNFbmFibGVkKSB7XG4gICAgICAgICAgc2V0RW5hYmxlZChpc0VuYWJsZWQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICB9LCBbYWN0aXZlLCBlZGl0b3IsIGVuYWJsZWQsIGVudHJ5XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHVwZGF0ZVN0YXRlcygpXG4gIH0sIFt1cGRhdGVTdGF0ZXNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHVwZGF0ZVN0YXRlcylcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHVwZGF0ZVN0YXRlcylcbiAgICB9XG4gIH0sIFt1cGRhdGVTdGF0ZXNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuIG1lcmdlUmVnaXN0ZXIoXG4gICAgICBlZGl0b3IucmVnaXN0ZXJVcGRhdGVMaXN0ZW5lcigoKSA9PiB7XG4gICAgICAgIHVwZGF0ZVN0YXRlcygpXG4gICAgICB9KSxcbiAgICApXG4gIH0sIFtlZGl0b3IsIHVwZGF0ZVN0YXRlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRDbGFzc05hbWUoXG4gICAgICBbXG4gICAgICAgIGJhc2VDbGFzcyxcbiAgICAgICAgZW5hYmxlZCA9PT0gZmFsc2UgPyAnZGlzYWJsZWQnIDogJycsXG4gICAgICAgIGFjdGl2ZSA/ICdhY3RpdmUnIDogJycsXG4gICAgICAgIGVudHJ5Py5rZXkgPyBgJHtiYXNlQ2xhc3N9LSR7ZW50cnkua2V5fWAgOiAnJyxcbiAgICAgIF1cbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAuam9pbignICcpLFxuICAgIClcbiAgfSwgW2VuYWJsZWQsIGFjdGl2ZSwgY2xhc3NOYW1lLCBlbnRyeS5rZXldKVxuXG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbClcblxuICBjb25zdCBkcm9wRG93bkNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KERyb3BEb3duQ29udGV4dClcblxuICBpZiAoZHJvcERvd25Db250ZXh0ID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEcm9wRG93bkl0ZW0gbXVzdCBiZSB1c2VkIHdpdGhpbiBhIERyb3BEb3duJylcbiAgfVxuXG4gIGNvbnN0IHsgcmVnaXN0ZXJJdGVtIH0gPSBkcm9wRG93bkNvbnRleHRcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWY/LmN1cnJlbnQgIT0gbnVsbCkge1xuICAgICAgcmVnaXN0ZXJJdGVtKHJlZilcbiAgICB9XG4gIH0sIFtyZWYsIHJlZ2lzdGVySXRlbV0pXG5cbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgaWYgKGVuYWJsZWQgIT09IGZhbHNlKSB7XG4gICAgICAgICAgZW50cnkub25DbGljayh7XG4gICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICBpc0FjdGl2ZTogYWN0aXZlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH19XG4gICAgICBvbk1vdXNlRG93bj17KGUpID0+IHtcbiAgICAgICAgLy8gVGhpcyBpcyByZXF1aXJlZCBmb3IgRmlyZWZveCBjb21wYXRpYmlsaXR5LiBXaXRob3V0IGl0LCB0aGUgZHJvcGRvd24gd2lsbCBkaXNhcHBlYXIgd2l0aG91dCB0aGUgb25DbGljayBiZWluZyBjYWxsZWQuXG4gICAgICAgIC8vIFRoaXMgb25seSBoYXBwZW5zIGluIEZpcmVmb3guIE11c3QgYmUgc29tZXRoaW5nIGFib3V0IGhvdyBGaXJlZm94IGhhbmRsZXMgZm9jdXMgZXZlbnRzIGRpZmZlcmVudGx5LlxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgIH19XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2J1dHRvbj5cbiAgKVxufVxuXG5mdW5jdGlvbiBEcm9wRG93bkl0ZW1zKHtcbiAgY2hpbGRyZW4sXG4gIGRyb3BEb3duUmVmLFxuICBvbkNsb3NlLFxufToge1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlXG4gIGRyb3BEb3duUmVmOiBSZWFjdC5SZWY8SFRNTERpdkVsZW1lbnQ+XG4gIG9uQ2xvc2U6ICgpID0+IHZvaWRcbn0pOiBKU1guRWxlbWVudCB7XG4gIGNvbnN0IFtpdGVtcywgc2V0SXRlbXNdID0gdXNlU3RhdGU8QXJyYXk8UmVhY3QuUmVmT2JqZWN0PEhUTUxCdXR0b25FbGVtZW50Pj4+KClcbiAgY29uc3QgW2hpZ2hsaWdodGVkSXRlbSwgc2V0SGlnaGxpZ2h0ZWRJdGVtXSA9IHVzZVN0YXRlPFJlYWN0LlJlZk9iamVjdDxIVE1MQnV0dG9uRWxlbWVudD4+KClcblxuICBjb25zdCByZWdpc3Rlckl0ZW0gPSB1c2VDYWxsYmFjayhcbiAgICAoaXRlbVJlZjogUmVhY3QuUmVmT2JqZWN0PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgICAgc2V0SXRlbXMoKHByZXYpID0+IChwcmV2ICE9IG51bGwgPyBbLi4ucHJldiwgaXRlbVJlZl0gOiBbaXRlbVJlZl0pKVxuICAgIH0sXG4gICAgW3NldEl0ZW1zXSxcbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KTogdm9pZCA9PiB7XG4gICAgaWYgKGl0ZW1zID09IG51bGwpIHJldHVyblxuXG4gICAgY29uc3QgeyBrZXkgfSA9IGV2ZW50XG5cbiAgICBpZiAoWydBcnJvd0Rvd24nLCAnQXJyb3dVcCcsICdFc2NhcGUnLCAnVGFiJ10uaW5jbHVkZXMoa2V5KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIH1cblxuICAgIGlmIChrZXkgPT09ICdFc2NhcGUnIHx8IGtleSA9PT0gJ1RhYicpIHtcbiAgICAgIG9uQ2xvc2UoKVxuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICAgIHNldEhpZ2hsaWdodGVkSXRlbSgocHJldikgPT4ge1xuICAgICAgICBpZiAocHJldiA9PSBudWxsKSByZXR1cm4gaXRlbXNbMF1cbiAgICAgICAgY29uc3QgaW5kZXggPSBpdGVtcy5pbmRleE9mKHByZXYpIC0gMVxuICAgICAgICByZXR1cm4gaXRlbXNbaW5kZXggPT09IC0xID8gaXRlbXMubGVuZ3RoIC0gMSA6IGluZGV4XVxuICAgICAgfSlcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgIHNldEhpZ2hsaWdodGVkSXRlbSgocHJldikgPT4ge1xuICAgICAgICBpZiAocHJldiA9PSBudWxsKSByZXR1cm4gaXRlbXNbMF1cbiAgICAgICAgcmV0dXJuIGl0ZW1zW2l0ZW1zLmluZGV4T2YocHJldikgKyAxXVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBjb250ZXh0VmFsdWUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICByZWdpc3Rlckl0ZW0sXG4gICAgfSksXG4gICAgW3JlZ2lzdGVySXRlbV0sXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpdGVtcyAhPSBudWxsICYmIGhpZ2hsaWdodGVkSXRlbSA9PSBudWxsKSB7XG4gICAgICBzZXRIaWdobGlnaHRlZEl0ZW0oaXRlbXNbMF0pXG4gICAgfVxuXG4gICAgaWYgKGhpZ2hsaWdodGVkSXRlbT8uY3VycmVudCAhPSBudWxsKSB7XG4gICAgICBoaWdobGlnaHRlZEl0ZW0uY3VycmVudC5mb2N1cygpXG4gICAgfVxuICB9LCBbaXRlbXMsIGhpZ2hsaWdodGVkSXRlbV0pXG5cbiAgcmV0dXJuIChcbiAgICA8RHJvcERvd25Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjb250ZXh0VmFsdWV9PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9XCJmbG9hdGluZy1zZWxlY3QtdG9vbGJhci1wb3B1cF9fZHJvcGRvd24taXRlbXNcIlxuICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICAgIHJlZj17ZHJvcERvd25SZWZ9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvZGl2PlxuICAgIDwvRHJvcERvd25Db250ZXh0LlByb3ZpZGVyPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEcm9wRG93bih7XG4gIEljb24sXG4gIGJ1dHRvbkFyaWFMYWJlbCxcbiAgYnV0dG9uQ2xhc3NOYW1lLFxuICBjaGlsZHJlbixcbiAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgc3RvcENsb3NlT25DbGlja1NlbGYsXG59OiB7XG4gIEljb24/OiBSZWFjdC5GQ1xuICBidXR0b25BcmlhTGFiZWw/OiBzdHJpbmdcbiAgYnV0dG9uQ2xhc3NOYW1lOiBzdHJpbmdcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZVxuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgc3RvcENsb3NlT25DbGlja1NlbGY/OiBib29sZWFuXG59KTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgY29uc3QgZHJvcERvd25SZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGJ1dHRvblJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbClcbiAgY29uc3QgW3Nob3dEcm9wRG93biwgc2V0U2hvd0Ryb3BEb3duXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gKCk6IHZvaWQgPT4ge1xuICAgIHNldFNob3dEcm9wRG93bihmYWxzZSlcbiAgICBpZiAoYnV0dG9uUmVmPy5jdXJyZW50ICE9IG51bGwpIHtcbiAgICAgIGJ1dHRvblJlZi5jdXJyZW50LmZvY3VzKClcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGJ1dHRvbiA9IGJ1dHRvblJlZi5jdXJyZW50XG4gICAgY29uc3QgZHJvcERvd24gPSBkcm9wRG93blJlZi5jdXJyZW50XG5cbiAgICBpZiAoc2hvd0Ryb3BEb3duICYmIGJ1dHRvbiAhPT0gbnVsbCAmJiBkcm9wRG93biAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgeyBsZWZ0LCB0b3AgfSA9IGJ1dHRvbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgY29uc3Qgc2Nyb2xsVG9wT2Zmc2V0ID0gd2luZG93LnBhZ2VZT2Zmc2V0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3BcbiAgICAgIGRyb3BEb3duLnN0eWxlLnRvcCA9IGAke3RvcCArIHNjcm9sbFRvcE9mZnNldCArIGJ1dHRvbi5vZmZzZXRIZWlnaHQgKyA1fXB4YFxuICAgICAgZHJvcERvd24uc3R5bGUubGVmdCA9IGAke01hdGgubWluKGxlZnQgLSA1LCB3aW5kb3cuaW5uZXJXaWR0aCAtIGRyb3BEb3duLm9mZnNldFdpZHRoIC0gMjApfXB4YFxuICAgIH1cbiAgfSwgW2Ryb3BEb3duUmVmLCBidXR0b25SZWYsIHNob3dEcm9wRG93bl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBidXR0b24gPSBidXR0b25SZWYuY3VycmVudFxuXG4gICAgaWYgKGJ1dHRvbiAhPT0gbnVsbCAmJiBzaG93RHJvcERvd24pIHtcbiAgICAgIGNvbnN0IGhhbmRsZSA9IChldmVudDogTW91c2VFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCB7IHRhcmdldCB9ID0gZXZlbnRcbiAgICAgICAgaWYgKHN0b3BDbG9zZU9uQ2xpY2tTZWxmICE9IG51bGwpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1vcHRpb25hbC1jaGFpblxuICAgICAgICAgIGlmIChkcm9wRG93blJlZi5jdXJyZW50ICE9IG51bGwgJiYgZHJvcERvd25SZWYuY3VycmVudC5jb250YWlucyh0YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWJ1dHRvbi5jb250YWlucyh0YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgICBzZXRTaG93RHJvcERvd24oZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlKVxuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtkcm9wRG93blJlZiwgYnV0dG9uUmVmLCBzaG93RHJvcERvd24sIHN0b3BDbG9zZU9uQ2xpY2tTZWxmXSlcblxuICByZXR1cm4gKFxuICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgIDxidXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD17YnV0dG9uQXJpYUxhYmVsfVxuICAgICAgICBjbGFzc05hbWU9e2J1dHRvbkNsYXNzTmFtZSArIChzaG93RHJvcERvd24gPyAnIGFjdGl2ZScgOiAnJyl9XG4gICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIHNldFNob3dEcm9wRG93bighc2hvd0Ryb3BEb3duKVxuICAgICAgICB9fVxuICAgICAgICBvbk1vdXNlRG93bj17KGUpID0+IHtcbiAgICAgICAgICAvLyBUaGlzIGZpeGVzIGEgYnVnIHdoZXJlIHlvdSBhcmUgdW5hYmxlIHRvIGNsaWNrIHRoZSBidXR0b24gaWYgeW91IGFyZSBpbiBhIE5FU1RFRCBlZGl0b3IgKGVkaXRvciBpbiBibG9ja3MgZmllbGQgaW4gZWRpdG9yKS5cbiAgICAgICAgICAvLyBUaHVzIG9ubHkgaGFwcGVucyBpZiB5b3UgY2xpY2sgb24gdGhlIFNWRyBvZiB0aGUgYnV0dG9uLiBDbGlja2luZyBvbiB0aGUgb3V0c2lkZSB3b3Jrcy4gUmVsYXRlZCBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL3BheWxvYWRjbXMvcGF5bG9hZC9pc3N1ZXMvNDAyNVxuICAgICAgICAgIC8vIFRPRE86IEZpbmQgb3V0IHdoeSBleGFjdGx5IGl0IGhhcHBlbnMgYW5kIHdoeSBlLnByZXZlbnREZWZhdWx0KCkgb24gdGhlIG1vdXNlRG93biBmaXhlcyBpdC4gV3JpdGUgdGhhdCBkb3duIGhlcmUsIG9yIHBvdGVudGlhbGx5IGZpeCBhIHJvb3QgY2F1c2UsIGlmIHRoZXJlIGlzIGFueS5cbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgfX1cbiAgICAgICAgcmVmPXtidXR0b25SZWZ9XG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgPlxuICAgICAgICA8SWNvbiAvPlxuICAgICAgICA8aSBjbGFzc05hbWU9XCJmbG9hdGluZy1zZWxlY3QtdG9vbGJhci1wb3B1cF9fZHJvcGRvd24tY2FyZXRcIiAvPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIHtzaG93RHJvcERvd24gJiZcbiAgICAgICAgY3JlYXRlUG9ydGFsKFxuICAgICAgICAgIDxEcm9wRG93bkl0ZW1zIGRyb3BEb3duUmVmPXtkcm9wRG93blJlZn0gb25DbG9zZT17aGFuZGxlQ2xvc2V9PlxuICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgIDwvRHJvcERvd25JdGVtcz4sXG4gICAgICAgICAgZG9jdW1lbnQuYm9keSxcbiAgICAgICAgKX1cbiAgICA8L1JlYWN0LkZyYWdtZW50PlxuICApXG59XG4iXSwibmFtZXMiOlsibGV4aWNhbENvbXBvc2VyQ29udGV4dEltcG9ydCIsInVzZUxleGljYWxDb21wb3NlckNvbnRleHQiLCJsZXhpY2FsVXRpbHNJbXBvcnQiLCJtZXJnZVJlZ2lzdGVyIiwibGV4aWNhbEltcG9ydCIsIiRnZXRTZWxlY3Rpb24iLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIlJlYWN0IiwiY3JlYXRlUG9ydGFsIiwiYmFzZUNsYXNzIiwiRHJvcERvd25Db250ZXh0IiwiY3JlYXRlQ29udGV4dCIsIkRyb3BEb3duSXRlbSIsImNoaWxkcmVuIiwiZW50cnkiLCJ0aXRsZSIsImVkaXRvciIsImVuYWJsZWQiLCJzZXRFbmFibGVkIiwiYWN0aXZlIiwic2V0QWN0aXZlIiwiY2xhc3NOYW1lIiwic2V0Q2xhc3NOYW1lIiwidXBkYXRlU3RhdGVzIiwiZ2V0RWRpdG9yU3RhdGUiLCJyZWFkIiwic2VsZWN0aW9uIiwiaXNBY3RpdmUiLCJpc0VuYWJsZWQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicmVnaXN0ZXJVcGRhdGVMaXN0ZW5lciIsImtleSIsImZpbHRlciIsIkJvb2xlYW4iLCJqb2luIiwicmVmIiwiZHJvcERvd25Db250ZXh0IiwidXNlQ29udGV4dCIsIkVycm9yIiwicmVnaXN0ZXJJdGVtIiwiY3VycmVudCIsImJ1dHRvbiIsIm9uQ2xpY2siLCJvbk1vdXNlRG93biIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInR5cGUiLCJEcm9wRG93bkl0ZW1zIiwiZHJvcERvd25SZWYiLCJvbkNsb3NlIiwiaXRlbXMiLCJzZXRJdGVtcyIsImhpZ2hsaWdodGVkSXRlbSIsInNldEhpZ2hsaWdodGVkSXRlbSIsIml0ZW1SZWYiLCJwcmV2IiwiaGFuZGxlS2V5RG93biIsImV2ZW50IiwiaW5jbHVkZXMiLCJpbmRleCIsImluZGV4T2YiLCJsZW5ndGgiLCJjb250ZXh0VmFsdWUiLCJmb2N1cyIsIlByb3ZpZGVyIiwidmFsdWUiLCJkaXYiLCJvbktleURvd24iLCJEcm9wRG93biIsIkljb24iLCJidXR0b25BcmlhTGFiZWwiLCJidXR0b25DbGFzc05hbWUiLCJkaXNhYmxlZCIsInN0b3BDbG9zZU9uQ2xpY2tTZWxmIiwiYnV0dG9uUmVmIiwic2hvd0Ryb3BEb3duIiwic2V0U2hvd0Ryb3BEb3duIiwiaGFuZGxlQ2xvc2UiLCJkcm9wRG93biIsImxlZnQiLCJ0b3AiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJzY3JvbGxUb3BPZmZzZXQiLCJ3aW5kb3ciLCJwYWdlWU9mZnNldCIsImRvY3VtZW50RWxlbWVudCIsInNjcm9sbFRvcCIsInN0eWxlIiwib2Zmc2V0SGVpZ2h0IiwiTWF0aCIsIm1pbiIsImlubmVyV2lkdGgiLCJvZmZzZXRXaWR0aCIsImhhbmRsZSIsInRhcmdldCIsImNvbnRhaW5zIiwiRnJhZ21lbnQiLCJhcmlhLWxhYmVsIiwiaSIsImJvZHkiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsT0FBT0Esa0NBQWtDLDJDQUEwQztBQUNuRixNQUFNLEVBQUVDLHlCQUF5QixFQUFFLEdBQUdEO0FBRXRDLE9BQU9FLHdCQUF3QixpQkFBZ0I7QUFDL0MsTUFBTSxFQUFFQyxhQUFhLEVBQUUsR0FBR0Q7QUFFMUIsT0FBT0UsbUJBQW1CLFVBQVM7QUFDbkMsTUFBTSxFQUFFQyxhQUFhLEVBQUUsR0FBR0Q7QUFFMUIsU0FBeUJFLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLFFBQU87QUFDekYsT0FBT0MsV0FBVyxRQUFPO0FBQ3pCLFNBQVNDLFlBQVksUUFBUSxZQUFXO0FBSXhDLE1BQU1DLFlBQVk7QUFNbEIsTUFBTUMsZ0NBQWtCSCxNQUFNSSxhQUFhLENBQTZCO0FBRXhFLE9BQU8sU0FBU0MsYUFBYSxFQUMzQkMsUUFBUSxFQUNSQyxLQUFLLEVBQ0xDLEtBQUssRUFLTjtJQUNDLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHbkI7SUFDakIsTUFBTSxDQUFDb0IsU0FBU0MsV0FBVyxHQUFHWixTQUFrQjtJQUNoRCxNQUFNLENBQUNhLFFBQVFDLFVBQVUsR0FBR2QsU0FBa0I7SUFDOUMsTUFBTSxDQUFDZSxXQUFXQyxhQUFhLEdBQUdoQixTQUFpQkc7SUFFbkQsTUFBTWMsZUFBZXJCLFlBQVk7UUFDL0JjLE9BQU9RLGNBQWMsR0FBR0MsSUFBSSxDQUFDO1lBQzNCLE1BQU1DLFlBQVl6QjtZQUNsQixJQUFJYSxNQUFNYSxRQUFRLEVBQUU7Z0JBQ2xCLE1BQU1BLFdBQVdiLE1BQU1hLFFBQVEsQ0FBQztvQkFBRVg7b0JBQVFVO2dCQUFVO2dCQUNwRCxJQUFJUCxXQUFXUSxVQUFVO29CQUN2QlAsVUFBVU87Z0JBQ1o7WUFDRjtZQUNBLElBQUliLE1BQU1jLFNBQVMsRUFBRTtnQkFDbkIsTUFBTUEsWUFBWWQsTUFBTWMsU0FBUyxDQUFDO29CQUFFWjtvQkFBUVU7Z0JBQVU7Z0JBQ3RELElBQUlULFlBQVlXLFdBQVc7b0JBQ3pCVixXQUFXVTtnQkFDYjtZQUNGO1FBQ0Y7SUFDRixHQUFHO1FBQUNUO1FBQVFIO1FBQVFDO1FBQVNIO0tBQU07SUFFbkNYLFVBQVU7UUFDUm9CO0lBQ0YsR0FBRztRQUFDQTtLQUFhO0lBRWpCcEIsVUFBVTtRQUNSMEIsU0FBU0MsZ0JBQWdCLENBQUMsV0FBV1A7UUFDckMsT0FBTztZQUNMTSxTQUFTRSxtQkFBbUIsQ0FBQyxXQUFXUjtRQUMxQztJQUNGLEdBQUc7UUFBQ0E7S0FBYTtJQUVqQnBCLFVBQVU7UUFDUixPQUFPSixjQUNMaUIsT0FBT2dCLHNCQUFzQixDQUFDO1lBQzVCVDtRQUNGO0lBRUosR0FBRztRQUFDUDtRQUFRTztLQUFhO0lBRXpCcEIsVUFBVTtRQUNSbUIsYUFDRTtZQUNFYjtZQUNBUSxZQUFZLFFBQVEsYUFBYTtZQUNqQ0UsU0FBUyxXQUFXO1lBQ3BCTCxPQUFPbUIsTUFBTSxDQUFDLEVBQUV4QixVQUFVLENBQUMsRUFBRUssTUFBTW1CLEdBQUcsQ0FBQyxDQUFDLEdBQUc7U0FDNUMsQ0FDRUMsTUFBTSxDQUFDQyxTQUNQQyxJQUFJLENBQUM7SUFFWixHQUFHO1FBQUNuQjtRQUFTRTtRQUFRRTtRQUFXUCxNQUFNbUIsR0FBRztLQUFDO0lBRTFDLE1BQU1JLE1BQU1oQyxPQUEwQjtJQUV0QyxNQUFNaUMsa0JBQWtCL0IsTUFBTWdDLFVBQVUsQ0FBQzdCO0lBRXpDLElBQUk0QixvQkFBb0IsTUFBTTtRQUM1QixNQUFNLElBQUlFLE1BQU07SUFDbEI7SUFFQSxNQUFNLEVBQUVDLFlBQVksRUFBRSxHQUFHSDtJQUV6Qm5DLFVBQVU7UUFDUixJQUFJa0MsS0FBS0ssV0FBVyxNQUFNO1lBQ3hCRCxhQUFhSjtRQUNmO0lBQ0YsR0FBRztRQUFDQTtRQUFLSTtLQUFhO0lBRXRCLHFCQUNFLG9CQUFDRTtRQUNDdEIsV0FBV0E7UUFDWHVCLFNBQVM7WUFDUCxJQUFJM0IsWUFBWSxPQUFPO2dCQUNyQkgsTUFBTThCLE9BQU8sQ0FBQztvQkFDWjVCO29CQUNBVyxVQUFVUjtnQkFDWjtZQUNGO1FBQ0Y7UUFDQTBCLGFBQWEsQ0FBQ0M7WUFDWix3SEFBd0g7WUFDeEgsc0dBQXNHO1lBQ3RHQSxFQUFFQyxjQUFjO1FBQ2xCO1FBQ0FWLEtBQUtBO1FBQ0x0QixPQUFPQTtRQUNQaUMsTUFBSztPQUVKbkM7QUFHUDtBQUVBLFNBQVNvQyxjQUFjLEVBQ3JCcEMsUUFBUSxFQUNScUMsV0FBVyxFQUNYQyxPQUFPLEVBS1I7SUFDQyxNQUFNLENBQUNDLE9BQU9DLFNBQVMsR0FBRy9DO0lBQzFCLE1BQU0sQ0FBQ2dELGlCQUFpQkMsbUJBQW1CLEdBQUdqRDtJQUU5QyxNQUFNbUMsZUFBZXZDLFlBQ25CLENBQUNzRDtRQUNDSCxTQUFTLENBQUNJLE9BQVVBLFFBQVEsT0FBTzttQkFBSUE7Z0JBQU1EO2FBQVEsR0FBRztnQkFBQ0E7YUFBUTtJQUNuRSxHQUNBO1FBQUNIO0tBQVM7SUFHWixNQUFNSyxnQkFBZ0IsQ0FBQ0M7UUFDckIsSUFBSVAsU0FBUyxNQUFNO1FBRW5CLE1BQU0sRUFBRW5CLEdBQUcsRUFBRSxHQUFHMEI7UUFFaEIsSUFBSTtZQUFDO1lBQWE7WUFBVztZQUFVO1NBQU0sQ0FBQ0MsUUFBUSxDQUFDM0IsTUFBTTtZQUMzRDBCLE1BQU1aLGNBQWM7UUFDdEI7UUFFQSxJQUFJZCxRQUFRLFlBQVlBLFFBQVEsT0FBTztZQUNyQ2tCO1FBQ0YsT0FBTyxJQUFJbEIsUUFBUSxXQUFXO1lBQzVCc0IsbUJBQW1CLENBQUNFO2dCQUNsQixJQUFJQSxRQUFRLE1BQU0sT0FBT0wsS0FBSyxDQUFDLEVBQUU7Z0JBQ2pDLE1BQU1TLFFBQVFULE1BQU1VLE9BQU8sQ0FBQ0wsUUFBUTtnQkFDcEMsT0FBT0wsS0FBSyxDQUFDUyxVQUFVLENBQUMsSUFBSVQsTUFBTVcsTUFBTSxHQUFHLElBQUlGLE1BQU07WUFDdkQ7UUFDRixPQUFPLElBQUk1QixRQUFRLGFBQWE7WUFDOUJzQixtQkFBbUIsQ0FBQ0U7Z0JBQ2xCLElBQUlBLFFBQVEsTUFBTSxPQUFPTCxLQUFLLENBQUMsRUFBRTtnQkFDakMsT0FBT0EsS0FBSyxDQUFDQSxNQUFNVSxPQUFPLENBQUNMLFFBQVEsRUFBRTtZQUN2QztRQUNGO0lBQ0Y7SUFFQSxNQUFNTyxlQUFlNUQsUUFDbkIsSUFBTyxDQUFBO1lBQ0xxQztRQUNGLENBQUEsR0FDQTtRQUFDQTtLQUFhO0lBR2hCdEMsVUFBVTtRQUNSLElBQUlpRCxTQUFTLFFBQVFFLG1CQUFtQixNQUFNO1lBQzVDQyxtQkFBbUJILEtBQUssQ0FBQyxFQUFFO1FBQzdCO1FBRUEsSUFBSUUsaUJBQWlCWixXQUFXLE1BQU07WUFDcENZLGdCQUFnQlosT0FBTyxDQUFDdUIsS0FBSztRQUMvQjtJQUNGLEdBQUc7UUFBQ2I7UUFBT0U7S0FBZ0I7SUFFM0IscUJBQ0Usb0JBQUM1QyxnQkFBZ0J3RCxRQUFRO1FBQUNDLE9BQU9IO3FCQUMvQixvQkFBQ0k7UUFDQy9DLFdBQVU7UUFDVmdELFdBQVdYO1FBQ1hyQixLQUFLYTtPQUVKckM7QUFJVDtBQUVBLE9BQU8sU0FBU3lELFNBQVMsRUFDdkJDLElBQUksRUFDSkMsZUFBZSxFQUNmQyxlQUFlLEVBQ2Y1RCxRQUFRLEVBQ1I2RCxXQUFXLEtBQUssRUFDaEJDLG9CQUFvQixFQVFyQjtJQUNDLE1BQU16QixjQUFjN0MsT0FBdUI7SUFDM0MsTUFBTXVFLFlBQVl2RSxPQUEwQjtJQUM1QyxNQUFNLENBQUN3RSxjQUFjQyxnQkFBZ0IsR0FBR3hFLFNBQVM7SUFFakQsTUFBTXlFLGNBQWM7UUFDbEJELGdCQUFnQjtRQUNoQixJQUFJRixXQUFXbEMsV0FBVyxNQUFNO1lBQzlCa0MsVUFBVWxDLE9BQU8sQ0FBQ3VCLEtBQUs7UUFDekI7SUFDRjtJQUVBOUQsVUFBVTtRQUNSLE1BQU13QyxTQUFTaUMsVUFBVWxDLE9BQU87UUFDaEMsTUFBTXNDLFdBQVc5QixZQUFZUixPQUFPO1FBRXBDLElBQUltQyxnQkFBZ0JsQyxXQUFXLFFBQVFxQyxhQUFhLE1BQU07WUFDeEQsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLEdBQUcsRUFBRSxHQUFHdkMsT0FBT3dDLHFCQUFxQjtZQUNsRCxNQUFNQyxrQkFBa0JDLE9BQU9DLFdBQVcsSUFBSXpELFNBQVMwRCxlQUFlLENBQUNDLFNBQVM7WUFDaEZSLFNBQVNTLEtBQUssQ0FBQ1AsR0FBRyxHQUFHLENBQUMsRUFBRUEsTUFBTUUsa0JBQWtCekMsT0FBTytDLFlBQVksR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUMzRVYsU0FBU1MsS0FBSyxDQUFDUixJQUFJLEdBQUcsQ0FBQyxFQUFFVSxLQUFLQyxHQUFHLENBQUNYLE9BQU8sR0FBR0ksT0FBT1EsVUFBVSxHQUFHYixTQUFTYyxXQUFXLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDaEc7SUFDRixHQUFHO1FBQUM1QztRQUFhMEI7UUFBV0M7S0FBYTtJQUV6QzFFLFVBQVU7UUFDUixNQUFNd0MsU0FBU2lDLFVBQVVsQyxPQUFPO1FBRWhDLElBQUlDLFdBQVcsUUFBUWtDLGNBQWM7WUFDbkMsTUFBTWtCLFNBQVMsQ0FBQ3BDO2dCQUNkLE1BQU0sRUFBRXFDLE1BQU0sRUFBRSxHQUFHckM7Z0JBQ25CLElBQUlnQix3QkFBd0IsTUFBTTtvQkFDaEMsb0VBQW9FO29CQUNwRSxJQUFJekIsWUFBWVIsT0FBTyxJQUFJLFFBQVFRLFlBQVlSLE9BQU8sQ0FBQ3VELFFBQVEsQ0FBQ0QsU0FBaUI7d0JBQy9FO29CQUNGO2dCQUNGO2dCQUNBLElBQUksQ0FBQ3JELE9BQU9zRCxRQUFRLENBQUNELFNBQWlCO29CQUNwQ2xCLGdCQUFnQjtnQkFDbEI7WUFDRjtZQUNBakQsU0FBU0MsZ0JBQWdCLENBQUMsU0FBU2lFO1lBRW5DLE9BQU87Z0JBQ0xsRSxTQUFTRSxtQkFBbUIsQ0FBQyxTQUFTZ0U7WUFDeEM7UUFDRjtJQUNGLEdBQUc7UUFBQzdDO1FBQWEwQjtRQUFXQztRQUFjRjtLQUFxQjtJQUUvRCxxQkFDRSxvQkFBQ3BFLE1BQU0yRixRQUFRLHNCQUNiLG9CQUFDdkQ7UUFDQ3dELGNBQVkzQjtRQUNabkQsV0FBV29ELGtCQUFtQkksQ0FBQUEsZUFBZSxZQUFZLEVBQUM7UUFDMURILFVBQVVBO1FBQ1Y5QixTQUFTLENBQUNlO1lBQ1JBLE1BQU1aLGNBQWM7WUFDcEIrQixnQkFBZ0IsQ0FBQ0Q7UUFDbkI7UUFDQWhDLGFBQWEsQ0FBQ0M7WUFDWiw4SEFBOEg7WUFDOUgsMkpBQTJKO1lBQzNKLHNLQUFzSztZQUN0S0EsRUFBRUMsY0FBYztRQUNsQjtRQUNBVixLQUFLdUM7UUFDTDVCLE1BQUs7cUJBRUwsb0JBQUN1QiwyQkFDRCxvQkFBQzZCO1FBQUUvRSxXQUFVO1NBR2R3RCw4QkFDQ3JFLDJCQUNFLG9CQUFDeUM7UUFBY0MsYUFBYUE7UUFBYUMsU0FBUzRCO09BQy9DbEUsV0FFSGdCLFNBQVN3RSxJQUFJO0FBSXZCIn0=
|
|
251
|
+
//# sourceMappingURL=DropDown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.tsx"],"sourcesContent":["'use client'\nimport lexicalComposerContextImport from '@lexical/react/LexicalComposerContext.js'\nconst { useLexicalComposerContext } = lexicalComposerContextImport\n\nimport lexicalUtilsImport from '@lexical/utils'\nconst { mergeRegister } = lexicalUtilsImport\n\nimport lexicalImport from 'lexical'\nconst { $getSelection } = lexicalImport\n\nimport { type ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport React from 'react'\nimport { createPortal } from 'react-dom'\n\nimport type { FloatingToolbarSectionEntry } from '../types.js'\n\nconst baseClass = 'floating-select-toolbar-popup__dropdown-item'\n\ninterface DropDownContextType {\n registerItem: (ref: React.RefObject<HTMLButtonElement>) => void\n}\n\nconst DropDownContext = React.createContext<DropDownContextType | null>(null)\n\nexport function DropDownItem({\n children,\n entry,\n title,\n}: {\n children: React.ReactNode\n entry: FloatingToolbarSectionEntry\n title?: string\n}): React.ReactNode {\n const [editor] = useLexicalComposerContext()\n const [enabled, setEnabled] = useState<boolean>(true)\n const [active, setActive] = useState<boolean>(false)\n const [className, setClassName] = useState<string>(baseClass)\n\n const updateStates = useCallback(() => {\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if (entry.isActive) {\n const isActive = entry.isActive({ editor, selection })\n if (active !== isActive) {\n setActive(isActive)\n }\n }\n if (entry.isEnabled) {\n const isEnabled = entry.isEnabled({ editor, selection })\n if (enabled !== isEnabled) {\n setEnabled(isEnabled)\n }\n }\n })\n }, [active, editor, enabled, entry])\n\n useEffect(() => {\n updateStates()\n }, [updateStates])\n\n useEffect(() => {\n document.addEventListener('mouseup', updateStates)\n return () => {\n document.removeEventListener('mouseup', updateStates)\n }\n }, [updateStates])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(() => {\n updateStates()\n }),\n )\n }, [editor, updateStates])\n\n useEffect(() => {\n setClassName(\n [\n baseClass,\n enabled === false ? 'disabled' : '',\n active ? 'active' : '',\n entry?.key ? `${baseClass}-${entry.key}` : '',\n ]\n .filter(Boolean)\n .join(' '),\n )\n }, [enabled, active, className, entry.key])\n\n const ref = useRef<HTMLButtonElement>(null)\n\n const dropDownContext = React.useContext(DropDownContext)\n\n if (dropDownContext === null) {\n throw new Error('DropDownItem must be used within a DropDown')\n }\n\n const { registerItem } = dropDownContext\n\n useEffect(() => {\n if (ref?.current != null) {\n registerItem(ref)\n }\n }, [ref, registerItem])\n\n return (\n <button\n className={className}\n onClick={() => {\n if (enabled !== false) {\n entry.onClick({\n editor,\n isActive: active,\n })\n }\n }}\n onMouseDown={(e) => {\n // This is required for Firefox compatibility. Without it, the dropdown will disappear without the onClick being called.\n // This only happens in Firefox. Must be something about how Firefox handles focus events differently.\n e.preventDefault()\n }}\n ref={ref}\n title={title}\n type=\"button\"\n >\n {children}\n </button>\n )\n}\n\nfunction DropDownItems({\n children,\n dropDownRef,\n onClose,\n}: {\n children: React.ReactNode\n dropDownRef: React.Ref<HTMLDivElement>\n onClose: () => void\n}): JSX.Element {\n const [items, setItems] = useState<Array<React.RefObject<HTMLButtonElement>>>()\n const [highlightedItem, setHighlightedItem] = useState<React.RefObject<HTMLButtonElement>>()\n\n const registerItem = useCallback(\n (itemRef: React.RefObject<HTMLButtonElement>) => {\n setItems((prev) => (prev != null ? [...prev, itemRef] : [itemRef]))\n },\n [setItems],\n )\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>): void => {\n if (items == null) return\n\n const { key } = event\n\n if (['ArrowDown', 'ArrowUp', 'Escape', 'Tab'].includes(key)) {\n event.preventDefault()\n }\n\n if (key === 'Escape' || key === 'Tab') {\n onClose()\n } else if (key === 'ArrowUp') {\n setHighlightedItem((prev) => {\n if (prev == null) return items[0]\n const index = items.indexOf(prev) - 1\n return items[index === -1 ? items.length - 1 : index]\n })\n } else if (key === 'ArrowDown') {\n setHighlightedItem((prev) => {\n if (prev == null) return items[0]\n return items[items.indexOf(prev) + 1]\n })\n }\n }\n\n const contextValue = useMemo(\n () => ({\n registerItem,\n }),\n [registerItem],\n )\n\n useEffect(() => {\n if (items != null && highlightedItem == null) {\n setHighlightedItem(items[0])\n }\n\n if (highlightedItem?.current != null) {\n highlightedItem.current.focus()\n }\n }, [items, highlightedItem])\n\n return (\n <DropDownContext.Provider value={contextValue}>\n <div\n className=\"floating-select-toolbar-popup__dropdown-items\"\n onKeyDown={handleKeyDown}\n ref={dropDownRef}\n >\n {children}\n </div>\n </DropDownContext.Provider>\n )\n}\n\nexport function DropDown({\n Icon,\n buttonAriaLabel,\n buttonClassName,\n children,\n disabled = false,\n stopCloseOnClickSelf,\n}: {\n Icon?: React.FC\n buttonAriaLabel?: string\n buttonClassName: string\n children: ReactNode\n disabled?: boolean\n stopCloseOnClickSelf?: boolean\n}): React.ReactNode {\n const dropDownRef = useRef<HTMLDivElement>(null)\n const buttonRef = useRef<HTMLButtonElement>(null)\n const [showDropDown, setShowDropDown] = useState(false)\n\n const handleClose = (): void => {\n setShowDropDown(false)\n if (buttonRef?.current != null) {\n buttonRef.current.focus()\n }\n }\n\n useEffect(() => {\n const button = buttonRef.current\n const dropDown = dropDownRef.current\n\n if (showDropDown && button !== null && dropDown !== null) {\n const { left, top } = button.getBoundingClientRect()\n const scrollTopOffset = window.pageYOffset || document.documentElement.scrollTop\n dropDown.style.top = `${top + scrollTopOffset + button.offsetHeight + 5}px`\n dropDown.style.left = `${Math.min(left - 5, window.innerWidth - dropDown.offsetWidth - 20)}px`\n }\n }, [dropDownRef, buttonRef, showDropDown])\n\n useEffect(() => {\n const button = buttonRef.current\n\n if (button !== null && showDropDown) {\n const handle = (event: MouseEvent): void => {\n const { target } = event\n if (stopCloseOnClickSelf != null) {\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (dropDownRef.current != null && dropDownRef.current.contains(target as Node)) {\n return\n }\n }\n if (!button.contains(target as Node)) {\n setShowDropDown(false)\n }\n }\n document.addEventListener('click', handle)\n\n return () => {\n document.removeEventListener('click', handle)\n }\n }\n }, [dropDownRef, buttonRef, showDropDown, stopCloseOnClickSelf])\n\n return (\n <React.Fragment>\n <button\n aria-label={buttonAriaLabel}\n className={buttonClassName + (showDropDown ? ' active' : '')}\n disabled={disabled}\n onClick={(event) => {\n event.preventDefault()\n setShowDropDown(!showDropDown)\n }}\n onMouseDown={(e) => {\n // This fixes a bug where you are unable to click the button if you are in a NESTED editor (editor in blocks field in editor).\n // Thus only happens if you click on the SVG of the button. Clicking on the outside works. Related issue: https://github.com/payloadcms/payload/issues/4025\n // TODO: Find out why exactly it happens and why e.preventDefault() on the mouseDown fixes it. Write that down here, or potentially fix a root cause, if there is any.\n e.preventDefault()\n }}\n ref={buttonRef}\n type=\"button\"\n >\n <Icon />\n <i className=\"floating-select-toolbar-popup__dropdown-caret\" />\n </button>\n\n {showDropDown &&\n createPortal(\n <DropDownItems dropDownRef={dropDownRef} onClose={handleClose}>\n {children}\n </DropDownItems>,\n document.body,\n )}\n </React.Fragment>\n )\n}\n"],"names":["lexicalComposerContextImport","useLexicalComposerContext","lexicalUtilsImport","mergeRegister","lexicalImport","$getSelection","useCallback","useEffect","useMemo","useRef","useState","React","createPortal","baseClass","DropDownContext","createContext","DropDownItem","children","entry","title","editor","enabled","setEnabled","active","setActive","className","setClassName","updateStates","getEditorState","read","selection","isActive","isEnabled","document","addEventListener","removeEventListener","registerUpdateListener","key","filter","Boolean","join","ref","dropDownContext","useContext","Error","registerItem","current","button","onClick","onMouseDown","e","preventDefault","type","DropDownItems","dropDownRef","onClose","items","setItems","highlightedItem","setHighlightedItem","itemRef","prev","handleKeyDown","event","includes","index","indexOf","length","contextValue","focus","Provider","value","div","onKeyDown","DropDown","Icon","buttonAriaLabel","buttonClassName","disabled","stopCloseOnClickSelf","buttonRef","showDropDown","setShowDropDown","handleClose","dropDown","left","top","getBoundingClientRect","scrollTopOffset","window","pageYOffset","documentElement","scrollTop","style","offsetHeight","Math","min","innerWidth","offsetWidth","handle","target","contains","Fragment","aria-label","i","body"],"mappings":"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"}
|
|
@@ -39,4 +39,4 @@ export const ToolbarDropdown = ({ Icon, anchorElem, classNames, editor, entries,
|
|
|
39
39
|
}));
|
|
40
40
|
};
|
|
41
41
|
|
|
42
|
-
//# sourceMappingURL=
|
|
42
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nconst baseClass = 'floating-select-toolbar-popup__dropdown'\n\nimport type { LexicalEditor } from 'lexical'\n\nimport type { FloatingToolbarSectionEntry } from '../types.js'\n\nimport { DropDown, DropDownItem } from './DropDown.js'\nimport './index.scss'\n\nexport const ToolbarEntry = ({\n anchorElem,\n editor,\n entry,\n}: {\n anchorElem: HTMLElement\n editor: LexicalEditor\n entry: FloatingToolbarSectionEntry\n}) => {\n if (entry.Component) {\n return (\n entry?.Component && (\n <entry.Component anchorElem={anchorElem} editor={editor} entry={entry} key={entry.key} />\n )\n )\n }\n\n return (\n <DropDownItem entry={entry} key={entry.key}>\n {entry?.ChildComponent && <entry.ChildComponent />}\n <span className=\"text\">{entry.label}</span>\n </DropDownItem>\n )\n}\n\nexport const ToolbarDropdown = ({\n Icon,\n anchorElem,\n classNames,\n editor,\n entries,\n sectionKey,\n}: {\n Icon?: React.FC\n anchorElem: HTMLElement\n classNames?: string[]\n editor: LexicalEditor\n entries: FloatingToolbarSectionEntry[]\n sectionKey: string\n}) => {\n return (\n <DropDown\n Icon={Icon}\n buttonAriaLabel={`${sectionKey} dropdown`}\n buttonClassName={[baseClass, `${baseClass}-${sectionKey}`, ...(classNames || [])]\n .filter(Boolean)\n .join(' ')}\n key={sectionKey}\n >\n {entries.length &&\n entries.map((entry) => {\n return (\n <ToolbarEntry anchorElem={anchorElem} editor={editor} entry={entry} key={entry.key} />\n )\n })}\n </DropDown>\n )\n}\n"],"names":["React","baseClass","DropDown","DropDownItem","ToolbarEntry","anchorElem","editor","entry","Component","key","ChildComponent","span","className","label","ToolbarDropdown","Icon","classNames","entries","sectionKey","buttonAriaLabel","buttonClassName","filter","Boolean","join","length","map"],"mappings":"AAAA;AACA,OAAOA,WAAW,QAAO;AAEzB,MAAMC,YAAY;AAMlB,SAASC,QAAQ,EAAEC,YAAY,QAAQ,gBAAe;AACtD,OAAO,eAAc;AAErB,OAAO,MAAMC,eAAe,CAAC,EAC3BC,UAAU,EACVC,MAAM,EACNC,KAAK,EAKN;IACC,IAAIA,MAAMC,SAAS,EAAE;QACnB,OACED,OAAOC,2BACL,oBAACD,MAAMC,SAAS;YAACH,YAAYA;YAAYC,QAAQA;YAAQC,OAAOA;YAAOE,KAAKF,MAAME,GAAG;;IAG3F;IAEA,qBACE,oBAACN;QAAaI,OAAOA;QAAOE,KAAKF,MAAME,GAAG;OACvCF,OAAOG,gCAAkB,oBAACH,MAAMG,cAAc,uBAC/C,oBAACC;QAAKC,WAAU;OAAQL,MAAMM,KAAK;AAGzC,EAAC;AAED,OAAO,MAAMC,kBAAkB,CAAC,EAC9BC,IAAI,EACJV,UAAU,EACVW,UAAU,EACVV,MAAM,EACNW,OAAO,EACPC,UAAU,EAQX;IACC,qBACE,oBAAChB;QACCa,MAAMA;QACNI,iBAAiB,CAAC,EAAED,WAAW,SAAS,CAAC;QACzCE,iBAAiB;YAACnB;YAAW,CAAC,EAAEA,UAAU,CAAC,EAAEiB,WAAW,CAAC;eAAMF,cAAc,EAAE;SAAE,CAC9EK,MAAM,CAACC,SACPC,IAAI,CAAC;QACRd,KAAKS;OAEJD,QAAQO,MAAM,IACbP,QAAQQ,GAAG,CAAC,CAAClB;QACX,qBACE,oBAACH;YAAaC,YAAYA;YAAYC,QAAQA;YAAQC,OAAOA;YAAOE,KAAKF,MAAME,GAAG;;IAEtF;AAGR,EAAC"}
|
|
@@ -267,4 +267,4 @@ export function FloatingSelectToolbarPlugin({ anchorElem = document.body }) {
|
|
|
267
267
|
return useFloatingTextFormatToolbar(editor, anchorElem);
|
|
268
268
|
}
|
|
269
269
|
|
|
270
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvRmxvYXRpbmdTZWxlY3RUb29sYmFyL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgTGV4aWNhbEVkaXRvciB9IGZyb20gJ2xleGljYWwnXG5cbmltcG9ydCBsZXhpY2FsQ29tcG9zZXJDb250ZXh0SW1wb3J0IGZyb20gJ0BsZXhpY2FsL3JlYWN0L0xleGljYWxDb21wb3NlckNvbnRleHQuanMnXG5jb25zdCB7IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQgfSA9IGxleGljYWxDb21wb3NlckNvbnRleHRJbXBvcnRcblxuaW1wb3J0IGxleGljYWxVdGlsc0ltcG9ydCBmcm9tICdAbGV4aWNhbC91dGlscydcbmNvbnN0IHsgbWVyZ2VSZWdpc3RlciB9ID0gbGV4aWNhbFV0aWxzSW1wb3J0XG5cbmltcG9ydCBsZXhpY2FsSW1wb3J0IGZyb20gJ2xleGljYWwnXG5jb25zdCB7XG4gICRnZXRTZWxlY3Rpb24sXG4gICRpc1JhbmdlU2VsZWN0aW9uLFxuICAkaXNUZXh0Tm9kZSxcbiAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gIFNFTEVDVElPTl9DSEFOR0VfQ09NTUFORCxcbn0gPSBsZXhpY2FsSW1wb3J0XG5cbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuXG5pbXBvcnQgdHlwZSB7IEZsb2F0aW5nVG9vbGJhclNlY3Rpb24sIEZsb2F0aW5nVG9vbGJhclNlY3Rpb25FbnRyeSB9IGZyb20gJy4vdHlwZXMuanMnXG5cbmltcG9ydCB7IHVzZUVkaXRvckNvbmZpZ0NvbnRleHQgfSBmcm9tICcuLi8uLi9jb25maWcvY2xpZW50L0VkaXRvckNvbmZpZ1Byb3ZpZGVyLmpzJ1xuaW1wb3J0IHsgZ2V0RE9NUmFuZ2VSZWN0IH0gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0RE9NUmFuZ2VSZWN0LmpzJ1xuaW1wb3J0IHsgc2V0RmxvYXRpbmdFbGVtUG9zaXRpb24gfSBmcm9tICcuLi8uLi91dGlscy9zZXRGbG9hdGluZ0VsZW1Qb3NpdGlvbi5qcydcbmltcG9ydCB7IFRvb2xiYXJCdXR0b24gfSBmcm9tICcuL1Rvb2xiYXJCdXR0b24vaW5kZXguanMnXG5pbXBvcnQgeyBUb29sYmFyRHJvcGRvd24gfSBmcm9tICcuL1Rvb2xiYXJEcm9wZG93bi9pbmRleC5qcydcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5mdW5jdGlvbiBCdXR0b25TZWN0aW9uRW50cnkoe1xuICBhbmNob3JFbGVtLFxuICBlZGl0b3IsXG4gIGVudHJ5LFxufToge1xuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudFxuICBlZGl0b3I6IExleGljYWxFZGl0b3JcbiAgZW50cnk6IEZsb2F0aW5nVG9vbGJhclNlY3Rpb25FbnRyeVxufSk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGlmIChlbnRyeS5Db21wb25lbnQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgZW50cnk/LkNvbXBvbmVudCAmJiAoXG4gICAgICAgIDxlbnRyeS5Db21wb25lbnQgYW5jaG9yRWxlbT17YW5jaG9yRWxlbX0gZWRpdG9yPXtlZGl0b3J9IGVudHJ5PXtlbnRyeX0ga2V5PXtlbnRyeS5rZXl9IC8+XG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8VG9vbGJhckJ1dHRvbiBlbnRyeT17ZW50cnl9IGtleT17ZW50cnkua2V5fT5cbiAgICAgIHtlbnRyeT8uQ2hpbGRDb21wb25lbnQgJiYgPGVudHJ5LkNoaWxkQ29tcG9uZW50IC8+fVxuICAgIDwvVG9vbGJhckJ1dHRvbj5cbiAgKVxufVxuXG5mdW5jdGlvbiBUb29sYmFyU2VjdGlvbih7XG4gIGFuY2hvckVsZW0sXG4gIGVkaXRvcixcbiAgaW5kZXgsXG4gIHNlY3Rpb24sXG59OiB7XG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50XG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvclxuICBpbmRleDogbnVtYmVyXG4gIHNlY3Rpb246IEZsb2F0aW5nVG9vbGJhclNlY3Rpb25cbn0pOiBSZWFjdC5SZWFjdE5vZGUge1xuICBjb25zdCB7IGVkaXRvckNvbmZpZyB9ID0gdXNlRWRpdG9yQ29uZmlnQ29udGV4dCgpXG5cbiAgY29uc3QgSWNvbiA9XG4gICAgc2VjdGlvbj8udHlwZSA9PT0gJ2Ryb3Bkb3duJyAmJiBzZWN0aW9uLmVudHJpZXMubGVuZ3RoICYmIHNlY3Rpb24uQ2hpbGRDb21wb25lbnRcbiAgICAgID8gc2VjdGlvbi5DaGlsZENvbXBvbmVudFxuICAgICAgOiBudWxsXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2BmbG9hdGluZy1zZWxlY3QtdG9vbGJhci1wb3B1cF9fc2VjdGlvbiBmbG9hdGluZy1zZWxlY3QtdG9vbGJhci1wb3B1cF9fc2VjdGlvbi0ke3NlY3Rpb24ua2V5fWB9XG4gICAgICBrZXk9e3NlY3Rpb24ua2V5fVxuICAgID5cbiAgICAgIHtzZWN0aW9uLnR5cGUgPT09ICdkcm9wZG93bicgJiZcbiAgICAgICAgc2VjdGlvbi5lbnRyaWVzLmxlbmd0aCAmJlxuICAgICAgICAoSWNvbiA/IChcbiAgICAgICAgICA8VG9vbGJhckRyb3Bkb3duXG4gICAgICAgICAgICBJY29uPXtJY29ufVxuICAgICAgICAgICAgYW5jaG9yRWxlbT17YW5jaG9yRWxlbX1cbiAgICAgICAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgICAgICAgZW50cmllcz17c2VjdGlvbi5lbnRyaWVzfVxuICAgICAgICAgICAgc2VjdGlvbktleT17c2VjdGlvbi5rZXl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8VG9vbGJhckRyb3Bkb3duXG4gICAgICAgICAgICBhbmNob3JFbGVtPXthbmNob3JFbGVtfVxuICAgICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgICBlbnRyaWVzPXtzZWN0aW9uLmVudHJpZXN9XG4gICAgICAgICAgICBzZWN0aW9uS2V5PXtzZWN0aW9uLmtleX1cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIHtzZWN0aW9uLnR5cGUgPT09ICdidXR0b25zJyAmJlxuICAgICAgICBzZWN0aW9uLmVudHJpZXMubGVuZ3RoICYmXG4gICAgICAgIHNlY3Rpb24uZW50cmllcy5tYXAoKGVudHJ5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxCdXR0b25TZWN0aW9uRW50cnlcbiAgICAgICAgICAgICAgYW5jaG9yRWxlbT17YW5jaG9yRWxlbX1cbiAgICAgICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgICAgIGVudHJ5PXtlbnRyeX1cbiAgICAgICAgICAgICAga2V5PXtlbnRyeS5rZXl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIClcbiAgICAgICAgfSl9XG4gICAgICB7aW5kZXggPCBlZGl0b3JDb25maWcuZmVhdHVyZXMuZmxvYXRpbmdTZWxlY3RUb29sYmFyPy5zZWN0aW9ucy5sZW5ndGggLSAxICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkaXZpZGVyXCIgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZnVuY3Rpb24gRmxvYXRpbmdTZWxlY3RUb29sYmFyKHtcbiAgYW5jaG9yRWxlbSxcbiAgZWRpdG9yLFxufToge1xuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudFxuICBlZGl0b3I6IExleGljYWxFZGl0b3Jcbn0pOiBSZWFjdC5SZWFjdE5vZGUge1xuICBjb25zdCBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBjYXJldFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgeyBlZGl0b3JDb25maWcgfSA9IHVzZUVkaXRvckNvbmZpZ0NvbnRleHQoKVxuXG4gIGNvbnN0IGNsb3NlRmxvYXRpbmdUb29sYmFyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWY/LmN1cnJlbnQpIHtcbiAgICAgIGNvbnN0IGlzT3BhY2l0eVplcm8gPSBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID09PSAnMCdcbiAgICAgIGNvbnN0IGlzUG9pbnRlckV2ZW50c05vbmUgPSBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5wb2ludGVyRXZlbnRzID09PSAnbm9uZSdcblxuICAgICAgaWYgKCFpc09wYWNpdHlaZXJvKSB7XG4gICAgICAgIHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPSAnMCdcbiAgICAgIH1cbiAgICAgIGlmICghaXNQb2ludGVyRXZlbnRzTm9uZSkge1xuICAgICAgICBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnXG4gICAgICB9XG4gICAgfVxuICB9LCBbcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmXSlcblxuICBjb25zdCBtb3VzZU1vdmVMaXN0ZW5lciA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAocG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmPy5jdXJyZW50ICYmIChlLmJ1dHRvbnMgPT09IDEgfHwgZS5idXR0b25zID09PSAzKSkge1xuICAgICAgICBjb25zdCBpc09wYWNpdHlaZXJvID0gcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSA9PT0gJzAnXG4gICAgICAgIGNvbnN0IGlzUG9pbnRlckV2ZW50c05vbmUgPSBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5wb2ludGVyRXZlbnRzID09PSAnbm9uZSdcbiAgICAgICAgaWYgKCFpc09wYWNpdHlaZXJvIHx8ICFpc1BvaW50ZXJFdmVudHNOb25lKSB7XG4gICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIG1vdXNlIGlzIG5vdCBvdmVyIHRoZSBwb3B1cFxuICAgICAgICAgIGNvbnN0IHggPSBlLmNsaWVudFhcbiAgICAgICAgICBjb25zdCB5ID0gZS5jbGllbnRZXG4gICAgICAgICAgY29uc3QgZWxlbWVudFVuZGVyTW91c2UgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHgsIHkpXG4gICAgICAgICAgaWYgKCFwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5jb250YWlucyhlbGVtZW50VW5kZXJNb3VzZSkpIHtcbiAgICAgICAgICAgIC8vIE1vdXNlIGlzIG5vdCBvdmVyIHRoZSB0YXJnZXQgZWxlbWVudCA9PiBub3QgYSBub3JtYWwgY2xpY2ssIGJ1dCBwcm9iYWJseSBhIGRyYWdcbiAgICAgICAgICAgIGNsb3NlRmxvYXRpbmdUb29sYmFyKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtjbG9zZUZsb2F0aW5nVG9vbGJhcl0sXG4gIClcblxuICBjb25zdCBtb3VzZVVwTGlzdGVuZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZj8uY3VycmVudCkge1xuICAgICAgaWYgKHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgIT09ICcxJykge1xuICAgICAgICBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID0gJzEnXG4gICAgICB9XG4gICAgICBpZiAocG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUucG9pbnRlckV2ZW50cyAhPT0gJ2F1dG8nKSB7XG4gICAgICAgIHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnYXV0bydcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWZdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2VNb3ZlTGlzdGVuZXIpXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBMaXN0ZW5lcilcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBtb3VzZU1vdmVMaXN0ZW5lcilcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBtb3VzZVVwTGlzdGVuZXIpXG4gICAgfVxuICB9LCBbcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLCBtb3VzZU1vdmVMaXN0ZW5lciwgbW91c2VVcExpc3RlbmVyXSlcblxuICBjb25zdCB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9ICRnZXRTZWxlY3Rpb24oKVxuXG4gICAgY29uc3QgcG9wdXBDaGFyU3R5bGVzRWRpdG9yRWxlbSA9IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50XG4gICAgY29uc3QgbmF0aXZlU2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG5cbiAgICBpZiAocG9wdXBDaGFyU3R5bGVzRWRpdG9yRWxlbSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3Qgcm9vdEVsZW1lbnQgPSBlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKVxuICAgIGlmIChcbiAgICAgIHNlbGVjdGlvbiAhPT0gbnVsbCAmJlxuICAgICAgbmF0aXZlU2VsZWN0aW9uICE9PSBudWxsICYmXG4gICAgICAhbmF0aXZlU2VsZWN0aW9uLmlzQ29sbGFwc2VkICYmXG4gICAgICByb290RWxlbWVudCAhPT0gbnVsbCAmJlxuICAgICAgcm9vdEVsZW1lbnQuY29udGFpbnMobmF0aXZlU2VsZWN0aW9uLmFuY2hvck5vZGUpXG4gICAgKSB7XG4gICAgICBjb25zdCByYW5nZVJlY3QgPSBnZXRET01SYW5nZVJlY3QobmF0aXZlU2VsZWN0aW9uLCByb290RWxlbWVudClcblxuICAgICAgc2V0RmxvYXRpbmdFbGVtUG9zaXRpb24ocmFuZ2VSZWN0LCBwb3B1cENoYXJTdHlsZXNFZGl0b3JFbGVtLCBhbmNob3JFbGVtLCAnY2VudGVyJylcblxuICAgICAgaWYgKGNhcmV0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2V0RmxvYXRpbmdFbGVtUG9zaXRpb24oXG4gICAgICAgICAgcmFuZ2VSZWN0LCAvLyBzZWxlY3Rpb24gdG8gcG9zaXRpb24gYXJvdW5kXG4gICAgICAgICAgY2FyZXRSZWYuY3VycmVudCwgLy8gd2hhdCB0byBwb3NpdGlvblxuICAgICAgICAgIHBvcHVwQ2hhclN0eWxlc0VkaXRvckVsZW0sIC8vIGFuY2hvciBlbGVtXG4gICAgICAgICAgJ2NlbnRlcicsXG4gICAgICAgICAgMTAsXG4gICAgICAgICAgNSxcbiAgICAgICAgICB0cnVlLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICB9LCBbZWRpdG9yLCBhbmNob3JFbGVtXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHNjcm9sbGVyRWxlbSA9IGFuY2hvckVsZW0ucGFyZW50RWxlbWVudFxuXG4gICAgY29uc3QgdXBkYXRlID0gKCkgPT4ge1xuICAgICAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgICAgIHVwZGF0ZVRleHRGb3JtYXRGbG9hdGluZ1Rvb2xiYXIoKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKVxuICAgIGlmIChzY3JvbGxlckVsZW0pIHtcbiAgICAgIHNjcm9sbGVyRWxlbS5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpXG4gICAgICBpZiAoc2Nyb2xsZXJFbGVtKSB7XG4gICAgICAgIHNjcm9sbGVyRWxlbS5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUpXG4gICAgICB9XG4gICAgfVxuICB9LCBbZWRpdG9yLCB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyLCBhbmNob3JFbGVtXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGVkaXRvci5nZXRFZGl0b3JTdGF0ZSgpLnJlYWQoKCkgPT4ge1xuICAgICAgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcigpXG4gICAgfSlcbiAgICByZXR1cm4gbWVyZ2VSZWdpc3RlcihcbiAgICAgIGVkaXRvci5yZWdpc3RlclVwZGF0ZUxpc3RlbmVyKCh7IGVkaXRvclN0YXRlIH0pID0+IHtcbiAgICAgICAgZWRpdG9yU3RhdGUucmVhZCgoKSA9PiB7XG4gICAgICAgICAgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcigpXG4gICAgICAgIH0pXG4gICAgICB9KSxcblxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZChcbiAgICAgICAgU0VMRUNUSU9OX0NIQU5HRV9DT01NQU5ELFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcigpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIENPTU1BTkRfUFJJT1JJVFlfTE9XLFxuICAgICAgKSxcbiAgICApXG4gIH0sIFtlZGl0b3IsIHVwZGF0ZVRleHRGb3JtYXRGbG9hdGluZ1Rvb2xiYXJdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJmbG9hdGluZy1zZWxlY3QtdG9vbGJhci1wb3B1cFwiIHJlZj17cG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZXRcIiByZWY9e2NhcmV0UmVmfSAvPlxuICAgICAge2VkaXRvci5pc0VkaXRhYmxlKCkgJiYgKFxuICAgICAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAge2VkaXRvckNvbmZpZz8uZmVhdHVyZXMgJiZcbiAgICAgICAgICAgIGVkaXRvckNvbmZpZy5mZWF0dXJlcz8uZmxvYXRpbmdTZWxlY3RUb29sYmFyPy5zZWN0aW9ucy5tYXAoKHNlY3Rpb24sIGkpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8VG9vbGJhclNlY3Rpb25cbiAgICAgICAgICAgICAgICAgIGFuY2hvckVsZW09e2FuY2hvckVsZW19XG4gICAgICAgICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgICAgICAgIGluZGV4PXtpfVxuICAgICAgICAgICAgICAgICAga2V5PXtzZWN0aW9uLmtleX1cbiAgICAgICAgICAgICAgICAgIHNlY3Rpb249e3NlY3Rpb259XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSl9XG4gICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApXG59XG5cbmZ1bmN0aW9uIHVzZUZsb2F0aW5nVGV4dEZvcm1hdFRvb2xiYXIoXG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvcixcbiAgYW5jaG9yRWxlbTogSFRNTEVsZW1lbnQsXG4pOiBKU1guRWxlbWVudCB8IG51bGwge1xuICBjb25zdCBbaXNUZXh0LCBzZXRJc1RleHRdID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgdXBkYXRlUG9wdXAgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgICAvLyBTaG91bGQgbm90IHRvIHBvcCB1cCB0aGUgZmxvYXRpbmcgdG9vbGJhciB3aGVuIHVzaW5nIElNRSBpbnB1dFxuICAgICAgaWYgKGVkaXRvci5pc0NvbXBvc2luZygpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gJGdldFNlbGVjdGlvbigpXG4gICAgICBjb25zdCBuYXRpdmVTZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKClcbiAgICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gZWRpdG9yLmdldFJvb3RFbGVtZW50KClcblxuICAgICAgaWYgKFxuICAgICAgICBuYXRpdmVTZWxlY3Rpb24gIT09IG51bGwgJiZcbiAgICAgICAgKCEkaXNSYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pIHx8XG4gICAgICAgICAgcm9vdEVsZW1lbnQgPT09IG51bGwgfHxcbiAgICAgICAgICAhcm9vdEVsZW1lbnQuY29udGFpbnMobmF0aXZlU2VsZWN0aW9uLmFuY2hvck5vZGUpKVxuICAgICAgKSB7XG4gICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmICghJGlzUmFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9uKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHNlbGVjdGlvbi5nZXRUZXh0Q29udGVudCgpICE9PSAnJykge1xuICAgICAgICBjb25zdCBub2RlcyA9IHNlbGVjdGlvbi5nZXROb2RlcygpXG4gICAgICAgIGxldCBmb3VuZE5vZGVXaXRoVGV4dCA9IGZhbHNlXG4gICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuICAgICAgICAgIGlmICgkaXNUZXh0Tm9kZShub2RlKSkge1xuICAgICAgICAgICAgc2V0SXNUZXh0KHRydWUpXG4gICAgICAgICAgICBmb3VuZE5vZGVXaXRoVGV4dCA9IHRydWVcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghZm91bmROb2RlV2l0aFRleHQpIHtcbiAgICAgICAgICBzZXRJc1RleHQoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmF3VGV4dENvbnRlbnQgPSBzZWxlY3Rpb24uZ2V0VGV4dENvbnRlbnQoKS5yZXBsYWNlKC9cXG4vZywgJycpXG4gICAgICBpZiAoIXNlbGVjdGlvbi5pc0NvbGxhcHNlZCgpICYmIHJhd1RleHRDb250ZW50ID09PSAnJykge1xuICAgICAgICBzZXRJc1RleHQoZmFsc2UpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH0pXG4gIH0sIFtlZGl0b3JdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2VsZWN0aW9uY2hhbmdlJywgdXBkYXRlUG9wdXApXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHVwZGF0ZVBvcHVwKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzZWxlY3Rpb25jaGFuZ2UnLCB1cGRhdGVQb3B1cClcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB1cGRhdGVQb3B1cClcbiAgICB9XG4gIH0sIFt1cGRhdGVQb3B1cF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gbWVyZ2VSZWdpc3RlcihcbiAgICAgIGVkaXRvci5yZWdpc3RlclVwZGF0ZUxpc3RlbmVyKCgpID0+IHtcbiAgICAgICAgdXBkYXRlUG9wdXAoKVxuICAgICAgfSksXG4gICAgICBlZGl0b3IucmVnaXN0ZXJSb290TGlzdGVuZXIoKCkgPT4ge1xuICAgICAgICBpZiAoZWRpdG9yLmdldFJvb3RFbGVtZW50KCkgPT09IG51bGwpIHtcbiAgICAgICAgICBzZXRJc1RleHQoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgIClcbiAgfSwgW2VkaXRvciwgdXBkYXRlUG9wdXBdKVxuXG4gIGlmICghaXNUZXh0KSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoPEZsb2F0aW5nU2VsZWN0VG9vbGJhciBhbmNob3JFbGVtPXthbmNob3JFbGVtfSBlZGl0b3I9e2VkaXRvcn0gLz4sIGFuY2hvckVsZW0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBGbG9hdGluZ1NlbGVjdFRvb2xiYXJQbHVnaW4oe1xuICBhbmNob3JFbGVtID0gZG9jdW1lbnQuYm9keSxcbn06IHtcbiAgYW5jaG9yRWxlbT86IEhUTUxFbGVtZW50XG59KTogSlNYLkVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3QgW2VkaXRvcl0gPSB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0KClcbiAgcmV0dXJuIHVzZUZsb2F0aW5nVGV4dEZvcm1hdFRvb2xiYXIoZWRpdG9yLCBhbmNob3JFbGVtKVxufVxuIl0sIm5hbWVzIjpbImxleGljYWxDb21wb3NlckNvbnRleHRJbXBvcnQiLCJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IiwibGV4aWNhbFV0aWxzSW1wb3J0IiwibWVyZ2VSZWdpc3RlciIsImxleGljYWxJbXBvcnQiLCIkZ2V0U2VsZWN0aW9uIiwiJGlzUmFuZ2VTZWxlY3Rpb24iLCIkaXNUZXh0Tm9kZSIsIkNPTU1BTkRfUFJJT1JJVFlfTE9XIiwiU0VMRUNUSU9OX0NIQU5HRV9DT01NQU5EIiwidXNlQ2FsbGJhY2siLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIlJlYWN0IiwiY3JlYXRlUG9ydGFsIiwidXNlRWRpdG9yQ29uZmlnQ29udGV4dCIsImdldERPTVJhbmdlUmVjdCIsInNldEZsb2F0aW5nRWxlbVBvc2l0aW9uIiwiVG9vbGJhckJ1dHRvbiIsIlRvb2xiYXJEcm9wZG93biIsIkJ1dHRvblNlY3Rpb25FbnRyeSIsImFuY2hvckVsZW0iLCJlZGl0b3IiLCJlbnRyeSIsIkNvbXBvbmVudCIsImtleSIsIkNoaWxkQ29tcG9uZW50IiwiVG9vbGJhclNlY3Rpb24iLCJpbmRleCIsInNlY3Rpb24iLCJlZGl0b3JDb25maWciLCJJY29uIiwidHlwZSIsImVudHJpZXMiLCJsZW5ndGgiLCJkaXYiLCJjbGFzc05hbWUiLCJzZWN0aW9uS2V5IiwibWFwIiwiZmVhdHVyZXMiLCJmbG9hdGluZ1NlbGVjdFRvb2xiYXIiLCJzZWN0aW9ucyIsIkZsb2F0aW5nU2VsZWN0VG9vbGJhciIsInBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZiIsImNhcmV0UmVmIiwiY2xvc2VGbG9hdGluZ1Rvb2xiYXIiLCJjdXJyZW50IiwiaXNPcGFjaXR5WmVybyIsInN0eWxlIiwib3BhY2l0eSIsImlzUG9pbnRlckV2ZW50c05vbmUiLCJwb2ludGVyRXZlbnRzIiwibW91c2VNb3ZlTGlzdGVuZXIiLCJlIiwiYnV0dG9ucyIsIngiLCJjbGllbnRYIiwieSIsImNsaWVudFkiLCJlbGVtZW50VW5kZXJNb3VzZSIsImRvY3VtZW50IiwiZWxlbWVudEZyb21Qb2ludCIsImNvbnRhaW5zIiwibW91c2VVcExpc3RlbmVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyIiwic2VsZWN0aW9uIiwicG9wdXBDaGFyU3R5bGVzRWRpdG9yRWxlbSIsIm5hdGl2ZVNlbGVjdGlvbiIsIndpbmRvdyIsImdldFNlbGVjdGlvbiIsInJvb3RFbGVtZW50IiwiZ2V0Um9vdEVsZW1lbnQiLCJpc0NvbGxhcHNlZCIsImFuY2hvck5vZGUiLCJyYW5nZVJlY3QiLCJzY3JvbGxlckVsZW0iLCJwYXJlbnRFbGVtZW50IiwidXBkYXRlIiwiZ2V0RWRpdG9yU3RhdGUiLCJyZWFkIiwicmVnaXN0ZXJVcGRhdGVMaXN0ZW5lciIsImVkaXRvclN0YXRlIiwicmVnaXN0ZXJDb21tYW5kIiwicmVmIiwiaXNFZGl0YWJsZSIsIkZyYWdtZW50IiwiaSIsInVzZUZsb2F0aW5nVGV4dEZvcm1hdFRvb2xiYXIiLCJpc1RleHQiLCJzZXRJc1RleHQiLCJ1cGRhdGVQb3B1cCIsImlzQ29tcG9zaW5nIiwiZ2V0VGV4dENvbnRlbnQiLCJub2RlcyIsImdldE5vZGVzIiwiZm91bmROb2RlV2l0aFRleHQiLCJub2RlIiwicmF3VGV4dENvbnRlbnQiLCJyZXBsYWNlIiwicmVnaXN0ZXJSb290TGlzdGVuZXIiLCJGbG9hdGluZ1NlbGVjdFRvb2xiYXJQbHVnaW4iLCJib2R5Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUdBLE9BQU9BLGtDQUFrQywyQ0FBMEM7QUFDbkYsTUFBTSxFQUFFQyx5QkFBeUIsRUFBRSxHQUFHRDtBQUV0QyxPQUFPRSx3QkFBd0IsaUJBQWdCO0FBQy9DLE1BQU0sRUFBRUMsYUFBYSxFQUFFLEdBQUdEO0FBRTFCLE9BQU9FLG1CQUFtQixVQUFTO0FBQ25DLE1BQU0sRUFDSkMsYUFBYSxFQUNiQyxpQkFBaUIsRUFDakJDLFdBQVcsRUFDWEMsb0JBQW9CLEVBQ3BCQyx3QkFBd0IsRUFDekIsR0FBR0w7QUFFSixTQUFTTSxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsUUFBTztBQUNoRSxZQUFZQyxXQUFXLFFBQU87QUFDOUIsU0FBU0MsWUFBWSxRQUFRLFlBQVc7QUFJeEMsU0FBU0Msc0JBQXNCLFFBQVEsOENBQTZDO0FBQ3BGLFNBQVNDLGVBQWUsUUFBUSxpQ0FBZ0M7QUFDaEUsU0FBU0MsdUJBQXVCLFFBQVEseUNBQXdDO0FBQ2hGLFNBQVNDLGFBQWEsUUFBUSwyQkFBMEI7QUFDeEQsU0FBU0MsZUFBZSxRQUFRLDZCQUE0QjtBQUM1RCxPQUFPLGVBQWM7QUFFckIsU0FBU0MsbUJBQW1CLEVBQzFCQyxVQUFVLEVBQ1ZDLE1BQU0sRUFDTkMsS0FBSyxFQUtOO0lBQ0MsSUFBSUEsTUFBTUMsU0FB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
|
|
270
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/field/lexical/plugins/FloatingSelectToolbar/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalEditor } from 'lexical'\n\nimport lexicalComposerContextImport from '@lexical/react/LexicalComposerContext.js'\nconst { useLexicalComposerContext } = lexicalComposerContextImport\n\nimport lexicalUtilsImport from '@lexical/utils'\nconst { mergeRegister } = lexicalUtilsImport\n\nimport lexicalImport from 'lexical'\nconst {\n $getSelection,\n $isRangeSelection,\n $isTextNode,\n COMMAND_PRIORITY_LOW,\n SELECTION_CHANGE_COMMAND,\n} = lexicalImport\n\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport * as React from 'react'\nimport { createPortal } from 'react-dom'\n\nimport type { FloatingToolbarSection, FloatingToolbarSectionEntry } from './types.js'\n\nimport { useEditorConfigContext } from '../../config/client/EditorConfigProvider.js'\nimport { getDOMRangeRect } from '../../utils/getDOMRangeRect.js'\nimport { setFloatingElemPosition } from '../../utils/setFloatingElemPosition.js'\nimport { ToolbarButton } from './ToolbarButton/index.js'\nimport { ToolbarDropdown } from './ToolbarDropdown/index.js'\nimport './index.scss'\n\nfunction ButtonSectionEntry({\n anchorElem,\n editor,\n entry,\n}: {\n anchorElem: HTMLElement\n editor: LexicalEditor\n entry: FloatingToolbarSectionEntry\n}): React.ReactNode {\n if (entry.Component) {\n return (\n entry?.Component && (\n <entry.Component anchorElem={anchorElem} editor={editor} entry={entry} key={entry.key} />\n )\n )\n }\n\n return (\n <ToolbarButton entry={entry} key={entry.key}>\n {entry?.ChildComponent && <entry.ChildComponent />}\n </ToolbarButton>\n )\n}\n\nfunction ToolbarSection({\n anchorElem,\n editor,\n index,\n section,\n}: {\n anchorElem: HTMLElement\n editor: LexicalEditor\n index: number\n section: FloatingToolbarSection\n}): React.ReactNode {\n const { editorConfig } = useEditorConfigContext()\n\n const Icon =\n section?.type === 'dropdown' && section.entries.length && section.ChildComponent\n ? section.ChildComponent\n : null\n\n return (\n <div\n className={`floating-select-toolbar-popup__section floating-select-toolbar-popup__section-${section.key}`}\n key={section.key}\n >\n {section.type === 'dropdown' &&\n section.entries.length &&\n (Icon ? (\n <ToolbarDropdown\n Icon={Icon}\n anchorElem={anchorElem}\n editor={editor}\n entries={section.entries}\n sectionKey={section.key}\n />\n ) : (\n <ToolbarDropdown\n anchorElem={anchorElem}\n editor={editor}\n entries={section.entries}\n sectionKey={section.key}\n />\n ))}\n {section.type === 'buttons' &&\n section.entries.length &&\n section.entries.map((entry) => {\n return (\n <ButtonSectionEntry\n anchorElem={anchorElem}\n editor={editor}\n entry={entry}\n key={entry.key}\n />\n )\n })}\n {index < editorConfig.features.floatingSelectToolbar?.sections.length - 1 && (\n <div className=\"divider\" />\n )}\n </div>\n )\n}\n\nfunction FloatingSelectToolbar({\n anchorElem,\n editor,\n}: {\n anchorElem: HTMLElement\n editor: LexicalEditor\n}): React.ReactNode {\n const popupCharStylesEditorRef = useRef<HTMLDivElement | null>(null)\n const caretRef = useRef<HTMLDivElement | null>(null)\n\n const { editorConfig } = useEditorConfigContext()\n\n const closeFloatingToolbar = useCallback(() => {\n if (popupCharStylesEditorRef?.current) {\n const isOpacityZero = popupCharStylesEditorRef.current.style.opacity === '0'\n const isPointerEventsNone = popupCharStylesEditorRef.current.style.pointerEvents === 'none'\n\n if (!isOpacityZero) {\n popupCharStylesEditorRef.current.style.opacity = '0'\n }\n if (!isPointerEventsNone) {\n popupCharStylesEditorRef.current.style.pointerEvents = 'none'\n }\n }\n }, [popupCharStylesEditorRef])\n\n const mouseMoveListener = useCallback(\n (e: MouseEvent) => {\n if (popupCharStylesEditorRef?.current && (e.buttons === 1 || e.buttons === 3)) {\n const isOpacityZero = popupCharStylesEditorRef.current.style.opacity === '0'\n const isPointerEventsNone = popupCharStylesEditorRef.current.style.pointerEvents === 'none'\n if (!isOpacityZero || !isPointerEventsNone) {\n // Check if the mouse is not over the popup\n const x = e.clientX\n const y = e.clientY\n const elementUnderMouse = document.elementFromPoint(x, y)\n if (!popupCharStylesEditorRef.current.contains(elementUnderMouse)) {\n // Mouse is not over the target element => not a normal click, but probably a drag\n closeFloatingToolbar()\n }\n }\n }\n },\n [closeFloatingToolbar],\n )\n\n const mouseUpListener = useCallback(() => {\n if (popupCharStylesEditorRef?.current) {\n if (popupCharStylesEditorRef.current.style.opacity !== '1') {\n popupCharStylesEditorRef.current.style.opacity = '1'\n }\n if (popupCharStylesEditorRef.current.style.pointerEvents !== 'auto') {\n popupCharStylesEditorRef.current.style.pointerEvents = 'auto'\n }\n }\n }, [popupCharStylesEditorRef])\n\n useEffect(() => {\n document.addEventListener('mousemove', mouseMoveListener)\n document.addEventListener('mouseup', mouseUpListener)\n\n return () => {\n document.removeEventListener('mousemove', mouseMoveListener)\n document.removeEventListener('mouseup', mouseUpListener)\n }\n }, [popupCharStylesEditorRef, mouseMoveListener, mouseUpListener])\n\n const updateTextFormatFloatingToolbar = useCallback(() => {\n const selection = $getSelection()\n\n const popupCharStylesEditorElem = popupCharStylesEditorRef.current\n const nativeSelection = window.getSelection()\n\n if (popupCharStylesEditorElem === null) {\n return\n }\n\n const rootElement = editor.getRootElement()\n if (\n selection !== null &&\n nativeSelection !== null &&\n !nativeSelection.isCollapsed &&\n rootElement !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n const rangeRect = getDOMRangeRect(nativeSelection, rootElement)\n\n setFloatingElemPosition(rangeRect, popupCharStylesEditorElem, anchorElem, 'center')\n\n if (caretRef.current) {\n setFloatingElemPosition(\n rangeRect, // selection to position around\n caretRef.current, // what to position\n popupCharStylesEditorElem, // anchor elem\n 'center',\n 10,\n 5,\n true,\n )\n }\n }\n }, [editor, anchorElem])\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement\n\n const update = () => {\n editor.getEditorState().read(() => {\n updateTextFormatFloatingToolbar()\n })\n }\n\n window.addEventListener('resize', update)\n if (scrollerElem) {\n scrollerElem.addEventListener('scroll', update)\n }\n\n return () => {\n window.removeEventListener('resize', update)\n if (scrollerElem) {\n scrollerElem.removeEventListener('scroll', update)\n }\n }\n }, [editor, updateTextFormatFloatingToolbar, anchorElem])\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n updateTextFormatFloatingToolbar()\n })\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateTextFormatFloatingToolbar()\n })\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateTextFormatFloatingToolbar()\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, updateTextFormatFloatingToolbar])\n\n return (\n <div className=\"floating-select-toolbar-popup\" ref={popupCharStylesEditorRef}>\n <div className=\"caret\" ref={caretRef} />\n {editor.isEditable() && (\n <React.Fragment>\n {editorConfig?.features &&\n editorConfig.features?.floatingSelectToolbar?.sections.map((section, i) => {\n return (\n <ToolbarSection\n anchorElem={anchorElem}\n editor={editor}\n index={i}\n key={section.key}\n section={section}\n />\n )\n })}\n </React.Fragment>\n )}\n </div>\n )\n}\n\nfunction useFloatingTextFormatToolbar(\n editor: LexicalEditor,\n anchorElem: HTMLElement,\n): JSX.Element | null {\n const [isText, setIsText] = useState(false)\n\n const updatePopup = useCallback(() => {\n editor.getEditorState().read(() => {\n // Should not to pop up the floating toolbar when using IME input\n if (editor.isComposing()) {\n return\n }\n const selection = $getSelection()\n const nativeSelection = window.getSelection()\n const rootElement = editor.getRootElement()\n\n if (\n nativeSelection !== null &&\n (!$isRangeSelection(selection) ||\n rootElement === null ||\n !rootElement.contains(nativeSelection.anchorNode))\n ) {\n setIsText(false)\n return\n }\n\n if (!$isRangeSelection(selection)) {\n return\n }\n\n if (selection.getTextContent() !== '') {\n const nodes = selection.getNodes()\n let foundNodeWithText = false\n for (const node of nodes) {\n if ($isTextNode(node)) {\n setIsText(true)\n foundNodeWithText = true\n break\n }\n }\n if (!foundNodeWithText) {\n setIsText(false)\n }\n } else {\n setIsText(false)\n }\n\n const rawTextContent = selection.getTextContent().replace(/\\n/g, '')\n if (!selection.isCollapsed() && rawTextContent === '') {\n setIsText(false)\n return\n }\n })\n }, [editor])\n\n useEffect(() => {\n document.addEventListener('selectionchange', updatePopup)\n document.addEventListener('mouseup', updatePopup)\n return () => {\n document.removeEventListener('selectionchange', updatePopup)\n document.removeEventListener('mouseup', updatePopup)\n }\n }, [updatePopup])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(() => {\n updatePopup()\n }),\n editor.registerRootListener(() => {\n if (editor.getRootElement() === null) {\n setIsText(false)\n }\n }),\n )\n }, [editor, updatePopup])\n\n if (!isText) {\n return null\n }\n\n return createPortal(<FloatingSelectToolbar anchorElem={anchorElem} editor={editor} />, anchorElem)\n}\n\nexport function FloatingSelectToolbarPlugin({\n anchorElem = document.body,\n}: {\n anchorElem?: HTMLElement\n}): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n return useFloatingTextFormatToolbar(editor, anchorElem)\n}\n"],"names":["lexicalComposerContextImport","useLexicalComposerContext","lexicalUtilsImport","mergeRegister","lexicalImport","$getSelection","$isRangeSelection","$isTextNode","COMMAND_PRIORITY_LOW","SELECTION_CHANGE_COMMAND","useCallback","useEffect","useRef","useState","React","createPortal","useEditorConfigContext","getDOMRangeRect","setFloatingElemPosition","ToolbarButton","ToolbarDropdown","ButtonSectionEntry","anchorElem","editor","entry","Component","key","ChildComponent","ToolbarSection","index","section","editorConfig","Icon","type","entries","length","div","className","sectionKey","map","features","floatingSelectToolbar","sections","FloatingSelectToolbar","popupCharStylesEditorRef","caretRef","closeFloatingToolbar","current","isOpacityZero","style","opacity","isPointerEventsNone","pointerEvents","mouseMoveListener","e","buttons","x","clientX","y","clientY","elementUnderMouse","document","elementFromPoint","contains","mouseUpListener","addEventListener","removeEventListener","updateTextFormatFloatingToolbar","selection","popupCharStylesEditorElem","nativeSelection","window","getSelection","rootElement","getRootElement","isCollapsed","anchorNode","rangeRect","scrollerElem","parentElement","update","getEditorState","read","registerUpdateListener","editorState","registerCommand","ref","isEditable","Fragment","i","useFloatingTextFormatToolbar","isText","setIsText","updatePopup","isComposing","getTextContent","nodes","getNodes","foundNodeWithText","node","rawTextContent","replace","registerRootListener","FloatingSelectToolbarPlugin","body"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { };
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/field/lexical/plugins/FloatingSelectToolbar/types.ts"],"sourcesContent":["import type { BaseSelection, LexicalEditor } from 'lexical'\nimport type React from 'react'\n\nexport type FloatingToolbarSection =\n | {\n ChildComponent?: React.FC\n entries: Array<FloatingToolbarSectionEntry>\n key: string\n order?: number\n type: 'dropdown'\n }\n | {\n entries: Array<FloatingToolbarSectionEntry>\n key: string\n order?: number\n type: 'buttons'\n }\n\nexport type FloatingToolbarSectionEntry = {\n ChildComponent?: React.FC\n /** Use component to ignore the children and onClick properties. It does not use the default, pre-defined format Button component */\n Component?: React.FC<{\n anchorElem: HTMLElement\n editor: LexicalEditor\n entry: FloatingToolbarSectionEntry\n }>\n isActive?: ({ editor, selection }: { editor: LexicalEditor; selection: BaseSelection }) => boolean\n isEnabled?: ({\n editor,\n selection,\n }: {\n editor: LexicalEditor\n selection: BaseSelection\n }) => boolean\n key: string\n /** The label is displayed as text if the entry is part of a dropdown section */\n label?: string\n onClick?: ({ editor, isActive }: { editor: LexicalEditor; isActive: boolean }) => void\n order?: number\n}\n"],"names":[],"mappings":"AAkBA,WAqBC"}
|
|
@@ -10,4 +10,4 @@ export const MarkdownShortcutPlugin = ()=>{
|
|
|
10
10
|
});
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
-
//# sourceMappingURL=
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/field/lexical/plugins/MarkdownShortcut/index.tsx"],"sourcesContent":["'use client'\n\nimport lexicalMarkdownShortcutPluginImport from '@lexical/react/LexicalMarkdownShortcutPlugin.js'\nconst { MarkdownShortcutPlugin: LexicalMarkdownShortcutPlugin } =\n lexicalMarkdownShortcutPluginImport\n\nimport * as React from 'react'\n\nimport { useEditorConfigContext } from '../../config/client/EditorConfigProvider.js'\n\nexport const MarkdownShortcutPlugin: React.FC = () => {\n const { editorConfig } = useEditorConfigContext()\n\n return <LexicalMarkdownShortcutPlugin transformers={editorConfig.features.markdownTransformers} />\n}\n"],"names":["lexicalMarkdownShortcutPluginImport","MarkdownShortcutPlugin","LexicalMarkdownShortcutPlugin","React","useEditorConfigContext","editorConfig","transformers","features","markdownTransformers"],"mappings":"AAAA;AAEA,OAAOA,yCAAyC,kDAAiD;AACjG,MAAM,EAAEC,wBAAwBC,6BAA6B,EAAE,GAC7DF;AAEF,YAAYG,WAAW,QAAO;AAE9B,SAASC,sBAAsB,QAAQ,8CAA6C;AAEpF,OAAO,MAAMH,yBAAmC;IAC9C,MAAM,EAAEI,YAAY,EAAE,GAAGD;IAEzB,qBAAO,oBAACF;QAA8BI,cAAcD,aAAaE,QAAQ,CAACC,oBAAoB;;AAChG,EAAC"}
|
|
@@ -401,4 +401,4 @@ export function useMenuAnchorRef(anchorElem, resolution, setResolution, classNam
|
|
|
401
401
|
return anchorElementRef;
|
|
402
402
|
}
|
|
403
403
|
|
|
404
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvU2xhc2hNZW51L0xleGljYWxUeXBlYWhlYWRNZW51UGx1Z2luL0xleGljYWxNZW51LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgTGV4aWNhbENvbW1hbmQsIExleGljYWxFZGl0b3IsIFRleHROb2RlIH0gZnJvbSAnbGV4aWNhbCdcbmltcG9ydCB0eXBlIHsgTXV0YWJsZVJlZk9iamVjdCwgUmVhY3RQb3J0YWwgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IGxleGljYWxDb21wb3NlckNvbnRleHRJbXBvcnQgZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENvbXBvc2VyQ29udGV4dC5qcydcbmNvbnN0IHsgdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCB9ID0gbGV4aWNhbENvbXBvc2VyQ29udGV4dEltcG9ydFxuXG5pbXBvcnQgbGV4aWNhbFV0aWxzSW1wb3J0IGZyb20gJ0BsZXhpY2FsL3V0aWxzJ1xuY29uc3QgeyBtZXJnZVJlZ2lzdGVyIH0gPSBsZXhpY2FsVXRpbHNJbXBvcnRcblxuaW1wb3J0IGxleGljYWxJbXBvcnQgZnJvbSAnbGV4aWNhbCdcbmNvbnN0IHtcbiAgJGdldFNlbGVjdGlvbixcbiAgJGlzUmFuZ2VTZWxlY3Rpb24sXG4gIENPTU1BTkRfUFJJT1JJVFlfTE9XLFxuICBLRVlfQVJST1dfRE9XTl9DT01NQU5ELFxuICBLRVlfQVJST1dfVVBfQ09NTUFORCxcbiAgS0VZX0VOVEVSX0NPTU1BTkQsXG4gIEtFWV9FU0NBUEVfQ09NTUFORCxcbiAgS0VZX1RBQl9DT01NQU5ELFxuICBjcmVhdGVDb21tYW5kLFxufSA9IGxleGljYWxJbXBvcnRcblxuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTGF5b3V0RWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5cbmltcG9ydCB0eXBlIHsgTWVudVRleHRNYXRjaCB9IGZyb20gJy4uL3VzZU1lbnVUcmlnZ2VyTWF0Y2guanMnXG5pbXBvcnQgdHlwZSB7IFNsYXNoTWVudUdyb3VwLCBTbGFzaE1lbnVPcHRpb24gfSBmcm9tICcuL3R5cGVzLmpzJ1xuXG5leHBvcnQgdHlwZSBNZW51UmVzb2x1dGlvbiA9IHtcbiAgZ2V0UmVjdDogKCkgPT4gRE9NUmVjdFxuICBtYXRjaD86IE1lbnVUZXh0TWF0Y2hcbn1cblxuY29uc3QgYmFzZUNsYXNzID0gJ3NsYXNoLW1lbnUtcG9wdXAnXG5cbmV4cG9ydCB0eXBlIE1lbnVSZW5kZXJGbiA9IChcbiAgYW5jaG9yRWxlbWVudFJlZjogTXV0YWJsZVJlZk9iamVjdDxIVE1MRWxlbWVudCB8IG51bGw+LFxuICBpdGVtUHJvcHM6IHtcbiAgICBncm91cHNXaXRoT3B0aW9uczogQXJyYXk8U2xhc2hNZW51R3JvdXA+XG4gICAgc2VsZWN0T3B0aW9uQW5kQ2xlYW5VcDogKHNlbGVjdGVkT3B0aW9uOiBTbGFzaE1lbnVPcHRpb24pID0+IHZvaWRcbiAgICBzZWxlY3RlZE9wdGlvbktleTogbnVsbCB8IHN0cmluZ1xuICAgIHNldFNlbGVjdGVkT3B0aW9uS2V5OiAob3B0aW9uS2V5OiBzdHJpbmcpID0+IHZvaWRcbiAgfSxcbiAgbWF0Y2hpbmdTdHJpbmc6IG51bGwgfCBzdHJpbmcsXG4pID0+IEpTWC5FbGVtZW50IHwgUmVhY3RQb3J0YWwgfCBudWxsXG5cbmNvbnN0IHNjcm9sbEludG9WaWV3SWZOZWVkZWQgPSAodGFyZ2V0OiBIVE1MRWxlbWVudCkgPT4ge1xuICBjb25zdCB0eXBlYWhlYWRDb250YWluZXJOb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NsYXNoLW1lbnUnKVxuICBpZiAoIXR5cGVhaGVhZENvbnRhaW5lck5vZGUpIHJldHVyblxuXG4gIGNvbnN0IHR5cGVhaGVhZFJlY3QgPSB0eXBlYWhlYWRDb250YWluZXJOb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cbiAgaWYgKHR5cGVhaGVhZFJlY3QudG9wICsgdHlwZWFoZWFkUmVjdC5oZWlnaHQgPiB3aW5kb3cuaW5uZXJIZWlnaHQpIHtcbiAgICB0eXBlYWhlYWRDb250YWluZXJOb2RlLnNjcm9sbEludG9WaWV3KHtcbiAgICAgIGJsb2NrOiAnY2VudGVyJyxcbiAgICB9KVxuICB9XG5cbiAgaWYgKHR5cGVhaGVhZFJlY3QudG9wIDwgMCkge1xuICAgIHR5cGVhaGVhZENvbnRhaW5lck5vZGUuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgYmxvY2s6ICdjZW50ZXInLFxuICAgIH0pXG4gIH1cblxuICB0YXJnZXQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnIH0pXG59XG5cbi8qKlxuICogV2FsayBiYWNrd2FyZHMgYWxvbmcgdXNlciBpbnB1dCBhbmQgZm9yd2FyZCB0aHJvdWdoIGVudGl0eSB0aXRsZSB0byB0cnlcbiAqIGFuZCByZXBsYWNlIG1vcmUgb2YgdGhlIHVzZXIncyB0ZXh0IHdpdGggZW50aXR5LlxuICovXG5mdW5jdGlvbiBnZXRGdWxsTWF0Y2hPZmZzZXQoZG9jdW1lbnRUZXh0OiBzdHJpbmcsIGVudHJ5VGV4dDogc3RyaW5nLCBvZmZzZXQ6IG51bWJlcik6IG51bWJlciB7XG4gIGxldCB0cmlnZ2VyT2Zmc2V0ID0gb2Zmc2V0XG4gIGZvciAobGV0IGkgPSB0cmlnZ2VyT2Zmc2V0OyBpIDw9IGVudHJ5VGV4dC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChkb2N1bWVudFRleHQuc3Vic3RyKC1pKSA9PT0gZW50cnlUZXh0LnN1YnN0cigwLCBpKSkge1xuICAgICAgdHJpZ2dlck9mZnNldCA9IGlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRyaWdnZXJPZmZzZXRcbn1cblxuLyoqXG4gKiBTcGxpdCBMZXhpY2FsIFRleHROb2RlIGFuZCByZXR1cm4gYSBuZXcgVGV4dE5vZGUgb25seSBjb250YWluaW5nIG1hdGNoZWQgdGV4dC5cbiAqIENvbW1vbiB1c2UgY2FzZXMgaW5jbHVkZTogcmVtb3ZpbmcgdGhlIG5vZGUsIHJlcGxhY2luZyB3aXRoIGEgbmV3IG5vZGUuXG4gKi9cbmZ1bmN0aW9uICRzcGxpdE5vZGVDb250YWluaW5nUXVlcnkobWF0Y2g6IE1lbnVUZXh0TWF0Y2gpOiBUZXh0Tm9kZSB8IG51bGwge1xuICBjb25zdCBzZWxlY3Rpb24gPSAkZ2V0U2VsZWN0aW9uKClcbiAgaWYgKCEkaXNSYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pIHx8ICFzZWxlY3Rpb24uaXNDb2xsYXBzZWQoKSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgYW5jaG9yID0gc2VsZWN0aW9uLmFuY2hvclxuICBpZiAoYW5jaG9yLnR5cGUgIT09ICd0ZXh0Jykge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgYW5jaG9yTm9kZSA9IGFuY2hvci5nZXROb2RlKClcbiAgaWYgKCFhbmNob3JOb2RlLmlzU2ltcGxlVGV4dCgpKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCBzZWxlY3Rpb25PZmZzZXQgPSBhbmNob3Iub2Zmc2V0XG4gIGNvbnN0IHRleHRDb250ZW50ID0gYW5jaG9yTm9kZS5nZXRUZXh0Q29udGVudCgpLnNsaWNlKDAsIHNlbGVjdGlvbk9mZnNldClcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2Rlc3RydWN0dXJpbmctYXNzaWdubWVudFxuICBjb25zdCBjaGFyYWN0ZXJPZmZzZXQgPSBtYXRjaC5yZXBsYWNlYWJsZVN0cmluZy5sZW5ndGhcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2Rlc3RydWN0dXJpbmctYXNzaWdubWVudFxuICBjb25zdCBxdWVyeU9mZnNldCA9IGdldEZ1bGxNYXRjaE9mZnNldCh0ZXh0Q29udGVudCwgbWF0Y2gubWF0Y2hpbmdTdHJpbmcsIGNoYXJhY3Rlck9mZnNldClcbiAgY29uc3Qgc3RhcnRPZmZzZXQgPSBzZWxlY3Rpb25PZmZzZXQgLSBxdWVyeU9mZnNldFxuICBpZiAoc3RhcnRPZmZzZXQgPCAwKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBsZXQgbmV3Tm9kZVxuICBpZiAoc3RhcnRPZmZzZXQgPT09IDApIHtcbiAgICA7W25ld05vZGVdID0gYW5jaG9yTm9kZS5zcGxpdFRleHQoc2VsZWN0aW9uT2Zmc2V0KVxuICB9IGVsc2Uge1xuICAgIDtbLCBuZXdOb2RlXSA9IGFuY2hvck5vZGUuc3BsaXRUZXh0KHN0YXJ0T2Zmc2V0LCBzZWxlY3Rpb25PZmZzZXQpXG4gIH1cblxuICByZXR1cm4gbmV3Tm9kZVxufVxuXG4vLyBHb3QgZnJvbSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDI1NDM5MDgvMjAxMzU4MFxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjcm9sbFBhcmVudChcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIGluY2x1ZGVIaWRkZW46IGJvb2xlYW4sXG4pOiBIVE1MQm9keUVsZW1lbnQgfCBIVE1MRWxlbWVudCB7XG4gIGxldCBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudClcbiAgY29uc3QgZXhjbHVkZVN0YXRpY1BhcmVudCA9IHN0eWxlLnBvc2l0aW9uID09PSAnYWJzb2x1dGUnXG4gIGNvbnN0IG92ZXJmbG93UmVnZXggPSBpbmNsdWRlSGlkZGVuID8gLyhhdXRvfHNjcm9sbHxoaWRkZW4pLyA6IC8oYXV0b3xzY3JvbGwpL1xuICBpZiAoc3R5bGUucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuYm9keVxuICB9XG4gIGZvciAobGV0IHBhcmVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gZWxlbWVudDsgKHBhcmVudCA9IHBhcmVudC5wYXJlbnRFbGVtZW50KTsgKSB7XG4gICAgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHBhcmVudClcbiAgICBpZiAoZXhjbHVkZVN0YXRpY1BhcmVudCAmJiBzdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChvdmVyZmxvd1JlZ2V4LnRlc3Qoc3R5bGUub3ZlcmZsb3cgKyBzdHlsZS5vdmVyZmxvd1kgKyBzdHlsZS5vdmVyZmxvd1gpKSB7XG4gICAgICByZXR1cm4gcGFyZW50XG4gICAgfVxuICB9XG4gIHJldHVybiBkb2N1bWVudC5ib2R5XG59XG5cbmZ1bmN0aW9uIGlzVHJpZ2dlclZpc2libGVJbk5lYXJlc3RTY3JvbGxDb250YWluZXIoXG4gIHRhcmdldEVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBjb250YWluZXJFbGVtZW50OiBIVE1MRWxlbWVudCxcbik6IGJvb2xlYW4ge1xuICBjb25zdCB0UmVjdCA9IHRhcmdldEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgY29uc3QgY1JlY3QgPSBjb250YWluZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gIHJldHVybiB0UmVjdC50b3AgPiBjUmVjdC50b3AgJiYgdFJlY3QudG9wIDwgY1JlY3QuYm90dG9tXG59XG5cbi8vIFJlcG9zaXRpb24gdGhlIG1lbnUgb24gc2Nyb2xsLCB3aW5kb3cgcmVzaXplLCBhbmQgZWxlbWVudCByZXNpemUuXG5leHBvcnQgZnVuY3Rpb24gdXNlRHluYW1pY1Bvc2l0aW9uaW5nKFxuICByZXNvbHV0aW9uOiBNZW51UmVzb2x1dGlvbiB8IG51bGwsXG4gIHRhcmdldEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCxcbiAgb25SZXBvc2l0aW9uOiAoKSA9PiB2b2lkLFxuICBvblZpc2liaWxpdHlDaGFuZ2U/OiAoaXNJblZpZXc6IGJvb2xlYW4pID0+IHZvaWQsXG4pIHtcbiAgY29uc3QgW2VkaXRvcl0gPSB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0KClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGFyZ2V0RWxlbWVudCAhPSBudWxsICYmIHJlc29sdXRpb24gIT0gbnVsbCkge1xuICAgICAgY29uc3Qgcm9vdEVsZW1lbnQgPSBlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKVxuICAgICAgY29uc3Qgcm9vdFNjcm9sbFBhcmVudCA9XG4gICAgICAgIHJvb3RFbGVtZW50ICE9IG51bGwgPyBnZXRTY3JvbGxQYXJlbnQocm9vdEVsZW1lbnQsIGZhbHNlKSA6IGRvY3VtZW50LmJvZHlcbiAgICAgIGxldCB0aWNraW5nID0gZmFsc2VcbiAgICAgIGxldCBwcmV2aW91c0lzSW5WaWV3ID0gaXNUcmlnZ2VyVmlzaWJsZUluTmVhcmVzdFNjcm9sbENvbnRhaW5lcihcbiAgICAgICAgdGFyZ2V0RWxlbWVudCxcbiAgICAgICAgcm9vdFNjcm9sbFBhcmVudCxcbiAgICAgIClcbiAgICAgIGNvbnN0IGhhbmRsZVNjcm9sbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCF0aWNraW5nKSB7XG4gICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBvblJlcG9zaXRpb24oKVxuICAgICAgICAgICAgdGlja2luZyA9IGZhbHNlXG4gICAgICAgICAgfSlcbiAgICAgICAgICB0aWNraW5nID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlzSW5WaWV3ID0gaXNUcmlnZ2VyVmlzaWJsZUluTmVhcmVzdFNjcm9sbENvbnRhaW5lcih0YXJnZXRFbGVtZW50LCByb290U2Nyb2xsUGFyZW50KVxuICAgICAgICBpZiAoaXNJblZpZXcgIT09IHByZXZpb3VzSXNJblZpZXcpIHtcbiAgICAgICAgICBwcmV2aW91c0lzSW5WaWV3ID0gaXNJblZpZXdcbiAgICAgICAgICBpZiAob25WaXNpYmlsaXR5Q2hhbmdlICE9IG51bGwpIHtcbiAgICAgICAgICAgIG9uVmlzaWJpbGl0eUNoYW5nZShpc0luVmlldylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKG9uUmVwb3NpdGlvbilcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBvblJlcG9zaXRpb24pXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwsIHtcbiAgICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKHRhcmdldEVsZW1lbnQpXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICByZXNpemVPYnNlcnZlci51bm9ic2VydmUodGFyZ2V0RWxlbWVudClcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uUmVwb3NpdGlvbilcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsLCB0cnVlKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3RhcmdldEVsZW1lbnQsIGVkaXRvciwgb25WaXNpYmlsaXR5Q2hhbmdlLCBvblJlcG9zaXRpb24sIHJlc29sdXRpb25dKVxufVxuXG5leHBvcnQgY29uc3QgU0NST0xMX1RZUEVBSEVBRF9PUFRJT05fSU5UT19WSUVXX0NPTU1BTkQ6IExleGljYWxDb21tYW5kPHtcbiAgaW5kZXg6IG51bWJlclxuICBvcHRpb246IFNsYXNoTWVudU9wdGlvblxufT4gPSBjcmVhdGVDb21tYW5kKCdTQ1JPTExfVFlQRUFIRUFEX09QVElPTl9JTlRPX1ZJRVdfQ09NTUFORCcpXG5cbmV4cG9ydCBmdW5jdGlvbiBMZXhpY2FsTWVudSh7XG4gIGFuY2hvckVsZW1lbnRSZWYsXG4gIGNsb3NlLFxuICBlZGl0b3IsXG4gIC8vIGdyb3Vwc1dpdGhPcHRpb25zIGZpbHRlcmluZyBpcyBhbHJlYWR5IGhhbmRsZWQgaW4gU2xhc2hNZW51L2luZGV4LnRzeC4gVGh1cywgZ3JvdXBzV2l0aE9wdGlvbnMgYWx3YXlzIGNvbnRhaW5zIHRoZSBtYXRjaGluZyBvcHRpb25zLlxuICBncm91cHNXaXRoT3B0aW9ucyxcbiAgbWVudVJlbmRlckZuLFxuICBvblNlbGVjdE9wdGlvbixcbiAgcmVzb2x1dGlvbixcbiAgc2hvdWxkU3BsaXROb2RlV2l0aFF1ZXJ5ID0gZmFsc2UsXG59OiB7XG4gIGFuY2hvckVsZW1lbnRSZWY6IE11dGFibGVSZWZPYmplY3Q8SFRNTEVsZW1lbnQ+XG4gIGNsb3NlOiAoKSA9PiB2b2lkXG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvclxuICBncm91cHNXaXRoT3B0aW9uczogQXJyYXk8U2xhc2hNZW51R3JvdXA+XG4gIG1lbnVSZW5kZXJGbjogTWVudVJlbmRlckZuXG4gIG9uU2VsZWN0T3B0aW9uOiAoXG4gICAgb3B0aW9uOiBTbGFzaE1lbnVPcHRpb24sXG4gICAgdGV4dE5vZGVDb250YWluaW5nUXVlcnk6IFRleHROb2RlIHwgbnVsbCxcbiAgICBjbG9zZU1lbnU6ICgpID0+IHZvaWQsXG4gICAgbWF0Y2hpbmdTdHJpbmc6IHN0cmluZyxcbiAgKSA9PiB2b2lkXG4gIHJlc29sdXRpb246IE1lbnVSZXNvbHV0aW9uXG4gIHNob3VsZFNwbGl0Tm9kZVdpdGhRdWVyeT86IGJvb2xlYW5cbn0pOiBKU1guRWxlbWVudCB8IG51bGwge1xuICBjb25zdCBbc2VsZWN0ZWRPcHRpb25LZXksIHNldFNlbGVjdGVkT3B0aW9uS2V5XSA9IHVzZVN0YXRlPG51bGwgfCBzdHJpbmc+KG51bGwpXG5cbiAgY29uc3QgbWF0Y2hpbmdTdHJpbmcgPSAocmVzb2x1dGlvbi5tYXRjaCAmJiByZXNvbHV0aW9uLm1hdGNoLm1hdGNoaW5nU3RyaW5nKSB8fCAnJ1xuXG4gIGNvbnN0IHVwZGF0ZVNlbGVjdGVkT3B0aW9uID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wdGlvbjogU2xhc2hNZW51T3B0aW9uKSA9PiB7XG4gICAgICBjb25zdCByb290RWxlbSA9IGVkaXRvci5nZXRSb290RWxlbWVudCgpXG4gICAgICBpZiAocm9vdEVsZW0gIT09IG51bGwpIHtcbiAgICAgICAgcm9vdEVsZW0uc2V0QXR0cmlidXRlKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnLCBgJHtiYXNlQ2xhc3N9X19pdGVtLSR7b3B0aW9uLmtleX1gKVxuICAgICAgICBzZXRTZWxlY3RlZE9wdGlvbktleShvcHRpb24ua2V5KVxuICAgICAgfVxuICAgIH0sXG4gICAgW2VkaXRvcl0sXG4gIClcblxuICBjb25zdCBzZXRTZWxlY3RlZE9wdGlvbktleVRvRmlyc3RNYXRjaGluZ09wdGlvbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAvLyBzZXQgc2VsZWN0ZWQgb3B0aW9uIHRvIHRoZSBmaXJzdCBvZiB0aGUgbWF0Y2hpbmcgb25lc1xuICAgIGlmIChncm91cHNXaXRoT3B0aW9ucyAhPT0gbnVsbCAmJiBtYXRjaGluZ1N0cmluZyAhPSBudWxsKSB7XG4gICAgICAvLyBncm91cHNXaXRoT3B0aW9ucyBmaWx0ZXJpbmcgaXMgYWxyZWFkeSBoYW5kbGVkIGluIFNsYXNoTWVudS9pbmRleC50c3guIFRodXMsIGdyb3Vwc1dpdGhPcHRpb25zIGFsd2F5cyBjb250YWlucyB0aGUgbWF0Y2hpbmcgb3B0aW9ucy5cbiAgICAgIGNvbnN0IGFsbE9wdGlvbnMgPSBncm91cHNXaXRoT3B0aW9ucy5mbGF0TWFwKChncm91cCkgPT4gZ3JvdXAub3B0aW9ucylcblxuICAgICAgaWYgKGFsbE9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0TWF0Y2hpbmdPcHRpb24gPSBhbGxPcHRpb25zWzBdXG4gICAgICAgIHVwZGF0ZVNlbGVjdGVkT3B0aW9uKGZpcnN0TWF0Y2hpbmdPcHRpb24pXG4gICAgICB9XG4gICAgfVxuICB9LCBbZ3JvdXBzV2l0aE9wdGlvbnMsIHVwZGF0ZVNlbGVjdGVkT3B0aW9uLCBtYXRjaGluZ1N0cmluZ10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRTZWxlY3RlZE9wdGlvbktleVRvRmlyc3RNYXRjaGluZ09wdGlvbigpXG4gIH0sIFttYXRjaGluZ1N0cmluZywgc2V0U2VsZWN0ZWRPcHRpb25LZXlUb0ZpcnN0TWF0Y2hpbmdPcHRpb25dKVxuXG4gIGNvbnN0IHNlbGVjdE9wdGlvbkFuZENsZWFuVXAgPSB1c2VDYWxsYmFjayhcbiAgICAoc2VsZWN0ZWRPcHRpb246IFNsYXNoTWVudU9wdGlvbikgPT4ge1xuICAgICAgZWRpdG9yLnVwZGF0ZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRleHROb2RlQ29udGFpbmluZ1F1ZXJ5ID1cbiAgICAgICAgICByZXNvbHV0aW9uLm1hdGNoICE9IG51bGwgJiYgc2hvdWxkU3BsaXROb2RlV2l0aFF1ZXJ5XG4gICAgICAgICAgICA/ICRzcGxpdE5vZGVDb250YWluaW5nUXVlcnkocmVzb2x1dGlvbi5tYXRjaClcbiAgICAgICAgICAgIDogbnVsbFxuXG4gICAgICAgIG9uU2VsZWN0T3B0aW9uKFxuICAgICAgICAgIHNlbGVjdGVkT3B0aW9uLFxuICAgICAgICAgIHRleHROb2RlQ29udGFpbmluZ1F1ZXJ5LFxuICAgICAgICAgIGNsb3NlLFxuICAgICAgICAgIHJlc29sdXRpb24ubWF0Y2ggPyByZXNvbHV0aW9uLm1hdGNoLm1hdGNoaW5nU3RyaW5nIDogJycsXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbZWRpdG9yLCBzaG91bGRTcGxpdE5vZGVXaXRoUXVlcnksIHJlc29sdXRpb24ubWF0Y2gsIG9uU2VsZWN0T3B0aW9uLCBjbG9zZV0sXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjb25zdCByb290RWxlbSA9IGVkaXRvci5nZXRSb290RWxlbWVudCgpXG4gICAgICBpZiAocm9vdEVsZW0gIT09IG51bGwpIHtcbiAgICAgICAgcm9vdEVsZW0ucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2VkaXRvcl0pXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZ3JvdXBzV2l0aE9wdGlvbnMgPT09IG51bGwpIHtcbiAgICAgIHNldFNlbGVjdGVkT3B0aW9uS2V5KG51bGwpXG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZE9wdGlvbktleSA9PT0gbnVsbCkge1xuICAgICAgc2V0U2VsZWN0ZWRPcHRpb25LZXlUb0ZpcnN0TWF0Y2hpbmdPcHRpb24oKVxuICAgIH1cbiAgfSwgW1xuICAgIGdyb3Vwc1dpdGhPcHRpb25zLFxuICAgIHNlbGVjdGVkT3B0aW9uS2V5LFxuICAgIHVwZGF0ZVNlbGVjdGVkT3B0aW9uLFxuICAgIHNldFNlbGVjdGVkT3B0aW9uS2V5VG9GaXJzdE1hdGNoaW5nT3B0aW9uLFxuICBdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuIG1lcmdlUmVnaXN0ZXIoXG4gICAgICBlZGl0b3IucmVnaXN0ZXJDb21tYW5kKFxuICAgICAgICBTQ1JPTExfVFlQRUFIRUFEX09QVElPTl9JTlRPX1ZJRVdfQ09NTUFORCxcbiAgICAgICAgKHsgb3B0aW9uIH0pID0+IHtcbiAgICAgICAgICBpZiAob3B0aW9uLnJlZiAmJiBvcHRpb24ucmVmLmN1cnJlbnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChvcHRpb24ucmVmLmN1cnJlbnQpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBDT01NQU5EX1BSSU9SSVRZX0xPVyxcbiAgICAgICksXG4gICAgKVxuICB9LCBbZWRpdG9yLCB1cGRhdGVTZWxlY3RlZE9wdGlvbl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gbWVyZ2VSZWdpc3RlcihcbiAgICAgIGVkaXRvci5yZWdpc3RlckNvbW1hbmQ8S2V5Ym9hcmRFdmVudD4oXG4gICAgICAgIEtFWV9BUlJPV19ET1dOX0NPTU1BTkQsXG4gICAgICAgIChwYXlsb2FkKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXZlbnQgPSBwYXlsb2FkXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZ3JvdXBzV2l0aE9wdGlvbnMgIT09IG51bGwgJiZcbiAgICAgICAgICAgIGdyb3Vwc1dpdGhPcHRpb25zLmxlbmd0aCAmJlxuICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25LZXkgIT09IG51bGxcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IGFsbE9wdGlvbnMgPSBncm91cHNXaXRoT3B0aW9ucy5mbGF0TWFwKChncm91cCkgPT4gZ3JvdXAub3B0aW9ucylcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBhbGxPcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24ua2V5ID09PSBzZWxlY3RlZE9wdGlvbktleSlcblxuICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRJbmRleCA9IHNlbGVjdGVkSW5kZXggIT09IGFsbE9wdGlvbnMubGVuZ3RoIC0gMSA/IHNlbGVjdGVkSW5kZXggKyAxIDogMFxuXG4gICAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbiA9IGFsbE9wdGlvbnNbbmV3U2VsZWN0ZWRJbmRleF1cblxuICAgICAgICAgICAgdXBkYXRlU2VsZWN0ZWRPcHRpb24obmV3U2VsZWN0ZWRPcHRpb24pXG4gICAgICAgICAgICBpZiAobmV3U2VsZWN0ZWRPcHRpb24ucmVmICE9IG51bGwgJiYgbmV3U2VsZWN0ZWRPcHRpb24ucmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgZWRpdG9yLmRpc3BhdGNoQ29tbWFuZChTQ1JPTExfVFlQRUFIRUFEX09QVElPTl9JTlRPX1ZJRVdfQ09NTUFORCwge1xuICAgICAgICAgICAgICAgIGluZGV4OiBuZXdTZWxlY3RlZEluZGV4LFxuICAgICAgICAgICAgICAgIG9wdGlvbjogbmV3U2VsZWN0ZWRPcHRpb24sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBDT01NQU5EX1BSSU9SSVRZX0xPVyxcbiAgICAgICksXG4gICAgICBlZGl0b3IucmVnaXN0ZXJDb21tYW5kPEtleWJvYXJkRXZlbnQ+KFxuICAgICAgICBLRVlfQVJST1dfVVBfQ09NTUFORCxcbiAgICAgICAgKHBheWxvYWQpID0+IHtcbiAgICAgICAgICBjb25zdCBldmVudCA9IHBheWxvYWRcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBncm91cHNXaXRoT3B0aW9ucyAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgZ3JvdXBzV2l0aE9wdGlvbnMubGVuZ3RoICYmXG4gICAgICAgICAgICBzZWxlY3RlZE9wdGlvbktleSAhPT0gbnVsbFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgYWxsT3B0aW9ucyA9IGdyb3Vwc1dpdGhPcHRpb25zLmZsYXRNYXAoKGdyb3VwKSA9PiBncm91cC5vcHRpb25zKVxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IGFsbE9wdGlvbnMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi5rZXkgPT09IHNlbGVjdGVkT3B0aW9uS2V5KVxuXG4gICAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRleCAhPT0gMCA/IHNlbGVjdGVkSW5kZXggLSAxIDogYWxsT3B0aW9ucy5sZW5ndGggLSAxXG5cbiAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkT3B0aW9uID0gYWxsT3B0aW9uc1tuZXdTZWxlY3RlZEluZGV4XVxuXG4gICAgICAgICAgICB1cGRhdGVTZWxlY3RlZE9wdGlvbihuZXdTZWxlY3RlZE9wdGlvbilcbiAgICAgICAgICAgIGlmIChuZXdTZWxlY3RlZE9wdGlvbi5yZWYgIT0gbnVsbCAmJiBuZXdTZWxlY3RlZE9wdGlvbi5yZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICBzY3JvbGxJbnRvVmlld0lmTmVlZGVkKG5ld1NlbGVjdGVkT3B0aW9uLnJlZi5jdXJyZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZDxLZXlib2FyZEV2ZW50PihcbiAgICAgICAgS0VZX0VTQ0FQRV9DT01NQU5ELFxuICAgICAgICAocGF5bG9hZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGV2ZW50ID0gcGF5bG9hZFxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVxuICAgICAgICAgIGNsb3NlKClcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBDT01NQU5EX1BSSU9SSVRZX0xPVyxcbiAgICAgICksXG4gICAgICBlZGl0b3IucmVnaXN0ZXJDb21tYW5kPEtleWJvYXJkRXZlbnQ+KFxuICAgICAgICBLRVlfVEFCX0NPTU1BTkQsXG4gICAgICAgIChwYXlsb2FkKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXZlbnQgPSBwYXlsb2FkXG5cbiAgICAgICAgICBpZiAoZ3JvdXBzV2l0aE9wdGlvbnMgPT09IG51bGwgfHwgc2VsZWN0ZWRPcHRpb25LZXkgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBhbGxPcHRpb25zID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb24gPSBhbGxPcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLmtleSA9PT0gc2VsZWN0ZWRPcHRpb25LZXkpXG4gICAgICAgICAgaWYgKCFzZWxlY3RlZE9wdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG4gICAgICAgICAgc2VsZWN0T3B0aW9uQW5kQ2xlYW5VcChzZWxlY3RlZE9wdGlvbilcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBDT01NQU5EX1BSSU9SSVRZX0xPVyxcbiAgICAgICksXG4gICAgICBlZGl0b3IucmVnaXN0ZXJDb21tYW5kKFxuICAgICAgICBLRVlfRU5URVJfQ09NTUFORCxcbiAgICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50IHwgbnVsbCkgPT4ge1xuICAgICAgICAgIGlmIChncm91cHNXaXRoT3B0aW9ucyA9PT0gbnVsbCB8fCBzZWxlY3RlZE9wdGlvbktleSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGFsbE9wdGlvbnMgPSBncm91cHNXaXRoT3B0aW9ucy5mbGF0TWFwKChncm91cCkgPT4gZ3JvdXAub3B0aW9ucylcbiAgICAgICAgICBjb25zdCBzZWxlY3RlZE9wdGlvbiA9IGFsbE9wdGlvbnMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24ua2V5ID09PSBzZWxlY3RlZE9wdGlvbktleSlcbiAgICAgICAgICBpZiAoIXNlbGVjdGVkT3B0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZXZlbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG4gICAgICAgICAgfVxuICAgICAgICAgIHNlbGVjdE9wdGlvbkFuZENsZWFuVXAoc2VsZWN0ZWRPcHRpb24pXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgIClcbiAgfSwgW1xuICAgIHNlbGVjdE9wdGlvbkFuZENsZWFuVXAsXG4gICAgY2xvc2UsXG4gICAgZWRpdG9yLFxuICAgIGdyb3Vwc1dpdGhPcHRpb25zLFxuICAgIHNlbGVjdGVkT3B0aW9uS2V5LFxuICAgIHVwZGF0ZVNlbGVjdGVkT3B0aW9uLFxuICBdKVxuXG4gIGNvbnN0IGxpc3RJdGVtUHJvcHMgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBncm91cHNXaXRoT3B0aW9ucyxcbiAgICAgIHNlbGVjdE9wdGlvbkFuZENsZWFuVXAsXG4gICAgICBzZWxlY3RlZE9wdGlvbktleSxcbiAgICAgIHNldFNlbGVjdGVkT3B0aW9uS2V5LFxuICAgIH0pLFxuICAgIFtzZWxlY3RPcHRpb25BbmRDbGVhblVwLCBzZWxlY3RlZE9wdGlvbktleSwgZ3JvdXBzV2l0aE9wdGlvbnNdLFxuICApXG5cbiAgcmV0dXJuIG1lbnVSZW5kZXJGbihcbiAgICBhbmNob3JFbGVtZW50UmVmLFxuICAgIGxpc3RJdGVtUHJvcHMsXG4gICAgcmVzb2x1dGlvbi5tYXRjaCA/IHJlc29sdXRpb24ubWF0Y2gubWF0Y2hpbmdTdHJpbmcgOiAnJyxcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlTWVudUFuY2hvclJlZihcbiAgYW5jaG9yRWxlbTogSFRNTEVsZW1lbnQsXG4gIHJlc29sdXRpb246IE1lbnVSZXNvbHV0aW9uIHwgbnVsbCxcbiAgc2V0UmVzb2x1dGlvbjogKHI6IE1lbnVSZXNvbHV0aW9uIHwgbnVsbCkgPT4gdm9pZCxcbiAgY2xhc3NOYW1lPzogc3RyaW5nLFxuKTogTXV0YWJsZVJlZk9iamVjdDxIVE1MRWxlbWVudD4ge1xuICBjb25zdCBbZWRpdG9yXSA9IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQoKVxuICBjb25zdCBhbmNob3JFbGVtZW50UmVmID0gdXNlUmVmPEhUTUxFbGVtZW50Pihkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSlcbiAgY29uc3QgcG9zaXRpb25NZW51ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gZWRpdG9yLmdldFJvb3RFbGVtZW50KClcbiAgICBjb25zdCBjb250YWluZXJEaXYgPSBhbmNob3JFbGVtZW50UmVmLmN1cnJlbnRcblxuICAgIGNvbnN0IFZFUlRJQ0FMX09GRlNFVCA9IDMyIGFzIGNvbnN0XG5cbiAgICBjb25zdCBtZW51RWxlID0gY29udGFpbmVyRGl2LmZpcnN0Q2hpbGQgYXMgRWxlbWVudFxuICAgIGlmIChyb290RWxlbWVudCAhPT0gbnVsbCAmJiByZXNvbHV0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB7IGhlaWdodCwgd2lkdGggfSA9IHJlc29sdXRpb24uZ2V0UmVjdCgpXG4gICAgICBsZXQgeyBsZWZ0LCB0b3AgfSA9IHJlc29sdXRpb24uZ2V0UmVjdCgpXG5cbiAgICAgIGNvbnN0IHJhd1RvcCA9IHRvcFxuICAgICAgdG9wIC09IGFuY2hvckVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgd2luZG93LnNjcm9sbFlcbiAgICAgIGxlZnQgLT0gYW5jaG9yRWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0ICsgd2luZG93LnNjcm9sbFhcbiAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS5sZWZ0ID0gYCR7bGVmdCArIHdpbmRvdy5zY3JvbGxYfXB4YFxuICAgICAgY29udGFpbmVyRGl2LnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGBcbiAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YFxuICAgICAgaWYgKG1lbnVFbGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgbWVudVJlY3QgPSBtZW51RWxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICAgIGNvbnN0IG1lbnVIZWlnaHQgPSBtZW51UmVjdC5oZWlnaHRcbiAgICAgICAgY29uc3QgbWVudVdpZHRoID0gbWVudVJlY3Qud2lkdGhcblxuICAgICAgICBjb25zdCByb290RWxlbWVudFJlY3QgPSByb290RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXG4gICAgICAgIGlmIChsZWZ0ICsgbWVudVdpZHRoID4gcm9vdEVsZW1lbnRSZWN0LnJpZ2h0KSB7XG4gICAgICAgICAgY29udGFpbmVyRGl2LnN0eWxlLmxlZnQgPSBgJHtyb290RWxlbWVudFJlY3QucmlnaHQgLSBtZW51V2lkdGggKyB3aW5kb3cuc2Nyb2xsWH1weGBcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdvdWxkR29PZmZCb3R0b21PZlNjcmVlbiA9IHJhd1RvcCArIG1lbnVIZWlnaHQgKyBWRVJUSUNBTF9PRkZTRVQgPiB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICAgICAgLy9jb25zdCB3b3VsZEdvT2ZmQm90dG9tT2ZDb250YWluZXIgPSB0b3AgKyBtZW51SGVpZ2h0ID4gcm9vdEVsZW1lbnRSZWN0LmJvdHRvbVxuICAgICAgICBjb25zdCB3b3VsZEdvT2ZmVG9wT2ZTY3JlZW4gPSByYXdUb3AgPCAwXG5cbiAgICAgICAgLy8gUG9zaXRpb24gc2xhc2ggbWVudSBhYm92ZSB0aGUgY3Vyc29yIGluc3RlYWQgb2YgYmVsb3cgKGRlZmF1bHQpIGlmIGl0IHdvdWxkIG90aGVyd2lzZSBnbyBvZmYgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLlxuICAgICAgICBpZiAod291bGRHb09mZkJvdHRvbU9mU2NyZWVuICYmICF3b3VsZEdvT2ZmVG9wT2ZTY3JlZW4pIHtcbiAgICAgICAgICBjb25zdCBtYXJnaW4gPSAyNFxuICAgICAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS50b3AgPSBgJHtcbiAgICAgICAgICAgIHRvcCArIFZFUlRJQ0FMX09GRlNFVCAtIG1lbnVIZWlnaHQgKyB3aW5kb3cuc2Nyb2xsWSAtIChoZWlnaHQgKyBtYXJnaW4pXG4gICAgICAgICAgfXB4YFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS50b3AgPSBgJHt0b3AgKyB3aW5kb3cuc2Nyb2xsWSArIFZFUlRJQ0FMX09GRlNFVH1weGBcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWNvbnRhaW5lckRpdi5pc0Nvbm5lY3RlZCkge1xuICAgICAgICBpZiAoY2xhc3NOYW1lICE9IG51bGwpIHtcbiAgICAgICAgICBjb250YWluZXJEaXYuY2xhc3NOYW1lID0gY2xhc3NOYW1lXG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyRGl2LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdTbGFzaCBtZW51JylcbiAgICAgICAgY29udGFpbmVyRGl2LnNldEF0dHJpYnV0ZSgnaWQnLCAnc2xhc2gtbWVudScpXG4gICAgICAgIGNvbnRhaW5lckRpdi5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnbGlzdGJveCcpXG4gICAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJ1xuICAgICAgICBjb250YWluZXJEaXYuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnXG4gICAgICAgIGFuY2hvckVsZW0uYXBwZW5kKGNvbnRhaW5lckRpdilcbiAgICAgIH1cbiAgICAgIGFuY2hvckVsZW1lbnRSZWYuY3VycmVudCA9IGNvbnRhaW5lckRpdlxuICAgICAgcm9vdEVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWNvbnRyb2xzJywgJ3NsYXNoLW1lbnUnKVxuICAgIH1cbiAgfSwgW2VkaXRvciwgcmVzb2x1dGlvbiwgY2xhc3NOYW1lLCBhbmNob3JFbGVtXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gZWRpdG9yLmdldFJvb3RFbGVtZW50KClcbiAgICBpZiAocmVzb2x1dGlvbiAhPT0gbnVsbCkge1xuICAgICAgcG9zaXRpb25NZW51KClcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChyb290RWxlbWVudCAhPT0gbnVsbCkge1xuICAgICAgICAgIHJvb3RFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb250YWluZXJEaXYgPSBhbmNob3JFbGVtZW50UmVmLmN1cnJlbnRcbiAgICAgICAgaWYgKGNvbnRhaW5lckRpdiAhPT0gbnVsbCAmJiBjb250YWluZXJEaXYuaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgICBjb250YWluZXJEaXYucmVtb3ZlKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2VkaXRvciwgcG9zaXRpb25NZW51LCByZXNvbHV0aW9uXSlcblxuICBjb25zdCBvblZpc2liaWxpdHlDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoaXNJblZpZXc6IGJvb2xlYW4pID0+IHtcbiAgICAgIGlmIChyZXNvbHV0aW9uICE9PSBudWxsKSB7XG4gICAgICAgIGlmICghaXNJblZpZXcpIHtcbiAgICAgICAgICBzZXRSZXNvbHV0aW9uKG51bGwpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtyZXNvbHV0aW9uLCBzZXRSZXNvbHV0aW9uXSxcbiAgKVxuXG4gIHVzZUR5bmFtaWNQb3NpdGlvbmluZyhyZXNvbHV0aW9uLCBhbmNob3JFbGVtZW50UmVmLmN1cnJlbnQsIHBvc2l0aW9uTWVudSwgb25WaXNpYmlsaXR5Q2hhbmdlKVxuXG4gIHJldHVybiBhbmNob3JFbGVtZW50UmVmXG59XG4iXSwibmFtZXMiOlsibGV4aWNhbENvbXBvc2VyQ29udGV4dEltcG9ydCIsInVzZUxleGljYWxDb21wb3NlckNvbnRleHQiLCJsZXhpY2FsVXRpbHNJbXBvcnQiLCJtZXJnZVJlZ2lzdGVyIiwibGV4aWNhbEltcG9ydCIsIiRnZXRTZWxlY3Rpb24iLCIkaXNSYW5nZVNlbGVjdGlvbiIsIkNPTU1BTkRfUFJJT1JJVFlfTE9XIiwiS0VZX0FSUk9XX0RPV05fQ09NTUFORCIsIktFWV9BUlJPV19VUF9DT01NQU5EIiwiS0VZX0VOVEVSX0NPTU1BTkQiLCJLRVlfRVNDQVBFX0NPTU1BTkQiLCJLRVlfVEFCX0NPTU1BTkQiLCJjcmVhdGVDb21tYW5kIiwidXNlQ2FsbGJhY2siLCJ1c2VFZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJiYXNlQ2xhc3MiLCJzY3JvbGxJbnRvVmlld0lmTmVlZGVkIiwidGFyZ2V0IiwidHlwZWFoZWFkQ29udGFpbmVyTm9kZSIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJ0eXBlYWhlYWRSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidG9wIiwiaGVpZ2h0Iiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJzY3JvbGxJbnRvVmlldyIsImJsb2NrIiwiZ2V0RnVsbE1hdGNoT2Zmc2V0IiwiZG9jdW1lbnRUZXh0IiwiZW50cnlUZXh0Iiwib2Zmc2V0IiwidHJpZ2dlck9mZnNldCIsImkiLCJsZW5ndGgiLCJzdWJzdHIiLCIkc3BsaXROb2RlQ29udGFpbmluZ1F1ZXJ5IiwibWF0Y2giLCJzZWxlY3Rpb24iLCJpc0NvbGxhcHNlZCIsImFuY2hvciIsInR5cGUiLCJhbmNob3JOb2RlIiwiZ2V0Tm9kZSIsImlzU2ltcGxlVGV4dCIsInNlbGVjdGlvbk9mZnNldCIsInRleHRDb250ZW50IiwiZ2V0VGV4dENvbnRlbnQiLCJzbGljZSIsImNoYXJhY3Rlck9mZnNldCIsInJlcGxhY2VhYmxlU3RyaW5nIiwicXVlcnlPZmZzZXQiLCJtYXRjaGluZ1N0cmluZyIsInN0YXJ0T2Zmc2V0IiwibmV3Tm9kZSIsInNwbGl0VGV4dCIsImdldFNjcm9sbFBhcmVudCIsImVsZW1lbnQiLCJpbmNsdWRlSGlkZGVuIiwic3R5bGUiLCJnZXRDb21wdXRlZFN0eWxlIiwiZXhjbHVkZVN0YXRpY1BhcmVudCIsInBvc2l0aW9uIiwib3ZlcmZsb3dSZWdleCIsImJvZHkiLCJwYXJlbnQiLCJwYXJlbnRFbGVtZW50IiwidGVzdCIsIm92ZXJmbG93Iiwib3ZlcmZsb3dZIiwib3ZlcmZsb3dYIiwiaXNUcmlnZ2VyVmlzaWJsZUluTmVhcmVzdFNjcm9sbENvbnRhaW5lciIsInRhcmdldEVsZW1lbnQiLCJjb250YWluZXJFbGVtZW50IiwidFJlY3QiLCJjUmVjdCIsImJvdHRvbSIsInVzZUR5bmFtaWNQb3NpdGlvbmluZyIsInJlc29sdXRpb24iLCJvblJlcG9zaXRpb24iLCJvblZpc2liaWxpdHlDaGFuZ2UiLCJlZGl0b3IiLCJyb290RWxlbWVudCIsImdldFJvb3RFbGVtZW50Iiwicm9vdFNjcm9sbFBhcmVudCIsInRpY2tpbmciLCJwcmV2aW91c0lzSW5WaWV3IiwiaGFuZGxlU2Nyb2xsIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiaXNJblZpZXciLCJyZXNpemVPYnNlcnZlciIsIlJlc2l6ZU9ic2VydmVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsImNhcHR1cmUiLCJwYXNzaXZlIiwib2JzZXJ2ZSIsInVub2JzZXJ2ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJTQ1JPTExfVFlQRUFIRUFEX09QVElPTl9JTlRPX1ZJRVdfQ09NTUFORCIsIkxleGljYWxNZW51IiwiYW5jaG9yRWxlbWVudFJlZiIsImNsb3NlIiwiZ3JvdXBzV2l0aE9wdGlvbnMiLCJtZW51UmVuZGVyRm4iLCJvblNlbGVjdE9wdGlvbiIsInNob3VsZFNwbGl0Tm9kZVdpdGhRdWVyeSIsInNlbGVjdGVkT3B0aW9uS2V5Iiwic2V0U2VsZWN0ZWRPcHRpb25LZXkiLCJ1cGRhdGVTZWxlY3RlZE9wdGlvbiIsIm9wdGlvbiIsInJvb3RFbGVtIiwic2V0QXR0cmlidXRlIiwia2V5Iiwic2V0U2VsZWN0ZWRPcHRpb25LZXlUb0ZpcnN0TWF0Y2hpbmdPcHRpb24iLCJhbGxPcHRpb25zIiwiZmxhdE1hcCIsImdyb3VwIiwib3B0aW9ucyIsImZpcnN0TWF0Y2hpbmdPcHRpb24iLCJzZWxlY3RPcHRpb25BbmRDbGVhblVwIiwic2VsZWN0ZWRPcHRpb24iLCJ1cGRhdGUiLCJ0ZXh0Tm9kZUNvbnRhaW5pbmdRdWVyeSIsInJlbW92ZUF0dHJpYnV0ZSIsInJlZ2lzdGVyQ29tbWFuZCIsInJlZiIsImN1cnJlbnQiLCJwYXlsb2FkIiwiZXZlbnQiLCJzZWxlY3RlZEluZGV4IiwiZmluZEluZGV4IiwibmV3U2VsZWN0ZWRJbmRleCIsIm5ld1NlbGVjdGVkT3B0aW9uIiwiZGlzcGF0Y2hDb21tYW5kIiwiaW5kZXgiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsImZpbmQiLCJsaXN0SXRlbVByb3BzIiwidXNlTWVudUFuY2hvclJlZiIsImFuY2hvckVsZW0iLCJzZXRSZXNvbHV0aW9uIiwiY2xhc3NOYW1lIiwiY3JlYXRlRWxlbWVudCIsInBvc2l0aW9uTWVudSIsImNvbnRhaW5lckRpdiIsIlZFUlRJQ0FMX09GRlNFVCIsIm1lbnVFbGUiLCJmaXJzdENoaWxkIiwid2lkdGgiLCJnZXRSZWN0IiwibGVmdCIsInJhd1RvcCIsInNjcm9sbFkiLCJzY3JvbGxYIiwibWVudVJlY3QiLCJtZW51SGVpZ2h0IiwibWVudVdpZHRoIiwicm9vdEVsZW1lbnRSZWN0IiwicmlnaHQiLCJ3b3VsZEdvT2ZmQm90dG9tT2ZTY3JlZW4iLCJ3b3VsZEdvT2ZmVG9wT2ZTY3JlZW4iLCJtYXJnaW4iLCJpc0Nvbm5lY3RlZCIsImRpc3BsYXkiLCJhcHBlbmQiLCJyZW1vdmUiXSwibWFwcGluZ3MiOiJBQUFBO0FBSUEsT0FBT0Esa0NBQWtDLDJDQUEwQztBQUNuRixNQUFNLEVBQUVDLHlCQUF5QixFQUFFLEdBQUdEO0FBRXRDLE9BQU9FLHdCQUF3QixpQkFBZ0I7QUFDL0MsTUFBTSxFQUFFQyxhQUFhLEVBQUUsR0FBR0Q7QUFFMUIsT0FBT0UsbUJBQW1CLFVBQVM7QUFDbkMs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
|
|
404
|
+
//# sourceMappingURL=LexicalMenu.js.map
|