rip-lang 3.13.93 → 3.13.94

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 (63) hide show
  1. package/README.md +1 -1
  2. package/docs/dist/rip.js +142 -38
  3. package/docs/dist/rip.min.js +174 -174
  4. package/docs/dist/rip.min.js.br +0 -0
  5. package/package.json +1 -1
  6. package/src/ui.rip +65 -0
  7. package/docs/ui/accordion.rip +0 -113
  8. package/docs/ui/alert-dialog.rip +0 -96
  9. package/docs/ui/autocomplete.rip +0 -141
  10. package/docs/ui/avatar.rip +0 -37
  11. package/docs/ui/badge.rip +0 -15
  12. package/docs/ui/breadcrumb.rip +0 -46
  13. package/docs/ui/button-group.rip +0 -26
  14. package/docs/ui/button.rip +0 -23
  15. package/docs/ui/card.rip +0 -25
  16. package/docs/ui/carousel.rip +0 -110
  17. package/docs/ui/checkbox-group.rip +0 -65
  18. package/docs/ui/checkbox.rip +0 -33
  19. package/docs/ui/collapsible.rip +0 -50
  20. package/docs/ui/combobox.rip +0 -155
  21. package/docs/ui/context-menu.rip +0 -105
  22. package/docs/ui/date-picker.rip +0 -214
  23. package/docs/ui/dialog.rip +0 -107
  24. package/docs/ui/drawer.rip +0 -79
  25. package/docs/ui/editable-value.rip +0 -80
  26. package/docs/ui/field.rip +0 -53
  27. package/docs/ui/fieldset.rip +0 -22
  28. package/docs/ui/form.rip +0 -39
  29. package/docs/ui/grid.rip +0 -901
  30. package/docs/ui/hljs-rip.js +0 -209
  31. package/docs/ui/index.css +0 -1772
  32. package/docs/ui/index.html +0 -2433
  33. package/docs/ui/input-group.rip +0 -28
  34. package/docs/ui/input.rip +0 -36
  35. package/docs/ui/label.rip +0 -16
  36. package/docs/ui/menu.rip +0 -162
  37. package/docs/ui/menubar.rip +0 -155
  38. package/docs/ui/meter.rip +0 -36
  39. package/docs/ui/multi-select.rip +0 -158
  40. package/docs/ui/native-select.rip +0 -32
  41. package/docs/ui/nav-menu.rip +0 -129
  42. package/docs/ui/number-field.rip +0 -162
  43. package/docs/ui/otp-field.rip +0 -89
  44. package/docs/ui/pagination.rip +0 -123
  45. package/docs/ui/popover.rip +0 -143
  46. package/docs/ui/preview-card.rip +0 -73
  47. package/docs/ui/progress.rip +0 -25
  48. package/docs/ui/radio-group.rip +0 -67
  49. package/docs/ui/resizable.rip +0 -123
  50. package/docs/ui/scroll-area.rip +0 -145
  51. package/docs/ui/select.rip +0 -184
  52. package/docs/ui/separator.rip +0 -17
  53. package/docs/ui/skeleton.rip +0 -22
  54. package/docs/ui/slider.rip +0 -165
  55. package/docs/ui/spinner.rip +0 -17
  56. package/docs/ui/table.rip +0 -27
  57. package/docs/ui/tabs.rip +0 -124
  58. package/docs/ui/textarea.rip +0 -48
  59. package/docs/ui/toast.rip +0 -87
  60. package/docs/ui/toggle-group.rip +0 -78
  61. package/docs/ui/toggle.rip +0 -24
  62. package/docs/ui/toolbar.rip +0 -46
  63. package/docs/ui/tooltip.rip +0 -115
package/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
  </p>
10
10
 
11
11
  <p align="center">
12
- <a href="CHANGELOG.md"><img src="https://img.shields.io/badge/version-3.13.93-blue.svg" alt="Version"></a>
12
+ <a href="CHANGELOG.md"><img src="https://img.shields.io/badge/version-3.13.94-blue.svg" alt="Version"></a>
13
13
  <a href="#zero-dependencies"><img src="https://img.shields.io/badge/dependencies-ZERO-brightgreen.svg" alt="Dependencies"></a>
14
14
  <a href="#"><img src="https://img.shields.io/badge/tests-1%2C436%2F1%2C436-brightgreen.svg" alt="Tests"></a>
15
15
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License"></a>
package/docs/dist/rip.js CHANGED
@@ -81,25 +81,22 @@
81
81
  if (next && next[0] === "COMPARE" && next[1] === "<" && !next.spaced) {
82
82
  let isDef = tokens2[i - 1]?.[0] === "DEF";
83
83
  let genTokens = collectBalancedAngles(tokens2, i + 1);
84
- if (genTokens) {
85
- let isAlias = !isDef && tokens2[i + 1 + genTokens.length]?.[0] === "TYPE_ALIAS";
86
- if (isDef || isAlias) {
87
- if (!token.data)
88
- token.data = {};
89
- token.data.typeParams = buildTypeString(genTokens);
90
- tokens2.splice(i + 1, genTokens.length);
91
- if (isDef && tokens2[i + 1]?.[0] === "(") {
92
- tokens2[i + 1][0] = "CALL_START";
93
- let d = 1, m = i + 2;
94
- while (m < tokens2.length && d > 0) {
95
- if (tokens2[m][0] === "(" || tokens2[m][0] === "CALL_START")
96
- d++;
97
- if (tokens2[m][0] === ")" || tokens2[m][0] === "CALL_END")
98
- d--;
99
- if (d === 0)
100
- tokens2[m][0] = "CALL_END";
101
- m++;
102
- }
84
+ if (genTokens && isDef) {
85
+ if (!token.data)
86
+ token.data = {};
87
+ token.data.typeParams = buildTypeString(genTokens);
88
+ tokens2.splice(i + 1, genTokens.length);
89
+ if (tokens2[i + 1]?.[0] === "(") {
90
+ tokens2[i + 1][0] = "CALL_START";
91
+ let d = 1, m = i + 2;
92
+ while (m < tokens2.length && d > 0) {
93
+ if (tokens2[m][0] === "(" || tokens2[m][0] === "CALL_START")
94
+ d++;
95
+ if (tokens2[m][0] === ")" || tokens2[m][0] === "CALL_END")
96
+ d--;
97
+ if (d === 0)
98
+ tokens2[m][0] = "CALL_END";
99
+ m++;
103
100
  }
104
101
  }
105
102
  }
@@ -143,14 +140,30 @@
143
140
  tokens2.splice(i, removeCount);
144
141
  return 0;
145
142
  }
146
- if (tag === "TYPE_ALIAS") {
147
- let nameToken = tokens2[i - 1];
148
- if (!nameToken)
143
+ if (tag === "IDENTIFIER" && token[1] === "type") {
144
+ let prevTag = tokens2[i - 1]?.[0];
145
+ let atStatement = !prevTag || prevTag === "TERMINATOR" || prevTag === "INDENT" || prevTag === "EXPORT";
146
+ if (!atStatement)
147
+ return 1;
148
+ let nameIdx = i + 1;
149
+ let nameToken = tokens2[nameIdx];
150
+ if (!nameToken || nameToken[0] !== "IDENTIFIER")
149
151
  return 1;
150
152
  let name = nameToken[1];
151
- let exported = i >= 2 && tokens2[i - 2]?.[0] === "EXPORT";
152
- let removeFrom = exported ? i - 2 : i - 1;
153
- let next = tokens2[i + 1];
153
+ let exported = prevTag === "EXPORT";
154
+ let removeFrom = exported ? i - 1 : i;
155
+ let eqIdx = nameIdx + 1;
156
+ if (tokens2[eqIdx]?.[0] === "COMPARE" && tokens2[eqIdx]?.[1] === "<" && !tokens2[eqIdx].spaced) {
157
+ let genTokens = collectBalancedAngles(tokens2, eqIdx);
158
+ if (genTokens) {
159
+ if (!nameToken.data)
160
+ nameToken.data = {};
161
+ nameToken.data.typeParams = buildTypeString(genTokens);
162
+ tokens2.splice(eqIdx, genTokens.length);
163
+ }
164
+ }
165
+ if (tokens2[eqIdx]?.[0] !== "=")
166
+ return 1;
154
167
  let makeDecl = (typeText) => {
155
168
  let dt = gen("TYPE_DECL", name, nameToken);
156
169
  dt.data = { name, typeText, exported };
@@ -158,20 +171,22 @@
158
171
  dt.data.typeParams = nameToken.data.typeParams;
159
172
  return dt;
160
173
  };
161
- if (next && next[0] === "IDENTIFIER" && next[1] === "type" && tokens2[i + 2]?.[0] === "INDENT") {
162
- let endIdx = findMatchingOutdent(tokens2, i + 2);
163
- tokens2.splice(removeFrom, endIdx - removeFrom + 1, makeDecl(collectStructuralType(tokens2, i + 2)));
164
- return 0;
165
- }
174
+ let afterEq = eqIdx + 1;
175
+ let next = tokens2[afterEq];
166
176
  if (next && (next[0] === "TERMINATOR" || next[0] === "INDENT")) {
167
- let result = collectBlockUnion(tokens2, i + 1);
177
+ let result = collectBlockUnion(tokens2, afterEq);
168
178
  if (result) {
169
179
  tokens2.splice(removeFrom, result.endIdx - removeFrom + 1, makeDecl(result.typeText));
170
180
  return 0;
171
181
  }
172
182
  }
173
- let typeTokens = collectTypeExpression(tokens2, i + 1);
174
- tokens2.splice(removeFrom, i + 1 + typeTokens.length - removeFrom, makeDecl(buildTypeString(typeTokens)));
183
+ if (next && next[0] === "INDENT") {
184
+ let endIdx = findMatchingOutdent(tokens2, afterEq);
185
+ tokens2.splice(removeFrom, endIdx - removeFrom + 1, makeDecl(collectStructuralType(tokens2, afterEq)));
186
+ return 0;
187
+ }
188
+ let typeTokens = collectTypeExpression(tokens2, afterEq);
189
+ tokens2.splice(removeFrom, afterEq + typeTokens.length - removeFrom, makeDecl(buildTypeString(typeTokens)));
175
190
  return 0;
176
191
  }
177
192
  if (tag === "INTERFACE") {
@@ -835,9 +850,14 @@
835
850
  let preamble = [];
836
851
  if (usesSignal) {
837
852
  preamble.push("interface Signal<T> { value: T; read(): T; lock(): Signal<T>; free(): Signal<T>; kill(): T; }");
853
+ preamble.push("declare function __state<T>(value: T): Signal<T>;");
838
854
  }
839
855
  if (usesComputed) {
840
856
  preamble.push("interface Computed<T> { readonly value: T; read(): T; lock(): Computed<T>; free(): Computed<T>; kill(): T; }");
857
+ preamble.push("declare function __computed<T>(fn: () => T): Computed<T>;");
858
+ }
859
+ if (usesSignal || usesComputed) {
860
+ preamble.push("declare function __effect(fn: () => void | (() => void)): () => void;");
841
861
  }
842
862
  if (preamble.length > 0) {
843
863
  preamble.push("");
@@ -1223,7 +1243,7 @@
1223
1243
  var UNARY_MATH = new Set(["!", "~"]);
1224
1244
  var IDENTIFIER_RE = /^(?!\d)((?:(?!\s)[$\w\x7f-\uffff])+(?:!(?!\?)|[?](?![.?![(]))?)([^\n\S]*:(?![=:]))?/;
1225
1245
  var NUMBER_RE = /^0b[01](?:_?[01])*n?|^0o[0-7](?:_?[0-7])*n?|^0x[\da-f](?:_?[\da-f])*n?|^\d+(?:_\d+)*n|^(?:\d+(?:_\d+)*)?\.?\d+(?:_\d+)*(?:e[+-]?\d+(?:_\d+)*)?/i;
1226
- var OPERATOR_RE = /^(?:<=>|::=|::|[-=]>|~>|~=|:=|=!|===|!==|!\?|\?\!|\?\?|=~|\|>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>*\/%])\2=?|\?\.?|\.{2,3})/;
1246
+ var OPERATOR_RE = /^(?:<=>|::|[-=]>|~>|~=|:=|=!|===|!==|!\?|\?\!|\?\?|=~|\|>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>*\/%])\2=?|\?\.?|\.{2,3})/;
1227
1247
  var WHITESPACE_RE = /^[^\n\S]+/;
1228
1248
  var NEWLINE_RE = /^(?:\n[^\n\S]*)+/;
1229
1249
  var COMMENT_RE = /^(\s*)###([^#][\s\S]*?)(?:###([^\n\S]*)|###$)|^((?:\s*#(?!##[^#]).*)+)/;
@@ -1995,8 +2015,6 @@
1995
2015
  tag = "TERMINATOR";
1996
2016
  } else if (val === "|>")
1997
2017
  tag = "PIPE";
1998
- else if (val === "::=")
1999
- tag = "TYPE_ALIAS";
2000
2018
  else if (val === "::" && /^[a-zA-Z_$]/.test(this.chunk[2] || "")) {
2001
2019
  this.emit(".", ".");
2002
2020
  this.emit("PROPERTY", "prototype");
@@ -8844,8 +8862,8 @@ globalThis.zip ??= (...a) => a[0].map((_, i) => a.map(b => b[i]));
8844
8862
  return new CodeGenerator({}).getComponentRuntime();
8845
8863
  }
8846
8864
  // src/browser.js
8847
- var VERSION = "3.13.91";
8848
- var BUILD_DATE = "2026-03-04@21:40:01GMT";
8865
+ var VERSION = "3.13.93";
8866
+ var BUILD_DATE = "2026-03-12@00:12:28GMT";
8849
8867
  if (typeof globalThis !== "undefined") {
8850
8868
  if (!globalThis.__rip)
8851
8869
  new Function(getReactiveRuntime())();
@@ -9135,6 +9153,10 @@ ${indented}`);
9135
9153
  var __batch;
9136
9154
  var __effect;
9137
9155
  var __state;
9156
+ var _ariaListNav;
9157
+ var _ariaNAV;
9158
+ var _ariaPopupDismiss;
9159
+ var _ariaRovingNav;
9138
9160
  var _keysVersion;
9139
9161
  var _proxy;
9140
9162
  var _toFn;
@@ -10242,6 +10264,88 @@ ${indented}`);
10242
10264
  }
10243
10265
  return { app, components: appComponents, router, renderer };
10244
10266
  };
10267
+ _ariaNAV = function(e, fn) {
10268
+ if (!fn)
10269
+ return;
10270
+ e.preventDefault();
10271
+ e.stopPropagation();
10272
+ return fn();
10273
+ };
10274
+ _ariaListNav = function(e, h) {
10275
+ if (e.which === 229)
10276
+ return;
10277
+ return (() => {
10278
+ switch (e.key) {
10279
+ case "ArrowDown":
10280
+ return _ariaNAV(e, h.next);
10281
+ case "ArrowUp":
10282
+ return _ariaNAV(e, h.prev);
10283
+ case "Home":
10284
+ case "PageUp":
10285
+ return _ariaNAV(e, h.first);
10286
+ case "End":
10287
+ case "PageDown":
10288
+ return _ariaNAV(e, h.last);
10289
+ case "Enter":
10290
+ case " ":
10291
+ return _ariaNAV(e, h.select);
10292
+ case "Escape":
10293
+ return _ariaNAV(e, h.dismiss);
10294
+ case "Tab":
10295
+ return h.tab?.();
10296
+ default:
10297
+ return e.key.length === 1 ? h.char?.(e.key) : undefined;
10298
+ }
10299
+ })();
10300
+ };
10301
+ _ariaPopupDismiss = function(open, popup, close, els = []) {
10302
+ let inside, onDown, onScroll;
10303
+ if (!open)
10304
+ return;
10305
+ inside = [popup, ...els];
10306
+ onDown = (e) => !inside.some(function(el) {
10307
+ return el?.contains(e.target);
10308
+ }) ? close() : undefined;
10309
+ onScroll = (e) => !popup?.contains(e.target) ? close() : undefined;
10310
+ document.addEventListener("mousedown", onDown);
10311
+ window.addEventListener("scroll", onScroll, true);
10312
+ return function() {
10313
+ document.removeEventListener("mousedown", onDown);
10314
+ return window.removeEventListener("scroll", onScroll, true);
10315
+ };
10316
+ };
10317
+ _ariaRovingNav = function(e, h, orientation = "vertical") {
10318
+ let horz, vert;
10319
+ if (e.which === 229)
10320
+ return;
10321
+ vert = orientation !== "horizontal";
10322
+ horz = orientation !== "vertical";
10323
+ return (() => {
10324
+ switch (e.key) {
10325
+ case "ArrowDown":
10326
+ return vert ? _ariaNAV(e, h.next) : undefined;
10327
+ case "ArrowUp":
10328
+ return vert ? _ariaNAV(e, h.prev) : undefined;
10329
+ case "ArrowRight":
10330
+ return horz ? _ariaNAV(e, h.next) : undefined;
10331
+ case "ArrowLeft":
10332
+ return horz ? _ariaNAV(e, h.prev) : undefined;
10333
+ case "Home":
10334
+ case "PageUp":
10335
+ return _ariaNAV(e, h.first);
10336
+ case "End":
10337
+ case "PageDown":
10338
+ return _ariaNAV(e, h.last);
10339
+ case "Enter":
10340
+ case " ":
10341
+ return _ariaNAV(e, h.select);
10342
+ case "Escape":
10343
+ return _ariaNAV(e, h.dismiss);
10344
+ }
10345
+ })();
10346
+ };
10347
+ globalThis.__aria ??= { listNav: _ariaListNav, rovingNav: _ariaRovingNav, popupDismiss: _ariaPopupDismiss };
10348
+ globalThis.ARIA ??= globalThis.__aria;
10245
10349
 
10246
10350
  // docs/dist/_entry.js
10247
10351
  importRip.modules["ui.rip"] = exports__ui;