[{"data":1,"prerenderedAt":3481},["ShallowReactive",2],{"navigation_docs":3,"-guide-widgets":223,"-guide-widgets-surround":3476},[4,26,96,105,202],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":25},"Getting started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,15,20],{"title":11,"path":12,"stem":13,"icon":14},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F1.installation","i-lucide-download",{"title":16,"path":17,"stem":18,"icon":19},"The first app","\u002Fgetting-started\u002Ffirst-app","1.getting-started\u002F2.first-app","i-lucide-play",{"title":21,"path":22,"stem":23,"icon":24},"The first test","\u002Fgetting-started\u002Ffirst-test","1.getting-started\u002F3.first-test","i-lucide-flask-conical",false,{"title":27,"icon":28,"path":29,"stem":30,"children":31,"page":25},"Guide","i-lucide-book-open","\u002Fguide","2.guide",[32,37,42,47,52,57,62,67,72,77,81,86,91],{"title":33,"path":34,"stem":35,"icon":36},"Components","\u002Fguide\u002Fcomponents","2.guide\u002F01.components","i-lucide-component",{"title":38,"path":39,"stem":40,"icon":41},"Inputs and forms","\u002Fguide\u002Finputs-and-forms","2.guide\u002F02.inputs-and-forms","i-lucide-text-cursor-input",{"title":43,"path":44,"stem":45,"icon":46},"Scrolling and viewports","\u002Fguide\u002Fscrolling","2.guide\u002F03.scrolling","i-lucide-scroll-text",{"title":48,"path":49,"stem":50,"icon":51},"Overlays and layers","\u002Fguide\u002Foverlays","2.guide\u002F04.overlays","i-lucide-layers",{"title":53,"path":54,"stem":55,"icon":56},"Styles and theme","\u002Fguide\u002Fstyles","2.guide\u002F05.styles","i-lucide-palette",{"title":58,"path":59,"stem":60,"icon":61},"Composables","\u002Fguide\u002Fcomposables","2.guide\u002F06.composables","i-lucide-puzzle",{"title":63,"path":64,"stem":65,"icon":66},"Widgets","\u002Fguide\u002Fwidgets","2.guide\u002F07.widgets","i-lucide-blocks",{"title":68,"path":69,"stem":70,"icon":71},"The assistant","\u002Fguide\u002Fassistant","2.guide\u002F08.assistant","i-lucide-message-square",{"title":73,"path":74,"stem":75,"icon":76},"The same app on the web","\u002Fguide\u002Fweb","2.guide\u002F09.web","i-lucide-globe",{"title":78,"path":79,"stem":80,"icon":24},"Testing","\u002Fguide\u002Ftesting","2.guide\u002F10.testing",{"title":82,"path":83,"stem":84,"icon":85},"Running and packaging","\u002Fguide\u002Fpackaging","2.guide\u002F11.packaging","i-lucide-package",{"title":87,"path":88,"stem":89,"icon":90},"The terminal contract","\u002Fguide\u002Fterminal","2.guide\u002F12.terminal","i-lucide-square-terminal",{"title":92,"path":93,"stem":94,"icon":95},"Benchmarks","\u002Fguide\u002Fbenchmarks","2.guide\u002F13.benchmarks","i-lucide-gauge",{"title":97,"icon":98,"path":99,"stem":100,"children":101,"page":25},"AI and agents","i-lucide-bot","\u002Fai","3.ai",[102],{"title":97,"path":103,"stem":104,"icon":98},"\u002Fai\u002Fagents","3.ai\u002F1.agents",{"title":106,"icon":107,"path":108,"stem":109,"children":110},"Decisions","i-lucide-scale","\u002Fdecisions","4.decisions",[111,114,118,122,126,130,134,138,142,146,150,154,158,162,166,170,174,178,182,186,190,194,198],{"title":112,"path":108,"stem":113,"icon":46},"All decisions","4.decisions\u002Findex",{"title":115,"path":116,"stem":117},"0001. kyo-ui is the DSL","\u002Fdecisions\u002F0001-kyo-ui-is-the-dsl","4.decisions\u002F0001-kyo-ui-is-the-dsl",{"title":119,"path":120,"stem":121},"0002. jatatui renders the cells","\u002Fdecisions\u002F0002-jatatui-renders-the-cells","4.decisions\u002F0002-jatatui-renders-the-cells",{"title":123,"path":124,"stem":125},"0003. Pin Kyo 1.0.0-RC7 and JDK 25","\u002Fdecisions\u002F0003-pin-kyo-rc7-and-jdk-25","4.decisions\u002F0003-pin-kyo-rc7-and-jdk-25",{"title":127,"path":128,"stem":129},"0004. Public Kyo APIs only","\u002Fdecisions\u002F0004-public-kyo-apis-only","4.decisions\u002F0004-public-kyo-apis-only",{"title":131,"path":132,"stem":133},"0005. A SOFT frame contract and an own watcher loop","\u002Fdecisions\u002F0005-soft-frame-contract-and-own-watcher-loop","4.decisions\u002F0005-soft-frame-contract-and-own-watcher-loop",{"title":135,"path":136,"stem":137},"0006. Purity: edge files, lint and a pure painter","\u002Fdecisions\u002F0006-purity-edge-files-and-lint","4.decisions\u002F0006-purity-edge-files-and-lint",{"title":139,"path":140,"stem":141},"0007. Compiler flags from sbt-tpolecat","\u002Fdecisions\u002F0007-compiler-flags-from-sbt-tpolecat","4.decisions\u002F0007-compiler-flags-from-sbt-tpolecat",{"title":143,"path":144,"stem":145},"0008. The artifact split: runner, app, testkit and core","\u002Fdecisions\u002F0008-artifact-split-runner-app-testkit-core","4.decisions\u002F0008-artifact-split-runner-app-testkit-core",{"title":147,"path":148,"stem":149},"0009. tui4s-use and tui4s-widgets, cross-built","\u002Fdecisions\u002F0009-use-and-widgets-cross-built","4.decisions\u002F0009-use-and-widgets-cross-built",{"title":151,"path":152,"stem":153},"0010. The flagship assistant is the blueprint of a real app","\u002Fdecisions\u002F0010-the-flagship-assistant-as-blueprint","4.decisions\u002F0010-the-flagship-assistant-as-blueprint",{"title":155,"path":156,"stem":157},"0011. The web target: a standalone Scala.js app and one theme","\u002Fdecisions\u002F0011-web-target-standalone-scalajs-and-one-theme","4.decisions\u002F0011-web-target-standalone-scalajs-and-one-theme",{"title":159,"path":160,"stem":161},"0012. The documentation is example-first","\u002Fdecisions\u002F0012-documentation-is-example-first","4.decisions\u002F0012-documentation-is-example-first",{"title":163,"path":164,"stem":165},"0013. Benchmarks in the repository, with their own build","\u002Fdecisions\u002F0013-benchmarks-in-repo-with-own-build","4.decisions\u002F0013-benchmarks-in-repo-with-own-build",{"title":167,"path":168,"stem":169},"0014. Release per module, by tag, as 0.1.0-RC1","\u002Fdecisions\u002F0014-release-per-module-tags-and-rc1","4.decisions\u002F0014-release-per-module-tags-and-rc1",{"title":171,"path":172,"stem":173},"0015. Packaging: the AOT cache in the start scripts, native-image as an option","\u002Fdecisions\u002F0015-packaging-aot-cache-and-native-image","4.decisions\u002F0015-packaging-aot-cache-and-native-image",{"title":175,"path":176,"stem":177},"0016. Process: lean mode and agent roles","\u002Fdecisions\u002F0016-process-lean-mode-and-agent-roles","4.decisions\u002F0016-process-lean-mode-and-agent-roles",{"title":179,"path":180,"stem":181},"0017. Deferred: templates, mouse, the kitty keyboard protocol and Windows","\u002Fdecisions\u002F0017-deferred-templates-mouse-and-kitty","4.decisions\u002F0017-deferred-templates-mouse-and-kitty",{"title":183,"path":184,"stem":185},"0018. pini4s is a vendored Git submodule","\u002Fdecisions\u002F0018-pini4s-as-a-vendored-submodule","4.decisions\u002F0018-pini4s-as-a-vendored-submodule",{"title":187,"path":188,"stem":189},"0019. Upstream issues are drafts that the user posts","\u002Fdecisions\u002F0019-upstream-kyo-issues-as-drafts","4.decisions\u002F0019-upstream-kyo-issues-as-drafts",{"title":191,"path":192,"stem":193},"0020. Release from the Actions form","\u002Fdecisions\u002F0020-release-from-the-actions-form","4.decisions\u002F0020-release-from-the-actions-form",{"title":195,"path":196,"stem":197},"0021. The rulebook is CONTRIBUTING.md","\u002Fdecisions\u002F0021-the-rulebook-is-contributing-md","4.decisions\u002F0021-the-rulebook-is-contributing-md",{"title":199,"path":200,"stem":201},"0022. The logo is text","\u002Fdecisions\u002F0022-the-logo-is-text","4.decisions\u002F0022-the-logo-is-text",{"title":203,"icon":204,"path":205,"stem":206,"children":207,"page":25},"Project","i-lucide-compass","\u002Fproject","5.project",[208,213,218],{"title":209,"path":210,"stem":211,"icon":212},"Roadmap","\u002Fproject\u002Froadmap","5.project\u002F1.roadmap","i-lucide-map",{"title":214,"path":215,"stem":216,"icon":217},"Contributing","\u002Fproject\u002Fcontributing","5.project\u002F2.contributing","i-lucide-git-pull-request",{"title":219,"path":220,"stem":221,"icon":222},"Security","\u002Fproject\u002Fsecurity","5.project\u002F3.security","i-lucide-shield",{"id":224,"title":63,"body":225,"description":3469,"extension":3470,"links":3471,"meta":3472,"navigation":3473,"path":64,"seo":3474,"stem":65,"__hash__":3475},"docs\u002F2.guide\u002F07.widgets.md",{"type":226,"value":227,"toc":3462},"minimark",[228,668,672,680,703,708,793,797,812,1684,1688,1708,2134,2138,2159,2713,2717,2737,3458],[229,230,236],"pre",{"className":231,"code":232,"filename":233,"language":234,"meta":235,"style":235},"language-scala shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","    \u002F** The containers: a panel, a split pane, an accordion and tabs. *\u002F\n    def containers(using Frame): UI \u003C Sync =\n      for\n          split \u003C- SplitPane(\n                     Panel(title = \"Left\")(span(\"files\")),\n                     Panel(title = \"Right\")(span(\"preview\")),\n                   )(size = Model.Local(40))\n          acc   \u003C- Accordion(\n                     Accordion.Section(\"General\", span(\"Name and email.\")),\n                     Accordion.Section(\"Advanced\", span(\"Cache and logs.\")),\n                   )()\n          tabs  \u003C- Tabs(\"One\", \"Two\", \"Three\")(\n                     panel = i => span(s\"The panel of tab ${i + 1}.\"),\n                   ).ui\n      yield div.style(_.gap(1.px))(\n        Panel(title = \"Panel\")(span(\"A border style and a title on it.\")),\n        labeled(\"SplitPane (Tab to the divider, then ←\u002F→)\", split),\n        labeled(\"Accordion\", acc),\n        labeled(\"Tabs\", tabs),\n      )\n","Gallery.scala","scala","",[237,238,239,248,288,295,310,345,372,398,411,443,472,478,520,567,573,588,616,632,647,662],"code",{"__ignoreMap":235},[240,241,244],"span",{"class":242,"line":243},"line",1,[240,245,247],{"class":246},"sHwdD","    \u002F** The containers: a panel, a split pane, an accordion and tabs. *\u002F\n",[240,249,251,255,259,263,266,270,273,276,279,282,285],{"class":242,"line":250},2,[240,252,254],{"class":253},"sMK4o","    def",[240,256,258],{"class":257},"s2Zo4"," containers",[240,260,262],{"class":261},"sTEyZ","(",[240,264,265],{"class":253},"using",[240,267,269],{"class":268},"sBMFI"," Frame",[240,271,272],{"class":261},")",[240,274,275],{"class":253},":",[240,277,278],{"class":268}," UI",[240,280,281],{"class":253}," \u003C",[240,283,284],{"class":268}," Sync",[240,286,287],{"class":253}," =\n",[240,289,291],{"class":242,"line":290},3,[240,292,294],{"class":293},"s7zQu","      for\n",[240,296,298,301,304,307],{"class":242,"line":297},4,[240,299,300],{"class":261},"          split ",[240,302,303],{"class":253},"\u003C-",[240,305,306],{"class":268}," SplitPane",[240,308,309],{"class":261},"(\n",[240,311,313,316,319,322,325,329,332,335,337,340,342],{"class":242,"line":312},5,[240,314,315],{"class":268},"                     Panel",[240,317,318],{"class":261},"(title ",[240,320,321],{"class":253},"=",[240,323,324],{"class":253}," \"",[240,326,328],{"class":327},"sfazB","Left",[240,330,331],{"class":253},"\"",[240,333,334],{"class":261},")(span(",[240,336,331],{"class":253},[240,338,339],{"class":327},"files",[240,341,331],{"class":253},[240,343,344],{"class":261},")),\n",[240,346,348,350,352,354,356,359,361,363,365,368,370],{"class":242,"line":347},6,[240,349,315],{"class":268},[240,351,318],{"class":261},[240,353,321],{"class":253},[240,355,324],{"class":253},[240,357,358],{"class":327},"Right",[240,360,331],{"class":253},[240,362,334],{"class":261},[240,364,331],{"class":253},[240,366,367],{"class":327},"preview",[240,369,331],{"class":253},[240,371,344],{"class":261},[240,373,375,378,380,383,386,389,391,395],{"class":242,"line":374},7,[240,376,377],{"class":261},"                   )(size ",[240,379,321],{"class":253},[240,381,382],{"class":268}," Model",[240,384,385],{"class":261},".",[240,387,388],{"class":268},"Local",[240,390,262],{"class":261},[240,392,394],{"class":393},"sbssI","40",[240,396,397],{"class":261},"))\n",[240,399,401,404,406,409],{"class":242,"line":400},8,[240,402,403],{"class":261},"          acc   ",[240,405,303],{"class":253},[240,407,408],{"class":268}," Accordion",[240,410,309],{"class":261},[240,412,414,417,419,422,424,426,429,431,434,436,439,441],{"class":242,"line":413},9,[240,415,416],{"class":268},"                     Accordion",[240,418,385],{"class":261},[240,420,421],{"class":268},"Section",[240,423,262],{"class":261},[240,425,331],{"class":253},[240,427,428],{"class":327},"General",[240,430,331],{"class":253},[240,432,433],{"class":261},", span(",[240,435,331],{"class":253},[240,437,438],{"class":327},"Name and email.",[240,440,331],{"class":253},[240,442,344],{"class":261},[240,444,446,448,450,452,454,456,459,461,463,465,468,470],{"class":242,"line":445},10,[240,447,416],{"class":268},[240,449,385],{"class":261},[240,451,421],{"class":268},[240,453,262],{"class":261},[240,455,331],{"class":253},[240,457,458],{"class":327},"Advanced",[240,460,331],{"class":253},[240,462,433],{"class":261},[240,464,331],{"class":253},[240,466,467],{"class":327},"Cache and logs.",[240,469,331],{"class":253},[240,471,344],{"class":261},[240,473,475],{"class":242,"line":474},11,[240,476,477],{"class":261},"                   )()\n",[240,479,481,484,486,489,491,493,496,498,501,503,506,508,510,512,515,517],{"class":242,"line":480},12,[240,482,483],{"class":261},"          tabs  ",[240,485,303],{"class":253},[240,487,488],{"class":268}," Tabs",[240,490,262],{"class":261},[240,492,331],{"class":253},[240,494,495],{"class":327},"One",[240,497,331],{"class":253},[240,499,500],{"class":261},", ",[240,502,331],{"class":253},[240,504,505],{"class":327},"Two",[240,507,331],{"class":253},[240,509,500],{"class":261},[240,511,331],{"class":253},[240,513,514],{"class":327},"Three",[240,516,331],{"class":253},[240,518,519],{"class":261},")(\n",[240,521,523,526,528,531,534,537,540,542,545,548,551,554,557,560,562,564],{"class":242,"line":522},13,[240,524,525],{"class":261},"                     panel ",[240,527,321],{"class":253},[240,529,530],{"class":261}," i ",[240,532,533],{"class":253},"=>",[240,535,536],{"class":261}," span(",[240,538,539],{"class":253},"s",[240,541,331],{"class":253},[240,543,544],{"class":327},"The panel of tab ",[240,546,547],{"class":253},"${",[240,549,550],{"class":261},"i ",[240,552,553],{"class":253},"+",[240,555,556],{"class":393}," 1",[240,558,559],{"class":253},"}",[240,561,385],{"class":327},[240,563,331],{"class":253},[240,565,566],{"class":261},"),\n",[240,568,570],{"class":242,"line":569},14,[240,571,572],{"class":261},"                   ).ui\n",[240,574,576,579,582,585],{"class":242,"line":575},15,[240,577,578],{"class":293},"      yield",[240,580,581],{"class":261}," div.style(_.gap(",[240,583,584],{"class":393},"1",[240,586,587],{"class":261},".px))(\n",[240,589,591,594,596,598,600,603,605,607,609,612,614],{"class":242,"line":590},16,[240,592,593],{"class":268},"        Panel",[240,595,318],{"class":261},[240,597,321],{"class":253},[240,599,324],{"class":253},[240,601,602],{"class":327},"Panel",[240,604,331],{"class":253},[240,606,334],{"class":261},[240,608,331],{"class":253},[240,610,611],{"class":327},"A border style and a title on it.",[240,613,331],{"class":253},[240,615,344],{"class":261},[240,617,619,622,624,627,629],{"class":242,"line":618},17,[240,620,621],{"class":261},"        labeled(",[240,623,331],{"class":253},[240,625,626],{"class":327},"SplitPane (Tab to the divider, then ←\u002F→)",[240,628,331],{"class":253},[240,630,631],{"class":261},", split),\n",[240,633,635,637,639,642,644],{"class":242,"line":634},18,[240,636,621],{"class":261},[240,638,331],{"class":253},[240,640,641],{"class":327},"Accordion",[240,643,331],{"class":253},[240,645,646],{"class":261},", acc),\n",[240,648,650,652,654,657,659],{"class":242,"line":649},19,[240,651,621],{"class":261},[240,653,331],{"class":253},[240,655,656],{"class":327},"Tabs",[240,658,331],{"class":253},[240,660,661],{"class":261},", tabs),\n",[240,663,665],{"class":242,"line":664},20,[240,666,667],{"class":261},"      )\n",[669,670],"cast",{"src":671},"\u002Fcasts\u002Fgallery.cast",[673,674,675,676,679],"p",{},"The gallery example (",[237,677,678],{},"examples\u002Ftarget\u002Fbin\u002Fgallery",") shows each widget with live state. The arrows (or F1 to F5) pick a family. Tab goes from widget to widget. Ctrl-P opens the command palette, and Ctrl-Q quits.",[229,681,686],{"className":682,"code":683,"filename":684,"language":685,"meta":235,"style":235},"language-sbt shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","libraryDependencies += \"io.github.yuri4n\" %% \"tui4s-widgets\" % \"\u003Cversion>\"\n\u002F\u002F a Scala.js or a cross-built project:\nlibraryDependencies += \"io.github.yuri4n\" %%% \"tui4s-widgets\" % \"\u003Cversion>\"\n","build.sbt","sbt",[237,687,688,693,698],{"__ignoreMap":235},[240,689,690],{"class":242,"line":243},[240,691,692],{},"libraryDependencies += \"io.github.yuri4n\" %% \"tui4s-widgets\" % \"\u003Cversion>\"\n",[240,694,695],{"class":242,"line":250},[240,696,697],{},"\u002F\u002F a Scala.js or a cross-built project:\n",[240,699,700],{"class":242,"line":290},[240,701,702],{},"libraryDependencies += \"io.github.yuri4n\" %%% \"tui4s-widgets\" % \"\u003Cversion>\"\n",[704,705,707],"h2",{"id":706},"the-rules-of-each-widget","The rules of each widget",[709,710,711,742,757,771],"ul",{},[712,713,714,715,718,719,722,723,726,727,730,731,734,735,738,739,741],"li",{},"A ",[237,716,717],{},"Model"," says who owns the value. ",[237,720,721],{},"Model.Local(initial)",": the widget owns it. ",[237,724,725],{},"Model.Bound(ref)",": the parent owns a ",[237,728,729],{},"SignalRef",", and the widget writes it before ",[237,732,733],{},"onChange",". ",[237,736,737],{},"Model.Controlled(signal)",": the parent owns a signal, and ",[237,740,733],{}," asks; the parent accepts or rejects.",[712,743,744,745,748,749,752,753,756],{},"A widget that only builds a UI is a ",[237,746,747],{},"UI",". A widget that allocates state is ",[237,750,751],{},"UI \u003C Sync",". A widget that starts a fiber is ",[237,754,755],{},"UI \u003C (Sync & Scope)",". Build a widget once, where its state lives.",[712,758,759,760,500,763,766,767,770],{},"The Scaladoc of each widget that takes the focus has its keys. A layer (a modal, a menu, the palette) has ",[237,761,762],{},"focusTrap",[237,764,765],{},"focusAuto"," and ",[237,768,769],{},"focusRestore",". Esc closes it.",[712,772,773,774,777,778,781,782,785,786,500,789,792],{},"The colours are the ",[237,775,776],{},"--tui4s-*"," custom properties. Give ",[237,779,780],{},"Colors.defaults"," to the run (",[237,783,784],{},"override def stylesheet = Colors.defaults","). With no value, a widget keeps its marks (",[237,787,788],{},"›",[237,790,791],{},"[x]",", bold text) and shows no colour.",[704,794,796],{"id":795},"data","Data",[673,798,799,800,500,803,500,806,766,809,275],{},"The charts, ",[237,801,802],{},"ListView",[237,804,805],{},"DataTable",[237,807,808],{},"TreeView",[237,810,811],{},"Pager",[229,813,815],{"className":231,"code":814,"filename":233,"language":234,"meta":235,"style":235},"    \u002F** The data widgets: the charts, a list, a table, a tree and a pager. *\u002F\n    def data(using Frame): UI \u003C (Sync & Scope) =\n      for\n          fruits  \u003C-\n            Signal.initRef(Chunk(\"apple\", \"banana\", \"cherry\", \"date\", \"elder\"))\n          list    \u003C- ListView(fruits, identity[String], height = 3)(span(_))\n          table   \u003C- DataTable(\n                       Signal.initConst(langs),\n                       _.name,\n                       DataTable.Column(\"Name\", _.name, DataTable.Width.Fixed(8)),\n                       DataTable.Column(\n                         \"Year\",\n                         _.year.toString,\n                         order = Present(Ordering.by(_.year)),\n                       ),\n                       DataTable.Column(\"Kind\", _.kind, DataTable.Width.Fill),\n                     )(height = 3)\n          tree    \u003C- TreeView(\n                       Signal.initConst(\n                         Chunk(\n                           TreeView.Node(\n                             \"src\",\n                             Chunk(\n                               TreeView.Node(\"Main.scala\"),\n                               TreeView.Node(\"Ui.scala\"),\n                             ),\n                           ),\n                           TreeView.Node(\"README.md\"),\n                         ),\n                       ),\n                       identity[String],\n                       height = 4,\n                     )(span(_))\n          log     \u003C- Pager(\n                       Signal.initConst(\n                         Chunk.from((1 to 40).map(i => s\"event $i: served\")),\n                       ),\n                       height = 3,\n                     )\n          spinner \u003C- Spinner(label = \"working\")\n      yield div.style(_.gap(1.px))(\n        div.style(_.row.gap(2.px))(\n          Sparkline(Signal.initConst(Chunk(0.1, 0.4, 0.9, 0.6, 0.3))),\n          Gauge(Signal.initConst(0.42), width = 10),\n          ProgressBar(Signal.initConst(3), Signal.initConst(10), width = 10),\n          spinner,\n        ),\n        BarChart(\n          Signal.initConst(Chunk(\"Mon\" -> 3.0, \"Tue\" -> 7.5, \"Wed\" -> 5.0)),\n          width = 20,\n        ),\n        labeled(\"ListView (↑\u002F↓, PgUp\u002FPgDn, Home\u002FEnd)\", list),\n        labeled(\"DataTable (1 to 3 sort)\", table),\n        labeled(\"TreeView (→ opens, ← closes)\", tree),\n        labeled(\"Pager (f follows, n\u002FN next match)\", log),\n      )\n",[237,816,817,822,861,865,873,931,958,970,978,983,1024,1034,1047,1052,1070,1075,1108,1120,1132,1139,1146,1159,1172,1180,1201,1221,1227,1233,1253,1259,1264,1275,1288,1294,1307,1314,1355,1360,1371,1377,1402,1413,1424,1468,1493,1526,1532,1538,1546,1601,1614,1619,1634,1649,1664,1679],{"__ignoreMap":235},[240,818,819],{"class":242,"line":243},[240,820,821],{"class":246},"    \u002F** The data widgets: the charts, a list, a table, a tree and a pager. *\u002F\n",[240,823,824,826,829,831,833,835,837,839,841,843,846,849,852,855,858],{"class":242,"line":250},[240,825,254],{"class":253},[240,827,828],{"class":257}," data",[240,830,262],{"class":261},[240,832,265],{"class":253},[240,834,269],{"class":268},[240,836,272],{"class":261},[240,838,275],{"class":253},[240,840,278],{"class":268},[240,842,281],{"class":253},[240,844,845],{"class":261}," (",[240,847,848],{"class":268},"Sync",[240,850,851],{"class":253}," &",[240,853,854],{"class":268}," Scope",[240,856,857],{"class":261},") ",[240,859,860],{"class":253},"=\n",[240,862,863],{"class":242,"line":290},[240,864,294],{"class":293},[240,866,867,870],{"class":242,"line":297},[240,868,869],{"class":261},"          fruits  ",[240,871,872],{"class":253},"\u003C-\n",[240,874,875,878,881,884,886,888,891,893,895,897,900,902,904,906,909,911,913,915,918,920,922,924,927,929],{"class":242,"line":312},[240,876,877],{"class":268},"            Signal",[240,879,880],{"class":261},".initRef(",[240,882,883],{"class":268},"Chunk",[240,885,262],{"class":261},[240,887,331],{"class":253},[240,889,890],{"class":327},"apple",[240,892,331],{"class":253},[240,894,500],{"class":261},[240,896,331],{"class":253},[240,898,899],{"class":327},"banana",[240,901,331],{"class":253},[240,903,500],{"class":261},[240,905,331],{"class":253},[240,907,908],{"class":327},"cherry",[240,910,331],{"class":253},[240,912,500],{"class":261},[240,914,331],{"class":253},[240,916,917],{"class":327},"date",[240,919,331],{"class":253},[240,921,500],{"class":261},[240,923,331],{"class":253},[240,925,926],{"class":327},"elder",[240,928,331],{"class":253},[240,930,397],{"class":261},[240,932,933,936,938,941,944,947,950,952,955],{"class":242,"line":347},[240,934,935],{"class":261},"          list    ",[240,937,303],{"class":253},[240,939,940],{"class":268}," ListView",[240,942,943],{"class":261},"(fruits, identity[",[240,945,946],{"class":268},"String",[240,948,949],{"class":261},"], height ",[240,951,321],{"class":253},[240,953,954],{"class":393}," 3",[240,956,957],{"class":261},")(span(_))\n",[240,959,960,963,965,968],{"class":242,"line":374},[240,961,962],{"class":261},"          table   ",[240,964,303],{"class":253},[240,966,967],{"class":268}," DataTable",[240,969,309],{"class":261},[240,971,972,975],{"class":242,"line":400},[240,973,974],{"class":268},"                       Signal",[240,976,977],{"class":261},".initConst(langs),\n",[240,979,980],{"class":242,"line":413},[240,981,982],{"class":261},"                       _.name,\n",[240,984,985,988,990,993,995,997,1000,1002,1005,1007,1009,1012,1014,1017,1019,1022],{"class":242,"line":445},[240,986,987],{"class":268},"                       DataTable",[240,989,385],{"class":261},[240,991,992],{"class":268},"Column",[240,994,262],{"class":261},[240,996,331],{"class":253},[240,998,999],{"class":327},"Name",[240,1001,331],{"class":253},[240,1003,1004],{"class":261},", _.name, ",[240,1006,805],{"class":268},[240,1008,385],{"class":261},[240,1010,1011],{"class":268},"Width",[240,1013,385],{"class":261},[240,1015,1016],{"class":268},"Fixed",[240,1018,262],{"class":261},[240,1020,1021],{"class":393},"8",[240,1023,344],{"class":261},[240,1025,1026,1028,1030,1032],{"class":242,"line":474},[240,1027,987],{"class":268},[240,1029,385],{"class":261},[240,1031,992],{"class":268},[240,1033,309],{"class":261},[240,1035,1036,1039,1042,1044],{"class":242,"line":480},[240,1037,1038],{"class":253},"                         \"",[240,1040,1041],{"class":327},"Year",[240,1043,331],{"class":253},[240,1045,1046],{"class":261},",\n",[240,1048,1049],{"class":242,"line":522},[240,1050,1051],{"class":261},"                         _.year.toString,\n",[240,1053,1054,1057,1059,1062,1064,1067],{"class":242,"line":569},[240,1055,1056],{"class":261},"                         order ",[240,1058,321],{"class":253},[240,1060,1061],{"class":268}," Present",[240,1063,262],{"class":261},[240,1065,1066],{"class":268},"Ordering",[240,1068,1069],{"class":261},".by(_.year)),\n",[240,1071,1072],{"class":242,"line":575},[240,1073,1074],{"class":261},"                       ),\n",[240,1076,1077,1079,1081,1083,1085,1087,1090,1092,1095,1097,1099,1101,1103,1106],{"class":242,"line":590},[240,1078,987],{"class":268},[240,1080,385],{"class":261},[240,1082,992],{"class":268},[240,1084,262],{"class":261},[240,1086,331],{"class":253},[240,1088,1089],{"class":327},"Kind",[240,1091,331],{"class":253},[240,1093,1094],{"class":261},", _.kind, ",[240,1096,805],{"class":268},[240,1098,385],{"class":261},[240,1100,1011],{"class":268},[240,1102,385],{"class":261},[240,1104,1105],{"class":268},"Fill",[240,1107,566],{"class":261},[240,1109,1110,1113,1115,1117],{"class":242,"line":618},[240,1111,1112],{"class":261},"                     )(height ",[240,1114,321],{"class":253},[240,1116,954],{"class":393},[240,1118,1119],{"class":261},")\n",[240,1121,1122,1125,1127,1130],{"class":242,"line":634},[240,1123,1124],{"class":261},"          tree    ",[240,1126,303],{"class":253},[240,1128,1129],{"class":268}," TreeView",[240,1131,309],{"class":261},[240,1133,1134,1136],{"class":242,"line":649},[240,1135,974],{"class":268},[240,1137,1138],{"class":261},".initConst(\n",[240,1140,1141,1144],{"class":242,"line":664},[240,1142,1143],{"class":268},"                         Chunk",[240,1145,309],{"class":261},[240,1147,1149,1152,1154,1157],{"class":242,"line":1148},21,[240,1150,1151],{"class":268},"                           TreeView",[240,1153,385],{"class":261},[240,1155,1156],{"class":268},"Node",[240,1158,309],{"class":261},[240,1160,1162,1165,1168,1170],{"class":242,"line":1161},22,[240,1163,1164],{"class":253},"                             \"",[240,1166,1167],{"class":327},"src",[240,1169,331],{"class":253},[240,1171,1046],{"class":261},[240,1173,1175,1178],{"class":242,"line":1174},23,[240,1176,1177],{"class":268},"                             Chunk",[240,1179,309],{"class":261},[240,1181,1183,1186,1188,1190,1192,1194,1197,1199],{"class":242,"line":1182},24,[240,1184,1185],{"class":268},"                               TreeView",[240,1187,385],{"class":261},[240,1189,1156],{"class":268},[240,1191,262],{"class":261},[240,1193,331],{"class":253},[240,1195,1196],{"class":327},"Main.scala",[240,1198,331],{"class":253},[240,1200,566],{"class":261},[240,1202,1204,1206,1208,1210,1212,1214,1217,1219],{"class":242,"line":1203},25,[240,1205,1185],{"class":268},[240,1207,385],{"class":261},[240,1209,1156],{"class":268},[240,1211,262],{"class":261},[240,1213,331],{"class":253},[240,1215,1216],{"class":327},"Ui.scala",[240,1218,331],{"class":253},[240,1220,566],{"class":261},[240,1222,1224],{"class":242,"line":1223},26,[240,1225,1226],{"class":261},"                             ),\n",[240,1228,1230],{"class":242,"line":1229},27,[240,1231,1232],{"class":261},"                           ),\n",[240,1234,1236,1238,1240,1242,1244,1246,1249,1251],{"class":242,"line":1235},28,[240,1237,1151],{"class":268},[240,1239,385],{"class":261},[240,1241,1156],{"class":268},[240,1243,262],{"class":261},[240,1245,331],{"class":253},[240,1247,1248],{"class":327},"README.md",[240,1250,331],{"class":253},[240,1252,566],{"class":261},[240,1254,1256],{"class":242,"line":1255},29,[240,1257,1258],{"class":261},"                         ),\n",[240,1260,1262],{"class":242,"line":1261},30,[240,1263,1074],{"class":261},[240,1265,1267,1270,1272],{"class":242,"line":1266},31,[240,1268,1269],{"class":261},"                       identity[",[240,1271,946],{"class":268},[240,1273,1274],{"class":261},"],\n",[240,1276,1278,1281,1283,1286],{"class":242,"line":1277},32,[240,1279,1280],{"class":261},"                       height ",[240,1282,321],{"class":253},[240,1284,1285],{"class":393}," 4",[240,1287,1046],{"class":261},[240,1289,1291],{"class":242,"line":1290},33,[240,1292,1293],{"class":261},"                     )(span(_))\n",[240,1295,1297,1300,1302,1305],{"class":242,"line":1296},34,[240,1298,1299],{"class":261},"          log     ",[240,1301,303],{"class":253},[240,1303,1304],{"class":268}," Pager",[240,1306,309],{"class":261},[240,1308,1310,1312],{"class":242,"line":1309},35,[240,1311,974],{"class":268},[240,1313,1138],{"class":261},[240,1315,1317,1319,1322,1324,1327,1329,1332,1334,1337,1339,1342,1345,1348,1351,1353],{"class":242,"line":1316},36,[240,1318,1143],{"class":268},[240,1320,1321],{"class":261},".from((",[240,1323,584],{"class":393},[240,1325,1326],{"class":261}," to ",[240,1328,394],{"class":393},[240,1330,1331],{"class":261},").map(i ",[240,1333,533],{"class":253},[240,1335,1336],{"class":253}," s",[240,1338,331],{"class":253},[240,1340,1341],{"class":327},"event ",[240,1343,1344],{"class":253},"$",[240,1346,1347],{"class":261},"i",[240,1349,1350],{"class":327},": served",[240,1352,331],{"class":253},[240,1354,344],{"class":261},[240,1356,1358],{"class":242,"line":1357},37,[240,1359,1074],{"class":261},[240,1361,1363,1365,1367,1369],{"class":242,"line":1362},38,[240,1364,1280],{"class":261},[240,1366,321],{"class":253},[240,1368,954],{"class":393},[240,1370,1046],{"class":261},[240,1372,1374],{"class":242,"line":1373},39,[240,1375,1376],{"class":261},"                     )\n",[240,1378,1380,1383,1385,1388,1391,1393,1395,1398,1400],{"class":242,"line":1379},40,[240,1381,1382],{"class":261},"          spinner ",[240,1384,303],{"class":253},[240,1386,1387],{"class":268}," Spinner",[240,1389,1390],{"class":261},"(label ",[240,1392,321],{"class":253},[240,1394,324],{"class":253},[240,1396,1397],{"class":327},"working",[240,1399,331],{"class":253},[240,1401,1119],{"class":261},[240,1403,1405,1407,1409,1411],{"class":242,"line":1404},41,[240,1406,578],{"class":293},[240,1408,581],{"class":261},[240,1410,584],{"class":393},[240,1412,587],{"class":261},[240,1414,1416,1419,1422],{"class":242,"line":1415},42,[240,1417,1418],{"class":261},"        div.style(_.row.gap(",[240,1420,1421],{"class":393},"2",[240,1423,587],{"class":261},[240,1425,1427,1430,1432,1435,1438,1440,1442,1445,1447,1450,1452,1455,1457,1460,1462,1465],{"class":242,"line":1426},43,[240,1428,1429],{"class":268},"          Sparkline",[240,1431,262],{"class":261},[240,1433,1434],{"class":268},"Signal",[240,1436,1437],{"class":261},".initConst(",[240,1439,883],{"class":268},[240,1441,262],{"class":261},[240,1443,1444],{"class":393},"0.1",[240,1446,500],{"class":261},[240,1448,1449],{"class":393},"0.4",[240,1451,500],{"class":261},[240,1453,1454],{"class":393},"0.9",[240,1456,500],{"class":261},[240,1458,1459],{"class":393},"0.6",[240,1461,500],{"class":261},[240,1463,1464],{"class":393},"0.3",[240,1466,1467],{"class":261},"))),\n",[240,1469,1471,1474,1476,1478,1480,1483,1486,1488,1491],{"class":242,"line":1470},44,[240,1472,1473],{"class":268},"          Gauge",[240,1475,262],{"class":261},[240,1477,1434],{"class":268},[240,1479,1437],{"class":261},[240,1481,1482],{"class":393},"0.42",[240,1484,1485],{"class":261},"), width ",[240,1487,321],{"class":253},[240,1489,1490],{"class":393}," 10",[240,1492,566],{"class":261},[240,1494,1496,1499,1501,1503,1505,1508,1511,1513,1515,1518,1520,1522,1524],{"class":242,"line":1495},45,[240,1497,1498],{"class":268},"          ProgressBar",[240,1500,262],{"class":261},[240,1502,1434],{"class":268},[240,1504,1437],{"class":261},[240,1506,1507],{"class":393},"3",[240,1509,1510],{"class":261},"), ",[240,1512,1434],{"class":268},[240,1514,1437],{"class":261},[240,1516,1517],{"class":393},"10",[240,1519,1485],{"class":261},[240,1521,321],{"class":253},[240,1523,1490],{"class":393},[240,1525,566],{"class":261},[240,1527,1529],{"class":242,"line":1528},46,[240,1530,1531],{"class":261},"          spinner,\n",[240,1533,1535],{"class":242,"line":1534},47,[240,1536,1537],{"class":261},"        ),\n",[240,1539,1541,1544],{"class":242,"line":1540},48,[240,1542,1543],{"class":268},"        BarChart",[240,1545,309],{"class":261},[240,1547,1549,1552,1554,1556,1558,1560,1563,1565,1568,1571,1573,1575,1578,1580,1582,1585,1587,1589,1592,1594,1596,1599],{"class":242,"line":1548},49,[240,1550,1551],{"class":268},"          Signal",[240,1553,1437],{"class":261},[240,1555,883],{"class":268},[240,1557,262],{"class":261},[240,1559,331],{"class":253},[240,1561,1562],{"class":327},"Mon",[240,1564,331],{"class":253},[240,1566,1567],{"class":253}," ->",[240,1569,1570],{"class":393}," 3.0",[240,1572,500],{"class":261},[240,1574,331],{"class":253},[240,1576,1577],{"class":327},"Tue",[240,1579,331],{"class":253},[240,1581,1567],{"class":253},[240,1583,1584],{"class":393}," 7.5",[240,1586,500],{"class":261},[240,1588,331],{"class":253},[240,1590,1591],{"class":327},"Wed",[240,1593,331],{"class":253},[240,1595,1567],{"class":253},[240,1597,1598],{"class":393}," 5.0",[240,1600,344],{"class":261},[240,1602,1604,1607,1609,1612],{"class":242,"line":1603},50,[240,1605,1606],{"class":261},"          width ",[240,1608,321],{"class":253},[240,1610,1611],{"class":393}," 20",[240,1613,1046],{"class":261},[240,1615,1617],{"class":242,"line":1616},51,[240,1618,1537],{"class":261},[240,1620,1622,1624,1626,1629,1631],{"class":242,"line":1621},52,[240,1623,621],{"class":261},[240,1625,331],{"class":253},[240,1627,1628],{"class":327},"ListView (↑\u002F↓, PgUp\u002FPgDn, Home\u002FEnd)",[240,1630,331],{"class":253},[240,1632,1633],{"class":261},", list),\n",[240,1635,1637,1639,1641,1644,1646],{"class":242,"line":1636},53,[240,1638,621],{"class":261},[240,1640,331],{"class":253},[240,1642,1643],{"class":327},"DataTable (1 to 3 sort)",[240,1645,331],{"class":253},[240,1647,1648],{"class":261},", table),\n",[240,1650,1652,1654,1656,1659,1661],{"class":242,"line":1651},54,[240,1653,621],{"class":261},[240,1655,331],{"class":253},[240,1657,1658],{"class":327},"TreeView (→ opens, ← closes)",[240,1660,331],{"class":253},[240,1662,1663],{"class":261},", tree),\n",[240,1665,1667,1669,1671,1674,1676],{"class":242,"line":1666},55,[240,1668,621],{"class":261},[240,1670,331],{"class":253},[240,1672,1673],{"class":327},"Pager (f follows, n\u002FN next match)",[240,1675,331],{"class":253},[240,1677,1678],{"class":261},", log),\n",[240,1680,1682],{"class":242,"line":1681},56,[240,1683,667],{"class":261},[704,1685,1687],{"id":1686},"input","Input",[673,1689,1690,500,1693,500,1696,500,1699,500,1702,766,1705,275],{},[237,1691,1692],{},"SearchBox",[237,1694,1695],{},"Autocomplete",[237,1697,1698],{},"Checklist",[237,1700,1701],{},"RadioGroup",[237,1703,1704],{},"NumberStepper",[237,1706,1707],{},"DateField",[229,1709,1711],{"className":231,"code":1710,"filename":233,"language":234,"meta":235,"style":235},"    \u002F** The input widgets: a search box, an autocomplete, a checklist, a radio\n      * group, a number stepper and a date field.\n      *\u002F\n    def input(using Frame): UI \u003C (Sync & Scope) =\n      for\n          search \u003C- SearchBox()\n          auto   \u003C- Autocomplete(\n                      Signal.initConst(langs.map(_.name)),\n                      matcher = Autocomplete.Match.Fuzzy,\n                      placeholder = \"a language\",\n                    )\n          tasks  \u003C- Checklist(\n                      Signal.initConst(\n                        Chunk(\"write the widgets\", \"write the tests\"),\n                      ),\n                      identity[String],\n                      height = 2,\n                    )(span(_))\n          size   \u003C- RadioGroup(\"Small\", \"Medium\", \"Large\")()\n          count  \u003C- NumberStepper(value = Model.Local(3), min = 0, max = 10)\n          date   \u003C- DateField()\n      yield div.style(_.gap(1.px))(\n        labeled(\n          \"SearchBox\",\n          div(search.view, span(search.query.map(q => s\"query: $q\"))),\n        ),\n        labeled(\"Autocomplete (↓, Enter)\", auto),\n        labeled(\"Checklist (Space)\", tasks),\n        labeled(\"RadioGroup (↑\u002F↓)\", size),\n        labeled(\"NumberStepper (↑\u002F↓, PgUp\u002FPgDn)\", count),\n        labeled(\"DateField\", date),\n      )\n",[237,1712,1713,1718,1723,1728,1761,1765,1778,1790,1798,1819,1835,1840,1852,1858,1883,1888,1897,1909,1914,1954,1996,2008,2018,2023,2034,2057,2061,2075,2089,2103,2117,2130],{"__ignoreMap":235},[240,1714,1715],{"class":242,"line":243},[240,1716,1717],{"class":246},"    \u002F** The input widgets: a search box, an autocomplete, a checklist, a radio\n",[240,1719,1720],{"class":242,"line":250},[240,1721,1722],{"class":246},"      * group, a number stepper and a date field.\n",[240,1724,1725],{"class":242,"line":290},[240,1726,1727],{"class":246},"      *\u002F\n",[240,1729,1730,1732,1735,1737,1739,1741,1743,1745,1747,1749,1751,1753,1755,1757,1759],{"class":242,"line":297},[240,1731,254],{"class":253},[240,1733,1734],{"class":257}," input",[240,1736,262],{"class":261},[240,1738,265],{"class":253},[240,1740,269],{"class":268},[240,1742,272],{"class":261},[240,1744,275],{"class":253},[240,1746,278],{"class":268},[240,1748,281],{"class":253},[240,1750,845],{"class":261},[240,1752,848],{"class":268},[240,1754,851],{"class":253},[240,1756,854],{"class":268},[240,1758,857],{"class":261},[240,1760,860],{"class":253},[240,1762,1763],{"class":242,"line":312},[240,1764,294],{"class":293},[240,1766,1767,1770,1772,1775],{"class":242,"line":347},[240,1768,1769],{"class":261},"          search ",[240,1771,303],{"class":253},[240,1773,1774],{"class":268}," SearchBox",[240,1776,1777],{"class":261},"()\n",[240,1779,1780,1783,1785,1788],{"class":242,"line":374},[240,1781,1782],{"class":261},"          auto   ",[240,1784,303],{"class":253},[240,1786,1787],{"class":268}," Autocomplete",[240,1789,309],{"class":261},[240,1791,1792,1795],{"class":242,"line":400},[240,1793,1794],{"class":268},"                      Signal",[240,1796,1797],{"class":261},".initConst(langs.map(_.name)),\n",[240,1799,1800,1803,1805,1807,1809,1812,1814,1817],{"class":242,"line":413},[240,1801,1802],{"class":261},"                      matcher ",[240,1804,321],{"class":253},[240,1806,1787],{"class":268},[240,1808,385],{"class":261},[240,1810,1811],{"class":268},"Match",[240,1813,385],{"class":261},[240,1815,1816],{"class":268},"Fuzzy",[240,1818,1046],{"class":261},[240,1820,1821,1824,1826,1828,1831,1833],{"class":242,"line":445},[240,1822,1823],{"class":261},"                      placeholder ",[240,1825,321],{"class":253},[240,1827,324],{"class":253},[240,1829,1830],{"class":327},"a language",[240,1832,331],{"class":253},[240,1834,1046],{"class":261},[240,1836,1837],{"class":242,"line":474},[240,1838,1839],{"class":261},"                    )\n",[240,1841,1842,1845,1847,1850],{"class":242,"line":480},[240,1843,1844],{"class":261},"          tasks  ",[240,1846,303],{"class":253},[240,1848,1849],{"class":268}," Checklist",[240,1851,309],{"class":261},[240,1853,1854,1856],{"class":242,"line":522},[240,1855,1794],{"class":268},[240,1857,1138],{"class":261},[240,1859,1860,1863,1865,1867,1870,1872,1874,1876,1879,1881],{"class":242,"line":569},[240,1861,1862],{"class":268},"                        Chunk",[240,1864,262],{"class":261},[240,1866,331],{"class":253},[240,1868,1869],{"class":327},"write the widgets",[240,1871,331],{"class":253},[240,1873,500],{"class":261},[240,1875,331],{"class":253},[240,1877,1878],{"class":327},"write the tests",[240,1880,331],{"class":253},[240,1882,566],{"class":261},[240,1884,1885],{"class":242,"line":575},[240,1886,1887],{"class":261},"                      ),\n",[240,1889,1890,1893,1895],{"class":242,"line":590},[240,1891,1892],{"class":261},"                      identity[",[240,1894,946],{"class":268},[240,1896,1274],{"class":261},[240,1898,1899,1902,1904,1907],{"class":242,"line":618},[240,1900,1901],{"class":261},"                      height ",[240,1903,321],{"class":253},[240,1905,1906],{"class":393}," 2",[240,1908,1046],{"class":261},[240,1910,1911],{"class":242,"line":634},[240,1912,1913],{"class":261},"                    )(span(_))\n",[240,1915,1916,1919,1921,1924,1926,1928,1931,1933,1935,1937,1940,1942,1944,1946,1949,1951],{"class":242,"line":649},[240,1917,1918],{"class":261},"          size   ",[240,1920,303],{"class":253},[240,1922,1923],{"class":268}," RadioGroup",[240,1925,262],{"class":261},[240,1927,331],{"class":253},[240,1929,1930],{"class":327},"Small",[240,1932,331],{"class":253},[240,1934,500],{"class":261},[240,1936,331],{"class":253},[240,1938,1939],{"class":327},"Medium",[240,1941,331],{"class":253},[240,1943,500],{"class":261},[240,1945,331],{"class":253},[240,1947,1948],{"class":327},"Large",[240,1950,331],{"class":253},[240,1952,1953],{"class":261},")()\n",[240,1955,1956,1959,1961,1964,1967,1969,1971,1973,1975,1977,1979,1982,1984,1987,1990,1992,1994],{"class":242,"line":664},[240,1957,1958],{"class":261},"          count  ",[240,1960,303],{"class":253},[240,1962,1963],{"class":268}," NumberStepper",[240,1965,1966],{"class":261},"(value ",[240,1968,321],{"class":253},[240,1970,382],{"class":268},[240,1972,385],{"class":261},[240,1974,388],{"class":268},[240,1976,262],{"class":261},[240,1978,1507],{"class":393},[240,1980,1981],{"class":261},"), min ",[240,1983,321],{"class":253},[240,1985,1986],{"class":393}," 0",[240,1988,1989],{"class":261},", max ",[240,1991,321],{"class":253},[240,1993,1490],{"class":393},[240,1995,1119],{"class":261},[240,1997,1998,2001,2003,2006],{"class":242,"line":1148},[240,1999,2000],{"class":261},"          date   ",[240,2002,303],{"class":253},[240,2004,2005],{"class":268}," DateField",[240,2007,1777],{"class":261},[240,2009,2010,2012,2014,2016],{"class":242,"line":1161},[240,2011,578],{"class":293},[240,2013,581],{"class":261},[240,2015,584],{"class":393},[240,2017,587],{"class":261},[240,2019,2020],{"class":242,"line":1174},[240,2021,2022],{"class":261},"        labeled(\n",[240,2024,2025,2028,2030,2032],{"class":242,"line":1182},[240,2026,2027],{"class":253},"          \"",[240,2029,1692],{"class":327},[240,2031,331],{"class":253},[240,2033,1046],{"class":261},[240,2035,2036,2039,2041,2043,2045,2048,2050,2053,2055],{"class":242,"line":1203},[240,2037,2038],{"class":261},"          div(search.view, span(search.query.map(q ",[240,2040,533],{"class":253},[240,2042,1336],{"class":253},[240,2044,331],{"class":253},[240,2046,2047],{"class":327},"query: ",[240,2049,1344],{"class":253},[240,2051,2052],{"class":261},"q",[240,2054,331],{"class":253},[240,2056,1467],{"class":261},[240,2058,2059],{"class":242,"line":1223},[240,2060,1537],{"class":261},[240,2062,2063,2065,2067,2070,2072],{"class":242,"line":1229},[240,2064,621],{"class":261},[240,2066,331],{"class":253},[240,2068,2069],{"class":327},"Autocomplete (↓, Enter)",[240,2071,331],{"class":253},[240,2073,2074],{"class":261},", auto),\n",[240,2076,2077,2079,2081,2084,2086],{"class":242,"line":1235},[240,2078,621],{"class":261},[240,2080,331],{"class":253},[240,2082,2083],{"class":327},"Checklist (Space)",[240,2085,331],{"class":253},[240,2087,2088],{"class":261},", tasks),\n",[240,2090,2091,2093,2095,2098,2100],{"class":242,"line":1255},[240,2092,621],{"class":261},[240,2094,331],{"class":253},[240,2096,2097],{"class":327},"RadioGroup (↑\u002F↓)",[240,2099,331],{"class":253},[240,2101,2102],{"class":261},", size),\n",[240,2104,2105,2107,2109,2112,2114],{"class":242,"line":1261},[240,2106,621],{"class":261},[240,2108,331],{"class":253},[240,2110,2111],{"class":327},"NumberStepper (↑\u002F↓, PgUp\u002FPgDn)",[240,2113,331],{"class":253},[240,2115,2116],{"class":261},", count),\n",[240,2118,2119,2121,2123,2125,2127],{"class":242,"line":1266},[240,2120,621],{"class":261},[240,2122,331],{"class":253},[240,2124,1707],{"class":327},[240,2126,331],{"class":253},[240,2128,2129],{"class":261},", date),\n",[240,2131,2132],{"class":242,"line":1277},[240,2133,667],{"class":261},[704,2135,2137],{"id":2136},"feedback","Feedback",[673,2139,2140,500,2143,500,2146,500,2149,500,2152,766,2155,2158],{},[237,2141,2142],{},"StatusBar",[237,2144,2145],{},"KeyHints",[237,2147,2148],{},"CommandPalette",[237,2150,2151],{},"Modal.confirm",[237,2153,2154],{},"Modal.prompt",[237,2156,2157],{},"Toasts",". The app builds the layers once, and its root holds their views:",[229,2160,2162],{"className":231,"code":2161,"filename":233,"language":234,"meta":235,"style":235},"    \u002F** The feedback widgets: a status bar, key hints, the command palette, a\n      * confirm, a prompt and toasts.\n      *\u002F\n    def feedback(layers: Layers)(using Frame): UI \u003C Sync =\n      for\n          answer \u003C- Signal.initRef(\"no answer yet\")\n          name   \u003C- Signal.initRef(\"notes.txt\")\n      yield div.style(_.gap(1.px))(\n        labeled(\n          \"StatusBar\",\n          StatusBar(\n            Signal.initConst(\"gallery.scala  120 lines\"),\n            right = span(\"UTF-8\"),\n          ),\n        ),\n        labeled(\n          \"KeyHints\",\n          KeyHints.of(Chunk(\"↑\u002Fk\" -> \"up\", \"↓\u002Fj\" -> \"down\", \"Enter\" -> \"open\")),\n        ),\n        labeled(\n          \"CommandPalette\",\n          div.style(_.row)(\n            button(\"Open the palette (Ctrl-P)\").onClick(layers.palette.open),\n          ),\n        ),\n        labeled(\n          \"Modal.confirm and Modal.prompt\",\n          div.style(_.row.gap(2.px))(\n            button(\"Delete\").onClick(\n              layers.confirm.ask(\"Delete the file?\")(yes =>\n                answer.set(if yes then \"deleted\" else \"kept\"),\n              ),\n            ),\n            span(answer),\n            button(\"Rename\").onClick(\n              layers.prompt.ask(\"New name?\")(n => n.fold(Kyo.unit)(name.set)),\n            ),\n            span(name.map(n => s\"name: $n\")),\n          ),\n        ),\n        labeled(\n          \"Toasts\",\n          div.style(_.row)(\n            button(\"Show a toast\").onClick(\n              layers.toasts.show(\"Saved\", Toasts.Level.Success),\n            ),\n          ),\n        ),\n      )\n",[237,2163,2164,2169,2174,2178,2216,2220,2241,2261,2271,2275,2285,2292,2307,2325,2330,2334,2338,2348,2414,2418,2422,2432,2437,2452,2456,2460,2464,2475,2484,2498,2516,2549,2554,2559,2564,2577,2603,2607,2630,2634,2638,2642,2652,2656,2669,2697,2701,2705,2709],{"__ignoreMap":235},[240,2165,2166],{"class":242,"line":243},[240,2167,2168],{"class":246},"    \u002F** The feedback widgets: a status bar, key hints, the command palette, a\n",[240,2170,2171],{"class":242,"line":250},[240,2172,2173],{"class":246},"      * confirm, a prompt and toasts.\n",[240,2175,2176],{"class":242,"line":290},[240,2177,1727],{"class":246},[240,2179,2180,2182,2185,2187,2191,2194,2197,2200,2202,2204,2206,2208,2210,2212,2214],{"class":242,"line":297},[240,2181,254],{"class":253},[240,2183,2184],{"class":257}," feedback",[240,2186,262],{"class":261},[240,2188,2190],{"class":2189},"sHdIc","layers",[240,2192,2193],{"class":261},": ",[240,2195,2196],{"class":268},"Layers",[240,2198,2199],{"class":261},")(",[240,2201,265],{"class":253},[240,2203,269],{"class":268},[240,2205,272],{"class":261},[240,2207,275],{"class":253},[240,2209,278],{"class":268},[240,2211,281],{"class":253},[240,2213,284],{"class":268},[240,2215,287],{"class":253},[240,2217,2218],{"class":242,"line":312},[240,2219,294],{"class":293},[240,2221,2222,2225,2227,2230,2232,2234,2237,2239],{"class":242,"line":347},[240,2223,2224],{"class":261},"          answer ",[240,2226,303],{"class":253},[240,2228,2229],{"class":268}," Signal",[240,2231,880],{"class":261},[240,2233,331],{"class":253},[240,2235,2236],{"class":327},"no answer yet",[240,2238,331],{"class":253},[240,2240,1119],{"class":261},[240,2242,2243,2246,2248,2250,2252,2254,2257,2259],{"class":242,"line":374},[240,2244,2245],{"class":261},"          name   ",[240,2247,303],{"class":253},[240,2249,2229],{"class":268},[240,2251,880],{"class":261},[240,2253,331],{"class":253},[240,2255,2256],{"class":327},"notes.txt",[240,2258,331],{"class":253},[240,2260,1119],{"class":261},[240,2262,2263,2265,2267,2269],{"class":242,"line":400},[240,2264,578],{"class":293},[240,2266,581],{"class":261},[240,2268,584],{"class":393},[240,2270,587],{"class":261},[240,2272,2273],{"class":242,"line":413},[240,2274,2022],{"class":261},[240,2276,2277,2279,2281,2283],{"class":242,"line":445},[240,2278,2027],{"class":253},[240,2280,2142],{"class":327},[240,2282,331],{"class":253},[240,2284,1046],{"class":261},[240,2286,2287,2290],{"class":242,"line":474},[240,2288,2289],{"class":268},"          StatusBar",[240,2291,309],{"class":261},[240,2293,2294,2296,2298,2300,2303,2305],{"class":242,"line":480},[240,2295,877],{"class":268},[240,2297,1437],{"class":261},[240,2299,331],{"class":253},[240,2301,2302],{"class":327},"gallery.scala  120 lines",[240,2304,331],{"class":253},[240,2306,566],{"class":261},[240,2308,2309,2312,2314,2316,2318,2321,2323],{"class":242,"line":522},[240,2310,2311],{"class":261},"            right ",[240,2313,321],{"class":253},[240,2315,536],{"class":261},[240,2317,331],{"class":253},[240,2319,2320],{"class":327},"UTF-8",[240,2322,331],{"class":253},[240,2324,566],{"class":261},[240,2326,2327],{"class":242,"line":569},[240,2328,2329],{"class":261},"          ),\n",[240,2331,2332],{"class":242,"line":575},[240,2333,1537],{"class":261},[240,2335,2336],{"class":242,"line":590},[240,2337,2022],{"class":261},[240,2339,2340,2342,2344,2346],{"class":242,"line":618},[240,2341,2027],{"class":253},[240,2343,2145],{"class":327},[240,2345,331],{"class":253},[240,2347,1046],{"class":261},[240,2349,2350,2353,2356,2358,2360,2362,2365,2367,2369,2371,2374,2376,2378,2380,2383,2385,2387,2389,2392,2394,2396,2398,2401,2403,2405,2407,2410,2412],{"class":242,"line":634},[240,2351,2352],{"class":268},"          KeyHints",[240,2354,2355],{"class":261},".of(",[240,2357,883],{"class":268},[240,2359,262],{"class":261},[240,2361,331],{"class":253},[240,2363,2364],{"class":327},"↑\u002Fk",[240,2366,331],{"class":253},[240,2368,1567],{"class":253},[240,2370,324],{"class":253},[240,2372,2373],{"class":327},"up",[240,2375,331],{"class":253},[240,2377,500],{"class":261},[240,2379,331],{"class":253},[240,2381,2382],{"class":327},"↓\u002Fj",[240,2384,331],{"class":253},[240,2386,1567],{"class":253},[240,2388,324],{"class":253},[240,2390,2391],{"class":327},"down",[240,2393,331],{"class":253},[240,2395,500],{"class":261},[240,2397,331],{"class":253},[240,2399,2400],{"class":327},"Enter",[240,2402,331],{"class":253},[240,2404,1567],{"class":253},[240,2406,324],{"class":253},[240,2408,2409],{"class":327},"open",[240,2411,331],{"class":253},[240,2413,344],{"class":261},[240,2415,2416],{"class":242,"line":649},[240,2417,1537],{"class":261},[240,2419,2420],{"class":242,"line":664},[240,2421,2022],{"class":261},[240,2423,2424,2426,2428,2430],{"class":242,"line":1148},[240,2425,2027],{"class":253},[240,2427,2148],{"class":327},[240,2429,331],{"class":253},[240,2431,1046],{"class":261},[240,2433,2434],{"class":242,"line":1161},[240,2435,2436],{"class":261},"          div.style(_.row)(\n",[240,2438,2439,2442,2444,2447,2449],{"class":242,"line":1174},[240,2440,2441],{"class":261},"            button(",[240,2443,331],{"class":253},[240,2445,2446],{"class":327},"Open the palette (Ctrl-P)",[240,2448,331],{"class":253},[240,2450,2451],{"class":261},").onClick(layers.palette.open),\n",[240,2453,2454],{"class":242,"line":1182},[240,2455,2329],{"class":261},[240,2457,2458],{"class":242,"line":1203},[240,2459,1537],{"class":261},[240,2461,2462],{"class":242,"line":1223},[240,2463,2022],{"class":261},[240,2465,2466,2468,2471,2473],{"class":242,"line":1229},[240,2467,2027],{"class":253},[240,2469,2470],{"class":327},"Modal.confirm and Modal.prompt",[240,2472,331],{"class":253},[240,2474,1046],{"class":261},[240,2476,2477,2480,2482],{"class":242,"line":1235},[240,2478,2479],{"class":261},"          div.style(_.row.gap(",[240,2481,1421],{"class":393},[240,2483,587],{"class":261},[240,2485,2486,2488,2490,2493,2495],{"class":242,"line":1255},[240,2487,2441],{"class":261},[240,2489,331],{"class":253},[240,2491,2492],{"class":327},"Delete",[240,2494,331],{"class":253},[240,2496,2497],{"class":261},").onClick(\n",[240,2499,2500,2503,2505,2508,2510,2513],{"class":242,"line":1261},[240,2501,2502],{"class":261},"              layers.confirm.ask(",[240,2504,331],{"class":253},[240,2506,2507],{"class":327},"Delete the file?",[240,2509,331],{"class":253},[240,2511,2512],{"class":261},")(yes ",[240,2514,2515],{"class":253},"=>\n",[240,2517,2518,2521,2524,2527,2530,2532,2535,2537,2540,2542,2545,2547],{"class":242,"line":1266},[240,2519,2520],{"class":261},"                answer.set(",[240,2522,2523],{"class":293},"if",[240,2525,2526],{"class":261}," yes ",[240,2528,2529],{"class":293},"then",[240,2531,324],{"class":253},[240,2533,2534],{"class":327},"deleted",[240,2536,331],{"class":253},[240,2538,2539],{"class":293}," else",[240,2541,324],{"class":253},[240,2543,2544],{"class":327},"kept",[240,2546,331],{"class":253},[240,2548,566],{"class":261},[240,2550,2551],{"class":242,"line":1277},[240,2552,2553],{"class":261},"              ),\n",[240,2555,2556],{"class":242,"line":1290},[240,2557,2558],{"class":261},"            ),\n",[240,2560,2561],{"class":242,"line":1296},[240,2562,2563],{"class":261},"            span(answer),\n",[240,2565,2566,2568,2570,2573,2575],{"class":242,"line":1309},[240,2567,2441],{"class":261},[240,2569,331],{"class":253},[240,2571,2572],{"class":327},"Rename",[240,2574,331],{"class":253},[240,2576,2497],{"class":261},[240,2578,2579,2582,2584,2587,2589,2592,2594,2597,2600],{"class":242,"line":1316},[240,2580,2581],{"class":261},"              layers.prompt.ask(",[240,2583,331],{"class":253},[240,2585,2586],{"class":327},"New name?",[240,2588,331],{"class":253},[240,2590,2591],{"class":261},")(n ",[240,2593,533],{"class":253},[240,2595,2596],{"class":261}," n.fold(",[240,2598,2599],{"class":268},"Kyo",[240,2601,2602],{"class":261},".unit)(name.set)),\n",[240,2604,2605],{"class":242,"line":1357},[240,2606,2558],{"class":261},[240,2608,2609,2612,2614,2616,2618,2621,2623,2626,2628],{"class":242,"line":1362},[240,2610,2611],{"class":261},"            span(name.map(n ",[240,2613,533],{"class":253},[240,2615,1336],{"class":253},[240,2617,331],{"class":253},[240,2619,2620],{"class":327},"name: ",[240,2622,1344],{"class":253},[240,2624,2625],{"class":261},"n",[240,2627,331],{"class":253},[240,2629,344],{"class":261},[240,2631,2632],{"class":242,"line":1373},[240,2633,2329],{"class":261},[240,2635,2636],{"class":242,"line":1379},[240,2637,1537],{"class":261},[240,2639,2640],{"class":242,"line":1404},[240,2641,2022],{"class":261},[240,2643,2644,2646,2648,2650],{"class":242,"line":1415},[240,2645,2027],{"class":253},[240,2647,2157],{"class":327},[240,2649,331],{"class":253},[240,2651,1046],{"class":261},[240,2653,2654],{"class":242,"line":1426},[240,2655,2436],{"class":261},[240,2657,2658,2660,2662,2665,2667],{"class":242,"line":1470},[240,2659,2441],{"class":261},[240,2661,331],{"class":253},[240,2663,2664],{"class":327},"Show a toast",[240,2666,331],{"class":253},[240,2668,2497],{"class":261},[240,2670,2671,2674,2676,2679,2681,2683,2685,2687,2690,2692,2695],{"class":242,"line":1495},[240,2672,2673],{"class":261},"              layers.toasts.show(",[240,2675,331],{"class":253},[240,2677,2678],{"class":327},"Saved",[240,2680,331],{"class":253},[240,2682,500],{"class":261},[240,2684,2157],{"class":268},[240,2686,385],{"class":261},[240,2688,2689],{"class":268},"Level",[240,2691,385],{"class":261},[240,2693,2694],{"class":268},"Success",[240,2696,566],{"class":261},[240,2698,2699],{"class":242,"line":1528},[240,2700,2558],{"class":261},[240,2702,2703],{"class":242,"line":1534},[240,2704,2329],{"class":261},[240,2706,2707],{"class":242,"line":1540},[240,2708,1537],{"class":261},[240,2710,2711],{"class":242,"line":1548},[240,2712,667],{"class":261},[704,2714,2716],{"id":2715},"navigation","Navigation",[673,2718,2719,500,2722,500,2725,500,2728,500,2731,766,2734,275],{},[237,2720,2721],{},"Menu.bar",[237,2723,2724],{},"Tooltip",[237,2726,2727],{},"Breadcrumbs",[237,2729,2730],{},"Pagination",[237,2732,2733],{},"Tags",[237,2735,2736],{},"Wizard",[229,2738,2740],{"className":231,"code":2739,"filename":233,"language":234,"meta":235,"style":235},"    \u002F** The navigation widgets: a menu bar, a tooltip, breadcrumbs, pagination,\n      * tags and a wizard.\n      *\u002F\n    def navigation(using Frame): UI \u003C Sync =\n      for\n          done  \u003C- Signal.initRef(\"nothing chosen\")\n          file   = Keymap.of(\n                     Binding.of(\"New\", Chord.ctrl('n'))(done.set(\"File › New\")),\n                     Binding.of(\"Open\", Chord.ctrl('o'))(done.set(\"File › Open\")),\n                   )\n          help   =\n            Keymap.of(\n              Binding.of(\"About\", Chord(Keyboard.F12))(done.set(\"Help › About\")),\n            )\n          menu  \u003C- Menu.bar(Menu.Group(\"File\", file), Menu.Group(\"Help\", help))\n          tip   \u003C- Tooltip(\"Saves the file\")(button(\"Save\"))\n          path  \u003C- Signal.initRef(Chunk(\"home\", \"docs\", \"widgets\"))\n          crumb \u003C-\n            Breadcrumbs(path, onPick = i => path.updateAndGet(_.take(i + 1)))\n          page  \u003C- Signal.initRef(0)\n          pages \u003C- Pagination(Signal.initConst(12), page = Model.Bound(page))\n          tags  \u003C- Tags(tags = Model.Local(Chunk(\"scala\", \"kyo\")))\n          steps \u003C- Wizard(\n                     Wizard.Step(\"Account\", span(\"Pick a user name.\")),\n                     Wizard.Step(\"Profile\", span(\"Add a photo.\")),\n                     Wizard.Step(\"Done\", span(\"All set.\")),\n                   )(onFinish = done.set(\"wizard finished\"))\n      yield div.style(_.gap(1.px))(\n        labeled(\"Menu (↓ opens, Enter runs)\", div(menu, span(done))),\n        labeled(\"Tooltip (on focus)\", tip),\n        labeled(\"Breadcrumbs\", crumb),\n        labeled(\n          \"Pagination (←\u002F→)\",\n          div(pages, span(page.map(p => s\"page ${p + 1} of 12\"))),\n        ),\n        labeled(\"Tags (Enter adds, Delete removes)\", tags),\n        labeled(\"Wizard\", steps),\n      )\n",[237,2741,2742,2747,2752,2756,2781,2785,2805,2818,2859,2896,2901,2908,2915,2954,2959,3010,3041,3083,3090,3114,3130,3164,3208,3220,3250,3278,3306,3325,3335,3349,3363,3376,3380,3391,3423,3427,3441,3454],{"__ignoreMap":235},[240,2743,2744],{"class":242,"line":243},[240,2745,2746],{"class":246},"    \u002F** The navigation widgets: a menu bar, a tooltip, breadcrumbs, pagination,\n",[240,2748,2749],{"class":242,"line":250},[240,2750,2751],{"class":246},"      * tags and a wizard.\n",[240,2753,2754],{"class":242,"line":290},[240,2755,1727],{"class":246},[240,2757,2758,2760,2763,2765,2767,2769,2771,2773,2775,2777,2779],{"class":242,"line":297},[240,2759,254],{"class":253},[240,2761,2762],{"class":257}," navigation",[240,2764,262],{"class":261},[240,2766,265],{"class":253},[240,2768,269],{"class":268},[240,2770,272],{"class":261},[240,2772,275],{"class":253},[240,2774,278],{"class":268},[240,2776,281],{"class":253},[240,2778,284],{"class":268},[240,2780,287],{"class":253},[240,2782,2783],{"class":242,"line":312},[240,2784,294],{"class":293},[240,2786,2787,2790,2792,2794,2796,2798,2801,2803],{"class":242,"line":347},[240,2788,2789],{"class":261},"          done  ",[240,2791,303],{"class":253},[240,2793,2229],{"class":268},[240,2795,880],{"class":261},[240,2797,331],{"class":253},[240,2799,2800],{"class":327},"nothing chosen",[240,2802,331],{"class":253},[240,2804,1119],{"class":261},[240,2806,2807,2810,2812,2815],{"class":242,"line":374},[240,2808,2809],{"class":261},"          file   ",[240,2811,321],{"class":253},[240,2813,2814],{"class":268}," Keymap",[240,2816,2817],{"class":261},".of(\n",[240,2819,2820,2823,2825,2827,2830,2832,2834,2837,2840,2843,2845,2847,2850,2852,2855,2857],{"class":242,"line":400},[240,2821,2822],{"class":268},"                     Binding",[240,2824,2355],{"class":261},[240,2826,331],{"class":253},[240,2828,2829],{"class":327},"New",[240,2831,331],{"class":253},[240,2833,500],{"class":261},[240,2835,2836],{"class":268},"Chord",[240,2838,2839],{"class":261},".ctrl(",[240,2841,2842],{"class":253},"'",[240,2844,2625],{"class":327},[240,2846,2842],{"class":253},[240,2848,2849],{"class":261},"))(done.set(",[240,2851,331],{"class":253},[240,2853,2854],{"class":327},"File › New",[240,2856,331],{"class":253},[240,2858,344],{"class":261},[240,2860,2861,2863,2865,2867,2870,2872,2874,2876,2878,2880,2883,2885,2887,2889,2892,2894],{"class":242,"line":413},[240,2862,2822],{"class":268},[240,2864,2355],{"class":261},[240,2866,331],{"class":253},[240,2868,2869],{"class":327},"Open",[240,2871,331],{"class":253},[240,2873,500],{"class":261},[240,2875,2836],{"class":268},[240,2877,2839],{"class":261},[240,2879,2842],{"class":253},[240,2881,2882],{"class":327},"o",[240,2884,2842],{"class":253},[240,2886,2849],{"class":261},[240,2888,331],{"class":253},[240,2890,2891],{"class":327},"File › Open",[240,2893,331],{"class":253},[240,2895,344],{"class":261},[240,2897,2898],{"class":242,"line":445},[240,2899,2900],{"class":261},"                   )\n",[240,2902,2903,2906],{"class":242,"line":474},[240,2904,2905],{"class":261},"          help   ",[240,2907,860],{"class":253},[240,2909,2910,2913],{"class":242,"line":480},[240,2911,2912],{"class":268},"            Keymap",[240,2914,2817],{"class":261},[240,2916,2917,2920,2922,2924,2927,2929,2931,2933,2935,2938,2940,2943,2945,2947,2950,2952],{"class":242,"line":522},[240,2918,2919],{"class":268},"              Binding",[240,2921,2355],{"class":261},[240,2923,331],{"class":253},[240,2925,2926],{"class":327},"About",[240,2928,331],{"class":253},[240,2930,500],{"class":261},[240,2932,2836],{"class":268},[240,2934,262],{"class":261},[240,2936,2937],{"class":268},"Keyboard",[240,2939,385],{"class":261},[240,2941,2942],{"class":268},"F12",[240,2944,2849],{"class":261},[240,2946,331],{"class":253},[240,2948,2949],{"class":327},"Help › About",[240,2951,331],{"class":253},[240,2953,344],{"class":261},[240,2955,2956],{"class":242,"line":569},[240,2957,2958],{"class":261},"            )\n",[240,2960,2961,2964,2966,2969,2972,2975,2977,2980,2982,2984,2987,2989,2992,2994,2996,2998,3000,3002,3005,3007],{"class":242,"line":575},[240,2962,2963],{"class":261},"          menu  ",[240,2965,303],{"class":253},[240,2967,2968],{"class":268}," Menu",[240,2970,2971],{"class":261},".bar(",[240,2973,2974],{"class":268},"Menu",[240,2976,385],{"class":261},[240,2978,2979],{"class":268},"Group",[240,2981,262],{"class":261},[240,2983,331],{"class":253},[240,2985,2986],{"class":327},"File",[240,2988,331],{"class":253},[240,2990,2991],{"class":261},", file), ",[240,2993,2974],{"class":268},[240,2995,385],{"class":261},[240,2997,2979],{"class":268},[240,2999,262],{"class":261},[240,3001,331],{"class":253},[240,3003,3004],{"class":327},"Help",[240,3006,331],{"class":253},[240,3008,3009],{"class":261},", help))\n",[240,3011,3012,3015,3017,3020,3022,3024,3027,3029,3032,3034,3037,3039],{"class":242,"line":590},[240,3013,3014],{"class":261},"          tip   ",[240,3016,303],{"class":253},[240,3018,3019],{"class":268}," Tooltip",[240,3021,262],{"class":261},[240,3023,331],{"class":253},[240,3025,3026],{"class":327},"Saves the file",[240,3028,331],{"class":253},[240,3030,3031],{"class":261},")(button(",[240,3033,331],{"class":253},[240,3035,3036],{"class":327},"Save",[240,3038,331],{"class":253},[240,3040,397],{"class":261},[240,3042,3043,3046,3048,3050,3052,3054,3056,3058,3061,3063,3065,3067,3070,3072,3074,3076,3079,3081],{"class":242,"line":618},[240,3044,3045],{"class":261},"          path  ",[240,3047,303],{"class":253},[240,3049,2229],{"class":268},[240,3051,880],{"class":261},[240,3053,883],{"class":268},[240,3055,262],{"class":261},[240,3057,331],{"class":253},[240,3059,3060],{"class":327},"home",[240,3062,331],{"class":253},[240,3064,500],{"class":261},[240,3066,331],{"class":253},[240,3068,3069],{"class":327},"docs",[240,3071,331],{"class":253},[240,3073,500],{"class":261},[240,3075,331],{"class":253},[240,3077,3078],{"class":327},"widgets",[240,3080,331],{"class":253},[240,3082,397],{"class":261},[240,3084,3085,3088],{"class":242,"line":634},[240,3086,3087],{"class":261},"          crumb ",[240,3089,872],{"class":253},[240,3091,3092,3095,3098,3100,3102,3104,3107,3109,3111],{"class":242,"line":649},[240,3093,3094],{"class":268},"            Breadcrumbs",[240,3096,3097],{"class":261},"(path, onPick ",[240,3099,321],{"class":253},[240,3101,530],{"class":261},[240,3103,533],{"class":253},[240,3105,3106],{"class":261}," path.updateAndGet(_.take(i ",[240,3108,553],{"class":253},[240,3110,556],{"class":393},[240,3112,3113],{"class":261},")))\n",[240,3115,3116,3119,3121,3123,3125,3128],{"class":242,"line":664},[240,3117,3118],{"class":261},"          page  ",[240,3120,303],{"class":253},[240,3122,2229],{"class":268},[240,3124,880],{"class":261},[240,3126,3127],{"class":393},"0",[240,3129,1119],{"class":261},[240,3131,3132,3135,3137,3140,3142,3144,3146,3149,3152,3154,3156,3158,3161],{"class":242,"line":1148},[240,3133,3134],{"class":261},"          pages ",[240,3136,303],{"class":253},[240,3138,3139],{"class":268}," Pagination",[240,3141,262],{"class":261},[240,3143,1434],{"class":268},[240,3145,1437],{"class":261},[240,3147,3148],{"class":393},"12",[240,3150,3151],{"class":261},"), page ",[240,3153,321],{"class":253},[240,3155,382],{"class":268},[240,3157,385],{"class":261},[240,3159,3160],{"class":268},"Bound",[240,3162,3163],{"class":261},"(page))\n",[240,3165,3166,3169,3171,3174,3177,3179,3181,3183,3185,3187,3189,3191,3193,3195,3197,3199,3201,3204,3206],{"class":242,"line":1161},[240,3167,3168],{"class":261},"          tags  ",[240,3170,303],{"class":253},[240,3172,3173],{"class":268}," Tags",[240,3175,3176],{"class":261},"(tags ",[240,3178,321],{"class":253},[240,3180,382],{"class":268},[240,3182,385],{"class":261},[240,3184,388],{"class":268},[240,3186,262],{"class":261},[240,3188,883],{"class":268},[240,3190,262],{"class":261},[240,3192,331],{"class":253},[240,3194,234],{"class":327},[240,3196,331],{"class":253},[240,3198,500],{"class":261},[240,3200,331],{"class":253},[240,3202,3203],{"class":327},"kyo",[240,3205,331],{"class":253},[240,3207,3113],{"class":261},[240,3209,3210,3213,3215,3218],{"class":242,"line":1174},[240,3211,3212],{"class":261},"          steps ",[240,3214,303],{"class":253},[240,3216,3217],{"class":268}," Wizard",[240,3219,309],{"class":261},[240,3221,3222,3225,3227,3230,3232,3234,3237,3239,3241,3243,3246,3248],{"class":242,"line":1182},[240,3223,3224],{"class":268},"                     Wizard",[240,3226,385],{"class":261},[240,3228,3229],{"class":268},"Step",[240,3231,262],{"class":261},[240,3233,331],{"class":253},[240,3235,3236],{"class":327},"Account",[240,3238,331],{"class":253},[240,3240,433],{"class":261},[240,3242,331],{"class":253},[240,3244,3245],{"class":327},"Pick a user name.",[240,3247,331],{"class":253},[240,3249,344],{"class":261},[240,3251,3252,3254,3256,3258,3260,3262,3265,3267,3269,3271,3274,3276],{"class":242,"line":1203},[240,3253,3224],{"class":268},[240,3255,385],{"class":261},[240,3257,3229],{"class":268},[240,3259,262],{"class":261},[240,3261,331],{"class":253},[240,3263,3264],{"class":327},"Profile",[240,3266,331],{"class":253},[240,3268,433],{"class":261},[240,3270,331],{"class":253},[240,3272,3273],{"class":327},"Add a photo.",[240,3275,331],{"class":253},[240,3277,344],{"class":261},[240,3279,3280,3282,3284,3286,3288,3290,3293,3295,3297,3299,3302,3304],{"class":242,"line":1223},[240,3281,3224],{"class":268},[240,3283,385],{"class":261},[240,3285,3229],{"class":268},[240,3287,262],{"class":261},[240,3289,331],{"class":253},[240,3291,3292],{"class":327},"Done",[240,3294,331],{"class":253},[240,3296,433],{"class":261},[240,3298,331],{"class":253},[240,3300,3301],{"class":327},"All set.",[240,3303,331],{"class":253},[240,3305,344],{"class":261},[240,3307,3308,3311,3313,3316,3318,3321,3323],{"class":242,"line":1229},[240,3309,3310],{"class":261},"                   )(onFinish ",[240,3312,321],{"class":253},[240,3314,3315],{"class":261}," done.set(",[240,3317,331],{"class":253},[240,3319,3320],{"class":327},"wizard finished",[240,3322,331],{"class":253},[240,3324,397],{"class":261},[240,3326,3327,3329,3331,3333],{"class":242,"line":1235},[240,3328,578],{"class":293},[240,3330,581],{"class":261},[240,3332,584],{"class":393},[240,3334,587],{"class":261},[240,3336,3337,3339,3341,3344,3346],{"class":242,"line":1255},[240,3338,621],{"class":261},[240,3340,331],{"class":253},[240,3342,3343],{"class":327},"Menu (↓ opens, Enter runs)",[240,3345,331],{"class":253},[240,3347,3348],{"class":261},", div(menu, span(done))),\n",[240,3350,3351,3353,3355,3358,3360],{"class":242,"line":1261},[240,3352,621],{"class":261},[240,3354,331],{"class":253},[240,3356,3357],{"class":327},"Tooltip (on focus)",[240,3359,331],{"class":253},[240,3361,3362],{"class":261},", tip),\n",[240,3364,3365,3367,3369,3371,3373],{"class":242,"line":1266},[240,3366,621],{"class":261},[240,3368,331],{"class":253},[240,3370,2727],{"class":327},[240,3372,331],{"class":253},[240,3374,3375],{"class":261},", crumb),\n",[240,3377,3378],{"class":242,"line":1277},[240,3379,2022],{"class":261},[240,3381,3382,3384,3387,3389],{"class":242,"line":1290},[240,3383,2027],{"class":253},[240,3385,3386],{"class":327},"Pagination (←\u002F→)",[240,3388,331],{"class":253},[240,3390,1046],{"class":261},[240,3392,3393,3396,3398,3400,3402,3405,3407,3410,3412,3414,3416,3419,3421],{"class":242,"line":1296},[240,3394,3395],{"class":261},"          div(pages, span(page.map(p ",[240,3397,533],{"class":253},[240,3399,1336],{"class":253},[240,3401,331],{"class":253},[240,3403,3404],{"class":327},"page ",[240,3406,547],{"class":253},[240,3408,3409],{"class":261},"p ",[240,3411,553],{"class":253},[240,3413,556],{"class":393},[240,3415,559],{"class":253},[240,3417,3418],{"class":327}," of 12",[240,3420,331],{"class":253},[240,3422,1467],{"class":261},[240,3424,3425],{"class":242,"line":1309},[240,3426,1537],{"class":261},[240,3428,3429,3431,3433,3436,3438],{"class":242,"line":1316},[240,3430,621],{"class":261},[240,3432,331],{"class":253},[240,3434,3435],{"class":327},"Tags (Enter adds, Delete removes)",[240,3437,331],{"class":253},[240,3439,3440],{"class":261},", tags),\n",[240,3442,3443,3445,3447,3449,3451],{"class":242,"line":1357},[240,3444,621],{"class":261},[240,3446,331],{"class":253},[240,3448,2736],{"class":327},[240,3450,331],{"class":253},[240,3452,3453],{"class":261},", steps),\n",[240,3455,3456],{"class":242,"line":1362},[240,3457,667],{"class":261},[3459,3460,3461],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":235,"searchDepth":250,"depth":250,"links":3463},[3464,3465,3466,3467,3468],{"id":706,"depth":250,"text":707},{"id":795,"depth":250,"text":796},{"id":1686,"depth":250,"text":1687},{"id":2136,"depth":250,"text":2137},{"id":2715,"depth":250,"text":2716},"tui4s-widgets, by family, as the gallery example shows them.","md",null,{},{"icon":66},{"title":63,"description":3469},"mRiVimBrYy7LXuGR0daum5_GqKk_0BKOv-fHAPhWB38",[3477,3479],{"title":58,"path":59,"stem":60,"description":3478,"icon":61,"children":-1},"tui4s-use, plain functions over Kyo signals for the JVM and Scala.js; first, what needs no composable.",{"title":68,"path":69,"stem":70,"description":3480,"icon":71,"children":-1},"The flagship example, a chat with a language model, and the shape of a real app.",1792528752826]