From 1c867e276a819b8bcb05ed5f6d048ad0f0776450 Mon Sep 17 00:00:00 2001 From: suns Date: Sun, 27 Mar 2022 23:12:26 -0700 Subject: [PATCH] 1.1.1 --- .gitignore | 7 - BUILD.md | 17 + README.md | 9 +- ToDo.md | 6 + build.sh | 31 + ci/compile.mjs | 15 + coverage/coverage.svg | 10 + coverage/lcov-report/base.css | 224 ++++++ coverage/lcov-report/block-navigation.js | 87 +++ coverage/lcov-report/favicon.png | Bin 0 -> 540 bytes coverage/lcov-report/index.html | 131 ++++ coverage/lcov-report/prettify.css | 1 + coverage/lcov-report/prettify.js | 2 + .../slotted-element/fetch-element.js.html | 118 +++ .../lcov-report/slotted-element/index.html | 131 ++++ .../slotted-element/render/index.html | 116 +++ .../slotted-element/render/json.js.html | 118 +++ .../slotted-element/slotted-element.js.html | 118 +++ coverage/lcov-report/sort-arrow-sprite.png | Bin 0 -> 209 bytes coverage/lcov-report/sorter.js | 196 +++++ coverage/lcov.info | 475 +++++++++++ dist/bundle/demo/Screenshot-fetch-element.png | Bin 0 -> 76120 bytes dist/bundle/demo/confused.svg | 160 ++++ dist/bundle/demo/demo.css | 2 + dist/bundle/demo/demo3-element-a.html | 21 + dist/bundle/demo/demo3-element.html | 24 + dist/bundle/demo/doc.json | 6 + dist/bundle/demo/doc.png | Bin 0 -> 11521 bytes dist/bundle/demo/dwarfs.json | 8 + dist/bundle/demo/embedded.html | 1 + dist/bundle/demo/import-map.importmap | 5 + dist/bundle/demo/index.html | 63 ++ dist/bundle/demo/nav.html | 4 + dist/bundle/demo/render-from-json.html | 47 ++ dist/bundle/demo/render-from-xml.html | 42 + dist/bundle/demo/template-demo.html | 57 ++ dist/bundle/demo/template-with-slots2.html | 16 + dist/bundle/fetch-element.d.ts | 148 ++++ dist/bundle/render/json.js | 21 + dist/bundle/render/json.js.map | 7 + dist/bundle/render/xml.js | 3 + dist/bundle/render/xml.js.map | 7 + dist/bundle/slotted-element.d.ts | 72 ++ dist/bundle/slotted-element.js | 21 + dist/bundle/slotted-element.js.map | 7 + package-lock.json | 739 ++++++++++++++++-- package.json | 12 +- 47 files changed, 3238 insertions(+), 67 deletions(-) create mode 100644 BUILD.md create mode 100644 build.sh create mode 100644 ci/compile.mjs create mode 100644 coverage/coverage.svg create mode 100644 coverage/lcov-report/base.css create mode 100644 coverage/lcov-report/block-navigation.js create mode 100644 coverage/lcov-report/favicon.png create mode 100644 coverage/lcov-report/index.html create mode 100644 coverage/lcov-report/prettify.css create mode 100644 coverage/lcov-report/prettify.js create mode 100644 coverage/lcov-report/slotted-element/fetch-element.js.html create mode 100644 coverage/lcov-report/slotted-element/index.html create mode 100644 coverage/lcov-report/slotted-element/render/index.html create mode 100644 coverage/lcov-report/slotted-element/render/json.js.html create mode 100644 coverage/lcov-report/slotted-element/slotted-element.js.html create mode 100644 coverage/lcov-report/sort-arrow-sprite.png create mode 100644 coverage/lcov-report/sorter.js create mode 100644 coverage/lcov.info create mode 100644 dist/bundle/demo/Screenshot-fetch-element.png create mode 100644 dist/bundle/demo/confused.svg create mode 100644 dist/bundle/demo/demo.css create mode 100644 dist/bundle/demo/demo3-element-a.html create mode 100644 dist/bundle/demo/demo3-element.html create mode 100644 dist/bundle/demo/doc.json create mode 100644 dist/bundle/demo/doc.png create mode 100644 dist/bundle/demo/dwarfs.json create mode 100644 dist/bundle/demo/embedded.html create mode 100644 dist/bundle/demo/import-map.importmap create mode 100644 dist/bundle/demo/index.html create mode 100644 dist/bundle/demo/nav.html create mode 100644 dist/bundle/demo/render-from-json.html create mode 100644 dist/bundle/demo/render-from-xml.html create mode 100644 dist/bundle/demo/template-demo.html create mode 100644 dist/bundle/demo/template-with-slots2.html create mode 100644 dist/bundle/fetch-element.d.ts create mode 100644 dist/bundle/render/json.js create mode 100644 dist/bundle/render/json.js.map create mode 100644 dist/bundle/render/xml.js create mode 100644 dist/bundle/render/xml.js.map create mode 100644 dist/bundle/slotted-element.d.ts create mode 100644 dist/bundle/slotted-element.js create mode 100644 dist/bundle/slotted-element.js.map diff --git a/.gitignore b/.gitignore index 3fd8b75..020ce87 100644 --- a/.gitignore +++ b/.gitignore @@ -9,15 +9,12 @@ /node_modules/ /npm-debug.log -## testing -/coverage/ ## temp folders /.tmp/ # build /_site/ -/dist/ /out-tsc/ storybook-static @@ -42,9 +39,6 @@ pids # Directory for instrumented libs generated by jscoverage/JSCover lib-cov -# Coverage directory used by tools like istanbul -coverage -*.lcov # nyc test coverage .nyc_output @@ -104,7 +98,6 @@ typings/ # Nuxt.js build / generate output .nuxt -dist # Gatsby files .cache/ diff --git a/BUILD.md b/BUILD.md new file mode 100644 index 0000000..63298ca --- /dev/null +++ b/BUILD.md @@ -0,0 +1,17 @@ +# slotted-element development +The sources are used directly from [node_modules/slotted-element](node_modules/slotted-element) + +`npm link slotted-element` would make it linked to locally installed repo which has to be registered by +`npm link` + +The TDD via `npm run test:watch` would allow tests and sources modification and debug in browser. + +[dist/](dist) is holding generated binaries and demo referenced via CDN within main [README.md](README.md) + +# npm run build +Would invoke [build.sh](build.sh) which +* execute `test.sh` to generate [coverage/](coverage) folder with results and [coverage.svg](coverage/coverage.svg) +* cleanup [dist/](dist) folder +* execute compilation by [esbuild](https://esbuild.github.io/) + +Upon release in github and npmjs.org the code with working demo would be populated into CDN. diff --git a/README.md b/README.md index 8f5fa67..b45c1ac 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,10 @@ test suite for `slotted-element` and `fetch-element` [![git][github-image] slotted-element](https://github.com/sashafirsov/slotted-element) -| [demo](https://unpkg.com/slotted-element@1.1.0/demo/index.html) +| [demo](https://unpkg.com/slotted-element-test@1.1.1/dist/bundle/demo/index.html) + +[![NPM version][npm-image]][npm-url] +[![coverage][coverage-image]][coverage-url] # Test @@ -13,3 +16,7 @@ test suite for `slotted-element` and `fetch-element` After test run is located in [coverage/lcov-report/index.html](coverage/lcov-report/index.html) [github-image]: https://cdnjs.cloudflare.com/ajax/libs/octicons/8.5.0/svg/mark-github.svg +[npm-image]: https://img.shields.io/npm/v/slotted-element-test.svg +[npm-url]: https://npmjs.org/package/slotted-element-test +[coverage-image]: https://unpkg.com/slotted-element-test@1.1.1/coverage/coverage.svg +[coverage-url]: https://unpkg.com/slotted-element-test@1.1.1/coverage/lcov-report/index.html diff --git a/ToDo.md b/ToDo.md index cbe0c67..9b01e76 100644 --- a/ToDo.md +++ b/ToDo.md @@ -1,2 +1,8 @@ +* demo in `dist` * update `html-demo-element` version * integrate code coverage as in css-chain +* .d.ts +npx -p typescript tsc **/*.js --declaration --allowJs --emitDeclarationOnly +--outDir types + +* xml diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..d35d247 --- /dev/null +++ b/build.sh @@ -0,0 +1,31 @@ +#node types/generate-mixin.js +bash ./test.sh + +PACKAGE_VERSION=$(node -pe "require('slotted-element/package.json').version") +echo $PACKAGE_VERSION + +BUILD_DIR=dist/esm +SRC_DIR=node_modules/slotted-element +rm -rf dist/* +mkdir dist +#mkdir $BUILD_DIR +#mkdir $BUILD_DIR/demo +#cp $SRC_DIR/demo/* $BUILD_DIR/demo +#cp $SRC_DIR/*.d.ts $BUILD_DIR +#sed "s/..\/src\/css-chain-element.js/css-chain-element.js/" src/demo.html >$BUILD_DIR/demo.html + +TARGET_PARAM=--target=chrome97,firefox95,safari15,edge96 +# https://kangax.github.io/compat-table/es2016plus/ +#esbuild $SRC_DIR/*.js --minify --sourcemap $TARGET_PARAM --outdir=$BUILD_DIR +#esbuild $SRC_DIR/../css-chain/*.js --minify --sourcemap $TARGET_PARAM --outdir=$BUILD_DIR + +# bundle +BUILD_DIR=dist/bundle +mkdir $BUILD_DIR +mkdir $BUILD_DIR/demo +mkdir $BUILD_DIR/render + +cp $SRC_DIR/demo/* $BUILD_DIR/demo +cp $SRC_DIR/*.d.ts $BUILD_DIR +esbuild $SRC_DIR/slotted-element.js --minify --bundle --sourcemap --format=esm $TARGET_PARAM --outdir=$BUILD_DIR +esbuild $SRC_DIR/render/*.js --minify --bundle --sourcemap --format=esm $TARGET_PARAM --outdir=$BUILD_DIR/render diff --git a/ci/compile.mjs b/ci/compile.mjs new file mode 100644 index 0000000..8b27f6b --- /dev/null +++ b/ci/compile.mjs @@ -0,0 +1,15 @@ +import esbuild from 'esbuild'; +import htmlPlugin from '@chialab/esbuild-plugin-html'; + +await esbuild.build({ + entryPoints: ['dist/esm/demo/index.html'], + outdir: 'dist/esm/bundle', + assetNames: 'assets/[name]-[hash]', + chunkNames: '[ext]/[name]-[hash]', + plugins: [ + htmlPlugin({ + // scriptsTarget: 'es6', + // modulesTarget: 'es2020', + }), + ], +}); diff --git a/coverage/coverage.svg b/coverage/coverage.svg new file mode 100644 index 0000000..9d500f8 --- /dev/null +++ b/coverage/coverage.svg @@ -0,0 +1,10 @@ + + + + + coverage + 92.97% + diff --git a/coverage/lcov-report/base.css b/coverage/lcov-report/base.css new file mode 100644 index 0000000..f418035 --- /dev/null +++ b/coverage/lcov-report/base.css @@ -0,0 +1,224 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } +/* dark yellow (gold) */ +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +.medium .chart { border:1px solid #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/coverage/lcov-report/block-navigation.js b/coverage/lcov-report/block-navigation.js new file mode 100644 index 0000000..cc12130 --- /dev/null +++ b/coverage/lcov-report/block-navigation.js @@ -0,0 +1,87 @@ +/* eslint-disable */ +var jumpToCode = (function init() { + // Classes of code we would like to highlight in the file view + var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; + + // Elements to highlight in the file listing view + var fileListingElements = ['td.pct.low']; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selecter that finds elements on the page to which we can jump + var selector = + fileListingElements.join(', ') + + ', ' + + notSelector + + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements + .item(currentIndex) + .classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if ( + typeof currentIndex === 'number' && + currentIndex < missingCoverageElements.length - 1 + ) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + if ( + document.getElementById('fileSearch') === document.activeElement && + document.activeElement != null + ) { + // if we're currently focused on the search input, we don't want to navigate + return; + } + + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +})(); +window.addEventListener('keydown', jumpToCode); diff --git a/coverage/lcov-report/favicon.png b/coverage/lcov-report/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..6691817834a957c938e7f09640a37a645fb31457 GIT binary patch literal 540 zcmV+%0^|LOP)wSzy{h>9elhJ=8GnBQmf?)AI(^#wDA_`!QTxaXXE&bjxo zTGCc%V|W`}Lwz0rDO*qBbGY-M@aNENIZ1rK?nOAibaC*vb%CF;I_~lkJawax%_+1J zLn(#pv_v{f0`v`Cfp6()7MB(>IoTAiQdKxgxX?VyV&KVZ7b$vn<8|Z<9$35C+G_8SH0x6Y(xB&~bmn%r}ceRwbc0000 + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 92.97% + Statements + 278/299 +
+ + +
+ 89.23% + Branches + 58/65 +
+ + +
+ 83.33% + Functions + 35/42 +
+ + +
+ 92.97% + Lines + 278/299 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
slotted-element +
+
91.76%234/25589.47%51/5782.5%33/4091.76%234/255
slotted-element/render +
+
100%44/4487.5%7/8100%2/2100%44/44
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/prettify.css b/coverage/lcov-report/prettify.css new file mode 100644 index 0000000..b317a7c --- /dev/null +++ b/coverage/lcov-report/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/coverage/lcov-report/prettify.js b/coverage/lcov-report/prettify.js new file mode 100644 index 0000000..b322523 --- /dev/null +++ b/coverage/lcov-report/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/coverage/lcov-report/slotted-element/fetch-element.js.html b/coverage/lcov-report/slotted-element/fetch-element.js.html new file mode 100644 index 0000000..6a7519a --- /dev/null +++ b/coverage/lcov-report/slotted-element/fetch-element.js.html @@ -0,0 +1,118 @@ + + + + + + Code coverage report for slotted-element/fetch-element.js + + + + + + + + + +
+
+

All files / slotted-element fetch-element.js

+
+ +
+ 98.65% + Statements + 147/149 +
+ + +
+ 100% + Branches + 40/40 +
+ + +
+ 85.71% + Functions + 24/28 +
+ + +
+ 98.65% + Lines + 147/149 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +120 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0
Unable to lookup source: C:\aWork\slotted-element-test\__wds-outside-root__\1\slotted-element\fetch-element.js (ENOENT: no such file or directory, open 'C:\aWork\slotted-element-test\__wds-outside-root__\1\slotted-element\fetch-element.js')
+Error: Unable to lookup source: C:\aWork\slotted-element-test\__wds-outside-root__\1\slotted-element\fetch-element.js (ENOENT: no such file or directory, open 'C:\aWork\slotted-element-test\__wds-outside-root__\1\slotted-element\fetch-element.js')
+    at Context.defaultSourceLookup [as sourceFinder] (C:\aWork\slotted-element-test\node_modules\istanbul-lib-report\lib\context.js:17:15)
+    at Context.getSource (C:\aWork\slotted-element-test\node_modules\istanbul-lib-report\lib\context.js:71:21)
+    at annotateSourceCode (C:\aWork\slotted-element-test\node_modules\istanbul-reports\lib\html\annotator.js:232:40)
+    at HtmlReport.onDetail (C:\aWork\slotted-element-test\node_modules\istanbul-reports\lib\html\index.js:414:33)
+    at LcovReport. [as onDetail] (C:\aWork\slotted-element-test\node_modules\istanbul-reports\lib\lcov\index.js:28:23)
+    at Visitor.value (C:\aWork\slotted-element-test\node_modules\istanbul-lib-report\lib\tree.js:38:38)
+    at ReportNode.visit (C:\aWork\slotted-element-test\node_modules\istanbul-lib-report\lib\tree.js:88:21)
+    at C:\aWork\slotted-element-test\node_modules\istanbul-lib-report\lib\tree.js:92:19
+    at Array.forEach ()
+    at ReportNode.visit (C:\aWork\slotted-element-test\node_modules\istanbul-lib-report\lib\tree.js:91:28)
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/slotted-element/index.html b/coverage/lcov-report/slotted-element/index.html new file mode 100644 index 0000000..d90dd73 --- /dev/null +++ b/coverage/lcov-report/slotted-element/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for slotted-element + + + + + + + + + +
+
+

All files slotted-element

+
+ +
+ 91.76% + Statements + 234/255 +
+ + +
+ 89.47% + Branches + 51/57 +
+ + +
+ 82.5% + Functions + 33/40 +
+ + +
+ 91.76% + Lines + 234/255 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
fetch-element.js +
+
98.65%147/149100%40/4085.71%24/2898.65%147/149
slotted-element.js +
+
82.07%87/10664.7%11/1775%9/1282.07%87/106
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/slotted-element/render/index.html b/coverage/lcov-report/slotted-element/render/index.html new file mode 100644 index 0000000..80c0bdd --- /dev/null +++ b/coverage/lcov-report/slotted-element/render/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for slotted-element/render + + + + + + + + + +
+
+

All files slotted-element/render

+
+ +
+ 100% + Statements + 44/44 +
+ + +
+ 87.5% + Branches + 7/8 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 44/44 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
json.js +
+
100%44/4487.5%7/8100%2/2100%44/44
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/slotted-element/render/json.js.html b/coverage/lcov-report/slotted-element/render/json.js.html new file mode 100644 index 0000000..e63396f --- /dev/null +++ b/coverage/lcov-report/slotted-element/render/json.js.html @@ -0,0 +1,118 @@ + + + + + + Code coverage report for slotted-element/render/json.js + + + + + + + + + +
+
+

All files / slotted-element/render json.js

+
+ +
+ 100% + Statements + 44/44 +
+ + +
+ 87.5% + Branches + 7/8 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 44/44 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +120 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0
Unable to lookup source: C:\aWork\slotted-element-test\__wds-outside-root__\1\slotted-element\render\json.js (ENOENT: no such file or directory, open 'C:\aWork\slotted-element-test\__wds-outside-root__\1\slotted-element\render\json.js')
+Error: Unable to lookup source: C:\aWork\slotted-element-test\__wds-outside-root__\1\slotted-element\render\json.js (ENOENT: no such file or directory, open 'C:\aWork\slotted-element-test\__wds-outside-root__\1\slotted-element\render\json.js')
+    at Context.defaultSourceLookup [as sourceFinder] (C:\aWork\slotted-element-test\node_modules\istanbul-lib-report\lib\context.js:17:15)
+    at Context.getSource (C:\aWork\slotted-element-test\node_modules\istanbul-lib-report\lib\context.js:71:21)
+    at annotateSourceCode (C:\aWork\slotted-element-test\node_modules\istanbul-reports\lib\html\annotator.js:232:40)
+    at HtmlReport.onDetail (C:\aWork\slotted-element-test\node_modules\istanbul-reports\lib\html\index.js:414:33)
+    at LcovReport. [as onDetail] (C:\aWork\slotted-element-test\node_modules\istanbul-reports\lib\lcov\index.js:28:23)
+    at Visitor.value (C:\aWork\slotted-element-test\node_modules\istanbul-lib-report\lib\tree.js:38:38)
+    at ReportNode.visit (C:\aWork\slotted-element-test\node_modules\istanbul-lib-report\lib\tree.js:88:21)
+    at C:\aWork\slotted-element-test\node_modules\istanbul-lib-report\lib\tree.js:92:19
+    at Array.forEach ()
+    at ReportNode.visit (C:\aWork\slotted-element-test\node_modules\istanbul-lib-report\lib\tree.js:91:28)
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/slotted-element/slotted-element.js.html b/coverage/lcov-report/slotted-element/slotted-element.js.html new file mode 100644 index 0000000..d9dbc01 --- /dev/null +++ b/coverage/lcov-report/slotted-element/slotted-element.js.html @@ -0,0 +1,118 @@ + + + + + + Code coverage report for slotted-element/slotted-element.js + + + + + + + + + +
+
+

All files / slotted-element slotted-element.js

+
+ +
+ 82.07% + Statements + 87/106 +
+ + +
+ 64.7% + Branches + 11/17 +
+ + +
+ 75% + Functions + 9/12 +
+ + +
+ 82.07% + Lines + 87/106 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +120 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0
Unable to lookup source: C:\aWork\slotted-element-test\__wds-outside-root__\1\slotted-element\slotted-element.js (ENOENT: no such file or directory, open 'C:\aWork\slotted-element-test\__wds-outside-root__\1\slotted-element\slotted-element.js')
+Error: Unable to lookup source: C:\aWork\slotted-element-test\__wds-outside-root__\1\slotted-element\slotted-element.js (ENOENT: no such file or directory, open 'C:\aWork\slotted-element-test\__wds-outside-root__\1\slotted-element\slotted-element.js')
+    at Context.defaultSourceLookup [as sourceFinder] (C:\aWork\slotted-element-test\node_modules\istanbul-lib-report\lib\context.js:17:15)
+    at Context.getSource (C:\aWork\slotted-element-test\node_modules\istanbul-lib-report\lib\context.js:71:21)
+    at annotateSourceCode (C:\aWork\slotted-element-test\node_modules\istanbul-reports\lib\html\annotator.js:232:40)
+    at HtmlReport.onDetail (C:\aWork\slotted-element-test\node_modules\istanbul-reports\lib\html\index.js:414:33)
+    at LcovReport. [as onDetail] (C:\aWork\slotted-element-test\node_modules\istanbul-reports\lib\lcov\index.js:28:23)
+    at Visitor.value (C:\aWork\slotted-element-test\node_modules\istanbul-lib-report\lib\tree.js:38:38)
+    at ReportNode.visit (C:\aWork\slotted-element-test\node_modules\istanbul-lib-report\lib\tree.js:88:21)
+    at C:\aWork\slotted-element-test\node_modules\istanbul-lib-report\lib\tree.js:92:19
+    at Array.forEach ()
+    at ReportNode.visit (C:\aWork\slotted-element-test\node_modules\istanbul-lib-report\lib\tree.js:91:28)
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/sort-arrow-sprite.png b/coverage/lcov-report/sort-arrow-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..03f704a609c6fd0dbfdac63466a7d7c958b5cbf3 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jii$m5978H@?Fn+^JD|Y9yzj{W`447Gxa{7*dM7nnnD-Lb z6^}Hx2)'; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSearchBox(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/coverage/lcov.info b/coverage/lcov.info new file mode 100644 index 0000000..c12760a --- /dev/null +++ b/coverage/lcov.info @@ -0,0 +1,475 @@ +TN: +SF:__wds-outside-root__\1\slotted-element\fetch-element.js +FN:1,wait4DomUpdated +FN:7,done +FN:12,toKebbabCase +FN:19,get observedAttributes +FN:21,get mime2mod +FN:21,application/json +FN:22,text/html +FN:23,text/xml +FN:24,application/xml +FN:25,image/svg+xml +FN:28,get headers +FN:30,abort +FN:32,fetch +FN:34,FetchElement +FN:41,FetchElement.abort +FN:42,FetchElement._fetch +FN:65,get +FN:70,get +FN:71,set +FN:75,connectedCallback +FN:81,attributeChangedCallback +FN:96,onResponse +FN:108,setContent +FN:110,onResult +FN:129,render +FN:130,renderHtml +FN:138,onError +FN:144,getKeys +FNF:28 +FNH:24 +FNDA:1,wait4DomUpdated +FNDA:1,done +FNDA:1,toKebbabCase +FNDA:2,get observedAttributes +FNDA:1,get mime2mod +FNDA:1,application/json +FNDA:1,text/html +FNDA:0,text/xml +FNDA:0,application/xml +FNDA:1,image/svg+xml +FNDA:1,get headers +FNDA:0,abort +FNDA:1,fetch +FNDA:2,FetchElement +FNDA:0,FetchElement.abort +FNDA:1,FetchElement._fetch +FNDA:1,get +FNDA:2,get +FNDA:1,set +FNDA:2,connectedCallback +FNDA:1,attributeChangedCallback +FNDA:1,onResponse +FNDA:1,setContent +FNDA:1,onResult +FNDA:1,render +FNDA:1,renderHtml +FNDA:1,onError +FNDA:1,getKeys +DA:1,2 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:10,1 +DA:11,2 +DA:12,2 +DA:13,1 +DA:14,1 +DA:15,2 +DA:16,2 +DA:17,2 +DA:18,2 +DA:19,2 +DA:20,2 +DA:21,2 +DA:22,1 +DA:23,1 +DA:24,1 +DA:25,1 +DA:26,1 +DA:27,2 +DA:28,2 +DA:29,2 +DA:30,2 +DA:31,2 +DA:32,2 +DA:33,2 +DA:34,2 +DA:35,2 +DA:36,2 +DA:37,2 +DA:38,2 +DA:39,2 +DA:40,2 +DA:41,2 +DA:42,2 +DA:43,1 +DA:44,1 +DA:45,1 +DA:46,1 +DA:47,1 +DA:48,1 +DA:49,1 +DA:50,1 +DA:51,1 +DA:52,1 +DA:53,1 +DA:54,1 +DA:55,1 +DA:56,1 +DA:57,1 +DA:58,1 +DA:59,1 +DA:60,1 +DA:61,1 +DA:62,1 +DA:63,1 +DA:64,2 +DA:65,2 +DA:66,2 +DA:67,2 +DA:68,2 +DA:69,2 +DA:70,2 +DA:71,2 +DA:72,2 +DA:73,2 +DA:74,2 +DA:75,2 +DA:76,2 +DA:77,2 +DA:78,2 +DA:79,2 +DA:80,2 +DA:81,2 +DA:82,1 +DA:83,1 +DA:84,1 +DA:85,0 +DA:86,0 +DA:87,1 +DA:88,1 +DA:89,1 +DA:90,1 +DA:91,1 +DA:92,1 +DA:93,1 +DA:94,1 +DA:95,2 +DA:96,2 +DA:97,1 +DA:98,1 +DA:99,1 +DA:100,1 +DA:101,1 +DA:102,1 +DA:103,1 +DA:104,1 +DA:105,1 +DA:106,1 +DA:107,2 +DA:108,2 +DA:109,2 +DA:110,2 +DA:111,1 +DA:112,1 +DA:113,1 +DA:114,1 +DA:115,1 +DA:116,1 +DA:117,1 +DA:118,1 +DA:119,1 +DA:120,1 +DA:121,1 +DA:122,1 +DA:123,1 +DA:124,1 +DA:125,1 +DA:126,1 +DA:127,1 +DA:128,2 +DA:129,2 +DA:130,2 +DA:131,1 +DA:132,1 +DA:133,1 +DA:134,1 +DA:135,1 +DA:136,1 +DA:137,2 +DA:138,2 +DA:139,1 +DA:140,1 +DA:141,1 +DA:142,1 +DA:143,2 +DA:144,2 +DA:145,2 +DA:146,2 +DA:147,2 +DA:148,2 +DA:149,2 +LF:149 +LH:147 +BRDA:1,0,0,2 +BRDA:1,1,0,2 +BRDA:4,2,0,2 +BRDA:6,3,0,1 +BRDA:8,4,0,1 +BRDA:7,5,0,3 +BRDA:7,6,0,3 +BRDA:12,7,0,2 +BRDA:14,8,0,1 +BRDA:19,9,0,2 +BRDA:21,10,0,2 +BRDA:21,11,0,2 +BRDA:22,12,0,2 +BRDA:25,13,0,2 +BRDA:28,14,0,2 +BRDA:32,15,0,2 +BRDA:34,16,0,2 +BRDA:42,17,0,2 +BRDA:54,18,0,2 +BRDA:60,19,0,1 +BRDA:65,20,0,2 +BRDA:67,21,0,2 +BRDA:68,22,0,2 +BRDA:70,23,0,2 +BRDA:71,24,0,2 +BRDA:75,25,0,2 +BRDA:81,26,0,2 +BRDA:84,27,0,1 +BRDA:88,28,0,1 +BRDA:92,29,0,1 +BRDA:96,30,0,2 +BRDA:108,31,0,2 +BRDA:110,32,0,2 +BRDA:118,33,0,1 +BRDA:122,34,0,1 +BRDA:129,35,0,2 +BRDA:130,36,0,2 +BRDA:138,37,0,2 +BRDA:144,38,0,2 +BRDA:77,39,0,2 +BRF:40 +BRH:40 +end_of_record +TN: +SF:__wds-outside-root__\1\slotted-element\slotted-element.js +FN:7,createNode +FN:13,get observedAttributes +FN:15,connectedCallback +FN:20,attributeChangedCallback +FN:27,$ +FN:29,fetch +FN:35,setContent +FN:48,slotsInit +FN:64,slotOnly +FN:75,slotsClear +FN:80,slotClone +FN:91,slotAdd +FNF:12 +FNH:9 +FNDA:1,createNode +FNDA:1,get observedAttributes +FNDA:1,connectedCallback +FNDA:1,attributeChangedCallback +FNDA:1,$ +FNDA:0,fetch +FNDA:0,setContent +FNDA:1,slotsInit +FNDA:1,slotOnly +FNDA:0,slotsClear +FNDA:1,slotClone +FNDA:1,slotAdd +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:10,1 +DA:11,1 +DA:12,1 +DA:13,1 +DA:14,1 +DA:15,1 +DA:16,1 +DA:17,1 +DA:18,1 +DA:19,1 +DA:20,1 +DA:21,1 +DA:22,1 +DA:23,1 +DA:24,1 +DA:25,1 +DA:26,1 +DA:27,1 +DA:28,1 +DA:29,1 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,1 +DA:35,1 +DA:36,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:44,1 +DA:45,1 +DA:46,1 +DA:47,1 +DA:48,1 +DA:49,1 +DA:50,1 +DA:51,1 +DA:52,1 +DA:53,1 +DA:54,1 +DA:55,1 +DA:56,1 +DA:57,1 +DA:58,1 +DA:59,1 +DA:60,1 +DA:61,1 +DA:62,1 +DA:63,1 +DA:64,1 +DA:65,1 +DA:66,1 +DA:67,1 +DA:68,1 +DA:69,1 +DA:70,1 +DA:71,1 +DA:72,1 +DA:73,1 +DA:74,1 +DA:75,1 +DA:76,0 +DA:77,0 +DA:78,0 +DA:79,1 +DA:80,1 +DA:81,1 +DA:82,1 +DA:83,1 +DA:84,1 +DA:85,0 +DA:86,0 +DA:87,0 +DA:88,0 +DA:89,1 +DA:90,1 +DA:91,1 +DA:92,1 +DA:93,1 +DA:94,1 +DA:95,1 +DA:96,1 +DA:97,1 +DA:98,1 +DA:99,1 +DA:100,1 +DA:101,1 +DA:102,1 +DA:103,1 +DA:104,1 +DA:105,1 +DA:106,1 +LF:106 +LH:87 +BRDA:1,0,0,1 +BRDA:7,1,0,1 +BRDA:13,2,0,1 +BRDA:15,3,0,1 +BRDA:20,4,0,1 +BRDA:23,5,0,0 +BRDA:25,6,0,0 +BRDA:27,7,0,1 +BRDA:48,8,0,1 +BRDA:52,9,0,1 +BRDA:64,10,0,1 +BRDA:69,11,0,0 +BRDA:80,12,0,1 +BRDA:85,13,0,0 +BRDA:91,14,0,1 +BRDA:93,15,0,0 +BRDA:97,16,0,0 +BRF:17 +BRH:11 +end_of_record +TN: +SF:__wds-outside-root__\1\slotted-element\render\json.js +FN:3,render +FN:12,json2table +FNF:2 +FNH:2 +FNDA:1,render +FNDA:1,json2table +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:10,1 +DA:11,1 +DA:12,1 +DA:13,1 +DA:14,1 +DA:15,1 +DA:16,1 +DA:17,1 +DA:18,1 +DA:19,1 +DA:20,1 +DA:21,1 +DA:22,1 +DA:23,1 +DA:24,1 +DA:25,1 +DA:26,1 +DA:27,1 +DA:28,1 +DA:29,1 +DA:30,1 +DA:31,1 +DA:32,1 +DA:33,1 +DA:34,1 +DA:35,1 +DA:36,1 +DA:37,1 +DA:38,1 +DA:39,1 +DA:40,1 +DA:41,1 +DA:42,1 +DA:43,1 +DA:44,1 +LF:44 +LH:44 +BRDA:1,0,0,1 +BRDA:3,1,0,1 +BRDA:12,2,0,1 +BRDA:17,3,0,0 +BRDA:22,4,0,1 +BRDA:23,5,0,1 +BRDA:24,6,0,1 +BRDA:38,7,0,1 +BRF:8 +BRH:7 +end_of_record diff --git a/dist/bundle/demo/Screenshot-fetch-element.png b/dist/bundle/demo/Screenshot-fetch-element.png new file mode 100644 index 0000000000000000000000000000000000000000..dded43e3b782c7f78118d78ce878faa2177ac51d GIT binary patch literal 76120 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 z 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 Z*r|Q5>nfZTin`s z9-pVBmJ0b889#Ba`5eH4c@_}u=lF2|kIJqkaNOx_2pXz*#?do+d>|ZcF0JjkM7>+c z836Hi%2swx2MI)^)$uFv5*8*pdpI;HiVKsstQf;o@3hRe6j|BLRioQ4vU{xWpIh3a zcoyK?9BpFAV-?LBpQ{a%r4IrUbXTlQ<9~Uu@oev5g)<`$&Gvg~Svv^?F^vK*WP+idow9%UgshUdJXiR)^C7Hb@ zy_r8yeW2<1;c9PlqXpN6Uu-^=l_B#9?3rQxpU8Bs%`h2#EkL$Vv6yK_fnFY}z%5`6 zn(V8e3A0N)5v&#waqR5PExYEkD!N%i{TeZ?x|p~Xz*3W)s@^bQ-h9dHWjpze{syFp9$`@N&yO;AX z8Q8p^2O5oq?P+dhMr45Agzw6hhL9fx;GI9(&xSXe?lVa{YwqJ2q_o?+uih4S_(c2R z$e)aMf6j58S6;`hSBZOvrC&0I%zK=6#v1p^l_Ot?G*$VJl!T|<*^-%BF*H_cY3gbi zXb=Nd{h_W7a-lsIclKKF7(_Nz;e1AHO4ut67^LjpOX7ZYxFr3M@-Bv)zt8T`f)GS} zo*N0u;j}i-PVlkwqezZ8im(NOJl;!Yt2g;_i0R4)WSP$|Mp-z-$ib8?mUtluiZe`y7u}l zDl-53iK~Wt5@%4KR*Mrz0UEtZ(+6zQkFz>{q<8Or483L56%kcfUUA>={ueLD zklE6%U+c7lh96M)s9&c@ZICvZhw^(<;kuKZYd|MRY9aH6OVCmX8PLFYKW-| z{t{~;r~K$fw>sUt;NtDC&|bodYmdn<)4n;LIe+&j;NmBlb_q+pO00cZP3*0%Ow@{V zejThq_ng^Y8$0eC@;iIov((eir;=NJZc?3swaWH0SS8pT;eCx~7A^3}%?QDdpMZAD zcxG*WnPZ>?*0}H6{>VjDM{avx6H8F^mTRR|&4Or0=&xIMhSFY)<&oTl*o!Kt zUGopeg%1kkqdd6g>zq_oXwP>AMr|EJ!Q)SKZpaik{x`|tM={pX>%DHhn~zHFRAxx~ zox0n@rOeL`n94_t;tod@!10bWvlMXRQEJL1u(5gK%Bc{9%bP{;W?ss%;klwX)*qz8 zo_y?uvf3Tv5IsmkmP_FgMm7TXWFd_ve0C4~E#C}hT#da}^fxcNFgm#E1`TboKGk)b zHD`{aXeYc&jqP5wkKa+Y`nd*pUzuG>ub-*2b}Ze!2X+5lN%Zr_2|y*~Yw05%_Mfh2 zo^GFpmAb>c{#w63Lv1b!fk3~M@2mgC`$K(TC6bo@B5g1wLG)oAOU2MZBDl;DP4@3BZ}|EPb5)hn+k1&;qI_NXhbHShGB%7VJ**NZCV zX=r+~{C-auN!UfL!2&wt@9WgdhC<;iMUlL-pV}ph30|ox&#r{m0Y0Viv#yO8)vI$0T&#t2-$2aJoIBOn`9s(x_)tR zQ|t7r@!92J1po*)0F<;;@A%N3`gW1W$S=0FbW96ydpT~nn~fIGc%A_MN{%L|_`5XU zgb_QbmzTySWKu7AZ{@l@0Zy`~c<&|vwN%$s941m~NM3zhw^%E28qWZq*GpMPQK!{$ zz}w261ssv)u`DL`!E_?<88|Uu{ei;$-=x2PNnHPvsqKGrnx%S_L(T(NXesm`9@am; zy0(9Te*fuL{bLCH|09|1|NDT#bn(i6-FyGlbom$5#s2^O5qNXL1~!xVGb@;L00V~T zzn@RzSfW0`hyEoVevSU`4$y$<6Oc22e>M0`%&h%S8e-7!$nF2iiQEDRD^J%x>BBPq zXBOiB1}Nl$E}lHuuF<*pg8#(}_{VUVS`GShV%nJh<~F>qm1z7gZ1IoTv7h}9H}XF( z=l{^@_@Ax#-;9?3<#zvYHvhxQ_#Ec=FJ$tM$y3VP{aJLU~(idQkB# z_7!ZI@dwaPy-d9MLKkVPO%!GFZ}iIR-@I&)@q+Wi^Eru_JY*W%DVn>V|M~N60I+Gq zg;rzhf#={Gd=NY4Y5T4FRNX_5h%(=x?9r;1p#23Ba1)%sJ(oZC$>81nAbZJJRn3Ox z=`~DG`kl&Q`CQj2Q;ytXV@kWVtzOIB7alV=x&Y2$ zDx~XV6E~NDegAl<*RB17abY1F%0tyw9=Zg;>r` zZxzQjhR#@Fv%V!h9T_;wDVlJxlRNj{RM7FrpKb95S*%XqgMbkOR}NVsFVm@q-H!a& z+S%9;9GFmE&L_ZMVyXS2M;SXXI$Ofg`RTFj!xs1L7nhKxzONcw7r^jptuFEi_rFUnk~B}KW`GoPaA)>oIacU8{mz?+?yrO(5cL0jKEJ2TOzg1_?&K^ZS& z%Tj+fICk#ELme*bAZs+ed`=rLTKKxX^7mHxvok_GE`Inzox#03S>y1)01ZepD?nBeYQx>`Rv&_S~s!qE$is^QEUF>hzdPT)3 zthPF2&h0UP>IjmDNW|JU>h904#W^qu2@yv&ZVT)TC=7(`*uQ8c_omT7l z;Mv|Ve4wTioNxwcL7LFuQ-=zD8`=UciJvZpfXwNFKw%cD!##?P8*)=9t0Pdu)R9{l zd|^YY@1wI?UB=5fYk_q+sb;g{3aSt>pJ5FKU2CNWT1Zr=;CiT#GRW;iEj?0qMcc}|-4}q0!f1j^~ z=_z#uz2g9Ym$qyJyC5265Wnkl^kTycf7U&JW}ltr?ru|_k~`pSXH*@u2)w3gs{rnL z$I_^dV(BiH%kZ#=_Upm#LeTP^Pqu!^FEvl#qpm!dL9ghoFK5$18UV0Ife}+;r?+7| zg>=d=!IYTW^7-Beb>PbpWd90Od9&7|JjGk}4mPe#iNSc`m1ZlPgh>-RcW)F5bZpn7 zZRoR|9R)Y(P}19ip~J2&-<}&ATsQkk{Dr55crfLF&&}j{2*k(=dl}+5C^hecO=34x zz22lGr+tZfD(WP;eU@(3gpE25Vwx1c?wz8PN;5h3GZ?$9s7e*F z!zCq*!^yjHdrr<^X81$;o63+`{+Uak?K#wG{%*QNwCyd5{9RJg>v^a&E2RX;Bli7KH+oEsMwIx&Q4m_xSV$5RH@tQoXEk7 zzkZ|k^L8{_#;_lQMyK8?V?va#4*F*8;y`W76xtTEyB$OasfN?I+4c?8(9KQDO;uw< z6LSw#GHcE==Q()2x=g?!1&qnrCij4m=2tmj7!uPB7h}W5iDfP)|MYbhkKXKdP1FG1 zq}7_ zoc06Gk!oF)pa(%$WbA%kYN8|~4c6h2pCQm#Q!TOD`&d&K^JtN+>qQ?mt=6Wu z>Tbi2MXQQB17JH-m9j~SWI_z~DVlVC2AFj`mc6za!c8jqq6FSwLU(@ww>zwhfQ-t- zu^MVwZdNgFTbIxc=pM@?_SZxsaMw@|4Mm*f?q{JGOLdr1DElO z9s${QMCCaQJ7p!vZP&Ws44X^f+r&D0&pdR1VXSB4_j1R9=0#B+2XMjD2jh+njJ;p5 z@_u8G)bDw}_5Zp+Gy8w*HJK~SpLkj3>~Ras+Rbq&iD=2c)j1cUhDc`F3vvS*<;Je&UC@eWdWbW!VjqR zv$9<3c81TI#3Z@s<&Oq@>#Pv7HNIS+t-OqqjDF#v`QoXMz5vhgU*?q@iOa;^r&`C^ zGRCqL721nUIv~dYlAlgWokfX`G_Pp!2-*eJyQjAg4A5TE=Ha$N0ffpKer|>^;d+AW z^+-hg%}*f9Af++c-Y{Xi*g@f2tQ@EoLF%=d5nCtZxQ^x?BB~+e;C+$hB<@03b?sW^ z!KaDJVzJkwKKa3tpF9r$PC;M6pC&3+RFNuSDm!gMK|9M>4w2TtFuhC3bfqPrunmR7~~TU7jon2LVVhr>tDqYDr&qwwjfZ zuGrD7W5LkGP%(#(?Ub^n`HRQ97Xk*>s?_M6~SXS7x4g54VsVTbqFGA^W@PqWj> zKn;XA66T}?Iy$-s!F)vNw~k4V8~-j$+`5KV3-0t@s`Dq5TpG@pH`ty{ zDUpl>?Z$W-RcAMjd_123aM)vunja8|^ZINcIIq?c{koVt#QTgT@aUPIJZ{Gl2?@Fg z`3-}P{iN8uwv>3ZXBY(IfBqKK2y&|=j2qf!y>HcxLjof&ft8hmI=cj$-wopXOzHMW zq(YPL;*sdYTm#xFHmW91*-EH+E^VQZ8^k1&X;hI`*_0}9)XMX@f&|swmx~6_=Agd|tGm2^3H@YdFQ0Jx zLZ&$Au5(6mhbO1p9TCfi6l_j$GXx`=Mybf#1h22E4s$BOw>u9DtU5#>IO_*&iWYV{ zVdo_4QGMT5Pv%N($JX81FHGs)CWuGneP=aF#Rz@?gN$w%^}%|*K`~5&5vRugFz_o5 ze-`$Ahe}#Yuh>BrEnOgwGS%tVTKV|l$$XXPty!;_@k83`S@@E^&V^*F@eI&i|4Vl) zc`D=#P+$t49;k^dOwUnuAQsE{f69AKWLu5N7)Xdt@G8*VUbMTN2r^tx26KnCoX_@w z811QM-yCbGT3`Pu!esusVY}aM$j#G8>P^J}pz-@fPwzS}KM`&7+Od=(^Y||&8Jt=H z+l*Pc{TJ303uQ3B=}_#Hr{8U6%id_uUmj{@8BXrb+0KPs`evbQ z9CwEY5~;^Qb_oc#1c_wX^5+e{wOT4Uv@Ji%bAQLbqKJS_TE5>&vb|PZqZ;A;^g
znrdGDc~u+d=~);2DIkBVKFP1@%#p*|uv>PGARt6Zx2M z(M~d9e{>gG?FPleF=yQb4tXtx1WE-fA6L11B#o^r9!SHPMY7}{-Y5$NM`z7U}P8(Z?*!FN+f~R>rG+manNNcD*x)-+F&cIvz zvL2c68SfsPa{Hy4KEuN~owa_oL+XX0_6Bh={QwUrS>GlQSwfgpgeNGaDc+c*4@>z7 zX--(BK@0AU1tCmZ4~>4apH5l<`fU-(u}f=vyK@gO7=>TARUyL!1?$w-<;c(CjNjhS zzTygZ9N#yPQedF!*xq%Gx*3&yP}H?bSIftN(KLNS-j=9B6(eAbPX;s1W_{_@?RQ77 z;X7IEbHX4?0v)={-qcym;Ca${Dcg>>i3fvqsvl;uY!?KWpv8xGtZr0?tV3*DhWw{) z_O|^61Ox^6Zz$*tmy3$EGE@yb)Oj&$EEt%eOY8|MB^OPo3Lv?a8|aq289Q|yi?LJG zX>=Km=qp(aa#Jt})7Ju2?I;#(^+U#8BYt8HD&#iGGVr-4f=!Q60CP1)((v?sG z3?~$BW0GnD2iMH$Y~hvh@vql1mfRcbvSN?vW{z(Wn-E_RL|Y)w;WqUMH59|bsGqkk zTrlSSi}`+bIog*ft+qZuR(0PdnsOe#+>|u8jis`Axv0Y9GUCSyXG;ml{ysR_@bz$x z8iaC0pKRW@WRz{?t}0Gm_V_T4^4UR5ACG>{`nBKomSh8*UbKNUw2Dkj5Z6B&8aA}e zK;{Pt3CXi~2J6<7x~^KWC7v;Nn_s=9*q2=sn8RE7Q-*@t$E_cLsC!??LCEncYZGZT z7xvIqZ|ty{U|*g0_HFl~(Qx}x`Q^FiRZkzRsEjPSrr_gXX0Nw91`j+jv%P=$Zopo1WjY@6Rwnho-;PRM|mV-B^&0wQQ45#0lOr2r&+49CE**kcumv ziE#f?=L(JBld6zdxy1Lj>uicjHOY9!C9Zgei<6w}wE7001k&k{3N>Aj3X5Qky#ei# zxS4w|KVGz<_2-4^LbeB6GcqvvK<>h+?MkVl3~_gk+6Fjyol)lI2Wt+m9<3(N?jDd_ z)8;gcS~k9GyCe~DKDY9*z&#ne#g`hs>E;`61vb5l=&O%LUG_8s_?GCB?z1ox7Nm15 z>jGUbEXMX250tHNf5H0}7)_b6A{rD%ylS4KaDA~a(?~Ifv84rwh86_HYxJP%kT$^$ zv7J>5m+y;hb04JkI=a6)#?MxLy#FFwO>5%wqhEF!spPa+VV%{)PW_ zpl&=7s*qEX|E=DvUPCG5@H@urR-7Qy<1BFJS@$ELfaQ-er_VbhYBVa4XIUfRcQUL; z2bJ_T zWhB+xK2CpoIr{p6B9JM;2c~Gw-^l7vs%#h=9$6403An9|j@5crV0VtRZJHM)Lwjf3 z5ALKO`44wo9w!uGs`P6?hJELhAX?Dps>X% z5_`6+bG9PxJvb?vz0L`J1&(i`~T_bsY zc;A=qpW7>j&@CT#DL7sp`lZCwR||J;$EMqCc_*1cx6C9Q*wZ|I(b>G1(#t9FOw>6{ zWevy)oU$~+dwWV0yoD}$4j4#|wW$fu%(&Zw3547QsrOUQM%HBr@#aIfcF5BOU34x- z{G*f4-Z}XRc?QwA2#hApWhQP8&*KLc9Lh;*gW|O$HM0n8dY53HQ@N<$*LWKsSHoWK zZj86mU+#XBahs+kT*aLOY>0SkBf9_zwESHm7L{Z|@9qNvv%UJ9f(bk`JfSKOeqD|&+dgC zNoejWOYYj_LGCXW?z=vV^_jg|xBxNe#3o>7QatCNVnL8l zjU?7|8HQ`UDujDQEaoF_YA_rw^0dz8v6zNxxf9$*=6HEca};OT=_9Adl3&LVJ=v=F zJvLEGzCc};-EcTUp%6zlY2^+{+W+wY_4RxQYWSnIjWJ$(SvH-lcfRn<_At`d_tjYS z%miwBCt=;GxpM9Fc7#$es_Xun3ZjGYo1~aul=HBpoAJrgSK?z{)W*myxtT$)dKRsB zH9Ff=)OM1Y!C8#aQbcRx5tp})6+_HA`e(Z!8WP*#f~rW@#37qL{8$b7b;~GK(sgtM zhW4>7m4F?sjr+n}p|R(eWY$S;$&skJ4s-7uA%7Rk3LWQ$-KcnK#%r|BovFRq#X9$G zRApDkdVK>5wsqK>gTcGm4eUm+P*ywrx>ZHzfQDv}7>GSz_)A4D%;^!VrYN?Iw_S2E zt8eRZ{NXZNM{?*Wm$lJg3AVMViHj&MGrU!WKmTwyL*o3EUX8G{U+Bgl4|iESN6h-qNB^r!7B$6ao}R*&hq zDDq(r`zsG(>Yk^Drw#HldOp1l!@-`kyK_HTt6`(J^~U@pFOAESDQjF7M)hV~Y(EK1b*SgjqheRwvSbbf2_ zql}-e*`kc}C5T{cO>gu!NiYmc% zc2{S#-ZsSGU=Ligg_b`!!oSR^j1Rs@vRvdg#XC&|ceS6_BBX_n&Fd)i15}B)ZA6_~zb7&{n>#W_OLqNbs?coDS!Btsp%yYc&ydOI_DSNd zsdnm+PGZ??Pif__Cm2%~loygCn$k!^fb-ir!4M*DyJ3ehBcNFxk0$wx9FOT)iB7G=Rx`*q@Ciwc_5x7rbIt` zU9E|h&kPvfLWOn~jsYRn0T^`yVOjmTW$0qiRV=+aQ!AS61^de zxN>M+CCRL_Q2b9sk{A&URg1R%2r~Ve_Puq~MsNz_CGf~Ne_o9I)JYzi-9Znu}J>dSa{HNF4fw z7fG1XC<|bF-Nmf;eu`cc&ZlpQcd+tQ6A|c3I$-J9pL5&&$((Htl5e*E3|b70W;+bC zGEdKt)k;$bdVCEng|&vgd#Y z9n;2|S0dsiZEDFM-D?~Js*gUBpXu)nP1O7SC{+1@%9+!g9LSmL?~WGU#{D+*v`*Cp zIoce<_0S`k@M`8T#wX`Bx^#XOaKk7YUobvdSYX0u&R1QbsWKpTwvZ%zjxTP~hou&~ zrt7+Xo5@^4gI{7u#(dWzF-TU={{QMgRnKnPca_BTg{4J=gb#u*~G~u)v zON=v4%9wH$*#nCkXtC3`b_?k%WC-b#tC~}4RV(*WTpxKjF=7Iq)X)CRcN^kUTOE8h zai|tut2>lb%Xuh)SRkc#Z*aMK`D6*P{Av*X%lKSnH9>iCv*-LTQkGI!k;w5S#wX0D z*UQk0;S$4~$l<8o2!tyz37Hvcd|A&{+pjAGgAXzdi(9<%i#X$YT zX%TFYAMBT>{npMj=lDi{m0!EMYS(`dHnjV?AMrDZK%bZKu)~{OXx1Zc%*E`xiQRZ8uUDs8P|X72>$ciGil5psY$lDcF#)~&;6(5siX(&rug%kSOEw!X7ug03=ra1Mchi)FJck#x!p^vfY z=FLmu9HskHX;$$w}#Rz0?Nc#9>?$L`z{)S)h${IvIKXt;hc^QXS_q}6Hf zHoBm`z3g?fnLD*J))mJIs}c{jepC(d`DBKnof~q5PQ}ku>!$&-xLQ@K51DFC5iv#8 z8ccapN6ma*0xMtvq3FDWIlwC)osm2F_jPq(d1%dA^9c_+s7gx~B1R*)bQ2!-J- zcTBeaTB~lS6D;vew7xk~kixnBfKL+zpn3zz>kFTZAHO+0fzfBZQ2`!4{lRwbT(yPpgV1O?2t3I7 z9ZoOpGp>JRRFl6F=T;>SkbDAgk-1?f@j4FnFNkYh>9QhHsA|MBc6k6|PtmxNT#gMt6S2oP+1MB@9vk)7hDS3{T0rWnG&Wou;FH; z&veB5I210+{Du0ZK|8sS%B8+8bYLbiaZ5%budkFaiTTT|5R<28yVd_NYje|PU&iO6 z?a*9HnGbk*-#n^}_p(S1LBGw_WzpNEPXB_`>VVXgV=n18VdWuH$scU$zl-tVzK}G1 z%WvhcU?FVIAhZKyc4xI`rOAQmI8|v*A{x3Ha#hI$noPI+Q*SgN7__bk6Max5rKP&U6))o4I+|Q#H5l|L0dgJJo zRjTULXdL`V0Mb0Xf~1D z?d`%O{EuL<<@lBFi7_B6=+8^`4g%b0{V99g?i_{#^87}pxGj~IcR%#N()`sB$x@6{ zv3aRNTE}VtmnX=$^SX`MS8yYh7=Ngnm2IEHD^wPr@7ukxp$u8X-bc^1n^(zgAO1i> zh}$}i9+&pT4(o!Z4M=uQ@k#-U0J<6fYo;PXs!1*5{?<&|tiE+8$sXvimW7uf80VaX z36yqLG~tD=ng=Wo)5#t$QO>CU&AuEn?9l76Us<1XT{hk=Pkip#YV;B?Wc40!2rwku zl8en^H(;!<2eJ!{FMtO7US%xHE8_o*$|1K z=c^O%>gJ?4&AmAMSk`W(bqgA&Fz zL}28~cH=w&V`4W~kAoHrbuoNIm6#WiCI&2(v(xIi*q_mSR1wrYUEU_E6X{}|yD)iL zz!a%i?Aq$H`1lgXuG(0QnWPU*B}ZBlAVzUhN5lk zw-}Y9uy*luqOH*3{Bx9Q3DF`=Hy!J3la*gBM@tQ$a!lo_?{K*b1R1I8+4|hdR9b$W z-5{OIoe6s2t^w)U^#A_hqziA~Z@I>lr4OA}bJ5+>9n&Wg?maJTevK2P;lj?Ry_fBoaJbkWx?cS&=$uh; zGOKXj)5)( z&_SU#$k9JE%-f>X6Z!MbKDaGeAv1(wPHB}`Or=p$g^8l zjy^2J-&vM4Lh5{kF2xm`vrjlZ_uM$3{idKM^}CgDRv&RXDc57@2%|K?JW}@5&MGUx z{#bl*7>rbUfGio2nORtKC)#BhR_>AYp~V^yz|m(0@}xqZVmNyGp2OKhDYAF;bPa}T6aHaqu}Kw#LMzC&RjjLG)0Nmzsy zs})z|I!0E1%+4k&^Qd8}tn#(H`1?!oTYEtmHG6Bq>Q;sXiPMGRIEdMBTB?PVWKNyJ zn?2$2_aU~KkwQ~uWCSpNJupqe!;US{S?I{p(&kN2pkRxMBIWAv9cQ-qMaPZHnwC3t z3eEB=kX`Fn=4JJBEqC}qM`_oX$dzA59xvjQmR&>oaM#&$K4d*uq(ogvBWXh&2>7jd zE5}F2HE;{JqyXz<7^1Iv#phR0RiLZIzL@duCrMI*QGYR7RfT<3+X|Gxri;yP0aF-^ zN1}4SXTIPBceF6E?SuaE*=;}8A8y^S%F>fHu`FVA`NAPEpzjMdX4-b&l3`x=Y`9nUoJiO4&)E zvK=Mo8}H~ZpQ*6P<@s77mdXv) zYvPyKBbyt12)=zGg2Fy8rN=0<`Lzv$Z7ehD1lP6Yhi(;1?)ksS8aPWR5C`R9P4hhfQ|L zoA9coa1qmHv}|tAvXAv5v1jnBT}ja1@9hQZSRmNLkYjs~I<@i|$pil*? z$y!UDouVD9U5VeMm_{1}r9$R^?XqS-Z^npR;}vDavZ>5^Lyq0x5#`@X;6cKDKm z=v+=E8#eJnybaOvtMrH_TfW3HpwN69<^RlvlhzDi6Z z%}dQJ3YIu8&-nDa;1|N8qPpi0$61;0Rp~tiS>=as2q5N>4Glu=lFWyd0j*s!+>%Rf ztaTJQ*|}+{MJI{VdUfpLMHg|Xo zdS!tn!NBMFx{KUcl-vQ)R!h0?=EM9L7s4uBugngTCh|G6mu-qqO3){0GgE=y8e~r? z_0B@&=Ai5KAOpE;KbNlkZJGVdYAjEyYt+;j3UwKCNP?h)H1Ny}Tp1EeiO*JT+wR*X z2Axb4oj>dEw*jR%2lJ5j`8Cjl0brWCm~H{7R61PAVnU4I;np2Sfng(#dh@Rnn1W}~VS+k7h@ffTPDH2QJE*5y9;ryZ zL$D}NZv3&Wj-?K;vYCL6XVlMi^a?gII-T+n&txQ$r#dI$wv}>r;}0qdbX`&B9&jE1 zIAL1l@IJil^`y|M>{!eyI^ELjuG>92u{J%6R+DqBC7$AB6BOI}rSNR(6-}41yDkME zWhoDPTJEn$cO+^*9=HrbPtO6#*tTfBq9XmsYRfmKGHSaLOm-ACPi2nRGiQ)ji=>4< zJUjVI@>Eu6-NUin0Hky$+BV<1mgh-c-1ylSF7|)^@6toy zH}NR@Ru!RX*O<*8UyDEfQrrR8nt`9 zpr_<|n1XR6R8OGyOR%VVmCt3sqj;j><0=D0`{95VFI;2m+I8zdd#`HM^+Hhz!}UX8 zt)I`U8t)4{^XhK^P2ljVM+VyNP#IrqRoY@R7)Px$0Z5fueCDE(Q)AJnLB__B^ZbmR z-8;)K{PKG%eEpdNKQ`w#5^VG^ja`A7TE7pv!z7Qn{j9U6W%SS=Pi?+AoGq`{%NSP!T#rxt68 zR(zM#$fIHUkF_&iMD*!=ryqeXsr00FFCUF$PL~1G^zDRGe&!6xfG%r$>M<&D)QMn- zcKRVw;8`%!8w|W05M!Ofa~jvPo|ktd!=F5I`h;?I9qunxQ67b4LHv~dwr76%3h=-# zc>{*F_x`D{MeXR6a)aRI<%9g4XC_HI-(M;i?%#MF zjTwl+Ocsg|IZ7jcl;y4kiKx}Vd<{D1eXTX3*WjHx*{JJjy^xJ4Ny2Tt+;6NxzLhK0@erSofxy&R+Fg zJ6_VvtLT|k7o7KU3SVyIuoPH0L=f+& ze$aYp$`;p`Ul4YK_kQyibwf;ndiCe7HS6`sk%`%Qo0*r9%DSTtxcxv^tLzy*_Zn0h zvz<;X)ObP)pZw~aFoJ(9X7&kAc8HLZp^zHf~PUsZ5`Rhsw3ggHFq+oJN_{r_BV4#3PD*xfLW;Z=w1v|2pZ7hTTlJ6Eink<}(~w zWbebBsAVtFu$2&}lSfA@(Pn)C@yv=Qj6^Xp8yL)?`ny~*N^5$M<5vXG!%r?;TV`z&iE%hMq-k6RFSk<%hA&(Zrxq{HyUFdDHvrwl z0jOIJn26!$#9%-Y!jJ^|N-oio9#;W9eA{FTWA{0|6D9T1_8zuSM#<=I|uvqEg7L$SA^J4*9THGjaCS zIXYAi=;4quOX(~(pat;ytw-QmkGU;)!Jkz>2s*W|BR95P)IVyWX(rIh%s( zDYQMTn&*~2@3VQV2~6GRuWvaTCQcN>KK$J($z_+RYv*UO1DI?Lw{N+%8 zg|!TM4M_ez`5g>Z6qx!I9?fZMX0C(x)-^-Qcj!*2HGTf9g~q^>_@~>`t<8J{veo0T zbHuB;yv>S;VzAZx+UNMQmf7g~hn-k2;LjxEax4xNWs{1W!d~_rH;brWYTrl5`G z(WMQW5x9E#ZTZnKzq6y-9oclT-hsq>#v z_Rh5429^5Jj)nQy3+)IV8Wd@C-Ph#y?5$-GJHB&Mh@j$93Ud4DY~y5-x6Ez3tY`XA zHo0Cvb))Q6re|ut&DhZ5c#=^+d2|4+@_1)idnfnk$n?1zvj)0SI+aG>q_b)e0pAX;h-d@8xXnH<4~eEVYytOpi4+V$eEaR( zdIfPNhv+zm2{{X$bgu6E@$Q#)f3%-_>Idywf&+J%T~S30nn0G@dyR@-k$IZ%H}XhG z;!6yl_=T7J#z|a1#Hk6;9P17tJo<9DXpWbMZr>(wA?FiCnZ9)O^jB@}O#k}Gat8;?Z4~P5vV^6((4H*Z zd^VW9It+S4*Fs&7&XnWo(GI_@8HTX>6fexrEbUGSt8C_`T3%y;EYUQ15B5pYdu|-f zeHFuVK&zMKE-z)-`dQsHO=`YW2X3_9xz*%Bt;AnrEE)I z*LrOY|C)|%ArMc3`;N*SpUvpS^(_(zCuW1~)H7=N6mV$%EZ3;Gh;}z9Poo3XTTwnJzO-`iGk1jAylS_!#Xz-pV?)-O7BbsX5ND z;b0!sZthmBE{66y$Z@w4kfP;MHh^HKanmC+JqVw>D8AVtPB(JrlZo$C=92ndP3D&# zw!J{ta^S8dfqT-A9fUhunmE_ukOSAwUHWlzP$t3RKzN#<8^mMK+O^*Eb|lT%pm{3; zD{5q4VA&e{JH@9#8&ds-4nkUTNABXsYQ+U_`3h~0i|1?WqKCZk$RfPdgN=agM(Rck zEnJETwn5g`K{eAE)_=V6yxLywSo`|6yG8GaRF^p!a=w7J;lS0LM(`T_4l+1|JY0g@ zRuEoMXKDE^=`~+8ic~!tS`0g&sf%RvA1&ofo_{&+J#Jz*ZLhhC`|aB7@Vy~@d&z4t zb@?zRJ>AlIuI`{)IBqm{3AREC8R+@#`Eqji9C82LrrmzgHvwt_v8=#@B`;=xj!Z%_ zoQ|(I4IbOlQz>Vc7g2^S5YY*hEE~3jC*{X|{A72H6OsUlhNP@YJ;)ZK-`wloSOAEj``Go8c%e# zxeESBHFJmmB%F-&asq(X%KcXPnZRua4`IG`bG95ii%7~N4H>HS7Ps9W!SO$+3g(vL zpI3Eq7u@{$bcpRq`s9zh&0iK3YU$LjdytO%M{7Y}!-Of_DBmS4Z`s)P>z;^|fy!@( zw-t_rh|ANj=zqpx(dxWQ2_BQ^r4?H_|6)e9z)9`sK?%EX4+!Ppp*(+{5dE97(I76Y z4rd9ajdlcq38c`NNoE@7W)r-b8iW~@lKoGFLfeso&R2}Sce#? zEUZsnlYroM0hfsM!_>h}@}w-1ORY;S!nf{~TV#u?e482O^h9yJ(`3*`aNDE5-3I@O z_#-Q>xwvhcezm&FmzXvY(L^Qj@>aYi2gXVV$ZMUg#Lwxf{){}&HID~kmop{i!MJe~ z9^CX7%rE)C)Nv!)VU?pbvR>9GpEK*e-9#jhd6m50FCqQpbNSpV?~QO`(pcEkKiYdi zGNpksrS87)5j|`q?DwMKv8emEhb2)rs&GsD5FTla1K%bApP5yn>K2v`LTi4= zk$D6tt&lFO&C$jC&6hzwvKD{BU6)QPcCpQp$}@_LtOYwIMMpfE$SFy>pkOn=jz{$p697ds z_~Ny!QeRrAM60)aLWOEeS*#*je#PLGZYrP`S^P$*q5WPpF+Tr-i{@I4_@mHI&}gQr zr6kzMuAPm!$XMsW2>H*?WN`suGlLFNVSu%Hj58sYU}%i(!8cb|orGfB49c=CW9b!5 z%Q98GY}yTA9}4HtwWS!^F*b~`xc053sK&z2dT9`<%V>sXL8NtOHT#O%9yRPyvC5B* zy3KP-nzF2LEz_IFeBQQH*TFO-R7u;zce7%uk!oGsZl@G}bG{YM z-lNABk7|{Zw`HR|&r^Qgpv8I1rh1pKO(eT@I`MiuELJ)bO6CwyinWQyV-=;r;F3YM2Q#46wt~npSL>9HO@~~F5 z8I;JlO^)Q5&Tq^-c<=xIj7q|reH3zv&LM;TR)A`k5YKl3Ybk3!tcA!hIc&c z%k+2g{it_vi|M01c@0Pd8J!3Np!gtIf4j){T@8Y5D|hQG6I_QfB|dkuW(#&1L$=`k zi`rPxO*Paj9b8bvn_qJfNNjpSFLrqUeY)8BJ>eH1i&c4r<*at@q-dl0-e`ZlP^fb$ z8lYOcYqEO2K=Hf?8qW1=dya6HIm^#wpxE|qh0zkdj)!pgfpkC6 z7>G(Gm(NImb)j);h>x59phevNzCb&_-rTpeQaB%3J~1ItiWD?8dvK84Y# zlX_F(!InYxz2=Wa@p0v%|8e~O;G3DAb&oomE#lWk&44w2BVgpRTa zvju+vYwh=w+0>S^EGjJPSu#7Ap}s1^7^d0Ev{fxwnQDjX>2aw~|Fd&xpe1qbwx3O} zs=c_{I)?-)x-*cYbT7BOY~}9`j@~iRA^sD(qNjzwhWoqT?=rOzGUiXl7Bki&1=Da8 z8QeH;p14n=y9~Nk_(L_2q$1^;p?lVW$}Y|GHHhAJN@$$!t9X|tRo)|WL7vY)yO7A} z9HZRxU5jtl^5fb+jG}9c$VZFQp~A0?SD&xy89HuLM@!P=jXTHijx|xEkMekabQJ9l z?yFFQRhbc!EM;+KvvLvvF8gUu>XZ4x%W-;V9`FMVFDcoloeiE-_cBxI4>{m-WwLK% zHW0iED5H7=#aKHPQ?w0hj$O)RE-!j6jiKXpd^y&4#@lpazKF2BdWj`yn4QIf}`+a(?f zybU$k#3(^$zk%XQK}mA+kODMqcRkGs4Y+&^%4xD7cD{vI`3jO`RexA`2yosD&lDs~ zp9IPP&&re9@BorLfl1k(rDMSFsX!U+)rAAe!98L0cHq*4e4EJk8~t=AcvIfZn#D57 zGj5Ep=b@otuYo6Zf;$0j;@BY}RDA<3P4S|TwNJ z9Bxs3r(@n-IZl{Xtzo}Ow~$Phfksp35H1zB{~Tn+ZwEUSXQsTp1M*}Wi{CH79U|<0lZ3p~q+r&KPPvo?*M5^ml7oR{#EF#U zBnF2JC-3Zs>u?#z$6n0(Q}n3%HZs#k3i`OuwCCmzQn<(-ce3Xd$e}eRr8HOBsg1q= zXs>dy zME4M-4cJJUZLYFAXHs(I>vKAMa@`-+8uMV0a!)G^Z8RJ5yD&WJnGYl%NfoxSQS-6K zv!XH6NZ^J7+6VQ*4ia^GknmtM1G^3Dp~p2;XL=DU@S)YF*E6ygRg-t;6e`xutA064 z%C%&d?}Y44k;mcr%04-oFYI7nI>VbT9|Q*?A%?%%-0|JwSIksugR>Pz!rGu<16qKU z<@w5i@mu9YwWmYp(JVF=Dp7^8{*SAEnnmHBS(2^jg?{^w0)SuhFv%qLlE(3gM*b?_ z=WY5Buf37?Oah0hT-(f-m=0Ru6e$x*fc#ArS+?o#m|k@m@b^?y**c%g3ZjyNxZdq9 z(2PEl{&-^daNWQ4=d5wq8J16Wsc+!?C!~GWxG#g`PiPx%^tE835IF%A;ljEE$-#Gg zz@?8!@TN~e8JW#Yrdh-9>Q{vVDZjN&O@F_IYi^dwQj>~}7tsZxy+O^)xHi*RzmlrG zn9aGp(?$ocN=y#CT#@mVDG!uEJsdeCw26o>)4Wp}$Wb2*0B&Rf@33 z)PmAK>D~#1QH4X#KuY}|6Ao${I zlGtv-_+{U61cgEVI=353;K`IO7R+9hv_fv>pRqE>PB`c^7*M?g=NM=xcf>U2xEq<6 zFyZ&D|9z2-D{}Lg@##tff33mMVsY%B-bo?Pt)srCw;goPG;akl-7jqI53%KWH#%4U zP?SRKDf~vkrt$=&)vaFBNQU{w(L74{^Vf}5hyc=?y{c>MmOWixLw5Q;^Z=39nx{jy z=`IUVlo(uM&X&cc_XNvvluN%{sousxY^qb4Sj z()7Y5He&#hIpjdq1-^QH&MHg6@xt zH}#+iz^no*{MxaUUbD@-P&^O4fM-U4Fvs{LMz6cwgzS@SNN{j)gtU$kCeLYm;EILS zH>XF6C47gZh6c0{5v^R^;r-wMZ#mC_Hme`&`-It*zhQMhbb}bvPYxTX9V$sil5tOL zie`|+`6O20Sx#uFp}L&2&v!jnLL$2{9&s9)Wi11YQ*jGn)Xw?5%iBL39Pl!-)vHyA6GK>r>Rk z5T=ts5~!&+X<`8XH8?f3rjO&HHk#))G>G2`f1jEE(e>F4l5cm@=LG3d_-|hXI;wO* zd3v|Rb5~RK(OXmht0C)&)E-8hO7#564@gW^Z6mj0jFDPyRsKZydiY>%OIRoA8_03j z+@vUaNbkkL`RUxpW-zzr^C2pRfwZY4Ox|rPv9`#i5S$mx`nzh^-KT)-_FcVexk3%% zA9%mKbYtCJ{tKJ~Pi>H;L0`EX(jou3u8 zztC{pyB)ZUqT2;zBfbBrW!`-ji0%#TQh@Wz)eTLDe+l!ft&3vio-Dxj71t7&aqvr%wtwKemi4JnDi>zsVz&mE z^z-6iu)qOwenZr|eb5 ze9=bAfZMiPJw69STZi;!arNQxOS_xK$5YwzyT$q+9~h-aHvQDGnx*F<>)Bp=z zl&c#r?B@LZJ(J0B`nj26Whw@1gGA9=7Lnp$tB@w`hA9k(PyFO+8{O=5U9v0vVv|70 z%mSn!G4D1M-wPd&zU82AE4gVup;@846r;|6Y8y8v0W-b)=bB0v;)*N*eGPDmt1j&3 zh=puCIz7l~$K{bQdNB!M%A~=$&muC^tvM1GkBW-Q^UE?K)JO4JM%#Gp0EVB<+hr1! zU9W0&AY9mE@H`Yi8zxga6rVZU^Gm6XGgz(vW!+Ylh65&k#~4X9#y$Fv0u+a<&7TkY z4D=m_93xQn*(lu)d#U-ltn<9t)lF}!hH@?2_pI4%93W)Pv%w!7l>x1Zzh(T$5wRqG znRlM+@-UBjjN67$&TNYIGWm2T(9AIU8r&r+VUD^YQ4(}FH7wf;^Hm5KW7T`>FvLyX z63&H1T`ImHb2ZvMM_tNKU9Pt^Ak}%KzRG~I=lP=|W8JJ_o_FNgy{|hw$+iX{`#G{&tNPTn(obq4&s(#-h>oV90yn2f?FW4P+92uK{uU2cEEEL2 z^JSW-yut-^MWu#cV7eQ)bl&(0hKvxv0H|BBd>qB2tW>un*Sv_(GZTkK0-mE?Y_%>y z?HDBRXbRWi1nC<3_aog#<@*z+y&q|BwVSCPl17%kibou#Zq(rfR+z?J^G5y=r`&B) z3nsW`riOg&3$;z0v{R%I;JRg6XY;rxV)jL%il68-0|E#)RD(aBn~8CCCP}Uj3zJ?! zTiB{+&%YV2G_$zFwXs{q(3M{D+?o1OBxP6kpg>>Y;DSCdO3dR4Q_ol=x%Z{PsqL$= z{LV$75~JgyaokfoM`LP!QYv|-#MQDAN@3vbvx7^*H8?APy1ByU<&nSnghX7nPJEvrQ&J$w+qB%aBqOA$k1*}cwI;05$%DD7G505;+k?Qe)Z|#Qz(`4!mTBASQYiwaEa^&9e@#0rbcSO$-i;K8m zL{%<&rr6oQkk>SmLtoG^6+{|vE$rp+Lcc}&3lxqwqn}&1*GuoD!;wD)oD0Z0(zvIL zZJ)fpWu|}8b?P)B2yRVOwDIcyZlC=sUH7cvLLH{ZUU97TTc4nfUG^~EoRkJ`V>8FJ z{yJ$TB_?Oxy>y2@uAMHwo`Xl7B}$(;A*f$M;f}TbUd2)`1Y0m(LaNJnHGq^jV?WqW z0DEOIJik{U>gnyr?m0lO3p-~hNvjIRtnY}^|Y{eZ*Y{!WzEkao~GmM}6chRQ=dFT~Oj6}pm> z{OShorV^S?9$-2QVJzQ$6}AE5#Se@LiPf>h^HNRXqs|r_rgEYD_J`*@=fi~M>Fp$q zslSZ*^1Y%7%jTGo??0{2RZV-KBD&fslFMH{n-gm8Tzv827Eu(9k0<` zsk&p=)G8bK`0XXG+;ryBB~Dy&Oly5l_lTL=;gXl}@%toCOfL4_bvk)r*1}l;mXp=4 zLCRQ9XQvJvGsMhLmG`lx)WxD)ziq+ZT_N>q3RT-VqsUKh!Oia^tPqHFfVNv~iF)8}?>NB+08p-s!f~K1(rE zTS(oGXJeiN=5pQhuNJY`eo)!YUNci8nKPQTx$#cdar4*1KN9`bYG2 zoxeWIaMq|avv|*Bw4JTY7V~m#E2q$~B5iQw1s&hcNWRLpH`ag(gs+FIxO+&{*dj3>`w$&6vnlNZ|DbQ5>DRT zruEbV%G|0tZpdcWGZk112J$`P9%0gdoJ~H#N_mb==N4MH9;e#E_HKp!D$Jy)Mh9Io z-|qE@)G2j&&qjFTz3DZ@D?QH`)3XHhIGk%GZ>#m*TEZ9;3CEUzQ6)I0XQeYY4-r20Jh}iXW0UJ;rp`WtJ2z6j&Y|;>4j`@ZxMe2!pvV z!*1-5$EmaLxDv^49+I|VIU%)tG2Z4ZEq;Q`km33xT%EfzAuDi+tpaGEIwiVpw)@mR zpvYz-*+=6xi~cTm&LBj~jR+-&-WW6_e{&gXoX*2Ev$kD0Lz85?$p8K<2`67hu4^=U zb!g9Cs(9$C=~~Y@m_0{9m}wJDb>V6fjQG@a`?Xc`gnQB9(pt+6n;NKbbGA8?eZ;9? zq$tr52Ff@dsBoeLU^6SZoQcHEF*-UQU4Xm=3RSAaT`U9&rSjv_-(9W?!(Sti4T)Nd z%~a94IpCP12wj^O8)?$L;Q(ePL4rD;&U(ml z*(5NZue4obYKMh}h9;q0*D5m?BcPr^$@a{YY}YG!QygChuF~rJ#{hxx>vp8Jn!0-> ziHIG=*T!czxO>{Sbg@3&<@Ey(>Nl0Jl#iq+FrN}NZSE+w?T`GK!sw4p@7d>>s?Vrz zWxZNZd^FQ`nT`bVtQqns$lM@Vb)gqU34yNfq#~tY1OlencqlA$oET*~MT4;MzN)Sn$|F?dOX;Hf&a#TT{8 zb*EAJDW;0fzeeg+p^YTHJULb6Nd6=@nl$@HK2ykg(Ud7pUsmVNx06E)U)#MHI}Mti zqZg}udcvu4klS3A*6j})iy zT3~@l55E--2tPpV}+sB_8Mx;S?1R;p+@bs*vYJ~`$`nNi&?4~Ci z#zP(XoxYbo##24YWhK+wGyk6)GVMf9CC|Tob+UeXKqPs2M2#k<*oY$INW~hdx+T** zpeM2r={Olt<5A09A#pYhU9#w5myxreDWATDDz{oyb9 z%mUM%|NH9uzhk{U zI{EArKm!r^Vn>4`yb!hxOcrSvPCp2!<19bRtcan=>rkd)vOlz^@M%Tyx3+roZ%d4b zmK+hPkMyj8rud-lc9+o$yTUlhWP}}|k5G^>Q31PeM52e`M?_7c`3{#=%<0knui$3LPr}rTg(#BcrjLOwnw7y=b^8N zXw8nFyutYfnde`MLbggUdFwq^=W}Tjn;Aw*;4wz$T&&G-msDZQxe3L_jLqwV?^6xG z4ubG@g$X@BLZtpKF`b@&7ue9#*0G?Q@)A%tp2rW&w?wt$5D_5mTx;fLYGrtuWDDP7 z$dZl=Q#ubw;~%V|KPU^YOD#SJFuxzvQJ#J63$1h9D>8r@s0UEVG+h=e0+3GG> zdMFX!m{)@G%Gq|0UdVdVe_F zy%j6yLYN+-dr?`EE_6aSttnY8xmFqj?8(?*W2;L*b<0Lcg~4i|U8^WH7YeE3+hYF& zwD1_$MULvSp*N>qT&`|42j+uHvDa9FR|i8{;>9e$gfp|I1@vi-bOC+i=@wo?ZWG9*z$}jYt%;9*-gDPOD_t`nG zW<;e1XNym$k{Uismf|!!-NWZ}#-f-a!-0;b3-q0Fxa@i)dHqr9yu^|o%T49DmE=x8 zIwzN? zlE>pUTDan`%HIxZQp|e4O`Bw*1FPm%(4ayCxhN#JMk%H=A zJ)6~B=jEEX`Tdj*&K#uDwBsJMWg$`RpJP_DCfq=dq3;|!90tC(!`PSJzme9#_N&4G zjJ{AvzsSe-tjEic$Bgv;&Pk{1V2FZ75 z=v?$DfN>ClxFL$<+(O(w6(s0;%!qF;srnQ~`_;s=Kdf+`%@4cb|Ly zyzhaqEvz(vi3v73?aMgD5Nu#Pz`6)Lp5OyU!E}3F4v&J>zH$)er5suIR4kMZbo{g- zPA{SOK2ARR7qm>4_Y%YCN_Y4tZxsr7hxAkScl)xV08ie*dZWm;tdW%HC{cmW7NK*# zUq~OAT^)S)W=E})gI`ejYdG6^R(fjb{3NC2Aj)OGCKlr$v9a#XoTUzhZ9Q>zgb0wM zgY{|TKReH^fx{oLxc*SNTcKP6Ha}!Uv)lxGu4H9<&#mym?a;n3JhfeO7`XM56#aPx z^4d!N_H`o$_*N#5AgB2I{x{u=`;G4a11(4>g}cff9>Fbj^_zX1R4ZeH#smg1S$N*M zDI7>1|2)p)%c|L6y4~u z7S(Nmxr5JWT=&%C(_*lqgGb7rt|OvyrUR0(lSFTU8|IVN8H`zE6usN;ytmPz$&pwA z1uDPAFDxo+vj7#m*540a@*I|Q0X6x?uWPj+lPO|LCR8Wj41ene)SQ{w`Zg4ygKt_) zeAc8-^K!?WzCE+OvjQGB5wuV{zl?f_1KJc)(BjV5`W`Rj-w;_{fsj(WA!F(ns6(9? zm7H7$z-|-pX2)+FtTd9elUDxlF@O9i{W+9JA_q)vXSj{u6S;A2WgEF%s?^W#R(u@oBP5*m@RWC~sz;O2R+E7d=P3kXW9u!3! zcBNUu0XCI;c(29U9cc`osdm&$wV67xhsrde<&?d%-&K-Y7-xj6vk3`lzk_(=E&ty$ZJlq!P2gA3+b3@8sr8uI;v4oO+cUDhg@hbzC>ROT$W` zOC7gqmL3}u{^npyx>BKTzp*MG^^pe`xVR8xcgo`^tgPox-I20mrmx=GURWWWa~0og zYPZ|*`oMTS<|-P&T=8cofOfV;ePDls8`%<`?uhw%l(=Y@ELq_8aEQ>z2+?hjjTZf= z@7cbQUp`uNGyjzcgWY3;4KJG-s=4@%D65Vl{0|-DkA$ukVXb_`Io_Ptq1J!7n zIz{<~PL50zl35`fleq-;Ck`}Tt&Bj+tqa-vHcg7J!leJygUx2cTxu{_<*pv0M@%+D)vPO4Uu3Wo{i$;GYf{W`0N5 zY9&4^&^ZZul@Z4q^CR(nihxs^bmA*b@Jc{N84)_!d6C&R6>5fCXN?iPkQ%P|)iie_ zcje#1EHrf20HleC(>xecoONqc0syiY(-xInw>y~?Hx~Us3%Q^bkMs@5hhx-gMJAij ze&jn4`i`u1o-a#9*ix+Yvu9%Bg}m@mKWg@5#)l!QyLMkjBT*)_LgyOWqaZhH%s7J7 zi$)tC7XNyfEV|A5UqLM5XoaVto;T@+1Q51CGCpG%a||XwV(=BKb)P9&Cx(-c4!sl*!I)o%@ZJs1L zVo#0_L2B)?jovh!)R@kN`F!~cUwBfjFptS%@kCuW^eLbQIY^NG%3r1ds&^OE-tBs} zpWA;FlGz@$Q8~Y$&cox^?CqMuKd)^Fjq|Ks5L$<#A{)f~S^A`VS&OwNZA!SMh}k4y z<<9-}LAlCgbXEaeCW9FUbo+X^M-kk)aigoTQDx-p7v+YASdoQa_FBg|=|^IwRuleb zb3o$_>er9kQ9iO4X1krw#Th9=MDmh1OGoi(VM0A}$$~}UH!dbmc&K5h#WP5;2yueH`Lda~SrZ{52$-Q8gch33>YYIQ;HSp^ zUKO5?+h1Nt^$}8`T=;uv4k%o3<${t2(@+aNMwsKnODHKa20|fH*sPPm-Z-jGZuq)c zy_DBpdZ-j1#ic9j%Y07CN57n;V3GU?UXW^j0bL!@MB5{N1qpeQt&2 zJbff|5J;IU_6v*^e=qD@BpgCq?`&idfa+F>Q8ps9E5IL0=EkuwvN+B+&8qySolf&h zcf2s0+Ik&jq@LQe%vT|)uDf^yOic%Q-+#o`H5vil*^p6O{@72I5gHCw?h@h7?@Oio zA5wbz@xx5#6#^glqp%``94dRIJ&S7_~w*m&1Q9EzXP(csp*n%`Z!bxbe z-a`V+Y2E@$i1|xTA#^OqYnn9t- zUU^veyzR>7!rJn}R#XQDWDazA8Hv63t>mgSSv^6igx z%j=Wm>Z;}+ab|szUf*oY){{@!IA(LE5l&#lerUqPVK~sNIM?Ftd@_~1=wt~tFY`J_)_`~-GI=2b{5W9!QL9paO)JLf&ohmdb-bx=f z)Bo5dsVj-l^5EH!UvpXfwR=E#<0_aeFm;%WNtunb+*;hw@9l#B-J*^gbDHB z{cD4n=p7%nUki2Qk~ z9w*oNOhZev>=Ofy=)Szr33(-~?3XEHz+68nu`9-J7~Zkz(}ZMi6(Yn$mVV*CdVi={ zhm*?FYXlrno+R;qg9}d9bvIJDPumS~D&MnL3{VLBKWWXi2;c!>bN(Ojuy;~%h(y}emxb6R!1PQqAU%4$p+enk2`P!&>VMhZQSBCn` zlaQWk&)<||V#)33!_QtMccyp;W6z^7gK>`RaKv}qjwQD=tt0v`Fn21ym{vy2k> z-@$W!^1?*GCPHUkh7z6BSZkBAfWMSw>u{vpqbG}rs2bN5=p4}{59srv?`(({LU1~M z=8MYruKCqJi(4)k-<2!=+#!c%V`wQ=LhNI|8GHTVdmoWV>n)PZigJ8}363w%w;BC5 zLSFXI=X+KtX^W(lMX|Lq)vwTfb6(j>t6F&R+2rb<%BGWihpA@DOp=Vd<#XSn{d>v= zmEaN}m(D*8mFG8a2po6mIw<(j5*Ppyn>5At>C>g?g&8 z+ticMf?K;Q8vJcIrr%e$)Z#%3>p6Myihr`vWdfEHUBu=d&Us_%`2TPMlC>q__fwt- zz;pM$L%|0V?*-_0HoB zZMh^AfNMQ{zN-l?3@$Ev7X45oV{n$!Vu?=8Y8QAh9<|FC$294@9wp`+1iD9Q+iqPxL6$=y$A z_E{+Y9Pwu%7M>$$Kmlxlcam}=j8Ki|alvHH%!v<1|0xFgY^~4 zBkVO-o~wGv{bmYhsf#hi4=H~37fO?a$jiePj-*nD^{+n$YzE<&MB8;$_>D|?FXH;d zvI5_~p}z+T4~5^sO*=NZN^R7{RfG-^t{s%YuYqoJV;*A>Ns~S&>GVsRO05S0rY*P} zE(cB({j}>knT|{;7usiJ<&|%Md6G(4i8AJq`yEMgJ5S<}galjx!G`thO=Hi;2o7Rz zC_>yGw_^TVU*TksvxdsOZ%yo3e+h2V;&wLT{UK2ci5_Yac5bt4UFL{iN=F|f?=}Y^ zmz~3+<$)8-VSo$v=i(uTB~}qCJIk$9kHRG@Rt>J1fi@C=g@T? zCamR#2*;V$XFh9&V)wPaRQ$jAS&u`4|%eks?ngr37Sh0TlW}&R$66GqQQ`NMI1I_GY z8~>-leF5l>uG{2ZZRk*gt2&z+B=0aN&y4UVf9M;qg!i?qLz~H*nNsA$p2(s?gnri_ z)Yn9otrnAMZ$2N)^a;+qi}AQ9mVX*}b&Apc&Bev0Oy6ME(w{XAI1D?HSXtIqjcJJ( zQX(Q87CN&u+iTtJ(5{GE!W;J&Y_)sf;gG#+#jiadIr{a9#NR5`iYT8wjPYaLxN2iB z9Ek0ZFxxkBVVheApcE&?ci%uCW2cArI}ZfOhkRw?I4 z2v+05q$6`{K5b~#`+xUlXj0M>O8FsC)T5!?H{5UWl=|rm@pd)uF&}@*Q7BhyNaXjJ z32qN?fq1*mb7GilAUJmcT9%V43bGO%n~R8Wvgp+o%el$Y36$reGaljD_z=|{r#33Z zB{+@o=(_3*hi2`aDxQso!l$y9%zNY9cXmHzX5< zv9SuqBx+o8{cf5?Gp7wsD?y630^h|&Q9tr9}_tgj3hJ*M2M%w?t8+3=zbvF@ zZKL=kOF)_v@@V%jgD*ceLg==q{8z2*RBLRde%44D>CqUWN7HFioO#!@lhwPDJF-fB zyb(hiXouJJ_>VA?ogWn*w~%{2a(!JyG4=8=->ffrupa2^rb4}|!nG|8DAc;|)R<$! zKTVO&JC;LfjeFm7xrpu49cDIN@foISAYr>4N;}%o5(YJUI*oCd)e$0fwPJkRq(*;w zTCm&0R?G>4C7i$?3q0o@FM#V#SYdnMv6E}Vcmf&*il-v#hnksIS6j9iPZFNi>;o}b zaYd)wvdDxIp&uNJTxtUtfm?2>P@m}yUBT3OZelu_lm3Y!YPJ3c?V6dR%Zqow`BlGe zHfvRkM*CzAdt`hvVLc>I@&eXt^F#pkTPe_`qg0?DQH=1Zq~ZprqVD&}_QwS! zY@efoo7(ziKaxiiIB;gOcJ(;*sz1tb4LaBU&F`iR(go43Yi0D4>v!Zed=SRQ|4fv? z+e{P($k{b0pnYQH2(ud?7S3+c_UCI09pVUhN)cP4CFlbg2LYW9gi*ac_Lo7lTy<*C zg+p)yF5cN!0H{w%giy&43d3I{nJSxDwaj`&^5|cwzHp)VG;m6V=62K4nN&&)UD_bw z{^dKVp{wFRycu=ISUHK<8x^d(Qq;dZg^CLIUjyIYh7o^iU-X$lVfuqiv>M3&QuqIm zu?O)|!=8k~Y!FrEkN?W+L~kO+PX8YGmzIBDX4CvaFxP7KzZ}5ob!zBeNfIGvlmD+$ zDQVDuP0Ig8SSMd_DLlQX-R!@Nzjpn1XmFIbuFU>EPA6E^W&X_|A>j<}N1-V3|8KDV zPc5JRXOzU5PB2}TSSowp(F^|qGe#(EpC`8+1;WO%6ghPdK5I4*KZ)CbD`exKF?X}y!<)KHH;T~?b*L?d^U|N4>2&G0Y}npm6z_smHMl@66~K2 z^11o~>Ga{u62!VircUT&PErs@P)@8x$1<`xKJb{7iGCZic{v`ip_U@Q0t)YMW5=CS zC}~}@Wk)l_A<2DtKZ7ZP`}alHN}BwBDzlr(Qa@~PBD-NH=^Vu$)dSfbI<-0T7q+BH zpv`DT#Y;cNtV>oL!x2|`PqYt))%HP&hwj`>E#BUtDY15(;T6sHYbnXcJuq7^kiS*3 zy?L$C`)s{EuwosIRxT`y!aE;2LW@ty;5u@qhu$Ff+SZv!u5bPRX)RfXhsNG2;Jl6; z%LD4I`Y(GI%$^O*7r1Imo^sx?_UrwlED}0Zact|Rd$uk~!cc$_<>P5wI-HIk?UP9Wr8-g(Ul-AHwWIjc$)^gU#V$8%dirM%leufy{YSu^v*lC zRO!D916W180|mxa1%j1uWhaMbN1V3(w|nn#J#Z&*&jpY5UnVrVgRdCI+m4ly2SBT?;x1e@$dDjeno()VRnX+sWMg<#HVnA04_;svWzDp?moa>qP`EOy z@knOKhPc|S4L*z=htsjo7~a?WwYJYy{{18)O*6x1(b@=^SBXttabQJXrr1S}^Z0bzGdxx2a1WH&3;FLa?-N zpZ1AfWi!@2%-3rwmu56FNdqkmZaREM4oZxhdJqrRGs5t|{1}YOnUlGRLE?*Gozxyu zd*+AGg8{W`hrjYI^iDX7%DBP&QFFFDf!}ThOlx`_Sz;Gpp8OzmKU z+Nq%REv^EOA!kmvp!h;%Pm<{N7L%?Tk7T& zMxx}^s7K$^WzoNg^gUIa#Y23CFY^#q=^ot>wg7>P;)!Y30>d;J@>u$-s3QA^W=w3F^{ILNX8Ow$X0CJ@56&#E_9iVPzp8YQXm$CC zPpmA883WgC+#vp37VGg>*Jfh{C++s+jBBTX28bHLn5v0_l)rliJaFCeJXkGxAPYxe zWteW)z4~4C1;Qpb78a;>c#=11RXkRfEw#Ik>#D*?kUaY{=BbrK+%%P@fAx`^(b7|h zcF>B>+O1xK^KfxW%IwzD{k?k$P@>sk3U-M=;xdax*yVIuiPk0gR4wOCZ@~s4wr`F4BU+BnwsG`r^%Wgf#%&3EO58Q(>9x8 zwZqiX8XC6Eq~uDS_-wYVJ42fuH9Eb4+Z)VE8($WKjEh3&H|l!5n@ds6+LoE=`64G* zO6#i{xP!YvzSWbkui}li$|@UUY1c7zLEe=br5zNbfwKaj%-Oe%TsEpYvf~pn0%*~+ z0$DxcrN-FnzSq<7i3*DsnzF@4(7bZ=4*ZbTsqE_ba4h|+HG1msZjdN%h{cHNItx8n zi2&=5wJG&>Ju}aUqy6V*%bAONKyDvKy2$xrX-0R7TD@^X~!hGU{sH<+lW3R_8M zXIz^pggxwnfFT}=oYci-fPp8E_VZ?aq@>ErBx--=IKM6s+y|6 zWxB-FZC?{jM$s{RQRnFh9?)lNDMt7#Jz3W9zp4Ut5?ZqQYA=fwT-~w^+wo~ydv`5d z{TWxlDGQ+dB_tSt}P@1-6;5g$r=<9M}afEi4 zNimuO-zGRJ`(CUg(bhb}5A6Y^i^;)xJKV=3j%AqsXuQFc5XT)ov-2Ofepm_4jm$1? zu@u@T=@z#S-E_`>Tq*=27Jy zmzj*V1&D;SaS6sj2uz+7RV{hCatc*ztF0Ta+}gRGahIU|aB4ay#w!7fZ;N*o^J?H} za7d#+{_yeq6T}r=0MTA&w-IwO&GsAbZ#S}FCzsQvY|WYbLl&NqP<_raXYg7`LjTQN ziw$0D%-sC3Ps?PP_15Ry=BKfbku_=@euR>cQXj{WKJxN(Q-fhxDiGnRQ7F6JaSs!qtQ%kvT39FqEe7SIpVs+kbTo5^oA z%IyOh*M(%UsKnUl9MiQ<-zZjCA{A_idK~%R9KX_k;-!`xRvGvN|J?ceO<5u^3|58w zJ{IEO{(VgRwIp2u4gFHI`6fXcNN5Eh_cRxqTFwRzvtvt_S)r2=?FvOLA|lbiXMriBqFMKR;3S*Xr*f(x?ny+7n1$5Bue?Zv-(!%7GkrK*^BJm9fP2Ua4f_ zwL3frf{KOEUq%Q!3d0YdgpnTRuO;=KAZ&Z^%(UuEZUgL*nBZcM~`COjC z$mw68v1=B=)pZJVQE%5A9`Y!&x^{L2g*mUs3BF!yBDVc%FZMFk=H&g_=iXB?J}wgG z$A#*$4aA82VB>biHR#D_bEOP3P1<41;FX<~TJ_;)M8 zyq<;-)_z+UB!3EwzH)bg#y|53Oy0)qv%M~c3DowUs@QP3dsd#@tLC({STq!!>h#?d zJ(t}e8`GLSp5XRI*{pCI@Tx)5h&>tCIo94rk`X(--_Js;4^~U4O^uO_QTO1PirCR2 zB#{gsV4b?cj?M+!;lwZB(5Zrn%Kg+TM>u`SSE~ z4!d(pXhDMX^%aVn8%936_RrR3W!?Ch;iF_E7x#yP%@wcwyUo5{#S;t$KX{TFHK9y> z0ksBq`PJKelcV(-Kk@Aj6tQ`VD6{02Y8}rIqOWd4f~XhNLb=g?fQIAVD!@GTlh)cR27?BE6oG-B{$lzEq+?Eq3UmN z7pliY*ef|Z>+OU)t+Sz(PX&@ekPGk53DGnId*Z#`^#-?T=aX+ScwlJK)0vVC9WMNZ zjZX##bilN%6!mW^HZO-4KEVitIQnV?IZVitV;5Qoo_B#Vid%^nHiz^t9#JK##I`0_ zsvmxT>q3Y{rQJ7cGmAZ6KhGNIi#YP`aL9o~fyG=G1e)L#6w(9hhJhEVj@6wDZtFgJlARFTiC{XZMB1lW`f=CN2YWz)-CEI~&}f_2uX>6d|g zPlj?8=ngSKZ~&xUGZp;p)b=9Wc(~puzX~D=JYpWT|ICO(stkByN@ztk@-iR_3|HFE z{fbG;@#Pidevu&LLrnG}*!!(&>#Q&;Szuk` zL{$kg=c>q%^Yf0F0Fv;47n3UU(#rY%3IC?vEey@xb%4Kb$H3 zYw&cbyUA$IY|W*R2w^Qp&C@$0lZ&(!LJw`4brtd*9i^qM1m&)zCuni1EI$Obdio5- zH5%y%QjByw5gjyILbyHJZeIKp)=cl_A#kpOMkLpx%l55ayXe*|(!>eqkk(s!s4Cp_ z`#+L#!W8I2&)ig!(51gCk{TZ}8uL?5=z61uS&7c4eYt*~(9HsRh|X;YRh}s8yyx6_ zab^7^GUHh=VdrzwrEu*J{Z(7_o{hq5ftN*Rvl-zl#a>oI=> zbca9A6ewE0F$ND(MUEU)B*zOg@Hi_g>{*RzR=V9vv~9KQuqM`NevI9RY*qLS!%j%_ z3{waOzj$uiDav#M6W&A%pse=%7G4Ud0h8A?(ZV30@H<&O-IrW=*=2&D;d}pc9^#3v zPZL{(D+55(r2myWz2CPHOfVa2-Jc%fr~dCLTRbU3vaR>hL{@}enAUEcg6w!b->EPg zG3zzB$2Go~NO~2d!?F@tifE9$gmZP9%cvg7d_JV$qzd>T#~*wF}%I@)>bm*lN1F#@jZt5uvg8mX}5i0k_vB@=4$ z7v9R-(nSAgmPTuEXLmrpH|B5e<>uN{7O1Zgpjww9!ox1RH_cGWDV*E^w_ znT+jFx#oY}P`AL;vrMe?Qj+rG23l)%8g2M@Nt_q=GG;$s6dN?l3`qIRZBBJku7!uL zPbS2!KFg{$_0rS2JrQH42by*{UQPN3lIBXg)^UCEuv;))y)H_yBeBd5GOYmAHIW1T z=%{l%j)IcBd3Gmm(3}OwlmW;vJukh8IxIYlmK&R$AqO%;qMo|bK<)UZVFfC;50#+z z>@Q|l|EfOOQ2hx;#;0{|krLj>epmC8;W1r7eB5|vHZi$ad>KXIeu!0`N&t4#T^(;| z1@W_6y_IvvDc-KvYnamaUaboFbhrLS+!dloR?0JZ}XvzlrZg7#*i` zUH3W09npF1q6Ys2iB&U{6W0{4*BAl7teuI$8w4x6^-HfpDT0;^(G7(Xgsb3QaQ<93MJt&^kwIb0N;*((%qeU9ZtZ%nHXgdjnDh~oZBMDAfKk5< zP3wj>?v=YYXX@6K7D5&(VAA2K3YD^t#mZUl4X2|5yUG)WA1ek(C8QNw?CGak({oBS zfy1ZSyC@qYz1qbXg&FX61)whRUydz^cs`FEA5L2koU#~ieYrcNE3JC|)RRS}FX6sS z;~f4~7@6?Nv?w)zu8U2)1oqnnO)jv`*?pwu5A$tte2O;C?+quMmlr;?!pQ)Ay8%?- zIM8Rj^2^h@8#xW{7VNibrswpj?i!e{lfbAcmcm_!zXDFC>3?)>;B7GnNd3pJJi+*& zHW+(mZeu~iR$J$pAh3yLZmZl6b@v7wCC^PD5_Ngy?1ca+Z-WAUA1##>OT12yTZryd z^ZA7*dYgV|A(M?Gumvi9p`+mvA2tu;KsrZz>pxq`dpAzJ}6;03&XLXr8@E<#1KB%p{VC~DJJ_zCH>ad2Ye?u2X z<|bI7z39Uq7op>%VFGA)d|b1-rjiPfd>~ia2{-`?c=ZI#57%nOU0Sr|XB+)v;qV3A zvExXuryH3fY|4|4WFLfO8VSxb_lh>^MPkC`(0zQ{m%s3*QY_i4mAl!zRLljj=lsVx zk*uDTW1w>9`k0zKSEjMpU&*nH%N3}p56{P7Ejz$Q|BYKX7)T_yWwE%L>cTa|l^TM3|i@KJ%aJwZk)q(V{!WanemRnH3KG z+9vaI@Dw)PB4)Y6Mu<4reGmNa(vd_bD_3c!8O5?PO^g*!4z1faG(EGR_H7wCv2ky= zAhcR?1H?fGKYqs_5dz?0D`hO?Z6k>ouZ*IS%JXIU6V{WNLklt$yMQLkHj<(zE0qtd z%o7Dw!sZBRF$y#g^!kf+oB@-u#18FjKs9EpcX+HlTk@EmFCM40sl=0CBawxQ`@LhZ z{-qmGx*2b8EMMy#Y^;18E_WX2VM<@$!G7oxFGt8w>`})HTw@AsEdSNA^znRjcZK)9 zy=rn3iBJmnD+Q2Ni|Qz~yI8~@PRl$d?sajX^CpdFDX6Y~yI~G#*$_Ezu^#KXr#bs{ zDyry7M$=<9oE<{r7#^&*KWp$wHSE5KCo|kuL5}t73I_54KjXBi{EZxZ3xr6HOH`w35qQtw8QO4V_|2hpL@!#^oY#HB~@?nD@B&1Sw+ER zKwi!|2G4k4O74UyHhqFeT?p_X{%Jt|7WMRT*k<;>%@KWQdHJ>?OEmBM{K=2v*JL@e zkV=xv6ExS;Fs1NLru@(A*v>SIeko+qX1Q&#Icgn^>3QmzD>Hk-R{Us~PJSq4}805U7RCHRBbccYxzx z2wioQO{YzEIg>fapc|5H*aGFU(-SrSiL;cKi1%SN^HQ-E@wavcZdC0o#p)x7P~wOD z49(JvPgl=K-4r40-t#~uc8+IR&f-aZs8vDKZl)n)(sAtGszoh&x#muv`WiplSF!cl zi8Hi4*A{frX72;{vIPn~pgA@?U1CSlh^{yUk9C-xKihjRGN(b~Ob(pzU7cPwzcpID zY$#xkgoHOQD7M(20DeQ*0eG(H$Xr1~G;y?ByAiu>sj`5C3&P{{!@0bSp(2n-9qqg) z(hDXx&K*z}Gr%0UT;qKl%wLrc#qHHgV9<$Y-S3Z1gSnEwswnCwNQ;7jHbZB^s3nie zC49KJa$52u#G^jtBSy?QP)Z*cdtfA}xb*xJRUDeInbvzbrNS8d8#$y?T+wexoEoD}VUnR-0nS z?)`z7NjuQ*q4-w{8x|xhX)mDz zeJGbdvu}Q|i;|WmjRx}K?2K)AS!c&p8;y4LZ~E%vWuTDsGiHikHl>E|9`BwHnW(q! zecHm2 zh3el`bpqB1Zryl3MyGK&lU5i(X4zlJRfBGEl+@|MJzqG}f!Hr?ua+?Q!a=+>PRJN) zZU*_`!*S-PS>!EZ-x@dBI#q(y!9p3b+!U>AuL+L-R>z;1#^@9p#PuSW_>GSy;oZ5P zu27($bMyJs<4M=5uR#xJ+33C;Msy)G*eHHv z10WAaeT}O!mFdb=jSv1Zl}V$cTl~S|QBGE`(vgNmt~w5vCR$1v-^1-3VOk|#jl#RA zxuI-)%sHqwxP8@i)k}_iA0sBG2FQ+o#HYT6ZEN*g6zY2LB;{=s7t$6bk-=iM=?pHu zM6OVkhMPCLQ7FAw-=1tZX<&KruREgnvlx5cZ)vpP?*12 zDRC}0I(X9wb4VcKO0=kJK!~fL3zFJW%rS5+s+AP6ewb@8E8nPwBo)Vz$SB<25?9NC zCW3s$byJ{dPsCLi>XkuB_w1chpo=xvhsigp0x?&L2d$$Q7`t?1{b?S$p}5iEtsV^* z%SC1;2M9|#=Yl4ALwLezJejm7=T|N|CqAp4V>8MAAp%y)0WdU&zB$oZH;&^4cVXz` zrbLTSM6t*&Tt@=mciM(xTayP$+k3y28VHt=FK+hd+6=NB;*Bn5T|o53?Kd_rHRRJw zxS8p~s_jzk5>*Mp0#+ez(#S1_xUDwtu7vs(4}@K{Ud-+Cjb@_;xNs5R#}hN!=j0#n z=EjZbUvmUkVDPjf!Y`_qaof4o+^WmE$3$m8m@R^iH(#&L=BagYm+u{b5Q*m#UvY5f zScwT(YPvj1m{c#xRw=zgIGM6go0$tjvyJ9a%!u?Mbc`wNqva(Ll$$J?c>Ky|)Yvh? zFiG4f{Zyv`Zb#|FWbW`p$)vOZs~5H-^s5$9ag%cbMVGp^K}~DpI=8gt;X3v~j-Mwf z&N_zO-&tv;A{DGA!jze1d<2rDEw&AT?c4Ez{^4ez!~4>tN=pf(HCH1EJav5qy7RqH zDtuapvZ%xid~7t=e%=7)ZK%?VL8BZDu41v` z$Ie04JAge(aC&x`w@VQ@B~rif;%f0yC1DgSXK`7zJhA8@L)g{P5^FXPZ&S;G2vd!I zU>nH*CM01U6-g&#n#|uj{l45f3X7UA?JU<=J9qYD^Rm>6W+l@-w7?t#EKKZG=P!}6 zk}IUlU#lmo0VlOu`no|d>+oh}b=)KD$f!*=1mCq}EAeeAEa68%Q@vQMZnkTsh;-7j z)|o$ieH^8$WfUgF*IIzktzxKLKRv|nOPQ+Ib-Z3`OUBpG`g?e>JEZYO!HPpD;*L}( zc z928u5>Wx>mcBDc?az=iLT!LM~jj3mDv6ig|9w$w@w=gk#F{hQHi~{^?`58NaEuCnT zc4_?eXS!W6UBkfZ~$yT#RjT@oZp6oZViuO(Knu@p2=k*~$HVn!%Hw8@zN_N5~<+R=# zAtvP7(TiJzJjQ8Gt44e5{^E0FS}kb|L$}B&%;eh(wfuu#Wwg^&)m848DIM;@PSn-I?(5ab&zGi{bI|j6$3X}AmZk&-qAiT& zcCP&TW6@;VvtEK3rWmA4#~ZnveFoLD!fW{kFG?Ze0W6l>z%Q_+Btd#p27%sWO=+Kw z%WqW`#lU?UQAbAVHevSU+A*olD$xvv8W#D5TOQv7Z2X-(ia52Sb4NRITF<6(mP8k+ zl??IPTO#`0jA*6?Tp;o$G{PaL)LdZ&2EO&l96w?RO$N`+3yU|7yVal##ZYYFM=_hl z2|rXCY}$|0Qgu8#bR)4p`F>a*6H74A-F8ivC7d%%1QqvLx;B>#YT*=KtLNz$zE{sxJJR}?Lku66+xl`z)4~mdfpWcgOij@z6d`S*t+u~BkoMl3 z3@V~`1$%!mLNoZeASC=^=3ES8VMiz!zm?=S#T#rnl8le9r|doEkv~$^dT+OYgZ=e7 z#%(yiVXCEQCAGZp)nA>}wl1wIIV4n-j~H>qbzTZ?Y>5`dOSZ1Sz-fz0dSsE$y#P<} z#coZ!Zll@9vk-Nk)VfSqxK7MAttQ9|^2leK z$i{#OJf2PpPK>skb;Q|rz&QBA-(}Z>;g(7)bj`pxZ&4`!V|;G8`Aes~yY~pnbh<3( zncsLEa-1A)>rH*aXovRNreqj3i7&H@p!b-LouNy+--;4H@;hU;0>P9H-@(mxC@bdc z@q-fRxcB#BJVO2*Mz(MV+K|Y21|?1w(RNk0G8Na(0v(xyx-VlG zQT1DKffR$Oz(@P&<%HG9gub7W{gDjMP5dG-@|(?MZ1u~nc6_AT0}r(bxnyLbCC3^i z-ZfxcLC>--Dl<3-Lz(J@+%UJ7hP`f=$>Qi≦(Jh-=y^=SUwT0<<|O*WJ8TT>tuu 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 Gy!RJ4T-BTa literal 0 HcmV?d00001 diff --git a/dist/bundle/demo/confused.svg b/dist/bundle/demo/confused.svg new file mode 100644 index 0000000..b803847 --- /dev/null +++ b/dist/bundle/demo/confused.svg @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dist/bundle/demo/demo.css b/dist/bundle/demo/demo.css new file mode 100644 index 0000000..904792f --- /dev/null +++ b/dist/bundle/demo/demo.css @@ -0,0 +1,2 @@ +main{ display: flex; flex-wrap: wrap; justify-content:space-between; gap: 1rem; } +main>*{ flex: auto; } diff --git a/dist/bundle/demo/demo3-element-a.html b/dist/bundle/demo/demo3-element-a.html new file mode 100644 index 0000000..da7b676 --- /dev/null +++ b/dist/bundle/demo/demo3-element-a.html @@ -0,0 +1,21 @@ + + + + + + + +

slot0 is overridden in body!

+
+ + + diff --git a/dist/bundle/demo/demo3-element.html b/dist/bundle/demo/demo3-element.html new file mode 100644 index 0000000..4495b34 --- /dev/null +++ b/dist/bundle/demo/demo3-element.html @@ -0,0 +1,24 @@ + + + + + + +

slot0 is overridden in body!

+
+ + + diff --git a/dist/bundle/demo/doc.json b/dist/bundle/demo/doc.json new file mode 100644 index 0000000..e15aeae --- /dev/null +++ b/dist/bundle/demo/doc.json @@ -0,0 +1,6 @@ +{ + "name": "Doc", + "title": "Dwarf", + "age": 50, + "portrait": "doc.png" +} diff --git a/dist/bundle/demo/doc.png b/dist/bundle/demo/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..aa08cd755f588af7fc3de776fca2ef3f165f9f37 GIT binary patch literal 11521 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 literal 0 HcmV?d00001 diff --git a/dist/bundle/demo/dwarfs.json b/dist/bundle/demo/dwarfs.json new file mode 100644 index 0000000..b473966 --- /dev/null +++ b/dist/bundle/demo/dwarfs.json @@ -0,0 +1,8 @@ +[ { "name": "Doc" , "Age guess":50, "title": "The leader of the dwarfs, required to be pompous, self-important and bumbling" } +, { "name": "Grumpy" , "Age guess":17, "title": " Doc and Grumpy arguing about whether Snow White should stay with them" } +, { "name": "Happy" , "Age guess":17, "title": " :) " } +, { "name": "Sleepy" , "Age guess":17, "title": " :-O " } +, { "name": "Bashful" , "Age guess":17, "title": "reluctant to draw attention to oneself; shy." } +, { "name": "Sneezy" , "Age guess":17, "title": "inclined to sneeze. ill, sick - affected by an impairment of normal physical or mental function" } +, { "name": "Dopey" , "Age guess":17, "title": "stupefied by sleep or a drug." } +] diff --git a/dist/bundle/demo/embedded.html b/dist/bundle/demo/embedded.html new file mode 100644 index 0000000..8efded0 --- /dev/null +++ b/dist/bundle/demo/embedded.html @@ -0,0 +1 @@ +From embedded.html 😏 diff --git a/dist/bundle/demo/import-map.importmap b/dist/bundle/demo/import-map.importmap new file mode 100644 index 0000000..d9189d2 --- /dev/null +++ b/dist/bundle/demo/import-map.importmap @@ -0,0 +1,5 @@ +{ + "imports": { + "css-chain": "../node_modules/css-chain/css-chain.js" + } +} \ No newline at end of file diff --git a/dist/bundle/demo/index.html b/dist/bundle/demo/index.html new file mode 100644 index 0000000..1a2f8a5 --- /dev/null +++ b/dist/bundle/demo/index.html @@ -0,0 +1,63 @@ + + + + + + + + + + + +

slotted-element demo

+ +

+ slotted-element is web component implementing slots without shadow DOM. + It is based on fetch-element component to fetch data and render from retrieved JSON or HTML. +

+
+ + + + + + + + + + + + + +
+ Slots located in wrapper + + + +
+
+
+ + + +
+ doc.json as table + +
+
+
+ + + + + + + + +
+ + + diff --git a/dist/bundle/demo/nav.html b/dist/bundle/demo/nav.html new file mode 100644 index 0000000..38a0e4d --- /dev/null +++ b/dist/bundle/demo/nav.html @@ -0,0 +1,4 @@ +git | + slotted-element demo | + fetch-element demo | + template demo diff --git a/dist/bundle/demo/render-from-json.html b/dist/bundle/demo/render-from-json.html new file mode 100644 index 0000000..3e769a9 --- /dev/null +++ b/dist/bundle/demo/render-from-json.html @@ -0,0 +1,47 @@ + + + + + render table from json - FetchElement + + + + + +

fetch-element render from JSON demo

+ +

+ slotted-element by default renders JSON as table. The rendering could be redefined: +

+
+ + + + + + + + + + + + +
+
+ + +
+ + diff --git a/dist/bundle/demo/render-from-xml.html b/dist/bundle/demo/render-from-xml.html new file mode 100644 index 0000000..011ccf7 --- /dev/null +++ b/dist/bundle/demo/render-from-xml.html @@ -0,0 +1,42 @@ + + + + + render table from json - FetchElement + + + + +

fetch-element render from JSON demo

+git | + slotted-element demo +
+ + + + + + + + + + + + +
+ + diff --git a/dist/bundle/demo/template-demo.html b/dist/bundle/demo/template-demo.html new file mode 100644 index 0000000..2be0ba7 --- /dev/null +++ b/dist/bundle/demo/template-demo.html @@ -0,0 +1,57 @@ + + + + + template - SlottedElement demo + + + + + + + + +

slotted-element with template demo

+ +

+ slotted-element is web component implementing slots without shadow DOM. There are 3 ways of template use: +

+
+ + +
inline HTML with slots 🎉
+

Not triggered as "src" attribute is not set.

+
+
+ + + + + + + + + + + + + + + + + + + +
+ + diff --git a/dist/bundle/demo/template-with-slots2.html b/dist/bundle/demo/template-with-slots2.html new file mode 100644 index 0000000..f812fb7 --- /dev/null +++ b/dist/bundle/demo/template-with-slots2.html @@ -0,0 +1,16 @@ + + + + + + + + +

slot0 is overridden in body!

+
+ + diff --git a/dist/bundle/fetch-element.d.ts b/dist/bundle/fetch-element.d.ts new file mode 100644 index 0000000..462f2f1 --- /dev/null +++ b/dist/bundle/fetch-element.d.ts @@ -0,0 +1,148 @@ +/// +/** + * @returns Promise resolved when updated DOM is rendered by calling [requestIdleCallback](https://developer.mozilla.org/en-US/docs/Web/API/Window/requestIdleCallback) + * @param cb callback invoked on dom rendered, its return value passed back to wait4DomUpdated promise + */ +export function wait4DomUpdated(cb: ()=>T): Promise; + +/** + * @returns string lovercased with spaces replaces with dash '-' + * @param s string to convert + */ +export function toKebbabCase(s: string): string; + +/** + * webcomponent renders JSON and other content types retrieved by interruptible + * [ fetch() ](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) api + * [more...](https://github.com/sashafirsov/slotted-element#fetch-element) + */ +export class FetchElement extends HTMLElement { + /** + * @see [using custom elements](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements) + */ + static get observedAttributes(): string[]; + + /** + * override this map the content type to module loader function + * @see [json remdering module](https://github.com/sashafirsov/slotted-element/blob/main/render/json.js) sample + */ + static get mime2mod(): { + 'application/json': () => Promise; + 'text/html': () => (data: any, contentType: any, httpCode: any, responseHeaders: any, ...args: any[]) => Promise; + 'text/xml': () => (data: any, contentType: any, httpCode: any, responseHeaders: any, ...args: any[]) => Promise; + 'application/xml': () => (data: any, contentType: any, httpCode: any, responseHeaders: any, ...args: any[]) => Promise; + 'image/svg+xml': () => (data: any, contentType: any, httpCode: any, responseHeaders: any, ...args: any[]) => Promise; + }; + + /** + * override to override the request headers + */ + get headers(): {[key:string]:string}; + + /** + * interrupt current request + * @see [AbortController](https://developer.mozilla.org/en-US/docs/Web/API/AbortController) + */ + abort(): void; + + /** + * @see [Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) + * @param args + */ + fetch( url:Request | string, options ): Promise; + + /** + * private + */ + _fetch: (url: any, options: any) => Promise; + /** + * string representing the loading to rendering life cycle + */ + state: 'loading'|'rendering'|'loaded'|'error'; + /** + * response.status, set by onResponse() handler, matching http error code + */ + status: string; + + /** + * @see [web component lifecycle](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements#using_the_lifecycle_callbacks) + */ + connectedCallback(): void; + + /** + * set to true when fetch is initialized + */ + initialized: boolean; + /** + * @see [web component lifecycle](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements#using_the_lifecycle_callbacks) + */ + attributeChangedCallback(name: any, oldValue: any, newValue: any): void; + + /** + * callback when `fetch()` is resolved. + * Sets `status`, `contentType`, `responseHeaders` and resolves the method for data + * conversion according to content type. + * @param response + * @returns data promise from `response.json()` or `response.text()` + */ + onResponse(response: any): Promise; + + /** + * set by `onResponse()` to 'network error' in case of http code not in 200 range + */ + error: string; + /** + * response.headers.get( 'content-type' ) + */ + contentType: string; + /** + * response.headers + */ + responseHeaders: any; + + /** + * pre-render callback to massage response data before `render()` + * @param data + */ + setContent(data: any): void; + + /** + * callback which check the contentType and invokes renderer from `mime2mod` map + * @param result + */ + onResult(result: any): Promise; + + /** + * callback to override the output HTML according to response outcome. + * @param data + * @param contentType + * @param httpCode + * @param responseHeaders + */ + render(data: any, contentType: any, httpCode: any, responseHeaders: any): void; + + /** + * default rendering implementation which triggers data and html transformation + * @param data + * @param contentType + * @param httpCode + * @param responseHeaders + * @param args + */ + renderHtml(data: any, contentType: any, httpCode: any, responseHeaders: any, ...args: any[]): Promise; + + /** + * callback on `fetch()` failure + * @param error + * @returns value for rejected promise + */ + onError(error: any): any; + + /** + * override to limit or define the order of keys on json object to be rendered in table. + * @param obj + * @returns array of keys to be shown in HTML + */ + getKeys(obj: any): string[]; +} +export default FetchElement; diff --git a/dist/bundle/render/json.js b/dist/bundle/render/json.js new file mode 100644 index 0000000..ce1fcfc --- /dev/null +++ b/dist/bundle/render/json.js @@ -0,0 +1,21 @@ +var g=Object.defineProperty,j=Object.defineProperties;var x=Object.getOwnPropertyDescriptors;var d=Object.getOwnPropertySymbols;var E=Object.prototype.hasOwnProperty,C=Object.prototype.propertyIsEnumerable;var m=(t,e,r)=>e in t?g(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,u=(t,e)=>{for(var r in e||(e={}))E.call(e,r)&&m(t,r,e[r]);if(d)for(var r of d(e))C.call(e,r)&&m(t,r,e[r]);return t},p=(t,e)=>j(t,x(e));var b=(t,e)=>()=>(t&&(e=t(t=0)),e);function o(t){return new Promise(e=>{let r=window.requestIdleCallback||window.requestAnimationFrame,s=()=>e(t&&t());r?r(s):setTimeout(s,100)})}function l(t){return(t||"").toLowerCase().replaceAll(/\s/g,"-")}var _FetchElement,k,y=b(()=>{_FetchElement=class extends HTMLElement{static get observedAttributes(){return["src","method","headers","state","status","error","skiprender"]}static get mime2mod(){return{"application/json":async()=>(await Promise.resolve().then(()=>(T(),v))).default,"text/html":()=>_FetchElement.prototype.renderHtml,"text/xml":()=>_FetchElement.prototype.renderHtml,"application/xml":()=>_FetchElement.prototype.renderHtml,"image/svg+xml":()=>_FetchElement.prototype.renderHtml}}get headers(){return{}}abort(){}fetch(...t){return this._fetch(...t)}constructor(){super();let t=Promise.resolve(),e=new AbortController,{signal:r}=e;this.abort=()=>e.abort(),this._fetch=async(s,n)=>{this.state="loading",this.status="";let a=p(u({method:this.getAttribute("method")||"GET",headers:this.headers},n),{signal:r});return t=new Promise(async(i,c)=>{try{let h=await fetch(s,a),f=await this.onResponse(h),w=await this.onResult(f);this.error?c(this.error):i(w)}catch(h){c(this.onError(h))}})},Object.defineProperty(this,"promise",{get(){return t}}),_FetchElement.observedAttributes.filter(s=>s!=="headers").forEach(s=>Object.defineProperty(this,s,{get:()=>this.getAttribute(s),set:n=>this.setAttribute(s,n)}))}connectedCallback(){this.src&&this.fetch(this.src),this.initialized=!0}attributeChangedCallback(name,oldValue,newValue){switch(name){case"headers":this[name]=eval(newValue);break;case"src":this.initialized&&this.fetch(newValue);break;default:this[name]!==newValue&&(this[name]=newValue)}}async onResponse(t){let e=1*(this.status=t.status);return(e<200||e>=300)&&(this.error="network error"),this.contentType=t.headers.get("content-type"),this.responseHeaders=t.headers,this.contentType.includes("json")?t.json():t.text()}setContent(t){this.innerHTML=t}async onResult(t){try{if(this.hasAttribute("skiprender"))return;let e=await this.constructor.mime2mod[this.contentType.split(";")[0]]();return typeof e=="string"&&(e=(await import(e)).default),this.state="rendering",(e||this.render).call(this,t,this.contentType,this.status,this.responseHeaders)}finally{this.state="loaded"}}render(t,e,r,s){}async renderHtml(t,e,r,s){this.setContent(t),await o(),this.render(...arguments),await o()}onError(t){return this.state="error",t}getKeys(t){return Object.keys(t)}},k=_FetchElement;window.customElements.define("fetch-element",_FetchElement)});async function A(t,e,r,s){await o();let n=this.render(t,e,r,s);this.json2table||(this.json2table=H),this.setContent(n||this.json2table(t,[])),await o()}function H(t,e){if(Array.isArray(t)){if(!t.length)return"";let s=this.getKeys(t[0]);return` + + ${s.map(n=>``).join(` +`)} + ${t.map((n,a)=>` + ${s.map(i=>` + `).join("")} + `).join(` +`)} +
${n}
+ ${this.json2table(n[i],[...e,a,i])} +
+`}return typeof t!="object"||t===null?t:` + + ${this.getKeys(t).map(s=>` + + +`).join("")} +
${s}${this.json2table(t[s],[...e,s])}
+`}var T=b(()=>{y()});T();export{A as default,H as json2table}; +//# sourceMappingURL=json.js.map diff --git a/dist/bundle/render/json.js.map b/dist/bundle/render/json.js.map new file mode 100644 index 0000000..5f71ab8 --- /dev/null +++ b/dist/bundle/render/json.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../slotted-element/fetch-element.js", "../../../../slotted-element/render/json.js"], + "sourcesContent": [" export function\nwait4DomUpdated( cb )\n{\n return new Promise( resolve =>\n {\n const assureDom = window.requestIdleCallback || window.requestAnimationFrame\n , done = () => resolve( cb && cb() );\n assureDom ? assureDom( done ) : setTimeout( done, 100 );\n } )\n}\n\n export function\ntoKebbabCase( s )\n{ return ( s || '' ).toLowerCase().replaceAll( /\\s/g, '-' )}\n\n export class\nFetchElement extends HTMLElement\n{\n static get observedAttributes(){ return [ 'src', 'method', 'headers', 'state', 'status', 'error', 'skiprender' ]; }\n\n static get mime2mod(){ return { 'application/json':async ()=>(await import('./render/json.js')).default\n , 'text/html': ()=>FetchElement.prototype.renderHtml\n , 'text/xml': ()=>FetchElement.prototype.renderHtml\n , 'application/xml': ()=>FetchElement.prototype.renderHtml\n , 'image/svg+xml': ()=>FetchElement.prototype.renderHtml\n }}\n\n get headers(){ return {} }\n\n abort(){}\n\n fetch(...args){ return this._fetch(...args); }\n\n constructor()\n {\n super();\n let promise = Promise.resolve();\n const controller = new AbortController();\n const { signal } = controller;\n\n this.abort = () => controller.abort();\n this._fetch = async( url, options ) =>\n {\n this.state = 'loading';\n this.status = '';\n\n const opt = {\n method: this.getAttribute( 'method' ) || 'GET'\n , headers: this.headers\n , ...options\n , signal\n };\n\n return promise = new Promise( async( resolve, reject ) =>\n {\n try\n { const response = await fetch( url, opt );\n const ret = await this.onResponse( response )\n const res = await this.onResult( ret );\n this.error ? reject( this.error ) : resolve( res );\n }catch( ex )\n { reject( this.onError( ex ) ); }\n } )\n };\n Object.defineProperty( this, 'promise', { get(){ return promise; } } );\n FetchElement.observedAttributes\n .filter( prop => prop !== 'headers' )\n .forEach( prop => Object.defineProperty( this, prop,\n {\n get: () => this.getAttribute( prop )\n , set: val => this.setAttribute( prop, val )\n } ) );\n }\n\n connectedCallback()\n {\n this.src && this.fetch( this.src );\n this.initialized = !0;\n }\n\n attributeChangedCallback( name, oldValue, newValue )\n {\n switch( name )\n { case 'headers':\n this[ name ] = eval( newValue );\n break;\n case 'src':\n this.initialized && this.fetch( newValue );\n break;\n default:\n if( this[ name ] !== newValue )\n this[ name ] = newValue;\n }\n }\n\n async onResponse( response )\n {\n const s = 1 * ( this.status = response.status );\n if( s < 200 || s >= 300 )\n this.error = 'network error';\n this.contentType = response.headers.get( 'content-type' );\n this.responseHeaders = response.headers;\n if( this.contentType.includes( 'json' ) )\n return response.json();\n return response.text();\n }\n\n setContent( html ){ this.innerHTML = html; }\n \n async onResult( result )\n {\n try\n { if( this.hasAttribute('skiprender') )\n return;\n\n let mod = await this.constructor.mime2mod[ this.contentType.split(';')[0] ]();\n if( typeof mod === 'string' )\n mod = (await import(mod)).default;\n\n this.state = 'rendering';\n\n return ( mod || this.render ).call( this, result, this.contentType, this.status, this.responseHeaders );\n }finally\n {\n this.state = 'loaded';\n }\n }\n\n render( data, contentType, httpCode, responseHeaders ){}\n async renderHtml( data, contentType, httpCode, responseHeaders )\n {\n this.setContent( data );\n await wait4DomUpdated();\n this.render( ...arguments );\n await wait4DomUpdated();\n }\n\n onError( error )\n {\n this.state = 'error';\n return error;\n }\n\n getKeys( obj ){ return Object.keys( obj ); }\n}\n\nexport default FetchElement;\n\nwindow.customElements.define( 'fetch-element', FetchElement );\n", "import { toKebbabCase, wait4DomUpdated } from '../fetch-element.js';\n\nexport default async function render( data, contentType, status, responseHeaders )\n{\n await wait4DomUpdated();\n const html = this.render( data, contentType, status, responseHeaders );\n if( !this.json2table )\n this.json2table = json2table;\n this.setContent( html || this.json2table( data, [] ) );\n await wait4DomUpdated();\n}\nexport function json2table( data, path )\n{\n if( Array.isArray( data ) )\n {\n if( !data.length )\n return '';\n const keys = this.getKeys( data[ 0 ] );\n\n return `\n\n ${ keys.map( k => `` ).join( '\\n' ) }\n ${ data.map( ( r, i ) => `\n ${ keys.map( k => `\n ` ).join( '' )\n }\n ` ).join( '\\n' ) }\n
${ k }
\n ${ this.json2table( r[ k ], [ ...path, i, k ] ) }\n
\n`\n }\n if( typeof data !== 'object' || data === null )\n return data;\n const keys = this.getKeys( data );\n return `\n\n ${ keys.map( k => `\n\n \n` ).join( '' ) }\n
${ k }${ this.json2table( data[ k ], [ ...path, k ] ) }
\n`\n}\n"], + "mappings": "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", + "names": [] +} diff --git a/dist/bundle/render/xml.js b/dist/bundle/render/xml.js new file mode 100644 index 0000000..a0b3858 --- /dev/null +++ b/dist/bundle/render/xml.js @@ -0,0 +1,3 @@ +async function p(o,r,e,n){let i=new window.DOMParser().parseFromString(o,"text/xml");this.render(i,r,e,n)}function f(o,r){var e=new XMLHttpRequest;e.open("GET",o,!1),e.onreadystatechange=function(){if(e.readyState==4)try{if(e.responseXML)return r(e.responseXML);var n=e.responseText.trim();n.charAt(0)!="<"&&(n=t(JSON.parse(n))),r(new DOMParser().parseFromString(n,"application/xml"))}catch(i){console.error("XML reading error",i)}},e.send()}function t(o,r){var e=typeof r!="string";if(o instanceof Array)return e&&(r="array"),"<"+r+">"+o.map(function(a){return t(a,r)}).join()+"";e&&(r="r"),r=r.replace(/[^a-z0-9]/gi,"_");var n={},i=["<"+r+" "];for(var s in o)typeof o[s]=="object"?n[s]=o[s]:i.push(s.replace(/[^a-z0-9]/gi,"_")+'="'+o[s].toString().replace(/&/gi,"&")+'"');if(n){i.push(">");for(var s in n)i.push(t(n[s],s));i.push("")}else i.push("/>");return i.join(` +`)}export{t as Json2Xml,p as default,f as getXml}; +//# sourceMappingURL=xml.js.map diff --git a/dist/bundle/render/xml.js.map b/dist/bundle/render/xml.js.map new file mode 100644 index 0000000..cba460f --- /dev/null +++ b/dist/bundle/render/xml.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../slotted-element/render/xml.js"], + "sourcesContent": ["export default async function render( data, contentType, status, responseHeaders )\n{\n const xml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n this.render( xml, contentType, status, responseHeaders );\n // todo xslt from xml\n}\n export function\ngetXml(url, callback)\n{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.onreadystatechange = function ()\n {\n if( 4 != xhr.readyState )\n return;\n try\n { if( xhr.responseXML )\n return callback(xhr.responseXML);\n var txt = xhr.responseText.trim();\n if( txt.charAt(0)!='<' )\n txt = Json2Xml( JSON.parse(txt) );\n callback(new DOMParser().parseFromString( txt, \"application/xml\" ));\n }catch( ex )\n { console.error(\"XML reading error\", ex ); }\n }\n xhr.send();\n}\n export function\nJson2Xml( o, tag )\n{ var noTag = \"string\" != typeof tag;\n\n if( o instanceof Array )\n { noTag && (tag = 'array');\n return \"<\"+tag+\">\"+o.map(function(el){ return Json2Xml(el,tag); }).join()+\"\";\n }\n noTag && (tag = 'r');\n tag=tag.replace( /[^a-z0-9]/gi,'_' );\n var oo = {}\n , ret = [ \"<\"+tag+\" \"];\n for( var k in o )\n if( typeof o[k] == \"object\" )\n oo[k] = o[k];\n else\n ret.push( k.replace( /[^a-z0-9]/gi,'_' ) + '=\"'+o[k].toString().replace(/&/gi,'&')+'\"');\n if( oo )\n { ret.push(\">\");\n for( var k in oo )\n ret.push( Json2Xml( oo[k], k ) );\n ret.push(\"\");\n }else\n ret.push(\"/>\");\n return ret.join('\\n');\n}"], + "mappings": "AAAA,iBAAsC,EAAM,EAAa,EAAQ,EACjE,CACI,GAAM,GAAQ,GAAI,QAAO,UAAU,EAAI,gBAAiB,EAAM,UAAW,EACzE,KAAK,OAAQ,EAAK,EAAa,EAAQ,CAAgB,CAE3D,CACW,WACJ,EAAK,EACZ,CACI,GAAI,GAAM,GAAI,gBACd,EAAI,KAAK,MAAO,EAAK,EAAK,EAC1B,EAAI,mBAAqB,UACzB,CACI,GAAI,AAAK,EAAI,YAAT,EAEJ,GACA,CAAI,GAAI,EAAI,YACJ,MAAO,GAAS,EAAI,WAAW,EACnC,GAAI,GAAM,EAAI,aAAa,KAAK,EAChC,AAAI,EAAI,OAAO,CAAC,GAAG,KACf,GAAM,EAAU,KAAK,MAAM,CAAG,CAAE,GACpC,EAAS,GAAI,WAAU,EAAE,gBAAiB,EAAK,iBAAkB,CAAC,CACtE,OAAQ,EAAP,CACO,QAAQ,MAAM,oBAAqB,CAAG,CAAG,CACrD,EACA,EAAI,KAAK,CACb,CACW,WACD,EAAG,EACb,CAAI,GAAI,GAAQ,AAAY,MAAO,IAAnB,SAEZ,GAAI,YAAa,OACb,UAAW,GAAM,SACV,IAAI,EAAI,IAAI,EAAE,IAAI,SAAS,EAAG,CAAE,MAAO,GAAS,EAAG,CAAG,CAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAI,IAEvF,GAAW,GAAM,KACjB,EAAI,EAAI,QAAS,cAAc,GAAI,EACnC,GAAI,GAAM,CAAC,EACH,EAAM,CAAE,IAAI,EAAI,GAAG,EAC3B,OAAS,KAAK,GACV,AAAI,MAAO,GAAE,IAAM,SACf,EAAG,GAAK,EAAE,GAEV,EAAI,KAAM,EAAE,QAAS,cAAc,GAAI,EAAI,KAAK,EAAE,GAAG,SAAS,EAAE,QAAQ,MAAM,OAAO,EAAE,GAAG,EAClG,GAAI,EACJ,CAAI,EAAI,KAAK,GAAG,EACZ,OAAS,KAAK,GACV,EAAI,KAAM,EAAU,EAAG,GAAI,CAAE,CAAE,EACnC,EAAI,KAAK,KAAK,EAAI,GAAG,CACzB,KACI,GAAI,KAAK,IAAI,EACjB,MAAO,GAAI,KAAK;AAAA,CAAI,CACxB", + "names": [] +} diff --git a/dist/bundle/slotted-element.d.ts b/dist/bundle/slotted-element.d.ts new file mode 100644 index 0000000..9369c0a --- /dev/null +++ b/dist/bundle/slotted-element.d.ts @@ -0,0 +1,72 @@ +export * from "./fetch-element.js"; +export class SlottedElement extends FetchElement { + /** + * @see [web component lifecycle](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements#using_the_lifecycle_callbacks) + */ + attributeChangedCallback(name: any, oldValue: any, newValue: any): void; + + /** + * attribute with id of html element used as template [see light DOM](https://github.com/sashafirsov/css-chain#light-dom-api) + */ + template: string; + + /** + * [CssChain](https://github.com/sashafirsov/css-chain) of slotted-elemt children defined by `css` + * @param css + */ + $(css: undefined|string): CssChainCollection&T; + + /** + * @see [Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) + * @param args + */ + fetch( url:Request | string, options ): Promise; + /** + * pre-render callback to massage response data before `render()` + * @param data + */ + setContent(data: any): void; + + /** + * read slots from internal DOM. Has to be called before any slots operations. + */ + slotsInit(): void; + + /** + * hashmap of slot name to slot used internally + */ + slots: {}; + + /** + * hide all slots except of named one by setting/removing `hidden` attribute + * @param name + */ + slotOnly(name: string): void; + + /** + * remove all slots clones + */ + slotsClear(): void; + + /** + * returns node (clone of slot subtree) to be modified before insertion by `slotAdd()` + * @param name + */ + slotClone(name: string): Node; + + /** + * adds slot clone node to internal content immediately after original slot + * @param node name or node created by slotClone(name) + */ + slotAdd(node: Node): Node; + + /** + * clones slot node and inserts immediately after original slot + * @param nodeName name or node created by slotClone(name) + */ + slotAdd(nodeName: string): Node; +} +export default SlottedElement; +export { $ as CssChain }; +import FetchElement from "./fetch-element.js"; +import {CssChain as $, CssChainCollection, CssChainT} from "css-chain"; diff --git a/dist/bundle/slotted-element.js b/dist/bundle/slotted-element.js new file mode 100644 index 0000000..3ea8a8a --- /dev/null +++ b/dist/bundle/slotted-element.js @@ -0,0 +1,21 @@ +var M=Object.defineProperty,_=Object.defineProperties;var W=Object.getOwnPropertyDescriptors;var L=Object.getOwnPropertySymbols;var z=Object.prototype.hasOwnProperty,G=Object.prototype.propertyIsEnumerable;var P=(e,t,s)=>t in e?M(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,S=(e,t)=>{for(var s in t||(t={}))z.call(t,s)&&P(e,s,t[s]);if(L)for(var s of L(t))G.call(t,s)&&P(e,s,t[s]);return e},R=(e,t)=>_(e,W(t));var F=(e,t)=>()=>(e&&(t=e(e=0)),t);var J=(e,t)=>{for(var s in t)M(e,s,{get:t[s],enumerable:!0})};var v={};J(v,{default:()=>I,json2table:()=>q});async function I(e,t,s,r){await u();let n=this.render(e,t,s,r);this.json2table||(this.json2table=q),this.setContent(n||this.json2table(e,[])),await u()}function q(e,t){if(Array.isArray(e)){if(!e.length)return"";let r=this.getKeys(e[0]);return` + + ${r.map(n=>``).join(` +`)} + ${e.map((n,o)=>` + ${r.map(i=>` + `).join("")} + `).join(` +`)} +
${n}
+ ${this.json2table(n[i],[...t,o,i])} +
+`}return typeof e!="object"||e===null?e:` + + ${this.getKeys(e).map(r=>` + + +`).join("")} +
${r}${this.json2table(e[r],[...t,r])}
+`}var D=F(()=>{E()});function u(e){return new Promise(t=>{let s=window.requestIdleCallback||window.requestAnimationFrame,r=()=>t(e&&e());s?s(r):setTimeout(r,100)})}function T(e){return(e||"").toLowerCase().replaceAll(/\s/g,"-")}var _FetchElement,g,E=F(()=>{_FetchElement=class extends HTMLElement{static get observedAttributes(){return["src","method","headers","state","status","error","skiprender"]}static get mime2mod(){return{"application/json":async()=>(await Promise.resolve().then(()=>(D(),v))).default,"text/html":()=>_FetchElement.prototype.renderHtml,"text/xml":()=>_FetchElement.prototype.renderHtml,"application/xml":()=>_FetchElement.prototype.renderHtml,"image/svg+xml":()=>_FetchElement.prototype.renderHtml}}get headers(){return{}}abort(){}fetch(...e){return this._fetch(...e)}constructor(){super();let e=Promise.resolve(),t=new AbortController,{signal:s}=t;this.abort=()=>t.abort(),this._fetch=async(r,n)=>{this.state="loading",this.status="";let o=R(S({method:this.getAttribute("method")||"GET",headers:this.headers},n),{signal:s});return e=new Promise(async(i,m)=>{try{let p=await fetch(r,o),y=await this.onResponse(p),l=await this.onResult(y);this.error?m(this.error):i(l)}catch(p){m(this.onError(p))}})},Object.defineProperty(this,"promise",{get(){return e}}),_FetchElement.observedAttributes.filter(r=>r!=="headers").forEach(r=>Object.defineProperty(this,r,{get:()=>this.getAttribute(r),set:n=>this.setAttribute(r,n)}))}connectedCallback(){this.src&&this.fetch(this.src),this.initialized=!0}attributeChangedCallback(name,oldValue,newValue){switch(name){case"headers":this[name]=eval(newValue);break;case"src":this.initialized&&this.fetch(newValue);break;default:this[name]!==newValue&&(this[name]=newValue)}}async onResponse(e){let t=1*(this.status=e.status);return(t<200||t>=300)&&(this.error="network error"),this.contentType=e.headers.get("content-type"),this.responseHeaders=e.headers,this.contentType.includes("json")?e.json():e.text()}setContent(e){this.innerHTML=e}async onResult(e){try{if(this.hasAttribute("skiprender"))return;let t=await this.constructor.mime2mod[this.contentType.split(";")[0]]();return typeof t=="string"&&(t=(await import(t)).default),this.state="rendering",(t||this.render).call(this,e,this.contentType,this.status,this.responseHeaders)}finally{this.state="loaded"}}render(e,t,s,r){}async renderHtml(e,t,s,r){this.setContent(e),await u(),this.render(...arguments),await u()}onError(e){return this.state="error",e}getKeys(e){return Object.keys(e)}},g=_FetchElement;window.customElements.define("fetch-element",_FetchElement)});E();var dt=Object.getPrototypeOf({}),$=(e,t,s)=>{typeof e[t]=="function"?s.prototype[t]=function(...r){return t.startsWith("get")?this.length?this[0][t](...r):void 0:(this.forEach(n=>n[t](...r)),this)}:Object.defineProperty(s.prototype,t,{get:function(){if(this.length)return this[0][t]},set:function(r){return this.forEach(n=>n[t]=r),r}})};var c=(e,...t)=>Array.prototype.map.apply(e,t),V=(e,...t)=>c(e,...t).join(","),w=e=>c(e,t=>rt(t)).join(""),d=e=>document.createElement(e);function Y(e,t,s){let r=d(e);return r[t]=s,r}function Q(e){return!!e?.nodeType}var X=()=>"",f=e=>Array.isArray(e)||e&&typeof e.forEach=="function",j=(e,t)=>typeof e===t,A=e=>j(e,"string"),Z=e=>j(e,"number"),b=e=>j(e,"function"),tt=e=>e.getRootNode().host,O=e=>tt(e)&&e.assignedNodes,et=(e,t)=>(e.forEach(t),e),B=e=>O(e)?e.assignedNodes().forEach(t=>t.remove()):e.innerHTML="",st={1:e=>e.assignedNodes?w(e.assignedNodes())||w(e.childNodes):["SCRIPT","AUDIO","STYLE","CANVAS","DATALIST","EMBED","OBJECT","PICTURE","IFRAME","METER","NOSCRIPT","SELECT","OPTGROUP","PROGRESS","TEMPLATE","VIDEO"].includes(e.nodeName)?"":e.innerText,3:e=>e.nodeValue,11:e=>w(e.childNodes)},rt=e=>(st[e.nodeType]||X)(e),k=(e,t)=>O(e)?e.assignedElements().forEach(s=>s.innerText=t):e.innerText=t,ot=(e,t)=>e.map(s=>t.appendChild(s)),nt=e=>c(e,t=>t.assignedElements?c(t.assignedElements(),s=>s.outerHTML).join(""):t.innerHTML).join(""),N=e=>{let t=d("div");t.innerHTML=e;let s=r=>{if(r.nodeType!==3)return r;let n=d("span");return n.append(r),n};return[...t.childNodes].map(r=>(r.remove(),r)).map(s)},K=(e,t)=>{let s=(n,o)=>o instanceof Node?o.remove()||n.append(o):N(o).forEach(i=>n.append(i)),r=n=>O(e)?e.assign(...e.assignedNodes(),...ot(et(N(n),o=>o.slot=e.name),e.getRootNode().host)):s(e,n);t instanceof NodeList||f(t)?[...t].forEach(r):r(t)},C=(e,t)=>{B(e),K(e,t)},a=class extends Array{attr(...t){return t.length>1?((t[2]?this.$(t[2]):this).setAttribute(...t),this):this.getAttribute(...t)}prop(...t){return t.length>1?((t[2]?this.$(t[2]):this).forEach(s=>s[t[0]]=t[1]),this):this[0][t[0]]}forEach(...t){return Array.prototype.forEach.apply(this,t),this}map(...t){return c(this,...t)}push(...t){return Array.prototype.push.apply(this,t),this}querySelector(t){return new a().push(this.querySelectorAll(t)[0])}querySelectorAll(t){return this.reduce((s,r)=>s.push(...(r.shadowRoot||r).querySelectorAll(t)),new a)}$(...t){return t.length?this.querySelectorAll(...t):this}parent(t){let s=new Set,r=o=>s.has(o)?0:(s.add(o),o),n=o=>{for(;o=o.parentElement;)if(o.matches(t))return r(o)};return h(this.map(t?n:o=>r(o.parentElement)).filter(o=>o))}on(...t){return this.addEventListener(...t)}append(t){return this.forEach(s=>K(s,t))}remove(...t){return t.length?b(t[1])?this.removeEventListener(...t):this.map(s=>s.matches(t[0])).filter(s=>s):(this.forEach(s=>s.remove()),new a)}erase(){return this.forEach(t=>B(t))}slots(...t){let s=t.length?V(t[0].split(","),o=>['""',"''"].includes(o)||!o?"slot:not([name])":`slot[name="${o}"]`):"slot",r=this.filter(o=>o.matches&&o.matches(s)),n=this.filter(o=>!r.includes(o)&&o.querySelector).map(o=>o.shadowRoot||o).$(t.length?V(t[0].split(","),o=>['""',"''"].includes(o)||!o?"slot:not([name])":`slot[name="${o}"]`):"slot");return t.length===2?(n.html(t[1]),this):h([...r,...n])}template(t){if(t===void 0){let r=this.$("[slot]").forEach(n=>this.$(n.slot?`slot[name="${n.slot}"]`:"slot:not([name])").length||n.parentNode.insertBefore(Y("slot","name",n.slot),n));r.remove(),t=d("template"),this.childNodes.forEach(n=>t.content.append(n)),this.append(r)}else A(t)&&(t=this.$(t),t.remove());let s=h(t.content?t.content.childNodes:t).clone(this);return s.slots().forEach(r=>{let n=this.children.filter(o=>o.slot===r.name);n.length&&C(r,n)}),this.children.remove(),this.append(s),this}get innerText(){return this.txt()}set innerText(t){return this.txt(t)}txt(t,s=void 0){let r=s?this.$(s):this;return t===void 0?w(r):(r.forEach(b(t)?(n,o)=>k(n,t(n,o,r)):n=>k(n,t)),this)}get outerHTML(){return this.map(t=>t.outerHTML).join("")}set outerHTML(t){return this.forEach((s,r,n)=>{let o=s.parentNode;N(b(t)?t(s,r,n):t).forEach(i=>o.insertBefore(n[r]=i,s)),s.remove()})}get innerHTML(){return this.html()}set innerHTML(t){return this.html(t)}html(t,s=void 0){let r=s?this.$(s):this;return t===void 0?nt(r):(r.forEach(b(t)?(n,o)=>C(n,t(n,o,r)):n=>C(n,t)),this)}assignedElements(t){return h([].concat(...this.map(s=>s.assignedElements?s.assignedElements(t):[])))}assignedNodes(t){return h([].concat(...this.map(s=>s.assignedNodes?s.assignedNodes(t):[])))}cloneNode(...t){return this.map(s=>s.cloneNode&&s.cloneNode(...t))}clone(t=1,s=void 0){let r=t;if(Z(t)&&(r=Array.from({length:t},(o,i)=>i)),f(r)){let o=[];return this.forEach(i=>r.forEach((m,p)=>{let y=i.ownerDocument.importNode(i,!0),l=s&&s(y,m,p,r);A(l)?o.push(...N(l)):f(l)?o.push(...l):o.push(Q(l)?l:y)})),h(o)}let n=t;return this.map(o=>n?n.importNode(o,!0):o.cloneNode?o.cloneNode(!0):Object.assign({},o))}get firstElementChild(){return h(this.map(t=>t.firstElementChild).filter(t=>t))}get firstChild(){return h(this.map(t=>t.firstChild).filter(t=>t))}get childNodes(){return h([].concat(...c(this,t=>[...t.childNodes||[]])))}get children(){return h([].concat(...c(this,t=>[...t.children||[]])))}},x=new Set,it=Object.getPrototypeOf({});function U(e,t){let s=A(e)?d(e):e;if(!x.has(s.tagName)){x.add(s.tagName);for(let r in s)r in t.prototype||$(s,r,t);for(let r;(r=Object.getPrototypeOf(s))!==it&&r!=null&&!x.has(r);){x.add(r);for(let n of Object.getOwnPropertyNames(r))n in t.prototype||$(s,n,t)}}}Object.getOwnPropertyNames(window).filter(e=>e.startsWith("HTML")&&e.endsWith("Element")&&e.length>11).map(e=>e.substring(4,e.length-7).toLowerCase()).forEach(e=>U(d(e),a));function h(e,t=document,s=[]){let r=typeof e=="string"?t.querySelectorAll(e):f(e)?e:[e?e.shadowRoot||e:document];f(s)?s.length||(s=[...r].slice(0,256)):s=[s],s.forEach(o=>U(o,a));let n=new a;return n.push(...r),n}E();var Et=g;function ht(e,t,s){let r=document.createElement(e);return r[t]=s,r}var H=class extends g{static get observedAttributes(){return["template",...g.observedAttributes]}connectedCallback(){this._$=h(this),this.slotsInit(),super.connectedCallback()}attributeChangedCallback(t,s,r){if(t!=="template")return super.attributeChangedCallback(t,s,r);this.template=r,this.initialized&&this.slotsInit()}$(t){return t?this._$.$(t):this._$}fetch(t,s){return this.slotOnly("loading"),super.fetch(t,s).finally(()=>this.slotOnly(this.state))}setContent(t){if(this.slots.loaded){let s=this.slotClone("loaded");s.innerHTML=t,this.slotAdd(s)}else this.innerHTML=t}slotsInit(){this.slots||(this.slots={},this.$("[slot]").map(r=>this.slots[r.slot]=r));let t=this._$,s=t.attr("template");s?t.template(h("#"+s)):this.template?t.template(ht("template","innerHTML",this.template)):t.template(),this.src||this.slotOnly("loaded")}slotOnly(t){this.$("[slot-cloned]").filter(r=>r.slot!==t).remove(),this.$().slots(t).length&&this.$().slots().attr("hidden","hidden"),this.$(`[slot="${t}"][slot-cloned]`).length||this.slotAdd(t),this.$().slots(t).removeAttribute("hidden")}slotsClear(){this.$("[slot-cloned]").remove()}slotClone(t){let s=this.slots[t];if(!s)return;let r=s.cloneNode(!0);return r.setAttribute("slot-cloned",!0),r.hidden=!1,r}slotAdd(t){let s=t.slot?t:this.slotClone(t),r=this.$(`slot[name="${t.slot||t}"]`),n;for(let o of r)n=o.parentElement.insertBefore(s,o);return n}},gt=H;window.customElements.define("slotted-element",H);export{h as CssChain,Et as FetchElement,H as SlottedElement,_FetchElement,gt as default,T as toKebbabCase,u as wait4DomUpdated}; +//# sourceMappingURL=slotted-element.js.map diff --git a/dist/bundle/slotted-element.js.map b/dist/bundle/slotted-element.js.map new file mode 100644 index 0000000..7d1b8f7 --- /dev/null +++ b/dist/bundle/slotted-element.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../slotted-element/render/json.js", "../../../slotted-element/fetch-element.js", "../../../slotted-element/slotted-element.js", "../../../slotted-element/node_modules/css-chain/ApiChain.js", "../../../slotted-element/node_modules/css-chain/CssChain.js"], + "sourcesContent": ["import { toKebbabCase, wait4DomUpdated } from '../fetch-element.js';\n\nexport default async function render( data, contentType, status, responseHeaders )\n{\n await wait4DomUpdated();\n const html = this.render( data, contentType, status, responseHeaders );\n if( !this.json2table )\n this.json2table = json2table;\n this.setContent( html || this.json2table( data, [] ) );\n await wait4DomUpdated();\n}\nexport function json2table( data, path )\n{\n if( Array.isArray( data ) )\n {\n if( !data.length )\n return '';\n const keys = this.getKeys( data[ 0 ] );\n\n return `\n\n ${ keys.map( k => `` ).join( '\\n' ) }\n ${ data.map( ( r, i ) => `\n ${ keys.map( k => `\n ` ).join( '' )\n }\n ` ).join( '\\n' ) }\n
${ k }
\n ${ this.json2table( r[ k ], [ ...path, i, k ] ) }\n
\n`\n }\n if( typeof data !== 'object' || data === null )\n return data;\n const keys = this.getKeys( data );\n return `\n\n ${ keys.map( k => `\n\n \n` ).join( '' ) }\n
${ k }${ this.json2table( data[ k ], [ ...path, k ] ) }
\n`\n}\n", " export function\nwait4DomUpdated( cb )\n{\n return new Promise( resolve =>\n {\n const assureDom = window.requestIdleCallback || window.requestAnimationFrame\n , done = () => resolve( cb && cb() );\n assureDom ? assureDom( done ) : setTimeout( done, 100 );\n } )\n}\n\n export function\ntoKebbabCase( s )\n{ return ( s || '' ).toLowerCase().replaceAll( /\\s/g, '-' )}\n\n export class\nFetchElement extends HTMLElement\n{\n static get observedAttributes(){ return [ 'src', 'method', 'headers', 'state', 'status', 'error', 'skiprender' ]; }\n\n static get mime2mod(){ return { 'application/json':async ()=>(await import('./render/json.js')).default\n , 'text/html': ()=>FetchElement.prototype.renderHtml\n , 'text/xml': ()=>FetchElement.prototype.renderHtml\n , 'application/xml': ()=>FetchElement.prototype.renderHtml\n , 'image/svg+xml': ()=>FetchElement.prototype.renderHtml\n }}\n\n get headers(){ return {} }\n\n abort(){}\n\n fetch(...args){ return this._fetch(...args); }\n\n constructor()\n {\n super();\n let promise = Promise.resolve();\n const controller = new AbortController();\n const { signal } = controller;\n\n this.abort = () => controller.abort();\n this._fetch = async( url, options ) =>\n {\n this.state = 'loading';\n this.status = '';\n\n const opt = {\n method: this.getAttribute( 'method' ) || 'GET'\n , headers: this.headers\n , ...options\n , signal\n };\n\n return promise = new Promise( async( resolve, reject ) =>\n {\n try\n { const response = await fetch( url, opt );\n const ret = await this.onResponse( response )\n const res = await this.onResult( ret );\n this.error ? reject( this.error ) : resolve( res );\n }catch( ex )\n { reject( this.onError( ex ) ); }\n } )\n };\n Object.defineProperty( this, 'promise', { get(){ return promise; } } );\n FetchElement.observedAttributes\n .filter( prop => prop !== 'headers' )\n .forEach( prop => Object.defineProperty( this, prop,\n {\n get: () => this.getAttribute( prop )\n , set: val => this.setAttribute( prop, val )\n } ) );\n }\n\n connectedCallback()\n {\n this.src && this.fetch( this.src );\n this.initialized = !0;\n }\n\n attributeChangedCallback( name, oldValue, newValue )\n {\n switch( name )\n { case 'headers':\n this[ name ] = eval( newValue );\n break;\n case 'src':\n this.initialized && this.fetch( newValue );\n break;\n default:\n if( this[ name ] !== newValue )\n this[ name ] = newValue;\n }\n }\n\n async onResponse( response )\n {\n const s = 1 * ( this.status = response.status );\n if( s < 200 || s >= 300 )\n this.error = 'network error';\n this.contentType = response.headers.get( 'content-type' );\n this.responseHeaders = response.headers;\n if( this.contentType.includes( 'json' ) )\n return response.json();\n return response.text();\n }\n\n setContent( html ){ this.innerHTML = html; }\n \n async onResult( result )\n {\n try\n { if( this.hasAttribute('skiprender') )\n return;\n\n let mod = await this.constructor.mime2mod[ this.contentType.split(';')[0] ]();\n if( typeof mod === 'string' )\n mod = (await import(mod)).default;\n\n this.state = 'rendering';\n\n return ( mod || this.render ).call( this, result, this.contentType, this.status, this.responseHeaders );\n }finally\n {\n this.state = 'loaded';\n }\n }\n\n render( data, contentType, httpCode, responseHeaders ){}\n async renderHtml( data, contentType, httpCode, responseHeaders )\n {\n this.setContent( data );\n await wait4DomUpdated();\n this.render( ...arguments );\n await wait4DomUpdated();\n }\n\n onError( error )\n {\n this.state = 'error';\n return error;\n }\n\n getKeys( obj ){ return Object.keys( obj ); }\n}\n\nexport default FetchElement;\n\nwindow.customElements.define( 'fetch-element', FetchElement );\n", "import FE from './fetch-element.js';\nimport { CssChain as $ } from 'css-chain';\n\nexport * from './fetch-element.js';\nexport const FetchElement = FE;\n\nfunction createNode( tag, prop, val ){ const el = document.createElement(tag); el[prop]=val; return el; }\n\n\n export class\nSlottedElement extends FE\n{\n static get observedAttributes(){ return [ 'template', ...FE.observedAttributes ]; }\n\n connectedCallback()\n { this._$ = $(this);\n this.slotsInit();\n super.connectedCallback();\n }\n attributeChangedCallback( name, oldValue, newValue )\n {\n if( name !== 'template')\n return super.attributeChangedCallback( name, oldValue, newValue );\n this.template = newValue;\n this.initialized && this.slotsInit();\n }\n $( css ){ return css? this._$.$(css): this._$; }\n\n fetch( url, options )\n {\n this.slotOnly('loading')\n return super.fetch( url, options ).finally( ()=>this.slotOnly(this.state) );\n }\n\n setContent( html )\n {\n if( this.slots.loaded )\n { const slot = this.slotClone('loaded')\n slot.innerHTML = html;\n this.slotAdd(slot);\n }else\n this.innerHTML = html;\n }\n\n\n // slot API\n\n slotsInit()\n {\n if( !this.slots )\n { this.slots = {};\n this.$( '[slot]' ).map( node =>this.slots[ node.slot ] = node )\n }\n const $i = this._$\n , a = $i.attr('template');\n if( a ) $i.template( $('#'+a ) )\n else if( this.template )\n $i.template( createNode( 'template', 'innerHTML', this.template ) )\n else\n $i.template();\n this.src || this.slotOnly('loaded');\n }\n\n slotOnly( name )\n { this.$( '[slot-cloned]' )\n .filter( el => el.slot !== name )\n .remove();\n const $s = this.$().slots(name);\n $s.length && this.$().slots().attr('hidden','hidden');\n if( !this.$( `[slot=\"${name}\"][slot-cloned]` ).length )\n this.slotAdd(name);\n this.$().slots(name).removeAttribute('hidden');\n }\n\n slotsClear()\n { this.$( '[slot-cloned]' )\n .remove();\n }\n\n slotClone( name )\n {\n const slot = this.slots[ name ]\n if( !slot )\n return;\n const ret = slot.cloneNode( true );\n ret.setAttribute( 'slot-cloned', true );\n ret.hidden = false;\n return ret;\n }\n\n slotAdd( node )\n {\n const slot = node.slot ? node: this.slotClone( node )\n , ref = this.$(`slot[name=\"${node.slot || node}\"]`);\n let added;\n for( let r of ref)\n added = r.parentElement.insertBefore( slot, r );\n return added;\n }\n\n}\nexport default SlottedElement;\n\nwindow.customElements.define('slotted-element', SlottedElement);\n\nexport { $ as CssChain };\n", "const Prototype2ApiChain = new Map();\nconst OBJ_prototype = Object.getPrototypeOf( {} );\n\n export const\nsetProp = ( refObj, k, ApiChainLocal )=>\n{\n if( typeof refObj[ k ] == 'function' )\n { ApiChainLocal.prototype[ k ] = function( ...args )\n { if( k.startsWith('get') )\n {\n if( this.length )\n return this[ 0 ][ k ]( ...args )\n else\n return;\n }\n this.forEach( el => el[ k ]( ...args ) );\n return this;\n }\n }else\n { Object.defineProperty( ApiChainLocal.prototype, k,\n { get : function(){ if( this.length ) return this[ 0 ][ k ] }\n , set: function( v )\n { this.forEach( el => el[ k ] = v );\n return v\n }\n } );\n }\n}\n function\napplyPrototype( elementProto, refObj )\n{ let ChainClass = Prototype2ApiChain.get(elementProto);\n if( ChainClass )\n return ChainClass;\n\n class ApiChainLocal extends Array{}\n\n const applied = {\"constructor\":1};\n for ( let obj=refObj; obj !== OBJ_prototype && obj != null ; obj = Object.getPrototypeOf(obj))\n {\n for( let k of Object.getOwnPropertyNames(obj) )\n if( !applied[k])\n { setProp( refObj, k, ApiChainLocal );\n applied[k]=1;\n }\n }\n Prototype2ApiChain.set(elementProto, ApiChainLocal);\n return ApiChainLocal;\n}\n export function\nApiChain( elOrArr, elementProto = undefined )\n{\n const isArr = Array.isArray( elOrArr );\n const arr = isArr ? elOrArr : [ elOrArr ];\n if( ! elementProto )\n elementProto = Object.getPrototypeOf( isArr ? elOrArr[0] : elOrArr );\n const refObj = arr[0];\n if( elementProto === OBJ_prototype )\n {\n class ApiChainLocal extends Array{}\n\n for( let k in refObj )\n setProp( refObj, k, ApiChainLocal );\n const ret = new ApiChainLocal();\n ret.push(...arr);\n return ret;\n }\n\n // class object\n const ApiChain = applyPrototype( elementProto, refObj );\n\n const ret = new ApiChain();\n ret.push(...arr);\n return ret;\n}\nexport default ApiChain;\n", "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('');\nconst createEl = tag=> document.createElement(tag);\nfunction nodeProp( tag, prop, val ){ const el = createEl(tag); el[prop]=val; return el; }\nexport function isNode(n){ return !!n?.nodeType; }\n\nconst nop = ()=>''\n, isArr = a => Array.isArray(a) || (a && 'function' === typeof a.forEach)\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, 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;\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 = createEl('div');\n n.innerHTML = html;\n const wrapIfText = e=>{\n if( e.nodeType !== 3 )\n return e;\n const n = createEl('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 {\n const selector = arr.length\n ? csv( arr[0].split(',')\n , n=> ['\"\"',\"''\"].includes(n) || !n\n ? `slot:not([name])`\n : `slot[name=\"${n}\"]`\n )\n : 'slot';\n const ss = this.filter( el=>el.matches && el.matches(selector) );\n const ret = this.filter( n => !ss.includes(n) && n.querySelector )\n .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 CssChain([...ss,...ret]);\n }\n template(n)\n {\n if( n === undefined )\n {\n const $s = this.$('[slot]')\n .forEach( n => this.$(n.slot ? `slot[name=\"${n.slot}\"]`:'slot:not([name])').length\n || n.parentNode.insertBefore( nodeProp('slot','name',n.slot), n ));\n $s.remove();\n n = createEl('template');\n this.childNodes.forEach( c=>n.content.append(c) );\n this.append($s);\n }else if( isStr(n) )\n { n = this.$( n );\n n.remove();\n }\n const c = CssChain( n.content ? n.content.childNodes : 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.append(c);\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) ? createEl(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( createEl(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/package-lock.json b/package-lock.json index 69516dd..ba9a04f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,20 +1,21 @@ { "name": "slotted-element-test", - "version": "1.1.0", + "version": "1.1.1", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "1.1.0", + "version": "1.1.1", "license": "Apache-2.0", "dependencies": { - "css-chain": "^1.1.0", - "slotted-element": "^1.1.0" + "slotted-element": "^1.1.1" }, "devDependencies": { - "@open-wc/testing": "^3.1.1", + "@chialab/esbuild-plugin-html": "^0.15.9", + "@open-wc/testing": "^3.1.2", "@web/dev-server": "^0.1.30", "@web/test-runner": "^0.13.27", + "esbuild": "^0.14.27", "prismjs": "^1.27.0" }, "funding": { @@ -23,10 +24,10 @@ } }, "../slotted-element": { - "version": "1.1.0", + "version": "1.1.1", "license": "Apache-2.0", "dependencies": { - "css-chain": "^1.1.0" + "css-chain": "^1.1.2" }, "funding": { "type": "patreon", @@ -116,6 +117,53 @@ "node": ">=4" } }, + "node_modules/@chialab/esbuild-plugin-html": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/@chialab/esbuild-plugin-html/-/esbuild-plugin-html-0.15.9.tgz", + "integrity": "sha512-N4gm+NoY/bcw/pJTTr0u7SRpXZV/Xw3VdRXuSAbQgQivHt2lfIl2/V9bdU6m1YR+X/lnKCJPlTMW8FMb4VhVmg==", + "dev": true, + "dependencies": { + "@chialab/esbuild-rna": "^0.15.9", + "@chialab/node-resolve": "^0.15.9" + }, + "engines": { + "node": ">=13" + } + }, + "node_modules/@chialab/esbuild-rna": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/@chialab/esbuild-rna/-/esbuild-rna-0.15.9.tgz", + "integrity": "sha512-VkluZCFE3UZSTqsYmjTbdtHCwQTLk+YYd9vuVeIAXTwnwr1dP5Utjphx+CXNx4eSn/QpBd7kjcvykdVJ136vlQ==", + "dev": true, + "dependencies": { + "@chialab/estransform": "^0.15.3", + "@chialab/node-resolve": "^0.15.9" + }, + "engines": { + "node": ">=13" + } + }, + "node_modules/@chialab/estransform": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/@chialab/estransform/-/estransform-0.15.3.tgz", + "integrity": "sha512-5CxuC4+mgHGNedbxmJ0avDsyHngDRCt5ytlASJNtCGvaeEkcEFhXSKT8SvVBkOJcMOepBBP3Pq0BdBnw50WwLg==", + "dev": true, + "dependencies": { + "@parcel/source-map": "^2.0.0" + }, + "engines": { + "node": ">=13" + } + }, + "node_modules/@chialab/node-resolve": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/@chialab/node-resolve/-/node-resolve-0.15.9.tgz", + "integrity": "sha512-4/2GWaGnMV2CLK4QsG4OyJVb6gcz28XPb/bswYWrH9DmYEx6YXVlNEGDswNJxFeYXvXBCIQ5UGzAzjdEMa075A==", + "dev": true, + "engines": { + "node": ">=13" + } + }, "node_modules/@esm-bundle/chai": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/@esm-bundle/chai/-/chai-4.3.4.tgz", @@ -126,9 +174,9 @@ } }, "node_modules/@lit/reactive-element": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.3.0.tgz", - "integrity": "sha512-0TKSIuJHXNLM0k98fi0AdMIdUoHIYlDHTP+0Vruc2SOs4T6vU1FinXgSvYd8mSrkt+8R+qdRAXvjpqrMXMyBgw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.3.1.tgz", + "integrity": "sha512-nOJARIr3pReqK3hfFCSW2Zg/kFcFsSAlIE7z4a0C9D2dPrgD/YSn3ZP2ET/rxKB65SXyG7jJbkynBRm+tGlacw==", "dev": true }, "node_modules/@nodelib/fs.scandir": { @@ -208,15 +256,15 @@ } }, "node_modules/@open-wc/testing": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-3.1.1.tgz", - "integrity": "sha512-jhetklmEe599T3Ran2VjWq2gpTi0xl0MHei0SOpTLSOCddj8E7xtZLm4KbRi4wPBiE6EQgg2raP3oDVyWuTFzg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-3.1.2.tgz", + "integrity": "sha512-2KjEszLItrIEZwCLFjWOSy4rnLzLOpgckrKfZjNA39PpFR3xD9bqYU30TTnLRHBk2B/0ZUbHglyca3iwcF964w==", "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.1.1", + "@open-wc/testing-helpers": "^2.1.2", "@types/chai": "^4.2.11", "@types/chai-dom": "^0.0.9", "@types/sinon-chai": "^3.2.3", @@ -224,9 +272,9 @@ } }, "node_modules/@open-wc/testing-helpers": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@open-wc/testing-helpers/-/testing-helpers-2.1.1.tgz", - "integrity": "sha512-PFE+nd5IYSUgjIvmjV5PwjrBcTjLPOzvPrBk29krCVgwbgU4SS5WIxaHuxxGzpRn0SYDNlop5e/BMNjL2i4bsg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@open-wc/testing-helpers/-/testing-helpers-2.1.2.tgz", + "integrity": "sha512-NEdsV47DnOWaw3Wpp85p4qZ6bdubtGPdlTiblk8vSf2HJ2sR4b3ckyRWzsj/k+pcxrDGt8z0Awz71p+048Rrfg==", "dev": true, "dependencies": { "@open-wc/scoped-elements": "^2.0.1", @@ -234,6 +282,18 @@ "lit-html": "^2.0.0" } }, + "node_modules/@parcel/source-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.0.2.tgz", + "integrity": "sha512-NnUrPYLpYB6qyx2v6bcRPn/gVigmGG6M6xL8wIg/i0dP1GLkuY1nf+Hqdf63FzPTqqT7K3k6eE5yHPQVMO5jcA==", + "dev": true, + "dependencies": { + "detect-libc": "^1.0.3" + }, + "engines": { + "node": "^12.18.3 || >=14" + } + }, "node_modules/@rollup/plugin-node-resolve": { "version": "11.2.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", @@ -1429,15 +1489,6 @@ "node-fetch": "2.6.7" } }, - "node_modules/css-chain": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/css-chain/-/css-chain-1.1.0.tgz", - "integrity": "sha512-sgyXTSvOIboFT0pl4qn6obwQpqZKFsrJ6w1oT+ui6O0Ir9BrAHoS1XHCUkIsNsWB2UnVORLi9Y5xKV7nKbb/Eg==", - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/sashafirsov" - } - }, "node_modules/debounce": { "version": "1.2.0", "dev": true, @@ -1526,6 +1577,18 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "dev": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/devtools-protocol": { "version": "0.0.960912", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.960912.tgz", @@ -1594,6 +1657,361 @@ "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", "dev": true }, + "node_modules/esbuild": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.27.tgz", + "integrity": "sha512-MZQt5SywZS3hA9fXnMhR22dv0oPGh6QtjJRIYbgL1AeqAoQZE+Qn5ppGYQAoHv/vq827flj4tIJ79Mrdiwk46Q==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "esbuild-android-64": "0.14.27", + "esbuild-android-arm64": "0.14.27", + "esbuild-darwin-64": "0.14.27", + "esbuild-darwin-arm64": "0.14.27", + "esbuild-freebsd-64": "0.14.27", + "esbuild-freebsd-arm64": "0.14.27", + "esbuild-linux-32": "0.14.27", + "esbuild-linux-64": "0.14.27", + "esbuild-linux-arm": "0.14.27", + "esbuild-linux-arm64": "0.14.27", + "esbuild-linux-mips64le": "0.14.27", + "esbuild-linux-ppc64le": "0.14.27", + "esbuild-linux-riscv64": "0.14.27", + "esbuild-linux-s390x": "0.14.27", + "esbuild-netbsd-64": "0.14.27", + "esbuild-openbsd-64": "0.14.27", + "esbuild-sunos-64": "0.14.27", + "esbuild-windows-32": "0.14.27", + "esbuild-windows-64": "0.14.27", + "esbuild-windows-arm64": "0.14.27" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.27.tgz", + "integrity": "sha512-LuEd4uPuj/16Y8j6kqy3Z2E9vNY9logfq8Tq+oTE2PZVuNs3M1kj5Qd4O95ee66yDGb3isaOCV7sOLDwtMfGaQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.27.tgz", + "integrity": "sha512-E8Ktwwa6vX8q7QeJmg8yepBYXaee50OdQS3BFtEHKrzbV45H4foMOeEE7uqdjGQZFBap5VAqo7pvjlyA92wznQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.27.tgz", + "integrity": "sha512-czw/kXl/1ZdenPWfw9jDc5iuIYxqUxgQ/Q+hRd4/3udyGGVI31r29LCViN2bAJgGvQkqyLGVcG03PJPEXQ5i2g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.27.tgz", + "integrity": "sha512-BEsv2U2U4o672oV8+xpXNxN9bgqRCtddQC6WBh4YhXKDcSZcdNh7+6nS+DM2vu7qWIWNA4JbRG24LUUYXysimQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.27.tgz", + "integrity": "sha512-7FeiFPGBo+ga+kOkDxtPmdPZdayrSzsV9pmfHxcyLKxu+3oTcajeZlOO1y9HW+t5aFZPiv7czOHM4KNd0tNwCA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.27.tgz", + "integrity": "sha512-8CK3++foRZJluOWXpllG5zwAVlxtv36NpHfsbWS7TYlD8S+QruXltKlXToc/5ZNzBK++l6rvRKELu/puCLc7jA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.27.tgz", + "integrity": "sha512-qhNYIcT+EsYSBClZ5QhLzFzV5iVsP1YsITqblSaztr3+ZJUI+GoK8aXHyzKd7/CKKuK93cxEMJPpfi1dfsOfdw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.27.tgz", + "integrity": "sha512-ESjck9+EsHoTaKWlFKJpPZRN26uiav5gkI16RuI8WBxUdLrrAlYuYSndxxKgEn1csd968BX/8yQZATYf/9+/qg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.27.tgz", + "integrity": "sha512-JnnmgUBdqLQO9hoNZQqNHFWlNpSX82vzB3rYuCJMhtkuaWQEmQz6Lec1UIxJdC38ifEghNTBsF9bbe8dFilnCw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.27.tgz", + "integrity": "sha512-no6Mi17eV2tHlJnqBHRLekpZ2/VYx+NfGxKcBE/2xOMYwctsanCaXxw4zapvNrGE9X38vefVXLz6YCF8b1EHiQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.27.tgz", + "integrity": "sha512-NolWP2uOvIJpbwpsDbwfeExZOY1bZNlWE/kVfkzLMsSgqeVcl5YMen/cedRe9mKnpfLli+i0uSp7N+fkKNU27A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.27.tgz", + "integrity": "sha512-/7dTjDvXMdRKmsSxKXeWyonuGgblnYDn0MI1xDC7J1VQXny8k1qgNp6VmrlsawwnsymSUUiThhkJsI+rx0taNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.27.tgz", + "integrity": "sha512-D+aFiUzOJG13RhrSmZgrcFaF4UUHpqj7XSKrIiCXIj1dkIkFqdrmqMSOtSs78dOtObWiOrFCDDzB24UyeEiNGg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.27.tgz", + "integrity": "sha512-CD/D4tj0U4UQjELkdNlZhQ8nDHU5rBn6NGp47Hiz0Y7/akAY5i0oGadhEIg0WCY/HYVXFb3CsSPPwaKcTOW3bg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.27.tgz", + "integrity": "sha512-h3mAld69SrO1VoaMpYl3a5FNdGRE/Nqc+E8VtHOag4tyBwhCQXxtvDDOAKOUQexBGca0IuR6UayQ4ntSX5ij1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.27.tgz", + "integrity": "sha512-xwSje6qIZaDHXWoPpIgvL+7fC6WeubHHv18tusLYMwL+Z6bEa4Pbfs5IWDtQdHkArtfxEkIZz77944z8MgDxGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.27.tgz", + "integrity": "sha512-/nBVpWIDjYiyMhuqIqbXXsxBc58cBVH9uztAOIfWShStxq9BNBik92oPQPJ57nzWXRNKQUEFWr4Q98utDWz7jg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.27.tgz", + "integrity": "sha512-Q9/zEjhZJ4trtWhFWIZvS/7RUzzi8rvkoaS9oiizkHTTKd8UxFwn/Mm2OywsAfYymgUYm8+y2b+BKTNEFxUekw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.27.tgz", + "integrity": "sha512-b3y3vTSl5aEhWHK66ngtiS/c6byLf6y/ZBvODH1YkBM+MGtVL6jN38FdHUsZasCz9gFwYs/lJMVY9u7GL6wfYg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.27.tgz", + "integrity": "sha512-I/reTxr6TFMcR5qbIkwRGvldMIaiBu2+MP0LlD7sOlNXrfqIl9uNjsuxFPGEG4IRomjfQ5q8WT+xlF/ySVkqKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -2335,9 +2753,9 @@ "dev": true }, "node_modules/lit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/lit/-/lit-2.2.0.tgz", - "integrity": "sha512-FDyxUuczo6cJJY/2Bkgfh1872U4ikUvmK1Cb6+lYC1CW+QOo8CaWXCpvPKFzYsz0ojUxoruBLVrECc7VI2f1dQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/lit/-/lit-2.2.1.tgz", + "integrity": "sha512-dSe++R50JqrvNGXmI9OE13de1z5U/Y3J2dTm/9GC86vedI8ILoR8ZGnxfThFpvQ9m0lR0qRnIR4IiKj/jDCfYw==", "dev": true, "dependencies": { "@lit/reactive-element": "^1.3.0", @@ -2356,9 +2774,9 @@ } }, "node_modules/lit-html": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.2.0.tgz", - "integrity": "sha512-dJnevgV8VkCuOXLWrjQopDE8nSy8CzipZ/ATfYQv7z7Dct4abblcKecf50gkIScuwCTzKvRLgvTgV0zzagW4gA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.2.1.tgz", + "integrity": "sha512-AiJ/Rs0awjICs2FioTnHSh+Np5dhYSkyRczKy3wKjp8qjLhr1Ov+GiHrUQNdX8ou1LMuznpIME990AZsa/tR8g==", "dev": true, "dependencies": { "@types/trusted-types": "^2.0.2" @@ -3702,6 +4120,41 @@ } } }, + "@chialab/esbuild-plugin-html": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/@chialab/esbuild-plugin-html/-/esbuild-plugin-html-0.15.9.tgz", + "integrity": "sha512-N4gm+NoY/bcw/pJTTr0u7SRpXZV/Xw3VdRXuSAbQgQivHt2lfIl2/V9bdU6m1YR+X/lnKCJPlTMW8FMb4VhVmg==", + "dev": true, + "requires": { + "@chialab/esbuild-rna": "^0.15.9", + "@chialab/node-resolve": "^0.15.9" + } + }, + "@chialab/esbuild-rna": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/@chialab/esbuild-rna/-/esbuild-rna-0.15.9.tgz", + "integrity": "sha512-VkluZCFE3UZSTqsYmjTbdtHCwQTLk+YYd9vuVeIAXTwnwr1dP5Utjphx+CXNx4eSn/QpBd7kjcvykdVJ136vlQ==", + "dev": true, + "requires": { + "@chialab/estransform": "^0.15.3", + "@chialab/node-resolve": "^0.15.9" + } + }, + "@chialab/estransform": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/@chialab/estransform/-/estransform-0.15.3.tgz", + "integrity": "sha512-5CxuC4+mgHGNedbxmJ0avDsyHngDRCt5ytlASJNtCGvaeEkcEFhXSKT8SvVBkOJcMOepBBP3Pq0BdBnw50WwLg==", + "dev": true, + "requires": { + "@parcel/source-map": "^2.0.0" + } + }, + "@chialab/node-resolve": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/@chialab/node-resolve/-/node-resolve-0.15.9.tgz", + "integrity": "sha512-4/2GWaGnMV2CLK4QsG4OyJVb6gcz28XPb/bswYWrH9DmYEx6YXVlNEGDswNJxFeYXvXBCIQ5UGzAzjdEMa075A==", + "dev": true + }, "@esm-bundle/chai": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/@esm-bundle/chai/-/chai-4.3.4.tgz", @@ -3712,9 +4165,9 @@ } }, "@lit/reactive-element": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.3.0.tgz", - "integrity": "sha512-0TKSIuJHXNLM0k98fi0AdMIdUoHIYlDHTP+0Vruc2SOs4T6vU1FinXgSvYd8mSrkt+8R+qdRAXvjpqrMXMyBgw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.3.1.tgz", + "integrity": "sha512-nOJARIr3pReqK3hfFCSW2Zg/kFcFsSAlIE7z4a0C9D2dPrgD/YSn3ZP2ET/rxKB65SXyG7jJbkynBRm+tGlacw==", "dev": true }, "@nodelib/fs.scandir": { @@ -3785,15 +4238,15 @@ } }, "@open-wc/testing": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-3.1.1.tgz", - "integrity": "sha512-jhetklmEe599T3Ran2VjWq2gpTi0xl0MHei0SOpTLSOCddj8E7xtZLm4KbRi4wPBiE6EQgg2raP3oDVyWuTFzg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-3.1.2.tgz", + "integrity": "sha512-2KjEszLItrIEZwCLFjWOSy4rnLzLOpgckrKfZjNA39PpFR3xD9bqYU30TTnLRHBk2B/0ZUbHglyca3iwcF964w==", "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.1.1", + "@open-wc/testing-helpers": "^2.1.2", "@types/chai": "^4.2.11", "@types/chai-dom": "^0.0.9", "@types/sinon-chai": "^3.2.3", @@ -3801,9 +4254,9 @@ } }, "@open-wc/testing-helpers": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@open-wc/testing-helpers/-/testing-helpers-2.1.1.tgz", - "integrity": "sha512-PFE+nd5IYSUgjIvmjV5PwjrBcTjLPOzvPrBk29krCVgwbgU4SS5WIxaHuxxGzpRn0SYDNlop5e/BMNjL2i4bsg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@open-wc/testing-helpers/-/testing-helpers-2.1.2.tgz", + "integrity": "sha512-NEdsV47DnOWaw3Wpp85p4qZ6bdubtGPdlTiblk8vSf2HJ2sR4b3ckyRWzsj/k+pcxrDGt8z0Awz71p+048Rrfg==", "dev": true, "requires": { "@open-wc/scoped-elements": "^2.0.1", @@ -3811,6 +4264,15 @@ "lit-html": "^2.0.0" } }, + "@parcel/source-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.0.2.tgz", + "integrity": "sha512-NnUrPYLpYB6qyx2v6bcRPn/gVigmGG6M6xL8wIg/i0dP1GLkuY1nf+Hqdf63FzPTqqT7K3k6eE5yHPQVMO5jcA==", + "dev": true, + "requires": { + "detect-libc": "^1.0.3" + } + }, "@rollup/plugin-node-resolve": { "version": "11.2.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", @@ -4748,11 +5210,6 @@ "node-fetch": "2.6.7" } }, - "css-chain": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/css-chain/-/css-chain-1.1.0.tgz", - "integrity": "sha512-sgyXTSvOIboFT0pl4qn6obwQpqZKFsrJ6w1oT+ui6O0Ir9BrAHoS1XHCUkIsNsWB2UnVORLi9Y5xKV7nKbb/Eg==" - }, "debounce": { "version": "1.2.0", "dev": true @@ -4812,6 +5269,12 @@ "integrity": "sha512-R5QZrOXxSs0JDUIU/VANvRJlQVMts9C0L76HToQdPdlftfZCE7W6dyH0G4GZ5UW9fRqUOhAoCE2aGekuu+3HjQ==", "dev": true }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "dev": true + }, "devtools-protocol": { "version": "0.0.960912", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.960912.tgz", @@ -4870,6 +5333,174 @@ "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", "dev": true }, + "esbuild": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.27.tgz", + "integrity": "sha512-MZQt5SywZS3hA9fXnMhR22dv0oPGh6QtjJRIYbgL1AeqAoQZE+Qn5ppGYQAoHv/vq827flj4tIJ79Mrdiwk46Q==", + "dev": true, + "requires": { + "esbuild-android-64": "0.14.27", + "esbuild-android-arm64": "0.14.27", + "esbuild-darwin-64": "0.14.27", + "esbuild-darwin-arm64": "0.14.27", + "esbuild-freebsd-64": "0.14.27", + "esbuild-freebsd-arm64": "0.14.27", + "esbuild-linux-32": "0.14.27", + "esbuild-linux-64": "0.14.27", + "esbuild-linux-arm": "0.14.27", + "esbuild-linux-arm64": "0.14.27", + "esbuild-linux-mips64le": "0.14.27", + "esbuild-linux-ppc64le": "0.14.27", + "esbuild-linux-riscv64": "0.14.27", + "esbuild-linux-s390x": "0.14.27", + "esbuild-netbsd-64": "0.14.27", + "esbuild-openbsd-64": "0.14.27", + "esbuild-sunos-64": "0.14.27", + "esbuild-windows-32": "0.14.27", + "esbuild-windows-64": "0.14.27", + "esbuild-windows-arm64": "0.14.27" + } + }, + "esbuild-android-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.27.tgz", + "integrity": "sha512-LuEd4uPuj/16Y8j6kqy3Z2E9vNY9logfq8Tq+oTE2PZVuNs3M1kj5Qd4O95ee66yDGb3isaOCV7sOLDwtMfGaQ==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.27.tgz", + "integrity": "sha512-E8Ktwwa6vX8q7QeJmg8yepBYXaee50OdQS3BFtEHKrzbV45H4foMOeEE7uqdjGQZFBap5VAqo7pvjlyA92wznQ==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.27.tgz", + "integrity": "sha512-czw/kXl/1ZdenPWfw9jDc5iuIYxqUxgQ/Q+hRd4/3udyGGVI31r29LCViN2bAJgGvQkqyLGVcG03PJPEXQ5i2g==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.27.tgz", + "integrity": "sha512-BEsv2U2U4o672oV8+xpXNxN9bgqRCtddQC6WBh4YhXKDcSZcdNh7+6nS+DM2vu7qWIWNA4JbRG24LUUYXysimQ==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.27.tgz", + "integrity": "sha512-7FeiFPGBo+ga+kOkDxtPmdPZdayrSzsV9pmfHxcyLKxu+3oTcajeZlOO1y9HW+t5aFZPiv7czOHM4KNd0tNwCA==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.27.tgz", + "integrity": "sha512-8CK3++foRZJluOWXpllG5zwAVlxtv36NpHfsbWS7TYlD8S+QruXltKlXToc/5ZNzBK++l6rvRKELu/puCLc7jA==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.27.tgz", + "integrity": "sha512-qhNYIcT+EsYSBClZ5QhLzFzV5iVsP1YsITqblSaztr3+ZJUI+GoK8aXHyzKd7/CKKuK93cxEMJPpfi1dfsOfdw==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.27.tgz", + "integrity": "sha512-ESjck9+EsHoTaKWlFKJpPZRN26uiav5gkI16RuI8WBxUdLrrAlYuYSndxxKgEn1csd968BX/8yQZATYf/9+/qg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.27.tgz", + "integrity": "sha512-JnnmgUBdqLQO9hoNZQqNHFWlNpSX82vzB3rYuCJMhtkuaWQEmQz6Lec1UIxJdC38ifEghNTBsF9bbe8dFilnCw==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.27.tgz", + "integrity": "sha512-no6Mi17eV2tHlJnqBHRLekpZ2/VYx+NfGxKcBE/2xOMYwctsanCaXxw4zapvNrGE9X38vefVXLz6YCF8b1EHiQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.27.tgz", + "integrity": "sha512-NolWP2uOvIJpbwpsDbwfeExZOY1bZNlWE/kVfkzLMsSgqeVcl5YMen/cedRe9mKnpfLli+i0uSp7N+fkKNU27A==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.27.tgz", + "integrity": "sha512-/7dTjDvXMdRKmsSxKXeWyonuGgblnYDn0MI1xDC7J1VQXny8k1qgNp6VmrlsawwnsymSUUiThhkJsI+rx0taNA==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.27.tgz", + "integrity": "sha512-D+aFiUzOJG13RhrSmZgrcFaF4UUHpqj7XSKrIiCXIj1dkIkFqdrmqMSOtSs78dOtObWiOrFCDDzB24UyeEiNGg==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.27.tgz", + "integrity": "sha512-CD/D4tj0U4UQjELkdNlZhQ8nDHU5rBn6NGp47Hiz0Y7/akAY5i0oGadhEIg0WCY/HYVXFb3CsSPPwaKcTOW3bg==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.27.tgz", + "integrity": "sha512-h3mAld69SrO1VoaMpYl3a5FNdGRE/Nqc+E8VtHOag4tyBwhCQXxtvDDOAKOUQexBGca0IuR6UayQ4ntSX5ij1Q==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.27.tgz", + "integrity": "sha512-xwSje6qIZaDHXWoPpIgvL+7fC6WeubHHv18tusLYMwL+Z6bEa4Pbfs5IWDtQdHkArtfxEkIZz77944z8MgDxGw==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.27.tgz", + "integrity": "sha512-/nBVpWIDjYiyMhuqIqbXXsxBc58cBVH9uztAOIfWShStxq9BNBik92oPQPJ57nzWXRNKQUEFWr4Q98utDWz7jg==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.27.tgz", + "integrity": "sha512-Q9/zEjhZJ4trtWhFWIZvS/7RUzzi8rvkoaS9oiizkHTTKd8UxFwn/Mm2OywsAfYymgUYm8+y2b+BKTNEFxUekw==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.27.tgz", + "integrity": "sha512-b3y3vTSl5aEhWHK66ngtiS/c6byLf6y/ZBvODH1YkBM+MGtVL6jN38FdHUsZasCz9gFwYs/lJMVY9u7GL6wfYg==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.27.tgz", + "integrity": "sha512-I/reTxr6TFMcR5qbIkwRGvldMIaiBu2+MP0LlD7sOlNXrfqIl9uNjsuxFPGEG4IRomjfQ5q8WT+xlF/ySVkqKg==", + "dev": true, + "optional": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -5424,9 +6055,9 @@ } }, "lit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/lit/-/lit-2.2.0.tgz", - "integrity": "sha512-FDyxUuczo6cJJY/2Bkgfh1872U4ikUvmK1Cb6+lYC1CW+QOo8CaWXCpvPKFzYsz0ojUxoruBLVrECc7VI2f1dQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/lit/-/lit-2.2.1.tgz", + "integrity": "sha512-dSe++R50JqrvNGXmI9OE13de1z5U/Y3J2dTm/9GC86vedI8ILoR8ZGnxfThFpvQ9m0lR0qRnIR4IiKj/jDCfYw==", "dev": true, "requires": { "@lit/reactive-element": "^1.3.0", @@ -5445,9 +6076,9 @@ } }, "lit-html": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.2.0.tgz", - "integrity": "sha512-dJnevgV8VkCuOXLWrjQopDE8nSy8CzipZ/ATfYQv7z7Dct4abblcKecf50gkIScuwCTzKvRLgvTgV0zzagW4gA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.2.1.tgz", + "integrity": "sha512-AiJ/Rs0awjICs2FioTnHSh+Np5dhYSkyRczKy3wKjp8qjLhr1Ov+GiHrUQNdX8ou1LMuznpIME990AZsa/tR8g==", "dev": true, "requires": { "@types/trusted-types": "^2.0.2" @@ -6086,7 +6717,7 @@ "slotted-element": { "version": "file:../slotted-element", "requires": { - "css-chain": "^1.1.0" + "css-chain": "^1.1.2" } }, "source-map": { diff --git a/package.json b/package.json index 8bb1245..6348bad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "slotted-element-test", - "version": "1.1.0", + "version": "1.1.1", "description": "test for fetch-element and slotted-element", "author": { "name": "Sasha Firsov", @@ -25,18 +25,20 @@ "module": "index.js", "type": "module", "scripts": { + "build": "bash build.sh", "start": "web-dev-server", - "test": "web-test-runner --coverage", + "test": "bash test.sh", "test:watch": "web-test-runner --watch" }, "dependencies": { - "css-chain": "^1.1.0", - "slotted-element": "^1.1.0" + "slotted-element": "^1.1.1" }, "devDependencies": { - "@open-wc/testing": "^3.1.1", + "@chialab/esbuild-plugin-html": "^0.15.9", + "@open-wc/testing": "^3.1.2", "@web/dev-server": "^0.1.30", "@web/test-runner": "^0.13.27", + "esbuild": "^0.14.27", "prismjs": "^1.27.0" }, "funding": {