owndesign 0.1.7 → 0.1.9

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 -1
  2. package/dist/server/index.js +647 -1475
  3. package/dist/server/prompts/agents/component-audit.md +24 -0
  4. package/dist/server/prompts/agents/design-page.md +87 -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-CoTKBCTn.js → angular-html-DCGj6j9k.js} +1 -1
  9. package/dist/web/assets/{angular-ts-B6lkmQt5.js → angular-ts-_jS5FvKQ.js} +1 -1
  10. package/dist/web/assets/{apl-DdUDDcTX.js → apl-COUiMcRO.js} +1 -1
  11. package/dist/web/assets/{arc-CpC_-kIU.js → arc-DO65316F.js} +1 -1
  12. package/dist/web/assets/architecture-7EHR7CIX-D10X4FnP.js +1 -0
  13. package/dist/web/assets/{architectureDiagram-3BPJPVTR-BFC9sw4f.js → architectureDiagram-3BPJPVTR-4QTI95py.js} +1 -1
  14. package/dist/web/assets/{astro-D8dj_1e3.js → astro-DBm7xN0H.js} +1 -1
  15. package/dist/web/assets/{blade-BOBPcO2h.js → blade-BrcGRjeD.js} +1 -1
  16. package/dist/web/assets/{blockDiagram-GPEHLZMM-Dm-IZ0OK.js → blockDiagram-GPEHLZMM-DyW2gTLi.js} +1 -1
  17. package/dist/web/assets/{c-BuJlpWo1.js → c-DAqlvgYb.js} +1 -1
  18. package/dist/web/assets/{c4Diagram-AAUBKEIU-D_naMOBh.js → c4Diagram-AAUBKEIU-D7VLn3UY.js} +1 -1
  19. package/dist/web/assets/channel-D4A7yvhc.js +1 -0
  20. package/dist/web/assets/{chunk-2J33WTMH-Br9TjHyg.js → chunk-2J33WTMH-ZI7iZmam.js} +1 -1
  21. package/dist/web/assets/{chunk-4BX2VUAB-BKXeBOxn.js → chunk-4BX2VUAB-BXZ1tYtp.js} +1 -1
  22. package/dist/web/assets/{chunk-55IACEB6-D3MxtENu.js → chunk-55IACEB6-BruFuyzh.js} +1 -1
  23. package/dist/web/assets/{chunk-727SXJPM-9i7OtYmm.js → chunk-727SXJPM-WfltwAyi.js} +1 -1
  24. package/dist/web/assets/{chunk-AQP2D5EJ-C1rNd_R7.js → chunk-AQP2D5EJ-m-6Oqccg.js} +1 -1
  25. package/dist/web/assets/{chunk-FMBD7UC4-fJyYpXV-.js → chunk-FMBD7UC4-CTpop8z0.js} +1 -1
  26. package/dist/web/assets/{chunk-ND2GUHAM-DNlEVqx2.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-ClEhNYgi.js → cobol-CV8XIe3g.js} +1 -1
  31. package/dist/web/assets/{coffee-DKH3A-3k.js → coffee-CjS-bqem.js} +1 -1
  32. package/dist/web/assets/{cose-bilkent-S5V4N54A-CKEXfMFa.js → cose-bilkent-S5V4N54A-qeF_aTDs.js} +1 -1
  33. package/dist/web/assets/{cpp-Dg0_NLWR.js → cpp-BWTrby03.js} +1 -1
  34. package/dist/web/assets/{crystal-B-pl8MQM.js → crystal-B4jSurfu.js} +1 -1
  35. package/dist/web/assets/{css-Q2XFe7KV.js → css-CXDKo6HN.js} +1 -1
  36. package/dist/web/assets/{dagre-BM42HDAG-CGLXhpG-.js → dagre-BM42HDAG-mtpIrAd-.js} +1 -1
  37. package/dist/web/assets/{diagram-2AECGRRQ-Yz0i_67x.js → diagram-2AECGRRQ-C2daXqRz.js} +1 -1
  38. package/dist/web/assets/{diagram-5GNKFQAL-BnSJ2Z2M.js → diagram-5GNKFQAL-Yn3Kkd1e.js} +1 -1
  39. package/dist/web/assets/{diagram-KO2AKTUF-B15W-hhD.js → diagram-KO2AKTUF-BSZBlF1_.js} +1 -1
  40. package/dist/web/assets/{diagram-LMA3HP47-BLsYWrS9.js → diagram-LMA3HP47-C-o1wwy4.js} +1 -1
  41. package/dist/web/assets/{diagram-OG6HWLK6-73omsPnV.js → diagram-OG6HWLK6-BadUuiav.js} +1 -1
  42. package/dist/web/assets/{edge-Dhh-Fs5C.js → edge-IP3F2dQ8.js} +1 -1
  43. package/dist/web/assets/{elixir-COHWreUF.js → elixir-DNv4dzV2.js} +1 -1
  44. package/dist/web/assets/{elm-CYxhy8U2.js → elm-DGlxwCzv.js} +1 -1
  45. package/dist/web/assets/{erDiagram-TEJ5UH35-a5r4A3JM.js → erDiagram-TEJ5UH35-uLYwqFWM.js} +1 -1
  46. package/dist/web/assets/{erb-Dl2ohr-E.js → erb-Cx4MSh15.js} +1 -1
  47. package/dist/web/assets/eventmodeling-FCH6USID-CHKTnhfi.js +1 -0
  48. package/dist/web/assets/{flowDiagram-I6XJVG4X-Dmc3vUIl.js → flowDiagram-I6XJVG4X-C-JzpWfx.js} +1 -1
  49. package/dist/web/assets/{ganttDiagram-6RSMTGT7-CRZVm0L0.js → ganttDiagram-6RSMTGT7-Be3WGPbk.js} +1 -1
  50. package/dist/web/assets/{git-rebase-DpESal6m.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-DhRyyOcn.js → gitGraphDiagram-PVQCEYII-DqJ0yj3L.js} +1 -1
  53. package/dist/web/assets/{glimmer-js-X_N0IQZ1.js → glimmer-js-B7LRT5BS.js} +1 -1
  54. package/dist/web/assets/{glimmer-ts-CoiHLEBh.js → glimmer-ts-CojGZlfZ.js} +1 -1
  55. package/dist/web/assets/{glsl-jTdcbPse.js → glsl-CbmtoTb8.js} +1 -1
  56. package/dist/web/assets/{graphql-CSN8TYN_.js → graphql-qYEIhTt7.js} +1 -1
  57. package/dist/web/assets/{hack-Dv67vUdK.js → hack-DxHXCCdq.js} +1 -1
  58. package/dist/web/assets/{haml-BFAyoHic.js → haml-CiwrkJ8T.js} +1 -1
  59. package/dist/web/assets/{handlebars-DsO_0Mb7.js → handlebars-Cn5UPYUQ.js} +1 -1
  60. package/dist/web/assets/{highlighted-body-OFNGDK62-Bsqvzkqq.js → highlighted-body-OFNGDK62-ehiuxKzz.js} +1 -1
  61. package/dist/web/assets/{html-hcrGAGxi.js → html-Cst8cPsk.js} +1 -1
  62. package/dist/web/assets/{html-derivative-nsyf9xDk.js → html-derivative-lnPAgvry.js} +1 -1
  63. package/dist/web/assets/{http-CQ7kMaQ9.js → http-C5VDSUzW.js} +1 -1
  64. package/dist/web/assets/{hurl-w8EbNg5E.js → hurl-BFlMJrL0.js} +1 -1
  65. package/dist/web/assets/{index-DAN9Q3vY.js → index-Ai406YO8.js} +186 -186
  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-C2F76qt2.js → infoDiagram-5YYISTIA-CIanyf0S.js} +1 -1
  69. package/dist/web/assets/{ishikawaDiagram-YF4QCWOH-CZ272mnP.js → ishikawaDiagram-YF4QCWOH--1RL7uDF.js} +1 -1
  70. package/dist/web/assets/{java-BL-j72lp.js → java-BGahCCe1.js} +1 -1
  71. package/dist/web/assets/{javascript-D-RCZsZB.js → javascript-D5uMI8kB.js} +1 -1
  72. package/dist/web/assets/{jinja-3re3UTai.js → jinja-B4krr1-l.js} +1 -1
  73. package/dist/web/assets/{jison-aPrUrs4_.js → jison-BMMSlNZQ.js} +1 -1
  74. package/dist/web/assets/{journeyDiagram-JHISSGLW-Kbp9PKPx.js → journeyDiagram-JHISSGLW-lkcDMGR5.js} +1 -1
  75. package/dist/web/assets/{json-DVgA95cK.js → json-DXJMlo78.js} +1 -1
  76. package/dist/web/assets/{jsx-CTgF7iub.js → jsx-C_bl3hBI.js} +1 -1
  77. package/dist/web/assets/{julia-Deji7okx.js → julia-Sc_vYT5t.js} +1 -1
  78. package/dist/web/assets/{just-CaYOtqeh.js → just-CILkVz1n.js} +1 -1
  79. package/dist/web/assets/{kanban-definition-UN3LZRKU-zVFckm48.js → kanban-definition-UN3LZRKU-Bi_hSUym.js} +1 -1
  80. package/dist/web/assets/{latex-DjTDu_8e.js → latex-DUmFelG8.js} +1 -1
  81. package/dist/web/assets/{linear-HBblcI1g.js → linear-Dpnh4Vbv.js} +1 -1
  82. package/dist/web/assets/{liquid-BcpQGDFc.js → liquid-BnB6JKD1.js} +1 -1
  83. package/dist/web/assets/{lua-CuYpYTBI.js → lua-DhxAQE0G.js} +1 -1
  84. package/dist/web/assets/{marko-DgfLsR3g.js → marko-CyzzY1hm.js} +1 -1
  85. package/dist/web/assets/{mdc-CJyxXGTG.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-I66T9jsL.js → mermaid-parser.core-DShH95hL.js} +2 -2
  88. package/dist/web/assets/{mindmap-definition-RKZ34NQL-DaGOAyRB.js → mindmap-definition-RKZ34NQL-LqYVQ-zW.js} +1 -1
  89. package/dist/web/assets/{nginx-BoUl7sBZ.js → nginx-CR9TIk16.js} +1 -1
  90. package/dist/web/assets/{nim-CrEFP-aj.js → nim-DzWiwbcf.js} +1 -1
  91. package/dist/web/assets/packet-YPE3B663-DuGIOCMW.js +1 -0
  92. package/dist/web/assets/{perl-CZELP4Ds.js → perl-CgrDNBt5.js} +1 -1
  93. package/dist/web/assets/{php-CWKE0mzg.js → php-DtuJQDgr.js} +1 -1
  94. package/dist/web/assets/pie-LRSECV5Y-BYeTdyfo.js +1 -0
  95. package/dist/web/assets/{pieDiagram-4H26LBE5-CZEnKsEr.js → pieDiagram-4H26LBE5-B7_i9XPe.js} +1 -1
  96. package/dist/web/assets/{pug-ZalflcaW.js → pug--9BJCC2D.js} +1 -1
  97. package/dist/web/assets/{qml-D8g9QUr3.js → qml-C3iH27Ik.js} +1 -1
  98. package/dist/web/assets/{quadrantDiagram-W4KKPZXB-DsVGBWIs.js → quadrantDiagram-W4KKPZXB-C2tSamWU.js} +1 -1
  99. package/dist/web/assets/{r-t-w7nxIu.js → r-CqKTpWRo.js} +1 -1
  100. package/dist/web/assets/radar-GUYGQ44K-Cqw7n4df.js +1 -0
  101. package/dist/web/assets/{razor-KKTzZ9mx.js → razor-BNavdAx6.js} +1 -1
  102. package/dist/web/assets/{regexp-a1jUuWbn.js → regexp-zwVenqvj.js} +1 -1
  103. package/dist/web/assets/{requirementDiagram-4Y6WPE33-BTfqkfe2.js → requirementDiagram-4Y6WPE33-iIbtgBoU.js} +1 -1
  104. package/dist/web/assets/{rst-aqfBGGXb.js → rst-BHNeA4na.js} +1 -1
  105. package/dist/web/assets/{ruby-BEZTW4wN.js → ruby-CkHs-w2j.js} +1 -1
  106. package/dist/web/assets/{sankeyDiagram-5OEKKPKP-DypLejq4.js → sankeyDiagram-5OEKKPKP-B05ECsV0.js} +1 -1
  107. package/dist/web/assets/{sas-C6p8OBCV.js → sas-COQs-ItK.js} +1 -1
  108. package/dist/web/assets/{scss-C8GTc8vc.js → scss-DVsO7q0E.js} +1 -1
  109. package/dist/web/assets/{sequenceDiagram-3UESZ5HK-DNDK0sjs.js → sequenceDiagram-3UESZ5HK-CHtmtTcK.js} +1 -1
  110. package/dist/web/assets/{shellscript-CDcqP7X6.js → shellscript-DoNwQ9Oz.js} +1 -1
  111. package/dist/web/assets/{shellsession-CWzpCh1C.js → shellsession-DvIRWuae.js} +1 -1
  112. package/dist/web/assets/{soy-CepCYBkA.js → soy--AEUdRNF.js} +1 -1
  113. package/dist/web/assets/{sql-CAysnE0k.js → sql-BVv9DbTm.js} +1 -1
  114. package/dist/web/assets/{stata-BGr_WZqN.js → stata-Bzv07ePm.js} +1 -1
  115. package/dist/web/assets/{stateDiagram-AJRCARHV-CnSW064B.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-C7gNmBEt.js → surrealql-ChG0u1_y.js} +1 -1
  118. package/dist/web/assets/{svelte-D-4kj-uB.js → svelte-CTk-krYk.js} +1 -1
  119. package/dist/web/assets/{templ-BP_fNCUb.js → templ-CIOvt0Gn.js} +1 -1
  120. package/dist/web/assets/{tex-vDHHhfH8.js → tex-BLbgub0O.js} +1 -1
  121. package/dist/web/assets/{timeline-definition-PNZ67QCA-RE08Mx9v.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-BhUtB8KF.js → ts-tags-Cjp84wCR.js} +1 -1
  125. package/dist/web/assets/{tsx-CYOMJ3wf.js → tsx-BYXwwi4R.js} +1 -1
  126. package/dist/web/assets/{twig-DMJPvFzt.js → twig-CJXgadPB.js} +1 -1
  127. package/dist/web/assets/{typescript-JJOZ5Q74.js → typescript-SkJO5gXX.js} +1 -1
  128. package/dist/web/assets/{vennDiagram-CIIHVFJN-CTiIiyn-.js → vennDiagram-CIIHVFJN-DotTRq6i.js} +1 -1
  129. package/dist/web/assets/{vue-D6hN_u9i.js → vue-DnNvWsLF.js} +1 -1
  130. package/dist/web/assets/{vue-html-B8MKJvvw.js → vue-html-BtDfjhCy.js} +1 -1
  131. package/dist/web/assets/{vue-vine-BZtSJFfi.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-CpT1RVZp.js → wardleyDiagram-YWT4CUSO-C4mIx6nt.js} +1 -1
  134. package/dist/web/assets/{xml-Detdg-FS.js → xml-BwxGZI3_.js} +1 -1
  135. package/dist/web/assets/{xsl-CWUN_pbH.js → xsl-V11HisfD.js} +1 -1
  136. package/dist/web/assets/{xychartDiagram-2RQKCTM6-C8BtIz3X.js → xychartDiagram-2RQKCTM6-CR2seeGg.js} +1 -1
  137. package/dist/web/assets/{yaml-8W-QgFv_.js → yaml-DoTdQeS-.js} +1 -1
  138. package/dist/web/index.html +2 -2
  139. package/package.json +5 -6
  140. package/dist/server/prompts/agents/turn-prompt-rewriter.md +0 -15
  141. package/dist/web/assets/architecture-7EHR7CIX-BuetZCIk.js +0 -1
  142. package/dist/web/assets/channel-CD2ivr_e.js +0 -1
  143. package/dist/web/assets/chunk-QZHKN3VN-Bf-N5Jmd.js +0 -1
  144. package/dist/web/assets/classDiagram-4FO5ZUOK-F8ONWgXY.js +0 -1
  145. package/dist/web/assets/classDiagram-v2-Q7XG4LA2-F8ONWgXY.js +0 -1
  146. package/dist/web/assets/eventmodeling-FCH6USID-C5QIAlur.js +0 -1
  147. package/dist/web/assets/gitGraph-WXDBUCRP-Broa5-99.js +0 -1
  148. package/dist/web/assets/index-BFZtO7ji.css +0 -2
  149. package/dist/web/assets/info-J43DQDTF-5yru-lYW.js +0 -1
  150. package/dist/web/assets/mermaid-GHXKKRXX-tc_NirJc.js +0 -1
  151. package/dist/web/assets/packet-YPE3B663-eYBiCMjG.js +0 -1
  152. package/dist/web/assets/pie-LRSECV5Y-CEs_o2N-.js +0 -1
  153. package/dist/web/assets/radar-GUYGQ44K-D6SysS4p.js +0 -1
  154. package/dist/web/assets/stateDiagram-v2-BHNVJYJU-BtuE7Ay0.js +0 -1
  155. package/dist/web/assets/treeView-BLDUP644-DEYw0jRo.js +0 -1
  156. package/dist/web/assets/treemap-LRROVOQU-BaQ1oGDR.js +0 -1
  157. package/dist/web/assets/wardley-L42UT6IY-F8LWMBYs.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,114 @@
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. When the product needs mobile support, 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
+ - Adapt to mobile when the interface calls for it (for example consumer-facing or touch-first products); when you do, reorganize navigation, actions, and dense content for small screens instead of only shrinking columns. Desktop-only tools do not need a mobile layout.
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:
18
58
 
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.
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.
25
65
 
26
- Choose a strong visual point of view and execute it consistently. Avoid bland defaults and generic AI-looking layouts.
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.
27
67
 
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.
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.
29
69
 
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.
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.
31
71
 
32
- ## Prototype & Interaction Boundary
72
+ ## Anti-Patterns
33
73
 
34
- Create previewable UI prototypes, not production application logic.
74
+ Avoid common low-quality output:
35
75
 
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.
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.
37
83
 
38
- Use minimal local UI state only when it helps the prototype feel clickable and understandable.
84
+ ## Prototype Boundary
39
85
 
40
- Allowed local UI state:
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.
41
87
 
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
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.
47
89
 
48
- Forbidden external or real business side effects:
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.
49
91
 
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
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.
53
93
 
54
- Every previewable HTML page must:
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.
55
95
 
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
96
+ ## Resource Rules
61
97
 
62
- ## Visual Quality Bar
98
+ Fonts, icons, and external dependencies follow the `resource_policy` section provided with these instructions. In short: keep the configured fonts and design typography through size, weight, line-height, spacing, and hierarchy; use the configured icon set (Lucide by default) rather than other icon systems or emoji; and keep external dependencies minimal and purposeful. Prefer code that works directly when `index.html` is loaded by the Preview Pane.
63
99
 
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.
100
+ ## Pre-Output Checklist
72
101
 
73
- ## Output Guardrails
102
+ Before calling `previewRefresh`, re-read the rendered `index.html` and verify every item below. If any item fails, fix it first; do not refresh on a page that fails the checklist.
74
103
 
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.
104
+ - First viewport: at least one clear primary action or workflow entry point is visible without scrolling.
105
+ - Readability: body text is at least 14px and has enough contrast against its background to read comfortably; no low-contrast gray-on-gray text.
106
+ - Design tokens: every color, spacing, radius, and shadow value comes from a CSS variable or a consistent repeated value, with no one-off magic numbers.
107
+ - Icons: each Lucide icon is vertically centered with its adjacent text or control.
108
+ - No dead ends: every nav item, filter, tab, button, modal, and drawer produces a visible response; there are no placeholder sections, unfinished scripts, or controls that do nothing.
109
+ - States: interactive elements show the relevant hover, focus, active, or selected states.
110
+ - Content: labels and copy are specific to the product domain, with no lorem ipsum or vague placeholder text.
79
111
 
80
- Keep output practical, previewable, and visually distinctive.
112
+ ## Final Reply
81
113
 
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.
114
+ 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-DAN9Q3vY.js";import{t}from"./html-hcrGAGxi.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};