mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-04 07:19:52 +00:00
refactor: address review nits
- merge gsapResizeIntercept's duplicate module imports - move the core-constant imports to the file headers (picker, domEditingDom) - justify the cross-realm HTMLElement casts (iframe-realm nodes fail instanceof; access is duck-typed)
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
* selector utilities, and composition source resolution.
|
||||
* No imports from other domEditing* modules — safe to import from anywhere.
|
||||
*/
|
||||
import { COLOR_GRADING_SOURCE_HIDDEN_ATTR } from "@hyperframes/core/color-grading";
|
||||
import { CURATED_STYLE_PROPERTIES } from "./domEditingTypes";
|
||||
|
||||
// ─── Type guard ───────────────────────────────────────────────────────────────
|
||||
@@ -28,8 +29,6 @@ export function isTextBearingTag(tagName: string): boolean {
|
||||
return ["div", "span", "p", "strong", "h1", "h2", "h3", "h4", "h5", "h6"].includes(tagName);
|
||||
}
|
||||
|
||||
import { COLOR_GRADING_SOURCE_HIDDEN_ATTR } from "@hyperframes/core/color-grading";
|
||||
|
||||
export function isElementVisibleThroughAncestors(el: HTMLElement): boolean {
|
||||
const win = el.ownerDocument.defaultView;
|
||||
if (!win) return true;
|
||||
|
||||
@@ -16,19 +16,18 @@ import {
|
||||
commitStaticGsapSize,
|
||||
commitKeyframedSizeFromResize,
|
||||
computeCurrentPercentage,
|
||||
findExistingPositionWrite,
|
||||
findSizeSetAnimation,
|
||||
materializeIfDynamic,
|
||||
} from "./gsapDragCommit";
|
||||
import type { GsapDragCommitCallbacks } from "./gsapDragCommit";
|
||||
import { pickClosestToPlayhead } from "./gsapPositionDetection";
|
||||
import { pickClosestToPlayhead, readGsapPositionFromIframe } from "./gsapPositionDetection";
|
||||
import { commitWholePropertyOffset } from "./gsapWholePropertyOffsetCommit";
|
||||
import { resolveTweenStart, resolveTweenDuration } from "../utils/globalTimeCompiler";
|
||||
import { selectorFromSelection } from "./gsapShared";
|
||||
import { roundTo3 } from "../utils/rounding";
|
||||
import { resolveGroupTween, POSITION_CHANNELS } from "./gsapRuntimeBridge";
|
||||
import { hasNonHoldTweenForElement } from "./gsapRuntimeKeyframes";
|
||||
import { readGsapPositionFromIframe } from "./gsapPositionDetection";
|
||||
import { findExistingPositionWrite } from "./gsapDragCommit";
|
||||
import { commitWholePropertyOffset } from "./gsapWholePropertyOffsetCommit";
|
||||
|
||||
const IDENTITY_ONE_PROPS = new Set(["opacity", "autoAlpha", "scale", "scaleX", "scaleY"]);
|
||||
|
||||
@@ -114,6 +113,8 @@ export async function tryGsapResizeIntercept(
|
||||
let scaleDraftDropPoint: { x: number; y: number } | null = null;
|
||||
let nonUniformScale = false;
|
||||
if (resizeGroup === "scale") {
|
||||
// Iframe-realm element — instanceof HTMLElement fails across realms; the
|
||||
// selector targets composition elements, and every use below is duck-typed.
|
||||
const el = iframe?.contentDocument?.querySelector(selector ?? "") as HTMLElement | null;
|
||||
// The resize draft modifies el.style.width/height, so read the ORIGINAL
|
||||
// dimensions saved by the draft system before it ran.
|
||||
|
||||
@@ -319,8 +319,10 @@ export function applySoftReload(
|
||||
if (allTargets.length > 0 && win.gsap?.set) {
|
||||
const saved: Array<[HTMLElement, string]> = [];
|
||||
for (const el of allTargets) {
|
||||
const s = (el as HTMLElement).style;
|
||||
if (s?.cssText != null) saved.push([el as HTMLElement, s.cssText]);
|
||||
// Iframe-realm node: instanceof HTMLElement fails across realms, and
|
||||
// gsap targets() only yields elements here — style access is duck-typed.
|
||||
const styled = el as HTMLElement;
|
||||
if (styled.style?.cssText != null) saved.push([styled, styled.style.cssText]);
|
||||
}
|
||||
try {
|
||||
win.gsap.set(allTargets, { clearProps: "all" });
|
||||
|
||||
Reference in New Issue
Block a user