"use strict";(self.webpackChunk_pyviz_jupyterlab_pyviz=self.webpackChunk_pyviz_jupyterlab_pyviz||[]).push([[30],{30:(e,t,n)=>{n.r(t),n.d(t,{default:()=>ee});var o=n(797),i=n(368),r=n(510),a=n(311),s=n(326),d=n(8),c=n(557),l=n(717),p=n(452);const m='\n\n \n \n \n \n image/svg+xml\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n',h=new p.LabIcon({name:"@pyviz/jupyterlab_pyviz:panel",svgstr:m});var u=n(930);const v=n(217).ServerConnection.makeRequest,g=a.URLExt.join(a.PageConfig.getBaseUrl(),"/panel-preview/"),y=a.URLExt.join(g,"/layout/");class f{constructor(e,t,n){this._app=e,this._context=t,this._wManager=n,this._comm=void 0,t.saveState.connect((async(e,t)=>{if("started"!==t)return;const n=a.URLExt.join(y,e.path),o=await v(n,{method:"GET"},this._app.serviceManager.serverSettings);if(200!==o.status)return;let i;try{i=await o.json()}catch(e){return}if(!i)return;let r=!1;for(const t of e.model.cells){const e=i.cells[t.id],n=t.getMetadata();(!("panel-layout"in n)&&e||!u.JSONExt.deepEqual(n["panel-layout"],e))&&(t.setMetadata("panel-layout",e),r=!0)}const s=e.model.getMetadata();(!("panel-cell-order"in s)&&i.order||!u.JSONExt.deepEqual(s["panel-cell-order"],i.order))&&(e.model.setMetadata("panel-cell-order",i.order),r=!0),r&&e.save()})),t.sessionContext.statusChanged.connect(((e,t)=>{"restarting"!==t&&"dead"!==t||(this._comm=void 0)}),this)}get context(){return this._context}get comm(){var e,t,n,o,i;return null===(null===(e=this._context)||void 0===e?void 0:e.sessionContext)?null:(null===this._comm&&null!==(null===(n=null===(t=this._context)||void 0===t?void 0:t.sessionContext.session)||void 0===n?void 0:n.kernel)&&(this._comm=null===(i=null===(o=this._context)||void 0===o?void 0:o.sessionContext.session)||void 0===i?void 0:i.kernel.createComm("hv-extension-comm"),this._comm&&this._comm.open()),this._comm)}set comm(e){this._comm=e}get isDisposed(){return null===this._context}dispose(){this.isDisposed||(this._context=null,this._comm=void 0)}}var w=n(638),_=n(901),x=n(29);const b=new u.Token("@pyviz/jupyterlab_pyviz:IPanelPreviewTracker");class k extends r.IFrame{constructor(e={}){super(e),this.srcdoc=e.srcdoc||null}get srcdoc(){return this._srcdoc}set srcdoc(e){this._srcdoc=e;const t=this.node.querySelector("iframe");null!==e&&(t.setAttribute("srcdoc",e),t.addEventListener("load",(()=>t.removeAttribute("srcdoc"))))}}const C=`\n\n\n\n Jupyter Kernel Starting\n \n \n\n\n ${m}\n

Panel Preview Launching...

\n
\n
\n
\n\n\n`;class P extends w.DocumentWidget{constructor(e){super({...e,content:new k({srcdoc:C,sandbox:["allow-same-origin","allow-scripts","allow-downloads"]})}),window.onmessage=e=>{var t,n,o,i,r;switch(null===(t=e.data)||void 0===t?void 0:t.level){case"debug":console.debug(...(null===(n=e.data)||void 0===n?void 0:n.msg)||e);break;case"info":console.info(...(null===(o=e.data)||void 0===o?void 0:o.msg)||e);break;case"warn":console.warn(...(null===(i=e.data)||void 0===i?void 0:i.msg)||e);break;case"error":console.error(...(null===(r=e.data)||void 0===r?void 0:r.msg)||e);break;default:console.log(e)}};const{getPanelUrl:t,context:n,renderOnSave:o}=e;this.content.url=t(n.path),this.content.title.icon=h,this._renderOnSave=null!=o&&o,n.pathChanged.connect((()=>{this.content.url=t(n.path)}));const i=new r.ToolbarButton({icon:p.refreshIcon,tooltip:"Reload Preview",onClick:()=>{this.reload()}}),a=r.ReactWidget.create(x.createElement("label",{className:"jp-PanelPreview-renderOnSave"},x.createElement("input",{name:"renderOnSave",type:"checkbox",defaultChecked:o,onChange:e=>{this._renderOnSave=e.target.checked}}),x.createElement("span",null,"Render on Save")));this.toolbar.addItem("reload",i),n&&(this.toolbar.addItem("renderOnSave",a),n.ready.then((()=>{n.fileChanged.connect((()=>{this.renderOnSave&&this.reload()}))})))}dispose(){this.isDisposed||(super.dispose(),_.Signal.clearData(this))}reload(){var e;const t=this.content.node.querySelector("iframe");null!==t.contentWindow&&(null===(e=t.parentElement)||void 0===e||e.classList.add("jp-PanelPreview-loading"),t.contentWindow.location.reload(),t.addEventListener("load",(()=>{var e;null===(e=t.parentElement)||void 0===e||e.classList.remove("jp-PanelPreview-loading")})))}get renderOnSave(){return this._renderOnSave}set renderOnSave(e){this._renderOnSave=e}}class S extends w.ABCWidgetFactory{constructor(e,t){super(t),this.getPanelUrl=e,this.defaultRenderOnSave=!1}createNewWidget(e){return new P({context:e,getPanelUrl:this.getPanelUrl,renderOnSave:this.defaultRenderOnSave})}}var E=n(882);const T="application/vnd.holoviews_load.v0+json",R="application/vnd.holoviews_exec.v0+json";class M extends E.Widget{constructor(e,t){super(),this._load_mimetype=T,this._script_element=document.createElement("script"),this._manager=t}renderModel(e){const t=e.data[this._load_mimetype];return this._script_element.textContent=t,this.node.appendChild(this._script_element),this._manager.comm,Promise.resolve()}}class O extends E.Widget{constructor(e,t){super(),this._html_mimetype="text/html",this._js_mimetype="application/javascript",this._exec_mimetype=R,this._createNodes(),this._manager=t,this._displayed=!1,this._dispose=!0,this._document_id=null,this._server_id=null}_createNodes(){this._div_element=document.createElement("div"),this._script_element=document.createElement("script"),this._script_element.setAttribute("type","text/javascript")}_registerKernel(e){var t;const n={create_view:(e,t)=>this._manager._wManager.create_view(e,t),set_state:e=>this._manager._wManager.set_state(e),display_view:(e,t)=>this._manager._wManager.display_view(e,t)};window.PyViz.widget_manager=n;const o=null===(t=this._manager.context.sessionContext.session)||void 0===t?void 0:t.kernel,i={connectToComm:(e,t)=>{if(void 0===o)return console.log("Kernel not found, could not connect to comm target ",e),{open:function(){},send:function(){},onMsg:function(){}};const n=o.createComm(e,t);return{set onMsg(e){n.onMsg=e},open:(e,t,o)=>{n.open(e,t,o)},send:(e,t,o,i)=>{n.isDisposed||n.send(e,t,o,i)}}},registerCommTarget:(e,t)=>{if(void 0!==o)return o.registerCommTarget(e,t);console.log("Kernel not found, could not register comm target ",e)}};window.PyViz.kernels[e]=i,this._manager.context.sessionContext.statusChanged.connect(((t,n)=>{"restarting"!==n&&"dead"!==n||(delete window.PyViz.kernels[e],this._dispose=!1)}),this)}renderModel(e){const t=e.metadata[this._exec_mimetype],n=t.id;if(this._displayed&&(this._disposePlot(),this.node.removeChild(this._div_element),this.node.removeChild(this._script_element),this._createNodes()),this._dispose=!0,void 0!==n){void 0===window.PyViz?window.PyViz={comms:{},comm_status:{},kernels:{},receivers:{},plot_index:[]}:void 0===window.PyViz.plot_index&&(window.PyViz.plot_index={});const t=e.data[this._html_mimetype];this._div_element.innerHTML=t;const o=[],i=this._div_element.querySelectorAll("script");for(const e in i)i.hasOwnProperty(e)&&o.push(i[e]);if(o.forEach((e=>{var t;const n=document.createElement("script"),o=[],i=e.attributes;for(const e in i)i.hasOwnProperty(e)&&o.push(i[e]);o.forEach((e=>n.setAttribute(e.name,e.value))),n.appendChild(document.createTextNode(e.innerHTML)),null===(t=e.parentNode)||void 0===t||t.replaceChild(n,e)})),this.node.appendChild(this._div_element),this._js_mimetype in e.data){const t=e.data[this._js_mimetype];this._script_element.textContent=t,this.node.appendChild(this._script_element)}this._registerKernel(n),this._displayed=!0,this._document_id=n}else if(void 0!==t.server_id){this._server_id=t.server_id;const n=e.data[this._html_mimetype],o=document.createElement("div");o.innerHTML=n;const i=o.children[0],r=[],a=i.attributes;for(const e in a)a.hasOwnProperty(e)&&r.push(a[e]);r.forEach((e=>this._script_element.setAttribute(e.name,e.value))),this._script_element.appendChild(document.createTextNode(i.innerHTML)),this.node.appendChild(this._script_element)}return Promise.resolve().then((()=>{void 0!==window.Bokeh&&n in window.Bokeh.index?window.PyViz.plot_index[n]=window.Bokeh.index[n]:window.PyViz.plot_index[n]=null}))}_disposePlot(){if(this._server_id)null!==this._manager.comm&&this._dispose&&this._manager.comm.send({event_type:"server_delete",id:this._server_id}),this._server_id=null;else if(this._document_id){const e=this._document_id;if(this._manager.comm&&this._dispose&&this._manager.comm.send({event_type:"delete",id:e}),void 0!==window.PyViz&&(void 0!==window.PyViz.kernels&&delete window.PyViz.kernels[e],void 0!==window.PyViz.plot_index&&delete window.PyViz.plot_index[e]),void 0!==window.Bokeh&&e in window.Bokeh.index){const t=window.Bokeh.index[e].model.document;t.clear();const n=window.Bokeh.documents.indexOf(t);n>-1&&window.Bokeh.documents.splice(n,1)}this._document_id=null}}dispose(){this.isDisposed||(this._disposePlot(),super.dispose())}}var z=n(181),N=n.n(z),j=n(379),W=n.n(j),I=n(795),L=n.n(I),B=n(569),A=n.n(B),D=n(565),V=n.n(D),F=n(216),U=n.n(F),q=n(589),H=n.n(q),K=n(110),Z={};Z.styleTagTransform=H(),Z.setAttributes=V(),Z.insert=A().bind(null,"head"),Z.domAPI=L(),Z.insertStyleElement=U(),W()(K.Z,Z),K.Z&&K.Z.locals&&K.Z.locals;let J=null;try{const e=n(294);J=e.registerWidgetManager}catch(e){console.log("Could not load ipywidgets support for @pyviz/jupyterlab_pyviz")}var Y;!function(e){e.panelRender="notebook:render-with-panel",e.panelOpen="notebook:open-with-panel",e.lumenRender="notebook:render-with-lumen",e.lumenOpen="notebook:open-with-lumen"}(Y||(Y={}));class ${constructor(e){this._commands=e}createNew(e){const t=new r.ToolbarButton({className:"panelRender",icon:h,onClick:()=>{this._commands.execute(Y.panelRender)}});return setTimeout((()=>{requestAnimationFrame((()=>{N()(t.node,{allowHTML:!0,arrow:!0,content:"\nPreview with Panel\n
\n
\n\n Note: Your notebook must publish Panel contents with .servable().\n\n",placement:"bottom"})}))}),0),e.toolbar.insertAfter("cellType","panelRender",t),t}}class G{constructor(e){this._commands=e}createNew(e){const t=new r.ToolbarButton({className:"lumenRender",icon:h,onClick:()=>{this._commands.execute(Y.lumenRender)}});return setTimeout((()=>{requestAnimationFrame((()=>{N()(t.node,{arrow:!0,content:"Preview with Lumen",placement:"bottom"})}))}),0),e.toolbar.addItem("lumenRender",t),t}}class Q{constructor(e){this._app=e}createNew(e,t){const n=this._docmanager._findContext(t.path,"notebook"),o={manager:null};null!==J&&J(n,e.content.rendermime,[o]);const i=new f(this._app,t,o.manager);return e.content.rendermime.addFactory({safe:!1,mimeTypes:[T],createRenderer:e=>new M(e,i)},-1),e.content.rendermime.addFactory({safe:!1,mimeTypes:[R],createRenderer:e=>new O(e,i)},-1),new l.DisposableDelegate((()=>{e.content.rendermime&&e.content.rendermime.removeMimeType(R),i.dispose()}))}}const X={id:"@pyviz/jupyterlab_pyviz:plugin",autoStart:!0,requires:[s.IDocumentManager,o.INotebookTracker],optional:[r.ICommandPalette,i.ILayoutRestorer,c.IMainMenu,d.ISettingRegistry],provides:b,activate:(e,t,n,o,i,s,d)=>{const c=new Q(e);c._docmanager=t,e.docRegistry.addWidgetExtension("Notebook",c);const l=new r.WidgetTracker({namespace:"panel-preview"});function p(t){const o=n.currentWidget;return!1!==t.activate&&o&&e.shell.activateById(o.id),o}function m(){const t=e.shell.currentWidget;return null!==t&&void 0!==t.context&&(t.context.path.endsWith(".yaml")||t.context.path.endsWith(".yml")||null!==n.currentWidget&&n.currentWidget===t)}function h(e){return`${a.PageConfig.getBaseUrl()}panel-preview/render/${e}`}i&&i.restore(l,{command:"docmanager:open",args:e=>({path:e.context.path,factory:u.name}),name:e=>e.context.path,when:e.serviceManager.ready});const u=new S(h,{name:"Panel-preview",fileTypes:["notebook"],modelName:"notebook"}),v=new S(h,{name:"Lumen-preview",fileTypes:["yaml","yml","text","py"],modelName:"text"});u.widgetCreated.connect(((e,t)=>{t.context.pathChanged.connect((()=>{l.save(t)})),l.add(t)})),v.widgetCreated.connect(((e,t)=>{l.add(t)}));const g=e=>{u.defaultRenderOnSave=e.get("renderOnSave").composite};d&&Promise.all([d.load(X.id),e.restored]).then((([e])=>{g(e),e.changed.connect(g)})).catch((e=>{console.error(e.message)})),e.docRegistry.addWidgetFactory(u),e.docRegistry.addWidgetFactory(v);const{commands:y,docRegistry:f}=e;if(y.addCommand(Y.panelRender,{label:"Preview Notebook with Panel",execute:async e=>{const t=p(e);let n;t&&(n=t.context,await n.save(),y.execute("docmanager:open",{path:n.path,factory:"Panel-preview",options:{mode:"split-right"}}))},isEnabled:m}),y.addCommand(Y.lumenRender,{label:"Render Yaml with Lumen",execute:async t=>{const n=e.shell.currentWidget;let o;n&&(o=n.context,await o.save(),y.execute("docmanager:open",{path:o.path,factory:"Lumen-preview",options:{mode:"split-right"}}))},isEnabled:m}),y.addCommand(Y.panelOpen,{label:"Open with Panel in New Browser Tab",execute:async e=>{const t=p(e);if(!t)return;await t.context.save();const n=h(t.context.path);window.open(n)},isEnabled:m}),o){const e="Notebook Operations";[Y.panelRender,Y.panelOpen].forEach((t=>{o.addItem({command:t,category:e})}))}s&&s.viewMenu.addGroup([{command:Y.panelRender},{command:Y.panelOpen}],1e3);const w=new $(y);f.addWidgetExtension("Notebook",w);const _=new G(y);return f.addWidgetExtension("Editor",_),l}},ee=X},110:(e,t,n)=>{n.d(t,{Z:()=>s});var o=n(81),i=n.n(o),r=n(645),a=n.n(r)()(i());a.push([e.id,'.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}',""]);const s=a},645:e=>{e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",o=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),o&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),o&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,o,i,r){"string"==typeof e&&(e=[[null,e,void 0]]);var a={};if(o)for(var s=0;s0?" ".concat(l[5]):""," {").concat(l[1],"}")),l[5]=r),n&&(l[2]?(l[1]="@media ".concat(l[2]," {").concat(l[1],"}"),l[2]=n):l[2]=n),i&&(l[4]?(l[1]="@supports (".concat(l[4],") {").concat(l[1],"}"),l[4]=i):l[4]="".concat(i)),t.push(l))}},t}},81:e=>{e.exports=function(e){return e[1]}},379:e=>{var t=[];function n(e){for(var n=-1,o=0;o{var t={};e.exports=function(e,n){var o=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(n)}},216:e=>{e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},565:(e,t,n)=>{e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},795:e=>{e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var o="";n.supports&&(o+="@supports (".concat(n.supports,") {")),n.media&&(o+="@media ".concat(n.media," {"));var i=void 0!==n.layer;i&&(o+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),o+=n.css,i&&(o+="}"),n.media&&(o+="}"),n.supports&&(o+="}");var r=n.sourceMap;r&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),t.styleTagTransform(o,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},589:e=>{e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}}}]);