@epa-wg/custom-element-dist 0.0.21 → 0.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/coverage/coverage-final.json +15 -11
- package/coverage/index.html +25 -25
- package/coverage/src/custom-element/coverage.svg +1 -1
- package/coverage/src/custom-element/custom-element.js/coverage.svg +1 -1
- package/coverage/src/custom-element/custom-element.js.html +604 -421
- package/coverage/src/custom-element/custom-element1-1.js/coverage.svg +10 -0
- package/coverage/src/custom-element/custom-element1-1.js.html +2374 -0
- package/coverage/src/custom-element/custom-element1.js/coverage.svg +10 -0
- package/coverage/src/custom-element/custom-element1.js.html +2374 -0
- package/coverage/src/custom-element/http-request.js.html +10 -10
- package/coverage/src/custom-element/index.html +49 -19
- package/coverage/src/custom-element/local-storage.js.html +6 -6
- package/coverage/src/custom-element/location-element.js.html +1 -1
- package/coverage/src/index.html +1 -1
- package/coverage/src/mocks/handlers.ts.html +1 -1
- package/coverage/src/mocks/index.html +1 -1
- package/coverage/src/stories/{attributes.stories.ts.html → attributes.test.stories.ts.html} +51 -15
- package/coverage/src/stories/{css.stories.ts.html → css.test.stories.ts.html} +77 -17
- package/coverage/src/stories/{dom-merge.stories.ts.html → dom-merge.test.stories.ts.html} +60 -12
- package/coverage/src/stories/{external-template.stories.ts.html → external-template.test.stories.ts.html} +42 -12
- package/coverage/src/stories/form.test.stories.ts.html +658 -0
- package/coverage/src/stories/http-request.stories.ts.html +7 -7
- package/coverage/src/stories/index.html +71 -41
- package/coverage/src/stories/{local-storage.stories.ts.html → local-storage.test.stories.ts.html} +56 -20
- package/coverage/src/stories/{location-element.stories.ts.html → location-element.test.stories.ts.html} +53 -17
- package/coverage/src/stories/renderPlay.ts.html +12 -15
- package/coverage/src/stories/slice-events.test.stories.ts/coverage.svg +10 -0
- package/coverage/src/stories/{slice-events.stories.ts.html → slice-events.test.stories.ts.html} +264 -15
- package/coverage/src/stories/slots.test.stories.ts/coverage.svg +10 -0
- package/coverage/src/stories/slots.test.stories.ts.html +739 -0
- package/coverage/src/sum.ts.html +1 -1
- package/dist/custom-element-BISbI4SU.js +463 -0
- package/dist/custom-element-N-sWiqGK.cjs +53 -0
- package/dist/custom-element-bundle.cjs +1 -1
- package/dist/custom-element-bundle.js +2 -2
- package/dist/mockServiceWorker.js +1 -1
- package/package.json +4 -4
- package/public/mockServiceWorker.js +1 -1
- package/src/custom-element/custom-element.d.ts +4 -0
- package/src/custom-element/custom-element.js +103 -42
- package/src/custom-element/custom-element1-1.js +763 -0
- package/src/custom-element/custom-element1.js +763 -0
- package/src/custom-element/custom-element1.js0 +750 -0
- package/src/custom-element/custom-element2.js0 +759 -0
- package/src/custom-element/custom-element3.js0 +763 -0
- package/src/custom-element/demo/a.html +38 -41
- package/src/custom-element/demo/b.html +13 -0
- package/src/custom-element/demo/data-slices.html +32 -0
- package/src/custom-element/demo/form.html +193 -0
- package/src/custom-element/demo/s.xml +19 -14
- package/src/custom-element/demo/s.xslt +22 -38
- package/src/custom-element/demo/s1.xslt +60 -0
- package/src/custom-element/ide/customData-dce.json +14 -1
- package/src/custom-element/ide/web-types-dce.json +6 -1
- package/src/custom-element/ide/web-types-xsl.json +1 -1
- package/src/custom-element/index.html +1 -0
- package/src/custom-element.test.ts +24 -8
- package/src/stories/{attributes.stories.ts → attributes.test.stories.ts} +19 -7
- package/src/stories/{css.stories.ts → css.test.stories.ts} +29 -9
- package/src/stories/{dom-merge.stories.ts → dom-merge.test.stories.ts} +19 -3
- package/src/stories/{external-template.stories.ts → external-template.test.stories.ts} +13 -3
- package/src/stories/form.test.stories.ts +191 -0
- package/src/stories/http-request.stories.ts +6 -6
- package/src/stories/http-request.test.ts +0 -9
- package/src/stories/{local-storage.stories.ts → local-storage.test.stories.ts} +24 -12
- package/src/stories/{location-element.stories.ts → location-element.test.stories.ts} +21 -9
- package/src/stories/renderPlay.ts +1 -2
- package/src/stories/{slice-events.stories.ts → slice-events.test.stories.ts} +88 -5
- package/src/stories/slots.test.stories.ts +218 -0
- package/storybook-static/assets/{Color-RQJUDNI5-C4yZhNbM.js → Color-PRSJMWNM-e4s261EJ.js} +1 -1
- package/storybook-static/assets/{Configure-C7d36rng.js → Configure-DWut7txe.js} +1 -1
- package/storybook-static/assets/DocsRenderer-K4EAMTCU-CaXVGjCl.js +2 -0
- package/storybook-static/assets/WithTooltip-KJL26V4Q--B8vdnMi.js +1 -0
- package/storybook-static/assets/{attributes.stories-ZB0RTY1d.js → attributes.test.stories-IuwazrdL.js} +21 -21
- package/storybook-static/assets/css.test.stories-D9WaxrEv.js +96 -0
- package/storybook-static/assets/custom-element-BV8-hRQS.js +219 -0
- package/storybook-static/assets/{dom-merge.stories-CgHZUABU.js → dom-merge.test.stories-BhbNeum_.js} +5 -6
- package/storybook-static/assets/{entry-preview-CQqNFx4W.js → entry-preview-DrgzXgwT.js} +1 -1
- package/storybook-static/assets/{entry-preview-docs-CWgqLfd3.js → entry-preview-docs-Bxv0qQWs.js} +1 -1
- package/storybook-static/assets/{external-template.stories-DtSLMxvg.js → external-template.test.stories-Bpr_wxBo.js} +23 -24
- package/storybook-static/assets/form.test.stories-3tURbEdv.js +250 -0
- package/storybook-static/assets/{formatter-B5HCVTEV-tKeEfJA9.js → formatter-2WMMO6ZP-SJtgH3vM.js} +5 -5
- package/storybook-static/assets/http-request.stories-8K_qSs8C.js +300 -0
- package/storybook-static/assets/iframe-CM82WlGY.js +2 -0
- package/storybook-static/assets/index-CEZitmnt.js +548 -0
- package/storybook-static/assets/index-CVRyq5ci.js +27 -0
- package/storybook-static/assets/{index-DnEJ_bKa.js → index-D1MP-Zis.js} +1 -1
- package/storybook-static/assets/index-DNL-IEpS.js +1 -0
- package/storybook-static/assets/index-DXimoRZY.js +1 -0
- package/storybook-static/assets/index-DuIEV_9C.js +13 -0
- package/storybook-static/assets/{lit-element-B4_0akdT.js → lit-element-CenEXOuS.js} +2 -2
- package/storybook-static/assets/{local-storage.stories-BkO6djDz.js → local-storage.test.stories-CtisAQBB.js} +28 -24
- package/storybook-static/assets/{location-element.stories-DCIOUd0D.js → location-element.test.stories-5O_t_m4Y.js} +11 -11
- package/storybook-static/assets/preview-4Up_z4Em.js +7 -0
- package/storybook-static/assets/{preview-CkgAD_DE.js → preview-5Y0XiZgz.js} +2 -2
- package/storybook-static/assets/preview-BKCN0mOr.js +1 -0
- package/storybook-static/assets/preview-DRnyIGXK.js +48 -0
- package/storybook-static/assets/preview-FpHGYA1q.js +1 -0
- package/storybook-static/assets/{preview-PxUn-cIn.js → preview-TCN6m6T-.js} +1 -1
- package/storybook-static/assets/slice-events.test.stories-BSXCLIA5.js +231 -0
- package/storybook-static/assets/slots.test.stories-B1vqfHmN.js +214 -0
- package/storybook-static/assets/syntaxhighlighter-BP7B2CQK-BWFH_0wQ.js +1 -0
- package/storybook-static/iframe.html +153 -10
- package/storybook-static/index.html +1 -1
- package/storybook-static/index.json +1 -1
- package/storybook-static/mockServiceWorker.js +1 -1
- package/storybook-static/project.json +1 -1
- package/storybook-static/sb-addons/chromatic-com-storybook-9/manager-bundle.js +35 -29
- package/storybook-static/sb-addons/chromatic-com-storybook-9/manager-bundle.js.LEGAL.txt +1 -1
- package/storybook-static/sb-addons/essentials-actions-3/manager-bundle.js +1 -1
- package/storybook-static/sb-addons/essentials-backgrounds-4/manager-bundle.js +5 -5
- package/storybook-static/sb-addons/essentials-controls-2/manager-bundle.js +35 -35
- package/storybook-static/sb-addons/essentials-measure-7/manager-bundle.js +1 -1
- package/storybook-static/sb-addons/essentials-outline-8/manager-bundle.js +1 -1
- package/storybook-static/sb-addons/essentials-toolbars-6/manager-bundle.js +1 -1
- package/storybook-static/sb-addons/essentials-viewport-5/manager-bundle.js +1 -1
- package/storybook-static/sb-addons/interactions-10/manager-bundle.js +18 -16
- package/storybook-static/sb-addons/links-1/manager-bundle.js +1 -1
- package/storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +1 -1
- package/storybook-static/sb-manager/WithTooltip-KJL26V4Q-5LS5AN27.js +1 -0
- package/storybook-static/sb-manager/{chunk-S4VOIVUE.js → chunk-B3YDJJJH.js} +9 -9
- package/storybook-static/sb-manager/{chunk-FEE35O7J.js → chunk-BLWCBWKL.js} +3 -3
- package/storybook-static/sb-manager/{chunk-XCO5HRLK.js → chunk-GUVK2GTO.js} +3 -3
- package/storybook-static/sb-manager/chunk-LFRML3ZV.js +186 -0
- package/storybook-static/sb-manager/chunk-MC7RAF2B.js +274 -0
- package/storybook-static/sb-manager/{chunk-XP3HGWTR.js → chunk-ZR5JZWHI.js} +1 -1
- package/storybook-static/sb-manager/{formatter-B5HCVTEV-7DCBOGO6.js → formatter-2WMMO6ZP-JI7RHVTW.js} +1 -1
- package/storybook-static/sb-manager/globals-module-info.js +1 -1
- package/storybook-static/sb-manager/globals-runtime.js +1 -1
- package/storybook-static/sb-manager/index.js +1 -1
- package/storybook-static/sb-manager/runtime.js +1 -1
- package/storybook-static/sb-manager/{syntaxhighlighter-JOJW2KGS-VF6EEVPI.js → syntaxhighlighter-BP7B2CQK-WOJYHKQR.js} +1 -1
- package/storybook-static/sb-preview/runtime.js +28 -11
- package/vite.config.js +5 -5
- package/dist/custom-element-B4v-KaIh.cjs +0 -53
- package/dist/custom-element-_g0GTup2.js +0 -436
- package/src/stories/attributes.test.ts +0 -14
- package/src/stories/css.test.ts +0 -12
- package/src/stories/dom-merge.test.ts +0 -12
- package/src/stories/external-template.test.ts +0 -12
- package/src/stories/local-storage.test.ts +0 -12
- package/src/stories/location-element.test.ts +0 -14
- package/src/stories/slice-events.test.ts +0 -12
- package/storybook-static/assets/DocsRenderer-K4EAMTCU-BLMupvSb.js +0 -2
- package/storybook-static/assets/WithTooltip-Y7J54OF7-BAQSPSFk.js +0 -1
- package/storybook-static/assets/css.stories-CLSX-Xxd.js +0 -86
- package/storybook-static/assets/custom-element-BLZZ00dz.js +0 -53
- package/storybook-static/assets/http-request.stories-CUzlXO89.js +0 -300
- package/storybook-static/assets/iframe-gCvlWuoC.js +0 -2
- package/storybook-static/assets/index-CBQwM6ST.js +0 -508
- package/storybook-static/assets/index-CDavW7r9.js +0 -193
- package/storybook-static/assets/index-CQA5dlr6.js +0 -13
- package/storybook-static/assets/index-DgaNIR0t.js +0 -1
- package/storybook-static/assets/index-Dkj0J1ds.js +0 -1
- package/storybook-static/assets/preview-C6t8KBFr.js +0 -1
- package/storybook-static/assets/preview-CYD85dwb.js +0 -7
- package/storybook-static/assets/preview-D8LadFCz.js +0 -48
- package/storybook-static/assets/preview-DNpCpRPf.js +0 -1
- package/storybook-static/assets/slice-events.stories-DXKjXI37.js +0 -115
- package/storybook-static/assets/syntaxhighlighter-JOJW2KGS-C04pIVD3.js +0 -1
- package/storybook-static/sb-manager/WithTooltip-Y7J54OF7-CEHQ77YF.js +0 -1
- package/storybook-static/sb-manager/chunk-E3WK6ZOZ.js +0 -234
- package/storybook-static/sb-manager/chunk-E6ABNH5R.js +0 -183
- /package/coverage/src/stories/{attributes.stories.ts → attributes.test.stories.ts}/coverage.svg +0 -0
- /package/coverage/src/stories/{css.stories.ts → css.test.stories.ts}/coverage.svg +0 -0
- /package/coverage/src/stories/{dom-merge.stories.ts → dom-merge.test.stories.ts}/coverage.svg +0 -0
- /package/coverage/src/stories/{external-template.stories.ts → external-template.test.stories.ts}/coverage.svg +0 -0
- /package/coverage/src/stories/{local-storage.stories.ts → form.test.stories.ts}/coverage.svg +0 -0
- /package/coverage/src/stories/{location-element.stories.ts → local-storage.test.stories.ts}/coverage.svg +0 -0
- /package/coverage/src/stories/{slice-events.stories.ts → location-element.test.stories.ts}/coverage.svg +0 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import{i as O,d as p,E as j,t as de,I as D,s as U,R as pe}from"./index-DuIEV_9C.js";function fe(e,t){const r=e.emit;if(r._isPiped)return;const s=function(i,...n){return t.emit(i,...n),r.call(this,i,...n)};s._isPiped=!0,e.emit=s}function ge(e){const t=[...e];return Object.freeze(t),t}class me{subscriptions=[];dispose(){let t;for(;t=this.subscriptions.shift();)t()}}class ye{constructor(t){this.initialHandlers=t,this.handlers=[...t]}handlers;prepend(t){this.handlers.unshift(...t)}reset(t){this.handlers=t.length>0?[...t]:[...this.initialHandlers]}currentHandlers(){return this.handlers}}class ve extends me{handlersController;emitter;publicEmitter;events;constructor(...t){super(),O(this.validateHandlers(t),p.formatMessage("Failed to apply given request handlers: invalid input. Did you forget to spread the request handlers Array?")),this.handlersController=new ye(t),this.emitter=new j,this.publicEmitter=new j,fe(this.emitter,this.publicEmitter),this.events=this.createLifeCycleEvents(),this.subscriptions.push(()=>{this.emitter.removeAllListeners(),this.publicEmitter.removeAllListeners()})}validateHandlers(t){return t.every(r=>!Array.isArray(r))}use(...t){O(this.validateHandlers(t),p.formatMessage('Failed to call "use()" with the given request handlers: invalid input. Did you forget to spread the array of request handlers?')),this.handlersController.prepend(t)}restoreHandlers(){this.handlersController.currentHandlers().forEach(t=>{t.isUsed=!1})}resetHandlers(...t){this.handlersController.reset(t)}listHandlers(){return ge(this.handlersController.currentHandlers())}createLifeCycleEvents(){return{on:(...t)=>this.publicEmitter.on(...t),removeListener:(...t)=>this.publicEmitter.removeListener(...t),removeAllListeners:(...t)=>this.publicEmitter.removeAllListeners(...t)}}}var we=async e=>{try{return{error:null,data:await e().catch(r=>{throw r})}}catch(t){return{error:t,data:null}}};const be=async({request:e,requestId:t,handlers:r,resolutionContext:s})=>{let o=null,i=null;for(const n of r)if(i=await n.run({request:e,requestId:t,resolutionContext:s}),i!==null&&(o=n),i?.response)break;return o?{handler:o,parsedResult:i?.parsedResult,response:i?.response}:null};async function Ee(e,t="warn"){const r=new URL(e.url),s=de(r)+r.search,o=`intercepted a request without a matching request handler:
|
|
2
|
+
|
|
3
|
+
• ${e.method} ${s}
|
|
4
|
+
|
|
5
|
+
If you still wish to intercept this unhandled request, please create a request handler for it.
|
|
6
|
+
Read more: https://mswjs.io/docs/getting-started/mocks`;function i(n){switch(n){case"error":throw p.error("Error: %s",o),new D(p.formatMessage('Cannot bypass a request when using the "error" strategy for the "onUnhandledRequest" option.'));case"warn":{p.warn("Warning: %s",o);break}case"bypass":break;default:throw new D(p.formatMessage('Failed to react to an unhandled request: unknown strategy "%s". Please provide one of the supported strategies ("bypass", "warn", "error") or a custom callback function as the value of the "onUnhandledRequest" option.',n))}}if(typeof t=="function"){t(e,{warning:i.bind(null,"warn"),error:i.bind(null,"error")});return}r.protocol!=="file:"&&i(t)}function Re(e,t){U.add({...e,url:e.url.toString()},t),U.persist()}async function J(e,t,r,s,o,i){if(o.emit("request:start",{request:e,requestId:t}),e.headers.get("x-msw-intention")==="bypass"){o.emit("request:end",{request:e,requestId:t}),i?.onPassthroughResponse?.(e);return}const n=await we(()=>be({request:e,requestId:t,handlers:r,resolutionContext:i?.resolutionContext}));if(n.error)throw o.emit("unhandledException",{error:n.error,request:e,requestId:t}),n.error;if(!n.data){await Ee(e,s.onUnhandledRequest),o.emit("request:unhandled",{request:e,requestId:t}),o.emit("request:end",{request:e,requestId:t}),i?.onPassthroughResponse?.(e);return}const{response:a}=n.data;if(!a){o.emit("request:end",{request:e,requestId:t}),i?.onPassthroughResponse?.(e);return}if(a.status===302&&a.headers.get("x-msw-intention")==="passthrough"){o.emit("request:end",{request:e,requestId:t}),i?.onPassthroughResponse?.(e);return}Re(e,a),o.emit("request:match",{request:e,requestId:t});const c=n.data,l=i?.transformResponse?.(a)||a;return i?.onMockedResponse?.(l,c),o.emit("request:end",{request:e,requestId:t}),l}function ke(e){return{status:e.status,statusText:e.statusText,headers:Object.fromEntries(e.headers.entries())}}function B(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function z(e,t){return Object.entries(t).reduce((r,[s,o])=>{const i=r[s];return Array.isArray(i)&&Array.isArray(o)?(r[s]=i.concat(o),r):B(i)&&B(o)?(r[s]=z(i,o),r):(r[s]=o,r)},Object.assign({},e))}var qe={},Le=/(%?)(%([sdijo]))/g;function Se(e,t){switch(t){case"s":return e;case"d":case"i":return Number(e);case"j":return JSON.stringify(e);case"o":{if(typeof e=="string")return e;const r=JSON.stringify(e);return r==="{}"||r==="[]"||/^\[object .+?\]$/.test(r)?e:r}}}function q(e,...t){if(t.length===0)return e;let r=0,s=e.replace(Le,(o,i,n,a)=>{const c=t[r],l=Se(c,a);return i?o:(r++,l)});return r<t.length&&(s+=` ${t.slice(r).join(" ")}`),s=s.replace(/%{2,2}/g,"%"),s}var Te=2;function xe(e){if(!e.stack)return;const t=e.stack.split(`
|
|
7
|
+
`);t.splice(1,Te),e.stack=t.join(`
|
|
8
|
+
`)}var Pe=class extends Error{constructor(e,...t){super(e),this.message=e,this.name="Invariant Violation",this.message=q(e,...t),xe(this)}},w=(e,t,...r)=>{if(!e)throw new Pe(t,...r)};w.as=(e,t,r,...s)=>{if(!t){const o=s.length===0?r:q(r,s);let i;try{i=Reflect.construct(e,[o])}catch{i=e(o)}throw i}};function H(){if(typeof navigator<"u"&&navigator.product==="ReactNative")return!0;if(typeof process<"u"){const e=process.type;return e==="renderer"||e==="worker"?!1:!!(process.versions&&process.versions.node)}return!1}var W=async e=>{try{return{error:null,data:await e().catch(r=>{throw r})}}catch(t){return{error:t,data:null}}};function Me(e){return new URL(e,location.href).href}function P(e,t,r){return[e.active,e.installing,e.waiting].filter(n=>n!=null).find(n=>r(n.scriptURL,t))||null}var Ae=async(e,t={},r)=>{const s=Me(e),o=await navigator.serviceWorker.getRegistrations().then(a=>a.filter(c=>P(c,s,r)));!navigator.serviceWorker.controller&&o.length>0&&location.reload();const[i]=o;if(i)return i.update().then(()=>[P(i,s,r),i]);const n=await W(async()=>{const a=await navigator.serviceWorker.register(e,t);return[P(a,s,r),a]});if(n.error){if(n.error.message.includes("(404)")){const c=new URL(t?.scope||"/",location.href);throw new Error(p.formatMessage(`Failed to register a Service Worker for scope ('${c.href}') with script ('${s}'): Service Worker script does not exist at the given path.
|
|
9
|
+
|
|
10
|
+
Did you forget to run "npx msw init <PUBLIC_DIR>"?
|
|
11
|
+
|
|
12
|
+
Learn more about creating the Service Worker script: https://mswjs.io/docs/cli/init`))}throw new Error(p.formatMessage(`Failed to register the Service Worker:
|
|
13
|
+
|
|
14
|
+
%s`,n.error.message))}return n.data};function Y(e={}){if(e.quiet)return;const t=e.message||"Mocking enabled.";console.groupCollapsed(`%c${p.formatMessage(t)}`,"color:orangered;font-weight:bold;"),console.log("%cDocumentation: %chttps://mswjs.io/docs","font-weight:bold","font-weight:normal"),console.log("Found an issue? https://github.com/mswjs/msw/issues"),e.workerUrl&&console.log("Worker script URL:",e.workerUrl),e.workerScope&&console.log("Worker scope:",e.workerScope),console.groupEnd()}async function Ie(e,t){if(e.workerChannel.send("MOCK_ACTIVATE"),await e.events.once("MOCKING_ENABLED"),e.isMockingEnabled){p.warn('Found a redundant "worker.start()" call. Note that starting the worker while mocking is already enabled will have no effect. Consider removing this "worker.start()" call.');return}e.isMockingEnabled=!0,Y({quiet:t.quiet,workerScope:e.registration?.scope,workerUrl:e.worker?.scriptURL})}var Ce=class{constructor(e){this.port=e}postMessage(e,...t){const[r,s]=t;this.port.postMessage({type:e,data:r},{transfer:s})}};function He(e){if(!["HEAD","GET"].includes(e.method))return e.body}function We(e){return new Request(e.url,{...e,body:He(e)})}var _e=(e,t)=>async(r,s)=>{const o=new Ce(r.ports[0]),i=s.payload.id,n=We(s.payload),a=n.clone(),c=n.clone();pe.cache.set(n,c),e.requests.set(i,c);try{await J(n,i,e.getRequestHandlers(),t,e.emitter,{onPassthroughResponse(){o.postMessage("PASSTHROUGH")},async onMockedResponse(l,{handler:h,parsedResult:u}){const d=l.clone(),g=l.clone(),f=ke(l);if(e.supports.readableStreamTransfer){const m=l.body;o.postMessage("MOCK_RESPONSE",{...f,body:m},m?[m]:void 0)}else{const m=l.body===null?null:await d.arrayBuffer();o.postMessage("MOCK_RESPONSE",{...f,body:m})}t.quiet||e.emitter.once("response:mocked",()=>{h.log({request:a,response:g,parsedResult:u})})}})}catch(l){l instanceof Error&&(p.error(`Uncaught exception in the request handler for "%s %s":
|
|
15
|
+
|
|
16
|
+
%s
|
|
17
|
+
|
|
18
|
+
This exception has been gracefully handled as a 500 response, however, it's strongly recommended to resolve this error, as it indicates a mistake in your code. If you wish to mock an error response, please see this guide: https://mswjs.io/docs/recipes/mocking-error-responses`,n.method,n.url,l.stack??l),o.postMessage("MOCK_RESPONSE",{status:500,statusText:"Request Handler Error",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:l.name,message:l.message,stack:l.stack})}))}};async function Oe(e){e.workerChannel.send("INTEGRITY_CHECK_REQUEST");const{payload:t}=await e.events.once("INTEGRITY_CHECK_RESPONSE");t.checksum!=="26357c79639bfa20d64c0efca2a87423"&&p.warn(`The currently registered Service Worker has been generated by a different version of MSW (${t.packageVersion}) and may not be fully compatible with the installed version.
|
|
19
|
+
|
|
20
|
+
It's recommended you update your worker script by running this command:
|
|
21
|
+
|
|
22
|
+
• npx msw init <PUBLIC_DIR>
|
|
23
|
+
|
|
24
|
+
You can also automate this process and make the worker script update automatically upon the library installations. Read more: https://mswjs.io/docs/cli/init.`)}var je=new TextEncoder;function De(e){return je.encode(e)}function Ue(e,t){return new TextDecoder(t).decode(e)}function Be(e){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}var R=Symbol("isPatchedModule");function $e(e,t){try{return e[t],!0}catch{return!1}}var Ne=new Set([101,103,204,205,304]);function Q(e){return Ne.has(e)}function Z(e){return new Response(JSON.stringify(e instanceof Error?{name:e.name,message:e.message,stack:e.stack}:e),{status:500,statusText:"Unhandled Exception",headers:{"Content-Type":"application/json"}})}function S(e){return $e(e,"type")&&e.type==="error"}var Fe=Object.defineProperty,Ge=(e,t)=>{for(var r in t)Fe(e,r,{get:t[r],enumerable:!0})},M={};Ge(M,{blue:()=>Ve,gray:()=>A,green:()=>Je,red:()=>Ke,yellow:()=>Xe});function Xe(e){return`\x1B[33m${e}\x1B[0m`}function Ve(e){return`\x1B[34m${e}\x1B[0m`}function A(e){return`\x1B[90m${e}\x1B[0m`}function Ke(e){return`\x1B[31m${e}\x1B[0m`}function Je(e){return`\x1B[32m${e}\x1B[0m`}var x=H(),ee=class{constructor(e){this.name=e,this.prefix=`[${this.name}]`;const t=$("DEBUG"),r=$("LOG_LEVEL");t==="1"||t==="true"||typeof t<"u"&&this.name.startsWith(t)?(this.debug=k(r,"debug")?v:this.debug,this.info=k(r,"info")?v:this.info,this.success=k(r,"success")?v:this.success,this.warning=k(r,"warning")?v:this.warning,this.error=k(r,"error")?v:this.error):(this.info=v,this.success=v,this.warning=v,this.error=v,this.only=v)}prefix;extend(e){return new ee(`${this.name}:${e}`)}debug(e,...t){this.logEntry({level:"debug",message:A(e),positionals:t,prefix:this.prefix,colors:{prefix:"gray"}})}info(e,...t){this.logEntry({level:"info",message:e,positionals:t,prefix:this.prefix,colors:{prefix:"blue"}});const r=new ze;return(s,...o)=>{r.measure(),this.logEntry({level:"info",message:`${s} ${A(`${r.deltaTime}ms`)}`,positionals:o,prefix:this.prefix,colors:{prefix:"blue"}})}}success(e,...t){this.logEntry({level:"info",message:e,positionals:t,prefix:`✔ ${this.prefix}`,colors:{timestamp:"green",prefix:"green"}})}warning(e,...t){this.logEntry({level:"warning",message:e,positionals:t,prefix:`⚠ ${this.prefix}`,colors:{timestamp:"yellow",prefix:"yellow"}})}error(e,...t){this.logEntry({level:"error",message:e,positionals:t,prefix:`✖ ${this.prefix}`,colors:{timestamp:"red",prefix:"red"}})}only(e){e()}createEntry(e,t){return{timestamp:new Date,level:e,message:t}}logEntry(e){const{level:t,message:r,prefix:s,colors:o,positionals:i=[]}=e,n=this.createEntry(t,r),a=o?.timestamp||"gray",c=o?.prefix||"gray",l={timestamp:M[a],prefix:M[c]};this.getWriter(t)([l.timestamp(this.formatTimestamp(n.timestamp))].concat(s!=null?l.prefix(s):[]).concat(N(r)).join(" "),...i.map(N))}formatTimestamp(e){return`${e.toLocaleTimeString("en-GB")}:${e.getMilliseconds()}`}getWriter(e){switch(e){case"debug":case"success":case"info":return Ye;case"warning":return Qe;case"error":return Ze}}},ze=class{startTime;endTime;deltaTime;constructor(){this.startTime=performance.now()}measure(){this.endTime=performance.now();const e=this.endTime-this.startTime;this.deltaTime=e.toFixed(2)}},v=()=>{};function Ye(e,...t){if(x){process.stdout.write(q(e,...t)+`
|
|
25
|
+
`);return}console.log(e,...t)}function Qe(e,...t){if(x){process.stderr.write(q(e,...t)+`
|
|
26
|
+
`);return}console.warn(e,...t)}function Ze(e,...t){if(x){process.stderr.write(q(e,...t)+`
|
|
27
|
+
`);return}console.error(e,...t)}function $(e){return x?qe[e]:globalThis[e]?.toString()}function k(e,t){return e!==void 0&&e!==t}function N(e){return typeof e>"u"?"undefined":e===null?"null":typeof e=="string"?e:typeof e=="object"?JSON.stringify(e):e.toString()}var et=class extends Error{constructor(e,t,r){super(`Possible EventEmitter memory leak detected. ${r} ${t.toString()} listeners added. Use emitter.setMaxListeners() to increase limit`),this.emitter=e,this.type=t,this.count=r,this.name="MaxListenersExceededWarning"}},te=class{static listenerCount(e,t){return e.listenerCount(t)}constructor(){this.events=new Map,this.maxListeners=te.defaultMaxListeners,this.hasWarnedAboutPotentialMemoryLeak=!1}_emitInternalEvent(e,t,r){this.emit(e,t,r)}_getListeners(e){return Array.prototype.concat.apply([],this.events.get(e))||[]}_removeListener(e,t){const r=e.indexOf(t);return r>-1&&e.splice(r,1),[]}_wrapOnceListener(e,t){const r=(...s)=>(this.removeListener(e,r),t.apply(this,s));return Object.defineProperty(r,"name",{value:t.name}),r}setMaxListeners(e){return this.maxListeners=e,this}getMaxListeners(){return this.maxListeners}eventNames(){return Array.from(this.events.keys())}emit(e,...t){const r=this._getListeners(e);return r.forEach(s=>{s.apply(this,t)}),r.length>0}addListener(e,t){this._emitInternalEvent("newListener",e,t);const r=this._getListeners(e).concat(t);if(this.events.set(e,r),this.maxListeners>0&&this.listenerCount(e)>this.maxListeners&&!this.hasWarnedAboutPotentialMemoryLeak){this.hasWarnedAboutPotentialMemoryLeak=!0;const s=new et(this,e,this.listenerCount(e));console.warn(s)}return this}on(e,t){return this.addListener(e,t)}once(e,t){return this.addListener(e,this._wrapOnceListener(e,t))}prependListener(e,t){const r=this._getListeners(e);if(r.length>0){const s=[t].concat(r);this.events.set(e,s)}else this.events.set(e,r.concat(t));return this}prependOnceListener(e,t){return this.prependListener(e,this._wrapOnceListener(e,t))}removeListener(e,t){const r=this._getListeners(e);return r.length>0&&(this._removeListener(r,t),this.events.set(e,r),this._emitInternalEvent("removeListener",e,t)),this}off(e,t){return this.removeListener(e,t)}removeAllListeners(e){return e?this.events.delete(e):this.events.clear(),this}listeners(e){return Array.from(this._getListeners(e))}listenerCount(e){return this._getListeners(e).length}rawListeners(e){return this.listeners(e)}},re=te;re.defaultMaxListeners=10;var tt="x-interceptors-internal-request-id";function F(e){return globalThis[e]||void 0}function rt(e,t){globalThis[e]=t}function st(e){delete globalThis[e]}var _=class{constructor(e){this.symbol=e,this.readyState="INACTIVE",this.emitter=new re,this.subscriptions=[],this.logger=new ee(e.description),this.emitter.setMaxListeners(0),this.logger.info("constructing the interceptor...")}checkEnvironment(){return!0}apply(){const e=this.logger.extend("apply");if(e.info("applying the interceptor..."),this.readyState==="APPLIED"){e.info("intercepted already applied!");return}if(!this.checkEnvironment()){e.info("the interceptor cannot be applied in this environment!");return}this.readyState="APPLYING";const r=this.getInstance();if(r){e.info("found a running instance, reusing..."),this.on=(s,o)=>(e.info('proxying the "%s" listener',s),r.emitter.addListener(s,o),this.subscriptions.push(()=>{r.emitter.removeListener(s,o),e.info('removed proxied "%s" listener!',s)}),this),this.readyState="APPLIED";return}e.info("no running instance found, setting up a new instance..."),this.setup(),this.setInstance(),this.readyState="APPLIED"}setup(){}on(e,t){const r=this.logger.extend("on");return this.readyState==="DISPOSING"||this.readyState==="DISPOSED"?(r.info("cannot listen to events, already disposed!"),this):(r.info('adding "%s" event listener:',e,t),this.emitter.on(e,t),this)}once(e,t){return this.emitter.once(e,t),this}off(e,t){return this.emitter.off(e,t),this}removeAllListeners(e){return this.emitter.removeAllListeners(e),this}dispose(){const e=this.logger.extend("dispose");if(this.readyState==="DISPOSED"){e.info("cannot dispose, already disposed!");return}if(e.info("disposing the interceptor..."),this.readyState="DISPOSING",!this.getInstance()){e.info("no interceptors running, skipping dispose...");return}if(this.clearInstance(),e.info("global symbol deleted:",F(this.symbol)),this.subscriptions.length>0){e.info("disposing of %d subscriptions...",this.subscriptions.length);for(const t of this.subscriptions)t();this.subscriptions=[],e.info("disposed of all subscriptions!",this.subscriptions.length)}this.emitter.removeAllListeners(),e.info("destroyed the listener!"),this.readyState="DISPOSED"}getInstance(){var e;const t=F(this.symbol);return this.logger.info("retrieved global instance:",(e=t?.constructor)==null?void 0:e.name),t}setInstance(){rt(this.symbol,this),this.logger.info("set global instance!",this.symbol.description)}clearInstance(){st(this.symbol),this.logger.info("cleared global instance!",this.symbol.description)}};function se(){return Math.random().toString(16).slice(2)}var I=class extends _{constructor(e){I.symbol=Symbol(e.name),super(I.symbol),this.interceptors=e.interceptors}setup(){const e=this.logger.extend("setup");e.info("applying all %d interceptors...",this.interceptors.length);for(const t of this.interceptors)e.info('applying "%s" interceptor...',t.constructor.name),t.apply(),e.info("adding interceptor dispose subscription"),this.subscriptions.push(()=>t.dispose())}on(e,t){for(const r of this.interceptors)r.on(e,t);return this}once(e,t){for(const r of this.interceptors)r.once(e,t);return this}off(e,t){for(const r of this.interceptors)r.off(e,t);return this}removeAllListeners(e){for(const t of this.interceptors)t.removeAllListeners(e);return this}};function nt(e){return(t,r)=>{const{payload:s}=r,{requestId:o}=s,i=e.requests.get(o);if(e.requests.delete(o),s.type?.includes("opaque"))return;const n=s.status===0?Response.error():new Response(Q(s.status)?null:s.body,s);n.url||Object.defineProperty(n,"url",{value:i.url,enumerable:!0,writable:!1}),e.emitter.emit(s.isMockedResponse?"response:mocked":"response:bypass",{response:n,request:i,requestId:s.requestId})}}function ot(e,t){!t?.quiet&&!location.href.startsWith(e.scope)&&p.warn(`Cannot intercept requests on this page because it's outside of the worker's scope ("${e.scope}"). If you wish to mock API requests on this page, you must resolve this scope issue.
|
|
28
|
+
|
|
29
|
+
- (Recommended) Register the worker at the root level ("/") of your application.
|
|
30
|
+
- Set the "Service-Worker-Allowed" response header to allow out-of-scope workers.`)}var it=e=>function(r,s){return(async()=>{e.events.removeAllListeners(),e.workerChannel.on("REQUEST",_e(e,r)),e.workerChannel.on("RESPONSE",nt(e));const n=await Ae(r.serviceWorker.url,r.serviceWorker.options,r.findWorker),[a,c]=n;if(!a){const l=s?.findWorker?p.formatMessage(`Failed to locate the Service Worker registration using a custom "findWorker" predicate.
|
|
31
|
+
|
|
32
|
+
Please ensure that the custom predicate properly locates the Service Worker registration at "%s".
|
|
33
|
+
More details: https://mswjs.io/docs/api/setup-worker/start#findworker
|
|
34
|
+
`,r.serviceWorker.url):p.formatMessage(`Failed to locate the Service Worker registration.
|
|
35
|
+
|
|
36
|
+
This most likely means that the worker script URL "%s" cannot resolve against the actual public hostname (%s). This may happen if your application runs behind a proxy, or has a dynamic hostname.
|
|
37
|
+
|
|
38
|
+
Please consider using a custom "serviceWorker.url" option to point to the actual worker script location, or a custom "findWorker" option to resolve the Service Worker registration manually. More details: https://mswjs.io/docs/api/setup-worker/start`,r.serviceWorker.url,location.host);throw new Error(l)}return e.worker=a,e.registration=c,e.events.addListener(window,"beforeunload",()=>{a.state!=="redundant"&&e.workerChannel.send("CLIENT_CLOSED"),window.clearInterval(e.keepAliveInterval)}),await Oe(e).catch(l=>{p.error("Error while checking the worker script integrity. Please report this on GitHub (https://github.com/mswjs/msw/issues), including the original error below."),console.error(l)}),e.keepAliveInterval=window.setInterval(()=>e.workerChannel.send("KEEPALIVE_REQUEST"),5e3),ot(c,e.startOptions),c})().then(async n=>{const a=n.installing||n.waiting;return a&&await new Promise(c=>{a.addEventListener("statechange",()=>{if(a.state==="activated")return c()})}),await Ie(e,r).catch(c=>{throw new Error(`Failed to enable mocking: ${c?.message}`)}),n})};function ne(e={}){e.quiet||console.log(`%c${p.formatMessage("Mocking disabled.")}`,"color:orangered;font-weight:bold;")}var at=e=>function(){if(!e.isMockingEnabled){p.warn('Found a redundant "worker.stop()" call. Note that stopping the worker while mocking already stopped has no effect. Consider removing this "worker.stop()" call.');return}e.workerChannel.send("MOCK_DEACTIVATE"),e.isMockingEnabled=!1,window.clearInterval(e.keepAliveInterval),ne({quiet:e.startOptions?.quiet})},lt={serviceWorker:{url:"/mockServiceWorker.js",options:null},quiet:!1,waitUntilReady:!0,onUnhandledRequest:"warn",findWorker(e,t){return e===t}};function ct(){const e=(t,r)=>{e.state="pending",e.resolve=s=>{if(e.state!=="pending")return;e.result=s;const o=i=>(e.state="fulfilled",i);return t(s instanceof Promise?s:Promise.resolve(s).then(o))},e.reject=s=>{if(e.state==="pending")return queueMicrotask(()=>{e.state="rejected"}),r(e.rejectionReason=s)}};return e}var C=class extends Promise{#e;resolve;reject;constructor(e=null){const t=ct();super((r,s)=>{t(r,s),e?.(t.resolve,t.reject)}),this.#e=t,this.resolve=this.#e.resolve,this.reject=this.#e.reject}get state(){return this.#e.state}get rejectionReason(){return this.#e.rejectionReason}then(e,t){return this.#t(super.then(e,t))}catch(e){return this.#t(super.catch(e))}finally(e){return this.#t(super.finally(e))}#t(e){return Object.defineProperties(e,{resolve:{configurable:!0,value:this.resolve},reject:{configurable:!0,value:this.reject}})}},ut=class{constructor(e){this.request=e,this.responsePromise=new C}respondWith(e){w(this.responsePromise.state==="pending",'Failed to respond to "%s %s" request: the "request" event has already been responded to.',this.request.method,this.request.url),this.responsePromise.resolve(e)}};function oe(e){const t=new ut(e);return Reflect.set(e,"respondWith",t.respondWith.bind(t)),{interactiveRequest:e,requestController:t}}async function T(e,t,...r){const s=e.listeners(t);if(s.length!==0)for(const o of s)await o.apply(e,r)}function ht(e){try{return new URL(e),!0}catch{return!1}}var ie=class extends _{constructor(){super(ie.symbol)}checkEnvironment(){return typeof globalThis<"u"&&typeof globalThis.fetch<"u"}async setup(){const e=globalThis.fetch;w(!e[R],'Failed to patch the "fetch" module: already patched.'),globalThis.fetch=async(t,r)=>{var s;const o=se(),i=typeof t=="string"&&typeof location<"u"&&!ht(t)?new URL(t,location.origin):t,n=new Request(i,r);this.logger.info("[%s] %s",n.method,n.url);const{interactiveRequest:a,requestController:c}=oe(n);this.logger.info('emitting the "request" event for %d listener(s)...',this.emitter.listenerCount("request")),this.emitter.once("request",({requestId:y})=>{y===o&&c.responsePromise.state==="pending"&&c.responsePromise.resolve(void 0)}),this.logger.info("awaiting for the mocked response...");const l=a.signal,h=new C;l&&l.addEventListener("abort",()=>{h.reject(l.reason)},{once:!0});const u=new C,d=y=>{if(this.logger.info("responding with a mock response:",y),this.emitter.listenerCount("response")>0){this.logger.info('emitting the "response" event...');const b=y.clone();this.emitter.emit("response",{response:b,isMockedResponse:!0,request:a,requestId:o})}Object.defineProperty(y,"url",{writable:!1,enumerable:!0,configurable:!1,value:n.url}),u.resolve(y)},g=y=>{u.reject(y)},f=await W(async()=>{const y=T(this.emitter,"request",{request:a,requestId:o});await Promise.race([h,y,c.responsePromise]),this.logger.info("all request listeners have been resolved!");const b=await c.responsePromise;return this.logger.info("event.respondWith called with:",b),b});if(h.state==="rejected")return this.logger.info("request has been aborted:",h.rejectionReason),u.reject(h.rejectionReason),u;if(f.error)return this.logger.info("request listerner threw an error:",f.error),f.error instanceof Response&&(S(f.error)?g(G(f.error)):d(f.error)),this.emitter.listenerCount("unhandledException")>0&&(await T(this.emitter,"unhandledException",{error:f.error,request:n,requestId:o,controller:{respondWith:d,errorWith:g}}),u.state!=="pending")||d(Z(f.error)),u;const m=f.data;return m&&!((s=n.signal)!=null&&s.aborted)?(this.logger.info("received mocked response:",m),S(m)?(this.logger.info("received a network error response, rejecting the request promise..."),g(G(m))):d(m),u):(this.logger.info("no mocked response received!"),e(n).then(y=>{if(this.logger.info("original fetch performed",y),this.emitter.listenerCount("response")>0){this.logger.info('emitting the "response" event...');const b=y.clone();this.emitter.emit("response",{response:b,isMockedResponse:!1,request:a,requestId:o})}return y}))},Object.defineProperty(globalThis.fetch,R,{enumerable:!0,configurable:!0,value:!0}),this.subscriptions.push(()=>{Object.defineProperty(globalThis.fetch,R,{value:void 0}),globalThis.fetch=e,this.logger.info('restored native "globalThis.fetch"!',globalThis.fetch.name)})}},ae=ie;ae.symbol=Symbol("fetch");function G(e){return Object.assign(new TypeError("Failed to fetch"),{cause:e})}function dt(e,t){const r=new Uint8Array(e.byteLength+t.byteLength);return r.set(e,0),r.set(t,e.byteLength),r}var le=class{constructor(e,t){this.AT_TARGET=0,this.BUBBLING_PHASE=0,this.CAPTURING_PHASE=0,this.NONE=0,this.type="",this.srcElement=null,this.currentTarget=null,this.eventPhase=0,this.isTrusted=!0,this.composed=!1,this.cancelable=!0,this.defaultPrevented=!1,this.bubbles=!0,this.lengthComputable=!0,this.loaded=0,this.total=0,this.cancelBubble=!1,this.returnValue=!0,this.type=e,this.target=t?.target||null,this.currentTarget=t?.currentTarget||null,this.timeStamp=Date.now()}composedPath(){return[]}initEvent(e,t,r){this.type=e,this.bubbles=!!t,this.cancelable=!!r}preventDefault(){this.defaultPrevented=!0}stopPropagation(){}stopImmediatePropagation(){}},pt=class extends le{constructor(e,t){super(e),this.lengthComputable=t?.lengthComputable||!1,this.composed=t?.composed||!1,this.loaded=t?.loaded||0,this.total=t?.total||0}},ft=typeof ProgressEvent<"u";function gt(e,t,r){const s=["error","progress","loadstart","loadend","load","timeout","abort"],o=ft?ProgressEvent:pt;return s.includes(t)?new o(t,{lengthComputable:!0,loaded:r?.loaded||0,total:r?.total||0}):new le(t,{target:e,currentTarget:e})}function ce(e,t){if(!(t in e))return null;if(Object.prototype.hasOwnProperty.call(e,t))return e;const s=Reflect.getPrototypeOf(e);return s?ce(s,t):null}function X(e,t){return new Proxy(e,mt(t))}function mt(e){const{constructorCall:t,methodCall:r,getProperty:s,setProperty:o}=e,i={};return typeof t<"u"&&(i.construct=function(n,a,c){const l=Reflect.construct.bind(null,n,a,c);return t.call(c,a,l)}),i.set=function(n,a,c){const l=()=>{const h=ce(n,a)||n,u=Reflect.getOwnPropertyDescriptor(h,a);return typeof u?.set<"u"?(u.set.apply(n,[c]),!0):Reflect.defineProperty(h,a,{writable:!0,enumerable:!0,configurable:!0,value:c})};return typeof o<"u"?o.call(n,[a,c],l):l()},i.get=function(n,a,c){const l=()=>n[a],h=typeof s<"u"?s.call(n,[a,c],l):l();return typeof h=="function"?(...u)=>{const d=h.bind(n,...u);return typeof r<"u"?r.call(n,[a,u],d):d()}:h},i}function yt(e){return["application/xhtml+xml","application/xml","image/svg+xml","text/html","text/xml"].some(r=>e.startsWith(r))}function vt(e){try{return JSON.parse(e)}catch{return null}}function wt(e,t){const r=Q(e.status)?null:t;return new Response(r,{status:e.status,statusText:e.statusText,headers:bt(e.getAllResponseHeaders())})}function bt(e){const t=new Headers,r=e.split(/[\r\n]+/);for(const s of r){if(s.trim()==="")continue;const[o,...i]=s.split(": "),n=i.join(": ");t.append(o,n)}return t}var V=Symbol("isMockedResponse"),Et=H(),Rt=class{constructor(e,t){this.initialRequest=e,this.logger=t,this.method="GET",this.url=null,this.events=new Map,this.requestId=se(),this.requestHeaders=new Headers,this.responseBuffer=new Uint8Array,this.request=X(e,{setProperty:([r,s],o)=>{switch(r){case"ontimeout":{const i=r.slice(2);return this.request.addEventListener(i,s),o()}default:return o()}},methodCall:([r,s],o)=>{var i;switch(r){case"open":{const[n,a]=s;return typeof a>"u"?(this.method="GET",this.url=K(n)):(this.method=n,this.url=K(a)),this.logger=this.logger.extend(`${this.method} ${this.url.href}`),this.logger.info("open",this.method,this.url.href),o()}case"addEventListener":{const[n,a]=s;return this.registerEvent(n,a),this.logger.info("addEventListener",n,a),o()}case"setRequestHeader":{const[n,a]=s;return this.requestHeaders.set(n,a),this.logger.info("setRequestHeader",n,a),o()}case"send":{const[n]=s;n!=null&&(this.requestBody=typeof n=="string"?De(n):n),this.request.addEventListener("load",()=>{if(typeof this.onResponse<"u"){const l=wt(this.request,this.request.response);this.onResponse.call(this,{response:l,isMockedResponse:V in this.request,request:a,requestId:this.requestId})}});const a=this.toFetchApiRequest();(((i=this.onRequest)==null?void 0:i.call(this,{request:a,requestId:this.requestId}))||Promise.resolve()).finally(()=>{if(this.request.readyState<this.request.LOADING)return this.logger.info("request callback settled but request has not been handled (readystate %d), performing as-is...",this.request.readyState),Et&&this.request.setRequestHeader(tt,this.requestId),o()});break}default:return o()}}})}registerEvent(e,t){const s=(this.events.get(e)||[]).concat(t);this.events.set(e,s),this.logger.info('registered event "%s"',e,t)}respondWith(e){this.logger.info("responding with a mocked response: %d %s",e.status,e.statusText),E(this.request,V,!0),E(this.request,"status",e.status),E(this.request,"statusText",e.statusText),E(this.request,"responseURL",this.url.href),this.request.getResponseHeader=new Proxy(this.request.getResponseHeader,{apply:(s,o,i)=>{if(this.logger.info("getResponseHeader",i[0]),this.request.readyState<this.request.HEADERS_RECEIVED)return this.logger.info("headers not received yet, returning null"),null;const n=e.headers.get(i[0]);return this.logger.info('resolved response header "%s" to',i[0],n),n}}),this.request.getAllResponseHeaders=new Proxy(this.request.getAllResponseHeaders,{apply:()=>{if(this.logger.info("getAllResponseHeaders"),this.request.readyState<this.request.HEADERS_RECEIVED)return this.logger.info("headers not received yet, returning empty string"),"";const o=Array.from(e.headers.entries()).map(([i,n])=>`${i}: ${n}`).join(`\r
|
|
39
|
+
`);return this.logger.info("resolved all response headers to",o),o}}),Object.defineProperties(this.request,{response:{enumerable:!0,configurable:!1,get:()=>this.response},responseText:{enumerable:!0,configurable:!1,get:()=>this.responseText},responseXML:{enumerable:!0,configurable:!1,get:()=>this.responseXML}});const t=e.headers.has("Content-Length")?Number(e.headers.get("Content-Length")):void 0;this.logger.info("calculated response body length",t),this.trigger("loadstart",{loaded:0,total:t}),this.setReadyState(this.request.HEADERS_RECEIVED),this.setReadyState(this.request.LOADING);const r=()=>{this.logger.info("finalizing the mocked response..."),this.setReadyState(this.request.DONE),this.trigger("load",{loaded:this.responseBuffer.byteLength,total:t}),this.trigger("loadend",{loaded:this.responseBuffer.byteLength,total:t})};if(e.body){this.logger.info("mocked response has body, streaming...");const s=e.body.getReader(),o=async()=>{const{value:i,done:n}=await s.read();if(n){this.logger.info("response body stream done!"),r();return}i&&(this.logger.info("read response body chunk:",i),this.responseBuffer=dt(this.responseBuffer,i),this.trigger("progress",{loaded:this.responseBuffer.byteLength,total:t})),o()};o()}else r()}responseBufferToText(){return Ue(this.responseBuffer)}get response(){if(this.logger.info("getResponse (responseType: %s)",this.request.responseType),this.request.readyState!==this.request.DONE)return null;switch(this.request.responseType){case"json":{const e=vt(this.responseBufferToText());return this.logger.info("resolved response JSON",e),e}case"arraybuffer":{const e=Be(this.responseBuffer);return this.logger.info("resolved response ArrayBuffer",e),e}case"blob":{const e=this.request.getResponseHeader("Content-Type")||"text/plain",t=new Blob([this.responseBufferToText()],{type:e});return this.logger.info("resolved response Blob (mime type: %s)",t,e),t}default:{const e=this.responseBufferToText();return this.logger.info('resolving "%s" response type as text',this.request.responseType,e),e}}}get responseText(){if(w(this.request.responseType===""||this.request.responseType==="text","InvalidStateError: The object is in invalid state."),this.request.readyState!==this.request.LOADING&&this.request.readyState!==this.request.DONE)return"";const e=this.responseBufferToText();return this.logger.info('getResponseText: "%s"',e),e}get responseXML(){if(w(this.request.responseType===""||this.request.responseType==="document","InvalidStateError: The object is in invalid state."),this.request.readyState!==this.request.DONE)return null;const e=this.request.getResponseHeader("Content-Type")||"";return typeof DOMParser>"u"?(console.warn("Cannot retrieve XMLHttpRequest response body as XML: DOMParser is not defined. You are likely using an environment that is not browser or does not polyfill browser globals correctly."),null):yt(e)?new DOMParser().parseFromString(this.responseBufferToText(),e):null}errorWith(e){this.logger.info("responding with an error"),this.setReadyState(this.request.DONE),this.trigger("error"),this.trigger("loadend")}setReadyState(e){if(this.logger.info("setReadyState: %d -> %d",this.request.readyState,e),this.request.readyState===e){this.logger.info("ready state identical, skipping transition...");return}E(this.request,"readyState",e),this.logger.info("set readyState to: %d",e),e!==this.request.UNSENT&&(this.logger.info('triggerring "readystatechange" event...'),this.trigger("readystatechange"))}trigger(e,t){const r=this.request[`on${e}`],s=gt(this.request,e,t);this.logger.info('trigger "%s"',e,t||""),typeof r=="function"&&(this.logger.info('found a direct "%s" callback, calling...',e),r.call(this.request,s));for(const[o,i]of this.events)o===e&&(this.logger.info('found %d listener(s) for "%s" event, calling...',i.length,e),i.forEach(n=>n.call(this.request,s)))}toFetchApiRequest(){this.logger.info("converting request to a Fetch API Request...");const e=new Request(this.url.href,{method:this.method,headers:this.requestHeaders,credentials:this.request.withCredentials?"include":"same-origin",body:["GET","HEAD"].includes(this.method)?null:this.requestBody}),t=X(e.headers,{methodCall:([r,s],o)=>{switch(r){case"append":case"set":{const[i,n]=s;this.request.setRequestHeader(i,n);break}case"delete":{const[i]=s;console.warn(`XMLHttpRequest: Cannot remove a "${i}" header from the Fetch API representation of the "${e.method} ${e.url}" request. XMLHttpRequest headers cannot be removed.`);break}}return o()}});return E(e,"headers",t),this.logger.info("converted request to a Fetch API Request!",e),e}};function K(e){return typeof location>"u"?new URL(e):new URL(e.toString(),location.href)}function E(e,t,r){Reflect.defineProperty(e,t,{writable:!0,enumerable:!0,value:r})}function kt({emitter:e,logger:t}){return new Proxy(globalThis.XMLHttpRequest,{construct(s,o,i){t.info("constructed new XMLHttpRequest");const n=Reflect.construct(s,o,i),a=Object.getOwnPropertyDescriptors(s.prototype);for(const l in a)Reflect.defineProperty(n,l,a[l]);const c=new Rt(n,t);return c.onRequest=async function({request:l,requestId:h}){const{interactiveRequest:u,requestController:d}=oe(l);this.logger.info("awaiting mocked response..."),e.once("request",({requestId:m})=>{m===h&&d.responsePromise.state==="pending"&&d.respondWith(void 0)});const g=await W(async()=>{this.logger.info('emitting the "request" event for %s listener(s)...',e.listenerCount("request")),await T(e,"request",{request:u,requestId:h}),this.logger.info('all "request" listeners settled!');const m=await d.responsePromise;return this.logger.info("event.respondWith called with:",m),m});if(g.error){if(this.logger.info("request listener threw an exception, aborting request...",g.error),g.error instanceof Response){S(g.error)?c.errorWith(new TypeError("Network error")):this.respondWith(g.error);return}if(e.listenerCount("unhandledException")>0&&(await T(e,"unhandledException",{error:g.error,request:l,requestId:h,controller:{respondWith:c.respondWith.bind(c),errorWith:c.errorWith.bind(c)}}),n.readyState>XMLHttpRequest.OPENED))return;c.respondWith(Z(g.error));return}const f=g.data;if(typeof f<"u"){if(this.logger.info("received mocked response: %d %s",f.status,f.statusText),S(f)){this.logger.info("received a network error response, rejecting the request promise..."),c.errorWith(new TypeError("Network error"));return}return c.respondWith(f)}this.logger.info("no mocked response received, performing request as-is...")},c.onResponse=async function({response:l,isMockedResponse:h,request:u,requestId:d}){this.logger.info('emitting the "response" event for %s listener(s)...',e.listenerCount("response")),e.emit("response",{response:l,isMockedResponse:h,request:u,requestId:d})},c.request}})}var ue=class extends _{constructor(){super(ue.interceptorSymbol)}checkEnvironment(){return typeof globalThis.XMLHttpRequest<"u"}setup(){const e=this.logger.extend("setup");e.info('patching "XMLHttpRequest" module...');const t=globalThis.XMLHttpRequest;w(!t[R],'Failed to patch the "XMLHttpRequest" module: already patched.'),globalThis.XMLHttpRequest=kt({emitter:this.emitter,logger:this.logger}),e.info('native "XMLHttpRequest" module patched!',globalThis.XMLHttpRequest.name),Object.defineProperty(globalThis.XMLHttpRequest,R,{enumerable:!0,configurable:!0,value:!0}),this.subscriptions.push(()=>{Object.defineProperty(globalThis.XMLHttpRequest,R,{value:void 0}),globalThis.XMLHttpRequest=t,e.info('native "XMLHttpRequest" module restored!',globalThis.XMLHttpRequest.name)})}},he=ue;he.interceptorSymbol=Symbol("xhr");function qt(e,t){const r=new I({name:"fallback",interceptors:[new ae,new he]});return r.on("request",async({request:s,requestId:o})=>{const i=s.clone(),n=await J(s,o,e.getRequestHandlers(),t,e.emitter,{onMockedResponse(a,{handler:c,parsedResult:l}){t.quiet||e.emitter.once("response:mocked",({response:h})=>{c.log({request:i,response:h,parsedResult:l})})}});n&&s.respondWith(n)}),r.on("response",({response:s,isMockedResponse:o,request:i,requestId:n})=>{e.emitter.emit(o?"response:mocked":"response:bypass",{response:s,request:i,requestId:n})}),r.apply(),r}function Lt(e){return async function(r){e.fallbackInterceptor=qt(e,r),Y({message:"Mocking enabled (fallback mode).",quiet:r.quiet})}}function St(e){return function(){e.fallbackInterceptor?.dispose(),ne({quiet:e.startOptions?.quiet})}}function Tt(){try{const e=new ReadableStream({start:r=>r.close()});return new MessageChannel().port1.postMessage(e,[e]),!0}catch{return!1}}var xt=class extends ve{context;startHandler=null;stopHandler=null;listeners;constructor(...e){super(...e),w(!H(),p.formatMessage("Failed to execute `setupWorker` in a non-browser environment. Consider using `setupServer` for Node.js environment instead.")),this.listeners=[],this.context=this.createWorkerContext()}createWorkerContext(){const e={isMockingEnabled:!1,startOptions:null,worker:null,getRequestHandlers:()=>this.handlersController.currentHandlers(),registration:null,requests:new Map,emitter:this.emitter,workerChannel:{on:(t,r)=>{this.context.events.addListener(navigator.serviceWorker,"message",s=>{if(s.source!==this.context.worker)return;const o=s.data;o&&o.type===t&&r(s,o)})},send:t=>{this.context.worker?.postMessage(t)}},events:{addListener:(t,r,s)=>(t.addEventListener(r,s),this.listeners.push({eventType:r,target:t,callback:s}),()=>{t.removeEventListener(r,s)}),removeAllListeners:()=>{for(const{target:t,eventType:r,callback:s}of this.listeners)t.removeEventListener(r,s);this.listeners=[]},once:t=>{const r=[];return new Promise((s,o)=>{const i=n=>{try{const a=n.data;a.type===t&&s(a)}catch(a){o(a)}};r.push(this.context.events.addListener(navigator.serviceWorker,"message",i),this.context.events.addListener(navigator.serviceWorker,"messageerror",o))}).finally(()=>{r.forEach(s=>s())})}},supports:{serviceWorkerApi:!("serviceWorker"in navigator)||location.protocol==="file:",readableStreamTransfer:Tt()}};return this.startHandler=e.supports.serviceWorkerApi?Lt(e):it(e),this.stopHandler=e.supports.serviceWorkerApi?St(e):at(e),e}async start(e={}){return e.waitUntilReady===!0&&p.warn('The "waitUntilReady" option has been deprecated. Please remove it from this "worker.start()" call. Follow the recommended Browser integration (https://mswjs.io/docs/integrations/browser) to eliminate any race conditions between the Service Worker registration and any requests made by your application on initial render.'),this.context.startOptions=z(lt,e),await this.startHandler(this.context.startOptions,e)}stop(){super.dispose(),this.context.events.removeAllListeners(),this.context.emitter.removeAllListeners(),this.stopHandler()}};function Pt(...e){return new xt(...e)}var Mt=/\.(js|jsx|ts|tsx|mjs|woff|woff2|ttf|otf|eot)$/,At=["sb-common-assets","node_modules","node-modules","hot-update.json","__webpack_hmr","sb-vite"],It=e=>!!(Mt.test(e)||At.some(r=>e.includes(r))),Ct=e=>typeof e?.onUnhandledRequest=="string"?e:{...e,onUnhandledRequest:(...t)=>{const[{url:r},s]=t;if(!It(r)){if(!e?.onUnhandledRequest){s.warning();return}typeof e?.onUnhandledRequest=="function"&&e.onUnhandledRequest(...t)}}},L;function Ht(e,t=[]){const r=Pt(...t);return r.start(Ct(e)),L=r,r}function Wt(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var s=Array.from(typeof e=="string"?[e]:e);s[s.length-1]=s[s.length-1].replace(/\r?\n([\t ]*)$/,"");var o=s.reduce(function(a,c){var l=c.match(/\n([\t ]+|(?!\s).)/g);return l?a.concat(l.map(function(h){var u,d;return(d=(u=h.match(/[\t ]/g))===null||u===void 0?void 0:u.length)!==null&&d!==void 0?d:0})):a},[]);if(o.length){var i=new RegExp(`
|
|
40
|
+
[ ]{`+Math.min.apply(Math,o)+"}","g");s=s.map(function(a){return a.replace(i,`
|
|
41
|
+
`)})}s[0]=s[0].replace(/^\r?\n/,"");var n=s[0];return t.forEach(function(a,c){var l=n.match(/(?:^|\n)( *)$/),h=l?l[1]:"",u=a;typeof a=="string"&&a.includes(`
|
|
42
|
+
`)&&(u=String(a).split(`
|
|
43
|
+
`).map(function(d,g){return g===0?d:""+h+d}).join(`
|
|
44
|
+
`)),n+=u+s[c+1]}),n}function _t(e){let t=!1,r;return(...o)=>(t||(t=!0,r=e(...o)),r)}function Ot(e){return _t(()=>{console.warn(Wt(e))})}var jt=Ot(`
|
|
45
|
+
[msw-storybook-addon] You are using parameters.msw as an Array instead of an Object with a property "handlers". This usage is deprecated and will be removed in the next release. Please use the Object syntax instead.
|
|
46
|
+
|
|
47
|
+
More info: https://github.com/mswjs/msw-storybook-addon/blob/main/MIGRATION.md#parametersmsw-array-notation-deprecated-in-favor-of-object-notation
|
|
48
|
+
`);function Dt(e){if(L?.resetHandlers(),e!=null){if(Array.isArray(e)&&e.length>0){jt(),L.use(...e);return}if("handlers"in e&&e.handlers){const t=Object.values(e.handlers).filter(Boolean).reduce((r,s)=>r.concat(s),[]);t.length>0&&L.use(...t);return}}}var Ut=async e=>(Dt(e.parameters.msw),typeof window<"u"&&"navigator"in window&&navigator.serviceWorker?.controller&&await navigator.serviceWorker.ready,{});Ht({onUnhandledRequest:"bypass"});const $t={parameters:{controls:{matchers:{color:/(background|color)$/i,date:/Date$/i}}},loaders:[Ut]};export{$t as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let l;const b=new Uint8Array(16);function x(){if(!l&&(l=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!l))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return l(b)}const i=[];for(let e=0;e<256;++e)i.push((e+256).toString(16).slice(1));function S(e,t=0){return i[e[t+0]]+i[e[t+1]]+i[e[t+2]]+i[e[t+3]]+"-"+i[e[t+4]]+i[e[t+5]]+"-"+i[e[t+6]]+i[e[t+7]]+"-"+i[e[t+8]]+i[e[t+9]]+"-"+i[e[t+10]]+i[e[t+11]]+i[e[t+12]]+i[e[t+13]]+i[e[t+14]]+i[e[t+15]]}const v=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),y={randomUUID:v};function A(e,t,n){if(y.randomUUID&&!t&&!e)return y.randomUUID();e=e||{};const r=e.random||(e.rng||x)();return r[6]=r[6]&15|64,r[8]=r[8]&63|128,S(r)}const{addons:w}=__STORYBOOK_MODULE_PREVIEW_API__,{global:p}=__STORYBOOK_MODULE_GLOBAL__,{ImplicitActionsDuringRendering:D}=__STORYBOOK_MODULE_CORE_EVENTS_PREVIEW_ERRORS__;var I="storybook/actions",U=`${I}/action-event`,f={depth:10,clearOnStoryChange:!0,limit:50},m=(e,t)=>{let n=Object.getPrototypeOf(e);return!n||t(n)?n:m(n,t)},j=e=>!!(typeof e=="object"&&e&&m(e,t=>/^Synthetic(?:Base)?Event$/.test(t.constructor.name))&&typeof e.persist=="function"),V=e=>{if(j(e)){let t=Object.create(e.constructor.prototype,Object.getOwnPropertyDescriptors(e));t.persist();let n=Object.getOwnPropertyDescriptor(t,"view"),r=n?.value;return typeof r=="object"&&r?.constructor.name==="Window"&&Object.defineProperty(t,"view",{...n,value:Object.create(r.constructor.prototype)}),t}return e},C=()=>typeof crypto=="object"&&typeof crypto.getRandomValues=="function"?A():Date.now().toString(36)+Math.random().toString(36).substring(2);function u(e,t={}){let n={...f,...t},r=function(...c){if(t.implicit){let g=("__STORYBOOK_PREVIEW__"in p?p.__STORYBOOK_PREVIEW__:void 0)?.storyRenders.find(d=>d.phase==="playing"||d.phase==="rendering");if(g){let d=!window?.FEATURES?.disallowImplicitActionsInRenderV8,O=new D({phase:g.phase,name:e,deprecated:d});if(d)console.warn(O);else throw O}}let o=w.getChannel(),s=C(),a=5,_=c.map(V),E=c.length>1?_:_[0],T={id:s,count:0,data:{name:e,args:E},options:{...n,maxDepth:a+(n.depth||3),allowFunction:n.allowFunction||!1}};o.emit(U,T)};return r.isAction=!0,r.implicit=t.implicit,r}var h=(e,t)=>typeof t[e]>"u"&&!(e in t),K=e=>{let{initialArgs:t,argTypes:n,id:r,parameters:{actions:c}}=e;if(!c||c.disable||!c.argTypesRegex||!n)return{};let o=new RegExp(c.argTypesRegex);return Object.entries(n).filter(([s])=>!!o.test(s)).reduce((s,[a,_])=>(h(a,t)&&(s[a]=u(a,{implicit:!0,id:r})),s),{})},L=e=>{let{initialArgs:t,argTypes:n,parameters:{actions:r}}=e;return r?.disable||!n?{}:Object.entries(n).filter(([c,o])=>!!o.action).reduce((c,[o,s])=>(h(o,t)&&(c[o]=u(typeof s.action=="string"?s.action:o)),c),{})},M=[L,K],R=!1,B=e=>{let{parameters:{actions:t}}=e;if(!t?.disable&&!R&&"__STORYBOOK_TEST_ON_MOCK_CALL__"in p&&typeof p.__STORYBOOK_TEST_ON_MOCK_CALL__=="function"){let n=p.__STORYBOOK_TEST_ON_MOCK_CALL__;n((r,c)=>{let o=r.getMockName();o!=="spy"&&(!/^next\/.*::/.test(o)||["next/router::useRouter()","next/navigation::useRouter()","next/navigation::redirect","next/cache::","next/headers::cookies().set","next/headers::cookies().delete","next/headers::headers().set","next/headers::headers().delete"].some(s=>o.startsWith(s)))&&u(o)(c)}),R=!0}},P=[B];export{M as argsEnhancers,P as loaders};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./index-
|
|
1
|
+
import"./index-DXimoRZY.js";const{global:O}=__STORYBOOK_MODULE_GLOBAL__,{makeDecorator:E,addons:_}=__STORYBOOK_MODULE_PREVIEW_API__,{STORY_CHANGED:l,SELECT_STORY:L}=__STORYBOOK_MODULE_CORE_EVENTS__;var c="links",{document:i,HTMLElement:m}=O,v=e=>_.getChannel().emit(L,e),o=e=>{let{target:t}=e;if(!(t instanceof m))return;let s=t,{sbKind:a,sbStory:r}=s.dataset;(a||r)&&(e.preventDefault(),v({kind:a,story:r}))},n=!1,d=()=>{n||(n=!0,i.addEventListener("click",o))},k=()=>{n&&(n=!1,i.removeEventListener("click",o))},R=E({name:"withLinks",parameterName:c,wrapper:(e,t)=>(d(),_.getChannel().once(l,k),e(t))}),T=[R];export{T as decorators};
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import{w as d,e as c,u}from"./custom-element-BV8-hRQS.js";import"./index-CVRyq5ci.js";function i(e){return new Promise(t=>setTimeout(t,e))}function h(e){const{title:t,body:a}=e;return`
|
|
2
|
+
<fieldset>
|
|
3
|
+
<legend>${t}</legend>
|
|
4
|
+
${a}
|
|
5
|
+
</fieldset>
|
|
6
|
+
`}const B={title:"slice-events",render:h},o={args:{title:"Slice initialization, change on event",body:`
|
|
7
|
+
<p>initial value should be 0; + and - should change the number in input field</p>
|
|
8
|
+
<custom-element>
|
|
9
|
+
<template>
|
|
10
|
+
<button slice="clickcount" slice-event="click" slice-value="//clickcount + 1">+</button>
|
|
11
|
+
<button slice="clickcount" slice-event="click" slice-value="//clickcount - 1">-</button>
|
|
12
|
+
<input slice="clickcount" type="number" value="{//clickcount ?? 0}">
|
|
13
|
+
<code data-testid="slice-value">{ //clickcount }</code>
|
|
14
|
+
</template>
|
|
15
|
+
</custom-element>
|
|
16
|
+
`},play:async({canvasElement:e})=>{const t=o.args.title,a=d(e);await a.findByText(t);const n=await a.findByTestId("slice-value"),s=await e.querySelector('[type="number"]');await c(n).toBeInTheDocument(),c(n.textContent).to.equal("0","initial slot value 0"),c(s.value).to.equal("0","initial input value 0"),e.querySelector('[slice-value="//clickcount + 1"]').click(),await i(10),c(n.textContent).to.equal("1","increment to 1"),c(s.value).to.equal("1","increment input 1"),e.querySelector('[slice-value="//clickcount + 1"]').click(),await i(10),e.querySelector('[slice-value="//clickcount + 1"]').click(),await i(10),c(n.textContent).to.equal("3","double increment to 3"),c(s.value).to.equal("3","double increment input to 3"),e.querySelector('[slice-value="//clickcount - 1"]').click(),await i(10),c(n.textContent).to.equal("2","decrement to 2"),c(s.value).to.equal("2","decrement input to 2")}},l={args:{title:"Realtime Slice data on event",body:`
|
|
17
|
+
<p>move the mouse over TEXTAREA and click to see slice and slice event changed</p>
|
|
18
|
+
<custom-element>
|
|
19
|
+
<template>
|
|
20
|
+
<textarea slice="s" slice-value="concat('x:', //@pageX)" slice-event="mousemove click"
|
|
21
|
+
style="width:16rem;height:16rem;box-shadow: inset {//@offsetX}px {//@offsetY}px gold;"></textarea><br/>
|
|
22
|
+
//slice/s : <code data-testid="//slice/s" >{ //slice/s }</code> <br/>
|
|
23
|
+
//slice/s/event/@offsetY : <code data-testid="//slice/s/event/@offsetY" >{ //slice/s/event/@offsetY }</code> <br/>
|
|
24
|
+
event type : <code data-testid="//slice/s/event/@type" >{ //slice/s/event/@type }</code>
|
|
25
|
+
</template>
|
|
26
|
+
</custom-element>
|
|
27
|
+
`},play:async({canvasElement:e})=>{const t=l.args.title,a=d(e);await a.findByText(t);const n=()=>a.getByTestId("//slice/s").textContent,s=()=>a.getByTestId("//slice/s/event/@offsetY").textContent,y=()=>a.getByTestId("//slice/s/event/@type").textContent,b=await e.querySelector("textarea");c(n()).to.equal("","initial slot value blank"),c(s()).to.equal("","initial slot offsetY blank"),c(y()).to.equal("","initial slot event blank"),((v,f,x)=>{const w=new MouseEvent(x,{screenX:v,screenY:f,clientX:v,clientY:f,offsetX:v,offsetY:f});b.dispatchEvent(w)})(20,20,"click"),await i(10),c(n()).to.equal("x:20","click slot value 20"),c(Number(s())).to.be.lessThan(0,"offsetY click"),c(y()).to.equal("click","click event type")}},p={args:{title:'slice-event="change submit change submit" ',body:`
|
|
28
|
+
<p> double same event should be treated as one.</p>
|
|
29
|
+
<custom-element>
|
|
30
|
+
<template>
|
|
31
|
+
<form slice-event="submit submit change change" slice="form-1">
|
|
32
|
+
<input slice-event="change change" required slice="field-1" data-testid="f1" name="f1"/>
|
|
33
|
+
<input name="f2" value="populated in form-data"/>
|
|
34
|
+
<button>next</button> <code>slices count {count(/datadom/slice/*)}</code>
|
|
35
|
+
</form>
|
|
36
|
+
</template>
|
|
37
|
+
</custom-element>
|
|
38
|
+
`},play:async({canvasElement:e})=>{const t=d(e),a=await t.findByTestId("f1");a.focus(),await u.type(a,"AB"),t.getByRole("button").focus(),await u.clear(a),await u.click(t.getByRole("button")),c(await t.findByText("slices count 2")).toBeInTheDocument()}},r={args:{title:'slice="/datadom/attributes/emotion | s1" ',body:`
|
|
39
|
+
<p> double same event should be treated as one.</p>
|
|
40
|
+
<custom-element>
|
|
41
|
+
<template>
|
|
42
|
+
<input slice="s1|s2"
|
|
43
|
+
slice-event="input"
|
|
44
|
+
data-testid="f1"
|
|
45
|
+
/><br/>
|
|
46
|
+
Type to update s1 and s2 slices <br/>
|
|
47
|
+
slice <code>s1: {//slice/s1}</code><br/>
|
|
48
|
+
slice <code>s2: {//slice/s2}</code><br/>
|
|
49
|
+
</template>
|
|
50
|
+
</custom-element>
|
|
51
|
+
`},play:async({canvasElement:e})=>{const t=d(e),a=await t.findByTestId("f1");a.focus(),await u.type(a,"AB"),await c(await t.findByText("s1: AB")).toBeInTheDocument(),await c(await t.findByText("s2: AB")).toBeInTheDocument()}},m={args:{title:'slice="/datadom/attributes/emotion | s1" ',body:`
|
|
52
|
+
<p> double same event should be treated as one.</p>
|
|
53
|
+
<custom-element>
|
|
54
|
+
<template>
|
|
55
|
+
<attribute name="emotion">😃</attribute>
|
|
56
|
+
<input slice-event="input" slice="/datadom/attributes/emotion | s1" data-testid="f1"/>
|
|
57
|
+
<p>Type to update </p>
|
|
58
|
+
<p>emotion attribute: {emotion}</p>
|
|
59
|
+
<p>slice: {//slice/s1}</p>
|
|
60
|
+
</template>
|
|
61
|
+
</custom-element>
|
|
62
|
+
`},play:async({canvasElement:e})=>{const t=d(e),a=await t.findByTestId("f1");a.focus(),await u.type(a,"AB"),await c(await t.findByText("emotion attribute: AB")).toBeInTheDocument()}};o.parameters={...o.parameters,docs:{...o.parameters?.docs,source:{originalSource:`{
|
|
63
|
+
args: {
|
|
64
|
+
title: 'Slice initialization, change on event',
|
|
65
|
+
body: \`
|
|
66
|
+
<p>initial value should be 0; + and - should change the number in input field</p>
|
|
67
|
+
<custom-element>
|
|
68
|
+
<template>
|
|
69
|
+
<button slice="clickcount" slice-event="click" slice-value="//clickcount + 1">+</button>
|
|
70
|
+
<button slice="clickcount" slice-event="click" slice-value="//clickcount - 1">-</button>
|
|
71
|
+
<input slice="clickcount" type="number" value="{//clickcount ?? 0}">
|
|
72
|
+
<code data-testid="slice-value">{ //clickcount }</code>
|
|
73
|
+
</template>
|
|
74
|
+
</custom-element>
|
|
75
|
+
\`
|
|
76
|
+
},
|
|
77
|
+
play: async ({
|
|
78
|
+
canvasElement
|
|
79
|
+
}) => {
|
|
80
|
+
const titleText = (SliceInitChangeEvent.args!.title as string);
|
|
81
|
+
const canvas = within(canvasElement);
|
|
82
|
+
await canvas.findByText(titleText);
|
|
83
|
+
const code = await canvas.findByTestId('slice-value');
|
|
84
|
+
const input = (await canvasElement.querySelector('[type="number"]') as HTMLInputElement);
|
|
85
|
+
await expect(code).toBeInTheDocument();
|
|
86
|
+
expect(code.textContent).to.equal('0', 'initial slot value 0');
|
|
87
|
+
expect(input.value).to.equal('0', 'initial input value 0');
|
|
88
|
+
canvasElement.querySelector('[slice-value="//clickcount + 1"]').click();
|
|
89
|
+
await sleep(10);
|
|
90
|
+
expect(code.textContent).to.equal('1', 'increment to 1');
|
|
91
|
+
expect(input.value).to.equal('1', 'increment input 1');
|
|
92
|
+
canvasElement.querySelector('[slice-value="//clickcount + 1"]').click();
|
|
93
|
+
await sleep(10);
|
|
94
|
+
canvasElement.querySelector('[slice-value="//clickcount + 1"]').click();
|
|
95
|
+
await sleep(10);
|
|
96
|
+
expect(code.textContent).to.equal('3', 'double increment to 3');
|
|
97
|
+
expect(input.value).to.equal('3', 'double increment input to 3');
|
|
98
|
+
canvasElement.querySelector('[slice-value="//clickcount - 1"]').click();
|
|
99
|
+
await sleep(10);
|
|
100
|
+
expect(code.textContent).to.equal('2', 'decrement to 2');
|
|
101
|
+
expect(input.value).to.equal('2', 'decrement input to 2');
|
|
102
|
+
}
|
|
103
|
+
}`,...o.parameters?.docs?.source}}};l.parameters={...l.parameters,docs:{...l.parameters?.docs,source:{originalSource:`{
|
|
104
|
+
args: {
|
|
105
|
+
title: 'Realtime Slice data on event',
|
|
106
|
+
body: \`
|
|
107
|
+
<p>move the mouse over TEXTAREA and click to see slice and slice event changed</p>
|
|
108
|
+
<custom-element>
|
|
109
|
+
<template>
|
|
110
|
+
<textarea slice="s" slice-value="concat('x:', //@pageX)" slice-event="mousemove click"
|
|
111
|
+
style="width:16rem;height:16rem;box-shadow: inset {//@offsetX}px {//@offsetY}px gold;"></textarea><br/>
|
|
112
|
+
//slice/s : <code data-testid="//slice/s" >{ //slice/s }</code> <br/>
|
|
113
|
+
//slice/s/event/@offsetY : <code data-testid="//slice/s/event/@offsetY" >{ //slice/s/event/@offsetY }</code> <br/>
|
|
114
|
+
event type : <code data-testid="//slice/s/event/@type" >{ //slice/s/event/@type }</code>
|
|
115
|
+
</template>
|
|
116
|
+
</custom-element>
|
|
117
|
+
\`
|
|
118
|
+
},
|
|
119
|
+
play: async ({
|
|
120
|
+
canvasElement
|
|
121
|
+
}) => {
|
|
122
|
+
const titleText = (RealtimeEventInSlice.args!.title as string);
|
|
123
|
+
const canvas = within(canvasElement);
|
|
124
|
+
await canvas.findByText(titleText);
|
|
125
|
+
const sliceText = () => canvas.getByTestId('//slice/s').textContent,
|
|
126
|
+
offsetY = () => canvas.getByTestId('//slice/s/event/@offsetY').textContent,
|
|
127
|
+
eventType = () => canvas.getByTestId('//slice/s/event/@type').textContent;
|
|
128
|
+
const input = await canvasElement.querySelector('textarea');
|
|
129
|
+
// expect(input).toBeInTheDocument();
|
|
130
|
+
expect(sliceText()).to.equal('', 'initial slot value blank');
|
|
131
|
+
expect(offsetY()).to.equal('', 'initial slot offsetY blank');
|
|
132
|
+
expect(eventType()).to.equal('', 'initial slot event blank');
|
|
133
|
+
const emitXy = (x, y, eventName) => {
|
|
134
|
+
const ev = new MouseEvent(eventName, {
|
|
135
|
+
screenX: x,
|
|
136
|
+
screenY: y,
|
|
137
|
+
clientX: x,
|
|
138
|
+
clientY: y,
|
|
139
|
+
offsetX: x,
|
|
140
|
+
offsetY: y
|
|
141
|
+
});
|
|
142
|
+
input.dispatchEvent(ev);
|
|
143
|
+
};
|
|
144
|
+
emitXy(20, 20, 'click');
|
|
145
|
+
await sleep(10);
|
|
146
|
+
expect(sliceText()).to.equal('x:20', 'click slot value 20');
|
|
147
|
+
expect(Number(offsetY())).to.be.lessThan(0, 'offsetY click');
|
|
148
|
+
expect(eventType()).to.equal('click', 'click event type');
|
|
149
|
+
}
|
|
150
|
+
}`,...l.parameters?.docs?.source}}};p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
|
|
151
|
+
args: {
|
|
152
|
+
title: 'slice-event="change submit change submit" ',
|
|
153
|
+
body: \`
|
|
154
|
+
<p> double same event should be treated as one.</p>
|
|
155
|
+
<custom-element>
|
|
156
|
+
<template>
|
|
157
|
+
<form slice-event="submit submit change change" slice="form-1">
|
|
158
|
+
<input slice-event="change change" required slice="field-1" data-testid="f1" name="f1"/>
|
|
159
|
+
<input name="f2" value="populated in form-data"/>
|
|
160
|
+
<button>next</button> <code>slices count {count(/datadom/slice/*)}</code>
|
|
161
|
+
</form>
|
|
162
|
+
</template>
|
|
163
|
+
</custom-element>
|
|
164
|
+
\`
|
|
165
|
+
},
|
|
166
|
+
play: async ({
|
|
167
|
+
canvasElement
|
|
168
|
+
}) => {
|
|
169
|
+
const canvas = within(canvasElement);
|
|
170
|
+
const input = await canvas.findByTestId('f1');
|
|
171
|
+
input.focus();
|
|
172
|
+
await userEvent.type(input, 'AB');
|
|
173
|
+
canvas.getByRole('button').focus();
|
|
174
|
+
await userEvent.clear(input);
|
|
175
|
+
await userEvent.click(canvas.getByRole('button'));
|
|
176
|
+
expect(await canvas.findByText('slices count 2')).toBeInTheDocument();
|
|
177
|
+
}
|
|
178
|
+
}`,...p.parameters?.docs?.source}}};r.parameters={...r.parameters,docs:{...r.parameters?.docs,source:{originalSource:`{
|
|
179
|
+
args: {
|
|
180
|
+
title: 'slice="/datadom/attributes/emotion | s1" ',
|
|
181
|
+
body: \`
|
|
182
|
+
<p> double same event should be treated as one.</p>
|
|
183
|
+
<custom-element>
|
|
184
|
+
<template>
|
|
185
|
+
<input slice="s1|s2"
|
|
186
|
+
slice-event="input"
|
|
187
|
+
data-testid="f1"
|
|
188
|
+
/><br/>
|
|
189
|
+
Type to update s1 and s2 slices <br/>
|
|
190
|
+
slice <code>s1: {//slice/s1}</code><br/>
|
|
191
|
+
slice <code>s2: {//slice/s2}</code><br/>
|
|
192
|
+
</template>
|
|
193
|
+
</custom-element>
|
|
194
|
+
\`
|
|
195
|
+
},
|
|
196
|
+
play: async ({
|
|
197
|
+
canvasElement
|
|
198
|
+
}) => {
|
|
199
|
+
const canvas = within(canvasElement);
|
|
200
|
+
const input = await canvas.findByTestId('f1');
|
|
201
|
+
input.focus();
|
|
202
|
+
await userEvent.type(input, 'AB');
|
|
203
|
+
await expect(await canvas.findByText('s1: AB')).toBeInTheDocument();
|
|
204
|
+
await expect(await canvas.findByText('s2: AB')).toBeInTheDocument();
|
|
205
|
+
}
|
|
206
|
+
}`,...r.parameters?.docs?.source}}};m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
|
|
207
|
+
args: {
|
|
208
|
+
title: 'slice="/datadom/attributes/emotion | s1" ',
|
|
209
|
+
body: \`
|
|
210
|
+
<p> double same event should be treated as one.</p>
|
|
211
|
+
<custom-element>
|
|
212
|
+
<template>
|
|
213
|
+
<attribute name="emotion">😃</attribute>
|
|
214
|
+
<input slice-event="input" slice="/datadom/attributes/emotion | s1" data-testid="f1"/>
|
|
215
|
+
<p>Type to update </p>
|
|
216
|
+
<p>emotion attribute: {emotion}</p>
|
|
217
|
+
<p>slice: {//slice/s1}</p>
|
|
218
|
+
</template>
|
|
219
|
+
</custom-element>
|
|
220
|
+
\`
|
|
221
|
+
},
|
|
222
|
+
play: async ({
|
|
223
|
+
canvasElement
|
|
224
|
+
}) => {
|
|
225
|
+
const canvas = within(canvasElement);
|
|
226
|
+
const input = await canvas.findByTestId('f1');
|
|
227
|
+
input.focus();
|
|
228
|
+
await userEvent.type(input, 'AB');
|
|
229
|
+
await expect(await canvas.findByText('emotion attribute: AB')).toBeInTheDocument();
|
|
230
|
+
}
|
|
231
|
+
}`,...m.parameters?.docs?.source}}};const q=["SliceInitChangeEvent","RealtimeEventInSlice","DoubleEventInSlice","MultipleSlices","SlicesInAttrAndName"];export{p as DoubleEventInSlice,r as MultipleSlices,l as RealtimeEventInSlice,o as SliceInitChangeEvent,m as SlicesInAttrAndName,q as __namedExportsOrder,B as default};
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import{w as o,e as l}from"./custom-element-BV8-hRQS.js";import"./index-CVRyq5ci.js";function y(t){const{title:a,tag:n,attributes:e,slot:s,payload:g}=t;return`
|
|
2
|
+
<fieldset>
|
|
3
|
+
<legend>${a}</legend>
|
|
4
|
+
<custom-element
|
|
5
|
+
tag="${n}"
|
|
6
|
+
hidden
|
|
7
|
+
>
|
|
8
|
+
${s}
|
|
9
|
+
</custom-element>
|
|
10
|
+
<${n} ${e}>${g}</${n}>
|
|
11
|
+
</fieldset>
|
|
12
|
+
`}const h={title:"slots",render:y},i={args:{title:"custom-element",tag:"my-component",slot:"Hello World",payload:"🍋"},play:async({canvasElement:t})=>{const a=i.args.title;await o(t).findByText(a);const e=t;l(e.querySelectorAll("my-component").length).to.equal(1),l(e.querySelector("my-component").innerHTML).to.include("Hello World")}},r={args:{title:"named slot",tag:"dce-1-slot",slot:'<slot name="slot1"> 🥦</slot>',payload:'<i slot="slot1">🥕</i>'},play:async({canvasElement:t})=>{const a=r.args.title;await o(t).findByText(a);const e=t;l(e.querySelectorAll("dce-1-slot").length).to.equal(1),l(e.querySelector("dce-1-slot").innerText).to.equal("🥕")}},c={args:{title:"same slot can be used multiple times in template",tag:"dce-2-slots",slot:'<slot name="slot2"> 😃</slot> and again: <slot name="slot2"> 😃</slot>',payload:'<i slot="slot2">🥕</i>'},play:async({canvasElement:t})=>{const a=c.args.title;await o(t).findByText(a);const e=t;l(e.querySelectorAll("dce-2-slots").length).to.equal(1),l(e.querySelector("dce-2-slots").innerText).to.equal("🥕 and again: 🥕")}},d={args:{title:"named and un-named default slot",tag:"dce-4-slot",slot:`#1 <slot name=""> 😃</slot> <br/>
|
|
13
|
+
#2 <slot> 😃</slot>`,payload:'<i slot="">🥕</i>'},play:async({canvasElement:t})=>{const a=d.args.title;await o(t).findByText(a);const e=t;l(e.querySelectorAll("dce-4-slot").length).to.equal(1),l(e.querySelector("dce-4-slot").innerText).to.include("#1 🥕"),l(e.querySelector("dce-4-slot").innerText).to.include("#2 🥕")}},u={args:{title:"two named default slot",tag:"dce-3-slot",slot:`#1 <slot name=""> 😃</slot> <br/>
|
|
14
|
+
#2 <slot name=""> 😃</slot>`,payload:'<i slot="">🥕</i>'},play:async({canvasElement:t})=>{const a=u.args.title;await o(t).findByText(a);const e=t;l(e.querySelectorAll("dce-3-slot").length).to.equal(1),l(e.querySelector("dce-3-slot").innerText).to.include("#1 🥕"),l(e.querySelector("dce-3-slot").innerText).to.include("#2 🥕")}},m={args:{title:"default slot",tag:"greet-element",slot:"<slot> Hello </slot> World!",payload:"👋"},play:async({canvasElement:t})=>{const a=m.args.title;await o(t).findByText(a);const e=t;l(e.querySelectorAll("greet-element").length).to.equal(1),l(e.querySelector("greet-element").innerText).to.include("👋 World!")}},p={args:{title:"💪 DCE template",tag:"pokemon-tile",attributes:' title="bulbasaur" data-smile="👼" pokemon-id="1" ',slot:`
|
|
15
|
+
<template>
|
|
16
|
+
<h3><value-of select="title"></value-of></h3> <!-- title is an attribute in instance
|
|
17
|
+
mapped into /*/attributes/title -->
|
|
18
|
+
<if test="//smile"> <!-- data-smile DCE instance attribute,
|
|
19
|
+
mapped into /*/dataset/smile
|
|
20
|
+
used in condition -->
|
|
21
|
+
<!-- data-smile DCE instance attribute, used as HTML -->
|
|
22
|
+
<div>Smile as: <value-of select="//smile"></value-of></div>
|
|
23
|
+
</if>
|
|
24
|
+
<!-- image would not be visible in sandbox, see live demo -->
|
|
25
|
+
<img src="https://unpkg.com/pokeapi-sprites@2.0.2/sprites/pokemon/other/dream-world/{pokemon-id}.svg" alt="{title} image">
|
|
26
|
+
<!-- image-src and title are DCE instance attributes,
|
|
27
|
+
mapped into /*/attributes/
|
|
28
|
+
used within output attribute via curly brackets -->
|
|
29
|
+
|
|
30
|
+
<!-- \`slot name=xxx\` replaced with elements with \`slot=xxx\` attribute -->
|
|
31
|
+
<p><slot name="description"><i>description is not available</i></slot></p>
|
|
32
|
+
<for-each select="//*[@pokemon-id]">
|
|
33
|
+
<!-- loop over payload elements with \`pokemon-id\` attribute -->
|
|
34
|
+
<button>
|
|
35
|
+
<img height="32"
|
|
36
|
+
src="https://unpkg.com/pokeapi-sprites@2.0.2/sprites/pokemon/other/dream-world/{@pokemon-id}.svg"
|
|
37
|
+
alt="{text()}"/>
|
|
38
|
+
<br/>
|
|
39
|
+
<value-of select='text()'/>
|
|
40
|
+
</button>
|
|
41
|
+
|
|
42
|
+
</for-each>
|
|
43
|
+
</template>
|
|
44
|
+
`,payload:`<p slot="description">Bulbasaur is a cute Pokémon born with a large seed firmly affixed to its back;
|
|
45
|
+
the seed grows in size as the Pokémon does.</p>
|
|
46
|
+
<ul>
|
|
47
|
+
<li pokemon-id="2">ivysaur</li>
|
|
48
|
+
<li pokemon-id="3">venusaur</li>
|
|
49
|
+
</ul>
|
|
50
|
+
`},play:async({canvasElement:t})=>{const a=p.args.title;await o(t).findByText(a);const e=t;l(e.querySelectorAll("pokemon-tile").length).to.equal(1);const s=e.querySelector("pokemon-tile");l(s.querySelector("img").src).to.equal("https://unpkg.com/pokeapi-sprites@2.0.2/sprites/pokemon/other/dream-world/1.svg"),l(s.querySelector("h3").innerText).to.equal("bulbasaur"),l(s.innerText).to.include("Smile as: 👼"),l(s.querySelector('[slot="description"]').innerText).to.include("Bulbasaur is a cute Pokémon")}};i.parameters={...i.parameters,docs:{...i.parameters?.docs,source:{originalSource:`{
|
|
51
|
+
args: {
|
|
52
|
+
title: 'custom-element',
|
|
53
|
+
tag: 'my-component',
|
|
54
|
+
slot: \`Hello World\`,
|
|
55
|
+
payload: \`🍋\`
|
|
56
|
+
},
|
|
57
|
+
play: async ({
|
|
58
|
+
canvasElement
|
|
59
|
+
}) => {
|
|
60
|
+
const titleText = (Regular.args!.title as string);
|
|
61
|
+
const canvas = within(canvasElement);
|
|
62
|
+
await canvas.findByText(titleText);
|
|
63
|
+
const el = canvasElement;
|
|
64
|
+
expect(el.querySelectorAll('my-component').length).to.equal(1);
|
|
65
|
+
expect(el.querySelector('my-component').innerHTML).to.include(\`Hello World\`);
|
|
66
|
+
}
|
|
67
|
+
}`,...i.parameters?.docs?.source}}};r.parameters={...r.parameters,docs:{...r.parameters?.docs,source:{originalSource:`{
|
|
68
|
+
args: {
|
|
69
|
+
title: 'named slot',
|
|
70
|
+
tag: 'dce-1-slot',
|
|
71
|
+
slot: \`<slot name="slot1"> 🥦</slot>\`,
|
|
72
|
+
payload: \`<i slot="slot1">🥕</i>\`
|
|
73
|
+
},
|
|
74
|
+
play: async ({
|
|
75
|
+
canvasElement
|
|
76
|
+
}) => {
|
|
77
|
+
const titleText = (NamedSlot.args!.title as string);
|
|
78
|
+
const canvas = within(canvasElement);
|
|
79
|
+
await canvas.findByText(titleText);
|
|
80
|
+
const el = canvasElement;
|
|
81
|
+
expect(el.querySelectorAll('dce-1-slot').length).to.equal(1);
|
|
82
|
+
expect(el.querySelector('dce-1-slot').innerText).to.equal(\`🥕\`);
|
|
83
|
+
}
|
|
84
|
+
}`,...r.parameters?.docs?.source}}};c.parameters={...c.parameters,docs:{...c.parameters?.docs,source:{originalSource:`{
|
|
85
|
+
args: {
|
|
86
|
+
title: 'same slot can be used multiple times in template',
|
|
87
|
+
tag: 'dce-2-slots',
|
|
88
|
+
slot: \`<slot name="slot2"> 😃</slot> and again: <slot name="slot2"> 😃</slot>\`,
|
|
89
|
+
payload: \`<i slot="slot2">🥕</i>\`
|
|
90
|
+
},
|
|
91
|
+
play: async ({
|
|
92
|
+
canvasElement
|
|
93
|
+
}) => {
|
|
94
|
+
const titleText = (DoubleSlot.args!.title as string);
|
|
95
|
+
const canvas = within(canvasElement);
|
|
96
|
+
await canvas.findByText(titleText);
|
|
97
|
+
const el = canvasElement;
|
|
98
|
+
expect(el.querySelectorAll('dce-2-slots').length).to.equal(1);
|
|
99
|
+
expect(el.querySelector('dce-2-slots').innerText).to.equal(\`🥕 and again: 🥕\`);
|
|
100
|
+
}
|
|
101
|
+
}`,...c.parameters?.docs?.source}}};d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
|
|
102
|
+
args: {
|
|
103
|
+
title: 'named and un-named default slot',
|
|
104
|
+
tag: 'dce-4-slot',
|
|
105
|
+
slot: \`#1 <slot name=""> 😃</slot> <br/>
|
|
106
|
+
#2 <slot> 😃</slot>\`,
|
|
107
|
+
payload: \`<i slot="">🥕</i>\`
|
|
108
|
+
},
|
|
109
|
+
play: async ({
|
|
110
|
+
canvasElement
|
|
111
|
+
}) => {
|
|
112
|
+
const titleText = (NamedUnnamedDefaultSlot.args!.title as string);
|
|
113
|
+
const canvas = within(canvasElement);
|
|
114
|
+
await canvas.findByText(titleText);
|
|
115
|
+
const el = canvasElement;
|
|
116
|
+
expect(el.querySelectorAll('dce-4-slot').length).to.equal(1);
|
|
117
|
+
expect(el.querySelector('dce-4-slot').innerText).to.include(\`#1 🥕\`);
|
|
118
|
+
expect(el.querySelector('dce-4-slot').innerText).to.include(\`#2 🥕\`);
|
|
119
|
+
}
|
|
120
|
+
}`,...d.parameters?.docs?.source}}};u.parameters={...u.parameters,docs:{...u.parameters?.docs,source:{originalSource:`{
|
|
121
|
+
args: {
|
|
122
|
+
title: 'two named default slot',
|
|
123
|
+
tag: 'dce-3-slot',
|
|
124
|
+
slot: \`#1 <slot name=""> 😃</slot> <br/>
|
|
125
|
+
#2 <slot name=""> 😃</slot>\`,
|
|
126
|
+
payload: \`<i slot="">🥕</i>\`
|
|
127
|
+
},
|
|
128
|
+
play: async ({
|
|
129
|
+
canvasElement
|
|
130
|
+
}) => {
|
|
131
|
+
const titleText = (NamedDefaultSlot.args!.title as string);
|
|
132
|
+
const canvas = within(canvasElement);
|
|
133
|
+
await canvas.findByText(titleText);
|
|
134
|
+
const el = canvasElement;
|
|
135
|
+
expect(el.querySelectorAll('dce-3-slot').length).to.equal(1);
|
|
136
|
+
expect(el.querySelector('dce-3-slot').innerText).to.include(\`#1 🥕\`);
|
|
137
|
+
expect(el.querySelector('dce-3-slot').innerText).to.include(\`#2 🥕\`);
|
|
138
|
+
}
|
|
139
|
+
}`,...u.parameters?.docs?.source}}};m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
|
|
140
|
+
args: {
|
|
141
|
+
title: 'default slot',
|
|
142
|
+
tag: 'greet-element',
|
|
143
|
+
slot: \`<slot> Hello </slot> World!\`,
|
|
144
|
+
payload: \`👋\`
|
|
145
|
+
},
|
|
146
|
+
play: async ({
|
|
147
|
+
canvasElement
|
|
148
|
+
}) => {
|
|
149
|
+
const titleText = (DefaultSlot.args!.title as string);
|
|
150
|
+
const canvas = within(canvasElement);
|
|
151
|
+
await canvas.findByText(titleText);
|
|
152
|
+
const el = canvasElement;
|
|
153
|
+
expect(el.querySelectorAll('greet-element').length).to.equal(1);
|
|
154
|
+
expect(el.querySelector('greet-element').innerText).to.include(\`👋 World!\`);
|
|
155
|
+
}
|
|
156
|
+
}`,...m.parameters?.docs?.source}}};p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
|
|
157
|
+
args: {
|
|
158
|
+
title: '💪 DCE template',
|
|
159
|
+
tag: 'pokemon-tile',
|
|
160
|
+
attributes: \` title="bulbasaur" data-smile="👼" pokemon-id="1" \`,
|
|
161
|
+
slot: \`
|
|
162
|
+
<template>
|
|
163
|
+
<h3><value-of select="title"></value-of></h3> <!-- title is an attribute in instance
|
|
164
|
+
mapped into /*/attributes/title -->
|
|
165
|
+
<if test="//smile"> <!-- data-smile DCE instance attribute,
|
|
166
|
+
mapped into /*/dataset/smile
|
|
167
|
+
used in condition -->
|
|
168
|
+
<!-- data-smile DCE instance attribute, used as HTML -->
|
|
169
|
+
<div>Smile as: <value-of select="//smile"></value-of></div>
|
|
170
|
+
</if>
|
|
171
|
+
<!-- image would not be visible in sandbox, see live demo -->
|
|
172
|
+
<img src="https://unpkg.com/pokeapi-sprites@2.0.2/sprites/pokemon/other/dream-world/{pokemon-id}.svg" alt="{title} image">
|
|
173
|
+
<!-- image-src and title are DCE instance attributes,
|
|
174
|
+
mapped into /*/attributes/
|
|
175
|
+
used within output attribute via curly brackets -->
|
|
176
|
+
|
|
177
|
+
<!-- \\\`slot name=xxx\\\` replaced with elements with \\\`slot=xxx\\\` attribute -->
|
|
178
|
+
<p><slot name="description"><i>description is not available</i></slot></p>
|
|
179
|
+
<for-each select="//*[@pokemon-id]">
|
|
180
|
+
<!-- loop over payload elements with \\\`pokemon-id\\\` attribute -->
|
|
181
|
+
<button>
|
|
182
|
+
<img height="32"
|
|
183
|
+
src="https://unpkg.com/pokeapi-sprites@2.0.2/sprites/pokemon/other/dream-world/{@pokemon-id}.svg"
|
|
184
|
+
alt="{text()}"/>
|
|
185
|
+
<br/>
|
|
186
|
+
<value-of select='text()'/>
|
|
187
|
+
</button>
|
|
188
|
+
|
|
189
|
+
</for-each>
|
|
190
|
+
</template>
|
|
191
|
+
\`,
|
|
192
|
+
payload: \`<p slot="description">Bulbasaur is a cute Pokémon born with a large seed firmly affixed to its back;
|
|
193
|
+
the seed grows in size as the Pokémon does.</p>
|
|
194
|
+
<ul>
|
|
195
|
+
<li pokemon-id="2">ivysaur</li>
|
|
196
|
+
<li pokemon-id="3">venusaur</li>
|
|
197
|
+
</ul>
|
|
198
|
+
\`
|
|
199
|
+
},
|
|
200
|
+
play: async ({
|
|
201
|
+
canvasElement
|
|
202
|
+
}) => {
|
|
203
|
+
const titleText = (TemplateWithAttributesAndCondition.args!.title as string);
|
|
204
|
+
const canvas = within(canvasElement);
|
|
205
|
+
await canvas.findByText(titleText);
|
|
206
|
+
const el = canvasElement;
|
|
207
|
+
expect(el.querySelectorAll('pokemon-tile').length).to.equal(1);
|
|
208
|
+
const p = el.querySelector('pokemon-tile');
|
|
209
|
+
expect(p.querySelector('img').src).to.equal('https://unpkg.com/pokeapi-sprites@2.0.2/sprites/pokemon/other/dream-world/1.svg');
|
|
210
|
+
expect(p.querySelector('h3').innerText).to.equal('bulbasaur');
|
|
211
|
+
expect(p.innerText).to.include('Smile as: 👼');
|
|
212
|
+
expect(p.querySelector('[slot="description"]').innerText).to.include('Bulbasaur is a cute Pokémon');
|
|
213
|
+
}
|
|
214
|
+
}`,...p.parameters?.docs?.source}}};const b=["Regular","NamedSlot","DoubleSlot","NamedUnnamedDefaultSlot","NamedDefaultSlot","DefaultSlot","TemplateWithAttributesAndCondition"];export{m as DefaultSlot,c as DoubleSlot,u as NamedDefaultSlot,r as NamedSlot,d as NamedUnnamedDefaultSlot,i as Regular,p as TemplateWithAttributesAndCondition,b as __namedExportsOrder,h as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{S as s,c as m,s as g,a as n}from"./index-CEZitmnt.js";import"./iframe-CM82WlGY.js";import"../sb-preview/runtime.js";import"./index-Cc7K62zD.js";import"./index-DXimoRZY.js";import"./index-DrFu-skq.js";export{s as SyntaxHighlighter,m as createCopyToClipboardFunction,g as default,n as supportedLanguages};
|