@worktile/theia 14.2.6 → 14.2.8

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.
@@ -97,10 +97,11 @@ export const MentionEditor = {
97
97
  insideClosable: false,
98
98
  outsideClosable: true,
99
99
  hasBackdrop: false,
100
- offset: 5,
100
+ offset: 4,
101
101
  minWidth: 0,
102
102
  viewContainerRef: viewContainerRef,
103
- scrollStrategy: overlay.scrollStrategies.reposition()
103
+ scrollStrategy: overlay.scrollStrategies.reposition(),
104
+ autoAdaptive: true
104
105
  });
105
106
  popoverRef?.afterClosed().subscribe(() => {
106
107
  MentionEditor.close(editor);
@@ -165,4 +166,4 @@ export const MentionEditor = {
165
166
  .withPositions([bottomPosition, topPosition]);
166
167
  }
167
168
  };
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbi5lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9tZW50aW9uL21lbnRpb24uZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVcsTUFBTSxPQUFPLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RCxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHL0UsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBQ3pCLGFBQWEsQ0FBQyxNQUFpQixFQUFFLElBQVk7UUFDekMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBdUIsTUFBTSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxRQUFRLENBQUM7UUFDOUYsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDNUQsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUs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R0FBc0I7WUFDdEMsT0FBTyxFQUFFLE9BQU87WUFDaEIsT0FBTyxFQUFFLEtBQUs7WUFDZCxRQUFRLEVBQUUsT0FBTztZQUNqQixRQUFRLEVBQUUsS0FBSztZQUNmLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDO1lBQ3pDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDLEdBQUcsRUFBRTtTQUNqRCxDQUFDO1FBQ0YsTUFBTSxXQUFXLEdBQXNCO1lBQ25DLEdBQUcsY0FBYztZQUNqQixRQUFRLEVBQUUsUUFBUTtZQUNsQixPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQztTQUM1QyxDQUFDO1FBQ0YsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsT0FBTyxPQUFPO2FBQ1QsUUFBUSxFQUFFO2FBQ1YsbUJBQW1CLENBQUMsV0FBVyxDQUFDO2FBQ2hDLHNCQUFzQixDQUFDLEtBQUssQ0FBQzthQUM3QixpQkFBaUIsQ0FBQyxLQUFLLENBQUM7YUFDeEIsUUFBUSxDQUFDLEtBQUssQ0FBQzthQUNmLGFBQWEsQ0FBQyxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBFZGl0b3IsIFRyYW5zZm9ybXMsIEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBnZXRQbHVnaW5PcHRpb25zIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBQbHVnaW5LZXlzLCBUaGVFZGl0b3IgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCAqIGFzIFRoZVF1ZXJpZXMgZnJvbSAnLi4vLi4vcXVlcmllcyc7XG5pbXBvcnQgeyBUSEVfRURJVE9SX09SSUdJTl9BTkNIT1IsIFRIRV9FRElUT1JfUE9QT1ZFUl9SRUYgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBNZW50aW9uUGx1Z2luT3B0aW9ucyB9IGZyb20gJy4vbWVudGlvbi50eXBlJztcblxuZXhwb3J0IGNvbnN0IE1lbnRpb25FZGl0b3IgPSB7XG4gICAgaW5zZXJ0VHJpZ2dlcihlZGl0b3I6IFRoZUVkaXRvciwgdHlwZTogc3RyaW5nKSB7XG4gICAgICAgIE1lbnRpb25FZGl0b3IuY2xvc2UoZWRpdG9yKTtcbiAgICAgICAgY29uc3QgbWVudGlvbnMgPSBnZXRQbHVnaW5PcHRpb25zPE1lbnRpb25QbHVnaW5PcHRpb25zPihlZGl0b3IsIFBsdWdpbktleXMubWVudGlvbik/Lm1lbnRpb25zO1xuICAgICAgICBjb25zdCBjdXJyZW50TWVudGlvbiA9IG1lbnRpb25zLmZpbmQobSA9PiBtPy50eXBlID09PSB0eXBlKTtcbiAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnRUZXh0KGVkaXRvciwgY3VycmVudE1lbnRpb24udHJpZ2dlcik7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgVEhFX0VESVRPUl9PUklHSU5fQU5DSE9SLnNldChlZGl0b3IsIEVkaXRvci5iZWZvcmUoZWRpdG9yLCBlZGl0b3Iuc2VsZWN0aW9uLmFuY2hvcikpO1xuICAgICAgICAgICAgY29uc3QgdGV4dEVsZW1lbnQgPSBBbmd1bGFyRWRpdG9yLnRvRE9NTm9kZShlZGl0b3IsIFRoZVF1ZXJpZXMuYW5jaG9yQmxvY2tFbnRyeShlZGl0b3IpWzBdKTtcbiAgICAgICAgICAgIE1lbnRpb25FZGl0b3Iub3BlblNlbGVjdE92ZXJsYXkoZWRpdG9yLCB0eXBlLCB0ZXh0RWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgZGVsZXRlVHJpZ2dlclRleHQoZWRpdG9yOiBUaGVFZGl0b3IpIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoSW5mbyA9IE1lbnRpb25FZGl0b3IuZ2V0U2VhcmNoSW5mbyhlZGl0b3IpO1xuICAgICAgICBjb25zdCB7IGN1cnJlbnRSYW5nZSB9ID0gc2VhcmNoSW5mbztcbiAgICAgICAgVHJhbnNmb3Jtcy5kZWxldGUoZWRpdG9yLCB7IGF0OiBjdXJyZW50UmFuZ2UgfSk7XG4gICAgfSxcbiAgICBvcGVuU3VnZ2VzdGlvbihlZGl0b3I6IFRoZUVkaXRvciwgdHlwZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSBlZGl0b3I7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRSZWYgPSBlZGl0b3IuaW5qZWN0b3IuZ2V0KEVsZW1lbnRSZWYpO1xuICAgICAgICBjb25zdCBpc1BhcmFncmFwaFN0YXJ0ID0gRWRpdG9yLmlzU3RhcnQoZWRpdG9yLCBzZWxlY3Rpb24/LmFuY2hvciwgVGhlUXVlcmllcy5hbmNob3JCbG9ja0VudHJ5KGVkaXRvcilbMV0pO1xuICAgICAgICBjb25zdCBvcmlnaW5BbmNob3IgPSBUSEVfRURJVE9SX09SSUdJTl9BTkNIT1IuZ2V0KGVkaXRvcik7XG4gICAgICAgIGxldCB0ZXh0ID0gJyc7XG5cbiAgICAgICAgaWYgKCFvcmlnaW5BbmNob3IpIHtcbiAgICAgICAgICAgIFRIRV9FRElUT1JfT1JJR0lOX0FOQ0hPUi5zZXQoZWRpdG9yLCBlZGl0b3Iuc2VsZWN0aW9uLmFuY2hvcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzUGFyYWdyYXBoU3RhcnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGJlZm9yZVJhbmdlID0ge1xuICAgICAgICAgICAgICAgIGFuY2hvcjogRWRpdG9yLmJlZm9yZShlZGl0b3IsIHNlbGVjdGlvbi5hbmNob3IpLFxuICAgICAgICAgICAgICAgIGZvY3VzOiBzZWxlY3Rpb24uZm9jdXNcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0ZXh0ID0gRWRpdG9yLnN0cmluZyhlZGl0b3IsIGJlZm9yZVJhbmdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc1BhcmFncmFwaFN0YXJ0IHx8IHRleHQgPT09ICcgJykge1xuICAgICAgICAgICAgY29uc3QgdGV4dEVsZW1lbnQgPSBBbmd1bGFyRWRpdG9yLnRvRE9NTm9kZShlZGl0b3IsIFRoZVF1ZXJpZXMuYW5jaG9yQmxvY2tFbnRyeShlZGl0b3IpWzBdKTtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbiA9IGlzUGFyYWdyYXBoU3RhcnQgPyB0ZXh0RWxlbWVudCA6IGVsZW1lbnRSZWY7XG4gICAgICAgICAgICBNZW50aW9uRWRpdG9yLm9wZW5TZWxlY3RPdmVybGF5KGVkaXRvciwgdHlwZSwgb3JpZ2luKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgZ2V0U2VhcmNoSW5mbyhlZGl0b3I6IFRoZUVkaXRvcikge1xuICAgICAgICBjb25zdCBwb3BvdmVyUmVmID0gVEhFX0VESVRPUl9QT1BPVkVSX1JFRi5nZXQoZWRpdG9yKTtcbiAgICAgICAgY29uc3Qgb3JpZ2luQW5jaG9yID0gVEhFX0VESVRPUl9PUklHSU5fQU5DSE9SLmdldChlZGl0b3IpO1xuXG4gICAgICAgIGlmIChvcmlnaW5BbmNob3IgJiYgcG9wb3ZlclJlZiAmJiBwb3BvdmVyUmVmLmNvbXBvbmVudEluc3RhbmNlKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50UmFuZ2UgPSBFZGl0b3IucmFuZ2UoZWRpdG9yLCBvcmlnaW5BbmNob3IsIGVkaXRvci5zZWxlY3Rpb24/LmZvY3VzKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUZXh0ID0gRWRpdG9yLnN0cmluZyhlZGl0b3IsIGN1cnJlbnRSYW5nZSk7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgY3VycmVudFJhbmdlLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRUZXh0XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSxcbiAgICB1cGRhdGVTZWFyY2hUZXh0KGVkaXRvcjogVGhlRWRpdG9yLCB0ZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcG9wb3ZlclJlZiA9IFRIRV9FRElUT1JfUE9QT1ZFUl9SRUYuZ2V0KGVkaXRvcik7XG4gICAgICAgIGNvbnN0IG1lbnRpb25zID0gZ2V0UGx1Z2luT3B0aW9uczxNZW50aW9uUGx1Z2luT3B0aW9ucz4oZWRpdG9yLCBQbHVnaW5LZXlzLm1lbnRpb24pPy5tZW50aW9ucztcbiAgICAgICAgY29uc3QgcGFuZWxDbGFzcyA9IHBvcG92ZXJSZWYuZ2V0T3ZlcmxheVJlZigpLmdldENvbmZpZygpLnBhbmVsQ2xhc3M7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBBcnJheS5pc0FycmF5KHBhbmVsQ2xhc3MpXG4gICAgICAgICAgICA/IHBhbmVsQ2xhc3MuZmluZChpID0+IGkuaW5kZXhPZigndGhlLW1lbnRpb24tJykgPiAtMSkuc3BsaXQoJ3RoZS1tZW50aW9uLScpWzFdXG4gICAgICAgICAgICA6IHBhbmVsQ2xhc3Muc3BsaXQoJ3RoZS1tZW50aW9uLScpWzFdO1xuICAgICAgICBjb25zdCBjdXJyZW50TWVudGlvbiA9IG1lbnRpb25zLmZpbmQobSA9PiBtLnR5cGUgPT09IHR5cGUpO1xuICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoYF4ke2N1cnJlbnRNZW50aW9uLnRyaWdnZXJ9YCk7XG4gICAgICAgIGNvbnN0IGJlZm9yZU1hdGNoID0gdGV4dCAmJiB0ZXh0Lm1hdGNoKHJlZ2V4KTtcbiAgICAgICAgY29uc3Qga2V5d29yZHMgPSB0ZXh0LnNsaWNlKDEpO1xuICAgICAgICBjb25zdCBjZHIgPSBlZGl0b3IuaW5qZWN0b3IuZ2V0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgICAgICBpZiAocG9wb3ZlclJlZj8uY29tcG9uZW50SW5zdGFuY2UgJiYgYmVmb3JlTWF0Y2ggJiYgIWtleXdvcmRzLm1hdGNoKC9eXFxzfFxccyQvKSkge1xuICAgICAgICAgICAgcG9wb3ZlclJlZi5jb21wb25lbnRJbnN0YW5jZS5rZXl3b3JkcyA9IGtleXdvcmRzO1xuICAgICAgICAgICAgcG9wb3ZlclJlZi5jb21wb25lbnRJbnN0YW5jZS5nZXRTZWFyY2hSZXN1bHQoa2V5d29yZHMpO1xuICAgICAgICAgICAgY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBvcGVuU2VsZWN0T3ZlcmxheShlZGl0b3I6IFRoZUVkaXRvciwgdHlwZTogc3RyaW5nLCBvcmlnaW46IEVsZW1lbnRSZWYgfCBIVE1MRWxlbWVudCkge1xuICAgICAgICBjb25zdCB7IHNlbGVjdGlvbiB9ID0gZWRpdG9yO1xuICAgICAgICBjb25zdCBvdmVybGF5ID0gZWRpdG9yLmluamVjdG9yLmdldChPdmVybGF5KTtcbiAgICAgICAgY29uc3QgdGh5UG9wb3ZlciA9IGVkaXRvci5pbmplY3Rvci5nZXQoVGh5UG9wb3Zlcik7XG4gICAgICAgIGNvbnN0IHZpZXdDb250YWluZXJSZWYgPSBlZGl0b3IuaW5qZWN0b3IuZ2V0KFZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICBjb25zdCBjZHIgPSBlZGl0b3IuaW5qZWN0b3IuZ2V0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgICAgICAgY29uc3QgbWVudGlvbnMgPSBnZXRQbHVnaW5PcHRpb25zPE1lbnRpb25QbHVnaW5PcHRpb25zPihlZGl0b3IsIFBsdWdpbktleXMubWVudGlvbik/Lm1lbnRpb25zO1xuICAgICAgICBjb25zdCBjdXJyZW50TWVudGlvbiA9IG1lbnRpb25zLmZpbmQobSA9PiBtLnR5cGUgPT09IHR5cGUpO1xuICAgICAgICBjb25zdCBzdWdnZXN0aW9uQ29tcG9uZW50ID0gY3VycmVudE1lbnRpb24/LnN1Z2dlc3Rpb247XG5cbiAgICAgICAgY29uc3QgcG9wb3ZlclJlZiA9IHRoeVBvcG92ZXIub3BlbihzdWdnZXN0aW9uQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICAgICAgdHlwZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IGB0aGUtbWVudGlvbi0ke3R5cGV9YCxcbiAgICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbUxlZnQnLFxuICAgICAgICAgICAgaW5zaWRlQ2xvc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgb3V0c2lkZUNsb3NhYmxlOiB0cnVlLFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgICAgICAgb2Zmc2V0OiA1LFxuICAgICAgICAgICAgbWluV2lkdGg6IDAsXG4gICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB2aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IG92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKClcbiAgICAgICAgfSk7XG4gICAgICAgIHBvcG92ZXJSZWY/LmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIE1lbnRpb25FZGl0b3IuY2xvc2UoZWRpdG9yKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHBvcG92ZXJSZWY/LmdldE92ZXJsYXlSZWYoKS51cGRhdGVQb3NpdGlvblN0cmF0ZWd5KE1lbnRpb25FZGl0b3IuY3JlYXRlUG9zaXRpb25TdHJhdGVneShlZGl0b3IpKTtcblxuICAgICAgICBUSEVfRURJVE9SX1BPUE9WRVJfUkVGLnNldChlZGl0b3IsIHBvcG92ZXJSZWYpO1xuICAgICAgICBjZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSxcbiAgICBjbG9zZShlZGl0b3I6IFRoZUVkaXRvcikge1xuICAgICAgICBjb25zdCBwb3BvdmVyUmVmID0gVEhFX0VESVRPUl9QT1BPVkVSX1JFRi5nZXQoZWRpdG9yKTtcbiAgICAgICAgaWYgKHBvcG92ZXJSZWYpIHtcbiAgICAgICAgICAgIHBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgICAgIFRIRV9FRElUT1JfUE9QT1ZFUl9SRUYuc2V0KGVkaXRvciwgbnVsbCk7XG4gICAgICAgICAgICBUSEVfRURJVE9SX09SSUdJTl9BTkNIT1Iuc2V0KGVkaXRvciwgbnVsbCk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGluc2VydE1lbnRpb248VD4oZWRpdG9yOiBUaGVFZGl0b3IsIHR5cGU6IHN0cmluZywgZGF0YTogVCkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0ge1xuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJydcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG4gICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZXMoZWRpdG9yLCBlbGVtZW50IGFzIEVsZW1lbnQpO1xuICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIGVkaXRvci5zZWxlY3Rpb24pO1xuICAgICAgICBUcmFuc2Zvcm1zLm1vdmUoZWRpdG9yKTtcbiAgICAgICAgVGhlRWRpdG9yLmZvY3VzKGVkaXRvcik7XG5cbiAgICAgICAgZWRpdG9yLmluc2VydFRleHQoJyAnKTtcbiAgICB9LFxuICAgIGlzQWN0aXZlKGVkaXRvcjogVGhlRWRpdG9yLCB0eXBlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgW21hdGNoXSA9IFRoZVF1ZXJpZXMuZ2V0Tm9kZXNCeVR5cGUoZWRpdG9yLCB0eXBlKTtcbiAgICAgICAgcmV0dXJuICEhbWF0Y2g7XG4gICAgfSxcbiAgICBjcmVhdGVQb3NpdGlvblN0cmF0ZWd5KGVkaXRvcjogVGhlRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IHRleHRFbGVtZW50ID0gQW5ndWxhckVkaXRvci50b0RPTU5vZGUoZWRpdG9yLCBUaGVRdWVyaWVzLmFuY2hvckJsb2NrRW50cnkoZWRpdG9yKVswXSk7XG4gICAgICAgIGNvbnN0IG5hdGl2ZVJhbmdlID0gQW5ndWxhckVkaXRvci50b0RPTVJhbmdlKGVkaXRvciwgZWRpdG9yLnNlbGVjdGlvbik7XG4gICAgICAgIGNvbnN0IHJlY3RDdXJzb3IgPSBuYXRpdmVSYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgcmVjdFRleHRFbGVtZW50ID0gdGV4dEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGJvdHRvbVBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgb2Zmc2V0WDogcmVjdEN1cnNvci54IC0gcmVjdFRleHRFbGVtZW50LngsXG4gICAgICAgICAgICBvZmZzZXRZOiByZWN0Q3Vyc29yLnkgLSByZWN0VGV4dEVsZW1lbnQueSArIDIwXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHRvcFBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgICAgICAgICAgIC4uLmJvdHRvbVBvc2l0aW9uLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICAgICAgb2Zmc2V0WTogcmVjdEN1cnNvci55IC0gcmVjdFRleHRFbGVtZW50LnlcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgb3ZlcmxheSA9IGVkaXRvci5pbmplY3Rvci5nZXQoT3ZlcmxheSk7XG4gICAgICAgIHJldHVybiBvdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGV4dEVsZW1lbnQpXG4gICAgICAgICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyhmYWxzZSlcbiAgICAgICAgICAgIC53aXRoR3Jvd0FmdGVyT3BlbihmYWxzZSlcbiAgICAgICAgICAgIC53aXRoUHVzaChmYWxzZSlcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKFtib3R0b21Qb3NpdGlvbiwgdG9wUG9zaXRpb25dKTtcbiAgICB9XG59O1xuIl19
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbi5lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9tZW50aW9uL21lbnRpb24uZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVcsTUFBTSxPQUFPLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RCxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHL0UsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBQ3pCLGFBQWEsQ0FBQyxNQUFpQixFQUFFLElBQVk7UUFDekMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBdUIsTUFBTSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxRQUFRLENBQUM7UUFDOUYsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDNUQsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUs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Q0FBQztRQUM1RCxNQUFNLGNBQWMsR0FBc0I7WUFDdEMsT0FBTyxFQUFFLE9BQU87WUFDaEIsT0FBTyxFQUFFLEtBQUs7WUFDZCxRQUFRLEVBQUUsT0FBTztZQUNqQixRQUFRLEVBQUUsS0FBSztZQUNmLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDO1lBQ3pDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDLEdBQUcsRUFBRTtTQUNqRCxDQUFDO1FBQ0YsTUFBTSxXQUFXLEdBQXNCO1lBQ25DLEdBQUcsY0FBYztZQUNqQixRQUFRLEVBQUUsUUFBUTtZQUNsQixPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQztTQUM1QyxDQUFDO1FBQ0YsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsT0FBTyxPQUFPO2FBQ1QsUUFBUSxFQUFFO2FBQ1YsbUJBQW1CLENBQUMsV0FBVyxDQUFDO2FBQ2hDLHNCQUFzQixDQUFDLEtBQUssQ0FBQzthQUM3QixpQkFBaUIsQ0FBQyxLQUFLLENBQUM7YUFDeEIsUUFBUSxDQUFDLEtBQUssQ0FBQzthQUNmLGFBQWEsQ0FBQyxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBFZGl0b3IsIFRyYW5zZm9ybXMsIEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBnZXRQbHVnaW5PcHRpb25zIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBQbHVnaW5LZXlzLCBUaGVFZGl0b3IgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCAqIGFzIFRoZVF1ZXJpZXMgZnJvbSAnLi4vLi4vcXVlcmllcyc7XG5pbXBvcnQgeyBUSEVfRURJVE9SX09SSUdJTl9BTkNIT1IsIFRIRV9FRElUT1JfUE9QT1ZFUl9SRUYgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBNZW50aW9uUGx1Z2luT3B0aW9ucyB9IGZyb20gJy4vbWVudGlvbi50eXBlJztcblxuZXhwb3J0IGNvbnN0IE1lbnRpb25FZGl0b3IgPSB7XG4gICAgaW5zZXJ0VHJpZ2dlcihlZGl0b3I6IFRoZUVkaXRvciwgdHlwZTogc3RyaW5nKSB7XG4gICAgICAgIE1lbnRpb25FZGl0b3IuY2xvc2UoZWRpdG9yKTtcbiAgICAgICAgY29uc3QgbWVudGlvbnMgPSBnZXRQbHVnaW5PcHRpb25zPE1lbnRpb25QbHVnaW5PcHRpb25zPihlZGl0b3IsIFBsdWdpbktleXMubWVudGlvbik/Lm1lbnRpb25zO1xuICAgICAgICBjb25zdCBjdXJyZW50TWVudGlvbiA9IG1lbnRpb25zLmZpbmQobSA9PiBtPy50eXBlID09PSB0eXBlKTtcbiAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnRUZXh0KGVkaXRvciwgY3VycmVudE1lbnRpb24udHJpZ2dlcik7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgVEhFX0VESVRPUl9PUklHSU5fQU5DSE9SLnNldChlZGl0b3IsIEVkaXRvci5iZWZvcmUoZWRpdG9yLCBlZGl0b3Iuc2VsZWN0aW9uLmFuY2hvcikpO1xuICAgICAgICAgICAgY29uc3QgdGV4dEVsZW1lbnQgPSBBbmd1bGFyRWRpdG9yLnRvRE9NTm9kZShlZGl0b3IsIFRoZVF1ZXJpZXMuYW5jaG9yQmxvY2tFbnRyeShlZGl0b3IpWzBdKTtcbiAgICAgICAgICAgIE1lbnRpb25FZGl0b3Iub3BlblNlbGVjdE92ZXJsYXkoZWRpdG9yLCB0eXBlLCB0ZXh0RWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgZGVsZXRlVHJpZ2dlclRleHQoZWRpdG9yOiBUaGVFZGl0b3IpIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoSW5mbyA9IE1lbnRpb25FZGl0b3IuZ2V0U2VhcmNoSW5mbyhlZGl0b3IpO1xuICAgICAgICBjb25zdCB7IGN1cnJlbnRSYW5nZSB9ID0gc2VhcmNoSW5mbztcbiAgICAgICAgVHJhbnNmb3Jtcy5kZWxldGUoZWRpdG9yLCB7IGF0OiBjdXJyZW50UmFuZ2UgfSk7XG4gICAgfSxcbiAgICBvcGVuU3VnZ2VzdGlvbihlZGl0b3I6IFRoZUVkaXRvciwgdHlwZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSBlZGl0b3I7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRSZWYgPSBlZGl0b3IuaW5qZWN0b3IuZ2V0KEVsZW1lbnRSZWYpO1xuICAgICAgICBjb25zdCBpc1BhcmFncmFwaFN0YXJ0ID0gRWRpdG9yLmlzU3RhcnQoZWRpdG9yLCBzZWxlY3Rpb24/LmFuY2hvciwgVGhlUXVlcmllcy5hbmNob3JCbG9ja0VudHJ5KGVkaXRvcilbMV0pO1xuICAgICAgICBjb25zdCBvcmlnaW5BbmNob3IgPSBUSEVfRURJVE9SX09SSUdJTl9BTkNIT1IuZ2V0KGVkaXRvcik7XG4gICAgICAgIGxldCB0ZXh0ID0gJyc7XG5cbiAgICAgICAgaWYgKCFvcmlnaW5BbmNob3IpIHtcbiAgICAgICAgICAgIFRIRV9FRElUT1JfT1JJR0lOX0FOQ0hPUi5zZXQoZWRpdG9yLCBlZGl0b3Iuc2VsZWN0aW9uLmFuY2hvcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzUGFyYWdyYXBoU3RhcnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGJlZm9yZVJhbmdlID0ge1xuICAgICAgICAgICAgICAgIGFuY2hvcjogRWRpdG9yLmJlZm9yZShlZGl0b3IsIHNlbGVjdGlvbi5hbmNob3IpLFxuICAgICAgICAgICAgICAgIGZvY3VzOiBzZWxlY3Rpb24uZm9jdXNcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0ZXh0ID0gRWRpdG9yLnN0cmluZyhlZGl0b3IsIGJlZm9yZVJhbmdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc1BhcmFncmFwaFN0YXJ0IHx8IHRleHQgPT09ICcgJykge1xuICAgICAgICAgICAgY29uc3QgdGV4dEVsZW1lbnQgPSBBbmd1bGFyRWRpdG9yLnRvRE9NTm9kZShlZGl0b3IsIFRoZVF1ZXJpZXMuYW5jaG9yQmxvY2tFbnRyeShlZGl0b3IpWzBdKTtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbiA9IGlzUGFyYWdyYXBoU3RhcnQgPyB0ZXh0RWxlbWVudCA6IGVsZW1lbnRSZWY7XG4gICAgICAgICAgICBNZW50aW9uRWRpdG9yLm9wZW5TZWxlY3RPdmVybGF5KGVkaXRvciwgdHlwZSwgb3JpZ2luKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgZ2V0U2VhcmNoSW5mbyhlZGl0b3I6IFRoZUVkaXRvcikge1xuICAgICAgICBjb25zdCBwb3BvdmVyUmVmID0gVEhFX0VESVRPUl9QT1BPVkVSX1JFRi5nZXQoZWRpdG9yKTtcbiAgICAgICAgY29uc3Qgb3JpZ2luQW5jaG9yID0gVEhFX0VESVRPUl9PUklHSU5fQU5DSE9SLmdldChlZGl0b3IpO1xuXG4gICAgICAgIGlmIChvcmlnaW5BbmNob3IgJiYgcG9wb3ZlclJlZiAmJiBwb3BvdmVyUmVmLmNvbXBvbmVudEluc3RhbmNlKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50UmFuZ2UgPSBFZGl0b3IucmFuZ2UoZWRpdG9yLCBvcmlnaW5BbmNob3IsIGVkaXRvci5zZWxlY3Rpb24/LmZvY3VzKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUZXh0ID0gRWRpdG9yLnN0cmluZyhlZGl0b3IsIGN1cnJlbnRSYW5nZSk7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgY3VycmVudFJhbmdlLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRUZXh0XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSxcbiAgICB1cGRhdGVTZWFyY2hUZXh0KGVkaXRvcjogVGhlRWRpdG9yLCB0ZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcG9wb3ZlclJlZiA9IFRIRV9FRElUT1JfUE9QT1ZFUl9SRUYuZ2V0KGVkaXRvcik7XG4gICAgICAgIGNvbnN0IG1lbnRpb25zID0gZ2V0UGx1Z2luT3B0aW9uczxNZW50aW9uUGx1Z2luT3B0aW9ucz4oZWRpdG9yLCBQbHVnaW5LZXlzLm1lbnRpb24pPy5tZW50aW9ucztcbiAgICAgICAgY29uc3QgcGFuZWxDbGFzcyA9IHBvcG92ZXJSZWYuZ2V0T3ZlcmxheVJlZigpLmdldENvbmZpZygpLnBhbmVsQ2xhc3M7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBBcnJheS5pc0FycmF5KHBhbmVsQ2xhc3MpXG4gICAgICAgICAgICA/IHBhbmVsQ2xhc3MuZmluZChpID0+IGkuaW5kZXhPZigndGhlLW1lbnRpb24tJykgPiAtMSkuc3BsaXQoJ3RoZS1tZW50aW9uLScpWzFdXG4gICAgICAgICAgICA6IHBhbmVsQ2xhc3Muc3BsaXQoJ3RoZS1tZW50aW9uLScpWzFdO1xuICAgICAgICBjb25zdCBjdXJyZW50TWVudGlvbiA9IG1lbnRpb25zLmZpbmQobSA9PiBtLnR5cGUgPT09IHR5cGUpO1xuICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoYF4ke2N1cnJlbnRNZW50aW9uLnRyaWdnZXJ9YCk7XG4gICAgICAgIGNvbnN0IGJlZm9yZU1hdGNoID0gdGV4dCAmJiB0ZXh0Lm1hdGNoKHJlZ2V4KTtcbiAgICAgICAgY29uc3Qga2V5d29yZHMgPSB0ZXh0LnNsaWNlKDEpO1xuICAgICAgICBjb25zdCBjZHIgPSBlZGl0b3IuaW5qZWN0b3IuZ2V0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgICAgICBpZiAocG9wb3ZlclJlZj8uY29tcG9uZW50SW5zdGFuY2UgJiYgYmVmb3JlTWF0Y2ggJiYgIWtleXdvcmRzLm1hdGNoKC9eXFxzfFxccyQvKSkge1xuICAgICAgICAgICAgcG9wb3ZlclJlZi5jb21wb25lbnRJbnN0YW5jZS5rZXl3b3JkcyA9IGtleXdvcmRzO1xuICAgICAgICAgICAgcG9wb3ZlclJlZi5jb21wb25lbnRJbnN0YW5jZS5nZXRTZWFyY2hSZXN1bHQoa2V5d29yZHMpO1xuICAgICAgICAgICAgY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBvcGVuU2VsZWN0T3ZlcmxheShlZGl0b3I6IFRoZUVkaXRvciwgdHlwZTogc3RyaW5nLCBvcmlnaW46IEVsZW1lbnRSZWYgfCBIVE1MRWxlbWVudCkge1xuICAgICAgICBjb25zdCB7IHNlbGVjdGlvbiB9ID0gZWRpdG9yO1xuICAgICAgICBjb25zdCBvdmVybGF5ID0gZWRpdG9yLmluamVjdG9yLmdldChPdmVybGF5KTtcbiAgICAgICAgY29uc3QgdGh5UG9wb3ZlciA9IGVkaXRvci5pbmplY3Rvci5nZXQoVGh5UG9wb3Zlcik7XG4gICAgICAgIGNvbnN0IHZpZXdDb250YWluZXJSZWYgPSBlZGl0b3IuaW5qZWN0b3IuZ2V0KFZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICBjb25zdCBjZHIgPSBlZGl0b3IuaW5qZWN0b3IuZ2V0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgICAgICAgY29uc3QgbWVudGlvbnMgPSBnZXRQbHVnaW5PcHRpb25zPE1lbnRpb25QbHVnaW5PcHRpb25zPihlZGl0b3IsIFBsdWdpbktleXMubWVudGlvbik/Lm1lbnRpb25zO1xuICAgICAgICBjb25zdCBjdXJyZW50TWVudGlvbiA9IG1lbnRpb25zLmZpbmQobSA9PiBtLnR5cGUgPT09IHR5cGUpO1xuICAgICAgICBjb25zdCBzdWdnZXN0aW9uQ29tcG9uZW50ID0gY3VycmVudE1lbnRpb24/LnN1Z2dlc3Rpb247XG5cbiAgICAgICAgY29uc3QgcG9wb3ZlclJlZiA9IHRoeVBvcG92ZXIub3BlbihzdWdnZXN0aW9uQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICAgICAgdHlwZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IGB0aGUtbWVudGlvbi0ke3R5cGV9YCxcbiAgICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbUxlZnQnLFxuICAgICAgICAgICAgaW5zaWRlQ2xvc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgb3V0c2lkZUNsb3NhYmxlOiB0cnVlLFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgICAgICAgb2Zmc2V0OiA0LFxuICAgICAgICAgICAgbWluV2lkdGg6IDAsXG4gICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB2aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IG92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgICAgICAgICBhdXRvQWRhcHRpdmU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIHBvcG92ZXJSZWY/LmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIE1lbnRpb25FZGl0b3IuY2xvc2UoZWRpdG9yKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHBvcG92ZXJSZWY/LmdldE92ZXJsYXlSZWYoKS51cGRhdGVQb3NpdGlvblN0cmF0ZWd5KE1lbnRpb25FZGl0b3IuY3JlYXRlUG9zaXRpb25TdHJhdGVneShlZGl0b3IpKTtcblxuICAgICAgICBUSEVfRURJVE9SX1BPUE9WRVJfUkVGLnNldChlZGl0b3IsIHBvcG92ZXJSZWYpO1xuICAgICAgICBjZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSxcbiAgICBjbG9zZShlZGl0b3I6IFRoZUVkaXRvcikge1xuICAgICAgICBjb25zdCBwb3BvdmVyUmVmID0gVEhFX0VESVRPUl9QT1BPVkVSX1JFRi5nZXQoZWRpdG9yKTtcbiAgICAgICAgaWYgKHBvcG92ZXJSZWYpIHtcbiAgICAgICAgICAgIHBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgICAgIFRIRV9FRElUT1JfUE9QT1ZFUl9SRUYuc2V0KGVkaXRvciwgbnVsbCk7XG4gICAgICAgICAgICBUSEVfRURJVE9SX09SSUdJTl9BTkNIT1Iuc2V0KGVkaXRvciwgbnVsbCk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGluc2VydE1lbnRpb248VD4oZWRpdG9yOiBUaGVFZGl0b3IsIHR5cGU6IHN0cmluZywgZGF0YTogVCkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0ge1xuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJydcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG4gICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZXMoZWRpdG9yLCBlbGVtZW50IGFzIEVsZW1lbnQpO1xuICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIGVkaXRvci5zZWxlY3Rpb24pO1xuICAgICAgICBUcmFuc2Zvcm1zLm1vdmUoZWRpdG9yKTtcbiAgICAgICAgVGhlRWRpdG9yLmZvY3VzKGVkaXRvcik7XG5cbiAgICAgICAgZWRpdG9yLmluc2VydFRleHQoJyAnKTtcbiAgICB9LFxuICAgIGlzQWN0aXZlKGVkaXRvcjogVGhlRWRpdG9yLCB0eXBlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgW21hdGNoXSA9IFRoZVF1ZXJpZXMuZ2V0Tm9kZXNCeVR5cGUoZWRpdG9yLCB0eXBlKTtcbiAgICAgICAgcmV0dXJuICEhbWF0Y2g7XG4gICAgfSxcbiAgICBjcmVhdGVQb3NpdGlvblN0cmF0ZWd5KGVkaXRvcjogVGhlRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IHRleHRFbGVtZW50ID0gQW5ndWxhckVkaXRvci50b0RPTU5vZGUoZWRpdG9yLCBUaGVRdWVyaWVzLmFuY2hvckJsb2NrRW50cnkoZWRpdG9yKVswXSk7XG4gICAgICAgIGNvbnN0IG5hdGl2ZVJhbmdlID0gQW5ndWxhckVkaXRvci50b0RPTVJhbmdlKGVkaXRvciwgZWRpdG9yLnNlbGVjdGlvbik7XG4gICAgICAgIGNvbnN0IHJlY3RDdXJzb3IgPSBuYXRpdmVSYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgcmVjdFRleHRFbGVtZW50ID0gdGV4dEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGJvdHRvbVBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgb2Zmc2V0WDogcmVjdEN1cnNvci54IC0gcmVjdFRleHRFbGVtZW50LngsXG4gICAgICAgICAgICBvZmZzZXRZOiByZWN0Q3Vyc29yLnkgLSByZWN0VGV4dEVsZW1lbnQueSArIDIwXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHRvcFBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgICAgICAgICAgIC4uLmJvdHRvbVBvc2l0aW9uLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICAgICAgb2Zmc2V0WTogcmVjdEN1cnNvci55IC0gcmVjdFRleHRFbGVtZW50LnlcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgb3ZlcmxheSA9IGVkaXRvci5pbmplY3Rvci5nZXQoT3ZlcmxheSk7XG4gICAgICAgIHJldHVybiBvdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGV4dEVsZW1lbnQpXG4gICAgICAgICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyhmYWxzZSlcbiAgICAgICAgICAgIC53aXRoR3Jvd0FmdGVyT3BlbihmYWxzZSlcbiAgICAgICAgICAgIC53aXRoUHVzaChmYWxzZSlcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKFtib3R0b21Qb3NpdGlvbiwgdG9wUG9zaXRpb25dKTtcbiAgICB9XG59O1xuIl19
@@ -452,51 +452,44 @@ const PluginMenuSvgs = [
452
452
  },
453
453
  {
454
454
  key: PluginMenuIcons.blockquote,
455
- svg: `<svg width="36px" height="36px" viewBox="0 0 36 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
456
- <title>引用</title>
457
- <g id="引用" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
458
- <g id="矩形">
459
- <path d="M32,0 C34.209139,0 36,1.790861 36,4 L36,32 C36,34.209139 34.209139,36 32,36 L4,36 C1.790861,36 0,34.209139 0,32 L0,4 C0,1.790861 1.790861,0 4,0 L32,0 Z" id="路径" fill="#FFFFFF" fill-rule="nonzero"></path>
460
- <path d="M32,0 C34.209139,0 36,1.790861 36,4 L36,32 C36,34.209139 34.209139,36 32,36 L4,36 C1.790861,36 0,34.209139 0,32 L0,4 C0,1.790861 1.790861,0 4,0 L32,0 Z M32,1 L4,1 C2.40231912,1 1.09633912,2.24891996 1.00509269,3.82372721 L1,4 L1,32 C1,33.5976809 2.24891996,34.9036609 3.82372721,34.9949073 L4,35 L32,35 C33.5976809,35 34.9036609,33.75108 34.9949073,32.1762728 L35,32 L35,4 C35,2.40231912 33.75108,1.09633912 32.1762728,1.00509269 L32,1 Z" id="蒙版" fill="#EEEEEE" fill-rule="nonzero"></path>
461
- <g id="编组-34" transform="translate(7.000000, 7.600000)">
462
- <path d="M-9.3,9.9 L10.5,9.9 C10.8313708,9.9 11.1,10.1686292 11.1,10.5 C11.1,10.8313708 10.8313708,11.1 10.5,11.1 L-9.3,11.1 C-9.63137085,11.1 -9.9,10.8313708 -9.9,10.5 C-9.9,10.1686292 -9.63137085,9.9 -9.3,9.9 Z" id="矩形备份-86" fill="#AAAAAA" transform="translate(0.600000, 10.500000) rotate(-270.000000) translate(-0.600000, -10.500000) "></path>
463
- <path d="M12.0569495,0.107381518 C9.05340743,2.09055298 7.38481149,4.39881214 7.05114973,7.03213028 C6.53171396,11.1315969 10.097464,13.1381708 11.9041919,11.3352765 C13.7109198,9.53238214 12.6278961,7.24401116 11.3196447,6.61849713 C10.0113932,5.99294208 9.21135004,6.21080993 9.35090591,5.37489124 C9.49046177,4.53901356 11.3517118,2.22140491 12.9868965,1.14207129 C13.0953823,1.04722312 13.1366628,0.863185692 13.0322053,0.723558362 C12.9634843,0.631744678 12.8287146,0.451664378 12.6278961,0.18330516 C12.4522847,-0.0513630698 12.2840519,-0.042579465 12.0569495,0.107381518 Z M19.9642908,0.107381518 C16.9607886,2.09055298 15.2921807,4.39881214 14.9585069,7.03213028 C14.4390911,11.1315969 18.0048451,13.1381708 19.811573,11.3352765 C21.618301,9.53238214 20.5352773,7.24401116 19.2270258,6.61849713 C17.9187744,5.99294208 17.1186913,6.21080993 17.2582871,5.37489124 C17.3978429,4.53901356 19.259093,2.22140491 20.8942776,1.14207129 C21.0027635,1.04722312 21.0440439,0.863185692 20.9395466,0.723558362 C20.8708654,0.631744678 20.7360957,0.451664378 20.5352773,0.18330516 C20.3596658,-0.0513630698 20.191433,-0.042579465 19.9642908,0.107381518 Z" id="形状结合" fill="#CACACA" transform="translate(14.000000, 6.000000) rotate(-180.000000) translate(-14.000000, -6.000000) "></path>
464
- <path d="M6.6,20.4 L15.7517228,20.4 C16.0830937,20.4 16.3517228,20.6686292 16.3517228,21 C16.3517228,21.3313708 16.0830937,21.6 15.7517228,21.6 L6.6,21.6 C6.26862915,21.6 6,21.3313708 6,21 C6,20.6686292 6.26862915,20.4 6.6,20.4 Z" id="矩形备份-88" fill="#CACACA"></path>
465
- <rect id="矩形备份-87" fill="#CACACA" x="6" y="15.4" width="16" height="1.2" rx="0.6"></rect>
455
+ svg: `
456
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="36px" height="36px" viewBox="0 0 36 36" version="1.1">
457
+ <title>引用</title>
458
+ <g id="引用" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
459
+ <g id="矩形">
460
+ <path d="M32,0 C34.209139,0 36,1.790861 36,4 L36,32 C36,34.209139 34.209139,36 32,36 L4,36 C1.790861,36 0,34.209139 0,32 L0,4 C0,1.790861 1.790861,0 4,0 L32,0 Z" id="路径" fill="#FFFFFF" fill-rule="nonzero"/>
461
+ <path d="M32,0 C34.209139,0 36,1.790861 36,4 L36,32 C36,34.209139 34.209139,36 32,36 L4,36 C1.790861,36 0,34.209139 0,32 L0,4 C0,1.790861 1.790861,0 4,0 L32,0 Z M32,1 L4,1 C2.40231912,1 1.09633912,2.24891996 1.00509269,3.82372721 L1,4 L1,32 C1,33.5976809 2.24891996,34.9036609 3.82372721,34.9949073 L4,35 L32,35 C33.5976809,35 34.9036609,33.75108 34.9949073,32.1762728 L35,32 L35,4 C35,2.40231912 33.75108,1.09633912 32.1762728,1.00509269 L32,1 Z" id="蒙版" fill="#EEEEEE" fill-rule="nonzero"/>
462
+ <g id="编组-34" transform="translate(7.000000, 7.600000)">
463
+ <path d="M-9.3,9.9 L10.5,9.9 C10.8313708,9.9 11.1,10.1686292 11.1,10.5 C11.1,10.8313708 10.8313708,11.1 10.5,11.1 L-9.3,11.1 C-9.63137085,11.1 -9.9,10.8313708 -9.9,10.5 C-9.9,10.1686292 -9.63137085,9.9 -9.3,9.9 Z" id="矩形备份-86" fill="#AAAAAA" transform="translate(0.600000, 10.500000) rotate(-270.000000) translate(-0.600000, -10.500000) "/>
464
+ <path d="M15.9430505,11.8926185 C18.9465926,9.90944702 20.6151885,7.60118786 20.9488503,4.96786972 C21.468286,0.868403103 17.902536,-1.1381708 16.0958081,0.664723529 C14.2890802,2.46761786 15.3721039,4.75598884 16.6803553,5.38150287 C17.9886068,6.00705792 18.78865,5.78919007 18.6490941,6.62510876 C18.5095382,7.46098644 16.6482882,9.77859509 15.0131035,10.8579287 C14.9046177,10.9527769 14.8633372,11.1368143 14.9677947,11.2764416 C15.0365157,11.3682553 15.1712854,11.5483356 15.3721039,11.8166948 C15.5477153,12.0513631 15.7159481,12.0425795 15.9430505,11.8926185 Z M8.03570922,11.8926185 C11.0392114,9.90944702 12.7078193,7.60118786 13.0414931,4.96786972 C13.5609089,0.868403103 9.99515489,-1.1381708 8.18842697,0.664723529 C6.38169904,2.46761786 7.46472273,4.75598884 8.77297419,5.38150287 C10.0812256,6.00705792 10.8813087,5.78919007 10.7417129,6.62510876 C10.6021571,7.46098644 8.74090705,9.77859509 7.10572235,10.8579287 C6.99723652,10.9527769 6.95595606,11.1368143 7.06045345,11.2764416 C7.12913455,11.3682553 7.26390428,11.5483356 7.46472273,11.8166948 C7.64033418,12.0513631 7.808567,12.0425795 8.03570922,11.8926185 Z M6.6,20.4 L15.7517228,20.4 C16.0830937,20.4 16.3517228,20.6686292 16.3517228,21 C16.3517228,21.3313708 16.0830937,21.6 15.7517228,21.6 L6.6,21.6 C6.26862915,21.6 6,21.3313708 6,21 C6,20.6686292 6.26862915,20.4 6.6,20.4 Z M6.6,15.4 L21.4,15.4 C21.7313708,15.4 22,15.6686292 22,16 C22,16.3313708 21.7313708,16.6 21.4,16.6 L6.6,16.6 C6.26862915,16.6 6,16.3313708 6,16 C6,15.6686292 6.26862915,15.4 6.6,15.4 Z" id="形状结合" fill="#CACACA"/>
465
+ </g>
466
+ </g>
466
467
  </g>
467
- </g>
468
- </g>
469
- </svg>`
468
+ </svg>
469
+ `
470
470
  },
471
471
  {
472
472
  key: PluginMenuIcons.code,
473
- svg: `<svg width="36px" height="36px" viewBox="0 0 36 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
474
- <title>代码块</title>
475
- <defs>
476
- <rect id="path-1" x="1" y="1" width="34" height="34" rx="4"></rect>
477
- </defs>
478
- <g id="代码块" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
479
- <g id="icon">
480
- <path d="M32,0 C34.209139,0 36,1.790861 36,4 L36,32 C36,34.209139 34.209139,36 32,36 L4,36 C1.790861,36 0,34.209139 0,32 L0,4 C0,1.790861 1.790861,0 4,0 L32,0 Z" id="路径" fill="#FFFFFF" fill-rule="nonzero"></path>
481
- <path d="M32,0 C34.209139,0 36,1.790861 36,4 L36,32 C36,34.209139 34.209139,36 32,36 L4,36 C1.790861,36 0,34.209139 0,32 L0,4 C0,1.790861 1.790861,0 4,0 L32,0 Z M32,1 L4,1 C2.40231912,1 1.09633912,2.24891996 1.00509269,3.82372721 L1,4 L1,32 C1,33.5976809 2.24891996,34.9036609 3.82372721,34.9949073 L4,35 L32,35 C33.5976809,35 34.9036609,33.75108 34.9949073,32.1762728 L35,32 L35,4 C35,2.40231912 33.75108,1.09633912 32.1762728,1.00509269 L32,1 Z" id="蒙版" fill="#EEEEEE" fill-rule="nonzero"></path>
482
- <mask id="mask-2" fill="white">
483
- <use xlink:href="#path-1"></use>
484
- </mask>
485
- <use id="蒙版" fill="#FFFFFF" xlink:href="#path-1"></use>
486
- <g id="编组-24" mask="url(#mask-2)">
487
- <g transform="translate(6.000000, 6.000000)">
488
- <rect id="矩形备份-60" fill="#F5F5F5" x="0" y="0" width="43" height="24" rx="2"></rect>
489
- <path d="M2,0 L6,0 L6,0 L6,24 L2,24 C0.8954305,24 1.3527075e-16,23.1045695 0,22 L0,2 C-1.3527075e-16,0.8954305 0.8954305,2.02906125e-16 2,0 Z" id="矩形备份-60" fill="#EEEEEE"></path>
490
- <path d="M2.6,4 L3.4,4 C3.73137085,4 4,4.26862915 4,4.6 C4,4.93137085 3.73137085,5.2 3.4,5.2 L2.6,5.2 C2.26862915,5.2 2,4.93137085 2,4.6 C2,4.26862915 2.26862915,4 2.6,4 Z M2.6,9 L3.4,9 C3.73137085,9 4,9.26862915 4,9.6 C4,9.93137085 3.73137085,10.2 3.4,10.2 L2.6,10.2 C2.26862915,10.2 2,9.93137085 2,9.6 C2,9.26862915 2.26862915,9 2.6,9 Z M2.6,14 L3.4,14 C3.73137085,14 4,14.2686292 4,14.6 C4,14.9313708 3.73137085,15.2 3.4,15.2 L2.6,15.2 C2.26862915,15.2 2,14.9313708 2,14.6 C2,14.2686292 2.26862915,14 2.6,14 Z M2.6,19 L3.4,19 C3.73137085,19 4,19.2686292 4,19.6 C4,19.9313708 3.73137085,20.2 3.4,20.2 L2.6,20.2 C2.26862915,20.2 2,19.9313708 2,19.6 C2,19.2686292 2.26862915,19 2.6,19 Z" id="形状结合" fill="#CACACA"></path>
491
- <path d="M10.6,4 L23.8215948,4 C24.1529656,4 24.4215948,4.26862915 24.4215948,4.6 C24.4215948,4.93137085 24.1529656,5.2 23.8215948,5.2 L10.6,5.2 C10.2686292,5.2 10,4.93137085 10,4.6 C10,4.26862915 10.2686292,4 10.6,4 Z" id="矩形备份-61" fill="#CACACA"></path>
492
- <path d="M15.6,9 L23.9488547,9 C24.2802256,9 24.5488547,9.26862915 24.5488547,9.6 C24.5488547,9.93137085 24.2802256,10.2 23.9488547,10.2 L15.6,10.2 C15.2686292,10.2 15,9.93137085 15,9.6 C15,9.26862915 15.2686292,9 15.6,9 Z" id="矩形备份-63" fill="#FF7575"></path>
493
- <path d="M10.6,14 L21.7142342,14 C22.0456051,14 22.3142342,14.2686292 22.3142342,14.6 C22.3142342,14.9313708 22.0456051,15.2 21.7142342,15.2 L10.6,15.2 C10.2686292,15.2 10,14.9313708 10,14.6 C10,14.2686292 10.2686292,14 10.6,14 Z" id="矩形备份-65" fill="#CACACA"></path>
494
- <path d="M13.6,19 L29.1044747,19 C29.4358456,19 29.7044747,19.2686292 29.7044747,19.6 C29.7044747,19.9313708 29.4358456,20.2 29.1044747,20.2 L13.6,20.2 C13.2686292,20.2 13,19.9313708 13,19.6 C13,19.2686292 13.2686292,19 13.6,19 Z" id="矩形备份-66" fill="#6698FF"></path>
473
+ svg: `
474
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="36px" height="36px" viewBox="0 0 36 36" version="1.1">
475
+ <title>代码块</title>
476
+ <g id="代码块" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
477
+ <g id="icon">
478
+ <path d="M32,0 C34.209139,0 36,1.790861 36,4 L36,32 C36,34.209139 34.209139,36 32,36 L4,36 C1.790861,36 0,34.209139 0,32 L0,4 C0,1.790861 1.790861,0 4,0 L32,0 Z" id="路径" fill="#FFFFFF" fill-rule="nonzero"/>
479
+ <path d="M32,0 C34.209139,0 36,1.790861 36,4 L36,32 C36,34.209139 34.209139,36 32,36 L4,36 C1.790861,36 0,34.209139 0,32 L0,4 C0,1.790861 1.790861,0 4,0 L32,0 Z M32,1 L4,1 C2.40231912,1 1.09633912,2.24891996 1.00509269,3.82372721 L1,4 L1,32 C1,33.5976809 2.24891996,34.9036609 3.82372721,34.9949073 L4,35 L32,35 C33.5976809,35 34.9036609,33.75108 34.9949073,32.1762728 L35,32 L35,4 C35,2.40231912 33.75108,1.09633912 32.1762728,1.00509269 L32,1 Z" id="蒙版" fill="#EEEEEE" fill-rule="nonzero"/>
480
+ <g id="编组-24" transform="translate(6.000000, 6.000000)">
481
+ <path d="M2,0 L29,0 L29,0 L29,24 L2,24 C0.8954305,24 1.3527075e-16,23.1045695 0,22 L0,2 C-1.3527075e-16,0.8954305 0.8954305,2.02906125e-16 2,0 Z" id="矩形备份-60" fill="#F5F5F5"/>
482
+ <path d="M2,0 L6,0 L6,0 L6,24 L2,24 C0.8954305,24 1.3527075e-16,23.1045695 0,22 L0,2 C-1.3527075e-16,0.8954305 0.8954305,2.02906125e-16 2,0 Z" id="矩形备份-60" fill="#EEEEEE"/>
483
+ <path d="M2.6,4 L3.4,4 C3.73137085,4 4,4.26862915 4,4.6 C4,4.93137085 3.73137085,5.2 3.4,5.2 L2.6,5.2 C2.26862915,5.2 2,4.93137085 2,4.6 C2,4.26862915 2.26862915,4 2.6,4 Z M2.6,9 L3.4,9 C3.73137085,9 4,9.26862915 4,9.6 C4,9.93137085 3.73137085,10.2 3.4,10.2 L2.6,10.2 C2.26862915,10.2 2,9.93137085 2,9.6 C2,9.26862915 2.26862915,9 2.6,9 Z M2.6,14 L3.4,14 C3.73137085,14 4,14.2686292 4,14.6 C4,14.9313708 3.73137085,15.2 3.4,15.2 L2.6,15.2 C2.26862915,15.2 2,14.9313708 2,14.6 C2,14.2686292 2.26862915,14 2.6,14 Z M2.6,19 L3.4,19 C3.73137085,19 4,19.2686292 4,19.6 C4,19.9313708 3.73137085,20.2 3.4,20.2 L2.6,20.2 C2.26862915,20.2 2,19.9313708 2,19.6 C2,19.2686292 2.26862915,19 2.6,19 Z" id="形状结合" fill="#CACACA"/>
484
+ <path d="M10.6,4 L23.8215948,4 C24.1529656,4 24.4215948,4.26862915 24.4215948,4.6 C24.4215948,4.93137085 24.1529656,5.2 23.8215948,5.2 L10.6,5.2 C10.2686292,5.2 10,4.93137085 10,4.6 C10,4.26862915 10.2686292,4 10.6,4 Z" id="矩形备份-61" fill="#CACACA"/>
485
+ <path d="M15.6,9 L23.9488547,9 C24.2802256,9 24.5488547,9.26862915 24.5488547,9.6 C24.5488547,9.93137085 24.2802256,10.2 23.9488547,10.2 L15.6,10.2 C15.2686292,10.2 15,9.93137085 15,9.6 C15,9.26862915 15.2686292,9 15.6,9 Z" id="矩形备份-63" fill="#FF7575"/>
486
+ <path d="M10.6,14 L21.7142342,14 C22.0456051,14 22.3142342,14.2686292 22.3142342,14.6 C22.3142342,14.9313708 22.0456051,15.2 21.7142342,15.2 L10.6,15.2 C10.2686292,15.2 10,14.9313708 10,14.6 C10,14.2686292 10.2686292,14 10.6,14 Z" id="矩形备份-65" fill="#CACACA"/>
487
+ <path d="M13.6,19 L29,19 L29,19 L29,20.2 L13.6,20.2 C13.2686292,20.2 13,19.9313708 13,19.6 C13,19.2686292 13.2686292,19 13.6,19 Z" id="矩形备份-66" fill="#6698FF"/>
488
+ </g>
495
489
  </g>
496
490
  </g>
497
- </g>
498
- </g>
499
- </svg>`
491
+ </svg>
492
+ `
500
493
  },
501
494
  {
502
495
  key: PluginMenuIcons.table,
@@ -519,22 +512,21 @@ const PluginMenuSvgs = [
519
512
  },
520
513
  {
521
514
  key: PluginMenuIcons.hr,
522
- svg: `<svg width="36px" height="36px" viewBox="0 0 36 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
523
- <title>分割线</title>
524
- <g id="分割线" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
525
- <g id="矩形备份-60">
526
- <path d="M32,0 C34.209139,0 36,1.790861 36,4 L36,32 C36,34.209139 34.209139,36 32,36 L4,36 C1.790861,36 0,34.209139 0,32 L0,4 C0,1.790861 1.790861,0 4,0 L32,0 Z" id="路径" fill="#FFFFFF" fill-rule="nonzero"></path>
527
- <path d="M32,0 C34.209139,0 36,1.790861 36,4 L36,32 C36,34.209139 34.209139,36 32,36 L4,36 C1.790861,36 0,34.209139 0,32 L0,4 C0,1.790861 1.790861,0 4,0 L32,0 Z M32,1 L4,1 C2.40231912,1 1.09633912,2.24891996 1.00509269,3.82372721 L1,4 L1,32 C1,33.5976809 2.24891996,34.9036609 3.82372721,34.9949073 L4,35 L32,35 C33.5976809,35 34.9036609,33.75108 34.9949073,32.1762728 L35,32 L35,4 C35,2.40231912 33.75108,1.09633912 32.1762728,1.00509269 L32,1 Z" id="蒙版" fill="#EEEEEE" fill-rule="nonzero"></path>
528
- <g id="编组-33" transform="translate(7.000000, 7.500000)">
529
- <path d="M3.6,0 L17.5238673,0 C17.8552382,1.87571599e-15 18.1238673,0.26862915 18.1238673,0.6 C18.1238673,0.93137085 17.8552382,1.2 17.5238673,1.2 L3.6,1.2 C3.26862915,1.2 3,0.93137085 3,0.6 C3,0.26862915 3.26862915,1.7189414e-16 3.6,0 Z" id="矩形备份-81" fill="#CACACA"></path>
530
- <path d="M6.47613265,15 L20.4,15 C20.7313708,15 21,15.2686292 21,15.6 C21,15.9313708 20.7313708,16.2 20.4,16.2 L6.47613265,16.2 C6.1447618,16.2 5.87613265,15.9313708 5.87613265,15.6 C5.87613265,15.2686292 6.1447618,15 6.47613265,15 Z" id="矩形备份-84" fill="#CACACA"></path>
531
- <path d="M5.49677721,5 L14.6485,5 C14.9798709,5 15.2485,5.26862915 15.2485,5.6 C15.2485,5.93137085 14.9798709,6.2 14.6485,6.2 L5.49677721,6.2 C5.16540636,6.2 4.89677721,5.93137085 4.89677721,5.6 C4.89677721,5.26862915 5.16540636,5 5.49677721,5 Z" id="矩形备份-82" fill="#CACACA"></path>
532
- <path d="M2.55871088,20 L11.7104337,20 C12.0418046,20 12.3104337,20.2686292 12.3104337,20.6 C12.3104337,20.9313708 12.0418046,21.2 11.7104337,21.2 L2.55871088,21.2 C2.22734003,21.2 1.95871088,20.9313708 1.95871088,20.6 C1.95871088,20.2686292 2.22734003,20 2.55871088,20 Z" id="矩形备份-85" fill="#CACACA"></path>
533
- <path d="M0.6,10 L20.4,10 C20.7313708,10 21,10.2686292 21,10.6 C21,10.9313708 20.7313708,11.2 20.4,11.2 L0.6,11.2 C0.26862915,11.2 4.05812251e-17,10.9313708 0,10.6 C-4.05812251e-17,10.2686292 0.26862915,10 0.6,10 Z" id="矩形备份-83" fill="#AAAAAA"></path>
515
+ svg: `
516
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="36px" height="36px" viewBox="0 0 36 36" version="1.1">
517
+ <title>分割线</title>
518
+ <g id="分割线" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
519
+ <g id="矩形备份-60">
520
+ <path d="M32,0 C34.209139,0 36,1.790861 36,4 L36,32 C36,34.209139 34.209139,36 32,36 L4,36 C1.790861,36 0,34.209139 0,32 L0,4 C0,1.790861 1.790861,0 4,0 L32,0 Z" id="路径" fill="#FFFFFF" fill-rule="nonzero"/>
521
+ <path d="M32,0 C34.209139,0 36,1.790861 36,4 L36,32 C36,34.209139 34.209139,36 32,36 L4,36 C1.790861,36 0,34.209139 0,32 L0,4 C0,1.790861 1.790861,0 4,0 L32,0 Z M32,1 L4,1 C2.40231912,1 1.09633912,2.24891996 1.00509269,3.82372721 L1,4 L1,32 C1,33.5976809 2.24891996,34.9036609 3.82372721,34.9949073 L4,35 L32,35 C33.5976809,35 34.9036609,33.75108 34.9949073,32.1762728 L35,32 L35,4 C35,2.40231912 33.75108,1.09633912 32.1762728,1.00509269 L32,1 Z" id="蒙版" fill="#EEEEEE" fill-rule="nonzero"/>
522
+ <g id="编组-33" transform="translate(7.000000, 7.500000)">
523
+ <path d="M3.6,0 L17.5238673,0 C17.8552382,1.87571599e-15 18.1238673,0.26862915 18.1238673,0.6 C18.1238673,0.93137085 17.8552382,1.2 17.5238673,1.2 L3.6,1.2 C3.26862915,1.2 3,0.93137085 3,0.6 C3,0.26862915 3.26862915,1.7189414e-16 3.6,0 Z M6.47613265,15 L20.4,15 C20.7313708,15 21,15.2686292 21,15.6 C21,15.9313708 20.7313708,16.2 20.4,16.2 L6.47613265,16.2 C6.1447618,16.2 5.87613265,15.9313708 5.87613265,15.6 C5.87613265,15.2686292 6.1447618,15 6.47613265,15 Z M5.49677721,5 L14.6485,5 C14.9798709,5 15.2485,5.26862915 15.2485,5.6 C15.2485,5.93137085 14.9798709,6.2 14.6485,6.2 L5.49677721,6.2 C5.16540636,6.2 4.89677721,5.93137085 4.89677721,5.6 C4.89677721,5.26862915 5.16540636,5 5.49677721,5 Z M2.55871088,20 L11.7104337,20 C12.0418046,20 12.3104337,20.2686292 12.3104337,20.6 C12.3104337,20.9313708 12.0418046,21.2 11.7104337,21.2 L2.55871088,21.2 C2.22734003,21.2 1.95871088,20.9313708 1.95871088,20.6 C1.95871088,20.2686292 2.22734003,20 2.55871088,20 Z" id="形状结合" fill="#CACACA"/>
524
+ <path d="M0.6,10 L20.4,10 C20.7313708,10 21,10.2686292 21,10.6 C21,10.9313708 20.7313708,11.2 20.4,11.2 L0.6,11.2 C0.26862915,11.2 4.05812251e-17,10.9313708 0,10.6 C-4.05812251e-17,10.2686292 0.26862915,10 0.6,10 Z" id="矩形备份-83" fill="#AAAAAA"/>
525
+ </g>
526
+ </g>
534
527
  </g>
535
- </g>
536
- </g>
537
- </svg>`
528
+ </svg>
529
+ `
538
530
  },
539
531
  {
540
532
  key: PluginMenuIcons.heading_1,
@@ -2501,6 +2493,7 @@ class TheToolbarDropdownComponent extends TheBaseToolbarDropdown {
2501
2493
  }
2502
2494
  selectionChange(editor) {
2503
2495
  super.selectionChange(editor);
2496
+ this.activeKeys = [];
2504
2497
  for (const menu of this.menus) {
2505
2498
  if ((menu === null || menu === void 0 ? void 0 : menu.active) && (menu === null || menu === void 0 ? void 0 : menu.active(editor))) {
2506
2499
  this.activeKeys.push(menu.key);
@@ -2577,10 +2570,10 @@ class TheToolbarDropdownComponent extends TheBaseToolbarDropdown {
2577
2570
  }
2578
2571
  }
2579
2572
  TheToolbarDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TheToolbarDropdownComponent, deps: [{ token: i0.ElementRef }, { token: i1$1.ThyPopover }, { token: i0.ViewContainerRef }, { token: i2$1.Overlay }], target: i0.ɵɵFactoryTarget.Component });
2580
- TheToolbarDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: TheToolbarDropdownComponent, selector: "the-toolbar-dropdown", inputs: { itemMousedownHandle: "itemMousedownHandle" }, host: { properties: { "class": "this.className" } }, viewQueries: [{ propertyName: "iconModeTemplate", first: true, predicate: ["iconModeTemplate"], descendants: true, static: true }, { propertyName: "textModeTemplate", first: true, predicate: ["textModeTemplate"], descendants: true, static: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<a\n *ngIf=\"mode === dropdownMode.icon\"\n href=\"javascript:;\"\n class=\"icon-mode\"\n thyAction\n [thyActionIcon]=\"activeIcon\"\n [thyActionActive]=\"activeDropdown\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"preventDefault($event)\"\n (click)=\"toggleDropdown($event)\"\n>\n <thy-icon *ngIf=\"!toolbarItem.isHideDropdownActionIcon\" class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n<a\n *ngIf=\"mode !== dropdownMode.icon\"\n href=\"javascript:;\"\n class=\"text-mode\"\n thyAction\n thyTooltipPlacement=\"top\"\n (mousedown)=\"preventDefault($event)\"\n (click)=\"toggleDropdown($event)\"\n>\n <span class=\"show-text\">{{ activeMenuItem?.name }}</span>\n <thy-icon class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n\n<ng-template #dropdownTemplate>\n <div class=\"thy-dropdown-menu\">\n <ng-container *ngFor=\"let menu of menus\">\n <a\n *ngIf=\"menu.key !== 'split'\"\n class=\"d-flex justify-content-between text-secondary\"\n href=\"javascript:;\"\n thyDropdownMenuItem\n [ngStyle]=\"menu?.styles\"\n [thyDropdownMenuItemActive]=\"activeKeys.includes(menu.key)\"\n (mousedown)=\"preventDefault($event)\"\n (click)=\"itemMousedown($event, menu)\"\n >\n <div class=\"d-flex align-items-center\">\n <thy-icon *ngIf=\"menu.icon && mode === dropdownMode.icon\" thyDropdownMenuItemIcon [thyIconName]=\"menu.icon\"></thy-icon>\n <span class=\"text-body\" *ngIf=\"menu.name\" thyDropdownMenuItemName>{{ menu.name }}</span>\n </div>\n <div class=\"menu-item-right font-size-sm text-muted\" *ngIf=\"menu.shortcutKey\">{{ menu.shortcutKey }}</div>\n </a>\n <thy-dropdown-menu-divider *ngIf=\"menu.key === 'split'\"></thy-dropdown-menu-divider>\n </ng-container>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "component", type: i5.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: i6.ThyDropdownMenuDividerComponent, selector: "thy-dropdown-menu-divider" }, { kind: "directive", type: i6.ThyDropdownMenuItemDirective, selector: "[thyDropdownMenuItem]", inputs: ["thyType", "thyDisabled"] }, { kind: "directive", type: i6.ThyDropdownMenuItemNameDirective, selector: "[thyDropdownMenuItemName]" }, { kind: "directive", type: i6.ThyDropdownMenuItemIconDirective, selector: "[thyDropdownMenuItemIcon]" }, { kind: "directive", type: i6.ThyDropdownMenuItemActiveDirective, selector: "[thyDropdownMenuItemActive]", inputs: ["thyDropdownMenuItemActive"] }] });
2573
+ TheToolbarDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: TheToolbarDropdownComponent, selector: "the-toolbar-dropdown", inputs: { itemMousedownHandle: "itemMousedownHandle" }, host: { properties: { "class": "this.className" } }, viewQueries: [{ propertyName: "iconModeTemplate", first: true, predicate: ["iconModeTemplate"], descendants: true, static: true }, { propertyName: "textModeTemplate", first: true, predicate: ["textModeTemplate"], descendants: true, static: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<a\n *ngIf=\"mode === dropdownMode.icon\"\n href=\"javascript:;\"\n class=\"icon-mode\"\n thyAction\n [thyActionIcon]=\"activeIcon\"\n [thyActionActive]=\"activeDropdown\"\n (mousedown)=\"preventDefault($event)\"\n (click)=\"toggleDropdown($event)\"\n>\n <thy-icon *ngIf=\"!toolbarItem.isHideDropdownActionIcon\" class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n<a\n *ngIf=\"mode !== dropdownMode.icon\"\n href=\"javascript:;\"\n class=\"text-mode\"\n thyAction\n (mousedown)=\"preventDefault($event)\"\n (click)=\"toggleDropdown($event)\"\n>\n <span class=\"show-text\">{{ activeMenuItem?.name }}</span>\n <thy-icon class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n\n<ng-template #dropdownTemplate>\n <div class=\"thy-dropdown-menu\">\n <ng-container *ngFor=\"let menu of menus\">\n <a\n *ngIf=\"menu.key !== 'split'\"\n class=\"d-flex justify-content-between text-secondary\"\n href=\"javascript:;\"\n thyDropdownMenuItem\n [ngStyle]=\"menu?.styles\"\n [thyDropdownMenuItemActive]=\"activeKeys.includes(menu.key)\"\n (mousedown)=\"preventDefault($event)\"\n (click)=\"itemMousedown($event, menu)\"\n >\n <div class=\"d-flex align-items-center\">\n <thy-icon\n class=\"text-secondary\"\n *ngIf=\"menu?.icon && mode === dropdownMode.icon\"\n thyDropdownMenuItemIcon\n [thyIconName]=\"menu.icon\"\n ></thy-icon>\n <span class=\"text-body\" *ngIf=\"menu?.name\" thyDropdownMenuItemName>{{ menu.name }}</span>\n </div>\n <div class=\"menu-item-right font-size-sm text-muted\" *ngIf=\"menu?.shortcutKey\">{{ menu.shortcutKey }}</div>\n </a>\n <thy-dropdown-menu-divider *ngIf=\"menu.key === 'split'\"></thy-dropdown-menu-divider>\n </ng-container>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "component", type: i5.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: i6.ThyDropdownMenuDividerComponent, selector: "thy-dropdown-menu-divider" }, { kind: "directive", type: i6.ThyDropdownMenuItemDirective, selector: "[thyDropdownMenuItem]", inputs: ["thyType", "thyDisabled"] }, { kind: "directive", type: i6.ThyDropdownMenuItemNameDirective, selector: "[thyDropdownMenuItemName]" }, { kind: "directive", type: i6.ThyDropdownMenuItemIconDirective, selector: "[thyDropdownMenuItemIcon]" }, { kind: "directive", type: i6.ThyDropdownMenuItemActiveDirective, selector: "[thyDropdownMenuItemActive]", inputs: ["thyDropdownMenuItemActive"] }] });
2581
2574
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TheToolbarDropdownComponent, decorators: [{
2582
2575
  type: Component,
2583
- args: [{ selector: 'the-toolbar-dropdown', template: "<a\n *ngIf=\"mode === dropdownMode.icon\"\n href=\"javascript:;\"\n class=\"icon-mode\"\n thyAction\n [thyActionIcon]=\"activeIcon\"\n [thyActionActive]=\"activeDropdown\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"preventDefault($event)\"\n (click)=\"toggleDropdown($event)\"\n>\n <thy-icon *ngIf=\"!toolbarItem.isHideDropdownActionIcon\" class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n<a\n *ngIf=\"mode !== dropdownMode.icon\"\n href=\"javascript:;\"\n class=\"text-mode\"\n thyAction\n thyTooltipPlacement=\"top\"\n (mousedown)=\"preventDefault($event)\"\n (click)=\"toggleDropdown($event)\"\n>\n <span class=\"show-text\">{{ activeMenuItem?.name }}</span>\n <thy-icon class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n\n<ng-template #dropdownTemplate>\n <div class=\"thy-dropdown-menu\">\n <ng-container *ngFor=\"let menu of menus\">\n <a\n *ngIf=\"menu.key !== 'split'\"\n class=\"d-flex justify-content-between text-secondary\"\n href=\"javascript:;\"\n thyDropdownMenuItem\n [ngStyle]=\"menu?.styles\"\n [thyDropdownMenuItemActive]=\"activeKeys.includes(menu.key)\"\n (mousedown)=\"preventDefault($event)\"\n (click)=\"itemMousedown($event, menu)\"\n >\n <div class=\"d-flex align-items-center\">\n <thy-icon *ngIf=\"menu.icon && mode === dropdownMode.icon\" thyDropdownMenuItemIcon [thyIconName]=\"menu.icon\"></thy-icon>\n <span class=\"text-body\" *ngIf=\"menu.name\" thyDropdownMenuItemName>{{ menu.name }}</span>\n </div>\n <div class=\"menu-item-right font-size-sm text-muted\" *ngIf=\"menu.shortcutKey\">{{ menu.shortcutKey }}</div>\n </a>\n <thy-dropdown-menu-divider *ngIf=\"menu.key === 'split'\"></thy-dropdown-menu-divider>\n </ng-container>\n </div>\n</ng-template>\n" }]
2576
+ args: [{ selector: 'the-toolbar-dropdown', template: "<a\n *ngIf=\"mode === dropdownMode.icon\"\n href=\"javascript:;\"\n class=\"icon-mode\"\n thyAction\n [thyActionIcon]=\"activeIcon\"\n [thyActionActive]=\"activeDropdown\"\n (mousedown)=\"preventDefault($event)\"\n (click)=\"toggleDropdown($event)\"\n>\n <thy-icon *ngIf=\"!toolbarItem.isHideDropdownActionIcon\" class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n<a\n *ngIf=\"mode !== dropdownMode.icon\"\n href=\"javascript:;\"\n class=\"text-mode\"\n thyAction\n (mousedown)=\"preventDefault($event)\"\n (click)=\"toggleDropdown($event)\"\n>\n <span class=\"show-text\">{{ activeMenuItem?.name }}</span>\n <thy-icon class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n\n<ng-template #dropdownTemplate>\n <div class=\"thy-dropdown-menu\">\n <ng-container *ngFor=\"let menu of menus\">\n <a\n *ngIf=\"menu.key !== 'split'\"\n class=\"d-flex justify-content-between text-secondary\"\n href=\"javascript:;\"\n thyDropdownMenuItem\n [ngStyle]=\"menu?.styles\"\n [thyDropdownMenuItemActive]=\"activeKeys.includes(menu.key)\"\n (mousedown)=\"preventDefault($event)\"\n (click)=\"itemMousedown($event, menu)\"\n >\n <div class=\"d-flex align-items-center\">\n <thy-icon\n class=\"text-secondary\"\n *ngIf=\"menu?.icon && mode === dropdownMode.icon\"\n thyDropdownMenuItemIcon\n [thyIconName]=\"menu.icon\"\n ></thy-icon>\n <span class=\"text-body\" *ngIf=\"menu?.name\" thyDropdownMenuItemName>{{ menu.name }}</span>\n </div>\n <div class=\"menu-item-right font-size-sm text-muted\" *ngIf=\"menu?.shortcutKey\">{{ menu.shortcutKey }}</div>\n </a>\n <thy-dropdown-menu-divider *ngIf=\"menu.key === 'split'\"></thy-dropdown-menu-divider>\n </ng-container>\n </div>\n</ng-template>\n" }]
2584
2577
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$1.ThyPopover }, { type: i0.ViewContainerRef }, { type: i2$1.Overlay }]; }, propDecorators: { className: [{
2585
2578
  type: HostBinding,
2586
2579
  args: ['class']
@@ -2633,7 +2626,7 @@ TheToolbarItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
2633
2626
  (mousedown)="preventDefault($event)"
2634
2627
  (click)="execute($event)"
2635
2628
  ></a>
2636
- <ng-template #tooltip let-data> {{ data.name }} {{ data.shortcutKey }} </ng-template>
2629
+ <ng-template #tooltip let-data> {{ data?.name }} {{ data?.shortcutKey }} </ng-template>
2637
2630
  `, isInline: true, dependencies: [{ kind: "directive", type: i8.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: i5.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }] });
2638
2631
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TheToolbarItemComponent, decorators: [{
2639
2632
  type: Component,
@@ -2651,7 +2644,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
2651
2644
  (mousedown)="preventDefault($event)"
2652
2645
  (click)="execute($event)"
2653
2646
  ></a>
2654
- <ng-template #tooltip let-data> {{ data.name }} {{ data.shortcutKey }} </ng-template>
2647
+ <ng-template #tooltip let-data> {{ data?.name }} {{ data?.shortcutKey }} </ng-template>
2655
2648
  `
2656
2649
  }]
2657
2650
  }], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { className: [{
@@ -6338,14 +6331,18 @@ const ImageEditor = {
6338
6331
  if (isString(image.originUrl) && image.originUrl.includes('base64')) {
6339
6332
  const indexSplit = image.originUrl.indexOf(',');
6340
6333
  const base64 = image.originUrl.slice(indexSplit + 1);
6341
- const contentType = image.originUrl.substring(0, image.originUrl.indexOf(';'));
6334
+ const contentType = image.originUrl.substring(image.originUrl.indexOf(':') + 1, image.originUrl.indexOf(';'));
6335
+ const ext = contentType.substring(contentType.indexOf('/') + 1);
6342
6336
  const blob = base64toBlob(base64, contentType);
6343
6337
  const blobUrl = URL.createObjectURL(blob);
6344
6338
  image.thumbUrl = blobUrl;
6345
6339
  image.originUrl = blobUrl;
6346
6340
  image.url = blobUrl;
6347
6341
  const contextService = editor.injector.get(TheContextService);
6348
- contextService.addUploadingFiles({ url: blobUrl, file: new File([blob], '') });
6342
+ contextService.addUploadingFiles({
6343
+ url: blobUrl,
6344
+ file: new File([blob], `${new Date().getTime()}.${ext}`, { type: contentType })
6345
+ });
6349
6346
  }
6350
6347
  },
6351
6348
  verifyImage(editor, image) {
@@ -9223,10 +9220,11 @@ const MentionEditor = {
9223
9220
  insideClosable: false,
9224
9221
  outsideClosable: true,
9225
9222
  hasBackdrop: false,
9226
- offset: 5,
9223
+ offset: 4,
9227
9224
  minWidth: 0,
9228
9225
  viewContainerRef: viewContainerRef,
9229
- scrollStrategy: overlay.scrollStrategies.reposition()
9226
+ scrollStrategy: overlay.scrollStrategies.reposition(),
9227
+ autoAdaptive: true
9230
9228
  });
9231
9229
  popoverRef === null || popoverRef === void 0 ? void 0 : popoverRef.afterClosed().subscribe(() => {
9232
9230
  MentionEditor.close(editor);
@@ -10188,7 +10186,12 @@ class ThePluginMenuComponent extends mixinUnsubscribe(MixinBase) {
10188
10186
  placement: 'rightTop',
10189
10187
  width: '266px'
10190
10188
  };
10191
- this.tableSelectPopoverConfig = { panelClass: 'plugin-menu-table-select-container', minWidth: 0 };
10189
+ this.tableSelectPopoverConfig = {
10190
+ panelClass: 'plugin-menu-table-select-container',
10191
+ minWidth: 0,
10192
+ //避免重写
10193
+ originActiveClass: 'thy-popover-origin-active'
10194
+ };
10192
10195
  this.containerClassName = `the-plugin-menu-container`;
10193
10196
  this.theDisplaySearch = false;
10194
10197
  this.removeKeywords = () => {
@@ -10207,6 +10210,7 @@ class ThePluginMenuComponent extends mixinUnsubscribe(MixinBase) {
10207
10210
  }
10208
10211
  initializeSearch() {
10209
10212
  if (this.theDisplaySearch) {
10213
+ this.scrollContainer = this.elementRef.nativeElement.querySelector('.the-plugin-menu-scroll-container');
10210
10214
  this.keyboardContainer = this.elementRef.nativeElement;
10211
10215
  setTimeout(() => {
10212
10216
  // 记住位置
@@ -10282,6 +10286,7 @@ class ThePluginMenuComponent extends mixinUnsubscribe(MixinBase) {
10282
10286
  updateKeywords(keywords) {
10283
10287
  this.keyWords = keywords.toLowerCase().trim();
10284
10288
  this.buildMenus();
10289
+ this.scrollContainer.scrollTop = 0;
10285
10290
  }
10286
10291
  theListboxChange(event) {
10287
10292
  if (event.type === 'select') {
@@ -10298,7 +10303,7 @@ class ThePluginMenuComponent extends mixinUnsubscribe(MixinBase) {
10298
10303
  dropdown.hide();
10299
10304
  }
10300
10305
  if (event.type === 'turn' && !event.option.parentOption) {
10301
- ScrollToService.scrollToElement(event.option.elementRef.nativeElement, this.elementRef.nativeElement);
10306
+ ScrollToService.scrollToElement(event.option.elementRef.nativeElement, this.scrollContainer);
10302
10307
  }
10303
10308
  }
10304
10309
  findDropdownTrigger(option) {
@@ -10307,15 +10312,19 @@ class ThePluginMenuComponent extends mixinUnsubscribe(MixinBase) {
10307
10312
  });
10308
10313
  return dropdown;
10309
10314
  }
10315
+ trackByFn(index, item) {
10316
+ var _a;
10317
+ return (_a = item === null || item === void 0 ? void 0 : item.key) !== null && _a !== void 0 ? _a : index;
10318
+ }
10310
10319
  ngOnDestroy() {
10311
10320
  super.ngOnDestroy();
10312
10321
  }
10313
10322
  }
10314
10323
  ThePluginMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ThePluginMenuComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1$1.ThyPopoverRef }], target: i0.ɵɵFactoryTarget.Component });
10315
- ThePluginMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: ThePluginMenuComponent, selector: "the-plugin-menu", inputs: { editor: "editor", theDisplaySearch: "theDisplaySearch", thePluginMenu: "thePluginMenu" }, host: { properties: { "class": "this.containerClassName" } }, viewQueries: [{ propertyName: "dropdownTriggers", predicate: ["dropdownTriggers"], descendants: true, read: ThyDropdownDirective }], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"theDisplaySearch\" class=\"menu-search px-5 pt-5\">\n <thy-input-search [(ngModel)]=\"keyWords\" placeholder=\"\u641C\u7D22\" thyIconPosition=\"after\" (ngModelChange)=\"buildMenus()\"> </thy-input-search>\n</div>\n\n<div\n *ngIf=\"groupMenu.length > 0; else thyEmpty\"\n theListBox\n [keyboardContainer]=\"keyboardContainer\"\n (theListboxChange)=\"theListboxChange($event)\"\n class=\"thy-dropdown-menu py-2\"\n>\n <div *ngIf=\"iconMenu?.length > 0\" theListboxGroup [horizontalColumn]=\"6\" class=\"icon-menu d-flex pl-5 py-1\">\n <ng-container *ngFor=\"let item of iconMenu\">\n <a\n *ngIf=\"item.type === ThePluginMenuItemType.icon\"\n href=\"javascript:;\"\n class=\"mt-2\"\n thyAction\n theListboxOption\n [theOptionValue]=\"item\"\n [thyActionIcon]=\"item.icon\"\n [thyTooltip]=\"item.name\"\n thePreventDefault\n (click)=\"handleItemSelection(item)\"\n ></a>\n </ng-container>\n </div>\n\n <thy-divider *ngIf=\"this.iconMenu?.length\" class=\"my-2\"></thy-divider>\n <div theListboxGroup>\n <ng-container *ngFor=\"let item of groupMenu\">\n <ng-container *ngIf=\"ThePluginMenu.isMenuItem(item) && !(item.children?.length > 0) && item.key !== 'table'\">\n <div\n thyDropdownMenuItem\n theListboxOption\n [theOptionValue]=\"item\"\n class=\"py-0\"\n thePreventDefault\n (click)=\"handleItemSelection(item)\"\n >\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"item.menuIcon\"></thy-icon>\n </div>\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n <span *ngIf=\"!(item.children?.length > 0)\" class=\"menu-item-display-key font-size-sm text-placeholder\">\n {{ item.displayKey }}</span\n >\n {{ item.name }}\n </div>\n <div class=\"text-muted font-size-sm\">{{ item.description }}</div>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"ThePluginMenu.isMenuItem(item) && item.children?.length > 0\" #hasExpanded>\n <div\n #dropdownTriggers\n [thyDropdown]=\"expand\"\n thyTrigger=\"hover\"\n thyDropdownMenuItem\n theListboxOption\n [theOptionValue]=\"item\"\n [thyPopoverOptions]=\"expandPopoverOptions\"\n class=\"py-0\"\n thePreventDefault\n (click)=\"handleItemSelection(item)\"\n >\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"item.menuIcon\"></thy-icon>\n </div>\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n <span *ngIf=\"!(item.children?.length > 0)\" class=\"menu-item-display-key font-size-sm text-placeholder\">\n {{ item.displayKey }}</span\n >\n {{ item.name }}\n </div>\n <div class=\"text-muted font-size-sm\">{{ item.description }}</div>\n </div>\n <div *ngIf=\"item.children?.length > 0\">\n <thy-icon class=\"text-muted\" thyIconName=\"angle-right\"></thy-icon>\n </div>\n <thy-dropdown-menu #expand>\n <div class=\"the-plugin-menu-container expand-menu\" theListboxGroup>\n <div\n *ngFor=\"let child of item.children\"\n thyDropdownMenuItem\n theListboxOption\n class=\"py-0\"\n thePreventDefault\n (click)=\"handleItemSelection(child)\"\n [theOptionValue]=\"child\"\n >\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"child.menuIcon\"></thy-icon>\n </div>\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n <span class=\"menu-item-display-key font-size-sm text-placeholder\"> {{ child.displayKey }}</span>\n {{ child.name }}\n </div>\n <div class=\"text-muted font-size-sm\">{{ child.description }}</div>\n </div>\n </div>\n </div>\n </thy-dropdown-menu>\n </div>\n </ng-container>\n <ng-container *ngIf=\"ThePluginMenu.isMenuItem(item) && item.key === 'table'\">\n <div\n #dropdownTriggers\n [thyPopover]=\"tableSelect\"\n thyPlacement=\"rightTop\"\n thyTrigger=\"hover\"\n thyDropdownMenuItem\n theListboxOption\n [thyConfig]=\"tableSelectPopoverConfig\"\n [theOptionValue]=\"item\"\n class=\"py-0\"\n thePreventDefault\n (click)=\"handleItemSelection(item)\"\n >\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"item.menuIcon\"></thy-icon>\n </div>\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n {{ item.name }}\n </div>\n <div class=\"text-muted font-size-sm\">{{ item.description }}</div>\n </div>\n <div>\n <thy-icon class=\"text-muted\" thyIconName=\"angle-right\"></thy-icon>\n </div>\n\n <ng-template #tableSelect>\n <table-select\n class=\"plugin-menu-table the-table-selector-panel\"\n [editor]=\"editor\"\n [beforeInsert]=\"removeKeywords\"\n ></table-select>\n </ng-template>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!ThePluginMenu.isMenuItem(item)\" #menuGroup>\n <thy-dropdown-menu-group class=\"font-size-sm\" [thyTitle]=\"item.groupName\"></thy-dropdown-menu-group>\n </ng-container>\n </ng-container>\n </div>\n</div>\n\n<ng-template #thyEmpty>\n <div class=\"empty d-flex align-items-center justify-content-center\">\n <thy-empty [thyMessage]=\"thyMessage\"></thy-empty>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: i8.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: i5$1.ThyInputSearchComponent, selector: "thy-input-search", inputs: ["name", "placeholder", "thyTheme", "thySearchFocus", "thyIconPosition", "thySize"], outputs: ["clear", "thyClear"] }, { kind: "component", type: i5.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: i12.ThyDividerComponent, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }, { kind: "directive", type: i6.ThyDropdownDirective, selector: "[thyDropdown]", inputs: ["thyDropdownMenu", "thyDropdown", "thyTrigger", "thyActiveClass", "thyPopoverOptions"], outputs: ["thyActiveChange"] }, { kind: "component", type: i6.ThyDropdownMenuComponent, selector: "thy-dropdown-menu", inputs: ["thyWidth"] }, { kind: "component", type: i6.ThyDropdownMenuGroupComponent, selector: "thy-dropdown-menu-group", inputs: ["thyTitle"] }, { kind: "directive", type: i6.ThyDropdownMenuItemDirective, selector: "[thyDropdownMenuItem]", inputs: ["thyType", "thyDisabled"] }, { kind: "component", type: i10$1.ThyEmptyComponent, selector: "thy-empty", inputs: ["thyMessage", "thyTranslationKey", "thyTranslationValues", "thyEntityName", "thyEntityNameTranslateKey", "thyIconName", "thySize", "thyMarginTop", "thyTopAuto", "thyContainer", "thyImageUrl", "thyImageLoading", "thyImageFetchPriority", "thyDescription"] }, { kind: "directive", type: i1$1.ThyPopoverDirective, selector: "[thyPopover]", inputs: ["thyPopover", "thyTrigger", "thyPlacement", "thyOffset", "thyConfig", "thyShowDelay", "thyHideDelay", "thyAutoAdaptive", "thyDisabled"] }, { kind: "component", type: TheTableSelectComponent, selector: "table-select", inputs: ["optionsParam", "editor", "beforeInsert"] }, { kind: "directive", type: TheListboxOptionDirective, selector: "[theListboxOption]", inputs: ["theOptionValue"], exportAs: ["theListboxOption"] }, { kind: "directive", type: TheListboxGroupDirective, selector: "[theListboxGroup]", inputs: ["horizontalColumn"], exportAs: ["theListboxGroup"] }, { kind: "directive", type: TheListboxDirective, selector: "[theListBox]", inputs: ["keyboardContainer"], outputs: ["theListboxChange"], exportAs: ["theListBox"] }, { kind: "directive", type: ThePreventDefaultDirective, selector: "[thePreventDefault]", exportAs: ["thePreventDefault"] }] });
10324
+ ThePluginMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: ThePluginMenuComponent, selector: "the-plugin-menu", inputs: { editor: "editor", theDisplaySearch: "theDisplaySearch", thePluginMenu: "thePluginMenu" }, host: { properties: { "class": "this.containerClassName" } }, viewQueries: [{ propertyName: "dropdownTriggers", predicate: ["dropdownTriggers"], descendants: true, read: ThyDropdownDirective }], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"theDisplaySearch\" class=\"menu-search px-5 pt-5 pb-2\">\n <thy-input-search [(ngModel)]=\"keyWords\" placeholder=\"\u641C\u7D22\" thyIconPosition=\"after\" (ngModelChange)=\"updateKeywords(keyWords)\">\n </thy-input-search>\n</div>\n\n<div\n *ngIf=\"groupMenu.length > 0; else thyEmpty\"\n theListBox\n [keyboardContainer]=\"keyboardContainer\"\n (theListboxChange)=\"theListboxChange($event)\"\n class=\"thy-dropdown-menu the-plugin-menu-scroll-container pb-2 pt-0\"\n>\n <div *ngIf=\"iconMenu?.length > 0\" theListboxGroup [horizontalColumn]=\"6\" class=\"icon-menu d-flex pl-5 py-1\">\n <ng-container *ngFor=\"let item of iconMenu; trackBy: trackByFn\">\n <a\n *ngIf=\"item.type === ThePluginMenuItemType.icon\"\n href=\"javascript:;\"\n class=\"mt-2\"\n thyAction\n theListboxOption\n [theOptionValue]=\"item\"\n [thyActionIcon]=\"item.icon\"\n [thyTooltip]=\"item.name\"\n thePreventDefault\n (click)=\"handleItemSelection(item)\"\n ></a>\n </ng-container>\n </div>\n\n <thy-divider *ngIf=\"this.iconMenu?.length\" class=\"my-2\"></thy-divider>\n <div theListboxGroup>\n <ng-container *ngFor=\"let item of groupMenu; trackBy: trackByFn\">\n <ng-container *ngIf=\"ThePluginMenu.isMenuItem(item) && !(item.children?.length > 0) && item.key !== 'table'\">\n <div\n thyDropdownMenuItem\n theListboxOption\n [theOptionValue]=\"item\"\n class=\"py-0\"\n thePreventDefault\n (click)=\"handleItemSelection(item)\"\n >\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"item.menuIcon\"></thy-icon>\n </div>\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n <span *ngIf=\"!(item.children?.length > 0)\" class=\"menu-item-display-key font-size-sm text-placeholder\">\n {{ item.displayKey }}</span\n >\n {{ item.name }}\n </div>\n <div class=\"text-muted font-size-sm\">{{ item.description }}</div>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"ThePluginMenu.isMenuItem(item) && item.children?.length > 0\" #hasExpanded>\n <div\n #dropdownTriggers\n [thyDropdown]=\"expand\"\n thyTrigger=\"hover\"\n thyDropdownMenuItem\n theListboxOption\n [theOptionValue]=\"item\"\n [thyPopoverOptions]=\"expandPopoverOptions\"\n class=\"py-0\"\n thePreventDefault\n (click)=\"handleItemSelection(item)\"\n >\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"item.menuIcon\"></thy-icon>\n </div>\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n <span *ngIf=\"!(item.children?.length > 0)\" class=\"menu-item-display-key font-size-sm text-placeholder\">\n {{ item.displayKey }}</span\n >\n {{ item.name }}\n </div>\n <div class=\"text-muted font-size-sm\">{{ item.description }}</div>\n </div>\n <div *ngIf=\"item.children?.length > 0\">\n <thy-icon class=\"text-muted\" thyIconName=\"angle-right\"></thy-icon>\n </div>\n <thy-dropdown-menu #expand>\n <div class=\"the-plugin-menu-container expand-menu\" theListboxGroup>\n <div\n *ngFor=\"let child of item.children\"\n thyDropdownMenuItem\n theListboxOption\n class=\"py-0\"\n thePreventDefault\n (click)=\"handleItemSelection(child)\"\n [theOptionValue]=\"child\"\n >\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"child.menuIcon\"></thy-icon>\n </div>\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n <span class=\"menu-item-display-key font-size-sm text-placeholder\"> {{ child.displayKey }}</span>\n {{ child.name }}\n </div>\n <div class=\"text-muted font-size-sm\">{{ child.description }}</div>\n </div>\n </div>\n </div>\n </thy-dropdown-menu>\n </div>\n </ng-container>\n <ng-container *ngIf=\"ThePluginMenu.isMenuItem(item) && item.key === 'table'\">\n <div\n #dropdownTriggers\n [thyPopover]=\"tableSelect\"\n thyPlacement=\"rightTop\"\n thyTrigger=\"hover\"\n thyDropdownMenuItem\n theListboxOption\n [thyConfig]=\"tableSelectPopoverConfig\"\n [theOptionValue]=\"item\"\n class=\"py-0\"\n thePreventDefault\n (click)=\"handleItemSelection(item)\"\n >\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"item.menuIcon\"></thy-icon>\n </div>\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n {{ item.name }}\n </div>\n <div class=\"text-muted font-size-sm\">{{ item.description }}</div>\n </div>\n <div>\n <thy-icon class=\"text-muted\" thyIconName=\"angle-right\"></thy-icon>\n </div>\n\n <ng-template #tableSelect>\n <table-select\n class=\"plugin-menu-table the-table-selector-panel\"\n [editor]=\"editor\"\n [beforeInsert]=\"removeKeywords\"\n ></table-select>\n </ng-template>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!ThePluginMenu.isMenuItem(item)\" #menuGroup>\n <thy-dropdown-menu-group class=\"font-size-sm\" [thyTitle]=\"item.groupName\"></thy-dropdown-menu-group>\n </ng-container>\n </ng-container>\n </div>\n</div>\n\n<ng-template #thyEmpty>\n <div class=\"empty d-flex align-items-center justify-content-center\">\n <thy-empty [thyMessage]=\"thyMessage\"></thy-empty>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: i8.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: i5$1.ThyInputSearchComponent, selector: "thy-input-search", inputs: ["name", "placeholder", "thyTheme", "thySearchFocus", "thyIconPosition", "thySize"], outputs: ["clear", "thyClear"] }, { kind: "component", type: i5.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: i12.ThyDividerComponent, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }, { kind: "directive", type: i6.ThyDropdownDirective, selector: "[thyDropdown]", inputs: ["thyDropdownMenu", "thyDropdown", "thyTrigger", "thyActiveClass", "thyPopoverOptions"], outputs: ["thyActiveChange"] }, { kind: "component", type: i6.ThyDropdownMenuComponent, selector: "thy-dropdown-menu", inputs: ["thyWidth"] }, { kind: "component", type: i6.ThyDropdownMenuGroupComponent, selector: "thy-dropdown-menu-group", inputs: ["thyTitle"] }, { kind: "directive", type: i6.ThyDropdownMenuItemDirective, selector: "[thyDropdownMenuItem]", inputs: ["thyType", "thyDisabled"] }, { kind: "component", type: i10$1.ThyEmptyComponent, selector: "thy-empty", inputs: ["thyMessage", "thyTranslationKey", "thyTranslationValues", "thyEntityName", "thyEntityNameTranslateKey", "thyIconName", "thySize", "thyMarginTop", "thyTopAuto", "thyContainer", "thyImageUrl", "thyImageLoading", "thyImageFetchPriority", "thyDescription"] }, { kind: "directive", type: i1$1.ThyPopoverDirective, selector: "[thyPopover]", inputs: ["thyPopover", "thyTrigger", "thyPlacement", "thyOffset", "thyConfig", "thyShowDelay", "thyHideDelay", "thyAutoAdaptive", "thyDisabled"] }, { kind: "component", type: TheTableSelectComponent, selector: "table-select", inputs: ["optionsParam", "editor", "beforeInsert"] }, { kind: "directive", type: TheListboxOptionDirective, selector: "[theListboxOption]", inputs: ["theOptionValue"], exportAs: ["theListboxOption"] }, { kind: "directive", type: TheListboxGroupDirective, selector: "[theListboxGroup]", inputs: ["horizontalColumn"], exportAs: ["theListboxGroup"] }, { kind: "directive", type: TheListboxDirective, selector: "[theListBox]", inputs: ["keyboardContainer"], outputs: ["theListboxChange"], exportAs: ["theListBox"] }, { kind: "directive", type: ThePreventDefaultDirective, selector: "[thePreventDefault]", exportAs: ["thePreventDefault"] }] });
10316
10325
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ThePluginMenuComponent, decorators: [{
10317
10326
  type: Component,
10318
- args: [{ selector: 'the-plugin-menu', template: "<div *ngIf=\"theDisplaySearch\" class=\"menu-search px-5 pt-5\">\n <thy-input-search [(ngModel)]=\"keyWords\" placeholder=\"\u641C\u7D22\" thyIconPosition=\"after\" (ngModelChange)=\"buildMenus()\"> </thy-input-search>\n</div>\n\n<div\n *ngIf=\"groupMenu.length > 0; else thyEmpty\"\n theListBox\n [keyboardContainer]=\"keyboardContainer\"\n (theListboxChange)=\"theListboxChange($event)\"\n class=\"thy-dropdown-menu py-2\"\n>\n <div *ngIf=\"iconMenu?.length > 0\" theListboxGroup [horizontalColumn]=\"6\" class=\"icon-menu d-flex pl-5 py-1\">\n <ng-container *ngFor=\"let item of iconMenu\">\n <a\n *ngIf=\"item.type === ThePluginMenuItemType.icon\"\n href=\"javascript:;\"\n class=\"mt-2\"\n thyAction\n theListboxOption\n [theOptionValue]=\"item\"\n [thyActionIcon]=\"item.icon\"\n [thyTooltip]=\"item.name\"\n thePreventDefault\n (click)=\"handleItemSelection(item)\"\n ></a>\n </ng-container>\n </div>\n\n <thy-divider *ngIf=\"this.iconMenu?.length\" class=\"my-2\"></thy-divider>\n <div theListboxGroup>\n <ng-container *ngFor=\"let item of groupMenu\">\n <ng-container *ngIf=\"ThePluginMenu.isMenuItem(item) && !(item.children?.length > 0) && item.key !== 'table'\">\n <div\n thyDropdownMenuItem\n theListboxOption\n [theOptionValue]=\"item\"\n class=\"py-0\"\n thePreventDefault\n (click)=\"handleItemSelection(item)\"\n >\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"item.menuIcon\"></thy-icon>\n </div>\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n <span *ngIf=\"!(item.children?.length > 0)\" class=\"menu-item-display-key font-size-sm text-placeholder\">\n {{ item.displayKey }}</span\n >\n {{ item.name }}\n </div>\n <div class=\"text-muted font-size-sm\">{{ item.description }}</div>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"ThePluginMenu.isMenuItem(item) && item.children?.length > 0\" #hasExpanded>\n <div\n #dropdownTriggers\n [thyDropdown]=\"expand\"\n thyTrigger=\"hover\"\n thyDropdownMenuItem\n theListboxOption\n [theOptionValue]=\"item\"\n [thyPopoverOptions]=\"expandPopoverOptions\"\n class=\"py-0\"\n thePreventDefault\n (click)=\"handleItemSelection(item)\"\n >\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"item.menuIcon\"></thy-icon>\n </div>\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n <span *ngIf=\"!(item.children?.length > 0)\" class=\"menu-item-display-key font-size-sm text-placeholder\">\n {{ item.displayKey }}</span\n >\n {{ item.name }}\n </div>\n <div class=\"text-muted font-size-sm\">{{ item.description }}</div>\n </div>\n <div *ngIf=\"item.children?.length > 0\">\n <thy-icon class=\"text-muted\" thyIconName=\"angle-right\"></thy-icon>\n </div>\n <thy-dropdown-menu #expand>\n <div class=\"the-plugin-menu-container expand-menu\" theListboxGroup>\n <div\n *ngFor=\"let child of item.children\"\n thyDropdownMenuItem\n theListboxOption\n class=\"py-0\"\n thePreventDefault\n (click)=\"handleItemSelection(child)\"\n [theOptionValue]=\"child\"\n >\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"child.menuIcon\"></thy-icon>\n </div>\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n <span class=\"menu-item-display-key font-size-sm text-placeholder\"> {{ child.displayKey }}</span>\n {{ child.name }}\n </div>\n <div class=\"text-muted font-size-sm\">{{ child.description }}</div>\n </div>\n </div>\n </div>\n </thy-dropdown-menu>\n </div>\n </ng-container>\n <ng-container *ngIf=\"ThePluginMenu.isMenuItem(item) && item.key === 'table'\">\n <div\n #dropdownTriggers\n [thyPopover]=\"tableSelect\"\n thyPlacement=\"rightTop\"\n thyTrigger=\"hover\"\n thyDropdownMenuItem\n theListboxOption\n [thyConfig]=\"tableSelectPopoverConfig\"\n [theOptionValue]=\"item\"\n class=\"py-0\"\n thePreventDefault\n (click)=\"handleItemSelection(item)\"\n >\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"item.menuIcon\"></thy-icon>\n </div>\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n {{ item.name }}\n </div>\n <div class=\"text-muted font-size-sm\">{{ item.description }}</div>\n </div>\n <div>\n <thy-icon class=\"text-muted\" thyIconName=\"angle-right\"></thy-icon>\n </div>\n\n <ng-template #tableSelect>\n <table-select\n class=\"plugin-menu-table the-table-selector-panel\"\n [editor]=\"editor\"\n [beforeInsert]=\"removeKeywords\"\n ></table-select>\n </ng-template>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!ThePluginMenu.isMenuItem(item)\" #menuGroup>\n <thy-dropdown-menu-group class=\"font-size-sm\" [thyTitle]=\"item.groupName\"></thy-dropdown-menu-group>\n </ng-container>\n </ng-container>\n </div>\n</div>\n\n<ng-template #thyEmpty>\n <div class=\"empty d-flex align-items-center justify-content-center\">\n <thy-empty [thyMessage]=\"thyMessage\"></thy-empty>\n </div>\n</ng-template>\n" }]
10327
+ args: [{ selector: 'the-plugin-menu', template: "<div *ngIf=\"theDisplaySearch\" class=\"menu-search px-5 pt-5 pb-2\">\n <thy-input-search [(ngModel)]=\"keyWords\" placeholder=\"\u641C\u7D22\" thyIconPosition=\"after\" (ngModelChange)=\"updateKeywords(keyWords)\">\n </thy-input-search>\n</div>\n\n<div\n *ngIf=\"groupMenu.length > 0; else thyEmpty\"\n theListBox\n [keyboardContainer]=\"keyboardContainer\"\n (theListboxChange)=\"theListboxChange($event)\"\n class=\"thy-dropdown-menu the-plugin-menu-scroll-container pb-2 pt-0\"\n>\n <div *ngIf=\"iconMenu?.length > 0\" theListboxGroup [horizontalColumn]=\"6\" class=\"icon-menu d-flex pl-5 py-1\">\n <ng-container *ngFor=\"let item of iconMenu; trackBy: trackByFn\">\n <a\n *ngIf=\"item.type === ThePluginMenuItemType.icon\"\n href=\"javascript:;\"\n class=\"mt-2\"\n thyAction\n theListboxOption\n [theOptionValue]=\"item\"\n [thyActionIcon]=\"item.icon\"\n [thyTooltip]=\"item.name\"\n thePreventDefault\n (click)=\"handleItemSelection(item)\"\n ></a>\n </ng-container>\n </div>\n\n <thy-divider *ngIf=\"this.iconMenu?.length\" class=\"my-2\"></thy-divider>\n <div theListboxGroup>\n <ng-container *ngFor=\"let item of groupMenu; trackBy: trackByFn\">\n <ng-container *ngIf=\"ThePluginMenu.isMenuItem(item) && !(item.children?.length > 0) && item.key !== 'table'\">\n <div\n thyDropdownMenuItem\n theListboxOption\n [theOptionValue]=\"item\"\n class=\"py-0\"\n thePreventDefault\n (click)=\"handleItemSelection(item)\"\n >\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"item.menuIcon\"></thy-icon>\n </div>\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n <span *ngIf=\"!(item.children?.length > 0)\" class=\"menu-item-display-key font-size-sm text-placeholder\">\n {{ item.displayKey }}</span\n >\n {{ item.name }}\n </div>\n <div class=\"text-muted font-size-sm\">{{ item.description }}</div>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"ThePluginMenu.isMenuItem(item) && item.children?.length > 0\" #hasExpanded>\n <div\n #dropdownTriggers\n [thyDropdown]=\"expand\"\n thyTrigger=\"hover\"\n thyDropdownMenuItem\n theListboxOption\n [theOptionValue]=\"item\"\n [thyPopoverOptions]=\"expandPopoverOptions\"\n class=\"py-0\"\n thePreventDefault\n (click)=\"handleItemSelection(item)\"\n >\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"item.menuIcon\"></thy-icon>\n </div>\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n <span *ngIf=\"!(item.children?.length > 0)\" class=\"menu-item-display-key font-size-sm text-placeholder\">\n {{ item.displayKey }}</span\n >\n {{ item.name }}\n </div>\n <div class=\"text-muted font-size-sm\">{{ item.description }}</div>\n </div>\n <div *ngIf=\"item.children?.length > 0\">\n <thy-icon class=\"text-muted\" thyIconName=\"angle-right\"></thy-icon>\n </div>\n <thy-dropdown-menu #expand>\n <div class=\"the-plugin-menu-container expand-menu\" theListboxGroup>\n <div\n *ngFor=\"let child of item.children\"\n thyDropdownMenuItem\n theListboxOption\n class=\"py-0\"\n thePreventDefault\n (click)=\"handleItemSelection(child)\"\n [theOptionValue]=\"child\"\n >\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"child.menuIcon\"></thy-icon>\n </div>\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n <span class=\"menu-item-display-key font-size-sm text-placeholder\"> {{ child.displayKey }}</span>\n {{ child.name }}\n </div>\n <div class=\"text-muted font-size-sm\">{{ child.description }}</div>\n </div>\n </div>\n </div>\n </thy-dropdown-menu>\n </div>\n </ng-container>\n <ng-container *ngIf=\"ThePluginMenu.isMenuItem(item) && item.key === 'table'\">\n <div\n #dropdownTriggers\n [thyPopover]=\"tableSelect\"\n thyPlacement=\"rightTop\"\n thyTrigger=\"hover\"\n thyDropdownMenuItem\n theListboxOption\n [thyConfig]=\"tableSelectPopoverConfig\"\n [theOptionValue]=\"item\"\n class=\"py-0\"\n thePreventDefault\n (click)=\"handleItemSelection(item)\"\n >\n <div class=\"menu-icon mr-2\">\n <thy-icon [thyIconName]=\"item.menuIcon\"></thy-icon>\n </div>\n <div class=\"menu-content d-flex align-items-center\">\n <div class=\"menu-item-title w-100\">\n {{ item.name }}\n </div>\n <div class=\"text-muted font-size-sm\">{{ item.description }}</div>\n </div>\n <div>\n <thy-icon class=\"text-muted\" thyIconName=\"angle-right\"></thy-icon>\n </div>\n\n <ng-template #tableSelect>\n <table-select\n class=\"plugin-menu-table the-table-selector-panel\"\n [editor]=\"editor\"\n [beforeInsert]=\"removeKeywords\"\n ></table-select>\n </ng-template>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!ThePluginMenu.isMenuItem(item)\" #menuGroup>\n <thy-dropdown-menu-group class=\"font-size-sm\" [thyTitle]=\"item.groupName\"></thy-dropdown-menu-group>\n </ng-container>\n </ng-container>\n </div>\n</div>\n\n<ng-template #thyEmpty>\n <div class=\"empty d-flex align-items-center justify-content-center\">\n <thy-empty [thyMessage]=\"thyMessage\"></thy-empty>\n </div>\n</ng-template>\n" }]
10319
10328
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1$1.ThyPopoverRef }]; }, propDecorators: { dropdownTriggers: [{
10320
10329
  type: ViewChildren,
10321
10330
  args: ['dropdownTriggers', { read: ThyDropdownDirective }]