refactor(stage): 删除stageCore构造函数的参数,修改了getScrollParent的实现,无需依赖外部传参数

This commit is contained in:
oceanzhu 2022-10-25 16:19:45 +08:00 committed by roymondchen
parent 554e695ef5
commit 2dda4f3488
3 changed files with 6 additions and 5 deletions

View File

@ -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 });

View File

@ -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') {

View File

@ -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;