@gyral/core 0.1.0 → 0.3.0

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 (340) hide show
  1. package/CHANGELOG.md +112 -0
  2. package/LICENSE +1 -1
  3. package/NOTICE +1 -1
  4. package/README.md +9 -7
  5. package/dist/children.d.ts +5 -2
  6. package/dist/children.js +8 -3
  7. package/dist/children.js.map +1 -1
  8. package/dist/command.js +6 -0
  9. package/dist/command.js.map +1 -1
  10. package/dist/compiler/ast.d.ts +21 -0
  11. package/dist/compiler/ast.js +145 -0
  12. package/dist/compiler/ast.js.map +1 -0
  13. package/dist/compiler/compile.d.ts +38 -0
  14. package/dist/compiler/compile.js +129 -0
  15. package/dist/compiler/compile.js.map +1 -0
  16. package/dist/compiler/hooks.d.ts +18 -0
  17. package/dist/compiler/hooks.js +186 -0
  18. package/dist/compiler/hooks.js.map +1 -0
  19. package/dist/compiler/parse5-check.d.ts +21 -0
  20. package/dist/compiler/parse5-check.js +55 -0
  21. package/dist/compiler/parse5-check.js.map +1 -0
  22. package/dist/compiler/scan.d.ts +31 -0
  23. package/dist/compiler/scan.js +152 -0
  24. package/dist/compiler/scan.js.map +1 -0
  25. package/dist/compiler/source.d.ts +34 -0
  26. package/dist/compiler/source.js +114 -0
  27. package/dist/compiler/source.js.map +1 -0
  28. package/dist/define.d.ts +2 -2
  29. package/dist/define.js +35 -334
  30. package/dist/define.js.map +1 -1
  31. package/dist/devtools-events.d.ts +5 -0
  32. package/dist/devtools-events.js.map +1 -1
  33. package/dist/devtools-off.d.ts +1 -0
  34. package/dist/devtools-off.js +1 -0
  35. package/dist/devtools-off.js.map +1 -1
  36. package/dist/devtools.d.ts +1 -0
  37. package/dist/devtools.js +3 -0
  38. package/dist/devtools.js.map +1 -1
  39. package/dist/drivers-scope.d.ts +1 -1
  40. package/dist/drivers-scope.js +1 -8
  41. package/dist/drivers-scope.js.map +1 -1
  42. package/dist/element-types.d.ts +5 -3
  43. package/dist/element-types.js.map +1 -1
  44. package/dist/element.d.ts +3 -0
  45. package/dist/element.js +269 -0
  46. package/dist/element.js.map +1 -0
  47. package/dist/eslint/imports.d.ts +24 -0
  48. package/dist/eslint/imports.js +78 -0
  49. package/dist/eslint/imports.js.map +1 -0
  50. package/dist/eslint/index.d.ts +15 -0
  51. package/dist/eslint/index.js +15 -0
  52. package/dist/eslint/index.js.map +1 -0
  53. package/dist/eslint/locate.d.ts +33 -0
  54. package/dist/eslint/locate.js +132 -0
  55. package/dist/eslint/locate.js.map +1 -0
  56. package/dist/eslint/row-purity-rule.d.ts +2 -0
  57. package/dist/eslint/row-purity-rule.js +103 -0
  58. package/dist/eslint/row-purity-rule.js.map +1 -0
  59. package/dist/eslint/template-rule.d.ts +5 -0
  60. package/dist/eslint/template-rule.js +66 -0
  61. package/dist/eslint/template-rule.js.map +1 -0
  62. package/dist/features.d.ts +39 -0
  63. package/dist/features.js +2 -0
  64. package/dist/features.js.map +1 -0
  65. package/dist/focus.d.ts +9 -2
  66. package/dist/focus.js +17 -2
  67. package/dist/focus.js.map +1 -1
  68. package/dist/hooks/invalid.d.ts +14 -0
  69. package/dist/hooks/invalid.js +72 -0
  70. package/dist/hooks/invalid.js.map +1 -0
  71. package/dist/hooks/labelled-by.d.ts +13 -0
  72. package/dist/hooks/labelled-by.js +51 -0
  73. package/dist/hooks/labelled-by.js.map +1 -0
  74. package/dist/host-model.d.ts +48 -0
  75. package/dist/host-model.js +155 -0
  76. package/dist/host-model.js.map +1 -0
  77. package/dist/hydration-client.d.ts +9 -0
  78. package/dist/hydration-client.js +35 -0
  79. package/dist/hydration-client.js.map +1 -0
  80. package/dist/hydration.d.ts +13 -19
  81. package/dist/hydration.js +45 -45
  82. package/dist/hydration.js.map +1 -1
  83. package/dist/index.d.ts +9 -16
  84. package/dist/index.js +9 -16
  85. package/dist/index.js.map +1 -1
  86. package/dist/intent.d.ts +31 -8
  87. package/dist/intent.js +82 -27
  88. package/dist/intent.js.map +1 -1
  89. package/dist/internal/interpreter.d.ts +7 -1
  90. package/dist/internal/interpreter.js +118 -73
  91. package/dist/internal/interpreter.js.map +1 -1
  92. package/dist/invokers-shim.d.ts +6 -0
  93. package/dist/invokers-shim.js +32 -0
  94. package/dist/invokers-shim.js.map +1 -0
  95. package/dist/invokers.d.ts +3 -5
  96. package/dist/invokers.js +11 -51
  97. package/dist/invokers.js.map +1 -1
  98. package/dist/islands.d.ts +0 -2
  99. package/dist/islands.js +4 -11
  100. package/dist/islands.js.map +1 -1
  101. package/dist/light-dom.d.ts +3 -52
  102. package/dist/light-dom.js +5 -100
  103. package/dist/light-dom.js.map +1 -1
  104. package/dist/prop.d.ts +66 -0
  105. package/dist/prop.js +22 -0
  106. package/dist/prop.js.map +1 -0
  107. package/dist/props.d.ts +52 -21
  108. package/dist/props.js +150 -34
  109. package/dist/props.js.map +1 -1
  110. package/dist/scheduler.d.ts +39 -0
  111. package/dist/scheduler.js +230 -0
  112. package/dist/scheduler.js.map +1 -0
  113. package/dist/server-component.d.ts +10 -0
  114. package/dist/server-component.js +102 -0
  115. package/dist/server-component.js.map +1 -0
  116. package/dist/server-specs.d.ts +6 -0
  117. package/dist/server-specs.js +13 -0
  118. package/dist/server-specs.js.map +1 -0
  119. package/dist/server.d.ts +28 -0
  120. package/dist/server.js +50 -0
  121. package/dist/server.js.map +1 -0
  122. package/dist/settled.d.ts +10 -0
  123. package/dist/settled.js +40 -0
  124. package/dist/settled.js.map +1 -0
  125. package/dist/states.d.ts +3 -3
  126. package/dist/states.js +4 -7
  127. package/dist/states.js.map +1 -1
  128. package/dist/store-binding.d.ts +6 -3
  129. package/dist/store-binding.js +5 -6
  130. package/dist/store-binding.js.map +1 -1
  131. package/dist/store-scope.d.ts +6 -7
  132. package/dist/store-scope.js +11 -26
  133. package/dist/store-scope.js.map +1 -1
  134. package/dist/store.d.ts +3 -0
  135. package/dist/store.js +9 -2
  136. package/dist/store.js.map +1 -1
  137. package/dist/stores-provider.d.ts +2 -6
  138. package/dist/stores-provider.js +21 -55
  139. package/dist/stores-provider.js.map +1 -1
  140. package/dist/transitions.d.ts +5 -6
  141. package/dist/transitions.js +11 -20
  142. package/dist/transitions.js.map +1 -1
  143. package/dist/types.d.ts +19 -23
  144. package/dist/types.js.map +1 -1
  145. package/dist/view/attributes.d.ts +6 -0
  146. package/dist/view/attributes.js +10 -0
  147. package/dist/view/attributes.js.map +1 -0
  148. package/dist/view/compiled.d.ts +1 -0
  149. package/dist/view/compiled.js +6 -0
  150. package/dist/view/compiled.js.map +1 -0
  151. package/dist/view/dev-off.d.ts +1 -0
  152. package/dist/view/dev-off.js +4 -0
  153. package/dist/view/dev-off.js.map +1 -0
  154. package/dist/view/dev.d.ts +1 -0
  155. package/dist/view/dev.js +5 -0
  156. package/dist/view/dev.js.map +1 -0
  157. package/dist/view/flags.d.ts +1 -0
  158. package/dist/view/flags.js +4 -0
  159. package/dist/view/flags.js.map +1 -0
  160. package/dist/view/index.d.ts +21 -0
  161. package/dist/view/index.js +21 -0
  162. package/dist/view/index.js.map +1 -0
  163. package/dist/view/normalize/check.d.ts +20 -0
  164. package/dist/view/normalize/check.js +78 -0
  165. package/dist/view/normalize/check.js.map +1 -0
  166. package/dist/view/normalize/emit.d.ts +13 -0
  167. package/dist/view/normalize/emit.js +136 -0
  168. package/dist/view/normalize/emit.js.map +1 -0
  169. package/dist/view/normalize/entities.d.ts +4 -0
  170. package/dist/view/normalize/entities.js +38 -0
  171. package/dist/view/normalize/entities.js.map +1 -0
  172. package/dist/view/normalize/errors.d.ts +9 -0
  173. package/dist/view/normalize/errors.js +19 -0
  174. package/dist/view/normalize/errors.js.map +1 -0
  175. package/dist/view/normalize/id.d.ts +7 -0
  176. package/dist/view/normalize/id.js +48 -0
  177. package/dist/view/normalize/id.js.map +1 -0
  178. package/dist/view/normalize/normalize.d.ts +15 -0
  179. package/dist/view/normalize/normalize.js +36 -0
  180. package/dist/view/normalize/normalize.js.map +1 -0
  181. package/dist/view/normalize/repairs.d.ts +24 -0
  182. package/dist/view/normalize/repairs.js +166 -0
  183. package/dist/view/normalize/repairs.js.map +1 -0
  184. package/dist/view/normalize/rules.d.ts +30 -0
  185. package/dist/view/normalize/rules.js +90 -0
  186. package/dist/view/normalize/rules.js.map +1 -0
  187. package/dist/view/normalize/shape.d.ts +5 -0
  188. package/dist/view/normalize/shape.js +38 -0
  189. package/dist/view/normalize/shape.js.map +1 -0
  190. package/dist/view/normalize/source.d.ts +13 -0
  191. package/dist/view/normalize/source.js +34 -0
  192. package/dist/view/normalize/source.js.map +1 -0
  193. package/dist/view/normalize/tag-states.d.ts +23 -0
  194. package/dist/view/normalize/tag-states.js +192 -0
  195. package/dist/view/normalize/tag-states.js.map +1 -0
  196. package/dist/view/normalize/tokenizer.d.ts +5 -0
  197. package/dist/view/normalize/tokenizer.js +233 -0
  198. package/dist/view/normalize/tokenizer.js.map +1 -0
  199. package/dist/view/normalize/tokens.d.ts +51 -0
  200. package/dist/view/normalize/tokens.js +24 -0
  201. package/dist/view/normalize/tokens.js.map +1 -0
  202. package/dist/view/normalize/tree.d.ts +59 -0
  203. package/dist/view/normalize/tree.js +190 -0
  204. package/dist/view/normalize/tree.js.map +1 -0
  205. package/dist/view/normalize/types.d.ts +126 -0
  206. package/dist/view/normalize/types.js +26 -0
  207. package/dist/view/normalize/types.js.map +1 -0
  208. package/dist/view/normalize/whitespace.d.ts +2 -0
  209. package/dist/view/normalize/whitespace.js +182 -0
  210. package/dist/view/normalize/whitespace.js.map +1 -0
  211. package/dist/view/prepare-stub.d.ts +3 -0
  212. package/dist/view/prepare-stub.js +7 -0
  213. package/dist/view/prepare-stub.js.map +1 -0
  214. package/dist/view/prepare.d.ts +8 -0
  215. package/dist/view/prepare.js +57 -0
  216. package/dist/view/prepare.js.map +1 -0
  217. package/dist/view/registry.d.ts +63 -0
  218. package/dist/view/registry.js +19 -0
  219. package/dist/view/registry.js.map +1 -0
  220. package/dist/view/render/adopt-attr.d.ts +14 -0
  221. package/dist/view/render/adopt-attr.js +77 -0
  222. package/dist/view/render/adopt-attr.js.map +1 -0
  223. package/dist/view/render/adopt-plan.d.ts +10 -0
  224. package/dist/view/render/adopt-plan.js +26 -0
  225. package/dist/view/render/adopt-plan.js.map +1 -0
  226. package/dist/view/render/adopt.d.ts +3 -0
  227. package/dist/view/render/adopt.js +269 -0
  228. package/dist/view/render/adopt.js.map +1 -0
  229. package/dist/view/render/attr-parts.d.ts +61 -0
  230. package/dist/view/render/attr-parts.js +229 -0
  231. package/dist/view/render/attr-parts.js.map +1 -0
  232. package/dist/view/render/child-part.d.ts +51 -0
  233. package/dist/view/render/child-part.js +170 -0
  234. package/dist/view/render/child-part.js.map +1 -0
  235. package/dist/view/render/dev-check.d.ts +12 -0
  236. package/dist/view/render/dev-check.js +122 -0
  237. package/dist/view/render/dev-check.js.map +1 -0
  238. package/dist/view/render/hook-part.d.ts +3 -0
  239. package/dist/view/render/hook-part.js +20 -0
  240. package/dist/view/render/hook-part.js.map +1 -0
  241. package/dist/view/render/hooks.d.ts +40 -0
  242. package/dist/view/render/hooks.js +46 -0
  243. package/dist/view/render/hooks.js.map +1 -0
  244. package/dist/view/render/hydrate.d.ts +10 -0
  245. package/dist/view/render/hydrate.js +33 -0
  246. package/dist/view/render/hydrate.js.map +1 -0
  247. package/dist/view/render/instance.d.ts +33 -0
  248. package/dist/view/render/instance.js +107 -0
  249. package/dist/view/render/instance.js.map +1 -0
  250. package/dist/view/render/list.d.ts +20 -0
  251. package/dist/view/render/list.js +156 -0
  252. package/dist/view/render/list.js.map +1 -0
  253. package/dist/view/render/mismatch.d.ts +10 -0
  254. package/dist/view/render/mismatch.js +53 -0
  255. package/dist/view/render/mismatch.js.map +1 -0
  256. package/dist/view/render/nodes.d.ts +10 -0
  257. package/dist/view/render/nodes.js +37 -0
  258. package/dist/view/render/nodes.js.map +1 -0
  259. package/dist/view/render/place.d.ts +18 -0
  260. package/dist/view/render/place.js +69 -0
  261. package/dist/view/render/place.js.map +1 -0
  262. package/dist/view/render/plan.d.ts +26 -0
  263. package/dist/view/render/plan.js +124 -0
  264. package/dist/view/render/plan.js.map +1 -0
  265. package/dist/view/render/raw.d.ts +18 -0
  266. package/dist/view/render/raw.js +68 -0
  267. package/dist/view/render/raw.js.map +1 -0
  268. package/dist/view/render/render.d.ts +12 -0
  269. package/dist/view/render/render.js +60 -0
  270. package/dist/view/render/render.js.map +1 -0
  271. package/dist/view/render/reorder.d.ts +4 -0
  272. package/dist/view/render/reorder.js +101 -0
  273. package/dist/view/render/reorder.js.map +1 -0
  274. package/dist/view/render/rows.d.ts +23 -0
  275. package/dist/view/render/rows.js +95 -0
  276. package/dist/view/render/rows.js.map +1 -0
  277. package/dist/view/render/seen.d.ts +11 -0
  278. package/dist/view/render/seen.js +17 -0
  279. package/dist/view/render/seen.js.map +1 -0
  280. package/dist/view/render/values.d.ts +29 -0
  281. package/dist/view/render/values.js +13 -0
  282. package/dist/view/render/values.js.map +1 -0
  283. package/dist/view/render/warn.d.ts +14 -0
  284. package/dist/view/render/warn.js +69 -0
  285. package/dist/view/render/warn.js.map +1 -0
  286. package/dist/view/server/component.d.ts +9 -0
  287. package/dist/view/server/component.js +42 -0
  288. package/dist/view/server/component.js.map +1 -0
  289. package/dist/view/server/escape.d.ts +10 -0
  290. package/dist/view/server/escape.js +34 -0
  291. package/dist/view/server/escape.js.map +1 -0
  292. package/dist/view/server/index.d.ts +28 -0
  293. package/dist/view/server/index.js +72 -0
  294. package/dist/view/server/index.js.map +1 -0
  295. package/dist/view/server/sha256.d.ts +2 -0
  296. package/dist/view/server/sha256.js +75 -0
  297. package/dist/view/server/sha256.js.map +1 -0
  298. package/dist/view/server/tags.d.ts +57 -0
  299. package/dist/view/server/tags.js +121 -0
  300. package/dist/view/server/tags.js.map +1 -0
  301. package/dist/view/server/values.d.ts +16 -0
  302. package/dist/view/server/values.js +86 -0
  303. package/dist/view/server/values.js.map +1 -0
  304. package/dist/view/server/writer.d.ts +16 -0
  305. package/dist/view/server/writer.js +155 -0
  306. package/dist/view/server/writer.js.map +1 -0
  307. package/dist/view/styles.d.ts +25 -0
  308. package/dist/view/styles.js +58 -0
  309. package/dist/view/styles.js.map +1 -0
  310. package/dist/view/template-element.d.ts +3 -0
  311. package/dist/view/template-element.js +25 -0
  312. package/dist/view/template-element.js.map +1 -0
  313. package/dist/view/template.d.ts +21 -0
  314. package/dist/view/template.js +30 -0
  315. package/dist/view/template.js.map +1 -0
  316. package/dist/vite.d.ts +45 -6
  317. package/dist/vite.js +150 -25
  318. package/dist/vite.js.map +1 -1
  319. package/package.json +41 -7
  320. package/dist/accessible-name.d.ts +0 -19
  321. package/dist/accessible-name.js +0 -56
  322. package/dist/accessible-name.js.map +0 -1
  323. package/dist/element-directive.d.ts +0 -20
  324. package/dist/element-directive.js +0 -31
  325. package/dist/element-directive.js.map +0 -1
  326. package/dist/internal/runtime.d.ts +0 -7
  327. package/dist/internal/runtime.js +0 -8
  328. package/dist/internal/runtime.js.map +0 -1
  329. package/dist/invalid.d.ts +0 -21
  330. package/dist/invalid.js +0 -70
  331. package/dist/invalid.js.map +0 -1
  332. package/dist/live-boolean.d.ts +0 -22
  333. package/dist/live-boolean.js +0 -34
  334. package/dist/live-boolean.js.map +0 -1
  335. package/dist/styles.d.ts +0 -12
  336. package/dist/styles.js +0 -11
  337. package/dist/styles.js.map +0 -1
  338. package/dist/textarea.d.ts +0 -26
  339. package/dist/textarea.js +0 -85
  340. package/dist/textarea.js.map +0 -1
@@ -1,34 +0,0 @@
1
- import { Directive, directive, PartType, } from 'lit/directive.js';
2
- /**
3
- * A boolean that is right both in server-rendered markup and in the live DOM (ADR 0012).
4
- * Use it in a boolean attribute binding:
5
- *
6
- * <input type="checkbox" ?checked=${liveBoolean(s.on)} />
7
- * <option ?selected=${liveBoolean(s.sort === 'price')}>Price</option>
8
- *
9
- * - On the server it renders the attribute when true and omits it when false.
10
- * (A property binding, `.checked=${false}`, is serialized by Lit SSR as `checked="false"`,
11
- * which *checks* the box. Never bind boolean form state as a property in SSR'd views.)
12
- * - In the browser it also sets the element's property of the same name (`checked`,
13
- * `selected`, `open`, …), so the control follows model state even after the user has
14
- * changed it. The attribute alone stops controlling `checked` once a box has been clicked.
15
- */
16
- class LiveBoolean extends Directive {
17
- constructor(info) {
18
- super(info);
19
- if (info.type !== PartType.BOOLEAN_ATTRIBUTE) {
20
- throw new Error('liveBoolean() must be used in a boolean attribute: ?checked=${…}');
21
- }
22
- }
23
- render(value) {
24
- return value;
25
- }
26
- update(part, [value]) {
27
- const element = part.element;
28
- if (part.name in part.element && element[part.name] !== value)
29
- element[part.name] = value;
30
- return value;
31
- }
32
- }
33
- export const liveBoolean = directive(LiveBoolean);
34
- //# sourceMappingURL=live-boolean.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"live-boolean.js","sourceRoot":"","sources":["../src/live-boolean.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,SAAS,EACT,QAAQ,GAGT,MAAM,kBAAkB,CAAC;AAE1B;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAY,SAAQ,SAAS;IACjC,YAAY,IAAc;QACxB,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,iBAAiB,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAEQ,MAAM,CAAC,KAAc;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAEQ,MAAM,CAAC,IAAmB,EAAE,CAAC,KAAK,CAAY;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,OAA6C,CAAC;QACnE,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QAC1F,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC","sourcesContent":["import {\n Directive,\n directive,\n PartType,\n type AttributePart,\n type PartInfo,\n} from 'lit/directive.js';\n\n/**\n * A boolean that is right both in server-rendered markup and in the live DOM (ADR 0012).\n * Use it in a boolean attribute binding:\n *\n * <input type=\"checkbox\" ?checked=${liveBoolean(s.on)} />\n * <option ?selected=${liveBoolean(s.sort === 'price')}>Price</option>\n *\n * - On the server it renders the attribute when true and omits it when false.\n * (A property binding, `.checked=${false}`, is serialized by Lit SSR as `checked=\"false\"`,\n * which *checks* the box. Never bind boolean form state as a property in SSR'd views.)\n * - In the browser it also sets the element's property of the same name (`checked`,\n * `selected`, `open`, …), so the control follows model state even after the user has\n * changed it. The attribute alone stops controlling `checked` once a box has been clicked.\n */\nclass LiveBoolean extends Directive {\n constructor(info: PartInfo) {\n super(info);\n if (info.type !== PartType.BOOLEAN_ATTRIBUTE) {\n throw new Error('liveBoolean() must be used in a boolean attribute: ?checked=${…}');\n }\n }\n\n override render(value: boolean): boolean {\n return value;\n }\n\n override update(part: AttributePart, [value]: [boolean]): boolean {\n const element = part.element as unknown as Record<string, unknown>;\n if (part.name in part.element && element[part.name] !== value) element[part.name] = value;\n return value;\n }\n}\n\nexport const liveBoolean = directive(LiveBoolean);\n"]}
package/dist/styles.d.ts DELETED
@@ -1,12 +0,0 @@
1
- import { type CSSResultGroup, type CSSResultOrNative } from 'lit';
2
- /**
3
- * What `spec.styles` accepts:
4
- * - `css` tagged templates (Lit's `CSSResult`);
5
- * - plain strings, e.g. a stylesheet module shared with the document (`import base from
6
- * './base.css?raw'`). Strings are trusted CSS from your own code, never user input;
7
- * - `CSSStyleSheet` instances (constructable stylesheets, shared across components);
8
- * - arrays of any of these, nested freely.
9
- */
10
- export type Styles = CSSResultOrNative | string | readonly Styles[];
11
- /** Normalizes `Styles` into what Lit's `static styles` expects. */
12
- export declare function toCssResultGroup(styles: Styles): CSSResultGroup;
package/dist/styles.js DELETED
@@ -1,11 +0,0 @@
1
- // Component styles (gyral-czi.24): `css` templates, plain strings or constructed sheets.
2
- import { unsafeCSS } from 'lit';
3
- /** Normalizes `Styles` into what Lit's `static styles` expects. */
4
- export function toCssResultGroup(styles) {
5
- if (typeof styles === 'string')
6
- return unsafeCSS(styles);
7
- if (Array.isArray(styles))
8
- return styles.map(toCssResultGroup);
9
- return styles;
10
- }
11
- //# sourceMappingURL=styles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,OAAO,EAAE,SAAS,EAA+C,MAAM,KAAK,CAAC;AAY7E,mEAAmE;AACnE,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAQ,MAA4B,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACtF,OAAO,MAA2B,CAAC;AACrC,CAAC","sourcesContent":["// Component styles (gyral-czi.24): `css` templates, plain strings or constructed sheets.\nimport { unsafeCSS, type CSSResultGroup, type CSSResultOrNative } from 'lit';\n\n/**\n * What `spec.styles` accepts:\n * - `css` tagged templates (Lit's `CSSResult`);\n * - plain strings, e.g. a stylesheet module shared with the document (`import base from\n * './base.css?raw'`). Strings are trusted CSS from your own code, never user input;\n * - `CSSStyleSheet` instances (constructable stylesheets, shared across components);\n * - arrays of any of these, nested freely.\n */\nexport type Styles = CSSResultOrNative | string | readonly Styles[];\n\n/** Normalizes `Styles` into what Lit's `static styles` expects. */\nexport function toCssResultGroup(styles: Styles): CSSResultGroup {\n if (typeof styles === 'string') return unsafeCSS(styles);\n if (Array.isArray(styles)) return (styles as readonly Styles[]).map(toCssResultGroup);\n return styles as CSSResultOrNative;\n}\n"]}
@@ -1,26 +0,0 @@
1
- import { Directive, type ChildPart, type PartInfo } from 'lit/directive.js';
2
- export type TextareaAttribute = string | number | boolean | null | undefined;
3
- export interface TextareaOptions {
4
- /** The model's value. Applied to the live element only when the model changes. */
5
- readonly value: string;
6
- /** Attributes such as name, id, rows, required, maxlength, data-intent, aria-invalid. */
7
- readonly attrs?: Readonly<Record<string, TextareaAttribute>>;
8
- }
9
- /** The markup the server writes, and the client's first render: escaped, no bindings inside. */
10
- export declare function textareaMarkup({ value, attrs }: TextareaOptions): string;
11
- declare class TextareaDirective extends Directive {
12
- #private;
13
- constructor(info: PartInfo);
14
- render(options: TextareaOptions): unknown;
15
- update(part: ChildPart, [options]: [TextareaOptions]): unknown;
16
- }
17
- /**
18
- * A `<textarea>` whose content comes from the model, safe for SSR and hydration:
19
- *
20
- * ${textarea({ value: s.message, attrs: { name: 'message', rows: 5, required: true,
21
- * 'data-intent': i.Message } })}
22
- *
23
- * Text typed before or after hydration is kept until the model's value changes.
24
- */
25
- export declare const textarea: (options: TextareaOptions) => import("lit/directive.js").DirectiveResult<typeof TextareaDirective>;
26
- export {};
package/dist/textarea.js DELETED
@@ -1,85 +0,0 @@
1
- // <textarea> support (gyral-czi.34). Lit can't bind inside <textarea>: its content is raw
2
- // text, so `html\`<textarea>${v}</textarea>\`` throws during SSR ("Unexpected final
3
- // partIndex") and never updates in the browser. `textarea()` renders the element as a static,
4
- // escaped template (correct no-JS markup and a hydration match), then keeps it in sync by
5
- // setting properties and attributes on the same element.
6
- import { noChange } from 'lit';
7
- import { Directive, directive, PartType } from 'lit/directive.js';
8
- import { html as staticHtml, unsafeStatic } from 'lit/static-html.js';
9
- const escapeText = (s) => s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
10
- const escapeAttr = (s) => escapeText(s).replace(/"/g, '&quot;');
11
- const ATTR_NAME = /^[a-zA-Z_:][-a-zA-Z0-9_:.]*$/;
12
- function attrMarkup(attrs) {
13
- return Object.entries(attrs ?? {})
14
- .map(([name, value]) => {
15
- if (!ATTR_NAME.test(name))
16
- throw new Error(`textarea(): invalid attribute name "${name}"`);
17
- if (value === false || value === null || value === undefined)
18
- return '';
19
- return value === true ? ` ${name}` : ` ${name}="${escapeAttr(String(value))}"`;
20
- })
21
- .join('');
22
- }
23
- /** The markup the server writes, and the client's first render: escaped, no bindings inside. */
24
- export function textareaMarkup({ value, attrs }) {
25
- return `<textarea${attrMarkup(attrs)}>${escapeText(value)}</textarea>`;
26
- }
27
- function findTextarea(part) {
28
- for (let node = part.startNode?.nextSibling; node && node !== part.endNode; node = node.nextSibling) {
29
- if (node instanceof HTMLTextAreaElement)
30
- return node;
31
- }
32
- return undefined;
33
- }
34
- function syncAttributes(el, attrs) {
35
- for (const [name, value] of Object.entries(attrs ?? {})) {
36
- if (value === false || value === null || value === undefined)
37
- el.removeAttribute(name);
38
- else
39
- el.setAttribute(name, value === true ? '' : String(value));
40
- }
41
- }
42
- class TextareaDirective extends Directive {
43
- /** The model value last applied, so typing isn't overwritten by an unchanged model. */
44
- #applied;
45
- constructor(info) {
46
- super(info);
47
- if (info.type !== PartType.CHILD) {
48
- throw new Error('textarea() must be used in a child position: html`${textarea({…})}`');
49
- }
50
- }
51
- render(options) {
52
- return staticHtml `${unsafeStatic(textareaMarkup(options))}`;
53
- }
54
- update(part, [options]) {
55
- const el = findTextarea(part);
56
- if (el === undefined) {
57
- // First render (client) or hydration (server markup already in place): same template.
58
- this.#applied = options.value;
59
- return this.render(options);
60
- }
61
- syncAttributes(el, options.attrs);
62
- if (this.#applied === undefined) {
63
- // Hydration: the server's element is already here. Keep whatever the user typed before
64
- // the script loaded; only later model changes write the value.
65
- this.#applied = options.value;
66
- return noChange;
67
- }
68
- if (options.value !== this.#applied) {
69
- this.#applied = options.value;
70
- if (el.value !== options.value)
71
- el.value = options.value;
72
- }
73
- return noChange;
74
- }
75
- }
76
- /**
77
- * A `<textarea>` whose content comes from the model, safe for SSR and hydration:
78
- *
79
- * ${textarea({ value: s.message, attrs: { name: 'message', rows: 5, required: true,
80
- * 'data-intent': i.Message } })}
81
- *
82
- * Text typed before or after hydration is kept until the model's value changes.
83
- */
84
- export const textarea = directive(TextareaDirective);
85
- //# sourceMappingURL=textarea.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"textarea.js","sourceRoot":"","sources":["../src/textarea.ts"],"names":[],"mappings":"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","sourcesContent":["// <textarea> support (gyral-czi.34). Lit can't bind inside <textarea>: its content is raw\n// text, so `html\\`<textarea>${v}</textarea>\\`` throws during SSR (\"Unexpected final\n// partIndex\") and never updates in the browser. `textarea()` renders the element as a static,\n// escaped template (correct no-JS markup and a hydration match), then keeps it in sync by\n// setting properties and attributes on the same element.\nimport { noChange } from 'lit';\nimport { Directive, directive, PartType, type ChildPart, type PartInfo } from 'lit/directive.js';\nimport { html as staticHtml, unsafeStatic } from 'lit/static-html.js';\n\nexport type TextareaAttribute = string | number | boolean | null | undefined;\n\nexport interface TextareaOptions {\n /** The model's value. Applied to the live element only when the model changes. */\n readonly value: string;\n /** Attributes such as name, id, rows, required, maxlength, data-intent, aria-invalid. */\n readonly attrs?: Readonly<Record<string, TextareaAttribute>>;\n}\n\nconst escapeText = (s: string): string =>\n s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\nconst escapeAttr = (s: string): string => escapeText(s).replace(/\"/g, '&quot;');\nconst ATTR_NAME = /^[a-zA-Z_:][-a-zA-Z0-9_:.]*$/;\n\nfunction attrMarkup(attrs: TextareaOptions['attrs']): string {\n return Object.entries(attrs ?? {})\n .map(([name, value]) => {\n if (!ATTR_NAME.test(name)) throw new Error(`textarea(): invalid attribute name \"${name}\"`);\n if (value === false || value === null || value === undefined) return '';\n return value === true ? ` ${name}` : ` ${name}=\"${escapeAttr(String(value))}\"`;\n })\n .join('');\n}\n\n/** The markup the server writes, and the client's first render: escaped, no bindings inside. */\nexport function textareaMarkup({ value, attrs }: TextareaOptions): string {\n return `<textarea${attrMarkup(attrs)}>${escapeText(value)}</textarea>`;\n}\n\nfunction findTextarea(part: ChildPart): HTMLTextAreaElement | undefined {\n for (\n let node = part.startNode?.nextSibling;\n node && node !== part.endNode;\n node = node.nextSibling\n ) {\n if (node instanceof HTMLTextAreaElement) return node;\n }\n return undefined;\n}\n\nfunction syncAttributes(el: HTMLTextAreaElement, attrs: TextareaOptions['attrs']): void {\n for (const [name, value] of Object.entries(attrs ?? {})) {\n if (value === false || value === null || value === undefined) el.removeAttribute(name);\n else el.setAttribute(name, value === true ? '' : String(value));\n }\n}\n\nclass TextareaDirective extends Directive {\n /** The model value last applied, so typing isn't overwritten by an unchanged model. */\n #applied: string | undefined;\n\n constructor(info: PartInfo) {\n super(info);\n if (info.type !== PartType.CHILD) {\n throw new Error('textarea() must be used in a child position: html`${textarea({…})}`');\n }\n }\n\n override render(options: TextareaOptions): unknown {\n return staticHtml`${unsafeStatic(textareaMarkup(options))}`;\n }\n\n override update(part: ChildPart, [options]: [TextareaOptions]): unknown {\n const el = findTextarea(part);\n if (el === undefined) {\n // First render (client) or hydration (server markup already in place): same template.\n this.#applied = options.value;\n return this.render(options);\n }\n syncAttributes(el, options.attrs);\n if (this.#applied === undefined) {\n // Hydration: the server's element is already here. Keep whatever the user typed before\n // the script loaded; only later model changes write the value.\n this.#applied = options.value;\n return noChange;\n }\n if (options.value !== this.#applied) {\n this.#applied = options.value;\n if (el.value !== options.value) el.value = options.value;\n }\n return noChange;\n }\n}\n\n/**\n * A `<textarea>` whose content comes from the model, safe for SSR and hydration:\n *\n * ${textarea({ value: s.message, attrs: { name: 'message', rows: 5, required: true,\n * 'data-intent': i.Message } })}\n *\n * Text typed before or after hydration is kept until the model's value changes.\n */\nexport const textarea = directive(TextareaDirective);\n"]}