graview 0.1.63 → 0.1.65
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/dist/preview/chunk.2P34ML3O.js +111 -0
- package/dist/preview/{chunk.A2R53GWF.js → chunk.2PK335JQ.js} +1 -1
- package/dist/preview/{chunk.NIAM7OTV.js → chunk.2QQ37RCZ.js} +1 -1
- package/dist/preview/{chunk.FGDGTES4.js → chunk.2TZSLREX.js} +2 -2
- package/dist/preview/chunk.2UW5CRHF.js +1 -0
- package/dist/preview/{chunk.H7AH3IW4.js → chunk.2YMO7ZVX.js} +1 -1
- package/dist/preview/chunk.33ULA3CG.js +1 -0
- package/dist/preview/{chunk.HMMK7LCL.js → chunk.35E75QJ7.js} +1 -1
- package/dist/preview/chunk.3CJLAJXP.js +25 -0
- package/dist/preview/chunk.3IJSB5ET.js +1 -0
- package/dist/preview/{chunk.OM2NIQWA.js → chunk.3IZEZPJB.js} +1 -1
- package/dist/preview/chunk.3KO35VN4.js +1 -0
- package/dist/preview/{chunk.Q2EGESEZ.js → chunk.3KUYB5ZT.js} +1 -1
- package/dist/preview/chunk.3RFAUIGT.js +1 -0
- package/dist/preview/{chunk.Q4GJIJAU.js → chunk.3WP66LB5.js} +1 -1
- package/dist/preview/{chunk.2RASWDMQ.js → chunk.44ZHHPPJ.js} +2 -2
- package/dist/preview/chunk.4GJ7F4SP.js +35 -0
- package/dist/preview/{chunk.4MEQUUG4.js → chunk.4IJTPV5X.js} +1 -1
- package/dist/preview/{chunk.DWK3GXRR.js → chunk.4JFBLVXJ.js} +1 -1
- package/dist/preview/{chunk.XUXZW7DU.js → chunk.4O3C2LJF.js} +1 -1
- package/dist/preview/chunk.4PCVQEVI.js +1 -0
- package/dist/preview/{chunk.WBS7ND2C.js → chunk.5FQSYMAE.js} +1 -1
- package/dist/preview/chunk.5M34BJIQ.js +1 -0
- package/dist/preview/chunk.5NCLZ4NZ.js +1 -0
- package/dist/preview/{chunk.36OE6RKG.js → chunk.5THLLSS4.js} +1 -1
- package/dist/preview/chunk.5YNLFOBJ.js +5 -0
- package/dist/preview/{chunk.DZSZUX34.js → chunk.64FCAUAJ.js} +1 -1
- package/dist/preview/chunk.6RZHKQP3.js +1 -0
- package/dist/preview/chunk.6YDC6IDA.js +1 -0
- package/dist/preview/{chunk.BN7C5ZYX.js → chunk.74B6KQF4.js} +1 -1
- package/dist/preview/chunk.77XQEDT5.js +1 -0
- package/dist/preview/chunk.7E4CSXBT.js +1 -0
- package/dist/preview/chunk.7HPQI5SY.js +1 -0
- package/dist/preview/{chunk.Y4ZM75WL.js → chunk.7IGD2K4M.js} +1 -1
- package/dist/preview/{chunk.2F4AZZQR.js → chunk.7Q43N5JS.js} +1 -1
- package/dist/preview/{chunk.KB5BCW23.js → chunk.7VQ3C7F4.js} +1 -1
- package/dist/preview/{chunk.MT5DXJKN.js → chunk.A4VA3DU5.js} +1 -1
- package/dist/preview/{chunk.6Z2GHQQH.js → chunk.AB4RZSYW.js} +31 -23
- package/dist/preview/chunk.ABSY3UZF.js +1 -0
- package/dist/preview/chunk.ARHAD5IS.js +1 -0
- package/dist/preview/chunk.BOC2EOGB.js +9 -0
- package/dist/preview/chunk.BR6TINGU.js +1 -0
- package/dist/preview/{chunk.B5PJCYBU.js → chunk.BU5PVRX7.js} +1 -1
- package/dist/preview/{chunk.PDMX3GTL.js → chunk.BUQKRXI6.js} +1 -1
- package/dist/preview/{chunk.RUFYORIJ.js → chunk.C437FVD7.js} +1 -1
- package/dist/preview/chunk.CD6YWH6T.js +3 -0
- package/dist/preview/chunk.CDEAAWPS.js +1 -0
- package/dist/preview/{chunk.XUO67YMT.js → chunk.CGQ6KXVK.js} +1 -1
- package/dist/preview/{chunk.WYPCLZL7.js → chunk.CPYBJNHP.js} +1 -1
- package/dist/preview/{chunk.FXCQJPN4.js → chunk.CS72MISN.js} +2 -2
- package/dist/preview/chunk.CXJJB3MK.js +1 -0
- package/dist/preview/{chunk.CAXILB7K.js → chunk.CXLQPE4J.js} +1 -1
- package/dist/preview/{chunk.REUMBCSV.js → chunk.DA4RSHLW.js} +1 -1
- package/dist/preview/{chunk.YXAKHXYB.js → chunk.DICM56FT.js} +1 -1
- package/dist/preview/{chunk.ZSGDVNVN.js → chunk.DJMSXXP4.js} +1 -1
- package/dist/preview/{chunk.ZY7US4Y7.js → chunk.DJPNVXBQ.js} +1 -1
- package/dist/preview/chunk.DJVHKBEI.js +1 -0
- package/dist/preview/chunk.E5WJSTOV.js +1 -0
- package/dist/preview/{chunk.KPQLM4TM.js → chunk.F2TWV4TX.js} +1 -1
- package/dist/preview/chunk.F5VEHAP2.js +1 -0
- package/dist/preview/{chunk.GHN62OMG.js → chunk.FDWRH5P2.js} +1 -1
- package/dist/preview/chunk.FEGSYSA7.js +1 -0
- package/dist/preview/{chunk.T3JIZNE7.js → chunk.FHHVW2WB.js} +1 -1
- package/dist/preview/chunk.FOSY7MZF.js +2 -0
- package/dist/preview/{chunk.ZZAI57VI.js → chunk.FXG5AJF6.js} +1 -1
- package/dist/preview/{chunk.K7TK3KRB.js → chunk.G3Q5IMM3.js} +1 -1
- package/dist/preview/{chunk.KXFNRJ46.js → chunk.GPCKOYSF.js} +1 -1
- package/dist/preview/{chunk.YOUB3J3Y.js → chunk.HJS3LTSR.js} +1 -1
- package/dist/preview/chunk.HJUXC5GM.js +1 -0
- package/dist/preview/chunk.HNMSYQRA.js +1 -0
- package/dist/preview/chunk.HWLRKOI3.js +1 -0
- package/dist/preview/{chunk.BQM3YAMR.js → chunk.IFBGYFS4.js} +1 -1
- package/dist/preview/chunk.IHUMKFYH.js +10 -0
- package/dist/preview/{chunk.AW26EETU.js → chunk.IJ3YDBWI.js} +1 -1
- package/dist/preview/{chunk.SMHP2CQH.js → chunk.IMKD6QQG.js} +1 -1
- package/dist/preview/{chunk.75GENXGP.js → chunk.INTJD5WG.js} +1 -1
- package/dist/preview/chunk.IQ54QTA5.js +1 -0
- package/dist/preview/{chunk.MIE3ODQ2.js → chunk.IQC3GOXO.js} +1 -1
- package/dist/preview/{chunk.2PJ6STKA.js → chunk.IR4OW67N.js} +1 -1
- package/dist/preview/{chunk.72YXFJKC.js → chunk.ISN2QTVL.js} +1 -1
- package/dist/preview/{chunk.Q4MI53KK.js → chunk.J24YPQ5I.js} +5 -5
- package/dist/preview/chunk.J545NAMY.js +1 -0
- package/dist/preview/{chunk.57YDGGJK.js → chunk.J6KNEI5R.js} +1 -1
- package/dist/preview/chunk.K3JARAWU.js +1 -0
- package/dist/preview/{chunk.MY5HJW2Z.js → chunk.KHAVEYT7.js} +1 -1
- package/dist/preview/{chunk.STDJ6XG5.js → chunk.KIQXTQDU.js} +1 -1
- package/dist/preview/chunk.KROR65KD.js +2 -0
- package/dist/preview/chunk.KV7GZBJ6.js +50 -0
- package/dist/preview/{chunk.CGK2PY76.js → chunk.L6FGKJ5H.js} +1 -1
- package/dist/preview/chunk.L7NJLZWV.js +1 -0
- package/dist/preview/{chunk.HOFATBGD.js → chunk.LGRQDILY.js} +1 -1
- package/dist/preview/{chunk.IEDCFSN5.js → chunk.LKK5YF2H.js} +1 -1
- package/dist/preview/chunk.LON75VHP.js +1 -0
- package/dist/preview/chunk.LQWVJQ5X.js +18 -0
- package/dist/preview/{chunk.PDS4HT46.js → chunk.LVD3V77M.js} +1 -1
- package/dist/preview/{chunk.JIEDJEHK.js → chunk.LY5CY7GE.js} +1 -1
- package/dist/preview/{chunk.OXWOUE3W.js → chunk.M5W2RHC6.js} +1 -1
- package/dist/preview/chunk.M6BTLH24.js +1 -0
- package/dist/preview/chunk.MAGKI4PD.js +1 -0
- package/dist/preview/chunk.MD36ZSM5.js +74 -0
- package/dist/preview/chunk.MFZJVHWP.js +1 -0
- package/dist/preview/{chunk.VCTAFSZ5.js → chunk.MH46V556.js} +1 -1
- package/dist/preview/chunk.MHTA4HYB.js +19 -0
- package/dist/preview/{chunk.QSPLKCTX.js → chunk.N2FNHRI2.js} +1 -1
- package/dist/preview/chunk.N2YM247R.js +1 -0
- package/dist/preview/chunk.N35SJWAM.js +1 -0
- package/dist/preview/chunk.NBVPWLRY.js +3 -0
- package/dist/preview/{chunk.NEPQBMFT.js → chunk.NKYYDFIX.js} +1 -1
- package/dist/preview/chunk.NSO6RUKW.js +1 -0
- package/dist/preview/{chunk.OIMGD7FR.js → chunk.O2W5JTWA.js} +1 -1
- package/dist/preview/chunk.OHMHPTEW.js +1 -0
- package/dist/preview/{chunk.XBYJCGPU.js → chunk.P6TZGR3A.js} +1 -1
- package/dist/preview/{chunk.KQPKYWDM.js → chunk.PTQPS2FJ.js} +1 -1
- package/dist/preview/chunk.PV2I4UPH.js +1 -0
- package/dist/preview/chunk.QFQSSZN7.js +1 -0
- package/dist/preview/{chunk.OTSBF367.js → chunk.QO5RXOCS.js} +2 -2
- package/dist/preview/{chunk.VZDHRY3U.js → chunk.QSDBF7VL.js} +1 -1
- package/dist/preview/{chunk.V4HVFLFQ.js → chunk.R2TSTDS3.js} +1 -1
- package/dist/preview/{chunk.34DRUCH2.js → chunk.RFVOXX3P.js} +1 -1
- package/dist/preview/chunk.RSS6OHXG.js +1 -0
- package/dist/preview/{chunk.XYGNS637.js → chunk.S2DOVJRL.js} +1 -1
- package/dist/preview/chunk.S3EEY7T3.js +1 -0
- package/dist/preview/chunk.SBCAYTMT.js +1 -0
- package/dist/preview/chunk.SMTGRCMG.js +3 -0
- package/dist/preview/{chunk.NTC2H5ZX.js → chunk.SOMRYDDH.js} +1 -1
- package/dist/preview/{chunk.4EXC26LI.js → chunk.SPCAMQJE.js} +1 -1
- package/dist/preview/{chunk.SGPXYDSG.js → chunk.T3KNLP7C.js} +1 -1
- package/dist/preview/chunk.TBY5IR7C.js +1 -0
- package/dist/preview/chunk.TCZIZ2PU.js +1 -0
- package/dist/preview/{chunk.PWAP2GJS.js → chunk.TUCSUZNO.js} +1 -1
- package/dist/preview/{chunk.DIFIHNR3.js → chunk.TY74U3EI.js} +1 -1
- package/dist/preview/chunk.U74PTRHJ.js +1 -0
- package/dist/preview/chunk.UAORKZLO.js +1 -0
- package/dist/preview/chunk.UDVTPI2W.js +1 -0
- package/dist/preview/{chunk.OMRQTLI5.js → chunk.UETLP5KC.js} +1 -1
- package/dist/preview/chunk.UHI3X2YD.js +1 -0
- package/dist/preview/chunk.UL62ELNR.js +1 -0
- package/dist/preview/chunk.VRYSZYAD.js +1 -0
- package/dist/preview/{chunk.CI4RZL4Z.js → chunk.VUZFLDOX.js} +1 -1
- package/dist/preview/chunk.X2NGFOAF.js +1 -0
- package/dist/preview/chunk.XE762VL2.js +2 -0
- package/dist/preview/{chunk.QS32TO4N.js → chunk.XSWR5LI4.js} +1 -1
- package/dist/preview/{chunk.JVDPRQ7J.js → chunk.XTTESA7X.js} +1 -1
- package/dist/preview/chunk.Y2RZ5B4U.js +1 -0
- package/dist/preview/chunk.Y7QDQ3WF.js +1 -0
- package/dist/preview/{chunk.O3YIWIVQ.js → chunk.YKMBXMZE.js} +1 -1
- package/dist/preview/chunk.Z34KASY7.js +1 -0
- package/dist/preview/{chunk.XCWZFLIB.js → chunk.ZDUTEM3Z.js} +1 -1
- package/dist/preview/{chunk.EJ4MSVX2.js → chunk.ZJFXM3LE.js} +1 -1
- package/dist/preview/chunk.ZMGKWMID.js +1 -0
- package/dist/preview/{chunk.AHPYNDVA.js → chunk.ZMWAZACO.js} +1 -1
- package/dist/preview/chunk.ZT5YQSSP.js +21 -0
- package/dist/preview/{chunk.B46UZHGW.js → chunk.ZTN7BS5O.js} +1 -1
- package/dist/preview/{chunk.HRNNRA2I.js → chunk.ZYNC73DJ.js} +1 -1
- package/dist/preview/chunk.ZZM75ZTN.js +4 -0
- package/dist/preview/index.html +56 -56
- package/dist/preview/page.js +2 -2
- package/dist/preview/splash.js +3 -3
- package/package.json +6 -6
- package/dist/preview/chunk.24HNOLUS.js +0 -3
- package/dist/preview/chunk.25CQCCLN.js +0 -1
- package/dist/preview/chunk.26H33GJC.js +0 -50
- package/dist/preview/chunk.2KIWGQXC.js +0 -2
- package/dist/preview/chunk.33XNYHI6.js +0 -1
- package/dist/preview/chunk.37FLKAVZ.js +0 -1
- package/dist/preview/chunk.3JCHJLH6.js +0 -1
- package/dist/preview/chunk.3OQ6S6H4.js +0 -1
- package/dist/preview/chunk.47QEWSSE.js +0 -1
- package/dist/preview/chunk.4DAKQXDG.js +0 -1
- package/dist/preview/chunk.4TH3CGAZ.js +0 -1
- package/dist/preview/chunk.5GC4VAHU.js +0 -1
- package/dist/preview/chunk.5QXQ7PBI.js +0 -35
- package/dist/preview/chunk.6CSHRMJC.js +0 -1
- package/dist/preview/chunk.6HKWAHPT.js +0 -1
- package/dist/preview/chunk.6XHPBJ5F.js +0 -1
- package/dist/preview/chunk.6YK5E7ZQ.js +0 -4
- package/dist/preview/chunk.735AFUP5.js +0 -1
- package/dist/preview/chunk.ATDIDPKZ.js +0 -1
- package/dist/preview/chunk.AWUO3M5D.js +0 -1
- package/dist/preview/chunk.BF3EZCG3.js +0 -1
- package/dist/preview/chunk.BKQICGFW.js +0 -1
- package/dist/preview/chunk.C65EHQ7V.js +0 -1
- package/dist/preview/chunk.CCQMDZHO.js +0 -1
- package/dist/preview/chunk.CYTTZOYL.js +0 -25
- package/dist/preview/chunk.D5LOTCBU.js +0 -3
- package/dist/preview/chunk.DBFJVVWF.js +0 -1
- package/dist/preview/chunk.DDFRFSVN.js +0 -1
- package/dist/preview/chunk.E3XJMO7Q.js +0 -1
- package/dist/preview/chunk.EJ2WE764.js +0 -18
- package/dist/preview/chunk.ERPILTRY.js +0 -1
- package/dist/preview/chunk.FFXBDOKA.js +0 -1
- package/dist/preview/chunk.FNVGNISQ.js +0 -3
- package/dist/preview/chunk.G2JAYG2Z.js +0 -1
- package/dist/preview/chunk.H5SN46VK.js +0 -1
- package/dist/preview/chunk.HSMJHCR3.js +0 -1
- package/dist/preview/chunk.JNIDS66Z.js +0 -1
- package/dist/preview/chunk.JO3BBRSR.js +0 -1
- package/dist/preview/chunk.KL5H7KEV.js +0 -1
- package/dist/preview/chunk.KZUMXT5J.js +0 -74
- package/dist/preview/chunk.MAHNJO6U.js +0 -1
- package/dist/preview/chunk.MBB5A6BT.js +0 -1
- package/dist/preview/chunk.MENLUNM5.js +0 -1
- package/dist/preview/chunk.N3T2O6EW.js +0 -9
- package/dist/preview/chunk.NWWJNNEK.js +0 -2
- package/dist/preview/chunk.O67JXUVG.js +0 -1
- package/dist/preview/chunk.QAMW5QDT.js +0 -19
- package/dist/preview/chunk.R4HDKNT3.js +0 -88
- package/dist/preview/chunk.SJUXFPTI.js +0 -1
- package/dist/preview/chunk.SME4HD5I.js +0 -1
- package/dist/preview/chunk.SSAETRHR.js +0 -5
- package/dist/preview/chunk.T535ZLRM.js +0 -1
- package/dist/preview/chunk.UAVK54Z6.js +0 -1
- package/dist/preview/chunk.V6IL7CIZ.js +0 -1
- package/dist/preview/chunk.WNS5LEO5.js +0 -1
- package/dist/preview/chunk.WUVXIUA7.js +0 -1
- package/dist/preview/chunk.XCEZCOX4.js +0 -1
- package/dist/preview/chunk.XIW4SZHD.js +0 -1
- package/dist/preview/chunk.YZBJUAS6.js +0 -1
- package/dist/preview/chunk.Z2ZQJ3DD.js +0 -1
- package/dist/preview/chunk.ZELWW7UA.js +0 -21
- package/dist/preview/chunk.ZLTHWCKL.js +0 -2
- package/dist/preview/chunk.ZP7JEVVU.js +0 -1
- package/dist/preview/chunk.ZRH5X3MR.js +0 -1
- package/dist/preview/chunk.ZVG4FXJK.js +0 -1
- /package/dist/preview/{chunk.GZHZLJBF.js → chunk.MIE4TJRW.js} +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{a as wt,b as St,c as Tt,d as ue,e as Mt,f as Et,g as Wt}from"./chunk.35E75QJ7.js";import{a as Te,e as ht}from"./chunk.BBLIT7S7.js";import{a as le,b as We,c as ce}from"./chunk.NJSK3UO2.js";import{a as ft,f as mt,g as gt,i as yt}from"./chunk.5FQSYMAE.js";import"./chunk.SOMRYDDH.js";import{j as vt}from"./chunk.3L37FY3G.js";import{e as xt}from"./chunk.CGQ6KXVK.js";import{c as kt,f as bt,i as Me,j as Ee}from"./chunk.3WP66LB5.js";import{b as ae,e as de}from"./chunk.A4VA3DU5.js";import"./chunk.B3WVCSW5.js";import"./chunk.XTTESA7X.js";import{a as B}from"./chunk.SDO3U72B.js";import"./chunk.J24YPQ5I.js";import"./chunk.FQLNBIQ5.js";import"./chunk.AJZBJBMO.js";var Rt=["good","warn","bad","neutral","accent"],At=["value","max","aria-label","placeholder","disabled"],Ot=["click","change"],Re=["_blank","_self"],Kt=["section","div","span","strong","p","hr","a","button","input","progress"],pe={type:{oneOf:Rt}},Ae={"gv-card":{host:"section",properties:{tone:pe},events:{},children:"any"},"gv-group":{host:"div",properties:{direction:{type:{oneOf:["row","column"]}}},events:{},children:"any"},"gv-title":{host:"strong",properties:{},events:{},children:"text"},"gv-text":{host:"p",properties:{tone:pe},events:{},children:"text"},"gv-badge":{host:"span",properties:{tone:pe},events:{},children:"text"},"gv-field":{host:"div",properties:{label:{type:"string"}},events:{},children:"text"},"gv-progress":{host:"progress",properties:{value:{type:"number",as:"value"},max:{type:"number",as:"max"},label:{type:"string",as:"aria-label"}},events:{},children:"none"},"gv-divider":{host:"hr",properties:{},events:{},children:"none"},"gv-link":{host:"a",properties:{href:{type:"url"}},events:{},children:"text"},"gv-button":{host:"button",properties:{tone:pe,disabled:{type:"boolean",as:"disabled"}},events:{press:{from:"click"}},children:"text"},"gv-input":{host:"input",properties:{label:{type:"string",as:"aria-label"},value:{type:"string",as:"value"},placeholder:{type:"string",as:"placeholder"}},events:{change:{from:"change",detail:"value"}},children:"none"}},Oe=1e4;var sr=0,ir=1,ar=2,dr=3,Gt=1,lr=2,ur=3,cr=1,pr=3,fr=8,Ke="~",Ge=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),Z=t=>typeof t=="object"&&t!==null&&!Array.isArray(t);function Lt(t,e){return e.type==="url"?"href":e.as??`data-gv-${t.toLowerCase()}`}var mr=2e3;function Pt(t,e){if(e==null)return{ok:!0,value:null};let s=t.type;if(s==="boolean")return typeof e=="boolean"?{ok:!0,value:e}:{ok:!1,reason:"value"};if(s==="number")return typeof e=="number"&&Number.isFinite(e)?{ok:!0,value:String(e)}:{ok:!1,reason:"value"};if(typeof e!="string"||e.length>mr)return{ok:!1,reason:s==="url"?"url":"value"};if(typeof s=="object")return s.oneOf.includes(e)?{ok:!0,value:e}:{ok:!1,reason:"value"};if(s==="url"){let f;try{f=new URL(e)}catch{return{ok:!1,reason:"url"}}return f.protocol!=="https:"||f.hostname===""||!/^https:\/\//i.test(e)?{ok:!1,reason:"url"}:{ok:!0,value:f.href}}return{ok:!0,value:e}}function gr(t){let e=t.host==="a";return Kt.includes(t.host)&&(t.target===void 0||e&&Re.includes(t.target))&&Object.values(t.properties).every(s=>s.type!=="url"||e)&&Object.values(t.properties).every(s=>s.as===void 0||s.type!=="url"&&At.includes(s.as))&&Object.values(t.events).every(s=>Ot.includes(s.from))}function Le(t,e){let s=e.kit??Ae,f=e.maxNodes??2e3,o=t.ownerDocument,m=[],p=new Map,E={dom:t,name:Ke,component:{host:"div",properties:{},events:{},children:"any"},children:[],listeners:new Map,id:Ke};p.set(Ke,E);let T=e.links?new Set(e.links.origins.flatMap(n=>{try{let c=new URL(n);return c.protocol==="https:"&&c.hostname!==""?[c.origin]:[]}catch{return[]}})):void 0,G=0,x=0,I=!1,g=n=>{m.push(n),m.length>200&&m.shift()},h=()=>({dom:o.createComment(""),children:[],refused:!0,listeners:new Map}),P=(n,c,y)=>{let w=n.component;if(!Ge(w.properties,c))return g({reason:"property",element:n.name,name:c});let d=w.properties[c],a=Pt(d,y),v=a.ok&&d.type==="url"&&T&&typeof a.value=="string"&&!T.has(new URL(a.value).origin)?{ok:!1,reason:"url"}:a,R=n.dom,W=Lt(c,d);if(!v.ok)return R.removeAttribute(W),g({reason:v.reason,element:n.name,name:c});let A=v.value;A===null||A===!1?R.removeAttribute(W):R.setAttribute(W,A===!0?"":A),W==="value"&&"value"in R&&(R.value=typeof A=="string"?A:""),W==="disabled"&&"disabled"in R&&(R.disabled=A!==null&&A!==!1)},S=(n,c,y)=>{let w=n.component;if(!Ge(w.events,c))return g({reason:"event",element:n.name,name:c});let d=n.listeners.get(c);if(d&&(d(),n.listeners.delete(c),x-=1),y==null)return;if(!Z(y)||typeof y.listener!="number")return g({reason:"value",element:n.name,name:c});let a=y.listener,v=w.events[c],R=n.dom,W=()=>e.onEvent(a,v.detail==="value"?String(R.value??""):void 0);R.addEventListener(v.from,W),n.listeners.set(c,()=>R.removeEventListener(v.from,W)),x+=1},M=n=>{if(!n.refused){G-=1,n.id!==void 0&&p.delete(n.id);for(let c of n.listeners.values())c();x-=n.listeners.size,n.listeners.clear();for(let c of n.children)M(c)}},b=(n,c)=>{if(!Z(n)||typeof n.id!="string"||p.has(n.id))return g({reason:"record"}),h();if(G>=f)return g({reason:"budget"}),I||(I=!0,e.onOverBudget?.()),h();let y=n.id,w=c.component.children;if(n.type===fr)return h();if(n.type===pr){if(w==="none")return g({reason:"child",element:c.name}),h();let W={dom:o.createTextNode(String(n.data??"").slice(0,Oe)),children:[],text:!0,listeners:new Map,id:y};return p.set(y,W),G+=1,W}if(n.type!==cr)return g({reason:"record"}),h();let d=String(n.element);if(!Ge(s,d)||!gr(s[d]))return g({reason:"element",element:d}),h();if(w!=="any")return g({reason:"child",element:d}),h();let a=s[d],v=o.createElement(a.host);v.setAttribute("data-gv",d.replace(/^gv-/,"")),v.className=`graview-guest-${d.replace(/^gv-/,"")}`,a.host==="a"&&(v.setAttribute("rel","noopener noreferrer"),v.setAttribute("target",a.target??"_blank"),v.setAttribute("referrerpolicy","no-referrer")),a.host==="button"&&v.setAttribute("type","button");let R={dom:v,name:d,component:a,children:[],listeners:new Map,id:y};if(p.set(y,R),G+=1,Z(n.properties))for(let[W,A]of Object.entries(n.properties))P(R,W,A);if(Z(n.attributes))for(let W of Object.keys(n.attributes))g({reason:"attribute",element:d,name:W});if(Z(n.eventListeners))for(let[W,A]of Object.entries(n.eventListeners))S(R,W,A);if(Array.isArray(n.children))for(let W of n.children){let A=b(W,R);R.children.push(A),v.appendChild(A.dom)}return R},K=n=>{if(!Array.isArray(n))return g({reason:"record"});let[c,y]=n,w=typeof y=="string"?p.get(y):void 0;if(!w)return g({reason:"record"});switch(c){case sr:{if(w.text)return g({reason:"record"});let d=Number(n[3]),a=Number.isInteger(d)&&d>=0&&d<=w.children.length?d:w.children.length,v=b(n[2],w);w.dom.insertBefore(v.dom,w.children[a]?.dom??null),w.children.splice(a,0,v);return}case ir:{let d=Number(n[2]),a=w.children[d];if(!a)return g({reason:"record"});w.children.splice(d,1),a.dom.parentNode?.removeChild(a.dom),M(a);return}case ar:if(!w.text)return g({reason:"record"});w.dom.data=String(n[2]??"").slice(0,Oe);return;case dr:{if(w===E||w.text)return g({reason:"record"});let d=String(n[2]),a=n[4]??Gt;return a===Gt?P(w,d,n[3]):a===ur?S(w,d,n[3]):g(a===lr?{reason:"attribute",element:w.name,name:d}:{reason:"record"})}default:return g({reason:"record"})}};return{apply(n,c){if(!Array.isArray(n))return g({reason:"record"}),!0;for(let y=0;y<n.length;y+=1){if(c&&y%32===0&&c())return!1;K(n[y])}return!0},get refused(){return m},get size(){return G},get listening(){return x},dispose(){for(let n of E.children)M(n);E.children.length=0,t.replaceChildren()}}}var Pe=`
|
|
2
|
+
.graview-guest { display: flex; flex-direction: column; gap: 8px; min-width: 0; color: var(--graview-ink, inherit); font: inherit; }
|
|
3
|
+
.graview-guest-card { display: flex; flex-direction: column; gap: 6px; padding: 12px; border: 1px solid var(--graview-edge, #d0d0d0); border-radius: 10px; background: var(--graview-panel, transparent); }
|
|
4
|
+
.graview-guest-group { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
|
|
5
|
+
.graview-guest-group[data-gv-direction="row"] { flex-direction: row; flex-wrap: wrap; align-items: center; }
|
|
6
|
+
.graview-guest-title { font-weight: 600; font-size: 1rem; overflow-wrap: anywhere; }
|
|
7
|
+
.graview-guest-text { margin: 0; font-size: 0.875rem; line-height: 1.45; overflow-wrap: anywhere; }
|
|
8
|
+
.graview-guest-badge { align-self: flex-start; padding: 1px 8px; border: 1px solid currentColor; border-radius: 999px; font-size: 0.8125rem; font-weight: 600; }
|
|
9
|
+
.graview-guest-field { font-size: 0.875rem; overflow-wrap: anywhere; }
|
|
10
|
+
.graview-guest-field[data-gv-label]::before { content: attr(data-gv-label) " "; color: var(--graview-ink-muted, inherit); }
|
|
11
|
+
.graview-guest-progress { width: 100%; }
|
|
12
|
+
.graview-guest-divider { width: 100%; margin: 2px 0; border: 0; border-top: 1px solid var(--graview-edge, #d0d0d0); }
|
|
13
|
+
.graview-guest-link { color: var(--graview-accent, inherit); text-decoration: underline; }
|
|
14
|
+
.graview-guest-button { align-self: flex-start; font: inherit; padding: 4px 12px; border-radius: 8px; border: 1px solid var(--graview-edge, #d0d0d0); background: var(--graview-panel, transparent); color: inherit; cursor: pointer; }
|
|
15
|
+
.graview-guest-input { font: inherit; padding: 4px 8px; border-radius: 6px; border: 1px solid var(--graview-edge, #d0d0d0); }
|
|
16
|
+
.graview-guest [data-gv-tone="good"] { color: var(--graview-good, inherit); }
|
|
17
|
+
.graview-guest [data-gv-tone="bad"] { color: var(--graview-bad, inherit); }
|
|
18
|
+
.graview-guest [data-gv-tone="warn"] { color: var(--graview-warn, inherit); }
|
|
19
|
+
.graview-guest [data-gv-tone="accent"] { color: var(--graview-accent, inherit); }
|
|
20
|
+
.graview-guest [data-gv-tone="neutral"] { color: var(--graview-ink-muted, inherit); }
|
|
21
|
+
`;var _t=new WeakSet;function yr(t,e){if(t.startsWith("blob:"))return"blob:";try{return new URL(t,e.location.href).origin}catch{return t}}function Vt(t,e,s){let f=yr(e,t),o=`this page's Content-Security-Policy${s?` (${s})`:""} does not allow a worker from ${f}: it needs worker-src ${f}`;return _t.has(t)||(_t.add(t),t.console?.warn?.(`Graview: worker views cannot start on this page, because ${o}. A host that will not allow ${f} serves each view's whole script from its own origin and passes worker: { url } (the @graview/guest README, "What the host page allows").`)),o}function hr(t,e){return t===""?!0:e.startsWith("blob:")?t.startsWith("blob"):e.startsWith(t)||t.startsWith(e)}function fe(t,e){let s="script"in e.source?t.URL.createObjectURL(new t.Blob([e.source.script],{type:"text/javascript"})):void 0,f="script"in e.source?s:e.source.url,o,m,p=!1,E=!1,T=0,G=0,x="",I=0,g=0,h=t.performance,P=h.now(),S,M=d=>{let a=d,v=String(a.effectiveDirective||a.violatedDirective||"").split(" ")[0];/^(worker-src|script-src|script-src-elem|child-src|default-src)$/.test(v)&&hr(String(a.blockedURI??""),f)&&(S=v)},b=t.document;b?.addEventListener("securitypolicyviolation",M);let K=()=>b?.removeEventListener("securitypolicyviolation",M),n=()=>{E||(E=!0,m?.close(),o?.terminate(),o=void 0,t.clearTimeout(T),t.clearInterval(G),K(),s&&t.URL.revokeObjectURL(s))},c=(d,a)=>{E||(n(),e.onStop(d,a))},y=()=>{t.clearTimeout(T),K(),x=wt();let d=new t.MessageChannel;m=d.port1;let a=Math.max(1,e.silentMs),v=Math.max(10,Math.min(1e3,Math.floor(a/4)));P=h.now();let R=P;G=t.setInterval(()=>{let A=h.now();if(A-R>v*2&&(P+=A-R-v),R=A,A-P>=a)return c("silent");I+=1,d.port1.postMessage({type:"heartbeat",beat:I})},v);let W={graview:"host-hello",protocol:1,nonce:x,view:e.name};o.postMessage(W,[d.port2]),e.onReady(x,d.port1,h.now()-w)},w=h.now();try{o=new t.Worker(f,{name:e.name})}catch(d){o=void 0;let a=d,v=a?.name==="SecurityError"?Vt(t,f,S):`the worker could not be made: ${String(a?.message??d)}`;queueMicrotask(()=>c("start",v))}return o&&(T=t.setTimeout(()=>c("start",`it never said it was ready in ${e.readyMs.toLocaleString("en-US")} ms`),e.readyMs),o.onerror=d=>{let a=typeof d.message=="string"&&d.message!==""?d.message:void 0;if(p)return void e.onError?.(a??"an error");t.clearTimeout(T),t.setTimeout(()=>!p&&c("start",S?Vt(t,f,S):a?`it failed before it said ready: ${a}`:"it failed before it said ready, and the engine gave no reason (a page policy that refuses it, or a script that does not load)"),0)},o.onmessage=d=>{if(!e.limiter.message()||p||!ht(d.data)||d.data.protocol!==1){e.onDropped();return}p=!0,y()}),{get worker(){return o},answer(d){let a=d;return typeof a!="object"||a===null||a.type!=="heartbeat"||a.nonce!==x?!1:(typeof a.beat=="number"&&a.beat>g&&a.beat<=I&&(g=a.beat,P=h.now()),!0)},stop:n}}function me(t,e){let s=e(),f=0;return{draw(o){let m=e();m-s>=1e3&&(s=m,f=0);let p=t(),E=o(()=>f+(e()-m)>=p);return f+=e()-m,E&&f<p}}}var wr=Symbol.for("graview.view.clicked");function It(t,e){t[wr]=Object.freeze([...e])}function Nt(t){return!Number.isFinite(t)||t<=60?1:Math.min(4,Math.round(t/60*10)/10)}function Ht(t,e){return{...t,pushMs:Math.round(t.pushMs*e),drawMs:Math.round(t.drawMs*e)}}var Ct=new WeakMap;function Dt(t,e){let s=Ct.get(t);return s!==void 0?s:(Ct.set(t,e),e)}var vr=B(()=>(__graviewPreload(import.meta.url,["./chunk.3L37FY3G.js","./chunk.AJZBJBMO.js"]),import("./chunk.DVSTLVIH.js"))),kr=B(()=>(__graviewPreload(import.meta.url,["./chunk.CGQ6KXVK.js","./chunk.3WP66LB5.js","./chunk.A4VA3DU5.js","./chunk.B3WVCSW5.js","./chunk.J24YPQ5I.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.CXLQPE4J.js"))),br=B(()=>(__graviewPreload(import.meta.url,["./chunk.AJZBJBMO.js"]),import("./chunk.K2HDEL7I.js"))),xr=B(()=>(__graviewPreload(import.meta.url,["./chunk.WVUJXDXZ.js","./chunk.S2DOVJRL.js","./chunk.64FCAUAJ.js","./chunk.NBVPWLRY.js","./chunk.S3EEY7T3.js","./chunk.SPCAMQJE.js","./chunk.TUCSUZNO.js","./chunk.ZMWAZACO.js","./chunk.CD6YWH6T.js","./chunk.J24YPQ5I.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.6YDC6IDA.js"))),Sr=B(()=>(__graviewPreload(import.meta.url,["./chunk.3WP66LB5.js","./chunk.A4VA3DU5.js","./chunk.J24YPQ5I.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.T3KNLP7C.js"))),Tr=B(()=>(__graviewPreload(import.meta.url,["./chunk.BBLIT7S7.js","./chunk.AJZBJBMO.js"]),import("./chunk.RRCPEHM4.js"))),Mr=B(()=>(__graviewPreload(import.meta.url,["./chunk.WVUJXDXZ.js","./chunk.S2DOVJRL.js","./chunk.64FCAUAJ.js","./chunk.NBVPWLRY.js","./chunk.S3EEY7T3.js","./chunk.SPCAMQJE.js","./chunk.TUCSUZNO.js","./chunk.ZMWAZACO.js","./chunk.CD6YWH6T.js","./chunk.J24YPQ5I.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.HWLRKOI3.js")));function Er(t,e,s){switch(t){case"manifest":return s??"Its manifest names something this app does not have.";case"source":return s??`Its code is longer than the ${e.maxSourceBytes.toLocaleString("en-US")} bytes a view may be.`;case"start":return`It could not start${s?`: ${s}.`:"."}`;case"error":return`It failed before it drew anything${s?`: ${s}`:"."}`;case"silent":return`It stopped answering for ${e.silentMs.toLocaleString("en-US")} ms.`;case"nodes":return`It drew more than the ${e.maxNodes.toLocaleString("en-US")} things a view may draw.`;case"flood":return`It sent more than ${e.messages} messages in ${e.messageWindowMs.toLocaleString("en-US")} ms.`;case"slow":return`It took longer than ${e.pushMs.toLocaleString("en-US")} ms to draw what it was shown.`}}function Wr(t,e){let s=t.ownerDocument,f=s.defaultView,{manifest:o}=e,m=s.createElement("div");m.className="graview-worker-view",m.setAttribute("role","region"),m.setAttribute("aria-label",o.title??o.name),m.setAttribute("data-worker-view",o.name),m.style.cssText="display:block;position:relative;contain:layout paint style;isolation:isolate;overflow:clip;min-width:0",t.appendChild(m);let p=m.attachShadow({mode:"open"}),E=e.author?s.createElement("p"):void 0;E&&(E.className="graview-worker-view-author",E.setAttribute("data-worker-view-author",o.name),E.style.cssText="margin:4px 0 0;font-size:0.75rem;color:var(--graview-ink-muted, inherit)",E.textContent=e.author,t.appendChild(E));let T={applied:0,refused:0,dropped:0},G=ae(e.limits),x={maxSourceBytes:e.limits?.maxSourceBytes??256e3,maxNodes:e.limits?.maxNodes??5e3,messages:e.limits?.messages??120,messageWindowMs:e.limits?.messageWindowMs??1e3,pushMs:e.limits?.pushMs??1e3,silentMs:e.limits?.silentMs??5e3,drawMs:e.limits?.drawMs??100},I={pushMs:x.pushMs,drawMs:x.drawMs},g,h,P,S,M,b,K=!1,n={applied:0,refused:0,dropped:0},c=[],y=()=>{if(!S)return;let r=S.stats;T.applied+=r.applied-n.applied,T.refused+=r.refused-n.refused,T.dropped+=r.dropped-n.dropped,n={...r}},w=()=>{},d,a,v=()=>{let r=p.querySelector("[data-graview-view-root]"),i=f.ResizeObserver;a||!r||typeof i!="function"||(a=new i(k=>{let O=k[k.length-1]?.borderBoxSize?.[0],_=Math.ceil(O?O.blockSize:r.offsetHeight);_!==d&&(d=_,m.setAttribute("data-graview-content-height",String(_)),e.onContentHeight?.(_))}),a.observe(r))},R=()=>{a&&(a.disconnect(),a=void 0,d=void 0,m.removeAttribute("data-graview-content-height"),e.onContentHeight?.(void 0))},W=0,A=()=>{},_e=()=>{A(),A=()=>{},y(),S?.dispose(),S=void 0,M?.stop(),w(),f.clearInterval(W)},N=(r,i)=>{if(K)return;K=!0,_e(),R(),b?.dispose();let k=Er(r,x,i);m.removeAttribute("data-worker-view-drawn"),m.setAttribute("data-worker-view-failed",r),e.fallback!==!1&&(e.fallback??Ut)(m,r,k),e.onFailure?.(r,k)},Ut=(r,i,k)=>{let O=h??(()=>{try{return Ee(e.store,e.principal,{manifest:o,...e.input?{input:e.input()}:{},...P?{computed:P}:{}})}catch{return}})(),_=s.createElement("div");_.setAttribute("data-graview-fallback",i),_.style.cssText="padding:12px;display:grid;gap:6px;color:var(--graview-ink, inherit);font-family:var(--graview-font-body, inherit)";let u=s.createElement("strong");u.textContent=o.title??o.name;let C=s.createElement("ul");C.style.cssText="margin:0;padding-left:1.2em";for(let D of[...O?.node?[O.node]:[],...O?.nodes??[]]){let se=s.createElement("li");se.textContent=D.label??D.id,C.appendChild(se)}let V=s.createElement("p");V.style.cssText="margin:0;font-size:0.8125rem;color:var(--graview-ink-muted, inherit)",V.textContent=`This view was stopped. ${k}`,_.append(u,C,V),p.replaceChildren(_)},Ve=bt(o,e.store);if(Ve.length>0)return queueMicrotask(()=>N("manifest",Ve.join(" "))),ke();let Ie=r=>{if(("source"in r?new TextEncoder().encode(r.source).length:"script"in r?new TextEncoder().encode(r.script).length:0)>x.maxSourceBytes)return["source"];let k="source"in r?le(r.source):[];return k.length>0?["source",k.join(" ")]:void 0},z=e.worker,Ce=typeof z=="function"?void 0:Ie(z);if(Ce)return queueMicrotask(()=>N(...Ce)),ke();let Ne=Wt(f,()=>je(),"blob"),ge=()=>Et(()=>e.theme?.()??ue(m),e.brand,Ne),He=()=>{let r=e.brand?.()?.views;b?.theme(r?.css),b?.motion(r?.motion??"none")},De="",ye=()=>{De=JSON.stringify(ge()),He(),S?.push()},je=()=>{S&&JSON.stringify(ge())!==De&&ye()},zt=Mt(s,je),F,qt=Me(e.store,o)?Mr().then(({computedOn:r})=>{P=r(e.store.schema)}):Promise.resolve(),U,Xt=o.pictures?br().then(({createGuestPictures:r})=>{K||(F=r(f,{as:"blob",view:`"${o.title??o.name}"`,pictures:o.pictures,...e.limits?{limits:e.limits}:{},...e.file?{file:e.file}:{},moved:()=>S?.push(),onLeft:i=>{$?.postMessage({type:"notice",text:i}),e.onProblem?.(i)}}))}):Promise.resolve();w=()=>{zt(),Ne.dispose(),F?.dispose(),J?.dispose(),U?.dispose(),oe?.dispose()};let $,ee=r=>$?.postMessage(r),$e=!1,Be=!1,te=()=>m.toggleAttribute("data-worker-view-drawn",!K&&Be&&b!==void 0&&c.length===0&&X.size===0&&!F?.waiting()&&!(U?.waiting??0)),q=f.performance,X=new Map,re=q.now(),Yt=()=>{if(W)return;let r=Math.max(10,Math.min(250,Math.floor(x.pushMs/4)));re=q.now(),W=f.setInterval(()=>{let i=q.now(),k=i-re>r*2?i-re-r:0;re=i;for(let[O,_]of X){let u=_+k;if(X.set(O,u),i-u>=x.pushMs)return N("slow")}},r)},Jt=me(()=>x.drawMs,()=>q.now()),Fe=()=>{},he=r=>{if(K)return;if(!b)return void c.push(r);let i=b;if(!Jt.draw(O=>r[0]==="render"?i.apply(r[1],O):(i.style(r[1]),!0)))return N("slow");r[0]==="render"&&Fe()},Ue=()=>new Set([...e.store.kindsKeptFrom(e.principal),...e.store.modules.disabledKinds]),ze=()=>mt(e.store.schema,Ue()),we=()=>gt(e.store.schema,e.places?.()??[],{kept:Ue(),...e.arrangement?{pages:e.arrangement()}:{}}),Y=yt({sees:r=>e.store.seenBy(e.principal).graph.has(r),places:we,lists:ze,schema:e.store.schema,...e.onNavigate?{onNavigate:e.onNavigate}:e.goTo?{onNavigate:r=>St(e.goTo(),r)}:{},...e.hrefOf?{hrefOf:e.hrefOf}:!e.onNavigate&&e.goTo?{hrefOf:r=>Tt(e.goTo(),r)}:{},onLost:r=>{$?.postMessage({type:"notice",text:r}),e.onProblem?.(r)}}),j=new Set,qe=new Set,J,Xe=!1,Ye=()=>{Xe||(Xe=!0,xr().then(({createGuestMedia:r})=>{K||(J=r(f,{view:`"${o.title??o.name}"`,pictures:o.pictures!==void 0,shown:()=>h,...e.file?{file:e.file}:{},onProblem:i=>{$?.postMessage({type:"notice",text:i}),e.onProblem?.(i)}}),J.refresh(p))},()=>e.onProblem?.(`The view "${o.title??o.name}" places a video or a full-screen viewer, and the host's player could not be loaded.`)))},Je=!1,Qe=!1,ne=new Map,Ze=()=>{Je||!o.accepts?.length||(Je=!0,Sr().then(({createGuestDrops:r})=>{K||(U=r(f,{shadow:p,manifest:o,store:e.store,principal:e.principal,files:()=>e.files?.(),shown:()=>j,hears:()=>Qe,idOf:i=>b?.renderer.idOf(i),send:ee,change:(i,k)=>{if(!S)return{ok:!1,reason:"refused",message:"The view has gone."};let O=S.change(i,k);return y(),O},handed:(i,k)=>ne.set(i.href,{file:i,drop:k}),onProblem:i=>{$?.postMessage({type:"notice",text:i}),e.onProblem?.(i)},onBusy:()=>te()}),U.refresh())},()=>e.onProblem?.(`The view "${o.title??o.name}" takes files, and the host's drop could not be loaded.`)))},oe,et=[],tt=!1,Qt=r=>{et=r,oe?.bind(r),!(tt||r.length===0)&&(tt=!0,Tr().then(({createGuestGestures:i,unheardWords:k})=>{if(!K){if(o.gestures!==!0){let O=k(o.title??o.name);return $?.postMessage({type:"notice",text:O}),e.onProblem?.(O)}oe=i(p,{root:()=>p.querySelector("[data-graview-view-root]")??void 0,idOf:O=>b?.renderer.idOf(O),send:ee}),oe.bind(et)}},()=>{}))},Zt=r=>{let i=e.store.seenBy(e.principal).graph;for(let k of j){let O=i.getNode(k);for(let _ of Object.values(O??{}))for(let u of kt(_))if(u.href===r)return u}},rt=r=>{if(r.localName==="graview-video")return Ye();r.hasAttribute("data-lightbox")&&(r.setAttribute("aria-haspopup","dialog"),Ye())};Promise.all([vr(),kr()]).then(([{createOpenDrawing:r,handedLinks:i,judgeLink:k,linkRefusedWords:O},{createPressReader:_,createSaver:u,fillPrefills:C,judgePress:V,markPresses:D,prefillOf:se,quietPictures:er}])=>{if(K)return;let Q=_(),it=(l,L)=>{let H=b?.renderer.idOf(l);H!==void 0&&ee({type:"dom-event",target:H,event:"acted",pressed:L})},be=u({reader:Q,save:(l,L)=>{if(!S)return;let H=S.pressed(V(e.store,o,j,l));y(),it(L,{as:l.as,...H})}}),at=()=>be.flush();f.addEventListener("pagehide",at),A=()=>{f.removeEventListener("pagehide",at),be.flush()};let tr=new WeakSet;Fe=()=>{Y.refresh(p),D(p),er(p),C(p,Q,tr,l=>se(e.store,e.principal,o,j,l)),J?.refresh(p),U?.refresh()};let dt,lt=new Set,rr=()=>(dt!==h&&([dt,lt]=[h,i(h)]),lt),ut=new Set;b=r(p,{origin:e.origin??f.location.origin,link:l=>k(l,{handed:rr(),...e.links?{origins:e.links.origins}:{}}),...e.asset?{asset:e.asset}:{},...e.images?{imageOrigins:e.images.origins}:{},...o.pictures?{picture:l=>F?.drawn(l)}:{},onRefused:l=>{if(l.reason==="url"&&l.element==="a"&&l.address!==void 0&&!ut.has(l.address)){ut.add(l.address);let H=O(l.address,e.links?.origins);return $?.postMessage({type:"notice",text:H}),e.onProblem?.(H)}if(l.reason!=="url"||l.element!=="img"||l.address===void 0||qe.has(l.address))return;qe.add(l.address);let L=vt(l.address,{...e.images?{origins:e.images.origins}:{},assets:e.asset!==void 0},l.length);$?.postMessage({type:"notice",text:L}),e.onProblem?.(L)},...e.limits?.maxNodes!==void 0?{maxNodes:e.limits.maxNodes}:{},onOverBudget:()=>N("nodes"),send:ee,onFieldSet:l=>Q.filled(l),onAttribute:(l,L)=>{(L==="data-record"||L==="data-place")&&Y.link(l),L==="data-lightbox"&&rt(l),L==="data-drop"&&Ze()},decorate:l=>{(l.hasAttribute("data-record")||l.hasAttribute("data-place"))&&Y.link(l),rt(l),l.hasAttribute("data-drop")&&Ze()},before:(l,L,H)=>{Q.heard(l,L),be.heard(l,L,H),Y.pressed(l,L,H);let xe=L.closest("a[href]");xe&&H.contains(xe)&&!xe.hasAttribute("data-graview-link")&&l.type==="click"&&l.stopPropagation();let ie=L.closest("[data-lightbox]"),ct=l.type==="keydown"?l.key:void 0;if(ie&&H.contains(ie)&&l.isTrusted&&(l.type==="click"||(ct==="Enter"||ct===" ")&&ie.localName!=="button")&&(l.preventDefault(),l.stopPropagation(),J?.open(ie)),U?.before(l,L,H))return!1;let Se=Q.press(l,L,H);if(!Se||!S)return;l.stopPropagation(),l.type==="keydown"&&l.preventDefault();let nr=S.pressed(V(e.store,o,j,Se));y();let pt={as:Se.as,...nr},or=L.closest("[data-act]");return queueMicrotask(()=>it(or,pt)),{pressed:pt}}}),He();for(let l of c.splice(0))he(l);v(),te()},()=>N("start","the view's drawing could not be loaded"));let ve=r=>M=fe(f,{source:r,name:o.name,limiter:G,readyMs:e.limits?.readyMs??5e3,silentMs:e.limits?.silentMs??5e3,onDropped:()=>T.dropped+=1,onStop:(i,k)=>N(i,k),onError:i=>{$e||N("error",i)},onReady:(i,k,O)=>{$=k,g=Nt(Dt(f,O)),Object.assign(x,Ht(I,g)),Yt();let _=de({store:e.store,principal:e.principal,view:o.name,nonce:i,send:u=>{u.type==="props"&&typeof u.push=="number"&&(X.set(u.push,q.now()),te()),k.postMessage(u)},props:()=>{let u=Ee(e.store,e.principal,{manifest:o,...e.input?{input:e.input()}:{},theme:ge(),places:ft(we()),...P?{computed:P}:{}}),C=j;return j=new Set([...u.node?[u.node.id]:[],...(u.nodes??[]).map(V=>V.id)]),h&&(C.size!==j.size||[...j].some(V=>!C.has(V)))&&b?.fade(),h=u,u},...F?{hand:F.hand}:{},judgeAct:(u,C)=>{let V=xt(e.store,o,u,C,{shown:j,file:D=>ne.get(D)?.file??Zt(D),dropped:D=>ne.get(D)?.drop});if(V.ok)for(let D of V.spent??[])ne.delete(D);return V},onHears:u=>{u.includes("drop")&&(Qe=!0)},onGestures:Qt,onClicks:u=>It(m,u),onRender:u=>{$e=!0,he(["render",u])},onPushed:(u,C)=>{if(X.delete(u),C>=x.pushMs)return N("slow");Be=!0,te()},onFlood:()=>N("flood"),onStyle:u=>he(["style",u]),places:()=>[...new Set([...we().map(u=>u.as),...ze().map(u=>u.slug)])],...e.limits?{limits:e.limits}:{},limiter:G});S=_,k.onmessage=({data:u})=>{if(!M?.answer(u)&&(_.receive(u),y(),!K&&u?.nonce===i&&u.type==="navigate")){let C={...u.where!==void 0?{where:u.where}:{},...u.section!==void 0?{section:u.section}:{}},V=typeof u.place=="string"?{place:u.place,...C}:typeof u.to=="string"&&{record:u.to,...C};V&&Y.go(V)}},ye()}}),nt=o.pictures!==void 0||Me(e.store,o),ot=()=>Promise.all([Xt.catch(()=>Promise.reject(new Error("the view's pictures could not be loaded"))),qt.catch(()=>Promise.reject(new Error("the view's computed values could not be worked out")))]),st=r=>{"source"in r?(nt?Promise.all([We(r.source),ot()]).then(([i])=>i):We(r.source)).then(i=>{K||ve({script:i})},i=>N("start",i instanceof Error&&i.message.startsWith("the view's")?i.message:"the view's runtime could not be loaded")):nt?ot().then(()=>{K||ve(r)},i=>N("start",i instanceof Error?i.message:"the view's pictures could not be loaded")):ve(r)};return typeof z=="function"?ce(z).then(r=>{if(K)return;let i=Ie(r);i?N(...i):st(r)},r=>N("source",`Its code did not arrive${r instanceof Error&&r.message?`: ${r.message}`:""}.`)):st(z),ke();function ke(){return{element:m,shadow:p,get worker(){return M?.worker},update:()=>{S&&ye()},get stats(){return y(),T},get refused(){return b?.refused??[]},get contentHeight(){return d},get css(){return b?.css??""},get pace(){return g},dispose(){K=!0,_e(),a?.disconnect(),b?.dispose(),m.remove(),E?.remove()}}}}var jt=8e3,$t=t=>({root:t?.shadow.querySelector("[data-graview-view-root]")??void 0,css:t?.css??"",height:t?.contentHeight}),Bt=t=>(t?.refused??[]).map(e=>`Refused ${e.reason==="css"?"a rule of the stylesheet":`${e.element?`<${e.element}>`:"something"}${e.name?` ${e.name}`:""}`} (${e.reason}).`);function Rr({element:t,definition:e,mounted:s,optionsFor:f,draw:o,mount:m}){return{name:e.manifest.name,title:e.manifest.title??e.manifest.name,source:async()=>{let p=typeof e.worker=="function"?await ce(e.worker):e.worker;return"source"in p?p.source:void 0},theme:async()=>{let p=s()?.element;return p?{...ue(p)}:{}},drawing:()=>$t(s()),refused:()=>Bt(s()),check:async p=>le(p),draft:p=>{let E=s()?.element,T=t.ownerDocument.createElement("div");T.setAttribute("data-graview-section-draft",e.manifest.name),T.style.minWidth="0",t.appendChild(T),E&&(E.style.display="none");let G=()=>{},x=new Promise(h=>G=h),I=setTimeout(()=>G({failed:`It did not draw in ${jt/1e3} seconds.`}),jt),g=m(T,{...f({source:p}),fallback:!1,onFailure:(h,P)=>G({failed:P??`It failed (${h}).`}),onContentHeight:h=>{h!==void 0&&h>0&&G({})}});return x.then(()=>clearTimeout(I)),{drawn:x,drawing:()=>$t(g),refused:()=>Bt(g),dispose:()=>{clearTimeout(I),g.dispose(),T.remove(),E&&(E.style.display="")}}},draw:o}}var Ft="graview-guest-kit";function cn(t,e){let s=t.ownerDocument,f=s.defaultView;if(!s.getElementById(Ft)){let M=s.createElement("style");M.id=Ft,M.textContent=Pe,s.head.appendChild(M)}let o=s.createElement("div");o.className="graview-guest",o.setAttribute("role","group"),o.setAttribute("aria-label",e.title??e.view),o.setAttribute("data-guest-view",e.view),t.appendChild(o);let m={applied:0,refused:0,dropped:0},p=ae(e.limits),E=me(()=>e.limits?.drawMs??100,()=>f.performance.now()),T,G,x,I=!1,g={applied:0,refused:0,dropped:0},h=()=>{if(!T)return;let M=T.stats;m.applied+=M.applied-g.applied,m.refused+=M.refused-g.refused,m.dropped+=M.dropped-g.dropped,g={...M}},P=()=>{h(),T?.dispose(),T=void 0,x?.stop()},S=(M,b)=>{I||(I=!0,P(),G?.dispose(),e.onFailure?.(M,b))};return x=fe(f,{source:e.worker,name:e.view,limiter:p,readyMs:e.limits?.readyMs??5e3,silentMs:e.limits?.silentMs??5e3,onDropped:()=>m.dropped+=1,onStop:(M,b)=>S(M,b),onReady:(M,b)=>{let K=Le(o,{...e.kit?{kit:e.kit}:{},...e.links?{links:e.links}:{},onEvent:(c,y)=>b.postMessage({type:"event",listener:c,...y!==void 0?{detail:y}:{}}),...e.limits?.maxNodes!==void 0?{maxNodes:e.limits.maxNodes}:{},onOverBudget:()=>S("budget")});G=K;let n=de({store:e.store,principal:e.principal,view:e.view,nonce:M,send:c=>b.postMessage(c),onRender:c=>{E.draw(y=>K.apply(c,y))||S("slow")},...e.input?{input:e.input}:{},...e.onNavigate?{onNavigate:e.onNavigate}:{},onSize:e.onSize??(c=>o.style.minHeight=`${c}px`),...e.limits?{limits:e.limits}:{},limiter:p});T=n,b.onmessage=c=>{x?.answer(c.data)||(n.receive(c.data),h())},n.push()}}),{element:o,get worker(){return x?.worker},update:()=>T?.push(),get stats(){return h(),m},get refused(){return G?.refused??[]},dispose(){I=!0,P(),G?.dispose(),o.remove()}}}export{Ae as GUEST_KIT,Pe as GUEST_KIT_CSS,Re as KIT_LINK_TARGETS,Rt as KIT_TONES,Le as createKitRenderer,Lt as hostAttribute,Pt as kitValue,cn as mountGuestWorker,Wr as mountWorkerView,Rr as viewPlaceHandle};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as M}from"./chunk.75GENXGP.js";import{ga as b}from"./chunk.Q4MI53KK.js";var w=["owners","status","schedule","budget","places","sources","stock","votes","private","history","publishing","roster","routines","comparison"],y={owners:"people who own things",status:"a status that moves",schedule:"dates it is due by, or a schedule",budget:"money against a budget",places:"places",sources:"sources behind claims",stock:"counts in stock",votes:"votes or picks",private:"private to its owner",history:"a history, a record book",publishing:"content to publish",roster:"a roster of people",routines:"repeating routines",comparison:"a comparison to pick one from"},J={owners:"a person kind (or the people the app has), an owner link, Give it to someone, a rule that every one has somebody on it, and Who has what",status:"a status with named steps (or the one the app has), an act for each step, and a board",schedule:"a due date, Set the date, the on-time rule, and a calendar",budget:"a cost beside the money the app keeps, a budget on the kind it is grouped under, Set the budget, and the over-budget rule",places:"a place kind, a link to one, and a map of where things are",sources:"a source kind, a link from each claim to its source, and the rule that a claim names one",stock:"what is on hand and the reorder level, Count the stock, and the running-low rule",votes:"a vote on each, Vote for it, and a tally",private:"a sight that keeps each person's own records to them",history:"the record book: an era or season each belongs to, and a timeline",publishing:"a published status, Publish it, and what the public sees",roster:"a person kind with the fields a roster keeps, and the list of who is here",routines:"how often each repeats and when it was last done, Mark it done, and the overdue rule",comparison:"a side-by-side of the candidates, one chosen, and Choose it"},U=new Set(["person","people","member","user","player","guest","candidate","participant","traveler","volunteer","interviewer","interviewee","contact","trade","staff","student","employee","teammate","crew","attendee","friend","customer","client","driver","speaker","host","teacher","parent","kid","child","coach","patient","tenant","resident","neighbor","applicant","recruit","contributor","assignee","worker","collaborator","runner"]),K=new Set(["place","venue","location","room","site","building","store","warehouse","city","country","region","address","hall","stadium","office","shelf"]),z=new Set(["source","reference","citation","evidence"]),W=new Set(["season","era","period","epoch","edition","generation","age","campaign","tournament"]),ae=/owner|owned|assign|^lead$|responsible|^by$|^by-|done-?by|interviewer|reviewer|maker|author|keeper|givenby|^for-?person$/i,oe=/due|deadline|until|needed|needby|target|expires|^ends?(on|at)?$|^by$/i,de=/^(date|day|when|at|start|starts|startsat|startson|startdate|scheduled|scheduledfor|scheduledon|happens|happenson|held|heldon|from|time|exchangedate|.*date|.*day)$/i,ce=/released|fixed|published|applied|checked|created|added|done|last|first|updated|seen|born|birth|founded|finished|completed|closed/i,X=/status|stage|state|phase|progress/i,H=/budget|limit|cap$|allowance/i,le=/budget|cost|price|quote|amount|salary|fee|spend|total|paid|owed/i,pe=/^(place|location|venue|address|where|city|town)$/i,B=/reorder|onhand|instock|^stock|quantity|^qty/i,he=/^votes?$|votecount|upvotes|^score$|^points$/i,fe=/^(votes?|votesfor|votedby|voters|picks?|chooses|choices|favorites|likes)$/i,ge=/often|frequency|cadence|^every$|repeat|interval/i,ue=/^last/i,Q=/^(published|live|public)$/i,ye=/count\(.*\bwhere\b.*\)\s*<=\s*1\b/,g=e=>e.toLowerCase(),k=(e,t)=>g(e.kinds[t]?.noun??b(t)),$=(e,t)=>g(e.kinds[t]?.plural??`${k(e,t)}s`),me=e=>e.charAt(0).toUpperCase()+e.slice(1),p=(e,t)=>me($(e,t)),ke=e=>/^[aeiou]/i.test(e)?"an":"a",x=(e,t="and")=>e.length<2?e.join(""):`${e.slice(0,-1).join(", ")} ${t} ${e[e.length-1]}`,N=e=>new Set((e??"").split(/[^A-Za-z0-9_-]+/).filter(Boolean)),O=e=>Object.entries(e.kinds),m=(e,t)=>Object.entries(e.acts??{}).filter(([,s])=>[s.on??[]].flat().includes(t)),_=e=>Array.isArray(e.lenses)?e.lenses:[],I=e=>typeof e.title=="string"?e.title:void 0,A=e=>e.bindings&&typeof e.bindings=="object"?e.bindings:{},R=(e,t)=>Array.isArray(t)&&t.length===1&&typeof t[0]=="string"&&e.kinds[t[0]]?t[0]:void 0;function V(e,t){let s=e.kinds[t];if(!s)return!1;let r=n=>g(n).replace(/ll/g,"l");return s.people===!0||U.has(r(t))||U.has(r(k(e,t)))}var Y=(e,t)=>K.has(g(t))||K.has(k(e,t)),we=(e,t)=>z.has(g(t))||z.has(k(e,t)),be=(e,t)=>W.has(g(t))||W.has(k(e,t)),$e=(e,t)=>(t.type==="number"||t.type==="integer")&&(t.format==="money"||le.test(e)),j=e=>e.type==="date"||e.type==="datetime";function P(e,t,s,r,n){return _(e).filter(d=>d.name===t&&A(d)[s]?.[r]===n).map(I).filter(d=>d!==void 0)}function D(e,t,s,r){return _(e).filter(n=>n.name==="coverage"&&A(n)[s]?.kind===t&&(r===void 0||A(n).link?.edge===r)).map(I).filter(n=>n!==void 0)}function f(e,t,s){let r=new Set(t);return Object.entries(e.rules??{}).filter(([,n])=>(s===void 0||n.over==="graph"||s.includes(n.over))&&[...N(`${n.when??""} ${n.require??""} ${n.says??""}`)].some(d=>r.has(d))).map(([n])=>n)}var E=class{kinds=new Set;fields=new Set;relations=new Set;rules=new Set;lenses=new Set;acts=new Set;said;add=(t,...s)=>{for(let r of s)this[t].add(r)};say=t=>{this.said??=t};any=()=>this.kinds.size+this.fields.size+this.relations.size+this.rules.size+this.lenses.size+this.acts.size>0;asTrait=t=>({trait:t,words:y[t],said:this.said??y[t],kinds:[...this.kinds],fields:[...this.fields],relations:[...this.relations],rules:[...this.rules],lenses:[...this.lenses],acts:[...this.acts]})};function Oe(e){let t;for(let[s,r]of O(e)){let n=Object.keys(r.fields).length+Object.keys(r.edges??{}).length;(!t||n>t.fields)&&(t={kind:s,fields:n})}return t?.kind}function u(e){let t=Oe(e);return O(e).sort(([s],[r])=>+(r===t)-+(s===t))}function Z(e,t){let s=e.kinds[t];if(!s)return[];let r=[];for(let[n,d]of Object.entries(s.fields)){if(d.type!=="enum"||!Array.isArray(d.options)||d.options.length<2)continue;let i=m(e,t).filter(([,a])=>typeof a.sets?.[n]=="string"&&d.options.includes(a.sets[n])).map(([a])=>a);((X.test(n)||s.lifecycle?.field===n)&&i.length>=1||i.length>=2)&&r.push({field:n,options:d.options,steps:i})}return r}var ee={owners(e,t){for(let[s,r]of u(e))for(let[n,d]of Object.entries(r.edges??{})){let i=R(e,d.to);d.cardinality!=="one"||!i||!V(e,i)||!ae.test(n)||(t.add("kinds",s,i),t.add("relations",`${s}.${n}`),t.add("rules",...f(e,[n],[s,i])),t.add("lenses",...D(e,s,"rows",n)),t.add("acts",...m(e,s).filter(([,o])=>o.connects===n||o.severs===n).map(([o])=>o)),t.say(`Each ${k(e,s)} has one of the ${$(e,i)} on it (${n}).`))}},status(e,t){for(let[s]of u(e))for(let{field:r,options:n,steps:d}of Z(e,s))t.add("kinds",s),t.add("fields",`${s}.${r}`),t.add("acts",...d),t.add("rules",...f(e,[r],[s])),t.add("lenses",...P(e,"columns",s,"column",r)),t.say(`${p(e,s)} move through ${x(n.map(g))}.`)},schedule(e,t){for(let[s,r]of u(e))for(let[n,d]of Object.entries(r.fields)){if(!j(d)||ce.test(n))continue;let i=P(e,"calendar",s,"start",n),o=oe.test(n);if(!o&&!de.test(n)&&i.length===0)continue;t.add("kinds",s),t.add("fields",`${s}.${n}`),t.add("lenses",...i),t.add("rules",...f(e,[n],[s])),t.add("acts",...m(e,s).filter(([,c])=>(c.writes??[]).includes(n)||c.sets?.[n]!==void 0).map(([c])=>c));let a=/date|day|when|time/i.test(n)?g(b(n)):`date (${n})`;t.say(o?`${p(e,s)} are due by a date (${n}).`:`${p(e,s)} have ${ke(a)} ${a}${i.length>0?", on a calendar":""}.`)}},budget(e,t){let s=O(e).flatMap(([o,a])=>Object.entries(a.fields).filter(([c,h])=>(h.type==="number"||h.type==="integer")&&H.test(c)).map(([c])=>({kind:o,name:c})));if(s.length===0)return;let r=u(e).flatMap(([o,a])=>Object.entries(a.fields).filter(([c,h])=>$e(c,h)&&!H.test(c)).map(([c])=>({kind:o,name:c})));if(r.length===0)return;let n=[...s,...r].map(o=>o.name);for(let o of[...s,...r])t.add("kinds",o.kind),t.add("fields",`${o.kind}.${o.name}`),t.add("acts",...m(e,o.kind).filter(([,a])=>(a.writes??[]).includes(o.name)||a.sets?.[o.name]!==void 0).map(([a])=>a));t.add("rules",...f(e,n).filter(o=>s.some(a=>N(e.rules[o].require??"").has(a.name))));let d=r[0],i=s.find(o=>o.kind===d.kind)??s[0];t.say(`${p(e,d.kind)}' ${g(b(d.name))} against ${i.kind===d.kind?"each one's":`each ${k(e,i.kind)}'s`} ${g(b(i.name))}.`)},places(e,t){for(let[s,r]of u(e)){Y(e,s)&&(t.add("kinds",s),t.add("lenses",...D(e,s,"columns")));for(let[n,d]of Object.entries(r.edges??{})){let i=R(e,d.to);!i||!Y(e,i)||(t.add("kinds",s,i),t.add("relations",`${s}.${n}`),t.add("rules",...f(e,[n],[s,i])),t.say(`${p(e,s)} are at ${$(e,i)} (${n}).`))}for(let[n,d]of Object.entries(r.fields))d.type!=="place"&&!(d.type==="string"&&pe.test(n))||(t.add("kinds",s),t.add("fields",`${s}.${n}`),t.say(`${p(e,s)} say where (${n}).`))}t.any()&&!t.said&&t.say(`${x([...t.kinds].map(s=>p(e,s)))} are places.`)},sources(e,t){for(let[s,r]of u(e)){for(let[n,d]of Object.entries(r.edges??{})){let i=R(e,d.to);!i||!we(e,i)&&!/^cite/i.test(n)||(t.add("kinds",s,i),t.add("relations",`${s}.${n}`),t.add("rules",...f(e,[n,i],[s,i])),t.add("acts",...m(e,s).filter(([,o])=>o.connects===n||o.severs===n).map(([o])=>o)),t.say(`${p(e,s)} cite ${$(e,i)} (${n}).`))}for(let[n,d]of Object.entries(r.fields))d.type!=="url"||!/^source/i.test(n)||(t.add("kinds",s),t.add("fields",`${s}.${n}`),t.add("rules",...f(e,[n],[s])),t.say(`${p(e,s)} link to their source (${n}).`))}},stock(e,t){for(let[s,r]of u(e)){let n=Object.entries(r.fields).filter(([a,c])=>(c.type==="number"||c.type==="integer")&&B.test(a)).map(([a])=>a),d=Object.keys(r.computed??{}).filter(a=>B.test(a)),i=n.some(a=>/reorder/i.test(a)),o=O(e).some(([,a])=>Object.entries(a.fields).some(([c,h])=>/^(change|delta|moved)$/i.test(c)&&(h.type==="number"||h.type==="integer")));!i&&!(d.length+n.length>0&&o)||(t.add("kinds",s),t.add("fields",...n.map(a=>`${s}.${a}`),...d.map(a=>`${s}.${a}`)),t.add("rules",...f(e,[...n,...d],[s])),t.add("acts",...m(e,s).filter(([,a])=>n.some(c=>(a.writes??[]).includes(c)||a.sets?.[c]!==void 0)).map(([a])=>a)),t.say(`${p(e,s)} have a count in stock${i?" and a reorder point":""}.`))}},votes(e,t){for(let[s,r]of u(e)){for(let[n,d]of Object.entries(r.fields)){if(d.type!=="number"&&d.type!=="integer"||!he.test(n))continue;let i=m(e,s).filter(([,o])=>o.sets?.[n]!==void 0).map(([o])=>o);i.length!==0&&(t.add("kinds",s),t.add("fields",`${s}.${n}`),t.add("acts",...i),t.add("rules",...f(e,[n],[s])),t.say(`${p(e,s)} collect votes (${n}).`))}for(let[n,d]of Object.entries(r.edges??{})){let i=R(e,d.to);!i||!fe.test(n)||(t.add("kinds",s,i),t.add("relations",`${s}.${n}`),t.add("rules",...f(e,[n],[s,i])),t.add("acts",...m(e,s).filter(([,o])=>o.connects===n||o.severs===n).map(([o])=>o)),t.say(`${p(e,s)} pick ${$(e,i)} (${n}).`))}}},private(e,t){let s=[];for(let r of e.policy?.sees??[])if(!(!r.own&&!r.via)){for(let n of r.kinds)if(e.kinds[n]&&(t.add("kinds",n),s.includes(n)||s.push(n),r.via))for(let[d,i]of O(e))i.edges?.[r.via]&&t.add("relations",`${d}.${r.via}`)}s.length>0&&t.say(`${x(s.map(r=>p(e,r)))} are seen only by whose they are.`)},history(e,t){for(let[s,r]of u(e))for(let[n,d]of Object.entries(r.edges??{})){let i=R(e,d.to);d.cardinality!=="one"||!i||!be(e,i)||!Object.entries(r.fields).some(([a,c])=>j(c)||/year|result|outcome|score|finish/i.test(a))||(t.add("kinds",s,i),t.add("relations",`${s}.${n}`),t.add("rules",...f(e,[n,i],[s,i])),t.add("lenses",...D(e,s,"rows",n),..._(e).filter(a=>a.name==="timeline"&&A(a)[s]!==void 0).map(I).filter(a=>a!==void 0)),t.say(`${p(e,s)} grouped into ${$(e,i)}, a record book.`))}},publishing(e,t){for(let[s,r]of u(e)){let n=Object.entries(r.fields).filter(([,i])=>i.type==="text").map(([i])=>i);if(n.length===0)continue;let d=Z(e,s).map(i=>i.field);for(let[i,o]of Object.entries(r.fields)){if(o.type!=="enum"||!(X.test(i)||d.includes(i))||!(o.options??[]).some(c=>Q.test(c)))continue;let a=(o.options??[]).find(c=>Q.test(c));t.add("kinds",s),t.add("fields",`${s}.${i}`,...n.map(c=>`${s}.${c}`)),t.add("acts",...m(e,s).filter(([,c])=>c.sets?.[i]===a).map(([c])=>c)),t.add("rules",...f(e,[i,...n],[s]).filter(c=>N(`${e.rules[c].when??""} ${e.rules[c].require??""}`).has(a)||n.some(h=>N(e.rules[c].require??"").has(h)))),t.say(`${p(e,s)} go from ${g(o.options[0])} to ${g(a)}, with their words.`)}}},roster(e,t){for(let[s,r]of u(e)){if(!V(e,s))continue;let n=Object.keys(r.fields);n.length<2||(t.add("kinds",s),t.add("fields",...n.map(d=>`${s}.${d}`)),t.add("lenses",...D(e,s,"columns"),...D(e,s,"rows")),t.say(`${p(e,s)}, with ${x(n.slice(1).map(d=>g(b(d))))}.`))}},routines(e,t){for(let[s,r]of u(e)){let n=Object.entries(r.fields).filter(([,a])=>j(a)&&a.repeats===!0).map(([a])=>a),d=Object.entries(r.fields).filter(([a,c])=>(c.type==="enum"||c.type==="string"||c.type==="integer"||c.type==="number")&&ge.test(a)).map(([a])=>a),i=Object.entries(r.fields).filter(([a,c])=>j(c)&&ue.test(a)).map(([a])=>a);if(n.length===0&&!(d.length>0&&i.length>0))continue;let o=[...n,...d,...i];t.add("kinds",s),t.add("fields",...o.map(a=>`${s}.${a}`)),t.add("rules",...f(e,o,[s])),t.add("lenses",...o.flatMap(a=>P(e,"calendar",s,"start",a))),t.add("acts",...m(e,s).filter(([,a])=>o.some(c=>(a.writes??[]).includes(c)||a.sets?.[c]!==void 0)).map(([a])=>a)),t.say(n.length>0?`${p(e,s)} repeat (${n[0]}).`:`${p(e,s)} come round again, each with when it was last done.`)}},comparison(e,t){for(let[s,r]of Object.entries(e.rules??{})){if(!r.require||!ye.test(r.require))continue;let n=r.over==="graph"?void 0:r.over,d=/in\('([^']+)'\)/.exec(r.require)?.[1],i=/all\('([^']+)'/.exec(r.require)?.[1],o=n?d?O(e).find(([,c])=>c.edges?.[d])?.[0]:void 0:i&&e.kinds[i]?i:void 0;if(!o&&!n)continue;let a=/==\s*'([^']+)'/.exec(r.require)?.[1];t.add("kinds",...o?[o]:[],...n?[n]:[]),t.add("rules",s),o&&a&&t.add("acts",...m(e,o).filter(([,c])=>Object.values(c.sets??{}).includes(a)).map(([c])=>c)),t.say(o&&n?`${p(e,o)} compared within each ${k(e,n)}, one ${a??"chosen"}.`:o?`${p(e,o)} compared, one ${a??"chosen"}.`:`One ${a??"chosen"} per ${k(e,n)}.`)}}};function G(e){let t=[];for(let s of w){let r=new E;ee[s](e,r),r.any()&&t.push(r.asTrait(s))}return t}function L(e,t){let s=new E;return ee[t](e,s),s.any()}var ve=e=>Math.round(Math.max(0,Math.min(1,e))*100)/100;function q(e){return e?.type==="noul"&&Number.isFinite(e.noul)?ve(e.noul):void 0}var Re={add:.7,drop:.7},qe="propose_change";function Fe(e){return M(e)}var De=e=>e.toLowerCase(),Te=e=>e.charAt(0).toUpperCase()+e.slice(1),v=(e,t="and")=>e.length<2?e.join(""):`${e.slice(0,-1).join(", ")} ${t} ${e[e.length-1]}`,Se=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[-_]+/g," ").toLowerCase(),T=(e,t)=>{let s=e.kinds[t];return De(s?.plural??(s?.noun?`${s.noun}s`:`${Se(t)}s`))},xe=e=>w.includes(e),se=(e,t)=>w.indexOf(e)-w.indexOf(t);function je(e){let t=G(e),s=new Set(t.map(r=>r.trait));return{name:e.name,keeps:Object.keys(e.kinds).map(r=>T(e,r)),"made of":t.map(r=>r.said),lacks:w.filter(r=>!s.has(r)).map(r=>y[r])}}function Ne(e,t){let s=new Set(G(t).map(n=>n.trait)),r={};for(let n of w)s.has(n)||(r[`need:${n}`]={type:"noul",instructions:`Does what they asked for need ${y[n]}, which ${t.name} has no part for yet?`,criteria:{true:`It needs ${y[n]}: they asked for it, or what they asked for cannot be kept without it.`,false:"Not asked for, and not needed to keep what they asked for."}});for(let n of Object.keys(t.kinds)){let d=T(t,n);r[`drop:kind:${n}`]={type:"noul",instructions:`Did they ask ${t.name} to stop keeping ${d}?`,criteria:{true:`They said the ${d} go: to drop them, remove them or stop tracking them.`,false:`${Te(d)} stay: nothing they said asks for them to go.`}}}for(let n of w)s.has(n)&&(r[`drop:trait:${n}`]={type:"noul",instructions:`Did they ask ${t.name} to stop having ${y[n]}?`,criteria:{true:`They said it goes: to drop or stop ${y[n]}.`,false:"It stays: nothing they said asks for it to go."}});return{state:{said:e,app:je(t)},questions:r}}var te=/^drop:(kind|trait):(.+)$/s;function Ae(e,t={}){let s={...Re,...t},r=Object.keys(e);if(r.length===0)throw new Error("readReshape was handed no answers.");let n=r.filter(o=>!/^need:/.test(o)&&!te.test(o));if(n.length>0)throw new Error(`readReshape does not know the question ${n.map(o=>`"${o}"`).join(", ")}: it reads need:<trait>, drop:kind:<name> and drop:trait:<name>.`);let d={},i={};for(let[o,a]of Object.entries(e)){let c=te.exec(o);if(c){i[`${c[1]}:${c[2]}`]=q(a)??0;continue}let h=o.slice(5);xe(h)&&(d[h]=q(a)??0)}return{add:Object.keys(d).filter(o=>d[o]>=s.add).sort(se),drop:Object.entries(i).filter(([,o])=>o>=s.drop).map(([o])=>o.slice(o.indexOf(":")+1)),needs:d,drops:i}}function Ee(e){let{said:t,document:s}=e,r=[...new Set(e.add)].sort(se),n=[...new Set(e.drop)],d=G(s),i=r.filter(l=>!L(s,l)).map(l=>({what:"trait",name:l,words:y[l],brings:J[l]})),o=r.filter(l=>L(s,l)),a=Object.keys(s.kinds).filter(l=>n.includes(l)),c=d.filter(l=>n.includes(l.trait)&&!Object.hasOwn(s.kinds,l.trait)),h=[...a.map(l=>({what:"kind",name:l,words:T(s,l)})),...c.map(l=>({what:"trait",name:l.trait,words:y[l.trait]}))],C=Object.keys(s.kinds).filter(l=>!a.includes(l)).map(l=>({what:"kind",name:l,words:T(s,l)})),ne=[...a.map(l=>`All ${T(s,l)} records go, with their links.`),...c.flatMap(l=>{let F=[...l.fields,...l.relations];return F.length>0?[`What carries ${y[l.trait]} goes: ${v(F)}, with its values and links.`]:[]})],S=[];i.length>0&&S.push(`adds ${v(i.map(l=>l.words))}`),h.length>0&&S.push(`drops ${v(h.map(l=>l.words))}`),C.length>0&&S.push(`keeps ${v(C.map(l=>l.words))}`);let re=i.length+h.length===0?`Nothing in ${s.name} changes for that.`:`This ${v(S)}.`,ie=o.length>0?` ${s.name} already has ${v(o.map(l=>y[l]))}.`:"";return{said:t,add:i.map(l=>l.name),drop:h.map(l=>l.name),card:{said:`${re}${ie}`,adds:i,keeps:C,drops:h,breaking:ne}}}async function Me(e){let{state:t,questions:s}=Ne(e.said,e.document),{answers:r,usage:n}=await e.decide(t,s),d=Ae(r,e.thresholds??{}),i=d.add.length+d.drop.length===0?null:Ee({said:e.said,document:e.document,add:d.add,drop:d.drop});return{proposal:i&&i.add.length+i.drop.length===0?null:i,reading:d,answers:r,usage:n}}export{qe as a,Fe as b,Ne as c,Ae as d,Ee as e,Me as f};
|
|
1
|
+
import{c as M}from"./chunk.INTJD5WG.js";import{ga as b}from"./chunk.J24YPQ5I.js";var k=["owners","status","schedule","budget","places","sources","stock","votes","private","history","publishing","roster","routines","comparison"],y={owners:"people who own things",status:"a status that moves",schedule:"dates it is due by, or a schedule",budget:"money against a budget",places:"places",sources:"sources behind claims",stock:"counts in stock",votes:"votes or picks",private:"private to its owner",history:"a history, a record book",publishing:"content to publish",roster:"a roster of people",routines:"repeating routines",comparison:"a comparison to pick one from"},J={owners:"a person kind (or the people the app has), an owner link, Give it to someone, a rule that every one has somebody on it, and Who has what",status:"a status with named steps (or the one the app has), an act for each step, and a board",schedule:"a due date, Set the date, the on-time rule, and a calendar",budget:"a cost beside the money the app keeps, a budget on the kind it is grouped under, Set the budget, and the over-budget rule",places:"a place kind, a link to one, and a map of where things are",sources:"a source kind, a link from each claim to its source, and the rule that a claim names one",stock:"what is on hand and the reorder level, Count the stock, and the running-low rule",votes:"a vote on each, Vote for it, and a tally",private:"a sight that keeps each person's own records to them",history:"the record book: an era or season each belongs to, and a timeline",publishing:"a published status, Publish it, and what the public sees",roster:"a person kind with the fields a roster keeps, and the list of who is here",routines:"how often each repeats and when it was last done, Mark it done, and the overdue rule",comparison:"a side-by-side of the candidates, one chosen, and Choose it"},U=new Set(["person","people","member","user","player","guest","candidate","participant","traveler","volunteer","interviewer","interviewee","contact","trade","staff","student","employee","teammate","crew","attendee","friend","customer","client","driver","speaker","host","teacher","parent","kid","child","coach","patient","tenant","resident","neighbor","applicant","recruit","contributor","assignee","worker","collaborator","runner"]),K=new Set(["place","venue","location","room","site","building","store","warehouse","city","country","region","address","hall","stadium","office","shelf"]),z=new Set(["source","reference","citation","evidence"]),H=new Set(["season","era","period","epoch","edition","generation","age","campaign","tournament"]),ae=/owner|owned|assign|^lead$|responsible|^by$|^by-|done-?by|interviewer|reviewer|maker|author|keeper|givenby|^for-?person$/i,oe=/due|deadline|until|needed|needby|target|expires|^ends?(on|at)?$|^by$/i,de=/^(date|day|when|at|start|starts|startsat|startson|startdate|scheduled|scheduledfor|scheduledon|happens|happenson|held|heldon|from|time|exchangedate|.*date|.*day)$/i,ce=/released|fixed|published|applied|checked|created|added|done|last|first|updated|seen|born|birth|founded|finished|completed|closed/i,X=/status|stage|state|phase|progress/i,W=/budget|limit|cap$|allowance/i,le=/budget|cost|price|quote|amount|salary|fee|spend|total|paid|owed/i,pe=/^(place|location|venue|address|where|city|town)$/i,B=/reorder|onhand|instock|^stock|quantity|^qty/i,he=/^votes?$|votecount|upvotes|^score$|^points$/i,fe=/^(votes?|votesfor|votedby|voters|picks?|chooses|choices|favorites|likes)$/i,ue=/often|frequency|cadence|^every$|repeat|interval/i,ge=/^last/i,Q=/^(published|live|public)$/i,ye=/count\(.*\bwhere\b.*\)\s*<=\s*1\b/,u=e=>e.toLowerCase(),w=(e,t)=>u(e.kinds[t]?.noun??b(t)),$=(e,t)=>u(e.kinds[t]?.plural??`${w(e,t)}s`),me=e=>e.charAt(0).toUpperCase()+e.slice(1),p=(e,t)=>me($(e,t)),we=e=>/^[aeiou]/i.test(e)?"an":"a",x=(e,t="and")=>e.length<2?e.join(""):`${e.slice(0,-1).join(", ")} ${t} ${e[e.length-1]}`,N=e=>new Set((e??"").split(/[^A-Za-z0-9_-]+/).filter(Boolean)),v=e=>Object.entries(e.kinds),m=(e,t)=>Object.entries(e.acts??{}).filter(([,s])=>[s.on??[]].flat().includes(t)),_=e=>Array.isArray(e.lenses)?e.lenses:[],I=e=>typeof e.title=="string"?e.title:void 0,A=e=>e.bindings&&typeof e.bindings=="object"?e.bindings:{},R=(e,t)=>Array.isArray(t)&&t.length===1&&typeof t[0]=="string"&&e.kinds[t[0]]?t[0]:void 0;function V(e,t){let s=e.kinds[t];if(!s)return!1;let r=n=>u(n).replace(/ll/g,"l");return s.people===!0||U.has(r(t))||U.has(r(w(e,t)))}var Y=(e,t)=>K.has(u(t))||K.has(w(e,t)),ke=(e,t)=>z.has(u(t))||z.has(w(e,t)),be=(e,t)=>H.has(u(t))||H.has(w(e,t)),$e=(e,t)=>(t.type==="number"||t.type==="integer")&&(t.format==="money"||le.test(e)),j=e=>e.type==="date"||e.type==="datetime";function P(e,t,s,r,n){return _(e).filter(d=>d.name===t&&A(d)[s]?.[r]===n).map(I).filter(d=>d!==void 0)}function D(e,t,s,r){return _(e).filter(n=>n.name==="coverage"&&A(n)[s]?.kind===t&&(r===void 0||A(n).link?.edge===r)).map(I).filter(n=>n!==void 0)}function f(e,t,s){let r=new Set(t);return Object.entries(e.rules??{}).filter(([,n])=>(s===void 0||n.over==="graph"||s.includes(n.over))&&[...N(`${n.when??""} ${n.require??""} ${n.says??""}`)].some(d=>r.has(d))).map(([n])=>n)}var G=class{kinds=new Set;fields=new Set;relations=new Set;rules=new Set;lenses=new Set;acts=new Set;said;add=(t,...s)=>{for(let r of s)this[t].add(r)};say=t=>{this.said??=t};any=()=>this.kinds.size+this.fields.size+this.relations.size+this.rules.size+this.lenses.size+this.acts.size>0;asTrait=t=>({trait:t,words:y[t],said:this.said??y[t],kinds:[...this.kinds],fields:[...this.fields],relations:[...this.relations],rules:[...this.rules],lenses:[...this.lenses],acts:[...this.acts]})};function ve(e){let t;for(let[s,r]of v(e)){let n=Object.keys(r.fields).length+Object.keys(r.edges??{}).length;(!t||n>t.fields)&&(t={kind:s,fields:n})}return t?.kind}function g(e){let t=ve(e);return v(e).sort(([s],[r])=>+(r===t)-+(s===t))}function Z(e,t){let s=e.kinds[t];if(!s)return[];let r=[];for(let[n,d]of Object.entries(s.fields)){if(d.type!=="enum"||!Array.isArray(d.options)||d.options.length<2)continue;let i=m(e,t).filter(([,a])=>typeof a.sets?.[n]=="string"&&d.options.includes(a.sets[n])).map(([a])=>a);((X.test(n)||s.lifecycle?.field===n)&&i.length>=1||i.length>=2)&&r.push({field:n,options:d.options,steps:i})}return r}var ee={owners(e,t){for(let[s,r]of g(e))for(let[n,d]of Object.entries(r.edges??{})){let i=R(e,d.to);d.cardinality!=="one"||!i||!V(e,i)||!ae.test(n)||(t.add("kinds",s,i),t.add("relations",`${s}.${n}`),t.add("rules",...f(e,[n],[s,i])),t.add("lenses",...D(e,s,"rows",n)),t.add("acts",...m(e,s).filter(([,o])=>o.connects===n||o.severs===n).map(([o])=>o)),t.say(`Each ${w(e,s)} has one of the ${$(e,i)} on it (${n}).`))}},status(e,t){for(let[s]of g(e))for(let{field:r,options:n,steps:d}of Z(e,s))t.add("kinds",s),t.add("fields",`${s}.${r}`),t.add("acts",...d),t.add("rules",...f(e,[r],[s])),t.add("lenses",...P(e,"columns",s,"column",r)),t.say(`${p(e,s)} move through ${x(n.map(u))}.`)},schedule(e,t){for(let[s,r]of g(e))for(let[n,d]of Object.entries(r.fields)){if(!j(d)||ce.test(n))continue;let i=P(e,"calendar",s,"start",n),o=oe.test(n);if(!o&&!de.test(n)&&i.length===0)continue;t.add("kinds",s),t.add("fields",`${s}.${n}`),t.add("lenses",...i),t.add("rules",...f(e,[n],[s])),t.add("acts",...m(e,s).filter(([,c])=>(c.writes??[]).includes(n)||c.sets?.[n]!==void 0).map(([c])=>c));let a=/date|day|when|time/i.test(n)?u(b(n)):`date (${n})`;t.say(o?`${p(e,s)} are due by a date (${n}).`:`${p(e,s)} have ${we(a)} ${a}${i.length>0?", on a calendar":""}.`)}},budget(e,t){let s=v(e).flatMap(([o,a])=>Object.entries(a.fields).filter(([c,h])=>(h.type==="number"||h.type==="integer")&&W.test(c)).map(([c])=>({kind:o,name:c})));if(s.length===0)return;let r=g(e).flatMap(([o,a])=>Object.entries(a.fields).filter(([c,h])=>$e(c,h)&&!W.test(c)).map(([c])=>({kind:o,name:c})));if(r.length===0)return;let n=[...s,...r].map(o=>o.name);for(let o of[...s,...r])t.add("kinds",o.kind),t.add("fields",`${o.kind}.${o.name}`),t.add("acts",...m(e,o.kind).filter(([,a])=>(a.writes??[]).includes(o.name)||a.sets?.[o.name]!==void 0).map(([a])=>a));t.add("rules",...f(e,n).filter(o=>s.some(a=>N(e.rules[o].require??"").has(a.name))));let d=r[0],i=s.find(o=>o.kind===d.kind)??s[0];t.say(`${p(e,d.kind)}' ${u(b(d.name))} against ${i.kind===d.kind?"each one's":`each ${w(e,i.kind)}'s`} ${u(b(i.name))}.`)},places(e,t){for(let[s,r]of g(e)){Y(e,s)&&(t.add("kinds",s),t.add("lenses",...D(e,s,"columns")));for(let[n,d]of Object.entries(r.edges??{})){let i=R(e,d.to);!i||!Y(e,i)||(t.add("kinds",s,i),t.add("relations",`${s}.${n}`),t.add("rules",...f(e,[n],[s,i])),t.say(`${p(e,s)} are at ${$(e,i)} (${n}).`))}for(let[n,d]of Object.entries(r.fields))d.type!=="place"&&!(d.type==="string"&&pe.test(n))||(t.add("kinds",s),t.add("fields",`${s}.${n}`),t.say(`${p(e,s)} say where (${n}).`))}t.any()&&!t.said&&t.say(`${x([...t.kinds].map(s=>p(e,s)))} are places.`)},sources(e,t){for(let[s,r]of g(e)){for(let[n,d]of Object.entries(r.edges??{})){let i=R(e,d.to);!i||!ke(e,i)&&!/^cite/i.test(n)||(t.add("kinds",s,i),t.add("relations",`${s}.${n}`),t.add("rules",...f(e,[n,i],[s,i])),t.add("acts",...m(e,s).filter(([,o])=>o.connects===n||o.severs===n).map(([o])=>o)),t.say(`${p(e,s)} cite ${$(e,i)} (${n}).`))}for(let[n,d]of Object.entries(r.fields))d.type!=="url"||!/^source/i.test(n)||(t.add("kinds",s),t.add("fields",`${s}.${n}`),t.add("rules",...f(e,[n],[s])),t.say(`${p(e,s)} link to their source (${n}).`))}},stock(e,t){for(let[s,r]of g(e)){let n=Object.entries(r.fields).filter(([a,c])=>(c.type==="number"||c.type==="integer")&&B.test(a)).map(([a])=>a),d=Object.keys(r.computed??{}).filter(a=>B.test(a)),i=n.some(a=>/reorder/i.test(a)),o=v(e).some(([,a])=>Object.entries(a.fields).some(([c,h])=>/^(change|delta|moved)$/i.test(c)&&(h.type==="number"||h.type==="integer")));!i&&!(d.length+n.length>0&&o)||(t.add("kinds",s),t.add("fields",...n.map(a=>`${s}.${a}`),...d.map(a=>`${s}.${a}`)),t.add("rules",...f(e,[...n,...d],[s])),t.add("acts",...m(e,s).filter(([,a])=>n.some(c=>(a.writes??[]).includes(c)||a.sets?.[c]!==void 0)).map(([a])=>a)),t.say(`${p(e,s)} have a count in stock${i?" and a reorder point":""}.`))}},votes(e,t){for(let[s,r]of g(e)){for(let[n,d]of Object.entries(r.fields)){if(d.type!=="number"&&d.type!=="integer"||!he.test(n))continue;let i=m(e,s).filter(([,o])=>o.sets?.[n]!==void 0).map(([o])=>o);i.length!==0&&(t.add("kinds",s),t.add("fields",`${s}.${n}`),t.add("acts",...i),t.add("rules",...f(e,[n],[s])),t.say(`${p(e,s)} collect votes (${n}).`))}for(let[n,d]of Object.entries(r.edges??{})){let i=R(e,d.to);!i||!fe.test(n)||(t.add("kinds",s,i),t.add("relations",`${s}.${n}`),t.add("rules",...f(e,[n],[s,i])),t.add("acts",...m(e,s).filter(([,o])=>o.connects===n||o.severs===n).map(([o])=>o)),t.say(`${p(e,s)} pick ${$(e,i)} (${n}).`))}}},private(e,t){let s=[];for(let r of e.policy?.sees??[])if(!(!r.own&&!r.via)){for(let n of r.kinds)if(e.kinds[n]&&(t.add("kinds",n),s.includes(n)||s.push(n),r.via))for(let[d,i]of v(e))i.edges?.[r.via]&&t.add("relations",`${d}.${r.via}`)}s.length>0&&t.say(`${x(s.map(r=>p(e,r)))} are seen only by whose they are.`)},history(e,t){for(let[s,r]of g(e))for(let[n,d]of Object.entries(r.edges??{})){let i=R(e,d.to);d.cardinality!=="one"||!i||!be(e,i)||!Object.entries(r.fields).some(([a,c])=>j(c)||/year|result|outcome|score|finish/i.test(a))||(t.add("kinds",s,i),t.add("relations",`${s}.${n}`),t.add("rules",...f(e,[n,i],[s,i])),t.add("lenses",...D(e,s,"rows",n),..._(e).filter(a=>a.name==="timeline"&&A(a)[s]!==void 0).map(I).filter(a=>a!==void 0)),t.say(`${p(e,s)} grouped into ${$(e,i)}, a record book.`))}},publishing(e,t){for(let[s,r]of g(e)){let n=Object.entries(r.fields).filter(([,i])=>i.type==="text").map(([i])=>i);if(n.length===0)continue;let d=Z(e,s).map(i=>i.field);for(let[i,o]of Object.entries(r.fields)){if(o.type!=="enum"||!(X.test(i)||d.includes(i))||!(o.options??[]).some(c=>Q.test(c)))continue;let a=(o.options??[]).find(c=>Q.test(c));t.add("kinds",s),t.add("fields",`${s}.${i}`,...n.map(c=>`${s}.${c}`)),t.add("acts",...m(e,s).filter(([,c])=>c.sets?.[i]===a).map(([c])=>c)),t.add("rules",...f(e,[i,...n],[s]).filter(c=>N(`${e.rules[c].when??""} ${e.rules[c].require??""}`).has(a)||n.some(h=>N(e.rules[c].require??"").has(h)))),t.say(`${p(e,s)} go from ${u(o.options[0])} to ${u(a)}, with their words.`)}}},roster(e,t){for(let[s,r]of g(e)){if(!V(e,s))continue;let n=Object.keys(r.fields);n.length<2||(t.add("kinds",s),t.add("fields",...n.map(d=>`${s}.${d}`)),t.add("lenses",...D(e,s,"columns"),...D(e,s,"rows")),t.say(`${p(e,s)}, with ${x(n.slice(1).map(d=>u(b(d))))}.`))}},routines(e,t){for(let[s,r]of g(e)){let n=Object.entries(r.fields).filter(([,a])=>j(a)&&a.repeats===!0).map(([a])=>a),d=Object.entries(r.fields).filter(([a,c])=>(c.type==="enum"||c.type==="string"||c.type==="integer"||c.type==="number")&&ue.test(a)).map(([a])=>a),i=Object.entries(r.fields).filter(([a,c])=>j(c)&&ge.test(a)).map(([a])=>a);if(n.length===0&&!(d.length>0&&i.length>0))continue;let o=[...n,...d,...i];t.add("kinds",s),t.add("fields",...o.map(a=>`${s}.${a}`)),t.add("rules",...f(e,o,[s])),t.add("lenses",...o.flatMap(a=>P(e,"calendar",s,"start",a))),t.add("acts",...m(e,s).filter(([,a])=>o.some(c=>(a.writes??[]).includes(c)||a.sets?.[c]!==void 0)).map(([a])=>a)),t.say(n.length>0?`${p(e,s)} repeat (${n[0]}).`:`${p(e,s)} come round again, each with when it was last done.`)}},comparison(e,t){for(let[s,r]of Object.entries(e.rules??{})){if(!r.require||!ye.test(r.require))continue;let n=r.over==="graph"?void 0:r.over,d=/in\('([^']+)'\)/.exec(r.require)?.[1],i=/all\('([^']+)'/.exec(r.require)?.[1],o=n?d?v(e).find(([,c])=>c.edges?.[d])?.[0]:void 0:i&&e.kinds[i]?i:void 0;if(!o&&!n)continue;let a=/==\s*'([^']+)'/.exec(r.require)?.[1];t.add("kinds",...o?[o]:[],...n?[n]:[]),t.add("rules",s),o&&a&&t.add("acts",...m(e,o).filter(([,c])=>Object.values(c.sets??{}).includes(a)).map(([c])=>c)),t.say(o&&n?`${p(e,o)} compared within each ${w(e,n)}, one ${a??"chosen"}.`:o?`${p(e,o)} compared, one ${a??"chosen"}.`:`One ${a??"chosen"} per ${w(e,n)}.`)}}};function E(e){let t=[];for(let s of k){let r=new G;ee[s](e,r),r.any()&&t.push(r.asTrait(s))}return t}function L(e,t){let s=new G;return ee[t](e,s),s.any()}var Oe=e=>Math.round(Math.max(0,Math.min(1,e))*100)/100;function q(e){return e?.type==="noul"&&Number.isFinite(e.noul)?Oe(e.noul):void 0}var Re={add:.7,drop:.7},Fe="propose_change";function Me(e){return M(e)}var De=e=>e.toLowerCase(),Te=e=>e.charAt(0).toUpperCase()+e.slice(1),O=(e,t="and")=>e.length<2?e.join(""):`${e.slice(0,-1).join(", ")} ${t} ${e[e.length-1]}`,Se=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[-_]+/g," ").toLowerCase(),T=(e,t)=>{let s=e.kinds[t];return De(s?.plural??(s?.noun?`${s.noun}s`:`${Se(t)}s`))},xe=e=>k.includes(e),se=(e,t)=>k.indexOf(e)-k.indexOf(t);function je(e){let t=E(e),s=new Set(t.map(r=>r.trait));return{name:e.name,keeps:Object.keys(e.kinds).map(r=>T(e,r)),"made of":t.map(r=>r.said),lacks:k.filter(r=>!s.has(r)).map(r=>y[r])}}function Ne(e,t){let s=new Set(E(t).map(n=>n.trait)),r={};for(let n of k)s.has(n)||(r[`need:${n}`]={type:"noul",instructions:`Does what they asked for need ${y[n]}, which ${t.name} has no part for yet?`,criteria:{true:`It needs ${y[n]}: they asked for it, or what they asked for cannot be kept without it.`,false:"Not asked for, and not needed to keep what they asked for."}});for(let n of Object.keys(t.kinds)){let d=T(t,n);r[`drop:kind:${n}`]={type:"noul",instructions:`Did they ask ${t.name} to stop keeping ${d}?`,criteria:{true:`They said the ${d} go: to drop them, remove them or stop tracking them.`,false:`${Te(d)} stay: nothing they said asks for them to go.`}}}for(let n of k)s.has(n)&&(r[`drop:trait:${n}`]={type:"noul",instructions:`Did they ask ${t.name} to stop having ${y[n]}?`,criteria:{true:`They said it goes: to drop or stop ${y[n]}.`,false:"It stays: nothing they said asks for it to go."}});return{state:{said:e,app:je(t)},questions:r}}var te=/^drop:(kind|trait):(.+)$/s;function Ae(e,t={}){let s={...Re,...t},r=Object.keys(e);if(r.length===0)throw new Error("readReshape was handed no answers.");let n=r.filter(o=>!/^need:/.test(o)&&!te.test(o));if(n.length>0)throw new Error(`readReshape does not know the question ${n.map(o=>`"${o}"`).join(", ")}: it reads need:<trait>, drop:kind:<name> and drop:trait:<name>.`);let d={},i={};for(let[o,a]of Object.entries(e)){let c=te.exec(o);if(c){i[`${c[1]}:${c[2]}`]=q(a)??0;continue}let h=o.slice(5);xe(h)&&(d[h]=q(a)??0)}return{add:Object.keys(d).filter(o=>d[o]>=s.add).sort(se),drop:Object.entries(i).filter(([,o])=>o>=s.drop).map(([o])=>o.slice(o.indexOf(":")+1)),needs:d,drops:i}}function Ge(e){let{said:t,document:s}=e,r=[...new Set(e.add)].sort(se),n=[...new Set(e.drop)],d=E(s),i=r.filter(l=>!L(s,l)).map(l=>({what:"trait",name:l,words:y[l],brings:J[l]})),o=r.filter(l=>L(s,l)),a=Object.keys(s.kinds).filter(l=>n.includes(l)),c=d.filter(l=>n.includes(l.trait)&&!Object.hasOwn(s.kinds,l.trait)),h=[...a.map(l=>({what:"kind",name:l,words:T(s,l)})),...c.map(l=>({what:"trait",name:l.trait,words:y[l.trait]}))],C=Object.keys(s.kinds).filter(l=>!a.includes(l)).map(l=>({what:"kind",name:l,words:T(s,l)})),ne=[...a.map(l=>`All ${T(s,l)} records go, with their links.`),...c.flatMap(l=>{let F=[...l.fields,...l.relations];return F.length>0?[`What carries ${y[l.trait]} goes: ${O(F)}, with its values and links.`]:[]})],S=[];i.length>0&&S.push(`adds ${O(i.map(l=>l.words))}`),h.length>0&&S.push(`drops ${O(h.map(l=>l.words))}`),C.length>0&&S.push(`keeps ${O(C.map(l=>l.words))}`);let re=i.length+h.length===0?`Nothing in ${s.name} changes for that.`:`This ${O(S)}.`,ie=o.length>0?` ${s.name} already has ${O(o.map(l=>y[l]))}.`:"";return{said:t,add:i.map(l=>l.name),drop:h.map(l=>l.name),card:{said:`${re}${ie}`,adds:i,keeps:C,drops:h,breaking:ne}}}async function Ue(e){let{state:t,questions:s}=Ne(e.said,e.document),{answers:r,usage:n}=await e.decide(t,s),d=Ae(r,e.thresholds??{}),i=d.add.length+d.drop.length===0?null:Ge({said:e.said,document:e.document,add:d.add,drop:d.drop});return{proposal:i&&i.add.length+i.drop.length===0?null:i,reading:d,answers:r,usage:n}}export{Fe as a,Me as b,Ne as c,Ae as d,Ge as e,Ue as f};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{ha as V,ia as w}from"./chunk.3CJLAJXP.js";import"./chunk.SDO3U72B.js";import{Qd as u,Ud as h}from"./chunk.J24YPQ5I.js";import"./chunk.FQLNBIQ5.js";import"./chunk.AJZBJBMO.js";var c=i=>[i,...u.filter(o=>o!==i)];function p(i,o){if(o.hidden.length===0&&o.removed.length===0)return i;let a=new Set(o.removed.filter(e=>!e.lens).map(e=>e.name)),f=new Set(o.hidden),r=e=>e?.name!==void 0&&(a.has(e.name)||e.title!==void 0&&f.has(e.name)),m=()=>(i.homes?.()??[]).filter(e=>e.name===void 0||!a.has(e.name)),l=(e,t,d)=>[...i.registrations()].reverse().find(n=>n.kind===e&&n.cardinality===t&&n.fidelity===d&&!n.beside&&!n.hidden&&!r(n)),y=(e,t)=>{for(let d of c(t.fidelity)){let n=l(e,t.cardinality,d);if(n)return n}if(t.cardinality==="one")for(let d of c(t.fidelity)){let n=l(e,"many",d);if(n)return n}},s={...i,register(e,t,d,n){return i.register(e,t,d,n),s},...i.home?{home(e,t){return i.home(e,t),s}}:{},...i.homes?{homes:m,homeView:()=>m().at(-1)?.view}:{},lookup(e,t){return i.lookup(e,t)===void 0?void 0:l(e,t.cardinality,t.fidelity)?.view},places:()=>i.places().filter(e=>!(e.name!==void 0&&a.has(e.name))).map(e=>e.name!==void 0&&f.has(e.name)&&!e.hidden?{...e,hidden:!0}:e),resolve(e,t,d){let n=i.resolve(e,t,d);return!n||!r(n)||d!==void 0&&n.name!==void 0&&!a.has(n.name)&&n.title!==void 0&&h(n.title)===d?n:y(e,t)},all:()=>i.all().filter(e=>!(e.name!==void 0&&a.has(e.name))),homes:()=>(i.homes?.()??[]).filter(e=>!(e.name!==void 0&&a.has(e.name))),homeView:()=>i.homes?s.homes().at(-1)?.view:i.homeView?.()};return V(i)&&w(s),s}function R(i,o,a){let f,r=()=>{let m=o.current();f&&m.hidden===f.hidden&&m.removed===f.removed||(f=m,a(p(i,m)))};return r(),o.onChange?.(r)??(()=>{})}export{p as tidyViews,R as watchTidied};
|