New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@discoveryjs/discovery

Package Overview
Dependencies
Maintainers
3
Versions
93
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@discoveryjs/discovery - npm Package Compare versions

Comparing version 1.0.0-beta.60 to 1.0.0-beta.61

src/nav/buttons.js

8

CHANGELOG.md

@@ -0,1 +1,9 @@

## 1.0.0-beta.61 (31-03-2021)
- Fixed preloader's block disability in some cases due to underlaying
- Fixed hanging on `push` mode loading when no data is provided (model-free mode build as a single file)
- Removed style's applying to a container on `App` init
- Changed `Widget`'s init to set a container last
- Exposed `navButtons` as extensions: `indexPage`, `reportPage`, `loadData`, `inspect` and `darkmodeToggle`
## 1.0.0-beta.60 (19-03-2021)

@@ -2,0 +10,0 @@

2

dist/discovery-preloader.js

@@ -1,2 +0,2 @@

var ge=Object.create,w=Object.defineProperty,me=Object.getPrototypeOf,be=Object.prototype.hasOwnProperty,Se=Object.getOwnPropertyNames,we=Object.getOwnPropertyDescriptor;var ve=t=>w(t,"__esModule",{value:!0});var v=(t,e)=>()=>(e||(e={exports:{}},t(e.exports,e)),e.exports);var xe=(t,e,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Se(e))!be.call(t,r)&&r!=="default"&&w(t,r,{get:()=>e[r],enumerable:!(s=we(e,r))||s.enumerable});return t},De=t=>xe(ve(w(t!=null?ge(me(t)):{},"default",t&&t.__esModule&&"default"in t?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t);var K=v((lt,I)=>{var k=1,O=2,P=3,J=4,$=5,U=6,je={8:"\\b",9:"\\t",10:"\\n",12:"\\f",13:"\\r",34:'\\"',92:"\\\\"};function Ce(t){return t>=55296&&t<=56319}function Ae(t){return t>=56320&&t<=57343}function W(t){return typeof t.pipe=="function"&&typeof t._read=="function"&&typeof t._readableState=="object"&&t._readableState!==null}function Ee(t,e,s,r){switch(s&&typeof s.toJSON=="function"&&(s=s.toJSON()),r!==null&&(s=r.call(t,String(e),s)),typeof s){case"function":case"symbol":s=void 0;break;case"object":if(s!==null){let n=s.constructor;(n===String||n===Number||n===Boolean)&&(s=s.valueOf())}break}return s}function Re(t){return t===null||typeof t!="object"?k:Array.isArray(t)?P:O}function Te(t){return t===null||typeof t!="object"?k:typeof t.then=="function"?J:W(t)?t._readableState.objectMode?U:$:Array.isArray(t)?P:O}function Fe(t){if(typeof t=="function")return t;if(Array.isArray(t)){let e=new Set(t.map(s=>typeof s=="string"||typeof s=="number"?String(s):null).filter(s=>typeof s=="string"));return e.add(""),(s,r)=>e.has(s)?r:void 0}return null}function Ne(t){return typeof t=="number"?!Number.isFinite(t)||t<1?!1:" ".repeat(Math.min(t,10)):typeof t=="string"&&t.slice(0,10)||!1}I.exports={escapableCharCodeSubstitution:je,isLeadingSurrogate:Ce,isTrailingSurrogate:Ae,type:{PRIMITIVE:k,PROMISE:J,ARRAY:P,OBJECT:O,STRING_STREAM:$,OBJECT_STREAM:U},isReadableStream:W,replaceValue:Ee,getTypeNative:Re,getTypeAsync:Te,normalizeReplacer:Fe,normalizeSpace:Ne}});var Q=v((ct,H)=>{H.exports=TextDecoder});var X=v((ut,Y)=>{var{isReadableStream:Be}=K(),Le=Q(),d=1,Me=2,ze=new Le;function G(t){return t!==null&&typeof t=="object"}function j(t,e){return t.name==="SyntaxError"&&e.jsonParseOffset&&(t.message=t.message.replace(/at position (\d+)/,(s,r)=>"at position "+(Number(r)+e.jsonParseOffset))),t}function C(t,e){let s=t.length;t.length+=e.length;for(let r=0;r<e.length;r++)t[s+r]=e[r]}Y.exports=function(t){let e=new Z;if(G(t)&&Be(t))return new Promise((s,r)=>{t.on("data",n=>{try{e.push(n)}catch(i){r(j(i,e)),e=null}}).on("error",n=>{e=null,r(n)}).on("end",()=>{try{s(e.finish())}catch(n){r(j(n,e))}finally{e=null}})});if(typeof t=="function"){let s=t();if(G(s)&&(Symbol.iterator in s||Symbol.asyncIterator in s))return new Promise(async(r,n)=>{try{for await(let i of s)e.push(i);r(e.finish())}catch(i){n(j(i,e))}finally{e=null}})}throw new Error("Chunk emitter should be readable stream, generator, async generator or function returning an iterable object")};var Z=class{constructor(){this.value=void 0,this.valueStack=null,this.stack=new Array(100),this.lastFlushDepth=0,this.flushDepth=0,this.stateString=!1,this.stateStringEscape=!1,this.pendingByteSeq=null,this.pendingChunk=null,this.pos=0,this.jsonParseOffset=0}flush(e,s,r){let n=e.slice(s,r);if(this.jsonParseOffset=this.pos,this.pendingChunk!==null&&(n=this.pendingChunk+n,this.pendingChunk=null),n[0]===","&&(n=n.slice(1),this.jsonParseOffset++),this.flushDepth===this.lastFlushDepth)this.flushDepth>0?(this.jsonParseOffset--,this.stack[this.flushDepth-1]===d?Object.assign(this.valueStack.value,JSON.parse("{"+n+"}")):C(this.valueStack.value,JSON.parse("["+n+"]"))):(this.value=JSON.parse(n),this.valueStack={value:this.value,prev:null});else if(this.flushDepth>this.lastFlushDepth){for(let i=this.flushDepth-1;i>=this.lastFlushDepth;i--)n+=this.stack[i]===d?"}":"]";this.lastFlushDepth===0?(this.value=JSON.parse(n),this.valueStack={value:this.value,prev:null}):(this.jsonParseOffset--,this.stack[this.lastFlushDepth-1]===d?Object.assign(this.valueStack.value,JSON.parse("{"+n+"}")):C(this.valueStack.value,JSON.parse("["+n+"]")));for(let i=this.lastFlushDepth||1;i<this.flushDepth;i++){let a=this.valueStack.value;if(this.stack[i-1]===d){let o;for(o in a);a=a[o]}else a=a[a.length-1];this.valueStack={value:a,prev:this.valueStack}}}else{for(let i=this.lastFlushDepth-1;i>=this.flushDepth;i--)this.jsonParseOffset--,n=(this.stack[i]===d?"{":"[")+n;this.stack[this.lastFlushDepth-1]===d?Object.assign(this.valueStack.value,JSON.parse(n)):C(this.valueStack.value,JSON.parse(n));for(let i=this.lastFlushDepth-1;i>=this.flushDepth;i--)this.valueStack=this.valueStack.prev}this.pos+=r-s,this.lastFlushDepth=this.flushDepth}push(e){if(typeof e!="string"){if(this.pendingByteSeq!==null){let i=e;e=new Uint8Array(this.pendingByteSeq.length+i.length),e.set(this.pendingByteSeq),e.set(i,this.pendingByteSeq.length),this.pendingByteSeq=null}if(e[e.length-1]>127)for(let i=0;i<e.length;i++){let a=e[e.length-1-i];if(a>>6==3){i++,(i!==4&&a>>3==30||i!==3&&a>>4==14||i!==2&&a>>5==6)&&(this.pendingByteSeq=e.slice(e.length-i),e=e.slice(0,-i));break}}e=ze.decode(e)}let s=e.length,r=0,n=0;e:for(let i=0;i<s;i++){if(this.stateString){for(;i<s;i++)if(this.stateStringEscape)this.stateStringEscape=!1;else switch(e.charCodeAt(i)){case 34:this.stateString=!1;continue e;case 92:this.stateStringEscape=!0}break}switch(e.charCodeAt(i)){case 34:this.stateString=!0,this.stateStringEscape=!1;break;case 44:n=i;break;case 123:n=i+1,this.stack[this.flushDepth++]=d;break;case 91:n=i+1,this.stack[this.flushDepth++]=Me;break;case 93:case 125:n=i+1,this.flushDepth--,this.flushDepth<this.lastFlushDepth&&(this.flush(e,r,n),r=n);break}}if(n>r&&this.flush(e,r,n),n<s){let i=e.slice(n,s);this.pendingChunk=this.pendingChunk!==null?this.pendingChunk+i:i}}finish(){return this.pendingChunk!==null&&(/[^ \t\r\n]/.test(this.pendingChunk)&&this.flush("",0,0),this.pendingChunk=null),this.value}}});function f(t,e,s){let r=document.createElement(t);typeof e=="string"&&(e={class:e});for(let n in e)if(hasOwnProperty.call(e,n)){if(e[n]===void 0)continue;n.startsWith("on")?r.addEventListener(n.substr(2),e[n]):r.setAttribute(n,e[n])}return Array.isArray(s)?s.forEach(n=>r.appendChild(n instanceof Node?n:ke(n))):typeof s=="string"&&(r.innerHTML=s),r}function ke(t){return document.createTextNode(String(t))}var Oe=(()=>{let t=!1;try{let e={get passive(){return t=!0,!1}};window.addEventListener("test",null,e),window.removeEventListener("test",null,e)}catch(e){}return t})(),rt=Oe?Object.freeze({passive:!0,capture:!0}):!0;var y={request:{value:0,title:"Awaiting data"},receive:{value:.1,title:"Receiving data"},parse:{value:.9,title:"Processing data (parse)"},prepare:{value:.925,title:"Processing data (prepare)"},initui:{value:.975,title:"Preparing UI"},done:{value:1,title:"Done!"}};Object.values(y).forEach((t,e,s)=>{t.duration=(e!==s.length-1?s[e+1].value:0)-t.value});var Pe=async()=>{if(await new Promise(t=>setTimeout(t,1)),!document.hidden)return Promise.race([new Promise(requestAnimationFrame),new Promise(t=>setTimeout(t,8))])},x=class{constructor({onTiming:e,delay:s}){this.finished=!1,this.awaitRepaint=null,this.lastStage=null,this.lastStageStart=null,this.timings=[],this.onTiming=typeof e=="function"?e:()=>{},this.el=f("div",{class:"view-progress init",style:`--appearance-delay: ${s===!0?200:Number(s)||0}ms`},[f("div","title"),f("div","progress")])}async setState(e){let{stage:s,progress:r,error:n}=e;if(n||this.finished)return;let{value:i,title:a,duration:o}=y[s],l=s!==this.lastStage,c=Date.now(),u=0,h;if(this.lastStage||(this.startTime=c,requestAnimationFrame(()=>this.el.classList.remove("init"))),l){if(this.lastStageStart!==null){let p={stage:this.lastStage,title:y[this.lastStage].title,duration:c-this.lastStageStart};this.timings.push(p),this.onTiming(p)}this.lastStage=s,this.lastStageStart=c,this.awaitRepaint=c}if(r){let{done:p,elapsed:ye,units:N,completed:g,total:S}=r;S?(u=p?1:g/S,h=N==="bytes"?Math.round(u*100)+"%":`${g}/${S}`):(u=p?1:.1+Math.min(.9,ye/2e4),h=N==="bytes"?(g/(1024*1024)).toFixed(1)+"MB":g)}this.el.style.setProperty("--progress",i+u*o),this.el.querySelector(".title").textContent=h?`${a} (${h})...`:s!=="done"?`${a}...`:a,(l||c-this.awaitRepaint>65&&c-this.lastStageStart>200)&&(await Pe(),this.awaitRepaint=Date.now())}finish(){if(!this.finished&&this.lastStageStart!==null){let e=this.lastStage,s=Date.now()-this.lastStageStart,r=y[e].title,n={stage:e,title:r,duration:s};this.timings.push(n),this.onTiming(n),this.onTiming({stage:"done",title:y.done.title,duration:Date.now()-this.startTime})}this.finished=!0}dispose(){this.finish(),this.el.remove()}},B=x;var D=class{static setValue(e,s){if(!e.shouldPublish(s,e.value))return!1;let r=[],n=e.subscriber;for(e.value=s;n!==null;){let{callback:i,thisArg:a}=n;i!==null&&r.push(i.call(a,s,()=>e.unsubscribe(i,a))),n=n.subscriber}return r}constructor(e,s){this.value=e,this.shouldPublish=typeof s=="function"?s:this.shouldPublish,this.subscriber=null}get readonly(){let e=this;return{subscribe:this.subscribe.bind(this),subscribeSync:this.subscribeSync.bind(this),unsubscribe:this.unsubscribe.bind(this),get value(){return e.value}}}subscribe(e,s){return this.subscriber={callback:e,thisArg:s,subscriber:this.subscriber},()=>this.unsubscribe(e,s)}subscribeSync(e,s){let r=this.subscribe(e,s);return e.call(s,this.value,r),r}unsubscribe(e,s){let r=this,n=this.subscriber;for(;n!==null;){if(n.callback===e&&n.thisArg===s){n.callback=null,n.thisArg=null,r.subscriber=n.subscriber;break}r=n,n=n.subscriber}}shouldPublish(e,s){return e!==s}set(e){return this.constructor.setValue(this,e)!==!1}asyncSet(e){let s=this.constructor.setValue(this,e);return s===!1?Promise.resolve(!1):Promise.all(s).then(r=>r!==!1)}},L=D;var M=!1,z=!1,q=!1;try{new ReadableStream({}),z=!0}catch(t){}try{new ReadableStream({type:"bytes"}),M=!0}catch(t){}try{new Response(new Blob).getReader(),q=!0}catch(t){}function V(t){return typeof t.arrayBuffer=="function"?t.arrayBuffer():new Promise((e,s)=>{let r=new FileReader;r.readAsArrayBuffer(t),r.onload=r.onerror=({type:n})=>{r.onload=r.onerror=null,n==="load"?e(r.result||r):s(new Error("Failed to read the blob/file"))}})}function _(t){let e=0;if(typeof t.stream=="function"&&!/Version\/14\.1/.test(navigator.userAgent))return t.stream();if(M)return new ReadableStream({type:"bytes",autoAllocateChunkSize:512*1024,pull(s){let r=s.byobRequest.view,n=t.slice(e,e+r.byteLength);return V(n).then(function(i){let a=new Uint8Array(i),o=a.byteLength;e+=o,r.set(a),s.byobRequest.respond(o),e>=t.size&&s.close()})}});if(z)return new ReadableStream({pull(s){let r=t.slice(e,e+512*1024);return V(r).then(function(n){e+=n.byteLength,s.enqueue(new Uint8Array(n)),e==t.size&&s.close()})}});if(q)return new Response(t).body;throw new Error("Include https://github.com/creatorrr/web-streams-polyfill")}var ee=De(X()),A={stream:m,event:qe,file:te,url:Ve,push:_e};function Ie(t){try{return new URL(t,location.origin).origin===location.origin}catch(e){return!1}}function Je(t,e,s){let r=1024*1024,n=0;return(0,ee.default)(async function*(){let i=t.getReader(),a=Date.now();try{for(;;){let{done:o,value:l}=await i.read();if(o){await s({done:!0,elapsed:Date.now()-a,units:"bytes",completed:n,total:e});break}for(let c=0;c<l.length;c+=r){let u=c===0&&l.length-c<r?l:l.slice(c,c+r);n+=u.length,yield u,await s({done:!1,elapsed:Date.now()-a,units:"bytes",completed:n,total:e})}}}finally{i.releaseLock()}}).then(i=>({data:i,size:n}))}async function $e(t,e){let s=async(r,n)=>(await e.asyncSet({stage:r}),await n());try{let r=Date.now(),{stream:n,data:i,size:a,validateData:o}=await s("request",t),l=Date.now()-r,{data:c,size:u}=i||await s("receive",()=>Je(n,Number(a)||0,h=>e.asyncSet({stage:"receive",progress:h})));return typeof o=="function"&&o(c),await e.asyncSet({stage:"done"}),{data:c,size:u,payloadSize:Number(a)||0,time:Date.now()-r,requestTime:l}}catch(r){throw console.error("[Discovery] Error loading data:",r),await e.asyncSet({stage:"error",error:r}),r}}function m(t,e,s){let r=new L;return{state:r,result:$e(t,r).then(n=>({...n,...e(n.data)})),...s}}function te(t){return m(()=>{if(t.type!=="application/json")throw new Error("Not a JSON file");return{stream:_(t),size:t.size}},e=>({data:e,context:{name:`File: ${t.name}`,createdAt:new Date(t.lastModified||Date.now()),data:e}}))}function qe(t){let e=t.dataTransfer||t.target,s=e&&e.files&&e.files[0];return t.stopPropagation(),t.preventDefault(),te(s)}function Ve(t,e,s){s=s||{};let r=typeof t=="string"?void 0:t,n=s.isResponseOk||(a=>a.ok),i=s.getContentSize||((a,o)=>Ie(a)&&!o.headers.get("content-encoding")?o.headers.get("content-length"):o.headers.get("x-file-size"));return m(async()=>{let a=await fetch(r?"data:application/json,{}":t,s.fetch);if(n(a))return r?{data:r}:{stream:a.body,size:i(t,a),validateData:s.validateData};let o=a.headers.get("content-type")||"",l=await a.text();if(o.toLowerCase().startsWith("application/json")){let c=JSON.parse(l);l=c.error||c}throw l=new Error(l),l.stack=null,l},a=>({data:e?a[e]:a,context:{name:"Discovery",createdAt:e&&a.createdAt?new Date(Date.parse(a.createdAt)):new Date,...e?a:{data:a}}}))}function _e(t,e){let s;return m(()=>({size:t,stream:new ReadableStream({start(r){s=r},cancel(){s=null}})}),r=>({data:r.data,context:{name:r.name||"Discovery",createdAt:e||r.createdAt||Date.now(),data:r.data}}),{push(r){s.enqueue(r)},finish(){s.close(),s=null}})}function se({result:t,state:e},s){return new Promise((r,n)=>{let i=e.subscribeSync(({stage:a,progress:o,error:l})=>{if(l){i(),n(l);return}if(a==="done"){i(),r(t);return}s.setState({stage:a,progress:o})})})}var E=class{constructor(){this.listeners=Object.create(null)}on(e,s){return this.listeners[e]={callback:s,next:this.listeners[e]||null},this}once(e,s){return this.on(e,function r(...n){s.apply(this,n),this.off(e,r)})}off(e,s){let r=this.listeners[e]||null,n=null;for(;r!==null;){if(r.callback===s){r.callback=null,n?n.next=r.next:this.listeners[e]=r.next;break}n=r,r=r.next}return this}emit(e,...s){let r=this.listeners[e]||null,n=!1;for(;r!==null;)typeof r.callback=="function"&&r.callback.apply(this,s),n=!0,r=r.next;return n}},re=E;function Ue(t){let e="__storage_test__"+Math.random(),s;try{s=window[t]}catch(r){return null}try{s.setItem(e,e),s.removeItem(e)}catch(r){if(!(r instanceof DOMException&&(r.code===22||r.code===1014||r.name==="QuotaExceededError"||r.name==="NS_ERROR_DOM_QUOTA_REACHED")&&s.length!==0))return null}return s}function ne(t){let e=new Map;return e.storage=Ue(t),e.getOrCreate=s=>e.get(s)||We(s,e),e.getOrCreate.available=e.storage!==null,e}var R=new Map([["session",ne("sessionStorage")],["local",ne("localStorage")]]),mt=R.get("session").getOrCreate,ie=R.get("local").getOrCreate;addEventListener("storage",t=>{for(let[,e]of R)e.storage===t.storageArea&&e.has(t.key)&&e.get(t.key).forceSync()});function We(t,e){let s=null,r=new re,n=(a=e.storage.getItem(t))=>{s!==a&&r.emit("change",s=a)},i={get value(){return this.get()},get(){return s},set(a){e.storage&&(e.storage.setItem(t,a),n())},delete(){e.storage&&(e.storage.removeItem(t),n())},forceSync(){return e.storage&&n(),this.get()},on(a,o){return r.on("change",a),o&&a(s),()=>r.off("change",a)},off(a){r.off("change",a)}};return e.set(t,i),i.forceSync(),i}var Ke=new Set([!0,!1,"auto","disabled"]),ae=new Set,oe=matchMedia("(prefers-color-scheme:dark)"),le=ie("discoveryjs:darkmode"),ce=new Map([["true",!0],["false",!1],["auto","auto"]]),b=null;function He(){for(let t of ae)t.mode==="auto"&&t.set("auto")}function ue(t){let e=ce.has(t)?ce.get(t):null;if(b!==e){b=e;for(let s of ae)s.persistent&&s.mode!=="disabled"&&s.set(e!==null?e:"auto")}}ue(le.value);le.on(ue);oe.addListener(He);function Qe(t,e){return(t==="off"||t==="disable")&&(t="disabled"),t!=="disabled"&&e&&b!==null&&(t=b),t}function Ye(t){return Ke.has(t)||(t="disabled"),t==="auto"?oe.matches:t===!0}function he(t,e){return Ye(Qe(t,e))}var Ge={"font-family":"Tahoma, Verdana, Arial, sans-serif","font-size":"16px","line-height":"1.6","-webkit-text-size-adjust":"none","text-size-adjust":"none","background-color":"var(--discovery-background-color, white)",color:"var(--discovery-color, black)","transition-property":"background-color, color","transition-duration":".25s","transition-timing-function":"ease-in"},Ze={"--discovery-background-color":"#242424","--discovery-color":"#cccccc"},fe=new WeakSet,T=new WeakMap;function de(t,e,s){e in s||(s[e]=[t.style.getPropertyValue(e),t.style.getPropertyPriority(e)])}function pe(t,e){e=e||{},T.has(t)||T.set(t,Object.create(null));let s=he(e.darkmode,e.darkmodePersistent),r=T.get(t);for(let[n,i]of Object.entries(Ge))(fe.has(t)||!/^transition/.test(n))&&(de(t,n,r),t.style.setProperty(n,i));for(let[n,i]of Object.entries(Ze))de(t,n,r),s?t.style.setProperty(n,i):t.style.removeProperty(n);fe.add(t)}function F(t,e){let s=f("style",null,":host{display:none}"),r=new Set,n=Promise.resolve();return Array.isArray(e)&&(t.append(...e.map(i=>{switch(typeof i=="string"&&(i={type:"style",content:i}),i.type){case"style":return f("style",null,i.content);case"link":{let a,o,l=new Promise((u,h)=>{a=u,o=h});return r.add(l),f("link",{rel:"stylesheet",href:i.href,media:i.media,onerror(u){r.delete(l),o(u),r.size||s.remove()},onload(){r.delete(l),a(),r.size||s.remove()}})}default:throw new Error(`Unknown type "${i.type}" for a style descriptor`)}})),r.size&&(n=Promise.all(r),t.append(s))),n}function Xe(){return new B({delay:300,onTiming:({title:t,duration:e})=>console.log(`[Discovery/loader] ${t} \u2013 ${e}ms`)})}function et(t){t=t||{};let e=t.container||document.body,s=t.progressbar||Xe(),r=document.createElement("div"),n=r.attachShadow({mode:"open"});if(t.dataSource&&!A.hasOwnProperty(t.dataSource))throw new Error(`dataSource "${t.dataSource}" is not supported`);pe(e,t);let i=A[t.dataSource||"url"],a=t.dataSource==="push"?i():t.data?i(t.data,"data"):{result:Promise.resolve(t)};return a.push&&(window.discoveryLoader={push:a.push,finish:()=>{delete window.discoveryLoader,a.finish()}}),a.state&&se(a,s),F(n,t.styles),n.append(s.el),e.append(r),Object.assign(a.result,{el:r,shadowRoot:n,progressbar:s})}export{et as preloader};
var ge=Object.create,w=Object.defineProperty,me=Object.getPrototypeOf,be=Object.prototype.hasOwnProperty,Se=Object.getOwnPropertyNames,we=Object.getOwnPropertyDescriptor;var ve=t=>w(t,"__esModule",{value:!0});var v=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var xe=(t,e,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Se(e))!be.call(t,r)&&r!=="default"&&w(t,r,{get:()=>e[r],enumerable:!(s=we(e,r))||s.enumerable});return t},De=t=>xe(ve(w(t!=null?ge(me(t)):{},"default",t&&t.__esModule&&"default"in t?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t);var K=v((ot,I)=>{var k=1,O=2,P=3,J=4,$=5,U=6,je={8:"\\b",9:"\\t",10:"\\n",12:"\\f",13:"\\r",34:'\\"',92:"\\\\"};function Ce(t){return t>=55296&&t<=56319}function Ae(t){return t>=56320&&t<=57343}function W(t){return typeof t.pipe=="function"&&typeof t._read=="function"&&typeof t._readableState=="object"&&t._readableState!==null}function Ee(t,e,s,r){switch(s&&typeof s.toJSON=="function"&&(s=s.toJSON()),r!==null&&(s=r.call(t,String(e),s)),typeof s){case"function":case"symbol":s=void 0;break;case"object":if(s!==null){let n=s.constructor;(n===String||n===Number||n===Boolean)&&(s=s.valueOf())}break}return s}function Re(t){return t===null||typeof t!="object"?k:Array.isArray(t)?P:O}function Te(t){return t===null||typeof t!="object"?k:typeof t.then=="function"?J:W(t)?t._readableState.objectMode?U:$:Array.isArray(t)?P:O}function Fe(t){if(typeof t=="function")return t;if(Array.isArray(t)){let e=new Set(t.map(s=>typeof s=="string"||typeof s=="number"?String(s):null).filter(s=>typeof s=="string"));return e.add(""),(s,r)=>e.has(s)?r:void 0}return null}function Ne(t){return typeof t=="number"?!Number.isFinite(t)||t<1?!1:" ".repeat(Math.min(t,10)):typeof t=="string"&&t.slice(0,10)||!1}I.exports={escapableCharCodeSubstitution:je,isLeadingSurrogate:Ce,isTrailingSurrogate:Ae,type:{PRIMITIVE:k,PROMISE:J,ARRAY:P,OBJECT:O,STRING_STREAM:$,OBJECT_STREAM:U},isReadableStream:W,replaceValue:Ee,getTypeNative:Re,getTypeAsync:Te,normalizeReplacer:Fe,normalizeSpace:Ne}});var Q=v((lt,H)=>{H.exports=TextDecoder});var X=v((ct,Y)=>{var{isReadableStream:Be}=K(),Le=Q(),d=1,Me=2,ze=new Le;function G(t){return t!==null&&typeof t=="object"}function j(t,e){return t.name==="SyntaxError"&&e.jsonParseOffset&&(t.message=t.message.replace(/at position (\d+)/,(s,r)=>"at position "+(Number(r)+e.jsonParseOffset))),t}function C(t,e){let s=t.length;t.length+=e.length;for(let r=0;r<e.length;r++)t[s+r]=e[r]}Y.exports=function(t){let e=new Z;if(G(t)&&Be(t))return new Promise((s,r)=>{t.on("data",n=>{try{e.push(n)}catch(i){r(j(i,e)),e=null}}).on("error",n=>{e=null,r(n)}).on("end",()=>{try{s(e.finish())}catch(n){r(j(n,e))}finally{e=null}})});if(typeof t=="function"){let s=t();if(G(s)&&(Symbol.iterator in s||Symbol.asyncIterator in s))return new Promise(async(r,n)=>{try{for await(let i of s)e.push(i);r(e.finish())}catch(i){n(j(i,e))}finally{e=null}})}throw new Error("Chunk emitter should be readable stream, generator, async generator or function returning an iterable object")};var Z=class{constructor(){this.value=void 0,this.valueStack=null,this.stack=new Array(100),this.lastFlushDepth=0,this.flushDepth=0,this.stateString=!1,this.stateStringEscape=!1,this.pendingByteSeq=null,this.pendingChunk=null,this.pos=0,this.jsonParseOffset=0}flush(e,s,r){let n=e.slice(s,r);if(this.jsonParseOffset=this.pos,this.pendingChunk!==null&&(n=this.pendingChunk+n,this.pendingChunk=null),n[0]===","&&(n=n.slice(1),this.jsonParseOffset++),this.flushDepth===this.lastFlushDepth)this.flushDepth>0?(this.jsonParseOffset--,this.stack[this.flushDepth-1]===d?Object.assign(this.valueStack.value,JSON.parse("{"+n+"}")):C(this.valueStack.value,JSON.parse("["+n+"]"))):(this.value=JSON.parse(n),this.valueStack={value:this.value,prev:null});else if(this.flushDepth>this.lastFlushDepth){for(let i=this.flushDepth-1;i>=this.lastFlushDepth;i--)n+=this.stack[i]===d?"}":"]";this.lastFlushDepth===0?(this.value=JSON.parse(n),this.valueStack={value:this.value,prev:null}):(this.jsonParseOffset--,this.stack[this.lastFlushDepth-1]===d?Object.assign(this.valueStack.value,JSON.parse("{"+n+"}")):C(this.valueStack.value,JSON.parse("["+n+"]")));for(let i=this.lastFlushDepth||1;i<this.flushDepth;i++){let a=this.valueStack.value;if(this.stack[i-1]===d){let o;for(o in a);a=a[o]}else a=a[a.length-1];this.valueStack={value:a,prev:this.valueStack}}}else{for(let i=this.lastFlushDepth-1;i>=this.flushDepth;i--)this.jsonParseOffset--,n=(this.stack[i]===d?"{":"[")+n;this.stack[this.lastFlushDepth-1]===d?Object.assign(this.valueStack.value,JSON.parse(n)):C(this.valueStack.value,JSON.parse(n));for(let i=this.lastFlushDepth-1;i>=this.flushDepth;i--)this.valueStack=this.valueStack.prev}this.pos+=r-s,this.lastFlushDepth=this.flushDepth}push(e){if(typeof e!="string"){if(this.pendingByteSeq!==null){let i=e;e=new Uint8Array(this.pendingByteSeq.length+i.length),e.set(this.pendingByteSeq),e.set(i,this.pendingByteSeq.length),this.pendingByteSeq=null}if(e[e.length-1]>127)for(let i=0;i<e.length;i++){let a=e[e.length-1-i];if(a>>6==3){i++,(i!==4&&a>>3==30||i!==3&&a>>4==14||i!==2&&a>>5==6)&&(this.pendingByteSeq=e.slice(e.length-i),e=e.slice(0,-i));break}}e=ze.decode(e)}let s=e.length,r=0,n=0;e:for(let i=0;i<s;i++){if(this.stateString){for(;i<s;i++)if(this.stateStringEscape)this.stateStringEscape=!1;else switch(e.charCodeAt(i)){case 34:this.stateString=!1;continue e;case 92:this.stateStringEscape=!0}break}switch(e.charCodeAt(i)){case 34:this.stateString=!0,this.stateStringEscape=!1;break;case 44:n=i;break;case 123:n=i+1,this.stack[this.flushDepth++]=d;break;case 91:n=i+1,this.stack[this.flushDepth++]=Me;break;case 93:case 125:n=i+1,this.flushDepth--,this.flushDepth<this.lastFlushDepth&&(this.flush(e,r,n),r=n);break}}if(n>r&&this.flush(e,r,n),n<s){let i=e.slice(n,s);this.pendingChunk=this.pendingChunk!==null?this.pendingChunk+i:i}}finish(){return this.pendingChunk!==null&&(/[^ \t\r\n]/.test(this.pendingChunk)&&this.flush("",0,0),this.pendingChunk=null),this.value}}});function f(t,e,s){let r=document.createElement(t);typeof e=="string"&&(e={class:e});for(let n in e)if(hasOwnProperty.call(e,n)){if(e[n]===void 0)continue;n.startsWith("on")?r.addEventListener(n.substr(2),e[n]):r.setAttribute(n,e[n])}return Array.isArray(s)?s.forEach(n=>r.appendChild(n instanceof Node?n:ke(n))):typeof s=="string"&&(r.innerHTML=s),r}function ke(t){return document.createTextNode(String(t))}var Oe=(()=>{let t=!1;try{let e={get passive(){return t=!0,!1}};window.addEventListener("test",null,e),window.removeEventListener("test",null,e)}catch(e){}return t})(),st=Oe?Object.freeze({passive:!0,capture:!0}):!0;var y={request:{value:0,title:"Awaiting data"},receive:{value:.1,title:"Receiving data"},parse:{value:.9,title:"Processing data (parse)"},prepare:{value:.925,title:"Processing data (prepare)"},initui:{value:.975,title:"Preparing UI"},done:{value:1,title:"Done!"}};Object.values(y).forEach((t,e,s)=>{t.duration=(e!==s.length-1?s[e+1].value:0)-t.value});var Pe=async()=>{if(await new Promise(t=>setTimeout(t,1)),!document.hidden)return Promise.race([new Promise(requestAnimationFrame),new Promise(t=>setTimeout(t,8))])},x=class{constructor({onTiming:e,delay:s}){this.finished=!1,this.awaitRepaint=null,this.lastStage=null,this.lastStageStart=null,this.timings=[],this.onTiming=typeof e=="function"?e:()=>{},this.el=f("div",{class:"view-progress init",style:`--appearance-delay: ${s===!0?200:Number(s)||0}ms`},[f("div","title"),f("div","progress")])}async setState(e){let{stage:s,progress:r,error:n}=e;if(n||this.finished)return;let{value:i,title:a,duration:o}=y[s],l=s!==this.lastStage,c=Date.now(),u=0,h;if(this.lastStage||(this.startTime=c,requestAnimationFrame(()=>this.el.classList.remove("init"))),l){if(this.lastStageStart!==null){let p={stage:this.lastStage,title:y[this.lastStage].title,duration:c-this.lastStageStart};this.timings.push(p),this.onTiming(p)}this.lastStage=s,this.lastStageStart=c,this.awaitRepaint=c}if(r){let{done:p,elapsed:ye,units:N,completed:g,total:S}=r;S?(u=p?1:g/S,h=N==="bytes"?Math.round(u*100)+"%":`${g}/${S}`):(u=p?1:.1+Math.min(.9,ye/2e4),h=N==="bytes"?(g/(1024*1024)).toFixed(1)+"MB":g)}this.el.style.setProperty("--progress",i+u*o),this.el.querySelector(".title").textContent=h?`${a} (${h})...`:s!=="done"?`${a}...`:a,(l||c-this.awaitRepaint>65&&c-this.lastStageStart>200)&&(await Pe(),this.awaitRepaint=Date.now())}finish(){if(!this.finished&&this.lastStageStart!==null){let e=this.lastStage,s=Date.now()-this.lastStageStart,r=y[e].title,n={stage:e,title:r,duration:s};this.timings.push(n),this.onTiming(n),this.onTiming({stage:"done",title:y.done.title,duration:Date.now()-this.startTime})}this.finished=!0}dispose(){this.finish(),this.el.remove()}},B=x;var D=class{static setValue(e,s){if(!e.shouldPublish(s,e.value))return!1;let r=[],n=e.subscriber;for(e.value=s;n!==null;){let{callback:i,thisArg:a}=n;i!==null&&r.push(i.call(a,s,()=>e.unsubscribe(i,a))),n=n.subscriber}return r}constructor(e,s){this.value=e,this.shouldPublish=typeof s=="function"?s:this.shouldPublish,this.subscriber=null}get readonly(){let e=this;return{subscribe:this.subscribe.bind(this),subscribeSync:this.subscribeSync.bind(this),unsubscribe:this.unsubscribe.bind(this),get value(){return e.value}}}subscribe(e,s){return this.subscriber={callback:e,thisArg:s,subscriber:this.subscriber},()=>this.unsubscribe(e,s)}subscribeSync(e,s){let r=this.subscribe(e,s);return e.call(s,this.value,r),r}unsubscribe(e,s){let r=this,n=this.subscriber;for(;n!==null;){if(n.callback===e&&n.thisArg===s){n.callback=null,n.thisArg=null,r.subscriber=n.subscriber;break}r=n,n=n.subscriber}}shouldPublish(e,s){return e!==s}set(e){return this.constructor.setValue(this,e)!==!1}asyncSet(e){let s=this.constructor.setValue(this,e);return s===!1?Promise.resolve(!1):Promise.all(s).then(r=>r!==!1)}},L=D;var M=!1,z=!1,q=!1;try{new ReadableStream({}),z=!0}catch(t){}try{new ReadableStream({type:"bytes"}),M=!0}catch(t){}try{new Response(new Blob).getReader(),q=!0}catch(t){}function V(t){return typeof t.arrayBuffer=="function"?t.arrayBuffer():new Promise((e,s)=>{let r=new FileReader;r.readAsArrayBuffer(t),r.onload=r.onerror=({type:n})=>{r.onload=r.onerror=null,n==="load"?e(r.result||r):s(new Error("Failed to read the blob/file"))}})}function _(t){let e=0;if(typeof t.stream=="function"&&!/Version\/14\.1/.test(navigator.userAgent))return t.stream();if(M)return new ReadableStream({type:"bytes",autoAllocateChunkSize:512*1024,pull(s){let r=s.byobRequest.view,n=t.slice(e,e+r.byteLength);return V(n).then(function(i){let a=new Uint8Array(i),o=a.byteLength;e+=o,r.set(a),s.byobRequest.respond(o),e>=t.size&&s.close()})}});if(z)return new ReadableStream({pull(s){let r=t.slice(e,e+512*1024);return V(r).then(function(n){e+=n.byteLength,s.enqueue(new Uint8Array(n)),e==t.size&&s.close()})}});if(q)return new Response(t).body;throw new Error("Include https://github.com/creatorrr/web-streams-polyfill")}var ee=De(X()),A={stream:m,event:qe,file:te,url:Ve,push:_e};function Ie(t){try{return new URL(t,location.origin).origin===location.origin}catch(e){return!1}}function Je(t,e,s){let r=1024*1024,n=0;return(0,ee.default)(async function*(){let i=t.getReader(),a=Date.now();try{for(;;){let{done:o,value:l}=await i.read();if(o){await s({done:!0,elapsed:Date.now()-a,units:"bytes",completed:n,total:e});break}for(let c=0;c<l.length;c+=r){let u=c===0&&l.length-c<r?l:l.slice(c,c+r);n+=u.length,yield u,await s({done:!1,elapsed:Date.now()-a,units:"bytes",completed:n,total:e})}}}finally{i.releaseLock()}}).then(i=>({data:i,size:n}))}async function $e(t,e){let s=async(r,n)=>(await e.asyncSet({stage:r}),await n());try{let r=Date.now(),{stream:n,data:i,size:a,validateData:o}=await s("request",t),l=Date.now()-r,{data:c,size:u}=i||await s("receive",()=>Je(n,Number(a)||0,h=>e.asyncSet({stage:"receive",progress:h})));return typeof o=="function"&&o(c),await e.asyncSet({stage:"done"}),{data:c,size:u,payloadSize:Number(a)||0,time:Date.now()-r,requestTime:l}}catch(r){throw console.error("[Discovery] Error loading data:",r),await e.asyncSet({stage:"error",error:r}),r}}function m(t,e,s){let r=new L;return{state:r,result:$e(t,r).then(n=>({...n,...e(n.data)})),...s}}function te(t){return m(()=>{if(t.type!=="application/json")throw new Error("Not a JSON file");return{stream:_(t),size:t.size}},e=>({data:e,context:{name:`File: ${t.name}`,createdAt:new Date(t.lastModified||Date.now()),data:e}}))}function qe(t){let e=t.dataTransfer||t.target,s=e&&e.files&&e.files[0];return t.stopPropagation(),t.preventDefault(),te(s)}function Ve(t,e,s){s=s||{};let r=typeof t=="string"?void 0:t,n=s.isResponseOk||(a=>a.ok),i=s.getContentSize||((a,o)=>Ie(a)&&!o.headers.get("content-encoding")?o.headers.get("content-length"):o.headers.get("x-file-size"));return m(async()=>{let a=await fetch(r?"data:application/json,{}":t,s.fetch);if(n(a))return r?{data:r}:{stream:a.body,size:i(t,a),validateData:s.validateData};let o=a.headers.get("content-type")||"",l=await a.text();if(o.toLowerCase().startsWith("application/json")){let c=JSON.parse(l);l=c.error||c}throw l=new Error(l),l.stack=null,l},a=>({data:e?a[e]:a,context:{name:"Discovery",createdAt:e&&a.createdAt?new Date(Date.parse(a.createdAt)):new Date,...e?a:{data:a}}}))}function _e(t,e){let s;return m(()=>({size:t,stream:new ReadableStream({start(r){s=r},cancel(){s=null}})}),r=>({data:r.data,context:{name:r.name||"Discovery",createdAt:e||r.createdAt||Date.now(),data:r.data}}),{push(r){s.enqueue(r)},finish(){s.close(),s=null}})}function se({result:t,state:e},s){return new Promise((r,n)=>{let i=e.subscribeSync(({stage:a,progress:o,error:l})=>{if(l){i(),n(l);return}if(a==="done"){i(),r(t);return}s.setState({stage:a,progress:o})})})}var E=class{constructor(){this.listeners=Object.create(null)}on(e,s){return this.listeners[e]={callback:s,next:this.listeners[e]||null},this}once(e,s){return this.on(e,function r(...n){s.apply(this,n),this.off(e,r)})}off(e,s){let r=this.listeners[e]||null,n=null;for(;r!==null;){if(r.callback===s){r.callback=null,n?n.next=r.next:this.listeners[e]=r.next;break}n=r,r=r.next}return this}emit(e,...s){let r=this.listeners[e]||null,n=!1;for(;r!==null;)typeof r.callback=="function"&&r.callback.apply(this,s),n=!0,r=r.next;return n}},re=E;function Ue(t){let e="__storage_test__"+Math.random(),s;try{s=window[t]}catch(r){return null}try{s.setItem(e,e),s.removeItem(e)}catch(r){if(!(r instanceof DOMException&&(r.code===22||r.code===1014||r.name==="QuotaExceededError"||r.name==="NS_ERROR_DOM_QUOTA_REACHED")&&s.length!==0))return null}return s}function ne(t){let e=new Map;return e.storage=Ue(t),e.getOrCreate=s=>e.get(s)||We(s,e),e.getOrCreate.available=e.storage!==null,e}var R=new Map([["session",ne("sessionStorage")],["local",ne("localStorage")]]),gt=R.get("session").getOrCreate,ie=R.get("local").getOrCreate;addEventListener("storage",t=>{for(let[,e]of R)e.storage===t.storageArea&&e.has(t.key)&&e.get(t.key).forceSync()});function We(t,e){let s=null,r=new re,n=(a=e.storage.getItem(t))=>{s!==a&&r.emit("change",s=a)},i={get value(){return this.get()},get(){return s},set(a){e.storage&&(e.storage.setItem(t,a),n())},delete(){e.storage&&(e.storage.removeItem(t),n())},forceSync(){return e.storage&&n(),this.get()},on(a,o){return r.on("change",a),o&&a(s),()=>r.off("change",a)},off(a){r.off("change",a)}};return e.set(t,i),i.forceSync(),i}var Ke=new Set([!0,!1,"auto","disabled"]),ae=new Set,oe=matchMedia("(prefers-color-scheme:dark)"),le=ie("discoveryjs:darkmode"),ce=new Map([["true",!0],["false",!1],["auto","auto"]]),b=null;function He(){for(let t of ae)t.mode==="auto"&&t.set("auto")}function ue(t){let e=ce.has(t)?ce.get(t):null;if(b!==e){b=e;for(let s of ae)s.persistent&&s.mode!=="disabled"&&s.set(e!==null?e:"auto")}}ue(le.value);le.on(ue);oe.addListener(He);function Qe(t,e){return(t==="off"||t==="disable")&&(t="disabled"),t!=="disabled"&&e&&b!==null&&(t=b),t}function Ye(t){return Ke.has(t)||(t="disabled"),t==="auto"?oe.matches:t===!0}function he(t,e){return Ye(Qe(t,e))}var Ge={"font-family":"Tahoma, Verdana, Arial, sans-serif","font-size":"16px","line-height":"1.6","-webkit-text-size-adjust":"none","text-size-adjust":"none","background-color":"var(--discovery-background-color, white)",color:"var(--discovery-color, black)","transition-property":"background-color, color","transition-duration":".25s","transition-timing-function":"ease-in"},Ze={"--discovery-background-color":"#242424","--discovery-color":"#cccccc"},fe=new WeakSet,T=new WeakMap;function de(t,e,s){e in s||(s[e]=[t.style.getPropertyValue(e),t.style.getPropertyPriority(e)])}function pe(t,e){e=e||{},T.has(t)||T.set(t,Object.create(null));let s=he(e.darkmode,e.darkmodePersistent),r=T.get(t);for(let[n,i]of Object.entries(Ge))(fe.has(t)||!/^transition/.test(n))&&(de(t,n,r),t.style.setProperty(n,i));for(let[n,i]of Object.entries(Ze))de(t,n,r),s?t.style.setProperty(n,i):t.style.removeProperty(n);fe.add(t)}function F(t,e){let s=f("style",null,":host{display:none}"),r=new Set,n=Promise.resolve();return Array.isArray(e)&&(t.append(...e.map(i=>{switch(typeof i=="string"&&(i={type:"style",content:i}),i.type){case"style":return f("style",null,i.content);case"link":{let a,o,l=new Promise((u,h)=>{a=u,o=h});return r.add(l),f("link",{rel:"stylesheet",href:i.href,media:i.media,onerror(u){r.delete(l),o(u),r.size||s.remove()},onload(){r.delete(l),a(),r.size||s.remove()}})}default:throw new Error(`Unknown type "${i.type}" for a style descriptor`)}})),r.size&&(n=Promise.all(r),t.append(s))),n}function Xe(){return new B({delay:300,onTiming:({title:t,duration:e})=>console.log(`[Discovery/loader] ${t} \u2013 ${e}ms`)})}function Ct(t){t=t||{};let e=t.container||document.body,s=t.progressbar||Xe(),r=document.createElement("div"),n=r.attachShadow({mode:"open"});if(t.dataSource&&!A.hasOwnProperty(t.dataSource))throw new Error(`dataSource "${t.dataSource}" is not supported`);pe(e,t);let i=A[t.dataSource||"url"],a=t.data?t.dataSource==="push"?i():i(t.data,"data"):{result:Promise.resolve({})};return a.push&&(window.discoveryLoader={push:a.push,finish:()=>{delete window.discoveryLoader,a.finish()}}),a.state&&se(a,s),F(n,t.styles),n.append(s.el),e.append(r),Object.assign(a.result,{el:r,shadowRoot:n,progressbar:s})}export{Ct as preloader};
//# sourceMappingURL=discovery-preloader.js.map
{
"name": "@discoveryjs/discovery",
"version": "1.0.0-beta.60",
"version": "1.0.0-beta.61",
"description": "Hackable JSON discovery tool",

@@ -38,5 +38,5 @@ "author": "Roman Dvornov <rdvornov@gmail.com> (https://github.com/lahmatiy)",

"devDependencies": {
"@discoveryjs/cli": "2.0.0-beta.11",
"@discoveryjs/cli": "^2.0.0-beta.12",
"cypress": "^5.3.0",
"esbuild": "~0.9.2",
"esbuild": "~0.11.2",
"eslint": "^6.8.0",

@@ -43,0 +43,0 @@ "eslint-plugin-cypress": "^2.11.2"

@@ -7,3 +7,2 @@ /* eslint-env browser */

import { escapeHtml } from '../core/utils/html.js';
import { applyContainerStyles } from '../core/utils/container-styles.js';
import Progressbar from '../core/utils/progressbar.js';

@@ -17,2 +16,3 @@ import {

} from '../core/utils/load-data.js';
import * as navButtons from '../nav/buttons';

@@ -33,114 +33,41 @@ const coalesceOption = (value, fallback) => value !== undefined ? value : fallback;

constructor(container, options = {}) {
super(container, null, {
...options,
darkmode: coalesceOption(options.darkmode, 'auto'),
darkmodePersistent: coalesceOption(options.darkmodePersistent, true)
});
const extensions = options.extensions ? [options.extensions] : [];
this.mode = this.options.mode;
if (coalesceOption(this.options.router, true)) {
this.apply(router);
if (coalesceOption(options.router, true)) {
extensions.push(router);
}
// FIXME: should not apply styles by default
this.darkmode.subscribe(darkmode => applyContainerStyles(this.dom.wrapper.parentNode, { darkmode }));
extensions.push(navButtons.darkmodeToggle);
// let detachDarkMode = () => {};
// this.nav.append({
// name: 'dev-dark-mode',
// when: () => this.darkmode.mode !== 'disabled',
// onClick: () => this.darkmode.toggle(true),
// postRender: el => {
// detachDarkMode();
// detachDarkMode = this.darkmode.subscribe((value, mode) => {
// el.classList.toggle('dark', value);
// el.classList.toggle('auto', mode === 'auto');
// el.textContent = mode === 'auto' ? 'Auto light/dark' : value ? 'Dark mode' : 'Light mode';
// }, true);
// }
// });
let detachToggleDarkMode = () => {};
this.nav.menu.append({
view: 'block',
className: ['toggle-menu-item', 'dark-mode-switcher'],
name: 'dark-mode',
when: '#.widget | darkmode.mode != "disabled"',
postRender: (el, opts, data, { hide }) => {
let selfValue;
detachToggleDarkMode();
detachToggleDarkMode = this.darkmode.subscribe((value, mode) => {
const newValue = mode === 'auto' ? 'auto' : value;
if (newValue === selfValue) {
return;
}
el.innerHTML = '';
selfValue = newValue;
this.view.render(el, {
view: 'toggle-group',
beforeToggles: 'text:"Color schema"',
onChange: value => {
selfValue = value;
this.darkmode.set(value);
hide();
},
value: newValue,
data: [
{ value: false, text: 'Light' },
{ value: true, text: 'Dark' },
{ value: 'auto', text: 'Auto' }
]
}, null, { widget: this });
}, true);
}
});
if (this.mode === 'modelfree') {
this.nav.append({
name: 'load-data',
content: 'text:"Load data"',
onClick: () => createElement('input', {
type: 'file',
accept: 'application/json,.json',
onchange: event => this.constructor.modelfreeLoadData(this, event)
}).click()
});
if (options.mode === 'modelfree') {
extensions.push(navButtons.loadData);
} else {
this.nav.append({
name: 'index-page',
when: '#.widget | pageId != defaultPageId',
data: '{ text: "Index", href: pageLink(#.widget.defaultPageId) }'
});
this.nav.append({
name: 'report-page',
when: '#.widget | pageId != reportPageId',
data: '{ text: "Make report", href: pageLink(#.widget.reportPageId) }'
});
extensions.push(navButtons.indexPage);
extensions.push(navButtons.reportPage);
}
if (coalesceOption(this.options.inspector, true)) {
this.nav.append({
name: 'inspect',
onClick: () => this.inspectMode.set(!this.inspectMode.value),
postRender(el) {
el.title = 'Enable view inspection. Use Alt + click for quick inspection';
}
});
if (coalesceOption(options.inspector, true)) {
extensions.push(navButtons.inspect);
}
}
progressbar(...args) {
return new Progressbar(...args);
super(container, null, {
...options,
extensions: options.extensions ? extensions.concat(options.extensions) : extensions,
darkmode: coalesceOption(options.darkmode, 'auto'),
darkmodePersistent: coalesceOption(options.darkmodePersistent, true)
});
this.mode = this.options.mode;
}
trackLoadDataProgress(loader) {
const progressbar = this.progressbar({
progressbar(options) {
return new Progressbar({
onTiming: ({ title, duration }) =>
console.log(`[Discovery] Data loading / ${title} – ${duration}ms`)
console.log(`[Discovery] Data loading / ${title} – ${duration}ms`),
...options
});
}
trackLoadDataProgress(loader) {
const progressbar = this.progressbar();
const containerEl = this.dom.loadingOverlay;

@@ -147,0 +74,0 @@ containerEl.innerHTML = '';

@@ -8,2 +8,3 @@ import App from './app/index.js';

import utils from './core/utils/index.js';
import { buttons as navButtons } from './nav/index.js';

@@ -15,2 +16,3 @@ export {

pages,
navButtons,
inspector,

@@ -17,0 +19,0 @@ router,

@@ -66,2 +66,3 @@ import { createFragment } from '../core/utils/dom.js';

export * as buttons from './buttons.js';
export class WidgetNavigation {

@@ -68,0 +69,0 @@ constructor(host) {

@@ -29,9 +29,7 @@ import Progressbar from './core/utils/progressbar.js';

const loadData = dataSource[config.dataSource || 'url'];
const loading = config.dataSource === 'push'
? loadData()
: config.data
? loadData(config.data, 'data')
: {
result: Promise.resolve(config)
};
const loading = config.data
? config.dataSource === 'push' ? loadData() : loadData(config.data, 'data')
: {
result: Promise.resolve({})
};

@@ -38,0 +36,0 @@ if (loading.push) {

@@ -7,3 +7,2 @@ /* eslint-env browser */

import PageRenderer from '../core/page.js';
import ObjectMarker from '../core/object-marker.js';
import Publisher from '../core/publisher.js';

@@ -19,2 +18,3 @@ import * as views from '../views/index.js';

import * as lib from '../lib.js'; // FIXME: temporary solution to expose discovery's lib API
import { createDataExtensionApi } from './data-extension-api.js';
import jora from 'jora';

@@ -53,129 +53,2 @@

function createDataExtensionApi(instance) {
const objectMarkers = new ObjectMarker();
const linkResolvers = [];
const annotations = [];
const lookupObjectMarker = (value, type) => objectMarkers.lookup(value, type);
const lookupObjectMarkerAll = (value) => objectMarkers.lookupAll(value);
const addValueAnnotation = (query, options = false) => {
if (typeof options === 'boolean') {
options = {
debug: options
};
}
annotations.push({
query,
...options
});
};
const resolveValueLinks = (value) => {
const result = [];
const type = typeof value;
if (value && (type === 'object' || type === 'string')) {
for (const resolver of linkResolvers) {
const link = resolver(value);
if (link) {
result.push(link);
}
}
}
return result.length ? result : null;
};
let queryCustomMethods = {
query: (...args) => instance.query(...args),
pageLink: (pageRef, pageId, pageParams) =>
instance.encodePageHash(pageId, pageRef, pageParams),
marker: lookupObjectMarker,
markerAll: lookupObjectMarkerAll
};
let joraSetup = jora.setup(queryCustomMethods);
return {
apply() {
Object.assign(instance, {
objectMarkers,
linkResolvers,
resolveValueLinks,
annotations,
queryFnFromString: joraSetup
});
},
methods: {
lookupObjectMarker,
lookupObjectMarkerAll,
resolveValueLinks,
defineObjectMarker(name, options) {
const { page, mark, lookup } = objectMarkers.define(name, options) || {};
if (!lookup) {
return () => {};
}
if (page !== null) {
if (!instance.page.isDefined(options.page)) {
console.error(`[Discovery] Page reference "${options.page}" doesn't exist`);
return;
}
linkResolvers.push(value => {
const marker = lookup(value);
if (marker !== null) {
return {
type: page,
text: marker.title,
href: marker.href,
entity: marker.object
};
}
});
addValueAnnotation((value, context) => {
const marker = lookup(value);
if (marker && marker.object !== context.host) {
return {
place: 'before',
style: 'badge',
text: page,
href: marker.href
};
}
});
} else {
addValueAnnotation((value, context) => {
const marker = lookup(value);
if (marker && marker.object !== context.host) {
return {
place: 'before',
style: 'badge',
text: name
};
}
});
}
return mark;
},
addValueAnnotation,
addQueryHelpers(helpers) {
queryCustomMethods = {
...queryCustomMethods,
...helpers
};
joraSetup = jora.setup(queryCustomMethods);
},
query(query, ...args) {
return instance.queryFn.call({ queryFnFromString: joraSetup }, query)(...args);
}
}
};
}
export default class Widget extends Emitter {

@@ -239,8 +112,8 @@ constructor(container, defaultPage, options) {

this.nav.render(this.dom.nav);
this.setContainer(container);
if (this.options.inspector || this.options.inspector === undefined) {
this.apply(attachViewInspector);
}
this.nav.render(this.dom.nav);
this.setContainer(container);
}

@@ -247,0 +120,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc