mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2025-04-06 03:57:56 +08:00
refactor(stage): 删除stageCore构造函数的参数,修改了getScrollParent的实现,无需依赖外部传参数
This commit is contained in:
parent
554e695ef5
commit
2dda4f3488
@ -77,7 +77,7 @@ export default class StageCore extends EventEmitter {
|
||||
this.containerHighlightType = config.containerHighlightType;
|
||||
|
||||
this.renderer = new StageRender({ runtimeUrl: config.runtimeUrl, render: this.render.bind(this) });
|
||||
this.mask = new StageMask(this.renderer.getDocument()?.documentElement);
|
||||
this.mask = new StageMask();
|
||||
this.dr = new StageDragResize({ core: this, container: this.mask.content, mask: this.mask });
|
||||
this.multiDr = new StageMultiDragResize({ core: this, container: this.mask.content, mask: this.mask });
|
||||
this.highlightLayer = new StageHighlight({ core: this, container: this.mask.wrapper });
|
||||
|
@ -84,7 +84,6 @@ export default class StageMask extends Rule {
|
||||
private pageScrollParent: HTMLElement | null = null;
|
||||
private intersectionObserver: IntersectionObserver | null = null;
|
||||
private wrapperResizeObserver: ResizeObserver | null = null;
|
||||
private renderEl?: HTMLElement;
|
||||
|
||||
/**
|
||||
* 高亮事件处理函数
|
||||
@ -94,12 +93,11 @@ export default class StageMask extends Rule {
|
||||
this.emit('highlight', event);
|
||||
}, throttleTime);
|
||||
|
||||
constructor(renderEl: HTMLElement | undefined) {
|
||||
constructor() {
|
||||
const wrapper = createWrapper();
|
||||
super(wrapper);
|
||||
|
||||
this.wrapper = wrapper;
|
||||
this.renderEl = renderEl;
|
||||
|
||||
this.initContentEventListener();
|
||||
this.wrapper.appendChild(this.content);
|
||||
@ -224,7 +222,7 @@ export default class StageMask extends Rule {
|
||||
* 监听选中元素是否在画布可视区域内,如果目标元素不在可视区域内,通过滚动使该元素出现在可视区域
|
||||
*/
|
||||
private initObserverIntersection(): void {
|
||||
this.pageScrollParent = getScrollParent(this.page as HTMLElement) || this.renderEl || null;
|
||||
this.pageScrollParent = getScrollParent(this.page as HTMLElement) || null;
|
||||
this.intersectionObserver?.disconnect();
|
||||
|
||||
if (typeof IntersectionObserver !== 'undefined') {
|
||||
|
@ -119,6 +119,9 @@ export const getScrollParent = (element: HTMLElement, includeHidden = false): HT
|
||||
|
||||
for (let parent = element; parent.parentElement; ) {
|
||||
parent = parent.parentElement;
|
||||
|
||||
if (parent.tagName === 'HTML') return parent;
|
||||
|
||||
style = getComputedStyle(parent);
|
||||
|
||||
if (isAbsolute(style) && isStatic(style)) continue;
|
||||
|
Loading…
x
Reference in New Issue
Block a user