diff --git a/.gitignore b/.gitignore index 620dcfb..5f262a4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +test/CssChain-types.test.j* +tsconfig.tsbuildinfo + ## editors /.idea /.vscode diff --git a/README.md b/README.md index 9f8fb25..40b0ae9 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Collection API inherits the element API and Array. [![NPM version][npm-image]][npm-url] [![coverage][coverage-image]][coverage-url] ## Live demo -https://unpkg.com/css-chain-test@1.0.13/dist/demo.html +https://unpkg.com/css-chain-test@1.1.0/dist/demo.html # [CssChain](https://github.com/sashafirsov/css-chain/blob/main/CssChain.js) ## html elements methods @@ -154,7 +154,7 @@ To run a local development server that serves the basic demo located in `demo/in [npm-image]: https://img.shields.io/npm/v/css-chain.svg [npm-url]: https://npmjs.org/package/css-chain-test -[coverage-image]: https://unpkg.com/css-chain-test@1.0.13/coverage/coverage.svg -[coverage-url]: https://unpkg.com/css-chain-test@1.0.13/coverage/lcov-report/index.html -[PokeApi-explorer-image]: https://unpkg.com/css-chain-test@1.0.13/src/PokeApi-Explorer.png -[PokeApi-explorer-url]: https://unpkg.com/css-chain-test@1.0.13/src/PokeApi-Explorer.html +[coverage-image]: https://unpkg.com/css-chain-test@1.1.0/coverage/coverage.svg +[coverage-url]: https://unpkg.com/css-chain-test@1.1.0/coverage/lcov-report/index.html +[PokeApi-explorer-image]: https://unpkg.com/css-chain-test@1.1.0/src/PokeApi-Explorer.png +[PokeApi-explorer-url]: https://unpkg.com/css-chain-test@1.1.0/src/PokeApi-Explorer.html diff --git a/ToDo.md b/ToDo.md index 4bf3b84..907c8b5 100644 --- a/ToDo.md +++ b/ToDo.md @@ -1 +1,2 @@ prop( k, v, css ) - add css support +dist/*.html not all functional diff --git a/build.sh b/build.sh index 7d0229b..d981b8a 100644 --- a/build.sh +++ b/build.sh @@ -1,3 +1,4 @@ +node types/generate-mixin.js bash ./test.sh PACKAGE_VERSION=$(node -pe "require('css-chain/package.json').version") @@ -6,6 +7,7 @@ echo $PACKAGE_VERSION rm -rf dist mkdir dist cp src/*.html dist +cp src/*.d.ts dist sed "s/..\/src\/css-chain-element.js/css-chain-element.js/" src/demo.html >dist/demo.html # https://kangax.github.io/compat-table/es2016plus/ diff --git a/coverage/lcov-report/ApiChain.js.html b/coverage/lcov-report/ApiChain.js.html index 99e4381..5c8ebd8 100644 --- a/coverage/lcov-report/ApiChain.js.html +++ b/coverage/lcov-report/ApiChain.js.html @@ -127,30 +127,30 @@

All files ApiChain.js

68 69 70 -717x -7x -7x -7x -7x -7x -7x -7x -4x -4x -4x -4x -4x -7x -7x -7x -7x -4x -4x -4x -7x -7x -7x -7x +718x +8x +8x +8x +8x +8x +8x +8x +5x +5x +5x +5x +5x +8x +8x +8x +8x +5x +5x +5x +8x +8x +8x +8x 1x 1x 1x @@ -170,7 +170,7 @@

All files ApiChain.js

1x 1x 1x -7x +8x 1x 1x 1x @@ -196,7 +196,7 @@

All files ApiChain.js

1x 1x 1x -7x +8x  
const Prototype2ApiChain = new Map();
 const OBJ_prototype = Object.getPrototypeOf( {} );
  
@@ -274,7 +274,7 @@ 

All files ApiChain.js

diff --git a/coverage/lcov-report/CssChain.js.html b/coverage/lcov-report/CssChain.js.html index b5dec69..46251b1 100644 --- a/coverage/lcov-report/CssChain.js.html +++ b/coverage/lcov-report/CssChain.js.html @@ -298,47 +298,47 @@

All files CssChain.js

239 240 241 -2426x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x +2427x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x 5x -6x -6x -6x -6x -6x +7x +7x +7x +7x +7x +6x +6x +7x +7x +7x +7x +7x +7x 5x 5x +7x +7x +7x 6x 6x -6x -6x -6x -6x -4x -4x -6x -6x -6x -5x -5x -6x -6x -6x +7x +7x +7x 4x 4x 4x @@ -349,9 +349,9 @@

All files CssChain.js

3x 4x 4x -6x -6x -6x +7x +7x +7x 5x 5x 4x @@ -367,20 +367,20 @@

All files CssChain.js

5x 5x 5x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x 2x 2x 2x @@ -389,15 +389,15 @@

All files CssChain.js

2x 2x 2x -6x -6x -6x -2x -2x -2x -2x -6x -6x +7x +7x +7x +3x +3x +3x +3x +7x +7x 4x 4x 2x @@ -411,7 +411,7 @@

All files CssChain.js

1x 4x 4x -6x +7x 1x 1x 1x @@ -432,19 +432,19 @@

All files CssChain.js

1x 1x 1x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x 1x 1x 1x @@ -452,21 +452,21 @@

All files CssChain.js

1x 1x 1x +7x +7x +7x 6x 6x 6x -5x -5x -5x 3x 3x -5x -5x -5x -6x 6x 6x 6x +7x +7x +7x +7x 2x 2x 2x @@ -488,57 +488,57 @@

All files CssChain.js

2x 2x 2x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -6x -1x -6x -6x -6x -6x -6x -6x -6x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +2x +7x +7x +7x +7x +7x +7x +7x  
import { setProp } from './ApiChain.js';
 export const map = (arr, ...args ) => Array.prototype.map.apply( arr, args );
 export const csv = (arr, ...args ) => map( arr, ...args ).join(',');
@@ -611,15 +611,15 @@ 

All files CssChain.js

export const setNodeHtml = ( n, val ) => { clear(n); addNodeHtml(n,val) };   class -CssChainLocal extends Array +CssChainT extends Array { attr(...args){ return args.length>1 ? (( args[2] ? this.$(args[2]) : this ).setAttribute(...args),this) : this.getAttribute(...args) } prop(...args){ return args.length>1 ? (( args[2] ? this.$(args[2]) : this ).forEach( el=>el[args[0]]=args[1]),this ): this[0][args[0]] } forEach( ...args){ Array.prototype.forEach.apply(this,args); return this } map( ...args){ return map(this,...args) } push(...args){ Array.prototype.push.apply(this,args); return this; } - querySelector(css){ return new CssChainLocal().push( this.querySelectorAll(css)[0] ) } - querySelectorAll(css){ return this.reduce( ($,el)=> $.push(...(el.shadowRoot||el).querySelectorAll(css) ), new CssChainLocal()) } + querySelector(css){ return new CssChainT().push( this.querySelectorAll(css)[0] ) } + querySelectorAll(css){ return this.reduce( ($,el)=> $.push(...(el.shadowRoot||el).querySelectorAll(css) ), new CssChainT()) } $(...args){ return args.length ? this.querySelectorAll(...args) : this; } parent(css) { const s = new Set() @@ -634,11 +634,11 @@

All files CssChain.js

append(val){ return this.forEach( n=> addNodeHtml(n,val)) } remove(...args) { if( !args.length ) - { this.forEach(el=>el.remove()); return new CssChainLocal() } + { this.forEach(el=>el.remove()); return new CssChainT() } return isFn(args[1]) ? this.removeEventListener(...args) : this.map(el=>el.matches(args[0])).filter(el=>el) ; } - clear(){ return this.forEach(n=>clear(n)) } - slot(...arr) + erase(){ return this.forEach(n=>clear(n)) } + slots(...arr) { const ret = this.map( n=>n.shadowRoot || n ).$( arr.length ? csv( arr[0].split(',') , n=> ['""',"''"].includes(n) || !n @@ -665,7 +665,7 @@

All files CssChain.js

n.remove(); } const c = CssChain(n.content||n).clone(this); - c.slot().forEach( s => + c.slots().forEach( s => { const v = this.children.filter( n=>n.slot===s.name ); v.length && setNodeHtml(s,v) }); @@ -673,9 +673,9 @@

All files CssChain.js

this.forEach( (n,i)=> n.appendChild(c[i])) return this; } - get innerText(){ return this.text() } - set innerText( val ){ return this.text( val ) } - text( val, css=undefined ) + get innerText(){ return this.txt() } + set innerText( val ){ return this.txt( val ) } + txt( val, css=undefined ) { const arr = css? this.$(css): this; if( val === undefined ) return collectionText( arr ); @@ -704,7 +704,7 @@

All files CssChain.js

: n=>setNodeHtml(n,val) ); return this } - assignedElements(){ return CssChain([].concat( ...this.map( el=>el.assignedElements ? el.assignedElements():[] ) ) ) } + assignedElements(opts){ return CssChain([].concat( ...this.map( el=>el.assignedElements ? el.assignedElements(opts):[] ) ) ) } assignedNodes(f){ return CssChain([].concat( ...this.map( el=>el.assignedNodes ? el.assignedNodes(f):[] ) ) ) } cloneNode(...args){ return this.map( el=>el.cloneNode && el.cloneNode(...args) ) } clone( /* number|array */count=1, cb=undefined ) @@ -759,7 +759,7 @@

All files CssChain.js

Object.getOwnPropertyNames(window) .filter(key => key.startsWith('HTML') && key.endsWith('Element')&& key.length > 11 ) .map( key=>key.substring(4,key.length-7).toLowerCase() ) - .forEach( tag=>applyPrototype( document.createElement(tag), CssChainLocal ) ); + .forEach( tag=>applyPrototype( document.createElement(tag), CssChainT ) );   export function CssChain( css, el=document, protoArr=[] ) @@ -774,8 +774,8 @@

All files CssChain.js

}else protoArr = [ protoArr ];   - protoArr.forEach( el => applyPrototype(el,CssChainLocal) ); - const ret = new CssChainLocal(); + protoArr.forEach( el => applyPrototype(el,CssChainT) ); + const ret = new CssChainT(); ret.push(...arr); return ret; } @@ -787,7 +787,7 @@

All files CssChain.js

diff --git a/coverage/lcov-report/CssChainElement.js.html b/coverage/lcov-report/CssChainElement.js.html index dcfd421..d87d341 100644 --- a/coverage/lcov-report/CssChainElement.js.html +++ b/coverage/lcov-report/CssChainElement.js.html @@ -154,7 +154,7 @@

All files CssChainElement.js

$( ...arr ){ return $( this.shadowRoot ).$(...arr); }   __increment() - { const slotContent = this.$().slot().text(); + { const slotContent = this.$().slots().txt(); this.$('b').innerHTML += `<span>${ slotContent }</span>`; this.counter = this.$('input').value = this.$('span').length; } @@ -166,7 +166,7 @@

All files CssChainElement.js

diff --git a/coverage/lcov-report/css-chain-element.js.html b/coverage/lcov-report/css-chain-element.js.html index 2c68eb4..446fc90 100644 --- a/coverage/lcov-report/css-chain-element.js.html +++ b/coverage/lcov-report/css-chain-element.js.html @@ -79,7 +79,7 @@

All files css-chain-element.js

diff --git a/coverage/lcov-report/index.html b/coverage/lcov-report/index.html index 9579179..3121000 100644 --- a/coverage/lcov-report/index.html +++ b/coverage/lcov-report/index.html @@ -170,7 +170,7 @@

All files

diff --git a/coverage/lcov-report/slots-in-shadow.js.html b/coverage/lcov-report/slots-in-shadow.js.html index 78c33a2..a1874b4 100644 --- a/coverage/lcov-report/slots-in-shadow.js.html +++ b/coverage/lcov-report/slots-in-shadow.js.html @@ -187,7 +187,7 @@

All files slots-in-shadow.js

diff --git a/coverage/lcov-report/slots-light-vs-shadow.js.html b/coverage/lcov-report/slots-light-vs-shadow.js.html index 83fe6fe..8e19996 100644 --- a/coverage/lcov-report/slots-light-vs-shadow.js.html +++ b/coverage/lcov-report/slots-light-vs-shadow.js.html @@ -391,7 +391,7 @@

All files slots-light-vs-shadow.js

diff --git a/coverage/lcov.info b/coverage/lcov.info index 9bfc032..a425d3f 100644 --- a/coverage/lcov.info +++ b/coverage/lcov.info @@ -8,36 +8,36 @@ FN:24,applyPrototype FN:44,ApiChain FNF:6 FNH:6 -FNDA:7,setProp -FNDA:4,ApiChainLocal. -FNDA:6,get -FNDA:4,set +FNDA:8,setProp +FNDA:5,ApiChainLocal. +FNDA:7,get +FNDA:5,set FNDA:1,applyPrototype FNDA:1,ApiChain -DA:1,7 -DA:2,7 -DA:3,7 -DA:4,7 -DA:5,7 -DA:6,7 -DA:7,7 -DA:8,7 -DA:9,4 -DA:10,4 -DA:11,4 -DA:12,4 -DA:13,4 -DA:14,7 -DA:15,7 -DA:16,7 -DA:17,7 -DA:18,4 -DA:19,4 -DA:20,4 -DA:21,7 -DA:22,7 -DA:23,7 -DA:24,7 +DA:1,8 +DA:2,8 +DA:3,8 +DA:4,8 +DA:5,8 +DA:6,8 +DA:7,8 +DA:8,8 +DA:9,5 +DA:10,5 +DA:11,5 +DA:12,5 +DA:13,5 +DA:14,8 +DA:15,8 +DA:16,8 +DA:17,8 +DA:18,5 +DA:19,5 +DA:20,5 +DA:21,8 +DA:22,8 +DA:23,8 +DA:24,8 DA:25,1 DA:26,1 DA:27,1 @@ -57,7 +57,7 @@ DA:40,1 DA:41,1 DA:42,1 DA:43,1 -DA:44,7 +DA:44,8 DA:45,1 DA:46,1 DA:47,1 @@ -83,20 +83,20 @@ DA:66,1 DA:67,1 DA:68,1 DA:69,1 -DA:70,7 +DA:70,8 LF:70 LH:70 -BRDA:1,0,0,7 -BRDA:5,1,0,7 -BRDA:8,2,0,7 +BRDA:1,0,0,8 +BRDA:5,1,0,8 +BRDA:8,2,0,8 BRDA:10,3,0,4 -BRDA:11,4,0,7 -BRDA:16,5,0,13 -BRDA:16,6,0,13 -BRDA:17,7,0,7 -BRDA:18,8,0,7 -BRDA:24,9,0,7 -BRDA:44,10,0,7 +BRDA:11,4,0,8 +BRDA:16,5,0,15 +BRDA:16,6,0,15 +BRDA:17,7,0,8 +BRDA:18,8,0,8 +BRDA:24,9,0,8 +BRDA:44,10,0,8 BRF:11 BRH:11 end_of_record @@ -141,12 +141,12 @@ FN:83,parent FN:92,on FN:93,append FN:94,remove -FN:99,clear -FN:100,slot +FN:99,erase +FN:100,slots FN:114,template FN:135,get innerText FN:136,set innerText -FN:137,text +FN:137,txt FN:146,get outerHTML FN:147,set outerHTML FN:155,get innerHTML @@ -166,27 +166,27 @@ FN:85,add FN:86,parentLoop FNF:62 FNH:62 -FNDA:6,map +FNDA:7,map FNDA:2,csv -FNDA:6,collectionText +FNDA:7,collectionText FNDA:1,nop -FNDA:6,isArr -FNDA:6,isT -FNDA:6,isStr +FNDA:7,isArr +FNDA:7,isT +FNDA:7,isStr FNDA:2,isNum -FNDA:5,isFn +FNDA:6,isFn FNDA:2,isNode -FNDA:6,inWC -FNDA:6,hasAssigned +FNDA:7,inWC +FNDA:7,hasAssigned FNDA:2,each FNDA:5,clear -FNDA:6,1 +FNDA:7,1 FNDA:4,3 FNDA:2,11 -FNDA:6,getNodeText -FNDA:4,setNodeText +FNDA:7,getNodeText +FNDA:5,setNodeText FNDA:2,assignParent -FNDA:5,collectionHtml +FNDA:6,collectionHtml FNDA:4,html2NodeArr FNDA:4,wrapIfText FNDA:5,addNodeHtml @@ -195,27 +195,27 @@ FNDA:5,append FNDA:5,setNodeHtml FNDA:1,attr FNDA:1,prop -FNDA:6,forEach +FNDA:7,forEach FNDA:5,map -FNDA:6,push +FNDA:7,push FNDA:1,querySelector -FNDA:6,querySelectorAll -FNDA:6,$ +FNDA:7,querySelectorAll +FNDA:7,$ FNDA:2,parent -FNDA:1,on +FNDA:2,on FNDA:2,append -FNDA:2,remove -FNDA:2,clear -FNDA:4,slot +FNDA:3,remove +FNDA:2,erase +FNDA:4,slots FNDA:1,template -FNDA:4,get innerText -FNDA:4,set innerText -FNDA:6,text +FNDA:5,get innerText +FNDA:5,set innerText +FNDA:7,txt FNDA:1,get outerHTML FNDA:1,set outerHTML -FNDA:5,get innerHTML +FNDA:6,get innerHTML FNDA:3,set innerHTML -FNDA:5,html +FNDA:6,html FNDA:1,assignedElements FNDA:3,assignedNodes FNDA:1,cloneNode @@ -224,51 +224,51 @@ FNDA:1,get firstElementChild FNDA:1,get firstChild FNDA:1,get childNodes FNDA:2,get children -FNDA:6,applyPrototype -FNDA:6,CssChain +FNDA:7,applyPrototype +FNDA:7,CssChain FNDA:2,add FNDA:1,parentLoop -DA:1,6 -DA:2,6 -DA:3,6 -DA:4,6 -DA:5,6 -DA:6,6 -DA:7,6 -DA:8,6 -DA:9,6 -DA:10,6 -DA:11,6 -DA:12,6 -DA:13,6 -DA:14,6 -DA:15,6 -DA:16,6 -DA:17,6 +DA:1,7 +DA:2,7 +DA:3,7 +DA:4,7 +DA:5,7 +DA:6,7 +DA:7,7 +DA:8,7 +DA:9,7 +DA:10,7 +DA:11,7 +DA:12,7 +DA:13,7 +DA:14,7 +DA:15,7 +DA:16,7 +DA:17,7 DA:18,5 -DA:19,6 -DA:20,6 -DA:21,6 -DA:22,6 -DA:23,6 -DA:24,5 -DA:25,5 -DA:26,6 -DA:27,6 -DA:28,6 -DA:29,6 -DA:30,6 -DA:31,6 -DA:32,4 -DA:33,4 -DA:34,6 -DA:35,6 -DA:36,6 -DA:37,5 -DA:38,5 -DA:39,6 -DA:40,6 -DA:41,6 +DA:19,7 +DA:20,7 +DA:21,7 +DA:22,7 +DA:23,7 +DA:24,6 +DA:25,6 +DA:26,7 +DA:27,7 +DA:28,7 +DA:29,7 +DA:30,7 +DA:31,7 +DA:32,5 +DA:33,5 +DA:34,7 +DA:35,7 +DA:36,7 +DA:37,6 +DA:38,6 +DA:39,7 +DA:40,7 +DA:41,7 DA:42,4 DA:43,4 DA:44,4 @@ -279,9 +279,9 @@ DA:48,3 DA:49,3 DA:50,4 DA:51,4 -DA:52,6 -DA:53,6 -DA:54,6 +DA:52,7 +DA:53,7 +DA:54,7 DA:55,5 DA:56,5 DA:57,4 @@ -297,20 +297,20 @@ DA:66,5 DA:67,5 DA:68,5 DA:69,5 -DA:70,6 -DA:71,6 -DA:72,6 -DA:73,6 -DA:74,6 -DA:75,6 -DA:76,6 -DA:77,6 -DA:78,6 -DA:79,6 -DA:80,6 -DA:81,6 -DA:82,6 -DA:83,6 +DA:70,7 +DA:71,7 +DA:72,7 +DA:73,7 +DA:74,7 +DA:75,7 +DA:76,7 +DA:77,7 +DA:78,7 +DA:79,7 +DA:80,7 +DA:81,7 +DA:82,7 +DA:83,7 DA:84,2 DA:85,2 DA:86,2 @@ -319,15 +319,15 @@ DA:88,1 DA:89,2 DA:90,2 DA:91,2 -DA:92,6 -DA:93,6 -DA:94,6 -DA:95,2 -DA:96,2 -DA:97,2 -DA:98,2 -DA:99,6 -DA:100,6 +DA:92,7 +DA:93,7 +DA:94,7 +DA:95,3 +DA:96,3 +DA:97,3 +DA:98,3 +DA:99,7 +DA:100,7 DA:101,4 DA:102,4 DA:103,2 @@ -341,7 +341,7 @@ DA:110,1 DA:111,1 DA:112,4 DA:113,4 -DA:114,6 +DA:114,7 DA:115,1 DA:116,1 DA:117,1 @@ -362,19 +362,19 @@ DA:131,1 DA:132,1 DA:133,1 DA:134,1 -DA:135,6 -DA:136,6 -DA:137,6 -DA:138,6 -DA:139,6 -DA:140,6 -DA:141,6 -DA:142,6 -DA:143,6 -DA:144,6 -DA:145,6 -DA:146,6 -DA:147,6 +DA:135,7 +DA:136,7 +DA:137,7 +DA:138,7 +DA:139,7 +DA:140,7 +DA:141,7 +DA:142,7 +DA:143,7 +DA:144,7 +DA:145,7 +DA:146,7 +DA:147,7 DA:148,1 DA:149,1 DA:150,1 @@ -382,21 +382,21 @@ DA:151,1 DA:152,1 DA:153,1 DA:154,1 -DA:155,6 -DA:156,6 -DA:157,6 -DA:158,5 -DA:159,5 -DA:160,5 +DA:155,7 +DA:156,7 +DA:157,7 +DA:158,6 +DA:159,6 +DA:160,6 DA:161,3 DA:162,3 -DA:163,5 -DA:164,5 -DA:165,5 -DA:166,6 -DA:167,6 -DA:168,6 -DA:169,6 +DA:163,6 +DA:164,6 +DA:165,6 +DA:166,7 +DA:167,7 +DA:168,7 +DA:169,7 DA:170,2 DA:171,2 DA:172,2 @@ -418,220 +418,220 @@ DA:187,2 DA:188,2 DA:189,2 DA:190,2 -DA:191,6 -DA:192,6 -DA:193,6 -DA:194,6 -DA:195,6 -DA:196,6 -DA:197,6 -DA:198,6 -DA:199,6 -DA:200,6 -DA:201,6 -DA:202,6 -DA:203,6 -DA:204,6 -DA:205,6 -DA:206,6 -DA:207,6 -DA:208,6 -DA:209,6 -DA:210,6 -DA:211,6 -DA:212,6 -DA:213,6 -DA:214,6 -DA:215,6 -DA:216,6 -DA:217,6 -DA:218,6 -DA:219,6 -DA:220,6 -DA:221,6 -DA:222,6 -DA:223,6 -DA:224,6 -DA:225,6 -DA:226,6 -DA:227,6 -DA:228,6 -DA:229,6 -DA:230,6 -DA:231,6 -DA:232,6 -DA:233,6 -DA:234,1 -DA:235,6 -DA:236,6 -DA:237,6 -DA:238,6 -DA:239,6 -DA:240,6 -DA:241,6 +DA:191,7 +DA:192,7 +DA:193,7 +DA:194,7 +DA:195,7 +DA:196,7 +DA:197,7 +DA:198,7 +DA:199,7 +DA:200,7 +DA:201,7 +DA:202,7 +DA:203,7 +DA:204,7 +DA:205,7 +DA:206,7 +DA:207,7 +DA:208,7 +DA:209,7 +DA:210,7 +DA:211,7 +DA:212,7 +DA:213,7 +DA:214,7 +DA:215,7 +DA:216,7 +DA:217,7 +DA:218,7 +DA:219,7 +DA:220,7 +DA:221,7 +DA:222,7 +DA:223,7 +DA:224,7 +DA:225,7 +DA:226,7 +DA:227,7 +DA:228,7 +DA:229,7 +DA:230,7 +DA:231,7 +DA:232,7 +DA:233,7 +DA:234,2 +DA:235,7 +DA:236,7 +DA:237,7 +DA:238,7 +DA:239,7 +DA:240,7 +DA:241,7 LF:241 LH:241 -BRDA:1,0,0,366 -BRDA:2,1,0,6 -BRDA:5,2,0,11 -BRDA:5,3,0,11 -BRDA:8,4,0,6 -BRDA:9,5,0,6 -BRDA:10,6,0,6 -BRDA:12,7,0,6 -BRDA:14,8,0,6 -BRDA:15,9,0,11 -BRDA:17,10,0,10 -BRDA:18,11,0,6 -BRDA:21,12,0,8 +BRDA:1,0,0,439 +BRDA:2,1,0,7 +BRDA:5,2,0,13 +BRDA:5,3,0,13 +BRDA:8,4,0,7 +BRDA:9,5,0,7 +BRDA:10,6,0,7 +BRDA:12,7,0,7 +BRDA:14,8,0,7 +BRDA:15,9,0,13 +BRDA:17,10,0,12 +BRDA:18,11,0,8 +BRDA:21,12,0,9 BRDA:22,13,0,2 -BRDA:23,14,0,7 -BRDA:27,15,0,6 -BRDA:30,16,0,11 -BRDA:30,17,0,11 -BRDA:36,18,0,6 -BRDA:36,19,0,9 +BRDA:23,14,0,8 +BRDA:27,15,0,7 +BRDA:30,16,0,13 +BRDA:30,17,0,13 +BRDA:36,18,0,7 +BRDA:36,19,0,11 BRDA:37,20,0,6 -BRDA:41,21,0,6 -BRDA:44,22,0,6 -BRDA:47,23,0,5 -BRDA:51,24,0,6 -BRDA:54,25,0,10 -BRDA:67,26,0,4 -BRDA:56,27,0,10 -BRDA:57,28,0,5 -BRDA:58,29,0,5 -BRDA:60,30,0,10 -BRDA:61,31,0,6 -BRDA:70,32,0,6 -BRDA:77,33,0,6 -BRDA:78,34,0,6 -BRDA:79,35,0,6 -BRDA:81,36,0,11 -BRDA:81,37,0,11 -BRDA:82,38,0,11 -BRDA:100,39,0,10 -BRDA:102,40,0,8 -BRDA:109,41,0,3 -BRDA:101,42,0,6 -BRDA:137,43,0,14 +BRDA:41,21,0,7 +BRDA:44,22,0,7 +BRDA:47,23,0,6 +BRDA:51,24,0,7 +BRDA:54,25,0,12 +BRDA:67,26,0,5 +BRDA:56,27,0,12 +BRDA:57,28,0,6 +BRDA:58,29,0,6 +BRDA:60,30,0,12 +BRDA:61,31,0,8 +BRDA:70,32,0,7 +BRDA:77,33,0,7 +BRDA:78,34,0,7 +BRDA:79,35,0,7 +BRDA:81,36,0,13 +BRDA:81,37,0,13 +BRDA:82,38,0,13 +BRDA:100,39,0,12 +BRDA:102,40,0,10 +BRDA:109,41,0,4 +BRDA:101,42,0,7 +BRDA:137,43,0,16 BRDA:138,44,0,1 -BRDA:143,45,0,8 -BRDA:155,46,0,6 -BRDA:156,47,0,6 -BRDA:157,48,0,12 +BRDA:143,45,0,10 +BRDA:155,46,0,7 +BRDA:156,47,0,7 +BRDA:157,48,0,13 BRDA:158,49,0,2 BRDA:162,50,0,6 BRDA:163,51,0,4 -BRDA:200,52,0,6 -BRDA:202,53,0,1 -BRDA:215,54,0,1 -BRDA:219,55,0,6 -BRDA:220,56,0,6 -BRDA:221,57,0,6 -BRDA:223,58,0,10 -BRDA:227,59,0,5 +BRDA:200,52,0,7 +BRDA:202,53,0,2 +BRDA:215,54,0,2 +BRDA:219,55,0,7 +BRDA:220,56,0,7 +BRDA:221,57,0,7 +BRDA:223,58,0,11 +BRDA:227,59,0,6 BRDA:228,60,0,4 -BRDA:228,61,0,1 -BRDA:233,62,0,1 -BRDA:236,63,0,6 -BRDA:3,64,0,366 -BRDA:7,65,0,366 -BRDA:16,66,0,366 -BRDA:18,67,0,6 -BRDA:28,68,0,366 -BRDA:31,69,0,366 -BRDA:33,70,0,366 -BRDA:35,71,0,366 -BRDA:35,72,0,366 -BRDA:38,73,0,9 +BRDA:228,61,0,2 +BRDA:233,62,0,2 +BRDA:236,63,0,7 +BRDA:3,64,0,439 +BRDA:7,65,0,439 +BRDA:16,66,0,439 +BRDA:18,67,0,8 +BRDA:28,68,0,439 +BRDA:31,69,0,439 +BRDA:33,70,0,439 +BRDA:35,71,0,439 +BRDA:35,72,0,439 +BRDA:38,73,0,11 BRDA:37,74,0,6 -BRDA:62,75,0,6 -BRDA:82,76,0,11 -BRDA:107,77,0,10 -BRDA:103,78,0,8 -BRDA:136,79,0,366 -BRDA:140,80,0,14 -BRDA:142,81,0,14 -BRDA:143,82,0,8 -BRDA:161,83,0,12 -BRDA:163,84,0,12 -BRDA:167,85,0,366 -BRDA:167,86,0,366 -BRDA:167,87,0,366 -BRDA:11,88,0,366 -BRDA:13,89,0,366 -BRDA:15,90,0,11 -BRDA:22,91,0,8 -BRDA:26,92,0,7 -BRDA:33,93,0,366 -BRDA:75,94,0,366 -BRDA:76,95,0,366 -BRDA:76,96,0,366 -BRDA:80,97,0,366 -BRDA:83,98,0,366 -BRDA:85,99,0,366 -BRDA:86,100,0,366 -BRDA:90,101,0,366 -BRDA:90,102,0,366 -BRDA:93,103,0,366 -BRDA:93,104,0,366 -BRDA:99,105,0,366 -BRDA:99,106,0,366 -BRDA:135,107,0,366 -BRDA:142,108,0,14 -BRDA:146,109,0,366 -BRDA:146,110,0,366 -BRDA:147,111,0,366 -BRDA:148,112,0,366 -BRDA:151,113,0,366 +BRDA:62,75,0,8 +BRDA:82,76,0,13 +BRDA:107,77,0,12 +BRDA:103,78,0,10 +BRDA:136,79,0,439 +BRDA:140,80,0,16 +BRDA:142,81,0,16 +BRDA:143,82,0,10 +BRDA:161,83,0,13 +BRDA:163,84,0,13 +BRDA:167,85,0,439 +BRDA:167,86,0,439 +BRDA:167,87,0,439 +BRDA:11,88,0,439 +BRDA:13,89,0,439 +BRDA:15,90,0,13 +BRDA:22,91,0,9 +BRDA:26,92,0,8 +BRDA:33,93,0,439 +BRDA:75,94,0,439 +BRDA:76,95,0,439 +BRDA:76,96,0,439 +BRDA:80,97,0,439 +BRDA:83,98,0,439 +BRDA:85,99,0,439 +BRDA:86,100,0,439 +BRDA:90,101,0,439 +BRDA:90,102,0,439 +BRDA:93,103,0,439 +BRDA:93,104,0,439 +BRDA:99,105,0,439 +BRDA:99,106,0,439 +BRDA:135,107,0,439 +BRDA:142,108,0,16 +BRDA:146,109,0,439 +BRDA:146,110,0,439 +BRDA:147,111,0,439 +BRDA:148,112,0,439 +BRDA:151,113,0,439 BRDA:162,114,0,6 -BRDA:168,115,0,366 -BRDA:168,116,0,366 -BRDA:169,117,0,366 -BRDA:173,118,0,366 -BRDA:177,119,0,366 -BRDA:177,120,0,366 -BRDA:183,121,0,366 -BRDA:189,122,0,366 -BRDA:189,123,0,366 -BRDA:191,124,0,366 -BRDA:191,125,0,366 -BRDA:191,126,0,366 -BRDA:192,127,0,366 -BRDA:192,128,0,366 -BRDA:192,129,0,366 -BRDA:193,130,0,366 -BRDA:193,131,0,366 -BRDA:193,132,0,366 -BRDA:194,133,0,366 -BRDA:194,134,0,366 -BRDA:194,135,0,366 -BRDA:19,136,0,10 -BRDA:34,137,0,366 -BRDA:64,138,0,10 -BRDA:166,139,0,366 -BRDA:166,140,0,366 -BRDA:166,141,0,366 -BRDA:13,142,0,366 -BRDA:68,143,0,10 -BRDA:58,144,0,10 -BRDA:90,145,0,366 -BRDA:85,146,0,366 -BRDA:94,147,0,366 -BRDA:97,148,0,366 -BRDA:96,149,0,366 -BRDA:114,150,0,366 -BRDA:117,151,0,366 -BRDA:127,152,0,366 -BRDA:128,153,0,366 -BRDA:132,154,0,366 -BRDA:173,155,0,366 -BRDA:179,156,0,366 -BRDA:181,157,0,366 -BRDA:184,158,0,366 -BRDA:92,159,0,366 -BRDA:228,160,0,10 +BRDA:168,115,0,439 +BRDA:168,116,0,439 +BRDA:169,117,0,439 +BRDA:173,118,0,439 +BRDA:177,119,0,439 +BRDA:177,120,0,439 +BRDA:183,121,0,439 +BRDA:189,122,0,439 +BRDA:189,123,0,439 +BRDA:191,124,0,439 +BRDA:191,125,0,439 +BRDA:191,126,0,439 +BRDA:192,127,0,439 +BRDA:192,128,0,439 +BRDA:192,129,0,439 +BRDA:193,130,0,439 +BRDA:193,131,0,439 +BRDA:193,132,0,439 +BRDA:194,133,0,439 +BRDA:194,134,0,439 +BRDA:194,135,0,439 +BRDA:19,136,0,12 +BRDA:34,137,0,439 +BRDA:64,138,0,12 +BRDA:166,139,0,439 +BRDA:166,140,0,439 +BRDA:166,141,0,439 +BRDA:13,142,0,439 +BRDA:68,143,0,12 +BRDA:58,144,0,12 +BRDA:90,145,0,439 +BRDA:85,146,0,439 +BRDA:94,147,0,439 +BRDA:97,148,0,439 +BRDA:96,149,0,439 +BRDA:114,150,0,439 +BRDA:117,151,0,439 +BRDA:127,152,0,439 +BRDA:128,153,0,439 +BRDA:132,154,0,439 +BRDA:173,155,0,439 +BRDA:179,156,0,439 +BRDA:181,157,0,439 +BRDA:184,158,0,439 +BRDA:92,159,0,439 +BRDA:228,160,0,11 BRF:161 BRH:161 end_of_record diff --git a/dist/CssChain.d.ts b/dist/CssChain.d.ts new file mode 100644 index 0000000..fe9d230 --- /dev/null +++ b/dist/CssChain.d.ts @@ -0,0 +1,128 @@ +/// +import { HTMLElementMixin as AnyElement } from './HTMLElementMixin'; + +/** + * Create the CssChain with dual interface of Array and its member. + * The member type is HTMLElement-inherited type. + * @param css string + * @param el Node|Node[] css selector to be applied on node(s) + * @param protoArr prototype(s) for members and methods of CssChain + */ +export function CssChain(css?: string|AnyElement|Array, el?: Document|Node, protoArr?: string|T|string[]): CssChainCollection&T; + +/** CssChain as Array and HTMLElementMixin dual interface */ +export type CssChainT = CssChainCollection & T; + +/** CssChain Array part */ +export interface CssChainCollection extends Array, AnyElement +{ + forEach(callbackfn: (value: AnyElement&T, index: number, array: CssChainCollection) => void, thisArg?: any) : CssChainCollection; + + /** (alias for `getAttribute`) returns 1st element attribute value or `undefined` for empty collection */ + attr(name:string): CssChainCollection; + /** (alias for `setAttribute`) sets elements attribute, returns CssChain */ + attr(name:string, value:string): CssChainCollection; + /** (alias for `setAttribute`) sets `css`-defined sub-tree elements attribute, returns CssChain */ + attr(name:string, value:string, css:string): CssChainCollection; + /** returns 1st element property value or `undefined` for empty collection */ + prop(name:string): any; + /** sets elements attribute, returns CssChain */ + prop(name:string, value:any): CssChainCollection; + /** sets `css`-defined sub-tree elements attribute, returns CssChain */ + prop(name:string, value:any, css:string): CssChainCollection; + /** selects 1st elements by @param css string from each collection element, returns CssChain */ + querySelector(css: string): CssChainT; + /** selects child elements by @param css string, returns CssChain */ + querySelectorAll(css: string): CssChainT; + /** alias to [querySelectorAll](https://developer.mozilla.org/en-US/docs/Web/API/Element/querySelectorAll) */ + $(css: string): CssChainCollection; + /** set of parents of current set which + [matches](https://developer.mozilla.org/en-US/docs/Web/API/Element/matches) + the selector, duplications removed */ + parent(css: string): CssChainCollection; + /** alias to [addEventListener](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener) */ + on( eventName:string, listener: (ev: Event) => any ): CssChainCollection; + /** appends html or node */ + append(htmlOrElement: string|string[]|Node|Node[]|CssChainT): CssChainT; + /** delete all nodes, returns empty CssChain */ + remove(): CssChainCollection; + /** alias to [removeEventListener](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener) */ + remove(eventName:string,callback:any): CssChainCollection; + /** removes content of collection nodes, collection nodes remain */ + erase(): CssChainCollection; + /** returns text of whole collection */ + txt(): string; + /** sets text for each element from `val` or callback */ + txt(val: string | ((el:T,i:number,arr:CssChainCollection)=>string), css: string|CssChainCollection): CssChainCollection; + /** sets text for children elements defined by css, returns original collection */ + txt(val: any, css: string|CssChainCollection): CssChainCollection; + + /** returns concatenated innerHTML of collection */ + html(): string; + /** sets innerHTML of each collection element */ + html( callback: ((el:T,i:number,arr:CssChainCollection)=>string) ): CssChainCollection; + /** sets innerHTML of each collection element */ + html( htmlStr: string): CssChainCollection; + /** array duplicated within each collection element */ + html( htmlStrArr: string[] | T[] ): CssChainCollection; + /** sets html for children elements defined by css. `val` type is one of above. Returns original collection */ + html( val: string, css: string ): CssChainCollection; + /** returns collection of cloned elements of current one by [Node.cloneNode(deep)](https://developer.mozilla.org/en-US/docs/Web/API/Node/cloneNode) */ + cloneNode(...args: any[]): CssChainT; + /** clone nodes(deep) or objects(shallow). Returns cloned collection */ + clone(): CssChainCollection; + /** clone nodes to be inserted into document using [Document.importNode()](https://developer.mozilla.org/en-US/docs/Web/API/Document/importNode) */ + clone(doc:Document): CssChainCollection; + /** when callback result is a string or node it is used as return value */ + clone(count: number, cb: ((clonedNode:T, index:number)=>void) ): CssChainCollection; + /** alias of `clone(arr.length) */ + clone( arr: any[] | CssChainCollection ): CssChainCollection; + /** call callback after clone */ + clone( arr: any[] | CssChainCollection, callback:(( clonedNode:T, dataItem:any, index:number, arr:any[] )=>void) ): CssChainCollection; + /** append HTML text or nodes */ + append( html:string | string[] | Node[] | CssChainT ): CssChainCollection; + /** returns all slots */ + slots(): CssChainCollection; + /** `slots('')` - returns slot without name
+ * `slots(',name1,name2...')` - returns named slots. Blank name defines unnamed(default) slot */ + slots(nameCsv:string): CssChainCollection; + /** slots(name, val | cb(el,i,arr) )` assigns slot content, alias to [HTMLSlotElement.assign(nodes)](https://developer.mozilla.org/en-US/docs/Web/API/HTMLSlotElement/assign) + when `cb` is defined slots content is set by `html(cb)` */ + slots(nameCsv:string, val: string|Node|(((name:string,i:number,arr:CssChainCollection)=>string))): CssChainCollection; + + /** would render the current node as a template with immediate children with `slot='xxx'` + as assignedNodes payload for ``. There is no default slot in such case as the inner DOM serves the + default content. */ + template(): CssChainCollection; + /** typically `template('template')` would extract the template defined by selector, + clone it with assigned slots from remaining children */ + template(css:string): CssChainCollection; + /** the children are used as slot content within node clone which is set as a child */ + template(node:Node): CssChainCollection; + + /** returns a sequence of the elements assigned to this slot (and no other nodes). + * + * If the flatten *option* is set to *true*, it returns a sequence of both the elements assigned to this slot, + * as well as the elements assigned to any other slots that are descendants of this slot. + * If no assigned elements are found, it returns the slot's fallback content. + * [mdn](https://developer.mozilla.org/en-US/docs/Web/API/HTMLSlotElement/assignedElements) */ + assignedElements(options?: AssignedNodesOptions): CssChainT; + /** returns a sequence of the nodes assigned to this slot (and no other nodes). + * + * If the flatten *option* is set to *true*, it returns a sequence of both the elements assigned to this slot, + * as well as the elements assigned to any other slots that are descendants of this slot. + * If no assigned elements are found, it returns the slot's fallback content. + * [mdn](https://developer.mozilla.org/en-US/docs/Web/API/HTMLSlotElement/assignedNodes) */ + assignedNodes(f: any): CssChainT; + + /** retrieves firstElementChild for each collection element */ + get firstElementChild(): CssChainCollection; + + /** retrieves firstChild for each collection element */ + get firstChild(): CssChainCollection; + /** retrieves child nodes for each collection element */ + get childNodes(): CssChainCollection; + /** retrieves children nodes for each collection element */ + get children(): CssChainCollection; +} +export default CssChain; diff --git a/dist/CssChain.js b/dist/CssChain.js index 65f4e3a..58e559f 100644 --- a/dist/CssChain.js +++ b/dist/CssChain.js @@ -1,2 +1,2 @@ -import{setProp as E}from"./ApiChain.js";export const map=(t,...e)=>Array.prototype.map.apply(t,e),csv=(t,...e)=>map(t,...e).join(","),collectionText=t=>map(t,e=>getNodeText(e)).join("");const y=()=>"",c=t=>Array.isArray(t),l=(t,e)=>typeof t===e,u=t=>l(t,"string"),x=t=>l(t,"number"),p=t=>l(t,"function"),w=t=>t&&t.nodeType,L=t=>t.getRootNode().host,m=t=>L(t)&&t.assignedNodes,S=(t,e)=>(t.forEach(e),t),N=t=>m(t)?t.assignedNodes().forEach(e=>e.remove()):t.innerHTML="",A={1:t=>t.assignedNodes?collectionText(t.assignedNodes())||collectionText(t.childNodes):["SCRIPT","AUDIO","STYLE","CANVAS","DATALIST","EMBED","OBJECT","PICTURE","IFRAME","METER","NOSCRIPT","SELECT","OPTGROUP","PROGRESS","TEMPLATE","VIDEO"].includes(t.nodeName)?"":t.innerText,3:t=>t.nodeValue,11:t=>collectionText(t.childNodes)};export const getNodeText=t=>(A[t.nodeType]||y)(t),setNodeText=(t,e)=>m(t)?t.assignedElements().forEach(r=>r.innerText=e):t.innerText=e,assignParent=(t,e)=>t.map(r=>e.appendChild(r)),collectionHtml=t=>map(t,e=>e.assignedElements?map(e.assignedElements(),r=>r.outerHTML).join(""):e.innerHTML).join(""),html2NodeArr=t=>{const e=document.createElement("div");e.innerHTML=t;const r=o=>{if(o.nodeType!==3)return o;const s=document.createElement("span");return s.append(o),s};return[...e.childNodes].map(o=>(o.remove(),o)).map(r)},addNodeHtml=(t,e)=>{const r=(s,n)=>n instanceof Node?n.remove()||s.append(n):html2NodeArr(n).forEach(i=>s.append(i)),o=s=>m(t)?t.assign(...t.assignedNodes(),...assignParent(S(html2NodeArr(s),n=>n.slot=t.name),t.getRootNode().host)):r(t,s);e instanceof NodeList||c(e)?[...e].forEach(o):o(e)},setNodeHtml=(t,e)=>{N(t),addNodeHtml(t,e)};class h extends Array{attr(...e){return e.length>1?((e[2]?this.$(e[2]):this).setAttribute(...e),this):this.getAttribute(...e)}prop(...e){return e.length>1?((e[2]?this.$(e[2]):this).forEach(r=>r[e[0]]=e[1]),this):this[0][e[0]]}forEach(...e){return Array.prototype.forEach.apply(this,e),this}map(...e){return map(this,...e)}push(...e){return Array.prototype.push.apply(this,e),this}querySelector(e){return new h().push(this.querySelectorAll(e)[0])}querySelectorAll(e){return this.reduce((r,o)=>r.push(...(o.shadowRoot||o).querySelectorAll(e)),new h)}$(...e){return e.length?this.querySelectorAll(...e):this}parent(e){const r=new Set,o=n=>r.has(n)?0:(r.add(n),n),s=n=>{for(;n=n.parentElement;)if(n.matches(e))return o(n)};return CssChain(this.map(e?s:n=>o(n.parentElement)).filter(n=>n))}on(...e){return this.addEventListener(...e)}append(e){return this.forEach(r=>addNodeHtml(r,e))}remove(...e){return e.length?p(e[1])?this.removeEventListener(...e):this.map(r=>r.matches(e[0])).filter(r=>r):(this.forEach(r=>r.remove()),new h)}clear(){return this.forEach(e=>N(e))}slot(...e){const r=this.map(o=>o.shadowRoot||o).$(e.length?csv(e[0].split(","),o=>['""',"''"].includes(o)||!o?"slot:not([name])":`slot[name="${o}"]`):"slot");return e.length===2?(r.html(e[1]),this):r}template(e){if(e===void 0){const o=this.$("[slot]").forEach(s=>s.remove());e=this.splice(0,this.length),this.push(document.createElement("span")),this.append(o)}else u(e)&&(e=this.$(e),e.remove());const r=CssChain(e.content||e).clone(this);return r.slot().forEach(o=>{const s=this.children.filter(n=>n.slot===o.name);s.length&&setNodeHtml(o,s)}),this.children.remove(),this.forEach((o,s)=>o.appendChild(r[s])),this}get innerText(){return this.text()}set innerText(e){return this.text(e)}text(e,r=void 0){const o=r?this.$(r):this;return e===void 0?collectionText(o):(o.forEach(p(e)?(s,n)=>setNodeText(s,e(s,n,o)):s=>setNodeText(s,e)),this)}get outerHTML(){return this.map(e=>e.outerHTML).join("")}set outerHTML(e){return this.forEach((r,o,s)=>{const n=r.parentNode;html2NodeArr(p(e)?e(r,o,s):e).forEach(i=>n.insertBefore(s[o]=i,r)),r.remove()})}get innerHTML(){return this.html()}set innerHTML(e){return this.html(e)}html(e,r=void 0){const o=r?this.$(r):this;return e===void 0?collectionHtml(o):(o.forEach(p(e)?(s,n)=>setNodeHtml(s,e(s,n,o)):s=>setNodeHtml(s,e)),this)}assignedElements(){return CssChain([].concat(...this.map(e=>e.assignedElements?e.assignedElements():[])))}assignedNodes(e){return CssChain([].concat(...this.map(r=>r.assignedNodes?r.assignedNodes(e):[])))}cloneNode(...e){return this.map(r=>r.cloneNode&&r.cloneNode(...e))}clone(e=1,r=void 0){let o=e;if(x(e)&&(o=Array.from({length:e},(n,i)=>i)),c(o)){const n=[];return this.forEach(i=>o.forEach((g,T)=>{const f=i.ownerDocument.importNode(i,!0),d=r&&r(f,g,T,o);u(d)?n.push(...html2NodeArr(d)):c(d)?n.push(...d):n.push(w(d)?d:f)})),CssChain(n)}const s=e;return this.map(n=>s?s.importNode(n,!0):n.cloneNode?n.cloneNode(!0):Object.assign({},n))}get firstElementChild(){return CssChain(this.map(e=>e.firstElementChild).filter(e=>e))}get firstChild(){return CssChain(this.map(e=>e.firstChild).filter(e=>e))}get childNodes(){return CssChain([].concat(...map(this,e=>[...e.childNodes||[]])))}get children(){return CssChain([].concat(...map(this,e=>[...e.children||[]])))}}const a=new Set,O=Object.getPrototypeOf({});export function applyPrototype(t,e){const r=u(t)?document.createElement(t):t;if(!a.has(r.tagName)){a.add(r.tagName);for(let o in r)o in e.prototype||E(r,o,e);for(let o;(o=Object.getPrototypeOf(r))!==O&&o!=null&&!a.has(o);){a.add(o);for(let s of Object.getOwnPropertyNames(o))s in e.prototype||E(r,s,e)}}}Object.getOwnPropertyNames(window).filter(t=>t.startsWith("HTML")&&t.endsWith("Element")&&t.length>11).map(t=>t.substring(4,t.length-7).toLowerCase()).forEach(t=>applyPrototype(document.createElement(t),h));export function CssChain(t,e=document,r=[]){const o=typeof t=="string"?e.querySelectorAll(t):c(t)?t:[t?t.shadowRoot||t:document];c(r)?r.length||(r=[...o].slice(0,256)):r=[r],r.forEach(n=>applyPrototype(n,h));const s=new h;return s.push(...o),s}export default CssChain; +import{setProp as E}from"./ApiChain.js";export const map=(t,...e)=>Array.prototype.map.apply(t,e),csv=(t,...e)=>map(t,...e).join(","),collectionText=t=>map(t,e=>getNodeText(e)).join("");const y=()=>"",c=t=>Array.isArray(t),l=(t,e)=>typeof t===e,u=t=>l(t,"string"),x=t=>l(t,"number"),p=t=>l(t,"function"),L=t=>t&&t.nodeType,w=t=>t.getRootNode().host,m=t=>w(t)&&t.assignedNodes,S=(t,e)=>(t.forEach(e),t),N=t=>m(t)?t.assignedNodes().forEach(e=>e.remove()):t.innerHTML="",A={1:t=>t.assignedNodes?collectionText(t.assignedNodes())||collectionText(t.childNodes):["SCRIPT","AUDIO","STYLE","CANVAS","DATALIST","EMBED","OBJECT","PICTURE","IFRAME","METER","NOSCRIPT","SELECT","OPTGROUP","PROGRESS","TEMPLATE","VIDEO"].includes(t.nodeName)?"":t.innerText,3:t=>t.nodeValue,11:t=>collectionText(t.childNodes)};export const getNodeText=t=>(A[t.nodeType]||y)(t),setNodeText=(t,e)=>m(t)?t.assignedElements().forEach(r=>r.innerText=e):t.innerText=e,assignParent=(t,e)=>t.map(r=>e.appendChild(r)),collectionHtml=t=>map(t,e=>e.assignedElements?map(e.assignedElements(),r=>r.outerHTML).join(""):e.innerHTML).join(""),html2NodeArr=t=>{const e=document.createElement("div");e.innerHTML=t;const r=o=>{if(o.nodeType!==3)return o;const s=document.createElement("span");return s.append(o),s};return[...e.childNodes].map(o=>(o.remove(),o)).map(r)},addNodeHtml=(t,e)=>{const r=(s,n)=>n instanceof Node?n.remove()||s.append(n):html2NodeArr(n).forEach(i=>s.append(i)),o=s=>m(t)?t.assign(...t.assignedNodes(),...assignParent(S(html2NodeArr(s),n=>n.slot=t.name),t.getRootNode().host)):r(t,s);e instanceof NodeList||c(e)?[...e].forEach(o):o(e)},setNodeHtml=(t,e)=>{N(t),addNodeHtml(t,e)};class h extends Array{attr(...e){return e.length>1?((e[2]?this.$(e[2]):this).setAttribute(...e),this):this.getAttribute(...e)}prop(...e){return e.length>1?((e[2]?this.$(e[2]):this).forEach(r=>r[e[0]]=e[1]),this):this[0][e[0]]}forEach(...e){return Array.prototype.forEach.apply(this,e),this}map(...e){return map(this,...e)}push(...e){return Array.prototype.push.apply(this,e),this}querySelector(e){return new h().push(this.querySelectorAll(e)[0])}querySelectorAll(e){return this.reduce((r,o)=>r.push(...(o.shadowRoot||o).querySelectorAll(e)),new h)}$(...e){return e.length?this.querySelectorAll(...e):this}parent(e){const r=new Set,o=n=>r.has(n)?0:(r.add(n),n),s=n=>{for(;n=n.parentElement;)if(n.matches(e))return o(n)};return CssChain(this.map(e?s:n=>o(n.parentElement)).filter(n=>n))}on(...e){return this.addEventListener(...e)}append(e){return this.forEach(r=>addNodeHtml(r,e))}remove(...e){return e.length?p(e[1])?this.removeEventListener(...e):this.map(r=>r.matches(e[0])).filter(r=>r):(this.forEach(r=>r.remove()),new h)}erase(){return this.forEach(e=>N(e))}slots(...e){const r=this.map(o=>o.shadowRoot||o).$(e.length?csv(e[0].split(","),o=>['""',"''"].includes(o)||!o?"slot:not([name])":`slot[name="${o}"]`):"slot");return e.length===2?(r.html(e[1]),this):r}template(e){if(e===void 0){const o=this.$("[slot]").forEach(s=>s.remove());e=this.splice(0,this.length),this.push(document.createElement("span")),this.append(o)}else u(e)&&(e=this.$(e),e.remove());const r=CssChain(e.content||e).clone(this);return r.slots().forEach(o=>{const s=this.children.filter(n=>n.slot===o.name);s.length&&setNodeHtml(o,s)}),this.children.remove(),this.forEach((o,s)=>o.appendChild(r[s])),this}get innerText(){return this.txt()}set innerText(e){return this.txt(e)}txt(e,r=void 0){const o=r?this.$(r):this;return e===void 0?collectionText(o):(o.forEach(p(e)?(s,n)=>setNodeText(s,e(s,n,o)):s=>setNodeText(s,e)),this)}get outerHTML(){return this.map(e=>e.outerHTML).join("")}set outerHTML(e){return this.forEach((r,o,s)=>{const n=r.parentNode;html2NodeArr(p(e)?e(r,o,s):e).forEach(i=>n.insertBefore(s[o]=i,r)),r.remove()})}get innerHTML(){return this.html()}set innerHTML(e){return this.html(e)}html(e,r=void 0){const o=r?this.$(r):this;return e===void 0?collectionHtml(o):(o.forEach(p(e)?(s,n)=>setNodeHtml(s,e(s,n,o)):s=>setNodeHtml(s,e)),this)}assignedElements(e){return CssChain([].concat(...this.map(r=>r.assignedElements?r.assignedElements(e):[])))}assignedNodes(e){return CssChain([].concat(...this.map(r=>r.assignedNodes?r.assignedNodes(e):[])))}cloneNode(...e){return this.map(r=>r.cloneNode&&r.cloneNode(...e))}clone(e=1,r=void 0){let o=e;if(x(e)&&(o=Array.from({length:e},(n,i)=>i)),c(o)){const n=[];return this.forEach(i=>o.forEach((g,T)=>{const f=i.ownerDocument.importNode(i,!0),d=r&&r(f,g,T,o);u(d)?n.push(...html2NodeArr(d)):c(d)?n.push(...d):n.push(L(d)?d:f)})),CssChain(n)}const s=e;return this.map(n=>s?s.importNode(n,!0):n.cloneNode?n.cloneNode(!0):Object.assign({},n))}get firstElementChild(){return CssChain(this.map(e=>e.firstElementChild).filter(e=>e))}get firstChild(){return CssChain(this.map(e=>e.firstChild).filter(e=>e))}get childNodes(){return CssChain([].concat(...map(this,e=>[...e.childNodes||[]])))}get children(){return CssChain([].concat(...map(this,e=>[...e.children||[]])))}}const a=new Set,O=Object.getPrototypeOf({});export function applyPrototype(t,e){const r=u(t)?document.createElement(t):t;if(!a.has(r.tagName)){a.add(r.tagName);for(let o in r)o in e.prototype||E(r,o,e);for(let o;(o=Object.getPrototypeOf(r))!==O&&o!=null&&!a.has(o);){a.add(o);for(let s of Object.getOwnPropertyNames(o))s in e.prototype||E(r,s,e)}}}Object.getOwnPropertyNames(window).filter(t=>t.startsWith("HTML")&&t.endsWith("Element")&&t.length>11).map(t=>t.substring(4,t.length-7).toLowerCase()).forEach(t=>applyPrototype(document.createElement(t),h));export function CssChain(t,e=document,r=[]){const o=typeof t=="string"?e.querySelectorAll(t):c(t)?t:[t?t.shadowRoot||t:document];c(r)?r.length||(r=[...o].slice(0,256)):r=[r],r.forEach(n=>applyPrototype(n,h));const s=new h;return s.push(...o),s}export default CssChain; //# sourceMappingURL=CssChain.js.map diff --git a/dist/CssChain.js.map b/dist/CssChain.js.map index d96af36..7081a9f 100644 --- a/dist/CssChain.js.map +++ b/dist/CssChain.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../node_modules/css-chain/CssChain.js"], - "sourcesContent": ["import { setProp } from './ApiChain.js';\nexport const map = (arr, ...args ) => Array.prototype.map.apply( arr, args );\nexport const csv = (arr, ...args ) => map( arr, ...args ).join(',');\n\nexport const collectionText = arr=> map(arr, e=>getNodeText(e)).join('')\n\nconst nop = ()=>''\n, isArr = a => Array.isArray(a)\n, isT = (a,t) => typeof a === t\n, isStr = a => isT(a, 'string')\n, isNum = a => isT(a, 'number')\n, isFn = a => isT(a, 'function')\n, isNode = n => n && n.nodeType\n, inWC = n => n.getRootNode().host\n, hasAssigned = n=> inWC(n) && n.assignedNodes\n, each = (arr, cb )=> (arr.forEach(cb),arr)\n, clear = n => hasAssigned(n)\n ? n.assignedNodes().forEach( a => a.remove() )\n : n.innerHTML='' ;\n\nconst node2text = { 1: n=>n.assignedNodes\n ? collectionText(n.assignedNodes()) || collectionText(n.childNodes)\n : [ 'SCRIPT','AUDIO','STYLE','CANVAS','DATALIST','EMBED','OBJECT'\n , 'PICTURE','IFRAME','METER','NOSCRIPT'\n , 'SELECT','OPTGROUP','PROGRESS','TEMPLATE','VIDEO'\n ].includes(n.nodeName)? '' : n.innerText //collectionText(n.children)\n , 3: n=>n.nodeValue\n , 11:n=>collectionText(n.childNodes)\n };\nexport const getNodeText = n => (node2text[n.nodeType] || nop)(n);\nexport const setNodeText = ( n, val ) =>\n hasAssigned(n)\n ? n.assignedElements().forEach( e => e.innerText = val )\n : n.innerText = val;\nexport const assignParent = (arr,n)=>arr.map( e=>n.appendChild(e))\nexport const collectionHtml = arr => map( arr, n=>n.assignedElements\n ? map( n.assignedElements(), e=>e.outerHTML ).join('')\n : n.innerHTML\n ).join('');\n\nexport const html2NodeArr = html =>\n{ const n = document.createElement('div');\n n.innerHTML = html;\n const wrapIfText = e=>{\n if( e.nodeType !== 3 )\n return e;\n const n = document.createElement('span');\n n.append(e);\n return n;\n };\n return [...n.childNodes].map(e=>(e.remove(),e)).map(wrapIfText);\n};\n\nexport const addNodeHtml = ( n, val ) =>\n{\n const set = ( to, v )=> ( v instanceof Node\n ? v.remove() || to.append(v)\n : html2NodeArr(v).forEach( e=>to.append(e) )\n )\n , append = v => hasAssigned(n)\n ? n.assign( ...n.assignedNodes()\n , ...assignParent( each( html2NodeArr(v), e=>e.slot=n.name )\n , n.getRootNode().host ) )\n : set(n,v);\n\n val instanceof NodeList || isArr(val)\n ? [ ...val ].forEach( append )\n : append(val);\n}\nexport const setNodeHtml = ( n, val ) => { clear(n); addNodeHtml(n,val) };\n\n class\nCssChainLocal extends Array\n{\n attr(...args){ return args.length>1 ? (( args[2] ? this.$(args[2]) : this ).setAttribute(...args),this) : this.getAttribute(...args) }\n prop(...args){ return args.length>1 ? (( args[2] ? this.$(args[2]) : this ).forEach( el=>el[args[0]]=args[1]),this ): this[0][args[0]] }\n forEach( ...args){ Array.prototype.forEach.apply(this,args); return this }\n map( ...args){ return map(this,...args) }\n push(...args){ Array.prototype.push.apply(this,args); return this; }\n querySelector(css){ return new CssChainLocal().push( this.querySelectorAll(css)[0] ) }\n querySelectorAll(css){ return this.reduce( ($,el)=> $.push(...(el.shadowRoot||el).querySelectorAll(css) ), new CssChainLocal()) }\n $(...args){ return args.length ? this.querySelectorAll(...args) : this; }\n parent(css)\n { const s = new Set()\n , add = n=> s.has(n) ? 0 : (s.add(n), n)\n , parentLoop = n=> { while( n=n.parentElement )\n if( n.matches(css) )\n return add(n);\n };\n return CssChain(this.map( css ? parentLoop : n=>add(n.parentElement) ).filter(n=>n));\n }\n on(...args){ return this.addEventListener(...args) }\n append(val){ return this.forEach( n=> addNodeHtml(n,val)) }\n remove(...args)\n { if( !args.length )\n { this.forEach(el=>el.remove()); return new CssChainLocal() }\n return isFn(args[1]) ? this.removeEventListener(...args) : this.map(el=>el.matches(args[0])).filter(el=>el) ;\n }\n clear(){ return this.forEach(n=>clear(n)) }\n slot(...arr)\n { const ret = this.map( n=>n.shadowRoot || n ).$( arr.length\n ? csv( arr[0].split(',')\n , n=> ['\"\"',\"''\"].includes(n) || !n\n ? `slot:not([name])`\n : `slot[name=\"${n}\"]`\n )\n : 'slot');\n if( arr.length === 2 )\n { ret.html( arr[ 1 ] );\n return this\n }\n return ret;\n }\n template(n)\n {\n if( n === undefined )\n { const x = this.$('[slot]').forEach(n=>n.remove());\n n = this.splice(0, this.length );\n this.push(document.createElement('span'));\n this.append(x);\n }else if( isStr(n) )\n {\n n = this.$( n );\n n.remove();\n }\n const c = CssChain(n.content||n).clone(this);\n c.slot().forEach( s =>\n { const v = this.children.filter( n=>n.slot===s.name );\n v.length && setNodeHtml(s,v)\n });\n this.children.remove();\n this.forEach( (n,i)=> n.appendChild(c[i]))\n return this;\n }\n get innerText(){ return this.text() }\n set innerText( val ){ return this.text( val ) }\n text( val, css=undefined )\n { const arr = css? this.$(css): this;\n if( val === undefined )\n return collectionText( arr );\n arr.forEach( isFn(val)\n ? (n,i)=>setNodeText(n,val(n,i,arr))\n : n=>setNodeText(n,val) );\n return this\n }\n get outerHTML(){ return this.map( e=>e.outerHTML ).join('') }\n set outerHTML( val )\n { return this.forEach( (n,i,arr)=>\n { const p = n.parentNode;\n html2NodeArr(isFn(val) ? val(n,i,arr): val )\n .forEach( e=> p.insertBefore( (arr[i]=e), n));\n n.remove();\n })\n }\n get innerHTML(){ return this.html() }\n set innerHTML( val ){ return this.html(val) }\n html( val, css=undefined )\n { const arr = css? this.$(css): this;\n if( val === undefined )\n return collectionHtml( arr );\n arr.forEach( isFn(val)\n ? (n,i)=>setNodeHtml(n,val(n,i,arr))\n : n=>setNodeHtml(n,val) );\n return this\n }\n assignedElements(){ return CssChain([].concat( ...this.map( el=>el.assignedElements ? el.assignedElements():[] ) ) ) }\n assignedNodes(f){ return CssChain([].concat( ...this.map( el=>el.assignedNodes ? el.assignedNodes(f):[] ) ) ) }\n cloneNode(...args){ return this.map( el=>el.cloneNode && el.cloneNode(...args) ) }\n clone( /* number|array */count=1, cb=undefined )\n {\n let arr = count;\n if( isNum(count) )\n arr = Array.from({length: count}, (v, i) => i);\n\n if( isArr(arr) )\n { const ret = [];\n this.forEach( n => arr.forEach( (d,i) =>\n { const m = n.ownerDocument.importNode(n,true)\n , x = cb && cb( m, d, i, arr );\n isStr(x)\n ? ret.push( ...html2NodeArr(x) )\n : isArr(x)\n ? ret.push(...x)\n : ret.push( isNode(x) ? x : m )\n }));\n return CssChain( ret );\n }\n const doc = count;\n return this.map( el=> doc? doc.importNode( el,true ): el.cloneNode ? el.cloneNode(true):Object.assign({},el) )\n }\n get firstElementChild(){ return CssChain(this.map( n=>n.firstElementChild).filter(n=>n)) }\n get firstChild(){ return CssChain(this.map( n=>n.firstChild).filter(n=>n)) }\n get childNodes(){ return CssChain([].concat( ...map( this, el=>[...(el.childNodes || [] )] ) ) ) }\n get children(){ return CssChain([].concat( ...map( this, el=>[...(el.children || [] )] ) ) ) }\n}\n\nconst appliedTypes = new Set()\n, OBJ_prototype = Object.getPrototypeOf( {} );\n\n export function\napplyPrototype( nodeOrTag, ApiChain )\n{ const node = isStr(nodeOrTag) ? document.createElement(nodeOrTag) : nodeOrTag;\n if( appliedTypes.has(node.tagName) )\n return;\n appliedTypes.add( node.tagName );\n\n for( let k in node )\n if( !( k in ApiChain.prototype ) )\n setProp( node, k, ApiChain );\n\n for ( let proto; (proto= Object.getPrototypeOf(node)) !== OBJ_prototype && proto != null && !appliedTypes.has(proto) ; )\n { appliedTypes.add(proto);\n for( let k of Object.getOwnPropertyNames(proto) )\n if( !( k in ApiChain.prototype ) )\n setProp( node, k, ApiChain );\n }\n}\nObject.getOwnPropertyNames(window)\n .filter(key => key.startsWith('HTML') && key.endsWith('Element')&& key.length > 11 )\n .map( key=>key.substring(4,key.length-7).toLowerCase() )\n .forEach( tag=>applyPrototype( document.createElement(tag), CssChainLocal ) );\n\n export function\nCssChain( css, el=document, protoArr=[] )\n{\n const arr = 'string'===typeof css\n ? el.querySelectorAll( css )\n : isArr(css) ? css : [css? css.shadowRoot || css : document];\n\n if( isArr( protoArr ) )\n { if( !protoArr.length )\n protoArr = [...arr].slice(0,256);\n }else\n protoArr = [ protoArr ];\n\n protoArr.forEach( el => applyPrototype(el,CssChainLocal) );\n const ret = new CssChainLocal();\n ret.push(...arr);\n return ret;\n}\nexport default CssChain;\n"], - "mappings": "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", + "sourcesContent": ["import { setProp } from './ApiChain.js';\nexport const map = (arr, ...args ) => Array.prototype.map.apply( arr, args );\nexport const csv = (arr, ...args ) => map( arr, ...args ).join(',');\n\nexport const collectionText = arr=> map(arr, e=>getNodeText(e)).join('')\n\nconst nop = ()=>''\n, isArr = a => Array.isArray(a)\n, isT = (a,t) => typeof a === t\n, isStr = a => isT(a, 'string')\n, isNum = a => isT(a, 'number')\n, isFn = a => isT(a, 'function')\n, isNode = n => n && n.nodeType\n, inWC = n => n.getRootNode().host\n, hasAssigned = n=> inWC(n) && n.assignedNodes\n, each = (arr, cb )=> (arr.forEach(cb),arr)\n, clear = n => hasAssigned(n)\n ? n.assignedNodes().forEach( a => a.remove() )\n : n.innerHTML='' ;\n\nconst node2text = { 1: n=>n.assignedNodes\n ? collectionText(n.assignedNodes()) || collectionText(n.childNodes)\n : [ 'SCRIPT','AUDIO','STYLE','CANVAS','DATALIST','EMBED','OBJECT'\n , 'PICTURE','IFRAME','METER','NOSCRIPT'\n , 'SELECT','OPTGROUP','PROGRESS','TEMPLATE','VIDEO'\n ].includes(n.nodeName)? '' : n.innerText //collectionText(n.children)\n , 3: n=>n.nodeValue\n , 11:n=>collectionText(n.childNodes)\n };\nexport const getNodeText = n => (node2text[n.nodeType] || nop)(n);\nexport const setNodeText = ( n, val ) =>\n hasAssigned(n)\n ? n.assignedElements().forEach( e => e.innerText = val )\n : n.innerText = val;\nexport const assignParent = (arr,n)=>arr.map( e=>n.appendChild(e))\nexport const collectionHtml = arr => map( arr, n=>n.assignedElements\n ? map( n.assignedElements(), e=>e.outerHTML ).join('')\n : n.innerHTML\n ).join('');\n\nexport const html2NodeArr = html =>\n{ const n = document.createElement('div');\n n.innerHTML = html;\n const wrapIfText = e=>{\n if( e.nodeType !== 3 )\n return e;\n const n = document.createElement('span');\n n.append(e);\n return n;\n };\n return [...n.childNodes].map(e=>(e.remove(),e)).map(wrapIfText);\n};\n\nexport const addNodeHtml = ( n, val ) =>\n{\n const set = ( to, v )=> ( v instanceof Node\n ? v.remove() || to.append(v)\n : html2NodeArr(v).forEach( e=>to.append(e) )\n )\n , append = v => hasAssigned(n)\n ? n.assign( ...n.assignedNodes()\n , ...assignParent( each( html2NodeArr(v), e=>e.slot=n.name )\n , n.getRootNode().host ) )\n : set(n,v);\n\n val instanceof NodeList || isArr(val)\n ? [ ...val ].forEach( append )\n : append(val);\n}\nexport const setNodeHtml = ( n, val ) => { clear(n); addNodeHtml(n,val) };\n\n class\nCssChainT extends Array\n{\n attr(...args){ return args.length>1 ? (( args[2] ? this.$(args[2]) : this ).setAttribute(...args),this) : this.getAttribute(...args) }\n prop(...args){ return args.length>1 ? (( args[2] ? this.$(args[2]) : this ).forEach( el=>el[args[0]]=args[1]),this ): this[0][args[0]] }\n forEach( ...args){ Array.prototype.forEach.apply(this,args); return this }\n map( ...args){ return map(this,...args) }\n push(...args){ Array.prototype.push.apply(this,args); return this; }\n querySelector(css){ return new CssChainT().push( this.querySelectorAll(css)[0] ) }\n querySelectorAll(css){ return this.reduce( ($,el)=> $.push(...(el.shadowRoot||el).querySelectorAll(css) ), new CssChainT()) }\n $(...args){ return args.length ? this.querySelectorAll(...args) : this; }\n parent(css)\n { const s = new Set()\n , add = n=> s.has(n) ? 0 : (s.add(n), n)\n , parentLoop = n=> { while( n=n.parentElement )\n if( n.matches(css) )\n return add(n);\n };\n return CssChain(this.map( css ? parentLoop : n=>add(n.parentElement) ).filter(n=>n));\n }\n on(...args){ return this.addEventListener(...args) }\n append(val){ return this.forEach( n=> addNodeHtml(n,val)) }\n remove(...args)\n { if( !args.length )\n { this.forEach(el=>el.remove()); return new CssChainT() }\n return isFn(args[1]) ? this.removeEventListener(...args) : this.map(el=>el.matches(args[0])).filter(el=>el) ;\n }\n erase(){ return this.forEach(n=>clear(n)) }\n slots(...arr)\n { const ret = this.map( n=>n.shadowRoot || n ).$( arr.length\n ? csv( arr[0].split(',')\n , n=> ['\"\"',\"''\"].includes(n) || !n\n ? `slot:not([name])`\n : `slot[name=\"${n}\"]`\n )\n : 'slot');\n if( arr.length === 2 )\n { ret.html( arr[ 1 ] );\n return this\n }\n return ret;\n }\n template(n)\n {\n if( n === undefined )\n { const x = this.$('[slot]').forEach(n=>n.remove());\n n = this.splice(0, this.length );\n this.push(document.createElement('span'));\n this.append(x);\n }else if( isStr(n) )\n {\n n = this.$( n );\n n.remove();\n }\n const c = CssChain(n.content||n).clone(this);\n c.slots().forEach( s =>\n { const v = this.children.filter( n=>n.slot===s.name );\n v.length && setNodeHtml(s,v)\n });\n this.children.remove();\n this.forEach( (n,i)=> n.appendChild(c[i]))\n return this;\n }\n get innerText(){ return this.txt() }\n set innerText( val ){ return this.txt( val ) }\n txt( val, css=undefined )\n { const arr = css? this.$(css): this;\n if( val === undefined )\n return collectionText( arr );\n arr.forEach( isFn(val)\n ? (n,i)=>setNodeText(n,val(n,i,arr))\n : n=>setNodeText(n,val) );\n return this\n }\n get outerHTML(){ return this.map( e=>e.outerHTML ).join('') }\n set outerHTML( val )\n { return this.forEach( (n,i,arr)=>\n { const p = n.parentNode;\n html2NodeArr(isFn(val) ? val(n,i,arr): val )\n .forEach( e=> p.insertBefore( (arr[i]=e), n));\n n.remove();\n })\n }\n get innerHTML(){ return this.html() }\n set innerHTML( val ){ return this.html(val) }\n html( val, css=undefined )\n { const arr = css? this.$(css): this;\n if( val === undefined )\n return collectionHtml( arr );\n arr.forEach( isFn(val)\n ? (n,i)=>setNodeHtml(n,val(n,i,arr))\n : n=>setNodeHtml(n,val) );\n return this\n }\n assignedElements(opts){ return CssChain([].concat( ...this.map( el=>el.assignedElements ? el.assignedElements(opts):[] ) ) ) }\n assignedNodes(f){ return CssChain([].concat( ...this.map( el=>el.assignedNodes ? el.assignedNodes(f):[] ) ) ) }\n cloneNode(...args){ return this.map( el=>el.cloneNode && el.cloneNode(...args) ) }\n clone( /* number|array */count=1, cb=undefined )\n {\n let arr = count;\n if( isNum(count) )\n arr = Array.from({length: count}, (v, i) => i);\n\n if( isArr(arr) )\n { const ret = [];\n this.forEach( n => arr.forEach( (d,i) =>\n { const m = n.ownerDocument.importNode(n,true)\n , x = cb && cb( m, d, i, arr );\n isStr(x)\n ? ret.push( ...html2NodeArr(x) )\n : isArr(x)\n ? ret.push(...x)\n : ret.push( isNode(x) ? x : m )\n }));\n return CssChain( ret );\n }\n const doc = count;\n return this.map( el=> doc? doc.importNode( el,true ): el.cloneNode ? el.cloneNode(true):Object.assign({},el) )\n }\n get firstElementChild(){ return CssChain(this.map( n=>n.firstElementChild).filter(n=>n)) }\n get firstChild(){ return CssChain(this.map( n=>n.firstChild).filter(n=>n)) }\n get childNodes(){ return CssChain([].concat( ...map( this, el=>[...(el.childNodes || [] )] ) ) ) }\n get children(){ return CssChain([].concat( ...map( this, el=>[...(el.children || [] )] ) ) ) }\n}\n\nconst appliedTypes = new Set()\n, OBJ_prototype = Object.getPrototypeOf( {} );\n\n export function\napplyPrototype( nodeOrTag, ApiChain )\n{ const node = isStr(nodeOrTag) ? document.createElement(nodeOrTag) : nodeOrTag;\n if( appliedTypes.has(node.tagName) )\n return;\n appliedTypes.add( node.tagName );\n\n for( let k in node )\n if( !( k in ApiChain.prototype ) )\n setProp( node, k, ApiChain );\n\n for ( let proto; (proto= Object.getPrototypeOf(node)) !== OBJ_prototype && proto != null && !appliedTypes.has(proto) ; )\n { appliedTypes.add(proto);\n for( let k of Object.getOwnPropertyNames(proto) )\n if( !( k in ApiChain.prototype ) )\n setProp( node, k, ApiChain );\n }\n}\nObject.getOwnPropertyNames(window)\n .filter(key => key.startsWith('HTML') && key.endsWith('Element')&& key.length > 11 )\n .map( key=>key.substring(4,key.length-7).toLowerCase() )\n .forEach( tag=>applyPrototype( document.createElement(tag), CssChainT ) );\n\n export function\nCssChain( css, el=document, protoArr=[] )\n{\n const arr = 'string'===typeof css\n ? el.querySelectorAll( css )\n : isArr(css) ? css : [css? css.shadowRoot || css : document];\n\n if( isArr( protoArr ) )\n { if( !protoArr.length )\n protoArr = [...arr].slice(0,256);\n }else\n protoArr = [ protoArr ];\n\n protoArr.forEach( el => applyPrototype(el,CssChainT) );\n const ret = new CssChainT();\n ret.push(...arr);\n return ret;\n}\nexport default CssChain;\n"], + "mappings": "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", "names": [] } diff --git a/dist/CssChainElement.js b/dist/CssChainElement.js index da23a2a..35245db 100644 --- a/dist/CssChainElement.js +++ b/dist/CssChainElement.js @@ -2,5 +2,5 @@ import e from"./CssChain.js";export class CssChainElement extends HTMLElement{co
-`}$(...t){return e(this.shadowRoot).$(...t)}__increment(){const t=this.$().slot().text();this.$("b").innerHTML+=`${t}`,this.counter=this.$("input").value=this.$("span").length}} +`}$(...t){return e(this.shadowRoot).$(...t)}__increment(){const t=this.$().slots().txt();this.$("b").innerHTML+=`${t}`,this.counter=this.$("input").value=this.$("span").length}} //# sourceMappingURL=CssChainElement.js.map diff --git a/dist/CssChainElement.js.map b/dist/CssChainElement.js.map index 33b45a2..3cee21c 100644 --- a/dist/CssChainElement.js.map +++ b/dist/CssChainElement.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../src/CssChainElement.js"], - "sourcesContent": ["import $ from './CssChain.js';\n\n export class\nCssChainElement extends HTMLElement\n{\n constructor()\n {\n super();\n this.title = 'Hey there';\n this.counter = 0;\n\n const t = document.createElement('div');\n t.innerHTML = this.template;\n\n this.attachShadow({mode: 'open'}).appendChild(t);\n this.$('button').addEventListener('click', ()=>this.__increment() );\n }\n\n get template()\n { return `\n •\n
\n\n`\n }\n\n $( ...arr ){ return $( this.shadowRoot ).$(...arr); }\n\n __increment()\n { const slotContent = this.$().slot().text();\n this.$('b').innerHTML += `${ slotContent }`;\n this.counter = this.$('input').value = this.$('span').length;\n }\n}\n"], - "mappings": "AAAA,6BAEW,oCACa,YACxB,CACI,aACA,CACI,QACA,KAAK,MAAQ,YACb,KAAK,QAAU,EAEf,KAAM,GAAI,SAAS,cAAc,OACjC,EAAE,UAAY,KAAK,SAEnB,KAAK,aAAa,CAAC,KAAM,SAAS,YAAY,GAC9C,KAAK,EAAE,UAAU,iBAAiB,QAAS,IAAI,KAAK,kBAGpD,WACJ,CAAI,MAAO;AAAA;AAAA;AAAA;AAAA,EAOX,KAAM,EAAK,CAAE,MAAO,GAAG,KAAK,YAAa,EAAE,GAAG,GAE9C,aACA,CAAI,KAAM,GAAc,KAAK,IAAI,OAAO,OACpC,KAAK,EAAE,KAAK,WAAa,SAAU,WACnC,KAAK,QAAU,KAAK,EAAE,SAAS,MAAQ,KAAK,EAAE,QAAQ", + "sourcesContent": ["import $ from './CssChain.js';\n\n export class\nCssChainElement extends HTMLElement\n{\n constructor()\n {\n super();\n this.title = 'Hey there';\n this.counter = 0;\n\n const t = document.createElement('div');\n t.innerHTML = this.template;\n\n this.attachShadow({mode: 'open'}).appendChild(t);\n this.$('button').addEventListener('click', ()=>this.__increment() );\n }\n\n get template()\n { return `\n •\n
\n\n`\n }\n\n $( ...arr ){ return $( this.shadowRoot ).$(...arr); }\n\n __increment()\n { const slotContent = this.$().slots().txt();\n this.$('b').innerHTML += `${ slotContent }`;\n this.counter = this.$('input').value = this.$('span').length;\n }\n}\n"], + "mappings": "AAAA,6BAEW,oCACa,YACxB,CACI,aACA,CACI,QACA,KAAK,MAAQ,YACb,KAAK,QAAU,EAEf,KAAM,GAAI,SAAS,cAAc,OACjC,EAAE,UAAY,KAAK,SAEnB,KAAK,aAAa,CAAC,KAAM,SAAS,YAAY,GAC9C,KAAK,EAAE,UAAU,iBAAiB,QAAS,IAAI,KAAK,kBAGpD,WACJ,CAAI,MAAO;AAAA;AAAA;AAAA;AAAA,EAOX,KAAM,EAAK,CAAE,MAAO,GAAG,KAAK,YAAa,EAAE,GAAG,GAE9C,aACA,CAAI,KAAM,GAAc,KAAK,IAAI,QAAQ,MACrC,KAAK,EAAE,KAAK,WAAa,SAAU,WACnC,KAAK,QAAU,KAAK,EAAE,SAAS,MAAQ,KAAK,EAAE,QAAQ", "names": [] } diff --git a/dist/HTMLElementMixin.d.ts b/dist/HTMLElementMixin.d.ts new file mode 100644 index 0000000..e9d66ed --- /dev/null +++ b/dist/HTMLElementMixin.d.ts @@ -0,0 +1,3665 @@ +// generated by css-chain-test/types/ast-parse.js + +import type { CssChainT} from './CssChain'; +/** Mixin of HTMLElement inherited and parents from node_modules/typescript/lib/lib.dom.d.ts + all methods return CssChainT +*/ +export interface HTMLElementMixin { + + accessKey:string; + + + accessKeyLabel:string; + + + autocapitalize:string; + + + dir:string; + + + draggable:boolean; + + + hidden:boolean; + + + innerText:string; + + + lang:string; + + + offsetHeight:number; + + + offsetLeft:number; + + + offsetParent:Element|null; + + + offsetTop:number; + + + offsetWidth:number; + + + outerText:string; + + + spellcheck:boolean; + + + title:string; + + + translate:boolean; + + + attachInternals():CssChainT; + + + click():CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions):CssChainT; + + + attributes:NamedNodeMap; + +/** Allows for manipulation of element's class content attribute as a set of whitespace-separated tokens through a DOMTokenList object.
*/ + + classList:DOMTokenList; + +/** Returns the value of element's class content attribute. Can be set to change it.
*/ + + className:string; + + + clientHeight:number; + + + clientLeft:number; + + + clientTop:number; + + + clientWidth:number; + +/** Returns the value of element's id content attribute. Can be set to change it.
*/ + + id:string; + +/** Returns the local name.
*/ + + localName:string; + +/** Returns the namespace.
*/ + + namespaceURI:string|null; + + + onfullscreenchange:((this: Element, ev: Event) => any)|null; + + + onfullscreenerror:((this: Element, ev: Event) => any)|null; + + + outerHTML:string; + +/** Returns the node document. Returns null for documents.
*/ + + ownerDocument:Document|null; + + + part:DOMTokenList; + +/** Returns the namespace prefix.
*/ + + prefix:string|null; + + + scrollHeight:number; + + + scrollLeft:number; + + + scrollTop:number; + + + scrollWidth:number; + +/** Returns element's shadow root, if any, and if shadow root's mode is "open", and null otherwise.
*/ + + shadowRoot:ShadowRoot|null; + +/** Returns the value of element's slot content attribute. Can be set to change it.
*/ + + slot:string; + +/** Returns the HTML-uppercased qualified name.
*/ + + tagName:string; + +/** Creates a shadow root for element and returns it.
*/ + + attachShadow(init: ShadowRootInit):CssChainT; + +/** Returns the first (starting at element) inclusive ancestor that matches selectors, and null otherwise.
*/ + + closest(selector: K):CssChainT; + +/** Returns the first (starting at element) inclusive ancestor that matches selectors, and null otherwise.
*/ + + closest(selector: K):CssChainT; + +/** Returns the first (starting at element) inclusive ancestor that matches selectors, and null otherwise.
*/ + + closest(selectors: string):CssChainT; + +/** Returns element's first attribute whose qualified name is qualifiedName, and null if there is no such attribute otherwise.
*/ + + getAttribute(qualifiedName: string):CssChainT; + +/** Returns element's attribute whose namespace is namespace and local name is localName, and null if there is no such attribute otherwise.
*/ + + getAttributeNS(namespace: string | null, localName: string):CssChainT; + +/** Returns the qualified names of all element's attributes. Can contain duplicates.
*/ + + getAttributeNames():CssChainT; + + + getAttributeNode(qualifiedName: string):CssChainT; + + + getAttributeNodeNS(namespace: string | null, localName: string):CssChainT; + + + getBoundingClientRect():CssChainT; + + + getClientRects():CssChainT; + +/** Returns a HTMLCollection of the elements in the object on which the method was invoked (a document or an element) that have all the classes given by classNames. The classNames argument is interpreted as a space-separated list of classes.
*/ + + getElementsByClassName(classNames: string):CssChainT; + + + getElementsByTagName(qualifiedName: K):CssChainT; + + + getElementsByTagName(qualifiedName: K):CssChainT; + + + getElementsByTagName(qualifiedName: string):CssChainT; + + + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string):CssChainT; + + + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string):CssChainT; + + + getElementsByTagNameNS(namespace: string | null, localName: string):CssChainT; + +/** Returns true if element has an attribute whose qualified name is qualifiedName, and false otherwise.
*/ + + hasAttribute(qualifiedName: string):CssChainT; + +/** Returns true if element has an attribute whose namespace is namespace and local name is localName.
*/ + + hasAttributeNS(namespace: string | null, localName: string):CssChainT; + +/** Returns true if element has attributes, and false otherwise.
*/ + + hasAttributes():CssChainT; + + + hasPointerCapture(pointerId: number):CssChainT; + + + insertAdjacentElement(where: InsertPosition, element: Element):CssChainT; + + + insertAdjacentHTML(position: InsertPosition, text: string):CssChainT; + + + insertAdjacentText(where: InsertPosition, data: string):CssChainT; + +/** Returns true if matching selectors against element's root yields element, and false otherwise.
*/ + + matches(selectors: string):CssChainT; + + + releasePointerCapture(pointerId: number):CssChainT; + +/** Removes element's first attribute whose qualified name is qualifiedName.
*/ + + removeAttribute(qualifiedName: string):CssChainT; + +/** Removes element's attribute whose namespace is namespace and local name is localName.
*/ + + removeAttributeNS(namespace: string | null, localName: string):CssChainT; + + + removeAttributeNode(attr: Attr):CssChainT; + +/** Displays element fullscreen and resolves promise when done. + +When supplied, options's navigationUI member indicates whether showing navigation UI while in fullscreen is preferred or not. If set to "show", navigation simplicity is preferred over screen space, and if set to "hide", more screen space is preferred. User agents are always free to honor user preference over the application's. The default value "auto" indicates no application preference.
*/ + + requestFullscreen(options?: FullscreenOptions):CssChainT; + + + requestPointerLock():CssChainT; + + + scroll(options?: ScrollToOptions):CssChainT; + + + scroll(x: number, y: number):CssChainT; + + + scrollBy(options?: ScrollToOptions):CssChainT; + + + scrollBy(x: number, y: number):CssChainT; + + + scrollIntoView(arg?: boolean | ScrollIntoViewOptions):CssChainT; + + + scrollTo(options?: ScrollToOptions):CssChainT; + + + scrollTo(x: number, y: number):CssChainT; + +/** Sets the value of element's first attribute whose qualified name is qualifiedName to value.
*/ + + setAttribute(qualifiedName: string, value: string):CssChainT; + +/** Sets the value of element's attribute whose namespace is namespace and local name is localName to value.
*/ + + setAttributeNS(namespace: string | null, qualifiedName: string, value: string):CssChainT; + + + setAttributeNode(attr: Attr):CssChainT; + + + setAttributeNodeNS(attr: Attr):CssChainT; + + + setPointerCapture(pointerId: number):CssChainT; + +/** If force is not given, "toggles" qualifiedName, removing it if it is present and adding it if it is not present. If force is true, adds qualifiedName. If force is false, removes qualifiedName. + +Returns true if qualifiedName is now present, and false otherwise.
*/ + + toggleAttribute(qualifiedName: string, force?: boolean):CssChainT; + + + webkitMatchesSelector(selectors: string):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Returns node's node document's document base URL.
*/ + + baseURI:string; + +/** Returns true if node is connected and false otherwise.
*/ + + isConnected:boolean; + +/** Returns the last child.
*/ + + lastChild:ChildNode|null; + +/** Returns the next sibling.
*/ + + nextSibling:ChildNode|null; + +/** Returns a string appropriate for the type of node.
*/ + + nodeName:string; + +/** Returns the type of node.
*/ + + nodeType:number; + + + nodeValue:string|null; + +/** Returns the parent element.
*/ + + parentElement:HTMLElement|null; + +/** Returns the parent.
*/ + + parentNode:ParentNode|null; + +/** Returns the previous sibling.
*/ + + previousSibling:ChildNode|null; + + + textContent:string|null; + + + appendChild(node: T):CssChainT; + +/** Returns a copy of node. If deep is true, the copy also includes the node's descendants.
*/ + + cloneNode(deep?: boolean):CssChainT; + +/** Returns a bitmask indicating the position of other relative to node.
*/ + + compareDocumentPosition(other: Node):CssChainT; + +/** Returns true if other is an inclusive descendant of node, and false otherwise.
*/ + + contains(other: Node | null):CssChainT; + +/** Returns node's root.
*/ + + getRootNode(options?: GetRootNodeOptions):CssChainT; + +/** Returns whether node has children.
*/ + + hasChildNodes():CssChainT; + + + insertBefore(node: T, child: Node | null):CssChainT; + + + isDefaultNamespace(namespace: string | null):CssChainT; + +/** Returns whether node and otherNode have the same properties.
*/ + + isEqualNode(otherNode: Node | null):CssChainT; + + + isSameNode(otherNode: Node | null):CssChainT; + + + lookupNamespaceURI(prefix: string | null):CssChainT; + + + lookupPrefix(namespace: string | null):CssChainT; + +/** Removes empty exclusive Text nodes and concatenates the data of remaining contiguous exclusive Text nodes into the first of their nodes.
*/ + + normalize():CssChainT; + + + removeChild(child: T):CssChainT; + + + replaceChild(node: Node, child: T):CssChainT; + + + ATTRIBUTE_NODE:number; + +/** node is a CDATASection node.
*/ + + CDATA_SECTION_NODE:number; + +/** node is a Comment node.
*/ + + COMMENT_NODE:number; + +/** node is a DocumentFragment node.
*/ + + DOCUMENT_FRAGMENT_NODE:number; + +/** node is a document.
*/ + + DOCUMENT_NODE:number; + +/** Set when other is a descendant of node.
*/ + + DOCUMENT_POSITION_CONTAINED_BY:number; + +/** Set when other is an ancestor of node.
*/ + + DOCUMENT_POSITION_CONTAINS:number; + +/** Set when node and other are not in the same tree.
*/ + + DOCUMENT_POSITION_DISCONNECTED:number; + +/** Set when other is following node.
*/ + + DOCUMENT_POSITION_FOLLOWING:number; + + + DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC:number; + +/** Set when other is preceding node.
*/ + + DOCUMENT_POSITION_PRECEDING:number; + +/** node is a doctype.
*/ + + DOCUMENT_TYPE_NODE:number; + +/** node is an element.
*/ + + ELEMENT_NODE:number; + + + ENTITY_NODE:number; + + + ENTITY_REFERENCE_NODE:number; + + + NOTATION_NODE:number; + +/** node is a ProcessingInstruction node.
*/ + + PROCESSING_INSTRUCTION_NODE:number; + +/** node is a Text node.
*/ + + TEXT_NODE:number; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: AddEventListenerOptions | boolean):CssChainT; + +/** Dispatches a synthetic event event to target and returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise.
*/ + + dispatchEvent(event: Event):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: EventListenerOptions | boolean):CssChainT; + + + ariaAtomic:string; + + + ariaAutoComplete:string; + + + ariaBusy:string; + + + ariaChecked:string; + + + ariaColCount:string; + + + ariaColIndex:string; + + + ariaColSpan:string; + + + ariaCurrent:string; + + + ariaDisabled:string; + + + ariaExpanded:string; + + + ariaHasPopup:string; + + + ariaHidden:string; + + + ariaKeyShortcuts:string; + + + ariaLabel:string; + + + ariaLevel:string; + + + ariaLive:string; + + + ariaModal:string; + + + ariaMultiLine:string; + + + ariaMultiSelectable:string; + + + ariaOrientation:string; + + + ariaPlaceholder:string; + + + ariaPosInSet:string; + + + ariaPressed:string; + + + ariaReadOnly:string; + + + ariaRequired:string; + + + ariaRoleDescription:string; + + + ariaRowCount:string; + + + ariaRowIndex:string; + + + ariaRowSpan:string; + + + ariaSelected:string; + + + ariaSetSize:string; + + + ariaSort:string; + + + ariaValueMax:string; + + + ariaValueMin:string; + + + ariaValueNow:string; + + + ariaValueText:string; + + + animate(keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions):CssChainT; + + + getAnimations(options?: GetAnimationsOptions):CssChainT; + +/** Inserts nodes just after node, while replacing strings in nodes with equivalent Text nodes. + +Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
*/ + + after(...nodes: (Node | string)[]):CssChainT; + +/** Inserts nodes just before node, while replacing strings in nodes with equivalent Text nodes. + +Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
*/ + + before(...nodes: (Node | string)[]):CssChainT; + +/** Replaces node with nodes, while replacing strings in nodes with equivalent Text nodes. + +Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
*/ + + replaceWith(...nodes: (Node | string)[]):CssChainT; + + + innerHTML:string; + +/** Returns the first following sibling that is an element, and null otherwise.
*/ + + nextElementSibling:Element|null; + +/** Returns the first preceding sibling that is an element, and null otherwise.
*/ + + previousElementSibling:Element|null; + + + childElementCount:number; + +/** Returns the last child that is an element, and null otherwise.
*/ + + lastElementChild:Element|null; + +/** Inserts nodes after the last child of node, while replacing strings in nodes with equivalent Text nodes. + +Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
*/ + + append(...nodes: (Node | string)[]):CssChainT; + +/** Inserts nodes before the first child of node, while replacing strings in nodes with equivalent Text nodes. + +Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
*/ + + prepend(...nodes: (Node | string)[]):CssChainT; + +/** Returns the first element that is a descendant of node that matches selectors.
*/ + + querySelector(selectors: K):CssChainT; + +/** Returns the first element that is a descendant of node that matches selectors.
*/ + + querySelector(selectors: K):CssChainT; + +/** Returns the first element that is a descendant of node that matches selectors.
*/ + + querySelector(selectors: string):CssChainT; + +/** Returns all element descendants of node that match selectors.
*/ + + querySelectorAll(selectors: K):CssChainT; + +/** Returns all element descendants of node that match selectors.
*/ + + querySelectorAll(selectors: K):CssChainT; + +/** Returns all element descendants of node that match selectors.
*/ + + querySelectorAll(selectors: string):CssChainT; + +/** Replace all children of node with nodes, while replacing strings in nodes with equivalent Text nodes. + +Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
*/ + + replaceChildren(...nodes: (Node | string)[]):CssChainT; + + + assignedSlot:HTMLSlotElement|null; + + + oncopy:((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any)|null; + + + oncut:((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any)|null; + + + onpaste:((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any)|null; + + + addEventListener(type: K, listener: (this: DocumentAndElementEventHandlers, ev: DocumentAndElementEventHandlersEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + + + removeEventListener(type: K, listener: (this: DocumentAndElementEventHandlers, ev: DocumentAndElementEventHandlersEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + + + style:CSSStyleDeclaration; + + + contentEditable:string; + + + enterKeyHint:string; + + + inputMode:string; + + + isContentEditable:boolean; + +/** Fires when the user aborts the download.
*/ + + onabort:((this: GlobalEventHandlers, ev: UIEvent) => any)|null; + + + onanimationcancel:((this: GlobalEventHandlers, ev: AnimationEvent) => any)|null; + + + onanimationend:((this: GlobalEventHandlers, ev: AnimationEvent) => any)|null; + + + onanimationiteration:((this: GlobalEventHandlers, ev: AnimationEvent) => any)|null; + + + onanimationstart:((this: GlobalEventHandlers, ev: AnimationEvent) => any)|null; + + + onauxclick:((this: GlobalEventHandlers, ev: MouseEvent) => any)|null; + +/** Fires when the object loses the input focus.
*/ + + onblur:((this: GlobalEventHandlers, ev: FocusEvent) => any)|null; + +/** Occurs when playback is possible, but would require further buffering.
*/ + + oncanplay:((this: GlobalEventHandlers, ev: Event) => any)|null; + + + oncanplaythrough:((this: GlobalEventHandlers, ev: Event) => any)|null; + +/** Fires when the contents of the object or selection have changed.
*/ + + onchange:((this: GlobalEventHandlers, ev: Event) => any)|null; + +/** Fires when the user clicks the left mouse button on the object
*/ + + onclick:((this: GlobalEventHandlers, ev: MouseEvent) => any)|null; + + + onclose:((this: GlobalEventHandlers, ev: Event) => any)|null; + +/** Fires when the user clicks the right mouse button in the client area, opening the context menu.
*/ + + oncontextmenu:((this: GlobalEventHandlers, ev: MouseEvent) => any)|null; + + + oncuechange:((this: GlobalEventHandlers, ev: Event) => any)|null; + +/** Fires when the user double-clicks the object.
*/ + + ondblclick:((this: GlobalEventHandlers, ev: MouseEvent) => any)|null; + +/** Fires on the source object continuously during a drag operation.
*/ + + ondrag:((this: GlobalEventHandlers, ev: DragEvent) => any)|null; + +/** Fires on the source object when the user releases the mouse at the close of a drag operation.
*/ + + ondragend:((this: GlobalEventHandlers, ev: DragEvent) => any)|null; + +/** Fires on the target element when the user drags the object to a valid drop target.
*/ + + ondragenter:((this: GlobalEventHandlers, ev: DragEvent) => any)|null; + +/** Fires on the target object when the user moves the mouse out of a valid drop target during a drag operation.
*/ + + ondragleave:((this: GlobalEventHandlers, ev: DragEvent) => any)|null; + +/** Fires on the target element continuously while the user drags the object over a valid drop target.
*/ + + ondragover:((this: GlobalEventHandlers, ev: DragEvent) => any)|null; + +/** Fires on the source object when the user starts to drag a text selection or selected object.
*/ + + ondragstart:((this: GlobalEventHandlers, ev: DragEvent) => any)|null; + + + ondrop:((this: GlobalEventHandlers, ev: DragEvent) => any)|null; + +/** Occurs when the duration attribute is updated.
*/ + + ondurationchange:((this: GlobalEventHandlers, ev: Event) => any)|null; + +/** Occurs when the media element is reset to its initial state.
*/ + + onemptied:((this: GlobalEventHandlers, ev: Event) => any)|null; + +/** Occurs when the end of playback is reached.
*/ + + onended:((this: GlobalEventHandlers, ev: Event) => any)|null; + +/** Fires when an error occurs during object loading.
*/ + + onerror:OnErrorEventHandler; + +/** Fires when the object receives focus.
*/ + + onfocus:((this: GlobalEventHandlers, ev: FocusEvent) => any)|null; + + + onformdata:((this: GlobalEventHandlers, ev: FormDataEvent) => any)|null; + + + ongotpointercapture:((this: GlobalEventHandlers, ev: PointerEvent) => any)|null; + + + oninput:((this: GlobalEventHandlers, ev: Event) => any)|null; + + + oninvalid:((this: GlobalEventHandlers, ev: Event) => any)|null; + +/** Fires when the user presses a key.
*/ + + onkeydown:((this: GlobalEventHandlers, ev: KeyboardEvent) => any)|null; + +/** Fires when the user presses an alphanumeric key.
*/ + + onkeypress:((this: GlobalEventHandlers, ev: KeyboardEvent) => any)|null; + +/** Fires when the user releases a key.
*/ + + onkeyup:((this: GlobalEventHandlers, ev: KeyboardEvent) => any)|null; + +/** Fires immediately after the browser loads the object.
*/ + + onload:((this: GlobalEventHandlers, ev: Event) => any)|null; + +/** Occurs when media data is loaded at the current playback position.
*/ + + onloadeddata:((this: GlobalEventHandlers, ev: Event) => any)|null; + +/** Occurs when the duration and dimensions of the media have been determined.
*/ + + onloadedmetadata:((this: GlobalEventHandlers, ev: Event) => any)|null; + +/** Occurs when Internet Explorer begins looking for media data.
*/ + + onloadstart:((this: GlobalEventHandlers, ev: Event) => any)|null; + + + onlostpointercapture:((this: GlobalEventHandlers, ev: PointerEvent) => any)|null; + +/** Fires when the user clicks the object with either mouse button.
*/ + + onmousedown:((this: GlobalEventHandlers, ev: MouseEvent) => any)|null; + + + onmouseenter:((this: GlobalEventHandlers, ev: MouseEvent) => any)|null; + + + onmouseleave:((this: GlobalEventHandlers, ev: MouseEvent) => any)|null; + +/** Fires when the user moves the mouse over the object.
*/ + + onmousemove:((this: GlobalEventHandlers, ev: MouseEvent) => any)|null; + +/** Fires when the user moves the mouse pointer outside the boundaries of the object.
*/ + + onmouseout:((this: GlobalEventHandlers, ev: MouseEvent) => any)|null; + +/** Fires when the user moves the mouse pointer into the object.
*/ + + onmouseover:((this: GlobalEventHandlers, ev: MouseEvent) => any)|null; + +/** Fires when the user releases a mouse button while the mouse is over the object.
*/ + + onmouseup:((this: GlobalEventHandlers, ev: MouseEvent) => any)|null; + +/** Occurs when playback is paused.
*/ + + onpause:((this: GlobalEventHandlers, ev: Event) => any)|null; + +/** Occurs when the play method is requested.
*/ + + onplay:((this: GlobalEventHandlers, ev: Event) => any)|null; + +/** Occurs when the audio or video has started playing.
*/ + + onplaying:((this: GlobalEventHandlers, ev: Event) => any)|null; + + + onpointercancel:((this: GlobalEventHandlers, ev: PointerEvent) => any)|null; + + + onpointerdown:((this: GlobalEventHandlers, ev: PointerEvent) => any)|null; + + + onpointerenter:((this: GlobalEventHandlers, ev: PointerEvent) => any)|null; + + + onpointerleave:((this: GlobalEventHandlers, ev: PointerEvent) => any)|null; + + + onpointermove:((this: GlobalEventHandlers, ev: PointerEvent) => any)|null; + + + onpointerout:((this: GlobalEventHandlers, ev: PointerEvent) => any)|null; + + + onpointerover:((this: GlobalEventHandlers, ev: PointerEvent) => any)|null; + + + onpointerup:((this: GlobalEventHandlers, ev: PointerEvent) => any)|null; + +/** Occurs to indicate progress while downloading media data.
*/ + + onprogress:((this: GlobalEventHandlers, ev: ProgressEvent) => any)|null; + +/** Occurs when the playback rate is increased or decreased.
*/ + + onratechange:((this: GlobalEventHandlers, ev: Event) => any)|null; + +/** Fires when the user resets a form.
*/ + + onreset:((this: GlobalEventHandlers, ev: Event) => any)|null; + + + onresize:((this: GlobalEventHandlers, ev: UIEvent) => any)|null; + +/** Fires when the user repositions the scroll box in the scroll bar on the object.
*/ + + onscroll:((this: GlobalEventHandlers, ev: Event) => any)|null; + +/** Occurs when the seek operation ends.
*/ + + onseeked:((this: GlobalEventHandlers, ev: Event) => any)|null; + +/** Occurs when the current playback position is moved.
*/ + + onseeking:((this: GlobalEventHandlers, ev: Event) => any)|null; + +/** Fires when the current selection changes.
*/ + + onselect:((this: GlobalEventHandlers, ev: Event) => any)|null; + + + onselectionchange:((this: GlobalEventHandlers, ev: Event) => any)|null; + + + onselectstart:((this: GlobalEventHandlers, ev: Event) => any)|null; + +/** Occurs when the download has stopped.
*/ + + onstalled:((this: GlobalEventHandlers, ev: Event) => any)|null; + + + onsubmit:((this: GlobalEventHandlers, ev: SubmitEvent) => any)|null; + +/** Occurs if the load operation has been intentionally halted.
*/ + + onsuspend:((this: GlobalEventHandlers, ev: Event) => any)|null; + +/** Occurs to indicate the current playback position.
*/ + + ontimeupdate:((this: GlobalEventHandlers, ev: Event) => any)|null; + + + ontoggle:((this: GlobalEventHandlers, ev: Event) => any)|null; + + + ontouchcancel:((this: GlobalEventHandlers, ev: TouchEvent) => any)|null|undefined; + + + ontouchend:((this: GlobalEventHandlers, ev: TouchEvent) => any)|null|undefined; + + + ontouchmove:((this: GlobalEventHandlers, ev: TouchEvent) => any)|null|undefined; + + + ontouchstart:((this: GlobalEventHandlers, ev: TouchEvent) => any)|null|undefined; + + + ontransitioncancel:((this: GlobalEventHandlers, ev: TransitionEvent) => any)|null; + + + ontransitionend:((this: GlobalEventHandlers, ev: TransitionEvent) => any)|null; + + + ontransitionrun:((this: GlobalEventHandlers, ev: TransitionEvent) => any)|null; + + + ontransitionstart:((this: GlobalEventHandlers, ev: TransitionEvent) => any)|null; + +/** Occurs when the volume is changed, or playback is muted or unmuted.
*/ + + onvolumechange:((this: GlobalEventHandlers, ev: Event) => any)|null; + +/** Occurs when playback stops because the next frame of a video resource is not available.
*/ + + onwaiting:((this: GlobalEventHandlers, ev: Event) => any)|null; + + + onwebkitanimationend:((this: GlobalEventHandlers, ev: Event) => any)|null; + + + onwebkitanimationiteration:((this: GlobalEventHandlers, ev: Event) => any)|null; + + + onwebkitanimationstart:((this: GlobalEventHandlers, ev: Event) => any)|null; + + + onwebkittransitionend:((this: GlobalEventHandlers, ev: Event) => any)|null; + + + onwheel:((this: GlobalEventHandlers, ev: WheelEvent) => any)|null; + + + addEventListener(type: K, listener: (this: GlobalEventHandlers, ev: GlobalEventHandlersEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + + + removeEventListener(type: K, listener: (this: GlobalEventHandlers, ev: GlobalEventHandlersEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + + + autofocus:boolean; + + + dataset:DOMStringMap; + + + nonce:string; + + + tabIndex:number; + + + blur():CssChainT; + + + focus(options?: FocusOptions):CssChainT; + +/** Sets or retrieves the character set used to encode the object.
*/ + + charset:string; + +/** Sets or retrieves the coordinates of the object.
*/ + + coords:string; + + + download:string; + +/** Sets or retrieves the language code of the object.
*/ + + hreflang:string; + +/** Sets or retrieves the shape of the object.
+ + Sets or retrieves the name of the object.
+ + Sets or retrieves the frame name.
+ + Sets or retrieves the value specified in the content attribute of the meta object.
+ + Sets or retrieves the name of an input parameter for an element.
*/ + + name:string; + + + ping:string; + + + referrerPolicy:string|ReferrerPolicy; + +/** Sets or retrieves the relationship between the object and the destination of the link.
*/ + + rel:string; + + + relList:DOMTokenList; + +/** Sets or retrieves the relationship between the object and the destination of the link.
*/ + + rev:string; + +/** Sets or retrieves the shape of the object.
*/ + + shape:string; + +/** Sets or retrieves the window or frame at which to target content.
*/ + + target:string; + +/** Retrieves or sets the text of the object as a string.
+ + Sets or retrieves the text string specified by the option tag.
*/ + + text:string; + +/** Gets the classification and default behavior of the button.
+ + Returns the string "fieldset".
+ + Returns the content type of the object.
+ + Sets or retrieves the MIME type of the object.
+ + Returns the string "output".
+ + Sets or retrieves the content type of the resource designated by the value attribute.
+ + Sets or retrieves the MIME type for the associated scripting engine.
+ + Retrieves the type of select control based on the value of the MULTIPLE attribute.
+ + Gets or sets the MIME type of a media resource.
+ + Retrieves the CSS language in which the style sheet is written.
+ + Retrieves the type of control.
*/ + + type:string; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLAnchorElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLAnchorElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Sets or retrieves a text alternative to the graphic.
*/ + + alt:string; + +/** Sets or gets whether clicks in this region cause action.
*/ + + noHref:boolean; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Sets or retrieves the side on which floating objects are not to be positioned when any IHTMLBlockElement is inserted into the document.
*/ + + clear:string; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLBRElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLBRElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Gets or sets the baseline URL on which relative links are based.
+ + Sets or retrieves a destination URL or an anchor point.
*/ + + href:string; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLBaseElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLBaseElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + + + aLink:string; + + + background:string; + + + bgColor:string; + + + link:string; + + + onorientationchange:((this: HTMLBodyElement, ev: Event) => any)|null; + + + vLink:string; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLBodyElement, ev: HTMLBodyElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLBodyElement, ev: HTMLBodyElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + + + disabled:boolean; + +/** Retrieves a reference to the form that the object is embedded in.
*/ + + form:HTMLFormElement|null; + +/** Overrides the action attribute (where the data on a form is sent) on the parent form element.
*/ + + formAction:string; + +/** Used to override the encoding (formEnctype attribute) specified on the form element.
*/ + + formEnctype:string; + +/** Overrides the submit method attribute previously specified on a form element.
*/ + + formMethod:string; + +/** Overrides any validation or required attributes on a form or form elements to allow it to be submitted without validation. This can be used to create a "save draft"-type submit option.
*/ + + formNoValidate:boolean; + +/** Overrides the target attribute on a form element.
*/ + + formTarget:string; + + + labels:NodeListOf|null; + +/** Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting.
*/ + + validationMessage:string; + +/** Returns a ValidityState object that represents the validity states of an element.
*/ + + validity:ValidityState; + +/** Sets or retrieves the default or selected value of the control.
+ + Returns the value of the data at the cursor's current position.
+ + Sets or retrieves the value of a list item.
+ + Sets or retrieves the value which is returned to the server when the form control is submitted.
+ + Returns the element's current value. + +Can be set, to change the value.
+ + Sets or retrieves the value of an input parameter for an element.
+ + Sets or gets the current value of a progress element. The value must be a non-negative number between 0 and the max value.
+ + Retrieves or sets the text in the entry field of the textArea element.
*/ + + value:string|number; + +/** Returns whether an element will successfully validate based on forms validation rules and constraints.
*/ + + willValidate:boolean; + +/** Returns whether a form will validate when it is submitted, without having to submit it.
*/ + + checkValidity():CssChainT; + + + reportValidity():CssChainT; + +/** Sets a custom error message that is displayed when a form is submitted.
*/ + + setCustomValidity(error: string):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLButtonElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLButtonElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Gets or sets the height of a canvas element on a document.
+ + Sets or retrieves the height of the object.
+ + Gets or sets the height of the video element.
*/ + + height:number|string; + +/** Gets or sets the width of a canvas element on a document.
+ + Sets or retrieves the width of the object.
+ + Gets or sets the width of the video element.
+ + Sets or gets a value that you can use to implement your own width functionality for the object.
*/ + + width:number|string; + + + captureStream(frameRequestRate?: number):CssChainT; + +/** Returns an object that provides methods and properties for drawing and manipulating images and graphics on a canvas element in a document. A context object includes information about colors, line widths, fonts, and other graphic parameters that can be drawn on a canvas.
*/ + + getContext(contextId: "2d", options?: CanvasRenderingContext2DSettings):CssChainT; + +/** Returns an object that provides methods and properties for drawing and manipulating images and graphics on a canvas element in a document. A context object includes information about colors, line widths, fonts, and other graphic parameters that can be drawn on a canvas.
*/ + + getContext(contextId: "bitmaprenderer", options?: ImageBitmapRenderingContextSettings):CssChainT; + +/** Returns an object that provides methods and properties for drawing and manipulating images and graphics on a canvas element in a document. A context object includes information about colors, line widths, fonts, and other graphic parameters that can be drawn on a canvas.
*/ + + getContext(contextId: "webgl", options?: WebGLContextAttributes):CssChainT; + +/** Returns an object that provides methods and properties for drawing and manipulating images and graphics on a canvas element in a document. A context object includes information about colors, line widths, fonts, and other graphic parameters that can be drawn on a canvas.
*/ + + getContext(contextId: "webgl2", options?: WebGLContextAttributes):CssChainT; + +/** Returns an object that provides methods and properties for drawing and manipulating images and graphics on a canvas element in a document. A context object includes information about colors, line widths, fonts, and other graphic parameters that can be drawn on a canvas.
*/ + + getContext(contextId: string, options?: any):CssChainT; + + + toBlob(callback: BlobCallback, type?: string, quality?: any):CssChainT; + +/** Returns the content of the current canvas as an image that you can use as a source for another canvas or an HTML element.
*/ + + toDataURL(type?: string, quality?: any):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLCanvasElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLCanvasElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + + + compact:boolean; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLDListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLDListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLDataElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLDataElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Returns an HTMLCollection of the option elements of the datalist element.
+ + Returns an HTMLOptionsCollection of the list of options.
*/ + + options:HTMLCollectionOf|HTMLOptionsCollection; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLDataListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLDataListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + + + open:boolean; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLDetailsElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLDetailsElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLDialogElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLDialogElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLDirectoryElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLDirectoryElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Sets or retrieves how the object is aligned with adjacent text.
+ + Sets or retrieves a value that indicates the table alignment.
+ + Sets or retrieves the alignment of the caption or legend.
+ + Sets or retrieves the alignment of the object relative to the display or table.
*/ + + align:string; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLDivElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLDivElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Sets or retrieves a URL to be loaded by the object.
+ + The address or URL of the a media resource that is to be considered.
+ + Retrieves the URL to an external file that contains the source code or data.
*/ + + src:string; + + + getSVGDocument():CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLEmbedElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLEmbedElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Returns an HTMLCollection of the form controls in the element.
+ + Retrieves a collection, in source order, of all controls in a given form.
*/ + + elements:HTMLCollection|HTMLFormControlsCollection; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLFieldSetElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLFieldSetElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + + + color:string; + +/** Sets or retrieves the current typeface family.
*/ + + face:string; + +/** Sets or retrieves the number of rows in the list box.
*/ + + size:string|number; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLFontElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLFontElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Sets or retrieves a list of character encodings for input data that must be accepted by the server processing the form.
*/ + + acceptCharset:string; + +/** Sets or retrieves the URL to which the form content is sent for processing.
*/ + + action:string; + +/** Specifies whether autocomplete is applied to an editable text field.
*/ + + autocomplete:string; + +/** Sets or retrieves the MIME encoding for the form.
*/ + + encoding:string; + +/** Sets or retrieves the encoding type for the form.
*/ + + enctype:string; + +/** Sets or retrieves the number of objects in a collection.
*/ + + length:number; + +/** Sets or retrieves how to send the form data to the server.
*/ + + method:string; + +/** Designates a form that is not validated when submitted.
*/ + + noValidate:boolean; + + + requestSubmit(submitter?: HTMLElement | null):CssChainT; + +/** Fires when the user resets a form.
*/ + + reset():CssChainT; + +/** Fires when a FORM is about to be submitted.
*/ + + submit():CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLFormElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLFormElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Retrieves the document object of the page or frame.
*/ + + contentDocument:Document|null; + +/** Retrieves the object of the specified.
*/ + + contentWindow:WindowProxy|null; + +/** Sets or retrieves whether to display a border for the frame.
*/ + + frameBorder:string; + +/** Sets or retrieves a URI to a long description of the object.
+ + Sets or retrieves a Uniform Resource Identifier (URI) to a long description of the object.
*/ + + longDesc:string; + +/** Sets or retrieves the top and bottom margin heights before displaying the text in a frame.
*/ + + marginHeight:string; + +/** Sets or retrieves the left and right margin widths before displaying the text in a frame.
*/ + + marginWidth:string; + +/** Sets or retrieves whether the user can resize the frame.
*/ + + noResize:boolean; + +/** Sets or retrieves whether the frame can be scrolled.
*/ + + scrolling:string; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLFrameElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLFrameElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Sets or retrieves the frame widths of the object.
+ + Sets or retrieves the width of the object.
*/ + + cols:string|number; + +/** Sets or retrieves the frame heights of the object.
+ + Sets or retrieves the number of horizontal rows contained in the object.
*/ + + rows:string|HTMLCollectionOf|number; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLFrameSetElement, ev: HTMLFrameSetElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLFrameSetElement, ev: HTMLFrameSetElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Sets or retrieves whether the horizontal rule is drawn with 3-D shading.
*/ + + noShade:boolean; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLHRElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLHRElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLHeadElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLHeadElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLHeadingElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLHeadingElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Sets or retrieves the DTD version that governs the current document.
*/ + + version:string; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLHtmlElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLHtmlElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + + + allow:string; + + + allowFullscreen:boolean; + + + sandbox:DOMTokenList; + +/** Sets or retrives the content of the page that is to contain.
*/ + + srcdoc:string; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLIFrameElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLIFrameElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Specifies the properties of a border drawn around an object.
+ + Sets or retrieves the width of the border to draw around the object.
*/ + + border:string; + +/** Retrieves whether the object is fully loaded.
*/ + + complete:boolean; + + + crossOrigin:string|null; + +/** Gets the address or URL of the current media resource that is selected by IHTMLMediaElement.
*/ + + currentSrc:string; + + + decoding:"async"|"sync"|"auto"; + +/** Sets or retrieves the width of the border to draw around the object.
*/ + + hspace:number; + +/** Sets or retrieves whether the image is a server-side image map.
*/ + + isMap:boolean; + + + loading:string; + + + lowsrc:string; + +/** The original height of the image resource before sizing.
*/ + + naturalHeight:number; + +/** The original width of the image resource before sizing.
*/ + + naturalWidth:number; + + + sizes:string|DOMTokenList; + + + srcset:string; + +/** Sets or retrieves the URL, often with a bookmark extension (#name), to use as a client-side image map.
*/ + + useMap:string; + +/** Sets or retrieves the vertical margin for the object.
*/ + + vspace:number; + + + x:number; + + + y:number; + + + decode():CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLImageElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLImageElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Sets or retrieves a comma-separated list of content types.
*/ + + accept:string; + + + capture:string; + +/** Sets or retrieves the state of the check box or radio button.
*/ + + checked:boolean; + +/** Sets or retrieves the state of the check box or radio button.
*/ + + defaultChecked:boolean; + +/** Sets or retrieves the initial contents of the object.
*/ + + defaultValue:string; + + + dirName:string; + +/** Returns a FileList object on a file type input object.
*/ + + files:FileList|null; + +/** When set, overrides the rendering of checkbox controls so that the current value is not visible.
*/ + + indeterminate:boolean; + +/** Specifies the ID of a pre-defined datalist of options for an input element.
*/ + + list:HTMLElement|null; + +/** Defines the maximum acceptable value for an input element with type="number".When used with the min and step attributes, lets you control the range and increment (such as only even numbers) that the user can enter into an input field.
+ + Defines the maximum, or "done" value for a progress element.
*/ + + max:string|number; + +/** Sets or retrieves the maximum number of characters that the user can enter in a text control.
*/ + + maxLength:number; + +/** Defines the minimum acceptable value for an input element with type="number". When used with the max and step attributes, lets you control the range and increment (such as even numbers only) that the user can enter into an input field.
*/ + + min:string|number; + + + minLength:number; + +/** Sets or retrieves the Boolean value indicating whether multiple items can be selected from a list.
*/ + + multiple:boolean; + +/** Gets or sets a string containing a regular expression that the user's input must match.
*/ + + pattern:string; + +/** Gets or sets a text string that is displayed in an input field as a hint or prompt to users as the format or type of information they need to enter.The text appears in an input field until the user puts focus on the field.
*/ + + placeholder:string; + +/** Sets or retrieves the value indicated whether the content of the object is read-only.
*/ + + readOnly:boolean; + +/** When present, marks an element that can't be submitted without a value.
*/ + + required:boolean; + + + selectionDirection:"forward"|"backward"|"none"|null; + +/** Gets or sets the end position or offset of a text selection.
*/ + + selectionEnd:number|null; + +/** Gets or sets the starting position or offset of a text selection.
*/ + + selectionStart:number|null; + +/** Defines an increment or jump between values that you want to allow the user to enter. When used with the max and min attributes, lets you control the range and increment (for example, allow only even numbers) that the user can enter into an input field.
*/ + + step:string; + +/** Returns a Date object representing the form control's value, if applicable; otherwise, returns null. Can be set, to change the value. Throws an "InvalidStateError" DOMException if the control isn't date- or time-based.
*/ + + valueAsDate:Date|null; + +/** Returns the input field value as a number.
*/ + + valueAsNumber:number; + + + webkitEntries:ReadonlyArray; + + + webkitdirectory:boolean; + +/** Makes the selection equal to the current object.
+ + Highlights the input area of a form element.
*/ + + select():CssChainT; + + + setRangeText(replacement: string):CssChainT; + + + setRangeText(replacement: string, start: number, end: number, selectionMode?: SelectionMode):CssChainT; + +/** Sets the start and end positions of a selection in a text field.
*/ + + setSelectionRange(start: number | null, end: number | null, direction?: "forward" | "backward" | "none"):CssChainT; + +/** Decrements a range input control's value by the value given by the Step attribute. If the optional parameter is used, it will decrement the input control's step value multiplied by the parameter's value.
*/ + + stepDown(n?: number):CssChainT; + +/** Increments a range input control's value by the value given by the Step attribute. If the optional parameter is used, will increment the input control's value by that value.
*/ + + stepUp(n?: number):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLInputElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLInputElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLLIElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLLIElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Returns the form control that is associated with this element.
*/ + + control:HTMLElement|null; + +/** Sets or retrieves the object to which the given label object is assigned.
+ + Sets or retrieves the object that is bound to the event script.
*/ + + htmlFor:string|DOMTokenList; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLLabelElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLLabelElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLLegendElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLLegendElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + + + as:string; + + + imageSizes:string; + + + imageSrcset:string; + + + integrity:string; + +/** Sets or retrieves the media type.
+ + Gets or sets the intended media type of the media source.
*/ + + media:string; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLLinkElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLLinkElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Retrieves a collection of the area objects defined for the given map object.
*/ + + areas:HTMLCollection; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLMapElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLMapElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + + + behavior:string; + + + direction:string; + +/** Gets or sets a flag to specify whether playback should restart after it completes.
*/ + + loop:number|boolean; + + + scrollAmount:number; + + + scrollDelay:number; + + + trueSpeed:boolean; + + + start():CssChainT; + + + stop():CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLMarqueeElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLMarqueeElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Gets or sets a value that indicates whether to start playing the media automatically.
*/ + + autoplay:boolean; + +/** Gets a collection of buffered time ranges.
*/ + + buffered:TimeRanges; + +/** Gets or sets a flag that indicates whether the client provides a set of controls for the media (in case the developer does not include controls for the player).
*/ + + controls:boolean; + +/** Gets or sets the current playback position, in seconds.
*/ + + currentTime:number; + + + defaultMuted:boolean; + +/** Gets or sets the default playback rate when the user is not using fast forward or reverse for a video or audio resource.
*/ + + defaultPlaybackRate:number; + + + disableRemotePlayback:boolean; + +/** Returns the duration in seconds of the current media resource. A NaN value is returned if duration is not available, or Infinity if the media resource is streaming.
*/ + + duration:number; + +/** Gets information about whether the playback has ended or not.
*/ + + ended:boolean; + +/** Returns an object representing the current error state of the audio or video element.
*/ + + error:MediaError|null; + +/** Available only in secure contexts.
*/ + + mediaKeys:MediaKeys|null; + +/** Gets or sets a flag that indicates whether the audio (either audio or the audio track on video media) is muted.
*/ + + muted:boolean; + +/** Gets the current network activity for the element.
*/ + + networkState:number; + + + onencrypted:((this: HTMLMediaElement, ev: MediaEncryptedEvent) => any)|null; + + + onwaitingforkey:((this: HTMLMediaElement, ev: Event) => any)|null; + +/** Gets a flag that specifies whether playback is paused.
*/ + + paused:boolean; + +/** Gets or sets the current rate of speed for the media resource to play. This speed is expressed as a multiple of the normal speed of the media resource.
*/ + + playbackRate:number; + +/** Gets TimeRanges for the current media resource that has been played.
*/ + + played:TimeRanges; + +/** Gets or sets a value indicating what data should be preloaded, if any.
*/ + + preload:"none"|"metadata"|"auto"|""; + + + readyState:number; + + + remote:RemotePlayback; + +/** Returns a TimeRanges object that represents the ranges of the current media resource that can be seeked.
*/ + + seekable:TimeRanges; + +/** Gets a flag that indicates whether the client is currently moving to a new playback position in the media resource.
*/ + + seeking:boolean; + + + srcObject:MediaProvider|null; + + + textTracks:TextTrackList; + +/** Gets or sets the volume level for audio portions of the media element.
*/ + + volume:number; + + + addTextTrack(kind: TextTrackKind, label?: string, language?: string):CssChainT; + +/** Returns a string that specifies whether the client can play a given media resource type.
*/ + + canPlayType(type: string):CssChainT; + + + fastSeek(time: number):CssChainT; + +/** Resets the audio or video object and loads a new media resource.
*/ + + load():CssChainT; + +/** Pauses the current playback and sets paused to TRUE. This can be used to test whether the media is playing or paused. You can also use the pause or play events to tell whether the media is playing or not.
*/ + + pause():CssChainT; + +/** Loads and starts playback of a media resource.
*/ + + play():CssChainT; + +/** Available only in secure contexts.
*/ + + setMediaKeys(mediaKeys: MediaKeys | null):CssChainT; + + + HAVE_CURRENT_DATA:number; + + + HAVE_ENOUGH_DATA:number; + + + HAVE_FUTURE_DATA:number; + + + HAVE_METADATA:number; + + + HAVE_NOTHING:number; + + + NETWORK_EMPTY:number; + + + NETWORK_IDLE:number; + + + NETWORK_LOADING:number; + + + NETWORK_NO_SOURCE:number; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLMediaElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLMediaElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLAudioElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLAudioElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + + + disablePictureInPicture:boolean; + + + onenterpictureinpicture:((this: HTMLVideoElement, ev: Event) => any)|null; + + + onleavepictureinpicture:((this: HTMLVideoElement, ev: Event) => any)|null; + +/** Gets or sets the playsinline of the video element. for example, On iPhone, video elements will now be allowed to play inline, and will not automatically enter fullscreen mode when playback begins.
*/ + + playsInline:boolean; + +/** Gets or sets a URL of an image to display, for example, like a movie poster. This can be a still frame from the video, or another image if no video data is available.
*/ + + poster:string; + +/** Gets the intrinsic height of a video in CSS pixels, or zero if the dimensions are not known.
*/ + + videoHeight:number; + +/** Gets the intrinsic width of a video in CSS pixels, or zero if the dimensions are not known.
*/ + + videoWidth:number; + + + getVideoPlaybackQuality():CssChainT; + + + requestPictureInPicture():CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLVideoElement, ev: HTMLVideoElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLVideoElement, ev: HTMLVideoElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLMenuElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLMenuElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Gets or sets meta-information to associate with httpEquiv or name.
+ + Returns the template contents (a DocumentFragment).
*/ + + content:string|DocumentFragment; + +/** Gets or sets information used to bind the value of a content attribute of a meta element to an HTTP response header.
*/ + + httpEquiv:string; + +/** Sets or retrieves a scheme to be used in interpreting the value of a property specified for the object.
*/ + + scheme:string; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLMetaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLMetaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + + + high:number; + + + low:number; + + + optimum:number; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLMeterElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLMeterElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Sets or retrieves reference information about the object.
*/ + + cite:string; + +/** Sets or retrieves the date and time of a modification to the object.
*/ + + dateTime:string; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLModElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLModElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + + + reversed:boolean; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLOListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLOListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Sets or retrieves a character string that can be used to implement your own archive functionality for the object.
*/ + + archive:string; + +/** Sets or retrieves the URL of the file containing the compiled Java class.
*/ + + code:string; + +/** Sets or retrieves the URL of the component.
*/ + + codeBase:string; + +/** Sets or retrieves the Internet media type for the code associated with the object.
*/ + + codeType:string; + +/** Sets or retrieves the URL that references the data of the object.
*/ + + data:string; + + + declare:boolean; + +/** Sets or retrieves a message to be displayed while an object is loading.
*/ + + standby:string; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLObjectElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLObjectElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Sets or retrieves a value that you can use to implement your own label functionality for the object.
*/ + + label:string; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLOptGroupElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLOptGroupElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Sets or retrieves the status of an option.
*/ + + defaultSelected:boolean; + +/** Sets or retrieves the ordinal position of an option in a list box.
*/ + + index:number; + +/** Sets or retrieves whether the option in the list box is the default item.
*/ + + selected:boolean; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLOptionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLOptionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLOutputElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLOutputElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLParagraphElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLParagraphElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Sets or retrieves the data type of the value attribute.
*/ + + valueType:string; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLParamElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLParamElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLPictureElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLPictureElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLPreElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLPreElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Returns the quotient of value/max when the value attribute is set (determinate progress bar), or -1 when the value attribute is missing (indeterminate progress bar).
*/ + + position:number; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLProgressElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLProgressElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLQuoteElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLQuoteElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + + + async:boolean; + +/** Sets or retrieves the status of the script.
*/ + + defer:boolean; + +/** Sets or retrieves the event for which the script is written.
*/ + + event:string; + + + noModule:boolean; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLScriptElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLScriptElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Sets or retrieves the index of the selected option in a select object.
*/ + + selectedIndex:number; + + + selectedOptions:HTMLCollectionOf; + +/** Adds an element to the areas, controlRange, or options collection.
*/ + + add(element: HTMLOptionElement | HTMLOptGroupElement, before?: HTMLElement | number | null):CssChainT; + +/** Retrieves a select object or an object from an options collection.
*/ + + item(index: number):CssChainT; + +/** Retrieves a select object or an object from an options collection.
*/ + + namedItem(name: string):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLSelectElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLSelectElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + + + assign(...nodes: (Element | Text)[]):CssChainT; + + + assignedElements(options?: AssignedNodesOptions):CssChainT; + + + assignedNodes(options?: AssignedNodesOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLSlotElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLSlotElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLSourceElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLSourceElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLSpanElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLSpanElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLStyleElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLStyleElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLTableCaptionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLTableCaptionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Sets or retrieves abbreviated text for the object.
*/ + + abbr:string; + +/** Sets or retrieves a comma-delimited list of conceptual categories associated with the object.
*/ + + axis:string; + +/** Retrieves the position of the object in the cells collection of a row.
*/ + + cellIndex:number; + + + ch:string; + + + chOff:string; + +/** Sets or retrieves the number columns in the table that the object should span.
*/ + + colSpan:number; + +/** Sets or retrieves a list of header cells that provide information for the object.
*/ + + headers:string; + +/** Sets or retrieves whether the browser automatically performs wordwrap.
*/ + + noWrap:boolean; + +/** Sets or retrieves how many rows in a table the cell should span.
*/ + + rowSpan:number; + +/** Sets or retrieves the group of cells in a table to which the object's information applies.
*/ + + scope:string; + + + vAlign:string; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLTableCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLTableCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLTableDataCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLTableDataCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLTableHeaderCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLTableHeaderCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Sets or retrieves the number of columns in the group.
*/ + + span:number; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLTableColElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLTableColElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Retrieves the caption object of a table.
*/ + + caption:HTMLTableCaptionElement|null; + +/** Sets or retrieves the amount of space between the border of the cell and the content of the cell.
*/ + + cellPadding:string; + +/** Sets or retrieves the amount of space between cells in a table.
*/ + + cellSpacing:string; + +/** Sets or retrieves the way the border frame around the table is displayed.
*/ + + frame:string; + +/** Sets or retrieves which dividing lines (inner borders) are displayed.
*/ + + rules:string; + +/** Sets or retrieves a description and/or structure of the object.
*/ + + summary:string; + +/** Retrieves a collection of all tBody objects in the table. Objects in this collection are in source order.
*/ + + tBodies:HTMLCollectionOf; + +/** Retrieves the tFoot object of the table.
*/ + + tFoot:HTMLTableSectionElement|null; + +/** Retrieves the tHead object of the table.
*/ + + tHead:HTMLTableSectionElement|null; + +/** Creates an empty caption element in the table.
*/ + + createCaption():CssChainT; + +/** Creates an empty tBody element in the table.
*/ + + createTBody():CssChainT; + +/** Creates an empty tFoot element in the table.
*/ + + createTFoot():CssChainT; + +/** Returns the tHead element object if successful, or null otherwise.
*/ + + createTHead():CssChainT; + +/** Deletes the caption element and its contents from the table.
*/ + + deleteCaption():CssChainT; + +/** Removes the specified row (tr) from the element and from the rows collection.
*/ + + deleteRow(index: number):CssChainT; + +/** Deletes the tFoot element and its contents from the table.
*/ + + deleteTFoot():CssChainT; + +/** Deletes the tHead element and its contents from the table.
*/ + + deleteTHead():CssChainT; + +/** Creates a new row (tr) in the table, and adds the row to the rows collection.
*/ + + insertRow(index?: number):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLTableElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLTableElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Retrieves a collection of all cells in the table row.
*/ + + cells:HTMLCollectionOf; + +/** Retrieves the position of the object in the rows collection for the table.
*/ + + rowIndex:number; + +/** Retrieves the position of the object in the collection.
*/ + + sectionRowIndex:number; + +/** Removes the specified cell from the table row, as well as from the cells collection.
*/ + + deleteCell(index: number):CssChainT; + +/** Creates a new cell in the table row, and adds the cell to the cells collection.
*/ + + insertCell(index?: number):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLTableRowElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLTableRowElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLTableSectionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLTableSectionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLTemplateElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLTemplateElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + + + textLength:number; + +/** Sets or retrieves how to handle wordwrapping in the object.
*/ + + wrap:string; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLTextAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLTextAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLTimeElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLTimeElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLTitleElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLTitleElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + + + default:boolean; + + + kind:string; + + + srclang:string; + +/** Returns the TextTrack object corresponding to the text track of the track element.
*/ + + track:TextTrack; + + + ERROR:number; + + + LOADED:number; + + + LOADING:number; + + + NONE:number; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLTrackElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLTrackElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLUListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLUListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +/** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + +The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + +When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + +When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + +When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + +If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + +The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
*/ + + addEventListener(type: K, listener: (this: HTMLUnknownElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions):CssChainT; + +/** Removes the event listener in target's event listener list with the same type, callback, and options.
*/ + + removeEventListener(type: K, listener: (this: HTMLUnknownElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions):CssChainT; + +} diff --git a/dist/PokeApi-Explorer.html b/dist/PokeApi-Explorer.html new file mode 100644 index 0000000..0ff9111 --- /dev/null +++ b/dist/PokeApi-Explorer.html @@ -0,0 +1,95 @@ + + + + PokéAPI Explorer - CssChain use sample + + + + + + +

PokéAPI Explorer - CssChain use sample

+ +
+ Demo home | + The RESTful Pokémon API | + Sprites | + + Source + git + +
+ JSON data from API filled into web component sample.
+ Template uses slots as placeholder for JSON data.
+
+
+ +
+ + loading... pokemons + + + + + +
...
+ +
+
+ loading +
+ + + + + + diff --git a/dist/PokeApi-Explorer.js b/dist/PokeApi-Explorer.js index c5b03be..368f7cc 100644 --- a/dist/PokeApi-Explorer.js +++ b/dist/PokeApi-Explorer.js @@ -1,4 +1,4 @@ -var w=Object.getOwnPropertySymbols;var A=Object.prototype.hasOwnProperty,P=Object.prototype.propertyIsEnumerable;var x=(s,e)=>{var l={};for(var n in s)A.call(s,n)&&e.indexOf(n)<0&&(l[n]=s[n]);if(s!=null&&w)for(var n of w(s))e.indexOf(n)<0&&P.call(s,n)&&(l[n]=s[n]);return l};import B from"https://unpkg.com/slotted-element@1.0.3/fetch-element.js";import{CssChain as u}from"https://unpkg.com/css-chain@1/CssChain.js";const f=(s,e,l="")=>s.map(e).join(l),k=s=>s&&s.endsWith&&["png","gif","svg"].find(e=>s.endsWith(e));window.customElements.define("pokemon-link-element",class extends HTMLElement{connectedCallback(){const e=u(this),l=t=>e.$(t),n=e.attr("name"),p=e.attr("url");if(k(p)){debugger;return e.html(``)}e.html(`${n}
`),l("a").on("click",async t=>{if(t.preventDefault(),this.loaded)return l("dl").clear(),this.loaded=0;this.loaded=1;const r=await(await fetch(p)).json();l("dl").html(m(r))});function m(t,r=""){if(t==null||typeof t=="string"||typeof t=="number")return k(t)?`s.map(e).join(l),k=s=>s&&s.endsWith&&["png","gif","svg"].find(e=>s.endsWith(e));window.customElements.define("pokemon-link-element",class extends HTMLElement{connectedCallback(){const e=u(this),l=t=>e.$(t),n=e.attr("name"),p=e.attr("url");if(k(p)){debugger;return e.html(``)}e.html(`${n}
`),l("a").on("click",async t=>{if(t.preventDefault(),this.loaded)return l("dl").erase(),this.loaded=0;this.loaded=1;const r=await(await fetch(p)).json();l("dl").html(m(r))});function m(t,r=""){if(t==null||typeof t=="string"||typeof t=="number")return k(t)?``:r?`${r} : ${t}`:`${t}`;if(Array.isArray(t))return`
${r}${f(t,m,"
")}
`;let o=[],i=Object.keys(t);const $=t.name&&t.url&&k(t.url)?``:` `;if(i.length===2&&t.name&&t.url)o.push($);else{r&&(o.push("
"),o.push(`${r}`));for(let a in t)switch(a){case"name":if(t.url)break;case"url":t.url&&t.name&&o.push($);break;default:Array.isArray(t[a])?o.push(`
${a}${f(t[a],d=>m(d),"
")}
`):o.push(m(t[a],a))}r&&o.push("
")}return o.join("")}}}),window.customElements.define("pokemon-info-element",class extends B{render(e){const o=e.sprites,{other:l,versions:n}=o,p=x(o,["other","versions"]),m=(i,$)=>`
${i} ${f(Object.entries($),([a,d])=>d?typeof d=="string"?``:m(a,d):"")}
`,t=()=>`
abilities ${f(e.abilities,i=>`${i.ability.name}${i.slot}`)}
`,r=(i,$)=>`
${i}${f($,a=>``)}
`;return`

${e.name}

@@ -15,5 +15,5 @@ ${t}" src="${t}">`:r?`${r} : ${t}`:`${ ${m("Sprites",p)} ${m("other",l)} ${m("versions",n)} - `}});let c=0,h=10;const C=async()=>(await fetch(`https://pokeapi.co/api/v2/pokemon?limit=${h}&offset=${c}`)).json(),E=u(),y=async s=>u("pokemon-info-element").attr("src",s.url),I=s=>(e=>(e.pop(),e.pop()))(s.url.split("/")),j=s=>`https://unpkg.com/pokeapi-sprites@2.0.2/sprites/pokemon/other/dream-world/${I(s)}.svg`,g=E.slot("slot-select"),b=g.parent().$("dl"),v=async()=>{const s=await C();return b.clear(),c?b.append(g.clone(s.results,(e,l,n)=>u(e).prop("hidden",!1).prop("checked",!n,"input").prop("src",j(l),"img").on("click",()=>y(l)).slot("index",c+n).slot("name",l.name))):s.results.forEach((e,l)=>{const n=g.clone();n.hidden=!1,n.$("input").checked=!l,n.slot("index").innerText=c+l,n.slot("name").innerText=e.name,n.on("click",()=>y(e)),n.$("img").src=j(e),b.append(n)}),y(s.results[0]),prevBtn.disabled=c<=0,nextBtn.disabled=c+h>=s.count,s};g.remove();const L=await v();E.slot("counter").text(L.count),prevBtn.onclick=()=>v(c-=h),nextBtn.onclick=()=>v(c+=h); + `}});let c=0,h=10;const C=async()=>(await fetch(`https://pokeapi.co/api/v2/pokemon?limit=${h}&offset=${c}`)).json(),E=u(),y=async s=>u("pokemon-info-element").attr("src",s.url),I=s=>(e=>(e.pop(),e.pop()))(s.url.split("/")),j=s=>`https://unpkg.com/pokeapi-sprites@2.0.2/sprites/pokemon/other/dream-world/${I(s)}.svg`,g=E.slots("slot-select"),b=g.parent().$("dl"),v=async()=>{const s=await C();return b.erase(),c?b.append(g.clone(s.results,(e,l,n)=>u(e).prop("hidden",!1).prop("checked",!n,"input").prop("src",j(l),"img").on("click",()=>y(l)).slots("index",""+(c+n)).slots("name",l.name))):s.results.forEach((e,l)=>{const n=g.clone();n.hidden=!1,n.$("input").checked=!l,n.slots("index").innerText=""+(c+l),n.slots("name").innerText=e.name,n.on("click",()=>y(e)),n.$("img").src=j(e),b.append(n)}),y(s.results[0]),prevBtn.disabled=c<=0,nextBtn.disabled=c+h>=s.count,s};g.remove();const L=await v();E.slots("counter").txt(L.count),prevBtn.onclick=()=>v(c-=h),nextBtn.onclick=()=>v(c+=h); //# sourceMappingURL=PokeApi-Explorer.js.map diff --git a/dist/PokeApi-Explorer.js.map b/dist/PokeApi-Explorer.js.map index 50b5d72..c11e301 100644 --- a/dist/PokeApi-Explorer.js.map +++ b/dist/PokeApi-Explorer.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../src/PokeApi-Explorer.js"], - "sourcesContent": ["import FetchElement from 'https://unpkg.com/slotted-element@1.0.3/fetch-element.js';\nimport { CssChain as $$ } from \"https://unpkg.com/css-chain@1/CssChain.js\";\n// import { CssChain as $$ } from \"./CssChain.js\";\n\nconst arr2str = (arr,cb, separator='') => arr.map(cb).join(separator)\n, isImg = url => url && url.endsWith && ['png','gif','svg'].find( x=>url.endsWith(x) );\n\nwindow.customElements.define('pokemon-link-element',\n class PokemonInfoElement extends HTMLElement\n {\n connectedCallback()\n {\n const $this = $$(this)\n , $ = x => $this.$(x)\n , name = $this.attr('name')\n , url = $this.attr('url');\n if( isImg(url) )\n {\n debugger;\n return $this.html( `` );\n }\n\n\n $this.html(`${name}
`);\n\n $('a').on('click', async e=>\n { e.preventDefault();\n if(this.loaded)\n return $('dl').clear(), this.loaded=0;\n this.loaded =1;\n const d = await ( await fetch(url) ).json();\n $('dl').html( render(d) );\n });\n\n function render( d, n='' )\n {\n if( d === undefined || d === null || 'string' === typeof d || 'number' === typeof d )\n { if( isImg(d) )\n return ``;\n return n ? `${ n } : ${ d }` : `${ d }`;\n }\n if( Array.isArray( d ))\n return `
${n}${ arr2str( d, render,'
' ) }
`;\n\n let ret = [], keys = Object.keys(d);\n const link = ( d.name && d.url ) && isImg(d.url)\n ? ``\n : ` `;\n\n if( keys.length ===2 && d.name && d.url )\n ret.push( link )\n else\n { if( n )\n { ret.push( '
' );\n ret.push( `${ n }` )\n }\n for( let k in d )\n switch( k )\n { case 'name':\n if( d.url )\n break;\n case 'url':\n d.url && d.name && ret.push( link ); break;\n default:\n if( Array.isArray( d[ k ] ) )\n ret.push( `
${ k }${\n arr2str( d[ k ], v=>render(v),'
' )\n }
` );\n else\n ret.push( render( d[ k ], k ) );\n }\n n && ret.push( '
' );\n }\n return ret.join('')\n }\n }\n\n });\n\n\nwindow.customElements.define('pokemon-info-element',\n class PokemonInfoElement extends FetchElement\n {\n render(pokemon)\n {\n const { other, versions, ...sprites } = pokemon.sprites;\n const renderCollection = (title, obj) => `
${title}\n ${ arr2str( Object.entries(obj), ([k,v]) => !v ? ''\n : ('string' === typeof v\n ? ``\n : renderCollection(k,v) ) )\n }
`;\n const renderAbilities = () => `
abilities\n ${ arr2str( pokemon.abilities, a => `${a.ability.name}${a.slot}` )\n }
`;\n const nameUrlArr = (name,arr)=>`
${name}${\n arr2str(arr, a => `` )\n }
`;\n\n\n return `

${ pokemon.name }

\n \"\"\n
\n ${nameUrlArr('abilities',pokemon.abilities.map(a=>a.ability))}\n ${nameUrlArr('forms',pokemon.forms)}\n ${nameUrlArr('game indices',pokemon.game_indices.map(i=>i.version))}\n ${nameUrlArr('moves',pokemon.moves.map(i=>i.move))}\n ${nameUrlArr('stats',pokemon.stats.map(i=>i.stat))}\n ${nameUrlArr('types',pokemon.types.map(i=>i.type))}\n ${nameUrlArr('species',[pokemon.species])}\n
\n ${ renderCollection('Sprites' ,sprites ) }\n ${ renderCollection('other' ,other ) }\n ${ renderCollection('versions' ,versions ) }\n `;\n }\n });\n\nlet offset = 0\n, limit = 10;\nconst getPokeList = async () =>\n ( await\n // fetch( '../test/pokeapi-page0.json')\n fetch( `https://pokeapi.co/api/v2/pokemon?limit=${limit}&offset=${offset}`)\n ).json()\n, $ = $$()\n, onSelected = async (p) => $$('pokemon-info-element').attr( 'src', p.url )\n, getPokemonId = p=> ( arr=>(arr.pop(), arr.pop()) )( p.url.split('/') )\n, getImgByPokemon = p =>`https://unpkg.com/pokeapi-sprites@2.0.2/sprites/pokemon/other/dream-world/${getPokemonId(p)}.svg`\n, $template = $.slot('slot-select')\n, $listContainer = $template.parent().$('dl')\n, renderList = async()=>\n {\n const page = await getPokeList();\n\n $listContainer.clear();\n // yield version\n\n if( offset ) // call chain with callbacks version\n $listContainer.append(\n $template.clone( page.results, (cloned, p,i)=>\n $$(cloned)\n .prop('hidden', false )\n .prop('checked', !i, 'input')\n .prop('src', getImgByPokemon( p ), 'img')\n .on('click', ()=>onSelected(p) )\n .slot( 'index', offset + i )\n .slot( 'name', p.name ) ) );\n else // same without call chain, just as show case of HTMLElement API in CssChain\n page.results.forEach( (p,i)=>\n {\n const $c = $template.clone();\n $c.hidden = false;\n $c.$('input').checked = !i;\n $c.slot( 'index' ).innerText = offset + i;\n $c.slot( 'name' ).innerText = p.name;\n $c.on('click', ()=>onSelected(p) )\n $c.$('img').src = getImgByPokemon( p );\n $listContainer.append($c);\n });\n\n onSelected( page.results[0] );\n\n prevBtn.disabled = offset <= 0;\n nextBtn.disabled = offset+limit >= page.count;\n return page;\n };\n$template.remove();\nconst firstPage = await renderList()\n$.slot('counter').text( firstPage.count );\nprevBtn.onclick = ()=> renderList( offset-=limit );\nnextBtn.onclick = ()=> renderList( offset+=limit );\n"], - "mappings": "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", + "sourcesContent": ["import FetchElement from 'https://unpkg.com/slotted-element@1.0.3/fetch-element.js';\n// import { CssChain as $$ } from \"https://unpkg.com/css-chain@1/CssChain.js\";\nimport { CssChain as $$ } from \"./CssChain.js\";\n\nconst arr2str = (arr,cb, separator='') => arr.map(cb).join(separator)\n, isImg = url => url && url.endsWith && ['png','gif','svg'].find( x=>url.endsWith(x) );\n\nwindow.customElements.define('pokemon-link-element',\n class PokemonInfoElement extends HTMLElement\n {\n connectedCallback()\n {\n const $this = $$(this)\n , $ = x => $this.$(x)\n , name = $this.attr('name')\n , url = $this.attr('url');\n if( isImg(url) )\n {\n debugger;\n return $this.html( `` );\n }\n\n\n $this.html(`${name}
`);\n\n $('a').on('click', async e=>\n { e.preventDefault();\n if(this.loaded)\n return $('dl').erase(), this.loaded=0;\n this.loaded =1;\n const d = await ( await fetch(url) ).json();\n $('dl').html( render(d) );\n });\n\n function render( d, n='' )\n {\n if( d === undefined || d === null || 'string' === typeof d || 'number' === typeof d )\n { if( isImg(d) )\n return ``;\n return n ? `${ n } : ${ d }` : `${ d }`;\n }\n if( Array.isArray( d ))\n return `
${n}${ arr2str( d, render,'
' ) }
`;\n\n let ret = [], keys = Object.keys(d);\n const link = ( d.name && d.url ) && isImg(d.url)\n ? ``\n : ` `;\n\n if( keys.length ===2 && d.name && d.url )\n ret.push( link )\n else\n { if( n )\n { ret.push( '
' );\n ret.push( `${ n }` )\n }\n for( let k in d )\n switch( k )\n { case 'name':\n if( d.url )\n break;\n case 'url':\n d.url && d.name && ret.push( link ); break;\n default:\n if( Array.isArray( d[ k ] ) )\n ret.push( `
${ k }${\n arr2str( d[ k ], v=>render(v),'
' )\n }
` );\n else\n ret.push( render( d[ k ], k ) );\n }\n n && ret.push( '
' );\n }\n return ret.join('')\n }\n }\n\n });\n\n\nwindow.customElements.define('pokemon-info-element',\n class PokemonInfoElement extends FetchElement\n {\n render(pokemon)\n {\n const { other, versions, ...sprites } = pokemon.sprites;\n const renderCollection = (title, obj) => `
${title}\n ${ arr2str( Object.entries(obj), ([k,v]) => !v ? ''\n : ('string' === typeof v\n ? ``\n : renderCollection(k,v) ) )\n }
`;\n const renderAbilities = () => `
abilities\n ${ arr2str( pokemon.abilities, a => `${a.ability.name}${a.slot}` )\n }
`;\n const nameUrlArr = (name,arr)=>`
${name}${\n arr2str(arr, a => `` )\n }
`;\n\n\n return `

${ pokemon.name }

\n \"\"\n
\n ${nameUrlArr('abilities',pokemon.abilities.map(a=>a.ability))}\n ${nameUrlArr('forms',pokemon.forms)}\n ${nameUrlArr('game indices',pokemon.game_indices.map(i=>i.version))}\n ${nameUrlArr('moves',pokemon.moves.map(i=>i.move))}\n ${nameUrlArr('stats',pokemon.stats.map(i=>i.stat))}\n ${nameUrlArr('types',pokemon.types.map(i=>i.type))}\n ${nameUrlArr('species',[pokemon.species])}\n
\n ${ renderCollection('Sprites' ,sprites ) }\n ${ renderCollection('other' ,other ) }\n ${ renderCollection('versions' ,versions ) }\n `;\n }\n });\n\nlet offset = 0\n, limit = 10;\nconst getPokeList = async () =>\n ( await\n // fetch( '../test/pokeapi-page0.json')\n fetch( `https://pokeapi.co/api/v2/pokemon?limit=${limit}&offset=${offset}`)\n ).json()\n, $ = $$()\n, onSelected = async (p) => $$('pokemon-info-element').attr( 'src', p.url )\n, getPokemonId = p=> ( arr=>(arr.pop(), arr.pop()) )( p.url.split('/') )\n, getImgByPokemon = p =>`https://unpkg.com/pokeapi-sprites@2.0.2/sprites/pokemon/other/dream-world/${getPokemonId(p)}.svg`\n, $template = $.slots('slot-select')\n, $listContainer = $template.parent().$('dl')\n, renderList = async()=>\n {\n const page = await getPokeList();\n\n $listContainer.erase();\n // yield version\n\n if( offset ) // call chain with callbacks version\n $listContainer.append(\n $template.clone( page.results, (cloned, p,i)=>\n $$(cloned)\n .prop('hidden', false )\n .prop('checked', !i, 'input')\n .prop('src', getImgByPokemon( p ), 'img')\n .on('click', ()=>onSelected(p) )\n .slots( 'index', ''+(offset + i) )\n .slots( 'name', p.name ) ) );\n else // same without call chain, just as show case of HTMLElement API in CssChain\n page.results.forEach( (p,i)=>\n {\n const $c = $template.clone();\n $c.hidden = false;\n $c.$('input').checked = !i;\n $c.slots( 'index' ).innerText = ''+(offset + i);\n $c.slots( 'name' ).innerText = p.name;\n $c.on('click', ()=>onSelected(p) )\n $c.$('img').src = getImgByPokemon( p );\n $listContainer.append($c);\n });\n\n onSelected( page.results[0] );\n\n prevBtn.disabled = offset <= 0;\n nextBtn.disabled = offset+limit >= page.count;\n return page;\n };\n$template.remove();\nconst firstPage = await renderList()\n$.slots('counter').txt( firstPage.count );\nprevBtn.onclick = ()=> renderList( offset-=limit );\nnextBtn.onclick = ()=> renderList( offset+=limit );\n"], + "mappings": "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", "names": [] } diff --git a/dist/slots-light-vs-shadow.html b/dist/slots-light-vs-shadow.html new file mode 100644 index 0000000..48294de --- /dev/null +++ b/dist/slots-light-vs-shadow.html @@ -0,0 +1,966 @@ + + + + Slots in HTML template - Unit test samples in visual presentation + + + + + + +
+
+

Visual presentation of Slot in shadow DOM from + Chromium unit test

+ Demo home + | List from data +
+
+ Outline: + shadow DOM blue , + light DOM green. They should be rendered identical. + +
+ + + +

Slots: Basic. Basic, elements only. +

+ +
+ + +

Slots in closed; Slots in closed, elements only +

+ +
+ + +

Slots not in a shadow tree, ... elements only +

+ +
+ + +

assignedSlot, assignedNodes(), assignedNodes({ flatten: true }) +

+ +
+ + +

assignedSlot +

+ +
+ + +

assignedSlot +

+ +
+ + +

assignedSlot +

+ +
+ + +

assignedSlot +

+ +
+ + +

assignedSlot +

+ +
+ + +

assignedSlot, assignedNodes({ flatten: true }) +

+ +
+ + +

assignedSlot, assignedNodes({ flatten: true }) +

+ +
+ + +

assignedSlot, assignedNodes({ flatten: true }) +

+ +
+ + +

assignedSlot, assignedNodes((),assignedNodes({ flatten: true }) +

+ +
+ + + + + + + + diff --git a/dist/slots.html b/dist/slots.html new file mode 100644 index 0000000..31161f4 --- /dev/null +++ b/dist/slots.html @@ -0,0 +1,130 @@ + + + + Slots in HTML template - Unit test samples in visual presentation + + + + + + +
+
+

Visual presentation of Slot in shadow DOM from unit test

+ Demo home + | List from data +
+ + Only first level slots in template are substituted from web component content HTML.
+ The embedded slots like "inner-X" in sample template are ignored by shadowDOM. + +
+ + + + + + + +

fallback

+
+
+ + + +

inner without slot

+
+ without name +
+
+
+ + +
+ outer replacement +
+
+
+ + +
replaced with colored code
+ +
+ +
replaced with colored code
+ +
+ +
replaced with colored code
+ +
+ +
replaced with colored code
+ +
+ + + diff --git a/package-lock.json b/package-lock.json index 1c17e98..0bde2d5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,21 +1,23 @@ { "name": "css-chain-test", - "version": "1.0.13", + "version": "1.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "1.0.13", + "version": "1.1.0", "license": "Apache-2.0", "dependencies": { "css-chain": "^1.0.13", - "lit": "^2.0.2" + "lit": "^2.2.0" }, "devDependencies": { - "@open-wc/testing": "^3.0.3", + "@open-wc/testing": "^3.0.4", "@web/dev-server": "^0.1.29", - "@web/test-runner": "^0.13.25", - "esbuild": "^0.14.11" + "@web/test-runner": "^0.13.27", + "concurrently": "^7.0.0", + "esbuild": "^0.14.23", + "typescript": "^4.5.5" } }, "node_modules/@babel/code-frame": { @@ -63,9 +65,9 @@ } }, "node_modules/@lit/reactive-element": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.0.0.tgz", - "integrity": "sha512-Kpgenb8UNFsKCsFhggiVvUkCbcFQSd6N8hffYEEGjz27/4rw3cTSsmP9t3q1EHOAsdum60Wo64HvuZDFpEwexA==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.3.0.tgz", + "integrity": "sha512-0TKSIuJHXNLM0k98fi0AdMIdUoHIYlDHTP+0Vruc2SOs4T6vU1FinXgSvYd8mSrkt+8R+qdRAXvjpqrMXMyBgw==" }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", @@ -146,15 +148,15 @@ } }, "node_modules/@open-wc/testing": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-3.0.3.tgz", - "integrity": "sha512-xJYckO8X9yfWc+ltPlDZjHGTh4ldNmnYsnxNriuUUEEhV5ASdsc+5WEsIS2+9m4lQELj89rNQ7YvhYhawDorhg==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-3.0.4.tgz", + "integrity": "sha512-NR7POaSv6MCuJPjKq0O8jZXHL6dBugbPymQHcWGd67We9/G75upKYJYhIWETOOet/kNt3UrUKOGuTbsBx/RtAQ==", "dev": true, "dependencies": { "@esm-bundle/chai": "^4.3.4", "@open-wc/chai-dom-equals": "^0.12.36", "@open-wc/semantic-dom-diff": "^0.19.5", - "@open-wc/testing-helpers": "^2.0.2", + "@open-wc/testing-helpers": "^2.0.4", "@types/chai": "^4.2.11", "@types/chai-dom": "^0.0.9", "@types/sinon-chai": "^3.2.3", @@ -162,13 +164,14 @@ } }, "node_modules/@open-wc/testing-helpers": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@open-wc/testing-helpers/-/testing-helpers-2.0.2.tgz", - "integrity": "sha512-wJlvDmWo+fIbgykRP21YSP9I9Pf/fo2+dZGaWG77Hw0sIuyB+7sNUDJDkL6kMkyyRecPV6dVRmbLt6HuOwvZ1w==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@open-wc/testing-helpers/-/testing-helpers-2.0.4.tgz", + "integrity": "sha512-BoeZRXy0wV1/jBfxDcL/MJbKxA8F0dywKEe92l2S5pFndGBnyKAF15flIVAPgrxJUpSc6A+IIMpAhYOrB/65kw==", "dev": true, "dependencies": { "@open-wc/scoped-elements": "^2.0.1", - "lit": "^2.0.0" + "lit": "^2.0.0", + "lit-html": "^2.0.0" } }, "node_modules/@rollup/plugin-node-resolve": { @@ -628,15 +631,15 @@ } }, "node_modules/@web/test-runner": { - "version": "0.13.25", - "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.13.25.tgz", - "integrity": "sha512-biKE36ygFu7F4cO31WAM0oeDecJygzjiTUPg4MHBaeM8U+wj8uzhYfGr2T4iAKkx1IDCcSRF95nkrqF9C2Wpqw==", + "version": "0.13.27", + "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.13.27.tgz", + "integrity": "sha512-yVhXK9sPJE2VQs1/KPTIeQvUxh+02OZkn+tgcr0+W8ovvrFD4ucF2X26cpeOTuD+Y67ERUi/EopIze3aelw6sg==", "dev": true, "dependencies": { "@web/browser-logs": "^0.2.2", "@web/config-loader": "^0.1.3", "@web/dev-server": "^0.1.24", - "@web/test-runner-chrome": "^0.10.5", + "@web/test-runner-chrome": "^0.10.7", "@web/test-runner-commands": "^0.6.0", "@web/test-runner-core": "^0.10.22", "@web/test-runner-mocha": "^0.7.5", @@ -659,15 +662,15 @@ } }, "node_modules/@web/test-runner-chrome": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/@web/test-runner-chrome/-/test-runner-chrome-0.10.5.tgz", - "integrity": "sha512-1dF7bEMe6Jb42z5VFreis4rafe0DLBq4PUjqkYbXlHCFbwnc3zWJFgU73ns8lIt9HCo/ADIWUFuPXrqmWoFBFQ==", + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/@web/test-runner-chrome/-/test-runner-chrome-0.10.7.tgz", + "integrity": "sha512-DKJVHhHh3e/b6/erfKOy0a4kGfZ47qMoQRgROxi9T4F9lavEY3E5/MQ7hapHFM2lBF4vDrm+EWjtBdOL8o42tw==", "dev": true, "dependencies": { "@web/test-runner-core": "^0.10.20", "@web/test-runner-coverage-v8": "^0.4.8", "chrome-launcher": "^0.15.0", - "puppeteer-core": "^11.0.0" + "puppeteer-core": "^13.1.3" }, "engines": { "node": ">=12.0.0" @@ -1132,6 +1135,67 @@ "node": ">=8" } }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cliui/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", @@ -1232,6 +1296,113 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "node_modules/concurrently": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.0.0.tgz", + "integrity": "sha512-WKM7PUsI8wyXpF80H+zjHP32fsgsHNQfPLw/e70Z5dYkV7hF+rf8q3D+ScWJIEr57CpkO3OWBko6hwhQLPR8Pw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "date-fns": "^2.16.1", + "lodash": "^4.17.21", + "rxjs": "^6.6.3", + "spawn-command": "^0.0.2-1", + "supports-color": "^8.1.0", + "tree-kill": "^1.2.2", + "yargs": "^16.2.0" + }, + "bin": { + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.0 || >=16.0.0" + } + }, + "node_modules/concurrently/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/concurrently/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/concurrently/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concurrently/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -1275,6 +1446,15 @@ "node": ">= 0.8" } }, + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dev": true, + "dependencies": { + "node-fetch": "2.6.7" + } + }, "node_modules/css-chain": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/css-chain/-/css-chain-1.0.13.tgz", @@ -1284,6 +1464,19 @@ "url": "https://www.patreon.com/sashafirsov" } }, + "node_modules/date-fns": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", + "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==", + "dev": true, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, "node_modules/debounce": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", @@ -1291,15 +1484,20 @@ "dev": true }, "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "dependencies": { "ms": "2.1.2" }, "engines": { "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/deep-equal": { @@ -1366,9 +1564,9 @@ "dev": true }, "node_modules/devtools-protocol": { - "version": "0.0.901419", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.901419.tgz", - "integrity": "sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ==", + "version": "0.0.960912", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.960912.tgz", + "integrity": "sha512-I3hWmV9rWHbdnUdmMKHF2NuYutIM2kXz2mdXW8ha7TbRlGTVs+PF+PsB5QWvpCek4Fy9B+msiispCfwlhG5Sqg==", "dev": true }, "node_modules/diff": { @@ -1435,39 +1633,43 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.11.tgz", - "integrity": "sha512-xZvPtVj6yecnDeFb3KjjCM6i7B5TCAQZT77kkW/CpXTMnd6VLnRPKrUB1XHI1pSq6a4Zcy3BGueQ8VljqjDGCg==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.23.tgz", + "integrity": "sha512-XjnIcZ9KB6lfonCa+jRguXyRYcldmkyZ99ieDksqW/C8bnyEX299yA4QH2XcgijCgaddEZePPTgvx/2imsq7Ig==", "dev": true, "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" }, + "engines": { + "node": ">=12" + }, "optionalDependencies": { - "esbuild-android-arm64": "0.14.11", - "esbuild-darwin-64": "0.14.11", - "esbuild-darwin-arm64": "0.14.11", - "esbuild-freebsd-64": "0.14.11", - "esbuild-freebsd-arm64": "0.14.11", - "esbuild-linux-32": "0.14.11", - "esbuild-linux-64": "0.14.11", - "esbuild-linux-arm": "0.14.11", - "esbuild-linux-arm64": "0.14.11", - "esbuild-linux-mips64le": "0.14.11", - "esbuild-linux-ppc64le": "0.14.11", - "esbuild-linux-s390x": "0.14.11", - "esbuild-netbsd-64": "0.14.11", - "esbuild-openbsd-64": "0.14.11", - "esbuild-sunos-64": "0.14.11", - "esbuild-windows-32": "0.14.11", - "esbuild-windows-64": "0.14.11", - "esbuild-windows-arm64": "0.14.11" + "esbuild-android-arm64": "0.14.23", + "esbuild-darwin-64": "0.14.23", + "esbuild-darwin-arm64": "0.14.23", + "esbuild-freebsd-64": "0.14.23", + "esbuild-freebsd-arm64": "0.14.23", + "esbuild-linux-32": "0.14.23", + "esbuild-linux-64": "0.14.23", + "esbuild-linux-arm": "0.14.23", + "esbuild-linux-arm64": "0.14.23", + "esbuild-linux-mips64le": "0.14.23", + "esbuild-linux-ppc64le": "0.14.23", + "esbuild-linux-riscv64": "0.14.23", + "esbuild-linux-s390x": "0.14.23", + "esbuild-netbsd-64": "0.14.23", + "esbuild-openbsd-64": "0.14.23", + "esbuild-sunos-64": "0.14.23", + "esbuild-windows-32": "0.14.23", + "esbuild-windows-64": "0.14.23", + "esbuild-windows-arm64": "0.14.23" } }, "node_modules/esbuild-android-arm64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.11.tgz", - "integrity": "sha512-6iHjgvMnC/SzDH8TefL+/3lgCjYWwAd1LixYfmz/TBPbDQlxcuSkX0yiQgcJB9k+ibZ54yjVXziIwGdlc+6WNw==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.23.tgz", + "integrity": "sha512-k9sXem++mINrZty1v4FVt6nC5BQCFG4K2geCIUUqHNlTdFnuvcqsY7prcKZLFhqVC1rbcJAr9VSUGFL/vD4vsw==", "cpu": [ "arm64" ], @@ -1475,12 +1677,15 @@ "optional": true, "os": [ "android" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-darwin-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.11.tgz", - "integrity": "sha512-olq84ikh6TiBcrs3FnM4eR5VPPlcJcdW8BnUz/lNoEWYifYQ+Po5DuYV1oz1CTFMw4k6bQIZl8T3yxL+ZT2uvQ==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.23.tgz", + "integrity": "sha512-lB0XRbtOYYL1tLcYw8BoBaYsFYiR48RPrA0KfA/7RFTr4MV7Bwy/J4+7nLsVnv9FGuQummM3uJ93J3ptaTqFug==", "cpu": [ "x64" ], @@ -1488,12 +1693,15 @@ "optional": true, "os": [ "darwin" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.11.tgz", - "integrity": "sha512-Jj0ieWLREPBYr/TZJrb2GFH8PVzDqiQWavo1pOFFShrcmHWDBDrlDxPzEZ67NF/Un3t6sNNmeI1TUS/fe1xARg==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.23.tgz", + "integrity": "sha512-yat73Z/uJ5tRcfRiI4CCTv0FSnwErm3BJQeZAh+1tIP0TUNh6o+mXg338Zl5EKChD+YGp6PN+Dbhs7qa34RxSw==", "cpu": [ "arm64" ], @@ -1501,12 +1709,15 @@ "optional": true, "os": [ "darwin" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-freebsd-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.11.tgz", - "integrity": "sha512-C5sT3/XIztxxz/zwDjPRHyzj/NJFOnakAanXuyfLDwhwupKPd76/PPHHyJx6Po6NI6PomgVp/zi6GRB8PfrOTA==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.23.tgz", + "integrity": "sha512-/1xiTjoLuQ+LlbfjJdKkX45qK/M7ARrbLmyf7x3JhyQGMjcxRYVR6Dw81uH3qlMHwT4cfLW4aEVBhP1aNV7VsA==", "cpu": [ "x64" ], @@ -1514,12 +1725,15 @@ "optional": true, "os": [ "freebsd" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.11.tgz", - "integrity": "sha512-y3Llu4wbs0bk4cwjsdAtVOesXb6JkdfZDLKMt+v1U3tOEPBdSu6w8796VTksJgPfqvpX22JmPLClls0h5p+L9w==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.23.tgz", + "integrity": "sha512-uyPqBU/Zcp6yEAZS4LKj5jEE0q2s4HmlMBIPzbW6cTunZ8cyvjG6YWpIZXb1KK3KTJDe62ltCrk3VzmWHp+iLg==", "cpu": [ "arm64" ], @@ -1527,12 +1741,15 @@ "optional": true, "os": [ "freebsd" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-32": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.11.tgz", - "integrity": "sha512-Cg3nVsxArjyLke9EuwictFF3Sva+UlDTwHIuIyx8qpxRYAOUTmxr2LzYrhHyTcGOleLGXUXYsnUVwKqnKAgkcg==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.23.tgz", + "integrity": "sha512-37R/WMkQyUfNhbH7aJrr1uCjDVdnPeTHGeDhZPUNhfoHV0lQuZNCKuNnDvlH/u/nwIYZNdVvz1Igv5rY/zfrzQ==", "cpu": [ "ia32" ], @@ -1540,12 +1757,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.11.tgz", - "integrity": "sha512-oeR6dIrrojr8DKVrxtH3xl4eencmjsgI6kPkDCRIIFwv4p+K7ySviM85K66BN01oLjzthpUMvBVfWSJkBLeRbg==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.23.tgz", + "integrity": "sha512-H0gztDP60qqr8zoFhAO64waoN5yBXkmYCElFklpd6LPoobtNGNnDe99xOQm28+fuD75YJ7GKHzp/MLCLhw2+vQ==", "cpu": [ "x64" ], @@ -1553,12 +1773,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-arm": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.11.tgz", - "integrity": "sha512-vcwskfD9g0tojux/ZaTJptJQU3a7YgTYsptK1y6LQ/rJmw7U5QJvboNawqM98Ca3ToYEucfCRGbl66OTNtp6KQ==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.23.tgz", + "integrity": "sha512-x64CEUxi8+EzOAIpCUeuni0bZfzPw/65r8tC5cy5zOq9dY7ysOi5EVQHnzaxS+1NmV+/RVRpmrzGw1QgY2Xpmw==", "cpu": [ "arm" ], @@ -1566,12 +1789,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-arm64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.11.tgz", - "integrity": "sha512-+e6ZCgTFQYZlmg2OqLkg1jHLYtkNDksxWDBWNtI4XG4WxuOCUErLqfEt9qWjvzK3XBcCzHImrajkUjO+rRkbMg==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.23.tgz", + "integrity": "sha512-c4MLOIByNHR55n3KoYf9hYDfBRghMjOiHLaoYLhkQkIabb452RWi+HsNgB41sUpSlOAqfpqKPFNg7VrxL3UX9g==", "cpu": [ "arm64" ], @@ -1579,12 +1805,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.11.tgz", - "integrity": "sha512-Rrs99L+p54vepmXIb87xTG6ukrQv+CzrM8eoeR+r/OFL2Rg8RlyEtCeshXJ2+Q66MXZOgPJaokXJZb9snq28bw==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.23.tgz", + "integrity": "sha512-kHKyKRIAedYhKug2EJpyJxOUj3VYuamOVA1pY7EimoFPzaF3NeY7e4cFBAISC/Av0/tiV0xlFCt9q0HJ68IBIw==", "cpu": [ "mips64el" ], @@ -1592,12 +1821,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.11.tgz", - "integrity": "sha512-JyzziGAI0D30Vyzt0HDihp4s1IUtJ3ssV2zx9O/c+U/dhUHVP2TmlYjzCfCr2Q6mwXTeloDcLS4qkyvJtYptdQ==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.23.tgz", + "integrity": "sha512-7ilAiJEPuJJnJp/LiDO0oJm5ygbBPzhchJJh9HsHZzeqO+3PUzItXi+8PuicY08r0AaaOe25LA7sGJ0MzbfBag==", "cpu": [ "ppc64" ], @@ -1605,12 +1837,31 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.23.tgz", + "integrity": "sha512-fbL3ggK2wY0D8I5raPIMPhpCvODFE+Bhb5QGtNP3r5aUsRR6TQV+ZBXIaw84iyvKC8vlXiA4fWLGhghAd/h/Zg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-s390x": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.11.tgz", - "integrity": "sha512-DoThrkzunZ1nfRGoDN6REwmo8ZZWHd2ztniPVIR5RMw/Il9wiWEYBahb8jnMzQaSOxBsGp0PbyJeVLTUatnlcw==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.23.tgz", + "integrity": "sha512-GHMDCyfy7+FaNSO8RJ8KCFsnax8fLUsOrj9q5Gi2JmZMY0Zhp75keb5abTFCq2/Oy6KVcT0Dcbyo/bFb4rIFJA==", "cpu": [ "s390x" ], @@ -1618,12 +1869,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-netbsd-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.11.tgz", - "integrity": "sha512-12luoRQz+6eihKYh1zjrw0CBa2aw3twIiHV/FAfjh2NEBDgJQOY4WCEUEN+Rgon7xmLh4XUxCQjnwrvf8zhACw==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.23.tgz", + "integrity": "sha512-ovk2EX+3rrO1M2lowJfgMb/JPN1VwVYrx0QPUyudxkxLYrWeBxDKQvc6ffO+kB4QlDyTfdtAURrVzu3JeNdA2g==", "cpu": [ "x64" ], @@ -1631,12 +1885,15 @@ "optional": true, "os": [ "netbsd" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-openbsd-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.11.tgz", - "integrity": "sha512-l18TZDjmvwW6cDeR4fmizNoxndyDHamGOOAenwI4SOJbzlJmwfr0jUgjbaXCUuYVOA964siw+Ix+A+bhALWg8Q==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.23.tgz", + "integrity": "sha512-uYYNqbVR+i7k8ojP/oIROAHO9lATLN7H2QeXKt2H310Fc8FJj4y3Wce6hx0VgnJ4k1JDrgbbiXM8rbEgQyg8KA==", "cpu": [ "x64" ], @@ -1644,12 +1901,15 @@ "optional": true, "os": [ "openbsd" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-sunos-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.11.tgz", - "integrity": "sha512-bmYzDtwASBB8c+0/HVOAiE9diR7+8zLm/i3kEojUH2z0aIs6x/S4KiTuT5/0VKJ4zk69kXel1cNWlHBMkmavQg==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.23.tgz", + "integrity": "sha512-hAzeBeET0+SbScknPzS2LBY6FVDpgE+CsHSpe6CEoR51PApdn2IB0SyJX7vGelXzlyrnorM4CAsRyb9Qev4h9g==", "cpu": [ "x64" ], @@ -1657,12 +1917,15 @@ "optional": true, "os": [ "sunos" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-windows-32": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.11.tgz", - "integrity": "sha512-J1Ys5hMid8QgdY00OBvIolXgCQn1ARhYtxPnG6ESWNTty3ashtc4+As5nTrsErnv8ZGUcWZe4WzTP/DmEVX1UQ==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.23.tgz", + "integrity": "sha512-Kttmi3JnohdaREbk6o9e25kieJR379TsEWF0l39PQVHXq3FR6sFKtVPgY8wk055o6IB+rllrzLnbqOw/UV60EA==", "cpu": [ "ia32" ], @@ -1670,12 +1933,15 @@ "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-windows-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.11.tgz", - "integrity": "sha512-h9FmMskMuGeN/9G9+LlHPAoiQk9jlKDUn9yA0MpiGzwLa82E7r1b1u+h2a+InprbSnSLxDq/7p5YGtYVO85Mlg==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.23.tgz", + "integrity": "sha512-JtIT0t8ymkpl6YlmOl6zoSWL5cnCgyLaBdf/SiU/Eg3C13r0NbHZWNT/RDEMKK91Y6t79kTs3vyRcNZbfu5a8g==", "cpu": [ "x64" ], @@ -1683,12 +1949,15 @@ "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-windows-arm64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.11.tgz", - "integrity": "sha512-dZp7Krv13KpwKklt9/1vBFBMqxEQIO6ri7Azf8C+ob4zOegpJmha2XY9VVWP/OyQ0OWk6cEeIzMJwInRZrzBUQ==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.23.tgz", + "integrity": "sha512-cTFaQqT2+ik9e4hePvYtRZQ3pqOvKDVNarzql0VFIzhc0tru/ZgdLoXd6epLiKT+SzoSce6V9YJ+nn6RCn6SHw==", "cpu": [ "arm64" ], @@ -1696,7 +1965,19 @@ "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/escape-html": { "version": "1.0.3", @@ -1874,6 +2155,15 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-intrinsic": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", @@ -2436,28 +2726,28 @@ "dev": true }, "node_modules/lit": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lit/-/lit-2.0.2.tgz", - "integrity": "sha512-hKA/1YaSB+P+DvKWuR2q1Xzy/iayhNrJ3aveD0OQ9CKn6wUjsdnF/7LavDOJsKP/K5jzW/kXsuduPgRvTFrFJw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-2.2.0.tgz", + "integrity": "sha512-FDyxUuczo6cJJY/2Bkgfh1872U4ikUvmK1Cb6+lYC1CW+QOo8CaWXCpvPKFzYsz0ojUxoruBLVrECc7VI2f1dQ==", "dependencies": { - "@lit/reactive-element": "^1.0.0", - "lit-element": "^3.0.0", - "lit-html": "^2.0.0" + "@lit/reactive-element": "^1.3.0", + "lit-element": "^3.2.0", + "lit-html": "^2.2.0" } }, "node_modules/lit-element": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.0.0.tgz", - "integrity": "sha512-oPqRhhBBhs+AlI62QLwtWQNU/bNK/h2L1jI3IDroqZubo6XVAkyNy2dW3CRfjij8mrNlY7wULOfyyKKOnfEePA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.2.0.tgz", + "integrity": "sha512-HbE7yt2SnUtg5DCrWt028oaU4D5F4k/1cntAFHTkzY8ZIa8N0Wmu92PxSxucsQSOXlODFrICkQ5x/tEshKi13g==", "dependencies": { - "@lit/reactive-element": "^1.0.0", - "lit-html": "^2.0.0" + "@lit/reactive-element": "^1.3.0", + "lit-html": "^2.2.0" } }, "node_modules/lit-html": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.0.0.tgz", - "integrity": "sha512-tJsCapCmc0vtLj6harqd6HfCxnlt/RSkgowtz4SC9dFE3nSL38Tb33I5HMDiyJsRjQZRTgpVsahrnDrR9wg27w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.2.0.tgz", + "integrity": "sha512-dJnevgV8VkCuOXLWrjQopDE8nSy8CzipZ/ATfYQv7z7Dct4abblcKecf50gkIScuwCTzKvRLgvTgV0zzagW4gA==", "dependencies": { "@types/trusted-types": "^2.0.2" } @@ -2535,9 +2825,9 @@ } }, "node_modules/marky": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.2.tgz", - "integrity": "sha512-k1dB2HNeaNyORco8ulVEhctyEGkKHb2YWAhDsxeFlW2nROIirsctBYzKwwS3Vza+sKTS1zO4Z+n9/+9WbGLIxQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.4.tgz", + "integrity": "sha512-zd2/GiSn6U3/jeFVZ0J9CA1LzQ8RfIVvXkb/U0swFHF/zT+dVohTAWjmo2DcIuofmIIIROlwTbd+shSeXmxr0w==", "dev": true }, "node_modules/media-typer": { @@ -2602,9 +2892,9 @@ } }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -2650,9 +2940,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.1.28", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.28.tgz", - "integrity": "sha512-gSu9VZ2HtmoKYe/lmyPFES5nknFrHa+/DT9muUFWFMi6Jh9E1I7bkvlQ8xxf1Kos9pi9o8lBnIOkatMhKX/YUw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -2671,15 +2961,23 @@ } }, "node_modules/node-fetch": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", - "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, "dependencies": { "whatwg-url": "^5.0.0" }, "engines": { "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, "node_modules/node-fetch/node_modules/tr46": { @@ -2953,32 +3251,32 @@ } }, "node_modules/puppeteer-core": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-11.0.0.tgz", - "integrity": "sha512-hfQ39KNP0qKplQ86iaCNXHH9zpWlV01UFdggt2qffgWeCBF9KMavwP/k/iK/JidPPWfOnKZhDLSHZVSUr73DtA==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.3.2.tgz", + "integrity": "sha512-9T8deXmLWf55/RvDpl32vP68stTufqvtj6fc9hH09ZwCLh5IwnN9Z0MWHfDMTLiW6MUpW2Flx5CQWt1SCUT47g==", "dev": true, "dependencies": { - "debug": "4.3.2", - "devtools-protocol": "0.0.901419", + "cross-fetch": "3.1.5", + "debug": "4.3.3", + "devtools-protocol": "0.0.960912", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.0", - "node-fetch": "2.6.5", "pkg-dir": "4.2.0", "progress": "2.0.3", "proxy-from-env": "1.1.0", "rimraf": "3.0.2", "tar-fs": "2.1.1", "unbzip2-stream": "1.4.3", - "ws": "8.2.3" + "ws": "8.5.0" }, "engines": { "node": ">=10.18.1" } }, "node_modules/puppeteer-core/node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", "dev": true, "engines": { "node": ">=10.0.0" @@ -3095,6 +3393,15 @@ "node": ">=6" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.21.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz", @@ -3223,6 +3530,18 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -3335,6 +3654,12 @@ "node": ">= 8" } }, + "node_modules/spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", + "dev": true + }, "node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -3523,6 +3848,21 @@ "node": ">=12" } }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/tsscmp": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", @@ -3563,6 +3903,19 @@ "node": ">= 0.6" } }, + "node_modules/typescript": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", + "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, "node_modules/typical": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", @@ -3723,12 +4076,48 @@ "node": ">=8.3.0" } }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", @@ -3786,9 +4175,9 @@ } }, "@lit/reactive-element": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.0.0.tgz", - "integrity": "sha512-Kpgenb8UNFsKCsFhggiVvUkCbcFQSd6N8hffYEEGjz27/4rw3cTSsmP9t3q1EHOAsdum60Wo64HvuZDFpEwexA==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.3.0.tgz", + "integrity": "sha512-0TKSIuJHXNLM0k98fi0AdMIdUoHIYlDHTP+0Vruc2SOs4T6vU1FinXgSvYd8mSrkt+8R+qdRAXvjpqrMXMyBgw==" }, "@nodelib/fs.scandir": { "version": "2.1.5", @@ -3862,15 +4251,15 @@ } }, "@open-wc/testing": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-3.0.3.tgz", - "integrity": "sha512-xJYckO8X9yfWc+ltPlDZjHGTh4ldNmnYsnxNriuUUEEhV5ASdsc+5WEsIS2+9m4lQELj89rNQ7YvhYhawDorhg==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-3.0.4.tgz", + "integrity": "sha512-NR7POaSv6MCuJPjKq0O8jZXHL6dBugbPymQHcWGd67We9/G75upKYJYhIWETOOet/kNt3UrUKOGuTbsBx/RtAQ==", "dev": true, "requires": { "@esm-bundle/chai": "^4.3.4", "@open-wc/chai-dom-equals": "^0.12.36", "@open-wc/semantic-dom-diff": "^0.19.5", - "@open-wc/testing-helpers": "^2.0.2", + "@open-wc/testing-helpers": "^2.0.4", "@types/chai": "^4.2.11", "@types/chai-dom": "^0.0.9", "@types/sinon-chai": "^3.2.3", @@ -3878,13 +4267,14 @@ } }, "@open-wc/testing-helpers": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@open-wc/testing-helpers/-/testing-helpers-2.0.2.tgz", - "integrity": "sha512-wJlvDmWo+fIbgykRP21YSP9I9Pf/fo2+dZGaWG77Hw0sIuyB+7sNUDJDkL6kMkyyRecPV6dVRmbLt6HuOwvZ1w==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@open-wc/testing-helpers/-/testing-helpers-2.0.4.tgz", + "integrity": "sha512-BoeZRXy0wV1/jBfxDcL/MJbKxA8F0dywKEe92l2S5pFndGBnyKAF15flIVAPgrxJUpSc6A+IIMpAhYOrB/65kw==", "dev": true, "requires": { "@open-wc/scoped-elements": "^2.0.1", - "lit": "^2.0.0" + "lit": "^2.0.0", + "lit-html": "^2.0.0" } }, "@rollup/plugin-node-resolve": { @@ -4310,15 +4700,15 @@ } }, "@web/test-runner": { - "version": "0.13.25", - "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.13.25.tgz", - "integrity": "sha512-biKE36ygFu7F4cO31WAM0oeDecJygzjiTUPg4MHBaeM8U+wj8uzhYfGr2T4iAKkx1IDCcSRF95nkrqF9C2Wpqw==", + "version": "0.13.27", + "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.13.27.tgz", + "integrity": "sha512-yVhXK9sPJE2VQs1/KPTIeQvUxh+02OZkn+tgcr0+W8ovvrFD4ucF2X26cpeOTuD+Y67ERUi/EopIze3aelw6sg==", "dev": true, "requires": { "@web/browser-logs": "^0.2.2", "@web/config-loader": "^0.1.3", "@web/dev-server": "^0.1.24", - "@web/test-runner-chrome": "^0.10.5", + "@web/test-runner-chrome": "^0.10.7", "@web/test-runner-commands": "^0.6.0", "@web/test-runner-core": "^0.10.22", "@web/test-runner-mocha": "^0.7.5", @@ -4346,15 +4736,15 @@ } }, "@web/test-runner-chrome": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/@web/test-runner-chrome/-/test-runner-chrome-0.10.5.tgz", - "integrity": "sha512-1dF7bEMe6Jb42z5VFreis4rafe0DLBq4PUjqkYbXlHCFbwnc3zWJFgU73ns8lIt9HCo/ADIWUFuPXrqmWoFBFQ==", + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/@web/test-runner-chrome/-/test-runner-chrome-0.10.7.tgz", + "integrity": "sha512-DKJVHhHh3e/b6/erfKOy0a4kGfZ47qMoQRgROxi9T4F9lavEY3E5/MQ7hapHFM2lBF4vDrm+EWjtBdOL8o42tw==", "dev": true, "requires": { "@web/test-runner-core": "^0.10.20", "@web/test-runner-coverage-v8": "^0.4.8", "chrome-launcher": "^0.15.0", - "puppeteer-core": "^11.0.0" + "puppeteer-core": "^13.1.3" } }, "@web/test-runner-commands": { @@ -4688,6 +5078,54 @@ "restore-cursor": "^3.1.0" } }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, "clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", @@ -4771,6 +5209,84 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "concurrently": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.0.0.tgz", + "integrity": "sha512-WKM7PUsI8wyXpF80H+zjHP32fsgsHNQfPLw/e70Z5dYkV7hF+rf8q3D+ScWJIEr57CpkO3OWBko6hwhQLPR8Pw==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "date-fns": "^2.16.1", + "lodash": "^4.17.21", + "rxjs": "^6.6.3", + "spawn-command": "^0.0.2-1", + "supports-color": "^8.1.0", + "tree-kill": "^1.2.2", + "yargs": "^16.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -4805,11 +5321,26 @@ "keygrip": "~1.1.0" } }, + "cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dev": true, + "requires": { + "node-fetch": "2.6.7" + } + }, "css-chain": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/css-chain/-/css-chain-1.0.13.tgz", "integrity": "sha512-sxUeRZCndRIeLPVX11Ljk968mDVVsz+0a7jD9vaWFVEtHfsv7I5L8foOILlDLlUuKMMMcEtvTFnZekKFzFCjIA==" }, + "date-fns": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", + "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==", + "dev": true + }, "debounce": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", @@ -4817,9 +5348,9 @@ "dev": true }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { "ms": "2.1.2" @@ -4874,9 +5405,9 @@ "dev": true }, "devtools-protocol": { - "version": "0.0.901419", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.901419.tgz", - "integrity": "sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ==", + "version": "0.0.960912", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.960912.tgz", + "integrity": "sha512-I3hWmV9rWHbdnUdmMKHF2NuYutIM2kXz2mdXW8ha7TbRlGTVs+PF+PsB5QWvpCek4Fy9B+msiispCfwlhG5Sqg==", "dev": true }, "diff": { @@ -4934,157 +5465,171 @@ "dev": true }, "esbuild": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.11.tgz", - "integrity": "sha512-xZvPtVj6yecnDeFb3KjjCM6i7B5TCAQZT77kkW/CpXTMnd6VLnRPKrUB1XHI1pSq6a4Zcy3BGueQ8VljqjDGCg==", - "dev": true, - "requires": { - "esbuild-android-arm64": "0.14.11", - "esbuild-darwin-64": "0.14.11", - "esbuild-darwin-arm64": "0.14.11", - "esbuild-freebsd-64": "0.14.11", - "esbuild-freebsd-arm64": "0.14.11", - "esbuild-linux-32": "0.14.11", - "esbuild-linux-64": "0.14.11", - "esbuild-linux-arm": "0.14.11", - "esbuild-linux-arm64": "0.14.11", - "esbuild-linux-mips64le": "0.14.11", - "esbuild-linux-ppc64le": "0.14.11", - "esbuild-linux-s390x": "0.14.11", - "esbuild-netbsd-64": "0.14.11", - "esbuild-openbsd-64": "0.14.11", - "esbuild-sunos-64": "0.14.11", - "esbuild-windows-32": "0.14.11", - "esbuild-windows-64": "0.14.11", - "esbuild-windows-arm64": "0.14.11" + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.23.tgz", + "integrity": "sha512-XjnIcZ9KB6lfonCa+jRguXyRYcldmkyZ99ieDksqW/C8bnyEX299yA4QH2XcgijCgaddEZePPTgvx/2imsq7Ig==", + "dev": true, + "requires": { + "esbuild-android-arm64": "0.14.23", + "esbuild-darwin-64": "0.14.23", + "esbuild-darwin-arm64": "0.14.23", + "esbuild-freebsd-64": "0.14.23", + "esbuild-freebsd-arm64": "0.14.23", + "esbuild-linux-32": "0.14.23", + "esbuild-linux-64": "0.14.23", + "esbuild-linux-arm": "0.14.23", + "esbuild-linux-arm64": "0.14.23", + "esbuild-linux-mips64le": "0.14.23", + "esbuild-linux-ppc64le": "0.14.23", + "esbuild-linux-riscv64": "0.14.23", + "esbuild-linux-s390x": "0.14.23", + "esbuild-netbsd-64": "0.14.23", + "esbuild-openbsd-64": "0.14.23", + "esbuild-sunos-64": "0.14.23", + "esbuild-windows-32": "0.14.23", + "esbuild-windows-64": "0.14.23", + "esbuild-windows-arm64": "0.14.23" } }, "esbuild-android-arm64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.11.tgz", - "integrity": "sha512-6iHjgvMnC/SzDH8TefL+/3lgCjYWwAd1LixYfmz/TBPbDQlxcuSkX0yiQgcJB9k+ibZ54yjVXziIwGdlc+6WNw==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.23.tgz", + "integrity": "sha512-k9sXem++mINrZty1v4FVt6nC5BQCFG4K2geCIUUqHNlTdFnuvcqsY7prcKZLFhqVC1rbcJAr9VSUGFL/vD4vsw==", "dev": true, "optional": true }, "esbuild-darwin-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.11.tgz", - "integrity": "sha512-olq84ikh6TiBcrs3FnM4eR5VPPlcJcdW8BnUz/lNoEWYifYQ+Po5DuYV1oz1CTFMw4k6bQIZl8T3yxL+ZT2uvQ==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.23.tgz", + "integrity": "sha512-lB0XRbtOYYL1tLcYw8BoBaYsFYiR48RPrA0KfA/7RFTr4MV7Bwy/J4+7nLsVnv9FGuQummM3uJ93J3ptaTqFug==", "dev": true, "optional": true }, "esbuild-darwin-arm64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.11.tgz", - "integrity": "sha512-Jj0ieWLREPBYr/TZJrb2GFH8PVzDqiQWavo1pOFFShrcmHWDBDrlDxPzEZ67NF/Un3t6sNNmeI1TUS/fe1xARg==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.23.tgz", + "integrity": "sha512-yat73Z/uJ5tRcfRiI4CCTv0FSnwErm3BJQeZAh+1tIP0TUNh6o+mXg338Zl5EKChD+YGp6PN+Dbhs7qa34RxSw==", "dev": true, "optional": true }, "esbuild-freebsd-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.11.tgz", - "integrity": "sha512-C5sT3/XIztxxz/zwDjPRHyzj/NJFOnakAanXuyfLDwhwupKPd76/PPHHyJx6Po6NI6PomgVp/zi6GRB8PfrOTA==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.23.tgz", + "integrity": "sha512-/1xiTjoLuQ+LlbfjJdKkX45qK/M7ARrbLmyf7x3JhyQGMjcxRYVR6Dw81uH3qlMHwT4cfLW4aEVBhP1aNV7VsA==", "dev": true, "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.11.tgz", - "integrity": "sha512-y3Llu4wbs0bk4cwjsdAtVOesXb6JkdfZDLKMt+v1U3tOEPBdSu6w8796VTksJgPfqvpX22JmPLClls0h5p+L9w==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.23.tgz", + "integrity": "sha512-uyPqBU/Zcp6yEAZS4LKj5jEE0q2s4HmlMBIPzbW6cTunZ8cyvjG6YWpIZXb1KK3KTJDe62ltCrk3VzmWHp+iLg==", "dev": true, "optional": true }, "esbuild-linux-32": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.11.tgz", - "integrity": "sha512-Cg3nVsxArjyLke9EuwictFF3Sva+UlDTwHIuIyx8qpxRYAOUTmxr2LzYrhHyTcGOleLGXUXYsnUVwKqnKAgkcg==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.23.tgz", + "integrity": "sha512-37R/WMkQyUfNhbH7aJrr1uCjDVdnPeTHGeDhZPUNhfoHV0lQuZNCKuNnDvlH/u/nwIYZNdVvz1Igv5rY/zfrzQ==", "dev": true, "optional": true }, "esbuild-linux-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.11.tgz", - "integrity": "sha512-oeR6dIrrojr8DKVrxtH3xl4eencmjsgI6kPkDCRIIFwv4p+K7ySviM85K66BN01oLjzthpUMvBVfWSJkBLeRbg==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.23.tgz", + "integrity": "sha512-H0gztDP60qqr8zoFhAO64waoN5yBXkmYCElFklpd6LPoobtNGNnDe99xOQm28+fuD75YJ7GKHzp/MLCLhw2+vQ==", "dev": true, "optional": true }, "esbuild-linux-arm": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.11.tgz", - "integrity": "sha512-vcwskfD9g0tojux/ZaTJptJQU3a7YgTYsptK1y6LQ/rJmw7U5QJvboNawqM98Ca3ToYEucfCRGbl66OTNtp6KQ==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.23.tgz", + "integrity": "sha512-x64CEUxi8+EzOAIpCUeuni0bZfzPw/65r8tC5cy5zOq9dY7ysOi5EVQHnzaxS+1NmV+/RVRpmrzGw1QgY2Xpmw==", "dev": true, "optional": true }, "esbuild-linux-arm64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.11.tgz", - "integrity": "sha512-+e6ZCgTFQYZlmg2OqLkg1jHLYtkNDksxWDBWNtI4XG4WxuOCUErLqfEt9qWjvzK3XBcCzHImrajkUjO+rRkbMg==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.23.tgz", + "integrity": "sha512-c4MLOIByNHR55n3KoYf9hYDfBRghMjOiHLaoYLhkQkIabb452RWi+HsNgB41sUpSlOAqfpqKPFNg7VrxL3UX9g==", "dev": true, "optional": true }, "esbuild-linux-mips64le": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.11.tgz", - "integrity": "sha512-Rrs99L+p54vepmXIb87xTG6ukrQv+CzrM8eoeR+r/OFL2Rg8RlyEtCeshXJ2+Q66MXZOgPJaokXJZb9snq28bw==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.23.tgz", + "integrity": "sha512-kHKyKRIAedYhKug2EJpyJxOUj3VYuamOVA1pY7EimoFPzaF3NeY7e4cFBAISC/Av0/tiV0xlFCt9q0HJ68IBIw==", "dev": true, "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.11.tgz", - "integrity": "sha512-JyzziGAI0D30Vyzt0HDihp4s1IUtJ3ssV2zx9O/c+U/dhUHVP2TmlYjzCfCr2Q6mwXTeloDcLS4qkyvJtYptdQ==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.23.tgz", + "integrity": "sha512-7ilAiJEPuJJnJp/LiDO0oJm5ygbBPzhchJJh9HsHZzeqO+3PUzItXi+8PuicY08r0AaaOe25LA7sGJ0MzbfBag==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.23.tgz", + "integrity": "sha512-fbL3ggK2wY0D8I5raPIMPhpCvODFE+Bhb5QGtNP3r5aUsRR6TQV+ZBXIaw84iyvKC8vlXiA4fWLGhghAd/h/Zg==", "dev": true, "optional": true }, "esbuild-linux-s390x": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.11.tgz", - "integrity": "sha512-DoThrkzunZ1nfRGoDN6REwmo8ZZWHd2ztniPVIR5RMw/Il9wiWEYBahb8jnMzQaSOxBsGp0PbyJeVLTUatnlcw==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.23.tgz", + "integrity": "sha512-GHMDCyfy7+FaNSO8RJ8KCFsnax8fLUsOrj9q5Gi2JmZMY0Zhp75keb5abTFCq2/Oy6KVcT0Dcbyo/bFb4rIFJA==", "dev": true, "optional": true }, "esbuild-netbsd-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.11.tgz", - "integrity": "sha512-12luoRQz+6eihKYh1zjrw0CBa2aw3twIiHV/FAfjh2NEBDgJQOY4WCEUEN+Rgon7xmLh4XUxCQjnwrvf8zhACw==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.23.tgz", + "integrity": "sha512-ovk2EX+3rrO1M2lowJfgMb/JPN1VwVYrx0QPUyudxkxLYrWeBxDKQvc6ffO+kB4QlDyTfdtAURrVzu3JeNdA2g==", "dev": true, "optional": true }, "esbuild-openbsd-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.11.tgz", - "integrity": "sha512-l18TZDjmvwW6cDeR4fmizNoxndyDHamGOOAenwI4SOJbzlJmwfr0jUgjbaXCUuYVOA964siw+Ix+A+bhALWg8Q==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.23.tgz", + "integrity": "sha512-uYYNqbVR+i7k8ojP/oIROAHO9lATLN7H2QeXKt2H310Fc8FJj4y3Wce6hx0VgnJ4k1JDrgbbiXM8rbEgQyg8KA==", "dev": true, "optional": true }, "esbuild-sunos-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.11.tgz", - "integrity": "sha512-bmYzDtwASBB8c+0/HVOAiE9diR7+8zLm/i3kEojUH2z0aIs6x/S4KiTuT5/0VKJ4zk69kXel1cNWlHBMkmavQg==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.23.tgz", + "integrity": "sha512-hAzeBeET0+SbScknPzS2LBY6FVDpgE+CsHSpe6CEoR51PApdn2IB0SyJX7vGelXzlyrnorM4CAsRyb9Qev4h9g==", "dev": true, "optional": true }, "esbuild-windows-32": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.11.tgz", - "integrity": "sha512-J1Ys5hMid8QgdY00OBvIolXgCQn1ARhYtxPnG6ESWNTty3ashtc4+As5nTrsErnv8ZGUcWZe4WzTP/DmEVX1UQ==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.23.tgz", + "integrity": "sha512-Kttmi3JnohdaREbk6o9e25kieJR379TsEWF0l39PQVHXq3FR6sFKtVPgY8wk055o6IB+rllrzLnbqOw/UV60EA==", "dev": true, "optional": true }, "esbuild-windows-64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.11.tgz", - "integrity": "sha512-h9FmMskMuGeN/9G9+LlHPAoiQk9jlKDUn9yA0MpiGzwLa82E7r1b1u+h2a+InprbSnSLxDq/7p5YGtYVO85Mlg==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.23.tgz", + "integrity": "sha512-JtIT0t8ymkpl6YlmOl6zoSWL5cnCgyLaBdf/SiU/Eg3C13r0NbHZWNT/RDEMKK91Y6t79kTs3vyRcNZbfu5a8g==", "dev": true, "optional": true }, "esbuild-windows-arm64": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.11.tgz", - "integrity": "sha512-dZp7Krv13KpwKklt9/1vBFBMqxEQIO6ri7Azf8C+ob4zOegpJmha2XY9VVWP/OyQ0OWk6cEeIzMJwInRZrzBUQ==", + "version": "0.14.23", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.23.tgz", + "integrity": "sha512-cTFaQqT2+ik9e4hePvYtRZQ3pqOvKDVNarzql0VFIzhc0tru/ZgdLoXd6epLiKT+SzoSce6V9YJ+nn6RCn6SHw==", "dev": true, "optional": true }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -5222,6 +5767,12 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, "get-intrinsic": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", @@ -5664,28 +6215,28 @@ } }, "lit": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lit/-/lit-2.0.2.tgz", - "integrity": "sha512-hKA/1YaSB+P+DvKWuR2q1Xzy/iayhNrJ3aveD0OQ9CKn6wUjsdnF/7LavDOJsKP/K5jzW/kXsuduPgRvTFrFJw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-2.2.0.tgz", + "integrity": "sha512-FDyxUuczo6cJJY/2Bkgfh1872U4ikUvmK1Cb6+lYC1CW+QOo8CaWXCpvPKFzYsz0ojUxoruBLVrECc7VI2f1dQ==", "requires": { - "@lit/reactive-element": "^1.0.0", - "lit-element": "^3.0.0", - "lit-html": "^2.0.0" + "@lit/reactive-element": "^1.3.0", + "lit-element": "^3.2.0", + "lit-html": "^2.2.0" } }, "lit-element": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.0.0.tgz", - "integrity": "sha512-oPqRhhBBhs+AlI62QLwtWQNU/bNK/h2L1jI3IDroqZubo6XVAkyNy2dW3CRfjij8mrNlY7wULOfyyKKOnfEePA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.2.0.tgz", + "integrity": "sha512-HbE7yt2SnUtg5DCrWt028oaU4D5F4k/1cntAFHTkzY8ZIa8N0Wmu92PxSxucsQSOXlODFrICkQ5x/tEshKi13g==", "requires": { - "@lit/reactive-element": "^1.0.0", - "lit-html": "^2.0.0" + "@lit/reactive-element": "^1.3.0", + "lit-html": "^2.2.0" } }, "lit-html": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.0.0.tgz", - "integrity": "sha512-tJsCapCmc0vtLj6harqd6HfCxnlt/RSkgowtz4SC9dFE3nSL38Tb33I5HMDiyJsRjQZRTgpVsahrnDrR9wg27w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.2.0.tgz", + "integrity": "sha512-dJnevgV8VkCuOXLWrjQopDE8nSy8CzipZ/ATfYQv7z7Dct4abblcKecf50gkIScuwCTzKvRLgvTgV0zzagW4gA==", "requires": { "@types/trusted-types": "^2.0.2" } @@ -5750,9 +6301,9 @@ } }, "marky": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.2.tgz", - "integrity": "sha512-k1dB2HNeaNyORco8ulVEhctyEGkKHb2YWAhDsxeFlW2nROIirsctBYzKwwS3Vza+sKTS1zO4Z+n9/+9WbGLIxQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.4.tgz", + "integrity": "sha512-zd2/GiSn6U3/jeFVZ0J9CA1LzQ8RfIVvXkb/U0swFHF/zT+dVohTAWjmo2DcIuofmIIIROlwTbd+shSeXmxr0w==", "dev": true }, "media-typer": { @@ -5799,9 +6350,9 @@ "dev": true }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -5838,9 +6389,9 @@ "dev": true }, "nanoid": { - "version": "3.1.28", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.28.tgz", - "integrity": "sha512-gSu9VZ2HtmoKYe/lmyPFES5nknFrHa+/DT9muUFWFMi6Jh9E1I7bkvlQ8xxf1Kos9pi9o8lBnIOkatMhKX/YUw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", "dev": true }, "negotiator": { @@ -5850,9 +6401,9 @@ "dev": true }, "node-fetch": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", - "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, "requires": { "whatwg-url": "^5.0.0" @@ -6079,29 +6630,29 @@ "dev": true }, "puppeteer-core": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-11.0.0.tgz", - "integrity": "sha512-hfQ39KNP0qKplQ86iaCNXHH9zpWlV01UFdggt2qffgWeCBF9KMavwP/k/iK/JidPPWfOnKZhDLSHZVSUr73DtA==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.3.2.tgz", + "integrity": "sha512-9T8deXmLWf55/RvDpl32vP68stTufqvtj6fc9hH09ZwCLh5IwnN9Z0MWHfDMTLiW6MUpW2Flx5CQWt1SCUT47g==", "dev": true, "requires": { - "debug": "4.3.2", - "devtools-protocol": "0.0.901419", + "cross-fetch": "3.1.5", + "debug": "4.3.3", + "devtools-protocol": "0.0.960912", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.0", - "node-fetch": "2.6.5", "pkg-dir": "4.2.0", "progress": "2.0.3", "proxy-from-env": "1.1.0", "rimraf": "3.0.2", "tar-fs": "2.1.1", "unbzip2-stream": "1.4.3", - "ws": "8.2.3" + "ws": "8.5.0" }, "dependencies": { "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", "dev": true, "requires": {} } @@ -6187,6 +6738,12 @@ "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", "dev": true }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, "resolve": { "version": "1.21.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz", @@ -6283,6 +6840,15 @@ "queue-microtask": "^1.2.2" } }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -6376,6 +6942,12 @@ "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true }, + "spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", + "dev": true + }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -6515,6 +7087,18 @@ "punycode": "^2.1.1" } }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "tsscmp": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", @@ -6543,6 +7127,12 @@ "mime-types": "~2.1.24" } }, + "typescript": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", + "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", + "dev": true + }, "typical": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", @@ -6671,12 +7261,39 @@ "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", "dev": true }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", diff --git a/package.json b/package.json index d6c647f..5456c92 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,11 @@ "email": "suns@simulationworks.com", "url": "https://blog.firsov.net/" }, - "version": "1.0.13", + "version": "1.1.0", "browser": "index.js", "module": "index.js", + "type": "module", + "types": "src/CssChain.d.ts", "exports": { ".": "index.js" }, @@ -26,17 +28,19 @@ "build": "bash build.sh", "start": "web-dev-server --hmr", "test": "bash test.sh", - "test:watch": "web-test-runner --watch" + "test:watch": "tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wtr --watch\"" }, "dependencies": { - "css-chain": "^1.0.13", - "lit": "^2.0.2" + "css-chain": "^1.1.0", + "lit": "^2.2.0" }, "devDependencies": { - "@open-wc/testing": "^3.0.3", + "@open-wc/testing": "^3.0.4", "@web/dev-server": "^0.1.29", - "@web/test-runner": "^0.13.25", - "esbuild": "^0.14.11" + "@web/test-runner": "^0.13.27", + "concurrently": "^7.0.0", + "esbuild": "^0.14.23", + "typescript": "^4.5.5" }, "customElements": "custom-elements.json" } diff --git a/src/CssChainElement.js b/src/CssChainElement.js index b7ca0b5..5f75c5f 100644 --- a/src/CssChainElement.js +++ b/src/CssChainElement.js @@ -27,7 +27,7 @@ CssChainElement extends HTMLElement $( ...arr ){ return $( this.shadowRoot ).$(...arr); } __increment() - { const slotContent = this.$().slot().text(); + { const slotContent = this.$().slots().txt(); this.$('b').innerHTML += `${ slotContent }`; this.counter = this.$('input').value = this.$('span').length; } diff --git a/src/HTMLElementMixin.d.ts b/src/HTMLElementMixin.d.ts new file mode 120000 index 0000000..cc7c020 --- /dev/null +++ b/src/HTMLElementMixin.d.ts @@ -0,0 +1 @@ +../node_modules/css-chain/HTMLElementMixin.d.ts \ No newline at end of file diff --git a/src/PokeApi-Explorer.js b/src/PokeApi-Explorer.js index 0a777fe..8185393 100644 --- a/src/PokeApi-Explorer.js +++ b/src/PokeApi-Explorer.js @@ -1,6 +1,6 @@ import FetchElement from 'https://unpkg.com/slotted-element@1.0.3/fetch-element.js'; -import { CssChain as $$ } from "https://unpkg.com/css-chain@1/CssChain.js"; -// import { CssChain as $$ } from "./CssChain.js"; +// import { CssChain as $$ } from "https://unpkg.com/css-chain@1/CssChain.js"; +import { CssChain as $$ } from "./CssChain.js"; const arr2str = (arr,cb, separator='') => arr.map(cb).join(separator) , isImg = url => url && url.endsWith && ['png','gif','svg'].find( x=>url.endsWith(x) ); @@ -26,7 +26,7 @@ window.customElements.define('pokemon-link-element', $('a').on('click', async e=> { e.preventDefault(); if(this.loaded) - return $('dl').clear(), this.loaded=0; + return $('dl').erase(), this.loaded=0; this.loaded =1; const d = await ( await fetch(url) ).json(); $('dl').html( render(d) ); @@ -127,33 +127,33 @@ const getPokeList = async () => , onSelected = async (p) => $$('pokemon-info-element').attr( 'src', p.url ) , getPokemonId = p=> ( arr=>(arr.pop(), arr.pop()) )( p.url.split('/') ) , getImgByPokemon = p =>`https://unpkg.com/pokeapi-sprites@2.0.2/sprites/pokemon/other/dream-world/${getPokemonId(p)}.svg` -, $template = $.slot('slot-select') +, $template = $.slots('slot-select') , $listContainer = $template.parent().$('dl') , renderList = async()=> { const page = await getPokeList(); - $listContainer.clear(); + $listContainer.erase(); // yield version if( offset ) // call chain with callbacks version $listContainer.append( $template.clone( page.results, (cloned, p,i)=> - $$(cloned) - .prop('hidden', false ) - .prop('checked', !i, 'input') - .prop('src', getImgByPokemon( p ), 'img') - .on('click', ()=>onSelected(p) ) - .slot( 'index', offset + i ) - .slot( 'name', p.name ) ) ); + $$(cloned) + .prop('hidden', false ) + .prop('checked', !i, 'input') + .prop('src', getImgByPokemon( p ), 'img') + .on('click', ()=>onSelected(p) ) + .slots( 'index', ''+(offset + i) ) + .slots( 'name', p.name ) ) ); else // same without call chain, just as show case of HTMLElement API in CssChain page.results.forEach( (p,i)=> { const $c = $template.clone(); $c.hidden = false; $c.$('input').checked = !i; - $c.slot( 'index' ).innerText = offset + i; - $c.slot( 'name' ).innerText = p.name; + $c.slots( 'index' ).innerText = ''+(offset + i); + $c.slots( 'name' ).innerText = p.name; $c.on('click', ()=>onSelected(p) ) $c.$('img').src = getImgByPokemon( p ); $listContainer.append($c); @@ -167,6 +167,6 @@ const getPokeList = async () => }; $template.remove(); const firstPage = await renderList() -$.slot('counter').text( firstPage.count ); +$.slots('counter').txt( firstPage.count ); prevBtn.onclick = ()=> renderList( offset-=limit ); nextBtn.onclick = ()=> renderList( offset+=limit ); diff --git a/src/slots-light-vs-shadow.html b/src/slots-light-vs-shadow.html index 922b4c7..48294de 100644 --- a/src/slots-light-vs-shadow.html +++ b/src/slots-light-vs-shadow.html @@ -347,8 +347,8 @@

{ - const lightText = $($(test_basic).parent().$('.light #host')[0] ).text().replace( /\s+/g ,' ').trim(); - const shadowText = $($(test_basic).parent().$('.shadow #host').shadowRoot).text().replace( /\s+/g ,' ').trim(); + const lightText = $($(test_basic).parent().$('.light #host')[0] ).txt().replace( /\s+/g ,' ').trim(); + const shadowText = $($(test_basic).parent().$('.shadow #host').shadowRoot).txt().replace( /\s+/g ,' ').trim(); expect(lightText).to.equal(shadowText); expect(lightText).to.equal('before slot slot1 override after slot'); @@ -367,7 +367,7 @@

{ expect($(test_basic_closed).parent().$('.shadow #host').shadowRoot).to.equal(null);// closed shadow mode makes shadowRoot not available by JS - const lightText = $($(test_basic_closed).parent().$('.light #host')[0] ).text().replace( /\s+/g ,' ').trim(); + const lightText = $($(test_basic_closed).parent().$('.light #host')[0] ).txt().replace( /\s+/g ,' ').trim(); expect(lightText).to.equal('before slot slot1 override after slot'); }); test(() => { @@ -383,8 +383,8 @@

{ - const slotLight = $(test_slot_not_in_shadow).parent().$('.light' ).slot(); - const slotShadow = $(test_slot_not_in_shadow).parent().$('.shadow').slot(); + const slotLight = $(test_slot_not_in_shadow).parent().$('.light' ).slots(); + const slotShadow = $(test_slot_not_in_shadow).parent().$('.shadow').slots(); expect(slotLight .assignedNodes ().length).to.equal(0); expect(slotShadow.assignedNodes ().length).to.equal(0); expect(slotLight .assignedElements().length).to.equal(0); @@ -445,20 +445,20 @@

{ let n = createTestTree(test_no_direct_host_child); @@ -474,12 +474,12 @@

{ let n = createTestTree(test_default_slot); @@ -493,14 +493,14 @@

{ let n = createTestTree(test_slot_in_slot); @@ -513,13 +513,13 @@

{ let n = createTestTree(test_slot_is_assigned_to_slot); @@ -538,13 +538,13 @@

{ let n = createTestTree(test_open_closed); @@ -564,18 +564,18 @@

{ let n = createTestTree(test_closed_closed); @@ -597,7 +597,7 @@

closed as DOM is not available for JS const light = $(test_open_closed).parent().$('.light' ); - expect( light.$('#host1').text() ).to.equal( '#c1' ); + expect( light.$('#host1').txt() ).to.equal( '#c1' ); }); test(() => { let n = createTestTree(test_closed_open); @@ -618,7 +618,7 @@

open as DOM is not available for JS const light = $(test_closed_open).parent().$('.light' ); - expect( light.$('#host1').text() ).to.equal( '#c1' ); + expect( light.$('#host1').txt() ).to.equal( '#c1' ); }); test(() => { let n = createTestTree(test_complex); @@ -673,12 +673,12 @@

e.id===s) - || shadow.$('#host1').$('#host2').slot().find( e=>e.id===s) + && ( shadow.$('#host1').slots().find( e=>e.id===s) + || shadow.$('#host1').$('#host2').slots().find( e=>e.id===s) || null ) ); - expect(light.$('#'+k).parentElement || null).to.equal(s && light.$('#host1').slot().find( e=>e.id===s)); + expect(light.$('#'+k).parentElement || null).to.equal(s && light.$('#host1').slots().find( e=>e.id===s)); // node.assignedSlot in light DOM equals the parent slot }; const assert_assignedNodes = (k,arr)=> @@ -741,9 +741,9 @@

{ let n = createTestTree(test_complex); @@ -770,11 +770,11 @@

#d1'); - expect(shadow.$('#host1').slot('slot1').assignedNodes().map( e=>e.id )).to.eql( ['c1', 'd1']); - expect(shadow.$('#d1').assignedSlot).to.eql( shadow.$('#host1').slot('slot1')[0]); + expect(shadow.$('#host1').slots('slot1').assignedNodes().map( e=>e.id )).to.eql( ['c1', 'd1']); + expect(shadow.$('#d1').assignedSlot).to.eql( shadow.$('#host1').slots('slot1')[0]); assert_array_equals(n.s5.assignedNodes({ flatten: true }), [n.c1, d1, n.c5]); - expect( shadow.$('#host1').$('#host2').slot('slot5').assignedNodes({ flatten: true }).map( e=>e.id )).to.eql(['c1','d1','c5']); + expect( shadow.$('#host1').$('#host2').slots('slot5').assignedNodes({ flatten: true }).map( e=>e.id )).to.eql(['c1','d1','c5']); // there is no mutation to test in light dom as content is replaced by template // and no ability to get original children for applying template again @@ -803,7 +803,7 @@

e.nodeType !== 3 ), [n.c5]); - assert_array_equals(shadow.$('#host1').$('#host2').slot('slot6').assignedNodes({ flatten: true }), [n.c1, n.c2, n.c6]); + assert_array_equals(shadow.$('#host1').$('#host2').slots('slot5').assignedNodes({ flatten: true }).filter( e=> e.nodeType !== 3 ), [n.c5]); + assert_array_equals(shadow.$('#host1').$('#host2').slots('slot6').assignedNodes({ flatten: true }), [n.c1, n.c2, n.c6]); // no mutation test on light dom }); diff --git a/src/slots.html b/src/slots.html index 35a75b8..31161f4 100644 --- a/src/slots.html +++ b/src/slots.html @@ -74,11 +74,11 @@

Visual presentation of Slot in shadow DOM from unit test

default slot replacement
outer replacement
- + + slots2innerText.$().slots().txt( (s,i)=>`B${i}`)"> + $().slots().txt( (s,i)=›`B${i}`) 🎨 + + slots2innerHTML.$().slots().html( (s,i)=>`B${i}`)"> + $().slots().html( (s,i)=›`B${i}`) 🎨