@substrate-system/password-input 0.0.4 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -0
- package/dist/index.min.js +19 -19
- package/dist/index.min.js.map +3 -3
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -30,6 +30,8 @@ Accessible by default — `aria-*` attributes, the `id` attribute, and a
|
|
|
30
30
|
+ [Supported `aria-*` attributes](#supported-aria--attributes)
|
|
31
31
|
+ [Usage Notes](#usage-notes)
|
|
32
32
|
+ [Example](#example)
|
|
33
|
+
- [Events](#events)
|
|
34
|
+
* [Example: keep several inputs in sync](#example-keep-several-inputs-in-sync)
|
|
33
35
|
- [Use](#use)
|
|
34
36
|
* [JS](#js)
|
|
35
37
|
* [HTML](#html)
|
|
@@ -121,6 +123,58 @@ That is controlled by the component.
|
|
|
121
123
|
```
|
|
122
124
|
|
|
123
125
|
|
|
126
|
+
## Events
|
|
127
|
+
|
|
128
|
+
The component emits namespaced custom events whenever its visibility changes.
|
|
129
|
+
The events [bubble](https://developer.mozilla.org/en-US/docs/Web/API/Event/bubbles),
|
|
130
|
+
so you can listen on the element itself or on any ancestor.
|
|
131
|
+
|
|
132
|
+
| Event | Emitted when |
|
|
133
|
+
| --- | --- |
|
|
134
|
+
| `password-input:show` | The input becomes visible (`type="text"`). |
|
|
135
|
+
| `password-input:hide` | The input becomes hidden (`type="password"`). |
|
|
136
|
+
|
|
137
|
+
Build the event name with the static `PasswordInput.event(...)` helper, or pass
|
|
138
|
+
the string directly. `ev.target` is the `<password-input>` that changed.
|
|
139
|
+
|
|
140
|
+
```js
|
|
141
|
+
import { PasswordInput } from '@substrate-system/password-input'
|
|
142
|
+
|
|
143
|
+
const input = document.querySelector('password-input')
|
|
144
|
+
|
|
145
|
+
input.addEventListener(PasswordInput.event('show'), (ev) => {
|
|
146
|
+
console.log(ev.target.isVisible) // true
|
|
147
|
+
})
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
There is also a short-hand `.on(...)` method on the element that namespaces the
|
|
151
|
+
event name for you:
|
|
152
|
+
|
|
153
|
+
```js
|
|
154
|
+
input.on('hide', (ev) => { /* ... */ })
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Example: keep several inputs in sync
|
|
158
|
+
|
|
159
|
+
Because the events bubble, a single delegated listener can keep every
|
|
160
|
+
`<password-input>` on the page in sync — clicking any input's eye button
|
|
161
|
+
shows or hides them all.
|
|
162
|
+
|
|
163
|
+
```js
|
|
164
|
+
import { PasswordInput } from '@substrate-system/password-input'
|
|
165
|
+
|
|
166
|
+
function syncVisibility (ev) {
|
|
167
|
+
const visible = ev.target.isVisible
|
|
168
|
+
document.querySelectorAll('password-input').forEach(el => {
|
|
169
|
+
el.isVisible = visible
|
|
170
|
+
})
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
document.addEventListener(PasswordInput.event('show'), syncVisibility)
|
|
174
|
+
document.addEventListener(PasswordInput.event('hide'), syncVisibility)
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
|
|
124
178
|
## Use
|
|
125
179
|
|
|
126
180
|
This calls the global function `customElements.define`. Just import, then use
|
package/dist/index.min.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
var
|
|
2
|
-
${
|
|
3
|
-
</${e}>`:
|
|
1
|
+
var W=Object.defineProperty;var n=(t,e)=>W(t,"name",{value:e,configurable:!0});var K=Object.defineProperty,V=n((t,e)=>K(t,"name",{value:e,configurable:!0}),"__name");function S(t){return Object.keys(t).reduce((e,r)=>{let i=t[r];return i?typeof i=="boolean"?i?(e+` ${r}`).trim():e:Array.isArray(i)?e+` ${r}="${i.join(" ")}"`:(e+` ${r}="${i}"`).trim():e},"")}n(S,"toAttributes");V(S,"toAttributes");var Z=Object.defineProperty,A=n((t,e)=>Z(t,"name",{value:e,configurable:!0}),"__name");function x(t){return document.createElement(t).constructor!==window.HTMLElement}n(x,"isRegistered");A(x,"isRegistered");function v(t,e){window&&"customElements"in window&&(x(t)||window.customElements.define(t,e))}n(v,"define");A(v,"define");var ge=document.querySelector.bind(document),Ae=document.querySelectorAll.bind(document);function y(t,e){return t.matches||(t=t.parentElement),t.matches(e)?t:t.closest(e)}n(y,"match");A(y,"match");var J=Object.defineProperty,c=n((t,e)=>J(t,"name",{value:e,configurable:!0}),"__name"),f=class t extends window.HTMLElement{static{n(this,"WebComponent")}static{c(this,"WebComponent")}static TAG="";TAG="";static reflectedBooleanAttributes=[];static reflectedStringAttributes=[];static get observedAttributes(){return[...new Set([...this.reflectedBooleanAttributes,...this.reflectedStringAttributes])]}static match(e){return y(e,this.TAG)}static create(e){let r=class extends t{static{n(this,"CreatedClass")}static{c(this,"CreatedClass")}static TAG=e;TAG=e;render(){throw new Error("`render` should be implemented by children")}};return r.define=function(){return t.define.call(this)},r.event=function(i){return t.event.call(this,i)},r}static define(){H(this.TAG,this)}attributeChangedCallback(e,r,i){let o=this[L(e)];o&&o.call(this,r,i)}connectedCallback(){this.render()}qs(e){return this.querySelector(e)}qsa(e){return this.querySelectorAll(e)}static event(e){return R(this.TAG,e)}emit(e,r={}){if(e==="*")throw new Error('Do not emit the literal "*"');let{bubbles:i=!0,cancelable:o=!0,detail:u}=r,s=`${this.TAG}:${e}`,l=new CustomEvent(s,{bubbles:i,cancelable:o,detail:u});return this.dispatchEvent(l)}dispatch(e,r={}){let i=new CustomEvent(e,{bubbles:r.bubbles===void 0?!0:r.bubbles,cancelable:r.cancelable===void 0?!0:r.cancelable,detail:r.detail});return this.dispatchEvent(i)}on(e,r,i){let o=t.event.call(this,e);this.addEventListener(o,r,i)}off(e,r,i){let o=t.event.call(this,e);this.removeEventListener(o,r,i)}};function R(t,e){return`${t}:${e}`}n(R,"eventName");c(R,"eventName");var P=Object.create(null);function L(t){return P[t]||(P[t]=`handleChange_${t}`)}n(L,"handlerKey");c(L,"handlerKey");function j(t){return document.createElement(t).constructor!==window.HTMLElement}n(j,"isRegistered");c(j,"isRegistered");function H(t,e){if(typeof window>"u"||!("customElements"in window)||j(t))return;let r=e,i=r.reflectedBooleanAttributes??[],o=r.reflectedStringAttributes??[],u=e.prototype;for(let s of i)s in HTMLElement.prototype||Object.getOwnPropertyDescriptor(u,s)||Object.defineProperty(u,s,{get(){return this.hasAttribute(s)},set(l){this.toggleAttribute(s,!!l)},configurable:!0,enumerable:!0});for(let s of o){if(i.includes(s)){console.warn(`[web-component] "${s}" appears in both reflectedBooleanAttributes and reflectedStringAttributes on <${t}>. Boolean wins.`);continue}s in HTMLElement.prototype||Object.getOwnPropertyDescriptor(u,s)||Object.defineProperty(u,s,{get(){return this.getAttribute(s)},set(l){l==null?this.removeAttribute(s):this.setAttribute(s,String(l))},configurable:!0,enumerable:!0})}window.customElements.define(t,e)}n(H,"define");c(H,"define");var Q=Object.defineProperty,X=n((t,e)=>Q(t,"name",{value:e,configurable:!0}),"__name");function k(t){return Object.keys(t).reduce((e,r)=>{let i=t[r];return i?typeof i=="boolean"?i?(e+` ${r}`).trim():e:Array.isArray(i)?e+` ${r}="${i.join(" ")}"`:(e+` ${r}="${i}"`).trim():e},"")}n(k,"toAttributes");X(k,"toAttributes");var Y=Object.defineProperty,q=n((t,e)=>Y(t,"name",{value:e,configurable:!0}),"__name");function B(t){return document.createElement(t).constructor!==window.HTMLElement}n(B,"isRegistered");q(B,"isRegistered");function b(t,e){window&&"customElements"in window&&(B(t)||window.customElements.define(t,e))}n(b,"define");q(b,"define");var Se=document.querySelector.bind(document),xe=document.querySelectorAll.bind(document);var ee=Object.defineProperty,te=n((t,e)=>ee(t,"name",{value:e,configurable:!0}),"__name"),re=/[\s\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\-.\/:;<=>?@\[\]^_`{|}~]+/,ie=/[A-ZÀ-Ý\u00C0-\u00D6\u00D9-\u00DD][a-zà-ÿ]/g,ne=/[A-ZÀ-Ý\u00C0-\u00D6\u00D9-\u00DD]+/g;function d(t){return t=t.replace(ie,function(e){return" "+(e[0].toLowerCase()||e[0])+e[1]}),t=t.replace(ne,function(e){return" "+e.toLowerCase()}),t.trim().split(re).join("-").replace(/^-/,"").replace(/-\s*$/,"")}n(d,"kebabCase");te(d,"kebabCase");var se=Object.defineProperty,ae=n((t,e)=>se(t,"name",{value:e,configurable:!0}),"__name");function h(t,e){return function(r){let i=t(r);return typeof window>"u"?`<${e} class="icon">
|
|
2
|
+
${i}
|
|
3
|
+
</${e}>`:i}}n(h,"createRenderer");ae(h,"createRenderer");var oe=Object.defineProperty,M=n((t,e)=>oe(t,"name",{value:e,configurable:!0}),"__name"),_=h(O,"eye-slash");function O({title:t}={}){return t||(t="Hide"),`<svg
|
|
4
4
|
class="icon eye-slash"
|
|
5
5
|
xmlns="http://www.w3.org/2000/svg"
|
|
6
6
|
viewBox="0 0 640 512"
|
|
7
7
|
role="image"
|
|
8
|
-
aria-labelledby="${
|
|
8
|
+
aria-labelledby="${d(t)}"
|
|
9
9
|
>
|
|
10
|
-
<title id=${
|
|
10
|
+
<title id=${d(t)}>${t}</title>
|
|
11
11
|
<!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.-->
|
|
12
12
|
<path d="M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z" />
|
|
13
|
-
</svg>`}n(
|
|
13
|
+
</svg>`}n(O,"createHtml");M(O,"createHtml");function le({title:t}){return`<eye-slash>${_({title:t})}</eye-slash>`}n(le,"outerHtml");M(le,"outerHtml");var ue=Object.defineProperty,D=n((t,e)=>ue(t,"name",{value:e,configurable:!0}),"__name"),p=class extends HTMLElement{static{n(this,"EyeSlash")}static{D(this,"EyeSlash")}static TAG="eye-slash";_title;constructor(){super(),this._title=this.getAttribute("title")||"Hide"}attributeChangedCallback(e,r,i){this._title=i,this.render()}connectedCallback(){let e=this.getAttribute("title");e==null?this._title="Hide":this._title=e,this.render()}render(){let e=this._title;this.innerHTML=_({title:e})}};function w(){b(p.TAG,p)}n(w,"define");D(w,"define");var ce=Object.defineProperty,G=n((t,e)=>ce(t,"name",{value:e,configurable:!0}),"__name"),C=h(N,"eye-regular");function N({title:t}={}){t||(t="Show");let e=d(t);return`<svg
|
|
14
14
|
class="icon eye-regular"
|
|
15
15
|
xmlns="http://www.w3.org/2000/svg"
|
|
16
16
|
viewBox="0 0 576 512"
|
|
@@ -20,40 +20,40 @@ var z=Object.defineProperty;var n=(t,e)=>z(t,"name",{value:e,configurable:!0});v
|
|
|
20
20
|
<title id="${e}">${t}</title>
|
|
21
21
|
<!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.-->
|
|
22
22
|
<path d="M288 80c-65.2 0-118.8 29.6-159.9 67.7C89.6 183.5 63 226 49.4 256c13.6 30 40.2 72.5 78.6 108.3C169.2 402.4 222.8 432 288 432s118.8-29.6 159.9-67.7C486.4 328.5 513 286 526.6 256c-13.6-30-40.2-72.5-78.6-108.3C406.8 109.6 353.2 80 288 80zM95.4 112.6C142.5 68.8 207.2 32 288 32s145.5 36.8 192.6 80.6c46.8 43.5 78.1 95.4 93 131.1c3.3 7.9 3.3 16.7 0 24.6c-14.9 35.7-46.2 87.7-93 131.1C433.5 443.2 368.8 480 288 480s-145.5-36.8-192.6-80.6C48.6 356 17.3 304 2.5 268.3c-3.3-7.9-3.3-16.7 0-24.6C17.3 208 48.6 156 95.4 112.6zM288 336c44.2 0 80-35.8 80-80s-35.8-80-80-80c-.7 0-1.3 0-2 0c1.3 5.1 2 10.5 2 16c0 35.3-28.7 64-64 64c-5.5 0-10.9-.7-16-2c0 .7 0 1.3 0 2c0 44.2 35.8 80 80 80zm0-208a128 128 0 1 1 0 256 128 128 0 1 1 0-256z" />
|
|
23
|
-
</svg>`}n(
|
|
24
|
-
<div class="${
|
|
25
|
-
<label class="label-content" for="${
|
|
23
|
+
</svg>`}n(N,"createHtml");G(N,"createHtml");function de({title:t}){return`<eye-regular>${C({title:t})}</eye-regular>`}n(de,"outerHtml");G(de,"outerHtml");var be=Object.defineProperty,U=n((t,e)=>be(t,"name",{value:e,configurable:!0}),"__name"),m=class extends HTMLElement{static{n(this,"EyeRegular")}static{U(this,"EyeRegular")}static TAG="eye-regular";_title;constructor(){super(),this._title=this.getAttribute("title")||"See"}attributeChangedCallback(e,r,i){this._title=i,this.render()}connectedCallback(){let e=this.getAttribute("title");e==null?this._title="See":this._title=e,this.render()}render(){let e=this._title;e&&(this.innerHTML=C({title:e}))}};function T(){b(m.TAG,m)}n(T,"define");U(T,"define");var z=["aria-activedescendant","aria-atomic","aria-autocomplete","aria-braillelabel","aria-brailleroledescription","aria-busy","aria-checked","aria-colcount","aria-colindex","aria-colindextext","aria-colspan","aria-controls","aria-current","aria-describedby","aria-description","aria-details","aria-disabled","aria-dropeffect","aria-errormessage","aria-expanded","aria-flowto","aria-grabbed","aria-haspopup","aria-hidden","aria-invalid","aria-keyshortcuts","aria-label","aria-labelledby","aria-level","aria-live","aria-modal","aria-multiline","aria-multiselectable","aria-orientation","aria-owns","aria-placeholder","aria-posinset","aria-pressed","aria-readonly","aria-relevant","aria-required","aria-roledescription","aria-rowcount","aria-rowindex","aria-rowindextext","aria-rowspan","aria-selected","aria-setsize","aria-sort","aria-valuemax","aria-valuemin","aria-valuenow","aria-valuetext"],F=["accept","alt","autocomplete","autocapitalize","autocorrect","autofocus","capture","dirname","disabled","enterkeyhint","form","inputmode","list","max","maxlength","min","minlength","multiple","name","pattern","placeholder","readonly","required","size","spellcheck","step","tabindex","title","value"];w();T();var g=class t extends f.create("password-input"){static{n(this,"PasswordInput")}static TAG="password-input";static INPUT_ATTRIBUTES=F;static ARIA_ATTRIBUTES=z;static observedAttributes=["visible","label","id"].concat(t.INPUT_ATTRIBUTES).concat(t.ARIA_ATTRIBUTES);inputId=null;inputAriaAttributes={};ignoredAriaCallbackNames=new Set;ignoredIdCallback=!1;generatedInputId=`password-input-${Math.random().toString(36).slice(2,10)}`;handleChange_visible(e,r){this.reRender(),e!==r&&this.emit(r!==null?"show":"hide")}handleChange_label(e,r){this.render(),this._listen()}handleChange_aria(e,r,i){if(this.ignoredAriaCallbackNames.has(e)){this.ignoredAriaCallbackNames.delete(e);return}if(i===null){delete this.inputAriaAttributes[e],this.querySelector("input")?.removeAttribute(e);return}this.inputAriaAttributes[e]=i,this.querySelector("input")?.setAttribute(e,i),this.hasAttribute(e)&&(this.ignoredAriaCallbackNames.add(e),this.removeAttribute(e))}handleChange_id(e,r){if(this.ignoredIdCallback){this.ignoredIdCallback=!1;return}if(r===null){this.inputId=null,this.querySelector("input")?.removeAttribute("id");return}this.inputId=r,this.querySelector("input")?.setAttribute("id",r),this.hasAttribute("id")&&(this.ignoredIdCallback=!0,this.removeAttribute("id"))}handleChange_inputAttribute(e,r){let i=this.querySelector("input");if(i){if(r===null){i.removeAttribute(e);return}i.setAttribute(e,r)}}async attributeChangedCallback(e,r,i){if(e==="id"){this.handleChange_id(r,i);return}if(e.startsWith("aria-")){this.handleChange_aria(e,r,i);return}if(t.INPUT_ATTRIBUTES.includes(e)){this.handleChange_inputAttribute(e,i);return}this[`handleChange_${e}`]&&this[`handleChange_${e}`](r,i)}connectedCallback(){this.render(),this._listen()}_listen(){this.querySelector("button").addEventListener("click",r=>{r.preventDefault(),this.isVisible=!this.isVisible})}getType(){return this.isVisible?"text":"password"}set isVisible(e){e?this.setAttribute("visible",""):this.removeAttribute("visible")}get isVisible(){return this.hasAttribute("visible")}set label(e){if(e===null){this.removeAttribute("label");return}this.setAttribute("label",e)}get label(){return this.getAttribute("label")}getButtonContent(){return this.isVisible?'<eye-regular></eye-regular><span class="visually-hidden">Hide</span>':'<eye-slash></eye-slash><span class="visually-hidden">Show</span>'}getInputIdForRender(){return this.inputId||this.generatedInputId}reRender(){let e=this.querySelector(".pw-visibility"),r=this.querySelector("input");if(!e||!r)return;let i=this.getInputIdForRender();e.innerHTML=this.getButtonContent(),e.setAttribute("aria-pressed",this.isVisible?"true":"false"),e.setAttribute("aria-controls",i),this.setAttribute("type",this.getType()),r.setAttribute("type",this.getType()),r.setAttribute("id",i)}render(){let e=this.getAttribute("name"),r=this.getAttribute("label"),i=this.getAttribute("id"),o=Array.from(this.attributes).filter(a=>a.name.startsWith("aria-"));i!==null&&(this.inputId=i);for(let a of o)this.inputAriaAttributes[a.name]=a.value;let u=Array.from(this.attributes).filter(a=>a.name!=="label"&&a.name!=="id"&&!a.name.startsWith("aria-")).map(a=>a.name+(a.value===""?"":`="${a.value}"`)).join(" "),s=(this.getAttribute("class")??"").split(" ").concat(["password","input",e||""]).filter(Boolean).join(" "),l=this.getInputIdForRender(),$=`id="${l}"`,I=Object.entries(this.inputAriaAttributes).map(([a,E])=>a+(E===""?"":`="${E}"`)).join(" ");this.innerHTML=r?`
|
|
24
|
+
<div class="${s}">
|
|
25
|
+
<label class="label-content" for="${l}">${r}</label>
|
|
26
26
|
<span class="input">
|
|
27
27
|
<input
|
|
28
|
-
${
|
|
29
|
-
${
|
|
30
|
-
${
|
|
28
|
+
${$}
|
|
29
|
+
${I}
|
|
30
|
+
${u}
|
|
31
31
|
type=${this.getType()} />
|
|
32
32
|
<button
|
|
33
33
|
type="button"
|
|
34
34
|
class="pw-visibility"
|
|
35
35
|
aria-pressed="${this.isVisible?"true":"false"}"
|
|
36
|
-
aria-controls="${
|
|
36
|
+
aria-controls="${l}">
|
|
37
37
|
${this.getButtonContent()}
|
|
38
38
|
</button>
|
|
39
39
|
</span>
|
|
40
40
|
</div>
|
|
41
41
|
`:`
|
|
42
|
-
<div class="${
|
|
42
|
+
<div class="${s}">
|
|
43
43
|
<span class="input">
|
|
44
44
|
<input
|
|
45
|
-
${
|
|
46
|
-
${
|
|
47
|
-
${
|
|
45
|
+
${$}
|
|
46
|
+
${I}
|
|
47
|
+
${u}
|
|
48
48
|
type=${this.getType()} />
|
|
49
49
|
<button
|
|
50
50
|
type="button"
|
|
51
51
|
class="pw-visibility"
|
|
52
52
|
aria-pressed="${this.isVisible?"true":"false"}"
|
|
53
|
-
aria-controls="${
|
|
53
|
+
aria-controls="${l}">
|
|
54
54
|
${this.getButtonContent()}
|
|
55
55
|
</button>
|
|
56
56
|
</span>
|
|
57
57
|
</div>
|
|
58
|
-
`,this.hasAttribute("id")&&(this.ignoredIdCallback=!0,this.removeAttribute("id"));for(let
|
|
58
|
+
`,this.hasAttribute("id")&&(this.ignoredIdCallback=!0,this.removeAttribute("id"));for(let a of o)this.ignoredAriaCallbackNames.add(a.name),this.removeAttribute(a.name)}};v(g.TAG,g);export{g as PasswordInput};
|
|
59
59
|
//# sourceMappingURL=index.min.js.map
|
package/dist/index.min.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../node_modules/@substrate-system/web-component/src/attributes.ts", "../node_modules/@substrate-system/web-component/src/util.ts", "../node_modules/@substrate-system/web-component/src/index.ts", "../node_modules/@substrate-system/icons/node_modules/@substrate-system/web-component/src/attributes.ts", "../node_modules/@substrate-system/icons/node_modules/@substrate-system/web-component/src/util.ts", "../node_modules/@substrate-system/kebab-case/src/index.ts", "../node_modules/@substrate-system/icons/src/util.ts", "../node_modules/@substrate-system/icons/src/render/eye-slash.ts", "../node_modules/@substrate-system/icons/src/eye-slash.ts", "../node_modules/@substrate-system/icons/src/render/eye-regular.ts", "../node_modules/@substrate-system/icons/src/eye-regular.ts", "../src/util.ts", "../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["export type Attrs = Record<string, undefined|null|string|number|boolean|(string|number)[]>\n\n/**\n * Transform an object into an HTML attributes string. The object should be\n * like `{ attributeName: value }`.\n *\n * @param attrs An object for the attributes.\n * @returns {string} A string suitable for use as HTML attributes.\n */\nexport function toAttributes (attrs:Attrs):string {\n return Object.keys(attrs).reduce((acc, k) => {\n const value = attrs[k]\n if (!value) return acc\n\n if (typeof value === 'boolean') {\n if (value) return (acc + ` ${k}`).trim()\n return acc\n }\n\n if (Array.isArray(value)) {\n return (acc + ` ${k}=\"${value.join(' ')}\"`)\n }\n\n return (acc + ` ${k}=\"${value}\"`).trim()\n }, '')\n}\n", "export { toAttributes } from './attributes.js'\n\n/**\n * Check if the given tag name has been registered.\n *\n * @see {@link https://stackoverflow.com/a/28210364 stackoverflow}\n * @param {string} elName The custom element tag name.\n * @returns {boolean} True if the given name has been registered already.\n */\nexport function isRegistered (elName:string):boolean {\n return document.createElement(elName).constructor !== window.HTMLElement\n}\n\nexport function define (name:string, element:CustomElementConstructor) {\n if (!window) return\n if (!('customElements' in window)) return\n\n if (!isRegistered(name)) {\n window.customElements.define(name, element)\n }\n}\n\nexport const qs = document.querySelector.bind(document)\nexport const qsa = document.querySelectorAll.bind(document)\n\n/**\n * Get the closes parent element matching the given selector.\n * @param el Element to start from\n * @param s Selector for an element\n * @returns {HTMLElement|null} The closes parent element that matches.\n */\nexport function match (el:HTMLElement, s:string):HTMLElement|null {\n if (!el.matches) el = el.parentElement!\n return el.matches(s) ? el : el.closest(s)\n}\n", "import { match as _match } from './util.js'\n\ninterface WildcardListenerEntry {\n listener:EventListenerOrEventListenerObject\n options?:boolean|AddEventListenerOptions\n}\n\nexport abstract class WebComponent extends window.HTMLElement {\n static TAG:string = ''\n TAG:string = ''\n\n static match (el:HTMLElement):HTMLElement|null {\n return _match(el, this.TAG)\n }\n\n /**\n * Store global wildcard listeners (listen to all events)\n * Triggered by ALL events dispatched through this element\n * @private\n */\n private _globalWildcardListeners:Set<WildcardListenerEntry> = new Set()\n\n /**\n * Store namespaced wildcard listeners (listen to 'component-name:*')\n * Triggered by events from emit() that match this component's namespace\n * @private\n */\n private _namespacedWildcardListeners:Set<WildcardListenerEntry> = new Set()\n\n static create (elementName:string):typeof WebComponent & {\n new (...args:any[]):WebComponent;\n TAG:string;\n define: typeof WebComponent.define;\n event: typeof WebComponent.event;\n } {\n const CreatedClass = class extends WebComponent {\n static TAG = elementName\n TAG = elementName\n render () {\n throw new Error('`render` should be implemented by children')\n }\n }\n\n // Copy static methods with proper binding\n CreatedClass.define = function () {\n return WebComponent.define.call(this)\n }\n CreatedClass.event = function (evType:string) {\n return WebComponent.event.call(this, evType)\n }\n\n return CreatedClass\n }\n\n static define<T extends {\n new (...args:any[]):WebComponent;\n TAG:string;\n }>(this:T) {\n define(this.TAG, this)\n }\n\n /**\n * Runs when the value of an attribute is changed.\n *\n * Depends on `static observedAttributes`.\n *\n * Should name methods like `handleChange_disabled`.\n *\n * @param {string} name The attribute name\n * @param {string} oldValue The old attribute value\n * @param {string} newValue The new attribute value\n */\n async attributeChangedCallback (\n name:string,\n oldValue:string,\n newValue:string\n ):Promise<void> {\n const handler = this[`handleChange_${name}`]\n if (handler) {\n await handler.call(this, oldValue, newValue)\n }\n }\n\n /**\n * Enhanced addEventListener that supports wildcards:\n * - Component.event('*') - Listen to all namespaced events for this\n * component (e.g., 'my-component:*')\n * - '*' - Listen to ALL events (namespaced and non-namespaced, including\n * normal DOM events)\n *\n * @param type - Event type, Component.event('*') for namespaced wildcard,\n * or '*' for global wildcard\n * @param listener - Event listener function or object\n * @param options - Event listener options\n */\n addEventListener (\n type:string,\n listener:EventListenerOrEventListenerObject,\n options?:boolean|AddEventListenerOptions\n ): void {\n if (type === WebComponent.event.call(this, '*')) {\n // Handle namespaced wildcard listener (component-name:*)\n this._namespacedWildcardListeners.add({ listener, options })\n } else if (type === '*') {\n // Handle global wildcard listener (all events)\n if (listener) {\n this._globalWildcardListeners.add({ listener, options })\n }\n } else {\n // Normal event listener - delegate to native implementation\n super.addEventListener(type, listener, options)\n }\n }\n\n /**\n * Notify namespaced wildcard listeners of an event\n * Only fires for events that match this component's namespace\n *\n * @param event - The event to dispatch to namespaced wildcard listeners\n * @private\n */\n private _notifyNamespacedWildcardListeners (event: Event): void {\n if (this._namespacedWildcardListeners.size === 0) {\n return\n }\n\n const componentName = this.TAG\n\n // Only trigger for events in this component's namespace\n if (!componentName || !event.type.startsWith(`${componentName}:`)) {\n return\n }\n\n // Call each namespaced wildcard listener\n this._namespacedWildcardListeners.forEach(({ listener }) => {\n try {\n if (typeof listener === 'function') {\n listener.call(this, event)\n } else if (listener && typeof listener.handleEvent === 'function') {\n listener.handleEvent(event)\n }\n } catch (error) {\n // Log errors but don't let one listener break others\n console.error(\n 'Error in namespaced wildcard event listener:',\n error\n )\n }\n })\n }\n\n /**\n * Notify global wildcard listeners of an event\n * Fires for ALL events dispatched through this element\n *\n * @param event - The event to dispatch to global wildcard listeners\n * @private\n */\n private _notifyGlobalWildcardListeners (event: Event): void {\n if (this._globalWildcardListeners.size === 0) {\n return\n }\n\n // Call each global wildcard listener\n this._globalWildcardListeners.forEach(({ listener }) => {\n try {\n if (typeof listener === 'function') {\n listener.call(this, event)\n } else if (listener && typeof listener.handleEvent === 'function') {\n listener.handleEvent(event)\n }\n } catch (error) {\n // Log errors but don't let one listener break others\n console.error('Error in global wildcard event listener:', error)\n }\n })\n }\n\n connectedCallback () {\n this.render()\n }\n\n abstract render ():any\n\n qs<K extends keyof HTMLElementTagNameMap>(\n selector:K\n ):HTMLElementTagNameMap[K]|null;\n\n qs<E extends Element = Element>(selector:string):E|null;\n qs (selector:string):Element|null {\n return this.querySelector(selector)\n }\n\n qsa<K extends keyof HTMLElementTagNameMap>(\n selector:K\n ):HTMLElementTagNameMap[K]|null;\n\n qsa<E extends Element = Element>(selector:string):E|null;\n qsa (selector:string):NodeListOf<Element> {\n return this.querySelectorAll(selector)\n }\n\n /**\n * Take a non-namepsaced event name, return namespace event name.\n *\n * @param {string} evType The non-namespace event name\n * @returns {string} Namespaced event name, eg, `my-component:click`\n */\n static event (evType:string):string {\n return eventName(this.TAG, evType)\n }\n\n /**\n * Emit a namespaced event.\n *\n * @param type (non-namespaced) event type string\n * @param opts `bubbles`, `detail`, and `cancelable`. Default is\n * `{ bubbles: true, cancelable: true }`\n * @returns {boolean}\n */\n emit<T = any> (type:string, opts:Partial<{\n bubbles:boolean,\n cancelable:boolean,\n detail:CustomEvent<T>['detail']\n }> = {}):boolean {\n if (type === '*') throw new Error('Do not emit the literal \"*\"')\n\n const { bubbles = true, cancelable = true, detail } = opts\n const namespacedType = `${this.TAG}:${type}`\n\n const event = new CustomEvent(namespacedType, {\n bubbles,\n cancelable,\n detail\n })\n\n // This will trigger both specific listeners and global wildcard\n // listeners (**)\n const result = this.dispatchEvent(event)\n\n // Notify namespaced wildcard listeners (*)\n this._notifyNamespacedWildcardListeners(event)\n\n return result\n }\n\n /**\n * Override dispatchEvent to notify global wildcard listeners\n * This ensures that '**' listeners catch ALL events\n *\n * @param event - The event to dispatch\n * @returns true if the event was not cancelled\n */\n dispatchEvent (event: Event): boolean {\n const result = super.dispatchEvent(event)\n\n // Notify global wildcard listeners for ALL events\n this._notifyGlobalWildcardListeners(event)\n\n return result\n }\n\n /**\n * Create and emit an event, no namespacing.\n */\n dispatch<T> (type:string, opts:Partial<{\n bubbles:boolean,\n cancelable:boolean,\n detail:CustomEvent<T>['detail']\n }> = {}):boolean {\n const event = new CustomEvent(type, {\n bubbles: (opts.bubbles === undefined) ? true : opts.bubbles,\n cancelable: (opts.cancelable === undefined) ? true : opts.cancelable,\n detail: opts.detail\n })\n\n return this.dispatchEvent(event)\n }\n\n /**\n * Listen for namespaced events.\n */\n on<T extends Event = Event> (\n evName:string,\n handler:(ev:T)=>any,\n options?:boolean|AddEventListenerOptions\n ):void;\n\n on (\n evName:string,\n handler:EventListenerObject,\n options?:boolean|AddEventListenerOptions\n ):void;\n\n on (\n evName:string,\n handler:((ev:Event)=>any)|EventListenerObject,\n options?:boolean|AddEventListenerOptions\n ):void {\n const fullEvName = WebComponent.event.call(this, evName)\n this.addEventListener(fullEvName, handler as EventListenerOrEventListenerObject, options)\n }\n\n /**\n * Enhanced removeEventListener that supports wildcards:\n * - Component.event('*') - Remove namespaced wildcard listener\n * - '*' - Remove global wildcard listener\n *\n * @param type - Event type, Component.event('*') for namespaced, or '*'\n * for global\n * @param listener - Event listener function or object to remove\n * @param options - Event listener options\n */\n removeEventListener (\n type:string,\n listener:EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void {\n if (type === WebComponent.event.call(this, '*')) {\n // Remove namespaced wildcard listener\n if (listener && this._namespacedWildcardListeners) {\n for (const entry of this._namespacedWildcardListeners) {\n if (entry.listener === listener) {\n this._namespacedWildcardListeners.delete(entry)\n break\n }\n }\n }\n } else if (type === '*') {\n // Remove global wildcard listener\n if (listener && this._globalWildcardListeners) {\n for (const entry of this._globalWildcardListeners) {\n if (entry.listener === listener) {\n this._globalWildcardListeners.delete(entry)\n break\n }\n }\n }\n } else {\n // Normal event listener - delegate to native implementation\n super.removeEventListener(type, listener, options)\n }\n }\n}\n\nfunction eventName (namespace:string, evType:string) {\n return `${namespace}:${evType}`\n}\n\n/**\n * Check if the given tag name has been registered.\n *\n * @see {@link https://stackoverflow.com/a/28210364 stackoverflow}\n * @param {string} elName The custom element tag name.\n * @returns {boolean} True if the given name has been registered already.\n */\nexport function isRegistered (elName:string):boolean {\n return document.createElement(elName).constructor !== window.HTMLElement\n}\n\nexport function define (name:string, element:CustomElementConstructor) {\n if (!window) return\n if (!('customElements' in window)) return\n\n if (!isRegistered(name)) {\n window.customElements.define(name, element)\n }\n}\n", "export type Attrs = Record<string, undefined|null|string|number|boolean|(string|number)[]>\n\n/**\n * Transform an object into an HTML attributes string. The object should be\n * like `{ attributeName: value }`.\n *\n * @param attrs An object for the attributes.\n * @returns {string} A string suitable for use as HTML attributes.\n */\nexport function toAttributes (attrs:Attrs):string {\n return Object.keys(attrs).reduce((acc, k) => {\n const value = attrs[k]\n if (!value) return acc\n\n if (typeof value === 'boolean') {\n if (value) return (acc + ` ${k}`).trim()\n return acc\n }\n\n if (Array.isArray(value)) {\n return (acc + ` ${k}=\"${value.join(' ')}\"`)\n }\n\n return (acc + ` ${k}=\"${value}\"`).trim()\n }, '')\n}\n", "export { toAttributes } from './attributes.js'\n\n/**\n * Check if the given tag name has been registered.\n *\n * @see {@link https://stackoverflow.com/a/28210364 stackoverflow}\n * @param {string} elName The custom element tag name.\n * @returns {boolean} True if the given name has been registered already.\n */\nexport function isRegistered (elName:string):boolean {\n return document.createElement(elName).constructor !== window.HTMLElement\n}\n\nexport function define (name:string, element:CustomElementConstructor) {\n if (!window) return\n if (!('customElements' in window)) return\n\n if (!isRegistered(name)) {\n window.customElements.define(name, element)\n }\n}\n\nexport const qs = document.querySelector.bind(document)\nexport const qsa = document.querySelectorAll.bind(document)\n", "// any combination of spaces and punctuation characters\n// thanks to http://stackoverflow.com/a/25575009\nconst wordSeparators = /[\\s\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,\\-.\\/:;<=>?@\\[\\]^_`{|}~]+/\nconst capitalPlusLower = /[A-Z\u00C0-\u00DD\\u00C0-\\u00D6\\u00D9-\\u00DD][a-z\u00E0-\u00FF]/g\nconst capitals = /[A-Z\u00C0-\u00DD\\u00C0-\\u00D6\\u00D9-\\u00DD]+/g\n\nexport function kebabCase (str:string):string {\n // replace word starts with space + lower case equivalent for later parsing\n // 1) treat cap + lower as start of new word\n str = str.replace(capitalPlusLower, function (match) {\n // match is one caps followed by one non-cap\n return ' ' + (match[0].toLowerCase() || match[0]) + match[1]\n })\n // 2) treat all remaining capitals as words\n str = str.replace(capitals, function (match) {\n // match is a series of caps\n return ' ' + match.toLowerCase()\n })\n return str\n .trim()\n .split(wordSeparators)\n .join('-')\n .replace(/^-/, '')\n .replace(/-\\s*$/, '')\n}\n\nexport default kebabCase\n", "import { type Attrs } from '@substrate-system/web-component/attributes'\n\nexport function createRenderer (\n createHtml:(attrs?:Attrs)=>string,\n tag:string\n) {\n return function (attrs?:Attrs):string {\n const html = createHtml(attrs)\n\n // running in node?\n return typeof window === 'undefined' ?\n `<${tag} class=\"icon\">\n ${html}\n </${tag}>` :\n html\n }\n}\n", "import { kebabCase } from '@substrate-system/kebab-case'\nimport { createRenderer } from '../util.js'\n\nexport const eyeSlash = createRenderer(createHtml, 'eye-slash')\n\nfunction createHtml ({ title }:{ title?:string } = {}) {\n if (!title) title = 'Hide'\n\n const html = `<svg\n class=\"icon eye-slash\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 640 512\"\n role=\"image\"\n aria-labelledby=\"${kebabCase(title)}\"\n >\n <title id=${kebabCase(title)}>${title}</title>\n <!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.-->\n <path d=\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z\" />\n </svg>`\n\n return html\n}\n\nexport function outerHtml ({ title }:{ title?:string }) {\n return `<eye-slash>${eyeSlash({ title })}</eye-slash>`\n}\n", "import { define as _define } from '@substrate-system/web-component/util'\nimport { eyeSlash as render } from './render/eye-slash'\n\n// for document.querySelector\ndeclare global {\n interface HTMLElementTagNameMap {\n 'eye-slash': EyeSlash\n }\n}\n\nexport class EyeSlash extends HTMLElement {\n static TAG = 'eye-slash'\n _title:string\n\n constructor () {\n super()\n this._title = this.getAttribute('title') || 'Hide'\n }\n\n /**\n * Only watching for 'title'.\n */\n attributeChangedCallback (_name, _oldValue, newValue) {\n this._title = newValue\n this.render()\n }\n\n connectedCallback () {\n const title = this.getAttribute('title')\n if (title === undefined || title === null) {\n this._title = 'Hide'\n } else {\n this._title = title\n }\n\n this.render()\n }\n\n render () {\n const title = this._title\n\n this.innerHTML = render({ title })\n }\n}\n\nexport function define () {\n _define(EyeSlash.TAG, EyeSlash)\n}\n", "import { kebabCase } from '@substrate-system/kebab-case'\nimport { createRenderer } from '../util.js'\n\nexport const render = createRenderer(createHtml, 'eye-regular')\n\nfunction createHtml ({ title }:{ title?:string } = {}) {\n if (!title) title = 'Show'\n const kebabTitle = kebabCase(title)\n\n const html = `<svg\n class=\"icon eye-regular\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 576 512\"\n role=\"image\"\n aria-labelledby=\"${kebabTitle}\"\n >\n <title id=\"${kebabTitle}\">${title}</title>\n <!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.-->\n <path d=\"M288 80c-65.2 0-118.8 29.6-159.9 67.7C89.6 183.5 63 226 49.4 256c13.6 30 40.2 72.5 78.6 108.3C169.2 402.4 222.8 432 288 432s118.8-29.6 159.9-67.7C486.4 328.5 513 286 526.6 256c-13.6-30-40.2-72.5-78.6-108.3C406.8 109.6 353.2 80 288 80zM95.4 112.6C142.5 68.8 207.2 32 288 32s145.5 36.8 192.6 80.6c46.8 43.5 78.1 95.4 93 131.1c3.3 7.9 3.3 16.7 0 24.6c-14.9 35.7-46.2 87.7-93 131.1C433.5 443.2 368.8 480 288 480s-145.5-36.8-192.6-80.6C48.6 356 17.3 304 2.5 268.3c-3.3-7.9-3.3-16.7 0-24.6C17.3 208 48.6 156 95.4 112.6zM288 336c44.2 0 80-35.8 80-80s-35.8-80-80-80c-.7 0-1.3 0-2 0c1.3 5.1 2 10.5 2 16c0 35.3-28.7 64-64 64c-5.5 0-10.9-.7-16-2c0 .7 0 1.3 0 2c0 44.2 35.8 80 80 80zm0-208a128 128 0 1 1 0 256 128 128 0 1 1 0-256z\" />\n </svg>`\n\n return html\n}\n\nexport function outerHtml ({ title }:{ title?:string }) {\n return `<eye-regular>${render({ title })}</eye-regular>`\n}\n", "import { define as _define } from '@substrate-system/web-component/util'\nimport { render } from './render/eye-regular.js'\n\n// for document.querySelector\ndeclare global {\n interface HTMLElementTagNameMap {\n 'eye-regular': EyeRegular\n }\n}\n\nexport class EyeRegular extends HTMLElement {\n static TAG = 'eye-regular'\n _title:string\n\n constructor () {\n super()\n this._title = this.getAttribute('title') || 'See'\n }\n\n /**\n * Only watching for 'title'.\n */\n attributeChangedCallback (_name, _oldValue, newValue) {\n this._title = newValue\n this.render()\n }\n\n connectedCallback () {\n const title = this.getAttribute('title')\n if (title === undefined || title === null) {\n this._title = 'See'\n } else {\n this._title = title\n }\n\n this.render()\n }\n\n render () {\n const title = this._title\n if (!title) return\n\n this.innerHTML = render({ title })\n }\n}\n\nexport function define () {\n _define(EyeRegular.TAG, EyeRegular)\n}\n", "export const ARIA_ATTRIBUTES = [\n 'aria-activedescendant',\n 'aria-atomic',\n 'aria-autocomplete',\n 'aria-braillelabel',\n 'aria-brailleroledescription',\n 'aria-busy',\n 'aria-checked',\n 'aria-colcount',\n 'aria-colindex',\n 'aria-colindextext',\n 'aria-colspan',\n 'aria-controls',\n 'aria-current',\n 'aria-describedby',\n 'aria-description',\n 'aria-details',\n 'aria-disabled',\n 'aria-dropeffect',\n 'aria-errormessage',\n 'aria-expanded',\n 'aria-flowto',\n 'aria-grabbed',\n 'aria-haspopup',\n 'aria-hidden',\n 'aria-invalid',\n 'aria-keyshortcuts',\n 'aria-label',\n 'aria-labelledby',\n 'aria-level',\n 'aria-live',\n 'aria-modal',\n 'aria-multiline',\n 'aria-multiselectable',\n 'aria-orientation',\n 'aria-owns',\n 'aria-placeholder',\n 'aria-posinset',\n 'aria-pressed',\n 'aria-readonly',\n 'aria-relevant',\n 'aria-required',\n 'aria-roledescription',\n 'aria-rowcount',\n 'aria-rowindex',\n 'aria-rowindextext',\n 'aria-rowspan',\n 'aria-selected',\n 'aria-setsize',\n 'aria-sort',\n 'aria-valuemax',\n 'aria-valuemin',\n 'aria-valuenow',\n 'aria-valuetext'\n]\n\nexport const INPUT_ATTRIBUTES = [\n 'accept',\n 'alt',\n 'autocomplete',\n 'autocapitalize',\n 'autocorrect',\n 'autofocus',\n 'capture',\n 'dirname',\n 'disabled',\n 'enterkeyhint',\n 'form',\n 'inputmode',\n 'list',\n 'max',\n 'maxlength',\n 'min',\n 'minlength',\n 'multiple',\n 'name',\n 'pattern',\n 'placeholder',\n 'readonly',\n 'required',\n 'size',\n 'spellcheck',\n 'step',\n 'tabindex',\n 'title',\n 'value'\n]\n", "import { WebComponent } from '@substrate-system/web-component'\nimport { define } from '@substrate-system/web-component/util'\nimport { define as slashDefine } from '@substrate-system/icons/eye-slash'\nimport { define as regularDefine } from '@substrate-system/icons/eye-regular'\nimport { ARIA_ATTRIBUTES, INPUT_ATTRIBUTES } from './util'\n// import Debug from '@substrate-system/debug'\n// const debug = Debug('password-input')\n\nslashDefine()\nregularDefine()\n\n// for docuement.querySelector\ndeclare global {\n interface HTMLElementTagNameMap {\n 'password-input':PasswordInput\n }\n}\n\n// export class PasswordInput extends HTMLElement {\nexport class PasswordInput extends WebComponent.create('password-input') {\n static TAG = 'password-input'\n static INPUT_ATTRIBUTES = INPUT_ATTRIBUTES\n static ARIA_ATTRIBUTES = ARIA_ATTRIBUTES\n\n static observedAttributes = (['visible', 'label', 'id'])\n .concat(PasswordInput.INPUT_ATTRIBUTES)\n .concat(PasswordInput.ARIA_ATTRIBUTES)\n\n inputId:string|null = null\n inputAriaAttributes:Record<string, string> = {}\n ignoredAriaCallbackNames:Set<string> = new Set()\n ignoredIdCallback = false\n generatedInputId = `password-input-${Math.random().toString(36).slice(2, 10)}`\n\n // empty string = is visible\n // null = not visible\n handleChange_visible (oldValue:string|null, newValue:string|null) {\n this.reRender()\n if (oldValue === newValue) return\n this.emit(newValue !== null ? 'show' : 'hide')\n }\n\n handleChange_label (_oldValue, _newValue) {\n this.render()\n this._listen()\n }\n\n handleChange_aria (\n name:string,\n _oldValue:string|null,\n newValue:string|null\n ) {\n if (this.ignoredAriaCallbackNames.has(name)) {\n this.ignoredAriaCallbackNames.delete(name)\n return\n }\n\n if (newValue === null) {\n delete this.inputAriaAttributes[name]\n this.querySelector('input')?.removeAttribute(name)\n return\n }\n\n this.inputAriaAttributes[name] = newValue\n this.querySelector('input')?.setAttribute(name, newValue)\n\n if (this.hasAttribute(name)) {\n this.ignoredAriaCallbackNames.add(name)\n this.removeAttribute(name)\n }\n }\n\n handleChange_id (_oldValue:string|null, newValue:string|null) {\n if (this.ignoredIdCallback) {\n this.ignoredIdCallback = false\n return\n }\n\n if (newValue === null) {\n this.inputId = null\n this.querySelector('input')?.removeAttribute('id')\n return\n }\n\n this.inputId = newValue\n this.querySelector('input')?.setAttribute('id', newValue)\n\n if (this.hasAttribute('id')) {\n this.ignoredIdCallback = true\n this.removeAttribute('id')\n }\n }\n\n handleChange_inputAttribute (name:string, newValue:string|null) {\n const input = this.querySelector('input')\n if (!input) return\n\n if (newValue === null) {\n input.removeAttribute(name)\n return\n }\n\n input.setAttribute(name, newValue)\n }\n\n /**\n * Listen for change in visiblity.\n *\n * @param {string} name The attribute name\n * @param {string} oldValue The old attribute value\n * @param {string} newValue The new attribute value\n */\n async attributeChangedCallback (\n name:string,\n oldValue:string,\n newValue:string\n ) {\n if (name === 'id') {\n this.handleChange_id(oldValue, newValue)\n return\n }\n\n if (name.startsWith('aria-')) {\n this.handleChange_aria(name, oldValue, newValue)\n return\n }\n\n if (PasswordInput.INPUT_ATTRIBUTES.includes(name)) {\n this.handleChange_inputAttribute(name, newValue)\n return\n }\n\n if (this[`handleChange_${name}`]) {\n this[`handleChange_${name}`](oldValue, newValue)\n }\n }\n\n connectedCallback () {\n this.render()\n this._listen()\n }\n\n _listen () {\n const btn = this.querySelector('button')!\n btn.addEventListener('click', (ev) => {\n ev.preventDefault()\n this.isVisible = !this.isVisible\n })\n }\n\n getType ():'text'|'password' {\n return this.isVisible ? 'text' : 'password'\n }\n\n set isVisible (value:boolean) {\n if (value) {\n this.setAttribute('visible', '')\n } else {\n this.removeAttribute('visible')\n }\n }\n\n get isVisible ():boolean {\n return this.hasAttribute('visible')\n }\n\n set label (value:string|null) {\n if (value === null) {\n this.removeAttribute('label')\n return\n }\n\n this.setAttribute('label', value)\n }\n\n get label ():string|null {\n return this.getAttribute('label')\n }\n\n getButtonContent () {\n return (this.isVisible ?\n '<eye-regular></eye-regular><span class=\"visually-hidden\">Hide</span>' :\n '<eye-slash></eye-slash><span class=\"visually-hidden\">Show</span>')\n }\n\n getInputIdForRender () {\n return this.inputId || this.generatedInputId\n }\n\n /**\n * Change the visibility button state.\n */\n reRender () {\n const btn = this.querySelector('.pw-visibility')\n const input = this.querySelector('input')\n if (!btn || !input) return\n const inputId = this.getInputIdForRender()\n btn.innerHTML = this.getButtonContent()\n btn.setAttribute('aria-pressed', this.isVisible ? 'true' : 'false')\n btn.setAttribute('aria-controls', inputId)\n this.setAttribute('type', this.getType())\n input.setAttribute('type', this.getType())\n input.setAttribute('id', inputId)\n }\n\n render () {\n const name = this.getAttribute('name')\n const label = this.getAttribute('label')\n const hostId = this.getAttribute('id')\n const hostAriaAttributes = Array.from(this.attributes)\n .filter(attr => attr.name.startsWith('aria-'))\n\n if (hostId !== null) {\n this.inputId = hostId\n }\n\n for (const attr of hostAriaAttributes) {\n this.inputAriaAttributes[attr.name] = attr.value\n }\n\n // create string from attributes\n const attrs = Array.from(this.attributes)\n .filter(attr =>\n attr.name !== 'label' &&\n attr.name !== 'id' &&\n !attr.name.startsWith('aria-')\n )\n .map(attr => attr.name + (attr.value === '' ?\n '' :\n ('=' + `\"${attr.value}\"`))\n )\n .join(' ')\n\n const classes = (this.getAttribute('class') ?? '').split(' ')\n .concat(['password', 'input', name || ''])\n .filter(Boolean)\n .join(' ')\n\n const inputId = this.getInputIdForRender()\n const renderedIdAttribute = `id=\"${inputId}\"`\n const ariaAttributes = Object.entries(this.inputAriaAttributes)\n .map(([attrName, attrValue]) => {\n return (attrName + (attrValue === '' ?\n '' :\n ('=' + `\"${attrValue}\"`)))\n })\n .join(' ')\n\n this.innerHTML = label ? `\n <div class=\"${classes}\">\n <label class=\"label-content\" for=\"${inputId}\">${label}</label>\n <span class=\"input\">\n <input\n ${renderedIdAttribute}\n ${ariaAttributes}\n ${attrs}\n type=${this.getType()} />\n <button\n type=\"button\"\n class=\"pw-visibility\"\n aria-pressed=\"${this.isVisible ? 'true' : 'false'}\"\n aria-controls=\"${inputId}\">\n ${this.getButtonContent()}\n </button>\n </span>\n </div>\n ` : `\n <div class=\"${classes}\">\n <span class=\"input\">\n <input\n ${renderedIdAttribute}\n ${ariaAttributes}\n ${attrs}\n type=${this.getType()} />\n <button\n type=\"button\"\n class=\"pw-visibility\"\n aria-pressed=\"${this.isVisible ? 'true' : 'false'}\"\n aria-controls=\"${inputId}\">\n ${this.getButtonContent()}\n </button>\n </span>\n </div>\n `\n\n if (this.hasAttribute('id')) {\n this.ignoredIdCallback = true\n this.removeAttribute('id')\n }\n for (const attr of hostAriaAttributes) {\n this.ignoredAriaCallbackNames.add(attr.name)\n this.removeAttribute(attr.name)\n }\n }\n}\n\ndefine(PasswordInput.TAG, PasswordInput)\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["toAttributes", "attrs", "acc", "k", "value", "__name", "isRegistered", "elName", "__name", "define", "name", "element", "qs", "qsa", "match", "el", "s", "WebComponent", "_WebComponent", "__name", "el", "match", "elementName", "CreatedClass", "evType", "define", "name", "oldValue", "newValue", "handler", "type", "
|
|
4
|
+
"sourcesContent": ["export type Attrs = Record<string, undefined|null|string|number|boolean|(string|number)[]>\n\n/**\n * Transform an object into an HTML attributes string. The object should be\n * like `{ attributeName: value }`.\n *\n * @param attrs An object for the attributes.\n * @returns {string} A string suitable for use as HTML attributes.\n */\nexport function toAttributes (attrs:Attrs):string {\n return Object.keys(attrs).reduce((acc, k) => {\n const value = attrs[k]\n if (!value) return acc\n\n if (typeof value === 'boolean') {\n if (value) return (acc + ` ${k}`).trim()\n return acc\n }\n\n if (Array.isArray(value)) {\n return (acc + ` ${k}=\"${value.join(' ')}\"`)\n }\n\n return (acc + ` ${k}=\"${value}\"`).trim()\n }, '')\n}\n", "export { toAttributes } from './attributes.js'\n\n/**\n * Check if the given tag name has been registered.\n *\n * @see {@link https://stackoverflow.com/a/28210364 stackoverflow}\n * @param {string} elName The custom element tag name.\n * @returns {boolean} True if the given name has been registered already.\n */\nexport function isRegistered (elName:string):boolean {\n return document.createElement(elName).constructor !== window.HTMLElement\n}\n\nexport function define (name:string, element:CustomElementConstructor) {\n if (!window) return\n if (!('customElements' in window)) return\n\n if (!isRegistered(name)) {\n window.customElements.define(name, element)\n }\n}\n\nexport const qs = document.querySelector.bind(document)\nexport const qsa = document.querySelectorAll.bind(document)\n\n/**\n * Get the closes parent element matching the given selector.\n * @param el Element to start from\n * @param s Selector for an element\n * @returns {HTMLElement|null} The closes parent element that matches.\n */\nexport function match (el:HTMLElement, s:string):HTMLElement|null {\n if (!el.matches) el = el.parentElement!\n return el.matches(s) ? el : el.closest(s)\n}\n", "import { match as _match } from './util.js'\n\nexport abstract class WebComponent extends window.HTMLElement {\n static TAG:string = ''\n TAG:string = ''\n\n /**\n * Declare boolean attributes that should be reflected as properties.\n * The base class auto-generates getters/setters and includes these in\n * `observedAttributes`. Framework property assignment (e.g. Preact's\n * `el.disabled = true`) will then correctly set the attribute.\n */\n static reflectedBooleanAttributes:string[] = []\n\n /**\n * Declare string attributes that should be reflected as properties.\n * Getter returns `string|null` (null when attribute is absent).\n * Setting `null` or `undefined` removes the attribute.\n */\n static reflectedStringAttributes:string[] = []\n\n /**\n * Auto-derived from `reflectedBooleanAttributes` and\n * `reflectedStringAttributes`. Override with `super.observedAttributes`\n * to add non-reflected observed attributes:\n *\n * ```ts\n * static get observedAttributes () {\n * return [...super.observedAttributes, 'aria-label']\n * }\n * ```\n */\n static get observedAttributes ():string[] {\n return [...new Set([\n ...this.reflectedBooleanAttributes,\n ...this.reflectedStringAttributes,\n ])]\n }\n\n static match (el:HTMLElement):HTMLElement|null {\n return _match(el, this.TAG)\n }\n\n static create (elementName:string):typeof WebComponent & {\n new (...args:any[]):WebComponent;\n TAG:string;\n define: typeof WebComponent.define;\n event: typeof WebComponent.event;\n } {\n const CreatedClass = class extends WebComponent {\n static TAG = elementName\n TAG = elementName\n render () {\n throw new Error('`render` should be implemented by children')\n }\n }\n\n // Copy static methods with proper binding\n CreatedClass.define = function () {\n return WebComponent.define.call(this)\n }\n CreatedClass.event = function (evType:string) {\n return WebComponent.event.call(this, evType)\n }\n\n return CreatedClass\n }\n\n static define<T extends {\n new (...args:any[]):WebComponent;\n TAG:string;\n }>(this:T) {\n define(this.TAG, this)\n }\n\n /**\n * Runs when the value of an attribute is changed.\n *\n * Depends on `static observedAttributes`.\n *\n * Should name methods like `handleChange_disabled`.\n *\n * @param {string} name The attribute name\n * @param {string} oldValue The old attribute value\n * @param {string} newValue The new attribute value\n */\n attributeChangedCallback (\n name:string,\n oldValue:string,\n newValue:string\n ):void {\n const handler = this[handlerKey(name)]\n if (handler) {\n handler.call(this, oldValue, newValue)\n }\n }\n\n connectedCallback () {\n this.render()\n }\n\n abstract render ():any\n\n qs<K extends keyof HTMLElementTagNameMap>(\n selector:K\n ):HTMLElementTagNameMap[K]|null;\n\n qs<E extends Element = Element>(selector:string):E|null;\n qs (selector:string):Element|null {\n return this.querySelector(selector)\n }\n\n qsa<K extends keyof HTMLElementTagNameMap>(\n selector:K\n ):HTMLElementTagNameMap[K]|null;\n\n qsa<E extends Element = Element>(selector:string):E|null;\n qsa (selector:string):NodeListOf<Element> {\n return this.querySelectorAll(selector)\n }\n\n /**\n * Take a non-namepsaced event name, return namespace event name.\n *\n * @param {string} evType The non-namespace event name\n * @returns {string} Namespaced event name, eg, `my-component:click`\n */\n static event (evType:string):string {\n return eventName(this.TAG, evType)\n }\n\n /**\n * Emit a namespaced event.\n *\n * @param type (non-namespaced) event type string\n * @param opts `bubbles`, `detail`, and `cancelable`. Default is\n * `{ bubbles: true, cancelable: true }`\n * @returns {boolean}\n */\n emit<T = any> (type:string, opts:Partial<{\n bubbles:boolean,\n cancelable:boolean,\n detail:CustomEvent<T>['detail']\n }> = {}):boolean {\n if (type === '*') throw new Error('Do not emit the literal \"*\"')\n\n const { bubbles = true, cancelable = true, detail } = opts\n const namespacedType = `${this.TAG}:${type}`\n\n const event = new CustomEvent(namespacedType, {\n bubbles,\n cancelable,\n detail\n })\n\n return this.dispatchEvent(event)\n }\n\n /**\n * Create and emit an event, no namespacing.\n */\n dispatch<T> (type:string, opts:Partial<{\n bubbles:boolean,\n cancelable:boolean,\n detail:CustomEvent<T>['detail']\n }> = {}):boolean {\n const event = new CustomEvent(type, {\n bubbles: (opts.bubbles === undefined) ? true : opts.bubbles,\n cancelable: (opts.cancelable === undefined) ? true : opts.cancelable,\n detail: opts.detail\n })\n\n return this.dispatchEvent(event)\n }\n\n /**\n * Listen for namespaced events.\n */\n on<T extends Event = Event> (\n evName:string,\n handler:(ev:T)=>any,\n options?:boolean|AddEventListenerOptions\n ):void;\n\n on (\n evName:string,\n handler:EventListenerObject,\n options?:boolean|AddEventListenerOptions\n ):void;\n\n on (\n evName:string,\n handler:((ev:Event)=>any)|EventListenerObject,\n options?:boolean|AddEventListenerOptions\n ):void {\n const fullEvName = WebComponent.event.call(this, evName)\n this.addEventListener(fullEvName, handler as EventListenerOrEventListenerObject, options)\n }\n\n /**\n * Remove a namespaced event listener.\n */\n off<T extends Event = Event> (\n evName:string,\n handler:(ev:T)=>any,\n options?:boolean|EventListenerOptions\n ):void;\n\n off (\n evName:string,\n handler:EventListenerObject,\n options?:boolean|EventListenerOptions\n ):void;\n\n off (\n evName:string,\n handler:((ev:Event)=>any)|EventListenerObject,\n options?:boolean|EventListenerOptions\n ):void {\n const fullEvName = WebComponent.event.call(this, evName)\n this.removeEventListener(fullEvName, handler as EventListenerOrEventListenerObject, options)\n }\n}\n\nfunction eventName (namespace:string, evType:string) {\n return `${namespace}:${evType}`\n}\n\n/**\n * Cache of attribute name -> handler method name (`handleChange_<attr>`).\n * Building the lookup string once per attribute avoids re-allocating it on\n * every `attributeChangedCallback`.\n */\nconst handlerKeys:Record<string, string> = Object.create(null)\nfunction handlerKey (name:string):string {\n return handlerKeys[name] || (handlerKeys[name] = `handleChange_${name}`)\n}\n\n/**\n * Check if the given tag name has been registered.\n *\n * @see {@link https://stackoverflow.com/a/28210364 stackoverflow}\n * @param {string} elName The custom element tag name.\n * @returns {boolean} True if the given name has been registered already.\n */\nexport function isRegistered (elName:string):boolean {\n return document.createElement(elName).constructor !== window.HTMLElement\n}\n\nexport function define (name:string, element:CustomElementConstructor) {\n if (typeof window === 'undefined') return\n if (!('customElements' in window)) return\n if (isRegistered(name)) return\n\n const ctor = element as unknown as typeof WebComponent\n const boolAttrs:string[] = ctor.reflectedBooleanAttributes ?? []\n const strAttrs:string[] = ctor.reflectedStringAttributes ?? []\n const proto = (element as any).prototype\n\n for (const attr of boolAttrs) {\n // Skip built-in IDL attributes on HTMLElement and ancestors\n // (covers Element.prototype, Node.prototype, etc.)\n if (attr in HTMLElement.prototype) continue\n // Skip if the subclass already defines an own-property accessor\n if (Object.getOwnPropertyDescriptor(proto, attr)) continue\n Object.defineProperty(proto, attr, {\n get (this:HTMLElement):boolean {\n return this.hasAttribute(attr)\n },\n set (this:HTMLElement, v:unknown) {\n this.toggleAttribute(attr, Boolean(v))\n },\n configurable: true,\n enumerable: true,\n })\n }\n\n for (const attr of strAttrs) {\n if (boolAttrs.includes(attr)) {\n console.warn(\n `[web-component] \"${attr}\" appears in both ` +\n 'reflectedBooleanAttributes and reflectedStringAttributes ' +\n `on <${name}>. Boolean wins.`\n )\n continue\n }\n if (attr in HTMLElement.prototype) continue\n if (Object.getOwnPropertyDescriptor(proto, attr)) continue\n Object.defineProperty(proto, attr, {\n get (this:HTMLElement):string|null {\n return this.getAttribute(attr)\n },\n set (this:HTMLElement, v:unknown) {\n // null and undefined both remove the attribute\n if (v == null) {\n this.removeAttribute(attr)\n } else {\n this.setAttribute(attr, String(v))\n }\n },\n configurable: true,\n enumerable: true,\n })\n }\n\n window.customElements.define(name, element)\n}\n", "export type Attrs = Record<string, undefined|null|string|number|boolean|(string|number)[]>\n\n/**\n * Transform an object into an HTML attributes string. The object should be\n * like `{ attributeName: value }`.\n *\n * @param attrs An object for the attributes.\n * @returns {string} A string suitable for use as HTML attributes.\n */\nexport function toAttributes (attrs:Attrs):string {\n return Object.keys(attrs).reduce((acc, k) => {\n const value = attrs[k]\n if (!value) return acc\n\n if (typeof value === 'boolean') {\n if (value) return (acc + ` ${k}`).trim()\n return acc\n }\n\n if (Array.isArray(value)) {\n return (acc + ` ${k}=\"${value.join(' ')}\"`)\n }\n\n return (acc + ` ${k}=\"${value}\"`).trim()\n }, '')\n}\n", "export { toAttributes } from './attributes.js'\n\n/**\n * Check if the given tag name has been registered.\n *\n * @see {@link https://stackoverflow.com/a/28210364 stackoverflow}\n * @param {string} elName The custom element tag name.\n * @returns {boolean} True if the given name has been registered already.\n */\nexport function isRegistered (elName:string):boolean {\n return document.createElement(elName).constructor !== window.HTMLElement\n}\n\nexport function define (name:string, element:CustomElementConstructor) {\n if (!window) return\n if (!('customElements' in window)) return\n\n if (!isRegistered(name)) {\n window.customElements.define(name, element)\n }\n}\n\nexport const qs = document.querySelector.bind(document)\nexport const qsa = document.querySelectorAll.bind(document)\n", "// any combination of spaces and punctuation characters\n// thanks to http://stackoverflow.com/a/25575009\nconst wordSeparators = /[\\s\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,\\-.\\/:;<=>?@\\[\\]^_`{|}~]+/\nconst capitalPlusLower = /[A-Z\u00C0-\u00DD\\u00C0-\\u00D6\\u00D9-\\u00DD][a-z\u00E0-\u00FF]/g\nconst capitals = /[A-Z\u00C0-\u00DD\\u00C0-\\u00D6\\u00D9-\\u00DD]+/g\n\nexport function kebabCase (str:string):string {\n // replace word starts with space + lower case equivalent for later parsing\n // 1) treat cap + lower as start of new word\n str = str.replace(capitalPlusLower, function (match) {\n // match is one caps followed by one non-cap\n return ' ' + (match[0].toLowerCase() || match[0]) + match[1]\n })\n // 2) treat all remaining capitals as words\n str = str.replace(capitals, function (match) {\n // match is a series of caps\n return ' ' + match.toLowerCase()\n })\n return str\n .trim()\n .split(wordSeparators)\n .join('-')\n .replace(/^-/, '')\n .replace(/-\\s*$/, '')\n}\n\nexport default kebabCase\n", "import { type Attrs } from '@substrate-system/web-component/attributes'\n\nexport function createRenderer (\n createHtml:(attrs?:Attrs)=>string,\n tag:string\n) {\n return function (attrs?:Attrs):string {\n const html = createHtml(attrs)\n\n // running in node?\n return typeof window === 'undefined' ?\n `<${tag} class=\"icon\">\n ${html}\n </${tag}>` :\n html\n }\n}\n", "import { kebabCase } from '@substrate-system/kebab-case'\nimport { createRenderer } from '../util.js'\n\nexport const eyeSlash = createRenderer(createHtml, 'eye-slash')\n\nfunction createHtml ({ title }:{ title?:string } = {}) {\n if (!title) title = 'Hide'\n\n const html = `<svg\n class=\"icon eye-slash\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 640 512\"\n role=\"image\"\n aria-labelledby=\"${kebabCase(title)}\"\n >\n <title id=${kebabCase(title)}>${title}</title>\n <!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.-->\n <path d=\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z\" />\n </svg>`\n\n return html\n}\n\nexport function outerHtml ({ title }:{ title?:string }) {\n return `<eye-slash>${eyeSlash({ title })}</eye-slash>`\n}\n", "import { define as _define } from '@substrate-system/web-component/util'\nimport { eyeSlash as render } from './render/eye-slash'\n\n// for document.querySelector\ndeclare global {\n interface HTMLElementTagNameMap {\n 'eye-slash': EyeSlash\n }\n}\n\nexport class EyeSlash extends HTMLElement {\n static TAG = 'eye-slash'\n _title:string\n\n constructor () {\n super()\n this._title = this.getAttribute('title') || 'Hide'\n }\n\n /**\n * Only watching for 'title'.\n */\n attributeChangedCallback (_name, _oldValue, newValue) {\n this._title = newValue\n this.render()\n }\n\n connectedCallback () {\n const title = this.getAttribute('title')\n if (title === undefined || title === null) {\n this._title = 'Hide'\n } else {\n this._title = title\n }\n\n this.render()\n }\n\n render () {\n const title = this._title\n\n this.innerHTML = render({ title })\n }\n}\n\nexport function define () {\n _define(EyeSlash.TAG, EyeSlash)\n}\n", "import { kebabCase } from '@substrate-system/kebab-case'\nimport { createRenderer } from '../util.js'\n\nexport const render = createRenderer(createHtml, 'eye-regular')\n\nfunction createHtml ({ title }:{ title?:string } = {}) {\n if (!title) title = 'Show'\n const kebabTitle = kebabCase(title)\n\n const html = `<svg\n class=\"icon eye-regular\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 576 512\"\n role=\"image\"\n aria-labelledby=\"${kebabTitle}\"\n >\n <title id=\"${kebabTitle}\">${title}</title>\n <!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.-->\n <path d=\"M288 80c-65.2 0-118.8 29.6-159.9 67.7C89.6 183.5 63 226 49.4 256c13.6 30 40.2 72.5 78.6 108.3C169.2 402.4 222.8 432 288 432s118.8-29.6 159.9-67.7C486.4 328.5 513 286 526.6 256c-13.6-30-40.2-72.5-78.6-108.3C406.8 109.6 353.2 80 288 80zM95.4 112.6C142.5 68.8 207.2 32 288 32s145.5 36.8 192.6 80.6c46.8 43.5 78.1 95.4 93 131.1c3.3 7.9 3.3 16.7 0 24.6c-14.9 35.7-46.2 87.7-93 131.1C433.5 443.2 368.8 480 288 480s-145.5-36.8-192.6-80.6C48.6 356 17.3 304 2.5 268.3c-3.3-7.9-3.3-16.7 0-24.6C17.3 208 48.6 156 95.4 112.6zM288 336c44.2 0 80-35.8 80-80s-35.8-80-80-80c-.7 0-1.3 0-2 0c1.3 5.1 2 10.5 2 16c0 35.3-28.7 64-64 64c-5.5 0-10.9-.7-16-2c0 .7 0 1.3 0 2c0 44.2 35.8 80 80 80zm0-208a128 128 0 1 1 0 256 128 128 0 1 1 0-256z\" />\n </svg>`\n\n return html\n}\n\nexport function outerHtml ({ title }:{ title?:string }) {\n return `<eye-regular>${render({ title })}</eye-regular>`\n}\n", "import { define as _define } from '@substrate-system/web-component/util'\nimport { render } from './render/eye-regular.js'\n\n// for document.querySelector\ndeclare global {\n interface HTMLElementTagNameMap {\n 'eye-regular': EyeRegular\n }\n}\n\nexport class EyeRegular extends HTMLElement {\n static TAG = 'eye-regular'\n _title:string\n\n constructor () {\n super()\n this._title = this.getAttribute('title') || 'See'\n }\n\n /**\n * Only watching for 'title'.\n */\n attributeChangedCallback (_name, _oldValue, newValue) {\n this._title = newValue\n this.render()\n }\n\n connectedCallback () {\n const title = this.getAttribute('title')\n if (title === undefined || title === null) {\n this._title = 'See'\n } else {\n this._title = title\n }\n\n this.render()\n }\n\n render () {\n const title = this._title\n if (!title) return\n\n this.innerHTML = render({ title })\n }\n}\n\nexport function define () {\n _define(EyeRegular.TAG, EyeRegular)\n}\n", "export const ARIA_ATTRIBUTES = [\n 'aria-activedescendant',\n 'aria-atomic',\n 'aria-autocomplete',\n 'aria-braillelabel',\n 'aria-brailleroledescription',\n 'aria-busy',\n 'aria-checked',\n 'aria-colcount',\n 'aria-colindex',\n 'aria-colindextext',\n 'aria-colspan',\n 'aria-controls',\n 'aria-current',\n 'aria-describedby',\n 'aria-description',\n 'aria-details',\n 'aria-disabled',\n 'aria-dropeffect',\n 'aria-errormessage',\n 'aria-expanded',\n 'aria-flowto',\n 'aria-grabbed',\n 'aria-haspopup',\n 'aria-hidden',\n 'aria-invalid',\n 'aria-keyshortcuts',\n 'aria-label',\n 'aria-labelledby',\n 'aria-level',\n 'aria-live',\n 'aria-modal',\n 'aria-multiline',\n 'aria-multiselectable',\n 'aria-orientation',\n 'aria-owns',\n 'aria-placeholder',\n 'aria-posinset',\n 'aria-pressed',\n 'aria-readonly',\n 'aria-relevant',\n 'aria-required',\n 'aria-roledescription',\n 'aria-rowcount',\n 'aria-rowindex',\n 'aria-rowindextext',\n 'aria-rowspan',\n 'aria-selected',\n 'aria-setsize',\n 'aria-sort',\n 'aria-valuemax',\n 'aria-valuemin',\n 'aria-valuenow',\n 'aria-valuetext'\n]\n\nexport const INPUT_ATTRIBUTES = [\n 'accept',\n 'alt',\n 'autocomplete',\n 'autocapitalize',\n 'autocorrect',\n 'autofocus',\n 'capture',\n 'dirname',\n 'disabled',\n 'enterkeyhint',\n 'form',\n 'inputmode',\n 'list',\n 'max',\n 'maxlength',\n 'min',\n 'minlength',\n 'multiple',\n 'name',\n 'pattern',\n 'placeholder',\n 'readonly',\n 'required',\n 'size',\n 'spellcheck',\n 'step',\n 'tabindex',\n 'title',\n 'value'\n]\n", "import { WebComponent } from '@substrate-system/web-component'\nimport { define } from '@substrate-system/web-component/util'\nimport { define as slashDefine } from '@substrate-system/icons/eye-slash'\nimport { define as regularDefine } from '@substrate-system/icons/eye-regular'\nimport { ARIA_ATTRIBUTES, INPUT_ATTRIBUTES } from './util'\n// import Debug from '@substrate-system/debug'\n// const debug = Debug('password-input')\n\nslashDefine()\nregularDefine()\n\n// for docuement.querySelector\ndeclare global {\n interface HTMLElementTagNameMap {\n 'password-input':PasswordInput\n }\n}\n\n// export class PasswordInput extends HTMLElement {\nexport class PasswordInput extends WebComponent.create('password-input') {\n static TAG = 'password-input'\n static INPUT_ATTRIBUTES = INPUT_ATTRIBUTES\n static ARIA_ATTRIBUTES = ARIA_ATTRIBUTES\n\n static observedAttributes = (['visible', 'label', 'id'])\n .concat(PasswordInput.INPUT_ATTRIBUTES)\n .concat(PasswordInput.ARIA_ATTRIBUTES)\n\n inputId:string|null = null\n inputAriaAttributes:Record<string, string> = {}\n ignoredAriaCallbackNames:Set<string> = new Set()\n ignoredIdCallback = false\n generatedInputId = `password-input-${Math.random().toString(36).slice(2, 10)}`\n\n // empty string = is visible\n // null = not visible\n handleChange_visible (oldValue:string|null, newValue:string|null) {\n this.reRender()\n if (oldValue === newValue) return\n this.emit(newValue !== null ? 'show' : 'hide')\n }\n\n handleChange_label (_oldValue, _newValue) {\n this.render()\n this._listen()\n }\n\n handleChange_aria (\n name:string,\n _oldValue:string|null,\n newValue:string|null\n ) {\n if (this.ignoredAriaCallbackNames.has(name)) {\n this.ignoredAriaCallbackNames.delete(name)\n return\n }\n\n if (newValue === null) {\n delete this.inputAriaAttributes[name]\n this.querySelector('input')?.removeAttribute(name)\n return\n }\n\n this.inputAriaAttributes[name] = newValue\n this.querySelector('input')?.setAttribute(name, newValue)\n\n if (this.hasAttribute(name)) {\n this.ignoredAriaCallbackNames.add(name)\n this.removeAttribute(name)\n }\n }\n\n handleChange_id (_oldValue:string|null, newValue:string|null) {\n if (this.ignoredIdCallback) {\n this.ignoredIdCallback = false\n return\n }\n\n if (newValue === null) {\n this.inputId = null\n this.querySelector('input')?.removeAttribute('id')\n return\n }\n\n this.inputId = newValue\n this.querySelector('input')?.setAttribute('id', newValue)\n\n if (this.hasAttribute('id')) {\n this.ignoredIdCallback = true\n this.removeAttribute('id')\n }\n }\n\n handleChange_inputAttribute (name:string, newValue:string|null) {\n const input = this.querySelector('input')\n if (!input) return\n\n if (newValue === null) {\n input.removeAttribute(name)\n return\n }\n\n input.setAttribute(name, newValue)\n }\n\n /**\n * Listen for change in visiblity.\n *\n * @param {string} name The attribute name\n * @param {string} oldValue The old attribute value\n * @param {string} newValue The new attribute value\n */\n async attributeChangedCallback (\n name:string,\n oldValue:string,\n newValue:string\n ) {\n if (name === 'id') {\n this.handleChange_id(oldValue, newValue)\n return\n }\n\n if (name.startsWith('aria-')) {\n this.handleChange_aria(name, oldValue, newValue)\n return\n }\n\n if (PasswordInput.INPUT_ATTRIBUTES.includes(name)) {\n this.handleChange_inputAttribute(name, newValue)\n return\n }\n\n if (this[`handleChange_${name}`]) {\n this[`handleChange_${name}`](oldValue, newValue)\n }\n }\n\n connectedCallback () {\n this.render()\n this._listen()\n }\n\n _listen () {\n const btn = this.querySelector('button')!\n btn.addEventListener('click', (ev) => {\n ev.preventDefault()\n this.isVisible = !this.isVisible\n })\n }\n\n getType ():'text'|'password' {\n return this.isVisible ? 'text' : 'password'\n }\n\n set isVisible (value:boolean) {\n if (value) {\n this.setAttribute('visible', '')\n } else {\n this.removeAttribute('visible')\n }\n }\n\n get isVisible ():boolean {\n return this.hasAttribute('visible')\n }\n\n set label (value:string|null) {\n if (value === null) {\n this.removeAttribute('label')\n return\n }\n\n this.setAttribute('label', value)\n }\n\n get label ():string|null {\n return this.getAttribute('label')\n }\n\n getButtonContent () {\n return (this.isVisible ?\n '<eye-regular></eye-regular><span class=\"visually-hidden\">Hide</span>' :\n '<eye-slash></eye-slash><span class=\"visually-hidden\">Show</span>')\n }\n\n getInputIdForRender () {\n return this.inputId || this.generatedInputId\n }\n\n /**\n * Change the visibility button state.\n */\n reRender () {\n const btn = this.querySelector('.pw-visibility')\n const input = this.querySelector('input')\n if (!btn || !input) return\n const inputId = this.getInputIdForRender()\n btn.innerHTML = this.getButtonContent()\n btn.setAttribute('aria-pressed', this.isVisible ? 'true' : 'false')\n btn.setAttribute('aria-controls', inputId)\n this.setAttribute('type', this.getType())\n input.setAttribute('type', this.getType())\n input.setAttribute('id', inputId)\n }\n\n render () {\n const name = this.getAttribute('name')\n const label = this.getAttribute('label')\n const hostId = this.getAttribute('id')\n const hostAriaAttributes = Array.from(this.attributes)\n .filter(attr => attr.name.startsWith('aria-'))\n\n if (hostId !== null) {\n this.inputId = hostId\n }\n\n for (const attr of hostAriaAttributes) {\n this.inputAriaAttributes[attr.name] = attr.value\n }\n\n // create string from attributes\n const attrs = Array.from(this.attributes)\n .filter(attr =>\n attr.name !== 'label' &&\n attr.name !== 'id' &&\n !attr.name.startsWith('aria-')\n )\n .map(attr => attr.name + (attr.value === '' ?\n '' :\n ('=' + `\"${attr.value}\"`))\n )\n .join(' ')\n\n const classes = (this.getAttribute('class') ?? '').split(' ')\n .concat(['password', 'input', name || ''])\n .filter(Boolean)\n .join(' ')\n\n const inputId = this.getInputIdForRender()\n const renderedIdAttribute = `id=\"${inputId}\"`\n const ariaAttributes = Object.entries(this.inputAriaAttributes)\n .map(([attrName, attrValue]) => {\n return (attrName + (attrValue === '' ?\n '' :\n ('=' + `\"${attrValue}\"`)))\n })\n .join(' ')\n\n this.innerHTML = label ? `\n <div class=\"${classes}\">\n <label class=\"label-content\" for=\"${inputId}\">${label}</label>\n <span class=\"input\">\n <input\n ${renderedIdAttribute}\n ${ariaAttributes}\n ${attrs}\n type=${this.getType()} />\n <button\n type=\"button\"\n class=\"pw-visibility\"\n aria-pressed=\"${this.isVisible ? 'true' : 'false'}\"\n aria-controls=\"${inputId}\">\n ${this.getButtonContent()}\n </button>\n </span>\n </div>\n ` : `\n <div class=\"${classes}\">\n <span class=\"input\">\n <input\n ${renderedIdAttribute}\n ${ariaAttributes}\n ${attrs}\n type=${this.getType()} />\n <button\n type=\"button\"\n class=\"pw-visibility\"\n aria-pressed=\"${this.isVisible ? 'true' : 'false'}\"\n aria-controls=\"${inputId}\">\n ${this.getButtonContent()}\n </button>\n </span>\n </div>\n `\n\n if (this.hasAttribute('id')) {\n this.ignoredIdCallback = true\n this.removeAttribute('id')\n }\n for (const attr of hostAriaAttributes) {\n this.ignoredAriaCallbackNames.add(attr.name)\n this.removeAttribute(attr.name)\n }\n }\n}\n\ndefine(PasswordInput.TAG, PasswordInput)\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["toAttributes", "attrs", "acc", "k", "value", "__name", "isRegistered", "elName", "__name", "define", "name", "element", "qs", "qsa", "match", "el", "s", "WebComponent", "_WebComponent", "__name", "el", "match", "elementName", "CreatedClass", "evType", "define", "name", "oldValue", "newValue", "handler", "handlerKey", "selector", "eventName", "type", "opts", "bubbles", "cancelable", "detail", "namespacedType", "event", "evName", "options", "fullEvName", "namespace", "handlerKeys", "isRegistered", "elName", "element", "ctor", "boolAttrs", "strAttrs", "proto", "attr", "v", "toAttributes", "attrs", "acc", "k", "value", "__name", "isRegistered", "elName", "__name", "define", "name", "element", "qs", "qsa", "wordSeparators", "capitalPlusLower", "capitals", "kebabCase", "str", "match", "__name", "createRenderer", "createHtml", "tag", "attrs", "html", "__name", "eyeSlash", "createRenderer", "createHtml", "title", "kebabCase", "__name", "outerHtml", "EyeSlash", "__name", "_name", "_oldValue", "newValue", "title", "eyeSlash", "define", "render", "createRenderer", "createHtml", "title", "kebabTitle", "kebabCase", "__name", "outerHtml", "EyeRegular", "__name", "_name", "_oldValue", "newValue", "title", "render", "define", "ARIA_ATTRIBUTES", "INPUT_ATTRIBUTES", "define", "PasswordInput", "_PasswordInput", "WebComponent", "__name", "INPUT_ATTRIBUTES", "ARIA_ATTRIBUTES", "oldValue", "newValue", "_oldValue", "_newValue", "name", "input", "ev", "value", "btn", "inputId", "label", "hostId", "hostAriaAttributes", "attr", "attrs", "classes", "renderedIdAttribute", "ariaAttributes", "attrName", "attrValue"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@substrate-system/password-input",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.6",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
7
7
|
"./dist/*"
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"@substrate-system/a11y": "^0.0.17",
|
|
45
45
|
"@substrate-system/icons": "^0.1.29",
|
|
46
|
-
"@substrate-system/web-component": "^0.0.
|
|
46
|
+
"@substrate-system/web-component": "^0.0.56"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@substrate-system/debug": "^0.9.32",
|