slate-angular 20.2.0-next.24 → 20.2.0-next.26

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.
@@ -957,6 +957,30 @@ const fallbackCopyText = async (text) => {
957
957
 
958
958
  const ELEMENT_KEY_TO_HEIGHTS = new WeakMap();
959
959
  const EDITOR_TO_BUSINESS_TOP = new WeakMap();
960
+ const measureHeightByElement = (editor, element) => {
961
+ const key = AngularEditor.findKey(editor, element);
962
+ const view = ELEMENT_TO_COMPONENT.get(element);
963
+ if (!view) {
964
+ return;
965
+ }
966
+ const ret = view.getRealHeight();
967
+ const heights = ELEMENT_KEY_TO_HEIGHTS.get(editor);
968
+ heights.set(key.id, ret);
969
+ return ret;
970
+ };
971
+ const measureHeightByIndics = (editor, indics, force = false) => {
972
+ let hasChanged = false;
973
+ indics.forEach((index, i) => {
974
+ const element = editor.children[index];
975
+ const preHeight = getRealHeightByElement(editor, element, 0);
976
+ if (preHeight && !force) {
977
+ return;
978
+ }
979
+ hasChanged = true;
980
+ measureHeightByElement(editor, element);
981
+ });
982
+ return hasChanged;
983
+ };
960
984
  const getBusinessTop = (editor) => {
961
985
  return EDITOR_TO_BUSINESS_TOP.get(editor) ?? 0;
962
986
  };
@@ -965,9 +989,6 @@ const getRealHeightByElement = (editor, element, defaultHeight = VIRTUAL_SCROLL_
965
989
  if (!isVisible) {
966
990
  return 0;
967
991
  }
968
- if (!element) {
969
- return defaultHeight;
970
- }
971
992
  const heights = ELEMENT_KEY_TO_HEIGHTS.get(editor);
972
993
  const key = AngularEditor.findKey(editor, element);
973
994
  const height = heights?.get(key.id);
@@ -3291,7 +3312,6 @@ class SlateEditable {
3291
3312
  const { preRenderingCount, childrenWithPreRendering } = this.handlePreRendering();
3292
3313
  this.listRender.update(childrenWithPreRendering, this.editor, this.context, preRenderingCount);
3293
3314
  }
3294
- this.tryMeasureInViewportChildrenHeights();
3295
3315
  }
3296
3316
  else {
3297
3317
  if (!this.listRender.initialized) {
@@ -3516,7 +3536,7 @@ class SlateEditable {
3516
3536
  if (isDebug && remeasureIndics.length > 0) {
3517
3537
  console.log('remeasure height by indics: ', remeasureIndics);
3518
3538
  }
3519
- this.remeasureHeightByIndics(remeasureIndics);
3539
+ measureHeightByIndics(this.editor, remeasureIndics, true);
3520
3540
  }
3521
3541
  updateContext() {
3522
3542
  const decorations = this.generateDecorations();
@@ -3604,7 +3624,7 @@ class SlateEditable {
3604
3624
  editorResizeObserverRectWidth = entries[0].contentRect.width;
3605
3625
  this.keyHeightMap.clear();
3606
3626
  const remeasureIndics = this.inViewportIndics;
3607
- this.remeasureHeightByIndics(remeasureIndics);
3627
+ measureHeightByIndics(this.editor, remeasureIndics);
3608
3628
  }
3609
3629
  });
3610
3630
  this.editorResizeObserver.observe(this.elementRef.nativeElement);
@@ -3634,12 +3654,18 @@ class SlateEditable {
3634
3654
  VirtualScrollDebugOverlay.log(doc, type, ...args);
3635
3655
  }
3636
3656
  handlePreRendering() {
3637
- let preRenderingCount = 0;
3657
+ let preRenderingCount = 1;
3638
3658
  const childrenWithPreRendering = [...this.inViewportChildren];
3639
3659
  if (this.inViewportIndics[0] !== 0) {
3640
- preRenderingCount = 1;
3641
3660
  childrenWithPreRendering.unshift(this.editor.children[this.inViewportIndics[0] - 1]);
3642
3661
  }
3662
+ else {
3663
+ preRenderingCount = 0;
3664
+ }
3665
+ const lastIndex = this.inViewportIndics[this.inViewportIndics.length - 1];
3666
+ if (lastIndex !== this.editor.children.length - 1) {
3667
+ childrenWithPreRendering.push(this.editor.children[lastIndex + 1]);
3668
+ }
3643
3669
  return { preRenderingCount, childrenWithPreRendering };
3644
3670
  }
3645
3671
  tryUpdateVirtualViewport() {
@@ -3653,37 +3679,46 @@ class SlateEditable {
3653
3679
  }
3654
3680
  let virtualView = this.calculateVirtualViewport();
3655
3681
  let diff = this.diffVirtualViewport(virtualView);
3656
- if (diff.isDiff) {
3682
+ if (diff.isDifferent && diff.needRemoveOnTop) {
3683
+ const remeasureIndics = diff.changedIndexesOfTop;
3684
+ const changed = measureHeightByIndics(this.editor, remeasureIndics);
3685
+ if (changed) {
3686
+ virtualView = this.calculateVirtualViewport();
3687
+ diff = this.diffVirtualViewport(virtualView, 'second');
3688
+ }
3689
+ }
3690
+ if (diff.isDifferent) {
3657
3691
  this.applyVirtualView(virtualView);
3658
3692
  if (this.listRender.initialized) {
3659
3693
  const { preRenderingCount, childrenWithPreRendering } = this.handlePreRendering();
3660
3694
  this.listRender.update(childrenWithPreRendering, this.editor, this.context, preRenderingCount);
3695
+ if (diff.needAddOnTop) {
3696
+ const remeasureAddedIndics = diff.changedIndexesOfTop;
3697
+ if (isDebug) {
3698
+ this.debugLog('log', 'needAddOnTop to remeasure heights: ', remeasureAddedIndics);
3699
+ }
3700
+ const startIndexBeforeAdd = diff.changedIndexesOfTop[diff.changedIndexesOfTop.length - 1] + 1;
3701
+ const topHeightBeforeAdd = virtualView.accumulatedHeights[startIndexBeforeAdd];
3702
+ const result = measureHeightByIndics(this.editor, remeasureAddedIndics);
3703
+ if (result) {
3704
+ const newHeights = buildHeightsAndAccumulatedHeights(this.editor);
3705
+ const actualTopHeightAfterAdd = newHeights.accumulatedHeights[startIndexBeforeAdd];
3706
+ const newTopHeight = virtualView.top - (actualTopHeightAfterAdd - topHeightBeforeAdd);
3707
+ this.setVirtualSpaceHeight(newTopHeight);
3708
+ if (isDebug) {
3709
+ this.debugLog('log', `update top height since will add element in top(正数减去高度,负数代表增加高度): ${actualTopHeightAfterAdd - topHeightBeforeAdd}`);
3710
+ }
3711
+ }
3712
+ }
3661
3713
  if (!AngularEditor.isReadOnly(this.editor) && this.editor.selection) {
3662
3714
  this.toNativeSelection();
3663
3715
  }
3664
3716
  }
3665
- if (diff.isAddedTop) {
3666
- const remeasureAddedIndics = diff.diffTopRenderedIndexes;
3667
- if (isDebug) {
3668
- this.debugLog('log', 'isAddedTop to remeasure heights: ', remeasureAddedIndics);
3669
- }
3670
- const startIndexBeforeAdd = diff.diffTopRenderedIndexes[diff.diffTopRenderedIndexes.length - 1] + 1;
3671
- const topHeightBeforeAdd = virtualView.accumulatedHeights[startIndexBeforeAdd];
3672
- const result = this.remeasureHeightByIndics(remeasureAddedIndics);
3673
- if (result) {
3674
- const newHeights = buildHeightsAndAccumulatedHeights(this.editor);
3675
- const actualTopHeightAfterAdd = newHeights.accumulatedHeights[startIndexBeforeAdd];
3676
- const newTopHeight = virtualView.top - (actualTopHeightAfterAdd - topHeightBeforeAdd);
3677
- this.setVirtualSpaceHeight(newTopHeight);
3678
- this.debugLog('log', `update top height cause added element in top, 减去: ${actualTopHeightAfterAdd - topHeightBeforeAdd}`);
3679
- }
3680
- }
3681
- this.tryMeasureInViewportChildrenHeights();
3682
3717
  }
3683
3718
  else {
3684
3719
  const topHeight = this.getVirtualTopHeight();
3685
3720
  if (virtualView.top !== topHeight) {
3686
- this.debugLog('log', 'update top height: ', virtualView.top - topHeight, 'start index', this.inViewportIndics[0]);
3721
+ this.debugLog('log', 'update top height since invalid status(正数减去高度,负数代表增加高度): ', topHeight - virtualView.top);
3687
3722
  this.setVirtualSpaceHeight(virtualView.top);
3688
3723
  }
3689
3724
  }
@@ -3779,60 +3814,60 @@ class SlateEditable {
3779
3814
  diffVirtualViewport(virtualView, stage = 'first') {
3780
3815
  if (!this.inViewportChildren.length) {
3781
3816
  return {
3782
- isDiff: true,
3783
- diffTopRenderedIndexes: [],
3784
- diffBottomRenderedIndexes: []
3817
+ isDifferent: true,
3818
+ changedIndexesOfTop: [],
3819
+ changedIndexesOfBottom: []
3785
3820
  };
3786
3821
  }
3787
- const oldVisibleIndexes = [...this.inViewportIndics];
3788
- const newVisibleIndexes = [...virtualView.visibleIndexes];
3789
- const firstNewIndex = newVisibleIndexes[0];
3790
- const lastNewIndex = newVisibleIndexes[newVisibleIndexes.length - 1];
3791
- const firstOldIndex = oldVisibleIndexes[0];
3792
- const lastOldIndex = oldVisibleIndexes[oldVisibleIndexes.length - 1];
3822
+ const oldIndexesInViewport = [...this.inViewportIndics];
3823
+ const newIndexesInViewport = [...virtualView.visibleIndexes];
3824
+ const firstNewIndex = newIndexesInViewport[0];
3825
+ const lastNewIndex = newIndexesInViewport[newIndexesInViewport.length - 1];
3826
+ const firstOldIndex = oldIndexesInViewport[0];
3827
+ const lastOldIndex = oldIndexesInViewport[oldIndexesInViewport.length - 1];
3793
3828
  if (firstNewIndex !== firstOldIndex || lastNewIndex !== lastOldIndex) {
3794
- const diffTopRenderedIndexes = [];
3795
- const diffBottomRenderedIndexes = [];
3796
- const isMissingTop = firstNewIndex !== firstOldIndex && firstNewIndex > firstOldIndex;
3797
- const isAddedTop = firstNewIndex !== firstOldIndex && firstNewIndex < firstOldIndex;
3798
- const isMissingBottom = lastNewIndex !== lastOldIndex && lastOldIndex > lastNewIndex;
3799
- const isAddedBottom = lastNewIndex !== lastOldIndex && lastOldIndex < lastNewIndex;
3800
- if (isMissingTop || isAddedBottom) {
3829
+ const changedIndexesOfTop = [];
3830
+ const changedIndexesOfBottom = [];
3831
+ const needRemoveOnTop = firstNewIndex !== firstOldIndex && firstNewIndex > firstOldIndex;
3832
+ const needAddOnTop = firstNewIndex !== firstOldIndex && firstNewIndex < firstOldIndex;
3833
+ const needRemoveOnBottom = lastNewIndex !== lastOldIndex && lastOldIndex > lastNewIndex;
3834
+ const needAddOnBottom = lastNewIndex !== lastOldIndex && lastOldIndex < lastNewIndex;
3835
+ if (needRemoveOnTop || needAddOnBottom) {
3801
3836
  // 向下
3802
- for (let index = 0; index < oldVisibleIndexes.length; index++) {
3803
- const element = oldVisibleIndexes[index];
3804
- if (!newVisibleIndexes.includes(element)) {
3805
- diffTopRenderedIndexes.push(element);
3837
+ for (let index = 0; index < oldIndexesInViewport.length; index++) {
3838
+ const element = oldIndexesInViewport[index];
3839
+ if (!newIndexesInViewport.includes(element)) {
3840
+ changedIndexesOfTop.push(element);
3806
3841
  }
3807
3842
  else {
3808
3843
  break;
3809
3844
  }
3810
3845
  }
3811
- for (let index = newVisibleIndexes.length - 1; index >= 0; index--) {
3812
- const element = newVisibleIndexes[index];
3813
- if (!oldVisibleIndexes.includes(element)) {
3814
- diffBottomRenderedIndexes.push(element);
3846
+ for (let index = newIndexesInViewport.length - 1; index >= 0; index--) {
3847
+ const element = newIndexesInViewport[index];
3848
+ if (!oldIndexesInViewport.includes(element)) {
3849
+ changedIndexesOfBottom.push(element);
3815
3850
  }
3816
3851
  else {
3817
3852
  break;
3818
3853
  }
3819
3854
  }
3820
3855
  }
3821
- else if (isAddedTop || isMissingBottom) {
3856
+ else if (needAddOnTop || needRemoveOnBottom) {
3822
3857
  // 向上
3823
- for (let index = 0; index < newVisibleIndexes.length; index++) {
3824
- const element = newVisibleIndexes[index];
3825
- if (!oldVisibleIndexes.includes(element)) {
3826
- diffTopRenderedIndexes.push(element);
3858
+ for (let index = 0; index < newIndexesInViewport.length; index++) {
3859
+ const element = newIndexesInViewport[index];
3860
+ if (!oldIndexesInViewport.includes(element)) {
3861
+ changedIndexesOfTop.push(element);
3827
3862
  }
3828
3863
  else {
3829
3864
  break;
3830
3865
  }
3831
3866
  }
3832
- for (let index = oldVisibleIndexes.length - 1; index >= 0; index--) {
3833
- const element = oldVisibleIndexes[index];
3834
- if (!newVisibleIndexes.includes(element)) {
3835
- diffBottomRenderedIndexes.push(element);
3867
+ for (let index = oldIndexesInViewport.length - 1; index >= 0; index--) {
3868
+ const element = oldIndexesInViewport[index];
3869
+ if (!newIndexesInViewport.includes(element)) {
3870
+ changedIndexesOfBottom.push(element);
3836
3871
  }
3837
3872
  else {
3838
3873
  break;
@@ -3841,109 +3876,34 @@ class SlateEditable {
3841
3876
  }
3842
3877
  if (isDebug) {
3843
3878
  this.debugLog('log', `====== diffVirtualViewport stage: ${stage} ======`);
3844
- this.debugLog('log', 'oldVisibleIndexes:', oldVisibleIndexes);
3845
- this.debugLog('log', 'newVisibleIndexes:', newVisibleIndexes);
3846
- this.debugLog('log', 'diffTopRenderedIndexes:', isMissingTop ? '-' : isAddedTop ? '+' : '-', diffTopRenderedIndexes, diffTopRenderedIndexes.map(index => getRealHeightByElement(this.editor, this.editor.children[index], 0)));
3847
- this.debugLog('log', 'diffBottomRenderedIndexes:', isAddedBottom ? '+' : isMissingBottom ? '-' : '+', diffBottomRenderedIndexes, diffBottomRenderedIndexes.map(index => getRealHeightByElement(this.editor, this.editor.children[index], 0)));
3848
- const needTop = virtualView.heights.slice(0, newVisibleIndexes[0]).reduce((acc, height) => acc + height, 0);
3879
+ this.debugLog('log', 'oldIndexesInViewport:', oldIndexesInViewport);
3880
+ this.debugLog('log', 'newIndexesInViewport:', newIndexesInViewport);
3881
+ this.debugLog('log', 'changedIndexesOfTop:', needRemoveOnTop ? '-' : needAddOnTop ? '+' : '-', changedIndexesOfTop, changedIndexesOfTop.map(index => getRealHeightByElement(this.editor, this.editor.children[index], 0)));
3882
+ this.debugLog('log', 'changedIndexesOfBottom:', needAddOnBottom ? '+' : needRemoveOnBottom ? '-' : '+', changedIndexesOfBottom, changedIndexesOfBottom.map(index => getRealHeightByElement(this.editor, this.editor.children[index], 0)));
3883
+ const needTop = virtualView.heights.slice(0, newIndexesInViewport[0]).reduce((acc, height) => acc + height, 0);
3849
3884
  const needBottom = virtualView.heights
3850
- .slice(newVisibleIndexes[newVisibleIndexes.length - 1] + 1)
3885
+ .slice(newIndexesInViewport[newIndexesInViewport.length - 1] + 1)
3851
3886
  .reduce((acc, height) => acc + height, 0);
3852
3887
  this.debugLog('log', needTop - parseFloat(this.virtualTopHeightElement.style.height), 'newTopHeight:', needTop, 'prevTopHeight:', parseFloat(this.virtualTopHeightElement.style.height));
3853
3888
  this.debugLog('log', 'newBottomHeight:', needBottom, 'prevBottomHeight:', parseFloat(this.virtualBottomHeightElement.style.height));
3854
3889
  this.debugLog('warn', '=========== Dividing line ===========');
3855
3890
  }
3856
3891
  return {
3857
- isDiff: true,
3858
- isMissingTop,
3859
- isAddedTop,
3860
- isMissingBottom,
3861
- isAddedBottom,
3862
- diffTopRenderedIndexes,
3863
- diffBottomRenderedIndexes
3892
+ isDifferent: true,
3893
+ needRemoveOnTop,
3894
+ needAddOnTop,
3895
+ needRemoveOnBottom,
3896
+ needAddOnBottom,
3897
+ changedIndexesOfTop,
3898
+ changedIndexesOfBottom
3864
3899
  };
3865
3900
  }
3866
3901
  return {
3867
- isDiff: false,
3868
- diffTopRenderedIndexes: [],
3869
- diffBottomRenderedIndexes: []
3902
+ isDifferent: false,
3903
+ changedIndexesOfTop: [],
3904
+ changedIndexesOfBottom: []
3870
3905
  };
3871
3906
  }
3872
- tryMeasureInViewportChildrenHeights() {
3873
- if (!this.isEnabledVirtualScroll()) {
3874
- return;
3875
- }
3876
- this.tryMeasureInViewportChildrenHeightsAnimId && cancelAnimationFrame(this.tryMeasureInViewportChildrenHeightsAnimId);
3877
- this.tryMeasureInViewportChildrenHeightsAnimId = requestAnimationFrame(() => {
3878
- this.measureVisibleHeights();
3879
- });
3880
- }
3881
- measureVisibleHeights() {
3882
- const children = (this.editor.children || []);
3883
- const inViewportIndics = [...this.inViewportIndics];
3884
- inViewportIndics.forEach(index => {
3885
- const node = children[index];
3886
- if (!node) {
3887
- return;
3888
- }
3889
- const key = AngularEditor.findKey(this.editor, node);
3890
- // 跳过已测过的块,除非强制测量
3891
- if (this.keyHeightMap.has(key.id)) {
3892
- return;
3893
- }
3894
- const view = ELEMENT_TO_COMPONENT.get(node);
3895
- if (!view) {
3896
- return;
3897
- }
3898
- const ret = view.getRealHeight();
3899
- if (ret instanceof Promise) {
3900
- ret.then(height => {
3901
- this.keyHeightMap.set(key.id, height);
3902
- });
3903
- }
3904
- else {
3905
- this.keyHeightMap.set(key.id, ret);
3906
- }
3907
- });
3908
- }
3909
- remeasureHeightByIndics(indics) {
3910
- const children = (this.editor.children || []);
3911
- let isHeightChanged = false;
3912
- indics.forEach((index, i) => {
3913
- const node = children[index];
3914
- if (!node) {
3915
- return;
3916
- }
3917
- const key = AngularEditor.findKey(this.editor, node);
3918
- const view = ELEMENT_TO_COMPONENT.get(node);
3919
- if (!view) {
3920
- return;
3921
- }
3922
- const prevHeight = this.keyHeightMap.get(key.id);
3923
- const ret = view.getRealHeight();
3924
- if (ret instanceof Promise) {
3925
- ret.then(height => {
3926
- this.keyHeightMap.set(key.id, height);
3927
- if (height !== prevHeight) {
3928
- isHeightChanged = true;
3929
- if (isDebug) {
3930
- this.debugLog('log', `remeasure element height, index: ${index} prevHeight: ${prevHeight} newHeight: ${height}`);
3931
- }
3932
- }
3933
- });
3934
- }
3935
- else {
3936
- this.keyHeightMap.set(key.id, ret);
3937
- if (ret !== prevHeight) {
3938
- isHeightChanged = true;
3939
- if (isDebug) {
3940
- this.debugLog('log', `remeasure element height, index: ${index} prevHeight: ${prevHeight} newHeight: ${ret}`);
3941
- }
3942
- }
3943
- }
3944
- });
3945
- return isHeightChanged;
3946
- }
3947
3907
  //#region event proxy
3948
3908
  addEventListener(eventName, listener, target = this.elementRef.nativeElement) {
3949
3909
  this.manualListeners.push(this.renderer2.listen(target, eventName, (event) => {
@@ -5176,5 +5136,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
5176
5136
  * Generated bundle index. Do not edit.
5177
5137
  */
5178
5138
 
5179
- export { AngularEditor, BaseComponent, BaseElementComponent, BaseElementFlavour, BaseFlavour, BaseLeafComponent, BaseLeafFlavour, BaseTextComponent, BaseTextFlavour, BlockCardRef, DEFAULT_ELEMENT_HEIGHT, DefaultTextFlavour, EDITOR_TO_AFTER_VIEW_INIT_QUEUE, EDITOR_TO_BUSINESS_TOP, EDITOR_TO_VIRTUAL_SCROLL_SELECTION, ELEMENT_KEY_TO_HEIGHTS, ELEMENT_TO_COMPONENT, FAKE_LEFT_BLOCK_CARD_OFFSET, FAKE_RIGHT_BLOCK_CARD_OFFSET, FlavourRef, HAS_BEFORE_INPUT_SUPPORT, IS_ANDROID, IS_APPLE, IS_CHROME, IS_CHROME_LEGACY, IS_EDGE_LEGACY, IS_ENABLED_VIRTUAL_SCROLL, IS_FIREFOX, IS_FIREFOX_LEGACY, IS_IOS, IS_QQBROWSER, IS_SAFARI, IS_UC_MOBILE, IS_WECHATBROWSER, PLACEHOLDER_SYMBOL, SLATE_BLOCK_CARD_CLASS_NAME, SLATE_DEBUG_KEY, SLATE_DEBUG_KEY_SCROLL_TOP, SlateBlockCard, SlateChildrenOutlet, SlateEditable, SlateErrorCode, SlateFragmentAttributeKey, SlateModule, SlateString, VIRTUAL_SCROLL_DEFAULT_BLOCK_HEIGHT, VoidTextFlavour, blobAsString, buildHTMLText, buildHeightsAndAccumulatedHeights, check, completeTable, createClipboardData, createText, createThrottleRAF, defaultScrollSelectionIntoView, fallbackCopyText, getBlockCardByNativeElement, getBusinessTop, getCardTargetAttribute, getClipboardData, getClipboardFromHTMLText, getContentHeight, getDataTransferClipboard, getDataTransferClipboardText, getNavigatorClipboard, getPlainText, getRealHeightByElement, getSelection, getSlateFragmentAttribute, getZeroTextNode, hasAfterContextChange, hasBeforeContextChange, hasBlockCard, hasBlockCardWithNode, hotkeys, isCardCenterByTargetAttr, isCardLeft, isCardLeftByTargetAttr, isCardRightByTargetAttr, isClipboardFile, isClipboardReadSupported, isClipboardWriteSupported, isClipboardWriteTextSupported, isComponentType, isDOMText, isDecoratorRangeListEqual, isFlavourType, isInvalidTable, isTemplateRef, isValid, normalize, scrollToElement, setClipboardData, setDataTransferClipboard, setDataTransferClipboardText, setNavigatorClipboard, shallowCompare, stripHtml, withAngular };
5139
+ export { AngularEditor, BaseComponent, BaseElementComponent, BaseElementFlavour, BaseFlavour, BaseLeafComponent, BaseLeafFlavour, BaseTextComponent, BaseTextFlavour, BlockCardRef, DEFAULT_ELEMENT_HEIGHT, DefaultTextFlavour, EDITOR_TO_AFTER_VIEW_INIT_QUEUE, EDITOR_TO_BUSINESS_TOP, EDITOR_TO_VIRTUAL_SCROLL_SELECTION, ELEMENT_KEY_TO_HEIGHTS, ELEMENT_TO_COMPONENT, FAKE_LEFT_BLOCK_CARD_OFFSET, FAKE_RIGHT_BLOCK_CARD_OFFSET, FlavourRef, HAS_BEFORE_INPUT_SUPPORT, IS_ANDROID, IS_APPLE, IS_CHROME, IS_CHROME_LEGACY, IS_EDGE_LEGACY, IS_ENABLED_VIRTUAL_SCROLL, IS_FIREFOX, IS_FIREFOX_LEGACY, IS_IOS, IS_QQBROWSER, IS_SAFARI, IS_UC_MOBILE, IS_WECHATBROWSER, PLACEHOLDER_SYMBOL, SLATE_BLOCK_CARD_CLASS_NAME, SLATE_DEBUG_KEY, SLATE_DEBUG_KEY_SCROLL_TOP, SlateBlockCard, SlateChildrenOutlet, SlateEditable, SlateErrorCode, SlateFragmentAttributeKey, SlateModule, SlateString, VIRTUAL_SCROLL_DEFAULT_BLOCK_HEIGHT, VoidTextFlavour, blobAsString, buildHTMLText, buildHeightsAndAccumulatedHeights, check, completeTable, createClipboardData, createText, createThrottleRAF, defaultScrollSelectionIntoView, fallbackCopyText, getBlockCardByNativeElement, getBusinessTop, getCardTargetAttribute, getClipboardData, getClipboardFromHTMLText, getContentHeight, getDataTransferClipboard, getDataTransferClipboardText, getNavigatorClipboard, getPlainText, getRealHeightByElement, getSelection, getSlateFragmentAttribute, getZeroTextNode, hasAfterContextChange, hasBeforeContextChange, hasBlockCard, hasBlockCardWithNode, hotkeys, isCardCenterByTargetAttr, isCardLeft, isCardLeftByTargetAttr, isCardRightByTargetAttr, isClipboardFile, isClipboardReadSupported, isClipboardWriteSupported, isClipboardWriteTextSupported, isComponentType, isDOMText, isDecoratorRangeListEqual, isFlavourType, isInvalidTable, isTemplateRef, isValid, measureHeightByElement, measureHeightByIndics, normalize, scrollToElement, setClipboardData, setDataTransferClipboard, setDataTransferClipboardText, setNavigatorClipboard, shallowCompare, stripHtml, withAngular };
5180
5140
  //# sourceMappingURL=slate-angular.mjs.map