@ignix-social/editor 0.1.0
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/LICENSE +190 -0
- package/NOTICE +54 -0
- package/README.md +23 -0
- package/bin/ignix-editor.mjs +8 -0
- package/package.json +53 -0
- package/patches/index.mjs +53 -0
- package/scripts/build-ffmpeg-macos.sh +35 -0
- package/scripts/build-whisper-macos.sh +21 -0
- package/scripts/vendor.mjs +41 -0
- package/skills/ignix-editor/SKILL.md +132 -0
- package/src/audio.mjs +31 -0
- package/src/binaries.json +46 -0
- package/src/binaries.mjs +83 -0
- package/src/cli.mjs +254 -0
- package/src/prepare.mjs +74 -0
- package/src/runtime/ignix-frame.js +92 -0
- package/src/transcribe.mjs +71 -0
- package/src/validate.mjs +71 -0
- package/templates/blank/index.html +41 -0
- package/vendor/hyperframes/README.md +181 -0
- package/vendor/hyperframes/UPSTREAM.json +12 -0
- package/vendor/hyperframes/bin/hyperframes-localize-fonts.mjs +12 -0
- package/vendor/hyperframes/bin/hyperframes.mjs +11 -0
- package/vendor/hyperframes/dist/add-LR3ZR2A5.js +79 -0
- package/vendor/hyperframes/dist/agentPromptGenerator-VIIPZCJ3.js +143 -0
- package/vendor/hyperframes/dist/animatedGifPrep-P2T6YM7Z.js +34 -0
- package/vendor/hyperframes/dist/asset-BE2DOV72.js +26 -0
- package/vendor/hyperframes/dist/assetCataloger-VBLPHX24.js +340 -0
- package/vendor/hyperframes/dist/auth-RCQB2ZT7.js +60 -0
- package/vendor/hyperframes/dist/autoUpdate-RJAX3DAZ.js +268 -0
- package/vendor/hyperframes/dist/backgroundChecks-H2LCUIMJ.js +61 -0
- package/vendor/hyperframes/dist/backgroundChecksWorker.js +26 -0
- package/vendor/hyperframes/dist/batchRender-FT7AP7XH.js +355 -0
- package/vendor/hyperframes/dist/beat-analyzer.global.js +338 -0
- package/vendor/hyperframes/dist/beats-Y2EOP72P.js +309 -0
- package/vendor/hyperframes/dist/benchmark-MZ7GY3JW.js +231 -0
- package/vendor/hyperframes/dist/browser-HUTAMRQE.js +237 -0
- package/vendor/hyperframes/dist/bundleWithLocalizedFonts-5QOPOB5D.js +52 -0
- package/vendor/hyperframes/dist/capture-RLZA6EMR.js +4079 -0
- package/vendor/hyperframes/dist/capture-SZZ4IYJK.js +290 -0
- package/vendor/hyperframes/dist/captureFile-LYOJOUIE.js +15 -0
- package/vendor/hyperframes/dist/captureTimeout-PA4FYWT5.js +27 -0
- package/vendor/hyperframes/dist/catalog-KYU55EWR.js +1001 -0
- package/vendor/hyperframes/dist/check-TCG4PXLR.js +1697 -0
- package/vendor/hyperframes/dist/checkBrowser-RPMO4OW5.js +1032 -0
- package/vendor/hyperframes/dist/chunk-2EAXUCCE.js +88 -0
- package/vendor/hyperframes/dist/chunk-2EGFTPWD.js +1077 -0
- package/vendor/hyperframes/dist/chunk-2PSPARWP.js +6058 -0
- package/vendor/hyperframes/dist/chunk-2YN64IN5.js +5747 -0
- package/vendor/hyperframes/dist/chunk-3GXQPCJC.js +682 -0
- package/vendor/hyperframes/dist/chunk-3ZP5DXE7.js +15 -0
- package/vendor/hyperframes/dist/chunk-4NWOGZZS.js +1990 -0
- package/vendor/hyperframes/dist/chunk-4PFZPP2N.js +587 -0
- package/vendor/hyperframes/dist/chunk-4THIAPBL.js +128 -0
- package/vendor/hyperframes/dist/chunk-4YYJOFKS.js +28 -0
- package/vendor/hyperframes/dist/chunk-54HJ63Q2.js +29 -0
- package/vendor/hyperframes/dist/chunk-5ETJX6WM.js +89 -0
- package/vendor/hyperframes/dist/chunk-5IAKAQA7.js +389 -0
- package/vendor/hyperframes/dist/chunk-5Z63TBTX.js +37 -0
- package/vendor/hyperframes/dist/chunk-6BEFEWFB.js +25 -0
- package/vendor/hyperframes/dist/chunk-6CSYCFQV.js +68 -0
- package/vendor/hyperframes/dist/chunk-6CTIGJY7.js +154 -0
- package/vendor/hyperframes/dist/chunk-7HG4BFIN.js +93 -0
- package/vendor/hyperframes/dist/chunk-7JZ4FXP2.js +118 -0
- package/vendor/hyperframes/dist/chunk-A2Z4Z4VL.js +2961 -0
- package/vendor/hyperframes/dist/chunk-AMKC3AXA.js +25 -0
- package/vendor/hyperframes/dist/chunk-AVUUN2XD.js +4847 -0
- package/vendor/hyperframes/dist/chunk-AWDFDFI3.js +46 -0
- package/vendor/hyperframes/dist/chunk-AWNBM3MZ.js +94 -0
- package/vendor/hyperframes/dist/chunk-BXCMXMJQ.js +73 -0
- package/vendor/hyperframes/dist/chunk-BZ56MTDX.js +6 -0
- package/vendor/hyperframes/dist/chunk-CFKU7HTK.js +171 -0
- package/vendor/hyperframes/dist/chunk-CWPVM2QV.js +308 -0
- package/vendor/hyperframes/dist/chunk-DPVXBVLL.js +31292 -0
- package/vendor/hyperframes/dist/chunk-DQBY7FRR.js +397 -0
- package/vendor/hyperframes/dist/chunk-E6RPWJVC.js +213 -0
- package/vendor/hyperframes/dist/chunk-EISRN4E6.js +294 -0
- package/vendor/hyperframes/dist/chunk-EOVYQ3IG.js +143 -0
- package/vendor/hyperframes/dist/chunk-F3WZGU7C.js +479 -0
- package/vendor/hyperframes/dist/chunk-FCSIGXXP.js +366 -0
- package/vendor/hyperframes/dist/chunk-FI4I7CME.js +56 -0
- package/vendor/hyperframes/dist/chunk-FLWXXDNS.js +15 -0
- package/vendor/hyperframes/dist/chunk-GK4AIFIH.js +11171 -0
- package/vendor/hyperframes/dist/chunk-GMECXFAN.js +57 -0
- package/vendor/hyperframes/dist/chunk-GULOKZLI.js +155 -0
- package/vendor/hyperframes/dist/chunk-H4YZZ2VQ.js +68 -0
- package/vendor/hyperframes/dist/chunk-H6QMKUYA.js +477 -0
- package/vendor/hyperframes/dist/chunk-HBBJFK6I.js +273 -0
- package/vendor/hyperframes/dist/chunk-HRUGC23L.js +212 -0
- package/vendor/hyperframes/dist/chunk-HVW7ABXD.js +19 -0
- package/vendor/hyperframes/dist/chunk-HW6OYASV.js +344 -0
- package/vendor/hyperframes/dist/chunk-HWKCIWQT.js +3578 -0
- package/vendor/hyperframes/dist/chunk-I465DBM6.js +1214 -0
- package/vendor/hyperframes/dist/chunk-IGLEPPTN.js +24 -0
- package/vendor/hyperframes/dist/chunk-IGNAAHS3.js +433 -0
- package/vendor/hyperframes/dist/chunk-IHFUKJOR.js +85 -0
- package/vendor/hyperframes/dist/chunk-IQ3OUQ5Z.js +213 -0
- package/vendor/hyperframes/dist/chunk-ISN5GRYI.js +20 -0
- package/vendor/hyperframes/dist/chunk-IUZFXWSV.js +446 -0
- package/vendor/hyperframes/dist/chunk-JH556Q42.js +647 -0
- package/vendor/hyperframes/dist/chunk-JTHMTOMQ.js +601 -0
- package/vendor/hyperframes/dist/chunk-K2EQN4VU.js +405 -0
- package/vendor/hyperframes/dist/chunk-K2FTXJYH.js +16044 -0
- package/vendor/hyperframes/dist/chunk-K4WIOZFP.js +32 -0
- package/vendor/hyperframes/dist/chunk-K4WKGXRC.js +18 -0
- package/vendor/hyperframes/dist/chunk-KBJUXVOJ.js +172 -0
- package/vendor/hyperframes/dist/chunk-KC5XXX3X.js +590 -0
- package/vendor/hyperframes/dist/chunk-KNU5COPB.js +29 -0
- package/vendor/hyperframes/dist/chunk-KZI44OPA.js +185 -0
- package/vendor/hyperframes/dist/chunk-L3YOGIPG.js +48 -0
- package/vendor/hyperframes/dist/chunk-LAOCA3MQ.js +189 -0
- package/vendor/hyperframes/dist/chunk-LCSMOLGX.js +312 -0
- package/vendor/hyperframes/dist/chunk-LFGJWOVA.js +61 -0
- package/vendor/hyperframes/dist/chunk-LHSR3M4M.js +498 -0
- package/vendor/hyperframes/dist/chunk-LYNI3FOL.js +123 -0
- package/vendor/hyperframes/dist/chunk-M2WBOQ2Q.js +54 -0
- package/vendor/hyperframes/dist/chunk-MRF4AMKD.js +104 -0
- package/vendor/hyperframes/dist/chunk-MWB3ZIFM.js +852 -0
- package/vendor/hyperframes/dist/chunk-NGKM64BP.js +39 -0
- package/vendor/hyperframes/dist/chunk-NXMYHJAL.js +43 -0
- package/vendor/hyperframes/dist/chunk-OAF4XJOW.js +192 -0
- package/vendor/hyperframes/dist/chunk-OFQWTKPW.js +117 -0
- package/vendor/hyperframes/dist/chunk-P6LJ4Y32.js +4662 -0
- package/vendor/hyperframes/dist/chunk-PBN6GBJE.js +108 -0
- package/vendor/hyperframes/dist/chunk-PDAMK4Q5.js +28 -0
- package/vendor/hyperframes/dist/chunk-PFCFR3KZ.js +20 -0
- package/vendor/hyperframes/dist/chunk-PJ3HDUCY.js +108 -0
- package/vendor/hyperframes/dist/chunk-PMRBLBUP.js +152 -0
- package/vendor/hyperframes/dist/chunk-PPQUYWTW.js +240 -0
- package/vendor/hyperframes/dist/chunk-Q5X2B5WT.js +29 -0
- package/vendor/hyperframes/dist/chunk-Q7IU7MOR.js +351 -0
- package/vendor/hyperframes/dist/chunk-QC4FJVLM.js +371 -0
- package/vendor/hyperframes/dist/chunk-QNYYOUU3.js +1318 -0
- package/vendor/hyperframes/dist/chunk-RDNNAKEP.js +161 -0
- package/vendor/hyperframes/dist/chunk-RMHUQGRK.js +657 -0
- package/vendor/hyperframes/dist/chunk-RQVDTPGD.js +6 -0
- package/vendor/hyperframes/dist/chunk-RVCWIIZ7.js +68 -0
- package/vendor/hyperframes/dist/chunk-S3D6GE5W.js +72 -0
- package/vendor/hyperframes/dist/chunk-S3S4TGEH.js +424 -0
- package/vendor/hyperframes/dist/chunk-S7NPLFWV.js +11395 -0
- package/vendor/hyperframes/dist/chunk-SHB5VDMH.js +51 -0
- package/vendor/hyperframes/dist/chunk-TCLGPL65.js +860 -0
- package/vendor/hyperframes/dist/chunk-THXFSPLV.js +40 -0
- package/vendor/hyperframes/dist/chunk-TJSTGSAW.js +354 -0
- package/vendor/hyperframes/dist/chunk-TQFG7HTI.js +1024 -0
- package/vendor/hyperframes/dist/chunk-TVCRUG2S.js +265 -0
- package/vendor/hyperframes/dist/chunk-TWWSYAKJ.js +24 -0
- package/vendor/hyperframes/dist/chunk-U7CZBDMV.js +27 -0
- package/vendor/hyperframes/dist/chunk-UEZXMWG3.js +139 -0
- package/vendor/hyperframes/dist/chunk-UYEZTK4U.js +61 -0
- package/vendor/hyperframes/dist/chunk-VC76R6W2.js +27 -0
- package/vendor/hyperframes/dist/chunk-VFCKXTBB.js +159 -0
- package/vendor/hyperframes/dist/chunk-VWG7OQKU.js +22 -0
- package/vendor/hyperframes/dist/chunk-VXVRPIJA.js +105 -0
- package/vendor/hyperframes/dist/chunk-WBLXWOYK.js +15 -0
- package/vendor/hyperframes/dist/chunk-WERLJGIC.js +20 -0
- package/vendor/hyperframes/dist/chunk-WMQNIQDJ.js +2057 -0
- package/vendor/hyperframes/dist/chunk-WPHMNO44.js +4528 -0
- package/vendor/hyperframes/dist/chunk-X5HWXQPU.js +113 -0
- package/vendor/hyperframes/dist/chunk-X7MTZ4T2.js +6 -0
- package/vendor/hyperframes/dist/chunk-XH4DSOS5.js +59 -0
- package/vendor/hyperframes/dist/chunk-XS4EJSKU.js +23 -0
- package/vendor/hyperframes/dist/chunk-XT5P4QMO.js +181 -0
- package/vendor/hyperframes/dist/chunk-XT7X6QCP.js +6 -0
- package/vendor/hyperframes/dist/chunk-XUHOIDKG.js +6 -0
- package/vendor/hyperframes/dist/chunk-XUXGIA7H.js +485 -0
- package/vendor/hyperframes/dist/chunk-XZABUQTX.js +113 -0
- package/vendor/hyperframes/dist/chunk-Y6W4DVPS.js +356 -0
- package/vendor/hyperframes/dist/chunk-YEIFI443.js +44 -0
- package/vendor/hyperframes/dist/chunk-YQZNILVH.js +375 -0
- package/vendor/hyperframes/dist/chunk-Z27A7NUB.js +65 -0
- package/vendor/hyperframes/dist/chunk-Z6B37SNM.js +3081 -0
- package/vendor/hyperframes/dist/chunk-ZJUKFZ2P.js +10954 -0
- package/vendor/hyperframes/dist/chunk-ZKDMAOFU.js +32 -0
- package/vendor/hyperframes/dist/chunk-ZMXUQLI2.js +17219 -0
- package/vendor/hyperframes/dist/chunk-ZTZ7NCJT.js +58 -0
- package/vendor/hyperframes/dist/chunk-ZTZA4UWZ.js +108 -0
- package/vendor/hyperframes/dist/clean-W57E5YQ3.js +293 -0
- package/vendor/hyperframes/dist/cli.js +495 -0
- package/vendor/hyperframes/dist/cloud-FFTJGZ24.js +70 -0
- package/vendor/hyperframes/dist/cloudrun-AJUTHUEA.js +763 -0
- package/vendor/hyperframes/dist/colors-HKWSZCGK.js +15 -0
- package/vendor/hyperframes/dist/commands/contrast-audit.browser.js +459 -0
- package/vendor/hyperframes/dist/commands/layout-audit.browser.js +2102 -0
- package/vendor/hyperframes/dist/commands/motion-sample.browser.js +74 -0
- package/vendor/hyperframes/dist/commands/motion-signature.browser.js +374 -0
- package/vendor/hyperframes/dist/compare-AYCTT55F.js +421 -0
- package/vendor/hyperframes/dist/compiler-QO36EXLS.js +121 -0
- package/vendor/hyperframes/dist/component-VFFR2O7T.js +176 -0
- package/vendor/hyperframes/dist/compositions-QTVN3U2A.js +228 -0
- package/vendor/hyperframes/dist/contactSheet-27SRU7A4.js +22 -0
- package/vendor/hyperframes/dist/delete-ZAKYCB7I.js +114 -0
- package/vendor/hyperframes/dist/deploy-MX76RZ36.js +101 -0
- package/vendor/hyperframes/dist/destroy-H2TZBYHH.js +42 -0
- package/vendor/hyperframes/dist/deterministicFonts-HAEMV4TM.js +50 -0
- package/vendor/hyperframes/dist/dist-EWXJGN63.js +129 -0
- package/vendor/hyperframes/dist/dist-FNNGCKFS.js +29 -0
- package/vendor/hyperframes/dist/dist-S3PJNPXQ.js +392 -0
- package/vendor/hyperframes/dist/docker/Dockerfile.render +65 -0
- package/vendor/hyperframes/dist/docs/compositions.md +67 -0
- package/vendor/hyperframes/dist/docs/data-attributes.md +27 -0
- package/vendor/hyperframes/dist/docs/examples.md +19 -0
- package/vendor/hyperframes/dist/docs/gsap.md +26 -0
- package/vendor/hyperframes/dist/docs/rendering.md +35 -0
- package/vendor/hyperframes/dist/docs/troubleshooting.md +29 -0
- package/vendor/hyperframes/dist/docs-QAPJEGLS.js +131 -0
- package/vendor/hyperframes/dist/doctor-AI7C3FON.js +67 -0
- package/vendor/hyperframes/dist/dom-IROKGVJI.js +14 -0
- package/vendor/hyperframes/dist/dotEnv-AECLXQSO.js +14 -0
- package/vendor/hyperframes/dist/events-7LALYNKZ.js +92 -0
- package/vendor/hyperframes/dist/events-FQY3HGKZ.js +88 -0
- package/vendor/hyperframes/dist/feedback-WCMDMSTK.js +472 -0
- package/vendor/hyperframes/dist/ffmpeg-QIUFEFTY.js +35 -0
- package/vendor/hyperframes/dist/figma-64WY462P.js +63 -0
- package/vendor/hyperframes/dist/fontData.generated-NXAOI4GH.js +13 -0
- package/vendor/hyperframes/dist/fontLocalizeCli.js +132 -0
- package/vendor/hyperframes/dist/get-FPOMJMZB.js +103 -0
- package/vendor/hyperframes/dist/gpuPolicy-2ZUZE5D6.js +38 -0
- package/vendor/hyperframes/dist/grade-compare-E2CKPST4.js +647 -0
- package/vendor/hyperframes/dist/gsapParser-DIYYX6JT.js +2846 -0
- package/vendor/hyperframes/dist/gsapParserAcorn-E3GEIRZB.js +28 -0
- package/vendor/hyperframes/dist/help-YRQIDDML.js +197 -0
- package/vendor/hyperframes/dist/history-PP5NDRV3.js +571 -0
- package/vendor/hyperframes/dist/hyperframe-runtime.js +1081 -0
- package/vendor/hyperframes/dist/hyperframe.manifest.json +22 -0
- package/vendor/hyperframes/dist/hyperframe.runtime.iife.js +1081 -0
- package/vendor/hyperframes/dist/hyperframes-player.global.js +474 -0
- package/vendor/hyperframes/dist/hyperframes-slideshow.global.js +149 -0
- package/vendor/hyperframes/dist/info-SEX3B7JL.js +153 -0
- package/vendor/hyperframes/dist/init-U3AKHO5B.js +1147 -0
- package/vendor/hyperframes/dist/inspect-Q3K6EDEK.js +97 -0
- package/vendor/hyperframes/dist/installer-K6O5WF44.js +37 -0
- package/vendor/hyperframes/dist/keyframes-DC64JCI3.js +2602 -0
- package/vendor/hyperframes/dist/lambda-D7UMN4DJ.js +451 -0
- package/vendor/hyperframes/dist/layout-XSPPDHOO.js +86 -0
- package/vendor/hyperframes/dist/lib-TPG2ZMAX.js +128 -0
- package/vendor/hyperframes/dist/lint-7DQZE7L3.js +164 -0
- package/vendor/hyperframes/dist/lintProject-OHBBM3DJ.js +27 -0
- package/vendor/hyperframes/dist/list-4K5MVDQX.js +162 -0
- package/vendor/hyperframes/dist/login-NTX4OWXL.js +377 -0
- package/vendor/hyperframes/dist/logout-Q654A3SI.js +100 -0
- package/vendor/hyperframes/dist/manager-67P2XFXQ.js +34 -0
- package/vendor/hyperframes/dist/manager-CT3D67CG.js +38 -0
- package/vendor/hyperframes/dist/manager-GFN75DM4.js +30 -0
- package/vendor/hyperframes/dist/media-treatment-5FYAOPNL.js +972 -0
- package/vendor/hyperframes/dist/media-use-4XXGABIL.js +113 -0
- package/vendor/hyperframes/dist/models-C4E4IWJD.js +137 -0
- package/vendor/hyperframes/dist/motionShot-S4MIGMT5.js +614 -0
- package/vendor/hyperframes/dist/normalize-O76AC4HE.js +333 -0
- package/vendor/hyperframes/dist/normalize-audio-CSFTXLXD.js +276 -0
- package/vendor/hyperframes/dist/open-2ZD6BHZG.js +115 -0
- package/vendor/hyperframes/dist/pipeline-TNGWUZQC.js +54 -0
- package/vendor/hyperframes/dist/play-CTMUXX6E.js +349 -0
- package/vendor/hyperframes/dist/policies-FSDZVS2E.js +292 -0
- package/vendor/hyperframes/dist/preflight-SMNV6RW2.js +45 -0
- package/vendor/hyperframes/dist/present-WQVHV5CR.js +350 -0
- package/vendor/hyperframes/dist/preview-JOJXTH75.js +1820 -0
- package/vendor/hyperframes/dist/producer-ECLEN5RP.js +13 -0
- package/vendor/hyperframes/dist/progress-FBIEEB7Y.js +73 -0
- package/vendor/hyperframes/dist/projectConfig-HYJMJ5BY.js +56 -0
- package/vendor/hyperframes/dist/publication-HQ5Y3KBM.js +29 -0
- package/vendor/hyperframes/dist/publish-VHDYQASC.js +430 -0
- package/vendor/hyperframes/dist/refresh-K24ETHMA.js +53 -0
- package/vendor/hyperframes/dist/remove-background-W2YX2NVH.js +253 -0
- package/vendor/hyperframes/dist/render-AO5VX3YI.js +177 -0
- package/vendor/hyperframes/dist/render-LNO62LEL.js +2367 -0
- package/vendor/hyperframes/dist/render-TTQI7TGN.js +796 -0
- package/vendor/hyperframes/dist/render-batch-YH7CTWNY.js +284 -0
- package/vendor/hyperframes/dist/renderCancellation-JPIHE47X.js +35 -0
- package/vendor/hyperframes/dist/renderSetupWorker.js +79 -0
- package/vendor/hyperframes/dist/resolver-IZ647GBZ.js +38 -0
- package/vendor/hyperframes/dist/runtimeVersion.js +18 -0
- package/vendor/hyperframes/dist/screenshotCapture-ECBTLCU6.js +179 -0
- package/vendor/hyperframes/dist/shaderTransitionWorker.js +44 -0
- package/vendor/hyperframes/dist/sherpa-KKLNW6U2.js +314 -0
- package/vendor/hyperframes/dist/sherpaWorker.js +77 -0
- package/vendor/hyperframes/dist/sites-TNVKZS73.js +52 -0
- package/vendor/hyperframes/dist/skill-ZHVLH7KX.js +15 -0
- package/vendor/hyperframes/dist/skills/hyperframes/SKILL.md +152 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/brief-contract.md +108 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/brief-format.md +72 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/capability-menu.md +47 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/frame-worker-core.md +80 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/intent-interview.md +73 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/pitch-round.md +40 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/plugin-installation.md +43 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/production-loop.md +26 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/review-loop.md +37 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/route-briefs.md +11 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/routes/embedded-captions.md +11 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/routes/faceless-explainer.md +12 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/routes/general-video.md +12 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/routes/motion-graphics.md +11 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/routes/music-to-video.md +12 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/routes/pr-to-video.md +28 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/routes/product-launch-video.md +13 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/routes/remotion-to-hyperframes.md +9 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/routes/slideshow.md +11 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/routes/talking-head-recut.md +11 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/script-format.md +52 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/skill-lifecycle.md +35 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/storyboard-format.md +99 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/subagent-dispatch.md +35 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/workflow-catalog.md +10 -0
- package/vendor/hyperframes/dist/skills/hyperframes/scripts/lib/frame-packets-core.mjs +194 -0
- package/vendor/hyperframes/dist/skills/hyperframes/scripts/plugin-cli.mjs +88 -0
- package/vendor/hyperframes/dist/skills/hyperframes/scripts/plugin-cli.test.mjs +117 -0
- package/vendor/hyperframes/dist/skills/hyperframes-cli/SKILL.md +189 -0
- package/vendor/hyperframes/dist/skills/hyperframes-cli/references/beats.md +19 -0
- package/vendor/hyperframes/dist/skills/hyperframes-cli/references/cloud.md +163 -0
- package/vendor/hyperframes/dist/skills/hyperframes-cli/references/cloudrun.md +62 -0
- package/vendor/hyperframes/dist/skills/hyperframes-cli/references/compare-and-batch.md +105 -0
- package/vendor/hyperframes/dist/skills/hyperframes-cli/references/doctor-browser.md +57 -0
- package/vendor/hyperframes/dist/skills/hyperframes-cli/references/init-and-scaffold.md +74 -0
- package/vendor/hyperframes/dist/skills/hyperframes-cli/references/lambda.md +185 -0
- package/vendor/hyperframes/dist/skills/hyperframes-cli/references/lint-validate-inspect.md +132 -0
- package/vendor/hyperframes/dist/skills/hyperframes-cli/references/preview-render.md +193 -0
- package/vendor/hyperframes/dist/skills/hyperframes-cli/references/upgrade-info-misc.md +134 -0
- package/vendor/hyperframes/dist/skills/media-use/SKILL.md +100 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/CREDITS.md +35 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/chime.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/click-soft.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/click.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/error.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/glitch-1.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/glitch-2.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/glitch-3.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/impact-bass-1.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/impact-bass-2.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/key-press.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/manifest.json +97 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/notification.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/ping.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/pop.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/riser.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/sparkle.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/typing.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/whoosh-cinematic.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/whoosh-short.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/whoosh.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/references/bgm.md +76 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/references/captions/authoring.md +163 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/references/captions/motion.md +87 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/references/captions/transcript-handling.md +97 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/references/remove-background.md +143 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/references/requirements.md +29 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/references/sfx.md +42 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/references/transcribe.md +52 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/references/tts-to-captions.md +35 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/references/tts.md +260 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/audio.mjs +311 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/audio.test.mjs +159 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/gemini-pipeline.test.mjs +131 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/heygen-tts.mjs +122 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/heygen-tts.test.mjs +38 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/heygen-voice.mjs +98 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/heygen-voice.test.mjs +233 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/audio-meta.mjs +39 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/audio-meta.test.mjs +136 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/bgm-volume.mjs +4 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/bgm.mjs +257 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/bgm.test.mjs +74 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/concurrency.mjs +14 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/concurrency.test.mjs +41 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/gemini-auth.mjs +43 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/gemini-auth.py +52 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/gemini-auth.test.mjs +86 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/gemini-auth_test.py +90 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/gemini-tts.mjs +122 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/gemini-tts.test.mjs +243 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/heygen.mjs +197 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/heygen.test.mjs +185 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/media-record.mjs +114 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/media-record.test.mjs +205 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/python.mjs +77 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/python.test.mjs +136 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/sfx.mjs +165 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/sfx.test.mjs +121 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/tts.mjs +389 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/tts.spawn.test.mjs +158 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/tts.test.mjs +230 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lyria-recipe.py +136 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/wait-bgm.mjs +175 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/wait-bgm.test.mjs +108 -0
- package/vendor/hyperframes/dist/skills/media-use/luts/README.md +28 -0
- package/vendor/hyperframes/dist/skills/media-use/luts/index.json +57 -0
- package/vendor/hyperframes/dist/skills/media-use/references/audio.md +20 -0
- package/vendor/hyperframes/dist/skills/media-use/references/grading.md +160 -0
- package/vendor/hyperframes/dist/skills/media-use/references/media-treatment-recipes.md +929 -0
- package/vendor/hyperframes/dist/skills/media-use/references/media-treatments.md +202 -0
- package/vendor/hyperframes/dist/skills/media-use/references/memory.md +37 -0
- package/vendor/hyperframes/dist/skills/media-use/references/meta.md +61 -0
- package/vendor/hyperframes/dist/skills/media-use/references/operations.md +327 -0
- package/vendor/hyperframes/dist/skills/media-use/references/resolve.md +150 -0
- package/vendor/hyperframes/dist/skills/media-use/references/setup-providers.md +80 -0
- package/vendor/hyperframes/dist/skills/media-use/references/telemetry-dashboard.md +49 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/audio-duck.mjs +113 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/compatibility.test.mjs +96 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/dither.mjs +328 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/dither.test.mjs +176 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/eval.mjs +369 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/adopt.mjs +128 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/adopt.test.mjs +95 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/bgm-provider.mjs +20 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/brand-provider.mjs +59 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/bundled-sfx-provider.mjs +119 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/bundled-sfx-provider.test.mjs +139 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/cache.mjs +148 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/candidates.mjs +91 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/candidates.test.mjs +155 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/codex-provider.mjs +161 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/codex-provider.test.mjs +34 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/config-lock.d.mts +3 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/config-lock.mjs +45 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/config-lock.test.mjs +79 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/coverage.test.mjs +136 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/cube-build.mjs +181 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/cube-build.test.mjs +80 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/cube-validate.mjs +198 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/cube-validate.test.mjs +125 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/cutlist.mjs +184 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/cutlist.test.mjs +162 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/duck.mjs +95 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/duck.test.mjs +153 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/error-diffusion.mjs +230 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/error-diffusion.test.mjs +102 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/ff-binaries.mjs +37 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/freeze.mjs +72 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/freeze.test.mjs +138 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/grade-analyzer.mjs +265 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/grade-analyzer.test.mjs +285 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/heygen-cli.mjs +191 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/heygen-cli.test.mjs +301 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/heygen-search.mjs +45 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/heygen-search.test.mjs +49 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/heygen-video-provider.mjs +138 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/heygen-video-provider.test.mjs +435 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/image-provider.mjs +44 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/index-gen.mjs +63 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/local-media-search.mjs +32 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/local-models.mjs +318 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/local-models.test.mjs +220 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/local-run.mjs +78 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/local-run.test.mjs +121 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/logo-provider.mjs +244 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/logo-provider.test.mjs +298 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/ltx-video-provider.mjs +94 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/ltx-video-provider.test.mjs +316 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/lut-preset-provider.mjs +271 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/lut-preset-provider.test.mjs +199 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/manifest.d.mts +19 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/manifest.mjs +279 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/manifest.test.mjs +397 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/match.mjs +47 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/media-fetch.mjs +85 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/media-fetch.test.mjs +197 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/media-home.mjs +20 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/media-home.test.mjs +61 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/media-search.d.mts +9 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/media-search.mjs +107 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/mflux-provider.mjs +128 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/mflux-provider.test.mjs +174 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/misses.mjs +49 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/misses.test.mjs +89 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/npx-sync.mjs +31 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/npx-sync.test.mjs +50 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/parakeet-words.mjs +27 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/parakeet-words.test.mjs +44 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/prefs-store.mjs +180 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/prefs-store.test.mjs +189 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/probe.mjs +41 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/probe.test.mjs +148 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/providers.mjs +5 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/recipe-store.mjs +367 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/recipe-store.test.mjs +367 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/registry.mjs +212 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/registry.test.mjs +262 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/search.mjs +24 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/search.test.mjs +32 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/sfx-provider.mjs +23 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/specs.mjs +132 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/specs.test.mjs +157 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/stats.mjs +117 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/stats.test.mjs +165 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/svg-sanitize.mjs +21 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/telemetry.mjs +210 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/telemetry.test.mjs +437 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/test-home.test.mjs +10 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/transcriptCutFade.mjs +21 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/transcriptCutFade.test.mjs +33 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/tts-local-provider.mjs +94 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/tts-local-provider.test.mjs +72 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/usage.mjs +57 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/usage.test.mjs +54 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/voice-provider.mjs +57 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/voice-provider.test.mjs +46 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/words.mjs +18 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/prefs.mjs +70 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/recipe.mjs +103 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/resolve-plugin.test.mjs +62 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/resolve.mjs +1369 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/transcribe.mjs +194 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/transcribe.test.mjs +112 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/transcript-cut.mjs +270 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/transcript-cut.test.mjs +117 -0
- package/vendor/hyperframes/dist/skills-MJ2J4GEM.js +808 -0
- package/vendor/hyperframes/dist/skillsUpdateCheck-TKTYQN5R.js +26 -0
- package/vendor/hyperframes/dist/slideshow-EJ4IMY6P.js +24 -0
- package/vendor/hyperframes/dist/snapshot-KIVDUUMN.js +875 -0
- package/vendor/hyperframes/dist/src-6YQBJGWR.js +202 -0
- package/vendor/hyperframes/dist/src-PVYUYV3M.js +471 -0
- package/vendor/hyperframes/dist/state-KAXGHF77.js +26 -0
- package/vendor/hyperframes/dist/staticProjectServer-7EU666GS.js +49 -0
- package/vendor/hyperframes/dist/status-YM52BQ6S.js +311 -0
- package/vendor/hyperframes/dist/studio/assets/hyperframes-player-Cp8e_Zst.js +473 -0
- package/vendor/hyperframes/dist/studio/assets/index-BX3KHhGX.js +71 -0
- package/vendor/hyperframes/dist/studio/assets/index-CASEBNy2.js +1 -0
- package/vendor/hyperframes/dist/studio/assets/index-D11atkBt.css +1 -0
- package/vendor/hyperframes/dist/studio/assets/index-DMTt9nTf.js +531 -0
- package/vendor/hyperframes/dist/studio/assets/index-oE1pOdAy.js +399 -0
- package/vendor/hyperframes/dist/studio/chunk-5VSXRGIX.js +948 -0
- package/vendor/hyperframes/dist/studio/chunk-5VSXRGIX.js.map +1 -0
- package/vendor/hyperframes/dist/studio/chunk-7UQWVN52.js +938 -0
- package/vendor/hyperframes/dist/studio/chunk-7UQWVN52.js.map +1 -0
- package/vendor/hyperframes/dist/studio/chunk-EEXSYY5F.js +190 -0
- package/vendor/hyperframes/dist/studio/chunk-EEXSYY5F.js.map +1 -0
- package/vendor/hyperframes/dist/studio/chunk-FOEID72M.js +1441 -0
- package/vendor/hyperframes/dist/studio/chunk-FOEID72M.js.map +1 -0
- package/vendor/hyperframes/dist/studio/chunk-PZ5AY32C.js +10 -0
- package/vendor/hyperframes/dist/studio/chunk-PZ5AY32C.js.map +1 -0
- package/vendor/hyperframes/dist/studio/chunk-TDWGXBUT.js +1103 -0
- package/vendor/hyperframes/dist/studio/chunk-TDWGXBUT.js.map +1 -0
- package/vendor/hyperframes/dist/studio/domEditingLayers-IEVLO54Z.js +47 -0
- package/vendor/hyperframes/dist/studio/domEditingLayers-IEVLO54Z.js.map +1 -0
- package/vendor/hyperframes/dist/studio/favicon.svg +14 -0
- package/vendor/hyperframes/dist/studio/icons/timeline/audio.svg +7 -0
- package/vendor/hyperframes/dist/studio/icons/timeline/captions.svg +5 -0
- package/vendor/hyperframes/dist/studio/icons/timeline/composition.svg +12 -0
- package/vendor/hyperframes/dist/studio/icons/timeline/image.svg +18 -0
- package/vendor/hyperframes/dist/studio/icons/timeline/music.svg +10 -0
- package/vendor/hyperframes/dist/studio/icons/timeline/text.svg +3 -0
- package/vendor/hyperframes/dist/studio/index.css +165 -0
- package/vendor/hyperframes/dist/studio/index.css.map +1 -0
- package/vendor/hyperframes/dist/studio/index.d.ts +4296 -0
- package/vendor/hyperframes/dist/studio/index.html +23 -0
- package/vendor/hyperframes/dist/studio/index.js +99693 -0
- package/vendor/hyperframes/dist/studio/index.js.map +1 -0
- package/vendor/hyperframes/dist/studio/player.d.ts +30 -0
- package/vendor/hyperframes/dist/studio/player.js +10 -0
- package/vendor/hyperframes/dist/studio/player.js.map +1 -0
- package/vendor/hyperframes/dist/studio/styles/tailwind-preset.d.ts +39 -0
- package/vendor/hyperframes/dist/studio/styles/tailwind-preset.js +50 -0
- package/vendor/hyperframes/dist/studio/styles/tailwind-preset.js.map +1 -0
- package/vendor/hyperframes/dist/studio/styles.css +1 -0
- package/vendor/hyperframes/dist/studio/ui.d.ts +296 -0
- package/vendor/hyperframes/dist/studio/ui.js +66 -0
- package/vendor/hyperframes/dist/studio/ui.js.map +1 -0
- package/vendor/hyperframes/dist/studio-api-PNQZRPX5.js +136 -0
- package/vendor/hyperframes/dist/studioSelectionClient-IUUPKUHZ.js +25 -0
- package/vendor/hyperframes/dist/studioServer-UWRBPIOJ.js +1457 -0
- package/vendor/hyperframes/dist/synthesize-K62TIZWI.js +182 -0
- package/vendor/hyperframes/dist/system-EZYZNUFD.js +44 -0
- package/vendor/hyperframes/dist/telemetry-2YC4SGQU.js +144 -0
- package/vendor/hyperframes/dist/telemetry-QMYM4WME.js +95 -0
- package/vendor/hyperframes/dist/templates/_shared/AGENTS.md +107 -0
- package/vendor/hyperframes/dist/templates/_shared/CLAUDE.md +107 -0
- package/vendor/hyperframes/dist/templates/blank/index.html +55 -0
- package/vendor/hyperframes/dist/templates/from-file/index.html +75 -0
- package/vendor/hyperframes/dist/templates/warm-grain/compositions/captions.html +154 -0
- package/vendor/hyperframes/dist/templates/warm-grain/compositions/graphics.html +162 -0
- package/vendor/hyperframes/dist/templates/warm-grain/compositions/intro.html +87 -0
- package/vendor/hyperframes/dist/templates/warm-grain/index.html +264 -0
- package/vendor/hyperframes/dist/templates/warm-grain/registry-item.json +34 -0
- package/vendor/hyperframes/dist/timeline-77Z3BBQM.js +1377 -0
- package/vendor/hyperframes/dist/tokens-OBGTYE4Z.js +92 -0
- package/vendor/hyperframes/dist/transcribe-7NVFHCGA.js +387 -0
- package/vendor/hyperframes/dist/transcribe-BNSJRR4M.js +62 -0
- package/vendor/hyperframes/dist/tts-P3LIPIL5.js +234 -0
- package/vendor/hyperframes/dist/updateCheck-UDWIJ4ZQ.js +39 -0
- package/vendor/hyperframes/dist/upgrade-CT3CPO3E.js +231 -0
- package/vendor/hyperframes/dist/urlDownloader-H6WRI2UE.js +39 -0
- package/vendor/hyperframes/dist/usage-EC3KFUIJ.js +2139 -0
- package/vendor/hyperframes/dist/validate-65QDZJWZ.js +70 -0
- package/vendor/hyperframes/dist/video-FGSGKRSV.js +261 -0
- package/vendor/hyperframes/dist/workspaceBuildCheck-TOLGAI4T.js +133 -0
- package/vendor/hyperframes/package.json +80 -0
|
@@ -0,0 +1,15 @@
|
|
|
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
|
+
import {
|
|
8
|
+
c,
|
|
9
|
+
isColorSupported
|
|
10
|
+
} from "./chunk-ZTZA4UWZ.js";
|
|
11
|
+
import "./chunk-M2WBOQ2Q.js";
|
|
12
|
+
export {
|
|
13
|
+
c,
|
|
14
|
+
isColorSupported
|
|
15
|
+
};
|
|
@@ -0,0 +1,459 @@
|
|
|
1
|
+
// Browser-side WCAG contrast audit.
|
|
2
|
+
// Loaded as a raw string and injected via page.addScriptTag to avoid
|
|
3
|
+
// esbuild mangling (page.evaluate serializes functions; __name helpers break).
|
|
4
|
+
//
|
|
5
|
+
// Two-phase API — see packages/cli/src/commands/validate.ts's
|
|
6
|
+
// runContrastAudit() for the calling contract:
|
|
7
|
+
//
|
|
8
|
+
// 1. window.__contrastAuditPrepare() walks the DOM for text-bearing
|
|
9
|
+
// elements, computes each one's foreground paint (CSS `color`, or SVG
|
|
10
|
+
// `fill` for SVG text — fill and color are independent CSS properties
|
|
11
|
+
// in SVG), and HIDES that element's own text paint (color/fill set to
|
|
12
|
+
// transparent). Hiding is layout-neutral — it doesn't reflow anything —
|
|
13
|
+
// so the caller can screenshot the frame right after with the glyphs
|
|
14
|
+
// invisible but everything else unchanged. Returns the candidate list
|
|
15
|
+
// (selector, text, fg, bbox, font metrics).
|
|
16
|
+
// 2. Caller takes ONE screenshot (page.screenshot()) — same number of
|
|
17
|
+
// screenshots as before, just moved to after prepare() instead of
|
|
18
|
+
// before it.
|
|
19
|
+
// 3. window.__contrastAuditFinish(imgBase64, time, candidates) restores
|
|
20
|
+
// the original paint FIRST (so a slow/failed decode can't leave the
|
|
21
|
+
// page's text stuck invisible), then decodes the screenshot and, for
|
|
22
|
+
// each candidate, samples the real composited pixels directly INSIDE
|
|
23
|
+
// its own bounding box for the true background.
|
|
24
|
+
//
|
|
25
|
+
// Why sample inside the box instead of the 4px ring just outside it (the
|
|
26
|
+
// previous approach): the ring is a proximity heuristic that's wrong
|
|
27
|
+
// whenever what's immediately outside the text differs from what's actually
|
|
28
|
+
// behind it — a neighboring panel/component just past the text's edge, a
|
|
29
|
+
// rounded pill/button whose corner falls inside the ring, a
|
|
30
|
+
// backdrop-filter-blurred glass panel sized only a couple pixels larger
|
|
31
|
+
// than the text, or a translucent decoration that only partially overlaps
|
|
32
|
+
// the ring (or sits entirely inside the bbox, never touching the ring at
|
|
33
|
+
// all). Hiding the glyphs and sampling their own box side-steps all of
|
|
34
|
+
// that: it reads the exact pixels that were behind them.
|
|
35
|
+
//
|
|
36
|
+
// window.__contrastAuditRestoreIfPending() is a safety net: if the caller's
|
|
37
|
+
// screenshot or finish() call throws between prepare() and finish(), calling
|
|
38
|
+
// this restores any still-hidden paint so the next sample in the loop
|
|
39
|
+
// doesn't audit a page with stale invisible text. It's a no-op after a
|
|
40
|
+
// normal finish() call.
|
|
41
|
+
//
|
|
42
|
+
// NOTE: this logic (DOM-walk, foreground/paint-hide, background sampling)
|
|
43
|
+
// plus the pure WCAG math (relLum, wcagRatio, median) is duplicated in
|
|
44
|
+
// skills/hyperframes-creative/scripts/contrast-report.mjs — keep in sync.
|
|
45
|
+
// The pure "which rect to sample" decision is also mirrored in
|
|
46
|
+
// contrast-sample.ts (unit-tested there since this file can't import).
|
|
47
|
+
|
|
48
|
+
/* eslint-disable */
|
|
49
|
+
window.__contrastAuditPrepare = function () {
|
|
50
|
+
// SVG text (<text>, <tspan>, <textPath>) is painted via the `fill`
|
|
51
|
+
// property, not `color` — the two are independent CSS properties in SVG.
|
|
52
|
+
// A page can set `fill` (inline style, `fill` attribute, or a CSS rule)
|
|
53
|
+
// without ever touching `color`, in which case getComputedStyle(el).color
|
|
54
|
+
// resolves to the inherited/initial value (often black) and does not
|
|
55
|
+
// reflect what's actually rendered on screen.
|
|
56
|
+
function isSvgTextElement(el) {
|
|
57
|
+
return !!el.ownerSVGElement;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function parseColor(c) {
|
|
61
|
+
var m = (c || "").match(/^rgba?\(([^)]+)\)$/i);
|
|
62
|
+
if (!m) {
|
|
63
|
+
var mix = (c || "").match(
|
|
64
|
+
/^color-mix\(\s*in\s+srgb\s*,\s*(rgba?\([^)]+\))\s+(\d+(?:\.\d+)?|\.\d+)%\s*,\s*(rgba?\([^)]+\))\s+(\d+(?:\.\d+)?|\.\d+)%\s*\)$/i,
|
|
65
|
+
);
|
|
66
|
+
if (!mix) return null;
|
|
67
|
+
var first = parseColor(mix[1]);
|
|
68
|
+
var second = parseColor(mix[3]);
|
|
69
|
+
var firstWeight = parseFloat(mix[2]);
|
|
70
|
+
var secondWeight = parseFloat(mix[4]);
|
|
71
|
+
var weightTotal = firstWeight + secondWeight;
|
|
72
|
+
if (!first || !second || !isFinite(weightTotal) || weightTotal <= 0) return null;
|
|
73
|
+
return first.map(function (channel, index) {
|
|
74
|
+
return (channel * firstWeight + second[index] * secondWeight) / weightTotal;
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
var p = m[1].split(",").map(function (s) {
|
|
78
|
+
return parseFloat(s.trim());
|
|
79
|
+
});
|
|
80
|
+
if (
|
|
81
|
+
(p.length !== 3 && p.length !== 4) ||
|
|
82
|
+
p.some(function (v) {
|
|
83
|
+
return !isFinite(v);
|
|
84
|
+
})
|
|
85
|
+
)
|
|
86
|
+
return null;
|
|
87
|
+
return [p[0], p[1], p[2], p[3] != null ? p[3] : 1];
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function selectorOf(el) {
|
|
91
|
+
if (el.id) return "#" + el.id;
|
|
92
|
+
var cls = Array.from(el.classList).slice(0, 2).join(".");
|
|
93
|
+
return cls ? el.tagName.toLowerCase() + "." + cls : el.tagName.toLowerCase();
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
function hasClipPath(el) {
|
|
97
|
+
for (var ce = el; ce; ce = ce.parentElement) {
|
|
98
|
+
var cp = getComputedStyle(ce).clipPath;
|
|
99
|
+
if (cp && cp !== "none") return true;
|
|
100
|
+
}
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
var CLIP_PROBE_COLS = [0.05, 0.25, 0.5, 0.75, 0.95];
|
|
105
|
+
var CLIP_PROBE_ROWS = [0.25, 0.5, 0.75];
|
|
106
|
+
|
|
107
|
+
function paintsAnyProbePoint(el, rect) {
|
|
108
|
+
// Keep probe resolution aligned with layout-audit.browser.js. Edge strips
|
|
109
|
+
// narrower than the nearest probe point are treated as clipped away to
|
|
110
|
+
// avoid noisy typewriter pre-reveal contrast reports.
|
|
111
|
+
for (var ci = 0; ci < CLIP_PROBE_COLS.length; ci++) {
|
|
112
|
+
for (var ri = 0; ri < CLIP_PROBE_ROWS.length; ri++) {
|
|
113
|
+
var x = rect.left + rect.width * CLIP_PROBE_COLS[ci];
|
|
114
|
+
var y = rect.top + rect.height * CLIP_PROBE_ROWS[ri];
|
|
115
|
+
var hit = document.elementFromPoint(x, y);
|
|
116
|
+
if (hit === el || el.contains(hit)) return true;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// A clip-path can shrink an element's painted region to nothing (a typewriter
|
|
123
|
+
// span pre-reveal at `inset(0 100% 0 0)`, or `circle(0px)`) while its box and
|
|
124
|
+
// colours read normally; it then paints zero pixels and measures a meaningless
|
|
125
|
+
// background-on-background ratio. clip-path drives hit-testing, so a fully
|
|
126
|
+
// clipped element is unreachable by elementFromPoint across its box. Probe only
|
|
127
|
+
// when a clip-path is in effect (self or ancestor) so genuinely-occluded but
|
|
128
|
+
// unclipped text is not skipped.
|
|
129
|
+
function isClippedAway(el, rect) {
|
|
130
|
+
if (typeof document.elementFromPoint !== "function") return false;
|
|
131
|
+
if (!hasClipPath(el)) return false;
|
|
132
|
+
return !paintsAnyProbePoint(el, rect);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
function isIntentionallyOccluded(el, rect) {
|
|
136
|
+
if (typeof document.elementFromPoint !== "function") return false;
|
|
137
|
+
if (!el.closest || !el.closest("[data-layout-allow-occlusion]")) return false;
|
|
138
|
+
return !paintsAnyProbePoint(el, rect);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
var out = [];
|
|
142
|
+
var restores = [];
|
|
143
|
+
// Registered BEFORE the walk starts (not after it finishes) and pushed to
|
|
144
|
+
// incrementally as each element is hidden: if getComputedStyle/
|
|
145
|
+
// getBoundingClientRect/etc. throws partway through the walk (e.g. on a
|
|
146
|
+
// detached or otherwise pathological element), everything hidden before
|
|
147
|
+
// the throw is still reachable for restore instead of leaking hidden
|
|
148
|
+
// indefinitely.
|
|
149
|
+
window.__contrastAuditRestores = restores;
|
|
150
|
+
var walker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);
|
|
151
|
+
var node;
|
|
152
|
+
while ((node = walker.nextNode())) {
|
|
153
|
+
var el = node;
|
|
154
|
+
|
|
155
|
+
// Must have a direct text node child
|
|
156
|
+
var hasText = false;
|
|
157
|
+
for (var i = 0; i < el.childNodes.length; i++) {
|
|
158
|
+
if (
|
|
159
|
+
el.childNodes[i].nodeType === 3 &&
|
|
160
|
+
(el.childNodes[i].textContent || "").trim().length > 0
|
|
161
|
+
) {
|
|
162
|
+
hasText = true;
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
if (!hasText) continue;
|
|
167
|
+
|
|
168
|
+
// Same decorative opt-out the layout audit honors: text marked (or inside)
|
|
169
|
+
// data-layout-ignore is set dressing, not copy a viewer must read —
|
|
170
|
+
// deliberately dim rail labels, ghost typography, texture text.
|
|
171
|
+
if (el.closest && el.closest("[data-layout-ignore]")) continue;
|
|
172
|
+
|
|
173
|
+
// Text that has (nearly) left the canvas — a cursor exiting the frame, an
|
|
174
|
+
// element parked off-screen — is not readable content, and sampling its
|
|
175
|
+
// clamped edge reads whatever pixels happen to sit at the border (the
|
|
176
|
+
// classic false "white-on-white"). Require a minimally-visible on-canvas
|
|
177
|
+
// intersection before judging contrast; the layout audit separately owns
|
|
178
|
+
// off-canvas detection as its own finding class.
|
|
179
|
+
var vis = el.getBoundingClientRect();
|
|
180
|
+
var onX = Math.min(vis.right, window.innerWidth) - Math.max(vis.left, 0);
|
|
181
|
+
var onY = Math.min(vis.bottom, window.innerHeight) - Math.max(vis.top, 0);
|
|
182
|
+
if (onX < 8 || onY < 8) continue;
|
|
183
|
+
|
|
184
|
+
var cs = getComputedStyle(el);
|
|
185
|
+
if (cs.visibility === "hidden" || cs.display === "none") continue;
|
|
186
|
+
if (parseFloat(cs.opacity) <= 0.01) continue;
|
|
187
|
+
// Also skip when an ANCESTOR is effectively invisible (opacity≈0 / hidden / display:none).
|
|
188
|
+
// Karaoke captions keep every word at opacity 1 but toggle the GROUP's opacity per beat,
|
|
189
|
+
// so an inactive word's OWN opacity is 1 — only an ancestor reveals it's hidden. Without
|
|
190
|
+
// this, the hidden caption words flood the audit with false ~1:1 contrast warnings.
|
|
191
|
+
var anc = el.parentElement,
|
|
192
|
+
ancHidden = false;
|
|
193
|
+
while (anc && anc !== document.body) {
|
|
194
|
+
var acs = getComputedStyle(anc);
|
|
195
|
+
if (
|
|
196
|
+
acs.visibility === "hidden" ||
|
|
197
|
+
acs.display === "none" ||
|
|
198
|
+
parseFloat(acs.opacity) <= 0.01
|
|
199
|
+
) {
|
|
200
|
+
ancHidden = true;
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
203
|
+
anc = anc.parentElement;
|
|
204
|
+
}
|
|
205
|
+
if (ancHidden) continue;
|
|
206
|
+
var rect = el.getBoundingClientRect();
|
|
207
|
+
if (rect.width < 8 || rect.height < 8) continue;
|
|
208
|
+
if (rect.right <= 0 || rect.bottom <= 0) continue;
|
|
209
|
+
if (isClippedAway(el, rect)) continue;
|
|
210
|
+
// The layout audit's explicit occlusion opt-out means this text is allowed
|
|
211
|
+
// to sit behind another scene. Skip contrast only while every probe point
|
|
212
|
+
// is actually covered; the same copy is audited normally when visible.
|
|
213
|
+
if (isIntentionallyOccluded(el, rect)) continue;
|
|
214
|
+
|
|
215
|
+
// For SVG text, `fill` is the paint that's actually rendered; `color` is
|
|
216
|
+
// frequently just the inherited/initial value and unrelated to what's on
|
|
217
|
+
// screen. Only trust `fill` when it resolves to a solid color — "none",
|
|
218
|
+
// "context-fill", and gradient/pattern refs (url(#...)) fall back to
|
|
219
|
+
// `color` rather than crashing parseColor or reporting a fabricated
|
|
220
|
+
// black.
|
|
221
|
+
var isSvgText = isSvgTextElement(el);
|
|
222
|
+
var fg = isSvgText ? parseColor(cs.fill) || parseColor(cs.color) : parseColor(cs.color);
|
|
223
|
+
if (!fg) continue;
|
|
224
|
+
if (fg[3] <= 0.01) continue;
|
|
225
|
+
var strokeWidth = parseFloat(cs.webkitTextStrokeWidth || "0");
|
|
226
|
+
var stroke = strokeWidth > 0 ? parseColor(cs.webkitTextStrokeColor || "") : null;
|
|
227
|
+
if (stroke && stroke[3] <= 0.01) stroke = null;
|
|
228
|
+
|
|
229
|
+
var fontSize = parseFloat(cs.fontSize);
|
|
230
|
+
var fontWeight = Number(cs.fontWeight) || 400;
|
|
231
|
+
var large = fontSize >= 24 || (fontSize >= 19 && fontWeight >= 700);
|
|
232
|
+
|
|
233
|
+
// Hide this element's OWN text paint so the caller's next screenshot
|
|
234
|
+
// reveals the true pixels behind the glyphs. Layout-neutral: color/fill
|
|
235
|
+
// never affect box geometry. `!important` beats any non-!important rule
|
|
236
|
+
// that might otherwise win on specificity; we restore the exact prior
|
|
237
|
+
// inline value (or remove the property entirely) afterward.
|
|
238
|
+
//
|
|
239
|
+
// A `transition` on color/fill would otherwise animate this hide instead
|
|
240
|
+
// of applying it instantly — the caller's screenshot lands in the same
|
|
241
|
+
// task-queue gap as the transition's own frames, so it can catch a
|
|
242
|
+
// partially-transparent (still partly the original color) glyph instead
|
|
243
|
+
// of a fully hidden one, contaminating the background sample. Force
|
|
244
|
+
// `transition: none` alongside color/fill so the hide is atomic, and
|
|
245
|
+
// restore it alongside them.
|
|
246
|
+
var origTransition = el.style.getPropertyValue("transition");
|
|
247
|
+
var origTransitionPriority = el.style.getPropertyPriority("transition");
|
|
248
|
+
el.style.setProperty("transition", "none", "important");
|
|
249
|
+
var origColor = el.style.getPropertyValue("color");
|
|
250
|
+
var origColorPriority = el.style.getPropertyPriority("color");
|
|
251
|
+
el.style.setProperty("color", "transparent", "important");
|
|
252
|
+
var origFill = null,
|
|
253
|
+
origFillPriority = null;
|
|
254
|
+
if (isSvgText) {
|
|
255
|
+
origFill = el.style.getPropertyValue("fill");
|
|
256
|
+
origFillPriority = el.style.getPropertyPriority("fill");
|
|
257
|
+
el.style.setProperty("fill", "transparent", "important");
|
|
258
|
+
}
|
|
259
|
+
var origStrokeColor = null,
|
|
260
|
+
origStrokeColorPriority = null;
|
|
261
|
+
if (stroke) {
|
|
262
|
+
origStrokeColor = el.style.getPropertyValue("-webkit-text-stroke-color");
|
|
263
|
+
origStrokeColorPriority = el.style.getPropertyPriority("-webkit-text-stroke-color");
|
|
264
|
+
el.style.setProperty("-webkit-text-stroke-color", "transparent", "important");
|
|
265
|
+
}
|
|
266
|
+
restores.push({
|
|
267
|
+
el: el,
|
|
268
|
+
origTransition: origTransition,
|
|
269
|
+
origTransitionPriority: origTransitionPriority,
|
|
270
|
+
origColor: origColor,
|
|
271
|
+
origColorPriority: origColorPriority,
|
|
272
|
+
origFill: origFill,
|
|
273
|
+
origFillPriority: origFillPriority,
|
|
274
|
+
origStrokeColor: origStrokeColor,
|
|
275
|
+
origStrokeColorPriority: origStrokeColorPriority,
|
|
276
|
+
hasStroke: !!stroke,
|
|
277
|
+
isSvgText: isSvgText,
|
|
278
|
+
});
|
|
279
|
+
|
|
280
|
+
out.push({
|
|
281
|
+
selector: selectorOf(el),
|
|
282
|
+
text: (el.textContent || "").trim().slice(0, 50),
|
|
283
|
+
fg: fg,
|
|
284
|
+
stroke: stroke,
|
|
285
|
+
fontSize: fontSize,
|
|
286
|
+
fontWeight: fontWeight,
|
|
287
|
+
large: large,
|
|
288
|
+
bbox: { x: rect.x, y: rect.y, w: rect.width, h: rect.height },
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
return out;
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
function __contrastAuditRestoreAll() {
|
|
296
|
+
var restores = window.__contrastAuditRestores;
|
|
297
|
+
if (!restores) return;
|
|
298
|
+
for (var i = 0; i < restores.length; i++) {
|
|
299
|
+
var r = restores[i];
|
|
300
|
+
if (r.origColor) r.el.style.setProperty("color", r.origColor, r.origColorPriority);
|
|
301
|
+
else r.el.style.removeProperty("color");
|
|
302
|
+
if (r.isSvgText) {
|
|
303
|
+
if (r.origFill) r.el.style.setProperty("fill", r.origFill, r.origFillPriority);
|
|
304
|
+
else r.el.style.removeProperty("fill");
|
|
305
|
+
}
|
|
306
|
+
if (r.hasStroke) {
|
|
307
|
+
if (r.origStrokeColor)
|
|
308
|
+
r.el.style.setProperty(
|
|
309
|
+
"-webkit-text-stroke-color",
|
|
310
|
+
r.origStrokeColor,
|
|
311
|
+
r.origStrokeColorPriority,
|
|
312
|
+
);
|
|
313
|
+
else r.el.style.removeProperty("-webkit-text-stroke-color");
|
|
314
|
+
}
|
|
315
|
+
if (r.origTransition)
|
|
316
|
+
r.el.style.setProperty("transition", r.origTransition, r.origTransitionPriority);
|
|
317
|
+
else r.el.style.removeProperty("transition");
|
|
318
|
+
}
|
|
319
|
+
window.__contrastAuditRestores = null;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
// Safety net for the caller: if the screenshot or finish() call throws
|
|
323
|
+
// between prepare() and finish(), call this to restore any still-hidden
|
|
324
|
+
// paint so the next sample in the loop isn't auditing a page with stale
|
|
325
|
+
// invisible text. No-op if finish() already ran normally.
|
|
326
|
+
window.__contrastAuditRestoreIfPending = function () {
|
|
327
|
+
__contrastAuditRestoreAll();
|
|
328
|
+
};
|
|
329
|
+
|
|
330
|
+
window.__contrastAuditFinish = async function (imgBase64, time, candidates) {
|
|
331
|
+
function relLum(r, g, b) {
|
|
332
|
+
function ch(v) {
|
|
333
|
+
var s = v / 255;
|
|
334
|
+
return s <= 0.03928 ? s / 12.92 : Math.pow((s + 0.055) / 1.055, 2.4);
|
|
335
|
+
}
|
|
336
|
+
return 0.2126 * ch(r) + 0.7152 * ch(g) + 0.0722 * ch(b);
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
function wcagRatio(r1, g1, b1, r2, g2, b2) {
|
|
340
|
+
var l1 = relLum(r1, g1, b1),
|
|
341
|
+
l2 = relLum(r2, g2, b2);
|
|
342
|
+
var hi = l1 > l2 ? l1 : l2,
|
|
343
|
+
lo = l1 > l2 ? l2 : l1;
|
|
344
|
+
return (hi + 0.05) / (lo + 0.05);
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
function median(arr) {
|
|
348
|
+
var s = arr.slice().sort(function (a, b) {
|
|
349
|
+
return a - b;
|
|
350
|
+
});
|
|
351
|
+
return s[Math.floor(s.length / 2)];
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
// Restore original paint first — we already have the screenshot, and we
|
|
355
|
+
// never want a decode failure below to leave the page's text invisible.
|
|
356
|
+
__contrastAuditRestoreAll();
|
|
357
|
+
|
|
358
|
+
var img = new Image();
|
|
359
|
+
await new Promise(function (resolve) {
|
|
360
|
+
img.onload = resolve;
|
|
361
|
+
img.onerror = function () {
|
|
362
|
+
resolve();
|
|
363
|
+
};
|
|
364
|
+
img.src = "data:image/png;base64," + imgBase64;
|
|
365
|
+
});
|
|
366
|
+
if (!img.naturalWidth) return [];
|
|
367
|
+
var canvas = document.createElement("canvas");
|
|
368
|
+
canvas.width = img.naturalWidth || 1920;
|
|
369
|
+
canvas.height = img.naturalHeight || 1080;
|
|
370
|
+
var ctx = canvas.getContext("2d");
|
|
371
|
+
if (!ctx) return [];
|
|
372
|
+
ctx.drawImage(img, 0, 0);
|
|
373
|
+
var px = ctx.getImageData(0, 0, canvas.width, canvas.height).data;
|
|
374
|
+
var w = canvas.width;
|
|
375
|
+
var h = canvas.height;
|
|
376
|
+
|
|
377
|
+
var out = [];
|
|
378
|
+
for (var ci = 0; ci < candidates.length; ci++) {
|
|
379
|
+
var c = candidates[ci];
|
|
380
|
+
var bbox = c.bbox;
|
|
381
|
+
|
|
382
|
+
// Sample the element's OWN box (glyphs are hidden in this screenshot),
|
|
383
|
+
// inset 1px on each side to dodge anti-aliased edge pixels, clamped to
|
|
384
|
+
// the canvas. Mirrors contrast-sample.ts's computeSampleRect.
|
|
385
|
+
var x0 = Math.max(0, Math.round(bbox.x) + 1);
|
|
386
|
+
var x1 = Math.min(w - 1, Math.round(bbox.x + bbox.w) - 1);
|
|
387
|
+
var y0 = Math.max(0, Math.round(bbox.y) + 1);
|
|
388
|
+
var y1 = Math.min(h - 1, Math.round(bbox.y + bbox.h) - 1);
|
|
389
|
+
if (x1 <= x0 || y1 <= y0) continue;
|
|
390
|
+
|
|
391
|
+
// Bounded grid, not a full scan — dense enough to catch a
|
|
392
|
+
// partially-overlapping decoration without turning a wide caption bar
|
|
393
|
+
// into thousands of samples. Mirrors contrast-sample.ts's
|
|
394
|
+
// sampleGridPoints.
|
|
395
|
+
var stepX = Math.max(1, Math.floor((x1 - x0) / 12));
|
|
396
|
+
var stepY = Math.max(1, Math.floor((y1 - y0) / 6));
|
|
397
|
+
var rr = [],
|
|
398
|
+
gg = [],
|
|
399
|
+
bb = [],
|
|
400
|
+
aa = [];
|
|
401
|
+
for (var y = y0; y <= y1; y += stepY) {
|
|
402
|
+
for (var x = x0; x <= x1; x += stepX) {
|
|
403
|
+
var idx = (y * w + x) * 4;
|
|
404
|
+
rr.push(px[idx]);
|
|
405
|
+
gg.push(px[idx + 1]);
|
|
406
|
+
bb.push(px[idx + 2]);
|
|
407
|
+
aa.push(px[idx + 3]);
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
if (rr.length === 0) continue;
|
|
411
|
+
|
|
412
|
+
// A transparent sampled backdrop is supplied by the downstream editor,
|
|
413
|
+
// not this composition. WCAG contrast cannot be inferred until that live
|
|
414
|
+
// video/image is known, so do not invent an opaque browser default and
|
|
415
|
+
// hard-fail an otherwise valid alpha overlay.
|
|
416
|
+
if (median(aa) < 255) continue;
|
|
417
|
+
|
|
418
|
+
var bgR = median(rr),
|
|
419
|
+
bgG = median(gg),
|
|
420
|
+
bgB = median(bb);
|
|
421
|
+
|
|
422
|
+
// Composite foreground alpha over the measured background
|
|
423
|
+
var fg = c.fg;
|
|
424
|
+
var compR = Math.round(fg[0] * fg[3] + bgR * (1 - fg[3]));
|
|
425
|
+
var compG = Math.round(fg[1] * fg[3] + bgG * (1 - fg[3]));
|
|
426
|
+
var compB = Math.round(fg[2] * fg[3] + bgB * (1 - fg[3]));
|
|
427
|
+
|
|
428
|
+
var ratio = +wcagRatio(compR, compG, compB, bgR, bgG, bgB).toFixed(2);
|
|
429
|
+
|
|
430
|
+
// A solid text stroke is part of the visible glyph paint. Use whichever
|
|
431
|
+
// of fill or stroke provides the stronger edge contrast, rather than
|
|
432
|
+
// failing readable outlined captions based on fill alone.
|
|
433
|
+
if (c.stroke) {
|
|
434
|
+
var stroke = c.stroke;
|
|
435
|
+
var strokeR = Math.round(stroke[0] * stroke[3] + bgR * (1 - stroke[3]));
|
|
436
|
+
var strokeG = Math.round(stroke[1] * stroke[3] + bgG * (1 - stroke[3]));
|
|
437
|
+
var strokeB = Math.round(stroke[2] * stroke[3] + bgB * (1 - stroke[3]));
|
|
438
|
+
var strokeRatio = +wcagRatio(strokeR, strokeG, strokeB, bgR, bgG, bgB).toFixed(2);
|
|
439
|
+
if (strokeRatio > ratio) {
|
|
440
|
+
compR = strokeR;
|
|
441
|
+
compG = strokeG;
|
|
442
|
+
compB = strokeB;
|
|
443
|
+
ratio = strokeRatio;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
out.push({
|
|
448
|
+
time: time,
|
|
449
|
+
selector: c.selector,
|
|
450
|
+
text: c.text,
|
|
451
|
+
ratio: ratio,
|
|
452
|
+
wcagAA: c.large ? ratio >= 3 : ratio >= 4.5,
|
|
453
|
+
large: c.large,
|
|
454
|
+
fg: "rgb(" + compR + "," + compG + "," + compB + ")",
|
|
455
|
+
bg: "rgb(" + bgR + "," + bgG + "," + bgB + ")",
|
|
456
|
+
});
|
|
457
|
+
}
|
|
458
|
+
return out;
|
|
459
|
+
};
|