owndesign 0.1.4 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/dist/index.js +1 -2
  2. package/dist/server/index.js +656 -1474
  3. package/dist/server/prompts/agents/component-audit.md +24 -0
  4. package/dist/server/prompts/agents/design-page.md +83 -55
  5. package/dist/server/prompts/index.ts +9 -16
  6. package/dist/server/templates/html/page-shell.html +65 -0
  7. package/dist/server/templates/index.ts +39 -0
  8. package/dist/web/assets/{angular-html-jQS2hAnh.js → angular-html-DCGj6j9k.js} +1 -1
  9. package/dist/web/assets/{angular-ts-DXCIRK8J.js → angular-ts-_jS5FvKQ.js} +1 -1
  10. package/dist/web/assets/{apl-uLTVM0SV.js → apl-COUiMcRO.js} +1 -1
  11. package/dist/web/assets/{arc-C6K-4bbh.js → arc-DO65316F.js} +1 -1
  12. package/dist/web/assets/architecture-7EHR7CIX-D10X4FnP.js +1 -0
  13. package/dist/web/assets/{architectureDiagram-3BPJPVTR-Nra6nVfI.js → architectureDiagram-3BPJPVTR-4QTI95py.js} +1 -1
  14. package/dist/web/assets/{astro-QydxzDKL.js → astro-DBm7xN0H.js} +1 -1
  15. package/dist/web/assets/{blade-g81cs1jW.js → blade-BrcGRjeD.js} +1 -1
  16. package/dist/web/assets/{blockDiagram-GPEHLZMM-Ei76DVKM.js → blockDiagram-GPEHLZMM-DyW2gTLi.js} +1 -1
  17. package/dist/web/assets/{c-CV8Fejge.js → c-DAqlvgYb.js} +1 -1
  18. package/dist/web/assets/{c4Diagram-AAUBKEIU-oIOIFFc0.js → c4Diagram-AAUBKEIU-D7VLn3UY.js} +1 -1
  19. package/dist/web/assets/channel-D4A7yvhc.js +1 -0
  20. package/dist/web/assets/{chunk-2J33WTMH-BokYjerh.js → chunk-2J33WTMH-ZI7iZmam.js} +1 -1
  21. package/dist/web/assets/{chunk-4BX2VUAB-CW80cEPP.js → chunk-4BX2VUAB-BXZ1tYtp.js} +1 -1
  22. package/dist/web/assets/{chunk-55IACEB6-cqUqIGMR.js → chunk-55IACEB6-BruFuyzh.js} +1 -1
  23. package/dist/web/assets/{chunk-727SXJPM-en_nLLtx.js → chunk-727SXJPM-WfltwAyi.js} +1 -1
  24. package/dist/web/assets/{chunk-AQP2D5EJ-E7hL18Vm.js → chunk-AQP2D5EJ-m-6Oqccg.js} +1 -1
  25. package/dist/web/assets/{chunk-FMBD7UC4-D2Mn_3Ze.js → chunk-FMBD7UC4-CTpop8z0.js} +1 -1
  26. package/dist/web/assets/{chunk-ND2GUHAM-BxpfbjDb.js → chunk-ND2GUHAM-DXbYu7j4.js} +1 -1
  27. package/dist/web/assets/chunk-QZHKN3VN-JoHxC1mG.js +1 -0
  28. package/dist/web/assets/classDiagram-4FO5ZUOK-D2XS2ai4.js +1 -0
  29. package/dist/web/assets/classDiagram-v2-Q7XG4LA2-D2XS2ai4.js +1 -0
  30. package/dist/web/assets/{cobol-CMtH7Q60.js → cobol-CV8XIe3g.js} +1 -1
  31. package/dist/web/assets/{coffee-Dd2oge0M.js → coffee-CjS-bqem.js} +1 -1
  32. package/dist/web/assets/{cose-bilkent-S5V4N54A-DlIl_zlL.js → cose-bilkent-S5V4N54A-qeF_aTDs.js} +1 -1
  33. package/dist/web/assets/{cpp-BxOkDHcj.js → cpp-BWTrby03.js} +1 -1
  34. package/dist/web/assets/{crystal-CP-EFrvi.js → crystal-B4jSurfu.js} +1 -1
  35. package/dist/web/assets/{css-56wYI_pE.js → css-CXDKo6HN.js} +1 -1
  36. package/dist/web/assets/{dagre-BM42HDAG-DPLYcjid.js → dagre-BM42HDAG-mtpIrAd-.js} +1 -1
  37. package/dist/web/assets/{diagram-2AECGRRQ-BCMoYOQK.js → diagram-2AECGRRQ-C2daXqRz.js} +1 -1
  38. package/dist/web/assets/{diagram-5GNKFQAL-CLKyT-zH.js → diagram-5GNKFQAL-Yn3Kkd1e.js} +1 -1
  39. package/dist/web/assets/{diagram-KO2AKTUF-aunZGxvu.js → diagram-KO2AKTUF-BSZBlF1_.js} +1 -1
  40. package/dist/web/assets/{diagram-LMA3HP47-BYp0cf90.js → diagram-LMA3HP47-C-o1wwy4.js} +1 -1
  41. package/dist/web/assets/{diagram-OG6HWLK6-M3iTfH5g.js → diagram-OG6HWLK6-BadUuiav.js} +1 -1
  42. package/dist/web/assets/{edge-DpKZbKMc.js → edge-IP3F2dQ8.js} +1 -1
  43. package/dist/web/assets/{elixir-CzSMdKdn.js → elixir-DNv4dzV2.js} +1 -1
  44. package/dist/web/assets/{elm-CPk9x22f.js → elm-DGlxwCzv.js} +1 -1
  45. package/dist/web/assets/{erDiagram-TEJ5UH35-BX0VkvGe.js → erDiagram-TEJ5UH35-uLYwqFWM.js} +1 -1
  46. package/dist/web/assets/{erb-TQAaZlNV.js → erb-Cx4MSh15.js} +1 -1
  47. package/dist/web/assets/eventmodeling-FCH6USID-CHKTnhfi.js +1 -0
  48. package/dist/web/assets/{flowDiagram-I6XJVG4X-Bvl7AO6M.js → flowDiagram-I6XJVG4X-C-JzpWfx.js} +1 -1
  49. package/dist/web/assets/{ganttDiagram-6RSMTGT7-Bcc6aiz3.js → ganttDiagram-6RSMTGT7-Be3WGPbk.js} +1 -1
  50. package/dist/web/assets/{git-rebase-C36akiNM.js → git-rebase-C_0JGP0g.js} +1 -1
  51. package/dist/web/assets/gitGraph-WXDBUCRP-aSGYLvSW.js +1 -0
  52. package/dist/web/assets/{gitGraphDiagram-PVQCEYII-DwIrICP0.js → gitGraphDiagram-PVQCEYII-DqJ0yj3L.js} +1 -1
  53. package/dist/web/assets/{glimmer-js-ZijKRLl6.js → glimmer-js-B7LRT5BS.js} +1 -1
  54. package/dist/web/assets/{glimmer-ts-DngRkkD1.js → glimmer-ts-CojGZlfZ.js} +1 -1
  55. package/dist/web/assets/{glsl-BaB0p3pF.js → glsl-CbmtoTb8.js} +1 -1
  56. package/dist/web/assets/{graphql-Betoeq1K.js → graphql-qYEIhTt7.js} +1 -1
  57. package/dist/web/assets/{hack-CE6PSHKG.js → hack-DxHXCCdq.js} +1 -1
  58. package/dist/web/assets/{haml-SuyMrzSD.js → haml-CiwrkJ8T.js} +1 -1
  59. package/dist/web/assets/{handlebars-JDrZp4fR.js → handlebars-Cn5UPYUQ.js} +1 -1
  60. package/dist/web/assets/{highlighted-body-OFNGDK62-CgC4ngzm.js → highlighted-body-OFNGDK62-ehiuxKzz.js} +1 -1
  61. package/dist/web/assets/{html-DC1Ltqmc.js → html-Cst8cPsk.js} +1 -1
  62. package/dist/web/assets/{html-derivative-iG8t5u5_.js → html-derivative-lnPAgvry.js} +1 -1
  63. package/dist/web/assets/{http-C40sH4NS.js → http-C5VDSUzW.js} +1 -1
  64. package/dist/web/assets/{hurl-CmUE8H3s.js → hurl-BFlMJrL0.js} +1 -1
  65. package/dist/web/assets/{index-Bz6PFGaR.js → index-Ai406YO8.js} +179 -179
  66. package/dist/web/assets/index-Cy3xCQ0m.css +2 -0
  67. package/dist/web/assets/info-J43DQDTF-C945CGZU.js +1 -0
  68. package/dist/web/assets/{infoDiagram-5YYISTIA-D92ErDLp.js → infoDiagram-5YYISTIA-CIanyf0S.js} +1 -1
  69. package/dist/web/assets/{ishikawaDiagram-YF4QCWOH-COfhdNCZ.js → ishikawaDiagram-YF4QCWOH--1RL7uDF.js} +1 -1
  70. package/dist/web/assets/{java-Jk3c_AWT.js → java-BGahCCe1.js} +1 -1
  71. package/dist/web/assets/{javascript-D7j9lLtB.js → javascript-D5uMI8kB.js} +1 -1
  72. package/dist/web/assets/{jinja-KOP4LHnr.js → jinja-B4krr1-l.js} +1 -1
  73. package/dist/web/assets/{jison-CsByL99k.js → jison-BMMSlNZQ.js} +1 -1
  74. package/dist/web/assets/{journeyDiagram-JHISSGLW-BAaoSHcS.js → journeyDiagram-JHISSGLW-lkcDMGR5.js} +1 -1
  75. package/dist/web/assets/{json-bLUVjOwA.js → json-DXJMlo78.js} +1 -1
  76. package/dist/web/assets/{jsx-B-ZJ5sYl.js → jsx-C_bl3hBI.js} +1 -1
  77. package/dist/web/assets/{julia-DLZVVunR.js → julia-Sc_vYT5t.js} +1 -1
  78. package/dist/web/assets/{just-CTVFuTGe.js → just-CILkVz1n.js} +1 -1
  79. package/dist/web/assets/{kanban-definition-UN3LZRKU-txA385kR.js → kanban-definition-UN3LZRKU-Bi_hSUym.js} +1 -1
  80. package/dist/web/assets/{latex-BQMKb74T.js → latex-DUmFelG8.js} +1 -1
  81. package/dist/web/assets/{linear-D7ZS4umN.js → linear-Dpnh4Vbv.js} +1 -1
  82. package/dist/web/assets/{liquid-CG92kJNU.js → liquid-BnB6JKD1.js} +1 -1
  83. package/dist/web/assets/{lua-BVSZYGx9.js → lua-DhxAQE0G.js} +1 -1
  84. package/dist/web/assets/{marko-DEmKFKi0.js → marko-CyzzY1hm.js} +1 -1
  85. package/dist/web/assets/{mdc-Do8EO_lC.js → mdc-BptK7sXI.js} +1 -1
  86. package/dist/web/assets/mermaid-GHXKKRXX-DOJ_Dro4.js +1 -0
  87. package/dist/web/assets/{mermaid-parser.core-BaLOFMn_.js → mermaid-parser.core-DShH95hL.js} +2 -2
  88. package/dist/web/assets/{mindmap-definition-RKZ34NQL-D-yV4PLs.js → mindmap-definition-RKZ34NQL-LqYVQ-zW.js} +1 -1
  89. package/dist/web/assets/{nginx-BKSyUILj.js → nginx-CR9TIk16.js} +1 -1
  90. package/dist/web/assets/{nim-DnJRnIIP.js → nim-DzWiwbcf.js} +1 -1
  91. package/dist/web/assets/packet-YPE3B663-DuGIOCMW.js +1 -0
  92. package/dist/web/assets/{perl-3bt2qR9m.js → perl-CgrDNBt5.js} +1 -1
  93. package/dist/web/assets/{php-BzdDALOQ.js → php-DtuJQDgr.js} +1 -1
  94. package/dist/web/assets/pie-LRSECV5Y-BYeTdyfo.js +1 -0
  95. package/dist/web/assets/{pieDiagram-4H26LBE5-Bd114I4X.js → pieDiagram-4H26LBE5-B7_i9XPe.js} +1 -1
  96. package/dist/web/assets/{pug-DdwUkMw4.js → pug--9BJCC2D.js} +1 -1
  97. package/dist/web/assets/{qml-DP4is7YC.js → qml-C3iH27Ik.js} +1 -1
  98. package/dist/web/assets/{quadrantDiagram-W4KKPZXB-bREh_EBC.js → quadrantDiagram-W4KKPZXB-C2tSamWU.js} +1 -1
  99. package/dist/web/assets/{r-BF_jXTwW.js → r-CqKTpWRo.js} +1 -1
  100. package/dist/web/assets/radar-GUYGQ44K-Cqw7n4df.js +1 -0
  101. package/dist/web/assets/{razor-3soncf9G.js → razor-BNavdAx6.js} +1 -1
  102. package/dist/web/assets/{regexp-EYBuLXF9.js → regexp-zwVenqvj.js} +1 -1
  103. package/dist/web/assets/{requirementDiagram-4Y6WPE33-VtNiXWaP.js → requirementDiagram-4Y6WPE33-iIbtgBoU.js} +1 -1
  104. package/dist/web/assets/{rst-C71o5usK.js → rst-BHNeA4na.js} +1 -1
  105. package/dist/web/assets/{ruby-w0pHTyII.js → ruby-CkHs-w2j.js} +1 -1
  106. package/dist/web/assets/{sankeyDiagram-5OEKKPKP-CPbj-Xb-.js → sankeyDiagram-5OEKKPKP-B05ECsV0.js} +1 -1
  107. package/dist/web/assets/{sas-DXIh1KZ4.js → sas-COQs-ItK.js} +1 -1
  108. package/dist/web/assets/{scss-C4aItG-0.js → scss-DVsO7q0E.js} +1 -1
  109. package/dist/web/assets/{sequenceDiagram-3UESZ5HK-DwH_u_zz.js → sequenceDiagram-3UESZ5HK-CHtmtTcK.js} +1 -1
  110. package/dist/web/assets/{shellscript-BV5fN4m0.js → shellscript-DoNwQ9Oz.js} +1 -1
  111. package/dist/web/assets/{shellsession-COL1kA2z.js → shellsession-DvIRWuae.js} +1 -1
  112. package/dist/web/assets/{soy-Ccpzfdcl.js → soy--AEUdRNF.js} +1 -1
  113. package/dist/web/assets/{sql-DCE87e5l.js → sql-BVv9DbTm.js} +1 -1
  114. package/dist/web/assets/{stata-CEWTedB6.js → stata-Bzv07ePm.js} +1 -1
  115. package/dist/web/assets/{stateDiagram-AJRCARHV-B3VdYVO-.js → stateDiagram-AJRCARHV-COllcCkO.js} +1 -1
  116. package/dist/web/assets/stateDiagram-v2-BHNVJYJU-D9SuEs4r.js +1 -0
  117. package/dist/web/assets/{surrealql-CUKNwDpQ.js → surrealql-ChG0u1_y.js} +1 -1
  118. package/dist/web/assets/{svelte-DONiSH1x.js → svelte-CTk-krYk.js} +1 -1
  119. package/dist/web/assets/{templ-B_johG2O.js → templ-CIOvt0Gn.js} +1 -1
  120. package/dist/web/assets/{tex-Dh316BCp.js → tex-BLbgub0O.js} +1 -1
  121. package/dist/web/assets/{timeline-definition-PNZ67QCA-Blixs7cX.js → timeline-definition-PNZ67QCA-Dj0aLVCY.js} +1 -1
  122. package/dist/web/assets/treeView-BLDUP644-Bsp-7xCN.js +1 -0
  123. package/dist/web/assets/treemap-LRROVOQU-BsTzhV2b.js +1 -0
  124. package/dist/web/assets/{ts-tags-CWDOkWop.js → ts-tags-Cjp84wCR.js} +1 -1
  125. package/dist/web/assets/{tsx-STHGXrTg.js → tsx-BYXwwi4R.js} +1 -1
  126. package/dist/web/assets/{twig-DeYz4MvR.js → twig-CJXgadPB.js} +1 -1
  127. package/dist/web/assets/{typescript-BkMW9mh2.js → typescript-SkJO5gXX.js} +1 -1
  128. package/dist/web/assets/{vennDiagram-CIIHVFJN-OUEEmD5m.js → vennDiagram-CIIHVFJN-DotTRq6i.js} +1 -1
  129. package/dist/web/assets/{vue-BhG5XYAd.js → vue-DnNvWsLF.js} +1 -1
  130. package/dist/web/assets/{vue-html-Cw0OXIMV.js → vue-html-BtDfjhCy.js} +1 -1
  131. package/dist/web/assets/{vue-vine-DxYQGujI.js → vue-vine-87qc9dJ9.js} +1 -1
  132. package/dist/web/assets/wardley-L42UT6IY-BtXwfgcx.js +1 -0
  133. package/dist/web/assets/{wardleyDiagram-YWT4CUSO-CbSRnjwb.js → wardleyDiagram-YWT4CUSO-C4mIx6nt.js} +1 -1
  134. package/dist/web/assets/{xml-Co1Haim6.js → xml-BwxGZI3_.js} +1 -1
  135. package/dist/web/assets/{xsl-Dyxp9ECK.js → xsl-V11HisfD.js} +1 -1
  136. package/dist/web/assets/{xychartDiagram-2RQKCTM6-PQFpoSrS.js → xychartDiagram-2RQKCTM6-CR2seeGg.js} +1 -1
  137. package/dist/web/assets/{yaml-DfBwtMv_.js → yaml-DoTdQeS-.js} +1 -1
  138. package/dist/web/index.html +2 -2
  139. package/package.json +6 -7
  140. package/dist/server/prompts/agents/turn-prompt-rewriter.md +0 -15
  141. package/dist/web/assets/architecture-7EHR7CIX-BUVdwEbF.js +0 -1
  142. package/dist/web/assets/channel-DC7LeJJp.js +0 -1
  143. package/dist/web/assets/chunk-QZHKN3VN-DTMt_eZs.js +0 -1
  144. package/dist/web/assets/classDiagram-4FO5ZUOK-jfKwbhh5.js +0 -1
  145. package/dist/web/assets/classDiagram-v2-Q7XG4LA2-jfKwbhh5.js +0 -1
  146. package/dist/web/assets/eventmodeling-FCH6USID-CelVcBa9.js +0 -1
  147. package/dist/web/assets/gitGraph-WXDBUCRP-D9mlI27B.js +0 -1
  148. package/dist/web/assets/index-BFZtO7ji.css +0 -2
  149. package/dist/web/assets/info-J43DQDTF-DmWxkfWc.js +0 -1
  150. package/dist/web/assets/mermaid-GHXKKRXX-L1cLS261.js +0 -1
  151. package/dist/web/assets/packet-YPE3B663-CrP5sMYi.js +0 -1
  152. package/dist/web/assets/pie-LRSECV5Y-Di4KiVyS.js +0 -1
  153. package/dist/web/assets/radar-GUYGQ44K-BWc_UrwT.js +0 -1
  154. package/dist/web/assets/stateDiagram-v2-BHNVJYJU-C7wmfqKn.js +0 -1
  155. package/dist/web/assets/treeView-BLDUP644-DRpNUAD5.js +0 -1
  156. package/dist/web/assets/treemap-LRROVOQU-CRkuQjMq.js +0 -1
  157. package/dist/web/assets/wardley-L42UT6IY-AM6lsfHi.js +0 -1
@@ -0,0 +1,24 @@
1
+ # Component Audit Agent
2
+
3
+ You are a read-only design consistency auditor for OwnDesign HTML workspaces.
4
+ Inspect the final workspace state after the main design agent finishes a user task.
5
+ Use only read, glob, and grep tools. Never edit files and never ask to call write, edit, patch, createHtml, delete, copyFile, preview tools, or syncSharedComponent yourself.
6
+
7
+ Return JSON only with this shape:
8
+ {"passed": boolean, "findings": [{"type": string, "severity": "high" | "medium" | "low", "message": string, "path"?: string, "recommendedAction"?: string}], "summary": string}
9
+
10
+ Audit rules:
11
+ - Navigation is the highest-priority shared component. If multiple pages share top navigation or sidebar navigation, they should use a shared `od-navigation` Web Component.
12
+ - A compliant shared navigation should have a `.owndesign-components.json` manifest entry, a `components/od-navigation.js` source module, a `customElements.define("od-navigation", ...)` call, page component imports, and active current-page support through an attribute or property.
13
+ - If multiple pages have obvious repeated navigation but no shared `od-navigation` component, return a high finding recommending creation or reuse of a navigation Web Component.
14
+ - If shared navigation exists but the source module, manifest, page imports, links, or active-state rules are clearly incomplete, return a high finding.
15
+ - Shared navigation must contain usable links between site pages. Empty `href`, `href="#"`, `javascript:void(0)`, and other placeholder links are high findings when they are used as page navigation.
16
+ - In multi-page projects, navigation links should point to existing `.html` pages. Missing local `.html` targets are high findings.
17
+ - Shared navigation should link to stable HTML paths such as `index.html` and `detail.html`.
18
+ - When `.owndesign-pages.json` lists main site pages, shared navigation should include links for those main pages unless a page is clearly secondary or outside the site navigation.
19
+ - Page HTML files should remain shells that load and render `pages/od-{slug}-page.js`; page layout and styles should live in the page Web Component.
20
+ - Footer, CTA, newsletter, testimonial, and similar whole-site repeated sections are medium suggestions for shared Web Components.
21
+ - Card, form-field, stat, pricing, product, and article patterns are low or medium suggestions for shared Web Components.
22
+ - Do not report one-off sections, content-heavy sections, or intentionally different modules.
23
+
24
+ Be strict about navigation, but do not invent findings when the workspace does not contain enough evidence.
@@ -1,82 +1,110 @@
1
- # Design Page Agent
1
+ # OwnDesign Single HTML Page Agent
2
2
 
3
- ## Role & Domain
3
+ You design and implement high-quality previewable page prototypes in a single `index.html` file inside the Project Workspace.
4
4
 
5
- You are OwnDesign's design page agent.
5
+ The user's result is judged by what appears in the Preview Pane iframe. A task is complete only when `index.html` renders an intentional, polished, useful interface prototype, not merely valid markup.
6
6
 
7
- You design and build previewable product pages inside the Project Workspace. Work directly in files whenever the request is actionable.
7
+ ## Core Output Model
8
8
 
9
- Respect OwnDesign domain language:
10
-
11
- - The user is working inside a Project.
12
- - Edit the Project Output in the Project Workspace.
13
- - The result is shown in the Preview Pane through an iframe preview.
9
+ - `index.html` is the only previewable page and the main design canvas.
10
+ - Put the page structure, CSS, and local prototype JavaScript directly in `index.html`.
11
+ - Do not create additional HTML pages for different screens.
12
+ - Do not use custom elements, Shadow DOM, React, framework build files, page/component metadata files, or shared component modules.
13
+ - For multi-page experiences, implement internal views in `index.html` using state, hash routing, tabs, buttons, or `[data-view]` sections.
14
14
 
15
15
  ## Work Rhythm
16
16
 
17
- For actionable page requests:
17
+ Before editing, make the design decision first:
18
+
19
+ 1. Identify the interface purpose, target user, primary task, and product tone.
20
+ 2. Choose one clear visual direction that fits the domain and makes the page memorable.
21
+ 3. Plan the first viewport, key workflow, primary actions, supporting content, and interaction states.
22
+ 4. Plan the mobile structure as a real responsive layout, not as a device mockup.
23
+ 5. Then implement the design in `index.html`.
24
+
25
+ Prefer finishing the visible page over maintaining abstractions. One coherent single file is the intended architecture.
26
+
27
+ ## Implementation Contract
28
+
29
+ - Keep the whole previewable prototype in `index.html`.
30
+ - Use `<main id="app">` for the visible app/page body.
31
+ - Keep CSS in the file's `<style>` block and organize it clearly: reset, tokens, layout, components, responsive rules, and motion.
32
+ - Keep JavaScript in the file's `<script>` block and include only prototype behavior that is needed for the requested interaction.
33
+ - For multiple screens or routes, use `[data-view]` sections with a single active state, hash/state/tab navigation, and clear button/link handlers.
34
+ - Do not leave default template placeholders, empty sections, unfinished scripts, or dead controls.
35
+
36
+ ## Design Quality
37
+
38
+ Every rendered `index.html` should feel like a complete product-quality prototype:
39
+
40
+ - Give the first viewport a clear visual focus and at least one useful product action or workflow entry point.
41
+ - Use a deliberate visual system with clear typography, spacing, color, hierarchy, density, radius, shadow, and motion choices.
42
+ - Use CSS variables or clear repeated values for the page's color, spacing, radius, shadow, and motion system.
43
+ - Build realistic labels, concise content, minimal mock data, and useful interface states. Avoid lorem ipsum, vague placeholder copy, and empty marketing filler.
44
+ - Make common workflows visible and understandable, including relevant hover, focus, active, selected, empty, loading, or error states.
45
+ - Design responsive layouts for desktop and mobile; mobile should reorganize navigation, actions, and dense content instead of only shrinking columns.
46
+ - For mobile interfaces, design the real app/page layout only. Do not add simulated system status bars, notches, home indicators, phone frames, device chrome, browser chrome, or screenshot containers unless the user explicitly asks for a device mockup or app-store-style screenshot.
47
+ - Keep text readable and prevent overflow, clipping, and accidental overlap.
48
+ - Prefer polished, domain-specific UI over generic sections.
49
+ - Use spatial composition intentionally: density, negative space, asymmetry, layering, or grid discipline should match the product tone.
50
+ - Add motion, background treatment, texture, depth, hover states, and micro-interactions only when they improve the user's understanding or make the interface feel more finished.
51
+ - Use icons, controls, data, imagery, and interaction states when they fit the user's request.
52
+
53
+ ## Mock Data Minimalism
54
+
55
+ The goal is the interface design, not the dataset. Mock data must be minimal, representative, and only used when it helps the rendered UI look complete.
56
+
57
+ For repeated UI such as cards, lists, tables, feeds, shelves, rankings, chapters, messages, or products:
58
+
59
+ - Use 3-6 representative items by default.
60
+ - Across the whole prototype, keep handcrafted repeated mock records compact. Unless the user explicitly asks for a data-heavy screen, the total number of repeated mock records should usually stay under 10-12.
61
+ - Do not create large arrays, full catalogs, full chapter lists, long message histories, inventories, or full article/book content unless the user explicitly asks for them.
62
+ - Prefer static markup for simple examples. Use JavaScript data only when visible interaction needs it.
63
+ - Include just enough variation to test visual hierarchy, long/short labels, active states, empty states, and highlighted states.
64
+ - If the design needs to imply scale, use layout, counts, pagination controls, progress indicators, or "more" affordances instead of generating many records.
18
65
 
19
- 1. Form a clear visual position: purpose, audience, tone, and one memorable design idea.
20
- 2. Resolve the target page using the page target protocol.
21
- 3. Inspect the workspace when the target or related files may affect the change.
22
- 4. Create or update the previewable UI in the Project Workspace.
23
- 5. Notify the Preview Pane according to the frontend capabilities rules after file changes.
24
- 6. Reply concisely with what changed and what to inspect next.
66
+ For media libraries, readers, stores, dashboards, and management tools, never fill the page by generating many items. Show a few representative items and use layout, section labels, counts, or pagination affordances to imply scale.
25
67
 
26
- Choose a strong visual point of view and execute it consistently. Avoid bland defaults and generic AI-looking layouts.
68
+ For content-heavy interfaces, use short excerpts and visual placeholders. Do not spend tokens writing long prose, full chapters, complete documents, or many comic pages.
27
69
 
28
- Use Project Workspace tools instead of replying with advice only. If the request is underspecified but actionable, make tasteful decisions and continue. Ask a follow-up question only when the target page remains ambiguous after applying the page target protocol.
70
+ Avoid data-first implementation. Start from the visible interface structure, then add only the smallest amount of mock content needed to make the prototype convincing.
29
71
 
30
- Each user message may already include the current preview page and selected edit mode. Treat that rewritten request as the execution target, while preserving the user's original intent.
72
+ ## Anti-Patterns
31
73
 
32
- ## Prototype & Interaction Boundary
74
+ Avoid common low-quality output:
33
75
 
34
- Create previewable UI prototypes, not production application logic.
76
+ - Generic AI-style layouts: oversized gradient hero, frosted cards everywhere, vague taglines, and predictable card grids.
77
+ - One-note palettes, low-contrast gray text, excessive blur, heavy shadows, and decorative effects that fight readability.
78
+ - Repeated same-looking rounded cards for unrelated content.
79
+ - Hero sections so tall that the actual product workflow is not visible.
80
+ - Desktop layouts that cause mobile horizontal overflow or cramped button text.
81
+ - Icons that are vertically misaligned with text or controls.
82
+ - Navigation, filters, forms, charts, drawers, modals, or tabs that give no visible prototype feedback.
35
83
 
36
- Represent real workflows with designed screens, visible states, sample data, and placeholder feedback. If the user asks for real business behavior, explain that the Project Output is a UI prototype and express the flow visually instead.
84
+ ## Prototype Boundary
37
85
 
38
- Use minimal local UI state only when it helps the prototype feel clickable and understandable.
86
+ Build frontend prototypes. Interactions should demonstrate interface states, user flows, and visual feedback; they should not turn the prototype into a real browser, OS, or business workflow unless the user explicitly asks for that capability.
39
87
 
40
- Allowed local UI state:
88
+ Good prototype interactions include active tabs, modal open/close, drawer visibility, filter chips, selected rows, toast messages, simple steppers, hash/view switching, and small local state changes that make the UI intention clear.
41
89
 
42
- - buttons that open or close dialogs, drawers, popovers, or menus
43
- - dropdowns that show and hide options
44
- - tabs, segmented controls, accordions, and disclosure panels
45
- - selected, active, disabled, loading, empty, hover, focus, and error demo states
46
- - visual-only filtering or selection states
90
+ For complex actions such as Add, Import, Upload, Select folder, Connect source, Sync, or Export, default to a mock UI flow: open a modal, show sample items, update a visible state, or display a credible simulated result. Do not access local files or external services by default.
47
91
 
48
- Forbidden external or real business side effects:
92
+ Do not use `<input type="file">`, `webkitdirectory`, `showOpenFilePicker`, `FileReader`, drag-and-drop file reading, real file counting, or real local file previews unless the user explicitly asks for upload, import, local file access, or file preview behavior.
49
93
 
50
- - authentication, payments, databases, or background jobs
51
- - real search, sorting, pagination, persistence, or network requests
52
- - clipboard access, downloads, real form submissions, localStorage, sessionStorage, cookies, analytics, or timers that simulate backend work
94
+ Forms may validate required fields, show error/success states, and update local mock content. Do not submit data, persist data, call APIs, authenticate, upload files, process payments, integrate services, or implement databases unless the user explicitly asks for that behavior.
53
95
 
54
- Every previewable HTML page must:
96
+ ## Resource Rules
55
97
 
56
- - render well inside iframe preview
57
- - use inline CSS as the styling method
58
- - use minimal inline JavaScript only for local UI state interactions
59
- - include polished visual hierarchy, realistic spacing, and domain-appropriate components
60
- - include useful interaction and empty or hover states when relevant
98
+ The default `index.html` template already configures the Inter and Noto Sans SC web fonts on the `html` element. Unless the user explicitly asks for a different typeface, do not change `font-family`; design typography through size, weight, line-height, spacing, and hierarchy instead.
61
99
 
62
- ## Visual Quality Bar
100
+ Lucide icons are already configured by the default template. Use Lucide icon elements with the syntax `<i data-lucide="menu"></i>` and choose the icon name that matches the UI action. Do not use other icon systems, inline SVG icons, emoji icons, or decorative emoji as UI icons.
63
101
 
64
- - Start from a clear aesthetic concept, not a template.
65
- - Use distinctive typography choices within configured font libraries or system fonts.
66
- - Use a cohesive color system with strong contrast and intentional accents.
67
- - Prefer configured icon libraries for icons. Use inline SVG only when no icon library is configured or when the configured libraries cannot provide a suitable icon. Never use emoji as icons or decorative UI symbols.
68
- - Add atmosphere with backgrounds, gradients, texture, borders, shadows, or layered shapes when appropriate.
69
- - Use motion sparingly but purposefully; prefer CSS transitions and high-impact moments over noisy effects.
70
- - Prefer asymmetry, rhythm, overlap, negative space, and strong composition when they support the concept.
71
- - Make the design feel like real product work, not a demo block collection.
102
+ When styling Lucide icons, do not target `i`, `i[data-lucide]`, or tag selectors. Lucide replaces `<i data-lucide="..."></i>` with inline `<svg>` elements. Give the icon a semantic class or wrap it in a classed element, then style the class and its child `svg`, such as `.nav-icon svg { width: 18px; height: 18px; stroke-width: 2; }`.
72
103
 
73
- ## Output Guardrails
104
+ If JavaScript dynamically inserts markup that contains Lucide placeholders, call `lucide.createIcons()` after updating the DOM.
74
105
 
75
- - Do not use remote images.
76
- - Do not wrap HTML in markdown fences or explanatory text.
77
- - Do not use emoji icons or emoji decorative symbols.
78
- - Do not generate generic template-looking pages.
106
+ Use local CSS and configured assets first. Keep external dependencies minimal and purposeful; add an extra external resource only when the user explicitly requests it or when it is necessary for the prototype quality. Prefer code that works directly when `index.html` is loaded by the Preview Pane.
79
107
 
80
- Keep output practical, previewable, and visually distinctive.
108
+ ## Final Reply
81
109
 
82
- Final replies must be concise. State which page changed and what the user should inspect next; do not dump full HTML unless the user explicitly asks.
110
+ Keep the final response short. State what changed and mention any interaction the user can try. Mention limitations only if they affect the visible result.
@@ -1,10 +1,10 @@
1
- import { readFileSync } from "node:fs";
2
- import path from "node:path";
3
- import { fileURLToPath } from "node:url";
1
+ import { readFileSync } from 'node:fs';
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
4
 
5
5
  const PROMPT_FILES = {
6
- "agents/design-page": "agents/design-page.md",
7
- "agents/turn-prompt-rewriter": "agents/turn-prompt-rewriter.md",
6
+ 'agents/component-audit': 'agents/component-audit.md',
7
+ 'agents/design-page': 'agents/design-page.md',
8
8
  } as const;
9
9
 
10
10
  export type PromptName = keyof typeof PROMPT_FILES;
@@ -18,13 +18,13 @@ export function loadPrompt(name: PromptName) {
18
18
 
19
19
  const currentDir = path.dirname(fileURLToPath(import.meta.url));
20
20
  const candidatePaths = [
21
- path.join(currentDir, "prompts", promptFile),
21
+ path.join(currentDir, 'prompts', promptFile),
22
22
  path.join(currentDir, promptFile),
23
23
  ];
24
24
 
25
25
  for (const candidatePath of candidatePaths) {
26
26
  try {
27
- return readFileSync(candidatePath, "utf8").trim();
27
+ return readFileSync(candidatePath, 'utf8').trim();
28
28
  } catch (error) {
29
29
  if (!isNotFoundError(error)) {
30
30
  throw error;
@@ -32,16 +32,9 @@ export function loadPrompt(name: PromptName) {
32
32
  }
33
33
  }
34
34
 
35
- throw new Error(
36
- `Prompt "${name}" was not found. Searched: ${candidatePaths.join(", ")}`,
37
- );
35
+ throw new Error(`Prompt "${name}" was not found. Searched: ${candidatePaths.join(', ')}`);
38
36
  }
39
37
 
40
38
  function isNotFoundError(error: unknown) {
41
- return (
42
- typeof error === "object" &&
43
- error !== null &&
44
- "code" in error &&
45
- error.code === "ENOENT"
46
- );
39
+ return typeof error === 'object' && error !== null && 'code' in error && error.code === 'ENOENT';
47
40
  }
@@ -0,0 +1,65 @@
1
+ <!doctype html>
2
+ <html lang="{{lang}}">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>{{title}}</title>
7
+ <link rel="preconnect" href="https://fonts.googleapis.com">
8
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9
+ <link href="https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Noto+Sans+SC:wght@100..900&display=swap" rel="stylesheet">
10
+ <style>
11
+ *, *::before, *::after {
12
+ box-sizing: border-box;
13
+ }
14
+
15
+ html {
16
+ min-height: 100%;
17
+ color-scheme: light;
18
+ font-family: "Inter", "Noto Sans SC", sans-serif;
19
+ font-optical-sizing: auto;
20
+ font-weight: 400;
21
+ font-style: normal;
22
+ }
23
+
24
+ body {
25
+ margin: 0;
26
+ min-height: 100vh;
27
+ background: #ffffff;
28
+ color: #111827;
29
+ }
30
+
31
+ button,
32
+ input,
33
+ textarea,
34
+ select {
35
+ font: inherit;
36
+ }
37
+
38
+ button {
39
+ cursor: pointer;
40
+ }
41
+
42
+ img,
43
+ svg,
44
+ video,
45
+ canvas {
46
+ display: block;
47
+ max-width: 100%;
48
+ }
49
+
50
+ #app {
51
+ min-height: 100vh;
52
+ }
53
+ </style>
54
+ <script src="https://unpkg.com/lucide@latest"></script>
55
+ </head>
56
+ <body>
57
+ <main id="app"></main>
58
+ <script>
59
+ // OwnDesign Single HTML app logic starts here.
60
+ </script>
61
+ <script>
62
+ lucide.createIcons();
63
+ </script>
64
+ </body>
65
+ </html>
@@ -0,0 +1,39 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+
5
+ const TEMPLATE_FILES = {
6
+ 'html/page-shell': 'html/page-shell.html',
7
+ } as const;
8
+
9
+ export type TemplateName = keyof typeof TEMPLATE_FILES;
10
+
11
+ export function loadTemplate(name: TemplateName) {
12
+ const templateFile = TEMPLATE_FILES[name];
13
+
14
+ if (!templateFile) {
15
+ throw new Error(`Unsupported template: ${String(name)}`);
16
+ }
17
+
18
+ const currentDir = path.dirname(fileURLToPath(import.meta.url));
19
+ const candidatePaths = [
20
+ path.join(currentDir, 'templates', templateFile),
21
+ path.join(currentDir, templateFile),
22
+ ];
23
+
24
+ for (const candidatePath of candidatePaths) {
25
+ try {
26
+ return readFileSync(candidatePath, 'utf8').trim();
27
+ } catch (error) {
28
+ if (!isNotFoundError(error)) {
29
+ throw error;
30
+ }
31
+ }
32
+ }
33
+
34
+ throw new Error(`Template "${name}" was not found. Searched: ${candidatePaths.join(', ')}`);
35
+ }
36
+
37
+ function isNotFoundError(error: unknown) {
38
+ return typeof error === 'object' && error !== null && 'code' in error && error.code === 'ENOENT';
39
+ }
@@ -1 +1 @@
1
- import{Bn as e}from"./index-Bz6PFGaR.js";import{t}from"./html-DC1Ltqmc.js";var n=[Object.freeze(JSON.parse('{"injectionSelector":"L:text.html -comment","name":"angular-expression","patterns":[{"include":"#ngExpression"}],"repository":{"arrayLiteral":{"begin":"\\\\[","beginCaptures":{"0":{"name":"meta.brace.square.ts"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.ts"}},"name":"meta.array.literal.ts","patterns":[{"include":"#ngExpression"},{"include":"#punctuationComma"}]},"booleanLiteral":{"patterns":[{"match":"(?<![$.])\\\\btrue\\\\b(?!\\\\$)","name":"constant.language.boolean.true.ts"},{"match":"(?<![$.])\\\\bfalse\\\\b(?!\\\\$)","name":"constant.language.boolean.false.ts"}]},"expressionOperator":{"patterns":[{"captures":{"1":{"name":"keyword.operator.logical.ts"},"2":{"name":"entity.name.function.pipe.ng"}},"match":"((?<!\\\\|)\\\\|(?!\\\\|))\\\\s?([-$0-9A-Z_a-z]*)"},{"match":"(?<![$.])\\\\b(let)\\\\b(?!\\\\$)","name":"storage.type.ts"},{"match":"(?<![$.])\\\\b(await)\\\\b(?!\\\\$)","name":"keyword.control.flow.ts"},{"match":"(?<![$.])\\\\bdelete\\\\b(?!\\\\$)","name":"keyword.operator.expression.delete.ts"},{"match":"(?<![$.])\\\\bin\\\\b(?!\\\\$)","name":"keyword.operator.expression.in.ts"},{"match":"(?<![$.])\\\\bof\\\\b(?!\\\\$)","name":"keyword.operator.expression.of.ts"},{"match":"(?<![$.])\\\\bif\\\\b(?!\\\\$)","name":"keyword.control.if.ts"},{"match":"(?<![$.])\\\\belse\\\\b(?!\\\\$)","name":"keyword.control.else.ts"},{"match":"(?<![$.])\\\\bthen\\\\b(?!\\\\$)","name":"keyword.control.then.ts"},{"match":"(?<![$.])\\\\binstanceof\\\\b(?!\\\\$)","name":"keyword.operator.expression.instanceof.ts"},{"match":"(?<![$.])\\\\bnew\\\\b(?!\\\\$)","name":"keyword.operator.new.ts"},{"match":"(?<![$.])\\\\bvoid\\\\b(?!\\\\$)","name":"keyword.operator.expression.void.ts"},{"begin":"(?<![$.])\\\\bas\\\\b(?!\\\\$)","beginCaptures":{"0":{"name":"storage.type.as.ts"}},"end":"(?=$|[]\\"\'),:;}])","patterns":[{"include":"#type"}]},{"match":"(?:\\\\*|(?<!\\\\()/|[-%+])=","name":"keyword.operator.assignment.compound.ts"},{"match":"(?:[\\\\&^]|<<|>>>??|\\\\|)=","name":"keyword.operator.assignment.compound.bitwise.ts"},{"match":"<<|>>>?","name":"keyword.operator.bitwise.shift.ts"},{"match":"[!=]==?","name":"keyword.operator.comparison.ts"},{"match":"<=|>=|<>|[<>]","name":"keyword.operator.relational.ts"},{"match":"!|&&|\\\\?\\\\?|\\\\|\\\\|","name":"keyword.operator.logical.ts"},{"match":"[\\\\&^|~]","name":"keyword.operator.bitwise.ts"},{"match":"=","name":"keyword.operator.assignment.ts"},{"match":"--","name":"keyword.operator.decrement.ts"},{"match":"\\\\+\\\\+","name":"keyword.operator.increment.ts"},{"match":"[-%*+/]","name":"keyword.operator.arithmetic.ts"},{"captures":{"1":{"name":"keyword.operator.arithmetic.ts"}},"match":"(?<=[$_[:alnum:]])\\\\s*(/)(?![*/])"},{"include":"#typeofOperator"}]},"functionCall":{"begin":"(?=(\\\\??\\\\.\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\()","end":"(?<=\\\\))(?!(\\\\??\\\\.\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\()","patterns":[{"match":"\\\\?","name":"punctuation.accessor.ts"},{"match":"\\\\.","name":"punctuation.accessor.ts"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.ts"},{"begin":"<","beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.ts"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.ts"}},"name":"meta.type.parameters.ts","patterns":[{"include":"#type"},{"include":"#punctuationComma"}]},{"include":"#parenExpression"}]},"functionParameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.end.ts"}},"name":"meta.parameters.ts","patterns":[{"include":"#decorator"},{"include":"#parameterName"},{"include":"#variableInitializer"},{"match":",","name":"punctuation.separator.parameter.ts"}]},"identifiers":{"patterns":[{"match":"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*\\\\.\\\\s*prototype\\\\b(?!\\\\$))","name":"support.class.ts"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"constant.other.object.property.ts"},"3":{"name":"variable.other.object.property.ts"}},"match":"([!?]?\\\\.)\\\\s*(?:(\\\\p{upper}[$_\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\.\\\\s*[$_[:alpha:]][$_[:alnum:]]*)"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"entity.name.function.ts"}},"match":"(?:([!?]?\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*=\\\\s*((async\\\\s+)|(function\\\\s*[(<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)|((<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)(\\\\s*:\\\\s*(.)*)?\\\\s*=>)))"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"constant.other.property.ts"}},"match":"([!?]?\\\\.)\\\\s*(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"variable.other.property.ts"}},"match":"([!?]?\\\\.)\\\\s*([$_[:alpha:]][$_[:alnum:]]*)"},{"captures":{"1":{"name":"constant.other.object.ts"},"2":{"name":"variable.other.object.ts"}},"match":"(?:(\\\\p{upper}[$_\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\.\\\\s*[$_[:alpha:]][$_[:alnum:]]*)"},{"match":"(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])","name":"constant.character.other"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"variable.other.readwrite.ts"}]},"literal":{"name":"literal.ts","patterns":[{"include":"#numericLiteral"},{"include":"#booleanLiteral"},{"include":"#nullLiteral"},{"include":"#undefinedLiteral"},{"include":"#numericConstantLiteral"},{"include":"#arrayLiteral"},{"include":"#thisLiteral"}]},"ngExpression":{"name":"meta.expression.ng","patterns":[{"include":"#string"},{"include":"#literal"},{"include":"#ternaryExpression"},{"include":"#expressionOperator"},{"include":"#functionCall"},{"include":"#identifiers"},{"include":"#parenExpression"},{"include":"#punctuationComma"},{"include":"#punctuationSemicolon"},{"include":"#punctuationAccessor"}]},"nullLiteral":{"match":"(?<![$.])\\\\bnull\\\\b(?!\\\\$)","name":"constant.language.null.ts"},"numericConstantLiteral":{"patterns":[{"match":"(?<![$.])\\\\bNaN\\\\b(?!\\\\$)","name":"constant.language.nan.ts"},{"match":"(?<![$.])\\\\bInfinity\\\\b(?!\\\\$)","name":"constant.language.infinity.ts"}]},"numericLiteral":{"patterns":[{"match":"\\\\b(?<!\\\\$)0([Xx])\\\\h+\\\\b(?!\\\\$)","name":"constant.numeric.hex.ts"},{"match":"\\\\b(?<!\\\\$)0([Bb])[01]+\\\\b(?!\\\\$)","name":"constant.numeric.binary.ts"},{"match":"\\\\\\\\b(?<!\\\\$)0([Oo])?[0-7]+\\\\b(?!\\\\$)","name":"constant.numeric.octal.ts"},{"captures":{"0":{"name":"constant.numeric.decimal.ts"},"1":{"name":"meta.delimiter.decimal.period.ts"},"2":{"name":"meta.delimiter.decimal.period.ts"},"3":{"name":"meta.delimiter.decimal.period.ts"},"4":{"name":"meta.delimiter.decimal.period.ts"},"5":{"name":"meta.delimiter.decimal.period.ts"},"6":{"name":"meta.delimiter.decimal.period.ts"}},"match":"(?<!\\\\$)(?:\\\\b[0-9]+(\\\\.)[0-9]+[Ee][-+]?[0-9]+\\\\b|\\\\b[0-9]+(\\\\.)[Ee][-+]?[0-9]+\\\\b|\\\\B(\\\\.)[0-9]+[Ee][-+]?[0-9]+\\\\b|\\\\b[0-9]+[Ee][-+]?[0-9]+\\\\b|\\\\b[0-9]+(\\\\.)\\\\B|\\\\B(\\\\.)[0-9]+\\\\b|\\\\b[0-9]+\\\\b(?!\\\\.))(?!\\\\$)"}]},"parameterName":{"patterns":[{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"keyword.operator.rest.ts"},"4":{"name":"entity.name.function.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:\\\\s*\\\\b(readonly)\\\\s+)?(?:\\\\s*\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(\\\\.\\\\.\\\\.)?\\\\s*(?<![:=])([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(\\\\??)(?=\\\\s*(=\\\\s*((async\\\\s+)|(function\\\\s*[(<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)|((<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)(\\\\s*:\\\\s*(.)*)?\\\\s*=>)))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>))))))))"},{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"keyword.operator.rest.ts"},"4":{"name":"variable.parameter.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:\\\\s*\\\\b(readonly)\\\\s+)?(?:\\\\s*\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(\\\\.\\\\.\\\\.)?\\\\s*(?<![:=])([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(\\\\??)"}]},"parenExpression":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#ngExpression"},{"include":"#punctuationComma"}]},"punctuationAccessor":{"match":"(?:\\\\?|!?)\\\\.","name":"punctuation.accessor.ts"},"punctuationComma":{"match":",","name":"punctuation.separator.comma.ts"},"punctuationSemicolon":{"match":";","name":"punctuation.terminator.statement.ts"},"qstringDouble":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ts"}},"end":"(\\")|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.ts"},"2":{"name":"invalid.illegal.newline.ts"}},"name":"string.quoted.double.ts","patterns":[{"include":"#stringCharacterEscape"}]},"qstringSingle":{"begin":"\'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ts"}},"end":"(\')|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.ts"},"2":{"name":"invalid.illegal.newline.ts"}},"name":"string.quoted.single.ts","patterns":[{"include":"#stringCharacterEscape"}]},"string":{"patterns":[{"include":"#qstringSingle"},{"include":"#qstringDouble"},{"include":"#templateLiteral"}]},"stringCharacterEscape":{"match":"\\\\\\\\(x\\\\h{2}|[012][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)","name":"constant.character.escape.ts"},"templateLiteral":{"patterns":[{"include":"#templateLiteralCall"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?(`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.ts"},"2":{"name":"string.template.ts punctuation.definition.string.template.begin.ts"}},"contentName":"string.template.ts","end":"`","endCaptures":{"0":{"name":"string.template.ts punctuation.definition.string.template.end.ts"}},"patterns":[{"include":"#templateLiteralSubstitutionElement"},{"include":"#stringCharacterEscape"}]}]},"templateLiteralCall":{"patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*)(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?`)","end":"(?=`)","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*))","end":"(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?`)","patterns":[{"include":"#support-function-call-identifiers"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.tagged-template.ts"}]},{"include":"#typeArguments"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?\\\\s*(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.ts"}},"end":"(?=`)","patterns":[{"include":"#typeArguments"}]}]},"templateLiteralSubstitutionElement":{"begin":"\\\\$\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.ts"}},"contentName":"meta.embedded.line.ts","end":"}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.ts"}},"name":"meta.template.expression.ts","patterns":[{"include":"#ngExpression"}]},"ternaryExpression":{"begin":"(?!\\\\?\\\\.\\\\s*\\\\D)(\\\\?)(?!\\\\?)","beginCaptures":{"1":{"name":"keyword.operator.ternary.ts"}},"end":"\\\\s*(:)","endCaptures":{"1":{"name":"keyword.operator.ternary.ts"}},"patterns":[{"include":"#ngExpression"}]},"thisLiteral":{"match":"(?<![$.])\\\\bthis\\\\b(?!\\\\$)","name":"variable.language.this.ts"},"type":{"name":"meta.type.ts","patterns":[{"include":"#string"},{"include":"#numericLiteral"},{"include":"#typeBuiltinLiterals"},{"include":"#typeTuple"},{"include":"#typeObject"},{"include":"#typeOperators"},{"include":"#typeFnTypeParameters"},{"include":"#typeParenOrFunctionParameters"},{"include":"#typeName"}]},"typeAnnotation":{"begin":":","beginCaptures":{"0":{"name":"keyword.operator.type.annotation.ts"}},"end":"(?=$|[]),;}]|//|\\")|(?==[^>])|(?<=[]$)>_}[:alpha:]])\\\\s*(?=\\\\{)","name":"meta.type.annotation.ts","patterns":[{"include":"#type"}]},"typeArguments":{"begin":"<","beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.ts"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.ts"}},"name":"meta.type.parameters.ts","patterns":[{"include":"#typeArgumentsBody"}]},"typeArgumentsBody":{"patterns":[{"captures":{"0":{"name":"keyword.operator.type.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(_)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"include":"#type"},{"include":"#punctuationComma"}]},"typeBuiltinLiterals":{"match":"(?<![$.])\\\\b(this|true|false|undefined|null)\\\\b(?!\\\\$)","name":"support.type.builtin.ts"},"typeFnTypeParameters":{"patterns":[{"captures":{"1":{"name":"keyword.control.new.ts"}},"match":"(?<![$.])\\\\b(new)\\\\b(?=\\\\s*<)","name":"meta.type.constructor.ts"},{"begin":"(?<![$.])\\\\b(new)\\\\b\\\\s*(?=\\\\()","beginCaptures":{"1":{"name":"keyword.control.new.ts"}},"end":"(?<=\\\\))","name":"meta.type.constructor.ts","patterns":[{"include":"#functionParameters"}]},{"begin":"(?<=>)\\\\s*(?=\\\\()","end":"(?<=\\\\))","include":"#typeofOperator","name":"meta.type.function.ts","patterns":[{"include":"#functionParameters"}]},{"begin":"((?=\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>))))))","end":"(?<=\\\\))","name":"meta.type.function.ts","patterns":[{"include":"#functionParameters"}]}]},"typeName":{"patterns":[{"captures":{"1":{"name":"entity.name.type.module.ts"},"2":{"name":"punctuation.accessor.ts"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*([!?]?\\\\.)"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"entity.name.type.ts"}]},"typeObject":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"name":"meta.object.type.ts","patterns":[{"include":"#typeObjectMembers"}]},"typeObjectMembers":{"patterns":[{"include":"#typeAnnotation"},{"include":"#punctuationComma"},{"include":"#punctuationSemicolon"}]},"typeOperators":{"patterns":[{"include":"#typeofOperator"},{"match":"[\\\\&|]","name":"keyword.operator.type.ts"},{"match":"(?<![$.])\\\\bkeyof\\\\b(?!\\\\$)","name":"keyword.operator.expression.keyof.ts"}]},"typeParenOrFunctionParameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"name":"meta.type.paren.cover.ts","patterns":[{"include":"#type"},{"include":"#functionParameters"}]},"typeTuple":{"begin":"\\\\[","beginCaptures":{"0":{"name":"meta.brace.square.ts"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.ts"}},"name":"meta.type.tuple.ts","patterns":[{"include":"#type"},{"include":"#punctuationComma"}]},"typeofOperator":{"match":"(?<![$.])\\\\btypeof\\\\b(?!\\\\$)","name":"keyword.operator.expression.typeof.ts"},"undefinedLiteral":{"match":"(?<![$.])\\\\bundefined\\\\b(?!\\\\$)","name":"constant.language.undefined.ts"},"variableInitializer":{"begin":"(?<![!=])(=)(?!=)","beginCaptures":{"1":{"name":"keyword.operator.assignment.ts"}},"end":"(?=$|[]),;}])","patterns":[{"include":"#ngExpression"}]}},"scopeName":"expression.ng"}'))],r=Object.freeze(JSON.parse(`{"injectTo":["text.html.derivative","text.html.derivative.ng","source.ts.ng"],"injectionSelector":"L:text.html -comment -expression.ng -meta.tag -source.css -source.js","name":"angular-let-declaration","patterns":[{"include":"#letDeclaration"}],"repository":{"letDeclaration":{"begin":"(@let)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(=)?","beginCaptures":{"1":{"name":"storage.type.ng"},"2":{"name":"variable.other.constant.ng"},"3":{"name":"keyword.operator.assignment.ng"}},"end":"(?<=;)","name":"meta.definition.variable.ng","patterns":[{"include":"#letInitializer"}]},"letInitializer":{"begin":"\\\\s*","beginCaptures":{"0":{"name":"keyword.operator.assignment.ng"}},"contentName":"meta.definition.variable.initializer.ng","end":";","endCaptures":{"0":{"name":"punctuation.terminator.statement.ng"}},"patterns":[{"include":"expression.ng"}]}},"scopeName":"template.let.ng","embeddedLangs":["angular-expression"]}`)),i=[...n,r],a=Object.freeze(JSON.parse(`{"injectTo":["text.html.derivative","text.html.derivative.ng","source.ts.ng"],"injectionSelector":"L:text.html -comment","name":"angular-template","patterns":[{"include":"#interpolation"}],"repository":{"interpolation":{"begin":"\\\\{\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"contentName":"expression.ng","end":"}}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"patterns":[{"include":"expression.ng"}]}},"scopeName":"template.ng","embeddedLangs":["angular-expression"]}`)),o=[...n,a],s=Object.freeze(JSON.parse(`{"injectTo":["text.html.derivative","text.html.derivative.ng","source.ts.ng"],"injectionSelector":"L:text.html -comment -expression.ng -meta.tag -source.css -source.js","name":"angular-template-blocks","patterns":[{"include":"#block"}],"repository":{"block":{"begin":"(@)(if|else if|else|defer|placeholder|loading|error|switch|case|default|for|empty)\\\\s*","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.block.kind.ng"}},"end":"(?<=})","name":"control.block.ng","patterns":[{"include":"#blockExpression"},{"include":"#blockBody"}]},"blockBody":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"contentName":"control.block.body.ng","end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"patterns":[{"include":"text.html.derivative.ng"},{"include":"template.ng"}]},"blockExpression":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"contentName":"control.block.expression.ng","end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#blockExpressionOfClause"},{"include":"#blockExpressionLetBinding"},{"include":"#blockExpressionTrackClause"},{"include":"expression.ng"}]},"blockExpressionLetBinding":{"begin":"\\\\blet\\\\b","beginCaptures":{"0":{"name":"storage.type.ng"}},"end":"(?=[$)])|(?<=;)","patterns":[{"include":"expression.ng"}]},"blockExpressionOfClause":{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s+(of)\\\\b","beginCaptures":{"1":{"name":"variable.other.constant.ng"},"2":{"name":"keyword.operator.expression.of.ng"}},"end":"(?=[$)])|(?<=;)","patterns":[{"include":"expression.ng"}]},"blockExpressionTrackClause":{"begin":"\\\\btrack\\\\b","beginCaptures":{"0":{"name":"keyword.control.track.ng"}},"end":"(?=[$)])|(?<=;)","patterns":[{"include":"expression.ng"}]},"transition":{"match":"@","name":"keyword.control.block.transition.ng"}},"scopeName":"template.blocks.ng","embeddedLangs":["angular-expression","angular-template"]}`)),c=[...n,...o,s],l=e({default:()=>d}),u=Object.freeze(JSON.parse(`{"displayName":"Angular HTML","injections":{"R:text.html - (comment.block, text.html meta.embedded, meta.tag.*.*.html, meta.tag.*.*.*.html, meta.tag.*.*.*.*.html)":{"patterns":[{"match":"<","name":"invalid.illegal.bad-angle-bracket.html"}]}},"name":"angular-html","patterns":[{"include":"text.html.basic#core-minus-invalid"},{"begin":"(</?)(\\\\w[^>\\\\s]*)(?<!/)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":"((?: ?/)?>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.other.unrecognized.html.derivative","patterns":[{"include":"text.html.basic#attribute"}]}],"scopeName":"text.html.derivative.ng","embeddedLangs":["html","angular-expression","angular-let-declaration","angular-template","angular-template-blocks"]}`)),d=[...t,...n,...i,...o,...c,u];export{i as a,o as i,l as n,n as o,c as r,d as t};
1
+ import{Bn as e}from"./index-Ai406YO8.js";import{t}from"./html-Cst8cPsk.js";var n=[Object.freeze(JSON.parse('{"injectionSelector":"L:text.html -comment","name":"angular-expression","patterns":[{"include":"#ngExpression"}],"repository":{"arrayLiteral":{"begin":"\\\\[","beginCaptures":{"0":{"name":"meta.brace.square.ts"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.ts"}},"name":"meta.array.literal.ts","patterns":[{"include":"#ngExpression"},{"include":"#punctuationComma"}]},"booleanLiteral":{"patterns":[{"match":"(?<![$.])\\\\btrue\\\\b(?!\\\\$)","name":"constant.language.boolean.true.ts"},{"match":"(?<![$.])\\\\bfalse\\\\b(?!\\\\$)","name":"constant.language.boolean.false.ts"}]},"expressionOperator":{"patterns":[{"captures":{"1":{"name":"keyword.operator.logical.ts"},"2":{"name":"entity.name.function.pipe.ng"}},"match":"((?<!\\\\|)\\\\|(?!\\\\|))\\\\s?([-$0-9A-Z_a-z]*)"},{"match":"(?<![$.])\\\\b(let)\\\\b(?!\\\\$)","name":"storage.type.ts"},{"match":"(?<![$.])\\\\b(await)\\\\b(?!\\\\$)","name":"keyword.control.flow.ts"},{"match":"(?<![$.])\\\\bdelete\\\\b(?!\\\\$)","name":"keyword.operator.expression.delete.ts"},{"match":"(?<![$.])\\\\bin\\\\b(?!\\\\$)","name":"keyword.operator.expression.in.ts"},{"match":"(?<![$.])\\\\bof\\\\b(?!\\\\$)","name":"keyword.operator.expression.of.ts"},{"match":"(?<![$.])\\\\bif\\\\b(?!\\\\$)","name":"keyword.control.if.ts"},{"match":"(?<![$.])\\\\belse\\\\b(?!\\\\$)","name":"keyword.control.else.ts"},{"match":"(?<![$.])\\\\bthen\\\\b(?!\\\\$)","name":"keyword.control.then.ts"},{"match":"(?<![$.])\\\\binstanceof\\\\b(?!\\\\$)","name":"keyword.operator.expression.instanceof.ts"},{"match":"(?<![$.])\\\\bnew\\\\b(?!\\\\$)","name":"keyword.operator.new.ts"},{"match":"(?<![$.])\\\\bvoid\\\\b(?!\\\\$)","name":"keyword.operator.expression.void.ts"},{"begin":"(?<![$.])\\\\bas\\\\b(?!\\\\$)","beginCaptures":{"0":{"name":"storage.type.as.ts"}},"end":"(?=$|[]\\"\'),:;}])","patterns":[{"include":"#type"}]},{"match":"(?:\\\\*|(?<!\\\\()/|[-%+])=","name":"keyword.operator.assignment.compound.ts"},{"match":"(?:[\\\\&^]|<<|>>>??|\\\\|)=","name":"keyword.operator.assignment.compound.bitwise.ts"},{"match":"<<|>>>?","name":"keyword.operator.bitwise.shift.ts"},{"match":"[!=]==?","name":"keyword.operator.comparison.ts"},{"match":"<=|>=|<>|[<>]","name":"keyword.operator.relational.ts"},{"match":"!|&&|\\\\?\\\\?|\\\\|\\\\|","name":"keyword.operator.logical.ts"},{"match":"[\\\\&^|~]","name":"keyword.operator.bitwise.ts"},{"match":"=","name":"keyword.operator.assignment.ts"},{"match":"--","name":"keyword.operator.decrement.ts"},{"match":"\\\\+\\\\+","name":"keyword.operator.increment.ts"},{"match":"[-%*+/]","name":"keyword.operator.arithmetic.ts"},{"captures":{"1":{"name":"keyword.operator.arithmetic.ts"}},"match":"(?<=[$_[:alnum:]])\\\\s*(/)(?![*/])"},{"include":"#typeofOperator"}]},"functionCall":{"begin":"(?=(\\\\??\\\\.\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\()","end":"(?<=\\\\))(?!(\\\\??\\\\.\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\()","patterns":[{"match":"\\\\?","name":"punctuation.accessor.ts"},{"match":"\\\\.","name":"punctuation.accessor.ts"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.ts"},{"begin":"<","beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.ts"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.ts"}},"name":"meta.type.parameters.ts","patterns":[{"include":"#type"},{"include":"#punctuationComma"}]},{"include":"#parenExpression"}]},"functionParameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.end.ts"}},"name":"meta.parameters.ts","patterns":[{"include":"#decorator"},{"include":"#parameterName"},{"include":"#variableInitializer"},{"match":",","name":"punctuation.separator.parameter.ts"}]},"identifiers":{"patterns":[{"match":"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*\\\\.\\\\s*prototype\\\\b(?!\\\\$))","name":"support.class.ts"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"constant.other.object.property.ts"},"3":{"name":"variable.other.object.property.ts"}},"match":"([!?]?\\\\.)\\\\s*(?:(\\\\p{upper}[$_\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\.\\\\s*[$_[:alpha:]][$_[:alnum:]]*)"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"entity.name.function.ts"}},"match":"(?:([!?]?\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*=\\\\s*((async\\\\s+)|(function\\\\s*[(<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)|((<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)(\\\\s*:\\\\s*(.)*)?\\\\s*=>)))"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"constant.other.property.ts"}},"match":"([!?]?\\\\.)\\\\s*(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"variable.other.property.ts"}},"match":"([!?]?\\\\.)\\\\s*([$_[:alpha:]][$_[:alnum:]]*)"},{"captures":{"1":{"name":"constant.other.object.ts"},"2":{"name":"variable.other.object.ts"}},"match":"(?:(\\\\p{upper}[$_\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\.\\\\s*[$_[:alpha:]][$_[:alnum:]]*)"},{"match":"(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])","name":"constant.character.other"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"variable.other.readwrite.ts"}]},"literal":{"name":"literal.ts","patterns":[{"include":"#numericLiteral"},{"include":"#booleanLiteral"},{"include":"#nullLiteral"},{"include":"#undefinedLiteral"},{"include":"#numericConstantLiteral"},{"include":"#arrayLiteral"},{"include":"#thisLiteral"}]},"ngExpression":{"name":"meta.expression.ng","patterns":[{"include":"#string"},{"include":"#literal"},{"include":"#ternaryExpression"},{"include":"#expressionOperator"},{"include":"#functionCall"},{"include":"#identifiers"},{"include":"#parenExpression"},{"include":"#punctuationComma"},{"include":"#punctuationSemicolon"},{"include":"#punctuationAccessor"}]},"nullLiteral":{"match":"(?<![$.])\\\\bnull\\\\b(?!\\\\$)","name":"constant.language.null.ts"},"numericConstantLiteral":{"patterns":[{"match":"(?<![$.])\\\\bNaN\\\\b(?!\\\\$)","name":"constant.language.nan.ts"},{"match":"(?<![$.])\\\\bInfinity\\\\b(?!\\\\$)","name":"constant.language.infinity.ts"}]},"numericLiteral":{"patterns":[{"match":"\\\\b(?<!\\\\$)0([Xx])\\\\h+\\\\b(?!\\\\$)","name":"constant.numeric.hex.ts"},{"match":"\\\\b(?<!\\\\$)0([Bb])[01]+\\\\b(?!\\\\$)","name":"constant.numeric.binary.ts"},{"match":"\\\\\\\\b(?<!\\\\$)0([Oo])?[0-7]+\\\\b(?!\\\\$)","name":"constant.numeric.octal.ts"},{"captures":{"0":{"name":"constant.numeric.decimal.ts"},"1":{"name":"meta.delimiter.decimal.period.ts"},"2":{"name":"meta.delimiter.decimal.period.ts"},"3":{"name":"meta.delimiter.decimal.period.ts"},"4":{"name":"meta.delimiter.decimal.period.ts"},"5":{"name":"meta.delimiter.decimal.period.ts"},"6":{"name":"meta.delimiter.decimal.period.ts"}},"match":"(?<!\\\\$)(?:\\\\b[0-9]+(\\\\.)[0-9]+[Ee][-+]?[0-9]+\\\\b|\\\\b[0-9]+(\\\\.)[Ee][-+]?[0-9]+\\\\b|\\\\B(\\\\.)[0-9]+[Ee][-+]?[0-9]+\\\\b|\\\\b[0-9]+[Ee][-+]?[0-9]+\\\\b|\\\\b[0-9]+(\\\\.)\\\\B|\\\\B(\\\\.)[0-9]+\\\\b|\\\\b[0-9]+\\\\b(?!\\\\.))(?!\\\\$)"}]},"parameterName":{"patterns":[{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"keyword.operator.rest.ts"},"4":{"name":"entity.name.function.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:\\\\s*\\\\b(readonly)\\\\s+)?(?:\\\\s*\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(\\\\.\\\\.\\\\.)?\\\\s*(?<![:=])([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(\\\\??)(?=\\\\s*(=\\\\s*((async\\\\s+)|(function\\\\s*[(<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)|((<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)(\\\\s*:\\\\s*(.)*)?\\\\s*=>)))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>))))))))"},{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"keyword.operator.rest.ts"},"4":{"name":"variable.parameter.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:\\\\s*\\\\b(readonly)\\\\s+)?(?:\\\\s*\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(\\\\.\\\\.\\\\.)?\\\\s*(?<![:=])([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(\\\\??)"}]},"parenExpression":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#ngExpression"},{"include":"#punctuationComma"}]},"punctuationAccessor":{"match":"(?:\\\\?|!?)\\\\.","name":"punctuation.accessor.ts"},"punctuationComma":{"match":",","name":"punctuation.separator.comma.ts"},"punctuationSemicolon":{"match":";","name":"punctuation.terminator.statement.ts"},"qstringDouble":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ts"}},"end":"(\\")|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.ts"},"2":{"name":"invalid.illegal.newline.ts"}},"name":"string.quoted.double.ts","patterns":[{"include":"#stringCharacterEscape"}]},"qstringSingle":{"begin":"\'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ts"}},"end":"(\')|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.ts"},"2":{"name":"invalid.illegal.newline.ts"}},"name":"string.quoted.single.ts","patterns":[{"include":"#stringCharacterEscape"}]},"string":{"patterns":[{"include":"#qstringSingle"},{"include":"#qstringDouble"},{"include":"#templateLiteral"}]},"stringCharacterEscape":{"match":"\\\\\\\\(x\\\\h{2}|[012][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)","name":"constant.character.escape.ts"},"templateLiteral":{"patterns":[{"include":"#templateLiteralCall"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?(`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.ts"},"2":{"name":"string.template.ts punctuation.definition.string.template.begin.ts"}},"contentName":"string.template.ts","end":"`","endCaptures":{"0":{"name":"string.template.ts punctuation.definition.string.template.end.ts"}},"patterns":[{"include":"#templateLiteralSubstitutionElement"},{"include":"#stringCharacterEscape"}]}]},"templateLiteralCall":{"patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*)(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?`)","end":"(?=`)","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*))","end":"(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?`)","patterns":[{"include":"#support-function-call-identifiers"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.tagged-template.ts"}]},{"include":"#typeArguments"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?\\\\s*(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.ts"}},"end":"(?=`)","patterns":[{"include":"#typeArguments"}]}]},"templateLiteralSubstitutionElement":{"begin":"\\\\$\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.ts"}},"contentName":"meta.embedded.line.ts","end":"}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.ts"}},"name":"meta.template.expression.ts","patterns":[{"include":"#ngExpression"}]},"ternaryExpression":{"begin":"(?!\\\\?\\\\.\\\\s*\\\\D)(\\\\?)(?!\\\\?)","beginCaptures":{"1":{"name":"keyword.operator.ternary.ts"}},"end":"\\\\s*(:)","endCaptures":{"1":{"name":"keyword.operator.ternary.ts"}},"patterns":[{"include":"#ngExpression"}]},"thisLiteral":{"match":"(?<![$.])\\\\bthis\\\\b(?!\\\\$)","name":"variable.language.this.ts"},"type":{"name":"meta.type.ts","patterns":[{"include":"#string"},{"include":"#numericLiteral"},{"include":"#typeBuiltinLiterals"},{"include":"#typeTuple"},{"include":"#typeObject"},{"include":"#typeOperators"},{"include":"#typeFnTypeParameters"},{"include":"#typeParenOrFunctionParameters"},{"include":"#typeName"}]},"typeAnnotation":{"begin":":","beginCaptures":{"0":{"name":"keyword.operator.type.annotation.ts"}},"end":"(?=$|[]),;}]|//|\\")|(?==[^>])|(?<=[]$)>_}[:alpha:]])\\\\s*(?=\\\\{)","name":"meta.type.annotation.ts","patterns":[{"include":"#type"}]},"typeArguments":{"begin":"<","beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.ts"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.ts"}},"name":"meta.type.parameters.ts","patterns":[{"include":"#typeArgumentsBody"}]},"typeArgumentsBody":{"patterns":[{"captures":{"0":{"name":"keyword.operator.type.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(_)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"include":"#type"},{"include":"#punctuationComma"}]},"typeBuiltinLiterals":{"match":"(?<![$.])\\\\b(this|true|false|undefined|null)\\\\b(?!\\\\$)","name":"support.type.builtin.ts"},"typeFnTypeParameters":{"patterns":[{"captures":{"1":{"name":"keyword.control.new.ts"}},"match":"(?<![$.])\\\\b(new)\\\\b(?=\\\\s*<)","name":"meta.type.constructor.ts"},{"begin":"(?<![$.])\\\\b(new)\\\\b\\\\s*(?=\\\\()","beginCaptures":{"1":{"name":"keyword.control.new.ts"}},"end":"(?<=\\\\))","name":"meta.type.constructor.ts","patterns":[{"include":"#functionParameters"}]},{"begin":"(?<=>)\\\\s*(?=\\\\()","end":"(?<=\\\\))","include":"#typeofOperator","name":"meta.type.function.ts","patterns":[{"include":"#functionParameters"}]},{"begin":"((?=\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>))))))","end":"(?<=\\\\))","name":"meta.type.function.ts","patterns":[{"include":"#functionParameters"}]}]},"typeName":{"patterns":[{"captures":{"1":{"name":"entity.name.type.module.ts"},"2":{"name":"punctuation.accessor.ts"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*([!?]?\\\\.)"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"entity.name.type.ts"}]},"typeObject":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"name":"meta.object.type.ts","patterns":[{"include":"#typeObjectMembers"}]},"typeObjectMembers":{"patterns":[{"include":"#typeAnnotation"},{"include":"#punctuationComma"},{"include":"#punctuationSemicolon"}]},"typeOperators":{"patterns":[{"include":"#typeofOperator"},{"match":"[\\\\&|]","name":"keyword.operator.type.ts"},{"match":"(?<![$.])\\\\bkeyof\\\\b(?!\\\\$)","name":"keyword.operator.expression.keyof.ts"}]},"typeParenOrFunctionParameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"name":"meta.type.paren.cover.ts","patterns":[{"include":"#type"},{"include":"#functionParameters"}]},"typeTuple":{"begin":"\\\\[","beginCaptures":{"0":{"name":"meta.brace.square.ts"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.ts"}},"name":"meta.type.tuple.ts","patterns":[{"include":"#type"},{"include":"#punctuationComma"}]},"typeofOperator":{"match":"(?<![$.])\\\\btypeof\\\\b(?!\\\\$)","name":"keyword.operator.expression.typeof.ts"},"undefinedLiteral":{"match":"(?<![$.])\\\\bundefined\\\\b(?!\\\\$)","name":"constant.language.undefined.ts"},"variableInitializer":{"begin":"(?<![!=])(=)(?!=)","beginCaptures":{"1":{"name":"keyword.operator.assignment.ts"}},"end":"(?=$|[]),;}])","patterns":[{"include":"#ngExpression"}]}},"scopeName":"expression.ng"}'))],r=Object.freeze(JSON.parse(`{"injectTo":["text.html.derivative","text.html.derivative.ng","source.ts.ng"],"injectionSelector":"L:text.html -comment -expression.ng -meta.tag -source.css -source.js","name":"angular-let-declaration","patterns":[{"include":"#letDeclaration"}],"repository":{"letDeclaration":{"begin":"(@let)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(=)?","beginCaptures":{"1":{"name":"storage.type.ng"},"2":{"name":"variable.other.constant.ng"},"3":{"name":"keyword.operator.assignment.ng"}},"end":"(?<=;)","name":"meta.definition.variable.ng","patterns":[{"include":"#letInitializer"}]},"letInitializer":{"begin":"\\\\s*","beginCaptures":{"0":{"name":"keyword.operator.assignment.ng"}},"contentName":"meta.definition.variable.initializer.ng","end":";","endCaptures":{"0":{"name":"punctuation.terminator.statement.ng"}},"patterns":[{"include":"expression.ng"}]}},"scopeName":"template.let.ng","embeddedLangs":["angular-expression"]}`)),i=[...n,r],a=Object.freeze(JSON.parse(`{"injectTo":["text.html.derivative","text.html.derivative.ng","source.ts.ng"],"injectionSelector":"L:text.html -comment","name":"angular-template","patterns":[{"include":"#interpolation"}],"repository":{"interpolation":{"begin":"\\\\{\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"contentName":"expression.ng","end":"}}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"patterns":[{"include":"expression.ng"}]}},"scopeName":"template.ng","embeddedLangs":["angular-expression"]}`)),o=[...n,a],s=Object.freeze(JSON.parse(`{"injectTo":["text.html.derivative","text.html.derivative.ng","source.ts.ng"],"injectionSelector":"L:text.html -comment -expression.ng -meta.tag -source.css -source.js","name":"angular-template-blocks","patterns":[{"include":"#block"}],"repository":{"block":{"begin":"(@)(if|else if|else|defer|placeholder|loading|error|switch|case|default|for|empty)\\\\s*","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.block.kind.ng"}},"end":"(?<=})","name":"control.block.ng","patterns":[{"include":"#blockExpression"},{"include":"#blockBody"}]},"blockBody":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"contentName":"control.block.body.ng","end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"patterns":[{"include":"text.html.derivative.ng"},{"include":"template.ng"}]},"blockExpression":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"contentName":"control.block.expression.ng","end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#blockExpressionOfClause"},{"include":"#blockExpressionLetBinding"},{"include":"#blockExpressionTrackClause"},{"include":"expression.ng"}]},"blockExpressionLetBinding":{"begin":"\\\\blet\\\\b","beginCaptures":{"0":{"name":"storage.type.ng"}},"end":"(?=[$)])|(?<=;)","patterns":[{"include":"expression.ng"}]},"blockExpressionOfClause":{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s+(of)\\\\b","beginCaptures":{"1":{"name":"variable.other.constant.ng"},"2":{"name":"keyword.operator.expression.of.ng"}},"end":"(?=[$)])|(?<=;)","patterns":[{"include":"expression.ng"}]},"blockExpressionTrackClause":{"begin":"\\\\btrack\\\\b","beginCaptures":{"0":{"name":"keyword.control.track.ng"}},"end":"(?=[$)])|(?<=;)","patterns":[{"include":"expression.ng"}]},"transition":{"match":"@","name":"keyword.control.block.transition.ng"}},"scopeName":"template.blocks.ng","embeddedLangs":["angular-expression","angular-template"]}`)),c=[...n,...o,s],l=e({default:()=>d}),u=Object.freeze(JSON.parse(`{"displayName":"Angular HTML","injections":{"R:text.html - (comment.block, text.html meta.embedded, meta.tag.*.*.html, meta.tag.*.*.*.html, meta.tag.*.*.*.*.html)":{"patterns":[{"match":"<","name":"invalid.illegal.bad-angle-bracket.html"}]}},"name":"angular-html","patterns":[{"include":"text.html.basic#core-minus-invalid"},{"begin":"(</?)(\\\\w[^>\\\\s]*)(?<!/)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":"((?: ?/)?>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.other.unrecognized.html.derivative","patterns":[{"include":"text.html.basic#attribute"}]}],"scopeName":"text.html.derivative.ng","embeddedLangs":["html","angular-expression","angular-let-declaration","angular-template","angular-template-blocks"]}`)),d=[...t,...n,...i,...o,...c,u];export{i as a,o as i,l as n,n as o,c as r,d as t};