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.
- package/dist/index.js +1 -2
- package/dist/server/index.js +656 -1474
- package/dist/server/prompts/agents/component-audit.md +24 -0
- package/dist/server/prompts/agents/design-page.md +83 -55
- package/dist/server/prompts/index.ts +9 -16
- package/dist/server/templates/html/page-shell.html +65 -0
- package/dist/server/templates/index.ts +39 -0
- package/dist/web/assets/{angular-html-jQS2hAnh.js → angular-html-DCGj6j9k.js} +1 -1
- package/dist/web/assets/{angular-ts-DXCIRK8J.js → angular-ts-_jS5FvKQ.js} +1 -1
- package/dist/web/assets/{apl-uLTVM0SV.js → apl-COUiMcRO.js} +1 -1
- package/dist/web/assets/{arc-C6K-4bbh.js → arc-DO65316F.js} +1 -1
- package/dist/web/assets/architecture-7EHR7CIX-D10X4FnP.js +1 -0
- package/dist/web/assets/{architectureDiagram-3BPJPVTR-Nra6nVfI.js → architectureDiagram-3BPJPVTR-4QTI95py.js} +1 -1
- package/dist/web/assets/{astro-QydxzDKL.js → astro-DBm7xN0H.js} +1 -1
- package/dist/web/assets/{blade-g81cs1jW.js → blade-BrcGRjeD.js} +1 -1
- package/dist/web/assets/{blockDiagram-GPEHLZMM-Ei76DVKM.js → blockDiagram-GPEHLZMM-DyW2gTLi.js} +1 -1
- package/dist/web/assets/{c-CV8Fejge.js → c-DAqlvgYb.js} +1 -1
- package/dist/web/assets/{c4Diagram-AAUBKEIU-oIOIFFc0.js → c4Diagram-AAUBKEIU-D7VLn3UY.js} +1 -1
- package/dist/web/assets/channel-D4A7yvhc.js +1 -0
- package/dist/web/assets/{chunk-2J33WTMH-BokYjerh.js → chunk-2J33WTMH-ZI7iZmam.js} +1 -1
- package/dist/web/assets/{chunk-4BX2VUAB-CW80cEPP.js → chunk-4BX2VUAB-BXZ1tYtp.js} +1 -1
- package/dist/web/assets/{chunk-55IACEB6-cqUqIGMR.js → chunk-55IACEB6-BruFuyzh.js} +1 -1
- package/dist/web/assets/{chunk-727SXJPM-en_nLLtx.js → chunk-727SXJPM-WfltwAyi.js} +1 -1
- package/dist/web/assets/{chunk-AQP2D5EJ-E7hL18Vm.js → chunk-AQP2D5EJ-m-6Oqccg.js} +1 -1
- package/dist/web/assets/{chunk-FMBD7UC4-D2Mn_3Ze.js → chunk-FMBD7UC4-CTpop8z0.js} +1 -1
- package/dist/web/assets/{chunk-ND2GUHAM-BxpfbjDb.js → chunk-ND2GUHAM-DXbYu7j4.js} +1 -1
- package/dist/web/assets/chunk-QZHKN3VN-JoHxC1mG.js +1 -0
- package/dist/web/assets/classDiagram-4FO5ZUOK-D2XS2ai4.js +1 -0
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-D2XS2ai4.js +1 -0
- package/dist/web/assets/{cobol-CMtH7Q60.js → cobol-CV8XIe3g.js} +1 -1
- package/dist/web/assets/{coffee-Dd2oge0M.js → coffee-CjS-bqem.js} +1 -1
- package/dist/web/assets/{cose-bilkent-S5V4N54A-DlIl_zlL.js → cose-bilkent-S5V4N54A-qeF_aTDs.js} +1 -1
- package/dist/web/assets/{cpp-BxOkDHcj.js → cpp-BWTrby03.js} +1 -1
- package/dist/web/assets/{crystal-CP-EFrvi.js → crystal-B4jSurfu.js} +1 -1
- package/dist/web/assets/{css-56wYI_pE.js → css-CXDKo6HN.js} +1 -1
- package/dist/web/assets/{dagre-BM42HDAG-DPLYcjid.js → dagre-BM42HDAG-mtpIrAd-.js} +1 -1
- package/dist/web/assets/{diagram-2AECGRRQ-BCMoYOQK.js → diagram-2AECGRRQ-C2daXqRz.js} +1 -1
- package/dist/web/assets/{diagram-5GNKFQAL-CLKyT-zH.js → diagram-5GNKFQAL-Yn3Kkd1e.js} +1 -1
- package/dist/web/assets/{diagram-KO2AKTUF-aunZGxvu.js → diagram-KO2AKTUF-BSZBlF1_.js} +1 -1
- package/dist/web/assets/{diagram-LMA3HP47-BYp0cf90.js → diagram-LMA3HP47-C-o1wwy4.js} +1 -1
- package/dist/web/assets/{diagram-OG6HWLK6-M3iTfH5g.js → diagram-OG6HWLK6-BadUuiav.js} +1 -1
- package/dist/web/assets/{edge-DpKZbKMc.js → edge-IP3F2dQ8.js} +1 -1
- package/dist/web/assets/{elixir-CzSMdKdn.js → elixir-DNv4dzV2.js} +1 -1
- package/dist/web/assets/{elm-CPk9x22f.js → elm-DGlxwCzv.js} +1 -1
- package/dist/web/assets/{erDiagram-TEJ5UH35-BX0VkvGe.js → erDiagram-TEJ5UH35-uLYwqFWM.js} +1 -1
- package/dist/web/assets/{erb-TQAaZlNV.js → erb-Cx4MSh15.js} +1 -1
- package/dist/web/assets/eventmodeling-FCH6USID-CHKTnhfi.js +1 -0
- package/dist/web/assets/{flowDiagram-I6XJVG4X-Bvl7AO6M.js → flowDiagram-I6XJVG4X-C-JzpWfx.js} +1 -1
- package/dist/web/assets/{ganttDiagram-6RSMTGT7-Bcc6aiz3.js → ganttDiagram-6RSMTGT7-Be3WGPbk.js} +1 -1
- package/dist/web/assets/{git-rebase-C36akiNM.js → git-rebase-C_0JGP0g.js} +1 -1
- package/dist/web/assets/gitGraph-WXDBUCRP-aSGYLvSW.js +1 -0
- package/dist/web/assets/{gitGraphDiagram-PVQCEYII-DwIrICP0.js → gitGraphDiagram-PVQCEYII-DqJ0yj3L.js} +1 -1
- package/dist/web/assets/{glimmer-js-ZijKRLl6.js → glimmer-js-B7LRT5BS.js} +1 -1
- package/dist/web/assets/{glimmer-ts-DngRkkD1.js → glimmer-ts-CojGZlfZ.js} +1 -1
- package/dist/web/assets/{glsl-BaB0p3pF.js → glsl-CbmtoTb8.js} +1 -1
- package/dist/web/assets/{graphql-Betoeq1K.js → graphql-qYEIhTt7.js} +1 -1
- package/dist/web/assets/{hack-CE6PSHKG.js → hack-DxHXCCdq.js} +1 -1
- package/dist/web/assets/{haml-SuyMrzSD.js → haml-CiwrkJ8T.js} +1 -1
- package/dist/web/assets/{handlebars-JDrZp4fR.js → handlebars-Cn5UPYUQ.js} +1 -1
- package/dist/web/assets/{highlighted-body-OFNGDK62-CgC4ngzm.js → highlighted-body-OFNGDK62-ehiuxKzz.js} +1 -1
- package/dist/web/assets/{html-DC1Ltqmc.js → html-Cst8cPsk.js} +1 -1
- package/dist/web/assets/{html-derivative-iG8t5u5_.js → html-derivative-lnPAgvry.js} +1 -1
- package/dist/web/assets/{http-C40sH4NS.js → http-C5VDSUzW.js} +1 -1
- package/dist/web/assets/{hurl-CmUE8H3s.js → hurl-BFlMJrL0.js} +1 -1
- package/dist/web/assets/{index-Bz6PFGaR.js → index-Ai406YO8.js} +179 -179
- package/dist/web/assets/index-Cy3xCQ0m.css +2 -0
- package/dist/web/assets/info-J43DQDTF-C945CGZU.js +1 -0
- package/dist/web/assets/{infoDiagram-5YYISTIA-D92ErDLp.js → infoDiagram-5YYISTIA-CIanyf0S.js} +1 -1
- package/dist/web/assets/{ishikawaDiagram-YF4QCWOH-COfhdNCZ.js → ishikawaDiagram-YF4QCWOH--1RL7uDF.js} +1 -1
- package/dist/web/assets/{java-Jk3c_AWT.js → java-BGahCCe1.js} +1 -1
- package/dist/web/assets/{javascript-D7j9lLtB.js → javascript-D5uMI8kB.js} +1 -1
- package/dist/web/assets/{jinja-KOP4LHnr.js → jinja-B4krr1-l.js} +1 -1
- package/dist/web/assets/{jison-CsByL99k.js → jison-BMMSlNZQ.js} +1 -1
- package/dist/web/assets/{journeyDiagram-JHISSGLW-BAaoSHcS.js → journeyDiagram-JHISSGLW-lkcDMGR5.js} +1 -1
- package/dist/web/assets/{json-bLUVjOwA.js → json-DXJMlo78.js} +1 -1
- package/dist/web/assets/{jsx-B-ZJ5sYl.js → jsx-C_bl3hBI.js} +1 -1
- package/dist/web/assets/{julia-DLZVVunR.js → julia-Sc_vYT5t.js} +1 -1
- package/dist/web/assets/{just-CTVFuTGe.js → just-CILkVz1n.js} +1 -1
- package/dist/web/assets/{kanban-definition-UN3LZRKU-txA385kR.js → kanban-definition-UN3LZRKU-Bi_hSUym.js} +1 -1
- package/dist/web/assets/{latex-BQMKb74T.js → latex-DUmFelG8.js} +1 -1
- package/dist/web/assets/{linear-D7ZS4umN.js → linear-Dpnh4Vbv.js} +1 -1
- package/dist/web/assets/{liquid-CG92kJNU.js → liquid-BnB6JKD1.js} +1 -1
- package/dist/web/assets/{lua-BVSZYGx9.js → lua-DhxAQE0G.js} +1 -1
- package/dist/web/assets/{marko-DEmKFKi0.js → marko-CyzzY1hm.js} +1 -1
- package/dist/web/assets/{mdc-Do8EO_lC.js → mdc-BptK7sXI.js} +1 -1
- package/dist/web/assets/mermaid-GHXKKRXX-DOJ_Dro4.js +1 -0
- package/dist/web/assets/{mermaid-parser.core-BaLOFMn_.js → mermaid-parser.core-DShH95hL.js} +2 -2
- package/dist/web/assets/{mindmap-definition-RKZ34NQL-D-yV4PLs.js → mindmap-definition-RKZ34NQL-LqYVQ-zW.js} +1 -1
- package/dist/web/assets/{nginx-BKSyUILj.js → nginx-CR9TIk16.js} +1 -1
- package/dist/web/assets/{nim-DnJRnIIP.js → nim-DzWiwbcf.js} +1 -1
- package/dist/web/assets/packet-YPE3B663-DuGIOCMW.js +1 -0
- package/dist/web/assets/{perl-3bt2qR9m.js → perl-CgrDNBt5.js} +1 -1
- package/dist/web/assets/{php-BzdDALOQ.js → php-DtuJQDgr.js} +1 -1
- package/dist/web/assets/pie-LRSECV5Y-BYeTdyfo.js +1 -0
- package/dist/web/assets/{pieDiagram-4H26LBE5-Bd114I4X.js → pieDiagram-4H26LBE5-B7_i9XPe.js} +1 -1
- package/dist/web/assets/{pug-DdwUkMw4.js → pug--9BJCC2D.js} +1 -1
- package/dist/web/assets/{qml-DP4is7YC.js → qml-C3iH27Ik.js} +1 -1
- package/dist/web/assets/{quadrantDiagram-W4KKPZXB-bREh_EBC.js → quadrantDiagram-W4KKPZXB-C2tSamWU.js} +1 -1
- package/dist/web/assets/{r-BF_jXTwW.js → r-CqKTpWRo.js} +1 -1
- package/dist/web/assets/radar-GUYGQ44K-Cqw7n4df.js +1 -0
- package/dist/web/assets/{razor-3soncf9G.js → razor-BNavdAx6.js} +1 -1
- package/dist/web/assets/{regexp-EYBuLXF9.js → regexp-zwVenqvj.js} +1 -1
- package/dist/web/assets/{requirementDiagram-4Y6WPE33-VtNiXWaP.js → requirementDiagram-4Y6WPE33-iIbtgBoU.js} +1 -1
- package/dist/web/assets/{rst-C71o5usK.js → rst-BHNeA4na.js} +1 -1
- package/dist/web/assets/{ruby-w0pHTyII.js → ruby-CkHs-w2j.js} +1 -1
- package/dist/web/assets/{sankeyDiagram-5OEKKPKP-CPbj-Xb-.js → sankeyDiagram-5OEKKPKP-B05ECsV0.js} +1 -1
- package/dist/web/assets/{sas-DXIh1KZ4.js → sas-COQs-ItK.js} +1 -1
- package/dist/web/assets/{scss-C4aItG-0.js → scss-DVsO7q0E.js} +1 -1
- package/dist/web/assets/{sequenceDiagram-3UESZ5HK-DwH_u_zz.js → sequenceDiagram-3UESZ5HK-CHtmtTcK.js} +1 -1
- package/dist/web/assets/{shellscript-BV5fN4m0.js → shellscript-DoNwQ9Oz.js} +1 -1
- package/dist/web/assets/{shellsession-COL1kA2z.js → shellsession-DvIRWuae.js} +1 -1
- package/dist/web/assets/{soy-Ccpzfdcl.js → soy--AEUdRNF.js} +1 -1
- package/dist/web/assets/{sql-DCE87e5l.js → sql-BVv9DbTm.js} +1 -1
- package/dist/web/assets/{stata-CEWTedB6.js → stata-Bzv07ePm.js} +1 -1
- package/dist/web/assets/{stateDiagram-AJRCARHV-B3VdYVO-.js → stateDiagram-AJRCARHV-COllcCkO.js} +1 -1
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-D9SuEs4r.js +1 -0
- package/dist/web/assets/{surrealql-CUKNwDpQ.js → surrealql-ChG0u1_y.js} +1 -1
- package/dist/web/assets/{svelte-DONiSH1x.js → svelte-CTk-krYk.js} +1 -1
- package/dist/web/assets/{templ-B_johG2O.js → templ-CIOvt0Gn.js} +1 -1
- package/dist/web/assets/{tex-Dh316BCp.js → tex-BLbgub0O.js} +1 -1
- package/dist/web/assets/{timeline-definition-PNZ67QCA-Blixs7cX.js → timeline-definition-PNZ67QCA-Dj0aLVCY.js} +1 -1
- package/dist/web/assets/treeView-BLDUP644-Bsp-7xCN.js +1 -0
- package/dist/web/assets/treemap-LRROVOQU-BsTzhV2b.js +1 -0
- package/dist/web/assets/{ts-tags-CWDOkWop.js → ts-tags-Cjp84wCR.js} +1 -1
- package/dist/web/assets/{tsx-STHGXrTg.js → tsx-BYXwwi4R.js} +1 -1
- package/dist/web/assets/{twig-DeYz4MvR.js → twig-CJXgadPB.js} +1 -1
- package/dist/web/assets/{typescript-BkMW9mh2.js → typescript-SkJO5gXX.js} +1 -1
- package/dist/web/assets/{vennDiagram-CIIHVFJN-OUEEmD5m.js → vennDiagram-CIIHVFJN-DotTRq6i.js} +1 -1
- package/dist/web/assets/{vue-BhG5XYAd.js → vue-DnNvWsLF.js} +1 -1
- package/dist/web/assets/{vue-html-Cw0OXIMV.js → vue-html-BtDfjhCy.js} +1 -1
- package/dist/web/assets/{vue-vine-DxYQGujI.js → vue-vine-87qc9dJ9.js} +1 -1
- package/dist/web/assets/wardley-L42UT6IY-BtXwfgcx.js +1 -0
- package/dist/web/assets/{wardleyDiagram-YWT4CUSO-CbSRnjwb.js → wardleyDiagram-YWT4CUSO-C4mIx6nt.js} +1 -1
- package/dist/web/assets/{xml-Co1Haim6.js → xml-BwxGZI3_.js} +1 -1
- package/dist/web/assets/{xsl-Dyxp9ECK.js → xsl-V11HisfD.js} +1 -1
- package/dist/web/assets/{xychartDiagram-2RQKCTM6-PQFpoSrS.js → xychartDiagram-2RQKCTM6-CR2seeGg.js} +1 -1
- package/dist/web/assets/{yaml-DfBwtMv_.js → yaml-DoTdQeS-.js} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +6 -7
- package/dist/server/prompts/agents/turn-prompt-rewriter.md +0 -15
- package/dist/web/assets/architecture-7EHR7CIX-BUVdwEbF.js +0 -1
- package/dist/web/assets/channel-DC7LeJJp.js +0 -1
- package/dist/web/assets/chunk-QZHKN3VN-DTMt_eZs.js +0 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-jfKwbhh5.js +0 -1
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-jfKwbhh5.js +0 -1
- package/dist/web/assets/eventmodeling-FCH6USID-CelVcBa9.js +0 -1
- package/dist/web/assets/gitGraph-WXDBUCRP-D9mlI27B.js +0 -1
- package/dist/web/assets/index-BFZtO7ji.css +0 -2
- package/dist/web/assets/info-J43DQDTF-DmWxkfWc.js +0 -1
- package/dist/web/assets/mermaid-GHXKKRXX-L1cLS261.js +0 -1
- package/dist/web/assets/packet-YPE3B663-CrP5sMYi.js +0 -1
- package/dist/web/assets/pie-LRSECV5Y-Di4KiVyS.js +0 -1
- package/dist/web/assets/radar-GUYGQ44K-BWc_UrwT.js +0 -1
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-C7wmfqKn.js +0 -1
- package/dist/web/assets/treeView-BLDUP644-DRpNUAD5.js +0 -1
- package/dist/web/assets/treemap-LRROVOQU-CRkuQjMq.js +0 -1
- 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
|
-
#
|
|
1
|
+
# OwnDesign Single HTML Page Agent
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
You design and implement high-quality previewable page prototypes in a single `index.html` file inside the Project Workspace.
|
|
4
4
|
|
|
5
|
-
|
|
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
|
-
|
|
7
|
+
## Core Output Model
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
72
|
+
## Anti-Patterns
|
|
31
73
|
|
|
32
|
-
|
|
74
|
+
Avoid common low-quality output:
|
|
33
75
|
|
|
34
|
-
|
|
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
|
-
|
|
84
|
+
## Prototype Boundary
|
|
37
85
|
|
|
38
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
96
|
+
## Resource Rules
|
|
55
97
|
|
|
56
|
-
-
|
|
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
|
-
|
|
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
|
-
-
|
|
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
|
-
|
|
104
|
+
If JavaScript dynamically inserts markup that contains Lucide placeholders, call `lucide.createIcons()` after updating the DOM.
|
|
74
105
|
|
|
75
|
-
|
|
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
|
-
|
|
108
|
+
## Final Reply
|
|
81
109
|
|
|
82
|
-
|
|
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
|
|
2
|
-
import path from
|
|
3
|
-
import { fileURLToPath } from
|
|
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
|
-
|
|
7
|
-
|
|
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,
|
|
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,
|
|
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};
|