rip-lang 3.13.97 → 3.13.99
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 +4 -4
- package/docs/dist/rip.min.js +2 -2
- package/docs/dist/rip.min.js.br +0 -0
- package/package.json +1 -1
- package/src/ui.rip +3 -3
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.99-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
|
@@ -8862,8 +8862,8 @@ globalThis.zip ??= (...a) => a[0].map((_, i) => a.map(b => b[i]));
|
|
|
8862
8862
|
return new CodeGenerator({}).getComponentRuntime();
|
|
8863
8863
|
}
|
|
8864
8864
|
// src/browser.js
|
|
8865
|
-
var VERSION = "3.13.
|
|
8866
|
-
var BUILD_DATE = "2026-03-12@01:
|
|
8865
|
+
var VERSION = "3.13.98";
|
|
8866
|
+
var BUILD_DATE = "2026-03-12@01:49:00GMT";
|
|
8867
8867
|
if (typeof globalThis !== "undefined") {
|
|
8868
8868
|
if (!globalThis.__rip)
|
|
8869
8869
|
new Function(getReactiveRuntime())();
|
|
@@ -10272,7 +10272,7 @@ ${indented}`);
|
|
|
10272
10272
|
return fn();
|
|
10273
10273
|
};
|
|
10274
10274
|
_ariaListNav = function(e, h) {
|
|
10275
|
-
if (e.
|
|
10275
|
+
if (e.isComposing)
|
|
10276
10276
|
return;
|
|
10277
10277
|
return (() => {
|
|
10278
10278
|
switch (e.key) {
|
|
@@ -10318,7 +10318,7 @@ ${indented}`);
|
|
|
10318
10318
|
};
|
|
10319
10319
|
_ariaRovingNav = function(e, h, orientation = "vertical") {
|
|
10320
10320
|
let horz, vert;
|
|
10321
|
-
if (e.
|
|
10321
|
+
if (e.isComposing)
|
|
10322
10322
|
return;
|
|
10323
10323
|
vert = orientation !== "horizontal";
|
|
10324
10324
|
horz = orientation !== "vertical";
|
package/docs/dist/rip.min.js
CHANGED
|
@@ -719,7 +719,7 @@ globalThis.sleep ??= (ms) => new Promise(r => setTimeout(r, ms));
|
|
|
719
719
|
globalThis.todo ??= (msg) => { throw new Error(msg || "Not implemented"); };
|
|
720
720
|
globalThis.warn ??= console.warn;
|
|
721
721
|
globalThis.zip ??= (...a) => a[0].map((_, i) => a.map(b => b[i]));
|
|
722
|
-
`}function J1(){return new x({}).getReactiveRuntime()}function K1(){return new x({}).getComponentRuntime()}var q2="3.13.
|
|
722
|
+
`}function J1(){return new x({}).getReactiveRuntime()}function K1(){return new x({}).getComponentRuntime()}var q2="3.13.98",P2="2026-03-12@01:49:00GMT";if(typeof globalThis<"u"){if(!globalThis.__rip)Function(J1())();if(!globalThis.__ripComponent)Function(K1())()}var r3=(f)=>{let U=f.match(/^[ \t]*(?=\S)/gm),W=Math.min(...(U||[]).map((F)=>F.length));return f.replace(RegExp(`^[ ]{${W}}`,"gm"),"").trim()};async function E2(){let f=[],U=document.querySelector('script[src$="rip.min.js"], script[src$="rip.js"]'),W=U?.getAttribute("data-src");if(W){for(let F of W.trim().split(/\s+/))if(F)f.push({url:F})}for(let F of document.querySelectorAll('script[type="text/rip"]'))if(F.src)f.push({url:F.src});else{let u=r3(F.textContent);if(u)f.push({code:u})}if(f.length>0){let F=await Promise.allSettled(f.map(async(A)=>{if(!A.url)return;let R=await fetch(A.url);if(!R.ok)throw Error(`${A.url} (${R.status})`);if(A.url.endsWith(".rip"))A.code=await R.text();else{let w=await R.json();A.bundle=w}}));for(let A of F)if(A.status==="rejected")console.warn("Rip: fetch failed:",A.reason.message);let u=[],$=[];for(let A of f)if(A.bundle)u.push(A.bundle);else if(A.code)$.push(A);let Y=U?.getAttribute("data-router");if(Y!=null&&u.length>0){let A={skipRuntimes:!0,skipExports:!0};if($.length>0){let w="";for(let z of $)try{w+=a(z.code,A)+`
|
|
723
723
|
`}catch(Q){console.error(`Rip compile error in ${z.url||"inline"}:`,Q.message)}if(w)try{await(0,eval)(`(async()=>{
|
|
724
724
|
${w}
|
|
725
725
|
})()`)}catch(z){console.error("Rip runtime error:",z)}}let R=U1.modules?.["ui.rip"];if(R?.launch){let w=u[u.length-1],z=U.getAttribute("data-persist"),Q={bundle:w,hash:Y==="hash"};if(z!=null)Q.persist=z==="local"?"local":!0;await R.launch("",Q)}}else{let A=[];for(let z of u){for(let[Q,D]of Object.entries(z.components||{}))A.push({code:D,url:Q});if(z.data){let Q=U?.getAttribute("data-state"),D={};if(Q)try{D=JSON.parse(Q)}catch{}Object.assign(D,z.data),U?.setAttribute("data-state",JSON.stringify(D))}}A.push(...$);let R={skipRuntimes:!0,skipExports:!0},w=[];for(let z of A){if(!z.code)continue;try{let Q=a(z.code,R);w.push({js:Q,url:z.url||"inline"})}catch(Q){console.error(`Rip compile error in ${z.url||"inline"}:`,Q.message)}}if(!globalThis.__ripApp&&U){let z=globalThis.stash;if(z){let Q={},D=U.getAttribute("data-state");if(D)try{Q=JSON.parse(D)}catch(X){console.error("Rip: invalid data-state JSON:",X.message)}let J=z({data:Q});if(globalThis.__ripApp=J,typeof window<"u")window.app=J;let M=U.getAttribute("data-persist");if(M!=null&&globalThis.persistStash)globalThis.persistStash(J,{local:M==="local"})}}if(w.length>0){let z=w.map((D)=>D.js).join(`
|
|
@@ -732,4 +732,4 @@ ${J.js}
|
|
|
732
732
|
`,u=new Blob([F+W],{type:"application/javascript"});return await import(URL.createObjectURL(u))}U1.modules={};function I2(f){try{let U=f.replace(/^/gm," "),F=a(`do ->
|
|
733
733
|
${U}`).replace(/^let\s+[^;]+;\s*\n\s*/m,"");F=F.replace(/^const\s+(\w+)\s*=/gm,"globalThis.$1 =");let u=(0,eval)(F);if(u&&typeof u.then==="function")return u.then(($)=>{if($!==void 0)globalThis._=$;return $});if(u!==void 0)globalThis._=u;return u}catch(U){console.error("Rip compilation error:",U.message);return}}if(typeof globalThis<"u")globalThis.rip=I2,globalThis.importRip=U1,globalThis.compileToJS=a,globalThis.__ripExports={compile:I1,compileToJS:a,formatSExpr:r,getStdlibCode:X1,VERSION:q2,BUILD_DATE:P2,getReactiveRuntime:J1,getComponentRuntime:K1};if(typeof document<"u")globalThis.__ripScriptsReady=new Promise((f)=>{let U=()=>E2().then(f);if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",()=>queueMicrotask(U));else queueMicrotask(U)});var T1={};f2(T1,{throttle:()=>t3,stash:()=>n2,setContext:()=>x2,raw:()=>p1,persistStash:()=>p2,launch:()=>u7,isStash:()=>o3,hold:()=>e3,hasContext:()=>v2,getContext:()=>b2,delay:()=>d2,debounce:()=>s3,createRouter:()=>o2,createResource:()=>a3,createRenderer:()=>a2,createComponents:()=>r2});var B2,k1,d1,R1,u1,L1,N2,W1,v,L2,l,T2,S2,m1,H1,O1,r1,h2,V2,B1,N1,j2,C2,y2,i1,n1,b2,c2,o1,v2,M1,a1,g2,l2,x2,k2,m2,s1,i2;globalThis.abort??=(f)=>{if(f)console.error(f);process.exit(1)};globalThis.assert??=(f,U)=>{if(!f)throw Error(U||"Assertion failed")};globalThis.exit??=(f)=>process.exit(f||0);globalThis.kind??=(f)=>f!=null?(f.constructor?.name||Object.prototype.toString.call(f).slice(8,-1)).toLowerCase():String(f);globalThis.noop??=()=>{};globalThis.p??=console.log;globalThis.pp??=(f)=>{return console.log(JSON.stringify(f,null,2)),f};globalThis.raise??=(f,U)=>{throw U!==void 0?new f(U):Error(f)};globalThis.rand??=(f,U)=>U!==void 0?(f>U&&([f,U]=[U,f]),Math.floor(Math.random()*(U-f+1)+f)):f?Math.floor(Math.random()*f):Math.random();globalThis.sleep??=(f)=>new Promise((U)=>setTimeout(U,f));globalThis.todo??=(f)=>{throw Error(f||"Not implemented")};globalThis.warn??=console.warn;globalThis.zip??=(...f)=>f[0].map((U,W)=>f.map((F)=>F[W]));({__state:v,__effect:W1,__batch:N2}=globalThis.__rip);({setContext:x2,getContext:b2,hasContext:v2}=globalThis.__ripComponent||{});L1=Symbol("stash");u1=Symbol("signals");R1=Symbol("raw");k1=Symbol("persisted");d1=new WeakMap;m1=0;r1=v(0);o1=function(f,U){let W;if(!f[u1])Object.defineProperty(f,u1,{value:new Map,enumerable:!1});if(W=f[u1].get(U),!W)W=v(f[U]),f[u1].set(U,W);return W};M1=function(f){return o1(f,Symbol.for("keys"))};i2=function(f){let U;if(!(f!=null&&typeof f==="object"))return f;if(f[L1])return f;if(f instanceof Date||f instanceof RegExp||f instanceof Map||f instanceof Set||f instanceof Promise)return f;if(U=d1.get(f),U)return U;return a1(f)};a1=function(f){let U,W;return W=null,U={get:function(F,u){let $,Y;if(u===L1)return!0;if(u===R1)return F;if(typeof u==="symbol")return Reflect.get(F,u);if(u==="length"&&Array.isArray(F))return M1(F).value,F.length;if(u==="get")return function(_){return k2(W,_)};if(u==="set")return function(_,A){return m2(W,_,A)};if($=o1(F,u),Y=$.value,Y!=null&&typeof Y==="object")return i2(Y);return Y},set:function(F,u,$){let Y,_;if(Y=F[u],_=$?.[R1]?$[R1]:$,_===Y)return!0;if(F[u]=_,F[u1]?.has(u))F[u1].get(u).value=_;if(Y===void 0&&_!==void 0)M1(F).value=++m1;return r1.value++,!0},deleteProperty:function(F,u){let $;if(delete F[u],$=F[u1]?.get(u),$!=null)$.value=void 0;return M1(F).value=++m1,!0},ownKeys:function(F){return M1(F).value,Reflect.ownKeys(F)}},W=new Proxy(f,U),d1.set(f,W),W};B2=/([./][^./\[\s]+|\[[-+]?\d+\]|\[(?:"[^"]+"|'[^']+')\])/;s1=function(f){let U,W,F,u,$;F=("."+f).split(B2),F.shift(),$=[],W=0;while(W<F.length){if(u=F[W],U=u[0],U==="."||U==="/")$.push(u.slice(1));else if(U==="[")if(u[1]==='"'||u[1]==="'")$.push(u.slice(2,-2));else $.push(+u.slice(1,-1));W+=2}return $};k2=function(f,U){let W,F;F=s1(U),W=f;for(let u of F){if(W==null)return;W=W[u]}return W};m2=function(f,U,W){let F,u;u=s1(U),F=f;for(let $=0;$<u.length;$++){let Y=u[$];if($===u.length-1)F[Y]=W;else{if(F[Y]==null)F[Y]={};F=F[Y]}}return W};var n2=function(f={}){return a1(f)},p1=function(f){return f?.[R1]?f[R1]:f},o3=function(f){return f?.[L1]===!0},p2=function(f,U={}){let W,F,u,$,Y,_;if(_=p1(f)||f,_[k1])return;_[k1]=!0,$=U.local?localStorage:sessionStorage,Y=U.key||"__rip_app";try{if(F=$.getItem(Y),F){u=JSON.parse(F);for(let A in u){let R=u[A];f.data[A]=R}}}catch{}return W=function(){return(()=>{try{return $.setItem(Y,JSON.stringify(p1(f.data)))}catch{return null}})()},W1(function(){let A;return r1.value,A=setTimeout(W,2000),function(){return clearTimeout(A)}}),window.addEventListener("beforeunload",W)},a3=function(f,U={}){let W,F,u,$,Y;if(W=v(U.initial||null),u=v(!1),F=v(null),$=async function(){let _;return u.value=!0,F.value=null,(async()=>{try{return _=await f(),W.value=_}catch(A){return F.value=A}finally{u.value=!1}})()},Y={data:void 0,loading:void 0,error:void 0,refetch:$},Object.defineProperty(Y,"data",{get:function(){return W.value}}),Object.defineProperty(Y,"loading",{get:function(){return u.value}}),Object.defineProperty(Y,"error",{get:function(){return F.value}}),!U.lazy)$();return Y};O1=function(f){return typeof f==="function"?f:function(){return f.value}};H1=function(f,U){let W;return W={read:function(){return f.read()}},Object.defineProperty(W,"value",{get:function(){return f.value},set:function(F){return U.value=F}}),W};var d2=function(f,U){let W,F;return W=O1(U),F=v(!!W()),W1(function(){let u;if(W())return u=setTimeout(function(){return F.value=!0},f),function(){return clearTimeout(u)};else return F.value=!1}),typeof U!=="function"?H1(F,U):F},s3=function(f,U){let W,F;return W=O1(U),F=v(W()),W1(function(){let u,$;return $=W(),u=setTimeout(function(){return F.value=$},f),function(){return clearTimeout(u)}}),typeof U!=="function"?H1(F,U):F},t3=function(f,U){let W,F,u;return W=O1(U),u=v(W()),F=0,W1(function(){let $,Y,_,A;if(A=W(),$=Date.now(),Y=f-($-F),Y<=0)return u.value=A,F=$;else return _=setTimeout(function(){return u.value=W(),F=Date.now()},Y),function(){return clearTimeout(_)}}),typeof U!=="function"?H1(u,U):u},e3=function(f,U){let W,F;return W=O1(U),F=v(!!W()),W1(function(){let u;if(W())return F.value=!0;else return u=setTimeout(function(){return F.value=!1},f),function(){return clearTimeout(u)}}),typeof U!=="function"?H1(F,U):F},r2=function(){let f,U,W,F;return U=new Map,F=[],f=new Map,W=function(u,$){for(let Y of F)Y(u,$)},{read:function(u){return U.get(u)},write:function(u,$){let Y;return Y=!U.has(u),U.set(u,$),f.delete(u),W(Y?"create":"change",u)},del:function(u){return U.delete(u),f.delete(u),W("delete",u)},exists:function(u){return U.has(u)},size:function(){return U.size},list:function(u=""){let $,Y,_;_=[],$=u?u+"/":"";for(let[A]of U)if(A.startsWith($)){if(Y=A.slice($.length),Y.includes("/"))continue;_.push(A)}return _},listAll:function(u=""){let $,Y;Y=[],$=u?u+"/":"";for(let[_]of U)if(_.startsWith($))Y.push(_);return Y},load:function(u){for(let $ in u){let Y=u[$];U.set($,Y)}},watch:function(u){return F.push(u),function(){return F.splice(F.indexOf(u),1)}},getCompiled:function(u){return f.get(u)},setCompiled:function(u,$){return f.set(u,$)}}};y2=function(f){let U;if(U=f.replace(/\.rip$/,""),U=U.replace(/\[\.\.\.(\w+)\]/g,"*$1"),U=U.replace(/\[(\w+)\]/g,":$1"),U==="index")return"/";return U=U.replace(/\/index$/,""),"/"+U};l2=function(f){let U,W;return U=[],W=f.replace(/\*(\w+)/g,function(F,u){return U.push(u),"(.+)"}).replace(/:(\w+)/g,function(F,u){return U.push(u),"([^/]+)"}),{regex:new RegExp("^"+W+"$"),names:U}};g2=function(f,U){let W,F;for(let u of U)if(W=f.match(u.regex.regex),W){F={};for(let $=0;$<u.regex.names.length;$++){let Y=u.regex.names[$];F[Y]=decodeURIComponent(W[$+1])}return{route:u,params:F}}return null};B1=function(f,U="components"){let W,F,u,$,Y,_,A,R,w;A=[],u=new Map,W=f.listAll(U);for(let z of W){if(_=z.slice(U.length+1),!_.endsWith(".rip"))continue;if($=_.split("/").pop(),$==="_layout.rip"){F=_==="_layout.rip"?"":_.slice(0,-12),u.set(F,z);continue}if($.startsWith("_"))continue;if(R=_.split("/"),R.length>1&&R.some(function(Q,D){return D<R.length-1&&Q.startsWith("_")}))continue;w=y2(_),Y=l2(w),A.push({pattern:w,regex:Y,file:z,rel:_})}return A.sort(function(z,Q){let D,J,M,X;if(J=(z.pattern.match(/:/g)||[]).length,X=(Q.pattern.match(/:/g)||[]).length,D=z.pattern.includes("*")?1:0,M=Q.pattern.includes("*")?1:0,D!==M)return D-M;if(J!==X)return J-X;return z.pattern.localeCompare(Q.pattern)}),{routes:A,layouts:u}};c2=function(f,U,W){let F,u,$,Y;if(F=[],$=f.slice(U.length+1),Y=$.split("/"),u="",W.has(""))F.push(W.get(""));for(let _=0;_<Y.length;_++){let A=Y[_];if(_===Y.length-1)break;if(u=u?u+"/"+A:A,W.has(u))F.push(W.get(u))}return F};var o2=function(f,U={}){let W,F,u,$,Y,_,A,R,w,z,Q,D,J,M,X,Z,H,K,G,P,q;if(H=U.root||"components",w=U.base||"",z=U.hash||!1,J=U.onError||null,G=function(O){return w&&O.startsWith(w)?O.slice(w.length)||"/":O},R=function(O){return w?w+O:O},X=function(){let O;if(z){if(O=location.hash.slice(1),!O)return"/";return O[0]==="/"?O:"/"+O}else return location.pathname+location.search+location.hash},q=function(O){return z?O==="/"?location.pathname:"#"+O.slice(1):R(O)},Y=v(G(z?X():location.pathname)),$=v({}),A=v(null),F=v([]),_=v({}),W=v(""),u=d2(100,v(!1)),P=B1(f,H),Q=new Set,f.watch(function(O,E){if(!E.startsWith(H+"/"))return;return P=B1(f,H)}),Z=function(O){let E,I,N,T,B;if(T=O.split("?")[0].split("#")[0],I=G(T),I=I[0]==="/"?I:"/"+I,N=O.split("?")[1]?.split("#")[0]||"",E=O.includes("#")?O.split("#")[1]:"",B=g2(I,P.routes),B){N2(function(){return Y.value=I,$.value=B.params,A.value=B.route,F.value=c2(B.route.file,H,P.layouts),_.value=Object.fromEntries(new URLSearchParams(N)),W.value=E});for(let C of Q)C(K.current);return!0}if(J)J({status:404,path:I});return!1},M=function(){return Z(X())},typeof window<"u")window.addEventListener("popstate",M);if(D=function(O){let E,I,N;if(O.button!==0||O.metaKey||O.ctrlKey||O.shiftKey||O.altKey)return;I=O.target;while(I&&I.tagName!=="A")I=I.parentElement;if(!I?.href)return;if(N=new URL(I.href,location.origin),N.origin!==location.origin)return;if(I.target==="_blank"||I.hasAttribute("data-external"))return;return O.preventDefault(),E=z&&N.hash?N.hash.slice(1)||"/":N.pathname+N.search+N.hash,K.push(E)},typeof document<"u")document.addEventListener("click",D);return K={push:function(O){return Z(O)?history.pushState(null,"",q(Y.read())):void 0},replace:function(O){return Z(O)?history.replaceState(null,"",q(Y.read())):void 0},back:function(){return history.back()},forward:function(){return history.forward()},current:void 0,path:void 0,params:void 0,route:void 0,layouts:void 0,query:void 0,hash:void 0,navigating:void 0,onNavigate:function(O){return Q.add(O),function(){return Q.delete(O)}},rebuild:function(){return P=B1(f,H)},routes:void 0,init:function(){return Z(X()),K},destroy:function(){if(typeof window<"u")window.removeEventListener("popstate",M);if(typeof document<"u")document.removeEventListener("click",D);return Q.clear()}},Object.defineProperty(K,"current",{get:function(){return{path:Y.value,params:$.value,route:A.value,layouts:F.value,query:_.value,hash:W.value}}}),Object.defineProperty(K,"path",{get:function(){return Y.value}}),Object.defineProperty(K,"params",{get:function(){return $.value}}),Object.defineProperty(K,"route",{get:function(){return A.value}}),Object.defineProperty(K,"layouts",{get:function(){return F.value}}),Object.defineProperty(K,"query",{get:function(){return _.value}}),Object.defineProperty(K,"hash",{get:function(){return W.value}}),Object.defineProperty(K,"navigating",{get:function(){return u.value},set:function(O){return u.value=O}}),Object.defineProperty(K,"routes",{get:function(){return P.routes}}),K};h2=function(f,U){if(f.length!==U.length)return!1;for(let W=0;W<f.length;W++)if(f[W]!==U[W])return!1;return!0};n1=function(f){for(let U in f){let W=f[U];if(typeof W==="function"&&(W.prototype?.mount||W.prototype?._create))return W}return typeof f.default==="function"?f.default:void 0};i1=function(f){let U;U={};for(let W in f){let F=f[W];if(typeof F==="function"&&(F.prototype?.mount||F.prototype?._create))U[W]=F}return U};C2=function(f){let U;return U=f.split("/").pop().replace(/\.rip$/,""),U.replace(/(^|[-_])([a-z])/g,function(W,F,u){return u.toUpperCase()})};V2=function(f,U="components"){let W,F,u;F={};for(let $ of f.listAll(U)){if(!$.endsWith(".rip"))continue;if(W=$.split("/").pop(),W.startsWith("_"))continue;if(u=C2($),F[u])console.warn(`[Rip] Component name collision: ${u} (${F[u]} vs ${$})`);F[u]=$}return F};N1=async function(f,U,W=null,F=null,u=null){let $,Y,_,A,R,w,z,Q,D,J,M,X;if(W&&F){if(Y=W.getCompiled(F),Y)return Y}if(z=U(f),u){J={};for(let Z in u.map){let H=u.map[Z];if(H!==F&&z.includes(`new ${Z}(`)){if(!u.classes[Z]){if(A=W.read(H),A){_=await N1(A,U,W,H,u),R=i1(_);for(let K in R){let G=R[K];u.classes[K]=G}}}if(u.classes[Z])J[Z]=!0}}if(D=Object.keys(J),D.length>0)M=`const {${D.join(", ")}} = globalThis['${u.key}'];
|
|
734
734
|
`,z=M+z}if(w=F?`// ${F}
|
|
735
|
-
`:"",$=new Blob([w+z],{type:"application/javascript"}),X=URL.createObjectURL($),Q=await import(X),u){R=i1(Q);for(let Z in R){let H=R[Z];u.classes[Z]=H}}if(W&&F)W.setCompiled(F,Q);return Q};var a2=function(f={}){let U,W,F,u,$,Y,_,A,R,w,z,Q,D,J,M,X,Z,H,K,G,P,q;if({router:G,app:U,components:$,resolver:K,compile:F,target:P,onError:Z}=f,Y=typeof P==="string"?document.querySelector(P):P||document.getElementById("app"),!Y)Y=document.createElement("div"),Y.id="app",document.body.appendChild(Y);return Y.style.opacity="0",_=null,w=null,R=null,A=[],D=[],M=Y,Q=0,z=null,u=new Map,J=f.cacheSize||10,W=function(){let O,E;if(_&&w){if(_.beforeUnmount)_.beforeUnmount();if(u.set(w,_),u.size>J){if(E=u.keys().next().value,O=u.get(E),O.unmounted)O.unmounted();u.delete(E)}return _=null,w=null}},q=function(){W();for(let O=D.length-1;O>=0;O--){let E=D[O];if(E.beforeUnmount)E.beforeUnmount();if(E.unmounted)E.unmounted();E._target?.remove()}return D=[],M=Y},$.watch(function(O,E){let I;if(u.has(E)){if(I=u.get(E),I.unmounted)I.unmounted();return u.delete(E)}}),X=async function(O){let E,I,N,T,B,C,L,h,S,j,b,i,c,g,m,s,F1,S1,k,t1,h1,_1;if({route:k,params:s,layouts:h,query:S1}=O,!k)return;if(k.file===w&&JSON.stringify(s)===JSON.stringify(R))return;return R=s,T=++Q,G.navigating=!0,(async()=>{try{if(h1=$.read(k.file),!h1){if(Z)Z({status:404,message:`File not found: ${k.file}`});G.navigating=!1;return}if(i=await N1(h1,F,$,k.file,K),T!==Q){G.navigating=!1;return}if(E=n1(i),!E){if(Z)Z({status:500,message:`No component found in ${k.file}`});G.navigating=!1;return}if(b=!h2(h,A),g=_?._target,b)q();else W();if(c=b?Y:M,b&&h.length>0){Y.innerHTML="",c=Y;for(let p of h){if(j=$.read(p),!j)continue;if(S=await N1(j,F,$,p,K),T!==Q){G.navigating=!1;return}if(I=n1(S),!I)continue;if(C=new I({app:U,params:s,router:G}),C.beforeMount)C.beforeMount();_1=document.createElement("div"),_1.setAttribute("data-layout",p),c.appendChild(_1),C.mount(_1),D.push(C),t1=_1.querySelector("#content")||_1,c=t1}A=[...h],M=c}else if(b)Y.innerHTML="",A=[],M=Y;if(N=u.get(k.file),N)u.delete(k.file),c.appendChild(N._target),_=N,w=k.file;else{if(m=document.createElement("div"),m.setAttribute("data-component",k.file),c.appendChild(m),L=new E({app:U,params:s,query:S1,router:G}),L.beforeMount)L.beforeMount();if(L.mount(m),_=L,w=k.file,L.load)await L.load(s,S1)}return g?.remove(),G.navigating=!1,Y.style.opacity==="0"?document.fonts.ready.then(function(){return requestAnimationFrame(function(){return Y.style.transition="opacity 150ms ease-in",Y.style.opacity="1"})}):void 0}catch(p){if(G.navigating=!1,Y.style.opacity="1",console.error(`Renderer: error mounting ${k.file}:`,p),Z)Z({status:500,message:p.message,error:p});B=!1;for(let V1=D.length-1;V1>=0;V1--){let e1=D[V1];if(e1.onError)try{e1.onError(p),B=!0;break}catch(s2){console.error("Renderer: error boundary failed:",s2)}}return(()=>{if(!B)return F1=document.createElement("pre"),F1.style.cssText="color:red;padding:1em",F1.textContent=p.stack||p.message,Y.innerHTML="",Y.appendChild(F1)})()}})()},H={start:function(){return z=W1(function(){let O;return O=G.current,O.route?X(O):void 0}),G.init(),H},stop:function(){if(q(),z)z(),z=null;return Y.innerHTML=""},remount:function(){let O;return O=G.current,O.route?X(O):void 0},cache:u},H};j2=function(f){let U,W,F;return F=1000,W=30000,U=function(){let u;return u=new EventSource(f),u.addEventListener("connected",function(){return F=1000,console.log("[Rip] Hot reload connected")}),u.addEventListener("reload",function(){return console.log("[Rip] Reloading..."),location.reload()}),u.addEventListener("css",function(){for(let $ of document.querySelectorAll('link[rel="stylesheet"]'))f=new URL($.href),f.searchParams.set("_t",Date.now()),$.href=f.toString()}),u.onerror=function(){return u.close(),setTimeout(U,F),F=Math.min(F*2,W)}},U()};var u7=async function(f="",U={}){let W,F,u,$,Y,_,A,R,w,z,Q,D,J,M,X,Z,H;if(globalThis.__ripLaunched=!0,typeof f==="object")U=f,f="";if(f=f.replace(/\/+$/,""),H=U.target||"#app",_=U.compile||null,D=U.persist||!1,z=U.hash||!1,!_)_=globalThis?.compileToJS||null;if(typeof document<"u"&&!document.querySelector(H))A=document.createElement("div"),A.id=H.replace(/^#/,""),document.body.prepend(A);if(U.bundle)u=U.bundle;else if(U.bundleUrl){if(Q={},w=`__rip_etag_${U.bundleUrl}`,$=sessionStorage.getItem(w),$)Q["If-None-Match"]=$;if(M=await fetch(U.bundleUrl,{headers:Q}),M.status===304)u=JSON.parse(sessionStorage.getItem(`${w}_data`));else if(M.ok){if(u=await M.json(),R=M.headers.get("etag"),R)sessionStorage.setItem(w,R),sessionStorage.setItem(`${w}_data`,JSON.stringify(u))}else throw Error(`launch: ${U.bundleUrl} (${M.status})`)}else throw Error("launch: no bundle or bundleUrl provided");if(W=n2({components:{},routes:{},data:{}}),globalThis.__ripApp=W,u.data)W.data=u.data;if(u.routes)W.routes=u.routes;if(D&&typeof sessionStorage<"u")p2(W,{local:D==="local",key:`__rip_${f}`});if(F=r2(),u.components)F.load(u.components);if(Y=`__rip_${f.replace(/\//g,"_")||"app"}`,X={map:V2(F),classes:{},key:Y},typeof globalThis<"u")globalThis[Y]=X.classes;if(W.data.title&&typeof document<"u")document.title=W.data.title;if(Z=o2(F,{root:"components",base:f,hash:z,onError:function(K){return console.error(`[Rip] Error ${K.status}: ${K.message||K.path}`)}}),J=a2({router:Z,app:W,components:F,resolver:X,compile:_,target:H,onError:function(K){return console.error(`[Rip] ${K.message}`,K.error)}}),J.start(),u.data?.watch)j2(`${f}/watch`);if(typeof window<"u")window.app=W,window.__RIP__={app:W,components:F,router:Z,renderer:J,cache:J.cache,version:"0.3.0"};return{app:W,components:F,router:Z,renderer:J}};l=function(f,U){if(!U)return;return f.preventDefault(),f.stopPropagation(),U()};L2=function(f,U){if(f.
|
|
735
|
+
`:"",$=new Blob([w+z],{type:"application/javascript"}),X=URL.createObjectURL($),Q=await import(X),u){R=i1(Q);for(let Z in R){let H=R[Z];u.classes[Z]=H}}if(W&&F)W.setCompiled(F,Q);return Q};var a2=function(f={}){let U,W,F,u,$,Y,_,A,R,w,z,Q,D,J,M,X,Z,H,K,G,P,q;if({router:G,app:U,components:$,resolver:K,compile:F,target:P,onError:Z}=f,Y=typeof P==="string"?document.querySelector(P):P||document.getElementById("app"),!Y)Y=document.createElement("div"),Y.id="app",document.body.appendChild(Y);return Y.style.opacity="0",_=null,w=null,R=null,A=[],D=[],M=Y,Q=0,z=null,u=new Map,J=f.cacheSize||10,W=function(){let O,E;if(_&&w){if(_.beforeUnmount)_.beforeUnmount();if(u.set(w,_),u.size>J){if(E=u.keys().next().value,O=u.get(E),O.unmounted)O.unmounted();u.delete(E)}return _=null,w=null}},q=function(){W();for(let O=D.length-1;O>=0;O--){let E=D[O];if(E.beforeUnmount)E.beforeUnmount();if(E.unmounted)E.unmounted();E._target?.remove()}return D=[],M=Y},$.watch(function(O,E){let I;if(u.has(E)){if(I=u.get(E),I.unmounted)I.unmounted();return u.delete(E)}}),X=async function(O){let E,I,N,T,B,C,L,h,S,j,b,i,c,g,m,s,F1,S1,k,t1,h1,_1;if({route:k,params:s,layouts:h,query:S1}=O,!k)return;if(k.file===w&&JSON.stringify(s)===JSON.stringify(R))return;return R=s,T=++Q,G.navigating=!0,(async()=>{try{if(h1=$.read(k.file),!h1){if(Z)Z({status:404,message:`File not found: ${k.file}`});G.navigating=!1;return}if(i=await N1(h1,F,$,k.file,K),T!==Q){G.navigating=!1;return}if(E=n1(i),!E){if(Z)Z({status:500,message:`No component found in ${k.file}`});G.navigating=!1;return}if(b=!h2(h,A),g=_?._target,b)q();else W();if(c=b?Y:M,b&&h.length>0){Y.innerHTML="",c=Y;for(let p of h){if(j=$.read(p),!j)continue;if(S=await N1(j,F,$,p,K),T!==Q){G.navigating=!1;return}if(I=n1(S),!I)continue;if(C=new I({app:U,params:s,router:G}),C.beforeMount)C.beforeMount();_1=document.createElement("div"),_1.setAttribute("data-layout",p),c.appendChild(_1),C.mount(_1),D.push(C),t1=_1.querySelector("#content")||_1,c=t1}A=[...h],M=c}else if(b)Y.innerHTML="",A=[],M=Y;if(N=u.get(k.file),N)u.delete(k.file),c.appendChild(N._target),_=N,w=k.file;else{if(m=document.createElement("div"),m.setAttribute("data-component",k.file),c.appendChild(m),L=new E({app:U,params:s,query:S1,router:G}),L.beforeMount)L.beforeMount();if(L.mount(m),_=L,w=k.file,L.load)await L.load(s,S1)}return g?.remove(),G.navigating=!1,Y.style.opacity==="0"?document.fonts.ready.then(function(){return requestAnimationFrame(function(){return Y.style.transition="opacity 150ms ease-in",Y.style.opacity="1"})}):void 0}catch(p){if(G.navigating=!1,Y.style.opacity="1",console.error(`Renderer: error mounting ${k.file}:`,p),Z)Z({status:500,message:p.message,error:p});B=!1;for(let V1=D.length-1;V1>=0;V1--){let e1=D[V1];if(e1.onError)try{e1.onError(p),B=!0;break}catch(s2){console.error("Renderer: error boundary failed:",s2)}}return(()=>{if(!B)return F1=document.createElement("pre"),F1.style.cssText="color:red;padding:1em",F1.textContent=p.stack||p.message,Y.innerHTML="",Y.appendChild(F1)})()}})()},H={start:function(){return z=W1(function(){let O;return O=G.current,O.route?X(O):void 0}),G.init(),H},stop:function(){if(q(),z)z(),z=null;return Y.innerHTML=""},remount:function(){let O;return O=G.current,O.route?X(O):void 0},cache:u},H};j2=function(f){let U,W,F;return F=1000,W=30000,U=function(){let u;return u=new EventSource(f),u.addEventListener("connected",function(){return F=1000,console.log("[Rip] Hot reload connected")}),u.addEventListener("reload",function(){return console.log("[Rip] Reloading..."),location.reload()}),u.addEventListener("css",function(){for(let $ of document.querySelectorAll('link[rel="stylesheet"]'))f=new URL($.href),f.searchParams.set("_t",Date.now()),$.href=f.toString()}),u.onerror=function(){return u.close(),setTimeout(U,F),F=Math.min(F*2,W)}},U()};var u7=async function(f="",U={}){let W,F,u,$,Y,_,A,R,w,z,Q,D,J,M,X,Z,H;if(globalThis.__ripLaunched=!0,typeof f==="object")U=f,f="";if(f=f.replace(/\/+$/,""),H=U.target||"#app",_=U.compile||null,D=U.persist||!1,z=U.hash||!1,!_)_=globalThis?.compileToJS||null;if(typeof document<"u"&&!document.querySelector(H))A=document.createElement("div"),A.id=H.replace(/^#/,""),document.body.prepend(A);if(U.bundle)u=U.bundle;else if(U.bundleUrl){if(Q={},w=`__rip_etag_${U.bundleUrl}`,$=sessionStorage.getItem(w),$)Q["If-None-Match"]=$;if(M=await fetch(U.bundleUrl,{headers:Q}),M.status===304)u=JSON.parse(sessionStorage.getItem(`${w}_data`));else if(M.ok){if(u=await M.json(),R=M.headers.get("etag"),R)sessionStorage.setItem(w,R),sessionStorage.setItem(`${w}_data`,JSON.stringify(u))}else throw Error(`launch: ${U.bundleUrl} (${M.status})`)}else throw Error("launch: no bundle or bundleUrl provided");if(W=n2({components:{},routes:{},data:{}}),globalThis.__ripApp=W,u.data)W.data=u.data;if(u.routes)W.routes=u.routes;if(D&&typeof sessionStorage<"u")p2(W,{local:D==="local",key:`__rip_${f}`});if(F=r2(),u.components)F.load(u.components);if(Y=`__rip_${f.replace(/\//g,"_")||"app"}`,X={map:V2(F),classes:{},key:Y},typeof globalThis<"u")globalThis[Y]=X.classes;if(W.data.title&&typeof document<"u")document.title=W.data.title;if(Z=o2(F,{root:"components",base:f,hash:z,onError:function(K){return console.error(`[Rip] Error ${K.status}: ${K.message||K.path}`)}}),J=a2({router:Z,app:W,components:F,resolver:X,compile:_,target:H,onError:function(K){return console.error(`[Rip] ${K.message}`,K.error)}}),J.start(),u.data?.watch)j2(`${f}/watch`);if(typeof window<"u")window.app=W,window.__RIP__={app:W,components:F,router:Z,renderer:J,cache:J.cache,version:"0.3.0"};return{app:W,components:F,router:Z,renderer:J}};l=function(f,U){if(!U)return;return f.preventDefault(),f.stopPropagation(),U()};L2=function(f,U){if(f.isComposing)return;return(()=>{switch(f.key){case"ArrowDown":return l(f,U.next);case"ArrowUp":return l(f,U.prev);case"Home":case"PageUp":return l(f,U.first);case"End":case"PageDown":return l(f,U.last);case"Enter":case" ":return l(f,U.select);case"Escape":return l(f,U.dismiss);case"Tab":return U.tab?.();default:return f.key.length===1?U.char?.(f.key):void 0}})()};T2=function(f,U,W,F=[]){let u,$,Y;if(!f)return;return u=function(_){return typeof _==="function"?_():_},$=(_)=>![u(U),...F.map(u)].some(function(A){return A?.contains(_.target)})?W():void 0,Y=(_)=>!u(U)?.contains(_.target)?W():void 0,document.addEventListener("mousedown",$),window.addEventListener("scroll",Y,!0),function(){return document.removeEventListener("mousedown",$),window.removeEventListener("scroll",Y,!0)}};S2=function(f,U,W="vertical"){let F,u;if(f.isComposing)return;return u=W!=="horizontal",F=W!=="vertical",(()=>{switch(f.key){case"ArrowDown":return u?l(f,U.next):void 0;case"ArrowUp":return u?l(f,U.prev):void 0;case"ArrowRight":return F?l(f,U.next):void 0;case"ArrowLeft":return F?l(f,U.prev):void 0;case"Home":case"PageUp":return l(f,U.first);case"End":case"PageDown":return l(f,U.last);case"Enter":case" ":return l(f,U.select);case"Escape":return l(f,U.dismiss)}})()};globalThis.__aria??={listNav:L2,rovingNav:S2,popupDismiss:T2};globalThis.ARIA??=globalThis.__aria;U1.modules["ui.rip"]=T1;for(let[f,U]of Object.entries(T1))if(typeof U==="function")globalThis[f]=U;})();
|
package/docs/dist/rip.min.js.br
CHANGED
|
Binary file
|
package/package.json
CHANGED
package/src/ui.rip
CHANGED
|
@@ -1025,7 +1025,7 @@ export launch = (appBase = '', opts = {}) ->
|
|
|
1025
1025
|
# ARIA.popupDismiss(open, popup, close, els) — close on outside click or scroll
|
|
1026
1026
|
#
|
|
1027
1027
|
# Both nav handlers:
|
|
1028
|
-
# - Guard against IME composition events (e.
|
|
1028
|
+
# - Guard against IME composition events (e.isComposing, CJK input)
|
|
1029
1029
|
# - Call e.preventDefault() + e.stopPropagation() for handled keys
|
|
1030
1030
|
# - Only invoke a handler if it is provided (all keys are optional)
|
|
1031
1031
|
# - Alias PageUp/PageDown to first/last (fn+Up/Down on macOS)
|
|
@@ -1040,7 +1040,7 @@ _ariaNAV = (e, fn) ->
|
|
|
1040
1040
|
fn()
|
|
1041
1041
|
|
|
1042
1042
|
_ariaListNav = (e, h) ->
|
|
1043
|
-
return if e.
|
|
1043
|
+
return if e.isComposing # IME guard: ignore events during CJK composition
|
|
1044
1044
|
switch e.key
|
|
1045
1045
|
when 'ArrowDown' then _ariaNAV e, h.next
|
|
1046
1046
|
when 'ArrowUp' then _ariaNAV e, h.prev
|
|
@@ -1063,7 +1063,7 @@ _ariaPopupDismiss = (open, popup, close, els = []) ->
|
|
|
1063
1063
|
window.removeEventListener 'scroll', onScroll, true
|
|
1064
1064
|
|
|
1065
1065
|
_ariaRovingNav = (e, h, orientation = 'vertical') ->
|
|
1066
|
-
return if e.
|
|
1066
|
+
return if e.isComposing # IME guard
|
|
1067
1067
|
vert = orientation isnt 'horizontal'
|
|
1068
1068
|
horz = orientation isnt 'vertical'
|
|
1069
1069
|
switch e.key
|