Skip to content

Commit

Permalink
fix(core): resolve circle dep use inject token
Browse files Browse the repository at this point in the history
  • Loading branch information
pubuzhixing8 committed Sep 27, 2021
1 parent e59686d commit 593494c
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 6 deletions.
14 changes: 10 additions & 4 deletions packages/src/components/descendant/descendant.component.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
import { ChangeDetectionStrategy, Component, ComponentRef, Input, OnChanges, OnInit } from "@angular/core";
import { ChangeDetectionStrategy, Component, ComponentFactoryResolver, ComponentRef, Inject, Input, OnChanges, OnInit, ViewContainerRef } from "@angular/core";
import { SlateBlockCardComponent } from "../block-card/block-card.component";
import { ViewContainerItem } from '../../view/container-item';
import { Descendant, Editor, Range, Element } from "slate";
import { SlateChildrenContext, SlateElementContext, SlateTextContext, SlateViewContext } from "../../view/context";
import { AngularEditor } from "../../plugins/angular-editor";
import { NODE_TO_INDEX, NODE_TO_PARENT } from "../../utils/weak-maps";
import { SlateDefaultElementComponent } from "../element/default-element.component";
import { BaseElementComponent, BaseTextComponent } from "../../view/base";
import { SlateDefaultTextComponent } from "../text/default-text.component";
import { SlateVoidTextComponent } from "../text/void-text.component";
import { isDecoratorRangeListEqual } from "../../utils";
import { ViewType } from "../../types/view";
import { ComponentType, ViewType } from "../../types/view";
import { SlateErrorCode } from "../../types";
import { SLATE_DEFAULT_ELEMENT_COMPONENT_TOKEN } from "../element/default-element.component.token";

@Component({
selector: 'slate-descendant',
Expand Down Expand Up @@ -40,6 +40,12 @@ export class SlateDescendantComponent extends ViewContainerItem<SlateElementCont
return this.viewContext.editor.isBlockCard(this.descendant);
}

constructor(protected viewContainerRef: ViewContainerRef,
protected componentFactoryResolver: ComponentFactoryResolver,
@Inject(SLATE_DEFAULT_ELEMENT_COMPONENT_TOKEN) public defaultElementComponentType: ComponentType<BaseElementComponent>) {
super(viewContainerRef, componentFactoryResolver)
}

ngOnInit() {
NODE_TO_INDEX.set(this.descendant, this.index);
NODE_TO_PARENT.set(this.descendant, this.context.parent);
Expand Down Expand Up @@ -149,7 +155,7 @@ export class SlateDescendantComponent extends ViewContainerItem<SlateElementCont

getViewType(): ViewType {
if (Element.isElement(this.descendant)) {
return (this.viewContext.renderElement && this.viewContext.renderElement(this.descendant)) || SlateDefaultElementComponent;
return (this.viewContext.renderElement && this.viewContext.renderElement(this.descendant)) || this.defaultElementComponentType;
} else {
const isVoid = this.viewContext.editor.isVoid(this.context.parent as Element);
return isVoid ? SlateVoidTextComponent : (this.viewContext.renderText && this.viewContext.renderText(this.descendant)) || SlateDefaultTextComponent;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { InjectionToken } from "@angular/core";
import { ComponentType } from "../../types/view";
import { BaseElementComponent } from "../../view/base";

export const SLATE_DEFAULT_ELEMENT_COMPONENT_TOKEN = new InjectionToken<ComponentType<BaseElementComponent>>('slate-default-element-token');
11 changes: 9 additions & 2 deletions packages/src/module.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { NgModule } from '@angular/core';
import { forwardRef, NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { SlateEditableComponent } from './components/editable/editable.component';
import { SlateDefaultTextComponent } from './components/text/default-text.component';
Expand All @@ -13,6 +13,7 @@ import { SlateBlockCardComponent } from './components/block-card/block-card.comp
import { SlateLeafComponent } from './components/leaf/leaf.component';
import { SlateDefaultLeafComponent } from './components/leaf/default-leaf.component';
import { SlateLeavesComponent } from './components/leaves/leaves.component';
import { SLATE_DEFAULT_ELEMENT_COMPONENT_TOKEN } from './components/element/default-element.component.token';

@NgModule({
declarations: [
Expand All @@ -32,6 +33,12 @@ import { SlateLeavesComponent } from './components/leaves/leaves.component';
],
imports: [CommonModule],
entryComponents: [SlateBlockCardComponent, SlateStringComponent, SlateDefaultElementComponent, SlateDefaultLeafComponent, SlateVoidTextComponent, SlateDefaultTextComponent],
exports: [SlateEditableComponent, SlateChildrenComponent, SlateElementComponent, SlateLeavesComponent, SlateStringComponent]
exports: [SlateEditableComponent, SlateChildrenComponent, SlateElementComponent, SlateLeavesComponent, SlateStringComponent],
providers: [
{
provide: SLATE_DEFAULT_ELEMENT_COMPONENT_TOKEN,
useValue: SlateDefaultElementComponent
},
]
})
export class SlateModule { }

0 comments on commit 593494c

Please sign in to comment.