[{"data":1,"prerenderedAt":42819},["ShallowReactive",2],{"docs-catalog":3,"docs-/docs/api/overview":42677},{"items":4,"byPath":39430,"searchItems":39431},[5,425,607,817,1906,2296,2338,2449,2886,3054,3258,3810,3967,4295,4387,4601,4867,5184,5367,6167,7074,8025,8526,8998,10397,11300,11666,12977,13364,13737,13941,14611,15821,16811,18106,18814,19611,20359,21378,22308,23225,24790,25293,25977,26522,27128,27992,28227,28824,29265,29895,30505,31230,31389,31663,32303,32540,32820,33336,34358,34543,34977,35831,35903,36434,37327,37430,37631,37836,37995,38160,38229,38355,38468,38550,38667,38745,38835,38992,39096,39198,39282,39355],{"path":6,"title":7,"description":8,"kind":9,"section":10,"order":11,"group":-1,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":12,"attrs":15,"events":16,"cssVars":17,"related":18,"body":21},"/docs/overview","Overview","High-level view of StringTune, the package model, and how to navigate the docs.","guide","Start Here",10,[13,14],"StringTune docs","overview",[],[],[],[19,20],"/docs/quick-start","/docs/built-in-vs-custom-vs-internal",{"type":22,"value":23,"toc":413},"minimark",[24,29,33,36,41,74,78,81,95,98,120,124,127,169,173,178,181,184,206,210,213,217,220,224,336,377,380,391,395,409],[25,26,28],"h1",{"id":27},"stringtune","StringTune",[30,31,32],"p",{},"StringTune is a modular runtime for scroll-driven motion, cursor interaction, responsive visibility, media helpers, and diagnostics.",[30,34,35],{},"This docs site treats the library source and package exports as the only source of truth. If an older snippet, copied example, or internal project module disagrees with the current package, the package wins.",[37,38,40],"h2",{"id":39},"what-matters-first","What matters first",[42,43,44,48,51],"ul",{},[45,46,47],"li",{},"The public surface comes from the package exports, not from internal runtime folders.",[45,49,50],{},"Built-in modules and custom modules are documented separately on purpose.",[45,52,53,54],{},"Most user-facing behavior is one of four things:\n",[42,55,56,62,68,71],{},[45,57,58,59],{},"instance API on ",[60,61,28],"code",{},[45,63,64,65],{},"module registration through ",[60,66,67],{},"stringTune.use(...)",[45,69,70],{},"declarative attributes in HTML",[45,72,73],{},"outputs written as CSS variables, classes, inline styles, or emitted events",[37,75,77],{"id":76},"runtime-model","Runtime model",[30,79,80],{},"StringTune is not a bag of unrelated effects. It is one runtime instance that:",[42,82,83,86,89,92],{},[45,84,85],{},"registers modules",[45,87,88],{},"scans the DOM for matching objects",[45,90,91],{},"calculates geometry and state on frame updates",[45,93,94],{},"writes outputs back to the DOM",[30,96,97],{},"In practice, a module usually follows this contract:",[99,100,101,107,114,117],"ol",{},[45,102,103,104,106],{},"You activate it with ",[60,105,67],{},".",[45,108,109,110,113],{},"You configure an element through ",[60,111,112],{},"string=\"...\""," and related attributes.",[45,115,116],{},"The runtime computes state from scroll, cursor, viewport, or form input.",[45,118,119],{},"The module publishes that state as CSS variables, classes, inline transforms, helper nodes, or events.",[37,121,123],{"id":122},"documentation-model","Documentation model",[30,125,126],{},"Use the docs in this order:",[99,128,129,142,153,161],{},[45,130,131,132,137,138,141],{},"Read ",[133,134,136],"a",{"href":135},"/docs/introduction","Installation"," and ",[133,139,140],{"href":19},"Quick Start"," if you are integrating the package.",[45,143,131,144,148,149,152],{},[133,145,147],{"href":146},"/docs/configuration","Configuration"," and the rest of ",[133,150,151],{"href":20},"Concepts"," if you need to understand object ids, offsets, events, or scroll modes.",[45,154,155,156,160],{},"Go to ",[133,157,159],{"href":158},"/docs/modules/overview","Built-in Modules Overview"," for the official module catalog and the per-module public API.",[45,162,163,164,168],{},"Use ",[133,165,167],{"href":166},"/docs/api/overview","API Overview"," when you need exact exports, shared attributes, settings, and event names.",[37,170,172],{"id":171},"package-boundaries","Package boundaries",[174,175,177],"h3",{"id":176},"built-in-modules","Built-in modules",[30,179,180],{},"These are official exports from the package and belong in the main module catalog. They are the supported integration surface of StringTune.",[30,182,183],{},"Examples:",[42,185,186,191,196,201],{},[45,187,188],{},[60,189,190],{},"StringProgress",[45,192,193],{},[60,194,195],{},"StringCursor",[45,197,198],{},[60,199,200],{},"StringResponsive",[45,202,203],{},[60,204,205],{},"StringLoading",[174,207,209],{"id":208},"custom-modules","Custom modules",[30,211,212],{},"These are project-specific extensions built on top of StringTune. They can be valid for a product codebase, but they are not part of the package contract unless they are exported by the package itself.",[174,214,216],{"id":215},"internal-runtime","Internal runtime",[30,218,219],{},"Internal managers and helpers exist to run the system, but they are not a supported integration surface. The docs may reference them conceptually to explain behavior, but they are not documented as public API.",[37,221,223],{"id":222},"core-integration-pattern","Core integration pattern",[225,226,231],"pre",{"className":227,"code":228,"language":229,"meta":230,"style":230},"language-ts shiki shiki-themes github-light github-dark","import StringTune, { StringProgress, StringCursor } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\n\nstringTune.use(StringProgress);\nstringTune.use(StringCursor, { lerp: 0.8 });\nstringTune.start(60);\n","ts","",[60,232,233,256,263,286,291,303,319],{"__ignoreMap":230},[234,235,238,242,246,249,253],"span",{"class":236,"line":237},"line",1,[234,239,241],{"class":240},"szBVR","import",[234,243,245],{"class":244},"sVt8B"," StringTune, { StringProgress, StringCursor } ",[234,247,248],{"class":240},"from",[234,250,252],{"class":251},"sZZnC"," '@fiddle-digital/string-tune'",[234,254,255],{"class":244},";\n",[234,257,259],{"class":236,"line":258},2,[234,260,262],{"emptyLinePlaceholder":261},true,"\n",[234,264,266,269,273,276,279,283],{"class":236,"line":265},3,[234,267,268],{"class":240},"const",[234,270,272],{"class":271},"sj4cs"," stringTune",[234,274,275],{"class":240}," =",[234,277,278],{"class":244}," StringTune.",[234,280,282],{"class":281},"sScJk","getInstance",[234,284,285],{"class":244},"();\n",[234,287,289],{"class":236,"line":288},4,[234,290,262],{"emptyLinePlaceholder":261},[234,292,294,297,300],{"class":236,"line":293},5,[234,295,296],{"class":244},"stringTune.",[234,298,299],{"class":281},"use",[234,301,302],{"class":244},"(StringProgress);\n",[234,304,306,308,310,313,316],{"class":236,"line":305},6,[234,307,296],{"class":244},[234,309,299],{"class":281},[234,311,312],{"class":244},"(StringCursor, { lerp: ",[234,314,315],{"class":271},"0.8",[234,317,318],{"class":244}," });\n",[234,320,322,324,327,330,333],{"class":236,"line":321},7,[234,323,296],{"class":244},[234,325,326],{"class":281},"start",[234,328,329],{"class":244},"(",[234,331,332],{"class":271},"60",[234,334,335],{"class":244},");\n",[225,337,341],{"className":338,"code":339,"language":340,"meta":230,"style":230},"language-html shiki shiki-themes github-light github-dark","\u003Cdiv string=\"progress\" string-id=\"hero\">\u003C/div>\n","html",[60,342,343],{"__ignoreMap":230},[234,344,345,348,352,355,358,361,364,366,369,372,374],{"class":236,"line":237},[234,346,347],{"class":244},"\u003C",[234,349,351],{"class":350},"s9eBZ","div",[234,353,354],{"class":281}," string",[234,356,357],{"class":244},"=",[234,359,360],{"class":251},"\"progress\"",[234,362,363],{"class":281}," string-id",[234,365,357],{"class":244},[234,367,368],{"class":251},"\"hero\"",[234,370,371],{"class":244},">\u003C/",[234,373,351],{"class":350},[234,375,376],{"class":244},">\n",[30,378,379],{},"That pattern stays the same across the library:",[42,381,382,385,388],{},[45,383,384],{},"register the modules you need",[45,386,387],{},"attach declarative attributes in markup",[45,389,390],{},"consume the module output in CSS or JavaScript",[37,392,394],{"id":393},"what-this-docs-site-optimizes-for","What this docs site optimizes for",[42,396,397,400,403,406],{},[45,398,399],{},"fast lookup over long narrative",[45,401,402],{},"accurate API and runtime behavior",[45,404,405],{},"examples that match the real code",[45,407,408],{},"explicit boundaries between official, custom, and internal behavior",[410,411,412],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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 .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":230,"searchDepth":258,"depth":258,"links":414},[415,416,417,418,423,424],{"id":39,"depth":258,"text":40},{"id":76,"depth":258,"text":77},{"id":122,"depth":258,"text":123},{"id":171,"depth":258,"text":172,"children":419},[420,421,422],{"id":176,"depth":265,"text":177},{"id":208,"depth":265,"text":209},{"id":215,"depth":265,"text":216},{"id":222,"depth":258,"text":223},{"id":393,"depth":258,"text":394},{"path":135,"title":136,"description":426,"kind":9,"section":10,"order":427,"group":-1,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":428,"attrs":431,"events":432,"cssVars":433,"related":434,"body":437},"Install the package and understand the minimal setup sequence.",20,[429,430],"npm install","setup",[],[],[],[19,435,436],"/docs/nuxt","/docs/nextjs",{"type":22,"value":438,"toc":599},[439,442,446,464,468,528,536,541,551,555,572,576,596],[25,440,136],{"id":441},"installation",[37,443,445],{"id":444},"install-the-package","Install the package",[225,447,451],{"className":448,"code":449,"language":450,"meta":230,"style":230},"language-bash shiki shiki-themes github-light github-dark","npm install @fiddle-digital/string-tune\n","bash",[60,452,453],{"__ignoreMap":230},[234,454,455,458,461],{"class":236,"line":237},[234,456,457],{"class":281},"npm",[234,459,460],{"class":251}," install",[234,462,463],{"class":251}," @fiddle-digital/string-tune\n",[37,465,467],{"id":466},"minimal-setup","Minimal setup",[225,469,471],{"className":227,"code":470,"language":229,"meta":230,"style":230},"import StringTune, { StringProgress } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\n\nstringTune.use(StringProgress);\nstringTune.start(60);\n",[60,472,473,486,490,504,508,516],{"__ignoreMap":230},[234,474,475,477,480,482,484],{"class":236,"line":237},[234,476,241],{"class":240},[234,478,479],{"class":244}," StringTune, { StringProgress } ",[234,481,248],{"class":240},[234,483,252],{"class":251},[234,485,255],{"class":244},[234,487,488],{"class":236,"line":258},[234,489,262],{"emptyLinePlaceholder":261},[234,491,492,494,496,498,500,502],{"class":236,"line":265},[234,493,268],{"class":240},[234,495,272],{"class":271},[234,497,275],{"class":240},[234,499,278],{"class":244},[234,501,282],{"class":281},[234,503,285],{"class":244},[234,505,506],{"class":236,"line":288},[234,507,262],{"emptyLinePlaceholder":261},[234,509,510,512,514],{"class":236,"line":293},[234,511,296],{"class":244},[234,513,299],{"class":281},[234,515,302],{"class":244},[234,517,518,520,522,524,526],{"class":236,"line":305},[234,519,296],{"class":244},[234,521,326],{"class":281},[234,523,329],{"class":244},[234,525,332],{"class":271},[234,527,335],{"class":244},[37,529,531,532,535],{"id":530},"what-start-does","What ",[60,533,534],{},"start()"," does",[30,537,538,540],{},[60,539,534],{}," initializes the registered runtime, prepares the current DOM objects, and starts the frame loop.",[30,542,543,544,547,548,550],{},"If you call ",[60,545,546],{},"use(...)",", register modules before ",[60,549,534],{}," unless you have a specific reason to hot-attach behavior later.",[37,552,554],{"id":553},"recommended-setup-rules","Recommended setup rules",[42,556,557,563,566,569],{},[45,558,559,560,106],{},"Create one shared instance through ",[60,561,562],{},"StringTune.getInstance()",[45,564,565],{},"Register only the modules you actually need.",[45,567,568],{},"Keep setup in a client-only lifecycle boundary when working in SSR frameworks.",[45,570,571],{},"Treat module registration as part of app bootstrap, not page-local ad hoc code.",[37,573,575],{"id":574},"next-steps","Next steps",[42,577,578,582,587,592],{},[45,579,580],{},[133,581,140],{"href":19},[45,583,584],{},[133,585,586],{"href":435},"Nuxt Integration",[45,588,589],{},[133,590,591],{"href":436},"Next.js Integration",[45,593,594],{},[133,595,159],{"href":158},[410,597,598],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":230,"searchDepth":258,"depth":258,"links":600},[601,602,603,605,606],{"id":444,"depth":258,"text":445},{"id":466,"depth":258,"text":467},{"id":530,"depth":258,"text":604},"What start() does",{"id":553,"depth":258,"text":554},{"id":574,"depth":258,"text":575},{"path":19,"title":140,"description":608,"kind":9,"section":10,"order":609,"group":-1,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":610,"attrs":613,"events":614,"cssVars":615,"related":616,"body":618},"Minimal setup for registering modules, starting the runtime, and wiring your first element.",30,[611,612],"first setup","getting started",[],[],[],[135,617],"/docs/modules/progress",{"type":22,"value":619,"toc":809},[620,623,627,663,667,689,694,704,708,725,729,759,766,770,773,787,800,804,807],[25,621,140],{"id":622},"quick-start",[37,624,626],{"id":625},"_1-create-the-instance","1. Create the instance",[225,628,630],{"className":227,"code":629,"language":229,"meta":230,"style":230},"import StringTune, { StringProgress, StringResponsive } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\n",[60,631,632,645,649],{"__ignoreMap":230},[234,633,634,636,639,641,643],{"class":236,"line":237},[234,635,241],{"class":240},[234,637,638],{"class":244}," StringTune, { StringProgress, StringResponsive } ",[234,640,248],{"class":240},[234,642,252],{"class":251},[234,644,255],{"class":244},[234,646,647],{"class":236,"line":258},[234,648,262],{"emptyLinePlaceholder":261},[234,650,651,653,655,657,659,661],{"class":236,"line":265},[234,652,268],{"class":240},[234,654,272],{"class":271},[234,656,275],{"class":240},[234,658,278],{"class":244},[234,660,282],{"class":281},[234,662,285],{"class":244},[37,664,666],{"id":665},"_2-register-built-in-modules","2. Register built-in modules",[225,668,670],{"className":227,"code":669,"language":229,"meta":230,"style":230},"stringTune.use(StringProgress);\nstringTune.use(StringResponsive);\n",[60,671,672,680],{"__ignoreMap":230},[234,673,674,676,678],{"class":236,"line":237},[234,675,296],{"class":244},[234,677,299],{"class":281},[234,679,302],{"class":244},[234,681,682,684,686],{"class":236,"line":258},[234,683,296],{"class":244},[234,685,299],{"class":281},[234,687,688],{"class":244},"(StringResponsive);\n",[30,690,163,691,693],{},[60,692,67],{}," for both element modules and global modules. The difference is in how the module activates:",[42,695,696,701],{},[45,697,698,699],{},"element modules are attached through ",[60,700,112],{},[45,702,703],{},"global modules are activated by registration and then manage global behavior",[37,705,707],{"id":706},"_3-start-the-runtime","3. Start the runtime",[225,709,711],{"className":227,"code":710,"language":229,"meta":230,"style":230},"stringTune.start(60);\n",[60,712,713],{"__ignoreMap":230},[234,714,715,717,719,721,723],{"class":236,"line":237},[234,716,296],{"class":244},[234,718,326],{"class":281},[234,720,329],{"class":244},[234,722,332],{"class":271},[234,724,335],{"class":244},[37,726,728],{"id":727},"_4-mark-up-your-first-object","4. Mark up your first object",[225,730,732],{"className":338,"code":731,"language":340,"meta":230,"style":230},"\u003Csection string=\"progress\" string-id=\"hero\">\u003C/section>\n",[60,733,734],{"__ignoreMap":230},[234,735,736,738,741,743,745,747,749,751,753,755,757],{"class":236,"line":237},[234,737,347],{"class":244},[234,739,740],{"class":350},"section",[234,742,354],{"class":281},[234,744,357],{"class":244},[234,746,360],{"class":251},[234,748,363],{"class":281},[234,750,357],{"class":244},[234,752,368],{"class":251},[234,754,371],{"class":244},[234,756,740],{"class":350},[234,758,376],{"class":244},[30,760,761,762,765],{},"If the module emits an object-scoped event, ",[60,763,764],{},"string-id"," becomes the anchor for that channel.",[37,767,769],{"id":768},"_5-consume-the-result","5. Consume the result",[30,771,772],{},"Many built-in modules expose one or more of:",[42,774,775,778,781,784],{},[45,776,777],{},"CSS variables",[45,779,780],{},"object-scoped events",[45,782,783],{},"global events",[45,785,786],{},"DOM class changes",[30,788,789,790,792,793,796,797,106],{},"For example, ",[60,791,190],{}," can drive CSS through ",[60,794,795],{},"--progress"," and emit ",[60,798,799],{},"object:progress:\u003Cid>",[37,801,803],{"id":802},"common-mistake","Common mistake",[30,805,806],{},"Do not reach into private runtime fields such as internal managers. If you need to integrate with the library, stay on the public package exports and documented attributes/events.",[410,808,412],{},{"title":230,"searchDepth":258,"depth":258,"links":810},[811,812,813,814,815,816],{"id":625,"depth":258,"text":626},{"id":665,"depth":258,"text":666},{"id":706,"depth":258,"text":707},{"id":727,"depth":258,"text":728},{"id":768,"depth":258,"text":769},{"id":802,"depth":258,"text":803},{"path":435,"title":586,"description":818,"kind":9,"section":10,"order":819,"group":-1,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":820,"attrs":822,"events":823,"cssVars":824,"related":825,"body":826},"How to register StringTune in a Nuxt application without leaking runtime concerns into the app shell.",40,[821],"Nuxt",[],[],[],[135,19,436],{"type":22,"value":827,"toc":1899},[828,831,834,836,848,852,855,1041,1050,1054,1207,1211,1214,1261,1265,1272,1890,1893,1896],[25,829,586],{"id":830},"nuxt-integration",[30,832,833],{},"Nuxt 3 works smoothly with StringTune as long as you start the engine on the client and refresh it whenever new markup is rendered. The snippets below reflect the actual API.",[37,835,136],{"id":441},[225,837,838],{"className":448,"code":449,"language":450,"meta":230,"style":230},[60,839,840],{"__ignoreMap":230},[234,841,842,844,846],{"class":236,"line":237},[234,843,457],{"class":281},[234,845,460],{"class":251},[234,847,463],{"class":251},[37,849,851],{"id":850},"client-plugin","Client Plugin",[30,853,854],{},"Create a client-only plugin that registers the modules you need and exposes the singleton instance through Nuxt.",[225,856,858],{"className":227,"code":857,"language":229,"meta":230,"style":230},"// /app/plugins/string-tune.client.ts\nimport StringTune, { StringParallax, StringCursor, StringProgress } from '@fiddle-digital/string-tune';\n\nexport default defineNuxtPlugin((nuxtApp) => {\n  const stringTune = StringTune.getInstance();\n  stringTune.use(StringParallax);\n  stringTune.use(StringCursor);\n  stringTune.use(StringProgress);\n\n  nuxtApp.hook('app:mounted', () => {\n    stringTune.start(60);\n  });\n\n  return {\n    provide: {\n      stringTune,\n    },\n  };\n});\n",[60,859,860,866,879,883,910,925,935,944,953,958,978,992,998,1003,1011,1017,1023,1029,1035],{"__ignoreMap":230},[234,861,862],{"class":236,"line":237},[234,863,865],{"class":864},"sJ8bj","// /app/plugins/string-tune.client.ts\n",[234,867,868,870,873,875,877],{"class":236,"line":258},[234,869,241],{"class":240},[234,871,872],{"class":244}," StringTune, { StringParallax, StringCursor, StringProgress } ",[234,874,248],{"class":240},[234,876,252],{"class":251},[234,878,255],{"class":244},[234,880,881],{"class":236,"line":265},[234,882,262],{"emptyLinePlaceholder":261},[234,884,885,888,891,894,897,901,904,907],{"class":236,"line":288},[234,886,887],{"class":240},"export",[234,889,890],{"class":240}," default",[234,892,893],{"class":281}," defineNuxtPlugin",[234,895,896],{"class":244},"((",[234,898,900],{"class":899},"s4XuR","nuxtApp",[234,902,903],{"class":244},") ",[234,905,906],{"class":240},"=>",[234,908,909],{"class":244}," {\n",[234,911,912,915,917,919,921,923],{"class":236,"line":293},[234,913,914],{"class":240},"  const",[234,916,272],{"class":271},[234,918,275],{"class":240},[234,920,278],{"class":244},[234,922,282],{"class":281},[234,924,285],{"class":244},[234,926,927,930,932],{"class":236,"line":305},[234,928,929],{"class":244},"  stringTune.",[234,931,299],{"class":281},[234,933,934],{"class":244},"(StringParallax);\n",[234,936,937,939,941],{"class":236,"line":321},[234,938,929],{"class":244},[234,940,299],{"class":281},[234,942,943],{"class":244},"(StringCursor);\n",[234,945,947,949,951],{"class":236,"line":946},8,[234,948,929],{"class":244},[234,950,299],{"class":281},[234,952,302],{"class":244},[234,954,956],{"class":236,"line":955},9,[234,957,262],{"emptyLinePlaceholder":261},[234,959,960,963,966,968,971,974,976],{"class":236,"line":11},[234,961,962],{"class":244},"  nuxtApp.",[234,964,965],{"class":281},"hook",[234,967,329],{"class":244},[234,969,970],{"class":251},"'app:mounted'",[234,972,973],{"class":244},", () ",[234,975,906],{"class":240},[234,977,909],{"class":244},[234,979,981,984,986,988,990],{"class":236,"line":980},11,[234,982,983],{"class":244},"    stringTune.",[234,985,326],{"class":281},[234,987,329],{"class":244},[234,989,332],{"class":271},[234,991,335],{"class":244},[234,993,995],{"class":236,"line":994},12,[234,996,997],{"class":244},"  });\n",[234,999,1001],{"class":236,"line":1000},13,[234,1002,262],{"emptyLinePlaceholder":261},[234,1004,1006,1009],{"class":236,"line":1005},14,[234,1007,1008],{"class":240},"  return",[234,1010,909],{"class":244},[234,1012,1014],{"class":236,"line":1013},15,[234,1015,1016],{"class":244},"    provide: {\n",[234,1018,1020],{"class":236,"line":1019},16,[234,1021,1022],{"class":244},"      stringTune,\n",[234,1024,1026],{"class":236,"line":1025},17,[234,1027,1028],{"class":244},"    },\n",[234,1030,1032],{"class":236,"line":1031},18,[234,1033,1034],{"class":244},"  };\n",[234,1036,1038],{"class":236,"line":1037},19,[234,1039,1040],{"class":244},"});\n",[1042,1043,1044],"blockquote",{},[30,1045,1046,1047,1049],{},"The plugin runs once per browser tab. Additional ",[60,1048,299],{}," calls simply reuse the singleton.",[37,1051,1053],{"id":1052},"typing-the-injection-optional","Typing the Injection (optional)",[225,1055,1057],{"className":227,"code":1056,"language":229,"meta":230,"style":230},"// string-tune.d.ts\nimport type StringTune from '@fiddle-digital/string-tune';\n\ndeclare module '#app' {\n  interface NuxtApp {\n    $stringTune: ReturnType\u003Ctypeof StringTune.getInstance> | null;\n  }\n}\n\ndeclare module 'vue' {\n  interface ComponentCustomProperties {\n    $stringTune: ReturnType\u003Ctypeof StringTune.getInstance> | null;\n  }\n}\n\nexport {};\n",[60,1058,1059,1064,1080,1084,1097,1107,1134,1139,1144,1148,1159,1168,1188,1192,1196,1200],{"__ignoreMap":230},[234,1060,1061],{"class":236,"line":237},[234,1062,1063],{"class":864},"// string-tune.d.ts\n",[234,1065,1066,1068,1071,1074,1076,1078],{"class":236,"line":258},[234,1067,241],{"class":240},[234,1069,1070],{"class":240}," type",[234,1072,1073],{"class":244}," StringTune ",[234,1075,248],{"class":240},[234,1077,252],{"class":251},[234,1079,255],{"class":244},[234,1081,1082],{"class":236,"line":265},[234,1083,262],{"emptyLinePlaceholder":261},[234,1085,1086,1089,1092,1095],{"class":236,"line":288},[234,1087,1088],{"class":240},"declare",[234,1090,1091],{"class":240}," module",[234,1093,1094],{"class":251}," '#app'",[234,1096,909],{"class":244},[234,1098,1099,1102,1105],{"class":236,"line":293},[234,1100,1101],{"class":240},"  interface",[234,1103,1104],{"class":281}," NuxtApp",[234,1106,909],{"class":244},[234,1108,1109,1112,1115,1118,1120,1123,1126,1129,1132],{"class":236,"line":305},[234,1110,1111],{"class":899},"    $stringTune",[234,1113,1114],{"class":240},":",[234,1116,1117],{"class":281}," ReturnType",[234,1119,347],{"class":244},[234,1121,1122],{"class":240},"typeof",[234,1124,1125],{"class":244}," StringTune.getInstance> ",[234,1127,1128],{"class":240},"|",[234,1130,1131],{"class":271}," null",[234,1133,255],{"class":244},[234,1135,1136],{"class":236,"line":321},[234,1137,1138],{"class":244},"  }\n",[234,1140,1141],{"class":236,"line":946},[234,1142,1143],{"class":244},"}\n",[234,1145,1146],{"class":236,"line":955},[234,1147,262],{"emptyLinePlaceholder":261},[234,1149,1150,1152,1154,1157],{"class":236,"line":11},[234,1151,1088],{"class":240},[234,1153,1091],{"class":240},[234,1155,1156],{"class":251}," 'vue'",[234,1158,909],{"class":244},[234,1160,1161,1163,1166],{"class":236,"line":980},[234,1162,1101],{"class":240},[234,1164,1165],{"class":281}," ComponentCustomProperties",[234,1167,909],{"class":244},[234,1169,1170,1172,1174,1176,1178,1180,1182,1184,1186],{"class":236,"line":994},[234,1171,1111],{"class":899},[234,1173,1114],{"class":240},[234,1175,1117],{"class":281},[234,1177,347],{"class":244},[234,1179,1122],{"class":240},[234,1181,1125],{"class":244},[234,1183,1128],{"class":240},[234,1185,1131],{"class":271},[234,1187,255],{"class":244},[234,1189,1190],{"class":236,"line":1000},[234,1191,1138],{"class":244},[234,1193,1194],{"class":236,"line":1005},[234,1195,1143],{"class":244},[234,1197,1198],{"class":236,"line":1013},[234,1199,262],{"emptyLinePlaceholder":261},[234,1201,1202,1204],{"class":236,"line":1019},[234,1203,887],{"class":240},[234,1205,1206],{"class":244}," {};\n",[37,1208,1210],{"id":1209},"nuxt-configuration","Nuxt Configuration",[30,1212,1213],{},"Register the plugins and include any shared styling you rely on for demos.",[225,1215,1217],{"className":227,"code":1216,"language":229,"meta":230,"style":230},"export default defineNuxtConfig({\n  ...\n  build: {\n    transpile: [\"@fiddle-digital/string-tune\"],\n  },\n});\n",[60,1218,1219,1231,1236,1241,1252,1257],{"__ignoreMap":230},[234,1220,1221,1223,1225,1228],{"class":236,"line":237},[234,1222,887],{"class":240},[234,1224,890],{"class":240},[234,1226,1227],{"class":281}," defineNuxtConfig",[234,1229,1230],{"class":244},"({\n",[234,1232,1233],{"class":236,"line":258},[234,1234,1235],{"class":240},"  ...\n",[234,1237,1238],{"class":236,"line":265},[234,1239,1240],{"class":244},"  build: {\n",[234,1242,1243,1246,1249],{"class":236,"line":288},[234,1244,1245],{"class":244},"    transpile: [",[234,1247,1248],{"class":251},"\"@fiddle-digital/string-tune\"",[234,1250,1251],{"class":244},"],\n",[234,1253,1254],{"class":236,"line":293},[234,1255,1256],{"class":244},"  },\n",[234,1258,1259],{"class":236,"line":305},[234,1260,1040],{"class":244},[37,1262,1264],{"id":1263},"using-stringtune-in-components","Using StringTune in Components",[30,1266,1267,1268,1271],{},"Markup annotated with ",[60,1269,1270],{},"string=\"…\""," is picked up automatically.",[225,1273,1277],{"className":1274,"code":1275,"language":1276,"meta":230,"style":230},"language-vue shiki shiki-themes github-light github-dark","\u003Ctemplate>\n  \u003Csection class=\"hero\" string=\"progress\" string-id=\"hero-progress\">\n    \u003Ch1 class=\"hero__title\" string=\"parallax\" string-parallax=\"0.35\">Nuxt + StringTune\u003C/h1>\n    \u003Cbutton class=\"hero__cta\" string=\"cursor\" string-cursor-class=\"-cta\">Hover me\u003C/button>\n  \u003C/section>\n\u003C/template>\n\n\u003Cscript setup lang=\"ts\">\nconst { $stringTune: currentStringTune } = useNuxtApp();\nfunction handleProgress(value: number) {\n  console.log('Progress value:', value);\n}\nonMounted(() => {\n  nextTick(() => {\n    if (currentStringTune) {\n      currentStringTune.on('object:progress:hero-progress', handleProgress);\n    }\n  });\n});\nonBeforeUnmount(() => {\n  const { $stringTune: currentStringTune } = useNuxtApp();\n  if (currentStringTune) {\n    currentStringTune.off('object:progress:hero-progress', handleProgress);\n  }\n});\n\u003C/script>\n\n\u003Cstyle scoped>\n.hero {\n  min-height: 80vh;\n  display: grid;\n  place-content: center;\n  gap: 1.5rem;\n}\n\n.hero__cta {\n  justify-self: center;\n  padding: 1rem 2.5rem;\n  border: none;\n  border-radius: 999px;\n  cursor: pointer;\n  transform: translate(calc(var(--x, 0) * 1rem), calc(var(--y, 0) * 1rem));\n}\n\u003C/style>\n","vue",[60,1278,1279,1288,1317,1353,1389,1398,1407,1411,1431,1457,1478,1494,1498,1510,1521,1529,1545,1550,1554,1558,1569,1590,1598,1613,1618,1623,1632,1637,1649,1657,1672,1685,1698,1714,1719,1724,1732,1744,1764,1777,1792,1805,1876,1881],{"__ignoreMap":230},[234,1280,1281,1283,1286],{"class":236,"line":237},[234,1282,347],{"class":244},[234,1284,1285],{"class":350},"template",[234,1287,376],{"class":244},[234,1289,1290,1293,1295,1298,1300,1302,1304,1306,1308,1310,1312,1315],{"class":236,"line":258},[234,1291,1292],{"class":244},"  \u003C",[234,1294,740],{"class":350},[234,1296,1297],{"class":281}," class",[234,1299,357],{"class":244},[234,1301,368],{"class":251},[234,1303,354],{"class":281},[234,1305,357],{"class":244},[234,1307,360],{"class":251},[234,1309,363],{"class":281},[234,1311,357],{"class":244},[234,1313,1314],{"class":251},"\"hero-progress\"",[234,1316,376],{"class":244},[234,1318,1319,1322,1324,1326,1328,1331,1333,1335,1338,1341,1343,1346,1349,1351],{"class":236,"line":265},[234,1320,1321],{"class":244},"    \u003C",[234,1323,25],{"class":350},[234,1325,1297],{"class":281},[234,1327,357],{"class":244},[234,1329,1330],{"class":251},"\"hero__title\"",[234,1332,354],{"class":281},[234,1334,357],{"class":244},[234,1336,1337],{"class":251},"\"parallax\"",[234,1339,1340],{"class":281}," string-parallax",[234,1342,357],{"class":244},[234,1344,1345],{"class":251},"\"0.35\"",[234,1347,1348],{"class":244},">Nuxt + StringTune\u003C/",[234,1350,25],{"class":350},[234,1352,376],{"class":244},[234,1354,1355,1357,1360,1362,1364,1367,1369,1371,1374,1377,1379,1382,1385,1387],{"class":236,"line":288},[234,1356,1321],{"class":244},[234,1358,1359],{"class":350},"button",[234,1361,1297],{"class":281},[234,1363,357],{"class":244},[234,1365,1366],{"class":251},"\"hero__cta\"",[234,1368,354],{"class":281},[234,1370,357],{"class":244},[234,1372,1373],{"class":251},"\"cursor\"",[234,1375,1376],{"class":281}," string-cursor-class",[234,1378,357],{"class":244},[234,1380,1381],{"class":251},"\"-cta\"",[234,1383,1384],{"class":244},">Hover me\u003C/",[234,1386,1359],{"class":350},[234,1388,376],{"class":244},[234,1390,1391,1394,1396],{"class":236,"line":293},[234,1392,1393],{"class":244},"  \u003C/",[234,1395,740],{"class":350},[234,1397,376],{"class":244},[234,1399,1400,1403,1405],{"class":236,"line":305},[234,1401,1402],{"class":244},"\u003C/",[234,1404,1285],{"class":350},[234,1406,376],{"class":244},[234,1408,1409],{"class":236,"line":321},[234,1410,262],{"emptyLinePlaceholder":261},[234,1412,1413,1415,1418,1421,1424,1426,1429],{"class":236,"line":946},[234,1414,347],{"class":244},[234,1416,1417],{"class":350},"script",[234,1419,1420],{"class":281}," setup",[234,1422,1423],{"class":281}," lang",[234,1425,357],{"class":244},[234,1427,1428],{"class":251},"\"ts\"",[234,1430,376],{"class":244},[234,1432,1433,1435,1438,1441,1444,1447,1450,1452,1455],{"class":236,"line":955},[234,1434,268],{"class":240},[234,1436,1437],{"class":244}," { ",[234,1439,1440],{"class":899},"$stringTune",[234,1442,1443],{"class":244},": ",[234,1445,1446],{"class":271},"currentStringTune",[234,1448,1449],{"class":244}," } ",[234,1451,357],{"class":240},[234,1453,1454],{"class":281}," useNuxtApp",[234,1456,285],{"class":244},[234,1458,1459,1462,1465,1467,1470,1472,1475],{"class":236,"line":11},[234,1460,1461],{"class":240},"function",[234,1463,1464],{"class":281}," handleProgress",[234,1466,329],{"class":244},[234,1468,1469],{"class":899},"value",[234,1471,1114],{"class":240},[234,1473,1474],{"class":271}," number",[234,1476,1477],{"class":244},") {\n",[234,1479,1480,1483,1486,1488,1491],{"class":236,"line":980},[234,1481,1482],{"class":244},"  console.",[234,1484,1485],{"class":281},"log",[234,1487,329],{"class":244},[234,1489,1490],{"class":251},"'Progress value:'",[234,1492,1493],{"class":244},", value);\n",[234,1495,1496],{"class":236,"line":994},[234,1497,1143],{"class":244},[234,1499,1500,1503,1506,1508],{"class":236,"line":1000},[234,1501,1502],{"class":281},"onMounted",[234,1504,1505],{"class":244},"(() ",[234,1507,906],{"class":240},[234,1509,909],{"class":244},[234,1511,1512,1515,1517,1519],{"class":236,"line":1005},[234,1513,1514],{"class":281},"  nextTick",[234,1516,1505],{"class":244},[234,1518,906],{"class":240},[234,1520,909],{"class":244},[234,1522,1523,1526],{"class":236,"line":1013},[234,1524,1525],{"class":240},"    if",[234,1527,1528],{"class":244}," (currentStringTune) {\n",[234,1530,1531,1534,1537,1539,1542],{"class":236,"line":1019},[234,1532,1533],{"class":244},"      currentStringTune.",[234,1535,1536],{"class":281},"on",[234,1538,329],{"class":244},[234,1540,1541],{"class":251},"'object:progress:hero-progress'",[234,1543,1544],{"class":244},", handleProgress);\n",[234,1546,1547],{"class":236,"line":1025},[234,1548,1549],{"class":244},"    }\n",[234,1551,1552],{"class":236,"line":1031},[234,1553,997],{"class":244},[234,1555,1556],{"class":236,"line":1037},[234,1557,1040],{"class":244},[234,1559,1560,1563,1565,1567],{"class":236,"line":427},[234,1561,1562],{"class":281},"onBeforeUnmount",[234,1564,1505],{"class":244},[234,1566,906],{"class":240},[234,1568,909],{"class":244},[234,1570,1572,1574,1576,1578,1580,1582,1584,1586,1588],{"class":236,"line":1571},21,[234,1573,914],{"class":240},[234,1575,1437],{"class":244},[234,1577,1440],{"class":899},[234,1579,1443],{"class":244},[234,1581,1446],{"class":271},[234,1583,1449],{"class":244},[234,1585,357],{"class":240},[234,1587,1454],{"class":281},[234,1589,285],{"class":244},[234,1591,1593,1596],{"class":236,"line":1592},22,[234,1594,1595],{"class":240},"  if",[234,1597,1528],{"class":244},[234,1599,1601,1604,1607,1609,1611],{"class":236,"line":1600},23,[234,1602,1603],{"class":244},"    currentStringTune.",[234,1605,1606],{"class":281},"off",[234,1608,329],{"class":244},[234,1610,1541],{"class":251},[234,1612,1544],{"class":244},[234,1614,1616],{"class":236,"line":1615},24,[234,1617,1138],{"class":244},[234,1619,1621],{"class":236,"line":1620},25,[234,1622,1040],{"class":244},[234,1624,1626,1628,1630],{"class":236,"line":1625},26,[234,1627,1402],{"class":244},[234,1629,1417],{"class":350},[234,1631,376],{"class":244},[234,1633,1635],{"class":236,"line":1634},27,[234,1636,262],{"emptyLinePlaceholder":261},[234,1638,1640,1642,1644,1647],{"class":236,"line":1639},28,[234,1641,347],{"class":244},[234,1643,410],{"class":350},[234,1645,1646],{"class":281}," scoped",[234,1648,376],{"class":244},[234,1650,1652,1655],{"class":236,"line":1651},29,[234,1653,1654],{"class":281},".hero",[234,1656,909],{"class":244},[234,1658,1659,1662,1664,1667,1670],{"class":236,"line":609},[234,1660,1661],{"class":271},"  min-height",[234,1663,1443],{"class":244},[234,1665,1666],{"class":271},"80",[234,1668,1669],{"class":240},"vh",[234,1671,255],{"class":244},[234,1673,1675,1678,1680,1683],{"class":236,"line":1674},31,[234,1676,1677],{"class":271},"  display",[234,1679,1443],{"class":244},[234,1681,1682],{"class":271},"grid",[234,1684,255],{"class":244},[234,1686,1688,1691,1693,1696],{"class":236,"line":1687},32,[234,1689,1690],{"class":271},"  place-content",[234,1692,1443],{"class":244},[234,1694,1695],{"class":271},"center",[234,1697,255],{"class":244},[234,1699,1701,1704,1706,1709,1712],{"class":236,"line":1700},33,[234,1702,1703],{"class":271},"  gap",[234,1705,1443],{"class":244},[234,1707,1708],{"class":271},"1.5",[234,1710,1711],{"class":240},"rem",[234,1713,255],{"class":244},[234,1715,1717],{"class":236,"line":1716},34,[234,1718,1143],{"class":244},[234,1720,1722],{"class":236,"line":1721},35,[234,1723,262],{"emptyLinePlaceholder":261},[234,1725,1727,1730],{"class":236,"line":1726},36,[234,1728,1729],{"class":281},".hero__cta",[234,1731,909],{"class":244},[234,1733,1735,1738,1740,1742],{"class":236,"line":1734},37,[234,1736,1737],{"class":271},"  justify-self",[234,1739,1443],{"class":244},[234,1741,1695],{"class":271},[234,1743,255],{"class":244},[234,1745,1747,1750,1752,1755,1757,1760,1762],{"class":236,"line":1746},38,[234,1748,1749],{"class":271},"  padding",[234,1751,1443],{"class":244},[234,1753,1754],{"class":271},"1",[234,1756,1711],{"class":240},[234,1758,1759],{"class":271}," 2.5",[234,1761,1711],{"class":240},[234,1763,255],{"class":244},[234,1765,1767,1770,1772,1775],{"class":236,"line":1766},39,[234,1768,1769],{"class":271},"  border",[234,1771,1443],{"class":244},[234,1773,1774],{"class":271},"none",[234,1776,255],{"class":244},[234,1778,1779,1782,1784,1787,1790],{"class":236,"line":819},[234,1780,1781],{"class":271},"  border-radius",[234,1783,1443],{"class":244},[234,1785,1786],{"class":271},"999",[234,1788,1789],{"class":240},"px",[234,1791,255],{"class":244},[234,1793,1795,1798,1800,1803],{"class":236,"line":1794},41,[234,1796,1797],{"class":271},"  cursor",[234,1799,1443],{"class":244},[234,1801,1802],{"class":271},"pointer",[234,1804,255],{"class":244},[234,1806,1808,1811,1813,1816,1818,1821,1823,1826,1828,1831,1834,1837,1839,1842,1845,1847,1850,1852,1854,1856,1858,1861,1863,1865,1867,1869,1871,1873],{"class":236,"line":1807},42,[234,1809,1810],{"class":271},"  transform",[234,1812,1443],{"class":244},[234,1814,1815],{"class":271},"translate",[234,1817,329],{"class":244},[234,1819,1820],{"class":271},"calc",[234,1822,329],{"class":244},[234,1824,1825],{"class":271},"var",[234,1827,329],{"class":244},[234,1829,1830],{"class":899},"--x",[234,1832,1833],{"class":244},", ",[234,1835,1836],{"class":271},"0",[234,1838,903],{"class":244},[234,1840,1841],{"class":240},"*",[234,1843,1844],{"class":271}," 1",[234,1846,1711],{"class":240},[234,1848,1849],{"class":244},"), ",[234,1851,1820],{"class":271},[234,1853,329],{"class":244},[234,1855,1825],{"class":271},[234,1857,329],{"class":244},[234,1859,1860],{"class":899},"--y",[234,1862,1833],{"class":244},[234,1864,1836],{"class":271},[234,1866,903],{"class":244},[234,1868,1841],{"class":240},[234,1870,1844],{"class":271},[234,1872,1711],{"class":240},[234,1874,1875],{"class":244},"));\n",[234,1877,1879],{"class":236,"line":1878},43,[234,1880,1143],{"class":244},[234,1882,1884,1886,1888],{"class":236,"line":1883},44,[234,1885,1402],{"class":244},[234,1887,410],{"class":350},[234,1889,376],{"class":244},[1891,1892],"hr",{},[30,1894,1895],{},"With this structure you get a predictable, typed, and Nuxt-friendly StringTune setup that mirrors the rest of the documentation.",[410,1897,1898],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":230,"searchDepth":258,"depth":258,"links":1900},[1901,1902,1903,1904,1905],{"id":441,"depth":258,"text":136},{"id":850,"depth":258,"text":851},{"id":1052,"depth":258,"text":1053},{"id":1209,"depth":258,"text":1210},{"id":1263,"depth":258,"text":1264},{"path":436,"title":591,"description":1907,"kind":9,"section":10,"order":1908,"group":-1,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":1909,"attrs":1911,"events":1912,"cssVars":1913,"related":1914,"body":1915},"How to integrate StringTune in a Next.js app with client-only setup and lifecycle safety.",50,[1910],"Next.js",[],[],[],[135,19,435],{"type":22,"value":1916,"toc":2290},[1917,1921,1925,1944,1951,1959,1989,2004,2035,2051,2053,2057,2067,2072,2200,2202,2204,2214,2216,2220,2287],[25,1918,1920],{"id":1919},"using-with-react-nextjs","Using with React / Next.js",[174,1922,1924],{"id":1923},"react-restriction-on-custom-attributes","React Restriction on Custom Attributes",[30,1926,1927,1928,1939,1940,1943],{},"React (including Next.js) ",[1929,1930,1931,1932,1934,1935,1938],"strong",{},"does not allow custom attributes like ",[60,1933,112],{}," or ",[60,1936,1937],{},"string-id=\"...\""," on DOM elements"," unless they are prefixed with ",[60,1941,1942],{},"data-",". Attempting to use such attributes will result in a warning or stripped attributes in the final HTML.",[30,1945,1946,1947,1950],{},"To ensure full compatibility, ",[60,1948,1949],{},"string-tune"," automatically supports both formats:",[42,1952,1953],{},[45,1954,1955,1958],{},[1929,1956,1957],{},"Standard usage"," (e.g., in plain HTML / Vue / Nuxt):",[225,1960,1962],{"className":338,"code":1961,"language":340,"meta":230,"style":230},"\u003Cdiv string=\"progress\" string-id=\"intro-1\">\u003C/div>\n",[60,1963,1964],{"__ignoreMap":230},[234,1965,1966,1968,1970,1972,1974,1976,1978,1980,1983,1985,1987],{"class":236,"line":237},[234,1967,347],{"class":244},[234,1969,351],{"class":350},[234,1971,354],{"class":281},[234,1973,357],{"class":244},[234,1975,360],{"class":251},[234,1977,363],{"class":281},[234,1979,357],{"class":244},[234,1981,1982],{"class":251},"\"intro-1\"",[234,1984,371],{"class":244},[234,1986,351],{"class":350},[234,1988,376],{"class":244},[42,1990,1991],{},[45,1992,1993,1996,1997,1833,2000,2003],{},[1929,1994,1995],{},"React / Next.js-compatible syntax"," (use ",[60,1998,1999],{},"data-string",[60,2001,2002],{},"data-string-id","):",[225,2005,2007],{"className":338,"code":2006,"language":340,"meta":230,"style":230},"\u003Cdiv data-string=\"progress\" data-string-id=\"intro-1\">\u003C/div>\n",[60,2008,2009],{"__ignoreMap":230},[234,2010,2011,2013,2015,2018,2020,2022,2025,2027,2029,2031,2033],{"class":236,"line":237},[234,2012,347],{"class":244},[234,2014,351],{"class":350},[234,2016,2017],{"class":281}," data-string",[234,2019,357],{"class":244},[234,2021,360],{"class":251},[234,2023,2024],{"class":281}," data-string-id",[234,2026,357],{"class":244},[234,2028,1982],{"class":251},[234,2030,371],{"class":244},[234,2032,351],{"class":350},[234,2034,376],{"class":244},[1042,2036,2037],{},[30,2038,2039,2040,2043,2044,2047,2048,106],{},"Internally, the library first checks for ",[60,2041,2042],{},"string-*"," attributes.",[2045,2046],"br",{},"\nIf they are not found, it falls back to checking ",[60,2049,2050],{},"data-string-*",[1891,2052],{},[174,2054,2056],{"id":2055},"using-in-nextjs-components","Using in Next.js Components",[30,2058,2059,2060,2062,2063,2066],{},"Since ",[60,2061,1949],{}," works with the DOM directly, ",[1929,2064,2065],{},"you must use it in a client-side component",". This ensures the DOM is available for initialization and module mounting.",[2068,2069,2071],"h4",{"id":2070},"example","Example:",[225,2073,2077],{"className":2074,"code":2075,"language":2076,"meta":230,"style":230},"language-typescript shiki shiki-themes github-light github-dark","'use client';\n\nimport { useEffect } from 'react';\nimport StringTune from '@fiddle-digital/string-tune';\n\nexport default function StringTuneInit() {\n  useEffect(() => {\n    const instance = StringTune.getInstance();\n    instance.start(60); // or your preferred FPS\n  }, []);\n\n  return null;\n}\n","typescript",[60,2078,2079,2086,2090,2104,2116,2120,2135,2146,2162,2179,2184,2188,2196],{"__ignoreMap":230},[234,2080,2081,2084],{"class":236,"line":237},[234,2082,2083],{"class":251},"'use client'",[234,2085,255],{"class":244},[234,2087,2088],{"class":236,"line":258},[234,2089,262],{"emptyLinePlaceholder":261},[234,2091,2092,2094,2097,2099,2102],{"class":236,"line":265},[234,2093,241],{"class":240},[234,2095,2096],{"class":244}," { useEffect } ",[234,2098,248],{"class":240},[234,2100,2101],{"class":251}," 'react'",[234,2103,255],{"class":244},[234,2105,2106,2108,2110,2112,2114],{"class":236,"line":288},[234,2107,241],{"class":240},[234,2109,1073],{"class":244},[234,2111,248],{"class":240},[234,2113,252],{"class":251},[234,2115,255],{"class":244},[234,2117,2118],{"class":236,"line":293},[234,2119,262],{"emptyLinePlaceholder":261},[234,2121,2122,2124,2126,2129,2132],{"class":236,"line":305},[234,2123,887],{"class":240},[234,2125,890],{"class":240},[234,2127,2128],{"class":240}," function",[234,2130,2131],{"class":281}," StringTuneInit",[234,2133,2134],{"class":244},"() {\n",[234,2136,2137,2140,2142,2144],{"class":236,"line":321},[234,2138,2139],{"class":281},"  useEffect",[234,2141,1505],{"class":244},[234,2143,906],{"class":240},[234,2145,909],{"class":244},[234,2147,2148,2151,2154,2156,2158,2160],{"class":236,"line":946},[234,2149,2150],{"class":240},"    const",[234,2152,2153],{"class":271}," instance",[234,2155,275],{"class":240},[234,2157,278],{"class":244},[234,2159,282],{"class":281},[234,2161,285],{"class":244},[234,2163,2164,2167,2169,2171,2173,2176],{"class":236,"line":955},[234,2165,2166],{"class":244},"    instance.",[234,2168,326],{"class":281},[234,2170,329],{"class":244},[234,2172,332],{"class":271},[234,2174,2175],{"class":244},"); ",[234,2177,2178],{"class":864},"// or your preferred FPS\n",[234,2180,2181],{"class":236,"line":11},[234,2182,2183],{"class":244},"  }, []);\n",[234,2185,2186],{"class":236,"line":980},[234,2187,262],{"emptyLinePlaceholder":261},[234,2189,2190,2192,2194],{"class":236,"line":994},[234,2191,1008],{"class":240},[234,2193,1131],{"class":271},[234,2195,255],{"class":244},[234,2197,2198],{"class":236,"line":1000},[234,2199,1143],{"class":244},[1891,2201],{},[174,2203,136],{"id":441},[225,2205,2208],{"className":2206,"code":449,"language":2207,"meta":230,"style":230},"language-sh shiki shiki-themes github-light github-dark","sh",[60,2209,2210],{"__ignoreMap":230},[234,2211,2212],{"class":236,"line":237},[234,2213,449],{},[1891,2215],{},[174,2217,2219],{"id":2218},"summary","Summary",[2221,2222,2223,2239],"table",{},[2224,2225,2226],"thead",{},[2227,2228,2229,2233,2236],"tr",{},[2230,2231,2232],"th",{},"Framework",[2230,2234,2235],{},"Attribute syntax",[2230,2237,2238],{},"Notes",[2240,2241,2242,2258,2272],"tbody",{},[2227,2243,2244,2248,2255],{},[2245,2246,2247],"td",{},"Vue / Nuxt",[2245,2249,2250,1833,2253],{},[60,2251,2252],{},"string",[60,2254,764],{},[2245,2256,2257],{},"Native support",[2227,2259,2260,2263,2269],{},[2245,2261,2262],{},"React / Next.js",[2245,2264,2265,1833,2267],{},[60,2266,1999],{},[60,2268,2002],{},[2245,2270,2271],{},"Required for compatibility",[2227,2273,2274,2277,2280],{},[2245,2275,2276],{},"All",[2245,2278,2279],{},"Works only on the client",[2245,2281,163,2282,1934,2285],{},[60,2283,2284],{},"useEffect",[60,2286,1502],{},[410,2288,2289],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":230,"searchDepth":258,"depth":258,"links":2291},[2292,2293,2294,2295],{"id":1923,"depth":265,"text":1924},{"id":2055,"depth":265,"text":2056},{"id":441,"depth":265,"text":136},{"id":2218,"depth":265,"text":2219},{"path":2297,"title":2298,"description":2299,"kind":9,"section":10,"order":2300,"group":-1,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":2301,"attrs":2302,"events":2303,"cssVars":2304,"related":2305,"body":2306},"/docs/recipes/overview","Recipes","Short task-based patterns for supported StringTune integrations.",999,[],[],[],[],[],{"type":22,"value":2307,"toc":2336},[2308,2311,2314,2317,2333],[25,2309,2298],{"id":2310},"recipes",[30,2312,2313],{},"Recipes are intentionally short.",[30,2315,2316],{},"They should answer questions like:",[42,2318,2319,2324,2327,2330],{},[45,2320,2321,2322],{},"how to drive CSS from ",[60,2323,190],{},[45,2325,2326],{},"how to register a global module safely in an SSR app",[45,2328,2329],{},"how to split one progress source into staged segments",[45,2331,2332],{},"how to consume object-scoped events without touching private runtime internals",[30,2334,2335],{},"This section is the right place for integration patterns. Deep API truth still belongs in reference pages.",{"title":230,"searchDepth":258,"depth":258,"links":2337},[],{"path":20,"title":2339,"description":2340,"kind":2341,"section":151,"order":11,"group":2342,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":2343,"attrs":2346,"events":2347,"cssVars":2348,"related":2349,"body":2351},"Built-in vs Custom vs Internal","Clarifies the boundary between official package modules, project-specific modules, and internal runtime classes.","concept","Core Concepts",[2344,2345],"core vs custom","internal runtime",[],[],[],[6,158,2350],"/docs/custom-modules/overview",{"type":22,"value":2352,"toc":2443},[2353,2356,2360,2363,2365,2390,2393,2397,2400,2403,2406,2410,2413,2416,2420,2423,2440],[25,2354,2339],{"id":2355},"built-in-vs-custom-vs-internal",[37,2357,2359],{"id":2358},"built-in","Built-in",[30,2361,2362],{},"Built-in modules and utilities are official package exports.",[30,2364,183],{},[42,2366,2367,2371,2375,2380,2385],{},[45,2368,2369],{},[60,2370,190],{},[45,2372,2373],{},[60,2374,200],{},[45,2376,2377],{},[60,2378,2379],{},"StringModule",[45,2381,2382],{},[60,2383,2384],{},"ScrollController",[45,2386,2387],{},[60,2388,2389],{},"frameDOM",[30,2391,2392],{},"If it is exported from the package, it belongs to the supported public surface.",[37,2394,2396],{"id":2395},"custom","Custom",[30,2398,2399],{},"Custom modules are modules written on top of StringTune for a specific project or team.",[30,2401,2402],{},"They can depend on built-in concepts, but they are not part of the official package contract unless they are exported by the package.",[30,2404,2405],{},"That is why this docs site keeps them in a separate section.",[37,2407,2409],{"id":2408},"internal","Internal",[30,2411,2412],{},"Internal runtime classes exist to make the package work, but they are not meant to be consumed directly.",[30,2414,2415],{},"Examples include managers, caches, internal observers, and private fields on the singleton runtime.",[37,2417,2419],{"id":2418},"documentation-rule","Documentation rule",[30,2421,2422],{},"This docs site documents:",[42,2424,2425,2428,2431,2434,2437],{},[45,2426,2427],{},"public exports",[45,2429,2430],{},"supported attributes",[45,2432,2433],{},"supported events",[45,2435,2436],{},"supported CSS variables",[45,2438,2439],{},"supported integration patterns",[30,2441,2442],{},"This docs site does not document private access tricks as if they were stable API.",{"title":230,"searchDepth":258,"depth":258,"links":2444},[2445,2446,2447,2448],{"id":2358,"depth":258,"text":2359},{"id":2395,"depth":258,"text":2396},{"id":2408,"depth":258,"text":2409},{"id":2418,"depth":258,"text":2419},{"path":146,"title":147,"description":2450,"kind":2341,"section":151,"order":427,"group":2342,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":2451,"attrs":2456,"events":2460,"cssVars":2461,"related":2462,"body":2466},"Global settings, runtime properties, common attributes, and what is actually part of the public API.",[2452,2453,2454,2455],"settings","setupSettings","scrollTo","invalidateCenter",[2252,764,2457,2458,2459],"string-copy-from","string-fixed","string-self-disable",[],[],[2463,2464,2465],"/docs/api/settings","/docs/api/attributes","/docs/object-ids",{"type":22,"value":2467,"toc":2874},[2468,2471,2475,2481,2544,2548,2554,2557,2688,2707,2721,2727,2730,2748,2764,2770,2776,2794,2797,2801,2804,2815,2821,2826,2830,2833,2847,2851,2871],[25,2469,147],{"id":2470},"configuration",[37,2472,2474],{"id":2473},"global-setup","Global setup",[30,2476,163,2477,2480],{},[60,2478,2479],{},"setupSettings()"," for runtime-wide defaults:",[225,2482,2484],{"className":227,"code":2483,"language":229,"meta":230,"style":230},"stringTune.setupSettings({\n  'offset-top': '-10%',\n  'offset-bottom': '-10%',\n  'cursor-lerp': 0.75,\n  timeout: 900,\n});\n",[60,2485,2486,2494,2507,2518,2530,2540],{"__ignoreMap":230},[234,2487,2488,2490,2492],{"class":236,"line":237},[234,2489,296],{"class":244},[234,2491,2453],{"class":281},[234,2493,1230],{"class":244},[234,2495,2496,2499,2501,2504],{"class":236,"line":258},[234,2497,2498],{"class":251},"  'offset-top'",[234,2500,1443],{"class":244},[234,2502,2503],{"class":251},"'-10%'",[234,2505,2506],{"class":244},",\n",[234,2508,2509,2512,2514,2516],{"class":236,"line":265},[234,2510,2511],{"class":251},"  'offset-bottom'",[234,2513,1443],{"class":244},[234,2515,2503],{"class":251},[234,2517,2506],{"class":244},[234,2519,2520,2523,2525,2528],{"class":236,"line":288},[234,2521,2522],{"class":251},"  'cursor-lerp'",[234,2524,1443],{"class":244},[234,2526,2527],{"class":271},"0.75",[234,2529,2506],{"class":244},[234,2531,2532,2535,2538],{"class":236,"line":293},[234,2533,2534],{"class":244},"  timeout: ",[234,2536,2537],{"class":271},"900",[234,2539,2506],{"class":244},[234,2541,2542],{"class":236,"line":305},[234,2543,1040],{"class":244},[37,2545,2547],{"id":2546},"supported-helpers","Supported helpers",[174,2549,2551],{"id":2550},"scrollto",[60,2552,2553],{},"scrollTo(...)",[30,2555,2556],{},"Supported public API:",[225,2558,2560],{"className":227,"code":2559,"language":229,"meta":230,"style":230},"stringTune.scrollTo(640);\nstringTune.scrollTo('#pricing');\nstringTune.scrollTo(pricingElement);\n\nstringTune.scrollTo({ position: 640 });\nstringTune.scrollTo({ position: 640, immediate: true });\nstringTune.scrollTo({ position: 640, offset: -80 });\n\nstringTune.scrollTo({ selector: '#pricing', offset: -80 });\nstringTune.scrollTo({ element: pricingElement, immediate: true });\n",[60,2561,2562,2575,2588,2597,2601,2614,2632,2652,2656,2675],{"__ignoreMap":230},[234,2563,2564,2566,2568,2570,2573],{"class":236,"line":237},[234,2565,296],{"class":244},[234,2567,2454],{"class":281},[234,2569,329],{"class":244},[234,2571,2572],{"class":271},"640",[234,2574,335],{"class":244},[234,2576,2577,2579,2581,2583,2586],{"class":236,"line":258},[234,2578,296],{"class":244},[234,2580,2454],{"class":281},[234,2582,329],{"class":244},[234,2584,2585],{"class":251},"'#pricing'",[234,2587,335],{"class":244},[234,2589,2590,2592,2594],{"class":236,"line":265},[234,2591,296],{"class":244},[234,2593,2454],{"class":281},[234,2595,2596],{"class":244},"(pricingElement);\n",[234,2598,2599],{"class":236,"line":288},[234,2600,262],{"emptyLinePlaceholder":261},[234,2602,2603,2605,2607,2610,2612],{"class":236,"line":293},[234,2604,296],{"class":244},[234,2606,2454],{"class":281},[234,2608,2609],{"class":244},"({ position: ",[234,2611,2572],{"class":271},[234,2613,318],{"class":244},[234,2615,2616,2618,2620,2622,2624,2627,2630],{"class":236,"line":305},[234,2617,296],{"class":244},[234,2619,2454],{"class":281},[234,2621,2609],{"class":244},[234,2623,2572],{"class":271},[234,2625,2626],{"class":244},", immediate: ",[234,2628,2629],{"class":271},"true",[234,2631,318],{"class":244},[234,2633,2634,2636,2638,2640,2642,2645,2648,2650],{"class":236,"line":321},[234,2635,296],{"class":244},[234,2637,2454],{"class":281},[234,2639,2609],{"class":244},[234,2641,2572],{"class":271},[234,2643,2644],{"class":244},", offset: ",[234,2646,2647],{"class":240},"-",[234,2649,1666],{"class":271},[234,2651,318],{"class":244},[234,2653,2654],{"class":236,"line":946},[234,2655,262],{"emptyLinePlaceholder":261},[234,2657,2658,2660,2662,2665,2667,2669,2671,2673],{"class":236,"line":955},[234,2659,296],{"class":244},[234,2661,2454],{"class":281},[234,2663,2664],{"class":244},"({ selector: ",[234,2666,2585],{"class":251},[234,2668,2644],{"class":244},[234,2670,2647],{"class":240},[234,2672,1666],{"class":271},[234,2674,318],{"class":244},[234,2676,2677,2679,2681,2684,2686],{"class":236,"line":11},[234,2678,296],{"class":244},[234,2680,2454],{"class":281},[234,2682,2683],{"class":244},"({ element: pricingElement, immediate: ",[234,2685,2629],{"class":271},[234,2687,318],{"class":244},[30,2689,2690,2692,2693,2696,2697,1833,2700,2703,2704,106],{},[60,2691,2454],{}," accepts a numeric position, a CSS selector, an ",[60,2694,2695],{},"HTMLElement",", or an object with ",[60,2698,2699],{},"position",[60,2701,2702],{},"selector",", or ",[60,2705,2706],{},"element",[30,2708,2709,2712,2713,2716,2717,2720],{},[60,2710,2711],{},"immediate"," defaults to ",[60,2714,2715],{},"false",". ",[60,2718,2719],{},"offset"," is added to the resolved position and is supported on object forms only. If a selector or element cannot be resolved, the call exits without throwing.",[174,2722,2724],{"id":2723},"invalidatecenterid",[60,2725,2726],{},"invalidateCenter(id)",[30,2728,2729],{},"Invalidates the cached center for a specific object by its id. Use this after a programmatic DOM change that shifts one element's position.",[225,2731,2733],{"className":227,"code":2732,"language":229,"meta":230,"style":230},"stringTune.invalidateCenter('my-element-id');\n",[60,2734,2735],{"__ignoreMap":230},[234,2736,2737,2739,2741,2743,2746],{"class":236,"line":237},[234,2738,296],{"class":244},[234,2740,2455],{"class":281},[234,2742,329],{"class":244},[234,2744,2745],{"class":251},"'my-element-id'",[234,2747,335],{"class":244},[1042,2749,2750],{},[30,2751,2752,2755,2756,2759,2760,2763],{},[1929,2753,2754],{},"Note:"," The older ",[60,2757,2758],{},"invalidateCenters()"," method (no argument, invalidating all at once) was removed in v1.1.51. If you need to recompute layout for all elements after a bulk DOM change, use ",[60,2761,2762],{},"onResize(true)"," instead — it rebuilds the full runtime state including all cached positions.",[174,2765,2767],{"id":2766},"onresizeforce",[60,2768,2769],{},"onResize(force?)",[30,2771,2772,2773,2775],{},"Forces a full layout rebuild. Pass ",[60,2774,2629],{}," to bypass the internal change-detection checks and guarantee a complete recomputation.",[225,2777,2779],{"className":227,"code":2778,"language":229,"meta":230,"style":230},"stringTune.onResize(true);\n",[60,2780,2781],{"__ignoreMap":230},[234,2782,2783,2785,2788,2790,2792],{"class":236,"line":237},[234,2784,296],{"class":244},[234,2786,2787],{"class":281},"onResize",[234,2789,329],{"class":244},[234,2791,2629],{"class":271},[234,2793,335],{"class":244},[30,2795,2796],{},"Use this after bulk DOM mutations (content injected, elements rearranged) where simply scrolling or resizing the window would not naturally trigger a rebuild.",[37,2798,2800],{"id":2799},"not-supported-as-public-api","Not supported as public API",[30,2802,2803],{},"The following helpers should not appear in the docs as official API because they are not part of the current public surface:",[42,2805,2806,2811],{},[45,2807,2808],{},[60,2809,2810],{},"scrollToElement()",[45,2812,2813],{},[60,2814,2758],{},[37,2816,2818],{"id":2817},"scrollposition",[60,2819,2820],{},"scrollPosition",[30,2822,2823,2825],{},[60,2824,2820],{}," is an immediate setter. It updates runtime scroll state directly and should not be described as a built-in animated transition helper.",[37,2827,2829],{"id":2828},"common-attributes","Common attributes",[30,2831,2832],{},"Shared attributes include:",[42,2834,2835,2839,2843],{},[45,2836,2837],{},[60,2838,2252],{},[45,2840,2841],{},[60,2842,764],{},[45,2844,2845],{},[60,2846,2457],{},[37,2848,2850],{"id":2849},"notes-on-legacy-or-misleading-attributes","Notes on legacy or misleading attributes",[42,2852,2853,2859,2865],{},[45,2854,2855,2858],{},[60,2856,2857],{},"self-disable"," should be described narrowly as suppressing style writes on the primary element, not as a full module shutdown.",[45,2860,2861,2864],{},[60,2862,2863],{},"fixed"," should not be documented as a generic lock-in-place behavior.",[45,2866,2867,2870],{},[60,2868,2869],{},"abs"," should not be described as a guaranteed supported integration feature without confirmed runtime effect.",[410,2872,2873],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":230,"searchDepth":258,"depth":258,"links":2875},[2876,2877,2882,2883,2884,2885],{"id":2473,"depth":258,"text":2474},{"id":2546,"depth":258,"text":2547,"children":2878},[2879,2880,2881],{"id":2550,"depth":265,"text":2553},{"id":2723,"depth":265,"text":2726},{"id":2766,"depth":265,"text":2769},{"id":2799,"depth":258,"text":2800},{"id":2817,"depth":258,"text":2820},{"id":2828,"depth":258,"text":2829},{"id":2849,"depth":258,"text":2850},{"path":2465,"title":2887,"description":2888,"kind":2341,"section":151,"order":609,"group":2342,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":2889,"attrs":2892,"events":2893,"cssVars":2895,"related":2896,"body":2900},"Object IDs","How object identity works, how events are scoped by id, and which id-driven patterns are supported.",[764,2890,2891],"object:progress","object:parallax",[],[799,2894],"object:parallax:\u003Cid>",[],[2897,2898,2899],"/docs/event-system","/docs/element-mirroring","/docs/api/events",{"type":22,"value":2901,"toc":3046},[2902,2905,2912,2917,2927,2930,2958,2998,3002,3013,3017,3023,3030,3034,3043],[25,2903,2887],{"id":2904},"object-ids",[37,2906,2908,2909,2911],{"id":2907},"why-string-id-exists","Why ",[60,2910,764],{}," exists",[30,2913,2914,2916],{},[60,2915,764],{}," gives an object a stable name for:",[42,2918,2919,2921,2924],{},[45,2920,780],{},[45,2922,2923],{},"center invalidation",[45,2925,2926],{},"cross-object coordination patterns",[37,2928,2929],{"id":2070},"Example",[225,2931,2932],{"className":338,"code":731,"language":340,"meta":230,"style":230},[60,2933,2934],{"__ignoreMap":230},[234,2935,2936,2938,2940,2942,2944,2946,2948,2950,2952,2954,2956],{"class":236,"line":237},[234,2937,347],{"class":244},[234,2939,740],{"class":350},[234,2941,354],{"class":281},[234,2943,357],{"class":244},[234,2945,360],{"class":251},[234,2947,363],{"class":281},[234,2949,357],{"class":244},[234,2951,368],{"class":251},[234,2953,371],{"class":244},[234,2955,740],{"class":350},[234,2957,376],{"class":244},[225,2959,2961],{"className":227,"code":2960,"language":229,"meta":230,"style":230},"stringTune.on('object:progress:hero', (value) => {\n  console.log(value);\n});\n",[60,2962,2963,2985,2994],{"__ignoreMap":230},[234,2964,2965,2967,2969,2971,2974,2977,2979,2981,2983],{"class":236,"line":237},[234,2966,296],{"class":244},[234,2968,1536],{"class":281},[234,2970,329],{"class":244},[234,2972,2973],{"class":251},"'object:progress:hero'",[234,2975,2976],{"class":244},", (",[234,2978,1469],{"class":899},[234,2980,903],{"class":244},[234,2982,906],{"class":240},[234,2984,909],{"class":244},[234,2986,2987,2989,2991],{"class":236,"line":258},[234,2988,1482],{"class":244},[234,2990,1485],{"class":281},[234,2992,2993],{"class":244},"(value);\n",[234,2995,2996],{"class":236,"line":265},[234,2997,1040],{"class":244},[37,2999,3001],{"id":3000},"important-payload-note","Important payload note",[42,3003,3004,3009],{},[45,3005,3006,3008],{},[60,3007,799],{}," emits a number",[45,3010,3011,3008],{},[60,3012,2894],{},[37,3014,3016],{"id":3015},"public-api-boundary","Public API boundary",[30,3018,3019,3020,3022],{},"If you need to target an object id from the public instance, use supported helpers such as ",[60,3021,2726],{}," and supported event channels.",[30,3024,3025,3026,3029],{},"Do not document private access like ",[60,3027,3028],{},"stringTune['objectManager']"," as if it were stable API.",[37,3031,3033],{"id":3032},"attribute-removal","Attribute removal",[30,3035,3036,3037,1934,3039,3042],{},"Current runtime behavior should not be documented as if removing ",[60,3038,2252],{},[60,3040,3041],{},"string-inited"," from an existing node were a guaranteed public detachment mechanism.",[410,3044,3045],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":230,"searchDepth":258,"depth":258,"links":3047},[3048,3050,3051,3052,3053],{"id":2907,"depth":258,"text":3049},"Why string-id exists",{"id":2070,"depth":258,"text":2929},{"id":3000,"depth":258,"text":3001},{"id":3015,"depth":258,"text":3016},{"id":3032,"depth":258,"text":3033},{"path":2898,"title":3055,"description":3056,"kind":2341,"section":151,"order":1721,"group":3057,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":3058,"attrs":3059,"events":3060,"cssVars":3061,"related":3062,"body":3063},"Element Mirroring","Link elements to share state and tracking progress using string-copy-from.","Advanced Concepts",[2457],[2457],[],[],[2465,2464,617],{"type":22,"value":3064,"toc":3253},[3065,3069,3072,3078,3082,3102,3206,3210,3213,3224,3228,3250],[25,3066,3068],{"id":3067},"element-mirroring-copy-from","Element Mirroring (Copy-From)",[30,3070,3071],{},"In complex interfaces, you sometimes need an element to reflect the exact state of another StringTune object, even if they share no parent-child relationship in the DOM.",[30,3073,3074,3075,3077],{},"StringTune provides the ",[60,3076,2457],{}," attribute to establish a direct mirroring link between two objects.",[37,3079,3081],{"id":3080},"how-it-works","How It Works",[99,3083,3084,3092],{},[45,3085,3086,3089,3090,106],{},[1929,3087,3088],{},"Source Element",": Define a standard StringTune object with a ",[60,3091,764],{},[45,3093,3094,3097,3098,3101],{},[1929,3095,3096],{},"Mirror Element",": Use ",[60,3099,3100],{},"string-copy-from=\"[source-id]\""," on the element that should receive the updates.",[225,3103,3105],{"className":338,"code":3104,"language":340,"meta":230,"style":230},"\u003C!-- Source Element -->\n\u003Csection string=\"progress\" string-id=\"main-hero\" string-offset-top=\"10%\" string-offset-bottom=\"-10%\">\n  \u003C!-- content -->\n\u003C/section>\n\n\u003C!-- Mirror Element (e.g., in a fixed header) -->\n\u003Cdiv string-copy-from=\"main-hero\" class=\"hero-indicator\">\n  \u003C!-- This dot/bar will update based on the main-hero's progress -->\n\u003C/div>\n",[60,3106,3107,3112,3149,3154,3162,3166,3171,3193,3198],{"__ignoreMap":230},[234,3108,3109],{"class":236,"line":237},[234,3110,3111],{"class":864},"\u003C!-- Source Element -->\n",[234,3113,3114,3116,3118,3120,3122,3124,3126,3128,3131,3134,3136,3139,3142,3144,3147],{"class":236,"line":258},[234,3115,347],{"class":244},[234,3117,740],{"class":350},[234,3119,354],{"class":281},[234,3121,357],{"class":244},[234,3123,360],{"class":251},[234,3125,363],{"class":281},[234,3127,357],{"class":244},[234,3129,3130],{"class":251},"\"main-hero\"",[234,3132,3133],{"class":281}," string-offset-top",[234,3135,357],{"class":244},[234,3137,3138],{"class":251},"\"10%\"",[234,3140,3141],{"class":281}," string-offset-bottom",[234,3143,357],{"class":244},[234,3145,3146],{"class":251},"\"-10%\"",[234,3148,376],{"class":244},[234,3150,3151],{"class":236,"line":265},[234,3152,3153],{"class":864},"  \u003C!-- content -->\n",[234,3155,3156,3158,3160],{"class":236,"line":288},[234,3157,1402],{"class":244},[234,3159,740],{"class":350},[234,3161,376],{"class":244},[234,3163,3164],{"class":236,"line":293},[234,3165,262],{"emptyLinePlaceholder":261},[234,3167,3168],{"class":236,"line":305},[234,3169,3170],{"class":864},"\u003C!-- Mirror Element (e.g., in a fixed header) -->\n",[234,3172,3173,3175,3177,3180,3182,3184,3186,3188,3191],{"class":236,"line":321},[234,3174,347],{"class":244},[234,3176,351],{"class":350},[234,3178,3179],{"class":281}," string-copy-from",[234,3181,357],{"class":244},[234,3183,3130],{"class":251},[234,3185,1297],{"class":281},[234,3187,357],{"class":244},[234,3189,3190],{"class":251},"\"hero-indicator\"",[234,3192,376],{"class":244},[234,3194,3195],{"class":236,"line":946},[234,3196,3197],{"class":864},"  \u003C!-- This dot/bar will update based on the main-hero's progress -->\n",[234,3199,3200,3202,3204],{"class":236,"line":955},[234,3201,1402],{"class":244},[234,3203,351],{"class":350},[234,3205,376],{"class":244},[37,3207,3209],{"id":3208},"supported-behavior","Supported Behavior",[30,3211,3212],{},"When you link elements this way:",[42,3214,3215,3221],{},[45,3216,3217,3218,3220],{},"The target element will receive the same CSS variables (like ",[60,3219,795],{},") and reactivity states computed for the source element.",[45,3222,3223],{},"It bypasses its own geometric intersection tracking and strictly follows the lifecycle and calculation loop of the copied target.",[37,3225,3227],{"id":3226},"use-cases","Use Cases",[42,3229,3230,3244],{},[45,3231,3232,3235,3236,3239,3240,3243],{},[1929,3233,3234],{},"Navigation Highlights",": A sidebar navigation item reading the ",[60,3237,3238],{},"string=\"inview\""," status or ",[60,3241,3242],{},"string=\"progress\""," value of the sections it links to.",[45,3245,3246,3249],{},[1929,3247,3248],{},"Floating Widgets",": A fixed progress bar filling up as the user scrolls through a specific article container somewhere else on the page.",[410,3251,3252],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}",{"title":230,"searchDepth":258,"depth":258,"links":3254},[3255,3256,3257],{"id":3080,"depth":258,"text":3081},{"id":3208,"depth":258,"text":3209},{"id":3226,"depth":258,"text":3227},{"path":3259,"title":3260,"description":3261,"kind":2341,"section":151,"order":819,"group":2342,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":3262,"attrs":3265,"events":3266,"cssVars":3267,"related":3268,"body":3270},"/docs/offset-concepts","Offsets","Viewport geometry, start and end zones, and how offset inputs affect progress-oriented modules.",[3263,3264],"offset-top","offset-bottom",[],[],[],[146,617,3269],"/docs/modules/parallax",{"type":22,"value":3271,"toc":3795},[3272,3276,3279,3286,3288,3292,3298,3311,3316,3319,3350,3356,3358,3362,3375,3389,3392,3410,3412,3416,3419,3439,3446,3448,3452,3456,3503,3513,3515,3519,3564,3573,3575,3579,3625,3630,3632,3636,3686,3700,3702,3706,3711,3717,3731,3733,3737,3755,3757,3761,3775,3777,3781,3792],[25,3273,3275],{"id":3274},"offset-concepts","Offset Concepts",[30,3277,3278],{},"Offsets in StringTune give you precise control over when scroll events are triggered as elements enter or leave the viewport. By configuring offsets and control points, you can fine-tune scroll-based animations and interactions to match any UI/UX scenario.",[30,3280,3281],{},[3282,3283],"img",{"alt":3284,"src":3285},"Offset","/img/offset.png",[1891,3287],{},[37,3289,3291],{"id":3290},"core-principle","Core Principle",[30,3293,3294,3295,1114],{},"A scroll trigger is always defined as the ",[1929,3296,3297],{},"meeting of two control points",[42,3299,3300,3306],{},[45,3301,3302,3303,3305],{},"One control point is on the ",[1929,3304,2706],{}," (e.g., its top or bottom edge)",[45,3307,3302,3308,3305],{},[1929,3309,3310],{},"viewport",[30,3312,3313],{},[1929,3314,3315],{},"A trigger fires when these two control points coincide during scrolling.",[30,3317,3318],{},"You select these control points using attributes:",[42,3320,3321,3337],{},[45,3322,3323,1833,3326,3329,3330,1934,3333,3336],{},[60,3324,3325],{},"string-enter-el",[60,3327,3328],{},"string-exit-el"," — set the element’s control point (e.g., ",[60,3331,3332],{},"\"top\"",[60,3334,3335],{},"\"bottom\"",")",[45,3338,3339,1833,3342,3345,3346,1934,3348,3336],{},[60,3340,3341],{},"string-enter-vp",[60,3343,3344],{},"string-exit-vp"," — set the viewport’s control point (e.g., ",[60,3347,3332],{},[60,3349,3335],{},[30,3351,3352],{},[3282,3353],{"alt":3354,"src":3355},"Control points concepts","/img/control-points-concepts.png",[1891,3357],{},[37,3359,3361],{"id":3360},"what-is-an-offset","What Is an Offset?",[30,3363,3364,3365,3367,3368,1934,3371,3374],{},"An ",[1929,3366,2719],{}," shifts the meeting point of these control points, allowing triggers to fire ",[1929,3369,3370],{},"before",[1929,3372,3373],{},"after"," the default intersection.",[42,3376,3377,3383],{},[45,3378,3379,3382],{},[1929,3380,3381],{},"Positive offset:"," The element must travel further into the viewport before the event fires.",[45,3384,3385,3388],{},[1929,3386,3387],{},"Negative offset:"," The event fires earlier, before the element’s edge even reaches the viewport control point.",[30,3390,3391],{},"Offsets can be set in:",[42,3393,3394,3399,3405],{},[45,3395,3396,3398],{},[60,3397,1789],{}," — pixels",[45,3400,3401,3404],{},[60,3402,3403],{},"%"," — percent of viewport height",[45,3406,3407,3409],{},[60,3408,2207],{}," — percent of the element’s own height (self height)",[1891,3411],{},[37,3413,3415],{"id":3414},"how-offsets-are-calculated","How Offsets Are Calculated",[30,3417,3418],{},"All offset values are converted to pixels for calculation, depending on their unit:",[42,3420,3421,3427,3433],{},[45,3422,3423,3426],{},[60,3424,3425],{},"25sh"," — 25% of the element’s height",[45,3428,3429,3432],{},[60,3430,3431],{},"-10%"," — 10% of the viewport height, before the edge",[45,3434,3435,3438],{},[60,3436,3437],{},"50px"," — 50 pixels",[30,3440,3441,3442,3445],{},"Offsets are always measured ",[1929,3443,3444],{},"from the relevant viewport control point",", in the direction the element moves through the viewport.",[1891,3447],{},[37,3449,3451],{"id":3450},"practical-examples","Practical Examples",[174,3453,3455],{"id":3454},"example-1-positive-offset-delay-the-trigger","Example 1: Positive Offset (delay the trigger)",[225,3457,3459],{"className":338,"code":3458,"language":340,"meta":230,"style":230},"\u003Cdiv string-enter-el=\"top\" string-enter-vp=\"top\" string-offset-top=\"25sh\">\n  \u003C!-- ... -->\n\u003C/div>\n",[60,3460,3461,3490,3495],{"__ignoreMap":230},[234,3462,3463,3465,3467,3470,3472,3474,3477,3479,3481,3483,3485,3488],{"class":236,"line":237},[234,3464,347],{"class":244},[234,3466,351],{"class":350},[234,3468,3469],{"class":281}," string-enter-el",[234,3471,357],{"class":244},[234,3473,3332],{"class":251},[234,3475,3476],{"class":281}," string-enter-vp",[234,3478,357],{"class":244},[234,3480,3332],{"class":251},[234,3482,3133],{"class":281},[234,3484,357],{"class":244},[234,3486,3487],{"class":251},"\"25sh\"",[234,3489,376],{"class":244},[234,3491,3492],{"class":236,"line":258},[234,3493,3494],{"class":864},"  \u003C!-- ... -->\n",[234,3496,3497,3499,3501],{"class":236,"line":265},[234,3498,1402],{"class":244},[234,3500,351],{"class":350},[234,3502,376],{"class":244},[30,3504,3505,3508,3509,3512],{},[1929,3506,3507],{},"Meaning:","\nThe trigger fires when the element’s top edge is ",[1929,3510,3511],{},"25% of its own height past"," the top edge of the viewport.\nIn other words, the element must move further inside the viewport before the trigger fires.",[1891,3514],{},[174,3516,3518],{"id":3517},"example-2-negative-offset-early-trigger","Example 2: Negative Offset (early trigger)",[225,3520,3522],{"className":338,"code":3521,"language":340,"meta":230,"style":230},"\u003Cdiv string-exit-el=\"bottom\" string-exit-vp=\"bottom\" string-offset-bottom=\"-10%\">\n  \u003C!-- ... -->\n\u003C/div>\n",[60,3523,3524,3552,3556],{"__ignoreMap":230},[234,3525,3526,3528,3530,3533,3535,3537,3540,3542,3544,3546,3548,3550],{"class":236,"line":237},[234,3527,347],{"class":244},[234,3529,351],{"class":350},[234,3531,3532],{"class":281}," string-exit-el",[234,3534,357],{"class":244},[234,3536,3335],{"class":251},[234,3538,3539],{"class":281}," string-exit-vp",[234,3541,357],{"class":244},[234,3543,3335],{"class":251},[234,3545,3141],{"class":281},[234,3547,357],{"class":244},[234,3549,3146],{"class":251},[234,3551,376],{"class":244},[234,3553,3554],{"class":236,"line":258},[234,3555,3494],{"class":864},[234,3557,3558,3560,3562],{"class":236,"line":265},[234,3559,1402],{"class":244},[234,3561,351],{"class":350},[234,3563,376],{"class":244},[30,3565,3566,3568,3569,3572],{},[1929,3567,3507],{},"\nThe trigger fires when the element’s bottom edge is ",[1929,3570,3571],{},"10% of the viewport height before"," reaching the bottom edge of the viewport.\nThis allows the event to fire early, before the element fully leaves the viewport.",[1891,3574],{},[37,3576,3578],{"id":3577},"offset-control-points-table","Offset Control Points: Table",[2221,3580,3581,3591],{},[2224,3582,3583],{},[2227,3584,3585,3588],{},[2230,3586,3587],{},"Attribute Pair",[2230,3589,3590],{},"Trigger fires when...",[2240,3592,3593,3601,3609,3617],{},[2227,3594,3595,3598],{},[2245,3596,3597],{},"enter-el=\"top\" + enter-vp=\"top\"",[2245,3599,3600],{},"Top of element meets top of viewport",[2227,3602,3603,3606],{},[2245,3604,3605],{},"exit-el=\"bottom\" + exit-vp=\"bottom\"",[2245,3607,3608],{},"Bottom of element meets bottom of viewport",[2227,3610,3611,3614],{},[2245,3612,3613],{},"enter-el=\"top\" + enter-vp=\"bottom\"",[2245,3615,3616],{},"Top of element meets bottom of viewport",[2227,3618,3619,3622],{},[2245,3620,3621],{},"exit-el=\"bottom\" + exit-vp=\"top\"",[2245,3623,3624],{},"Bottom of element meets top of viewport",[42,3626,3627],{},[45,3628,3629],{},"Add offsets to shift the trigger further inside or outside the viewport.",[1891,3631],{},[37,3633,3635],{"id":3634},"offset-units-table","Offset Units: Table",[2221,3637,3638,3650],{},[2224,3639,3640],{},[2227,3641,3642,3645,3647],{},[2230,3643,3644],{},"Unit",[2230,3646,2929],{},[2230,3648,3649],{},"What it means",[2240,3651,3652,3663,3675],{},[2227,3653,3654,3656,3660],{},[2245,3655,1789],{},[2245,3657,3658],{},[60,3659,3437],{},[2245,3661,3662],{},"50 pixels from the control point",[2227,3664,3665,3667,3672],{},[2245,3666,3403],{},[2245,3668,3669],{},[60,3670,3671],{},"10%",[2245,3673,3674],{},"10% of viewport height from the control point",[2227,3676,3677,3679,3683],{},[2245,3678,2207],{},[2245,3680,3681],{},[60,3682,3425],{},[2245,3684,3685],{},"25% of the element’s own height from the control point",[42,3687,3688,3694],{},[45,3689,3690,3691],{},"Positive values: ",[1929,3692,3693],{},"further inside the viewport",[45,3695,3696,3697],{},"Negative values: ",[1929,3698,3699],{},"before reaching the viewport control point",[1891,3701],{},[37,3703,3705],{"id":3704},"visual-explanation","Visual Explanation",[30,3707,3708],{},[3282,3709],{"alt":3275,"src":3710},"/img/offset-concepts.png",[30,3712,3713],{},[3714,3715,3716],"em",{},"The blue area shows a positive offset (element must move further inside the viewport). The red area shows a negative offset (trigger fires before reaching the viewport edge). “sh” means a percent of the element’s own height, “%” means a percent of the viewport height.",[42,3718,3719,3725],{},[45,3720,3721,3724],{},[1929,3722,3723],{},"Positive offsets",": trigger happens after the element has moved further inside the viewport",[45,3726,3727,3730],{},[1929,3728,3729],{},"Negative offsets",": trigger happens before the element reaches the viewport edge",[1891,3732],{},[37,3734,3736],{"id":3735},"best-practices","Best Practices",[42,3738,3739,3744,3749,3752],{},[45,3740,163,3741,3743],{},[60,3742,2207],{}," for responsive elements with dynamic height",[45,3745,163,3746,3748],{},[60,3747,3403],{}," for layouts that depend on viewport size",[45,3750,3751],{},"Combine control points and offsets for advanced scroll behaviors",[45,3753,3754],{},"Always check which control points you are using — this defines the logic of your scroll triggers!",[1891,3756],{},[37,3758,3760],{"id":3759},"common-pitfalls","Common Pitfalls",[42,3762,3763,3769],{},[45,3764,3765,3768],{},[1929,3766,3767],{},"Don’t assume offsets are always relative to the element’s edge.","\nOffsets always shift the meeting point between the element’s control point and the viewport’s control point.",[45,3770,3771,3774],{},[1929,3772,3773],{},"Mixing up positive and negative offsets:","\nRemember, positive means “further inside”, negative means “before”.",[1891,3776],{},[37,3778,3780],{"id":3779},"in-summary","In Summary",[42,3782,3783,3786,3789],{},[45,3784,3785],{},"Every scroll trigger is defined by a pair of control points (element and viewport)",[45,3787,3788],{},"Offset shifts this meeting point, allowing early or delayed triggers",[45,3790,3791],{},"Be explicit about which control points and units you are using for predictable scroll behaviors",[410,3793,3794],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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);}",{"title":230,"searchDepth":258,"depth":258,"links":3796},[3797,3798,3799,3800,3804,3805,3806,3807,3808,3809],{"id":3290,"depth":258,"text":3291},{"id":3360,"depth":258,"text":3361},{"id":3414,"depth":258,"text":3415},{"id":3450,"depth":258,"text":3451,"children":3801},[3802,3803],{"id":3454,"depth":265,"text":3455},{"id":3517,"depth":265,"text":3518},{"id":3577,"depth":258,"text":3578},{"id":3634,"depth":258,"text":3635},{"id":3704,"depth":258,"text":3705},{"id":3735,"depth":258,"text":3736},{"id":3759,"depth":258,"text":3760},{"id":3779,"depth":258,"text":3780},{"path":2897,"title":3811,"description":3812,"kind":2341,"section":151,"order":1908,"group":2342,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":3813,"attrs":3815,"events":3816,"cssVars":3817,"related":3818,"body":3820},"Event System","Global and object-scoped event channels, payload shapes, and safe subscription patterns.",[1536,1606,3814],"events",[],[],[],[2899,2465,3819],"/docs/modules/form",{"type":22,"value":3821,"toc":3961},[3822,3825,3829,3835,3866,3870,3876,3878,3895,3899,3902,3938,3943,3947,3958],[25,3823,3811],{"id":3824},"event-system",[37,3826,3828],{"id":3827},"global-events","Global events",[30,3830,3831,3832,3834],{},"Subscribe through the ",[60,3833,28],{}," instance:",[225,3836,3838],{"className":227,"code":3837,"language":229,"meta":230,"style":230},"stringTune.on('screen:desktop', () => {\n  // ...\n});\n",[60,3839,3840,3857,3862],{"__ignoreMap":230},[234,3841,3842,3844,3846,3848,3851,3853,3855],{"class":236,"line":237},[234,3843,296],{"class":244},[234,3845,1536],{"class":281},[234,3847,329],{"class":244},[234,3849,3850],{"class":251},"'screen:desktop'",[234,3852,973],{"class":244},[234,3854,906],{"class":240},[234,3856,909],{"class":244},[234,3858,3859],{"class":236,"line":258},[234,3860,3861],{"class":864},"  // ...\n",[234,3863,3864],{"class":236,"line":265},[234,3865,1040],{"class":244},[37,3867,3869],{"id":3868},"object-scoped-events","Object-scoped events",[30,3871,3872,3873,3875],{},"Object-scoped channels use ",[60,3874,764],{}," as part of the event name.",[30,3877,183],{},[42,3879,3880,3885,3890],{},[45,3881,3882],{},[60,3883,3884],{},"object:progress:hero",[45,3886,3887],{},[60,3888,3889],{},"object:parallax:hero",[45,3891,3892],{},[60,3893,3894],{},"form:submit:contact",[37,3896,3898],{"id":3897},"payload-shape","Payload shape",[30,3900,3901],{},"Two common channels emit a plain number:",[225,3903,3904],{"className":227,"code":2960,"language":229,"meta":230,"style":230},[60,3905,3906,3926,3934],{"__ignoreMap":230},[234,3907,3908,3910,3912,3914,3916,3918,3920,3922,3924],{"class":236,"line":237},[234,3909,296],{"class":244},[234,3911,1536],{"class":281},[234,3913,329],{"class":244},[234,3915,2973],{"class":251},[234,3917,2976],{"class":244},[234,3919,1469],{"class":899},[234,3921,903],{"class":244},[234,3923,906],{"class":240},[234,3925,909],{"class":244},[234,3927,3928,3930,3932],{"class":236,"line":258},[234,3929,1482],{"class":244},[234,3931,1485],{"class":281},[234,3933,2993],{"class":244},[234,3935,3936],{"class":236,"line":265},[234,3937,1040],{"class":244},[30,3939,3940,3941,106],{},"The same applies to ",[60,3942,2894],{},[37,3944,3946],{"id":3945},"what-not-to-document-as-supported","What not to document as supported",[42,3948,3949,3952,3955],{},[45,3950,3951],{},"private manager access",[45,3953,3954],{},"unsupported bracket access into private runtime state",[45,3956,3957],{},"event names that do not exist in the current runtime",[410,3959,3960],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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 .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":230,"searchDepth":258,"depth":258,"links":3962},[3963,3964,3965,3966],{"id":3827,"depth":258,"text":3828},{"id":3868,"depth":258,"text":3869},{"id":3897,"depth":258,"text":3898},{"id":3945,"depth":258,"text":3946},{"path":3968,"title":3969,"description":3970,"kind":2341,"section":151,"order":3971,"group":3057,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":3972,"attrs":3976,"events":3977,"cssVars":3978,"related":3979,"body":3983},"/docs/scroll-marks","Programmatic Scroll Marks","Set up scroll interception points that are not tied to specific DOM elements.",55,[3973,3974,3975],"addScrollMark","removeScrollMark","ScrollTriggerRule",[],[],[],[3980,3981,3982],"/docs/api/string-tune","/docs/api/string-data","/docs/scroll-modes",{"type":22,"value":3984,"toc":4290},[3985,3988,3995,4000,4004,4010,4200,4202,4257,4261,4270,4287],[25,3986,3969],{"id":3987},"programmatic-scroll-marks",[30,3989,3990,3991,3994],{},"Usually, StringTune logic is anchored to elements via the ",[60,3992,3993],{},"string=\"something\""," attribute. However, sometimes you need an event to fire or a class to toggle when the page passes an exact pixel offset, regardless of what's currently in the DOM.",[30,3996,3997,3998,106],{},"StringTune provides a robust internal observer for these cases via ",[60,3999,3973],{},[37,4001,4003],{"id":4002},"usage","Usage",[30,4005,4006,4007,4009],{},"You can register a ",[60,4008,3975],{}," on the instance:",[225,4011,4013],{"className":227,"code":4012,"language":229,"meta":230,"style":230},"import StringTune, { ScrollTriggerRule } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\n\nconst trigger: ScrollTriggerRule = {\n  id: 'menu-background-trigger',\n  offset: 300, // Trigger at 300px from the top\n  direction: 'any', // trigger scrolling forward or backward\n  onEnter: () => {\n    console.log(\"Passed 300px mark!\");\n  },\n  onLeave: () => {\n    console.log(\"Scrolled back above 300px!\");\n  },\n  toggleClass: {\n    target: document.body,\n    className: 'is-scrolled'\n  }\n};\n\nstringTune.addScrollMark(trigger);\n",[60,4014,4015,4028,4032,4046,4050,4066,4076,4089,4102,4114,4128,4132,4143,4156,4160,4165,4170,4178,4182,4187,4191],{"__ignoreMap":230},[234,4016,4017,4019,4022,4024,4026],{"class":236,"line":237},[234,4018,241],{"class":240},[234,4020,4021],{"class":244}," StringTune, { ScrollTriggerRule } ",[234,4023,248],{"class":240},[234,4025,252],{"class":251},[234,4027,255],{"class":244},[234,4029,4030],{"class":236,"line":258},[234,4031,262],{"emptyLinePlaceholder":261},[234,4033,4034,4036,4038,4040,4042,4044],{"class":236,"line":265},[234,4035,268],{"class":240},[234,4037,272],{"class":271},[234,4039,275],{"class":240},[234,4041,278],{"class":244},[234,4043,282],{"class":281},[234,4045,285],{"class":244},[234,4047,4048],{"class":236,"line":288},[234,4049,262],{"emptyLinePlaceholder":261},[234,4051,4052,4054,4057,4059,4062,4064],{"class":236,"line":293},[234,4053,268],{"class":240},[234,4055,4056],{"class":271}," trigger",[234,4058,1114],{"class":240},[234,4060,4061],{"class":281}," ScrollTriggerRule",[234,4063,275],{"class":240},[234,4065,909],{"class":244},[234,4067,4068,4071,4074],{"class":236,"line":305},[234,4069,4070],{"class":244},"  id: ",[234,4072,4073],{"class":251},"'menu-background-trigger'",[234,4075,2506],{"class":244},[234,4077,4078,4081,4084,4086],{"class":236,"line":321},[234,4079,4080],{"class":244},"  offset: ",[234,4082,4083],{"class":271},"300",[234,4085,1833],{"class":244},[234,4087,4088],{"class":864},"// Trigger at 300px from the top\n",[234,4090,4091,4094,4097,4099],{"class":236,"line":946},[234,4092,4093],{"class":244},"  direction: ",[234,4095,4096],{"class":251},"'any'",[234,4098,1833],{"class":244},[234,4100,4101],{"class":864},"// trigger scrolling forward or backward\n",[234,4103,4104,4107,4110,4112],{"class":236,"line":955},[234,4105,4106],{"class":281},"  onEnter",[234,4108,4109],{"class":244},": () ",[234,4111,906],{"class":240},[234,4113,909],{"class":244},[234,4115,4116,4119,4121,4123,4126],{"class":236,"line":11},[234,4117,4118],{"class":244},"    console.",[234,4120,1485],{"class":281},[234,4122,329],{"class":244},[234,4124,4125],{"class":251},"\"Passed 300px mark!\"",[234,4127,335],{"class":244},[234,4129,4130],{"class":236,"line":980},[234,4131,1256],{"class":244},[234,4133,4134,4137,4139,4141],{"class":236,"line":994},[234,4135,4136],{"class":281},"  onLeave",[234,4138,4109],{"class":244},[234,4140,906],{"class":240},[234,4142,909],{"class":244},[234,4144,4145,4147,4149,4151,4154],{"class":236,"line":1000},[234,4146,4118],{"class":244},[234,4148,1485],{"class":281},[234,4150,329],{"class":244},[234,4152,4153],{"class":251},"\"Scrolled back above 300px!\"",[234,4155,335],{"class":244},[234,4157,4158],{"class":236,"line":1005},[234,4159,1256],{"class":244},[234,4161,4162],{"class":236,"line":1013},[234,4163,4164],{"class":244},"  toggleClass: {\n",[234,4166,4167],{"class":236,"line":1019},[234,4168,4169],{"class":244},"    target: document.body,\n",[234,4171,4172,4175],{"class":236,"line":1025},[234,4173,4174],{"class":244},"    className: ",[234,4176,4177],{"class":251},"'is-scrolled'\n",[234,4179,4180],{"class":236,"line":1031},[234,4181,1138],{"class":244},[234,4183,4184],{"class":236,"line":1037},[234,4185,4186],{"class":244},"};\n",[234,4188,4189],{"class":236,"line":427},[234,4190,262],{"emptyLinePlaceholder":261},[234,4192,4193,4195,4197],{"class":236,"line":1571},[234,4194,296],{"class":244},[234,4196,3973],{"class":281},[234,4198,4199],{"class":244},"(trigger);\n",[37,4201,3081],{"id":3080},[42,4203,4204,4211,4243],{},[45,4205,4206,4210],{},[1929,4207,4208],{},[60,4209,2719],{},": The exact threshold in scroll container pixels.",[45,4212,4213,4218,4219,1833,4222,2703,4225,4227,4228],{},[1929,4214,4215],{},[60,4216,4217],{},"direction",": Can be ",[60,4220,4221],{},"'forward'",[60,4223,4224],{},"'backward'",[60,4226,4096],{},".\n",[42,4229,4230],{},[45,4231,4232,4233,1833,4235,4238,4239,4242],{},"If ",[60,4234,4221],{},[60,4236,4237],{},"onEnter"," fires when you scroll down past the mark, and ",[60,4240,4241],{},"onLeave"," fires if you scroll back up past it.",[45,4244,4245,4250,4251,4253,4254,4256],{},[1929,4246,4247],{},[60,4248,4249],{},"toggleClass",": A convenient built-in way to toggle a class on any DOM target automatically when the condition is met, without writing ",[60,4252,4237],{}," / ",[60,4255,4241],{}," handlers manually.",[37,4258,4260],{"id":4259},"managing-memory","Managing Memory",[30,4262,4263,4264,4266,4267,1114],{},"To clean up a scroll mark (for example, when a component unmounts in a React or Vue app), just call ",[60,4265,3974],{}," with the identical ",[60,4268,4269],{},"id",[225,4271,4273],{"className":227,"code":4272,"language":229,"meta":230,"style":230},"stringTune.removeScrollMark('menu-background-trigger');\n",[60,4274,4275],{"__ignoreMap":230},[234,4276,4277,4279,4281,4283,4285],{"class":236,"line":237},[234,4278,296],{"class":244},[234,4280,3974],{"class":281},[234,4282,329],{"class":244},[234,4284,4073],{"class":251},[234,4286,335],{"class":244},[410,4288,4289],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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);}",{"title":230,"searchDepth":258,"depth":258,"links":4291},[4292,4293,4294],{"id":4002,"depth":258,"text":4003},{"id":3080,"depth":258,"text":3081},{"id":4259,"depth":258,"text":4260},{"path":3982,"title":4296,"description":4297,"kind":2341,"section":151,"order":4298,"group":4299,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":4300,"attrs":4305,"events":4306,"cssVars":4307,"related":4308,"body":4311},"Scroll Modes","How desktop and mobile scroll modes are selected and how custom scroll controllers fit in.",60,"Scroll Concepts",[4301,4302,4303,4304],"smooth","default","disable","registerScrollMode",[],[],[],[3980,4309,4310],"/docs/modules/scroller","/docs/scroll-containers",{"type":22,"value":4312,"toc":4380},[4313,4316,4320,4334,4338,4341,4353,4357,4360,4364,4373,4377],[25,4314,4296],{"id":4315},"scroll-modes",[37,4317,4319],{"id":4318},"built-in-modes","Built-in modes",[42,4321,4322,4326,4330],{},[45,4323,4324],{},[60,4325,4301],{},[45,4327,4328],{},[60,4329,4302],{},[45,4331,4332],{},[60,4333,4303],{},[37,4335,4337],{"id":4336},"defaults","Defaults",[30,4339,4340],{},"Current runtime defaults are:",[42,4342,4343,4348],{},[45,4344,4345,4346],{},"desktop: ",[60,4347,4301],{},[45,4349,4350,4351],{},"mobile: ",[60,4352,4301],{},[37,4354,4356],{"id":4355},"responsive-switching","Responsive switching",[30,4358,4359],{},"The built-in responsive mode decision is width-based. It is not documented as a generic touch-device detector.",[37,4361,4363],{"id":4362},"custom-modes","Custom modes",[30,4365,163,4366,4369,4370,4372],{},[60,4367,4368],{},"registerScrollMode()"," with a ",[60,4371,2384],{}," implementation when you need to integrate a custom scroll engine.",[37,4374,4376],{"id":4375},"public-guidance","Public guidance",[30,4378,4379],{},"Document the supported mode names, how to switch them, and what scroll controller path is public.\nDo not document internal scroll manager details as consumer API.",{"title":230,"searchDepth":258,"depth":258,"links":4381},[4382,4383,4384,4385,4386],{"id":4318,"depth":258,"text":4319},{"id":4336,"depth":258,"text":4337},{"id":4355,"depth":258,"text":4356},{"id":4362,"depth":258,"text":4363},{"id":4375,"depth":258,"text":4376},{"path":4310,"title":4388,"description":4389,"kind":2341,"section":151,"order":4390,"group":4299,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":4391,"attrs":4393,"events":4394,"cssVars":4395,"related":4396,"body":4399},"Custom Scroll Containers","How to attach StringTune to a specific overflow container instead of the default window/body.",65,[4392],"scrollContainer",[],[],[],[4397,4398,3980],"/docs/scroll-isolation","/docs/modules/scroll-container",{"type":22,"value":4400,"toc":4595},[4401,4404,4418,4422,4431,4535,4539,4565,4569,4575,4590,4593],[25,4402,4388],{"id":4403},"custom-scroll-containers",[30,4405,4406,4407,137,4410,4413,4414,4417],{},"By default, StringTune listens to the global ",[60,4408,4409],{},"window",[60,4411,4412],{},"document.body"," for scroll and resize events. However, in modern Single Page Applications (SPAs) or specific layouts, you may have a fixed layout where scrolling happens inside a specific ",[60,4415,4416],{},"overflow: auto"," container.",[37,4419,4421],{"id":4420},"setting-a-custom-container","Setting a Custom Container",[30,4423,4424,4425,4427,4428,4430],{},"You can tell StringTune to listen to a specific ",[60,4426,2695],{}," by setting the ",[60,4429,4392],{}," property on the instance.",[225,4432,4434],{"className":227,"code":4433,"language":229,"meta":230,"style":230},"import StringTune from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\n\n// After your DOM or component has mounted:\nconst scroller = document.querySelector('.my-custom-scroller');\nif (scroller) {\n  stringTune.scrollContainer = scroller;\n}\n\nstringTune.start(60);\n",[60,4435,4436,4448,4452,4466,4470,4475,4497,4505,4515,4519,4523],{"__ignoreMap":230},[234,4437,4438,4440,4442,4444,4446],{"class":236,"line":237},[234,4439,241],{"class":240},[234,4441,1073],{"class":244},[234,4443,248],{"class":240},[234,4445,252],{"class":251},[234,4447,255],{"class":244},[234,4449,4450],{"class":236,"line":258},[234,4451,262],{"emptyLinePlaceholder":261},[234,4453,4454,4456,4458,4460,4462,4464],{"class":236,"line":265},[234,4455,268],{"class":240},[234,4457,272],{"class":271},[234,4459,275],{"class":240},[234,4461,278],{"class":244},[234,4463,282],{"class":281},[234,4465,285],{"class":244},[234,4467,4468],{"class":236,"line":288},[234,4469,262],{"emptyLinePlaceholder":261},[234,4471,4472],{"class":236,"line":293},[234,4473,4474],{"class":864},"// After your DOM or component has mounted:\n",[234,4476,4477,4479,4482,4484,4487,4490,4492,4495],{"class":236,"line":305},[234,4478,268],{"class":240},[234,4480,4481],{"class":271}," scroller",[234,4483,275],{"class":240},[234,4485,4486],{"class":244}," document.",[234,4488,4489],{"class":281},"querySelector",[234,4491,329],{"class":244},[234,4493,4494],{"class":251},"'.my-custom-scroller'",[234,4496,335],{"class":244},[234,4498,4499,4502],{"class":236,"line":321},[234,4500,4501],{"class":240},"if",[234,4503,4504],{"class":244}," (scroller) {\n",[234,4506,4507,4510,4512],{"class":236,"line":946},[234,4508,4509],{"class":244},"  stringTune.scrollContainer ",[234,4511,357],{"class":240},[234,4513,4514],{"class":244}," scroller;\n",[234,4516,4517],{"class":236,"line":955},[234,4518,1143],{"class":244},[234,4520,4521],{"class":236,"line":11},[234,4522,262],{"emptyLinePlaceholder":261},[234,4524,4525,4527,4529,4531,4533],{"class":236,"line":980},[234,4526,296],{"class":244},[234,4528,326],{"class":281},[234,4530,329],{"class":244},[234,4532,332],{"class":271},[234,4534,335],{"class":244},[174,4536,4538],{"id":4537},"important-details","Important details",[42,4540,4541,4554],{},[45,4542,4543,4546,4547,137,4550,4553],{},[1929,4544,4545],{},"Resize tracking",": StringTune automatically sets up a ",[60,4548,4549],{},"ResizeObserver",[60,4551,4552],{},"MutationObserver"," on the assigned container to detect dimension changes and rebuild the layout calculations.",[45,4555,4556,4559,4560,137,4562,4564],{},[1929,4557,4558],{},"Scroll modes",": This setup fully supports the ",[60,4561,4301],{},[60,4563,4302],{}," scroll modes.",[37,4566,4568],{"id":4567},"resetting-to-window","Resetting to Window",[30,4570,4571,4572,4574],{},"If you ever need to revert the scroll tracking back to the entire page, simply assign ",[60,4573,4409],{}," to the property:",[225,4576,4578],{"className":227,"code":4577,"language":229,"meta":230,"style":230},"stringTune.scrollContainer = window;\n",[60,4579,4580],{"__ignoreMap":230},[234,4581,4582,4585,4587],{"class":236,"line":237},[234,4583,4584],{"class":244},"stringTune.scrollContainer ",[234,4586,357],{"class":240},[234,4588,4589],{"class":244}," window;\n",[30,4591,4592],{},"This flexibility ensures StringTune gracefully fits into complex React, Vue, or Nuxt client layouts without forcing a global document scroll.",[410,4594,4289],{},{"title":230,"searchDepth":258,"depth":258,"links":4596},[4597,4600],{"id":4420,"depth":258,"text":4421,"children":4598},[4599],{"id":4537,"depth":265,"text":4538},{"id":4567,"depth":258,"text":4568},{"path":4602,"title":4603,"description":4604,"kind":2341,"section":151,"order":4605,"group":3057,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":4606,"attrs":4610,"events":4611,"cssVars":4612,"related":4613,"body":4617},"/docs/performance","Performance & Batching","Understand how StringTune guarantees 60fps through DOM read/write separation.",70,[2389,4607,4608,4609],"mutate","measure","domBatcherEnabled",[],[],[],[4614,4615,4616],"/docs/api/frame-dom","/docs/api/style-txn","/docs/api/dom-batcher",{"type":22,"value":4618,"toc":4859},[4619,4622,4629,4633,4644,4648,4657,4666,4672,4789,4793,4796,4856],[25,4620,4603],{"id":4621},"performance-batching",[30,4623,4624,4625,4628],{},"StringTune is deeply optimized for rendering smooth 60fps animations. The most critical architectural feature it uses is ",[1929,4626,4627],{},"DOM Batching"," (separating layout reads from style writes).",[37,4630,4632],{"id":4631},"the-layout-thrashing-problem","The Layout Thrashing Problem",[30,4634,4635,4636,4639,4640,4643],{},"In browser rendering, if JavaScript reads a layout property (like ",[60,4637,4638],{},"getBoundingClientRect()",") and then immediately writes a style (like ",[60,4641,4642],{},"transform","), the browser is forced to synchronously recalculate the layout. Doing this multiple times per frame causes \"layout thrashing\" and drastically drops the frame rate.",[37,4645,4647],{"id":4646},"how-stringtune-solves-it","How StringTune Solves It",[30,4649,4650,4651,137,4653,4656],{},"StringTune groups all computations across the entire page into strict phases per frame. It exposes ",[60,4652,2389],{},[60,4654,4655],{},"styleTxn"," to ensure modules respect these boundaries.",[174,4658,4660,137,4663],{"id":4659},"framedommeasure-and-framedommutate",[60,4661,4662],{},"frameDOM.measure()",[60,4664,4665],{},"frameDOM.mutate()",[30,4667,4668,4669,4671],{},"When building custom modules, you must use the ",[60,4670,2389],{}," helper instead of naked DOM API calls:",[225,4673,4675],{"className":227,"code":4674,"language":229,"meta":230,"style":230},"import { frameDOM } from '@fiddle-digital/string-tune';\n\n// 1. Queue a read operation\nframeDOM.measure(() => {\n  const rect = element.getBoundingClientRect();\n  \n  // 2. Queue a write operation based on the read\n  frameDOM.mutate(() => {\n    element.style.transform = `translateY(${rect.top * 0.5}px)`;\n  });\n});\n",[60,4676,4677,4690,4694,4699,4712,4729,4734,4739,4752,4781,4785],{"__ignoreMap":230},[234,4678,4679,4681,4684,4686,4688],{"class":236,"line":237},[234,4680,241],{"class":240},[234,4682,4683],{"class":244}," { frameDOM } ",[234,4685,248],{"class":240},[234,4687,252],{"class":251},[234,4689,255],{"class":244},[234,4691,4692],{"class":236,"line":258},[234,4693,262],{"emptyLinePlaceholder":261},[234,4695,4696],{"class":236,"line":265},[234,4697,4698],{"class":864},"// 1. Queue a read operation\n",[234,4700,4701,4704,4706,4708,4710],{"class":236,"line":288},[234,4702,4703],{"class":244},"frameDOM.",[234,4705,4608],{"class":281},[234,4707,1505],{"class":244},[234,4709,906],{"class":240},[234,4711,909],{"class":244},[234,4713,4714,4716,4719,4721,4724,4727],{"class":236,"line":293},[234,4715,914],{"class":240},[234,4717,4718],{"class":271}," rect",[234,4720,275],{"class":240},[234,4722,4723],{"class":244}," element.",[234,4725,4726],{"class":281},"getBoundingClientRect",[234,4728,285],{"class":244},[234,4730,4731],{"class":236,"line":305},[234,4732,4733],{"class":244},"  \n",[234,4735,4736],{"class":236,"line":321},[234,4737,4738],{"class":864},"  // 2. Queue a write operation based on the read\n",[234,4740,4741,4744,4746,4748,4750],{"class":236,"line":946},[234,4742,4743],{"class":244},"  frameDOM.",[234,4745,4607],{"class":281},[234,4747,1505],{"class":244},[234,4749,906],{"class":240},[234,4751,909],{"class":244},[234,4753,4754,4757,4759,4762,4765,4767,4770,4773,4776,4779],{"class":236,"line":955},[234,4755,4756],{"class":244},"    element.style.transform ",[234,4758,357],{"class":240},[234,4760,4761],{"class":251}," `translateY(${",[234,4763,4764],{"class":244},"rect",[234,4766,106],{"class":251},[234,4768,4769],{"class":244},"top",[234,4771,4772],{"class":240}," *",[234,4774,4775],{"class":271}," 0.5",[234,4777,4778],{"class":251},"}px)`",[234,4780,255],{"class":244},[234,4782,4783],{"class":236,"line":11},[234,4784,997],{"class":244},[234,4786,4787],{"class":236,"line":980},[234,4788,1040],{"class":244},[174,4790,4792],{"id":4791},"global-configuration","Global Configuration",[30,4794,4795],{},"Batching is strictly enforced by default. You can control these features globally, though it's rarely necessary to disable them.",[225,4797,4799],{"className":227,"code":4798,"language":229,"meta":230,"style":230},"const stringTune = StringTune.getInstance();\n\n// Toggle the internal batcher queue\nstringTune.domBatcherEnabled = true;\n\n// Toggle the IntersectionObserver that efficiently puts off-screen elements to sleep\nstringTune.intersectionObserverEnabled = true;\n",[60,4800,4801,4815,4819,4824,4836,4840,4845],{"__ignoreMap":230},[234,4802,4803,4805,4807,4809,4811,4813],{"class":236,"line":237},[234,4804,268],{"class":240},[234,4806,272],{"class":271},[234,4808,275],{"class":240},[234,4810,278],{"class":244},[234,4812,282],{"class":281},[234,4814,285],{"class":244},[234,4816,4817],{"class":236,"line":258},[234,4818,262],{"emptyLinePlaceholder":261},[234,4820,4821],{"class":236,"line":265},[234,4822,4823],{"class":864},"// Toggle the internal batcher queue\n",[234,4825,4826,4829,4831,4834],{"class":236,"line":288},[234,4827,4828],{"class":244},"stringTune.domBatcherEnabled ",[234,4830,357],{"class":240},[234,4832,4833],{"class":271}," true",[234,4835,255],{"class":244},[234,4837,4838],{"class":236,"line":293},[234,4839,262],{"emptyLinePlaceholder":261},[234,4841,4842],{"class":236,"line":305},[234,4843,4844],{"class":864},"// Toggle the IntersectionObserver that efficiently puts off-screen elements to sleep\n",[234,4846,4847,4850,4852,4854],{"class":236,"line":321},[234,4848,4849],{"class":244},"stringTune.intersectionObserverEnabled ",[234,4851,357],{"class":240},[234,4853,4833],{"class":271},[234,4855,255],{"class":244},[410,4857,4858],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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);}",{"title":230,"searchDepth":258,"depth":258,"links":4860},[4861,4862],{"id":4631,"depth":258,"text":4632},{"id":4646,"depth":258,"text":4647,"children":4863},[4864,4866],{"id":4659,"depth":265,"text":4865},"frameDOM.measure() and frameDOM.mutate()",{"id":4791,"depth":265,"text":4792},{"path":4397,"title":4868,"description":4869,"kind":2341,"section":151,"order":4605,"group":4299,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":4870,"attrs":4871,"events":4872,"cssVars":4873,"related":4874,"body":4875},"Scroll Isolation","How StringTune cooperates with local scroll surfaces, scroll containers, and nested interactions.",[],[],[],[],[4310,4398,4309],{"type":22,"value":4876,"toc":5179},[4877,4880,4887,4902,4906,4972,4976,5008,5012,5015,5118,5121,5177],[25,4878,4868],{"id":4879},"scroll-isolation",[30,4881,4882,4883,4886],{},"Prevent StringTune from intercepting scroll events on specific containers. While ",[60,4884,4885],{},"stringTune"," provides global smooth scrolling and inertia, some UI components require their own independent scroll context or custom pointer handling.",[1042,4888,4889],{},[30,4890,4891,4894,4895,1934,4898,4901],{},[1929,4892,4893],{},"Isolation primer:"," Add ",[60,4896,4897],{},"string-isolation",[60,4899,4900],{},"data-string-isolation"," to any element you want to decouple from the global scroll engine. Events originating from this element (or its children) will bypass StringTune entirely.",[174,4903,4905],{"id":4904},"attributes","Attributes",[2221,4907,4908,4927],{},[2224,4909,4910],{},[2227,4911,4912,4915,4918,4921,4924],{},[2230,4913,4914],{},"Attribute",[2230,4916,4917],{},"Type",[2230,4919,4920],{},"Default",[2230,4922,4923],{},"Purpose",[2230,4925,4926],{},"Practical notes",[2240,4928,4929,4954],{},[2227,4930,4931,4935,4938,4941,4951],{},[2245,4932,4933],{},[60,4934,4897],{},[2245,4936,4937],{},"attribute",[2245,4939,4940],{},"—",[2245,4942,4943,4944,4947,4948,106],{},"Stops propagation of ",[60,4945,4946],{},"wheel"," events to the main ",[60,4949,4950],{},"ScrollManager",[2245,4952,4953],{},"Ideal for modals, maps, or code blocks.",[2227,4955,4956,4960,4962,4964,4967],{},[2245,4957,4958],{},[60,4959,4900],{},[2245,4961,4937],{},[2245,4963,4940],{},[2245,4965,4966],{},"Alternative syntax for full HTML5 validation compliance.",[2245,4968,4969,4970,106],{},"Functionally identical to ",[60,4971,4897],{},[174,4973,4975],{"id":4974},"module-snapshot","Module Snapshot",[42,4977,4978,4986,4992,5002],{},[45,4979,4980,4983,4984],{},[1929,4981,4982],{},"Activation attribute:"," ",[60,4985,4897],{},[45,4987,4988,4991],{},[1929,4989,4990],{},"Effect:"," Immediately halts event bubbling to the global scroll listener.",[45,4993,4994,4997,4998,5001],{},[1929,4995,4996],{},"Use cases:"," Modals with overflow, embedded maps (Google Maps, Mapbox), ",[60,4999,5000],{},"\u003Ccanvas>"," elements with custom controls, code snippets.",[45,5003,5004,5007],{},[1929,5005,5006],{},"Scope:"," Affects the element and all its descendants.",[174,5009,5011],{"id":5010},"basic-usage","Basic Usage",[30,5013,5014],{},"Isolate a modal window's content area so users can scroll long text without inadvertently scrolling the page behind it.",[225,5016,5018],{"className":338,"code":5017,"language":340,"meta":230,"style":230},"\u003C!-- Modal overlay -->\n\u003Cdiv class=\"modal\">\n  \u003C!-- Scrollable content area -->\n  \u003Cdiv class=\"modal-content\" string-isolation>\n    \u003Ch2>Terms of Service\u003C/h2>\n    \u003Cp>Long text that requires native scrolling...\u003C/p>\n    \u003Cp>More text...\u003C/p>\n  \u003C/div>\n\u003C/div>\n",[60,5019,5020,5025,5040,5045,5063,5076,5089,5102,5110],{"__ignoreMap":230},[234,5021,5022],{"class":236,"line":237},[234,5023,5024],{"class":864},"\u003C!-- Modal overlay -->\n",[234,5026,5027,5029,5031,5033,5035,5038],{"class":236,"line":258},[234,5028,347],{"class":244},[234,5030,351],{"class":350},[234,5032,1297],{"class":281},[234,5034,357],{"class":244},[234,5036,5037],{"class":251},"\"modal\"",[234,5039,376],{"class":244},[234,5041,5042],{"class":236,"line":265},[234,5043,5044],{"class":864},"  \u003C!-- Scrollable content area -->\n",[234,5046,5047,5049,5051,5053,5055,5058,5061],{"class":236,"line":288},[234,5048,1292],{"class":244},[234,5050,351],{"class":350},[234,5052,1297],{"class":281},[234,5054,357],{"class":244},[234,5056,5057],{"class":251},"\"modal-content\"",[234,5059,5060],{"class":281}," string-isolation",[234,5062,376],{"class":244},[234,5064,5065,5067,5069,5072,5074],{"class":236,"line":293},[234,5066,1321],{"class":244},[234,5068,37],{"class":350},[234,5070,5071],{"class":244},">Terms of Service\u003C/",[234,5073,37],{"class":350},[234,5075,376],{"class":244},[234,5077,5078,5080,5082,5085,5087],{"class":236,"line":305},[234,5079,1321],{"class":244},[234,5081,30],{"class":350},[234,5083,5084],{"class":244},">Long text that requires native scrolling...\u003C/",[234,5086,30],{"class":350},[234,5088,376],{"class":244},[234,5090,5091,5093,5095,5098,5100],{"class":236,"line":321},[234,5092,1321],{"class":244},[234,5094,30],{"class":350},[234,5096,5097],{"class":244},">More text...\u003C/",[234,5099,30],{"class":350},[234,5101,376],{"class":244},[234,5103,5104,5106,5108],{"class":236,"line":946},[234,5105,1393],{"class":244},[234,5107,351],{"class":350},[234,5109,376],{"class":244},[234,5111,5112,5114,5116],{"class":236,"line":955},[234,5113,1402],{"class":244},[234,5115,351],{"class":350},[234,5117,376],{"class":244},[30,5119,5120],{},"Or enable zoom/pan on an interactive map:",[225,5122,5124],{"className":338,"code":5123,"language":340,"meta":230,"style":230},"\u003Cdiv class=\"map-container\" data-string-isolation>\n  \u003C!-- Google Maps / Leaflet instance -->\n  \u003Cdiv id=\"map\">\u003C/div>\n\u003C/div>\n",[60,5125,5126,5144,5149,5169],{"__ignoreMap":230},[234,5127,5128,5130,5132,5134,5136,5139,5142],{"class":236,"line":237},[234,5129,347],{"class":244},[234,5131,351],{"class":350},[234,5133,1297],{"class":281},[234,5135,357],{"class":244},[234,5137,5138],{"class":251},"\"map-container\"",[234,5140,5141],{"class":281}," data-string-isolation",[234,5143,376],{"class":244},[234,5145,5146],{"class":236,"line":258},[234,5147,5148],{"class":864},"  \u003C!-- Google Maps / Leaflet instance -->\n",[234,5150,5151,5153,5155,5158,5160,5163,5165,5167],{"class":236,"line":265},[234,5152,1292],{"class":244},[234,5154,351],{"class":350},[234,5156,5157],{"class":281}," id",[234,5159,357],{"class":244},[234,5161,5162],{"class":251},"\"map\"",[234,5164,371],{"class":244},[234,5166,351],{"class":350},[234,5168,376],{"class":244},[234,5170,5171,5173,5175],{"class":236,"line":288},[234,5172,1402],{"class":244},[234,5174,351],{"class":350},[234,5176,376],{"class":244},[410,5178,3252],{},{"title":230,"searchDepth":258,"depth":258,"links":5180},[5181,5182,5183],{"id":4904,"depth":265,"text":4905},{"id":4974,"depth":265,"text":4975},{"id":5010,"depth":265,"text":5011},{"path":158,"title":5185,"description":5186,"kind":9,"section":5187,"order":293,"group":-1,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":5188,"attrs":5189,"events":5190,"cssVars":5191,"related":5192,"body":5193},"Modules Overview","Reference map of the official built-in modules grouped by runtime role.","Modules",[],[],[],[],[6,166,2350],{"type":22,"value":5194,"toc":5359},[5195,5198,5201,5205,5250,5254,5279,5283,5302,5306,5330,5334,5348,5352],[25,5196,5185],{"id":5197},"modules-overview",[30,5199,5200],{},"Only built-in package exports belong here.",[37,5202,5204],{"id":5203},"scroll-motion","Scroll & Motion",[42,5206,5207,5211,5217,5222,5228,5234,5240,5245],{},[45,5208,5209],{},[133,5210,190],{"href":617},[45,5212,5213],{},[133,5214,5216],{"href":5215},"/docs/modules/progress-part","StringProgressPart",[45,5218,5219],{},[133,5220,5221],{"href":3269},"StringParallax",[45,5223,5224],{},[133,5225,5227],{"href":5226},"/docs/modules/lerp","StringLerp",[45,5229,5230],{},[133,5231,5233],{"href":5232},"/docs/modules/glide","StringGlide",[45,5235,5236],{},[133,5237,5239],{"href":5238},"/docs/modules/anchor","StringAnchor",[45,5241,5242],{},[133,5243,5244],{"href":4398},"StringScrollContainer",[45,5246,5247],{},[133,5248,5249],{"href":4309},"StringScroller",[37,5251,5253],{"id":5252},"cursor-interaction","Cursor & Interaction",[42,5255,5256,5261,5267,5273],{},[45,5257,5258],{},[133,5259,195],{"href":5260},"/docs/modules/cursor",[45,5262,5263],{},[133,5264,5266],{"href":5265},"/docs/modules/magnetic","StringMagnetic",[45,5268,5269],{},[133,5270,5272],{"href":5271},"/docs/modules/impulse","StringImpulse",[45,5274,5275],{},[133,5276,5278],{"href":5277},"/docs/modules/spotlight","StringSpotlight",[37,5280,5282],{"id":5281},"content-layout","Content & Layout",[42,5284,5285,5291,5297],{},[45,5286,5287],{},[133,5288,5290],{"href":5289},"/docs/modules/split","StringSplit",[45,5292,5293],{},[133,5294,5296],{"href":5295},"/docs/modules/masonry","StringMasonry",[45,5298,5299],{},[133,5300,200],{"href":5301},"/docs/modules/responsive",[37,5303,5305],{"id":5304},"media-forms","Media & Forms",[42,5307,5308,5313,5318,5324],{},[45,5309,5310],{},[133,5311,5312],{"href":3819},"StringForm",[45,5314,5315],{},[133,5316,205],{"href":5317},"/docs/modules/loading",[45,5319,5320],{},[133,5321,5323],{"href":5322},"/docs/modules/lazy","StringLazy",[45,5325,5326],{},[133,5327,5329],{"href":5328},"/docs/modules/video-autoplay","StringVideoAutoplay",[37,5331,5333],{"id":5332},"diagnostics","Diagnostics",[42,5335,5336,5342],{},[45,5337,5338],{},[133,5339,5341],{"href":5340},"/docs/modules/fps-tracker","StringFPSTracker",[45,5343,5344],{},[133,5345,5347],{"href":5346},"/docs/modules/position-tracker","StringPositionTracker",[37,5349,5351],{"id":5350},"not-in-this-section","Not in this section",[30,5353,5354,5355,5358],{},"Project-specific modules do not belong in the built-in catalog. They should live in ",[133,5356,5357],{"href":2350},"Custom Modules"," with explicit status labeling.",{"title":230,"searchDepth":258,"depth":258,"links":5360},[5361,5362,5363,5364,5365,5366],{"id":5203,"depth":258,"text":5204},{"id":5252,"depth":258,"text":5253},{"id":5281,"depth":258,"text":5282},{"id":5304,"depth":258,"text":5305},{"id":5332,"depth":258,"text":5333},{"id":5350,"depth":258,"text":5351},{"path":617,"title":190,"description":5368,"kind":5369,"section":5187,"order":11,"group":5204,"parentPath":-1,"status":5370,"integration":2706,"publicExport":261,"activation":3242,"package":5371,"aliases":5372,"attrs":5374,"events":5379,"cssVars":5380,"related":5381,"body":5382},"Scroll progress engine that emits a normalized 0..1 timeline and writes progress CSS variables.","built-in-module","stable","@fiddle-digital/string-tune",[5373,190,2890],"progress",[5375,5376,5377,5378,3325,3341,3328,3344],"string-key","string-easing","string-offset-top","string-offset-bottom",[799],[795],[5215,3269],{"type":22,"value":5383,"toc":6156},[5384,5387,5396,5404,5408,5410,5555,5559,5564,5571,5577,5583,5588,5591,5594,5625,5664,5668,5675,5686,5690,5855,6071,6075,6130,6134,6153],[25,5385,190],{"id":5386},"stringprogress",[30,5388,5389,5391,5392,5395],{},[60,5390,190],{}," turns an element's scroll travel into a stable ",[60,5393,5394],{},"0..1"," value. It uses shared geometry attributes such as entry, exit, and offsets, then exposes the result in two public places:",[42,5397,5398,5401],{},[45,5399,5400],{},"a CSS variable",[45,5402,5403],{},"a scoped event",[37,5405,5407],{"id":5406},"public-api","Public API",[174,5409,4905],{"id":4904},[2221,5411,5412,5425],{},[2224,5413,5414],{},[2227,5415,5416,5418,5420,5422],{},[2230,5417,4914],{},[2230,5419,4917],{},[2230,5421,4920],{},[2230,5423,5424],{},"Real runtime effect",[2240,5426,5427,5442,5459,5476,5491,5506,5524,5539],{},[2227,5428,5429,5433,5435,5439],{},[2245,5430,5431],{},[60,5432,5375],{},[2245,5434,2252],{},[2245,5436,5437],{},[60,5438,795],{},[2245,5440,5441],{},"Names the CSS variable written by the module.",[2227,5443,5444,5448,5451,5456],{},[2245,5445,5446],{},[60,5447,5376],{},[2245,5449,5450],{},"easing string",[2245,5452,5453],{},[60,5454,5455],{},"cubic-bezier(0.25, 0.25, 0.25, 0.25)",[2245,5457,5458],{},"Remaps raw linear progress before the event and CSS write happen.",[2227,5460,5461,5465,5468,5473],{},[2245,5462,5463],{},[60,5464,5377],{},[2245,5466,5467],{},"dimension",[2245,5469,5470],{},[60,5471,5472],{},"0%",[2245,5474,5475],{},"Moves the effective end position of the timeline.",[2227,5477,5478,5482,5484,5488],{},[2245,5479,5480],{},[60,5481,5378],{},[2245,5483,5467],{},[2245,5485,5486],{},[60,5487,5472],{},[2245,5489,5490],{},"Moves the effective start position of the timeline.",[2227,5492,5493,5497,5499,5503],{},[2245,5494,5495],{},[60,5496,3325],{},[2245,5498,2252],{},[2245,5500,5501],{},[60,5502,4769],{},[2245,5504,5505],{},"Picks the element edge used to start the timeline.",[2227,5507,5508,5512,5514,5519],{},[2245,5509,5510],{},[60,5511,3341],{},[2245,5513,2252],{},[2245,5515,5516],{},[60,5517,5518],{},"bottom",[2245,5520,5521,5522,106],{},"Picks the viewport edge paired with ",[60,5523,3325],{},[2227,5525,5526,5530,5532,5536],{},[2245,5527,5528],{},[60,5529,3328],{},[2245,5531,2252],{},[2245,5533,5534],{},[60,5535,5518],{},[2245,5537,5538],{},"Picks the element edge used to finish the timeline.",[2227,5540,5541,5545,5547,5551],{},[2245,5542,5543],{},[60,5544,3344],{},[2245,5546,2252],{},[2245,5548,5549],{},[60,5550,4769],{},[2245,5552,5521,5553,106],{},[60,5554,3328],{},[174,5556,5558],{"id":5557},"css-variables-and-dom-output","CSS Variables and DOM Output",[30,5560,5561,5563],{},[60,5562,190],{}," writes one CSS variable to the source element:",[42,5565,5566],{},[45,5567,5568,5569],{},"the variable named by ",[60,5570,5375],{},[30,5572,5573,5574,5576],{},"If you do not provide ",[60,5575,5375],{},", the module writes:",[42,5578,5579],{},[45,5580,5581],{},[60,5582,795],{},[30,5584,5585,5586,106],{},"The written value is the eased progress, already clamped to ",[60,5587,5394],{},[30,5589,5590],{},"The module does not apply any inline transform, does not toggle any classes, and does not expose raw progress as public CSS.",[174,5592,5593],{"id":3814},"Events",[2221,5595,5596,5609],{},[2224,5597,5598],{},[2227,5599,5600,5603,5606],{},[2230,5601,5602],{},"Channel",[2230,5604,5605],{},"Payload",[2230,5607,5608],{},"Fired when",[2240,5610,5611],{},[2227,5612,5613,5617,5622],{},[2245,5614,5615],{},[60,5616,799],{},[2245,5618,5619],{},[60,5620,5621],{},"number",[2245,5623,5624],{},"The eased progress value changes",[225,5626,5628],{"className":227,"code":5627,"language":229,"meta":230,"style":230},"stringTune.on('object:progress:page-progress', (progress) => {\n  console.log(progress);\n});\n",[60,5629,5630,5651,5660],{"__ignoreMap":230},[234,5631,5632,5634,5636,5638,5641,5643,5645,5647,5649],{"class":236,"line":237},[234,5633,296],{"class":244},[234,5635,1536],{"class":281},[234,5637,329],{"class":244},[234,5639,5640],{"class":251},"'object:progress:page-progress'",[234,5642,2976],{"class":244},[234,5644,5373],{"class":899},[234,5646,903],{"class":244},[234,5648,906],{"class":240},[234,5650,909],{"class":244},[234,5652,5653,5655,5657],{"class":236,"line":258},[234,5654,1482],{"class":244},[234,5656,1485],{"class":281},[234,5658,5659],{"class":244},"(progress);\n",[234,5661,5662],{"class":236,"line":265},[234,5663,1040],{"class":244},[174,5665,5667],{"id":5666},"mirror-behavior","Mirror Behavior",[30,5669,5670,5671,5674],{},"If another element uses ",[60,5672,5673],{},"string-copy-from=\"\u003Csource-id>\"",", the progress output is mirrored there too.",[42,5676,5677,5680],{},[45,5678,5679],{},"the same CSS variable name is written to the mirror",[45,5681,5682,5683,5685],{},"the mirror can apply its own ",[60,5684,5376],{},", because mirror easing is resolved separately from the source element",[37,5687,5689],{"id":5688},"quick-example","Quick Example",[225,5691,5693],{"className":338,"code":5692,"language":340,"meta":230,"style":230},"\u003Csection class=\"hero\">Scroll down\u003C/section>\n\n\u003Csection string=\"progress\" string-id=\"page-progress\" class=\"progress-stage\">\n  \u003Cdiv class=\"progress-demo\">\n    \u003Cdiv class=\"progress-box\">\u003C/div>\n    \u003Cdiv class=\"progress-label\">Progress \u003Cspan id=\"progress-value\">0%\u003C/span>\u003C/div>\n  \u003C/div>\n\u003C/section>\n\n\u003Csection class=\"hero\">Scroll up\u003C/section>\n",[60,5694,5695,5714,5718,5746,5761,5780,5816,5824,5832,5836],{"__ignoreMap":230},[234,5696,5697,5699,5701,5703,5705,5707,5710,5712],{"class":236,"line":237},[234,5698,347],{"class":244},[234,5700,740],{"class":350},[234,5702,1297],{"class":281},[234,5704,357],{"class":244},[234,5706,368],{"class":251},[234,5708,5709],{"class":244},">Scroll down\u003C/",[234,5711,740],{"class":350},[234,5713,376],{"class":244},[234,5715,5716],{"class":236,"line":258},[234,5717,262],{"emptyLinePlaceholder":261},[234,5719,5720,5722,5724,5726,5728,5730,5732,5734,5737,5739,5741,5744],{"class":236,"line":265},[234,5721,347],{"class":244},[234,5723,740],{"class":350},[234,5725,354],{"class":281},[234,5727,357],{"class":244},[234,5729,360],{"class":251},[234,5731,363],{"class":281},[234,5733,357],{"class":244},[234,5735,5736],{"class":251},"\"page-progress\"",[234,5738,1297],{"class":281},[234,5740,357],{"class":244},[234,5742,5743],{"class":251},"\"progress-stage\"",[234,5745,376],{"class":244},[234,5747,5748,5750,5752,5754,5756,5759],{"class":236,"line":288},[234,5749,1292],{"class":244},[234,5751,351],{"class":350},[234,5753,1297],{"class":281},[234,5755,357],{"class":244},[234,5757,5758],{"class":251},"\"progress-demo\"",[234,5760,376],{"class":244},[234,5762,5763,5765,5767,5769,5771,5774,5776,5778],{"class":236,"line":293},[234,5764,1321],{"class":244},[234,5766,351],{"class":350},[234,5768,1297],{"class":281},[234,5770,357],{"class":244},[234,5772,5773],{"class":251},"\"progress-box\"",[234,5775,371],{"class":244},[234,5777,351],{"class":350},[234,5779,376],{"class":244},[234,5781,5782,5784,5786,5788,5790,5793,5796,5798,5800,5802,5805,5808,5810,5812,5814],{"class":236,"line":305},[234,5783,1321],{"class":244},[234,5785,351],{"class":350},[234,5787,1297],{"class":281},[234,5789,357],{"class":244},[234,5791,5792],{"class":251},"\"progress-label\"",[234,5794,5795],{"class":244},">Progress \u003C",[234,5797,234],{"class":350},[234,5799,5157],{"class":281},[234,5801,357],{"class":244},[234,5803,5804],{"class":251},"\"progress-value\"",[234,5806,5807],{"class":244},">0%\u003C/",[234,5809,234],{"class":350},[234,5811,371],{"class":244},[234,5813,351],{"class":350},[234,5815,376],{"class":244},[234,5817,5818,5820,5822],{"class":236,"line":321},[234,5819,1393],{"class":244},[234,5821,351],{"class":350},[234,5823,376],{"class":244},[234,5825,5826,5828,5830],{"class":236,"line":946},[234,5827,1402],{"class":244},[234,5829,740],{"class":350},[234,5831,376],{"class":244},[234,5833,5834],{"class":236,"line":955},[234,5835,262],{"emptyLinePlaceholder":261},[234,5837,5838,5840,5842,5844,5846,5848,5851,5853],{"class":236,"line":11},[234,5839,347],{"class":244},[234,5841,740],{"class":350},[234,5843,1297],{"class":281},[234,5845,357],{"class":244},[234,5847,368],{"class":251},[234,5849,5850],{"class":244},">Scroll up\u003C/",[234,5852,740],{"class":350},[234,5854,376],{"class":244},[225,5856,5860],{"className":5857,"code":5858,"language":5859,"meta":230,"style":230},"language-css shiki shiki-themes github-light github-dark",".hero,\n.progress-stage {\n  min-height: 100vh;\n  display: grid;\n  place-items: center;\n}\n\n.progress-demo {\n  display: grid;\n  gap: 20px;\n  justify-items: center;\n}\n\n.progress-box {\n  width: 160px;\n  height: 160px;\n  border: 2px solid black;\n  background: white;\n  transform: rotate(calc(var(--progress, 0) * 1turn));\n}\n","css",[60,5861,5862,5868,5875,5888,5898,5909,5913,5917,5924,5934,5947,5958,5962,5966,5973,5987,6000,6019,6031,6067],{"__ignoreMap":230},[234,5863,5864,5866],{"class":236,"line":237},[234,5865,1654],{"class":281},[234,5867,2506],{"class":244},[234,5869,5870,5873],{"class":236,"line":258},[234,5871,5872],{"class":281},".progress-stage",[234,5874,909],{"class":244},[234,5876,5877,5879,5881,5884,5886],{"class":236,"line":265},[234,5878,1661],{"class":271},[234,5880,1443],{"class":244},[234,5882,5883],{"class":271},"100",[234,5885,1669],{"class":240},[234,5887,255],{"class":244},[234,5889,5890,5892,5894,5896],{"class":236,"line":288},[234,5891,1677],{"class":271},[234,5893,1443],{"class":244},[234,5895,1682],{"class":271},[234,5897,255],{"class":244},[234,5899,5900,5903,5905,5907],{"class":236,"line":293},[234,5901,5902],{"class":271},"  place-items",[234,5904,1443],{"class":244},[234,5906,1695],{"class":271},[234,5908,255],{"class":244},[234,5910,5911],{"class":236,"line":305},[234,5912,1143],{"class":244},[234,5914,5915],{"class":236,"line":321},[234,5916,262],{"emptyLinePlaceholder":261},[234,5918,5919,5922],{"class":236,"line":946},[234,5920,5921],{"class":281},".progress-demo",[234,5923,909],{"class":244},[234,5925,5926,5928,5930,5932],{"class":236,"line":955},[234,5927,1677],{"class":271},[234,5929,1443],{"class":244},[234,5931,1682],{"class":271},[234,5933,255],{"class":244},[234,5935,5936,5938,5940,5943,5945],{"class":236,"line":11},[234,5937,1703],{"class":271},[234,5939,1443],{"class":244},[234,5941,5942],{"class":271},"20",[234,5944,1789],{"class":240},[234,5946,255],{"class":244},[234,5948,5949,5952,5954,5956],{"class":236,"line":980},[234,5950,5951],{"class":271},"  justify-items",[234,5953,1443],{"class":244},[234,5955,1695],{"class":271},[234,5957,255],{"class":244},[234,5959,5960],{"class":236,"line":994},[234,5961,1143],{"class":244},[234,5963,5964],{"class":236,"line":1000},[234,5965,262],{"emptyLinePlaceholder":261},[234,5967,5968,5971],{"class":236,"line":1005},[234,5969,5970],{"class":281},".progress-box",[234,5972,909],{"class":244},[234,5974,5975,5978,5980,5983,5985],{"class":236,"line":1013},[234,5976,5977],{"class":271},"  width",[234,5979,1443],{"class":244},[234,5981,5982],{"class":271},"160",[234,5984,1789],{"class":240},[234,5986,255],{"class":244},[234,5988,5989,5992,5994,5996,5998],{"class":236,"line":1019},[234,5990,5991],{"class":271},"  height",[234,5993,1443],{"class":244},[234,5995,5982],{"class":271},[234,5997,1789],{"class":240},[234,5999,255],{"class":244},[234,6001,6002,6004,6006,6009,6011,6014,6017],{"class":236,"line":1025},[234,6003,1769],{"class":271},[234,6005,1443],{"class":244},[234,6007,6008],{"class":271},"2",[234,6010,1789],{"class":240},[234,6012,6013],{"class":271}," solid",[234,6015,6016],{"class":271}," black",[234,6018,255],{"class":244},[234,6020,6021,6024,6026,6029],{"class":236,"line":1031},[234,6022,6023],{"class":271},"  background",[234,6025,1443],{"class":244},[234,6027,6028],{"class":271},"white",[234,6030,255],{"class":244},[234,6032,6033,6035,6037,6040,6042,6044,6046,6048,6050,6052,6054,6056,6058,6060,6062,6065],{"class":236,"line":1037},[234,6034,1810],{"class":271},[234,6036,1443],{"class":244},[234,6038,6039],{"class":271},"rotate",[234,6041,329],{"class":244},[234,6043,1820],{"class":271},[234,6045,329],{"class":244},[234,6047,1825],{"class":271},[234,6049,329],{"class":244},[234,6051,795],{"class":899},[234,6053,1833],{"class":244},[234,6055,1836],{"class":271},[234,6057,903],{"class":244},[234,6059,1841],{"class":240},[234,6061,1844],{"class":271},[234,6063,6064],{"class":240},"turn",[234,6066,1875],{"class":244},[234,6068,6069],{"class":236,"line":427},[234,6070,1143],{"class":244},[37,6072,6074],{"id":6073},"registration","Registration",[225,6076,6078],{"className":227,"code":6077,"language":229,"meta":230,"style":230},"import StringTune, { StringProgress } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\nstringTune.use(StringProgress);\nstringTune.start(60);\n",[60,6079,6080,6092,6096,6110,6118],{"__ignoreMap":230},[234,6081,6082,6084,6086,6088,6090],{"class":236,"line":237},[234,6083,241],{"class":240},[234,6085,479],{"class":244},[234,6087,248],{"class":240},[234,6089,252],{"class":251},[234,6091,255],{"class":244},[234,6093,6094],{"class":236,"line":258},[234,6095,262],{"emptyLinePlaceholder":261},[234,6097,6098,6100,6102,6104,6106,6108],{"class":236,"line":265},[234,6099,268],{"class":240},[234,6101,272],{"class":271},[234,6103,275],{"class":240},[234,6105,278],{"class":244},[234,6107,282],{"class":281},[234,6109,285],{"class":244},[234,6111,6112,6114,6116],{"class":236,"line":288},[234,6113,296],{"class":244},[234,6115,299],{"class":281},[234,6117,302],{"class":244},[234,6119,6120,6122,6124,6126,6128],{"class":236,"line":293},[234,6121,296],{"class":244},[234,6123,326],{"class":281},[234,6125,329],{"class":244},[234,6127,332],{"class":271},[234,6129,335],{"class":244},[37,6131,6133],{"id":6132},"detailed-behavior","Detailed Behavior",[42,6135,6136,6141,6144,6150],{},[45,6137,6138,6139,106],{},"Progress is computed from shared timeline geometry inside ",[60,6140,2379],{},[45,6142,6143],{},"Raw progress stays internal. The public event and the public CSS variable both use the eased value.",[45,6145,6146,6147,6149],{},"Values are clamped to ",[60,6148,5394],{},", and tiny floating-point noise is ignored.",[45,6151,6152],{},"On disconnect, the module removes the written CSS variable from the source element and its mirrors.",[410,6154,6155],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":230,"searchDepth":258,"depth":258,"links":6157},[6158,6164,6165,6166],{"id":5406,"depth":258,"text":5407,"children":6159},[6160,6161,6162,6163],{"id":4904,"depth":265,"text":4905},{"id":5557,"depth":265,"text":5558},{"id":3814,"depth":265,"text":5593},{"id":5666,"depth":265,"text":5667},{"id":5688,"depth":258,"text":5689},{"id":6073,"depth":258,"text":6074},{"id":6132,"depth":258,"text":6133},{"path":5215,"title":5216,"description":6168,"kind":5369,"section":5187,"order":427,"group":5204,"parentPath":-1,"status":5370,"integration":2706,"publicExport":261,"activation":6169,"package":5371,"aliases":6170,"attrs":6172,"events":6174,"cssVars":6176,"related":6178,"body":6179},"Maps a named progress source into a subrange so multiple timelines can be derived from one driver.","string=\"progress-part\"",[6171,5216],"progress-part",[6173],"string-part-of",[6175],"object:progress-slice:\u003Cid>",[6177],"--progress-slice",[617,3269,2899],{"type":22,"value":6180,"toc":7063},[6181,6184,6191,6194,6214,6216,6218,6253,6255,6258,6264,6270,6272,6299,6301,6309,6311,6658,6950,6952,7017,7028,7030,7060],[25,6182,5216],{"id":6183},"stringprogresspart",[30,6185,6186,6188,6189,106],{},[60,6187,5216],{}," does not track scroll by itself. It listens to a progress source by id, takes only one segment of that source timeline, and remaps that segment back to ",[60,6190,5394],{},[30,6192,6193],{},"In practice:",[42,6195,6196,6206],{},[45,6197,6198,6199,6202,6203],{},"source progress ",[60,6200,6201],{},"0.00 -> 0.25"," can become local slice ",[60,6204,6205],{},"0 -> 1",[45,6207,6198,6208,6211,6212],{},[60,6209,6210],{},"0.25 -> 1.00"," can become another slice ",[60,6213,6205],{},[37,6215,5407],{"id":5406},[174,6217,4905],{"id":4904},[2221,6219,6220,6232],{},[2224,6221,6222],{},[2227,6223,6224,6226,6228,6230],{},[2230,6225,4914],{},[2230,6227,4917],{},[2230,6229,4920],{},[2230,6231,5424],{},[2240,6233,6234],{},[2227,6235,6236,6240,6242,6247],{},[2245,6237,6238],{},[60,6239,6173],{},[2245,6241,2252],{},[2245,6243,6244],{},[60,6245,6246],{},"\"\"",[2245,6248,6249,6250,106],{},"Declares the source id and slice range in the form ",[60,6251,6252],{},"source-id[start-end]",[174,6254,5558],{"id":5557},[30,6256,6257],{},"The module writes one CSS variable:",[42,6259,6260],{},[45,6261,6262],{},[60,6263,6177],{},[30,6265,6266,6267,6269],{},"The value is written directly to the ",[60,6268,6169],{}," element itself. There is no configurable key for this module.",[174,6271,5593],{"id":3814},[2221,6273,6274,6284],{},[2224,6275,6276],{},[2227,6277,6278,6280,6282],{},[2230,6279,5602],{},[2230,6281,5605],{},[2230,6283,5608],{},[2240,6285,6286],{},[2227,6287,6288,6292,6296],{},[2245,6289,6290],{},[60,6291,6175],{},[2245,6293,6294],{},[60,6295,5621],{},[2245,6297,6298],{},"The remapped slice value changes",[174,6300,5667],{"id":5666},[30,6302,6303,6305,6306,6308],{},[60,6304,5216],{}," does not propagate ",[60,6307,6177],{}," to mirrors in the current runtime. The write happens only on the source progress-part element.",[37,6310,5689],{"id":5688},[225,6312,6314],{"className":338,"code":6313,"language":340,"meta":230,"style":230},"\u003Csection class=\"hero\">Scroll down\u003C/section>\n\n\u003Csection string=\"progress\" string-id=\"page-progress\" class=\"progress-stage\">\n  \u003Cdiv class=\"slice-stack\">\n    \u003Cdiv class=\"slice-row\">\n      \u003Cdiv class=\"slice-label\">0% - 50%\u003C/div>\n      \u003Cdiv class=\"slice-demo\">\n        \u003Cdiv\n          class=\"slice-box\"\n          string=\"progress-part\"\n          string-id=\"slice-a\"\n          string-part-of=\"page-progress[0-0.5]\"\n        >\u003C/div>\n      \u003C/div>\n    \u003C/div>\n\n    \u003Cdiv class=\"slice-row\">\n      \u003Cdiv class=\"slice-label\">50% - 100%\u003C/div>\n      \u003Cdiv class=\"slice-demo\">\n        \u003Cdiv\n          class=\"slice-box\"\n          string=\"progress-part\"\n          string-id=\"slice-b\"\n          string-part-of=\"page-progress[0.5-1]\"\n        >\u003C/div>\n      \u003C/div>\n    \u003C/div>\n  \u003C/div>\n\u003C/section>\n\n\u003Csection class=\"hero\">Scroll up\u003C/section>\n",[60,6315,6316,6334,6338,6364,6379,6394,6415,6430,6438,6448,6458,6468,6478,6487,6496,6505,6509,6523,6542,6556,6562,6570,6578,6587,6596,6604,6612,6620,6628,6636,6640],{"__ignoreMap":230},[234,6317,6318,6320,6322,6324,6326,6328,6330,6332],{"class":236,"line":237},[234,6319,347],{"class":244},[234,6321,740],{"class":350},[234,6323,1297],{"class":281},[234,6325,357],{"class":244},[234,6327,368],{"class":251},[234,6329,5709],{"class":244},[234,6331,740],{"class":350},[234,6333,376],{"class":244},[234,6335,6336],{"class":236,"line":258},[234,6337,262],{"emptyLinePlaceholder":261},[234,6339,6340,6342,6344,6346,6348,6350,6352,6354,6356,6358,6360,6362],{"class":236,"line":265},[234,6341,347],{"class":244},[234,6343,740],{"class":350},[234,6345,354],{"class":281},[234,6347,357],{"class":244},[234,6349,360],{"class":251},[234,6351,363],{"class":281},[234,6353,357],{"class":244},[234,6355,5736],{"class":251},[234,6357,1297],{"class":281},[234,6359,357],{"class":244},[234,6361,5743],{"class":251},[234,6363,376],{"class":244},[234,6365,6366,6368,6370,6372,6374,6377],{"class":236,"line":288},[234,6367,1292],{"class":244},[234,6369,351],{"class":350},[234,6371,1297],{"class":281},[234,6373,357],{"class":244},[234,6375,6376],{"class":251},"\"slice-stack\"",[234,6378,376],{"class":244},[234,6380,6381,6383,6385,6387,6389,6392],{"class":236,"line":293},[234,6382,1321],{"class":244},[234,6384,351],{"class":350},[234,6386,1297],{"class":281},[234,6388,357],{"class":244},[234,6390,6391],{"class":251},"\"slice-row\"",[234,6393,376],{"class":244},[234,6395,6396,6399,6401,6403,6405,6408,6411,6413],{"class":236,"line":305},[234,6397,6398],{"class":244},"      \u003C",[234,6400,351],{"class":350},[234,6402,1297],{"class":281},[234,6404,357],{"class":244},[234,6406,6407],{"class":251},"\"slice-label\"",[234,6409,6410],{"class":244},">0% - 50%\u003C/",[234,6412,351],{"class":350},[234,6414,376],{"class":244},[234,6416,6417,6419,6421,6423,6425,6428],{"class":236,"line":321},[234,6418,6398],{"class":244},[234,6420,351],{"class":350},[234,6422,1297],{"class":281},[234,6424,357],{"class":244},[234,6426,6427],{"class":251},"\"slice-demo\"",[234,6429,376],{"class":244},[234,6431,6432,6435],{"class":236,"line":946},[234,6433,6434],{"class":244},"        \u003C",[234,6436,6437],{"class":350},"div\n",[234,6439,6440,6443,6445],{"class":236,"line":955},[234,6441,6442],{"class":281},"          class",[234,6444,357],{"class":244},[234,6446,6447],{"class":251},"\"slice-box\"\n",[234,6449,6450,6453,6455],{"class":236,"line":11},[234,6451,6452],{"class":281},"          string",[234,6454,357],{"class":244},[234,6456,6457],{"class":251},"\"progress-part\"\n",[234,6459,6460,6463,6465],{"class":236,"line":980},[234,6461,6462],{"class":281},"          string-id",[234,6464,357],{"class":244},[234,6466,6467],{"class":251},"\"slice-a\"\n",[234,6469,6470,6473,6475],{"class":236,"line":994},[234,6471,6472],{"class":281},"          string-part-of",[234,6474,357],{"class":244},[234,6476,6477],{"class":251},"\"page-progress[0-0.5]\"\n",[234,6479,6480,6483,6485],{"class":236,"line":1000},[234,6481,6482],{"class":244},"        >\u003C/",[234,6484,351],{"class":350},[234,6486,376],{"class":244},[234,6488,6489,6492,6494],{"class":236,"line":1005},[234,6490,6491],{"class":244},"      \u003C/",[234,6493,351],{"class":350},[234,6495,376],{"class":244},[234,6497,6498,6501,6503],{"class":236,"line":1013},[234,6499,6500],{"class":244},"    \u003C/",[234,6502,351],{"class":350},[234,6504,376],{"class":244},[234,6506,6507],{"class":236,"line":1019},[234,6508,262],{"emptyLinePlaceholder":261},[234,6510,6511,6513,6515,6517,6519,6521],{"class":236,"line":1025},[234,6512,1321],{"class":244},[234,6514,351],{"class":350},[234,6516,1297],{"class":281},[234,6518,357],{"class":244},[234,6520,6391],{"class":251},[234,6522,376],{"class":244},[234,6524,6525,6527,6529,6531,6533,6535,6538,6540],{"class":236,"line":1031},[234,6526,6398],{"class":244},[234,6528,351],{"class":350},[234,6530,1297],{"class":281},[234,6532,357],{"class":244},[234,6534,6407],{"class":251},[234,6536,6537],{"class":244},">50% - 100%\u003C/",[234,6539,351],{"class":350},[234,6541,376],{"class":244},[234,6543,6544,6546,6548,6550,6552,6554],{"class":236,"line":1037},[234,6545,6398],{"class":244},[234,6547,351],{"class":350},[234,6549,1297],{"class":281},[234,6551,357],{"class":244},[234,6553,6427],{"class":251},[234,6555,376],{"class":244},[234,6557,6558,6560],{"class":236,"line":427},[234,6559,6434],{"class":244},[234,6561,6437],{"class":350},[234,6563,6564,6566,6568],{"class":236,"line":1571},[234,6565,6442],{"class":281},[234,6567,357],{"class":244},[234,6569,6447],{"class":251},[234,6571,6572,6574,6576],{"class":236,"line":1592},[234,6573,6452],{"class":281},[234,6575,357],{"class":244},[234,6577,6457],{"class":251},[234,6579,6580,6582,6584],{"class":236,"line":1600},[234,6581,6462],{"class":281},[234,6583,357],{"class":244},[234,6585,6586],{"class":251},"\"slice-b\"\n",[234,6588,6589,6591,6593],{"class":236,"line":1615},[234,6590,6472],{"class":281},[234,6592,357],{"class":244},[234,6594,6595],{"class":251},"\"page-progress[0.5-1]\"\n",[234,6597,6598,6600,6602],{"class":236,"line":1620},[234,6599,6482],{"class":244},[234,6601,351],{"class":350},[234,6603,376],{"class":244},[234,6605,6606,6608,6610],{"class":236,"line":1625},[234,6607,6491],{"class":244},[234,6609,351],{"class":350},[234,6611,376],{"class":244},[234,6613,6614,6616,6618],{"class":236,"line":1634},[234,6615,6500],{"class":244},[234,6617,351],{"class":350},[234,6619,376],{"class":244},[234,6621,6622,6624,6626],{"class":236,"line":1639},[234,6623,1393],{"class":244},[234,6625,351],{"class":350},[234,6627,376],{"class":244},[234,6629,6630,6632,6634],{"class":236,"line":1651},[234,6631,1402],{"class":244},[234,6633,740],{"class":350},[234,6635,376],{"class":244},[234,6637,6638],{"class":236,"line":609},[234,6639,262],{"emptyLinePlaceholder":261},[234,6641,6642,6644,6646,6648,6650,6652,6654,6656],{"class":236,"line":1674},[234,6643,347],{"class":244},[234,6645,740],{"class":350},[234,6647,1297],{"class":281},[234,6649,357],{"class":244},[234,6651,368],{"class":251},[234,6653,5850],{"class":244},[234,6655,740],{"class":350},[234,6657,376],{"class":244},[225,6659,6661],{"className":5857,"code":6660,"language":5859,"meta":230,"style":230},".hero,\n.progress-stage {\n  min-height: 100vh;\n  display: grid;\n  place-items: center;\n}\n\n.slice-stack {\n  display: grid;\n  gap: 24px;\n}\n\n.slice-row {\n  display: grid;\n  grid-template-columns: 120px 1fr;\n  gap: 20px;\n  align-items: center;\n}\n\n.slice-demo {\n  display: grid;\n  justify-items: center;\n}\n\n.slice-box {\n  width: 120px;\n  height: 120px;\n  border: 2px solid black;\n  background: white;\n  transform: rotate(calc(var(--progress-slice, 0) * 1turn));\n}\n",[60,6662,6663,6669,6675,6687,6697,6707,6711,6715,6722,6732,6745,6749,6753,6760,6770,6789,6801,6812,6816,6820,6827,6837,6847,6851,6855,6862,6874,6886,6902,6912,6946],{"__ignoreMap":230},[234,6664,6665,6667],{"class":236,"line":237},[234,6666,1654],{"class":281},[234,6668,2506],{"class":244},[234,6670,6671,6673],{"class":236,"line":258},[234,6672,5872],{"class":281},[234,6674,909],{"class":244},[234,6676,6677,6679,6681,6683,6685],{"class":236,"line":265},[234,6678,1661],{"class":271},[234,6680,1443],{"class":244},[234,6682,5883],{"class":271},[234,6684,1669],{"class":240},[234,6686,255],{"class":244},[234,6688,6689,6691,6693,6695],{"class":236,"line":288},[234,6690,1677],{"class":271},[234,6692,1443],{"class":244},[234,6694,1682],{"class":271},[234,6696,255],{"class":244},[234,6698,6699,6701,6703,6705],{"class":236,"line":293},[234,6700,5902],{"class":271},[234,6702,1443],{"class":244},[234,6704,1695],{"class":271},[234,6706,255],{"class":244},[234,6708,6709],{"class":236,"line":305},[234,6710,1143],{"class":244},[234,6712,6713],{"class":236,"line":321},[234,6714,262],{"emptyLinePlaceholder":261},[234,6716,6717,6720],{"class":236,"line":946},[234,6718,6719],{"class":281},".slice-stack",[234,6721,909],{"class":244},[234,6723,6724,6726,6728,6730],{"class":236,"line":955},[234,6725,1677],{"class":271},[234,6727,1443],{"class":244},[234,6729,1682],{"class":271},[234,6731,255],{"class":244},[234,6733,6734,6736,6738,6741,6743],{"class":236,"line":11},[234,6735,1703],{"class":271},[234,6737,1443],{"class":244},[234,6739,6740],{"class":271},"24",[234,6742,1789],{"class":240},[234,6744,255],{"class":244},[234,6746,6747],{"class":236,"line":980},[234,6748,1143],{"class":244},[234,6750,6751],{"class":236,"line":994},[234,6752,262],{"emptyLinePlaceholder":261},[234,6754,6755,6758],{"class":236,"line":1000},[234,6756,6757],{"class":281},".slice-row",[234,6759,909],{"class":244},[234,6761,6762,6764,6766,6768],{"class":236,"line":1005},[234,6763,1677],{"class":271},[234,6765,1443],{"class":244},[234,6767,1682],{"class":271},[234,6769,255],{"class":244},[234,6771,6772,6775,6777,6780,6782,6784,6787],{"class":236,"line":1013},[234,6773,6774],{"class":271},"  grid-template-columns",[234,6776,1443],{"class":244},[234,6778,6779],{"class":271},"120",[234,6781,1789],{"class":240},[234,6783,1844],{"class":271},[234,6785,6786],{"class":240},"fr",[234,6788,255],{"class":244},[234,6790,6791,6793,6795,6797,6799],{"class":236,"line":1019},[234,6792,1703],{"class":271},[234,6794,1443],{"class":244},[234,6796,5942],{"class":271},[234,6798,1789],{"class":240},[234,6800,255],{"class":244},[234,6802,6803,6806,6808,6810],{"class":236,"line":1025},[234,6804,6805],{"class":271},"  align-items",[234,6807,1443],{"class":244},[234,6809,1695],{"class":271},[234,6811,255],{"class":244},[234,6813,6814],{"class":236,"line":1031},[234,6815,1143],{"class":244},[234,6817,6818],{"class":236,"line":1037},[234,6819,262],{"emptyLinePlaceholder":261},[234,6821,6822,6825],{"class":236,"line":427},[234,6823,6824],{"class":281},".slice-demo",[234,6826,909],{"class":244},[234,6828,6829,6831,6833,6835],{"class":236,"line":1571},[234,6830,1677],{"class":271},[234,6832,1443],{"class":244},[234,6834,1682],{"class":271},[234,6836,255],{"class":244},[234,6838,6839,6841,6843,6845],{"class":236,"line":1592},[234,6840,5951],{"class":271},[234,6842,1443],{"class":244},[234,6844,1695],{"class":271},[234,6846,255],{"class":244},[234,6848,6849],{"class":236,"line":1600},[234,6850,1143],{"class":244},[234,6852,6853],{"class":236,"line":1615},[234,6854,262],{"emptyLinePlaceholder":261},[234,6856,6857,6860],{"class":236,"line":1620},[234,6858,6859],{"class":281},".slice-box",[234,6861,909],{"class":244},[234,6863,6864,6866,6868,6870,6872],{"class":236,"line":1625},[234,6865,5977],{"class":271},[234,6867,1443],{"class":244},[234,6869,6779],{"class":271},[234,6871,1789],{"class":240},[234,6873,255],{"class":244},[234,6875,6876,6878,6880,6882,6884],{"class":236,"line":1634},[234,6877,5991],{"class":271},[234,6879,1443],{"class":244},[234,6881,6779],{"class":271},[234,6883,1789],{"class":240},[234,6885,255],{"class":244},[234,6887,6888,6890,6892,6894,6896,6898,6900],{"class":236,"line":1639},[234,6889,1769],{"class":271},[234,6891,1443],{"class":244},[234,6893,6008],{"class":271},[234,6895,1789],{"class":240},[234,6897,6013],{"class":271},[234,6899,6016],{"class":271},[234,6901,255],{"class":244},[234,6903,6904,6906,6908,6910],{"class":236,"line":1651},[234,6905,6023],{"class":271},[234,6907,1443],{"class":244},[234,6909,6028],{"class":271},[234,6911,255],{"class":244},[234,6913,6914,6916,6918,6920,6922,6924,6926,6928,6930,6932,6934,6936,6938,6940,6942,6944],{"class":236,"line":609},[234,6915,1810],{"class":271},[234,6917,1443],{"class":244},[234,6919,6039],{"class":271},[234,6921,329],{"class":244},[234,6923,1820],{"class":271},[234,6925,329],{"class":244},[234,6927,1825],{"class":271},[234,6929,329],{"class":244},[234,6931,6177],{"class":899},[234,6933,1833],{"class":244},[234,6935,1836],{"class":271},[234,6937,903],{"class":244},[234,6939,1841],{"class":240},[234,6941,1844],{"class":271},[234,6943,6064],{"class":240},[234,6945,1875],{"class":244},[234,6947,6948],{"class":236,"line":1674},[234,6949,1143],{"class":244},[37,6951,6074],{"id":6073},[225,6953,6955],{"className":227,"code":6954,"language":229,"meta":230,"style":230},"import StringTune, { StringProgress, StringProgressPart } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\nstringTune.use(StringProgress);\nstringTune.use(StringProgressPart);\nstringTune.start(60);\n",[60,6956,6957,6970,6974,6988,6996,7005],{"__ignoreMap":230},[234,6958,6959,6961,6964,6966,6968],{"class":236,"line":237},[234,6960,241],{"class":240},[234,6962,6963],{"class":244}," StringTune, { StringProgress, StringProgressPart } ",[234,6965,248],{"class":240},[234,6967,252],{"class":251},[234,6969,255],{"class":244},[234,6971,6972],{"class":236,"line":258},[234,6973,262],{"emptyLinePlaceholder":261},[234,6975,6976,6978,6980,6982,6984,6986],{"class":236,"line":265},[234,6977,268],{"class":240},[234,6979,272],{"class":271},[234,6981,275],{"class":240},[234,6983,278],{"class":244},[234,6985,282],{"class":281},[234,6987,285],{"class":244},[234,6989,6990,6992,6994],{"class":236,"line":288},[234,6991,296],{"class":244},[234,6993,299],{"class":281},[234,6995,302],{"class":244},[234,6997,6998,7000,7002],{"class":236,"line":293},[234,6999,296],{"class":244},[234,7001,299],{"class":281},[234,7003,7004],{"class":244},"(StringProgressPart);\n",[234,7006,7007,7009,7011,7013,7015],{"class":236,"line":305},[234,7008,296],{"class":244},[234,7010,326],{"class":281},[234,7012,329],{"class":244},[234,7014,332],{"class":271},[234,7016,335],{"class":244},[30,7018,7019,7021,7022,7024,7025,7027],{},[60,7020,5216],{}," depends on a source module emitting ",[60,7023,799],{},". In the current public runtime that means a ",[60,7026,190],{}," source.",[37,7029,6133],{"id":6132},[42,7031,7032,7040,7051,7057],{},[45,7033,7034,7035,7037,7038,106],{},"The parser expects ",[60,7036,6173],{}," in this exact shape: ",[60,7039,6252],{},[45,7041,7042,7043,1833,7045,7048,7049,106],{},"The current parser accepts positive decimal numbers such as ",[60,7044,1836],{},[60,7046,7047],{},"0.25",", and ",[60,7050,1754],{},[45,7052,7053,7054,7056],{},"Slice progress is clamped back to ",[60,7055,5394],{}," after remapping.",[45,7058,7059],{},"On disconnect, the module unsubscribes from the source progress event.",[410,7061,7062],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":230,"searchDepth":258,"depth":258,"links":7064},[7065,7071,7072,7073],{"id":5406,"depth":258,"text":5407,"children":7066},[7067,7068,7069,7070],{"id":4904,"depth":265,"text":4905},{"id":5557,"depth":265,"text":5558},{"id":3814,"depth":265,"text":5593},{"id":5666,"depth":265,"text":5667},{"id":5688,"depth":258,"text":5689},{"id":6073,"depth":258,"text":6074},{"id":6132,"depth":258,"text":6133},{"path":3269,"title":5221,"description":7075,"kind":5369,"section":5187,"order":609,"group":5204,"parentPath":-1,"status":5370,"integration":2706,"publicExport":261,"activation":7076,"package":5371,"aliases":7077,"attrs":7079,"events":7080,"cssVars":7081,"related":7082,"body":7083},"Transforms scroll progress into parallax travel and emits a numeric object event.","string=\"parallax\"",[7078,5221,2891],"parallax",[],[2894],[],[617,3259,2899],{"type":22,"value":7084,"toc":8014},[7085,7088,7098,7100,7102,7218,7220,7223,7231,7234,7240,7242,7269,7308,7310,7316,7318,7516,7902,7911,7913,7969,7978,7980,8012],[25,7086,5221],{"id":7087},"stringparallax",[30,7089,7090,7092,7093,7095,7096,106],{},[60,7091,5221],{}," uses the same internal timeline math as ",[60,7094,190],{},", but its public output is different. Instead of publishing a progress variable, it computes a vertical translation and writes it directly to ",[60,7097,4642],{},[37,7099,5407],{"id":5406},[174,7101,4905],{"id":4904},[2221,7103,7104,7116],{},[2224,7105,7106],{},[2227,7107,7108,7110,7112,7114],{},[2230,7109,4914],{},[2230,7111,4917],{},[2230,7113,4920],{},[2230,7115,5424],{},[2240,7117,7118,7135,7152,7169,7185,7202],{},[2227,7119,7120,7125,7127,7132],{},[2245,7121,7122],{},[60,7123,7124],{},"string-parallax",[2245,7126,5621],{},[2245,7128,7129],{},[60,7130,7131],{},"0.2",[2245,7133,7134],{},"Sets movement strength. The runtime stores the absolute value as strength and keeps the sign as direction.",[2227,7136,7137,7142,7144,7149],{},[2245,7138,7139],{},[60,7140,7141],{},"string-parallax-bias",[2245,7143,5621],{},[2245,7145,7146],{},[60,7147,7148],{},"0.0",[2245,7150,7151],{},"Redistributes movement before and after the midpoint of the travel.",[2227,7153,7154,7158,7160,7164],{},[2245,7155,7156],{},[60,7157,3325],{},[2245,7159,2252],{},[2245,7161,7162],{},[60,7163,4769],{},[2245,7165,7166,7167,106],{},"Shared timeline start geometry inherited from ",[60,7168,190],{},[2227,7170,7171,7175,7177,7181],{},[2245,7172,7173],{},[60,7174,3341],{},[2245,7176,2252],{},[2245,7178,7179],{},[60,7180,5518],{},[2245,7182,7166,7183,106],{},[60,7184,190],{},[2227,7186,7187,7191,7193,7197],{},[2245,7188,7189],{},[60,7190,3328],{},[2245,7192,2252],{},[2245,7194,7195],{},[60,7196,5518],{},[2245,7198,7199,7200,106],{},"Shared timeline end geometry inherited from ",[60,7201,190],{},[2227,7203,7204,7208,7210,7214],{},[2245,7205,7206],{},[60,7207,3344],{},[2245,7209,2252],{},[2245,7211,7212],{},[60,7213,4769],{},[2245,7215,7199,7216,106],{},[60,7217,190],{},[174,7219,5558],{"id":5557},[30,7221,7222],{},"The module writes:",[42,7224,7225],{},[45,7226,7227,7228],{},"inline ",[60,7229,7230],{},"transform: translate3d(0, \u003Cvalue>px, 0)",[30,7232,7233],{},"It also emits the current translation as a number.",[30,7235,7236,7237,7239],{},"The current runtime does not publish a parallax CSS variable, and it does not publish ",[60,7238,799],{}," for parallax elements.",[174,7241,5593],{"id":3814},[2221,7243,7244,7254],{},[2224,7245,7246],{},[2227,7247,7248,7250,7252],{},[2230,7249,5602],{},[2230,7251,5605],{},[2230,7253,5608],{},[2240,7255,7256],{},[2227,7257,7258,7262,7266],{},[2245,7259,7260],{},[60,7261,2894],{},[2245,7263,7264],{},[60,7265,5621],{},[2245,7267,7268],{},"The current parallax translation is recomputed",[225,7270,7272],{"className":227,"code":7271,"language":229,"meta":230,"style":230},"stringTune.on('object:parallax:hero-layer', (offset) => {\n  console.log(offset);\n});\n",[60,7273,7274,7295,7304],{"__ignoreMap":230},[234,7275,7276,7278,7280,7282,7285,7287,7289,7291,7293],{"class":236,"line":237},[234,7277,296],{"class":244},[234,7279,1536],{"class":281},[234,7281,329],{"class":244},[234,7283,7284],{"class":251},"'object:parallax:hero-layer'",[234,7286,2976],{"class":244},[234,7288,2719],{"class":899},[234,7290,903],{"class":244},[234,7292,906],{"class":240},[234,7294,909],{"class":244},[234,7296,7297,7299,7301],{"class":236,"line":258},[234,7298,1482],{"class":244},[234,7300,1485],{"class":281},[234,7302,7303],{"class":244},"(offset);\n",[234,7305,7306],{"class":236,"line":265},[234,7307,1040],{"class":244},[174,7309,5667],{"id":5666},[30,7311,7312,7313,7315],{},"If a mirror is linked with ",[60,7314,2457],{},", the same transform string is applied to the mirror element too.",[37,7317,5689],{"id":5688},[225,7319,7321],{"className":338,"code":7320,"language":340,"meta":230,"style":230},"\u003Csection class=\"hero\">Scroll down\u003C/section>\n\n\u003Csection class=\"parallax-frame\">\n  \u003Cdiv string=\"parallax\" string-id=\"hero-layer\" string-parallax=\"0.3\" class=\"parallax-layer\">\n    \u003Cdiv class=\"parallax-inner\">\u003C/div>\n  \u003C/div>\n\n  \u003Cdiv class=\"parallax-center\">\n    \u003Cdiv class=\"parallax-label\">Offset \u003Cspan id=\"parallax-value\">0\u003C/span>px\u003C/div>\n  \u003C/div>\n\u003C/section>\n\n\u003Csection class=\"hero\">Scroll up\u003C/section>\n",[60,7322,7323,7341,7345,7360,7395,7414,7422,7426,7441,7478,7486,7494,7498],{"__ignoreMap":230},[234,7324,7325,7327,7329,7331,7333,7335,7337,7339],{"class":236,"line":237},[234,7326,347],{"class":244},[234,7328,740],{"class":350},[234,7330,1297],{"class":281},[234,7332,357],{"class":244},[234,7334,368],{"class":251},[234,7336,5709],{"class":244},[234,7338,740],{"class":350},[234,7340,376],{"class":244},[234,7342,7343],{"class":236,"line":258},[234,7344,262],{"emptyLinePlaceholder":261},[234,7346,7347,7349,7351,7353,7355,7358],{"class":236,"line":265},[234,7348,347],{"class":244},[234,7350,740],{"class":350},[234,7352,1297],{"class":281},[234,7354,357],{"class":244},[234,7356,7357],{"class":251},"\"parallax-frame\"",[234,7359,376],{"class":244},[234,7361,7362,7364,7366,7368,7370,7372,7374,7376,7379,7381,7383,7386,7388,7390,7393],{"class":236,"line":288},[234,7363,1292],{"class":244},[234,7365,351],{"class":350},[234,7367,354],{"class":281},[234,7369,357],{"class":244},[234,7371,1337],{"class":251},[234,7373,363],{"class":281},[234,7375,357],{"class":244},[234,7377,7378],{"class":251},"\"hero-layer\"",[234,7380,1340],{"class":281},[234,7382,357],{"class":244},[234,7384,7385],{"class":251},"\"0.3\"",[234,7387,1297],{"class":281},[234,7389,357],{"class":244},[234,7391,7392],{"class":251},"\"parallax-layer\"",[234,7394,376],{"class":244},[234,7396,7397,7399,7401,7403,7405,7408,7410,7412],{"class":236,"line":293},[234,7398,1321],{"class":244},[234,7400,351],{"class":350},[234,7402,1297],{"class":281},[234,7404,357],{"class":244},[234,7406,7407],{"class":251},"\"parallax-inner\"",[234,7409,371],{"class":244},[234,7411,351],{"class":350},[234,7413,376],{"class":244},[234,7415,7416,7418,7420],{"class":236,"line":305},[234,7417,1393],{"class":244},[234,7419,351],{"class":350},[234,7421,376],{"class":244},[234,7423,7424],{"class":236,"line":321},[234,7425,262],{"emptyLinePlaceholder":261},[234,7427,7428,7430,7432,7434,7436,7439],{"class":236,"line":946},[234,7429,1292],{"class":244},[234,7431,351],{"class":350},[234,7433,1297],{"class":281},[234,7435,357],{"class":244},[234,7437,7438],{"class":251},"\"parallax-center\"",[234,7440,376],{"class":244},[234,7442,7443,7445,7447,7449,7451,7454,7457,7459,7461,7463,7466,7469,7471,7474,7476],{"class":236,"line":955},[234,7444,1321],{"class":244},[234,7446,351],{"class":350},[234,7448,1297],{"class":281},[234,7450,357],{"class":244},[234,7452,7453],{"class":251},"\"parallax-label\"",[234,7455,7456],{"class":244},">Offset \u003C",[234,7458,234],{"class":350},[234,7460,5157],{"class":281},[234,7462,357],{"class":244},[234,7464,7465],{"class":251},"\"parallax-value\"",[234,7467,7468],{"class":244},">0\u003C/",[234,7470,234],{"class":350},[234,7472,7473],{"class":244},">px\u003C/",[234,7475,351],{"class":350},[234,7477,376],{"class":244},[234,7479,7480,7482,7484],{"class":236,"line":11},[234,7481,1393],{"class":244},[234,7483,351],{"class":350},[234,7485,376],{"class":244},[234,7487,7488,7490,7492],{"class":236,"line":980},[234,7489,1402],{"class":244},[234,7491,740],{"class":350},[234,7493,376],{"class":244},[234,7495,7496],{"class":236,"line":994},[234,7497,262],{"emptyLinePlaceholder":261},[234,7499,7500,7502,7504,7506,7508,7510,7512,7514],{"class":236,"line":1000},[234,7501,347],{"class":244},[234,7503,740],{"class":350},[234,7505,1297],{"class":281},[234,7507,357],{"class":244},[234,7509,368],{"class":251},[234,7511,5850],{"class":244},[234,7513,740],{"class":350},[234,7515,376],{"class":244},[225,7517,7519],{"className":5857,"code":7518,"language":5859,"meta":230,"style":230},".hero,\n.parallax-frame {\n  min-height: 100vh;\n}\n\n.hero {\n  display: grid;\n  place-items: center;\n}\n\n.parallax-frame {\n  position: relative;\n  overflow: hidden;\n  border-top: 1px solid black;\n  border-bottom: 1px solid black;\n}\n\n.parallax-layer {\n  position: absolute;\n  inset: -25% 0;\n}\n\n.parallax-inner {\n  position: absolute;\n  inset: 0;\n  border-top: 1px solid black;\n  border-bottom: 1px solid black;\n  background: repeating-linear-gradient(\n    180deg,\n    white 0,\n    white 18px,\n    black 18px,\n    black 19px\n  );\n}\n\n.parallax-center {\n  position: relative;\n  z-index: 1;\n  min-height: 100vh;\n  display: grid;\n  place-items: center;\n}\n",[60,7520,7521,7527,7534,7546,7550,7554,7560,7570,7580,7584,7588,7594,7606,7618,7635,7652,7656,7660,7667,7678,7695,7699,7703,7710,7720,7730,7746,7762,7774,7784,7793,7804,7815,7825,7830,7834,7838,7845,7855,7866,7878,7888,7898],{"__ignoreMap":230},[234,7522,7523,7525],{"class":236,"line":237},[234,7524,1654],{"class":281},[234,7526,2506],{"class":244},[234,7528,7529,7532],{"class":236,"line":258},[234,7530,7531],{"class":281},".parallax-frame",[234,7533,909],{"class":244},[234,7535,7536,7538,7540,7542,7544],{"class":236,"line":265},[234,7537,1661],{"class":271},[234,7539,1443],{"class":244},[234,7541,5883],{"class":271},[234,7543,1669],{"class":240},[234,7545,255],{"class":244},[234,7547,7548],{"class":236,"line":288},[234,7549,1143],{"class":244},[234,7551,7552],{"class":236,"line":293},[234,7553,262],{"emptyLinePlaceholder":261},[234,7555,7556,7558],{"class":236,"line":305},[234,7557,1654],{"class":281},[234,7559,909],{"class":244},[234,7561,7562,7564,7566,7568],{"class":236,"line":321},[234,7563,1677],{"class":271},[234,7565,1443],{"class":244},[234,7567,1682],{"class":271},[234,7569,255],{"class":244},[234,7571,7572,7574,7576,7578],{"class":236,"line":946},[234,7573,5902],{"class":271},[234,7575,1443],{"class":244},[234,7577,1695],{"class":271},[234,7579,255],{"class":244},[234,7581,7582],{"class":236,"line":955},[234,7583,1143],{"class":244},[234,7585,7586],{"class":236,"line":11},[234,7587,262],{"emptyLinePlaceholder":261},[234,7589,7590,7592],{"class":236,"line":980},[234,7591,7531],{"class":281},[234,7593,909],{"class":244},[234,7595,7596,7599,7601,7604],{"class":236,"line":994},[234,7597,7598],{"class":271},"  position",[234,7600,1443],{"class":244},[234,7602,7603],{"class":271},"relative",[234,7605,255],{"class":244},[234,7607,7608,7611,7613,7616],{"class":236,"line":1000},[234,7609,7610],{"class":271},"  overflow",[234,7612,1443],{"class":244},[234,7614,7615],{"class":271},"hidden",[234,7617,255],{"class":244},[234,7619,7620,7623,7625,7627,7629,7631,7633],{"class":236,"line":1005},[234,7621,7622],{"class":271},"  border-top",[234,7624,1443],{"class":244},[234,7626,1754],{"class":271},[234,7628,1789],{"class":240},[234,7630,6013],{"class":271},[234,7632,6016],{"class":271},[234,7634,255],{"class":244},[234,7636,7637,7640,7642,7644,7646,7648,7650],{"class":236,"line":1013},[234,7638,7639],{"class":271},"  border-bottom",[234,7641,1443],{"class":244},[234,7643,1754],{"class":271},[234,7645,1789],{"class":240},[234,7647,6013],{"class":271},[234,7649,6016],{"class":271},[234,7651,255],{"class":244},[234,7653,7654],{"class":236,"line":1019},[234,7655,1143],{"class":244},[234,7657,7658],{"class":236,"line":1025},[234,7659,262],{"emptyLinePlaceholder":261},[234,7661,7662,7665],{"class":236,"line":1031},[234,7663,7664],{"class":281},".parallax-layer",[234,7666,909],{"class":244},[234,7668,7669,7671,7673,7676],{"class":236,"line":1037},[234,7670,7598],{"class":271},[234,7672,1443],{"class":244},[234,7674,7675],{"class":271},"absolute",[234,7677,255],{"class":244},[234,7679,7680,7683,7685,7688,7690,7693],{"class":236,"line":427},[234,7681,7682],{"class":271},"  inset",[234,7684,1443],{"class":244},[234,7686,7687],{"class":271},"-25",[234,7689,3403],{"class":240},[234,7691,7692],{"class":271}," 0",[234,7694,255],{"class":244},[234,7696,7697],{"class":236,"line":1571},[234,7698,1143],{"class":244},[234,7700,7701],{"class":236,"line":1592},[234,7702,262],{"emptyLinePlaceholder":261},[234,7704,7705,7708],{"class":236,"line":1600},[234,7706,7707],{"class":281},".parallax-inner",[234,7709,909],{"class":244},[234,7711,7712,7714,7716,7718],{"class":236,"line":1615},[234,7713,7598],{"class":271},[234,7715,1443],{"class":244},[234,7717,7675],{"class":271},[234,7719,255],{"class":244},[234,7721,7722,7724,7726,7728],{"class":236,"line":1620},[234,7723,7682],{"class":271},[234,7725,1443],{"class":244},[234,7727,1836],{"class":271},[234,7729,255],{"class":244},[234,7731,7732,7734,7736,7738,7740,7742,7744],{"class":236,"line":1625},[234,7733,7622],{"class":271},[234,7735,1443],{"class":244},[234,7737,1754],{"class":271},[234,7739,1789],{"class":240},[234,7741,6013],{"class":271},[234,7743,6016],{"class":271},[234,7745,255],{"class":244},[234,7747,7748,7750,7752,7754,7756,7758,7760],{"class":236,"line":1634},[234,7749,7639],{"class":271},[234,7751,1443],{"class":244},[234,7753,1754],{"class":271},[234,7755,1789],{"class":240},[234,7757,6013],{"class":271},[234,7759,6016],{"class":271},[234,7761,255],{"class":244},[234,7763,7764,7766,7768,7771],{"class":236,"line":1639},[234,7765,6023],{"class":271},[234,7767,1443],{"class":244},[234,7769,7770],{"class":271},"repeating-linear-gradient",[234,7772,7773],{"class":244},"(\n",[234,7775,7776,7779,7782],{"class":236,"line":1651},[234,7777,7778],{"class":271},"    180",[234,7780,7781],{"class":240},"deg",[234,7783,2506],{"class":244},[234,7785,7786,7789,7791],{"class":236,"line":609},[234,7787,7788],{"class":271},"    white",[234,7790,7692],{"class":271},[234,7792,2506],{"class":244},[234,7794,7795,7797,7800,7802],{"class":236,"line":1674},[234,7796,7788],{"class":271},[234,7798,7799],{"class":271}," 18",[234,7801,1789],{"class":240},[234,7803,2506],{"class":244},[234,7805,7806,7809,7811,7813],{"class":236,"line":1687},[234,7807,7808],{"class":271},"    black",[234,7810,7799],{"class":271},[234,7812,1789],{"class":240},[234,7814,2506],{"class":244},[234,7816,7817,7819,7822],{"class":236,"line":1700},[234,7818,7808],{"class":271},[234,7820,7821],{"class":271}," 19",[234,7823,7824],{"class":240},"px\n",[234,7826,7827],{"class":236,"line":1716},[234,7828,7829],{"class":244},"  );\n",[234,7831,7832],{"class":236,"line":1721},[234,7833,1143],{"class":244},[234,7835,7836],{"class":236,"line":1726},[234,7837,262],{"emptyLinePlaceholder":261},[234,7839,7840,7843],{"class":236,"line":1734},[234,7841,7842],{"class":281},".parallax-center",[234,7844,909],{"class":244},[234,7846,7847,7849,7851,7853],{"class":236,"line":1746},[234,7848,7598],{"class":271},[234,7850,1443],{"class":244},[234,7852,7603],{"class":271},[234,7854,255],{"class":244},[234,7856,7857,7860,7862,7864],{"class":236,"line":1766},[234,7858,7859],{"class":271},"  z-index",[234,7861,1443],{"class":244},[234,7863,1754],{"class":271},[234,7865,255],{"class":244},[234,7867,7868,7870,7872,7874,7876],{"class":236,"line":819},[234,7869,1661],{"class":271},[234,7871,1443],{"class":244},[234,7873,5883],{"class":271},[234,7875,1669],{"class":240},[234,7877,255],{"class":244},[234,7879,7880,7882,7884,7886],{"class":236,"line":1794},[234,7881,1677],{"class":271},[234,7883,1443],{"class":244},[234,7885,1682],{"class":271},[234,7887,255],{"class":244},[234,7889,7890,7892,7894,7896],{"class":236,"line":1807},[234,7891,5902],{"class":271},[234,7893,1443],{"class":244},[234,7895,1695],{"class":271},[234,7897,255],{"class":244},[234,7899,7900],{"class":236,"line":1878},[234,7901,1143],{"class":244},[30,7903,7904,7905,7907,7908,7910],{},"Wrap the moving layer if you need any additional transform of your own. ",[60,7906,5221],{}," owns the element's ",[60,7909,4642],{}," property.",[37,7912,6074],{"id":6073},[225,7914,7916],{"className":227,"code":7915,"language":229,"meta":230,"style":230},"import StringTune, { StringParallax } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\nstringTune.use(StringParallax);\nstringTune.start(60);\n",[60,7917,7918,7931,7935,7949,7957],{"__ignoreMap":230},[234,7919,7920,7922,7925,7927,7929],{"class":236,"line":237},[234,7921,241],{"class":240},[234,7923,7924],{"class":244}," StringTune, { StringParallax } ",[234,7926,248],{"class":240},[234,7928,252],{"class":251},[234,7930,255],{"class":244},[234,7932,7933],{"class":236,"line":258},[234,7934,262],{"emptyLinePlaceholder":261},[234,7936,7937,7939,7941,7943,7945,7947],{"class":236,"line":265},[234,7938,268],{"class":240},[234,7940,272],{"class":271},[234,7942,275],{"class":240},[234,7944,278],{"class":244},[234,7946,282],{"class":281},[234,7948,285],{"class":244},[234,7950,7951,7953,7955],{"class":236,"line":288},[234,7952,296],{"class":244},[234,7954,299],{"class":281},[234,7956,934],{"class":244},[234,7958,7959,7961,7963,7965,7967],{"class":236,"line":293},[234,7960,296],{"class":244},[234,7962,326],{"class":281},[234,7964,329],{"class":244},[234,7966,332],{"class":271},[234,7968,335],{"class":244},[30,7970,7971,7972,7974,7975,7977],{},"You do not need to register ",[60,7973,190],{}," separately. ",[60,7976,5221],{}," already extends it internally.",[37,7979,6133],{"id":6132},[42,7981,7982,7987,7999],{},[45,7983,7984,7986],{},[60,7985,5221],{}," computes progress internally, but it does not expose that progress as public CSS or public progress events.",[45,7988,7989,7990,137,7992,7994,7995,7998],{},"During initialization, the module overwrites ",[60,7991,3263],{},[60,7993,3264],{}," with ",[60,7996,7997],{},"abs(string-parallax) * viewportHeight",". In the current runtime, manual parallax offsets are therefore not a reliable public control surface.",[45,8000,8001,8002,8005,8006,8008,8009,106],{},"On viewports ",[60,8003,8004],{},"\u003C= 1024px",", the runtime switches to a mobile branch that emits ",[60,8007,1836],{}," and writes ",[60,8010,8011],{},"translate3d(0, 0px, 0)",[410,8013,6155],{},{"title":230,"searchDepth":258,"depth":258,"links":8015},[8016,8022,8023,8024],{"id":5406,"depth":258,"text":5407,"children":8017},[8018,8019,8020,8021],{"id":4904,"depth":265,"text":4905},{"id":5557,"depth":265,"text":5558},{"id":3814,"depth":265,"text":5593},{"id":5666,"depth":265,"text":5667},{"id":5688,"depth":258,"text":5689},{"id":6073,"depth":258,"text":6074},{"id":6132,"depth":258,"text":6133},{"path":5226,"title":5227,"description":8026,"kind":5369,"section":5187,"order":819,"group":5204,"parentPath":-1,"status":8027,"integration":2706,"publicExport":261,"activation":8028,"package":5371,"aliases":8029,"attrs":8031,"events":8032,"cssVars":8034,"related":8036,"body":8038},"Exposes current lerp intensity as CSS and mirrors it across connected elements.","advanced","string=\"lerp\"",[8030,5227],"lerp",[],[8033],"object:lerp:\u003Cid>",[8035],"--lerp",[5232,617,8037],"/docs/api/css-variables",{"type":22,"value":8039,"toc":8515},[8040,8043,8048,8050,8052,8057,8063,8065,8067,8073,8078,8081,8083,8110,8112,8119,8121,8216,8431,8433,8490,8492,8513],[25,8041,5227],{"id":8042},"stringlerp",[30,8044,8045,8047],{},[60,8046,5227],{}," exposes the shared scroll lerp value from the active scroll controller. It does not compute element-specific geometry. Every connected object receives the same signed scroll delta while it is active.",[37,8049,5407],{"id":5406},[174,8051,4905],{"id":4904},[30,8053,8054,8056],{},[60,8055,5227],{}," does not read any module-specific public attributes in the current runtime. Activation is only:",[42,8058,8059],{},[45,8060,8061],{},[60,8062,8028],{},[174,8064,5558],{"id":5557},[30,8066,7222],{},[42,8068,8069],{},[45,8070,8071],{},[60,8072,8035],{},[30,8074,8075,8076,106],{},"The value is the current signed scroll lerp delta from the active scroll controller. It is not clamped to ",[60,8077,5394],{},[30,8079,8080],{},"The module does not write transforms or classes by itself.",[174,8082,5593],{"id":3814},[2221,8084,8085,8095],{},[2224,8086,8087],{},[2227,8088,8089,8091,8093],{},[2230,8090,5602],{},[2230,8092,5605],{},[2230,8094,5608],{},[2240,8096,8097],{},[2227,8098,8099,8103,8107],{},[2245,8100,8101],{},[60,8102,8033],{},[2245,8104,8105],{},[60,8106,5621],{},[2245,8108,8109],{},"The applied lerp value changes",[174,8111,5667],{"id":5666},[30,8113,8114,8116,8117,106],{},[60,8115,8035],{}," is written to the source element and to all mirrors linked through ",[60,8118,2457],{},[37,8120,5689],{"id":5688},[225,8122,8124],{"className":338,"code":8123,"language":340,"meta":230,"style":230},"\u003Cdiv string=\"lerp\" string-id=\"lerp-demo\" class=\"lerp-demo\">\n  \u003Cdiv class=\"lerp-box\">\u003C/div>\n  \u003Cdiv class=\"lerp-label\">Lerp \u003Cspan id=\"lerp-value\">0\u003C/span>\u003C/div>\n\u003C/div>\n",[60,8125,8126,8154,8173,8208],{"__ignoreMap":230},[234,8127,8128,8130,8132,8134,8136,8139,8141,8143,8146,8148,8150,8152],{"class":236,"line":237},[234,8129,347],{"class":244},[234,8131,351],{"class":350},[234,8133,354],{"class":281},[234,8135,357],{"class":244},[234,8137,8138],{"class":251},"\"lerp\"",[234,8140,363],{"class":281},[234,8142,357],{"class":244},[234,8144,8145],{"class":251},"\"lerp-demo\"",[234,8147,1297],{"class":281},[234,8149,357],{"class":244},[234,8151,8145],{"class":251},[234,8153,376],{"class":244},[234,8155,8156,8158,8160,8162,8164,8167,8169,8171],{"class":236,"line":258},[234,8157,1292],{"class":244},[234,8159,351],{"class":350},[234,8161,1297],{"class":281},[234,8163,357],{"class":244},[234,8165,8166],{"class":251},"\"lerp-box\"",[234,8168,371],{"class":244},[234,8170,351],{"class":350},[234,8172,376],{"class":244},[234,8174,8175,8177,8179,8181,8183,8186,8189,8191,8193,8195,8198,8200,8202,8204,8206],{"class":236,"line":265},[234,8176,1292],{"class":244},[234,8178,351],{"class":350},[234,8180,1297],{"class":281},[234,8182,357],{"class":244},[234,8184,8185],{"class":251},"\"lerp-label\"",[234,8187,8188],{"class":244},">Lerp \u003C",[234,8190,234],{"class":350},[234,8192,5157],{"class":281},[234,8194,357],{"class":244},[234,8196,8197],{"class":251},"\"lerp-value\"",[234,8199,7468],{"class":244},[234,8201,234],{"class":350},[234,8203,371],{"class":244},[234,8205,351],{"class":350},[234,8207,376],{"class":244},[234,8209,8210,8212,8214],{"class":236,"line":288},[234,8211,1402],{"class":244},[234,8213,351],{"class":350},[234,8215,376],{"class":244},[225,8217,8219],{"className":5857,"code":8218,"language":5859,"meta":230,"style":230},".lerp-demo {\n  position: fixed;\n  inset: 0;\n  display: grid;\n  place-items: center;\n  gap: 12px;\n}\n\n.lerp-box {\n  width: 96px;\n  height: 96px;\n  border: 1px solid black;\n  background: white;\n  transform:\n    translate3d(0, calc(var(--lerp, 0) * -6px), 0)\n    rotate(calc(var(--lerp, 0) * 0.8deg));\n}\n",[60,8220,8221,8228,8238,8248,8258,8268,8281,8285,8289,8296,8309,8321,8337,8347,8354,8395,8427],{"__ignoreMap":230},[234,8222,8223,8226],{"class":236,"line":237},[234,8224,8225],{"class":281},".lerp-demo",[234,8227,909],{"class":244},[234,8229,8230,8232,8234,8236],{"class":236,"line":258},[234,8231,7598],{"class":271},[234,8233,1443],{"class":244},[234,8235,2863],{"class":271},[234,8237,255],{"class":244},[234,8239,8240,8242,8244,8246],{"class":236,"line":265},[234,8241,7682],{"class":271},[234,8243,1443],{"class":244},[234,8245,1836],{"class":271},[234,8247,255],{"class":244},[234,8249,8250,8252,8254,8256],{"class":236,"line":288},[234,8251,1677],{"class":271},[234,8253,1443],{"class":244},[234,8255,1682],{"class":271},[234,8257,255],{"class":244},[234,8259,8260,8262,8264,8266],{"class":236,"line":293},[234,8261,5902],{"class":271},[234,8263,1443],{"class":244},[234,8265,1695],{"class":271},[234,8267,255],{"class":244},[234,8269,8270,8272,8274,8277,8279],{"class":236,"line":305},[234,8271,1703],{"class":271},[234,8273,1443],{"class":244},[234,8275,8276],{"class":271},"12",[234,8278,1789],{"class":240},[234,8280,255],{"class":244},[234,8282,8283],{"class":236,"line":321},[234,8284,1143],{"class":244},[234,8286,8287],{"class":236,"line":946},[234,8288,262],{"emptyLinePlaceholder":261},[234,8290,8291,8294],{"class":236,"line":955},[234,8292,8293],{"class":281},".lerp-box",[234,8295,909],{"class":244},[234,8297,8298,8300,8302,8305,8307],{"class":236,"line":11},[234,8299,5977],{"class":271},[234,8301,1443],{"class":244},[234,8303,8304],{"class":271},"96",[234,8306,1789],{"class":240},[234,8308,255],{"class":244},[234,8310,8311,8313,8315,8317,8319],{"class":236,"line":980},[234,8312,5991],{"class":271},[234,8314,1443],{"class":244},[234,8316,8304],{"class":271},[234,8318,1789],{"class":240},[234,8320,255],{"class":244},[234,8322,8323,8325,8327,8329,8331,8333,8335],{"class":236,"line":994},[234,8324,1769],{"class":271},[234,8326,1443],{"class":244},[234,8328,1754],{"class":271},[234,8330,1789],{"class":240},[234,8332,6013],{"class":271},[234,8334,6016],{"class":271},[234,8336,255],{"class":244},[234,8338,8339,8341,8343,8345],{"class":236,"line":1000},[234,8340,6023],{"class":271},[234,8342,1443],{"class":244},[234,8344,6028],{"class":271},[234,8346,255],{"class":244},[234,8348,8349,8351],{"class":236,"line":1005},[234,8350,1810],{"class":271},[234,8352,8353],{"class":244},":\n",[234,8355,8356,8359,8361,8363,8365,8367,8369,8371,8373,8375,8377,8379,8381,8383,8386,8388,8390,8392],{"class":236,"line":1013},[234,8357,8358],{"class":271},"    translate3d",[234,8360,329],{"class":244},[234,8362,1836],{"class":271},[234,8364,1833],{"class":244},[234,8366,1820],{"class":271},[234,8368,329],{"class":244},[234,8370,1825],{"class":271},[234,8372,329],{"class":244},[234,8374,8035],{"class":899},[234,8376,1833],{"class":244},[234,8378,1836],{"class":271},[234,8380,903],{"class":244},[234,8382,1841],{"class":240},[234,8384,8385],{"class":271}," -6",[234,8387,1789],{"class":240},[234,8389,1849],{"class":244},[234,8391,1836],{"class":271},[234,8393,8394],{"class":244},")\n",[234,8396,8397,8400,8402,8404,8406,8408,8410,8412,8414,8416,8418,8420,8423,8425],{"class":236,"line":1019},[234,8398,8399],{"class":271},"    rotate",[234,8401,329],{"class":244},[234,8403,1820],{"class":271},[234,8405,329],{"class":244},[234,8407,1825],{"class":271},[234,8409,329],{"class":244},[234,8411,8035],{"class":899},[234,8413,1833],{"class":244},[234,8415,1836],{"class":271},[234,8417,903],{"class":244},[234,8419,1841],{"class":240},[234,8421,8422],{"class":271}," 0.8",[234,8424,7781],{"class":240},[234,8426,1875],{"class":244},[234,8428,8429],{"class":236,"line":1025},[234,8430,1143],{"class":244},[37,8432,6074],{"id":6073},[225,8434,8436],{"className":227,"code":8435,"language":229,"meta":230,"style":230},"import StringTune, { StringLerp } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\nstringTune.use(StringLerp);\nstringTune.start(60);\n",[60,8437,8438,8451,8455,8469,8478],{"__ignoreMap":230},[234,8439,8440,8442,8445,8447,8449],{"class":236,"line":237},[234,8441,241],{"class":240},[234,8443,8444],{"class":244}," StringTune, { StringLerp } ",[234,8446,248],{"class":240},[234,8448,252],{"class":251},[234,8450,255],{"class":244},[234,8452,8453],{"class":236,"line":258},[234,8454,262],{"emptyLinePlaceholder":261},[234,8456,8457,8459,8461,8463,8465,8467],{"class":236,"line":265},[234,8458,268],{"class":240},[234,8460,272],{"class":271},[234,8462,275],{"class":240},[234,8464,278],{"class":244},[234,8466,282],{"class":281},[234,8468,285],{"class":244},[234,8470,8471,8473,8475],{"class":236,"line":288},[234,8472,296],{"class":244},[234,8474,299],{"class":281},[234,8476,8477],{"class":244},"(StringLerp);\n",[234,8479,8480,8482,8484,8486,8488],{"class":236,"line":293},[234,8481,296],{"class":244},[234,8483,326],{"class":281},[234,8485,329],{"class":244},[234,8487,332],{"class":271},[234,8489,335],{"class":244},[37,8491,6133],{"id":6132},[42,8493,8494,8501,8508],{},[45,8495,8496,8497,7994,8499,106],{},"On the first resize after objects connect, the module seeds ",[60,8498,8035],{},[60,8500,1836],{},[45,8502,8503,8504,8507],{},"While scrolling, it updates from ",[60,8505,8506],{},"data.scroll.lerped"," on every frame.",[45,8509,8510,8511,106],{},"On scroll stop, it resets the public value back to ",[60,8512,1836],{},[410,8514,7062],{},{"title":230,"searchDepth":258,"depth":258,"links":8516},[8517,8523,8524,8525],{"id":5406,"depth":258,"text":5407,"children":8518},[8519,8520,8521,8522],{"id":4904,"depth":265,"text":4905},{"id":5557,"depth":265,"text":5558},{"id":3814,"depth":265,"text":5593},{"id":5666,"depth":265,"text":5667},{"id":5688,"depth":258,"text":5689},{"id":6073,"depth":258,"text":6074},{"id":6132,"depth":258,"text":6133},{"path":5232,"title":5233,"description":8527,"kind":5369,"section":5187,"order":1908,"group":5204,"parentPath":-1,"status":8027,"integration":2706,"publicExport":261,"activation":8528,"package":5371,"aliases":8529,"attrs":8531,"events":8533,"cssVars":8535,"related":8537,"body":8538},"Converts scroll energy into a gliding motion layer for soft inertial movement.","string=\"glide\"",[8530,5233],"glide",[8532],"string-glide",[8534],"object:glide:\u003Cid>",[8536],"--glide",[5226,617,8037],{"type":22,"value":8539,"toc":8987},[8540,8543,8548,8556,8559,8561,8563,8596,8598,8601,8611,8614,8629,8631,8658,8660,8663,8671,8674,8676,8753,8894,8896,8953,8955,8984],[25,8541,5233],{"id":8542},"stringglide",[30,8544,8545,8547],{},[60,8546,5233],{}," turns scroll energy into drift. Internally it accumulates motion from the shared scroll lerp state, then exposes that motion in two different forms:",[42,8549,8550,8553],{},[45,8551,8552],{},"a shared normalized CSS variable",[45,8554,8555],{},"a per-element pixel transform",[30,8557,8558],{},"Those two outputs are not the same number.",[37,8560,5407],{"id":5406},[174,8562,4905],{"id":4904},[2221,8564,8565,8577],{},[2224,8566,8567],{},[2227,8568,8569,8571,8573,8575],{},[2230,8570,4914],{},[2230,8572,4917],{},[2230,8574,4920],{},[2230,8576,5424],{},[2240,8578,8579],{},[2227,8580,8581,8585,8587,8591],{},[2245,8582,8583],{},[60,8584,8532],{},[2245,8586,5621],{},[2245,8588,8589],{},[60,8590,1754],{},[2245,8592,8593,8594,106],{},"Multiplies the per-element pixel translation applied to ",[60,8595,4642],{},[174,8597,5558],{"id":5557},[30,8599,8600],{},"The module writes two different public outputs:",[42,8602,8603,8607],{},[45,8604,8605],{},[60,8606,8536],{},[45,8608,7227,8609],{},[60,8610,7230],{},[30,8612,8613],{},"Important distinction:",[42,8615,8616,8624],{},[45,8617,8618,8620,8621],{},[60,8619,8536],{}," is the shared normalized displacement from ",[60,8622,8623],{},"data.scroll.displacement",[45,8625,8626,8627],{},"the inline transform is the per-element pixel offset after applying viewport scaling and ",[60,8628,8532],{},[174,8630,5593],{"id":3814},[2221,8632,8633,8643],{},[2224,8634,8635],{},[2227,8636,8637,8639,8641],{},[2230,8638,5602],{},[2230,8640,5605],{},[2230,8642,5608],{},[2240,8644,8645],{},[2227,8646,8647,8651,8655],{},[2245,8648,8649],{},[60,8650,8534],{},[2245,8652,8653],{},[60,8654,5621],{},[2245,8656,8657],{},"The per-element pixel translation is recomputed",[174,8659,5667],{"id":5666},[30,8661,8662],{},"Mirrors receive:",[42,8664,8665],{},[45,8666,8667,8668,8670],{},"the shared ",[60,8669,8536],{}," variable",[30,8672,8673],{},"Mirrors do not receive the inline transform in the current runtime. The transform is applied only to the source glide element.",[37,8675,5689],{"id":5688},[225,8677,8679],{"className":338,"code":8678,"language":340,"meta":230,"style":230},"\u003Cdiv class=\"glide-stage\">\n  \u003Cdiv string=\"glide\" string-id=\"glide-card\" string-glide=\"0.5\" class=\"glide-card\">\n    Glide\n  \u003C/div>\n\u003C/div>\n",[60,8680,8681,8696,8732,8737,8745],{"__ignoreMap":230},[234,8682,8683,8685,8687,8689,8691,8694],{"class":236,"line":237},[234,8684,347],{"class":244},[234,8686,351],{"class":350},[234,8688,1297],{"class":281},[234,8690,357],{"class":244},[234,8692,8693],{"class":251},"\"glide-stage\"",[234,8695,376],{"class":244},[234,8697,8698,8700,8702,8704,8706,8709,8711,8713,8716,8719,8721,8724,8726,8728,8730],{"class":236,"line":258},[234,8699,1292],{"class":244},[234,8701,351],{"class":350},[234,8703,354],{"class":281},[234,8705,357],{"class":244},[234,8707,8708],{"class":251},"\"glide\"",[234,8710,363],{"class":281},[234,8712,357],{"class":244},[234,8714,8715],{"class":251},"\"glide-card\"",[234,8717,8718],{"class":281}," string-glide",[234,8720,357],{"class":244},[234,8722,8723],{"class":251},"\"0.5\"",[234,8725,1297],{"class":281},[234,8727,357],{"class":244},[234,8729,8715],{"class":251},[234,8731,376],{"class":244},[234,8733,8734],{"class":236,"line":265},[234,8735,8736],{"class":244},"    Glide\n",[234,8738,8739,8741,8743],{"class":236,"line":288},[234,8740,1393],{"class":244},[234,8742,351],{"class":350},[234,8744,376],{"class":244},[234,8746,8747,8749,8751],{"class":236,"line":293},[234,8748,1402],{"class":244},[234,8750,351],{"class":350},[234,8752,376],{"class":244},[225,8754,8756],{"className":5857,"code":8755,"language":5859,"meta":230,"style":230},".glide-stage {\n  position: fixed;\n  inset: 0;\n  display: grid;\n  place-items: center;\n}\n\n.glide-card {\n  width: 160px;\n  height: 96px;\n  display: grid;\n  place-items: center;\n  border: 1px solid black;\n  background: white;\n}\n",[60,8757,8758,8765,8775,8785,8795,8805,8809,8813,8820,8832,8844,8854,8864,8880,8890],{"__ignoreMap":230},[234,8759,8760,8763],{"class":236,"line":237},[234,8761,8762],{"class":281},".glide-stage",[234,8764,909],{"class":244},[234,8766,8767,8769,8771,8773],{"class":236,"line":258},[234,8768,7598],{"class":271},[234,8770,1443],{"class":244},[234,8772,2863],{"class":271},[234,8774,255],{"class":244},[234,8776,8777,8779,8781,8783],{"class":236,"line":265},[234,8778,7682],{"class":271},[234,8780,1443],{"class":244},[234,8782,1836],{"class":271},[234,8784,255],{"class":244},[234,8786,8787,8789,8791,8793],{"class":236,"line":288},[234,8788,1677],{"class":271},[234,8790,1443],{"class":244},[234,8792,1682],{"class":271},[234,8794,255],{"class":244},[234,8796,8797,8799,8801,8803],{"class":236,"line":293},[234,8798,5902],{"class":271},[234,8800,1443],{"class":244},[234,8802,1695],{"class":271},[234,8804,255],{"class":244},[234,8806,8807],{"class":236,"line":305},[234,8808,1143],{"class":244},[234,8810,8811],{"class":236,"line":321},[234,8812,262],{"emptyLinePlaceholder":261},[234,8814,8815,8818],{"class":236,"line":946},[234,8816,8817],{"class":281},".glide-card",[234,8819,909],{"class":244},[234,8821,8822,8824,8826,8828,8830],{"class":236,"line":955},[234,8823,5977],{"class":271},[234,8825,1443],{"class":244},[234,8827,5982],{"class":271},[234,8829,1789],{"class":240},[234,8831,255],{"class":244},[234,8833,8834,8836,8838,8840,8842],{"class":236,"line":11},[234,8835,5991],{"class":271},[234,8837,1443],{"class":244},[234,8839,8304],{"class":271},[234,8841,1789],{"class":240},[234,8843,255],{"class":244},[234,8845,8846,8848,8850,8852],{"class":236,"line":980},[234,8847,1677],{"class":271},[234,8849,1443],{"class":244},[234,8851,1682],{"class":271},[234,8853,255],{"class":244},[234,8855,8856,8858,8860,8862],{"class":236,"line":994},[234,8857,5902],{"class":271},[234,8859,1443],{"class":244},[234,8861,1695],{"class":271},[234,8863,255],{"class":244},[234,8865,8866,8868,8870,8872,8874,8876,8878],{"class":236,"line":1000},[234,8867,1769],{"class":271},[234,8869,1443],{"class":244},[234,8871,1754],{"class":271},[234,8873,1789],{"class":240},[234,8875,6013],{"class":271},[234,8877,6016],{"class":271},[234,8879,255],{"class":244},[234,8881,8882,8884,8886,8888],{"class":236,"line":1005},[234,8883,6023],{"class":271},[234,8885,1443],{"class":244},[234,8887,6028],{"class":271},[234,8889,255],{"class":244},[234,8891,8892],{"class":236,"line":1013},[234,8893,1143],{"class":244},[37,8895,6074],{"id":6073},[225,8897,8899],{"className":227,"code":8898,"language":229,"meta":230,"style":230},"import StringTune, { StringGlide } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\nstringTune.use(StringGlide);\nstringTune.start(60);\n",[60,8900,8901,8914,8918,8932,8941],{"__ignoreMap":230},[234,8902,8903,8905,8908,8910,8912],{"class":236,"line":237},[234,8904,241],{"class":240},[234,8906,8907],{"class":244}," StringTune, { StringGlide } ",[234,8909,248],{"class":240},[234,8911,252],{"class":251},[234,8913,255],{"class":244},[234,8915,8916],{"class":236,"line":258},[234,8917,262],{"emptyLinePlaceholder":261},[234,8919,8920,8922,8924,8926,8928,8930],{"class":236,"line":265},[234,8921,268],{"class":240},[234,8923,272],{"class":271},[234,8925,275],{"class":240},[234,8927,278],{"class":244},[234,8929,282],{"class":281},[234,8931,285],{"class":244},[234,8933,8934,8936,8938],{"class":236,"line":288},[234,8935,296],{"class":244},[234,8937,299],{"class":281},[234,8939,8940],{"class":244},"(StringGlide);\n",[234,8942,8943,8945,8947,8949,8951],{"class":236,"line":293},[234,8944,296],{"class":244},[234,8946,326],{"class":281},[234,8948,329],{"class":244},[234,8950,332],{"class":271},[234,8952,335],{"class":244},[37,8954,6133],{"id":6132},[42,8956,8957,8965,8971,8979],{},[45,8958,8959,8960,8962,8963,106],{},"The module derives motion from ",[60,8961,8506],{},", then integrates that into ",[60,8964,8623],{},[45,8966,8967,8968,8970],{},"The per-element transform is capped by an internal max displacement of about ",[60,8969,3671],{}," of viewport height.",[45,8972,8973,8974,8976,8977,106],{},"On scroll stop, both the transform and ",[60,8975,8536],{}," are reset to ",[60,8978,1836],{},[45,8980,8001,8981,8983],{},[60,8982,8004],{},", the module switches to a mobile branch and resets everything to rest.",[410,8985,8986],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":230,"searchDepth":258,"depth":258,"links":8988},[8989,8995,8996,8997],{"id":5406,"depth":258,"text":5407,"children":8990},[8991,8992,8993,8994],{"id":4904,"depth":265,"text":4905},{"id":5557,"depth":265,"text":5558},{"id":3814,"depth":265,"text":5593},{"id":5666,"depth":265,"text":5667},{"id":5688,"depth":258,"text":5689},{"id":6073,"depth":258,"text":6074},{"id":6132,"depth":258,"text":6133},{"path":5238,"title":5239,"description":8999,"kind":5369,"section":5187,"order":4298,"group":5204,"parentPath":-1,"status":5370,"integration":2706,"publicExport":261,"activation":9000,"package":5371,"aliases":9001,"attrs":9003,"events":9005,"cssVars":9006,"related":9007,"body":9009},"Sets transform-origin style metadata from declarative anchor attributes.","string=\"anchor\"",[9002,5239],"anchor",[9004],"string-anchor",[],[],[9008,3269,2464],"/docs/custom-modules/context-tools-events",{"type":22,"value":9010,"toc":10386},[9011,9014,9023,9025,9027,9071,9074,9100,9110,9112,9129,9135,9137,9142,9145,9152,9154,9157,9159,9167,9169,9562,10229,10235,10237,10294,10297,10325,10327,10384],[25,9012,5239],{"id":9013},"stringanchor",[30,9015,9016,9018,9019,9022],{},[60,9017,5239],{}," is a small element module that sets ",[60,9020,9021],{},"transform-origin"," from one declarative attribute. It does not animate anything by itself. Its only job is to define the pivot point that your own CSS transforms, keyframes, or other modules will use.",[37,9024,5407],{"id":5406},[174,9026,4905],{"id":4904},[2221,9028,9029,9041],{},[2224,9030,9031],{},[2227,9032,9033,9035,9037,9039],{},[2230,9034,4914],{},[2230,9036,4917],{},[2230,9038,4920],{},[2230,9040,5424],{},[2240,9042,9043],{},[2227,9044,9045,9049,9052,9061],{},[2245,9046,9047],{},[60,9048,9004],{},[2245,9050,9051],{},"tuple string",[2245,9053,9054,9055,9057,9058],{},"module setting ",[60,9056,9002],{},", default ",[60,9059,9060],{},"center center",[2245,9062,9063,9064,9067,9068,9070],{},"Split into two tuple parts, each part is passed through ",[60,9065,9066],{},"originParser.process()",", then written as inline ",[60,9069,9021],{}," on the element.",[30,9072,9073],{},"Accepted values are two-part origin strings such as:",[42,9075,9076,9081,9086,9090,9095],{},[45,9077,9078],{},[60,9079,9080],{},"top left",[45,9082,9083],{},[60,9084,9085],{},"left center",[45,9087,9088],{},[60,9089,9060],{},[45,9091,9092],{},[60,9093,9094],{},"30% 70%",[45,9096,9097],{},[60,9098,9099],{},"right bottom",[30,9101,9102,9103,9106,9107,106],{},"The parser also accepts single values and ",[60,9104,9105],{},"random(...)"," expressions because each axis is passed through ",[60,9108,9109],{},"originParser",[30,9111,183],{},[42,9113,9114,9119,9124],{},[45,9115,9116],{},[60,9117,9118],{},"string-anchor=\"center\"",[45,9120,9121],{},[60,9122,9123],{},"string-anchor=\"top left\"",[45,9125,9126],{},[60,9127,9128],{},"string-anchor=\"random(left,right) bottom\"",[30,9130,9131,9132,9134],{},"Because the tuple is split by whitespace first, keep ",[60,9133,9105],{}," options without spaces.",[174,9136,5558],{"id":5557},[30,9138,9139,9141],{},[60,9140,5239],{}," does not write CSS variables and does not emit classes.",[30,9143,9144],{},"Its public output is one inline style:",[42,9146,9147],{},[45,9148,9149],{},[60,9150,9151],{},"element.style.transformOrigin = \"\u003Cx> \u003Cy>\"",[174,9153,5593],{"id":3814},[30,9155,9156],{},"This module has no public event contract.",[174,9158,5667],{"id":5666},[30,9160,5670,9161,9163,9164,9166],{},[60,9162,5673],{},", the same computed ",[60,9165,9021],{}," is written to the mirror element too.",[37,9168,5689],{"id":5688},[225,9170,9172],{"className":338,"code":9171,"language":340,"meta":230,"style":230},"\u003Cdiv class=\"anchor-demo\">\n  \u003Cdiv class=\"anchor-card\">\n    \u003Cdiv class=\"anchor-stage\">\n      \u003Cdiv string=\"anchor\" string-anchor=\"top left\" class=\"anchor-box\">\n        \u003Cspan class=\"anchor-box__label\">top left\u003C/span>\n      \u003C/div>\n      \u003Cspan class=\"anchor-dot anchor-dot--top-left\">\u003C/span>\n    \u003C/div>\n  \u003C/div>\n\n  \u003Cdiv class=\"anchor-card\">\n    \u003Cdiv class=\"anchor-stage\">\n      \u003Cdiv string=\"anchor\" string-anchor=\"center center\" class=\"anchor-box\">\n        \u003Cspan class=\"anchor-box__label\">center center\u003C/span>\n      \u003C/div>\n      \u003Cspan class=\"anchor-dot anchor-dot--center\">\u003C/span>\n    \u003C/div>\n  \u003C/div>\n\n  \u003Cdiv class=\"anchor-card\">\n    \u003Cdiv class=\"anchor-stage\">\n      \u003Cdiv string=\"anchor\" string-anchor=\"bottom right\" class=\"anchor-box\">\n        \u003Cspan class=\"anchor-box__label\">bottom right\u003C/span>\n      \u003C/div>\n      \u003Cspan class=\"anchor-dot anchor-dot--bottom-right\">\u003C/span>\n    \u003C/div>\n  \u003C/div>\n\u003C/div>\n",[60,9173,9174,9189,9204,9219,9249,9269,9277,9296,9304,9312,9316,9330,9344,9371,9390,9398,9417,9425,9433,9437,9451,9465,9492,9511,9519,9538,9546,9554],{"__ignoreMap":230},[234,9175,9176,9178,9180,9182,9184,9187],{"class":236,"line":237},[234,9177,347],{"class":244},[234,9179,351],{"class":350},[234,9181,1297],{"class":281},[234,9183,357],{"class":244},[234,9185,9186],{"class":251},"\"anchor-demo\"",[234,9188,376],{"class":244},[234,9190,9191,9193,9195,9197,9199,9202],{"class":236,"line":258},[234,9192,1292],{"class":244},[234,9194,351],{"class":350},[234,9196,1297],{"class":281},[234,9198,357],{"class":244},[234,9200,9201],{"class":251},"\"anchor-card\"",[234,9203,376],{"class":244},[234,9205,9206,9208,9210,9212,9214,9217],{"class":236,"line":265},[234,9207,1321],{"class":244},[234,9209,351],{"class":350},[234,9211,1297],{"class":281},[234,9213,357],{"class":244},[234,9215,9216],{"class":251},"\"anchor-stage\"",[234,9218,376],{"class":244},[234,9220,9221,9223,9225,9227,9229,9232,9235,9237,9240,9242,9244,9247],{"class":236,"line":288},[234,9222,6398],{"class":244},[234,9224,351],{"class":350},[234,9226,354],{"class":281},[234,9228,357],{"class":244},[234,9230,9231],{"class":251},"\"anchor\"",[234,9233,9234],{"class":281}," string-anchor",[234,9236,357],{"class":244},[234,9238,9239],{"class":251},"\"top left\"",[234,9241,1297],{"class":281},[234,9243,357],{"class":244},[234,9245,9246],{"class":251},"\"anchor-box\"",[234,9248,376],{"class":244},[234,9250,9251,9253,9255,9257,9259,9262,9265,9267],{"class":236,"line":293},[234,9252,6434],{"class":244},[234,9254,234],{"class":350},[234,9256,1297],{"class":281},[234,9258,357],{"class":244},[234,9260,9261],{"class":251},"\"anchor-box__label\"",[234,9263,9264],{"class":244},">top left\u003C/",[234,9266,234],{"class":350},[234,9268,376],{"class":244},[234,9270,9271,9273,9275],{"class":236,"line":305},[234,9272,6491],{"class":244},[234,9274,351],{"class":350},[234,9276,376],{"class":244},[234,9278,9279,9281,9283,9285,9287,9290,9292,9294],{"class":236,"line":321},[234,9280,6398],{"class":244},[234,9282,234],{"class":350},[234,9284,1297],{"class":281},[234,9286,357],{"class":244},[234,9288,9289],{"class":251},"\"anchor-dot anchor-dot--top-left\"",[234,9291,371],{"class":244},[234,9293,234],{"class":350},[234,9295,376],{"class":244},[234,9297,9298,9300,9302],{"class":236,"line":946},[234,9299,6500],{"class":244},[234,9301,351],{"class":350},[234,9303,376],{"class":244},[234,9305,9306,9308,9310],{"class":236,"line":955},[234,9307,1393],{"class":244},[234,9309,351],{"class":350},[234,9311,376],{"class":244},[234,9313,9314],{"class":236,"line":11},[234,9315,262],{"emptyLinePlaceholder":261},[234,9317,9318,9320,9322,9324,9326,9328],{"class":236,"line":980},[234,9319,1292],{"class":244},[234,9321,351],{"class":350},[234,9323,1297],{"class":281},[234,9325,357],{"class":244},[234,9327,9201],{"class":251},[234,9329,376],{"class":244},[234,9331,9332,9334,9336,9338,9340,9342],{"class":236,"line":994},[234,9333,1321],{"class":244},[234,9335,351],{"class":350},[234,9337,1297],{"class":281},[234,9339,357],{"class":244},[234,9341,9216],{"class":251},[234,9343,376],{"class":244},[234,9345,9346,9348,9350,9352,9354,9356,9358,9360,9363,9365,9367,9369],{"class":236,"line":1000},[234,9347,6398],{"class":244},[234,9349,351],{"class":350},[234,9351,354],{"class":281},[234,9353,357],{"class":244},[234,9355,9231],{"class":251},[234,9357,9234],{"class":281},[234,9359,357],{"class":244},[234,9361,9362],{"class":251},"\"center center\"",[234,9364,1297],{"class":281},[234,9366,357],{"class":244},[234,9368,9246],{"class":251},[234,9370,376],{"class":244},[234,9372,9373,9375,9377,9379,9381,9383,9386,9388],{"class":236,"line":1005},[234,9374,6434],{"class":244},[234,9376,234],{"class":350},[234,9378,1297],{"class":281},[234,9380,357],{"class":244},[234,9382,9261],{"class":251},[234,9384,9385],{"class":244},">center center\u003C/",[234,9387,234],{"class":350},[234,9389,376],{"class":244},[234,9391,9392,9394,9396],{"class":236,"line":1013},[234,9393,6491],{"class":244},[234,9395,351],{"class":350},[234,9397,376],{"class":244},[234,9399,9400,9402,9404,9406,9408,9411,9413,9415],{"class":236,"line":1019},[234,9401,6398],{"class":244},[234,9403,234],{"class":350},[234,9405,1297],{"class":281},[234,9407,357],{"class":244},[234,9409,9410],{"class":251},"\"anchor-dot anchor-dot--center\"",[234,9412,371],{"class":244},[234,9414,234],{"class":350},[234,9416,376],{"class":244},[234,9418,9419,9421,9423],{"class":236,"line":1025},[234,9420,6500],{"class":244},[234,9422,351],{"class":350},[234,9424,376],{"class":244},[234,9426,9427,9429,9431],{"class":236,"line":1031},[234,9428,1393],{"class":244},[234,9430,351],{"class":350},[234,9432,376],{"class":244},[234,9434,9435],{"class":236,"line":1037},[234,9436,262],{"emptyLinePlaceholder":261},[234,9438,9439,9441,9443,9445,9447,9449],{"class":236,"line":427},[234,9440,1292],{"class":244},[234,9442,351],{"class":350},[234,9444,1297],{"class":281},[234,9446,357],{"class":244},[234,9448,9201],{"class":251},[234,9450,376],{"class":244},[234,9452,9453,9455,9457,9459,9461,9463],{"class":236,"line":1571},[234,9454,1321],{"class":244},[234,9456,351],{"class":350},[234,9458,1297],{"class":281},[234,9460,357],{"class":244},[234,9462,9216],{"class":251},[234,9464,376],{"class":244},[234,9466,9467,9469,9471,9473,9475,9477,9479,9481,9484,9486,9488,9490],{"class":236,"line":1592},[234,9468,6398],{"class":244},[234,9470,351],{"class":350},[234,9472,354],{"class":281},[234,9474,357],{"class":244},[234,9476,9231],{"class":251},[234,9478,9234],{"class":281},[234,9480,357],{"class":244},[234,9482,9483],{"class":251},"\"bottom right\"",[234,9485,1297],{"class":281},[234,9487,357],{"class":244},[234,9489,9246],{"class":251},[234,9491,376],{"class":244},[234,9493,9494,9496,9498,9500,9502,9504,9507,9509],{"class":236,"line":1600},[234,9495,6434],{"class":244},[234,9497,234],{"class":350},[234,9499,1297],{"class":281},[234,9501,357],{"class":244},[234,9503,9261],{"class":251},[234,9505,9506],{"class":244},">bottom right\u003C/",[234,9508,234],{"class":350},[234,9510,376],{"class":244},[234,9512,9513,9515,9517],{"class":236,"line":1615},[234,9514,6491],{"class":244},[234,9516,351],{"class":350},[234,9518,376],{"class":244},[234,9520,9521,9523,9525,9527,9529,9532,9534,9536],{"class":236,"line":1620},[234,9522,6398],{"class":244},[234,9524,234],{"class":350},[234,9526,1297],{"class":281},[234,9528,357],{"class":244},[234,9530,9531],{"class":251},"\"anchor-dot anchor-dot--bottom-right\"",[234,9533,371],{"class":244},[234,9535,234],{"class":350},[234,9537,376],{"class":244},[234,9539,9540,9542,9544],{"class":236,"line":1625},[234,9541,6500],{"class":244},[234,9543,351],{"class":350},[234,9545,376],{"class":244},[234,9547,9548,9550,9552],{"class":236,"line":1634},[234,9549,1393],{"class":244},[234,9551,351],{"class":350},[234,9553,376],{"class":244},[234,9555,9556,9558,9560],{"class":236,"line":1639},[234,9557,1402],{"class":244},[234,9559,351],{"class":350},[234,9561,376],{"class":244},[225,9563,9565],{"className":5857,"code":9564,"language":5859,"meta":230,"style":230},".anchor-demo {\n  min-height: 100vh;\n  display: grid;\n  grid-template-columns: repeat(3, minmax(0, 1fr));\n  gap: 24px;\n  padding: 24px;\n}\n\n.anchor-card {\n  display: grid;\n  place-items: center;\n}\n\n.anchor-stage {\n  position: relative;\n  width: 220px;\n  height: 220px;\n  border: 1px solid black;\n  overflow: hidden;\n}\n\n.anchor-box {\n  position: absolute;\n  inset: 30px;\n  display: grid;\n  place-items: center;\n  border: 2px solid black;\n  background: white;\n  animation: anchor-spin 3s linear infinite;\n}\n\n.anchor-box__label {\n  font-size: 12px;\n  text-transform: uppercase;\n}\n\n.anchor-dot {\n  position: absolute;\n  width: 8px;\n  height: 8px;\n  background: black;\n  border-radius: 9999px;\n}\n\n.anchor-dot--top-left {\n  top: 30px;\n  left: 30px;\n}\n\n.anchor-dot--center {\n  top: 50%;\n  left: 50%;\n  transform: translate(-50%, -50%);\n}\n\n.anchor-dot--bottom-right {\n  right: 30px;\n  bottom: 30px;\n}\n\n@keyframes anchor-spin {\n  from {\n    transform: rotate(0deg);\n  }\n\n  to {\n    transform: rotate(360deg);\n  }\n}\n",[60,9566,9567,9574,9586,9596,9627,9639,9651,9655,9659,9666,9676,9686,9690,9694,9701,9711,9724,9736,9752,9762,9766,9770,9777,9787,9800,9810,9820,9836,9846,9867,9871,9875,9882,9895,9907,9911,9915,9922,9932,9945,9957,9968,9981,9985,9989,9997,10011,10025,10030,10035,10042,10056,10069,10093,10098,10102,10110,10124,10138,10143,10147,10158,10166,10184,10189,10193,10201,10219,10224],{"__ignoreMap":230},[234,9568,9569,9572],{"class":236,"line":237},[234,9570,9571],{"class":281},".anchor-demo",[234,9573,909],{"class":244},[234,9575,9576,9578,9580,9582,9584],{"class":236,"line":258},[234,9577,1661],{"class":271},[234,9579,1443],{"class":244},[234,9581,5883],{"class":271},[234,9583,1669],{"class":240},[234,9585,255],{"class":244},[234,9587,9588,9590,9592,9594],{"class":236,"line":265},[234,9589,1677],{"class":271},[234,9591,1443],{"class":244},[234,9593,1682],{"class":271},[234,9595,255],{"class":244},[234,9597,9598,9600,9602,9605,9607,9610,9612,9615,9617,9619,9621,9623,9625],{"class":236,"line":288},[234,9599,6774],{"class":271},[234,9601,1443],{"class":244},[234,9603,9604],{"class":271},"repeat",[234,9606,329],{"class":244},[234,9608,9609],{"class":271},"3",[234,9611,1833],{"class":244},[234,9613,9614],{"class":271},"minmax",[234,9616,329],{"class":244},[234,9618,1836],{"class":271},[234,9620,1833],{"class":244},[234,9622,1754],{"class":271},[234,9624,6786],{"class":240},[234,9626,1875],{"class":244},[234,9628,9629,9631,9633,9635,9637],{"class":236,"line":293},[234,9630,1703],{"class":271},[234,9632,1443],{"class":244},[234,9634,6740],{"class":271},[234,9636,1789],{"class":240},[234,9638,255],{"class":244},[234,9640,9641,9643,9645,9647,9649],{"class":236,"line":305},[234,9642,1749],{"class":271},[234,9644,1443],{"class":244},[234,9646,6740],{"class":271},[234,9648,1789],{"class":240},[234,9650,255],{"class":244},[234,9652,9653],{"class":236,"line":321},[234,9654,1143],{"class":244},[234,9656,9657],{"class":236,"line":946},[234,9658,262],{"emptyLinePlaceholder":261},[234,9660,9661,9664],{"class":236,"line":955},[234,9662,9663],{"class":281},".anchor-card",[234,9665,909],{"class":244},[234,9667,9668,9670,9672,9674],{"class":236,"line":11},[234,9669,1677],{"class":271},[234,9671,1443],{"class":244},[234,9673,1682],{"class":271},[234,9675,255],{"class":244},[234,9677,9678,9680,9682,9684],{"class":236,"line":980},[234,9679,5902],{"class":271},[234,9681,1443],{"class":244},[234,9683,1695],{"class":271},[234,9685,255],{"class":244},[234,9687,9688],{"class":236,"line":994},[234,9689,1143],{"class":244},[234,9691,9692],{"class":236,"line":1000},[234,9693,262],{"emptyLinePlaceholder":261},[234,9695,9696,9699],{"class":236,"line":1005},[234,9697,9698],{"class":281},".anchor-stage",[234,9700,909],{"class":244},[234,9702,9703,9705,9707,9709],{"class":236,"line":1013},[234,9704,7598],{"class":271},[234,9706,1443],{"class":244},[234,9708,7603],{"class":271},[234,9710,255],{"class":244},[234,9712,9713,9715,9717,9720,9722],{"class":236,"line":1019},[234,9714,5977],{"class":271},[234,9716,1443],{"class":244},[234,9718,9719],{"class":271},"220",[234,9721,1789],{"class":240},[234,9723,255],{"class":244},[234,9725,9726,9728,9730,9732,9734],{"class":236,"line":1025},[234,9727,5991],{"class":271},[234,9729,1443],{"class":244},[234,9731,9719],{"class":271},[234,9733,1789],{"class":240},[234,9735,255],{"class":244},[234,9737,9738,9740,9742,9744,9746,9748,9750],{"class":236,"line":1031},[234,9739,1769],{"class":271},[234,9741,1443],{"class":244},[234,9743,1754],{"class":271},[234,9745,1789],{"class":240},[234,9747,6013],{"class":271},[234,9749,6016],{"class":271},[234,9751,255],{"class":244},[234,9753,9754,9756,9758,9760],{"class":236,"line":1037},[234,9755,7610],{"class":271},[234,9757,1443],{"class":244},[234,9759,7615],{"class":271},[234,9761,255],{"class":244},[234,9763,9764],{"class":236,"line":427},[234,9765,1143],{"class":244},[234,9767,9768],{"class":236,"line":1571},[234,9769,262],{"emptyLinePlaceholder":261},[234,9771,9772,9775],{"class":236,"line":1592},[234,9773,9774],{"class":281},".anchor-box",[234,9776,909],{"class":244},[234,9778,9779,9781,9783,9785],{"class":236,"line":1600},[234,9780,7598],{"class":271},[234,9782,1443],{"class":244},[234,9784,7675],{"class":271},[234,9786,255],{"class":244},[234,9788,9789,9791,9793,9796,9798],{"class":236,"line":1615},[234,9790,7682],{"class":271},[234,9792,1443],{"class":244},[234,9794,9795],{"class":271},"30",[234,9797,1789],{"class":240},[234,9799,255],{"class":244},[234,9801,9802,9804,9806,9808],{"class":236,"line":1620},[234,9803,1677],{"class":271},[234,9805,1443],{"class":244},[234,9807,1682],{"class":271},[234,9809,255],{"class":244},[234,9811,9812,9814,9816,9818],{"class":236,"line":1625},[234,9813,5902],{"class":271},[234,9815,1443],{"class":244},[234,9817,1695],{"class":271},[234,9819,255],{"class":244},[234,9821,9822,9824,9826,9828,9830,9832,9834],{"class":236,"line":1634},[234,9823,1769],{"class":271},[234,9825,1443],{"class":244},[234,9827,6008],{"class":271},[234,9829,1789],{"class":240},[234,9831,6013],{"class":271},[234,9833,6016],{"class":271},[234,9835,255],{"class":244},[234,9837,9838,9840,9842,9844],{"class":236,"line":1639},[234,9839,6023],{"class":271},[234,9841,1443],{"class":244},[234,9843,6028],{"class":271},[234,9845,255],{"class":244},[234,9847,9848,9851,9854,9856,9859,9862,9865],{"class":236,"line":1651},[234,9849,9850],{"class":271},"  animation",[234,9852,9853],{"class":244},": anchor-spin ",[234,9855,9609],{"class":271},[234,9857,9858],{"class":240},"s",[234,9860,9861],{"class":271}," linear",[234,9863,9864],{"class":271}," infinite",[234,9866,255],{"class":244},[234,9868,9869],{"class":236,"line":609},[234,9870,1143],{"class":244},[234,9872,9873],{"class":236,"line":1674},[234,9874,262],{"emptyLinePlaceholder":261},[234,9876,9877,9880],{"class":236,"line":1687},[234,9878,9879],{"class":281},".anchor-box__label",[234,9881,909],{"class":244},[234,9883,9884,9887,9889,9891,9893],{"class":236,"line":1700},[234,9885,9886],{"class":271},"  font-size",[234,9888,1443],{"class":244},[234,9890,8276],{"class":271},[234,9892,1789],{"class":240},[234,9894,255],{"class":244},[234,9896,9897,9900,9902,9905],{"class":236,"line":1716},[234,9898,9899],{"class":271},"  text-transform",[234,9901,1443],{"class":244},[234,9903,9904],{"class":271},"uppercase",[234,9906,255],{"class":244},[234,9908,9909],{"class":236,"line":1721},[234,9910,1143],{"class":244},[234,9912,9913],{"class":236,"line":1726},[234,9914,262],{"emptyLinePlaceholder":261},[234,9916,9917,9920],{"class":236,"line":1734},[234,9918,9919],{"class":281},".anchor-dot",[234,9921,909],{"class":244},[234,9923,9924,9926,9928,9930],{"class":236,"line":1746},[234,9925,7598],{"class":271},[234,9927,1443],{"class":244},[234,9929,7675],{"class":271},[234,9931,255],{"class":244},[234,9933,9934,9936,9938,9941,9943],{"class":236,"line":1766},[234,9935,5977],{"class":271},[234,9937,1443],{"class":244},[234,9939,9940],{"class":271},"8",[234,9942,1789],{"class":240},[234,9944,255],{"class":244},[234,9946,9947,9949,9951,9953,9955],{"class":236,"line":819},[234,9948,5991],{"class":271},[234,9950,1443],{"class":244},[234,9952,9940],{"class":271},[234,9954,1789],{"class":240},[234,9956,255],{"class":244},[234,9958,9959,9961,9963,9966],{"class":236,"line":1794},[234,9960,6023],{"class":271},[234,9962,1443],{"class":244},[234,9964,9965],{"class":271},"black",[234,9967,255],{"class":244},[234,9969,9970,9972,9974,9977,9979],{"class":236,"line":1807},[234,9971,1781],{"class":271},[234,9973,1443],{"class":244},[234,9975,9976],{"class":271},"9999",[234,9978,1789],{"class":240},[234,9980,255],{"class":244},[234,9982,9983],{"class":236,"line":1878},[234,9984,1143],{"class":244},[234,9986,9987],{"class":236,"line":1883},[234,9988,262],{"emptyLinePlaceholder":261},[234,9990,9992,9995],{"class":236,"line":9991},45,[234,9993,9994],{"class":281},".anchor-dot--top-left",[234,9996,909],{"class":244},[234,9998,10000,10003,10005,10007,10009],{"class":236,"line":9999},46,[234,10001,10002],{"class":271},"  top",[234,10004,1443],{"class":244},[234,10006,9795],{"class":271},[234,10008,1789],{"class":240},[234,10010,255],{"class":244},[234,10012,10014,10017,10019,10021,10023],{"class":236,"line":10013},47,[234,10015,10016],{"class":271},"  left",[234,10018,1443],{"class":244},[234,10020,9795],{"class":271},[234,10022,1789],{"class":240},[234,10024,255],{"class":244},[234,10026,10028],{"class":236,"line":10027},48,[234,10029,1143],{"class":244},[234,10031,10033],{"class":236,"line":10032},49,[234,10034,262],{"emptyLinePlaceholder":261},[234,10036,10037,10040],{"class":236,"line":1908},[234,10038,10039],{"class":281},".anchor-dot--center",[234,10041,909],{"class":244},[234,10043,10045,10047,10049,10052,10054],{"class":236,"line":10044},51,[234,10046,10002],{"class":271},[234,10048,1443],{"class":244},[234,10050,10051],{"class":271},"50",[234,10053,3403],{"class":240},[234,10055,255],{"class":244},[234,10057,10059,10061,10063,10065,10067],{"class":236,"line":10058},52,[234,10060,10016],{"class":271},[234,10062,1443],{"class":244},[234,10064,10051],{"class":271},[234,10066,3403],{"class":240},[234,10068,255],{"class":244},[234,10070,10072,10074,10076,10078,10080,10083,10085,10087,10089,10091],{"class":236,"line":10071},53,[234,10073,1810],{"class":271},[234,10075,1443],{"class":244},[234,10077,1815],{"class":271},[234,10079,329],{"class":244},[234,10081,10082],{"class":271},"-50",[234,10084,3403],{"class":240},[234,10086,1833],{"class":244},[234,10088,10082],{"class":271},[234,10090,3403],{"class":240},[234,10092,335],{"class":244},[234,10094,10096],{"class":236,"line":10095},54,[234,10097,1143],{"class":244},[234,10099,10100],{"class":236,"line":3971},[234,10101,262],{"emptyLinePlaceholder":261},[234,10103,10105,10108],{"class":236,"line":10104},56,[234,10106,10107],{"class":281},".anchor-dot--bottom-right",[234,10109,909],{"class":244},[234,10111,10113,10116,10118,10120,10122],{"class":236,"line":10112},57,[234,10114,10115],{"class":271},"  right",[234,10117,1443],{"class":244},[234,10119,9795],{"class":271},[234,10121,1789],{"class":240},[234,10123,255],{"class":244},[234,10125,10127,10130,10132,10134,10136],{"class":236,"line":10126},58,[234,10128,10129],{"class":271},"  bottom",[234,10131,1443],{"class":244},[234,10133,9795],{"class":271},[234,10135,1789],{"class":240},[234,10137,255],{"class":244},[234,10139,10141],{"class":236,"line":10140},59,[234,10142,1143],{"class":244},[234,10144,10145],{"class":236,"line":4298},[234,10146,262],{"emptyLinePlaceholder":261},[234,10148,10150,10153,10156],{"class":236,"line":10149},61,[234,10151,10152],{"class":240},"@keyframes",[234,10154,10155],{"class":899}," anchor-spin",[234,10157,909],{"class":244},[234,10159,10161,10164],{"class":236,"line":10160},62,[234,10162,10163],{"class":281},"  from",[234,10165,909],{"class":244},[234,10167,10169,10172,10174,10176,10178,10180,10182],{"class":236,"line":10168},63,[234,10170,10171],{"class":271},"    transform",[234,10173,1443],{"class":244},[234,10175,6039],{"class":271},[234,10177,329],{"class":244},[234,10179,1836],{"class":271},[234,10181,7781],{"class":240},[234,10183,335],{"class":244},[234,10185,10187],{"class":236,"line":10186},64,[234,10188,1138],{"class":244},[234,10190,10191],{"class":236,"line":4390},[234,10192,262],{"emptyLinePlaceholder":261},[234,10194,10196,10199],{"class":236,"line":10195},66,[234,10197,10198],{"class":281},"  to",[234,10200,909],{"class":244},[234,10202,10204,10206,10208,10210,10212,10215,10217],{"class":236,"line":10203},67,[234,10205,10171],{"class":271},[234,10207,1443],{"class":244},[234,10209,6039],{"class":271},[234,10211,329],{"class":244},[234,10213,10214],{"class":271},"360",[234,10216,7781],{"class":240},[234,10218,335],{"class":244},[234,10220,10222],{"class":236,"line":10221},68,[234,10223,1138],{"class":244},[234,10225,10227],{"class":236,"line":10226},69,[234,10228,1143],{"class":244},[30,10230,10231,10232,10234],{},"The animation is plain CSS. ",[60,10233,5239],{}," only changes the pivot that animation rotates around.",[37,10236,6074],{"id":6073},[225,10238,10240],{"className":227,"code":10239,"language":229,"meta":230,"style":230},"import StringTune, { StringAnchor } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\nstringTune.use(StringAnchor);\nstringTune.start(60);\n",[60,10241,10242,10255,10259,10273,10282],{"__ignoreMap":230},[234,10243,10244,10246,10249,10251,10253],{"class":236,"line":237},[234,10245,241],{"class":240},[234,10247,10248],{"class":244}," StringTune, { StringAnchor } ",[234,10250,248],{"class":240},[234,10252,252],{"class":251},[234,10254,255],{"class":244},[234,10256,10257],{"class":236,"line":258},[234,10258,262],{"emptyLinePlaceholder":261},[234,10260,10261,10263,10265,10267,10269,10271],{"class":236,"line":265},[234,10262,268],{"class":240},[234,10264,272],{"class":271},[234,10266,275],{"class":240},[234,10268,278],{"class":244},[234,10270,282],{"class":281},[234,10272,285],{"class":244},[234,10274,10275,10277,10279],{"class":236,"line":288},[234,10276,296],{"class":244},[234,10278,299],{"class":281},[234,10280,10281],{"class":244},"(StringAnchor);\n",[234,10283,10284,10286,10288,10290,10292],{"class":236,"line":293},[234,10285,296],{"class":244},[234,10287,326],{"class":281},[234,10289,329],{"class":244},[234,10291,332],{"class":271},[234,10293,335],{"class":244},[30,10295,10296],{},"You can also provide a default fallback:",[225,10298,10300],{"className":227,"code":10299,"language":229,"meta":230,"style":230},"stringTune.use(StringAnchor, {\n  anchor: 'center center',\n});\n",[60,10301,10302,10311,10321],{"__ignoreMap":230},[234,10303,10304,10306,10308],{"class":236,"line":237},[234,10305,296],{"class":244},[234,10307,299],{"class":281},[234,10309,10310],{"class":244},"(StringAnchor, {\n",[234,10312,10313,10316,10319],{"class":236,"line":258},[234,10314,10315],{"class":244},"  anchor: ",[234,10317,10318],{"class":251},"'center center'",[234,10320,2506],{"class":244},[234,10322,10323],{"class":236,"line":265},[234,10324,1040],{"class":244},[37,10326,6133],{"id":6132},[42,10328,10329,10334,10346,10355,10362,10372,10378],{},[45,10330,10331,10332,106],{},"The module activates on elements with ",[60,10333,9000],{},[45,10335,10336,10337,10339,10340,10343,10344,106],{},"It maps the ",[60,10338,9002],{}," property as a ",[60,10341,10342],{},"tuple",", so runtime input is read from ",[60,10345,9004],{},[45,10347,10348,10349,10351,10352,10354],{},"Each axis is processed through ",[60,10350,9066],{},". In practice this mostly means resolving ",[60,10353,9105],{}," and handling empty values, not converting keywords into percentages.",[45,10356,10357,10358,10361],{},"The write happens in ",[60,10359,10360],{},"onObjectConnected()",", so this module is connection-time only. It does not update every frame, on scroll, or on mouse move.",[45,10363,10364,10365,10368,10369,10371],{},"Because the write is applied directly to ",[60,10366,10367],{},"style.transformOrigin",", the module composes well with CSS keyframes, ",[60,10370,5272],{},", and any transform-based animation you already have.",[45,10373,10374,10375,10377],{},"The module does not remove or manage ",[60,10376,4642],{}," itself. It only defines the pivot for transforms coming from elsewhere.",[45,10379,10380,10381,10383],{},"The module also does not restore a previous ",[60,10382,9021],{}," value on disconnect. It is a one-way inline style write.",[410,10385,7062],{},{"title":230,"searchDepth":258,"depth":258,"links":10387},[10388,10394,10395,10396],{"id":5406,"depth":258,"text":5407,"children":10389},[10390,10391,10392,10393],{"id":4904,"depth":265,"text":4905},{"id":5557,"depth":265,"text":5558},{"id":3814,"depth":265,"text":5593},{"id":5666,"depth":265,"text":5667},{"id":5688,"depth":258,"text":5689},{"id":6073,"depth":258,"text":6074},{"id":6132,"depth":258,"text":6133},{"path":4398,"title":5244,"description":10398,"kind":5369,"section":5187,"order":4605,"group":5204,"parentPath":-1,"status":8027,"integration":2706,"publicExport":261,"activation":10399,"package":5371,"aliases":10400,"attrs":10402,"events":10403,"cssVars":10404,"related":10405,"body":10406},"Marks an alternate scroll container so the runtime can measure and react correctly.","string=\"scroll-container\"",[10401,5244],"scroll-container",[],[],[],[4310,4397,4309],{"type":22,"value":10407,"toc":11289},[10408,10411,10416,10419,10421,10423,10456,10458,10463,10466,10474,10476,10479,10481,10484,10486,10926,11199,11201,11258,11260,11287],[25,10409,5244],{"id":10410},"stringscrollcontainer",[30,10412,10413,10415],{},[60,10414,5244],{}," adds local smooth wheel scrolling to one container element. It is not a scroll-timeline module and it does not publish CSS variables, transforms, or custom module events.",[30,10417,10418],{},"Think of it as local scroll physics for a nested scrollable area.",[37,10420,5407],{"id":5406},[174,10422,4905],{"id":4904},[2221,10424,10425,10437],{},[2224,10426,10427],{},[2227,10428,10429,10431,10433,10435],{},[2230,10430,4914],{},[2230,10432,4917],{},[2230,10434,4920],{},[2230,10436,5424],{},[2240,10438,10439],{},[2227,10440,10441,10446,10448,10453],{},[2245,10442,10443],{},[60,10444,10445],{},"string-lerp",[2245,10447,5621],{},[2245,10449,10450],{},[60,10451,10452],{},"0.1",[2245,10454,10455],{},"Controls how quickly the container scroll position catches up to its wheel target.",[174,10457,5558],{"id":5557},[30,10459,10460,10462],{},[60,10461,5244],{}," has no CSS output and no module-specific event output.",[30,10464,10465],{},"Its public behavior is the container scroll itself:",[42,10467,10468,10471],{},[45,10469,10470],{},"wheel input is intercepted inside the container",[45,10472,10473],{},"the target scroll position is eased toward with local lerp physics",[174,10475,5593],{"id":3814},[30,10477,10478],{},"This module does not emit any module-specific public events.",[174,10480,5667],{"id":5666},[30,10482,10483],{},"This module has no mirror output contract.",[37,10485,5689],{"id":5688},[225,10487,10489],{"className":338,"code":10488,"language":340,"meta":230,"style":230},"\u003Csection class=\"hero\">Scroll down\u003C/section>\n\n\u003Csection class=\"stage\">\n  \u003Cdiv class=\"grid\">\n    \u003Cdiv string=\"scroll-container\" string-lerp=\"0.08\" class=\"scroll-container-demo\">\n      \u003Cdiv class=\"scroll-item\">Notes\u003C/div>\n      \u003Cdiv class=\"scroll-item\">Scope\u003C/div>\n      \u003Cdiv class=\"scroll-item\">Milestones\u003C/div>\n      \u003Cdiv class=\"scroll-item\">Launch\u003C/div>\n    \u003C/div>\n\n    \u003Cdiv string=\"scroll-container\" string-lerp=\"0.12\" class=\"scroll-container-demo\">\n      \u003Cdiv class=\"scroll-item\">Tasks\u003C/div>\n      \u003Cdiv class=\"scroll-item\">Design system\u003C/div>\n      \u003Cdiv class=\"scroll-item\">Landing page\u003C/div>\n      \u003Cdiv class=\"scroll-item\">QA\u003C/div>\n    \u003C/div>\n\n    \u003Cdiv string=\"scroll-container\" string-lerp=\"0.18\" class=\"scroll-container-demo\">\n      \u003Cdiv class=\"scroll-item\">Archive\u003C/div>\n      \u003Cdiv class=\"scroll-item\">v2\u003C/div>\n      \u003Cdiv class=\"scroll-item\">v3\u003C/div>\n      \u003Cdiv class=\"scroll-item\">v4\u003C/div>\n    \u003C/div>\n  \u003C/div>\n\u003C/section>\n\n\u003Csection class=\"hero\">Scroll up\u003C/section>\n",[60,10490,10491,10509,10513,10528,10543,10573,10593,10612,10631,10650,10658,10662,10689,10708,10727,10746,10765,10773,10777,10804,10823,10842,10861,10880,10888,10896,10904,10908],{"__ignoreMap":230},[234,10492,10493,10495,10497,10499,10501,10503,10505,10507],{"class":236,"line":237},[234,10494,347],{"class":244},[234,10496,740],{"class":350},[234,10498,1297],{"class":281},[234,10500,357],{"class":244},[234,10502,368],{"class":251},[234,10504,5709],{"class":244},[234,10506,740],{"class":350},[234,10508,376],{"class":244},[234,10510,10511],{"class":236,"line":258},[234,10512,262],{"emptyLinePlaceholder":261},[234,10514,10515,10517,10519,10521,10523,10526],{"class":236,"line":265},[234,10516,347],{"class":244},[234,10518,740],{"class":350},[234,10520,1297],{"class":281},[234,10522,357],{"class":244},[234,10524,10525],{"class":251},"\"stage\"",[234,10527,376],{"class":244},[234,10529,10530,10532,10534,10536,10538,10541],{"class":236,"line":288},[234,10531,1292],{"class":244},[234,10533,351],{"class":350},[234,10535,1297],{"class":281},[234,10537,357],{"class":244},[234,10539,10540],{"class":251},"\"grid\"",[234,10542,376],{"class":244},[234,10544,10545,10547,10549,10551,10553,10556,10559,10561,10564,10566,10568,10571],{"class":236,"line":293},[234,10546,1321],{"class":244},[234,10548,351],{"class":350},[234,10550,354],{"class":281},[234,10552,357],{"class":244},[234,10554,10555],{"class":251},"\"scroll-container\"",[234,10557,10558],{"class":281}," string-lerp",[234,10560,357],{"class":244},[234,10562,10563],{"class":251},"\"0.08\"",[234,10565,1297],{"class":281},[234,10567,357],{"class":244},[234,10569,10570],{"class":251},"\"scroll-container-demo\"",[234,10572,376],{"class":244},[234,10574,10575,10577,10579,10581,10583,10586,10589,10591],{"class":236,"line":305},[234,10576,6398],{"class":244},[234,10578,351],{"class":350},[234,10580,1297],{"class":281},[234,10582,357],{"class":244},[234,10584,10585],{"class":251},"\"scroll-item\"",[234,10587,10588],{"class":244},">Notes\u003C/",[234,10590,351],{"class":350},[234,10592,376],{"class":244},[234,10594,10595,10597,10599,10601,10603,10605,10608,10610],{"class":236,"line":321},[234,10596,6398],{"class":244},[234,10598,351],{"class":350},[234,10600,1297],{"class":281},[234,10602,357],{"class":244},[234,10604,10585],{"class":251},[234,10606,10607],{"class":244},">Scope\u003C/",[234,10609,351],{"class":350},[234,10611,376],{"class":244},[234,10613,10614,10616,10618,10620,10622,10624,10627,10629],{"class":236,"line":946},[234,10615,6398],{"class":244},[234,10617,351],{"class":350},[234,10619,1297],{"class":281},[234,10621,357],{"class":244},[234,10623,10585],{"class":251},[234,10625,10626],{"class":244},">Milestones\u003C/",[234,10628,351],{"class":350},[234,10630,376],{"class":244},[234,10632,10633,10635,10637,10639,10641,10643,10646,10648],{"class":236,"line":955},[234,10634,6398],{"class":244},[234,10636,351],{"class":350},[234,10638,1297],{"class":281},[234,10640,357],{"class":244},[234,10642,10585],{"class":251},[234,10644,10645],{"class":244},">Launch\u003C/",[234,10647,351],{"class":350},[234,10649,376],{"class":244},[234,10651,10652,10654,10656],{"class":236,"line":11},[234,10653,6500],{"class":244},[234,10655,351],{"class":350},[234,10657,376],{"class":244},[234,10659,10660],{"class":236,"line":980},[234,10661,262],{"emptyLinePlaceholder":261},[234,10663,10664,10666,10668,10670,10672,10674,10676,10678,10681,10683,10685,10687],{"class":236,"line":994},[234,10665,1321],{"class":244},[234,10667,351],{"class":350},[234,10669,354],{"class":281},[234,10671,357],{"class":244},[234,10673,10555],{"class":251},[234,10675,10558],{"class":281},[234,10677,357],{"class":244},[234,10679,10680],{"class":251},"\"0.12\"",[234,10682,1297],{"class":281},[234,10684,357],{"class":244},[234,10686,10570],{"class":251},[234,10688,376],{"class":244},[234,10690,10691,10693,10695,10697,10699,10701,10704,10706],{"class":236,"line":1000},[234,10692,6398],{"class":244},[234,10694,351],{"class":350},[234,10696,1297],{"class":281},[234,10698,357],{"class":244},[234,10700,10585],{"class":251},[234,10702,10703],{"class":244},">Tasks\u003C/",[234,10705,351],{"class":350},[234,10707,376],{"class":244},[234,10709,10710,10712,10714,10716,10718,10720,10723,10725],{"class":236,"line":1005},[234,10711,6398],{"class":244},[234,10713,351],{"class":350},[234,10715,1297],{"class":281},[234,10717,357],{"class":244},[234,10719,10585],{"class":251},[234,10721,10722],{"class":244},">Design system\u003C/",[234,10724,351],{"class":350},[234,10726,376],{"class":244},[234,10728,10729,10731,10733,10735,10737,10739,10742,10744],{"class":236,"line":1013},[234,10730,6398],{"class":244},[234,10732,351],{"class":350},[234,10734,1297],{"class":281},[234,10736,357],{"class":244},[234,10738,10585],{"class":251},[234,10740,10741],{"class":244},">Landing page\u003C/",[234,10743,351],{"class":350},[234,10745,376],{"class":244},[234,10747,10748,10750,10752,10754,10756,10758,10761,10763],{"class":236,"line":1019},[234,10749,6398],{"class":244},[234,10751,351],{"class":350},[234,10753,1297],{"class":281},[234,10755,357],{"class":244},[234,10757,10585],{"class":251},[234,10759,10760],{"class":244},">QA\u003C/",[234,10762,351],{"class":350},[234,10764,376],{"class":244},[234,10766,10767,10769,10771],{"class":236,"line":1025},[234,10768,6500],{"class":244},[234,10770,351],{"class":350},[234,10772,376],{"class":244},[234,10774,10775],{"class":236,"line":1031},[234,10776,262],{"emptyLinePlaceholder":261},[234,10778,10779,10781,10783,10785,10787,10789,10791,10793,10796,10798,10800,10802],{"class":236,"line":1037},[234,10780,1321],{"class":244},[234,10782,351],{"class":350},[234,10784,354],{"class":281},[234,10786,357],{"class":244},[234,10788,10555],{"class":251},[234,10790,10558],{"class":281},[234,10792,357],{"class":244},[234,10794,10795],{"class":251},"\"0.18\"",[234,10797,1297],{"class":281},[234,10799,357],{"class":244},[234,10801,10570],{"class":251},[234,10803,376],{"class":244},[234,10805,10806,10808,10810,10812,10814,10816,10819,10821],{"class":236,"line":427},[234,10807,6398],{"class":244},[234,10809,351],{"class":350},[234,10811,1297],{"class":281},[234,10813,357],{"class":244},[234,10815,10585],{"class":251},[234,10817,10818],{"class":244},">Archive\u003C/",[234,10820,351],{"class":350},[234,10822,376],{"class":244},[234,10824,10825,10827,10829,10831,10833,10835,10838,10840],{"class":236,"line":1571},[234,10826,6398],{"class":244},[234,10828,351],{"class":350},[234,10830,1297],{"class":281},[234,10832,357],{"class":244},[234,10834,10585],{"class":251},[234,10836,10837],{"class":244},">v2\u003C/",[234,10839,351],{"class":350},[234,10841,376],{"class":244},[234,10843,10844,10846,10848,10850,10852,10854,10857,10859],{"class":236,"line":1592},[234,10845,6398],{"class":244},[234,10847,351],{"class":350},[234,10849,1297],{"class":281},[234,10851,357],{"class":244},[234,10853,10585],{"class":251},[234,10855,10856],{"class":244},">v3\u003C/",[234,10858,351],{"class":350},[234,10860,376],{"class":244},[234,10862,10863,10865,10867,10869,10871,10873,10876,10878],{"class":236,"line":1600},[234,10864,6398],{"class":244},[234,10866,351],{"class":350},[234,10868,1297],{"class":281},[234,10870,357],{"class":244},[234,10872,10585],{"class":251},[234,10874,10875],{"class":244},">v4\u003C/",[234,10877,351],{"class":350},[234,10879,376],{"class":244},[234,10881,10882,10884,10886],{"class":236,"line":1615},[234,10883,6500],{"class":244},[234,10885,351],{"class":350},[234,10887,376],{"class":244},[234,10889,10890,10892,10894],{"class":236,"line":1620},[234,10891,1393],{"class":244},[234,10893,351],{"class":350},[234,10895,376],{"class":244},[234,10897,10898,10900,10902],{"class":236,"line":1625},[234,10899,1402],{"class":244},[234,10901,740],{"class":350},[234,10903,376],{"class":244},[234,10905,10906],{"class":236,"line":1634},[234,10907,262],{"emptyLinePlaceholder":261},[234,10909,10910,10912,10914,10916,10918,10920,10922,10924],{"class":236,"line":1639},[234,10911,347],{"class":244},[234,10913,740],{"class":350},[234,10915,1297],{"class":281},[234,10917,357],{"class":244},[234,10919,368],{"class":251},[234,10921,5850],{"class":244},[234,10923,740],{"class":350},[234,10925,376],{"class":244},[225,10927,10929],{"className":5857,"code":10928,"language":5859,"meta":230,"style":230},".hero,\n.stage {\n  min-height: 100vh;\n  display: grid;\n  place-items: center;\n}\n\n.grid {\n  width: min(100%, 960px);\n  display: grid;\n  grid-template-columns: repeat(3, minmax(0, 1fr));\n  gap: 20px;\n}\n\n.scroll-container-demo {\n  height: 280px;\n  overflow-y: auto;\n  border: 1px solid black;\n  background: white;\n}\n\n.scroll-item {\n  min-height: 88px;\n  display: grid;\n  place-items: center;\n  border-bottom: 1px solid black;\n}\n",[60,10930,10931,10937,10944,10956,10966,10976,10980,10984,10991,11015,11025,11053,11065,11069,11073,11080,11093,11105,11121,11131,11135,11139,11146,11159,11169,11179,11195],{"__ignoreMap":230},[234,10932,10933,10935],{"class":236,"line":237},[234,10934,1654],{"class":281},[234,10936,2506],{"class":244},[234,10938,10939,10942],{"class":236,"line":258},[234,10940,10941],{"class":281},".stage",[234,10943,909],{"class":244},[234,10945,10946,10948,10950,10952,10954],{"class":236,"line":265},[234,10947,1661],{"class":271},[234,10949,1443],{"class":244},[234,10951,5883],{"class":271},[234,10953,1669],{"class":240},[234,10955,255],{"class":244},[234,10957,10958,10960,10962,10964],{"class":236,"line":288},[234,10959,1677],{"class":271},[234,10961,1443],{"class":244},[234,10963,1682],{"class":271},[234,10965,255],{"class":244},[234,10967,10968,10970,10972,10974],{"class":236,"line":293},[234,10969,5902],{"class":271},[234,10971,1443],{"class":244},[234,10973,1695],{"class":271},[234,10975,255],{"class":244},[234,10977,10978],{"class":236,"line":305},[234,10979,1143],{"class":244},[234,10981,10982],{"class":236,"line":321},[234,10983,262],{"emptyLinePlaceholder":261},[234,10985,10986,10989],{"class":236,"line":946},[234,10987,10988],{"class":281},".grid",[234,10990,909],{"class":244},[234,10992,10993,10995,10997,11000,11002,11004,11006,11008,11011,11013],{"class":236,"line":955},[234,10994,5977],{"class":271},[234,10996,1443],{"class":244},[234,10998,10999],{"class":271},"min",[234,11001,329],{"class":244},[234,11003,5883],{"class":271},[234,11005,3403],{"class":240},[234,11007,1833],{"class":244},[234,11009,11010],{"class":271},"960",[234,11012,1789],{"class":240},[234,11014,335],{"class":244},[234,11016,11017,11019,11021,11023],{"class":236,"line":11},[234,11018,1677],{"class":271},[234,11020,1443],{"class":244},[234,11022,1682],{"class":271},[234,11024,255],{"class":244},[234,11026,11027,11029,11031,11033,11035,11037,11039,11041,11043,11045,11047,11049,11051],{"class":236,"line":980},[234,11028,6774],{"class":271},[234,11030,1443],{"class":244},[234,11032,9604],{"class":271},[234,11034,329],{"class":244},[234,11036,9609],{"class":271},[234,11038,1833],{"class":244},[234,11040,9614],{"class":271},[234,11042,329],{"class":244},[234,11044,1836],{"class":271},[234,11046,1833],{"class":244},[234,11048,1754],{"class":271},[234,11050,6786],{"class":240},[234,11052,1875],{"class":244},[234,11054,11055,11057,11059,11061,11063],{"class":236,"line":994},[234,11056,1703],{"class":271},[234,11058,1443],{"class":244},[234,11060,5942],{"class":271},[234,11062,1789],{"class":240},[234,11064,255],{"class":244},[234,11066,11067],{"class":236,"line":1000},[234,11068,1143],{"class":244},[234,11070,11071],{"class":236,"line":1005},[234,11072,262],{"emptyLinePlaceholder":261},[234,11074,11075,11078],{"class":236,"line":1013},[234,11076,11077],{"class":281},".scroll-container-demo",[234,11079,909],{"class":244},[234,11081,11082,11084,11086,11089,11091],{"class":236,"line":1019},[234,11083,5991],{"class":271},[234,11085,1443],{"class":244},[234,11087,11088],{"class":271},"280",[234,11090,1789],{"class":240},[234,11092,255],{"class":244},[234,11094,11095,11098,11100,11103],{"class":236,"line":1025},[234,11096,11097],{"class":271},"  overflow-y",[234,11099,1443],{"class":244},[234,11101,11102],{"class":271},"auto",[234,11104,255],{"class":244},[234,11106,11107,11109,11111,11113,11115,11117,11119],{"class":236,"line":1031},[234,11108,1769],{"class":271},[234,11110,1443],{"class":244},[234,11112,1754],{"class":271},[234,11114,1789],{"class":240},[234,11116,6013],{"class":271},[234,11118,6016],{"class":271},[234,11120,255],{"class":244},[234,11122,11123,11125,11127,11129],{"class":236,"line":1037},[234,11124,6023],{"class":271},[234,11126,1443],{"class":244},[234,11128,6028],{"class":271},[234,11130,255],{"class":244},[234,11132,11133],{"class":236,"line":427},[234,11134,1143],{"class":244},[234,11136,11137],{"class":236,"line":1571},[234,11138,262],{"emptyLinePlaceholder":261},[234,11140,11141,11144],{"class":236,"line":1592},[234,11142,11143],{"class":281},".scroll-item",[234,11145,909],{"class":244},[234,11147,11148,11150,11152,11155,11157],{"class":236,"line":1600},[234,11149,1661],{"class":271},[234,11151,1443],{"class":244},[234,11153,11154],{"class":271},"88",[234,11156,1789],{"class":240},[234,11158,255],{"class":244},[234,11160,11161,11163,11165,11167],{"class":236,"line":1615},[234,11162,1677],{"class":271},[234,11164,1443],{"class":244},[234,11166,1682],{"class":271},[234,11168,255],{"class":244},[234,11170,11171,11173,11175,11177],{"class":236,"line":1620},[234,11172,5902],{"class":271},[234,11174,1443],{"class":244},[234,11176,1695],{"class":271},[234,11178,255],{"class":244},[234,11180,11181,11183,11185,11187,11189,11191,11193],{"class":236,"line":1625},[234,11182,7639],{"class":271},[234,11184,1443],{"class":244},[234,11186,1754],{"class":271},[234,11188,1789],{"class":240},[234,11190,6013],{"class":271},[234,11192,6016],{"class":271},[234,11194,255],{"class":244},[234,11196,11197],{"class":236,"line":1634},[234,11198,1143],{"class":244},[37,11200,6074],{"id":6073},[225,11202,11204],{"className":227,"code":11203,"language":229,"meta":230,"style":230},"import StringTune, { StringScrollContainer } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\nstringTune.use(StringScrollContainer);\nstringTune.start(60);\n",[60,11205,11206,11219,11223,11237,11246],{"__ignoreMap":230},[234,11207,11208,11210,11213,11215,11217],{"class":236,"line":237},[234,11209,241],{"class":240},[234,11211,11212],{"class":244}," StringTune, { StringScrollContainer } ",[234,11214,248],{"class":240},[234,11216,252],{"class":251},[234,11218,255],{"class":244},[234,11220,11221],{"class":236,"line":258},[234,11222,262],{"emptyLinePlaceholder":261},[234,11224,11225,11227,11229,11231,11233,11235],{"class":236,"line":265},[234,11226,268],{"class":240},[234,11228,272],{"class":271},[234,11230,275],{"class":240},[234,11232,278],{"class":244},[234,11234,282],{"class":281},[234,11236,285],{"class":244},[234,11238,11239,11241,11243],{"class":236,"line":288},[234,11240,296],{"class":244},[234,11242,299],{"class":281},[234,11244,11245],{"class":244},"(StringScrollContainer);\n",[234,11247,11248,11250,11252,11254,11256],{"class":236,"line":293},[234,11249,296],{"class":244},[234,11251,326],{"class":281},[234,11253,329],{"class":244},[234,11255,332],{"class":271},[234,11257,335],{"class":244},[37,11259,6133],{"id":6132},[42,11261,11262,11272,11275,11278,11284],{},[45,11263,11264,11265,11268,11269,106],{},"If the element has ",[60,11266,11267],{},"overflow-y: visible",", the module changes it to ",[60,11270,11271],{},"overflow-y: auto",[45,11273,11274],{},"At the top and bottom boundaries, wheel events are allowed to pass through instead of being trapped.",[45,11276,11277],{},"Native scroll updates from dragbars, keyboard, or touch keep the internal state in sync when custom wheel motion is idle.",[45,11279,11280,11281,11283],{},"This module does not make nested content compatible with ",[60,11282,190],{},". It only changes how the container itself scrolls.",[45,11285,11286],{},"In the current runtime, disconnect clears internal state but the DOM listeners are attached through anonymous callbacks and are not explicitly removed.",[410,11288,8986],{},{"title":230,"searchDepth":258,"depth":258,"links":11290},[11291,11297,11298,11299],{"id":5406,"depth":258,"text":5407,"children":11292},[11293,11294,11295,11296],{"id":4904,"depth":265,"text":4905},{"id":5557,"depth":265,"text":5558},{"id":3814,"depth":265,"text":5593},{"id":5666,"depth":265,"text":5667},{"id":5688,"depth":258,"text":5689},{"id":6073,"depth":258,"text":6074},{"id":6132,"depth":258,"text":6133},{"path":4309,"title":5249,"description":11301,"kind":5369,"section":5187,"order":11302,"group":5204,"parentPath":-1,"status":8027,"integration":2706,"publicExport":261,"activation":11303,"package":5371,"aliases":11304,"attrs":11306,"events":11307,"cssVars":11308,"related":11309,"body":11310},"Forwards wheel interaction from a local surface into the main scroll controller.",80,"string=\"scroller\"",[11305,5249],"scroller",[],[],[],[4398,3982,3980],{"type":22,"value":11311,"toc":11655},[11312,11315,11325,11328,11330,11332,11336,11342,11344,11347,11350,11356,11358,11390,11392,11394,11396,11436,11579,11581,11638,11640,11653],[25,11313,5249],{"id":11314},"stringscroller",[30,11316,11317,11319,11320,11322,11323,106],{},[60,11318,5249],{}," is a wheel proxy. It listens for native ",[60,11321,4946],{}," events on the annotated element and re-emits the original event on the shared StringTune event bus as ",[60,11324,4946],{},[30,11326,11327],{},"That makes an alternate surface act like scroll input for the active global scroll controller.",[37,11329,5407],{"id":5406},[174,11331,4905],{"id":4904},[30,11333,11334,8056],{},[60,11335,5249],{},[42,11337,11338],{},[45,11339,11340],{},[60,11341,11303],{},[174,11343,5558],{"id":5557},[30,11345,11346],{},"This module does not write CSS variables, transforms, or classes.",[30,11348,11349],{},"Its public output is one shared event:",[42,11351,11352],{},[45,11353,11354],{},[60,11355,4946],{},[174,11357,5593],{"id":3814},[2221,11359,11360,11370],{},[2224,11361,11362],{},[2227,11363,11364,11366,11368],{},[2230,11365,5602],{},[2230,11367,5605],{},[2230,11369,5608],{},[2240,11371,11372],{},[2227,11373,11374,11378,11384],{},[2245,11375,11376],{},[60,11377,4946],{},[2245,11379,11380,11381],{},"native ",[60,11382,11383],{},"WheelEvent",[2245,11385,11386,11387,11389],{},"The user wheels over the ",[60,11388,11303],{}," element",[174,11391,5667],{"id":5666},[30,11393,10483],{},[37,11395,5689],{"id":5688},[225,11397,11399],{"className":338,"code":11398,"language":340,"meta":230,"style":230},"\u003Cdiv string=\"scroller\" class=\"scroller-demo\">\n  Wheel here\n\u003C/div>\n",[60,11400,11401,11423,11428],{"__ignoreMap":230},[234,11402,11403,11405,11407,11409,11411,11414,11416,11418,11421],{"class":236,"line":237},[234,11404,347],{"class":244},[234,11406,351],{"class":350},[234,11408,354],{"class":281},[234,11410,357],{"class":244},[234,11412,11413],{"class":251},"\"scroller\"",[234,11415,1297],{"class":281},[234,11417,357],{"class":244},[234,11419,11420],{"class":251},"\"scroller-demo\"",[234,11422,376],{"class":244},[234,11424,11425],{"class":236,"line":258},[234,11426,11427],{"class":244},"  Wheel here\n",[234,11429,11430,11432,11434],{"class":236,"line":265},[234,11431,1402],{"class":244},[234,11433,351],{"class":350},[234,11435,376],{"class":244},[225,11437,11439],{"className":5857,"code":11438,"language":5859,"meta":230,"style":230},".scroller-demo {\n  position: fixed;\n  left: 24px;\n  right: 24px;\n  top: 24px;\n  height: calc(50vh - 24px);\n  display: grid;\n  place-items: center;\n  border: 1px solid black;\n  background: white;\n  color: black;\n}\n",[60,11440,11441,11448,11458,11470,11482,11494,11518,11528,11538,11554,11564,11575],{"__ignoreMap":230},[234,11442,11443,11446],{"class":236,"line":237},[234,11444,11445],{"class":281},".scroller-demo",[234,11447,909],{"class":244},[234,11449,11450,11452,11454,11456],{"class":236,"line":258},[234,11451,7598],{"class":271},[234,11453,1443],{"class":244},[234,11455,2863],{"class":271},[234,11457,255],{"class":244},[234,11459,11460,11462,11464,11466,11468],{"class":236,"line":265},[234,11461,10016],{"class":271},[234,11463,1443],{"class":244},[234,11465,6740],{"class":271},[234,11467,1789],{"class":240},[234,11469,255],{"class":244},[234,11471,11472,11474,11476,11478,11480],{"class":236,"line":288},[234,11473,10115],{"class":271},[234,11475,1443],{"class":244},[234,11477,6740],{"class":271},[234,11479,1789],{"class":240},[234,11481,255],{"class":244},[234,11483,11484,11486,11488,11490,11492],{"class":236,"line":293},[234,11485,10002],{"class":271},[234,11487,1443],{"class":244},[234,11489,6740],{"class":271},[234,11491,1789],{"class":240},[234,11493,255],{"class":244},[234,11495,11496,11498,11500,11502,11504,11506,11508,11511,11514,11516],{"class":236,"line":305},[234,11497,5991],{"class":271},[234,11499,1443],{"class":244},[234,11501,1820],{"class":271},[234,11503,329],{"class":244},[234,11505,10051],{"class":271},[234,11507,1669],{"class":240},[234,11509,11510],{"class":240}," -",[234,11512,11513],{"class":271}," 24",[234,11515,1789],{"class":240},[234,11517,335],{"class":244},[234,11519,11520,11522,11524,11526],{"class":236,"line":321},[234,11521,1677],{"class":271},[234,11523,1443],{"class":244},[234,11525,1682],{"class":271},[234,11527,255],{"class":244},[234,11529,11530,11532,11534,11536],{"class":236,"line":946},[234,11531,5902],{"class":271},[234,11533,1443],{"class":244},[234,11535,1695],{"class":271},[234,11537,255],{"class":244},[234,11539,11540,11542,11544,11546,11548,11550,11552],{"class":236,"line":955},[234,11541,1769],{"class":271},[234,11543,1443],{"class":244},[234,11545,1754],{"class":271},[234,11547,1789],{"class":240},[234,11549,6013],{"class":271},[234,11551,6016],{"class":271},[234,11553,255],{"class":244},[234,11555,11556,11558,11560,11562],{"class":236,"line":11},[234,11557,6023],{"class":271},[234,11559,1443],{"class":244},[234,11561,6028],{"class":271},[234,11563,255],{"class":244},[234,11565,11566,11569,11571,11573],{"class":236,"line":980},[234,11567,11568],{"class":271},"  color",[234,11570,1443],{"class":244},[234,11572,9965],{"class":271},[234,11574,255],{"class":244},[234,11576,11577],{"class":236,"line":994},[234,11578,1143],{"class":244},[37,11580,6074],{"id":6073},[225,11582,11584],{"className":227,"code":11583,"language":229,"meta":230,"style":230},"import StringTune, { StringScroller } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\nstringTune.use(StringScroller);\nstringTune.start(60);\n",[60,11585,11586,11599,11603,11617,11626],{"__ignoreMap":230},[234,11587,11588,11590,11593,11595,11597],{"class":236,"line":237},[234,11589,241],{"class":240},[234,11591,11592],{"class":244}," StringTune, { StringScroller } ",[234,11594,248],{"class":240},[234,11596,252],{"class":251},[234,11598,255],{"class":244},[234,11600,11601],{"class":236,"line":258},[234,11602,262],{"emptyLinePlaceholder":261},[234,11604,11605,11607,11609,11611,11613,11615],{"class":236,"line":265},[234,11606,268],{"class":240},[234,11608,272],{"class":271},[234,11610,275],{"class":240},[234,11612,278],{"class":244},[234,11614,282],{"class":281},[234,11616,285],{"class":244},[234,11618,11619,11621,11623],{"class":236,"line":288},[234,11620,296],{"class":244},[234,11622,299],{"class":281},[234,11624,11625],{"class":244},"(StringScroller);\n",[234,11627,11628,11630,11632,11634,11636],{"class":236,"line":293},[234,11629,296],{"class":244},[234,11631,326],{"class":281},[234,11633,329],{"class":244},[234,11635,332],{"class":271},[234,11637,335],{"class":244},[37,11639,6133],{"id":6132},[42,11641,11642,11645,11648],{},[45,11643,11644],{},"The module adds one native wheel listener per connected element.",[45,11646,11647],{},"On disconnect, it removes the stored listener from the element.",[45,11649,11650,11652],{},[60,11651,5249],{}," does not scroll the element itself. It only forwards wheel input into the global StringTune pipeline.",[410,11654,8986],{},{"title":230,"searchDepth":258,"depth":258,"links":11656},[11657,11663,11664,11665],{"id":5406,"depth":258,"text":5407,"children":11658},[11659,11660,11661,11662],{"id":4904,"depth":265,"text":4905},{"id":5557,"depth":265,"text":5558},{"id":3814,"depth":265,"text":5593},{"id":5666,"depth":265,"text":5667},{"id":5688,"depth":258,"text":5689},{"id":6073,"depth":258,"text":6074},{"id":6132,"depth":258,"text":6133},{"path":5260,"title":195,"description":11667,"kind":5369,"section":5187,"order":11668,"group":5253,"parentPath":-1,"status":5370,"integration":11669,"publicExport":261,"activation":11670,"package":5371,"aliases":11671,"attrs":11674,"events":11684,"cssVars":11689,"related":11698,"body":11702},"Global cursor runtime that tracks pointer position, writes cursor CSS variables, and manages portal classes.",110,"global","stringTune.use(StringCursor)",[11672,195,11673],"cursor","cursor-lerp",[11675,11676,11677,11678,11679,11680,11681,11682,11683],"string-cursor","string-cursor-target","string-cursor-class","string-cursor-enter","string-cursor-leave","string-cursor-leave-hold","string-cursor-lerp","string-cursor-vars","string-alignment",[11672,11685,11686,11687,11688],"cursor:start:\u003Cid>","cursor:move:\u003Cid>","cursor:pixel:\u003Cid>","cursor:end:\u003Cid>",[1830,1860,11690,11691,11692,11693,11694,11695,11696,11697],"--x-lerp","--y-lerp","--x-px","--y-px","--dx","--dy","--angle","--angle-deg",[11699,11700,11701,5265],"/docs/modules/cursor/targets-and-portals","/docs/modules/cursor/css-variables-and-events","/docs/modules/cursor/lifecycle-and-device-behavior",{"type":22,"value":11703,"toc":12965},[11704,11707,11712,11715,11729,11732,11734,11738,11743,11843,11847,11850,11897,11899,11902,11909,11913,11919,11929,11932,11967,11972,11998,12002,12007,12025,12036,12040,12043,12057,12059,12064,12132,12135,12158,12160,12166,12168,12398,12874,12876,12936,12938,12963],[25,11705,195],{"id":11706},"stringcursor",[30,11708,11709,11711],{},[60,11710,195],{}," is one of the more complex built-in modules. It is global, but it also manages per-object state, floating portal nodes, hover lifecycle cleanup, and multiple output channels.",[30,11713,11714],{},"At a high level it does two separate jobs:",[42,11716,11717,11723],{},[45,11718,11719,11720],{},"writes target-local cursor variables to elements marked with ",[60,11721,11722],{},"string=\"cursor\"",[45,11724,11725,11726],{},"moves optional floating cursor portals marked with ",[60,11727,11728],{},"string-cursor=\"...\"",[30,11730,11731],{},"That split matters enough that the module now has dedicated deep-dive pages.",[37,11733,5407],{"id":5406},[174,11735,11737],{"id":11736},"target-attributes","Target Attributes",[30,11739,11740,11741,106],{},"These attributes are read from elements marked with ",[60,11742,11722],{},[30,11744,11745,11746,11748,11749,11751,11752,11755,11756,11759,11760,11762,11763,11765,11766,11768,11769,1833,11771,1833,11773,11776,11777,11779,11780,137,11782,11784,11785,11787,11788,1833,11791,11793,11794,11796,11797,11787,11799,1833,11801,11793,11803,11805,11806,11808,11809,11811,11812,11814,11815,11817,11818,11820,11821,11823,11824,1833,11827,1833,11830,1833,11833,1833,11836,1833,11839,11842],{},"| Attribute                  | Type                           | Default                      | Real runtime effect                                                               |\n| -------------------------- | ------------------------------ | ---------------------------- | --------------------------------------------------------------------------------- | ------------------------------------------- |\n| ",[60,11747,11676],{},"     | string                         | ",[60,11750,4302],{},"                    | Selects which cursor portal IDs this target controls. Supports comma or ",[60,11753,11754],{},"        |","separated lists.",[60,11757,11758],{},"\\*"," targets every portal. |\n| ",[60,11761,11677],{},"      | string                         | ",[60,11764,6246],{},"                         | Adds this class to matching portals while the target is hovered.                  |\n| ",[60,11767,11683],{},"         | enum: ",[60,11770,326],{},[60,11772,1695],{},[60,11774,11775],{},"end"," | ",[60,11778,1695],{},"                     | Changes how local ",[60,11781,1830],{},[60,11783,1860],{}," are normalized.                                 |\n| ",[60,11786,11678],{},"      | enum: ",[60,11789,11790],{},"snap",[60,11792,4301],{},"         | ",[60,11795,11790],{},"                       | Controls how local cursor values enter when the pointer first touches the target. |\n| ",[60,11798,11679],{},[60,11800,11790],{},[60,11802,4301],{},[60,11804,4301],{},"                     | Controls how local cursor values reset after leaving the target.                  |\n| ",[60,11807,11680],{}," | boolean                        | ",[60,11810,2715],{},"                      | Freezes the last local values after leaving instead of easing back to zero.       |\n| ",[60,11813,10445],{},"              | number                         | inherited from global ",[60,11816,8030],{}," | Smoothing factor for target-local cursor motion.                                  |\n| ",[60,11819,11682],{},"       | string list                    | ",[60,11822,6246],{},"                         | Enables extra variables: ",[60,11825,11826],{},"xpx",[60,11828,11829],{},"ypx",[60,11831,11832],{},"dx",[60,11834,11835],{},"dy",[60,11837,11838],{},"angle",[60,11840,11841],{},"angle-deg",".          |",[174,11844,11846],{"id":11845},"portal-attributes","Portal Attributes",[30,11848,11849],{},"These attributes are read from floating cursor portal elements.",[2221,11851,11852,11864],{},[2224,11853,11854],{},[2227,11855,11856,11858,11860,11862],{},[2230,11857,4914],{},[2230,11859,4917],{},[2230,11861,4920],{},[2230,11863,5424],{},[2240,11865,11866,11881],{},[2227,11867,11868,11872,11874,11878],{},[2245,11869,11870],{},[60,11871,11675],{},[2245,11873,2252],{},[2245,11875,11876],{},[60,11877,4302],{},[2245,11879,11880],{},"Registers the portal and gives it an addressable ID.",[2227,11882,11883,11887,11889,11894],{},[2245,11884,11885],{},[60,11886,11681],{},[2245,11888,5621],{},[2245,11890,11891,11892],{},"global ",[60,11893,11673],{},[2245,11895,11896],{},"Changes how quickly the portal itself follows the pointer.",[174,11898,5558],{"id":5557},[30,11900,11901],{},"The detailed output contract now has its own page:",[42,11903,11904],{},[45,11905,11906],{},[133,11907,11908],{"href":11700},"CSS Variables And Events",[2068,11910,11912],{"id":11911},"target-css-variables","Target CSS variables",[30,11914,11915,11916,11918],{},"On ",[60,11917,11722],{}," elements the module writes:",[42,11920,11921,11925],{},[45,11922,11923],{},[60,11924,1830],{},[45,11926,11927],{},[60,11928,1860],{},[30,11930,11931],{},"These are normalized local coordinates, not viewport pixels.",[42,11933,11934,11946,11958],{},[45,11935,11936,11939,11940,11943,11944],{},[60,11937,11938],{},"alignment=\"center\""," gives roughly ",[60,11941,11942],{},"-1"," to ",[60,11945,1754],{},[45,11947,11948,11951,11952,11954,11955,11957],{},[60,11949,11950],{},"alignment=\"start\""," gives ",[60,11953,1836],{}," at the left/top edge and ",[60,11956,1754],{}," at the opposite side",[45,11959,11960,11951,11963,11943,11965],{},[60,11961,11962],{},"alignment=\"end\"",[60,11964,11942],{},[60,11966,1836],{},[30,11968,4232,11969,11971],{},[60,11970,11682],{}," includes extra flags, the module also writes:",[42,11973,11974,11978,11982,11986,11990,11994],{},[45,11975,11976],{},[60,11977,11692],{},[45,11979,11980],{},[60,11981,11693],{},[45,11983,11984],{},[60,11985,11694],{},[45,11987,11988],{},[60,11989,11695],{},[45,11991,11992],{},[60,11993,11696],{},[45,11995,11996],{},[60,11997,11697],{},[2068,11999,12001],{"id":12000},"portal-css-variables","Portal CSS variables",[30,12003,11915,12004,12006],{},[60,12005,11728],{}," portals the module writes:",[42,12008,12009,12013,12017,12021],{},[45,12010,12011],{},[60,12012,1830],{},[45,12014,12015],{},[60,12016,1860],{},[45,12018,12019],{},[60,12020,11690],{},[45,12022,12023],{},[60,12024,11691],{},[30,12026,12027,12028,137,12030,12032,12033,106],{},"Portal ",[60,12029,1830],{},[60,12031,1860],{}," are viewport pixel positions, so consume them with ",[60,12034,12035],{},"* 1px",[2068,12037,12039],{"id":12038},"classes","Classes",[30,12041,12042],{},"The runtime toggles:",[42,12044,12045,12051],{},[45,12046,12047,12050],{},[60,12048,12049],{},"-show"," on portals while at least one linked target is hovered",[45,12052,12053,12054,12056],{},"the class from ",[60,12055,11677],{}," on matching portals while that target is hovered",[174,12058,5593],{"id":3814},[30,12060,12061,12063],{},[60,12062,195],{}," emits these target-scoped events:",[2221,12065,12066,12076],{},[2224,12067,12068],{},[2227,12069,12070,12072,12074],{},[2230,12071,5602],{},[2230,12073,5605],{},[2230,12075,5608],{},[2240,12077,12078,12092,12106,12119],{},[2227,12079,12080,12084,12089],{},[2245,12081,12082],{},[60,12083,11685],{},[2245,12085,12086],{},[60,12087,12088],{},"null",[2245,12090,12091],{},"Target-local tracking becomes active",[2227,12093,12094,12098,12103],{},[2245,12095,12096],{},[60,12097,11686],{},[2245,12099,12100],{},[60,12101,12102],{},"{ x, y }",[2245,12104,12105],{},"Normalized target-local coordinates change",[2227,12107,12108,12112,12116],{},[2245,12109,12110],{},[60,12111,11687],{},[2245,12113,12114],{},[60,12115,12102],{},[2245,12117,12118],{},"Pixel coordinates inside the target change",[2227,12120,12121,12125,12129],{},[2245,12122,12123],{},[60,12124,11688],{},[2245,12126,12127],{},[60,12128,12088],{},[2245,12130,12131],{},"Target-local tracking settles or resets",[30,12133,12134],{},"If at least one portal exists, the module also emits a global portal event:",[2221,12136,12137,12145],{},[2224,12138,12139],{},[2227,12140,12141,12143],{},[2230,12142,5602],{},[2230,12144,5605],{},[2240,12146,12147],{},[2227,12148,12149,12153],{},[2245,12150,12151],{},[60,12152,11672],{},[2245,12154,12155],{},[60,12156,12157],{},"{ x, y, stepX, stepY }",[174,12159,5667],{"id":5666},[30,12161,12162,12163,12165],{},"If a mirror element is linked with ",[60,12164,2457],{},", the target-local CSS variables are written to both the source element and its mirrors. Portal behavior is still owned by the source target ID.",[37,12167,5689],{"id":5688},[225,12169,12171],{"className":338,"code":12170,"language":340,"meta":230,"style":230},"\u003Cdiv string-cursor=\"default\" class=\"cursor-portal\">\n  \u003Cspan class=\"cursor-text\">View\u003C/span>\n\u003C/div>\n\n\u003Carticle\n  class=\"project-card\"\n  string=\"cursor\"\n  string-id=\"project-1\"\n  string-cursor-target=\"default\"\n  string-cursor-class=\"-view-project\"\n  string-cursor-enter=\"smooth\"\n  string-cursor-leave=\"smooth\"\n>\n  \u003Cimg src=\"/assets/project1.jpg\" alt=\"Project Thumbnail\" class=\"project-image\" />\n  \u003Cdiv class=\"project-info\">\n    \u003Ch3>Design System\u003C/h3>\n    \u003Cp>2026\u003C/p>\n  \u003C/div>\n\u003C/article>\n",[60,12172,12173,12196,12216,12224,12228,12235,12245,12255,12265,12275,12285,12295,12304,12308,12340,12355,12368,12381,12389],{"__ignoreMap":230},[234,12174,12175,12177,12179,12182,12184,12187,12189,12191,12194],{"class":236,"line":237},[234,12176,347],{"class":244},[234,12178,351],{"class":350},[234,12180,12181],{"class":281}," string-cursor",[234,12183,357],{"class":244},[234,12185,12186],{"class":251},"\"default\"",[234,12188,1297],{"class":281},[234,12190,357],{"class":244},[234,12192,12193],{"class":251},"\"cursor-portal\"",[234,12195,376],{"class":244},[234,12197,12198,12200,12202,12204,12206,12209,12212,12214],{"class":236,"line":258},[234,12199,1292],{"class":244},[234,12201,234],{"class":350},[234,12203,1297],{"class":281},[234,12205,357],{"class":244},[234,12207,12208],{"class":251},"\"cursor-text\"",[234,12210,12211],{"class":244},">View\u003C/",[234,12213,234],{"class":350},[234,12215,376],{"class":244},[234,12217,12218,12220,12222],{"class":236,"line":265},[234,12219,1402],{"class":244},[234,12221,351],{"class":350},[234,12223,376],{"class":244},[234,12225,12226],{"class":236,"line":288},[234,12227,262],{"emptyLinePlaceholder":261},[234,12229,12230,12232],{"class":236,"line":293},[234,12231,347],{"class":244},[234,12233,12234],{"class":350},"article\n",[234,12236,12237,12240,12242],{"class":236,"line":305},[234,12238,12239],{"class":281},"  class",[234,12241,357],{"class":244},[234,12243,12244],{"class":251},"\"project-card\"\n",[234,12246,12247,12250,12252],{"class":236,"line":321},[234,12248,12249],{"class":281},"  string",[234,12251,357],{"class":244},[234,12253,12254],{"class":251},"\"cursor\"\n",[234,12256,12257,12260,12262],{"class":236,"line":946},[234,12258,12259],{"class":281},"  string-id",[234,12261,357],{"class":244},[234,12263,12264],{"class":251},"\"project-1\"\n",[234,12266,12267,12270,12272],{"class":236,"line":955},[234,12268,12269],{"class":281},"  string-cursor-target",[234,12271,357],{"class":244},[234,12273,12274],{"class":251},"\"default\"\n",[234,12276,12277,12280,12282],{"class":236,"line":11},[234,12278,12279],{"class":281},"  string-cursor-class",[234,12281,357],{"class":244},[234,12283,12284],{"class":251},"\"-view-project\"\n",[234,12286,12287,12290,12292],{"class":236,"line":980},[234,12288,12289],{"class":281},"  string-cursor-enter",[234,12291,357],{"class":244},[234,12293,12294],{"class":251},"\"smooth\"\n",[234,12296,12297,12300,12302],{"class":236,"line":994},[234,12298,12299],{"class":281},"  string-cursor-leave",[234,12301,357],{"class":244},[234,12303,12294],{"class":251},[234,12305,12306],{"class":236,"line":1000},[234,12307,376],{"class":244},[234,12309,12310,12312,12314,12317,12319,12322,12325,12327,12330,12332,12334,12337],{"class":236,"line":1005},[234,12311,1292],{"class":244},[234,12313,3282],{"class":350},[234,12315,12316],{"class":281}," src",[234,12318,357],{"class":244},[234,12320,12321],{"class":251},"\"/assets/project1.jpg\"",[234,12323,12324],{"class":281}," alt",[234,12326,357],{"class":244},[234,12328,12329],{"class":251},"\"Project Thumbnail\"",[234,12331,1297],{"class":281},[234,12333,357],{"class":244},[234,12335,12336],{"class":251},"\"project-image\"",[234,12338,12339],{"class":244}," />\n",[234,12341,12342,12344,12346,12348,12350,12353],{"class":236,"line":1013},[234,12343,1292],{"class":244},[234,12345,351],{"class":350},[234,12347,1297],{"class":281},[234,12349,357],{"class":244},[234,12351,12352],{"class":251},"\"project-info\"",[234,12354,376],{"class":244},[234,12356,12357,12359,12361,12364,12366],{"class":236,"line":1019},[234,12358,1321],{"class":244},[234,12360,174],{"class":350},[234,12362,12363],{"class":244},">Design System\u003C/",[234,12365,174],{"class":350},[234,12367,376],{"class":244},[234,12369,12370,12372,12374,12377,12379],{"class":236,"line":1025},[234,12371,1321],{"class":244},[234,12373,30],{"class":350},[234,12375,12376],{"class":244},">2026\u003C/",[234,12378,30],{"class":350},[234,12380,376],{"class":244},[234,12382,12383,12385,12387],{"class":236,"line":1031},[234,12384,1393],{"class":244},[234,12386,351],{"class":350},[234,12388,376],{"class":244},[234,12390,12391,12393,12396],{"class":236,"line":1037},[234,12392,1402],{"class":244},[234,12394,12395],{"class":350},"article",[234,12397,376],{"class":244},[225,12399,12401],{"className":5857,"code":12400,"language":5859,"meta":230,"style":230},".cursor-portal {\n  position: fixed;\n  left: 0;\n  top: 0;\n  width: 16px;\n  height: 16px;\n  background: black;\n  border-radius: 50%;\n  pointer-events: none;\n  transform: translate3d(calc(var(--x, 0) * 1px), calc(var(--y, 0) * 1px), 0) translate(-50%, -50%);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.cursor-portal:not(.-show) {\n  opacity: 0;\n}\n\n.cursor-text {\n  color: white;\n  font-size: 12px;\n  opacity: 0;\n}\n\n.cursor-portal.-view-project {\n  width: 64px;\n  height: 64px;\n}\n\n.cursor-portal.-view-project .cursor-text {\n  opacity: 1;\n}\n\n.project-card {\n  border: 1px solid black;\n  padding: 1rem;\n  background: white;\n  transform: translate3d(calc(var(--x, 0) * 8px), calc(var(--y, 0) * 8px), 0);\n}\n",[60,12402,12403,12410,12420,12430,12440,12453,12465,12475,12487,12498,12577,12588,12598,12609,12613,12617,12629,12640,12644,12648,12655,12665,12677,12687,12691,12695,12702,12715,12727,12731,12735,12744,12754,12758,12762,12769,12785,12797,12807,12870],{"__ignoreMap":230},[234,12404,12405,12408],{"class":236,"line":237},[234,12406,12407],{"class":281},".cursor-portal",[234,12409,909],{"class":244},[234,12411,12412,12414,12416,12418],{"class":236,"line":258},[234,12413,7598],{"class":271},[234,12415,1443],{"class":244},[234,12417,2863],{"class":271},[234,12419,255],{"class":244},[234,12421,12422,12424,12426,12428],{"class":236,"line":265},[234,12423,10016],{"class":271},[234,12425,1443],{"class":244},[234,12427,1836],{"class":271},[234,12429,255],{"class":244},[234,12431,12432,12434,12436,12438],{"class":236,"line":288},[234,12433,10002],{"class":271},[234,12435,1443],{"class":244},[234,12437,1836],{"class":271},[234,12439,255],{"class":244},[234,12441,12442,12444,12446,12449,12451],{"class":236,"line":293},[234,12443,5977],{"class":271},[234,12445,1443],{"class":244},[234,12447,12448],{"class":271},"16",[234,12450,1789],{"class":240},[234,12452,255],{"class":244},[234,12454,12455,12457,12459,12461,12463],{"class":236,"line":305},[234,12456,5991],{"class":271},[234,12458,1443],{"class":244},[234,12460,12448],{"class":271},[234,12462,1789],{"class":240},[234,12464,255],{"class":244},[234,12466,12467,12469,12471,12473],{"class":236,"line":321},[234,12468,6023],{"class":271},[234,12470,1443],{"class":244},[234,12472,9965],{"class":271},[234,12474,255],{"class":244},[234,12476,12477,12479,12481,12483,12485],{"class":236,"line":946},[234,12478,1781],{"class":271},[234,12480,1443],{"class":244},[234,12482,10051],{"class":271},[234,12484,3403],{"class":240},[234,12486,255],{"class":244},[234,12488,12489,12492,12494,12496],{"class":236,"line":955},[234,12490,12491],{"class":271},"  pointer-events",[234,12493,1443],{"class":244},[234,12495,1774],{"class":271},[234,12497,255],{"class":244},[234,12499,12500,12502,12504,12507,12509,12511,12513,12515,12517,12519,12521,12523,12525,12527,12529,12531,12533,12535,12537,12539,12541,12543,12545,12547,12549,12551,12553,12555,12557,12559,12561,12563,12565,12567,12569,12571,12573,12575],{"class":236,"line":11},[234,12501,1810],{"class":271},[234,12503,1443],{"class":244},[234,12505,12506],{"class":271},"translate3d",[234,12508,329],{"class":244},[234,12510,1820],{"class":271},[234,12512,329],{"class":244},[234,12514,1825],{"class":271},[234,12516,329],{"class":244},[234,12518,1830],{"class":899},[234,12520,1833],{"class":244},[234,12522,1836],{"class":271},[234,12524,903],{"class":244},[234,12526,1841],{"class":240},[234,12528,1844],{"class":271},[234,12530,1789],{"class":240},[234,12532,1849],{"class":244},[234,12534,1820],{"class":271},[234,12536,329],{"class":244},[234,12538,1825],{"class":271},[234,12540,329],{"class":244},[234,12542,1860],{"class":899},[234,12544,1833],{"class":244},[234,12546,1836],{"class":271},[234,12548,903],{"class":244},[234,12550,1841],{"class":240},[234,12552,1844],{"class":271},[234,12554,1789],{"class":240},[234,12556,1849],{"class":244},[234,12558,1836],{"class":271},[234,12560,903],{"class":244},[234,12562,1815],{"class":271},[234,12564,329],{"class":244},[234,12566,10082],{"class":271},[234,12568,3403],{"class":240},[234,12570,1833],{"class":244},[234,12572,10082],{"class":271},[234,12574,3403],{"class":240},[234,12576,335],{"class":244},[234,12578,12579,12581,12583,12586],{"class":236,"line":980},[234,12580,1677],{"class":271},[234,12582,1443],{"class":244},[234,12584,12585],{"class":271},"flex",[234,12587,255],{"class":244},[234,12589,12590,12592,12594,12596],{"class":236,"line":994},[234,12591,6805],{"class":271},[234,12593,1443],{"class":244},[234,12595,1695],{"class":271},[234,12597,255],{"class":244},[234,12599,12600,12603,12605,12607],{"class":236,"line":1000},[234,12601,12602],{"class":271},"  justify-content",[234,12604,1443],{"class":244},[234,12606,1695],{"class":271},[234,12608,255],{"class":244},[234,12610,12611],{"class":236,"line":1005},[234,12612,1143],{"class":244},[234,12614,12615],{"class":236,"line":1013},[234,12616,262],{"emptyLinePlaceholder":261},[234,12618,12619,12622,12624,12627],{"class":236,"line":1019},[234,12620,12621],{"class":281},".cursor-portal:not",[234,12623,329],{"class":244},[234,12625,12626],{"class":281},".-show",[234,12628,1477],{"class":244},[234,12630,12631,12634,12636,12638],{"class":236,"line":1025},[234,12632,12633],{"class":271},"  opacity",[234,12635,1443],{"class":244},[234,12637,1836],{"class":271},[234,12639,255],{"class":244},[234,12641,12642],{"class":236,"line":1031},[234,12643,1143],{"class":244},[234,12645,12646],{"class":236,"line":1037},[234,12647,262],{"emptyLinePlaceholder":261},[234,12649,12650,12653],{"class":236,"line":427},[234,12651,12652],{"class":281},".cursor-text",[234,12654,909],{"class":244},[234,12656,12657,12659,12661,12663],{"class":236,"line":1571},[234,12658,11568],{"class":271},[234,12660,1443],{"class":244},[234,12662,6028],{"class":271},[234,12664,255],{"class":244},[234,12666,12667,12669,12671,12673,12675],{"class":236,"line":1592},[234,12668,9886],{"class":271},[234,12670,1443],{"class":244},[234,12672,8276],{"class":271},[234,12674,1789],{"class":240},[234,12676,255],{"class":244},[234,12678,12679,12681,12683,12685],{"class":236,"line":1600},[234,12680,12633],{"class":271},[234,12682,1443],{"class":244},[234,12684,1836],{"class":271},[234,12686,255],{"class":244},[234,12688,12689],{"class":236,"line":1615},[234,12690,1143],{"class":244},[234,12692,12693],{"class":236,"line":1620},[234,12694,262],{"emptyLinePlaceholder":261},[234,12696,12697,12700],{"class":236,"line":1625},[234,12698,12699],{"class":281},".cursor-portal.-view-project",[234,12701,909],{"class":244},[234,12703,12704,12706,12708,12711,12713],{"class":236,"line":1634},[234,12705,5977],{"class":271},[234,12707,1443],{"class":244},[234,12709,12710],{"class":271},"64",[234,12712,1789],{"class":240},[234,12714,255],{"class":244},[234,12716,12717,12719,12721,12723,12725],{"class":236,"line":1639},[234,12718,5991],{"class":271},[234,12720,1443],{"class":244},[234,12722,12710],{"class":271},[234,12724,1789],{"class":240},[234,12726,255],{"class":244},[234,12728,12729],{"class":236,"line":1651},[234,12730,1143],{"class":244},[234,12732,12733],{"class":236,"line":609},[234,12734,262],{"emptyLinePlaceholder":261},[234,12736,12737,12739,12742],{"class":236,"line":1674},[234,12738,12699],{"class":281},[234,12740,12741],{"class":281}," .cursor-text",[234,12743,909],{"class":244},[234,12745,12746,12748,12750,12752],{"class":236,"line":1687},[234,12747,12633],{"class":271},[234,12749,1443],{"class":244},[234,12751,1754],{"class":271},[234,12753,255],{"class":244},[234,12755,12756],{"class":236,"line":1700},[234,12757,1143],{"class":244},[234,12759,12760],{"class":236,"line":1716},[234,12761,262],{"emptyLinePlaceholder":261},[234,12763,12764,12767],{"class":236,"line":1721},[234,12765,12766],{"class":281},".project-card",[234,12768,909],{"class":244},[234,12770,12771,12773,12775,12777,12779,12781,12783],{"class":236,"line":1726},[234,12772,1769],{"class":271},[234,12774,1443],{"class":244},[234,12776,1754],{"class":271},[234,12778,1789],{"class":240},[234,12780,6013],{"class":271},[234,12782,6016],{"class":271},[234,12784,255],{"class":244},[234,12786,12787,12789,12791,12793,12795],{"class":236,"line":1734},[234,12788,1749],{"class":271},[234,12790,1443],{"class":244},[234,12792,1754],{"class":271},[234,12794,1711],{"class":240},[234,12796,255],{"class":244},[234,12798,12799,12801,12803,12805],{"class":236,"line":1746},[234,12800,6023],{"class":271},[234,12802,1443],{"class":244},[234,12804,6028],{"class":271},[234,12806,255],{"class":244},[234,12808,12809,12811,12813,12815,12817,12819,12821,12823,12825,12827,12829,12831,12833,12835,12838,12840,12842,12844,12846,12848,12850,12852,12854,12856,12858,12860,12862,12864,12866,12868],{"class":236,"line":1766},[234,12810,1810],{"class":271},[234,12812,1443],{"class":244},[234,12814,12506],{"class":271},[234,12816,329],{"class":244},[234,12818,1820],{"class":271},[234,12820,329],{"class":244},[234,12822,1825],{"class":271},[234,12824,329],{"class":244},[234,12826,1830],{"class":899},[234,12828,1833],{"class":244},[234,12830,1836],{"class":271},[234,12832,903],{"class":244},[234,12834,1841],{"class":240},[234,12836,12837],{"class":271}," 8",[234,12839,1789],{"class":240},[234,12841,1849],{"class":244},[234,12843,1820],{"class":271},[234,12845,329],{"class":244},[234,12847,1825],{"class":271},[234,12849,329],{"class":244},[234,12851,1860],{"class":899},[234,12853,1833],{"class":244},[234,12855,1836],{"class":271},[234,12857,903],{"class":244},[234,12859,1841],{"class":240},[234,12861,12837],{"class":271},[234,12863,1789],{"class":240},[234,12865,1849],{"class":244},[234,12867,1836],{"class":271},[234,12869,335],{"class":244},[234,12871,12872],{"class":236,"line":819},[234,12873,1143],{"class":244},[37,12875,6074],{"id":6073},[225,12877,12879],{"className":227,"code":12878,"language":229,"meta":230,"style":230},"import StringTune, { StringCursor } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\nstringTune.use(StringCursor, { lerp: 0.8 });\nstringTune.start(60);\n",[60,12880,12881,12894,12898,12912,12924],{"__ignoreMap":230},[234,12882,12883,12885,12888,12890,12892],{"class":236,"line":237},[234,12884,241],{"class":240},[234,12886,12887],{"class":244}," StringTune, { StringCursor } ",[234,12889,248],{"class":240},[234,12891,252],{"class":251},[234,12893,255],{"class":244},[234,12895,12896],{"class":236,"line":258},[234,12897,262],{"emptyLinePlaceholder":261},[234,12899,12900,12902,12904,12906,12908,12910],{"class":236,"line":265},[234,12901,268],{"class":240},[234,12903,272],{"class":271},[234,12905,275],{"class":240},[234,12907,278],{"class":244},[234,12909,282],{"class":281},[234,12911,285],{"class":244},[234,12913,12914,12916,12918,12920,12922],{"class":236,"line":288},[234,12915,296],{"class":244},[234,12917,299],{"class":281},[234,12919,312],{"class":244},[234,12921,315],{"class":271},[234,12923,318],{"class":244},[234,12925,12926,12928,12930,12932,12934],{"class":236,"line":293},[234,12927,296],{"class":244},[234,12929,326],{"class":281},[234,12931,329],{"class":244},[234,12933,332],{"class":271},[234,12935,335],{"class":244},[37,12937,6133],{"id":6132},[42,12939,12940,12945,12954,12960],{},[45,12941,12942,12944],{},[60,12943,195],{}," does not create a portal for you. If your UI needs a floating cursor, you must add a portal element yourself.",[45,12946,12947,137,12950,12953],{},[60,12948,12949],{},"string-target-disable",[60,12951,12952],{},"string-target-style-disable"," are intentionally not documented as supported API. The current runtime parses older setting names, but the current module implementation does not apply those flags.",[45,12955,12956,12959],{},[60,12957,12958],{},"target-class"," is also intentionally omitted from the supported contract. It is parsed, but not used by the current runtime.",[45,12961,12962],{},"On coarse pointer devices the module disables itself.",[410,12964,7062],{},{"title":230,"searchDepth":258,"depth":258,"links":12966},[12967,12974,12975,12976],{"id":5406,"depth":258,"text":5407,"children":12968},[12969,12970,12971,12972,12973],{"id":11736,"depth":265,"text":11737},{"id":11845,"depth":265,"text":11846},{"id":5557,"depth":265,"text":5558},{"id":3814,"depth":265,"text":5593},{"id":5666,"depth":265,"text":5667},{"id":5688,"depth":258,"text":5689},{"id":6073,"depth":258,"text":6074},{"id":6132,"depth":258,"text":6133},{"path":11699,"title":12978,"description":12979,"kind":5369,"section":5187,"order":12980,"group":5253,"parentPath":5260,"status":5370,"integration":11669,"publicExport":261,"activation":11670,"package":5371,"aliases":12981,"attrs":12984,"events":12985,"cssVars":12986,"related":12987,"body":12988},"Targets And Portals","How StringCursor splits responsibility between cursor targets and floating cursor portals.",111,[12982,12983,11676],"cursor target","cursor portal",[11675,11676,11677,11681,11683],[],[],[5260,11700,2464],{"type":22,"value":12989,"toc":13356},[12990,12993,12999,13011,13014,13018,13021,13024,13058,13061,13065,13068,13071,13081,13084,13088,13093,13095,13230,13233,13259,13263,13269,13272,13280,13284,13290,13293,13343,13347,13353],[25,12991,12978],{"id":12992},"targets-and-portals",[30,12994,12995,12996,12998],{},"The most important ",[60,12997,195],{}," concept is that it manages two different surfaces.",[42,13000,13001,13006],{},[45,13002,13003,13004],{},"targets: elements marked with ",[60,13005,11722],{},[45,13007,13008,13009],{},"portals: floating elements marked with ",[60,13010,11728],{},[30,13012,13013],{},"These are related, but they are not the same thing.",[37,13015,13017],{"id":13016},"cursor-targets","Cursor Targets",[30,13019,13020],{},"A cursor target is a normal element inside the layout. It receives target-local cursor values and target-scoped events.",[30,13022,13023],{},"Typical target attributes:",[42,13025,13026,13030,13034,13038,13042,13046,13050,13054],{},[45,13027,13028],{},[60,13029,11676],{},[45,13031,13032],{},[60,13033,11677],{},[45,13035,13036],{},[60,13037,11683],{},[45,13039,13040],{},[60,13041,11678],{},[45,13043,13044],{},[60,13045,11679],{},[45,13047,13048],{},[60,13049,11680],{},[45,13051,13052],{},[60,13053,10445],{},[45,13055,13056],{},[60,13057,11682],{},[30,13059,13060],{},"Important detail: target-local values are calculated relative to the hovered element, not relative to the viewport.",[37,13062,13064],{"id":13063},"cursor-portals","Cursor Portals",[30,13066,13067],{},"A cursor portal is a floating DOM node that follows the global pointer position.",[30,13069,13070],{},"Typical portal attributes:",[42,13072,13073,13077],{},[45,13074,13075],{},[60,13076,11675],{},[45,13078,13079],{},[60,13080,11681],{},[30,13082,13083],{},"The portal does not need to be inside the hovered target. It is just addressable by ID.",[37,13085,13087],{"id":13086},"how-linking-works","How Linking Works",[30,13089,13090,13091,106],{},"Targets link to portals through ",[60,13092,11676],{},[30,13094,183],{},[225,13096,13098],{"className":338,"code":13097,"language":340,"meta":230,"style":230},"\u003Cdiv string-cursor=\"default\" class=\"cursor-portal\">\u003C/div>\n\u003Cdiv string-cursor=\"media\" class=\"cursor-portal\">\u003C/div>\n\n\u003Cbutton string=\"cursor\" string-cursor-target=\"default\">Open\u003C/button>\n\u003Carticle string=\"cursor\" string-cursor-target=\"media\">Project\u003C/article>\n\u003Csection string=\"cursor\" string-cursor-target=\"default|media\">Shared control\u003C/section>\n",[60,13099,13100,13124,13149,13153,13179,13204],{"__ignoreMap":230},[234,13101,13102,13104,13106,13108,13110,13112,13114,13116,13118,13120,13122],{"class":236,"line":237},[234,13103,347],{"class":244},[234,13105,351],{"class":350},[234,13107,12181],{"class":281},[234,13109,357],{"class":244},[234,13111,12186],{"class":251},[234,13113,1297],{"class":281},[234,13115,357],{"class":244},[234,13117,12193],{"class":251},[234,13119,371],{"class":244},[234,13121,351],{"class":350},[234,13123,376],{"class":244},[234,13125,13126,13128,13130,13132,13134,13137,13139,13141,13143,13145,13147],{"class":236,"line":258},[234,13127,347],{"class":244},[234,13129,351],{"class":350},[234,13131,12181],{"class":281},[234,13133,357],{"class":244},[234,13135,13136],{"class":251},"\"media\"",[234,13138,1297],{"class":281},[234,13140,357],{"class":244},[234,13142,12193],{"class":251},[234,13144,371],{"class":244},[234,13146,351],{"class":350},[234,13148,376],{"class":244},[234,13150,13151],{"class":236,"line":265},[234,13152,262],{"emptyLinePlaceholder":261},[234,13154,13155,13157,13159,13161,13163,13165,13168,13170,13172,13175,13177],{"class":236,"line":288},[234,13156,347],{"class":244},[234,13158,1359],{"class":350},[234,13160,354],{"class":281},[234,13162,357],{"class":244},[234,13164,1373],{"class":251},[234,13166,13167],{"class":281}," string-cursor-target",[234,13169,357],{"class":244},[234,13171,12186],{"class":251},[234,13173,13174],{"class":244},">Open\u003C/",[234,13176,1359],{"class":350},[234,13178,376],{"class":244},[234,13180,13181,13183,13185,13187,13189,13191,13193,13195,13197,13200,13202],{"class":236,"line":293},[234,13182,347],{"class":244},[234,13184,12395],{"class":350},[234,13186,354],{"class":281},[234,13188,357],{"class":244},[234,13190,1373],{"class":251},[234,13192,13167],{"class":281},[234,13194,357],{"class":244},[234,13196,13136],{"class":251},[234,13198,13199],{"class":244},">Project\u003C/",[234,13201,12395],{"class":350},[234,13203,376],{"class":244},[234,13205,13206,13208,13210,13212,13214,13216,13218,13220,13223,13226,13228],{"class":236,"line":305},[234,13207,347],{"class":244},[234,13209,740],{"class":350},[234,13211,354],{"class":281},[234,13213,357],{"class":244},[234,13215,1373],{"class":251},[234,13217,13167],{"class":281},[234,13219,357],{"class":244},[234,13221,13222],{"class":251},"\"default|media\"",[234,13224,13225],{"class":244},">Shared control\u003C/",[234,13227,740],{"class":350},[234,13229,376],{"class":244},[30,13231,13232],{},"Rules:",[42,13234,13235,13240,13248,13253],{},[45,13236,13237,13238],{},"empty target config falls back to ",[60,13239,4302],{},[45,13241,13242,13243,1934,13246],{},"IDs can be split with ",[60,13244,13245],{},",",[60,13247,1128],{},[45,13249,13250,13252],{},[60,13251,1841],{}," targets every registered portal",[45,13254,13255,13256,13258],{},"if nothing resolves, the runtime falls back to the ",[60,13257,4302],{}," portal or the first available portal bucket",[37,13260,13262],{"id":13261},"portal-classes","Portal Classes",[30,13264,13265,13266,13268],{},"While a target is hovered, the runtime can apply the class from ",[60,13267,11677],{}," to the matched portal elements.",[30,13270,13271],{},"That gives you a clean split:",[42,13273,13274,13277],{},[45,13275,13276],{},"target owns semantic hover intent",[45,13278,13279],{},"portal owns floating cursor visuals",[37,13281,13283],{"id":13282},"hover-visibility","Hover Visibility",[30,13285,13286,13287,13289],{},"Portals do not show themselves by default. The runtime toggles ",[60,13288,12049],{}," while at least one linked target is hovered.",[30,13291,13292],{},"That means a portal element usually needs CSS for both states:",[225,13294,13296],{"className":5857,"code":13295,"language":5859,"meta":230,"style":230},".cursor-portal {\n  opacity: 0;\n}\n\n.cursor-portal.-show {\n  opacity: 1;\n}\n",[60,13297,13298,13304,13314,13318,13322,13329,13339],{"__ignoreMap":230},[234,13299,13300,13302],{"class":236,"line":237},[234,13301,12407],{"class":281},[234,13303,909],{"class":244},[234,13305,13306,13308,13310,13312],{"class":236,"line":258},[234,13307,12633],{"class":271},[234,13309,1443],{"class":244},[234,13311,1836],{"class":271},[234,13313,255],{"class":244},[234,13315,13316],{"class":236,"line":265},[234,13317,1143],{"class":244},[234,13319,13320],{"class":236,"line":288},[234,13321,262],{"emptyLinePlaceholder":261},[234,13323,13324,13327],{"class":236,"line":293},[234,13325,13326],{"class":281},".cursor-portal.-show",[234,13328,909],{"class":244},[234,13330,13331,13333,13335,13337],{"class":236,"line":305},[234,13332,12633],{"class":271},[234,13334,1443],{"class":244},[234,13336,1754],{"class":271},[234,13338,255],{"class":244},[234,13340,13341],{"class":236,"line":321},[234,13342,1143],{"class":244},[37,13344,13346],{"id":13345},"mirror-boundary","Mirror Boundary",[30,13348,13349,13350,13352],{},"If a cursor target has mirrors through ",[60,13351,2457],{},", the target-local CSS variables can be written to the source element and its mirrors. Portal ownership still stays attached to the source target's cursor ID and hover state.",[410,13354,13355],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":230,"searchDepth":258,"depth":258,"links":13357},[13358,13359,13360,13361,13362,13363],{"id":13016,"depth":258,"text":13017},{"id":13063,"depth":258,"text":13064},{"id":13086,"depth":258,"text":13087},{"id":13261,"depth":258,"text":13262},{"id":13282,"depth":258,"text":13283},{"id":13345,"depth":258,"text":13346},{"path":11700,"title":11908,"description":13365,"kind":5369,"section":5187,"order":13366,"group":5253,"parentPath":5260,"status":5370,"integration":11669,"publicExport":261,"activation":11670,"package":5371,"aliases":13367,"attrs":13371,"events":13372,"cssVars":13373,"related":13374,"body":13375},"Detailed reference for target variables, portal variables, extra cursor vars, and emitted cursor events.",112,[13368,13369,13370,11841],"cursor vars","cursor:start","cursor:move",[],[11672,11685,11686,11687,11688],[1830,1860,11690,11691,11692,11693,11694,11695,11696,11697],[5260,2899,8037],{"type":22,"value":13376,"toc":13729},[13377,13380,13385,13393,13397,13403,13413,13416,13419,13443,13447,13452,13478,13485,13487,13519,13523,13528,13546,13549,13567,13570,13590,13594,13597,13615,13618,13644,13653,13657,13663,13669,13672,13706,13709,13711,13714,13726],[25,13378,11908],{"id":13379},"css-variables-and-events",[30,13381,13382,13384],{},[60,13383,195],{}," exposes two different output surfaces:",[42,13386,13387,13390],{},[45,13388,13389],{},"CSS variables written to targets and portals",[45,13391,13392],{},"emitted events for target activity and global cursor motion",[37,13394,13396],{"id":13395},"target-variables","Target Variables",[30,13398,13399,13400,13402],{},"On elements marked with ",[60,13401,11722],{}," the runtime always writes:",[42,13404,13405,13409],{},[45,13406,13407],{},[60,13408,1830],{},[45,13410,13411],{},[60,13412,1860],{},[30,13414,13415],{},"These are normalized local coordinates.",[30,13417,13418],{},"Alignment modes:",[42,13420,13421,13428,13436],{},[45,13422,13423,1443,13425],{},[60,13424,326],{},[60,13426,13427],{},"0 .. 1",[45,13429,13430,13432,13433],{},[60,13431,1695],{},": roughly ",[60,13434,13435],{},"-1 .. 1",[45,13437,13438,1443,13440],{},[60,13439,11775],{},[60,13441,13442],{},"-1 .. 0",[37,13444,13446],{"id":13445},"extra-target-variables","Extra Target Variables",[30,13448,4232,13449,13451],{},[60,13450,11682],{}," enables them, the runtime can also write:",[42,13453,13454,13458,13462,13466,13470,13474],{},[45,13455,13456],{},[60,13457,11692],{},[45,13459,13460],{},[60,13461,11693],{},[45,13463,13464],{},[60,13465,11694],{},[45,13467,13468],{},[60,13469,11695],{},[45,13471,13472],{},[60,13473,11696],{},[45,13475,13476],{},[60,13477,11697],{},[30,13479,13480,13481,1934,13483,106],{},"Supported names are parsed case-insensitively and can be separated with ",[60,13482,13245],{},[60,13484,1128],{},[30,13486,2071],{},[225,13488,13490],{"className":338,"code":13489,"language":340,"meta":230,"style":230},"\u003Cbutton string=\"cursor\" string-cursor-vars=\"xpx|ypx|dx|dy|angle-deg\">Hover\u003C/button>\n",[60,13491,13492],{"__ignoreMap":230},[234,13493,13494,13496,13498,13500,13502,13504,13507,13509,13512,13515,13517],{"class":236,"line":237},[234,13495,347],{"class":244},[234,13497,1359],{"class":350},[234,13499,354],{"class":281},[234,13501,357],{"class":244},[234,13503,1373],{"class":251},[234,13505,13506],{"class":281}," string-cursor-vars",[234,13508,357],{"class":244},[234,13510,13511],{"class":251},"\"xpx|ypx|dx|dy|angle-deg\"",[234,13513,13514],{"class":244},">Hover\u003C/",[234,13516,1359],{"class":350},[234,13518,376],{"class":244},[37,13520,13522],{"id":13521},"portal-variables","Portal Variables",[30,13524,11915,13525,13527],{},[60,13526,11728],{}," portals the runtime writes:",[42,13529,13530,13534,13538,13542],{},[45,13531,13532],{},[60,13533,1830],{},[45,13535,13536],{},[60,13537,1860],{},[45,13539,13540],{},[60,13541,11690],{},[45,13543,13544],{},[60,13545,11691],{},[30,13547,13548],{},"Important difference:",[42,13550,13551,13559],{},[45,13552,13553,13554,137,13556,13558],{},"target ",[60,13555,1830],{},[60,13557,1860],{}," are normalized local values",[45,13560,13561,13562,137,13564,13566],{},"portal ",[60,13563,1830],{},[60,13565,1860],{}," are viewport pixel positions",[30,13568,13569],{},"So a portal usually consumes them like this:",[225,13571,13573],{"className":5857,"code":13572,"language":5859,"meta":230,"style":230},"transform: translate3d(calc(var(--x, 0) * 1px), calc(var(--y, 0) * 1px), 0) translate(-50%, -50%);\n",[60,13574,13575],{"__ignoreMap":230},[234,13576,13577,13580,13582,13585,13587],{"class":236,"line":237},[234,13578,13579],{"class":244},"transform: translate3d(calc(var(--x, 0) ",[234,13581,1841],{"class":350},[234,13583,13584],{"class":244}," 1px), calc(var(--y, 0) ",[234,13586,1841],{"class":350},[234,13588,13589],{"class":244}," 1px), 0) translate(-50%, -50%);\n",[37,13591,13593],{"id":13592},"target-events","Target Events",[30,13595,13596],{},"The module emits these target-scoped events:",[42,13598,13599,13603,13607,13611],{},[45,13600,13601],{},[60,13602,11685],{},[45,13604,13605],{},[60,13606,11686],{},[45,13608,13609],{},[60,13610,11687],{},[45,13612,13613],{},[60,13614,11688],{},[30,13616,13617],{},"Payloads:",[42,13619,13620,13626,13632,13638],{},[45,13621,13622,1443,13624],{},[60,13623,11685],{},[60,13625,12088],{},[45,13627,13628,1443,13630],{},[60,13629,11686],{},[60,13631,12102],{},[45,13633,13634,1443,13636],{},[60,13635,11687],{},[60,13637,12102],{},[45,13639,13640,1443,13642],{},[60,13641,11688],{},[60,13643,12088],{},[30,13645,13646,13648,13649,13652],{},[60,13647,13370],{}," is based on normalized local coordinates. ",[60,13650,13651],{},"cursor:pixel"," is based on element-local pixel coordinates.",[37,13654,13656],{"id":13655},"global-cursor-event","Global Cursor Event",[30,13658,13659,13660,13662],{},"If at least one portal exists, ",[60,13661,195],{}," also emits a global event:",[42,13664,13665],{},[45,13666,13667],{},[60,13668,11672],{},[30,13670,13671],{},"Payload:",[225,13673,13675],{"className":227,"code":13674,"language":229,"meta":230,"style":230},"{\n  x,\n  y,\n  stepX,\n  stepY,\n}\n",[60,13676,13677,13682,13687,13692,13697,13702],{"__ignoreMap":230},[234,13678,13679],{"class":236,"line":237},[234,13680,13681],{"class":244},"{\n",[234,13683,13684],{"class":236,"line":258},[234,13685,13686],{"class":244},"  x,\n",[234,13688,13689],{"class":236,"line":265},[234,13690,13691],{"class":244},"  y,\n",[234,13693,13694],{"class":236,"line":288},[234,13695,13696],{"class":244},"  stepX,\n",[234,13698,13699],{"class":236,"line":293},[234,13700,13701],{"class":244},"  stepY,\n",[234,13703,13704],{"class":236,"line":305},[234,13705,1143],{"class":244},[30,13707,13708],{},"This is useful when you want to build global cursor-reactive behavior without listening to a particular target ID.",[37,13710,13262],{"id":13261},[30,13712,13713],{},"In addition to CSS variables, the runtime toggles:",[42,13715,13716,13721],{},[45,13717,13718,13720],{},[60,13719,12049],{}," on portals",[45,13722,12053,13723,13725],{},[60,13724,11677],{}," while the linked target is hovered",[410,13727,13728],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}",{"title":230,"searchDepth":258,"depth":258,"links":13730},[13731,13732,13733,13734,13735,13736],{"id":13395,"depth":258,"text":13396},{"id":13445,"depth":258,"text":13446},{"id":13521,"depth":258,"text":13522},{"id":13592,"depth":258,"text":13593},{"id":13655,"depth":258,"text":13656},{"id":13261,"depth":258,"text":13262},{"path":11701,"title":13738,"description":13739,"kind":5369,"section":5187,"order":13740,"group":5253,"parentPath":5260,"status":5370,"integration":11669,"publicExport":261,"activation":11670,"package":5371,"aliases":13741,"attrs":13746,"events":13747,"cssVars":13748,"related":13749,"body":13751},"Lifecycle And Device Behavior","How StringCursor binds hover listeners, reacts to DOM rebuilds, handles navigation cleanup, and disables itself on coarse pointers.",113,[13742,13743,13744,13745],"coarse pointer","DOM rebuild","beforeunload","pagehide",[],[],[],[5260,13750,5301],"/docs/api/is-coarse-pointer",{"type":22,"value":13752,"toc":13933},[13753,13756,13761,13765,13772,13775,13779,13782,13810,13813,13817,13820,13823,13840,13844,13849,13852,13856,13859,13862,13877,13880,13884,13896,13899],[25,13754,13738],{"id":13755},"lifecycle-and-device-behavior",[30,13757,13758,13760],{},[60,13759,195],{}," is not just a hover helper. It also owns a fair amount of runtime lifecycle behavior.",[37,13762,13764],{"id":13763},"coarse-pointer-devices","Coarse Pointer Devices",[30,13766,13767,13768,13771],{},"The module checks ",[60,13769,13770],{},"isCoarsePointer()"," in the constructor. If the environment is treated as coarse-pointer oriented, the module disables itself.",[30,13773,13774],{},"That is why a cursor setup may appear fully inactive on touch-first or narrow environments even if the target markup exists.",[37,13776,13778],{"id":13777},"object-connection","Object Connection",[30,13780,13781],{},"When a cursor target connects, the runtime:",[42,13783,13784,13787,13797,13807],{},[45,13785,13786],{},"attaches center tracking for the object",[45,13788,13789,13790,137,13793,13796],{},"stores ",[60,13791,13792],{},"mouseenter",[60,13794,13795],{},"mouseleave"," handlers on the object",[45,13798,13799,13800,137,13803,13806],{},"subscribes to local object ",[60,13801,13802],{},"enter",[60,13804,13805],{},"leave"," events",[45,13808,13809],{},"caches initial width and height",[30,13811,13812],{},"That caching matters because local cursor math should not trigger layout reads every frame.",[37,13814,13816],{"id":13815},"resize-behavior","Resize Behavior",[30,13818,13819],{},"On resize, the module refreshes cached dimensions for connected targets.",[30,13821,13822],{},"It is also conservative on mobile rebuild permissions:",[42,13824,13825,13830,13835],{},[45,13826,13827],{},[60,13828,13829],{},"mobile.rebuild.height = false",[45,13831,13832],{},[60,13833,13834],{},"mobile.rebuild.width = false",[45,13836,13837],{},[60,13838,13839],{},"mobile.rebuild.scrollHeight = false",[37,13841,13843],{"id":13842},"dom-rebuilds-and-mutations","DOM Rebuilds And Mutations",[30,13845,13846,13848],{},[60,13847,195],{}," refreshes portal registration when DOM rebuild or DOM mutation introduces or removes portal elements.",[30,13850,13851],{},"That is how dynamically inserted cursor portals can still become active without a full page reload.",[37,13853,13855],{"id":13854},"navigation-cleanup","Navigation Cleanup",[30,13857,13858],{},"The module explicitly guards against hover state getting stuck during navigation or DOM removal.",[30,13860,13861],{},"It binds cleanup logic to:",[42,13863,13864,13868,13872],{},[45,13865,13866],{},[60,13867,13744],{},[45,13869,13870],{},[60,13871,13745],{},[45,13873,13874],{},[60,13875,13876],{},"visibilitychange",[30,13878,13879],{},"It also checks removed nodes in DOM mutation handling, so if a hovered target disappears from the DOM, the module can clean up hover state and portal classes.",[37,13881,13883],{"id":13882},"older-parsed-flags","Older Parsed Flags",[30,13885,13886,13887,1833,13890,7048,13893,13895],{},"The runtime still parses some older keys like ",[60,13888,13889],{},"target-disable",[60,13891,13892],{},"target-style-disable",[60,13894,12958],{},", but the current docs intentionally treat them as non-contractual unless the behavior is clearly part of the supported module surface.",[30,13897,13898],{},"So for public docs, focus on:",[42,13900,13901,13905,13909,13913,13917,13921,13925,13929],{},[45,13902,13903],{},[60,13904,11676],{},[45,13906,13907],{},[60,13908,11677],{},[45,13910,13911],{},[60,13912,11683],{},[45,13914,13915],{},[60,13916,11678],{},[45,13918,13919],{},[60,13920,11679],{},[45,13922,13923],{},[60,13924,11680],{},[45,13926,13927],{},[60,13928,11682],{},[45,13930,13931],{},[60,13932,11681],{},{"title":230,"searchDepth":258,"depth":258,"links":13934},[13935,13936,13937,13938,13939,13940],{"id":13763,"depth":258,"text":13764},{"id":13777,"depth":258,"text":13778},{"id":13815,"depth":258,"text":13816},{"id":13842,"depth":258,"text":13843},{"id":13854,"depth":258,"text":13855},{"id":13882,"depth":258,"text":13883},{"path":5265,"title":5266,"description":13942,"kind":5369,"section":5187,"order":13943,"group":5253,"parentPath":-1,"status":5370,"integration":2706,"publicExport":261,"activation":13944,"package":5371,"aliases":13945,"attrs":13947,"events":13950,"cssVars":13952,"related":13955,"body":13956},"Element module that pulls the target toward the cursor using strength and radius controls.",120,"string=\"magnetic\"",[13946,5266],"magnetic",[13948,13949],"string-strength","string-radius",[13951],"magnetic:move:\u003Cid>",[13953,13954],"--magnetic-x","--magnetic-y",[5260,5271,8037],{"type":22,"value":13957,"toc":14600},[13958,13961,13966,13968,13970,14018,14020,14023,14033,14038,14040,14067,14069,14080,14082,14220,14503,14505,14562,14570,14572,14598],[25,13959,5266],{"id":13960},"stringmagnetic",[30,13962,13963,13965],{},[60,13964,5266],{}," pulls an element toward the pointer when the pointer comes within a configured radius. The module does not apply any transform by itself. It only writes CSS variables and emits movement events.",[37,13967,5407],{"id":5406},[174,13969,4905],{"id":4904},[2221,13971,13972,13984],{},[2224,13973,13974],{},[2227,13975,13976,13978,13980,13982],{},[2230,13977,4914],{},[2230,13979,4917],{},[2230,13981,4920],{},[2230,13983,5424],{},[2240,13985,13986,14002],{},[2227,13987,13988,13992,13994,13999],{},[2245,13989,13990],{},[60,13991,13948],{},[2245,13993,5621],{},[2245,13995,13996],{},[60,13997,13998],{},"0.3",[2245,14000,14001],{},"Scales how far the element can be pulled toward the pointer.",[2227,14003,14004,14008,14010,14015],{},[2245,14005,14006],{},[60,14007,13949],{},[2245,14009,5621],{},[2245,14011,14012],{},[60,14013,14014],{},"150",[2245,14016,14017],{},"Defines the active zone around the element center. Outside this radius the module stays idle.",[174,14019,5558],{"id":5557},[30,14021,14022],{},"The module writes these CSS variables on the source element and all mirrors:",[42,14024,14025,14029],{},[45,14026,14027],{},[60,14028,13953],{},[45,14030,14031],{},[60,14032,13954],{},[30,14034,14035,14036,106],{},"Both values are plain numbers. Add units yourself in CSS, usually with ",[60,14037,12035],{},[174,14039,5593],{"id":3814},[2221,14041,14042,14052],{},[2224,14043,14044],{},[2227,14045,14046,14048,14050],{},[2230,14047,5602],{},[2230,14049,5605],{},[2230,14051,5608],{},[2240,14053,14054],{},[2227,14055,14056,14060,14064],{},[2245,14057,14058],{},[60,14059,13951],{},[2245,14061,14062],{},[60,14063,12102],{},[2245,14065,14066],{},"The smoothed magnetic offset changes",[174,14068,5667],{"id":5666},[30,14070,14071,14072,14074,14075,137,14077,14079],{},"When the source object has mirrors via ",[60,14073,2457],{},", the source and all mirrors receive the same ",[60,14076,13953],{},[60,14078,13954],{}," values.",[37,14081,5689],{"id":5688},[225,14083,14085],{"className":338,"code":14084,"language":340,"meta":230,"style":230},"\u003Cheader class=\"header\">\n  \u003Cdiv class=\"logo\">Fiddle\u003C/div>\n  \u003Cbutton\n    string=\"magnetic\"\n    string-id=\"magnetic-btn\"\n    string-strength=\"0.4\"\n    string-radius=\"150\"\n    class=\"magnetic-btn\"\n  >\n    \u003Cspan class=\"btn-text\">Contact Us\u003C/span>\n  \u003C/button>\n\u003C/header>\n",[60,14086,14087,14103,14123,14130,14140,14150,14160,14170,14179,14184,14204,14212],{"__ignoreMap":230},[234,14088,14089,14091,14094,14096,14098,14101],{"class":236,"line":237},[234,14090,347],{"class":244},[234,14092,14093],{"class":350},"header",[234,14095,1297],{"class":281},[234,14097,357],{"class":244},[234,14099,14100],{"class":251},"\"header\"",[234,14102,376],{"class":244},[234,14104,14105,14107,14109,14111,14113,14116,14119,14121],{"class":236,"line":258},[234,14106,1292],{"class":244},[234,14108,351],{"class":350},[234,14110,1297],{"class":281},[234,14112,357],{"class":244},[234,14114,14115],{"class":251},"\"logo\"",[234,14117,14118],{"class":244},">Fiddle\u003C/",[234,14120,351],{"class":350},[234,14122,376],{"class":244},[234,14124,14125,14127],{"class":236,"line":265},[234,14126,1292],{"class":244},[234,14128,14129],{"class":350},"button\n",[234,14131,14132,14135,14137],{"class":236,"line":288},[234,14133,14134],{"class":281},"    string",[234,14136,357],{"class":244},[234,14138,14139],{"class":251},"\"magnetic\"\n",[234,14141,14142,14145,14147],{"class":236,"line":293},[234,14143,14144],{"class":281},"    string-id",[234,14146,357],{"class":244},[234,14148,14149],{"class":251},"\"magnetic-btn\"\n",[234,14151,14152,14155,14157],{"class":236,"line":305},[234,14153,14154],{"class":281},"    string-strength",[234,14156,357],{"class":244},[234,14158,14159],{"class":251},"\"0.4\"\n",[234,14161,14162,14165,14167],{"class":236,"line":321},[234,14163,14164],{"class":281},"    string-radius",[234,14166,357],{"class":244},[234,14168,14169],{"class":251},"\"150\"\n",[234,14171,14172,14175,14177],{"class":236,"line":946},[234,14173,14174],{"class":281},"    class",[234,14176,357],{"class":244},[234,14178,14149],{"class":251},[234,14180,14181],{"class":236,"line":955},[234,14182,14183],{"class":244},"  >\n",[234,14185,14186,14188,14190,14192,14194,14197,14200,14202],{"class":236,"line":11},[234,14187,1321],{"class":244},[234,14189,234],{"class":350},[234,14191,1297],{"class":281},[234,14193,357],{"class":244},[234,14195,14196],{"class":251},"\"btn-text\"",[234,14198,14199],{"class":244},">Contact Us\u003C/",[234,14201,234],{"class":350},[234,14203,376],{"class":244},[234,14205,14206,14208,14210],{"class":236,"line":980},[234,14207,1393],{"class":244},[234,14209,1359],{"class":350},[234,14211,376],{"class":244},[234,14213,14214,14216,14218],{"class":236,"line":994},[234,14215,1402],{"class":244},[234,14217,14093],{"class":350},[234,14219,376],{"class":244},[225,14221,14223],{"className":5857,"code":14222,"language":5859,"meta":230,"style":230},".header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: 1.5rem 2rem;\n  border-bottom: 1px solid black;\n}\n\n.logo {\n  font-weight: bold;\n  font-size: 1.25rem;\n}\n\n.magnetic-btn {\n  padding: 0.75rem 1.75rem;\n  border: 1px solid black;\n  border-radius: 999px;\n  background: white;\n  color: black;\n  cursor: pointer;\n  transform: translate3d(\n    calc(var(--magnetic-x, 0) * 1px),\n    calc(var(--magnetic-y, 0) * 1px),\n    0\n  );\n}\n",[60,14224,14225,14232,14242,14252,14263,14280,14296,14300,14304,14311,14323,14336,14340,14344,14351,14368,14384,14396,14406,14416,14426,14436,14464,14490,14495,14499],{"__ignoreMap":230},[234,14226,14227,14230],{"class":236,"line":237},[234,14228,14229],{"class":281},".header",[234,14231,909],{"class":244},[234,14233,14234,14236,14238,14240],{"class":236,"line":258},[234,14235,1677],{"class":271},[234,14237,1443],{"class":244},[234,14239,12585],{"class":271},[234,14241,255],{"class":244},[234,14243,14244,14246,14248,14250],{"class":236,"line":265},[234,14245,6805],{"class":271},[234,14247,1443],{"class":244},[234,14249,1695],{"class":271},[234,14251,255],{"class":244},[234,14253,14254,14256,14258,14261],{"class":236,"line":288},[234,14255,12602],{"class":271},[234,14257,1443],{"class":244},[234,14259,14260],{"class":271},"space-between",[234,14262,255],{"class":244},[234,14264,14265,14267,14269,14271,14273,14276,14278],{"class":236,"line":293},[234,14266,1749],{"class":271},[234,14268,1443],{"class":244},[234,14270,1708],{"class":271},[234,14272,1711],{"class":240},[234,14274,14275],{"class":271}," 2",[234,14277,1711],{"class":240},[234,14279,255],{"class":244},[234,14281,14282,14284,14286,14288,14290,14292,14294],{"class":236,"line":305},[234,14283,7639],{"class":271},[234,14285,1443],{"class":244},[234,14287,1754],{"class":271},[234,14289,1789],{"class":240},[234,14291,6013],{"class":271},[234,14293,6016],{"class":271},[234,14295,255],{"class":244},[234,14297,14298],{"class":236,"line":321},[234,14299,1143],{"class":244},[234,14301,14302],{"class":236,"line":946},[234,14303,262],{"emptyLinePlaceholder":261},[234,14305,14306,14309],{"class":236,"line":955},[234,14307,14308],{"class":281},".logo",[234,14310,909],{"class":244},[234,14312,14313,14316,14318,14321],{"class":236,"line":11},[234,14314,14315],{"class":271},"  font-weight",[234,14317,1443],{"class":244},[234,14319,14320],{"class":271},"bold",[234,14322,255],{"class":244},[234,14324,14325,14327,14329,14332,14334],{"class":236,"line":980},[234,14326,9886],{"class":271},[234,14328,1443],{"class":244},[234,14330,14331],{"class":271},"1.25",[234,14333,1711],{"class":240},[234,14335,255],{"class":244},[234,14337,14338],{"class":236,"line":994},[234,14339,1143],{"class":244},[234,14341,14342],{"class":236,"line":1000},[234,14343,262],{"emptyLinePlaceholder":261},[234,14345,14346,14349],{"class":236,"line":1005},[234,14347,14348],{"class":281},".magnetic-btn",[234,14350,909],{"class":244},[234,14352,14353,14355,14357,14359,14361,14364,14366],{"class":236,"line":1013},[234,14354,1749],{"class":271},[234,14356,1443],{"class":244},[234,14358,2527],{"class":271},[234,14360,1711],{"class":240},[234,14362,14363],{"class":271}," 1.75",[234,14365,1711],{"class":240},[234,14367,255],{"class":244},[234,14369,14370,14372,14374,14376,14378,14380,14382],{"class":236,"line":1019},[234,14371,1769],{"class":271},[234,14373,1443],{"class":244},[234,14375,1754],{"class":271},[234,14377,1789],{"class":240},[234,14379,6013],{"class":271},[234,14381,6016],{"class":271},[234,14383,255],{"class":244},[234,14385,14386,14388,14390,14392,14394],{"class":236,"line":1025},[234,14387,1781],{"class":271},[234,14389,1443],{"class":244},[234,14391,1786],{"class":271},[234,14393,1789],{"class":240},[234,14395,255],{"class":244},[234,14397,14398,14400,14402,14404],{"class":236,"line":1031},[234,14399,6023],{"class":271},[234,14401,1443],{"class":244},[234,14403,6028],{"class":271},[234,14405,255],{"class":244},[234,14407,14408,14410,14412,14414],{"class":236,"line":1037},[234,14409,11568],{"class":271},[234,14411,1443],{"class":244},[234,14413,9965],{"class":271},[234,14415,255],{"class":244},[234,14417,14418,14420,14422,14424],{"class":236,"line":427},[234,14419,1797],{"class":271},[234,14421,1443],{"class":244},[234,14423,1802],{"class":271},[234,14425,255],{"class":244},[234,14427,14428,14430,14432,14434],{"class":236,"line":1571},[234,14429,1810],{"class":271},[234,14431,1443],{"class":244},[234,14433,12506],{"class":271},[234,14435,7773],{"class":244},[234,14437,14438,14441,14443,14445,14447,14449,14451,14453,14455,14457,14459,14461],{"class":236,"line":1592},[234,14439,14440],{"class":271},"    calc",[234,14442,329],{"class":244},[234,14444,1825],{"class":271},[234,14446,329],{"class":244},[234,14448,13953],{"class":899},[234,14450,1833],{"class":244},[234,14452,1836],{"class":271},[234,14454,903],{"class":244},[234,14456,1841],{"class":240},[234,14458,1844],{"class":271},[234,14460,1789],{"class":240},[234,14462,14463],{"class":244},"),\n",[234,14465,14466,14468,14470,14472,14474,14476,14478,14480,14482,14484,14486,14488],{"class":236,"line":1600},[234,14467,14440],{"class":271},[234,14469,329],{"class":244},[234,14471,1825],{"class":271},[234,14473,329],{"class":244},[234,14475,13954],{"class":899},[234,14477,1833],{"class":244},[234,14479,1836],{"class":271},[234,14481,903],{"class":244},[234,14483,1841],{"class":240},[234,14485,1844],{"class":271},[234,14487,1789],{"class":240},[234,14489,14463],{"class":244},[234,14491,14492],{"class":236,"line":1615},[234,14493,14494],{"class":271},"    0\n",[234,14496,14497],{"class":236,"line":1620},[234,14498,7829],{"class":244},[234,14500,14501],{"class":236,"line":1625},[234,14502,1143],{"class":244},[37,14504,6074],{"id":6073},[225,14506,14508],{"className":227,"code":14507,"language":229,"meta":230,"style":230},"import StringTune, { StringMagnetic } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\nstringTune.use(StringMagnetic);\nstringTune.start(60);\n",[60,14509,14510,14523,14527,14541,14550],{"__ignoreMap":230},[234,14511,14512,14514,14517,14519,14521],{"class":236,"line":237},[234,14513,241],{"class":240},[234,14515,14516],{"class":244}," StringTune, { StringMagnetic } ",[234,14518,248],{"class":240},[234,14520,252],{"class":251},[234,14522,255],{"class":244},[234,14524,14525],{"class":236,"line":258},[234,14526,262],{"emptyLinePlaceholder":261},[234,14528,14529,14531,14533,14535,14537,14539],{"class":236,"line":265},[234,14530,268],{"class":240},[234,14532,272],{"class":271},[234,14534,275],{"class":240},[234,14536,278],{"class":244},[234,14538,282],{"class":281},[234,14540,285],{"class":244},[234,14542,14543,14545,14547],{"class":236,"line":288},[234,14544,296],{"class":244},[234,14546,299],{"class":281},[234,14548,14549],{"class":244},"(StringMagnetic);\n",[234,14551,14552,14554,14556,14558,14560],{"class":236,"line":293},[234,14553,296],{"class":244},[234,14555,326],{"class":281},[234,14557,329],{"class":244},[234,14559,332],{"class":271},[234,14561,335],{"class":244},[30,14563,14564,14566,14567,14569],{},[60,14565,195],{}," is not required for ",[60,14568,5266],{},". The module uses the shared pointer data already tracked by StringTune.",[37,14571,6133],{"id":6132},[42,14573,14574,14582,14592],{},[45,14575,14576,14578,14579,14581],{},[60,14577,5266],{}," uses a fixed internal smoothing factor of ",[60,14580,10452],{},". There is no public attribute for changing that in the current build.",[45,14583,14584,14585,137,14588,14591],{},"The module registers CSS properties for ",[60,14586,14587],{},"--magnetic-target-x",[60,14589,14590],{},"--magnetic-target-y",", but the current runtime does not write those values. They should not be documented as public output.",[45,14593,14594,14595,14597],{},"The module does not mutate the element ",[60,14596,4642],{}," property for you. Always consume the variables in your own CSS.",[410,14599,7062],{},{"title":230,"searchDepth":258,"depth":258,"links":14601},[14602,14608,14609,14610],{"id":5406,"depth":258,"text":5407,"children":14603},[14604,14605,14606,14607],{"id":4904,"depth":265,"text":4905},{"id":5557,"depth":265,"text":5558},{"id":3814,"depth":265,"text":5593},{"id":5666,"depth":265,"text":5667},{"id":5688,"depth":258,"text":5689},{"id":6073,"depth":258,"text":6074},{"id":6132,"depth":258,"text":6133},{"path":5271,"title":5272,"description":14612,"kind":5369,"section":5187,"order":14613,"group":5253,"parentPath":-1,"status":8027,"integration":2706,"publicExport":261,"activation":14614,"package":5371,"aliases":14615,"attrs":14617,"events":14618,"cssVars":14622,"related":14626,"body":14627},"Applies cursor-reactive tilt and spring-like movement to interactive elements.",130,"string=\"impulse\"",[14616,5272],"impulse",[],[14619,14620,14621],"object:impulse:\u003Cid>:move","object:impulse:\u003Cid>:rotate","object:impulse:\u003Cid>:side",[14623,14624,14625],"--push-x","--push-y","--push-rotation",[5260,5265,5277],{"type":22,"value":14628,"toc":15810},[14629,14632,14640,14642,14644,14648,14768,14772,14909,14913,14966,14968,14970,14984,14987,15000,15002,15063,15065,15070,15072,15254,15718,15720,15777,15784,15786,15808],[25,14630,5272],{"id":14631},"stringimpulse",[30,14633,14634,14636,14637,14639],{},[60,14635,5272],{}," turns cursor velocity into a spring simulation. It writes position and rotation values to CSS variables, while you stay in control of the final ",[60,14638,4642],{}," in your own styles.",[37,14641,5407],{"id":5406},[174,14643,4905],{"id":4904},[2068,14645,14647],{"id":14646},"position-spring","Position spring",[2221,14649,14650,14662],{},[2224,14651,14652],{},[2227,14653,14654,14656,14658,14660],{},[2230,14655,4914],{},[2230,14657,4917],{},[2230,14659,4920],{},[2230,14661,5424],{},[2240,14663,14664,14680,14697,14714,14731,14752],{},[2227,14665,14666,14671,14673,14677],{},[2245,14667,14668],{},[60,14669,14670],{},"string-position-strength",[2245,14672,5621],{},[2245,14674,14675],{},[60,14676,9609],{},[2245,14678,14679],{},"Scales how much cursor velocity is injected into translation.",[2227,14681,14682,14687,14689,14694],{},[2245,14683,14684],{},[60,14685,14686],{},"string-position-tension",[2245,14688,5621],{},[2245,14690,14691],{},[60,14692,14693],{},"0.05",[2245,14695,14696],{},"Pull-back force toward the resting position.",[2227,14698,14699,14704,14706,14711],{},[2245,14700,14701],{},[60,14702,14703],{},"string-position-friction",[2245,14705,5621],{},[2245,14707,14708],{},[60,14709,14710],{},"0.15",[2245,14712,14713],{},"Per-frame damping for translation velocity.",[2227,14715,14716,14721,14723,14728],{},[2245,14717,14718],{},[60,14719,14720],{},"string-position-max-velocity",[2245,14722,5621],{},[2245,14724,14725],{},[60,14726,14727],{},"10",[2245,14729,14730],{},"Translation velocity clamp.",[2227,14732,14733,14738,14740,14744],{},[2245,14734,14735],{},[60,14736,14737],{},"string-position-update-threshold",[2245,14739,5621],{},[2245,14741,14742],{},[60,14743,10452],{},[2245,14745,14746,14747,137,14749,14751],{},"Minimal visible delta before ",[60,14748,14623],{},[60,14750,14624],{}," are rewritten.",[2227,14753,14754,14759,14761,14765],{},[2245,14755,14756],{},[60,14757,14758],{},"string-max-offset",[2245,14760,5621],{},[2245,14762,14763],{},[60,14764,9719],{},[2245,14766,14767],{},"Maximum translation offset in either direction.",[2068,14769,14771],{"id":14770},"rotation-spring","Rotation spring",[2221,14773,14774,14786],{},[2224,14775,14776],{},[2227,14777,14778,14780,14782,14784],{},[2230,14779,4914],{},[2230,14781,4917],{},[2230,14783,4920],{},[2230,14785,5424],{},[2240,14787,14788,14804,14824,14841,14858,14875,14893],{},[2227,14789,14790,14795,14797,14801],{},[2245,14791,14792],{},[60,14793,14794],{},"string-rotation-strength",[2245,14796,5621],{},[2245,14798,14799],{},[60,14800,2527],{},[2245,14802,14803],{},"Scales torque generated from cursor movement around the object.",[2227,14805,14806,14811,14813,14818],{},[2245,14807,14808],{},[60,14809,14810],{},"string-rotation-tension",[2245,14812,5621],{},[2245,14814,14815],{},[60,14816,14817],{},"0.06",[2245,14819,14820,14821,106],{},"Pull-back force toward ",[60,14822,14823],{},"0deg",[2227,14825,14826,14831,14833,14838],{},[2245,14827,14828],{},[60,14829,14830],{},"string-rotation-friction",[2245,14832,5621],{},[2245,14834,14835],{},[60,14836,14837],{},"0.18",[2245,14839,14840],{},"Per-frame damping for angular velocity.",[2227,14842,14843,14848,14850,14855],{},[2245,14844,14845],{},[60,14846,14847],{},"string-rotation-max-angular-velocity",[2245,14849,5621],{},[2245,14851,14852],{},[60,14853,14854],{},"6",[2245,14856,14857],{},"Angular velocity clamp.",[2227,14859,14860,14865,14867,14872],{},[2245,14861,14862],{},[60,14863,14864],{},"string-rotation-max-angle",[2245,14866,5621],{},[2245,14868,14869],{},[60,14870,14871],{},"18",[2245,14873,14874],{},"Maximum visible rotation in degrees.",[2227,14876,14877,14882,14884,14888],{},[2245,14878,14879],{},[60,14880,14881],{},"string-rotation-update-threshold",[2245,14883,5621],{},[2245,14885,14886],{},[60,14887,14710],{},[2245,14889,14746,14890,14892],{},[60,14891,14625],{}," is rewritten.",[2227,14894,14895,14900,14902,14906],{},[2245,14896,14897],{},[60,14898,14899],{},"string-rotation-origin",[2245,14901,2252],{},[2245,14903,14904],{},[60,14905,9060],{},[2245,14907,14908],{},"Changes the torque pivot used by the simulation.",[2068,14910,14912],{"id":14911},"shared-control","Shared control",[2221,14914,14915,14927],{},[2224,14916,14917],{},[2227,14918,14919,14921,14923,14925],{},[2230,14920,4914],{},[2230,14922,4917],{},[2230,14924,4920],{},[2230,14926,5424],{},[2240,14928,14929,14946],{},[2227,14930,14931,14936,14938,14943],{},[2245,14932,14933],{},[60,14934,14935],{},"string-sleep-epsilon",[2245,14937,5621],{},[2245,14939,14940],{},[60,14941,14942],{},"0.01",[2245,14944,14945],{},"Snaps the simulation back to rest once motion becomes tiny enough.",[2227,14947,14948,14953,14956,14960],{},[2245,14949,14950],{},[60,14951,14952],{},"string-continuous-push",[2245,14954,14955],{},"boolean",[2245,14957,14958],{},[60,14959,2629],{},[2245,14961,14962,14963,14965],{},"When ",[60,14964,2715],{},", each hover pass injects only one push until the pointer leaves and re-enters.",[174,14967,5558],{"id":5557},[30,14969,14022],{},[42,14971,14972,14976,14980],{},[45,14973,14974],{},[60,14975,14623],{},[45,14977,14978],{},[60,14979,14624],{},[45,14981,14982],{},[60,14983,14625],{},[30,14985,14986],{},"These are plain numbers. Add units yourself in CSS:",[42,14988,14989,14994],{},[45,14990,14991,14992],{},"translation usually consumes ",[60,14993,12035],{},[45,14995,14996,14997],{},"rotation usually consumes ",[60,14998,14999],{},"* 1deg",[174,15001,5593],{"id":3814},[2221,15003,15004,15014],{},[2224,15005,15006],{},[2227,15007,15008,15010,15012],{},[2230,15009,5602],{},[2230,15011,5605],{},[2230,15013,5608],{},[2240,15015,15016,15029,15043],{},[2227,15017,15018,15022,15026],{},[2245,15019,15020],{},[60,15021,14619],{},[2245,15023,15024],{},[60,15025,12102],{},[2245,15027,15028],{},"Translation output changes past the configured threshold",[2227,15030,15031,15035,15040],{},[2245,15032,15033],{},[60,15034,14620],{},[2245,15036,15037],{},[60,15038,15039],{},"{ rotation }",[2245,15041,15042],{},"Rotation output changes past the configured threshold",[2227,15044,15045,15049,15054],{},[2245,15046,15047],{},[60,15048,14621],{},[2245,15050,15051],{},[60,15052,15053],{},"{ value }",[2245,15055,15056,15057,15059,15060,15062],{},"Pointer moves across the element; ",[60,15058,1836],{}," is left edge and ",[60,15061,1754],{}," is right edge",[174,15064,5667],{"id":5666},[30,15066,15067,15068,106],{},"Mirrors inherit the source element's impulse CSS variables. Events are emitted only by the source object's ",[60,15069,764],{},[37,15071,5689],{"id":5688},[225,15073,15075],{"className":338,"code":15074,"language":340,"meta":230,"style":230},"\u003Cdiv class=\"news-grid\">\n  \u003Carticle \n    class=\"news-card\"\n    string=\"impulse\"\n    string-id=\"breaking-news\"\n    string-position-strength=\"2.0\"\n    string-rotation-strength=\"1.5\"\n    string-max-offset=\"80\"\n  >\n    \u003Cdiv class=\"news-content\">\n      \u003Cspan class=\"news-date\">March 21, 2026\u003C/span>\n      \u003Ch2 class=\"news-title\">Design Engineering at Scale\u003C/h2>\n      \u003Cp>How modular effects pipelines transform the modern web.\u003C/p>\n    \u003C/div>\n  \u003C/article>\n\u003C/div>\n",[60,15076,15077,15092,15101,15110,15119,15128,15138,15148,15158,15162,15177,15197,15217,15230,15238,15246],{"__ignoreMap":230},[234,15078,15079,15081,15083,15085,15087,15090],{"class":236,"line":237},[234,15080,347],{"class":244},[234,15082,351],{"class":350},[234,15084,1297],{"class":281},[234,15086,357],{"class":244},[234,15088,15089],{"class":251},"\"news-grid\"",[234,15091,376],{"class":244},[234,15093,15094,15096,15098],{"class":236,"line":258},[234,15095,1292],{"class":244},[234,15097,12395],{"class":350},[234,15099,15100],{"class":244}," \n",[234,15102,15103,15105,15107],{"class":236,"line":265},[234,15104,14174],{"class":281},[234,15106,357],{"class":244},[234,15108,15109],{"class":251},"\"news-card\"\n",[234,15111,15112,15114,15116],{"class":236,"line":288},[234,15113,14134],{"class":281},[234,15115,357],{"class":244},[234,15117,15118],{"class":251},"\"impulse\"\n",[234,15120,15121,15123,15125],{"class":236,"line":293},[234,15122,14144],{"class":281},[234,15124,357],{"class":244},[234,15126,15127],{"class":251},"\"breaking-news\"\n",[234,15129,15130,15133,15135],{"class":236,"line":305},[234,15131,15132],{"class":281},"    string-position-strength",[234,15134,357],{"class":244},[234,15136,15137],{"class":251},"\"2.0\"\n",[234,15139,15140,15143,15145],{"class":236,"line":321},[234,15141,15142],{"class":281},"    string-rotation-strength",[234,15144,357],{"class":244},[234,15146,15147],{"class":251},"\"1.5\"\n",[234,15149,15150,15153,15155],{"class":236,"line":946},[234,15151,15152],{"class":281},"    string-max-offset",[234,15154,357],{"class":244},[234,15156,15157],{"class":251},"\"80\"\n",[234,15159,15160],{"class":236,"line":955},[234,15161,14183],{"class":244},[234,15163,15164,15166,15168,15170,15172,15175],{"class":236,"line":11},[234,15165,1321],{"class":244},[234,15167,351],{"class":350},[234,15169,1297],{"class":281},[234,15171,357],{"class":244},[234,15173,15174],{"class":251},"\"news-content\"",[234,15176,376],{"class":244},[234,15178,15179,15181,15183,15185,15187,15190,15193,15195],{"class":236,"line":980},[234,15180,6398],{"class":244},[234,15182,234],{"class":350},[234,15184,1297],{"class":281},[234,15186,357],{"class":244},[234,15188,15189],{"class":251},"\"news-date\"",[234,15191,15192],{"class":244},">March 21, 2026\u003C/",[234,15194,234],{"class":350},[234,15196,376],{"class":244},[234,15198,15199,15201,15203,15205,15207,15210,15213,15215],{"class":236,"line":994},[234,15200,6398],{"class":244},[234,15202,37],{"class":350},[234,15204,1297],{"class":281},[234,15206,357],{"class":244},[234,15208,15209],{"class":251},"\"news-title\"",[234,15211,15212],{"class":244},">Design Engineering at Scale\u003C/",[234,15214,37],{"class":350},[234,15216,376],{"class":244},[234,15218,15219,15221,15223,15226,15228],{"class":236,"line":1000},[234,15220,6398],{"class":244},[234,15222,30],{"class":350},[234,15224,15225],{"class":244},">How modular effects pipelines transform the modern web.\u003C/",[234,15227,30],{"class":350},[234,15229,376],{"class":244},[234,15231,15232,15234,15236],{"class":236,"line":1005},[234,15233,6500],{"class":244},[234,15235,351],{"class":350},[234,15237,376],{"class":244},[234,15239,15240,15242,15244],{"class":236,"line":1013},[234,15241,1393],{"class":244},[234,15243,12395],{"class":350},[234,15245,376],{"class":244},[234,15247,15248,15250,15252],{"class":236,"line":1019},[234,15249,1402],{"class":244},[234,15251,351],{"class":350},[234,15253,376],{"class":244},[225,15255,15257],{"className":5857,"code":15256,"language":5859,"meta":230,"style":230},".news-grid {\n  padding: 4rem;\n  display: flex;\n  justify-content: center;\n}\n\n.news-card {\n  width: 100%;\n  max-width: 400px;\n  border: 1px solid black;\n  padding: 2.5rem;\n  background: white;\n  color: black;\n  cursor: default;\n  transform:\n    translate3d(\n      calc(var(--push-x, 0) * 1px),\n      calc(var(--push-y, 0) * 1px),\n      0\n    )\n    rotate(calc(var(--push-rotation, 0) * 1deg));\n  transform-origin: center center;\n  will-change: transform;\n}\n\n.news-date {\n  font-size: 0.75rem;\n  text-transform: uppercase;\n  letter-spacing: 0.05em;\n  color: #666;\n  display: block;\n  margin-bottom: 1rem;\n}\n\n.news-title {\n  font-size: 1.5rem;\n  font-weight: 700;\n  margin-bottom: 0.5rem;\n  line-height: 1.1;\n}\n\n.news-card p {\n  font-size: 1rem;\n  color: #333;\n}\n",[60,15258,15259,15266,15279,15289,15299,15303,15307,15314,15326,15340,15356,15369,15379,15389,15399,15405,15411,15438,15464,15469,15474,15504,15518,15526,15530,15534,15541,15553,15563,15576,15587,15598,15611,15615,15619,15626,15638,15649,15662,15674,15678,15682,15691,15703,15714],{"__ignoreMap":230},[234,15260,15261,15264],{"class":236,"line":237},[234,15262,15263],{"class":281},".news-grid",[234,15265,909],{"class":244},[234,15267,15268,15270,15272,15275,15277],{"class":236,"line":258},[234,15269,1749],{"class":271},[234,15271,1443],{"class":244},[234,15273,15274],{"class":271},"4",[234,15276,1711],{"class":240},[234,15278,255],{"class":244},[234,15280,15281,15283,15285,15287],{"class":236,"line":265},[234,15282,1677],{"class":271},[234,15284,1443],{"class":244},[234,15286,12585],{"class":271},[234,15288,255],{"class":244},[234,15290,15291,15293,15295,15297],{"class":236,"line":288},[234,15292,12602],{"class":271},[234,15294,1443],{"class":244},[234,15296,1695],{"class":271},[234,15298,255],{"class":244},[234,15300,15301],{"class":236,"line":293},[234,15302,1143],{"class":244},[234,15304,15305],{"class":236,"line":305},[234,15306,262],{"emptyLinePlaceholder":261},[234,15308,15309,15312],{"class":236,"line":321},[234,15310,15311],{"class":281},".news-card",[234,15313,909],{"class":244},[234,15315,15316,15318,15320,15322,15324],{"class":236,"line":946},[234,15317,5977],{"class":271},[234,15319,1443],{"class":244},[234,15321,5883],{"class":271},[234,15323,3403],{"class":240},[234,15325,255],{"class":244},[234,15327,15328,15331,15333,15336,15338],{"class":236,"line":955},[234,15329,15330],{"class":271},"  max-width",[234,15332,1443],{"class":244},[234,15334,15335],{"class":271},"400",[234,15337,1789],{"class":240},[234,15339,255],{"class":244},[234,15341,15342,15344,15346,15348,15350,15352,15354],{"class":236,"line":11},[234,15343,1769],{"class":271},[234,15345,1443],{"class":244},[234,15347,1754],{"class":271},[234,15349,1789],{"class":240},[234,15351,6013],{"class":271},[234,15353,6016],{"class":271},[234,15355,255],{"class":244},[234,15357,15358,15360,15362,15365,15367],{"class":236,"line":980},[234,15359,1749],{"class":271},[234,15361,1443],{"class":244},[234,15363,15364],{"class":271},"2.5",[234,15366,1711],{"class":240},[234,15368,255],{"class":244},[234,15370,15371,15373,15375,15377],{"class":236,"line":994},[234,15372,6023],{"class":271},[234,15374,1443],{"class":244},[234,15376,6028],{"class":271},[234,15378,255],{"class":244},[234,15380,15381,15383,15385,15387],{"class":236,"line":1000},[234,15382,11568],{"class":271},[234,15384,1443],{"class":244},[234,15386,9965],{"class":271},[234,15388,255],{"class":244},[234,15390,15391,15393,15395,15397],{"class":236,"line":1005},[234,15392,1797],{"class":271},[234,15394,1443],{"class":244},[234,15396,4302],{"class":271},[234,15398,255],{"class":244},[234,15400,15401,15403],{"class":236,"line":1013},[234,15402,1810],{"class":271},[234,15404,8353],{"class":244},[234,15406,15407,15409],{"class":236,"line":1019},[234,15408,8358],{"class":271},[234,15410,7773],{"class":244},[234,15412,15413,15416,15418,15420,15422,15424,15426,15428,15430,15432,15434,15436],{"class":236,"line":1025},[234,15414,15415],{"class":271},"      calc",[234,15417,329],{"class":244},[234,15419,1825],{"class":271},[234,15421,329],{"class":244},[234,15423,14623],{"class":899},[234,15425,1833],{"class":244},[234,15427,1836],{"class":271},[234,15429,903],{"class":244},[234,15431,1841],{"class":240},[234,15433,1844],{"class":271},[234,15435,1789],{"class":240},[234,15437,14463],{"class":244},[234,15439,15440,15442,15444,15446,15448,15450,15452,15454,15456,15458,15460,15462],{"class":236,"line":1031},[234,15441,15415],{"class":271},[234,15443,329],{"class":244},[234,15445,1825],{"class":271},[234,15447,329],{"class":244},[234,15449,14624],{"class":899},[234,15451,1833],{"class":244},[234,15453,1836],{"class":271},[234,15455,903],{"class":244},[234,15457,1841],{"class":240},[234,15459,1844],{"class":271},[234,15461,1789],{"class":240},[234,15463,14463],{"class":244},[234,15465,15466],{"class":236,"line":1037},[234,15467,15468],{"class":271},"      0\n",[234,15470,15471],{"class":236,"line":427},[234,15472,15473],{"class":244},"    )\n",[234,15475,15476,15478,15480,15482,15484,15486,15488,15490,15492,15494,15496,15498,15500,15502],{"class":236,"line":1571},[234,15477,8399],{"class":271},[234,15479,329],{"class":244},[234,15481,1820],{"class":271},[234,15483,329],{"class":244},[234,15485,1825],{"class":271},[234,15487,329],{"class":244},[234,15489,14625],{"class":899},[234,15491,1833],{"class":244},[234,15493,1836],{"class":271},[234,15495,903],{"class":244},[234,15497,1841],{"class":240},[234,15499,1844],{"class":271},[234,15501,7781],{"class":240},[234,15503,1875],{"class":244},[234,15505,15506,15509,15511,15513,15516],{"class":236,"line":1592},[234,15507,15508],{"class":271},"  transform-origin",[234,15510,1443],{"class":244},[234,15512,1695],{"class":271},[234,15514,15515],{"class":271}," center",[234,15517,255],{"class":244},[234,15519,15520,15523],{"class":236,"line":1600},[234,15521,15522],{"class":271},"  will-change",[234,15524,15525],{"class":244},": transform;\n",[234,15527,15528],{"class":236,"line":1615},[234,15529,1143],{"class":244},[234,15531,15532],{"class":236,"line":1620},[234,15533,262],{"emptyLinePlaceholder":261},[234,15535,15536,15539],{"class":236,"line":1625},[234,15537,15538],{"class":281},".news-date",[234,15540,909],{"class":244},[234,15542,15543,15545,15547,15549,15551],{"class":236,"line":1634},[234,15544,9886],{"class":271},[234,15546,1443],{"class":244},[234,15548,2527],{"class":271},[234,15550,1711],{"class":240},[234,15552,255],{"class":244},[234,15554,15555,15557,15559,15561],{"class":236,"line":1639},[234,15556,9899],{"class":271},[234,15558,1443],{"class":244},[234,15560,9904],{"class":271},[234,15562,255],{"class":244},[234,15564,15565,15568,15570,15572,15574],{"class":236,"line":1651},[234,15566,15567],{"class":271},"  letter-spacing",[234,15569,1443],{"class":244},[234,15571,14693],{"class":271},[234,15573,3714],{"class":240},[234,15575,255],{"class":244},[234,15577,15578,15580,15582,15585],{"class":236,"line":609},[234,15579,11568],{"class":271},[234,15581,1443],{"class":244},[234,15583,15584],{"class":271},"#666",[234,15586,255],{"class":244},[234,15588,15589,15591,15593,15596],{"class":236,"line":1674},[234,15590,1677],{"class":271},[234,15592,1443],{"class":244},[234,15594,15595],{"class":271},"block",[234,15597,255],{"class":244},[234,15599,15600,15603,15605,15607,15609],{"class":236,"line":1687},[234,15601,15602],{"class":271},"  margin-bottom",[234,15604,1443],{"class":244},[234,15606,1754],{"class":271},[234,15608,1711],{"class":240},[234,15610,255],{"class":244},[234,15612,15613],{"class":236,"line":1700},[234,15614,1143],{"class":244},[234,15616,15617],{"class":236,"line":1716},[234,15618,262],{"emptyLinePlaceholder":261},[234,15620,15621,15624],{"class":236,"line":1721},[234,15622,15623],{"class":281},".news-title",[234,15625,909],{"class":244},[234,15627,15628,15630,15632,15634,15636],{"class":236,"line":1726},[234,15629,9886],{"class":271},[234,15631,1443],{"class":244},[234,15633,1708],{"class":271},[234,15635,1711],{"class":240},[234,15637,255],{"class":244},[234,15639,15640,15642,15644,15647],{"class":236,"line":1734},[234,15641,14315],{"class":271},[234,15643,1443],{"class":244},[234,15645,15646],{"class":271},"700",[234,15648,255],{"class":244},[234,15650,15651,15653,15655,15658,15660],{"class":236,"line":1746},[234,15652,15602],{"class":271},[234,15654,1443],{"class":244},[234,15656,15657],{"class":271},"0.5",[234,15659,1711],{"class":240},[234,15661,255],{"class":244},[234,15663,15664,15667,15669,15672],{"class":236,"line":1766},[234,15665,15666],{"class":271},"  line-height",[234,15668,1443],{"class":244},[234,15670,15671],{"class":271},"1.1",[234,15673,255],{"class":244},[234,15675,15676],{"class":236,"line":819},[234,15677,1143],{"class":244},[234,15679,15680],{"class":236,"line":1794},[234,15681,262],{"emptyLinePlaceholder":261},[234,15683,15684,15686,15689],{"class":236,"line":1807},[234,15685,15311],{"class":281},[234,15687,15688],{"class":350}," p",[234,15690,909],{"class":244},[234,15692,15693,15695,15697,15699,15701],{"class":236,"line":1878},[234,15694,9886],{"class":271},[234,15696,1443],{"class":244},[234,15698,1754],{"class":271},[234,15700,1711],{"class":240},[234,15702,255],{"class":244},[234,15704,15705,15707,15709,15712],{"class":236,"line":1883},[234,15706,11568],{"class":271},[234,15708,1443],{"class":244},[234,15710,15711],{"class":271},"#333",[234,15713,255],{"class":244},[234,15715,15716],{"class":236,"line":9991},[234,15717,1143],{"class":244},[37,15719,6074],{"id":6073},[225,15721,15723],{"className":227,"code":15722,"language":229,"meta":230,"style":230},"import StringTune, { StringImpulse } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\nstringTune.use(StringImpulse);\nstringTune.start(60);\n",[60,15724,15725,15738,15742,15756,15765],{"__ignoreMap":230},[234,15726,15727,15729,15732,15734,15736],{"class":236,"line":237},[234,15728,241],{"class":240},[234,15730,15731],{"class":244}," StringTune, { StringImpulse } ",[234,15733,248],{"class":240},[234,15735,252],{"class":251},[234,15737,255],{"class":244},[234,15739,15740],{"class":236,"line":258},[234,15741,262],{"emptyLinePlaceholder":261},[234,15743,15744,15746,15748,15750,15752,15754],{"class":236,"line":265},[234,15745,268],{"class":240},[234,15747,272],{"class":271},[234,15749,275],{"class":240},[234,15751,278],{"class":244},[234,15753,282],{"class":281},[234,15755,285],{"class":244},[234,15757,15758,15760,15762],{"class":236,"line":288},[234,15759,296],{"class":244},[234,15761,299],{"class":281},[234,15763,15764],{"class":244},"(StringImpulse);\n",[234,15766,15767,15769,15771,15773,15775],{"class":236,"line":293},[234,15768,296],{"class":244},[234,15770,326],{"class":281},[234,15772,329],{"class":244},[234,15774,332],{"class":271},[234,15776,335],{"class":244},[30,15778,15779,14566,15781,15783],{},[60,15780,195],{},[60,15782,5272],{},". The module reads shared pointer velocity from StringTune itself.",[37,15785,6133],{"id":6132},[42,15787,15788,15796,15805],{},[45,15789,15790,15792,15793,15795],{},[60,15791,5272],{}," never writes a ",[60,15794,4642],{}," style directly. The transform stays fully user-owned.",[45,15797,15798,15799,15801,15802,15804],{},"If you change ",[60,15800,14899],{},", keep your CSS ",[60,15803,9021],{}," in sync with the same point. Otherwise the visible rotation pivot and the simulated torque pivot will not match.",[45,15806,15807],{},"The module only injects pushes while the pointer is physically inside the element bounds.",[410,15809,7062],{},{"title":230,"searchDepth":258,"depth":258,"links":15811},[15812,15818,15819,15820],{"id":5406,"depth":258,"text":5407,"children":15813},[15814,15815,15816,15817],{"id":4904,"depth":265,"text":4905},{"id":5557,"depth":265,"text":5558},{"id":3814,"depth":265,"text":5593},{"id":5666,"depth":265,"text":5667},{"id":5688,"depth":258,"text":5689},{"id":6073,"depth":258,"text":6074},{"id":6132,"depth":258,"text":6133},{"path":5277,"title":5278,"description":15822,"kind":5369,"section":5187,"order":15823,"group":5253,"parentPath":-1,"status":8027,"integration":2706,"publicExport":261,"activation":15824,"package":5371,"aliases":15825,"attrs":15827,"events":15832,"cssVars":15833,"related":15836,"body":15837},"Writes cursor-derived spotlight angle and distance variables for lighting effects.",140,"string=\"spotlight\"",[15826,5278],"spotlight",[10445,15828,15829,15830,15831],"string-angle-threshold","string-distance-threshold","string-deadzone","string-dist-max",[],[15834,15835],"--spotlight-angle","--spotlight-distance",[5260,5271,8037],{"type":22,"value":15838,"toc":16800},[15839,15842,15847,15849,15851,15946,15948,15950,15960,15963,15975,15977,16006,16008,16011,16013,16147,16712,16714,16771,16777,16779,16798],[25,15840,5278],{"id":15841},"stringspotlight",[30,15843,15844,15846],{},[60,15845,5278],{}," computes the pointer direction and distance relative to each target element and writes the result to two CSS variables. The module does not render a light effect on its own. You provide the visual treatment in CSS.",[37,15848,5407],{"id":5406},[174,15850,4905],{"id":4904},[2221,15852,15853,15865],{},[2224,15854,15855],{},[2227,15856,15857,15859,15861,15863],{},[2230,15858,4914],{},[2230,15860,4917],{},[2230,15862,4920],{},[2230,15864,5424],{},[2240,15866,15867,15883,15898,15913,15928],{},[2227,15868,15869,15873,15875,15880],{},[2245,15870,15871],{},[60,15872,10445],{},[2245,15874,5621],{},[2245,15876,15877,15878],{},"inherited ",[60,15879,8030],{},[2245,15881,15882],{},"Smooths how quickly spotlight direction and distance catch up to the pointer.",[2227,15884,15885,15889,15891,15895],{},[2245,15886,15887],{},[60,15888,15828],{},[2245,15890,5621],{},[2245,15892,15893],{},[60,15894,7131],{},[2245,15896,15897],{},"Minimal change before the angle output is rewritten and re-emitted.",[2227,15899,15900,15904,15906,15910],{},[2245,15901,15902],{},[60,15903,15829],{},[2245,15905,5621],{},[2245,15907,15908],{},[60,15909,15657],{},[2245,15911,15912],{},"Minimal change before the distance output is rewritten and re-emitted.",[2227,15914,15915,15919,15921,15925],{},[2245,15916,15917],{},[60,15918,15830],{},[2245,15920,5621],{},[2245,15922,15923],{},[60,15924,15274],{},[2245,15926,15927],{},"Small radius around the element center where angle changes are ignored unless a forced update happens.",[2227,15929,15930,15934,15936,15940],{},[2245,15931,15932],{},[60,15933,15831],{},[2245,15935,5621],{},[2245,15937,15938],{},[60,15939,1836],{},[2245,15941,15942,15943,15945],{},"Optional clamp for spotlight distance. ",[60,15944,1836],{}," means no clamp.",[174,15947,5558],{"id":5557},[30,15949,14022],{},[42,15951,15952,15956],{},[45,15953,15954],{},[60,15955,15834],{},[45,15957,15958],{},[60,15959,15835],{},[30,15961,15962],{},"Both are plain numbers:",[42,15964,15965,15970],{},[45,15966,15967,15969],{},[60,15968,15834],{}," is degrees",[45,15971,15972,15974],{},[60,15973,15835],{}," is distance in pixels, but still emitted as a unitless number",[174,15976,5593],{"id":3814},[2221,15978,15979,15989],{},[2224,15980,15981],{},[2227,15982,15983,15985,15987],{},[2230,15984,5602],{},[2230,15986,5605],{},[2230,15988,5608],{},[2240,15990,15991],{},[2227,15992,15993,15998,16003],{},[2245,15994,15995],{},[60,15996,15997],{},"spotlight:update:\u003Cid>",[2245,15999,16000],{},[60,16001,16002],{},"{ angleDeg, distance }",[2245,16004,16005],{},"Either spotlight output changes past the configured thresholds",[174,16007,5667],{"id":5666},[30,16009,16010],{},"Mirrors inherit the source element's spotlight variables. Events are emitted only for the source object ID.",[37,16012,5689],{"id":5688},[225,16014,16016],{"className":338,"code":16015,"language":340,"meta":230,"style":230},"\u003Cdiv class=\"features-grid\">\n  \u003Cdiv \n    class=\"premium-card\"\n    string=\"spotlight\"\n    string-id=\"pro-plan\"\n    string-lerp=\"0.15\"\n  >\n    \u003Cdiv class=\"premium-card-inner\">\n      \u003Ch3>Pro Tier\u003C/h3>\n      \u003Cp>Advanced modules and physics constraints for heavy data layers.\u003C/p>\n    \u003C/div>\n  \u003C/div>\n\u003C/div>\n",[60,16017,16018,16033,16041,16050,16059,16068,16078,16082,16097,16110,16123,16131,16139],{"__ignoreMap":230},[234,16019,16020,16022,16024,16026,16028,16031],{"class":236,"line":237},[234,16021,347],{"class":244},[234,16023,351],{"class":350},[234,16025,1297],{"class":281},[234,16027,357],{"class":244},[234,16029,16030],{"class":251},"\"features-grid\"",[234,16032,376],{"class":244},[234,16034,16035,16037,16039],{"class":236,"line":258},[234,16036,1292],{"class":244},[234,16038,351],{"class":350},[234,16040,15100],{"class":244},[234,16042,16043,16045,16047],{"class":236,"line":265},[234,16044,14174],{"class":281},[234,16046,357],{"class":244},[234,16048,16049],{"class":251},"\"premium-card\"\n",[234,16051,16052,16054,16056],{"class":236,"line":288},[234,16053,14134],{"class":281},[234,16055,357],{"class":244},[234,16057,16058],{"class":251},"\"spotlight\"\n",[234,16060,16061,16063,16065],{"class":236,"line":293},[234,16062,14144],{"class":281},[234,16064,357],{"class":244},[234,16066,16067],{"class":251},"\"pro-plan\"\n",[234,16069,16070,16073,16075],{"class":236,"line":305},[234,16071,16072],{"class":281},"    string-lerp",[234,16074,357],{"class":244},[234,16076,16077],{"class":251},"\"0.15\"\n",[234,16079,16080],{"class":236,"line":321},[234,16081,14183],{"class":244},[234,16083,16084,16086,16088,16090,16092,16095],{"class":236,"line":946},[234,16085,1321],{"class":244},[234,16087,351],{"class":350},[234,16089,1297],{"class":281},[234,16091,357],{"class":244},[234,16093,16094],{"class":251},"\"premium-card-inner\"",[234,16096,376],{"class":244},[234,16098,16099,16101,16103,16106,16108],{"class":236,"line":955},[234,16100,6398],{"class":244},[234,16102,174],{"class":350},[234,16104,16105],{"class":244},">Pro Tier\u003C/",[234,16107,174],{"class":350},[234,16109,376],{"class":244},[234,16111,16112,16114,16116,16119,16121],{"class":236,"line":11},[234,16113,6398],{"class":244},[234,16115,30],{"class":350},[234,16117,16118],{"class":244},">Advanced modules and physics constraints for heavy data layers.\u003C/",[234,16120,30],{"class":350},[234,16122,376],{"class":244},[234,16124,16125,16127,16129],{"class":236,"line":980},[234,16126,6500],{"class":244},[234,16128,351],{"class":350},[234,16130,376],{"class":244},[234,16132,16133,16135,16137],{"class":236,"line":994},[234,16134,1393],{"class":244},[234,16136,351],{"class":350},[234,16138,376],{"class":244},[234,16140,16141,16143,16145],{"class":236,"line":1000},[234,16142,1402],{"class":244},[234,16144,351],{"class":350},[234,16146,376],{"class":244},[225,16148,16150],{"className":5857,"code":16149,"language":5859,"meta":230,"style":230},".features-grid {\n  display: flex;\n  justify-content: center;\n  padding: 4rem;\n}\n\n.premium-card {\n  position: relative;\n  background: black;\n  border: 1px solid #333;\n  border-radius: 12px;\n  overflow: hidden;\n  width: 100%;\n  max-width: 320px;\n}\n\n.premium-card::before {\n  content: \"\";\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  width: 400px;\n  height: 400px;\n  border-radius: 50%;\n  background: radial-gradient(circle, rgba(255,255,255,0.15), transparent 68%);\n  transform: \n    translate(-50%, -50%) \n    rotate(calc((var(--spotlight-angle, 0) + 90) * 1deg)) \n    translateY(calc(var(--spotlight-distance, 0) * -1px));\n  pointer-events: none;\n  z-index: 0;\n}\n\n.premium-card-inner {\n  position: relative;\n  z-index: 1;\n  color: white;\n  padding: 2.5rem 2rem;\n  height: 100%;\n}\n\n.premium-card-inner h3 {\n  font-size: 1.5rem;\n  font-weight: bold;\n  margin-bottom: 0.5rem;\n}\n\n.premium-card-inner p {\n  color: #999;\n  line-height: 1.5;\n}\n",[60,16151,16152,16159,16169,16179,16191,16195,16199,16206,16216,16226,16243,16255,16265,16277,16290,16294,16298,16305,16316,16326,16338,16350,16362,16374,16386,16434,16441,16461,16499,16527,16537,16547,16551,16555,16562,16572,16582,16592,16608,16620,16624,16628,16637,16649,16659,16671,16675,16679,16687,16698,16708],{"__ignoreMap":230},[234,16153,16154,16157],{"class":236,"line":237},[234,16155,16156],{"class":281},".features-grid",[234,16158,909],{"class":244},[234,16160,16161,16163,16165,16167],{"class":236,"line":258},[234,16162,1677],{"class":271},[234,16164,1443],{"class":244},[234,16166,12585],{"class":271},[234,16168,255],{"class":244},[234,16170,16171,16173,16175,16177],{"class":236,"line":265},[234,16172,12602],{"class":271},[234,16174,1443],{"class":244},[234,16176,1695],{"class":271},[234,16178,255],{"class":244},[234,16180,16181,16183,16185,16187,16189],{"class":236,"line":288},[234,16182,1749],{"class":271},[234,16184,1443],{"class":244},[234,16186,15274],{"class":271},[234,16188,1711],{"class":240},[234,16190,255],{"class":244},[234,16192,16193],{"class":236,"line":293},[234,16194,1143],{"class":244},[234,16196,16197],{"class":236,"line":305},[234,16198,262],{"emptyLinePlaceholder":261},[234,16200,16201,16204],{"class":236,"line":321},[234,16202,16203],{"class":281},".premium-card",[234,16205,909],{"class":244},[234,16207,16208,16210,16212,16214],{"class":236,"line":946},[234,16209,7598],{"class":271},[234,16211,1443],{"class":244},[234,16213,7603],{"class":271},[234,16215,255],{"class":244},[234,16217,16218,16220,16222,16224],{"class":236,"line":955},[234,16219,6023],{"class":271},[234,16221,1443],{"class":244},[234,16223,9965],{"class":271},[234,16225,255],{"class":244},[234,16227,16228,16230,16232,16234,16236,16238,16241],{"class":236,"line":11},[234,16229,1769],{"class":271},[234,16231,1443],{"class":244},[234,16233,1754],{"class":271},[234,16235,1789],{"class":240},[234,16237,6013],{"class":271},[234,16239,16240],{"class":271}," #333",[234,16242,255],{"class":244},[234,16244,16245,16247,16249,16251,16253],{"class":236,"line":980},[234,16246,1781],{"class":271},[234,16248,1443],{"class":244},[234,16250,8276],{"class":271},[234,16252,1789],{"class":240},[234,16254,255],{"class":244},[234,16256,16257,16259,16261,16263],{"class":236,"line":994},[234,16258,7610],{"class":271},[234,16260,1443],{"class":244},[234,16262,7615],{"class":271},[234,16264,255],{"class":244},[234,16266,16267,16269,16271,16273,16275],{"class":236,"line":1000},[234,16268,5977],{"class":271},[234,16270,1443],{"class":244},[234,16272,5883],{"class":271},[234,16274,3403],{"class":240},[234,16276,255],{"class":244},[234,16278,16279,16281,16283,16286,16288],{"class":236,"line":1005},[234,16280,15330],{"class":271},[234,16282,1443],{"class":244},[234,16284,16285],{"class":271},"320",[234,16287,1789],{"class":240},[234,16289,255],{"class":244},[234,16291,16292],{"class":236,"line":1013},[234,16293,1143],{"class":244},[234,16295,16296],{"class":236,"line":1019},[234,16297,262],{"emptyLinePlaceholder":261},[234,16299,16300,16303],{"class":236,"line":1025},[234,16301,16302],{"class":281},".premium-card::before",[234,16304,909],{"class":244},[234,16306,16307,16310,16312,16314],{"class":236,"line":1031},[234,16308,16309],{"class":271},"  content",[234,16311,1443],{"class":244},[234,16313,6246],{"class":251},[234,16315,255],{"class":244},[234,16317,16318,16320,16322,16324],{"class":236,"line":1037},[234,16319,7598],{"class":271},[234,16321,1443],{"class":244},[234,16323,7675],{"class":271},[234,16325,255],{"class":244},[234,16327,16328,16330,16332,16334,16336],{"class":236,"line":427},[234,16329,10002],{"class":271},[234,16331,1443],{"class":244},[234,16333,10051],{"class":271},[234,16335,3403],{"class":240},[234,16337,255],{"class":244},[234,16339,16340,16342,16344,16346,16348],{"class":236,"line":1571},[234,16341,10016],{"class":271},[234,16343,1443],{"class":244},[234,16345,10051],{"class":271},[234,16347,3403],{"class":240},[234,16349,255],{"class":244},[234,16351,16352,16354,16356,16358,16360],{"class":236,"line":1592},[234,16353,5977],{"class":271},[234,16355,1443],{"class":244},[234,16357,15335],{"class":271},[234,16359,1789],{"class":240},[234,16361,255],{"class":244},[234,16363,16364,16366,16368,16370,16372],{"class":236,"line":1600},[234,16365,5991],{"class":271},[234,16367,1443],{"class":244},[234,16369,15335],{"class":271},[234,16371,1789],{"class":240},[234,16373,255],{"class":244},[234,16375,16376,16378,16380,16382,16384],{"class":236,"line":1615},[234,16377,1781],{"class":271},[234,16379,1443],{"class":244},[234,16381,10051],{"class":271},[234,16383,3403],{"class":240},[234,16385,255],{"class":244},[234,16387,16388,16390,16392,16395,16397,16400,16402,16405,16407,16410,16412,16414,16416,16418,16420,16422,16424,16427,16430,16432],{"class":236,"line":1620},[234,16389,6023],{"class":271},[234,16391,1443],{"class":244},[234,16393,16394],{"class":271},"radial-gradient",[234,16396,329],{"class":244},[234,16398,16399],{"class":271},"circle",[234,16401,1833],{"class":244},[234,16403,16404],{"class":271},"rgba",[234,16406,329],{"class":244},[234,16408,16409],{"class":271},"255",[234,16411,13245],{"class":244},[234,16413,16409],{"class":271},[234,16415,13245],{"class":244},[234,16417,16409],{"class":271},[234,16419,13245],{"class":244},[234,16421,14710],{"class":271},[234,16423,1849],{"class":244},[234,16425,16426],{"class":271},"transparent",[234,16428,16429],{"class":271}," 68",[234,16431,3403],{"class":240},[234,16433,335],{"class":244},[234,16435,16436,16438],{"class":236,"line":1625},[234,16437,1810],{"class":271},[234,16439,16440],{"class":244},": \n",[234,16442,16443,16446,16448,16450,16452,16454,16456,16458],{"class":236,"line":1634},[234,16444,16445],{"class":271},"    translate",[234,16447,329],{"class":244},[234,16449,10082],{"class":271},[234,16451,3403],{"class":240},[234,16453,1833],{"class":244},[234,16455,10082],{"class":271},[234,16457,3403],{"class":240},[234,16459,16460],{"class":244},") \n",[234,16462,16463,16465,16467,16469,16471,16473,16475,16477,16479,16481,16483,16486,16489,16492,16494,16496],{"class":236,"line":1639},[234,16464,8399],{"class":271},[234,16466,329],{"class":244},[234,16468,1820],{"class":271},[234,16470,896],{"class":244},[234,16472,1825],{"class":271},[234,16474,329],{"class":244},[234,16476,15834],{"class":899},[234,16478,1833],{"class":244},[234,16480,1836],{"class":271},[234,16482,903],{"class":244},[234,16484,16485],{"class":240},"+",[234,16487,16488],{"class":271}," 90",[234,16490,16491],{"class":244},") * ",[234,16493,1754],{"class":271},[234,16495,7781],{"class":240},[234,16497,16498],{"class":244},")) \n",[234,16500,16501,16504,16506,16508,16510,16512,16514,16516,16519,16521,16523,16525],{"class":236,"line":1651},[234,16502,16503],{"class":271},"    translateY",[234,16505,329],{"class":244},[234,16507,1820],{"class":271},[234,16509,329],{"class":244},[234,16511,1825],{"class":271},[234,16513,329],{"class":244},[234,16515,15835],{"class":899},[234,16517,16518],{"class":244},", 0) * ",[234,16520,2647],{"class":271},[234,16522,1754],{"class":244},[234,16524,1789],{"class":271},[234,16526,1875],{"class":244},[234,16528,16529,16531,16533,16535],{"class":236,"line":609},[234,16530,12491],{"class":271},[234,16532,1443],{"class":244},[234,16534,1774],{"class":271},[234,16536,255],{"class":244},[234,16538,16539,16541,16543,16545],{"class":236,"line":1674},[234,16540,7859],{"class":271},[234,16542,1443],{"class":244},[234,16544,1836],{"class":271},[234,16546,255],{"class":244},[234,16548,16549],{"class":236,"line":1687},[234,16550,1143],{"class":244},[234,16552,16553],{"class":236,"line":1700},[234,16554,262],{"emptyLinePlaceholder":261},[234,16556,16557,16560],{"class":236,"line":1716},[234,16558,16559],{"class":281},".premium-card-inner",[234,16561,909],{"class":244},[234,16563,16564,16566,16568,16570],{"class":236,"line":1721},[234,16565,7598],{"class":271},[234,16567,1443],{"class":244},[234,16569,7603],{"class":271},[234,16571,255],{"class":244},[234,16573,16574,16576,16578,16580],{"class":236,"line":1726},[234,16575,7859],{"class":271},[234,16577,1443],{"class":244},[234,16579,1754],{"class":271},[234,16581,255],{"class":244},[234,16583,16584,16586,16588,16590],{"class":236,"line":1734},[234,16585,11568],{"class":271},[234,16587,1443],{"class":244},[234,16589,6028],{"class":271},[234,16591,255],{"class":244},[234,16593,16594,16596,16598,16600,16602,16604,16606],{"class":236,"line":1746},[234,16595,1749],{"class":271},[234,16597,1443],{"class":244},[234,16599,15364],{"class":271},[234,16601,1711],{"class":240},[234,16603,14275],{"class":271},[234,16605,1711],{"class":240},[234,16607,255],{"class":244},[234,16609,16610,16612,16614,16616,16618],{"class":236,"line":1766},[234,16611,5991],{"class":271},[234,16613,1443],{"class":244},[234,16615,5883],{"class":271},[234,16617,3403],{"class":240},[234,16619,255],{"class":244},[234,16621,16622],{"class":236,"line":819},[234,16623,1143],{"class":244},[234,16625,16626],{"class":236,"line":1794},[234,16627,262],{"emptyLinePlaceholder":261},[234,16629,16630,16632,16635],{"class":236,"line":1807},[234,16631,16559],{"class":281},[234,16633,16634],{"class":350}," h3",[234,16636,909],{"class":244},[234,16638,16639,16641,16643,16645,16647],{"class":236,"line":1878},[234,16640,9886],{"class":271},[234,16642,1443],{"class":244},[234,16644,1708],{"class":271},[234,16646,1711],{"class":240},[234,16648,255],{"class":244},[234,16650,16651,16653,16655,16657],{"class":236,"line":1883},[234,16652,14315],{"class":271},[234,16654,1443],{"class":244},[234,16656,14320],{"class":271},[234,16658,255],{"class":244},[234,16660,16661,16663,16665,16667,16669],{"class":236,"line":9991},[234,16662,15602],{"class":271},[234,16664,1443],{"class":244},[234,16666,15657],{"class":271},[234,16668,1711],{"class":240},[234,16670,255],{"class":244},[234,16672,16673],{"class":236,"line":9999},[234,16674,1143],{"class":244},[234,16676,16677],{"class":236,"line":10013},[234,16678,262],{"emptyLinePlaceholder":261},[234,16680,16681,16683,16685],{"class":236,"line":10027},[234,16682,16559],{"class":281},[234,16684,15688],{"class":350},[234,16686,909],{"class":244},[234,16688,16689,16691,16693,16696],{"class":236,"line":10032},[234,16690,11568],{"class":271},[234,16692,1443],{"class":244},[234,16694,16695],{"class":271},"#999",[234,16697,255],{"class":244},[234,16699,16700,16702,16704,16706],{"class":236,"line":1908},[234,16701,15666],{"class":271},[234,16703,1443],{"class":244},[234,16705,1708],{"class":271},[234,16707,255],{"class":244},[234,16709,16710],{"class":236,"line":10044},[234,16711,1143],{"class":244},[37,16713,6074],{"id":6073},[225,16715,16717],{"className":227,"code":16716,"language":229,"meta":230,"style":230},"import StringTune, { StringSpotlight } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\nstringTune.use(StringSpotlight);\nstringTune.start(60);\n",[60,16718,16719,16732,16736,16750,16759],{"__ignoreMap":230},[234,16720,16721,16723,16726,16728,16730],{"class":236,"line":237},[234,16722,241],{"class":240},[234,16724,16725],{"class":244}," StringTune, { StringSpotlight } ",[234,16727,248],{"class":240},[234,16729,252],{"class":251},[234,16731,255],{"class":244},[234,16733,16734],{"class":236,"line":258},[234,16735,262],{"emptyLinePlaceholder":261},[234,16737,16738,16740,16742,16744,16746,16748],{"class":236,"line":265},[234,16739,268],{"class":240},[234,16741,272],{"class":271},[234,16743,275],{"class":240},[234,16745,278],{"class":244},[234,16747,282],{"class":281},[234,16749,285],{"class":244},[234,16751,16752,16754,16756],{"class":236,"line":288},[234,16753,296],{"class":244},[234,16755,299],{"class":281},[234,16757,16758],{"class":244},"(StringSpotlight);\n",[234,16760,16761,16763,16765,16767,16769],{"class":236,"line":293},[234,16762,296],{"class":244},[234,16764,326],{"class":281},[234,16766,329],{"class":244},[234,16768,332],{"class":271},[234,16770,335],{"class":244},[30,16772,16773,14566,16775,106],{},[60,16774,195],{},[60,16776,5278],{},[37,16778,6133],{"id":6132},[42,16780,16781,16793,16796],{},[45,16782,16783,16784,16787,16788,137,16790,16792],{},"The current runtime does not write ",[60,16785,16786],{},"--spotlight-angle-deg",". Only ",[60,16789,15834],{},[60,16791,15835],{}," are public output.",[45,16794,16795],{},"The module updates both on pointer movement and on scroll-driven center invalidation, so the spotlight stays aligned while the page moves.",[45,16797,12962],{},[410,16799,7062],{},{"title":230,"searchDepth":258,"depth":258,"links":16801},[16802,16808,16809,16810],{"id":5406,"depth":258,"text":5407,"children":16803},[16804,16805,16806,16807],{"id":4904,"depth":265,"text":4905},{"id":5557,"depth":265,"text":5558},{"id":3814,"depth":265,"text":5593},{"id":5666,"depth":265,"text":5667},{"id":5688,"depth":258,"text":5689},{"id":6073,"depth":258,"text":6074},{"id":6132,"depth":258,"text":6133},{"path":5289,"title":5290,"description":16812,"kind":5369,"section":5187,"order":16813,"group":5282,"parentPath":-1,"status":5370,"integration":2706,"publicExport":261,"activation":16814,"package":5371,"aliases":16815,"attrs":16817,"events":16818,"cssVars":16819,"related":16820,"body":16825},"Rebuilds text into lines, words, or characters and exposes deterministic indices for animation.",210,"string=\"split\"",[16816,5290],"split",[],[],[],[16821,16822,16823,16824],"/docs/modules/split/grammar","/docs/modules/split/dom-output","/docs/modules/split/fit-and-rebuild","/docs/modules/split/inline-html",{"type":22,"value":16826,"toc":18080},[16827,16830,16835,16837,16894,16896,16948,16952,16961,16970,16995,16998,17098,17110,17112,17179,17402,17406,17412,17417,17459,17474,17479,17511,17521,17526,17557,17568,17572,17642,17646,17649,17700,17716,17729,17735,17740,17745,17751,17805,17810,17816,17819,17827,17866,17910,17922,17927,17931,17935,17946,17949,17953,17956,17960,18015,18022,18026,18044,18046,18051,18055,18077],[25,16828,5290],{"id":16829},"stringsplit",[30,16831,16832,16834],{},[60,16833,5290],{}," rebuilds text into line, word, and character wrapper spans, each with CSS variables you can use for animation. It preserves inline HTML inside the split, handles kerning, and can optionally scale text to fill the container width.",[37,16836,6074],{"id":6073},[225,16838,16840],{"className":227,"code":16839,"language":229,"meta":230,"style":230},"import StringTune, { StringSplit } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\nstringTune.use(StringSplit);\nstringTune.start(60);\n",[60,16841,16842,16855,16859,16873,16882],{"__ignoreMap":230},[234,16843,16844,16846,16849,16851,16853],{"class":236,"line":237},[234,16845,241],{"class":240},[234,16847,16848],{"class":244}," StringTune, { StringSplit } ",[234,16850,248],{"class":240},[234,16852,252],{"class":251},[234,16854,255],{"class":244},[234,16856,16857],{"class":236,"line":258},[234,16858,262],{"emptyLinePlaceholder":261},[234,16860,16861,16863,16865,16867,16869,16871],{"class":236,"line":265},[234,16862,268],{"class":240},[234,16864,272],{"class":271},[234,16866,275],{"class":240},[234,16868,278],{"class":244},[234,16870,282],{"class":281},[234,16872,285],{"class":244},[234,16874,16875,16877,16879],{"class":236,"line":288},[234,16876,296],{"class":244},[234,16878,299],{"class":281},[234,16880,16881],{"class":244},"(StringSplit);\n",[234,16883,16884,16886,16888,16890,16892],{"class":236,"line":293},[234,16885,296],{"class":244},[234,16887,326],{"class":281},[234,16889,329],{"class":244},[234,16891,332],{"class":271},[234,16893,335],{"class":244},[37,16895,4905],{"id":4904},[2221,16897,16898,16911],{},[2224,16899,16900],{},[2227,16901,16902,16904,16906,16908],{},[2230,16903,4914],{},[2230,16905,4917],{},[2230,16907,4920],{},[2230,16909,16910],{},"Description",[2240,16912,16913,16932],{},[2227,16914,16915,16920,16922,16926],{},[2245,16916,16917],{},[60,16918,16919],{},"string-split",[2245,16921,2252],{},[2245,16923,16924],{},[60,16925,6246],{},[2245,16927,16928,16929,106],{},"Declares which wrappers and alignment variables to build. Also accepts ",[60,16930,16931],{},"data-string-split",[2227,16933,16934,16939,16942,16945],{},[2245,16935,16936],{},[60,16937,16938],{},"string-split-restore-after",[2245,16940,16941],{},"number-like string",[2245,16943,16944],{},"not set",[2245,16946,16947],{},"Restores the original HTML after the given timeout in milliseconds.",[37,16949,16951],{"id":16950},"grammar","Grammar",[30,16953,16954,16955,16957,16958,106],{},"The ",[60,16956,16919],{}," attribute controls what gets generated. Full reference: ",[133,16959,16960],{"href":16821},"Split Grammar",[30,16962,16963,16964,16966,16967,1114],{},"Tokens are separated by ",[60,16965,1128],{},". Each token enables a wrapper level and accepts an optional alignment parameter in ",[60,16968,16969],{},"[]",[225,16971,16973],{"className":338,"code":16972,"language":340,"meta":230,"style":230},"string-split=\"char[start]\"\nstring-split=\"word[start]|char-word[start]\"\nstring-split=\"line[center]|char-line[center]\"\nstring-split=\"line[start]|fit\"\n",[60,16974,16975,16980,16985,16990],{"__ignoreMap":230},[234,16976,16977],{"class":236,"line":237},[234,16978,16979],{"class":244},"string-split=\"char[start]\"\n",[234,16981,16982],{"class":236,"line":258},[234,16983,16984],{"class":244},"string-split=\"word[start]|char-word[start]\"\n",[234,16986,16987],{"class":236,"line":265},[234,16988,16989],{"class":244},"string-split=\"line[center]|char-line[center]\"\n",[234,16991,16992],{"class":236,"line":288},[234,16993,16994],{"class":244},"string-split=\"line[start]|fit\"\n",[30,16996,16997],{},"Available tokens:",[2221,16999,17000,17010],{},[2224,17001,17002],{},[2227,17003,17004,17007],{},[2230,17005,17006],{},"Token",[2230,17008,17009],{},"Creates",[2240,17011,17012,17024,17036,17050,17062,17075,17088],{},[2227,17013,17014,17018],{},[2245,17015,17016],{},[60,17017,236],{},[2245,17019,17020,17023],{},[60,17021,17022],{},".-s-line"," wrappers",[2227,17025,17026,17031],{},[2245,17027,17028],{},[60,17029,17030],{},"word",[2245,17032,17033,17023],{},[60,17034,17035],{},".-s-word",[2227,17037,17038,17043],{},[2245,17039,17040],{},[60,17041,17042],{},"word-line",[2245,17044,17045,17047,17048],{},[60,17046,17022],{}," + ",[60,17049,17035],{},[2227,17051,17052,17057],{},[2245,17053,17054],{},[60,17055,17056],{},"char",[2245,17058,17059,17023],{},[60,17060,17061],{},".-s-char",[2227,17063,17064,17069],{},[2245,17065,17066],{},[60,17067,17068],{},"char-line",[2245,17070,17071,17047,17073],{},[60,17072,17022],{},[60,17074,17061],{},[2227,17076,17077,17082],{},[2245,17078,17079],{},[60,17080,17081],{},"char-word",[2245,17083,17084,17047,17086],{},[60,17085,17035],{},[60,17087,17061],{},[2227,17089,17090,17095],{},[2245,17091,17092],{},[60,17093,17094],{},"fit",[2245,17096,17097],{},"Scales text to fill container width",[30,17099,17100,17101,1833,17103,1833,17105,1833,17107,106],{},"Available alignment params: ",[60,17102,326],{},[60,17104,1695],{},[60,17106,11775],{},[60,17108,17109],{},"random(min,max)",[37,17111,5689],{"id":5688},[225,17113,17115],{"className":338,"code":17114,"language":340,"meta":230,"style":230},"\u003Ch1\n  class=\"hero-title\"\n  string=\"split\"\n  string-split=\"line[center]|char-line[center]\"\n>\n  Crafting\u003Cbr />Digital\u003Cbr />Experiences\n\u003C/h1>\n",[60,17116,17117,17124,17133,17142,17152,17156,17171],{"__ignoreMap":230},[234,17118,17119,17121],{"class":236,"line":237},[234,17120,347],{"class":244},[234,17122,17123],{"class":350},"h1\n",[234,17125,17126,17128,17130],{"class":236,"line":258},[234,17127,12239],{"class":281},[234,17129,357],{"class":244},[234,17131,17132],{"class":251},"\"hero-title\"\n",[234,17134,17135,17137,17139],{"class":236,"line":265},[234,17136,12249],{"class":281},[234,17138,357],{"class":244},[234,17140,17141],{"class":251},"\"split\"\n",[234,17143,17144,17147,17149],{"class":236,"line":288},[234,17145,17146],{"class":281},"  string-split",[234,17148,357],{"class":244},[234,17150,17151],{"class":251},"\"line[center]|char-line[center]\"\n",[234,17153,17154],{"class":236,"line":293},[234,17155,376],{"class":244},[234,17157,17158,17161,17163,17166,17168],{"class":236,"line":305},[234,17159,17160],{"class":244},"  Crafting\u003C",[234,17162,2045],{"class":350},[234,17164,17165],{"class":244}," />Digital\u003C",[234,17167,2045],{"class":350},[234,17169,17170],{"class":244}," />Experiences\n",[234,17172,17173,17175,17177],{"class":236,"line":321},[234,17174,1402],{"class":244},[234,17176,25],{"class":350},[234,17178,376],{"class":244},[225,17180,17182],{"className":5857,"code":17181,"language":5859,"meta":230,"style":230},".hero-title .-s-line {\n  overflow: hidden;\n  padding-bottom: 0.1em;\n}\n\n.hero-title .-s-char {\n  display: inline-block;\n  transform: translateY(100%);\n  animation: charReveal 0.8s cubic-bezier(0.2, 0, 0, 1) forwards;\n  animation-delay: calc(\n    var(--line-index, 0) * 0.15s + var(--char-index, 0) * 0.03s\n  );\n}\n\n@keyframes charReveal {\n  to { transform: translateY(0); }\n}\n",[60,17183,17184,17194,17204,17217,17221,17225,17234,17245,17262,17299,17310,17358,17362,17366,17370,17379,17398],{"__ignoreMap":230},[234,17185,17186,17189,17192],{"class":236,"line":237},[234,17187,17188],{"class":281},".hero-title",[234,17190,17191],{"class":281}," .-s-line",[234,17193,909],{"class":244},[234,17195,17196,17198,17200,17202],{"class":236,"line":258},[234,17197,7610],{"class":271},[234,17199,1443],{"class":244},[234,17201,7615],{"class":271},[234,17203,255],{"class":244},[234,17205,17206,17209,17211,17213,17215],{"class":236,"line":265},[234,17207,17208],{"class":271},"  padding-bottom",[234,17210,1443],{"class":244},[234,17212,10452],{"class":271},[234,17214,3714],{"class":240},[234,17216,255],{"class":244},[234,17218,17219],{"class":236,"line":288},[234,17220,1143],{"class":244},[234,17222,17223],{"class":236,"line":293},[234,17224,262],{"emptyLinePlaceholder":261},[234,17226,17227,17229,17232],{"class":236,"line":305},[234,17228,17188],{"class":281},[234,17230,17231],{"class":281}," .-s-char",[234,17233,909],{"class":244},[234,17235,17236,17238,17240,17243],{"class":236,"line":321},[234,17237,1677],{"class":271},[234,17239,1443],{"class":244},[234,17241,17242],{"class":271},"inline-block",[234,17244,255],{"class":244},[234,17246,17247,17249,17251,17254,17256,17258,17260],{"class":236,"line":946},[234,17248,1810],{"class":271},[234,17250,1443],{"class":244},[234,17252,17253],{"class":271},"translateY",[234,17255,329],{"class":244},[234,17257,5883],{"class":271},[234,17259,3403],{"class":240},[234,17261,335],{"class":244},[234,17263,17264,17266,17269,17271,17273,17276,17278,17280,17282,17284,17286,17288,17290,17292,17294,17297],{"class":236,"line":955},[234,17265,9850],{"class":271},[234,17267,17268],{"class":244},": charReveal ",[234,17270,315],{"class":271},[234,17272,9858],{"class":240},[234,17274,17275],{"class":271}," cubic-bezier",[234,17277,329],{"class":244},[234,17279,7131],{"class":271},[234,17281,1833],{"class":244},[234,17283,1836],{"class":271},[234,17285,1833],{"class":244},[234,17287,1836],{"class":271},[234,17289,1833],{"class":244},[234,17291,1754],{"class":271},[234,17293,903],{"class":244},[234,17295,17296],{"class":271},"forwards",[234,17298,255],{"class":244},[234,17300,17301,17304,17306,17308],{"class":236,"line":11},[234,17302,17303],{"class":271},"  animation-delay",[234,17305,1443],{"class":244},[234,17307,1820],{"class":271},[234,17309,7773],{"class":244},[234,17311,17312,17315,17317,17320,17322,17324,17326,17328,17331,17333,17336,17339,17341,17344,17346,17348,17350,17352,17355],{"class":236,"line":980},[234,17313,17314],{"class":271},"    var",[234,17316,329],{"class":244},[234,17318,17319],{"class":899},"--line-index",[234,17321,1833],{"class":244},[234,17323,1836],{"class":271},[234,17325,903],{"class":244},[234,17327,1841],{"class":240},[234,17329,17330],{"class":271}," 0.15",[234,17332,9858],{"class":240},[234,17334,17335],{"class":240}," +",[234,17337,17338],{"class":271}," var",[234,17340,329],{"class":244},[234,17342,17343],{"class":899},"--char-index",[234,17345,1833],{"class":244},[234,17347,1836],{"class":271},[234,17349,903],{"class":244},[234,17351,1841],{"class":240},[234,17353,17354],{"class":271}," 0.03",[234,17356,17357],{"class":240},"s\n",[234,17359,17360],{"class":236,"line":994},[234,17361,7829],{"class":244},[234,17363,17364],{"class":236,"line":1000},[234,17365,1143],{"class":244},[234,17367,17368],{"class":236,"line":1005},[234,17369,262],{"emptyLinePlaceholder":261},[234,17371,17372,17374,17377],{"class":236,"line":1013},[234,17373,10152],{"class":240},[234,17375,17376],{"class":899}," charReveal",[234,17378,909],{"class":244},[234,17380,17381,17383,17385,17387,17389,17391,17393,17395],{"class":236,"line":1019},[234,17382,10198],{"class":281},[234,17384,1437],{"class":244},[234,17386,4642],{"class":271},[234,17388,1443],{"class":244},[234,17390,17253],{"class":271},[234,17392,329],{"class":244},[234,17394,1836],{"class":271},[234,17396,17397],{"class":244},"); }\n",[234,17399,17400],{"class":236,"line":1025},[234,17401,1143],{"class":244},[37,17403,17405],{"id":17404},"css-variables","CSS Variables",[30,17407,17408,17409,106],{},"Full reference: ",[133,17410,17411],{"href":16822},"DOM Output",[174,17413,11915,17415],{"id":17414},"on-s-line",[60,17416,17022],{},[2221,17418,17419,17428],{},[2224,17420,17421],{},[2227,17422,17423,17426],{},[2230,17424,17425],{},"Variable",[2230,17427,16910],{},[2240,17429,17430,17439,17449],{},[2227,17431,17432,17436],{},[2245,17433,17434],{},[60,17435,17319],{},[2245,17437,17438],{},"0-based line index",[2227,17440,17441,17446],{},[2245,17442,17443],{},[60,17444,17445],{},"--word-total",[2245,17447,17448],{},"Number of words in this line",[2227,17450,17451,17456],{},[2245,17452,17453],{},[60,17454,17455],{},"--fit-font-size",[2245,17457,17458],{},"Computed fit font size (when line-level fit is active)",[30,17460,17461,17462,1833,17465,1833,17468,1833,17471,106],{},"Plus alignment variables when requested: ",[60,17463,17464],{},"--line-start",[60,17466,17467],{},"--line-center",[60,17469,17470],{},"--line-end",[60,17472,17473],{},"--line-random",[174,17475,11915,17477],{"id":17476},"on-s-word",[60,17478,17035],{},[2221,17480,17481,17489],{},[2224,17482,17483],{},[2227,17484,17485,17487],{},[2230,17486,17425],{},[2230,17488,16910],{},[2240,17490,17491,17501],{},[2227,17492,17493,17498],{},[2245,17494,17495],{},[60,17496,17497],{},"--word-index",[2245,17499,17500],{},"Global 0-based word index",[2227,17502,17503,17508],{},[2245,17504,17505],{},[60,17506,17507],{},"--char-total",[2245,17509,17510],{},"Number of chars in this word",[30,17512,17513,17514,1833,17517,17520],{},"Plus alignment variables: ",[60,17515,17516],{},"--word-start",[60,17518,17519],{},"--wordLine-start",", etc.",[174,17522,11915,17524],{"id":17523},"on-s-char",[60,17525,17061],{},[2221,17527,17528,17536],{},[2224,17529,17530],{},[2227,17531,17532,17534],{},[2230,17533,17425],{},[2230,17535,16910],{},[2240,17537,17538,17547],{},[2227,17539,17540,17544],{},[2245,17541,17542],{},[60,17543,17343],{},[2245,17545,17546],{},"Global 0-based char index",[2227,17548,17549,17554],{},[2245,17550,17551],{},[60,17552,17553],{},"--kerning",[2245,17555,17556],{},"Kerning adjustment between this char and the next (when needed)",[30,17558,17513,17559,1833,17562,1833,17565,17520],{},[60,17560,17561],{},"--char-start",[60,17563,17564],{},"--charWord-start",[60,17566,17567],{},"--charLine-center",[174,17569,17571],{"id":17570},"on-the-source-element","On the source element",[2221,17573,17574,17583],{},[2224,17575,17576],{},[2227,17577,17578,17580],{},[2230,17579,17425],{},[2230,17581,17582],{},"When",[2240,17584,17585,17595,17605,17615,17624,17633],{},[2227,17586,17587,17592],{},[2245,17588,17589],{},[60,17590,17591],{},"--char-global-total",[2245,17593,17594],{},"Char wrappers are active",[2227,17596,17597,17602],{},[2245,17598,17599],{},[60,17600,17601],{},"--word-global-total",[2245,17603,17604],{},"Word wrappers are active",[2227,17606,17607,17612],{},[2245,17608,17609],{},[60,17610,17611],{},"--line-global-total",[2245,17613,17614],{},"Line wrappers are active",[2227,17616,17617,17621],{},[2245,17618,17619],{},[60,17620,17455],{},[2245,17622,17623],{},"Global fit without line-level split",[2227,17625,17626,17631],{},[2245,17627,17628],{},[60,17629,17630],{},"--fit-scale-y",[2245,17632,17623],{},[2227,17634,17635,17640],{},[2245,17636,17637],{},[60,17638,17639],{},"--fit-aspect-ratio",[2245,17641,17623],{},[37,17643,17645],{"id":17644},"inline-html","Inline HTML",[30,17647,17648],{},"You can use standard inline elements inside split text:",[225,17650,17652],{"className":338,"code":17651,"language":340,"meta":230,"style":230},"\u003Ch1 string=\"split\" string-split=\"word[start]|char-word[start]\">\n  Crafted for \u003Cem>motion\u003C/em> systems\n\u003C/h1>\n",[60,17653,17654,17677,17692],{"__ignoreMap":230},[234,17655,17656,17658,17660,17662,17664,17667,17670,17672,17675],{"class":236,"line":237},[234,17657,347],{"class":244},[234,17659,25],{"class":350},[234,17661,354],{"class":281},[234,17663,357],{"class":244},[234,17665,17666],{"class":251},"\"split\"",[234,17668,17669],{"class":281}," string-split",[234,17671,357],{"class":244},[234,17673,17674],{"class":251},"\"word[start]|char-word[start]\"",[234,17676,376],{"class":244},[234,17678,17679,17682,17684,17687,17689],{"class":236,"line":258},[234,17680,17681],{"class":244},"  Crafted for \u003C",[234,17683,3714],{"class":350},[234,17685,17686],{"class":244},">motion\u003C/",[234,17688,3714],{"class":350},[234,17690,17691],{"class":244},"> systems\n",[234,17693,17694,17696,17698],{"class":236,"line":265},[234,17695,1402],{"class":244},[234,17697,25],{"class":350},[234,17699,376],{"class":244},[30,17701,17702,17703,1833,17706,1833,17709,1833,17712,17715],{},"The module preserves your inline markup in the rebuilt DOM. ",[60,17704,17705],{},"\u003Cem>",[60,17707,17708],{},"\u003Cstrong>",[60,17710,17711],{},"\u003Ca>",[60,17713,17714],{},"\u003Cspan>",", and other inline elements keep their tag and attributes so your CSS continues to work.",[30,17717,17718,17719,1833,17722,7048,17725,17728],{},"Elements like ",[60,17720,17721],{},"\u003Cimg>",[60,17723,17724],{},"\u003Csvg>",[60,17726,17727],{},"\u003Ctable>"," are kept as-is without splitting.",[30,17730,17731,17734],{},[60,17732,17733],{},"\u003Cbr>"," forces a line break.",[30,17736,17737,17738,106],{},"Full details: ",[133,17739,17645],{"href":16824},[37,17741,17743],{"id":17742},"split-class",[60,17744,17742],{},[30,17746,17747,17750],{},[60,17748,17749],{},"\u003Csplit-class>"," is a helper element for applying CSS classes to generated wrappers:",[225,17752,17754],{"className":338,"code":17753,"language":340,"meta":230,"style":230},"\u003Ch2 string=\"split\" string-split=\"word[start]|char-word[start]\">\n  \u003Csplit-class class=\"is-accent\">Signal\u003C/split-class> Layer\n\u003C/h2>\n",[60,17755,17756,17776,17797],{"__ignoreMap":230},[234,17757,17758,17760,17762,17764,17766,17768,17770,17772,17774],{"class":236,"line":237},[234,17759,347],{"class":244},[234,17761,37],{"class":350},[234,17763,354],{"class":281},[234,17765,357],{"class":244},[234,17767,17666],{"class":251},[234,17769,17669],{"class":281},[234,17771,357],{"class":244},[234,17773,17674],{"class":251},[234,17775,376],{"class":244},[234,17777,17778,17780,17782,17784,17786,17789,17792,17794],{"class":236,"line":258},[234,17779,1292],{"class":244},[234,17781,17742],{"class":350},[234,17783,1297],{"class":281},[234,17785,357],{"class":244},[234,17787,17788],{"class":251},"\"is-accent\"",[234,17790,17791],{"class":244},">Signal\u003C/",[234,17793,17742],{"class":350},[234,17795,17796],{"class":244},"> Layer\n",[234,17798,17799,17801,17803],{"class":236,"line":265},[234,17800,1402],{"class":244},[234,17802,37],{"class":350},[234,17804,376],{"class":244},[30,17806,16954,17807,17809],{},[60,17808,17749],{}," element itself does not appear in the output. Its classes are applied to the generated word or char wrappers that contain its children.",[30,17811,17812,17813,17815],{},"If every char in a word shares the same ",[60,17814,17742],{},", the classes are hoisted to the word wrapper.",[37,17817,17818],{"id":17094},"Fit",[30,17820,17821,17822,11943,17824,17826],{},"Adding ",[60,17823,17094],{},[60,17825,16919],{}," scales text to fill the container width:",[225,17828,17830],{"className":338,"code":17829,"language":340,"meta":230,"style":230},"\u003Ch1 string=\"split\" string-split=\"line[start]|fit\">\n  Big Headline\n\u003C/h1>\n",[60,17831,17832,17853,17858],{"__ignoreMap":230},[234,17833,17834,17836,17838,17840,17842,17844,17846,17848,17851],{"class":236,"line":237},[234,17835,347],{"class":244},[234,17837,25],{"class":350},[234,17839,354],{"class":281},[234,17841,357],{"class":244},[234,17843,17666],{"class":251},[234,17845,17669],{"class":281},[234,17847,357],{"class":244},[234,17849,17850],{"class":251},"\"line[start]|fit\"",[234,17852,376],{"class":244},[234,17854,17855],{"class":236,"line":258},[234,17856,17857],{"class":244},"  Big Headline\n",[234,17859,17860,17862,17864],{"class":236,"line":265},[234,17861,1402],{"class":244},[234,17863,25],{"class":350},[234,17865,376],{"class":244},[225,17867,17869],{"className":5857,"code":17868,"language":5859,"meta":230,"style":230},".headline .-s-line {\n  font-size: calc(var(--fit-font-size) * 1px);\n}\n",[60,17870,17871,17880,17906],{"__ignoreMap":230},[234,17872,17873,17876,17878],{"class":236,"line":237},[234,17874,17875],{"class":281},".headline",[234,17877,17191],{"class":281},[234,17879,909],{"class":244},[234,17881,17882,17884,17886,17888,17890,17892,17894,17896,17898,17900,17902,17904],{"class":236,"line":258},[234,17883,9886],{"class":271},[234,17885,1443],{"class":244},[234,17887,1820],{"class":271},[234,17889,329],{"class":244},[234,17891,1825],{"class":271},[234,17893,329],{"class":244},[234,17895,17455],{"class":899},[234,17897,903],{"class":244},[234,17899,1841],{"class":240},[234,17901,1844],{"class":271},[234,17903,1789],{"class":240},[234,17905,335],{"class":244},[234,17907,17908],{"class":236,"line":265},[234,17909,1143],{"class":244},[30,17911,17912,17913,17915,17916,1833,17918,7048,17920,106],{},"With line-level split, each line gets its own ",[60,17914,17455],{},". Without line-level split, the source element gets ",[60,17917,17455],{},[60,17919,17630],{},[60,17921,17639],{},[30,17923,17737,17924,106],{},[133,17925,17926],{"href":16823},"Fit And Rebuild",[37,17928,17930],{"id":17929},"lifecycle","Lifecycle",[174,17932,17934],{"id":17933},"when-the-dom-is-rebuilt","When the DOM is rebuilt",[42,17936,17937,17940,17943],{},[45,17938,17939],{},"On initial connection",[45,17941,17942],{},"On desktop width resize",[45,17944,17945],{},"On reconnect",[30,17947,17948],{},"The module caches the original HTML on first split. On each rebuild, it starts from that cached original to produce a clean result.",[174,17950,17952],{"id":17951},"mobile","Mobile",[30,17954,17955],{},"Mobile rebuild is disabled by default. The split DOM stays as initially built when the viewport height or width changes on mobile.",[174,17957,17959],{"id":17958},"restore-after","Restore After",[225,17961,17963],{"className":338,"code":17962,"language":340,"meta":230,"style":230},"\u003Ch1\n  string=\"split\"\n  string-split=\"char[start]\"\n  string-split-restore-after=\"2000\"\n>\n  Intro Text\n\u003C/h1>\n",[60,17964,17965,17971,17979,17988,17998,18002,18007],{"__ignoreMap":230},[234,17966,17967,17969],{"class":236,"line":237},[234,17968,347],{"class":244},[234,17970,17123],{"class":350},[234,17972,17973,17975,17977],{"class":236,"line":258},[234,17974,12249],{"class":281},[234,17976,357],{"class":244},[234,17978,17141],{"class":251},[234,17980,17981,17983,17985],{"class":236,"line":265},[234,17982,17146],{"class":281},[234,17984,357],{"class":244},[234,17986,17987],{"class":251},"\"char[start]\"\n",[234,17989,17990,17993,17995],{"class":236,"line":288},[234,17991,17992],{"class":281},"  string-split-restore-after",[234,17994,357],{"class":244},[234,17996,17997],{"class":251},"\"2000\"\n",[234,17999,18000],{"class":236,"line":293},[234,18001,376],{"class":244},[234,18003,18004],{"class":236,"line":305},[234,18005,18006],{"class":244},"  Intro Text\n",[234,18008,18009,18011,18013],{"class":236,"line":321},[234,18010,1402],{"class":244},[234,18012,25],{"class":350},[234,18014,376],{"class":244},[30,18016,18017,18018,18021],{},"After 2000ms, the module restores the original HTML and adds class ",[60,18019,18020],{},"-restored",". Useful for one-shot intro effects.",[37,18023,18025],{"id":18024},"accessibility","Accessibility",[42,18027,18028,18034,18041],{},[45,18029,18030,18031],{},"All generated wrappers get ",[60,18032,18033],{},"aria-hidden=\"true\"",[45,18035,18036,18037,18040],{},"The source element gets ",[60,18038,18039],{},"aria-label"," with the original text",[45,18042,18043],{},"Screen readers read the original content, not individual wrapper spans",[37,18045,5593],{"id":3814},[30,18047,18048,18050],{},[60,18049,5290],{}," does not emit module-specific events. Consume its output through CSS selectors and variables.",[37,18052,18054],{"id":18053},"deep-dives","Deep Dives",[42,18056,18057,18062,18067,18072],{},[45,18058,18059,18061],{},[133,18060,16960],{"href":16821}," — full attribute reference",[45,18063,18064,18066],{},[133,18065,17411],{"href":16822}," — wrappers, classes, variables, and nesting",[45,18068,18069,18071],{},[133,18070,17645],{"href":16824}," — how markup survives the split",[45,18073,18074,18076],{},[133,18075,17926],{"href":16823}," — fit mode and rebuild timing",[410,18078,18079],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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 .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":230,"searchDepth":258,"depth":258,"links":18081},[18082,18083,18084,18085,18086,18095,18096,18097,18098,18103,18104,18105],{"id":6073,"depth":258,"text":6074},{"id":4904,"depth":258,"text":4905},{"id":16950,"depth":258,"text":16951},{"id":5688,"depth":258,"text":5689},{"id":17404,"depth":258,"text":17405,"children":18087},[18088,18090,18092,18094],{"id":17414,"depth":265,"text":18089},"On .-s-line",{"id":17476,"depth":265,"text":18091},"On .-s-word",{"id":17523,"depth":265,"text":18093},"On .-s-char",{"id":17570,"depth":265,"text":17571},{"id":17644,"depth":258,"text":17645},{"id":17742,"depth":258,"text":17742},{"id":17094,"depth":258,"text":17818},{"id":17929,"depth":258,"text":17930,"children":18099},[18100,18101,18102],{"id":17933,"depth":265,"text":17934},{"id":17951,"depth":265,"text":17952},{"id":17958,"depth":265,"text":17959},{"id":18024,"depth":258,"text":18025},{"id":3814,"depth":258,"text":5593},{"id":18053,"depth":258,"text":18054},{"path":16821,"title":16960,"description":18107,"kind":5369,"section":5187,"order":18108,"group":5282,"parentPath":5289,"status":5370,"integration":2706,"publicExport":261,"activation":16814,"package":5371,"aliases":18109,"attrs":18111,"events":18112,"cssVars":18113,"related":18114,"body":18115},"Detailed reference for string-split tokens, parameters, random values, and parser rules.",211,[18110,17068,17042,17081],"string-split grammar",[16919,16938],[],[],[5289,16824,16822,2464],{"type":22,"value":18116,"toc":18801},[18117,18120,18131,18135,18143,18169,18173,18176,18286,18293,18333,18337,18345,18421,18426,18430,18433,18491,18495,18547,18554,18621,18625,18630,18645,18648,18652,18657,18665,18671,18675,18738,18742,18772,18776,18798],[25,18118,16960],{"id":18119},"split-grammar",[30,18121,18122,18124,18125,18127,18128,18130],{},[60,18123,5290],{}," is configured through one attribute: ",[60,18126,16919],{}," (also accepted as ",[60,18129,16931],{},"). The parser is strict — it does not try to guess intent.",[37,18132,18134],{"id":18133},"attribute-format","Attribute Format",[225,18136,18141],{"className":18137,"code":18139,"language":18140},[18138],"language-text","token[params]|token[params]|...\n","text",[60,18142,18139],{"__ignoreMap":230},[42,18144,18145,18150,18157,18166],{},[45,18146,18147,18148],{},"tokens are separated by ",[60,18149,1128],{},[45,18151,18152,18153,18156],{},"each token has an optional ",[60,18154,18155],{},"[params]"," block",[45,18158,18159,18160,18162,18163],{},"parameters inside ",[60,18161,16969],{}," are separated by ",[60,18164,18165],{},";",[45,18167,18168],{},"empty parts and extra whitespace are ignored",[37,18170,18172],{"id":18171},"tokens","Tokens",[30,18174,18175],{},"Each token enables one level of wrappers and/or CSS variables.",[2221,18177,18178,18190],{},[2224,18179,18180],{},[2227,18181,18182,18184,18187],{},[2230,18183,17006],{},[2230,18185,18186],{},"Wrappers created",[2230,18188,18189],{},"What it does",[2240,18191,18192,18205,18218,18233,18246,18261,18276],{},[2227,18193,18194,18198,18202],{},[2245,18195,18196],{},[60,18197,236],{},[2245,18199,18200],{},[60,18201,17022],{},[2245,18203,18204],{},"Wraps each visual line",[2227,18206,18207,18211,18215],{},[2245,18208,18209],{},[60,18210,17030],{},[2245,18212,18213],{},[60,18214,17035],{},[2245,18216,18217],{},"Wraps each word, global ordering",[2227,18219,18220,18224,18230],{},[2245,18221,18222],{},[60,18223,17042],{},[2245,18225,18226,17047,18228],{},[60,18227,17022],{},[60,18229,17035],{},[2245,18231,18232],{},"Wraps words with per-line ordering",[2227,18234,18235,18239,18243],{},[2245,18236,18237],{},[60,18238,17056],{},[2245,18240,18241],{},[60,18242,17061],{},[2245,18244,18245],{},"Wraps each character, global ordering",[2227,18247,18248,18252,18258],{},[2245,18249,18250],{},[60,18251,17068],{},[2245,18253,18254,17047,18256],{},[60,18255,17022],{},[60,18257,17061],{},[2245,18259,18260],{},"Wraps characters with per-line ordering",[2227,18262,18263,18267,18273],{},[2245,18264,18265],{},[60,18266,17081],{},[2245,18268,18269,17047,18271],{},[60,18270,17035],{},[60,18272,17061],{},[2245,18274,18275],{},"Wraps characters with per-word ordering",[2227,18277,18278,18282,18284],{},[2245,18279,18280],{},[60,18281,17094],{},[2245,18283,1774],{},[2245,18285,17097],{},[30,18287,18288,18289,18292],{},"A wrapper is created when ",[1929,18290,18291],{},"any"," token that implies it is present:",[42,18294,18295,18309,18321],{},[45,18296,18297,18301,18302,1833,18304,2703,18306,18308],{},[1929,18298,18299],{},[60,18300,17022],{}," appears when ",[60,18303,236],{},[60,18305,17042],{},[60,18307,17068],{}," is used",[45,18310,18311,18301,18315,1833,18317,2703,18319,18308],{},[1929,18312,18313],{},[60,18314,17035],{},[60,18316,17030],{},[60,18318,17042],{},[60,18320,17081],{},[45,18322,18323,18301,18327,1833,18329,2703,18331,18308],{},[1929,18324,18325],{},[60,18326,17061],{},[60,18328,17056],{},[60,18330,17068],{},[60,18332,17081],{},[37,18334,18336],{"id":18335},"alignment-parameters","Alignment Parameters",[30,18338,18339,18340,18342,18343,1114],{},"Each token (except ",[60,18341,17094],{},") accepts an alignment parameter inside ",[60,18344,16969],{},[2221,18346,18347,18360],{},[2224,18348,18349],{},[2227,18350,18351,18354,18357],{},[2230,18352,18353],{},"Parameter",[2230,18355,18356],{},"Produces variable",[2230,18358,18359],{},"Value",[2240,18361,18362,18376,18390,18404],{},[2227,18363,18364,18368,18373],{},[2245,18365,18366],{},[60,18367,326],{},[2245,18369,18370],{},[60,18371,18372],{},"--{token}-start",[2245,18374,18375],{},"Index from the beginning (0, 1, 2...)",[2227,18377,18378,18382,18387],{},[2245,18379,18380],{},[60,18381,1695],{},[2245,18383,18384],{},[60,18385,18386],{},"--{token}-center",[2245,18388,18389],{},"Distance from the center",[2227,18391,18392,18396,18401],{},[2245,18393,18394],{},[60,18395,11775],{},[2245,18397,18398],{},[60,18399,18400],{},"--{token}-end",[2245,18402,18403],{},"Index from the end",[2227,18405,18406,18410,18415],{},[2245,18407,18408],{},[60,18409,17109],{},[2245,18411,18412],{},[60,18413,18414],{},"--{token}-random",[2245,18416,18417,18418],{},"Random integer in ",[60,18419,18420],{},"[min, max]",[30,18422,18423,18424,106],{},"If no parameter is given, the default is ",[60,18425,326],{},[174,18427,18429],{"id":18428},"variable-naming","Variable naming",[30,18431,18432],{},"The CSS variable name combines the token's internal key with the alignment:",[2221,18434,18435,18443],{},[2224,18436,18437],{},[2227,18438,18439,18441],{},[2230,18440,4914],{},[2230,18442,17425],{},[2240,18444,18445,18456,18467,18479],{},[2227,18446,18447,18452],{},[2245,18448,18449],{},[60,18450,18451],{},"line[center]",[2245,18453,18454],{},[60,18455,17467],{},[2227,18457,18458,18463],{},[2245,18459,18460],{},[60,18461,18462],{},"word-line[start]",[2245,18464,18465],{},[60,18466,17519],{},[2227,18468,18469,18474],{},[2245,18470,18471],{},[60,18472,18473],{},"char-word[end]",[2245,18475,18476],{},[60,18477,18478],{},"--charWord-end",[2227,18480,18481,18486],{},[2245,18482,18483],{},[60,18484,18485],{},"char[random(0,10)]",[2245,18487,18488],{},[60,18489,18490],{},"--char-random",[174,18492,18494],{"id":18493},"what-the-values-mean","What the values mean",[2221,18496,18497,18507],{},[2224,18498,18499],{},[2227,18500,18501,18504],{},[2230,18502,18503],{},"Alignment",[2230,18505,18506],{},"Formula",[2240,18508,18509,18518,18529,18538],{},[2227,18510,18511,18515],{},[2245,18512,18513],{},[60,18514,326],{},[2245,18516,18517],{},"Item's 0-based index",[2227,18519,18520,18524],{},[2245,18521,18522],{},[60,18523,11775],{},[2245,18525,18526],{},[60,18527,18528],{},"total - index - 1",[2227,18530,18531,18535],{},[2245,18532,18533],{},[60,18534,1695],{},[2245,18536,18537],{},"Distance from the center index",[2227,18539,18540,18544],{},[2245,18541,18542],{},[60,18543,17109],{},[2245,18545,18546],{},"Random integer in the inclusive range",[30,18548,18549,18550,18553],{},"The scope of ",[60,18551,18552],{},"total"," depends on the token:",[2221,18555,18556,18565],{},[2224,18557,18558],{},[2227,18559,18560,18562],{},[2230,18561,17006],{},[2230,18563,18564],{},"Total is...",[2240,18566,18567,18576,18585,18594,18603,18612],{},[2227,18568,18569,18573],{},[2245,18570,18571],{},[60,18572,236],{},[2245,18574,18575],{},"total lines",[2227,18577,18578,18582],{},[2245,18579,18580],{},[60,18581,17030],{},[2245,18583,18584],{},"total words across all lines",[2227,18586,18587,18591],{},[2245,18588,18589],{},[60,18590,17042],{},[2245,18592,18593],{},"words in the current line",[2227,18595,18596,18600],{},[2245,18597,18598],{},[60,18599,17056],{},[2245,18601,18602],{},"total chars across all lines",[2227,18604,18605,18609],{},[2245,18606,18607],{},[60,18608,17081],{},[2245,18610,18611],{},"chars in the current word",[2227,18613,18614,18618],{},[2245,18615,18616],{},[60,18617,17068],{},[2245,18619,18620],{},"chars in the current line",[37,18622,18624],{"id":18623},"combining-tokens","Combining Tokens",[30,18626,163,18627,18629],{},[60,18628,1128],{}," to combine multiple levels in one attribute:",[225,18631,18633],{"className":338,"code":18632,"language":340,"meta":230,"style":230},"\u003C!-- line + word + char ordering -->\nstring-split=\"line[center]|word-line[start]|char-word[end]\"\n",[60,18634,18635,18640],{"__ignoreMap":230},[234,18636,18637],{"class":236,"line":237},[234,18638,18639],{"class":864},"\u003C!-- line + word + char ordering -->\n",[234,18641,18642],{"class":236,"line":258},[234,18643,18644],{"class":244},"string-split=\"line[center]|word-line[start]|char-word[end]\"\n",[30,18646,18647],{},"This creates all three wrapper levels, each with its own alignment variable.",[37,18649,18650],{"id":17094},[60,18651,17094],{},[30,18653,18654,18656],{},[60,18655,17094],{}," is a standalone token with no parameters:",[225,18658,18659],{"className":338,"code":16994,"language":340,"meta":230,"style":230},[60,18660,18661],{"__ignoreMap":230},[234,18662,18663],{"class":236,"line":237},[234,18664,16994],{"class":244},[30,18666,18667,18668,18670],{},"See ",[133,18669,17926],{"href":16823}," for details.",[37,18672,18674],{"id":18673},"common-patterns","Common Patterns",[2221,18676,18677,18686],{},[2224,18678,18679],{},[2227,18680,18681,18684],{},[2230,18682,18683],{},"Goal",[2230,18685,4914],{},[2240,18687,18688,18698,18708,18718,18728],{},[2227,18689,18690,18693],{},[2245,18691,18692],{},"Reveal chars inside each word",[2245,18694,18695],{},[60,18696,18697],{},"word[start]|char-word[start]",[2227,18699,18700,18703],{},[2245,18701,18702],{},"Stagger lines then chars per line",[2245,18704,18705],{},[60,18706,18707],{},"line[start]|char-line[start]",[2227,18709,18710,18713],{},[2245,18711,18712],{},"Fit text to width with line animation",[2245,18714,18715],{},[60,18716,18717],{},"line[start]|fit",[2227,18719,18720,18723],{},[2245,18721,18722],{},"Word wrappers only (no char split)",[2245,18724,18725],{},[60,18726,18727],{},"word[start]",[2227,18729,18730,18733],{},[2245,18731,18732],{},"Full three-level control",[2245,18734,18735],{},[60,18736,18737],{},"line[center]|word-line[start]|char-word[end]",[37,18739,18741],{"id":18740},"edge-cases","Edge Cases",[42,18743,18744,18750,18753,18760,18763],{},[45,18745,18746,18747,18749],{},"Leading or trailing ",[60,18748,1128],{}," is ignored",[45,18751,18752],{},"Whitespace around tokens is trimmed",[45,18754,18755,18756,2712,18758],{},"A token with empty ",[60,18757,16969],{},[60,18759,326],{},[45,18761,18762],{},"Unrecognized token names are skipped with a console warning",[45,18764,18765,18766,18768,18769,18771],{},"The parser accepts ",[60,18767,2869],{}," as a flag inside ",[60,18770,16969],{},", but it has no public effect in the current runtime",[37,18773,18775],{"id":18774},"related","Related",[42,18777,18778,18783,18788,18793],{},[45,18779,18780,18781],{},"Base module page: ",[133,18782,5290],{"href":5289},[45,18784,18785,18786],{},"DOM output: ",[133,18787,17411],{"href":16822},[45,18789,18790,18791],{},"Inline HTML: ",[133,18792,17645],{"href":16824},[45,18794,18795,18796],{},"Fit behavior: ",[133,18797,17926],{"href":16823},[410,18799,18800],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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);}",{"title":230,"searchDepth":258,"depth":258,"links":18802},[18803,18804,18805,18809,18810,18811,18812,18813],{"id":18133,"depth":258,"text":18134},{"id":18171,"depth":258,"text":18172},{"id":18335,"depth":258,"text":18336,"children":18806},[18807,18808],{"id":18428,"depth":265,"text":18429},{"id":18493,"depth":265,"text":18494},{"id":18623,"depth":258,"text":18624},{"id":17094,"depth":258,"text":17094},{"id":18673,"depth":258,"text":18674},{"id":18740,"depth":258,"text":18741},{"id":18774,"depth":258,"text":18775},{"path":16822,"title":17411,"description":18815,"kind":5369,"section":5187,"order":18816,"group":5282,"parentPath":5289,"status":5370,"integration":2706,"publicExport":261,"activation":16814,"package":5371,"aliases":18817,"attrs":18823,"events":18824,"cssVars":18825,"related":18826,"body":18827},"What wrappers, attributes, classes, text nodes, and CSS variables StringSplit actually writes.",212,[18818,18819,18820,18821,18822],"-s-line","-s-word","-s-char","data-split-content","kerning",[],[],[17319,17445,17497,17507,17343,17553,17591,17601,17611],[5289,16824,8037],{"type":22,"value":18828,"toc":19589},[18829,18832,18838,18842,18902,18905,18908,18951,18956,18977,18981,18986,19091,19096,19166,19171,19260,19264,19354,19358,19368,19380,19384,19387,19393,19405,19409,19437,19441,19447,19452,19458,19461,19471,19477,19484,19504,19507,19510,19523,19526,19530,19542,19562,19567,19569],[25,18830,17411],{"id":18831},"dom-output",[30,18833,18834,18835,18837],{},"The public contract of ",[60,18836,5290],{}," is the rebuilt DOM tree. This page documents every wrapper, class, attribute, and CSS variable the module produces.",[37,18839,18841],{"id":18840},"generated-wrappers","Generated Wrappers",[2221,18843,18844,18854],{},[2224,18845,18846],{},[2227,18847,18848,18851],{},[2230,18849,18850],{},"Wrapper",[2230,18852,18853],{},"Created when",[2240,18855,18856,18872,18887],{},[2227,18857,18858,18863],{},[2245,18859,18860],{},[60,18861,18862],{},"span.-s-line",[2245,18864,18865,1833,18867,2703,18869,18871],{},[60,18866,236],{},[60,18868,17042],{},[60,18870,17068],{}," is present",[2227,18873,18874,18879],{},[2245,18875,18876],{},[60,18877,18878],{},"span.-s-word",[2245,18880,18881,1833,18883,2703,18885,18871],{},[60,18882,17030],{},[60,18884,17042],{},[60,18886,17081],{},[2227,18888,18889,18894],{},[2245,18890,18891],{},[60,18892,18893],{},"span.-s-char",[2245,18895,18896,1833,18898,2703,18900,18871],{},[60,18897,17056],{},[60,18899,17068],{},[60,18901,17081],{},[37,18903,3088],{"id":18904},"source-element",[30,18906,18907],{},"After splitting, the source element receives:",[2221,18909,18910,18919],{},[2224,18911,18912],{},[2227,18913,18914,18917],{},[2230,18915,18916],{},"Output",[2230,18918,16910],{},[2240,18920,18921,18932,18941],{},[2227,18922,18923,18929],{},[2245,18924,18925,18926],{},"class ",[60,18927,18928],{},"-splitted",[2245,18930,18931],{},"Marks that the element has been processed",[2227,18933,18934,18938],{},[2245,18935,18936],{},[60,18937,18039],{},[2245,18939,18940],{},"Original text content for accessibility",[2227,18942,18943,18948],{},[2245,18944,18945],{},[60,18946,18947],{},"string-split-original",[2245,18949,18950],{},"Cached original HTML (runtime-owned, do not modify)",[30,18952,4232,18953,18955],{},[60,18954,16938],{}," fires later:",[2221,18957,18958,18966],{},[2224,18959,18960],{},[2227,18961,18962,18964],{},[2230,18963,18916],{},[2230,18965,16910],{},[2240,18967,18968],{},[2227,18969,18970,18974],{},[2245,18971,18925,18972],{},[60,18973,18020],{},[2245,18975,18976],{},"Marks that the original HTML was restored",[37,18978,18980],{"id":18979},"css-variables-on-wrappers","CSS Variables On Wrappers",[174,18982,18984],{"id":18983},"s-line",[60,18985,17022],{},[2221,18987,18988,18999],{},[2224,18989,18990],{},[2227,18991,18992,18994,18997],{},[2230,18993,17425],{},[2230,18995,18996],{},"Always",[2230,18998,16910],{},[2240,19000,19001,19012,19022,19037,19051,19064,19077],{},[2227,19002,19003,19007,19010],{},[2245,19004,19005],{},[60,19006,17319],{},[2245,19008,19009],{},"yes",[2245,19011,17438],{},[2227,19013,19014,19018,19020],{},[2245,19015,19016],{},[60,19017,17445],{},[2245,19019,19009],{},[2245,19021,17448],{},[2227,19023,19024,19028,19034],{},[2245,19025,19026],{},[60,19027,17455],{},[2245,19029,19030,19031,19033],{},"when ",[60,19032,17094],{}," + line split",[2245,19035,19036],{},"Computed font size to fill container width",[2227,19038,19039,19043,19048],{},[2245,19040,19041],{},[60,19042,17464],{},[2245,19044,19030,19045],{},[60,19046,19047],{},"line[start]",[2245,19049,19050],{},"Index from the beginning",[2227,19052,19053,19057,19061],{},[2245,19054,19055],{},[60,19056,17467],{},[2245,19058,19030,19059],{},[60,19060,18451],{},[2245,19062,19063],{},"Distance from center",[2227,19065,19066,19070,19075],{},[2245,19067,19068],{},[60,19069,17470],{},[2245,19071,19030,19072],{},[60,19073,19074],{},"line[end]",[2245,19076,18403],{},[2227,19078,19079,19083,19088],{},[2245,19080,19081],{},[60,19082,17473],{},[2245,19084,19030,19085],{},[60,19086,19087],{},"line[random()]",[2245,19089,19090],{},"Random value",[174,19092,19094],{"id":19093},"s-word",[60,19095,17035],{},[2221,19097,19098,19108],{},[2224,19099,19100],{},[2227,19101,19102,19104,19106],{},[2230,19103,17425],{},[2230,19105,18996],{},[2230,19107,16910],{},[2240,19109,19110,19120,19130,19143,19156],{},[2227,19111,19112,19116,19118],{},[2245,19113,19114],{},[60,19115,17497],{},[2245,19117,19009],{},[2245,19119,17500],{},[2227,19121,19122,19126,19128],{},[2245,19123,19124],{},[60,19125,17507],{},[2245,19127,19009],{},[2245,19129,17510],{},[2227,19131,19132,19136,19140],{},[2245,19133,19134],{},[60,19135,17516],{},[2245,19137,19030,19138],{},[60,19139,18727],{},[2245,19141,19142],{},"Global word index",[2227,19144,19145,19149,19153],{},[2245,19146,19147],{},[60,19148,17519],{},[2245,19150,19030,19151],{},[60,19152,18462],{},[2245,19154,19155],{},"Per-line word index",[2227,19157,19158,19161,19163],{},[2245,19159,19160],{},"etc.",[2245,19162],{},[2245,19164,19165],{},"Other alignment combinations follow the same pattern",[174,19167,19169],{"id":19168},"s-char",[60,19170,17061],{},[2221,19172,19173,19183],{},[2224,19174,19175],{},[2227,19176,19177,19179,19181],{},[2230,19178,17425],{},[2230,19180,18996],{},[2230,19182,16910],{},[2240,19184,19185,19195,19210,19224,19238,19252],{},[2227,19186,19187,19191,19193],{},[2245,19188,19189],{},[60,19190,17343],{},[2245,19192,19009],{},[2245,19194,17546],{},[2227,19196,19197,19201,19204],{},[2245,19198,19199],{},[60,19200,17553],{},[2245,19202,19203],{},"when needed",[2245,19205,19206,19207,3336],{},"Kerning delta with the next character (also applied as ",[60,19208,19209],{},"margin-right",[2227,19211,19212,19216,19221],{},[2245,19213,19214],{},[60,19215,17561],{},[2245,19217,19030,19218],{},[60,19219,19220],{},"char[start]",[2245,19222,19223],{},"Global char index",[2227,19225,19226,19230,19235],{},[2245,19227,19228],{},[60,19229,17564],{},[2245,19231,19030,19232],{},[60,19233,19234],{},"char-word[start]",[2245,19236,19237],{},"Per-word char index",[2227,19239,19240,19244,19249],{},[2245,19241,19242],{},[60,19243,17567],{},[2245,19245,19030,19246],{},[60,19247,19248],{},"char-line[center]",[2245,19250,19251],{},"Per-line distance from center",[2227,19253,19254,19256,19258],{},[2245,19255,19160],{},[2245,19257],{},[2245,19259,19165],{},[174,19261,19263],{"id":19262},"source-element-variables","Source Element Variables",[2221,19265,19266,19276],{},[2224,19267,19268],{},[2227,19269,19270,19272,19274],{},[2230,19271,17425],{},[2230,19273,17582],{},[2230,19275,16910],{},[2240,19277,19278,19290,19302,19314,19328,19341],{},[2227,19279,19280,19284,19287],{},[2245,19281,19282],{},[60,19283,17591],{},[2245,19285,19286],{},"char wrappers active",[2245,19288,19289],{},"Total char count",[2227,19291,19292,19296,19299],{},[2245,19293,19294],{},[60,19295,17601],{},[2245,19297,19298],{},"word wrappers active",[2245,19300,19301],{},"Total word count",[2227,19303,19304,19308,19311],{},[2245,19305,19306],{},[60,19307,17611],{},[2245,19309,19310],{},"line wrappers active",[2245,19312,19313],{},"Total line count",[2227,19315,19316,19320,19325],{},[2245,19317,19318],{},[60,19319,17455],{},[2245,19321,19322,19324],{},[60,19323,17094],{}," without line split",[2245,19326,19327],{},"Computed font size for the widest line",[2227,19329,19330,19334,19338],{},[2245,19331,19332],{},[60,19333,17630],{},[2245,19335,19336,19324],{},[60,19337,17094],{},[2245,19339,19340],{},"Viewport height / text height ratio",[2227,19342,19343,19347,19351],{},[2245,19344,19345],{},[60,19346,17639],{},[2245,19348,19349,19324],{},[60,19350,17094],{},[2245,19352,19353],{},"Container width / text height ratio",[37,19355,19357],{"id":19356},"wrapper-attributes","Wrapper Attributes",[30,19359,19360,19361,1833,19363,1833,19365,19367],{},"Every generated wrapper (",[60,19362,17022],{},[60,19364,17035],{},[60,19366,17061],{},") receives:",[42,19369,19370,19375],{},[45,19371,19372,19374],{},[60,19373,18033],{}," — so screen readers skip individual wrappers",[45,19376,19377,19379],{},[60,19378,18821],{}," — the text content of that wrapper",[37,19381,19383],{"id":19382},"nesting-order","Nesting Order",[30,19385,19386],{},"When multiple wrapper levels are active, nesting follows this order:",[225,19388,19391],{"className":19389,"code":19390,"language":18140},[18138],".-s-line\n  └─ inline elements (em, strong, a, span...)\n       └─ .-s-word\n            └─ .-s-char\n",[60,19392,19390],{"__ignoreMap":230},[30,19394,19395,19396,1934,19398,19400,19401,19404],{},"Inline HTML elements from the source (like ",[60,19397,17705],{},[60,19399,17711],{},") are ",[1929,19402,19403],{},"reconstructed between"," line and word wrappers. They keep their original tag and attributes so your CSS selectors continue to work.",[37,19406,19408],{"id":19407},"spaces-and-line-breaks","Spaces And Line Breaks",[42,19410,19411,19421,19428,19434],{},[45,19412,19413,19414,19417,19418,19420],{},"Spaces and tabs are ",[1929,19415,19416],{},"not"," wrapped in ",[60,19419,17061],{}," spans",[45,19422,19423,19424,19427],{},"Inter-word spacing uses ",[60,19425,19426],{},"\\u00a0"," (non-breaking space) text nodes between words",[45,19429,19430,19431,19433],{},"When line wrappers are active, ",[60,19432,17733],{}," is inserted between lines",[45,19435,19436],{},"Char-based animation only applies to visible characters, not spaces",[37,19438,19440],{"id":19439},"helper-classes","Helper Classes",[174,19442,19444],{"id":19443},"before-element",[60,19445,19446],{},"-before-element",[30,19448,19449,19450,106],{},"Applied to a wrapper whose content sits immediately before an inline element like ",[60,19451,17721],{},[174,19453,19455],{"id":19454},"after-element",[60,19456,19457],{},"-after-element",[30,19459,19460],{},"Applied to a wrapper whose content sits immediately after an inline element.",[30,19462,19463,19464,1833,19466,2703,19468,19470],{},"These classes appear on the relevant ",[60,19465,17022],{},[60,19467,17035],{},[60,19469,17061],{}," wrapper depending on which levels are active. Use them to adjust spacing or animation timing near embedded elements.",[174,19472,19474,19476],{"id":19473},"split-class-classes",[60,19475,17742],{}," Classes",[30,19478,19479,19480,19483],{},"When you use ",[60,19481,19482],{},"\u003Csplit-class class=\"is-accent\">...\u003C/split-class>"," in the source, those classes appear on the generated wrappers:",[42,19485,19486,19499],{},[45,19487,19488,19489,19491,19492,19495,19496,19498],{},"If every char in a word has the same ",[60,19490,17742],{},", the classes are ",[1929,19493,19494],{},"hoisted"," to the ",[60,19497,17035],{}," wrapper",[45,19500,19501,19502,17023],{},"Otherwise, they appear on individual ",[60,19503,17061],{},[37,19505,19506],{"id":18822},"Kerning",[30,19508,19509],{},"When char wrappers are active, the runtime measures kerning between adjacent characters. If a meaningful kerning delta is detected, it writes:",[42,19511,19512,19517],{},[45,19513,19514,19516],{},[60,19515,17553],{}," CSS variable",[45,19518,19519,19522],{},[60,19520,19521],{},"margin-right: var(--kerning)"," inline style",[30,19524,19525],{},"This preserves the visual tightness/looseness of the original typeface after splitting characters into individual spans.",[37,19527,19529],{"id":19528},"opaque-elements","Opaque Elements",[30,19531,17718,19532,1833,19534,1833,19536,7048,19539,19541],{},[60,19533,17721],{},[60,19535,17724],{},[60,19537,19538],{},"\u003Cvideo>",[60,19540,17727],{}," inside the source are inserted into the output as-is:",[42,19543,19544,19554,19559],{},[45,19545,19546,19547,19549,19550,1934,19552,17023],{},"They do ",[1929,19548,19416],{}," get ",[60,19551,17035],{},[60,19553,17061],{},[45,19555,19546,19556,19558],{},[1929,19557,19416],{}," receive index variables",[45,19560,19561],{},"They do occupy a slot in the word/char index sequence — the next word after an image will have an incremented index",[30,19563,18667,19564,19566],{},[133,19565,17645],{"href":16824}," for the full list.",[37,19568,18775],{"id":18774},[42,19570,19571,19575,19580,19584],{},[45,19572,18780,19573],{},[133,19574,5290],{"href":5289},[45,19576,19577,19578],{},"Grammar: ",[133,19579,16960],{"href":16821},[45,19581,18790,19582],{},[133,19583,17645],{"href":16824},[45,19585,19586,19587],{},"Fit variables: ",[133,19588,17926],{"href":16823},{"title":230,"searchDepth":258,"depth":258,"links":19590},[19591,19592,19593,19599,19600,19601,19602,19608,19609,19610],{"id":18840,"depth":258,"text":18841},{"id":18904,"depth":258,"text":3088},{"id":18979,"depth":258,"text":18980,"children":19594},[19595,19596,19597,19598],{"id":18983,"depth":265,"text":17022},{"id":19093,"depth":265,"text":17035},{"id":19168,"depth":265,"text":17061},{"id":19262,"depth":265,"text":19263},{"id":19356,"depth":258,"text":19357},{"id":19382,"depth":258,"text":19383},{"id":19407,"depth":258,"text":19408},{"id":19439,"depth":258,"text":19440,"children":19603},[19604,19605,19606],{"id":19443,"depth":265,"text":19446},{"id":19454,"depth":265,"text":19457},{"id":19473,"depth":265,"text":19607},"split-class Classes",{"id":18822,"depth":258,"text":19506},{"id":19528,"depth":258,"text":19529},{"id":18774,"depth":258,"text":18775},{"path":16823,"title":17926,"description":19612,"kind":5369,"section":5187,"order":19613,"group":5282,"parentPath":5289,"status":5370,"integration":2706,"publicExport":261,"activation":16814,"package":5371,"aliases":19614,"attrs":19616,"events":19617,"cssVars":19618,"related":19619,"body":19620},"How fit mode measures text, when split DOM is rebuilt, and what happens on width changes and restore-after.",213,[17094,17958,19615],"onResizeWidth",[],[],[17455,17630,17639],[5289,16821,4602],{"type":22,"value":19621,"toc":20346},[19622,19625,19630,19632,19662,19705,19708,19712,19725,19741,19789,20024,20049,20053,20059,20098,20129,20170,20174,20189,20192,20196,20199,20207,20214,20218,20221,20232,20235,20237,20240,20253,20256,20258,20296,20302,20305,20309,20323,20325,20343],[25,19623,17926],{"id":19624},"fit-and-rebuild",[30,19626,19627,19629],{},[60,19628,17094],{}," scales text so it fills the available container width. It produces CSS variables you apply to control the font size.",[37,19631,5011],{"id":5010},[225,19633,19635],{"className":338,"code":19634,"language":340,"meta":230,"style":230},"\u003Ch1 string=\"split\" string-split=\"line[start]|fit\">Big Headline Text\u003C/h1>\n",[60,19636,19637],{"__ignoreMap":230},[234,19638,19639,19641,19643,19645,19647,19649,19651,19653,19655,19658,19660],{"class":236,"line":237},[234,19640,347],{"class":244},[234,19642,25],{"class":350},[234,19644,354],{"class":281},[234,19646,357],{"class":244},[234,19648,17666],{"class":251},[234,19650,17669],{"class":281},[234,19652,357],{"class":244},[234,19654,17850],{"class":251},[234,19656,19657],{"class":244},">Big Headline Text\u003C/",[234,19659,25],{"class":350},[234,19661,376],{"class":244},[225,19663,19665],{"className":5857,"code":19664,"language":5859,"meta":230,"style":230},"h1 .-s-line {\n  font-size: calc(var(--fit-font-size) * 1px);\n}\n",[60,19666,19667,19675,19701],{"__ignoreMap":230},[234,19668,19669,19671,19673],{"class":236,"line":237},[234,19670,25],{"class":350},[234,19672,17191],{"class":281},[234,19674,909],{"class":244},[234,19676,19677,19679,19681,19683,19685,19687,19689,19691,19693,19695,19697,19699],{"class":236,"line":258},[234,19678,9886],{"class":271},[234,19680,1443],{"class":244},[234,19682,1820],{"class":271},[234,19684,329],{"class":244},[234,19686,1825],{"class":271},[234,19688,329],{"class":244},[234,19690,17455],{"class":899},[234,19692,903],{"class":244},[234,19694,1841],{"class":240},[234,19696,1844],{"class":271},[234,19698,1789],{"class":240},[234,19700,335],{"class":244},[234,19702,19703],{"class":236,"line":265},[234,19704,1143],{"class":244},[30,19706,19707],{},"The module computes a font size that makes the text fill the container content width and writes it as a CSS variable. You decide how to apply it.",[37,19709,19711],{"id":19710},"behavior-with-line-split","Behavior With Line Split",[30,19713,19714,19715,1833,19717,2703,19719,19721,19722,1114],{},"When the config includes a line-level token (",[60,19716,236],{},[60,19718,17042],{},[60,19720,17068],{},"), fit computes a ",[1929,19723,19724],{},"separate value per line",[42,19726,19727,19735,19738],{},[45,19728,19729,19731,19732,19734],{},[60,19730,17455],{}," is set on each ",[60,19733,17022],{}," span",[45,19736,19737],{},"Each line can fill the width independently",[45,19739,19740],{},"Shorter lines get a larger font size, longer lines get a smaller one",[225,19742,19744],{"className":338,"code":19743,"language":340,"meta":230,"style":230},"\u003Ch1 class=\"fit-demo\" string=\"split\" string-split=\"word-line[start]|fit\">Short\u003Cbr />Medium length\u003Cbr />The full wide headline\u003C/h1>\n",[60,19745,19746],{"__ignoreMap":230},[234,19747,19748,19750,19752,19754,19756,19759,19761,19763,19765,19767,19769,19772,19775,19777,19780,19782,19785,19787],{"class":236,"line":237},[234,19749,347],{"class":244},[234,19751,25],{"class":350},[234,19753,1297],{"class":281},[234,19755,357],{"class":244},[234,19757,19758],{"class":251},"\"fit-demo\"",[234,19760,354],{"class":281},[234,19762,357],{"class":244},[234,19764,17666],{"class":251},[234,19766,17669],{"class":281},[234,19768,357],{"class":244},[234,19770,19771],{"class":251},"\"word-line[start]|fit\"",[234,19773,19774],{"class":244},">Short\u003C",[234,19776,2045],{"class":350},[234,19778,19779],{"class":244}," />Medium length\u003C",[234,19781,2045],{"class":350},[234,19783,19784],{"class":244}," />The full wide headline\u003C/",[234,19786,25],{"class":350},[234,19788,376],{"class":244},[225,19790,19792],{"className":5857,"code":19791,"language":5859,"meta":230,"style":230},"/* .-s-line clips its children and holds the per-line font size */\n.fit-demo .-s-line {\n  display: block;\n  overflow: hidden;\n  font-size: calc(var(--fit-font-size, 10) * 1px);\n}\n\n/* .-s-word inherits --line-index from its parent .-s-line */\n.fit-demo .-s-word {\n  display: inline-block;\n  transform: translateY(110%);\n  animation: lineReveal 0.75s cubic-bezier(0.2, 0, 0, 1) forwards;\n  animation-delay: calc(var(--line-index, 0) * 0.14s + 0.15s);\n}\n\n@keyframes lineReveal {\n  to {\n    transform: translateY(0);\n  }\n}\n",[60,19793,19794,19799,19808,19818,19828,19858,19862,19866,19871,19880,19890,19907,19942,19979,19983,19987,19996,20002,20016,20020],{"__ignoreMap":230},[234,19795,19796],{"class":236,"line":237},[234,19797,19798],{"class":864},"/* .-s-line clips its children and holds the per-line font size */\n",[234,19800,19801,19804,19806],{"class":236,"line":258},[234,19802,19803],{"class":281},".fit-demo",[234,19805,17191],{"class":281},[234,19807,909],{"class":244},[234,19809,19810,19812,19814,19816],{"class":236,"line":265},[234,19811,1677],{"class":271},[234,19813,1443],{"class":244},[234,19815,15595],{"class":271},[234,19817,255],{"class":244},[234,19819,19820,19822,19824,19826],{"class":236,"line":288},[234,19821,7610],{"class":271},[234,19823,1443],{"class":244},[234,19825,7615],{"class":271},[234,19827,255],{"class":244},[234,19829,19830,19832,19834,19836,19838,19840,19842,19844,19846,19848,19850,19852,19854,19856],{"class":236,"line":293},[234,19831,9886],{"class":271},[234,19833,1443],{"class":244},[234,19835,1820],{"class":271},[234,19837,329],{"class":244},[234,19839,1825],{"class":271},[234,19841,329],{"class":244},[234,19843,17455],{"class":899},[234,19845,1833],{"class":244},[234,19847,14727],{"class":271},[234,19849,903],{"class":244},[234,19851,1841],{"class":240},[234,19853,1844],{"class":271},[234,19855,1789],{"class":240},[234,19857,335],{"class":244},[234,19859,19860],{"class":236,"line":305},[234,19861,1143],{"class":244},[234,19863,19864],{"class":236,"line":321},[234,19865,262],{"emptyLinePlaceholder":261},[234,19867,19868],{"class":236,"line":946},[234,19869,19870],{"class":864},"/* .-s-word inherits --line-index from its parent .-s-line */\n",[234,19872,19873,19875,19878],{"class":236,"line":955},[234,19874,19803],{"class":281},[234,19876,19877],{"class":281}," .-s-word",[234,19879,909],{"class":244},[234,19881,19882,19884,19886,19888],{"class":236,"line":11},[234,19883,1677],{"class":271},[234,19885,1443],{"class":244},[234,19887,17242],{"class":271},[234,19889,255],{"class":244},[234,19891,19892,19894,19896,19898,19900,19903,19905],{"class":236,"line":980},[234,19893,1810],{"class":271},[234,19895,1443],{"class":244},[234,19897,17253],{"class":271},[234,19899,329],{"class":244},[234,19901,19902],{"class":271},"110",[234,19904,3403],{"class":240},[234,19906,335],{"class":244},[234,19908,19909,19911,19914,19916,19918,19920,19922,19924,19926,19928,19930,19932,19934,19936,19938,19940],{"class":236,"line":994},[234,19910,9850],{"class":271},[234,19912,19913],{"class":244},": lineReveal ",[234,19915,2527],{"class":271},[234,19917,9858],{"class":240},[234,19919,17275],{"class":271},[234,19921,329],{"class":244},[234,19923,7131],{"class":271},[234,19925,1833],{"class":244},[234,19927,1836],{"class":271},[234,19929,1833],{"class":244},[234,19931,1836],{"class":271},[234,19933,1833],{"class":244},[234,19935,1754],{"class":271},[234,19937,903],{"class":244},[234,19939,17296],{"class":271},[234,19941,255],{"class":244},[234,19943,19944,19946,19948,19950,19952,19954,19956,19958,19960,19962,19964,19966,19969,19971,19973,19975,19977],{"class":236,"line":1000},[234,19945,17303],{"class":271},[234,19947,1443],{"class":244},[234,19949,1820],{"class":271},[234,19951,329],{"class":244},[234,19953,1825],{"class":271},[234,19955,329],{"class":244},[234,19957,17319],{"class":899},[234,19959,1833],{"class":244},[234,19961,1836],{"class":271},[234,19963,903],{"class":244},[234,19965,1841],{"class":240},[234,19967,19968],{"class":271}," 0.14",[234,19970,9858],{"class":240},[234,19972,17335],{"class":240},[234,19974,17330],{"class":271},[234,19976,9858],{"class":240},[234,19978,335],{"class":244},[234,19980,19981],{"class":236,"line":1005},[234,19982,1143],{"class":244},[234,19984,19985],{"class":236,"line":1013},[234,19986,262],{"emptyLinePlaceholder":261},[234,19988,19989,19991,19994],{"class":236,"line":1019},[234,19990,10152],{"class":240},[234,19992,19993],{"class":899}," lineReveal",[234,19995,909],{"class":244},[234,19997,19998,20000],{"class":236,"line":1025},[234,19999,10198],{"class":281},[234,20001,909],{"class":244},[234,20003,20004,20006,20008,20010,20012,20014],{"class":236,"line":1031},[234,20005,10171],{"class":271},[234,20007,1443],{"class":244},[234,20009,17253],{"class":271},[234,20011,329],{"class":244},[234,20013,1836],{"class":271},[234,20015,335],{"class":244},[234,20017,20018],{"class":236,"line":1037},[234,20019,1138],{"class":244},[234,20021,20022],{"class":236,"line":427},[234,20023,1143],{"class":244},[30,20025,20026,20028,20029,137,20031,20033,20034,20036,20037,20039,20040,20042,20043,20045,20046,20048],{},[60,20027,17042],{}," creates both ",[60,20030,17022],{},[60,20032,17035],{}," wrappers. The ",[60,20035,17022],{}," acts as a clip mask while ",[60,20038,17035],{}," slides up through it. Because CSS custom properties inherit down the tree, ",[60,20041,17319],{}," set on ",[60,20044,17022],{}," is available inside every ",[60,20047,17035],{}," descendant — no JavaScript needed to stagger per line.",[37,20050,20052],{"id":20051},"behavior-without-line-split","Behavior Without Line Split",[30,20054,20055,20056,1114],{},"When there is no line-level token, fit uses the widest line and writes values on the ",[1929,20057,20058],{},"source element",[2221,20060,20061,20069],{},[2224,20062,20063],{},[2227,20064,20065,20067],{},[2230,20066,17425],{},[2230,20068,16910],{},[2240,20070,20071,20080,20089],{},[2227,20072,20073,20077],{},[2245,20074,20075],{},[60,20076,17455],{},[2245,20078,20079],{},"Font size that makes the widest line fill the container",[2227,20081,20082,20086],{},[2245,20083,20084],{},[60,20085,17630],{},[2245,20087,20088],{},"Ratio of viewport height to text height at fit size",[2227,20090,20091,20095],{},[2245,20092,20093],{},[60,20094,17639],{},[2245,20096,20097],{},"Ratio of container width to text height at fit size",[225,20099,20101],{"className":338,"code":20100,"language":340,"meta":230,"style":230},"\u003Ch1 string=\"split\" string-split=\"char[start]|fit\">Typography\u003C/h1>\n",[60,20102,20103],{"__ignoreMap":230},[234,20104,20105,20107,20109,20111,20113,20115,20117,20119,20122,20125,20127],{"class":236,"line":237},[234,20106,347],{"class":244},[234,20108,25],{"class":350},[234,20110,354],{"class":281},[234,20112,357],{"class":244},[234,20114,17666],{"class":251},[234,20116,17669],{"class":281},[234,20118,357],{"class":244},[234,20120,20121],{"class":251},"\"char[start]|fit\"",[234,20123,20124],{"class":244},">Typography\u003C/",[234,20126,25],{"class":350},[234,20128,376],{"class":244},[225,20130,20132],{"className":5857,"code":20131,"language":5859,"meta":230,"style":230},"h1 {\n  font-size: calc(var(--fit-font-size) * 1px);\n}\n",[60,20133,20134,20140,20166],{"__ignoreMap":230},[234,20135,20136,20138],{"class":236,"line":237},[234,20137,25],{"class":350},[234,20139,909],{"class":244},[234,20141,20142,20144,20146,20148,20150,20152,20154,20156,20158,20160,20162,20164],{"class":236,"line":258},[234,20143,9886],{"class":271},[234,20145,1443],{"class":244},[234,20147,1820],{"class":271},[234,20149,329],{"class":244},[234,20151,1825],{"class":271},[234,20153,329],{"class":244},[234,20155,17455],{"class":899},[234,20157,903],{"class":244},[234,20159,1841],{"class":240},[234,20161,1844],{"class":271},[234,20163,1789],{"class":240},[234,20165,335],{"class":244},[234,20167,20168],{"class":236,"line":265},[234,20169,1143],{"class":244},[37,20171,20173],{"id":20172},"char-split-and-spaces","Char Split And Spaces",[30,20175,20176,20177,1833,20179,2703,20181,20183,20184,19417,20186,20188],{},"When char wrappers are active (",[60,20178,17056],{},[60,20180,17068],{},[60,20182,17081],{},"), inter-word spaces are ",[1929,20185,19416],{},[60,20187,17061],{}," spans. They stay as regular text nodes and do not scale with font-size.",[30,20190,20191],{},"The fit calculation accounts for this automatically — scalable character width and non-scalable space width are handled separately. This is why fit with char splits produces accurate results even with multi-word lines.",[37,20193,20195],{"id":20194},"accuracy","Accuracy",[30,20197,20198],{},"The module performs a two-pass measurement:",[99,20200,20201,20204],{},[45,20202,20203],{},"Compute a provisional font size from the text/container ratio",[45,20205,20206],{},"Render at that size and refine based on the actual result",[30,20208,20209,20210,20213],{},"This handles kerning, sub-pixel rendering, and other browser-specific effects. The final result may deviate by up to 1px from mathematically perfect fill due to ",[60,20211,20212],{},"Math.floor()"," rounding.",[37,20215,20217],{"id":20216},"rebuild-timing","Rebuild Timing",[30,20219,20220],{},"The split DOM is rebuilt:",[42,20222,20223,20226,20229],{},[45,20224,20225],{},"on initial connection",[45,20227,20228],{},"on desktop width resize",[45,20230,20231],{},"on reconnect",[30,20233,20234],{},"Each rebuild starts from the cached original HTML, so the result is always clean.",[174,20236,17952],{"id":17951},[30,20238,20239],{},"Mobile rebuilds are disabled by default:",[42,20241,20242,20248],{},[45,20243,20244,20245,20247],{},"Width changes on mobile do ",[1929,20246,19416],{}," trigger a rebuild",[45,20249,20250,20251,20247],{},"Height changes on mobile do ",[1929,20252,19416],{},[30,20254,20255],{},"If you need responsive fit on mobile, the initial render uses the viewport width at load time.",[37,20257,17959],{"id":17958},[225,20259,20261],{"className":338,"code":20260,"language":340,"meta":230,"style":230},"\u003Ch1 string=\"split\" string-split=\"line[start]|fit\" string-split-restore-after=\"3000\">Intro Text\u003C/h1>\n",[60,20262,20263],{"__ignoreMap":230},[234,20264,20265,20267,20269,20271,20273,20275,20277,20279,20281,20284,20286,20289,20292,20294],{"class":236,"line":237},[234,20266,347],{"class":244},[234,20268,25],{"class":350},[234,20270,354],{"class":281},[234,20272,357],{"class":244},[234,20274,17666],{"class":251},[234,20276,17669],{"class":281},[234,20278,357],{"class":244},[234,20280,17850],{"class":251},[234,20282,20283],{"class":281}," string-split-restore-after",[234,20285,357],{"class":244},[234,20287,20288],{"class":251},"\"3000\"",[234,20290,20291],{"class":244},">Intro Text\u003C/",[234,20293,25],{"class":350},[234,20295,376],{"class":244},[30,20297,20298,20299,20301],{},"After 3000ms, the module restores the original HTML and adds class ",[60,20300,18020],{},". The split DOM and fit variables are no longer available.",[30,20303,20304],{},"Use this for one-shot intro effects where the split is temporary.",[37,20306,20308],{"id":20307},"caveats","Caveats",[42,20310,20311,20314,20317],{},[45,20312,20313],{},"Fit is measurement-heavy — it requires multiple layout passes. Avoid applying it to large numbers of elements simultaneously.",[45,20315,20316],{},"The module uses the element's content width (excluding padding) as the target. If the element's width changes after initial render, a width resize triggers a recalculation.",[45,20318,20319,20320,20322],{},"If your animation depends on split wrappers always being present, do not combine fit with ",[60,20321,16938],{}," unless the one-shot behavior is intentional.",[37,20324,18775],{"id":18774},[42,20326,20327,20331,20335,20339],{},[45,20328,18780,20329],{},[133,20330,5290],{"href":5289},[45,20332,19577,20333],{},[133,20334,16960],{"href":16821},[45,20336,18785,20337],{},[133,20338,17411],{"href":16822},[45,20340,18790,20341],{},[133,20342,17645],{"href":16824},[410,20344,20345],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":230,"searchDepth":258,"depth":258,"links":20347},[20348,20349,20350,20351,20352,20353,20356,20357,20358],{"id":5010,"depth":258,"text":5011},{"id":19710,"depth":258,"text":19711},{"id":20051,"depth":258,"text":20052},{"id":20172,"depth":258,"text":20173},{"id":20194,"depth":258,"text":20195},{"id":20216,"depth":258,"text":20217,"children":20354},[20355],{"id":17951,"depth":265,"text":17952},{"id":17958,"depth":258,"text":17959},{"id":20307,"depth":258,"text":20308},{"id":18774,"depth":258,"text":18775},{"path":16824,"title":17645,"description":20360,"kind":5369,"section":5187,"order":19613,"group":5282,"parentPath":5289,"status":5370,"integration":2706,"publicExport":261,"activation":16814,"package":5371,"aliases":20361,"attrs":20368,"events":20369,"cssVars":20370,"related":20371,"body":20372},"What HTML elements are supported inside StringSplit, how inline markup is preserved, and how special elements like br, img, and split-class behave.",[17742,19446,19457,20362,20363,20364,20365,20366,20367],"inline tokens","opaque","inline elements","img in split","em in split","br in split",[],[],[],[5289,16822,16821],{"type":22,"value":20373,"toc":21357},[20374,20376,20381,20385,20388,20392,20433,20440,20686,20698,20701,20736,20744,20748,20751,20754,20760,20911,20914,20937,20943,20951,20995,21003,21007,21012,21062,21069,21073,21088,21092,21097,21146,21163,21171,21174,21186,21196,21225,21229,21232,21279,21289,21291,21295,21305,21309,21312,21316,21333,21335,21354],[25,20375,17645],{"id":17644},[30,20377,20378,20380],{},[60,20379,5290],{}," does not require plain text. You can use inline HTML inside split elements and the module will preserve your markup in the rebuilt DOM.",[37,20382,20384],{"id":20383},"how-inline-elements-are-handled","How Inline Elements Are Handled",[30,20386,20387],{},"The module classifies every HTML element inside the source into one of three categories:",[174,20389,20391],{"id":20390},"inline-wrappers-preserved-with-their-children-split","Inline wrappers — preserved with their children split",[30,20393,17718,20394,1833,20396,1833,20398,1833,20400,1833,20402,1833,20405,1833,20408,1833,20411,1833,20414,1833,20417,1833,20420,1833,20423,1833,20426,1833,20429,20432],{},[60,20395,17705],{},[60,20397,17708],{},[60,20399,17711],{},[60,20401,17714],{},[60,20403,20404],{},"\u003Cb>",[60,20406,20407],{},"\u003Ci>",[60,20409,20410],{},"\u003Cu>",[60,20412,20413],{},"\u003Cmark>",[60,20415,20416],{},"\u003Ccode>",[60,20418,20419],{},"\u003Csmall>",[60,20421,20422],{},"\u003Cdel>",[60,20424,20425],{},"\u003Cins>",[60,20427,20428],{},"\u003Csub>",[60,20430,20431],{},"\u003Csup>",", and any other element that is not in the opaque list (see below) and has children.",[30,20434,20435,20436,20439],{},"These elements are ",[1929,20437,20438],{},"reconstructed"," in the output DOM with their original tag and all attributes. Their children are split normally into words and characters.",[225,20441,20443],{"className":338,"code":20442,"language":340,"meta":230,"style":230},"\u003C!-- source -->\n\u003Cp string=\"split\" string-split=\"word\">\n  Text in \u003Cem>emphasis\u003C/em> and \u003Cstrong class=\"bold\">bold\u003C/strong>.\n\u003C/p>\n\n\u003C!-- output (simplified) -->\n\u003Cp class=\"-splitted\">\n  \u003Cspan class=\"-s-word\">Text\u003C/span>&nbsp;\n  \u003Cspan class=\"-s-word\">in\u003C/span>&nbsp;\n  \u003Cem>\n    \u003Cspan class=\"-s-word\">emphasis\u003C/span>&nbsp;\n  \u003C/em>\n  \u003Cspan class=\"-s-word\">and\u003C/span>&nbsp;\n  \u003Cstrong class=\"bold\">\n    \u003Cspan class=\"-s-word\">bold.\u003C/span>\n  \u003C/strong>\n\u003C/p>\n",[60,20444,20445,20450,20471,20503,20511,20515,20520,20535,20559,20580,20588,20608,20616,20637,20651,20670,20678],{"__ignoreMap":230},[234,20446,20447],{"class":236,"line":237},[234,20448,20449],{"class":864},"\u003C!-- source -->\n",[234,20451,20452,20454,20456,20458,20460,20462,20464,20466,20469],{"class":236,"line":258},[234,20453,347],{"class":244},[234,20455,30],{"class":350},[234,20457,354],{"class":281},[234,20459,357],{"class":244},[234,20461,17666],{"class":251},[234,20463,17669],{"class":281},[234,20465,357],{"class":244},[234,20467,20468],{"class":251},"\"word\"",[234,20470,376],{"class":244},[234,20472,20473,20476,20478,20481,20483,20486,20488,20490,20492,20495,20498,20500],{"class":236,"line":265},[234,20474,20475],{"class":244},"  Text in \u003C",[234,20477,3714],{"class":350},[234,20479,20480],{"class":244},">emphasis\u003C/",[234,20482,3714],{"class":350},[234,20484,20485],{"class":244},"> and \u003C",[234,20487,1929],{"class":350},[234,20489,1297],{"class":281},[234,20491,357],{"class":244},[234,20493,20494],{"class":251},"\"bold\"",[234,20496,20497],{"class":244},">bold\u003C/",[234,20499,1929],{"class":350},[234,20501,20502],{"class":244},">.\n",[234,20504,20505,20507,20509],{"class":236,"line":288},[234,20506,1402],{"class":244},[234,20508,30],{"class":350},[234,20510,376],{"class":244},[234,20512,20513],{"class":236,"line":293},[234,20514,262],{"emptyLinePlaceholder":261},[234,20516,20517],{"class":236,"line":305},[234,20518,20519],{"class":864},"\u003C!-- output (simplified) -->\n",[234,20521,20522,20524,20526,20528,20530,20533],{"class":236,"line":321},[234,20523,347],{"class":244},[234,20525,30],{"class":350},[234,20527,1297],{"class":281},[234,20529,357],{"class":244},[234,20531,20532],{"class":251},"\"-splitted\"",[234,20534,376],{"class":244},[234,20536,20537,20539,20541,20543,20545,20548,20551,20553,20556],{"class":236,"line":946},[234,20538,1292],{"class":244},[234,20540,234],{"class":350},[234,20542,1297],{"class":281},[234,20544,357],{"class":244},[234,20546,20547],{"class":251},"\"-s-word\"",[234,20549,20550],{"class":244},">Text\u003C/",[234,20552,234],{"class":350},[234,20554,20555],{"class":244},">",[234,20557,20558],{"class":271},"&nbsp;\n",[234,20560,20561,20563,20565,20567,20569,20571,20574,20576,20578],{"class":236,"line":955},[234,20562,1292],{"class":244},[234,20564,234],{"class":350},[234,20566,1297],{"class":281},[234,20568,357],{"class":244},[234,20570,20547],{"class":251},[234,20572,20573],{"class":244},">in\u003C/",[234,20575,234],{"class":350},[234,20577,20555],{"class":244},[234,20579,20558],{"class":271},[234,20581,20582,20584,20586],{"class":236,"line":11},[234,20583,1292],{"class":244},[234,20585,3714],{"class":350},[234,20587,376],{"class":244},[234,20589,20590,20592,20594,20596,20598,20600,20602,20604,20606],{"class":236,"line":980},[234,20591,1321],{"class":244},[234,20593,234],{"class":350},[234,20595,1297],{"class":281},[234,20597,357],{"class":244},[234,20599,20547],{"class":251},[234,20601,20480],{"class":244},[234,20603,234],{"class":350},[234,20605,20555],{"class":244},[234,20607,20558],{"class":271},[234,20609,20610,20612,20614],{"class":236,"line":994},[234,20611,1393],{"class":244},[234,20613,3714],{"class":350},[234,20615,376],{"class":244},[234,20617,20618,20620,20622,20624,20626,20628,20631,20633,20635],{"class":236,"line":1000},[234,20619,1292],{"class":244},[234,20621,234],{"class":350},[234,20623,1297],{"class":281},[234,20625,357],{"class":244},[234,20627,20547],{"class":251},[234,20629,20630],{"class":244},">and\u003C/",[234,20632,234],{"class":350},[234,20634,20555],{"class":244},[234,20636,20558],{"class":271},[234,20638,20639,20641,20643,20645,20647,20649],{"class":236,"line":1005},[234,20640,1292],{"class":244},[234,20642,1929],{"class":350},[234,20644,1297],{"class":281},[234,20646,357],{"class":244},[234,20648,20494],{"class":251},[234,20650,376],{"class":244},[234,20652,20653,20655,20657,20659,20661,20663,20666,20668],{"class":236,"line":1013},[234,20654,1321],{"class":244},[234,20656,234],{"class":350},[234,20658,1297],{"class":281},[234,20660,357],{"class":244},[234,20662,20547],{"class":251},[234,20664,20665],{"class":244},">bold.\u003C/",[234,20667,234],{"class":350},[234,20669,376],{"class":244},[234,20671,20672,20674,20676],{"class":236,"line":1019},[234,20673,1393],{"class":244},[234,20675,1929],{"class":350},[234,20677,376],{"class":244},[234,20679,20680,20682,20684],{"class":236,"line":1025},[234,20681,1402],{"class":244},[234,20683,30],{"class":350},[234,20685,376],{"class":244},[30,20687,20688,20689,1833,20691,2703,20694,20697],{},"Your CSS selectors like ",[60,20690,3714],{},[60,20692,20693],{},"strong.bold",[60,20695,20696],{},"a[href]"," continue to work because the element is recreated with the same tag and attributes.",[30,20699,20700],{},"Nesting is fully supported:",[225,20702,20704],{"className":338,"code":20703,"language":340,"meta":230,"style":230},"\u003Ca href=\"/link\">\u003Cstrong>click here\u003C/strong>\u003C/a>\n",[60,20705,20706],{"__ignoreMap":230},[234,20707,20708,20710,20712,20715,20717,20720,20723,20725,20728,20730,20732,20734],{"class":236,"line":237},[234,20709,347],{"class":244},[234,20711,133],{"class":350},[234,20713,20714],{"class":281}," href",[234,20716,357],{"class":244},[234,20718,20719],{"class":251},"\"/link\"",[234,20721,20722],{"class":244},">\u003C",[234,20724,1929],{"class":350},[234,20726,20727],{"class":244},">click here\u003C/",[234,20729,1929],{"class":350},[234,20731,371],{"class":244},[234,20733,133],{"class":350},[234,20735,376],{"class":244},[30,20737,20738,20739,137,20741,20743],{},"Both ",[60,20740,17711],{},[60,20742,17708],{}," are preserved in the output, wrapping the split word/char spans.",[174,20745,20747],{"id":20746},"opaque-elements-preserved-as-is-not-split","Opaque elements — preserved as-is, not split",[30,20749,20750],{},"These elements are inserted into the output untouched. Their content is not split into words or characters.",[30,20752,20753],{},"The full list:",[225,20755,20758],{"className":20756,"code":20757,"language":18140},[18138],"img, video, audio, canvas, iframe, object, svg,\ninput, textarea, select, button,\narea, base, col, embed, hr, link, meta, param,\nsource, track, wbr, picture, table\n",[60,20759,20757],{"__ignoreMap":230},[225,20761,20763],{"className":338,"code":20762,"language":340,"meta":230,"style":230},"\u003C!-- source -->\n\u003Cp string=\"split\" string-split=\"word\">\n  Check \u003Cimg src=\"icon.png\" alt=\"icon\" /> this.\n\u003C/p>\n\n\u003C!-- output (simplified) -->\n\u003Cp class=\"-splitted\">\n  \u003Cspan class=\"-s-word\">Check\u003C/span>&nbsp;\n  \u003Cimg src=\"icon.png\" alt=\"icon\" />\n  \u003Cspan class=\"-s-word\">this.\u003C/span>\n\u003C/p>\n",[60,20764,20765,20769,20789,20813,20821,20825,20829,20843,20864,20884,20903],{"__ignoreMap":230},[234,20766,20767],{"class":236,"line":237},[234,20768,20449],{"class":864},[234,20770,20771,20773,20775,20777,20779,20781,20783,20785,20787],{"class":236,"line":258},[234,20772,347],{"class":244},[234,20774,30],{"class":350},[234,20776,354],{"class":281},[234,20778,357],{"class":244},[234,20780,17666],{"class":251},[234,20782,17669],{"class":281},[234,20784,357],{"class":244},[234,20786,20468],{"class":251},[234,20788,376],{"class":244},[234,20790,20791,20794,20796,20798,20800,20803,20805,20807,20810],{"class":236,"line":265},[234,20792,20793],{"class":244},"  Check \u003C",[234,20795,3282],{"class":350},[234,20797,12316],{"class":281},[234,20799,357],{"class":244},[234,20801,20802],{"class":251},"\"icon.png\"",[234,20804,12324],{"class":281},[234,20806,357],{"class":244},[234,20808,20809],{"class":251},"\"icon\"",[234,20811,20812],{"class":244}," /> this.\n",[234,20814,20815,20817,20819],{"class":236,"line":288},[234,20816,1402],{"class":244},[234,20818,30],{"class":350},[234,20820,376],{"class":244},[234,20822,20823],{"class":236,"line":293},[234,20824,262],{"emptyLinePlaceholder":261},[234,20826,20827],{"class":236,"line":305},[234,20828,20519],{"class":864},[234,20830,20831,20833,20835,20837,20839,20841],{"class":236,"line":321},[234,20832,347],{"class":244},[234,20834,30],{"class":350},[234,20836,1297],{"class":281},[234,20838,357],{"class":244},[234,20840,20532],{"class":251},[234,20842,376],{"class":244},[234,20844,20845,20847,20849,20851,20853,20855,20858,20860,20862],{"class":236,"line":946},[234,20846,1292],{"class":244},[234,20848,234],{"class":350},[234,20850,1297],{"class":281},[234,20852,357],{"class":244},[234,20854,20547],{"class":251},[234,20856,20857],{"class":244},">Check\u003C/",[234,20859,234],{"class":350},[234,20861,20555],{"class":244},[234,20863,20558],{"class":271},[234,20865,20866,20868,20870,20872,20874,20876,20878,20880,20882],{"class":236,"line":955},[234,20867,1292],{"class":244},[234,20869,3282],{"class":350},[234,20871,12316],{"class":281},[234,20873,357],{"class":244},[234,20875,20802],{"class":251},[234,20877,12324],{"class":281},[234,20879,357],{"class":244},[234,20881,20809],{"class":251},[234,20883,12339],{"class":244},[234,20885,20886,20888,20890,20892,20894,20896,20899,20901],{"class":236,"line":11},[234,20887,1292],{"class":244},[234,20889,234],{"class":350},[234,20891,1297],{"class":281},[234,20893,357],{"class":244},[234,20895,20547],{"class":251},[234,20897,20898],{"class":244},">this.\u003C/",[234,20900,234],{"class":350},[234,20902,376],{"class":244},[234,20904,20905,20907,20909],{"class":236,"line":980},[234,20906,1402],{"class":244},[234,20908,30],{"class":350},[234,20910,376],{"class":244},[30,20912,20913],{},"Opaque elements:",[42,20915,20916,20919,20926,20929],{},[45,20917,20918],{},"keep all their attributes and content",[45,20920,20921,20922,1934,20924,17023],{},"do not receive ",[60,20923,17035],{},[60,20925,17061],{},[45,20927,20928],{},"do not receive CSS index variables",[45,20930,20931,20932,20934,20935],{},"occupy a slot in the index sequence — the next word after an ",[60,20933,17721],{}," has an incremented ",[60,20936,17497],{},[174,20938,20940,20942],{"id":20939},"br-line-break",[60,20941,17733],{}," — line break",[30,20944,20945,20947,20948,20950],{},[60,20946,17733],{}," forces a line break in the layout. Text before and after ",[60,20949,17733],{}," ends up on separate lines.",[225,20952,20954],{"className":338,"code":20953,"language":340,"meta":230,"style":230},"\u003Ch1 string=\"split\" string-split=\"line[start]|char-line[start]\">\n  Line One\u003Cbr />Line Two\n\u003C/h1>\n",[60,20955,20956,20977,20987],{"__ignoreMap":230},[234,20957,20958,20960,20962,20964,20966,20968,20970,20972,20975],{"class":236,"line":237},[234,20959,347],{"class":244},[234,20961,25],{"class":350},[234,20963,354],{"class":281},[234,20965,357],{"class":244},[234,20967,17666],{"class":251},[234,20969,17669],{"class":281},[234,20971,357],{"class":244},[234,20973,20974],{"class":251},"\"line[start]|char-line[start]\"",[234,20976,376],{"class":244},[234,20978,20979,20982,20984],{"class":236,"line":258},[234,20980,20981],{"class":244},"  Line One\u003C",[234,20983,2045],{"class":350},[234,20985,20986],{"class":244}," />Line Two\n",[234,20988,20989,20991,20993],{"class":236,"line":265},[234,20990,1402],{"class":244},[234,20992,25],{"class":350},[234,20994,376],{"class":244},[30,20996,20997,20998,21000,21001,14079],{},"Each line gets its own ",[60,20999,17022],{}," wrapper with separate ",[60,21002,17319],{},[37,21004,21005],{"id":17742},[60,21006,17749],{},[30,21008,21009,21011],{},[60,21010,17749],{}," is a special authoring helper for applying CSS classes to generated wrappers. It does not appear in the output DOM.",[225,21013,21014],{"className":338,"code":17753,"language":340,"meta":230,"style":230},[60,21015,21016,21036,21054],{"__ignoreMap":230},[234,21017,21018,21020,21022,21024,21026,21028,21030,21032,21034],{"class":236,"line":237},[234,21019,347],{"class":244},[234,21021,37],{"class":350},[234,21023,354],{"class":281},[234,21025,357],{"class":244},[234,21027,17666],{"class":251},[234,21029,17669],{"class":281},[234,21031,357],{"class":244},[234,21033,17674],{"class":251},[234,21035,376],{"class":244},[234,21037,21038,21040,21042,21044,21046,21048,21050,21052],{"class":236,"line":258},[234,21039,1292],{"class":244},[234,21041,17742],{"class":350},[234,21043,1297],{"class":281},[234,21045,357],{"class":244},[234,21047,17788],{"class":251},[234,21049,17791],{"class":244},[234,21051,17742],{"class":350},[234,21053,17796],{"class":244},[234,21055,21056,21058,21060],{"class":236,"line":265},[234,21057,1402],{"class":244},[234,21059,37],{"class":350},[234,21061,376],{"class":244},[30,21063,21064,21065,21068],{},"The word \"Signal\" and its char wrappers receive the class ",[60,21066,21067],{},"is-accent",". The word \"Layer\" does not.",[174,21070,21072],{"id":21071},"how-classes-are-applied","How classes are applied",[42,21074,21075,21083],{},[45,21076,19488,21077,19491,21079,19495,21081,19498],{},[60,21078,17742],{},[1929,21080,19494],{},[60,21082,17035],{},[45,21084,21085,21086,17023],{},"Otherwise, the classes appear on individual ",[60,21087,17061],{},[174,21089,21091],{"id":21090},"nesting","Nesting",[30,21093,21094,21096],{},[60,21095,17749],{}," can be nested. Inner classes accumulate:",[225,21098,21100],{"className":338,"code":21099,"language":340,"meta":230,"style":230},"\u003Csplit-class class=\"highlight\">\n  \u003Csplit-class class=\"accent\">Bold\u003C/split-class> text\n\u003C/split-class>\n",[60,21101,21102,21117,21138],{"__ignoreMap":230},[234,21103,21104,21106,21108,21110,21112,21115],{"class":236,"line":237},[234,21105,347],{"class":244},[234,21107,17742],{"class":350},[234,21109,1297],{"class":281},[234,21111,357],{"class":244},[234,21113,21114],{"class":251},"\"highlight\"",[234,21116,376],{"class":244},[234,21118,21119,21121,21123,21125,21127,21130,21133,21135],{"class":236,"line":258},[234,21120,1292],{"class":244},[234,21122,17742],{"class":350},[234,21124,1297],{"class":281},[234,21126,357],{"class":244},[234,21128,21129],{"class":251},"\"accent\"",[234,21131,21132],{"class":244},">Bold\u003C/",[234,21134,17742],{"class":350},[234,21136,21137],{"class":244},"> text\n",[234,21139,21140,21142,21144],{"class":236,"line":265},[234,21141,1402],{"class":244},[234,21143,17742],{"class":350},[234,21145,376],{"class":244},[42,21147,21148,21157],{},[45,21149,21150,21151,137,21154],{},"\"Bold\" gets classes ",[60,21152,21153],{},"highlight",[60,21155,21156],{},"accent",[45,21158,21159,21160,21162],{},"\"text\" gets class ",[60,21161,21153],{}," only",[37,21164,21166,21168,21169],{"id":21165},"before-element-and-after-element",[60,21167,19446],{}," And ",[60,21170,19457],{},[30,21172,21173],{},"When text sits adjacent to an opaque element, the module adds helper classes to the nearby wrappers:",[42,21175,21176,21181],{},[45,21177,21178,21180],{},[60,21179,19446],{}," — on the wrapper immediately before an opaque element",[45,21182,21183,21185],{},[60,21184,19457],{}," — on the wrapper immediately after an opaque element",[30,21187,21188,21189,1833,21191,2703,21193,21195],{},"These classes appear on whichever wrapper level is active (",[60,21190,17022],{},[60,21192,17035],{},[60,21194,17061],{},"). Use them to adjust spacing or animation timing:",[225,21197,21199],{"className":5857,"code":21198,"language":5859,"meta":230,"style":230},".-s-word.-before-element {\n  margin-right: 0.5em;\n}\n",[60,21200,21201,21208,21221],{"__ignoreMap":230},[234,21202,21203,21206],{"class":236,"line":237},[234,21204,21205],{"class":281},".-s-word.-before-element",[234,21207,909],{"class":244},[234,21209,21210,21213,21215,21217,21219],{"class":236,"line":258},[234,21211,21212],{"class":271},"  margin-right",[234,21214,1443],{"class":244},[234,21216,15657],{"class":271},[234,21218,3714],{"class":240},[234,21220,255],{"class":244},[234,21222,21223],{"class":236,"line":265},[234,21224,1143],{"class":244},[37,21226,21228],{"id":21227},"word-joining","Word Joining",[30,21230,21231],{},"When text from different inline elements runs together without whitespace, the module handles it intelligently:",[225,21233,21235],{"className":338,"code":21234,"language":340,"meta":230,"style":230},"\u003Cp string=\"split\" string-split=\"word\">\n  \u003Cem>emph\u003C/em>asis\n\u003C/p>\n",[60,21236,21237,21257,21271],{"__ignoreMap":230},[234,21238,21239,21241,21243,21245,21247,21249,21251,21253,21255],{"class":236,"line":237},[234,21240,347],{"class":244},[234,21242,30],{"class":350},[234,21244,354],{"class":281},[234,21246,357],{"class":244},[234,21248,17666],{"class":251},[234,21250,17669],{"class":281},[234,21252,357],{"class":244},[234,21254,20468],{"class":251},[234,21256,376],{"class":244},[234,21258,21259,21261,21263,21266,21268],{"class":236,"line":258},[234,21260,1292],{"class":244},[234,21262,3714],{"class":350},[234,21264,21265],{"class":244},">emph\u003C/",[234,21267,3714],{"class":350},[234,21269,21270],{"class":244},">asis\n",[234,21272,21273,21275,21277],{"class":236,"line":265},[234,21274,1402],{"class":244},[234,21276,30],{"class":350},[234,21278,376],{"class":244},[30,21280,21281,21282,21285,21286,21288],{},"Since there is no space between ",[60,21283,21284],{},"\u003C/em>"," and \"asis\", the module keeps them visually together — no extra space is inserted between them. They remain separate wrappers because they have different styling contexts (",[60,21287,17705],{}," vs plain text), but they render as one visual word.",[37,21290,18741],{"id":18740},[174,21292,21294],{"id":21293},"empty-inline-elements","Empty inline elements",[30,21296,21297,21298,1934,21301,21304],{},"An element like ",[60,21299,21300],{},"\u003Cspan>\u003C/span>",[60,21302,21303],{},"\u003Cem>\u003C/em>"," (with no children) is treated as an opaque element — it is kept as-is and not split. If you need an element to wrap split content, make sure it has text or child elements inside.",[174,21306,21308],{"id":21307},"custom-elements-and-shadow-dom","Custom elements and Shadow DOM",[30,21310,21311],{},"Custom elements follow the same rules as standard elements. If a custom element is not in the opaque list and has children, its children are split. Shadow DOM content is not reached.",[174,21313,21315],{"id":21314},"attributes-are-preserved","Attributes are preserved",[30,21317,21318,21319,1833,21322,1833,21325,1833,21327,1833,21330,21332],{},"All attributes on inline elements are preserved exactly: ",[60,21320,21321],{},"class",[60,21323,21324],{},"href",[60,21326,410],{},[60,21328,21329],{},"data-*",[60,21331,4269],{},", etc. The reconstructed element in the output is functionally identical to the original for CSS and JS purposes.",[37,21334,18775],{"id":18774},[42,21336,21337,21341,21346,21350],{},[45,21338,18780,21339],{},[133,21340,5290],{"href":5289},[45,21342,21343,21344],{},"DOM output details: ",[133,21345,17411],{"href":16822},[45,21347,19577,21348],{},[133,21349,16960],{"href":16821},[45,21351,18795,21352],{},[133,21353,17926],{"href":16823},[410,21355,21356],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":230,"searchDepth":258,"depth":258,"links":21358},[21359,21365,21369,21371,21372,21377],{"id":20383,"depth":258,"text":20384,"children":21360},[21361,21362,21363],{"id":20390,"depth":265,"text":20391},{"id":20746,"depth":265,"text":20747},{"id":20939,"depth":265,"text":21364},"\u003Cbr> — line break",{"id":17742,"depth":258,"text":17749,"children":21366},[21367,21368],{"id":21071,"depth":265,"text":21072},{"id":21090,"depth":265,"text":21091},{"id":21165,"depth":258,"text":21370},"-before-element And -after-element",{"id":21227,"depth":258,"text":21228},{"id":18740,"depth":258,"text":18741,"children":21373},[21374,21375,21376],{"id":21293,"depth":265,"text":21294},{"id":21307,"depth":265,"text":21308},{"id":21314,"depth":265,"text":21315},{"id":18774,"depth":258,"text":18775},{"path":5295,"title":5296,"description":21379,"kind":5369,"section":5187,"order":21380,"group":5282,"parentPath":-1,"status":8027,"integration":2706,"publicExport":261,"activation":21381,"package":5371,"aliases":21382,"attrs":21384,"events":21385,"cssVars":21386,"related":21387,"body":21388},"Lays items into a measured masonry surface using built-in layout helpers.",220,"string=\"masonry\"",[21383,5296],"masonry",[],[],[],[5289,5301,2899],{"type":22,"value":21389,"toc":22297},[21390,21393,21398,21400,21402,21465,21468,21490,21493,21495,21498,21501,21514,21517,21544,21547,21549,21607,21610,21652,21654,21656,21658,21925,22152,22200,22202,22259,22261,22294],[25,21391,5296],{"id":21392},"stringmasonry",[30,21394,21395,21397],{},[60,21396,5296],{}," turns one container into an animated masonry grid. The module owns the positioning of the container's direct children and reacts to width changes, DOM mutations, and image loading.",[37,21399,5407],{"id":5406},[174,21401,4905],{"id":4904},[2221,21403,21404,21416],{},[2224,21405,21406],{},[2227,21407,21408,21410,21412,21414],{},[2230,21409,4914],{},[2230,21411,4917],{},[2230,21413,4920],{},[2230,21415,5424],{},[2240,21417,21418,21434,21449],{},[2227,21419,21420,21425,21428,21431],{},[2245,21421,21422],{},[60,21423,21424],{},"string-masonry-cols",[2245,21426,21427],{},"breakpoint-dimension",[2245,21429,21430],{},"`2",[2245,21432,21433],{},"640:3",[2227,21435,21436,21441,21443,21446],{},[2245,21437,21438],{},[60,21439,21440],{},"string-masonry-gap",[2245,21442,21427],{},[2245,21444,21445],{},"`16",[2245,21447,21448],{},"640:24",[2227,21450,21451,21456,21458,21462],{},[2245,21452,21453],{},[60,21454,21455],{},"string-masonry-mode",[2245,21457,2252],{},[2245,21459,21460],{},[60,21461,11102],{},[2245,21463,21464],{},"Chooses automatic layout updates or event-driven manual control.",[30,21466,21467],{},"Child items may also define animation tuning attributes:",[42,21469,21470,21475,21480,21485],{},[45,21471,21472],{},[60,21473,21474],{},"string-masonry-position-time",[45,21476,21477],{},[60,21478,21479],{},"string-masonry-position-easing",[45,21481,21482],{},[60,21483,21484],{},"string-masonry-size-time",[45,21486,21487],{},[60,21488,21489],{},"string-masonry-size-easing",[30,21491,21492],{},"These are read from the direct child items, not from the masonry container.",[174,21494,5558],{"id":5557},[30,21496,21497],{},"The module writes inline layout styles.",[30,21499,21500],{},"On the container:",[42,21502,21503,21508],{},[45,21504,21505],{},[60,21506,21507],{},"position: relative",[45,21509,21510,21511],{},"animated ",[60,21512,21513],{},"height",[30,21515,21516],{},"On direct children:",[42,21518,21519,21524,21529,21534,21539],{},[45,21520,21521],{},[60,21522,21523],{},"position: absolute",[45,21525,21526],{},[60,21527,21528],{},"top: 0",[45,21530,21531],{},[60,21532,21533],{},"left: 0",[45,21535,7227,21536],{},[60,21537,21538],{},"width",[45,21540,7227,21541],{},[60,21542,21543],{},"transform: translate3d(x, y, 0)",[30,21545,21546],{},"The module does not publish CSS variables for masonry geometry.",[174,21548,5593],{"id":3814},[2221,21550,21551,21561],{},[2224,21552,21553],{},[2227,21554,21555,21557,21559],{},[2230,21556,5602],{},[2230,21558,5605],{},[2230,21560,5608],{},[2240,21562,21563,21578,21592],{},[2227,21564,21565,21570,21575],{},[2245,21566,21567],{},[60,21568,21569],{},"masonry:shuffle:start",[2245,21571,21572],{},[60,21573,21574],{},"{ object }",[2245,21576,21577],{},"A masonry shuffle starts",[2227,21579,21580,21585,21589],{},[2245,21581,21582],{},[60,21583,21584],{},"masonry:shuffle:end",[2245,21586,21587],{},[60,21588,21574],{},[2245,21590,21591],{},"A masonry shuffle ends",[2227,21593,21594,21599,21604],{},[2245,21595,21596],{},[60,21597,21598],{},"masonry:update:\u003Cid>",[2245,21600,21601],{},[60,21602,21603],{},"{ mode?, cols?, gap? }",[2245,21605,21606],{},"Input channel to change settings and force a relayout",[30,21608,21609],{},"Manual update example:",[225,21611,21613],{"className":227,"code":21612,"language":229,"meta":230,"style":230},"stringTune.emit('masonry:update:grid', {\n  cols: 4,\n  gap: 20,\n});\n",[60,21614,21615,21630,21639,21648],{"__ignoreMap":230},[234,21616,21617,21619,21622,21624,21627],{"class":236,"line":237},[234,21618,296],{"class":244},[234,21620,21621],{"class":281},"emit",[234,21623,329],{"class":244},[234,21625,21626],{"class":251},"'masonry:update:grid'",[234,21628,21629],{"class":244},", {\n",[234,21631,21632,21635,21637],{"class":236,"line":258},[234,21633,21634],{"class":244},"  cols: ",[234,21636,15274],{"class":271},[234,21638,2506],{"class":244},[234,21640,21641,21644,21646],{"class":236,"line":265},[234,21642,21643],{"class":244},"  gap: ",[234,21645,5942],{"class":271},[234,21647,2506],{"class":244},[234,21649,21650],{"class":236,"line":288},[234,21651,1040],{"class":244},[174,21653,5667],{"id":5666},[30,21655,10483],{},[37,21657,5689],{"id":5688},[225,21659,21661],{"className":338,"code":21660,"language":340,"meta":230,"style":230},"\u003Csection \n  string=\"masonry\" \n  string-id=\"work-grid\" \n  string-masonry-mode=\"manual\"\n  string-masonry-gap=\"24\" \n  class=\"work-grid\"\n>\n  \u003Carticle class=\"work-item\" style=\"height: 300px;\">Project A\u003C/article>\n  \u003Carticle class=\"work-item\" style=\"height: 450px;\">Project B\u003C/article>\n  \u003Carticle class=\"work-item\" style=\"height: 280px;\">Project C\u003C/article>\n  \u003Carticle class=\"work-item\" style=\"height: 520px;\">Project D\u003C/article>\n  \u003Carticle class=\"work-item\" style=\"height: 320px;\">Project E\u003C/article>\n\u003C/section>\n\n\u003Cbutton type=\"button\" id=\"cols-2\">2 cols\u003C/button>\n\u003Cbutton type=\"button\" id=\"cols-3\">3 cols\u003C/button>\n",[60,21662,21663,21671,21682,21693,21703,21715,21724,21728,21756,21782,21808,21834,21860,21868,21872,21899],{"__ignoreMap":230},[234,21664,21665,21667,21669],{"class":236,"line":237},[234,21666,347],{"class":244},[234,21668,740],{"class":350},[234,21670,15100],{"class":244},[234,21672,21673,21675,21677,21680],{"class":236,"line":258},[234,21674,12249],{"class":281},[234,21676,357],{"class":244},[234,21678,21679],{"class":251},"\"masonry\"",[234,21681,15100],{"class":244},[234,21683,21684,21686,21688,21691],{"class":236,"line":265},[234,21685,12259],{"class":281},[234,21687,357],{"class":244},[234,21689,21690],{"class":251},"\"work-grid\"",[234,21692,15100],{"class":244},[234,21694,21695,21698,21700],{"class":236,"line":288},[234,21696,21697],{"class":281},"  string-masonry-mode",[234,21699,357],{"class":244},[234,21701,21702],{"class":251},"\"manual\"\n",[234,21704,21705,21708,21710,21713],{"class":236,"line":293},[234,21706,21707],{"class":281},"  string-masonry-gap",[234,21709,357],{"class":244},[234,21711,21712],{"class":251},"\"24\"",[234,21714,15100],{"class":244},[234,21716,21717,21719,21721],{"class":236,"line":305},[234,21718,12239],{"class":281},[234,21720,357],{"class":244},[234,21722,21723],{"class":251},"\"work-grid\"\n",[234,21725,21726],{"class":236,"line":321},[234,21727,376],{"class":244},[234,21729,21730,21732,21734,21736,21738,21741,21744,21746,21749,21752,21754],{"class":236,"line":946},[234,21731,1292],{"class":244},[234,21733,12395],{"class":350},[234,21735,1297],{"class":281},[234,21737,357],{"class":244},[234,21739,21740],{"class":251},"\"work-item\"",[234,21742,21743],{"class":281}," style",[234,21745,357],{"class":244},[234,21747,21748],{"class":251},"\"height: 300px;\"",[234,21750,21751],{"class":244},">Project A\u003C/",[234,21753,12395],{"class":350},[234,21755,376],{"class":244},[234,21757,21758,21760,21762,21764,21766,21768,21770,21772,21775,21778,21780],{"class":236,"line":955},[234,21759,1292],{"class":244},[234,21761,12395],{"class":350},[234,21763,1297],{"class":281},[234,21765,357],{"class":244},[234,21767,21740],{"class":251},[234,21769,21743],{"class":281},[234,21771,357],{"class":244},[234,21773,21774],{"class":251},"\"height: 450px;\"",[234,21776,21777],{"class":244},">Project B\u003C/",[234,21779,12395],{"class":350},[234,21781,376],{"class":244},[234,21783,21784,21786,21788,21790,21792,21794,21796,21798,21801,21804,21806],{"class":236,"line":11},[234,21785,1292],{"class":244},[234,21787,12395],{"class":350},[234,21789,1297],{"class":281},[234,21791,357],{"class":244},[234,21793,21740],{"class":251},[234,21795,21743],{"class":281},[234,21797,357],{"class":244},[234,21799,21800],{"class":251},"\"height: 280px;\"",[234,21802,21803],{"class":244},">Project C\u003C/",[234,21805,12395],{"class":350},[234,21807,376],{"class":244},[234,21809,21810,21812,21814,21816,21818,21820,21822,21824,21827,21830,21832],{"class":236,"line":980},[234,21811,1292],{"class":244},[234,21813,12395],{"class":350},[234,21815,1297],{"class":281},[234,21817,357],{"class":244},[234,21819,21740],{"class":251},[234,21821,21743],{"class":281},[234,21823,357],{"class":244},[234,21825,21826],{"class":251},"\"height: 520px;\"",[234,21828,21829],{"class":244},">Project D\u003C/",[234,21831,12395],{"class":350},[234,21833,376],{"class":244},[234,21835,21836,21838,21840,21842,21844,21846,21848,21850,21853,21856,21858],{"class":236,"line":994},[234,21837,1292],{"class":244},[234,21839,12395],{"class":350},[234,21841,1297],{"class":281},[234,21843,357],{"class":244},[234,21845,21740],{"class":251},[234,21847,21743],{"class":281},[234,21849,357],{"class":244},[234,21851,21852],{"class":251},"\"height: 320px;\"",[234,21854,21855],{"class":244},">Project E\u003C/",[234,21857,12395],{"class":350},[234,21859,376],{"class":244},[234,21861,21862,21864,21866],{"class":236,"line":1000},[234,21863,1402],{"class":244},[234,21865,740],{"class":350},[234,21867,376],{"class":244},[234,21869,21870],{"class":236,"line":1005},[234,21871,262],{"emptyLinePlaceholder":261},[234,21873,21874,21876,21878,21880,21882,21885,21887,21889,21892,21895,21897],{"class":236,"line":1013},[234,21875,347],{"class":244},[234,21877,1359],{"class":350},[234,21879,1070],{"class":281},[234,21881,357],{"class":244},[234,21883,21884],{"class":251},"\"button\"",[234,21886,5157],{"class":281},[234,21888,357],{"class":244},[234,21890,21891],{"class":251},"\"cols-2\"",[234,21893,21894],{"class":244},">2 cols\u003C/",[234,21896,1359],{"class":350},[234,21898,376],{"class":244},[234,21900,21901,21903,21905,21907,21909,21911,21913,21915,21918,21921,21923],{"class":236,"line":1019},[234,21902,347],{"class":244},[234,21904,1359],{"class":350},[234,21906,1070],{"class":281},[234,21908,357],{"class":244},[234,21910,21884],{"class":251},[234,21912,5157],{"class":281},[234,21914,357],{"class":244},[234,21916,21917],{"class":251},"\"cols-3\"",[234,21919,21920],{"class":244},">3 cols\u003C/",[234,21922,1359],{"class":350},[234,21924,376],{"class":244},[225,21926,21928],{"className":5857,"code":21927,"language":5859,"meta":230,"style":230},".work-grid {\n  width: 100%;\n  max-width: 1200px;\n  margin: 0 auto;\n  position: relative;\n}\n\n.work-item {\n  background: #f4f4f4;\n  border: 1px solid black;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-weight: bold;\n  font-size: 1.25rem;\n  transition: transform 0.4s cubic-bezier(0.2, 0, 0, 1);\n}\n\n.work-item:hover {\n  background: black;\n  color: white;\n}\n",[60,21929,21930,21937,21949,21962,21976,21986,21990,21994,22001,22012,22028,22038,22048,22058,22068,22080,22113,22117,22121,22128,22138,22148],{"__ignoreMap":230},[234,21931,21932,21935],{"class":236,"line":237},[234,21933,21934],{"class":281},".work-grid",[234,21936,909],{"class":244},[234,21938,21939,21941,21943,21945,21947],{"class":236,"line":258},[234,21940,5977],{"class":271},[234,21942,1443],{"class":244},[234,21944,5883],{"class":271},[234,21946,3403],{"class":240},[234,21948,255],{"class":244},[234,21950,21951,21953,21955,21958,21960],{"class":236,"line":265},[234,21952,15330],{"class":271},[234,21954,1443],{"class":244},[234,21956,21957],{"class":271},"1200",[234,21959,1789],{"class":240},[234,21961,255],{"class":244},[234,21963,21964,21967,21969,21971,21974],{"class":236,"line":288},[234,21965,21966],{"class":271},"  margin",[234,21968,1443],{"class":244},[234,21970,1836],{"class":271},[234,21972,21973],{"class":271}," auto",[234,21975,255],{"class":244},[234,21977,21978,21980,21982,21984],{"class":236,"line":293},[234,21979,7598],{"class":271},[234,21981,1443],{"class":244},[234,21983,7603],{"class":271},[234,21985,255],{"class":244},[234,21987,21988],{"class":236,"line":305},[234,21989,1143],{"class":244},[234,21991,21992],{"class":236,"line":321},[234,21993,262],{"emptyLinePlaceholder":261},[234,21995,21996,21999],{"class":236,"line":946},[234,21997,21998],{"class":281},".work-item",[234,22000,909],{"class":244},[234,22002,22003,22005,22007,22010],{"class":236,"line":955},[234,22004,6023],{"class":271},[234,22006,1443],{"class":244},[234,22008,22009],{"class":271},"#f4f4f4",[234,22011,255],{"class":244},[234,22013,22014,22016,22018,22020,22022,22024,22026],{"class":236,"line":11},[234,22015,1769],{"class":271},[234,22017,1443],{"class":244},[234,22019,1754],{"class":271},[234,22021,1789],{"class":240},[234,22023,6013],{"class":271},[234,22025,6016],{"class":271},[234,22027,255],{"class":244},[234,22029,22030,22032,22034,22036],{"class":236,"line":980},[234,22031,1677],{"class":271},[234,22033,1443],{"class":244},[234,22035,12585],{"class":271},[234,22037,255],{"class":244},[234,22039,22040,22042,22044,22046],{"class":236,"line":994},[234,22041,6805],{"class":271},[234,22043,1443],{"class":244},[234,22045,1695],{"class":271},[234,22047,255],{"class":244},[234,22049,22050,22052,22054,22056],{"class":236,"line":1000},[234,22051,12602],{"class":271},[234,22053,1443],{"class":244},[234,22055,1695],{"class":271},[234,22057,255],{"class":244},[234,22059,22060,22062,22064,22066],{"class":236,"line":1005},[234,22061,14315],{"class":271},[234,22063,1443],{"class":244},[234,22065,14320],{"class":271},[234,22067,255],{"class":244},[234,22069,22070,22072,22074,22076,22078],{"class":236,"line":1013},[234,22071,9886],{"class":271},[234,22073,1443],{"class":244},[234,22075,14331],{"class":271},[234,22077,1711],{"class":240},[234,22079,255],{"class":244},[234,22081,22082,22085,22088,22091,22093,22095,22097,22099,22101,22103,22105,22107,22109,22111],{"class":236,"line":1019},[234,22083,22084],{"class":271},"  transition",[234,22086,22087],{"class":244},": transform ",[234,22089,22090],{"class":271},"0.4",[234,22092,9858],{"class":240},[234,22094,17275],{"class":271},[234,22096,329],{"class":244},[234,22098,7131],{"class":271},[234,22100,1833],{"class":244},[234,22102,1836],{"class":271},[234,22104,1833],{"class":244},[234,22106,1836],{"class":271},[234,22108,1833],{"class":244},[234,22110,1754],{"class":271},[234,22112,335],{"class":244},[234,22114,22115],{"class":236,"line":1025},[234,22116,1143],{"class":244},[234,22118,22119],{"class":236,"line":1031},[234,22120,262],{"emptyLinePlaceholder":261},[234,22122,22123,22126],{"class":236,"line":1037},[234,22124,22125],{"class":281},".work-item:hover",[234,22127,909],{"class":244},[234,22129,22130,22132,22134,22136],{"class":236,"line":427},[234,22131,6023],{"class":271},[234,22133,1443],{"class":244},[234,22135,9965],{"class":271},[234,22137,255],{"class":244},[234,22139,22140,22142,22144,22146],{"class":236,"line":1571},[234,22141,11568],{"class":271},[234,22143,1443],{"class":244},[234,22145,6028],{"class":271},[234,22147,255],{"class":244},[234,22149,22150],{"class":236,"line":1592},[234,22151,1143],{"class":244},[225,22153,22155],{"className":227,"code":22154,"language":229,"meta":230,"style":230},"stringTune.emit('masonry:update:work-grid', { cols: 2, gap: 24 });\nstringTune.emit('masonry:update:work-grid', { cols: 3, gap: 24 });\n",[60,22156,22157,22180],{"__ignoreMap":230},[234,22158,22159,22161,22163,22165,22168,22171,22173,22176,22178],{"class":236,"line":237},[234,22160,296],{"class":244},[234,22162,21621],{"class":281},[234,22164,329],{"class":244},[234,22166,22167],{"class":251},"'masonry:update:work-grid'",[234,22169,22170],{"class":244},", { cols: ",[234,22172,6008],{"class":271},[234,22174,22175],{"class":244},", gap: ",[234,22177,6740],{"class":271},[234,22179,318],{"class":244},[234,22181,22182,22184,22186,22188,22190,22192,22194,22196,22198],{"class":236,"line":258},[234,22183,296],{"class":244},[234,22185,21621],{"class":281},[234,22187,329],{"class":244},[234,22189,22167],{"class":251},[234,22191,22170],{"class":244},[234,22193,9609],{"class":271},[234,22195,22175],{"class":244},[234,22197,6740],{"class":271},[234,22199,318],{"class":244},[37,22201,6074],{"id":6073},[225,22203,22205],{"className":227,"code":22204,"language":229,"meta":230,"style":230},"import StringTune, { StringMasonry } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\nstringTune.use(StringMasonry);\nstringTune.start(60);\n",[60,22206,22207,22220,22224,22238,22247],{"__ignoreMap":230},[234,22208,22209,22211,22214,22216,22218],{"class":236,"line":237},[234,22210,241],{"class":240},[234,22212,22213],{"class":244}," StringTune, { StringMasonry } ",[234,22215,248],{"class":240},[234,22217,252],{"class":251},[234,22219,255],{"class":244},[234,22221,22222],{"class":236,"line":258},[234,22223,262],{"emptyLinePlaceholder":261},[234,22225,22226,22228,22230,22232,22234,22236],{"class":236,"line":265},[234,22227,268],{"class":240},[234,22229,272],{"class":271},[234,22231,275],{"class":240},[234,22233,278],{"class":244},[234,22235,282],{"class":281},[234,22237,285],{"class":244},[234,22239,22240,22242,22244],{"class":236,"line":288},[234,22241,296],{"class":244},[234,22243,299],{"class":281},[234,22245,22246],{"class":244},"(StringMasonry);\n",[234,22248,22249,22251,22253,22255,22257],{"class":236,"line":293},[234,22250,296],{"class":244},[234,22252,326],{"class":281},[234,22254,329],{"class":244},[234,22256,332],{"class":271},[234,22258,335],{"class":244},[37,22260,6133],{"id":6132},[42,22262,22263,22266,22272,22280,22287],{},[45,22264,22265],{},"The module positions only direct children of the masonry container.",[45,22267,22268,22269,22271],{},"In ",[60,22270,11102],{}," mode it reacts to container resize, child add/remove, and unfinished image loads.",[45,22273,22268,22274,22277,22278,106],{},[60,22275,22276],{},"manual"," mode you can still trigger relayout through ",[60,22279,21598],{},[45,22281,22282,22283,22286],{},"Child timing attributes are parsed with ",[60,22284,22285],{},"parseFloat()",". In the current runtime they are plain numeric durations, not documented time-unit strings.",[45,22288,22289,22290,22293],{},"The module also emits a generic ",[60,22291,22292],{},"resize"," event internally after certain height updates, but that should be treated as runtime plumbing rather than masonry-specific public API.",[410,22295,22296],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":230,"searchDepth":258,"depth":258,"links":22298},[22299,22305,22306,22307],{"id":5406,"depth":258,"text":5407,"children":22300},[22301,22302,22303,22304],{"id":4904,"depth":265,"text":4905},{"id":5557,"depth":265,"text":5558},{"id":3814,"depth":265,"text":5593},{"id":5666,"depth":265,"text":5667},{"id":5688,"depth":258,"text":5689},{"id":6073,"depth":258,"text":6074},{"id":6132,"depth":258,"text":6133},{"path":5301,"title":200,"description":22309,"kind":5369,"section":5187,"order":22310,"group":5282,"parentPath":-1,"status":5370,"integration":11669,"publicExport":261,"activation":22311,"package":5371,"aliases":22312,"attrs":22315,"events":22320,"cssVars":22324,"related":22325,"body":22326},"Global responsive runtime that toggles device-scoped elements and emits screen events.",230,"stringTune.use(StringResponsive)",[22313,200,22314],"responsive","screen:mobile",[22316,22317,22318,22319],"string-mobile","string-tablet","string-laptop","string-desktop",[22314,22321,22322,22323],"screen:tablet","screen:laptop","screen:desktop",[],[5260,2899,2464],{"type":22,"value":22327,"toc":23213},[22328,22331,22344,22346,22350,22353,22377,22379,22382,22400,22402,22411,22425,22430,22432,22498,22538,22540,22542,22544,22744,23049,23051,23107,23113,23192,23194,23211],[25,22329,200],{"id":22330},"stringresponsive",[30,22332,22333,22335,22336,22339,22340,22343],{},[60,22334,200],{}," is a global module. It does not activate through ",[60,22337,22338],{},"string=\"responsive\"",". Instead, it watches viewport width, toggles device-scoped elements, and emits stateful ",[60,22341,22342],{},"screen:*"," events.",[37,22345,5407],{"id":5406},[174,22347,22349],{"id":22348},"default-ranges","Default Ranges",[30,22351,22352],{},"Current default ranges are:",[42,22354,22355,22360,22366,22372],{},[45,22356,4350,22357],{},[60,22358,22359],{},"0..359",[45,22361,22362,22363],{},"tablet: ",[60,22364,22365],{},"360..1023",[45,22367,22368,22369],{},"laptop: ",[60,22370,22371],{},"1024..1365",[45,22373,4345,22374],{},[60,22375,22376],{},"1366+",[174,22378,4905],{"id":4904},[30,22380,22381],{},"The module watches these attributes anywhere in the document:",[42,22383,22384,22388,22392,22396],{},[45,22385,22386],{},[60,22387,22316],{},[45,22389,22390],{},[60,22391,22317],{},[45,22393,22394],{},[60,22395,22318],{},[45,22397,22398],{},[60,22399,22319],{},[174,22401,5558],{"id":5557},[30,22403,22404,22406,22407,22410],{},[60,22405,200],{}," writes directly to ",[60,22408,22409],{},"style.display"," on matching elements:",[42,22412,22413,22419],{},[45,22414,22415,22416],{},"elements that match the active range get ",[60,22417,22418],{},"style.display = null",[45,22420,22421,22422],{},"elements outside the active range get ",[60,22423,22424],{},"style.display = \"none\"",[30,22426,22427,22428,106],{},"The current runtime does not preserve a cached previous display value beyond clearing the inline style back to ",[60,22429,12088],{},[174,22431,5593],{"id":3814},[2221,22433,22434,22444],{},[2224,22435,22436],{},[2227,22437,22438,22440,22442],{},[2230,22439,5602],{},[2230,22441,5605],{},[2230,22443,5608],{},[2240,22445,22446,22459,22472,22485],{},[2227,22447,22448,22452,22456],{},[2245,22449,22450],{},[60,22451,22314],{},[2245,22453,22454],{},[60,22455,14955],{},[2245,22457,22458],{},"Mobile match changes",[2227,22460,22461,22465,22469],{},[2245,22462,22463],{},[60,22464,22321],{},[2245,22466,22467],{},[60,22468,14955],{},[2245,22470,22471],{},"Tablet match changes",[2227,22473,22474,22478,22482],{},[2245,22475,22476],{},[60,22477,22322],{},[2245,22479,22480],{},[60,22481,14955],{},[2245,22483,22484],{},"Laptop match changes",[2227,22486,22487,22491,22495],{},[2245,22488,22489],{},[60,22490,22323],{},[2245,22492,22493],{},[60,22494,14955],{},[2245,22496,22497],{},"Desktop match changes",[225,22499,22501],{"className":227,"code":22500,"language":229,"meta":230,"style":230},"stringTune.on('screen:laptop', (active) => {\n  console.log(active);\n});\n",[60,22502,22503,22525,22534],{"__ignoreMap":230},[234,22504,22505,22507,22509,22511,22514,22516,22519,22521,22523],{"class":236,"line":237},[234,22506,296],{"class":244},[234,22508,1536],{"class":281},[234,22510,329],{"class":244},[234,22512,22513],{"class":251},"'screen:laptop'",[234,22515,2976],{"class":244},[234,22517,22518],{"class":899},"active",[234,22520,903],{"class":244},[234,22522,906],{"class":240},[234,22524,909],{"class":244},[234,22526,22527,22529,22531],{"class":236,"line":258},[234,22528,1482],{"class":244},[234,22530,1485],{"class":281},[234,22532,22533],{"class":244},"(active);\n",[234,22535,22536],{"class":236,"line":265},[234,22537,1040],{"class":244},[174,22539,5667],{"id":5666},[30,22541,10483],{},[37,22543,5689],{"id":5688},[225,22545,22547],{"className":338,"code":22546,"language":340,"meta":230,"style":230},"\u003Cnav class=\"site-nav\">\n  \u003Cdiv class=\"logo\">Fiddle\u003C/div>\n  \n  \u003Cul string-desktop string-laptop class=\"nav-links\">\n    \u003Cli>\u003Ca href=\"#\">Work\u003C/a>\u003C/li>\n    \u003Cli>\u003Ca href=\"#\">About\u003C/a>\u003C/li>\n    \u003Cli>\u003Ca href=\"#\">Contact\u003C/a>\u003C/li>\n  \u003C/ul>\n\n  \u003Cbutton string-mobile string-tablet class=\"menu-btn\">\n    Menu\n  \u003C/button>\n\u003C/nav>\n",[60,22548,22549,22565,22583,22587,22608,22636,22663,22690,22698,22702,22723,22728,22736],{"__ignoreMap":230},[234,22550,22551,22553,22556,22558,22560,22563],{"class":236,"line":237},[234,22552,347],{"class":244},[234,22554,22555],{"class":350},"nav",[234,22557,1297],{"class":281},[234,22559,357],{"class":244},[234,22561,22562],{"class":251},"\"site-nav\"",[234,22564,376],{"class":244},[234,22566,22567,22569,22571,22573,22575,22577,22579,22581],{"class":236,"line":258},[234,22568,1292],{"class":244},[234,22570,351],{"class":350},[234,22572,1297],{"class":281},[234,22574,357],{"class":244},[234,22576,14115],{"class":251},[234,22578,14118],{"class":244},[234,22580,351],{"class":350},[234,22582,376],{"class":244},[234,22584,22585],{"class":236,"line":265},[234,22586,4733],{"class":244},[234,22588,22589,22591,22593,22596,22599,22601,22603,22606],{"class":236,"line":288},[234,22590,1292],{"class":244},[234,22592,42],{"class":350},[234,22594,22595],{"class":281}," string-desktop",[234,22597,22598],{"class":281}," string-laptop",[234,22600,1297],{"class":281},[234,22602,357],{"class":244},[234,22604,22605],{"class":251},"\"nav-links\"",[234,22607,376],{"class":244},[234,22609,22610,22612,22614,22616,22618,22620,22622,22625,22628,22630,22632,22634],{"class":236,"line":293},[234,22611,1321],{"class":244},[234,22613,45],{"class":350},[234,22615,20722],{"class":244},[234,22617,133],{"class":350},[234,22619,20714],{"class":281},[234,22621,357],{"class":244},[234,22623,22624],{"class":251},"\"#\"",[234,22626,22627],{"class":244},">Work\u003C/",[234,22629,133],{"class":350},[234,22631,371],{"class":244},[234,22633,45],{"class":350},[234,22635,376],{"class":244},[234,22637,22638,22640,22642,22644,22646,22648,22650,22652,22655,22657,22659,22661],{"class":236,"line":305},[234,22639,1321],{"class":244},[234,22641,45],{"class":350},[234,22643,20722],{"class":244},[234,22645,133],{"class":350},[234,22647,20714],{"class":281},[234,22649,357],{"class":244},[234,22651,22624],{"class":251},[234,22653,22654],{"class":244},">About\u003C/",[234,22656,133],{"class":350},[234,22658,371],{"class":244},[234,22660,45],{"class":350},[234,22662,376],{"class":244},[234,22664,22665,22667,22669,22671,22673,22675,22677,22679,22682,22684,22686,22688],{"class":236,"line":321},[234,22666,1321],{"class":244},[234,22668,45],{"class":350},[234,22670,20722],{"class":244},[234,22672,133],{"class":350},[234,22674,20714],{"class":281},[234,22676,357],{"class":244},[234,22678,22624],{"class":251},[234,22680,22681],{"class":244},">Contact\u003C/",[234,22683,133],{"class":350},[234,22685,371],{"class":244},[234,22687,45],{"class":350},[234,22689,376],{"class":244},[234,22691,22692,22694,22696],{"class":236,"line":946},[234,22693,1393],{"class":244},[234,22695,42],{"class":350},[234,22697,376],{"class":244},[234,22699,22700],{"class":236,"line":955},[234,22701,262],{"emptyLinePlaceholder":261},[234,22703,22704,22706,22708,22711,22714,22716,22718,22721],{"class":236,"line":11},[234,22705,1292],{"class":244},[234,22707,1359],{"class":350},[234,22709,22710],{"class":281}," string-mobile",[234,22712,22713],{"class":281}," string-tablet",[234,22715,1297],{"class":281},[234,22717,357],{"class":244},[234,22719,22720],{"class":251},"\"menu-btn\"",[234,22722,376],{"class":244},[234,22724,22725],{"class":236,"line":980},[234,22726,22727],{"class":244},"    Menu\n",[234,22729,22730,22732,22734],{"class":236,"line":994},[234,22731,1393],{"class":244},[234,22733,1359],{"class":350},[234,22735,376],{"class":244},[234,22737,22738,22740,22742],{"class":236,"line":1000},[234,22739,1402],{"class":244},[234,22741,22555],{"class":350},[234,22743,376],{"class":244},[225,22745,22747],{"className":5857,"code":22746,"language":5859,"meta":230,"style":230},".site-nav {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: 1.5rem 2rem;\n  border-bottom: 1px solid black;\n  background: white;\n}\n\n.nav-links {\n  display: flex;\n  gap: 2rem;\n  list-style: none;\n  margin: 0;\n  padding: 0;\n}\n\n.nav-links a {\n  text-decoration: none;\n  color: black;\n  font-weight: 500;\n}\n\n.menu-btn {\n  padding: 0.5rem 1rem;\n  border: 1px solid black;\n  background: transparent;\n  color: black;\n  cursor: pointer;\n  text-transform: uppercase;\n  font-size: 0.875rem;\n}\n",[60,22748,22749,22756,22766,22776,22786,22802,22818,22828,22832,22836,22843,22853,22865,22876,22886,22896,22900,22904,22913,22924,22934,22945,22949,22953,22960,22976,22992,23002,23012,23022,23032,23045],{"__ignoreMap":230},[234,22750,22751,22754],{"class":236,"line":237},[234,22752,22753],{"class":281},".site-nav",[234,22755,909],{"class":244},[234,22757,22758,22760,22762,22764],{"class":236,"line":258},[234,22759,1677],{"class":271},[234,22761,1443],{"class":244},[234,22763,12585],{"class":271},[234,22765,255],{"class":244},[234,22767,22768,22770,22772,22774],{"class":236,"line":265},[234,22769,6805],{"class":271},[234,22771,1443],{"class":244},[234,22773,1695],{"class":271},[234,22775,255],{"class":244},[234,22777,22778,22780,22782,22784],{"class":236,"line":288},[234,22779,12602],{"class":271},[234,22781,1443],{"class":244},[234,22783,14260],{"class":271},[234,22785,255],{"class":244},[234,22787,22788,22790,22792,22794,22796,22798,22800],{"class":236,"line":293},[234,22789,1749],{"class":271},[234,22791,1443],{"class":244},[234,22793,1708],{"class":271},[234,22795,1711],{"class":240},[234,22797,14275],{"class":271},[234,22799,1711],{"class":240},[234,22801,255],{"class":244},[234,22803,22804,22806,22808,22810,22812,22814,22816],{"class":236,"line":305},[234,22805,7639],{"class":271},[234,22807,1443],{"class":244},[234,22809,1754],{"class":271},[234,22811,1789],{"class":240},[234,22813,6013],{"class":271},[234,22815,6016],{"class":271},[234,22817,255],{"class":244},[234,22819,22820,22822,22824,22826],{"class":236,"line":321},[234,22821,6023],{"class":271},[234,22823,1443],{"class":244},[234,22825,6028],{"class":271},[234,22827,255],{"class":244},[234,22829,22830],{"class":236,"line":946},[234,22831,1143],{"class":244},[234,22833,22834],{"class":236,"line":955},[234,22835,262],{"emptyLinePlaceholder":261},[234,22837,22838,22841],{"class":236,"line":11},[234,22839,22840],{"class":281},".nav-links",[234,22842,909],{"class":244},[234,22844,22845,22847,22849,22851],{"class":236,"line":980},[234,22846,1677],{"class":271},[234,22848,1443],{"class":244},[234,22850,12585],{"class":271},[234,22852,255],{"class":244},[234,22854,22855,22857,22859,22861,22863],{"class":236,"line":994},[234,22856,1703],{"class":271},[234,22858,1443],{"class":244},[234,22860,6008],{"class":271},[234,22862,1711],{"class":240},[234,22864,255],{"class":244},[234,22866,22867,22870,22872,22874],{"class":236,"line":1000},[234,22868,22869],{"class":271},"  list-style",[234,22871,1443],{"class":244},[234,22873,1774],{"class":271},[234,22875,255],{"class":244},[234,22877,22878,22880,22882,22884],{"class":236,"line":1005},[234,22879,21966],{"class":271},[234,22881,1443],{"class":244},[234,22883,1836],{"class":271},[234,22885,255],{"class":244},[234,22887,22888,22890,22892,22894],{"class":236,"line":1013},[234,22889,1749],{"class":271},[234,22891,1443],{"class":244},[234,22893,1836],{"class":271},[234,22895,255],{"class":244},[234,22897,22898],{"class":236,"line":1019},[234,22899,1143],{"class":244},[234,22901,22902],{"class":236,"line":1025},[234,22903,262],{"emptyLinePlaceholder":261},[234,22905,22906,22908,22911],{"class":236,"line":1031},[234,22907,22840],{"class":281},[234,22909,22910],{"class":350}," a",[234,22912,909],{"class":244},[234,22914,22915,22918,22920,22922],{"class":236,"line":1037},[234,22916,22917],{"class":271},"  text-decoration",[234,22919,1443],{"class":244},[234,22921,1774],{"class":271},[234,22923,255],{"class":244},[234,22925,22926,22928,22930,22932],{"class":236,"line":427},[234,22927,11568],{"class":271},[234,22929,1443],{"class":244},[234,22931,9965],{"class":271},[234,22933,255],{"class":244},[234,22935,22936,22938,22940,22943],{"class":236,"line":1571},[234,22937,14315],{"class":271},[234,22939,1443],{"class":244},[234,22941,22942],{"class":271},"500",[234,22944,255],{"class":244},[234,22946,22947],{"class":236,"line":1592},[234,22948,1143],{"class":244},[234,22950,22951],{"class":236,"line":1600},[234,22952,262],{"emptyLinePlaceholder":261},[234,22954,22955,22958],{"class":236,"line":1615},[234,22956,22957],{"class":281},".menu-btn",[234,22959,909],{"class":244},[234,22961,22962,22964,22966,22968,22970,22972,22974],{"class":236,"line":1620},[234,22963,1749],{"class":271},[234,22965,1443],{"class":244},[234,22967,15657],{"class":271},[234,22969,1711],{"class":240},[234,22971,1844],{"class":271},[234,22973,1711],{"class":240},[234,22975,255],{"class":244},[234,22977,22978,22980,22982,22984,22986,22988,22990],{"class":236,"line":1625},[234,22979,1769],{"class":271},[234,22981,1443],{"class":244},[234,22983,1754],{"class":271},[234,22985,1789],{"class":240},[234,22987,6013],{"class":271},[234,22989,6016],{"class":271},[234,22991,255],{"class":244},[234,22993,22994,22996,22998,23000],{"class":236,"line":1634},[234,22995,6023],{"class":271},[234,22997,1443],{"class":244},[234,22999,16426],{"class":271},[234,23001,255],{"class":244},[234,23003,23004,23006,23008,23010],{"class":236,"line":1639},[234,23005,11568],{"class":271},[234,23007,1443],{"class":244},[234,23009,9965],{"class":271},[234,23011,255],{"class":244},[234,23013,23014,23016,23018,23020],{"class":236,"line":1651},[234,23015,1797],{"class":271},[234,23017,1443],{"class":244},[234,23019,1802],{"class":271},[234,23021,255],{"class":244},[234,23023,23024,23026,23028,23030],{"class":236,"line":609},[234,23025,9899],{"class":271},[234,23027,1443],{"class":244},[234,23029,9904],{"class":271},[234,23031,255],{"class":244},[234,23033,23034,23036,23038,23041,23043],{"class":236,"line":1674},[234,23035,9886],{"class":271},[234,23037,1443],{"class":244},[234,23039,23040],{"class":271},"0.875",[234,23042,1711],{"class":240},[234,23044,255],{"class":244},[234,23046,23047],{"class":236,"line":1687},[234,23048,1143],{"class":244},[37,23050,6074],{"id":6073},[225,23052,23054],{"className":227,"code":23053,"language":229,"meta":230,"style":230},"import StringTune, { StringResponsive } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\nstringTune.use(StringResponsive);\nstringTune.start(60);\n",[60,23055,23056,23069,23073,23087,23095],{"__ignoreMap":230},[234,23057,23058,23060,23063,23065,23067],{"class":236,"line":237},[234,23059,241],{"class":240},[234,23061,23062],{"class":244}," StringTune, { StringResponsive } ",[234,23064,248],{"class":240},[234,23066,252],{"class":251},[234,23068,255],{"class":244},[234,23070,23071],{"class":236,"line":258},[234,23072,262],{"emptyLinePlaceholder":261},[234,23074,23075,23077,23079,23081,23083,23085],{"class":236,"line":265},[234,23076,268],{"class":240},[234,23078,272],{"class":271},[234,23080,275],{"class":240},[234,23082,278],{"class":244},[234,23084,282],{"class":281},[234,23086,285],{"class":244},[234,23088,23089,23091,23093],{"class":236,"line":288},[234,23090,296],{"class":244},[234,23092,299],{"class":281},[234,23094,688],{"class":244},[234,23096,23097,23099,23101,23103,23105],{"class":236,"line":293},[234,23098,296],{"class":244},[234,23100,326],{"class":281},[234,23102,329],{"class":244},[234,23104,332],{"class":271},[234,23106,335],{"class":244},[30,23108,23109,23110,1114],{},"Custom ranges can be passed through ",[60,23111,23112],{},"use()",[225,23114,23116],{"className":227,"code":23115,"language":229,"meta":230,"style":230},"stringTune.use(StringResponsive, {\n  settings: {\n    mobile: { max: 479 },\n    tablet: { min: 480, max: 1023 },\n    laptop: { min: 1024, max: 1439 },\n    desktop: { min: 1440 },\n  },\n});\n",[60,23117,23118,23127,23132,23143,23159,23174,23184,23188],{"__ignoreMap":230},[234,23119,23120,23122,23124],{"class":236,"line":237},[234,23121,296],{"class":244},[234,23123,299],{"class":281},[234,23125,23126],{"class":244},"(StringResponsive, {\n",[234,23128,23129],{"class":236,"line":258},[234,23130,23131],{"class":244},"  settings: {\n",[234,23133,23134,23137,23140],{"class":236,"line":265},[234,23135,23136],{"class":244},"    mobile: { max: ",[234,23138,23139],{"class":271},"479",[234,23141,23142],{"class":244}," },\n",[234,23144,23145,23148,23151,23154,23157],{"class":236,"line":288},[234,23146,23147],{"class":244},"    tablet: { min: ",[234,23149,23150],{"class":271},"480",[234,23152,23153],{"class":244},", max: ",[234,23155,23156],{"class":271},"1023",[234,23158,23142],{"class":244},[234,23160,23161,23164,23167,23169,23172],{"class":236,"line":293},[234,23162,23163],{"class":244},"    laptop: { min: ",[234,23165,23166],{"class":271},"1024",[234,23168,23153],{"class":244},[234,23170,23171],{"class":271},"1439",[234,23173,23142],{"class":244},[234,23175,23176,23179,23182],{"class":236,"line":305},[234,23177,23178],{"class":244},"    desktop: { min: ",[234,23180,23181],{"class":271},"1440",[234,23183,23142],{"class":244},[234,23185,23186],{"class":236,"line":321},[234,23187,1256],{"class":244},[234,23189,23190],{"class":236,"line":946},[234,23191,1040],{"class":244},[37,23193,6133],{"id":6132},[42,23195,23196,23201,23208],{},[45,23197,23198,23200],{},[60,23199,22342],{}," events are stateful in the current event manager. A later subscriber receives the last emitted value if one exists.",[45,23202,23203,23204,23207],{},"If a device config block is omitted in ",[60,23205,23206],{},"use(StringResponsive, { settings: ... })",", that range is disabled.",[45,23209,23210],{},"Visibility is based only on viewport width ranges, not orientation or pointer type.",[410,23212,6155],{},{"title":230,"searchDepth":258,"depth":258,"links":23214},[23215,23222,23223,23224],{"id":5406,"depth":258,"text":5407,"children":23216},[23217,23218,23219,23220,23221],{"id":22348,"depth":265,"text":22349},{"id":4904,"depth":265,"text":4905},{"id":5557,"depth":265,"text":5558},{"id":3814,"depth":265,"text":5593},{"id":5666,"depth":265,"text":5667},{"id":5688,"depth":258,"text":5689},{"id":6073,"depth":258,"text":6074},{"id":6132,"depth":258,"text":6133},{"path":3819,"title":5312,"description":23226,"kind":5369,"section":5187,"order":23227,"group":5305,"parentPath":-1,"status":5370,"integration":2706,"publicExport":261,"activation":23228,"package":5371,"aliases":23229,"attrs":23231,"events":23232,"cssVars":23236,"related":23237,"body":23238},"Validates form inputs declaratively and emits structured form lifecycle events.",310,"string=\"form\"",[23230,5312],"form",[],[23233,23234,23235],"form:submit:\u003Cid>","form:invalid:\u003Cid>","form:field:*",[],[2899,9008,5317],{"type":22,"value":23239,"toc":24779},[23240,23243,23256,23258,23260,23388,23400,23402,23424,23426,23431,23471,23479,23481,23566,23647,23649,23651,23653,24171,24655,24657,24714,24716,24777],[25,23241,5312],{"id":23242},"stringform",[30,23244,23245,23247,23248,23251,23252,23255],{},[60,23246,5312],{}," turns a native ",[60,23249,23250],{},"\u003Cform>"," into a declarative validation surface. Rules live directly in ",[60,23253,23254],{},"string-input",", helper blocks mirror field state, and successful submit data is emitted through scoped events.",[37,23257,5407],{"id":5406},[174,23259,4905],{"id":4904},[2221,23261,23262,23275],{},[2224,23263,23264],{},[2227,23265,23266,23268,23271,23273],{},[2230,23267,4914],{},[2230,23269,23270],{},"Target",[2230,23272,4920],{},[2230,23274,5424],{},[2240,23276,23277,23293,23309,23332,23346,23371],{},[2227,23278,23279,23283,23287,23290],{},[2245,23280,23281],{},[60,23282,23228],{},[2245,23284,23285],{},[60,23286,23250],{},[2245,23288,23289],{},"required",[2245,23291,23292],{},"Activates the module on that form.",[2227,23294,23295,23299,23303,23306],{},[2245,23296,23297],{},[60,23298,764],{},[2245,23300,23301],{},[60,23302,23250],{},[2245,23304,23305],{},"auto-generated",[2245,23307,23308],{},"Names scoped submit and invalid events.",[2227,23310,23311,23314,23317,23328],{},[2245,23312,23313],{},"`string-input=\"rule",[2245,23315,23316],{},"list\"`",[2245,23318,23319,1833,23322,1833,23325],{},[60,23320,23321],{},"\u003Cinput>",[60,23323,23324],{},"\u003Cselect>",[60,23326,23327],{},"\u003Ctextarea>",[2245,23329,23330],{},[60,23331,6246],{},[2227,23333,23334,23338,23341,23343],{},[2245,23335,23336],{},[60,23337,764],{},[2245,23339,23340],{},"field elements",[2245,23342,1774],{},[2245,23344,23345],{},"Overrides the field key used by group, error, and field events.",[2227,23347,23348,23353,23356,23358],{},[2245,23349,23350],{},[60,23351,23352],{},"string-input=\"group[key]\"",[2245,23354,23355],{},"helper container",[2245,23357,1774],{},[2245,23359,23360,23361,1833,23364,7048,23367,23370],{},"Mirrors ",[60,23362,23363],{},"-valid",[60,23365,23366],{},"-invalid",[60,23368,23369],{},"-error"," from the field with that key.",[2227,23372,23373,23378,23380,23382],{},[2245,23374,23375],{},[60,23376,23377],{},"string-input=\"error[key]\"",[2245,23379,23355],{},[2245,23381,1774],{},[2245,23383,23384,23385,23387],{},"Receives one ",[60,23386,17714],{}," per current error message for that field.",[30,23389,23390,23391,23393,23394,137,23397,106],{},"Rules are parsed with ",[60,23392,1128],{},", and parameterized rules support both ",[60,23395,23396],{},"rule:param",[60,23398,23399],{},"rule(param)",[30,23401,183],{},[42,23403,23404,23409,23414,23419],{},[45,23405,23406],{},[60,23407,23408],{},"required|min:2",[45,23410,23411],{},[60,23412,23413],{},"email",[45,23415,23416],{},[60,23417,23418],{},"same:password",[45,23420,23421],{},[60,23422,23423],{},"pattern(^[a-z0-9-]+$)",[174,23425,5558],{"id":5557},[30,23427,23428,23430],{},[60,23429,5312],{}," does not write CSS variables. Its public output is:",[42,23432,23433,23445,23458,23468],{},[45,23434,23435,23436,1833,23439,1833,23441,1833,23443],{},"classes on fields: ",[60,23437,23438],{},"-inited",[60,23440,23363],{},[60,23442,23366],{},[60,23444,23369],{},[45,23446,23447,23448,23451,23452,1833,23454,1833,23456],{},"mirrored classes on ",[60,23449,23450],{},"group[key]"," helpers: ",[60,23453,23363],{},[60,23455,23366],{},[60,23457,23369],{},[45,23459,23460,23461,23463,23464,23467],{},"rendered error ",[60,23462,17714],{}," nodes inside ",[60,23465,23466],{},"error[key]"," helpers",[45,23469,23470],{},"scoped form and field events",[30,23472,23473,23474,23476,23477,106],{},"The live phase uses ",[60,23475,23366],{},". The submit phase uses ",[60,23478,23369],{},[174,23480,5593],{"id":3814},[2221,23482,23483,23493],{},[2224,23484,23485],{},[2227,23486,23487,23489,23491],{},[2230,23488,5602],{},[2230,23490,5605],{},[2230,23492,5608],{},[2240,23494,23495,23509,23523,23538,23552],{},[2227,23496,23497,23501,23506],{},[2245,23498,23499],{},[60,23500,23233],{},[2245,23502,23503],{},[60,23504,23505],{},"Record\u003Cstring, any>",[2245,23507,23508],{},"The form passes validation on submit",[2227,23510,23511,23515,23520],{},[2245,23512,23513],{},[60,23514,23234],{},[2245,23516,23517],{},[60,23518,23519],{},"void",[2245,23521,23522],{},"Submit is attempted with at least one invalid field",[2227,23524,23525,23530,23535],{},[2245,23526,23527],{},[60,23528,23529],{},"form:field:valid:\u003Ckey>",[2245,23531,23532],{},[60,23533,23534],{},"{ key, field, errors, phase, valid }",[2245,23536,23537],{},"A field becomes valid",[2227,23539,23540,23545,23549],{},[2245,23541,23542],{},[60,23543,23544],{},"form:field:invalid:\u003Ckey>",[2245,23546,23547],{},[60,23548,23534],{},[2245,23550,23551],{},"A field fails live validation",[2227,23553,23554,23559,23563],{},[2245,23555,23556],{},[60,23557,23558],{},"form:field:error:\u003Ckey>",[2245,23560,23561],{},[60,23562,23534],{},[2245,23564,23565],{},"A field fails submit validation",[225,23567,23569],{"className":227,"code":23568,"language":229,"meta":230,"style":230},"stringTune.on('form:submit:contact', (data) => {\n  console.log(data);\n});\n\nstringTune.on('form:field:error:email', ({ errors }) => {\n  console.log(errors);\n});\n",[60,23570,23571,23593,23602,23606,23610,23634,23643],{"__ignoreMap":230},[234,23572,23573,23575,23577,23579,23582,23584,23587,23589,23591],{"class":236,"line":237},[234,23574,296],{"class":244},[234,23576,1536],{"class":281},[234,23578,329],{"class":244},[234,23580,23581],{"class":251},"'form:submit:contact'",[234,23583,2976],{"class":244},[234,23585,23586],{"class":899},"data",[234,23588,903],{"class":244},[234,23590,906],{"class":240},[234,23592,909],{"class":244},[234,23594,23595,23597,23599],{"class":236,"line":258},[234,23596,1482],{"class":244},[234,23598,1485],{"class":281},[234,23600,23601],{"class":244},"(data);\n",[234,23603,23604],{"class":236,"line":265},[234,23605,1040],{"class":244},[234,23607,23608],{"class":236,"line":288},[234,23609,262],{"emptyLinePlaceholder":261},[234,23611,23612,23614,23616,23618,23621,23624,23627,23630,23632],{"class":236,"line":293},[234,23613,296],{"class":244},[234,23615,1536],{"class":281},[234,23617,329],{"class":244},[234,23619,23620],{"class":251},"'form:field:error:email'",[234,23622,23623],{"class":244},", ({ ",[234,23625,23626],{"class":899},"errors",[234,23628,23629],{"class":244}," }) ",[234,23631,906],{"class":240},[234,23633,909],{"class":244},[234,23635,23636,23638,23640],{"class":236,"line":305},[234,23637,1482],{"class":244},[234,23639,1485],{"class":281},[234,23641,23642],{"class":244},"(errors);\n",[234,23644,23645],{"class":236,"line":321},[234,23646,1040],{"class":244},[174,23648,5667],{"id":5666},[30,23650,10483],{},[37,23652,5689],{"id":5688},[225,23654,23656],{"className":338,"code":23655,"language":340,"meta":230,"style":230},"\u003Cform string=\"form\" string-id=\"contact\" class=\"form-demo\">\n  \u003Cdiv class=\"grid\">\n    \u003Cdiv class=\"field\" string-input=\"group[name]\">\n      \u003Clabel for=\"name\">Name\u003C/label>\n      \u003Cinput id=\"name\" name=\"name\" string-input=\"required|min:2\" />\n      \u003Cdiv class=\"errors\" string-input=\"error[name]\">\u003C/div>\n    \u003C/div>\n\n    \u003Cdiv class=\"field\" string-input=\"group[email]\">\n      \u003Clabel for=\"email\">Email\u003C/label>\n      \u003Cinput id=\"email\" name=\"email\" type=\"email\" string-input=\"required|email\" />\n      \u003Cdiv class=\"errors\" string-input=\"error[email]\">\u003C/div>\n    \u003C/div>\n\n    \u003Cdiv class=\"field full\" string-input=\"group[contact-pref]\">\n      \u003Clabel>Preferred contact\u003C/label>\n      \u003Clabel class=\"choice\">\n        \u003Cinput type=\"radio\" name=\"contact-pref\" value=\"email\" string-input=\"required\" />\n        \u003Cspan>Email\u003C/span>\n      \u003C/label>\n      \u003Clabel class=\"choice\">\n        \u003Cinput type=\"radio\" name=\"contact-pref\" value=\"phone\" string-input=\"required\" />\n        \u003Cspan>Phone\u003C/span>\n      \u003C/label>\n      \u003Cdiv class=\"errors\" string-input=\"error[contact-pref]\">\u003C/div>\n    \u003C/div>\n  \u003C/div>\n\n  \u003Cbutton type=\"submit\">Send\u003C/button>\n\u003C/form>\n",[60,23657,23658,23687,23701,23724,23746,23775,23801,23809,23813,23834,23854,23887,23912,23920,23924,23946,23959,23974,24010,24022,24030,24044,24077,24090,24098,24123,24131,24139,24143,24163],{"__ignoreMap":230},[234,23659,23660,23662,23664,23666,23668,23671,23673,23675,23678,23680,23682,23685],{"class":236,"line":237},[234,23661,347],{"class":244},[234,23663,23230],{"class":350},[234,23665,354],{"class":281},[234,23667,357],{"class":244},[234,23669,23670],{"class":251},"\"form\"",[234,23672,363],{"class":281},[234,23674,357],{"class":244},[234,23676,23677],{"class":251},"\"contact\"",[234,23679,1297],{"class":281},[234,23681,357],{"class":244},[234,23683,23684],{"class":251},"\"form-demo\"",[234,23686,376],{"class":244},[234,23688,23689,23691,23693,23695,23697,23699],{"class":236,"line":258},[234,23690,1292],{"class":244},[234,23692,351],{"class":350},[234,23694,1297],{"class":281},[234,23696,357],{"class":244},[234,23698,10540],{"class":251},[234,23700,376],{"class":244},[234,23702,23703,23705,23707,23709,23711,23714,23717,23719,23722],{"class":236,"line":265},[234,23704,1321],{"class":244},[234,23706,351],{"class":350},[234,23708,1297],{"class":281},[234,23710,357],{"class":244},[234,23712,23713],{"class":251},"\"field\"",[234,23715,23716],{"class":281}," string-input",[234,23718,357],{"class":244},[234,23720,23721],{"class":251},"\"group[name]\"",[234,23723,376],{"class":244},[234,23725,23726,23728,23731,23734,23736,23739,23742,23744],{"class":236,"line":288},[234,23727,6398],{"class":244},[234,23729,23730],{"class":350},"label",[234,23732,23733],{"class":281}," for",[234,23735,357],{"class":244},[234,23737,23738],{"class":251},"\"name\"",[234,23740,23741],{"class":244},">Name\u003C/",[234,23743,23730],{"class":350},[234,23745,376],{"class":244},[234,23747,23748,23750,23753,23755,23757,23759,23762,23764,23766,23768,23770,23773],{"class":236,"line":293},[234,23749,6398],{"class":244},[234,23751,23752],{"class":350},"input",[234,23754,5157],{"class":281},[234,23756,357],{"class":244},[234,23758,23738],{"class":251},[234,23760,23761],{"class":281}," name",[234,23763,357],{"class":244},[234,23765,23738],{"class":251},[234,23767,23716],{"class":281},[234,23769,357],{"class":244},[234,23771,23772],{"class":251},"\"required|min:2\"",[234,23774,12339],{"class":244},[234,23776,23777,23779,23781,23783,23785,23788,23790,23792,23795,23797,23799],{"class":236,"line":305},[234,23778,6398],{"class":244},[234,23780,351],{"class":350},[234,23782,1297],{"class":281},[234,23784,357],{"class":244},[234,23786,23787],{"class":251},"\"errors\"",[234,23789,23716],{"class":281},[234,23791,357],{"class":244},[234,23793,23794],{"class":251},"\"error[name]\"",[234,23796,371],{"class":244},[234,23798,351],{"class":350},[234,23800,376],{"class":244},[234,23802,23803,23805,23807],{"class":236,"line":321},[234,23804,6500],{"class":244},[234,23806,351],{"class":350},[234,23808,376],{"class":244},[234,23810,23811],{"class":236,"line":946},[234,23812,262],{"emptyLinePlaceholder":261},[234,23814,23815,23817,23819,23821,23823,23825,23827,23829,23832],{"class":236,"line":955},[234,23816,1321],{"class":244},[234,23818,351],{"class":350},[234,23820,1297],{"class":281},[234,23822,357],{"class":244},[234,23824,23713],{"class":251},[234,23826,23716],{"class":281},[234,23828,357],{"class":244},[234,23830,23831],{"class":251},"\"group[email]\"",[234,23833,376],{"class":244},[234,23835,23836,23838,23840,23842,23844,23847,23850,23852],{"class":236,"line":11},[234,23837,6398],{"class":244},[234,23839,23730],{"class":350},[234,23841,23733],{"class":281},[234,23843,357],{"class":244},[234,23845,23846],{"class":251},"\"email\"",[234,23848,23849],{"class":244},">Email\u003C/",[234,23851,23730],{"class":350},[234,23853,376],{"class":244},[234,23855,23856,23858,23860,23862,23864,23866,23868,23870,23872,23874,23876,23878,23880,23882,23885],{"class":236,"line":980},[234,23857,6398],{"class":244},[234,23859,23752],{"class":350},[234,23861,5157],{"class":281},[234,23863,357],{"class":244},[234,23865,23846],{"class":251},[234,23867,23761],{"class":281},[234,23869,357],{"class":244},[234,23871,23846],{"class":251},[234,23873,1070],{"class":281},[234,23875,357],{"class":244},[234,23877,23846],{"class":251},[234,23879,23716],{"class":281},[234,23881,357],{"class":244},[234,23883,23884],{"class":251},"\"required|email\"",[234,23886,12339],{"class":244},[234,23888,23889,23891,23893,23895,23897,23899,23901,23903,23906,23908,23910],{"class":236,"line":994},[234,23890,6398],{"class":244},[234,23892,351],{"class":350},[234,23894,1297],{"class":281},[234,23896,357],{"class":244},[234,23898,23787],{"class":251},[234,23900,23716],{"class":281},[234,23902,357],{"class":244},[234,23904,23905],{"class":251},"\"error[email]\"",[234,23907,371],{"class":244},[234,23909,351],{"class":350},[234,23911,376],{"class":244},[234,23913,23914,23916,23918],{"class":236,"line":1000},[234,23915,6500],{"class":244},[234,23917,351],{"class":350},[234,23919,376],{"class":244},[234,23921,23922],{"class":236,"line":1005},[234,23923,262],{"emptyLinePlaceholder":261},[234,23925,23926,23928,23930,23932,23934,23937,23939,23941,23944],{"class":236,"line":1013},[234,23927,1321],{"class":244},[234,23929,351],{"class":350},[234,23931,1297],{"class":281},[234,23933,357],{"class":244},[234,23935,23936],{"class":251},"\"field full\"",[234,23938,23716],{"class":281},[234,23940,357],{"class":244},[234,23942,23943],{"class":251},"\"group[contact-pref]\"",[234,23945,376],{"class":244},[234,23947,23948,23950,23952,23955,23957],{"class":236,"line":1019},[234,23949,6398],{"class":244},[234,23951,23730],{"class":350},[234,23953,23954],{"class":244},">Preferred contact\u003C/",[234,23956,23730],{"class":350},[234,23958,376],{"class":244},[234,23960,23961,23963,23965,23967,23969,23972],{"class":236,"line":1025},[234,23962,6398],{"class":244},[234,23964,23730],{"class":350},[234,23966,1297],{"class":281},[234,23968,357],{"class":244},[234,23970,23971],{"class":251},"\"choice\"",[234,23973,376],{"class":244},[234,23975,23976,23978,23980,23982,23984,23987,23989,23991,23994,23997,23999,24001,24003,24005,24008],{"class":236,"line":1031},[234,23977,6434],{"class":244},[234,23979,23752],{"class":350},[234,23981,1070],{"class":281},[234,23983,357],{"class":244},[234,23985,23986],{"class":251},"\"radio\"",[234,23988,23761],{"class":281},[234,23990,357],{"class":244},[234,23992,23993],{"class":251},"\"contact-pref\"",[234,23995,23996],{"class":281}," value",[234,23998,357],{"class":244},[234,24000,23846],{"class":251},[234,24002,23716],{"class":281},[234,24004,357],{"class":244},[234,24006,24007],{"class":251},"\"required\"",[234,24009,12339],{"class":244},[234,24011,24012,24014,24016,24018,24020],{"class":236,"line":1037},[234,24013,6434],{"class":244},[234,24015,234],{"class":350},[234,24017,23849],{"class":244},[234,24019,234],{"class":350},[234,24021,376],{"class":244},[234,24023,24024,24026,24028],{"class":236,"line":427},[234,24025,6491],{"class":244},[234,24027,23730],{"class":350},[234,24029,376],{"class":244},[234,24031,24032,24034,24036,24038,24040,24042],{"class":236,"line":1571},[234,24033,6398],{"class":244},[234,24035,23730],{"class":350},[234,24037,1297],{"class":281},[234,24039,357],{"class":244},[234,24041,23971],{"class":251},[234,24043,376],{"class":244},[234,24045,24046,24048,24050,24052,24054,24056,24058,24060,24062,24064,24066,24069,24071,24073,24075],{"class":236,"line":1592},[234,24047,6434],{"class":244},[234,24049,23752],{"class":350},[234,24051,1070],{"class":281},[234,24053,357],{"class":244},[234,24055,23986],{"class":251},[234,24057,23761],{"class":281},[234,24059,357],{"class":244},[234,24061,23993],{"class":251},[234,24063,23996],{"class":281},[234,24065,357],{"class":244},[234,24067,24068],{"class":251},"\"phone\"",[234,24070,23716],{"class":281},[234,24072,357],{"class":244},[234,24074,24007],{"class":251},[234,24076,12339],{"class":244},[234,24078,24079,24081,24083,24086,24088],{"class":236,"line":1600},[234,24080,6434],{"class":244},[234,24082,234],{"class":350},[234,24084,24085],{"class":244},">Phone\u003C/",[234,24087,234],{"class":350},[234,24089,376],{"class":244},[234,24091,24092,24094,24096],{"class":236,"line":1615},[234,24093,6491],{"class":244},[234,24095,23730],{"class":350},[234,24097,376],{"class":244},[234,24099,24100,24102,24104,24106,24108,24110,24112,24114,24117,24119,24121],{"class":236,"line":1620},[234,24101,6398],{"class":244},[234,24103,351],{"class":350},[234,24105,1297],{"class":281},[234,24107,357],{"class":244},[234,24109,23787],{"class":251},[234,24111,23716],{"class":281},[234,24113,357],{"class":244},[234,24115,24116],{"class":251},"\"error[contact-pref]\"",[234,24118,371],{"class":244},[234,24120,351],{"class":350},[234,24122,376],{"class":244},[234,24124,24125,24127,24129],{"class":236,"line":1625},[234,24126,6500],{"class":244},[234,24128,351],{"class":350},[234,24130,376],{"class":244},[234,24132,24133,24135,24137],{"class":236,"line":1634},[234,24134,1393],{"class":244},[234,24136,351],{"class":350},[234,24138,376],{"class":244},[234,24140,24141],{"class":236,"line":1639},[234,24142,262],{"emptyLinePlaceholder":261},[234,24144,24145,24147,24149,24151,24153,24156,24159,24161],{"class":236,"line":1651},[234,24146,1292],{"class":244},[234,24148,1359],{"class":350},[234,24150,1070],{"class":281},[234,24152,357],{"class":244},[234,24154,24155],{"class":251},"\"submit\"",[234,24157,24158],{"class":244},">Send\u003C/",[234,24160,1359],{"class":350},[234,24162,376],{"class":244},[234,24164,24165,24167,24169],{"class":236,"line":609},[234,24166,1402],{"class":244},[234,24168,23230],{"class":350},[234,24170,376],{"class":244},[225,24172,24174],{"className":5857,"code":24173,"language":5859,"meta":230,"style":230},".form-demo {\n  display: grid;\n  gap: 20px;\n  border: 1px solid black;\n  padding: 24px;\n}\n\n.grid {\n  display: grid;\n  grid-template-columns: repeat(2, minmax(0, 1fr));\n  gap: 20px;\n}\n\n.field {\n  display: grid;\n  gap: 8px;\n  padding: 12px;\n  border: 1px solid black;\n}\n\n.field input,\n.field select,\n.field textarea,\n.form-demo button {\n  min-height: 48px;\n  border: 1px solid black;\n  background: white;\n  color: black;\n  padding: 0 12px;\n}\n\n.field.-error input,\n.field.-error select,\n.field.-error textarea {\n  border-color: #c00;\n  color: #c00;\n}\n\n.choice {\n  display: flex;\n  gap: 10px;\n  align-items: center;\n}\n\n.full {\n  grid-column: 1 / -1;\n}\n\n.errors {\n  min-height: 18px;\n  font-size: 12px;\n  color: #c00;\n}\n",[60,24175,24176,24183,24193,24205,24221,24233,24237,24241,24247,24257,24285,24297,24301,24305,24312,24322,24334,24346,24362,24366,24370,24379,24388,24397,24406,24419,24435,24445,24455,24470,24474,24478,24487,24495,24503,24515,24525,24529,24533,24540,24550,24562,24572,24576,24580,24587,24602,24606,24610,24617,24629,24641,24651],{"__ignoreMap":230},[234,24177,24178,24181],{"class":236,"line":237},[234,24179,24180],{"class":281},".form-demo",[234,24182,909],{"class":244},[234,24184,24185,24187,24189,24191],{"class":236,"line":258},[234,24186,1677],{"class":271},[234,24188,1443],{"class":244},[234,24190,1682],{"class":271},[234,24192,255],{"class":244},[234,24194,24195,24197,24199,24201,24203],{"class":236,"line":265},[234,24196,1703],{"class":271},[234,24198,1443],{"class":244},[234,24200,5942],{"class":271},[234,24202,1789],{"class":240},[234,24204,255],{"class":244},[234,24206,24207,24209,24211,24213,24215,24217,24219],{"class":236,"line":288},[234,24208,1769],{"class":271},[234,24210,1443],{"class":244},[234,24212,1754],{"class":271},[234,24214,1789],{"class":240},[234,24216,6013],{"class":271},[234,24218,6016],{"class":271},[234,24220,255],{"class":244},[234,24222,24223,24225,24227,24229,24231],{"class":236,"line":293},[234,24224,1749],{"class":271},[234,24226,1443],{"class":244},[234,24228,6740],{"class":271},[234,24230,1789],{"class":240},[234,24232,255],{"class":244},[234,24234,24235],{"class":236,"line":305},[234,24236,1143],{"class":244},[234,24238,24239],{"class":236,"line":321},[234,24240,262],{"emptyLinePlaceholder":261},[234,24242,24243,24245],{"class":236,"line":946},[234,24244,10988],{"class":281},[234,24246,909],{"class":244},[234,24248,24249,24251,24253,24255],{"class":236,"line":955},[234,24250,1677],{"class":271},[234,24252,1443],{"class":244},[234,24254,1682],{"class":271},[234,24256,255],{"class":244},[234,24258,24259,24261,24263,24265,24267,24269,24271,24273,24275,24277,24279,24281,24283],{"class":236,"line":11},[234,24260,6774],{"class":271},[234,24262,1443],{"class":244},[234,24264,9604],{"class":271},[234,24266,329],{"class":244},[234,24268,6008],{"class":271},[234,24270,1833],{"class":244},[234,24272,9614],{"class":271},[234,24274,329],{"class":244},[234,24276,1836],{"class":271},[234,24278,1833],{"class":244},[234,24280,1754],{"class":271},[234,24282,6786],{"class":240},[234,24284,1875],{"class":244},[234,24286,24287,24289,24291,24293,24295],{"class":236,"line":980},[234,24288,1703],{"class":271},[234,24290,1443],{"class":244},[234,24292,5942],{"class":271},[234,24294,1789],{"class":240},[234,24296,255],{"class":244},[234,24298,24299],{"class":236,"line":994},[234,24300,1143],{"class":244},[234,24302,24303],{"class":236,"line":1000},[234,24304,262],{"emptyLinePlaceholder":261},[234,24306,24307,24310],{"class":236,"line":1005},[234,24308,24309],{"class":281},".field",[234,24311,909],{"class":244},[234,24313,24314,24316,24318,24320],{"class":236,"line":1013},[234,24315,1677],{"class":271},[234,24317,1443],{"class":244},[234,24319,1682],{"class":271},[234,24321,255],{"class":244},[234,24323,24324,24326,24328,24330,24332],{"class":236,"line":1019},[234,24325,1703],{"class":271},[234,24327,1443],{"class":244},[234,24329,9940],{"class":271},[234,24331,1789],{"class":240},[234,24333,255],{"class":244},[234,24335,24336,24338,24340,24342,24344],{"class":236,"line":1025},[234,24337,1749],{"class":271},[234,24339,1443],{"class":244},[234,24341,8276],{"class":271},[234,24343,1789],{"class":240},[234,24345,255],{"class":244},[234,24347,24348,24350,24352,24354,24356,24358,24360],{"class":236,"line":1031},[234,24349,1769],{"class":271},[234,24351,1443],{"class":244},[234,24353,1754],{"class":271},[234,24355,1789],{"class":240},[234,24357,6013],{"class":271},[234,24359,6016],{"class":271},[234,24361,255],{"class":244},[234,24363,24364],{"class":236,"line":1037},[234,24365,1143],{"class":244},[234,24367,24368],{"class":236,"line":427},[234,24369,262],{"emptyLinePlaceholder":261},[234,24371,24372,24374,24377],{"class":236,"line":1571},[234,24373,24309],{"class":281},[234,24375,24376],{"class":350}," input",[234,24378,2506],{"class":244},[234,24380,24381,24383,24386],{"class":236,"line":1592},[234,24382,24309],{"class":281},[234,24384,24385],{"class":350}," select",[234,24387,2506],{"class":244},[234,24389,24390,24392,24395],{"class":236,"line":1600},[234,24391,24309],{"class":281},[234,24393,24394],{"class":350}," textarea",[234,24396,2506],{"class":244},[234,24398,24399,24401,24404],{"class":236,"line":1615},[234,24400,24180],{"class":281},[234,24402,24403],{"class":350}," button",[234,24405,909],{"class":244},[234,24407,24408,24410,24412,24415,24417],{"class":236,"line":1620},[234,24409,1661],{"class":271},[234,24411,1443],{"class":244},[234,24413,24414],{"class":271},"48",[234,24416,1789],{"class":240},[234,24418,255],{"class":244},[234,24420,24421,24423,24425,24427,24429,24431,24433],{"class":236,"line":1625},[234,24422,1769],{"class":271},[234,24424,1443],{"class":244},[234,24426,1754],{"class":271},[234,24428,1789],{"class":240},[234,24430,6013],{"class":271},[234,24432,6016],{"class":271},[234,24434,255],{"class":244},[234,24436,24437,24439,24441,24443],{"class":236,"line":1634},[234,24438,6023],{"class":271},[234,24440,1443],{"class":244},[234,24442,6028],{"class":271},[234,24444,255],{"class":244},[234,24446,24447,24449,24451,24453],{"class":236,"line":1639},[234,24448,11568],{"class":271},[234,24450,1443],{"class":244},[234,24452,9965],{"class":271},[234,24454,255],{"class":244},[234,24456,24457,24459,24461,24463,24466,24468],{"class":236,"line":1651},[234,24458,1749],{"class":271},[234,24460,1443],{"class":244},[234,24462,1836],{"class":271},[234,24464,24465],{"class":271}," 12",[234,24467,1789],{"class":240},[234,24469,255],{"class":244},[234,24471,24472],{"class":236,"line":609},[234,24473,1143],{"class":244},[234,24475,24476],{"class":236,"line":1674},[234,24477,262],{"emptyLinePlaceholder":261},[234,24479,24480,24483,24485],{"class":236,"line":1687},[234,24481,24482],{"class":281},".field.-error",[234,24484,24376],{"class":350},[234,24486,2506],{"class":244},[234,24488,24489,24491,24493],{"class":236,"line":1700},[234,24490,24482],{"class":281},[234,24492,24385],{"class":350},[234,24494,2506],{"class":244},[234,24496,24497,24499,24501],{"class":236,"line":1716},[234,24498,24482],{"class":281},[234,24500,24394],{"class":350},[234,24502,909],{"class":244},[234,24504,24505,24508,24510,24513],{"class":236,"line":1721},[234,24506,24507],{"class":271},"  border-color",[234,24509,1443],{"class":244},[234,24511,24512],{"class":271},"#c00",[234,24514,255],{"class":244},[234,24516,24517,24519,24521,24523],{"class":236,"line":1726},[234,24518,11568],{"class":271},[234,24520,1443],{"class":244},[234,24522,24512],{"class":271},[234,24524,255],{"class":244},[234,24526,24527],{"class":236,"line":1734},[234,24528,1143],{"class":244},[234,24530,24531],{"class":236,"line":1746},[234,24532,262],{"emptyLinePlaceholder":261},[234,24534,24535,24538],{"class":236,"line":1766},[234,24536,24537],{"class":281},".choice",[234,24539,909],{"class":244},[234,24541,24542,24544,24546,24548],{"class":236,"line":819},[234,24543,1677],{"class":271},[234,24545,1443],{"class":244},[234,24547,12585],{"class":271},[234,24549,255],{"class":244},[234,24551,24552,24554,24556,24558,24560],{"class":236,"line":1794},[234,24553,1703],{"class":271},[234,24555,1443],{"class":244},[234,24557,14727],{"class":271},[234,24559,1789],{"class":240},[234,24561,255],{"class":244},[234,24563,24564,24566,24568,24570],{"class":236,"line":1807},[234,24565,6805],{"class":271},[234,24567,1443],{"class":244},[234,24569,1695],{"class":271},[234,24571,255],{"class":244},[234,24573,24574],{"class":236,"line":1878},[234,24575,1143],{"class":244},[234,24577,24578],{"class":236,"line":1883},[234,24579,262],{"emptyLinePlaceholder":261},[234,24581,24582,24585],{"class":236,"line":9991},[234,24583,24584],{"class":281},".full",[234,24586,909],{"class":244},[234,24588,24589,24592,24594,24596,24598,24600],{"class":236,"line":9999},[234,24590,24591],{"class":271},"  grid-column",[234,24593,1443],{"class":244},[234,24595,1754],{"class":271},[234,24597,4253],{"class":244},[234,24599,11942],{"class":271},[234,24601,255],{"class":244},[234,24603,24604],{"class":236,"line":10013},[234,24605,1143],{"class":244},[234,24607,24608],{"class":236,"line":10027},[234,24609,262],{"emptyLinePlaceholder":261},[234,24611,24612,24615],{"class":236,"line":10032},[234,24613,24614],{"class":281},".errors",[234,24616,909],{"class":244},[234,24618,24619,24621,24623,24625,24627],{"class":236,"line":1908},[234,24620,1661],{"class":271},[234,24622,1443],{"class":244},[234,24624,14871],{"class":271},[234,24626,1789],{"class":240},[234,24628,255],{"class":244},[234,24630,24631,24633,24635,24637,24639],{"class":236,"line":10044},[234,24632,9886],{"class":271},[234,24634,1443],{"class":244},[234,24636,8276],{"class":271},[234,24638,1789],{"class":240},[234,24640,255],{"class":244},[234,24642,24643,24645,24647,24649],{"class":236,"line":10058},[234,24644,11568],{"class":271},[234,24646,1443],{"class":244},[234,24648,24512],{"class":271},[234,24650,255],{"class":244},[234,24652,24653],{"class":236,"line":10071},[234,24654,1143],{"class":244},[37,24656,6074],{"id":6073},[225,24658,24660],{"className":227,"code":24659,"language":229,"meta":230,"style":230},"import StringTune, { StringForm } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\nstringTune.use(StringForm);\nstringTune.start(60);\n",[60,24661,24662,24675,24679,24693,24702],{"__ignoreMap":230},[234,24663,24664,24666,24669,24671,24673],{"class":236,"line":237},[234,24665,241],{"class":240},[234,24667,24668],{"class":244}," StringTune, { StringForm } ",[234,24670,248],{"class":240},[234,24672,252],{"class":251},[234,24674,255],{"class":244},[234,24676,24677],{"class":236,"line":258},[234,24678,262],{"emptyLinePlaceholder":261},[234,24680,24681,24683,24685,24687,24689,24691],{"class":236,"line":265},[234,24682,268],{"class":240},[234,24684,272],{"class":271},[234,24686,275],{"class":240},[234,24688,278],{"class":244},[234,24690,282],{"class":281},[234,24692,285],{"class":244},[234,24694,24695,24697,24699],{"class":236,"line":288},[234,24696,296],{"class":244},[234,24698,299],{"class":281},[234,24700,24701],{"class":244},"(StringForm);\n",[234,24703,24704,24706,24708,24710,24712],{"class":236,"line":293},[234,24705,296],{"class":244},[234,24707,326],{"class":281},[234,24709,329],{"class":244},[234,24711,332],{"class":271},[234,24713,335],{"class":244},[37,24715,6133],{"id":6132},[42,24717,24718,24729,24735,24738,24748,24774],{},[45,24719,24720,24721,1833,24723,1833,24726,24728],{},"Field keys resolve in this order: ",[60,24722,764],{},[60,24724,24725],{},"name",[60,24727,4269],{},", generated fallback.",[45,24730,24731,24732,24734],{},"Checkbox groups with the same ",[60,24733,24725],{}," return an array when multiple values are checked.",[45,24736,24737],{},"Radio groups emit the selected value, or an empty string when nothing is selected.",[45,24739,24740,24741,1934,24744,24747],{},"File inputs emit ",[60,24742,24743],{},"File",[60,24745,24746],{},"File[]"," values when files are present.",[45,24749,24750,24751,24754,24755,1833,24757,1833,24760,1833,24762,1833,24765,1833,24768,7048,24771,106],{},"The module blocks illegal keystrokes during ",[60,24752,24753],{},"beforeinput"," for rules such as ",[60,24756,5621],{},[60,24758,24759],{},"integer",[60,24761,23413],{},[60,24763,24764],{},"phone",[60,24766,24767],{},"digits",[60,24769,24770],{},"url",[60,24772,24773],{},"pattern",[45,24775,24776],{},"On failed submit, the first invalid field is focused automatically.",[410,24778,6155],{},{"title":230,"searchDepth":258,"depth":258,"links":24780},[24781,24787,24788,24789],{"id":5406,"depth":258,"text":5407,"children":24782},[24783,24784,24785,24786],{"id":4904,"depth":265,"text":4905},{"id":5557,"depth":265,"text":5558},{"id":3814,"depth":265,"text":5593},{"id":5666,"depth":265,"text":5667},{"id":5688,"depth":258,"text":5689},{"id":6073,"depth":258,"text":6074},{"id":6132,"depth":258,"text":6133},{"path":5317,"title":205,"description":24791,"kind":5369,"section":5187,"order":24792,"group":5305,"parentPath":-1,"status":5370,"integration":11669,"publicExport":261,"activation":24793,"package":5371,"aliases":24794,"attrs":24797,"events":24798,"cssVars":24799,"related":24800,"body":24801},"Global loading gate that flips ready state after a configured timeout.",320,"stringTune.use(StringLoading, { timeout })",[24795,205,24796],"loading","timeout",[],[],[],[5322,5328,2463],{"type":22,"value":24802,"toc":25281},[24803,24806,24817,24819,24821,24824,24827,24865,24872,24874,24879,24886,24889,24891,24894,24896,24898,24900,24968,25197,25199,25260,25262,25279],[25,24804,205],{"id":24805},"stringloading",[30,24807,24808,24810,24811,11943,24814,106],{},[60,24809,205],{}," is a global timing module. It does not bind to elements. After the configured timeout, it adds ",[60,24812,24813],{},"-loaded",[60,24815,24816],{},"document.documentElement",[37,24818,5407],{"id":5406},[174,24820,4905],{"id":4904},[30,24822,24823],{},"This module does not read any HTML activation attributes.",[174,24825,24826],{"id":2452},"Settings",[2221,24828,24829,24842],{},[2224,24830,24831],{},[2227,24832,24833,24836,24838,24840],{},[2230,24834,24835],{},"Setting",[2230,24837,4917],{},[2230,24839,4920],{},[2230,24841,5424],{},[2240,24843,24844],{},[2227,24845,24846,24850,24852,24856],{},[2245,24847,24848],{},[60,24849,24796],{},[2245,24851,5621],{},[2245,24853,24854],{},[60,24855,2537],{},[2245,24857,24858,24859,24861,24862,106],{},"Delay in milliseconds before ",[60,24860,24813],{}," is added to ",[60,24863,24864],{},"\u003Chtml>",[30,24866,24867,24868,24871],{},"There is no ",[60,24869,24870],{},"string-timeout"," DOM attribute for this module.",[174,24873,5558],{"id":5557},[30,24875,24876,24878],{},[60,24877,205],{}," writes one thing:",[42,24880,24881],{},[45,24882,24883],{},[60,24884,24885],{},"document.documentElement.classList.add('-loaded')",[30,24887,24888],{},"It does not write CSS variables or inline styles.",[174,24890,5593],{"id":3814},[30,24892,24893],{},"This module does not emit public events.",[174,24895,5667],{"id":5666},[30,24897,10483],{},[37,24899,5689],{"id":5688},[225,24901,24903],{"className":338,"code":24902,"language":340,"meta":230,"style":230},"\u003Cdiv class=\"loading-demo\">\n  \u003Cdiv class=\"panel loading-panel\">Loading\u003C/div>\n  \u003Cdiv class=\"panel ready-panel\">Ready\u003C/div>\n\u003C/div>\n",[60,24904,24905,24920,24940,24960],{"__ignoreMap":230},[234,24906,24907,24909,24911,24913,24915,24918],{"class":236,"line":237},[234,24908,347],{"class":244},[234,24910,351],{"class":350},[234,24912,1297],{"class":281},[234,24914,357],{"class":244},[234,24916,24917],{"class":251},"\"loading-demo\"",[234,24919,376],{"class":244},[234,24921,24922,24924,24926,24928,24930,24933,24936,24938],{"class":236,"line":258},[234,24923,1292],{"class":244},[234,24925,351],{"class":350},[234,24927,1297],{"class":281},[234,24929,357],{"class":244},[234,24931,24932],{"class":251},"\"panel loading-panel\"",[234,24934,24935],{"class":244},">Loading\u003C/",[234,24937,351],{"class":350},[234,24939,376],{"class":244},[234,24941,24942,24944,24946,24948,24950,24953,24956,24958],{"class":236,"line":265},[234,24943,1292],{"class":244},[234,24945,351],{"class":350},[234,24947,1297],{"class":281},[234,24949,357],{"class":244},[234,24951,24952],{"class":251},"\"panel ready-panel\"",[234,24954,24955],{"class":244},">Ready\u003C/",[234,24957,351],{"class":350},[234,24959,376],{"class":244},[234,24961,24962,24964,24966],{"class":236,"line":288},[234,24963,1402],{"class":244},[234,24965,351],{"class":350},[234,24967,376],{"class":244},[225,24969,24971],{"className":5857,"code":24970,"language":5859,"meta":230,"style":230},".loading-demo {\n  height: 50vh;\n  display: grid;\n  place-items: center;\n}\n\n.panel {\n  min-width: 180px;\n  min-height: 48px;\n  display: grid;\n  place-items: center;\n  border: 1px solid black;\n  background: white;\n  color: black;\n}\n\n.ready-panel {\n  display: none;\n}\n\nhtml.-loaded .loading-panel {\n  display: none;\n}\n\nhtml.-loaded .ready-panel {\n  display: grid;\n}\n",[60,24972,24973,24980,24992,25002,25012,25016,25020,25027,25041,25053,25063,25073,25089,25099,25109,25113,25117,25124,25134,25138,25142,25154,25164,25168,25172,25183,25193],{"__ignoreMap":230},[234,24974,24975,24978],{"class":236,"line":237},[234,24976,24977],{"class":281},".loading-demo",[234,24979,909],{"class":244},[234,24981,24982,24984,24986,24988,24990],{"class":236,"line":258},[234,24983,5991],{"class":271},[234,24985,1443],{"class":244},[234,24987,10051],{"class":271},[234,24989,1669],{"class":240},[234,24991,255],{"class":244},[234,24993,24994,24996,24998,25000],{"class":236,"line":265},[234,24995,1677],{"class":271},[234,24997,1443],{"class":244},[234,24999,1682],{"class":271},[234,25001,255],{"class":244},[234,25003,25004,25006,25008,25010],{"class":236,"line":288},[234,25005,5902],{"class":271},[234,25007,1443],{"class":244},[234,25009,1695],{"class":271},[234,25011,255],{"class":244},[234,25013,25014],{"class":236,"line":293},[234,25015,1143],{"class":244},[234,25017,25018],{"class":236,"line":305},[234,25019,262],{"emptyLinePlaceholder":261},[234,25021,25022,25025],{"class":236,"line":321},[234,25023,25024],{"class":281},".panel",[234,25026,909],{"class":244},[234,25028,25029,25032,25034,25037,25039],{"class":236,"line":946},[234,25030,25031],{"class":271},"  min-width",[234,25033,1443],{"class":244},[234,25035,25036],{"class":271},"180",[234,25038,1789],{"class":240},[234,25040,255],{"class":244},[234,25042,25043,25045,25047,25049,25051],{"class":236,"line":955},[234,25044,1661],{"class":271},[234,25046,1443],{"class":244},[234,25048,24414],{"class":271},[234,25050,1789],{"class":240},[234,25052,255],{"class":244},[234,25054,25055,25057,25059,25061],{"class":236,"line":11},[234,25056,1677],{"class":271},[234,25058,1443],{"class":244},[234,25060,1682],{"class":271},[234,25062,255],{"class":244},[234,25064,25065,25067,25069,25071],{"class":236,"line":980},[234,25066,5902],{"class":271},[234,25068,1443],{"class":244},[234,25070,1695],{"class":271},[234,25072,255],{"class":244},[234,25074,25075,25077,25079,25081,25083,25085,25087],{"class":236,"line":994},[234,25076,1769],{"class":271},[234,25078,1443],{"class":244},[234,25080,1754],{"class":271},[234,25082,1789],{"class":240},[234,25084,6013],{"class":271},[234,25086,6016],{"class":271},[234,25088,255],{"class":244},[234,25090,25091,25093,25095,25097],{"class":236,"line":1000},[234,25092,6023],{"class":271},[234,25094,1443],{"class":244},[234,25096,6028],{"class":271},[234,25098,255],{"class":244},[234,25100,25101,25103,25105,25107],{"class":236,"line":1005},[234,25102,11568],{"class":271},[234,25104,1443],{"class":244},[234,25106,9965],{"class":271},[234,25108,255],{"class":244},[234,25110,25111],{"class":236,"line":1013},[234,25112,1143],{"class":244},[234,25114,25115],{"class":236,"line":1019},[234,25116,262],{"emptyLinePlaceholder":261},[234,25118,25119,25122],{"class":236,"line":1025},[234,25120,25121],{"class":281},".ready-panel",[234,25123,909],{"class":244},[234,25125,25126,25128,25130,25132],{"class":236,"line":1031},[234,25127,1677],{"class":271},[234,25129,1443],{"class":244},[234,25131,1774],{"class":271},[234,25133,255],{"class":244},[234,25135,25136],{"class":236,"line":1037},[234,25137,1143],{"class":244},[234,25139,25140],{"class":236,"line":427},[234,25141,262],{"emptyLinePlaceholder":261},[234,25143,25144,25146,25149,25152],{"class":236,"line":1571},[234,25145,340],{"class":350},[234,25147,25148],{"class":281},".-loaded",[234,25150,25151],{"class":281}," .loading-panel",[234,25153,909],{"class":244},[234,25155,25156,25158,25160,25162],{"class":236,"line":1592},[234,25157,1677],{"class":271},[234,25159,1443],{"class":244},[234,25161,1774],{"class":271},[234,25163,255],{"class":244},[234,25165,25166],{"class":236,"line":1600},[234,25167,1143],{"class":244},[234,25169,25170],{"class":236,"line":1615},[234,25171,262],{"emptyLinePlaceholder":261},[234,25173,25174,25176,25178,25181],{"class":236,"line":1620},[234,25175,340],{"class":350},[234,25177,25148],{"class":281},[234,25179,25180],{"class":281}," .ready-panel",[234,25182,909],{"class":244},[234,25184,25185,25187,25189,25191],{"class":236,"line":1625},[234,25186,1677],{"class":271},[234,25188,1443],{"class":244},[234,25190,1682],{"class":271},[234,25192,255],{"class":244},[234,25194,25195],{"class":236,"line":1634},[234,25196,1143],{"class":244},[37,25198,6074],{"id":6073},[225,25200,25202],{"className":227,"code":25201,"language":229,"meta":230,"style":230},"import StringTune, { StringLoading } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\nstringTune.use(StringLoading, { timeout: 900 });\nstringTune.start(60);\n",[60,25203,25204,25217,25221,25235,25248],{"__ignoreMap":230},[234,25205,25206,25208,25211,25213,25215],{"class":236,"line":237},[234,25207,241],{"class":240},[234,25209,25210],{"class":244}," StringTune, { StringLoading } ",[234,25212,248],{"class":240},[234,25214,252],{"class":251},[234,25216,255],{"class":244},[234,25218,25219],{"class":236,"line":258},[234,25220,262],{"emptyLinePlaceholder":261},[234,25222,25223,25225,25227,25229,25231,25233],{"class":236,"line":265},[234,25224,268],{"class":240},[234,25226,272],{"class":271},[234,25228,275],{"class":240},[234,25230,278],{"class":244},[234,25232,282],{"class":281},[234,25234,285],{"class":244},[234,25236,25237,25239,25241,25244,25246],{"class":236,"line":288},[234,25238,296],{"class":244},[234,25240,299],{"class":281},[234,25242,25243],{"class":244},"(StringLoading, { timeout: ",[234,25245,2537],{"class":271},[234,25247,318],{"class":244},[234,25249,25250,25252,25254,25256,25258],{"class":236,"line":293},[234,25251,296],{"class":244},[234,25253,326],{"class":281},[234,25255,329],{"class":244},[234,25257,332],{"class":271},[234,25259,335],{"class":244},[37,25261,6133],{"id":6132},[42,25263,25264,25267,25273],{},[45,25265,25266],{},"The class is added once, after the timeout expires.",[45,25268,25269,25270,25272],{},"The module does not remove ",[60,25271,24813],{}," later.",[45,25274,25275,25276,106],{},"If you need transitions, write them in CSS against ",[60,25277,25278],{},"html.-loaded",[410,25280,8986],{},{"title":230,"searchDepth":258,"depth":258,"links":25282},[25283,25290,25291,25292],{"id":5406,"depth":258,"text":5407,"children":25284},[25285,25286,25287,25288,25289],{"id":4904,"depth":265,"text":4905},{"id":2452,"depth":265,"text":24826},{"id":5557,"depth":265,"text":5558},{"id":3814,"depth":265,"text":5593},{"id":5666,"depth":265,"text":5667},{"id":5688,"depth":258,"text":5689},{"id":6073,"depth":258,"text":6074},{"id":6132,"depth":258,"text":6133},{"path":5322,"title":5323,"description":25294,"kind":5369,"section":5187,"order":25295,"group":5305,"parentPath":-1,"status":5370,"integration":2706,"publicExport":261,"activation":25296,"package":5371,"aliases":25297,"attrs":25299,"events":25300,"cssVars":25301,"related":25302,"body":25303},"Viewport-aware media loading helper for images and other deferred assets.",330,"string=\"lazy\"",[25298,5323],"lazy",[],[],[],[5317,5328,2899],{"type":22,"value":25304,"toc":25966},[25305,25308,25320,25322,25324,25370,25382,25384,25389,25429,25439,25444,25446,25474,25513,25515,25517,25519,25627,25883,25885,25942,25944,25963],[25,25306,5323],{"id":25307},"stringlazy",[30,25309,25310,25312,25313,25315,25316,25319],{},[60,25311,5323],{}," is an image module. It activates on ",[60,25314,17721],{}," elements, reads the real image URL from ",[60,25317,25318],{},"string-lazy",", waits until the object is in view, and then swaps in the final source.",[37,25321,5407],{"id":5406},[174,25323,4905],{"id":4904},[2221,25325,25326,25338],{},[2224,25327,25328],{},[2227,25329,25330,25332,25334,25336],{},[2230,25331,4914],{},[2230,25333,23270],{},[2230,25335,4920],{},[2230,25337,5424],{},[2240,25339,25340,25355],{},[2227,25341,25342,25346,25350,25352],{},[2245,25343,25344],{},[60,25345,25296],{},[2245,25347,25348],{},[60,25349,17721],{},[2245,25351,23289],{},[2245,25353,25354],{},"Activates the module for that image object.",[2227,25356,25357,25361,25365,25367],{},[2245,25358,25359],{},[60,25360,25318],{},[2245,25362,25363],{},[60,25364,17721],{},[2245,25366,23289],{},[2245,25368,25369],{},"Real image source used when the object becomes active.",[30,25371,25372,25374,25375,25377,25378,25381],{},[60,25373,5323],{}," only works on ",[60,25376,17721],{},". A ",[60,25379,25380],{},"\u003Cdiv string=\"lazy\">"," will be ignored by the runtime.",[174,25383,5558],{"id":5557},[30,25385,25386,25388],{},[60,25387,5323],{}," writes:",[42,25390,25391,25398,25404,25410,25416,25421],{},[45,25392,25393,25394,25397],{},"a placeholder ",[60,25395,25396],{},"src"," when the image starts without one",[45,25399,7227,25400,25403],{},[60,25401,25402],{},"aspect-ratio"," once dimensions are known",[45,25405,18925,25406,25409],{},[60,25407,25408],{},"lazyLoad"," when state is initialized",[45,25411,18925,25412,25415],{},[60,25413,25414],{},"-aspect-ready"," when dimensions are known",[45,25417,18925,25418,25420],{},[60,25419,24813],{}," after the final image has loaded",[45,25422,25423,137,25426],{},[60,25424,25425],{},"img.loading = \"lazy\"",[60,25427,25428],{},"img.decoding = \"async\"",[30,25430,25431,25432,137,25435,25438],{},"If a blob URL is used internally, the module also clears ",[60,25433,25434],{},"srcset",[60,25436,25437],{},"sizes"," before swapping the source.",[30,25440,25441,25443],{},[60,25442,5323],{}," does not expose public CSS variables.",[174,25445,5593],{"id":3814},[2221,25447,25448,25458],{},[2224,25449,25450],{},[2227,25451,25452,25454,25456],{},[2230,25453,5602],{},[2230,25455,5605],{},[2230,25457,5608],{},[2240,25459,25460],{},[2227,25461,25462,25467,25471],{},[2245,25463,25464],{},[60,25465,25466],{},"image:load:all",[2245,25468,25469],{},[60,25470,12088],{},[2245,25472,25473],{},"All currently pending lazy images have finished loading",[225,25475,25477],{"className":227,"code":25476,"language":229,"meta":230,"style":230},"stringTune.on('image:load:all', () => {\n  console.log('All lazy images are ready');\n});\n",[60,25478,25479,25496,25509],{"__ignoreMap":230},[234,25480,25481,25483,25485,25487,25490,25492,25494],{"class":236,"line":237},[234,25482,296],{"class":244},[234,25484,1536],{"class":281},[234,25486,329],{"class":244},[234,25488,25489],{"class":251},"'image:load:all'",[234,25491,973],{"class":244},[234,25493,906],{"class":240},[234,25495,909],{"class":244},[234,25497,25498,25500,25502,25504,25507],{"class":236,"line":258},[234,25499,1482],{"class":244},[234,25501,1485],{"class":281},[234,25503,329],{"class":244},[234,25505,25506],{"class":251},"'All lazy images are ready'",[234,25508,335],{"class":244},[234,25510,25511],{"class":236,"line":265},[234,25512,1040],{"class":244},[174,25514,5667],{"id":5666},[30,25516,10483],{},[37,25518,5689],{"id":5688},[225,25520,25522],{"className":338,"code":25521,"language":340,"meta":230,"style":230},"\u003Cdiv class=\"lazy-spacer\">Scroll down\u003C/div>\n\n\u003Cimg\n  string=\"lazy\"\n  string-lazy=\"/images/home/string-scroll.jpg\"\n  alt=\"String Scroll\"\n  class=\"lazy-image\"\n/>\n\n\u003Cdiv class=\"lazy-status\" id=\"lazy-status\">Waiting\u003C/div>\n",[60,25523,25524,25543,25547,25554,25563,25573,25583,25592,25597,25601],{"__ignoreMap":230},[234,25525,25526,25528,25530,25532,25534,25537,25539,25541],{"class":236,"line":237},[234,25527,347],{"class":244},[234,25529,351],{"class":350},[234,25531,1297],{"class":281},[234,25533,357],{"class":244},[234,25535,25536],{"class":251},"\"lazy-spacer\"",[234,25538,5709],{"class":244},[234,25540,351],{"class":350},[234,25542,376],{"class":244},[234,25544,25545],{"class":236,"line":258},[234,25546,262],{"emptyLinePlaceholder":261},[234,25548,25549,25551],{"class":236,"line":265},[234,25550,347],{"class":244},[234,25552,25553],{"class":350},"img\n",[234,25555,25556,25558,25560],{"class":236,"line":288},[234,25557,12249],{"class":281},[234,25559,357],{"class":244},[234,25561,25562],{"class":251},"\"lazy\"\n",[234,25564,25565,25568,25570],{"class":236,"line":293},[234,25566,25567],{"class":281},"  string-lazy",[234,25569,357],{"class":244},[234,25571,25572],{"class":251},"\"/images/home/string-scroll.jpg\"\n",[234,25574,25575,25578,25580],{"class":236,"line":305},[234,25576,25577],{"class":281},"  alt",[234,25579,357],{"class":244},[234,25581,25582],{"class":251},"\"String Scroll\"\n",[234,25584,25585,25587,25589],{"class":236,"line":321},[234,25586,12239],{"class":281},[234,25588,357],{"class":244},[234,25590,25591],{"class":251},"\"lazy-image\"\n",[234,25593,25594],{"class":236,"line":946},[234,25595,25596],{"class":244},"/>\n",[234,25598,25599],{"class":236,"line":955},[234,25600,262],{"emptyLinePlaceholder":261},[234,25602,25603,25605,25607,25609,25611,25614,25616,25618,25620,25623,25625],{"class":236,"line":11},[234,25604,347],{"class":244},[234,25606,351],{"class":350},[234,25608,1297],{"class":281},[234,25610,357],{"class":244},[234,25612,25613],{"class":251},"\"lazy-status\"",[234,25615,5157],{"class":281},[234,25617,357],{"class":244},[234,25619,25613],{"class":251},[234,25621,25622],{"class":244},">Waiting\u003C/",[234,25624,351],{"class":350},[234,25626,376],{"class":244},[225,25628,25630],{"className":5857,"code":25629,"language":5859,"meta":230,"style":230},".lazy-spacer {\n  height: 70vh;\n  display: grid;\n  place-items: center;\n}\n\n.lazy-image {\n  display: block;\n  width: min(100%, 520px);\n  margin: 0 auto;\n  border: 1px solid black;\n  background: white;\n  opacity: 0.2;\n}\n\n.lazy-image.-aspect-ready {\n  opacity: 0.5;\n}\n\n.lazy-image.-loaded {\n  opacity: 1;\n}\n\n.lazy-status {\n  min-height: 32px;\n  display: grid;\n  place-items: center;\n  margin-top: 12px;\n}\n",[60,25631,25632,25639,25652,25662,25672,25676,25680,25687,25697,25720,25732,25748,25758,25768,25772,25776,25783,25793,25797,25801,25808,25818,25822,25826,25833,25846,25856,25866,25879],{"__ignoreMap":230},[234,25633,25634,25637],{"class":236,"line":237},[234,25635,25636],{"class":281},".lazy-spacer",[234,25638,909],{"class":244},[234,25640,25641,25643,25645,25648,25650],{"class":236,"line":258},[234,25642,5991],{"class":271},[234,25644,1443],{"class":244},[234,25646,25647],{"class":271},"70",[234,25649,1669],{"class":240},[234,25651,255],{"class":244},[234,25653,25654,25656,25658,25660],{"class":236,"line":265},[234,25655,1677],{"class":271},[234,25657,1443],{"class":244},[234,25659,1682],{"class":271},[234,25661,255],{"class":244},[234,25663,25664,25666,25668,25670],{"class":236,"line":288},[234,25665,5902],{"class":271},[234,25667,1443],{"class":244},[234,25669,1695],{"class":271},[234,25671,255],{"class":244},[234,25673,25674],{"class":236,"line":293},[234,25675,1143],{"class":244},[234,25677,25678],{"class":236,"line":305},[234,25679,262],{"emptyLinePlaceholder":261},[234,25681,25682,25685],{"class":236,"line":321},[234,25683,25684],{"class":281},".lazy-image",[234,25686,909],{"class":244},[234,25688,25689,25691,25693,25695],{"class":236,"line":946},[234,25690,1677],{"class":271},[234,25692,1443],{"class":244},[234,25694,15595],{"class":271},[234,25696,255],{"class":244},[234,25698,25699,25701,25703,25705,25707,25709,25711,25713,25716,25718],{"class":236,"line":955},[234,25700,5977],{"class":271},[234,25702,1443],{"class":244},[234,25704,10999],{"class":271},[234,25706,329],{"class":244},[234,25708,5883],{"class":271},[234,25710,3403],{"class":240},[234,25712,1833],{"class":244},[234,25714,25715],{"class":271},"520",[234,25717,1789],{"class":240},[234,25719,335],{"class":244},[234,25721,25722,25724,25726,25728,25730],{"class":236,"line":11},[234,25723,21966],{"class":271},[234,25725,1443],{"class":244},[234,25727,1836],{"class":271},[234,25729,21973],{"class":271},[234,25731,255],{"class":244},[234,25733,25734,25736,25738,25740,25742,25744,25746],{"class":236,"line":980},[234,25735,1769],{"class":271},[234,25737,1443],{"class":244},[234,25739,1754],{"class":271},[234,25741,1789],{"class":240},[234,25743,6013],{"class":271},[234,25745,6016],{"class":271},[234,25747,255],{"class":244},[234,25749,25750,25752,25754,25756],{"class":236,"line":994},[234,25751,6023],{"class":271},[234,25753,1443],{"class":244},[234,25755,6028],{"class":271},[234,25757,255],{"class":244},[234,25759,25760,25762,25764,25766],{"class":236,"line":1000},[234,25761,12633],{"class":271},[234,25763,1443],{"class":244},[234,25765,7131],{"class":271},[234,25767,255],{"class":244},[234,25769,25770],{"class":236,"line":1005},[234,25771,1143],{"class":244},[234,25773,25774],{"class":236,"line":1013},[234,25775,262],{"emptyLinePlaceholder":261},[234,25777,25778,25781],{"class":236,"line":1019},[234,25779,25780],{"class":281},".lazy-image.-aspect-ready",[234,25782,909],{"class":244},[234,25784,25785,25787,25789,25791],{"class":236,"line":1025},[234,25786,12633],{"class":271},[234,25788,1443],{"class":244},[234,25790,15657],{"class":271},[234,25792,255],{"class":244},[234,25794,25795],{"class":236,"line":1031},[234,25796,1143],{"class":244},[234,25798,25799],{"class":236,"line":1037},[234,25800,262],{"emptyLinePlaceholder":261},[234,25802,25803,25806],{"class":236,"line":427},[234,25804,25805],{"class":281},".lazy-image.-loaded",[234,25807,909],{"class":244},[234,25809,25810,25812,25814,25816],{"class":236,"line":1571},[234,25811,12633],{"class":271},[234,25813,1443],{"class":244},[234,25815,1754],{"class":271},[234,25817,255],{"class":244},[234,25819,25820],{"class":236,"line":1592},[234,25821,1143],{"class":244},[234,25823,25824],{"class":236,"line":1600},[234,25825,262],{"emptyLinePlaceholder":261},[234,25827,25828,25831],{"class":236,"line":1615},[234,25829,25830],{"class":281},".lazy-status",[234,25832,909],{"class":244},[234,25834,25835,25837,25839,25842,25844],{"class":236,"line":1620},[234,25836,1661],{"class":271},[234,25838,1443],{"class":244},[234,25840,25841],{"class":271},"32",[234,25843,1789],{"class":240},[234,25845,255],{"class":244},[234,25847,25848,25850,25852,25854],{"class":236,"line":1625},[234,25849,1677],{"class":271},[234,25851,1443],{"class":244},[234,25853,1682],{"class":271},[234,25855,255],{"class":244},[234,25857,25858,25860,25862,25864],{"class":236,"line":1634},[234,25859,5902],{"class":271},[234,25861,1443],{"class":244},[234,25863,1695],{"class":271},[234,25865,255],{"class":244},[234,25867,25868,25871,25873,25875,25877],{"class":236,"line":1639},[234,25869,25870],{"class":271},"  margin-top",[234,25872,1443],{"class":244},[234,25874,8276],{"class":271},[234,25876,1789],{"class":240},[234,25878,255],{"class":244},[234,25880,25881],{"class":236,"line":1651},[234,25882,1143],{"class":244},[37,25884,6074],{"id":6073},[225,25886,25888],{"className":227,"code":25887,"language":229,"meta":230,"style":230},"import StringTune, { StringLazy } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\nstringTune.use(StringLazy);\nstringTune.start(60);\n",[60,25889,25890,25903,25907,25921,25930],{"__ignoreMap":230},[234,25891,25892,25894,25897,25899,25901],{"class":236,"line":237},[234,25893,241],{"class":240},[234,25895,25896],{"class":244}," StringTune, { StringLazy } ",[234,25898,248],{"class":240},[234,25900,252],{"class":251},[234,25902,255],{"class":244},[234,25904,25905],{"class":236,"line":258},[234,25906,262],{"emptyLinePlaceholder":261},[234,25908,25909,25911,25913,25915,25917,25919],{"class":236,"line":265},[234,25910,268],{"class":240},[234,25912,272],{"class":271},[234,25914,275],{"class":240},[234,25916,278],{"class":244},[234,25918,282],{"class":281},[234,25920,285],{"class":244},[234,25922,25923,25925,25927],{"class":236,"line":288},[234,25924,296],{"class":244},[234,25926,299],{"class":281},[234,25928,25929],{"class":244},"(StringLazy);\n",[234,25931,25932,25934,25936,25938,25940],{"class":236,"line":293},[234,25933,296],{"class":244},[234,25935,326],{"class":281},[234,25937,329],{"class":244},[234,25939,332],{"class":271},[234,25941,335],{"class":244},[37,25943,6133],{"id":6132},[42,25945,25946,25954,25957,25960],{},[45,25947,25948,25949,25951,25952,106],{},"The real source comes from ",[60,25950,25318],{},", not from ",[60,25953,25396],{},[45,25955,25956],{},"The module listens to the internal object in-view lifecycle before activating the image.",[45,25958,25959],{},"Aspect ratio is resolved before the image is activated whenever dimensions can be detected.",[45,25961,25962],{},"If the fetch path fails, the module falls back to assigning the original source directly.",[410,25964,25965],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":230,"searchDepth":258,"depth":258,"links":25967},[25968,25974,25975,25976],{"id":5406,"depth":258,"text":5407,"children":25969},[25970,25971,25972,25973],{"id":4904,"depth":265,"text":4905},{"id":5557,"depth":265,"text":5558},{"id":3814,"depth":265,"text":5593},{"id":5666,"depth":265,"text":5667},{"id":5688,"depth":258,"text":5689},{"id":6073,"depth":258,"text":6074},{"id":6132,"depth":258,"text":6133},{"path":5328,"title":5329,"description":25978,"kind":5369,"section":5187,"order":25979,"group":5305,"parentPath":-1,"status":8027,"integration":2706,"publicExport":261,"activation":25980,"package":5371,"aliases":25981,"attrs":25983,"events":25984,"cssVars":25985,"related":25986,"body":25987},"Plays and pauses inline video from local enter and leave events on the owning object.",340,"string=\"video-autoplay\"",[25982,5329],"video-autoplay",[],[],[],[5317,5322,4397],{"type":22,"value":25988,"toc":26511},[25989,25992,26004,26006,26008,26057,26065,26067,26070,26101,26104,26119,26122,26124,26126,26128,26130,26132,26255,26427,26429,26486,26488,26509],[25,25990,5329],{"id":25991},"stringvideoautoplay",[30,25993,25994,25996,25997,25999,26000,26003],{},[60,25995,5329],{}," is a video module. It activates on ",[60,25998,19538],{},", reads the source from ",[60,26001,26002],{},"string-src",", prepares the element for muted inline autoplay, and then plays or pauses the video as the object enters or leaves view.",[37,26005,5407],{"id":5406},[174,26007,4905],{"id":4904},[2221,26009,26010,26022],{},[2224,26011,26012],{},[2227,26013,26014,26016,26018,26020],{},[2230,26015,4914],{},[2230,26017,23270],{},[2230,26019,4920],{},[2230,26021,5424],{},[2240,26023,26024,26040],{},[2227,26025,26026,26031,26035,26037],{},[2245,26027,26028],{},[60,26029,26030],{},"string=\"autoplay\"",[2245,26032,26033],{},[60,26034,19538],{},[2245,26036,23289],{},[2245,26038,26039],{},"Activates the module for that video object.",[2227,26041,26042,26046,26050,26054],{},[2245,26043,26044],{},[60,26045,26002],{},[2245,26047,26048],{},[60,26049,19538],{},[2245,26051,26052],{},[60,26053,6246],{},[2245,26055,26056],{},"Provides the video source assigned on first connect.",[30,26058,26059,26061,26062,26064],{},[60,26060,5329],{}," only works on actual ",[60,26063,19538],{}," elements.",[174,26066,5558],{"id":5557},[30,26068,26069],{},"On first connect, the module mutates the video element by writing:",[42,26071,26072,26077,26082,26087,26092,26097],{},[45,26073,26074],{},[60,26075,26076],{},"string-started",[45,26078,26079],{},[60,26080,26081],{},"muted",[45,26083,26084],{},[60,26085,26086],{},"playsinline",[45,26088,26089],{},[60,26090,26091],{},"loop",[45,26093,26094],{},[60,26095,26096],{},"autoplay",[45,26098,26099],{},[60,26100,25396],{},[30,26102,26103],{},"At runtime, the module then:",[42,26105,26106,26113],{},[45,26107,26108,26109,26112],{},"calls ",[60,26110,26111],{},"play()"," on local object enter",[45,26114,26108,26115,26118],{},[60,26116,26117],{},"pause()"," on local object leave",[30,26120,26121],{},"This module does not expose public CSS variables.",[174,26123,5593],{"id":3814},[30,26125,24893],{},[174,26127,5667],{"id":5666},[30,26129,10483],{},[37,26131,5689],{"id":5688},[225,26133,26135],{"className":338,"code":26134,"language":340,"meta":230,"style":230},"\u003Cdiv class=\"video-spacer\">Scroll down\u003C/div>\n\n\u003Cvideo\n  string=\"autoplay\"\n  string-src=\"https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4\"\n  class=\"video-demo\"\n>\u003C/video>\n\n\u003Cdiv class=\"video-state\" id=\"video-state\">Waiting\u003C/div>\n\n\u003Cdiv class=\"video-spacer\">\u003C/div>\n",[60,26136,26137,26156,26160,26167,26176,26186,26195,26204,26208,26233,26237],{"__ignoreMap":230},[234,26138,26139,26141,26143,26145,26147,26150,26152,26154],{"class":236,"line":237},[234,26140,347],{"class":244},[234,26142,351],{"class":350},[234,26144,1297],{"class":281},[234,26146,357],{"class":244},[234,26148,26149],{"class":251},"\"video-spacer\"",[234,26151,5709],{"class":244},[234,26153,351],{"class":350},[234,26155,376],{"class":244},[234,26157,26158],{"class":236,"line":258},[234,26159,262],{"emptyLinePlaceholder":261},[234,26161,26162,26164],{"class":236,"line":265},[234,26163,347],{"class":244},[234,26165,26166],{"class":350},"video\n",[234,26168,26169,26171,26173],{"class":236,"line":288},[234,26170,12249],{"class":281},[234,26172,357],{"class":244},[234,26174,26175],{"class":251},"\"autoplay\"\n",[234,26177,26178,26181,26183],{"class":236,"line":293},[234,26179,26180],{"class":281},"  string-src",[234,26182,357],{"class":244},[234,26184,26185],{"class":251},"\"https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4\"\n",[234,26187,26188,26190,26192],{"class":236,"line":305},[234,26189,12239],{"class":281},[234,26191,357],{"class":244},[234,26193,26194],{"class":251},"\"video-demo\"\n",[234,26196,26197,26199,26202],{"class":236,"line":321},[234,26198,371],{"class":244},[234,26200,26201],{"class":350},"video",[234,26203,376],{"class":244},[234,26205,26206],{"class":236,"line":946},[234,26207,262],{"emptyLinePlaceholder":261},[234,26209,26210,26212,26214,26216,26218,26221,26223,26225,26227,26229,26231],{"class":236,"line":955},[234,26211,347],{"class":244},[234,26213,351],{"class":350},[234,26215,1297],{"class":281},[234,26217,357],{"class":244},[234,26219,26220],{"class":251},"\"video-state\"",[234,26222,5157],{"class":281},[234,26224,357],{"class":244},[234,26226,26220],{"class":251},[234,26228,25622],{"class":244},[234,26230,351],{"class":350},[234,26232,376],{"class":244},[234,26234,26235],{"class":236,"line":11},[234,26236,262],{"emptyLinePlaceholder":261},[234,26238,26239,26241,26243,26245,26247,26249,26251,26253],{"class":236,"line":980},[234,26240,347],{"class":244},[234,26242,351],{"class":350},[234,26244,1297],{"class":281},[234,26246,357],{"class":244},[234,26248,26149],{"class":251},[234,26250,371],{"class":244},[234,26252,351],{"class":350},[234,26254,376],{"class":244},[225,26256,26258],{"className":5857,"code":26257,"language":5859,"meta":230,"style":230},".video-spacer {\n  height: 70vh;\n}\n\n.video-demo {\n  display: block;\n  width: min(100%, 520px);\n  margin: 0 auto;\n  border: 1px solid black;\n  background: black;\n}\n\n.video-state {\n  min-height: 32px;\n  display: grid;\n  place-items: center;\n  margin-top: 12px;\n}\n",[60,26259,26260,26267,26279,26283,26287,26294,26304,26326,26338,26354,26364,26368,26372,26379,26391,26401,26411,26423],{"__ignoreMap":230},[234,26261,26262,26265],{"class":236,"line":237},[234,26263,26264],{"class":281},".video-spacer",[234,26266,909],{"class":244},[234,26268,26269,26271,26273,26275,26277],{"class":236,"line":258},[234,26270,5991],{"class":271},[234,26272,1443],{"class":244},[234,26274,25647],{"class":271},[234,26276,1669],{"class":240},[234,26278,255],{"class":244},[234,26280,26281],{"class":236,"line":265},[234,26282,1143],{"class":244},[234,26284,26285],{"class":236,"line":288},[234,26286,262],{"emptyLinePlaceholder":261},[234,26288,26289,26292],{"class":236,"line":293},[234,26290,26291],{"class":281},".video-demo",[234,26293,909],{"class":244},[234,26295,26296,26298,26300,26302],{"class":236,"line":305},[234,26297,1677],{"class":271},[234,26299,1443],{"class":244},[234,26301,15595],{"class":271},[234,26303,255],{"class":244},[234,26305,26306,26308,26310,26312,26314,26316,26318,26320,26322,26324],{"class":236,"line":321},[234,26307,5977],{"class":271},[234,26309,1443],{"class":244},[234,26311,10999],{"class":271},[234,26313,329],{"class":244},[234,26315,5883],{"class":271},[234,26317,3403],{"class":240},[234,26319,1833],{"class":244},[234,26321,25715],{"class":271},[234,26323,1789],{"class":240},[234,26325,335],{"class":244},[234,26327,26328,26330,26332,26334,26336],{"class":236,"line":946},[234,26329,21966],{"class":271},[234,26331,1443],{"class":244},[234,26333,1836],{"class":271},[234,26335,21973],{"class":271},[234,26337,255],{"class":244},[234,26339,26340,26342,26344,26346,26348,26350,26352],{"class":236,"line":955},[234,26341,1769],{"class":271},[234,26343,1443],{"class":244},[234,26345,1754],{"class":271},[234,26347,1789],{"class":240},[234,26349,6013],{"class":271},[234,26351,6016],{"class":271},[234,26353,255],{"class":244},[234,26355,26356,26358,26360,26362],{"class":236,"line":11},[234,26357,6023],{"class":271},[234,26359,1443],{"class":244},[234,26361,9965],{"class":271},[234,26363,255],{"class":244},[234,26365,26366],{"class":236,"line":980},[234,26367,1143],{"class":244},[234,26369,26370],{"class":236,"line":994},[234,26371,262],{"emptyLinePlaceholder":261},[234,26373,26374,26377],{"class":236,"line":1000},[234,26375,26376],{"class":281},".video-state",[234,26378,909],{"class":244},[234,26380,26381,26383,26385,26387,26389],{"class":236,"line":1005},[234,26382,1661],{"class":271},[234,26384,1443],{"class":244},[234,26386,25841],{"class":271},[234,26388,1789],{"class":240},[234,26390,255],{"class":244},[234,26392,26393,26395,26397,26399],{"class":236,"line":1013},[234,26394,1677],{"class":271},[234,26396,1443],{"class":244},[234,26398,1682],{"class":271},[234,26400,255],{"class":244},[234,26402,26403,26405,26407,26409],{"class":236,"line":1019},[234,26404,5902],{"class":271},[234,26406,1443],{"class":244},[234,26408,1695],{"class":271},[234,26410,255],{"class":244},[234,26412,26413,26415,26417,26419,26421],{"class":236,"line":1025},[234,26414,25870],{"class":271},[234,26416,1443],{"class":244},[234,26418,8276],{"class":271},[234,26420,1789],{"class":240},[234,26422,255],{"class":244},[234,26424,26425],{"class":236,"line":1031},[234,26426,1143],{"class":244},[37,26428,6074],{"id":6073},[225,26430,26432],{"className":227,"code":26431,"language":229,"meta":230,"style":230},"import StringTune, { StringVideoAutoplay } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\nstringTune.use(StringVideoAutoplay);\nstringTune.start(60);\n",[60,26433,26434,26447,26451,26465,26474],{"__ignoreMap":230},[234,26435,26436,26438,26441,26443,26445],{"class":236,"line":237},[234,26437,241],{"class":240},[234,26439,26440],{"class":244}," StringTune, { StringVideoAutoplay } ",[234,26442,248],{"class":240},[234,26444,252],{"class":251},[234,26446,255],{"class":244},[234,26448,26449],{"class":236,"line":258},[234,26450,262],{"emptyLinePlaceholder":261},[234,26452,26453,26455,26457,26459,26461,26463],{"class":236,"line":265},[234,26454,268],{"class":240},[234,26456,272],{"class":271},[234,26458,275],{"class":240},[234,26460,278],{"class":244},[234,26462,282],{"class":281},[234,26464,285],{"class":244},[234,26466,26467,26469,26471],{"class":236,"line":288},[234,26468,296],{"class":244},[234,26470,299],{"class":281},[234,26472,26473],{"class":244},"(StringVideoAutoplay);\n",[234,26475,26476,26478,26480,26482,26484],{"class":236,"line":293},[234,26477,296],{"class":244},[234,26479,326],{"class":281},[234,26481,329],{"class":244},[234,26483,332],{"class":271},[234,26485,335],{"class":244},[37,26487,6133],{"id":6132},[42,26489,26490,26493,26501,26504],{},[45,26491,26492],{},"Enter and leave are local object events, not documented global channels.",[45,26494,26495,26496,25951,26498,26500],{},"The source is read from ",[60,26497,26002],{},[60,26499,25396],{}," in your HTML.",[45,26502,26503],{},"Autoplay is attempted in muted inline mode because that is what the runtime enforces.",[45,26505,4232,26506,26508],{},[60,26507,26111],{}," is blocked, the module catches the error and logs a warning.",[410,26510,8986],{},{"title":230,"searchDepth":258,"depth":258,"links":26512},[26513,26519,26520,26521],{"id":5406,"depth":258,"text":5407,"children":26514},[26515,26516,26517,26518],{"id":4904,"depth":265,"text":4905},{"id":5557,"depth":265,"text":5558},{"id":3814,"depth":265,"text":5593},{"id":5666,"depth":265,"text":5667},{"id":5688,"depth":258,"text":5689},{"id":6073,"depth":258,"text":6074},{"id":6132,"depth":258,"text":6133},{"path":5340,"title":5341,"description":26523,"kind":5369,"section":5187,"order":26524,"group":5333,"parentPath":-1,"status":8027,"integration":11669,"publicExport":261,"activation":26525,"package":5371,"aliases":26526,"attrs":26528,"events":26529,"cssVars":26530,"related":26531,"body":26532},"Debug overlay that exposes frame-rate data during runtime analysis.",410,"stringTune.use(StringFPSTracker)",[26527,5341],"fps tracker",[],[],[],[5346,4602,3980],{"type":22,"value":26533,"toc":27117},[26534,26537,26542,26557,26560,26562,26564,26574,26577,26583,26585,26587,26594,26597,26606,26608,26635,26674,26676,26678,26680,26750,27005,27007,27064,27067,27083,27085,27115],[25,26535,5341],{"id":26536},"stringfpstracker",[30,26538,26539,26541],{},[60,26540,5341],{}," is a diagnostics module. It counts rendered frames once per second and exposes that number through two public surfaces:",[42,26543,26544,26550],{},[45,26545,26546,26547],{},"elements with ",[60,26548,26549],{},"data-fps",[45,26551,26552,26553,26556],{},"the global ",[60,26554,26555],{},"fps"," event",[30,26558,26559],{},"It can also render its own floating debug overlay, but that overlay is optional and disabled by default.",[37,26561,5407],{"id":5406},[174,26563,4905],{"id":4904},[30,26565,26566,26568,26569,26571,26572,106],{},[60,26567,5341],{}," does not read any ",[60,26570,2042],{}," activation attributes. It is a global module registered through ",[60,26573,23112],{},[30,26575,26576],{},"The only DOM hook it watches is:",[42,26578,26579],{},[45,26580,26581],{},[60,26582,26549],{},[174,26584,5558],{"id":5557},[30,26586,7222],{},[42,26588,26589],{},[45,26590,26591],{},[60,26592,26593],{},"data-fps=\"\u003Cinteger>\"",[30,26595,26596],{},"on every tracked element in the document.",[30,26598,4232,26599,26602,26603,26605],{},[60,26600,26601],{},"stringTune.FPSTrackerVisible = true",", it also creates one floating overlay element in the bottom-right corner and updates the same ",[60,26604,26549],{}," attribute on that overlay.",[174,26607,5593],{"id":3814},[2221,26609,26610,26620],{},[2224,26611,26612],{},[2227,26613,26614,26616,26618],{},[2230,26615,5602],{},[2230,26617,5605],{},[2230,26619,5608],{},[2240,26621,26622],{},[2227,26623,26624,26628,26632],{},[2245,26625,26626],{},[60,26627,26555],{},[2245,26629,26630],{},[60,26631,5621],{},[2245,26633,26634],{},"Once per second after the current frame count is measured",[225,26636,26638],{"className":227,"code":26637,"language":229,"meta":230,"style":230},"stringTune.on('fps', (fps) => {\n  console.log(fps);\n});\n",[60,26639,26640,26661,26670],{"__ignoreMap":230},[234,26641,26642,26644,26646,26648,26651,26653,26655,26657,26659],{"class":236,"line":237},[234,26643,296],{"class":244},[234,26645,1536],{"class":281},[234,26647,329],{"class":244},[234,26649,26650],{"class":251},"'fps'",[234,26652,2976],{"class":244},[234,26654,26555],{"class":899},[234,26656,903],{"class":244},[234,26658,906],{"class":240},[234,26660,909],{"class":244},[234,26662,26663,26665,26667],{"class":236,"line":258},[234,26664,1482],{"class":244},[234,26666,1485],{"class":281},[234,26668,26669],{"class":244},"(fps);\n",[234,26671,26672],{"class":236,"line":265},[234,26673,1040],{"class":244},[174,26675,5667],{"id":5666},[30,26677,10483],{},[37,26679,5689],{"id":5688},[225,26681,26683],{"className":338,"code":26682,"language":340,"meta":230,"style":230},"\u003Cdiv class=\"debug-panel\">\n  \u003Cdiv class=\"debug-label\">Performance\u003C/div>\n  \u003Cdiv data-fps class=\"fps-value\">\u003C/div>\n\u003C/div>\n",[60,26684,26685,26700,26720,26742],{"__ignoreMap":230},[234,26686,26687,26689,26691,26693,26695,26698],{"class":236,"line":237},[234,26688,347],{"class":244},[234,26690,351],{"class":350},[234,26692,1297],{"class":281},[234,26694,357],{"class":244},[234,26696,26697],{"class":251},"\"debug-panel\"",[234,26699,376],{"class":244},[234,26701,26702,26704,26706,26708,26710,26713,26716,26718],{"class":236,"line":258},[234,26703,1292],{"class":244},[234,26705,351],{"class":350},[234,26707,1297],{"class":281},[234,26709,357],{"class":244},[234,26711,26712],{"class":251},"\"debug-label\"",[234,26714,26715],{"class":244},">Performance\u003C/",[234,26717,351],{"class":350},[234,26719,376],{"class":244},[234,26721,26722,26724,26726,26729,26731,26733,26736,26738,26740],{"class":236,"line":265},[234,26723,1292],{"class":244},[234,26725,351],{"class":350},[234,26727,26728],{"class":281}," data-fps",[234,26730,1297],{"class":281},[234,26732,357],{"class":244},[234,26734,26735],{"class":251},"\"fps-value\"",[234,26737,371],{"class":244},[234,26739,351],{"class":350},[234,26741,376],{"class":244},[234,26743,26744,26746,26748],{"class":236,"line":288},[234,26745,1402],{"class":244},[234,26747,351],{"class":350},[234,26749,376],{"class":244},[225,26751,26753],{"className":5857,"code":26752,"language":5859,"meta":230,"style":230},".debug-panel {\n  position: fixed;\n  bottom: 24px;\n  right: 24px;\n  background: black;\n  color: white;\n  padding: 1rem;\n  border: 1px solid #333;\n  display: flex;\n  gap: 1rem;\n  align-items: center;\n  font-family: ui-monospace, SFMono-Regular, monospace;\n  font-size: 0.875rem;\n}\n\n.debug-label {\n  text-transform: uppercase;\n  color: #999;\n}\n\n.fps-value {\n  font-weight: bold;\n}\n\n.fps-value::before {\n  content: attr(data-fps) \" FPS\";\n}\n",[60,26754,26755,26762,26772,26784,26796,26806,26816,26828,26844,26854,26866,26876,26894,26906,26910,26914,26921,26931,26941,26945,26949,26956,26966,26970,26974,26981,27001],{"__ignoreMap":230},[234,26756,26757,26760],{"class":236,"line":237},[234,26758,26759],{"class":281},".debug-panel",[234,26761,909],{"class":244},[234,26763,26764,26766,26768,26770],{"class":236,"line":258},[234,26765,7598],{"class":271},[234,26767,1443],{"class":244},[234,26769,2863],{"class":271},[234,26771,255],{"class":244},[234,26773,26774,26776,26778,26780,26782],{"class":236,"line":265},[234,26775,10129],{"class":271},[234,26777,1443],{"class":244},[234,26779,6740],{"class":271},[234,26781,1789],{"class":240},[234,26783,255],{"class":244},[234,26785,26786,26788,26790,26792,26794],{"class":236,"line":288},[234,26787,10115],{"class":271},[234,26789,1443],{"class":244},[234,26791,6740],{"class":271},[234,26793,1789],{"class":240},[234,26795,255],{"class":244},[234,26797,26798,26800,26802,26804],{"class":236,"line":293},[234,26799,6023],{"class":271},[234,26801,1443],{"class":244},[234,26803,9965],{"class":271},[234,26805,255],{"class":244},[234,26807,26808,26810,26812,26814],{"class":236,"line":305},[234,26809,11568],{"class":271},[234,26811,1443],{"class":244},[234,26813,6028],{"class":271},[234,26815,255],{"class":244},[234,26817,26818,26820,26822,26824,26826],{"class":236,"line":321},[234,26819,1749],{"class":271},[234,26821,1443],{"class":244},[234,26823,1754],{"class":271},[234,26825,1711],{"class":240},[234,26827,255],{"class":244},[234,26829,26830,26832,26834,26836,26838,26840,26842],{"class":236,"line":946},[234,26831,1769],{"class":271},[234,26833,1443],{"class":244},[234,26835,1754],{"class":271},[234,26837,1789],{"class":240},[234,26839,6013],{"class":271},[234,26841,16240],{"class":271},[234,26843,255],{"class":244},[234,26845,26846,26848,26850,26852],{"class":236,"line":955},[234,26847,1677],{"class":271},[234,26849,1443],{"class":244},[234,26851,12585],{"class":271},[234,26853,255],{"class":244},[234,26855,26856,26858,26860,26862,26864],{"class":236,"line":11},[234,26857,1703],{"class":271},[234,26859,1443],{"class":244},[234,26861,1754],{"class":271},[234,26863,1711],{"class":240},[234,26865,255],{"class":244},[234,26867,26868,26870,26872,26874],{"class":236,"line":980},[234,26869,6805],{"class":271},[234,26871,1443],{"class":244},[234,26873,1695],{"class":271},[234,26875,255],{"class":244},[234,26877,26878,26881,26883,26886,26889,26892],{"class":236,"line":994},[234,26879,26880],{"class":271},"  font-family",[234,26882,1443],{"class":244},[234,26884,26885],{"class":271},"ui-monospace",[234,26887,26888],{"class":244},", SFMono-Regular, ",[234,26890,26891],{"class":271},"monospace",[234,26893,255],{"class":244},[234,26895,26896,26898,26900,26902,26904],{"class":236,"line":1000},[234,26897,9886],{"class":271},[234,26899,1443],{"class":244},[234,26901,23040],{"class":271},[234,26903,1711],{"class":240},[234,26905,255],{"class":244},[234,26907,26908],{"class":236,"line":1005},[234,26909,1143],{"class":244},[234,26911,26912],{"class":236,"line":1013},[234,26913,262],{"emptyLinePlaceholder":261},[234,26915,26916,26919],{"class":236,"line":1019},[234,26917,26918],{"class":281},".debug-label",[234,26920,909],{"class":244},[234,26922,26923,26925,26927,26929],{"class":236,"line":1025},[234,26924,9899],{"class":271},[234,26926,1443],{"class":244},[234,26928,9904],{"class":271},[234,26930,255],{"class":244},[234,26932,26933,26935,26937,26939],{"class":236,"line":1031},[234,26934,11568],{"class":271},[234,26936,1443],{"class":244},[234,26938,16695],{"class":271},[234,26940,255],{"class":244},[234,26942,26943],{"class":236,"line":1037},[234,26944,1143],{"class":244},[234,26946,26947],{"class":236,"line":427},[234,26948,262],{"emptyLinePlaceholder":261},[234,26950,26951,26954],{"class":236,"line":1571},[234,26952,26953],{"class":281},".fps-value",[234,26955,909],{"class":244},[234,26957,26958,26960,26962,26964],{"class":236,"line":1592},[234,26959,14315],{"class":271},[234,26961,1443],{"class":244},[234,26963,14320],{"class":271},[234,26965,255],{"class":244},[234,26967,26968],{"class":236,"line":1600},[234,26969,1143],{"class":244},[234,26971,26972],{"class":236,"line":1615},[234,26973,262],{"emptyLinePlaceholder":261},[234,26975,26976,26979],{"class":236,"line":1620},[234,26977,26978],{"class":281},".fps-value::before",[234,26980,909],{"class":244},[234,26982,26983,26985,26987,26990,26992,26994,26996,26999],{"class":236,"line":1625},[234,26984,16309],{"class":271},[234,26986,1443],{"class":244},[234,26988,26989],{"class":271},"attr",[234,26991,329],{"class":244},[234,26993,26549],{"class":899},[234,26995,903],{"class":244},[234,26997,26998],{"class":251},"\" FPS\"",[234,27000,255],{"class":244},[234,27002,27003],{"class":236,"line":1634},[234,27004,1143],{"class":244},[37,27006,6074],{"id":6073},[225,27008,27010],{"className":227,"code":27009,"language":229,"meta":230,"style":230},"import StringTune, { StringFPSTracker } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\nstringTune.use(StringFPSTracker);\nstringTune.start(60);\n",[60,27011,27012,27025,27029,27043,27052],{"__ignoreMap":230},[234,27013,27014,27016,27019,27021,27023],{"class":236,"line":237},[234,27015,241],{"class":240},[234,27017,27018],{"class":244}," StringTune, { StringFPSTracker } ",[234,27020,248],{"class":240},[234,27022,252],{"class":251},[234,27024,255],{"class":244},[234,27026,27027],{"class":236,"line":258},[234,27028,262],{"emptyLinePlaceholder":261},[234,27030,27031,27033,27035,27037,27039,27041],{"class":236,"line":265},[234,27032,268],{"class":240},[234,27034,272],{"class":271},[234,27036,275],{"class":240},[234,27038,278],{"class":244},[234,27040,282],{"class":281},[234,27042,285],{"class":244},[234,27044,27045,27047,27049],{"class":236,"line":288},[234,27046,296],{"class":244},[234,27048,299],{"class":281},[234,27050,27051],{"class":244},"(StringFPSTracker);\n",[234,27053,27054,27056,27058,27060,27062],{"class":236,"line":293},[234,27055,296],{"class":244},[234,27057,326],{"class":281},[234,27059,329],{"class":244},[234,27061,332],{"class":271},[234,27063,335],{"class":244},[30,27065,27066],{},"If you want the built-in floating overlay, enable it explicitly:",[225,27068,27070],{"className":227,"code":27069,"language":229,"meta":230,"style":230},"stringTune.FPSTrackerVisible = true;\n",[60,27071,27072],{"__ignoreMap":230},[234,27073,27074,27077,27079,27081],{"class":236,"line":237},[234,27075,27076],{"class":244},"stringTune.FPSTrackerVisible ",[234,27078,357],{"class":240},[234,27080,4833],{"class":271},[234,27082,255],{"class":244},[37,27084,6133],{"id":6132},[42,27086,27087,27096,27099,27109],{},[45,27088,27089,27090,27093,27094,106],{},"The tracker scans the whole document for ",[60,27091,27092],{},"[data-fps]"," and keeps that list fresh with a ",[60,27095,4552],{},[45,27097,27098],{},"The public value is an integer frame count over the last one-second window, not an averaged moving metric.",[45,27100,27101,27102,27105,27106,106],{},"The built-in overlay injects a small helper style that renders ",[60,27103,27104],{},"FPS: \u003Cvalue>"," through ",[60,27107,27108],{},"::before",[45,27110,27111,27112,27114],{},"Without the built-in overlay, your own ",[60,27113,27092],{}," elements still receive attribute updates, but you are responsible for presenting that value in CSS or JavaScript.",[410,27116,6155],{},{"title":230,"searchDepth":258,"depth":258,"links":27118},[27119,27125,27126,27127],{"id":5406,"depth":258,"text":5407,"children":27120},[27121,27122,27123,27124],{"id":4904,"depth":265,"text":4905},{"id":5557,"depth":265,"text":5558},{"id":3814,"depth":265,"text":5593},{"id":5666,"depth":265,"text":5667},{"id":5688,"depth":258,"text":5689},{"id":6073,"depth":258,"text":6074},{"id":6132,"depth":258,"text":6133},{"path":5346,"title":5347,"description":27129,"kind":5369,"section":5187,"order":27130,"group":5333,"parentPath":-1,"status":8027,"integration":11669,"publicExport":261,"activation":27131,"package":5371,"aliases":27132,"attrs":27134,"events":27135,"cssVars":27136,"related":27137,"body":27138},"Debug overlay for observing live scroll position and geometry changes.",420,"stringTune.use(StringPositionTracker)",[27133,5347],"position tracker",[],[],[],[5340,3982,3981],{"type":22,"value":27139,"toc":27981},[27140,27143,27148,27159,27162,27164,27166,27174,27177,27194,27196,27199,27213,27215,27241,27247,27249,27278,27327,27329,27331,27333,27512,27865,27867,27924,27926,27942,27944,27979],[25,27141,5347],{"id":27142},"stringpositiontracker",[30,27144,27145,27147],{},[60,27146,5347],{}," is a diagnostics module for the active global scroll state. On every scroll update it exposes three public values:",[42,27149,27150,27153,27156],{},[45,27151,27152],{},"current scroll position in pixels",[45,27154,27155],{},"current scroll position as a percentage",[45,27157,27158],{},"current direction marker",[30,27160,27161],{},"It can write those values into DOM attributes, emit them as one shared event, and optionally show a floating overlay.",[37,27163,5407],{"id":5406},[174,27165,4905],{"id":4904},[30,27167,27168,26568,27170,26571,27172,106],{},[60,27169,5347],{},[60,27171,2042],{},[60,27173,23112],{},[30,27175,27176],{},"The DOM hooks it watches are:",[42,27178,27179,27184,27189],{},[45,27180,27181],{},[60,27182,27183],{},"data-val",[45,27185,27186],{},[60,27187,27188],{},"data-val-pct",[45,27190,27191],{},[60,27192,27193],{},"data-dir",[174,27195,5558],{"id":5557},[30,27197,27198],{},"The module writes these attributes:",[42,27200,27201,27205,27209],{},[45,27202,27203],{},[60,27204,27183],{},[45,27206,27207],{},[60,27208,27188],{},[45,27210,27211],{},[60,27212,27193],{},[30,27214,3507],{},[42,27216,27217,27222,27227],{},[45,27218,27219,27221],{},[60,27220,27183],{}," is the rounded current scroll position in pixels",[45,27223,27224,27226],{},[60,27225,27188],{}," is the rounded progress percentage of the global scroll range",[45,27228,27229,27231,27232,1833,27235,2703,27238],{},[60,27230,27193],{}," is one of ",[60,27233,27234],{},"â†“",[60,27236,27237],{},"â†‘",[60,27239,27240],{},"â€¢",[30,27242,4232,27243,27246],{},[60,27244,27245],{},"stringTune.PositionTrackerVisible = true",", the runtime also creates one floating overlay in the bottom-left corner and writes the same attributes there.",[174,27248,5593],{"id":3814},[2221,27250,27251,27261],{},[2224,27252,27253],{},[2227,27254,27255,27257,27259],{},[2230,27256,5602],{},[2230,27258,5605],{},[2230,27260,5608],{},[2240,27262,27263],{},[2227,27264,27265,27270,27275],{},[2245,27266,27267],{},[60,27268,27269],{},"scroll-position",[2245,27271,27272],{},[60,27273,27274],{},"{ val, valPct, direction }",[2245,27276,27277],{},"On every scroll update",[225,27279,27281],{"className":227,"code":27280,"language":229,"meta":230,"style":230},"stringTune.on('scroll-position', ({ val, valPct, direction }) => {\n  console.log(val, valPct, direction);\n});\n",[60,27282,27283,27314,27323],{"__ignoreMap":230},[234,27284,27285,27287,27289,27291,27294,27296,27299,27301,27304,27306,27308,27310,27312],{"class":236,"line":237},[234,27286,296],{"class":244},[234,27288,1536],{"class":281},[234,27290,329],{"class":244},[234,27292,27293],{"class":251},"'scroll-position'",[234,27295,23623],{"class":244},[234,27297,27298],{"class":899},"val",[234,27300,1833],{"class":244},[234,27302,27303],{"class":899},"valPct",[234,27305,1833],{"class":244},[234,27307,4217],{"class":899},[234,27309,23629],{"class":244},[234,27311,906],{"class":240},[234,27313,909],{"class":244},[234,27315,27316,27318,27320],{"class":236,"line":258},[234,27317,1482],{"class":244},[234,27319,1485],{"class":281},[234,27321,27322],{"class":244},"(val, valPct, direction);\n",[234,27324,27325],{"class":236,"line":265},[234,27326,1040],{"class":244},[174,27328,5667],{"id":5666},[30,27330,10483],{},[37,27332,5689],{"id":5688},[225,27334,27336],{"className":338,"code":27335,"language":340,"meta":230,"style":230},"\u003Cdiv class=\"scroll-debug\">\n  \u003Cdiv class=\"debug-row\">\n    \u003Cspan>Direction\u003C/span>\n    \u003Cstrong data-dir>\u003C/strong>\n  \u003C/div>\n  \u003Cdiv class=\"debug-row\">\n    \u003Cspan>Pixels\u003C/span>\n    \u003Cstrong data-val>\u003C/strong>\n  \u003C/div>\n  \u003Cdiv class=\"debug-row\">\n    \u003Cspan>Progress\u003C/span>\n    \u003Cstrong data-val-pct>\u003C/strong>\n  \u003C/div>\n\u003C/div>\n",[60,27337,27338,27353,27368,27381,27396,27404,27418,27431,27446,27454,27468,27481,27496,27504],{"__ignoreMap":230},[234,27339,27340,27342,27344,27346,27348,27351],{"class":236,"line":237},[234,27341,347],{"class":244},[234,27343,351],{"class":350},[234,27345,1297],{"class":281},[234,27347,357],{"class":244},[234,27349,27350],{"class":251},"\"scroll-debug\"",[234,27352,376],{"class":244},[234,27354,27355,27357,27359,27361,27363,27366],{"class":236,"line":258},[234,27356,1292],{"class":244},[234,27358,351],{"class":350},[234,27360,1297],{"class":281},[234,27362,357],{"class":244},[234,27364,27365],{"class":251},"\"debug-row\"",[234,27367,376],{"class":244},[234,27369,27370,27372,27374,27377,27379],{"class":236,"line":265},[234,27371,1321],{"class":244},[234,27373,234],{"class":350},[234,27375,27376],{"class":244},">Direction\u003C/",[234,27378,234],{"class":350},[234,27380,376],{"class":244},[234,27382,27383,27385,27387,27390,27392,27394],{"class":236,"line":288},[234,27384,1321],{"class":244},[234,27386,1929],{"class":350},[234,27388,27389],{"class":281}," data-dir",[234,27391,371],{"class":244},[234,27393,1929],{"class":350},[234,27395,376],{"class":244},[234,27397,27398,27400,27402],{"class":236,"line":293},[234,27399,1393],{"class":244},[234,27401,351],{"class":350},[234,27403,376],{"class":244},[234,27405,27406,27408,27410,27412,27414,27416],{"class":236,"line":305},[234,27407,1292],{"class":244},[234,27409,351],{"class":350},[234,27411,1297],{"class":281},[234,27413,357],{"class":244},[234,27415,27365],{"class":251},[234,27417,376],{"class":244},[234,27419,27420,27422,27424,27427,27429],{"class":236,"line":321},[234,27421,1321],{"class":244},[234,27423,234],{"class":350},[234,27425,27426],{"class":244},">Pixels\u003C/",[234,27428,234],{"class":350},[234,27430,376],{"class":244},[234,27432,27433,27435,27437,27440,27442,27444],{"class":236,"line":946},[234,27434,1321],{"class":244},[234,27436,1929],{"class":350},[234,27438,27439],{"class":281}," data-val",[234,27441,371],{"class":244},[234,27443,1929],{"class":350},[234,27445,376],{"class":244},[234,27447,27448,27450,27452],{"class":236,"line":955},[234,27449,1393],{"class":244},[234,27451,351],{"class":350},[234,27453,376],{"class":244},[234,27455,27456,27458,27460,27462,27464,27466],{"class":236,"line":11},[234,27457,1292],{"class":244},[234,27459,351],{"class":350},[234,27461,1297],{"class":281},[234,27463,357],{"class":244},[234,27465,27365],{"class":251},[234,27467,376],{"class":244},[234,27469,27470,27472,27474,27477,27479],{"class":236,"line":980},[234,27471,1321],{"class":244},[234,27473,234],{"class":350},[234,27475,27476],{"class":244},">Progress\u003C/",[234,27478,234],{"class":350},[234,27480,376],{"class":244},[234,27482,27483,27485,27487,27490,27492,27494],{"class":236,"line":994},[234,27484,1321],{"class":244},[234,27486,1929],{"class":350},[234,27488,27489],{"class":281}," data-val-pct",[234,27491,371],{"class":244},[234,27493,1929],{"class":350},[234,27495,376],{"class":244},[234,27497,27498,27500,27502],{"class":236,"line":1000},[234,27499,1393],{"class":244},[234,27501,351],{"class":350},[234,27503,376],{"class":244},[234,27505,27506,27508,27510],{"class":236,"line":1005},[234,27507,1402],{"class":244},[234,27509,351],{"class":350},[234,27511,376],{"class":244},[225,27513,27515],{"className":5857,"code":27514,"language":5859,"meta":230,"style":230},".scroll-debug {\n  position: fixed;\n  bottom: 24px;\n  left: 24px;\n  background: black;\n  color: white;\n  padding: 1.25rem;\n  border: 1px solid #333;\n  font-family: ui-monospace, SFMono-Regular, monospace;\n  font-size: 0.875rem;\n  display: grid;\n  gap: 0.75rem;\n  min-width: 180px;\n}\n\n.debug-row {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n}\n\n.debug-row span {\n  color: #999;\n  text-transform: uppercase;\n  font-size: 0.75rem;\n  letter-spacing: 0.05em;\n}\n\n[data-dir]::before { content: attr(data-dir); }\n[data-val]::before { content: attr(data-val) \"px\"; }\n[data-val-pct]::before { content: attr(data-val-pct) \"%\"; }\n",[60,27516,27517,27524,27534,27546,27558,27568,27578,27590,27606,27620,27632,27642,27654,27666,27670,27674,27681,27691,27701,27711,27715,27719,27727,27737,27747,27759,27771,27775,27779,27806,27836],{"__ignoreMap":230},[234,27518,27519,27522],{"class":236,"line":237},[234,27520,27521],{"class":281},".scroll-debug",[234,27523,909],{"class":244},[234,27525,27526,27528,27530,27532],{"class":236,"line":258},[234,27527,7598],{"class":271},[234,27529,1443],{"class":244},[234,27531,2863],{"class":271},[234,27533,255],{"class":244},[234,27535,27536,27538,27540,27542,27544],{"class":236,"line":265},[234,27537,10129],{"class":271},[234,27539,1443],{"class":244},[234,27541,6740],{"class":271},[234,27543,1789],{"class":240},[234,27545,255],{"class":244},[234,27547,27548,27550,27552,27554,27556],{"class":236,"line":288},[234,27549,10016],{"class":271},[234,27551,1443],{"class":244},[234,27553,6740],{"class":271},[234,27555,1789],{"class":240},[234,27557,255],{"class":244},[234,27559,27560,27562,27564,27566],{"class":236,"line":293},[234,27561,6023],{"class":271},[234,27563,1443],{"class":244},[234,27565,9965],{"class":271},[234,27567,255],{"class":244},[234,27569,27570,27572,27574,27576],{"class":236,"line":305},[234,27571,11568],{"class":271},[234,27573,1443],{"class":244},[234,27575,6028],{"class":271},[234,27577,255],{"class":244},[234,27579,27580,27582,27584,27586,27588],{"class":236,"line":321},[234,27581,1749],{"class":271},[234,27583,1443],{"class":244},[234,27585,14331],{"class":271},[234,27587,1711],{"class":240},[234,27589,255],{"class":244},[234,27591,27592,27594,27596,27598,27600,27602,27604],{"class":236,"line":946},[234,27593,1769],{"class":271},[234,27595,1443],{"class":244},[234,27597,1754],{"class":271},[234,27599,1789],{"class":240},[234,27601,6013],{"class":271},[234,27603,16240],{"class":271},[234,27605,255],{"class":244},[234,27607,27608,27610,27612,27614,27616,27618],{"class":236,"line":955},[234,27609,26880],{"class":271},[234,27611,1443],{"class":244},[234,27613,26885],{"class":271},[234,27615,26888],{"class":244},[234,27617,26891],{"class":271},[234,27619,255],{"class":244},[234,27621,27622,27624,27626,27628,27630],{"class":236,"line":11},[234,27623,9886],{"class":271},[234,27625,1443],{"class":244},[234,27627,23040],{"class":271},[234,27629,1711],{"class":240},[234,27631,255],{"class":244},[234,27633,27634,27636,27638,27640],{"class":236,"line":980},[234,27635,1677],{"class":271},[234,27637,1443],{"class":244},[234,27639,1682],{"class":271},[234,27641,255],{"class":244},[234,27643,27644,27646,27648,27650,27652],{"class":236,"line":994},[234,27645,1703],{"class":271},[234,27647,1443],{"class":244},[234,27649,2527],{"class":271},[234,27651,1711],{"class":240},[234,27653,255],{"class":244},[234,27655,27656,27658,27660,27662,27664],{"class":236,"line":1000},[234,27657,25031],{"class":271},[234,27659,1443],{"class":244},[234,27661,25036],{"class":271},[234,27663,1789],{"class":240},[234,27665,255],{"class":244},[234,27667,27668],{"class":236,"line":1005},[234,27669,1143],{"class":244},[234,27671,27672],{"class":236,"line":1013},[234,27673,262],{"emptyLinePlaceholder":261},[234,27675,27676,27679],{"class":236,"line":1019},[234,27677,27678],{"class":281},".debug-row",[234,27680,909],{"class":244},[234,27682,27683,27685,27687,27689],{"class":236,"line":1025},[234,27684,1677],{"class":271},[234,27686,1443],{"class":244},[234,27688,12585],{"class":271},[234,27690,255],{"class":244},[234,27692,27693,27695,27697,27699],{"class":236,"line":1031},[234,27694,12602],{"class":271},[234,27696,1443],{"class":244},[234,27698,14260],{"class":271},[234,27700,255],{"class":244},[234,27702,27703,27705,27707,27709],{"class":236,"line":1037},[234,27704,6805],{"class":271},[234,27706,1443],{"class":244},[234,27708,1695],{"class":271},[234,27710,255],{"class":244},[234,27712,27713],{"class":236,"line":427},[234,27714,1143],{"class":244},[234,27716,27717],{"class":236,"line":1571},[234,27718,262],{"emptyLinePlaceholder":261},[234,27720,27721,27723,27725],{"class":236,"line":1592},[234,27722,27678],{"class":281},[234,27724,19734],{"class":350},[234,27726,909],{"class":244},[234,27728,27729,27731,27733,27735],{"class":236,"line":1600},[234,27730,11568],{"class":271},[234,27732,1443],{"class":244},[234,27734,16695],{"class":271},[234,27736,255],{"class":244},[234,27738,27739,27741,27743,27745],{"class":236,"line":1615},[234,27740,9899],{"class":271},[234,27742,1443],{"class":244},[234,27744,9904],{"class":271},[234,27746,255],{"class":244},[234,27748,27749,27751,27753,27755,27757],{"class":236,"line":1620},[234,27750,9886],{"class":271},[234,27752,1443],{"class":244},[234,27754,2527],{"class":271},[234,27756,1711],{"class":240},[234,27758,255],{"class":244},[234,27760,27761,27763,27765,27767,27769],{"class":236,"line":1625},[234,27762,15567],{"class":271},[234,27764,1443],{"class":244},[234,27766,14693],{"class":271},[234,27768,3714],{"class":240},[234,27770,255],{"class":244},[234,27772,27773],{"class":236,"line":1634},[234,27774,1143],{"class":244},[234,27776,27777],{"class":236,"line":1639},[234,27778,262],{"emptyLinePlaceholder":261},[234,27780,27781,27784,27786,27789,27791,27793,27796,27798,27800,27802,27804],{"class":236,"line":1651},[234,27782,27783],{"class":244},"[",[234,27785,27193],{"class":281},[234,27787,27788],{"class":244},"]",[234,27790,27108],{"class":281},[234,27792,1437],{"class":244},[234,27794,27795],{"class":271},"content",[234,27797,1443],{"class":244},[234,27799,26989],{"class":271},[234,27801,329],{"class":244},[234,27803,27193],{"class":899},[234,27805,17397],{"class":244},[234,27807,27808,27810,27812,27814,27816,27818,27820,27822,27824,27826,27828,27830,27833],{"class":236,"line":609},[234,27809,27783],{"class":244},[234,27811,27183],{"class":281},[234,27813,27788],{"class":244},[234,27815,27108],{"class":281},[234,27817,1437],{"class":244},[234,27819,27795],{"class":271},[234,27821,1443],{"class":244},[234,27823,26989],{"class":271},[234,27825,329],{"class":244},[234,27827,27183],{"class":899},[234,27829,903],{"class":244},[234,27831,27832],{"class":251},"\"px\"",[234,27834,27835],{"class":244},"; }\n",[234,27837,27838,27840,27842,27844,27846,27848,27850,27852,27854,27856,27858,27860,27863],{"class":236,"line":1674},[234,27839,27783],{"class":244},[234,27841,27188],{"class":281},[234,27843,27788],{"class":244},[234,27845,27108],{"class":281},[234,27847,1437],{"class":244},[234,27849,27795],{"class":271},[234,27851,1443],{"class":244},[234,27853,26989],{"class":271},[234,27855,329],{"class":244},[234,27857,27188],{"class":899},[234,27859,903],{"class":244},[234,27861,27862],{"class":251},"\"%\"",[234,27864,27835],{"class":244},[37,27866,6074],{"id":6073},[225,27868,27870],{"className":227,"code":27869,"language":229,"meta":230,"style":230},"import StringTune, { StringPositionTracker } from '@fiddle-digital/string-tune';\n\nconst stringTune = StringTune.getInstance();\nstringTune.use(StringPositionTracker);\nstringTune.start(60);\n",[60,27871,27872,27885,27889,27903,27912],{"__ignoreMap":230},[234,27873,27874,27876,27879,27881,27883],{"class":236,"line":237},[234,27875,241],{"class":240},[234,27877,27878],{"class":244}," StringTune, { StringPositionTracker } ",[234,27880,248],{"class":240},[234,27882,252],{"class":251},[234,27884,255],{"class":244},[234,27886,27887],{"class":236,"line":258},[234,27888,262],{"emptyLinePlaceholder":261},[234,27890,27891,27893,27895,27897,27899,27901],{"class":236,"line":265},[234,27892,268],{"class":240},[234,27894,272],{"class":271},[234,27896,275],{"class":240},[234,27898,278],{"class":244},[234,27900,282],{"class":281},[234,27902,285],{"class":244},[234,27904,27905,27907,27909],{"class":236,"line":288},[234,27906,296],{"class":244},[234,27908,299],{"class":281},[234,27910,27911],{"class":244},"(StringPositionTracker);\n",[234,27913,27914,27916,27918,27920,27922],{"class":236,"line":293},[234,27915,296],{"class":244},[234,27917,326],{"class":281},[234,27919,329],{"class":244},[234,27921,332],{"class":271},[234,27923,335],{"class":244},[30,27925,27066],{},[225,27927,27929],{"className":227,"code":27928,"language":229,"meta":230,"style":230},"stringTune.PositionTrackerVisible = true;\n",[60,27930,27931],{"__ignoreMap":230},[234,27932,27933,27936,27938,27940],{"class":236,"line":237},[234,27934,27935],{"class":244},"stringTune.PositionTrackerVisible ",[234,27937,357],{"class":240},[234,27939,4833],{"class":271},[234,27941,255],{"class":244},[37,27943,6133],{"id":6132},[42,27945,27946,27951,27958,27967],{},[45,27947,27948,27949,106],{},"The tracker watches the whole document for the three diagnostic attributes and refreshes its cache through a ",[60,27950,4552],{},[45,27952,27953,27954,27957],{},"Percentage is computed from ",[60,27955,27956],{},"current / (contentHeight - windowHeight)"," and rounded to an integer.",[45,27959,27960,27961,27963,27964,106],{},"Direction is derived from scroll motion. When movement stops, the module resets the marker to ",[60,27962,27240],{}," after about ",[60,27965,27966],{},"150ms",[45,27968,27111,27969,1833,27972,7048,27975,27978],{},[60,27970,27971],{},"[data-val]",[60,27973,27974],{},"[data-val-pct]",[60,27976,27977],{},"[data-dir]"," elements still receive updates, but you control their visual presentation.",[410,27980,6155],{},{"title":230,"searchDepth":258,"depth":258,"links":27982},[27983,27989,27990,27991],{"id":5406,"depth":258,"text":5407,"children":27984},[27985,27986,27987,27988],{"id":4904,"depth":265,"text":4905},{"id":5557,"depth":265,"text":5558},{"id":3814,"depth":265,"text":5593},{"id":5666,"depth":265,"text":5667},{"id":5688,"depth":258,"text":5689},{"id":6073,"depth":258,"text":6074},{"id":6132,"depth":258,"text":6133},{"path":2350,"title":5357,"description":27993,"kind":9,"section":5357,"order":11,"group":-1,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":27994,"attrs":27995,"events":27996,"cssVars":27997,"related":27998,"body":28002},"Guidance for project-specific modules that extend StringTune but are not part of the official package API.",[],[],[],[],[27999,28000,28001],"/docs/custom-modules/first-module","/docs/custom-modules/module-contract","/docs/custom-modules/lifecycle-hooks",{"type":22,"value":28003,"toc":28220},[28004,28006,28009,28012,28016,28024,28027,28038,28042,28045,28078,28091,28095,28098,28161,28165,28168,28171,28187,28191,28194,28197,28213],[25,28005,5357],{"id":208},[30,28007,28008],{},"This section is the authoring handbook for project-specific modules.",[30,28010,28011],{},"It is not about internal runtime archaeology and it is not a catalog of built-in exports. The goal here is narrower: show how to build your own module on top of the public authoring surface that already ships with StringTune.",[37,28013,28015],{"id":28014},"what-counts-as-a-custom-module","What counts as a custom module",[30,28017,28018,28019,28021,28022,106],{},"A custom module is a class in your own project that extends ",[60,28020,2379],{}," and is registered through ",[60,28023,67],{},[30,28025,28026],{},"Typical reasons to write one:",[42,28028,28029,28032,28035],{},[45,28030,28031],{},"a design system needs a behavior that is too project-specific for the package",[45,28033,28034],{},"you want to compose existing runtime state into a new output channel",[45,28036,28037],{},"you want one declarative HTML contract shared across several pages",[37,28039,28041],{"id":28040},"safe-authoring-surface","Safe authoring surface",[30,28043,28044],{},"These are the authoring primitives that are exported by the package and are reasonable to rely on when building custom modules:",[42,28046,28047,28051,28056,28061,28065,28069,28073],{},[45,28048,28049],{},[60,28050,2379],{},[45,28052,28053],{},[60,28054,28055],{},"StringObject",[45,28057,28058],{},[60,28059,28060],{},"StringContext",[45,28062,28063],{},[60,28064,2384],{},[45,28066,28067],{},[60,28068,2389],{},[45,28070,28071],{},[60,28072,4655],{},[45,28074,28075],{},[60,28076,28077],{},"DOMBatcher",[30,28079,28080,28081,1833,28084,2703,28087,28090],{},"Everything else in ",[60,28082,28083],{},"core/managers",[60,28085,28086],{},"objects",[60,28088,28089],{},"modules"," should be treated as implementation detail unless it is explicitly exported by the package.",[37,28092,28094],{"id":28093},"what-this-section-covers","What this section covers",[30,28096,28097],{},"Use the pages in this order:",[99,28099,28100,28106,28113,28123,28129,28139,28145,28152],{},[45,28101,28102,28105],{},[133,28103,28104],{"href":27999},"First Custom Module"," for the smallest working example.",[45,28107,28108,28112],{},[133,28109,28111],{"href":28110},"/docs/custom-modules/element-vs-global","Element vs Global Modules"," to choose the right module shape.",[45,28114,28115,28118,28119,28122],{},[133,28116,28117],{"href":28000},"Module Contract"," to understand ",[60,28120,28121],{},"htmlKey",", settings, attribute mapping, and output channels.",[45,28124,28125,28128],{},[133,28126,28127],{"href":28001},"Lifecycle Hooks"," to see which hooks actually run in the current runtime.",[45,28130,28131,28135,28136,28138],{},[133,28132,28134],{"href":28133},"/docs/custom-modules/objects-and-attributes","Objects and Attributes"," for ",[60,28137,28055],{},", mirrored elements, and parsed properties.",[45,28140,28141,28144],{},[133,28142,28143],{"href":9008},"Context, Tools, and Events"," for the injected utilities and event patterns.",[45,28146,28147,28151],{},[133,28148,28150],{"href":28149},"/docs/custom-modules/performance-patterns","Performance Patterns"," for read/write separation and rebuild control.",[45,28153,28154,28158,28159,106],{},[133,28155,28157],{"href":28156},"/docs/custom-modules/worked-example","Worked Example"," for a full element module that composes with ",[60,28160,190],{},[37,28162,28164],{"id":28163},"authoring-rule","Authoring rule",[30,28166,28167],{},"Do not document or ship a project module as if it were a built-in package module.",[30,28169,28170],{},"Every custom module page or code example should make these boundaries explicit:",[42,28172,28173,28176,28179,28184],{},[45,28174,28175],{},"where the module lives",[45,28177,28178],{},"who owns it",[45,28180,28181,28182],{},"whether it ships with ",[60,28183,5371],{},[45,28185,28186],{},"which built-in runtime assumptions it depends on",[37,28188,28190],{"id":28189},"the-practical-mindset","The practical mindset",[30,28192,28193],{},"Good custom modules in StringTune are usually small.",[30,28195,28196],{},"They do one of these things well:",[42,28198,28199,28202,28207,28210],{},[45,28200,28201],{},"read a few attributes and write CSS variables",[45,28203,28204,28205],{},"react to existing object state such as ",[60,28206,5373],{},[45,28208,28209],{},"subscribe to events and republish a more convenient channel",[45,28211,28212],{},"bind one DOM-specific behavior behind a stable declarative API",[30,28214,28215,28216,28219],{},"If a module starts needing deep knowledge of ",[60,28217,28218],{},"ObjectManager",", hidden DOM rebuild phases, or private state from another module, that is usually a sign that the design should be simplified.",{"title":230,"searchDepth":258,"depth":258,"links":28221},[28222,28223,28224,28225,28226],{"id":28014,"depth":258,"text":28015},{"id":28040,"depth":258,"text":28041},{"id":28093,"depth":258,"text":28094},{"id":28163,"depth":258,"text":28164},{"id":28189,"depth":258,"text":28190},{"path":27999,"title":28104,"description":28228,"kind":9,"section":5357,"order":427,"group":28229,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":28230,"attrs":28233,"events":28234,"cssVars":28235,"related":28236,"body":28237},"Minimal path from extending StringModule to registering and consuming your own project module.","Getting Started",[28231,28232],"custom module quick start","extend StringModule",[],[],[],[28110,28000],{"type":22,"value":28238,"toc":28817},[28239,28242,28248,28252,28513,28587,28628,28632,28679,28683,28688,28691,28704,28707,28732,28736,28739,28753,28756,28786,28789,28793,28796,28811,28814],[25,28240,28104],{"id":28241},"first-custom-module",[30,28243,28244,28245,28247],{},"The smallest useful custom module is usually an element module with one ",[60,28246,28121],{},", one mapped attribute, and one DOM output.",[37,28249,28251],{"id":28250},"minimal-example","Minimal example",[225,28253,28255],{"className":227,"code":28254,"language":229,"meta":230,"style":230},"import { StringContext, StringModule, StringObject } from '@fiddle-digital/string-tune';\n\nexport class StringOutlineOffset extends StringModule {\n  constructor(context: StringContext) {\n    super(context);\n    this.htmlKey = 'outline-offset';\n\n    this.attributesToMap = [\n      ...this.attributesToMap,\n      { key: 'outline-offset', type: 'dimension', fallback: '8px' },\n    ];\n  }\n\n  override onObjectConnected(object: StringObject): void {\n    const offset = object.getProperty\u003Cnumber>('outline-offset');\n\n    this.applyToElementAndConnects(object, (el) => {\n      el.style.outline = '1px solid currentColor';\n      el.style.outlineOffset = `${offset}px`;\n    });\n  }\n}\n",[60,28256,28257,28270,28274,28291,28308,28316,28331,28335,28347,28358,28380,28385,28389,28393,28420,28446,28450,28471,28483,28500,28505,28509],{"__ignoreMap":230},[234,28258,28259,28261,28264,28266,28268],{"class":236,"line":237},[234,28260,241],{"class":240},[234,28262,28263],{"class":244}," { StringContext, StringModule, StringObject } ",[234,28265,248],{"class":240},[234,28267,252],{"class":251},[234,28269,255],{"class":244},[234,28271,28272],{"class":236,"line":258},[234,28273,262],{"emptyLinePlaceholder":261},[234,28275,28276,28278,28280,28283,28286,28289],{"class":236,"line":265},[234,28277,887],{"class":240},[234,28279,1297],{"class":240},[234,28281,28282],{"class":281}," StringOutlineOffset",[234,28284,28285],{"class":240}," extends",[234,28287,28288],{"class":281}," StringModule",[234,28290,909],{"class":244},[234,28292,28293,28296,28298,28301,28303,28306],{"class":236,"line":288},[234,28294,28295],{"class":240},"  constructor",[234,28297,329],{"class":244},[234,28299,28300],{"class":899},"context",[234,28302,1114],{"class":240},[234,28304,28305],{"class":281}," StringContext",[234,28307,1477],{"class":244},[234,28309,28310,28313],{"class":236,"line":293},[234,28311,28312],{"class":271},"    super",[234,28314,28315],{"class":244},"(context);\n",[234,28317,28318,28321,28324,28326,28329],{"class":236,"line":305},[234,28319,28320],{"class":271},"    this",[234,28322,28323],{"class":244},".htmlKey ",[234,28325,357],{"class":240},[234,28327,28328],{"class":251}," 'outline-offset'",[234,28330,255],{"class":244},[234,28332,28333],{"class":236,"line":321},[234,28334,262],{"emptyLinePlaceholder":261},[234,28336,28337,28339,28342,28344],{"class":236,"line":946},[234,28338,28320],{"class":271},[234,28340,28341],{"class":244},".attributesToMap ",[234,28343,357],{"class":240},[234,28345,28346],{"class":244}," [\n",[234,28348,28349,28352,28355],{"class":236,"line":955},[234,28350,28351],{"class":240},"      ...",[234,28353,28354],{"class":271},"this",[234,28356,28357],{"class":244},".attributesToMap,\n",[234,28359,28360,28363,28366,28369,28372,28375,28378],{"class":236,"line":11},[234,28361,28362],{"class":244},"      { key: ",[234,28364,28365],{"class":251},"'outline-offset'",[234,28367,28368],{"class":244},", type: ",[234,28370,28371],{"class":251},"'dimension'",[234,28373,28374],{"class":244},", fallback: ",[234,28376,28377],{"class":251},"'8px'",[234,28379,23142],{"class":244},[234,28381,28382],{"class":236,"line":980},[234,28383,28384],{"class":244},"    ];\n",[234,28386,28387],{"class":236,"line":994},[234,28388,1138],{"class":244},[234,28390,28391],{"class":236,"line":1000},[234,28392,262],{"emptyLinePlaceholder":261},[234,28394,28395,28398,28401,28403,28406,28408,28411,28413,28415,28418],{"class":236,"line":1005},[234,28396,28397],{"class":240},"  override",[234,28399,28400],{"class":281}," onObjectConnected",[234,28402,329],{"class":244},[234,28404,28405],{"class":899},"object",[234,28407,1114],{"class":240},[234,28409,28410],{"class":281}," StringObject",[234,28412,3336],{"class":244},[234,28414,1114],{"class":240},[234,28416,28417],{"class":271}," void",[234,28419,909],{"class":244},[234,28421,28422,28424,28427,28429,28432,28435,28437,28439,28442,28444],{"class":236,"line":1013},[234,28423,2150],{"class":240},[234,28425,28426],{"class":271}," offset",[234,28428,275],{"class":240},[234,28430,28431],{"class":244}," object.",[234,28433,28434],{"class":281},"getProperty",[234,28436,347],{"class":244},[234,28438,5621],{"class":271},[234,28440,28441],{"class":244},">(",[234,28443,28365],{"class":251},[234,28445,335],{"class":244},[234,28447,28448],{"class":236,"line":1019},[234,28449,262],{"emptyLinePlaceholder":261},[234,28451,28452,28454,28456,28459,28462,28465,28467,28469],{"class":236,"line":1025},[234,28453,28320],{"class":271},[234,28455,106],{"class":244},[234,28457,28458],{"class":281},"applyToElementAndConnects",[234,28460,28461],{"class":244},"(object, (",[234,28463,28464],{"class":899},"el",[234,28466,903],{"class":244},[234,28468,906],{"class":240},[234,28470,909],{"class":244},[234,28472,28473,28476,28478,28481],{"class":236,"line":1031},[234,28474,28475],{"class":244},"      el.style.outline ",[234,28477,357],{"class":240},[234,28479,28480],{"class":251}," '1px solid currentColor'",[234,28482,255],{"class":244},[234,28484,28485,28488,28490,28493,28495,28498],{"class":236,"line":1037},[234,28486,28487],{"class":244},"      el.style.outlineOffset ",[234,28489,357],{"class":240},[234,28491,28492],{"class":251}," `${",[234,28494,2719],{"class":244},[234,28496,28497],{"class":251},"}px`",[234,28499,255],{"class":244},[234,28501,28502],{"class":236,"line":427},[234,28503,28504],{"class":244},"    });\n",[234,28506,28507],{"class":236,"line":1571},[234,28508,1138],{"class":244},[234,28510,28511],{"class":236,"line":1592},[234,28512,1143],{"class":244},[225,28514,28516],{"className":227,"code":28515,"language":229,"meta":230,"style":230},"import StringTune from '@fiddle-digital/string-tune';\nimport { StringOutlineOffset } from './modules/StringOutlineOffset';\n\nconst stringTune = StringTune.getInstance();\n\nstringTune.use(StringOutlineOffset);\nstringTune.start(60);\n",[60,28517,28518,28530,28544,28548,28562,28566,28575],{"__ignoreMap":230},[234,28519,28520,28522,28524,28526,28528],{"class":236,"line":237},[234,28521,241],{"class":240},[234,28523,1073],{"class":244},[234,28525,248],{"class":240},[234,28527,252],{"class":251},[234,28529,255],{"class":244},[234,28531,28532,28534,28537,28539,28542],{"class":236,"line":258},[234,28533,241],{"class":240},[234,28535,28536],{"class":244}," { StringOutlineOffset } ",[234,28538,248],{"class":240},[234,28540,28541],{"class":251}," './modules/StringOutlineOffset'",[234,28543,255],{"class":244},[234,28545,28546],{"class":236,"line":265},[234,28547,262],{"emptyLinePlaceholder":261},[234,28549,28550,28552,28554,28556,28558,28560],{"class":236,"line":288},[234,28551,268],{"class":240},[234,28553,272],{"class":271},[234,28555,275],{"class":240},[234,28557,278],{"class":244},[234,28559,282],{"class":281},[234,28561,285],{"class":244},[234,28563,28564],{"class":236,"line":293},[234,28565,262],{"emptyLinePlaceholder":261},[234,28567,28568,28570,28572],{"class":236,"line":305},[234,28569,296],{"class":244},[234,28571,299],{"class":281},[234,28573,28574],{"class":244},"(StringOutlineOffset);\n",[234,28576,28577,28579,28581,28583,28585],{"class":236,"line":321},[234,28578,296],{"class":244},[234,28580,326],{"class":281},[234,28582,329],{"class":244},[234,28584,332],{"class":271},[234,28586,335],{"class":244},[225,28588,28590],{"className":338,"code":28589,"language":340,"meta":230,"style":230},"\u003Cbutton string=\"outline-offset\" string-outline-offset=\"14px\">\n  Hover target\n\u003C/button>\n",[60,28591,28592,28615,28620],{"__ignoreMap":230},[234,28593,28594,28596,28598,28600,28602,28605,28608,28610,28613],{"class":236,"line":237},[234,28595,347],{"class":244},[234,28597,1359],{"class":350},[234,28599,354],{"class":281},[234,28601,357],{"class":244},[234,28603,28604],{"class":251},"\"outline-offset\"",[234,28606,28607],{"class":281}," string-outline-offset",[234,28609,357],{"class":244},[234,28611,28612],{"class":251},"\"14px\"",[234,28614,376],{"class":244},[234,28616,28617],{"class":236,"line":258},[234,28618,28619],{"class":244},"  Hover target\n",[234,28621,28622,28624,28626],{"class":236,"line":265},[234,28623,1402],{"class":244},[234,28625,1359],{"class":350},[234,28627,376],{"class":244},[37,28629,28631],{"id":28630},"what-each-part-does","What each part does",[42,28633,28634,28640,28652,28664,28670],{},[45,28635,28636,28639],{},[60,28637,28638],{},"extends StringModule"," opts your class into the module runtime.",[45,28641,28642,28645,28646,28648,28649,106],{},[60,28643,28644],{},"htmlKey = 'outline-offset'"," means the module can connect to elements whose ",[60,28647,2252],{}," list contains ",[60,28650,28651],{},"outline-offset",[45,28653,28654,28657,28658,28661,28662,106],{},[60,28655,28656],{},"attributesToMap"," tells the base class to read ",[60,28659,28660],{},"string-outline-offset"," and parse it as a ",[60,28663,5467],{},[45,28665,28666,28669],{},[60,28667,28668],{},"onObjectConnected(...)"," is the first object-specific hook where the element and parsed properties are ready.",[45,28671,28672,28675,28676,28678],{},[60,28673,28674],{},"applyToElementAndConnects(...)"," writes to the main element and any ",[60,28677,2457],{}," mirrors.",[37,28680,28682],{"id":28681},"the-important-registration-rule","The important registration rule",[30,28684,28685,28687],{},[60,28686,67],{}," expects a class constructor, not an already-created instance.",[30,28689,28690],{},"This is correct:",[225,28692,28694],{"className":227,"code":28693,"language":229,"meta":230,"style":230},"stringTune.use(StringOutlineOffset);\n",[60,28695,28696],{"__ignoreMap":230},[234,28697,28698,28700,28702],{"class":236,"line":237},[234,28699,296],{"class":244},[234,28701,299],{"class":281},[234,28703,28574],{"class":244},[30,28705,28706],{},"This is not:",[225,28708,28710],{"className":227,"code":28709,"language":229,"meta":230,"style":230},"stringTune.use(new StringOutlineOffset(...));\n",[60,28711,28712],{"__ignoreMap":230},[234,28713,28714,28716,28718,28720,28723,28725,28727,28730],{"class":236,"line":237},[234,28715,296],{"class":244},[234,28717,299],{"class":281},[234,28719,329],{"class":244},[234,28721,28722],{"class":240},"new",[234,28724,28282],{"class":281},[234,28726,329],{"class":244},[234,28728,28729],{"class":240},"...",[234,28731,1875],{"class":244},[37,28733,28735],{"id":28734},"where-settings-come-from","Where settings come from",[30,28737,28738],{},"When the runtime instantiates the module, it merges:",[99,28740,28741,28747],{},[45,28742,28743,28744],{},"global defaults from ",[60,28745,28746],{},"stringTune.setupSettings(...)",[45,28748,28749,28750],{},"per-registration overrides from ",[60,28751,28752],{},"stringTune.use(Module, settings)",[30,28754,28755],{},"So this is valid:",[225,28757,28759],{"className":227,"code":28758,"language":229,"meta":230,"style":230},"stringTune.use(StringOutlineOffset, {\n  'outline-offset': '12px',\n});\n",[60,28760,28761,28770,28782],{"__ignoreMap":230},[234,28762,28763,28765,28767],{"class":236,"line":237},[234,28764,296],{"class":244},[234,28766,299],{"class":281},[234,28768,28769],{"class":244},"(StringOutlineOffset, {\n",[234,28771,28772,28775,28777,28780],{"class":236,"line":258},[234,28773,28774],{"class":251},"  'outline-offset'",[234,28776,1443],{"class":244},[234,28778,28779],{"class":251},"'12px'",[234,28781,2506],{"class":244},[234,28783,28784],{"class":236,"line":265},[234,28785,1040],{"class":244},[30,28787,28788],{},"The mapped attribute still wins when the element provides its own value.",[37,28790,28792],{"id":28791},"when-to-stop-at-this-level","When to stop at this level",[30,28794,28795],{},"This pattern is enough if your module only needs to:",[42,28797,28798,28801,28804],{},[45,28799,28800],{},"read attributes once",[45,28802,28803],{},"apply static classes or styles",[45,28805,28806,28807,137,28809],{},"attach object-local listeners such as ",[60,28808,13802],{},[60,28810,13805],{},[30,28812,28813],{},"When you need scroll, cursor, resize, events, or batched writes, move on to the next pages instead of improvising from this example.",[410,28815,28816],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":230,"searchDepth":258,"depth":258,"links":28818},[28819,28820,28821,28822,28823],{"id":28250,"depth":258,"text":28251},{"id":28630,"depth":258,"text":28631},{"id":28681,"depth":258,"text":28682},{"id":28734,"depth":258,"text":28735},{"id":28791,"depth":258,"text":28792},{"path":28110,"title":28111,"description":28825,"kind":9,"section":5357,"order":609,"group":28229,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":28826,"attrs":28828,"events":28829,"cssVars":28830,"related":28831,"body":28832},"Choose whether your custom module should attach to objects or run as a global runtime participant.",[28827,28121],"global module",[],[],[],[27999,28000],{"type":22,"value":28833,"toc":29258},[28834,28837,28840,28844,28850,28853,28874,28877,28938,28969,28973,28979,28982,28996,28998,29104,29118,29122,29125,29186,29192,29196,29205,29219,29227,29230,29234,29237,29240,29252,29255],[25,28835,28111],{"id":28836},"element-vs-global-modules",[30,28838,28839],{},"Before writing code, decide whether your module is object-driven or runtime-driven.",[37,28841,28843],{"id":28842},"element-modules","Element modules",[30,28845,28846,28847,28849],{},"Element modules connect to ",[60,28848,28055],{}," instances discovered in the DOM.",[30,28851,28852],{},"Use an element module when:",[42,28854,28855,28858,28861,28864],{},[45,28856,28857],{},"behavior is declared in markup",[45,28859,28860],{},"you need per-element attributes",[45,28862,28863],{},"you write output to one element and its mirrors",[45,28865,28866,28867,1833,28869,7048,28871],{},"you want ",[60,28868,28668],{},[60,28870,28086],{},[60,28872,28873],{},"object.events",[30,28875,28876],{},"Typical shape:",[225,28878,28880],{"className":227,"code":28879,"language":229,"meta":230,"style":230},"export class StringMyModule extends StringModule {\n  constructor(context: StringContext) {\n    super(context);\n    this.htmlKey = 'my-module';\n  }\n}\n",[60,28881,28882,28897,28911,28917,28930,28934],{"__ignoreMap":230},[234,28883,28884,28886,28888,28891,28893,28895],{"class":236,"line":237},[234,28885,887],{"class":240},[234,28887,1297],{"class":240},[234,28889,28890],{"class":281}," StringMyModule",[234,28892,28285],{"class":240},[234,28894,28288],{"class":281},[234,28896,909],{"class":244},[234,28898,28899,28901,28903,28905,28907,28909],{"class":236,"line":258},[234,28900,28295],{"class":240},[234,28902,329],{"class":244},[234,28904,28300],{"class":899},[234,28906,1114],{"class":240},[234,28908,28305],{"class":281},[234,28910,1477],{"class":244},[234,28912,28913,28915],{"class":236,"line":265},[234,28914,28312],{"class":271},[234,28916,28315],{"class":244},[234,28918,28919,28921,28923,28925,28928],{"class":236,"line":288},[234,28920,28320],{"class":271},[234,28922,28323],{"class":244},[234,28924,357],{"class":240},[234,28926,28927],{"class":251}," 'my-module'",[234,28929,255],{"class":244},[234,28931,28932],{"class":236,"line":293},[234,28933,1138],{"class":244},[234,28935,28936],{"class":236,"line":305},[234,28937,1143],{"class":244},[225,28939,28941],{"className":338,"code":28940,"language":340,"meta":230,"style":230},"\u003Cdiv string=\"my-module\" string-my-value=\"24\">\u003C/div>\n",[60,28942,28943],{"__ignoreMap":230},[234,28944,28945,28947,28949,28951,28953,28956,28959,28961,28963,28965,28967],{"class":236,"line":237},[234,28946,347],{"class":244},[234,28948,351],{"class":350},[234,28950,354],{"class":281},[234,28952,357],{"class":244},[234,28954,28955],{"class":251},"\"my-module\"",[234,28957,28958],{"class":281}," string-my-value",[234,28960,357],{"class":244},[234,28962,21712],{"class":251},[234,28964,371],{"class":244},[234,28966,351],{"class":350},[234,28968,376],{"class":244},[37,28970,28972],{"id":28971},"global-modules","Global modules",[30,28974,28975,28976,28978],{},"Global modules participate in the runtime without requiring ",[60,28977,112],{}," on elements.",[30,28980,28981],{},"Use a global module when:",[42,28983,28984,28987,28990,28993],{},[45,28985,28986],{},"behavior is app-wide",[45,28988,28989],{},"no per-object connection step is needed",[45,28991,28992],{},"you mainly react to scroll, pointer, viewport, or events",[45,28994,28995],{},"the module manages its own DOM querying or global classes",[30,28997,28876],{},[225,28999,29001],{"className":227,"code":29000,"language":229,"meta":230,"style":230},"export class StringMyGlobalModule extends StringModule {\n  override onSubscribe(): void {\n    this.events.on('scroll:start', this.onScrollStartEvent);\n  }\n\n  override onUnsubscribe(): void {\n    this.events.off('scroll:start', this.onScrollStartEvent);\n  }\n}\n",[60,29002,29003,29018,29034,29055,29059,29063,29078,29096,29100],{"__ignoreMap":230},[234,29004,29005,29007,29009,29012,29014,29016],{"class":236,"line":237},[234,29006,887],{"class":240},[234,29008,1297],{"class":240},[234,29010,29011],{"class":281}," StringMyGlobalModule",[234,29013,28285],{"class":240},[234,29015,28288],{"class":281},[234,29017,909],{"class":244},[234,29019,29020,29022,29025,29028,29030,29032],{"class":236,"line":258},[234,29021,28397],{"class":240},[234,29023,29024],{"class":281}," onSubscribe",[234,29026,29027],{"class":244},"()",[234,29029,1114],{"class":240},[234,29031,28417],{"class":271},[234,29033,909],{"class":244},[234,29035,29036,29038,29041,29043,29045,29048,29050,29052],{"class":236,"line":265},[234,29037,28320],{"class":271},[234,29039,29040],{"class":244},".events.",[234,29042,1536],{"class":281},[234,29044,329],{"class":244},[234,29046,29047],{"class":251},"'scroll:start'",[234,29049,1833],{"class":244},[234,29051,28354],{"class":271},[234,29053,29054],{"class":244},".onScrollStartEvent);\n",[234,29056,29057],{"class":236,"line":288},[234,29058,1138],{"class":244},[234,29060,29061],{"class":236,"line":293},[234,29062,262],{"emptyLinePlaceholder":261},[234,29064,29065,29067,29070,29072,29074,29076],{"class":236,"line":305},[234,29066,28397],{"class":240},[234,29068,29069],{"class":281}," onUnsubscribe",[234,29071,29027],{"class":244},[234,29073,1114],{"class":240},[234,29075,28417],{"class":271},[234,29077,909],{"class":244},[234,29079,29080,29082,29084,29086,29088,29090,29092,29094],{"class":236,"line":321},[234,29081,28320],{"class":271},[234,29083,29040],{"class":244},[234,29085,1606],{"class":281},[234,29087,329],{"class":244},[234,29089,29047],{"class":251},[234,29091,1833],{"class":244},[234,29093,28354],{"class":271},[234,29095,29054],{"class":244},[234,29097,29098],{"class":236,"line":946},[234,29099,1138],{"class":244},[234,29101,29102],{"class":236,"line":955},[234,29103,1143],{"class":244},[225,29105,29107],{"className":227,"code":29106,"language":229,"meta":230,"style":230},"stringTune.use(StringMyGlobalModule);\n",[60,29108,29109],{"__ignoreMap":230},[234,29110,29111,29113,29115],{"class":236,"line":237},[234,29112,296],{"class":244},[234,29114,299],{"class":281},[234,29116,29117],{"class":244},"(StringMyGlobalModule);\n",[37,29119,29121],{"id":29120},"how-connection-actually-works","How connection actually works",[30,29123,29124],{},"For element modules, the runtime flow is:",[99,29126,29127,29135,29144,29157,29163,29168,29177],{},[45,29128,29129,29131,29132,29134],{},[60,29130,28218],{}," creates a ",[60,29133,28055],{}," from a DOM element.",[45,29136,29137,29138,29141,29142,106],{},"The module is considered connectable when ",[60,29139,29140],{},"canConnect(object)"," returns ",[60,29143,2629],{},[45,29145,29146,29147,29150,29151,29154,29155,106],{},"By default, ",[60,29148,29149],{},"canConnect(...)"," checks whether ",[60,29152,29153],{},"object.keys"," contains ",[60,29156,28121],{},[45,29158,29159,29160,106],{},"The runtime calls ",[60,29161,29162],{},"initializeObject(...)",[45,29164,29159,29165,106],{},[60,29166,29167],{},"calculatePositions(...)",[45,29169,29159,29170,29173,29174,29176],{},[60,29171,29172],{},"connectObject(...)",", which triggers ",[60,29175,28668],{}," on first connection.",[45,29178,29179,29180,137,29183,29185],{},"The module keeps that object in ",[60,29181,29182],{},"objectsOnPage",[60,29184,28086],{}," collections.",[30,29187,29188,29189,29191],{},"Global modules skip the object connection path unless they override ",[60,29190,29149],{}," or manually manage objects.",[37,29193,29195],{"id":29194},"core-module-vs-ui-module","Core module vs UI module",[30,29197,29198,29200,29201,29204],{},[60,29199,2379],{}," also has an internal ",[60,29202,29203],{},"type"," bucket:",[42,29206,29207,29213],{},[45,29208,29209,29212],{},[60,29210,29211],{},"type = 1"," means core module",[45,29214,29215,29218],{},[60,29216,29217],{},"type = 2"," means UI module",[30,29220,29221,29222,29224,29225,106],{},"Built-ins like ",[60,29223,5266],{}," switch to ",[60,29226,29217],{},[30,29228,29229],{},"For most custom modules, keep the default unless you have a concrete reason to separate the module into the UI queue. The runtime still dispatches the same lifecycle names to both buckets.",[37,29231,29233],{"id":29232},"practical-rule","Practical rule",[30,29235,29236],{},"Start with an element module unless you are sure the feature is global.",[30,29238,29239],{},"That keeps the contract clearer:",[42,29241,29242,29246,29249],{},[45,29243,29244],{},[60,29245,112],{},[45,29247,29248],{},"mapped attributes",[45,29250,29251],{},"object-local output",[30,29253,29254],{},"Once that shape stops fitting the feature, move to a global module intentionally rather than by accident.",[410,29256,29257],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":230,"searchDepth":258,"depth":258,"links":29259},[29260,29261,29262,29263,29264],{"id":28842,"depth":258,"text":28843},{"id":28971,"depth":258,"text":28972},{"id":29120,"depth":258,"text":29121},{"id":29194,"depth":258,"text":29195},{"id":29232,"depth":258,"text":29233},{"path":28000,"title":28117,"description":29266,"kind":9,"section":5357,"order":819,"group":29267,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":29268,"attrs":29271,"events":29272,"cssVars":29273,"related":29274,"body":29275},"What StringModule gives you by default: settings, htmlKey matching, attribute mapping, connection flow, and output channels.","Authoring Surface",[28656,29269,29270],"initializeObject","canConnect",[],[],[],[28133,9008],{"type":22,"value":29276,"toc":29885},[29277,29280,29285,29289,29292,29391,29412,29416,29421,29514,29517,29521,29527,29595,29598,29642,29646,29649,29692,29700,29704,29709,29721,29727,29731,29734,29748,29751,29777,29782,29786,29793,29795,29845,29850,29854,29860,29863,29879,29882],[25,29278,28117],{"id":29279},"module-contract",[30,29281,29282,29284],{},[60,29283,2379],{}," is the authoring base class. It already gives you a connection model, default attribute mapping, object collections, helper methods for mirrored elements, and a full lifecycle surface.",[37,29286,29288],{"id":29287},"what-your-module-usually-sets","What your module usually sets",[30,29290,29291],{},"Most custom modules define these three things first:",[225,29293,29295],{"className":227,"code":29294,"language":229,"meta":230,"style":230},"export class StringMyModule extends StringModule {\n  constructor(context: StringContext) {\n    super(context);\n    this.htmlKey = 'my-module';\n    this.attributesToMap = [\n      ...this.attributesToMap,\n      { key: 'my-value', type: 'number', fallback: 0 },\n    ];\n  }\n}\n",[60,29296,29297,29311,29325,29331,29343,29353,29361,29379,29383,29387],{"__ignoreMap":230},[234,29298,29299,29301,29303,29305,29307,29309],{"class":236,"line":237},[234,29300,887],{"class":240},[234,29302,1297],{"class":240},[234,29304,28890],{"class":281},[234,29306,28285],{"class":240},[234,29308,28288],{"class":281},[234,29310,909],{"class":244},[234,29312,29313,29315,29317,29319,29321,29323],{"class":236,"line":258},[234,29314,28295],{"class":240},[234,29316,329],{"class":244},[234,29318,28300],{"class":899},[234,29320,1114],{"class":240},[234,29322,28305],{"class":281},[234,29324,1477],{"class":244},[234,29326,29327,29329],{"class":236,"line":265},[234,29328,28312],{"class":271},[234,29330,28315],{"class":244},[234,29332,29333,29335,29337,29339,29341],{"class":236,"line":288},[234,29334,28320],{"class":271},[234,29336,28323],{"class":244},[234,29338,357],{"class":240},[234,29340,28927],{"class":251},[234,29342,255],{"class":244},[234,29344,29345,29347,29349,29351],{"class":236,"line":293},[234,29346,28320],{"class":271},[234,29348,28341],{"class":244},[234,29350,357],{"class":240},[234,29352,28346],{"class":244},[234,29354,29355,29357,29359],{"class":236,"line":305},[234,29356,28351],{"class":240},[234,29358,28354],{"class":271},[234,29360,28357],{"class":244},[234,29362,29363,29365,29368,29370,29373,29375,29377],{"class":236,"line":321},[234,29364,28362],{"class":244},[234,29366,29367],{"class":251},"'my-value'",[234,29369,28368],{"class":244},[234,29371,29372],{"class":251},"'number'",[234,29374,28374],{"class":244},[234,29376,1836],{"class":271},[234,29378,23142],{"class":244},[234,29380,29381],{"class":236,"line":946},[234,29382,28384],{"class":244},[234,29384,29385],{"class":236,"line":955},[234,29386,1138],{"class":244},[234,29388,29389],{"class":236,"line":11},[234,29390,1143],{"class":244},[42,29392,29393,29398,29403],{},[45,29394,29395,29397],{},[60,29396,28121],{}," controls default object matching.",[45,29399,29400,29402],{},[60,29401,28656],{}," declares additional per-object properties to parse.",[45,29404,29405,29408,29409,106],{},[60,29406,29407],{},"cssProperties"," is optional and only needed when the module wants ",[60,29410,29411],{},"CSS.registerProperty(...)",[37,29413,29415],{"id":29414},"base-attributes-you-already-inherit","Base attributes you already inherit",[30,29417,29418,29420],{},[60,29419,2379],{}," starts with a shared mapping for:",[42,29422,29423,29427,29431,29436,29440,29444,29448,29453,29457,29461,29466,29471,29475,29479,29484,29489,29494,29499,29504,29509],{},[45,29424,29425],{},[60,29426,22518],{},[45,29428,29429],{},[60,29430,2863],{},[45,29432,29433],{},[60,29434,29435],{},"outside-container",[45,29437,29438],{},[60,29439,9604],{},[45,29441,29442],{},[60,29443,2857],{},[45,29445,29446],{},[60,29447,2869],{},[45,29449,29450],{},[60,29451,29452],{},"key",[45,29454,29455],{},[60,29456,3263],{},[45,29458,29459],{},[60,29460,3264],{},[45,29462,29463],{},[60,29464,29465],{},"inview-top",[45,29467,29468],{},[60,29469,29470],{},"inview-bottom",[45,29472,29473],{},[60,29474,326],{},[45,29476,29477],{},[60,29478,11775],{},[45,29480,29481],{},[60,29482,29483],{},"size",[45,29485,29486],{},[60,29487,29488],{},"half-width",[45,29490,29491],{},[60,29492,29493],{},"half-height",[45,29495,29496],{},[60,29497,29498],{},"enter-el",[45,29500,29501],{},[60,29502,29503],{},"enter-vp",[45,29505,29506],{},[60,29507,29508],{},"exit-el",[45,29510,29511],{},[60,29512,29513],{},"exit-vp",[30,29515,29516],{},"That means custom modules automatically get the same geometry-oriented authoring surface as many built-ins.",[37,29518,29520],{"id":29519},"attribute-mapping","Attribute mapping",[30,29522,29523,29524,29526],{},"Each entry in ",[60,29525,28656],{}," has this shape:",[225,29528,29530],{"className":227,"code":29529,"language":229,"meta":230,"style":230},"{\n  key: 'my-value',\n  type: 'number',\n  fallback: 10,\n  transform: (value) => value * 2,\n}\n",[60,29531,29532,29536,29547,29558,29569,29591],{"__ignoreMap":230},[234,29533,29534],{"class":236,"line":237},[234,29535,13681],{"class":244},[234,29537,29538,29541,29543,29545],{"class":236,"line":258},[234,29539,29540],{"class":281},"  key",[234,29542,1443],{"class":244},[234,29544,29367],{"class":251},[234,29546,2506],{"class":244},[234,29548,29549,29552,29554,29556],{"class":236,"line":265},[234,29550,29551],{"class":281},"  type",[234,29553,1443],{"class":244},[234,29555,29372],{"class":251},[234,29557,2506],{"class":244},[234,29559,29560,29563,29565,29567],{"class":236,"line":288},[234,29561,29562],{"class":281},"  fallback",[234,29564,1443],{"class":244},[234,29566,14727],{"class":271},[234,29568,2506],{"class":244},[234,29570,29571,29573,29576,29578,29580,29582,29585,29587,29589],{"class":236,"line":293},[234,29572,1810],{"class":281},[234,29574,29575],{"class":244},": (",[234,29577,1469],{"class":899},[234,29579,903],{"class":244},[234,29581,906],{"class":240},[234,29583,29584],{"class":244}," value ",[234,29586,1841],{"class":240},[234,29588,14275],{"class":271},[234,29590,2506],{"class":244},[234,29592,29593],{"class":236,"line":305},[234,29594,1143],{"class":244},[30,29596,29597],{},"How the base class resolves values:",[99,29599,29600,29608,29618,29621,29624,29629,29636],{},[45,29601,29602,29603,29605,29606,106],{},"It checks the raw ",[60,29604,4904],{}," record passed into ",[60,29607,29162],{},[45,29609,29610,29611,1833,29613,7048,29615,106],{},"It looks for ",[60,29612,29452],{},[60,29614,5375],{},[60,29616,29617],{},"data-string-key",[45,29619,29620],{},"It falls back to module settings.",[45,29622,29623],{},"It falls back to the mapping fallback value or fallback function.",[45,29625,29626,29627,106],{},"It parses by ",[60,29628,29203],{},[45,29630,29631,29632,29635],{},"It applies ",[60,29633,29634],{},"transform(...)"," if present.",[45,29637,29638,29639,106],{},"It stores the final value on the object with ",[60,29640,29641],{},"object.setProperty(key, parsed)",[37,29643,29645],{"id":29644},"supported-parse-types","Supported parse types",[30,29647,29648],{},"The current base parser supports:",[42,29650,29651,29655,29659,29664,29668,29673,29678,29682,29686],{},[45,29652,29653],{},[60,29654,5621],{},[45,29656,29657],{},[60,29658,14955],{},[45,29660,29661],{},[60,29662,29663],{},"json",[45,29665,29666],{},[60,29667,10342],{},[45,29669,29670],{},[60,29671,29672],{},"easing",[45,29674,29675],{},[60,29676,29677],{},"color",[45,29679,29680],{},[60,29681,5467],{},[45,29683,29684],{},[60,29685,21427],{},[45,29687,29688,29689],{},"enum objects like ",[60,29690,29691],{},"{ type: 'enum', values: [...] }",[30,29693,29694,29695,29697,29698,106],{},"If you need something else, parse it in ",[60,29696,29634],{}," or override ",[60,29699,29162],{},[37,29701,29703],{"id":29702},"connection-and-storage","Connection and storage",[30,29705,29706,29708],{},[60,29707,2379],{}," manages two object collections:",[42,29710,29711,29716],{},[45,29712,29713,29715],{},[60,29714,29182],{},"\nevery connected object currently present in the DOM",[45,29717,29718,29720],{},[60,29719,28086],{},"\nobjects that are currently entered or active in the module scope",[30,29722,29723,29724,29726],{},"For scroll-oriented modules, ",[60,29725,28086],{}," is usually the hot path collection used on frame or mutate hooks.",[37,29728,29730],{"id":29729},"output-channels","Output channels",[30,29732,29733],{},"A custom module normally writes through one or more of these channels:",[42,29735,29736,29738,29741,29743,29746],{},[45,29737,777],{},[45,29739,29740],{},"inline styles",[45,29742,12038],{},[45,29744,29745],{},"helper DOM nodes",[45,29747,3814],{},[30,29749,29750],{},"The base class gives you helpers for mirrored output:",[42,29752,29753,29757,29762,29767,29772],{},[45,29754,29755],{},[60,29756,28674],{},[45,29758,29759],{},[60,29760,29761],{},"applyVarToElement(...)",[45,29763,29764],{},[60,29765,29766],{},"applyPropToElement(...)",[45,29768,29769],{},[60,29770,29771],{},"applyVarToConnects(...)",[45,29773,29774],{},[60,29775,29776],{},"applyPropToConnects(...)",[30,29778,29779,29780,28678],{},"Use these instead of hand-duplicating writes to ",[60,29781,2457],{},[37,29783,29785],{"id":29784},"custom-matching","Custom matching",[30,29787,4232,29788,29790,29791,106],{},[60,29789,28121],{}," is not enough, override ",[60,29792,29149],{},[30,29794,2071],{},[225,29796,29798],{"className":227,"code":29797,"language":229,"meta":230,"style":230},"override canConnect(object: StringObject): boolean {\n  return object.keys.includes('progress') && object.keys.includes('rotate-progress');\n}\n",[60,29799,29800,29810,29841],{"__ignoreMap":230},[234,29801,29802,29805,29807],{"class":236,"line":237},[234,29803,29804],{"class":244},"override ",[234,29806,29270],{"class":281},[234,29808,29809],{"class":244},"(object: StringObject): boolean {\n",[234,29811,29812,29814,29817,29820,29822,29825,29827,29830,29832,29834,29836,29839],{"class":236,"line":258},[234,29813,1008],{"class":240},[234,29815,29816],{"class":244}," object.keys.",[234,29818,29819],{"class":281},"includes",[234,29821,329],{"class":244},[234,29823,29824],{"class":251},"'progress'",[234,29826,903],{"class":244},[234,29828,29829],{"class":240},"&&",[234,29831,29816],{"class":244},[234,29833,29819],{"class":281},[234,29835,329],{"class":244},[234,29837,29838],{"class":251},"'rotate-progress'",[234,29840,335],{"class":244},[234,29842,29843],{"class":236,"line":265},[234,29844,1143],{"class":244},[30,29846,29847,29848,106],{},"That is the correct place for connection rules. Do not bury connect logic inside ",[60,29849,28668],{},[37,29851,29853],{"id":29852},"cleanup-contract","Cleanup contract",[30,29855,29856,29857,106],{},"If your module writes persistent styles or subscribes to object-local listeners, clean them up in ",[60,29858,29859],{},"onObjectDisconnected(...)",[30,29861,29862],{},"That usually means:",[42,29864,29865,29868,29871,29874],{},[45,29866,29867],{},"removing inline styles your module owns",[45,29869,29870],{},"removing CSS variables your module owns",[45,29872,29873],{},"disconnecting observers created by that module",[45,29875,29876,29877],{},"unsubscribing from ",[60,29878,28873],{},[30,29880,29881],{},"Do not remove styles or attributes that belong to other modules.",[410,29883,29884],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}",{"title":230,"searchDepth":258,"depth":258,"links":29886},[29887,29888,29889,29890,29891,29892,29893,29894],{"id":29287,"depth":258,"text":29288},{"id":29414,"depth":258,"text":29415},{"id":29519,"depth":258,"text":29520},{"id":29644,"depth":258,"text":29645},{"id":29702,"depth":258,"text":29703},{"id":29729,"depth":258,"text":29730},{"id":29784,"depth":258,"text":29785},{"id":29852,"depth":258,"text":29853},{"path":28001,"title":28127,"description":29896,"kind":9,"section":5357,"order":1908,"group":29267,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":29897,"attrs":29902,"events":29903,"cssVars":29904,"related":29905,"body":29906},"Accurate map of which module hooks run, in what phase, and which ones are object-specific versus global.",[29898,29899,29900,29901],"onFrame","onMutate","onScrollMeasure","onObjectConnected",[],[],[],[28000,28149],{"type":22,"value":29907,"toc":30497},[29908,29911,29917,29920,29924,29927,30003,30007,30012,30099,30108,30112,30115,30258,30262,30421,30425,30428,30444,30448,30451,30491],[25,29909,28127],{"id":29910},"lifecycle-hooks",[30,29912,29913,29914,29916],{},"StringTune exposes many hooks on ",[60,29915,2379],{},", but not all of them are equally important, and not all of them are dispatched in the same way.",[30,29918,29919],{},"This page describes the current runtime behavior, not the theoretical interface.",[37,29921,29923],{"id":29922},"registration-hooks","Registration hooks",[30,29925,29926],{},"These run once per module instance:",[2221,29928,29929,29942],{},[2224,29930,29931],{},[2227,29932,29933,29936,29939],{},[2230,29934,29935],{},"Hook",[2230,29937,29938],{},"When it runs",[2230,29940,29941],{},"Typical use",[2240,29943,29944,29960,29977,29990],{},[2227,29945,29946,29951,29957],{},[2245,29947,29948],{},[60,29949,29950],{},"onSubscribe()",[2245,29952,29953,29954,29956],{},"immediately after ",[60,29955,67],{}," registers the module",[2245,29958,29959],{},"subscribe to global event channels",[2227,29961,29962,29967,29974],{},[2245,29963,29964],{},[60,29965,29966],{},"onInit()",[2245,29968,29969,29970,29973],{},"during ",[60,29971,29972],{},"stringTune.start(...)"," after the runtime starts",[2245,29975,29976],{},"one-time setup that needs the runtime to be alive",[2227,29978,29979,29984,29987],{},[2245,29980,29981],{},[60,29982,29983],{},"onUnsubscribe()",[2245,29985,29986],{},"during runtime teardown",[2245,29988,29989],{},"remove global subscriptions",[2227,29991,29992,29997,30000],{},[2245,29993,29994],{},[60,29995,29996],{},"destroy()",[2245,29998,29999],{},"after unsubscribe during teardown",[2245,30001,30002],{},"clear module-owned state",[37,30004,30006],{"id":30005},"object-hooks","Object hooks",[30,30008,30009,30010,1114],{},"These run per connected ",[60,30011,28055],{},[2221,30013,30014,30024],{},[2224,30015,30016],{},[2227,30017,30018,30020,30022],{},[2230,30019,29935],{},[2230,30021,29938],{},[2230,30023,29941],{},[2240,30025,30026,30038,30050,30062,30074,30087],{},[2227,30027,30028,30032,30035],{},[2245,30029,30030],{},[60,30031,29162],{},[2245,30033,30034],{},"when the object is first processed or refreshed",[2245,30036,30037],{},"map attributes and seed per-object state",[2227,30039,30040,30044,30047],{},[2245,30041,30042],{},[60,30043,29167],{},[2245,30045,30046],{},"after initialization and on rebuild paths",[2245,30048,30049],{},"derive geometry, ranges, and cached values",[2227,30051,30052,30056,30059],{},[2245,30053,30054],{},[60,30055,28668],{},[2245,30057,30058],{},"on first connection to that object",[2245,30060,30061],{},"attach listeners, apply initial output",[2227,30063,30064,30068,30071],{},[2245,30065,30066],{},[60,30067,29859],{},[2245,30069,30070],{},"when the object is removed from the module",[2245,30072,30073],{},"cleanup object-owned side effects",[2227,30075,30076,30081,30084],{},[2245,30077,30078],{},[60,30079,30080],{},"enterObject(...)",[2245,30082,30083],{},"when the object becomes entered or active",[2245,30085,30086],{},"maintain hot-path collections",[2227,30088,30089,30094,30097],{},[2245,30090,30091],{},[60,30092,30093],{},"exitObject(...)",[2245,30095,30096],{},"when the object leaves active scope",[2245,30098,30086],{},[30,30100,30101,30102,30104,30105,30107],{},"The default ",[60,30103,29172],{}," implementation already calls ",[60,30106,28668],{}," only on the first connection.",[37,30109,30111],{"id":30110},"frame-and-interaction-hooks","Frame and interaction hooks",[30,30113,30114],{},"These are the hooks you will use most often:",[2221,30116,30117,30132],{},[2224,30118,30119],{},[2227,30120,30121,30123,30126,30129],{},[2230,30122,29935],{},[2230,30124,30125],{},"Runtime phase",[2230,30127,30128],{},"Receives",[2230,30130,30131],{},"Best for",[2240,30133,30134,30152,30169,30186,30204,30221,30241],{},[2227,30135,30136,30141,30144,30149],{},[2245,30137,30138],{},[60,30139,30140],{},"onFrame(data)",[2245,30142,30143],{},"every frame",[2245,30145,30146],{},[60,30147,30148],{},"StringData",[2245,30150,30151],{},"pure computation and state updates",[2227,30153,30154,30159,30162,30166],{},[2245,30155,30156],{},[60,30157,30158],{},"onScroll(data)",[2245,30160,30161],{},"when scroll changed",[2245,30163,30164],{},[60,30165,30148],{},[2245,30167,30168],{},"scroll-dependent bookkeeping",[2227,30170,30171,30176,30179,30183],{},[2245,30172,30173],{},[60,30174,30175],{},"onScrollMeasure(data)",[2245,30177,30178],{},"scheduled read phase after scroll changes",[2245,30180,30181],{},[60,30182,30148],{},[2245,30184,30185],{},"layout reads tied to scroll",[2227,30187,30188,30193,30196,30201],{},[2245,30189,30190],{},[60,30191,30192],{},"onMouseMove(event)",[2245,30194,30195],{},"every mouse move",[2245,30197,30198],{},[60,30199,30200],{},"MouseEvent",[2245,30202,30203],{},"cursor-driven target updates",[2227,30205,30206,30211,30214,30218],{},[2245,30207,30208],{},[60,30209,30210],{},"onMouseMoveMeasure(data)",[2245,30212,30213],{},"scheduled read phase after mouse move",[2245,30215,30216],{},[60,30217,30148],{},[2245,30219,30220],{},"pointer-related DOM reads",[2227,30222,30223,30228,30234,30238],{},[2245,30224,30225],{},[60,30226,30227],{},"onMutate(data)",[2245,30229,30230,30231,30233],{},"mutate phase inside a ",[60,30232,4655],{}," batch",[2245,30235,30236],{},[60,30237,30148],{},[2245,30239,30240],{},"DOM writes, CSS vars, inline styles",[2227,30242,30243,30248,30251,30255],{},[2245,30244,30245],{},[60,30246,30247],{},"onWheel(event)",[2245,30249,30250],{},"wheel input",[2245,30252,30253],{},[60,30254,11383],{},[2245,30256,30257],{},"wheel-specific behavior separate from scroll",[37,30259,30261],{"id":30260},"resize-and-system-hooks","Resize and system hooks",[2221,30263,30264,30274],{},[2224,30265,30266],{},[2227,30267,30268,30270,30272],{},[2230,30269,29935],{},[2230,30271,29938],{},[2230,30273,2238],{},[2240,30275,30276,30291,30304,30321,30334,30346,30358,30371,30382,30393,30406],{},[2227,30277,30278,30283,30286],{},[2245,30279,30280],{},[60,30281,30282],{},"onResize()",[2245,30284,30285],{},"layout rebuild path",[2245,30287,30288,30289],{},"use for per-object recalculation that is not already handled in ",[60,30290,29162],{},[2227,30292,30293,30298,30301],{},[2245,30294,30295],{},[60,30296,30297],{},"onResizeWidth()",[2245,30299,30300],{},"width changed or forced resize",[2245,30302,30303],{},"useful for responsive-only recalculation",[2227,30305,30306,30311,30318],{},[2245,30307,30308],{},[60,30309,30310],{},"onSettingsChange()",[2245,30312,30313,30314,30317],{},"after ",[60,30315,30316],{},"setupSettings(...)"," changes",[2245,30319,30320],{},"current runtime calls it with no payload",[2227,30322,30323,30328,30331],{},[2245,30324,30325],{},[60,30326,30327],{},"onDirectionChange()",[2245,30329,30330],{},"scroll direction changed",[2245,30332,30333],{},"currently dispatched",[2227,30335,30336,30341,30344],{},[2245,30337,30338],{},[60,30339,30340],{},"onScrollStart()",[2245,30342,30343],{},"scroll begins",[2245,30345,30333],{},[2227,30347,30348,30353,30356],{},[2245,30349,30350],{},[60,30351,30352],{},"onScrollStop()",[2245,30354,30355],{},"scroll stops",[2245,30357,30333],{},[2227,30359,30360,30365,30368],{},[2245,30361,30362],{},[60,30363,30364],{},"onAxisChange()",[2245,30366,30367],{},"reserved hook",[2245,30369,30370],{},"present on base class",[2227,30372,30373,30378,30380],{},[2245,30374,30375],{},[60,30376,30377],{},"onDeviceChange()",[2245,30379,30367],{},[2245,30381,30370],{},[2227,30383,30384,30389,30391],{},[2245,30385,30386],{},[60,30387,30388],{},"onScrollConfigChange()",[2245,30390,30367],{},[2245,30392,30370],{},[2227,30394,30395,30400,30403],{},[2245,30396,30397],{},[60,30398,30399],{},"onDOMMutate(added, removed)",[2245,30401,30402],{},"DOM observer sees mutations",[2245,30404,30405],{},"useful for sidecar scanning",[2227,30407,30408,30413,30416],{},[2245,30409,30410],{},[60,30411,30412],{},"onDOMRebuild()",[2245,30414,30415],{},"object manager rebuilds all modules after DOM work",[2245,30417,30418,30419],{},"current runtime dispatches this from ",[60,30420,28218],{},[37,30422,30424],{"id":30423},"important-current-runtime-caveats","Important current-runtime caveats",[30,30426,30427],{},"Two details matter when writing real custom modules:",[42,30429,30430,30435],{},[45,30431,30432,30434],{},[60,30433,30310],{}," is currently called without the internal change payload. If you need detailed width, height, or scroll-height flags, the module hook does not receive them.",[45,30436,30437,30440,30441,30443],{},[60,30438,30439],{},"onScrollDirectionChange()"," exists on the base class, but the current runtime does not dispatch it. Use ",[60,30442,30327],{}," instead.",[37,30445,30447],{"id":30446},"which-hook-should-own-which-work","Which hook should own which work",[30,30449,30450],{},"Use this rule of thumb:",[42,30452,30453,30458,30463,30469,30478,30484],{},[45,30454,30455,30457],{},[60,30456,29162],{}," for parsing and caching object state",[45,30459,30460,30462],{},[60,30461,29167],{}," for geometry math",[45,30464,30465,30468],{},[60,30466,30467],{},"onFrame(...)"," for cheap pure computations",[45,30470,30471,137,30474,30477],{},[60,30472,30473],{},"onScrollMeasure(...)",[60,30475,30476],{},"onMouseMoveMeasure(...)"," for DOM reads",[45,30479,30480,30483],{},[60,30481,30482],{},"onMutate(...)"," for DOM writes",[45,30485,30486,137,30488,30490],{},[60,30487,28668],{},[60,30489,29859],{}," for listener and observer management",[30,30492,30493,30494,30496],{},"If a module mixes reads and writes into ",[60,30495,30467],{},", it will usually work at first and then degrade as more objects are added.",{"title":230,"searchDepth":258,"depth":258,"links":30498},[30499,30500,30501,30502,30503,30504],{"id":29922,"depth":258,"text":29923},{"id":30005,"depth":258,"text":30006},{"id":30110,"depth":258,"text":30111},{"id":30260,"depth":258,"text":30261},{"id":30423,"depth":258,"text":30424},{"id":30446,"depth":258,"text":30447},{"path":28133,"title":28134,"description":30506,"kind":9,"section":5357,"order":4298,"group":29267,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":30507,"attrs":30509,"events":30510,"cssVars":30511,"related":30512,"body":30513},"How StringObject works, which base properties already exist, and how attribute mapping flows into per-object state.",[28055,2457,30508],"parseAttribute",[],[],[],[28000,9008],{"type":22,"value":30514,"toc":31219},[30515,30518,30524,30527,30531,30537,30577,30580,30584,30587,30626,30632,30641,30646,30657,30660,30663,30687,30690,30714,30717,30721,30727,30744,30747,30750,30787,30790,30815,30818,30842,30846,30849,30859,30923,30926,30930,30939,30946,31146,31149,31153,31166,31172,31186,31189,31191,31197,31199,31213,31216],[25,30516,28134],{"id":30517},"objects-and-attributes",[30,30519,30520,30521,30523],{},"For element modules, ",[60,30522,28055],{}," is the unit of work.",[30,30525,30526],{},"The runtime creates one object per discovered DOM node, stores parsed properties on it, and then reuses that object across modules.",[37,30528,30530],{"id":30529},"what-a-stringobject-gives-you","What a StringObject gives you",[30,30532,30533,30534,30536],{},"The exported ",[60,30535,28055],{}," surface includes:",[42,30538,30539,30544,30548,30553,30557,30562,30567,30572],{},[45,30540,30541],{},[60,30542,30543],{},"htmlElement",[45,30545,30546],{},[60,30547,4269],{},[45,30549,30550],{},[60,30551,30552],{},"keys",[45,30554,30555],{},[60,30556,3814],{},[45,30558,30559],{},[60,30560,30561],{},"mirrorObjects",[45,30563,30564],{},[60,30565,30566],{},"connects",[45,30568,30569],{},[60,30570,30571],{},"setProperty(...)",[45,30573,30574],{},[60,30575,30576],{},"getProperty(...)",[30,30578,30579],{},"That is the stable surface you should prefer inside custom modules.",[37,30581,30583],{"id":30582},"useful-runtime-fields-already-on-the-object","Useful runtime fields already on the object",[30,30585,30586],{},"Some values are also kept as hot-path fields for built-ins:",[42,30588,30589,30593,30598,30603,30608,30612,30616,30621],{},[45,30590,30591],{},[60,30592,5373],{},[45,30594,30595],{},[60,30596,30597],{},"progressRaw",[45,30599,30600],{},[60,30601,30602],{},"startPosition",[45,30604,30605],{},[60,30606,30607],{},"differencePosition",[45,30609,30610],{},[60,30611,8030],{},[45,30613,30614],{},[60,30615,8530],{},[45,30617,30618],{},[60,30619,30620],{},"magneticX",[45,30622,30623],{},[60,30624,30625],{},"magneticY",[30,30627,30628,30629,30631],{},"These can be useful when your module intentionally composes with a built-in module, but they are not a replacement for your own module state. For custom authoring, keep your own values under ",[60,30630,30571],{}," unless you are deliberately consuming a known built-in contract.",[37,30633,30635,30636,30638,30639],{"id":30634},"how-string-becomes-objectkeys","How ",[60,30637,2252],{}," becomes ",[60,30640,29153],{},[30,30642,14962,30643,30645],{},[60,30644,28218],{}," adds an element, it reads:",[42,30647,30648,30652],{},[45,30649,30650],{},[60,30651,2252],{},[45,30653,30654,30655],{},"or ",[60,30656,1999],{},[30,30658,30659],{},"Then it splits the value by pipe characters.",[30,30661,30662],{},"So this markup:",[225,30664,30666],{"className":338,"code":30665,"language":340,"meta":230,"style":230},"\u003Cdiv string=\"progress|rotate-progress\">\u003C/div>\n",[60,30667,30668],{"__ignoreMap":230},[234,30669,30670,30672,30674,30676,30678,30681,30683,30685],{"class":236,"line":237},[234,30671,347],{"class":244},[234,30673,351],{"class":350},[234,30675,354],{"class":281},[234,30677,357],{"class":244},[234,30679,30680],{"class":251},"\"progress|rotate-progress\"",[234,30682,371],{"class":244},[234,30684,351],{"class":350},[234,30686,376],{"class":244},[30,30688,30689],{},"becomes:",[225,30691,30693],{"className":227,"code":30692,"language":229,"meta":230,"style":230},"object.keys = ['progress', 'rotate-progress'];\n",[60,30694,30695],{"__ignoreMap":230},[234,30696,30697,30700,30702,30705,30707,30709,30711],{"class":236,"line":237},[234,30698,30699],{"class":244},"object.keys ",[234,30701,357],{"class":240},[234,30703,30704],{"class":244}," [",[234,30706,29824],{"class":251},[234,30708,1833],{"class":244},[234,30710,29838],{"class":251},[234,30712,30713],{"class":244},"];\n",[30,30715,30716],{},"That is why one element can connect to several modules at once.",[37,30718,30720],{"id":30719},"how-attribute-mapping-resolves-values","How attribute mapping resolves values",[30,30722,30723,30724,30726],{},"Inside ",[60,30725,29162],{},", the base class resolves each mapped key from:",[42,30728,30729,30734,30739],{},[45,30730,30731],{},[60,30732,30733],{},"attributes[key]",[45,30735,30736],{},[60,30737,30738],{},"attributes['string-' + key]",[45,30740,30741],{},[60,30742,30743],{},"attributes['data-string-' + key]",[30,30745,30746],{},"Then it falls back to module settings and the mapping fallback.",[30,30748,30749],{},"That means this mapping:",[225,30751,30753],{"className":227,"code":30752,"language":229,"meta":230,"style":230},"{ key: 'radius', type: 'number', fallback: 150 }\n",[60,30754,30755],{"__ignoreMap":230},[234,30756,30757,30760,30762,30764,30767,30769,30771,30773,30775,30777,30780,30782,30784],{"class":236,"line":237},[234,30758,30759],{"class":244},"{ ",[234,30761,29452],{"class":281},[234,30763,1443],{"class":244},[234,30765,30766],{"class":251},"'radius'",[234,30768,1833],{"class":244},[234,30770,29203],{"class":281},[234,30772,1443],{"class":244},[234,30774,29372],{"class":251},[234,30776,1833],{"class":244},[234,30778,30779],{"class":281},"fallback",[234,30781,1443],{"class":244},[234,30783,14014],{"class":271},[234,30785,30786],{"class":244}," }\n",[30,30788,30789],{},"can be configured through:",[225,30791,30793],{"className":338,"code":30792,"language":340,"meta":230,"style":230},"\u003Cdiv string-radius=\"220\">\u003C/div>\n",[60,30794,30795],{"__ignoreMap":230},[234,30796,30797,30799,30801,30804,30806,30809,30811,30813],{"class":236,"line":237},[234,30798,347],{"class":244},[234,30800,351],{"class":350},[234,30802,30803],{"class":281}," string-radius",[234,30805,357],{"class":244},[234,30807,30808],{"class":251},"\"220\"",[234,30810,371],{"class":244},[234,30812,351],{"class":350},[234,30814,376],{"class":244},[30,30816,30817],{},"or:",[225,30819,30821],{"className":338,"code":30820,"language":340,"meta":230,"style":230},"\u003Cdiv data-string-radius=\"220\">\u003C/div>\n",[60,30822,30823],{"__ignoreMap":230},[234,30824,30825,30827,30829,30832,30834,30836,30838,30840],{"class":236,"line":237},[234,30826,347],{"class":244},[234,30828,351],{"class":350},[234,30830,30831],{"class":281}," data-string-radius",[234,30833,357],{"class":244},[234,30835,30808],{"class":251},[234,30837,371],{"class":244},[234,30839,351],{"class":350},[234,30841,376],{"class":244},[37,30843,30845],{"id":30844},"fallback-functions","Fallback functions",[30,30847,30848],{},"Fallbacks do not have to be static.",[30,30850,30851,30852,1833,30854,7048,30856,30858],{},"The base class uses function fallbacks for geometry fields like ",[60,30853,326],{},[60,30855,11775],{},[60,30857,29483],{},", and your custom module can do the same:",[225,30860,30862],{"className":227,"code":30861,"language":229,"meta":230,"style":230},"{\n  key: 'my-default',\n  type: 'number',\n  fallback: (element, object, rect) => rect.width / 2,\n}\n",[60,30863,30864,30868,30879,30889,30919],{"__ignoreMap":230},[234,30865,30866],{"class":236,"line":237},[234,30867,13681],{"class":244},[234,30869,30870,30872,30874,30877],{"class":236,"line":258},[234,30871,29540],{"class":281},[234,30873,1443],{"class":244},[234,30875,30876],{"class":251},"'my-default'",[234,30878,2506],{"class":244},[234,30880,30881,30883,30885,30887],{"class":236,"line":265},[234,30882,29551],{"class":281},[234,30884,1443],{"class":244},[234,30886,29372],{"class":251},[234,30888,2506],{"class":244},[234,30890,30891,30893,30895,30897,30899,30901,30903,30905,30907,30909,30912,30915,30917],{"class":236,"line":288},[234,30892,29562],{"class":281},[234,30894,29575],{"class":244},[234,30896,2706],{"class":899},[234,30898,1833],{"class":244},[234,30900,28405],{"class":899},[234,30902,1833],{"class":244},[234,30904,4764],{"class":899},[234,30906,903],{"class":244},[234,30908,906],{"class":240},[234,30910,30911],{"class":244}," rect.width ",[234,30913,30914],{"class":240},"/",[234,30916,14275],{"class":271},[234,30918,2506],{"class":244},[234,30920,30921],{"class":236,"line":293},[234,30922,1143],{"class":244},[30,30924,30925],{},"Use this when the default depends on the element or the current layout.",[37,30927,30929],{"id":30928},"object-local-events","Object-local events",[30,30931,30932,30933,30935,30936,30938],{},"Each ",[60,30934,28055],{}," has its own ",[60,30937,3814],{}," emitter.",[30,30940,30941,30942,137,30944,1114],{},"Built-ins use it for local hooks such as ",[60,30943,13802],{},[60,30945,13805],{},[225,30947,30949],{"className":227,"code":30948,"language":229,"meta":230,"style":230},"override onObjectConnected(object: StringObject): void {\n  const onEnter = () => object.htmlElement.classList.add('-active');\n  const onLeave = () => object.htmlElement.classList.remove('-active');\n\n  object.setProperty('on-enter-handler', onEnter);\n  object.setProperty('on-leave-handler', onLeave);\n\n  object.events.on('enter', onEnter);\n  object.events.on('leave', onLeave);\n}\n\noverride onObjectDisconnected(object: StringObject): void {\n  object.events.off('enter', object.getProperty('on-enter-handler'));\n  object.events.off('leave', object.getProperty('on-leave-handler'));\n}\n",[60,30950,30951,30964,30991,31015,31019,31035,31049,31053,31067,31080,31084,31088,31101,31122,31142],{"__ignoreMap":230},[234,30952,30953,30955,30957,30960,30962],{"class":236,"line":237},[234,30954,29804],{"class":244},[234,30956,29901],{"class":281},[234,30958,30959],{"class":244},"(object: StringObject): ",[234,30961,23519],{"class":240},[234,30963,909],{"class":244},[234,30965,30966,30968,30971,30973,30976,30978,30981,30984,30986,30989],{"class":236,"line":258},[234,30967,914],{"class":240},[234,30969,30970],{"class":281}," onEnter",[234,30972,275],{"class":240},[234,30974,30975],{"class":244}," () ",[234,30977,906],{"class":240},[234,30979,30980],{"class":244}," object.htmlElement.classList.",[234,30982,30983],{"class":281},"add",[234,30985,329],{"class":244},[234,30987,30988],{"class":251},"'-active'",[234,30990,335],{"class":244},[234,30992,30993,30995,30998,31000,31002,31004,31006,31009,31011,31013],{"class":236,"line":265},[234,30994,914],{"class":240},[234,30996,30997],{"class":281}," onLeave",[234,30999,275],{"class":240},[234,31001,30975],{"class":244},[234,31003,906],{"class":240},[234,31005,30980],{"class":244},[234,31007,31008],{"class":281},"remove",[234,31010,329],{"class":244},[234,31012,30988],{"class":251},[234,31014,335],{"class":244},[234,31016,31017],{"class":236,"line":288},[234,31018,262],{"emptyLinePlaceholder":261},[234,31020,31021,31024,31027,31029,31032],{"class":236,"line":293},[234,31022,31023],{"class":244},"  object.",[234,31025,31026],{"class":281},"setProperty",[234,31028,329],{"class":244},[234,31030,31031],{"class":251},"'on-enter-handler'",[234,31033,31034],{"class":244},", onEnter);\n",[234,31036,31037,31039,31041,31043,31046],{"class":236,"line":305},[234,31038,31023],{"class":244},[234,31040,31026],{"class":281},[234,31042,329],{"class":244},[234,31044,31045],{"class":251},"'on-leave-handler'",[234,31047,31048],{"class":244},", onLeave);\n",[234,31050,31051],{"class":236,"line":321},[234,31052,262],{"emptyLinePlaceholder":261},[234,31054,31055,31058,31060,31062,31065],{"class":236,"line":946},[234,31056,31057],{"class":244},"  object.events.",[234,31059,1536],{"class":281},[234,31061,329],{"class":244},[234,31063,31064],{"class":251},"'enter'",[234,31066,31034],{"class":244},[234,31068,31069,31071,31073,31075,31078],{"class":236,"line":955},[234,31070,31057],{"class":244},[234,31072,1536],{"class":281},[234,31074,329],{"class":244},[234,31076,31077],{"class":251},"'leave'",[234,31079,31048],{"class":244},[234,31081,31082],{"class":236,"line":11},[234,31083,1143],{"class":244},[234,31085,31086],{"class":236,"line":980},[234,31087,262],{"emptyLinePlaceholder":261},[234,31089,31090,31092,31095,31097,31099],{"class":236,"line":994},[234,31091,29804],{"class":244},[234,31093,31094],{"class":281},"onObjectDisconnected",[234,31096,30959],{"class":244},[234,31098,23519],{"class":240},[234,31100,909],{"class":244},[234,31102,31103,31105,31107,31109,31111,31114,31116,31118,31120],{"class":236,"line":1000},[234,31104,31057],{"class":244},[234,31106,1606],{"class":281},[234,31108,329],{"class":244},[234,31110,31064],{"class":251},[234,31112,31113],{"class":244},", object.",[234,31115,28434],{"class":281},[234,31117,329],{"class":244},[234,31119,31031],{"class":251},[234,31121,1875],{"class":244},[234,31123,31124,31126,31128,31130,31132,31134,31136,31138,31140],{"class":236,"line":1005},[234,31125,31057],{"class":244},[234,31127,1606],{"class":281},[234,31129,329],{"class":244},[234,31131,31077],{"class":251},[234,31133,31113],{"class":244},[234,31135,28434],{"class":281},[234,31137,329],{"class":244},[234,31139,31045],{"class":251},[234,31141,1875],{"class":244},[234,31143,31144],{"class":236,"line":1013},[234,31145,1143],{"class":244},[30,31147,31148],{},"This is the correct pattern for object-local subscriptions.",[37,31150,31152],{"id":31151},"mirrored-elements","Mirrored elements",[30,31154,5670,31155,31158,31159,31162,31163,106],{},[60,31156,31157],{},"string-copy-from=\"\u003Cid>\"",", the source object gets one or more ",[60,31160,31161],{},"StringMirrorObject"," instances in ",[60,31164,31165],{},"object.mirrorObjects",[30,31167,31168,31169,31171],{},"For most modules you do not need to deal with mirrors manually because ",[60,31170,2379],{}," already gives you:",[42,31173,31174,31178,31182],{},[45,31175,31176],{},[60,31177,28674],{},[45,31179,31180],{},[60,31181,29771],{},[45,31183,31184],{},[60,31185,29776],{},[30,31187,31188],{},"Use those helpers so your module respects mirrors without duplicating logic.",[37,31190,29233],{"id":29232},[30,31192,31193,31194,31196],{},"Treat ",[60,31195,28055],{}," as the shared state boundary between modules.",[30,31198,29862],{},[42,31200,31201,31207,31210],{},[45,31202,31203,31204],{},"parse into ",[60,31205,31206],{},"object.setProperty(...)",[45,31208,31209],{},"compute from those properties",[45,31211,31212],{},"write output through the module helpers",[30,31214,31215],{},"Do not mutate unrelated built-in hot fields unless your module is intentionally part of that exact contract.",[410,31217,31218],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":230,"searchDepth":258,"depth":258,"links":31220},[31221,31222,31223,31225,31226,31227,31228,31229],{"id":30529,"depth":258,"text":30530},{"id":30582,"depth":258,"text":30583},{"id":30634,"depth":258,"text":31224},"How string becomes object.keys",{"id":30719,"depth":258,"text":30720},{"id":30844,"depth":258,"text":30845},{"id":30928,"depth":258,"text":30929},{"id":31151,"depth":258,"text":31152},{"id":29232,"depth":258,"text":29233},{"path":9008,"title":28143,"description":31231,"kind":9,"section":5357,"order":4605,"group":29267,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":31232,"attrs":31233,"events":31234,"cssVars":31235,"related":31236,"body":31241},"What the constructor context contains, which tools are worth using, and how to publish or consume module events safely.",[28060,2389,4655,3814],[],[],[],[31237,31238,31239,31240],"/docs/custom-modules/context-tools-events/context","/docs/custom-modules/context-tools-events/tools","/docs/custom-modules/context-tools-events/states","/docs/custom-modules/context-tools-events/events",{"type":22,"value":31242,"toc":31385},[31243,31246,31251,31256,31280,31283,31320,31323,31327,31330,31349,31352,31355,31379,31382],[25,31244,28143],{"id":31245},"context-tools-and-events",[30,31247,31248,31249,106],{},"This part of the custom-module docs describes the injected runtime surface you work with after extending ",[60,31250,2379],{},[30,31252,31253,31254,106],{},"Every custom module constructor receives a ",[60,31255,28060],{},[225,31257,31259],{"className":227,"code":31258,"language":229,"meta":230,"style":230},"constructor(context: StringContext) {\n  super(context);\n}\n",[60,31260,31261,31269,31276],{"__ignoreMap":230},[234,31262,31263,31266],{"class":236,"line":237},[234,31264,31265],{"class":281},"constructor",[234,31267,31268],{"class":244},"(context: StringContext) {\n",[234,31270,31271,31274],{"class":236,"line":258},[234,31272,31273],{"class":271},"  super",[234,31275,28315],{"class":244},[234,31277,31278],{"class":236,"line":265},[234,31279,1143],{"class":244},[30,31281,31282],{},"The base class stores that context on protected fields like:",[42,31284,31285,31290,31295,31300,31305,31310,31315],{},[45,31286,31287],{},[60,31288,31289],{},"this.tools",[45,31291,31292],{},[60,31293,31294],{},"this.data",[45,31296,31297],{},[60,31298,31299],{},"this.settings",[45,31301,31302],{},[60,31303,31304],{},"this.events",[45,31306,31307],{},[60,31308,31309],{},"this.centers",[45,31311,31312],{},[60,31313,31314],{},"this.hover",[45,31316,31317],{},[60,31318,31319],{},"this.objectManager",[30,31321,31322],{},"That surface is too important to keep on one long page, so it is split into focused deep dives.",[37,31324,31326],{"id":31325},"what-belongs-here","What belongs here",[30,31328,31329],{},"This cluster answers four different authoring questions:",[99,31331,31332,31338,31341,31346],{},[45,31333,31334,31335,31337],{},"What exactly is available in ",[60,31336,28060],{},"?",[45,31339,31340],{},"Which tools should a custom module reuse instead of reinventing?",[45,31342,31343,31344,31337],{},"How should live runtime state be read from ",[60,31345,31294],{},[45,31347,31348],{},"How should custom modules subscribe to and emit events?",[37,31350,31351],{"id":29232},"Practical Rule",[30,31353,31354],{},"Good custom modules usually stay inside this surface:",[42,31356,31357,31362,31367,31373],{},[45,31358,31359,31360],{},"read shared runtime state from ",[60,31361,31294],{},[45,31363,31364,31365],{},"read author config through attribute mapping and ",[60,31366,31299],{},[45,31368,31369,31370,31372],{},"reuse ",[60,31371,31289],{}," for parsing, interpolation, and writes",[45,31374,31375,31376,31378],{},"use ",[60,31377,31304],{}," for safe runtime communication",[30,31380,31381],{},"If a module starts depending heavily on private manager internals instead of these injected surfaces, that is usually a design smell.",[410,31383,31384],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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);}",{"title":230,"searchDepth":258,"depth":258,"links":31386},[31387,31388],{"id":31325,"depth":258,"text":31326},{"id":29232,"depth":258,"text":31351},{"path":31237,"title":31390,"description":31391,"kind":9,"section":5357,"order":31392,"group":29267,"parentPath":9008,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":31393,"attrs":31394,"events":31395,"cssVars":31396,"related":31397,"body":31398},"Context","Detailed reference for StringContext and the injected surfaces available inside a custom module.",71,[28060,31289,31294,31299],[],[],[],[9008,31238,31239],{"type":22,"value":31399,"toc":31653},[31400,31402,31417,31423,31426,31460,31464,31467,31497,31500,31505,31510,31513,31525,31530,31533,31547,31552,31557,31560,31578,31581,31588,31591,31603,31615,31619,31625,31647,31650],[25,31401,31390],{"id":28300},[30,31403,31253,31404,31406,31407,31409,31410,31413,31414,31416],{},[60,31405,28060],{},". In practice, ",[60,31408,2379],{}," copies that context onto protected fields, so custom modules usually work through ",[60,31411,31412],{},"this.*"," instead of keeping the raw ",[60,31415,28300],{}," reference around.",[37,31418,531,31420,31422],{"id":31419},"what-stringcontext-contains",[60,31421,28060],{}," Contains",[30,31424,31425],{},"The current runtime provides:",[42,31427,31428,31433,31437,31441,31445,31450,31455],{},[45,31429,31430],{},[60,31431,31432],{},"tools",[45,31434,31435],{},[60,31436,23586],{},[45,31438,31439],{},[60,31440,2452],{},[45,31442,31443],{},[60,31444,3814],{},[45,31446,31447],{},[60,31448,31449],{},"centers",[45,31451,31452],{},[60,31453,31454],{},"hover",[45,31456,31457],{},[60,31458,31459],{},"objectManager",[37,31461,31463],{"id":31462},"how-you-usually-access-it","How You Usually Access It",[30,31465,31466],{},"Inside a custom module, use:",[42,31468,31469,31473,31477,31481,31485,31489,31493],{},[45,31470,31471],{},[60,31472,31289],{},[45,31474,31475],{},[60,31476,31294],{},[45,31478,31479],{},[60,31480,31299],{},[45,31482,31483],{},[60,31484,31304],{},[45,31486,31487],{},[60,31488,31309],{},[45,31490,31491],{},[60,31492,31314],{},[45,31494,31495],{},[60,31496,31319],{},[30,31498,31499],{},"That is the normal authoring path. Reaching back to the original constructor argument usually adds noise but no value.",[37,31501,31503],{"id":31502},"thissettings",[60,31504,31299],{},[30,31506,31507,31509],{},[60,31508,31299],{}," is the merged module-level settings object.",[30,31511,31512],{},"Its inputs are:",[42,31514,31515,31519],{},[45,31516,28743,31517],{},[60,31518,28746],{},[45,31520,31521,31522],{},"per-module overrides from ",[60,31523,31524],{},"stringTune.use(MyModule, settings)",[30,31526,163,31527,31529],{},[60,31528,31299],{}," for module-wide defaults, not for per-element state.",[30,31531,31532],{},"Good uses:",[42,31534,31535,31538,31541,31544],{},[45,31536,31537],{},"default strength",[45,31539,31540],{},"default radius",[45,31542,31543],{},"fallback CSS variable key",[45,31545,31546],{},"module feature toggles",[37,31548,31550],{"id":31549},"thisobjectmanager",[60,31551,31319],{},[30,31553,31554,31556],{},[60,31555,31319],{}," is the most advanced surface in the context. Most custom modules should touch it rarely.",[30,31558,31559],{},"The most practical public-ish use is forcing layout refresh after DOM changes:",[225,31561,31563],{"className":227,"code":31562,"language":229,"meta":230,"style":230},"this.objectManager.refreshLayoutForRoot(object.htmlElement);\n",[60,31564,31565],{"__ignoreMap":230},[234,31566,31567,31569,31572,31575],{"class":236,"line":237},[234,31568,28354],{"class":271},[234,31570,31571],{"class":244},".objectManager.",[234,31573,31574],{"class":281},"refreshLayoutForRoot",[234,31576,31577],{"class":244},"(object.htmlElement);\n",[30,31579,31580],{},"Use this sparingly. If a module needs it constantly, the DOM design is usually too heavy.",[37,31582,31584,137,31586],{"id":31583},"thiscenters-and-thishover",[60,31585,31309],{},[60,31587,31314],{},[30,31589,31590],{},"These are helper surfaces for more advanced interaction work.",[42,31592,31593,31598],{},[45,31594,31595,31597],{},[60,31596,31449],{}," helps with cached center lookups and invalidation",[45,31599,31600,31602],{},[60,31601,31454],{}," exposes hover tracking helpers",[30,31604,31605,31606,1833,31608,1833,31610,7048,31612,31614],{},"They are useful when a module genuinely needs those runtime caches. For many modules, ",[60,31607,23586],{},[60,31609,2452],{},[60,31611,31432],{},[60,31613,3814],{}," are enough.",[37,31616,31618],{"id":31617},"mental-model","Mental Model",[30,31620,31621,31622,31624],{},"Think of ",[60,31623,28060],{}," as the dependency-injection layer for custom modules:",[42,31626,31627,31632,31637,31642],{},[45,31628,31629,31631],{},[60,31630,23586],{}," gives you live runtime facts",[45,31633,31634,31636],{},[60,31635,31432],{}," gives you shared parsers and helpers",[45,31638,31639,31641],{},[60,31640,3814],{}," gives you communication",[45,31643,31644,31646],{},[60,31645,2452],{}," gives you module defaults",[30,31648,31649],{},"Everything else is support structure around those main surfaces.",[410,31651,31652],{},"html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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);}",{"title":230,"searchDepth":258,"depth":258,"links":31654},[31655,31657,31658,31659,31660,31662],{"id":31419,"depth":258,"text":31656},"What StringContext Contains",{"id":31462,"depth":258,"text":31463},{"id":31502,"depth":258,"text":31299},{"id":31549,"depth":258,"text":31319},{"id":31583,"depth":258,"text":31661},"this.centers and this.hover",{"id":31617,"depth":258,"text":31618},{"path":31238,"title":31664,"description":31665,"kind":9,"section":5357,"order":31666,"group":29267,"parentPath":9008,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":31667,"attrs":31670,"events":31671,"cssVars":31672,"related":31673,"body":31674},"Tools","Full reference for the StringToolsContainer surface available to custom modules.",72,[31668,4655,2389,31669],"StringToolsContainer","unitParser",[],[],[],[9008,31237,28149],{"type":22,"value":31675,"toc":32267},[31676,31678,31683,31687,31693,31701,31704,31714,31720,31723,31725,31733,31737,31743,31748,31751,31757,31760,31763,31771,31777,31780,31782,31790,31796,31799,31830,31834,31839,31842,31845,31873,31876,31881,31886,31889,31895,31901,31904,31910,31913,31919,31923,31927,31934,31937,31974,31980,31983,31986,31992,31995,31998,32004,32010,32016,32019,32023,32029,32035,32038,32049,32055,32058,32064,32069,32072,32075,32079,32084,32089,32092,32134,32140,32208,32214,32222,32225,32242,32244,32247,32264],[25,31677,31664],{"id":31432},[30,31679,31680,31682],{},[60,31681,31289],{}," is one of the biggest reasons to build custom modules on top of StringTune instead of bypassing the runtime. It keeps parsing, interpolation, measurement, and writes aligned with the rest of the system.",[37,31684,31686],{"id":31685},"attribute-and-record-tools","Attribute And Record Tools",[174,31688,31690],{"id":31689},"domattribute",[60,31691,31692],{},"domAttribute",[30,31694,31695,31696,137,31698,31700],{},"Reads ",[60,31697,2042],{},[60,31699,2050],{}," attributes from a DOM element.",[30,31702,31703],{},"Use it when:",[42,31705,31706,31711],{},[45,31707,31708,31709],{},"you need an attribute outside normal ",[60,31710,28656],{},[45,31712,31713],{},"a global module is scanning arbitrary DOM",[174,31715,31717],{"id":31716},"recordattribute",[60,31718,31719],{},"recordAttribute",[30,31721,31722],{},"Reads values from a plain record or dataset-like object.",[30,31724,31703],{},[42,31726,31727,31730],{},[45,31728,31729],{},"your module already has a plain attribute object",[45,31731,31732],{},"you are reusing DOM-like config records outside the DOM",[37,31734,31736],{"id":31735},"layout-and-measurement-tools","Layout And Measurement Tools",[174,31738,31740],{"id":31739},"boundingclientrect",[60,31741,31742],{},"boundingClientRect",[30,31744,31745,31746,106],{},"Thin wrapper around ",[60,31747,4638],{},[30,31749,31750],{},"Use it when you want your custom module to stay on the same measurement primitive as the runtime.",[174,31752,31754],{"id":31753},"transformnullify",[60,31755,31756],{},"transformNullify",[30,31758,31759],{},"Measures geometry while compensating for CSS transform matrices.",[30,31761,31762],{},"Useful when:",[42,31764,31765,31768],{},[45,31766,31767],{},"your module works inside scaled or transformed surfaces",[45,31769,31770],{},"raw DOM rects are misleading",[174,31772,31774],{"id":31773},"relativeposition",[60,31775,31776],{},"relativePosition",[30,31778,31779],{},"Returns element position relative to a container instead of the page.",[30,31781,31762],{},[42,31783,31784,31787],{},[45,31785,31786],{},"your module works inside local containers",[45,31788,31789],{},"absolute page coordinates are not the right model",[174,31791,31793],{"id":31792},"transformscaleparser",[60,31794,31795],{},"transformScaleParser",[30,31797,31798],{},"Extracts scale from transform strings like:",[42,31800,31801,31806,31811,31816,31821,31826],{},[45,31802,31803],{},[60,31804,31805],{},"matrix(...)",[45,31807,31808],{},[60,31809,31810],{},"matrix3d(...)",[45,31812,31813],{},[60,31814,31815],{},"scale(...)",[45,31817,31818],{},[60,31819,31820],{},"scaleX(...)",[45,31822,31823],{},[60,31824,31825],{},"scale3d(...)",[45,31827,31828],{},[60,31829,1774],{},[37,31831,31833],{"id":31832},"value-parsing-tools","Value Parsing Tools",[174,31835,31837],{"id":31836},"unitparser",[60,31838,31669],{},[30,31840,31841],{},"Converts author-facing unit strings into numeric values.",[30,31843,31844],{},"Current supported forms include:",[42,31846,31847,31851,31855,31859,31863,31868],{},[45,31848,31849],{},[60,31850,1789],{},[45,31852,31853],{},[60,31854,3403],{},[45,31856,31857],{},[60,31858,1711],{},[45,31860,31861],{},[60,31862,2207],{},[45,31864,31865],{},[60,31866,31867],{},"selfHeight",[45,31869,31870,31871],{},"additive chains split by ",[60,31872,1128],{},[30,31874,31875],{},"Use it when your custom module accepts human-friendly spacing or offset values.",[174,31877,31879],{"id":31878},"originparser",[60,31880,9109],{},[30,31882,31883,31884,106],{},"Parses origin-like strings and can normalize them into ",[60,31885,12102],{},[30,31887,31888],{},"Useful for transform-origin style semantics and anchor-like modules.",[174,31890,31892],{"id":31891},"colorparser",[60,31893,31894],{},"colorParser",[30,31896,31897,31898,106],{},"Parses CSS colors into numeric ",[60,31899,31900],{},"{ r, g, b, a }",[30,31902,31903],{},"Useful when colors must be treated as data, not as opaque strings.",[174,31905,31907],{"id":31906},"easingfunction",[60,31908,31909],{},"easingFunction",[30,31911,31912],{},"Turns easing strings into callable easing functions.",[30,31914,31915,31916,106],{},"Supports common keywords plus ",[60,31917,31918],{},"cubic-bezier(...)",[37,31920,31922],{"id":31921},"interpolation-and-motion-tools","Interpolation And Motion Tools",[174,31924,31925],{"id":8030},[60,31926,8030],{},[30,31928,31929,31930,31933],{},"Important caveat: current ",[60,31931,31932],{},"lerp.process({ from, to, progress })"," returns a delta step, not the final interpolated value.",[30,31935,31936],{},"So the usual pattern is:",[225,31938,31940],{"className":227,"code":31939,"language":229,"meta":230,"style":230},"const step = this.tools.lerp.process({ from, to, progress });\ncurrent += step;\n",[60,31941,31942,31963],{"__ignoreMap":230},[234,31943,31944,31946,31949,31951,31954,31957,31960],{"class":236,"line":237},[234,31945,268],{"class":240},[234,31947,31948],{"class":271}," step",[234,31950,275],{"class":240},[234,31952,31953],{"class":271}," this",[234,31955,31956],{"class":244},".tools.lerp.",[234,31958,31959],{"class":281},"process",[234,31961,31962],{"class":244},"({ from, to, progress });\n",[234,31964,31965,31968,31971],{"class":236,"line":258},[234,31966,31967],{"class":244},"current ",[234,31969,31970],{"class":240},"+=",[234,31972,31973],{"class":244}," step;\n",[174,31975,31977],{"id":31976},"adaptivelerp",[60,31978,31979],{},"adaptiveLerp",[30,31981,31982],{},"Maps an input range into a lerp factor range.",[30,31984,31985],{},"Useful when smoothing should react differently at low and high velocity.",[174,31987,31989],{"id":31988},"magneticpull",[60,31990,31991],{},"magneticPull",[30,31993,31994],{},"Returns a scalar attraction factor from distance, radius, and strength.",[30,31996,31997],{},"Useful for cursor-reactive interaction modules.",[174,31999,32001],{"id":32000},"lerpvector",[60,32002,32003],{},"lerpVector",[30,32005,32006,32007,32009],{},"Like ",[60,32008,8030],{},", but for vector components. It also returns deltas, not final values.",[174,32011,32013],{"id":32012},"lerpcolor",[60,32014,32015],{},"lerpColor",[30,32017,32018],{},"Interpolates numeric color channels between two parsed colors.",[37,32020,32022],{"id":32021},"text-and-form-tools","Text And Form Tools",[174,32024,32026],{"id":32025},"optionsparser",[60,32027,32028],{},"optionsParser",[30,32030,32031,32032,32034],{},"This is the compact parser used by ",[60,32033,5290],{},"-style option strings.",[30,32036,32037],{},"Useful if your custom module wants a terse grammar like:",[225,32039,32043],{"className":32040,"code":32041,"language":32042,"meta":230,"style":230},"language-txt shiki shiki-themes github-light github-dark","line[start]|char-line[center]|fit\n","txt",[60,32044,32045],{"__ignoreMap":230},[234,32046,32047],{"class":236,"line":237},[234,32048,32041],{},[174,32050,32052],{"id":32051},"ruleparser",[60,32053,32054],{},"ruleParser",[30,32056,32057],{},"Parses declarative validation rules into structured rule objects.",[30,32059,32060,32061,32063],{},"Useful when your module wants ",[60,32062,5312],{},"-style rule strings.",[174,32065,32067],{"id":32066},"validation",[60,32068,32066],{},[30,32070,32071],{},"Consumes rules and values and returns validation status plus errors.",[30,32073,32074],{},"Useful for custom field logic without rebuilding the form system.",[37,32076,32078],{"id":32077},"write-batching","Write Batching",[174,32080,32082],{"id":32081},"styletxn",[60,32083,4655],{},[30,32085,32086,32088],{},[60,32087,4655],{}," is part of the tool surface so custom modules can batch style writes like the built-ins do.",[30,32090,32091],{},"It provides:",[42,32093,32094,32099,32104,32109,32114,32119,32124,32129],{},[45,32095,32096],{},[60,32097,32098],{},"begin()",[45,32100,32101],{},[60,32102,32103],{},"setVar(...)",[45,32105,32106],{},[60,32107,32108],{},"setVars(...)",[45,32110,32111],{},[60,32112,32113],{},"setProp(...)",[45,32115,32116],{},[60,32117,32118],{},"setProps(...)",[45,32120,32121],{},[60,32122,32123],{},"commit()",[45,32125,32126],{},[60,32127,32128],{},"cancel()",[45,32130,32131],{},[60,32132,32133],{},"run(fn)",[30,32135,163,32136,32139],{},[60,32137,32138],{},"run(...)"," for the easiest safe path:",[225,32141,32143],{"className":227,"code":32142,"language":229,"meta":230,"style":230},"this.tools.styleTxn.run(() => {\n  this.tools.styleTxn.setVar(object.htmlElement, '--x', 10);\n  this.tools.styleTxn.setProp(object.htmlElement, 'transform', 'translateX(10px)');\n});\n",[60,32144,32145,32161,32183,32204],{"__ignoreMap":230},[234,32146,32147,32149,32152,32155,32157,32159],{"class":236,"line":237},[234,32148,28354],{"class":271},[234,32150,32151],{"class":244},".tools.styleTxn.",[234,32153,32154],{"class":281},"run",[234,32156,1505],{"class":244},[234,32158,906],{"class":240},[234,32160,909],{"class":244},[234,32162,32163,32166,32168,32171,32174,32177,32179,32181],{"class":236,"line":258},[234,32164,32165],{"class":271},"  this",[234,32167,32151],{"class":244},[234,32169,32170],{"class":281},"setVar",[234,32172,32173],{"class":244},"(object.htmlElement, ",[234,32175,32176],{"class":251},"'--x'",[234,32178,1833],{"class":244},[234,32180,14727],{"class":271},[234,32182,335],{"class":244},[234,32184,32185,32187,32189,32192,32194,32197,32199,32202],{"class":236,"line":265},[234,32186,32165],{"class":271},[234,32188,32151],{"class":244},[234,32190,32191],{"class":281},"setProp",[234,32193,32173],{"class":244},[234,32195,32196],{"class":251},"'transform'",[234,32198,1833],{"class":244},[234,32200,32201],{"class":251},"'translateX(10px)'",[234,32203,335],{"class":244},[234,32205,32206],{"class":236,"line":288},[234,32207,1040],{"class":244},[37,32209,32211,32212],{"id":32210},"related-primitive-framedom","Related Primitive: ",[60,32213,2389],{},[30,32215,32216,32218,32219,32221],{},[60,32217,2389],{}," is not stored on ",[60,32220,31289],{},", but it belongs to the same authoring story.",[30,32223,32224],{},"Use it when you need extra scheduling outside the standard lifecycle hooks:",[42,32226,32227,32232,32237],{},[45,32228,32229],{},[60,32230,32231],{},"measure(fn)",[45,32233,32234],{},[60,32235,32236],{},"mutate(fn)",[45,32238,32239],{},[60,32240,32241],{},"flush()",[37,32243,31351],{"id":29232},[30,32245,32246],{},"Prefer injected tools over handwritten one-off helpers. That keeps your custom module aligned with:",[42,32248,32249,32252,32255,32258,32261],{},[45,32250,32251],{},"runtime parsing rules",[45,32253,32254],{},"easing semantics",[45,32256,32257],{},"unit conversion",[45,32259,32260],{},"write batching",[45,32262,32263],{},"scheduling expectations",[410,32265,32266],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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 .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":230,"searchDepth":258,"depth":258,"links":32268},[32269,32273,32279,32285,32292,32297,32300,32302],{"id":31685,"depth":258,"text":31686,"children":32270},[32271,32272],{"id":31689,"depth":265,"text":31692},{"id":31716,"depth":265,"text":31719},{"id":31735,"depth":258,"text":31736,"children":32274},[32275,32276,32277,32278],{"id":31739,"depth":265,"text":31742},{"id":31753,"depth":265,"text":31756},{"id":31773,"depth":265,"text":31776},{"id":31792,"depth":265,"text":31795},{"id":31832,"depth":258,"text":31833,"children":32280},[32281,32282,32283,32284],{"id":31836,"depth":265,"text":31669},{"id":31878,"depth":265,"text":9109},{"id":31891,"depth":265,"text":31894},{"id":31906,"depth":265,"text":31909},{"id":31921,"depth":258,"text":31922,"children":32286},[32287,32288,32289,32290,32291],{"id":8030,"depth":265,"text":8030},{"id":31976,"depth":265,"text":31979},{"id":31988,"depth":265,"text":31991},{"id":32000,"depth":265,"text":32003},{"id":32012,"depth":265,"text":32015},{"id":32021,"depth":258,"text":32022,"children":32293},[32294,32295,32296],{"id":32025,"depth":265,"text":32028},{"id":32051,"depth":265,"text":32054},{"id":32066,"depth":265,"text":32066},{"id":32077,"depth":258,"text":32078,"children":32298},[32299],{"id":32081,"depth":265,"text":4655},{"id":32210,"depth":258,"text":32301},"Related Primitive: frameDOM",{"id":29232,"depth":258,"text":31351},{"path":31239,"title":32304,"description":32305,"kind":9,"section":5357,"order":32306,"group":29267,"parentPath":9008,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":32307,"attrs":32311,"events":32312,"cssVars":32313,"related":32314,"body":32316},"States","How StringData and its nested state containers should be read from custom modules.",73,[30148,32308,32309,32310],"ScrollState","ViewportState","CursorState",[],[],[],[9008,31237,32315],"/docs/api/state-models",{"type":22,"value":32317,"toc":32530},[32318,32321,32330,32334,32339,32369,32373,32379,32396,32399,32403,32408,32422,32425,32429,32435,32449,32452,32456,32461,32472,32475,32479,32485,32489,32495,32498,32503,32506,32519,32522,32527],[25,32319,32304],{"id":32320},"states",[30,32322,32323,32324,32326,32327,32329],{},"For custom modules, ",[60,32325,31294],{}," is the live runtime state surface. It is an instance of ",[60,32328,30148],{},", which aggregates several state containers.",[37,32331,32333],{"id":32332},"top-level-state-containers","Top-Level State Containers",[30,32335,32336,32338],{},[60,32337,30148],{}," currently exposes:",[42,32340,32341,32346,32350,32354,32359,32364],{},[45,32342,32343],{},[60,32344,32345],{},"scroll",[45,32347,32348],{},[60,32349,3310],{},[45,32351,32352],{},[60,32353,11672],{},[45,32355,32356],{},[60,32357,32358],{},"render",[45,32360,32361],{},[60,32362,32363],{},"time",[45,32365,32366],{},[60,32367,32368],{},"system",[37,32370,32371],{"id":32345},[60,32372,32345],{},[30,32374,163,32375,32378],{},[60,32376,32377],{},"this.data.scroll"," when the module depends on:",[42,32380,32381,32384,32387,32390,32393],{},[45,32382,32383],{},"current scroll position",[45,32385,32386],{},"target scroll position",[45,32388,32389],{},"lerped scroll values",[45,32391,32392],{},"displacement and direction",[45,32394,32395],{},"container and scroll mode state",[30,32397,32398],{},"This is usually the primary state surface for scroll-driven modules.",[37,32400,32401],{"id":3310},[60,32402,3310],{},[30,32404,163,32405,32378],{},[60,32406,32407],{},"this.data.viewport",[42,32409,32410,32413,32416,32419],{},[45,32411,32412],{},"window width and height",[45,32414,32415],{},"content size",[45,32417,32418],{},"transform scale",[45,32420,32421],{},"base rem",[30,32423,32424],{},"This matters for geometry, unit parsing, and layout-sensitive output.",[37,32426,32427],{"id":11672},[60,32428,11672],{},[30,32430,163,32431,32434],{},[60,32432,32433],{},"this.data.cursor"," when the module needs:",[42,32436,32437,32440,32443,32446],{},[45,32438,32439],{},"raw target pointer position",[45,32441,32442],{},"smoothed pointer position",[45,32444,32445],{},"per-frame cursor step values",[45,32447,32448],{},"cursor velocity",[30,32450,32451],{},"This is especially important for custom interaction modules.",[37,32453,32454],{"id":32363},[60,32455,32363],{},[30,32457,163,32458,32378],{},[60,32459,32460],{},"this.data.time",[42,32462,32463,32466,32469],{},[45,32464,32465],{},"frame delta",[45,32467,32468],{},"current frame time",[45,32470,32471],{},"elapsed runtime time",[30,32473,32474],{},"This is useful for time-based animation and damping behavior.",[37,32476,32477],{"id":32358},[60,32478,32358],{},[30,32480,32481,32484],{},[60,32482,32483],{},"this.data.render"," is a holder for external rendering context references. Many modules will never need it, but it exists for integrations that coordinate with a render engine.",[37,32486,32487],{"id":32368},[60,32488,32368],{},[30,32490,32491,32494],{},[60,32492,32493],{},"this.data.system"," holds runtime-level flags such as debug overlay visibility and other system-oriented switches.",[37,32496,32497],{"id":28163},"Authoring Rule",[30,32499,31193,32500,32502],{},[60,32501,31294],{}," as read-mostly shared state.",[30,32504,32505],{},"Good pattern:",[42,32507,32508,32513,32516],{},[45,32509,32510,32511],{},"read from ",[60,32512,31294],{},[45,32514,32515],{},"derive your own output",[45,32517,32518],{},"write to DOM or events through your module",[30,32520,32521],{},"Bad pattern:",[42,32523,32524],{},[45,32525,32526],{},"mutate unrelated runtime state just because it is reachable",[30,32528,32529],{},"If a custom module needs to directly rewrite core state outside its own responsibility, the design usually needs another pass.",{"title":230,"searchDepth":258,"depth":258,"links":32531},[32532,32533,32534,32535,32536,32537,32538,32539],{"id":32332,"depth":258,"text":32333},{"id":32345,"depth":258,"text":32345},{"id":3310,"depth":258,"text":3310},{"id":11672,"depth":258,"text":11672},{"id":32363,"depth":258,"text":32363},{"id":32358,"depth":258,"text":32358},{"id":32368,"depth":258,"text":32368},{"id":28163,"depth":258,"text":32497},{"path":31240,"title":5593,"description":32541,"kind":9,"section":5357,"order":32542,"group":29267,"parentPath":9008,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":32543,"attrs":32546,"events":32547,"cssVars":32548,"related":32549,"body":32550},"Safe event bus patterns for subscribing, emitting, and naming custom-module channels.",74,[32544,31304,32545],"EventManager","getObjectEventName",[],[],[],[9008,2897,2899],{"type":22,"value":32551,"toc":32811},[32552,32554,32559,32563,32577,32581,32584,32664,32667,32671,32678,32708,32711,32715,32718,32729,32731,32748,32752,32763,32767,32770,32784,32787,32791,32794,32805,32808],[25,32553,5593],{"id":3814},[30,32555,32556,32558],{},[60,32557,31304],{}," is the shared event bus available to custom modules. Use it to subscribe to runtime signals and to publish your own channels without tightly coupling modules together.",[37,32560,32562],{"id":32561},"typical-uses","Typical Uses",[42,32564,32565,32571,32574],{},[45,32566,32567,32568],{},"subscribe to global lifecycle events in ",[60,32569,32570],{},"onSubscribe(...)",[45,32572,32573],{},"emit object-scoped output channels",[45,32575,32576],{},"bridge one runtime signal into a more useful custom-module event",[37,32578,32580],{"id":32579},"subscribe-safely","Subscribe Safely",[30,32582,32583],{},"The usual pattern is:",[225,32585,32587],{"className":227,"code":32586,"language":229,"meta":230,"style":230},"override onSubscribe(): void {\n  this.events.on('scroll:start', this.onScrollStartEvent);\n}\n\noverride onUnsubscribe(): void {\n  this.events.off('scroll:start', this.onScrollStartEvent);\n}\n",[60,32588,32589,32603,32621,32625,32629,32642,32660],{"__ignoreMap":230},[234,32590,32591,32593,32596,32599,32601],{"class":236,"line":237},[234,32592,29804],{"class":244},[234,32594,32595],{"class":281},"onSubscribe",[234,32597,32598],{"class":244},"(): ",[234,32600,23519],{"class":240},[234,32602,909],{"class":244},[234,32604,32605,32607,32609,32611,32613,32615,32617,32619],{"class":236,"line":258},[234,32606,32165],{"class":271},[234,32608,29040],{"class":244},[234,32610,1536],{"class":281},[234,32612,329],{"class":244},[234,32614,29047],{"class":251},[234,32616,1833],{"class":244},[234,32618,28354],{"class":271},[234,32620,29054],{"class":244},[234,32622,32623],{"class":236,"line":265},[234,32624,1143],{"class":244},[234,32626,32627],{"class":236,"line":288},[234,32628,262],{"emptyLinePlaceholder":261},[234,32630,32631,32633,32636,32638,32640],{"class":236,"line":293},[234,32632,29804],{"class":244},[234,32634,32635],{"class":281},"onUnsubscribe",[234,32637,32598],{"class":244},[234,32639,23519],{"class":240},[234,32641,909],{"class":244},[234,32643,32644,32646,32648,32650,32652,32654,32656,32658],{"class":236,"line":305},[234,32645,32165],{"class":271},[234,32647,29040],{"class":244},[234,32649,1606],{"class":281},[234,32651,329],{"class":244},[234,32653,29047],{"class":251},[234,32655,1833],{"class":244},[234,32657,28354],{"class":271},[234,32659,29054],{"class":244},[234,32661,32662],{"class":236,"line":321},[234,32663,1143],{"class":244},[30,32665,32666],{},"Keep subscription and unsubscription symmetrical.",[37,32668,32670],{"id":32669},"emit-object-scoped-events","Emit Object-Scoped Events",[30,32672,32673,32674,32677],{},"When publishing per-object channels, prefer ",[60,32675,32676],{},"getObjectEventName(...)"," over manual string building.",[225,32679,32681],{"className":227,"code":32680,"language":229,"meta":230,"style":230},"this.events.emit(this.getObjectEventName(object, 'object:rotate-progress'), { progress, rotation });\n",[60,32682,32683],{"__ignoreMap":230},[234,32684,32685,32687,32689,32691,32693,32695,32697,32699,32702,32705],{"class":236,"line":237},[234,32686,28354],{"class":271},[234,32688,29040],{"class":244},[234,32690,21621],{"class":281},[234,32692,329],{"class":244},[234,32694,28354],{"class":271},[234,32696,106],{"class":244},[234,32698,32545],{"class":281},[234,32700,32701],{"class":244},"(object, ",[234,32703,32704],{"class":251},"'object:rotate-progress'",[234,32706,32707],{"class":244},"), { progress, rotation });\n",[30,32709,32710],{},"That keeps naming consistent and avoids repeated string work in hot paths.",[37,32712,32714],{"id":32713},"what-to-emit","What To Emit",[30,32716,32717],{},"Good custom-module events usually represent one of these:",[42,32719,32720,32723,32726],{},[45,32721,32722],{},"computed output state",[45,32724,32725],{},"phase change",[45,32727,32728],{},"object-scoped interaction data",[30,32730,183],{},[42,32732,32733,32738,32743],{},[45,32734,32735],{},[60,32736,32737],{},"object:rotate-progress:\u003Cid>",[45,32739,32740],{},[60,32741,32742],{},"object:mask-shift:\u003Cid>",[45,32744,32745],{},[60,32746,32747],{},"module:ready",[37,32749,32751],{"id":32750},"what-not-to-do","What Not To Do",[42,32753,32754,32757,32760],{},[45,32755,32756],{},"do not emit noisy per-frame payloads unless consumers really need them",[45,32758,32759],{},"do not invent unclear names that overlap with existing built-in channels",[45,32761,32762],{},"do not rely on undocumented internal channels unless you explicitly control both sides",[37,32764,32766],{"id":32765},"naming-guidance","Naming Guidance",[30,32768,32769],{},"Prefer names that make scope obvious:",[42,32771,32772,32778],{},[45,32773,32774,32775],{},"global channel: ",[60,32776,32777],{},"feature:ready",[45,32779,32780,32781],{},"object-scoped channel: ",[60,32782,32783],{},"object:feature:\u003Cid>",[30,32785,32786],{},"If your custom module mirrors built-in module style, consumers will understand it faster.",[37,32788,32790],{"id":32789},"cross-module-communication","Cross-Module Communication",[30,32792,32793],{},"The event bus is useful when:",[42,32795,32796,32799,32802],{},[45,32797,32798],{},"direct imports would create tighter coupling",[45,32800,32801],{},"one module should react to another module's output",[45,32803,32804],{},"DOM wiring would be noisier than one scoped event",[30,32806,32807],{},"But if two modules are effectively one feature, keep the design honest. Sometimes one module is cleaner than an event-driven split.",[410,32809,32810],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}",{"title":230,"searchDepth":258,"depth":258,"links":32812},[32813,32814,32815,32816,32817,32818,32819],{"id":32561,"depth":258,"text":32562},{"id":32579,"depth":258,"text":32580},{"id":32669,"depth":258,"text":32670},{"id":32713,"depth":258,"text":32714},{"id":32750,"depth":258,"text":32751},{"id":32765,"depth":258,"text":32766},{"id":32789,"depth":258,"text":32790},{"path":28149,"title":28150,"description":32821,"kind":9,"section":5357,"order":11302,"group":32822,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":32823,"attrs":32825,"events":32826,"cssVars":32827,"related":32828,"body":32829},"Author custom modules in the same read/write pipeline as the runtime so scroll and cursor work stay stable under load.","Production Patterns",[4655,29407,32824,28077],"permissions",[],[],[],[28001,28156],{"type":22,"value":32830,"toc":33324},[32831,32834,32837,32851,32855,32858,32868,32871,32879,32882,32896,32903,32908,32910,32995,32998,33038,33041,33045,33048,33054,33074,33077,33083,33091,33138,33144,33147,33151,33160,33163,33165,33210,33213,33217,33220,33241,33244,33259,33264,33269,33272,33286,33292,33296,33319,33322],[25,32832,28150],{"id":32833},"performance-patterns",[30,32835,32836],{},"Custom modules should follow the same performance model as the built-ins:",[42,32838,32839,32842,32845,32848],{},[45,32840,32841],{},"reads in measure phases",[45,32843,32844],{},"writes in mutate phases",[45,32846,32847],{},"no unnecessary rebuilds",[45,32849,32850],{},"no repeated string work in hot loops",[37,32852,32854],{"id":32853},"read-and-write-separation","Read and write separation",[30,32856,32857],{},"StringTune exposes two important authoring primitives:",[42,32859,32860,32864],{},[45,32861,32862],{},[60,32863,2389],{},[45,32865,32866],{},[60,32867,4655],{},[30,32869,32870],{},"The runtime already uses them in the main update loop:",[42,32872,32873,32876],{},[45,32874,32875],{},"scroll and pointer reads are queued into measure phases",[45,32877,32878],{},"style writes are committed inside a mutate phase",[30,32880,32881],{},"For module code, the simplest rule is:",[42,32883,32884,32891],{},[45,32885,32886,32887,1934,32889],{},"do DOM reads in ",[60,32888,30473],{},[60,32890,30476],{},[45,32892,32893,32894],{},"do DOM writes in ",[60,32895,30482],{},[37,32897,32899,32900,32902],{"id":32898},"prefer-onmutate-for-output","Prefer ",[60,32901,30482],{}," for output",[30,32904,32905,32906,106],{},"If a module writes CSS variables or inline styles on every frame, do it in ",[60,32907,30482],{},[30,32909,32505],{},[225,32911,32913],{"className":227,"code":32912,"language":229,"meta":230,"style":230},"override onMutate(): void {\n  for (const object of this.objects) {\n    const value = object.getProperty\u003Cnumber>('next-value');\n    this.applyVarToElement(object, '--my-value', value);\n  }\n}\n",[60,32914,32915,32927,32948,32971,32987,32991],{"__ignoreMap":230},[234,32916,32917,32919,32921,32923,32925],{"class":236,"line":237},[234,32918,29804],{"class":244},[234,32920,29899],{"class":281},[234,32922,32598],{"class":244},[234,32924,23519],{"class":240},[234,32926,909],{"class":244},[234,32928,32929,32932,32935,32937,32940,32943,32945],{"class":236,"line":258},[234,32930,32931],{"class":240},"  for",[234,32933,32934],{"class":244}," (",[234,32936,268],{"class":240},[234,32938,32939],{"class":271}," object",[234,32941,32942],{"class":240}," of",[234,32944,31953],{"class":271},[234,32946,32947],{"class":244},".objects) {\n",[234,32949,32950,32952,32954,32956,32958,32960,32962,32964,32966,32969],{"class":236,"line":265},[234,32951,2150],{"class":240},[234,32953,23996],{"class":271},[234,32955,275],{"class":240},[234,32957,28431],{"class":244},[234,32959,28434],{"class":281},[234,32961,347],{"class":244},[234,32963,5621],{"class":271},[234,32965,28441],{"class":244},[234,32967,32968],{"class":251},"'next-value'",[234,32970,335],{"class":244},[234,32972,32973,32975,32977,32980,32982,32985],{"class":236,"line":288},[234,32974,28320],{"class":271},[234,32976,106],{"class":244},[234,32978,32979],{"class":281},"applyVarToElement",[234,32981,32701],{"class":244},[234,32983,32984],{"class":251},"'--my-value'",[234,32986,1493],{"class":244},[234,32988,32989],{"class":236,"line":293},[234,32990,1138],{"class":244},[234,32992,32993],{"class":236,"line":305},[234,32994,1143],{"class":244},[30,32996,32997],{},"Less stable pattern:",[225,32999,33001],{"className":227,"code":33000,"language":229,"meta":230,"style":230},"override onFrame(): void {\n  object.htmlElement.style.setProperty('--my-value', String(value));\n}\n",[60,33002,33003,33015,33034],{"__ignoreMap":230},[234,33004,33005,33007,33009,33011,33013],{"class":236,"line":237},[234,33006,29804],{"class":244},[234,33008,29898],{"class":281},[234,33010,32598],{"class":244},[234,33012,23519],{"class":240},[234,33014,909],{"class":244},[234,33016,33017,33020,33022,33024,33026,33028,33031],{"class":236,"line":258},[234,33018,33019],{"class":244},"  object.htmlElement.style.",[234,33021,31026],{"class":281},[234,33023,329],{"class":244},[234,33025,32984],{"class":251},[234,33027,1833],{"class":244},[234,33029,33030],{"class":281},"String",[234,33032,33033],{"class":244},"(value));\n",[234,33035,33036],{"class":236,"line":265},[234,33037,1143],{"class":244},[30,33039,33040],{},"The second version mixes computation and DOM writes into the hot loop.",[37,33042,33044],{"id":33043},"prefer-cached-object-state-over-repeated-parsing","Prefer cached object state over repeated parsing",[30,33046,33047],{},"Do not re-read attributes or re-parse easing functions on every frame.",[30,33049,33050,33051,33053],{},"Parse once in ",[60,33052,29162],{},", then store the result on the object:",[225,33055,33057],{"className":227,"code":33056,"language":229,"meta":230,"style":230},"object.setProperty('easing', parsedEasing);\n",[60,33058,33059],{"__ignoreMap":230},[234,33060,33061,33064,33066,33068,33071],{"class":236,"line":237},[234,33062,33063],{"class":244},"object.",[234,33065,31026],{"class":281},[234,33067,329],{"class":244},[234,33069,33070],{"class":251},"'easing'",[234,33072,33073],{"class":244},", parsedEasing);\n",[30,33075,33076],{},"After that, read it from object state.",[37,33078,163,33080,33082],{"id":33079},"use-cssproperties-only-when-it-helps",[60,33081,29407],{}," only when it helps",[30,33084,33085,33086,33088,33089,1114],{},"If your module owns a CSS custom property and wants typed registration through ",[60,33087,29411],{},", define it on ",[60,33090,29407],{},[225,33092,33094],{"className":227,"code":33093,"language":229,"meta":230,"style":230},"this.cssProperties = [\n  { name: '--my-progress', syntax: '\u003Cnumber>', initialValue: '0', inherits: true },\n];\n",[60,33095,33096,33107,33134],{"__ignoreMap":230},[234,33097,33098,33100,33103,33105],{"class":236,"line":237},[234,33099,28354],{"class":271},[234,33101,33102],{"class":244},".cssProperties ",[234,33104,357],{"class":240},[234,33106,28346],{"class":244},[234,33108,33109,33112,33115,33118,33121,33124,33127,33130,33132],{"class":236,"line":258},[234,33110,33111],{"class":244},"  { name: ",[234,33113,33114],{"class":251},"'--my-progress'",[234,33116,33117],{"class":244},", syntax: ",[234,33119,33120],{"class":251},"'\u003Cnumber>'",[234,33122,33123],{"class":244},", initialValue: ",[234,33125,33126],{"class":251},"'0'",[234,33128,33129],{"class":244},", inherits: ",[234,33131,2629],{"class":271},[234,33133,23142],{"class":244},[234,33135,33136],{"class":236,"line":265},[234,33137,30713],{"class":244},[30,33139,33140,33143],{},[60,33141,33142],{},"ModuleManager"," registers those properties automatically when the module is registered.",[30,33145,33146],{},"Do this only for variables your module actually owns.",[37,33148,33150],{"id":33149},"rebuild-permissions","Rebuild permissions",[30,33152,33153,33154,137,33157,106],{},"Each module has rebuild permissions on ",[60,33155,33156],{},"permissions.desktop",[60,33158,33159],{},"permissions.mobile",[30,33161,33162],{},"Built-ins use this to skip unnecessary object recalculation on mobile or on certain resize types.",[30,33164,2071],{},[225,33166,33168],{"className":227,"code":33167,"language":229,"meta":230,"style":230},"this.permissions.mobile.rebuild.height = false;\nthis.permissions.mobile.rebuild.width = false;\nthis.permissions.mobile.rebuild.scrollHeight = false;\n",[60,33169,33170,33184,33197],{"__ignoreMap":230},[234,33171,33172,33174,33177,33179,33182],{"class":236,"line":237},[234,33173,28354],{"class":271},[234,33175,33176],{"class":244},".permissions.mobile.rebuild.height ",[234,33178,357],{"class":240},[234,33180,33181],{"class":271}," false",[234,33183,255],{"class":244},[234,33185,33186,33188,33191,33193,33195],{"class":236,"line":258},[234,33187,28354],{"class":271},[234,33189,33190],{"class":244},".permissions.mobile.rebuild.width ",[234,33192,357],{"class":240},[234,33194,33181],{"class":271},[234,33196,255],{"class":244},[234,33198,33199,33201,33204,33206,33208],{"class":236,"line":265},[234,33200,28354],{"class":271},[234,33202,33203],{"class":244},".permissions.mobile.rebuild.scrollHeight ",[234,33205,357],{"class":240},[234,33207,33181],{"class":271},[234,33209,255],{"class":244},[30,33211,33212],{},"Use this only when you are certain the module does not depend on those changes.",[37,33214,33216],{"id":33215},"object-local-cleanup","Object-local cleanup",[30,33218,33219],{},"Leaks in custom modules usually come from:",[42,33221,33222,33226,33230,33235],{},[45,33223,33224],{},[60,33225,4552],{},[45,33227,33228],{},[60,33229,4549],{},[45,33231,11891,33232],{},[60,33233,33234],{},"events.on(...)",[45,33236,33237,33238],{},"object-local ",[60,33239,33240],{},"object.events.on(...)",[30,33242,33243],{},"Always pair them with cleanup in:",[42,33245,33246,33250,33255],{},[45,33247,33248],{},[60,33249,29859],{},[45,33251,33252],{},[60,33253,33254],{},"onUnsubscribe(...)",[45,33256,33257],{},[60,33258,29996],{},[37,33260,33262],{"id":33261},"dombatcher",[60,33263,28077],{},[30,33265,33266,33268],{},[60,33267,28077],{}," is exported, but it is an advanced primitive.",[30,33270,33271],{},"Most custom modules do not need their own batcher because the runtime already batches:",[42,33273,33274,33277,33280,33283],{},[45,33275,33276],{},"object initialization",[45,33278,33279],{},"measure work",[45,33281,33282],{},"mutate work",[45,33284,33285],{},"style transactions",[30,33287,33288,33289,33291],{},"Reach for ",[60,33290,28077],{}," only if you are building a module that creates or initializes many nodes in one burst and you have measured that the default path is not enough.",[37,33293,33295],{"id":33294},"practical-rules","Practical rules",[42,33297,33298,33304,33310,33313,33316],{},[45,33299,33300,33301,33303],{},"keep ",[60,33302,30467],{}," mostly pure",[45,33305,33306,33307,33309],{},"treat ",[60,33308,30482],{}," as your write lane",[45,33311,33312],{},"cache event names and parsed values",[45,33314,33315],{},"reduce rebuild permissions only when you fully understand the dependency",[45,33317,33318],{},"clean up every observer and subscription you create",[30,33320,33321],{},"That is how custom modules stay compatible with the runtime instead of fighting it.",[410,33323,32810],{},{"title":230,"searchDepth":258,"depth":258,"links":33325},[33326,33327,33329,33330,33332,33333,33334,33335],{"id":32853,"depth":258,"text":32854},{"id":32898,"depth":258,"text":33328},"Prefer onMutate(...) for output",{"id":33043,"depth":258,"text":33044},{"id":33079,"depth":258,"text":33331},"Use cssProperties only when it helps",{"id":33149,"depth":258,"text":33150},{"id":33215,"depth":258,"text":33216},{"id":33261,"depth":258,"text":28077},{"id":33294,"depth":258,"text":33295},{"path":28156,"title":28157,"description":33337,"kind":9,"section":5357,"order":33338,"group":32822,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":33339,"attrs":33342,"events":33343,"cssVars":33344,"related":33345,"body":33346},"End-to-end example of an element module that composes with StringProgress and publishes its own output channel.",90,[33340,33341],"custom progress module","rotate by progress",[],[],[],[27999,28149],{"type":22,"value":33347,"toc":34350},[33348,33351,33356,33365,33369,34058,34060,34170,34174,34254,34258,34261,34264,34282,34285,34289,34324,34328,34331,34345,34348],[25,33349,28157],{"id":33350},"worked-example",[30,33352,33353,33354,106],{},"This example builds a custom module that depends on ",[60,33355,190],{},[30,33357,33358,33359,33361,33362,33364],{},"It reads scroll progress from the shared ",[60,33360,28055],{},", rotates the element, writes a custom CSS variable, mirrors that output to ",[60,33363,2457],{}," targets, and emits its own object-scoped event.",[37,33366,33368],{"id":33367},"module-code","Module code",[225,33370,33372],{"className":227,"code":33371,"language":229,"meta":230,"style":230},"import {\n  StringContext,\n  StringModule,\n  StringObject,\n} from '@fiddle-digital/string-tune';\n\nexport class StringRotateProgress extends StringModule {\n  constructor(context: StringContext) {\n    super(context);\n    this.htmlKey = 'rotate-progress';\n\n    this.cssProperties = [\n      { name: '--rotate-progress', syntax: '\u003Cnumber>', initialValue: '0', inherits: true },\n    ];\n\n    this.attributesToMap = [\n      ...this.attributesToMap,\n      { key: 'rotate', type: 'number', fallback: 180 },\n    ];\n  }\n\n  override canConnect(object: StringObject): boolean {\n    return object.keys.includes('progress') && object.keys.includes('rotate-progress');\n  }\n\n  override onMutate(): void {\n    for (let i = 0; i \u003C this.objects.length; i++) {\n      const object = this.objects[i];\n      const progress = object.progress ?? 0;\n      const amount = object.getProperty\u003Cnumber>('rotate') ?? 180;\n      const rotation = progress * amount;\n      const prevRotation = object.getProperty\u003Cnumber>('rotate-applied');\n\n      if (prevRotation === rotation) {\n        continue;\n      }\n\n      object.setProperty('rotate-applied', rotation);\n\n      this.applyToElementAndConnects(object, (el) => {\n        this.tools.styleTxn.setVar(el, '--rotate-progress', progress);\n        this.tools.styleTxn.setProp(el, 'transform', `rotate(${rotation}deg)`);\n      });\n\n      this.events.emit(\n        this.getObjectEventName(object, 'object:rotate-progress'),\n        { progress, rotation },\n      );\n    }\n  }\n\n  override onObjectDisconnected(object: StringObject): void {\n    const clear = (el: HTMLElement) => {\n      el.style.removeProperty('--rotate-progress');\n      el.style.removeProperty('transform');\n    };\n\n    clear(object.htmlElement);\n    for (const mirror of object.mirrorObjects) {\n      clear(mirror.htmlElement);\n    }\n  }\n}\n",[60,33373,33374,33380,33385,33390,33395,33406,33410,33425,33439,33445,33458,33462,33472,33494,33498,33502,33512,33520,33537,33541,33545,33549,33573,33600,33604,33608,33623,33661,33675,33694,33724,33741,33765,33769,33783,33790,33795,33799,33813,33817,33836,33853,33878,33883,33887,33897,33911,33916,33921,33925,33929,33933,33956,33980,33994,34006,34011,34015,34022,34038,34046,34050,34054],{"__ignoreMap":230},[234,33375,33376,33378],{"class":236,"line":237},[234,33377,241],{"class":240},[234,33379,909],{"class":244},[234,33381,33382],{"class":236,"line":258},[234,33383,33384],{"class":244},"  StringContext,\n",[234,33386,33387],{"class":236,"line":265},[234,33388,33389],{"class":244},"  StringModule,\n",[234,33391,33392],{"class":236,"line":288},[234,33393,33394],{"class":244},"  StringObject,\n",[234,33396,33397,33400,33402,33404],{"class":236,"line":293},[234,33398,33399],{"class":244},"} ",[234,33401,248],{"class":240},[234,33403,252],{"class":251},[234,33405,255],{"class":244},[234,33407,33408],{"class":236,"line":305},[234,33409,262],{"emptyLinePlaceholder":261},[234,33411,33412,33414,33416,33419,33421,33423],{"class":236,"line":321},[234,33413,887],{"class":240},[234,33415,1297],{"class":240},[234,33417,33418],{"class":281}," StringRotateProgress",[234,33420,28285],{"class":240},[234,33422,28288],{"class":281},[234,33424,909],{"class":244},[234,33426,33427,33429,33431,33433,33435,33437],{"class":236,"line":946},[234,33428,28295],{"class":240},[234,33430,329],{"class":244},[234,33432,28300],{"class":899},[234,33434,1114],{"class":240},[234,33436,28305],{"class":281},[234,33438,1477],{"class":244},[234,33440,33441,33443],{"class":236,"line":955},[234,33442,28312],{"class":271},[234,33444,28315],{"class":244},[234,33446,33447,33449,33451,33453,33456],{"class":236,"line":11},[234,33448,28320],{"class":271},[234,33450,28323],{"class":244},[234,33452,357],{"class":240},[234,33454,33455],{"class":251}," 'rotate-progress'",[234,33457,255],{"class":244},[234,33459,33460],{"class":236,"line":980},[234,33461,262],{"emptyLinePlaceholder":261},[234,33463,33464,33466,33468,33470],{"class":236,"line":994},[234,33465,28320],{"class":271},[234,33467,33102],{"class":244},[234,33469,357],{"class":240},[234,33471,28346],{"class":244},[234,33473,33474,33477,33480,33482,33484,33486,33488,33490,33492],{"class":236,"line":1000},[234,33475,33476],{"class":244},"      { name: ",[234,33478,33479],{"class":251},"'--rotate-progress'",[234,33481,33117],{"class":244},[234,33483,33120],{"class":251},[234,33485,33123],{"class":244},[234,33487,33126],{"class":251},[234,33489,33129],{"class":244},[234,33491,2629],{"class":271},[234,33493,23142],{"class":244},[234,33495,33496],{"class":236,"line":1005},[234,33497,28384],{"class":244},[234,33499,33500],{"class":236,"line":1013},[234,33501,262],{"emptyLinePlaceholder":261},[234,33503,33504,33506,33508,33510],{"class":236,"line":1019},[234,33505,28320],{"class":271},[234,33507,28341],{"class":244},[234,33509,357],{"class":240},[234,33511,28346],{"class":244},[234,33513,33514,33516,33518],{"class":236,"line":1025},[234,33515,28351],{"class":240},[234,33517,28354],{"class":271},[234,33519,28357],{"class":244},[234,33521,33522,33524,33527,33529,33531,33533,33535],{"class":236,"line":1031},[234,33523,28362],{"class":244},[234,33525,33526],{"class":251},"'rotate'",[234,33528,28368],{"class":244},[234,33530,29372],{"class":251},[234,33532,28374],{"class":244},[234,33534,25036],{"class":271},[234,33536,23142],{"class":244},[234,33538,33539],{"class":236,"line":1037},[234,33540,28384],{"class":244},[234,33542,33543],{"class":236,"line":427},[234,33544,1138],{"class":244},[234,33546,33547],{"class":236,"line":1571},[234,33548,262],{"emptyLinePlaceholder":261},[234,33550,33551,33553,33556,33558,33560,33562,33564,33566,33568,33571],{"class":236,"line":1592},[234,33552,28397],{"class":240},[234,33554,33555],{"class":281}," canConnect",[234,33557,329],{"class":244},[234,33559,28405],{"class":899},[234,33561,1114],{"class":240},[234,33563,28410],{"class":281},[234,33565,3336],{"class":244},[234,33567,1114],{"class":240},[234,33569,33570],{"class":271}," boolean",[234,33572,909],{"class":244},[234,33574,33575,33578,33580,33582,33584,33586,33588,33590,33592,33594,33596,33598],{"class":236,"line":1600},[234,33576,33577],{"class":240},"    return",[234,33579,29816],{"class":244},[234,33581,29819],{"class":281},[234,33583,329],{"class":244},[234,33585,29824],{"class":251},[234,33587,903],{"class":244},[234,33589,29829],{"class":240},[234,33591,29816],{"class":244},[234,33593,29819],{"class":281},[234,33595,329],{"class":244},[234,33597,29838],{"class":251},[234,33599,335],{"class":244},[234,33601,33602],{"class":236,"line":1615},[234,33603,1138],{"class":244},[234,33605,33606],{"class":236,"line":1620},[234,33607,262],{"emptyLinePlaceholder":261},[234,33609,33610,33612,33615,33617,33619,33621],{"class":236,"line":1625},[234,33611,28397],{"class":240},[234,33613,33614],{"class":281}," onMutate",[234,33616,29027],{"class":244},[234,33618,1114],{"class":240},[234,33620,28417],{"class":271},[234,33622,909],{"class":244},[234,33624,33625,33628,33630,33633,33636,33638,33640,33643,33645,33647,33650,33653,33656,33659],{"class":236,"line":1634},[234,33626,33627],{"class":240},"    for",[234,33629,32934],{"class":244},[234,33631,33632],{"class":240},"let",[234,33634,33635],{"class":244}," i ",[234,33637,357],{"class":240},[234,33639,7692],{"class":271},[234,33641,33642],{"class":244},"; i ",[234,33644,347],{"class":240},[234,33646,31953],{"class":271},[234,33648,33649],{"class":244},".objects.",[234,33651,33652],{"class":271},"length",[234,33654,33655],{"class":244},"; i",[234,33657,33658],{"class":240},"++",[234,33660,1477],{"class":244},[234,33662,33663,33666,33668,33670,33672],{"class":236,"line":1639},[234,33664,33665],{"class":240},"      const",[234,33667,32939],{"class":271},[234,33669,275],{"class":240},[234,33671,31953],{"class":271},[234,33673,33674],{"class":244},".objects[i];\n",[234,33676,33677,33679,33682,33684,33687,33690,33692],{"class":236,"line":1651},[234,33678,33665],{"class":240},[234,33680,33681],{"class":271}," progress",[234,33683,275],{"class":240},[234,33685,33686],{"class":244}," object.progress ",[234,33688,33689],{"class":240},"??",[234,33691,7692],{"class":271},[234,33693,255],{"class":244},[234,33695,33696,33698,33701,33703,33705,33707,33709,33711,33713,33715,33717,33719,33722],{"class":236,"line":609},[234,33697,33665],{"class":240},[234,33699,33700],{"class":271}," amount",[234,33702,275],{"class":240},[234,33704,28431],{"class":244},[234,33706,28434],{"class":281},[234,33708,347],{"class":244},[234,33710,5621],{"class":271},[234,33712,28441],{"class":244},[234,33714,33526],{"class":251},[234,33716,903],{"class":244},[234,33718,33689],{"class":240},[234,33720,33721],{"class":271}," 180",[234,33723,255],{"class":244},[234,33725,33726,33728,33731,33733,33736,33738],{"class":236,"line":1674},[234,33727,33665],{"class":240},[234,33729,33730],{"class":271}," rotation",[234,33732,275],{"class":240},[234,33734,33735],{"class":244}," progress ",[234,33737,1841],{"class":240},[234,33739,33740],{"class":244}," amount;\n",[234,33742,33743,33745,33748,33750,33752,33754,33756,33758,33760,33763],{"class":236,"line":1687},[234,33744,33665],{"class":240},[234,33746,33747],{"class":271}," prevRotation",[234,33749,275],{"class":240},[234,33751,28431],{"class":244},[234,33753,28434],{"class":281},[234,33755,347],{"class":244},[234,33757,5621],{"class":271},[234,33759,28441],{"class":244},[234,33761,33762],{"class":251},"'rotate-applied'",[234,33764,335],{"class":244},[234,33766,33767],{"class":236,"line":1700},[234,33768,262],{"emptyLinePlaceholder":261},[234,33770,33771,33774,33777,33780],{"class":236,"line":1716},[234,33772,33773],{"class":240},"      if",[234,33775,33776],{"class":244}," (prevRotation ",[234,33778,33779],{"class":240},"===",[234,33781,33782],{"class":244}," rotation) {\n",[234,33784,33785,33788],{"class":236,"line":1721},[234,33786,33787],{"class":240},"        continue",[234,33789,255],{"class":244},[234,33791,33792],{"class":236,"line":1726},[234,33793,33794],{"class":244},"      }\n",[234,33796,33797],{"class":236,"line":1734},[234,33798,262],{"emptyLinePlaceholder":261},[234,33800,33801,33804,33806,33808,33810],{"class":236,"line":1746},[234,33802,33803],{"class":244},"      object.",[234,33805,31026],{"class":281},[234,33807,329],{"class":244},[234,33809,33762],{"class":251},[234,33811,33812],{"class":244},", rotation);\n",[234,33814,33815],{"class":236,"line":1766},[234,33816,262],{"emptyLinePlaceholder":261},[234,33818,33819,33822,33824,33826,33828,33830,33832,33834],{"class":236,"line":819},[234,33820,33821],{"class":271},"      this",[234,33823,106],{"class":244},[234,33825,28458],{"class":281},[234,33827,28461],{"class":244},[234,33829,28464],{"class":899},[234,33831,903],{"class":244},[234,33833,906],{"class":240},[234,33835,909],{"class":244},[234,33837,33838,33841,33843,33845,33848,33850],{"class":236,"line":1794},[234,33839,33840],{"class":271},"        this",[234,33842,32151],{"class":244},[234,33844,32170],{"class":281},[234,33846,33847],{"class":244},"(el, ",[234,33849,33479],{"class":251},[234,33851,33852],{"class":244},", progress);\n",[234,33854,33855,33857,33859,33861,33863,33865,33867,33870,33873,33876],{"class":236,"line":1807},[234,33856,33840],{"class":271},[234,33858,32151],{"class":244},[234,33860,32191],{"class":281},[234,33862,33847],{"class":244},[234,33864,32196],{"class":251},[234,33866,1833],{"class":244},[234,33868,33869],{"class":251},"`rotate(${",[234,33871,33872],{"class":244},"rotation",[234,33874,33875],{"class":251},"}deg)`",[234,33877,335],{"class":244},[234,33879,33880],{"class":236,"line":1878},[234,33881,33882],{"class":244},"      });\n",[234,33884,33885],{"class":236,"line":1883},[234,33886,262],{"emptyLinePlaceholder":261},[234,33888,33889,33891,33893,33895],{"class":236,"line":9991},[234,33890,33821],{"class":271},[234,33892,29040],{"class":244},[234,33894,21621],{"class":281},[234,33896,7773],{"class":244},[234,33898,33899,33901,33903,33905,33907,33909],{"class":236,"line":9999},[234,33900,33840],{"class":271},[234,33902,106],{"class":244},[234,33904,32545],{"class":281},[234,33906,32701],{"class":244},[234,33908,32704],{"class":251},[234,33910,14463],{"class":244},[234,33912,33913],{"class":236,"line":10013},[234,33914,33915],{"class":244},"        { progress, rotation },\n",[234,33917,33918],{"class":236,"line":10027},[234,33919,33920],{"class":244},"      );\n",[234,33922,33923],{"class":236,"line":10032},[234,33924,1549],{"class":244},[234,33926,33927],{"class":236,"line":1908},[234,33928,1138],{"class":244},[234,33930,33931],{"class":236,"line":10044},[234,33932,262],{"emptyLinePlaceholder":261},[234,33934,33935,33937,33940,33942,33944,33946,33948,33950,33952,33954],{"class":236,"line":10058},[234,33936,28397],{"class":240},[234,33938,33939],{"class":281}," onObjectDisconnected",[234,33941,329],{"class":244},[234,33943,28405],{"class":899},[234,33945,1114],{"class":240},[234,33947,28410],{"class":281},[234,33949,3336],{"class":244},[234,33951,1114],{"class":240},[234,33953,28417],{"class":271},[234,33955,909],{"class":244},[234,33957,33958,33960,33963,33965,33967,33969,33971,33974,33976,33978],{"class":236,"line":10071},[234,33959,2150],{"class":240},[234,33961,33962],{"class":281}," clear",[234,33964,275],{"class":240},[234,33966,32934],{"class":244},[234,33968,28464],{"class":899},[234,33970,1114],{"class":240},[234,33972,33973],{"class":281}," HTMLElement",[234,33975,903],{"class":244},[234,33977,906],{"class":240},[234,33979,909],{"class":244},[234,33981,33982,33985,33988,33990,33992],{"class":236,"line":10095},[234,33983,33984],{"class":244},"      el.style.",[234,33986,33987],{"class":281},"removeProperty",[234,33989,329],{"class":244},[234,33991,33479],{"class":251},[234,33993,335],{"class":244},[234,33995,33996,33998,34000,34002,34004],{"class":236,"line":3971},[234,33997,33984],{"class":244},[234,33999,33987],{"class":281},[234,34001,329],{"class":244},[234,34003,32196],{"class":251},[234,34005,335],{"class":244},[234,34007,34008],{"class":236,"line":10104},[234,34009,34010],{"class":244},"    };\n",[234,34012,34013],{"class":236,"line":10112},[234,34014,262],{"emptyLinePlaceholder":261},[234,34016,34017,34020],{"class":236,"line":10126},[234,34018,34019],{"class":281},"    clear",[234,34021,31577],{"class":244},[234,34023,34024,34026,34028,34030,34033,34035],{"class":236,"line":10140},[234,34025,33627],{"class":240},[234,34027,32934],{"class":244},[234,34029,268],{"class":240},[234,34031,34032],{"class":271}," mirror",[234,34034,32942],{"class":240},[234,34036,34037],{"class":244}," object.mirrorObjects) {\n",[234,34039,34040,34043],{"class":236,"line":4298},[234,34041,34042],{"class":281},"      clear",[234,34044,34045],{"class":244},"(mirror.htmlElement);\n",[234,34047,34048],{"class":236,"line":10149},[234,34049,1549],{"class":244},[234,34051,34052],{"class":236,"line":10160},[234,34053,1138],{"class":244},[234,34055,34056],{"class":236,"line":10168},[234,34057,1143],{"class":244},[37,34059,6074],{"id":6073},[225,34061,34063],{"className":227,"code":34062,"language":229,"meta":230,"style":230},"import StringTune, {\n  StringProgress,\n} from '@fiddle-digital/string-tune';\nimport { StringRotateProgress } from './modules/StringRotateProgress';\n\nconst stringTune = StringTune.getInstance();\n\nstringTune.use(StringProgress);\nstringTune.use(StringRotateProgress, {\n  rotate: 240,\n});\n\nstringTune.start(60);\n",[60,34064,34065,34072,34077,34087,34101,34105,34119,34123,34131,34140,34150,34154,34158],{"__ignoreMap":230},[234,34066,34067,34069],{"class":236,"line":237},[234,34068,241],{"class":240},[234,34070,34071],{"class":244}," StringTune, {\n",[234,34073,34074],{"class":236,"line":258},[234,34075,34076],{"class":244},"  StringProgress,\n",[234,34078,34079,34081,34083,34085],{"class":236,"line":265},[234,34080,33399],{"class":244},[234,34082,248],{"class":240},[234,34084,252],{"class":251},[234,34086,255],{"class":244},[234,34088,34089,34091,34094,34096,34099],{"class":236,"line":288},[234,34090,241],{"class":240},[234,34092,34093],{"class":244}," { StringRotateProgress } ",[234,34095,248],{"class":240},[234,34097,34098],{"class":251}," './modules/StringRotateProgress'",[234,34100,255],{"class":244},[234,34102,34103],{"class":236,"line":293},[234,34104,262],{"emptyLinePlaceholder":261},[234,34106,34107,34109,34111,34113,34115,34117],{"class":236,"line":305},[234,34108,268],{"class":240},[234,34110,272],{"class":271},[234,34112,275],{"class":240},[234,34114,278],{"class":244},[234,34116,282],{"class":281},[234,34118,285],{"class":244},[234,34120,34121],{"class":236,"line":321},[234,34122,262],{"emptyLinePlaceholder":261},[234,34124,34125,34127,34129],{"class":236,"line":946},[234,34126,296],{"class":244},[234,34128,299],{"class":281},[234,34130,302],{"class":244},[234,34132,34133,34135,34137],{"class":236,"line":955},[234,34134,296],{"class":244},[234,34136,299],{"class":281},[234,34138,34139],{"class":244},"(StringRotateProgress, {\n",[234,34141,34142,34145,34148],{"class":236,"line":11},[234,34143,34144],{"class":244},"  rotate: ",[234,34146,34147],{"class":271},"240",[234,34149,2506],{"class":244},[234,34151,34152],{"class":236,"line":980},[234,34153,1040],{"class":244},[234,34155,34156],{"class":236,"line":994},[234,34157,262],{"emptyLinePlaceholder":261},[234,34159,34160,34162,34164,34166,34168],{"class":236,"line":1000},[234,34161,296],{"class":244},[234,34163,326],{"class":281},[234,34165,329],{"class":244},[234,34167,332],{"class":271},[234,34169,335],{"class":244},[37,34171,34173],{"id":34172},"markup","Markup",[225,34175,34177],{"className":338,"code":34176,"language":340,"meta":230,"style":230},"\u003Csection\n  string=\"progress|rotate-progress\"\n  string-id=\"hero-rotate\"\n  string-rotate=\"270\"\n>\n  Rotate me\n\u003C/section>\n\n\u003Cdiv string-copy-from=\"hero-rotate\">\u003C/div>\n",[60,34178,34179,34186,34195,34204,34214,34218,34223,34231,34235],{"__ignoreMap":230},[234,34180,34181,34183],{"class":236,"line":237},[234,34182,347],{"class":244},[234,34184,34185],{"class":350},"section\n",[234,34187,34188,34190,34192],{"class":236,"line":258},[234,34189,12249],{"class":281},[234,34191,357],{"class":244},[234,34193,34194],{"class":251},"\"progress|rotate-progress\"\n",[234,34196,34197,34199,34201],{"class":236,"line":265},[234,34198,12259],{"class":281},[234,34200,357],{"class":244},[234,34202,34203],{"class":251},"\"hero-rotate\"\n",[234,34205,34206,34209,34211],{"class":236,"line":288},[234,34207,34208],{"class":281},"  string-rotate",[234,34210,357],{"class":244},[234,34212,34213],{"class":251},"\"270\"\n",[234,34215,34216],{"class":236,"line":293},[234,34217,376],{"class":244},[234,34219,34220],{"class":236,"line":305},[234,34221,34222],{"class":244},"  Rotate me\n",[234,34224,34225,34227,34229],{"class":236,"line":321},[234,34226,1402],{"class":244},[234,34228,740],{"class":350},[234,34230,376],{"class":244},[234,34232,34233],{"class":236,"line":946},[234,34234,262],{"emptyLinePlaceholder":261},[234,34236,34237,34239,34241,34243,34245,34248,34250,34252],{"class":236,"line":955},[234,34238,347],{"class":244},[234,34240,351],{"class":350},[234,34242,3179],{"class":281},[234,34244,357],{"class":244},[234,34246,34247],{"class":251},"\"hero-rotate\"",[234,34249,371],{"class":244},[234,34251,351],{"class":350},[234,34253,376],{"class":244},[37,34255,34257],{"id":34256},"what-this-module-is-intentionally-depending-on","What this module is intentionally depending on",[30,34259,34260],{},"This module composes with the built-in progress contract.",[30,34262,34263],{},"That means it assumes:",[42,34265,34266,34271,34276],{},[45,34267,34268,34270],{},[60,34269,190],{}," is registered",[45,34272,34273,34274],{},"the element connects to ",[60,34275,3242],{},[45,34277,34278,34281],{},[60,34279,34280],{},"object.progress"," is updated by the progress module before mutate output runs",[30,34283,34284],{},"That is a valid custom-module dependency because it is explicit and local. It would be a bad design only if the module silently depended on private state that no one reading the markup could infer.",[37,34286,34288],{"id":34287},"why-this-example-is-structured-this-way","Why this example is structured this way",[42,34290,34291,34299,34304,34309,34314,34319],{},[45,34292,34293,34295,34296,34298],{},[60,34294,29149],{}," makes the dependency on ",[60,34297,5373],{}," explicit.",[45,34300,34301,34303],{},[60,34302,30482],{}," owns all writes.",[45,34305,34306,34308],{},[60,34307,34280],{}," is consumed as shared state instead of re-implementing progress math.",[45,34310,34311,34313],{},[60,34312,28674],{}," keeps mirrors in sync automatically.",[45,34315,34316,34318],{},[60,34317,32676],{}," publishes a stable object-scoped event.",[45,34320,34321,34323],{},[60,34322,29859],{}," only removes properties owned by this module.",[37,34325,34327],{"id":34326},"when-to-use-this-pattern","When to use this pattern",[30,34329,34330],{},"Use this pattern when you want a custom module to:",[42,34332,34333,34336,34339,34342],{},[45,34334,34335],{},"build on top of a built-in module",[45,34337,34338],{},"publish a project-specific output channel",[45,34340,34341],{},"keep the HTML contract declarative",[45,34343,34344],{},"avoid duplicating runtime math that StringTune already computes",[30,34346,34347],{},"That is one of the strongest reasons to write custom modules in StringTune instead of bolting standalone code onto the page.",[410,34349,28816],{},{"title":230,"searchDepth":258,"depth":258,"links":34351},[34352,34353,34354,34355,34356,34357],{"id":33367,"depth":258,"text":33368},{"id":6073,"depth":258,"text":6074},{"id":34172,"depth":258,"text":34173},{"id":34256,"depth":258,"text":34257},{"id":34287,"depth":258,"text":34288},{"id":34326,"depth":258,"text":34327},{"path":166,"title":167,"description":34359,"kind":34360,"section":34361,"order":11,"group":34362,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":34363,"attrs":34364,"events":34365,"cssVars":34366,"related":34367,"body":34368},"Map of the official export surface and where each symbol belongs.","api-reference","API Reference","Core API",[],[],[],[],[6,158,2350],{"type":22,"value":34369,"toc":34537},[34370,34373,34376,34379,34405,34409,34464,34468,34512,34516,34519,34522],[25,34371,167],{"id":34372},"api-overview",[30,34374,34375],{},"The public API comes from the package exports.",[37,34377,34362],{"id":34378},"core-api",[42,34380,34381,34386,34391,34396,34401],{},[45,34382,34383],{},[133,34384,34385],{"href":3980},"StringTune API",[45,34387,34388],{},[133,34389,34390],{"href":2899},"Event Channels",[45,34392,34393],{},[133,34394,34395],{"href":2463},"Settings Reference",[45,34397,34398],{},[133,34399,34400],{"href":2464},"Common Attributes",[45,34402,34403],{},[133,34404,17405],{"href":8037},[37,34406,34408],{"id":34407},"utilities","Utilities",[42,34410,34411,34417,34421,34425,34429,34435,34441,34447,34453,34458],{},[45,34412,34413],{},[133,34414,34416],{"href":34415},"/docs/api/utilities","Utilities Overview",[45,34418,34419],{},[133,34420,2389],{"href":4614},[45,34422,34423],{},[133,34424,4655],{"href":4615},[45,34426,34427],{},[133,34428,28077],{"href":4616},[45,34430,34431],{},[133,34432,34434],{"href":34433},"/docs/api/grid-adapter","GridAdapter",[45,34436,34437],{},[133,34438,34440],{"href":34439},"/docs/api/debounce","Debounce",[45,34442,34443],{},[133,34444,34446],{"href":34445},"/docs/api/string-fps","StringFPS",[45,34448,34449],{},[133,34450,34452],{"href":34451},"/docs/api/string-settings","StringSettings",[45,34454,34455],{},[133,34456,34457],{"href":13750},"isCoarsePointer",[45,34459,34460],{},[133,34461,34463],{"href":34462},"/docs/api/parse-part-of","parsePartOf",[37,34465,34467],{"id":34466},"state-models","State Models",[42,34469,34470,34475,34479,34484,34489,34494,34500,34506],{},[45,34471,34472],{},[133,34473,34474],{"href":32315},"State Models Overview",[45,34476,34477],{},[133,34478,30148],{"href":3981},[45,34480,34481],{},[133,34482,32308],{"href":34483},"/docs/api/scroll-state",[45,34485,34486],{},[133,34487,32309],{"href":34488},"/docs/api/viewport-state",[45,34490,34491],{},[133,34492,32310],{"href":34493},"/docs/api/cursor-state",[45,34495,34496],{},[133,34497,34499],{"href":34498},"/docs/api/time-state","TimeState",[45,34501,34502],{},[133,34503,34505],{"href":34504},"/docs/api/system-state","SystemState",[45,34507,34508],{},[133,34509,34511],{"href":34510},"/docs/api/render-state","RenderState",[37,34513,34515],{"id":34514},"boundary-rule","Boundary rule",[30,34517,34518],{},"Not every documented page in this section is equally public.",[30,34520,34521],{},"Use this rule:",[42,34523,34524,34527],{},[45,34525,34526],{},"if the symbol is exported by the package root, it is fair integration surface",[45,34528,34529,34530,1934,34533,34536],{},"if it only exists in ",[60,34531,34532],{},"src/utils",[60,34534,34535],{},"src/states",", treat it as runtime reference unless you fully control the surrounding codebase",{"title":230,"searchDepth":258,"depth":258,"links":34538},[34539,34540,34541,34542],{"id":34378,"depth":258,"text":34362},{"id":34407,"depth":258,"text":34408},{"id":34466,"depth":258,"text":34467},{"id":34514,"depth":258,"text":34515},{"path":3980,"title":34385,"description":34544,"kind":34360,"section":34361,"order":427,"group":34362,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":34545,"attrs":34546,"events":34547,"cssVars":34548,"related":34549,"body":34550},"Public instance API for registration, lifecycle, scrolling, and event hooks.",[28,282,299,326,2454],[],[],[],[2463,2899,19],{"type":22,"value":34551,"toc":34961},[34552,34555,34559,34578,34581,34585,34591,34594,34600,34603,34609,34612,34621,34624,34628,34631,34634,34802,34805,34829,34833,34836,34852,34863,34867,34873,34889,34895,34901,34904,34908,34911,34937,34944,34948,34959],[25,34553,34385],{"id":34554},"stringtune-api",[37,34556,34558],{"id":34557},"instance-access","Instance access",[225,34560,34562],{"className":227,"code":34561,"language":229,"meta":230,"style":230},"const stringTune = StringTune.getInstance();\n",[60,34563,34564],{"__ignoreMap":230},[234,34565,34566,34568,34570,34572,34574,34576],{"class":236,"line":237},[234,34567,268],{"class":240},[234,34569,272],{"class":271},[234,34571,275],{"class":240},[234,34573,278],{"class":244},[234,34575,282],{"class":281},[234,34577,285],{"class":244},[30,34579,34580],{},"Use the shared singleton instance unless your package design explicitly changes that assumption.",[37,34582,34584],{"id":34583},"core-methods","Core methods",[174,34586,34588],{"id":34587},"usemodule-options",[60,34589,34590],{},"use(Module, options?)",[30,34592,34593],{},"Registers a built-in or custom module.",[174,34595,34597],{"id":34596},"setupsettingssettings",[60,34598,34599],{},"setupSettings(settings)",[30,34601,34602],{},"Sets global runtime settings such as offsets, cursor lerp, loading timeout, and related defaults.",[174,34604,34606],{"id":34605},"startfps",[60,34607,34608],{},"start(fps?)",[30,34610,34611],{},"Starts the runtime loop and initializes the current DOM state.",[174,34613,34615,4253,34618],{"id":34614},"onname-callback-offname-callback",[60,34616,34617],{},"on(name, callback)",[60,34619,34620],{},"off(name, callback?)",[30,34622,34623],{},"Subscribes to or unsubscribes from supported global event channels.",[174,34625,34626],{"id":2550},[60,34627,2553],{},[30,34629,34630],{},"Scrolls via the active scroll controller. This is the supported public scroll API.",[30,34632,34633],{},"Supported call forms:",[225,34635,34637],{"className":227,"code":34636,"language":229,"meta":230,"style":230},"stringTune.scrollTo(640);\nstringTune.scrollTo('#pricing');\nstringTune.scrollTo(document.querySelector('#pricing') as HTMLElement);\n\nstringTune.scrollTo({ position: 640 });\nstringTune.scrollTo({ position: 640, immediate: true });\nstringTune.scrollTo({ position: 640, offset: -80 });\n\nstringTune.scrollTo({ selector: '#pricing' });\nstringTune.scrollTo({ selector: '#pricing', offset: -80 });\n\nstringTune.scrollTo({ element: pricingElement });\nstringTune.scrollTo({ element: pricingElement, immediate: true, offset: -80 });\n",[60,34638,34639,34651,34663,34687,34691,34703,34719,34737,34741,34753,34771,34775,34784],{"__ignoreMap":230},[234,34640,34641,34643,34645,34647,34649],{"class":236,"line":237},[234,34642,296],{"class":244},[234,34644,2454],{"class":281},[234,34646,329],{"class":244},[234,34648,2572],{"class":271},[234,34650,335],{"class":244},[234,34652,34653,34655,34657,34659,34661],{"class":236,"line":258},[234,34654,296],{"class":244},[234,34656,2454],{"class":281},[234,34658,329],{"class":244},[234,34660,2585],{"class":251},[234,34662,335],{"class":244},[234,34664,34665,34667,34669,34672,34674,34676,34678,34680,34683,34685],{"class":236,"line":265},[234,34666,296],{"class":244},[234,34668,2454],{"class":281},[234,34670,34671],{"class":244},"(document.",[234,34673,4489],{"class":281},[234,34675,329],{"class":244},[234,34677,2585],{"class":251},[234,34679,903],{"class":244},[234,34681,34682],{"class":240},"as",[234,34684,33973],{"class":281},[234,34686,335],{"class":244},[234,34688,34689],{"class":236,"line":288},[234,34690,262],{"emptyLinePlaceholder":261},[234,34692,34693,34695,34697,34699,34701],{"class":236,"line":293},[234,34694,296],{"class":244},[234,34696,2454],{"class":281},[234,34698,2609],{"class":244},[234,34700,2572],{"class":271},[234,34702,318],{"class":244},[234,34704,34705,34707,34709,34711,34713,34715,34717],{"class":236,"line":305},[234,34706,296],{"class":244},[234,34708,2454],{"class":281},[234,34710,2609],{"class":244},[234,34712,2572],{"class":271},[234,34714,2626],{"class":244},[234,34716,2629],{"class":271},[234,34718,318],{"class":244},[234,34720,34721,34723,34725,34727,34729,34731,34733,34735],{"class":236,"line":321},[234,34722,296],{"class":244},[234,34724,2454],{"class":281},[234,34726,2609],{"class":244},[234,34728,2572],{"class":271},[234,34730,2644],{"class":244},[234,34732,2647],{"class":240},[234,34734,1666],{"class":271},[234,34736,318],{"class":244},[234,34738,34739],{"class":236,"line":946},[234,34740,262],{"emptyLinePlaceholder":261},[234,34742,34743,34745,34747,34749,34751],{"class":236,"line":955},[234,34744,296],{"class":244},[234,34746,2454],{"class":281},[234,34748,2664],{"class":244},[234,34750,2585],{"class":251},[234,34752,318],{"class":244},[234,34754,34755,34757,34759,34761,34763,34765,34767,34769],{"class":236,"line":11},[234,34756,296],{"class":244},[234,34758,2454],{"class":281},[234,34760,2664],{"class":244},[234,34762,2585],{"class":251},[234,34764,2644],{"class":244},[234,34766,2647],{"class":240},[234,34768,1666],{"class":271},[234,34770,318],{"class":244},[234,34772,34773],{"class":236,"line":980},[234,34774,262],{"emptyLinePlaceholder":261},[234,34776,34777,34779,34781],{"class":236,"line":994},[234,34778,296],{"class":244},[234,34780,2454],{"class":281},[234,34782,34783],{"class":244},"({ element: pricingElement });\n",[234,34785,34786,34788,34790,34792,34794,34796,34798,34800],{"class":236,"line":1000},[234,34787,296],{"class":244},[234,34789,2454],{"class":281},[234,34791,2683],{"class":244},[234,34793,2629],{"class":271},[234,34795,2644],{"class":244},[234,34797,2647],{"class":240},[234,34799,1666],{"class":271},[234,34801,318],{"class":244},[30,34803,34804],{},"Behavior notes:",[42,34806,34807,34813,34818,34823,34826],{},[45,34808,34809,2712,34811],{},[60,34810,2711],{},[60,34812,2715],{},[45,34814,34815,34817],{},[60,34816,2719],{}," is added to the resolved position",[45,34819,34820,34822],{},[60,34821,2719],{}," is available on object forms only",[45,34824,34825],{},"string targets are treated as CSS selectors",[45,34827,34828],{},"if the selector or element cannot be resolved, the call becomes a no-op",[174,34830,34831],{"id":2723},[60,34832,2726],{},[30,34834,34835],{},"Invalidates the cached center for a specific object id. Call this after a DOM change that moves one element so the runtime recomputes its position on the next frame.",[225,34837,34838],{"className":227,"code":2732,"language":229,"meta":230,"style":230},[60,34839,34840],{"__ignoreMap":230},[234,34841,34842,34844,34846,34848,34850],{"class":236,"line":237},[234,34843,296],{"class":244},[234,34845,2455],{"class":281},[234,34847,329],{"class":244},[234,34849,2745],{"class":251},[234,34851,335],{"class":244},[1042,34853,34854],{},[30,34855,34856,2755,34858,34860,34861,30443],{},[1929,34857,2754],{},[60,34859,2758],{}," method (plural, no argument) was removed in v1.1.51. For bulk DOM changes, use ",[60,34862,2762],{},[174,34864,34865],{"id":2766},[60,34866,2769],{},[30,34868,34869,34870,34872],{},"Triggers a full layout rebuild. Pass ",[60,34871,2629],{}," to force a complete recomputation regardless of whether dimensions appear to have changed.",[225,34874,34875],{"className":227,"code":2778,"language":229,"meta":230,"style":230},[60,34876,34877],{"__ignoreMap":230},[234,34878,34879,34881,34883,34885,34887],{"class":236,"line":237},[234,34880,296],{"class":244},[234,34882,2787],{"class":281},[234,34884,329],{"class":244},[234,34886,2629],{"class":271},[234,34888,335],{"class":244},[30,34890,34891,34892,34894],{},"This is the correct replacement for ",[60,34893,2758],{}," when you need to recompute all positions at once — for example after injecting content or rearranging elements programmatically.",[174,34896,34898],{"id":34897},"registerscrollmodename-controller",[60,34899,34900],{},"registerScrollMode(name, controller)",[30,34902,34903],{},"Registers a custom scroll controller.",[37,34905,34907],{"id":34906},"public-properties","Public properties",[30,34909,34910],{},"Commonly consumed properties include:",[42,34912,34913,34918,34923,34928,34933],{},[45,34914,34915],{},[60,34916,34917],{},"scrollDesktopMode",[45,34919,34920],{},[60,34921,34922],{},"scrollMobileMode",[45,34924,34925],{},[60,34926,34927],{},"speed",[45,34929,34930],{},[60,34931,34932],{},"speedAccelerate",[45,34934,34935],{},[60,34936,2820],{},[30,34938,34939,34941,34942,106],{},[60,34940,2820],{}," is an immediate runtime setter. It does not behave like a built-in animated ",[60,34943,2454],{},[37,34945,34947],{"id":34946},"not-part-of-the-public-contract","Not part of the public contract",[42,34949,34950,34953,34956],{},[45,34951,34952],{},"private runtime managers",[45,34954,34955],{},"bracket access into private fields",[45,34957,34958],{},"undocumented internal caches and observers",[410,34960,32266],{},{"title":230,"searchDepth":258,"depth":258,"links":34962},[34963,34964,34975,34976],{"id":34557,"depth":258,"text":34558},{"id":34583,"depth":258,"text":34584,"children":34965},[34966,34967,34968,34969,34971,34972,34973,34974],{"id":34587,"depth":265,"text":34590},{"id":34596,"depth":265,"text":34599},{"id":34605,"depth":265,"text":34608},{"id":34614,"depth":265,"text":34970},"on(name, callback) / off(name, callback?)",{"id":2550,"depth":265,"text":2553},{"id":2723,"depth":265,"text":2726},{"id":2766,"depth":265,"text":2769},{"id":34897,"depth":265,"text":34900},{"id":34906,"depth":258,"text":34907},{"id":34946,"depth":258,"text":34947},{"path":2899,"title":34390,"description":34978,"kind":34360,"section":34361,"order":609,"group":34362,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":34979,"attrs":34981,"events":34982,"cssVars":34983,"related":34984,"body":34985},"Central reference for global and object-scoped events that are safe to consume.",[3814,22342,34980],"object:*",[],[],[],[2897,2465,3819],{"type":22,"value":34986,"toc":35820},[34987,34990,34993,35015,35018,35022,35025,35027,35041,35044,35048,35160,35164,35327,35331,35336,35379,35384,35406,35410,35499,35502,35525,35529,35660,35663,35675,35679,35758,35761,35765,35772,35774,35784,35792,35796,35817],[25,34988,34390],{"id":34989},"event-channels",[30,34991,34992],{},"StringTune exposes one global event bus through:",[225,34994,34996],{"className":227,"code":34995,"language":229,"meta":230,"style":230},"stringTune.on(eventName, callback);\nstringTune.off(eventName, callback);\n",[60,34997,34998,35007],{"__ignoreMap":230},[234,34999,35000,35002,35004],{"class":236,"line":237},[234,35001,296],{"class":244},[234,35003,1536],{"class":281},[234,35005,35006],{"class":244},"(eventName, callback);\n",[234,35008,35009,35011,35013],{"class":236,"line":258},[234,35010,296],{"class":244},[234,35012,1606],{"class":281},[234,35014,35006],{"class":244},[30,35016,35017],{},"This page lists channels that are reasonable to treat as public integration surface.",[37,35019,35021],{"id":35020},"important-boundary","Important Boundary",[30,35023,35024],{},"Some events in the runtime exist only for internal orchestration.",[30,35026,183],{},[42,35028,35029,35033,35037],{},[45,35030,35031],{},[60,35032,4946],{},[45,35034,35035],{},[60,35036,22292],{},[45,35038,35039],{},[60,35040,2454],{},[30,35042,35043],{},"Those channels are used by controllers and modules internally. They should not be documented as normal app-facing API.",[37,35045,35047],{"id":35046},"global-runtime-channels","Global Runtime Channels",[2221,35049,35050,35060],{},[2224,35051,35052],{},[2227,35053,35054,35056,35058],{},[2230,35055,5602],{},[2230,35057,5605],{},[2230,35059,5608],{},[2240,35061,35062,35078,35092,35105,35118,35132,35146],{},[2227,35063,35064,35068,35072],{},[2245,35065,35066],{},[60,35067,326],{},[2245,35069,35070],{},[60,35071,12088],{},[2245,35073,35074,35077],{},[60,35075,35076],{},"stringTune.start()"," finishes initialization",[2227,35079,35080,35085,35089],{},[2245,35081,35082],{},[60,35083,35084],{},"update",[2245,35086,35087],{},[60,35088,12088],{},[2245,35090,35091],{},"End of each update frame",[2227,35093,35094,35098,35102],{},[2245,35095,35096],{},[60,35097,32345],{},[2245,35099,35100],{},[60,35101,5621],{},[2245,35103,35104],{},"Scroll position changes",[2227,35106,35107,35111,35115],{},[2245,35108,35109],{},[60,35110,8030],{},[2245,35112,35113],{},[60,35114,5621],{},[2245,35116,35117],{},"Shared scroll lerp value changes",[2227,35119,35120,35125,35129],{},[2245,35121,35122],{},[60,35123,35124],{},"scroll:start",[2245,35126,35127],{},[60,35128,12088],{},[2245,35130,35131],{},"Scrolling begins",[2227,35133,35134,35139,35143],{},[2245,35135,35136],{},[60,35137,35138],{},"scroll:stop",[2245,35140,35141],{},[60,35142,12088],{},[2245,35144,35145],{},"Scrolling stops",[2227,35147,35148,35153,35157],{},[2245,35149,35150],{},[60,35151,35152],{},"dom:changed",[2245,35154,35155],{},[60,35156,12088],{},[2245,35158,35159],{},"Object manager detects relevant DOM additions or removals",[37,35161,35163],{"id":35162},"global-module-channels","Global Module Channels",[2221,35165,35166,35176],{},[2224,35167,35168],{},[2227,35169,35170,35172,35174],{},[2230,35171,5602],{},[2230,35173,5605],{},[2230,35175,5608],{},[2240,35177,35178,35191,35204,35217,35230,35243,35256,35269,35285,35301,35314],{},[2227,35179,35180,35184,35188],{},[2245,35181,35182],{},[60,35183,22314],{},[2245,35185,35186],{},[60,35187,14955],{},[2245,35189,35190],{},"Responsive mobile match changes",[2227,35192,35193,35197,35201],{},[2245,35194,35195],{},[60,35196,22321],{},[2245,35198,35199],{},[60,35200,14955],{},[2245,35202,35203],{},"Responsive tablet match changes",[2227,35205,35206,35210,35214],{},[2245,35207,35208],{},[60,35209,22322],{},[2245,35211,35212],{},[60,35213,14955],{},[2245,35215,35216],{},"Responsive laptop match changes",[2227,35218,35219,35223,35227],{},[2245,35220,35221],{},[60,35222,22323],{},[2245,35224,35225],{},[60,35226,14955],{},[2245,35228,35229],{},"Responsive desktop match changes",[2227,35231,35232,35236,35240],{},[2245,35233,35234],{},[60,35235,11672],{},[2245,35237,35238],{},[60,35239,12157],{},[2245,35241,35242],{},"Cursor portal state changes",[2227,35244,35245,35249,35253],{},[2245,35246,35247],{},[60,35248,26555],{},[2245,35250,35251],{},[60,35252,5621],{},[2245,35254,35255],{},"FPS tracker measures a new FPS value",[2227,35257,35258,35262,35266],{},[2245,35259,35260],{},[60,35261,27269],{},[2245,35263,35264],{},[60,35265,27274],{},[2245,35267,35268],{},"Position tracker updates",[2227,35270,35271,35276,35280],{},[2245,35272,35273],{},[60,35274,35275],{},"tracker:fps:visible",[2245,35277,35278],{},[60,35279,14955],{},[2245,35281,35282,30317],{},[60,35283,35284],{},"stringTune.FPSTrackerVisible",[2227,35286,35287,35292,35296],{},[2245,35288,35289],{},[60,35290,35291],{},"tracker:position:visible",[2245,35293,35294],{},[60,35295,14955],{},[2245,35297,35298,30317],{},[60,35299,35300],{},"stringTune.PositionTrackerVisible",[2227,35302,35303,35307,35311],{},[2245,35304,35305],{},[60,35306,21569],{},[2245,35308,35309],{},[60,35310,21574],{},[2245,35312,35313],{},"Masonry shuffle starts",[2227,35315,35316,35320,35324],{},[2245,35317,35318],{},[60,35319,21584],{},[2245,35321,35322],{},[60,35323,21574],{},[2245,35325,35326],{},"Masonry shuffle ends",[37,35328,35330],{"id":35329},"object-lifecycle-channels","Object Lifecycle Channels",[30,35332,35333,35334,106],{},"These are keyed by object ID, so they depend on ",[60,35335,764],{},[2221,35337,35338,35348],{},[2224,35339,35340],{},[2227,35341,35342,35344,35346],{},[2230,35343,5602],{},[2230,35345,5605],{},[2230,35347,5608],{},[2240,35349,35350,35364],{},[2227,35351,35352,35357,35361],{},[2245,35353,35354],{},[60,35355,35356],{},"object:activate:\u003Cid>",[2245,35358,35359],{},[60,35360,14955],{},[2245,35362,35363],{},"Activation observer toggles the object",[2227,35365,35366,35371,35376],{},[2245,35367,35368],{},[60,35369,35370],{},"object:inview:\u003Cid>",[2245,35372,35373],{},[60,35374,35375],{},"{ inView, direction }",[2245,35377,35378],{},"In-view window changes",[30,35380,35381,35383],{},[60,35382,4217],{}," is one of:",[42,35385,35386,35391,35396,35401],{},[45,35387,35388],{},[60,35389,35390],{},"enter-top",[45,35392,35393],{},[60,35394,35395],{},"enter-bottom",[45,35397,35398],{},[60,35399,35400],{},"exit-top",[45,35402,35403],{},[60,35404,35405],{},"exit-bottom",[37,35407,35409],{"id":35408},"progress-and-motion-channels","Progress And Motion Channels",[2221,35411,35412,35422],{},[2224,35413,35414],{},[2227,35415,35416,35418,35420],{},[2230,35417,5602],{},[2230,35419,5605],{},[2230,35421,5608],{},[2240,35423,35424,35439,35454,35469,35484],{},[2227,35425,35426,35430,35434],{},[2245,35427,35428],{},[60,35429,799],{},[2245,35431,35432],{},[60,35433,5621],{},[2245,35435,35436,35438],{},[60,35437,190],{}," updates eased progress",[2227,35440,35441,35445,35449],{},[2245,35442,35443],{},[60,35444,6175],{},[2245,35446,35447],{},[60,35448,5621],{},[2245,35450,35451,35453],{},[60,35452,5216],{}," updates remapped slice progress",[2227,35455,35456,35460,35464],{},[2245,35457,35458],{},[60,35459,2894],{},[2245,35461,35462],{},[60,35463,5621],{},[2245,35465,35466,35468],{},[60,35467,5221],{}," recomputes translation",[2227,35470,35471,35475,35479],{},[2245,35472,35473],{},[60,35474,8033],{},[2245,35476,35477],{},[60,35478,5621],{},[2245,35480,35481,35483],{},[60,35482,5227],{}," applies a new lerp value",[2227,35485,35486,35490,35494],{},[2245,35487,35488],{},[60,35489,8534],{},[2245,35491,35492],{},[60,35493,5621],{},[2245,35495,35496,35498],{},[60,35497,5233],{}," recomputes the pixel translation",[30,35500,35501],{},"Important:",[42,35503,35504,35509,35513,35517,35521],{},[45,35505,35506,35508],{},[60,35507,799],{}," emits a plain number",[45,35510,35511,35508],{},[60,35512,6175],{},[45,35514,35515,35508],{},[60,35516,2894],{},[45,35518,35519,35508],{},[60,35520,8033],{},[45,35522,35523,35508],{},[60,35524,8534],{},[37,35526,35528],{"id":35527},"cursor-and-interaction-channels","Cursor And Interaction Channels",[2221,35530,35531,35541],{},[2224,35532,35533],{},[2227,35534,35535,35537,35539],{},[2230,35536,5602],{},[2230,35538,5605],{},[2230,35540,5608],{},[2240,35542,35543,35556,35569,35582,35595,35608,35621,35634,35647],{},[2227,35544,35545,35549,35553],{},[2245,35546,35547],{},[60,35548,11685],{},[2245,35550,35551],{},[60,35552,12088],{},[2245,35554,35555],{},"Cursor target tracking becomes active",[2227,35557,35558,35562,35566],{},[2245,35559,35560],{},[60,35561,11686],{},[2245,35563,35564],{},[60,35565,12102],{},[2245,35567,35568],{},"Target-local cursor coordinates change",[2227,35570,35571,35575,35579],{},[2245,35572,35573],{},[60,35574,11687],{},[2245,35576,35577],{},[60,35578,12102],{},[2245,35580,35581],{},"Target-local pixel coordinates change",[2227,35583,35584,35588,35592],{},[2245,35585,35586],{},[60,35587,11688],{},[2245,35589,35590],{},[60,35591,12088],{},[2245,35593,35594],{},"Cursor target tracking ends",[2227,35596,35597,35601,35605],{},[2245,35598,35599],{},[60,35600,13951],{},[2245,35602,35603],{},[60,35604,12102],{},[2245,35606,35607],{},"Magnetic offset changes",[2227,35609,35610,35614,35618],{},[2245,35611,35612],{},[60,35613,15997],{},[2245,35615,35616],{},[60,35617,16002],{},[2245,35619,35620],{},"Spotlight values change",[2227,35622,35623,35627,35631],{},[2245,35624,35625],{},[60,35626,14619],{},[2245,35628,35629],{},[60,35630,12102],{},[2245,35632,35633],{},"Impulse translation output changes",[2227,35635,35636,35640,35644],{},[2245,35637,35638],{},[60,35639,14620],{},[2245,35641,35642],{},[60,35643,15039],{},[2245,35645,35646],{},"Impulse rotation output changes",[2227,35648,35649,35653,35657],{},[2245,35650,35651],{},[60,35652,14621],{},[2245,35654,35655],{},[60,35656,15053],{},[2245,35658,35659],{},"Pointer side position across the element changes",[30,35661,35662],{},"The order for suffixed impulse channels is important:",[42,35664,35665,35669],{},[45,35666,35667],{},[60,35668,14619],{},[45,35670,35671,35672],{},"not ",[60,35673,35674],{},"object:impulse:move:\u003Cid>",[37,35676,35678],{"id":35677},"form-channels","Form Channels",[2221,35680,35681,35691],{},[2224,35682,35683],{},[2227,35684,35685,35687,35689],{},[2230,35686,5602],{},[2230,35688,5605],{},[2230,35690,5608],{},[2240,35692,35693,35706,35719,35732,35745],{},[2227,35694,35695,35699,35703],{},[2245,35696,35697],{},[60,35698,23233],{},[2245,35700,35701],{},[60,35702,23505],{},[2245,35704,35705],{},"Submit passes validation",[2227,35707,35708,35712,35716],{},[2245,35709,35710],{},[60,35711,23234],{},[2245,35713,35714],{},[60,35715,23519],{},[2245,35717,35718],{},"Submit fails validation",[2227,35720,35721,35725,35729],{},[2245,35722,35723],{},[60,35724,23529],{},[2245,35726,35727],{},[60,35728,23534],{},[2245,35730,35731],{},"Field becomes valid",[2227,35733,35734,35738,35742],{},[2245,35735,35736],{},[60,35737,23544],{},[2245,35739,35740],{},[60,35741,23534],{},[2245,35743,35744],{},"Field fails live validation",[2227,35746,35747,35751,35755],{},[2245,35748,35749],{},[60,35750,23558],{},[2245,35752,35753],{},[60,35754,23534],{},[2245,35756,35757],{},"Field fails submit validation",[30,35759,35760],{},"Form field channels are keyed by field key, not by form ID.",[37,35762,35764],{"id":35763},"local-object-events","Local Object Events",[30,35766,35767,35768,35771],{},"Some behavior in the runtime is local to ",[60,35769,35770],{},"StringObject.events",", not the global bus.",[30,35773,183],{},[42,35775,35776,35780],{},[45,35777,35778],{},[60,35779,13802],{},[45,35781,35782],{},[60,35783,13805],{},[30,35785,35786,35788,35789,106],{},[60,35787,5329],{}," uses those local object events internally. They are not consumed through ",[60,35790,35791],{},"stringTune.on(...)",[37,35793,35795],{"id":35794},"where-to-go-next","Where To Go Next",[42,35797,35798,35806,35812],{},[45,35799,35800,35801,35803,35804,106],{},"For ",[60,35802,764],{}," and object-scoped naming, see ",[133,35805,2887],{"href":2465},[45,35807,35808,35809,106],{},"For module-specific event contracts, use the relevant page in ",[133,35810,35811],{"href":158},"Built-in Modules",[45,35813,35814,35815,106],{},"For CSS output paired with these channels, see ",[133,35816,17405],{"href":8037},[410,35818,35819],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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);}",{"title":230,"searchDepth":258,"depth":258,"links":35821},[35822,35823,35824,35825,35826,35827,35828,35829,35830],{"id":35020,"depth":258,"text":35021},{"id":35046,"depth":258,"text":35047},{"id":35162,"depth":258,"text":35163},{"id":35329,"depth":258,"text":35330},{"id":35408,"depth":258,"text":35409},{"id":35527,"depth":258,"text":35528},{"id":35677,"depth":258,"text":35678},{"id":35763,"depth":258,"text":35764},{"id":35794,"depth":258,"text":35795},{"path":2463,"title":34395,"description":35832,"kind":34360,"section":34361,"order":819,"group":34362,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":35833,"attrs":35834,"events":35835,"cssVars":35836,"related":35837,"body":35838},"Global runtime settings, default values, and what each setting actually affects.",[2453,3263,11673,24796],[],[],[],[146,2464,3980],{"type":22,"value":35839,"toc":35899},[35840,35843,35848,35852,35879,35883],[25,35841,34395],{"id":35842},"settings-reference",[30,35844,35845,35846,106],{},"Global settings are configured through ",[60,35847,28746],{},[37,35849,35851],{"id":35850},"notable-defaults","Notable defaults",[42,35853,35854,35861,35867,35873],{},[45,35855,35856,35858,35859],{},[60,35857,11673],{},": default runtime value is ",[60,35860,2527],{},[45,35862,35863,35858,35865],{},[60,35864,24796],{},[60,35866,2537],{},[45,35868,35869,35858,35871],{},[60,35870,34917],{},[60,35872,4301],{},[45,35874,35875,35858,35877],{},[60,35876,34922],{},[60,35878,4301],{},[37,35880,35882],{"id":35881},"important-notes","Important notes",[42,35884,35885,35893,35896],{},[45,35886,35887,35889,35890,35892],{},[60,35888,205],{}," reads loading timeout from runtime settings, not from a ",[60,35891,24870],{}," DOM attribute.",[45,35894,35895],{},"mobile scroll mode switching is width-based in the runtime, not a generic touch-device detector.",[45,35897,35898],{},"settings are global; they are not a substitute for per-module declarative attributes.",{"title":230,"searchDepth":258,"depth":258,"links":35900},[35901,35902],{"id":35850,"depth":258,"text":35851},{"id":35881,"depth":258,"text":35882},{"path":2464,"title":34400,"description":35904,"kind":34360,"section":34361,"order":1908,"group":34362,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":35905,"attrs":35906,"events":35907,"cssVars":35908,"related":35909,"body":35910},"Reference for shared declarative attributes used across built-in modules.",[764,2457,2458],[],[],[],[146,2465,8037],{"type":22,"value":35911,"toc":36426},[35912,35914,35917,35927,35931,35934,35944,35946,35987,35993,35995,36038,36042,36125,36128,36146,36150,36160,36292,36295,36299,36368,36372,36405,36407,36424],[25,35913,34400],{"id":2828},[30,35915,35916],{},"This page is for attributes that are shared by the core runtime or by multiple built-in modules.",[30,35918,35919,35920,1833,35922,2703,35924,35926],{},"Module-specific inputs such as ",[60,35921,7124],{},[60,35923,13949],{},[60,35925,23254],{}," still belong on their own module pages.",[37,35928,35930],{"id":35929},"reading-model","Reading Model",[30,35932,35933],{},"The runtime reads both of these forms:",[42,35935,35936,35940],{},[45,35937,35938],{},[60,35939,2042],{},[45,35941,35942],{},[60,35943,2050],{},[30,35945,183],{},[225,35947,35949],{"className":338,"code":35948,"language":340,"meta":230,"style":230},"\u003Csection string=\"progress\">\u003C/section>\n\u003Csection data-string=\"progress\">\u003C/section>\n",[60,35950,35951,35969],{"__ignoreMap":230},[234,35952,35953,35955,35957,35959,35961,35963,35965,35967],{"class":236,"line":237},[234,35954,347],{"class":244},[234,35956,740],{"class":350},[234,35958,354],{"class":281},[234,35960,357],{"class":244},[234,35962,360],{"class":251},[234,35964,371],{"class":244},[234,35966,740],{"class":350},[234,35968,376],{"class":244},[234,35970,35971,35973,35975,35977,35979,35981,35983,35985],{"class":236,"line":258},[234,35972,347],{"class":244},[234,35974,740],{"class":350},[234,35976,2017],{"class":281},[234,35978,357],{"class":244},[234,35980,360],{"class":251},[234,35982,371],{"class":244},[234,35984,740],{"class":350},[234,35986,376],{"class":244},[30,35988,35989,35990,35992],{},"For token lists, the runtime uses ",[60,35991,1128],{}," as the separator.",[30,35994,183],{},[225,35996,35998],{"className":338,"code":35997,"language":340,"meta":230,"style":230},"\u003Cdiv string=\"progress|parallax\">\u003C/div>\n\u003Cdiv string-copy-from=\"hero|sidebar-progress\">\u003C/div>\n",[60,35999,36000,36019],{"__ignoreMap":230},[234,36001,36002,36004,36006,36008,36010,36013,36015,36017],{"class":236,"line":237},[234,36003,347],{"class":244},[234,36005,351],{"class":350},[234,36007,354],{"class":281},[234,36009,357],{"class":244},[234,36011,36012],{"class":251},"\"progress|parallax\"",[234,36014,371],{"class":244},[234,36016,351],{"class":350},[234,36018,376],{"class":244},[234,36020,36021,36023,36025,36027,36029,36032,36034,36036],{"class":236,"line":258},[234,36022,347],{"class":244},[234,36024,351],{"class":350},[234,36026,3179],{"class":281},[234,36028,357],{"class":244},[234,36030,36031],{"class":251},"\"hero|sidebar-progress\"",[234,36033,371],{"class":244},[234,36035,351],{"class":350},[234,36037,376],{"class":244},[37,36039,36041],{"id":36040},"identity-and-routing","Identity And Routing",[2221,36043,36044,36056],{},[2224,36045,36046],{},[2227,36047,36048,36050,36052,36054],{},[2230,36049,4914],{},[2230,36051,23270],{},[2230,36053,4920],{},[2230,36055,5424],{},[2240,36057,36058,36073,36090,36104],{},[2227,36059,36060,36064,36067,36070],{},[2245,36061,36062],{},[60,36063,2252],{},[2245,36065,36066],{},"managed element",[2245,36068,36069],{},"required for element modules",[2245,36071,36072],{},"Declares which element modules can connect to the element. The value is split by `",[2227,36074,36075,36079,36081,36087],{},[2245,36076,36077],{},[60,36078,764],{},[2245,36080,36066],{},[2245,36082,36083,36084],{},"auto-generated ",[60,36085,36086],{},"string-N",[2245,36088,36089],{},"Gives the object a stable runtime ID. Object-scoped events use this ID.",[2227,36091,36092,36096,36099,36101],{},[2245,36093,36094],{},[60,36095,2457],{},[2245,36097,36098],{},"mirror element",[2245,36100,1774],{},[2245,36102,36103],{},"Links the element to one or more source objects. Mirror outputs are copied from those source IDs.",[2227,36105,36106,36110,36113,36120],{},[2245,36107,36108],{},[60,36109,5375],{},[2245,36111,36112],{},"modules that expose named CSS output",[2245,36114,36115,36116,9057,36118],{},"global setting ",[60,36117,29452],{},[60,36119,795],{},[2245,36121,36122,36123,106],{},"Routes a module output into a custom CSS variable name. Most commonly used by ",[60,36124,190],{},[30,36126,36127],{},"Important behavior:",[42,36129,36130,36135,36143],{},[45,36131,36132,36134],{},[60,36133,764],{}," is written back to the DOM when the runtime auto-generates one.",[45,36136,36137,36139,36140,36142],{},[60,36138,2457],{}," is also split by ",[60,36141,1128],{},", so one mirror element can follow multiple source IDs.",[45,36144,36145],{},"Mirrors are separate elements. They do not become managed source objects by themselves.",[37,36147,36149],{"id":36148},"shared-geometry","Shared Geometry",[30,36151,36152,36153,36155,36156,137,36158,106],{},"These attributes come from ",[60,36154,2379],{}," and affect the shared object timeline used by modules such as ",[60,36157,190],{},[60,36159,5221],{},[2221,36161,36162,36172],{},[2224,36163,36164],{},[2227,36165,36166,36168,36170],{},[2230,36167,4914],{},[2230,36169,4920],{},[2230,36171,5424],{},[2240,36173,36174,36187,36200,36219,36237,36250,36265,36278],{},[2227,36175,36176,36180,36184],{},[2245,36177,36178],{},[60,36179,5377],{},[2245,36181,36182],{},[60,36183,5472],{},[2245,36185,36186],{},"Moves the effective end of the object timeline.",[2227,36188,36189,36193,36197],{},[2245,36190,36191],{},[60,36192,5378],{},[2245,36194,36195],{},[60,36196,5472],{},[2245,36198,36199],{},"Moves the effective start of the object timeline.",[2227,36201,36202,36207,36211],{},[2245,36203,36204],{},[60,36205,36206],{},"string-inview-top",[2245,36208,36209],{},[60,36210,5472],{},[2245,36212,36213,36214,137,36216,106],{},"Shifts the in-view start boundary used for ",[60,36215,35370],{},[60,36217,36218],{},"-inview",[2227,36220,36221,36226,36230],{},[2245,36222,36223],{},[60,36224,36225],{},"string-inview-bottom",[2245,36227,36228],{},[60,36229,5472],{},[2245,36231,36232,36233,137,36235,106],{},"Shifts the in-view end boundary used for ",[60,36234,35370],{},[60,36236,36218],{},[2227,36238,36239,36243,36247],{},[2245,36240,36241],{},[60,36242,3325],{},[2245,36244,36245],{},[60,36246,4769],{},[2245,36248,36249],{},"Selects the object edge used for timeline start.",[2227,36251,36252,36256,36260],{},[2245,36253,36254],{},[60,36255,3341],{},[2245,36257,36258],{},[60,36259,5518],{},[2245,36261,36262,36263,106],{},"Selects the viewport edge paired with ",[60,36264,3325],{},[2227,36266,36267,36271,36275],{},[2245,36268,36269],{},[60,36270,3328],{},[2245,36272,36273],{},[60,36274,5518],{},[2245,36276,36277],{},"Selects the object edge used for timeline end.",[2227,36279,36280,36284,36288],{},[2245,36281,36282],{},[60,36283,3344],{},[2245,36285,36286],{},[60,36287,4769],{},[2245,36289,36262,36290,106],{},[60,36291,3328],{},[30,36293,36294],{},"These values are parsed once into numeric positions during object initialization and rebuilds. They do not directly write styles.",[37,36296,36298],{"id":36297},"shared-behavior-flags","Shared Behavior Flags",[2221,36300,36301,36311],{},[2224,36302,36303],{},[2227,36304,36305,36307,36309],{},[2230,36306,4914],{},[2230,36308,4920],{},[2230,36310,5424],{},[2240,36312,36313,36326,36343,36357],{},[2227,36314,36315,36319,36323],{},[2245,36316,36317],{},[60,36318,2459],{},[2245,36320,36321],{},[60,36322,2715],{},[2245,36324,36325],{},"Prevents module style and variable writes on the source element. Mirrors can still receive mirrored output.",[2227,36327,36328,36333,36337],{},[2245,36329,36330],{},[60,36331,36332],{},"string-repeat",[2245,36334,36335],{},[60,36336,2715],{},[2245,36338,36339,36340,36342],{},"Allows ",[60,36341,36218],{}," class removal when the object leaves its in-view window.",[2227,36344,36345,36350,36354],{},[2245,36346,36347],{},[60,36348,36349],{},"string-outside-container",[2245,36351,36352],{},[60,36353,2715],{},[2245,36355,36356],{},"Forces the object activation observer to use the window root instead of the current custom scroll container.",[2227,36358,36359,36363,36365],{},[2245,36360,36361],{},[60,36362,2458],{},[2245,36364,16944],{},[2245,36366,36367],{},"Marks the element as fixed for object-manager mutation handling. This is an advanced runtime flag, not a normal animation setting.",[37,36369,36371],{"id":36370},"practical-notes","Practical Notes",[42,36373,36374,36381,36395,36400],{},[45,36375,36376,36378,36379,22343],{},[60,36377,764],{}," matters whenever you consume ",[60,36380,34980],{},[45,36382,36383,36385,36386,1833,36388,1833,36390,1833,36392,36394],{},[60,36384,2457],{}," matters only for modules that actually mirror output. ",[60,36387,190],{},[60,36389,5227],{},[60,36391,5233],{},[60,36393,5239],{},", and cursor target variables are examples.",[45,36396,36397,36399],{},[60,36398,5375],{}," does not invent new output by itself. It only renames module output that already exists.",[45,36401,36402,36404],{},[60,36403,2458],{}," is easy to overuse. Most normal module elements should not need it.",[37,36406,35795],{"id":35794},[42,36408,36409,36414,36419],{},[45,36410,36411,36412,106],{},"For module-specific inputs, go to the relevant module page in ",[133,36413,35811],{"href":158},[45,36415,36416,36417,106],{},"For outputs written by those attributes, see ",[133,36418,17405],{"href":8037},[45,36420,36421,36422,106],{},"For ID-driven integration, see ",[133,36423,2887],{"href":2465},[410,36425,13728],{},{"title":230,"searchDepth":258,"depth":258,"links":36427},[36428,36429,36430,36431,36432,36433],{"id":35929,"depth":258,"text":35930},{"id":36040,"depth":258,"text":36041},{"id":36148,"depth":258,"text":36149},{"id":36297,"depth":258,"text":36298},{"id":36370,"depth":258,"text":36371},{"id":35794,"depth":258,"text":35795},{"path":8037,"title":17405,"description":36435,"kind":34360,"section":34361,"order":4298,"group":34362,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":36436,"attrs":36437,"events":36438,"cssVars":36439,"related":36440,"body":36441},"Variables written by built-in modules and how they are intended to be consumed.",[],[],[],[],[2464,617,5260],{"type":22,"value":36442,"toc":37317},[36443,36445,36448,36451,36453,36456,36458,36491,36498,36502,36592,36596,36601,36769,36773,36778,36860,36864,36985,36989,36994,37096,37102,37106,37109,37290,37292,37314],[25,36444,17405],{"id":17404},[30,36446,36447],{},"This page covers public CSS variables that are intentionally usable from your own CSS.",[30,36449,36450],{},"If a module only writes inline styles, classes, or DOM attributes, it does not belong here.",[37,36452,35021],{"id":35020},[30,36454,36455],{},"Not every built-in module writes CSS variables.",[30,36457,183],{},[42,36459,36460,36467,36473,36478],{},[45,36461,36462,36464,36465],{},[60,36463,5221],{}," writes inline ",[60,36466,4642],{},[45,36468,36469,36464,36471],{},[60,36470,5239],{},[60,36472,9021],{},[45,36474,36475,36477],{},[60,36476,5312],{}," writes classes and error DOM",[45,36479,36480,1833,36482,1833,36484,1833,36486,7048,36488,36490],{},[60,36481,205],{},[60,36483,5323],{},[60,36485,200],{},[60,36487,5244],{},[60,36489,5249],{}," do not expose public CSS variable output",[30,36492,36493,36494,36497],{},"There is no public ",[60,36495,36496],{},"--parallax"," variable in the current runtime.",[37,36499,36501],{"id":36500},"scroll-progress-and-motion","Scroll Progress And Motion",[2221,36503,36504,36517],{},[2224,36505,36506],{},[2227,36507,36508,36510,36513,36515],{},[2230,36509,17425],{},[2230,36511,36512],{},"Written by",[2230,36514,18359],{},[2230,36516,2238],{},[2240,36518,36519,36540,36558,36574],{},[2227,36520,36521,36525,36530,36535],{},[2245,36522,36523],{},[60,36524,795],{},[2245,36526,36527,36529],{},[60,36528,190],{}," by default",[2245,36531,36532,36533,1474],{},"eased ",[60,36534,5394],{},[2245,36536,36537,36538,106],{},"The actual variable name can be changed with ",[60,36539,5375],{},[2227,36541,36542,36546,36550,36555],{},[2245,36543,36544],{},[60,36545,6177],{},[2245,36547,36548],{},[60,36549,5216],{},[2245,36551,36552,36553,1474],{},"remapped ",[60,36554,5394],{},[2245,36556,36557],{},"Written directly on the slice element.",[2227,36559,36560,36564,36568,36571],{},[2245,36561,36562],{},[60,36563,8035],{},[2245,36565,36566],{},[60,36567,5227],{},[2245,36569,36570],{},"scroll lerp delta",[2245,36572,36573],{},"Written to the source element and mirrors.",[2227,36575,36576,36580,36584,36587],{},[2245,36577,36578],{},[60,36579,8536],{},[2245,36581,36582],{},[60,36583,5233],{},[2245,36585,36586],{},"normalized displacement value",[2245,36588,36589,36590,106],{},"Written to the source element and mirrors. The same module also writes inline ",[60,36591,4642],{},[37,36593,36595],{"id":36594},"cursor-target-variables","Cursor Target Variables",[30,36597,36598,36599,106],{},"These variables are written to elements marked with ",[60,36600,11722],{},[2221,36602,36603,36615],{},[2224,36604,36605],{},[2227,36606,36607,36609,36611,36613],{},[2230,36608,17425],{},[2230,36610,36512],{},[2230,36612,18359],{},[2230,36614,2238],{},[2240,36616,36617,36635,36652,36674,36693,36712,36731,36750],{},[2227,36618,36619,36623,36627,36630],{},[2245,36620,36621],{},[60,36622,1830],{},[2245,36624,36625],{},[60,36626,195],{},[2245,36628,36629],{},"local horizontal cursor position",[2245,36631,36632,36633,106],{},"Meaning depends on ",[60,36634,11683],{},[2227,36636,36637,36641,36645,36648],{},[2245,36638,36639],{},[60,36640,1860],{},[2245,36642,36643],{},[60,36644,195],{},[2245,36646,36647],{},"local vertical cursor position",[2245,36649,36632,36650,106],{},[60,36651,11683],{},[2227,36653,36654,36658,36663,36666],{},[2245,36655,36656],{},[60,36657,11692],{},[2245,36659,36660,36662],{},[60,36661,195],{}," when enabled",[2245,36664,36665],{},"local pixel X",[2245,36667,36668,36669,36671,36672,106],{},"Only written if ",[60,36670,11682],{}," requests ",[60,36673,11826],{},[2227,36675,36676,36680,36684,36687],{},[2245,36677,36678],{},[60,36679,11693],{},[2245,36681,36682,36662],{},[60,36683,195],{},[2245,36685,36686],{},"local pixel Y",[2245,36688,36668,36689,36671,36691,106],{},[60,36690,11682],{},[60,36692,11829],{},[2227,36694,36695,36699,36703,36706],{},[2245,36696,36697],{},[60,36698,11694],{},[2245,36700,36701,36662],{},[60,36702,195],{},[2245,36704,36705],{},"local X delta",[2245,36707,36668,36708,36671,36710,106],{},[60,36709,11682],{},[60,36711,11832],{},[2227,36713,36714,36718,36722,36725],{},[2245,36715,36716],{},[60,36717,11695],{},[2245,36719,36720,36662],{},[60,36721,195],{},[2245,36723,36724],{},"local Y delta",[2245,36726,36668,36727,36671,36729,106],{},[60,36728,11682],{},[60,36730,11835],{},[2227,36732,36733,36737,36741,36744],{},[2245,36734,36735],{},[60,36736,11696],{},[2245,36738,36739,36662],{},[60,36740,195],{},[2245,36742,36743],{},"movement angle in radians",[2245,36745,36668,36746,36671,36748,106],{},[60,36747,11682],{},[60,36749,11838],{},[2227,36751,36752,36756,36760,36763],{},[2245,36753,36754],{},[60,36755,11697],{},[2245,36757,36758,36662],{},[60,36759,195],{},[2245,36761,36762],{},"movement angle in degrees",[2245,36764,36668,36765,36671,36767,106],{},[60,36766,11682],{},[60,36768,11841],{},[37,36770,36772],{"id":36771},"cursor-portal-variables","Cursor Portal Variables",[30,36774,36775,36776,106],{},"These variables are written to floating portal elements marked with ",[60,36777,11728],{},[2221,36779,36780,36792],{},[2224,36781,36782],{},[2227,36783,36784,36786,36788,36790],{},[2230,36785,17425],{},[2230,36787,36512],{},[2230,36789,18359],{},[2230,36791,2238],{},[2240,36793,36794,36813,36829,36845],{},[2227,36795,36796,36800,36804,36807],{},[2245,36797,36798],{},[60,36799,1830],{},[2245,36801,36802],{},[60,36803,195],{},[2245,36805,36806],{},"viewport X position",[2245,36808,36809,36810,106],{},"Consume with pixel math such as ",[60,36811,36812],{},"translate3d(calc(var(--x) * 1px), ...)",[2227,36814,36815,36819,36823,36826],{},[2245,36816,36817],{},[60,36818,1860],{},[2245,36820,36821],{},[60,36822,195],{},[2245,36824,36825],{},"viewport Y position",[2245,36827,36828],{},"Consume with pixel math.",[2227,36830,36831,36835,36839,36842],{},[2245,36832,36833],{},[60,36834,11690],{},[2245,36836,36837],{},[60,36838,195],{},[2245,36840,36841],{},"portal follow velocity on X",[2245,36843,36844],{},"Smoothed portal motion, not target-local motion.",[2227,36846,36847,36851,36855,36858],{},[2245,36848,36849],{},[60,36850,11691],{},[2245,36852,36853],{},[60,36854,195],{},[2245,36856,36857],{},"portal follow velocity on Y",[2245,36859,36844],{},[37,36861,36863],{"id":36862},"interaction-variables","Interaction Variables",[2221,36865,36866,36878],{},[2224,36867,36868],{},[2227,36869,36870,36872,36874,36876],{},[2230,36871,17425],{},[2230,36873,36512],{},[2230,36875,18359],{},[2230,36877,2238],{},[2240,36879,36880,36895,36910,36925,36940,36955,36970],{},[2227,36881,36882,36886,36890,36893],{},[2245,36883,36884],{},[60,36885,13953],{},[2245,36887,36888],{},[60,36889,5266],{},[2245,36891,36892],{},"smoothed X offset",[2245,36894,36573],{},[2227,36896,36897,36901,36905,36908],{},[2245,36898,36899],{},[60,36900,13954],{},[2245,36902,36903],{},[60,36904,5266],{},[2245,36906,36907],{},"smoothed Y offset",[2245,36909,36573],{},[2227,36911,36912,36916,36920,36923],{},[2245,36913,36914],{},[60,36915,14623],{},[2245,36917,36918],{},[60,36919,5272],{},[2245,36921,36922],{},"translated X offset",[2245,36924,36573],{},[2227,36926,36927,36931,36935,36938],{},[2245,36928,36929],{},[60,36930,14624],{},[2245,36932,36933],{},[60,36934,5272],{},[2245,36936,36937],{},"translated Y offset",[2245,36939,36573],{},[2227,36941,36942,36946,36950,36953],{},[2245,36943,36944],{},[60,36945,14625],{},[2245,36947,36948],{},[60,36949,5272],{},[2245,36951,36952],{},"rotation in degrees",[2245,36954,36573],{},[2227,36956,36957,36961,36965,36968],{},[2245,36958,36959],{},[60,36960,15834],{},[2245,36962,36963],{},[60,36964,5278],{},[2245,36966,36967],{},"angle in degrees",[2245,36969,36573],{},[2227,36971,36972,36976,36980,36983],{},[2245,36973,36974],{},[60,36975,15835],{},[2245,36977,36978],{},[60,36979,5278],{},[2245,36981,36982],{},"pointer distance",[2245,36984,36573],{},[37,36986,36988],{"id":36987},"text-split-variables","Text Split Variables",[30,36990,36991,36993],{},[60,36992,5290],{}," writes variables to generated wrappers and sometimes to the source element itself.",[2221,36995,36996,37008],{},[2224,36997,36998],{},[2227,36999,37000,37003,37005],{},[2230,37001,37002],{},"Variable family",[2230,37004,36512],{},[2230,37006,37007],{},"Surface",[2240,37009,37010,37027,37043,37059,37075],{},[2227,37011,37012,37018,37022],{},[2245,37013,37014,1833,37016],{},[60,37015,17319],{},[60,37017,17445],{},[2245,37019,37020],{},[60,37021,5290],{},[2245,37023,37024,37025,17023],{},"generated ",[60,37026,17022],{},[2227,37028,37029,37035,37039],{},[2245,37030,37031,1833,37033],{},[60,37032,17497],{},[60,37034,17507],{},[2245,37036,37037],{},[60,37038,5290],{},[2245,37040,37024,37041,17023],{},[60,37042,17035],{},[2227,37044,37045,37051,37055],{},[2245,37046,37047,1833,37049],{},[60,37048,17343],{},[60,37050,17553],{},[2245,37052,37053],{},[60,37054,5290],{},[2245,37056,37024,37057,17023],{},[60,37058,17061],{},[2227,37060,37061,37069,37073],{},[2245,37062,37063,1833,37065,1833,37067],{},[60,37064,17591],{},[60,37066,17601],{},[60,37068,17611],{},[2245,37070,37071],{},[60,37072,5290],{},[2245,37074,20058],{},[2227,37076,37077,37085,37093],{},[2245,37078,37079,1833,37081,1833,37083],{},[60,37080,17455],{},[60,37082,17630],{},[60,37084,17639],{},[2245,37086,37087,37089,37090,37092],{},[60,37088,5290],{}," when ",[60,37091,17094],{}," is active",[2245,37094,37095],{},"source element and fit-aware wrappers",[30,37097,37098,37099,37101],{},"Because ",[60,37100,5290],{}," rebuilds DOM, those variables are tied to generated wrapper nodes, not only to the original source element.",[37,37103,37105],{"id":37104},"consumption-patterns","Consumption Patterns",[30,37107,37108],{},"Typical usage looks like this:",[225,37110,37112],{"className":5857,"code":37111,"language":5859,"meta":230,"style":230},".card {\n  transform: translateY(calc(var(--glide, 0) * 32px));\n}\n\n.cursor-target {\n  transform: translate(\n    calc(var(--magnetic-x, 0) * 1px),\n    calc(var(--magnetic-y, 0) * 1px)\n  );\n}\n\n.progress-rotate {\n  transform: rotate(calc(var(--progress, 0) * 1turn));\n}\n",[60,37113,37114,37121,37156,37160,37164,37171,37181,37207,37233,37237,37241,37245,37252,37286],{"__ignoreMap":230},[234,37115,37116,37119],{"class":236,"line":237},[234,37117,37118],{"class":281},".card",[234,37120,909],{"class":244},[234,37122,37123,37125,37127,37129,37131,37133,37135,37137,37139,37141,37143,37145,37147,37149,37152,37154],{"class":236,"line":258},[234,37124,1810],{"class":271},[234,37126,1443],{"class":244},[234,37128,17253],{"class":271},[234,37130,329],{"class":244},[234,37132,1820],{"class":271},[234,37134,329],{"class":244},[234,37136,1825],{"class":271},[234,37138,329],{"class":244},[234,37140,8536],{"class":899},[234,37142,1833],{"class":244},[234,37144,1836],{"class":271},[234,37146,903],{"class":244},[234,37148,1841],{"class":240},[234,37150,37151],{"class":271}," 32",[234,37153,1789],{"class":240},[234,37155,1875],{"class":244},[234,37157,37158],{"class":236,"line":265},[234,37159,1143],{"class":244},[234,37161,37162],{"class":236,"line":288},[234,37163,262],{"emptyLinePlaceholder":261},[234,37165,37166,37169],{"class":236,"line":293},[234,37167,37168],{"class":281},".cursor-target",[234,37170,909],{"class":244},[234,37172,37173,37175,37177,37179],{"class":236,"line":305},[234,37174,1810],{"class":271},[234,37176,1443],{"class":244},[234,37178,1815],{"class":271},[234,37180,7773],{"class":244},[234,37182,37183,37185,37187,37189,37191,37193,37195,37197,37199,37201,37203,37205],{"class":236,"line":321},[234,37184,14440],{"class":271},[234,37186,329],{"class":244},[234,37188,1825],{"class":271},[234,37190,329],{"class":244},[234,37192,13953],{"class":899},[234,37194,1833],{"class":244},[234,37196,1836],{"class":271},[234,37198,903],{"class":244},[234,37200,1841],{"class":240},[234,37202,1844],{"class":271},[234,37204,1789],{"class":240},[234,37206,14463],{"class":244},[234,37208,37209,37211,37213,37215,37217,37219,37221,37223,37225,37227,37229,37231],{"class":236,"line":946},[234,37210,14440],{"class":271},[234,37212,329],{"class":244},[234,37214,1825],{"class":271},[234,37216,329],{"class":244},[234,37218,13954],{"class":899},[234,37220,1833],{"class":244},[234,37222,1836],{"class":271},[234,37224,903],{"class":244},[234,37226,1841],{"class":240},[234,37228,1844],{"class":271},[234,37230,1789],{"class":240},[234,37232,8394],{"class":244},[234,37234,37235],{"class":236,"line":955},[234,37236,7829],{"class":244},[234,37238,37239],{"class":236,"line":11},[234,37240,1143],{"class":244},[234,37242,37243],{"class":236,"line":980},[234,37244,262],{"emptyLinePlaceholder":261},[234,37246,37247,37250],{"class":236,"line":994},[234,37248,37249],{"class":281},".progress-rotate",[234,37251,909],{"class":244},[234,37253,37254,37256,37258,37260,37262,37264,37266,37268,37270,37272,37274,37276,37278,37280,37282,37284],{"class":236,"line":1000},[234,37255,1810],{"class":271},[234,37257,1443],{"class":244},[234,37259,6039],{"class":271},[234,37261,329],{"class":244},[234,37263,1820],{"class":271},[234,37265,329],{"class":244},[234,37267,1825],{"class":271},[234,37269,329],{"class":244},[234,37271,795],{"class":899},[234,37273,1833],{"class":244},[234,37275,1836],{"class":271},[234,37277,903],{"class":244},[234,37279,1841],{"class":240},[234,37281,1844],{"class":271},[234,37283,6064],{"class":240},[234,37285,1875],{"class":244},[234,37287,37288],{"class":236,"line":1005},[234,37289,1143],{"class":244},[37,37291,35795],{"id":35794},[42,37293,37294,37299,37309],{},[45,37295,37296,37297,106],{},"For event payloads paired with these variables, see ",[133,37298,34390],{"href":2899},[45,37300,37301,37302,137,37304,37306,37307,106],{},"For routing and mirror-related input such as ",[60,37303,5375],{},[60,37305,2457],{},", see ",[133,37308,34400],{"href":2464},[45,37310,37311,37312,106],{},"For full per-module output contracts, use the relevant module pages in ",[133,37313,35811],{"href":158},[410,37315,37316],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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);}",{"title":230,"searchDepth":258,"depth":258,"links":37318},[37319,37320,37321,37322,37323,37324,37325,37326],{"id":35020,"depth":258,"text":35021},{"id":36500,"depth":258,"text":36501},{"id":36594,"depth":258,"text":36595},{"id":36771,"depth":258,"text":36772},{"id":36862,"depth":258,"text":36863},{"id":36987,"depth":258,"text":36988},{"id":37104,"depth":258,"text":37105},{"id":35794,"depth":258,"text":35795},{"path":34415,"title":34416,"description":37328,"kind":34360,"section":34361,"order":4605,"group":34408,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":37329,"attrs":37330,"events":37331,"cssVars":37332,"related":37333,"body":37334},"Map of public utility exports and internal runtime helpers around the StringTune core.",[2379,28055,2384,2389,4655],[],[],[],[9008,28149,32315],{"type":22,"value":37335,"toc":37425},[37336,37339,37342,37345,37349,37367,37370,37374,37396,37399,37401,37404,37422],[25,37337,34416],{"id":37338},"utilities-overview",[30,37340,37341],{},"This group covers utility-like primitives around the runtime.",[30,37343,37344],{},"Some of them are public exports meant for advanced integrations. Others are internal helpers documented here only so the runtime is understandable.",[37,37346,37348],{"id":37347},"public-utility-exports","Public utility exports",[42,37350,37351,37355,37359,37363],{},[45,37352,37353],{},[133,37354,2389],{"href":4614},[45,37356,37357],{},[133,37358,4655],{"href":4615},[45,37360,37361],{},[133,37362,28077],{"href":4616},[45,37364,37365],{},[133,37366,34434],{"href":34433},[30,37368,37369],{},"These are the utility primitives that matter most for custom authoring and deeper integrations.",[37,37371,37373],{"id":37372},"internal-runtime-helpers","Internal runtime helpers",[42,37375,37376,37380,37384,37388,37392],{},[45,37377,37378],{},[133,37379,34440],{"href":34439},[45,37381,37382],{},[133,37383,34446],{"href":34445},[45,37385,37386],{},[133,37387,34452],{"href":34451},[45,37389,37390],{},[133,37391,34457],{"href":13750},[45,37393,37394],{},[133,37395,34463],{"href":34462},[30,37397,37398],{},"These are useful as runtime reference, but they should not automatically be treated as stable public API just because they exist in the source tree.",[37,37400,29233],{"id":29232},[30,37402,37403],{},"If you are building against the package, prefer:",[42,37405,37406,37410,37414,37418],{},[45,37407,37408],{},[60,37409,2389],{},[45,37411,37412],{},[60,37413,4655],{},[45,37415,37416],{},[60,37417,28077],{},[45,37419,37420],{},[60,37421,34434],{},[30,37423,37424],{},"If you are reading the internal helpers, do it to understand the current runtime behavior, not to assume long-term package guarantees.",{"title":230,"searchDepth":258,"depth":258,"links":37426},[37427,37428,37429],{"id":37347,"depth":258,"text":37348},{"id":37372,"depth":258,"text":37373},{"id":29232,"depth":258,"text":29233},{"path":4614,"title":2389,"description":37431,"kind":34360,"section":34361,"order":31392,"group":34408,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":37432,"attrs":37434,"events":37435,"cssVars":37436,"related":37437,"body":37438},"Read/write scheduler used by the runtime to separate measure and mutate work.",[4608,4607,37433],"flush",[],[],[],[4602,4615,28149],{"type":22,"value":37439,"toc":37622},[37440,37443,37448,37458,37462,37467,37470,37473,37479,37485,37488,37492,37530,37533,37536,37566,37570,37572,37583,37587,37590,37604,37609,37613,37619],[25,37441,2389],{"id":37442},"framedom",[30,37444,37445,37447],{},[60,37446,2389],{}," is a tiny scheduler with two queues:",[42,37449,37450,37454],{},[45,37451,37452],{},[60,37453,32231],{},[45,37455,37456],{},[60,37457,32236],{},[37,37459,37461],{"id":37460},"public-status","Public status",[30,37463,37464,37466],{},[60,37465,2389],{}," is exported by the package root and is valid advanced integration surface.",[37,37468,18189],{"id":37469},"what-it-does",[30,37471,37472],{},"It lets code queue work into two phases:",[99,37474,37475,37477],{},[45,37476,4608],{},[45,37478,4607],{},[30,37480,37481,37482,37484],{},"Then ",[60,37483,32241],{}," runs the measure queue first and the mutate queue second.",[30,37486,37487],{},"That is the same read/write split the main runtime uses.",[37,37489,37491],{"id":37490},"api-shape","API shape",[225,37493,37495],{"className":227,"code":37494,"language":229,"meta":230,"style":230},"frameDOM.measure(() => {});\nframeDOM.mutate(() => {});\nframeDOM.flush();\n",[60,37496,37497,37510,37522],{"__ignoreMap":230},[234,37498,37499,37501,37503,37505,37507],{"class":236,"line":237},[234,37500,4703],{"class":244},[234,37502,4608],{"class":281},[234,37504,1505],{"class":244},[234,37506,906],{"class":240},[234,37508,37509],{"class":244}," {});\n",[234,37511,37512,37514,37516,37518,37520],{"class":236,"line":258},[234,37513,4703],{"class":244},[234,37515,4607],{"class":281},[234,37517,1505],{"class":244},[234,37519,906],{"class":240},[234,37521,37509],{"class":244},[234,37523,37524,37526,37528],{"class":236,"line":265},[234,37525,4703],{"class":244},[234,37527,37433],{"class":281},[234,37529,285],{"class":244},[37,37531,37532],{"id":3080},"How it works",[30,37534,37535],{},"Important current behavior:",[42,37537,37538,37547,37553,37558],{},[45,37539,37540,137,37543,37546],{},[60,37541,37542],{},"measure(...)",[60,37544,37545],{},"mutate(...)"," only queue work",[45,37548,37549,37552],{},[60,37550,37551],{},"schedule()"," just marks the scheduler as dirty",[45,37554,37555,37556],{},"actual execution happens on ",[60,37557,32241],{},[45,37559,37560,37561,37563,37564],{},"the main ",[60,37562,28],{}," loop already calls ",[60,37565,32241],{},[37,37567,37569],{"id":37568},"when-to-use-it","When to use it",[30,37571,31703],{},[42,37573,37574,37577,37580],{},[45,37575,37576],{},"you need extra DOM reads outside a module hook",[45,37578,37579],{},"you need extra DOM writes outside a module hook",[45,37581,37582],{},"you want custom code to stay aligned with the runtime’s phase order",[37,37584,37586],{"id":37585},"when-not-to-use-it","When not to use it",[30,37588,37589],{},"If you are already inside:",[42,37591,37592,37596,37600],{},[45,37593,37594],{},[60,37595,30473],{},[45,37597,37598],{},[60,37599,30476],{},[45,37601,37602],{},[60,37603,30482],{},[30,37605,37606,37607,106],{},"then you usually do not need to queue more work through ",[60,37608,2389],{},[37,37610,37612],{"id":37611},"practical-note","Practical note",[30,37614,37615,37616,37618],{},"For most modules, lifecycle hooks are the main integration surface and ",[60,37617,2389],{}," is the escape hatch.",[410,37620,37621],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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);}",{"title":230,"searchDepth":258,"depth":258,"links":37623},[37624,37625,37626,37627,37628,37629,37630],{"id":37460,"depth":258,"text":37461},{"id":37469,"depth":258,"text":18189},{"id":37490,"depth":258,"text":37491},{"id":3080,"depth":258,"text":37532},{"id":37568,"depth":258,"text":37569},{"id":37585,"depth":258,"text":37586},{"id":37611,"depth":258,"text":37612},{"path":4615,"title":4655,"description":37632,"kind":34360,"section":34361,"order":31666,"group":34408,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":37633,"attrs":37635,"events":37636,"cssVars":37637,"related":37638,"body":37639},"Batched CSS variable and style writer used by built-in and custom modules.",[37634,32170,32191],"StyleTxn",[],[],[],[4602,4614,28149],{"type":22,"value":37640,"toc":37827},[37641,37643,37648,37650,37654,37656,37659,37667,37670,37674,37713,37717,37775,37779,37797,37799,37801,37814,37816,37824],[25,37642,4655],{"id":32081},[30,37644,37645,37647],{},[60,37646,4655],{}," is the runtime’s style write transaction.",[37,37649,37461],{"id":37460},[30,37651,37652,37466],{},[60,37653,4655],{},[37,37655,18189],{"id":37469},[30,37657,37658],{},"It batches:",[42,37660,37661,37664],{},[45,37662,37663],{},"CSS custom property writes",[45,37665,37666],{},"standard style property writes",[30,37668,37669],{},"so modules can write in one controlled mutate phase instead of spamming direct style mutations.",[37,37671,37673],{"id":37672},"main-methods","Main methods",[42,37675,37676,37680,37684,37688,37692,37696,37700,37704,37708],{},[45,37677,37678],{},[60,37679,32098],{},[45,37681,37682],{},[60,37683,32103],{},[45,37685,37686],{},[60,37687,32108],{},[45,37689,37690],{},[60,37691,32113],{},[45,37693,37694],{},[60,37695,32118],{},[45,37697,37698],{},[60,37699,32123],{},[45,37701,37702],{},[60,37703,32128],{},[45,37705,37706],{},[60,37707,32133],{},[45,37709,37710],{},[60,37711,37712],{},"setVarDirect(...)",[37,37714,37716],{"id":37715},"typical-usage","Typical usage",[225,37718,37720],{"className":227,"code":37719,"language":229,"meta":230,"style":230},"styleTxn.run(() => {\n  styleTxn.setVar(element, '--progress', 0.5);\n  styleTxn.setProp(element, 'transform', 'translateY(20px)');\n});\n",[60,37721,37722,37735,37754,37771],{"__ignoreMap":230},[234,37723,37724,37727,37729,37731,37733],{"class":236,"line":237},[234,37725,37726],{"class":244},"styleTxn.",[234,37728,32154],{"class":281},[234,37730,1505],{"class":244},[234,37732,906],{"class":240},[234,37734,909],{"class":244},[234,37736,37737,37740,37742,37745,37748,37750,37752],{"class":236,"line":258},[234,37738,37739],{"class":244},"  styleTxn.",[234,37741,32170],{"class":281},[234,37743,37744],{"class":244},"(element, ",[234,37746,37747],{"class":251},"'--progress'",[234,37749,1833],{"class":244},[234,37751,15657],{"class":271},[234,37753,335],{"class":244},[234,37755,37756,37758,37760,37762,37764,37766,37769],{"class":236,"line":265},[234,37757,37739],{"class":244},[234,37759,32191],{"class":281},[234,37761,37744],{"class":244},[234,37763,32196],{"class":251},[234,37765,1833],{"class":244},[234,37767,37768],{"class":251},"'translateY(20px)'",[234,37770,335],{"class":244},[234,37772,37773],{"class":236,"line":288},[234,37774,1040],{"class":244},[37,37776,37778],{"id":37777},"important-behavior","Important behavior",[42,37780,37781,37784,37789,37794],{},[45,37782,37783],{},"queued writes only work while the transaction is open",[45,37785,37786,37788],{},[60,37787,32133],{}," is the easiest safe form",[45,37790,37791,37793],{},[60,37792,37712],{}," writes immediately and bypasses batching",[45,37795,37796],{},"numeric CSS custom properties may use Typed OM internally when available",[37,37798,37569],{"id":37568},[30,37800,31703],{},[42,37802,37803,37806,37811],{},[45,37804,37805],{},"a custom module writes several vars or style props",[45,37807,37808,37809],{},"you want output to stay aligned with ",[60,37810,30482],{},[45,37812,37813],{},"you need deduped writes per element and key",[37,37815,37612],{"id":37611},[30,37817,37818,37819,1833,37821,37823],{},"If you are inside ",[60,37820,30482],{},[60,37822,4655],{}," is usually the correct write primitive.",[410,37825,37826],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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);}",{"title":230,"searchDepth":258,"depth":258,"links":37828},[37829,37830,37831,37832,37833,37834,37835],{"id":37460,"depth":258,"text":37461},{"id":37469,"depth":258,"text":18189},{"id":37672,"depth":258,"text":37673},{"id":37715,"depth":258,"text":37716},{"id":37777,"depth":258,"text":37778},{"id":37568,"depth":258,"text":37569},{"id":37611,"depth":258,"text":37612},{"path":4616,"title":28077,"description":37837,"kind":34360,"section":34361,"order":32306,"group":34408,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":37838,"attrs":37840,"events":37841,"cssVars":37842,"related":37843,"body":37844},"Advanced batching primitive for staged read, compute, and write work.",[37839],"batchModuleInitialization",[],[],[],[4602,4614,5295],{"type":22,"value":37845,"toc":37986},[37846,37848,37853,37855,37860,37862,37865,37876,37879,37881,37913,37917,37923,37944,37948,37951,37959,37962,37964,37967,37978,37980],[25,37847,28077],{"id":33261},[30,37849,37850,37852],{},[60,37851,28077],{}," is an advanced batching helper used by the runtime when initializing or processing many objects.",[37,37854,37461],{"id":37460},[30,37856,37857,37859],{},[60,37858,28077],{}," is exported by the package root, but it is advanced surface rather than everyday API.",[37,37861,18189],{"id":37469},[30,37863,37864],{},"It separates queued work into three lanes:",[42,37866,37867,37870,37873],{},[45,37868,37869],{},"read",[45,37871,37872],{},"compute",[45,37874,37875],{},"write",[30,37877,37878],{},"Each lane is processed in order, and each task can carry a priority.",[37,37880,37673],{"id":37672},[42,37882,37883,37888,37893,37898,37903,37908],{},[45,37884,37885],{},[60,37886,37887],{},"scheduleRead(task, priority?)",[45,37889,37890],{},[60,37891,37892],{},"scheduleCompute(task, priority?)",[45,37894,37895],{},[60,37896,37897],{},"scheduleWrite(task, priority?)",[45,37899,37900],{},[60,37901,37902],{},"batchModuleInitialization(contexts)",[45,37904,37905],{},[60,37906,37907],{},"flushSync()",[45,37909,37910],{},[60,37911,37912],{},"clear()",[37,37914,37916],{"id":37915},"runtime-role","Runtime role",[30,37918,37919,37920,37922],{},"In the current runtime it is used by ",[60,37921,28218],{}," to batch module initialization:",[99,37924,37925,37928,37933,37937],{},[45,37926,37927],{},"read rects and dimensions",[45,37929,37930,37931],{},"run ",[60,37932,29162],{},[45,37934,37930,37935],{},[60,37936,29167],{},[45,37938,37930,37939,137,37941],{},[60,37940,29172],{},[60,37942,37943],{},"addObject(...)",[37,37945,37947],{"id":37946},"cached-data","Cached data",[30,37949,37950],{},"During a batch it also keeps temporary caches for:",[42,37952,37953,37956],{},[45,37954,37955],{},"element rects",[45,37957,37958],{},"element dimensions",[30,37960,37961],{},"Those caches are cleared after the batch flushes.",[37,37963,37569],{"id":37568},[30,37965,37966],{},"Only use it when:",[42,37968,37969,37972,37975],{},[45,37970,37971],{},"you are building an advanced custom module",[45,37973,37974],{},"you are processing many elements in one burst",[45,37976,37977],{},"you have already measured that normal lifecycle batching is not enough",[37,37979,37612],{"id":37611},[30,37981,37982,37983,37985],{},"Most custom modules do not need their own ",[60,37984,28077],{},". The runtime already gives you enough batching through lifecycle phases and object initialization.",{"title":230,"searchDepth":258,"depth":258,"links":37987},[37988,37989,37990,37991,37992,37993,37994],{"id":37460,"depth":258,"text":37461},{"id":37469,"depth":258,"text":18189},{"id":37672,"depth":258,"text":37673},{"id":37915,"depth":258,"text":37916},{"id":37946,"depth":258,"text":37947},{"id":37568,"depth":258,"text":37569},{"id":37611,"depth":258,"text":37612},{"path":34433,"title":34434,"description":37996,"kind":34360,"section":34361,"order":32542,"group":34408,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":37997,"attrs":37998,"events":37999,"cssVars":38000,"related":38001,"body":38002},"Abstract adapter base for SVG-backed grid overlays in the grid subsystem.",[],[],[],[],[34415,5295,2350],{"type":22,"value":38003,"toc":38152},[38004,38007,38012,38014,38019,38021,38024,38051,38055,38058,38087,38091,38094,38128,38130,38133,38144,38146],[25,38005,34434],{"id":38006},"gridadapter",[30,38008,38009,38011],{},[60,38010,34434],{}," is the abstract base used by the grid subsystem to render SVG-backed grid overlays.",[37,38013,37461],{"id":37460},[30,38015,38016,38018],{},[60,38017,34434],{}," is exported by the package root, but it belongs to a specialized subsystem and is not part of the common built-in module path.",[37,38020,18189],{"id":37469},[30,38022,38023],{},"An adapter defines:",[42,38025,38026,38031,38036,38042,38045,38048],{},[45,38027,38028,38029],{},"a unique ",[60,38030,29203],{},[45,38032,38033,38034],{},"a human-readable ",[60,38035,23730],{},[45,38037,38038,38039],{},"an ",[60,38040,38041],{},"icon",[45,38043,38044],{},"default settings",[45,38046,38047],{},"a UI schema",[45,38049,38050],{},"the actual SVG render logic",[37,38052,38054],{"id":38053},"abstract-contract","Abstract contract",[30,38056,38057],{},"You implement:",[42,38059,38060,38064,38068,38072,38077,38082],{},[45,38061,38062],{},[60,38063,29203],{},[45,38065,38066],{},[60,38067,23730],{},[45,38069,38070],{},[60,38071,38041],{},[45,38073,38074],{},[60,38075,38076],{},"getDefaults()",[45,38078,38079],{},[60,38080,38081],{},"getUISchema()",[45,38083,38084],{},[60,38085,38086],{},"render(svg, width, height, settings)",[37,38088,38090],{"id":38089},"built-in-helpers","Built-in helpers",[30,38092,38093],{},"The base class already gives helpers for:",[42,38095,38096,38099,38106,38109,38112,38115],{},[45,38097,38098],{},"clearing the instance group",[45,38100,38101,38102,38105],{},"getting a scoped ",[60,38103,38104],{},"\u003Cg>"," group",[45,38107,38108],{},"creating SVG lines",[45,38110,38111],{},"creating SVG rects",[45,38113,38114],{},"creating SVG paths",[45,38116,38117,38118,1833,38120,1833,38122,7048,38125,38127],{},"resolving ",[60,38119,1789],{},[60,38121,3403],{},[60,38123,38124],{},"vw",[60,38126,1669],{}," units",[37,38129,37569],{"id":37568},[30,38131,38132],{},"Use it only if:",[42,38134,38135,38138,38141],{},[45,38136,38137],{},"your project is intentionally building on top of the grid tooling",[45,38139,38140],{},"you need a new SVG grid renderer",[45,38142,38143],{},"you control the grid integration around it",[37,38145,37612],{"id":37611},[30,38147,38148,38149,38151],{},"For most StringTune users, ",[60,38150,34434],{}," is runtime reference, not a primary integration entry point.",{"title":230,"searchDepth":258,"depth":258,"links":38153},[38154,38155,38156,38157,38158,38159],{"id":37460,"depth":258,"text":37461},{"id":37469,"depth":258,"text":18189},{"id":38053,"depth":258,"text":38054},{"id":38089,"depth":258,"text":38090},{"id":37568,"depth":258,"text":37569},{"id":37611,"depth":258,"text":37612},{"path":34439,"title":34440,"description":38161,"kind":34360,"section":34361,"order":38162,"group":34408,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":38163,"attrs":38164,"events":38165,"cssVars":38166,"related":38167,"body":38168},"Internal debounce helper used by the runtime for delayed reactions.",75,[],[],[],[],[34445,34451,34415],{"type":22,"value":38169,"toc":38223},[38170,38173,38178,38180,38188,38190,38193,38210,38212,38215,38217,38220],[25,38171,34440],{"id":38172},"debounce",[30,38174,38175,38177],{},[60,38176,34440],{}," is a small internal helper that wraps a function and delays execution until calls stop for a given period.",[37,38179,37461],{"id":37460},[30,38181,38182,38184,38185,38187],{},[60,38183,34440],{}," lives in ",[60,38186,34532],{},", but it is not exported by the package root. Treat it as internal runtime reference.",[37,38189,18189],{"id":37469},[30,38191,38192],{},"It:",[42,38194,38195,38198,38201,38204],{},[45,38196,38197],{},"stores the latest timeout id",[45,38199,38200],{},"clears the previous timeout on each call",[45,38202,38203],{},"runs the wrapped function only after the delay passes without another call",[45,38205,38206,38207,38209],{},"preserves the original ",[60,38208,28354],{}," context and arguments",[37,38211,37916],{"id":37915},[30,38213,38214],{},"In the current runtime it is used for delayed resize-related reactions.",[37,38216,37569],{"id":37568},[30,38218,38219],{},"If you are working inside the library itself, it is the standard debounce helper already present in the codebase.",[30,38221,38222],{},"If you are integrating against the package from the outside, do not rely on it as public API.",{"title":230,"searchDepth":258,"depth":258,"links":38224},[38225,38226,38227,38228],{"id":37460,"depth":258,"text":37461},{"id":37469,"depth":258,"text":18189},{"id":37915,"depth":258,"text":37916},{"id":37568,"depth":258,"text":37569},{"path":34445,"title":34446,"description":38230,"kind":34360,"section":34361,"order":38231,"group":34408,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":38232,"attrs":38233,"events":38234,"cssVars":38235,"related":38236,"body":38237},"Internal requestAnimationFrame loop wrapper with optional FPS limiting.",76,[],[],[],[],[34439,3981,34415],{"type":22,"value":38238,"toc":38347},[38239,38242,38247,38249,38255,38257,38264,38278,38280,38302,38304,38318,38320,38328,38342,38344],[25,38240,34446],{"id":38241},"stringfps",[30,38243,38244,38246],{},[60,38245,34446],{}," is the internal loop wrapper used to drive frame updates.",[37,38248,37461],{"id":37460},[30,38250,38251,38184,38253,38187],{},[60,38252,34446],{},[60,38254,34532],{},[37,38256,18189],{"id":37469},[30,38258,38259,38260,38263],{},"It wraps ",[60,38261,38262],{},"requestAnimationFrame"," and can:",[42,38265,38266,38269,38272,38275],{},[45,38267,38268],{},"run uncapped",[45,38270,38271],{},"run at a target FPS",[45,38273,38274],{},"invoke a callback on each accepted frame",[45,38276,38277],{},"stop and restart the loop",[37,38279,37673],{"id":37672},[42,38281,38282,38287,38292,38297],{},[45,38283,38284],{},[60,38285,38286],{},"start(fps)",[45,38288,38289],{},[60,38290,38291],{},"stop()",[45,38293,38294],{},[60,38295,38296],{},"setOnFrame(callback)",[45,38298,38299],{},[60,38300,38301],{},"destructor()",[37,38303,37778],{"id":37777},[42,38305,38306,38312,38315],{},[45,38307,38308,38311],{},[60,38309,38310],{},"fps = 0"," means uncapped",[45,38313,38314],{},"non-zero FPS uses an internal interval gate",[45,38316,38317],{},"the class contains visibility handling logic, but in the current code the document visibility listener is commented out",[37,38319,37916],{"id":37915},[30,38321,38322,38324,38325,38327],{},[60,38323,28],{}," uses ",[60,38326,34446],{}," for the main update loop that drives:",[42,38329,38330,38333,38336,38339],{},[45,38331,38332],{},"cursor updates",[45,38334,38335],{},"scroll controller updates",[45,38337,38338],{},"module lifecycle dispatch",[45,38340,38341],{},"frameDOM flushes",[37,38343,37612],{"id":37611},[30,38345,38346],{},"Useful as runtime reference. Not something to document as a mainstream package integration symbol.",{"title":230,"searchDepth":258,"depth":258,"links":38348},[38349,38350,38351,38352,38353,38354],{"id":37460,"depth":258,"text":37461},{"id":37469,"depth":258,"text":18189},{"id":37672,"depth":258,"text":37673},{"id":37777,"depth":258,"text":37778},{"id":37915,"depth":258,"text":37916},{"id":37611,"depth":258,"text":37612},{"path":34451,"title":34452,"description":38356,"kind":34360,"section":34361,"order":38357,"group":34408,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":38358,"attrs":38359,"events":38360,"cssVars":38361,"related":38362,"body":38363},"Settings type used for global fallback values and per-module overrides.",77,[],[],[],[],[2463,3980,28000],{"type":22,"value":38364,"toc":38462},[38365,38368,38373,38375,38383,38387,38434,38438,38441,38454,38456,38459],[25,38366,34452],{"id":38367},"stringsettings",[30,38369,38370,38372],{},[60,38371,34452],{}," is the settings map type used throughout the runtime.",[37,38374,37461],{"id":37460},[30,38376,38377,38378,38380,38381,106],{},"This type lives in ",[60,38379,34532],{},". It is useful reference for authoring, but the behavioral contract is covered mainly by ",[133,38382,34395],{"href":2463},[37,38384,38386],{"id":38385},"shape","Shape",[225,38388,38390],{"className":227,"code":38389,"language":229,"meta":230,"style":230},"interface StringSettings {\n  [key: string]: string | number | boolean;\n}\n",[60,38391,38392,38402,38430],{"__ignoreMap":230},[234,38393,38394,38397,38400],{"class":236,"line":237},[234,38395,38396],{"class":240},"interface",[234,38398,38399],{"class":281}," StringSettings",[234,38401,909],{"class":244},[234,38403,38404,38407,38409,38411,38413,38415,38417,38419,38422,38424,38426,38428],{"class":236,"line":258},[234,38405,38406],{"class":244},"  [",[234,38408,29452],{"class":899},[234,38410,1114],{"class":240},[234,38412,354],{"class":271},[234,38414,27788],{"class":244},[234,38416,1114],{"class":240},[234,38418,354],{"class":271},[234,38420,38421],{"class":240}," |",[234,38423,1474],{"class":271},[234,38425,38421],{"class":240},[234,38427,33570],{"class":271},[234,38429,255],{"class":244},[234,38431,38432],{"class":236,"line":265},[234,38433,1143],{"class":244},[37,38435,38437],{"id":38436},"what-it-is-for","What it is for",[30,38439,38440],{},"It represents:",[42,38442,38443,38448],{},[45,38444,38445,38446],{},"global fallback settings passed into ",[60,38447,30316],{},[45,38449,38450,38451],{},"per-module override settings passed into ",[60,38452,38453],{},"use(MyModule, settings)",[37,38455,37612],{"id":37611},[30,38457,38458],{},"The type is intentionally broad because many StringTune settings are attribute-like values that stay string-based until a module parses them.",[410,38460,38461],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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);}",{"title":230,"searchDepth":258,"depth":258,"links":38463},[38464,38465,38466,38467],{"id":37460,"depth":258,"text":37461},{"id":38385,"depth":258,"text":38386},{"id":38436,"depth":258,"text":38437},{"id":37611,"depth":258,"text":37612},{"path":13750,"title":34457,"description":38469,"kind":34360,"section":34361,"order":38470,"group":34408,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":38471,"attrs":38472,"events":38473,"cssVars":38474,"related":38475,"body":38476},"Internal helper for deciding when the environment should be treated as coarse-pointer oriented.",78,[],[],[],[],[5301,34488,34415],{"type":22,"value":38477,"toc":38544},[38478,38481,38486,38488,38493,38497,38500,38520,38524,38537,38541],[25,38479,34457],{"id":38480},"iscoarsepointer",[30,38482,38483,38485],{},[60,38484,34457],{}," is an internal environment helper.",[37,38487,37461],{"id":37460},[30,38489,38490,38491,38187],{},"It lives in ",[60,38492,34532],{},[37,38494,38496],{"id":38495},"what-it-checks","What it checks",[30,38498,38499],{},"The current implementation combines:",[42,38501,38502,38507,38512,38515],{},[45,38503,38504],{},[60,38505,38506],{},"matchMedia('(pointer: coarse)')",[45,38508,38509],{},[60,38510,38511],{},"matchMedia('(pointer: fine)')",[45,38513,38514],{},"viewport width",[45,38516,38517],{},[60,38518,38519],{},"navigator.maxTouchPoints",[37,38521,38523],{"id":38522},"current-behavior","Current behavior",[42,38525,38526,38531,38534],{},[45,38527,38528,38529],{},"if a fine primary pointer is clearly detected, it returns ",[60,38530,2715],{},[45,38532,38533],{},"narrow screens are treated as coarse",[45,38535,38536],{},"touch capability is used as fallback when the pointer media queries are not decisive",[37,38538,38540],{"id":38539},"why-it-exists","Why it exists",[30,38542,38543],{},"This helps the runtime avoid simplistic mobile detection and better decide when touch-oriented behavior should win.",{"title":230,"searchDepth":258,"depth":258,"links":38545},[38546,38547,38548,38549],{"id":37460,"depth":258,"text":37461},{"id":38495,"depth":258,"text":38496},{"id":38522,"depth":258,"text":38523},{"id":38539,"depth":258,"text":38540},{"path":34462,"title":34463,"description":38551,"kind":34360,"section":34361,"order":38552,"group":34408,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":38553,"attrs":38554,"events":38555,"cssVars":38556,"related":38557,"body":38558},"Internal parser for StringProgressPart source syntax such as source[0.2-0.7].",79,[],[],[],[],[5215,2899,34415],{"type":22,"value":38559,"toc":38660},[38560,38563,38570,38572,38576,38580,38589,38593,38622,38624,38627,38638,38643,38647,38657],[25,38561,34463],{"id":38562},"parsepartof",[30,38564,38565,38567,38568,106],{},[60,38566,34463],{}," is a small internal parser used by ",[60,38569,5216],{},[37,38571,37461],{"id":37460},[30,38573,38490,38574,38187],{},[60,38575,34532],{},[37,38577,38579],{"id":38578},"expected-input","Expected input",[225,38581,38583],{"className":32040,"code":38582,"language":32042,"meta":230,"style":230},"sourceId[0.2-0.7]\n",[60,38584,38585],{"__ignoreMap":230},[234,38586,38587],{"class":236,"line":237},[234,38588,38582],{},[37,38590,38592],{"id":38591},"output-shape","Output shape",[225,38594,38596],{"className":227,"code":38595,"language":229,"meta":230,"style":230},"{ id: string; start: number; end: number } | null\n",[60,38597,38598],{"__ignoreMap":230},[234,38599,38600,38602,38604,38607,38609,38612,38614,38617,38619],{"class":236,"line":237},[234,38601,30759],{"class":244},[234,38603,4269],{"class":281},[234,38605,38606],{"class":244},": string; ",[234,38608,326],{"class":281},[234,38610,38611],{"class":244},": number; ",[234,38613,11775],{"class":281},[234,38615,38616],{"class":244},": number } ",[234,38618,1128],{"class":240},[234,38620,38621],{"class":271}," null\n",[37,38623,18189],{"id":37469},[30,38625,38626],{},"It extracts:",[42,38628,38629,38632,38635],{},[45,38630,38631],{},"the source object id",[45,38633,38634],{},"the start of the slice",[45,38636,38637],{},"the end of the slice",[30,38639,38640,38641,106],{},"If the string does not match the expected pattern, it returns ",[60,38642,12088],{},[37,38644,38646],{"id":38645},"why-it-matters","Why it matters",[30,38648,38649,38650,38653,38654,38656],{},"This helper explains the ",[60,38651,38652],{},"string-part-of=\"source[start-end]\""," syntax used by ",[60,38655,5216],{},", but it should not be treated as a standalone public helper.",[410,38658,38659],{},"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 .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":230,"searchDepth":258,"depth":258,"links":38661},[38662,38663,38664,38665,38666],{"id":37460,"depth":258,"text":37461},{"id":38578,"depth":258,"text":38579},{"id":38591,"depth":258,"text":38592},{"id":37469,"depth":258,"text":18189},{"id":38645,"depth":258,"text":38646},{"path":32315,"title":34474,"description":38668,"kind":34360,"section":34361,"order":11302,"group":34467,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":38669,"attrs":38670,"events":38671,"cssVars":38672,"related":38673,"body":38674},"Reference map for the runtime state containers aggregated by StringData.",[],[],[],[],[3981,34415,9008],{"type":22,"value":38675,"toc":38741},[38676,38679,38684,38691,38695,38725,38729,38731],[25,38677,34474],{"id":38678},"state-models-overview",[30,38680,38681,38682,106],{},"The runtime state is centered around ",[60,38683,30148],{},[30,38685,38686,38688,38689,106],{},[60,38687,30148],{}," is the exported top-level container. The individual state classes inside it are internal runtime models, but they are worth documenting separately because advanced modules often read from them through ",[60,38690,23586],{},[37,38692,38694],{"id":38693},"state-map","State map",[42,38696,38697,38701,38705,38709,38713,38717,38721],{},[45,38698,38699],{},[133,38700,30148],{"href":3981},[45,38702,38703],{},[133,38704,32308],{"href":34483},[45,38706,38707],{},[133,38708,32309],{"href":34488},[45,38710,38711],{},[133,38712,32310],{"href":34493},[45,38714,38715],{},[133,38716,34499],{"href":34498},[45,38718,38719],{},[133,38720,34505],{"href":34504},[45,38722,38723],{},[133,38724,34511],{"href":34510},[37,38726,38728],{"id":38727},"practical-boundary","Practical boundary",[30,38730,34521],{},[42,38732,38733,38738],{},[45,38734,38735,38736],{},"integrate publicly against ",[60,38737,30148],{},[45,38739,38740],{},"treat the nested state models as runtime reference unless your integration genuinely depends on their shape",{"title":230,"searchDepth":258,"depth":258,"links":38742},[38743,38744],{"id":38693,"depth":258,"text":38694},{"id":38727,"depth":258,"text":38728},{"path":3981,"title":30148,"description":38746,"kind":34360,"section":34361,"order":38747,"group":34467,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":38748,"attrs":38749,"events":38750,"cssVars":38751,"related":38752,"body":38753},"Top-level runtime state container shared across modules, tools, and controllers.",81,[],[],[],[],[32315,34483,9008],{"type":22,"value":38754,"toc":38829},[38755,38758,38763,38765,38769,38773,38776,38802,38804,38807,38818,38821,38823],[25,38756,30148],{"id":38757},"stringdata",[30,38759,38760,38762],{},[60,38761,30148],{}," is the main shared state container exported by the package.",[37,38764,37461],{"id":37460},[30,38766,38767,37466],{},[60,38768,30148],{},[37,38770,38772],{"id":38771},"what-it-contains","What it contains",[30,38774,38775],{},"It aggregates:",[42,38777,38778,38782,38786,38790,38794,38798],{},[45,38779,38780],{},[60,38781,32345],{},[45,38783,38784],{},[60,38785,3310],{},[45,38787,38788],{},[60,38789,11672],{},[45,38791,38792],{},[60,38793,32358],{},[45,38795,38796],{},[60,38797,32363],{},[45,38799,38800],{},[60,38801,32368],{},[37,38803,38646],{"id":38645},[30,38805,38806],{},"This is the object passed through the runtime into:",[42,38808,38809,38812,38815],{},[45,38810,38811],{},"module lifecycle hooks",[45,38813,38814],{},"controllers",[45,38816,38817],{},"context-aware utilities",[30,38819,38820],{},"If you need live runtime state in a custom module, this is the correct top-level entry point.",[37,38822,37612],{"id":37611},[30,38824,38825,38826,38828],{},"The nested state classes are documented separately, but the usual public authoring surface is still ",[60,38827,30148],{}," as a whole.",{"title":230,"searchDepth":258,"depth":258,"links":38830},[38831,38832,38833,38834],{"id":37460,"depth":258,"text":37461},{"id":38771,"depth":258,"text":38772},{"id":38645,"depth":258,"text":38646},{"id":37611,"depth":258,"text":37612},{"path":34483,"title":32308,"description":38836,"kind":34360,"section":34361,"order":38837,"group":34467,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":38838,"attrs":38839,"events":38840,"cssVars":38841,"related":38842,"body":38843},"Internal model for live scroll, mode, container, and motion-related values.",82,[],[],[],[],[3981,34488,617],{"type":22,"value":38844,"toc":38986},[38845,38848,38853,38855,38864,38868,38956,38958,38961,38975,38977],[25,38846,32308],{"id":38847},"scrollstate",[30,38849,38850,38852],{},[60,38851,32308],{}," holds the runtime's live scroll-related values.",[37,38854,37461],{"id":37460},[30,38856,38857,38184,38859,38861,38862,106],{},[60,38858,32308],{},[60,38860,34535],{}," and is mainly runtime reference. Most integrations should read it through exported ",[60,38863,30148],{},[37,38865,38867],{"id":38866},"important-fields","Important fields",[42,38869,38870,38875,38880,38885,38890,38895,38900,38905,38910,38915,38919,38924,38929,38933,38938,38943,38948,38952],{},[45,38871,38872],{},[60,38873,38874],{},"target",[45,38876,38877],{},[60,38878,38879],{},"current",[45,38881,38882],{},[60,38883,38884],{},"transformedCurrent",[45,38886,38887],{},[60,38888,38889],{},"delta",[45,38891,38892],{},[60,38893,38894],{},"lerped",[45,38896,38897],{},[60,38898,38899],{},"displacement",[45,38901,38902],{},[60,38903,38904],{},"isScrollingDown",[45,38906,38907],{},[60,38908,38909],{},"topPosition",[45,38911,38912],{},[60,38913,38914],{},"bottomPosition",[45,38916,38917],{},[60,38918,4217],{},[45,38920,38921],{},[60,38922,38923],{},"container",[45,38925,38926],{},[60,38927,38928],{},"elementContainer",[45,38930,38931],{},[60,38932,4392],{},[45,38934,38935],{},[60,38936,38937],{},"mode",[45,38939,38940],{},[60,38941,38942],{},"modeMobile",[45,38944,38945],{},[60,38946,38947],{},"modeDesktop",[45,38949,38950],{},[60,38951,34927],{},[45,38953,38954],{},[60,38955,34932],{},[37,38957,38437],{"id":38436},[30,38959,38960],{},"This state powers:",[42,38962,38963,38966,38969,38972],{},[45,38964,38965],{},"scroll progress modules",[45,38967,38968],{},"scroll controller behavior",[45,38970,38971],{},"direction-aware runtime logic",[45,38973,38974],{},"transformed scroll-container math",[37,38976,37612],{"id":37611},[30,38978,38979,38980,38983,38984,106],{},"If a custom module needs current scroll numbers, ",[60,38981,38982],{},"data.scroll"," is usually the most important branch of ",[60,38985,30148],{},{"title":230,"searchDepth":258,"depth":258,"links":38987},[38988,38989,38990,38991],{"id":37460,"depth":258,"text":37461},{"id":38866,"depth":258,"text":38867},{"id":38436,"depth":258,"text":38437},{"id":37611,"depth":258,"text":37612},{"path":34488,"title":32309,"description":38993,"kind":34360,"section":34361,"order":38994,"group":34467,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":38995,"attrs":38996,"events":38997,"cssVars":38998,"related":38999,"body":39000},"Internal model for viewport dimensions, content bounds, transform scale, and rem base.",83,[],[],[],[],[3981,34483,3259],{"type":22,"value":39001,"toc":39090},[39002,39005,39010,39012,39020,39022,39064,39066,39068,39082,39084],[25,39003,32309],{"id":39004},"viewportstate",[30,39006,39007,39009],{},[60,39008,32309],{}," holds current viewport and content geometry.",[37,39011,37461],{"id":37460},[30,39013,39014,38184,39016,38861,39018,106],{},[60,39015,32309],{},[60,39017,34535],{},[60,39019,30148],{},[37,39021,38867],{"id":38866},[42,39023,39024,39029,39034,39039,39044,39049,39054,39059],{},[45,39025,39026],{},[60,39027,39028],{},"windowWidth",[45,39030,39031],{},[60,39032,39033],{},"windowHeight",[45,39035,39036],{},[60,39037,39038],{},"contentWidth",[45,39040,39041],{},[60,39042,39043],{},"contentHeight",[45,39045,39046],{},[60,39047,39048],{},"scaleWidth",[45,39050,39051],{},[60,39052,39053],{},"scaleHeight",[45,39055,39056],{},[60,39057,39058],{},"transformScale",[45,39060,39061],{},[60,39062,39063],{},"baseRem",[37,39065,38437],{"id":38436},[30,39067,38960],{},[42,39069,39070,39073,39076,39079],{},[45,39071,39072],{},"resize-aware modules",[45,39074,39075],{},"dimension parsing",[45,39077,39078],{},"transformed container calculations",[45,39080,39081],{},"responsive behavior",[37,39083,37612],{"id":37611},[30,39085,39086,39087,106],{},"If a module depends on viewport size, root font size, or transformed layout scaling, the needed values usually live in ",[60,39088,39089],{},"data.viewport",{"title":230,"searchDepth":258,"depth":258,"links":39091},[39092,39093,39094,39095],{"id":37460,"depth":258,"text":37461},{"id":38866,"depth":258,"text":38867},{"id":38436,"depth":258,"text":38437},{"id":37611,"depth":258,"text":37612},{"path":34493,"title":32310,"description":39097,"kind":34360,"section":34361,"order":39098,"group":34467,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":39099,"attrs":39100,"events":39101,"cssVars":39102,"related":39103,"body":39104},"Internal model for raw and smoothed cursor position, step values, and cursor velocity.",84,[],[],[],[],[3981,5260,9008],{"type":22,"value":39105,"toc":39192},[39106,39109,39114,39116,39124,39126,39168,39170,39172,39183,39185],[25,39107,32310],{"id":39108},"cursorstate",[30,39110,39111,39113],{},[60,39112,32310],{}," holds raw and smoothed pointer motion data.",[37,39115,37461],{"id":37460},[30,39117,39118,38184,39120,38861,39122,106],{},[60,39119,32310],{},[60,39121,34535],{},[60,39123,30148],{},[37,39125,38867],{"id":38866},[42,39127,39128,39133,39138,39143,39148,39153,39158,39163],{},[45,39129,39130],{},[60,39131,39132],{},"targetX",[45,39134,39135],{},[60,39136,39137],{},"targetY",[45,39139,39140],{},[60,39141,39142],{},"smoothedX",[45,39144,39145],{},[60,39146,39147],{},"smoothedY",[45,39149,39150],{},[60,39151,39152],{},"stepX",[45,39154,39155],{},[60,39156,39157],{},"stepY",[45,39159,39160],{},[60,39161,39162],{},"velocityX",[45,39164,39165],{},[60,39166,39167],{},"velocityY",[37,39169,38437],{"id":38436},[30,39171,38960],{},[42,39173,39174,39177,39180],{},[45,39175,39176],{},"cursor smoothing",[45,39178,39179],{},"pointer-reactive modules",[45,39181,39182],{},"motion derived from cursor velocity",[37,39184,37612],{"id":37611},[30,39186,39187,39188,39191],{},"If a custom interaction module needs runtime cursor state rather than raw DOM events, ",[60,39189,39190],{},"data.cursor"," is the branch to inspect.",{"title":230,"searchDepth":258,"depth":258,"links":39193},[39194,39195,39196,39197],{"id":37460,"depth":258,"text":37461},{"id":38866,"depth":258,"text":38867},{"id":38436,"depth":258,"text":38437},{"id":37611,"depth":258,"text":37612},{"path":34498,"title":34499,"description":39199,"kind":34360,"section":34361,"order":39200,"group":34467,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":39201,"attrs":39202,"events":39203,"cssVars":39204,"related":39205,"body":39206},"Internal model for current frame time, delta, previous timestamp, and total elapsed time.",85,[],[],[],[],[3981,34445,28001],{"type":22,"value":39207,"toc":39276},[39208,39211,39216,39218,39226,39230,39251,39253,39256,39267,39269],[25,39209,34499],{"id":39210},"timestate",[30,39212,39213,39215],{},[60,39214,34499],{}," holds frame timing data.",[37,39217,37461],{"id":37460},[30,39219,39220,38184,39222,38861,39224,106],{},[60,39221,34499],{},[60,39223,34535],{},[60,39225,30148],{},[37,39227,39229],{"id":39228},"fields","Fields",[42,39231,39232,39237,39242,39246],{},[45,39233,39234],{},[60,39235,39236],{},"now",[45,39238,39239],{},[60,39240,39241],{},"previous",[45,39243,39244],{},[60,39245,38889],{},[45,39247,39248],{},[60,39249,39250],{},"elapsed",[37,39252,38437],{"id":38436},[30,39254,39255],{},"This state is useful for:",[42,39257,39258,39261,39264],{},[45,39259,39260],{},"time-based animation logic",[45,39262,39263],{},"frame-rate-aware behavior",[45,39265,39266],{},"duration-dependent custom modules",[37,39268,37612],{"id":37611},[30,39270,39271,39272,39275],{},"If a custom module needs time but should stay inside the runtime model, use ",[60,39273,39274],{},"data.time"," instead of creating a separate loop clock.",{"title":230,"searchDepth":258,"depth":258,"links":39277},[39278,39279,39280,39281],{"id":37460,"depth":258,"text":37461},{"id":39228,"depth":258,"text":39229},{"id":38436,"depth":258,"text":38437},{"id":37611,"depth":258,"text":37612},{"path":34504,"title":34505,"description":39283,"kind":34360,"section":34361,"order":39284,"group":34467,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":39285,"attrs":39286,"events":39287,"cssVars":39288,"related":39289,"body":39290},"Internal runtime flags for debug overlays and certain layout-control switches.",86,[],[],[],[],[3981,5340,5346],{"type":22,"value":39291,"toc":39349},[39292,39295,39300,39302,39310,39314,39331,39333,39336,39344,39346],[25,39293,34505],{"id":39294},"systemstate",[30,39296,39297,39299],{},[60,39298,34505],{}," is a small container for runtime-wide flags.",[37,39301,37461],{"id":37460},[30,39303,39304,38184,39306,38861,39308,106],{},[60,39305,34505],{},[60,39307,34535],{},[60,39309,30148],{},[37,39311,39313],{"id":39312},"current-fields","Current fields",[42,39315,39316,39321,39326],{},[45,39317,39318],{},[60,39319,39320],{},"fpsTracker",[45,39322,39323],{},[60,39324,39325],{},"positionTracker",[45,39327,39328],{},[60,39329,39330],{},"suppressMasonryResize",[37,39332,38437],{"id":38436},[30,39334,39335],{},"These flags are currently used for:",[42,39337,39338,39341],{},[45,39339,39340],{},"enabling debug overlays",[45,39342,39343],{},"controlling specific layout behavior such as masonry resize suppression",[37,39345,37612],{"id":37611},[30,39347,39348],{},"This is more of a runtime control bucket than a general-purpose state model.",{"title":230,"searchDepth":258,"depth":258,"links":39350},[39351,39352,39353,39354],{"id":37460,"depth":258,"text":37461},{"id":39312,"depth":258,"text":39313},{"id":38436,"depth":258,"text":38437},{"id":37611,"depth":258,"text":37612},{"path":34510,"title":34511,"description":39356,"kind":34360,"section":34361,"order":39357,"group":34467,"parentPath":-1,"status":-1,"integration":-1,"publicExport":-1,"activation":-1,"package":-1,"aliases":39358,"attrs":39359,"events":39360,"cssVars":39361,"related":39362,"body":39363},"Internal holder for external render-context references such as Three.js instances.",87,[],[],[],[],[3981,32315,2350],{"type":22,"value":39364,"toc":39424},[39365,39368,39373,39375,39382,39386,39393,39395,39398,39400,39403,39421],[25,39366,34511],{"id":39367},"renderstate",[30,39369,39370,39372],{},[60,39371,34511],{}," is a very small render-context holder.",[37,39374,37461],{"id":37460},[30,39376,39377,38184,39379,39381],{},[60,39378,34511],{},[60,39380,34535],{}," and is mainly runtime reference.",[37,39383,39385],{"id":39384},"current-field","Current field",[42,39387,39388],{},[45,39389,39390],{},[60,39391,39392],{},"threeInstance",[37,39394,38437],{"id":38436},[30,39396,39397],{},"It exists so render-engine integrations can keep a shared render-context reference inside the broader runtime state model.",[37,39399,37612],{"id":37611},[30,39401,39402],{},"In the current built-in module set, this state is much less central than:",[42,39404,39405,39409,39413,39417],{},[45,39406,39407],{},[60,39408,32345],{},[45,39410,39411],{},[60,39412,3310],{},[45,39414,39415],{},[60,39416,11672],{},[45,39418,39419],{},[60,39420,32363],{},[30,39422,39423],{},"So most users will only care about it if they are wiring custom render-engine behavior into StringTune.",{"title":230,"searchDepth":258,"depth":258,"links":39425},[39426,39427,39428,39429],{"id":37460,"depth":258,"text":37461},{"id":39384,"depth":258,"text":39385},{"id":38436,"depth":258,"text":38437},{"id":37611,"depth":258,"text":37612},{"/docs/overview":5,"/docs/introduction":425,"/docs/quick-start":607,"/docs/nuxt":817,"/docs/nextjs":1906,"/docs/recipes/overview":2296,"/docs/built-in-vs-custom-vs-internal":2338,"/docs/configuration":2449,"/docs/object-ids":2886,"/docs/element-mirroring":3054,"/docs/offset-concepts":3258,"/docs/event-system":3810,"/docs/scroll-marks":3967,"/docs/scroll-modes":4295,"/docs/scroll-containers":4387,"/docs/performance":4601,"/docs/scroll-isolation":4867,"/docs/modules/overview":5184,"/docs/modules/progress":5367,"/docs/modules/progress-part":6167,"/docs/modules/parallax":7074,"/docs/modules/lerp":8025,"/docs/modules/glide":8526,"/docs/modules/anchor":8998,"/docs/modules/scroll-container":10397,"/docs/modules/scroller":11300,"/docs/modules/cursor":11666,"/docs/modules/cursor/targets-and-portals":12977,"/docs/modules/cursor/css-variables-and-events":13364,"/docs/modules/cursor/lifecycle-and-device-behavior":13737,"/docs/modules/magnetic":13941,"/docs/modules/impulse":14611,"/docs/modules/spotlight":15821,"/docs/modules/split":16811,"/docs/modules/split/grammar":18106,"/docs/modules/split/dom-output":18814,"/docs/modules/split/fit-and-rebuild":19611,"/docs/modules/split/inline-html":20359,"/docs/modules/masonry":21378,"/docs/modules/responsive":22308,"/docs/modules/form":23225,"/docs/modules/loading":24790,"/docs/modules/lazy":25293,"/docs/modules/video-autoplay":25977,"/docs/modules/fps-tracker":26522,"/docs/modules/position-tracker":27128,"/docs/custom-modules/overview":27992,"/docs/custom-modules/first-module":28227,"/docs/custom-modules/element-vs-global":28824,"/docs/custom-modules/module-contract":29265,"/docs/custom-modules/lifecycle-hooks":29895,"/docs/custom-modules/objects-and-attributes":30505,"/docs/custom-modules/context-tools-events":31230,"/docs/custom-modules/context-tools-events/context":31389,"/docs/custom-modules/context-tools-events/tools":31663,"/docs/custom-modules/context-tools-events/states":32303,"/docs/custom-modules/context-tools-events/events":32540,"/docs/custom-modules/performance-patterns":32820,"/docs/custom-modules/worked-example":33336,"/docs/api/overview":34358,"/docs/api/string-tune":34543,"/docs/api/events":34977,"/docs/api/settings":35831,"/docs/api/attributes":35903,"/docs/api/css-variables":36434,"/docs/api/utilities":37327,"/docs/api/frame-dom":37430,"/docs/api/style-txn":37631,"/docs/api/dom-batcher":37836,"/docs/api/grid-adapter":37995,"/docs/api/debounce":38160,"/docs/api/string-fps":38229,"/docs/api/string-settings":38355,"/docs/api/is-coarse-pointer":38468,"/docs/api/parse-part-of":38550,"/docs/api/state-models":38667,"/docs/api/string-data":38745,"/docs/api/scroll-state":38835,"/docs/api/viewport-state":38992,"/docs/api/cursor-state":39096,"/docs/api/time-state":39198,"/docs/api/system-state":39282,"/docs/api/render-state":39355},[39432,39437,39445,39449,39453,39457,39461,39465,39469,39473,39477,39481,39487,39491,39495,39499,39503,39507,39513,39517,39521,39525,39529,39533,39537,39543,39547,39551,39555,39559,39563,39569,39573,39577,39581,39584,39589,39595,39599,39603,39607,39610,39616,39620,39624,39628,39632,39637,39641,39645,39649,39653,39657,39661,39665,39669,39673,39681,39685,39690,39694,39698,39702,39706,39711,39717,39722,39726,39730,39734,39740,39744,39748,39752,39756,39760,39764,39768,39772,39776,39780,39784,39788,39794,39798,39802,39806,39810,39816,39820,39824,39829,39835,39839,39843,39847,39851,39855,39861,39865,39869,39873,39879,39883,39887,39891,39895,39901,39905,39909,39912,39918,39922,39926,39930,39934,39938,39942,39948,39952,39956,39960,39964,39968,39972,39976,39981,39988,39993,39997,40001,40005,40009,40013,40017,40021,40025,40031,40036,40041,40046,40050,40054,40058,40062,40066,40070,40074,40077,40083,40088,40092,40096,40100,40104,40108,40112,40116,40119,40125,40130,40135,40139,40143,40147,40151,40155,40159,40163,40166,40172,40177,40182,40187,40191,40195,40199,40203,40207,40211,40215,40218,40224,40229,40233,40237,40241,40245,40249,40253,40257,40261,40267,40271,40275,40279,40283,40287,40291,40295,40298,40304,40308,40312,40316,40320,40324,40328,40332,40336,40342,40346,40350,40354,40358,40362,40366,40370,40374,40379,40383,40387,40391,40395,40400,40404,40408,40412,40416,40420,40424,40428,40432,40436,40441,40445,40449,40453,40457,40461,40465,40469,40473,40477,40483,40487,40491,40495,40499,40504,40508,40512,40516,40520,40524,40528,40534,40538,40542,40546,40550,40555,40559,40563,40567,40571,40575,40579,40583,40587,40591,40596,40600,40604,40608,40612,40616,40620,40626,40630,40634,40638,40642,40646,40649,40655,40659,40664,40669,40673,40678,40682,40686,40690,40694,40698,40702,40706,40709,40715,40719,40723,40728,40732,40736,40741,40745,40749,40753,40757,40761,40765,40769,40772,40778,40782,40786,40790,40794,40799,40803,40808,40812,40816,40820,40824,40828,40832,40836,40840,40846,40850,40854,40858,40862,40866,40870,40874,40878,40882,40886,40890,40894,40898,40902,40906,40910,40914,40918,40921,40927,40931,40936,40940,40944,40948,40952,40956,40960,40964,40968,40972,40976,40982,40986,40990,40994,40998,41002,41006,41010,41014,41019,41023,41027,41031,41035,41039,41043,41047,41051,41055,41059,41063,41067,41071,41075,41079,41083,41087,41093,41097,41101,41106,41110,41114,41118,41122,41126,41130,41134,41138,41142,41146,41152,41156,41160,41164,41168,41172,41176,41180,41184,41188,41192,41196,41200,41204,41207,41213,41217,41221,41225,41229,41233,41237,41241,41244,41250,41254,41258,41262,41267,41271,41275,41279,41284,41288,41292,41296,41300,41304,41308,41312,41316,41320,41326,41330,41334,41339,41343,41347,41351,41355,41359,41363,41367,41370,41376,41380,41384,41388,41392,41396,41400,41404,41408,41411,41417,41421,41425,41429,41433,41437,41441,41445,41449,41455,41459,41463,41467,41471,41475,41479,41483,41487,41493,41497,41501,41505,41509,41513,41517,41521,41524,41530,41534,41538,41542,41546,41550,41554,41558,41562,41568,41572,41576,41580,41584,41589,41595,41599,41603,41607,41611,41615,41621,41625,41629,41633,41637,41642,41648,41652,41656,41660,41664,41668,41672,41676,41680,41686,41690,41694,41698,41702,41706,41710,41716,41720,41724,41728,41732,41736,41740,41744,41748,41754,41758,41761,41767,41771,41775,41779,41783,41787,41790,41796,41800,41804,41808,41812,41816,41820,41824,41828,41832,41836,41840,41844,41848,41852,41856,41860,41864,41868,41872,41876,41880,41884,41888,41892,41896,41900,41903,41909,41913,41917,41921,41925,41929,41933,41937,41940,41946,41950,41954,41958,41962,41966,41970,41975,41981,41985,41989,41993,41997,42001,42005,42009,42013,42019,42023,42027,42031,42035,42039,42044,42050,42054,42058,42062,42066,42072,42076,42080,42084,42088,42092,42096,42100,42104,42108,42112,42116,42119,42125,42129,42133,42137,42141,42145,42149,42153,42157,42160,42166,42170,42173,42179,42183,42187,42191,42195,42199,42203,42209,42213,42217,42221,42225,42229,42233,42237,42241,42247,42251,42255,42259,42265,42269,42273,42277,42281,42285,42289,42293,42299,42303,42307,42311,42315,42319,42323,42327,42333,42337,42341,42345,42349,42353,42357,42361,42367,42371,42375,42379,42383,42387,42390,42396,42400,42404,42408,42412,42418,42422,42426,42430,42434,42438,42442,42448,42452,42456,42460,42464,42470,42474,42478,42482,42486,42492,42496,42500,42504,42508,42513,42519,42523,42527,42533,42537,42541,42545,42549,42555,42559,42563,42567,42571,42577,42581,42585,42589,42593,42599,42603,42607,42611,42615,42621,42625,42629,42633,42637,42643,42647,42651,42655,42659,42665,42669,42673],{"id":6,"title":7,"description":8,"kind":9,"type":39433,"section":10,"path":6,"group":-1,"order":11,"pageTitle":7,"context":10,"tokens":39434,"tags":39436,"activation":-1,"related":18,"status":-1,"integration":-1},"page",[7,8,10,13,14,39435,14],"docs",[10],{"id":39438,"title":40,"description":39439,"kind":9,"type":39440,"section":10,"path":6,"anchor":39,"group":-1,"order":11,"pageTitle":7,"context":39441,"tokens":39442,"tags":39443,"activation":-1,"related":18,"status":-1,"integration":-1},"/docs/overview::heading::what-matters-first","Section in Overview","heading","Overview / Start Here",[40,7,8,10,13,14],[39444,10],"Heading",{"id":39446,"title":77,"description":39439,"kind":9,"type":39440,"section":10,"path":6,"anchor":76,"group":-1,"order":11,"pageTitle":7,"context":39441,"tokens":39447,"tags":39448,"activation":-1,"related":18,"status":-1,"integration":-1},"/docs/overview::heading::runtime-model",[77,7,8,10,13,14],[39444,10],{"id":39450,"title":123,"description":39439,"kind":9,"type":39440,"section":10,"path":6,"anchor":122,"group":-1,"order":11,"pageTitle":7,"context":39441,"tokens":39451,"tags":39452,"activation":-1,"related":18,"status":-1,"integration":-1},"/docs/overview::heading::documentation-model",[123,7,8,10,13,14],[39444,10],{"id":39454,"title":172,"description":39439,"kind":9,"type":39440,"section":10,"path":6,"anchor":171,"group":-1,"order":11,"pageTitle":7,"context":39441,"tokens":39455,"tags":39456,"activation":-1,"related":18,"status":-1,"integration":-1},"/docs/overview::heading::package-boundaries",[172,7,8,10,13,14],[39444,10],{"id":39458,"title":177,"description":39439,"kind":9,"type":39440,"section":10,"path":6,"anchor":176,"group":-1,"order":11,"pageTitle":7,"context":39441,"tokens":39459,"tags":39460,"activation":-1,"related":18,"status":-1,"integration":-1},"/docs/overview::heading::built-in-modules",[177,7,8,10,13,14],[39444,10],{"id":39462,"title":209,"description":39439,"kind":9,"type":39440,"section":10,"path":6,"anchor":208,"group":-1,"order":11,"pageTitle":7,"context":39441,"tokens":39463,"tags":39464,"activation":-1,"related":18,"status":-1,"integration":-1},"/docs/overview::heading::custom-modules",[209,7,8,10,13,14],[39444,10],{"id":39466,"title":216,"description":39439,"kind":9,"type":39440,"section":10,"path":6,"anchor":215,"group":-1,"order":11,"pageTitle":7,"context":39441,"tokens":39467,"tags":39468,"activation":-1,"related":18,"status":-1,"integration":-1},"/docs/overview::heading::internal-runtime",[216,7,8,10,13,14],[39444,10],{"id":39470,"title":223,"description":39439,"kind":9,"type":39440,"section":10,"path":6,"anchor":222,"group":-1,"order":11,"pageTitle":7,"context":39441,"tokens":39471,"tags":39472,"activation":-1,"related":18,"status":-1,"integration":-1},"/docs/overview::heading::core-integration-pattern",[223,7,8,10,13,14],[39444,10],{"id":39474,"title":394,"description":39439,"kind":9,"type":39440,"section":10,"path":6,"anchor":393,"group":-1,"order":11,"pageTitle":7,"context":39441,"tokens":39475,"tags":39476,"activation":-1,"related":18,"status":-1,"integration":-1},"/docs/overview::heading::what-this-docs-site-optimizes-for",[394,7,8,10,13,14],[39444,10],{"id":135,"title":136,"description":426,"kind":9,"type":39433,"section":10,"path":135,"group":-1,"order":427,"pageTitle":136,"context":10,"tokens":39478,"tags":39480,"activation":-1,"related":434,"status":-1,"integration":-1},[136,426,10,429,430,39435,39479],"introduction",[10],{"id":39482,"title":445,"description":39483,"kind":9,"type":39440,"section":10,"path":135,"anchor":444,"group":-1,"order":427,"pageTitle":136,"context":39484,"tokens":39485,"tags":39486,"activation":-1,"related":434,"status":-1,"integration":-1},"/docs/introduction::heading::install-the-package","Section in Installation","Installation / Start Here",[445,136,426,10,429,430],[39444,10],{"id":39488,"title":467,"description":39483,"kind":9,"type":39440,"section":10,"path":135,"anchor":466,"group":-1,"order":427,"pageTitle":136,"context":39484,"tokens":39489,"tags":39490,"activation":-1,"related":434,"status":-1,"integration":-1},"/docs/introduction::heading::minimal-setup",[467,136,426,10,429,430],[39444,10],{"id":39492,"title":604,"description":39483,"kind":9,"type":39440,"section":10,"path":135,"anchor":530,"group":-1,"order":427,"pageTitle":136,"context":39484,"tokens":39493,"tags":39494,"activation":-1,"related":434,"status":-1,"integration":-1},"/docs/introduction::heading::what-start-does",[604,136,426,10,429,430],[39444,10],{"id":39496,"title":554,"description":39483,"kind":9,"type":39440,"section":10,"path":135,"anchor":553,"group":-1,"order":427,"pageTitle":136,"context":39484,"tokens":39497,"tags":39498,"activation":-1,"related":434,"status":-1,"integration":-1},"/docs/introduction::heading::recommended-setup-rules",[554,136,426,10,429,430],[39444,10],{"id":39500,"title":575,"description":39483,"kind":9,"type":39440,"section":10,"path":135,"anchor":574,"group":-1,"order":427,"pageTitle":136,"context":39484,"tokens":39501,"tags":39502,"activation":-1,"related":434,"status":-1,"integration":-1},"/docs/introduction::heading::next-steps",[575,136,426,10,429,430],[39444,10],{"id":19,"title":140,"description":608,"kind":9,"type":39433,"section":10,"path":19,"group":-1,"order":609,"pageTitle":140,"context":10,"tokens":39504,"tags":39506,"activation":-1,"related":616,"status":-1,"integration":-1},[140,608,10,611,612,39435,39505],"quick start",[10],{"id":39508,"title":626,"description":39509,"kind":9,"type":39440,"section":10,"path":19,"anchor":625,"group":-1,"order":609,"pageTitle":140,"context":39510,"tokens":39511,"tags":39512,"activation":-1,"related":616,"status":-1,"integration":-1},"/docs/quick-start::heading::_1-create-the-instance","Section in Quick Start","Quick Start / Start Here",[626,140,608,10,611,612],[39444,10],{"id":39514,"title":666,"description":39509,"kind":9,"type":39440,"section":10,"path":19,"anchor":665,"group":-1,"order":609,"pageTitle":140,"context":39510,"tokens":39515,"tags":39516,"activation":-1,"related":616,"status":-1,"integration":-1},"/docs/quick-start::heading::_2-register-built-in-modules",[666,140,608,10,611,612],[39444,10],{"id":39518,"title":707,"description":39509,"kind":9,"type":39440,"section":10,"path":19,"anchor":706,"group":-1,"order":609,"pageTitle":140,"context":39510,"tokens":39519,"tags":39520,"activation":-1,"related":616,"status":-1,"integration":-1},"/docs/quick-start::heading::_3-start-the-runtime",[707,140,608,10,611,612],[39444,10],{"id":39522,"title":728,"description":39509,"kind":9,"type":39440,"section":10,"path":19,"anchor":727,"group":-1,"order":609,"pageTitle":140,"context":39510,"tokens":39523,"tags":39524,"activation":-1,"related":616,"status":-1,"integration":-1},"/docs/quick-start::heading::_4-mark-up-your-first-object",[728,140,608,10,611,612],[39444,10],{"id":39526,"title":769,"description":39509,"kind":9,"type":39440,"section":10,"path":19,"anchor":768,"group":-1,"order":609,"pageTitle":140,"context":39510,"tokens":39527,"tags":39528,"activation":-1,"related":616,"status":-1,"integration":-1},"/docs/quick-start::heading::_5-consume-the-result",[769,140,608,10,611,612],[39444,10],{"id":39530,"title":803,"description":39509,"kind":9,"type":39440,"section":10,"path":19,"anchor":802,"group":-1,"order":609,"pageTitle":140,"context":39510,"tokens":39531,"tags":39532,"activation":-1,"related":616,"status":-1,"integration":-1},"/docs/quick-start::heading::common-mistake",[803,140,608,10,611,612],[39444,10],{"id":435,"title":586,"description":818,"kind":9,"type":39433,"section":10,"path":435,"group":-1,"order":819,"pageTitle":586,"context":10,"tokens":39534,"tags":39536,"activation":-1,"related":825,"status":-1,"integration":-1},[586,818,10,821,39435,39535],"nuxt",[10],{"id":39538,"title":136,"description":39539,"kind":9,"type":39440,"section":10,"path":435,"anchor":441,"group":-1,"order":819,"pageTitle":586,"context":39540,"tokens":39541,"tags":39542,"activation":-1,"related":825,"status":-1,"integration":-1},"/docs/nuxt::heading::installation","Section in Nuxt Integration","Nuxt Integration / Start Here",[136,586,818,10,821],[39444,10],{"id":39544,"title":851,"description":39539,"kind":9,"type":39440,"section":10,"path":435,"anchor":850,"group":-1,"order":819,"pageTitle":586,"context":39540,"tokens":39545,"tags":39546,"activation":-1,"related":825,"status":-1,"integration":-1},"/docs/nuxt::heading::client-plugin",[851,586,818,10,821],[39444,10],{"id":39548,"title":1053,"description":39539,"kind":9,"type":39440,"section":10,"path":435,"anchor":1052,"group":-1,"order":819,"pageTitle":586,"context":39540,"tokens":39549,"tags":39550,"activation":-1,"related":825,"status":-1,"integration":-1},"/docs/nuxt::heading::typing-the-injection-optional",[1053,586,818,10,821],[39444,10],{"id":39552,"title":1210,"description":39539,"kind":9,"type":39440,"section":10,"path":435,"anchor":1209,"group":-1,"order":819,"pageTitle":586,"context":39540,"tokens":39553,"tags":39554,"activation":-1,"related":825,"status":-1,"integration":-1},"/docs/nuxt::heading::nuxt-configuration",[1210,586,818,10,821],[39444,10],{"id":39556,"title":1264,"description":39539,"kind":9,"type":39440,"section":10,"path":435,"anchor":1263,"group":-1,"order":819,"pageTitle":586,"context":39540,"tokens":39557,"tags":39558,"activation":-1,"related":825,"status":-1,"integration":-1},"/docs/nuxt::heading::using-stringtune-in-components",[1264,586,818,10,821],[39444,10],{"id":436,"title":591,"description":1907,"kind":9,"type":39433,"section":10,"path":436,"group":-1,"order":1908,"pageTitle":591,"context":10,"tokens":39560,"tags":39562,"activation":-1,"related":1914,"status":-1,"integration":-1},[591,1907,10,1910,39435,39561],"nextjs",[10],{"id":39564,"title":1924,"description":39565,"kind":9,"type":39440,"section":10,"path":436,"anchor":1923,"group":-1,"order":1908,"pageTitle":591,"context":39566,"tokens":39567,"tags":39568,"activation":-1,"related":1914,"status":-1,"integration":-1},"/docs/nextjs::heading::react-restriction-on-custom-attributes","Section in Next.js Integration","Next.js Integration / Start Here",[1924,591,1907,10,1910],[39444,10],{"id":39570,"title":2056,"description":39565,"kind":9,"type":39440,"section":10,"path":436,"anchor":2055,"group":-1,"order":1908,"pageTitle":591,"context":39566,"tokens":39571,"tags":39572,"activation":-1,"related":1914,"status":-1,"integration":-1},"/docs/nextjs::heading::using-in-nextjs-components",[2056,591,1907,10,1910],[39444,10],{"id":39574,"title":136,"description":39565,"kind":9,"type":39440,"section":10,"path":436,"anchor":441,"group":-1,"order":1908,"pageTitle":591,"context":39566,"tokens":39575,"tags":39576,"activation":-1,"related":1914,"status":-1,"integration":-1},"/docs/nextjs::heading::installation",[136,591,1907,10,1910],[39444,10],{"id":39578,"title":2219,"description":39565,"kind":9,"type":39440,"section":10,"path":436,"anchor":2218,"group":-1,"order":1908,"pageTitle":591,"context":39566,"tokens":39579,"tags":39580,"activation":-1,"related":1914,"status":-1,"integration":-1},"/docs/nextjs::heading::summary",[2219,591,1907,10,1910],[39444,10],{"id":2297,"title":2298,"description":2299,"kind":9,"type":39433,"section":10,"path":2297,"group":-1,"order":2300,"pageTitle":2298,"context":10,"tokens":39582,"tags":39583,"activation":-1,"related":2305,"status":-1,"integration":-1},[2298,2299,10,39435,2310,14],[10],{"id":20,"title":2339,"description":2340,"kind":2341,"type":39433,"section":151,"path":20,"group":2342,"order":11,"pageTitle":2339,"context":39585,"tokens":39586,"tags":39588,"activation":-1,"related":2349,"status":-1,"integration":-1},"Concepts / Core Concepts",[2339,2340,151,2342,2344,2345,39435,39587],"built in vs custom vs internal",[151,2342],{"id":39590,"title":2359,"description":39591,"kind":2341,"type":39440,"section":151,"path":20,"anchor":2358,"group":2342,"order":11,"pageTitle":2339,"context":39592,"tokens":39593,"tags":39594,"activation":-1,"related":2349,"status":-1,"integration":-1},"/docs/built-in-vs-custom-vs-internal::heading::built-in","Section in Built-in vs Custom vs Internal","Built-in vs Custom vs Internal / Concepts",[2359,2339,2340,151,2342,2344,2345],[39444,151,2342],{"id":39596,"title":2396,"description":39591,"kind":2341,"type":39440,"section":151,"path":20,"anchor":2395,"group":2342,"order":11,"pageTitle":2339,"context":39592,"tokens":39597,"tags":39598,"activation":-1,"related":2349,"status":-1,"integration":-1},"/docs/built-in-vs-custom-vs-internal::heading::custom",[2396,2339,2340,151,2342,2344,2345],[39444,151,2342],{"id":39600,"title":2409,"description":39591,"kind":2341,"type":39440,"section":151,"path":20,"anchor":2408,"group":2342,"order":11,"pageTitle":2339,"context":39592,"tokens":39601,"tags":39602,"activation":-1,"related":2349,"status":-1,"integration":-1},"/docs/built-in-vs-custom-vs-internal::heading::internal",[2409,2339,2340,151,2342,2344,2345],[39444,151,2342],{"id":39604,"title":2419,"description":39591,"kind":2341,"type":39440,"section":151,"path":20,"anchor":2418,"group":2342,"order":11,"pageTitle":2339,"context":39592,"tokens":39605,"tags":39606,"activation":-1,"related":2349,"status":-1,"integration":-1},"/docs/built-in-vs-custom-vs-internal::heading::documentation-rule",[2419,2339,2340,151,2342,2344,2345],[39444,151,2342],{"id":146,"title":147,"description":2450,"kind":2341,"type":39433,"section":151,"path":146,"group":2342,"order":427,"pageTitle":147,"context":39585,"tokens":39608,"tags":39609,"activation":-1,"related":2462,"status":-1,"integration":-1},[147,2450,151,2342,2452,2453,2454,2455,2252,764,2457,2458,2459,39435,2470],[151,2342],{"id":39611,"title":2252,"description":39612,"kind":2341,"type":4937,"section":151,"path":146,"group":2342,"order":427,"pageTitle":147,"context":39613,"tokens":39614,"tags":39615,"activation":-1,"related":2462,"status":-1,"integration":-1},"/docs/configuration::attr::string","Configuration attribute","Configuration / Concepts",[2252,147,2450,151,2342,2452,2453,2454,2455],[4914,151,2342],{"id":39617,"title":764,"description":39612,"kind":2341,"type":4937,"section":151,"path":146,"group":2342,"order":427,"pageTitle":147,"context":39613,"tokens":39618,"tags":39619,"activation":-1,"related":2462,"status":-1,"integration":-1},"/docs/configuration::attr::string-id",[764,147,2450,151,2342,2452,2453,2454,2455],[4914,151,2342],{"id":39621,"title":2457,"description":39612,"kind":2341,"type":4937,"section":151,"path":146,"group":2342,"order":427,"pageTitle":147,"context":39613,"tokens":39622,"tags":39623,"activation":-1,"related":2462,"status":-1,"integration":-1},"/docs/configuration::attr::string-copy-from",[2457,147,2450,151,2342,2452,2453,2454,2455],[4914,151,2342],{"id":39625,"title":2458,"description":39612,"kind":2341,"type":4937,"section":151,"path":146,"group":2342,"order":427,"pageTitle":147,"context":39613,"tokens":39626,"tags":39627,"activation":-1,"related":2462,"status":-1,"integration":-1},"/docs/configuration::attr::string-fixed",[2458,147,2450,151,2342,2452,2453,2454,2455],[4914,151,2342],{"id":39629,"title":2459,"description":39612,"kind":2341,"type":4937,"section":151,"path":146,"group":2342,"order":427,"pageTitle":147,"context":39613,"tokens":39630,"tags":39631,"activation":-1,"related":2462,"status":-1,"integration":-1},"/docs/configuration::attr::string-self-disable",[2459,147,2450,151,2342,2452,2453,2454,2455],[4914,151,2342],{"id":39633,"title":2474,"description":39634,"kind":2341,"type":39440,"section":151,"path":146,"anchor":2473,"group":2342,"order":427,"pageTitle":147,"context":39613,"tokens":39635,"tags":39636,"activation":-1,"related":2462,"status":-1,"integration":-1},"/docs/configuration::heading::global-setup","Section in Configuration",[2474,147,2450,151,2342,2452,2453,2454,2455],[39444,151,2342],{"id":39638,"title":2547,"description":39634,"kind":2341,"type":39440,"section":151,"path":146,"anchor":2546,"group":2342,"order":427,"pageTitle":147,"context":39613,"tokens":39639,"tags":39640,"activation":-1,"related":2462,"status":-1,"integration":-1},"/docs/configuration::heading::supported-helpers",[2547,147,2450,151,2342,2452,2453,2454,2455],[39444,151,2342],{"id":39642,"title":2553,"description":39634,"kind":2341,"type":39440,"section":151,"path":146,"anchor":2550,"group":2342,"order":427,"pageTitle":147,"context":39613,"tokens":39643,"tags":39644,"activation":-1,"related":2462,"status":-1,"integration":-1},"/docs/configuration::heading::scrollto",[2553,147,2450,151,2342,2452,2453,2454,2455],[39444,151,2342],{"id":39646,"title":2726,"description":39634,"kind":2341,"type":39440,"section":151,"path":146,"anchor":2723,"group":2342,"order":427,"pageTitle":147,"context":39613,"tokens":39647,"tags":39648,"activation":-1,"related":2462,"status":-1,"integration":-1},"/docs/configuration::heading::invalidatecenterid",[2726,147,2450,151,2342,2452,2453,2454,2455],[39444,151,2342],{"id":39650,"title":2769,"description":39634,"kind":2341,"type":39440,"section":151,"path":146,"anchor":2766,"group":2342,"order":427,"pageTitle":147,"context":39613,"tokens":39651,"tags":39652,"activation":-1,"related":2462,"status":-1,"integration":-1},"/docs/configuration::heading::onresizeforce",[2769,147,2450,151,2342,2452,2453,2454,2455],[39444,151,2342],{"id":39654,"title":2800,"description":39634,"kind":2341,"type":39440,"section":151,"path":146,"anchor":2799,"group":2342,"order":427,"pageTitle":147,"context":39613,"tokens":39655,"tags":39656,"activation":-1,"related":2462,"status":-1,"integration":-1},"/docs/configuration::heading::not-supported-as-public-api",[2800,147,2450,151,2342,2452,2453,2454,2455],[39444,151,2342],{"id":39658,"title":2820,"description":39634,"kind":2341,"type":39440,"section":151,"path":146,"anchor":2817,"group":2342,"order":427,"pageTitle":147,"context":39613,"tokens":39659,"tags":39660,"activation":-1,"related":2462,"status":-1,"integration":-1},"/docs/configuration::heading::scrollposition",[2820,147,2450,151,2342,2452,2453,2454,2455],[39444,151,2342],{"id":39662,"title":2829,"description":39634,"kind":2341,"type":39440,"section":151,"path":146,"anchor":2828,"group":2342,"order":427,"pageTitle":147,"context":39613,"tokens":39663,"tags":39664,"activation":-1,"related":2462,"status":-1,"integration":-1},"/docs/configuration::heading::common-attributes",[2829,147,2450,151,2342,2452,2453,2454,2455],[39444,151,2342],{"id":39666,"title":2850,"description":39634,"kind":2341,"type":39440,"section":151,"path":146,"anchor":2849,"group":2342,"order":427,"pageTitle":147,"context":39613,"tokens":39667,"tags":39668,"activation":-1,"related":2462,"status":-1,"integration":-1},"/docs/configuration::heading::notes-on-legacy-or-misleading-attributes",[2850,147,2450,151,2342,2452,2453,2454,2455],[39444,151,2342],{"id":2465,"title":2887,"description":2888,"kind":2341,"type":39433,"section":151,"path":2465,"group":2342,"order":609,"pageTitle":2887,"context":39585,"tokens":39670,"tags":39672,"activation":-1,"related":2896,"status":-1,"integration":-1},[2887,2888,151,2342,764,2890,2891,799,2894,39435,39671],"object ids",[151,2342],{"id":39674,"title":799,"description":39675,"kind":2341,"type":39676,"section":151,"path":2465,"group":2342,"order":609,"pageTitle":2887,"context":39677,"tokens":39678,"tags":39679,"activation":-1,"related":2896,"status":-1,"integration":-1},"/docs/object-ids::event::object:progress:\u003Cid>","Object IDs event","event","Object IDs / Concepts",[799,2887,2888,151,2342,764,2890,2891],[39680,151,2342],"Event",{"id":39682,"title":2894,"description":39675,"kind":2341,"type":39676,"section":151,"path":2465,"group":2342,"order":609,"pageTitle":2887,"context":39677,"tokens":39683,"tags":39684,"activation":-1,"related":2896,"status":-1,"integration":-1},"/docs/object-ids::event::object:parallax:\u003Cid>",[2894,2887,2888,151,2342,764,2890,2891],[39680,151,2342],{"id":39686,"title":3049,"description":39687,"kind":2341,"type":39440,"section":151,"path":2465,"anchor":2907,"group":2342,"order":609,"pageTitle":2887,"context":39677,"tokens":39688,"tags":39689,"activation":-1,"related":2896,"status":-1,"integration":-1},"/docs/object-ids::heading::why-string-id-exists","Section in Object IDs",[3049,2887,2888,151,2342,764,2890,2891],[39444,151,2342],{"id":39691,"title":2929,"description":39687,"kind":2341,"type":39440,"section":151,"path":2465,"anchor":2070,"group":2342,"order":609,"pageTitle":2887,"context":39677,"tokens":39692,"tags":39693,"activation":-1,"related":2896,"status":-1,"integration":-1},"/docs/object-ids::heading::example",[2929,2887,2888,151,2342,764,2890,2891],[39444,151,2342],{"id":39695,"title":3001,"description":39687,"kind":2341,"type":39440,"section":151,"path":2465,"anchor":3000,"group":2342,"order":609,"pageTitle":2887,"context":39677,"tokens":39696,"tags":39697,"activation":-1,"related":2896,"status":-1,"integration":-1},"/docs/object-ids::heading::important-payload-note",[3001,2887,2888,151,2342,764,2890,2891],[39444,151,2342],{"id":39699,"title":3016,"description":39687,"kind":2341,"type":39440,"section":151,"path":2465,"anchor":3015,"group":2342,"order":609,"pageTitle":2887,"context":39677,"tokens":39700,"tags":39701,"activation":-1,"related":2896,"status":-1,"integration":-1},"/docs/object-ids::heading::public-api-boundary",[3016,2887,2888,151,2342,764,2890,2891],[39444,151,2342],{"id":39703,"title":3033,"description":39687,"kind":2341,"type":39440,"section":151,"path":2465,"anchor":3032,"group":2342,"order":609,"pageTitle":2887,"context":39677,"tokens":39704,"tags":39705,"activation":-1,"related":2896,"status":-1,"integration":-1},"/docs/object-ids::heading::attribute-removal",[3033,2887,2888,151,2342,764,2890,2891],[39444,151,2342],{"id":2898,"title":3055,"description":3056,"kind":2341,"type":39433,"section":151,"path":2898,"group":3057,"order":1721,"pageTitle":3055,"context":39707,"tokens":39708,"tags":39710,"activation":-1,"related":3062,"status":-1,"integration":-1},"Concepts / Advanced Concepts",[3055,3056,151,3057,2457,2457,39435,39709],"element mirroring",[151,3057],{"id":39712,"title":2457,"description":39713,"kind":2341,"type":4937,"section":151,"path":2898,"group":3057,"order":1721,"pageTitle":3055,"context":39714,"tokens":39715,"tags":39716,"activation":-1,"related":3062,"status":-1,"integration":-1},"/docs/element-mirroring::attr::string-copy-from","Element Mirroring attribute","Element Mirroring / Concepts",[2457,3055,3056,151,3057,2457],[4914,151,3057],{"id":39718,"title":3081,"description":39719,"kind":2341,"type":39440,"section":151,"path":2898,"anchor":3080,"group":3057,"order":1721,"pageTitle":3055,"context":39714,"tokens":39720,"tags":39721,"activation":-1,"related":3062,"status":-1,"integration":-1},"/docs/element-mirroring::heading::how-it-works","Section in Element Mirroring",[3081,3055,3056,151,3057,2457],[39444,151,3057],{"id":39723,"title":3209,"description":39719,"kind":2341,"type":39440,"section":151,"path":2898,"anchor":3208,"group":3057,"order":1721,"pageTitle":3055,"context":39714,"tokens":39724,"tags":39725,"activation":-1,"related":3062,"status":-1,"integration":-1},"/docs/element-mirroring::heading::supported-behavior",[3209,3055,3056,151,3057,2457],[39444,151,3057],{"id":39727,"title":3227,"description":39719,"kind":2341,"type":39440,"section":151,"path":2898,"anchor":3226,"group":3057,"order":1721,"pageTitle":3055,"context":39714,"tokens":39728,"tags":39729,"activation":-1,"related":3062,"status":-1,"integration":-1},"/docs/element-mirroring::heading::use-cases",[3227,3055,3056,151,3057,2457],[39444,151,3057],{"id":3259,"title":3260,"description":3261,"kind":2341,"type":39433,"section":151,"path":3259,"group":2342,"order":819,"pageTitle":3260,"context":39585,"tokens":39731,"tags":39733,"activation":-1,"related":3268,"status":-1,"integration":-1},[3260,3261,151,2342,3263,3264,39435,39732],"offset concepts",[151,2342],{"id":39735,"title":3291,"description":39736,"kind":2341,"type":39440,"section":151,"path":3259,"anchor":3290,"group":2342,"order":819,"pageTitle":3260,"context":39737,"tokens":39738,"tags":39739,"activation":-1,"related":3268,"status":-1,"integration":-1},"/docs/offset-concepts::heading::core-principle","Section in Offsets","Offsets / Concepts",[3291,3260,3261,151,2342,3263,3264],[39444,151,2342],{"id":39741,"title":3361,"description":39736,"kind":2341,"type":39440,"section":151,"path":3259,"anchor":3360,"group":2342,"order":819,"pageTitle":3260,"context":39737,"tokens":39742,"tags":39743,"activation":-1,"related":3268,"status":-1,"integration":-1},"/docs/offset-concepts::heading::what-is-an-offset",[3361,3260,3261,151,2342,3263,3264],[39444,151,2342],{"id":39745,"title":3415,"description":39736,"kind":2341,"type":39440,"section":151,"path":3259,"anchor":3414,"group":2342,"order":819,"pageTitle":3260,"context":39737,"tokens":39746,"tags":39747,"activation":-1,"related":3268,"status":-1,"integration":-1},"/docs/offset-concepts::heading::how-offsets-are-calculated",[3415,3260,3261,151,2342,3263,3264],[39444,151,2342],{"id":39749,"title":3451,"description":39736,"kind":2341,"type":39440,"section":151,"path":3259,"anchor":3450,"group":2342,"order":819,"pageTitle":3260,"context":39737,"tokens":39750,"tags":39751,"activation":-1,"related":3268,"status":-1,"integration":-1},"/docs/offset-concepts::heading::practical-examples",[3451,3260,3261,151,2342,3263,3264],[39444,151,2342],{"id":39753,"title":3455,"description":39736,"kind":2341,"type":39440,"section":151,"path":3259,"anchor":3454,"group":2342,"order":819,"pageTitle":3260,"context":39737,"tokens":39754,"tags":39755,"activation":-1,"related":3268,"status":-1,"integration":-1},"/docs/offset-concepts::heading::example-1-positive-offset-delay-the-trigger",[3455,3260,3261,151,2342,3263,3264],[39444,151,2342],{"id":39757,"title":3518,"description":39736,"kind":2341,"type":39440,"section":151,"path":3259,"anchor":3517,"group":2342,"order":819,"pageTitle":3260,"context":39737,"tokens":39758,"tags":39759,"activation":-1,"related":3268,"status":-1,"integration":-1},"/docs/offset-concepts::heading::example-2-negative-offset-early-trigger",[3518,3260,3261,151,2342,3263,3264],[39444,151,2342],{"id":39761,"title":3578,"description":39736,"kind":2341,"type":39440,"section":151,"path":3259,"anchor":3577,"group":2342,"order":819,"pageTitle":3260,"context":39737,"tokens":39762,"tags":39763,"activation":-1,"related":3268,"status":-1,"integration":-1},"/docs/offset-concepts::heading::offset-control-points-table",[3578,3260,3261,151,2342,3263,3264],[39444,151,2342],{"id":39765,"title":3635,"description":39736,"kind":2341,"type":39440,"section":151,"path":3259,"anchor":3634,"group":2342,"order":819,"pageTitle":3260,"context":39737,"tokens":39766,"tags":39767,"activation":-1,"related":3268,"status":-1,"integration":-1},"/docs/offset-concepts::heading::offset-units-table",[3635,3260,3261,151,2342,3263,3264],[39444,151,2342],{"id":39769,"title":3705,"description":39736,"kind":2341,"type":39440,"section":151,"path":3259,"anchor":3704,"group":2342,"order":819,"pageTitle":3260,"context":39737,"tokens":39770,"tags":39771,"activation":-1,"related":3268,"status":-1,"integration":-1},"/docs/offset-concepts::heading::visual-explanation",[3705,3260,3261,151,2342,3263,3264],[39444,151,2342],{"id":39773,"title":3736,"description":39736,"kind":2341,"type":39440,"section":151,"path":3259,"anchor":3735,"group":2342,"order":819,"pageTitle":3260,"context":39737,"tokens":39774,"tags":39775,"activation":-1,"related":3268,"status":-1,"integration":-1},"/docs/offset-concepts::heading::best-practices",[3736,3260,3261,151,2342,3263,3264],[39444,151,2342],{"id":39777,"title":3760,"description":39736,"kind":2341,"type":39440,"section":151,"path":3259,"anchor":3759,"group":2342,"order":819,"pageTitle":3260,"context":39737,"tokens":39778,"tags":39779,"activation":-1,"related":3268,"status":-1,"integration":-1},"/docs/offset-concepts::heading::common-pitfalls",[3760,3260,3261,151,2342,3263,3264],[39444,151,2342],{"id":39781,"title":3780,"description":39736,"kind":2341,"type":39440,"section":151,"path":3259,"anchor":3779,"group":2342,"order":819,"pageTitle":3260,"context":39737,"tokens":39782,"tags":39783,"activation":-1,"related":3268,"status":-1,"integration":-1},"/docs/offset-concepts::heading::in-summary",[3780,3260,3261,151,2342,3263,3264],[39444,151,2342],{"id":2897,"title":3811,"description":3812,"kind":2341,"type":39433,"section":151,"path":2897,"group":2342,"order":1908,"pageTitle":3811,"context":39585,"tokens":39785,"tags":39787,"activation":-1,"related":3818,"status":-1,"integration":-1},[3811,3812,151,2342,1536,1606,3814,39435,39786],"event system",[151,2342],{"id":39789,"title":3828,"description":39790,"kind":2341,"type":39440,"section":151,"path":2897,"anchor":3827,"group":2342,"order":1908,"pageTitle":3811,"context":39791,"tokens":39792,"tags":39793,"activation":-1,"related":3818,"status":-1,"integration":-1},"/docs/event-system::heading::global-events","Section in Event System","Event System / Concepts",[3828,3811,3812,151,2342,1536,1606,3814],[39444,151,2342],{"id":39795,"title":3869,"description":39790,"kind":2341,"type":39440,"section":151,"path":2897,"anchor":3868,"group":2342,"order":1908,"pageTitle":3811,"context":39791,"tokens":39796,"tags":39797,"activation":-1,"related":3818,"status":-1,"integration":-1},"/docs/event-system::heading::object-scoped-events",[3869,3811,3812,151,2342,1536,1606,3814],[39444,151,2342],{"id":39799,"title":3898,"description":39790,"kind":2341,"type":39440,"section":151,"path":2897,"anchor":3897,"group":2342,"order":1908,"pageTitle":3811,"context":39791,"tokens":39800,"tags":39801,"activation":-1,"related":3818,"status":-1,"integration":-1},"/docs/event-system::heading::payload-shape",[3898,3811,3812,151,2342,1536,1606,3814],[39444,151,2342],{"id":39803,"title":3946,"description":39790,"kind":2341,"type":39440,"section":151,"path":2897,"anchor":3945,"group":2342,"order":1908,"pageTitle":3811,"context":39791,"tokens":39804,"tags":39805,"activation":-1,"related":3818,"status":-1,"integration":-1},"/docs/event-system::heading::what-not-to-document-as-supported",[3946,3811,3812,151,2342,1536,1606,3814],[39444,151,2342],{"id":3968,"title":3969,"description":3970,"kind":2341,"type":39433,"section":151,"path":3968,"group":3057,"order":3971,"pageTitle":3969,"context":39707,"tokens":39807,"tags":39809,"activation":-1,"related":3979,"status":-1,"integration":-1},[3969,3970,151,3057,3973,3974,3975,39435,39808],"scroll marks",[151,3057],{"id":39811,"title":4003,"description":39812,"kind":2341,"type":39440,"section":151,"path":3968,"anchor":4002,"group":3057,"order":3971,"pageTitle":3969,"context":39813,"tokens":39814,"tags":39815,"activation":-1,"related":3979,"status":-1,"integration":-1},"/docs/scroll-marks::heading::usage","Section in Programmatic Scroll Marks","Programmatic Scroll Marks / Concepts",[4003,3969,3970,151,3057,3973,3974,3975],[39444,151,3057],{"id":39817,"title":3081,"description":39812,"kind":2341,"type":39440,"section":151,"path":3968,"anchor":3080,"group":3057,"order":3971,"pageTitle":3969,"context":39813,"tokens":39818,"tags":39819,"activation":-1,"related":3979,"status":-1,"integration":-1},"/docs/scroll-marks::heading::how-it-works",[3081,3969,3970,151,3057,3973,3974,3975],[39444,151,3057],{"id":39821,"title":4260,"description":39812,"kind":2341,"type":39440,"section":151,"path":3968,"anchor":4259,"group":3057,"order":3971,"pageTitle":3969,"context":39813,"tokens":39822,"tags":39823,"activation":-1,"related":3979,"status":-1,"integration":-1},"/docs/scroll-marks::heading::managing-memory",[4260,3969,3970,151,3057,3973,3974,3975],[39444,151,3057],{"id":3982,"title":4296,"description":4297,"kind":2341,"type":39433,"section":151,"path":3982,"group":4299,"order":4298,"pageTitle":4296,"context":39825,"tokens":39826,"tags":39828,"activation":-1,"related":4308,"status":-1,"integration":-1},"Concepts / Scroll Concepts",[4296,4297,151,4299,4301,4302,4303,4304,39435,39827],"scroll modes",[151,4299],{"id":39830,"title":4319,"description":39831,"kind":2341,"type":39440,"section":151,"path":3982,"anchor":4318,"group":4299,"order":4298,"pageTitle":4296,"context":39832,"tokens":39833,"tags":39834,"activation":-1,"related":4308,"status":-1,"integration":-1},"/docs/scroll-modes::heading::built-in-modes","Section in Scroll Modes","Scroll Modes / Concepts",[4319,4296,4297,151,4299,4301,4302,4303,4304],[39444,151,4299],{"id":39836,"title":4337,"description":39831,"kind":2341,"type":39440,"section":151,"path":3982,"anchor":4336,"group":4299,"order":4298,"pageTitle":4296,"context":39832,"tokens":39837,"tags":39838,"activation":-1,"related":4308,"status":-1,"integration":-1},"/docs/scroll-modes::heading::defaults",[4337,4296,4297,151,4299,4301,4302,4303,4304],[39444,151,4299],{"id":39840,"title":4356,"description":39831,"kind":2341,"type":39440,"section":151,"path":3982,"anchor":4355,"group":4299,"order":4298,"pageTitle":4296,"context":39832,"tokens":39841,"tags":39842,"activation":-1,"related":4308,"status":-1,"integration":-1},"/docs/scroll-modes::heading::responsive-switching",[4356,4296,4297,151,4299,4301,4302,4303,4304],[39444,151,4299],{"id":39844,"title":4363,"description":39831,"kind":2341,"type":39440,"section":151,"path":3982,"anchor":4362,"group":4299,"order":4298,"pageTitle":4296,"context":39832,"tokens":39845,"tags":39846,"activation":-1,"related":4308,"status":-1,"integration":-1},"/docs/scroll-modes::heading::custom-modes",[4363,4296,4297,151,4299,4301,4302,4303,4304],[39444,151,4299],{"id":39848,"title":4376,"description":39831,"kind":2341,"type":39440,"section":151,"path":3982,"anchor":4375,"group":4299,"order":4298,"pageTitle":4296,"context":39832,"tokens":39849,"tags":39850,"activation":-1,"related":4308,"status":-1,"integration":-1},"/docs/scroll-modes::heading::public-guidance",[4376,4296,4297,151,4299,4301,4302,4303,4304],[39444,151,4299],{"id":4310,"title":4388,"description":4389,"kind":2341,"type":39433,"section":151,"path":4310,"group":4299,"order":4390,"pageTitle":4388,"context":39825,"tokens":39852,"tags":39854,"activation":-1,"related":4396,"status":-1,"integration":-1},[4388,4389,151,4299,4392,39435,39853],"scroll containers",[151,4299],{"id":39856,"title":4421,"description":39857,"kind":2341,"type":39440,"section":151,"path":4310,"anchor":4420,"group":4299,"order":4390,"pageTitle":4388,"context":39858,"tokens":39859,"tags":39860,"activation":-1,"related":4396,"status":-1,"integration":-1},"/docs/scroll-containers::heading::setting-a-custom-container","Section in Custom Scroll Containers","Custom Scroll Containers / Concepts",[4421,4388,4389,151,4299,4392],[39444,151,4299],{"id":39862,"title":4538,"description":39857,"kind":2341,"type":39440,"section":151,"path":4310,"anchor":4537,"group":4299,"order":4390,"pageTitle":4388,"context":39858,"tokens":39863,"tags":39864,"activation":-1,"related":4396,"status":-1,"integration":-1},"/docs/scroll-containers::heading::important-details",[4538,4388,4389,151,4299,4392],[39444,151,4299],{"id":39866,"title":4568,"description":39857,"kind":2341,"type":39440,"section":151,"path":4310,"anchor":4567,"group":4299,"order":4390,"pageTitle":4388,"context":39858,"tokens":39867,"tags":39868,"activation":-1,"related":4396,"status":-1,"integration":-1},"/docs/scroll-containers::heading::resetting-to-window",[4568,4388,4389,151,4299,4392],[39444,151,4299],{"id":4602,"title":4603,"description":4604,"kind":2341,"type":39433,"section":151,"path":4602,"group":3057,"order":4605,"pageTitle":4603,"context":39707,"tokens":39870,"tags":39872,"activation":-1,"related":4613,"status":-1,"integration":-1},[4603,4604,151,3057,2389,4607,4608,4609,39435,39871],"performance",[151,3057],{"id":39874,"title":4632,"description":39875,"kind":2341,"type":39440,"section":151,"path":4602,"anchor":4631,"group":3057,"order":4605,"pageTitle":4603,"context":39876,"tokens":39877,"tags":39878,"activation":-1,"related":4613,"status":-1,"integration":-1},"/docs/performance::heading::the-layout-thrashing-problem","Section in Performance & Batching","Performance & Batching / Concepts",[4632,4603,4604,151,3057,2389,4607,4608,4609],[39444,151,3057],{"id":39880,"title":4647,"description":39875,"kind":2341,"type":39440,"section":151,"path":4602,"anchor":4646,"group":3057,"order":4605,"pageTitle":4603,"context":39876,"tokens":39881,"tags":39882,"activation":-1,"related":4613,"status":-1,"integration":-1},"/docs/performance::heading::how-stringtune-solves-it",[4647,4603,4604,151,3057,2389,4607,4608,4609],[39444,151,3057],{"id":39884,"title":4865,"description":39875,"kind":2341,"type":39440,"section":151,"path":4602,"anchor":4659,"group":3057,"order":4605,"pageTitle":4603,"context":39876,"tokens":39885,"tags":39886,"activation":-1,"related":4613,"status":-1,"integration":-1},"/docs/performance::heading::framedommeasure-and-framedommutate",[4865,4603,4604,151,3057,2389,4607,4608,4609],[39444,151,3057],{"id":39888,"title":4792,"description":39875,"kind":2341,"type":39440,"section":151,"path":4602,"anchor":4791,"group":3057,"order":4605,"pageTitle":4603,"context":39876,"tokens":39889,"tags":39890,"activation":-1,"related":4613,"status":-1,"integration":-1},"/docs/performance::heading::global-configuration",[4792,4603,4604,151,3057,2389,4607,4608,4609],[39444,151,3057],{"id":4397,"title":4868,"description":4869,"kind":2341,"type":39433,"section":151,"path":4397,"group":4299,"order":4605,"pageTitle":4868,"context":39825,"tokens":39892,"tags":39894,"activation":-1,"related":4874,"status":-1,"integration":-1},[4868,4869,151,4299,39435,39893],"scroll isolation",[151,4299],{"id":39896,"title":4905,"description":39897,"kind":2341,"type":39440,"section":151,"path":4397,"anchor":4904,"group":4299,"order":4605,"pageTitle":4868,"context":39898,"tokens":39899,"tags":39900,"activation":-1,"related":4874,"status":-1,"integration":-1},"/docs/scroll-isolation::heading::attributes","Section in Scroll Isolation","Scroll Isolation / Concepts",[4905,4868,4869,151,4299],[39444,151,4299],{"id":39902,"title":4975,"description":39897,"kind":2341,"type":39440,"section":151,"path":4397,"anchor":4974,"group":4299,"order":4605,"pageTitle":4868,"context":39898,"tokens":39903,"tags":39904,"activation":-1,"related":4874,"status":-1,"integration":-1},"/docs/scroll-isolation::heading::module-snapshot",[4975,4868,4869,151,4299],[39444,151,4299],{"id":39906,"title":5011,"description":39897,"kind":2341,"type":39440,"section":151,"path":4397,"anchor":5010,"group":4299,"order":4605,"pageTitle":4868,"context":39898,"tokens":39907,"tags":39908,"activation":-1,"related":4874,"status":-1,"integration":-1},"/docs/scroll-isolation::heading::basic-usage",[5011,4868,4869,151,4299],[39444,151,4299],{"id":158,"title":5185,"description":5186,"kind":9,"type":39433,"section":5187,"path":158,"group":-1,"order":293,"pageTitle":5185,"context":5187,"tokens":39910,"tags":39911,"activation":-1,"related":5192,"status":-1,"integration":-1},[5185,5186,5187,39435,28089,14],[5187],{"id":39913,"title":5204,"description":39914,"kind":9,"type":39440,"section":5187,"path":158,"anchor":5203,"group":-1,"order":293,"pageTitle":5185,"context":39915,"tokens":39916,"tags":39917,"activation":-1,"related":5192,"status":-1,"integration":-1},"/docs/modules/overview::heading::scroll-motion","Section in Modules Overview","Modules Overview / Modules",[5204,5185,5186,5187],[39444,5187],{"id":39919,"title":5253,"description":39914,"kind":9,"type":39440,"section":5187,"path":158,"anchor":5252,"group":-1,"order":293,"pageTitle":5185,"context":39915,"tokens":39920,"tags":39921,"activation":-1,"related":5192,"status":-1,"integration":-1},"/docs/modules/overview::heading::cursor-interaction",[5253,5185,5186,5187],[39444,5187],{"id":39923,"title":5282,"description":39914,"kind":9,"type":39440,"section":5187,"path":158,"anchor":5281,"group":-1,"order":293,"pageTitle":5185,"context":39915,"tokens":39924,"tags":39925,"activation":-1,"related":5192,"status":-1,"integration":-1},"/docs/modules/overview::heading::content-layout",[5282,5185,5186,5187],[39444,5187],{"id":39927,"title":5305,"description":39914,"kind":9,"type":39440,"section":5187,"path":158,"anchor":5304,"group":-1,"order":293,"pageTitle":5185,"context":39915,"tokens":39928,"tags":39929,"activation":-1,"related":5192,"status":-1,"integration":-1},"/docs/modules/overview::heading::media-forms",[5305,5185,5186,5187],[39444,5187],{"id":39931,"title":5333,"description":39914,"kind":9,"type":39440,"section":5187,"path":158,"anchor":5332,"group":-1,"order":293,"pageTitle":5185,"context":39915,"tokens":39932,"tags":39933,"activation":-1,"related":5192,"status":-1,"integration":-1},"/docs/modules/overview::heading::diagnostics",[5333,5185,5186,5187],[39444,5187],{"id":39935,"title":5351,"description":39914,"kind":9,"type":39440,"section":5187,"path":158,"anchor":5350,"group":-1,"order":293,"pageTitle":5185,"context":39915,"tokens":39936,"tags":39937,"activation":-1,"related":5192,"status":-1,"integration":-1},"/docs/modules/overview::heading::not-in-this-section",[5351,5185,5186,5187],[39444,5187],{"id":617,"title":190,"description":5368,"kind":5369,"type":39433,"section":5187,"path":617,"group":5204,"order":11,"pageTitle":190,"context":39939,"tokens":39940,"tags":39941,"activation":3242,"related":5381,"status":5370,"integration":2706},"Modules / Scroll & Motion",[190,5368,5187,5204,5373,190,2890,5375,5376,5377,5378,3325,3341,3328,3344,799,795,3242,5370,2706,39435,28089,5373],[5187,5204,2706,5370],{"id":39943,"title":5375,"description":39944,"kind":5369,"type":4937,"section":5187,"path":617,"group":5204,"order":11,"pageTitle":190,"context":39945,"tokens":39946,"tags":39947,"activation":3242,"related":5381,"status":5370,"integration":2706},"/docs/modules/progress::attr::string-key","StringProgress attribute","StringProgress / Modules",[5375,190,5368,5187,5204,5373,190,2890],[4914,5187,5204,2706,5370],{"id":39949,"title":5376,"description":39944,"kind":5369,"type":4937,"section":5187,"path":617,"group":5204,"order":11,"pageTitle":190,"context":39945,"tokens":39950,"tags":39951,"activation":3242,"related":5381,"status":5370,"integration":2706},"/docs/modules/progress::attr::string-easing",[5376,190,5368,5187,5204,5373,190,2890],[4914,5187,5204,2706,5370],{"id":39953,"title":5377,"description":39944,"kind":5369,"type":4937,"section":5187,"path":617,"group":5204,"order":11,"pageTitle":190,"context":39945,"tokens":39954,"tags":39955,"activation":3242,"related":5381,"status":5370,"integration":2706},"/docs/modules/progress::attr::string-offset-top",[5377,190,5368,5187,5204,5373,190,2890],[4914,5187,5204,2706,5370],{"id":39957,"title":5378,"description":39944,"kind":5369,"type":4937,"section":5187,"path":617,"group":5204,"order":11,"pageTitle":190,"context":39945,"tokens":39958,"tags":39959,"activation":3242,"related":5381,"status":5370,"integration":2706},"/docs/modules/progress::attr::string-offset-bottom",[5378,190,5368,5187,5204,5373,190,2890],[4914,5187,5204,2706,5370],{"id":39961,"title":3325,"description":39944,"kind":5369,"type":4937,"section":5187,"path":617,"group":5204,"order":11,"pageTitle":190,"context":39945,"tokens":39962,"tags":39963,"activation":3242,"related":5381,"status":5370,"integration":2706},"/docs/modules/progress::attr::string-enter-el",[3325,190,5368,5187,5204,5373,190,2890],[4914,5187,5204,2706,5370],{"id":39965,"title":3341,"description":39944,"kind":5369,"type":4937,"section":5187,"path":617,"group":5204,"order":11,"pageTitle":190,"context":39945,"tokens":39966,"tags":39967,"activation":3242,"related":5381,"status":5370,"integration":2706},"/docs/modules/progress::attr::string-enter-vp",[3341,190,5368,5187,5204,5373,190,2890],[4914,5187,5204,2706,5370],{"id":39969,"title":3328,"description":39944,"kind":5369,"type":4937,"section":5187,"path":617,"group":5204,"order":11,"pageTitle":190,"context":39945,"tokens":39970,"tags":39971,"activation":3242,"related":5381,"status":5370,"integration":2706},"/docs/modules/progress::attr::string-exit-el",[3328,190,5368,5187,5204,5373,190,2890],[4914,5187,5204,2706,5370],{"id":39973,"title":3344,"description":39944,"kind":5369,"type":4937,"section":5187,"path":617,"group":5204,"order":11,"pageTitle":190,"context":39945,"tokens":39974,"tags":39975,"activation":3242,"related":5381,"status":5370,"integration":2706},"/docs/modules/progress::attr::string-exit-vp",[3344,190,5368,5187,5204,5373,190,2890],[4914,5187,5204,2706,5370],{"id":39977,"title":799,"description":39978,"kind":5369,"type":39676,"section":5187,"path":617,"group":5204,"order":11,"pageTitle":190,"context":39945,"tokens":39979,"tags":39980,"activation":3242,"related":5381,"status":5370,"integration":2706},"/docs/modules/progress::event::object:progress:\u003Cid>","StringProgress event",[799,190,5368,5187,5204,5373,190,2890],[39680,5187,5204,2706,5370],{"id":39982,"title":795,"description":39983,"kind":5369,"type":39984,"section":5187,"path":617,"group":5204,"order":11,"pageTitle":190,"context":39945,"tokens":39985,"tags":39986,"activation":3242,"related":5381,"status":5370,"integration":2706},"/docs/modules/progress::css::--progress","StringProgress CSS variable","css-variable",[795,190,5368,5187,5204,5373,190,2890],[39987,5187,5204,2706,5370],"CSS Variable",{"id":39989,"title":5407,"description":39990,"kind":5369,"type":39440,"section":5187,"path":617,"anchor":5406,"group":5204,"order":11,"pageTitle":190,"context":39945,"tokens":39991,"tags":39992,"activation":3242,"related":5381,"status":5370,"integration":2706},"/docs/modules/progress::heading::public-api","Section in StringProgress",[5407,190,5368,5187,5204,5373,190,2890],[39444,5187,5204,2706,5370],{"id":39994,"title":4905,"description":39990,"kind":5369,"type":39440,"section":5187,"path":617,"anchor":4904,"group":5204,"order":11,"pageTitle":190,"context":39945,"tokens":39995,"tags":39996,"activation":3242,"related":5381,"status":5370,"integration":2706},"/docs/modules/progress::heading::attributes",[4905,190,5368,5187,5204,5373,190,2890],[39444,5187,5204,2706,5370],{"id":39998,"title":5558,"description":39990,"kind":5369,"type":39440,"section":5187,"path":617,"anchor":5557,"group":5204,"order":11,"pageTitle":190,"context":39945,"tokens":39999,"tags":40000,"activation":3242,"related":5381,"status":5370,"integration":2706},"/docs/modules/progress::heading::css-variables-and-dom-output",[5558,190,5368,5187,5204,5373,190,2890],[39444,5187,5204,2706,5370],{"id":40002,"title":5593,"description":39990,"kind":5369,"type":39440,"section":5187,"path":617,"anchor":3814,"group":5204,"order":11,"pageTitle":190,"context":39945,"tokens":40003,"tags":40004,"activation":3242,"related":5381,"status":5370,"integration":2706},"/docs/modules/progress::heading::events",[5593,190,5368,5187,5204,5373,190,2890],[39444,5187,5204,2706,5370],{"id":40006,"title":5667,"description":39990,"kind":5369,"type":39440,"section":5187,"path":617,"anchor":5666,"group":5204,"order":11,"pageTitle":190,"context":39945,"tokens":40007,"tags":40008,"activation":3242,"related":5381,"status":5370,"integration":2706},"/docs/modules/progress::heading::mirror-behavior",[5667,190,5368,5187,5204,5373,190,2890],[39444,5187,5204,2706,5370],{"id":40010,"title":5689,"description":39990,"kind":5369,"type":39440,"section":5187,"path":617,"anchor":5688,"group":5204,"order":11,"pageTitle":190,"context":39945,"tokens":40011,"tags":40012,"activation":3242,"related":5381,"status":5370,"integration":2706},"/docs/modules/progress::heading::quick-example",[5689,190,5368,5187,5204,5373,190,2890],[39444,5187,5204,2706,5370],{"id":40014,"title":6074,"description":39990,"kind":5369,"type":39440,"section":5187,"path":617,"anchor":6073,"group":5204,"order":11,"pageTitle":190,"context":39945,"tokens":40015,"tags":40016,"activation":3242,"related":5381,"status":5370,"integration":2706},"/docs/modules/progress::heading::registration",[6074,190,5368,5187,5204,5373,190,2890],[39444,5187,5204,2706,5370],{"id":40018,"title":6133,"description":39990,"kind":5369,"type":39440,"section":5187,"path":617,"anchor":6132,"group":5204,"order":11,"pageTitle":190,"context":39945,"tokens":40019,"tags":40020,"activation":3242,"related":5381,"status":5370,"integration":2706},"/docs/modules/progress::heading::detailed-behavior",[6133,190,5368,5187,5204,5373,190,2890],[39444,5187,5204,2706,5370],{"id":5215,"title":5216,"description":6168,"kind":5369,"type":39433,"section":5187,"path":5215,"group":5204,"order":427,"pageTitle":5216,"context":39939,"tokens":40022,"tags":40024,"activation":6169,"related":6178,"status":5370,"integration":2706},[5216,6168,5187,5204,6171,5216,6173,6175,6177,6169,5370,2706,39435,28089,40023],"progress part",[5187,5204,2706,5370],{"id":40026,"title":6173,"description":40027,"kind":5369,"type":4937,"section":5187,"path":5215,"group":5204,"order":427,"pageTitle":5216,"context":40028,"tokens":40029,"tags":40030,"activation":6169,"related":6178,"status":5370,"integration":2706},"/docs/modules/progress-part::attr::string-part-of","StringProgressPart attribute","StringProgressPart / Modules",[6173,5216,6168,5187,5204,6171,5216],[4914,5187,5204,2706,5370],{"id":40032,"title":6175,"description":40033,"kind":5369,"type":39676,"section":5187,"path":5215,"group":5204,"order":427,"pageTitle":5216,"context":40028,"tokens":40034,"tags":40035,"activation":6169,"related":6178,"status":5370,"integration":2706},"/docs/modules/progress-part::event::object:progress-slice:\u003Cid>","StringProgressPart event",[6175,5216,6168,5187,5204,6171,5216],[39680,5187,5204,2706,5370],{"id":40037,"title":6177,"description":40038,"kind":5369,"type":39984,"section":5187,"path":5215,"group":5204,"order":427,"pageTitle":5216,"context":40028,"tokens":40039,"tags":40040,"activation":6169,"related":6178,"status":5370,"integration":2706},"/docs/modules/progress-part::css::--progress-slice","StringProgressPart CSS variable",[6177,5216,6168,5187,5204,6171,5216],[39987,5187,5204,2706,5370],{"id":40042,"title":5407,"description":40043,"kind":5369,"type":39440,"section":5187,"path":5215,"anchor":5406,"group":5204,"order":427,"pageTitle":5216,"context":40028,"tokens":40044,"tags":40045,"activation":6169,"related":6178,"status":5370,"integration":2706},"/docs/modules/progress-part::heading::public-api","Section in StringProgressPart",[5407,5216,6168,5187,5204,6171,5216],[39444,5187,5204,2706,5370],{"id":40047,"title":4905,"description":40043,"kind":5369,"type":39440,"section":5187,"path":5215,"anchor":4904,"group":5204,"order":427,"pageTitle":5216,"context":40028,"tokens":40048,"tags":40049,"activation":6169,"related":6178,"status":5370,"integration":2706},"/docs/modules/progress-part::heading::attributes",[4905,5216,6168,5187,5204,6171,5216],[39444,5187,5204,2706,5370],{"id":40051,"title":5558,"description":40043,"kind":5369,"type":39440,"section":5187,"path":5215,"anchor":5557,"group":5204,"order":427,"pageTitle":5216,"context":40028,"tokens":40052,"tags":40053,"activation":6169,"related":6178,"status":5370,"integration":2706},"/docs/modules/progress-part::heading::css-variables-and-dom-output",[5558,5216,6168,5187,5204,6171,5216],[39444,5187,5204,2706,5370],{"id":40055,"title":5593,"description":40043,"kind":5369,"type":39440,"section":5187,"path":5215,"anchor":3814,"group":5204,"order":427,"pageTitle":5216,"context":40028,"tokens":40056,"tags":40057,"activation":6169,"related":6178,"status":5370,"integration":2706},"/docs/modules/progress-part::heading::events",[5593,5216,6168,5187,5204,6171,5216],[39444,5187,5204,2706,5370],{"id":40059,"title":5667,"description":40043,"kind":5369,"type":39440,"section":5187,"path":5215,"anchor":5666,"group":5204,"order":427,"pageTitle":5216,"context":40028,"tokens":40060,"tags":40061,"activation":6169,"related":6178,"status":5370,"integration":2706},"/docs/modules/progress-part::heading::mirror-behavior",[5667,5216,6168,5187,5204,6171,5216],[39444,5187,5204,2706,5370],{"id":40063,"title":5689,"description":40043,"kind":5369,"type":39440,"section":5187,"path":5215,"anchor":5688,"group":5204,"order":427,"pageTitle":5216,"context":40028,"tokens":40064,"tags":40065,"activation":6169,"related":6178,"status":5370,"integration":2706},"/docs/modules/progress-part::heading::quick-example",[5689,5216,6168,5187,5204,6171,5216],[39444,5187,5204,2706,5370],{"id":40067,"title":6074,"description":40043,"kind":5369,"type":39440,"section":5187,"path":5215,"anchor":6073,"group":5204,"order":427,"pageTitle":5216,"context":40028,"tokens":40068,"tags":40069,"activation":6169,"related":6178,"status":5370,"integration":2706},"/docs/modules/progress-part::heading::registration",[6074,5216,6168,5187,5204,6171,5216],[39444,5187,5204,2706,5370],{"id":40071,"title":6133,"description":40043,"kind":5369,"type":39440,"section":5187,"path":5215,"anchor":6132,"group":5204,"order":427,"pageTitle":5216,"context":40028,"tokens":40072,"tags":40073,"activation":6169,"related":6178,"status":5370,"integration":2706},"/docs/modules/progress-part::heading::detailed-behavior",[6133,5216,6168,5187,5204,6171,5216],[39444,5187,5204,2706,5370],{"id":3269,"title":5221,"description":7075,"kind":5369,"type":39433,"section":5187,"path":3269,"group":5204,"order":609,"pageTitle":5221,"context":39939,"tokens":40075,"tags":40076,"activation":7076,"related":7082,"status":5370,"integration":2706},[5221,7075,5187,5204,7078,5221,2891,2894,7076,5370,2706,39435,28089,7078],[5187,5204,2706,5370],{"id":40078,"title":2894,"description":40079,"kind":5369,"type":39676,"section":5187,"path":3269,"group":5204,"order":609,"pageTitle":5221,"context":40080,"tokens":40081,"tags":40082,"activation":7076,"related":7082,"status":5370,"integration":2706},"/docs/modules/parallax::event::object:parallax:\u003Cid>","StringParallax event","StringParallax / Modules",[2894,5221,7075,5187,5204,7078,5221,2891],[39680,5187,5204,2706,5370],{"id":40084,"title":5407,"description":40085,"kind":5369,"type":39440,"section":5187,"path":3269,"anchor":5406,"group":5204,"order":609,"pageTitle":5221,"context":40080,"tokens":40086,"tags":40087,"activation":7076,"related":7082,"status":5370,"integration":2706},"/docs/modules/parallax::heading::public-api","Section in StringParallax",[5407,5221,7075,5187,5204,7078,5221,2891],[39444,5187,5204,2706,5370],{"id":40089,"title":4905,"description":40085,"kind":5369,"type":39440,"section":5187,"path":3269,"anchor":4904,"group":5204,"order":609,"pageTitle":5221,"context":40080,"tokens":40090,"tags":40091,"activation":7076,"related":7082,"status":5370,"integration":2706},"/docs/modules/parallax::heading::attributes",[4905,5221,7075,5187,5204,7078,5221,2891],[39444,5187,5204,2706,5370],{"id":40093,"title":5558,"description":40085,"kind":5369,"type":39440,"section":5187,"path":3269,"anchor":5557,"group":5204,"order":609,"pageTitle":5221,"context":40080,"tokens":40094,"tags":40095,"activation":7076,"related":7082,"status":5370,"integration":2706},"/docs/modules/parallax::heading::css-variables-and-dom-output",[5558,5221,7075,5187,5204,7078,5221,2891],[39444,5187,5204,2706,5370],{"id":40097,"title":5593,"description":40085,"kind":5369,"type":39440,"section":5187,"path":3269,"anchor":3814,"group":5204,"order":609,"pageTitle":5221,"context":40080,"tokens":40098,"tags":40099,"activation":7076,"related":7082,"status":5370,"integration":2706},"/docs/modules/parallax::heading::events",[5593,5221,7075,5187,5204,7078,5221,2891],[39444,5187,5204,2706,5370],{"id":40101,"title":5667,"description":40085,"kind":5369,"type":39440,"section":5187,"path":3269,"anchor":5666,"group":5204,"order":609,"pageTitle":5221,"context":40080,"tokens":40102,"tags":40103,"activation":7076,"related":7082,"status":5370,"integration":2706},"/docs/modules/parallax::heading::mirror-behavior",[5667,5221,7075,5187,5204,7078,5221,2891],[39444,5187,5204,2706,5370],{"id":40105,"title":5689,"description":40085,"kind":5369,"type":39440,"section":5187,"path":3269,"anchor":5688,"group":5204,"order":609,"pageTitle":5221,"context":40080,"tokens":40106,"tags":40107,"activation":7076,"related":7082,"status":5370,"integration":2706},"/docs/modules/parallax::heading::quick-example",[5689,5221,7075,5187,5204,7078,5221,2891],[39444,5187,5204,2706,5370],{"id":40109,"title":6074,"description":40085,"kind":5369,"type":39440,"section":5187,"path":3269,"anchor":6073,"group":5204,"order":609,"pageTitle":5221,"context":40080,"tokens":40110,"tags":40111,"activation":7076,"related":7082,"status":5370,"integration":2706},"/docs/modules/parallax::heading::registration",[6074,5221,7075,5187,5204,7078,5221,2891],[39444,5187,5204,2706,5370],{"id":40113,"title":6133,"description":40085,"kind":5369,"type":39440,"section":5187,"path":3269,"anchor":6132,"group":5204,"order":609,"pageTitle":5221,"context":40080,"tokens":40114,"tags":40115,"activation":7076,"related":7082,"status":5370,"integration":2706},"/docs/modules/parallax::heading::detailed-behavior",[6133,5221,7075,5187,5204,7078,5221,2891],[39444,5187,5204,2706,5370],{"id":5226,"title":5227,"description":8026,"kind":5369,"type":39433,"section":5187,"path":5226,"group":5204,"order":819,"pageTitle":5227,"context":39939,"tokens":40117,"tags":40118,"activation":8028,"related":8036,"status":8027,"integration":2706},[5227,8026,5187,5204,8030,5227,8033,8035,8028,8027,2706,39435,28089,8030],[5187,5204,2706,8027],{"id":40120,"title":8033,"description":40121,"kind":5369,"type":39676,"section":5187,"path":5226,"group":5204,"order":819,"pageTitle":5227,"context":40122,"tokens":40123,"tags":40124,"activation":8028,"related":8036,"status":8027,"integration":2706},"/docs/modules/lerp::event::object:lerp:\u003Cid>","StringLerp event","StringLerp / Modules",[8033,5227,8026,5187,5204,8030,5227],[39680,5187,5204,2706,8027],{"id":40126,"title":8035,"description":40127,"kind":5369,"type":39984,"section":5187,"path":5226,"group":5204,"order":819,"pageTitle":5227,"context":40122,"tokens":40128,"tags":40129,"activation":8028,"related":8036,"status":8027,"integration":2706},"/docs/modules/lerp::css::--lerp","StringLerp CSS variable",[8035,5227,8026,5187,5204,8030,5227],[39987,5187,5204,2706,8027],{"id":40131,"title":5407,"description":40132,"kind":5369,"type":39440,"section":5187,"path":5226,"anchor":5406,"group":5204,"order":819,"pageTitle":5227,"context":40122,"tokens":40133,"tags":40134,"activation":8028,"related":8036,"status":8027,"integration":2706},"/docs/modules/lerp::heading::public-api","Section in StringLerp",[5407,5227,8026,5187,5204,8030,5227],[39444,5187,5204,2706,8027],{"id":40136,"title":4905,"description":40132,"kind":5369,"type":39440,"section":5187,"path":5226,"anchor":4904,"group":5204,"order":819,"pageTitle":5227,"context":40122,"tokens":40137,"tags":40138,"activation":8028,"related":8036,"status":8027,"integration":2706},"/docs/modules/lerp::heading::attributes",[4905,5227,8026,5187,5204,8030,5227],[39444,5187,5204,2706,8027],{"id":40140,"title":5558,"description":40132,"kind":5369,"type":39440,"section":5187,"path":5226,"anchor":5557,"group":5204,"order":819,"pageTitle":5227,"context":40122,"tokens":40141,"tags":40142,"activation":8028,"related":8036,"status":8027,"integration":2706},"/docs/modules/lerp::heading::css-variables-and-dom-output",[5558,5227,8026,5187,5204,8030,5227],[39444,5187,5204,2706,8027],{"id":40144,"title":5593,"description":40132,"kind":5369,"type":39440,"section":5187,"path":5226,"anchor":3814,"group":5204,"order":819,"pageTitle":5227,"context":40122,"tokens":40145,"tags":40146,"activation":8028,"related":8036,"status":8027,"integration":2706},"/docs/modules/lerp::heading::events",[5593,5227,8026,5187,5204,8030,5227],[39444,5187,5204,2706,8027],{"id":40148,"title":5667,"description":40132,"kind":5369,"type":39440,"section":5187,"path":5226,"anchor":5666,"group":5204,"order":819,"pageTitle":5227,"context":40122,"tokens":40149,"tags":40150,"activation":8028,"related":8036,"status":8027,"integration":2706},"/docs/modules/lerp::heading::mirror-behavior",[5667,5227,8026,5187,5204,8030,5227],[39444,5187,5204,2706,8027],{"id":40152,"title":5689,"description":40132,"kind":5369,"type":39440,"section":5187,"path":5226,"anchor":5688,"group":5204,"order":819,"pageTitle":5227,"context":40122,"tokens":40153,"tags":40154,"activation":8028,"related":8036,"status":8027,"integration":2706},"/docs/modules/lerp::heading::quick-example",[5689,5227,8026,5187,5204,8030,5227],[39444,5187,5204,2706,8027],{"id":40156,"title":6074,"description":40132,"kind":5369,"type":39440,"section":5187,"path":5226,"anchor":6073,"group":5204,"order":819,"pageTitle":5227,"context":40122,"tokens":40157,"tags":40158,"activation":8028,"related":8036,"status":8027,"integration":2706},"/docs/modules/lerp::heading::registration",[6074,5227,8026,5187,5204,8030,5227],[39444,5187,5204,2706,8027],{"id":40160,"title":6133,"description":40132,"kind":5369,"type":39440,"section":5187,"path":5226,"anchor":6132,"group":5204,"order":819,"pageTitle":5227,"context":40122,"tokens":40161,"tags":40162,"activation":8028,"related":8036,"status":8027,"integration":2706},"/docs/modules/lerp::heading::detailed-behavior",[6133,5227,8026,5187,5204,8030,5227],[39444,5187,5204,2706,8027],{"id":5232,"title":5233,"description":8527,"kind":5369,"type":39433,"section":5187,"path":5232,"group":5204,"order":1908,"pageTitle":5233,"context":39939,"tokens":40164,"tags":40165,"activation":8528,"related":8537,"status":8027,"integration":2706},[5233,8527,5187,5204,8530,5233,8532,8534,8536,8528,8027,2706,39435,28089,8530],[5187,5204,2706,8027],{"id":40167,"title":8532,"description":40168,"kind":5369,"type":4937,"section":5187,"path":5232,"group":5204,"order":1908,"pageTitle":5233,"context":40169,"tokens":40170,"tags":40171,"activation":8528,"related":8537,"status":8027,"integration":2706},"/docs/modules/glide::attr::string-glide","StringGlide attribute","StringGlide / Modules",[8532,5233,8527,5187,5204,8530,5233],[4914,5187,5204,2706,8027],{"id":40173,"title":8534,"description":40174,"kind":5369,"type":39676,"section":5187,"path":5232,"group":5204,"order":1908,"pageTitle":5233,"context":40169,"tokens":40175,"tags":40176,"activation":8528,"related":8537,"status":8027,"integration":2706},"/docs/modules/glide::event::object:glide:\u003Cid>","StringGlide event",[8534,5233,8527,5187,5204,8530,5233],[39680,5187,5204,2706,8027],{"id":40178,"title":8536,"description":40179,"kind":5369,"type":39984,"section":5187,"path":5232,"group":5204,"order":1908,"pageTitle":5233,"context":40169,"tokens":40180,"tags":40181,"activation":8528,"related":8537,"status":8027,"integration":2706},"/docs/modules/glide::css::--glide","StringGlide CSS variable",[8536,5233,8527,5187,5204,8530,5233],[39987,5187,5204,2706,8027],{"id":40183,"title":5407,"description":40184,"kind":5369,"type":39440,"section":5187,"path":5232,"anchor":5406,"group":5204,"order":1908,"pageTitle":5233,"context":40169,"tokens":40185,"tags":40186,"activation":8528,"related":8537,"status":8027,"integration":2706},"/docs/modules/glide::heading::public-api","Section in StringGlide",[5407,5233,8527,5187,5204,8530,5233],[39444,5187,5204,2706,8027],{"id":40188,"title":4905,"description":40184,"kind":5369,"type":39440,"section":5187,"path":5232,"anchor":4904,"group":5204,"order":1908,"pageTitle":5233,"context":40169,"tokens":40189,"tags":40190,"activation":8528,"related":8537,"status":8027,"integration":2706},"/docs/modules/glide::heading::attributes",[4905,5233,8527,5187,5204,8530,5233],[39444,5187,5204,2706,8027],{"id":40192,"title":5558,"description":40184,"kind":5369,"type":39440,"section":5187,"path":5232,"anchor":5557,"group":5204,"order":1908,"pageTitle":5233,"context":40169,"tokens":40193,"tags":40194,"activation":8528,"related":8537,"status":8027,"integration":2706},"/docs/modules/glide::heading::css-variables-and-dom-output",[5558,5233,8527,5187,5204,8530,5233],[39444,5187,5204,2706,8027],{"id":40196,"title":5593,"description":40184,"kind":5369,"type":39440,"section":5187,"path":5232,"anchor":3814,"group":5204,"order":1908,"pageTitle":5233,"context":40169,"tokens":40197,"tags":40198,"activation":8528,"related":8537,"status":8027,"integration":2706},"/docs/modules/glide::heading::events",[5593,5233,8527,5187,5204,8530,5233],[39444,5187,5204,2706,8027],{"id":40200,"title":5667,"description":40184,"kind":5369,"type":39440,"section":5187,"path":5232,"anchor":5666,"group":5204,"order":1908,"pageTitle":5233,"context":40169,"tokens":40201,"tags":40202,"activation":8528,"related":8537,"status":8027,"integration":2706},"/docs/modules/glide::heading::mirror-behavior",[5667,5233,8527,5187,5204,8530,5233],[39444,5187,5204,2706,8027],{"id":40204,"title":5689,"description":40184,"kind":5369,"type":39440,"section":5187,"path":5232,"anchor":5688,"group":5204,"order":1908,"pageTitle":5233,"context":40169,"tokens":40205,"tags":40206,"activation":8528,"related":8537,"status":8027,"integration":2706},"/docs/modules/glide::heading::quick-example",[5689,5233,8527,5187,5204,8530,5233],[39444,5187,5204,2706,8027],{"id":40208,"title":6074,"description":40184,"kind":5369,"type":39440,"section":5187,"path":5232,"anchor":6073,"group":5204,"order":1908,"pageTitle":5233,"context":40169,"tokens":40209,"tags":40210,"activation":8528,"related":8537,"status":8027,"integration":2706},"/docs/modules/glide::heading::registration",[6074,5233,8527,5187,5204,8530,5233],[39444,5187,5204,2706,8027],{"id":40212,"title":6133,"description":40184,"kind":5369,"type":39440,"section":5187,"path":5232,"anchor":6132,"group":5204,"order":1908,"pageTitle":5233,"context":40169,"tokens":40213,"tags":40214,"activation":8528,"related":8537,"status":8027,"integration":2706},"/docs/modules/glide::heading::detailed-behavior",[6133,5233,8527,5187,5204,8530,5233],[39444,5187,5204,2706,8027],{"id":5238,"title":5239,"description":8999,"kind":5369,"type":39433,"section":5187,"path":5238,"group":5204,"order":4298,"pageTitle":5239,"context":39939,"tokens":40216,"tags":40217,"activation":9000,"related":9007,"status":5370,"integration":2706},[5239,8999,5187,5204,9002,5239,9004,9000,5370,2706,39435,28089,9002],[5187,5204,2706,5370],{"id":40219,"title":9004,"description":40220,"kind":5369,"type":4937,"section":5187,"path":5238,"group":5204,"order":4298,"pageTitle":5239,"context":40221,"tokens":40222,"tags":40223,"activation":9000,"related":9007,"status":5370,"integration":2706},"/docs/modules/anchor::attr::string-anchor","StringAnchor attribute","StringAnchor / Modules",[9004,5239,8999,5187,5204,9002,5239],[4914,5187,5204,2706,5370],{"id":40225,"title":5407,"description":40226,"kind":5369,"type":39440,"section":5187,"path":5238,"anchor":5406,"group":5204,"order":4298,"pageTitle":5239,"context":40221,"tokens":40227,"tags":40228,"activation":9000,"related":9007,"status":5370,"integration":2706},"/docs/modules/anchor::heading::public-api","Section in StringAnchor",[5407,5239,8999,5187,5204,9002,5239],[39444,5187,5204,2706,5370],{"id":40230,"title":4905,"description":40226,"kind":5369,"type":39440,"section":5187,"path":5238,"anchor":4904,"group":5204,"order":4298,"pageTitle":5239,"context":40221,"tokens":40231,"tags":40232,"activation":9000,"related":9007,"status":5370,"integration":2706},"/docs/modules/anchor::heading::attributes",[4905,5239,8999,5187,5204,9002,5239],[39444,5187,5204,2706,5370],{"id":40234,"title":5558,"description":40226,"kind":5369,"type":39440,"section":5187,"path":5238,"anchor":5557,"group":5204,"order":4298,"pageTitle":5239,"context":40221,"tokens":40235,"tags":40236,"activation":9000,"related":9007,"status":5370,"integration":2706},"/docs/modules/anchor::heading::css-variables-and-dom-output",[5558,5239,8999,5187,5204,9002,5239],[39444,5187,5204,2706,5370],{"id":40238,"title":5593,"description":40226,"kind":5369,"type":39440,"section":5187,"path":5238,"anchor":3814,"group":5204,"order":4298,"pageTitle":5239,"context":40221,"tokens":40239,"tags":40240,"activation":9000,"related":9007,"status":5370,"integration":2706},"/docs/modules/anchor::heading::events",[5593,5239,8999,5187,5204,9002,5239],[39444,5187,5204,2706,5370],{"id":40242,"title":5667,"description":40226,"kind":5369,"type":39440,"section":5187,"path":5238,"anchor":5666,"group":5204,"order":4298,"pageTitle":5239,"context":40221,"tokens":40243,"tags":40244,"activation":9000,"related":9007,"status":5370,"integration":2706},"/docs/modules/anchor::heading::mirror-behavior",[5667,5239,8999,5187,5204,9002,5239],[39444,5187,5204,2706,5370],{"id":40246,"title":5689,"description":40226,"kind":5369,"type":39440,"section":5187,"path":5238,"anchor":5688,"group":5204,"order":4298,"pageTitle":5239,"context":40221,"tokens":40247,"tags":40248,"activation":9000,"related":9007,"status":5370,"integration":2706},"/docs/modules/anchor::heading::quick-example",[5689,5239,8999,5187,5204,9002,5239],[39444,5187,5204,2706,5370],{"id":40250,"title":6074,"description":40226,"kind":5369,"type":39440,"section":5187,"path":5238,"anchor":6073,"group":5204,"order":4298,"pageTitle":5239,"context":40221,"tokens":40251,"tags":40252,"activation":9000,"related":9007,"status":5370,"integration":2706},"/docs/modules/anchor::heading::registration",[6074,5239,8999,5187,5204,9002,5239],[39444,5187,5204,2706,5370],{"id":40254,"title":6133,"description":40226,"kind":5369,"type":39440,"section":5187,"path":5238,"anchor":6132,"group":5204,"order":4298,"pageTitle":5239,"context":40221,"tokens":40255,"tags":40256,"activation":9000,"related":9007,"status":5370,"integration":2706},"/docs/modules/anchor::heading::detailed-behavior",[6133,5239,8999,5187,5204,9002,5239],[39444,5187,5204,2706,5370],{"id":4398,"title":5244,"description":10398,"kind":5369,"type":39433,"section":5187,"path":4398,"group":5204,"order":4605,"pageTitle":5244,"context":39939,"tokens":40258,"tags":40260,"activation":10399,"related":10405,"status":8027,"integration":2706},[5244,10398,5187,5204,10401,5244,10399,8027,2706,39435,28089,40259],"scroll container",[5187,5204,2706,8027],{"id":40262,"title":5407,"description":40263,"kind":5369,"type":39440,"section":5187,"path":4398,"anchor":5406,"group":5204,"order":4605,"pageTitle":5244,"context":40264,"tokens":40265,"tags":40266,"activation":10399,"related":10405,"status":8027,"integration":2706},"/docs/modules/scroll-container::heading::public-api","Section in StringScrollContainer","StringScrollContainer / Modules",[5407,5244,10398,5187,5204,10401,5244],[39444,5187,5204,2706,8027],{"id":40268,"title":4905,"description":40263,"kind":5369,"type":39440,"section":5187,"path":4398,"anchor":4904,"group":5204,"order":4605,"pageTitle":5244,"context":40264,"tokens":40269,"tags":40270,"activation":10399,"related":10405,"status":8027,"integration":2706},"/docs/modules/scroll-container::heading::attributes",[4905,5244,10398,5187,5204,10401,5244],[39444,5187,5204,2706,8027],{"id":40272,"title":5558,"description":40263,"kind":5369,"type":39440,"section":5187,"path":4398,"anchor":5557,"group":5204,"order":4605,"pageTitle":5244,"context":40264,"tokens":40273,"tags":40274,"activation":10399,"related":10405,"status":8027,"integration":2706},"/docs/modules/scroll-container::heading::css-variables-and-dom-output",[5558,5244,10398,5187,5204,10401,5244],[39444,5187,5204,2706,8027],{"id":40276,"title":5593,"description":40263,"kind":5369,"type":39440,"section":5187,"path":4398,"anchor":3814,"group":5204,"order":4605,"pageTitle":5244,"context":40264,"tokens":40277,"tags":40278,"activation":10399,"related":10405,"status":8027,"integration":2706},"/docs/modules/scroll-container::heading::events",[5593,5244,10398,5187,5204,10401,5244],[39444,5187,5204,2706,8027],{"id":40280,"title":5667,"description":40263,"kind":5369,"type":39440,"section":5187,"path":4398,"anchor":5666,"group":5204,"order":4605,"pageTitle":5244,"context":40264,"tokens":40281,"tags":40282,"activation":10399,"related":10405,"status":8027,"integration":2706},"/docs/modules/scroll-container::heading::mirror-behavior",[5667,5244,10398,5187,5204,10401,5244],[39444,5187,5204,2706,8027],{"id":40284,"title":5689,"description":40263,"kind":5369,"type":39440,"section":5187,"path":4398,"anchor":5688,"group":5204,"order":4605,"pageTitle":5244,"context":40264,"tokens":40285,"tags":40286,"activation":10399,"related":10405,"status":8027,"integration":2706},"/docs/modules/scroll-container::heading::quick-example",[5689,5244,10398,5187,5204,10401,5244],[39444,5187,5204,2706,8027],{"id":40288,"title":6074,"description":40263,"kind":5369,"type":39440,"section":5187,"path":4398,"anchor":6073,"group":5204,"order":4605,"pageTitle":5244,"context":40264,"tokens":40289,"tags":40290,"activation":10399,"related":10405,"status":8027,"integration":2706},"/docs/modules/scroll-container::heading::registration",[6074,5244,10398,5187,5204,10401,5244],[39444,5187,5204,2706,8027],{"id":40292,"title":6133,"description":40263,"kind":5369,"type":39440,"section":5187,"path":4398,"anchor":6132,"group":5204,"order":4605,"pageTitle":5244,"context":40264,"tokens":40293,"tags":40294,"activation":10399,"related":10405,"status":8027,"integration":2706},"/docs/modules/scroll-container::heading::detailed-behavior",[6133,5244,10398,5187,5204,10401,5244],[39444,5187,5204,2706,8027],{"id":4309,"title":5249,"description":11301,"kind":5369,"type":39433,"section":5187,"path":4309,"group":5204,"order":11302,"pageTitle":5249,"context":39939,"tokens":40296,"tags":40297,"activation":11303,"related":11309,"status":8027,"integration":2706},[5249,11301,5187,5204,11305,5249,11303,8027,2706,39435,28089,11305],[5187,5204,2706,8027],{"id":40299,"title":5407,"description":40300,"kind":5369,"type":39440,"section":5187,"path":4309,"anchor":5406,"group":5204,"order":11302,"pageTitle":5249,"context":40301,"tokens":40302,"tags":40303,"activation":11303,"related":11309,"status":8027,"integration":2706},"/docs/modules/scroller::heading::public-api","Section in StringScroller","StringScroller / Modules",[5407,5249,11301,5187,5204,11305,5249],[39444,5187,5204,2706,8027],{"id":40305,"title":4905,"description":40300,"kind":5369,"type":39440,"section":5187,"path":4309,"anchor":4904,"group":5204,"order":11302,"pageTitle":5249,"context":40301,"tokens":40306,"tags":40307,"activation":11303,"related":11309,"status":8027,"integration":2706},"/docs/modules/scroller::heading::attributes",[4905,5249,11301,5187,5204,11305,5249],[39444,5187,5204,2706,8027],{"id":40309,"title":5558,"description":40300,"kind":5369,"type":39440,"section":5187,"path":4309,"anchor":5557,"group":5204,"order":11302,"pageTitle":5249,"context":40301,"tokens":40310,"tags":40311,"activation":11303,"related":11309,"status":8027,"integration":2706},"/docs/modules/scroller::heading::css-variables-and-dom-output",[5558,5249,11301,5187,5204,11305,5249],[39444,5187,5204,2706,8027],{"id":40313,"title":5593,"description":40300,"kind":5369,"type":39440,"section":5187,"path":4309,"anchor":3814,"group":5204,"order":11302,"pageTitle":5249,"context":40301,"tokens":40314,"tags":40315,"activation":11303,"related":11309,"status":8027,"integration":2706},"/docs/modules/scroller::heading::events",[5593,5249,11301,5187,5204,11305,5249],[39444,5187,5204,2706,8027],{"id":40317,"title":5667,"description":40300,"kind":5369,"type":39440,"section":5187,"path":4309,"anchor":5666,"group":5204,"order":11302,"pageTitle":5249,"context":40301,"tokens":40318,"tags":40319,"activation":11303,"related":11309,"status":8027,"integration":2706},"/docs/modules/scroller::heading::mirror-behavior",[5667,5249,11301,5187,5204,11305,5249],[39444,5187,5204,2706,8027],{"id":40321,"title":5689,"description":40300,"kind":5369,"type":39440,"section":5187,"path":4309,"anchor":5688,"group":5204,"order":11302,"pageTitle":5249,"context":40301,"tokens":40322,"tags":40323,"activation":11303,"related":11309,"status":8027,"integration":2706},"/docs/modules/scroller::heading::quick-example",[5689,5249,11301,5187,5204,11305,5249],[39444,5187,5204,2706,8027],{"id":40325,"title":6074,"description":40300,"kind":5369,"type":39440,"section":5187,"path":4309,"anchor":6073,"group":5204,"order":11302,"pageTitle":5249,"context":40301,"tokens":40326,"tags":40327,"activation":11303,"related":11309,"status":8027,"integration":2706},"/docs/modules/scroller::heading::registration",[6074,5249,11301,5187,5204,11305,5249],[39444,5187,5204,2706,8027],{"id":40329,"title":6133,"description":40300,"kind":5369,"type":39440,"section":5187,"path":4309,"anchor":6132,"group":5204,"order":11302,"pageTitle":5249,"context":40301,"tokens":40330,"tags":40331,"activation":11303,"related":11309,"status":8027,"integration":2706},"/docs/modules/scroller::heading::detailed-behavior",[6133,5249,11301,5187,5204,11305,5249],[39444,5187,5204,2706,8027],{"id":5260,"title":195,"description":11667,"kind":5369,"type":39433,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40333,"tokens":40334,"tags":40335,"activation":11670,"related":11698,"status":5370,"integration":11669},"Modules / Cursor & Interaction",[195,11667,5187,5253,11672,195,11673,11675,11676,11677,11678,11679,11680,11681,11682,11683,11672,11685,11686,11687,11688,1830,1860,11690,11691,11692,11693,11694,11695,11696,11697,11670,5370,11669,39435,28089,11672],[5187,5253,11669,5370],{"id":40337,"title":11675,"description":40338,"kind":5369,"type":4937,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40340,"tags":40341,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::attr::string-cursor","StringCursor attribute","StringCursor / Modules",[11675,195,11667,5187,5253,11672,195,11673],[4914,5187,5253,11669,5370],{"id":40343,"title":11676,"description":40338,"kind":5369,"type":4937,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40344,"tags":40345,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::attr::string-cursor-target",[11676,195,11667,5187,5253,11672,195,11673],[4914,5187,5253,11669,5370],{"id":40347,"title":11677,"description":40338,"kind":5369,"type":4937,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40348,"tags":40349,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::attr::string-cursor-class",[11677,195,11667,5187,5253,11672,195,11673],[4914,5187,5253,11669,5370],{"id":40351,"title":11678,"description":40338,"kind":5369,"type":4937,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40352,"tags":40353,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::attr::string-cursor-enter",[11678,195,11667,5187,5253,11672,195,11673],[4914,5187,5253,11669,5370],{"id":40355,"title":11679,"description":40338,"kind":5369,"type":4937,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40356,"tags":40357,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::attr::string-cursor-leave",[11679,195,11667,5187,5253,11672,195,11673],[4914,5187,5253,11669,5370],{"id":40359,"title":11680,"description":40338,"kind":5369,"type":4937,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40360,"tags":40361,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::attr::string-cursor-leave-hold",[11680,195,11667,5187,5253,11672,195,11673],[4914,5187,5253,11669,5370],{"id":40363,"title":11681,"description":40338,"kind":5369,"type":4937,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40364,"tags":40365,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::attr::string-cursor-lerp",[11681,195,11667,5187,5253,11672,195,11673],[4914,5187,5253,11669,5370],{"id":40367,"title":11682,"description":40338,"kind":5369,"type":4937,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40368,"tags":40369,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::attr::string-cursor-vars",[11682,195,11667,5187,5253,11672,195,11673],[4914,5187,5253,11669,5370],{"id":40371,"title":11683,"description":40338,"kind":5369,"type":4937,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40372,"tags":40373,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::attr::string-alignment",[11683,195,11667,5187,5253,11672,195,11673],[4914,5187,5253,11669,5370],{"id":40375,"title":11672,"description":40376,"kind":5369,"type":39676,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40377,"tags":40378,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::event::cursor","StringCursor event",[11672,195,11667,5187,5253,11672,195,11673],[39680,5187,5253,11669,5370],{"id":40380,"title":11685,"description":40376,"kind":5369,"type":39676,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40381,"tags":40382,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::event::cursor:start:\u003Cid>",[11685,195,11667,5187,5253,11672,195,11673],[39680,5187,5253,11669,5370],{"id":40384,"title":11686,"description":40376,"kind":5369,"type":39676,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40385,"tags":40386,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::event::cursor:move:\u003Cid>",[11686,195,11667,5187,5253,11672,195,11673],[39680,5187,5253,11669,5370],{"id":40388,"title":11687,"description":40376,"kind":5369,"type":39676,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40389,"tags":40390,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::event::cursor:pixel:\u003Cid>",[11687,195,11667,5187,5253,11672,195,11673],[39680,5187,5253,11669,5370],{"id":40392,"title":11688,"description":40376,"kind":5369,"type":39676,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40393,"tags":40394,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::event::cursor:end:\u003Cid>",[11688,195,11667,5187,5253,11672,195,11673],[39680,5187,5253,11669,5370],{"id":40396,"title":1830,"description":40397,"kind":5369,"type":39984,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40398,"tags":40399,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::css::--x","StringCursor CSS variable",[1830,195,11667,5187,5253,11672,195,11673],[39987,5187,5253,11669,5370],{"id":40401,"title":1860,"description":40397,"kind":5369,"type":39984,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40402,"tags":40403,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::css::--y",[1860,195,11667,5187,5253,11672,195,11673],[39987,5187,5253,11669,5370],{"id":40405,"title":11690,"description":40397,"kind":5369,"type":39984,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40406,"tags":40407,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::css::--x-lerp",[11690,195,11667,5187,5253,11672,195,11673],[39987,5187,5253,11669,5370],{"id":40409,"title":11691,"description":40397,"kind":5369,"type":39984,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40410,"tags":40411,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::css::--y-lerp",[11691,195,11667,5187,5253,11672,195,11673],[39987,5187,5253,11669,5370],{"id":40413,"title":11692,"description":40397,"kind":5369,"type":39984,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40414,"tags":40415,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::css::--x-px",[11692,195,11667,5187,5253,11672,195,11673],[39987,5187,5253,11669,5370],{"id":40417,"title":11693,"description":40397,"kind":5369,"type":39984,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40418,"tags":40419,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::css::--y-px",[11693,195,11667,5187,5253,11672,195,11673],[39987,5187,5253,11669,5370],{"id":40421,"title":11694,"description":40397,"kind":5369,"type":39984,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40422,"tags":40423,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::css::--dx",[11694,195,11667,5187,5253,11672,195,11673],[39987,5187,5253,11669,5370],{"id":40425,"title":11695,"description":40397,"kind":5369,"type":39984,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40426,"tags":40427,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::css::--dy",[11695,195,11667,5187,5253,11672,195,11673],[39987,5187,5253,11669,5370],{"id":40429,"title":11696,"description":40397,"kind":5369,"type":39984,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40430,"tags":40431,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::css::--angle",[11696,195,11667,5187,5253,11672,195,11673],[39987,5187,5253,11669,5370],{"id":40433,"title":11697,"description":40397,"kind":5369,"type":39984,"section":5187,"path":5260,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40434,"tags":40435,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::css::--angle-deg",[11697,195,11667,5187,5253,11672,195,11673],[39987,5187,5253,11669,5370],{"id":40437,"title":5407,"description":40438,"kind":5369,"type":39440,"section":5187,"path":5260,"anchor":5406,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40439,"tags":40440,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::heading::public-api","Section in StringCursor",[5407,195,11667,5187,5253,11672,195,11673],[39444,5187,5253,11669,5370],{"id":40442,"title":11737,"description":40438,"kind":5369,"type":39440,"section":5187,"path":5260,"anchor":11736,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40443,"tags":40444,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::heading::target-attributes",[11737,195,11667,5187,5253,11672,195,11673],[39444,5187,5253,11669,5370],{"id":40446,"title":11846,"description":40438,"kind":5369,"type":39440,"section":5187,"path":5260,"anchor":11845,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40447,"tags":40448,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::heading::portal-attributes",[11846,195,11667,5187,5253,11672,195,11673],[39444,5187,5253,11669,5370],{"id":40450,"title":5558,"description":40438,"kind":5369,"type":39440,"section":5187,"path":5260,"anchor":5557,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40451,"tags":40452,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::heading::css-variables-and-dom-output",[5558,195,11667,5187,5253,11672,195,11673],[39444,5187,5253,11669,5370],{"id":40454,"title":5593,"description":40438,"kind":5369,"type":39440,"section":5187,"path":5260,"anchor":3814,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40455,"tags":40456,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::heading::events",[5593,195,11667,5187,5253,11672,195,11673],[39444,5187,5253,11669,5370],{"id":40458,"title":5667,"description":40438,"kind":5369,"type":39440,"section":5187,"path":5260,"anchor":5666,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40459,"tags":40460,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::heading::mirror-behavior",[5667,195,11667,5187,5253,11672,195,11673],[39444,5187,5253,11669,5370],{"id":40462,"title":5689,"description":40438,"kind":5369,"type":39440,"section":5187,"path":5260,"anchor":5688,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40463,"tags":40464,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::heading::quick-example",[5689,195,11667,5187,5253,11672,195,11673],[39444,5187,5253,11669,5370],{"id":40466,"title":6074,"description":40438,"kind":5369,"type":39440,"section":5187,"path":5260,"anchor":6073,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40467,"tags":40468,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::heading::registration",[6074,195,11667,5187,5253,11672,195,11673],[39444,5187,5253,11669,5370],{"id":40470,"title":6133,"description":40438,"kind":5369,"type":39440,"section":5187,"path":5260,"anchor":6132,"group":5253,"order":11668,"pageTitle":195,"context":40339,"tokens":40471,"tags":40472,"activation":11670,"related":11698,"status":5370,"integration":11669},"/docs/modules/cursor::heading::detailed-behavior",[6133,195,11667,5187,5253,11672,195,11673],[39444,5187,5253,11669,5370],{"id":11699,"title":12978,"description":12979,"kind":5369,"type":39433,"section":5187,"path":11699,"group":5253,"order":12980,"pageTitle":12978,"context":40333,"tokens":40474,"tags":40476,"activation":11670,"related":12987,"status":5370,"integration":11669},[12978,12979,5187,5253,12982,12983,11676,11675,11676,11677,11681,11683,11670,5370,11669,39435,28089,11672,40475],"targets and portals",[5187,5253,11669,5370],{"id":40478,"title":11675,"description":40479,"kind":5369,"type":4937,"section":5187,"path":11699,"group":5253,"order":12980,"pageTitle":12978,"context":40480,"tokens":40481,"tags":40482,"activation":11670,"related":12987,"status":5370,"integration":11669},"/docs/modules/cursor/targets-and-portals::attr::string-cursor","Targets And Portals attribute","Targets And Portals / Modules",[11675,12978,12979,5187,5253,12982,12983,11676],[4914,5187,5253,11669,5370],{"id":40484,"title":11676,"description":40479,"kind":5369,"type":4937,"section":5187,"path":11699,"group":5253,"order":12980,"pageTitle":12978,"context":40480,"tokens":40485,"tags":40486,"activation":11670,"related":12987,"status":5370,"integration":11669},"/docs/modules/cursor/targets-and-portals::attr::string-cursor-target",[11676,12978,12979,5187,5253,12982,12983,11676],[4914,5187,5253,11669,5370],{"id":40488,"title":11677,"description":40479,"kind":5369,"type":4937,"section":5187,"path":11699,"group":5253,"order":12980,"pageTitle":12978,"context":40480,"tokens":40489,"tags":40490,"activation":11670,"related":12987,"status":5370,"integration":11669},"/docs/modules/cursor/targets-and-portals::attr::string-cursor-class",[11677,12978,12979,5187,5253,12982,12983,11676],[4914,5187,5253,11669,5370],{"id":40492,"title":11681,"description":40479,"kind":5369,"type":4937,"section":5187,"path":11699,"group":5253,"order":12980,"pageTitle":12978,"context":40480,"tokens":40493,"tags":40494,"activation":11670,"related":12987,"status":5370,"integration":11669},"/docs/modules/cursor/targets-and-portals::attr::string-cursor-lerp",[11681,12978,12979,5187,5253,12982,12983,11676],[4914,5187,5253,11669,5370],{"id":40496,"title":11683,"description":40479,"kind":5369,"type":4937,"section":5187,"path":11699,"group":5253,"order":12980,"pageTitle":12978,"context":40480,"tokens":40497,"tags":40498,"activation":11670,"related":12987,"status":5370,"integration":11669},"/docs/modules/cursor/targets-and-portals::attr::string-alignment",[11683,12978,12979,5187,5253,12982,12983,11676],[4914,5187,5253,11669,5370],{"id":40500,"title":13017,"description":40501,"kind":5369,"type":39440,"section":5187,"path":11699,"anchor":13016,"group":5253,"order":12980,"pageTitle":12978,"context":40480,"tokens":40502,"tags":40503,"activation":11670,"related":12987,"status":5370,"integration":11669},"/docs/modules/cursor/targets-and-portals::heading::cursor-targets","Section in Targets And Portals",[13017,12978,12979,5187,5253,12982,12983,11676],[39444,5187,5253,11669,5370],{"id":40505,"title":13064,"description":40501,"kind":5369,"type":39440,"section":5187,"path":11699,"anchor":13063,"group":5253,"order":12980,"pageTitle":12978,"context":40480,"tokens":40506,"tags":40507,"activation":11670,"related":12987,"status":5370,"integration":11669},"/docs/modules/cursor/targets-and-portals::heading::cursor-portals",[13064,12978,12979,5187,5253,12982,12983,11676],[39444,5187,5253,11669,5370],{"id":40509,"title":13087,"description":40501,"kind":5369,"type":39440,"section":5187,"path":11699,"anchor":13086,"group":5253,"order":12980,"pageTitle":12978,"context":40480,"tokens":40510,"tags":40511,"activation":11670,"related":12987,"status":5370,"integration":11669},"/docs/modules/cursor/targets-and-portals::heading::how-linking-works",[13087,12978,12979,5187,5253,12982,12983,11676],[39444,5187,5253,11669,5370],{"id":40513,"title":13262,"description":40501,"kind":5369,"type":39440,"section":5187,"path":11699,"anchor":13261,"group":5253,"order":12980,"pageTitle":12978,"context":40480,"tokens":40514,"tags":40515,"activation":11670,"related":12987,"status":5370,"integration":11669},"/docs/modules/cursor/targets-and-portals::heading::portal-classes",[13262,12978,12979,5187,5253,12982,12983,11676],[39444,5187,5253,11669,5370],{"id":40517,"title":13283,"description":40501,"kind":5369,"type":39440,"section":5187,"path":11699,"anchor":13282,"group":5253,"order":12980,"pageTitle":12978,"context":40480,"tokens":40518,"tags":40519,"activation":11670,"related":12987,"status":5370,"integration":11669},"/docs/modules/cursor/targets-and-portals::heading::hover-visibility",[13283,12978,12979,5187,5253,12982,12983,11676],[39444,5187,5253,11669,5370],{"id":40521,"title":13346,"description":40501,"kind":5369,"type":39440,"section":5187,"path":11699,"anchor":13345,"group":5253,"order":12980,"pageTitle":12978,"context":40480,"tokens":40522,"tags":40523,"activation":11670,"related":12987,"status":5370,"integration":11669},"/docs/modules/cursor/targets-and-portals::heading::mirror-boundary",[13346,12978,12979,5187,5253,12982,12983,11676],[39444,5187,5253,11669,5370],{"id":11700,"title":11908,"description":13365,"kind":5369,"type":39433,"section":5187,"path":11700,"group":5253,"order":13366,"pageTitle":11908,"context":40333,"tokens":40525,"tags":40527,"activation":11670,"related":13374,"status":5370,"integration":11669},[11908,13365,5187,5253,13368,13369,13370,11841,11672,11685,11686,11687,11688,1830,1860,11690,11691,11692,11693,11694,11695,11696,11697,11670,5370,11669,39435,28089,11672,40526],"css variables and events",[5187,5253,11669,5370],{"id":40529,"title":11672,"description":40530,"kind":5369,"type":39676,"section":5187,"path":11700,"group":5253,"order":13366,"pageTitle":11908,"context":40531,"tokens":40532,"tags":40533,"activation":11670,"related":13374,"status":5370,"integration":11669},"/docs/modules/cursor/css-variables-and-events::event::cursor","CSS Variables And Events event","CSS Variables And Events / Modules",[11672,11908,13365,5187,5253,13368,13369,13370,11841],[39680,5187,5253,11669,5370],{"id":40535,"title":11685,"description":40530,"kind":5369,"type":39676,"section":5187,"path":11700,"group":5253,"order":13366,"pageTitle":11908,"context":40531,"tokens":40536,"tags":40537,"activation":11670,"related":13374,"status":5370,"integration":11669},"/docs/modules/cursor/css-variables-and-events::event::cursor:start:\u003Cid>",[11685,11908,13365,5187,5253,13368,13369,13370,11841],[39680,5187,5253,11669,5370],{"id":40539,"title":11686,"description":40530,"kind":5369,"type":39676,"section":5187,"path":11700,"group":5253,"order":13366,"pageTitle":11908,"context":40531,"tokens":40540,"tags":40541,"activation":11670,"related":13374,"status":5370,"integration":11669},"/docs/modules/cursor/css-variables-and-events::event::cursor:move:\u003Cid>",[11686,11908,13365,5187,5253,13368,13369,13370,11841],[39680,5187,5253,11669,5370],{"id":40543,"title":11687,"description":40530,"kind":5369,"type":39676,"section":5187,"path":11700,"group":5253,"order":13366,"pageTitle":11908,"context":40531,"tokens":40544,"tags":40545,"activation":11670,"related":13374,"status":5370,"integration":11669},"/docs/modules/cursor/css-variables-and-events::event::cursor:pixel:\u003Cid>",[11687,11908,13365,5187,5253,13368,13369,13370,11841],[39680,5187,5253,11669,5370],{"id":40547,"title":11688,"description":40530,"kind":5369,"type":39676,"section":5187,"path":11700,"group":5253,"order":13366,"pageTitle":11908,"context":40531,"tokens":40548,"tags":40549,"activation":11670,"related":13374,"status":5370,"integration":11669},"/docs/modules/cursor/css-variables-and-events::event::cursor:end:\u003Cid>",[11688,11908,13365,5187,5253,13368,13369,13370,11841],[39680,5187,5253,11669,5370],{"id":40551,"title":1830,"description":40552,"kind":5369,"type":39984,"section":5187,"path":11700,"group":5253,"order":13366,"pageTitle":11908,"context":40531,"tokens":40553,"tags":40554,"activation":11670,"related":13374,"status":5370,"integration":11669},"/docs/modules/cursor/css-variables-and-events::css::--x","CSS Variables And Events CSS variable",[1830,11908,13365,5187,5253,13368,13369,13370,11841],[39987,5187,5253,11669,5370],{"id":40556,"title":1860,"description":40552,"kind":5369,"type":39984,"section":5187,"path":11700,"group":5253,"order":13366,"pageTitle":11908,"context":40531,"tokens":40557,"tags":40558,"activation":11670,"related":13374,"status":5370,"integration":11669},"/docs/modules/cursor/css-variables-and-events::css::--y",[1860,11908,13365,5187,5253,13368,13369,13370,11841],[39987,5187,5253,11669,5370],{"id":40560,"title":11690,"description":40552,"kind":5369,"type":39984,"section":5187,"path":11700,"group":5253,"order":13366,"pageTitle":11908,"context":40531,"tokens":40561,"tags":40562,"activation":11670,"related":13374,"status":5370,"integration":11669},"/docs/modules/cursor/css-variables-and-events::css::--x-lerp",[11690,11908,13365,5187,5253,13368,13369,13370,11841],[39987,5187,5253,11669,5370],{"id":40564,"title":11691,"description":40552,"kind":5369,"type":39984,"section":5187,"path":11700,"group":5253,"order":13366,"pageTitle":11908,"context":40531,"tokens":40565,"tags":40566,"activation":11670,"related":13374,"status":5370,"integration":11669},"/docs/modules/cursor/css-variables-and-events::css::--y-lerp",[11691,11908,13365,5187,5253,13368,13369,13370,11841],[39987,5187,5253,11669,5370],{"id":40568,"title":11692,"description":40552,"kind":5369,"type":39984,"section":5187,"path":11700,"group":5253,"order":13366,"pageTitle":11908,"context":40531,"tokens":40569,"tags":40570,"activation":11670,"related":13374,"status":5370,"integration":11669},"/docs/modules/cursor/css-variables-and-events::css::--x-px",[11692,11908,13365,5187,5253,13368,13369,13370,11841],[39987,5187,5253,11669,5370],{"id":40572,"title":11693,"description":40552,"kind":5369,"type":39984,"section":5187,"path":11700,"group":5253,"order":13366,"pageTitle":11908,"context":40531,"tokens":40573,"tags":40574,"activation":11670,"related":13374,"status":5370,"integration":11669},"/docs/modules/cursor/css-variables-and-events::css::--y-px",[11693,11908,13365,5187,5253,13368,13369,13370,11841],[39987,5187,5253,11669,5370],{"id":40576,"title":11694,"description":40552,"kind":5369,"type":39984,"section":5187,"path":11700,"group":5253,"order":13366,"pageTitle":11908,"context":40531,"tokens":40577,"tags":40578,"activation":11670,"related":13374,"status":5370,"integration":11669},"/docs/modules/cursor/css-variables-and-events::css::--dx",[11694,11908,13365,5187,5253,13368,13369,13370,11841],[39987,5187,5253,11669,5370],{"id":40580,"title":11695,"description":40552,"kind":5369,"type":39984,"section":5187,"path":11700,"group":5253,"order":13366,"pageTitle":11908,"context":40531,"tokens":40581,"tags":40582,"activation":11670,"related":13374,"status":5370,"integration":11669},"/docs/modules/cursor/css-variables-and-events::css::--dy",[11695,11908,13365,5187,5253,13368,13369,13370,11841],[39987,5187,5253,11669,5370],{"id":40584,"title":11696,"description":40552,"kind":5369,"type":39984,"section":5187,"path":11700,"group":5253,"order":13366,"pageTitle":11908,"context":40531,"tokens":40585,"tags":40586,"activation":11670,"related":13374,"status":5370,"integration":11669},"/docs/modules/cursor/css-variables-and-events::css::--angle",[11696,11908,13365,5187,5253,13368,13369,13370,11841],[39987,5187,5253,11669,5370],{"id":40588,"title":11697,"description":40552,"kind":5369,"type":39984,"section":5187,"path":11700,"group":5253,"order":13366,"pageTitle":11908,"context":40531,"tokens":40589,"tags":40590,"activation":11670,"related":13374,"status":5370,"integration":11669},"/docs/modules/cursor/css-variables-and-events::css::--angle-deg",[11697,11908,13365,5187,5253,13368,13369,13370,11841],[39987,5187,5253,11669,5370],{"id":40592,"title":13396,"description":40593,"kind":5369,"type":39440,"section":5187,"path":11700,"anchor":13395,"group":5253,"order":13366,"pageTitle":11908,"context":40531,"tokens":40594,"tags":40595,"activation":11670,"related":13374,"status":5370,"integration":11669},"/docs/modules/cursor/css-variables-and-events::heading::target-variables","Section in CSS Variables And Events",[13396,11908,13365,5187,5253,13368,13369,13370,11841],[39444,5187,5253,11669,5370],{"id":40597,"title":13446,"description":40593,"kind":5369,"type":39440,"section":5187,"path":11700,"anchor":13445,"group":5253,"order":13366,"pageTitle":11908,"context":40531,"tokens":40598,"tags":40599,"activation":11670,"related":13374,"status":5370,"integration":11669},"/docs/modules/cursor/css-variables-and-events::heading::extra-target-variables",[13446,11908,13365,5187,5253,13368,13369,13370,11841],[39444,5187,5253,11669,5370],{"id":40601,"title":13522,"description":40593,"kind":5369,"type":39440,"section":5187,"path":11700,"anchor":13521,"group":5253,"order":13366,"pageTitle":11908,"context":40531,"tokens":40602,"tags":40603,"activation":11670,"related":13374,"status":5370,"integration":11669},"/docs/modules/cursor/css-variables-and-events::heading::portal-variables",[13522,11908,13365,5187,5253,13368,13369,13370,11841],[39444,5187,5253,11669,5370],{"id":40605,"title":13593,"description":40593,"kind":5369,"type":39440,"section":5187,"path":11700,"anchor":13592,"group":5253,"order":13366,"pageTitle":11908,"context":40531,"tokens":40606,"tags":40607,"activation":11670,"related":13374,"status":5370,"integration":11669},"/docs/modules/cursor/css-variables-and-events::heading::target-events",[13593,11908,13365,5187,5253,13368,13369,13370,11841],[39444,5187,5253,11669,5370],{"id":40609,"title":13656,"description":40593,"kind":5369,"type":39440,"section":5187,"path":11700,"anchor":13655,"group":5253,"order":13366,"pageTitle":11908,"context":40531,"tokens":40610,"tags":40611,"activation":11670,"related":13374,"status":5370,"integration":11669},"/docs/modules/cursor/css-variables-and-events::heading::global-cursor-event",[13656,11908,13365,5187,5253,13368,13369,13370,11841],[39444,5187,5253,11669,5370],{"id":40613,"title":13262,"description":40593,"kind":5369,"type":39440,"section":5187,"path":11700,"anchor":13261,"group":5253,"order":13366,"pageTitle":11908,"context":40531,"tokens":40614,"tags":40615,"activation":11670,"related":13374,"status":5370,"integration":11669},"/docs/modules/cursor/css-variables-and-events::heading::portal-classes",[13262,11908,13365,5187,5253,13368,13369,13370,11841],[39444,5187,5253,11669,5370],{"id":11701,"title":13738,"description":13739,"kind":5369,"type":39433,"section":5187,"path":11701,"group":5253,"order":13740,"pageTitle":13738,"context":40333,"tokens":40617,"tags":40619,"activation":11670,"related":13749,"status":5370,"integration":11669},[13738,13739,5187,5253,13742,13743,13744,13745,11670,5370,11669,39435,28089,11672,40618],"lifecycle and device behavior",[5187,5253,11669,5370],{"id":40621,"title":13764,"description":40622,"kind":5369,"type":39440,"section":5187,"path":11701,"anchor":13763,"group":5253,"order":13740,"pageTitle":13738,"context":40623,"tokens":40624,"tags":40625,"activation":11670,"related":13749,"status":5370,"integration":11669},"/docs/modules/cursor/lifecycle-and-device-behavior::heading::coarse-pointer-devices","Section in Lifecycle And Device Behavior","Lifecycle And Device Behavior / Modules",[13764,13738,13739,5187,5253,13742,13743,13744,13745],[39444,5187,5253,11669,5370],{"id":40627,"title":13778,"description":40622,"kind":5369,"type":39440,"section":5187,"path":11701,"anchor":13777,"group":5253,"order":13740,"pageTitle":13738,"context":40623,"tokens":40628,"tags":40629,"activation":11670,"related":13749,"status":5370,"integration":11669},"/docs/modules/cursor/lifecycle-and-device-behavior::heading::object-connection",[13778,13738,13739,5187,5253,13742,13743,13744,13745],[39444,5187,5253,11669,5370],{"id":40631,"title":13816,"description":40622,"kind":5369,"type":39440,"section":5187,"path":11701,"anchor":13815,"group":5253,"order":13740,"pageTitle":13738,"context":40623,"tokens":40632,"tags":40633,"activation":11670,"related":13749,"status":5370,"integration":11669},"/docs/modules/cursor/lifecycle-and-device-behavior::heading::resize-behavior",[13816,13738,13739,5187,5253,13742,13743,13744,13745],[39444,5187,5253,11669,5370],{"id":40635,"title":13843,"description":40622,"kind":5369,"type":39440,"section":5187,"path":11701,"anchor":13842,"group":5253,"order":13740,"pageTitle":13738,"context":40623,"tokens":40636,"tags":40637,"activation":11670,"related":13749,"status":5370,"integration":11669},"/docs/modules/cursor/lifecycle-and-device-behavior::heading::dom-rebuilds-and-mutations",[13843,13738,13739,5187,5253,13742,13743,13744,13745],[39444,5187,5253,11669,5370],{"id":40639,"title":13855,"description":40622,"kind":5369,"type":39440,"section":5187,"path":11701,"anchor":13854,"group":5253,"order":13740,"pageTitle":13738,"context":40623,"tokens":40640,"tags":40641,"activation":11670,"related":13749,"status":5370,"integration":11669},"/docs/modules/cursor/lifecycle-and-device-behavior::heading::navigation-cleanup",[13855,13738,13739,5187,5253,13742,13743,13744,13745],[39444,5187,5253,11669,5370],{"id":40643,"title":13883,"description":40622,"kind":5369,"type":39440,"section":5187,"path":11701,"anchor":13882,"group":5253,"order":13740,"pageTitle":13738,"context":40623,"tokens":40644,"tags":40645,"activation":11670,"related":13749,"status":5370,"integration":11669},"/docs/modules/cursor/lifecycle-and-device-behavior::heading::older-parsed-flags",[13883,13738,13739,5187,5253,13742,13743,13744,13745],[39444,5187,5253,11669,5370],{"id":5265,"title":5266,"description":13942,"kind":5369,"type":39433,"section":5187,"path":5265,"group":5253,"order":13943,"pageTitle":5266,"context":40333,"tokens":40647,"tags":40648,"activation":13944,"related":13955,"status":5370,"integration":2706},[5266,13942,5187,5253,13946,5266,13948,13949,13951,13953,13954,13944,5370,2706,39435,28089,13946],[5187,5253,2706,5370],{"id":40650,"title":13948,"description":40651,"kind":5369,"type":4937,"section":5187,"path":5265,"group":5253,"order":13943,"pageTitle":5266,"context":40652,"tokens":40653,"tags":40654,"activation":13944,"related":13955,"status":5370,"integration":2706},"/docs/modules/magnetic::attr::string-strength","StringMagnetic attribute","StringMagnetic / Modules",[13948,5266,13942,5187,5253,13946,5266],[4914,5187,5253,2706,5370],{"id":40656,"title":13949,"description":40651,"kind":5369,"type":4937,"section":5187,"path":5265,"group":5253,"order":13943,"pageTitle":5266,"context":40652,"tokens":40657,"tags":40658,"activation":13944,"related":13955,"status":5370,"integration":2706},"/docs/modules/magnetic::attr::string-radius",[13949,5266,13942,5187,5253,13946,5266],[4914,5187,5253,2706,5370],{"id":40660,"title":13951,"description":40661,"kind":5369,"type":39676,"section":5187,"path":5265,"group":5253,"order":13943,"pageTitle":5266,"context":40652,"tokens":40662,"tags":40663,"activation":13944,"related":13955,"status":5370,"integration":2706},"/docs/modules/magnetic::event::magnetic:move:\u003Cid>","StringMagnetic event",[13951,5266,13942,5187,5253,13946,5266],[39680,5187,5253,2706,5370],{"id":40665,"title":13953,"description":40666,"kind":5369,"type":39984,"section":5187,"path":5265,"group":5253,"order":13943,"pageTitle":5266,"context":40652,"tokens":40667,"tags":40668,"activation":13944,"related":13955,"status":5370,"integration":2706},"/docs/modules/magnetic::css::--magnetic-x","StringMagnetic CSS variable",[13953,5266,13942,5187,5253,13946,5266],[39987,5187,5253,2706,5370],{"id":40670,"title":13954,"description":40666,"kind":5369,"type":39984,"section":5187,"path":5265,"group":5253,"order":13943,"pageTitle":5266,"context":40652,"tokens":40671,"tags":40672,"activation":13944,"related":13955,"status":5370,"integration":2706},"/docs/modules/magnetic::css::--magnetic-y",[13954,5266,13942,5187,5253,13946,5266],[39987,5187,5253,2706,5370],{"id":40674,"title":5407,"description":40675,"kind":5369,"type":39440,"section":5187,"path":5265,"anchor":5406,"group":5253,"order":13943,"pageTitle":5266,"context":40652,"tokens":40676,"tags":40677,"activation":13944,"related":13955,"status":5370,"integration":2706},"/docs/modules/magnetic::heading::public-api","Section in StringMagnetic",[5407,5266,13942,5187,5253,13946,5266],[39444,5187,5253,2706,5370],{"id":40679,"title":4905,"description":40675,"kind":5369,"type":39440,"section":5187,"path":5265,"anchor":4904,"group":5253,"order":13943,"pageTitle":5266,"context":40652,"tokens":40680,"tags":40681,"activation":13944,"related":13955,"status":5370,"integration":2706},"/docs/modules/magnetic::heading::attributes",[4905,5266,13942,5187,5253,13946,5266],[39444,5187,5253,2706,5370],{"id":40683,"title":5558,"description":40675,"kind":5369,"type":39440,"section":5187,"path":5265,"anchor":5557,"group":5253,"order":13943,"pageTitle":5266,"context":40652,"tokens":40684,"tags":40685,"activation":13944,"related":13955,"status":5370,"integration":2706},"/docs/modules/magnetic::heading::css-variables-and-dom-output",[5558,5266,13942,5187,5253,13946,5266],[39444,5187,5253,2706,5370],{"id":40687,"title":5593,"description":40675,"kind":5369,"type":39440,"section":5187,"path":5265,"anchor":3814,"group":5253,"order":13943,"pageTitle":5266,"context":40652,"tokens":40688,"tags":40689,"activation":13944,"related":13955,"status":5370,"integration":2706},"/docs/modules/magnetic::heading::events",[5593,5266,13942,5187,5253,13946,5266],[39444,5187,5253,2706,5370],{"id":40691,"title":5667,"description":40675,"kind":5369,"type":39440,"section":5187,"path":5265,"anchor":5666,"group":5253,"order":13943,"pageTitle":5266,"context":40652,"tokens":40692,"tags":40693,"activation":13944,"related":13955,"status":5370,"integration":2706},"/docs/modules/magnetic::heading::mirror-behavior",[5667,5266,13942,5187,5253,13946,5266],[39444,5187,5253,2706,5370],{"id":40695,"title":5689,"description":40675,"kind":5369,"type":39440,"section":5187,"path":5265,"anchor":5688,"group":5253,"order":13943,"pageTitle":5266,"context":40652,"tokens":40696,"tags":40697,"activation":13944,"related":13955,"status":5370,"integration":2706},"/docs/modules/magnetic::heading::quick-example",[5689,5266,13942,5187,5253,13946,5266],[39444,5187,5253,2706,5370],{"id":40699,"title":6074,"description":40675,"kind":5369,"type":39440,"section":5187,"path":5265,"anchor":6073,"group":5253,"order":13943,"pageTitle":5266,"context":40652,"tokens":40700,"tags":40701,"activation":13944,"related":13955,"status":5370,"integration":2706},"/docs/modules/magnetic::heading::registration",[6074,5266,13942,5187,5253,13946,5266],[39444,5187,5253,2706,5370],{"id":40703,"title":6133,"description":40675,"kind":5369,"type":39440,"section":5187,"path":5265,"anchor":6132,"group":5253,"order":13943,"pageTitle":5266,"context":40652,"tokens":40704,"tags":40705,"activation":13944,"related":13955,"status":5370,"integration":2706},"/docs/modules/magnetic::heading::detailed-behavior",[6133,5266,13942,5187,5253,13946,5266],[39444,5187,5253,2706,5370],{"id":5271,"title":5272,"description":14612,"kind":5369,"type":39433,"section":5187,"path":5271,"group":5253,"order":14613,"pageTitle":5272,"context":40333,"tokens":40707,"tags":40708,"activation":14614,"related":14626,"status":8027,"integration":2706},[5272,14612,5187,5253,14616,5272,14619,14620,14621,14623,14624,14625,14614,8027,2706,39435,28089,14616],[5187,5253,2706,8027],{"id":40710,"title":14619,"description":40711,"kind":5369,"type":39676,"section":5187,"path":5271,"group":5253,"order":14613,"pageTitle":5272,"context":40712,"tokens":40713,"tags":40714,"activation":14614,"related":14626,"status":8027,"integration":2706},"/docs/modules/impulse::event::object:impulse:\u003Cid>:move","StringImpulse event","StringImpulse / Modules",[14619,5272,14612,5187,5253,14616,5272],[39680,5187,5253,2706,8027],{"id":40716,"title":14620,"description":40711,"kind":5369,"type":39676,"section":5187,"path":5271,"group":5253,"order":14613,"pageTitle":5272,"context":40712,"tokens":40717,"tags":40718,"activation":14614,"related":14626,"status":8027,"integration":2706},"/docs/modules/impulse::event::object:impulse:\u003Cid>:rotate",[14620,5272,14612,5187,5253,14616,5272],[39680,5187,5253,2706,8027],{"id":40720,"title":14621,"description":40711,"kind":5369,"type":39676,"section":5187,"path":5271,"group":5253,"order":14613,"pageTitle":5272,"context":40712,"tokens":40721,"tags":40722,"activation":14614,"related":14626,"status":8027,"integration":2706},"/docs/modules/impulse::event::object:impulse:\u003Cid>:side",[14621,5272,14612,5187,5253,14616,5272],[39680,5187,5253,2706,8027],{"id":40724,"title":14623,"description":40725,"kind":5369,"type":39984,"section":5187,"path":5271,"group":5253,"order":14613,"pageTitle":5272,"context":40712,"tokens":40726,"tags":40727,"activation":14614,"related":14626,"status":8027,"integration":2706},"/docs/modules/impulse::css::--push-x","StringImpulse CSS variable",[14623,5272,14612,5187,5253,14616,5272],[39987,5187,5253,2706,8027],{"id":40729,"title":14624,"description":40725,"kind":5369,"type":39984,"section":5187,"path":5271,"group":5253,"order":14613,"pageTitle":5272,"context":40712,"tokens":40730,"tags":40731,"activation":14614,"related":14626,"status":8027,"integration":2706},"/docs/modules/impulse::css::--push-y",[14624,5272,14612,5187,5253,14616,5272],[39987,5187,5253,2706,8027],{"id":40733,"title":14625,"description":40725,"kind":5369,"type":39984,"section":5187,"path":5271,"group":5253,"order":14613,"pageTitle":5272,"context":40712,"tokens":40734,"tags":40735,"activation":14614,"related":14626,"status":8027,"integration":2706},"/docs/modules/impulse::css::--push-rotation",[14625,5272,14612,5187,5253,14616,5272],[39987,5187,5253,2706,8027],{"id":40737,"title":5407,"description":40738,"kind":5369,"type":39440,"section":5187,"path":5271,"anchor":5406,"group":5253,"order":14613,"pageTitle":5272,"context":40712,"tokens":40739,"tags":40740,"activation":14614,"related":14626,"status":8027,"integration":2706},"/docs/modules/impulse::heading::public-api","Section in StringImpulse",[5407,5272,14612,5187,5253,14616,5272],[39444,5187,5253,2706,8027],{"id":40742,"title":4905,"description":40738,"kind":5369,"type":39440,"section":5187,"path":5271,"anchor":4904,"group":5253,"order":14613,"pageTitle":5272,"context":40712,"tokens":40743,"tags":40744,"activation":14614,"related":14626,"status":8027,"integration":2706},"/docs/modules/impulse::heading::attributes",[4905,5272,14612,5187,5253,14616,5272],[39444,5187,5253,2706,8027],{"id":40746,"title":5558,"description":40738,"kind":5369,"type":39440,"section":5187,"path":5271,"anchor":5557,"group":5253,"order":14613,"pageTitle":5272,"context":40712,"tokens":40747,"tags":40748,"activation":14614,"related":14626,"status":8027,"integration":2706},"/docs/modules/impulse::heading::css-variables-and-dom-output",[5558,5272,14612,5187,5253,14616,5272],[39444,5187,5253,2706,8027],{"id":40750,"title":5593,"description":40738,"kind":5369,"type":39440,"section":5187,"path":5271,"anchor":3814,"group":5253,"order":14613,"pageTitle":5272,"context":40712,"tokens":40751,"tags":40752,"activation":14614,"related":14626,"status":8027,"integration":2706},"/docs/modules/impulse::heading::events",[5593,5272,14612,5187,5253,14616,5272],[39444,5187,5253,2706,8027],{"id":40754,"title":5667,"description":40738,"kind":5369,"type":39440,"section":5187,"path":5271,"anchor":5666,"group":5253,"order":14613,"pageTitle":5272,"context":40712,"tokens":40755,"tags":40756,"activation":14614,"related":14626,"status":8027,"integration":2706},"/docs/modules/impulse::heading::mirror-behavior",[5667,5272,14612,5187,5253,14616,5272],[39444,5187,5253,2706,8027],{"id":40758,"title":5689,"description":40738,"kind":5369,"type":39440,"section":5187,"path":5271,"anchor":5688,"group":5253,"order":14613,"pageTitle":5272,"context":40712,"tokens":40759,"tags":40760,"activation":14614,"related":14626,"status":8027,"integration":2706},"/docs/modules/impulse::heading::quick-example",[5689,5272,14612,5187,5253,14616,5272],[39444,5187,5253,2706,8027],{"id":40762,"title":6074,"description":40738,"kind":5369,"type":39440,"section":5187,"path":5271,"anchor":6073,"group":5253,"order":14613,"pageTitle":5272,"context":40712,"tokens":40763,"tags":40764,"activation":14614,"related":14626,"status":8027,"integration":2706},"/docs/modules/impulse::heading::registration",[6074,5272,14612,5187,5253,14616,5272],[39444,5187,5253,2706,8027],{"id":40766,"title":6133,"description":40738,"kind":5369,"type":39440,"section":5187,"path":5271,"anchor":6132,"group":5253,"order":14613,"pageTitle":5272,"context":40712,"tokens":40767,"tags":40768,"activation":14614,"related":14626,"status":8027,"integration":2706},"/docs/modules/impulse::heading::detailed-behavior",[6133,5272,14612,5187,5253,14616,5272],[39444,5187,5253,2706,8027],{"id":5277,"title":5278,"description":15822,"kind":5369,"type":39433,"section":5187,"path":5277,"group":5253,"order":15823,"pageTitle":5278,"context":40333,"tokens":40770,"tags":40771,"activation":15824,"related":15836,"status":8027,"integration":2706},[5278,15822,5187,5253,15826,5278,10445,15828,15829,15830,15831,15834,15835,15824,8027,2706,39435,28089,15826],[5187,5253,2706,8027],{"id":40773,"title":10445,"description":40774,"kind":5369,"type":4937,"section":5187,"path":5277,"group":5253,"order":15823,"pageTitle":5278,"context":40775,"tokens":40776,"tags":40777,"activation":15824,"related":15836,"status":8027,"integration":2706},"/docs/modules/spotlight::attr::string-lerp","StringSpotlight attribute","StringSpotlight / Modules",[10445,5278,15822,5187,5253,15826,5278],[4914,5187,5253,2706,8027],{"id":40779,"title":15828,"description":40774,"kind":5369,"type":4937,"section":5187,"path":5277,"group":5253,"order":15823,"pageTitle":5278,"context":40775,"tokens":40780,"tags":40781,"activation":15824,"related":15836,"status":8027,"integration":2706},"/docs/modules/spotlight::attr::string-angle-threshold",[15828,5278,15822,5187,5253,15826,5278],[4914,5187,5253,2706,8027],{"id":40783,"title":15829,"description":40774,"kind":5369,"type":4937,"section":5187,"path":5277,"group":5253,"order":15823,"pageTitle":5278,"context":40775,"tokens":40784,"tags":40785,"activation":15824,"related":15836,"status":8027,"integration":2706},"/docs/modules/spotlight::attr::string-distance-threshold",[15829,5278,15822,5187,5253,15826,5278],[4914,5187,5253,2706,8027],{"id":40787,"title":15830,"description":40774,"kind":5369,"type":4937,"section":5187,"path":5277,"group":5253,"order":15823,"pageTitle":5278,"context":40775,"tokens":40788,"tags":40789,"activation":15824,"related":15836,"status":8027,"integration":2706},"/docs/modules/spotlight::attr::string-deadzone",[15830,5278,15822,5187,5253,15826,5278],[4914,5187,5253,2706,8027],{"id":40791,"title":15831,"description":40774,"kind":5369,"type":4937,"section":5187,"path":5277,"group":5253,"order":15823,"pageTitle":5278,"context":40775,"tokens":40792,"tags":40793,"activation":15824,"related":15836,"status":8027,"integration":2706},"/docs/modules/spotlight::attr::string-dist-max",[15831,5278,15822,5187,5253,15826,5278],[4914,5187,5253,2706,8027],{"id":40795,"title":15834,"description":40796,"kind":5369,"type":39984,"section":5187,"path":5277,"group":5253,"order":15823,"pageTitle":5278,"context":40775,"tokens":40797,"tags":40798,"activation":15824,"related":15836,"status":8027,"integration":2706},"/docs/modules/spotlight::css::--spotlight-angle","StringSpotlight CSS variable",[15834,5278,15822,5187,5253,15826,5278],[39987,5187,5253,2706,8027],{"id":40800,"title":15835,"description":40796,"kind":5369,"type":39984,"section":5187,"path":5277,"group":5253,"order":15823,"pageTitle":5278,"context":40775,"tokens":40801,"tags":40802,"activation":15824,"related":15836,"status":8027,"integration":2706},"/docs/modules/spotlight::css::--spotlight-distance",[15835,5278,15822,5187,5253,15826,5278],[39987,5187,5253,2706,8027],{"id":40804,"title":5407,"description":40805,"kind":5369,"type":39440,"section":5187,"path":5277,"anchor":5406,"group":5253,"order":15823,"pageTitle":5278,"context":40775,"tokens":40806,"tags":40807,"activation":15824,"related":15836,"status":8027,"integration":2706},"/docs/modules/spotlight::heading::public-api","Section in StringSpotlight",[5407,5278,15822,5187,5253,15826,5278],[39444,5187,5253,2706,8027],{"id":40809,"title":4905,"description":40805,"kind":5369,"type":39440,"section":5187,"path":5277,"anchor":4904,"group":5253,"order":15823,"pageTitle":5278,"context":40775,"tokens":40810,"tags":40811,"activation":15824,"related":15836,"status":8027,"integration":2706},"/docs/modules/spotlight::heading::attributes",[4905,5278,15822,5187,5253,15826,5278],[39444,5187,5253,2706,8027],{"id":40813,"title":5558,"description":40805,"kind":5369,"type":39440,"section":5187,"path":5277,"anchor":5557,"group":5253,"order":15823,"pageTitle":5278,"context":40775,"tokens":40814,"tags":40815,"activation":15824,"related":15836,"status":8027,"integration":2706},"/docs/modules/spotlight::heading::css-variables-and-dom-output",[5558,5278,15822,5187,5253,15826,5278],[39444,5187,5253,2706,8027],{"id":40817,"title":5593,"description":40805,"kind":5369,"type":39440,"section":5187,"path":5277,"anchor":3814,"group":5253,"order":15823,"pageTitle":5278,"context":40775,"tokens":40818,"tags":40819,"activation":15824,"related":15836,"status":8027,"integration":2706},"/docs/modules/spotlight::heading::events",[5593,5278,15822,5187,5253,15826,5278],[39444,5187,5253,2706,8027],{"id":40821,"title":5667,"description":40805,"kind":5369,"type":39440,"section":5187,"path":5277,"anchor":5666,"group":5253,"order":15823,"pageTitle":5278,"context":40775,"tokens":40822,"tags":40823,"activation":15824,"related":15836,"status":8027,"integration":2706},"/docs/modules/spotlight::heading::mirror-behavior",[5667,5278,15822,5187,5253,15826,5278],[39444,5187,5253,2706,8027],{"id":40825,"title":5689,"description":40805,"kind":5369,"type":39440,"section":5187,"path":5277,"anchor":5688,"group":5253,"order":15823,"pageTitle":5278,"context":40775,"tokens":40826,"tags":40827,"activation":15824,"related":15836,"status":8027,"integration":2706},"/docs/modules/spotlight::heading::quick-example",[5689,5278,15822,5187,5253,15826,5278],[39444,5187,5253,2706,8027],{"id":40829,"title":6074,"description":40805,"kind":5369,"type":39440,"section":5187,"path":5277,"anchor":6073,"group":5253,"order":15823,"pageTitle":5278,"context":40775,"tokens":40830,"tags":40831,"activation":15824,"related":15836,"status":8027,"integration":2706},"/docs/modules/spotlight::heading::registration",[6074,5278,15822,5187,5253,15826,5278],[39444,5187,5253,2706,8027],{"id":40833,"title":6133,"description":40805,"kind":5369,"type":39440,"section":5187,"path":5277,"anchor":6132,"group":5253,"order":15823,"pageTitle":5278,"context":40775,"tokens":40834,"tags":40835,"activation":15824,"related":15836,"status":8027,"integration":2706},"/docs/modules/spotlight::heading::detailed-behavior",[6133,5278,15822,5187,5253,15826,5278],[39444,5187,5253,2706,8027],{"id":5289,"title":5290,"description":16812,"kind":5369,"type":39433,"section":5187,"path":5289,"group":5282,"order":16813,"pageTitle":5290,"context":40837,"tokens":40838,"tags":40839,"activation":16814,"related":16820,"status":5370,"integration":2706},"Modules / Content & Layout",[5290,16812,5187,5282,16816,5290,16814,5370,2706,39435,28089,16816],[5187,5282,2706,5370],{"id":40841,"title":6074,"description":40842,"kind":5369,"type":39440,"section":5187,"path":5289,"anchor":6073,"group":5282,"order":16813,"pageTitle":5290,"context":40843,"tokens":40844,"tags":40845,"activation":16814,"related":16820,"status":5370,"integration":2706},"/docs/modules/split::heading::registration","Section in StringSplit","StringSplit / Modules",[6074,5290,16812,5187,5282,16816,5290],[39444,5187,5282,2706,5370],{"id":40847,"title":4905,"description":40842,"kind":5369,"type":39440,"section":5187,"path":5289,"anchor":4904,"group":5282,"order":16813,"pageTitle":5290,"context":40843,"tokens":40848,"tags":40849,"activation":16814,"related":16820,"status":5370,"integration":2706},"/docs/modules/split::heading::attributes",[4905,5290,16812,5187,5282,16816,5290],[39444,5187,5282,2706,5370],{"id":40851,"title":16951,"description":40842,"kind":5369,"type":39440,"section":5187,"path":5289,"anchor":16950,"group":5282,"order":16813,"pageTitle":5290,"context":40843,"tokens":40852,"tags":40853,"activation":16814,"related":16820,"status":5370,"integration":2706},"/docs/modules/split::heading::grammar",[16951,5290,16812,5187,5282,16816,5290],[39444,5187,5282,2706,5370],{"id":40855,"title":5689,"description":40842,"kind":5369,"type":39440,"section":5187,"path":5289,"anchor":5688,"group":5282,"order":16813,"pageTitle":5290,"context":40843,"tokens":40856,"tags":40857,"activation":16814,"related":16820,"status":5370,"integration":2706},"/docs/modules/split::heading::quick-example",[5689,5290,16812,5187,5282,16816,5290],[39444,5187,5282,2706,5370],{"id":40859,"title":17405,"description":40842,"kind":5369,"type":39440,"section":5187,"path":5289,"anchor":17404,"group":5282,"order":16813,"pageTitle":5290,"context":40843,"tokens":40860,"tags":40861,"activation":16814,"related":16820,"status":5370,"integration":2706},"/docs/modules/split::heading::css-variables",[17405,5290,16812,5187,5282,16816,5290],[39444,5187,5282,2706,5370],{"id":40863,"title":18089,"description":40842,"kind":5369,"type":39440,"section":5187,"path":5289,"anchor":17414,"group":5282,"order":16813,"pageTitle":5290,"context":40843,"tokens":40864,"tags":40865,"activation":16814,"related":16820,"status":5370,"integration":2706},"/docs/modules/split::heading::on-s-line",[18089,5290,16812,5187,5282,16816,5290],[39444,5187,5282,2706,5370],{"id":40867,"title":18091,"description":40842,"kind":5369,"type":39440,"section":5187,"path":5289,"anchor":17476,"group":5282,"order":16813,"pageTitle":5290,"context":40843,"tokens":40868,"tags":40869,"activation":16814,"related":16820,"status":5370,"integration":2706},"/docs/modules/split::heading::on-s-word",[18091,5290,16812,5187,5282,16816,5290],[39444,5187,5282,2706,5370],{"id":40871,"title":18093,"description":40842,"kind":5369,"type":39440,"section":5187,"path":5289,"anchor":17523,"group":5282,"order":16813,"pageTitle":5290,"context":40843,"tokens":40872,"tags":40873,"activation":16814,"related":16820,"status":5370,"integration":2706},"/docs/modules/split::heading::on-s-char",[18093,5290,16812,5187,5282,16816,5290],[39444,5187,5282,2706,5370],{"id":40875,"title":17571,"description":40842,"kind":5369,"type":39440,"section":5187,"path":5289,"anchor":17570,"group":5282,"order":16813,"pageTitle":5290,"context":40843,"tokens":40876,"tags":40877,"activation":16814,"related":16820,"status":5370,"integration":2706},"/docs/modules/split::heading::on-the-source-element",[17571,5290,16812,5187,5282,16816,5290],[39444,5187,5282,2706,5370],{"id":40879,"title":17645,"description":40842,"kind":5369,"type":39440,"section":5187,"path":5289,"anchor":17644,"group":5282,"order":16813,"pageTitle":5290,"context":40843,"tokens":40880,"tags":40881,"activation":16814,"related":16820,"status":5370,"integration":2706},"/docs/modules/split::heading::inline-html",[17645,5290,16812,5187,5282,16816,5290],[39444,5187,5282,2706,5370],{"id":40883,"title":17742,"description":40842,"kind":5369,"type":39440,"section":5187,"path":5289,"anchor":17742,"group":5282,"order":16813,"pageTitle":5290,"context":40843,"tokens":40884,"tags":40885,"activation":16814,"related":16820,"status":5370,"integration":2706},"/docs/modules/split::heading::split-class",[17742,5290,16812,5187,5282,16816,5290],[39444,5187,5282,2706,5370],{"id":40887,"title":17818,"description":40842,"kind":5369,"type":39440,"section":5187,"path":5289,"anchor":17094,"group":5282,"order":16813,"pageTitle":5290,"context":40843,"tokens":40888,"tags":40889,"activation":16814,"related":16820,"status":5370,"integration":2706},"/docs/modules/split::heading::fit",[17818,5290,16812,5187,5282,16816,5290],[39444,5187,5282,2706,5370],{"id":40891,"title":17930,"description":40842,"kind":5369,"type":39440,"section":5187,"path":5289,"anchor":17929,"group":5282,"order":16813,"pageTitle":5290,"context":40843,"tokens":40892,"tags":40893,"activation":16814,"related":16820,"status":5370,"integration":2706},"/docs/modules/split::heading::lifecycle",[17930,5290,16812,5187,5282,16816,5290],[39444,5187,5282,2706,5370],{"id":40895,"title":17934,"description":40842,"kind":5369,"type":39440,"section":5187,"path":5289,"anchor":17933,"group":5282,"order":16813,"pageTitle":5290,"context":40843,"tokens":40896,"tags":40897,"activation":16814,"related":16820,"status":5370,"integration":2706},"/docs/modules/split::heading::when-the-dom-is-rebuilt",[17934,5290,16812,5187,5282,16816,5290],[39444,5187,5282,2706,5370],{"id":40899,"title":17952,"description":40842,"kind":5369,"type":39440,"section":5187,"path":5289,"anchor":17951,"group":5282,"order":16813,"pageTitle":5290,"context":40843,"tokens":40900,"tags":40901,"activation":16814,"related":16820,"status":5370,"integration":2706},"/docs/modules/split::heading::mobile",[17952,5290,16812,5187,5282,16816,5290],[39444,5187,5282,2706,5370],{"id":40903,"title":17959,"description":40842,"kind":5369,"type":39440,"section":5187,"path":5289,"anchor":17958,"group":5282,"order":16813,"pageTitle":5290,"context":40843,"tokens":40904,"tags":40905,"activation":16814,"related":16820,"status":5370,"integration":2706},"/docs/modules/split::heading::restore-after",[17959,5290,16812,5187,5282,16816,5290],[39444,5187,5282,2706,5370],{"id":40907,"title":18025,"description":40842,"kind":5369,"type":39440,"section":5187,"path":5289,"anchor":18024,"group":5282,"order":16813,"pageTitle":5290,"context":40843,"tokens":40908,"tags":40909,"activation":16814,"related":16820,"status":5370,"integration":2706},"/docs/modules/split::heading::accessibility",[18025,5290,16812,5187,5282,16816,5290],[39444,5187,5282,2706,5370],{"id":40911,"title":5593,"description":40842,"kind":5369,"type":39440,"section":5187,"path":5289,"anchor":3814,"group":5282,"order":16813,"pageTitle":5290,"context":40843,"tokens":40912,"tags":40913,"activation":16814,"related":16820,"status":5370,"integration":2706},"/docs/modules/split::heading::events",[5593,5290,16812,5187,5282,16816,5290],[39444,5187,5282,2706,5370],{"id":40915,"title":18054,"description":40842,"kind":5369,"type":39440,"section":5187,"path":5289,"anchor":18053,"group":5282,"order":16813,"pageTitle":5290,"context":40843,"tokens":40916,"tags":40917,"activation":16814,"related":16820,"status":5370,"integration":2706},"/docs/modules/split::heading::deep-dives",[18054,5290,16812,5187,5282,16816,5290],[39444,5187,5282,2706,5370],{"id":16821,"title":16960,"description":18107,"kind":5369,"type":39433,"section":5187,"path":16821,"group":5282,"order":18108,"pageTitle":16960,"context":40837,"tokens":40919,"tags":40920,"activation":16814,"related":18114,"status":5370,"integration":2706},[16960,18107,5187,5282,18110,17068,17042,17081,16919,16938,16814,5370,2706,39435,28089,16816,16950],[5187,5282,2706,5370],{"id":40922,"title":16919,"description":40923,"kind":5369,"type":4937,"section":5187,"path":16821,"group":5282,"order":18108,"pageTitle":16960,"context":40924,"tokens":40925,"tags":40926,"activation":16814,"related":18114,"status":5370,"integration":2706},"/docs/modules/split/grammar::attr::string-split","Split Grammar attribute","Split Grammar / Modules",[16919,16960,18107,5187,5282,18110,17068,17042,17081],[4914,5187,5282,2706,5370],{"id":40928,"title":16938,"description":40923,"kind":5369,"type":4937,"section":5187,"path":16821,"group":5282,"order":18108,"pageTitle":16960,"context":40924,"tokens":40929,"tags":40930,"activation":16814,"related":18114,"status":5370,"integration":2706},"/docs/modules/split/grammar::attr::string-split-restore-after",[16938,16960,18107,5187,5282,18110,17068,17042,17081],[4914,5187,5282,2706,5370],{"id":40932,"title":18134,"description":40933,"kind":5369,"type":39440,"section":5187,"path":16821,"anchor":18133,"group":5282,"order":18108,"pageTitle":16960,"context":40924,"tokens":40934,"tags":40935,"activation":16814,"related":18114,"status":5370,"integration":2706},"/docs/modules/split/grammar::heading::attribute-format","Section in Split Grammar",[18134,16960,18107,5187,5282,18110,17068,17042,17081],[39444,5187,5282,2706,5370],{"id":40937,"title":18172,"description":40933,"kind":5369,"type":39440,"section":5187,"path":16821,"anchor":18171,"group":5282,"order":18108,"pageTitle":16960,"context":40924,"tokens":40938,"tags":40939,"activation":16814,"related":18114,"status":5370,"integration":2706},"/docs/modules/split/grammar::heading::tokens",[18172,16960,18107,5187,5282,18110,17068,17042,17081],[39444,5187,5282,2706,5370],{"id":40941,"title":18336,"description":40933,"kind":5369,"type":39440,"section":5187,"path":16821,"anchor":18335,"group":5282,"order":18108,"pageTitle":16960,"context":40924,"tokens":40942,"tags":40943,"activation":16814,"related":18114,"status":5370,"integration":2706},"/docs/modules/split/grammar::heading::alignment-parameters",[18336,16960,18107,5187,5282,18110,17068,17042,17081],[39444,5187,5282,2706,5370],{"id":40945,"title":18429,"description":40933,"kind":5369,"type":39440,"section":5187,"path":16821,"anchor":18428,"group":5282,"order":18108,"pageTitle":16960,"context":40924,"tokens":40946,"tags":40947,"activation":16814,"related":18114,"status":5370,"integration":2706},"/docs/modules/split/grammar::heading::variable-naming",[18429,16960,18107,5187,5282,18110,17068,17042,17081],[39444,5187,5282,2706,5370],{"id":40949,"title":18494,"description":40933,"kind":5369,"type":39440,"section":5187,"path":16821,"anchor":18493,"group":5282,"order":18108,"pageTitle":16960,"context":40924,"tokens":40950,"tags":40951,"activation":16814,"related":18114,"status":5370,"integration":2706},"/docs/modules/split/grammar::heading::what-the-values-mean",[18494,16960,18107,5187,5282,18110,17068,17042,17081],[39444,5187,5282,2706,5370],{"id":40953,"title":18624,"description":40933,"kind":5369,"type":39440,"section":5187,"path":16821,"anchor":18623,"group":5282,"order":18108,"pageTitle":16960,"context":40924,"tokens":40954,"tags":40955,"activation":16814,"related":18114,"status":5370,"integration":2706},"/docs/modules/split/grammar::heading::combining-tokens",[18624,16960,18107,5187,5282,18110,17068,17042,17081],[39444,5187,5282,2706,5370],{"id":40957,"title":17094,"description":40933,"kind":5369,"type":39440,"section":5187,"path":16821,"anchor":17094,"group":5282,"order":18108,"pageTitle":16960,"context":40924,"tokens":40958,"tags":40959,"activation":16814,"related":18114,"status":5370,"integration":2706},"/docs/modules/split/grammar::heading::fit",[17094,16960,18107,5187,5282,18110,17068,17042,17081],[39444,5187,5282,2706,5370],{"id":40961,"title":18674,"description":40933,"kind":5369,"type":39440,"section":5187,"path":16821,"anchor":18673,"group":5282,"order":18108,"pageTitle":16960,"context":40924,"tokens":40962,"tags":40963,"activation":16814,"related":18114,"status":5370,"integration":2706},"/docs/modules/split/grammar::heading::common-patterns",[18674,16960,18107,5187,5282,18110,17068,17042,17081],[39444,5187,5282,2706,5370],{"id":40965,"title":18741,"description":40933,"kind":5369,"type":39440,"section":5187,"path":16821,"anchor":18740,"group":5282,"order":18108,"pageTitle":16960,"context":40924,"tokens":40966,"tags":40967,"activation":16814,"related":18114,"status":5370,"integration":2706},"/docs/modules/split/grammar::heading::edge-cases",[18741,16960,18107,5187,5282,18110,17068,17042,17081],[39444,5187,5282,2706,5370],{"id":40969,"title":18775,"description":40933,"kind":5369,"type":39440,"section":5187,"path":16821,"anchor":18774,"group":5282,"order":18108,"pageTitle":16960,"context":40924,"tokens":40970,"tags":40971,"activation":16814,"related":18114,"status":5370,"integration":2706},"/docs/modules/split/grammar::heading::related",[18775,16960,18107,5187,5282,18110,17068,17042,17081],[39444,5187,5282,2706,5370],{"id":16822,"title":17411,"description":18815,"kind":5369,"type":39433,"section":5187,"path":16822,"group":5282,"order":18816,"pageTitle":17411,"context":40837,"tokens":40973,"tags":40975,"activation":16814,"related":18826,"status":5370,"integration":2706},[17411,18815,5187,5282,18818,18819,18820,18821,18822,17319,17445,17497,17507,17343,17553,17591,17601,17611,16814,5370,2706,39435,28089,16816,40974],"dom output",[5187,5282,2706,5370],{"id":40977,"title":17319,"description":40978,"kind":5369,"type":39984,"section":5187,"path":16822,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":40980,"tags":40981,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::css::--line-index","DOM Output CSS variable","DOM Output / Modules",[17319,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39987,5187,5282,2706,5370],{"id":40983,"title":17445,"description":40978,"kind":5369,"type":39984,"section":5187,"path":16822,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":40984,"tags":40985,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::css::--word-total",[17445,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39987,5187,5282,2706,5370],{"id":40987,"title":17497,"description":40978,"kind":5369,"type":39984,"section":5187,"path":16822,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":40988,"tags":40989,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::css::--word-index",[17497,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39987,5187,5282,2706,5370],{"id":40991,"title":17507,"description":40978,"kind":5369,"type":39984,"section":5187,"path":16822,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":40992,"tags":40993,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::css::--char-total",[17507,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39987,5187,5282,2706,5370],{"id":40995,"title":17343,"description":40978,"kind":5369,"type":39984,"section":5187,"path":16822,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":40996,"tags":40997,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::css::--char-index",[17343,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39987,5187,5282,2706,5370],{"id":40999,"title":17553,"description":40978,"kind":5369,"type":39984,"section":5187,"path":16822,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":41000,"tags":41001,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::css::--kerning",[17553,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39987,5187,5282,2706,5370],{"id":41003,"title":17591,"description":40978,"kind":5369,"type":39984,"section":5187,"path":16822,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":41004,"tags":41005,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::css::--char-global-total",[17591,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39987,5187,5282,2706,5370],{"id":41007,"title":17601,"description":40978,"kind":5369,"type":39984,"section":5187,"path":16822,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":41008,"tags":41009,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::css::--word-global-total",[17601,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39987,5187,5282,2706,5370],{"id":41011,"title":17611,"description":40978,"kind":5369,"type":39984,"section":5187,"path":16822,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":41012,"tags":41013,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::css::--line-global-total",[17611,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39987,5187,5282,2706,5370],{"id":41015,"title":18841,"description":41016,"kind":5369,"type":39440,"section":5187,"path":16822,"anchor":18840,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":41017,"tags":41018,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::heading::generated-wrappers","Section in DOM Output",[18841,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39444,5187,5282,2706,5370],{"id":41020,"title":3088,"description":41016,"kind":5369,"type":39440,"section":5187,"path":16822,"anchor":18904,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":41021,"tags":41022,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::heading::source-element",[3088,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39444,5187,5282,2706,5370],{"id":41024,"title":18980,"description":41016,"kind":5369,"type":39440,"section":5187,"path":16822,"anchor":18979,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":41025,"tags":41026,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::heading::css-variables-on-wrappers",[18980,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39444,5187,5282,2706,5370],{"id":41028,"title":17022,"description":41016,"kind":5369,"type":39440,"section":5187,"path":16822,"anchor":18983,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":41029,"tags":41030,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::heading::s-line",[17022,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39444,5187,5282,2706,5370],{"id":41032,"title":17035,"description":41016,"kind":5369,"type":39440,"section":5187,"path":16822,"anchor":19093,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":41033,"tags":41034,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::heading::s-word",[17035,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39444,5187,5282,2706,5370],{"id":41036,"title":17061,"description":41016,"kind":5369,"type":39440,"section":5187,"path":16822,"anchor":19168,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":41037,"tags":41038,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::heading::s-char",[17061,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39444,5187,5282,2706,5370],{"id":41040,"title":19263,"description":41016,"kind":5369,"type":39440,"section":5187,"path":16822,"anchor":19262,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":41041,"tags":41042,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::heading::source-element-variables",[19263,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39444,5187,5282,2706,5370],{"id":41044,"title":19357,"description":41016,"kind":5369,"type":39440,"section":5187,"path":16822,"anchor":19356,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":41045,"tags":41046,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::heading::wrapper-attributes",[19357,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39444,5187,5282,2706,5370],{"id":41048,"title":19383,"description":41016,"kind":5369,"type":39440,"section":5187,"path":16822,"anchor":19382,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":41049,"tags":41050,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::heading::nesting-order",[19383,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39444,5187,5282,2706,5370],{"id":41052,"title":19408,"description":41016,"kind":5369,"type":39440,"section":5187,"path":16822,"anchor":19407,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":41053,"tags":41054,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::heading::spaces-and-line-breaks",[19408,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39444,5187,5282,2706,5370],{"id":41056,"title":19440,"description":41016,"kind":5369,"type":39440,"section":5187,"path":16822,"anchor":19439,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":41057,"tags":41058,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::heading::helper-classes",[19440,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39444,5187,5282,2706,5370],{"id":41060,"title":19446,"description":41016,"kind":5369,"type":39440,"section":5187,"path":16822,"anchor":19443,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":41061,"tags":41062,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::heading::before-element",[19446,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39444,5187,5282,2706,5370],{"id":41064,"title":19457,"description":41016,"kind":5369,"type":39440,"section":5187,"path":16822,"anchor":19454,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":41065,"tags":41066,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::heading::after-element",[19457,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39444,5187,5282,2706,5370],{"id":41068,"title":19607,"description":41016,"kind":5369,"type":39440,"section":5187,"path":16822,"anchor":19473,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":41069,"tags":41070,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::heading::split-class-classes",[19607,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39444,5187,5282,2706,5370],{"id":41072,"title":19506,"description":41016,"kind":5369,"type":39440,"section":5187,"path":16822,"anchor":18822,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":41073,"tags":41074,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::heading::kerning",[19506,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39444,5187,5282,2706,5370],{"id":41076,"title":19529,"description":41016,"kind":5369,"type":39440,"section":5187,"path":16822,"anchor":19528,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":41077,"tags":41078,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::heading::opaque-elements",[19529,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39444,5187,5282,2706,5370],{"id":41080,"title":18775,"description":41016,"kind":5369,"type":39440,"section":5187,"path":16822,"anchor":18774,"group":5282,"order":18816,"pageTitle":17411,"context":40979,"tokens":41081,"tags":41082,"activation":16814,"related":18826,"status":5370,"integration":2706},"/docs/modules/split/dom-output::heading::related",[18775,17411,18815,5187,5282,18818,18819,18820,18821,18822],[39444,5187,5282,2706,5370],{"id":16823,"title":17926,"description":19612,"kind":5369,"type":39433,"section":5187,"path":16823,"group":5282,"order":19613,"pageTitle":17926,"context":40837,"tokens":41084,"tags":41086,"activation":16814,"related":19619,"status":5370,"integration":2706},[17926,19612,5187,5282,17094,17958,19615,17455,17630,17639,16814,5370,2706,39435,28089,16816,41085],"fit and rebuild",[5187,5282,2706,5370],{"id":41088,"title":17455,"description":41089,"kind":5369,"type":39984,"section":5187,"path":16823,"group":5282,"order":19613,"pageTitle":17926,"context":41090,"tokens":41091,"tags":41092,"activation":16814,"related":19619,"status":5370,"integration":2706},"/docs/modules/split/fit-and-rebuild::css::--fit-font-size","Fit And Rebuild CSS variable","Fit And Rebuild / Modules",[17455,17926,19612,5187,5282,17094,17958,19615],[39987,5187,5282,2706,5370],{"id":41094,"title":17630,"description":41089,"kind":5369,"type":39984,"section":5187,"path":16823,"group":5282,"order":19613,"pageTitle":17926,"context":41090,"tokens":41095,"tags":41096,"activation":16814,"related":19619,"status":5370,"integration":2706},"/docs/modules/split/fit-and-rebuild::css::--fit-scale-y",[17630,17926,19612,5187,5282,17094,17958,19615],[39987,5187,5282,2706,5370],{"id":41098,"title":17639,"description":41089,"kind":5369,"type":39984,"section":5187,"path":16823,"group":5282,"order":19613,"pageTitle":17926,"context":41090,"tokens":41099,"tags":41100,"activation":16814,"related":19619,"status":5370,"integration":2706},"/docs/modules/split/fit-and-rebuild::css::--fit-aspect-ratio",[17639,17926,19612,5187,5282,17094,17958,19615],[39987,5187,5282,2706,5370],{"id":41102,"title":5011,"description":41103,"kind":5369,"type":39440,"section":5187,"path":16823,"anchor":5010,"group":5282,"order":19613,"pageTitle":17926,"context":41090,"tokens":41104,"tags":41105,"activation":16814,"related":19619,"status":5370,"integration":2706},"/docs/modules/split/fit-and-rebuild::heading::basic-usage","Section in Fit And Rebuild",[5011,17926,19612,5187,5282,17094,17958,19615],[39444,5187,5282,2706,5370],{"id":41107,"title":19711,"description":41103,"kind":5369,"type":39440,"section":5187,"path":16823,"anchor":19710,"group":5282,"order":19613,"pageTitle":17926,"context":41090,"tokens":41108,"tags":41109,"activation":16814,"related":19619,"status":5370,"integration":2706},"/docs/modules/split/fit-and-rebuild::heading::behavior-with-line-split",[19711,17926,19612,5187,5282,17094,17958,19615],[39444,5187,5282,2706,5370],{"id":41111,"title":20052,"description":41103,"kind":5369,"type":39440,"section":5187,"path":16823,"anchor":20051,"group":5282,"order":19613,"pageTitle":17926,"context":41090,"tokens":41112,"tags":41113,"activation":16814,"related":19619,"status":5370,"integration":2706},"/docs/modules/split/fit-and-rebuild::heading::behavior-without-line-split",[20052,17926,19612,5187,5282,17094,17958,19615],[39444,5187,5282,2706,5370],{"id":41115,"title":20173,"description":41103,"kind":5369,"type":39440,"section":5187,"path":16823,"anchor":20172,"group":5282,"order":19613,"pageTitle":17926,"context":41090,"tokens":41116,"tags":41117,"activation":16814,"related":19619,"status":5370,"integration":2706},"/docs/modules/split/fit-and-rebuild::heading::char-split-and-spaces",[20173,17926,19612,5187,5282,17094,17958,19615],[39444,5187,5282,2706,5370],{"id":41119,"title":20195,"description":41103,"kind":5369,"type":39440,"section":5187,"path":16823,"anchor":20194,"group":5282,"order":19613,"pageTitle":17926,"context":41090,"tokens":41120,"tags":41121,"activation":16814,"related":19619,"status":5370,"integration":2706},"/docs/modules/split/fit-and-rebuild::heading::accuracy",[20195,17926,19612,5187,5282,17094,17958,19615],[39444,5187,5282,2706,5370],{"id":41123,"title":20217,"description":41103,"kind":5369,"type":39440,"section":5187,"path":16823,"anchor":20216,"group":5282,"order":19613,"pageTitle":17926,"context":41090,"tokens":41124,"tags":41125,"activation":16814,"related":19619,"status":5370,"integration":2706},"/docs/modules/split/fit-and-rebuild::heading::rebuild-timing",[20217,17926,19612,5187,5282,17094,17958,19615],[39444,5187,5282,2706,5370],{"id":41127,"title":17952,"description":41103,"kind":5369,"type":39440,"section":5187,"path":16823,"anchor":17951,"group":5282,"order":19613,"pageTitle":17926,"context":41090,"tokens":41128,"tags":41129,"activation":16814,"related":19619,"status":5370,"integration":2706},"/docs/modules/split/fit-and-rebuild::heading::mobile",[17952,17926,19612,5187,5282,17094,17958,19615],[39444,5187,5282,2706,5370],{"id":41131,"title":17959,"description":41103,"kind":5369,"type":39440,"section":5187,"path":16823,"anchor":17958,"group":5282,"order":19613,"pageTitle":17926,"context":41090,"tokens":41132,"tags":41133,"activation":16814,"related":19619,"status":5370,"integration":2706},"/docs/modules/split/fit-and-rebuild::heading::restore-after",[17959,17926,19612,5187,5282,17094,17958,19615],[39444,5187,5282,2706,5370],{"id":41135,"title":20308,"description":41103,"kind":5369,"type":39440,"section":5187,"path":16823,"anchor":20307,"group":5282,"order":19613,"pageTitle":17926,"context":41090,"tokens":41136,"tags":41137,"activation":16814,"related":19619,"status":5370,"integration":2706},"/docs/modules/split/fit-and-rebuild::heading::caveats",[20308,17926,19612,5187,5282,17094,17958,19615],[39444,5187,5282,2706,5370],{"id":41139,"title":18775,"description":41103,"kind":5369,"type":39440,"section":5187,"path":16823,"anchor":18774,"group":5282,"order":19613,"pageTitle":17926,"context":41090,"tokens":41140,"tags":41141,"activation":16814,"related":19619,"status":5370,"integration":2706},"/docs/modules/split/fit-and-rebuild::heading::related",[18775,17926,19612,5187,5282,17094,17958,19615],[39444,5187,5282,2706,5370],{"id":16824,"title":17645,"description":20360,"kind":5369,"type":39433,"section":5187,"path":16824,"group":5282,"order":19613,"pageTitle":17645,"context":40837,"tokens":41143,"tags":41145,"activation":16814,"related":20371,"status":5370,"integration":2706},[17645,20360,5187,5282,17742,19446,19457,20362,20363,20364,20365,20366,20367,16814,5370,2706,39435,28089,16816,41144],"inline html",[5187,5282,2706,5370],{"id":41147,"title":20384,"description":41148,"kind":5369,"type":39440,"section":5187,"path":16824,"anchor":20383,"group":5282,"order":19613,"pageTitle":17645,"context":41149,"tokens":41150,"tags":41151,"activation":16814,"related":20371,"status":5370,"integration":2706},"/docs/modules/split/inline-html::heading::how-inline-elements-are-handled","Section in Inline HTML","Inline HTML / Modules",[20384,17645,20360,5187,5282,17742,19446,19457,20362,20363,20364,20365,20366,20367],[39444,5187,5282,2706,5370],{"id":41153,"title":20391,"description":41148,"kind":5369,"type":39440,"section":5187,"path":16824,"anchor":20390,"group":5282,"order":19613,"pageTitle":17645,"context":41149,"tokens":41154,"tags":41155,"activation":16814,"related":20371,"status":5370,"integration":2706},"/docs/modules/split/inline-html::heading::inline-wrappers-preserved-with-their-children-split",[20391,17645,20360,5187,5282,17742,19446,19457,20362,20363,20364,20365,20366,20367],[39444,5187,5282,2706,5370],{"id":41157,"title":20747,"description":41148,"kind":5369,"type":39440,"section":5187,"path":16824,"anchor":20746,"group":5282,"order":19613,"pageTitle":17645,"context":41149,"tokens":41158,"tags":41159,"activation":16814,"related":20371,"status":5370,"integration":2706},"/docs/modules/split/inline-html::heading::opaque-elements-preserved-as-is-not-split",[20747,17645,20360,5187,5282,17742,19446,19457,20362,20363,20364,20365,20366,20367],[39444,5187,5282,2706,5370],{"id":41161,"title":21364,"description":41148,"kind":5369,"type":39440,"section":5187,"path":16824,"anchor":20939,"group":5282,"order":19613,"pageTitle":17645,"context":41149,"tokens":41162,"tags":41163,"activation":16814,"related":20371,"status":5370,"integration":2706},"/docs/modules/split/inline-html::heading::br-line-break",[21364,17645,20360,5187,5282,17742,19446,19457,20362,20363,20364,20365,20366,20367],[39444,5187,5282,2706,5370],{"id":41165,"title":17749,"description":41148,"kind":5369,"type":39440,"section":5187,"path":16824,"anchor":17742,"group":5282,"order":19613,"pageTitle":17645,"context":41149,"tokens":41166,"tags":41167,"activation":16814,"related":20371,"status":5370,"integration":2706},"/docs/modules/split/inline-html::heading::split-class",[17749,17645,20360,5187,5282,17742,19446,19457,20362,20363,20364,20365,20366,20367],[39444,5187,5282,2706,5370],{"id":41169,"title":21072,"description":41148,"kind":5369,"type":39440,"section":5187,"path":16824,"anchor":21071,"group":5282,"order":19613,"pageTitle":17645,"context":41149,"tokens":41170,"tags":41171,"activation":16814,"related":20371,"status":5370,"integration":2706},"/docs/modules/split/inline-html::heading::how-classes-are-applied",[21072,17645,20360,5187,5282,17742,19446,19457,20362,20363,20364,20365,20366,20367],[39444,5187,5282,2706,5370],{"id":41173,"title":21091,"description":41148,"kind":5369,"type":39440,"section":5187,"path":16824,"anchor":21090,"group":5282,"order":19613,"pageTitle":17645,"context":41149,"tokens":41174,"tags":41175,"activation":16814,"related":20371,"status":5370,"integration":2706},"/docs/modules/split/inline-html::heading::nesting",[21091,17645,20360,5187,5282,17742,19446,19457,20362,20363,20364,20365,20366,20367],[39444,5187,5282,2706,5370],{"id":41177,"title":21370,"description":41148,"kind":5369,"type":39440,"section":5187,"path":16824,"anchor":21165,"group":5282,"order":19613,"pageTitle":17645,"context":41149,"tokens":41178,"tags":41179,"activation":16814,"related":20371,"status":5370,"integration":2706},"/docs/modules/split/inline-html::heading::before-element-and-after-element",[21370,17645,20360,5187,5282,17742,19446,19457,20362,20363,20364,20365,20366,20367],[39444,5187,5282,2706,5370],{"id":41181,"title":21228,"description":41148,"kind":5369,"type":39440,"section":5187,"path":16824,"anchor":21227,"group":5282,"order":19613,"pageTitle":17645,"context":41149,"tokens":41182,"tags":41183,"activation":16814,"related":20371,"status":5370,"integration":2706},"/docs/modules/split/inline-html::heading::word-joining",[21228,17645,20360,5187,5282,17742,19446,19457,20362,20363,20364,20365,20366,20367],[39444,5187,5282,2706,5370],{"id":41185,"title":18741,"description":41148,"kind":5369,"type":39440,"section":5187,"path":16824,"anchor":18740,"group":5282,"order":19613,"pageTitle":17645,"context":41149,"tokens":41186,"tags":41187,"activation":16814,"related":20371,"status":5370,"integration":2706},"/docs/modules/split/inline-html::heading::edge-cases",[18741,17645,20360,5187,5282,17742,19446,19457,20362,20363,20364,20365,20366,20367],[39444,5187,5282,2706,5370],{"id":41189,"title":21294,"description":41148,"kind":5369,"type":39440,"section":5187,"path":16824,"anchor":21293,"group":5282,"order":19613,"pageTitle":17645,"context":41149,"tokens":41190,"tags":41191,"activation":16814,"related":20371,"status":5370,"integration":2706},"/docs/modules/split/inline-html::heading::empty-inline-elements",[21294,17645,20360,5187,5282,17742,19446,19457,20362,20363,20364,20365,20366,20367],[39444,5187,5282,2706,5370],{"id":41193,"title":21308,"description":41148,"kind":5369,"type":39440,"section":5187,"path":16824,"anchor":21307,"group":5282,"order":19613,"pageTitle":17645,"context":41149,"tokens":41194,"tags":41195,"activation":16814,"related":20371,"status":5370,"integration":2706},"/docs/modules/split/inline-html::heading::custom-elements-and-shadow-dom",[21308,17645,20360,5187,5282,17742,19446,19457,20362,20363,20364,20365,20366,20367],[39444,5187,5282,2706,5370],{"id":41197,"title":21315,"description":41148,"kind":5369,"type":39440,"section":5187,"path":16824,"anchor":21314,"group":5282,"order":19613,"pageTitle":17645,"context":41149,"tokens":41198,"tags":41199,"activation":16814,"related":20371,"status":5370,"integration":2706},"/docs/modules/split/inline-html::heading::attributes-are-preserved",[21315,17645,20360,5187,5282,17742,19446,19457,20362,20363,20364,20365,20366,20367],[39444,5187,5282,2706,5370],{"id":41201,"title":18775,"description":41148,"kind":5369,"type":39440,"section":5187,"path":16824,"anchor":18774,"group":5282,"order":19613,"pageTitle":17645,"context":41149,"tokens":41202,"tags":41203,"activation":16814,"related":20371,"status":5370,"integration":2706},"/docs/modules/split/inline-html::heading::related",[18775,17645,20360,5187,5282,17742,19446,19457,20362,20363,20364,20365,20366,20367],[39444,5187,5282,2706,5370],{"id":5295,"title":5296,"description":21379,"kind":5369,"type":39433,"section":5187,"path":5295,"group":5282,"order":21380,"pageTitle":5296,"context":40837,"tokens":41205,"tags":41206,"activation":21381,"related":21387,"status":8027,"integration":2706},[5296,21379,5187,5282,21383,5296,21381,8027,2706,39435,28089,21383],[5187,5282,2706,8027],{"id":41208,"title":5407,"description":41209,"kind":5369,"type":39440,"section":5187,"path":5295,"anchor":5406,"group":5282,"order":21380,"pageTitle":5296,"context":41210,"tokens":41211,"tags":41212,"activation":21381,"related":21387,"status":8027,"integration":2706},"/docs/modules/masonry::heading::public-api","Section in StringMasonry","StringMasonry / Modules",[5407,5296,21379,5187,5282,21383,5296],[39444,5187,5282,2706,8027],{"id":41214,"title":4905,"description":41209,"kind":5369,"type":39440,"section":5187,"path":5295,"anchor":4904,"group":5282,"order":21380,"pageTitle":5296,"context":41210,"tokens":41215,"tags":41216,"activation":21381,"related":21387,"status":8027,"integration":2706},"/docs/modules/masonry::heading::attributes",[4905,5296,21379,5187,5282,21383,5296],[39444,5187,5282,2706,8027],{"id":41218,"title":5558,"description":41209,"kind":5369,"type":39440,"section":5187,"path":5295,"anchor":5557,"group":5282,"order":21380,"pageTitle":5296,"context":41210,"tokens":41219,"tags":41220,"activation":21381,"related":21387,"status":8027,"integration":2706},"/docs/modules/masonry::heading::css-variables-and-dom-output",[5558,5296,21379,5187,5282,21383,5296],[39444,5187,5282,2706,8027],{"id":41222,"title":5593,"description":41209,"kind":5369,"type":39440,"section":5187,"path":5295,"anchor":3814,"group":5282,"order":21380,"pageTitle":5296,"context":41210,"tokens":41223,"tags":41224,"activation":21381,"related":21387,"status":8027,"integration":2706},"/docs/modules/masonry::heading::events",[5593,5296,21379,5187,5282,21383,5296],[39444,5187,5282,2706,8027],{"id":41226,"title":5667,"description":41209,"kind":5369,"type":39440,"section":5187,"path":5295,"anchor":5666,"group":5282,"order":21380,"pageTitle":5296,"context":41210,"tokens":41227,"tags":41228,"activation":21381,"related":21387,"status":8027,"integration":2706},"/docs/modules/masonry::heading::mirror-behavior",[5667,5296,21379,5187,5282,21383,5296],[39444,5187,5282,2706,8027],{"id":41230,"title":5689,"description":41209,"kind":5369,"type":39440,"section":5187,"path":5295,"anchor":5688,"group":5282,"order":21380,"pageTitle":5296,"context":41210,"tokens":41231,"tags":41232,"activation":21381,"related":21387,"status":8027,"integration":2706},"/docs/modules/masonry::heading::quick-example",[5689,5296,21379,5187,5282,21383,5296],[39444,5187,5282,2706,8027],{"id":41234,"title":6074,"description":41209,"kind":5369,"type":39440,"section":5187,"path":5295,"anchor":6073,"group":5282,"order":21380,"pageTitle":5296,"context":41210,"tokens":41235,"tags":41236,"activation":21381,"related":21387,"status":8027,"integration":2706},"/docs/modules/masonry::heading::registration",[6074,5296,21379,5187,5282,21383,5296],[39444,5187,5282,2706,8027],{"id":41238,"title":6133,"description":41209,"kind":5369,"type":39440,"section":5187,"path":5295,"anchor":6132,"group":5282,"order":21380,"pageTitle":5296,"context":41210,"tokens":41239,"tags":41240,"activation":21381,"related":21387,"status":8027,"integration":2706},"/docs/modules/masonry::heading::detailed-behavior",[6133,5296,21379,5187,5282,21383,5296],[39444,5187,5282,2706,8027],{"id":5301,"title":200,"description":22309,"kind":5369,"type":39433,"section":5187,"path":5301,"group":5282,"order":22310,"pageTitle":200,"context":40837,"tokens":41242,"tags":41243,"activation":22311,"related":22325,"status":5370,"integration":11669},[200,22309,5187,5282,22313,200,22314,22316,22317,22318,22319,22314,22321,22322,22323,22311,5370,11669,39435,28089,22313],[5187,5282,11669,5370],{"id":41245,"title":22316,"description":41246,"kind":5369,"type":4937,"section":5187,"path":5301,"group":5282,"order":22310,"pageTitle":200,"context":41247,"tokens":41248,"tags":41249,"activation":22311,"related":22325,"status":5370,"integration":11669},"/docs/modules/responsive::attr::string-mobile","StringResponsive attribute","StringResponsive / Modules",[22316,200,22309,5187,5282,22313,200,22314],[4914,5187,5282,11669,5370],{"id":41251,"title":22317,"description":41246,"kind":5369,"type":4937,"section":5187,"path":5301,"group":5282,"order":22310,"pageTitle":200,"context":41247,"tokens":41252,"tags":41253,"activation":22311,"related":22325,"status":5370,"integration":11669},"/docs/modules/responsive::attr::string-tablet",[22317,200,22309,5187,5282,22313,200,22314],[4914,5187,5282,11669,5370],{"id":41255,"title":22318,"description":41246,"kind":5369,"type":4937,"section":5187,"path":5301,"group":5282,"order":22310,"pageTitle":200,"context":41247,"tokens":41256,"tags":41257,"activation":22311,"related":22325,"status":5370,"integration":11669},"/docs/modules/responsive::attr::string-laptop",[22318,200,22309,5187,5282,22313,200,22314],[4914,5187,5282,11669,5370],{"id":41259,"title":22319,"description":41246,"kind":5369,"type":4937,"section":5187,"path":5301,"group":5282,"order":22310,"pageTitle":200,"context":41247,"tokens":41260,"tags":41261,"activation":22311,"related":22325,"status":5370,"integration":11669},"/docs/modules/responsive::attr::string-desktop",[22319,200,22309,5187,5282,22313,200,22314],[4914,5187,5282,11669,5370],{"id":41263,"title":22314,"description":41264,"kind":5369,"type":39676,"section":5187,"path":5301,"group":5282,"order":22310,"pageTitle":200,"context":41247,"tokens":41265,"tags":41266,"activation":22311,"related":22325,"status":5370,"integration":11669},"/docs/modules/responsive::event::screen:mobile","StringResponsive event",[22314,200,22309,5187,5282,22313,200,22314],[39680,5187,5282,11669,5370],{"id":41268,"title":22321,"description":41264,"kind":5369,"type":39676,"section":5187,"path":5301,"group":5282,"order":22310,"pageTitle":200,"context":41247,"tokens":41269,"tags":41270,"activation":22311,"related":22325,"status":5370,"integration":11669},"/docs/modules/responsive::event::screen:tablet",[22321,200,22309,5187,5282,22313,200,22314],[39680,5187,5282,11669,5370],{"id":41272,"title":22322,"description":41264,"kind":5369,"type":39676,"section":5187,"path":5301,"group":5282,"order":22310,"pageTitle":200,"context":41247,"tokens":41273,"tags":41274,"activation":22311,"related":22325,"status":5370,"integration":11669},"/docs/modules/responsive::event::screen:laptop",[22322,200,22309,5187,5282,22313,200,22314],[39680,5187,5282,11669,5370],{"id":41276,"title":22323,"description":41264,"kind":5369,"type":39676,"section":5187,"path":5301,"group":5282,"order":22310,"pageTitle":200,"context":41247,"tokens":41277,"tags":41278,"activation":22311,"related":22325,"status":5370,"integration":11669},"/docs/modules/responsive::event::screen:desktop",[22323,200,22309,5187,5282,22313,200,22314],[39680,5187,5282,11669,5370],{"id":41280,"title":5407,"description":41281,"kind":5369,"type":39440,"section":5187,"path":5301,"anchor":5406,"group":5282,"order":22310,"pageTitle":200,"context":41247,"tokens":41282,"tags":41283,"activation":22311,"related":22325,"status":5370,"integration":11669},"/docs/modules/responsive::heading::public-api","Section in StringResponsive",[5407,200,22309,5187,5282,22313,200,22314],[39444,5187,5282,11669,5370],{"id":41285,"title":22349,"description":41281,"kind":5369,"type":39440,"section":5187,"path":5301,"anchor":22348,"group":5282,"order":22310,"pageTitle":200,"context":41247,"tokens":41286,"tags":41287,"activation":22311,"related":22325,"status":5370,"integration":11669},"/docs/modules/responsive::heading::default-ranges",[22349,200,22309,5187,5282,22313,200,22314],[39444,5187,5282,11669,5370],{"id":41289,"title":4905,"description":41281,"kind":5369,"type":39440,"section":5187,"path":5301,"anchor":4904,"group":5282,"order":22310,"pageTitle":200,"context":41247,"tokens":41290,"tags":41291,"activation":22311,"related":22325,"status":5370,"integration":11669},"/docs/modules/responsive::heading::attributes",[4905,200,22309,5187,5282,22313,200,22314],[39444,5187,5282,11669,5370],{"id":41293,"title":5558,"description":41281,"kind":5369,"type":39440,"section":5187,"path":5301,"anchor":5557,"group":5282,"order":22310,"pageTitle":200,"context":41247,"tokens":41294,"tags":41295,"activation":22311,"related":22325,"status":5370,"integration":11669},"/docs/modules/responsive::heading::css-variables-and-dom-output",[5558,200,22309,5187,5282,22313,200,22314],[39444,5187,5282,11669,5370],{"id":41297,"title":5593,"description":41281,"kind":5369,"type":39440,"section":5187,"path":5301,"anchor":3814,"group":5282,"order":22310,"pageTitle":200,"context":41247,"tokens":41298,"tags":41299,"activation":22311,"related":22325,"status":5370,"integration":11669},"/docs/modules/responsive::heading::events",[5593,200,22309,5187,5282,22313,200,22314],[39444,5187,5282,11669,5370],{"id":41301,"title":5667,"description":41281,"kind":5369,"type":39440,"section":5187,"path":5301,"anchor":5666,"group":5282,"order":22310,"pageTitle":200,"context":41247,"tokens":41302,"tags":41303,"activation":22311,"related":22325,"status":5370,"integration":11669},"/docs/modules/responsive::heading::mirror-behavior",[5667,200,22309,5187,5282,22313,200,22314],[39444,5187,5282,11669,5370],{"id":41305,"title":5689,"description":41281,"kind":5369,"type":39440,"section":5187,"path":5301,"anchor":5688,"group":5282,"order":22310,"pageTitle":200,"context":41247,"tokens":41306,"tags":41307,"activation":22311,"related":22325,"status":5370,"integration":11669},"/docs/modules/responsive::heading::quick-example",[5689,200,22309,5187,5282,22313,200,22314],[39444,5187,5282,11669,5370],{"id":41309,"title":6074,"description":41281,"kind":5369,"type":39440,"section":5187,"path":5301,"anchor":6073,"group":5282,"order":22310,"pageTitle":200,"context":41247,"tokens":41310,"tags":41311,"activation":22311,"related":22325,"status":5370,"integration":11669},"/docs/modules/responsive::heading::registration",[6074,200,22309,5187,5282,22313,200,22314],[39444,5187,5282,11669,5370],{"id":41313,"title":6133,"description":41281,"kind":5369,"type":39440,"section":5187,"path":5301,"anchor":6132,"group":5282,"order":22310,"pageTitle":200,"context":41247,"tokens":41314,"tags":41315,"activation":22311,"related":22325,"status":5370,"integration":11669},"/docs/modules/responsive::heading::detailed-behavior",[6133,200,22309,5187,5282,22313,200,22314],[39444,5187,5282,11669,5370],{"id":3819,"title":5312,"description":23226,"kind":5369,"type":39433,"section":5187,"path":3819,"group":5305,"order":23227,"pageTitle":5312,"context":41317,"tokens":41318,"tags":41319,"activation":23228,"related":23237,"status":5370,"integration":2706},"Modules / Media & Forms",[5312,23226,5187,5305,23230,5312,23233,23234,23235,23228,5370,2706,39435,28089,23230],[5187,5305,2706,5370],{"id":41321,"title":23233,"description":41322,"kind":5369,"type":39676,"section":5187,"path":3819,"group":5305,"order":23227,"pageTitle":5312,"context":41323,"tokens":41324,"tags":41325,"activation":23228,"related":23237,"status":5370,"integration":2706},"/docs/modules/form::event::form:submit:\u003Cid>","StringForm event","StringForm / Modules",[23233,5312,23226,5187,5305,23230,5312],[39680,5187,5305,2706,5370],{"id":41327,"title":23234,"description":41322,"kind":5369,"type":39676,"section":5187,"path":3819,"group":5305,"order":23227,"pageTitle":5312,"context":41323,"tokens":41328,"tags":41329,"activation":23228,"related":23237,"status":5370,"integration":2706},"/docs/modules/form::event::form:invalid:\u003Cid>",[23234,5312,23226,5187,5305,23230,5312],[39680,5187,5305,2706,5370],{"id":41331,"title":23235,"description":41322,"kind":5369,"type":39676,"section":5187,"path":3819,"group":5305,"order":23227,"pageTitle":5312,"context":41323,"tokens":41332,"tags":41333,"activation":23228,"related":23237,"status":5370,"integration":2706},"/docs/modules/form::event::form:field:*",[23235,5312,23226,5187,5305,23230,5312],[39680,5187,5305,2706,5370],{"id":41335,"title":5407,"description":41336,"kind":5369,"type":39440,"section":5187,"path":3819,"anchor":5406,"group":5305,"order":23227,"pageTitle":5312,"context":41323,"tokens":41337,"tags":41338,"activation":23228,"related":23237,"status":5370,"integration":2706},"/docs/modules/form::heading::public-api","Section in StringForm",[5407,5312,23226,5187,5305,23230,5312],[39444,5187,5305,2706,5370],{"id":41340,"title":4905,"description":41336,"kind":5369,"type":39440,"section":5187,"path":3819,"anchor":4904,"group":5305,"order":23227,"pageTitle":5312,"context":41323,"tokens":41341,"tags":41342,"activation":23228,"related":23237,"status":5370,"integration":2706},"/docs/modules/form::heading::attributes",[4905,5312,23226,5187,5305,23230,5312],[39444,5187,5305,2706,5370],{"id":41344,"title":5558,"description":41336,"kind":5369,"type":39440,"section":5187,"path":3819,"anchor":5557,"group":5305,"order":23227,"pageTitle":5312,"context":41323,"tokens":41345,"tags":41346,"activation":23228,"related":23237,"status":5370,"integration":2706},"/docs/modules/form::heading::css-variables-and-dom-output",[5558,5312,23226,5187,5305,23230,5312],[39444,5187,5305,2706,5370],{"id":41348,"title":5593,"description":41336,"kind":5369,"type":39440,"section":5187,"path":3819,"anchor":3814,"group":5305,"order":23227,"pageTitle":5312,"context":41323,"tokens":41349,"tags":41350,"activation":23228,"related":23237,"status":5370,"integration":2706},"/docs/modules/form::heading::events",[5593,5312,23226,5187,5305,23230,5312],[39444,5187,5305,2706,5370],{"id":41352,"title":5667,"description":41336,"kind":5369,"type":39440,"section":5187,"path":3819,"anchor":5666,"group":5305,"order":23227,"pageTitle":5312,"context":41323,"tokens":41353,"tags":41354,"activation":23228,"related":23237,"status":5370,"integration":2706},"/docs/modules/form::heading::mirror-behavior",[5667,5312,23226,5187,5305,23230,5312],[39444,5187,5305,2706,5370],{"id":41356,"title":5689,"description":41336,"kind":5369,"type":39440,"section":5187,"path":3819,"anchor":5688,"group":5305,"order":23227,"pageTitle":5312,"context":41323,"tokens":41357,"tags":41358,"activation":23228,"related":23237,"status":5370,"integration":2706},"/docs/modules/form::heading::quick-example",[5689,5312,23226,5187,5305,23230,5312],[39444,5187,5305,2706,5370],{"id":41360,"title":6074,"description":41336,"kind":5369,"type":39440,"section":5187,"path":3819,"anchor":6073,"group":5305,"order":23227,"pageTitle":5312,"context":41323,"tokens":41361,"tags":41362,"activation":23228,"related":23237,"status":5370,"integration":2706},"/docs/modules/form::heading::registration",[6074,5312,23226,5187,5305,23230,5312],[39444,5187,5305,2706,5370],{"id":41364,"title":6133,"description":41336,"kind":5369,"type":39440,"section":5187,"path":3819,"anchor":6132,"group":5305,"order":23227,"pageTitle":5312,"context":41323,"tokens":41365,"tags":41366,"activation":23228,"related":23237,"status":5370,"integration":2706},"/docs/modules/form::heading::detailed-behavior",[6133,5312,23226,5187,5305,23230,5312],[39444,5187,5305,2706,5370],{"id":5317,"title":205,"description":24791,"kind":5369,"type":39433,"section":5187,"path":5317,"group":5305,"order":24792,"pageTitle":205,"context":41317,"tokens":41368,"tags":41369,"activation":24793,"related":24800,"status":5370,"integration":11669},[205,24791,5187,5305,24795,205,24796,24793,5370,11669,39435,28089,24795],[5187,5305,11669,5370],{"id":41371,"title":5407,"description":41372,"kind":5369,"type":39440,"section":5187,"path":5317,"anchor":5406,"group":5305,"order":24792,"pageTitle":205,"context":41373,"tokens":41374,"tags":41375,"activation":24793,"related":24800,"status":5370,"integration":11669},"/docs/modules/loading::heading::public-api","Section in StringLoading","StringLoading / Modules",[5407,205,24791,5187,5305,24795,205,24796],[39444,5187,5305,11669,5370],{"id":41377,"title":4905,"description":41372,"kind":5369,"type":39440,"section":5187,"path":5317,"anchor":4904,"group":5305,"order":24792,"pageTitle":205,"context":41373,"tokens":41378,"tags":41379,"activation":24793,"related":24800,"status":5370,"integration":11669},"/docs/modules/loading::heading::attributes",[4905,205,24791,5187,5305,24795,205,24796],[39444,5187,5305,11669,5370],{"id":41381,"title":24826,"description":41372,"kind":5369,"type":39440,"section":5187,"path":5317,"anchor":2452,"group":5305,"order":24792,"pageTitle":205,"context":41373,"tokens":41382,"tags":41383,"activation":24793,"related":24800,"status":5370,"integration":11669},"/docs/modules/loading::heading::settings",[24826,205,24791,5187,5305,24795,205,24796],[39444,5187,5305,11669,5370],{"id":41385,"title":5558,"description":41372,"kind":5369,"type":39440,"section":5187,"path":5317,"anchor":5557,"group":5305,"order":24792,"pageTitle":205,"context":41373,"tokens":41386,"tags":41387,"activation":24793,"related":24800,"status":5370,"integration":11669},"/docs/modules/loading::heading::css-variables-and-dom-output",[5558,205,24791,5187,5305,24795,205,24796],[39444,5187,5305,11669,5370],{"id":41389,"title":5593,"description":41372,"kind":5369,"type":39440,"section":5187,"path":5317,"anchor":3814,"group":5305,"order":24792,"pageTitle":205,"context":41373,"tokens":41390,"tags":41391,"activation":24793,"related":24800,"status":5370,"integration":11669},"/docs/modules/loading::heading::events",[5593,205,24791,5187,5305,24795,205,24796],[39444,5187,5305,11669,5370],{"id":41393,"title":5667,"description":41372,"kind":5369,"type":39440,"section":5187,"path":5317,"anchor":5666,"group":5305,"order":24792,"pageTitle":205,"context":41373,"tokens":41394,"tags":41395,"activation":24793,"related":24800,"status":5370,"integration":11669},"/docs/modules/loading::heading::mirror-behavior",[5667,205,24791,5187,5305,24795,205,24796],[39444,5187,5305,11669,5370],{"id":41397,"title":5689,"description":41372,"kind":5369,"type":39440,"section":5187,"path":5317,"anchor":5688,"group":5305,"order":24792,"pageTitle":205,"context":41373,"tokens":41398,"tags":41399,"activation":24793,"related":24800,"status":5370,"integration":11669},"/docs/modules/loading::heading::quick-example",[5689,205,24791,5187,5305,24795,205,24796],[39444,5187,5305,11669,5370],{"id":41401,"title":6074,"description":41372,"kind":5369,"type":39440,"section":5187,"path":5317,"anchor":6073,"group":5305,"order":24792,"pageTitle":205,"context":41373,"tokens":41402,"tags":41403,"activation":24793,"related":24800,"status":5370,"integration":11669},"/docs/modules/loading::heading::registration",[6074,205,24791,5187,5305,24795,205,24796],[39444,5187,5305,11669,5370],{"id":41405,"title":6133,"description":41372,"kind":5369,"type":39440,"section":5187,"path":5317,"anchor":6132,"group":5305,"order":24792,"pageTitle":205,"context":41373,"tokens":41406,"tags":41407,"activation":24793,"related":24800,"status":5370,"integration":11669},"/docs/modules/loading::heading::detailed-behavior",[6133,205,24791,5187,5305,24795,205,24796],[39444,5187,5305,11669,5370],{"id":5322,"title":5323,"description":25294,"kind":5369,"type":39433,"section":5187,"path":5322,"group":5305,"order":25295,"pageTitle":5323,"context":41317,"tokens":41409,"tags":41410,"activation":25296,"related":25302,"status":5370,"integration":2706},[5323,25294,5187,5305,25298,5323,25296,5370,2706,39435,28089,25298],[5187,5305,2706,5370],{"id":41412,"title":5407,"description":41413,"kind":5369,"type":39440,"section":5187,"path":5322,"anchor":5406,"group":5305,"order":25295,"pageTitle":5323,"context":41414,"tokens":41415,"tags":41416,"activation":25296,"related":25302,"status":5370,"integration":2706},"/docs/modules/lazy::heading::public-api","Section in StringLazy","StringLazy / Modules",[5407,5323,25294,5187,5305,25298,5323],[39444,5187,5305,2706,5370],{"id":41418,"title":4905,"description":41413,"kind":5369,"type":39440,"section":5187,"path":5322,"anchor":4904,"group":5305,"order":25295,"pageTitle":5323,"context":41414,"tokens":41419,"tags":41420,"activation":25296,"related":25302,"status":5370,"integration":2706},"/docs/modules/lazy::heading::attributes",[4905,5323,25294,5187,5305,25298,5323],[39444,5187,5305,2706,5370],{"id":41422,"title":5558,"description":41413,"kind":5369,"type":39440,"section":5187,"path":5322,"anchor":5557,"group":5305,"order":25295,"pageTitle":5323,"context":41414,"tokens":41423,"tags":41424,"activation":25296,"related":25302,"status":5370,"integration":2706},"/docs/modules/lazy::heading::css-variables-and-dom-output",[5558,5323,25294,5187,5305,25298,5323],[39444,5187,5305,2706,5370],{"id":41426,"title":5593,"description":41413,"kind":5369,"type":39440,"section":5187,"path":5322,"anchor":3814,"group":5305,"order":25295,"pageTitle":5323,"context":41414,"tokens":41427,"tags":41428,"activation":25296,"related":25302,"status":5370,"integration":2706},"/docs/modules/lazy::heading::events",[5593,5323,25294,5187,5305,25298,5323],[39444,5187,5305,2706,5370],{"id":41430,"title":5667,"description":41413,"kind":5369,"type":39440,"section":5187,"path":5322,"anchor":5666,"group":5305,"order":25295,"pageTitle":5323,"context":41414,"tokens":41431,"tags":41432,"activation":25296,"related":25302,"status":5370,"integration":2706},"/docs/modules/lazy::heading::mirror-behavior",[5667,5323,25294,5187,5305,25298,5323],[39444,5187,5305,2706,5370],{"id":41434,"title":5689,"description":41413,"kind":5369,"type":39440,"section":5187,"path":5322,"anchor":5688,"group":5305,"order":25295,"pageTitle":5323,"context":41414,"tokens":41435,"tags":41436,"activation":25296,"related":25302,"status":5370,"integration":2706},"/docs/modules/lazy::heading::quick-example",[5689,5323,25294,5187,5305,25298,5323],[39444,5187,5305,2706,5370],{"id":41438,"title":6074,"description":41413,"kind":5369,"type":39440,"section":5187,"path":5322,"anchor":6073,"group":5305,"order":25295,"pageTitle":5323,"context":41414,"tokens":41439,"tags":41440,"activation":25296,"related":25302,"status":5370,"integration":2706},"/docs/modules/lazy::heading::registration",[6074,5323,25294,5187,5305,25298,5323],[39444,5187,5305,2706,5370],{"id":41442,"title":6133,"description":41413,"kind":5369,"type":39440,"section":5187,"path":5322,"anchor":6132,"group":5305,"order":25295,"pageTitle":5323,"context":41414,"tokens":41443,"tags":41444,"activation":25296,"related":25302,"status":5370,"integration":2706},"/docs/modules/lazy::heading::detailed-behavior",[6133,5323,25294,5187,5305,25298,5323],[39444,5187,5305,2706,5370],{"id":5328,"title":5329,"description":25978,"kind":5369,"type":39433,"section":5187,"path":5328,"group":5305,"order":25979,"pageTitle":5329,"context":41317,"tokens":41446,"tags":41448,"activation":25980,"related":25986,"status":8027,"integration":2706},[5329,25978,5187,5305,25982,5329,25980,8027,2706,39435,28089,41447],"video autoplay",[5187,5305,2706,8027],{"id":41450,"title":5407,"description":41451,"kind":5369,"type":39440,"section":5187,"path":5328,"anchor":5406,"group":5305,"order":25979,"pageTitle":5329,"context":41452,"tokens":41453,"tags":41454,"activation":25980,"related":25986,"status":8027,"integration":2706},"/docs/modules/video-autoplay::heading::public-api","Section in StringVideoAutoplay","StringVideoAutoplay / Modules",[5407,5329,25978,5187,5305,25982,5329],[39444,5187,5305,2706,8027],{"id":41456,"title":4905,"description":41451,"kind":5369,"type":39440,"section":5187,"path":5328,"anchor":4904,"group":5305,"order":25979,"pageTitle":5329,"context":41452,"tokens":41457,"tags":41458,"activation":25980,"related":25986,"status":8027,"integration":2706},"/docs/modules/video-autoplay::heading::attributes",[4905,5329,25978,5187,5305,25982,5329],[39444,5187,5305,2706,8027],{"id":41460,"title":5558,"description":41451,"kind":5369,"type":39440,"section":5187,"path":5328,"anchor":5557,"group":5305,"order":25979,"pageTitle":5329,"context":41452,"tokens":41461,"tags":41462,"activation":25980,"related":25986,"status":8027,"integration":2706},"/docs/modules/video-autoplay::heading::css-variables-and-dom-output",[5558,5329,25978,5187,5305,25982,5329],[39444,5187,5305,2706,8027],{"id":41464,"title":5593,"description":41451,"kind":5369,"type":39440,"section":5187,"path":5328,"anchor":3814,"group":5305,"order":25979,"pageTitle":5329,"context":41452,"tokens":41465,"tags":41466,"activation":25980,"related":25986,"status":8027,"integration":2706},"/docs/modules/video-autoplay::heading::events",[5593,5329,25978,5187,5305,25982,5329],[39444,5187,5305,2706,8027],{"id":41468,"title":5667,"description":41451,"kind":5369,"type":39440,"section":5187,"path":5328,"anchor":5666,"group":5305,"order":25979,"pageTitle":5329,"context":41452,"tokens":41469,"tags":41470,"activation":25980,"related":25986,"status":8027,"integration":2706},"/docs/modules/video-autoplay::heading::mirror-behavior",[5667,5329,25978,5187,5305,25982,5329],[39444,5187,5305,2706,8027],{"id":41472,"title":5689,"description":41451,"kind":5369,"type":39440,"section":5187,"path":5328,"anchor":5688,"group":5305,"order":25979,"pageTitle":5329,"context":41452,"tokens":41473,"tags":41474,"activation":25980,"related":25986,"status":8027,"integration":2706},"/docs/modules/video-autoplay::heading::quick-example",[5689,5329,25978,5187,5305,25982,5329],[39444,5187,5305,2706,8027],{"id":41476,"title":6074,"description":41451,"kind":5369,"type":39440,"section":5187,"path":5328,"anchor":6073,"group":5305,"order":25979,"pageTitle":5329,"context":41452,"tokens":41477,"tags":41478,"activation":25980,"related":25986,"status":8027,"integration":2706},"/docs/modules/video-autoplay::heading::registration",[6074,5329,25978,5187,5305,25982,5329],[39444,5187,5305,2706,8027],{"id":41480,"title":6133,"description":41451,"kind":5369,"type":39440,"section":5187,"path":5328,"anchor":6132,"group":5305,"order":25979,"pageTitle":5329,"context":41452,"tokens":41481,"tags":41482,"activation":25980,"related":25986,"status":8027,"integration":2706},"/docs/modules/video-autoplay::heading::detailed-behavior",[6133,5329,25978,5187,5305,25982,5329],[39444,5187,5305,2706,8027],{"id":5340,"title":5341,"description":26523,"kind":5369,"type":39433,"section":5187,"path":5340,"group":5333,"order":26524,"pageTitle":5341,"context":41484,"tokens":41485,"tags":41486,"activation":26525,"related":26531,"status":8027,"integration":11669},"Modules / Diagnostics",[5341,26523,5187,5333,26527,5341,26525,8027,11669,39435,28089,26527],[5187,5333,11669,8027],{"id":41488,"title":5407,"description":41489,"kind":5369,"type":39440,"section":5187,"path":5340,"anchor":5406,"group":5333,"order":26524,"pageTitle":5341,"context":41490,"tokens":41491,"tags":41492,"activation":26525,"related":26531,"status":8027,"integration":11669},"/docs/modules/fps-tracker::heading::public-api","Section in StringFPSTracker","StringFPSTracker / Modules",[5407,5341,26523,5187,5333,26527,5341],[39444,5187,5333,11669,8027],{"id":41494,"title":4905,"description":41489,"kind":5369,"type":39440,"section":5187,"path":5340,"anchor":4904,"group":5333,"order":26524,"pageTitle":5341,"context":41490,"tokens":41495,"tags":41496,"activation":26525,"related":26531,"status":8027,"integration":11669},"/docs/modules/fps-tracker::heading::attributes",[4905,5341,26523,5187,5333,26527,5341],[39444,5187,5333,11669,8027],{"id":41498,"title":5558,"description":41489,"kind":5369,"type":39440,"section":5187,"path":5340,"anchor":5557,"group":5333,"order":26524,"pageTitle":5341,"context":41490,"tokens":41499,"tags":41500,"activation":26525,"related":26531,"status":8027,"integration":11669},"/docs/modules/fps-tracker::heading::css-variables-and-dom-output",[5558,5341,26523,5187,5333,26527,5341],[39444,5187,5333,11669,8027],{"id":41502,"title":5593,"description":41489,"kind":5369,"type":39440,"section":5187,"path":5340,"anchor":3814,"group":5333,"order":26524,"pageTitle":5341,"context":41490,"tokens":41503,"tags":41504,"activation":26525,"related":26531,"status":8027,"integration":11669},"/docs/modules/fps-tracker::heading::events",[5593,5341,26523,5187,5333,26527,5341],[39444,5187,5333,11669,8027],{"id":41506,"title":5667,"description":41489,"kind":5369,"type":39440,"section":5187,"path":5340,"anchor":5666,"group":5333,"order":26524,"pageTitle":5341,"context":41490,"tokens":41507,"tags":41508,"activation":26525,"related":26531,"status":8027,"integration":11669},"/docs/modules/fps-tracker::heading::mirror-behavior",[5667,5341,26523,5187,5333,26527,5341],[39444,5187,5333,11669,8027],{"id":41510,"title":5689,"description":41489,"kind":5369,"type":39440,"section":5187,"path":5340,"anchor":5688,"group":5333,"order":26524,"pageTitle":5341,"context":41490,"tokens":41511,"tags":41512,"activation":26525,"related":26531,"status":8027,"integration":11669},"/docs/modules/fps-tracker::heading::quick-example",[5689,5341,26523,5187,5333,26527,5341],[39444,5187,5333,11669,8027],{"id":41514,"title":6074,"description":41489,"kind":5369,"type":39440,"section":5187,"path":5340,"anchor":6073,"group":5333,"order":26524,"pageTitle":5341,"context":41490,"tokens":41515,"tags":41516,"activation":26525,"related":26531,"status":8027,"integration":11669},"/docs/modules/fps-tracker::heading::registration",[6074,5341,26523,5187,5333,26527,5341],[39444,5187,5333,11669,8027],{"id":41518,"title":6133,"description":41489,"kind":5369,"type":39440,"section":5187,"path":5340,"anchor":6132,"group":5333,"order":26524,"pageTitle":5341,"context":41490,"tokens":41519,"tags":41520,"activation":26525,"related":26531,"status":8027,"integration":11669},"/docs/modules/fps-tracker::heading::detailed-behavior",[6133,5341,26523,5187,5333,26527,5341],[39444,5187,5333,11669,8027],{"id":5346,"title":5347,"description":27129,"kind":5369,"type":39433,"section":5187,"path":5346,"group":5333,"order":27130,"pageTitle":5347,"context":41484,"tokens":41522,"tags":41523,"activation":27131,"related":27137,"status":8027,"integration":11669},[5347,27129,5187,5333,27133,5347,27131,8027,11669,39435,28089,27133],[5187,5333,11669,8027],{"id":41525,"title":5407,"description":41526,"kind":5369,"type":39440,"section":5187,"path":5346,"anchor":5406,"group":5333,"order":27130,"pageTitle":5347,"context":41527,"tokens":41528,"tags":41529,"activation":27131,"related":27137,"status":8027,"integration":11669},"/docs/modules/position-tracker::heading::public-api","Section in StringPositionTracker","StringPositionTracker / Modules",[5407,5347,27129,5187,5333,27133,5347],[39444,5187,5333,11669,8027],{"id":41531,"title":4905,"description":41526,"kind":5369,"type":39440,"section":5187,"path":5346,"anchor":4904,"group":5333,"order":27130,"pageTitle":5347,"context":41527,"tokens":41532,"tags":41533,"activation":27131,"related":27137,"status":8027,"integration":11669},"/docs/modules/position-tracker::heading::attributes",[4905,5347,27129,5187,5333,27133,5347],[39444,5187,5333,11669,8027],{"id":41535,"title":5558,"description":41526,"kind":5369,"type":39440,"section":5187,"path":5346,"anchor":5557,"group":5333,"order":27130,"pageTitle":5347,"context":41527,"tokens":41536,"tags":41537,"activation":27131,"related":27137,"status":8027,"integration":11669},"/docs/modules/position-tracker::heading::css-variables-and-dom-output",[5558,5347,27129,5187,5333,27133,5347],[39444,5187,5333,11669,8027],{"id":41539,"title":5593,"description":41526,"kind":5369,"type":39440,"section":5187,"path":5346,"anchor":3814,"group":5333,"order":27130,"pageTitle":5347,"context":41527,"tokens":41540,"tags":41541,"activation":27131,"related":27137,"status":8027,"integration":11669},"/docs/modules/position-tracker::heading::events",[5593,5347,27129,5187,5333,27133,5347],[39444,5187,5333,11669,8027],{"id":41543,"title":5667,"description":41526,"kind":5369,"type":39440,"section":5187,"path":5346,"anchor":5666,"group":5333,"order":27130,"pageTitle":5347,"context":41527,"tokens":41544,"tags":41545,"activation":27131,"related":27137,"status":8027,"integration":11669},"/docs/modules/position-tracker::heading::mirror-behavior",[5667,5347,27129,5187,5333,27133,5347],[39444,5187,5333,11669,8027],{"id":41547,"title":5689,"description":41526,"kind":5369,"type":39440,"section":5187,"path":5346,"anchor":5688,"group":5333,"order":27130,"pageTitle":5347,"context":41527,"tokens":41548,"tags":41549,"activation":27131,"related":27137,"status":8027,"integration":11669},"/docs/modules/position-tracker::heading::quick-example",[5689,5347,27129,5187,5333,27133,5347],[39444,5187,5333,11669,8027],{"id":41551,"title":6074,"description":41526,"kind":5369,"type":39440,"section":5187,"path":5346,"anchor":6073,"group":5333,"order":27130,"pageTitle":5347,"context":41527,"tokens":41552,"tags":41553,"activation":27131,"related":27137,"status":8027,"integration":11669},"/docs/modules/position-tracker::heading::registration",[6074,5347,27129,5187,5333,27133,5347],[39444,5187,5333,11669,8027],{"id":41555,"title":6133,"description":41526,"kind":5369,"type":39440,"section":5187,"path":5346,"anchor":6132,"group":5333,"order":27130,"pageTitle":5347,"context":41527,"tokens":41556,"tags":41557,"activation":27131,"related":27137,"status":8027,"integration":11669},"/docs/modules/position-tracker::heading::detailed-behavior",[6133,5347,27129,5187,5333,27133,5347],[39444,5187,5333,11669,8027],{"id":2350,"title":5357,"description":27993,"kind":9,"type":39433,"section":5357,"path":2350,"group":-1,"order":11,"pageTitle":5357,"context":5357,"tokens":41559,"tags":41561,"activation":-1,"related":27998,"status":-1,"integration":-1},[5357,27993,5357,39435,41560,14],"custom modules",[5357],{"id":41563,"title":28015,"description":41564,"kind":9,"type":39440,"section":5357,"path":2350,"anchor":28014,"group":-1,"order":11,"pageTitle":5357,"context":41565,"tokens":41566,"tags":41567,"activation":-1,"related":27998,"status":-1,"integration":-1},"/docs/custom-modules/overview::heading::what-counts-as-a-custom-module","Section in Custom Modules","Custom Modules / Custom Modules",[28015,5357,27993,5357],[39444,5357],{"id":41569,"title":28041,"description":41564,"kind":9,"type":39440,"section":5357,"path":2350,"anchor":28040,"group":-1,"order":11,"pageTitle":5357,"context":41565,"tokens":41570,"tags":41571,"activation":-1,"related":27998,"status":-1,"integration":-1},"/docs/custom-modules/overview::heading::safe-authoring-surface",[28041,5357,27993,5357],[39444,5357],{"id":41573,"title":28094,"description":41564,"kind":9,"type":39440,"section":5357,"path":2350,"anchor":28093,"group":-1,"order":11,"pageTitle":5357,"context":41565,"tokens":41574,"tags":41575,"activation":-1,"related":27998,"status":-1,"integration":-1},"/docs/custom-modules/overview::heading::what-this-section-covers",[28094,5357,27993,5357],[39444,5357],{"id":41577,"title":28164,"description":41564,"kind":9,"type":39440,"section":5357,"path":2350,"anchor":28163,"group":-1,"order":11,"pageTitle":5357,"context":41565,"tokens":41578,"tags":41579,"activation":-1,"related":27998,"status":-1,"integration":-1},"/docs/custom-modules/overview::heading::authoring-rule",[28164,5357,27993,5357],[39444,5357],{"id":41581,"title":28190,"description":41564,"kind":9,"type":39440,"section":5357,"path":2350,"anchor":28189,"group":-1,"order":11,"pageTitle":5357,"context":41565,"tokens":41582,"tags":41583,"activation":-1,"related":27998,"status":-1,"integration":-1},"/docs/custom-modules/overview::heading::the-practical-mindset",[28190,5357,27993,5357],[39444,5357],{"id":27999,"title":28104,"description":28228,"kind":9,"type":39433,"section":5357,"path":27999,"group":28229,"order":427,"pageTitle":28104,"context":41585,"tokens":41586,"tags":41588,"activation":-1,"related":28236,"status":-1,"integration":-1},"Custom Modules / Getting Started",[28104,28228,5357,28229,28231,28232,39435,41560,41587],"first module",[5357,28229],{"id":41590,"title":28251,"description":41591,"kind":9,"type":39440,"section":5357,"path":27999,"anchor":28250,"group":28229,"order":427,"pageTitle":28104,"context":41592,"tokens":41593,"tags":41594,"activation":-1,"related":28236,"status":-1,"integration":-1},"/docs/custom-modules/first-module::heading::minimal-example","Section in First Custom Module","First Custom Module / Custom Modules",[28251,28104,28228,5357,28229,28231,28232],[39444,5357,28229],{"id":41596,"title":28631,"description":41591,"kind":9,"type":39440,"section":5357,"path":27999,"anchor":28630,"group":28229,"order":427,"pageTitle":28104,"context":41592,"tokens":41597,"tags":41598,"activation":-1,"related":28236,"status":-1,"integration":-1},"/docs/custom-modules/first-module::heading::what-each-part-does",[28631,28104,28228,5357,28229,28231,28232],[39444,5357,28229],{"id":41600,"title":28682,"description":41591,"kind":9,"type":39440,"section":5357,"path":27999,"anchor":28681,"group":28229,"order":427,"pageTitle":28104,"context":41592,"tokens":41601,"tags":41602,"activation":-1,"related":28236,"status":-1,"integration":-1},"/docs/custom-modules/first-module::heading::the-important-registration-rule",[28682,28104,28228,5357,28229,28231,28232],[39444,5357,28229],{"id":41604,"title":28735,"description":41591,"kind":9,"type":39440,"section":5357,"path":27999,"anchor":28734,"group":28229,"order":427,"pageTitle":28104,"context":41592,"tokens":41605,"tags":41606,"activation":-1,"related":28236,"status":-1,"integration":-1},"/docs/custom-modules/first-module::heading::where-settings-come-from",[28735,28104,28228,5357,28229,28231,28232],[39444,5357,28229],{"id":41608,"title":28792,"description":41591,"kind":9,"type":39440,"section":5357,"path":27999,"anchor":28791,"group":28229,"order":427,"pageTitle":28104,"context":41592,"tokens":41609,"tags":41610,"activation":-1,"related":28236,"status":-1,"integration":-1},"/docs/custom-modules/first-module::heading::when-to-stop-at-this-level",[28792,28104,28228,5357,28229,28231,28232],[39444,5357,28229],{"id":28110,"title":28111,"description":28825,"kind":9,"type":39433,"section":5357,"path":28110,"group":28229,"order":609,"pageTitle":28111,"context":41585,"tokens":41612,"tags":41614,"activation":-1,"related":28831,"status":-1,"integration":-1},[28111,28825,5357,28229,28827,28121,39435,41560,41613],"element vs global",[5357,28229],{"id":41616,"title":28843,"description":41617,"kind":9,"type":39440,"section":5357,"path":28110,"anchor":28842,"group":28229,"order":609,"pageTitle":28111,"context":41618,"tokens":41619,"tags":41620,"activation":-1,"related":28831,"status":-1,"integration":-1},"/docs/custom-modules/element-vs-global::heading::element-modules","Section in Element vs Global Modules","Element vs Global Modules / Custom Modules",[28843,28111,28825,5357,28229,28827,28121],[39444,5357,28229],{"id":41622,"title":28972,"description":41617,"kind":9,"type":39440,"section":5357,"path":28110,"anchor":28971,"group":28229,"order":609,"pageTitle":28111,"context":41618,"tokens":41623,"tags":41624,"activation":-1,"related":28831,"status":-1,"integration":-1},"/docs/custom-modules/element-vs-global::heading::global-modules",[28972,28111,28825,5357,28229,28827,28121],[39444,5357,28229],{"id":41626,"title":29121,"description":41617,"kind":9,"type":39440,"section":5357,"path":28110,"anchor":29120,"group":28229,"order":609,"pageTitle":28111,"context":41618,"tokens":41627,"tags":41628,"activation":-1,"related":28831,"status":-1,"integration":-1},"/docs/custom-modules/element-vs-global::heading::how-connection-actually-works",[29121,28111,28825,5357,28229,28827,28121],[39444,5357,28229],{"id":41630,"title":29195,"description":41617,"kind":9,"type":39440,"section":5357,"path":28110,"anchor":29194,"group":28229,"order":609,"pageTitle":28111,"context":41618,"tokens":41631,"tags":41632,"activation":-1,"related":28831,"status":-1,"integration":-1},"/docs/custom-modules/element-vs-global::heading::core-module-vs-ui-module",[29195,28111,28825,5357,28229,28827,28121],[39444,5357,28229],{"id":41634,"title":29233,"description":41617,"kind":9,"type":39440,"section":5357,"path":28110,"anchor":29232,"group":28229,"order":609,"pageTitle":28111,"context":41618,"tokens":41635,"tags":41636,"activation":-1,"related":28831,"status":-1,"integration":-1},"/docs/custom-modules/element-vs-global::heading::practical-rule",[29233,28111,28825,5357,28229,28827,28121],[39444,5357,28229],{"id":28000,"title":28117,"description":29266,"kind":9,"type":39433,"section":5357,"path":28000,"group":29267,"order":819,"pageTitle":28117,"context":41638,"tokens":41639,"tags":41641,"activation":-1,"related":29274,"status":-1,"integration":-1},"Custom Modules / Authoring Surface",[28117,29266,5357,29267,28656,29269,29270,39435,41560,41640],"module contract",[5357,29267],{"id":41643,"title":29288,"description":41644,"kind":9,"type":39440,"section":5357,"path":28000,"anchor":29287,"group":29267,"order":819,"pageTitle":28117,"context":41645,"tokens":41646,"tags":41647,"activation":-1,"related":29274,"status":-1,"integration":-1},"/docs/custom-modules/module-contract::heading::what-your-module-usually-sets","Section in Module Contract","Module Contract / Custom Modules",[29288,28117,29266,5357,29267,28656,29269,29270],[39444,5357,29267],{"id":41649,"title":29415,"description":41644,"kind":9,"type":39440,"section":5357,"path":28000,"anchor":29414,"group":29267,"order":819,"pageTitle":28117,"context":41645,"tokens":41650,"tags":41651,"activation":-1,"related":29274,"status":-1,"integration":-1},"/docs/custom-modules/module-contract::heading::base-attributes-you-already-inherit",[29415,28117,29266,5357,29267,28656,29269,29270],[39444,5357,29267],{"id":41653,"title":29520,"description":41644,"kind":9,"type":39440,"section":5357,"path":28000,"anchor":29519,"group":29267,"order":819,"pageTitle":28117,"context":41645,"tokens":41654,"tags":41655,"activation":-1,"related":29274,"status":-1,"integration":-1},"/docs/custom-modules/module-contract::heading::attribute-mapping",[29520,28117,29266,5357,29267,28656,29269,29270],[39444,5357,29267],{"id":41657,"title":29645,"description":41644,"kind":9,"type":39440,"section":5357,"path":28000,"anchor":29644,"group":29267,"order":819,"pageTitle":28117,"context":41645,"tokens":41658,"tags":41659,"activation":-1,"related":29274,"status":-1,"integration":-1},"/docs/custom-modules/module-contract::heading::supported-parse-types",[29645,28117,29266,5357,29267,28656,29269,29270],[39444,5357,29267],{"id":41661,"title":29703,"description":41644,"kind":9,"type":39440,"section":5357,"path":28000,"anchor":29702,"group":29267,"order":819,"pageTitle":28117,"context":41645,"tokens":41662,"tags":41663,"activation":-1,"related":29274,"status":-1,"integration":-1},"/docs/custom-modules/module-contract::heading::connection-and-storage",[29703,28117,29266,5357,29267,28656,29269,29270],[39444,5357,29267],{"id":41665,"title":29730,"description":41644,"kind":9,"type":39440,"section":5357,"path":28000,"anchor":29729,"group":29267,"order":819,"pageTitle":28117,"context":41645,"tokens":41666,"tags":41667,"activation":-1,"related":29274,"status":-1,"integration":-1},"/docs/custom-modules/module-contract::heading::output-channels",[29730,28117,29266,5357,29267,28656,29269,29270],[39444,5357,29267],{"id":41669,"title":29785,"description":41644,"kind":9,"type":39440,"section":5357,"path":28000,"anchor":29784,"group":29267,"order":819,"pageTitle":28117,"context":41645,"tokens":41670,"tags":41671,"activation":-1,"related":29274,"status":-1,"integration":-1},"/docs/custom-modules/module-contract::heading::custom-matching",[29785,28117,29266,5357,29267,28656,29269,29270],[39444,5357,29267],{"id":41673,"title":29853,"description":41644,"kind":9,"type":39440,"section":5357,"path":28000,"anchor":29852,"group":29267,"order":819,"pageTitle":28117,"context":41645,"tokens":41674,"tags":41675,"activation":-1,"related":29274,"status":-1,"integration":-1},"/docs/custom-modules/module-contract::heading::cleanup-contract",[29853,28117,29266,5357,29267,28656,29269,29270],[39444,5357,29267],{"id":28001,"title":28127,"description":29896,"kind":9,"type":39433,"section":5357,"path":28001,"group":29267,"order":1908,"pageTitle":28127,"context":41638,"tokens":41677,"tags":41679,"activation":-1,"related":29905,"status":-1,"integration":-1},[28127,29896,5357,29267,29898,29899,29900,29901,39435,41560,41678],"lifecycle hooks",[5357,29267],{"id":41681,"title":29923,"description":41682,"kind":9,"type":39440,"section":5357,"path":28001,"anchor":29922,"group":29267,"order":1908,"pageTitle":28127,"context":41683,"tokens":41684,"tags":41685,"activation":-1,"related":29905,"status":-1,"integration":-1},"/docs/custom-modules/lifecycle-hooks::heading::registration-hooks","Section in Lifecycle Hooks","Lifecycle Hooks / Custom Modules",[29923,28127,29896,5357,29267,29898,29899,29900,29901],[39444,5357,29267],{"id":41687,"title":30006,"description":41682,"kind":9,"type":39440,"section":5357,"path":28001,"anchor":30005,"group":29267,"order":1908,"pageTitle":28127,"context":41683,"tokens":41688,"tags":41689,"activation":-1,"related":29905,"status":-1,"integration":-1},"/docs/custom-modules/lifecycle-hooks::heading::object-hooks",[30006,28127,29896,5357,29267,29898,29899,29900,29901],[39444,5357,29267],{"id":41691,"title":30111,"description":41682,"kind":9,"type":39440,"section":5357,"path":28001,"anchor":30110,"group":29267,"order":1908,"pageTitle":28127,"context":41683,"tokens":41692,"tags":41693,"activation":-1,"related":29905,"status":-1,"integration":-1},"/docs/custom-modules/lifecycle-hooks::heading::frame-and-interaction-hooks",[30111,28127,29896,5357,29267,29898,29899,29900,29901],[39444,5357,29267],{"id":41695,"title":30261,"description":41682,"kind":9,"type":39440,"section":5357,"path":28001,"anchor":30260,"group":29267,"order":1908,"pageTitle":28127,"context":41683,"tokens":41696,"tags":41697,"activation":-1,"related":29905,"status":-1,"integration":-1},"/docs/custom-modules/lifecycle-hooks::heading::resize-and-system-hooks",[30261,28127,29896,5357,29267,29898,29899,29900,29901],[39444,5357,29267],{"id":41699,"title":30424,"description":41682,"kind":9,"type":39440,"section":5357,"path":28001,"anchor":30423,"group":29267,"order":1908,"pageTitle":28127,"context":41683,"tokens":41700,"tags":41701,"activation":-1,"related":29905,"status":-1,"integration":-1},"/docs/custom-modules/lifecycle-hooks::heading::important-current-runtime-caveats",[30424,28127,29896,5357,29267,29898,29899,29900,29901],[39444,5357,29267],{"id":41703,"title":30447,"description":41682,"kind":9,"type":39440,"section":5357,"path":28001,"anchor":30446,"group":29267,"order":1908,"pageTitle":28127,"context":41683,"tokens":41704,"tags":41705,"activation":-1,"related":29905,"status":-1,"integration":-1},"/docs/custom-modules/lifecycle-hooks::heading::which-hook-should-own-which-work",[30447,28127,29896,5357,29267,29898,29899,29900,29901],[39444,5357,29267],{"id":28133,"title":28134,"description":30506,"kind":9,"type":39433,"section":5357,"path":28133,"group":29267,"order":4298,"pageTitle":28134,"context":41638,"tokens":41707,"tags":41709,"activation":-1,"related":30512,"status":-1,"integration":-1},[28134,30506,5357,29267,28055,2457,30508,39435,41560,41708],"objects and attributes",[5357,29267],{"id":41711,"title":30530,"description":41712,"kind":9,"type":39440,"section":5357,"path":28133,"anchor":30529,"group":29267,"order":4298,"pageTitle":28134,"context":41713,"tokens":41714,"tags":41715,"activation":-1,"related":30512,"status":-1,"integration":-1},"/docs/custom-modules/objects-and-attributes::heading::what-a-stringobject-gives-you","Section in Objects and Attributes","Objects and Attributes / Custom Modules",[30530,28134,30506,5357,29267,28055,2457,30508],[39444,5357,29267],{"id":41717,"title":30583,"description":41712,"kind":9,"type":39440,"section":5357,"path":28133,"anchor":30582,"group":29267,"order":4298,"pageTitle":28134,"context":41713,"tokens":41718,"tags":41719,"activation":-1,"related":30512,"status":-1,"integration":-1},"/docs/custom-modules/objects-and-attributes::heading::useful-runtime-fields-already-on-the-object",[30583,28134,30506,5357,29267,28055,2457,30508],[39444,5357,29267],{"id":41721,"title":31224,"description":41712,"kind":9,"type":39440,"section":5357,"path":28133,"anchor":30634,"group":29267,"order":4298,"pageTitle":28134,"context":41713,"tokens":41722,"tags":41723,"activation":-1,"related":30512,"status":-1,"integration":-1},"/docs/custom-modules/objects-and-attributes::heading::how-string-becomes-objectkeys",[31224,28134,30506,5357,29267,28055,2457,30508],[39444,5357,29267],{"id":41725,"title":30720,"description":41712,"kind":9,"type":39440,"section":5357,"path":28133,"anchor":30719,"group":29267,"order":4298,"pageTitle":28134,"context":41713,"tokens":41726,"tags":41727,"activation":-1,"related":30512,"status":-1,"integration":-1},"/docs/custom-modules/objects-and-attributes::heading::how-attribute-mapping-resolves-values",[30720,28134,30506,5357,29267,28055,2457,30508],[39444,5357,29267],{"id":41729,"title":30845,"description":41712,"kind":9,"type":39440,"section":5357,"path":28133,"anchor":30844,"group":29267,"order":4298,"pageTitle":28134,"context":41713,"tokens":41730,"tags":41731,"activation":-1,"related":30512,"status":-1,"integration":-1},"/docs/custom-modules/objects-and-attributes::heading::fallback-functions",[30845,28134,30506,5357,29267,28055,2457,30508],[39444,5357,29267],{"id":41733,"title":30929,"description":41712,"kind":9,"type":39440,"section":5357,"path":28133,"anchor":30928,"group":29267,"order":4298,"pageTitle":28134,"context":41713,"tokens":41734,"tags":41735,"activation":-1,"related":30512,"status":-1,"integration":-1},"/docs/custom-modules/objects-and-attributes::heading::object-local-events",[30929,28134,30506,5357,29267,28055,2457,30508],[39444,5357,29267],{"id":41737,"title":31152,"description":41712,"kind":9,"type":39440,"section":5357,"path":28133,"anchor":31151,"group":29267,"order":4298,"pageTitle":28134,"context":41713,"tokens":41738,"tags":41739,"activation":-1,"related":30512,"status":-1,"integration":-1},"/docs/custom-modules/objects-and-attributes::heading::mirrored-elements",[31152,28134,30506,5357,29267,28055,2457,30508],[39444,5357,29267],{"id":41741,"title":29233,"description":41712,"kind":9,"type":39440,"section":5357,"path":28133,"anchor":29232,"group":29267,"order":4298,"pageTitle":28134,"context":41713,"tokens":41742,"tags":41743,"activation":-1,"related":30512,"status":-1,"integration":-1},"/docs/custom-modules/objects-and-attributes::heading::practical-rule",[29233,28134,30506,5357,29267,28055,2457,30508],[39444,5357,29267],{"id":9008,"title":28143,"description":31231,"kind":9,"type":39433,"section":5357,"path":9008,"group":29267,"order":4605,"pageTitle":28143,"context":41638,"tokens":41745,"tags":41747,"activation":-1,"related":31236,"status":-1,"integration":-1},[28143,31231,5357,29267,28060,2389,4655,3814,39435,41560,41746],"context tools events",[5357,29267],{"id":41749,"title":31326,"description":41750,"kind":9,"type":39440,"section":5357,"path":9008,"anchor":31325,"group":29267,"order":4605,"pageTitle":28143,"context":41751,"tokens":41752,"tags":41753,"activation":-1,"related":31236,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events::heading::what-belongs-here","Section in Context, Tools, and Events","Context, Tools, and Events / Custom Modules",[31326,28143,31231,5357,29267,28060,2389,4655,3814],[39444,5357,29267],{"id":41755,"title":31351,"description":41750,"kind":9,"type":39440,"section":5357,"path":9008,"anchor":29232,"group":29267,"order":4605,"pageTitle":28143,"context":41751,"tokens":41756,"tags":41757,"activation":-1,"related":31236,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events::heading::practical-rule",[31351,28143,31231,5357,29267,28060,2389,4655,3814],[39444,5357,29267],{"id":31237,"title":31390,"description":31391,"kind":9,"type":39433,"section":5357,"path":31237,"group":29267,"order":31392,"pageTitle":31390,"context":41638,"tokens":41759,"tags":41760,"activation":-1,"related":31397,"status":-1,"integration":-1},[31390,31391,5357,29267,28060,31289,31294,31299,39435,41560,41746,28300],[5357,29267],{"id":41762,"title":31656,"description":41763,"kind":9,"type":39440,"section":5357,"path":31237,"anchor":31419,"group":29267,"order":31392,"pageTitle":31390,"context":41764,"tokens":41765,"tags":41766,"activation":-1,"related":31397,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/context::heading::what-stringcontext-contains","Section in Context","Context / Custom Modules",[31656,31390,31391,5357,29267,28060,31289,31294,31299],[39444,5357,29267],{"id":41768,"title":31463,"description":41763,"kind":9,"type":39440,"section":5357,"path":31237,"anchor":31462,"group":29267,"order":31392,"pageTitle":31390,"context":41764,"tokens":41769,"tags":41770,"activation":-1,"related":31397,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/context::heading::how-you-usually-access-it",[31463,31390,31391,5357,29267,28060,31289,31294,31299],[39444,5357,29267],{"id":41772,"title":31299,"description":41763,"kind":9,"type":39440,"section":5357,"path":31237,"anchor":31502,"group":29267,"order":31392,"pageTitle":31390,"context":41764,"tokens":41773,"tags":41774,"activation":-1,"related":31397,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/context::heading::thissettings",[31299,31390,31391,5357,29267,28060,31289,31294,31299],[39444,5357,29267],{"id":41776,"title":31319,"description":41763,"kind":9,"type":39440,"section":5357,"path":31237,"anchor":31549,"group":29267,"order":31392,"pageTitle":31390,"context":41764,"tokens":41777,"tags":41778,"activation":-1,"related":31397,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/context::heading::thisobjectmanager",[31319,31390,31391,5357,29267,28060,31289,31294,31299],[39444,5357,29267],{"id":41780,"title":31661,"description":41763,"kind":9,"type":39440,"section":5357,"path":31237,"anchor":31583,"group":29267,"order":31392,"pageTitle":31390,"context":41764,"tokens":41781,"tags":41782,"activation":-1,"related":31397,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/context::heading::thiscenters-and-thishover",[31661,31390,31391,5357,29267,28060,31289,31294,31299],[39444,5357,29267],{"id":41784,"title":31618,"description":41763,"kind":9,"type":39440,"section":5357,"path":31237,"anchor":31617,"group":29267,"order":31392,"pageTitle":31390,"context":41764,"tokens":41785,"tags":41786,"activation":-1,"related":31397,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/context::heading::mental-model",[31618,31390,31391,5357,29267,28060,31289,31294,31299],[39444,5357,29267],{"id":31238,"title":31664,"description":31665,"kind":9,"type":39433,"section":5357,"path":31238,"group":29267,"order":31666,"pageTitle":31664,"context":41638,"tokens":41788,"tags":41789,"activation":-1,"related":31673,"status":-1,"integration":-1},[31664,31665,5357,29267,31668,4655,2389,31669,39435,41560,41746,31432],[5357,29267],{"id":41791,"title":31686,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":31685,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41794,"tags":41795,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::attribute-and-record-tools","Section in Tools","Tools / Custom Modules",[31686,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41797,"title":31692,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":31689,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41798,"tags":41799,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::domattribute",[31692,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41801,"title":31719,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":31716,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41802,"tags":41803,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::recordattribute",[31719,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41805,"title":31736,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":31735,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41806,"tags":41807,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::layout-and-measurement-tools",[31736,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41809,"title":31742,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":31739,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41810,"tags":41811,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::boundingclientrect",[31742,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41813,"title":31756,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":31753,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41814,"tags":41815,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::transformnullify",[31756,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41817,"title":31776,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":31773,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41818,"tags":41819,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::relativeposition",[31776,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41821,"title":31795,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":31792,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41822,"tags":41823,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::transformscaleparser",[31795,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41825,"title":31833,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":31832,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41826,"tags":41827,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::value-parsing-tools",[31833,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41829,"title":31669,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":31836,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41830,"tags":41831,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::unitparser",[31669,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41833,"title":9109,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":31878,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41834,"tags":41835,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::originparser",[9109,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41837,"title":31894,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":31891,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41838,"tags":41839,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::colorparser",[31894,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41841,"title":31909,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":31906,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41842,"tags":41843,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::easingfunction",[31909,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41845,"title":31922,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":31921,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41846,"tags":41847,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::interpolation-and-motion-tools",[31922,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41849,"title":8030,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":8030,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41850,"tags":41851,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::lerp",[8030,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41853,"title":31979,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":31976,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41854,"tags":41855,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::adaptivelerp",[31979,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41857,"title":31991,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":31988,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41858,"tags":41859,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::magneticpull",[31991,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41861,"title":32003,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":32000,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41862,"tags":41863,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::lerpvector",[32003,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41865,"title":32015,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":32012,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41866,"tags":41867,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::lerpcolor",[32015,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41869,"title":32022,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":32021,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41870,"tags":41871,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::text-and-form-tools",[32022,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41873,"title":32028,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":32025,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41874,"tags":41875,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::optionsparser",[32028,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41877,"title":32054,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":32051,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41878,"tags":41879,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::ruleparser",[32054,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41881,"title":32066,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":32066,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41882,"tags":41883,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::validation",[32066,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41885,"title":32078,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":32077,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41886,"tags":41887,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::write-batching",[32078,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41889,"title":4655,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":32081,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41890,"tags":41891,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::styletxn",[4655,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41893,"title":32301,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":32210,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41894,"tags":41895,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::related-primitive-framedom",[32301,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":41897,"title":31351,"description":41792,"kind":9,"type":39440,"section":5357,"path":31238,"anchor":29232,"group":29267,"order":31666,"pageTitle":31664,"context":41793,"tokens":41898,"tags":41899,"activation":-1,"related":31673,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/tools::heading::practical-rule",[31351,31664,31665,5357,29267,31668,4655,2389,31669],[39444,5357,29267],{"id":31239,"title":32304,"description":32305,"kind":9,"type":39433,"section":5357,"path":31239,"group":29267,"order":32306,"pageTitle":32304,"context":41638,"tokens":41901,"tags":41902,"activation":-1,"related":32314,"status":-1,"integration":-1},[32304,32305,5357,29267,30148,32308,32309,32310,39435,41560,41746,32320],[5357,29267],{"id":41904,"title":32333,"description":41905,"kind":9,"type":39440,"section":5357,"path":31239,"anchor":32332,"group":29267,"order":32306,"pageTitle":32304,"context":41906,"tokens":41907,"tags":41908,"activation":-1,"related":32314,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/states::heading::top-level-state-containers","Section in States","States / Custom Modules",[32333,32304,32305,5357,29267,30148,32308,32309,32310],[39444,5357,29267],{"id":41910,"title":32345,"description":41905,"kind":9,"type":39440,"section":5357,"path":31239,"anchor":32345,"group":29267,"order":32306,"pageTitle":32304,"context":41906,"tokens":41911,"tags":41912,"activation":-1,"related":32314,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/states::heading::scroll",[32345,32304,32305,5357,29267,30148,32308,32309,32310],[39444,5357,29267],{"id":41914,"title":3310,"description":41905,"kind":9,"type":39440,"section":5357,"path":31239,"anchor":3310,"group":29267,"order":32306,"pageTitle":32304,"context":41906,"tokens":41915,"tags":41916,"activation":-1,"related":32314,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/states::heading::viewport",[3310,32304,32305,5357,29267,30148,32308,32309,32310],[39444,5357,29267],{"id":41918,"title":11672,"description":41905,"kind":9,"type":39440,"section":5357,"path":31239,"anchor":11672,"group":29267,"order":32306,"pageTitle":32304,"context":41906,"tokens":41919,"tags":41920,"activation":-1,"related":32314,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/states::heading::cursor",[11672,32304,32305,5357,29267,30148,32308,32309,32310],[39444,5357,29267],{"id":41922,"title":32363,"description":41905,"kind":9,"type":39440,"section":5357,"path":31239,"anchor":32363,"group":29267,"order":32306,"pageTitle":32304,"context":41906,"tokens":41923,"tags":41924,"activation":-1,"related":32314,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/states::heading::time",[32363,32304,32305,5357,29267,30148,32308,32309,32310],[39444,5357,29267],{"id":41926,"title":32358,"description":41905,"kind":9,"type":39440,"section":5357,"path":31239,"anchor":32358,"group":29267,"order":32306,"pageTitle":32304,"context":41906,"tokens":41927,"tags":41928,"activation":-1,"related":32314,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/states::heading::render",[32358,32304,32305,5357,29267,30148,32308,32309,32310],[39444,5357,29267],{"id":41930,"title":32368,"description":41905,"kind":9,"type":39440,"section":5357,"path":31239,"anchor":32368,"group":29267,"order":32306,"pageTitle":32304,"context":41906,"tokens":41931,"tags":41932,"activation":-1,"related":32314,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/states::heading::system",[32368,32304,32305,5357,29267,30148,32308,32309,32310],[39444,5357,29267],{"id":41934,"title":32497,"description":41905,"kind":9,"type":39440,"section":5357,"path":31239,"anchor":28163,"group":29267,"order":32306,"pageTitle":32304,"context":41906,"tokens":41935,"tags":41936,"activation":-1,"related":32314,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/states::heading::authoring-rule",[32497,32304,32305,5357,29267,30148,32308,32309,32310],[39444,5357,29267],{"id":31240,"title":5593,"description":32541,"kind":9,"type":39433,"section":5357,"path":31240,"group":29267,"order":32542,"pageTitle":5593,"context":41638,"tokens":41938,"tags":41939,"activation":-1,"related":32549,"status":-1,"integration":-1},[5593,32541,5357,29267,32544,31304,32545,39435,41560,41746,3814],[5357,29267],{"id":41941,"title":32562,"description":41942,"kind":9,"type":39440,"section":5357,"path":31240,"anchor":32561,"group":29267,"order":32542,"pageTitle":5593,"context":41943,"tokens":41944,"tags":41945,"activation":-1,"related":32549,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/events::heading::typical-uses","Section in Events","Events / Custom Modules",[32562,5593,32541,5357,29267,32544,31304,32545],[39444,5357,29267],{"id":41947,"title":32580,"description":41942,"kind":9,"type":39440,"section":5357,"path":31240,"anchor":32579,"group":29267,"order":32542,"pageTitle":5593,"context":41943,"tokens":41948,"tags":41949,"activation":-1,"related":32549,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/events::heading::subscribe-safely",[32580,5593,32541,5357,29267,32544,31304,32545],[39444,5357,29267],{"id":41951,"title":32670,"description":41942,"kind":9,"type":39440,"section":5357,"path":31240,"anchor":32669,"group":29267,"order":32542,"pageTitle":5593,"context":41943,"tokens":41952,"tags":41953,"activation":-1,"related":32549,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/events::heading::emit-object-scoped-events",[32670,5593,32541,5357,29267,32544,31304,32545],[39444,5357,29267],{"id":41955,"title":32714,"description":41942,"kind":9,"type":39440,"section":5357,"path":31240,"anchor":32713,"group":29267,"order":32542,"pageTitle":5593,"context":41943,"tokens":41956,"tags":41957,"activation":-1,"related":32549,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/events::heading::what-to-emit",[32714,5593,32541,5357,29267,32544,31304,32545],[39444,5357,29267],{"id":41959,"title":32751,"description":41942,"kind":9,"type":39440,"section":5357,"path":31240,"anchor":32750,"group":29267,"order":32542,"pageTitle":5593,"context":41943,"tokens":41960,"tags":41961,"activation":-1,"related":32549,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/events::heading::what-not-to-do",[32751,5593,32541,5357,29267,32544,31304,32545],[39444,5357,29267],{"id":41963,"title":32766,"description":41942,"kind":9,"type":39440,"section":5357,"path":31240,"anchor":32765,"group":29267,"order":32542,"pageTitle":5593,"context":41943,"tokens":41964,"tags":41965,"activation":-1,"related":32549,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/events::heading::naming-guidance",[32766,5593,32541,5357,29267,32544,31304,32545],[39444,5357,29267],{"id":41967,"title":32790,"description":41942,"kind":9,"type":39440,"section":5357,"path":31240,"anchor":32789,"group":29267,"order":32542,"pageTitle":5593,"context":41943,"tokens":41968,"tags":41969,"activation":-1,"related":32549,"status":-1,"integration":-1},"/docs/custom-modules/context-tools-events/events::heading::cross-module-communication",[32790,5593,32541,5357,29267,32544,31304,32545],[39444,5357,29267],{"id":28149,"title":28150,"description":32821,"kind":9,"type":39433,"section":5357,"path":28149,"group":32822,"order":11302,"pageTitle":28150,"context":41971,"tokens":41972,"tags":41974,"activation":-1,"related":32828,"status":-1,"integration":-1},"Custom Modules / Production Patterns",[28150,32821,5357,32822,4655,29407,32824,28077,39435,41560,41973],"performance patterns",[5357,32822],{"id":41976,"title":32854,"description":41977,"kind":9,"type":39440,"section":5357,"path":28149,"anchor":32853,"group":32822,"order":11302,"pageTitle":28150,"context":41978,"tokens":41979,"tags":41980,"activation":-1,"related":32828,"status":-1,"integration":-1},"/docs/custom-modules/performance-patterns::heading::read-and-write-separation","Section in Performance Patterns","Performance Patterns / Custom Modules",[32854,28150,32821,5357,32822,4655,29407,32824,28077],[39444,5357,32822],{"id":41982,"title":33328,"description":41977,"kind":9,"type":39440,"section":5357,"path":28149,"anchor":32898,"group":32822,"order":11302,"pageTitle":28150,"context":41978,"tokens":41983,"tags":41984,"activation":-1,"related":32828,"status":-1,"integration":-1},"/docs/custom-modules/performance-patterns::heading::prefer-onmutate-for-output",[33328,28150,32821,5357,32822,4655,29407,32824,28077],[39444,5357,32822],{"id":41986,"title":33044,"description":41977,"kind":9,"type":39440,"section":5357,"path":28149,"anchor":33043,"group":32822,"order":11302,"pageTitle":28150,"context":41978,"tokens":41987,"tags":41988,"activation":-1,"related":32828,"status":-1,"integration":-1},"/docs/custom-modules/performance-patterns::heading::prefer-cached-object-state-over-repeated-parsing",[33044,28150,32821,5357,32822,4655,29407,32824,28077],[39444,5357,32822],{"id":41990,"title":33331,"description":41977,"kind":9,"type":39440,"section":5357,"path":28149,"anchor":33079,"group":32822,"order":11302,"pageTitle":28150,"context":41978,"tokens":41991,"tags":41992,"activation":-1,"related":32828,"status":-1,"integration":-1},"/docs/custom-modules/performance-patterns::heading::use-cssproperties-only-when-it-helps",[33331,28150,32821,5357,32822,4655,29407,32824,28077],[39444,5357,32822],{"id":41994,"title":33150,"description":41977,"kind":9,"type":39440,"section":5357,"path":28149,"anchor":33149,"group":32822,"order":11302,"pageTitle":28150,"context":41978,"tokens":41995,"tags":41996,"activation":-1,"related":32828,"status":-1,"integration":-1},"/docs/custom-modules/performance-patterns::heading::rebuild-permissions",[33150,28150,32821,5357,32822,4655,29407,32824,28077],[39444,5357,32822],{"id":41998,"title":33216,"description":41977,"kind":9,"type":39440,"section":5357,"path":28149,"anchor":33215,"group":32822,"order":11302,"pageTitle":28150,"context":41978,"tokens":41999,"tags":42000,"activation":-1,"related":32828,"status":-1,"integration":-1},"/docs/custom-modules/performance-patterns::heading::object-local-cleanup",[33216,28150,32821,5357,32822,4655,29407,32824,28077],[39444,5357,32822],{"id":42002,"title":28077,"description":41977,"kind":9,"type":39440,"section":5357,"path":28149,"anchor":33261,"group":32822,"order":11302,"pageTitle":28150,"context":41978,"tokens":42003,"tags":42004,"activation":-1,"related":32828,"status":-1,"integration":-1},"/docs/custom-modules/performance-patterns::heading::dombatcher",[28077,28150,32821,5357,32822,4655,29407,32824,28077],[39444,5357,32822],{"id":42006,"title":33295,"description":41977,"kind":9,"type":39440,"section":5357,"path":28149,"anchor":33294,"group":32822,"order":11302,"pageTitle":28150,"context":41978,"tokens":42007,"tags":42008,"activation":-1,"related":32828,"status":-1,"integration":-1},"/docs/custom-modules/performance-patterns::heading::practical-rules",[33295,28150,32821,5357,32822,4655,29407,32824,28077],[39444,5357,32822],{"id":28156,"title":28157,"description":33337,"kind":9,"type":39433,"section":5357,"path":28156,"group":32822,"order":33338,"pageTitle":28157,"context":41971,"tokens":42010,"tags":42012,"activation":-1,"related":33345,"status":-1,"integration":-1},[28157,33337,5357,32822,33340,33341,39435,41560,42011],"worked example",[5357,32822],{"id":42014,"title":33368,"description":42015,"kind":9,"type":39440,"section":5357,"path":28156,"anchor":33367,"group":32822,"order":33338,"pageTitle":28157,"context":42016,"tokens":42017,"tags":42018,"activation":-1,"related":33345,"status":-1,"integration":-1},"/docs/custom-modules/worked-example::heading::module-code","Section in Worked Example","Worked Example / Custom Modules",[33368,28157,33337,5357,32822,33340,33341],[39444,5357,32822],{"id":42020,"title":6074,"description":42015,"kind":9,"type":39440,"section":5357,"path":28156,"anchor":6073,"group":32822,"order":33338,"pageTitle":28157,"context":42016,"tokens":42021,"tags":42022,"activation":-1,"related":33345,"status":-1,"integration":-1},"/docs/custom-modules/worked-example::heading::registration",[6074,28157,33337,5357,32822,33340,33341],[39444,5357,32822],{"id":42024,"title":34173,"description":42015,"kind":9,"type":39440,"section":5357,"path":28156,"anchor":34172,"group":32822,"order":33338,"pageTitle":28157,"context":42016,"tokens":42025,"tags":42026,"activation":-1,"related":33345,"status":-1,"integration":-1},"/docs/custom-modules/worked-example::heading::markup",[34173,28157,33337,5357,32822,33340,33341],[39444,5357,32822],{"id":42028,"title":34257,"description":42015,"kind":9,"type":39440,"section":5357,"path":28156,"anchor":34256,"group":32822,"order":33338,"pageTitle":28157,"context":42016,"tokens":42029,"tags":42030,"activation":-1,"related":33345,"status":-1,"integration":-1},"/docs/custom-modules/worked-example::heading::what-this-module-is-intentionally-depending-on",[34257,28157,33337,5357,32822,33340,33341],[39444,5357,32822],{"id":42032,"title":34288,"description":42015,"kind":9,"type":39440,"section":5357,"path":28156,"anchor":34287,"group":32822,"order":33338,"pageTitle":28157,"context":42016,"tokens":42033,"tags":42034,"activation":-1,"related":33345,"status":-1,"integration":-1},"/docs/custom-modules/worked-example::heading::why-this-example-is-structured-this-way",[34288,28157,33337,5357,32822,33340,33341],[39444,5357,32822],{"id":42036,"title":34327,"description":42015,"kind":9,"type":39440,"section":5357,"path":28156,"anchor":34326,"group":32822,"order":33338,"pageTitle":28157,"context":42016,"tokens":42037,"tags":42038,"activation":-1,"related":33345,"status":-1,"integration":-1},"/docs/custom-modules/worked-example::heading::when-to-use-this-pattern",[34327,28157,33337,5357,32822,33340,33341],[39444,5357,32822],{"id":166,"title":167,"description":34359,"kind":34360,"type":39433,"section":34361,"path":166,"group":34362,"order":11,"pageTitle":167,"context":42040,"tokens":42041,"tags":42043,"activation":-1,"related":34367,"status":-1,"integration":-1},"API Reference / Core API",[167,34359,34361,34362,39435,42042,14],"api",[34361,34362],{"id":42045,"title":34362,"description":42046,"kind":34360,"type":39440,"section":34361,"path":166,"anchor":34378,"group":34362,"order":11,"pageTitle":167,"context":42047,"tokens":42048,"tags":42049,"activation":-1,"related":34367,"status":-1,"integration":-1},"/docs/api/overview::heading::core-api","Section in API Overview","API Overview / API Reference",[34362,167,34359,34361,34362],[39444,34361,34362],{"id":42051,"title":34408,"description":42046,"kind":34360,"type":39440,"section":34361,"path":166,"anchor":34407,"group":34362,"order":11,"pageTitle":167,"context":42047,"tokens":42052,"tags":42053,"activation":-1,"related":34367,"status":-1,"integration":-1},"/docs/api/overview::heading::utilities",[34408,167,34359,34361,34362],[39444,34361,34362],{"id":42055,"title":34467,"description":42046,"kind":34360,"type":39440,"section":34361,"path":166,"anchor":34466,"group":34362,"order":11,"pageTitle":167,"context":42047,"tokens":42056,"tags":42057,"activation":-1,"related":34367,"status":-1,"integration":-1},"/docs/api/overview::heading::state-models",[34467,167,34359,34361,34362],[39444,34361,34362],{"id":42059,"title":34515,"description":42046,"kind":34360,"type":39440,"section":34361,"path":166,"anchor":34514,"group":34362,"order":11,"pageTitle":167,"context":42047,"tokens":42060,"tags":42061,"activation":-1,"related":34367,"status":-1,"integration":-1},"/docs/api/overview::heading::boundary-rule",[34515,167,34359,34361,34362],[39444,34361,34362],{"id":3980,"title":34385,"description":34544,"kind":34360,"type":39433,"section":34361,"path":3980,"group":34362,"order":427,"pageTitle":34385,"context":42040,"tokens":42063,"tags":42065,"activation":-1,"related":34549,"status":-1,"integration":-1},[34385,34544,34361,34362,28,282,299,326,2454,39435,42042,42064],"string tune",[34361,34362],{"id":42067,"title":34558,"description":42068,"kind":34360,"type":39440,"section":34361,"path":3980,"anchor":34557,"group":34362,"order":427,"pageTitle":34385,"context":42069,"tokens":42070,"tags":42071,"activation":-1,"related":34549,"status":-1,"integration":-1},"/docs/api/string-tune::heading::instance-access","Section in StringTune API","StringTune API / API Reference",[34558,34385,34544,34361,34362,28,282,299,326,2454],[39444,34361,34362],{"id":42073,"title":34584,"description":42068,"kind":34360,"type":39440,"section":34361,"path":3980,"anchor":34583,"group":34362,"order":427,"pageTitle":34385,"context":42069,"tokens":42074,"tags":42075,"activation":-1,"related":34549,"status":-1,"integration":-1},"/docs/api/string-tune::heading::core-methods",[34584,34385,34544,34361,34362,28,282,299,326,2454],[39444,34361,34362],{"id":42077,"title":34590,"description":42068,"kind":34360,"type":39440,"section":34361,"path":3980,"anchor":34587,"group":34362,"order":427,"pageTitle":34385,"context":42069,"tokens":42078,"tags":42079,"activation":-1,"related":34549,"status":-1,"integration":-1},"/docs/api/string-tune::heading::usemodule-options",[34590,34385,34544,34361,34362,28,282,299,326,2454],[39444,34361,34362],{"id":42081,"title":34599,"description":42068,"kind":34360,"type":39440,"section":34361,"path":3980,"anchor":34596,"group":34362,"order":427,"pageTitle":34385,"context":42069,"tokens":42082,"tags":42083,"activation":-1,"related":34549,"status":-1,"integration":-1},"/docs/api/string-tune::heading::setupsettingssettings",[34599,34385,34544,34361,34362,28,282,299,326,2454],[39444,34361,34362],{"id":42085,"title":34608,"description":42068,"kind":34360,"type":39440,"section":34361,"path":3980,"anchor":34605,"group":34362,"order":427,"pageTitle":34385,"context":42069,"tokens":42086,"tags":42087,"activation":-1,"related":34549,"status":-1,"integration":-1},"/docs/api/string-tune::heading::startfps",[34608,34385,34544,34361,34362,28,282,299,326,2454],[39444,34361,34362],{"id":42089,"title":34970,"description":42068,"kind":34360,"type":39440,"section":34361,"path":3980,"anchor":34614,"group":34362,"order":427,"pageTitle":34385,"context":42069,"tokens":42090,"tags":42091,"activation":-1,"related":34549,"status":-1,"integration":-1},"/docs/api/string-tune::heading::onname-callback-offname-callback",[34970,34385,34544,34361,34362,28,282,299,326,2454],[39444,34361,34362],{"id":42093,"title":2553,"description":42068,"kind":34360,"type":39440,"section":34361,"path":3980,"anchor":2550,"group":34362,"order":427,"pageTitle":34385,"context":42069,"tokens":42094,"tags":42095,"activation":-1,"related":34549,"status":-1,"integration":-1},"/docs/api/string-tune::heading::scrollto",[2553,34385,34544,34361,34362,28,282,299,326,2454],[39444,34361,34362],{"id":42097,"title":2726,"description":42068,"kind":34360,"type":39440,"section":34361,"path":3980,"anchor":2723,"group":34362,"order":427,"pageTitle":34385,"context":42069,"tokens":42098,"tags":42099,"activation":-1,"related":34549,"status":-1,"integration":-1},"/docs/api/string-tune::heading::invalidatecenterid",[2726,34385,34544,34361,34362,28,282,299,326,2454],[39444,34361,34362],{"id":42101,"title":2769,"description":42068,"kind":34360,"type":39440,"section":34361,"path":3980,"anchor":2766,"group":34362,"order":427,"pageTitle":34385,"context":42069,"tokens":42102,"tags":42103,"activation":-1,"related":34549,"status":-1,"integration":-1},"/docs/api/string-tune::heading::onresizeforce",[2769,34385,34544,34361,34362,28,282,299,326,2454],[39444,34361,34362],{"id":42105,"title":34900,"description":42068,"kind":34360,"type":39440,"section":34361,"path":3980,"anchor":34897,"group":34362,"order":427,"pageTitle":34385,"context":42069,"tokens":42106,"tags":42107,"activation":-1,"related":34549,"status":-1,"integration":-1},"/docs/api/string-tune::heading::registerscrollmodename-controller",[34900,34385,34544,34361,34362,28,282,299,326,2454],[39444,34361,34362],{"id":42109,"title":34907,"description":42068,"kind":34360,"type":39440,"section":34361,"path":3980,"anchor":34906,"group":34362,"order":427,"pageTitle":34385,"context":42069,"tokens":42110,"tags":42111,"activation":-1,"related":34549,"status":-1,"integration":-1},"/docs/api/string-tune::heading::public-properties",[34907,34385,34544,34361,34362,28,282,299,326,2454],[39444,34361,34362],{"id":42113,"title":34947,"description":42068,"kind":34360,"type":39440,"section":34361,"path":3980,"anchor":34946,"group":34362,"order":427,"pageTitle":34385,"context":42069,"tokens":42114,"tags":42115,"activation":-1,"related":34549,"status":-1,"integration":-1},"/docs/api/string-tune::heading::not-part-of-the-public-contract",[34947,34385,34544,34361,34362,28,282,299,326,2454],[39444,34361,34362],{"id":2899,"title":34390,"description":34978,"kind":34360,"type":39433,"section":34361,"path":2899,"group":34362,"order":609,"pageTitle":34390,"context":42040,"tokens":42117,"tags":42118,"activation":-1,"related":34984,"status":-1,"integration":-1},[34390,34978,34361,34362,3814,22342,34980,39435,42042,3814],[34361,34362],{"id":42120,"title":35021,"description":42121,"kind":34360,"type":39440,"section":34361,"path":2899,"anchor":35020,"group":34362,"order":609,"pageTitle":34390,"context":42122,"tokens":42123,"tags":42124,"activation":-1,"related":34984,"status":-1,"integration":-1},"/docs/api/events::heading::important-boundary","Section in Event Channels","Event Channels / API Reference",[35021,34390,34978,34361,34362,3814,22342,34980],[39444,34361,34362],{"id":42126,"title":35047,"description":42121,"kind":34360,"type":39440,"section":34361,"path":2899,"anchor":35046,"group":34362,"order":609,"pageTitle":34390,"context":42122,"tokens":42127,"tags":42128,"activation":-1,"related":34984,"status":-1,"integration":-1},"/docs/api/events::heading::global-runtime-channels",[35047,34390,34978,34361,34362,3814,22342,34980],[39444,34361,34362],{"id":42130,"title":35163,"description":42121,"kind":34360,"type":39440,"section":34361,"path":2899,"anchor":35162,"group":34362,"order":609,"pageTitle":34390,"context":42122,"tokens":42131,"tags":42132,"activation":-1,"related":34984,"status":-1,"integration":-1},"/docs/api/events::heading::global-module-channels",[35163,34390,34978,34361,34362,3814,22342,34980],[39444,34361,34362],{"id":42134,"title":35330,"description":42121,"kind":34360,"type":39440,"section":34361,"path":2899,"anchor":35329,"group":34362,"order":609,"pageTitle":34390,"context":42122,"tokens":42135,"tags":42136,"activation":-1,"related":34984,"status":-1,"integration":-1},"/docs/api/events::heading::object-lifecycle-channels",[35330,34390,34978,34361,34362,3814,22342,34980],[39444,34361,34362],{"id":42138,"title":35409,"description":42121,"kind":34360,"type":39440,"section":34361,"path":2899,"anchor":35408,"group":34362,"order":609,"pageTitle":34390,"context":42122,"tokens":42139,"tags":42140,"activation":-1,"related":34984,"status":-1,"integration":-1},"/docs/api/events::heading::progress-and-motion-channels",[35409,34390,34978,34361,34362,3814,22342,34980],[39444,34361,34362],{"id":42142,"title":35528,"description":42121,"kind":34360,"type":39440,"section":34361,"path":2899,"anchor":35527,"group":34362,"order":609,"pageTitle":34390,"context":42122,"tokens":42143,"tags":42144,"activation":-1,"related":34984,"status":-1,"integration":-1},"/docs/api/events::heading::cursor-and-interaction-channels",[35528,34390,34978,34361,34362,3814,22342,34980],[39444,34361,34362],{"id":42146,"title":35678,"description":42121,"kind":34360,"type":39440,"section":34361,"path":2899,"anchor":35677,"group":34362,"order":609,"pageTitle":34390,"context":42122,"tokens":42147,"tags":42148,"activation":-1,"related":34984,"status":-1,"integration":-1},"/docs/api/events::heading::form-channels",[35678,34390,34978,34361,34362,3814,22342,34980],[39444,34361,34362],{"id":42150,"title":35764,"description":42121,"kind":34360,"type":39440,"section":34361,"path":2899,"anchor":35763,"group":34362,"order":609,"pageTitle":34390,"context":42122,"tokens":42151,"tags":42152,"activation":-1,"related":34984,"status":-1,"integration":-1},"/docs/api/events::heading::local-object-events",[35764,34390,34978,34361,34362,3814,22342,34980],[39444,34361,34362],{"id":42154,"title":35795,"description":42121,"kind":34360,"type":39440,"section":34361,"path":2899,"anchor":35794,"group":34362,"order":609,"pageTitle":34390,"context":42122,"tokens":42155,"tags":42156,"activation":-1,"related":34984,"status":-1,"integration":-1},"/docs/api/events::heading::where-to-go-next",[35795,34390,34978,34361,34362,3814,22342,34980],[39444,34361,34362],{"id":2463,"title":34395,"description":35832,"kind":34360,"type":39433,"section":34361,"path":2463,"group":34362,"order":819,"pageTitle":34395,"context":42040,"tokens":42158,"tags":42159,"activation":-1,"related":35837,"status":-1,"integration":-1},[34395,35832,34361,34362,2453,3263,11673,24796,39435,42042,2452],[34361,34362],{"id":42161,"title":35851,"description":42162,"kind":34360,"type":39440,"section":34361,"path":2463,"anchor":35850,"group":34362,"order":819,"pageTitle":34395,"context":42163,"tokens":42164,"tags":42165,"activation":-1,"related":35837,"status":-1,"integration":-1},"/docs/api/settings::heading::notable-defaults","Section in Settings Reference","Settings Reference / API Reference",[35851,34395,35832,34361,34362,2453,3263,11673,24796],[39444,34361,34362],{"id":42167,"title":35882,"description":42162,"kind":34360,"type":39440,"section":34361,"path":2463,"anchor":35881,"group":34362,"order":819,"pageTitle":34395,"context":42163,"tokens":42168,"tags":42169,"activation":-1,"related":35837,"status":-1,"integration":-1},"/docs/api/settings::heading::important-notes",[35882,34395,35832,34361,34362,2453,3263,11673,24796],[39444,34361,34362],{"id":2464,"title":34400,"description":35904,"kind":34360,"type":39433,"section":34361,"path":2464,"group":34362,"order":1908,"pageTitle":34400,"context":42040,"tokens":42171,"tags":42172,"activation":-1,"related":35909,"status":-1,"integration":-1},[34400,35904,34361,34362,764,2457,2458,39435,42042,4904],[34361,34362],{"id":42174,"title":35930,"description":42175,"kind":34360,"type":39440,"section":34361,"path":2464,"anchor":35929,"group":34362,"order":1908,"pageTitle":34400,"context":42176,"tokens":42177,"tags":42178,"activation":-1,"related":35909,"status":-1,"integration":-1},"/docs/api/attributes::heading::reading-model","Section in Common Attributes","Common Attributes / API Reference",[35930,34400,35904,34361,34362,764,2457,2458],[39444,34361,34362],{"id":42180,"title":36041,"description":42175,"kind":34360,"type":39440,"section":34361,"path":2464,"anchor":36040,"group":34362,"order":1908,"pageTitle":34400,"context":42176,"tokens":42181,"tags":42182,"activation":-1,"related":35909,"status":-1,"integration":-1},"/docs/api/attributes::heading::identity-and-routing",[36041,34400,35904,34361,34362,764,2457,2458],[39444,34361,34362],{"id":42184,"title":36149,"description":42175,"kind":34360,"type":39440,"section":34361,"path":2464,"anchor":36148,"group":34362,"order":1908,"pageTitle":34400,"context":42176,"tokens":42185,"tags":42186,"activation":-1,"related":35909,"status":-1,"integration":-1},"/docs/api/attributes::heading::shared-geometry",[36149,34400,35904,34361,34362,764,2457,2458],[39444,34361,34362],{"id":42188,"title":36298,"description":42175,"kind":34360,"type":39440,"section":34361,"path":2464,"anchor":36297,"group":34362,"order":1908,"pageTitle":34400,"context":42176,"tokens":42189,"tags":42190,"activation":-1,"related":35909,"status":-1,"integration":-1},"/docs/api/attributes::heading::shared-behavior-flags",[36298,34400,35904,34361,34362,764,2457,2458],[39444,34361,34362],{"id":42192,"title":36371,"description":42175,"kind":34360,"type":39440,"section":34361,"path":2464,"anchor":36370,"group":34362,"order":1908,"pageTitle":34400,"context":42176,"tokens":42193,"tags":42194,"activation":-1,"related":35909,"status":-1,"integration":-1},"/docs/api/attributes::heading::practical-notes",[36371,34400,35904,34361,34362,764,2457,2458],[39444,34361,34362],{"id":42196,"title":35795,"description":42175,"kind":34360,"type":39440,"section":34361,"path":2464,"anchor":35794,"group":34362,"order":1908,"pageTitle":34400,"context":42176,"tokens":42197,"tags":42198,"activation":-1,"related":35909,"status":-1,"integration":-1},"/docs/api/attributes::heading::where-to-go-next",[35795,34400,35904,34361,34362,764,2457,2458],[39444,34361,34362],{"id":8037,"title":17405,"description":36435,"kind":34360,"type":39433,"section":34361,"path":8037,"group":34362,"order":4298,"pageTitle":17405,"context":42040,"tokens":42200,"tags":42202,"activation":-1,"related":36440,"status":-1,"integration":-1},[17405,36435,34361,34362,39435,42042,42201],"css variables",[34361,34362],{"id":42204,"title":35021,"description":42205,"kind":34360,"type":39440,"section":34361,"path":8037,"anchor":35020,"group":34362,"order":4298,"pageTitle":17405,"context":42206,"tokens":42207,"tags":42208,"activation":-1,"related":36440,"status":-1,"integration":-1},"/docs/api/css-variables::heading::important-boundary","Section in CSS Variables","CSS Variables / API Reference",[35021,17405,36435,34361,34362],[39444,34361,34362],{"id":42210,"title":36501,"description":42205,"kind":34360,"type":39440,"section":34361,"path":8037,"anchor":36500,"group":34362,"order":4298,"pageTitle":17405,"context":42206,"tokens":42211,"tags":42212,"activation":-1,"related":36440,"status":-1,"integration":-1},"/docs/api/css-variables::heading::scroll-progress-and-motion",[36501,17405,36435,34361,34362],[39444,34361,34362],{"id":42214,"title":36595,"description":42205,"kind":34360,"type":39440,"section":34361,"path":8037,"anchor":36594,"group":34362,"order":4298,"pageTitle":17405,"context":42206,"tokens":42215,"tags":42216,"activation":-1,"related":36440,"status":-1,"integration":-1},"/docs/api/css-variables::heading::cursor-target-variables",[36595,17405,36435,34361,34362],[39444,34361,34362],{"id":42218,"title":36772,"description":42205,"kind":34360,"type":39440,"section":34361,"path":8037,"anchor":36771,"group":34362,"order":4298,"pageTitle":17405,"context":42206,"tokens":42219,"tags":42220,"activation":-1,"related":36440,"status":-1,"integration":-1},"/docs/api/css-variables::heading::cursor-portal-variables",[36772,17405,36435,34361,34362],[39444,34361,34362],{"id":42222,"title":36863,"description":42205,"kind":34360,"type":39440,"section":34361,"path":8037,"anchor":36862,"group":34362,"order":4298,"pageTitle":17405,"context":42206,"tokens":42223,"tags":42224,"activation":-1,"related":36440,"status":-1,"integration":-1},"/docs/api/css-variables::heading::interaction-variables",[36863,17405,36435,34361,34362],[39444,34361,34362],{"id":42226,"title":36988,"description":42205,"kind":34360,"type":39440,"section":34361,"path":8037,"anchor":36987,"group":34362,"order":4298,"pageTitle":17405,"context":42206,"tokens":42227,"tags":42228,"activation":-1,"related":36440,"status":-1,"integration":-1},"/docs/api/css-variables::heading::text-split-variables",[36988,17405,36435,34361,34362],[39444,34361,34362],{"id":42230,"title":37105,"description":42205,"kind":34360,"type":39440,"section":34361,"path":8037,"anchor":37104,"group":34362,"order":4298,"pageTitle":17405,"context":42206,"tokens":42231,"tags":42232,"activation":-1,"related":36440,"status":-1,"integration":-1},"/docs/api/css-variables::heading::consumption-patterns",[37105,17405,36435,34361,34362],[39444,34361,34362],{"id":42234,"title":35795,"description":42205,"kind":34360,"type":39440,"section":34361,"path":8037,"anchor":35794,"group":34362,"order":4298,"pageTitle":17405,"context":42206,"tokens":42235,"tags":42236,"activation":-1,"related":36440,"status":-1,"integration":-1},"/docs/api/css-variables::heading::where-to-go-next",[35795,17405,36435,34361,34362],[39444,34361,34362],{"id":34415,"title":34416,"description":37328,"kind":34360,"type":39433,"section":34361,"path":34415,"group":34408,"order":4605,"pageTitle":34416,"context":42238,"tokens":42239,"tags":42240,"activation":-1,"related":37333,"status":-1,"integration":-1},"API Reference / Utilities",[34416,37328,34361,34408,2379,28055,2384,2389,4655,39435,42042,34407],[34361,34408],{"id":42242,"title":37348,"description":42243,"kind":34360,"type":39440,"section":34361,"path":34415,"anchor":37347,"group":34408,"order":4605,"pageTitle":34416,"context":42244,"tokens":42245,"tags":42246,"activation":-1,"related":37333,"status":-1,"integration":-1},"/docs/api/utilities::heading::public-utility-exports","Section in Utilities Overview","Utilities Overview / API Reference",[37348,34416,37328,34361,34408,2379,28055,2384,2389,4655],[39444,34361,34408],{"id":42248,"title":37373,"description":42243,"kind":34360,"type":39440,"section":34361,"path":34415,"anchor":37372,"group":34408,"order":4605,"pageTitle":34416,"context":42244,"tokens":42249,"tags":42250,"activation":-1,"related":37333,"status":-1,"integration":-1},"/docs/api/utilities::heading::internal-runtime-helpers",[37373,34416,37328,34361,34408,2379,28055,2384,2389,4655],[39444,34361,34408],{"id":42252,"title":29233,"description":42243,"kind":34360,"type":39440,"section":34361,"path":34415,"anchor":29232,"group":34408,"order":4605,"pageTitle":34416,"context":42244,"tokens":42253,"tags":42254,"activation":-1,"related":37333,"status":-1,"integration":-1},"/docs/api/utilities::heading::practical-rule",[29233,34416,37328,34361,34408,2379,28055,2384,2389,4655],[39444,34361,34408],{"id":4614,"title":2389,"description":37431,"kind":34360,"type":39433,"section":34361,"path":4614,"group":34408,"order":31392,"pageTitle":2389,"context":42238,"tokens":42256,"tags":42258,"activation":-1,"related":37437,"status":-1,"integration":-1},[2389,37431,34361,34408,4608,4607,37433,39435,42042,42257],"frame dom",[34361,34408],{"id":42260,"title":37461,"description":42261,"kind":34360,"type":39440,"section":34361,"path":4614,"anchor":37460,"group":34408,"order":31392,"pageTitle":2389,"context":42262,"tokens":42263,"tags":42264,"activation":-1,"related":37437,"status":-1,"integration":-1},"/docs/api/frame-dom::heading::public-status","Section in frameDOM","frameDOM / API Reference",[37461,2389,37431,34361,34408,4608,4607,37433],[39444,34361,34408],{"id":42266,"title":18189,"description":42261,"kind":34360,"type":39440,"section":34361,"path":4614,"anchor":37469,"group":34408,"order":31392,"pageTitle":2389,"context":42262,"tokens":42267,"tags":42268,"activation":-1,"related":37437,"status":-1,"integration":-1},"/docs/api/frame-dom::heading::what-it-does",[18189,2389,37431,34361,34408,4608,4607,37433],[39444,34361,34408],{"id":42270,"title":37491,"description":42261,"kind":34360,"type":39440,"section":34361,"path":4614,"anchor":37490,"group":34408,"order":31392,"pageTitle":2389,"context":42262,"tokens":42271,"tags":42272,"activation":-1,"related":37437,"status":-1,"integration":-1},"/docs/api/frame-dom::heading::api-shape",[37491,2389,37431,34361,34408,4608,4607,37433],[39444,34361,34408],{"id":42274,"title":37532,"description":42261,"kind":34360,"type":39440,"section":34361,"path":4614,"anchor":3080,"group":34408,"order":31392,"pageTitle":2389,"context":42262,"tokens":42275,"tags":42276,"activation":-1,"related":37437,"status":-1,"integration":-1},"/docs/api/frame-dom::heading::how-it-works",[37532,2389,37431,34361,34408,4608,4607,37433],[39444,34361,34408],{"id":42278,"title":37569,"description":42261,"kind":34360,"type":39440,"section":34361,"path":4614,"anchor":37568,"group":34408,"order":31392,"pageTitle":2389,"context":42262,"tokens":42279,"tags":42280,"activation":-1,"related":37437,"status":-1,"integration":-1},"/docs/api/frame-dom::heading::when-to-use-it",[37569,2389,37431,34361,34408,4608,4607,37433],[39444,34361,34408],{"id":42282,"title":37586,"description":42261,"kind":34360,"type":39440,"section":34361,"path":4614,"anchor":37585,"group":34408,"order":31392,"pageTitle":2389,"context":42262,"tokens":42283,"tags":42284,"activation":-1,"related":37437,"status":-1,"integration":-1},"/docs/api/frame-dom::heading::when-not-to-use-it",[37586,2389,37431,34361,34408,4608,4607,37433],[39444,34361,34408],{"id":42286,"title":37612,"description":42261,"kind":34360,"type":39440,"section":34361,"path":4614,"anchor":37611,"group":34408,"order":31392,"pageTitle":2389,"context":42262,"tokens":42287,"tags":42288,"activation":-1,"related":37437,"status":-1,"integration":-1},"/docs/api/frame-dom::heading::practical-note",[37612,2389,37431,34361,34408,4608,4607,37433],[39444,34361,34408],{"id":4615,"title":4655,"description":37632,"kind":34360,"type":39433,"section":34361,"path":4615,"group":34408,"order":31666,"pageTitle":4655,"context":42238,"tokens":42290,"tags":42292,"activation":-1,"related":37638,"status":-1,"integration":-1},[4655,37632,34361,34408,37634,32170,32191,39435,42042,42291],"style txn",[34361,34408],{"id":42294,"title":37461,"description":42295,"kind":34360,"type":39440,"section":34361,"path":4615,"anchor":37460,"group":34408,"order":31666,"pageTitle":4655,"context":42296,"tokens":42297,"tags":42298,"activation":-1,"related":37638,"status":-1,"integration":-1},"/docs/api/style-txn::heading::public-status","Section in styleTxn","styleTxn / API Reference",[37461,4655,37632,34361,34408,37634,32170,32191],[39444,34361,34408],{"id":42300,"title":18189,"description":42295,"kind":34360,"type":39440,"section":34361,"path":4615,"anchor":37469,"group":34408,"order":31666,"pageTitle":4655,"context":42296,"tokens":42301,"tags":42302,"activation":-1,"related":37638,"status":-1,"integration":-1},"/docs/api/style-txn::heading::what-it-does",[18189,4655,37632,34361,34408,37634,32170,32191],[39444,34361,34408],{"id":42304,"title":37673,"description":42295,"kind":34360,"type":39440,"section":34361,"path":4615,"anchor":37672,"group":34408,"order":31666,"pageTitle":4655,"context":42296,"tokens":42305,"tags":42306,"activation":-1,"related":37638,"status":-1,"integration":-1},"/docs/api/style-txn::heading::main-methods",[37673,4655,37632,34361,34408,37634,32170,32191],[39444,34361,34408],{"id":42308,"title":37716,"description":42295,"kind":34360,"type":39440,"section":34361,"path":4615,"anchor":37715,"group":34408,"order":31666,"pageTitle":4655,"context":42296,"tokens":42309,"tags":42310,"activation":-1,"related":37638,"status":-1,"integration":-1},"/docs/api/style-txn::heading::typical-usage",[37716,4655,37632,34361,34408,37634,32170,32191],[39444,34361,34408],{"id":42312,"title":37778,"description":42295,"kind":34360,"type":39440,"section":34361,"path":4615,"anchor":37777,"group":34408,"order":31666,"pageTitle":4655,"context":42296,"tokens":42313,"tags":42314,"activation":-1,"related":37638,"status":-1,"integration":-1},"/docs/api/style-txn::heading::important-behavior",[37778,4655,37632,34361,34408,37634,32170,32191],[39444,34361,34408],{"id":42316,"title":37569,"description":42295,"kind":34360,"type":39440,"section":34361,"path":4615,"anchor":37568,"group":34408,"order":31666,"pageTitle":4655,"context":42296,"tokens":42317,"tags":42318,"activation":-1,"related":37638,"status":-1,"integration":-1},"/docs/api/style-txn::heading::when-to-use-it",[37569,4655,37632,34361,34408,37634,32170,32191],[39444,34361,34408],{"id":42320,"title":37612,"description":42295,"kind":34360,"type":39440,"section":34361,"path":4615,"anchor":37611,"group":34408,"order":31666,"pageTitle":4655,"context":42296,"tokens":42321,"tags":42322,"activation":-1,"related":37638,"status":-1,"integration":-1},"/docs/api/style-txn::heading::practical-note",[37612,4655,37632,34361,34408,37634,32170,32191],[39444,34361,34408],{"id":4616,"title":28077,"description":37837,"kind":34360,"type":39433,"section":34361,"path":4616,"group":34408,"order":32306,"pageTitle":28077,"context":42238,"tokens":42324,"tags":42326,"activation":-1,"related":37843,"status":-1,"integration":-1},[28077,37837,34361,34408,37839,39435,42042,42325],"dom batcher",[34361,34408],{"id":42328,"title":37461,"description":42329,"kind":34360,"type":39440,"section":34361,"path":4616,"anchor":37460,"group":34408,"order":32306,"pageTitle":28077,"context":42330,"tokens":42331,"tags":42332,"activation":-1,"related":37843,"status":-1,"integration":-1},"/docs/api/dom-batcher::heading::public-status","Section in DOMBatcher","DOMBatcher / API Reference",[37461,28077,37837,34361,34408,37839],[39444,34361,34408],{"id":42334,"title":18189,"description":42329,"kind":34360,"type":39440,"section":34361,"path":4616,"anchor":37469,"group":34408,"order":32306,"pageTitle":28077,"context":42330,"tokens":42335,"tags":42336,"activation":-1,"related":37843,"status":-1,"integration":-1},"/docs/api/dom-batcher::heading::what-it-does",[18189,28077,37837,34361,34408,37839],[39444,34361,34408],{"id":42338,"title":37673,"description":42329,"kind":34360,"type":39440,"section":34361,"path":4616,"anchor":37672,"group":34408,"order":32306,"pageTitle":28077,"context":42330,"tokens":42339,"tags":42340,"activation":-1,"related":37843,"status":-1,"integration":-1},"/docs/api/dom-batcher::heading::main-methods",[37673,28077,37837,34361,34408,37839],[39444,34361,34408],{"id":42342,"title":37916,"description":42329,"kind":34360,"type":39440,"section":34361,"path":4616,"anchor":37915,"group":34408,"order":32306,"pageTitle":28077,"context":42330,"tokens":42343,"tags":42344,"activation":-1,"related":37843,"status":-1,"integration":-1},"/docs/api/dom-batcher::heading::runtime-role",[37916,28077,37837,34361,34408,37839],[39444,34361,34408],{"id":42346,"title":37947,"description":42329,"kind":34360,"type":39440,"section":34361,"path":4616,"anchor":37946,"group":34408,"order":32306,"pageTitle":28077,"context":42330,"tokens":42347,"tags":42348,"activation":-1,"related":37843,"status":-1,"integration":-1},"/docs/api/dom-batcher::heading::cached-data",[37947,28077,37837,34361,34408,37839],[39444,34361,34408],{"id":42350,"title":37569,"description":42329,"kind":34360,"type":39440,"section":34361,"path":4616,"anchor":37568,"group":34408,"order":32306,"pageTitle":28077,"context":42330,"tokens":42351,"tags":42352,"activation":-1,"related":37843,"status":-1,"integration":-1},"/docs/api/dom-batcher::heading::when-to-use-it",[37569,28077,37837,34361,34408,37839],[39444,34361,34408],{"id":42354,"title":37612,"description":42329,"kind":34360,"type":39440,"section":34361,"path":4616,"anchor":37611,"group":34408,"order":32306,"pageTitle":28077,"context":42330,"tokens":42355,"tags":42356,"activation":-1,"related":37843,"status":-1,"integration":-1},"/docs/api/dom-batcher::heading::practical-note",[37612,28077,37837,34361,34408,37839],[39444,34361,34408],{"id":34433,"title":34434,"description":37996,"kind":34360,"type":39433,"section":34361,"path":34433,"group":34408,"order":32542,"pageTitle":34434,"context":42238,"tokens":42358,"tags":42360,"activation":-1,"related":38001,"status":-1,"integration":-1},[34434,37996,34361,34408,39435,42042,42359],"grid adapter",[34361,34408],{"id":42362,"title":37461,"description":42363,"kind":34360,"type":39440,"section":34361,"path":34433,"anchor":37460,"group":34408,"order":32542,"pageTitle":34434,"context":42364,"tokens":42365,"tags":42366,"activation":-1,"related":38001,"status":-1,"integration":-1},"/docs/api/grid-adapter::heading::public-status","Section in GridAdapter","GridAdapter / API Reference",[37461,34434,37996,34361,34408],[39444,34361,34408],{"id":42368,"title":18189,"description":42363,"kind":34360,"type":39440,"section":34361,"path":34433,"anchor":37469,"group":34408,"order":32542,"pageTitle":34434,"context":42364,"tokens":42369,"tags":42370,"activation":-1,"related":38001,"status":-1,"integration":-1},"/docs/api/grid-adapter::heading::what-it-does",[18189,34434,37996,34361,34408],[39444,34361,34408],{"id":42372,"title":38054,"description":42363,"kind":34360,"type":39440,"section":34361,"path":34433,"anchor":38053,"group":34408,"order":32542,"pageTitle":34434,"context":42364,"tokens":42373,"tags":42374,"activation":-1,"related":38001,"status":-1,"integration":-1},"/docs/api/grid-adapter::heading::abstract-contract",[38054,34434,37996,34361,34408],[39444,34361,34408],{"id":42376,"title":38090,"description":42363,"kind":34360,"type":39440,"section":34361,"path":34433,"anchor":38089,"group":34408,"order":32542,"pageTitle":34434,"context":42364,"tokens":42377,"tags":42378,"activation":-1,"related":38001,"status":-1,"integration":-1},"/docs/api/grid-adapter::heading::built-in-helpers",[38090,34434,37996,34361,34408],[39444,34361,34408],{"id":42380,"title":37569,"description":42363,"kind":34360,"type":39440,"section":34361,"path":34433,"anchor":37568,"group":34408,"order":32542,"pageTitle":34434,"context":42364,"tokens":42381,"tags":42382,"activation":-1,"related":38001,"status":-1,"integration":-1},"/docs/api/grid-adapter::heading::when-to-use-it",[37569,34434,37996,34361,34408],[39444,34361,34408],{"id":42384,"title":37612,"description":42363,"kind":34360,"type":39440,"section":34361,"path":34433,"anchor":37611,"group":34408,"order":32542,"pageTitle":34434,"context":42364,"tokens":42385,"tags":42386,"activation":-1,"related":38001,"status":-1,"integration":-1},"/docs/api/grid-adapter::heading::practical-note",[37612,34434,37996,34361,34408],[39444,34361,34408],{"id":34439,"title":34440,"description":38161,"kind":34360,"type":39433,"section":34361,"path":34439,"group":34408,"order":38162,"pageTitle":34440,"context":42238,"tokens":42388,"tags":42389,"activation":-1,"related":38167,"status":-1,"integration":-1},[34440,38161,34361,34408,39435,42042,38172],[34361,34408],{"id":42391,"title":37461,"description":42392,"kind":34360,"type":39440,"section":34361,"path":34439,"anchor":37460,"group":34408,"order":38162,"pageTitle":34440,"context":42393,"tokens":42394,"tags":42395,"activation":-1,"related":38167,"status":-1,"integration":-1},"/docs/api/debounce::heading::public-status","Section in Debounce","Debounce / API Reference",[37461,34440,38161,34361,34408],[39444,34361,34408],{"id":42397,"title":18189,"description":42392,"kind":34360,"type":39440,"section":34361,"path":34439,"anchor":37469,"group":34408,"order":38162,"pageTitle":34440,"context":42393,"tokens":42398,"tags":42399,"activation":-1,"related":38167,"status":-1,"integration":-1},"/docs/api/debounce::heading::what-it-does",[18189,34440,38161,34361,34408],[39444,34361,34408],{"id":42401,"title":37916,"description":42392,"kind":34360,"type":39440,"section":34361,"path":34439,"anchor":37915,"group":34408,"order":38162,"pageTitle":34440,"context":42393,"tokens":42402,"tags":42403,"activation":-1,"related":38167,"status":-1,"integration":-1},"/docs/api/debounce::heading::runtime-role",[37916,34440,38161,34361,34408],[39444,34361,34408],{"id":42405,"title":37569,"description":42392,"kind":34360,"type":39440,"section":34361,"path":34439,"anchor":37568,"group":34408,"order":38162,"pageTitle":34440,"context":42393,"tokens":42406,"tags":42407,"activation":-1,"related":38167,"status":-1,"integration":-1},"/docs/api/debounce::heading::when-to-use-it",[37569,34440,38161,34361,34408],[39444,34361,34408],{"id":34445,"title":34446,"description":38230,"kind":34360,"type":39433,"section":34361,"path":34445,"group":34408,"order":38231,"pageTitle":34446,"context":42238,"tokens":42409,"tags":42411,"activation":-1,"related":38236,"status":-1,"integration":-1},[34446,38230,34361,34408,39435,42042,42410],"string fps",[34361,34408],{"id":42413,"title":37461,"description":42414,"kind":34360,"type":39440,"section":34361,"path":34445,"anchor":37460,"group":34408,"order":38231,"pageTitle":34446,"context":42415,"tokens":42416,"tags":42417,"activation":-1,"related":38236,"status":-1,"integration":-1},"/docs/api/string-fps::heading::public-status","Section in StringFPS","StringFPS / API Reference",[37461,34446,38230,34361,34408],[39444,34361,34408],{"id":42419,"title":18189,"description":42414,"kind":34360,"type":39440,"section":34361,"path":34445,"anchor":37469,"group":34408,"order":38231,"pageTitle":34446,"context":42415,"tokens":42420,"tags":42421,"activation":-1,"related":38236,"status":-1,"integration":-1},"/docs/api/string-fps::heading::what-it-does",[18189,34446,38230,34361,34408],[39444,34361,34408],{"id":42423,"title":37673,"description":42414,"kind":34360,"type":39440,"section":34361,"path":34445,"anchor":37672,"group":34408,"order":38231,"pageTitle":34446,"context":42415,"tokens":42424,"tags":42425,"activation":-1,"related":38236,"status":-1,"integration":-1},"/docs/api/string-fps::heading::main-methods",[37673,34446,38230,34361,34408],[39444,34361,34408],{"id":42427,"title":37778,"description":42414,"kind":34360,"type":39440,"section":34361,"path":34445,"anchor":37777,"group":34408,"order":38231,"pageTitle":34446,"context":42415,"tokens":42428,"tags":42429,"activation":-1,"related":38236,"status":-1,"integration":-1},"/docs/api/string-fps::heading::important-behavior",[37778,34446,38230,34361,34408],[39444,34361,34408],{"id":42431,"title":37916,"description":42414,"kind":34360,"type":39440,"section":34361,"path":34445,"anchor":37915,"group":34408,"order":38231,"pageTitle":34446,"context":42415,"tokens":42432,"tags":42433,"activation":-1,"related":38236,"status":-1,"integration":-1},"/docs/api/string-fps::heading::runtime-role",[37916,34446,38230,34361,34408],[39444,34361,34408],{"id":42435,"title":37612,"description":42414,"kind":34360,"type":39440,"section":34361,"path":34445,"anchor":37611,"group":34408,"order":38231,"pageTitle":34446,"context":42415,"tokens":42436,"tags":42437,"activation":-1,"related":38236,"status":-1,"integration":-1},"/docs/api/string-fps::heading::practical-note",[37612,34446,38230,34361,34408],[39444,34361,34408],{"id":34451,"title":34452,"description":38356,"kind":34360,"type":39433,"section":34361,"path":34451,"group":34408,"order":38357,"pageTitle":34452,"context":42238,"tokens":42439,"tags":42441,"activation":-1,"related":38362,"status":-1,"integration":-1},[34452,38356,34361,34408,39435,42042,42440],"string settings",[34361,34408],{"id":42443,"title":37461,"description":42444,"kind":34360,"type":39440,"section":34361,"path":34451,"anchor":37460,"group":34408,"order":38357,"pageTitle":34452,"context":42445,"tokens":42446,"tags":42447,"activation":-1,"related":38362,"status":-1,"integration":-1},"/docs/api/string-settings::heading::public-status","Section in StringSettings","StringSettings / API Reference",[37461,34452,38356,34361,34408],[39444,34361,34408],{"id":42449,"title":38386,"description":42444,"kind":34360,"type":39440,"section":34361,"path":34451,"anchor":38385,"group":34408,"order":38357,"pageTitle":34452,"context":42445,"tokens":42450,"tags":42451,"activation":-1,"related":38362,"status":-1,"integration":-1},"/docs/api/string-settings::heading::shape",[38386,34452,38356,34361,34408],[39444,34361,34408],{"id":42453,"title":38437,"description":42444,"kind":34360,"type":39440,"section":34361,"path":34451,"anchor":38436,"group":34408,"order":38357,"pageTitle":34452,"context":42445,"tokens":42454,"tags":42455,"activation":-1,"related":38362,"status":-1,"integration":-1},"/docs/api/string-settings::heading::what-it-is-for",[38437,34452,38356,34361,34408],[39444,34361,34408],{"id":42457,"title":37612,"description":42444,"kind":34360,"type":39440,"section":34361,"path":34451,"anchor":37611,"group":34408,"order":38357,"pageTitle":34452,"context":42445,"tokens":42458,"tags":42459,"activation":-1,"related":38362,"status":-1,"integration":-1},"/docs/api/string-settings::heading::practical-note",[37612,34452,38356,34361,34408],[39444,34361,34408],{"id":13750,"title":34457,"description":38469,"kind":34360,"type":39433,"section":34361,"path":13750,"group":34408,"order":38470,"pageTitle":34457,"context":42238,"tokens":42461,"tags":42463,"activation":-1,"related":38475,"status":-1,"integration":-1},[34457,38469,34361,34408,39435,42042,42462],"is coarse pointer",[34361,34408],{"id":42465,"title":37461,"description":42466,"kind":34360,"type":39440,"section":34361,"path":13750,"anchor":37460,"group":34408,"order":38470,"pageTitle":34457,"context":42467,"tokens":42468,"tags":42469,"activation":-1,"related":38475,"status":-1,"integration":-1},"/docs/api/is-coarse-pointer::heading::public-status","Section in isCoarsePointer","isCoarsePointer / API Reference",[37461,34457,38469,34361,34408],[39444,34361,34408],{"id":42471,"title":38496,"description":42466,"kind":34360,"type":39440,"section":34361,"path":13750,"anchor":38495,"group":34408,"order":38470,"pageTitle":34457,"context":42467,"tokens":42472,"tags":42473,"activation":-1,"related":38475,"status":-1,"integration":-1},"/docs/api/is-coarse-pointer::heading::what-it-checks",[38496,34457,38469,34361,34408],[39444,34361,34408],{"id":42475,"title":38523,"description":42466,"kind":34360,"type":39440,"section":34361,"path":13750,"anchor":38522,"group":34408,"order":38470,"pageTitle":34457,"context":42467,"tokens":42476,"tags":42477,"activation":-1,"related":38475,"status":-1,"integration":-1},"/docs/api/is-coarse-pointer::heading::current-behavior",[38523,34457,38469,34361,34408],[39444,34361,34408],{"id":42479,"title":38540,"description":42466,"kind":34360,"type":39440,"section":34361,"path":13750,"anchor":38539,"group":34408,"order":38470,"pageTitle":34457,"context":42467,"tokens":42480,"tags":42481,"activation":-1,"related":38475,"status":-1,"integration":-1},"/docs/api/is-coarse-pointer::heading::why-it-exists",[38540,34457,38469,34361,34408],[39444,34361,34408],{"id":34462,"title":34463,"description":38551,"kind":34360,"type":39433,"section":34361,"path":34462,"group":34408,"order":38552,"pageTitle":34463,"context":42238,"tokens":42483,"tags":42485,"activation":-1,"related":38557,"status":-1,"integration":-1},[34463,38551,34361,34408,39435,42042,42484],"parse part of",[34361,34408],{"id":42487,"title":37461,"description":42488,"kind":34360,"type":39440,"section":34361,"path":34462,"anchor":37460,"group":34408,"order":38552,"pageTitle":34463,"context":42489,"tokens":42490,"tags":42491,"activation":-1,"related":38557,"status":-1,"integration":-1},"/docs/api/parse-part-of::heading::public-status","Section in parsePartOf","parsePartOf / API Reference",[37461,34463,38551,34361,34408],[39444,34361,34408],{"id":42493,"title":38579,"description":42488,"kind":34360,"type":39440,"section":34361,"path":34462,"anchor":38578,"group":34408,"order":38552,"pageTitle":34463,"context":42489,"tokens":42494,"tags":42495,"activation":-1,"related":38557,"status":-1,"integration":-1},"/docs/api/parse-part-of::heading::expected-input",[38579,34463,38551,34361,34408],[39444,34361,34408],{"id":42497,"title":38592,"description":42488,"kind":34360,"type":39440,"section":34361,"path":34462,"anchor":38591,"group":34408,"order":38552,"pageTitle":34463,"context":42489,"tokens":42498,"tags":42499,"activation":-1,"related":38557,"status":-1,"integration":-1},"/docs/api/parse-part-of::heading::output-shape",[38592,34463,38551,34361,34408],[39444,34361,34408],{"id":42501,"title":18189,"description":42488,"kind":34360,"type":39440,"section":34361,"path":34462,"anchor":37469,"group":34408,"order":38552,"pageTitle":34463,"context":42489,"tokens":42502,"tags":42503,"activation":-1,"related":38557,"status":-1,"integration":-1},"/docs/api/parse-part-of::heading::what-it-does",[18189,34463,38551,34361,34408],[39444,34361,34408],{"id":42505,"title":38646,"description":42488,"kind":34360,"type":39440,"section":34361,"path":34462,"anchor":38645,"group":34408,"order":38552,"pageTitle":34463,"context":42489,"tokens":42506,"tags":42507,"activation":-1,"related":38557,"status":-1,"integration":-1},"/docs/api/parse-part-of::heading::why-it-matters",[38646,34463,38551,34361,34408],[39444,34361,34408],{"id":32315,"title":34474,"description":38668,"kind":34360,"type":39433,"section":34361,"path":32315,"group":34467,"order":11302,"pageTitle":34474,"context":42509,"tokens":42510,"tags":42512,"activation":-1,"related":38673,"status":-1,"integration":-1},"API Reference / State Models",[34474,38668,34361,34467,39435,42042,42511],"state models",[34361,34467],{"id":42514,"title":38694,"description":42515,"kind":34360,"type":39440,"section":34361,"path":32315,"anchor":38693,"group":34467,"order":11302,"pageTitle":34474,"context":42516,"tokens":42517,"tags":42518,"activation":-1,"related":38673,"status":-1,"integration":-1},"/docs/api/state-models::heading::state-map","Section in State Models Overview","State Models Overview / API Reference",[38694,34474,38668,34361,34467],[39444,34361,34467],{"id":42520,"title":38728,"description":42515,"kind":34360,"type":39440,"section":34361,"path":32315,"anchor":38727,"group":34467,"order":11302,"pageTitle":34474,"context":42516,"tokens":42521,"tags":42522,"activation":-1,"related":38673,"status":-1,"integration":-1},"/docs/api/state-models::heading::practical-boundary",[38728,34474,38668,34361,34467],[39444,34361,34467],{"id":3981,"title":30148,"description":38746,"kind":34360,"type":39433,"section":34361,"path":3981,"group":34467,"order":38747,"pageTitle":30148,"context":42509,"tokens":42524,"tags":42526,"activation":-1,"related":38752,"status":-1,"integration":-1},[30148,38746,34361,34467,39435,42042,42525],"string data",[34361,34467],{"id":42528,"title":37461,"description":42529,"kind":34360,"type":39440,"section":34361,"path":3981,"anchor":37460,"group":34467,"order":38747,"pageTitle":30148,"context":42530,"tokens":42531,"tags":42532,"activation":-1,"related":38752,"status":-1,"integration":-1},"/docs/api/string-data::heading::public-status","Section in StringData","StringData / API Reference",[37461,30148,38746,34361,34467],[39444,34361,34467],{"id":42534,"title":38772,"description":42529,"kind":34360,"type":39440,"section":34361,"path":3981,"anchor":38771,"group":34467,"order":38747,"pageTitle":30148,"context":42530,"tokens":42535,"tags":42536,"activation":-1,"related":38752,"status":-1,"integration":-1},"/docs/api/string-data::heading::what-it-contains",[38772,30148,38746,34361,34467],[39444,34361,34467],{"id":42538,"title":38646,"description":42529,"kind":34360,"type":39440,"section":34361,"path":3981,"anchor":38645,"group":34467,"order":38747,"pageTitle":30148,"context":42530,"tokens":42539,"tags":42540,"activation":-1,"related":38752,"status":-1,"integration":-1},"/docs/api/string-data::heading::why-it-matters",[38646,30148,38746,34361,34467],[39444,34361,34467],{"id":42542,"title":37612,"description":42529,"kind":34360,"type":39440,"section":34361,"path":3981,"anchor":37611,"group":34467,"order":38747,"pageTitle":30148,"context":42530,"tokens":42543,"tags":42544,"activation":-1,"related":38752,"status":-1,"integration":-1},"/docs/api/string-data::heading::practical-note",[37612,30148,38746,34361,34467],[39444,34361,34467],{"id":34483,"title":32308,"description":38836,"kind":34360,"type":39433,"section":34361,"path":34483,"group":34467,"order":38837,"pageTitle":32308,"context":42509,"tokens":42546,"tags":42548,"activation":-1,"related":38842,"status":-1,"integration":-1},[32308,38836,34361,34467,39435,42042,42547],"scroll state",[34361,34467],{"id":42550,"title":37461,"description":42551,"kind":34360,"type":39440,"section":34361,"path":34483,"anchor":37460,"group":34467,"order":38837,"pageTitle":32308,"context":42552,"tokens":42553,"tags":42554,"activation":-1,"related":38842,"status":-1,"integration":-1},"/docs/api/scroll-state::heading::public-status","Section in ScrollState","ScrollState / API Reference",[37461,32308,38836,34361,34467],[39444,34361,34467],{"id":42556,"title":38867,"description":42551,"kind":34360,"type":39440,"section":34361,"path":34483,"anchor":38866,"group":34467,"order":38837,"pageTitle":32308,"context":42552,"tokens":42557,"tags":42558,"activation":-1,"related":38842,"status":-1,"integration":-1},"/docs/api/scroll-state::heading::important-fields",[38867,32308,38836,34361,34467],[39444,34361,34467],{"id":42560,"title":38437,"description":42551,"kind":34360,"type":39440,"section":34361,"path":34483,"anchor":38436,"group":34467,"order":38837,"pageTitle":32308,"context":42552,"tokens":42561,"tags":42562,"activation":-1,"related":38842,"status":-1,"integration":-1},"/docs/api/scroll-state::heading::what-it-is-for",[38437,32308,38836,34361,34467],[39444,34361,34467],{"id":42564,"title":37612,"description":42551,"kind":34360,"type":39440,"section":34361,"path":34483,"anchor":37611,"group":34467,"order":38837,"pageTitle":32308,"context":42552,"tokens":42565,"tags":42566,"activation":-1,"related":38842,"status":-1,"integration":-1},"/docs/api/scroll-state::heading::practical-note",[37612,32308,38836,34361,34467],[39444,34361,34467],{"id":34488,"title":32309,"description":38993,"kind":34360,"type":39433,"section":34361,"path":34488,"group":34467,"order":38994,"pageTitle":32309,"context":42509,"tokens":42568,"tags":42570,"activation":-1,"related":38999,"status":-1,"integration":-1},[32309,38993,34361,34467,39435,42042,42569],"viewport state",[34361,34467],{"id":42572,"title":37461,"description":42573,"kind":34360,"type":39440,"section":34361,"path":34488,"anchor":37460,"group":34467,"order":38994,"pageTitle":32309,"context":42574,"tokens":42575,"tags":42576,"activation":-1,"related":38999,"status":-1,"integration":-1},"/docs/api/viewport-state::heading::public-status","Section in ViewportState","ViewportState / API Reference",[37461,32309,38993,34361,34467],[39444,34361,34467],{"id":42578,"title":38867,"description":42573,"kind":34360,"type":39440,"section":34361,"path":34488,"anchor":38866,"group":34467,"order":38994,"pageTitle":32309,"context":42574,"tokens":42579,"tags":42580,"activation":-1,"related":38999,"status":-1,"integration":-1},"/docs/api/viewport-state::heading::important-fields",[38867,32309,38993,34361,34467],[39444,34361,34467],{"id":42582,"title":38437,"description":42573,"kind":34360,"type":39440,"section":34361,"path":34488,"anchor":38436,"group":34467,"order":38994,"pageTitle":32309,"context":42574,"tokens":42583,"tags":42584,"activation":-1,"related":38999,"status":-1,"integration":-1},"/docs/api/viewport-state::heading::what-it-is-for",[38437,32309,38993,34361,34467],[39444,34361,34467],{"id":42586,"title":37612,"description":42573,"kind":34360,"type":39440,"section":34361,"path":34488,"anchor":37611,"group":34467,"order":38994,"pageTitle":32309,"context":42574,"tokens":42587,"tags":42588,"activation":-1,"related":38999,"status":-1,"integration":-1},"/docs/api/viewport-state::heading::practical-note",[37612,32309,38993,34361,34467],[39444,34361,34467],{"id":34493,"title":32310,"description":39097,"kind":34360,"type":39433,"section":34361,"path":34493,"group":34467,"order":39098,"pageTitle":32310,"context":42509,"tokens":42590,"tags":42592,"activation":-1,"related":39103,"status":-1,"integration":-1},[32310,39097,34361,34467,39435,42042,42591],"cursor state",[34361,34467],{"id":42594,"title":37461,"description":42595,"kind":34360,"type":39440,"section":34361,"path":34493,"anchor":37460,"group":34467,"order":39098,"pageTitle":32310,"context":42596,"tokens":42597,"tags":42598,"activation":-1,"related":39103,"status":-1,"integration":-1},"/docs/api/cursor-state::heading::public-status","Section in CursorState","CursorState / API Reference",[37461,32310,39097,34361,34467],[39444,34361,34467],{"id":42600,"title":38867,"description":42595,"kind":34360,"type":39440,"section":34361,"path":34493,"anchor":38866,"group":34467,"order":39098,"pageTitle":32310,"context":42596,"tokens":42601,"tags":42602,"activation":-1,"related":39103,"status":-1,"integration":-1},"/docs/api/cursor-state::heading::important-fields",[38867,32310,39097,34361,34467],[39444,34361,34467],{"id":42604,"title":38437,"description":42595,"kind":34360,"type":39440,"section":34361,"path":34493,"anchor":38436,"group":34467,"order":39098,"pageTitle":32310,"context":42596,"tokens":42605,"tags":42606,"activation":-1,"related":39103,"status":-1,"integration":-1},"/docs/api/cursor-state::heading::what-it-is-for",[38437,32310,39097,34361,34467],[39444,34361,34467],{"id":42608,"title":37612,"description":42595,"kind":34360,"type":39440,"section":34361,"path":34493,"anchor":37611,"group":34467,"order":39098,"pageTitle":32310,"context":42596,"tokens":42609,"tags":42610,"activation":-1,"related":39103,"status":-1,"integration":-1},"/docs/api/cursor-state::heading::practical-note",[37612,32310,39097,34361,34467],[39444,34361,34467],{"id":34498,"title":34499,"description":39199,"kind":34360,"type":39433,"section":34361,"path":34498,"group":34467,"order":39200,"pageTitle":34499,"context":42509,"tokens":42612,"tags":42614,"activation":-1,"related":39205,"status":-1,"integration":-1},[34499,39199,34361,34467,39435,42042,42613],"time state",[34361,34467],{"id":42616,"title":37461,"description":42617,"kind":34360,"type":39440,"section":34361,"path":34498,"anchor":37460,"group":34467,"order":39200,"pageTitle":34499,"context":42618,"tokens":42619,"tags":42620,"activation":-1,"related":39205,"status":-1,"integration":-1},"/docs/api/time-state::heading::public-status","Section in TimeState","TimeState / API Reference",[37461,34499,39199,34361,34467],[39444,34361,34467],{"id":42622,"title":39229,"description":42617,"kind":34360,"type":39440,"section":34361,"path":34498,"anchor":39228,"group":34467,"order":39200,"pageTitle":34499,"context":42618,"tokens":42623,"tags":42624,"activation":-1,"related":39205,"status":-1,"integration":-1},"/docs/api/time-state::heading::fields",[39229,34499,39199,34361,34467],[39444,34361,34467],{"id":42626,"title":38437,"description":42617,"kind":34360,"type":39440,"section":34361,"path":34498,"anchor":38436,"group":34467,"order":39200,"pageTitle":34499,"context":42618,"tokens":42627,"tags":42628,"activation":-1,"related":39205,"status":-1,"integration":-1},"/docs/api/time-state::heading::what-it-is-for",[38437,34499,39199,34361,34467],[39444,34361,34467],{"id":42630,"title":37612,"description":42617,"kind":34360,"type":39440,"section":34361,"path":34498,"anchor":37611,"group":34467,"order":39200,"pageTitle":34499,"context":42618,"tokens":42631,"tags":42632,"activation":-1,"related":39205,"status":-1,"integration":-1},"/docs/api/time-state::heading::practical-note",[37612,34499,39199,34361,34467],[39444,34361,34467],{"id":34504,"title":34505,"description":39283,"kind":34360,"type":39433,"section":34361,"path":34504,"group":34467,"order":39284,"pageTitle":34505,"context":42509,"tokens":42634,"tags":42636,"activation":-1,"related":39289,"status":-1,"integration":-1},[34505,39283,34361,34467,39435,42042,42635],"system state",[34361,34467],{"id":42638,"title":37461,"description":42639,"kind":34360,"type":39440,"section":34361,"path":34504,"anchor":37460,"group":34467,"order":39284,"pageTitle":34505,"context":42640,"tokens":42641,"tags":42642,"activation":-1,"related":39289,"status":-1,"integration":-1},"/docs/api/system-state::heading::public-status","Section in SystemState","SystemState / API Reference",[37461,34505,39283,34361,34467],[39444,34361,34467],{"id":42644,"title":39313,"description":42639,"kind":34360,"type":39440,"section":34361,"path":34504,"anchor":39312,"group":34467,"order":39284,"pageTitle":34505,"context":42640,"tokens":42645,"tags":42646,"activation":-1,"related":39289,"status":-1,"integration":-1},"/docs/api/system-state::heading::current-fields",[39313,34505,39283,34361,34467],[39444,34361,34467],{"id":42648,"title":38437,"description":42639,"kind":34360,"type":39440,"section":34361,"path":34504,"anchor":38436,"group":34467,"order":39284,"pageTitle":34505,"context":42640,"tokens":42649,"tags":42650,"activation":-1,"related":39289,"status":-1,"integration":-1},"/docs/api/system-state::heading::what-it-is-for",[38437,34505,39283,34361,34467],[39444,34361,34467],{"id":42652,"title":37612,"description":42639,"kind":34360,"type":39440,"section":34361,"path":34504,"anchor":37611,"group":34467,"order":39284,"pageTitle":34505,"context":42640,"tokens":42653,"tags":42654,"activation":-1,"related":39289,"status":-1,"integration":-1},"/docs/api/system-state::heading::practical-note",[37612,34505,39283,34361,34467],[39444,34361,34467],{"id":34510,"title":34511,"description":39356,"kind":34360,"type":39433,"section":34361,"path":34510,"group":34467,"order":39357,"pageTitle":34511,"context":42509,"tokens":42656,"tags":42658,"activation":-1,"related":39362,"status":-1,"integration":-1},[34511,39356,34361,34467,39435,42042,42657],"render state",[34361,34467],{"id":42660,"title":37461,"description":42661,"kind":34360,"type":39440,"section":34361,"path":34510,"anchor":37460,"group":34467,"order":39357,"pageTitle":34511,"context":42662,"tokens":42663,"tags":42664,"activation":-1,"related":39362,"status":-1,"integration":-1},"/docs/api/render-state::heading::public-status","Section in RenderState","RenderState / API Reference",[37461,34511,39356,34361,34467],[39444,34361,34467],{"id":42666,"title":39385,"description":42661,"kind":34360,"type":39440,"section":34361,"path":34510,"anchor":39384,"group":34467,"order":39357,"pageTitle":34511,"context":42662,"tokens":42667,"tags":42668,"activation":-1,"related":39362,"status":-1,"integration":-1},"/docs/api/render-state::heading::current-field",[39385,34511,39356,34361,34467],[39444,34361,34467],{"id":42670,"title":38437,"description":42661,"kind":34360,"type":39440,"section":34361,"path":34510,"anchor":38436,"group":34467,"order":39357,"pageTitle":34511,"context":42662,"tokens":42671,"tags":42672,"activation":-1,"related":39362,"status":-1,"integration":-1},"/docs/api/render-state::heading::what-it-is-for",[38437,34511,39356,34361,34467],[39444,34361,34467],{"id":42674,"title":37612,"description":42661,"kind":34360,"type":39440,"section":34361,"path":34510,"anchor":37611,"group":34467,"order":39357,"pageTitle":34511,"context":42662,"tokens":42675,"tags":42676,"activation":-1,"related":39362,"status":-1,"integration":-1},"/docs/api/render-state::heading::practical-note",[37612,34511,39356,34361,34467],[39444,34361,34467],{"id":42678,"title":167,"activation":42679,"aliases":42679,"api":42679,"attrs":42679,"body":42680,"category":42042,"cssVars":42679,"description":42812,"events":42679,"extension":42813,"integration":42679,"kind":34360,"meta":42814,"navigation":261,"order":11,"package":42679,"path":166,"publicExport":42815,"seo":42816,"status":42679,"stem":42817,"tags":42679,"__hash__":42818},"content/docs/api/overview.md",null,{"type":22,"value":42681,"toc":42806},[42682,42684,42686,42688,42710,42712,42754,42756,42790,42792,42794,42796],[25,42683,167],{"id":34372},[30,42685,34375],{},[37,42687,34362],{"id":34378},[42,42689,42690,42694,42698,42702,42706],{},[45,42691,42692],{},[133,42693,34385],{"href":3980},[45,42695,42696],{},[133,42697,34390],{"href":2899},[45,42699,42700],{},[133,42701,34395],{"href":2463},[45,42703,42704],{},[133,42705,34400],{"href":2464},[45,42707,42708],{},[133,42709,17405],{"href":8037},[37,42711,34408],{"id":34407},[42,42713,42714,42718,42722,42726,42730,42734,42738,42742,42746,42750],{},[45,42715,42716],{},[133,42717,34416],{"href":34415},[45,42719,42720],{},[133,42721,2389],{"href":4614},[45,42723,42724],{},[133,42725,4655],{"href":4615},[45,42727,42728],{},[133,42729,28077],{"href":4616},[45,42731,42732],{},[133,42733,34434],{"href":34433},[45,42735,42736],{},[133,42737,34440],{"href":34439},[45,42739,42740],{},[133,42741,34446],{"href":34445},[45,42743,42744],{},[133,42745,34452],{"href":34451},[45,42747,42748],{},[133,42749,34457],{"href":13750},[45,42751,42752],{},[133,42753,34463],{"href":34462},[37,42755,34467],{"id":34466},[42,42757,42758,42762,42766,42770,42774,42778,42782,42786],{},[45,42759,42760],{},[133,42761,34474],{"href":32315},[45,42763,42764],{},[133,42765,30148],{"href":3981},[45,42767,42768],{},[133,42769,32308],{"href":34483},[45,42771,42772],{},[133,42773,32309],{"href":34488},[45,42775,42776],{},[133,42777,32310],{"href":34493},[45,42779,42780],{},[133,42781,34499],{"href":34498},[45,42783,42784],{},[133,42785,34505],{"href":34504},[45,42787,42788],{},[133,42789,34511],{"href":34510},[37,42791,34515],{"id":34514},[30,42793,34518],{},[30,42795,34521],{},[42,42797,42798,42800],{},[45,42799,34526],{},[45,42801,34529,42802,1934,42804,34536],{},[60,42803,34532],{},[60,42805,34535],{},{"title":230,"searchDepth":258,"depth":258,"links":42807},[42808,42809,42810,42811],{"id":34378,"depth":258,"text":34362},{"id":34407,"depth":258,"text":34408},{"id":34466,"depth":258,"text":34467},{"id":34514,"depth":258,"text":34515},"Map of the public export surface and where each part fits.","md",{},false,{"title":167,"description":42812},"docs/api/overview","mZRoBDHqkKXbElxmr456I79ffb98U4y9sU9IIU_uAu0",1775034962616]