[{"data":1,"prerenderedAt":4119},["ShallowReactive",2],{"navigation":3,"\u002Fpackages\u002Fcore":686,"\u002Fpackages\u002Fcore-surround":4114},[4,31,57,147,168,198,652],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":30},"快速入门","i-lucide-rocket","\u002Fgetting-started","01.getting-started",[10,14,18,22,26],{"title":11,"path":12,"stem":13},"简介","\u002Fgetting-started\u002Fintroduction","01.getting-started\u002F01.introduction",{"title":15,"path":16,"stem":17},"快速开始","\u002Fgetting-started\u002Fquickstart","01.getting-started\u002F02.quickstart",{"title":19,"path":20,"stem":21},"展示作品","\u002Fgetting-started\u002Fshowcase","01.getting-started\u002F03.showcase",{"title":23,"path":24,"stem":25},"示例","\u002Fgetting-started\u002Fexamples","01.getting-started\u002F04.examples",{"title":27,"path":28,"stem":29},"发布视频","\u002Fgetting-started\u002Flaunch-videos","01.getting-started\u002F05.launch-videos",false,{"title":32,"icon":33,"path":34,"stem":35,"children":36,"page":30},"核心概念","i-lucide-lightbulb","\u002Fconcepts","02.concepts",[37,41,45,49,53],{"title":38,"path":39,"stem":40},"合成","\u002Fconcepts\u002Fcompositions","02.concepts\u002F01.compositions",{"title":42,"path":43,"stem":44},"数据属性","\u002Fconcepts\u002Fdata-attributes","02.concepts\u002F02.data-attributes",{"title":46,"path":47,"stem":48},"变量","\u002Fconcepts\u002Fvariables","02.concepts\u002F03.variables",{"title":50,"path":51,"stem":52},"帧适配器","\u002Fconcepts\u002Fframe-adapters","02.concepts\u002F04.frame-adapters",{"title":54,"path":55,"stem":56},"确定性渲染","\u002Fconcepts\u002Fdeterminism","02.concepts\u002F05.determinism",{"title":58,"icon":59,"path":60,"stem":61,"children":62,"page":30},"使用指南","i-lucide-compass","\u002Fguides","03.guides",[63,67,71,75,79,83,87,91,95,99,103,107,111,115,119,123,127,131,135,139,143],{"title":64,"path":65,"stem":66},"工作流水线","\u002Fguides\u002Fpipeline","03.guides\u002F01.pipeline",{"title":68,"path":69,"stem":70},"HTML-in-Canvas","\u002Fguides\u002Fhtml-in-canvas","03.guides\u002F02.html-in-canvas",{"title":72,"path":73,"stem":74},"网站转视频","\u002Fguides\u002Fwebsite-to-video","03.guides\u002F03.website-to-video",{"title":76,"path":77,"stem":78},"Google Antigravity","\u002Fguides\u002Fantigravity","03.guides\u002F04.antigravity",{"title":80,"path":81,"stem":82},"GitHub Copilot CLI","\u002Fguides\u002Fcopilot-cli","03.guides\u002F05.copilot-cli",{"title":84,"path":85,"stem":86},"Claude Design","\u002Fguides\u002Fclaude-design","03.guides\u002F06.claude-design",{"title":88,"path":89,"stem":90},"Open Design","\u002Fguides\u002Fopen-design","03.guides\u002F07.open-design",{"title":92,"path":93,"stem":94},"提示词指南","\u002Fguides\u002Fprompting","03.guides\u002F08.prompting",{"title":96,"path":97,"stem":98},"Hyperframes vs Remotion","\u002Fguides\u002Fhyperframes-vs-remotion","03.guides\u002F09.hyperframes-vs-remotion",{"title":100,"path":101,"stem":102},"GSAP 动画","\u002Fguides\u002Fgsap-animation","03.guides\u002F10.gsap-animation",{"title":104,"path":105,"stem":106},"渲染","\u002Fguides\u002Frendering","03.guides\u002F11.rendering",{"title":108,"path":109,"stem":110},"去除背景（透明视频）","\u002Fguides\u002Fremove-background","03.guides\u002F12.remove-background",{"title":112,"path":113,"stem":114},"HDR 渲染","\u002Fguides\u002Fhdr","03.guides\u002F13.hdr",{"title":116,"path":117,"stem":118},"4K 渲染","\u002Fguides\u002F4k-rendering","03.guides\u002F14.4k-rendering",{"title":120,"path":121,"stem":122},"性能","\u002Fguides\u002Fperformance","03.guides\u002F15.performance",{"title":124,"path":125,"stem":126},"时间轴编辑","\u002Fguides\u002Ftimeline-editing","03.guides\u002F16.timeline-editing",{"title":128,"path":129,"stem":130},"视频编辑者速查表","\u002Fguides\u002Fvideo-editor-cheatsheet","03.guides\u002F17.video-editor-cheatsheet",{"title":132,"path":133,"stem":134},"常见错误","\u002Fguides\u002Fcommon-mistakes","03.guides\u002F18.common-mistakes",{"title":136,"path":137,"stem":138},"故障排除","\u002Fguides\u002Ftroubleshooting","03.guides\u002F19.troubleshooting",{"title":140,"path":141,"stem":142},"反馈收集","\u002Fguides\u002Ffeedback","03.guides\u002F20.feedback",{"title":144,"path":145,"stem":146},"HyperFrames MCP","\u002Fguides\u002Fmcp","03.guides\u002F21.mcp",{"title":148,"icon":149,"path":150,"stem":151,"children":152,"page":30},"部署","i-lucide-cloud","\u002Fdeploy","04.deploy",[153,156,160,164],{"title":148,"path":154,"stem":155},"\u002Fdeploy\u002Fdeploy","04.deploy\u002F01.deploy",{"title":157,"path":158,"stem":159},"AWS Lambda","\u002Fdeploy\u002Faws-lambda","04.deploy\u002F02.aws-lambda",{"title":161,"path":162,"stem":163},"Lambda 上的模板","\u002Fdeploy\u002Ftemplates-on-lambda","04.deploy\u002F03.templates-on-lambda",{"title":165,"path":166,"stem":167},"迁移到 HyperFrames Lambda","\u002Fdeploy\u002Fmigrating-to-hyperframes-lambda","04.deploy\u002F04.migrating-to-hyperframes-lambda",{"title":169,"icon":170,"path":171,"stem":172,"children":173,"page":30},"包","i-lucide-package","\u002Fpackages","05.packages",[174,178,182,186,190,194],{"title":175,"path":176,"stem":177},"@hyperframes\u002Fcore","\u002Fpackages\u002Fcore","05.packages\u002F01.core",{"title":179,"path":180,"stem":181},"@hyperframes\u002Fengine","\u002Fpackages\u002Fengine","05.packages\u002F02.engine",{"title":183,"path":184,"stem":185},"@hyperframes\u002Fplayer","\u002Fpackages\u002Fplayer","05.packages\u002F03.player",{"title":187,"path":188,"stem":189},"@hyperframes\u002Fproducer","\u002Fpackages\u002Fproducer","05.packages\u002F04.producer",{"title":191,"path":192,"stem":193},"@hyperframes\u002Fstudio","\u002Fpackages\u002Fstudio","05.packages\u002F05.studio",{"title":195,"path":196,"stem":197},"CLI","\u002Fpackages\u002Fcli","05.packages\u002F06.cli",{"title":199,"icon":200,"path":201,"stem":202,"children":203,"page":30},"组件目录","i-lucide-layout-grid","\u002Fcatalog","06.catalog",[204,270,324,358,420,478,512,546,584,598],{"title":205,"icon":206,"path":207,"stem":208,"children":209,"page":30},"字幕","i-lucide-captions","\u002Fcatalog\u002Fcaption","06.catalog\u002F01.caption",[210,214,218,222,226,230,234,238,242,246,250,254,258,262,266],{"title":211,"path":212,"stem":213},"裁剪擦除","\u002Fcatalog\u002Fcaption\u002Fcaption-clip-wipe","06.catalog\u002F01.caption\u002F01.caption-clip-wipe",{"title":215,"path":216,"stem":217},"编辑强调","\u002Fcatalog\u002Fcaption\u002Fcaption-editorial-emphasis","06.catalog\u002F01.caption\u002F02.caption-editorial-emphasis",{"title":219,"path":220,"stem":221},"Emoji 弹出","\u002Fcatalog\u002Fcaption\u002Fcaption-emoji-pop","06.catalog\u002F01.caption\u002F03.caption-emoji-pop",{"title":223,"path":224,"stem":225},"故障 RGB","\u002Fcatalog\u002Fcaption\u002Fcaption-glitch-rgb","06.catalog\u002F01.caption\u002F04.caption-glitch-rgb",{"title":227,"path":228,"stem":229},"渐变填充","\u002Fcatalog\u002Fcaption\u002Fcaption-gradient-fill","06.catalog\u002F01.caption\u002F05.caption-gradient-fill",{"title":231,"path":232,"stem":233},"高亮","\u002Fcatalog\u002Fcaption\u002Fcaption-highlight","06.catalog\u002F01.caption\u002F06.caption-highlight",{"title":235,"path":236,"stem":237},"动感冲击","\u002Fcatalog\u002Fcaption\u002Fcaption-kinetic-slam","06.catalog\u002F01.caption\u002F07.caption-kinetic-slam",{"title":239,"path":240,"stem":241},"矩阵解码","\u002Fcatalog\u002Fcaption\u002Fcaption-matrix-decode","06.catalog\u002F01.caption\u002F08.caption-matrix-decode",{"title":243,"path":244,"stem":245},"霓虹强调","\u002Fcatalog\u002Fcaption\u002Fcaption-neon-accent","06.catalog\u002F01.caption\u002F09.caption-neon-accent",{"title":247,"path":248,"stem":249},"霓虹发光","\u002Fcatalog\u002Fcaption\u002Fcaption-neon-glow","06.catalog\u002F01.caption\u002F10.caption-neon-glow",{"title":251,"path":252,"stem":253},"视差图层","\u002Fcatalog\u002Fcaption\u002Fcaption-parallax-layers","06.catalog\u002F01.caption\u002F11.caption-parallax-layers",{"title":255,"path":256,"stem":257},"粒子爆发","\u002Fcatalog\u002Fcaption\u002Fcaption-particle-burst","06.catalog\u002F01.caption\u002F12.caption-particle-burst",{"title":259,"path":260,"stem":261},"胶囊卡拉OK","\u002Fcatalog\u002Fcaption\u002Fcaption-pill-karaoke","06.catalog\u002F01.caption\u002F13.caption-pill-karaoke",{"title":263,"path":264,"stem":265},"纹理","\u002Fcatalog\u002Fcaption\u002Fcaption-texture","06.catalog\u002F01.caption\u002F14.caption-texture",{"title":267,"path":268,"stem":269},"字重切换","\u002Fcatalog\u002Fcaption\u002Fcaption-weight-shift","06.catalog\u002F01.caption\u002F15.caption-weight-shift",{"title":271,"icon":272,"path":273,"stem":274,"children":275,"page":30},"HTML 画布","i-lucide-layout-dashboard","\u002Fcatalog\u002Fhtml-canvas","06.catalog\u002F02.html-canvas",[276,280,284,288,292,296,300,304,308,312,316,320],{"title":277,"path":278,"stem":279},"iOS 26 Liquid Glass 主屏幕","\u002Fcatalog\u002Fhtml-canvas\u002Fios26-liquid-glass","06.catalog\u002F02.html-canvas\u002F01.ios26-liquid-glass",{"title":281,"path":282,"stem":283},"Liquid Glass 右键菜单","\u002Fcatalog\u002Fhtml-canvas\u002Fliquid-glass-context-menu","06.catalog\u002F02.html-canvas\u002F02.liquid-glass-context-menu",{"title":285,"path":286,"stem":287},"Liquid Glass 媒体控制","\u002Fcatalog\u002Fhtml-canvas\u002Fliquid-glass-media-controls","06.catalog\u002F02.html-canvas\u002F03.liquid-glass-media-controls",{"title":289,"path":290,"stem":291},"Liquid Glass 通知","\u002Fcatalog\u002Fhtml-canvas\u002Fliquid-glass-notification","06.catalog\u002F02.html-canvas\u002F04.liquid-glass-notification",{"title":293,"path":294,"stem":295},"Liquid Glass 小组件","\u002Fcatalog\u002Fhtml-canvas\u002Fliquid-glass-widgets","06.catalog\u002F02.html-canvas\u002F05.liquid-glass-widgets",{"title":297,"path":298,"stem":299},"macOS Tahoe Liquid Glass 桌面","\u002Fcatalog\u002Fhtml-canvas\u002Fmacos-tahoe-liquid-glass","06.catalog\u002F02.html-canvas\u002F06.macos-tahoe-liquid-glass",{"title":301,"path":302,"stem":303},"iPhone & MacBook 3D 展示","\u002Fcatalog\u002Fhtml-canvas\u002Fvfx-iphone-device","06.catalog\u002F02.html-canvas\u002F07.vfx-iphone-device",{"title":305,"path":306,"stem":307},"液态背景","\u002Fcatalog\u002Fhtml-canvas\u002Fvfx-liquid-background","06.catalog\u002F02.html-canvas\u002F08.vfx-liquid-background",{"title":309,"path":310,"stem":311},"磁力效果","\u002Fcatalog\u002Fhtml-canvas\u002Fvfx-magnetic","06.catalog\u002F02.html-canvas\u002F09.vfx-magnetic",{"title":313,"path":314,"stem":315},"传送门","\u002Fcatalog\u002Fhtml-canvas\u002Fvfx-portal","06.catalog\u002F02.html-canvas\u002F10.vfx-portal",{"title":317,"path":318,"stem":319},"碎裂效果","\u002Fcatalog\u002Fhtml-canvas\u002Fvfx-shatter","06.catalog\u002F02.html-canvas\u002F11.vfx-shatter",{"title":321,"path":322,"stem":323},"VFX 文字光标","\u002Fcatalog\u002Fhtml-canvas\u002Fvfx-text-cursor","06.catalog\u002F02.html-canvas\u002F12.vfx-text-cursor",{"title":325,"icon":326,"path":327,"stem":328,"children":329,"page":30},"社交叠加层","i-lucide-share-2","\u002Fcatalog\u002Fsocial-overlays","06.catalog\u002F03.social-overlays",[330,334,338,342,346,350,354],{"title":331,"path":332,"stem":333},"Instagram 关注","\u002Fcatalog\u002Fsocial-overlays\u002Finstagram-follow","06.catalog\u002F03.social-overlays\u002F01.instagram-follow",{"title":335,"path":336,"stem":337},"macOS 通知","\u002Fcatalog\u002Fsocial-overlays\u002Fmacos-notification","06.catalog\u002F03.social-overlays\u002F02.macos-notification",{"title":339,"path":340,"stem":341},"Reddit 帖子卡片","\u002Fcatalog\u002Fsocial-overlays\u002Freddit-post","06.catalog\u002F03.social-overlays\u002F03.reddit-post",{"title":343,"path":344,"stem":345},"Spotify 正在播放","\u002Fcatalog\u002Fsocial-overlays\u002Fspotify-card","06.catalog\u002F03.social-overlays\u002F04.spotify-card",{"title":347,"path":348,"stem":349},"TikTok 关注","\u002Fcatalog\u002Fsocial-overlays\u002Ftiktok-follow","06.catalog\u002F03.social-overlays\u002F05.tiktok-follow",{"title":351,"path":352,"stem":353},"X 帖子卡片","\u002Fcatalog\u002Fsocial-overlays\u002Fx-post","06.catalog\u002F03.social-overlays\u002F06.x-post",{"title":355,"path":356,"stem":357},"YouTube 下方三分之一","\u002Fcatalog\u002Fsocial-overlays\u002Fyt-lower-third","06.catalog\u002F03.social-overlays\u002F07.yt-lower-third",{"title":359,"icon":360,"path":361,"stem":362,"children":363,"page":30},"着色器过渡","i-lucide-wand-2","\u002Fcatalog\u002Fshader-transitions","06.catalog\u002F04.shader-transitions",[364,368,372,376,380,384,388,392,396,400,404,408,412,416],{"title":365,"path":366,"stem":367},"色散径向分裂","\u002Fcatalog\u002Fshader-transitions\u002Fchromatic-radial-split","06.catalog\u002F04.shader-transitions\u002F01.chromatic-radial-split",{"title":369,"path":370,"stem":371},"电影感变焦","\u002Fcatalog\u002Fshader-transitions\u002Fcinematic-zoom","06.catalog\u002F04.shader-transitions\u002F02.cinematic-zoom",{"title":373,"path":374,"stem":375},"交叉扭曲变形","\u002Fcatalog\u002Fshader-transitions\u002Fcross-warp-morph","06.catalog\u002F04.shader-transitions\u002F03.cross-warp-morph",{"title":377,"path":378,"stem":379},"域扭曲溶解","\u002Fcatalog\u002Fshader-transitions\u002Fdomain-warp-dissolve","06.catalog\u002F04.shader-transitions\u002F04.domain-warp-dissolve",{"title":381,"path":382,"stem":383},"白色闪光过渡","\u002Fcatalog\u002Fshader-transitions\u002Fflash-through-white","06.catalog\u002F04.shader-transitions\u002F05.flash-through-white",{"title":385,"path":386,"stem":387},"故障效果","\u002Fcatalog\u002Fshader-transitions\u002Fglitch","06.catalog\u002F04.shader-transitions\u002F06.glitch",{"title":389,"path":390,"stem":391},"引力透镜","\u002Fcatalog\u002Fshader-transitions\u002Fgravitational-lens","06.catalog\u002F04.shader-transitions\u002F07.gravitational-lens",{"title":393,"path":394,"stem":395},"光线泄漏","\u002Fcatalog\u002Fshader-transitions\u002Flight-leak","06.catalog\u002F04.shader-transitions\u002F08.light-leak",{"title":397,"path":398,"stem":399},"褶皱燃烧","\u002Fcatalog\u002Fshader-transitions\u002Fridged-burn","06.catalog\u002F04.shader-transitions\u002F09.ridged-burn",{"title":401,"path":402,"stem":403},"涟漪波纹","\u002Fcatalog\u002Fshader-transitions\u002Fripple-waves","06.catalog\u002F04.shader-transitions\u002F10.ripple-waves",{"title":405,"path":406,"stem":407},"SDF 光圈","\u002Fcatalog\u002Fshader-transitions\u002Fsdf-iris","06.catalog\u002F04.shader-transitions\u002F11.sdf-iris",{"title":409,"path":410,"stem":411},"漩涡涡流","\u002Fcatalog\u002Fshader-transitions\u002Fswirl-vortex","06.catalog\u002F04.shader-transitions\u002F12.swirl-vortex",{"title":413,"path":414,"stem":415},"热浪扭曲","\u002Fcatalog\u002Fshader-transitions\u002Fthermal-distortion","06.catalog\u002F04.shader-transitions\u002F13.thermal-distortion",{"title":417,"path":418,"stem":419},"快速摇摄","\u002Fcatalog\u002Fshader-transitions\u002Fwhip-pan","06.catalog\u002F04.shader-transitions\u002F14.whip-pan",{"title":421,"icon":422,"path":423,"stem":424,"children":425,"page":30},"CSS 过渡","i-lucide-repeat","\u002Fcatalog\u002Fcss-transitions","06.catalog\u002F05.css-transitions",[426,430,434,438,442,446,450,454,458,462,466,470,474],{"title":427,"path":428,"stem":429},"3D 过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-3d","06.catalog\u002F05.css-transitions\u002F01.transitions-3d",{"title":431,"path":432,"stem":433},"模糊过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-blur","06.catalog\u002F05.css-transitions\u002F02.transitions-blur",{"title":435,"path":436,"stem":437},"覆盖过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-cover","06.catalog\u002F05.css-transitions\u002F03.transitions-cover",{"title":439,"path":440,"stem":441},"破碎过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-destruction","06.catalog\u002F05.css-transitions\u002F04.transitions-destruction",{"title":443,"path":444,"stem":445},"溶解过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-dissolve","06.catalog\u002F05.css-transitions\u002F05.transitions-dissolve",{"title":447,"path":448,"stem":449},"扭曲过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-distortion","06.catalog\u002F05.css-transitions\u002F06.transitions-distortion",{"title":451,"path":452,"stem":453},"网格过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-grid","06.catalog\u002F05.css-transitions\u002F07.transitions-grid",{"title":455,"path":456,"stem":457},"光效过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-light","06.catalog\u002F05.css-transitions\u002F08.transitions-light",{"title":459,"path":460,"stem":461},"机械过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-mechanical","06.catalog\u002F05.css-transitions\u002F09.transitions-mechanical",{"title":463,"path":464,"stem":465},"其他过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-other","06.catalog\u002F05.css-transitions\u002F10.transitions-other",{"title":467,"path":468,"stem":469},"推移过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-push","06.catalog\u002F05.css-transitions\u002F11.transitions-push",{"title":471,"path":472,"stem":473},"径向过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-radial","06.catalog\u002F05.css-transitions\u002F12.transitions-radial",{"title":475,"path":476,"stem":477},"缩放过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-scale","06.catalog\u002F05.css-transitions\u002F13.transitions-scale",{"title":479,"icon":480,"path":481,"stem":482,"children":483,"page":30},"展示","i-lucide-monitor-play","\u002Fcatalog\u002Fshowcase","06.catalog\u002F06.showcase",[484,488,492,496,500,504,508],{"title":485,"path":486,"stem":487},"应用展示","\u002Fcatalog\u002Fshowcase\u002Fapp-showcase","06.catalog\u002F06.showcase\u002F01.app-showcase",{"title":489,"path":490,"stem":491},"Apple 金额计数器","\u002Fcatalog\u002Fshowcase\u002Fapple-money-count","06.catalog\u002F06.showcase\u002F02.apple-money-count",{"title":493,"path":494,"stem":495},"蓝色毛衣开场视频","\u002Fcatalog\u002Fshowcase\u002Fblue-sweater-intro-video","06.catalog\u002F06.showcase\u002F03.blue-sweater-intro-video",{"title":497,"path":498,"stem":499},"朝鲜封锁","\u002Fcatalog\u002Fshowcase\u002Fnorth-korea-locked-down","06.catalog\u002F06.showcase\u002F04.north-korea-locked-down",{"title":501,"path":502,"stem":503},"纽约巴黎航班","\u002Fcatalog\u002Fshowcase\u002Fnyc-paris-flight","06.catalog\u002F06.showcase\u002F05.nyc-paris-flight",{"title":505,"path":506,"stem":507},"3D UI 展示","\u002Fcatalog\u002Fshowcase\u002Fui-3d-reveal","06.catalog\u002F06.showcase\u002F06.ui-3d-reveal",{"title":509,"path":510,"stem":511},"VPN YouTube 广告片段","\u002Fcatalog\u002Fshowcase\u002Fvpn-youtube-spot","06.catalog\u002F06.showcase\u002F07.vpn-youtube-spot",{"title":513,"icon":514,"path":515,"stem":516,"children":517,"page":30},"数据","i-lucide-bar-chart-3","\u002Fcatalog\u002Fdata","06.catalog\u002F07.data",[518,522,526,530,534,538,542],{"title":519,"path":520,"stem":521},"数据图表","\u002Fcatalog\u002Fdata\u002Fdata-chart","06.catalog\u002F07.data\u002F01.data-chart",{"title":523,"path":524,"stem":525},"西班牙地图","\u002Fcatalog\u002Fdata\u002Fspain-map","06.catalog\u002F07.data\u002F02.spain-map",{"title":527,"path":528,"stem":529},"美国地图","\u002Fcatalog\u002Fdata\u002Fus-map","06.catalog\u002F07.data\u002F03.us-map",{"title":531,"path":532,"stem":533},"美国气泡地图","\u002Fcatalog\u002Fdata\u002Fus-map-bubble","06.catalog\u002F07.data\u002F04.us-map-bubble",{"title":535,"path":536,"stem":537},"美国流动地图","\u002Fcatalog\u002Fdata\u002Fus-map-flow","06.catalog\u002F07.data\u002F05.us-map-flow",{"title":539,"path":540,"stem":541},"美国六边形网格地图","\u002Fcatalog\u002Fdata\u002Fus-map-hex","06.catalog\u002F07.data\u002F06.us-map-hex",{"title":543,"path":544,"stem":545},"世界地图","\u002Fcatalog\u002Fdata\u002Fworld-map","06.catalog\u002F07.data\u002F07.world-map",{"title":547,"icon":548,"path":549,"stem":550,"children":551,"page":30},"效果","i-lucide-sparkles","\u002Fcatalog\u002Feffects","06.catalog\u002F08.effects",[552,556,560,564,568,572,576,580],{"title":553,"path":554,"stem":555},"差值混合","\u002Fcatalog\u002Feffects\u002Fcaption-blend-difference","06.catalog\u002F08.effects\u002F01.caption-blend-difference",{"title":557,"path":558,"stem":559},"胶片颗粒叠加","\u002Fcatalog\u002Feffects\u002Fgrain-overlay","06.catalog\u002F08.effects\u002F02.grain-overlay",{"title":561,"path":562,"stem":563},"网格像素化擦除","\u002Fcatalog\u002Feffects\u002Fgrid-pixelate-wipe","06.catalog\u002F08.effects\u002F03.grid-pixelate-wipe",{"title":565,"path":566,"stem":567},"视差缩小","\u002Fcatalog\u002Feffects\u002Fparallax-unzoom","06.catalog\u002F08.effects\u002F04.parallax-unzoom",{"title":569,"path":570,"stem":571},"视差放大","\u002Fcatalog\u002Feffects\u002Fparallax-zoom","06.catalog\u002F08.effects\u002F05.parallax-zoom",{"title":573,"path":574,"stem":575},"微光扫过","\u002Fcatalog\u002Feffects\u002Fshimmer-sweep","06.catalog\u002F08.effects\u002F06.shimmer-sweep",{"title":577,"path":578,"stem":579},"纹理遮罩文字","\u002Fcatalog\u002Feffects\u002Ftexture-mask-text","06.catalog\u002F08.effects\u002F07.texture-mask-text",{"title":581,"path":582,"stem":583},"暗角","\u002Fcatalog\u002Feffects\u002Fvignette","06.catalog\u002F08.effects\u002F08.vignette",{"title":585,"icon":586,"path":587,"stem":588,"children":589,"page":30},"区块","i-lucide-box","\u002Fcatalog\u002Fblocks","06.catalog\u002F09.blocks",[590,594],{"title":591,"path":592,"stem":593},"流程图","\u002Fcatalog\u002Fblocks\u002Fflowchart","06.catalog\u002F09.blocks\u002F01.flowchart",{"title":595,"path":596,"stem":597},"Logo 片尾","\u002Fcatalog\u002Fblocks\u002Flogo-outro","06.catalog\u002F09.blocks\u002F02.logo-outro",{"title":599,"icon":600,"path":601,"stem":602,"children":603,"page":30},"代码片段","i-lucide-code-2","\u002Fcatalog\u002Fcode-snippets","06.catalog\u002F10.code-snippets",[604,608,612,616,620,624,628,632,636,640,644,648],{"title":605,"path":606,"stem":607},"Dark 2026","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-dark-2026","06.catalog\u002F10.code-snippets\u002F01.code-snippet-dark-2026",{"title":609,"path":610,"stem":611},"Dark Modern","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-dark-modern","06.catalog\u002F10.code-snippets\u002F02.code-snippet-dark-modern",{"title":613,"path":614,"stem":615},"Dark+","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-dark-plus","06.catalog\u002F10.code-snippets\u002F03.code-snippet-dark-plus",{"title":617,"path":618,"stem":619},"High Contrast","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-high-contrast","06.catalog\u002F10.code-snippets\u002F04.code-snippet-high-contrast",{"title":621,"path":622,"stem":623},"High Contrast Light","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-high-contrast-light","06.catalog\u002F10.code-snippets\u002F05.code-snippet-high-contrast-light",{"title":625,"path":626,"stem":627},"Light 2026","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-light-2026","06.catalog\u002F10.code-snippets\u002F06.code-snippet-light-2026",{"title":629,"path":630,"stem":631},"Light Modern","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-light-modern","06.catalog\u002F10.code-snippets\u002F07.code-snippet-light-modern",{"title":633,"path":634,"stem":635},"Light+","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-light-plus","06.catalog\u002F10.code-snippets\u002F08.code-snippet-light-plus",{"title":637,"path":638,"stem":639},"Monokai","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-monokai","06.catalog\u002F10.code-snippets\u002F09.code-snippet-monokai",{"title":641,"path":642,"stem":643},"Solarized Light","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-solarized-light","06.catalog\u002F10.code-snippets\u002F10.code-snippet-solarized-light",{"title":645,"path":646,"stem":647},"Visual Studio Dark","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-visual-studio-dark","06.catalog\u002F10.code-snippets\u002F11.code-snippet-visual-studio-dark",{"title":649,"path":650,"stem":651},"Visual Studio Light","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-visual-studio-light","06.catalog\u002F10.code-snippets\u002F12.code-snippet-visual-studio-light",{"title":653,"icon":654,"path":655,"stem":656,"children":657,"page":30},"参考","i-lucide-book-marked","\u002Freference","07.reference",[658,662,666,670,674,678,682],{"title":659,"path":660,"stem":661},"HTML Schema 参考","\u002Freference\u002Fhtml-schema","07.reference\u002F01.html-schema",{"title":663,"path":664,"stem":665},"贡献指南","\u002Freference\u002Fcontributing","07.reference\u002F02.contributing",{"title":667,"path":668,"stem":669},"贡献到 Catalog","\u002Freference\u002Fcatalog","07.reference\u002F03.catalog",{"title":671,"path":672,"stem":673},"发布渠道","\u002Freference\u002Frelease-channels","07.reference\u002F04.release-channels",{"title":675,"path":676,"stem":677},"测试本地 CLI 变更","\u002Freference\u002Ftesting-local-changes","07.reference\u002F05.testing-local-changes",{"title":679,"path":680,"stem":681},"Studio 手动 DOM 编辑","\u002Freference\u002Fstudio-manual-dom-editing","07.reference\u002F06.studio-manual-dom-editing",{"title":683,"path":684,"stem":685},"采用者","\u002Freference\u002Fadopters","07.reference\u002F07.adopters",{"id":687,"title":175,"body":688,"description":4108,"extension":4109,"links":4110,"meta":4111,"navigation":1040,"path":176,"seo":4112,"stem":177,"__hash__":4113},"docs\u002F05.packages\u002F01.core.md",{"type":689,"value":690,"toc":4087},"minimark",[691,696,700,726,730,761,769,788,793,823,826,829,888,891,894,1194,1198,1201,1273,1276,1365,1369,1372,1860,1864,2065,2069,2275,2279,2444,2447,2586,2590,2597,2836,2839,2875,2879,2882,2885,3089,3205,3309,3420,3423,3426,3586,3589,3612,3616,3622,3859,3862,3992,3996,3999,4047,4050,4083],[692,693,695],"h1",{"id":694},"hyperframescore","\"@hyperframes\u002Fcore\"",[697,698,699],"p",{},"core 包提供了基础类型、HTML 解析\u002F生成、运行时和合成 Linter，所有其他 Hyperframes 包都构建于此之上。如果你正在开发工具、编写自定义集成或扩展 Hyperframes 本身，就需要使用这个包。",[701,702,707],"pre",{"className":703,"code":704,"language":705,"meta":706,"style":706},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm install @hyperframes\u002Fcore\n","bash","",[708,709,710],"code",{"__ignoreMap":706},[711,712,715,719,723],"span",{"class":713,"line":714},"line",1,[711,716,718],{"class":717},"sBMFI","npm",[711,720,722],{"class":721},"sfazB"," install",[711,724,725],{"class":721}," @hyperframes\u002Fcore\n",[727,728,729],"h2",{"id":729},"何时使用",[731,732,733,740],"blockquote",{},[697,734,735,736],{},"💡 ",[737,738,739],"strong",{},"Tip",[697,741,742,748,749,752,753,756,757,760],{},[737,743,744,745,747],{},"大多数用户不需要直接安装 ",[708,746,175],{},"。"," ",[750,751,195],"a",{"href":196},"、",[750,754,755],{"href":188},"producer"," 和 ",[750,758,759],{"href":192},"studio"," 包内部都依赖 core。只有在执行以下操作时才需要直接使用它。",[697,762,763],{},[737,764,765,766,768],{},"在以下场景使用 ",[708,767,175],{},"：",[770,771,772,776,779,782,785],"ul",{},[773,774,775],"li",{},"通过编程方式检查合成（CI 流水线、编辑器插件）",[773,777,778],{},"将 HTML 合成解析为结构化 TypeScript 对象",[773,780,781],{},"从数据生成合成 HTML（例如从 API 或 AI Agent）",[773,783,784],{},"在自定义工具中使用 Hyperframes 类型系统",[773,786,787],{},"在自定义播放器中嵌入 Hyperframes 运行时",[697,789,790],{},[737,791,792],{},"如果需要以下功能，请使用其他包：",[770,794,795,807,817],{},[773,796,797,798,800,801,804,805],{},"在浏览器中预览合成 — 使用 ",[750,799,195],{"href":196},"（",[708,802,803],{},"npx hyperframes preview","）或 ",[750,806,759],{"href":192},[773,808,809,810,800,812,804,815],{},"将合渲染为 MP4 — 使用 ",[750,811,195],{"href":196},[708,813,814],{},"npx hyperframes render",[750,816,755],{"href":188},[773,818,819,820],{},"从无头浏览器捕获帧 — 使用 ",[750,821,822],{"href":180},"engine",[727,824,825],{"id":825},"包导出",[697,827,828],{},"core 包有四个入口点：",[830,831,832,845],"table",{},[833,834,835],"thead",{},[836,837,838,842],"tr",{},[839,840,841],"th",{},"导入路径",[839,843,844],{},"描述",[846,847,848,858,868,878],"tbody",{},[836,849,850,855],{},[851,852,853],"td",{},[708,854,175],{},[851,856,857],{},"类型、解析器、生成器、适配器、运行时工具",[836,859,860,865],{},[851,861,862],{},[708,863,864],{},"@hyperframes\u002Fcore\u002Flint",[851,866,867],{},"合成 Linter",[836,869,870,875],{},[851,871,872],{},[708,873,874],{},"@hyperframes\u002Fcore\u002Fcompiler",[851,876,877],{},"时序编译器、HTML 编译器、打包器、静态守卫",[836,879,880,885],{},[851,881,882],{},[708,883,884],{},"@hyperframes\u002Fcore\u002Fruntime",[851,886,887],{},"预构建的 IIFE 运行时，用于浏览器注入",[727,889,890],{"id":890},"类型",[697,892,893],{},"core 类型系统定义了合成、时间轴元素和变量的模型：",[701,895,899],{"className":896,"code":897,"language":898,"meta":706,"style":706},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import type {\nTimelineElement,\nTimelineMediaElement,\nTimelineTextElement,\nTimelineCompositionElement,\nTimelineElementType,       \u002F\u002F \"video\" | \"image\" | \"text\" | \"audio\" | \"composition\"\nCompositionSpec,\nCompositionVariable,\nCanvasResolution,          \u002F\u002F \"landscape\" | \"portrait\" | \"landscape-4k\" | \"portrait-4k\" | \"square\" | \"square-4k\"\nOrientation,               \u002F\u002F \"16:9\" | \"9:16\"\nFrameAdapter,\nFrameAdapterContext,\n} from '@hyperframes\u002Fcore';\n\n\u002F\u002F 类型守卫\nimport {\nisTextElement,\nisMediaElement,\nisCompositionElement,\nisStringVariable,\nisNumberVariable,\nisColorVariable,\nisBooleanVariable,\nisEnumVariable,\n} from '@hyperframes\u002Fcore';\n\n\u002F\u002F 常量\nimport {\nCANVAS_DIMENSIONS,        \u002F\u002F { landscape: { width, height }, portrait: { width, height } }\nTIMELINE_COLORS,\nDEFAULT_DURATIONS,\n} from '@hyperframes\u002Fcore';\n","typescript",[708,900,901,914,924,932,940,948,961,969,977,988,999,1007,1015,1035,1042,1048,1055,1063,1071,1079,1087,1095,1103,1111,1119,1134,1139,1145,1152,1163,1171,1179],{"__ignoreMap":706},[711,902,903,907,910],{"class":713,"line":714},[711,904,906],{"class":905},"s7zQu","import",[711,908,909],{"class":905}," type",[711,911,913],{"class":912},"sMK4o"," {\n",[711,915,917,921],{"class":713,"line":916},2,[711,918,920],{"class":919},"sTEyZ","TimelineElement",[711,922,923],{"class":912},",\n",[711,925,927,930],{"class":713,"line":926},3,[711,928,929],{"class":919},"TimelineMediaElement",[711,931,923],{"class":912},[711,933,935,938],{"class":713,"line":934},4,[711,936,937],{"class":919},"TimelineTextElement",[711,939,923],{"class":912},[711,941,943,946],{"class":713,"line":942},5,[711,944,945],{"class":919},"TimelineCompositionElement",[711,947,923],{"class":912},[711,949,951,954,957],{"class":713,"line":950},6,[711,952,953],{"class":919},"TimelineElementType",[711,955,956],{"class":912},",",[711,958,960],{"class":959},"sHwdD","       \u002F\u002F \"video\" | \"image\" | \"text\" | \"audio\" | \"composition\"\n",[711,962,964,967],{"class":713,"line":963},7,[711,965,966],{"class":919},"CompositionSpec",[711,968,923],{"class":912},[711,970,972,975],{"class":713,"line":971},8,[711,973,974],{"class":919},"CompositionVariable",[711,976,923],{"class":912},[711,978,980,983,985],{"class":713,"line":979},9,[711,981,982],{"class":919},"CanvasResolution",[711,984,956],{"class":912},[711,986,987],{"class":959},"          \u002F\u002F \"landscape\" | \"portrait\" | \"landscape-4k\" | \"portrait-4k\" | \"square\" | \"square-4k\"\n",[711,989,991,994,996],{"class":713,"line":990},10,[711,992,993],{"class":919},"Orientation",[711,995,956],{"class":912},[711,997,998],{"class":959},"               \u002F\u002F \"16:9\" | \"9:16\"\n",[711,1000,1002,1005],{"class":713,"line":1001},11,[711,1003,1004],{"class":919},"FrameAdapter",[711,1006,923],{"class":912},[711,1008,1010,1013],{"class":713,"line":1009},12,[711,1011,1012],{"class":919},"FrameAdapterContext",[711,1014,923],{"class":912},[711,1016,1018,1021,1024,1027,1029,1032],{"class":713,"line":1017},13,[711,1019,1020],{"class":912},"}",[711,1022,1023],{"class":905}," from",[711,1025,1026],{"class":912}," '",[711,1028,175],{"class":721},[711,1030,1031],{"class":912},"'",[711,1033,1034],{"class":912},";\n",[711,1036,1038],{"class":713,"line":1037},14,[711,1039,1041],{"emptyLinePlaceholder":1040},true,"\n",[711,1043,1045],{"class":713,"line":1044},15,[711,1046,1047],{"class":959},"\u002F\u002F 类型守卫\n",[711,1049,1051,1053],{"class":713,"line":1050},16,[711,1052,906],{"class":905},[711,1054,913],{"class":912},[711,1056,1058,1061],{"class":713,"line":1057},17,[711,1059,1060],{"class":919},"isTextElement",[711,1062,923],{"class":912},[711,1064,1066,1069],{"class":713,"line":1065},18,[711,1067,1068],{"class":919},"isMediaElement",[711,1070,923],{"class":912},[711,1072,1074,1077],{"class":713,"line":1073},19,[711,1075,1076],{"class":919},"isCompositionElement",[711,1078,923],{"class":912},[711,1080,1082,1085],{"class":713,"line":1081},20,[711,1083,1084],{"class":919},"isStringVariable",[711,1086,923],{"class":912},[711,1088,1090,1093],{"class":713,"line":1089},21,[711,1091,1092],{"class":919},"isNumberVariable",[711,1094,923],{"class":912},[711,1096,1098,1101],{"class":713,"line":1097},22,[711,1099,1100],{"class":919},"isColorVariable",[711,1102,923],{"class":912},[711,1104,1106,1109],{"class":713,"line":1105},23,[711,1107,1108],{"class":919},"isBooleanVariable",[711,1110,923],{"class":912},[711,1112,1114,1117],{"class":713,"line":1113},24,[711,1115,1116],{"class":919},"isEnumVariable",[711,1118,923],{"class":912},[711,1120,1122,1124,1126,1128,1130,1132],{"class":713,"line":1121},25,[711,1123,1020],{"class":912},[711,1125,1023],{"class":905},[711,1127,1026],{"class":912},[711,1129,175],{"class":721},[711,1131,1031],{"class":912},[711,1133,1034],{"class":912},[711,1135,1137],{"class":713,"line":1136},26,[711,1138,1041],{"emptyLinePlaceholder":1040},[711,1140,1142],{"class":713,"line":1141},27,[711,1143,1144],{"class":959},"\u002F\u002F 常量\n",[711,1146,1148,1150],{"class":713,"line":1147},28,[711,1149,906],{"class":905},[711,1151,913],{"class":912},[711,1153,1155,1158,1160],{"class":713,"line":1154},29,[711,1156,1157],{"class":919},"CANVAS_DIMENSIONS",[711,1159,956],{"class":912},[711,1161,1162],{"class":959},"        \u002F\u002F { landscape: { width, height }, portrait: { width, height } }\n",[711,1164,1166,1169],{"class":713,"line":1165},30,[711,1167,1168],{"class":919},"TIMELINE_COLORS",[711,1170,923],{"class":912},[711,1172,1174,1177],{"class":713,"line":1173},31,[711,1175,1176],{"class":919},"DEFAULT_DURATIONS",[711,1178,923],{"class":912},[711,1180,1182,1184,1186,1188,1190,1192],{"class":713,"line":1181},32,[711,1183,1020],{"class":912},[711,1185,1023],{"class":905},[711,1187,1026],{"class":912},[711,1189,175],{"class":721},[711,1191,1031],{"class":912},[711,1193,1034],{"class":912},[1195,1196,1197],"h3",{"id":1197},"变量类型",[697,1199,1200],{},"合成可以暴露类型化的变量，用于动态内容：",[701,1202,1204],{"className":896,"code":1203,"language":898,"meta":706,"style":706},"import type {\nCompositionVariableType,   \u002F\u002F \"string\" | \"number\" | \"color\" | \"boolean\" | \"enum\"\nStringVariable,\nNumberVariable,\nColorVariable,\nBooleanVariable,\nEnumVariable,\n} from '@hyperframes\u002Fcore';\n",[708,1205,1206,1214,1224,1231,1238,1245,1252,1259],{"__ignoreMap":706},[711,1207,1208,1210,1212],{"class":713,"line":714},[711,1209,906],{"class":905},[711,1211,909],{"class":905},[711,1213,913],{"class":912},[711,1215,1216,1219,1221],{"class":713,"line":916},[711,1217,1218],{"class":919},"CompositionVariableType",[711,1220,956],{"class":912},[711,1222,1223],{"class":959},"   \u002F\u002F \"string\" | \"number\" | \"color\" | \"boolean\" | \"enum\"\n",[711,1225,1226,1229],{"class":713,"line":926},[711,1227,1228],{"class":919},"StringVariable",[711,1230,923],{"class":912},[711,1232,1233,1236],{"class":713,"line":934},[711,1234,1235],{"class":919},"NumberVariable",[711,1237,923],{"class":912},[711,1239,1240,1243],{"class":713,"line":942},[711,1241,1242],{"class":919},"ColorVariable",[711,1244,923],{"class":912},[711,1246,1247,1250],{"class":713,"line":950},[711,1248,1249],{"class":919},"BooleanVariable",[711,1251,923],{"class":912},[711,1253,1254,1257],{"class":713,"line":963},[711,1255,1256],{"class":919},"EnumVariable",[711,1258,923],{"class":912},[711,1260,1261,1263,1265,1267,1269,1271],{"class":713,"line":971},[711,1262,1020],{"class":912},[711,1264,1023],{"class":905},[711,1266,1026],{"class":912},[711,1268,175],{"class":721},[711,1270,1031],{"class":912},[711,1272,1034],{"class":912},[1195,1274,1275],{"id":1275},"关键帧类型",[701,1277,1279],{"className":896,"code":1278,"language":898,"meta":706,"style":706},"import type {\nKeyframe,\nKeyframeProperties,\nElementKeyframes,\nStageZoom,\nStageZoomKeyframe,\n} from '@hyperframes\u002Fcore';\n\nimport { getDefaultStageZoom } from '@hyperframes\u002Fcore';\n",[708,1280,1281,1289,1296,1303,1310,1317,1324,1338,1342],{"__ignoreMap":706},[711,1282,1283,1285,1287],{"class":713,"line":714},[711,1284,906],{"class":905},[711,1286,909],{"class":905},[711,1288,913],{"class":912},[711,1290,1291,1294],{"class":713,"line":916},[711,1292,1293],{"class":919},"Keyframe",[711,1295,923],{"class":912},[711,1297,1298,1301],{"class":713,"line":926},[711,1299,1300],{"class":919},"KeyframeProperties",[711,1302,923],{"class":912},[711,1304,1305,1308],{"class":713,"line":934},[711,1306,1307],{"class":919},"ElementKeyframes",[711,1309,923],{"class":912},[711,1311,1312,1315],{"class":713,"line":942},[711,1313,1314],{"class":919},"StageZoom",[711,1316,923],{"class":912},[711,1318,1319,1322],{"class":713,"line":950},[711,1320,1321],{"class":919},"StageZoomKeyframe",[711,1323,923],{"class":912},[711,1325,1326,1328,1330,1332,1334,1336],{"class":713,"line":963},[711,1327,1020],{"class":912},[711,1329,1023],{"class":905},[711,1331,1026],{"class":912},[711,1333,175],{"class":721},[711,1335,1031],{"class":912},[711,1337,1034],{"class":912},[711,1339,1340],{"class":713,"line":971},[711,1341,1041],{"emptyLinePlaceholder":1040},[711,1343,1344,1346,1349,1352,1355,1357,1359,1361,1363],{"class":713,"line":979},[711,1345,906],{"class":905},[711,1347,1348],{"class":912}," {",[711,1350,1351],{"class":919}," getDefaultStageZoom",[711,1353,1354],{"class":912}," }",[711,1356,1023],{"class":905},[711,1358,1026],{"class":912},[711,1360,175],{"class":721},[711,1362,1031],{"class":912},[711,1364,1034],{"class":912},[727,1366,1368],{"id":1367},"html-解析与生成","HTML 解析与生成",[697,1370,1371],{},"在 HTML 和结构化数据之间进行双向转换：",[701,1373,1375],{"className":896,"code":1374,"language":898,"meta":706,"style":706},"import { parseHtml, generateHyperframesHtml } from '@hyperframes\u002Fcore';\nimport type { ParsedHtml, CompositionMetadata } from '@hyperframes\u002Fcore';\n\n\u002F\u002F 将 HTML 解析为结构化数据\nconst parsed: ParsedHtml = parseHtml(htmlString);\n\u002F\u002F parsed.elements, parsed.gsapScript, parsed.styles, parsed.resolution, parsed.keyframes\n\n\u002F\u002F 提取合成元数据\nimport { extractCompositionMetadata } from '@hyperframes\u002Fcore';\nconst meta: CompositionMetadata = extractCompositionMetadata(htmlString);\n\u002F\u002F meta.id, meta.duration, meta.width, meta.height, meta.variables\n\u002F\u002F\n\u002F\u002F 变量元数据声明在文档根元素上，例如：\n\u002F\u002F \u003Chtml\n\u002F\u002F   data-composition-id=\"card\"\n\u002F\u002F   data-composition-duration=\"3\"\n\u002F\u002F   data-composition-variables='[{\"id\":\"title\",\"label\":\"Title\",\"type\":\"string\",\"default\":\"Hello\"}]'\n\u002F\u002F >\n\n\u002F\u002F 在合成内部读取解析后的变量（声明的默认值 +\n\u002F\u002F CLI 覆盖 + 每个实例的宿主 data-variable-values）：\nimport { getVariables } from '@hyperframes\u002Fcore';\nconst { title } = getVariables\u003C{ title: string }>();\n\n\u002F\u002F 验证 CLI \u002F 宿主覆盖是否符合声明的 schema：\nimport { validateVariables, formatVariableValidationIssue } from '@hyperframes\u002Fcore';\nconst issues = validateVariables({ title: 'Hello', count: 'three' }, meta.variables);\nfor (const issue of issues) {\nconsole.warn(formatVariableValidationIssue(issue));\n}\n\n\u002F\u002F 从结构化数据生成 HTML\nconst html = generateHyperframesHtml(elements, {\nanimations,\nstyles,\nresolution: 'landscape',\ncompositionId: 'my-video',\n});\n",[708,1376,1377,1403,1431,1435,1440,1465,1470,1474,1479,1500,1519,1524,1529,1534,1539,1544,1549,1554,1559,1563,1568,1573,1594,1629,1633,1638,1664,1720,1742,1767,1772,1776,1781,1800,1808,1816,1833,1850],{"__ignoreMap":706},[711,1378,1379,1381,1383,1386,1388,1391,1393,1395,1397,1399,1401],{"class":713,"line":714},[711,1380,906],{"class":905},[711,1382,1348],{"class":912},[711,1384,1385],{"class":919}," parseHtml",[711,1387,956],{"class":912},[711,1389,1390],{"class":919}," generateHyperframesHtml",[711,1392,1354],{"class":912},[711,1394,1023],{"class":905},[711,1396,1026],{"class":912},[711,1398,175],{"class":721},[711,1400,1031],{"class":912},[711,1402,1034],{"class":912},[711,1404,1405,1407,1409,1411,1414,1416,1419,1421,1423,1425,1427,1429],{"class":713,"line":916},[711,1406,906],{"class":905},[711,1408,909],{"class":905},[711,1410,1348],{"class":912},[711,1412,1413],{"class":919}," ParsedHtml",[711,1415,956],{"class":912},[711,1417,1418],{"class":919}," CompositionMetadata",[711,1420,1354],{"class":912},[711,1422,1023],{"class":905},[711,1424,1026],{"class":912},[711,1426,175],{"class":721},[711,1428,1031],{"class":912},[711,1430,1034],{"class":912},[711,1432,1433],{"class":713,"line":926},[711,1434,1041],{"emptyLinePlaceholder":1040},[711,1436,1437],{"class":713,"line":934},[711,1438,1439],{"class":959},"\u002F\u002F 将 HTML 解析为结构化数据\n",[711,1441,1442,1446,1449,1452,1454,1457,1460,1463],{"class":713,"line":942},[711,1443,1445],{"class":1444},"spNyl","const",[711,1447,1448],{"class":919}," parsed",[711,1450,1451],{"class":912},":",[711,1453,1413],{"class":717},[711,1455,1456],{"class":912}," =",[711,1458,1385],{"class":1459},"s2Zo4",[711,1461,1462],{"class":919},"(htmlString)",[711,1464,1034],{"class":912},[711,1466,1467],{"class":713,"line":950},[711,1468,1469],{"class":959},"\u002F\u002F parsed.elements, parsed.gsapScript, parsed.styles, parsed.resolution, parsed.keyframes\n",[711,1471,1472],{"class":713,"line":963},[711,1473,1041],{"emptyLinePlaceholder":1040},[711,1475,1476],{"class":713,"line":971},[711,1477,1478],{"class":959},"\u002F\u002F 提取合成元数据\n",[711,1480,1481,1483,1485,1488,1490,1492,1494,1496,1498],{"class":713,"line":979},[711,1482,906],{"class":905},[711,1484,1348],{"class":912},[711,1486,1487],{"class":919}," extractCompositionMetadata",[711,1489,1354],{"class":912},[711,1491,1023],{"class":905},[711,1493,1026],{"class":912},[711,1495,175],{"class":721},[711,1497,1031],{"class":912},[711,1499,1034],{"class":912},[711,1501,1502,1504,1507,1509,1511,1513,1515,1517],{"class":713,"line":990},[711,1503,1445],{"class":1444},[711,1505,1506],{"class":919}," meta",[711,1508,1451],{"class":912},[711,1510,1418],{"class":717},[711,1512,1456],{"class":912},[711,1514,1487],{"class":1459},[711,1516,1462],{"class":919},[711,1518,1034],{"class":912},[711,1520,1521],{"class":713,"line":1001},[711,1522,1523],{"class":959},"\u002F\u002F meta.id, meta.duration, meta.width, meta.height, meta.variables\n",[711,1525,1526],{"class":713,"line":1009},[711,1527,1528],{"class":959},"\u002F\u002F\n",[711,1530,1531],{"class":713,"line":1017},[711,1532,1533],{"class":959},"\u002F\u002F 变量元数据声明在文档根元素上，例如：\n",[711,1535,1536],{"class":713,"line":1037},[711,1537,1538],{"class":959},"\u002F\u002F \u003Chtml\n",[711,1540,1541],{"class":713,"line":1044},[711,1542,1543],{"class":959},"\u002F\u002F   data-composition-id=\"card\"\n",[711,1545,1546],{"class":713,"line":1050},[711,1547,1548],{"class":959},"\u002F\u002F   data-composition-duration=\"3\"\n",[711,1550,1551],{"class":713,"line":1057},[711,1552,1553],{"class":959},"\u002F\u002F   data-composition-variables='[{\"id\":\"title\",\"label\":\"Title\",\"type\":\"string\",\"default\":\"Hello\"}]'\n",[711,1555,1556],{"class":713,"line":1065},[711,1557,1558],{"class":959},"\u002F\u002F >\n",[711,1560,1561],{"class":713,"line":1073},[711,1562,1041],{"emptyLinePlaceholder":1040},[711,1564,1565],{"class":713,"line":1081},[711,1566,1567],{"class":959},"\u002F\u002F 在合成内部读取解析后的变量（声明的默认值 +\n",[711,1569,1570],{"class":713,"line":1089},[711,1571,1572],{"class":959},"\u002F\u002F CLI 覆盖 + 每个实例的宿主 data-variable-values）：\n",[711,1574,1575,1577,1579,1582,1584,1586,1588,1590,1592],{"class":713,"line":1097},[711,1576,906],{"class":905},[711,1578,1348],{"class":912},[711,1580,1581],{"class":919}," getVariables",[711,1583,1354],{"class":912},[711,1585,1023],{"class":905},[711,1587,1026],{"class":912},[711,1589,175],{"class":721},[711,1591,1031],{"class":912},[711,1593,1034],{"class":912},[711,1595,1596,1598,1600,1603,1605,1607,1609,1612,1616,1618,1621,1624,1627],{"class":713,"line":1105},[711,1597,1445],{"class":1444},[711,1599,1348],{"class":912},[711,1601,1602],{"class":919}," title ",[711,1604,1020],{"class":912},[711,1606,1456],{"class":912},[711,1608,1581],{"class":1459},[711,1610,1611],{"class":912},"\u003C{",[711,1613,1615],{"class":1614},"swJcz"," title",[711,1617,1451],{"class":912},[711,1619,1620],{"class":717}," string",[711,1622,1623],{"class":912}," }>",[711,1625,1626],{"class":919},"()",[711,1628,1034],{"class":912},[711,1630,1631],{"class":713,"line":1113},[711,1632,1041],{"emptyLinePlaceholder":1040},[711,1634,1635],{"class":713,"line":1121},[711,1636,1637],{"class":959},"\u002F\u002F 验证 CLI \u002F 宿主覆盖是否符合声明的 schema：\n",[711,1639,1640,1642,1644,1647,1649,1652,1654,1656,1658,1660,1662],{"class":713,"line":1136},[711,1641,906],{"class":905},[711,1643,1348],{"class":912},[711,1645,1646],{"class":919}," validateVariables",[711,1648,956],{"class":912},[711,1650,1651],{"class":919}," formatVariableValidationIssue",[711,1653,1354],{"class":912},[711,1655,1023],{"class":905},[711,1657,1026],{"class":912},[711,1659,175],{"class":721},[711,1661,1031],{"class":912},[711,1663,1034],{"class":912},[711,1665,1666,1668,1671,1674,1676,1679,1682,1684,1686,1688,1691,1693,1695,1698,1700,1702,1705,1707,1710,1712,1715,1718],{"class":713,"line":1141},[711,1667,1445],{"class":1444},[711,1669,1670],{"class":919}," issues ",[711,1672,1673],{"class":912},"=",[711,1675,1646],{"class":1459},[711,1677,1678],{"class":919},"(",[711,1680,1681],{"class":912},"{",[711,1683,1615],{"class":1614},[711,1685,1451],{"class":912},[711,1687,1026],{"class":912},[711,1689,1690],{"class":721},"Hello",[711,1692,1031],{"class":912},[711,1694,956],{"class":912},[711,1696,1697],{"class":1614}," count",[711,1699,1451],{"class":912},[711,1701,1026],{"class":912},[711,1703,1704],{"class":721},"three",[711,1706,1031],{"class":912},[711,1708,1709],{"class":912}," },",[711,1711,1506],{"class":919},[711,1713,1714],{"class":912},".",[711,1716,1717],{"class":919},"variables)",[711,1719,1034],{"class":912},[711,1721,1722,1725,1728,1730,1733,1736,1739],{"class":713,"line":1147},[711,1723,1724],{"class":905},"for",[711,1726,1727],{"class":919}," (",[711,1729,1445],{"class":1444},[711,1731,1732],{"class":919}," issue ",[711,1734,1735],{"class":912},"of",[711,1737,1738],{"class":919}," issues) ",[711,1740,1741],{"class":912},"{\n",[711,1743,1744,1747,1749,1752,1754,1757,1759,1762,1765],{"class":713,"line":1154},[711,1745,1746],{"class":919},"console",[711,1748,1714],{"class":912},[711,1750,1751],{"class":1459},"warn",[711,1753,1678],{"class":1614},[711,1755,1756],{"class":1459},"formatVariableValidationIssue",[711,1758,1678],{"class":1614},[711,1760,1761],{"class":919},"issue",[711,1763,1764],{"class":1614},"))",[711,1766,1034],{"class":912},[711,1768,1769],{"class":713,"line":1165},[711,1770,1771],{"class":912},"}\n",[711,1773,1774],{"class":713,"line":1173},[711,1775,1041],{"emptyLinePlaceholder":1040},[711,1777,1778],{"class":713,"line":1181},[711,1779,1780],{"class":959},"\u002F\u002F 从结构化数据生成 HTML\n",[711,1782,1784,1786,1789,1791,1793,1796,1798],{"class":713,"line":1783},33,[711,1785,1445],{"class":1444},[711,1787,1788],{"class":919}," html ",[711,1790,1673],{"class":912},[711,1792,1390],{"class":1459},[711,1794,1795],{"class":919},"(elements",[711,1797,956],{"class":912},[711,1799,913],{"class":912},[711,1801,1803,1806],{"class":713,"line":1802},34,[711,1804,1805],{"class":919},"animations",[711,1807,923],{"class":912},[711,1809,1811,1814],{"class":713,"line":1810},35,[711,1812,1813],{"class":919},"styles",[711,1815,923],{"class":912},[711,1817,1819,1822,1824,1826,1829,1831],{"class":713,"line":1818},36,[711,1820,1821],{"class":1614},"resolution",[711,1823,1451],{"class":912},[711,1825,1026],{"class":912},[711,1827,1828],{"class":721},"landscape",[711,1830,1031],{"class":912},[711,1832,923],{"class":912},[711,1834,1836,1839,1841,1843,1846,1848],{"class":713,"line":1835},37,[711,1837,1838],{"class":1614},"compositionId",[711,1840,1451],{"class":912},[711,1842,1026],{"class":912},[711,1844,1845],{"class":721},"my-video",[711,1847,1031],{"class":912},[711,1849,923],{"class":912},[711,1851,1853,1855,1858],{"class":713,"line":1852},38,[711,1854,1020],{"class":912},[711,1856,1857],{"class":919},")",[711,1859,1034],{"class":912},[1195,1861,1863],{"id":1862},"修改-html","修改 HTML",[701,1865,1867],{"className":896,"code":1866,"language":898,"meta":706,"style":706},"import {\nupdateElementInHtml,\naddElementToHtml,\nremoveElementFromHtml,\nvalidateCompositionHtml,\n} from '@hyperframes\u002Fcore';\n\n\u002F\u002F 更新元素属性\nconst updatedHtml = updateElementInHtml(html, 'el-1', { start: 5 });\n\n\u002F\u002F 添加新元素\nconst newHtml = addElementToHtml(html, newElement);\n\n\u002F\u002F 移除元素\nconst cleanHtml = removeElementFromHtml(html, 'el-1');\n\n\u002F\u002F 验证 HTML 结构\nconst result = validateCompositionHtml(html);\n\u002F\u002F result.valid, result.errors\n",[708,1868,1869,1875,1882,1889,1896,1903,1917,1921,1926,1969,1973,1978,1999,2003,2008,2034,2038,2043,2060],{"__ignoreMap":706},[711,1870,1871,1873],{"class":713,"line":714},[711,1872,906],{"class":905},[711,1874,913],{"class":912},[711,1876,1877,1880],{"class":713,"line":916},[711,1878,1879],{"class":919},"updateElementInHtml",[711,1881,923],{"class":912},[711,1883,1884,1887],{"class":713,"line":926},[711,1885,1886],{"class":919},"addElementToHtml",[711,1888,923],{"class":912},[711,1890,1891,1894],{"class":713,"line":934},[711,1892,1893],{"class":919},"removeElementFromHtml",[711,1895,923],{"class":912},[711,1897,1898,1901],{"class":713,"line":942},[711,1899,1900],{"class":919},"validateCompositionHtml",[711,1902,923],{"class":912},[711,1904,1905,1907,1909,1911,1913,1915],{"class":713,"line":950},[711,1906,1020],{"class":912},[711,1908,1023],{"class":905},[711,1910,1026],{"class":912},[711,1912,175],{"class":721},[711,1914,1031],{"class":912},[711,1916,1034],{"class":912},[711,1918,1919],{"class":713,"line":963},[711,1920,1041],{"emptyLinePlaceholder":1040},[711,1922,1923],{"class":713,"line":971},[711,1924,1925],{"class":959},"\u002F\u002F 更新元素属性\n",[711,1927,1928,1930,1933,1935,1938,1941,1943,1945,1948,1950,1952,1954,1957,1959,1963,1965,1967],{"class":713,"line":979},[711,1929,1445],{"class":1444},[711,1931,1932],{"class":919}," updatedHtml ",[711,1934,1673],{"class":912},[711,1936,1937],{"class":1459}," updateElementInHtml",[711,1939,1940],{"class":919},"(html",[711,1942,956],{"class":912},[711,1944,1026],{"class":912},[711,1946,1947],{"class":721},"el-1",[711,1949,1031],{"class":912},[711,1951,956],{"class":912},[711,1953,1348],{"class":912},[711,1955,1956],{"class":1614}," start",[711,1958,1451],{"class":912},[711,1960,1962],{"class":1961},"sbssI"," 5",[711,1964,1354],{"class":912},[711,1966,1857],{"class":919},[711,1968,1034],{"class":912},[711,1970,1971],{"class":713,"line":990},[711,1972,1041],{"emptyLinePlaceholder":1040},[711,1974,1975],{"class":713,"line":1001},[711,1976,1977],{"class":959},"\u002F\u002F 添加新元素\n",[711,1979,1980,1982,1985,1987,1990,1992,1994,1997],{"class":713,"line":1009},[711,1981,1445],{"class":1444},[711,1983,1984],{"class":919}," newHtml ",[711,1986,1673],{"class":912},[711,1988,1989],{"class":1459}," addElementToHtml",[711,1991,1940],{"class":919},[711,1993,956],{"class":912},[711,1995,1996],{"class":919}," newElement)",[711,1998,1034],{"class":912},[711,2000,2001],{"class":713,"line":1017},[711,2002,1041],{"emptyLinePlaceholder":1040},[711,2004,2005],{"class":713,"line":1037},[711,2006,2007],{"class":959},"\u002F\u002F 移除元素\n",[711,2009,2010,2012,2015,2017,2020,2022,2024,2026,2028,2030,2032],{"class":713,"line":1044},[711,2011,1445],{"class":1444},[711,2013,2014],{"class":919}," cleanHtml ",[711,2016,1673],{"class":912},[711,2018,2019],{"class":1459}," removeElementFromHtml",[711,2021,1940],{"class":919},[711,2023,956],{"class":912},[711,2025,1026],{"class":912},[711,2027,1947],{"class":721},[711,2029,1031],{"class":912},[711,2031,1857],{"class":919},[711,2033,1034],{"class":912},[711,2035,2036],{"class":713,"line":1050},[711,2037,1041],{"emptyLinePlaceholder":1040},[711,2039,2040],{"class":713,"line":1057},[711,2041,2042],{"class":959},"\u002F\u002F 验证 HTML 结构\n",[711,2044,2045,2047,2050,2052,2055,2058],{"class":713,"line":1065},[711,2046,1445],{"class":1444},[711,2048,2049],{"class":919}," result ",[711,2051,1673],{"class":912},[711,2053,2054],{"class":1459}," validateCompositionHtml",[711,2056,2057],{"class":919},"(html)",[711,2059,1034],{"class":912},[711,2061,2062],{"class":713,"line":1073},[711,2063,2064],{"class":959},"\u002F\u002F result.valid, result.errors\n",[1195,2066,2068],{"id":2067},"gsap-脚本解析","GSAP 脚本解析",[701,2070,2072],{"className":896,"code":2071,"language":898,"meta":706,"style":706},"import {\nparseGsapScript,\nserializeGsapAnimations,\nupdateAnimationInScript,\naddAnimationToScript,\nremoveAnimationFromScript,\ngetAnimationsForElement,\nvalidateCompositionGsap,\nkeyframesToGsapAnimations,\ngsapAnimationsToKeyframes,\nSUPPORTED_PROPS,            \u002F\u002F 可动画属性\nSUPPORTED_EASES,            \u002F\u002F 可用的缓动函数\n} from '@hyperframes\u002Fcore';\nimport type { GsapAnimation, GsapMethod, ParsedGsap } from '@hyperframes\u002Fcore';\n\n\u002F\u002F 将 GSAP 脚本解析为结构化动画\nconst parsed: ParsedGsap = parseGsapScript(scriptContent);\n\u002F\u002F parsed.animations, parsed.timelineVar, parsed.preamble, parsed.postamble\n\n\u002F\u002F 序列化回脚本\nconst script = serializeGsapAnimations(parsed.animations);\n",[708,2073,2074,2080,2087,2094,2101,2108,2115,2122,2129,2136,2143,2153,2163,2177,2210,2214,2219,2239,2244,2248,2253],{"__ignoreMap":706},[711,2075,2076,2078],{"class":713,"line":714},[711,2077,906],{"class":905},[711,2079,913],{"class":912},[711,2081,2082,2085],{"class":713,"line":916},[711,2083,2084],{"class":919},"parseGsapScript",[711,2086,923],{"class":912},[711,2088,2089,2092],{"class":713,"line":926},[711,2090,2091],{"class":919},"serializeGsapAnimations",[711,2093,923],{"class":912},[711,2095,2096,2099],{"class":713,"line":934},[711,2097,2098],{"class":919},"updateAnimationInScript",[711,2100,923],{"class":912},[711,2102,2103,2106],{"class":713,"line":942},[711,2104,2105],{"class":919},"addAnimationToScript",[711,2107,923],{"class":912},[711,2109,2110,2113],{"class":713,"line":950},[711,2111,2112],{"class":919},"removeAnimationFromScript",[711,2114,923],{"class":912},[711,2116,2117,2120],{"class":713,"line":963},[711,2118,2119],{"class":919},"getAnimationsForElement",[711,2121,923],{"class":912},[711,2123,2124,2127],{"class":713,"line":971},[711,2125,2126],{"class":919},"validateCompositionGsap",[711,2128,923],{"class":912},[711,2130,2131,2134],{"class":713,"line":979},[711,2132,2133],{"class":919},"keyframesToGsapAnimations",[711,2135,923],{"class":912},[711,2137,2138,2141],{"class":713,"line":990},[711,2139,2140],{"class":919},"gsapAnimationsToKeyframes",[711,2142,923],{"class":912},[711,2144,2145,2148,2150],{"class":713,"line":1001},[711,2146,2147],{"class":919},"SUPPORTED_PROPS",[711,2149,956],{"class":912},[711,2151,2152],{"class":959},"            \u002F\u002F 可动画属性\n",[711,2154,2155,2158,2160],{"class":713,"line":1009},[711,2156,2157],{"class":919},"SUPPORTED_EASES",[711,2159,956],{"class":912},[711,2161,2162],{"class":959},"            \u002F\u002F 可用的缓动函数\n",[711,2164,2165,2167,2169,2171,2173,2175],{"class":713,"line":1017},[711,2166,1020],{"class":912},[711,2168,1023],{"class":905},[711,2170,1026],{"class":912},[711,2172,175],{"class":721},[711,2174,1031],{"class":912},[711,2176,1034],{"class":912},[711,2178,2179,2181,2183,2185,2188,2190,2193,2195,2198,2200,2202,2204,2206,2208],{"class":713,"line":1037},[711,2180,906],{"class":905},[711,2182,909],{"class":905},[711,2184,1348],{"class":912},[711,2186,2187],{"class":919}," GsapAnimation",[711,2189,956],{"class":912},[711,2191,2192],{"class":919}," GsapMethod",[711,2194,956],{"class":912},[711,2196,2197],{"class":919}," ParsedGsap",[711,2199,1354],{"class":912},[711,2201,1023],{"class":905},[711,2203,1026],{"class":912},[711,2205,175],{"class":721},[711,2207,1031],{"class":912},[711,2209,1034],{"class":912},[711,2211,2212],{"class":713,"line":1044},[711,2213,1041],{"emptyLinePlaceholder":1040},[711,2215,2216],{"class":713,"line":1050},[711,2217,2218],{"class":959},"\u002F\u002F 将 GSAP 脚本解析为结构化动画\n",[711,2220,2221,2223,2225,2227,2229,2231,2234,2237],{"class":713,"line":1057},[711,2222,1445],{"class":1444},[711,2224,1448],{"class":919},[711,2226,1451],{"class":912},[711,2228,2197],{"class":717},[711,2230,1456],{"class":912},[711,2232,2233],{"class":1459}," parseGsapScript",[711,2235,2236],{"class":919},"(scriptContent)",[711,2238,1034],{"class":912},[711,2240,2241],{"class":713,"line":1065},[711,2242,2243],{"class":959},"\u002F\u002F parsed.animations, parsed.timelineVar, parsed.preamble, parsed.postamble\n",[711,2245,2246],{"class":713,"line":1073},[711,2247,1041],{"emptyLinePlaceholder":1040},[711,2249,2250],{"class":713,"line":1081},[711,2251,2252],{"class":959},"\u002F\u002F 序列化回脚本\n",[711,2254,2255,2257,2260,2262,2265,2268,2270,2273],{"class":713,"line":1089},[711,2256,1445],{"class":1444},[711,2258,2259],{"class":919}," script ",[711,2261,1673],{"class":912},[711,2263,2264],{"class":1459}," serializeGsapAnimations",[711,2266,2267],{"class":919},"(parsed",[711,2269,1714],{"class":912},[711,2271,2272],{"class":919},"animations)",[711,2274,1034],{"class":912},[1195,2276,2278],{"id":2277},"html-生成","HTML 生成",[701,2280,2282],{"className":896,"code":2281,"language":898,"meta":706,"style":706},"import {\ngenerateHyperframesHtml,\ngenerateGsapTimelineScript,\ngenerateHyperframesStyles,\n} from '@hyperframes\u002Fcore';\n\n\u002F\u002F 生成完整的 HTML 合成\nconst html = generateHyperframesHtml(elements, options);\n\n\u002F\u002F 仅生成 GSAP 脚本\nconst script = generateGsapTimelineScript(animations, options);\n\n\u002F\u002F 生成 CSS 样式\nconst { coreCss, customCss, googleFontsLink } = generateHyperframesStyles(\nelements, 'landscape', customStyles\n);\n",[708,2283,2284,2290,2297,2304,2311,2325,2329,2334,2353,2357,2362,2382,2386,2391,2420,2438],{"__ignoreMap":706},[711,2285,2286,2288],{"class":713,"line":714},[711,2287,906],{"class":905},[711,2289,913],{"class":912},[711,2291,2292,2295],{"class":713,"line":916},[711,2293,2294],{"class":919},"generateHyperframesHtml",[711,2296,923],{"class":912},[711,2298,2299,2302],{"class":713,"line":926},[711,2300,2301],{"class":919},"generateGsapTimelineScript",[711,2303,923],{"class":912},[711,2305,2306,2309],{"class":713,"line":934},[711,2307,2308],{"class":919},"generateHyperframesStyles",[711,2310,923],{"class":912},[711,2312,2313,2315,2317,2319,2321,2323],{"class":713,"line":942},[711,2314,1020],{"class":912},[711,2316,1023],{"class":905},[711,2318,1026],{"class":912},[711,2320,175],{"class":721},[711,2322,1031],{"class":912},[711,2324,1034],{"class":912},[711,2326,2327],{"class":713,"line":950},[711,2328,1041],{"emptyLinePlaceholder":1040},[711,2330,2331],{"class":713,"line":963},[711,2332,2333],{"class":959},"\u002F\u002F 生成完整的 HTML 合成\n",[711,2335,2336,2338,2340,2342,2344,2346,2348,2351],{"class":713,"line":971},[711,2337,1445],{"class":1444},[711,2339,1788],{"class":919},[711,2341,1673],{"class":912},[711,2343,1390],{"class":1459},[711,2345,1795],{"class":919},[711,2347,956],{"class":912},[711,2349,2350],{"class":919}," options)",[711,2352,1034],{"class":912},[711,2354,2355],{"class":713,"line":979},[711,2356,1041],{"emptyLinePlaceholder":1040},[711,2358,2359],{"class":713,"line":990},[711,2360,2361],{"class":959},"\u002F\u002F 仅生成 GSAP 脚本\n",[711,2363,2364,2366,2368,2370,2373,2376,2378,2380],{"class":713,"line":1001},[711,2365,1445],{"class":1444},[711,2367,2259],{"class":919},[711,2369,1673],{"class":912},[711,2371,2372],{"class":1459}," generateGsapTimelineScript",[711,2374,2375],{"class":919},"(animations",[711,2377,956],{"class":912},[711,2379,2350],{"class":919},[711,2381,1034],{"class":912},[711,2383,2384],{"class":713,"line":1009},[711,2385,1041],{"emptyLinePlaceholder":1040},[711,2387,2388],{"class":713,"line":1017},[711,2389,2390],{"class":959},"\u002F\u002F 生成 CSS 样式\n",[711,2392,2393,2395,2397,2400,2402,2405,2407,2410,2412,2414,2417],{"class":713,"line":1037},[711,2394,1445],{"class":1444},[711,2396,1348],{"class":912},[711,2398,2399],{"class":919}," coreCss",[711,2401,956],{"class":912},[711,2403,2404],{"class":919}," customCss",[711,2406,956],{"class":912},[711,2408,2409],{"class":919}," googleFontsLink ",[711,2411,1020],{"class":912},[711,2413,1456],{"class":912},[711,2415,2416],{"class":1459}," generateHyperframesStyles",[711,2418,2419],{"class":919},"(\n",[711,2421,2422,2425,2427,2429,2431,2433,2435],{"class":713,"line":1044},[711,2423,2424],{"class":919},"elements",[711,2426,956],{"class":912},[711,2428,1026],{"class":912},[711,2430,1828],{"class":721},[711,2432,1031],{"class":912},[711,2434,956],{"class":912},[711,2436,2437],{"class":919}," customStyles\n",[711,2439,2440,2442],{"class":713,"line":1050},[711,2441,1857],{"class":919},[711,2443,1034],{"class":912},[1195,2445,2446],{"id":2446},"模板工具",[701,2448,2450],{"className":896,"code":2449,"language":898,"meta":706,"style":706},"import {\ngenerateBaseHtml,\ngetStageStyles,\nGSAP_CDN,\nBASE_STYLES,\nELEMENT_BASE_STYLES,\nMEDIA_STYLES,\nTEXT_STYLES,\nZOOM_CONTAINER_STYLES,\n} from '@hyperframes\u002Fcore';\n\n\u002F\u002F 为指定分辨率生成基础 HTML 结构\nconst baseHtml = generateBaseHtml('landscape');\nconst styles = getStageStyles('portrait');\n",[708,2451,2452,2458,2465,2472,2479,2486,2493,2500,2507,2514,2528,2532,2537,2561],{"__ignoreMap":706},[711,2453,2454,2456],{"class":713,"line":714},[711,2455,906],{"class":905},[711,2457,913],{"class":912},[711,2459,2460,2463],{"class":713,"line":916},[711,2461,2462],{"class":919},"generateBaseHtml",[711,2464,923],{"class":912},[711,2466,2467,2470],{"class":713,"line":926},[711,2468,2469],{"class":919},"getStageStyles",[711,2471,923],{"class":912},[711,2473,2474,2477],{"class":713,"line":934},[711,2475,2476],{"class":919},"GSAP_CDN",[711,2478,923],{"class":912},[711,2480,2481,2484],{"class":713,"line":942},[711,2482,2483],{"class":919},"BASE_STYLES",[711,2485,923],{"class":912},[711,2487,2488,2491],{"class":713,"line":950},[711,2489,2490],{"class":919},"ELEMENT_BASE_STYLES",[711,2492,923],{"class":912},[711,2494,2495,2498],{"class":713,"line":963},[711,2496,2497],{"class":919},"MEDIA_STYLES",[711,2499,923],{"class":912},[711,2501,2502,2505],{"class":713,"line":971},[711,2503,2504],{"class":919},"TEXT_STYLES",[711,2506,923],{"class":912},[711,2508,2509,2512],{"class":713,"line":979},[711,2510,2511],{"class":919},"ZOOM_CONTAINER_STYLES",[711,2513,923],{"class":912},[711,2515,2516,2518,2520,2522,2524,2526],{"class":713,"line":990},[711,2517,1020],{"class":912},[711,2519,1023],{"class":905},[711,2521,1026],{"class":912},[711,2523,175],{"class":721},[711,2525,1031],{"class":912},[711,2527,1034],{"class":912},[711,2529,2530],{"class":713,"line":1001},[711,2531,1041],{"emptyLinePlaceholder":1040},[711,2533,2534],{"class":713,"line":1009},[711,2535,2536],{"class":959},"\u002F\u002F 为指定分辨率生成基础 HTML 结构\n",[711,2538,2539,2541,2544,2546,2549,2551,2553,2555,2557,2559],{"class":713,"line":1017},[711,2540,1445],{"class":1444},[711,2542,2543],{"class":919}," baseHtml ",[711,2545,1673],{"class":912},[711,2547,2548],{"class":1459}," generateBaseHtml",[711,2550,1678],{"class":919},[711,2552,1031],{"class":912},[711,2554,1828],{"class":721},[711,2556,1031],{"class":912},[711,2558,1857],{"class":919},[711,2560,1034],{"class":912},[711,2562,2563,2565,2568,2570,2573,2575,2577,2580,2582,2584],{"class":713,"line":1037},[711,2564,1445],{"class":1444},[711,2566,2567],{"class":919}," styles ",[711,2569,1673],{"class":912},[711,2571,2572],{"class":1459}," getStageStyles",[711,2574,1678],{"class":919},[711,2576,1031],{"class":912},[711,2578,2579],{"class":721},"portrait",[711,2581,1031],{"class":912},[711,2583,1857],{"class":919},[711,2585,1034],{"class":912},[727,2587,2589],{"id":2588},"linter","Linter",[697,2591,2592,2593,2596],{},"合成 Linter 会检查可能导致渲染失败或异常行为的结构问题。你可以通过 CLI 使用 ",[708,2594,2595],{},"npx hyperframes lint"," 运行，或通过编程方式调用：",[701,2598,2600],{"className":896,"code":2599,"language":898,"meta":706,"style":706},"import { lintHyperframeHtml, lintMediaUrls } from '@hyperframes\u002Fcore\u002Flint';\nimport type {\nHyperframeLintResult,\nHyperframeLintFinding,\nHyperframeLintSeverity,     \u002F\u002F \"error\" | \"warning\"\nHyperframeLinterOptions,\n} from '@hyperframes\u002Fcore\u002Flint';\n\nconst result: HyperframeLintResult = lintHyperframeHtml(html, { filePath: 'index.html' });\n\u002F\u002F result.ok, result.errorCount, result.warningCount, result.findings\n\nfor (const finding of result.findings) {\nconsole.log(finding.severity, finding.code, finding.message);\n\u002F\u002F finding.file, finding.selector, finding.elementId, finding.fixHint, finding.snippet\n}\n\n\u002F\u002F 附加的媒体 URL 验证\nconst mediaFindings = lintMediaUrls(result.findings);\n",[708,2601,2602,2628,2636,2643,2650,2660,2667,2681,2685,2725,2730,2734,2756,2797,2802,2806,2810,2815],{"__ignoreMap":706},[711,2603,2604,2606,2608,2611,2613,2616,2618,2620,2622,2624,2626],{"class":713,"line":714},[711,2605,906],{"class":905},[711,2607,1348],{"class":912},[711,2609,2610],{"class":919}," lintHyperframeHtml",[711,2612,956],{"class":912},[711,2614,2615],{"class":919}," lintMediaUrls",[711,2617,1354],{"class":912},[711,2619,1023],{"class":905},[711,2621,1026],{"class":912},[711,2623,864],{"class":721},[711,2625,1031],{"class":912},[711,2627,1034],{"class":912},[711,2629,2630,2632,2634],{"class":713,"line":916},[711,2631,906],{"class":905},[711,2633,909],{"class":905},[711,2635,913],{"class":912},[711,2637,2638,2641],{"class":713,"line":926},[711,2639,2640],{"class":919},"HyperframeLintResult",[711,2642,923],{"class":912},[711,2644,2645,2648],{"class":713,"line":934},[711,2646,2647],{"class":919},"HyperframeLintFinding",[711,2649,923],{"class":912},[711,2651,2652,2655,2657],{"class":713,"line":942},[711,2653,2654],{"class":919},"HyperframeLintSeverity",[711,2656,956],{"class":912},[711,2658,2659],{"class":959},"     \u002F\u002F \"error\" | \"warning\"\n",[711,2661,2662,2665],{"class":713,"line":950},[711,2663,2664],{"class":919},"HyperframeLinterOptions",[711,2666,923],{"class":912},[711,2668,2669,2671,2673,2675,2677,2679],{"class":713,"line":963},[711,2670,1020],{"class":912},[711,2672,1023],{"class":905},[711,2674,1026],{"class":912},[711,2676,864],{"class":721},[711,2678,1031],{"class":912},[711,2680,1034],{"class":912},[711,2682,2683],{"class":713,"line":971},[711,2684,1041],{"emptyLinePlaceholder":1040},[711,2686,2687,2689,2692,2694,2697,2699,2701,2703,2705,2707,2710,2712,2714,2717,2719,2721,2723],{"class":713,"line":979},[711,2688,1445],{"class":1444},[711,2690,2691],{"class":919}," result",[711,2693,1451],{"class":912},[711,2695,2696],{"class":717}," HyperframeLintResult",[711,2698,1456],{"class":912},[711,2700,2610],{"class":1459},[711,2702,1940],{"class":919},[711,2704,956],{"class":912},[711,2706,1348],{"class":912},[711,2708,2709],{"class":1614}," filePath",[711,2711,1451],{"class":912},[711,2713,1026],{"class":912},[711,2715,2716],{"class":721},"index.html",[711,2718,1031],{"class":912},[711,2720,1354],{"class":912},[711,2722,1857],{"class":919},[711,2724,1034],{"class":912},[711,2726,2727],{"class":713,"line":990},[711,2728,2729],{"class":959},"\u002F\u002F result.ok, result.errorCount, result.warningCount, result.findings\n",[711,2731,2732],{"class":713,"line":1001},[711,2733,1041],{"emptyLinePlaceholder":1040},[711,2735,2736,2738,2740,2742,2745,2747,2749,2751,2754],{"class":713,"line":1009},[711,2737,1724],{"class":905},[711,2739,1727],{"class":919},[711,2741,1445],{"class":1444},[711,2743,2744],{"class":919}," finding ",[711,2746,1735],{"class":912},[711,2748,2691],{"class":919},[711,2750,1714],{"class":912},[711,2752,2753],{"class":919},"findings) ",[711,2755,1741],{"class":912},[711,2757,2758,2760,2762,2765,2767,2770,2772,2775,2777,2780,2782,2784,2786,2788,2790,2793,2795],{"class":713,"line":1017},[711,2759,1746],{"class":919},[711,2761,1714],{"class":912},[711,2763,2764],{"class":1459},"log",[711,2766,1678],{"class":1614},[711,2768,2769],{"class":919},"finding",[711,2771,1714],{"class":912},[711,2773,2774],{"class":919},"severity",[711,2776,956],{"class":912},[711,2778,2779],{"class":919}," finding",[711,2781,1714],{"class":912},[711,2783,708],{"class":919},[711,2785,956],{"class":912},[711,2787,2779],{"class":919},[711,2789,1714],{"class":912},[711,2791,2792],{"class":919},"message",[711,2794,1857],{"class":1614},[711,2796,1034],{"class":912},[711,2798,2799],{"class":713,"line":1037},[711,2800,2801],{"class":959},"\u002F\u002F finding.file, finding.selector, finding.elementId, finding.fixHint, finding.snippet\n",[711,2803,2804],{"class":713,"line":1044},[711,2805,1771],{"class":912},[711,2807,2808],{"class":713,"line":1050},[711,2809,1041],{"emptyLinePlaceholder":1040},[711,2811,2812],{"class":713,"line":1057},[711,2813,2814],{"class":959},"\u002F\u002F 附加的媒体 URL 验证\n",[711,2816,2817,2819,2822,2824,2826,2829,2831,2834],{"class":713,"line":1065},[711,2818,1445],{"class":1444},[711,2820,2821],{"class":919}," mediaFindings ",[711,2823,1673],{"class":912},[711,2825,2615],{"class":1459},[711,2827,2828],{"class":919},"(result",[711,2830,1714],{"class":912},[711,2832,2833],{"class":919},"findings)",[711,2835,1034],{"class":912},[697,2837,2838],{},"检测到的问题包括：",[770,2840,2841,2848,2851,2857,2860,2869],{},[773,2842,2843,2844,2847],{},"缺少时间轴注册（",[708,2845,2846],{},"window.__timelines","）",[773,2849,2850],{},"未静音的视频元素（导致自动播放失败）",[773,2852,2853,2854],{},"定时可见元素缺少 ",[708,2855,2856],{},"class=\"clip\"",[773,2858,2859],{},"已弃用的属性名称",[773,2861,2862,2863,752,2866,2847],{},"缺少合成尺寸（",[708,2864,2865],{},"data-width",[708,2867,2868],{},"data-height",[773,2870,2871,2874],{},[708,2872,2873],{},"data-start"," 引用了不存在的 clip ID",[2876,2877,2878],"info",{},"\n关于 Linter 可检测的所有问题及其修复方法，请参阅 [常见错误](\u002Fguides\u002Fcommon-mistakes) 和 [故障排查](\u002Fguides\u002Ftroubleshooting)。\n",[727,2880,2881],{"id":2881},"编译器",[697,2883,2884],{},"编译器子包处理时序解析、HTML 编译和打包：",[701,2886,2888],{"className":896,"code":2887,"language":898,"meta":706,"style":706},"\u002F\u002F 时序编译器（浏览器安全 — 无 Node.js 依赖）\nimport {\ncompileTimingAttrs,\ninjectDurations,\nextractResolvedMedia,\nclampDurations,\n} from '@hyperframes\u002Fcore\u002Fcompiler';\nimport type {\nUnresolvedElement,\nResolvedDuration,\nResolvedMediaElement,\nCompilationResult,\n} from '@hyperframes\u002Fcore\u002Fcompiler';\n\n\u002F\u002F 从 HTML 编译时序属性\nconst compiled: CompilationResult = compileTimingAttrs(html);\n\n\u002F\u002F 将解析后的时长注入回 HTML\nconst updatedHtml = injectDurations(html, compiled.durations);\n\n\u002F\u002F 提取解析后的媒体元素\nconst media: ResolvedMediaElement[] = extractResolvedMedia(html);\n",[708,2889,2890,2895,2901,2908,2915,2922,2929,2943,2951,2958,2965,2972,2979,2993,2997,3002,3023,3027,3032,3056,3060,3065],{"__ignoreMap":706},[711,2891,2892],{"class":713,"line":714},[711,2893,2894],{"class":959},"\u002F\u002F 时序编译器（浏览器安全 — 无 Node.js 依赖）\n",[711,2896,2897,2899],{"class":713,"line":916},[711,2898,906],{"class":905},[711,2900,913],{"class":912},[711,2902,2903,2906],{"class":713,"line":926},[711,2904,2905],{"class":919},"compileTimingAttrs",[711,2907,923],{"class":912},[711,2909,2910,2913],{"class":713,"line":934},[711,2911,2912],{"class":919},"injectDurations",[711,2914,923],{"class":912},[711,2916,2917,2920],{"class":713,"line":942},[711,2918,2919],{"class":919},"extractResolvedMedia",[711,2921,923],{"class":912},[711,2923,2924,2927],{"class":713,"line":950},[711,2925,2926],{"class":919},"clampDurations",[711,2928,923],{"class":912},[711,2930,2931,2933,2935,2937,2939,2941],{"class":713,"line":963},[711,2932,1020],{"class":912},[711,2934,1023],{"class":905},[711,2936,1026],{"class":912},[711,2938,874],{"class":721},[711,2940,1031],{"class":912},[711,2942,1034],{"class":912},[711,2944,2945,2947,2949],{"class":713,"line":971},[711,2946,906],{"class":905},[711,2948,909],{"class":905},[711,2950,913],{"class":912},[711,2952,2953,2956],{"class":713,"line":979},[711,2954,2955],{"class":919},"UnresolvedElement",[711,2957,923],{"class":912},[711,2959,2960,2963],{"class":713,"line":990},[711,2961,2962],{"class":919},"ResolvedDuration",[711,2964,923],{"class":912},[711,2966,2967,2970],{"class":713,"line":1001},[711,2968,2969],{"class":919},"ResolvedMediaElement",[711,2971,923],{"class":912},[711,2973,2974,2977],{"class":713,"line":1009},[711,2975,2976],{"class":919},"CompilationResult",[711,2978,923],{"class":912},[711,2980,2981,2983,2985,2987,2989,2991],{"class":713,"line":1017},[711,2982,1020],{"class":912},[711,2984,1023],{"class":905},[711,2986,1026],{"class":912},[711,2988,874],{"class":721},[711,2990,1031],{"class":912},[711,2992,1034],{"class":912},[711,2994,2995],{"class":713,"line":1037},[711,2996,1041],{"emptyLinePlaceholder":1040},[711,2998,2999],{"class":713,"line":1044},[711,3000,3001],{"class":959},"\u002F\u002F 从 HTML 编译时序属性\n",[711,3003,3004,3006,3009,3011,3014,3016,3019,3021],{"class":713,"line":1050},[711,3005,1445],{"class":1444},[711,3007,3008],{"class":919}," compiled",[711,3010,1451],{"class":912},[711,3012,3013],{"class":717}," CompilationResult",[711,3015,1456],{"class":912},[711,3017,3018],{"class":1459}," compileTimingAttrs",[711,3020,2057],{"class":919},[711,3022,1034],{"class":912},[711,3024,3025],{"class":713,"line":1057},[711,3026,1041],{"emptyLinePlaceholder":1040},[711,3028,3029],{"class":713,"line":1065},[711,3030,3031],{"class":959},"\u002F\u002F 将解析后的时长注入回 HTML\n",[711,3033,3034,3036,3038,3040,3043,3045,3047,3049,3051,3054],{"class":713,"line":1073},[711,3035,1445],{"class":1444},[711,3037,1932],{"class":919},[711,3039,1673],{"class":912},[711,3041,3042],{"class":1459}," injectDurations",[711,3044,1940],{"class":919},[711,3046,956],{"class":912},[711,3048,3008],{"class":919},[711,3050,1714],{"class":912},[711,3052,3053],{"class":919},"durations)",[711,3055,1034],{"class":912},[711,3057,3058],{"class":713,"line":1081},[711,3059,1041],{"emptyLinePlaceholder":1040},[711,3061,3062],{"class":713,"line":1089},[711,3063,3064],{"class":959},"\u002F\u002F 提取解析后的媒体元素\n",[711,3066,3067,3069,3072,3074,3077,3080,3082,3085,3087],{"class":713,"line":1097},[711,3068,1445],{"class":1444},[711,3070,3071],{"class":919}," media",[711,3073,1451],{"class":912},[711,3075,3076],{"class":717}," ResolvedMediaElement",[711,3078,3079],{"class":919},"[] ",[711,3081,1673],{"class":912},[711,3083,3084],{"class":1459}," extractResolvedMedia",[711,3086,2057],{"class":919},[711,3088,1034],{"class":912},[701,3090,3092],{"className":896,"code":3091,"language":898,"meta":706,"style":706},"\u002F\u002F HTML 编译器（Node.js — 需要媒体探测）\nimport { compileHtml } from '@hyperframes\u002Fcore\u002Fcompiler';\nimport type { MediaDurationProber } from '@hyperframes\u002Fcore\u002Fcompiler';\n\nconst prober: MediaDurationProber = async (src) => getDuration(src);\nconst compiledHtml = await compileHtml(html, prober);\n",[708,3093,3094,3099,3120,3143,3147,3182],{"__ignoreMap":706},[711,3095,3096],{"class":713,"line":714},[711,3097,3098],{"class":959},"\u002F\u002F HTML 编译器（Node.js — 需要媒体探测）\n",[711,3100,3101,3103,3105,3108,3110,3112,3114,3116,3118],{"class":713,"line":916},[711,3102,906],{"class":905},[711,3104,1348],{"class":912},[711,3106,3107],{"class":919}," compileHtml",[711,3109,1354],{"class":912},[711,3111,1023],{"class":905},[711,3113,1026],{"class":912},[711,3115,874],{"class":721},[711,3117,1031],{"class":912},[711,3119,1034],{"class":912},[711,3121,3122,3124,3126,3128,3131,3133,3135,3137,3139,3141],{"class":713,"line":926},[711,3123,906],{"class":905},[711,3125,909],{"class":905},[711,3127,1348],{"class":912},[711,3129,3130],{"class":919}," MediaDurationProber",[711,3132,1354],{"class":912},[711,3134,1023],{"class":905},[711,3136,1026],{"class":912},[711,3138,874],{"class":721},[711,3140,1031],{"class":912},[711,3142,1034],{"class":912},[711,3144,3145],{"class":713,"line":934},[711,3146,1041],{"emptyLinePlaceholder":1040},[711,3148,3149,3151,3154,3156,3158,3160,3163,3165,3169,3171,3174,3177,3180],{"class":713,"line":942},[711,3150,1445],{"class":1444},[711,3152,3153],{"class":919}," prober",[711,3155,1451],{"class":912},[711,3157,3130],{"class":717},[711,3159,1456],{"class":912},[711,3161,3162],{"class":1444}," async",[711,3164,1727],{"class":912},[711,3166,3168],{"class":3167},"sHdIc","src",[711,3170,1857],{"class":912},[711,3172,3173],{"class":1444}," =>",[711,3175,3176],{"class":1459}," getDuration",[711,3178,3179],{"class":919},"(src)",[711,3181,1034],{"class":912},[711,3183,3184,3186,3189,3191,3194,3196,3198,3200,3203],{"class":713,"line":950},[711,3185,1445],{"class":1444},[711,3187,3188],{"class":919}," compiledHtml ",[711,3190,1673],{"class":912},[711,3192,3193],{"class":905}," await",[711,3195,3107],{"class":1459},[711,3197,1940],{"class":919},[711,3199,956],{"class":912},[711,3201,3202],{"class":919}," prober)",[711,3204,1034],{"class":912},[701,3206,3208],{"className":896,"code":3207,"language":898,"meta":706,"style":706},"\u002F\u002F HTML 打包器（Node.js — 打包为单个文件）\nimport { bundleToSingleHtml } from '@hyperframes\u002Fcore\u002Fcompiler';\nimport type { BundleOptions } from '@hyperframes\u002Fcore\u002Fcompiler';\n\nconst bundled = await bundleToSingleHtml({ entryPath: '.\u002Findex.html', inline: true });\n",[708,3209,3210,3215,3236,3259,3263],{"__ignoreMap":706},[711,3211,3212],{"class":713,"line":714},[711,3213,3214],{"class":959},"\u002F\u002F HTML 打包器（Node.js — 打包为单个文件）\n",[711,3216,3217,3219,3221,3224,3226,3228,3230,3232,3234],{"class":713,"line":916},[711,3218,906],{"class":905},[711,3220,1348],{"class":912},[711,3222,3223],{"class":919}," bundleToSingleHtml",[711,3225,1354],{"class":912},[711,3227,1023],{"class":905},[711,3229,1026],{"class":912},[711,3231,874],{"class":721},[711,3233,1031],{"class":912},[711,3235,1034],{"class":912},[711,3237,3238,3240,3242,3244,3247,3249,3251,3253,3255,3257],{"class":713,"line":926},[711,3239,906],{"class":905},[711,3241,909],{"class":905},[711,3243,1348],{"class":912},[711,3245,3246],{"class":919}," BundleOptions",[711,3248,1354],{"class":912},[711,3250,1023],{"class":905},[711,3252,1026],{"class":912},[711,3254,874],{"class":721},[711,3256,1031],{"class":912},[711,3258,1034],{"class":912},[711,3260,3261],{"class":713,"line":934},[711,3262,1041],{"emptyLinePlaceholder":1040},[711,3264,3265,3267,3270,3272,3274,3276,3278,3280,3283,3285,3287,3290,3292,3294,3297,3299,3303,3305,3307],{"class":713,"line":942},[711,3266,1445],{"class":1444},[711,3268,3269],{"class":919}," bundled ",[711,3271,1673],{"class":912},[711,3273,3193],{"class":905},[711,3275,3223],{"class":1459},[711,3277,1678],{"class":919},[711,3279,1681],{"class":912},[711,3281,3282],{"class":1614}," entryPath",[711,3284,1451],{"class":912},[711,3286,1026],{"class":912},[711,3288,3289],{"class":721},".\u002Findex.html",[711,3291,1031],{"class":912},[711,3293,956],{"class":912},[711,3295,3296],{"class":1614}," inline",[711,3298,1451],{"class":912},[711,3300,3302],{"class":3301},"sfNiH"," true",[711,3304,1354],{"class":912},[711,3306,1857],{"class":919},[711,3308,1034],{"class":912},[701,3310,3312],{"className":896,"code":3311,"language":898,"meta":706,"style":706},"\u002F\u002F 静态守卫 — 验证 HTML 约定\nimport { validateHyperframeHtmlContract } from '@hyperframes\u002Fcore\u002Fcompiler';\nimport type {\nHyperframeStaticGuardResult,\nHyperframeStaticFailureReason,\n} from '@hyperframes\u002Fcore\u002Fcompiler';\n\nconst guard: HyperframeStaticGuardResult = validateHyperframeHtmlContract(html);\n\u002F\u002F guard.ok, guard.failures[]\n\u002F\u002F 失败原因：\"missing_composition_id\" | \"missing_composition_dimensions\"\n\u002F\u002F   | \"missing_timeline_registry\" | \"invalid_script_syntax\"\n\u002F\u002F   | \"invalid_static_hyperframe_contract\"\n",[708,3313,3314,3319,3340,3348,3355,3362,3376,3380,3400,3405,3410,3415],{"__ignoreMap":706},[711,3315,3316],{"class":713,"line":714},[711,3317,3318],{"class":959},"\u002F\u002F 静态守卫 — 验证 HTML 约定\n",[711,3320,3321,3323,3325,3328,3330,3332,3334,3336,3338],{"class":713,"line":916},[711,3322,906],{"class":905},[711,3324,1348],{"class":912},[711,3326,3327],{"class":919}," validateHyperframeHtmlContract",[711,3329,1354],{"class":912},[711,3331,1023],{"class":905},[711,3333,1026],{"class":912},[711,3335,874],{"class":721},[711,3337,1031],{"class":912},[711,3339,1034],{"class":912},[711,3341,3342,3344,3346],{"class":713,"line":926},[711,3343,906],{"class":905},[711,3345,909],{"class":905},[711,3347,913],{"class":912},[711,3349,3350,3353],{"class":713,"line":934},[711,3351,3352],{"class":919},"HyperframeStaticGuardResult",[711,3354,923],{"class":912},[711,3356,3357,3360],{"class":713,"line":942},[711,3358,3359],{"class":919},"HyperframeStaticFailureReason",[711,3361,923],{"class":912},[711,3363,3364,3366,3368,3370,3372,3374],{"class":713,"line":950},[711,3365,1020],{"class":912},[711,3367,1023],{"class":905},[711,3369,1026],{"class":912},[711,3371,874],{"class":721},[711,3373,1031],{"class":912},[711,3375,1034],{"class":912},[711,3377,3378],{"class":713,"line":963},[711,3379,1041],{"emptyLinePlaceholder":1040},[711,3381,3382,3384,3387,3389,3392,3394,3396,3398],{"class":713,"line":971},[711,3383,1445],{"class":1444},[711,3385,3386],{"class":919}," guard",[711,3388,1451],{"class":912},[711,3390,3391],{"class":717}," HyperframeStaticGuardResult",[711,3393,1456],{"class":912},[711,3395,3327],{"class":1459},[711,3397,2057],{"class":919},[711,3399,1034],{"class":912},[711,3401,3402],{"class":713,"line":979},[711,3403,3404],{"class":959},"\u002F\u002F guard.ok, guard.failures[]\n",[711,3406,3407],{"class":713,"line":990},[711,3408,3409],{"class":959},"\u002F\u002F 失败原因：\"missing_composition_id\" | \"missing_composition_dimensions\"\n",[711,3411,3412],{"class":713,"line":1001},[711,3413,3414],{"class":959},"\u002F\u002F   | \"missing_timeline_registry\" | \"invalid_script_syntax\"\n",[711,3416,3417],{"class":713,"line":1009},[711,3418,3419],{"class":959},"\u002F\u002F   | \"invalid_static_hyperframe_contract\"\n",[727,3421,3422],{"id":3422},"运行时",[697,3424,3425],{},"Hyperframes 运行时在浏览器中管理播放、跳转和 clip 生命周期。core 包提供了构建和加载运行时的工具：",[701,3427,3429],{"className":896,"code":3428,"language":898,"meta":706,"style":706},"import {\nloadHyperframeRuntimeSource,\nbuildHyperframesRuntimeScript,\nHYPERFRAME_RUNTIME_ARTIFACTS,\nHYPERFRAME_RUNTIME_CONTRACT,\nHYPERFRAME_RUNTIME_GLOBALS,\nHYPERFRAME_BRIDGE_SOURCES,\nHYPERFRAME_CONTROL_ACTIONS,\n} from '@hyperframes\u002Fcore';\nimport type {\nHyperframeControlAction,\nHyperframesRuntimeBuildOptions,\n} from '@hyperframes\u002Fcore';\n\n\u002F\u002F 加载预构建的运行时 IIFE\nconst runtimeSource = loadHyperframeRuntimeSource();\n\n\u002F\u002F 构建自定义运行时脚本\nconst script = buildHyperframesRuntimeScript(options);\n",[708,3430,3431,3437,3444,3451,3458,3465,3472,3479,3486,3500,3508,3515,3522,3536,3540,3545,3561,3565,3570],{"__ignoreMap":706},[711,3432,3433,3435],{"class":713,"line":714},[711,3434,906],{"class":905},[711,3436,913],{"class":912},[711,3438,3439,3442],{"class":713,"line":916},[711,3440,3441],{"class":919},"loadHyperframeRuntimeSource",[711,3443,923],{"class":912},[711,3445,3446,3449],{"class":713,"line":926},[711,3447,3448],{"class":919},"buildHyperframesRuntimeScript",[711,3450,923],{"class":912},[711,3452,3453,3456],{"class":713,"line":934},[711,3454,3455],{"class":919},"HYPERFRAME_RUNTIME_ARTIFACTS",[711,3457,923],{"class":912},[711,3459,3460,3463],{"class":713,"line":942},[711,3461,3462],{"class":919},"HYPERFRAME_RUNTIME_CONTRACT",[711,3464,923],{"class":912},[711,3466,3467,3470],{"class":713,"line":950},[711,3468,3469],{"class":919},"HYPERFRAME_RUNTIME_GLOBALS",[711,3471,923],{"class":912},[711,3473,3474,3477],{"class":713,"line":963},[711,3475,3476],{"class":919},"HYPERFRAME_BRIDGE_SOURCES",[711,3478,923],{"class":912},[711,3480,3481,3484],{"class":713,"line":971},[711,3482,3483],{"class":919},"HYPERFRAME_CONTROL_ACTIONS",[711,3485,923],{"class":912},[711,3487,3488,3490,3492,3494,3496,3498],{"class":713,"line":979},[711,3489,1020],{"class":912},[711,3491,1023],{"class":905},[711,3493,1026],{"class":912},[711,3495,175],{"class":721},[711,3497,1031],{"class":912},[711,3499,1034],{"class":912},[711,3501,3502,3504,3506],{"class":713,"line":990},[711,3503,906],{"class":905},[711,3505,909],{"class":905},[711,3507,913],{"class":912},[711,3509,3510,3513],{"class":713,"line":1001},[711,3511,3512],{"class":919},"HyperframeControlAction",[711,3514,923],{"class":912},[711,3516,3517,3520],{"class":713,"line":1009},[711,3518,3519],{"class":919},"HyperframesRuntimeBuildOptions",[711,3521,923],{"class":912},[711,3523,3524,3526,3528,3530,3532,3534],{"class":713,"line":1017},[711,3525,1020],{"class":912},[711,3527,1023],{"class":905},[711,3529,1026],{"class":912},[711,3531,175],{"class":721},[711,3533,1031],{"class":912},[711,3535,1034],{"class":912},[711,3537,3538],{"class":713,"line":1037},[711,3539,1041],{"emptyLinePlaceholder":1040},[711,3541,3542],{"class":713,"line":1044},[711,3543,3544],{"class":959},"\u002F\u002F 加载预构建的运行时 IIFE\n",[711,3546,3547,3549,3552,3554,3557,3559],{"class":713,"line":1050},[711,3548,1445],{"class":1444},[711,3550,3551],{"class":919}," runtimeSource ",[711,3553,1673],{"class":912},[711,3555,3556],{"class":1459}," loadHyperframeRuntimeSource",[711,3558,1626],{"class":919},[711,3560,1034],{"class":912},[711,3562,3563],{"class":713,"line":1057},[711,3564,1041],{"emptyLinePlaceholder":1040},[711,3566,3567],{"class":713,"line":1065},[711,3568,3569],{"class":959},"\u002F\u002F 构建自定义运行时脚本\n",[711,3571,3572,3574,3576,3578,3581,3584],{"class":713,"line":1073},[711,3573,1445],{"class":1444},[711,3575,2259],{"class":919},[711,3577,1673],{"class":912},[711,3579,3580],{"class":1459}," buildHyperframesRuntimeScript",[711,3582,3583],{"class":919},"(options)",[711,3585,1034],{"class":912},[697,3587,3588],{},"预构建的运行时 IIFE 可以直接导入：",[701,3590,3592],{"className":896,"code":3591,"language":898,"meta":706,"style":706},"import runtime from '@hyperframes\u002Fcore\u002Fruntime';\n",[708,3593,3594],{"__ignoreMap":706},[711,3595,3596,3598,3601,3604,3606,3608,3610],{"class":713,"line":714},[711,3597,906],{"class":905},[711,3599,3600],{"class":919}," runtime ",[711,3602,3603],{"class":905},"from",[711,3605,1026],{"class":912},[711,3607,884],{"class":721},[711,3609,1031],{"class":912},[711,3611,1034],{"class":912},[727,3613,3615],{"id":3614},"frame-适配器","Frame 适配器",[697,3617,3618,3619,3621],{},"core 包定义了 ",[750,3620,3615],{"href":51}," 接口，并提供了内置的 GSAP 适配器：",[701,3623,3625],{"className":896,"code":3624,"language":898,"meta":706,"style":706},"import { createGSAPFrameAdapter } from '@hyperframes\u002Fcore';\nimport type {\nFrameAdapter,\nFrameAdapterContext,\nGSAPTimelineLike,\nCreateGSAPFrameAdapterOptions,\n} from '@hyperframes\u002Fcore';\n\n\u002F\u002F 创建 GSAP Frame 适配器\nconst adapter: FrameAdapter = createGSAPFrameAdapter({\nid: 'my-composition',\nfps: 30,\nimeline: gsapTimeline,\n});\n\n\u002F\u002F 适配器生命周期\nawait adapter.init?.(context);\nconst durationFrames = adapter.getDurationFrames();\nawait adapter.seekFrame(42);\nawait adapter.destroy?.();\n",[708,3626,3627,3648,3656,3662,3668,3675,3682,3696,3700,3705,3725,3741,3753,3765,3773,3777,3782,3802,3822,3842],{"__ignoreMap":706},[711,3628,3629,3631,3633,3636,3638,3640,3642,3644,3646],{"class":713,"line":714},[711,3630,906],{"class":905},[711,3632,1348],{"class":912},[711,3634,3635],{"class":919}," createGSAPFrameAdapter",[711,3637,1354],{"class":912},[711,3639,1023],{"class":905},[711,3641,1026],{"class":912},[711,3643,175],{"class":721},[711,3645,1031],{"class":912},[711,3647,1034],{"class":912},[711,3649,3650,3652,3654],{"class":713,"line":916},[711,3651,906],{"class":905},[711,3653,909],{"class":905},[711,3655,913],{"class":912},[711,3657,3658,3660],{"class":713,"line":926},[711,3659,1004],{"class":919},[711,3661,923],{"class":912},[711,3663,3664,3666],{"class":713,"line":934},[711,3665,1012],{"class":919},[711,3667,923],{"class":912},[711,3669,3670,3673],{"class":713,"line":942},[711,3671,3672],{"class":919},"GSAPTimelineLike",[711,3674,923],{"class":912},[711,3676,3677,3680],{"class":713,"line":950},[711,3678,3679],{"class":919},"CreateGSAPFrameAdapterOptions",[711,3681,923],{"class":912},[711,3683,3684,3686,3688,3690,3692,3694],{"class":713,"line":963},[711,3685,1020],{"class":912},[711,3687,1023],{"class":905},[711,3689,1026],{"class":912},[711,3691,175],{"class":721},[711,3693,1031],{"class":912},[711,3695,1034],{"class":912},[711,3697,3698],{"class":713,"line":971},[711,3699,1041],{"emptyLinePlaceholder":1040},[711,3701,3702],{"class":713,"line":979},[711,3703,3704],{"class":959},"\u002F\u002F 创建 GSAP Frame 适配器\n",[711,3706,3707,3709,3712,3714,3717,3719,3721,3723],{"class":713,"line":990},[711,3708,1445],{"class":1444},[711,3710,3711],{"class":919}," adapter",[711,3713,1451],{"class":912},[711,3715,3716],{"class":717}," FrameAdapter",[711,3718,1456],{"class":912},[711,3720,3635],{"class":1459},[711,3722,1678],{"class":919},[711,3724,1741],{"class":912},[711,3726,3727,3730,3732,3734,3737,3739],{"class":713,"line":1001},[711,3728,3729],{"class":1614},"id",[711,3731,1451],{"class":912},[711,3733,1026],{"class":912},[711,3735,3736],{"class":721},"my-composition",[711,3738,1031],{"class":912},[711,3740,923],{"class":912},[711,3742,3743,3746,3748,3751],{"class":713,"line":1009},[711,3744,3745],{"class":1614},"fps",[711,3747,1451],{"class":912},[711,3749,3750],{"class":1961}," 30",[711,3752,923],{"class":912},[711,3754,3755,3758,3760,3763],{"class":713,"line":1017},[711,3756,3757],{"class":1614},"imeline",[711,3759,1451],{"class":912},[711,3761,3762],{"class":919}," gsapTimeline",[711,3764,923],{"class":912},[711,3766,3767,3769,3771],{"class":713,"line":1037},[711,3768,1020],{"class":912},[711,3770,1857],{"class":919},[711,3772,1034],{"class":912},[711,3774,3775],{"class":713,"line":1044},[711,3776,1041],{"emptyLinePlaceholder":1040},[711,3778,3779],{"class":713,"line":1050},[711,3780,3781],{"class":959},"\u002F\u002F 适配器生命周期\n",[711,3783,3784,3787,3789,3791,3794,3797,3800],{"class":713,"line":1057},[711,3785,3786],{"class":905},"await",[711,3788,3711],{"class":919},[711,3790,1714],{"class":912},[711,3792,3793],{"class":1459},"init",[711,3795,3796],{"class":912},"?.",[711,3798,3799],{"class":919},"(context)",[711,3801,1034],{"class":912},[711,3803,3804,3806,3809,3811,3813,3815,3818,3820],{"class":713,"line":1065},[711,3805,1445],{"class":1444},[711,3807,3808],{"class":919}," durationFrames ",[711,3810,1673],{"class":912},[711,3812,3711],{"class":919},[711,3814,1714],{"class":912},[711,3816,3817],{"class":1459},"getDurationFrames",[711,3819,1626],{"class":919},[711,3821,1034],{"class":912},[711,3823,3824,3826,3828,3830,3833,3835,3838,3840],{"class":713,"line":1073},[711,3825,3786],{"class":905},[711,3827,3711],{"class":919},[711,3829,1714],{"class":912},[711,3831,3832],{"class":1459},"seekFrame",[711,3834,1678],{"class":919},[711,3836,3837],{"class":1961},"42",[711,3839,1857],{"class":919},[711,3841,1034],{"class":912},[711,3843,3844,3846,3848,3850,3853,3855,3857],{"class":713,"line":1081},[711,3845,3786],{"class":905},[711,3847,3711],{"class":919},[711,3849,1714],{"class":912},[711,3851,3852],{"class":1459},"destroy",[711,3854,3796],{"class":912},[711,3856,1626],{"class":919},[711,3858,1034],{"class":912},[727,3860,3861],{"id":3861},"媒体工具",[701,3863,3865],{"className":896,"code":3864,"language":898,"meta":706,"style":706},"import {\nMEDIA_VISUAL_STYLE_PROPERTIES,\ncopyMediaVisualStyles,\nquantizeTimeToFrame,\n} from '@hyperframes\u002Fcore';\nimport type { MediaVisualStyleProperty } from '@hyperframes\u002Fcore';\n\n\u002F\u002F 将时间值量化到最近的帧边界\nconst frameTime = quantizeTimeToFrame(5.033, 30); \u002F\u002F → 5.033... 吸附到帧\n\n\u002F\u002F 在媒体元素之间复制视觉样式\ncopyMediaVisualStyles(fromElement, toElement);\n",[708,3866,3867,3873,3880,3887,3894,3908,3931,3935,3940,3969,3973,3978],{"__ignoreMap":706},[711,3868,3869,3871],{"class":713,"line":714},[711,3870,906],{"class":905},[711,3872,913],{"class":912},[711,3874,3875,3878],{"class":713,"line":916},[711,3876,3877],{"class":919},"MEDIA_VISUAL_STYLE_PROPERTIES",[711,3879,923],{"class":912},[711,3881,3882,3885],{"class":713,"line":926},[711,3883,3884],{"class":919},"copyMediaVisualStyles",[711,3886,923],{"class":912},[711,3888,3889,3892],{"class":713,"line":934},[711,3890,3891],{"class":919},"quantizeTimeToFrame",[711,3893,923],{"class":912},[711,3895,3896,3898,3900,3902,3904,3906],{"class":713,"line":942},[711,3897,1020],{"class":912},[711,3899,1023],{"class":905},[711,3901,1026],{"class":912},[711,3903,175],{"class":721},[711,3905,1031],{"class":912},[711,3907,1034],{"class":912},[711,3909,3910,3912,3914,3916,3919,3921,3923,3925,3927,3929],{"class":713,"line":950},[711,3911,906],{"class":905},[711,3913,909],{"class":905},[711,3915,1348],{"class":912},[711,3917,3918],{"class":919}," MediaVisualStyleProperty",[711,3920,1354],{"class":912},[711,3922,1023],{"class":905},[711,3924,1026],{"class":912},[711,3926,175],{"class":721},[711,3928,1031],{"class":912},[711,3930,1034],{"class":912},[711,3932,3933],{"class":713,"line":963},[711,3934,1041],{"emptyLinePlaceholder":1040},[711,3936,3937],{"class":713,"line":971},[711,3938,3939],{"class":959},"\u002F\u002F 将时间值量化到最近的帧边界\n",[711,3941,3942,3944,3947,3949,3952,3954,3957,3959,3961,3963,3966],{"class":713,"line":979},[711,3943,1445],{"class":1444},[711,3945,3946],{"class":919}," frameTime ",[711,3948,1673],{"class":912},[711,3950,3951],{"class":1459}," quantizeTimeToFrame",[711,3953,1678],{"class":919},[711,3955,3956],{"class":1961},"5.033",[711,3958,956],{"class":912},[711,3960,3750],{"class":1961},[711,3962,1857],{"class":919},[711,3964,3965],{"class":912},";",[711,3967,3968],{"class":959}," \u002F\u002F → 5.033... 吸附到帧\n",[711,3970,3971],{"class":713,"line":990},[711,3972,1041],{"emptyLinePlaceholder":1040},[711,3974,3975],{"class":713,"line":1001},[711,3976,3977],{"class":959},"\u002F\u002F 在媒体元素之间复制视觉样式\n",[711,3979,3980,3982,3985,3987,3990],{"class":713,"line":1009},[711,3981,3884],{"class":1459},[711,3983,3984],{"class":919},"(fromElement",[711,3986,956],{"class":912},[711,3988,3989],{"class":919}," toElement)",[711,3991,1034],{"class":912},[727,3993,3995],{"id":3994},"picker-api","Picker API",[697,3997,3998],{},"用于编辑器 UI 中的元素选择：",[701,4000,4002],{"className":896,"code":4001,"language":898,"meta":706,"style":706},"import type {\nHyperframePickerApi,\nHyperframePickerBoundingBox,\nHyperframePickerElementInfo,\n} from '@hyperframes\u002Fcore';\n",[708,4003,4004,4012,4019,4026,4033],{"__ignoreMap":706},[711,4005,4006,4008,4010],{"class":713,"line":714},[711,4007,906],{"class":905},[711,4009,909],{"class":905},[711,4011,913],{"class":912},[711,4013,4014,4017],{"class":713,"line":916},[711,4015,4016],{"class":919},"HyperframePickerApi",[711,4018,923],{"class":912},[711,4020,4021,4024],{"class":713,"line":926},[711,4022,4023],{"class":919},"HyperframePickerBoundingBox",[711,4025,923],{"class":912},[711,4027,4028,4031],{"class":713,"line":934},[711,4029,4030],{"class":919},"HyperframePickerElementInfo",[711,4032,923],{"class":912},[711,4034,4035,4037,4039,4041,4043,4045],{"class":713,"line":942},[711,4036,1020],{"class":912},[711,4038,1023],{"class":905},[711,4040,1026],{"class":912},[711,4042,175],{"class":721},[711,4044,1031],{"class":912},[711,4046,1034],{"class":912},[727,4048,4049],{"id":4049},"相关包",[770,4051,4052,4059,4067,4075],{},[773,4053,4054,4058],{},[737,4055,4056],{},[750,4057,195],{"href":196},"\n创建、预览、检查和渲染合成的最简单方式。",[773,4060,4061,4066],{},[737,4062,4063],{},[750,4064,4065],{"href":180},"Engine","\n使用 core 类型和运行时的底层帧捕获管道。",[773,4068,4069,4074],{},[737,4070,4071],{},[750,4072,4073],{"href":188},"Producer","\n构建在 core 和 engine 之上的完整渲染管道。",[773,4076,4077,4082],{},[737,4078,4079],{},[750,4080,4081],{"href":192},"Studio","\n嵌入 core 运行时进行预览的可视化合成编辑器。",[4084,4085,4086],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":706,"searchDepth":714,"depth":916,"links":4088},[4089,4090,4091,4095,4101,4102,4103,4104,4105,4106,4107],{"id":729,"depth":916,"text":729},{"id":825,"depth":916,"text":825},{"id":890,"depth":916,"text":890,"children":4092},[4093,4094],{"id":1197,"depth":926,"text":1197},{"id":1275,"depth":926,"text":1275},{"id":1367,"depth":916,"text":1368,"children":4096},[4097,4098,4099,4100],{"id":1862,"depth":926,"text":1863},{"id":2067,"depth":926,"text":2068},{"id":2277,"depth":926,"text":2278},{"id":2446,"depth":926,"text":2446},{"id":2588,"depth":916,"text":2589},{"id":2881,"depth":916,"text":2881},{"id":3422,"depth":916,"text":3422},{"id":3614,"depth":916,"text":3615},{"id":3861,"depth":916,"text":3861},{"id":3994,"depth":916,"text":3995},{"id":4049,"depth":916,"text":4049},"类型定义、HTML 生成、运行时与 Linter — 所有其他包的基础依赖。","md",null,{},{"title":175,"description":4108},"nbj0RCkwcsirOpahU0JEKxjXonWbCf2DDtLBvMvjpAo",[4115,4117],{"title":165,"path":166,"stem":167,"description":4116,"children":-1},"面向从其他一键部署视频渲染器迁移到 HyperFrames 的用户的并排概念映射。",{"title":179,"path":180,"stem":181,"description":4118,"children":-1},"基于 Chrome BeginFrame API 的可寻址页面到视频捕获引擎。",1780322244356]