slate-angular 1.9.3 → 13.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/components/descendant/descendant.component.d.ts +2 -3
  2. package/{esm2015/components/block-card/block-card.component.js → esm2020/components/block-card/block-card.component.mjs} +5 -8
  3. package/{esm2015/components/children/children.component.js → esm2020/components/children/children.component.mjs} +3 -3
  4. package/esm2020/components/descendant/descendant.component.mjs +183 -0
  5. package/esm2020/components/editable/editable.component.mjs +1057 -0
  6. package/{esm2015/components/element/default-element.component.js → esm2020/components/element/default-element.component.mjs} +3 -3
  7. package/{esm2015/components/element/default-element.component.token.js → esm2020/components/element/default-element.component.token.mjs} +0 -0
  8. package/{esm2015/components/element/element.component.js → esm2020/components/element/element.component.mjs} +3 -3
  9. package/{esm2015/components/leaf/default-leaf.component.js → esm2020/components/leaf/default-leaf.component.mjs} +3 -3
  10. package/{esm2015/components/leaf/leaf.component.js → esm2020/components/leaf/leaf.component.mjs} +3 -3
  11. package/{esm2015/components/leaves/leaves.component.js → esm2020/components/leaves/leaves.component.mjs} +3 -3
  12. package/esm2020/components/string/string.component.mjs +73 -0
  13. package/esm2020/components/string/template.component.mjs +26 -0
  14. package/{esm2015/components/text/default-text.component.js → esm2020/components/text/default-text.component.mjs} +3 -3
  15. package/{esm2015/components/text/void-text.component.js → esm2020/components/text/void-text.component.mjs} +3 -3
  16. package/{esm2015/custom-event/BeforeInputEventPlugin.js → esm2020/custom-event/BeforeInputEventPlugin.mjs} +0 -0
  17. package/{esm2015/custom-event/DOMTopLevelEventTypes.js → esm2020/custom-event/DOMTopLevelEventTypes.mjs} +0 -0
  18. package/{esm2015/custom-event/FallbackCompositionState.js → esm2020/custom-event/FallbackCompositionState.mjs} +0 -0
  19. package/{esm2015/custom-event/before-input-polyfill.js → esm2020/custom-event/before-input-polyfill.mjs} +0 -0
  20. package/{esm2015/module.js → esm2020/module.mjs} +5 -6
  21. package/esm2020/plugins/angular-editor.mjs +565 -0
  22. package/{esm2015/plugins/with-angular.js → esm2020/plugins/with-angular.mjs} +0 -0
  23. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  24. package/{esm2015/slate-angular.js → esm2020/slate-angular.mjs} +0 -0
  25. package/{esm2015/types/error.js → esm2020/types/error.mjs} +0 -0
  26. package/{esm2015/types/feature.js → esm2020/types/feature.mjs} +0 -0
  27. package/{esm2015/types/index.js → esm2020/types/index.mjs} +1 -1
  28. package/{esm2015/types/view.js → esm2020/types/view.mjs} +0 -0
  29. package/esm2020/utils/block-card.mjs +25 -0
  30. package/{esm2015/utils/dom.js → esm2020/utils/dom.mjs} +0 -0
  31. package/{esm2015/utils/environment.js → esm2020/utils/environment.mjs} +0 -0
  32. package/{esm2015/utils/global-normalize.js → esm2020/utils/global-normalize.mjs} +0 -0
  33. package/{esm2015/utils/hotkeys.js → esm2020/utils/hotkeys.mjs} +0 -0
  34. package/{esm2015/utils/index.js → esm2020/utils/index.mjs} +0 -0
  35. package/{esm2015/utils/key.js → esm2020/utils/key.mjs} +0 -0
  36. package/{esm2015/utils/lines.js → esm2020/utils/lines.mjs} +0 -0
  37. package/esm2020/utils/range-list.mjs +29 -0
  38. package/{esm2015/utils/view.js → esm2020/utils/view.mjs} +0 -0
  39. package/{esm2015/utils/weak-maps.js → esm2020/utils/weak-maps.mjs} +0 -0
  40. package/{esm2015/view/base.js → esm2020/view/base.mjs} +12 -12
  41. package/{esm2015/view/before-context-change.js → esm2020/view/before-context-change.mjs} +0 -0
  42. package/esm2020/view/container-item.mjs +102 -0
  43. package/{esm2015/view/container.js → esm2020/view/container.mjs} +3 -3
  44. package/{esm2015/view/context.js → esm2020/view/context.mjs} +0 -0
  45. package/fesm2015/{slate-angular.js → slate-angular.mjs} +83 -100
  46. package/fesm2015/slate-angular.mjs.map +1 -0
  47. package/fesm2020/slate-angular.mjs +3643 -0
  48. package/fesm2020/slate-angular.mjs.map +1 -0
  49. package/package.json +30 -6
  50. package/styles/index.scss +1 -1
  51. package/types/index.d.ts +1 -0
  52. package/view/container-item.d.ts +2 -3
  53. package/bundles/slate-angular.umd.js +0 -4298
  54. package/bundles/slate-angular.umd.js.map +0 -1
  55. package/esm2015/components/descendant/descendant.component.js +0 -179
  56. package/esm2015/components/editable/editable.component.js +0 -1063
  57. package/esm2015/components/string/string.component.js +0 -73
  58. package/esm2015/components/string/template.component.js +0 -30
  59. package/esm2015/plugins/angular-editor.js +0 -565
  60. package/esm2015/utils/block-card.js +0 -25
  61. package/esm2015/utils/range-list.js +0 -30
  62. package/esm2015/view/container-item.js +0 -105
  63. package/fesm2015/slate-angular.js.map +0 -1
@@ -1,25 +0,0 @@
1
- export const FAKE_LEFT_BLOCK_CARD_OFFSET = -1;
2
- export const FAKE_RIGHT_BLOCK_CARD_OFFSET = -2;
3
- export function hasBlockCardWithNode(node) {
4
- return node && (node.parentElement.hasAttribute('card-target') || (node instanceof HTMLElement && node.hasAttribute('card-target')));
5
- }
6
- export function hasBlockCard(selection) {
7
- return hasBlockCardWithNode(selection === null || selection === void 0 ? void 0 : selection.anchorNode) || hasBlockCardWithNode(selection === null || selection === void 0 ? void 0 : selection.focusNode);
8
- }
9
- export function getCardTargetAttribute(node) {
10
- return node.parentElement.attributes['card-target'] || (node instanceof HTMLElement && node.attributes['card-target']);
11
- }
12
- export function isCardLeft(node) {
13
- const cardTarget = getCardTargetAttribute(node);
14
- return cardTarget && cardTarget.nodeValue === 'card-left';
15
- }
16
- export function isCardLeftByTargetAttr(targetAttr) {
17
- return targetAttr && targetAttr.nodeValue === 'card-left';
18
- }
19
- export function isCardRightByTargetAttr(targetAttr) {
20
- return targetAttr && targetAttr.nodeValue === 'card-right';
21
- }
22
- export function isCardCenterByTargetAttr(targetAttr) {
23
- return targetAttr && targetAttr.nodeValue === 'card-center';
24
- }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stY2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3NyYy91dGlscy9ibG9jay1jYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsQ0FBQyxDQUFDO0FBRTlDLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQUMsQ0FBQyxDQUFDO0FBRS9DLE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxJQUFhO0lBQzlDLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLFlBQVksV0FBVyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pJLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLFNBQXVCO0lBQ2hELE9BQU8sb0JBQW9CLENBQUMsU0FBUyxhQUFULFNBQVMsdUJBQVQsU0FBUyxDQUFFLFVBQVUsQ0FBQyxJQUFJLG9CQUFvQixDQUFDLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRSxTQUFTLENBQUMsQ0FBQztBQUNyRyxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLElBQWE7SUFDaEQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksWUFBWSxXQUFXLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQzNILENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLElBQWE7SUFDcEMsTUFBTSxVQUFVLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEQsT0FBTyxVQUFVLElBQUksVUFBVSxDQUFDLFNBQVMsS0FBSyxXQUFXLENBQUM7QUFDOUQsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxVQUFlO0lBQ2xELE9BQU8sVUFBVSxJQUFJLFVBQVUsQ0FBQyxTQUFTLEtBQUssV0FBVyxDQUFDO0FBQzlELENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsVUFBZTtJQUNuRCxPQUFPLFVBQVUsSUFBSSxVQUFVLENBQUMsU0FBUyxLQUFLLFlBQVksQ0FBQztBQUMvRCxDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFDLFVBQWU7SUFDcEQsT0FBTyxVQUFVLElBQUksVUFBVSxDQUFDLFNBQVMsS0FBSyxhQUFhLENBQUM7QUFDaEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPTU5vZGUsIERPTVNlbGVjdGlvbiB9IGZyb20gXCIuL2RvbVwiO1xuXG5leHBvcnQgY29uc3QgRkFLRV9MRUZUX0JMT0NLX0NBUkRfT0ZGU0VUID0gLTE7XG5cbmV4cG9ydCBjb25zdCBGQUtFX1JJR0hUX0JMT0NLX0NBUkRfT0ZGU0VUID0gLTI7XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNCbG9ja0NhcmRXaXRoTm9kZShub2RlOiBET01Ob2RlKSB7XG4gICAgcmV0dXJuIG5vZGUgJiYgKG5vZGUucGFyZW50RWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2NhcmQtdGFyZ2V0JykgfHwgKG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiBub2RlLmhhc0F0dHJpYnV0ZSgnY2FyZC10YXJnZXQnKSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzQmxvY2tDYXJkKHNlbGVjdGlvbjogRE9NU2VsZWN0aW9uKSB7XG4gICAgcmV0dXJuIGhhc0Jsb2NrQ2FyZFdpdGhOb2RlKHNlbGVjdGlvbj8uYW5jaG9yTm9kZSkgfHwgaGFzQmxvY2tDYXJkV2l0aE5vZGUoc2VsZWN0aW9uPy5mb2N1c05vZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2FyZFRhcmdldEF0dHJpYnV0ZShub2RlOiBET01Ob2RlKSB7XG4gICAgcmV0dXJuIG5vZGUucGFyZW50RWxlbWVudC5hdHRyaWJ1dGVzWydjYXJkLXRhcmdldCddIHx8IChub2RlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgbm9kZS5hdHRyaWJ1dGVzWydjYXJkLXRhcmdldCddKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FyZExlZnQobm9kZTogRE9NTm9kZSkge1xuICAgIGNvbnN0IGNhcmRUYXJnZXQgPSBnZXRDYXJkVGFyZ2V0QXR0cmlidXRlKG5vZGUpO1xuICAgIHJldHVybiBjYXJkVGFyZ2V0ICYmIGNhcmRUYXJnZXQubm9kZVZhbHVlID09PSAnY2FyZC1sZWZ0Jztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FyZExlZnRCeVRhcmdldEF0dHIodGFyZ2V0QXR0cjogYW55KSB7XG4gICAgcmV0dXJuIHRhcmdldEF0dHIgJiYgdGFyZ2V0QXR0ci5ub2RlVmFsdWUgPT09ICdjYXJkLWxlZnQnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDYXJkUmlnaHRCeVRhcmdldEF0dHIodGFyZ2V0QXR0cjogYW55KSB7XG4gICAgcmV0dXJuIHRhcmdldEF0dHIgJiYgdGFyZ2V0QXR0ci5ub2RlVmFsdWUgPT09ICdjYXJkLXJpZ2h0Jztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FyZENlbnRlckJ5VGFyZ2V0QXR0cih0YXJnZXRBdHRyOiBhbnkpIHtcbiAgICByZXR1cm4gdGFyZ2V0QXR0ciAmJiB0YXJnZXRBdHRyLm5vZGVWYWx1ZSA9PT0gJ2NhcmQtY2VudGVyJztcbn1cbiJdfQ==
@@ -1,30 +0,0 @@
1
- import { __rest } from "tslib";
2
- import { Range } from 'slate';
3
- import { PLACEHOLDER_SYMBOL } from './weak-maps';
4
- export const shallowCompare = (obj1, obj2) => Object.keys(obj1).length === Object.keys(obj2).length &&
5
- Object.keys(obj1).every(key => obj2.hasOwnProperty(key) && obj1[key] === obj2[key]);
6
- /**
7
- * Check if a list of decorator ranges are equal to another.
8
- *
9
- * PERF: this requires the two lists to also have the ranges inside them in the
10
- * same order, but this is an okay constraint for us since decorations are
11
- * kept in order, and the odd case where they aren't is okay to re-render for.
12
- */
13
- export const isDecoratorRangeListEqual = (list, another) => {
14
- if (list.length !== another.length) {
15
- return false;
16
- }
17
- for (let i = 0; i < list.length; i++) {
18
- const range = list[i];
19
- const other = another[i];
20
- const { anchor: rangeAnchor, focus: rangeFocus } = range, rangeOwnProps = __rest(range, ["anchor", "focus"]);
21
- const { anchor: otherAnchor, focus: otherFocus } = other, otherOwnProps = __rest(other, ["anchor", "focus"]);
22
- if (!Range.equals(range, other) ||
23
- range[PLACEHOLDER_SYMBOL] !== other[PLACEHOLDER_SYMBOL] ||
24
- !shallowCompare(rangeOwnProps, otherOwnProps)) {
25
- return false;
26
- }
27
- }
28
- return true;
29
- };
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UtbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3NyYy91dGlscy9yYW5nZS1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFBO0FBQzdCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUVoRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUFRLEVBQUUsSUFBUSxFQUFFLEVBQUUsQ0FDakQsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNO0lBQ3JELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUNuQixHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FDN0QsQ0FBQTtBQUVMOzs7Ozs7R0FNRztBQUVILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLENBQ3JDLElBQWEsRUFDYixPQUFnQixFQUNULEVBQUU7SUFDVCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLE1BQU0sRUFBRTtRQUNoQyxPQUFPLEtBQUssQ0FBQTtLQUNmO0lBRUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDbEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3JCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUV4QixNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsVUFBVSxLQUF1QixLQUFLLEVBQXZCLGFBQWEsVUFBSyxLQUFLLEVBQXBFLG1CQUE0RCxDQUFRLENBQUE7UUFDMUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFVBQVUsS0FBdUIsS0FBSyxFQUF2QixhQUFhLFVBQUssS0FBSyxFQUFwRSxtQkFBNEQsQ0FBUSxDQUFBO1FBRTFFLElBQ0ksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7WUFDM0IsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEtBQUssS0FBSyxDQUFDLGtCQUFrQixDQUFDO1lBQ3ZELENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsRUFDL0M7WUFDRSxPQUFPLEtBQUssQ0FBQTtTQUNmO0tBQ0o7SUFFRCxPQUFPLElBQUksQ0FBQTtBQUNmLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJhbmdlIH0gZnJvbSAnc2xhdGUnXG5pbXBvcnQgeyBQTEFDRUhPTERFUl9TWU1CT0wgfSBmcm9tICcuL3dlYWstbWFwcydcblxuZXhwb3J0IGNvbnN0IHNoYWxsb3dDb21wYXJlID0gKG9iajE6IHt9LCBvYmoyOiB7fSkgPT5cbiAgICBPYmplY3Qua2V5cyhvYmoxKS5sZW5ndGggPT09IE9iamVjdC5rZXlzKG9iajIpLmxlbmd0aCAmJlxuICAgIE9iamVjdC5rZXlzKG9iajEpLmV2ZXJ5KFxuICAgICAgICBrZXkgPT4gb2JqMi5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIG9iajFba2V5XSA9PT0gb2JqMltrZXldXG4gICAgKVxuXG4vKipcbiAqIENoZWNrIGlmIGEgbGlzdCBvZiBkZWNvcmF0b3IgcmFuZ2VzIGFyZSBlcXVhbCB0byBhbm90aGVyLlxuICpcbiAqIFBFUkY6IHRoaXMgcmVxdWlyZXMgdGhlIHR3byBsaXN0cyB0byBhbHNvIGhhdmUgdGhlIHJhbmdlcyBpbnNpZGUgdGhlbSBpbiB0aGVcbiAqIHNhbWUgb3JkZXIsIGJ1dCB0aGlzIGlzIGFuIG9rYXkgY29uc3RyYWludCBmb3IgdXMgc2luY2UgZGVjb3JhdGlvbnMgYXJlXG4gKiBrZXB0IGluIG9yZGVyLCBhbmQgdGhlIG9kZCBjYXNlIHdoZXJlIHRoZXkgYXJlbid0IGlzIG9rYXkgdG8gcmUtcmVuZGVyIGZvci5cbiAqL1xuXG5leHBvcnQgY29uc3QgaXNEZWNvcmF0b3JSYW5nZUxpc3RFcXVhbCA9IChcbiAgICBsaXN0OiBSYW5nZVtdLFxuICAgIGFub3RoZXI6IFJhbmdlW11cbik6IGJvb2xlYW4gPT4ge1xuICAgIGlmIChsaXN0Lmxlbmd0aCAhPT0gYW5vdGhlci5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gbGlzdFtpXVxuICAgICAgICBjb25zdCBvdGhlciA9IGFub3RoZXJbaV1cblxuICAgICAgICBjb25zdCB7IGFuY2hvcjogcmFuZ2VBbmNob3IsIGZvY3VzOiByYW5nZUZvY3VzLCAuLi5yYW5nZU93blByb3BzIH0gPSByYW5nZVxuICAgICAgICBjb25zdCB7IGFuY2hvcjogb3RoZXJBbmNob3IsIGZvY3VzOiBvdGhlckZvY3VzLCAuLi5vdGhlck93blByb3BzIH0gPSBvdGhlclxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFSYW5nZS5lcXVhbHMocmFuZ2UsIG90aGVyKSB8fFxuICAgICAgICAgICAgcmFuZ2VbUExBQ0VIT0xERVJfU1lNQk9MXSAhPT0gb3RoZXJbUExBQ0VIT0xERVJfU1lNQk9MXSB8fFxuICAgICAgICAgICAgIXNoYWxsb3dDb21wYXJlKHJhbmdlT3duUHJvcHMsIG90aGVyT3duUHJvcHMpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxufVxuIl19
@@ -1,105 +0,0 @@
1
- import { Directive, Input } from "@angular/core";
2
- import { isComponentType, isDOMElement, isTemplateRef } from "../utils";
3
- import * as i0 from "@angular/core";
4
- /**
5
- * Dynamically create/update components or templates
6
- * Provide rootNodes for the view container
7
- * If the dynamically created component uses onpush mode, then it must call markForCheck when setting the context
8
- */
9
- export class ViewContainerItem {
10
- constructor(viewContainerRef, componentFactoryResolver) {
11
- this.viewContainerRef = viewContainerRef;
12
- this.componentFactoryResolver = componentFactoryResolver;
13
- this.initialized = false;
14
- }
15
- get rootNodes() {
16
- return this.getRootNodes();
17
- }
18
- getRootNodes() {
19
- if (this.embeddedViewRef) {
20
- return this.embeddedViewRef.rootNodes.filter((rootNode) => isDOMElement(rootNode));
21
- }
22
- if (this.componentRef) {
23
- return [this.componentRef.instance.nativeElement];
24
- }
25
- return [];
26
- }
27
- destroyView() {
28
- if (this.embeddedViewRef) {
29
- this.embeddedViewRef.destroy();
30
- this.embeddedViewRef = null;
31
- }
32
- if (this.componentRef) {
33
- this.componentRef.destroy();
34
- this.componentRef = null;
35
- }
36
- }
37
- createView() {
38
- this.initialized = true;
39
- this.viewType = this.getViewType();
40
- const context = this.getContext();
41
- if (isTemplateRef(this.viewType)) {
42
- this.embeddedViewContext = { context, viewContext: this.viewContext };
43
- const embeddedViewRef = this.viewContainerRef.createEmbeddedView(this.viewType, this.embeddedViewContext);
44
- this.embeddedViewRef = embeddedViewRef;
45
- }
46
- if (isComponentType(this.viewType)) {
47
- const componentFactory = this.componentFactoryResolver.resolveComponentFactory(this.viewType);
48
- const componentRef = this.viewContainerRef.createComponent(componentFactory);
49
- componentRef.instance.context = context;
50
- componentRef.instance.viewContext = this.viewContext;
51
- this.componentRef = componentRef;
52
- }
53
- }
54
- updateView() {
55
- const viewType = this.getViewType();
56
- const context = this.getContext();
57
- if (this.viewType === viewType) {
58
- if (this.componentRef) {
59
- if (this.memoizedContext(this.componentRef.instance.context, context)) {
60
- return;
61
- }
62
- this.componentRef.instance.context = context;
63
- }
64
- if (this.embeddedViewRef) {
65
- if (this.memoizedContext(this.embeddedViewContext.context, context)) {
66
- return;
67
- }
68
- this.embeddedViewContext.context = context;
69
- }
70
- }
71
- else {
72
- this.viewType = viewType;
73
- const firstRootNode = this.rootNodes[0];
74
- if (isTemplateRef(this.viewType)) {
75
- this.embeddedViewContext = { context, viewContext: this.viewContext };
76
- const embeddedViewRef = this.viewContainerRef.createEmbeddedView(this.viewType, this.embeddedViewContext);
77
- firstRootNode.replaceWith(...embeddedViewRef.rootNodes.filter((rootNode) => isDOMElement(rootNode)));
78
- this.destroyView();
79
- this.embeddedViewRef = embeddedViewRef;
80
- }
81
- if (isComponentType(this.viewType)) {
82
- const componentFactory = this.componentFactoryResolver.resolveComponentFactory(this.viewType);
83
- const componentRef = this.viewContainerRef.createComponent(componentFactory);
84
- componentRef.instance.context = context;
85
- componentRef.instance.viewContext = this.viewContext;
86
- firstRootNode.replaceWith(componentRef.instance.nativeElement);
87
- this.destroyView();
88
- this.componentRef = componentRef;
89
- }
90
- }
91
- }
92
- appendBlockCardElement() {
93
- if (this.blockCardComponentRef) {
94
- this.blockCardComponentRef.instance.append();
95
- }
96
- }
97
- }
98
- ViewContainerItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: ViewContainerItem, deps: [{ token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Directive });
99
- ViewContainerItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.7", type: ViewContainerItem, inputs: { viewContext: "viewContext" }, ngImport: i0 });
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: ViewContainerItem, decorators: [{
101
- type: Directive
102
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }]; }, propDecorators: { viewContext: [{
103
- type: Input
104
- }] } });
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9zcmMvdmlldy9jb250YWluZXItaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTBDLFNBQVMsRUFBbUIsS0FBSyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUc1SCxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBSXhFOzs7O0dBSUc7QUFFSCxNQUFNLE9BQWdCLGlCQUFpQjtJQXdCbkMsWUFDYyxnQkFBa0MsRUFDbEMsd0JBQWtEO1FBRGxELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQXpCaEUsZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUEwQmhCLENBQUM7SUFqQkwsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELFlBQVk7UUFDUixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQ3RGO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNyRDtRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQU9ELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztTQUMvQjtRQUNELElBQUks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QUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7YUFDMUM7WUFDRCxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ2hDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLHVCQUF1QixDQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDakcsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUM3RSxZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7Z0JBQ3hDLFlBQVksQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQ3JELGFBQWEsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQzthQUNwQztTQUNKO0lBQ0wsQ0FBQztJQUVELHNCQUFzQjtRQUNsQixJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUM1QixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2hEO0lBQ0wsQ0FBQzs7OEdBMUdpQixpQkFBaUI7a0dBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUR0QyxTQUFTOzhJQVNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIENvbXBvbmVudFJlZiwgRGlyZWN0aXZlLCBFbWJlZGRlZFZpZXdSZWYsIElucHV0LCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFNsYXRlQmxvY2tDYXJkQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvYmxvY2stY2FyZC9ibG9jay1jYXJkLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tIFwiLi4vdHlwZXMvdmlld1wiO1xuaW1wb3J0IHsgaXNDb21wb25lbnRUeXBlLCBpc0RPTUVsZW1lbnQsIGlzVGVtcGxhdGVSZWYgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IEJhc2VDb21wb25lbnQsIEJhc2VFbWJlZGRlZFZpZXcgfSBmcm9tIFwiLi9iYXNlXCI7XG5pbXBvcnQgeyBTbGF0ZUVsZW1lbnRDb250ZXh0LCBTbGF0ZUxlYWZDb250ZXh0LCBTbGF0ZVN0cmluZ0NvbnRleHQsIFNsYXRlVGV4dENvbnRleHQsIFNsYXRlVmlld0NvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5cbi8qKlxuICogRHluYW1pY2FsbHkgY3JlYXRlL3VwZGF0ZSBjb21wb25lbnRzIG9yIHRlbXBsYXRlc1xuICogUHJvdmlkZSByb290Tm9kZXMgZm9yIHRoZSB2aWV3IGNvbnRhaW5lclxuICogSWYgdGhlIGR5bmFtaWNhbGx5IGNyZWF0ZWQgY29tcG9uZW50IHVzZXMgb25wdXNoIG1vZGUsIHRoZW4gaXQgbXVzdCBjYWxsIG1hcmtGb3JDaGVjayB3aGVuIHNldHRpbmcgdGhlIGNvbnRleHRcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVmlld0NvbnRhaW5lckl0ZW08VCA9IFNsYXRlRWxlbWVudENvbnRleHQgfCBTbGF0ZVRleHRDb250ZXh0IHwgU2xhdGVMZWFmQ29udGV4dCB8IFNsYXRlU3RyaW5nQ29udGV4dCwgSyBleHRlbmRzIEJhc2VDb21wb25lbnQ8VD4gPSBCYXNlQ29tcG9uZW50PFQ+PiB7XG4gICAgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICBlbWJlZGRlZFZpZXdSZWY6IEVtYmVkZGVkVmlld1JlZjxCYXNlRW1iZWRkZWRWaWV3PFQ+PjtcbiAgICBlbWJlZGRlZFZpZXdDb250ZXh0OiBCYXNlRW1iZWRkZWRWaWV3PFQ+O1xuICAgIGJsb2NrQ2FyZENvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFNsYXRlQmxvY2tDYXJkQ29tcG9uZW50PjtcbiAgICBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxLPjtcbiAgICB2aWV3VHlwZTogVmlld1R5cGU7XG5cbiAgICBASW5wdXQoKSB2aWV3Q29udGV4dDogU2xhdGVWaWV3Q29udGV4dDtcblxuICAgIGdldCByb290Tm9kZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFJvb3ROb2RlcygpO1xuICAgIH1cblxuICAgIGdldFJvb3ROb2RlcygpOiBIVE1MRWxlbWVudFtdIHtcbiAgICAgICAgaWYgKHRoaXMuZW1iZWRkZWRWaWV3UmVmKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lbWJlZGRlZFZpZXdSZWYucm9vdE5vZGVzLmZpbHRlcigocm9vdE5vZGUpID0+IGlzRE9NRWxlbWVudChyb290Tm9kZSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgcmV0dXJuIFt0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5uYXRpdmVFbGVtZW50XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcm90ZWN0ZWQgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcbiAgICApIHsgfVxuXG4gICAgZGVzdHJveVZpZXcoKSB7XG4gICAgICAgIGlmICh0aGlzLmVtYmVkZGVkVmlld1JlZikge1xuICAgICAgICAgICAgdGhpcy5lbWJlZGRlZFZpZXdSZWYuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5lbWJlZGRlZFZpZXdSZWYgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWJzdHJhY3QgZ2V0Q29udGV4dCgpOiBUO1xuXG4gICAgYWJzdHJhY3QgZ2V0Vmlld1R5cGUoKTogVmlld1R5cGU7XG5cbiAgICBhYnN0cmFjdCBtZW1vaXplZENvbnRleHQocHJldjogVCwgbmV4dDogVCk6IGJvb2xlYW47XG5cbiAgICBjcmVhdGVWaWV3KCkge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy52aWV3VHlwZSA9IHRoaXMuZ2V0Vmlld1R5cGUoKTtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuICAgICAgICBpZiAoaXNUZW1wbGF0ZVJlZih0aGlzLnZpZXdUeXBlKSkge1xuICAgICAgICAgICAgdGhpcy5lbWJlZGRlZFZpZXdDb250ZXh0ID0geyBjb250ZXh0LCB2aWV3Q29udGV4dDogdGhpcy52aWV3Q29udGV4dCB9O1xuICAgICAgICAgICAgY29uc3QgZW1iZWRkZWRWaWV3UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldzxCYXNlRW1iZWRkZWRWaWV3PFQ+Pih0aGlzLnZpZXdUeXBlLCB0aGlzLmVtYmVkZGVkVmlld0NvbnRleHQpO1xuICAgICAgICAgICAgdGhpcy5lbWJlZGRlZFZpZXdSZWYgPSBlbWJlZGRlZFZpZXdSZWY7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQ29tcG9uZW50VHlwZSh0aGlzLnZpZXdUeXBlKSkge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9IHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5PEs+KHRoaXMudmlld1R5cGUpO1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRGYWN0b3J5KTtcbiAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5jb250ZXh0ID0gY29udGV4dDtcbiAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS52aWV3Q29udGV4dCA9IHRoaXMudmlld0NvbnRleHQ7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IGNvbXBvbmVudFJlZjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZVZpZXcoKSB7XG4gICAgICAgIGNvbnN0IHZpZXdUeXBlID0gdGhpcy5nZXRWaWV3VHlwZSgpO1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG4gICAgICAgIGlmICh0aGlzLnZpZXdUeXBlID09PSB2aWV3VHlwZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWVtb2l6ZWRDb250ZXh0KHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmNvbnRleHQsIGNvbnRleHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5lbWJlZGRlZFZpZXdSZWYpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tZW1vaXplZENvbnRleHQodGhpcy5lbWJlZGRlZFZpZXdDb250ZXh0LmNvbnRleHQsIGNvbnRleHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5lbWJlZGRlZFZpZXdDb250ZXh0LmNvbnRleHQgPSBjb250ZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52aWV3VHlwZSA9IHZpZXdUeXBlO1xuICAgICAgICAgICAgY29uc3QgZmlyc3RSb290Tm9kZSA9IHRoaXMucm9vdE5vZGVzWzBdO1xuICAgICAgICAgICAgaWYgKGlzVGVtcGxhdGVSZWYodGhpcy52aWV3VHlwZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVtYmVkZGVkVmlld0NvbnRleHQgPSB7IGNvbnRleHQsIHZpZXdDb250ZXh0OiB0aGlzLnZpZXdDb250ZXh0IH07XG4gICAgICAgICAgICAgICAgY29uc3QgZW1iZWRkZWRWaWV3UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldzxCYXNlRW1iZWRkZWRWaWV3PFQ+Pih0aGlzLnZpZXdUeXBlLCB0aGlzLmVtYmVkZGVkVmlld0NvbnRleHQpO1xuICAgICAgICAgICAgICAgIGZpcnN0Um9vdE5vZGUucmVwbGFjZVdpdGgoLi4uZW1iZWRkZWRWaWV3UmVmLnJvb3ROb2Rlcy5maWx0ZXIoKHJvb3ROb2RlKSA9PiBpc0RPTUVsZW1lbnQocm9vdE5vZGUpKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95VmlldygpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1iZWRkZWRWaWV3UmVmID0gZW1iZWRkZWRWaWV3UmVmO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzQ29tcG9uZW50VHlwZSh0aGlzLnZpZXdUeXBlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeTxLPih0aGlzLnZpZXdUeXBlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudEZhY3RvcnkpO1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5jb250ZXh0ID0gY29udGV4dDtcbiAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uudmlld0NvbnRleHQgPSB0aGlzLnZpZXdDb250ZXh0O1xuICAgICAgICAgICAgICAgIGZpcnN0Um9vdE5vZGUucmVwbGFjZVdpdGgoY29tcG9uZW50UmVmLmluc3RhbmNlLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveVZpZXcoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IGNvbXBvbmVudFJlZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFwcGVuZEJsb2NrQ2FyZEVsZW1lbnQoKSB7XG4gICAgICAgIGlmICh0aGlzLmJsb2NrQ2FyZENvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5ibG9ja0NhcmRDb21wb25lbnRSZWYuaW5zdGFuY2UuYXBwZW5kKCk7XG4gICAgICAgIH1cbiAgICB9XG59Il19