slate-angular 16.0.0 → 16.1.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/components/block-card/block-card.component.d.ts +3 -3
  2. package/components/children/children.component.d.ts +3 -8
  3. package/components/editable/editable.component.d.ts +21 -10
  4. package/components/element/default-element.component.d.ts +3 -3
  5. package/components/element/element.component.d.ts +3 -3
  6. package/components/leaf/default-leaf.component.d.ts +3 -3
  7. package/components/leaf/token.d.ts +4 -0
  8. package/components/leaves/leaves.component.d.ts +3 -16
  9. package/components/string/default-string.component.d.ts +3 -3
  10. package/components/string/string.component.d.ts +13 -5
  11. package/components/string/template.component.d.ts +3 -3
  12. package/components/text/default-text.component.d.ts +3 -3
  13. package/components/text/token.d.ts +5 -0
  14. package/components/text/void-text.component.d.ts +3 -3
  15. package/esm2022/components/block-card/block-card.component.mjs +6 -6
  16. package/esm2022/components/children/children.component.mjs +11 -36
  17. package/esm2022/components/editable/editable.component.mjs +129 -46
  18. package/esm2022/components/element/default-element.component.mjs +10 -8
  19. package/esm2022/components/element/element.component.mjs +10 -8
  20. package/esm2022/components/leaf/default-leaf.component.mjs +9 -7
  21. package/esm2022/components/leaf/token.mjs +3 -0
  22. package/esm2022/components/leaves/leaves.component.mjs +11 -55
  23. package/esm2022/components/string/default-string.component.mjs +7 -6
  24. package/esm2022/components/string/string.component.mjs +25 -14
  25. package/esm2022/components/string/template.component.mjs +6 -6
  26. package/esm2022/components/text/default-text.component.mjs +10 -8
  27. package/esm2022/components/text/token.mjs +4 -0
  28. package/esm2022/components/text/void-text.component.mjs +10 -8
  29. package/esm2022/module.mjs +53 -58
  30. package/esm2022/utils/throttle.mjs +18 -0
  31. package/esm2022/view/base.mjs +26 -9
  32. package/esm2022/view/container-item.mjs +1 -1
  33. package/esm2022/view/container.mjs +2 -82
  34. package/esm2022/view/context.mjs +1 -1
  35. package/esm2022/view/render/leaves-render.mjs +105 -0
  36. package/esm2022/view/render/list-render.mjs +250 -0
  37. package/esm2022/view/render/utils.mjs +104 -0
  38. package/fesm2022/slate-angular.mjs +905 -675
  39. package/fesm2022/slate-angular.mjs.map +1 -1
  40. package/module.d.ts +12 -14
  41. package/package.json +8 -3
  42. package/utils/throttle.d.ts +2 -0
  43. package/view/base.d.ts +11 -2
  44. package/view/container-item.d.ts +2 -2
  45. package/view/container.d.ts +3 -7
  46. package/view/context.d.ts +10 -4
  47. package/view/render/leaves-render.d.ts +20 -0
  48. package/view/render/list-render.d.ts +31 -0
  49. package/view/render/utils.d.ts +11 -0
  50. package/components/descendant/descendant.component.d.ts +0 -35
  51. package/components/leaf/leaf.component.d.ts +0 -16
  52. package/esm2022/components/descendant/descendant.component.mjs +0 -185
  53. package/esm2022/components/leaf/leaf.component.mjs +0 -37
package/module.d.ts CHANGED
@@ -1,21 +1,19 @@
1
1
  import * as i0 from "@angular/core";
2
- import * as i1 from "./components/editable/editable.component";
3
- import * as i2 from "./components/element/default-element.component";
4
- import * as i3 from "./components/element/element.component";
5
- import * as i4 from "./components/text/void-text.component";
6
- import * as i5 from "./components/text/default-text.component";
7
- import * as i6 from "./components/string/string.component";
8
- import * as i7 from "./components/string/template.component";
9
- import * as i8 from "./components/descendant/descendant.component";
2
+ import * as i1 from "@angular/common";
3
+ import * as i2 from "./components/editable/editable.component";
4
+ import * as i3 from "./components/element/default-element.component";
5
+ import * as i4 from "./components/element/element.component";
6
+ import * as i5 from "./components/text/void-text.component";
7
+ import * as i6 from "./components/text/default-text.component";
8
+ import * as i7 from "./components/string/string.component";
9
+ import * as i8 from "./components/string/template.component";
10
10
  import * as i9 from "./components/children/children.component";
11
11
  import * as i10 from "./components/block-card/block-card.component";
12
- import * as i11 from "./components/leaf/leaf.component";
13
- import * as i12 from "./components/leaves/leaves.component";
14
- import * as i13 from "./components/leaf/default-leaf.component";
15
- import * as i14 from "./components/string/default-string.component";
16
- import * as i15 from "@angular/common";
12
+ import * as i11 from "./components/leaves/leaves.component";
13
+ import * as i12 from "./components/leaf/default-leaf.component";
14
+ import * as i13 from "./components/string/default-string.component";
17
15
  export declare class SlateModule {
18
16
  static ɵfac: i0.ɵɵFactoryDeclaration<SlateModule, never>;
19
- static ɵmod: i0.ɵɵNgModuleDeclaration<SlateModule, [typeof i1.SlateEditableComponent, typeof i2.SlateDefaultElementComponent, typeof i3.SlateElementComponent, typeof i4.SlateVoidTextComponent, typeof i5.SlateDefaultTextComponent, typeof i6.SlateStringComponent, typeof i7.SlateStringTemplateComponent, typeof i8.SlateDescendantComponent, typeof i9.SlateChildrenComponent, typeof i10.SlateBlockCardComponent, typeof i11.SlateLeafComponent, typeof i12.SlateLeavesComponent, typeof i13.SlateDefaultLeafComponent, typeof i14.SlateDefaultStringComponent], [typeof i15.CommonModule], [typeof i1.SlateEditableComponent, typeof i9.SlateChildrenComponent, typeof i3.SlateElementComponent, typeof i12.SlateLeavesComponent, typeof i6.SlateStringComponent, typeof i14.SlateDefaultStringComponent]>;
17
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SlateModule, never, [typeof i1.CommonModule, typeof i2.SlateEditable, typeof i3.SlateDefaultElement, typeof i4.SlateElement, typeof i5.SlateVoidText, typeof i6.SlateDefaultText, typeof i7.SlateString, typeof i8.SlateStringTemplate, typeof i9.SlateChildren, typeof i10.SlateBlockCard, typeof i11.SlateLeaves, typeof i12.SlateDefaultLeaf, typeof i13.SlateDefaultString], [typeof i2.SlateEditable, typeof i9.SlateChildren, typeof i4.SlateElement, typeof i11.SlateLeaves, typeof i7.SlateString, typeof i13.SlateDefaultString]>;
20
18
  static ɵinj: i0.ɵɵInjectorDeclaration<SlateModule>;
21
19
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "slate-angular",
3
- "version": "16.0.0",
3
+ "version": "16.1.0-next.0",
4
4
  "description": "Angular view layer for Slate",
5
5
  "author": "pubuzhixing <pubuzhixing@gmail.com>",
6
6
  "homepage": "https://github.com/worktile/slate-angular#readme",
@@ -9,11 +9,16 @@
9
9
  "slate": ">= 0.63.0",
10
10
  "slate-history": "^0.66.0",
11
11
  "debug": "^4.1.1",
12
- "direction": "^1.0.3",
13
- "is-hotkey": "^0.1.6",
12
+ "direction": "^2.0.1",
13
+ "is-hotkey": "^0.2.0",
14
14
  "scroll-into-view-if-needed": "^2.2.20"
15
15
  },
16
16
  "dependencies": {
17
+ "slate": "^0.72.8",
18
+ "slate-history": "^0.66.0",
19
+ "direction": "^2.0.1",
20
+ "is-hotkey": "^0.2.0",
21
+ "scroll-into-view-if-needed": "^2.2.20",
17
22
  "tslib": "^2.5.0"
18
23
  },
19
24
  "exports": {
@@ -0,0 +1,2 @@
1
+ export declare const createThrottleRAF: () => (fn: () => void) => void;
2
+ export type ThrottleRAF = (fn: () => void) => void;
package/view/base.d.ts CHANGED
@@ -1,8 +1,10 @@
1
- import { ChangeDetectorRef, ElementRef, OnDestroy, OnInit } from '@angular/core';
1
+ import { ChangeDetectorRef, ElementRef, OnDestroy, OnInit, ViewContainerRef } from '@angular/core';
2
2
  import { AngularEditor } from '../plugins/angular-editor';
3
3
  import { SlateViewContext, SlateElementContext, SlateTextContext, SlateLeafContext } from './context';
4
- import { Descendant, Element, Range, Text } from 'slate';
4
+ import { Descendant, Element, Path, Range, Text } from 'slate';
5
5
  import { SlateChildrenContext } from './context';
6
+ import { ListRender } from './render/list-render';
7
+ import { LeavesRender } from './render/leaves-render';
6
8
  import * as i0 from "@angular/core";
7
9
  /**
8
10
  * base class for template
@@ -50,15 +52,19 @@ export declare class BaseLeafComponent extends BaseComponent<SlateLeafContext> i
50
52
  * base class for custom element component
51
53
  */
52
54
  export declare class BaseElementComponent<T extends Element = Element, K extends AngularEditor = AngularEditor> extends BaseComponent<SlateElementContext<T>, K> implements OnInit, OnDestroy {
55
+ viewContainerRef: ViewContainerRef;
53
56
  initialized: boolean;
54
57
  childrenContext: SlateChildrenContext;
55
58
  get element(): T;
56
59
  get selection(): Range;
60
+ get path(): Path;
57
61
  get decorations(): Range[];
58
62
  get children(): Descendant[];
59
63
  get isCollapsed(): boolean;
60
64
  get isCollapsedAndNonReadonly(): boolean;
61
65
  get readonly(): boolean;
66
+ getOutletElement: () => any;
67
+ listRender: ListRender;
62
68
  ngOnInit(): void;
63
69
  updateWeakMap(): void;
64
70
  ngOnDestroy(): void;
@@ -72,7 +78,10 @@ export declare class BaseElementComponent<T extends Element = Element, K extends
72
78
  */
73
79
  export declare class BaseTextComponent<T extends Text = Text> extends BaseComponent<SlateTextContext<T>> implements OnInit, OnDestroy {
74
80
  initialized: boolean;
81
+ viewContainerRef: ViewContainerRef;
75
82
  get text(): T;
83
+ leavesRender: LeavesRender;
84
+ getOutletElement: () => any;
76
85
  ngOnInit(): void;
77
86
  updateWeakMap(): void;
78
87
  ngOnDestroy(): void;
@@ -1,5 +1,5 @@
1
1
  import { ComponentRef, EmbeddedViewRef, ViewContainerRef } from '@angular/core';
2
- import { SlateBlockCardComponent } from '../components/block-card/block-card.component';
2
+ import { SlateBlockCard } from '../components/block-card/block-card.component';
3
3
  import { ViewType } from '../types/view';
4
4
  import { BaseComponent, BaseEmbeddedView } from './base';
5
5
  import { SlateElementContext, SlateLeafContext, SlateStringContext, SlateTextContext, SlateViewContext } from './context';
@@ -14,7 +14,7 @@ export declare abstract class ViewContainerItem<T = SlateElementContext | SlateT
14
14
  initialized: boolean;
15
15
  embeddedViewRef: EmbeddedViewRef<BaseEmbeddedView<T>>;
16
16
  embeddedViewContext: BaseEmbeddedView<T>;
17
- blockCardComponentRef: ComponentRef<SlateBlockCardComponent>;
17
+ blockCardComponentRef: ComponentRef<SlateBlockCard>;
18
18
  componentRef: ComponentRef<K>;
19
19
  viewType: ViewType;
20
20
  viewContext: SlateViewContext;
@@ -1,22 +1,18 @@
1
- import { AfterViewInit, ElementRef, IterableChangeRecord, IterableDiffers, QueryList } from '@angular/core';
1
+ import { ElementRef, IterableDiffers } from '@angular/core';
2
2
  import { SlateViewContext } from './context';
3
3
  import { ViewContainerItem } from './container-item';
4
4
  import * as i0 from "@angular/core";
5
5
  /**
6
+ * @deprecated
6
7
  * the special container for angular template
7
8
  * Add the rootNodes of each child component to the parentElement
8
9
  * Remove useless DOM elements, eg: comment...
9
10
  */
10
- export declare abstract class ViewContainer<T extends ViewContainerItem> implements AfterViewInit {
11
+ export declare abstract class ViewContainer<T extends ViewContainerItem> {
11
12
  protected elementRef: ElementRef<any>;
12
13
  protected differs: IterableDiffers;
13
- abstract childrenComponent: QueryList<T>;
14
14
  viewContext: SlateViewContext;
15
15
  constructor(elementRef: ElementRef<any>, differs: IterableDiffers);
16
- ngAfterViewInit(): void;
17
- getPreviousRootNode(currentIndex: any): any;
18
- createFragment(): DocumentFragment;
19
- handleContainerItemChange(record: IterableChangeRecord<T>, parentElement: HTMLElement): void;
20
16
  static ɵfac: i0.ɵɵFactoryDeclaration<ViewContainer<any>, never>;
21
17
  static ɵdir: i0.ɵɵDirectiveDeclaration<ViewContainer<any>, never, never, { "viewContext": { "alias": "viewContext"; "required": false; }; }, {}, never, never, false, never>;
22
18
  }
package/view/context.d.ts CHANGED
@@ -1,10 +1,15 @@
1
- import { NodeEntry, Range, Element, Ancestor, Text } from 'slate';
2
- import { SlateStringTemplateComponent } from '../components/string/template.component';
1
+ import { NodeEntry, Range, Element, Ancestor, Text, Path } from 'slate';
2
+ import { SlateStringTemplate } from '../components/string/template.component';
3
3
  import { AngularEditor } from '../plugins/angular-editor';
4
- import { ViewType } from '../types/view';
4
+ import { ComponentType, ViewType } from '../types/view';
5
+ import { BaseElementComponent, BaseLeafComponent, BaseTextComponent } from './base';
5
6
  export interface SlateViewContext<T extends AngularEditor = AngularEditor> {
6
7
  editor: T;
7
- templateComponent: SlateStringTemplateComponent;
8
+ templateComponent: SlateStringTemplate;
9
+ defaultElement: ComponentType<BaseElementComponent>;
10
+ defaultText: ComponentType<BaseTextComponent>;
11
+ defaultVoidText: ComponentType<BaseTextComponent>;
12
+ defaultLeaf: ComponentType<BaseLeafComponent>;
8
13
  trackBy: (element: Element) => any;
9
14
  renderElement?: (element: Element) => ViewType;
10
15
  renderLeaf?: (text: Text) => ViewType;
@@ -21,6 +26,7 @@ export interface SlateChildrenContext {
21
26
  export interface SlateElementContext<T extends Element = Element> {
22
27
  element: T;
23
28
  selection: Range | null;
29
+ path: Path;
24
30
  decorations: Range[];
25
31
  attributes: SlateElementAttributes;
26
32
  decorate: (entry: NodeEntry) => Range[];
@@ -0,0 +1,20 @@
1
+ import { ViewContainerRef } from '@angular/core';
2
+ import { ViewType } from '../../types/view';
3
+ import { SlateLeafContext, SlateTextContext, SlateViewContext } from '../context';
4
+ export declare class LeavesRender {
5
+ private viewContext;
6
+ private viewContainerRef;
7
+ private getOutletElement;
8
+ private leaves;
9
+ private views;
10
+ private contexts;
11
+ private viewTypes;
12
+ private differ;
13
+ constructor(viewContext: SlateViewContext, viewContainerRef: ViewContainerRef, getOutletElement: () => HTMLElement);
14
+ initialize(context: SlateTextContext): void;
15
+ update(context: SlateTextContext): void;
16
+ private getLeaves;
17
+ }
18
+ export declare function getContext(index: number, leafContexts: SlateLeafContext[]): SlateLeafContext;
19
+ export declare function getViewType(leafContext: SlateLeafContext, viewContext: SlateViewContext): ViewType;
20
+ export declare function trackBy(viewContext: SlateViewContext): (index: any, node: any) => any;
@@ -0,0 +1,31 @@
1
+ import { Ancestor, Descendant, Range, Path } from 'slate';
2
+ import { ComponentRef, EmbeddedViewRef, ViewContainerRef } from '@angular/core';
3
+ import { ViewType } from '../../types/view';
4
+ import { SlateChildrenContext, SlateElementContext, SlateTextContext, SlateViewContext } from '../context';
5
+ import { SlateBlockCard } from '../../components/block-card/block-card.component';
6
+ export declare class ListRender {
7
+ private viewContext;
8
+ private viewContainerRef;
9
+ private getOutletElement;
10
+ private children;
11
+ private views;
12
+ private blockCards;
13
+ private contexts;
14
+ private viewTypes;
15
+ private differ;
16
+ initialized: boolean;
17
+ constructor(viewContext: SlateViewContext, viewContainerRef: ViewContainerRef, getOutletElement: () => HTMLElement);
18
+ initialize(children: Descendant[], parent: Ancestor, parentPath: Path, childrenContext: SlateChildrenContext): void;
19
+ update(children: Descendant[], parent: Ancestor, parentPath: Path, childrenContext: SlateChildrenContext): void;
20
+ }
21
+ export declare function getContext(index: number, item: Descendant, parentPath: Path, childrenContext: SlateChildrenContext, viewContext: SlateViewContext): SlateElementContext | SlateTextContext;
22
+ export declare function getCommonContext(index: number, item: Descendant, parentPath: Path, viewContext: SlateViewContext, childrenContext: SlateChildrenContext): {
23
+ selection: Range;
24
+ decorations: Range[];
25
+ };
26
+ export declare function getViewType(item: Descendant, parent: Ancestor, viewContext: SlateViewContext): ViewType;
27
+ export declare function createBlockCard(item: Descendant, view: EmbeddedViewRef<any> | ComponentRef<any>, viewContainerRef: ViewContainerRef, viewContext: SlateViewContext): ComponentRef<SlateBlockCard>;
28
+ export declare function trackBy(viewContext: SlateViewContext): (index: any, node: any) => any;
29
+ export declare function memoizedContext(viewContext: SlateViewContext, descendant: Descendant, prev: SlateElementContext | SlateTextContext, next: SlateElementContext | SlateTextContext): boolean;
30
+ export declare function memoizedElementContext(viewContext: SlateViewContext, prev: SlateElementContext, next: SlateElementContext): boolean;
31
+ export declare function memoizedTextContext(prev: SlateTextContext, next: SlateTextContext): boolean;
@@ -0,0 +1,11 @@
1
+ import { Descendant } from 'slate';
2
+ import { ComponentRef, EmbeddedViewRef, ViewContainerRef } from '@angular/core';
3
+ import { ViewType } from '../../types/view';
4
+ import { SlateElementContext, SlateLeafContext, SlateTextContext, SlateViewContext } from '../context';
5
+ import { SlateBlockCard } from '../../components/block-card/block-card.component';
6
+ export declare function createEmbeddedViewOrComponent(viewType: ViewType, context: any, viewContext: SlateViewContext, viewContainerRef: ViewContainerRef): EmbeddedViewRef<any> | ComponentRef<any>;
7
+ export declare function renderView(view: EmbeddedViewRef<any> | ComponentRef<any>): void;
8
+ export declare function updateContext(view: EmbeddedViewRef<any> | ComponentRef<any>, newContext: SlateElementContext | SlateTextContext | SlateLeafContext, viewContext: SlateViewContext): void;
9
+ export declare function mount(views: (EmbeddedViewRef<any> | ComponentRef<any>)[], blockCards: (ComponentRef<SlateBlockCard> | null)[] | null, outletElement: HTMLElement): void;
10
+ export declare function getRootNodes(ref: EmbeddedViewRef<any> | ComponentRef<any>, blockCard?: ComponentRef<SlateBlockCard>): HTMLElement[];
11
+ export declare function mountOnItemChange(index: number, item: Descendant, views: (EmbeddedViewRef<any> | ComponentRef<any>)[], blockCards: (ComponentRef<SlateBlockCard> | null)[] | null, outletElement: HTMLElement, viewContext: SlateViewContext): void;
@@ -1,35 +0,0 @@
1
- import { OnChanges, OnInit, ViewContainerRef } from '@angular/core';
2
- import { ViewContainerItem } from '../../view/container-item';
3
- import { Descendant, Range } from 'slate';
4
- import { SlateChildrenContext, SlateElementContext, SlateTextContext, SlateViewContext } from '../../view/context';
5
- import { BaseElementComponent, BaseTextComponent } from '../../view/base';
6
- import { ComponentType, ViewType } from '../../types/view';
7
- import * as i0 from "@angular/core";
8
- export declare class SlateDescendantComponent extends ViewContainerItem<SlateElementContext | SlateTextContext, BaseElementComponent | BaseTextComponent> implements OnInit, OnChanges {
9
- protected viewContainerRef: ViewContainerRef;
10
- defaultElementComponentType: ComponentType<BaseElementComponent>;
11
- descendant: Descendant;
12
- context: SlateChildrenContext;
13
- viewContext: SlateViewContext;
14
- index: number;
15
- get rootNodes(): HTMLElement[];
16
- get isBlockCard(): boolean;
17
- constructor(viewContainerRef: ViewContainerRef, defaultElementComponentType: ComponentType<BaseElementComponent>);
18
- ngOnInit(): void;
19
- destroyView(): void;
20
- ngOnChanges(): void;
21
- destroyBlockCard(): void;
22
- createBlockCard(): void;
23
- updateBlockCard(): void;
24
- getCommonContext(): {
25
- selection: Range;
26
- decorations: Range[];
27
- };
28
- getContext(): SlateElementContext | SlateTextContext;
29
- getViewType(): ViewType;
30
- memoizedElementContext(prev: SlateElementContext, next: SlateElementContext): boolean;
31
- memoizedTextContext(prev: SlateTextContext, next: SlateTextContext): boolean;
32
- memoizedContext(prev: SlateElementContext | SlateTextContext, next: SlateElementContext | SlateTextContext): boolean;
33
- static ɵfac: i0.ɵɵFactoryDeclaration<SlateDescendantComponent, never>;
34
- static ɵcmp: i0.ɵɵComponentDeclaration<SlateDescendantComponent, "slate-descendant", never, { "descendant": { "alias": "descendant"; "required": false; }; "context": { "alias": "context"; "required": false; }; "viewContext": { "alias": "viewContext"; "required": false; }; "index": { "alias": "index"; "required": false; }; }, {}, never, never, false, never>;
35
- }
@@ -1,16 +0,0 @@
1
- import { OnChanges, OnInit, SimpleChanges } from '@angular/core';
2
- import { ViewContainerItem } from '../../view/container-item';
3
- import { SlateLeafContext } from '../../view/context';
4
- import { BaseLeafComponent } from '../../view/base';
5
- import { ViewType } from '../../types/view';
6
- import * as i0 from "@angular/core";
7
- export declare class SlateLeafComponent extends ViewContainerItem<SlateLeafContext, BaseLeafComponent> implements OnInit, OnChanges {
8
- context: SlateLeafContext;
9
- ngOnInit(): void;
10
- getContext(): SlateLeafContext;
11
- getViewType(): ViewType;
12
- memoizedContext(prev: SlateLeafContext, next: SlateLeafContext): boolean;
13
- ngOnChanges(simpleChanges: SimpleChanges): void;
14
- static ɵfac: i0.ɵɵFactoryDeclaration<SlateLeafComponent, never>;
15
- static ɵcmp: i0.ɵɵComponentDeclaration<SlateLeafComponent, "slate-leaf", never, { "context": { "alias": "context"; "required": false; }; }, {}, never, never, false, never>;
16
- }
@@ -1,185 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Inject, Input } from '@angular/core';
2
- import { SlateBlockCardComponent } from '../block-card/block-card.component';
3
- import { ViewContainerItem } from '../../view/container-item';
4
- import { Editor, Range, Element } from 'slate';
5
- import { AngularEditor } from '../../plugins/angular-editor';
6
- import { NODE_TO_INDEX, NODE_TO_PARENT } from '../../utils/weak-maps';
7
- import { SlateDefaultTextComponent } from '../text/default-text.component';
8
- import { SlateVoidTextComponent } from '../text/void-text.component';
9
- import { isDecoratorRangeListEqual } from '../../utils';
10
- import { SlateErrorCode } from '../../types';
11
- import { SLATE_DEFAULT_ELEMENT_COMPONENT_TOKEN } from '../element/default-element.component.token';
12
- import * as i0 from "@angular/core";
13
- export class SlateDescendantComponent extends ViewContainerItem {
14
- get rootNodes() {
15
- if (this.blockCardComponentRef) {
16
- return [this.blockCardComponentRef.instance.nativeElement];
17
- }
18
- return super.getRootNodes();
19
- }
20
- get isBlockCard() {
21
- return this.viewContext.editor.isBlockCard(this.descendant);
22
- }
23
- constructor(viewContainerRef, defaultElementComponentType) {
24
- super(viewContainerRef);
25
- this.viewContainerRef = viewContainerRef;
26
- this.defaultElementComponentType = defaultElementComponentType;
27
- }
28
- ngOnInit() {
29
- NODE_TO_INDEX.set(this.descendant, this.index);
30
- NODE_TO_PARENT.set(this.descendant, this.context.parent);
31
- this.createView();
32
- if (this.isBlockCard) {
33
- this.createBlockCard();
34
- }
35
- }
36
- destroyView() {
37
- super.destroyView();
38
- this.destroyBlockCard();
39
- }
40
- ngOnChanges() {
41
- if (!this.initialized) {
42
- return;
43
- }
44
- NODE_TO_INDEX.set(this.descendant, this.index);
45
- NODE_TO_PARENT.set(this.descendant, this.context.parent);
46
- this.updateView();
47
- if (this.isBlockCard) {
48
- this.updateBlockCard();
49
- }
50
- }
51
- destroyBlockCard() {
52
- if (this.blockCardComponentRef) {
53
- this.blockCardComponentRef.destroy();
54
- this.blockCardComponentRef = null;
55
- }
56
- }
57
- createBlockCard() {
58
- const rootNodes = this.rootNodes;
59
- this.blockCardComponentRef = this.viewContainerRef.createComponent(SlateBlockCardComponent);
60
- this.blockCardComponentRef.instance.initializeCenter(rootNodes);
61
- }
62
- updateBlockCard() {
63
- if (this.blockCardComponentRef) {
64
- return;
65
- }
66
- const rootNodes = this.rootNodes;
67
- this.createBlockCard();
68
- const firstRootNode = rootNodes[0];
69
- firstRootNode.replaceWith(this.blockCardComponentRef.instance.nativeElement);
70
- }
71
- getCommonContext() {
72
- const path = AngularEditor.findPath(this.viewContext.editor, this.context.parent);
73
- const p = path.concat(this.index);
74
- try {
75
- const range = Editor.range(this.viewContext.editor, p);
76
- const sel = this.context.selection && Range.intersection(range, this.context.selection);
77
- const ds = this.context.decorate([this.descendant, p]);
78
- for (const dec of this.context.decorations) {
79
- const d = Range.intersection(dec, range);
80
- if (d) {
81
- ds.push(d);
82
- }
83
- }
84
- return { selection: sel, decorations: ds };
85
- }
86
- catch (error) {
87
- this.viewContext.editor.onError({
88
- code: SlateErrorCode.GetStartPointError,
89
- nativeError: error
90
- });
91
- return { selection: null, decorations: [] };
92
- }
93
- }
94
- getContext() {
95
- if (Element.isElement(this.descendant)) {
96
- const computedContext = this.getCommonContext();
97
- const key = AngularEditor.findKey(this.viewContext.editor, this.descendant);
98
- const isInline = this.viewContext.editor.isInline(this.descendant);
99
- const isVoid = this.viewContext.editor.isVoid(this.descendant);
100
- const elementContext = {
101
- element: this.descendant,
102
- ...computedContext,
103
- attributes: {
104
- 'data-slate-node': 'element',
105
- 'data-slate-key': key.id
106
- },
107
- decorate: this.context.decorate,
108
- readonly: this.context.readonly
109
- };
110
- if (isInline) {
111
- elementContext.attributes['data-slate-inline'] = true;
112
- }
113
- if (isVoid) {
114
- elementContext.attributes['data-slate-void'] = true;
115
- elementContext.attributes.contenteditable = false;
116
- }
117
- return elementContext;
118
- }
119
- else {
120
- const computedContext = this.getCommonContext();
121
- const isLeafBlock = AngularEditor.isLeafBlock(this.viewContext.editor, this.context.parent);
122
- const textContext = {
123
- decorations: computedContext.decorations,
124
- isLast: isLeafBlock && this.index === this.context.parent.children.length - 1,
125
- parent: this.context.parent,
126
- text: this.descendant
127
- };
128
- return textContext;
129
- }
130
- }
131
- getViewType() {
132
- if (Element.isElement(this.descendant)) {
133
- return (this.viewContext.renderElement && this.viewContext.renderElement(this.descendant)) || this.defaultElementComponentType;
134
- }
135
- else {
136
- const isVoid = this.viewContext.editor.isVoid(this.context.parent);
137
- return isVoid
138
- ? SlateVoidTextComponent
139
- : (this.viewContext.renderText && this.viewContext.renderText(this.descendant)) || SlateDefaultTextComponent;
140
- }
141
- }
142
- memoizedElementContext(prev, next) {
143
- return (prev.element === next.element &&
144
- (!this.viewContext.isStrictDecorate || prev.decorate === next.decorate) &&
145
- prev.readonly === next.readonly &&
146
- isDecoratorRangeListEqual(prev.decorations, next.decorations) &&
147
- (prev.selection === next.selection || (!!prev.selection && !!next.selection && Range.equals(prev.selection, next.selection))));
148
- }
149
- memoizedTextContext(prev, next) {
150
- return (next.parent === prev.parent &&
151
- next.isLast === prev.isLast &&
152
- next.text === prev.text &&
153
- isDecoratorRangeListEqual(next.decorations, prev.decorations));
154
- }
155
- memoizedContext(prev, next) {
156
- if (Element.isElement(this.descendant)) {
157
- return this.memoizedElementContext(prev, next);
158
- }
159
- else {
160
- return this.memoizedTextContext(prev, next);
161
- }
162
- }
163
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SlateDescendantComponent, deps: [{ token: i0.ViewContainerRef }, { token: SLATE_DEFAULT_ELEMENT_COMPONENT_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
164
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: SlateDescendantComponent, selector: "slate-descendant", inputs: { descendant: "descendant", context: "context", viewContext: "viewContext", index: "index" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
165
- }
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SlateDescendantComponent, decorators: [{
167
- type: Component,
168
- args: [{
169
- selector: 'slate-descendant',
170
- template: '',
171
- changeDetection: ChangeDetectionStrategy.OnPush
172
- }]
173
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: undefined, decorators: [{
174
- type: Inject,
175
- args: [SLATE_DEFAULT_ELEMENT_COMPONENT_TOKEN]
176
- }] }]; }, propDecorators: { descendant: [{
177
- type: Input
178
- }], context: [{
179
- type: Input
180
- }], viewContext: [{
181
- type: Input
182
- }], index: [{
183
- type: Input
184
- }] } });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY2VuZGFudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy9kZXNjZW5kYW50L2Rlc2NlbmRhbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFDdkgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRTNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOztBQU9uRyxNQUFNLE9BQU8sd0JBQ1QsU0FBUSxpQkFBbUc7SUFXM0csSUFBSSxTQUFTO1FBQ1QsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDOUQ7UUFDRCxPQUFPLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNo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MEJRLE1BQU07MkJBQUMscUNBQXFDOzRDQXJCeEMsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2xhdGVCbG9ja0NhcmRDb21wb25lbnQgfSBmcm9tICcuLi9ibG9jay1jYXJkL2Jsb2NrLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IFZpZXdDb250YWluZXJJdGVtIH0gZnJvbSAnLi4vLi4vdmlldy9jb250YWluZXItaXRlbSc7XG5pbXBvcnQgeyBEZXNjZW5kYW50LCBFZGl0b3IsIFJhbmdlLCBFbGVtZW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgU2xhdGVDaGlsZHJlbkNvbnRleHQsIFNsYXRlRWxlbWVudENvbnRleHQsIFNsYXRlVGV4dENvbnRleHQsIFNsYXRlVmlld0NvbnRleHQgfSBmcm9tICcuLi8uLi92aWV3L2NvbnRleHQnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciB9IGZyb20gJy4uLy4uL3BsdWdpbnMvYW5ndWxhci1lZGl0b3InO1xuaW1wb3J0IHsgTk9ERV9UT19JTkRFWCwgTk9ERV9UT19QQVJFTlQgfSBmcm9tICcuLi8uLi91dGlscy93ZWFrLW1hcHMnO1xuaW1wb3J0IHsgQmFzZUVsZW1lbnRDb21wb25lbnQsIEJhc2VUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdmlldy9iYXNlJztcbmltcG9ydCB7IFNsYXRlRGVmYXVsdFRleHRDb21wb25lbnQgfSBmcm9tICcuLi90ZXh0L2RlZmF1bHQtdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2xhdGVWb2lkVGV4dENvbXBvbmVudCB9IGZyb20gJy4uL3RleHQvdm9pZC10ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpc0RlY29yYXRvclJhbmdlTGlzdEVxdWFsIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50VHlwZSwgVmlld1R5cGUgfSBmcm9tICcuLi8uLi90eXBlcy92aWV3JztcbmltcG9ydCB7IFNsYXRlRXJyb3JDb2RlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgU0xBVEVfREVGQVVMVF9FTEVNRU5UX0NPTVBPTkVOVF9UT0tFTiB9IGZyb20gJy4uL2VsZW1lbnQvZGVmYXVsdC1lbGVtZW50LmNvbXBvbmVudC50b2tlbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2xhdGUtZGVzY2VuZGFudCcsXG4gICAgdGVtcGxhdGU6ICcnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNsYXRlRGVzY2VuZGFudENvbXBvbmVudFxuICAgIGV4dGVuZHMgVmlld0NvbnRhaW5lckl0ZW08U2xhdGVFbGVtZW50Q29udGV4dCB8IFNsYXRlVGV4dENvbnRleHQsIEJhc2VFbGVtZW50Q29tcG9uZW50IHwgQmFzZVRleHRDb21wb25lbnQ+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlc1xue1xuICAgIEBJbnB1dCgpIGRlc2NlbmRhbnQ6IERlc2NlbmRhbnQ7XG5cbiAgICBASW5wdXQoKSBjb250ZXh0OiBTbGF0ZUNoaWxkcmVuQ29udGV4dDtcblxuICAgIEBJbnB1dCgpIHZpZXdDb250ZXh0OiBTbGF0ZVZpZXdDb250ZXh0O1xuXG4gICAgQElucHV0KCkgaW5kZXg6IG51bWJlcjtcblxuICAgIGdldCByb290Tm9kZXMoKTogSFRNTEVsZW1lbnRbXSB7XG4gICAgICAgIGlmICh0aGlzLmJsb2NrQ2FyZENvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgcmV0dXJuIFt0aGlzLmJsb2NrQ2FyZENvbXBvbmVudFJlZi5pbnN0YW5jZS5uYXRpdmVFbGVtZW50XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0Um9vdE5vZGVzKCk7XG4gICAgfVxuXG4gICAgZ2V0IGlzQmxvY2tDYXJkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3Q29udGV4dC5lZGl0b3IuaXNCbG9ja0NhcmQodGhpcy5kZXNjZW5kYW50KTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIEBJbmplY3QoU0xBVEVfREVGQVVMVF9FTEVNRU5UX0NPTVBPTkVOVF9UT0tFTilcbiAgICAgICAgcHVibGljIGRlZmF1bHRFbGVtZW50Q29tcG9uZW50VHlwZTogQ29tcG9uZW50VHlwZTxCYXNlRWxlbWVudENvbXBvbmVudD5cbiAgICApIHtcbiAgICAgICAgc3VwZXIodmlld0NvbnRhaW5lclJlZik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIE5PREVfVE9fSU5ERVguc2V0KHRoaXMuZGVzY2VuZGFudCwgdGhpcy5pbmRleCk7XG4gICAgICAgIE5PREVfVE9fUEFSRU5ULnNldCh0aGlzLmRlc2NlbmRhbnQsIHRoaXMuY29udGV4dC5wYXJlbnQpO1xuICAgICAgICB0aGlzLmNyZWF0ZVZpZXcoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNCbG9ja0NhcmQpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlQmxvY2tDYXJkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95VmlldygpIHtcbiAgICAgICAgc3VwZXIuZGVzdHJveVZpZXcoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95QmxvY2tDYXJkKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoKSB7XG4gICAgICAgIGlmICghdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE5PREVfVE9fSU5ERVguc2V0KHRoaXMuZGVzY2VuZGFudCwgdGhpcy5pbmRleCk7XG4gICAgICAgIE5PREVfVE9fUEFSRU5ULnNldCh0aGlzLmRlc2NlbmRhbnQsIHRoaXMuY29udGV4dC5wYXJlbnQpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZpZXcoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNCbG9ja0NhcmQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQmxvY2tDYXJkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95QmxvY2tDYXJkKCkge1xuICAgICAgICBpZiAodGhpcy5ibG9ja0NhcmRDb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuYmxvY2tDYXJkQ29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuYmxvY2tDYXJkQ29tcG9uZW50UmVmID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZUJsb2NrQ2FyZCgpIHtcbiAgICAgICAgY29uc3Qgcm9vdE5vZGVzID0gdGhpcy5yb290Tm9kZXM7XG4gICAgICAgIHRoaXMuYmxvY2tDYXJkQ29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudDxTbGF0ZUJsb2NrQ2FyZENvbXBvbmVudD4oU2xhdGVCbG9ja0NhcmRDb21wb25lbnQpO1xuICAgICAgICB0aGlzLmJsb2NrQ2FyZENvbXBvbmVudFJlZi5pbnN0YW5jZS5pbml0aWFsaXplQ2VudGVyKHJvb3ROb2Rlcyk7XG4gICAgfVxuXG4gICAgdXBkYXRlQmxvY2tDYXJkKCkge1xuICAgICAgICBpZiAodGhpcy5ibG9ja0NhcmRDb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByb290Tm9kZXMgPSB0aGlzLnJvb3ROb2RlcztcbiAgICAgICAgdGhpcy5jcmVhdGVCbG9ja0NhcmQoKTtcbiAgICAgICAgY29uc3QgZmlyc3RSb290Tm9kZSA9IHJvb3ROb2Rlc1swXTtcbiAgICAgICAgZmlyc3RSb290Tm9kZS5yZXBsYWNlV2l0aCh0aGlzLmJsb2NrQ2FyZENvbXBvbmVudFJlZi5pbnN0YW5jZS5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBnZXRDb21tb25Db250ZXh0KCk6IHsgc2VsZWN0aW9uOiBSYW5nZTsgZGVjb3JhdGlvbnM6IFJhbmdlW10gfSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKHRoaXMudmlld0NvbnRleHQuZWRpdG9yLCB0aGlzLmNvbnRleHQucGFyZW50KTtcbiAgICAgICAgY29uc3QgcCA9IHBhdGguY29uY2F0KHRoaXMuaW5kZXgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBFZGl0b3IucmFuZ2UodGhpcy52aWV3Q29udGV4dC5lZGl0b3IsIHApO1xuICAgICAgICAgICAgY29uc3Qgc2VsID0gdGhpcy5jb250ZXh0LnNlbGVjdGlvbiAmJiBSYW5nZS5pbnRlcnNlY3Rpb24ocmFuZ2UsIHRoaXMuY29udGV4dC5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgY29uc3QgZHMgPSB0aGlzLmNvbnRleHQuZGVjb3JhdGUoW3RoaXMuZGVzY2VuZGFudCwgcF0pO1xuICAgICAgICAgICAgZm9yIChjb25zdCBkZWMgb2YgdGhpcy5jb250ZXh0LmRlY29yYXRpb25zKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IFJhbmdlLmludGVyc2VjdGlvbihkZWMsIHJhbmdlKTtcbiAgICAgICAgICAgICAgICBpZiAoZCkge1xuICAgICAgICAgICAgICAgICAgICBkcy5wdXNoKGQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IHNlbGVjdGlvbjogc2VsLCBkZWNvcmF0aW9uczogZHMgfTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRleHQuZWRpdG9yLm9uRXJyb3Ioe1xuICAgICAgICAgICAgICAgIGNvZGU6IFNsYXRlRXJyb3JDb2RlLkdldFN0YXJ0UG9pbnRFcnJvcixcbiAgICAgICAgICAgICAgICBuYXRpdmVFcnJvcjogZXJyb3JcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHsgc2VsZWN0aW9uOiBudWxsLCBkZWNvcmF0aW9uczogW10gfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldENvbnRleHQoKTogU2xhdGVFbGVtZW50Q29udGV4dCB8IFNsYXRlVGV4dENvbnRleHQge1xuICAgICAgICBpZiAoRWxlbWVudC5pc0VsZW1lbnQodGhpcy5kZXNjZW5kYW50KSkge1xuICAgICAgICAgICAgY29uc3QgY29tcHV0ZWRDb250ZXh0ID0gdGhpcy5nZXRDb21tb25Db250ZXh0KCk7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBBbmd1bGFyRWRpdG9yLmZpbmRLZXkodGhpcy52aWV3Q29udGV4dC5lZGl0b3IsIHRoaXMuZGVzY2VuZGFudCk7XG4gICAgICAgICAgICBjb25zdCBpc0lubGluZSA9IHRoaXMudmlld0NvbnRleHQuZWRpdG9yLmlzSW5saW5lKHRoaXMuZGVzY2VuZGFudCk7XG4gICAgICAgICAgICBjb25zdCBpc1ZvaWQgPSB0aGlzLnZpZXdDb250ZXh0LmVkaXRvci5pc1ZvaWQodGhpcy5kZXNjZW5kYW50KTtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRDb250ZXh0OiBTbGF0ZUVsZW1lbnRDb250ZXh0ID0ge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHRoaXMuZGVzY2VuZGFudCxcbiAgICAgICAgICAgICAgICAuLi5jb21wdXRlZENvbnRleHQsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgICAgICAnZGF0YS1zbGF0ZS1ub2RlJzogJ2VsZW1lbnQnLFxuICAgICAgICAgICAgICAgICAgICAnZGF0YS1zbGF0ZS1rZXknOiBrZXkuaWRcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGRlY29yYXRlOiB0aGlzLmNvbnRleHQuZGVjb3JhdGUsXG4gICAgICAgICAgICAgICAgcmVhZG9ubHk6IHRoaXMuY29udGV4dC5yZWFkb25seVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChpc0lubGluZSkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnRDb250ZXh0LmF0dHJpYnV0ZXNbJ2RhdGEtc2xhdGUtaW5saW5lJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzVm9pZCkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnRDb250ZXh0LmF0dHJpYnV0ZXNbJ2RhdGEtc2xhdGUtdm9pZCddID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBlbGVtZW50Q29udGV4dC5hdHRyaWJ1dGVzLmNvbnRlbnRlZGl0YWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRDb250ZXh0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY29tcHV0ZWRDb250ZXh0ID0gdGhpcy5nZXRDb21tb25Db250ZXh0KCk7XG4gICAgICAgICAgICBjb25zdCBpc0xlYWZCbG9jayA9IEFuZ3VsYXJFZGl0b3IuaXNMZWFmQmxvY2sodGhpcy52aWV3Q29udGV4dC5lZGl0b3IsIHRoaXMuY29udGV4dC5wYXJlbnQpO1xuICAgICAgICAgICAgY29uc3QgdGV4dENvbnRleHQ6IFNsYXRlVGV4dENvbnRleHQgPSB7XG4gICAgICAgICAgICAgICAgZGVjb3JhdGlvbnM6IGNvbXB1dGVkQ29udGV4dC5kZWNvcmF0aW9ucyxcbiAgICAgICAgICAgICAgICBpc0xhc3Q6IGlzTGVhZkJsb2NrICYmIHRoaXMuaW5kZXggPT09IHRoaXMuY29udGV4dC5wYXJlbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMSxcbiAgICAgICAgICAgICAgICBwYXJlbnQ6IHRoaXMuY29udGV4dC5wYXJlbnQgYXMgRWxlbWVudCxcbiAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLmRlc2NlbmRhbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gdGV4dENvbnRleHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRWaWV3VHlwZSgpOiBWaWV3VHlwZSB7XG4gICAgICAgIGlmIChFbGVtZW50LmlzRWxlbWVudCh0aGlzLmRlc2NlbmRhbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gKHRoaXMudmlld0NvbnRleHQucmVuZGVyRWxlbWVudCAmJiB0aGlzLnZpZXdDb250ZXh0LnJlbmRlckVsZW1lbnQodGhpcy5kZXNjZW5kYW50KSkgfHwgdGhpcy5kZWZhdWx0RWxlbWVudENvbXBvbmVudFR5cGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpc1ZvaWQgPSB0aGlzLnZpZXdDb250ZXh0LmVkaXRvci5pc1ZvaWQodGhpcy5jb250ZXh0LnBhcmVudCBhcyBFbGVtZW50KTtcbiAgICAgICAgICAgIHJldHVybiBpc1ZvaWRcbiAgICAgICAgICAgICAgICA/IFNsYXRlVm9pZFRleHRDb21wb25lbnRcbiAgICAgICAgICAgICAgICA6ICh0aGlzLnZpZXdDb250ZXh0LnJlbmRlclRleHQgJiYgdGhpcy52aWV3Q29udGV4dC5yZW5kZXJUZXh0KHRoaXMuZGVzY2VuZGFudCkpIHx8IFNsYXRlRGVmYXVsdFRleHRDb21wb25lbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtZW1vaXplZEVsZW1lbnRDb250ZXh0KHByZXY6IFNsYXRlRWxlbWVudENvbnRleHQsIG5leHQ6IFNsYXRlRWxlbWVudENvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHByZXYuZWxlbWVudCA9PT0gbmV4dC5lbGVtZW50ICYmXG4gICAgICAgICAgICAoIXRoaXMudmlld0NvbnRleHQuaXNTdHJpY3REZWNvcmF0ZSB8fCBwcmV2LmRlY29yYXRlID09PSBuZXh0LmRlY29yYXRlKSAmJlxuICAgICAgICAgICAgcHJldi5yZWFkb25seSA9PT0gbmV4dC5yZWFkb25seSAmJlxuICAgICAgICAgICAgaXNEZWNvcmF0b3JSYW5nZUxpc3RFcXVhbChwcmV2LmRlY29yYXRpb25zLCBuZXh0LmRlY29yYXRpb25zKSAmJlxuICAgICAgICAgICAgKHByZXYuc2VsZWN0aW9uID09PSBuZXh0LnNlbGVjdGlvbiB8fCAoISFwcmV2LnNlbGVjdGlvbiAmJiAhIW5leHQuc2VsZWN0aW9uICYmIFJhbmdlLmVxdWFscyhwcmV2LnNlbGVjdGlvbiwgbmV4dC5zZWxlY3Rpb24pKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBtZW1vaXplZFRleHRDb250ZXh0KHByZXY6IFNsYXRlVGV4dENvbnRleHQsIG5leHQ6IFNsYXRlVGV4dENvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIG5leHQucGFyZW50ID09PSBwcmV2LnBhcmVudCAmJlxuICAgICAgICAgICAgbmV4dC5pc0xhc3QgPT09IHByZXYuaXNMYXN0ICYmXG4gICAgICAgICAgICBuZXh0LnRleHQgPT09IHByZXYudGV4dCAmJlxuICAgICAgICAgICAgaXNEZWNvcmF0b3JSYW5nZUxpc3RFcXVhbChuZXh0LmRlY29yYXRpb25zLCBwcmV2LmRlY29yYXRpb25zKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG1lbW9pemVkQ29udGV4dChwcmV2OiBTbGF0ZUVsZW1lbnRDb250ZXh0IHwgU2xhdGVUZXh0Q29udGV4dCwgbmV4dDogU2xhdGVFbGVtZW50Q29udGV4dCB8IFNsYXRlVGV4dENvbnRleHQpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKEVsZW1lbnQuaXNFbGVtZW50KHRoaXMuZGVzY2VuZGFudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1lbW9pemVkRWxlbWVudENvbnRleHQocHJldiBhcyBTbGF0ZUVsZW1lbnRDb250ZXh0LCBuZXh0IGFzIFNsYXRlRWxlbWVudENvbnRleHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVtb2l6ZWRUZXh0Q29udGV4dChwcmV2IGFzIFNsYXRlVGV4dENvbnRleHQsIG5leHQgYXMgU2xhdGVUZXh0Q29udGV4dCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -1,37 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
- import { ViewContainerItem } from '../../view/container-item';
3
- import { SlateDefaultLeafComponent } from './default-leaf.component';
4
- import * as i0 from "@angular/core";
5
- export class SlateLeafComponent extends ViewContainerItem {
6
- ngOnInit() {
7
- this.createView();
8
- }
9
- getContext() {
10
- return this.context;
11
- }
12
- getViewType() {
13
- return (this.viewContext.renderLeaf && this.viewContext.renderLeaf(this.context.leaf)) || SlateDefaultLeafComponent;
14
- }
15
- memoizedContext(prev, next) {
16
- return false;
17
- }
18
- ngOnChanges(simpleChanges) {
19
- if (!this.initialized) {
20
- return;
21
- }
22
- this.updateView();
23
- }
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SlateLeafComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
25
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: SlateLeafComponent, selector: "slate-leaf", inputs: { context: "context" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26
- }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SlateLeafComponent, decorators: [{
28
- type: Component,
29
- args: [{
30
- selector: 'slate-leaf',
31
- template: '',
32
- changeDetection: ChangeDetectionStrategy.OnPush
33
- }]
34
- }], propDecorators: { context: [{
35
- type: Input
36
- }] } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVhZi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy9sZWFmL2xlYWYuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUc5RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFRckUsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGlCQUFzRDtJQUcxRixRQUFRO1FBQ0osSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxVQUFVO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxXQUFXO1FBQ1AsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSx5QkFBeUIsQ0FBQztJQUN4SCxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQXNCLEVBQUUsSUFBc0I7UUFDMUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELFdBQVcsQ0FBQyxhQUE0QjtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNuQixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQzs4R0F4QlEsa0JBQWtCO2tHQUFsQixrQkFBa0IsOEhBSGpCLEVBQUU7OzJGQUdILGtCQUFrQjtrQkFMOUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEOzhCQUVZLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmlld0NvbnRhaW5lckl0ZW0gfSBmcm9tICcuLi8uLi92aWV3L2NvbnRhaW5lci1pdGVtJztcbmltcG9ydCB7IFNsYXRlTGVhZkNvbnRleHQgfSBmcm9tICcuLi8uLi92aWV3L2NvbnRleHQnO1xuaW1wb3J0IHsgQmFzZUxlYWZDb21wb25lbnQgfSBmcm9tICcuLi8uLi92aWV3L2Jhc2UnO1xuaW1wb3J0IHsgU2xhdGVEZWZhdWx0TGVhZkNvbXBvbmVudCB9IGZyb20gJy4vZGVmYXVsdC1sZWFmLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzL3ZpZXcnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NsYXRlLWxlYWYnLFxuICAgIHRlbXBsYXRlOiAnJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBTbGF0ZUxlYWZDb21wb25lbnQgZXh0ZW5kcyBWaWV3Q29udGFpbmVySXRlbTxTbGF0ZUxlYWZDb250ZXh0LCBCYXNlTGVhZkNvbXBvbmVudD4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgY29udGV4dDogU2xhdGVMZWFmQ29udGV4dDtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmNyZWF0ZVZpZXcoKTtcbiAgICB9XG5cbiAgICBnZXRDb250ZXh0KCk6IFNsYXRlTGVhZkNvbnRleHQge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0O1xuICAgIH1cblxuICAgIGdldFZpZXdUeXBlKCk6IFZpZXdUeXBlIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnZpZXdDb250ZXh0LnJlbmRlckxlYWYgJiYgdGhpcy52aWV3Q29udGV4dC5yZW5kZXJMZWFmKHRoaXMuY29udGV4dC5sZWFmKSkgfHwgU2xhdGVEZWZhdWx0TGVhZkNvbXBvbmVudDtcbiAgICB9XG5cbiAgICBtZW1vaXplZENvbnRleHQocHJldjogU2xhdGVMZWFmQ29udGV4dCwgbmV4dDogU2xhdGVMZWFmQ29udGV4dCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoc2ltcGxlQ2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoIXRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZVZpZXcoKTtcbiAgICB9XG59XG4iXX0=