hyperframes 0.8.192 → 0.8.194
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.
- package/dist/{add-TZU2UW7A.js → add-47UAIWY4.js} +12 -12
- package/dist/{animatedGifPrep-NLAXC3VV.js → animatedGifPrep-TFSQZWK6.js} +8 -7
- package/dist/api.js +18 -17
- package/dist/{asset-JAJXA6LB.js → asset-AU7PZHXA.js} +2 -2
- package/dist/{assetCataloger-4WTX3J4I.js → assetCataloger-HC5N6WPT.js} +8 -7
- package/dist/{audio-XLWC7JKS.js → audio-7AWMZWBM.js} +14 -13
- package/dist/{auth-5K6X3NPJ.js → auth-GXH3QNDJ.js} +1 -1
- package/dist/{autoUpdate-RNV7SKGB.js → autoUpdate-GVGP5O2I.js} +3 -3
- package/dist/{backgroundChecks-QXLVZVGX.js → backgroundChecks-IUJM2Q35.js} +3 -3
- package/dist/backgroundChecksWorker.js +3 -3
- package/dist/{batchRender-THKSPDZR.js → batchRender-3XS2Y2Y4.js} +4 -4
- package/dist/{beats-K7CGCFVL.js → beats-U64B4S7Z.js} +9 -9
- package/dist/{benchmark-PHRDIXNL.js → benchmark-2YUPAI76.js} +9 -9
- package/dist/{browser-GN6R5ZSK.js → browser-DBFH7KXM.js} +5 -5
- package/dist/{bundleWithLocalizedFonts-C325UNR4.js → bundleWithLocalizedFonts-XWL7KSQJ.js} +2 -2
- package/dist/{capture-BZ7APOGQ.js → capture-E4VW75NM.js} +2 -2
- package/dist/{capture-6UBQFHZQ.js → capture-YWH7BPBI.js} +13 -12
- package/dist/{captureCompositionFrame-VORSCTWC.js → captureCompositionFrame-IG6S2OHG.js} +13 -12
- package/dist/{catalog-PHU2RUZ3.js → catalog-LZIZLZ34.js} +12 -12
- package/dist/{catch-up-HCNRM46J.js → catch-up-ZVNPIACY.js} +4 -4
- package/dist/{check-TJ5ZLB4I.js → check-EKEOD4UM.js} +38 -37
- package/dist/{checkBrowser-DWP7ZXJ7.js → checkBrowser-MYH6HPHH.js} +33 -32
- package/dist/{chunk-XF77MK3J.js → chunk-2AJU7PZ6.js} +1 -1
- package/dist/chunk-2D5WP2NI.js +3901 -0
- package/dist/{chunk-FBVUAH7N.js → chunk-2OYYNKJ4.js} +1 -1
- package/dist/{chunk-R2U2G4OS.js → chunk-37IHQVNQ.js} +1 -1
- package/dist/{chunk-IMSI7IFW.js → chunk-3OSBSUN3.js} +18 -18
- package/dist/{chunk-RHYOWDI6.js → chunk-3S3CXF4W.js} +2 -2
- package/dist/{chunk-YMQQXPD5.js → chunk-452UK7E7.js} +5 -12
- package/dist/{chunk-L2YGSAOL.js → chunk-4FVNEXSV.js} +3 -3
- package/dist/{chunk-7UZC4N62.js → chunk-4GMDL4N5.js} +1 -1
- package/dist/{chunk-YWRQHRDY.js → chunk-4PIPQPCW.js} +7 -7
- package/dist/{chunk-J2ASTCU6.js → chunk-4VSV56F2.js} +2 -2
- package/dist/{chunk-NXMYHJAL.js → chunk-4VYPICIA.js} +29 -1
- package/dist/{chunk-QX4TB4NH.js → chunk-52YJKWV3.js} +379 -127
- package/dist/{chunk-GANST5K3.js → chunk-54PZ2EQZ.js} +1 -1
- package/dist/{chunk-5IPKQHOL.js → chunk-B3GG3HJB.js} +1 -1
- package/dist/{chunk-2MCXIY4B.js → chunk-B7RJV74O.js} +28 -11
- package/dist/{chunk-VOM2HLUI.js → chunk-BK5YCT54.js} +3 -3
- package/dist/{chunk-RWGASWT7.js → chunk-BL4U6U52.js} +1 -0
- package/dist/{chunk-T6O5OLN2.js → chunk-BYADARIC.js} +2 -2
- package/dist/{chunk-VNPADTDD.js → chunk-CEUBYYVJ.js} +2 -2
- package/dist/{chunk-JCDYDF54.js → chunk-CEZH4AQT.js} +12 -2
- package/dist/{chunk-BY6OQ6XP.js → chunk-CZNSLFYD.js} +3 -1
- package/dist/{chunk-SBBQFPCJ.js → chunk-DT3JESJ6.js} +1 -1
- package/dist/{chunk-3CXIX6XS.js → chunk-DVQDBWQG.js} +4 -4
- package/dist/{chunk-K2AKVYNR.js → chunk-EB3XXHNO.js} +2 -2
- package/dist/{chunk-3FV5BVWS.js → chunk-EY7GKVPS.js} +2 -2
- package/dist/{chunk-W24SZ5FL.js → chunk-F2ASNL2K.js} +6 -9
- package/dist/{chunk-ODBYZIOH.js → chunk-F3B7CE3Q.js} +14 -14
- package/dist/{chunk-E3P3LJG6.js → chunk-FLREUEHW.js} +28 -11
- package/dist/{chunk-6XVKMBUA.js → chunk-FUA22HO4.js} +1 -1
- package/dist/{chunk-AEXVVABM.js → chunk-GAFEU6AB.js} +13 -10
- package/dist/{chunk-DIKAPMMF.js → chunk-GQVTTWZF.js} +144 -39
- package/dist/{chunk-7LLRMYP6.js → chunk-HCLBM2LQ.js} +2 -2
- package/dist/{chunk-AMZJFCOX.js → chunk-HG5ECUOR.js} +5 -5
- package/dist/{chunk-KZOZN4PI.js → chunk-HPGQPRHY.js} +3 -3
- package/dist/{chunk-BPKLUHFT.js → chunk-HQD7ODQB.js} +5 -5
- package/dist/{chunk-SK7TR7BL.js → chunk-JU4T4VAA.js} +4 -4
- package/dist/{chunk-MGBUWPXX.js → chunk-JVTWX5G3.js} +33 -8
- package/dist/{chunk-2J3NA3OB.js → chunk-JXTPNUSO.js} +83 -51
- package/dist/{chunk-2VXY3PEF.js → chunk-K2VXPQKC.js} +107 -94
- package/dist/chunk-K4MJX7SR.js +17 -0
- package/dist/{chunk-XX2PA4L3.js → chunk-KDEV5RIE.js} +7 -3
- package/dist/{chunk-MVIJTXN5.js → chunk-LMIDZIW2.js} +12 -12
- package/dist/{chunk-6WNLQI63.js → chunk-LOGKDQ3G.js} +3 -3
- package/dist/{chunk-IW5G323T.js → chunk-LTGTN2TH.js} +8 -9
- package/dist/{chunk-MEE4NTPZ.js → chunk-LZ4WPR3B.js} +2 -2
- package/dist/{chunk-32NB4VMH.js → chunk-M2VXARYK.js} +3 -2
- package/dist/{chunk-7RSY7SZN.js → chunk-MCFPMUMT.js} +2 -2
- package/dist/{chunk-BEOK6F26.js → chunk-MGSNFWGR.js} +2 -2
- package/dist/{chunk-ZEMDV6W2.js → chunk-MO6RTNYD.js} +1 -1
- package/dist/{chunk-7JJMT6LN.js → chunk-N33FO44R.js} +1 -1
- package/dist/{chunk-A4OI5ZNX.js → chunk-N3M3IU6S.js} +1 -1
- package/dist/{chunk-CXRZBWSH.js → chunk-NVVIFW3C.js} +10 -10
- package/dist/{chunk-E5V6WEMK.js → chunk-O2ILONGK.js} +10 -10
- package/dist/{chunk-4HCJOFMB.js → chunk-OJNNKHAZ.js} +94 -22
- package/dist/{chunk-QWLES6YV.js → chunk-PEHST4UY.js} +3 -3
- package/dist/{chunk-BV6YE455.js → chunk-POFJH2IS.js} +1 -1
- package/dist/{chunk-AR46ND2Q.js → chunk-PXK3ICU6.js} +1 -1
- package/dist/{chunk-LOKCBZYF.js → chunk-Q4HKC3O7.js} +3 -3
- package/dist/{chunk-J2BSUF6X.js → chunk-QJQTWTM7.js} +8 -3
- package/dist/{chunk-QFPBRZJD.js → chunk-ROEW726S.js} +1 -1
- package/dist/{chunk-OQL4AJ4X.js → chunk-RUPGFW5B.js} +6 -6
- package/dist/{chunk-5TRFLZ5Z.js → chunk-RZWJJCI7.js} +2 -2
- package/dist/{chunk-2HP5GIQ3.js → chunk-SNECH6QA.js} +1 -1
- package/dist/{chunk-REUL2KH2.js → chunk-ST35C4K6.js} +1 -1
- package/dist/{chunk-4E75LHAL.js → chunk-ST4SHO3S.js} +1 -1
- package/dist/{chunk-ULTKB5FC.js → chunk-TDYKVJTU.js} +548 -429
- package/dist/{chunk-WOKVXK4J.js → chunk-VHIBBDEI.js} +1 -1
- package/dist/{chunk-EKGGSAWR.js → chunk-VPON6DF2.js} +5 -5
- package/dist/{chunk-VRAXIQ6I.js → chunk-XYGULBFV.js} +2 -2
- package/dist/{chunk-PFRG5P32.js → chunk-Y3BT27Y7.js} +1 -1
- package/dist/{clean-2RNCTDBT.js → clean-NS2SDRK7.js} +21 -20
- package/dist/cli.js +54 -54
- package/dist/{cloud-NFIKESNZ.js → cloud-K4XQPWTY.js} +4 -4
- package/dist/{cloudrun-7224BCX3.js → cloudrun-BKOKXTXV.js} +6 -6
- package/dist/{compare-HL44MXVX.js → compare-ZAV773OL.js} +31 -30
- package/dist/{compiler-WF5QTXV7.js → compiler-CWHFCE3H.js} +5 -5
- package/dist/{component-ZBZXSJBR.js → component-OXA2ZWX3.js} +3 -3
- package/dist/{compositions-76P7LDDX.js → compositions-NKRVWCPE.js} +12 -11
- package/dist/{contactSheet-43ISAESM.js → contactSheet-5APX35L3.js} +1 -1
- package/dist/{delete-4YZBYOHJ.js → delete-HZ2LBCLC.js} +2 -2
- package/dist/{deploy-UGUUGYLF.js → deploy-FNDTZFF7.js} +1 -1
- package/dist/{deterministicFonts-RO2TCMLZ.js → deterministicFonts-RADD3BSX.js} +2 -2
- package/dist/{dist-5KKCRFPT.js → dist-2YTN2UGY.js} +3 -3
- package/dist/{dist-QQ26RUDV.js → dist-7OCZHNLY.js} +1 -1
- package/dist/{doctor-GGVUK4NB.js → doctor-6QWJGO5P.js} +14 -13
- package/dist/{events-V2VU4J3B.js → events-HTHOBIUN.js} +3 -3
- package/dist/{events-OXPTHVDB.js → events-MBKHVGXX.js} +2 -2
- package/dist/{feedback-HFZ5SCUK.js → feedback-X5QWTLEX.js} +8 -8
- package/dist/{ffmpeg-3VHY7GO3.js → ffmpeg-7GESJCCT.js} +9 -8
- package/dist/{figma-7SEZTLBJ.js → figma-SXOHFVJI.js} +3 -3
- package/dist/fontLocalizeCli.js +11 -10
- package/dist/{get-Y2S2PXCM.js → get-T2HI5FCK.js} +2 -2
- package/dist/{gpuPolicy-UHPOWRV5.js → gpuPolicy-5FABKW5G.js} +8 -7
- package/dist/{grade-compare-4VTXSQM5.js → grade-compare-JATGHA6Q.js} +37 -35
- package/dist/{gsapParser-UP3PNPC2.js → gsapParser-IEUSLYDJ.js} +11 -11
- package/dist/{gsapParserAcorn-OOTY2MVN.js → gsapParserAcorn-LZJKCFQI.js} +1 -1
- package/dist/{help-HXNOACHI.js → help-G6CIKCGS.js} +1 -1
- package/dist/{history-XDJUI4LC.js → history-CSJUHYTD.js} +9 -8
- package/dist/hyperframe.manifest.json +1 -1
- package/dist/hyperframe.runtime.iife.js +71 -65
- package/dist/hyperframes-player.global.js +3 -3
- package/dist/hyperframes-slideshow.global.js +1 -1
- package/dist/{info-KYRI3EZV.js → info-MTTUMW2C.js} +8 -8
- package/dist/{init-IL7EWMT5.js → init-LJYNI5EK.js} +30 -29
- package/dist/{inspect-TBNH23UC.js → inspect-HGDM2VJE.js} +31 -30
- package/dist/{installer-O2YMFSI4.js → installer-3XHURUDG.js} +5 -5
- package/dist/{keyframes-4GF62KAJ.js → keyframes-MSU7N53X.js} +59 -33
- package/dist/{lambda-JFL6M4XZ.js → lambda-2I2TIUSD.js} +8 -8
- package/dist/{layout-7MAEFR65.js → layout-KWOXZMN7.js} +31 -30
- package/dist/{lint-4AYHKYAM.js → lint-N53TLHFG.js} +7 -7
- package/dist/{lintProject-52SLJPRC.js → lintProject-EOUZA4EG.js} +1 -1
- package/dist/{list-3DP3D3MW.js → list-SHYPQC7U.js} +2 -2
- package/dist/{login-T54WQYRQ.js → login-TEB6PA3Y.js} +4 -4
- package/dist/{manager-MZIJY73J.js → manager-COSJVRAE.js} +2 -2
- package/dist/{manager-QROK2IH3.js → manager-PLRSZH5G.js} +10 -9
- package/dist/{media-treatment-4CXF7MSG.js → media-treatment-XTUKMIGE.js} +15 -14
- package/dist/{models-IS3I6JKU.js → models-4WKAPP2L.js} +14 -13
- package/dist/{motionShot-DVYJZOTQ.js → motionShot-PTKB4ILH.js} +17 -16
- package/dist/{normalize-audio-4527JIK4.js → normalize-audio-3NG326I2.js} +6 -6
- package/dist/{open-5JE46SAX.js → open-6S2LMF7R.js} +12 -12
- package/dist/{parakeetRunner-7JIJGJJ7.js → parakeetRunner-OEI35DVO.js} +15 -14
- package/dist/{pipeline-YEN3WFD2.js → pipeline-543FUKH4.js} +10 -9
- package/dist/{play-WFX67I7M.js → play-ETEGHP3B.js} +21 -21
- package/dist/{preflight-D377HVUZ.js → preflight-Y5IYUF2T.js} +11 -10
- package/dist/{present-XTSEKAC7.js → present-ZRSLMJ6J.js} +17 -17
- package/dist/{preview-5XH7EK6O.js → preview-CEJ3SVTY.js} +100 -65
- package/dist/{producer-TFFYF4ZM.js → producer-JFVFIV26.js} +1 -1
- package/dist/{projectConfig-6YUJHMCL.js → projectConfig-7EK3BS72.js} +7 -7
- package/dist/{publication-JK33Y55E.js → publication-Y54GYFMV.js} +3 -3
- package/dist/{publish-JHDGXWXU.js → publish-S3UJTPCV.js} +10 -10
- package/dist/{remove-background-P44MYAPJ.js → remove-background-YTATNQSI.js} +11 -10
- package/dist/{render-RBINWWP5.js → render-IIPXMSBO.js} +35 -34
- package/dist/{render-RJ3I4E3A.js → render-RN3W6YL4.js} +17 -16
- package/dist/{render-HJ34EGMN.js → render-WNIG4B3J.js} +6 -6
- package/dist/{render-batch-3D6XQYUC.js → render-batch-OYS3UQDB.js} +6 -6
- package/dist/renderSetupWorker.js +42 -4
- package/dist/{resolver-HCLTFZUW.js → resolver-OVCXVEDX.js} +5 -5
- package/dist/{sherpa-IPOUJM6Q.js → sherpa-NCSFD7S3.js} +14 -13
- package/dist/skills/hyperframes/references/format.md +1 -0
- package/dist/skills/media-use/scripts/lib/duck.mjs +18 -2
- package/dist/skills/media-use/scripts/lib/duck.test.mjs +79 -0
- package/dist/{skills-P67QEERC.js → skills-IUV3K3X7.js} +5 -5
- package/dist/{skillsUpdateCheck-IFMLRVIF.js → skillsUpdateCheck-NACBXMWW.js} +3 -3
- package/dist/{snapshot-4YM4NNWJ.js → snapshot-7S5USJ2I.js} +52 -46
- package/dist/{src-DCD3YMXX.js → src-CAR6PHI4.js} +10 -9
- package/dist/{src-SSV66L3F.js → src-HITT6NWG.js} +19 -6
- package/dist/{staticProjectServer-C7PPGLEQ.js → staticProjectServer-QR6VZBPT.js} +18 -18
- package/dist/studio/assets/{hyperframes-player-ChN3cOr0.js → hyperframes-player-DLOUZUct.js} +1 -1
- package/dist/studio/assets/{index-CHu83hHM.js → index-CAQ7OcNJ.js} +163 -163
- package/dist/studio/assets/{index-BYbFcRR0.js → index-D9kA6JUX.js} +1 -1
- package/dist/studio/index.html +1 -1
- package/dist/{studio-api-6YZ7PIQR.js → studio-api-HVNOJILH.js} +13 -11
- package/dist/{studioServer-EWHSE4GC.js → studioServer-3BG5FRJL.js} +53 -52
- package/dist/{telemetry-GGLBHZRZ.js → telemetry-PET2GFQG.js} +3 -3
- package/dist/{timeline-NKHQJXJ2.js → timeline-PVIC2Z5K.js} +20 -19
- package/dist/{tokens-FWNNDJ6R.js → tokens-4N46PWSF.js} +2 -2
- package/dist/{transcribe-TRPKXZ7L.js → transcribe-2DVBS7MH.js} +19 -18
- package/dist/{transcribe-VD2TMMC2.js → transcribe-IDC7JTM4.js} +13 -12
- package/dist/{updateCheck-CUPS6LU3.js → updateCheck-QRDVXU7I.js} +2 -2
- package/dist/{upgrade-23XO6MEX.js → upgrade-5CNE3TBH.js} +2 -2
- package/dist/{urlDownloader-YOAOONCK.js → urlDownloader-P2I25DFC.js} +7 -6
- package/dist/{validate-BWIW24G5.js → validate-CLR5PEOV.js} +25 -24
- package/dist/{video-XRXJS4GC.js → video-3CKZZBOB.js} +8 -7
- package/dist/warmCheck.js +38 -37
- package/package.json +1 -1
- package/dist/chunk-B2XLXD7V.js +0 -3897
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
splitElementInHtml,
|
|
20
20
|
unwrapElementsFromHtml,
|
|
21
21
|
wrapElementsInHtml
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-JU4T4VAA.js";
|
|
23
23
|
import {
|
|
24
24
|
MEDIA_LINK_ATTR,
|
|
25
25
|
relinkSplitHalves
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
requestedProjectPath,
|
|
33
33
|
requiredFfmpeg,
|
|
34
34
|
resolveLocalAudioPath
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-2OYYNKJ4.js";
|
|
36
36
|
import {
|
|
37
37
|
HistoryBusyError,
|
|
38
38
|
MAX_WINDOW_IDLE_MS,
|
|
@@ -46,7 +46,7 @@ import {
|
|
|
46
46
|
resolveProjectAndSignature,
|
|
47
47
|
resolveProjectSignature,
|
|
48
48
|
settledFileTag
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-OJNNKHAZ.js";
|
|
50
50
|
import {
|
|
51
51
|
PROXY_PARAMS_VERSION,
|
|
52
52
|
PROXY_PENDING_RETRY_AFTER_SECONDS,
|
|
@@ -68,7 +68,7 @@ import {
|
|
|
68
68
|
scanProjectMediaCodecMap,
|
|
69
69
|
shouldPrewarmProxy,
|
|
70
70
|
waitForProxy
|
|
71
|
-
} from "./chunk-
|
|
71
|
+
} from "./chunk-MCFPMUMT.js";
|
|
72
72
|
import {
|
|
73
73
|
STUDIO_MOTION_PATH,
|
|
74
74
|
createStudioMotionRenderBodyScript,
|
|
@@ -83,7 +83,7 @@ import {
|
|
|
83
83
|
import {
|
|
84
84
|
findTimelineScript,
|
|
85
85
|
parseGsapScriptAcorn
|
|
86
|
-
} from "./chunk-
|
|
86
|
+
} from "./chunk-FLREUEHW.js";
|
|
87
87
|
import {
|
|
88
88
|
atomicTempPath,
|
|
89
89
|
createFileAtomically,
|
|
@@ -102,19 +102,21 @@ import {
|
|
|
102
102
|
locateSystemFont
|
|
103
103
|
} from "./chunk-7FMUTGOH.js";
|
|
104
104
|
import {
|
|
105
|
+
GSAP_BASE_URL_META,
|
|
105
106
|
PREVIEW_PROXY_BOX_PARAM,
|
|
106
107
|
formatPreviewProxyBox,
|
|
107
108
|
formatRenderOutputTimestamp,
|
|
108
109
|
gsapCdnDist,
|
|
109
110
|
motionPathPluginUrl,
|
|
111
|
+
normalizeGsapBaseUrl,
|
|
110
112
|
parseFps,
|
|
111
113
|
parsePreviewProxyBox
|
|
112
|
-
} from "./chunk-
|
|
114
|
+
} from "./chunk-JVTWX5G3.js";
|
|
113
115
|
import {
|
|
114
116
|
addScenePartsManifest,
|
|
115
117
|
ensureHfIds,
|
|
116
118
|
stampHfIdsInPlace
|
|
117
|
-
} from "./chunk-
|
|
119
|
+
} from "./chunk-GAFEU6AB.js";
|
|
118
120
|
import {
|
|
119
121
|
AFTER_FONTS_SCRIPT_TYPE,
|
|
120
122
|
RUNTIME_BOOTSTRAP_ATTR,
|
|
@@ -128,7 +130,7 @@ import {
|
|
|
128
130
|
resolveRateSpec,
|
|
129
131
|
sourceTimeAt,
|
|
130
132
|
stripEmbeddedRuntimeScripts
|
|
131
|
-
} from "./chunk-
|
|
133
|
+
} from "./chunk-2D5WP2NI.js";
|
|
132
134
|
import {
|
|
133
135
|
HTML_ATTRIBUTE_ENTITIES,
|
|
134
136
|
MagicString,
|
|
@@ -136,7 +138,7 @@ import {
|
|
|
136
138
|
decodeAuthoredAttribute,
|
|
137
139
|
scanHtmlOpeningTags,
|
|
138
140
|
unrollComputedTimeline
|
|
139
|
-
} from "./chunk-
|
|
141
|
+
} from "./chunk-B7RJV74O.js";
|
|
140
142
|
import {
|
|
141
143
|
ProjectRootMissingError,
|
|
142
144
|
folderGone,
|
|
@@ -559,6 +561,16 @@ function mergePercentageKeyframes(keyframes) {
|
|
|
559
561
|
}
|
|
560
562
|
return [...byPercentage.values()].sort((a, b) => a.percentage - b.percentage);
|
|
561
563
|
}
|
|
564
|
+
function distributeArrayKeyframes(channels) {
|
|
565
|
+
return mergePercentageKeyframes(
|
|
566
|
+
[...channels].flatMap(
|
|
567
|
+
([key, values]) => values.map((value, index) => ({
|
|
568
|
+
percentage: values.length > 1 ? Math.round(index / (values.length - 1) * 100) : 0,
|
|
569
|
+
properties: { [key]: value }
|
|
570
|
+
}))
|
|
571
|
+
)
|
|
572
|
+
);
|
|
573
|
+
}
|
|
562
574
|
function buildArcPath(coords, curviness, autoRotate, isCubic) {
|
|
563
575
|
const first = coords[0];
|
|
564
576
|
if (coords.length < 2 || !first) return void 0;
|
|
@@ -1419,19 +1431,9 @@ function parseSimpleArrayKeyframes(node, scope) {
|
|
|
1419
1431
|
easeEach = tryResolveStringProp(prop.value, scope) ?? easeEach;
|
|
1420
1432
|
}
|
|
1421
1433
|
}
|
|
1422
|
-
const maxLen = Math.max(...[...arrayProps.values()].map((a) => a.length), 0);
|
|
1423
|
-
const keyframes = [];
|
|
1424
|
-
for (let i = 0; i < maxLen; i++) {
|
|
1425
|
-
const percentage = maxLen > 1 ? Math.round(i / (maxLen - 1) * 100) : 0;
|
|
1426
|
-
const properties = {};
|
|
1427
|
-
for (const [key, values] of arrayProps) {
|
|
1428
|
-
if (i < values.length) properties[key] = values[i];
|
|
1429
|
-
}
|
|
1430
|
-
keyframes.push({ percentage, properties });
|
|
1431
|
-
}
|
|
1432
1434
|
return {
|
|
1433
1435
|
format: "simple-array",
|
|
1434
|
-
keyframes,
|
|
1436
|
+
keyframes: distributeArrayKeyframes(arrayProps),
|
|
1435
1437
|
...ease ? { ease } : {},
|
|
1436
1438
|
...easeEach ? { easeEach } : {}
|
|
1437
1439
|
};
|
|
@@ -3875,7 +3877,7 @@ function tagRootCompositionFile(bodyHtml, compPath) {
|
|
|
3875
3877
|
function rootHeadContent(rootHtml) {
|
|
3876
3878
|
return rootHtml.match(/<head[^>]*>([\s\S]*?)<\/head>/i)?.[1] ?? "";
|
|
3877
3879
|
}
|
|
3878
|
-
function buildSubCompositionHtml(projectDir, compPath, runtimeUrl, baseHref, rawOverride) {
|
|
3880
|
+
function buildSubCompositionHtml(projectDir, compPath, runtimeUrl, baseHref, rawOverride, gsapBaseUrl) {
|
|
3879
3881
|
const compFile = join22(projectDir, compPath);
|
|
3880
3882
|
if (!existsSync(compFile)) return null;
|
|
3881
3883
|
const rawComp = rawOverride ?? readFileSync3(compFile, "utf-8");
|
|
@@ -3927,7 +3929,7 @@ ${compHeadContent}`;
|
|
|
3927
3929
|
<script ${RUNTIME_BOOTSTRAP_ATTR}="1" src="${runtimeUrl}"></script>`;
|
|
3928
3930
|
if (!headContent.includes("gsap")) {
|
|
3929
3931
|
headContent += `
|
|
3930
|
-
<script src="${gsapCdnDist()}gsap.min.js"></script>`;
|
|
3932
|
+
<script src="${gsapCdnDist(void 0, gsapBaseUrl).replace(/&/g, "&")}gsap.min.js"></script>`;
|
|
3931
3933
|
}
|
|
3932
3934
|
const htmlOpen = htmlAttrs ? `<html ${htmlAttrs}>` : "<html>";
|
|
3933
3935
|
const bodyOpen = bodyAttrs ? `<body ${bodyAttrs}>` : "<body>";
|
|
@@ -4641,7 +4643,7 @@ function resolveGsapWriter(env) {
|
|
|
4641
4643
|
throw new Error(`Invalid ${GSAP_WRITER_MIGRATION.flag}=${configured}; expected recast or acorn`);
|
|
4642
4644
|
}
|
|
4643
4645
|
async function loadGsapParser() {
|
|
4644
|
-
return import("./gsapParser-
|
|
4646
|
+
return import("./gsapParser-IEUSLYDJ.js");
|
|
4645
4647
|
}
|
|
4646
4648
|
function isDanglingSymlinkInProject(projectDir, lexicalPath) {
|
|
4647
4649
|
if (!isSafePath(projectDir, dirname3(lexicalPath))) return false;
|
|
@@ -5500,7 +5502,7 @@ async function prepareGsapMutationScript(c, res, firstMutation) {
|
|
|
5500
5502
|
let block = extractGsapScriptBlock(html);
|
|
5501
5503
|
if (!block && (firstMutation.type === "add" || firstMutation.type === "add-with-keyframes")) {
|
|
5502
5504
|
const compId = html.match(/data-composition-id="([^"]+)"/)?.[1] ?? "main";
|
|
5503
|
-
const { GSAP_CDN } = await import("./dist-
|
|
5505
|
+
const { GSAP_CDN } = await import("./dist-2YTN2UGY.js");
|
|
5504
5506
|
const bootstrap = [
|
|
5505
5507
|
`<script src="${GSAP_CDN}"></script>`,
|
|
5506
5508
|
"<script>",
|
|
@@ -7375,9 +7377,12 @@ function lazyPreviewImages(html) {
|
|
|
7375
7377
|
return parts.join("");
|
|
7376
7378
|
}
|
|
7377
7379
|
var PROJECT_SIGNATURE_META = "hyperframes-project-signature";
|
|
7378
|
-
|
|
7379
|
-
|
|
7380
|
-
|
|
7380
|
+
function escapeGsapUrl(url) {
|
|
7381
|
+
return url.replace(/&/g, "&").replace(/"/g, """);
|
|
7382
|
+
}
|
|
7383
|
+
function gsapScriptTag(file, baseUrl) {
|
|
7384
|
+
return `<script src="${escapeGsapUrl(gsapCdnDist(void 0, baseUrl) + file)}"></script>`;
|
|
7385
|
+
}
|
|
7381
7386
|
function injectProjectSignature(html, signature) {
|
|
7382
7387
|
const tag = `<meta name="${PROJECT_SIGNATURE_META}" content="${signature}">`;
|
|
7383
7388
|
if (html.includes(`name="${PROJECT_SIGNATURE_META}"`)) {
|
|
@@ -7433,16 +7438,16 @@ function htmlUsesMotionPath(html) {
|
|
|
7433
7438
|
function htmlHasMotionPathPlugin(html) {
|
|
7434
7439
|
return /<script\b[^>]*src=["'][^"']*MotionPathPlugin/i.test(html) || /\bwindow\.MotionPathPlugin\b/.test(html) || /\bMotionPathPlugin\s*=\s*/.test(html);
|
|
7435
7440
|
}
|
|
7436
|
-
function injectMotionPathPluginIfNeeded(html) {
|
|
7441
|
+
function injectMotionPathPluginIfNeeded(html, baseUrl) {
|
|
7437
7442
|
if (!htmlUsesMotionPath(html) || htmlHasMotionPathPlugin(html)) return html;
|
|
7438
7443
|
const gsap = findGsapCoreScript(html);
|
|
7439
7444
|
if (gsap) {
|
|
7440
7445
|
const version = gsap.src.match(/gsap@([\d.]+)/)?.[1];
|
|
7441
7446
|
const ordering = `${gsap.type ? ` type="${gsap.type}"` : ""}${gsap.defer ? " defer" : ""}`;
|
|
7442
|
-
const pluginTag = `<script${ordering} src="${motionPathPluginUrl(version)}"></script>`;
|
|
7447
|
+
const pluginTag = `<script${ordering} src="${escapeGsapUrl(motionPathPluginUrl(version, baseUrl))}"></script>`;
|
|
7443
7448
|
return html.slice(0, gsap.end) + "\n" + pluginTag + html.slice(gsap.end);
|
|
7444
7449
|
}
|
|
7445
|
-
return injectScriptTagIntoHead(html,
|
|
7450
|
+
return injectScriptTagIntoHead(html, gsapScriptTag("MotionPathPlugin.min.js", baseUrl));
|
|
7446
7451
|
}
|
|
7447
7452
|
function isGsapCoreUrl(src) {
|
|
7448
7453
|
const base = "http://localhost/";
|
|
@@ -7475,30 +7480,32 @@ function scriptCloseEnd(html, start) {
|
|
|
7475
7480
|
const closeAt = close.exec(html)?.index;
|
|
7476
7481
|
return closeAt === void 0 ? 0 : html.indexOf(">", closeAt) + 1;
|
|
7477
7482
|
}
|
|
7478
|
-
function injectStudioMotionDependencies(html, manifestContent) {
|
|
7483
|
+
function injectStudioMotionDependencies(html, manifestContent, baseUrl) {
|
|
7479
7484
|
const manifest = parseStudioMotionManifestContent(manifestContent);
|
|
7480
7485
|
if (!manifest.hasMotion) return html;
|
|
7481
7486
|
let next = html;
|
|
7482
|
-
if (!htmlHasGsap(next))
|
|
7487
|
+
if (!htmlHasGsap(next))
|
|
7488
|
+
next = injectScriptTagIntoHead(next, gsapScriptTag("gsap.min.js", baseUrl));
|
|
7483
7489
|
if (manifest.hasCustomEase && !htmlHasCustomEase(next)) {
|
|
7484
|
-
next = injectScriptTagIntoHead(next,
|
|
7490
|
+
next = injectScriptTagIntoHead(next, gsapScriptTag("CustomEase.min.js", baseUrl));
|
|
7485
7491
|
}
|
|
7486
7492
|
return next;
|
|
7487
7493
|
}
|
|
7488
|
-
function injectStudioMotionScript(html, projectDir, activeCompositionPath) {
|
|
7494
|
+
function injectStudioMotionScript(html, projectDir, activeCompositionPath, baseUrl) {
|
|
7489
7495
|
const manifestContent = readStudioMotionManifestContent(projectDir);
|
|
7490
7496
|
const script = createStudioMotionRenderBodyScript(manifestContent, {
|
|
7491
7497
|
activeCompositionPath
|
|
7492
7498
|
});
|
|
7493
7499
|
if (!script) return html;
|
|
7494
|
-
const withDependencies = injectStudioMotionDependencies(html, manifestContent);
|
|
7500
|
+
const withDependencies = injectStudioMotionDependencies(html, manifestContent, baseUrl);
|
|
7495
7501
|
const tag = `<script type="${AFTER_FONTS_SCRIPT_TYPE}">${script.replace(/<\/script/gi, "<\\/script")}</script>`;
|
|
7496
7502
|
return insertBeforeCloseTag(withDependencies, "body", tag) ?? `${withDependencies}${tag}`;
|
|
7497
7503
|
}
|
|
7498
7504
|
var GSAP_FALLBACK_ATTR = "data-hf-gsap-fallback";
|
|
7499
|
-
|
|
7505
|
+
function gsapCdnFallbackScript(baseUrl) {
|
|
7506
|
+
return `<script ${GSAP_FALLBACK_ATTR}>
|
|
7500
7507
|
(function(){
|
|
7501
|
-
var cdnBase
|
|
7508
|
+
var cdnBase=${JSON.stringify(gsapCdnDist(void 0, baseUrl)).replace(/</g, "\\u003c")};
|
|
7502
7509
|
var loaded={};
|
|
7503
7510
|
function loadFallback(file){
|
|
7504
7511
|
if(loaded[file])return loaded[file];
|
|
@@ -7518,10 +7525,12 @@ var GSAP_CDN_FALLBACK_SCRIPT = `<script ${GSAP_FALLBACK_ATTR}>
|
|
|
7518
7525
|
},true);
|
|
7519
7526
|
})();
|
|
7520
7527
|
</script>`;
|
|
7521
|
-
|
|
7528
|
+
}
|
|
7529
|
+
function injectGsapCdnFallback(html, baseUrl) {
|
|
7522
7530
|
if (html.includes(GSAP_FALLBACK_ATTR)) return html;
|
|
7523
|
-
if (html.includes("<head>"))
|
|
7524
|
-
|
|
7531
|
+
if (html.includes("<head>"))
|
|
7532
|
+
return html.replace("<head>", "<head>" + gsapCdnFallbackScript(baseUrl));
|
|
7533
|
+
return gsapCdnFallbackScript(baseUrl) + html;
|
|
7525
7534
|
}
|
|
7526
7535
|
function parsePreviewVariablesParam(raw) {
|
|
7527
7536
|
if (raw === void 0 || raw === "") return { ok: true, values: null };
|
|
@@ -7548,8 +7557,8 @@ function previewVariablesFromRequest(rawVariables) {
|
|
|
7548
7557
|
var PREVIEW_CAPTURE_PARAM = "hf-capture";
|
|
7549
7558
|
var EARLY_ERRORS_SCRIPT = `<script>(function(){var seen=window.${STUDIO_PREVIEW_ERRORS}=[];
|
|
7550
7559
|
addEventListener("error",function(e){seen.push(e.message||String(e))});})();</script>`;
|
|
7551
|
-
function injectStudioPreviewAugmentations(html, adapter, projectDir, activeCompositionPath,
|
|
7552
|
-
const marked = capture ? injectTagsAtHeadStart(
|
|
7560
|
+
function injectStudioPreviewAugmentations(html, adapter, projectDir, activeCompositionPath, options) {
|
|
7561
|
+
const marked = options.capture ? injectTagsAtHeadStart(
|
|
7553
7562
|
html,
|
|
7554
7563
|
`<meta name="${STUDIO_PREVIEW_MARK_META}" content="${STUDIO_PREVIEW_CAPTURE_MODE}">`
|
|
7555
7564
|
) : injectTagsAtHeadStart(
|
|
@@ -7559,11 +7568,20 @@ function injectStudioPreviewAugmentations(html, adapter, projectDir, activeCompo
|
|
|
7559
7568
|
return injectStudioMotionScript(
|
|
7560
7569
|
injectMotionPathPluginIfNeeded(
|
|
7561
7570
|
injectGsapCdnFallback(
|
|
7562
|
-
injectProjectSignature(
|
|
7563
|
-
|
|
7571
|
+
injectProjectSignature(
|
|
7572
|
+
injectTagsAtHeadStart(
|
|
7573
|
+
marked,
|
|
7574
|
+
`<meta name="${GSAP_BASE_URL_META}" content="${escapeGsapUrl(options.gsapBaseUrl)}">`
|
|
7575
|
+
),
|
|
7576
|
+
resolveProjectSignature(adapter, projectDir)
|
|
7577
|
+
),
|
|
7578
|
+
options.gsapBaseUrl
|
|
7579
|
+
),
|
|
7580
|
+
options.gsapBaseUrl
|
|
7564
7581
|
),
|
|
7565
7582
|
projectDir,
|
|
7566
|
-
activeCompositionPath
|
|
7583
|
+
activeCompositionPath,
|
|
7584
|
+
options.gsapBaseUrl
|
|
7567
7585
|
);
|
|
7568
7586
|
}
|
|
7569
7587
|
async function transformPreviewHtml(html, adapter, project, activeCompositionPath) {
|
|
@@ -7607,6 +7625,16 @@ var PREVIEW_BUNDLE_OPTIONS = {
|
|
|
7607
7625
|
var previewBaseHref = (projectId) => `/api/projects/${encodeURIComponent(projectId)}/preview/`;
|
|
7608
7626
|
var withPreviewBase = (html, projectId) => hasBaseElement(html) ? html : injectTagsAtHeadStart(html, `<base href="${previewBaseHref(projectId)}">`);
|
|
7609
7627
|
function registerPreviewRoutes(api, adapter) {
|
|
7628
|
+
let gsapBaseUrl;
|
|
7629
|
+
try {
|
|
7630
|
+
gsapBaseUrl = normalizeGsapBaseUrl(process.env.HYPERFRAMES_GSAP_BASE_URL);
|
|
7631
|
+
} catch (cause) {
|
|
7632
|
+
throw new Error(
|
|
7633
|
+
"Invalid HYPERFRAMES_GSAP_BASE_URL: use an absolute HTTP(S) npm mirror root without credentials, query, or fragment",
|
|
7634
|
+
{ cause }
|
|
7635
|
+
);
|
|
7636
|
+
}
|
|
7637
|
+
const gsapEtagSalt = `:gsap:${createHash22("sha1").update(gsapBaseUrl).digest("hex").slice(0, 12)}`;
|
|
7610
7638
|
const previewCacheHeaders = (etag) => ({
|
|
7611
7639
|
"Cache-Control": "private, no-cache",
|
|
7612
7640
|
ETag: etag
|
|
@@ -7641,7 +7669,7 @@ function registerPreviewRoutes(api, adapter) {
|
|
|
7641
7669
|
adapter,
|
|
7642
7670
|
project.dir,
|
|
7643
7671
|
mainCompositionPath,
|
|
7644
|
-
capture
|
|
7672
|
+
{ capture, gsapBaseUrl }
|
|
7645
7673
|
);
|
|
7646
7674
|
if (previewVariables) bundled = injectPreviewVariables(bundled, previewVariables);
|
|
7647
7675
|
bundled = await injectMediaCodecMap(
|
|
@@ -7669,7 +7697,7 @@ function registerPreviewRoutes(api, adapter) {
|
|
|
7669
7697
|
adapter,
|
|
7670
7698
|
project.dir,
|
|
7671
7699
|
fallback.compositionPath,
|
|
7672
|
-
capture
|
|
7700
|
+
{ capture, gsapBaseUrl }
|
|
7673
7701
|
);
|
|
7674
7702
|
if (previewVariables) {
|
|
7675
7703
|
fallbackAugmented = injectPreviewVariables(fallbackAugmented, previewVariables);
|
|
@@ -7694,7 +7722,7 @@ function registerPreviewRoutes(api, adapter) {
|
|
|
7694
7722
|
if (vars.error !== void 0) return c.json({ error: vars.error }, 400);
|
|
7695
7723
|
const previewVariables = vars.values;
|
|
7696
7724
|
const capture = c.req.query(PREVIEW_CAPTURE_PARAM) !== void 0;
|
|
7697
|
-
const etag = `"preview:${signature}${variablesEtagSalt(vars.raw)}${capture ? ":capture" : ""}"`;
|
|
7725
|
+
const etag = `"preview:${signature}${gsapEtagSalt}${variablesEtagSalt(vars.raw)}${capture ? ":capture" : ""}"`;
|
|
7698
7726
|
const ifNoneMatch = c.req.header("If-None-Match");
|
|
7699
7727
|
if (ifNoneMatch === etag) {
|
|
7700
7728
|
return new Response(null, {
|
|
@@ -7744,7 +7772,7 @@ ${etag}`;
|
|
|
7744
7772
|
}
|
|
7745
7773
|
const compPathHash = createHash22("sha1").update(compPath).digest("hex");
|
|
7746
7774
|
const capture = c.req.query(PREVIEW_CAPTURE_PARAM) !== void 0;
|
|
7747
|
-
const etag = `"comp:v2:${compPathHash}:${signature}${variablesEtagSalt(vars.raw)}${capture ? ":capture" : ""}"`;
|
|
7775
|
+
const etag = `"comp:v2:${compPathHash}:${signature}${gsapEtagSalt}${variablesEtagSalt(vars.raw)}${capture ? ":capture" : ""}"`;
|
|
7748
7776
|
const ifNoneMatch = c.req.header("If-None-Match");
|
|
7749
7777
|
if (ifNoneMatch === etag) {
|
|
7750
7778
|
return new Response(null, {
|
|
@@ -7760,12 +7788,16 @@ ${etag}`;
|
|
|
7760
7788
|
compPath,
|
|
7761
7789
|
adapter.runtimeUrl,
|
|
7762
7790
|
baseHref,
|
|
7763
|
-
stamped
|
|
7791
|
+
stamped,
|
|
7792
|
+
gsapBaseUrl
|
|
7764
7793
|
);
|
|
7765
7794
|
if (!html) return c.text("not found", 404);
|
|
7766
7795
|
recordPreviewReferences(project.dir, html);
|
|
7767
7796
|
html = ensureHfIds(await transformPreviewHtml(html, adapter, project, compPath));
|
|
7768
|
-
html = injectStudioPreviewAugmentations(html, adapter, project.dir, compPath,
|
|
7797
|
+
html = injectStudioPreviewAugmentations(html, adapter, project.dir, compPath, {
|
|
7798
|
+
capture,
|
|
7799
|
+
gsapBaseUrl
|
|
7800
|
+
});
|
|
7769
7801
|
if (previewVariables) html = injectPreviewVariables(html, previewVariables);
|
|
7770
7802
|
html = await injectMediaCodecMap(html, adapter, project.dir, compPath, mediaCodecProbeCache);
|
|
7771
7803
|
return c.html(html, 200, previewCacheHeaders(etag));
|
|
@@ -3714,7 +3714,8 @@ var require_dist = __commonJS({
|
|
|
3714
3714
|
import { parse } from "acorn";
|
|
3715
3715
|
var import_postcss_selector_parser = __toESM(require_dist(), 1);
|
|
3716
3716
|
import postcss from "postcss";
|
|
3717
|
-
import { parse as parse2 } from "acorn";
|
|
3717
|
+
import { parse as parse2, parseExpressionAt } from "acorn";
|
|
3718
|
+
import { parse as parse3 } from "acorn";
|
|
3718
3719
|
import postcss2 from "postcss";
|
|
3719
3720
|
import postcss3 from "postcss";
|
|
3720
3721
|
|
|
@@ -3753,7 +3754,6 @@ function trackKindOf(node) {
|
|
|
3753
3754
|
}
|
|
3754
3755
|
|
|
3755
3756
|
// ../lint/dist/index.js
|
|
3756
|
-
import { parse as parse3, parseExpressionAt } from "acorn";
|
|
3757
3757
|
import { createHash } from "crypto";
|
|
3758
3758
|
import { existsSync as existsSync2, readFileSync, readdirSync } from "fs";
|
|
3759
3759
|
import { dirname as dirname2, extname, join as join3, relative as relative2, resolve } from "path";
|
|
@@ -3833,7 +3833,18 @@ function parseStartExpression(raw) {
|
|
|
3833
3833
|
offset: reference.operator === "-" ? -reference.magnitude : reference.magnitude
|
|
3834
3834
|
};
|
|
3835
3835
|
}
|
|
3836
|
-
function
|
|
3836
|
+
function compositionScopeOf(el) {
|
|
3837
|
+
return (el.getAttribute("data-composition-id") !== null ? el.parentElement : el)?.closest?.(
|
|
3838
|
+
"[data-composition-id]"
|
|
3839
|
+
) ?? null;
|
|
3840
|
+
}
|
|
3841
|
+
function findReferenceTargetEl(doc, refId, from) {
|
|
3842
|
+
const scope = compositionScopeOf(from);
|
|
3843
|
+
if (scope) {
|
|
3844
|
+
for (const candidate of scope.querySelectorAll?.(`[id="${refId}"]`) ?? []) {
|
|
3845
|
+
if (compositionScopeOf(candidate) === scope) return candidate;
|
|
3846
|
+
}
|
|
3847
|
+
}
|
|
3837
3848
|
return doc.getElementById(refId) ?? doc.querySelector(`[data-composition-id="${refId}"]`);
|
|
3838
3849
|
}
|
|
3839
3850
|
function resolveReferencedStart(doc, el, startCache, visiting) {
|
|
@@ -3852,7 +3863,7 @@ function resolveReferencedStart(doc, el, startCache, visiting) {
|
|
|
3852
3863
|
startCache.set(el, value);
|
|
3853
3864
|
return value;
|
|
3854
3865
|
}
|
|
3855
|
-
const target = findReferenceTargetEl(doc, expression.refId);
|
|
3866
|
+
const target = findReferenceTargetEl(doc, expression.refId, el);
|
|
3856
3867
|
if (!target) {
|
|
3857
3868
|
startCache.set(el, 0);
|
|
3858
3869
|
return 0;
|
|
@@ -4690,11 +4701,96 @@ function buildLintContext(html, options = {}) {
|
|
|
4690
4701
|
options
|
|
4691
4702
|
};
|
|
4692
4703
|
}
|
|
4704
|
+
var GLSL_SCRIPT_TYPES = /* @__PURE__ */ new Set(["x-shader/x-fragment", "x-shader/x-vertex", "text/glsl"]);
|
|
4705
|
+
function withoutComments(source) {
|
|
4706
|
+
return source.replace(/\/\*[\s\S]*?\*\/|\/\/[^\r\n]*/g, (text) => text.replace(/[^\r\n]/g, " "));
|
|
4707
|
+
}
|
|
4708
|
+
function staticShaders(source) {
|
|
4709
|
+
const shaders = [];
|
|
4710
|
+
try {
|
|
4711
|
+
const ast = parse2(source, {
|
|
4712
|
+
ecmaVersion: "latest",
|
|
4713
|
+
sourceType: "module",
|
|
4714
|
+
allowReturnOutsideFunction: true
|
|
4715
|
+
});
|
|
4716
|
+
simple(ast, {
|
|
4717
|
+
Literal(node) {
|
|
4718
|
+
if (typeof node.value !== "string") return;
|
|
4719
|
+
shaders.push({
|
|
4720
|
+
text: node.value,
|
|
4721
|
+
start: node.start + 1,
|
|
4722
|
+
exactOffsets: source.slice(node.start + 1, node.end - 1) === node.value
|
|
4723
|
+
});
|
|
4724
|
+
},
|
|
4725
|
+
TemplateLiteral(node) {
|
|
4726
|
+
if (node.expressions.length !== 0) return;
|
|
4727
|
+
const value = node.quasis[0]?.value;
|
|
4728
|
+
if (value?.cooked == null) return;
|
|
4729
|
+
shaders.push({
|
|
4730
|
+
text: value.cooked,
|
|
4731
|
+
start: node.start + 1,
|
|
4732
|
+
exactOffsets: source.slice(node.start + 1, node.end - 1) === value.cooked
|
|
4733
|
+
});
|
|
4734
|
+
}
|
|
4735
|
+
});
|
|
4736
|
+
} catch {
|
|
4737
|
+
}
|
|
4738
|
+
return shaders.filter(({ text }) => /\bvoid\s+main\s*\(/.test(withoutComments(text)));
|
|
4739
|
+
}
|
|
4740
|
+
function isNumber(node, value) {
|
|
4741
|
+
return node?.type === "Literal" && node.value === value;
|
|
4742
|
+
}
|
|
4743
|
+
function isCall(node, name) {
|
|
4744
|
+
return node?.type === "CallExpression" && node.callee.type === "Identifier" && node.callee.name === name;
|
|
4745
|
+
}
|
|
4746
|
+
function unboundedCosine(node) {
|
|
4747
|
+
if (node.type !== "CallExpression") return false;
|
|
4748
|
+
if (isCall(node, "dot")) return node.arguments.length === 2;
|
|
4749
|
+
if (!isCall(node, "max") || node.arguments.length !== 2) return false;
|
|
4750
|
+
const a = argumentAt(node, 0);
|
|
4751
|
+
const b = argumentAt(node, 1);
|
|
4752
|
+
return zeroFlooredDot(a, b) || zeroFlooredDot(b, a);
|
|
4753
|
+
}
|
|
4754
|
+
function argumentAt(call, index) {
|
|
4755
|
+
const node = call.arguments[index];
|
|
4756
|
+
return node?.type === "SpreadElement" ? void 0 : node;
|
|
4757
|
+
}
|
|
4758
|
+
function zeroFlooredDot(a, b) {
|
|
4759
|
+
return isCall(a, "dot") && isNumber(b, 0);
|
|
4760
|
+
}
|
|
4761
|
+
function unsafeCosinePower(call) {
|
|
4762
|
+
if (call.arguments.length !== 2) return false;
|
|
4763
|
+
const [base2] = call.arguments;
|
|
4764
|
+
return base2?.type === "BinaryExpression" && base2.operator === "-" && base2.left.type !== "PrivateIdentifier" && isNumber(base2.left, 1) && unboundedCosine(base2.right);
|
|
4765
|
+
}
|
|
4766
|
+
function unsafePowOffsets(source) {
|
|
4767
|
+
const offsets = [];
|
|
4768
|
+
const masked = withoutComments(source);
|
|
4769
|
+
for (const match of masked.matchAll(/\bpow\s*\(/g)) {
|
|
4770
|
+
try {
|
|
4771
|
+
const expression = parseExpressionAt(masked, match.index, { ecmaVersion: "latest" });
|
|
4772
|
+
simple(expression, {
|
|
4773
|
+
CallExpression(node) {
|
|
4774
|
+
if (node.start === match.index && unsafeCosinePower(node)) offsets.push(node.start);
|
|
4775
|
+
}
|
|
4776
|
+
});
|
|
4777
|
+
} catch {
|
|
4778
|
+
}
|
|
4779
|
+
}
|
|
4780
|
+
return offsets;
|
|
4781
|
+
}
|
|
4782
|
+
function shaderDomainOffsets(source, glsl = false) {
|
|
4783
|
+
const shaders = glsl ? [{ text: source, start: 0, exactOffsets: true }] : staticShaders(source);
|
|
4784
|
+
return shaders.flatMap(
|
|
4785
|
+
({ text, start, exactOffsets }) => unsafePowOffsets(text).map((offset) => exactOffsets ? start + offset : void 0)
|
|
4786
|
+
);
|
|
4787
|
+
}
|
|
4693
4788
|
var SCRIPT_SYNTAX_EXEMPT_TYPES = /* @__PURE__ */ new Set([
|
|
4694
4789
|
"application/json",
|
|
4695
4790
|
"application/hyperframes-slideshow+json",
|
|
4696
4791
|
"importmap",
|
|
4697
|
-
"module"
|
|
4792
|
+
"module",
|
|
4793
|
+
...GLSL_SCRIPT_TYPES
|
|
4698
4794
|
]);
|
|
4699
4795
|
function repeatedDescendantId(selector) {
|
|
4700
4796
|
let repeated = null;
|
|
@@ -5493,7 +5589,7 @@ function driftingFields(members) {
|
|
|
5493
5589
|
return values.some((value) => Math.abs(value - first) > SYNC_TOLERANCE_S);
|
|
5494
5590
|
}).map(({ field }) => field);
|
|
5495
5591
|
}
|
|
5496
|
-
function
|
|
5592
|
+
function compositionScopeOf2(tag, compositions) {
|
|
5497
5593
|
let scope = -1;
|
|
5498
5594
|
for (const composition of compositions) {
|
|
5499
5595
|
const end = composition.endIndex ?? composition.closeIndex ?? Number.POSITIVE_INFINITY;
|
|
@@ -5512,7 +5608,7 @@ function groupByLink(tags) {
|
|
|
5512
5608
|
for (const tag of tags) {
|
|
5513
5609
|
const link = readAttr(tag.raw, "data-link");
|
|
5514
5610
|
if (!link) continue;
|
|
5515
|
-
const key = `${
|
|
5611
|
+
const key = `${compositionScopeOf2(tag, compositions)}\0${link}`;
|
|
5516
5612
|
const group = groups.get(key) ?? { link, members: [] };
|
|
5517
5613
|
group.members.push(tag);
|
|
5518
5614
|
groups.set(key, group);
|
|
@@ -6442,7 +6538,7 @@ function callsFor(script) {
|
|
|
6442
6538
|
if (cached) return cached;
|
|
6443
6539
|
const calls = [];
|
|
6444
6540
|
try {
|
|
6445
|
-
const ast =
|
|
6541
|
+
const ast = parse3(script.content, {
|
|
6446
6542
|
ecmaVersion: "latest",
|
|
6447
6543
|
sourceType: "script",
|
|
6448
6544
|
allowReturnOutsideFunction: true
|
|
@@ -7676,11 +7772,11 @@ function deriveDurationFromClips(tags, rootTag) {
|
|
|
7676
7772
|
return resolveCompositionDuration({ authoredDurationSeconds: null, clipEndsSeconds: clipEnds });
|
|
7677
7773
|
}
|
|
7678
7774
|
async function loadParseGsapScript() {
|
|
7679
|
-
const mod = await import("./gsapParserAcorn-
|
|
7775
|
+
const mod = await import("./gsapParserAcorn-LZJKCFQI.js");
|
|
7680
7776
|
return mod.parseGsapScriptAcorn;
|
|
7681
7777
|
}
|
|
7682
7778
|
async function loadGsapScriptMotionPathFirstUseIndex() {
|
|
7683
|
-
const mod = await import("./gsapParserAcorn-
|
|
7779
|
+
const mod = await import("./gsapParserAcorn-LZJKCFQI.js");
|
|
7684
7780
|
return mod.gsapScriptMotionPathFirstUseIndex;
|
|
7685
7781
|
}
|
|
7686
7782
|
var SCENE_BOUNDARY_EPSILON_SECONDS = 0.05;
|
|
@@ -10311,89 +10407,6 @@ var structureRules = [
|
|
|
10311
10407
|
return topLevelElements(root).filter((row) => !isSubCompositionHost(row)).flatMap((row) => neverVisibleNestedFindings(row, severity));
|
|
10312
10408
|
}
|
|
10313
10409
|
];
|
|
10314
|
-
function withoutComments(source) {
|
|
10315
|
-
return source.replace(/\/\*[\s\S]*?\*\/|\/\/[^\r\n]*/g, (text) => text.replace(/[^\r\n]/g, " "));
|
|
10316
|
-
}
|
|
10317
|
-
function staticShaders(source) {
|
|
10318
|
-
const shaders = [];
|
|
10319
|
-
try {
|
|
10320
|
-
const ast = parse3(source, {
|
|
10321
|
-
ecmaVersion: "latest",
|
|
10322
|
-
sourceType: "module",
|
|
10323
|
-
allowReturnOutsideFunction: true
|
|
10324
|
-
});
|
|
10325
|
-
simple(ast, {
|
|
10326
|
-
Literal(node) {
|
|
10327
|
-
if (typeof node.value !== "string") return;
|
|
10328
|
-
shaders.push({
|
|
10329
|
-
text: node.value,
|
|
10330
|
-
start: node.start + 1,
|
|
10331
|
-
exactOffsets: source.slice(node.start + 1, node.end - 1) === node.value
|
|
10332
|
-
});
|
|
10333
|
-
},
|
|
10334
|
-
TemplateLiteral(node) {
|
|
10335
|
-
if (node.expressions.length !== 0) return;
|
|
10336
|
-
const value = node.quasis[0]?.value;
|
|
10337
|
-
if (value?.cooked == null) return;
|
|
10338
|
-
shaders.push({
|
|
10339
|
-
text: value.cooked,
|
|
10340
|
-
start: node.start + 1,
|
|
10341
|
-
exactOffsets: source.slice(node.start + 1, node.end - 1) === value.cooked
|
|
10342
|
-
});
|
|
10343
|
-
}
|
|
10344
|
-
});
|
|
10345
|
-
} catch {
|
|
10346
|
-
}
|
|
10347
|
-
return shaders.filter(({ text }) => /\bvoid\s+main\s*\(/.test(withoutComments(text)));
|
|
10348
|
-
}
|
|
10349
|
-
function isNumber(node, value) {
|
|
10350
|
-
return node?.type === "Literal" && node.value === value;
|
|
10351
|
-
}
|
|
10352
|
-
function isCall(node, name) {
|
|
10353
|
-
return node?.type === "CallExpression" && node.callee.type === "Identifier" && node.callee.name === name;
|
|
10354
|
-
}
|
|
10355
|
-
function unboundedCosine(node) {
|
|
10356
|
-
if (node.type !== "CallExpression") return false;
|
|
10357
|
-
if (isCall(node, "dot")) return node.arguments.length === 2;
|
|
10358
|
-
if (!isCall(node, "max") || node.arguments.length !== 2) return false;
|
|
10359
|
-
const a = argumentAt(node, 0);
|
|
10360
|
-
const b = argumentAt(node, 1);
|
|
10361
|
-
return zeroFlooredDot(a, b) || zeroFlooredDot(b, a);
|
|
10362
|
-
}
|
|
10363
|
-
function argumentAt(call, index) {
|
|
10364
|
-
const node = call.arguments[index];
|
|
10365
|
-
return node?.type === "SpreadElement" ? void 0 : node;
|
|
10366
|
-
}
|
|
10367
|
-
function zeroFlooredDot(a, b) {
|
|
10368
|
-
return isCall(a, "dot") && isNumber(b, 0);
|
|
10369
|
-
}
|
|
10370
|
-
function unsafeCosinePower(call) {
|
|
10371
|
-
if (call.arguments.length !== 2) return false;
|
|
10372
|
-
const [base2] = call.arguments;
|
|
10373
|
-
return base2?.type === "BinaryExpression" && base2.operator === "-" && base2.left.type !== "PrivateIdentifier" && isNumber(base2.left, 1) && unboundedCosine(base2.right);
|
|
10374
|
-
}
|
|
10375
|
-
function unsafePowOffsets(source) {
|
|
10376
|
-
const offsets = [];
|
|
10377
|
-
const masked = withoutComments(source);
|
|
10378
|
-
for (const match of masked.matchAll(/\bpow\s*\(/g)) {
|
|
10379
|
-
try {
|
|
10380
|
-
const expression = parseExpressionAt(masked, match.index, { ecmaVersion: "latest" });
|
|
10381
|
-
simple(expression, {
|
|
10382
|
-
CallExpression(node) {
|
|
10383
|
-
if (node.start === match.index && unsafeCosinePower(node)) offsets.push(node.start);
|
|
10384
|
-
}
|
|
10385
|
-
});
|
|
10386
|
-
} catch {
|
|
10387
|
-
}
|
|
10388
|
-
}
|
|
10389
|
-
return offsets;
|
|
10390
|
-
}
|
|
10391
|
-
function shaderDomainOffsets(source, glsl = false) {
|
|
10392
|
-
const shaders = glsl ? [{ text: source, start: 0, exactOffsets: true }] : staticShaders(source);
|
|
10393
|
-
return shaders.flatMap(
|
|
10394
|
-
({ text, start, exactOffsets }) => unsafePowOffsets(text).map((offset) => exactOffsets ? start + offset : void 0)
|
|
10395
|
-
);
|
|
10396
|
-
}
|
|
10397
10410
|
function shaderDomainWarning() {
|
|
10398
10411
|
return {
|
|
10399
10412
|
code: "shader_unbounded_cosine_pow",
|
|
@@ -10407,7 +10420,7 @@ var shaderRules = [
|
|
|
10407
10420
|
const tag = `<script ${script.attrs}>`;
|
|
10408
10421
|
if (readAttr(tag, "src") !== null) return [];
|
|
10409
10422
|
const type = readAttr(tag, "type") ?? "";
|
|
10410
|
-
const glsl =
|
|
10423
|
+
const glsl = GLSL_SCRIPT_TYPES.has(type.toLowerCase());
|
|
10411
10424
|
if (type && !glsl && !/^(?:module|(?:text|application)\/javascript)$/i.test(type)) return [];
|
|
10412
10425
|
return shaderDomainOffsets(script.content, glsl).map((offset) => ({
|
|
10413
10426
|
...shaderDomainWarning(),
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createRequire as __hf_createRequire } from "node:module";
|
|
2
|
+
import { fileURLToPath as __hf_fileURLToPath } from "node:url";
|
|
3
|
+
import { dirname as __hf_dirname } from "node:path";
|
|
4
|
+
var require = __hf_createRequire(import.meta.url);
|
|
5
|
+
var __filename = __hf_fileURLToPath(import.meta.url);
|
|
6
|
+
var __dirname = __hf_dirname(__filename);
|
|
7
|
+
|
|
8
|
+
// ../core/dist/browserMarker.js
|
|
9
|
+
var HYPERFRAMES_BROWSER_MARKER_ARG = "--hyperframes-owned-browser";
|
|
10
|
+
function withHyperframesBrowserMarker(args = []) {
|
|
11
|
+
return args.includes(HYPERFRAMES_BROWSER_MARKER_ARG) ? [...args] : [...args, HYPERFRAMES_BROWSER_MARKER_ARG];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export {
|
|
15
|
+
HYPERFRAMES_BROWSER_MARKER_ARG,
|
|
16
|
+
withHyperframesBrowserMarker
|
|
17
|
+
};
|