@stacksjs/hello-world-stx 0.75.591 → 0.75.593
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/bundle.js +69 -69
- package/dist/bundle.js.map +3 -3
- package/dist/runtime.js +16 -4
- package/package.json +2 -2
package/dist/bundle.js
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
var
|
|
1
|
+
var P=globalThis.HTMLElement||class{},O=(t)=>String(t??"").replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("'","'"),M=(t,e)=>{let s=e.trim().split(".");if(s[0]==="this")s.shift();if(!s.length)return t;let c=s.shift(),l=t._values&&Object.prototype.hasOwnProperty.call(t._values,c)?t._values[c]:t[c];for(let a of s)l=l?.[a];return typeof l==="function"?l.call(t):l},N=(t,e,s)=>{if(t===null)return e==="boolean"?!1:s;if(e==="boolean")return t!=="false"&&t!=="0";if(e==="number")return Number(t);if(e==="object"||e==="array")try{return JSON.parse(t)}catch{return s}return t},R=(t,e)=>{if(t==null||t===!1)return null;if(e==="boolean")return"";if(e==="object"||e==="array")return JSON.stringify(t);return String(t)},z=(t,e)=>{if(t==null||e!=="object"&&e!=="array")return t;if(typeof structuredClone==="function")return structuredClone(t);return JSON.parse(JSON.stringify(t))},L=(t)=>z(t.default??{string:"",number:0,boolean:!1,object:{},array:[]}[t.type],t.type);class p extends P{static definition={};static get observedAttributes(){return this.definition.observedAttributes||[]}constructor(){super();this._values=Object.create(null),this._reflecting=!1,this._connected=!1,this._hasConnected=!1,this._initializing=!1,this._updatePending=!1,this._listeners=new Map;let t=this.constructor.definition;for(let[e,s]of Object.entries(t.properties||{}))this._values[e]=L(s);if(t.shadowMode&&this.attachShadow&&!this.shadowRoot)this._closedRoot=this.attachShadow({mode:t.shadowMode})}get updateComplete(){return this._updateComplete||Promise.resolve()}get renderRoot(){return this._closedRoot||this.shadowRoot||this}connectedCallback(){if(this._connected)return;this._connected=!0,this._initializing=!0;let t=this.constructor.definition;for(let[l,a]of Object.entries(t.properties||{})){let o=a.attribute===!1?null:a.attribute||l.replace(/[A-Z]/g,(d)=>"-"+d.toLowerCase());if(o&&this.hasAttribute?.(o))this._values[l]=N(this.getAttribute(o),a.type,L(a))}for(let l of Object.keys(t.properties||{}))this._upgradeProperty(l);this._initializing=!1;let s=[...this.renderRoot.childNodes||[]].some((l)=>l.nodeType!==3||l.textContent.trim()),c=!this._hasConnected;if(!(c&&t.progressive&&s))this._render();else this._upgradeDeclarativeEvents();if(this._bindEvents(),c)this._hasConnected=!0,this.setAttribute?.("hydrated",""),this.dispatchEvent?.(new CustomEvent("stx:hydrated",{bubbles:!0,composed:!0}));try{this.onConnect?.()}catch(l){console.error("[stx] onConnect failed",l)}}disconnectedCallback(){this._connected=!1;try{this.onDisconnect?.()}catch(t){console.error("[stx] onDisconnect failed",t)}finally{for(let[t,e]of this._listeners)this.renderRoot.removeEventListener(t,e);this._listeners.clear()}}attributeChangedCallback(t,e,s){if(e===s||this._reflecting)return;let c=this.constructor.definition,l=c.attributeToProperty?.[t];if(!l)return;let a=c.properties[l],o=N(s,a.type,L(a));if(!Object.is(this._values[l],o))this._values[l]=o,this.requestUpdate()}_props(){return this._values}requestUpdate(){if(!this._connected||this._initializing||this._updatePending)return this.updateComplete;return this._updatePending=!0,this._updateComplete=new Promise((t)=>{queueMicrotask(()=>{if(this._updatePending=!1,this._connected)this._render();t()})}),this._updateComplete}emit(t,e,s={}){return this.dispatchEvent(new CustomEvent(t,{detail:e,bubbles:!0,composed:!0,...s}))}_upgradeProperty(t){if(!Object.prototype.hasOwnProperty.call(this,t))return;let e=this[t];delete this[t],this[t]=e}_upgradeDeclarativeEvents(){for(let t of this.renderRoot.querySelectorAll?.("*")||[]){let e=t.getAttributeNames?.()||[...t.attributes||[]].filter(Boolean).map((s)=>s.name);for(let s of e){if(!s?.startsWith("@"))continue;let[c,...l]=s.slice(1).split(".");if(t.setAttribute("data-stx-on-"+c,t.getAttribute(s)),l.length)t.setAttribute("data-stx-mod-"+c,l.join(" "));t.removeAttribute(s)}}}_bindEvents(){for(let t of this.constructor.definition.eventTypes||[]){if(this._listeners.has(t))continue;let e=(s)=>{let c="[data-stx-on-"+t+"]",l=s.target?.closest?.(c);if(!l||!this.renderRoot.contains(l))return;let a=(l.getAttribute("data-stx-mod-"+t)||"").split(" ");if(a.includes("prevent"))s.preventDefault();if(a.includes("stop"))s.stopPropagation();let o=l.getAttribute("data-stx-on-"+t);if(typeof this[o]==="function")this[o](s)};this.renderRoot.addEventListener(t,e),this._listeners.set(t,e)}}_render(){let t=this.constructor.definition,e=this.renderRoot,s=e.activeElement||(e.contains?.(globalThis.document?.activeElement)?globalThis.document.activeElement:null),c=s?.getAttribute?.("data-key")?"data-key":s?.id?"id":"name",l=s?.getAttribute?.(c),a=c==="name"&&s?.type==="radio"?s.value:null,o=s?.selectionStart,d=s?.selectionEnd,n=Number.isInteger(o)&&Number.isInteger(d)?[o,d,s.selectionDirection]:null,r=typeof this.render==="function"?this.render(I):t.template.replace(new RegExp("\\{!!\\s*([\\w$.]+)\\s*!!\\}","g"),(i,m)=>String(M(this,m)??"")).replace(new RegExp("\\{\\{\\s*([\\w$.]+)\\s*\\}\\}","g"),(i,m)=>O(M(this,m)));if(t.shadowMode&&t.styles)r="<style>"+t.styles+"</style>"+r;if(e.innerHTML=r,this._applyBindings(),this._bindEvents(),l){let i=globalThis.CSS?.escape?globalThis.CSS.escape(l):l.replace(/["\\]/g,"$&"),m="["+c+'="'+i+'"]',g=a===null?e.querySelector(m):[...e.querySelectorAll(m)].find((u)=>u.type==="radio"&&u.value===a);if(g?.focus?.(),n&&Number.isInteger(g?.selectionStart)&&Number.isInteger(g?.selectionEnd)&&typeof g?.setSelectionRange==="function")g.setSelectionRange(n[0],n[1],n[2]||"none")}this.dispatchEvent?.(new CustomEvent("stx:updated",{bubbles:!1}))}_applyBindings(){for(let t of this.constructor.definition.bindings||[]){let e=this.renderRoot.querySelector("[data-stx-bind-"+t.id+"]");if(!e)continue;let s=M(this,t.expression);if(t.name==="class")e.className=s||"";else if(t.name==="style"&&typeof s==="object")Object.assign(e.style,s);else if(typeof s==="boolean"){if(e.toggleAttribute(t.name,s),t.name in e)e[t.name]=s}else if(s==null||s===!1)e.removeAttribute(t.name);else e.setAttribute(t.name,String(s))}}}var I={escape:O,raw:(t)=>String(t??""),values:(t)=>t==null?[]:t[Symbol.iterator]?t:Object.values(t),entries:(t)=>t==null?[]:Array.isArray(t)?t.entries():Object.entries(t)};function f(t,e){let s=e.properties||{},c={},l=[];for(let[o,d]of Object.entries(s)){let n=d.attribute===!1?null:d.attribute||o.replace(/[A-Z]/g,(r)=>"-"+r.toLowerCase());if(n)c[n]=o,l.push(n);if(o in P.prototype){if(!n)throw TypeError('STX prop "'+o+'" overlaps the native DOM API and needs an attribute binding');continue}Object.defineProperty(t.prototype,o,{configurable:!0,enumerable:!0,get(){return this._values[o]},set(r){let i=this._values[o];if(Object.is(i,r))return;if(this._values[o]=r,d.reflect&&n&&!this._reflecting){let m=R(r,d.type);if(this._reflecting=!0,m===null)this.removeAttribute(n);else this.setAttribute(n,m);this._reflecting=!1}this.requestUpdate(),this.dispatchEvent?.(new CustomEvent(o+"-changed",{detail:{value:r,oldValue:i},bubbles:!0,composed:!0}))}})}t.definition={...e,attributeToProperty:c,observedAttributes:l};let a=globalThis.customElements||globalThis.window?.customElements;if(a&&!a.get(e.tag))a.define(e.tag,t);return t}class b extends p{render(t){let{escape:e,raw:s,values:c,entries:l}=t,{id:a}=this._props(),o="";return o+='<div class="context-menu" id="',o+=e(a),o+=`" style="display: none;">
|
|
2
2
|
<slot />
|
|
3
|
-
</div>`,
|
|
3
|
+
</div>`,o}}f(b,{tag:"stacks-context-menu",template:`<div class="context-menu" id="{{ id }}" style="display: none;">
|
|
4
4
|
<slot />
|
|
5
|
-
</div>`,styles:"",shadowMode:!1,progressive:!0,properties:{id:{type:"string",reflect:!0}},eventTypes:[],bindings:[]});var
|
|
5
|
+
</div>`,styles:"",shadowMode:!1,progressive:!0,properties:{id:{type:"string",reflect:!0}},eventTypes:[],bindings:[]});var q=b;class h extends p{render(t){let{escape:e,raw:s,values:c,entries:l}=t,{icon:a="",label:o,onclick:d,hasSubmenu:n=!1}=this._props(),r="";if(n){if(r+=`
|
|
6
6
|
<div class="context-menu-item has-submenu">
|
|
7
|
-
`,a)
|
|
8
|
-
<div class="context-menu-item-icon">`,
|
|
9
|
-
`;
|
|
7
|
+
`,a)r+=`
|
|
8
|
+
<div class="context-menu-item-icon">`,r+=e(a),r+=`</div>
|
|
9
|
+
`;r+="<div>",r+=e(o),r+=`</div>
|
|
10
10
|
<div class="context-submenu">
|
|
11
11
|
<slot />
|
|
12
12
|
</div>
|
|
13
13
|
</div>
|
|
14
|
-
`}else{if(
|
|
15
|
-
`,a)
|
|
16
|
-
<div class="context-menu-item-icon">`,
|
|
17
|
-
`;
|
|
14
|
+
`}else{if(r+='<button class="context-menu-item" ',d)r+='onclick="',r+=e(d),r+='"';if(r+=`>
|
|
15
|
+
`,a)r+=`
|
|
16
|
+
<div class="context-menu-item-icon">`,r+=e(a),r+=`</div>
|
|
17
|
+
`;r+="<div>",r+=e(o),r+=`</div>
|
|
18
18
|
</button>
|
|
19
|
-
`}return
|
|
19
|
+
`}return r}}f(h,{tag:"stacks-context-menu-item",template:`@if (hasSubmenu)
|
|
20
20
|
<div class="context-menu-item has-submenu">
|
|
21
21
|
@if (icon)
|
|
22
22
|
<div class="context-menu-item-icon">{{ icon }}</div>
|
|
@@ -33,18 +33,18 @@ var O=globalThis.HTMLElement||class{},R=(t)=>String(t??"").replaceAll("&","&
|
|
|
33
33
|
@endif
|
|
34
34
|
<div>{{ label }}</div>
|
|
35
35
|
</button>
|
|
36
|
-
@endif`,styles:"",shadowMode:!1,progressive:!0,properties:{icon:{type:"string",default:"",reflect:!0},label:{type:"string",reflect:!0},onclick:{type:"string",reflect:!0},hasSubmenu:{type:"boolean",default:!1,reflect:!0}},eventTypes:[],bindings:[]});var W=h;class y extends p{render(t){let{escape:e,raw:
|
|
36
|
+
@endif`,styles:"",shadowMode:!1,progressive:!0,properties:{icon:{type:"string",default:"",reflect:!0},label:{type:"string",reflect:!0},onclick:{type:"string",reflect:!0},hasSubmenu:{type:"boolean",default:!1,reflect:!0}},eventTypes:[],bindings:[]});var W=h;class y extends p{render(t){let{escape:e,raw:s,values:c,entries:l}=t,{id:a,icon:o="\uD83D\uDCC4",label:d,type:n="window",section:r="",url:i="",onclick:m,left:g="20px",top:u="20px",style:j=""}=this._props(),v="";if(v+=`<button
|
|
37
37
|
class="desktop-icon"
|
|
38
38
|
data-icon-id="`,v+=e(a),v+=`"
|
|
39
39
|
data-icon-type="`,v+=e(n),v+=`"
|
|
40
|
-
data-icon-section="`,v+=e(
|
|
41
|
-
data-icon-url="`,v+=e(
|
|
40
|
+
data-icon-section="`,v+=e(r),v+=`"
|
|
41
|
+
data-icon-url="`,v+=e(i),v+=`"
|
|
42
42
|
style="`,j)v+=e(j);else v+="left: ",v+=e(g),v+="; top: ",v+=e(u),v+=";";if(v+=`"
|
|
43
43
|
`,m)v+=`
|
|
44
44
|
onclick="`,v+=e(m),v+=`"
|
|
45
45
|
`;return v+=`>
|
|
46
|
-
<div class="desktop-icon-image">`,v+=e(
|
|
47
|
-
<div class="desktop-icon-label">`,v+=e(
|
|
46
|
+
<div class="desktop-icon-image">`,v+=e(o),v+=`</div>
|
|
47
|
+
<div class="desktop-icon-label">`,v+=e(d),v+=`</div>
|
|
48
48
|
</button>`,v}}f(y,{tag:"stacks-desktop-icon",template:`<button
|
|
49
49
|
class="desktop-icon"
|
|
50
50
|
data-icon-id="{{ id }}"
|
|
@@ -58,24 +58,24 @@ var O=globalThis.HTMLElement||class{},R=(t)=>String(t??"").replaceAll("&","&
|
|
|
58
58
|
>
|
|
59
59
|
<div class="desktop-icon-image">{{ icon }}</div>
|
|
60
60
|
<div class="desktop-icon-label">{{ label }}</div>
|
|
61
|
-
</button>`,styles:"",shadowMode:!1,progressive:!0,properties:{id:{type:"string",reflect:!0},icon:{type:"string",default:"\uD83D\uDCC4",reflect:!0},label:{type:"string",reflect:!0},type:{type:"string",default:"window",reflect:!0},section:{type:"string",default:"",reflect:!0},url:{type:"string",default:"",reflect:!0},onclick:{type:"string",reflect:!0},left:{type:"string",default:"20px",reflect:!0},top:{type:"string",default:"20px",reflect:!0},style:{type:"string",default:"",reflect:!0}},eventTypes:[],bindings:[]});var B=y;class _ extends p{render(t){let{escape:e,raw:
|
|
62
|
-
class="feature-btn `,
|
|
63
|
-
`,
|
|
61
|
+
</button>`,styles:"",shadowMode:!1,progressive:!0,properties:{id:{type:"string",reflect:!0},icon:{type:"string",default:"\uD83D\uDCC4",reflect:!0},label:{type:"string",reflect:!0},type:{type:"string",default:"window",reflect:!0},section:{type:"string",default:"",reflect:!0},url:{type:"string",default:"",reflect:!0},onclick:{type:"string",reflect:!0},left:{type:"string",default:"20px",reflect:!0},top:{type:"string",default:"20px",reflect:!0},style:{type:"string",default:"",reflect:!0}},eventTypes:[],bindings:[]});var B=y;class _ extends p{render(t){let{escape:e,raw:s,values:c,entries:l}=t,{label:a,onclick:o,active:d=!1}=this._props(),n="";if(n+=`<button
|
|
62
|
+
class="feature-btn `,d)n+="active";if(n+=`"
|
|
63
|
+
`,o)n+='onclick="',n+=e(o),n+='"';return n+=`>
|
|
64
64
|
`,n+=e(a),n+=`
|
|
65
65
|
</button>`,n}}f(_,{tag:"stacks-feature-button",template:`<button
|
|
66
66
|
class="feature-btn @if (active)active@endif"
|
|
67
67
|
@if (onclick)onclick="{{ onclick }}"@endif
|
|
68
68
|
>
|
|
69
69
|
{{ label }}
|
|
70
|
-
</button>`,styles:"",shadowMode:!1,progressive:!0,properties:{label:{type:"string",reflect:!0},onclick:{type:"string",reflect:!0},active:{type:"boolean",default:!1,reflect:!0}},eventTypes:[],bindings:[]});var H=_;class w extends p{render(t){let{escape:e,raw:
|
|
71
|
-
<label>`,
|
|
70
|
+
</button>`,styles:"",shadowMode:!1,progressive:!0,properties:{label:{type:"string",reflect:!0},onclick:{type:"string",reflect:!0},active:{type:"boolean",default:!1,reflect:!0}},eventTypes:[],bindings:[]});var H=_;class w extends p{render(t){let{escape:e,raw:s,values:c,entries:l}=t,{id:a,label:o,type:d="text",placeholder:n="",class:r="login-input"}=this._props(),i="";return i+=`<div class="login-input-group">
|
|
71
|
+
<label>`,i+=e(o),i+=`:</label>
|
|
72
72
|
<input
|
|
73
|
-
type="`,
|
|
74
|
-
id="`,
|
|
75
|
-
class="`,
|
|
76
|
-
placeholder="`,
|
|
73
|
+
type="`,i+=e(d),i+=`"
|
|
74
|
+
id="`,i+=e(a),i+=`"
|
|
75
|
+
class="`,i+=e(r),i+=`"
|
|
76
|
+
placeholder="`,i+=e(n),i+=`"
|
|
77
77
|
/>
|
|
78
|
-
</div>`,
|
|
78
|
+
</div>`,i}}f(w,{tag:"stacks-input-group",template:`<div class="login-input-group">
|
|
79
79
|
<label>{{ label }}:</label>
|
|
80
80
|
<input
|
|
81
81
|
type="{{ type }}"
|
|
@@ -83,23 +83,23 @@ var O=globalThis.HTMLElement||class{},R=(t)=>String(t??"").replaceAll("&","&
|
|
|
83
83
|
class="{{ classList }}"
|
|
84
84
|
placeholder="{{ placeholder }}"
|
|
85
85
|
/>
|
|
86
|
-
</div>`,styles:"",shadowMode:!1,progressive:!0,properties:{id:{type:"string",reflect:!0},label:{type:"string",reflect:!0},type:{type:"string",default:"text",reflect:!0},placeholder:{type:"string",default:"",reflect:!0},class:{type:"string",default:"login-input",reflect:!0}},eventTypes:[],bindings:[]});var K=w;class k extends p{render(t){let{escape:e,raw:
|
|
86
|
+
</div>`,styles:"",shadowMode:!1,progressive:!0,properties:{id:{type:"string",reflect:!0},label:{type:"string",reflect:!0},type:{type:"string",default:"text",reflect:!0},placeholder:{type:"string",default:"",reflect:!0},class:{type:"string",default:"login-input",reflect:!0}},eventTypes:[],bindings:[]});var K=w;class k extends p{render(t){let{escape:e,raw:s,values:c,entries:l}=t,{id:a,icon:o="\uD83D\uDC64",title:d="Login",prompt:n="Enter your credentials",submitHandler:r="handleLogin()"}=this._props(),i="";return i+='<div id="',i+=e(a),i+=`" class="hidden login-form">
|
|
87
87
|
<div class="login-form-background">
|
|
88
88
|
<div class="login-form-container">
|
|
89
89
|
<button class="login-close-btn" onclick="closeLoginScreens()">×</button>
|
|
90
90
|
<div class="login-form-header">
|
|
91
91
|
<button class="login-back-button" onclick="hideLoginForms()">← Back</button>
|
|
92
92
|
<div class="login-form-title">
|
|
93
|
-
<div class="login-form-icon">`,
|
|
94
|
-
<h2>`,
|
|
93
|
+
<div class="login-form-icon">`,i+=e(o),i+=`</div>
|
|
94
|
+
<h2>`,i+=e(d),i+=`</h2>
|
|
95
95
|
</div>
|
|
96
96
|
</div>
|
|
97
97
|
|
|
98
98
|
<div class="login-form-content">
|
|
99
|
-
<div class="login-form-prompt">`,
|
|
99
|
+
<div class="login-form-prompt">`,i+=e(n),i+=`</div>
|
|
100
100
|
<slot />
|
|
101
101
|
<div class="login-actions">
|
|
102
|
-
<button class="login-submit-btn" onclick="`,
|
|
102
|
+
<button class="login-submit-btn" onclick="`,i+=e(r),i+=`">
|
|
103
103
|
<span class="login-btn-icon">→</span>
|
|
104
104
|
<span>Log In</span>
|
|
105
105
|
</button>
|
|
@@ -107,7 +107,7 @@ var O=globalThis.HTMLElement||class{},R=(t)=>String(t??"").replaceAll("&","&
|
|
|
107
107
|
</div>
|
|
108
108
|
</div>
|
|
109
109
|
</div>
|
|
110
|
-
</div>`,
|
|
110
|
+
</div>`,i}}f(k,{tag:"stacks-login-form",template:`<div id="{{ id }}" class="hidden login-form">
|
|
111
111
|
<div class="login-form-background">
|
|
112
112
|
<div class="login-form-container">
|
|
113
113
|
<button class="login-close-btn" onclick="closeLoginScreens()">×</button>
|
|
@@ -131,13 +131,13 @@ var O=globalThis.HTMLElement||class{},R=(t)=>String(t??"").replaceAll("&","&
|
|
|
131
131
|
</div>
|
|
132
132
|
</div>
|
|
133
133
|
</div>
|
|
134
|
-
</div>`,styles:"",shadowMode:!1,progressive:!0,properties:{id:{type:"string",reflect:!0},icon:{type:"string",default:"\uD83D\uDC64",reflect:!0},title:{type:"string",default:"Login",reflect:!0},prompt:{type:"string",default:"Enter your credentials",reflect:!0},submitHandler:{type:"string",default:"handleLogin()",reflect:!0}},eventTypes:[],bindings:[]});var F=k;class x extends p{render(t){let{escape:e,raw:
|
|
134
|
+
</div>`,styles:"",shadowMode:!1,progressive:!0,properties:{id:{type:"string",reflect:!0},icon:{type:"string",default:"\uD83D\uDC64",reflect:!0},title:{type:"string",default:"Login",reflect:!0},prompt:{type:"string",default:"Enter your credentials",reflect:!0},submitHandler:{type:"string",default:"handleLogin()",reflect:!0}},eventTypes:[],bindings:[]});var F=k;class x extends p{render(t){let{escape:e,raw:s,values:c,entries:l}=t,{id:a="login-screen",logoText:o="STACKS",subtitle:d="To begin, click your user name"}=this._props(),n="";return n+='<div id="',n+=e(a),n+=`" class="hidden login-screen">
|
|
135
135
|
<div class="login-background">
|
|
136
136
|
<div class="login-container">
|
|
137
137
|
<button class="login-close-btn" onclick="closeLoginScreens()">×</button>
|
|
138
138
|
<div class="login-header">
|
|
139
|
-
<div class="login-logo">`,n+=e(
|
|
140
|
-
<div class="login-subtitle">`,n+=e(
|
|
139
|
+
<div class="login-logo">`,n+=e(o),n+=`</div>
|
|
140
|
+
<div class="login-subtitle">`,n+=e(d),n+=`</div>
|
|
141
141
|
</div>
|
|
142
142
|
|
|
143
143
|
<div class="login-users">
|
|
@@ -189,15 +189,15 @@ var O=globalThis.HTMLElement||class{},R=(t)=>String(t??"").replaceAll("&","&
|
|
|
189
189
|
</div>
|
|
190
190
|
</div>
|
|
191
191
|
</div>
|
|
192
|
-
</div>`,styles:"",shadowMode:!1,progressive:!0,properties:{id:{type:"string",default:"login-screen",reflect:!0},logoText:{type:"string",default:"STACKS",reflect:!0},subtitle:{type:"string",default:"To begin, click your user name",reflect:!0}},eventTypes:[],bindings:[]});var U=x;class S extends p{render(t){let{escape:e,raw:
|
|
192
|
+
</div>`,styles:"",shadowMode:!1,progressive:!0,properties:{id:{type:"string",default:"login-screen",reflect:!0},logoText:{type:"string",default:"STACKS",reflect:!0},subtitle:{type:"string",default:"To begin, click your user name",reflect:!0}},eventTypes:[],bindings:[]});var U=x;class S extends p{render(t){let{escape:e,raw:s,values:c,entries:l}=t,{id:a="notification-popup",title:o="Notifications",showSignup:d=!0}=this._props(),n="";if(n+='<div class="notification-popup" id="',n+=e(a),n+=`" style="display: none;">
|
|
193
193
|
<div class="notification-header">
|
|
194
|
-
<span class="notification-title">`,n+=e(
|
|
194
|
+
<span class="notification-title">`,n+=e(o),n+=`</span>
|
|
195
195
|
<button class="notification-close" onclick="closeNotificationPopup()">×</button>
|
|
196
196
|
</div>
|
|
197
197
|
<div class="notification-content">
|
|
198
198
|
<slot />
|
|
199
199
|
</div>
|
|
200
|
-
`,
|
|
200
|
+
`,d)n+=`
|
|
201
201
|
<div class="notification-signup" id="notification-signup">
|
|
202
202
|
<div class="notification-separator"></div>
|
|
203
203
|
<div class="notification-signup-text">Get updates on new features & releases:</div>
|
|
@@ -260,18 +260,18 @@ var O=globalThis.HTMLElement||class{},R=(t)=>String(t??"").replaceAll("&","&
|
|
|
260
260
|
</div>
|
|
261
261
|
</div>
|
|
262
262
|
@endif
|
|
263
|
-
</div>`,styles:"",shadowMode:!1,progressive:!0,properties:{id:{type:"string",default:"notification-popup",reflect:!0},title:{type:"string",default:"Notifications",reflect:!0},showSignup:{type:"boolean",default:!0,reflect:!0}},eventTypes:[],bindings:[]});var J=S;class E extends p{render(t){let{escape:e,raw:
|
|
263
|
+
</div>`,styles:"",shadowMode:!1,progressive:!0,properties:{id:{type:"string",default:"notification-popup",reflect:!0},title:{type:"string",default:"Notifications",reflect:!0},showSignup:{type:"boolean",default:!0,reflect:!0}},eventTypes:[],bindings:[]});var J=S;class E extends p{render(t){let{escape:e,raw:s,values:c,entries:l}=t,{emoji:a,title:o,description:d}=this._props(),n="";return n+=`<div class="package-item">
|
|
264
264
|
<div class="package-emoji">`,n+=e(a),n+=`</div>
|
|
265
|
-
<div class="package-title">`,n+=e(
|
|
266
|
-
<div class="package-desc">`,n+=e(
|
|
265
|
+
<div class="package-title">`,n+=e(o),n+=`</div>
|
|
266
|
+
<div class="package-desc">`,n+=e(d),n+=`</div>
|
|
267
267
|
</div>`,n}}f(E,{tag:"stacks-package-item",template:`<div class="package-item">
|
|
268
268
|
<div class="package-emoji">{{ emoji }}</div>
|
|
269
269
|
<div class="package-title">{{ title }}</div>
|
|
270
270
|
<div class="package-desc">{{ description }}</div>
|
|
271
|
-
</div>`,styles:"",shadowMode:!1,progressive:!0,properties:{emoji:{type:"string",reflect:!0},title:{type:"string",reflect:!0},description:{type:"string",reflect:!0}},eventTypes:[],bindings:[]});var G=E;class C extends p{render(t){let{escape:e,raw:
|
|
271
|
+
</div>`,styles:"",shadowMode:!1,progressive:!0,properties:{emoji:{type:"string",reflect:!0},title:{type:"string",reflect:!0},description:{type:"string",reflect:!0}},eventTypes:[],bindings:[]});var G=E;class C extends p{render(t){let{escape:e,raw:s,values:c,entries:l}=t,{id:a="start-menu",userName:o="Developer",userImage:d="\uD83D\uDC64"}=this._props(),n="";return n+='<div class="start-menu" id="',n+=e(a),n+=`" style="display: none;">
|
|
272
272
|
<div class="start-menu-header">
|
|
273
|
-
<div class="start-menu-user-image">`,n+=e(
|
|
274
|
-
<div class="start-menu-user-name">`,n+=e(
|
|
273
|
+
<div class="start-menu-user-image">`,n+=e(d),n+=`</div>
|
|
274
|
+
<div class="start-menu-user-name">`,n+=e(o),n+=`</div>
|
|
275
275
|
</div>
|
|
276
276
|
|
|
277
277
|
<div class="start-menu-content">
|
|
@@ -342,29 +342,29 @@ var O=globalThis.HTMLElement||class{},R=(t)=>String(t??"").replaceAll("&","&
|
|
|
342
342
|
</button>
|
|
343
343
|
</slot>
|
|
344
344
|
</div>
|
|
345
|
-
</div>`,styles:"",shadowMode:!1,progressive:!0,properties:{id:{type:"string",default:"start-menu",reflect:!0},userName:{type:"string",default:"Developer",reflect:!0},userImage:{type:"string",default:"\uD83D\uDC64",reflect:!0}},eventTypes:[],bindings:[]});var Z=C;class D extends p{render(t){let{escape:e,raw:
|
|
345
|
+
</div>`,styles:"",shadowMode:!1,progressive:!0,properties:{id:{type:"string",default:"start-menu",reflect:!0},userName:{type:"string",default:"Developer",reflect:!0},userImage:{type:"string",default:"\uD83D\uDC64",reflect:!0}},eventTypes:[],bindings:[]});var Z=C;class D extends p{render(t){let{escape:e,raw:s,values:c,entries:l}=t,{icon:a="\uD83D\uDCC4",label:o,onclick:d,url:n,highlighted:r=!1}=this._props(),i="";if(n)i+=`
|
|
346
346
|
<button
|
|
347
|
-
class="start-menu-item `,
|
|
348
|
-
onclick="window.open('`,
|
|
347
|
+
class="start-menu-item `,i+=e(r?"highlighted":""),i+=`"
|
|
348
|
+
onclick="window.open('`,i+=e(n),i+=`', '_blank')"
|
|
349
349
|
>
|
|
350
|
-
<span class="start-menu-item-icon">`,
|
|
351
|
-
<span class="start-menu-item-label">`,
|
|
350
|
+
<span class="start-menu-item-icon">`,i+=e(a),i+=`</span>
|
|
351
|
+
<span class="start-menu-item-label">`,i+=e(o),i+=`</span>
|
|
352
352
|
</button>
|
|
353
|
-
`;else if(
|
|
353
|
+
`;else if(d)i+=`
|
|
354
354
|
<button
|
|
355
|
-
class="start-menu-item `,
|
|
356
|
-
onclick="`,
|
|
355
|
+
class="start-menu-item `,i+=e(r?"highlighted":""),i+=`"
|
|
356
|
+
onclick="`,i+=e(d),i+=`"
|
|
357
357
|
>
|
|
358
|
-
<span class="start-menu-item-icon">`,
|
|
359
|
-
<span class="start-menu-item-label">`,
|
|
358
|
+
<span class="start-menu-item-icon">`,i+=e(a),i+=`</span>
|
|
359
|
+
<span class="start-menu-item-label">`,i+=e(o),i+=`</span>
|
|
360
360
|
</button>
|
|
361
|
-
`;else
|
|
362
|
-
class="start-menu-item `,
|
|
361
|
+
`;else i+=`<button
|
|
362
|
+
class="start-menu-item `,i+=e(r?"highlighted":""),i+=`"
|
|
363
363
|
>
|
|
364
|
-
<span class="start-menu-item-icon">`,
|
|
365
|
-
<span class="start-menu-item-label">`,
|
|
364
|
+
<span class="start-menu-item-icon">`,i+=e(a),i+=`</span>
|
|
365
|
+
<span class="start-menu-item-label">`,i+=e(o),i+=`</span>
|
|
366
366
|
</button>
|
|
367
|
-
`;return
|
|
367
|
+
`;return i}}f(D,{tag:"stacks-start-menu-item",template:`@if (url)
|
|
368
368
|
<button
|
|
369
369
|
class="start-menu-item {{ highlighted ? 'highlighted' : '' }}"
|
|
370
370
|
onclick="window.open('{{ url }}', '_blank')"
|
|
@@ -387,8 +387,8 @@ var O=globalThis.HTMLElement||class{},R=(t)=>String(t??"").replaceAll("&","&
|
|
|
387
387
|
<span class="start-menu-item-icon">{{ icon }}</span>
|
|
388
388
|
<span class="start-menu-item-label">{{ label }}</span>
|
|
389
389
|
</button>
|
|
390
|
-
@endif`,styles:"",shadowMode:!1,progressive:!0,properties:{icon:{type:"string",default:"\uD83D\uDCC4",reflect:!0},label:{type:"string",reflect:!0},onclick:{type:"string",reflect:!0},url:{type:"string",reflect:!0},highlighted:{type:"boolean",default:!1,reflect:!0}},eventTypes:[],bindings:[]});var
|
|
391
|
-
`,a)
|
|
390
|
+
@endif`,styles:"",shadowMode:!1,progressive:!0,properties:{icon:{type:"string",default:"\uD83D\uDCC4",reflect:!0},label:{type:"string",reflect:!0},onclick:{type:"string",reflect:!0},url:{type:"string",reflect:!0},highlighted:{type:"boolean",default:!1,reflect:!0}},eventTypes:[],bindings:[]});var V=D;class A extends p{render(t){let{escape:e,raw:s,values:c,entries:l}=t,{showStartMenu:a=!0}=this._props(),o="";if(o+=`<div class="taskbar">
|
|
391
|
+
`,a)o+=`
|
|
392
392
|
<button class="start-button" onclick="toggleStartMenu()">
|
|
393
393
|
<div class="start-button-flag">
|
|
394
394
|
<div class="flag-red"></div>
|
|
@@ -398,7 +398,7 @@ var O=globalThis.HTMLElement||class{},R=(t)=>String(t??"").replaceAll("&","&
|
|
|
398
398
|
</div>
|
|
399
399
|
<span>Start</span>
|
|
400
400
|
</button>
|
|
401
|
-
`;return
|
|
401
|
+
`;return o+=`<div class="quick-launch">
|
|
402
402
|
<slot name="quick-launch" />
|
|
403
403
|
</div>
|
|
404
404
|
|
|
@@ -414,7 +414,7 @@ var O=globalThis.HTMLElement||class{},R=(t)=>String(t??"").replaceAll("&","&
|
|
|
414
414
|
</slot>
|
|
415
415
|
<div class="clock" id="clock"></div>
|
|
416
416
|
</div>
|
|
417
|
-
</div>`,
|
|
417
|
+
</div>`,o}}f(A,{tag:"stacks-taskbar",template:`<div class="taskbar">
|
|
418
418
|
@if (showStartMenu)
|
|
419
419
|
<button class="start-button" onclick="toggleStartMenu()">
|
|
420
420
|
<div class="start-button-flag">
|
|
@@ -443,10 +443,10 @@ var O=globalThis.HTMLElement||class{},R=(t)=>String(t??"").replaceAll("&","&
|
|
|
443
443
|
</slot>
|
|
444
444
|
<div class="clock" id="clock"></div>
|
|
445
445
|
</div>
|
|
446
|
-
</div>`,styles:"",shadowMode:!1,progressive:!0,properties:{showStartMenu:{type:"boolean",default:!0,reflect:!0}},eventTypes:[],bindings:[]});var
|
|
446
|
+
</div>`,styles:"",shadowMode:!1,progressive:!0,properties:{showStartMenu:{type:"boolean",default:!0,reflect:!0}},eventTypes:[],bindings:[]});var X=A;class T extends p{render(t){let{escape:e,raw:s,values:c,entries:l}=t,{id:a,icon:o="\uD83D\uDCC4",title:d,left:n="100px",top:r="80px",width:i="600px",height:m="500px",style:g=""}=this._props(),u="";if(u+='<div id="window-',u+=e(a),u+='" class="window" style="',g)u+=e(g);else u+="left: ",u+=e(n),u+="; top: ",u+=e(r),u+="; width: ",u+=e(i),u+="; height: ",u+=e(m),u+=";";return u+=`">
|
|
447
447
|
<div class="window-titlebar">
|
|
448
|
-
<div class="window-icon">`,u+=e(
|
|
449
|
-
<div class="window-title">`,u+=e(
|
|
448
|
+
<div class="window-icon">`,u+=e(o),u+=`</div>
|
|
449
|
+
<div class="window-title">`,u+=e(d),u+=`</div>
|
|
450
450
|
<div class="window-controls">
|
|
451
451
|
<button class="minimize window-control" onclick="minimizeWindow('`,u+=e(a),u+=`')">_</button>
|
|
452
452
|
<button class="maximize window-control" onclick="toggleMaximizeWindow('`,u+=e(a),u+=`')">□</button>
|
|
@@ -456,7 +456,7 @@ var O=globalThis.HTMLElement||class{},R=(t)=>String(t??"").replaceAll("&","&
|
|
|
456
456
|
<div class="window-content">
|
|
457
457
|
<slot />
|
|
458
458
|
</div>
|
|
459
|
-
</div>`,u}}f(
|
|
459
|
+
</div>`,u}}f(T,{tag:"stacks-window",template:`<div id="window-{{ id }}" class="window" style="@if(style){{ style }}@else left: {{ left }}; top: {{ top }}; width: {{ width }}; height: {{ height }};@endif">
|
|
460
460
|
<div class="window-titlebar">
|
|
461
461
|
<div class="window-icon">{{ icon }}</div>
|
|
462
462
|
<div class="window-title">{{ title }}</div>
|
|
@@ -469,6 +469,6 @@ var O=globalThis.HTMLElement||class{},R=(t)=>String(t??"").replaceAll("&","&
|
|
|
469
469
|
<div class="window-content">
|
|
470
470
|
<slot />
|
|
471
471
|
</div>
|
|
472
|
-
</div>`,styles:"",shadowMode:!1,progressive:!0,properties:{id:{type:"string",reflect:!0},icon:{type:"string",default:"\uD83D\uDCC4",reflect:!0},title:{type:"string",reflect:!0},left:{type:"string",default:"100px",reflect:!0},top:{type:"string",default:"80px",reflect:!0},width:{type:"string",default:"600px",reflect:!0},height:{type:"string",default:"500px",reflect:!0},style:{type:"string",default:"",reflect:!0}},eventTypes:[],bindings:[]});var
|
|
472
|
+
</div>`,styles:"",shadowMode:!1,progressive:!0,properties:{id:{type:"string",reflect:!0},icon:{type:"string",default:"\uD83D\uDCC4",reflect:!0},title:{type:"string",reflect:!0},left:{type:"string",default:"100px",reflect:!0},top:{type:"string",default:"80px",reflect:!0},width:{type:"string",default:"600px",reflect:!0},height:{type:"string",default:"500px",reflect:!0},style:{type:"string",default:"",reflect:!0}},eventTypes:[],bindings:[]});var Q=T;export{b as ContextMenu,q as ContextMenuElement,h as ContextMenuItem,W as ContextMenuItemElement,y as DesktopIcon,B as DesktopIconElement,_ as FeatureButton,H as FeatureButtonElement,w as InputGroup,K as InputGroupElement,k as LoginForm,F as LoginFormElement,x as LoginScreen,U as LoginScreenElement,S as NotificationPopup,J as NotificationPopupElement,E as PackageItem,G as PackageItemElement,C as StartMenu,Z as StartMenuElement,D as StartMenuItem,V as StartMenuItemElement,A as Taskbar,X as TaskbarElement,T as Window,Q as WindowElement};
|
|
473
473
|
|
|
474
|
-
//# debugId=
|
|
474
|
+
//# debugId=7B05802856AA6D3064756E2164756E21
|
package/dist/bundle.js.map
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["runtime.js", "stacks-context-menu.js", "stacks-context-menu-item.js", "stacks-desktop-icon.js", "stacks-feature-button.js", "stacks-input-group.js", "stacks-login-form.js", "stacks-login-screen.js", "stacks-notification-popup.js", "stacks-package-item.js", "stacks-start-menu.js", "stacks-start-menu-item.js", "stacks-taskbar.js", "stacks-window.js"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"const HTMLElementBase = globalThis.HTMLElement || class {};\n\nconst escapeHTML = (value) => String(value ?? '')\n .replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>')\n .replaceAll('\"', '"').replaceAll(\"'\", ''');\n\nconst valueAt = (host, path) => {\n const parts = path.trim().split('.');\n const first = parts.shift();\n // Render bindings read declared props, including attributes whose names\n // also belong to the native DOM API. The public element keeps that API.\n let value = host._values && Object.prototype.hasOwnProperty.call(host._values, first)\n ? host._values[first]\n : host[first];\n for (const part of parts) value = value?.[part];\n return typeof value === 'function' ? value.call(host) : value;\n};\n\nconst deserialize = (value, type, fallback) => {\n if (value === null) return type === 'boolean' ? false : fallback;\n if (type === 'boolean') return value !== 'false' && value !== '0';\n if (type === 'number') return Number(value);\n if (type === 'object' || type === 'array') {\n try { return JSON.parse(value); }\n catch { return fallback; }\n }\n return value;\n};\n\nconst serialize = (value, type) => {\n if (value == null || value === false) return null;\n if (type === 'boolean') return '';\n if (type === 'object' || type === 'array') return JSON.stringify(value);\n return String(value);\n};\n\nconst cloneDefault = (value, type) => {\n if (value == null || (type !== 'object' && type !== 'array')) return value;\n if (typeof structuredClone === 'function') return structuredClone(value);\n return JSON.parse(JSON.stringify(value));\n};\n\nconst defaultFor = property => cloneDefault(\n property.default ?? ({ string: '', number: 0, boolean: false, object: {}, array: [] })[property.type],\n property.type,\n);\n\nexport class StxElement extends HTMLElementBase {\n static definition = {};\n static get observedAttributes() { return this.definition.observedAttributes || []; }\n\n constructor() {\n super();\n this._values = Object.create(null);\n this._reflecting = false;\n this._connected = false;\n this._hasConnected = false;\n this._initializing = false;\n this._updatePending = false;\n this._listeners = new Map();\n const definition = this.constructor.definition;\n for (const [name, property] of Object.entries(definition.properties || {})) {\n this._values[name] = defaultFor(property);\n }\n if (definition.shadowMode && this.attachShadow && !this.shadowRoot) {\n this._closedRoot = this.attachShadow({ mode: definition.shadowMode });\n }\n }\n\n get updateComplete() { return this._updateComplete || Promise.resolve(); }\n get renderRoot() { return this._closedRoot || this.shadowRoot || this; }\n\n connectedCallback() {\n if (this._connected) return;\n this._connected = true;\n this._initializing = true;\n const definition = this.constructor.definition;\n for (const [name, property] of Object.entries(definition.properties || {})) {\n const attribute = property.attribute === false ? null : (property.attribute || name.replace(/[A-Z]/g, letter => '-' + letter.toLowerCase()));\n if (attribute && this.hasAttribute?.(attribute)) this._values[name] = deserialize(this.getAttribute(attribute), property.type, defaultFor(property));\n }\n // Properties assigned before customElements.define() become own properties.\n // Upgrade them after attributes so imperative state wins, matching the\n // platform's property-first custom-element initialization convention.\n for (const name of Object.keys(definition.properties || {})) this._upgradeProperty(name);\n this._initializing = false;\n const root = this.renderRoot;\n const hasMarkup = [...(root.childNodes || [])].some(node => node.nodeType !== 3 || node.textContent.trim());\n const firstConnection = !this._hasConnected;\n if (!(firstConnection && definition.progressive && hasMarkup)) this._render();\n else this._upgradeDeclarativeEvents();\n this._bindEvents();\n if (firstConnection) {\n this._hasConnected = true;\n this.setAttribute?.('hydrated', '');\n this.dispatchEvent?.(new CustomEvent('stx:hydrated', { bubbles: true, composed: true }));\n }\n // Called last, so a component that acquires something sees its own rendered\n // markup and its events already bound. Reported rather than rethrown: a\n // component that fails to set up must not take the element down with it.\n try { this.onConnect?.(); }\n catch (error) { console.error('[stx] onConnect failed', error); }\n }\n\n disconnectedCallback() {\n this._connected = false;\n // Called before the framework releases anything, so the element is still\n // intact for a component that needs to read it on the way out, and inside\n // try/finally so a throwing hook cannot leak the framework's own listeners.\n try { this.onDisconnect?.(); }\n catch (error) { console.error('[stx] onDisconnect failed', error); }\n finally {\n for (const [event, listener] of this._listeners) this.renderRoot.removeEventListener(event, listener);\n this._listeners.clear();\n }\n }\n\n attributeChangedCallback(attribute, oldValue, newValue) {\n if (oldValue === newValue || this._reflecting) return;\n const definition = this.constructor.definition;\n const name = definition.attributeToProperty?.[attribute];\n if (!name) return;\n const property = definition.properties[name];\n const value = deserialize(newValue, property.type, defaultFor(property));\n if (!Object.is(this._values[name], value)) {\n this._values[name] = value;\n this.requestUpdate();\n }\n }\n\n /**\n * The props a compiled render reads.\n *\n * Its own method rather than _values directly, so a component that sets a\n * property before upgrade still sees it, and so the generated code has one\n * name to depend on rather than a private field's shape.\n */\n _props() {\n return this._values;\n }\n\n requestUpdate() {\n if (!this._connected || this._initializing || this._updatePending) return this.updateComplete;\n this._updatePending = true;\n this._updateComplete = new Promise((resolve) => {\n queueMicrotask(() => {\n this._updatePending = false;\n if (this._connected) this._render();\n resolve();\n });\n });\n return this._updateComplete;\n }\n\n emit(name, detail, options = {}) {\n return this.dispatchEvent(new CustomEvent(name, {\n detail, bubbles: true, composed: true, ...options,\n }));\n }\n\n _upgradeProperty(name) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) return;\n const value = this[name];\n delete this[name];\n this[name] = value;\n }\n\n _upgradeDeclarativeEvents() {\n for (const element of this.renderRoot.querySelectorAll?.('*') || []) {\n const names = element.getAttributeNames?.() || [...(element.attributes || [])].filter(Boolean).map(attribute => attribute.name);\n for (const attributeName of names) {\n if (!attributeName?.startsWith('@')) continue;\n const [event, ...modifiers] = attributeName.slice(1).split('.');\n element.setAttribute('data-stx-on-' + event, element.getAttribute(attributeName));\n if (modifiers.length) element.setAttribute('data-stx-mod-' + event, modifiers.join(' '));\n element.removeAttribute(attributeName);\n }\n }\n }\n\n _bindEvents() {\n for (const event of this.constructor.definition.eventTypes || []) {\n if (this._listeners.has(event)) continue;\n const listener = ($event) => {\n const selector = '[data-stx-on-' + event + ']';\n const target = $event.target?.closest?.(selector);\n if (!target || !this.renderRoot.contains(target)) return;\n const modifiers = (target.getAttribute('data-stx-mod-' + event) || '').split(' ');\n if (modifiers.includes('prevent')) $event.preventDefault();\n if (modifiers.includes('stop')) $event.stopPropagation();\n const method = target.getAttribute('data-stx-on-' + event);\n if (typeof this[method] === 'function') this[method]($event);\n };\n this.renderRoot.addEventListener(event, listener);\n this._listeners.set(event, listener);\n }\n }\n\n _render() {\n const definition = this.constructor.definition;\n const root = this.renderRoot;\n const active = root.activeElement || (root.contains?.(globalThis.document?.activeElement) ? globalThis.document.activeElement : null);\n const focusKey = active && (active.getAttribute?.('data-key') || active.id || active.getAttribute?.('name'));\n const selection = active && 'selectionStart' in active ? [active.selectionStart, active.selectionEnd] : null;\n // A compiled component renders itself: the control flow and the derived\n // values were turned into JavaScript at build time, so there is nothing to\n // interpret here and nothing that needs an eval the page's CSP forbids.\n // The string template remains for components that carry no logic.\n let html = typeof this.render === 'function'\n ? this.render(RENDER_HELPERS)\n : definition.template\n .replace(new RegExp(\"\\\\{!!\\\\s*([\\\\w$.]+)\\\\s*!!\\\\}\", 'g'), (_match, expression) => String(valueAt(this, expression) ?? ''))\n .replace(new RegExp(\"\\\\{\\\\{\\\\s*([\\\\w$.]+)\\\\s*\\\\}\\\\}\", 'g'), (_match, expression) => escapeHTML(valueAt(this, expression)));\n if (definition.shadowMode && definition.styles) html = '<style>' + definition.styles + '</style>' + html;\n root.innerHTML = html;\n this._applyBindings();\n this._bindEvents();\n if (focusKey) {\n const escaped = globalThis.CSS?.escape ? globalThis.CSS.escape(focusKey) : focusKey.replace(/[\"\\\\]/g, '\\$&');\n const next = root.querySelector('[data-key=\"' + escaped + '\"],#' + escaped + ',[name=\"' + escaped + '\"]');\n next?.focus?.();\n if (selection && next?.setSelectionRange) next.setSelectionRange(selection[0], selection[1]);\n }\n this.dispatchEvent?.(new CustomEvent('stx:updated', { bubbles: false }));\n }\n\n _applyBindings() {\n for (const binding of this.constructor.definition.bindings || []) {\n const element = this.renderRoot.querySelector('[data-stx-bind-' + binding.id + ']');\n if (!element) continue;\n const value = valueAt(this, binding.expression);\n if (binding.name === 'class') element.className = value || '';\n else if (binding.name === 'style' && typeof value === 'object') {\n Object.assign(element.style, value);\n }\n else if (typeof value === 'boolean') {\n element.toggleAttribute(binding.name, value);\n if (binding.name in element) element[binding.name] = value;\n }\n else if (value == null || value === false) element.removeAttribute(binding.name);\n else element.setAttribute(binding.name, String(value));\n }\n }\n}\n\n/**\n * What a compiled render is handed.\n *\n * Passed in rather than closed over so the generated code names no globals, and\n * a component module stays readable on its own: __escape is visibly a\n * parameter, not something the bundler happened to leave in scope.\n */\nconst RENDER_HELPERS = {\n escape: escapeHTML,\n // The raw form is the author declaring the value is markup. Null becomes an\n // empty string rather than the word \"null\", which is the only sensible\n // reading of a missing fragment.\n raw: (value) => String(value ?? ''),\n // A loop over something absent runs zero times. Throwing here would fail a\n // whole page over one empty list, which is never what the author meant.\n values: (value) => value == null ? [] : (value[Symbol.iterator] ? value : Object.values(value)),\n entries: (value) => value == null ? [] : (Array.isArray(value) ? value.entries() : Object.entries(value)),\n};\n\nexport function defineComponent(Component, definition) {\n const properties = definition.properties || {};\n const attributeToProperty = {};\n const observedAttributes = [];\n for (const [name, property] of Object.entries(properties)) {\n const attribute = property.attribute === false ? null : (property.attribute || name.replace(/[A-Z]/g, letter => '-' + letter.toLowerCase()));\n if (attribute) {\n attributeToProperty[attribute] = name;\n observedAttributes.push(attribute);\n }\n // A style prop is an attribute value, not a replacement for the browser's\n // CSSStyleDeclaration. Native event handler accessors must survive too.\n if (name in HTMLElementBase.prototype) {\n if (!attribute) throw new TypeError('STX prop \"' + name + '\" overlaps the native DOM API and needs an attribute binding');\n continue;\n }\n Object.defineProperty(Component.prototype, name, {\n configurable: true,\n enumerable: true,\n get() { return this._values[name]; },\n set(value) {\n const oldValue = this._values[name];\n if (Object.is(oldValue, value)) return;\n this._values[name] = value;\n if (property.reflect && attribute && !this._reflecting) {\n const serialized = serialize(value, property.type);\n this._reflecting = true;\n if (serialized === null) this.removeAttribute(attribute);\n else this.setAttribute(attribute, serialized);\n this._reflecting = false;\n }\n this.requestUpdate();\n this.dispatchEvent?.(new CustomEvent(name + '-changed', {\n detail: { value, oldValue }, bubbles: true, composed: true,\n }));\n },\n });\n }\n Component.definition = { ...definition, attributeToProperty, observedAttributes };\n const registry = globalThis.customElements || globalThis.window?.customElements;\n if (registry && !registry.get(definition.tag)) {\n registry.define(definition.tag, Component);\n }\n return Component;\n}\n",
|
|
5
|
+
"const HTMLElementBase = globalThis.HTMLElement || class {};\n\nconst escapeHTML = (value) => String(value ?? '')\n .replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>')\n .replaceAll('\"', '"').replaceAll(\"'\", ''');\n\nconst valueAt = (host, path) => {\n const parts = path.trim().split('.');\n if (parts[0] === 'this') parts.shift();\n if (!parts.length) return host;\n const first = parts.shift();\n // Render bindings read declared props, including attributes whose names\n // also belong to the native DOM API. The public element keeps that API.\n let value = host._values && Object.prototype.hasOwnProperty.call(host._values, first)\n ? host._values[first]\n : host[first];\n for (const part of parts) value = value?.[part];\n return typeof value === 'function' ? value.call(host) : value;\n};\n\nconst deserialize = (value, type, fallback) => {\n if (value === null) return type === 'boolean' ? false : fallback;\n if (type === 'boolean') return value !== 'false' && value !== '0';\n if (type === 'number') return Number(value);\n if (type === 'object' || type === 'array') {\n try { return JSON.parse(value); }\n catch { return fallback; }\n }\n return value;\n};\n\nconst serialize = (value, type) => {\n if (value == null || value === false) return null;\n if (type === 'boolean') return '';\n if (type === 'object' || type === 'array') return JSON.stringify(value);\n return String(value);\n};\n\nconst cloneDefault = (value, type) => {\n if (value == null || (type !== 'object' && type !== 'array')) return value;\n if (typeof structuredClone === 'function') return structuredClone(value);\n return JSON.parse(JSON.stringify(value));\n};\n\nconst defaultFor = property => cloneDefault(\n property.default ?? ({ string: '', number: 0, boolean: false, object: {}, array: [] })[property.type],\n property.type,\n);\n\nexport class StxElement extends HTMLElementBase {\n static definition = {};\n static get observedAttributes() { return this.definition.observedAttributes || []; }\n\n constructor() {\n super();\n this._values = Object.create(null);\n this._reflecting = false;\n this._connected = false;\n this._hasConnected = false;\n this._initializing = false;\n this._updatePending = false;\n this._listeners = new Map();\n const definition = this.constructor.definition;\n for (const [name, property] of Object.entries(definition.properties || {})) {\n this._values[name] = defaultFor(property);\n }\n if (definition.shadowMode && this.attachShadow && !this.shadowRoot) {\n this._closedRoot = this.attachShadow({ mode: definition.shadowMode });\n }\n }\n\n get updateComplete() { return this._updateComplete || Promise.resolve(); }\n get renderRoot() { return this._closedRoot || this.shadowRoot || this; }\n\n connectedCallback() {\n if (this._connected) return;\n this._connected = true;\n this._initializing = true;\n const definition = this.constructor.definition;\n for (const [name, property] of Object.entries(definition.properties || {})) {\n const attribute = property.attribute === false ? null : (property.attribute || name.replace(/[A-Z]/g, letter => '-' + letter.toLowerCase()));\n if (attribute && this.hasAttribute?.(attribute)) this._values[name] = deserialize(this.getAttribute(attribute), property.type, defaultFor(property));\n }\n // Properties assigned before customElements.define() become own properties.\n // Upgrade them after attributes so imperative state wins, matching the\n // platform's property-first custom-element initialization convention.\n for (const name of Object.keys(definition.properties || {})) this._upgradeProperty(name);\n this._initializing = false;\n const root = this.renderRoot;\n const hasMarkup = [...(root.childNodes || [])].some(node => node.nodeType !== 3 || node.textContent.trim());\n const firstConnection = !this._hasConnected;\n if (!(firstConnection && definition.progressive && hasMarkup)) this._render();\n else this._upgradeDeclarativeEvents();\n this._bindEvents();\n if (firstConnection) {\n this._hasConnected = true;\n this.setAttribute?.('hydrated', '');\n this.dispatchEvent?.(new CustomEvent('stx:hydrated', { bubbles: true, composed: true }));\n }\n // Called last, so a component that acquires something sees its own rendered\n // markup and its events already bound. Reported rather than rethrown: a\n // component that fails to set up must not take the element down with it.\n try { this.onConnect?.(); }\n catch (error) { console.error('[stx] onConnect failed', error); }\n }\n\n disconnectedCallback() {\n this._connected = false;\n // Called before the framework releases anything, so the element is still\n // intact for a component that needs to read it on the way out, and inside\n // try/finally so a throwing hook cannot leak the framework's own listeners.\n try { this.onDisconnect?.(); }\n catch (error) { console.error('[stx] onDisconnect failed', error); }\n finally {\n for (const [event, listener] of this._listeners) this.renderRoot.removeEventListener(event, listener);\n this._listeners.clear();\n }\n }\n\n attributeChangedCallback(attribute, oldValue, newValue) {\n if (oldValue === newValue || this._reflecting) return;\n const definition = this.constructor.definition;\n const name = definition.attributeToProperty?.[attribute];\n if (!name) return;\n const property = definition.properties[name];\n const value = deserialize(newValue, property.type, defaultFor(property));\n if (!Object.is(this._values[name], value)) {\n this._values[name] = value;\n this.requestUpdate();\n }\n }\n\n /**\n * The props a compiled render reads.\n *\n * Its own method rather than _values directly, so a component that sets a\n * property before upgrade still sees it, and so the generated code has one\n * name to depend on rather than a private field's shape.\n */\n _props() {\n return this._values;\n }\n\n requestUpdate() {\n if (!this._connected || this._initializing || this._updatePending) return this.updateComplete;\n this._updatePending = true;\n this._updateComplete = new Promise((resolve) => {\n queueMicrotask(() => {\n this._updatePending = false;\n if (this._connected) this._render();\n resolve();\n });\n });\n return this._updateComplete;\n }\n\n emit(name, detail, options = {}) {\n return this.dispatchEvent(new CustomEvent(name, {\n detail, bubbles: true, composed: true, ...options,\n }));\n }\n\n _upgradeProperty(name) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) return;\n const value = this[name];\n delete this[name];\n this[name] = value;\n }\n\n _upgradeDeclarativeEvents() {\n for (const element of this.renderRoot.querySelectorAll?.('*') || []) {\n const names = element.getAttributeNames?.() || [...(element.attributes || [])].filter(Boolean).map(attribute => attribute.name);\n for (const attributeName of names) {\n if (!attributeName?.startsWith('@')) continue;\n const [event, ...modifiers] = attributeName.slice(1).split('.');\n element.setAttribute('data-stx-on-' + event, element.getAttribute(attributeName));\n if (modifiers.length) element.setAttribute('data-stx-mod-' + event, modifiers.join(' '));\n element.removeAttribute(attributeName);\n }\n }\n }\n\n _bindEvents() {\n for (const event of this.constructor.definition.eventTypes || []) {\n if (this._listeners.has(event)) continue;\n const listener = ($event) => {\n const selector = '[data-stx-on-' + event + ']';\n const target = $event.target?.closest?.(selector);\n if (!target || !this.renderRoot.contains(target)) return;\n const modifiers = (target.getAttribute('data-stx-mod-' + event) || '').split(' ');\n if (modifiers.includes('prevent')) $event.preventDefault();\n if (modifiers.includes('stop')) $event.stopPropagation();\n const method = target.getAttribute('data-stx-on-' + event);\n if (typeof this[method] === 'function') this[method]($event);\n };\n this.renderRoot.addEventListener(event, listener);\n this._listeners.set(event, listener);\n }\n }\n\n _render() {\n const definition = this.constructor.definition;\n const root = this.renderRoot;\n const active = root.activeElement || (root.contains?.(globalThis.document?.activeElement) ? globalThis.document.activeElement : null);\n const focusAttribute = active?.getAttribute?.('data-key') ? 'data-key' : active?.id ? 'id' : 'name';\n const focusKey = active?.getAttribute?.(focusAttribute);\n const focusValue = focusAttribute === 'name' && active?.type === 'radio' ? active.value : null;\n const selectionStart = active?.selectionStart, selectionEnd = active?.selectionEnd;\n const selection = Number.isInteger(selectionStart) && Number.isInteger(selectionEnd)\n ? [selectionStart, selectionEnd, active.selectionDirection] : null;\n // A compiled component renders itself: the control flow and the derived\n // values were turned into JavaScript at build time, so there is nothing to\n // interpret here and nothing that needs an eval the page's CSP forbids.\n // The string template remains for components that carry no logic.\n let html = typeof this.render === 'function'\n ? this.render(RENDER_HELPERS)\n : definition.template\n .replace(new RegExp(\"\\\\{!!\\\\s*([\\\\w$.]+)\\\\s*!!\\\\}\", 'g'), (_match, expression) => String(valueAt(this, expression) ?? ''))\n .replace(new RegExp(\"\\\\{\\\\{\\\\s*([\\\\w$.]+)\\\\s*\\\\}\\\\}\", 'g'), (_match, expression) => escapeHTML(valueAt(this, expression)));\n if (definition.shadowMode && definition.styles) html = '<style>' + definition.styles + '</style>' + html;\n root.innerHTML = html;\n this._applyBindings();\n this._bindEvents();\n if (focusKey) {\n const escaped = globalThis.CSS?.escape ? globalThis.CSS.escape(focusKey) : focusKey.replace(/[\"\\\\]/g, '\\$&');\n const selector = '[' + focusAttribute + '=\"' + escaped + '\"]';\n // Name-only radio groups share a name, but their chosen member must stay focused.\n const next = focusValue === null ? root.querySelector(selector)\n : [...root.querySelectorAll(selector)].find(element => element.type === 'radio' && element.value === focusValue);\n next?.focus?.();\n // Several input types expose this method but reject text selection. A\n // rerender can also change a text input into one of those types.\n if (selection && Number.isInteger(next?.selectionStart) && Number.isInteger(next?.selectionEnd) && typeof next?.setSelectionRange === 'function')\n next.setSelectionRange(selection[0], selection[1], selection[2] || 'none');\n }\n this.dispatchEvent?.(new CustomEvent('stx:updated', { bubbles: false }));\n }\n\n _applyBindings() {\n for (const binding of this.constructor.definition.bindings || []) {\n const element = this.renderRoot.querySelector('[data-stx-bind-' + binding.id + ']');\n if (!element) continue;\n const value = valueAt(this, binding.expression);\n if (binding.name === 'class') element.className = value || '';\n else if (binding.name === 'style' && typeof value === 'object') {\n Object.assign(element.style, value);\n }\n else if (typeof value === 'boolean') {\n element.toggleAttribute(binding.name, value);\n if (binding.name in element) element[binding.name] = value;\n }\n else if (value == null || value === false) element.removeAttribute(binding.name);\n else element.setAttribute(binding.name, String(value));\n }\n }\n}\n\n/**\n * What a compiled render is handed.\n *\n * Passed in rather than closed over so the generated code names no globals, and\n * a component module stays readable on its own: __escape is visibly a\n * parameter, not something the bundler happened to leave in scope.\n */\nconst RENDER_HELPERS = {\n escape: escapeHTML,\n // The raw form is the author declaring the value is markup. Null becomes an\n // empty string rather than the word \"null\", which is the only sensible\n // reading of a missing fragment.\n raw: (value) => String(value ?? ''),\n // A loop over something absent runs zero times. Throwing here would fail a\n // whole page over one empty list, which is never what the author meant.\n values: (value) => value == null ? [] : (value[Symbol.iterator] ? value : Object.values(value)),\n entries: (value) => value == null ? [] : (Array.isArray(value) ? value.entries() : Object.entries(value)),\n};\n\nexport function defineComponent(Component, definition) {\n const properties = definition.properties || {};\n const attributeToProperty = {};\n const observedAttributes = [];\n for (const [name, property] of Object.entries(properties)) {\n const attribute = property.attribute === false ? null : (property.attribute || name.replace(/[A-Z]/g, letter => '-' + letter.toLowerCase()));\n if (attribute) {\n attributeToProperty[attribute] = name;\n observedAttributes.push(attribute);\n }\n // A style prop is an attribute value, not a replacement for the browser's\n // CSSStyleDeclaration. Native event handler accessors must survive too.\n if (name in HTMLElementBase.prototype) {\n if (!attribute) throw new TypeError('STX prop \"' + name + '\" overlaps the native DOM API and needs an attribute binding');\n continue;\n }\n Object.defineProperty(Component.prototype, name, {\n configurable: true,\n enumerable: true,\n get() { return this._values[name]; },\n set(value) {\n const oldValue = this._values[name];\n if (Object.is(oldValue, value)) return;\n this._values[name] = value;\n if (property.reflect && attribute && !this._reflecting) {\n const serialized = serialize(value, property.type);\n this._reflecting = true;\n if (serialized === null) this.removeAttribute(attribute);\n else this.setAttribute(attribute, serialized);\n this._reflecting = false;\n }\n this.requestUpdate();\n this.dispatchEvent?.(new CustomEvent(name + '-changed', {\n detail: { value, oldValue }, bubbles: true, composed: true,\n }));\n },\n });\n }\n Component.definition = { ...definition, attributeToProperty, observedAttributes };\n const registry = globalThis.customElements || globalThis.window?.customElements;\n if (registry && !registry.get(definition.tag)) {\n registry.define(definition.tag, Component);\n }\n return Component;\n}\n",
|
|
6
6
|
"import { StxElement, defineComponent } from './runtime.js';\n\n/** ContextMenu web component generated from ContextMenu.stx. */\nexport class ContextMenu extends StxElement {\n\n render(__helpers) {\n const { escape: __escape, raw: __raw, values: __values, entries: __entries } = __helpers;\n const { id } = this._props();\n let out = \"\";\n out += '<div class=\"context-menu\" id=\"';\n out += __escape(id);\n out += `\" style=\"display: none;\">\n <slot />\n </div>`;\n return out;\n }\n\n}\n\ndefineComponent(ContextMenu, {\n \"tag\": \"stacks-context-menu\",\n \"template\": \"<div class=\\\"context-menu\\\" id=\\\"{{ id }}\\\" style=\\\"display: none;\\\">\\n <slot />\\n </div>\",\n \"styles\": \"\",\n \"shadowMode\": false,\n \"progressive\": true,\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"reflect\": true\n }\n },\n \"eventTypes\": [],\n \"bindings\": []\n});\nexport default ContextMenu;\n",
|
|
7
7
|
"import { StxElement, defineComponent } from './runtime.js';\n\n/** ContextMenuItem web component generated from ContextMenuItem.stx. */\nexport class ContextMenuItem extends StxElement {\n\n render(__helpers) {\n const { escape: __escape, raw: __raw, values: __values, entries: __entries } = __helpers;\n const { icon = \"\", label, onclick, hasSubmenu = false } = this._props();\n let out = \"\";\n if (hasSubmenu) {\n out += `\n <div class=\"context-menu-item has-submenu\">\n `;\n if (icon) {\n out += `\n <div class=\"context-menu-item-icon\">`;\n out += __escape(icon);\n out += `</div>\n `;\n }\n out += \"<div>\";\n out += __escape(label);\n out += `</div>\n <div class=\"context-submenu\">\n <slot />\n </div>\n </div>\n `;\n } else {\n out += '<button class=\"context-menu-item\" ';\n if (onclick) {\n out += 'onclick=\"';\n out += __escape(onclick);\n out += '\"';\n }\n out += `>\n `;\n if (icon) {\n out += `\n <div class=\"context-menu-item-icon\">`;\n out += __escape(icon);\n out += `</div>\n `;\n }\n out += \"<div>\";\n out += __escape(label);\n out += `</div>\n </button>\n `;\n }\n return out;\n }\n\n}\n\ndefineComponent(ContextMenuItem, {\n \"tag\": \"stacks-context-menu-item\",\n \"template\": \"@if (hasSubmenu)\\n <div class=\\\"context-menu-item has-submenu\\\">\\n @if (icon)\\n <div class=\\\"context-menu-item-icon\\\">{{ icon }}</div>\\n @endif\\n <div>{{ label }}</div>\\n <div class=\\\"context-submenu\\\">\\n <slot />\\n </div>\\n </div>\\n @else\\n <button class=\\\"context-menu-item\\\" @if (onclick)onclick=\\\"{{ onclick }}\\\"@endif>\\n @if (icon)\\n <div class=\\\"context-menu-item-icon\\\">{{ icon }}</div>\\n @endif\\n <div>{{ label }}</div>\\n </button>\\n @endif\",\n \"styles\": \"\",\n \"shadowMode\": false,\n \"progressive\": true,\n \"properties\": {\n \"icon\": {\n \"type\": \"string\",\n \"default\": \"\",\n \"reflect\": true\n },\n \"label\": {\n \"type\": \"string\",\n \"reflect\": true\n },\n \"onclick\": {\n \"type\": \"string\",\n \"reflect\": true\n },\n \"hasSubmenu\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"reflect\": true\n }\n },\n \"eventTypes\": [],\n \"bindings\": []\n});\nexport default ContextMenuItem;\n",
|
|
8
8
|
"import { StxElement, defineComponent } from './runtime.js';\n\n/** DesktopIcon web component generated from DesktopIcon.stx. */\nexport class DesktopIcon extends StxElement {\n\n render(__helpers) {\n const { escape: __escape, raw: __raw, values: __values, entries: __entries } = __helpers;\n const { id, icon = \"\\uD83D\\uDCC4\", label, type = \"window\", section = \"\", url = \"\", onclick, left = \"20px\", top = \"20px\", style = \"\" } = this._props();\n let out = \"\";\n out += `<button\n class=\"desktop-icon\"\n data-icon-id=\"`;\n out += __escape(id);\n out += `\"\n data-icon-type=\"`;\n out += __escape(type);\n out += `\"\n data-icon-section=\"`;\n out += __escape(section);\n out += `\"\n data-icon-url=\"`;\n out += __escape(url);\n out += `\"\n style=\"`;\n if (style) {\n out += __escape(style);\n } else {\n out += \"left: \";\n out += __escape(left);\n out += \"; top: \";\n out += __escape(top);\n out += \";\";\n }\n out += `\"\n `;\n if (onclick) {\n out += `\n onclick=\"`;\n out += __escape(onclick);\n out += `\"\n `;\n }\n out += `>\n <div class=\"desktop-icon-image\">`;\n out += __escape(icon);\n out += `</div>\n <div class=\"desktop-icon-label\">`;\n out += __escape(label);\n out += `</div>\n </button>`;\n return out;\n }\n\n}\n\ndefineComponent(DesktopIcon, {\n \"tag\": \"stacks-desktop-icon\",\n \"template\": \"<button\\n class=\\\"desktop-icon\\\"\\n data-icon-id=\\\"{{ id }}\\\"\\n data-icon-type=\\\"{{ type }}\\\"\\n data-icon-section=\\\"{{ section }}\\\"\\n data-icon-url=\\\"{{ url }}\\\"\\n style=\\\"@if(style){{ style }}@else left: {{ left }}; top: {{ top }};@endif\\\"\\n @if (onclick)\\n onclick=\\\"{{ onclick }}\\\"\\n @endif\\n >\\n <div class=\\\"desktop-icon-image\\\">{{ icon }}</div>\\n <div class=\\\"desktop-icon-label\\\">{{ label }}</div>\\n </button>\",\n \"styles\": \"\",\n \"shadowMode\": false,\n \"progressive\": true,\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"reflect\": true\n },\n \"icon\": {\n \"type\": \"string\",\n \"default\": \"📄\",\n \"reflect\": true\n },\n \"label\": {\n \"type\": \"string\",\n \"reflect\": true\n },\n \"type\": {\n \"type\": \"string\",\n \"default\": \"window\",\n \"reflect\": true\n },\n \"section\": {\n \"type\": \"string\",\n \"default\": \"\",\n \"reflect\": true\n },\n \"url\": {\n \"type\": \"string\",\n \"default\": \"\",\n \"reflect\": true\n },\n \"onclick\": {\n \"type\": \"string\",\n \"reflect\": true\n },\n \"left\": {\n \"type\": \"string\",\n \"default\": \"20px\",\n \"reflect\": true\n },\n \"top\": {\n \"type\": \"string\",\n \"default\": \"20px\",\n \"reflect\": true\n },\n \"style\": {\n \"type\": \"string\",\n \"default\": \"\",\n \"reflect\": true\n }\n },\n \"eventTypes\": [],\n \"bindings\": []\n});\nexport default DesktopIcon;\n",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"import { StxElement, defineComponent } from './runtime.js';\n\n/** Taskbar web component generated from Taskbar.stx. */\nexport class Taskbar extends StxElement {\n\n render(__helpers) {\n const { escape: __escape, raw: __raw, values: __values, entries: __entries } = __helpers;\n const { showStartMenu = true } = this._props();\n let out = \"\";\n out += `<div class=\"taskbar\">\n `;\n if (showStartMenu) {\n out += `\n <button class=\"start-button\" onclick=\"toggleStartMenu()\">\n <div class=\"start-button-flag\">\n <div class=\"flag-red\"></div>\n <div class=\"flag-green\"></div>\n <div class=\"flag-blue\"></div>\n <div class=\"flag-yellow\"></div>\n </div>\n <span>Start</span>\n </button>\n `;\n }\n out += `<div class=\"quick-launch\">\n <slot name=\"quick-launch\" />\n </div>\n\n <div class=\"taskbar-windows\" id=\"taskbar-windows\">\n <slot name=\"taskbar-windows\" />\n </div>\n\n <div class=\"system-tray\">\n <slot name=\"system-tray\">\n <button class=\"tray-icon\" onclick=\"toggleNotificationPopup()\">\\uD83D\\uDD14</button>\n <button class=\"tray-icon\" onclick=\"window.open('https://github.com/stacksjs/stacks', '_blank')\">\\uD83D\\uDCBB</button>\n <button class=\"tray-icon\" onclick=\"window.open('https://stacksjs.com/discord', '_blank')\">\\uD83D\\uDCAC</button>\n </slot>\n <div class=\"clock\" id=\"clock\"></div>\n </div>\n </div>`;\n return out;\n }\n\n}\n\ndefineComponent(Taskbar, {\n \"tag\": \"stacks-taskbar\",\n \"template\": \"<div class=\\\"taskbar\\\">\\n @if (showStartMenu)\\n <button class=\\\"start-button\\\" onclick=\\\"toggleStartMenu()\\\">\\n <div class=\\\"start-button-flag\\\">\\n <div class=\\\"flag-red\\\"></div>\\n <div class=\\\"flag-green\\\"></div>\\n <div class=\\\"flag-blue\\\"></div>\\n <div class=\\\"flag-yellow\\\"></div>\\n </div>\\n <span>Start</span>\\n </button>\\n @endif\\n\\n <div class=\\\"quick-launch\\\">\\n <slot name=\\\"quick-launch\\\" />\\n </div>\\n\\n <div class=\\\"taskbar-windows\\\" id=\\\"taskbar-windows\\\">\\n <slot name=\\\"taskbar-windows\\\" />\\n </div>\\n\\n <div class=\\\"system-tray\\\">\\n <slot name=\\\"system-tray\\\">\\n <button class=\\\"tray-icon\\\" onclick=\\\"toggleNotificationPopup()\\\">🔔</button>\\n <button class=\\\"tray-icon\\\" onclick=\\\"window.open('https://github.com/stacksjs/stacks', '_blank')\\\">💻</button>\\n <button class=\\\"tray-icon\\\" onclick=\\\"window.open('https://stacksjs.com/discord', '_blank')\\\">💬</button>\\n </slot>\\n <div class=\\\"clock\\\" id=\\\"clock\\\"></div>\\n </div>\\n </div>\",\n \"styles\": \"\",\n \"shadowMode\": false,\n \"progressive\": true,\n \"properties\": {\n \"showStartMenu\": {\n \"type\": \"boolean\",\n \"default\": true,\n \"reflect\": true\n }\n },\n \"eventTypes\": [],\n \"bindings\": []\n});\nexport default Taskbar;\n",
|
|
18
18
|
"import { StxElement, defineComponent } from './runtime.js';\n\n/** Window web component generated from Window.stx. */\nexport class Window extends StxElement {\n\n render(__helpers) {\n const { escape: __escape, raw: __raw, values: __values, entries: __entries } = __helpers;\n const { id, icon = \"\\uD83D\\uDCC4\", title, left = \"100px\", top = \"80px\", width = \"600px\", height = \"500px\", style = \"\" } = this._props();\n let out = \"\";\n out += '<div id=\"window-';\n out += __escape(id);\n out += '\" class=\"window\" style=\"';\n if (style) {\n out += __escape(style);\n } else {\n out += \"left: \";\n out += __escape(left);\n out += \"; top: \";\n out += __escape(top);\n out += \"; width: \";\n out += __escape(width);\n out += \"; height: \";\n out += __escape(height);\n out += \";\";\n }\n out += `\">\n <div class=\"window-titlebar\">\n <div class=\"window-icon\">`;\n out += __escape(icon);\n out += `</div>\n <div class=\"window-title\">`;\n out += __escape(title);\n out += `</div>\n <div class=\"window-controls\">\n <button class=\"minimize window-control\" onclick=\"minimizeWindow('`;\n out += __escape(id);\n out += `')\">_</button>\n <button class=\"maximize window-control\" onclick=\"toggleMaximizeWindow('`;\n out += __escape(id);\n out += `')\">□</button>\n <button class=\"close window-control\" onclick=\"closeWindow('`;\n out += __escape(id);\n out += `')\">×</button>\n </div>\n </div>\n <div class=\"window-content\">\n <slot />\n </div>\n </div>`;\n return out;\n }\n\n}\n\ndefineComponent(Window, {\n \"tag\": \"stacks-window\",\n \"template\": \"<div id=\\\"window-{{ id }}\\\" class=\\\"window\\\" style=\\\"@if(style){{ style }}@else left: {{ left }}; top: {{ top }}; width: {{ width }}; height: {{ height }};@endif\\\">\\n <div class=\\\"window-titlebar\\\">\\n <div class=\\\"window-icon\\\">{{ icon }}</div>\\n <div class=\\\"window-title\\\">{{ title }}</div>\\n <div class=\\\"window-controls\\\">\\n <button class=\\\"minimize window-control\\\" onclick=\\\"minimizeWindow('{{ id }}')\\\">_</button>\\n <button class=\\\"maximize window-control\\\" onclick=\\\"toggleMaximizeWindow('{{ id }}')\\\">□</button>\\n <button class=\\\"close window-control\\\" onclick=\\\"closeWindow('{{ id }}')\\\">×</button>\\n </div>\\n </div>\\n <div class=\\\"window-content\\\">\\n <slot />\\n </div>\\n </div>\",\n \"styles\": \"\",\n \"shadowMode\": false,\n \"progressive\": true,\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"reflect\": true\n },\n \"icon\": {\n \"type\": \"string\",\n \"default\": \"📄\",\n \"reflect\": true\n },\n \"title\": {\n \"type\": \"string\",\n \"reflect\": true\n },\n \"left\": {\n \"type\": \"string\",\n \"default\": \"100px\",\n \"reflect\": true\n },\n \"top\": {\n \"type\": \"string\",\n \"default\": \"80px\",\n \"reflect\": true\n },\n \"width\": {\n \"type\": \"string\",\n \"default\": \"600px\",\n \"reflect\": true\n },\n \"height\": {\n \"type\": \"string\",\n \"default\": \"500px\",\n \"reflect\": true\n },\n \"style\": {\n \"type\": \"string\",\n \"default\": \"\",\n \"reflect\": true\n }\n },\n \"eventTypes\": [],\n \"bindings\": []\n});\nexport default Window;\n"
|
|
19
19
|
],
|
|
20
|
-
"mappings": "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",
|
|
21
|
-
"debugId": "
|
|
20
|
+
"mappings": "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",
|
|
21
|
+
"debugId": "7B05802856AA6D3064756E2164756E21",
|
|
22
22
|
"names": []
|
|
23
23
|
}
|
package/dist/runtime.js
CHANGED
|
@@ -6,6 +6,8 @@ const escapeHTML = (value) => String(value ?? '')
|
|
|
6
6
|
|
|
7
7
|
const valueAt = (host, path) => {
|
|
8
8
|
const parts = path.trim().split('.');
|
|
9
|
+
if (parts[0] === 'this') parts.shift();
|
|
10
|
+
if (!parts.length) return host;
|
|
9
11
|
const first = parts.shift();
|
|
10
12
|
// Render bindings read declared props, including attributes whose names
|
|
11
13
|
// also belong to the native DOM API. The public element keeps that API.
|
|
@@ -200,8 +202,12 @@ export class StxElement extends HTMLElementBase {
|
|
|
200
202
|
const definition = this.constructor.definition;
|
|
201
203
|
const root = this.renderRoot;
|
|
202
204
|
const active = root.activeElement || (root.contains?.(globalThis.document?.activeElement) ? globalThis.document.activeElement : null);
|
|
203
|
-
const
|
|
204
|
-
const
|
|
205
|
+
const focusAttribute = active?.getAttribute?.('data-key') ? 'data-key' : active?.id ? 'id' : 'name';
|
|
206
|
+
const focusKey = active?.getAttribute?.(focusAttribute);
|
|
207
|
+
const focusValue = focusAttribute === 'name' && active?.type === 'radio' ? active.value : null;
|
|
208
|
+
const selectionStart = active?.selectionStart, selectionEnd = active?.selectionEnd;
|
|
209
|
+
const selection = Number.isInteger(selectionStart) && Number.isInteger(selectionEnd)
|
|
210
|
+
? [selectionStart, selectionEnd, active.selectionDirection] : null;
|
|
205
211
|
// A compiled component renders itself: the control flow and the derived
|
|
206
212
|
// values were turned into JavaScript at build time, so there is nothing to
|
|
207
213
|
// interpret here and nothing that needs an eval the page's CSP forbids.
|
|
@@ -217,9 +223,15 @@ export class StxElement extends HTMLElementBase {
|
|
|
217
223
|
this._bindEvents();
|
|
218
224
|
if (focusKey) {
|
|
219
225
|
const escaped = globalThis.CSS?.escape ? globalThis.CSS.escape(focusKey) : focusKey.replace(/["\\]/g, '\$&');
|
|
220
|
-
const
|
|
226
|
+
const selector = '[' + focusAttribute + '="' + escaped + '"]';
|
|
227
|
+
// Name-only radio groups share a name, but their chosen member must stay focused.
|
|
228
|
+
const next = focusValue === null ? root.querySelector(selector)
|
|
229
|
+
: [...root.querySelectorAll(selector)].find(element => element.type === 'radio' && element.value === focusValue);
|
|
221
230
|
next?.focus?.();
|
|
222
|
-
|
|
231
|
+
// Several input types expose this method but reject text selection. A
|
|
232
|
+
// rerender can also change a text input into one of those types.
|
|
233
|
+
if (selection && Number.isInteger(next?.selectionStart) && Number.isInteger(next?.selectionEnd) && typeof next?.setSelectionRange === 'function')
|
|
234
|
+
next.setSelectionRange(selection[0], selection[1], selection[2] || 'none');
|
|
223
235
|
}
|
|
224
236
|
this.dispatchEvent?.(new CustomEvent('stx:updated', { bubbles: false }));
|
|
225
237
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stacksjs/hello-world-stx",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.75.
|
|
4
|
+
"version": "0.75.593",
|
|
5
5
|
"description": "Your STX component library description",
|
|
6
6
|
"author": "Chris Breuer",
|
|
7
7
|
"contributors": [
|
|
@@ -42,6 +42,6 @@
|
|
|
42
42
|
"prepublishOnly": "bun run build"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"stacks": "^0.75.
|
|
45
|
+
"stacks": "^0.75.593"
|
|
46
46
|
}
|
|
47
47
|
}
|