@adaas/are-html 0.0.2 → 0.0.4

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 (200) hide show
  1. package/README.md +4 -4
  2. package/dist/browser/index.d.mts +88 -5
  3. package/dist/browser/index.mjs +542 -176
  4. package/dist/browser/index.mjs.map +1 -1
  5. package/dist/node/attributes/AreBinding.attribute.js +17 -4
  6. package/dist/node/attributes/AreBinding.attribute.js.map +1 -1
  7. package/dist/node/attributes/AreBinding.attribute.mjs +10 -3
  8. package/dist/node/attributes/AreBinding.attribute.mjs.map +1 -1
  9. package/dist/node/attributes/AreDirective.attribute.js +17 -4
  10. package/dist/node/attributes/AreDirective.attribute.js.map +1 -1
  11. package/dist/node/attributes/AreDirective.attribute.mjs +10 -3
  12. package/dist/node/attributes/AreDirective.attribute.mjs.map +1 -1
  13. package/dist/node/attributes/AreEvent.attribute.js +17 -4
  14. package/dist/node/attributes/AreEvent.attribute.js.map +1 -1
  15. package/dist/node/attributes/AreEvent.attribute.mjs +10 -3
  16. package/dist/node/attributes/AreEvent.attribute.mjs.map +1 -1
  17. package/dist/node/attributes/AreStatic.attribute.js +17 -4
  18. package/dist/node/attributes/AreStatic.attribute.js.map +1 -1
  19. package/dist/node/attributes/AreStatic.attribute.mjs +10 -3
  20. package/dist/node/attributes/AreStatic.attribute.mjs.map +1 -1
  21. package/dist/node/directives/AreDirectiveFor.directive.d.mts +8 -0
  22. package/dist/node/directives/AreDirectiveFor.directive.d.ts +8 -0
  23. package/dist/node/directives/AreDirectiveFor.directive.js +78 -33
  24. package/dist/node/directives/AreDirectiveFor.directive.js.map +1 -1
  25. package/dist/node/directives/AreDirectiveFor.directive.mjs +78 -33
  26. package/dist/node/directives/AreDirectiveFor.directive.mjs.map +1 -1
  27. package/dist/node/directives/AreDirectiveIf.directive.d.mts +18 -0
  28. package/dist/node/directives/AreDirectiveIf.directive.d.ts +18 -0
  29. package/dist/node/directives/AreDirectiveIf.directive.js +10 -3
  30. package/dist/node/directives/AreDirectiveIf.directive.js.map +1 -1
  31. package/dist/node/directives/AreDirectiveIf.directive.mjs +10 -3
  32. package/dist/node/directives/AreDirectiveIf.directive.mjs.map +1 -1
  33. package/dist/node/engine/AreHTML.compiler.d.mts +2 -2
  34. package/dist/node/engine/AreHTML.compiler.d.ts +2 -2
  35. package/dist/node/engine/AreHTML.compiler.js +57 -29
  36. package/dist/node/engine/AreHTML.compiler.js.map +1 -1
  37. package/dist/node/engine/AreHTML.compiler.mjs +58 -30
  38. package/dist/node/engine/AreHTML.compiler.mjs.map +1 -1
  39. package/dist/node/engine/AreHTML.constants.d.mts +53 -1
  40. package/dist/node/engine/AreHTML.constants.d.ts +53 -1
  41. package/dist/node/engine/AreHTML.constants.js +100 -0
  42. package/dist/node/engine/AreHTML.constants.js.map +1 -1
  43. package/dist/node/engine/AreHTML.constants.mjs +93 -0
  44. package/dist/node/engine/AreHTML.constants.mjs.map +1 -1
  45. package/dist/node/engine/AreHTML.context.d.mts +6 -2
  46. package/dist/node/engine/AreHTML.context.d.ts +6 -2
  47. package/dist/node/engine/AreHTML.context.js +42 -7
  48. package/dist/node/engine/AreHTML.context.js.map +1 -1
  49. package/dist/node/engine/AreHTML.context.mjs +35 -6
  50. package/dist/node/engine/AreHTML.context.mjs.map +1 -1
  51. package/dist/node/engine/AreHTML.engine.js +10 -7
  52. package/dist/node/engine/AreHTML.engine.js.map +1 -1
  53. package/dist/node/engine/AreHTML.engine.mjs +10 -7
  54. package/dist/node/engine/AreHTML.engine.mjs.map +1 -1
  55. package/dist/node/engine/AreHTML.interpreter.js +155 -43
  56. package/dist/node/engine/AreHTML.interpreter.js.map +1 -1
  57. package/dist/node/engine/AreHTML.interpreter.mjs +155 -43
  58. package/dist/node/engine/AreHTML.interpreter.mjs.map +1 -1
  59. package/dist/node/engine/AreHTML.lifecycle.js +17 -12
  60. package/dist/node/engine/AreHTML.lifecycle.js.map +1 -1
  61. package/dist/node/engine/AreHTML.lifecycle.mjs +9 -2
  62. package/dist/node/engine/AreHTML.lifecycle.mjs.map +1 -1
  63. package/dist/node/engine/AreHTML.tokenizer.js +14 -9
  64. package/dist/node/engine/AreHTML.tokenizer.js.map +1 -1
  65. package/dist/node/engine/AreHTML.tokenizer.mjs +10 -3
  66. package/dist/node/engine/AreHTML.tokenizer.mjs.map +1 -1
  67. package/dist/node/engine/AreHTML.transformer.js +13 -8
  68. package/dist/node/engine/AreHTML.transformer.js.map +1 -1
  69. package/dist/node/engine/AreHTML.transformer.mjs +9 -2
  70. package/dist/node/engine/AreHTML.transformer.mjs.map +1 -1
  71. package/dist/node/index.d.mts +2 -1
  72. package/dist/node/index.d.ts +2 -1
  73. package/dist/node/index.js +3 -3
  74. package/dist/node/index.mjs +1 -1
  75. package/dist/node/instructions/AddAttribute.instruction.js +3 -4
  76. package/dist/node/instructions/AddAttribute.instruction.js.map +1 -1
  77. package/dist/node/instructions/AddAttribute.instruction.mjs +3 -4
  78. package/dist/node/instructions/AddAttribute.instruction.mjs.map +1 -1
  79. package/dist/node/instructions/AddComment.instruction.js +3 -4
  80. package/dist/node/instructions/AddComment.instruction.js.map +1 -1
  81. package/dist/node/instructions/AddComment.instruction.mjs +3 -4
  82. package/dist/node/instructions/AddComment.instruction.mjs.map +1 -1
  83. package/dist/node/instructions/AddElement.instruction.js +3 -4
  84. package/dist/node/instructions/AddElement.instruction.js.map +1 -1
  85. package/dist/node/instructions/AddElement.instruction.mjs +3 -4
  86. package/dist/node/instructions/AddElement.instruction.mjs.map +1 -1
  87. package/dist/node/instructions/AddInterpolation.instruction.js +3 -4
  88. package/dist/node/instructions/AddInterpolation.instruction.js.map +1 -1
  89. package/dist/node/instructions/AddInterpolation.instruction.mjs +3 -4
  90. package/dist/node/instructions/AddInterpolation.instruction.mjs.map +1 -1
  91. package/dist/node/instructions/AddListener.instruction.js +3 -4
  92. package/dist/node/instructions/AddListener.instruction.js.map +1 -1
  93. package/dist/node/instructions/AddListener.instruction.mjs +3 -4
  94. package/dist/node/instructions/AddListener.instruction.mjs.map +1 -1
  95. package/dist/node/instructions/AddStyle.instruction.js +3 -4
  96. package/dist/node/instructions/AddStyle.instruction.js.map +1 -1
  97. package/dist/node/instructions/AddStyle.instruction.mjs +3 -4
  98. package/dist/node/instructions/AddStyle.instruction.mjs.map +1 -1
  99. package/dist/node/instructions/AddText.instruction.js +3 -4
  100. package/dist/node/instructions/AddText.instruction.js.map +1 -1
  101. package/dist/node/instructions/AddText.instruction.mjs +3 -4
  102. package/dist/node/instructions/AddText.instruction.mjs.map +1 -1
  103. package/dist/node/lib/AreDirective/AreDirective.component.js +5 -0
  104. package/dist/node/lib/AreDirective/AreDirective.component.js.map +1 -1
  105. package/dist/node/lib/AreDirective/AreDirective.component.mjs +5 -0
  106. package/dist/node/lib/AreDirective/AreDirective.component.mjs.map +1 -1
  107. package/dist/node/lib/AreHTMLAttribute/AreHTML.attribute.js +17 -4
  108. package/dist/node/lib/AreHTMLAttribute/AreHTML.attribute.js.map +1 -1
  109. package/dist/node/lib/AreHTMLAttribute/AreHTML.attribute.mjs +10 -3
  110. package/dist/node/lib/AreHTMLAttribute/AreHTML.attribute.mjs.map +1 -1
  111. package/dist/node/lib/AreHTMLNode/AreHTMLNode.js +3 -4
  112. package/dist/node/lib/AreHTMLNode/AreHTMLNode.js.map +1 -1
  113. package/dist/node/lib/AreHTMLNode/AreHTMLNode.mjs +3 -4
  114. package/dist/node/lib/AreHTMLNode/AreHTMLNode.mjs.map +1 -1
  115. package/dist/node/lib/AreRoot/AreRoot.component.js +3 -4
  116. package/dist/node/lib/AreRoot/AreRoot.component.js.map +1 -1
  117. package/dist/node/lib/AreRoot/AreRoot.component.mjs +3 -4
  118. package/dist/node/lib/AreRoot/AreRoot.component.mjs.map +1 -1
  119. package/dist/node/lib/{AreWatcher/AreWatcher.component.d.mts → AreRouteWatcher/AreRouteWatcher.component.d.mts} +2 -2
  120. package/dist/node/lib/{AreWatcher/AreWatcher.component.d.ts → AreRouteWatcher/AreRouteWatcher.component.d.ts} +2 -2
  121. package/dist/node/lib/{AreWatcher/AreWatcher.component.js → AreRouteWatcher/AreRouteWatcher.component.js} +9 -10
  122. package/dist/node/lib/AreRouteWatcher/AreRouteWatcher.component.js.map +1 -0
  123. package/dist/node/lib/{AreWatcher/AreWatcher.component.mjs → AreRouteWatcher/AreRouteWatcher.component.mjs} +10 -11
  124. package/dist/node/lib/AreRouteWatcher/AreRouteWatcher.component.mjs.map +1 -0
  125. package/dist/node/lib/AreStyle/AreStyle.context.js +17 -4
  126. package/dist/node/lib/AreStyle/AreStyle.context.js.map +1 -1
  127. package/dist/node/lib/AreStyle/AreStyle.context.mjs +10 -3
  128. package/dist/node/lib/AreStyle/AreStyle.context.mjs.map +1 -1
  129. package/dist/node/nodes/AreComment.js +17 -4
  130. package/dist/node/nodes/AreComment.js.map +1 -1
  131. package/dist/node/nodes/AreComment.mjs +10 -3
  132. package/dist/node/nodes/AreComment.mjs.map +1 -1
  133. package/dist/node/nodes/AreComponent.js +3 -4
  134. package/dist/node/nodes/AreComponent.js.map +1 -1
  135. package/dist/node/nodes/AreComponent.mjs +3 -4
  136. package/dist/node/nodes/AreComponent.mjs.map +1 -1
  137. package/dist/node/nodes/AreInterpolation.js +17 -4
  138. package/dist/node/nodes/AreInterpolation.js.map +1 -1
  139. package/dist/node/nodes/AreInterpolation.mjs +10 -3
  140. package/dist/node/nodes/AreInterpolation.mjs.map +1 -1
  141. package/dist/node/nodes/AreRoot.js +3 -4
  142. package/dist/node/nodes/AreRoot.js.map +1 -1
  143. package/dist/node/nodes/AreRoot.mjs +3 -4
  144. package/dist/node/nodes/AreRoot.mjs.map +1 -1
  145. package/dist/node/nodes/AreText.js +17 -4
  146. package/dist/node/nodes/AreText.js.map +1 -1
  147. package/dist/node/nodes/AreText.mjs +10 -3
  148. package/dist/node/nodes/AreText.mjs.map +1 -1
  149. package/dist/node/signals/AreRoute.signal.js +18 -5
  150. package/dist/node/signals/AreRoute.signal.js.map +1 -1
  151. package/dist/node/signals/AreRoute.signal.mjs +10 -3
  152. package/dist/node/signals/AreRoute.signal.mjs.map +1 -1
  153. package/docs/SYNTAX.md +714 -0
  154. package/docs/arehtml.monaco.json +235 -0
  155. package/docs/arehtml.monaco.ts +119 -0
  156. package/examples/dashboard/dist/index.html +1 -1
  157. package/examples/dashboard/dist/mpioi5ab-8c3oa9.js +13674 -0
  158. package/examples/jumpstart/dist/index.html +1 -1
  159. package/examples/{dashboard/dist/mnzfypsd-6zjt7w.js → jumpstart/dist/mor90p6y-0plg7g.js} +1869 -1926
  160. package/examples/jumpstart/dist/{mnpl1g4i-nobz9g.js → mor90p7p-1898bz.js} +2797 -2282
  161. package/examples/jumpstart/src/components/List.component.ts +14 -13
  162. package/examples/jumpstart/src/concept.ts +5 -4
  163. package/jest.config.ts +1 -1
  164. package/package.json +10 -6
  165. package/src/attributes/AreBinding.attribute.ts +5 -0
  166. package/src/attributes/AreDirective.attribute.ts +5 -0
  167. package/src/attributes/AreEvent.attribute.ts +5 -0
  168. package/src/attributes/AreStatic.attribute.ts +5 -0
  169. package/src/directives/AreDirectiveFor.directive.ts +97 -60
  170. package/src/directives/AreDirectiveIf.directive.ts +37 -15
  171. package/src/engine/AreHTML.compiler.ts +64 -36
  172. package/src/engine/AreHTML.constants.ts +144 -0
  173. package/src/engine/AreHTML.context.ts +33 -4
  174. package/src/engine/AreHTML.engine.ts +12 -7
  175. package/src/engine/AreHTML.interpreter.ts +195 -68
  176. package/src/engine/AreHTML.lifecycle.ts +5 -0
  177. package/src/engine/AreHTML.tokenizer.ts +6 -1
  178. package/src/engine/AreHTML.transformer.ts +5 -0
  179. package/src/index.ts +2 -2
  180. package/src/instructions/AddAttribute.instruction.ts +3 -4
  181. package/src/instructions/AddComment.instruction.ts +3 -4
  182. package/src/instructions/AddElement.instruction.ts +3 -4
  183. package/src/instructions/AddInterpolation.instruction.ts +3 -4
  184. package/src/instructions/AddListener.instruction.ts +3 -4
  185. package/src/instructions/AddStyle.instruction.ts +3 -4
  186. package/src/instructions/AddText.instruction.ts +3 -4
  187. package/src/lib/AreDirective/AreDirective.component.ts +5 -0
  188. package/src/lib/AreHTMLAttribute/AreHTML.attribute.ts +5 -0
  189. package/src/lib/AreHTMLNode/AreHTMLNode.ts +3 -4
  190. package/src/lib/AreRoot/AreRoot.component.ts +3 -4
  191. package/src/lib/{AreWatcher/AreWatcher.component.ts → AreRouteWatcher/AreRouteWatcher.component.ts} +5 -6
  192. package/src/lib/AreStyle/AreStyle.context.ts +5 -0
  193. package/src/nodes/AreComment.ts +5 -0
  194. package/src/nodes/AreComponent.ts +3 -4
  195. package/src/nodes/AreInterpolation.ts +5 -0
  196. package/src/nodes/AreRoot.ts +3 -4
  197. package/src/nodes/AreText.ts +5 -0
  198. package/src/signals/AreRoute.signal.ts +5 -0
  199. package/dist/node/lib/AreWatcher/AreWatcher.component.js.map +0 -1
  200. package/dist/node/lib/AreWatcher/AreWatcher.component.mjs.map +0 -1
@@ -0,0 +1,235 @@
1
+ {
2
+ "$schema": "./arehtml.monaco.schema.json",
3
+
4
+ "languageId": "arehtml",
5
+ "displayName": "ARE-HTML",
6
+ "fileExtensions": [".arehtml", ".are.html"],
7
+ "aliases": ["ARE-HTML", "are-html", "arehtml"],
8
+ "mimeTypes": ["text/x-arehtml"],
9
+
10
+ "configuration": {
11
+ "comments": {
12
+ "blockComment": ["<!--", "-->"]
13
+ },
14
+ "brackets": [
15
+ ["<", ">"],
16
+ ["{{", "}}"],
17
+ ["{", "}"],
18
+ ["[", "]"],
19
+ ["(", ")"]
20
+ ],
21
+ "autoClosingPairs": [
22
+ { "open": "{{", "close": " }}" },
23
+ { "open": "{", "close": "}" },
24
+ { "open": "[", "close": "]" },
25
+ { "open": "(", "close": ")" },
26
+ { "open": "\"", "close": "\"" },
27
+ { "open": "'", "close": "'" }
28
+ ],
29
+ "surroundingPairs": [
30
+ ["{{", "}}"],
31
+ ["{", "}"],
32
+ ["[", "]"],
33
+ ["(", ")"],
34
+ ["<", ">"],
35
+ ["\"", "\""],
36
+ ["'", "'"]
37
+ ],
38
+ "wordPattern": "[A-Za-z_$][\\w$-]*",
39
+ "onEnterRules": []
40
+ },
41
+
42
+ "monarch": {
43
+ "defaultToken": "",
44
+ "tokenPostfix": ".arehtml",
45
+ "ignoreCase": false,
46
+
47
+ "builtinDirectives": ["if", "for"],
48
+
49
+ "reservedDirectives": [
50
+ "if", "for", "else", "else-if", "show", "hide",
51
+ "model", "ref", "slot", "key"
52
+ ],
53
+
54
+ "eventModifiers": [
55
+ "stop", "prevent", "self", "capture", "once", "passive"
56
+ ],
57
+
58
+ "keyModifiers": [
59
+ "enter", "esc", "escape", "tab", "space",
60
+ "delete", "backspace",
61
+ "up", "down", "left", "right"
62
+ ],
63
+
64
+ "systemModifiers": ["ctrl", "alt", "shift", "meta"],
65
+
66
+ "booleanAttributes": [
67
+ "disabled", "checked", "readonly", "required",
68
+ "hidden", "multiple", "selected", "open",
69
+ "autofocus", "autoplay", "controls", "loop", "muted",
70
+ "default", "defer", "async", "nomodule", "novalidate",
71
+ "reversed", "ismap", "formnovalidate", "playsinline",
72
+ "itemscope", "truespeed", "typemustmatch", "inert",
73
+ "allowfullscreen"
74
+ ],
75
+
76
+ "exprKeywords": ["true", "false", "null", "undefined"],
77
+ "exprFlowKeywords": ["in", "track"],
78
+ "exprSupportFunctions": ["filter"],
79
+
80
+ "tokenizer": {
81
+
82
+ "root": [
83
+ ["<!--", { "token": "comment.html", "next": "@htmlComment" }],
84
+
85
+ ["\\{\\{", { "token": "delimiter.interpolation", "next": "@interpolation" }],
86
+
87
+ ["</[a-zA-Z][\\w-]*\\s*>", "tag"],
88
+
89
+ ["<[a-zA-Z][\\w-]*", { "token": "tag", "next": "@tagAttrs" }],
90
+
91
+ ["[^<{]+", ""]
92
+ ],
93
+
94
+ "htmlComment": [
95
+ ["-->", { "token": "comment.html", "next": "@pop" }],
96
+ ["[^-]+", "comment.html"],
97
+ [".", "comment.html"]
98
+ ],
99
+
100
+ "interpolation": [
101
+ ["\\}\\}", { "token": "delimiter.interpolation", "next": "@pop" }],
102
+ { "include": "@expression" }
103
+ ],
104
+
105
+ "tagAttrs": [
106
+ ["\\s+", ""],
107
+
108
+ ["/>", { "token": "tag", "next": "@pop" }],
109
+ [">", { "token": "tag", "next": "@pop" }],
110
+
111
+ ["\\$[\\w-]+", {
112
+ "cases": {
113
+ "@builtinDirectives": "keyword.directive.builtin",
114
+ "@default": "keyword.directive"
115
+ }
116
+ }],
117
+
118
+ [":[\\w-]+", "attribute.name.binding"],
119
+
120
+ ["@[\\w-]+(?:\\.[\\w-]+)*", {
121
+ "token": "attribute.name.event",
122
+ "log": "event $0"
123
+ }],
124
+
125
+ ["[\\w-]+", {
126
+ "cases": {
127
+ "@booleanAttributes": "attribute.name.boolean",
128
+ "@default": "attribute.name"
129
+ }
130
+ }],
131
+
132
+ ["=", "delimiter"],
133
+
134
+ ["\"", { "token": "string.quote", "next": "@dqValue" }],
135
+ ["'", { "token": "string.quote", "next": "@sqValue" }],
136
+
137
+ ["[^\\s>/\"'=]+", "string.unquoted"]
138
+ ],
139
+
140
+ "dqValue": [
141
+ ["\"", { "token": "string.quote", "next": "@pop" }],
142
+ { "include": "@expression" }
143
+ ],
144
+ "sqValue": [
145
+ ["'", { "token": "string.quote", "next": "@pop" }],
146
+ { "include": "@expression" }
147
+ ],
148
+
149
+ "expression": [
150
+ ["\\$event\\b", "variable.predefined"],
151
+
152
+ ["\\$[A-Za-z_][\\w-]*", "entity.name.function.handler"],
153
+
154
+ ["\\b(?:true|false|null|undefined)\\b", "constant.language"],
155
+
156
+ ["\\b(?:in|track)\\b", "keyword.control.flow"],
157
+
158
+ ["\\bfilter\\b", "support.function"],
159
+
160
+ ["[A-Za-z_][\\w$]*", "identifier"],
161
+
162
+ ["\\d+(?:\\.\\d+)?", "number"],
163
+
164
+ ["\"([^\"\\\\]|\\\\.)*\"", "string.literal"],
165
+ ["'([^'\\\\]|\\\\.)*'", "string.literal"],
166
+
167
+ ["[+\\-*/%<>=!&|?:,;.]+", "operator"],
168
+ ["[()\\[\\]{}]", "@brackets"],
169
+
170
+ ["\\s+", ""]
171
+ ]
172
+ }
173
+ },
174
+
175
+ "themeRules": {
176
+ "description": "Suggested token color rules. Use as `monaco.editor.defineTheme(...)` `rules`.",
177
+ "rules": [
178
+ { "token": "tag.arehtml", "foreground": "569CD6" },
179
+ { "token": "attribute.name.arehtml", "foreground": "9CDCFE" },
180
+ { "token": "attribute.name.boolean.arehtml", "foreground": "9CDCFE", "fontStyle": "italic" },
181
+ { "token": "attribute.name.binding.arehtml", "foreground": "4FC1FF", "fontStyle": "bold" },
182
+ { "token": "attribute.name.event.arehtml", "foreground": "DCDCAA", "fontStyle": "bold" },
183
+ { "token": "keyword.directive.arehtml", "foreground": "C586C0" },
184
+ { "token": "keyword.directive.builtin.arehtml", "foreground": "C586C0", "fontStyle": "bold" },
185
+ { "token": "delimiter.interpolation.arehtml", "foreground": "D7BA7D" },
186
+ { "token": "variable.predefined.arehtml", "foreground": "4EC9B0", "fontStyle": "italic" },
187
+ { "token": "entity.name.function.handler.arehtml", "foreground": "DCDCAA" },
188
+ { "token": "keyword.control.flow.arehtml", "foreground": "C586C0" },
189
+ { "token": "support.function.arehtml", "foreground": "DCDCAA" },
190
+ { "token": "constant.language.arehtml", "foreground": "569CD6" },
191
+ { "token": "string.literal.arehtml", "foreground": "CE9178" },
192
+ { "token": "string.unquoted.arehtml", "foreground": "CE9178" },
193
+ { "token": "string.quote.arehtml", "foreground": "CE9178" },
194
+ { "token": "number.arehtml", "foreground": "B5CEA8" },
195
+ { "token": "operator.arehtml", "foreground": "D4D4D4" },
196
+ { "token": "comment.html.arehtml", "foreground": "6A9955", "fontStyle": "italic" }
197
+ ]
198
+ },
199
+
200
+ "completions": {
201
+ "directives": [
202
+ { "label": "$if", "insertText": "$if=\"$1\"", "documentation": "Conditionally render the element when expression is truthy." },
203
+ { "label": "$for", "insertText": "$for=\"$1 in $2\"", "documentation": "Render the element once per item in the array." },
204
+ { "label": "$for+track", "insertText": "$for=\"$1 in $2 track $1.id\"", "documentation": "Render the element once per item, with stable keyed reconciliation." }
205
+ ],
206
+ "events": [
207
+ { "label": "@click", "insertText": "@click=\"$$1\"" },
208
+ { "label": "@click.stop", "insertText": "@click.stop=\"$$1\"" },
209
+ { "label": "@click.prevent", "insertText": "@click.prevent=\"$$1\"" },
210
+ { "label": "@submit.prevent", "insertText": "@submit.prevent=\"$$1\"" },
211
+ { "label": "@input", "insertText": "@input=\"$$1($event.target.value)\"" },
212
+ { "label": "@keydown.enter", "insertText": "@keydown.enter=\"$$1\"" },
213
+ { "label": "@keydown.esc", "insertText": "@keydown.esc=\"$$1\"" }
214
+ ],
215
+ "bindings": [
216
+ { "label": ":class", "insertText": ":class=\"$1\"" },
217
+ { "label": ":style", "insertText": ":style=\"$1\"" },
218
+ { "label": ":value", "insertText": ":value=\"$1\"" },
219
+ { "label": ":disabled", "insertText": ":disabled=\"$1\"" },
220
+ { "label": ":checked", "insertText": ":checked=\"$1\"" },
221
+ { "label": ":href", "insertText": ":href=\"$1\"" },
222
+ { "label": ":src", "insertText": ":src=\"$1\"" }
223
+ ],
224
+ "interpolation": [
225
+ { "label": "{{ }}", "insertText": "{{ $1 }}" }
226
+ ]
227
+ },
228
+
229
+ "_usage": {
230
+ "register": "monaco.languages.register({ id: cfg.languageId, extensions: cfg.fileExtensions, aliases: cfg.aliases, mimetypes: cfg.mimeTypes })",
231
+ "tokens": "monaco.languages.setMonarchTokensProvider(cfg.languageId, cfg.monarch)",
232
+ "configuration": "monaco.languages.setLanguageConfiguration(cfg.languageId, cfg.configuration)",
233
+ "theme": "monaco.editor.defineTheme('arehtml-dark', { base: 'vs-dark', inherit: true, rules: cfg.themeRules.rules, colors: {} })"
234
+ }
235
+ }
@@ -0,0 +1,119 @@
1
+ /**
2
+ * ARE-HTML Monaco language registration.
3
+ *
4
+ * Usage:
5
+ *
6
+ * import * as monaco from 'monaco-editor';
7
+ * import cfg from './arehtml.monaco.json';
8
+ * import { registerAreHtml } from './arehtml.monaco';
9
+ *
10
+ * registerAreHtml(monaco, cfg);
11
+ * monaco.editor.create(el, { value, language: 'arehtml', theme: 'arehtml-dark' });
12
+ *
13
+ * The JSON config stores regex patterns as strings; this loader converts them
14
+ * to RegExp objects where Monaco requires it. No other transformations are
15
+ * performed, so the JSON remains the single source of truth.
16
+ */
17
+
18
+ export interface AreHtmlMonacoConfig {
19
+ languageId: string;
20
+ displayName: string;
21
+ fileExtensions: string[];
22
+ aliases: string[];
23
+ mimeTypes: string[];
24
+ configuration: any;
25
+ monarch: any;
26
+ themeRules: { rules: any[] };
27
+ completions?: {
28
+ directives?: { label: string; insertText: string; documentation?: string }[];
29
+ events?: { label: string; insertText: string; documentation?: string }[];
30
+ bindings?: { label: string; insertText: string; documentation?: string }[];
31
+ interpolation?: { label: string; insertText: string; documentation?: string }[];
32
+ };
33
+ }
34
+
35
+ /**
36
+ * Convert any string regex literals in the Monarch tokenizer rules to actual
37
+ * RegExp instances. Monaco's Monarch accepts both, but RegExp gives slightly
38
+ * better error messages and parity with the in-source documentation.
39
+ */
40
+ function normalizeMonarch(monarch: any): any {
41
+ const out: any = { ...monarch, tokenizer: {} };
42
+
43
+ for (const stateName of Object.keys(monarch.tokenizer)) {
44
+ const state = monarch.tokenizer[stateName];
45
+ out.tokenizer[stateName] = state.map((rule: any) => {
46
+ if (Array.isArray(rule) && typeof rule[0] === 'string') {
47
+ try {
48
+ return [new RegExp(rule[0]), rule[1]];
49
+ } catch {
50
+ return rule;
51
+ }
52
+ }
53
+ return rule;
54
+ });
55
+ }
56
+ return out;
57
+ }
58
+
59
+ export function registerAreHtml(monaco: any, cfg: AreHtmlMonacoConfig) {
60
+ monaco.languages.register({
61
+ id: cfg.languageId,
62
+ extensions: cfg.fileExtensions,
63
+ aliases: cfg.aliases,
64
+ mimetypes: cfg.mimeTypes,
65
+ });
66
+
67
+ monaco.languages.setLanguageConfiguration(cfg.languageId, cfg.configuration);
68
+ monaco.languages.setMonarchTokensProvider(cfg.languageId, normalizeMonarch(cfg.monarch));
69
+
70
+ monaco.editor.defineTheme('arehtml-dark', {
71
+ base: 'vs-dark',
72
+ inherit: true,
73
+ rules: cfg.themeRules.rules,
74
+ colors: {},
75
+ });
76
+
77
+ monaco.editor.defineTheme('arehtml-light', {
78
+ base: 'vs',
79
+ inherit: true,
80
+ rules: cfg.themeRules.rules,
81
+ colors: {},
82
+ });
83
+
84
+ if (cfg.completions) {
85
+ monaco.languages.registerCompletionItemProvider(cfg.languageId, {
86
+ triggerCharacters: ['$', '@', ':', '{'],
87
+ provideCompletionItems(model: any, position: any) {
88
+ const word = model.getWordUntilPosition(position);
89
+ const range = {
90
+ startLineNumber: position.lineNumber,
91
+ endLineNumber: position.lineNumber,
92
+ startColumn: word.startColumn,
93
+ endColumn: word.endColumn,
94
+ };
95
+
96
+ const kind = monaco.languages.CompletionItemKind;
97
+ const insertRule = monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet;
98
+ const c = cfg.completions!;
99
+
100
+ const suggestions = [
101
+ ...(c.directives || []).map(s => ({
102
+ ...s, kind: kind.Keyword, insertTextRules: insertRule, range,
103
+ })),
104
+ ...(c.events || []).map(s => ({
105
+ ...s, kind: kind.Event, insertTextRules: insertRule, range,
106
+ })),
107
+ ...(c.bindings || []).map(s => ({
108
+ ...s, kind: kind.Property, insertTextRules: insertRule, range,
109
+ })),
110
+ ...(c.interpolation || []).map(s => ({
111
+ ...s, kind: kind.Snippet, insertTextRules: insertRule, range,
112
+ })),
113
+ ];
114
+
115
+ return { suggestions };
116
+ }
117
+ });
118
+ }
119
+ }
@@ -16,7 +16,7 @@
16
16
  <dashboard-app></dashboard-app>
17
17
  </are-root>
18
18
 
19
- <script type="module" src="./mnzfypsd-6zjt7w.js"></script>
19
+ <script type="module" src="./mpioi5ab-8c3oa9.js"></script>
20
20
  </body>
21
21
 
22
22
  </html>