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.
- package/README.md +1 -1
- package/docs/dist/rip.js +142 -38
- package/docs/dist/rip.min.js +174 -174
- package/docs/dist/rip.min.js.br +0 -0
- package/package.json +1 -1
- package/src/ui.rip +65 -0
- package/docs/ui/accordion.rip +0 -113
- package/docs/ui/alert-dialog.rip +0 -96
- package/docs/ui/autocomplete.rip +0 -141
- package/docs/ui/avatar.rip +0 -37
- package/docs/ui/badge.rip +0 -15
- package/docs/ui/breadcrumb.rip +0 -46
- package/docs/ui/button-group.rip +0 -26
- package/docs/ui/button.rip +0 -23
- package/docs/ui/card.rip +0 -25
- package/docs/ui/carousel.rip +0 -110
- package/docs/ui/checkbox-group.rip +0 -65
- package/docs/ui/checkbox.rip +0 -33
- package/docs/ui/collapsible.rip +0 -50
- package/docs/ui/combobox.rip +0 -155
- package/docs/ui/context-menu.rip +0 -105
- package/docs/ui/date-picker.rip +0 -214
- package/docs/ui/dialog.rip +0 -107
- package/docs/ui/drawer.rip +0 -79
- package/docs/ui/editable-value.rip +0 -80
- package/docs/ui/field.rip +0 -53
- package/docs/ui/fieldset.rip +0 -22
- package/docs/ui/form.rip +0 -39
- package/docs/ui/grid.rip +0 -901
- package/docs/ui/hljs-rip.js +0 -209
- package/docs/ui/index.css +0 -1772
- package/docs/ui/index.html +0 -2433
- package/docs/ui/input-group.rip +0 -28
- package/docs/ui/input.rip +0 -36
- package/docs/ui/label.rip +0 -16
- package/docs/ui/menu.rip +0 -162
- package/docs/ui/menubar.rip +0 -155
- package/docs/ui/meter.rip +0 -36
- package/docs/ui/multi-select.rip +0 -158
- package/docs/ui/native-select.rip +0 -32
- package/docs/ui/nav-menu.rip +0 -129
- package/docs/ui/number-field.rip +0 -162
- package/docs/ui/otp-field.rip +0 -89
- package/docs/ui/pagination.rip +0 -123
- package/docs/ui/popover.rip +0 -143
- package/docs/ui/preview-card.rip +0 -73
- package/docs/ui/progress.rip +0 -25
- package/docs/ui/radio-group.rip +0 -67
- package/docs/ui/resizable.rip +0 -123
- package/docs/ui/scroll-area.rip +0 -145
- package/docs/ui/select.rip +0 -184
- package/docs/ui/separator.rip +0 -17
- package/docs/ui/skeleton.rip +0 -22
- package/docs/ui/slider.rip +0 -165
- package/docs/ui/spinner.rip +0 -17
- package/docs/ui/table.rip +0 -27
- package/docs/ui/tabs.rip +0 -124
- package/docs/ui/textarea.rip +0 -48
- package/docs/ui/toast.rip +0 -87
- package/docs/ui/toggle-group.rip +0 -78
- package/docs/ui/toggle.rip +0 -24
- package/docs/ui/toolbar.rip +0 -46
- 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.
|
|
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
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
tokens2
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
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 === "
|
|
147
|
-
let
|
|
148
|
-
|
|
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 =
|
|
152
|
-
let removeFrom = exported ? i -
|
|
153
|
-
let
|
|
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
|
-
|
|
162
|
-
|
|
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,
|
|
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
|
-
|
|
174
|
-
|
|
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 = /^(
|
|
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.
|
|
8848
|
-
var BUILD_DATE = "2026-03-
|
|
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;
|