@hyperframes/core 0.7.21 → 0.7.22
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.
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure, DOM-free editing-affordance resolution. Single source of truth for what
|
|
3
|
+
* the studio's edit panel (and any SDK consumer) surfaces per selected element:
|
|
4
|
+
* capability flags + which section types apply. No getComputedStyle, no DOM —
|
|
5
|
+
* the caller supplies normalized facts (live or static). See the SDK adapter
|
|
6
|
+
* (browser-only) and the studio mapper for the two fact extractors.
|
|
7
|
+
*/
|
|
8
|
+
export interface DomEditCapabilities {
|
|
9
|
+
canSelect: boolean;
|
|
10
|
+
canEditStyles: boolean;
|
|
11
|
+
/** Directly editable authored left/top style fields. Canvas drag uses manual edits instead. */
|
|
12
|
+
canMove: boolean;
|
|
13
|
+
/** Directly editable authored width/height style fields. Canvas resize uses manual edits instead. */
|
|
14
|
+
canResize: boolean;
|
|
15
|
+
canApplyManualOffset: boolean;
|
|
16
|
+
canApplyManualSize: boolean;
|
|
17
|
+
canApplyManualRotation: boolean;
|
|
18
|
+
reasonIfDisabled?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface EditingSectionApplicability {
|
|
21
|
+
text: boolean;
|
|
22
|
+
media: boolean;
|
|
23
|
+
/** Element-level only — the consumer still ANDs its own feature flag. */
|
|
24
|
+
colorGrading: boolean;
|
|
25
|
+
timing: boolean;
|
|
26
|
+
animation: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface EditingAffordances {
|
|
29
|
+
capabilities: DomEditCapabilities;
|
|
30
|
+
sections: EditingSectionApplicability;
|
|
31
|
+
}
|
|
32
|
+
export interface EditableElementFacts {
|
|
33
|
+
/** A stable patch target exists (selector|hfId in studio; always true in the SDK model). */
|
|
34
|
+
hasStableTarget: boolean;
|
|
35
|
+
/** Lowercased tag name. */
|
|
36
|
+
tag: string;
|
|
37
|
+
/** kebab-case. Capability logic reads left/top/width/height/transform; sections read nothing here. */
|
|
38
|
+
inlineStyles: Record<string, string>;
|
|
39
|
+
/** kebab-case. Absent => canMove/canResize default to false (no live layout). */
|
|
40
|
+
computedStyles?: Record<string, string>;
|
|
41
|
+
isCompositionHost: boolean;
|
|
42
|
+
isCompositionRoot: boolean;
|
|
43
|
+
isInsideLockedComposition: boolean;
|
|
44
|
+
isMasterView: boolean;
|
|
45
|
+
existsInSource: boolean;
|
|
46
|
+
/** studio: textFields.length > 0 ; SDK: model.text != null */
|
|
47
|
+
hasEditableText: boolean;
|
|
48
|
+
/** data-start present on the element */
|
|
49
|
+
hasTimingStart: boolean;
|
|
50
|
+
/** count of GSAP tweens targeting this element */
|
|
51
|
+
animationCount: number;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* kebab-case px parser. Single source of truth — studio's domEditingDom
|
|
55
|
+
* re-exports this so the two paths can't drift.
|
|
56
|
+
*/
|
|
57
|
+
export declare function parsePx(value: string | undefined): number | null;
|
|
58
|
+
/**
|
|
59
|
+
* Section applicability only. Reads no style facts, so callers that already
|
|
60
|
+
* hold resolved capabilities (e.g. the studio panel) can compute sections
|
|
61
|
+
* without re-running the capability geometry parse.
|
|
62
|
+
*/
|
|
63
|
+
export declare function resolveEditingSections(facts: EditableElementFacts): EditingSectionApplicability;
|
|
64
|
+
export declare function resolveEditingAffordances(facts: EditableElementFacts): EditingAffordances;
|
|
65
|
+
//# sourceMappingURL=affordances.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"affordances.d.ts","sourceRoot":"","sources":["../../src/editing/affordances.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,+FAA+F;IAC/F,OAAO,EAAE,OAAO,CAAC;IACjB,qGAAqG;IACrG,SAAS,EAAE,OAAO,CAAC;IACnB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,sBAAsB,EAAE,OAAO,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,yEAAyE;IACzE,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,mBAAmB,CAAC;IAClC,QAAQ,EAAE,2BAA2B,CAAC;CACvC;AAED,MAAM,WAAW,oBAAoB;IACnC,4FAA4F;IAC5F,eAAe,EAAE,OAAO,CAAC;IACzB,2BAA2B;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,sGAAsG;IACtG,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,yBAAyB,EAAE,OAAO,CAAC;IACnC,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,8DAA8D;IAC9D,eAAe,EAAE,OAAO,CAAC;IACzB,wCAAwC;IACxC,cAAc,EAAE,OAAO,CAAC;IACxB,kDAAkD;IAClD,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAMhE;AA6GD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,oBAAoB,GAAG,2BAA2B,CAQ/F;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,oBAAoB,GAAG,kBAAkB,CAEzF"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure, DOM-free editing-affordance resolution. Single source of truth for what
|
|
3
|
+
* the studio's edit panel (and any SDK consumer) surfaces per selected element:
|
|
4
|
+
* capability flags + which section types apply. No getComputedStyle, no DOM —
|
|
5
|
+
* the caller supplies normalized facts (live or static). See the SDK adapter
|
|
6
|
+
* (browser-only) and the studio mapper for the two fact extractors.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* kebab-case px parser. Single source of truth — studio's domEditingDom
|
|
10
|
+
* re-exports this so the two paths can't drift.
|
|
11
|
+
*/
|
|
12
|
+
export function parsePx(value) {
|
|
13
|
+
if (!value)
|
|
14
|
+
return null;
|
|
15
|
+
const trimmed = value.trim();
|
|
16
|
+
if (!trimmed.endsWith("px"))
|
|
17
|
+
return null;
|
|
18
|
+
const parsed = parseFloat(trimmed);
|
|
19
|
+
return Number.isFinite(parsed) ? parsed : null;
|
|
20
|
+
}
|
|
21
|
+
/** Whether a CSS transform is the identity (matrix or matrix3d). Core-internal. */
|
|
22
|
+
// fallow-ignore-next-line complexity
|
|
23
|
+
function isIdentityTransform(value) {
|
|
24
|
+
const transform = (value ?? "none").trim();
|
|
25
|
+
if (!transform || transform === "none")
|
|
26
|
+
return true;
|
|
27
|
+
const matrix = transform.match(/^matrix\(([^)]+)\)$/i);
|
|
28
|
+
if (matrix && matrix[1]) {
|
|
29
|
+
const parts = matrix[1].split(",");
|
|
30
|
+
if (parts.length !== 6)
|
|
31
|
+
return false;
|
|
32
|
+
const values = parts.map((part) => Number.parseFloat(part.trim()));
|
|
33
|
+
if (values.some((part) => !Number.isFinite(part)))
|
|
34
|
+
return false;
|
|
35
|
+
const [a = 0, b = 0, c = 0, d = 0, e = 0, f = 0] = values;
|
|
36
|
+
return (Math.abs(a - 1) < 0.0001 &&
|
|
37
|
+
Math.abs(b) < 0.0001 &&
|
|
38
|
+
Math.abs(c) < 0.0001 &&
|
|
39
|
+
Math.abs(d - 1) < 0.0001 &&
|
|
40
|
+
Math.abs(e) < 0.0001 &&
|
|
41
|
+
Math.abs(f) < 0.0001);
|
|
42
|
+
}
|
|
43
|
+
const matrix3d = transform.match(/^matrix3d\(([^)]+)\)$/i);
|
|
44
|
+
if (!matrix3d || !matrix3d[1])
|
|
45
|
+
return false;
|
|
46
|
+
const values = matrix3d[1].split(",").map((part) => Number.parseFloat(part.trim()));
|
|
47
|
+
if (values.length !== 16 || values.some((part) => !Number.isFinite(part)))
|
|
48
|
+
return false;
|
|
49
|
+
const identity = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
|
|
50
|
+
return values.every((part, index) => Math.abs(part - (identity[index] ?? 0)) < 0.0001);
|
|
51
|
+
}
|
|
52
|
+
// fallow-ignore-next-line complexity
|
|
53
|
+
function resolveCapabilities(facts) {
|
|
54
|
+
if (!facts.hasStableTarget || facts.isInsideLockedComposition) {
|
|
55
|
+
return {
|
|
56
|
+
canSelect: !facts.isInsideLockedComposition,
|
|
57
|
+
canEditStyles: false,
|
|
58
|
+
canMove: false,
|
|
59
|
+
canResize: false,
|
|
60
|
+
canApplyManualOffset: false,
|
|
61
|
+
canApplyManualSize: false,
|
|
62
|
+
canApplyManualRotation: false,
|
|
63
|
+
reasonIfDisabled: facts.isInsideLockedComposition
|
|
64
|
+
? "This element belongs to a locked composition."
|
|
65
|
+
: "Studio could not resolve a stable patch target for this element.",
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
if (!facts.existsInSource) {
|
|
69
|
+
return {
|
|
70
|
+
canSelect: true,
|
|
71
|
+
canEditStyles: false,
|
|
72
|
+
canMove: false,
|
|
73
|
+
canResize: false,
|
|
74
|
+
canApplyManualOffset: false,
|
|
75
|
+
canApplyManualSize: false,
|
|
76
|
+
canApplyManualRotation: false,
|
|
77
|
+
reasonIfDisabled: "This element is generated by a script and cannot be edited visually.",
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
if (facts.isCompositionRoot) {
|
|
81
|
+
return {
|
|
82
|
+
canSelect: true,
|
|
83
|
+
canEditStyles: true,
|
|
84
|
+
canMove: false,
|
|
85
|
+
canResize: false,
|
|
86
|
+
canApplyManualOffset: false,
|
|
87
|
+
canApplyManualSize: false,
|
|
88
|
+
canApplyManualRotation: false,
|
|
89
|
+
reasonIfDisabled: "The root composition defines the preview bounds.",
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
const computed = facts.computedStyles ?? {};
|
|
93
|
+
const position = computed.position;
|
|
94
|
+
const left = parsePx(facts.inlineStyles.left) ?? parsePx(computed.left);
|
|
95
|
+
const top = parsePx(facts.inlineStyles.top) ?? parsePx(computed.top);
|
|
96
|
+
const width = parsePx(facts.inlineStyles.width) ?? parsePx(computed.width);
|
|
97
|
+
const height = parsePx(facts.inlineStyles.height) ?? parsePx(computed.height);
|
|
98
|
+
const hasTransformDrivenGeometry = !isIdentityTransform(computed.transform);
|
|
99
|
+
const canMove = (position === "absolute" || position === "fixed") &&
|
|
100
|
+
left != null &&
|
|
101
|
+
top != null &&
|
|
102
|
+
!hasTransformDrivenGeometry;
|
|
103
|
+
const canResize = canMove && (width != null || height != null);
|
|
104
|
+
const canApplyManualGeometry = !facts.isCompositionHost;
|
|
105
|
+
const reasonIfDisabled = canApplyManualGeometry
|
|
106
|
+
? undefined
|
|
107
|
+
: "Select an internal layer to transform it.";
|
|
108
|
+
const canEditStyles = !(facts.isCompositionHost && facts.isMasterView);
|
|
109
|
+
return {
|
|
110
|
+
canSelect: true,
|
|
111
|
+
canEditStyles,
|
|
112
|
+
canMove,
|
|
113
|
+
canResize,
|
|
114
|
+
canApplyManualOffset: canApplyManualGeometry,
|
|
115
|
+
canApplyManualSize: canApplyManualGeometry,
|
|
116
|
+
canApplyManualRotation: canApplyManualGeometry,
|
|
117
|
+
reasonIfDisabled,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Section applicability only. Reads no style facts, so callers that already
|
|
122
|
+
* hold resolved capabilities (e.g. the studio panel) can compute sections
|
|
123
|
+
* without re-running the capability geometry parse.
|
|
124
|
+
*/
|
|
125
|
+
export function resolveEditingSections(facts) {
|
|
126
|
+
return {
|
|
127
|
+
text: facts.hasEditableText && !facts.isCompositionHost && !facts.isInsideLockedComposition,
|
|
128
|
+
media: facts.tag === "video" || facts.tag === "audio",
|
|
129
|
+
colorGrading: facts.tag === "video" || facts.tag === "img",
|
|
130
|
+
timing: facts.hasTimingStart || facts.animationCount > 0,
|
|
131
|
+
animation: facts.animationCount > 0,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
export function resolveEditingAffordances(facts) {
|
|
135
|
+
return { capabilities: resolveCapabilities(facts), sections: resolveEditingSections(facts) };
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=affordances.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"affordances.js","sourceRoot":"","sources":["../../src/editing/affordances.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyperframes/core",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.22",
|
|
4
4
|
"description": "",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -34,6 +34,10 @@
|
|
|
34
34
|
"import": "./dist/utils/htmlAttrSafety.js",
|
|
35
35
|
"types": "./dist/utils/htmlAttrSafety.d.ts"
|
|
36
36
|
},
|
|
37
|
+
"./editing": {
|
|
38
|
+
"import": "./dist/editing/affordances.js",
|
|
39
|
+
"types": "./dist/editing/affordances.d.ts"
|
|
40
|
+
},
|
|
37
41
|
"./generators": {
|
|
38
42
|
"import": "./dist/generators/hyperframes.js",
|
|
39
43
|
"types": "./dist/generators/hyperframes.d.ts"
|
|
@@ -150,9 +154,9 @@
|
|
|
150
154
|
"bpm-detective": "^2.0.5",
|
|
151
155
|
"linkedom": "^0.18.12",
|
|
152
156
|
"postcss": "^8.5.8",
|
|
153
|
-
"@hyperframes/lint": "0.7.
|
|
154
|
-
"@hyperframes/studio-server": "0.7.
|
|
155
|
-
"@hyperframes/parsers": "0.7.
|
|
157
|
+
"@hyperframes/lint": "0.7.22",
|
|
158
|
+
"@hyperframes/studio-server": "0.7.22",
|
|
159
|
+
"@hyperframes/parsers": "0.7.22"
|
|
156
160
|
},
|
|
157
161
|
"devDependencies": {
|
|
158
162
|
"@types/jsdom": "^28.0.0",
|