hyperframes 0.8.191 → 0.8.192
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-S2ZQYG52.js → add-TZU2UW7A.js} +17 -17
- package/dist/{animatedGifPrep-3JA2CQ3U.js → animatedGifPrep-NLAXC3VV.js} +11 -10
- package/dist/api.js +24 -23
- package/dist/{appHistory-TH3TL6N6.js → appHistory-QVCSAOI4.js} +1 -1
- package/dist/{asset-2CNTAPOC.js → asset-JAJXA6LB.js} +2 -2
- package/dist/{assetCataloger-5HXLXL7C.js → assetCataloger-4WTX3J4I.js} +13 -12
- package/dist/{audio-DZTSYHXS.js → audio-XLWC7JKS.js} +22 -21
- package/dist/{auth-GX3M6TJ4.js → auth-5K6X3NPJ.js} +4 -4
- package/dist/{autoUpdate-EDIWE4Z5.js → autoUpdate-RNV7SKGB.js} +4 -4
- package/dist/{backgroundChecks-VPUPJ7UI.js → backgroundChecks-QXLVZVGX.js} +5 -5
- package/dist/backgroundChecksWorker.js +5 -5
- package/dist/{batchRender-JHIIDBJR.js → batchRender-THKSPDZR.js} +14 -7
- package/dist/{beats-PZRVTRYW.js → beats-K7CGCFVL.js} +53 -15
- package/dist/{benchmark-22UFDW2N.js → benchmark-PHRDIXNL.js} +18 -14
- package/dist/{browser-VRDWYIUM.js → browser-GN6R5ZSK.js} +7 -7
- package/dist/{bundleWithLocalizedFonts-23QDKFSN.js → bundleWithLocalizedFonts-C325UNR4.js} +3 -3
- package/dist/{capture-TOCLXYMJ.js → capture-6UBQFHZQ.js} +76 -68
- package/dist/{capture-NFCBXHDE.js → capture-BZ7APOGQ.js} +3 -3
- package/dist/{captureCompositionFrame-BEM6MF7F.js → captureCompositionFrame-VORSCTWC.js} +17 -16
- package/dist/{catalog-NXS35KM7.js → catalog-PHU2RUZ3.js} +18 -18
- package/dist/{catch-up-6WJBUI2C.js → catch-up-HCNRM46J.js} +7 -7
- package/dist/{check-WVEBMWN5.js → check-TJ5ZLB4I.js} +43 -42
- package/dist/{checkBrowser-RT45HJ36.js → checkBrowser-DWP7ZXJ7.js} +38 -37
- package/dist/{chunk-KAC2WR7P.js → chunk-2HP5GIQ3.js} +3 -3
- package/dist/{chunk-2WNVHZHA.js → chunk-2J3NA3OB.js} +13 -13
- package/dist/{chunk-B2A56S5C.js → chunk-2MCXIY4B.js} +13 -10
- package/dist/{chunk-DCAI5DBR.js → chunk-2ST4WAFY.js} +9 -1
- package/dist/{chunk-3NRB7YXW.js → chunk-2VXY3PEF.js} +96 -67
- package/dist/{chunk-LBNEH6IQ.js → chunk-32NB4VMH.js} +1 -1
- package/dist/{chunk-IXLUTE6N.js → chunk-3422KMTD.js} +5 -1
- package/dist/{chunk-JTPHFYZI.js → chunk-3CXIX6XS.js} +68 -7
- package/dist/{chunk-MSM6VRQ4.js → chunk-3FV5BVWS.js} +2 -2
- package/dist/{chunk-7ZJEQY7Q.js → chunk-4E75LHAL.js} +23 -3
- package/dist/{chunk-TMBUBLZB.js → chunk-4HCJOFMB.js} +166 -46
- package/dist/{chunk-JJJCFKMF.js → chunk-5IPKQHOL.js} +17 -6
- package/dist/{chunk-WQ3X5OH4.js → chunk-5TRFLZ5Z.js} +2 -2
- package/dist/{chunk-HRPWRZGF.js → chunk-6N65ZMC5.js} +1 -1
- package/dist/{chunk-XUXGIA7H.js → chunk-6NLPPKBO.js} +1 -2
- package/dist/{chunk-RE3EEBWC.js → chunk-6WNLQI63.js} +4 -4
- package/dist/{chunk-7FF36MAD.js → chunk-6XVKMBUA.js} +9 -6
- package/dist/{chunk-7NKJS5KM.js → chunk-7JJMT6LN.js} +1 -1
- package/dist/{chunk-JOLZ3BSL.js → chunk-7LLRMYP6.js} +2 -2
- package/dist/{chunk-COETAXRN.js → chunk-7RSY7SZN.js} +2 -2
- package/dist/{chunk-JGTRVG32.js → chunk-7UZC4N62.js} +1 -1
- package/dist/{chunk-XWOCXIKR.js → chunk-A4OI5ZNX.js} +1 -1
- package/dist/{chunk-VYQYVYQ5.js → chunk-AEXVVABM.js} +83 -45
- package/dist/{chunk-DOOSC34Z.js → chunk-AMZJFCOX.js} +8 -8
- package/dist/{chunk-OV6KHXLX.js → chunk-AR46ND2Q.js} +1 -1
- package/dist/chunk-B2XLXD7V.js +3897 -0
- package/dist/{chunk-XMSQRDAK.js → chunk-BEOK6F26.js} +2 -2
- package/dist/{chunk-U5GTDAQL.js → chunk-BPKLUHFT.js} +7 -7
- package/dist/{chunk-TFGO5YMI.js → chunk-BV6YE455.js} +2 -2
- package/dist/{chunk-XGHHVYC7.js → chunk-BY6OQ6XP.js} +2 -2
- package/dist/{chunk-JQYJXUJW.js → chunk-C6KE4AFW.js} +1 -1
- package/dist/{chunk-TMK4Q7JA.js → chunk-CFUCHO4T.js} +20 -5
- package/dist/{chunk-KV72BP7O.js → chunk-CXRZBWSH.js} +11 -11
- package/dist/chunk-CZGHFATT.js +31 -0
- package/dist/{chunk-CYBXXSC4.js → chunk-DIKAPMMF.js} +2 -2
- package/dist/{chunk-7L37AB57.js → chunk-E3P3LJG6.js} +9 -9
- package/dist/{chunk-JYSSPQDT.js → chunk-E5V6WEMK.js} +11 -11
- package/dist/{chunk-T5YF32WV.js → chunk-EKGGSAWR.js} +6 -5
- package/dist/{chunk-7KVVNF7B.js → chunk-ELP5QZWL.js} +1 -1
- package/dist/{chunk-QH3T4WI2.js → chunk-EXAX37XR.js} +8 -2
- package/dist/{chunk-EI7FP7F3.js → chunk-FBVUAH7N.js} +12 -2
- package/dist/{chunk-W3CS2KFV.js → chunk-GANST5K3.js} +2 -2
- package/dist/{chunk-3WJT2JCX.js → chunk-IMSI7IFW.js} +52 -23
- package/dist/{chunk-W64L7IFS.js → chunk-IW5G323T.js} +1 -1
- package/dist/{chunk-RWYUK7LM.js → chunk-J2ASTCU6.js} +2 -2
- package/dist/{chunk-3XI7MIZB.js → chunk-J2BSUF6X.js} +1 -1
- package/dist/{chunk-WY3TQ2PT.js → chunk-JCDYDF54.js} +2 -2
- package/dist/{chunk-ALEF2F5N.js → chunk-K2AKVYNR.js} +2 -2
- package/dist/{chunk-TADJOIFW.js → chunk-KZOZN4PI.js} +4 -4
- package/dist/{chunk-CINKQY6M.js → chunk-L2YGSAOL.js} +3 -3
- package/dist/{chunk-AQB5M53R.js → chunk-LOKCBZYF.js} +3 -3
- package/dist/{chunk-7A65UCMI.js → chunk-MEE4NTPZ.js} +2 -2
- package/dist/{chunk-GM3WIOO6.js → chunk-MGBUWPXX.js} +2 -2
- package/dist/{chunk-ZHKUIC7X.js → chunk-MVIJTXN5.js} +21 -14
- package/dist/{chunk-SMEF3TRJ.js → chunk-ODBYZIOH.js} +15 -15
- package/dist/{chunk-NJGTNWQY.js → chunk-OQL4AJ4X.js} +6 -6
- package/dist/{chunk-5C7R55BJ.js → chunk-P2I4RLJE.js} +1 -1
- package/dist/{chunk-7LUJE3II.js → chunk-PFRG5P32.js} +1 -1
- package/dist/{chunk-RUOG4VB7.js → chunk-PKZ7RK5N.js} +5 -4
- package/dist/{chunk-LLFQA7XF.js → chunk-QFPBRZJD.js} +1 -1
- package/dist/{chunk-TJKE4EYX.js → chunk-QWLES6YV.js} +3 -3
- package/dist/{chunk-NMDUSCCE.js → chunk-QX4TB4NH.js} +160 -56
- package/dist/{chunk-CXMXJEVY.js → chunk-R2U2G4OS.js} +1 -1
- package/dist/{chunk-46HEFGXJ.js → chunk-REUL2KH2.js} +1 -1
- package/dist/{chunk-KGMHMYWI.js → chunk-RHYOWDI6.js} +2 -2
- package/dist/{chunk-DYAPHNV6.js → chunk-RWGASWT7.js} +1 -1
- package/dist/chunk-RXATE6FZ.js +385 -0
- package/dist/{chunk-EFCKV7MY.js → chunk-SBBQFPCJ.js} +1 -1
- package/dist/{chunk-KHCTBZGJ.js → chunk-SK7TR7BL.js} +4 -4
- package/dist/{chunk-KNU5COPB.js → chunk-T2EUWCJE.js} +1 -1
- package/dist/{chunk-TRZVS6TL.js → chunk-T6O5OLN2.js} +3 -3
- package/dist/{chunk-TFMZ4RKM.js → chunk-ULTKB5FC.js} +23 -12
- package/dist/{chunk-UNR3P7IF.js → chunk-VNPADTDD.js} +3 -3
- package/dist/{chunk-BFFLKQVB.js → chunk-VOM2HLUI.js} +4 -4
- package/dist/{chunk-GLG5JWLI.js → chunk-VRAXIQ6I.js} +2 -2
- package/dist/{chunk-NAUKCKCJ.js → chunk-W24SZ5FL.js} +4 -4
- package/dist/{chunk-COWQITWP.js → chunk-WOKVXK4J.js} +1 -1
- package/dist/{chunk-WJEVUPVD.js → chunk-XF77MK3J.js} +1 -1
- package/dist/{chunk-HYW6HTAK.js → chunk-XX2PA4L3.js} +2 -2
- package/dist/{chunk-RQBB7PYT.js → chunk-YMQQXPD5.js} +2 -2
- package/dist/{chunk-WHAEJX26.js → chunk-YWRQHRDY.js} +17 -12
- package/dist/{chunk-FBDOHH3Q.js → chunk-ZEMDV6W2.js} +29 -59
- package/dist/{clean-3VIU2BSK.js → clean-2RNCTDBT.js} +40 -27
- package/dist/cli.js +69 -67
- package/dist/{cloud-NA3J4XW2.js → cloud-NFIKESNZ.js} +4 -4
- package/dist/{cloudrun-4MHOF7UT.js → cloudrun-7224BCX3.js} +9 -9
- package/dist/commands/contrast-audit.browser.js +1 -1
- package/dist/{compare-ZR7XRPPT.js → compare-HL44MXVX.js} +76 -47
- package/dist/{compiler-MA2ELZPG.js → compiler-WF5QTXV7.js} +8 -7
- package/dist/{component-ZJSOPUAM.js → component-ZBZXSJBR.js} +3 -3
- package/dist/{compositions-WA5V2SHF.js → compositions-76P7LDDX.js} +19 -17
- package/dist/{contactSheet-CAGMKI3E.js → contactSheet-43ISAESM.js} +2 -2
- package/dist/{delete-UC427UEA.js → delete-4YZBYOHJ.js} +7 -7
- package/dist/{deploy-B5UO4UIK.js → deploy-UGUUGYLF.js} +1 -1
- package/dist/{deterministicFonts-EGAAE7QL.js → deterministicFonts-RO2TCMLZ.js} +3 -3
- package/dist/{dist-BPK37SAB.js → dist-5KKCRFPT.js} +5 -5
- package/dist/{dist-XGPSPKKP.js → dist-QQ26RUDV.js} +5 -4
- package/dist/{doctor-ZERCTKEK.js → doctor-GGVUK4NB.js} +20 -19
- package/dist/{events-DCOZQERS.js → events-OXPTHVDB.js} +4 -4
- package/dist/{events-CNIXB2QK.js → events-V2VU4J3B.js} +5 -5
- package/dist/{feedback-YBD5ITTY.js → feedback-HFZ5SCUK.js} +16 -16
- package/dist/{ffmpeg-V4BBFDTG.js → ffmpeg-3VHY7GO3.js} +13 -12
- package/dist/{figma-Z45ZYVGE.js → figma-7SEZTLBJ.js} +3 -3
- package/dist/fontLocalizeCli.js +14 -13
- package/dist/{get-23NXQWCD.js → get-Y2S2PXCM.js} +7 -7
- package/dist/{gpuPolicy-H6ABHVEB.js → gpuPolicy-UHPOWRV5.js} +11 -10
- package/dist/{grade-compare-ZPX2G3UV.js → grade-compare-4VTXSQM5.js} +38 -37
- package/dist/{gsapParserAcorn-SKODXC2N.js → gsapParserAcorn-OOTY2MVN.js} +2 -2
- package/dist/{help-EP4CDPLO.js → help-HXNOACHI.js} +1 -1
- package/dist/{history-E5OSXO74.js → history-XDJUI4LC.js} +39 -16
- package/dist/hyperframe.manifest.json +1 -1
- package/dist/hyperframe.runtime.iife.js +59 -59
- package/dist/hyperframes-player.global.js +3 -3
- package/dist/hyperframes-slideshow.global.js +1 -1
- package/dist/{info-2HHGSW5H.js → info-KYRI3EZV.js} +56 -22
- package/dist/{init-ENEG6RZT.js → init-IL7EWMT5.js} +38 -45
- package/dist/{inspect-PVQK4E2A.js → inspect-TBNH23UC.js} +36 -35
- package/dist/{installer-YGGLEOSF.js → installer-O2YMFSI4.js} +8 -8
- package/dist/{keyframes-UWSYS2SL.js → keyframes-4GF62KAJ.js} +13 -14
- package/dist/{lambda-L3LPXC2M.js → lambda-JFL6M4XZ.js} +11 -11
- package/dist/{layout-JVL4QREC.js → layout-7MAEFR65.js} +36 -35
- package/dist/{lint-JXQ72DDB.js → lint-4AYHKYAM.js} +23 -16
- package/dist/{lintProject-F7IC7WY4.js → lintProject-52SLJPRC.js} +5 -4
- package/dist/{list-UFMLM3VV.js → list-3DP3D3MW.js} +7 -7
- package/dist/{login-CKGMWQJN.js → login-T54WQYRQ.js} +7 -7
- package/dist/{logout-DDC4QLVK.js → logout-JYFWWUGK.js} +3 -3
- package/dist/{manager-UHWEKPXC.js → manager-MZIJY73J.js} +3 -3
- package/dist/{manager-U6OP3EXB.js → manager-QROK2IH3.js} +14 -13
- package/dist/{media-treatment-MFMEWCDY.js → media-treatment-4CXF7MSG.js} +20 -19
- package/dist/{models-QA3TJ75Y.js → models-IS3I6JKU.js} +18 -17
- package/dist/{motionShot-NV2OPJHD.js → motionShot-DVYJZOTQ.js} +21 -20
- package/dist/{normalize-3AYFSN2F.js → normalize-FASIPBUM.js} +1 -1
- package/dist/{normalize-audio-JWJRUKK2.js → normalize-audio-4527JIK4.js} +12 -8
- package/dist/{open-PTJNDRER.js → open-5JE46SAX.js} +18 -18
- package/dist/{parakeetRunner-B5FCWWOO.js → parakeetRunner-7JIJGJJ7.js} +20 -19
- package/dist/{pipeline-N26NA6ZG.js → pipeline-YEN3WFD2.js} +15 -14
- package/dist/{play-45D6X6TV.js → play-WFX67I7M.js} +27 -26
- package/dist/{policies-MBWGLMWB.js → policies-GHVXA5PE.js} +1 -1
- package/dist/{preflight-MFOHPUOI.js → preflight-D377HVUZ.js} +15 -14
- package/dist/{present-IFBUDI4D.js → present-XTSEKAC7.js} +24 -23
- package/dist/{preview-MQRLXQOV.js → preview-5XH7EK6O.js} +27 -26
- package/dist/{producer-2QG7HLAW.js → producer-TFFYF4ZM.js} +1 -1
- package/dist/{projectConfig-I4FTZXHB.js → projectConfig-6YUJHMCL.js} +10 -10
- package/dist/{publication-3GOFXCGU.js → publication-JK33Y55E.js} +5 -5
- package/dist/{publish-3B2TZCFH.js → publish-JHDGXWXU.js} +18 -17
- package/dist/{refresh-RXTOPRBB.js → refresh-USSFPJAU.js} +3 -3
- package/dist/{remove-background-RK4BJDBF.js → remove-background-P44MYAPJ.js} +16 -15
- package/dist/{render-BV6FWFX3.js → render-HJ34EGMN.js} +8 -8
- package/dist/{render-PW3XGS7B.js → render-RBINWWP5.js} +42 -41
- package/dist/{render-SJ4HFPFU.js → render-RJ3I4E3A.js} +26 -25
- package/dist/{render-batch-GKX54O6N.js → render-batch-3D6XQYUC.js} +9 -9
- package/dist/renderSetupWorker.js +9 -8
- package/dist/{resolver-RQJ7CNXD.js → resolver-HCLTFZUW.js} +7 -7
- package/dist/{screenshotCapture-UBY6TT75.js → screenshotCapture-I5EDCITF.js} +6 -3
- package/dist/{sherpa-XZPG7QFF.js → sherpa-IPOUJM6Q.js} +19 -18
- package/dist/skills/hyperframes/references/skill-lifecycle.md +8 -4
- package/dist/skills/hyperframes-cli/references/init-and-scaffold.md +1 -1
- package/dist/{skills-EYLB2V6F.js → skills-P67QEERC.js} +13 -75
- package/dist/{skillsUpdateCheck-TE6K5ROM.js → skillsUpdateCheck-IFMLRVIF.js} +5 -5
- package/dist/{slideshow-YTWATJRT.js → slideshow-SJGK4RQS.js} +1 -1
- package/dist/{snapshot-FE4T3SCN.js → snapshot-4YM4NNWJ.js} +48 -45
- package/dist/{src-SEJ7LNNB.js → src-DCD3YMXX.js} +13 -12
- package/dist/{src-ZOXSEJCD.js → src-SSV66L3F.js} +14 -9
- package/dist/{staticProjectServer-LSVIRDRO.js → staticProjectServer-C7PPGLEQ.js} +22 -21
- package/dist/{status-CM7IQTU2.js → status-H5WLKQDS.js} +3 -3
- package/dist/studio/assets/{hyperframes-player-Bv9hQ3v7.js → hyperframes-player-ChN3cOr0.js} +3 -3
- package/dist/studio/assets/{index-Df14bh-L.js → index-BYbFcRR0.js} +1 -1
- package/dist/studio/assets/{index-D_QqfWhx.js → index-CHu83hHM.js} +122 -122
- package/dist/studio/assets/{index-CBO8uz7-.css → index-CYbvOVp-.css} +1 -1
- package/dist/studio/index.html +2 -2
- package/dist/{studio-api-SL2Z76NU.js → studio-api-6YZ7PIQR.js} +17 -14
- package/dist/{studioServer-BADWVIHU.js → studioServer-EWHSE4GC.js} +60 -59
- package/dist/{telemetry-QG5AANZ4.js → telemetry-4K6CPMNT.js} +2 -2
- package/dist/{telemetry-RN6VYEID.js → telemetry-GGLBHZRZ.js} +5 -5
- package/dist/{timeline-JBTCIPLU.js → timeline-NKHQJXJ2.js} +65 -43
- package/dist/{tokens-A7V7UHNK.js → tokens-FWNNDJ6R.js} +2 -2
- package/dist/{transcribe-NTUCJGFI.js → transcribe-TRPKXZ7L.js} +26 -25
- package/dist/{transcribe-E4BOSNM4.js → transcribe-VD2TMMC2.js} +17 -16
- package/dist/{tts-A2WILYGN.js → tts-5I2AJNLM.js} +1 -1
- package/dist/{updateCheck-M7UAYLUR.js → updateCheck-CUPS6LU3.js} +4 -4
- package/dist/{upgrade-A2COSIMB.js → upgrade-23XO6MEX.js} +4 -4
- package/dist/{urlDownloader-MBSQYART.js → urlDownloader-YOAOONCK.js} +10 -9
- package/dist/{validate-NODZYBHY.js → validate-BWIW24G5.js} +30 -29
- package/dist/{video-LBCUUYK7.js → video-XRXJS4GC.js} +12 -11
- package/dist/warmCheck.js +43 -42
- package/package.json +2 -1
- package/dist/chunk-I5JRXMCV.js +0 -6077
- package/dist/chunk-LM265QNK.js +0 -3896
|
@@ -19,6 +19,10 @@ import {
|
|
|
19
19
|
resolveLocalAssetCandidates,
|
|
20
20
|
resolveProjectRelativeSrc
|
|
21
21
|
} from "./chunk-6BNTGNGD.js";
|
|
22
|
+
import {
|
|
23
|
+
TIMING_TOLERANCE_SECONDS,
|
|
24
|
+
resolveCompositionDuration
|
|
25
|
+
} from "./chunk-CZGHFATT.js";
|
|
22
26
|
import {
|
|
23
27
|
COMPOSITION_VARIABLE_TYPES,
|
|
24
28
|
FONT_ALIAS_KEYS,
|
|
@@ -26,9 +30,10 @@ import {
|
|
|
26
30
|
HTML_BODY_CSS_WIDTH_FIRST_RE,
|
|
27
31
|
VIEWPORT_META_SIZE_RE,
|
|
28
32
|
extractMediaSrcMutations,
|
|
33
|
+
isCompositionVariable,
|
|
29
34
|
isSafeMediaUrl,
|
|
30
35
|
resolveAliasDisplayName
|
|
31
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-PKZ7RK5N.js";
|
|
32
37
|
import {
|
|
33
38
|
COLOR_GRADING_SOURCE_TAGS,
|
|
34
39
|
COMPOSITION_ATTRIBUTES,
|
|
@@ -56,14 +61,12 @@ import {
|
|
|
56
61
|
isSceneLikeCompositionId,
|
|
57
62
|
parseSlideshowManifest,
|
|
58
63
|
resolveSlideshow
|
|
59
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-3422KMTD.js";
|
|
60
65
|
import {
|
|
61
66
|
base,
|
|
62
|
-
parse,
|
|
63
|
-
parseExpressionAt,
|
|
64
67
|
recursive,
|
|
65
68
|
simple
|
|
66
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-RXATE6FZ.js";
|
|
67
70
|
import {
|
|
68
71
|
__commonJS,
|
|
69
72
|
__require,
|
|
@@ -3708,30 +3711,10 @@ var require_dist = __commonJS({
|
|
|
3708
3711
|
});
|
|
3709
3712
|
|
|
3710
3713
|
// ../lint/dist/index.js
|
|
3714
|
+
import { parse } from "acorn";
|
|
3711
3715
|
var import_postcss_selector_parser = __toESM(require_dist(), 1);
|
|
3712
3716
|
import postcss from "postcss";
|
|
3713
|
-
|
|
3714
|
-
// ../parsers/dist/compositionDuration.js
|
|
3715
|
-
var TIMING_TOLERANCE_SECONDS = 0.05;
|
|
3716
|
-
var isPositiveFinite = (value) => value !== null && Number.isFinite(value) && value > 0;
|
|
3717
|
-
function resolveCompositionDuration(input) {
|
|
3718
|
-
const pendingClips = input.clipEndsSeconds.filter((end) => end === null).length;
|
|
3719
|
-
if (isPositiveFinite(input.authoredDurationSeconds)) {
|
|
3720
|
-
return { seconds: input.authoredDurationSeconds, source: "authored", pendingClips };
|
|
3721
|
-
}
|
|
3722
|
-
const known = input.clipEndsSeconds.filter(isPositiveFinite);
|
|
3723
|
-
if (known.length > 0) {
|
|
3724
|
-
return { seconds: Math.max(...known), source: "derived", pendingClips };
|
|
3725
|
-
}
|
|
3726
|
-
return {
|
|
3727
|
-
seconds: null,
|
|
3728
|
-
source: "unresolved",
|
|
3729
|
-
pendingClips,
|
|
3730
|
-
reason: pendingClips > 0 ? "every clip's length is still pending" : "no authored duration and no clip with a length"
|
|
3731
|
-
};
|
|
3732
|
-
}
|
|
3733
|
-
|
|
3734
|
-
// ../lint/dist/index.js
|
|
3717
|
+
import { parse as parse2 } from "acorn";
|
|
3735
3718
|
import postcss2 from "postcss";
|
|
3736
3719
|
import postcss3 from "postcss";
|
|
3737
3720
|
|
|
@@ -3770,6 +3753,7 @@ function trackKindOf(node) {
|
|
|
3770
3753
|
}
|
|
3771
3754
|
|
|
3772
3755
|
// ../lint/dist/index.js
|
|
3756
|
+
import { parse as parse3, parseExpressionAt } from "acorn";
|
|
3773
3757
|
import { createHash } from "crypto";
|
|
3774
3758
|
import { existsSync as existsSync2, readFileSync, readdirSync } from "fs";
|
|
3775
3759
|
import { dirname as dirname2, extname, join as join3, relative as relative2, resolve } from "path";
|
|
@@ -3895,6 +3879,7 @@ function resolveReferencedDuration(doc, el, startCache, visiting) {
|
|
|
3895
3879
|
}
|
|
3896
3880
|
|
|
3897
3881
|
// ../lint/dist/index.js
|
|
3882
|
+
import postcss4 from "postcss";
|
|
3898
3883
|
import { execFile } from "child_process";
|
|
3899
3884
|
import { existsSync } from "fs";
|
|
3900
3885
|
import { join } from "path";
|
|
@@ -6457,7 +6442,7 @@ function callsFor(script) {
|
|
|
6457
6442
|
if (cached) return cached;
|
|
6458
6443
|
const calls = [];
|
|
6459
6444
|
try {
|
|
6460
|
-
const ast =
|
|
6445
|
+
const ast = parse2(script.content, {
|
|
6461
6446
|
ecmaVersion: "latest",
|
|
6462
6447
|
sourceType: "script",
|
|
6463
6448
|
allowReturnOutsideFunction: true
|
|
@@ -6783,6 +6768,16 @@ function variablesDeclarationFindings(tag, tags) {
|
|
|
6783
6768
|
});
|
|
6784
6769
|
continue;
|
|
6785
6770
|
}
|
|
6771
|
+
if (!isCompositionVariable(e)) {
|
|
6772
|
+
findings.push({
|
|
6773
|
+
code: "invalid_composition_variables_declaration",
|
|
6774
|
+
severity: "error",
|
|
6775
|
+
message: `data-composition-variables entry [${i}] has a default that does not match its type, or an enum without an options array.`,
|
|
6776
|
+
fixHint: "Use number defaults for number variables, boolean defaults for boolean variables, and string defaults for other types. Enum variables also require an options array.",
|
|
6777
|
+
snippet: truncateSnippet(tag.raw)
|
|
6778
|
+
});
|
|
6779
|
+
continue;
|
|
6780
|
+
}
|
|
6786
6781
|
const id = String(e.id);
|
|
6787
6782
|
if ((e.type === "image" || varSrcIds.has(id)) && typeof e.default === "string" && e.default.length > 0 && !isSafeMediaUrl(e.default)) {
|
|
6788
6783
|
findings.push({
|
|
@@ -7681,11 +7676,11 @@ function deriveDurationFromClips(tags, rootTag) {
|
|
|
7681
7676
|
return resolveCompositionDuration({ authoredDurationSeconds: null, clipEndsSeconds: clipEnds });
|
|
7682
7677
|
}
|
|
7683
7678
|
async function loadParseGsapScript() {
|
|
7684
|
-
const mod = await import("./gsapParserAcorn-
|
|
7679
|
+
const mod = await import("./gsapParserAcorn-OOTY2MVN.js");
|
|
7685
7680
|
return mod.parseGsapScriptAcorn;
|
|
7686
7681
|
}
|
|
7687
7682
|
async function loadGsapScriptMotionPathFirstUseIndex() {
|
|
7688
|
-
const mod = await import("./gsapParserAcorn-
|
|
7683
|
+
const mod = await import("./gsapParserAcorn-OOTY2MVN.js");
|
|
7689
7684
|
return mod.gsapScriptMotionPathFirstUseIndex;
|
|
7690
7685
|
}
|
|
7691
7686
|
var SCENE_BOUNDARY_EPSILON_SECONDS = 0.05;
|
|
@@ -8819,7 +8814,7 @@ ${right.raw}`)
|
|
|
8819
8814
|
return findings;
|
|
8820
8815
|
},
|
|
8821
8816
|
// gsap_timeline_registered_before_async_build — registering window.__timelines[id]
|
|
8822
|
-
// BEFORE the timeline is built inside
|
|
8817
|
+
// BEFORE the timeline is built inside a font-ready callback
|
|
8823
8818
|
// leaves an EMPTY timeline registered. The runtime's sub-composition readiness gate
|
|
8824
8819
|
// treats "key present" as "ready" and nests the child ONCE, while still empty — so the
|
|
8825
8820
|
// animation never renders when this composition is mounted as a sub-composition.
|
|
@@ -8828,9 +8823,11 @@ ${right.raw}`)
|
|
|
8828
8823
|
const findings = [];
|
|
8829
8824
|
for (const script of scripts) {
|
|
8830
8825
|
const content = stripJsComments(script.content);
|
|
8831
|
-
const regIdx = content.search(
|
|
8826
|
+
const regIdx = content.search(
|
|
8827
|
+
/window\s*\.\s*__timelines\s*(?:\[[^\]]+\]|\.\s*[A-Za-z_$][\w$]*)\s*=\s*(?!=)/
|
|
8828
|
+
);
|
|
8832
8829
|
if (regIdx < 0) continue;
|
|
8833
|
-
const fontsReadyIdx = content.search(/document\s*\.\s*fonts\s*\.\s*ready/);
|
|
8830
|
+
const fontsReadyIdx = content.search(/document\s*\.\s*fonts\s*\.\s*(?:ready\b|load\s*\()/);
|
|
8834
8831
|
if (fontsReadyIdx < 0) continue;
|
|
8835
8832
|
if (regIdx >= fontsReadyIdx) continue;
|
|
8836
8833
|
const tail = content.slice(fontsReadyIdx);
|
|
@@ -8838,8 +8835,8 @@ ${right.raw}`)
|
|
|
8838
8835
|
findings.push({
|
|
8839
8836
|
code: "gsap_timeline_registered_before_async_build",
|
|
8840
8837
|
severity: "error",
|
|
8841
|
-
message: 'window.__timelines is assigned BEFORE the timeline is built inside document.fonts.ready. An empty timeline registered early gets nested empty when this composition is used as a sub-composition (the readiness gate treats "key present" as "ready" and never re-nests), so the animation renders blank.',
|
|
8842
|
-
fixHint: "Move the `window.__timelines[id] = tl;` assignment to the END of the
|
|
8838
|
+
message: 'window.__timelines is assigned BEFORE the timeline is built inside document.fonts.ready or document.fonts.load(). An empty timeline registered early gets nested empty when this composition is used as a sub-composition (the readiness gate treats "key present" as "ready" and never re-nests), so the animation renders blank.',
|
|
8839
|
+
fixHint: "Move the `window.__timelines[id] = tl;` assignment to the END of the font-ready callback, after the tweens are added. Optionally call window.__hfForceTimelineRebind() right after, to re-nest the populated timeline."
|
|
8843
8840
|
});
|
|
8844
8841
|
}
|
|
8845
8842
|
return findings;
|
|
@@ -9868,22 +9865,29 @@ var GENERIC_FAMILIES = /* @__PURE__ */ new Set([
|
|
|
9868
9865
|
"unset",
|
|
9869
9866
|
"revert"
|
|
9870
9867
|
]);
|
|
9871
|
-
function
|
|
9872
|
-
|
|
9868
|
+
function parseFontCss(css) {
|
|
9869
|
+
try {
|
|
9870
|
+
return postcss3.parse(css);
|
|
9871
|
+
} catch {
|
|
9872
|
+
return null;
|
|
9873
|
+
}
|
|
9874
|
+
}
|
|
9875
|
+
function isFontFaceDeclaration(decl) {
|
|
9876
|
+
let parent = decl.parent;
|
|
9877
|
+
while (parent) {
|
|
9878
|
+
if (parent.type === "atrule" && parent.name.toLowerCase() === "font-face") return true;
|
|
9879
|
+
parent = parent.parent;
|
|
9880
|
+
}
|
|
9881
|
+
return false;
|
|
9873
9882
|
}
|
|
9874
9883
|
function extractFontFaceFamilies(styles) {
|
|
9875
9884
|
const families = /* @__PURE__ */ new Set();
|
|
9876
|
-
const fontFaceRe = /@font-face\s*\{[^}]*\}/gi;
|
|
9877
|
-
const familyRe = /font-family\s*:\s*(['"]?)([^;'"]+)\1/i;
|
|
9878
9885
|
for (const style of styles) {
|
|
9879
|
-
|
|
9880
|
-
|
|
9881
|
-
|
|
9882
|
-
|
|
9883
|
-
|
|
9884
|
-
families.add(familyMatch[2].trim().toLowerCase());
|
|
9885
|
-
}
|
|
9886
|
-
}
|
|
9886
|
+
parseFontCss(style.content)?.walkDecls(/^font-family$/i, (decl) => {
|
|
9887
|
+
if (!isFontFaceDeclaration(decl)) return;
|
|
9888
|
+
const name = normalizeUsedFontName(decl.value);
|
|
9889
|
+
if (name) families.add(name);
|
|
9890
|
+
});
|
|
9887
9891
|
}
|
|
9888
9892
|
return families;
|
|
9889
9893
|
}
|
|
@@ -9892,22 +9896,43 @@ function normalizeUsedFontName(part) {
|
|
|
9892
9896
|
if (!name || name.includes("(") || name.includes(")")) return null;
|
|
9893
9897
|
return name;
|
|
9894
9898
|
}
|
|
9899
|
+
function collectFontCustomProperties(styles) {
|
|
9900
|
+
const properties = /* @__PURE__ */ new Map();
|
|
9901
|
+
for (const style of styles) {
|
|
9902
|
+
parseFontCss(style.content)?.walkDecls(/^--/, (decl) => {
|
|
9903
|
+
if (!isFontFaceDeclaration(decl)) properties.set(decl.prop, decl.value);
|
|
9904
|
+
});
|
|
9905
|
+
}
|
|
9906
|
+
return properties;
|
|
9907
|
+
}
|
|
9908
|
+
function resolveUsedFontNames(value, properties, resolving = /* @__PURE__ */ new Set()) {
|
|
9909
|
+
return postcss3.list.comma(value).flatMap((part) => {
|
|
9910
|
+
const variable = /^var\(\s*(--[^\s,()]+)\s*(?:,[\s\S]*)?\)$/i.exec(part.trim());
|
|
9911
|
+
if (!variable) {
|
|
9912
|
+
const name = normalizeUsedFontName(part);
|
|
9913
|
+
return name ? [name] : [];
|
|
9914
|
+
}
|
|
9915
|
+
const property = variable[1];
|
|
9916
|
+
if (!property || resolving.has(property) || resolving.size >= 8) return [];
|
|
9917
|
+
const referenced = properties.get(property);
|
|
9918
|
+
if (referenced === void 0) return [];
|
|
9919
|
+
return resolveUsedFontNames(referenced, properties, new Set(resolving).add(property));
|
|
9920
|
+
});
|
|
9921
|
+
}
|
|
9895
9922
|
function extractUsedFontFamilies(styles) {
|
|
9896
9923
|
const used = [];
|
|
9897
9924
|
const seen = /* @__PURE__ */ new Set();
|
|
9898
|
-
const
|
|
9925
|
+
const properties = collectFontCustomProperties(styles);
|
|
9899
9926
|
for (const style of styles) {
|
|
9900
|
-
|
|
9901
|
-
|
|
9902
|
-
|
|
9903
|
-
|
|
9904
|
-
const name = normalizeUsedFontName(part);
|
|
9905
|
-
if (name && !GENERIC_FAMILIES.has(name) && !seen.has(name)) {
|
|
9927
|
+
parseFontCss(style.content)?.walkDecls(/^font-family$/i, (decl) => {
|
|
9928
|
+
if (isFontFaceDeclaration(decl)) return;
|
|
9929
|
+
for (const name of resolveUsedFontNames(decl.value, properties)) {
|
|
9930
|
+
if (!GENERIC_FAMILIES.has(name) && !seen.has(name)) {
|
|
9906
9931
|
seen.add(name);
|
|
9907
9932
|
used.push(name);
|
|
9908
9933
|
}
|
|
9909
9934
|
}
|
|
9910
|
-
}
|
|
9935
|
+
});
|
|
9911
9936
|
}
|
|
9912
9937
|
return used;
|
|
9913
9938
|
}
|
|
@@ -10010,15 +10035,12 @@ var fontRules = [
|
|
|
10010
10035
|
];
|
|
10011
10036
|
function uniqueFontLocation(styles, families, locate) {
|
|
10012
10037
|
const locations = [];
|
|
10038
|
+
const properties = collectFontCustomProperties(styles);
|
|
10013
10039
|
for (const style of styles) {
|
|
10014
10040
|
try {
|
|
10015
10041
|
postcss3.parse(style.content).walkDecls(/^font-family$/i, (decl) => {
|
|
10016
|
-
|
|
10017
|
-
|
|
10018
|
-
if (parent.type === "atrule" && parent.name.toLowerCase() === "font-face") return;
|
|
10019
|
-
parent = parent.parent;
|
|
10020
|
-
}
|
|
10021
|
-
if (!decl.value.split(",").some((part) => families.includes(normalizeUsedFontName(part) ?? "")))
|
|
10042
|
+
if (isFontFaceDeclaration(decl)) return;
|
|
10043
|
+
if (!resolveUsedFontNames(decl.value, properties).some((name) => families.includes(name)))
|
|
10022
10044
|
return;
|
|
10023
10045
|
locations.push(locate(style, decl.source?.start?.offset));
|
|
10024
10046
|
});
|
|
@@ -10026,7 +10048,7 @@ function uniqueFontLocation(styles, families, locate) {
|
|
|
10026
10048
|
return {};
|
|
10027
10049
|
}
|
|
10028
10050
|
}
|
|
10029
|
-
return locations.length === 1 ? locations[0] : {};
|
|
10051
|
+
return locations.length === 1 ? locations[0] ?? {} : {};
|
|
10030
10052
|
}
|
|
10031
10053
|
function parseTiming(raw) {
|
|
10032
10054
|
const startStr = readAttr(raw, "data-start");
|
|
@@ -10295,7 +10317,7 @@ function withoutComments(source) {
|
|
|
10295
10317
|
function staticShaders(source) {
|
|
10296
10318
|
const shaders = [];
|
|
10297
10319
|
try {
|
|
10298
|
-
const ast =
|
|
10320
|
+
const ast = parse3(source, {
|
|
10299
10321
|
ecmaVersion: "latest",
|
|
10300
10322
|
sourceType: "module",
|
|
10301
10323
|
allowReturnOutsideFunction: true
|
|
@@ -10826,6 +10848,7 @@ function contentDigest(html) {
|
|
|
10826
10848
|
return createHash("sha256").update(html).digest("hex").slice(0, 16);
|
|
10827
10849
|
}
|
|
10828
10850
|
var AUDIO_EXTENSIONS = /* @__PURE__ */ new Set([".mp3", ".wav", ".aac", ".ogg", ".m4a", ".flac", ".opus"]);
|
|
10851
|
+
var CSS_URL_RE = /\burl\(\s*(?:"([^"]+)"|'([^']+)'|([^"')\s]+))\s*\)/gi;
|
|
10829
10852
|
var MASK_IMAGE_URL_RE = /\b(?:-webkit-)?mask-image\s*:\s*[^;{}]*url\(\s*(?:"([^"]+)"|'([^']+)'|([^"')\s]+))\s*\)/gi;
|
|
10830
10853
|
function isLocalStylesheetHref(href) {
|
|
10831
10854
|
return !!href && !/^(https?:|data:|blob:|\/\/)/i.test(href);
|
|
@@ -11118,9 +11141,16 @@ function lintTextureMaskAssetNotFound(projectDir, htmlSources) {
|
|
|
11118
11141
|
for (const { html, compSrcPath } of htmlSources) {
|
|
11119
11142
|
const file = sourceFile(projectDir, compSrcPath);
|
|
11120
11143
|
for (const cssSource of collectCssSources(projectDir, html, compSrcPath)) {
|
|
11121
|
-
let
|
|
11122
|
-
|
|
11123
|
-
|
|
11144
|
+
let matches = [];
|
|
11145
|
+
try {
|
|
11146
|
+
postcss4.parse(cssSource.content).walkDecls(/^(?:-webkit-)?mask-image$/i, (declaration) => {
|
|
11147
|
+
matches.push(...declaration.value.matchAll(CSS_URL_RE));
|
|
11148
|
+
});
|
|
11149
|
+
} catch (error) {
|
|
11150
|
+
if (!(error instanceof postcss4.CssSyntaxError)) throw error;
|
|
11151
|
+
matches = [...cssSource.content.matchAll(MASK_IMAGE_URL_RE)];
|
|
11152
|
+
}
|
|
11153
|
+
for (const match of matches) {
|
|
11124
11154
|
const rawUrl = match[1] ?? match[2] ?? match[3] ?? "";
|
|
11125
11155
|
if (isUnresolvedAssetPlaceholder(rawUrl)) continue;
|
|
11126
11156
|
const url = cleanAssetUrl(rawUrl);
|
|
@@ -11322,7 +11352,6 @@ export {
|
|
|
11322
11352
|
resolveReferencedStart,
|
|
11323
11353
|
resolveReferencedDuration,
|
|
11324
11354
|
require_dist,
|
|
11325
|
-
resolveCompositionDuration,
|
|
11326
11355
|
LINT_RULE_COUNT,
|
|
11327
11356
|
LINT_RULE_GROUP_COUNTS,
|
|
11328
11357
|
lintHyperframeHtml,
|
|
@@ -10,7 +10,11 @@ var SLIDESHOW_MANIFEST_VERSION = 1;
|
|
|
10
10
|
var SLIDESHOW_ISLAND_TYPE = "application/hyperframes-slideshow+json";
|
|
11
11
|
function slideshowIslandRegex(flags = "i") {
|
|
12
12
|
const escaped = SLIDESHOW_ISLAND_TYPE.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
13
|
-
|
|
13
|
+
const htmlWhitespace = "[\\t\\n\\f\\r ]*";
|
|
14
|
+
return new RegExp(
|
|
15
|
+
`<script[^>]*type${htmlWhitespace}=${htmlWhitespace}["']${escaped}["'][^>]*>([\\s\\S]*?)<\\/script>`,
|
|
16
|
+
flags
|
|
17
|
+
);
|
|
14
18
|
}
|
|
15
19
|
function parseSlideshowManifest(html) {
|
|
16
20
|
const re = slideshowIslandRegex("i");
|
|
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
|
|
|
7
7
|
import {
|
|
8
8
|
loadOptionalPackage,
|
|
9
9
|
loadSharp
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-EXAX37XR.js";
|
|
11
11
|
import {
|
|
12
12
|
downloadFile
|
|
13
13
|
} from "./chunk-WQ6ZXHFQ.js";
|
|
@@ -15,13 +15,16 @@ import {
|
|
|
15
15
|
findFFmpeg,
|
|
16
16
|
findFFprobe,
|
|
17
17
|
getFFmpegInstallHint
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-VRAXIQ6I.js";
|
|
19
19
|
import {
|
|
20
20
|
DEFAULT_VP9_CPU_USED,
|
|
21
21
|
SDR_RGB_TO_BT709_FILTER,
|
|
22
22
|
SDR_RGB_TO_TAGGED_BT709_FILTER,
|
|
23
23
|
renderProvenanceArgs
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-QX4TB4NH.js";
|
|
25
|
+
import {
|
|
26
|
+
runCancellableProcess
|
|
27
|
+
} from "./chunk-RWGASWT7.js";
|
|
25
28
|
|
|
26
29
|
// src/background-removal/pipeline.ts
|
|
27
30
|
import { spawn } from "child_process";
|
|
@@ -135,11 +138,29 @@ async function createSession(options = {}) {
|
|
|
135
138
|
const maskBuf = Buffer.allocUnsafe(INPUT_PLANE);
|
|
136
139
|
let rgbaBuf = null;
|
|
137
140
|
let rgbaBgBuf = null;
|
|
141
|
+
let retried = false;
|
|
142
|
+
const run = async (tensor) => {
|
|
143
|
+
try {
|
|
144
|
+
return await session.run({ [inputName]: tensor });
|
|
145
|
+
} catch (err) {
|
|
146
|
+
if (providerUsed === "CPU" || retried) throw err;
|
|
147
|
+
retried = true;
|
|
148
|
+
options.onProgress?.(
|
|
149
|
+
`${providerUsed} failed while running a frame (${err.message}); continuing on CPU.`
|
|
150
|
+
);
|
|
151
|
+
await session.release().catch(() => void 0);
|
|
152
|
+
session = await tryCreate(["cpu"]);
|
|
153
|
+
providerUsed = "CPU";
|
|
154
|
+
return await session.run({ [inputName]: tensor });
|
|
155
|
+
}
|
|
156
|
+
};
|
|
138
157
|
return {
|
|
139
|
-
provider
|
|
158
|
+
get provider() {
|
|
159
|
+
return providerUsed;
|
|
160
|
+
},
|
|
140
161
|
async process(rgb, width, height, withBackground = false) {
|
|
141
162
|
const tensor = await preprocess(sharp, ort, rgb, width, height, inputData);
|
|
142
|
-
const outputs = await
|
|
163
|
+
const outputs = await run(tensor);
|
|
143
164
|
const output = outputs[outputName];
|
|
144
165
|
if (!output) throw new Error(`Model did not return output '${outputName}'`);
|
|
145
166
|
const expectedBytes = width * height * 4;
|
|
@@ -260,16 +281,56 @@ function inferInputKind(inputPath) {
|
|
|
260
281
|
`Unsupported input: ${ext}. Use a video (mp4/mov/webm/mkv/avi) or image (jpg/png/webp).`
|
|
261
282
|
);
|
|
262
283
|
}
|
|
284
|
+
async function decoderTransposesDimensions(inputPath) {
|
|
285
|
+
const ffprobePath = findFFprobe();
|
|
286
|
+
if (!ffprobePath) throw new Error(`ffprobe is required. Install: ${getFFmpegInstallHint()}`);
|
|
287
|
+
const { stdout } = await runCancellableProcess(
|
|
288
|
+
ffprobePath,
|
|
289
|
+
[
|
|
290
|
+
"-v",
|
|
291
|
+
"error",
|
|
292
|
+
"-select_streams",
|
|
293
|
+
"v:0",
|
|
294
|
+
"-show_streams",
|
|
295
|
+
"-print_format",
|
|
296
|
+
"json",
|
|
297
|
+
"--",
|
|
298
|
+
inputPath
|
|
299
|
+
],
|
|
300
|
+
{ timeoutMs: 3e4, maxBufferBytes: 256 * 1024 }
|
|
301
|
+
);
|
|
302
|
+
const probe = JSON.parse(stdout);
|
|
303
|
+
if (typeof probe !== "object" || probe === null || !("streams" in probe) || !Array.isArray(probe.streams))
|
|
304
|
+
return false;
|
|
305
|
+
const stream = probe.streams[0];
|
|
306
|
+
if (typeof stream !== "object" || stream === null) return false;
|
|
307
|
+
const sideData = "side_data_list" in stream && Array.isArray(stream.side_data_list) ? stream.side_data_list : [];
|
|
308
|
+
const matrix = sideData.find(
|
|
309
|
+
(entry) => typeof entry === "object" && entry !== null && "side_data_type" in entry && entry.side_data_type === "Display Matrix"
|
|
310
|
+
);
|
|
311
|
+
let rotation = typeof matrix === "object" && matrix !== null && "rotation" in matrix ? matrix.rotation : void 0;
|
|
312
|
+
if (rotation === void 0 && "tags" in stream && typeof stream.tags === "object" && stream.tags !== null && "rotate" in stream.tags)
|
|
313
|
+
rotation = Number(stream.tags.rotate);
|
|
314
|
+
if (typeof rotation !== "number" || !Number.isFinite(rotation)) return false;
|
|
315
|
+
const angle = (rotation % 360 + 360) % 360;
|
|
316
|
+
return Math.abs(angle - 90) < 1 || Math.abs(angle - 270) < 1;
|
|
317
|
+
}
|
|
263
318
|
async function probeMedia(inputPath) {
|
|
264
319
|
const isImage = inferInputKind(inputPath) === "image";
|
|
265
|
-
const engine = await import("./src-
|
|
320
|
+
const engine = await import("./src-SSV66L3F.js");
|
|
266
321
|
const meta = await engine.extractMediaMetadata(inputPath);
|
|
267
322
|
if (isImage) {
|
|
268
323
|
return { width: meta.width, height: meta.height, fps: 0, frameCount: 1 };
|
|
269
324
|
}
|
|
270
325
|
const fps = meta.fps || 30;
|
|
271
326
|
const frameCount = meta.durationSeconds ? Math.round(meta.durationSeconds * fps) : 0;
|
|
272
|
-
|
|
327
|
+
const transposed = await decoderTransposesDimensions(inputPath);
|
|
328
|
+
return {
|
|
329
|
+
width: transposed ? meta.height : meta.width,
|
|
330
|
+
height: transposed ? meta.width : meta.height,
|
|
331
|
+
fps,
|
|
332
|
+
frameCount
|
|
333
|
+
};
|
|
273
334
|
}
|
|
274
335
|
function buildEncoderArgs(format, width, height, fps, outputPath, quality = DEFAULT_QUALITY) {
|
|
275
336
|
const base = [
|
|
@@ -6,8 +6,8 @@ var __filename = __hf_fileURLToPath(import.meta.url);
|
|
|
6
6
|
var __dirname = __hf_dirname(__filename);
|
|
7
7
|
|
|
8
8
|
// src/version.ts
|
|
9
|
-
var VERSION = true ? "0.8.
|
|
10
|
-
var PRODUCER_VERSION = true ? "0.8.
|
|
9
|
+
var VERSION = true ? "0.8.192" : "0.0.0-dev";
|
|
10
|
+
var PRODUCER_VERSION = true ? "0.8.192" : "0.0.0-dev";
|
|
11
11
|
|
|
12
12
|
export {
|
|
13
13
|
VERSION,
|
|
@@ -9,14 +9,14 @@ import {
|
|
|
9
9
|
} from "./chunk-K2FLNJVB.js";
|
|
10
10
|
import {
|
|
11
11
|
trackCommandFailure
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-BV6YE455.js";
|
|
13
13
|
import {
|
|
14
14
|
failCommand
|
|
15
15
|
} from "./chunk-JVBRJMOP.js";
|
|
16
16
|
|
|
17
17
|
// src/utils/project.ts
|
|
18
18
|
import { existsSync, statSync } from "fs";
|
|
19
|
-
import { resolve,
|
|
19
|
+
import { basename, dirname, join, relative, resolve, sep } from "path";
|
|
20
20
|
var InvalidProjectError = class extends Error {
|
|
21
21
|
title;
|
|
22
22
|
hint;
|
|
@@ -65,8 +65,28 @@ function resolveProject(dirArg, options = {}) {
|
|
|
65
65
|
throw err;
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
+
function projectHolding(file) {
|
|
69
|
+
for (let dir = dirname(file); ; dir = dirname(dir)) {
|
|
70
|
+
if (existsSync(join(dir, "index.html"))) return dir;
|
|
71
|
+
if (dirname(dir) === dir) return dirname(file);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function resolveLintTarget(arg) {
|
|
75
|
+
const file = arg === void 0 ? void 0 : resolve(arg);
|
|
76
|
+
if (file === void 0 || !statSync(file, { throwIfNoEntry: false })?.isFile()) {
|
|
77
|
+
return { project: resolveProject(arg) };
|
|
78
|
+
}
|
|
79
|
+
const dir = projectHolding(file);
|
|
80
|
+
const project = resolveProject(dir, { requireIndex: false });
|
|
81
|
+
return file === project.indexPath ? { project } : { project, entryFile: file };
|
|
82
|
+
}
|
|
83
|
+
function isUnderCompositions(projectDir, file) {
|
|
84
|
+
return relative(projectDir, file).split(sep)[0] === "compositions";
|
|
85
|
+
}
|
|
68
86
|
|
|
69
87
|
export {
|
|
70
88
|
resolveProjectOrThrow,
|
|
71
|
-
resolveProject
|
|
89
|
+
resolveProject,
|
|
90
|
+
resolveLintTarget,
|
|
91
|
+
isUnderCompositions
|
|
72
92
|
};
|