jupyterlab-unianalytics-dashboard 4.0.21__py3-none-any.whl → 5.0.0__py3-none-any.whl
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.
- jupyterlab_unianalytics_dashboard/_version.py +1 -1
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/package.json +2 -2
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/schemas/jupyterlab_unianalytics_dashboard/package.json.orig +1 -1
- jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/686.bf9cd46d07e4efd4cb75.js +1 -0
- jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/remoteEntry.8aa4bf574e381fd9c607.js +1 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.dist-info → jupyterlab_unianalytics_dashboard-5.0.0.dist-info}/METADATA +1 -1
- jupyterlab_unianalytics_dashboard-5.0.0.dist-info/RECORD +37 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.dist-info → jupyterlab_unianalytics_dashboard-5.0.0.dist-info}/WHEEL +1 -1
- jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/995.2d1dc4fba5107831fa2e.js +0 -1
- jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/remoteEntry.3425971eb7c2e96ae65b.js +0 -1
- jupyterlab_unianalytics_dashboard-4.0.21.dist-info/RECORD +0 -37
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/etc/jupyter/jupyter_server_config.d/jupyterlab_unianalytics_dashboard.json +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/install.json +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/schemas/jupyterlab_unianalytics_dashboard/endpoint.json +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/schemas/jupyterlab_unianalytics_dashboard/plugin.json +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/10.1e5c908a94fc4b83c2e5.js +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/18.759fbf2374edc42b5c3e.js +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/18.759fbf2374edc42b5c3e.js.LICENSE.txt +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/308.d9da4ce35f354c6f12e1.js +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/39.5a3b28a79ba693a9b627.js +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/426.a7015f9dfda310972c1b.js +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/533.f7a454b11ba5cd79dc0c.js +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/546.61a6a427e418e90a1a97.js +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/563.b613f734176cb51510ef.js +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/638.d37271636c4d956096de.js +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/708.323c3614d31a5918cfaf.js +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/708.323c3614d31a5918cfaf.js.LICENSE.txt +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/738.f4338fb8d8276b96c3f3.js +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/744.329dc4d1ed2f5c918266.js +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/798.33a8f0893a66574e9259.js +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/817.6437962faf359015be36.js +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/981.ebb9e1d6122980b5ff0e.js +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/981.ebb9e1d6122980b5ff0e.js.LICENSE.txt +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/style.js +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.data → jupyterlab_unianalytics_dashboard-5.0.0.data}/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/third-party-licenses.json +0 -0
- {jupyterlab_unianalytics_dashboard-4.0.21.dist-info → jupyterlab_unianalytics_dashboard-5.0.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jupyterlab_unianalytics_dashboard",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "A JupyterLab dashboard extension to visualize data from students.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jupyter",
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
"outputDir": "jupyterlab_unianalytics_dashboard/labextension",
|
|
126
126
|
"schemaDir": "schema",
|
|
127
127
|
"_build": {
|
|
128
|
-
"load": "static/remoteEntry.
|
|
128
|
+
"load": "static/remoteEntry.8aa4bf574e381fd9c607.js",
|
|
129
129
|
"extension": "./extension",
|
|
130
130
|
"style": "./style"
|
|
131
131
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunkjupyterlab_unianalytics_dashboard=self.webpackChunkjupyterlab_unianalytics_dashboard||[]).push([[686],{4434:(e,t,o)=>{o.r(t),o.d(t,{ARE_DASHBOARD_PLUGINS_ACTIVATED:()=>no,AuthSignal:()=>Zt,BACKEND_API_URL:()=>ro,CURRENT_NOTEBOOK_ID:()=>to,WEBSOCKET_API_URL:()=>so,authSignal:()=>eo,default:()=>co,setCurrentNotebookId:()=>oo,setDashboardPluginsActivated:()=>ao});var n=o(9439),a=o(7940),l=o(3767),r=o(3759);o(4039);const s="jupyterlab_unianalytics_dashboard",i=`${s}:plugin`,c=`${s}/access_token`,d=`${s}/refresh_token`,u=`${s}/dashboard_username`,p="unianalytics-page-container";var m;!function(e){e.dashboardOpenDashboardPlayback=`${s}:dashboard-open-playback`,e.dashboardScrollToCell=`${s}:dashboard-scroll-to-cell`,e.uploadNotebook=`${s}:dashboard-upload-notebook`,e.copyDownloadLink=`${s}:dashboard-copy-download-link`,e.openLogin=`${s}:dashboard-open-login`,e.pushCellUpdate=`${s}:dashboard-push-cell-update`,e.pushNotebookUpdate=`${s}:dashboard-push-notebook-update`}(m||(m={}));const h='.jp-DirListing-item[data-file-type="notebook"]',g="unianalytics";var b,v;!function(e){e.notebookId=`${g}_notebook_id`,e.cellMapping=`${g}_cell_mapping`}(b||(b={}));class C{static async setJupyterVersion(e){C._jupyterVersion=e,await C._setEditorLanguageRegistry(),await C._asyncImports()}static async _setEditorLanguageRegistry(){if(4===C._jupyterVersion){const{StreamLanguage:e}=await o.e(373).then(o.t.bind(o,1373,23)),{EditorLanguageRegistry:t,parseMathIPython:n}=await Promise.resolve().then(o.t.bind(o,4081,23)),a=new t;t.getDefaultLanguages().forEach((e=>{a.addLanguage(e)})),a.addLanguage({name:"ipythongfm",mime:"text/x-ipythongfm",load:async()=>{const[t,l]=await Promise.all([Promise.all([o.e(638),o.e(211),o.e(373),o.e(376)]).then(o.bind(o,8638)),o.e(10).then(o.bind(o,8010))]);return t.markdown({base:t.markdownLanguage,codeLanguages:e=>a.findBest(e),extensions:[n(e.define(l.stexMath).parser)]})}}),C._editorDefaultLanguages=a}}static async _asyncImports(){if(4===C._jupyterVersion){const{EditorView:e}=await o.e(211).then(o.t.bind(o,6211,23));this._EditorView=e;const{jupyterTheme:t}=await Promise.resolve().then(o.t.bind(o,4081,23));this._jupyterTheme=t}}static checkJupyterVersionSet(){if(null===C._jupyterVersion)throw new Error("JupyterLab version is not set in CompatibilityManager before trying to access it.")}static observeEditorVisibility(e){return 3===C._jupyterVersion?new IntersectionObserver((t=>{t[0].isIntersecting&&e.refresh()}),{root:null,threshold:.5}):null}}v=C,C._jupyterVersion=null,C._editorDefaultLanguages=void 0,C._EditorView=void 0,C._jupyterTheme=void 0,C.getMetadataComp=(e,t)=>{var o;return C.checkJupyterVersionSet(),4===C._jupyterVersion?null==e?void 0:e.getMetadata(t):null===(o=null==e?void 0:e.metadata)||void 0===o?void 0:o.get(t)},C.setMetadataComp=(e,t,o)=>{var n;C.checkJupyterVersionSet(),4===C._jupyterVersion?null==e||e.setMetadata(t,o):null===(n=null==e?void 0:e.metadata)||void 0===n||n.set(t,o)},C.deleteMetadataComp=(e,t)=>{var o;return C.checkJupyterVersionSet(),4===C._jupyterVersion?null==e?void 0:e.deleteMetadata(t):null===(o=null==e?void 0:e.metadata)||void 0===o?void 0:o.delete(t)},C.getFileComp=e=>{var t;C.checkJupyterVersionSet();const o=null===(t=e.tracker.currentWidget)||void 0===t?void 0:t.selectedItems().next();return 4===C._jupyterVersion?null==o?void 0:o.value:o},C.getCellsArrComp=e=>(C.checkJupyterVersionSet(),e?Array.from({length:e.length},((t,o)=>e.get(o))):null),C.getCodeMirrorOptionsComp=()=>(C.checkJupyterVersionSet(),4===C._jupyterVersion?{extensions:[v._jupyterTheme,v._EditorView.lineWrapping,v._EditorView.editable.of(!1)],languages:C._editorDefaultLanguages}:{config:{readOnly:!0}}),C.getNextWidgetValueComp=e=>{var t;return C.checkJupyterVersionSet(),4===C._jupyterVersion?null===(t=e.next())||void 0===t?void 0:t.value:e.next()};var f=o(6029),w=o.n(f),k=o(7631),y=o(3495);const _=e=>{const[t,o]=(0,f.useState)(!1);return w().createElement("div",null,w().createElement("p",null,"Successfully uploaded, can be downloaded accessing:"),w().createElement("div",{className:"unianalytics-link-container"},w().createElement("div",{className:"unianalytics-link"},e.url),w().createElement("div",{className:"unianalytics-link-button-container"},w().createElement("button",{className:"unianalytics-link-button",onClick:()=>{navigator.clipboard.writeText(e.url).then((()=>{o(!0)})).catch((e=>{console.error(`${s}: Error copying to clipboard: `,e)}))}},t?w().createElement(k.checkIcon.react,null):w().createElement(k.copyIcon.react,null)))))};var x=o(8412),E=o(3966),S=o(7286),N=o(4901),I=o(3748);const D={displayDashboard:!0,hasNotebookId:!1},T=(0,I.createSlice)({name:"tocdashboard",initialState:D,reducers:{setDisplayHideDashboard:(e,t)=>{e.displayDashboard=t.payload},setHasNotebookId:(e,t)=>{e.hasNotebookId=t.payload}}}),{setDisplayHideDashboard:M,setHasNotebookId:R}=T.actions,O=T.reducer,A={navigationState:[{pageName:"Notebook"}]},j=(0,I.createSlice)({name:"sidedashboard",initialState:A,reducers:{navigateToNotebook:(e,t)=>{e.navigationState=[{pageName:"Notebook"}]},navigateToCell:(e,t)=>{e.navigationState=[{pageName:"Notebook"},{pageName:"Cell",content:{cellId:t.payload.cellId}}]},navigateToHistory:(e,t)=>{e.navigationState=e.navigationState.slice(0,t.payload+1)},resetNavigationState:(e,t)=>{e.navigationState=A.navigationState}}}),{navigateToNotebook:$,navigateToCell:L,navigateToHistory:B,resetNavigationState:P}=j.actions,U=j.reducer,z=(0,I.createSlice)({name:"commondashboard",initialState:{notebookCells:null,refreshBoolean:!1,dashboardQueryArgs:{displayRealTime:{},t1ISOString:{},t2ISOString:{},selectedGroups:{},sortBy:{}}},reducers:{setDashboardQueryArgsT1:(e,t)=>{const{notebookId:o,t1ISOString:n}=t.payload;e.dashboardQueryArgs.t1ISOString[o]=n},setDashboardQueryArgsT2:(e,t)=>{const{notebookId:o,t2ISOString:n}=t.payload;e.dashboardQueryArgs.t2ISOString[o]=n},setDashboardQueryArgsSelectedGroups:(e,t)=>{const{notebookId:o,groups:n}=t.payload,a=e.dashboardQueryArgs.selectedGroups[o]||[];if(!Jt(a,n))return{...e,dashboardQueryArgs:{...e.dashboardQueryArgs,selectedGroups:{...e.dashboardQueryArgs.selectedGroups,[o]:n}}}},setDashboardQueryArgsDisplayRealTime:(e,t)=>{const{notebookId:o,displayRealTime:n}=t.payload;e.dashboardQueryArgs.displayRealTime[o]=n},setSortBy:(e,t)=>{const{notebookId:o,sortCriterion:n}=t.payload;e.dashboardQueryArgs.sortBy[o]=n},setNotebookCells:(e,t)=>{e.notebookCells=t.payload},refreshDashboards:e=>{e.refreshBoolean=!e.refreshBoolean}}}),{setDashboardQueryArgsT1:F,setDashboardQueryArgsT2:H,setDashboardQueryArgsSelectedGroups:W,setDashboardQueryArgsDisplayRealTime:V,setSortBy:G,setNotebookCells:J,refreshDashboards:Q}=z.actions,K=z.reducer,q=(0,I.configureStore)({reducer:{tocdashboard:O,sidedashboard:U,commondashboard:K}});class X{}var Y;!function(e){e.LOADING="Loading",e.NOTFOUND="Notebook not Registered",e.USERNOTAUTHORIZED="No User Permission for this Notebook",e.EXPIREDTOKEN="Expired Login Token",e.INVALIDCREDENTIALS="Invalid Credentials",e.ERROR="Fetching Error",e.SUCCESS="Success"}(Y||(Y={}));var Z=o(2957);const ee=q.dispatch;class te{constructor(){this._socket=null,this._lastRefreshTime=0,this._refreshDebounceMs=3e3,this._refreshTimeout=null}_createSocket(e,t){this._socket=(0,Z.io)(`${so}?conType=TEACHER&nbId=${e}&userId=${encodeURIComponent(t)}`,{transports:["websocket"]}),this._socket.on("connect",(()=>{console.log(`${s}: SocketIO connection opened for:`,{notebookId:e,userId:t})})),this._socket.on("disconnect",(o=>{console.log(`${s}: SocketIO connection closed (reason: ${o}) for:`,{notebookId:e,userId:t})})),this._socket.on("refreshDashboard",(()=>{const e=Date.now();if(this._refreshTimeout&&clearTimeout(this._refreshTimeout),e-this._lastRefreshTime>=this._refreshDebounceMs)console.log(`${s}: Received refresh dashboard request - executing immediately`),this._lastRefreshTime=e,ee(Q());else{const t=this._refreshDebounceMs-(e-this._lastRefreshTime);console.log(`${s}: Received refresh dashboard request - debouncing for ${t}ms`),this._refreshTimeout=setTimeout((()=>{console.log(`${s}: Executing debounced refresh`),this._lastRefreshTime=Date.now(),ee(Q()),this._refreshTimeout=null}),t)}})),this._socket.on("chat",(e=>{"string"==typeof e?console.log(`${s}: message received : ${e}`):console.log(`${s}: message received from ${e.sender}: ${e.message}`)})),this._socket.on("connect_error",(e=>{console.error(`${s}: SocketIO error; `,e)}))}establishSocketConnection(e){this.closeSocketConnection();const t=localStorage.getItem(u);e&&t&&this._createSocket(e,t)}closeSocketConnection(){this._refreshTimeout&&(clearTimeout(this._refreshTimeout),this._refreshTimeout=null),this._socket&&this._socket.close(),this._socket=null}sendMessageToUser(e,t){this._socket&&this._socket.emit("send_message",{userId:e,message:t})}}const oe=q.dispatch;class ne{constructor(){this._panelUpdatedSignal=new N.Signal(this),this._panelSwitchedSignal=new N.Signal(this),this._ongoingContextId="",this._ongoingCheckId="",this._panel=null,this._monitor=null,this._validityChecks={tag:null,registered:Y.LOADING},this._websocketManager=new te,eo.registrationStateChanged.connect(this._handleRegistrationStateChange,this)}_handleRegistrationStateChange(e,t){this._validityChecks.registered=t,this._panelUpdatedSignal.emit(void 0)}get validityChecks(){return this._validityChecks}get notebookCells(){return this._notebookCells}get websocketManager(){return this._websocketManager}get panel(){return this._panel}set panel(e){if(this._panel===e)return;if(this._panel&&this._panel.disposed.disconnect(this._onPanelDisposed,this),oo(null),this._validityChecks={tag:null,registered:Y.LOADING},this._websocketManager.closeSocketConnection(),this._panel=e,this._onPanelSwitched(),this._panel&&this._panel.disposed.connect(this._onPanelDisposed,this),this._monitor&&(this._monitor.dispose(),this._monitor=null),!this._panel)return void this._onPanelUpdated();const t=crypto.randomUUID();this._ongoingContextId=t,this._panel.sessionContext.ready.then((()=>{if(this._ongoingContextId===t&&this._panel&&!this._panel.isDisposed){if(this._monitor=new S.ActivityMonitor({signal:this._panel.context.model.contentChanged,timeout:1e3}),this._monitor.activityStopped.connect(this._onPanelUpdated,this),Gt(this._panel)){const e=C.getMetadataComp(this._panel.model,b.notebookId);oo(e),this._validityChecks={tag:e,registered:Y.LOADING},this._performRegistrationCheck()}this._onPanelUpdated()}}))}_performRegistrationCheck(){const e=crypto.randomUUID();this._ongoingCheckId=e;let t=Y.ERROR;Ft(`${ro}/dashboard/${this._validityChecks.tag}/check`).then((e=>e.json())).then((e=>{(null==e?void 0:e.status)?"expired_token"===e.status?t=Y.EXPIREDTOKEN:"not_found"===e.status?t=Y.NOTFOUND:"no_user_permission"===e.status?t=Y.USERNOTAUTHORIZED:"success"===e.status&&(t=Y.SUCCESS):t=Y.INVALIDCREDENTIALS})).catch((e=>{console.log(`${s}: Notebook check fetching error (check your connection).`+e)})).finally((()=>{this._ongoingCheckId===e&&this._panel&&!this._panel.isDisposed&&(this._validityChecks.registered=t,this._validityChecks.registered===Y.SUCCESS&&(oe(P()),this._websocketManager.establishSocketConnection(this._validityChecks.tag)),this._panelUpdatedSignal.emit(void 0))}))}_onPanelDisposed(e){this.panel=null}get panelSwitched(){return this._panelSwitchedSignal}_onPanelSwitched(){this._panelSwitchedSignal.emit(void 0)}get panelUpdated(){return this._panelUpdatedSignal}_onPanelUpdated(){this._updateCellList(),this._panelUpdatedSignal.emit(void 0)}_updateCellList(){var e,t;const o=C.getCellsArrComp(null===(t=null===(e=this.panel)||void 0===e?void 0:e.model)||void 0===t?void 0:t.cells);if(o){const e=o.map((e=>e.id));if(!Jt(e,this._notebookCells)){this._notebookCells=e;const t=o.map((e=>({id:e.id,cellType:e.type})));return oe(J(t)),!0}}else this._notebookCells=null;return!1}}var ae=o(7760),le=o(8559);const re=()=>w().createElement("div",{style:{width:"100%",textAlign:"center",margin:"50px 0"}},w().createElement(le.Spinner,{style:{width:"50px",height:"50px",fontSize:"x-large"},animation:"border",role:"status",variant:"primary"})),se=({title:e,placeholderText:t="No data for the opened notebook"})=>w().createElement("div",{className:"dashboard-TableOfContents"},w().createElement("div",{className:"dashboard-stack-panel-header"},"Side Panel Dashboard"),w().createElement("div",{className:"dashboard-TableOfContents-placeholder"},w().createElement("div",{className:"dashboard-TableOfContents-placeholderContent"},w().createElement("h3",null,e),w().createElement("p",null,t))));class ie extends y.ReactWidget{constructor(e){super(),this.addClass("dashboard-panel"),this._panelManager=e,e.panelUpdated.connect((()=>this.update()),this)}onAfterShow(e){this.update()}onUpdateRequest(e){super.onUpdateRequest(e)}render(){if(!this._panelManager.panel)return f.createElement(se,{title:"No Notebook",placeholderText:"Open a notebook to start viewing its content."});if(!this._panelManager.panel.context.isReady)return f.createElement(re,null);if(!this._panelManager.validityChecks.tag)return f.createElement(se,{title:"Notebook not Tagged for Tracking"});switch(this._panelManager.validityChecks.registered){case Y.LOADING:return f.createElement(re,null);case Y.SUCCESS:return f.createElement(ae.Provider,{store:q},this.computeComponentToRender());default:return f.createElement(se,{title:this._panelManager.validityChecks.registered})}}}const ce=ie,de=(e,t)=>{const o=3*e/t+.1;return Math.min(1,o)},ue=({data:e,cellId:t,commands:o})=>w().createElement(w().Fragment,null,e&&e[0]&&e[1]?w().createElement("div",{onClick:e=>{e.preventDefault(),o.execute(m.dashboardOpenDashboardPlayback,{from:"Toc",cell_id:t})},className:"dashboard-toc-react-component",style:{backgroundColor:`rgba(25, 118, 210, ${de(e[0],e[1])})`}},w().createElement("span",{className:"dashboard-toc-react-text"},e[0]+"/"+e[1])):w().createElement("div",{className:"dashboard-toc-react-component"}));class pe{static setPermission(e){pe._isInteractionRecordingEnabled=e}}pe._isInteractionRecordingEnabled=!1,pe.sendInteraction=e=>{pe._isInteractionRecordingEnabled&&Ft(`${ro}/dashboard_interaction/add`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...e,time:(new Date).toISOString(),notebook_id:to})})};class me extends w().Component{render(){const{panel:e,heading:t,headings:o,addReactComponent:n,isFirstCellOccurrence:a,tocDashboardData:l,commands:r}=this.props,s=this.props.itemRenderer(e,t,o);return s?w().createElement("li",{className:"dashboard-tocItem",onClick:e=>{pe.sendInteraction({click_type:"ON",signal_origin:"TOC_HEADING_CLICKED"}),e.preventDefault(),e.stopPropagation(),t.onClick()}},s,n&&w().createElement(ue,{cellId:t.cellRef.model.id,data:a?l:null,commands:r})):null}}const he=e=>{const[t,o]=(0,f.useState)(null),n=(0,ae.useSelector)((e=>e.tocdashboard.displayDashboard)),a=(0,ae.useSelector)((e=>e.commondashboard.refreshBoolean)),l=(0,ae.useSelector)((e=>e.commondashboard.dashboardQueryArgs));(0,f.useEffect)((()=>{r()}),[e.notebookCells,e.notebookPanel,a,l]),(0,f.useEffect)((()=>()=>{o(null)}),[e.notebookCells,e.notebookPanel]);const r=async()=>{const t=C.getMetadataComp(e.notebookPanel.model,b.notebookId);if(t&&e.notebookCells){try{const e=await Ft(`${ro}/dashboard/${t}/toc?${zt(l,t)}`);if(e.ok){const t=await e.json();return void o(t.data)}console.log(`${s}: Error:`,e.status)}catch(e){console.log(`${s}: Toc Fetch Error:`,e)}o(null)}},i=(t=>{const o=e.headings.map((e=>e.cellRef.model.id)),n=[...new Set(o)],a={},l=e.notebookCells;if(l&&t){const e=n.map((e=>l.indexOf(e)));e[0]=0,e.push(l.length);let o=0;for(let r=0;r<n.length;r++){const s=e[r],i=e[r+1];let c=0;if(-1===s)c=0;else for(let e=s;e<i;e++)c+=t.location_count[l[e]]||0;a[n[r]]=c,o+=c}a.total_count=o}return a})(t),c=new Set;return w().createElement("ul",{className:"dashboard-TableOfContents-content"},e.headings.map(((t,o)=>{const a=t.cellRef.model.id,l=!c.has(a);return l&&c.add(a),w().createElement(me,{panel:e.notebookPanel,heading:t,headings:e.headings,itemRenderer:e.itemRenderer,addReactComponent:n,isFirstCellOccurrence:l,tocDashboardData:[i[a],i.total_count],commands:e.commands,key:`${t.text}-${t.level}-${o++}`})})))};class ge extends X{constructor(e,t){super(),this._preRenderedToolbar=null,this._showCode=!1,this._showMarkdown=!1,this._numbering=t.numbering,this._numberingH1=t.numberingH1,this._syncCollapseState=t.syncCollapseState,this._widget=e,this.sanitizer=t.sanitizer,this._collapseChanged=new N.Signal(this)}set numberingH1(e){this._numberingH1!==e&&(this._numberingH1=e,this._widget.update())}get numberingH1(){return this._numberingH1}set syncCollapseState(e){this._syncCollapseState!==e&&(this._syncCollapseState=e,this._widget.update())}get syncCollapseState(){return this._syncCollapseState}setNotebookMetadata(e,t){null!==t&&t.model&&C.setMetadataComp(t.model,e[0],e[1])}setNumbering(e,t){this._numbering=e,this._widget.update(),this.setNotebookMetadata(["dashboard-toc-autonumbering",this._numbering],t)}get numbering(){return this._numbering}setShowCode(e,t){this._showCode=e,this.setNotebookMetadata(["dashboard-toc-showcode",this._showCode],t),this._widget.update()}get showCode(){return this._showCode}setShowMarkdown(e,t){this._showMarkdown=e,this.setNotebookMetadata(["dashboard-toc-showmarkdowntxt",this._showMarkdown],t),this._widget.update()}get showMarkdown(){return this._showMarkdown}get collapseChanged(){return this._collapseChanged}set preRenderedToolbar(e){this._preRenderedToolbar=e}get preRenderedToolbar(){return this._preRenderedToolbar}updateWidget(){this._widget.update()}updateAndCollapse(e){this._collapseChanged.emit(e),this._widget.update()}initializeOptions(e,t,o,n,a){this._numbering=e,this._numberingH1=t,this._syncCollapseState=o,this._showCode=n,this._showMarkdown=a,this._widget.update()}}function be(e){if(e.length>0){let t=e.length-1;for(;t>=0;){if("header"===e[t].type)return e[t].level;t-=1}}return 0}const ve="jp-MarkdownHeadingCollapsed",Ce="dashboard-toc-hr-collapsed";function fe(e,t,o,n,a,l){const r=[];if(e){const s=e.split("\n"),i=Math.min(s.length,3);let c="",d=0;for(;d<i-1;d++)c+=s[d]+"\n";c+=s[d],r.push({text:c,level:n+1,onClick:t(0),type:"code",prompt:o,cellRef:a,hasChild:!1,index:l})}return r[0]}function we(e,t,o,n){if(t&&t.text){if(o&&"header"===o.type)for(let t=e.length-1;t>=0;t--)e[t]===o&&(e[t].hasChild=!0);n<0&&e.push(t),o=t}return[e,o]}const ke={allowedTags:["p","blockquote","b","i","strong","em","strike","code","br","div","span","pre","del"],allowedAttributes:{code:["class"],span:["class"],div:["class"],p:["class"],pre:["class"]}};function ye(e,t,o,n,a,l=!1,r=!0,s,i){const c=e.querySelectorAll("h1, h2, h3, h4, h5, h6, p");let d=a;const u=[];for(const e of c){if("p"===e.nodeName.toLowerCase()){if(e.innerHTML){const n=o.sanitize(e.innerHTML,ke);u.push({level:d+1,html:n.replace("¶",""),text:e.textContent?e.textContent:"",onClick:t(e),type:"markdown",cellRef:s,hasChild:!1,index:i})}continue}e.getElementsByClassName("numbering-entry").length>0&&e.removeChild(e.getElementsByClassName("numbering-entry")[0]);let a=o.sanitize(e.innerHTML,ke);a=a.replace("¶","");let c=parseInt(e.tagName[1],10);r||(c-=1),d=c;const p=Ee(n,c);if(l){const t=document.createElement("span");t.classList.add("numbering-entry"),t.textContent=null!=p?p:"",e.insertBefore(t,e.firstChild)}u.push({level:c,text:e.textContent?e.textContent:"",numbering:p,html:a,onClick:t(e),type:"header",cellRef:s,hasChild:!1,index:i})}return u}function _e(e,t,o,n,a,l){return e&&"markdown"===e.type&&l?[t,o]=we(t,e,o,n):e&&"header"===e.type&&([t,o,n]=function(e,t,o,n,a){const l=e.length;if(o&&"header"===o.type&&o.level<t.level)for(let t=l-1;t>=0;t--)e[t]===o&&(e[t].hasChild=!0);return(n>=t.level||n<0)&&(e.push(t),n=a?t.level:-1),[e,o=t,n]}(t,e,o,n,a)),[t,o,n]}const xe=6;function Ee(e,t){if(null===e)return;let o="";if(e=function(e,t){for(let o=t+1;o<=xe;o++)void 0!==e[o]&&(e[o]=void 0);return void 0===e[t]?e[t]=1:e[t]+=1,e}(e,t),t>=1){for(let n=1;n<=t;n++)o+=(void 0===e[n]?"0":e[n])+".";o+=" "}return o}function Se(e){const t=e.split("\n");let o=t[0].match(/^([#]{1,6}) (.*)/);return o?{text:o[2].replace(/\[(.+)\]\(.+\)/g,"$1"),level:o[1].length,type:"markdown"}:t.length>1&&(o=t[1].match(/^ {0,3}([=]{2,}|[-]{2,})\s*$/),o)?{text:t[0].replace(/\[(.+)\]\(.+\)/g,"$1"),level:"="===o[1][0]?1:2,type:"markdown-alt"}:(o=t[0].match(/<h([1-6]).*>(.*)<\/h\1>/i),o?{text:o[2],level:parseInt(o[1],10),type:"html"}:null)}function Ne(e,t,o,n,a,l){const r=t(0),s=[];let i=n;for(const t of e.split("\n"))if(t){const e=Se(t);e?(s.push({text:e.text,level:e.level,numbering:Ee(o,e.level),onClick:r,type:"header",cellRef:a,hasChild:!1,index:l}),i=e.level):s.push({text:t,level:i+1,onClick:r,type:"markdown",cellRef:a,hasChild:!1,index:l})}return s}var Ie=o(4081),De=o(7739);const Te=({cell_input:e,language_mimetype:t,className:o})=>{const n=(0,f.useRef)(null);return(0,f.useEffect)((()=>{const o=n.current;if(o){o.innerHTML="";const n=new De.CodeEditor.Model;n.mimeType=t,n.sharedModel.setSource(e);const a=new Ie.CodeMirrorEditor({host:o,model:n,...C.getCodeMirrorOptionsComp()}),l=C.observeEditorVisibility(a);return l&&l.observe(o),()=>{l&&l.disconnect()}}}),[e,t]),w().createElement("div",{ref:n,className:o})};function Me(e,t,o){if(t.index>-1||(null==o?void 0:o.length)){const n=e.content.activeCellIndex,a=t.index;if(n&&a<n){const e=o.indexOf(t)+1;if(e>=o.length)return!0;if((null==o?void 0:o[e].index)>n)return!0}}return!1}const Re=new k.LabIcon({name:`${s}:visu-icon`,svgstr:'<svg xmlns="http://www.w3.org/2000/svg" width="801px" height="845px" viewBox="0 0 801 845">\n<path xmlns="http://www.w3.org/2000/svg" fill="#616161" class="jp-custom-icon jp-icon3 jp-icon-selectable" \n\td="\nM387.000000,138.000000 \n\tC498.142059,138.000015 608.784363,138.106552 719.425842,137.852219 \n\tC731.901794,137.823547 741.405090,147.216324 741.147522,159.494492 \n\tC740.644409,183.478592 741.009399,207.480728 740.995667,231.475388 \n\tC740.988647,243.724152 732.716797,251.995575 720.458984,251.995956 \n\tC547.497437,252.001495 374.535889,252.001434 201.574356,251.996124 \n\tC189.289490,251.995743 181.011719,243.747238 181.004547,231.508698 \n\tC180.990280,207.180771 180.990768,182.852859 181.004318,158.524933 \n\tC181.011139,146.276291 189.283295,138.005981 201.540726,138.004242 \n\tC263.193817,137.995529 324.846924,138.000107 387.000000,138.000000 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" fill="#616161" class="jp-custom-icon jp-icon3 jp-icon-selectable" \n\td="\nM585.000000,602.000000 \n\tC584.999939,619.325134 584.662598,636.159729 585.135315,652.971619 \n\tC585.389893,662.026428 574.929565,672.140991 566.068176,672.127258 \n\tC443.961212,671.938232 321.853912,672.004211 199.746674,671.990967 \n\tC189.901947,671.989868 181.021255,663.118469 181.010071,653.290161 \n\tC180.981430,628.135742 181.228653,602.978149 180.877518,577.828613 \n\tC180.753326,568.934387 190.961166,558.888672 199.629715,558.899292 \n\tC321.570190,559.048645 443.510895,558.993164 565.451538,559.013611 \n\tC576.357910,559.015442 584.922241,567.620361 584.989990,578.511169 \n\tC585.037720,586.173828 584.999756,593.837036 585.000000,602.000000 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" fill="#616161" class="jp-custom-icon jp-icon3 jp-icon-selectable" \n\td="\nM88.108398,89.952209 \n\tC98.405724,110.302505 108.714127,130.647202 118.993515,151.006561 \n\tC122.027649,157.015930 124.979767,163.066742 128.341644,169.849442 \n\tC118.648453,169.849442 109.747803,169.849442 100.429153,169.849442 \n\tC100.429153,362.281067 100.429153,554.170410 100.429153,746.530701 \n\tC277.650726,746.530701 454.991821,746.530701 632.848511,746.530701 \n\tC632.848511,737.834412 632.848511,729.237061 632.848511,719.024597 \n\tC661.517517,733.293213 689.138123,747.040100 718.055725,761.432434 \n\tC689.538452,775.702026 661.900940,789.531433 633.221680,803.882141 \n\tC633.221680,794.086548 633.221680,785.407837 633.221680,775.998657 \n\tC630.080139,775.998657 627.647522,775.998657 625.214905,775.998657 \n\tC446.394989,775.998535 267.575104,775.987793 88.755196,776.036011 \n\tC81.436424,776.037964 75.688042,773.737122 72.946358,766.585999 \n\tC72.095207,764.365967 72.036018,761.746521 72.035538,759.309814 \n\tC71.996758,565.657715 71.999886,372.005585 71.999870,178.353455 \n\tC71.999870,175.868805 71.999863,173.384155 71.999863,169.951614 \n\tC63.762573,169.951614 55.847210,169.951614 47.537605,169.537201 \n\tC47.694538,167.563828 48.088642,165.926636 48.820351,164.457596 \n\tC60.280804,141.448654 71.741646,118.439545 83.350739,95.505569 \n\tC84.420113,93.392990 86.498528,91.791183 88.108398,89.952209 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" fill="#616161" class="jp-custom-icon jp-icon3 jp-icon-selectable" \n\td="\nM401.000000,462.000000 \n\tC334.043701,462.000031 267.586212,461.806152 201.132416,462.212341 \n\tC191.340515,462.272186 180.483932,451.985443 180.776566,441.675262 \n\tC181.470917,417.211090 181.309845,392.707855 180.840012,368.233002 \n\tC180.664536,359.091675 191.110733,348.815643 200.221436,348.846802 \n\tC278.335815,349.114105 356.451508,348.995880 434.566803,349.004578 \n\tC446.758179,349.005951 454.990509,357.324249 454.996460,369.619904 \n\tC455.008209,393.937256 454.656525,418.261902 455.175049,442.568207 \n\tC455.372375,451.815918 444.949646,462.702484 435.468567,462.153870 \n\tC424.180542,461.500610 412.825836,462.000000 401.000000,462.000000 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" fill="#616161" class="jp-custom-icon jp-icon3 jp-icon-selectable" \n\td="\nM88.048347,89.607422 \n\tC86.498528,91.791183 84.420113,93.392990 83.350739,95.505569 \n\tC71.741646,118.439545 60.280804,141.448654 48.820351,164.457596 \n\tC48.088642,165.926636 47.694538,167.563828 47.072289,169.478149 \n\tC46.205418,169.833496 45.409630,169.833496 43.604004,169.833496 \n\tC57.749477,141.531204 71.589005,113.841034 85.790382,85.426895 \n\tC86.780373,87.154594 87.384331,88.208618 88.048347,89.607422 \nz"/>\n</svg>'}),Oe=new k.LabIcon({name:`${s}:analytics-replay-icon`,svgstr:'<svg xmlns="http://www.w3.org/2000/svg" width="801px" height="845px" viewBox="0 0 801 845">\n<path xmlns="http://www.w3.org/2000/svg" class="jp-custom-icon jp-icon3 jp-icon-selectable" fill="#616161" \n\td="\nM465.000000,137.000000 \n\tC550.147888,137.000031 634.796204,137.135956 719.443115,136.850784 \n\tC731.874146,136.808899 741.408020,146.187546 741.148132,158.511917 \n\tC740.642395,182.495926 741.009705,206.498123 740.995605,230.492798 \n\tC740.988403,242.737381 732.714661,250.995651 720.441528,250.996048 \n\tC547.479980,251.001465 374.518402,251.001480 201.556839,250.996048 \n\tC189.284561,250.995667 181.011414,242.736694 181.004410,230.491180 \n\tC180.990524,206.163254 180.990494,181.835327 181.004410,157.507401 \n\tC181.011429,145.262772 189.285263,137.005096 201.558258,137.004089 \n\tC289.205505,136.996857 376.852753,137.000092 465.000000,137.000000 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" class="jp-custom-icon jp-icon3 jp-icon-selectable" fill="#616161" \n\td="\nM635.148926,720.089355 \n\tC662.544739,733.712830 689.585266,747.259888 717.960327,761.475464 \n\tC689.524719,775.703430 661.804504,789.573425 633.158691,803.906555 \n\tC633.158691,794.057861 633.158691,785.472473 633.158691,775.998657 \n\tC630.247986,775.998657 627.834717,775.998657 625.421509,775.998657 \n\tC446.590027,775.998535 267.758545,775.986877 88.927094,776.039978 \n\tC81.632454,776.042114 75.823845,773.875000 73.007057,766.744446 \n\tC72.134315,764.535095 72.038582,761.913086 72.038055,759.479919 \n\tC71.996544,565.648621 71.999878,371.817291 71.999847,177.985962 \n\tC71.999840,175.530502 71.999847,173.075027 71.999847,170.132675 \n\tC62.473114,170.132675 53.538857,170.132675 43.464531,170.132675 \n\tC57.739803,141.563171 71.583488,113.857414 85.991348,85.022568 \n\tC100.325996,113.683899 114.169044,141.362305 128.404572,169.825470 \n\tC118.663963,169.825470 109.765915,169.825470 100.439240,169.825470 \n\tC100.439240,362.269653 100.439240,554.167786 100.439240,746.533813 \n\tC277.665100,746.533813 455.014313,746.533813 633.001404,746.533813 \n\tC633.001404,738.783020 632.924316,731.166138 633.081543,723.554016 \n\tC633.106140,722.362305 634.196167,721.192627 635.148926,720.089355 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" class="jp-custom-icon jp-icon3 jp-icon-selectable" fill="#616161" \n\td="\nM463.795166,663.684082 \n\tC458.944733,669.057251 453.354919,671.110291 446.353668,671.097351 \n\tC364.544098,670.945618 282.733490,670.850952 200.925110,671.198853 \n\tC191.268799,671.239868 180.533325,660.920715 180.790894,650.957153 \n\tC181.427948,626.314026 181.262314,601.639160 180.862076,576.986084 \n\tC180.716492,568.018616 191.031570,557.844238 199.978745,557.868408 \n\tC282.621094,558.091919 365.264313,557.994446 447.907257,558.007080 \n\tC459.506805,558.008850 467.978638,566.433594 467.991608,577.972778 \n\tC468.018402,601.799255 467.876343,625.626953 468.096619,649.451355 \n\tC468.145020,654.685852 466.992889,659.222717 463.795166,663.684082 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" class="jp-custom-icon jp-icon3 jp-icon-selectable" fill="#616161" \n\td="\nM557.000000,367.000000 \n\tC556.999878,427.464691 556.982544,487.429382 557.045776,547.393982 \n\tC557.049255,550.719543 557.078552,554.505432 553.650879,555.378540 \n\tC550.837891,556.095093 546.851746,555.555786 544.433716,553.972473 \n\tC506.113861,528.881958 467.962555,503.533997 429.774536,478.242218 \n\tC415.618622,468.866821 401.455353,459.502563 387.319794,450.096619 \n\tC381.033081,445.913391 380.988831,440.087341 387.222076,435.936890 \n\tC426.457855,409.811432 465.689392,383.679504 504.966309,357.616028 \n\tC518.141479,348.873199 531.337463,340.149567 544.790222,331.848694 \n\tC547.199219,330.362274 551.254211,330.038330 553.899048,330.988129 \n\tC555.559692,331.584442 556.774353,335.530975 556.863098,338.021729 \n\tC557.200989,347.504089 556.999756,357.005615 557.000000,367.000000 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" class="jp-custom-icon jp-icon3 jp-icon-selectable" fill="#616161" \n\td="\nM662.999878,373.002136 \n\tC684.378784,358.950073 705.376892,344.957733 726.473572,331.115723 \n\tC731.136841,328.056000 738.202637,330.252441 738.172729,337.496490 \n\tC737.882996,407.806915 738.031677,478.119171 737.858948,548.430359 \n\tC737.853027,550.836487 736.303223,554.662598 734.552917,555.299866 \n\tC732.057861,556.208313 728.103699,555.703186 725.818054,554.206116 \n\tC687.347046,529.008789 649.040222,503.560883 610.693237,478.174072 \n\tC596.525146,468.794342 582.332336,459.451782 568.181335,450.046326 \n\tC561.987366,445.929535 562.066284,440.056030 568.361389,435.876099 \n\tC598.986938,415.540466 629.630798,395.232300 660.262817,374.906281 \n\tC661.091248,374.356567 661.858765,373.714844 662.999878,373.002136 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" class="jp-custom-icon jp-icon3 jp-icon-selectable" fill="#616161" \n\td="\nM345.865936,362.817200 \n\tC345.963379,389.902039 346.020630,416.563477 345.975037,443.224792 \n\tC345.960510,451.719543 336.809052,460.960968 328.346283,460.971985 \n\tC285.187714,461.028076 242.029007,461.022461 198.870422,460.978516 \n\tC190.134705,460.969635 181.033173,451.740753 181.017441,442.941589 \n\tC180.971573,417.279785 180.967712,391.617798 181.019791,365.955994 \n\tC181.037552,357.196228 190.207504,348.027222 198.972824,348.019165 \n\tC241.964783,347.979645 284.956940,347.947144 327.948639,348.056610 \n\tC334.781342,348.074005 339.684326,351.915222 343.185669,357.593597 \n\tC344.139221,359.140137 344.923798,360.790863 345.865936,362.817200 \nz"/>\n</svg>'}),Ae=new k.LabIcon({name:`${s}:analytics-login-icon`,svgstr:'<svg xmlns="http://www.w3.org/2000/svg" width="801px" height="845px" viewBox="0 0 801 845">\n<path xmlns="http://www.w3.org/2000/svg" fill="#616161" class="jp-custom-icon jp-icon3 jp-icon-selectable" \n\td="\nM738.000000,599.000000 \n\tC737.999878,619.328857 738.009277,639.157654 737.994812,658.986511 \n\tC737.989014,666.934814 733.986572,670.993347 726.122437,670.994324 \n\tC653.972168,671.003296 581.821899,671.004211 509.671600,670.992310 \n\tC502.160278,670.991089 498.008820,666.818481 498.007507,659.276550 \n\tC497.995880,592.625000 497.998016,525.973511 498.003967,459.321991 \n\tC498.004730,450.822723 501.906342,447.017944 510.571411,447.000946 \n\tC513.062195,446.996063 515.552979,447.000214 518.680237,447.000214 \n\tC518.796387,444.999603 518.982727,443.253784 518.985718,441.507599 \n\tC519.010254,427.344208 518.672607,413.171631 519.066162,399.019135 \n\tC519.998840,365.477570 532.933105,337.602509 559.186768,316.270508 \n\tC574.191284,304.078918 591.182678,297.275513 610.632568,295.860992 \n\tC636.322754,293.992645 658.657410,301.480255 678.315552,317.789124 \n\tC698.896729,334.863831 711.618042,356.662292 714.768921,383.084930 \n\tC716.823181,400.311066 716.366150,417.838593 716.979919,435.233063 \n\tC717.108276,438.871582 716.998535,442.518494 716.998535,447.001343 \n\tC720.472961,447.001343 723.562073,446.978119 726.650757,447.005981 \n\tC733.789185,447.070374 737.990417,451.305908 737.992493,458.531281 \n\tC738.006104,505.187531 737.999756,551.843750 738.000000,599.000000 \nM686.169434,386.321167 \n\tC684.202209,372.874786 678.159302,361.412323 669.619812,350.970001 \n\tC656.586304,335.032257 639.597351,327.122864 619.408630,326.113678 \n\tC607.678467,325.527313 596.512085,328.608551 586.218628,334.382050 \n\tC562.178833,347.865814 549.929749,368.957886 548.176208,395.949982 \n\tC547.195801,411.041962 547.989929,426.249786 548.011963,441.405396 \n\tC548.014526,443.160858 548.194458,444.916016 548.289307,446.620117 \n\tC595.092957,446.620117 641.302185,446.620117 688.661255,446.620117 \n\tC687.953979,426.508026 687.261108,406.805328 686.169434,386.321167 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" fill="#616161" class="jp-custom-icon jp-icon3 jp-icon-selectable" \n\td="\nM445.000000,137.000000 \n\tC536.813049,137.000015 628.126404,137.126938 719.438660,136.851227 \n\tC731.881165,136.813644 741.407166,146.194763 741.147888,158.507431 \n\tC740.642883,182.491470 741.009644,206.493652 740.995605,230.488327 \n\tC740.988464,242.735672 732.716858,250.995651 720.446045,250.996033 \n\tC547.484497,251.001495 374.522919,251.001450 201.561340,250.996048 \n\tC189.286880,250.995667 181.011475,242.738358 181.004440,230.495682 \n\tC180.990463,206.167755 180.990570,181.839828 181.004395,157.511902 \n\tC181.011368,145.264450 189.282990,137.005264 201.553741,137.004120 \n\tC282.535828,136.996597 363.517914,137.000092 445.000000,137.000000 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" fill="#616161" class="jp-custom-icon jp-icon3 jp-icon-selectable" \n\td="\nM486.000000,775.998657 \n\tC353.514160,775.998657 221.528183,775.927307 89.542709,776.146667 \n\tC79.949707,776.162598 71.798676,770.599548 71.814911,758.597900 \n\tC72.076706,565.119019 71.999863,371.639648 71.999847,178.160385 \n\tC71.999847,175.691223 71.999847,173.222061 71.999847,170.227814 \n\tC62.611301,170.227814 53.688507,170.227814 43.427563,170.227814 \n\tC57.732803,141.585114 71.557716,113.904144 85.980057,85.026985 \n\tC100.277077,113.596474 114.120583,141.259720 128.424072,169.842133 \n\tC118.648087,169.842133 109.646706,169.842133 100.332687,169.842133 \n\tC100.332687,362.470093 100.332687,554.354919 100.332687,746.620605 \n\tC277.708801,746.620605 454.928070,746.620605 632.829712,746.620605 \n\tC632.829712,737.757935 632.829712,728.888367 632.829712,718.974915 \n\tC661.407043,733.216614 689.020264,746.977905 718.028381,761.434326 \n\tC689.544922,775.690369 661.832214,789.560608 633.203613,803.889282 \n\tC633.203613,794.085144 633.203613,785.506958 633.203613,775.998657 \n\tC583.961853,775.998657 535.230896,775.998657 486.000000,775.998657 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" fill="#616161" class="jp-custom-icon jp-icon3 jp-icon-selectable" \n\td="\nM189.462997,561.267212 \n\tC194.206940,560.057251 198.622803,558.142334 203.043198,558.131836 \n\tC279.851929,557.948914 356.661804,558.147339 433.469818,557.850342 \n\tC445.825714,557.802551 455.411530,567.154968 455.149750,579.537415 \n\tC454.639221,603.685669 454.733429,627.856812 455.137848,652.009094 \n\tC455.288208,660.987854 444.963867,671.157593 436.026642,671.131714 \n\tC357.385376,670.904053 278.742828,670.894165 200.101700,671.145691 \n\tC191.189301,671.174194 180.634293,660.999329 180.833405,651.636475 \n\tC181.336334,627.987915 181.235504,604.317871 180.868591,580.664307 \n\tC180.744949,572.694214 183.081192,566.437134 189.462997,561.267212 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" fill="#616161" class="jp-custom-icon jp-icon3 jp-icon-selectable" \n\td="\nM242.000000,461.000000 \n\tC227.511383,460.999695 213.522690,461.030701 199.534195,460.988190 \n\tC190.073975,460.959442 181.029373,451.998047 181.014694,442.586761 \n\tC180.974960,417.107574 180.966629,391.628235 181.020004,366.149078 \n\tC181.039078,357.047943 190.144424,348.021454 199.298752,348.016388 \n\tC254.420502,347.985992 309.542297,347.981476 364.664093,348.018463 \n\tC375.257812,348.025574 383.952515,356.668701 383.978577,367.214142 \n\tC384.040710,392.360168 384.027405,417.506531 383.984039,442.652618 \n\tC383.967834,452.056519 374.905334,460.982574 365.399902,460.988464 \n\tC324.433258,461.013885 283.466644,460.999725 242.000000,461.000000 \nz"/>\n</svg>'}),je=new k.LabIcon({name:`${s}:hide-icon`,svgstr:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-eye-slash-fill" viewBox="0 0 16 16">\n <path d="m10.79 12.912-1.614-1.615a3.5 3.5 0 0 1-4.474-4.474l-2.06-2.06C.938 6.278 0 8 0 8s3 5.5 8 5.5a7.029 7.029 0 0 0 2.79-.588zM5.21 3.088A7.028 7.028 0 0 1 8 2.5c5 0 8 5.5 8 5.5s-.939 1.721-2.641 3.238l-2.062-2.062a3.5 3.5 0 0 0-4.474-4.474L5.21 3.089z"/>\n <path d="M5.525 7.646a2.5 2.5 0 0 0 2.829 2.829l-2.83-2.829zm4.95.708-2.829-2.83a2.5 2.5 0 0 1 2.829 2.829zm3.171 6-12-12 .708-.708 12 12-.708.708z"/>\n</svg>'}),$e=new k.LabIcon({name:`${s}:show-icon`,svgstr:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-eye-fill" viewBox="0 0 16 16">\n <path d="M10.5 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0z"/>\n <path d="M0 8s3-5.5 8-5.5S16 8 16 8s-3 5.5-8 5.5S0 8 0 8zm8 3.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7z"/>\n</svg>'}),Le=q.dispatch;function Be(e,t,o){let n=!0,a=!1;o&&o.composite.tocDashboardSettings&&(n=o.composite.tocDashboardSettings.numberingH1,a=o.composite.tocDashboardSettings.syncCollapseState);const l=new ge(e,{numbering:!1,numberingH1:n,syncCollapseState:a,sanitizer:t});return o&&o.composite.tocDashboardSettings&&o.changed.connect((()=>{l.numberingH1=o.composite.tocDashboardSettings.numberingH1,l.syncCollapseState=o.composite.tocDashboardSettings.syncCollapseState})),{options:l,toolbarGenerator:function(e){return function(e,t){return class extends f.Component{constructor(o){super(o),this.state={showCode:!0,showMarkdown:!1,numbering:!1,showVisuDashboard:D.displayDashboard},t.context.ready.then((()=>{if(t){t.content.activeCellChanged.connect((()=>{e.updateWidget()}));const o=C.getMetadataComp(t.model,"dashboard-toc-autonumbering"),n=C.getMetadataComp(t.model,"dashboard-toc-showcode"),a=C.getMetadataComp(t.model,"dashboard-toc-showmarkdowntxt");e.initializeOptions(o||e.numbering,e.numberingH1,e.syncCollapseState,n||e.showCode,a||e.showMarkdown),this.setState({showCode:e.showCode,showMarkdown:e.showMarkdown,numbering:e.numbering})}}))}toggleCode(){pe.sendInteraction({click_type:e.showCode?"OFF":"ON",signal_origin:"TOC_TOOLBAR_CODE"}),e.setShowCode(!e.showCode,t),this.setState({showCode:e.showCode})}toggleMarkdown(){pe.sendInteraction({click_type:e.showMarkdown?"OFF":"ON",signal_origin:"TOC_TOOLBAR_MARKDOWN"}),e.setShowMarkdown(!e.showMarkdown,t),this.setState({showMarkdown:e.showMarkdown})}toggleNumbering(){pe.sendInteraction({click_type:e.numbering?"OFF":"ON",signal_origin:"TOC_TOOLBAR_NUMBERED"}),e.setNumbering(!e.numbering,t),this.setState({numbering:e.numbering})}toggleShowVisuDashboard(){const e=this.state.showVisuDashboard;pe.sendInteraction({click_type:e?"OFF":"ON",signal_origin:"TOC_TOOLBAR_SHOW_HIDE"}),Le(M(!e)),this.setState({showVisuDashboard:!e})}refreshDashboard(){pe.sendInteraction({click_type:"ON",signal_origin:"TOC_TOOLBAR_REFRESH"}),Le(Q())}render(){const e=f.createElement("div",{onClick:e=>this.toggleCode(),role:"text","aria-label":"Toggle Code Cells",title:"Toggle Code Cells",className:this.state.showCode?"dashboard-toc-toolbar-icon-selected":"dashboard-toc-toolbar-icon"},f.createElement(k.codeIcon.react,null)),t=f.createElement("div",{onClick:e=>this.toggleMarkdown(),role:"text","aria-label":"Toggle Markdown Text Cells",title:"Toggle Markdown Text Cells",className:this.state.showMarkdown?"dashboard-toc-toolbar-icon-selected":"dashboard-toc-toolbar-icon"},f.createElement(k.markdownIcon.react,null)),o=f.createElement("div",{onClick:e=>this.toggleNumbering(),role:"text","aria-label":"Toggle Auto-Numbering",title:"Toggle Auto-Numbering",className:this.state.numbering?"dashboard-toc-toolbar-icon-selected":"dashboard-toc-toolbar-icon"},f.createElement(k.numberingIcon.react,null)),n=f.createElement("div",{onClick:e=>this.toggleShowVisuDashboard(),role:"text","aria-label":this.state.showVisuDashboard?"Hide Visualization Dashboard":"Show Visualization Dashboard",title:this.state.showVisuDashboard?"Hide Visualization Dashboard":"Show Visualization Dashboard",className:"dashboard-toc-toolbar-icon"},this.state.showVisuDashboard?f.createElement(je.react,null):f.createElement($e.react,null)),a=f.createElement("div",{onClick:e=>this.refreshDashboard(),role:"text","aria-label":"Refresh Dashboard",title:"Refresh Dashboard",className:"dashboard-toc-toolbar-icon"},f.createElement(k.refreshIcon.react,null));return f.createElement("div",null,f.createElement("div",{className:"dashboard-toc-toolbar"},f.createElement("div",{className:"dashboard-toc-toolbar-compartment"},e,t,o),f.createElement("div",{className:"dashboard-toc-toolbar-compartment"},n,a)))}}}(l,e)},itemRenderer:function(e,t,o=[]){return function(e,t,o,n=[]){var a;if("markdown"===o.type||"header"===o.type){let a="dashboard-toc-level-size-default";const l=o.numbering&&e.numbering?o.numbering:"",r=e.syncCollapseState?ve:Ce;if("header"!==o.type&&"markdown"!==o.type||(a="dashboard-toc-level-size-"+o.level),"header"===o.type||e.showMarkdown){let s;s=o.html?f.createElement("span",{dangerouslySetInnerHTML:{__html:l+e.sanitizer.sanitize(o.html,ke)},className:"dashboard-"+o.type+"-cell dashboard-toc-cell-item"}):f.createElement("span",{className:"dashboard-"+o.type+"-cell dashboard-toc-cell-item"},l+o.text);let i=null;return"header"===o.type&&(i=f.createElement("div",{className:"jp-Collapser p-Widget lm-Widget",onClick:n=>{n.stopPropagation(),function(t,o,n){let a=!1;const l=e.syncCollapseState,r=C.getMetadataComp(null==n?void 0:n.cellRef.model,o);r&&(a=r),n?(pe.sendInteraction({click_type:a?"OFF":"ON",signal_origin:"TOC_COLLAPSE_HEADERS"}),l?t&&x.NotebookActions.setHeadingCollapse(null==n?void 0:n.cellRef,!a,t.content):a?C.deleteMetadataComp(n.cellRef.model,o):C.setMetadataComp(n.cellRef.model,o,!0),e.updateAndCollapse({heading:n,collapsedState:a})):e.updateWidget()}(t,r,o)}},f.createElement("div",{className:"dashboard-toc-Collapser-child"}))),s=f.createElement("div",{className:"dashboard-toc-entry-holder "+a+(t.content.activeCell===o.cellRef||Me(t,o,n)?" dashboard-toc-active-cell":"")},i,s),s}return null}if(t&&"code"===o.type&&e.showCode){const e=(null===(a=C.getMetadataComp(t.model,"language_info"))||void 0===a?void 0:a.mimetype)||"text";return f.createElement("div",{className:"dashboard-toc-code-cell-div"},f.createElement("div",{className:"dashboard-toc-code-cell-prompt"},o.prompt),f.createElement("span",{className:"dashboard-toc-code-span"},f.createElement(Te,{cell_input:o.text,language_mimetype:e,className:"dashboard-toc-cell-input"})))}return null}(l,e,t,o)},generate:function(o){let n=[],a=-1;const r={},s=o.content;let i=null;for(let o=0;o<s.widgets.length;o++){const c=s.widgets[o],d=c.model,u=l.syncCollapseState?ve:Ce;let p=C.getMetadataComp(d,u);if(p=p||!1,"code"!==d.type){if("markdown"===d.type){const e=c;let u;const m=be(n);if(e.rendered&&!e.inputHidden){const d=()=>()=>{e.rendered&&(s.mode="command"),s.activeCellIndex=o,s.mode="command",s.scrollToItem(o,"center")},h=ye(c.node,d,t,r,m,l.numbering,l.numberingH1,c,o);for(u of h)[n,i,a]=_e(u,n,i,a,p,l.showMarkdown)}else{const e=()=>()=>{s.activeCellIndex=o,s.mode="command",s.scrollToItem(o,"center")},t=Ne(d.sharedModel.getSource(),e,r,m,c,o);for(u of t)[n,i,a]=_e(u,n,i,a,p,l.showMarkdown)}}}else if(!e||e&&l.showCode){const e=e=>()=>{s.activeCellIndex=o,s.mode="command",s.scrollToItem(o,"center")},t=c.model.executionCount,l=null!==t?"["+t+"]: ":"[ ]: ",r=fe(d.sharedModel.getSource(),e,l,be(n),c,o);[n,i]=we(n,r,i,a)}}return n},collapseChanged:l.collapseChanged}}const Pe=e=>{const[t,o]=(0,f.useState)(e.startT1),[n,a]=(0,f.useState)(e.startT2),l=Qt(new Date),r=t=>{o(t),e.t1Callback(t)},s=t=>{a(t),e.t2Callback(t)};return w().createElement("div",{className:"dashboard-export-dialog-container"},w().createElement("p",null,"Select the time range of the data you want to export (the past week selected by default)."),w().createElement("div",{className:"dashboard-export-dialog-calendar-container"},w().createElement("div",{className:"dashboard-export-dialog-calendar"},w().createElement("p",null,"Start Date :"),w().createElement("input",{className:"dashboard-calendar-input",type:"datetime-local",value:Qt(t),onChange:e=>(e=>{const t=new Date(e);r(t),t>=n&&s(t)})(e.target.value),max:Qt(n)})),w().createElement("div",{className:"dashboard-export-dialog-calendar"},w().createElement("p",null,"End Date :"),w().createElement("input",{className:"dashboard-calendar-input",type:"datetime-local",value:Qt(n),onChange:e=>(e=>{const o=new Date(e);s(o),o<=t&&r(o)})(e.target.value),max:l}))))},Ue=e=>{const[t,o]=(0,f.useState)(!1);return w().createElement("div",{className:"dashboard-toc-download-button"+(t?"-disabled":""),onClick:()=>{t||(e=>{let t=new Date,n=new Date;n.setDate(t.getDate()-7),(0,y.showDialog)({title:"Download Notebook Data",body:w().createElement(Pe,{startT1:n,startT2:t,t1Callback:e=>n=e,t2Callback:e=>t=e}),buttons:[{accept:!0,actions:[],ariaLabel:"Export",caption:"",className:"",displayType:"default",iconClass:"",iconLabel:"",label:"Export"},y.Dialog.cancelButton()]}).then((a=>{a.button.accept&&((e,t,n)=>{o(!0);let a="";Ft(`${ro}/dashboard/${e}/download_csv?t1=${t.toISOString()}&t2=${n.toISOString()}`).then((e=>{var t;if(e.ok){const o=e.headers.get("Content-Disposition");return a=(null===(t=null==o?void 0:o.match(/filename=(.+)/))||void 0===t?void 0:t[1])||"",e.blob()}})).then((e=>{if(e){const t=window.URL.createObjectURL(e),o=document.createElement("a");o.href=t,o.download=a,document.body.appendChild(o),o.click(),o.remove()}})).finally((()=>{o(!1)}))})(e,n,t)}))})(e.notebookId)}},w().createElement(k.downloadIcon.react,{className:"dashboard-toc-download-icon"}),"Export")};class ze extends ce{constructor(e,t,o,n){super(e),this.title.caption="Dashboard ToC",this.title.icon=Re,this.id="unianalytics-toc-dashboard",this.node.setAttribute("role","region"),this.node.setAttribute("aria-label","Dashboard ToC section"),this._commands=t,this._notebookGenerator=Be(this,o,n),this._toolbar=null,e.panelSwitched.connect(this._onPanelSwitched,this)}onBeforeShow(e){pe.sendInteraction({click_type:"ON",signal_origin:"TOC_DASHBOARD_SHOW_HIDE"})}onBeforeHide(e){pe.sendInteraction({click_type:"OFF",signal_origin:"TOC_DASHBOARD_SHOW_HIDE"})}_onPanelSwitched(e){this._panelManager.panel?this._toolbar=this._notebookGenerator.toolbarGenerator(this._panelManager.panel):this._toolbar=null}computeComponentToRender(){const e=this._panelManager.panel;return e?f.createElement("div",{className:"dashboard-TableOfContents"},f.createElement("div",{className:"dashboard-stack-panel-header"},f.createElement("span",{className:"dashboard-toc-header-title"},S.PathExt.basename(e.context.localPath)),f.createElement(Ue,{notebookId:this._panelManager.validityChecks.tag})),this._toolbar&&f.createElement(this._toolbar,null),f.createElement(he,{headings:this._notebookGenerator.generate(e),itemRenderer:this._notebookGenerator.itemRenderer,notebookPanel:e,commands:this._commands,notebookCells:this._panelManager.notebookCells})):f.createElement(f.Fragment,null)}}var Fe=o(2535);const He=q.dispatch,We=()=>{const e=(0,ae.useSelector)((e=>e.sidedashboard.navigationState));return w().createElement(le.Stack,{className:"breadcrumb-container",direction:"horizontal",gap:2},e.map(((t,o)=>w().createElement("div",{className:o===e.length-1?"breadcrumb-tile-active breadcrumb-tile":"breadcrumb-tile",onClick:()=>{"Notebook"===t.pageName?pe.sendInteraction({click_type:"ON",signal_origin:"BREADCRUMB_TO_NOTEBOOK"}):"Cell"===t.pageName&&pe.sendInteraction({click_type:"ON",signal_origin:"BREADCRUMB_TO_CELL"}),o!==e.length-1&&He(B(o))}},t.pageName))),w().createElement("div",{className:"breadcrumb-buttons-container"},w().createElement(le.Button,{className:"dashboard-button",onClick:()=>{pe.sendInteraction({click_type:"ON",signal_origin:"DASHBOARD_REFRESH_BUTTON"}),He(Q())}},w().createElement(Fe.ArrowClockwise,{className:"dashboard-icon"}))))},Ve=q.dispatch,Ge=[{value:1,displayName:"All Data",disabledDatePicker:!0},{value:2,displayName:"From t<sub>1</sub>",disabledDatePicker:!1}],Je=e=>{const[t,o]=(0,f.useState)(!1),n=(0,ae.useSelector)((e=>e.commondashboard.dashboardQueryArgs)),a=()=>{const t=n.t1ISOString[e.notebookId]?1:0;return Ge[t]},l=()=>{const t=n.t1ISOString[e.notebookId];return t?new Date(t):new Date},r=()=>void 0===n.displayRealTime[e.notebookId]||n.displayRealTime[e.notebookId],[s,i]=(0,f.useState)(a()),[c,d]=(0,f.useState)(l()),[u,p]=(0,f.useState)(r),m=Qt(new Date);return(0,f.useEffect)((()=>{Ve(F({notebookId:e.notebookId,t1ISOString:s.disabledDatePicker?null:c.toISOString()})),Ve(V({notebookId:e.notebookId,displayRealTime:u}))}),[c,s,u]),w().createElement(le.Dropdown,{show:t,onToggle:()=>{pe.sendInteraction({click_type:t?"OFF":"ON",signal_origin:"DASHBOARD_FILTER_TIME"}),t||(d(l()),i(a()),p(r())),o(!t)},className:"custom-dropdown"},w().createElement(le.Dropdown.Toggle,{className:"dashboard-button"},!(u&&s.disabledDatePicker)&&w().createElement("span",{className:"dashboard-filter-red-dot"}),w().createElement(Fe.CalendarWeek,{className:"dashboard-icon"})),w().createElement(le.Dropdown.Menu,null,w().createElement(le.Dropdown.Header,null,"Data Timeframe Selector"),w().createElement(le.Dropdown.Divider,null),w().createElement("div",{className:"custom-dropdown-container custom-dropdown-item"},w().createElement(le.Form.Check,{id:"time-checkbox-include-all",type:"checkbox",label:"Only show active users",checked:u,onChange:e=>p(e.target.checked)})),w().createElement(le.Dropdown.Divider,null),w().createElement("div",{className:"dashboard-calendar-container"},w().createElement("div",{className:"cell-radio-container"},w().createElement(le.ButtonGroup,{size:"sm"},Ge.map(((e,t)=>w().createElement(le.ToggleButton,{key:`calendar-filter-${t}`,id:`calendar-filter-${t}`,type:"radio",variant:"outline-primary",name:"radio",value:e.value,checked:s.value===e.value,onChange:e=>{i(Ge[Number(e.currentTarget.value)-1])}},w().createElement("span",{dangerouslySetInnerHTML:{__html:e.displayName}}))))))),w().createElement("div",{className:"dashboard-calendar-container"},w().createElement("div",{className:"dashboard-calendar-input-wrapper "+(s.disabledDatePicker?"disabled":"")},w().createElement("div",null,"t",w().createElement("sub",null,"1")),w().createElement("input",{className:"dashboard-calendar-input",type:"datetime-local",value:Qt(c),onChange:e=>d(new Date(e.target.value)),max:m})))))},Qe=({PassedComponent:e,title:t})=>w().createElement(le.Row,{className:"mb-4"},w().createElement(le.Card,{className:"chart-card"},w().createElement(le.Card.Title,{className:"chart-card-title"},t),w().createElement(le.Card.Body,{className:"chart-card-body"},e)));var Ke=o(7885);const qe="#969696",Xe={maintainAspectRatio:!1,plugins:{legend:{labels:{color:qe}}},scales:{x:{ticks:{color:qe},title:{display:!0,text:"",color:qe}},y:{beginAtZero:!0,ticks:{precision:0,color:qe},title:{display:!0,text:"",color:qe}}}},Ye=e=>{const[t,o]=(0,f.useState)({labels:[],datasets:[]}),n=(0,ae.useSelector)((e=>e.commondashboard.dashboardQueryArgs)),a=(0,ae.useSelector)((e=>e.commondashboard.refreshBoolean)),l=(0,ae.useSelector)((e=>e.commondashboard.notebookCells)),r=(0,f.useMemo)((()=>(null==l?void 0:l.filter((e=>"code"===e.cellType)))||[]),[l]);(0,f.useEffect)((()=>{Ft(`${ro}/dashboard/${e.notebookId}/user_code_execution?${zt(n,e.notebookId)}`).then((e=>e.json())).then((e=>{const t={labels:Array.from({length:r.length},((e,t)=>t+1)),datasets:[{label:"clicks",data:Array(r.length).fill(null),backgroundColor:"rgba(51, 187, 238, 0.3)",borderColor:"rgba(51, 187, 238, 0.3)",borderWidth:1,hoverBackgroundColor:"rgba(51, 187, 238, 0.8)",hoverBorderColor:"rgba(51, 187, 238, 0.8)",hoverBorderWidth:1,hidden:!0},{label:"executions",data:Array(r.length).fill(null),backgroundColor:"rgba(0, 119, 187, 0.6)",borderColor:"rgba(0, 119, 187, 0.6)",borderWidth:1,hoverBackgroundColor:"rgba(0, 119, 187, 0.9)",hoverBorderColor:"rgba(0, 119, 187, 0.9)",hoverBorderWidth:1},{label:"executions without errors",data:Array(r.length).fill(null),backgroundColor:"rgba(0, 153, 136, 0.9)",borderColor:"rgba(0, 153, 136, 0.9)",borderWidth:1,hoverBackgroundColor:"rgba(0, 100, 90, 1)",hoverBorderColor:"rgba(0, 100, 90, 1)",hoverBorderWidth:1}]};r.forEach(((o,n)=>{const a=e.find((e=>e.cell===o.id));a&&(t.datasets[0].data[n]=parseFloat(a.cell_click_pct),t.datasets[1].data[n]=parseFloat(a.code_exec_pct),t.datasets[2].data[n]=parseFloat(a.code_exec_ok_pct))})),o(t)}))}),[n,a]);const s=((e,t)=>{var o,n,a,l,r,s,i;return{...Xe,plugins:{...Xe.plugins,legend:{...null===(o=Xe.plugins)||void 0===o?void 0:o.legend,position:"top"},tooltip:{callbacks:{title:e=>`Code cell ${e[0].label}`}}},scales:{x:{...null===(n=Xe.scales)||void 0===n?void 0:n.x,title:{...null===(l=null===(a=Xe.scales)||void 0===a?void 0:a.x)||void 0===l?void 0:l.title,text:"Code cell"}},y:{...null===(r=Xe.scales)||void 0===r?void 0:r.y,title:{...null===(i=null===(s=Xe.scales)||void 0===s?void 0:s.y)||void 0===i?void 0:i.title,text:"Cumulated total across all users"}}},onClick:(o,n)=>{var a;if(n.length>0){const o=n[0].index,l=null===(a=null==e?void 0:e[o])||void 0===a?void 0:a.id;l&&t(l)}}}})(r,(t=>{e.commands.execute(m.dashboardScrollToCell,{from:"Visu",source:"CodeExecComponent",cell_id:t})}));return w().createElement(Qe,{PassedComponent:w().createElement(Ke.Bar,{data:t,options:s}),title:"Code cell executions across users"})},Ze=q.dispatch,et=e=>{const[t,o]=(0,f.useState)(!1),n=(0,ae.useSelector)((t=>t.commondashboard.dashboardQueryArgs.selectedGroups[e.notebookId])),[a,l]=(0,f.useState)({includeAllChecked:void 0===n||0===n.length,groupList:[]});(0,f.useEffect)((()=>{if(r){let t;t=a.includeAllChecked?[]:a.groupList.filter((e=>!0===e.checked)).map((e=>e.name)),Ze(W({notebookId:e.notebookId,groups:t}))}}),[a]);const[r,s]=(0,f.useState)(!1);return(0,f.useEffect)((()=>{s(!1),Ft(`${ro}/dashboard/${e.notebookId}/getgroups`).then((e=>e.json())).then((e=>{const t=e.map((e=>({name:e,checked:null==n?void 0:n.includes(e)}))).sort(((e,t)=>e.checked!==t.checked?t.checked?1:-1:e.name.localeCompare(t.name)));l((e=>({...e,groupList:t}))),s(!0)}))}),[e.notebookId]),w().createElement(le.Dropdown,{id:"group-dropdown",className:"custom-dropdown",show:t,onToggle:()=>{pe.sendInteraction({click_type:t?"OFF":"ON",signal_origin:"DASHBOARD_FILTER_GROUPS"}),t||l((e=>{const t=void 0===n||0===n.length,o=e.groupList.map((e=>({name:e.name,checked:null==n?void 0:n.includes(e.name)}))).sort(((e,t)=>e.checked!==t.checked?t.checked?1:-1:e.name.localeCompare(t.name)));return{...e,includeAllChecked:t,groupList:o}})),o(!t)}},w().createElement(le.Dropdown.Toggle,{className:"dashboard-button"},a.groupList.some((e=>!0===e.checked))&&w().createElement("span",{className:"dashboard-filter-red-dot"}),w().createElement(Fe.PeopleFill,{className:"dashboard-icon"})),w().createElement(le.Dropdown.Menu,null,w().createElement(le.Dropdown.Header,null,"Filter by group of users"),w().createElement(le.Dropdown.Divider,null),w().createElement("div",{className:"custom-dropdown-container custom-dropdown-item"},w().createElement(le.Form.Check,{id:"group-checkbox-include-all",type:"checkbox",label:"Include all users",checked:a.includeAllChecked,onChange:e=>{return t=e.target.checked,void l((e=>{const o=e.groupList.map((e=>({...e,checked:!1})));return{...e,includeAllChecked:t,groupList:t?o:e.groupList}}));var t}})),w().createElement(le.Dropdown.Divider,null),w().createElement("div",{className:"group-dropdown-scroll "+(a.includeAllChecked?"disabled":"")},a.groupList.length>0?a.groupList.map(((e,t)=>w().createElement("div",{className:"custom-dropdown-item "+(a.includeAllChecked?"disabled":"")},w().createElement(le.Form.Check,{id:`group-checkbox-${t}`,type:"checkbox",disabled:!!a.includeAllChecked||void 0,label:e.name,title:e.name,checked:e.checked,onChange:()=>(e=>{l((t=>{const o=[...t.groupList];return o[e]={...o[e],checked:!o[e].checked},{...t,groupList:o}}))})(t)})))):w().createElement(le.Dropdown.Item,{disabled:!0},"No groups available"))))},tt=1800,ot=`> ${Math.floor(30)}'`,nt=e=>{const t=Math.floor(e/60);return e>=tt?ot:`${t>0?t+"'":""}${(e%60).toFixed(0)}"`},at=e=>{const[t,o]=(0,f.useState)({labels:[],datasets:[]}),n=(0,ae.useSelector)((e=>e.commondashboard.dashboardQueryArgs)),a=(0,ae.useSelector)((e=>e.commondashboard.refreshBoolean)),l=(0,ae.useSelector)((e=>e.commondashboard.notebookCells)),r=(0,f.useRef)(null);(0,f.useEffect)((()=>{r.current=l}),[l]),(0,f.useEffect)((()=>{Ft(`${ro}/dashboard/${e.notebookId}/user_cell_duration_time?${zt(n,e.notebookId)}`).then((e=>e.json())).then((e=>{const t=e.durations,n=e.total_user_count,a=[];t&&n&&(null==l||l.map(((e,o)=>{const l=t.find((t=>t.cell===e.id));if(l){const e=l.user_count/n,t=1,r=10;a.push({x:o+1,y:Math.min(l.average_duration,tt),r:Math.min(Math.max(Math.round(t+(r-1)*e),t),r),userCount:l.user_count,totalCount:n})}})));const r={labels:l?Array.from({length:l.length},((e,t)=>t+1)):[],datasets:[{label:" fraction of users that focused on the cell",data:a,backgroundColor:"rgba(54, 162, 235, 0.2)",borderColor:"rgba(54, 162, 235, 1)",borderWidth:1}]};o(r)}))}),[n,a]);const s=((e,t)=>{var o,n,a,l,r,s,i,c,d,u,p,m;return{...Xe,plugins:{...Xe.plugins,legend:{...null===(o=Xe.plugins)||void 0===o?void 0:o.legend,display:!0,labels:{...null===(a=null===(n=Xe.plugins)||void 0===n?void 0:n.legend)||void 0===a?void 0:a.labels,usePointStyle:!0}},tooltip:{...null===(l=Xe.plugins)||void 0===l?void 0:l.tooltip,usePointStyle:!0,callbacks:{title:e=>`Cell ${e[0].raw.x}`,label:e=>[`${e.raw.userCount} of ${e.raw.totalCount} users focused on this cell`,`Average focus time: ${nt(e.raw.y)}`]}}},scales:{x:{...null===(r=Xe.scales)||void 0===r?void 0:r.x,type:"category",title:{...null===(i=null===(s=Xe.scales)||void 0===s?void 0:s.x)||void 0===i?void 0:i.title,text:"Cell (markdown & code)"}},y:{...null===(c=Xe.scales)||void 0===c?void 0:c.y,ticks:{...null===(u=null===(d=Xe.scales)||void 0===d?void 0:d.y)||void 0===u?void 0:u.ticks,count:6,callback:e=>"number"==typeof e?nt(e):e},title:{...null===(m=null===(p=Xe.scales)||void 0===p?void 0:p.y)||void 0===m?void 0:m.title,text:"Average time spent on the cell"}}},onClick:(o,n)=>{var a,l;if(n.length>0){const o=n[0].index,r=null===(l=null===(a=e.current)||void 0===a?void 0:a[o])||void 0===l?void 0:l.id;r&&t(r)}}}})(r,(t=>{e.commands.execute(m.dashboardScrollToCell,{from:"Visu",source:"CellDurationComponent",cell_id:t})}));return w().createElement(Qe,{PassedComponent:w().createElement(Ke.Bubble,{data:t,options:s}),title:"Time spent on each cell across users"})},lt=({cards:e})=>w().createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(150px, 1fr))",gap:"12px",marginBottom:"20px",padding:"12px"}},e.map(((e,t)=>w().createElement("div",{key:t,style:{backgroundColor:"var(--jp-layout-color2)",border:"1px solid var(--jp-border-color1)",borderRadius:"8px",padding:"16px",position:"relative",overflow:"hidden"}},e.color&&w().createElement("div",{style:{position:"absolute",top:0,left:0,right:0,height:"3px",backgroundColor:e.color}}),e.icon&&w().createElement("div",{style:{fontSize:"24px",marginBottom:"8px",opacity:.8}},e.icon),w().createElement("div",{style:{fontSize:"11px",color:"var(--jp-ui-font-color2)",textTransform:"uppercase",letterSpacing:"0.5px",marginBottom:"6px",fontWeight:500}},e.title),w().createElement("div",{style:{fontSize:"28px",fontWeight:"bold",color:"var(--jp-ui-font-color0)",marginBottom:"4px",lineHeight:1}},e.value),e.subtitle&&w().createElement("div",{style:{fontSize:"12px",color:"var(--jp-ui-font-color2)",marginBottom:"8px"}},e.subtitle),e.trend&&w().createElement("div",{style:{fontSize:"11px",color:e.trend.positive?"#4caf50":"#f44336",display:"flex",alignItems:"center",gap:"4px",marginTop:"8px"}},w().createElement("span",null,e.trend.positive?"▲":"▼"),w().createElement("span",null,Math.abs(e.trend.value)),w().createElement("span",{style:{color:"var(--jp-ui-font-color3)"}},e.trend.description)))))),rt=({title:e,subtitle:t,icon:o})=>w().createElement("div",{style:{marginTop:"24px",marginBottom:"16px",paddingBottom:"12px",borderBottom:"2px solid var(--jp-border-color2)"}},w().createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginBottom:t?"4px":"0"}},o&&w().createElement("span",{style:{fontSize:"20px"}},o),w().createElement("h3",{style:{margin:0,fontSize:"16px",fontWeight:600,color:"var(--jp-ui-font-color0)",letterSpacing:"0.3px"}},e)),t&&w().createElement("p",{style:{margin:"4px 0 0 0",fontSize:"12px",color:"var(--jp-ui-font-color3)",fontStyle:"italic"}},t)),st=[{label:"0-30s",min:0,max:30,color:"rgba(76, 175, 80, 0.8)"},{label:"30s-1m",min:30,max:60,color:"rgba(139, 195, 74, 0.8)"},{label:"1-2m",min:60,max:120,color:"rgba(255, 235, 59, 0.8)"},{label:"2-5m",min:120,max:300,color:"rgba(255, 152, 0, 0.8)"},{label:"5-15m",min:300,max:900,color:"rgba(255, 87, 34, 0.8)"},{label:"15m+",min:900,max:1/0,color:"rgba(244, 67, 54, 0.8)"}],it={apply_single:{background:"rgba(76, 175, 80, 0.6)",border:"rgba(76, 175, 80, 1)",label:"Applied Update"},remove_single:{background:"rgba(244, 67, 54, 0.6)",border:"rgba(244, 67, 54, 1)",label:"Deleted Update"},update_all:{background:"rgba(33, 150, 243, 0.6)",border:"rgba(33, 150, 243, 1)",label:"Applied All Updates"},delete_all:{background:"rgba(255, 87, 34, 0.6)",border:"rgba(255, 87, 34, 1)",label:"Deleted All Updates"}},ct=e=>{const[t,o]=(0,f.useState)([]),[n,a]=(0,f.useState)(null),[l,r]=(0,f.useState)(!1),[s,i]=(0,f.useState)(!0),[c,d]=(0,f.useState)(new Set(Object.keys(it))),[u,p]=(0,f.useState)(null),[m,h]=(0,f.useState)("histogram"),g=(0,ae.useSelector)((e=>e.commondashboard.dashboardQueryArgs)),b=(0,ae.useSelector)((e=>e.commondashboard.refreshBoolean));(0,f.useEffect)((()=>{(async()=>{i(!0);try{const t=await Ft(`${ro}/dashboard/${e.notebookId}/pending_updates_stats?${zt(g,e.notebookId)}`),l=await t.json();console.log("Fetched pending updates stats:",l),o(l),l.length>0&&!n&&a(l[0].update_id)}catch(e){console.error("Failed to fetch pending updates stats",e),o([])}finally{i(!1)}})()}),[e.notebookId,g,b]);const v=(0,f.useMemo)((()=>t.find((e=>e.update_id===n))),[t,n]),C=(e=>{if(!e)return{totalStudents:0,responseRate:0,avgResponseTime:0,medianResponseTime:0,pendingCount:0};const t=e.update_now+e.update_later,o=e.update_now,n=t>0?Math.round(o/t*100):0;let a=0,l=0;if(e.detailed_actions&&e.detailed_actions.length>0){const t=new Date(e.timestamp).getTime(),o=e.detailed_actions.map((e=>(new Date(e.timestamp).getTime()-t)/1e3)).sort(((e,t)=>e-t));a=Math.round(o.reduce(((e,t)=>e+t),0)/o.length);const n=Math.floor(o.length/2);l=Math.round(o.length%2!=0?o[n]:(o[n-1]+o[n])/2)}return{totalStudents:t,responseRate:n,avgResponseTime:a,medianResponseTime:l,pendingCount:e.update_later}})(v),k=(e=>{if(!e||!e.detailed_actions||0===e.detailed_actions.length)return st.map((e=>({...e,count:0})));const t=new Date(e.timestamp).getTime(),o=st.map((e=>({...e,count:0})));return e.detailed_actions.forEach((e=>{const n=(new Date(e.timestamp).getTime()-t)/1e3,a=o.findIndex((e=>n>=e.min&&n<e.max));-1!==a&&o[a].count++})),o})(v),y=e=>{if(e<60)return`${e}s`;const t=Math.floor(e/60),o=e%60;return o>0?`${t}m ${o}s`:`${t}m`},_=v?[{title:"Total Recipients",value:C.totalStudents,subtitle:"Students notified",icon:"📨",color:"#2196F3"},{title:"Took Action",value:`${C.responseRate}%`,subtitle:`${v.update_now} of ${C.totalStudents} students`,icon:"⚡",color:C.responseRate>=70?"#4CAF50":C.responseRate>=40?"#FF9800":"#F44336"},{title:"Median Response",value:C.medianResponseTime>0?y(C.medianResponseTime):"N/A",subtitle:`Avg: ${y(C.avgResponseTime)}`,icon:"⏱️",color:"#00BCD4"},{title:"Still Pending",value:C.pendingCount,subtitle:"Saved for later",icon:"📌",color:C.pendingCount>0?"#FF9800":"#9E9E9E"}]:[],x={labels:k.map((e=>e.label)),datasets:[{label:"Number of Students",data:k.map((e=>e.count)),backgroundColor:k.map((e=>e.color)),borderColor:k.map((e=>e.color.replace("0.8","1"))),borderWidth:1}]},E={...Xe,maintainAspectRatio:!1,plugins:{...Xe.plugins,legend:{display:!1},tooltip:{callbacks:{label:e=>{const t=C.totalStudents,o=e.parsed.y;return`${o} students (${t>0?Math.round(o/t*100):0}%)`}}}},scales:{y:{beginAtZero:!0,title:{display:!0,text:"Number of Students",color:"var(--jp-ui-font-color1)"},ticks:{color:"var(--jp-ui-font-color1)",precision:0}},x:{title:{display:!0,text:"Response Time After Push",color:"var(--jp-ui-font-color1)"},ticks:{color:"var(--jp-ui-font-color1)"}}}},S={labels:t.map(((e,t)=>`Update ${t+1}`)),datasets:[{label:"Took Action",data:t.map((e=>e.update_now)),backgroundColor:"rgba(76, 175, 80, 0.7)",borderColor:"rgba(76, 175, 80, 1)",borderWidth:1,stack:"response"},{label:"Saved for Later",data:t.map((e=>e.update_later)),backgroundColor:"rgba(255, 152, 0, 0.7)",borderColor:"rgba(255, 152, 0, 1)",borderWidth:1,stack:"response"}]},N={...Xe,maintainAspectRatio:!1,onClick:(e,o)=>{if(o.length>0){const e=o[0].index;a(t[e].update_id)}},plugins:{...Xe.plugins,legend:{display:!0,position:"top",labels:{boxWidth:12,padding:10,font:{size:11}}},tooltip:{callbacks:{title:e=>{const o=t[e[0].dataIndex];return[`Update ${e[0].dataIndex+1}`,`Sent: ${new Date(o.timestamp).toLocaleString()}`]},label:e=>`${e.dataset.label}: ${e.parsed.y} students`,footer:e=>{const o=t[e[0].dataIndex],n=o.update_now+o.update_later;return`Response Rate: ${n>0?Math.round(o.update_now/n*100):0}%`}}}},scales:{y:{stacked:!0,beginAtZero:!0,title:{display:!0,text:"Number of Students",color:"var(--jp-ui-font-color1)"},ticks:{color:"var(--jp-ui-font-color1)",precision:0}},x:{stacked:!0,ticks:{color:"var(--jp-ui-font-color1)"}}}};return s?w().createElement("div",{style:{padding:"20px",textAlign:"center",color:"var(--jp-ui-font-color2)"}},"Loading pending updates statistics..."):0===t.length?w().createElement("div",{style:{padding:"20px",textAlign:"center",color:"var(--jp-ui-font-color2)"}},"No pending updates found. Push an update to students to see statistics here."):w().createElement("div",{style:{display:"flex",flexDirection:"column",gap:"8px",padding:"12px"}},w().createElement(rt,{icon:"📋",title:"Update Selection",subtitle:"Choose which update to analyze in detail"}),w().createElement("div",null,w().createElement("select",{value:n||"",onChange:e=>a(e.target.value),style:{width:"100%",padding:"10px",fontSize:"13px",backgroundColor:"var(--jp-layout-color2)",color:"var(--jp-ui-font-color1)",border:"1px solid var(--jp-border-color1)",borderRadius:"4px",cursor:"pointer"}},t.map(((e,t)=>{const o=e.update_now+e.update_later,n=o>0?Math.round(e.update_now/o*100):0,a=new Date(e.timestamp).toLocaleString();return w().createElement("option",{key:e.update_id,value:e.update_id},"Update ",t+1," - ",a," (",n,"% response rate)")})))),v&&w().createElement(w().Fragment,null,w().createElement(rt,{icon:"📊",title:"Quick Summary",subtitle:"Key metrics at a glance"}),w().createElement(lt,{cards:_})),v&&w().createElement(w().Fragment,null,w().createElement(rt,{icon:"⏱️",title:"Response Time Analysis",subtitle:"Student engagement speed breakdown"}),w().createElement("div",{style:{height:"300px"}},w().createElement(Qe,{PassedComponent:w().createElement(Ke.Bar,{data:x,options:E}),title:""})),w().createElement("div",{style:{padding:"12px",backgroundColor:"var(--jp-layout-color2)",border:"1px solid var(--jp-border-color1)",borderRadius:"6px",fontSize:"12px",color:"var(--jp-ui-font-color2)",marginTop:"8px"}},w().createElement("div",{style:{fontWeight:600,marginBottom:"6px",color:"var(--jp-ui-font-color1)"}},"💡 How to Read This Chart"),w().createElement("p",{style:{margin:"4px 0"}},"This shows how quickly students responded after you pushed the update.",w().createElement("strong",{style:{color:"#4CAF50"}}," Green bars")," = fast response,",w().createElement("strong",{style:{color:"#4CAF50"}}," Green bars")," = fast response,",w().createElement("strong",{style:{color:"#FF9800"}}," orange/yellow")," = moderate,",w().createElement("strong",{style:{color:"#F44336"}}," red")," = slow response."),w().createElement("p",{style:{margin:"4px 0"}},"Use median response time (half responded faster, half slower) to identify typical behavior."))),v&&v.detailed_actions&&v.detailed_actions.length>0&&w().createElement(w().Fragment,null,w().createElement(rt,{icon:"🔍",title:"Detailed Action Timeline",subtitle:"Individual student actions over time"}),w().createElement("div",{style:{textAlign:"center",marginBottom:"12px"}},w().createElement("button",{onClick:()=>r(!l),style:{padding:"10px 20px",backgroundColor:l?"var(--jp-error-color1)":"var(--jp-brand-color1)",color:"white",border:"none",borderRadius:"4px",cursor:"pointer",fontSize:"13px",fontWeight:500}},l?"🔼 Hide Detailed Timeline":"🔽 Show Detailed Timeline")),l&&w().createElement("div",{style:{padding:"16px",backgroundColor:"var(--jp-layout-color1)",border:"1px solid var(--jp-border-color1)",borderRadius:"6px"}},w().createElement("div",{style:{marginBottom:"16px"}},w().createElement("label",{style:{display:"block",fontSize:"12px",fontWeight:600,marginBottom:"8px",color:"var(--jp-ui-font-color1)"}},"Visualization Type:"),w().createElement("div",{style:{display:"flex",gap:"8px",flexWrap:"wrap"}},["scatter","histogram","summary"].map((e=>w().createElement("button",{key:e,onClick:()=>h(e),style:{padding:"6px 12px",backgroundColor:m===e?"var(--jp-brand-color1)":"var(--jp-layout-color2)",color:m===e?"white":"var(--jp-ui-font-color1)",border:"1px solid var(--jp-border-color1)",borderRadius:"4px",cursor:"pointer",fontSize:"12px",textTransform:"capitalize"}},"scatter"===e?"📊 Scatter Plot":"histogram"===e?"📈 Histogram":"📋 Table"))))),w().createElement("div",{style:{marginBottom:"16px"}},w().createElement("label",{style:{display:"block",fontSize:"12px",fontWeight:600,marginBottom:"8px",color:"var(--jp-ui-font-color1)"}},"Filter by Action Type:"),w().createElement("div",{style:{display:"flex",gap:"8px",flexWrap:"wrap"}},Object.keys(it).map((e=>{const t=c.has(e);return w().createElement("button",{key:e,onClick:()=>{const o=new Set(c);t?o.delete(e):o.add(e),d(o)},style:{padding:"6px 12px",backgroundColor:t?it[e].background:"var(--jp-layout-color2)",color:t?"white":"var(--jp-ui-font-color2)",border:`1px solid ${t?it[e].border:"var(--jp-border-color1)"}`,borderRadius:"4px",cursor:"pointer",fontSize:"11px"}},it[e].label)})))),w().createElement("div",{style:{marginBottom:"16px"}},w().createElement("label",{style:{display:"block",fontSize:"12px",fontWeight:600,marginBottom:"8px",color:"var(--jp-ui-font-color1)"}},"Filter by Time Range (minutes after push):"),w().createElement("div",{style:{display:"flex",gap:"8px",alignItems:"center"}},w().createElement("input",{type:"number",value:u||"",onChange:e=>p(e.target.value?Number(e.target.value):null),placeholder:"All times",min:"1",style:{flex:1,padding:"6px",fontSize:"12px",backgroundColor:"var(--jp-layout-color2)",color:"var(--jp-ui-font-color1)",border:"1px solid var(--jp-border-color1)",borderRadius:"4px"}}),u&&w().createElement("button",{onClick:()=>p(null),style:{padding:"6px 12px",backgroundColor:"var(--jp-layout-color2)",color:"var(--jp-ui-font-color2)",border:"1px solid var(--jp-border-color1)",borderRadius:"4px",cursor:"pointer",fontSize:"11px"}},"Clear"))),(()=>{const e=new Date(v.timestamp).getTime(),t=(v.detailed_actions||[]).filter((t=>{const o=t.action.toLowerCase();return!!c.has(o)&&!(u&&(new Date(t.timestamp).getTime()-e)/1e3/60>u)}));if(0===t.length)return w().createElement("div",{style:{textAlign:"center",padding:"40px",color:"var(--jp-ui-font-color3)"}},"No actions match the current filters");if("scatter"===m){const o=200,n=t.length>o?t.slice(-o):t,a=t.length>o,l={datasets:Object.keys(it).filter((e=>c.has(e))).map((t=>({label:it[t].label,data:n.filter((e=>e.action.toLowerCase()===t)).map(((t,o)=>({x:(new Date(t.timestamp).getTime()-e)/1e3/60,y:o}))),backgroundColor:it[t].background,borderColor:it[t].border,pointRadius:6,pointHoverRadius:8})))},r={...Xe,maintainAspectRatio:!1,scales:{x:{title:{display:!0,text:"Minutes After Update Push",color:"var(--jp-ui-font-color1)"},ticks:{color:"var(--jp-ui-font-color1)"}},y:{display:!1}},plugins:{...Xe.plugins,legend:{display:!0,position:"top",labels:{boxWidth:12,padding:8,font:{size:11}}},tooltip:{callbacks:{label:e=>`${e.dataset.label} at ${Math.round(10*e.parsed.x)/10}min`}}}};return w().createElement(w().Fragment,null,a&&w().createElement("div",{style:{padding:"8px 12px",backgroundColor:"var(--jp-warn-color3)",border:"1px solid var(--jp-warn-color1)",borderRadius:"4px",fontSize:"11px",color:"var(--jp-ui-font-color1)",marginBottom:"8px"}},"ℹ️ Showing most recent ",o," of"," ",t.length," actions for better performance. Use histogram for full overview."),w().createElement("div",{style:{height:"300px"}},w().createElement(Qe,{PassedComponent:w().createElement(Ke.Scatter,{data:l,options:r}),title:""})))}if("histogram"===m){const o=Array.from({length:12},((e,t)=>5*t)),n={labels:o.map((e=>`${e}-${e+5}min`)),datasets:Object.keys(it).filter((e=>c.has(e))).map((n=>{const a=o.map((o=>t.filter((t=>{if(t.action.toLowerCase()!==n)return!1;const a=(new Date(t.timestamp).getTime()-e)/1e3/60;return a>=o&&a<o+5})).length));return{label:it[n].label,data:a,backgroundColor:it[n].background,borderColor:it[n].border,borderWidth:1}}))},a={...Xe,maintainAspectRatio:!1,scales:{x:{stacked:!0,title:{display:!0,text:"Time After Push",color:"var(--jp-ui-font-color1)"},ticks:{color:"var(--jp-ui-font-color1)"}},y:{stacked:!0,beginAtZero:!0,title:{display:!0,text:"Number of Actions",color:"var(--jp-ui-font-color1)"},ticks:{color:"var(--jp-ui-font-color1)",precision:0}}},plugins:{...Xe.plugins,legend:{display:!0,position:"top"}}};return w().createElement("div",{style:{height:"300px"}},w().createElement(Qe,{PassedComponent:w().createElement(Ke.Bar,{data:n,options:a}),title:""}))}const o=t.length>100?t.slice(-100):t,n=t.length>100;return w().createElement(w().Fragment,null,n&&w().createElement("div",{style:{padding:"8px 12px",backgroundColor:"var(--jp-warn-color3)",border:"1px solid var(--jp-warn-color1)",borderRadius:"4px",fontSize:"11px",color:"var(--jp-ui-font-color1)",marginBottom:"8px"}},"ℹ️ Showing most recent ",100," of"," ",t.length," actions. Use histogram for full overview."),w().createElement("div",{style:{maxHeight:"400px",overflowY:"auto",border:"1px solid var(--jp-border-color1)",borderRadius:"4px"}},w().createElement("table",{style:{width:"100%",fontSize:"12px",borderCollapse:"collapse"}},w().createElement("thead",{style:{position:"sticky",top:0,backgroundColor:"var(--jp-layout-color2)",borderBottom:"2px solid var(--jp-border-color2)"}},w().createElement("tr",null,w().createElement("th",{style:{padding:"10px",textAlign:"left",fontWeight:600}},"Action"),w().createElement("th",{style:{padding:"10px",textAlign:"left",fontWeight:600}},"Time After Push"),w().createElement("th",{style:{padding:"10px",textAlign:"left",fontWeight:600}},"Timestamp"))),w().createElement("tbody",null,o.sort(((e,t)=>new Date(e.timestamp).getTime()-new Date(t.timestamp).getTime())).map(((t,o)=>{var n,a;const l=t.action.toLowerCase(),r=Math.round((new Date(t.timestamp).getTime()-e)/1e3/60*10)/10;return w().createElement("tr",{key:o,style:{backgroundColor:o%2==0?"var(--jp-layout-color1)":"var(--jp-layout-color2)",borderBottom:"1px solid var(--jp-border-color1)"}},w().createElement("td",{style:{padding:"10px"}},w().createElement("span",{style:{padding:"4px 8px",borderRadius:"4px",backgroundColor:(null===(n=it[l])||void 0===n?void 0:n.background)||"gray",color:"white",fontSize:"11px",fontWeight:500}},(null===(a=it[l])||void 0===a?void 0:a.label)||t.action)),w().createElement("td",{style:{padding:"10px",color:"var(--jp-ui-font-color1)"}},r," min"),w().createElement("td",{style:{padding:"10px",color:"var(--jp-ui-font-color2)",fontSize:"11px"}},new Date(t.timestamp).toLocaleString()))}))))))})())),w().createElement(rt,{icon:"📈",title:"All Updates Overview",subtitle:`Comparing ${t.length} total update${1!==t.length?"s":""} - Click to select`}),w().createElement("div",{style:{height:`${Math.max(250,35*t.length)}px`}},w().createElement(Qe,{PassedComponent:w().createElement(Ke.Bar,{data:S,options:N}),title:""})),w().createElement(rt,{icon:"🌍",title:"Global Statistics",subtitle:"Aggregate metrics across all updates"}),w().createElement("div",{style:{padding:"12px",backgroundColor:"var(--jp-layout-color2)",border:"1px solid var(--jp-border-color1)",borderRadius:"6px",fontSize:"12px"}},w().createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(150px, 1fr))",gap:"12px"}},w().createElement("div",null,w().createElement("div",{style:{color:"var(--jp-ui-font-color3)",fontSize:"11px",marginBottom:"4px"}},"Total Updates Pushed"),w().createElement("div",{style:{fontSize:"24px",fontWeight:"bold",color:"var(--jp-ui-font-color0)"}},t.length)),w().createElement("div",null,w().createElement("div",{style:{color:"var(--jp-ui-font-color3)",fontSize:"11px",marginBottom:"4px"}},"Average Response Rate"),w().createElement("div",{style:{fontSize:"24px",fontWeight:"bold",color:"var(--jp-ui-font-color0)"}},Math.round(t.reduce(((e,t)=>{const o=t.update_now+t.update_later;return e+(o>0?t.update_now/o*100:0)}),0)/t.length),"%")),w().createElement("div",null,w().createElement("div",{style:{color:"var(--jp-ui-font-color3)",fontSize:"11px",marginBottom:"4px"}},"Total Student Actions"),w().createElement("div",{style:{fontSize:"24px",fontWeight:"bold",color:"var(--jp-ui-font-color0)"}},t.reduce(((e,t)=>e+t.update_now+t.update_later),0))))))},dt=e=>w().createElement(w().Fragment,null,w().createElement("div",{className:"dashboard-title-container"},w().createElement("div",{className:"dashboard-title-text"},e.notebookName),w().createElement("div",{className:"dashboard-dropdown-container"},w().createElement(et,{notebookId:e.notebookId}),w().createElement(Je,{notebookId:e.notebookId}))),w().createElement(le.Row,null,w().createElement(le.Col,null,w().createElement(Ye,{notebookId:e.notebookId,commands:e.commands}),w().createElement(at,{notebookId:e.notebookId,commands:e.commands}),w().createElement(ct,{notebookId:e.notebookId}))));var ut=o(3231),pt=o.n(ut);const mt=[{key:"timeDesc",label:"Time (newest 1st)"},{key:"timeAsc",label:"Time (oldest 1st)"},{key:"inputAsc",label:"Input (shortest 1st)"},{key:"inputDesc",label:"Input (longest 1st)"},{key:"outputAsc",label:"Output (shortest 1st)"},{key:"outputDesc",label:"Output (longest 1st)"}],ht=mt[0].key,gt=q.dispatch,bt=e=>{const t=(0,ae.useSelector)((t=>t.commondashboard.dashboardQueryArgs.sortBy[e.notebookId]||ht));return w().createElement(le.Dropdown,{id:"order-by-dropdown",onSelect:t=>{t&&(pe.sendInteraction({click_type:"ON",signal_origin:"CELL_DASHBOARD_FILTER_SORT"}),gt(G({notebookId:e.notebookId,sortCriterion:t})))},className:"custom-dropdown"},w().createElement(le.Dropdown.Toggle,{className:"dashboard-button"},t!==ht&&w().createElement("span",{className:"dashboard-filter-red-dot"}),w().createElement(Fe.SortUp,{className:"dashboard-icon"})),w().createElement(le.Dropdown.Menu,null,w().createElement(le.Dropdown.Header,null,"Sort cells by"),w().createElement(le.Dropdown.Divider,null),mt.map(((e,o)=>w().createElement(le.Dropdown.Item,{id:`sort-item-${o}`,eventKey:e.key,className:t===e.key?"highlighted":""},e.label)))))},vt=e=>w().createElement(le.Col,{md:12},w().createElement(le.Card,{className:"cell-card"},w().createElement(le.Card.Body,{style:{gap:"10px"}},w().createElement(le.Row,{className:"cell-card-wrapper"},w().createElement(le.Col,{md:12,className:"cell-user-title"},w().createElement(le.Card.Text,{title:e.value.user_id||void 0},"User ",e.value.user_id?e.value.user_id.length>8?`${e.value.user_id.substring(0,8)}...`:e.value.user_id:`${e.index+1}`)),w().createElement(le.Col,{md:12},e.ExecutionContent),(()=>{if(e.value.t_finish){const t=new Date(e.value.t_finish),o=`Executed at ${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}, ${t.getDate().toString().padStart(2,"0")}/${(t.getMonth()+1).toString().padStart(2,"0")}/${t.getFullYear().toString().slice(-2)}`;return w().createElement(le.Col,{md:12,className:"cell-execution-displayed-time"},o)}return null})()))));var Ct=o(2779);const ft=e=>{const[t,o]=(0,f.useState)(null);return(0,f.useEffect)((()=>{(()=>{const t=Ct.marked.parser(Ct.marked.lexer(e.markdownContent));o(e.sanitizer.sanitize(t))})()}),[e.markdownContent]),w().createElement("div",{className:"cell-content-container"},t&&w().createElement("div",{className:"jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput",dangerouslySetInnerHTML:{__html:t}}))};var wt=o(2449);const kt=new l.RenderMimeRegistry({initialFactories:l.standardRendererFactories}),yt=({cell_output_model:e})=>{const t=(0,f.useRef)(null),o=new wt.OutputAreaModel;return(0,f.useEffect)((()=>{o.clear(),o.fromJSON(e);const n=t.current;if(n){n.innerHTML="";for(let e=0;e<o.length;++e){const t=o.get(e),a=kt.preferredMimeType(t.data);if(a){const e=kt.createRenderer(a);e.renderModel(t),n.appendChild(e.node)}}}}),[e]),w().createElement("div",{ref:t,className:"cell-content-container"})},_t=e=>{const t=(0,f.useRef)([]),[o,n]=(0,f.useState)([]),[a,l]=(0,f.useState)(!1),r=(0,f.useRef)(0),i=(0,f.useRef)(7),c=(0,f.useRef)(0),d=(0,ae.useSelector)((e=>e.sidedashboard.navigationState)),u=(0,ae.useSelector)((e=>e.commondashboard.refreshBoolean)),m=(0,ae.useSelector)((e=>e.commondashboard.dashboardQueryArgs)),[h,g]=(0,f.useState)(!0),[b,v]=(0,f.useState)(!0),[C,k]=(0,f.useState)(1),[y,_]=((e=800)=>{const[t,o]=(0,f.useState)(""),[n,a]=(0,f.useState)("");return(0,f.useEffect)((()=>{const t=setTimeout((()=>o(n)),e);return()=>clearTimeout(t)}),[n,e]),[t,a]})(),x=[{name:"All",value:1,status:"all"},{name:"Success",value:2,status:"ok"},{name:"Error",value:3,status:"error"}],E=x.map((e=>e.status)),S=d[d.length-1].content,N=async()=>{const o=++c.current,a=i.current,d=r.current;try{const s=await Ft(`${ro}/dashboard/${e.notebookId}/cell/${S.cellId}?limit=${a}&offset=${d}&${zt(m,e.notebookId)}`),u=await s.json();if(o===c.current){const e=((e,t)=>{const o=new Set(e.map((e=>e.exec_id))),n=t.filter((e=>!o.has(e.exec_id)));return[...e,...n]})(t.current,u);t.current=e,n(e),u.length<a?l(!1):l(!0),r.current+=a,i.current=7}}catch(e){console.error(`${s}: Error cell dashboard fetch: `,e)}};return(0,f.useEffect)((()=>{i.current=Math.max(t.current.length,7),l(!1),r.current=0,t.current=[],N()}),[d,m,u]),(0,f.useEffect)((()=>()=>{l(!1),r.current=0,t.current=[],n([])}),[d]),(0,f.useEffect)((()=>{if(!e.pageRouterNode)return;const t=Math.abs(e.pageRouterNode.scrollHeight-e.pageRouterNode.clientHeight-e.pageRouterNode.scrollTop)<1;a&&t&&N()}),[a,e.pageRouterNode,o,h,b,C,y]),w().createElement(w().Fragment,null,w().createElement("div",{className:"dashboard-title-container"},w().createElement("div",{className:"dashboard-title-text"},"Cell (",S.cellId,")"),w().createElement("div",{className:"dashboard-dropdown-container"},w().createElement(bt,{notebookId:e.notebookId}),w().createElement(et,{notebookId:e.notebookId}),w().createElement(Je,{notebookId:e.notebookId}))),w().createElement(le.Form,{className:"cell-filter-container",onSubmit:e=>e.preventDefault()},w().createElement("div",{className:"cell-radio-container"},w().createElement(le.ButtonGroup,{size:"sm"},w().createElement(le.ToggleButton,{style:{marginRight:"3px"},key:"0",id:"code-checkbox",type:"radio",variant:"outline-primary",value:"Code",checked:h,onClick:e=>{h&&!b?e.preventDefault():(pe.sendInteraction({click_type:h?"OFF":"ON",signal_origin:"CELL_DASHBOARD_FILTER_CODE_INPUT"}),g(!h))}},"Code"),w().createElement(le.ToggleButton,{key:"1",id:"output-checkbox",type:"radio",variant:"outline-primary",value:"Output",checked:b,onClick:e=>{!h&&b?e.preventDefault():(pe.sendInteraction({click_type:b?"OFF":"ON",signal_origin:"CELL_DASHBOARD_FILTER_CODE_OUTPUT"}),v(!b))}},"Output"))),w().createElement("div",{className:"cell-radio-container"},w().createElement(le.ButtonGroup,{size:"sm"},x.map(((e,t)=>w().createElement(le.ToggleButton,{key:t,id:`filter-${t}`,type:"radio",variant:"outline-primary",name:"radio",value:e.value,checked:C===e.value,onChange:e=>{pe.sendInteraction({click_type:"ON",signal_origin:"CELL_DASHBOARD_FILTER_EXECUTION"}),k(Number(e.currentTarget.value))}},e.name))))),w().createElement(le.Form.Control,{size:"sm",type:"text",placeholder:"Type text to filter...",onChange:e=>_(e.target.value)})),w().createElement(pt(),{style:{overflow:"hidden"},scrollableTarget:p,dataLength:o.length,next:N,hasMore:a,loader:w().createElement(re,null)},(I=o,D=y,0===D.length?I:(D=D.toLowerCase(),I.filter((e=>{var t;return(null===(t=e.cell_input)||void 0===t?void 0:t.toLowerCase().includes(D))||e.cell_output_model&&JSON.stringify(e.cell_output_model).toLowerCase().includes(D)})))).map(((t,o)=>w().createElement(le.Row,{key:o},"MarkdownExecution"===t.cell_type&&["all","ok"].includes(E[C-1])?w().createElement(vt,{value:t,index:o,ExecutionContent:w().createElement(ft,{markdownContent:t.cell_input,sanitizer:e.sanitizer})}):w().createElement(w().Fragment,null,(1===C||E[C-1]===t.status)&&w().createElement(vt,{value:t,index:o,ExecutionContent:w().createElement(w().Fragment,null,h&&w().createElement(Te,{cell_input:t.cell_input,language_mimetype:t.language_mimetype,className:"cell-content-container"}),h&&b&&t.cell_output_model.length>0&&w().createElement("br",null),b&&t.cell_output_model.length>0&&w().createElement(yt,{cell_output_model:t.cell_output_model}))})))))));var I,D};var xt=o(8352);xt.Chart.register(...xt.registerables);const Et=e=>{const t=(0,ae.useSelector)((e=>e.sidedashboard.navigationState)),[o,n]=(0,f.useState)(null),a=(0,f.useCallback)((e=>{n(e)}),[]);return w().createElement("div",{ref:a,className:"page-container",id:p},w().createElement(We,null),(()=>{switch(t[t.length-1].pageName){case"Notebook":return w().createElement(dt,{notebookId:e.notebookId,notebookName:e.notebookName,commands:e.commands});case"Cell":return w().createElement(_t,{notebookId:e.notebookId,sanitizer:e.sanitizer,pageRouterNode:o});default:return null}})())};class St extends ce{constructor(e,t,o){super(e),this.addClass("dashboard-react-widget"),this.title.caption="Side Dashboard",this.title.icon=Re,this.id="unanalytics-side-dashboard",this.node.setAttribute("role","region"),this.node.setAttribute("aria-label","Side dashboard section"),this._commands=t,this._sanitizer=o}onBeforeShow(e){pe.sendInteraction({click_type:"ON",signal_origin:"RIGHT_DASHBOARD_SHOW_HIDE"})}onBeforeHide(e){pe.sendInteraction({click_type:"OFF",signal_origin:"RIGHT_DASHBOARD_SHOW_HIDE"})}computeComponentToRender(){const e=this._panelManager.panel,t=this._panelManager.validityChecks.tag;return e&&t?f.createElement(Et,{notebookId:t,notebookName:e.sessionContext.name,commands:this._commands,sanitizer:this._sanitizer}):f.createElement(f.Fragment,null)}}const Nt=q.dispatch,It=e=>{const t=(0,f.useRef)(null),o=(0,f.useRef)(null),n=new Date,[a,l]=(0,f.useState)(new Date(n.getTime()-72e5)),[r,s]=(0,f.useState)(new Date(n.getTime()+6e4)),[i,c]=(0,f.useState)(40),[d,u]=((e,t=200)=>{const[o,n]=(0,f.useState)(e),[a,l]=(0,f.useState)(e);return(0,f.useEffect)((()=>{const e=setTimeout((()=>n(a)),t);return()=>clearTimeout(e)}),[a,t]),[o,l]})(40),p=()=>{const e=a.getTime()+i/40*(r.getTime()-a.getTime());return new Date(e)};return(0,f.useEffect)((()=>{const t=p();Nt(H({notebookId:e.notebookId,t2ISOString:t.toISOString()}))}),[d,a,r]),(0,f.useEffect)((()=>()=>{Nt(H({notebookId:e.notebookId,t2ISOString:null}))}),[e.notebookId]),w().createElement("div",{className:"dashboard-playback-widget-container"},w().createElement("div",{className:"dashboard-playback-header"},w().createElement("div",{className:"dashboard-playback-icon-container"},w().createElement(Oe.react,{className:"dashboard-playback-icon"})),w().createElement("div",{className:"dashboard-playback-mode-title"},"Playback Mode"),w().createElement("div",{className:"dashboard-playback-icon-container-hovering dashboard-playback-icon-container",onClick:e.hideParent},w().createElement(Fe.X,{className:"dashboard-playback-icon"}))),w().createElement("div",{className:"dashboard-playback-mode-text"},"Move data cutoff time back in custom range (includes non-active users):"),w().createElement("div",{className:"dashboard-playback-controls"},w().createElement("div",{className:"dashboard-playback-time-button-wrapper"},w().createElement(le.Button,{className:"dashboard-playback-time-button-container",onClick:()=>{var e;return null===(e=t.current)||void 0===e?void 0:e.showPicker()}},"t",w().createElement("sub",null,"1"),w().createElement("input",{ref:t,id:"unianalytics-datetime-t1",className:"dashboard-playback-hidden-datepicker dashboard-calendar-input",type:"datetime-local",value:Qt(a),max:Qt(r),onChange:e=>{const t=new Date(e.target.value);t.getTime()>=r.getTime()&&s(new Date(t.getTime()+6e4)),l(t)}})),w().createElement("span",{className:"dashboard-playback-label"},"Min cutoff:",w().createElement("br",null)," ",Kt(a))),w().createElement("div",{className:"dashboard-playback-range-wrapper"},w().createElement(le.Form.Range,{min:0,max:40,onChange:e=>{return t=parseInt(e.target.value),c(t),void u(t);var t},value:i}),w().createElement("span",{className:"dashboard-playback-label"},"Selected cutoff:",w().createElement("br",null)," ",Kt(p()))),w().createElement("div",{className:"dashboard-playback-time-button-wrapper"},w().createElement(le.Button,{className:"dashboard-playback-time-button-container",onClick:()=>{var e;return null===(e=o.current)||void 0===e?void 0:e.showPicker()}},"t",w().createElement("sub",null,"2"),w().createElement("input",{ref:o,id:"unianalytics-datetime-t2",className:"dashboard-playback-hidden-datepicker dashboard-calendar-input",type:"datetime-local",value:Qt(r),max:Qt(n),onChange:e=>{const t=new Date(e.target.value);t.getTime()<=a.getTime()&&l(new Date(t.getTime()-6e4)),s(t)}})),w().createElement("span",{className:"dashboard-playback-label"},"Max cutoff:",w().createElement("br",null)," ",Kt(r)))))};class Dt extends y.ReactWidget{constructor(e){super(),this._dragging=!1,this._startX=0,this._startLeft=0,this.addClass("dashboard-playback-widget"),this.id="dashboard-playback-widget",this.node.setAttribute("role","region"),this.show=this.show.bind(this),this.hide=this.hide.bind(this),this.update=this.update.bind(this),this._onMouseDown=this._onMouseDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this.hide(),this._panelManager=e,e.panelUpdated.connect((()=>this.update())),e.panelSwitched.connect((()=>this.hide()))}onBeforeShow(e){pe.sendInteraction({click_type:"ON",signal_origin:"DASHBOARD_PLAYBACK_SHOW_HIDE"}),this.update()}onBeforeHide(e){pe.sendInteraction({click_type:"OFF",signal_origin:"DASHBOARD_PLAYBACK_SHOW_HIDE"}),this.update()}onUpdateRequest(e){super.onUpdateRequest(e)}render(){const e=this._panelManager.panel,t=this._panelManager.validityChecks.tag;return!this.isHidden&&e&&t?f.createElement(It,{notebookId:t,hideParent:()=>this.hide()}):f.createElement(f.Fragment,null)}onAfterAttach(e){super.onAfterAttach(e),this.node.addEventListener("mousedown",this._onMouseDown.bind(this))}onBeforeDetach(e){this.node.removeEventListener("mousedown",this._onMouseDown.bind(this)),super.onBeforeDetach(e)}_onMouseDown(e){0===e.button&&e.target===this.node&&(this._dragging=!0,this._startX=e.clientX,this._startLeft=this.node.offsetLeft,document.addEventListener("mousemove",this._onMouseMove),document.addEventListener("mouseup",this._onMouseUp))}_onMouseMove(e){if(!this._dragging)return;const t=e.clientX-this._startX;this.node.style.left=`${this._startLeft+t}px`}_onMouseUp(e){this._dragging=!1,document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp)}}const Tt="cell-dashboard-button-container";class Mt extends E.Widget{constructor(e,t){super(),this.addClass(Tt);const o=document.createElement("button");o.className="cell-dashboard-button",o.innerHTML=Re.svgstr,o.title=o.disabled?"No notebook identifier":"Open Cell Dashboard",o.onclick=()=>{e.execute(m.dashboardOpenDashboardPlayback,{from:"Cell",cell_id:t})},this.node.appendChild(o)}dispose(){super.dispose()}}class Rt{constructor(e){this._commands=e}createNew(e){return new Ot(e,this._commands)}}class Ot{constructor(e,t){this._isDisposed=!1,this._panel=e,this._commands=t,this._previousActiveCell=this._panel.content.activeCell,e.context.ready.then((()=>{Gt(e)?(e.revealed.then((()=>{e&&!e.isDisposed&&setTimeout((()=>{this._onActiveCellChanged(e.content)}),1e3/60)})),e.content.renderingLayoutChanged.connect(this._onActiveCellChanged,this),e.content.activeCellChanged.connect(this._onActiveCellChanged,this),e.disposed.connect((()=>{e.content.activeCellChanged.disconnect(this._onActiveCellChanged)}))):this.dispose()}))}_addCellButton(e){const t=this._getCell(e);if(t){const e=new Mt(this._commands,t.model.id);t.layout.insertWidget(0,e)}}_onActiveCellChanged(e){this._previousActiveCell&&!this._previousActiveCell.isDisposed&&this._removeCellButton(this._previousActiveCell.model);const t=e.activeCell;null!==t&&(this._addCellButton(t.model),this._previousActiveCell=t)}_getCell(e){var t;return null===(t=this._panel)||void 0===t?void 0:t.content.widgets.find((t=>t.model===e))}_removeCellButton(e){const t=this._getCell(e);t&&this._findCellButtonWidgets(t).forEach((e=>{e.dispose()}))}_findCellButtonWidgets(e){return e.layout.widgets.filter((e=>e.hasClass(Tt)))||[]}get isDisposed(){return this._isDisposed}dispose(){var e;if(this.isDisposed)return;this._isDisposed=!0;const t=C.getCellsArrComp(null===(e=this._panel)||void 0===e?void 0:e.context.model.cells);if(t)for(const e of t)this._removeCellButton(e);this._panel=null,N.Signal.clearData(this)}}var At=o(7717);class jt{constructor(e){this._commands=e}createNew(e){const t=new y.ToolbarButton({className:"playback-button",icon:Oe,onClick:()=>{this._commands.execute(m.dashboardOpenDashboardPlayback,{from:"Playback"})},tooltip:"Open Dashboard Playback Widget"});return e.context.ready.then((()=>{Gt(e)&&e.toolbar.insertItem(0,"openDashboardPlayback",t)})),new At.DisposableDelegate((()=>{t.dispose()}))}}const $t=e=>{const t=e.shell.widgets();let o=C.getNextWidgetValueComp(t);for(;o;){if(o instanceof x.NotebookPanel){const t=o,n=new jt(e.commands),a=new Rt(e.commands),l=n.createNew(t),r=a.createNew(t);t.disposed.connect((()=>{l.dispose(),r.dispose()}))}o=C.getNextWidgetValueComp(t)}e.docRegistry.addWidgetExtension("Notebook",new Rt(e.commands)),e.docRegistry.addWidgetExtension("Notebook",new jt(e.commands))};var Lt=o(7930);const Bt=q.dispatch;const Pt=new Lt.Token(`${s}:dashboard-manager`),Ut=(n.ILayoutRestorer,n.ILabShell,r.ISettingRegistry,l.IRenderMimeRegistry,(e,t,o,n,a,l,r)=>{Vt(e.auth_notebooks),no||(async function(e,t,o,n,a){console.log(`JupyterLab extension ${s}: dashboard plugins activated!`),$t(e);const l=new ne,r=window.__UNIANALYTICS_PUSH_NOTEBOOK_SERVICE;r&&"function"==typeof r.setPanelManager&&(console.log("Push Plugin Started earlier"),r.setPanelManager(l));const i=new St(l,e.commands,a.sanitizer),c=new ze(l,e.commands,a.sanitizer,n),d=new Dt(l);function u(){const t=e.shell.currentWidget;if(!t)return;if(!(t instanceof x.NotebookPanel))return void(l.panel&&l.panel.isDisposed&&(l.panel=null));const o=t;l.panel=o}o.restored.then((()=>{E.Widget.attach(d,o.node)})),o.add(i,"right",{rank:1e3}),o.add(c,"left",{rank:1e3}),e.commands.addCommand(m.dashboardOpenDashboardPlayback,{label:"Notebook Visualizations",caption:"Open Dashboards",icon:Re,iconClass:"jp-icon3",execute:t=>{"Playback"===t.from?(i.isVisible||Bt($()),c.isVisible||e.shell.activateById(c.id),d.isAttached&&l.validityChecks.registered===Y.SUCCESS&&(d.isHidden?d.show():d.hide())):"Cell"===t.from?(pe.sendInteraction({click_type:"ON",signal_origin:"NOTEBOOK_CELL_BUTTON"}),Bt(L({cellId:t.cell_id}))):"Toc"===t.from&&(pe.sendInteraction({click_type:"ON",signal_origin:"TOC_OPEN_CELL_DASHBOARD"}),Bt(L({cellId:t.cell_id}))),i.isVisible||e.shell.activateById(i.id)}}),e.commands.addCommand(m.dashboardScrollToCell,{label:"Dashboard Scroll to Cell",caption:"Notebook Cell Navigation from Dashboards",execute:e=>{var t;if("Visu"===e.from){switch(e.source){case"CodeExecComponent":pe.sendInteraction({click_type:"ON",signal_origin:"CODE_VISU_CLICK"});break;case"CellDurationComponent":pe.sendInteraction({click_type:"ON",signal_origin:"TIME_VISU_CLICK"});break;default:console.log(`${s}: dashboardScrollToCell command called from an unknown source.`)}const o=null===(t=l.panel)||void 0===t?void 0:t.content;if(!o)return;const n=o.widgets.findIndex((t=>t.model.id===e.cell_id));-1!==n&&(o.activeCellIndex=n,o.mode="command",o.scrollToItem(n,"center"))}}}),t&&(t.add(i,`${s}:dashboard-notebook-restorer`),t.add(c,`${s}:dashboard-toc-restorer`)),o&&o.currentChanged.connect(u),e.restored.then((()=>{u()}))}(t,n,a,r,l),function(e,t){console.log(`JupyterLab extension ${s}: upload plugin is activated!`),e.commands.addCommand(m.uploadNotebook,{label:"Upload notebook to unianalytics",icon:e=>e.isContextMenu?k.fileUploadIcon:void 0,execute:o=>{const n=C.getFileComp(t);n&&e.serviceManager.contents.get(n.path).then((t=>{var o,a;(o=t.content,a=n.name,new Promise(((e,t)=>{const n=new FormData;n.append("notebook_content",JSON.stringify(o)),n.append("name",a),Ft(ro+"/notebook/upload",{method:"POST",body:n}).then((async o=>{const n=await o.json();o.ok?e(n):422===o.status?t("Invalid token"):t(n.error||"Unknown error")})).catch((e=>{t(e)}))}))).then((o=>{const a={...t,content:o};e.serviceManager.contents.save(n.path,a).then((e=>{const t=o.metadata[b.notebookId],a=`${ro}/notebook/download/${t}`;(0,y.showDialog)({title:n.name,body:w().createElement(_,{url:a,fileName:n.name}),buttons:[y.Dialog.okButton()]}).catch((e=>console.log(e)))})).catch((e=>{(0,y.showDialog)({title:n.name,body:`Error saving the file:\n${e}`,buttons:[y.Dialog.okButton()]}).catch((e=>console.log(e)))}))})).catch((e=>{(0,y.showDialog)({title:n.name,body:`Error uploading the file:\n${e}`,buttons:[y.Dialog.okButton()]}).catch((e=>console.log(e)))}))}))}}),e.commands.addCommand(m.copyDownloadLink,{label:"Copy unianalytics notebook link",icon:e=>e.isContextMenu?k.linkIcon:void 0,execute:o=>{const n=C.getFileComp(t);n&&e.serviceManager.contents.get(n.path).then((e=>{const t=e.content.metadata;if(t){const e=t[b.notebookId];e?navigator.clipboard.writeText(`${ro}/notebook/download/${e}`).catch((e=>{console.error(`${s}: Error copying link: `,e)})):console.log(`${s}: Notebook not tagged`)}}))}}),e.contextMenu.addItem({selector:h,type:"separator",rank:0}),e.contextMenu.addItem({args:{isContextMenu:!0},command:m.uploadNotebook,selector:h,rank:0}),e.contextMenu.addItem({args:{isContextMenu:!0},command:m.copyDownloadLink,selector:h,rank:0}),e.contextMenu.addItem({selector:h,type:"separator",rank:0})}(t,o),ao(!0))}),zt=(e,t)=>{var o,n;return`displayRealTime=${null===(o=e.displayRealTime[t])||void 0===o||o}`+(e.t1ISOString[t]?"&t1="+e.t1ISOString[t]:"")+(e.t2ISOString[t]?"&t2="+e.t2ISOString[t]:"")+(e.sortBy[t]?"&sortBy="+e.sortBy[t]:"")+((null===(n=e.selectedGroups[t])||void 0===n?void 0:n.length)>0?"&selectedGroups="+encodeURIComponent(JSON.stringify(e.selectedGroups[t])):"")},Ft=async(e,t)=>{const o=await Ht(e,t);if(401===o.status){const n=await o.clone().json();if("expired_token"===(null==n?void 0:n.status)){if(await Wt())return Ht(e,t);console.log(`${s}: Token refresh failed.`),eo.registrationStateChanged.emit(Y.EXPIREDTOKEN)}}return o},Ht=async(e,t)=>{const o={headers:{Authorization:`Bearer ${localStorage.getItem(c)}`}},n={...o,...t,headers:{...o.headers,...(null==t?void 0:t.headers)||{}}};return fetch(e,n)},Wt=async()=>{const e=await fetch(`${ro}/jwt/refresh`,{method:"POST",headers:{Authorization:`Bearer ${localStorage.getItem(d)}`}});if(e.ok){const t=await e.clone().json();if(null==t?void 0:t.access_token)return console.log(`${s}: access token refreshed`),localStorage.setItem(c,t.access_token),!0}return!1},Vt=e=>{window.postMessage({identifier:"unianalytics",authNotebooks:e||[]},window.origin)},Gt=e=>!!(e&&!e.isDisposed&&e.context.isReady&&C.getMetadataComp(e.context.model,b.notebookId)&&C.getMetadataComp(e.context.model,b.cellMapping)),Jt=(e,t)=>!(!e||!t)&&e.length===t.length&&e.every(((e,o)=>e===t[o])),Qt=e=>e.toLocaleString("sv-SE").slice(0,-3),Kt=e=>`${e.getDate().toString().padStart(2,"0")}/${(e.getMonth()+1).toString().padStart(2,"0")} ${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}`,qt=e=>{const[t,o]=(0,f.useState)(""),[n,a]=(0,f.useState)(""),[l,r]=(0,f.useState)(!1),[i,p]=(0,f.useState)({text:"",isSuccess:!1});return w().createElement("div",{className:"dashboard-loginbox-content"},w().createElement(le.Form,null,w().createElement(le.Form.Group,{controlId:"formUsername"},w().createElement(le.Form.Label,null,"Username"),w().createElement(le.Form.Control,{type:"text",value:t,onChange:e=>o(e.target.value),placeholder:"Enter username"})),w().createElement(le.Form.Group,{controlId:"formPassword",className:"dashboard-loginbox-password-group"},w().createElement(le.Form.Label,null,"Password"),w().createElement(le.Form.Control,{type:"password",value:n,onChange:e=>a(e.target.value),placeholder:"Enter password"})),w().createElement(le.Button,{variant:"primary",type:"submit",onClick:()=>{r(!0);const o=t;fetch(`${ro}/jwt/login`,{method:"POST",body:JSON.stringify({username:o,password:n}),headers:{"Content-Type":"application/json"}}).then((async e=>{const t=await e.json();return{responseOk:e.ok,loginJSON:t}})).then((({responseOk:t,loginJSON:n})=>{r(!1),t?(localStorage.setItem(c,n.access_token),localStorage.setItem(d,n.refresh_token),localStorage.setItem(u,o),Ut(n,e.app,e.factory,e.restorer,e.labShell,e.rendermime,e.settings),p({text:"Login successful: dashboards activated.",isSuccess:!0})):p({text:`Login failed: ${n.error||"Unknown reason"}.`,isSuccess:!1})})).catch((e=>{r(!1),console.error(`${s}: Login error, ${e}`),p({text:`${e}`,isSuccess:!1})}))},disabled:!t||!n||l,className:"dashboard-loginbox-btn"},"Log In")),w().createElement("div",{className:"dashboard-loginbox-signup"},w().createElement("a",{href:`${ro}/jwt/signup`,target:"_blank",rel:"noopener noreferrer"},"Not registered? Sign up",w().createElement(Fe.BoxArrowUpRight,{className:"dashboard-loginbox-signup-icon"}))),w().createElement("div",{className:"dashboard-loginbox-current-username"},`Current User: ${localStorage.getItem(u)}`),w().createElement("div",{className:"dashboard-loginbox-response-container"},l?w().createElement("div",{className:"dashboard-loginbox-spinner-container"},w().createElement(le.Spinner,{animation:"border",role:"status",variant:"primary",className:"dashboard-loginbox-spinner"})):w().createElement("div",{className:"dashboard-loginbox-response "+(i.isSuccess?"":"dashboard-loginbox-error-text")},i.text)))};new Lt.Token(`${s}:push-notebook-service`);class Xt{constructor(e){this.panelManager=e}setPanelManager(e){var t;if(this.panelManager!==e){try{null===(t=this.panelManager.websocketManager)||void 0===t||t.closeSocketConnection()}catch(e){console.warn(`${s}: error closing local websocket`,e)}console.log("Dashboard Plugin Using the Push Plugin Panel"),this.panelManager=e}}getPanelManager(){return this.panelManager}async pushCellUpdate(e){var t;const o=null!=e?e:this.panelManager;if(!to)return void console.error("No notebook id found");const n=null===(t=o.panel)||void 0===t?void 0:t.content,a=null==n?void 0:n.activeCell;if(a&&o.panel){const e=null==a?void 0:a.model;if(!e)return void console.error(`${s}: No cell model for active cell`);const t=e;console.log(`${s}: Pushing cell update - cell_id: ${t.id}`);const o={content:{id:t.id,cell_type:t.type,source:t.toJSON().source},action:"update_cell",update_id:crypto.randomUUID()};await this.pushUpdateToStudents(this.panelManager,JSON.stringify(o))}}async pushNotebookUpdate(e){var t;const o=null!=e?e:this.panelManager;if(!to)return void console.error("No notebook id found");const n=null===(t=o.panel)||void 0===t?void 0:t.content;if(n){const t=n.model.toJSON();t&&t.cells&&Array.isArray(t.cells)&&(t.cells=t.cells.map((e=>({...e,id:e.id||e.cell_id,cell_id:e.cell_id||e.id}))));const o={content:t,action:"update_notebook",update_id:crypto.randomUUID()};await this.pushUpdateToStudents(e,JSON.stringify(o))}}async pushUpdateToStudents(e,t){(null!=e?e:this.panelManager).websocketManager?Ft(`${ro}/dashboard/${to}/connectedstudents`).then((e=>e.json())).then((o=>{if(0!==o.length)for(const n of o)e.websocketManager.sendMessageToUser(n,t);else console.log("No connected students")})):console.error("No websocket manager found")}}const Yt={id:`${s}:push-notebook-update-service`,autoStart:!0,optional:[Pt],requires:[x.INotebookTracker,y.ICommandPalette,n.ILabShell],activate:(e,t,o,n,a)=>{console.log(`JupyterLab extension ${s}: pushNotebookUpdate plugins activated!`);const l=null!=a?a:null,r=null!=l?l:new ne,i=!l;if(i)try{$t(e);const t=()=>{const e=n.currentWidget;e&&(e instanceof x.NotebookPanel?r.panel=e:r.panel&&r.panel.isDisposed&&(r.panel=null))};n.currentChanged.connect(t),e.restored.then((()=>{t()}))}catch(e){console.warn(`${s}: failed to wire local PanelManager`,e)}else console.log("Push Plugin using Dashboard plugin panel");const c=new Xt(r);return window.__UNIANALYTICS_PUSH_NOTEBOOK_SERVICE=c,e.restored.then((()=>{e.commands.addCommand(m.pushCellUpdate,{label:"Push the Selected Cell",caption:"Share the selected cell with the connected students",icon:k.shareIcon,isVisible:()=>null!==c.getPanelManager().panel,execute:()=>c.pushCellUpdate(void 0)}),e.contextMenu.addItem({type:"separator",selector:".jp-Notebook"}),e.contextMenu.addItem({command:m.pushCellUpdate,selector:".jp-Cell"}),o.addItem({command:m.pushCellUpdate,category:"Notebook"})})),i&&window.addEventListener("beforeunload",(()=>{var e;null===(e=r.websocketManager)||void 0===e||e.closeSocketConnection()})),c}};class Zt{constructor(){this._registrationStateChanged=new N.Signal(this)}get registrationStateChanged(){return this._registrationStateChanged}}const eo=new Zt;let to=null;function oo(e){to=e}let no=!1;function ao(e){no=e}const lo="http://localhost:1015";let ro=lo,so=lo;const io={id:i,autoStart:!0,requires:[a.IFileBrowserFactory,n.ILayoutRestorer,n.ILabShell,l.IRenderMimeRegistry,r.ISettingRegistry],optional:[],activate:(e,t,o,n,a,l)=>{console.log(`JupyterLab extension ${s} is activated!`);const r="3.1.0",i=e.version.match(/[0-9]+/g);if(i&&((e,t)=>{const o=e.split(/[^0-9]+/).map(Number),n=t.split(/[^0-9]+/).map(Number);for(let e=0;e<Math.min(o.length,n.length);e++){const t=o[e],a=n[e];if(t!==a)return t-a}const a=e.replace(/[0-9]+/g,""),l=t.replace(/[0-9]+/g,"");return a.localeCompare(l)})(e.version,r)>=0){const r=parseInt(i[0]);C.setJupyterVersion(r).then((async()=>{let r,i;if(l)try{[r,i]=await Promise.all([l.load(`${s}:plugin`),l.load(`${s}:endpoint`)]),c(r),r.changed.connect(c),d(i),i.changed.connect(d)}catch(e){console.error(`${s}: Failed to load settings.\n${e}`)}!function(e,t,o,n,a,l){console.log(`JupyterLab extension ${s}: login plugin is activated!`),e.commands.addCommand(m.openLogin,{label:"Login to Access Unianalytics Dashboards",icon:Ae,execute:r=>{(0,y.showDialog)({title:w().createElement("div",{className:"dashboard-loginbox-title-container"},w().createElement("div",{className:"dashboard-loginbox-icon-container"},w().createElement(Ae.react,{className:"dashboard-loginbox-icon"})),w().createElement("div",{className:"dashboard-loginbox-title"},"Login: Unianalytics Dashboards")),body:w().createElement(qt,{app:e,factory:t,restorer:o,labShell:n,rendermime:a,settings:l}),focusNodeSelector:'input[type="text"]',buttons:[{accept:!1,actions:[],ariaLabel:"Close",caption:"",className:"",displayType:"default",iconClass:"",iconLabel:"",label:"Close"}]}).then((e=>{})).catch((e=>console.log(`${s} Error with Login: ${e}`)))}})}(e,t,o,n,a,r),Ft(`${ro}/jwt/check`).then((e=>{if(e.ok)return e.json();throw new Error("Unauthorized user")})).then((l=>{Ut(l,e,t,o,n,a,r)})).catch((e=>{Vt([]),console.log(`${s}: Authentication error, ${e}`)}))}))}else console.log(`${s}: Use a more recent version of JupyterLab (>=${r})`);function c(e){var t;const o=e.composite.commonDashboardSettings;o?pe.setPermission(o.dashboardCollection||!1):pe.setPermission((null===(t=e.default("commonDashboardSettings"))||void 0===t?void 0:t.dashboardCollection)||!1)}function d(e){const t=e.composite.useLocalBackend,o=e.composite.backendEndpoint;t?(ro=lo,so=lo):"string"==typeof o?(ro=o,so=o):(ro=lo,so=lo)}}},co=[io,Yt]},2204:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%272%27 fill=%27%23fff%27/%3e%3c/svg%3e"},9609:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27%2386b7fe%27/%3e%3c/svg%3e"},2469:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27%23fff%27/%3e%3c/svg%3e"},7486:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27rgba%280, 0, 0, 0.25%29%27/%3e%3c/svg%3e"},991:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27rgba%28255, 255, 255, 0.25%29%27/%3e%3c/svg%3e"},4144:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 12 12%27 width=%2712%27 height=%2712%27 fill=%27none%27 stroke=%27%23dc3545%27%3e%3ccircle cx=%276%27 cy=%276%27 r=%274.5%27/%3e%3cpath stroke-linejoin=%27round%27 d=%27M5.8 3.6h.4L6 6.5z%27/%3e%3ccircle cx=%276%27 cy=%278.2%27 r=%27.6%27 fill=%27%23dc3545%27 stroke=%27none%27/%3e%3c/svg%3e"},6254:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23000%27%3e%3cpath d=%27M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z%27/%3e%3c/svg%3e"},5321:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23052c65%27%3e%3cpath fill-rule=%27evenodd%27 d=%27M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e"},3460:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23212529%27%3e%3cpath fill-rule=%27evenodd%27 d=%27M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e"},1281:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%236ea8fe%27%3e%3cpath fill-rule=%27evenodd%27 d=%27M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e"},5647:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23fff%27%3e%3cpath d=%27M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z%27/%3e%3c/svg%3e"},1692:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23fff%27%3e%3cpath d=%27M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e"},6770:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3e%3cpath fill=%27none%27 stroke=%27%23343a40%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%272%27 d=%27m2 5 6 6 6-6%27/%3e%3c/svg%3e"},6711:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3e%3cpath fill=%27none%27 stroke=%27%23dee2e6%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%272%27 d=%27m2 5 6 6 6-6%27/%3e%3c/svg%3e"},8931:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27%3e%3cpath fill=%27none%27 stroke=%27%23fff%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%273%27 d=%27M6 10h8%27/%3e%3c/svg%3e"},6199:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27%3e%3cpath fill=%27none%27 stroke=%27%23fff%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%273%27 d=%27m6 10 3 3 6-6%27/%3e%3c/svg%3e"},2956:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 30 30%27%3e%3cpath stroke=%27rgba%28255, 255, 255, 0.55%29%27 stroke-linecap=%27round%27 stroke-miterlimit=%2710%27 stroke-width=%272%27 d=%27M4 7h22M4 15h22M4 23h22%27/%3e%3c/svg%3e"},2221:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 30 30%27%3e%3cpath stroke=%27rgba%2833, 37, 41, 0.75%29%27 stroke-linecap=%27round%27 stroke-miterlimit=%2710%27 stroke-width=%272%27 d=%27M4 7h22M4 15h22M4 23h22%27/%3e%3c/svg%3e"},5122:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 8 8%27%3e%3cpath fill=%27%23198754%27 d=%27M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z%27/%3e%3c/svg%3e"}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var _JUPYTERLAB;(()=>{"use strict";var e,t,r,a,o,n,i,l,d,f,u,c,s,b,p,h,m,v,y,g,j,w,P,_,k,O,S={7426:(e,t,r)=>{var a={"./index":()=>Promise.all([r.e(39),r.e(29),r.e(686)]).then((()=>()=>r(4434))),"./extension":()=>Promise.all([r.e(39),r.e(29),r.e(686)]).then((()=>()=>r(4434))),"./style":()=>r.e(546).then((()=>()=>r(5546)))},o=(e,t)=>(r.R=t,t=r.o(a,e)?a[e]():Promise.resolve().then((()=>{throw new Error('Module "'+e+'" does not exist in container.')})),r.R=void 0,t),n=(e,t)=>{if(r.S){var a="default",o=r.S[a];if(o&&o!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return r.S[a]=e,r.I(a,t)}};r.d(t,{get:()=>o,init:()=>n})}},E={};function x(e){var t=E[e];if(void 0!==t)return t.exports;var r=E[e]={id:e,exports:{}};return S[e](r,r.exports,x),r.exports}x.m=S,x.c=E,x.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return x.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,x.t=function(r,a){if(1&a&&(r=this(r)),8&a)return r;if("object"==typeof r&&r){if(4&a&&r.__esModule)return r;if(16&a&&"function"==typeof r.then)return r}var o=Object.create(null);x.r(o);var n={};e=e||[null,t({}),t([]),t(t)];for(var i=2&a&&r;"object"==typeof i&&!~e.indexOf(i);i=t(i))Object.getOwnPropertyNames(i).forEach((e=>n[e]=()=>r[e]));return n.default=()=>r,x.d(o,n),o},x.d=(e,t)=>{for(var r in t)x.o(t,r)&&!x.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},x.f={},x.e=e=>Promise.all(Object.keys(x.f).reduce(((t,r)=>(x.f[r](e,t),t)),[])),x.u=e=>e+"."+{10:"1e5c908a94fc4b83c2e5",18:"759fbf2374edc42b5c3e",29:"9b0cb1475dcac2b485f3",39:"5a3b28a79ba693a9b627",211:"583fddc965c583e61532",308:"d9da4ce35f354c6f12e1",373:"37ddee9d229ac254f896",376:"d960746fd943a4ef55b8",426:"a7015f9dfda310972c1b",459:"75a9fe630dfdb00e65b4",533:"f7a454b11ba5cd79dc0c",546:"61a6a427e418e90a1a97",563:"b613f734176cb51510ef",638:"d37271636c4d956096de",686:"bf9cd46d07e4efd4cb75",704:"4e17d862a476ae3df8ae",708:"323c3614d31a5918cfaf",738:"f4338fb8d8276b96c3f3",744:"329dc4d1ed2f5c918266",798:"33a8f0893a66574e9259",817:"6437962faf359015be36",981:"ebb9e1d6122980b5ff0e"}[e]+".js?v="+{10:"1e5c908a94fc4b83c2e5",18:"759fbf2374edc42b5c3e",29:"9b0cb1475dcac2b485f3",39:"5a3b28a79ba693a9b627",211:"583fddc965c583e61532",308:"d9da4ce35f354c6f12e1",373:"37ddee9d229ac254f896",376:"d960746fd943a4ef55b8",426:"a7015f9dfda310972c1b",459:"75a9fe630dfdb00e65b4",533:"f7a454b11ba5cd79dc0c",546:"61a6a427e418e90a1a97",563:"b613f734176cb51510ef",638:"d37271636c4d956096de",686:"bf9cd46d07e4efd4cb75",704:"4e17d862a476ae3df8ae",708:"323c3614d31a5918cfaf",738:"f4338fb8d8276b96c3f3",744:"329dc4d1ed2f5c918266",798:"33a8f0893a66574e9259",817:"6437962faf359015be36",981:"ebb9e1d6122980b5ff0e"}[e],x.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),x.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},a="jupyterlab_unianalytics_dashboard:",x.l=(e,t,o,n)=>{if(r[e])r[e].push(t);else{var i,l;if(void 0!==o)for(var d=document.getElementsByTagName("script"),f=0;f<d.length;f++){var u=d[f];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==a+o){i=u;break}}i||(l=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,x.nc&&i.setAttribute("nonce",x.nc),i.setAttribute("data-webpack",a+o),i.src=e),r[e]=[t];var c=(t,a)=>{i.onerror=i.onload=null,clearTimeout(s);var o=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(a))),t)return t(a)},s=setTimeout(c.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=c.bind(null,i.onerror),i.onload=c.bind(null,i.onload),l&&document.head.appendChild(i)}},x.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{x.S={};var e={},t={};x.I=(r,a)=>{a||(a=[]);var o=t[r];if(o||(o=t[r]={}),!(a.indexOf(o)>=0)){if(a.push(o),e[r])return e[r];x.o(x.S,r)||(x.S[r]={});var n=x.S[r],i="jupyterlab_unianalytics_dashboard",l=(e,t,r,a)=>{var o=n[e]=n[e]||{},l=o[t];(!l||!l.loaded&&(!a!=!l.eager?a:i>l.from))&&(o[t]={get:r,from:i,eager:!!a})},d=[];return"default"===r&&(l("@reduxjs/toolkit","1.9.7",(()=>x.e(426).then((()=>()=>x(8426))))),l("chart.js","4.4.1",(()=>x.e(708).then((()=>()=>x(4708))))),l("jupyterlab_unianalytics_dashboard","5.0.0",(()=>Promise.all([x.e(39),x.e(29),x.e(686)]).then((()=>()=>x(4434))))),l("marked","11.1.1",(()=>x.e(308).then((()=>()=>x(3308))))),l("react-bootstrap-icons","1.10.3",(()=>Promise.all([x.e(744),x.e(29)]).then((()=>()=>x(1744))))),l("react-bootstrap","2.10.0",(()=>Promise.all([x.e(18),x.e(29),x.e(704)]).then((()=>()=>x(1018))))),l("react-chartjs-2","5.2.0",(()=>Promise.all([x.e(29),x.e(459),x.e(563)]).then((()=>()=>x(5376))))),l("react-infinite-scroll-component","6.1.0",(()=>Promise.all([x.e(29),x.e(533)]).then((()=>()=>x(8533))))),l("react-redux","8.1.3",(()=>Promise.all([x.e(981),x.e(29),x.e(704)]).then((()=>()=>x(2981))))),l("socket.io-client","4.7.5",(()=>x.e(817).then((()=>()=>x(4817)))))),e[r]=d.length?Promise.all(d).then((()=>e[r]=1)):1}}})(),(()=>{var e;x.g.importScripts&&(e=x.g.location+"");var t=x.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var a=r.length-1;a>-1&&!e;)e=r[a--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),x.p=e})(),o=e=>{var t=e=>e.split(".").map((e=>+e==e?+e:e)),r=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),a=r[1]?t(r[1]):[];return r[2]&&(a.length++,a.push.apply(a,t(r[2]))),r[3]&&(a.push([]),a.push.apply(a,t(r[3]))),a},n=(e,t)=>{e=o(e),t=o(t);for(var r=0;;){if(r>=e.length)return r<t.length&&"u"!=(typeof t[r])[0];var a=e[r],n=(typeof a)[0];if(r>=t.length)return"u"==n;var i=t[r],l=(typeof i)[0];if(n!=l)return"o"==n&&"n"==l||"s"==l||"u"==n;if("o"!=n&&"u"!=n&&a!=i)return a<i;r++}},i=e=>{var t=e[0],r="";if(1===e.length)return"*";if(t+.5){r+=0==t?">=":-1==t?"<":1==t?"^":2==t?"~":t>0?"=":"!=";for(var a=1,o=1;o<e.length;o++)a--,r+="u"==(typeof(l=e[o]))[0]?"-":(a>0?".":"")+(a=2,l);return r}var n=[];for(o=1;o<e.length;o++){var l=e[o];n.push(0===l?"not("+d()+")":1===l?"("+d()+" || "+d()+")":2===l?n.pop()+" "+n.pop():i(l))}return d();function d(){return n.pop().replace(/^\((.+)\)$/,"$1")}},l=(e,t)=>{if(0 in e){t=o(t);var r=e[0],a=r<0;a&&(r=-r-1);for(var n=0,i=1,d=!0;;i++,n++){var f,u,c=i<e.length?(typeof e[i])[0]:"";if(n>=t.length||"o"==(u=(typeof(f=t[n]))[0]))return!d||("u"==c?i>r&&!a:""==c!=a);if("u"==u){if(!d||"u"!=c)return!1}else if(d)if(c==u)if(i<=r){if(f!=e[i])return!1}else{if(a?f>e[i]:f<e[i])return!1;f!=e[i]&&(d=!1)}else if("s"!=c&&"n"!=c){if(a||i<=r)return!1;d=!1,i--}else{if(i<=r||u<c!=a)return!1;d=!1}else"s"!=c&&"n"!=c&&(d=!1,i--)}}var s=[],b=s.pop.bind(s);for(n=1;n<e.length;n++){var p=e[n];s.push(1==p?b()|b():2==p?b()&b():p?l(p,t):!b())}return!!b()},d=(e,t)=>{var r=x.S[e];if(!r||!x.o(r,t))throw new Error("Shared module "+t+" doesn't exist in shared scope "+e);return r},f=(e,t)=>{var r=e[t];return(t=Object.keys(r).reduce(((e,t)=>!e||n(e,t)?t:e),0))&&r[t]},u=(e,t)=>{var r=e[t];return Object.keys(r).reduce(((e,t)=>!e||!r[e].loaded&&n(e,t)?t:e),0)},c=(e,t,r,a)=>"Unsatisfied version "+r+" from "+(r&&e[t][r].from)+" of shared singleton module "+t+" (required "+i(a)+")",s=(e,t,r,a)=>{var o=u(e,r);return l(a,o)||h(c(e,r,o,a)),v(e[r][o])},b=(e,t,r)=>{var a=e[t];return(t=Object.keys(a).reduce(((e,t)=>!l(r,t)||e&&!n(e,t)?e:t),0))&&a[t]},p=(e,t,r,a)=>{var o=e[r];return"No satisfying version ("+i(a)+") of shared module "+r+" found in shared scope "+t+".\nAvailable versions: "+Object.keys(o).map((e=>e+" from "+o[e].from)).join(", ")},h=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},m=(e,t,r,a)=>{h(p(e,t,r,a))},v=e=>(e.loaded=1,e.get()),g=(y=e=>function(t,r,a,o){var n=x.I(t);return n&&n.then?n.then(e.bind(e,t,x.S[t],r,a,o)):e(t,x.S[t],r,a,o)})(((e,t,r,a)=>(d(e,r),v(b(t,r,a)||m(t,e,r,a)||f(t,r))))),j=y(((e,t,r,a)=>(d(e,r),s(t,0,r,a)))),w=y(((e,t,r,a,o)=>{var n=t&&x.o(t,r)&&b(t,r,a);return n?v(n):o()})),P={},_={6029:()=>j("default","react",[1,18,2,0]),2449:()=>g("default","@jupyterlab/outputarea",[1,4,5,3]),2535:()=>w("default","react-bootstrap-icons",[1,1,10,3],(()=>x.e(744).then((()=>()=>x(1744))))),2779:()=>w("default","marked",[1,11,1,1],(()=>x.e(308).then((()=>()=>x(3308))))),2957:()=>w("default","socket.io-client",[1,4,7,5],(()=>x.e(817).then((()=>()=>x(4817))))),3231:()=>w("default","react-infinite-scroll-component",[1,6,1,0],(()=>x.e(738).then((()=>()=>x(8533))))),3495:()=>j("default","@jupyterlab/apputils",[1,4,6,3]),3748:()=>w("default","@reduxjs/toolkit",[1,1,9,5],(()=>x.e(426).then((()=>()=>x(8426))))),3759:()=>j("default","@jupyterlab/settingregistry",[1,4,5,3]),3767:()=>j("default","@jupyterlab/rendermime",[1,4,5,3]),3966:()=>j("default","@lumino/widgets",[1,2,3,1,,"alpha",1]),4081:()=>j("default","@jupyterlab/codemirror",[1,4,5,3]),4901:()=>j("default","@lumino/signaling",[1,2,0,0]),7286:()=>j("default","@jupyterlab/coreutils",[1,6,5,3]),7631:()=>j("default","@jupyterlab/ui-components",[1,4,5,3]),7717:()=>j("default","@lumino/disposable",[1,2,0,0]),7739:()=>j("default","@jupyterlab/codeeditor",[1,4,5,3]),7760:()=>w("default","react-redux",[1,8,0,5],(()=>Promise.all([x.e(981),x.e(704)]).then((()=>()=>x(2981))))),7885:()=>w("default","react-chartjs-2",[1,5,2,0],(()=>Promise.all([x.e(459),x.e(798)]).then((()=>()=>x(5376))))),7930:()=>j("default","@lumino/coreutils",[1,2,0,0]),7940:()=>j("default","@jupyterlab/filebrowser",[1,4,5,3]),8352:()=>w("default","chart.js",[1,4,4,1],(()=>x.e(708).then((()=>()=>x(4708))))),8412:()=>j("default","@jupyterlab/notebook",[1,4,5,3]),8559:()=>w("default","react-bootstrap",[1,2,10,0],(()=>Promise.all([x.e(18),x.e(704)]).then((()=>()=>x(1018))))),9439:()=>j("default","@jupyterlab/application",[1,4,5,3]),7704:()=>j("default","react-dom",[1,18,2,0]),6459:()=>w("default","chart.js",[1,4,1,1],(()=>x.e(708).then((()=>()=>x(4708))))),1373:()=>j("default","@codemirror/language",[1,6,0,0]),6211:()=>j("default","@codemirror/view",[1,6,9,6]),851:()=>j("default","@lezer/common",[1,1,0,0]),7138:()=>j("default","@lezer/highlight",[1,1,0,0]),8204:()=>j("default","@codemirror/state",[1,6,2,0])},k={29:[6029],211:[6211],373:[1373],376:[851,7138,8204],459:[6459],686:[2449,2535,2779,2957,3231,3495,3748,3759,3767,3966,4081,4901,7286,7631,7717,7739,7760,7885,7930,7940,8352,8412,8559,9439],704:[7704]},O={},x.f.consumes=(e,t)=>{x.o(k,e)&&k[e].forEach((e=>{if(x.o(P,e))return t.push(P[e]);if(!O[e]){var r=t=>{P[e]=0,x.m[e]=r=>{delete x.c[e],r.exports=t()}};O[e]=!0;var a=t=>{delete P[e],x.m[e]=r=>{throw delete x.c[e],t}};try{var o=_[e]();o.then?t.push(P[e]=o.then(r).catch(a)):r(o)}catch(e){a(e)}}}))},(()=>{x.b=document.baseURI||self.location.href;var e={217:0};x.f.j=(t,r)=>{var a=x.o(e,t)?e[t]:void 0;if(0!==a)if(a)r.push(a[2]);else if(/^(37[36]|211|29|459|704)$/.test(t))e[t]=0;else{var o=new Promise(((r,o)=>a=e[t]=[r,o]));r.push(a[2]=o);var n=x.p+x.u(t),i=new Error;x.l(n,(r=>{if(x.o(e,t)&&(0!==(a=e[t])&&(e[t]=void 0),a)){var o=r&&("load"===r.type?"missing":r.type),n=r&&r.target&&r.target.src;i.message="Loading chunk "+t+" failed.\n("+o+": "+n+")",i.name="ChunkLoadError",i.type=o,i.request=n,a[1](i)}}),"chunk-"+t,t)}};var t=(t,r)=>{var a,o,[n,i,l]=r,d=0;if(n.some((t=>0!==e[t]))){for(a in i)x.o(i,a)&&(x.m[a]=i[a]);l&&l(x)}for(t&&t(r);d<n.length;d++)o=n[d],x.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self.webpackChunkjupyterlab_unianalytics_dashboard=self.webpackChunkjupyterlab_unianalytics_dashboard||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),x.nc=void 0;var T=x(7426);(_JUPYTERLAB=void 0===_JUPYTERLAB?{}:_JUPYTERLAB).jupyterlab_unianalytics_dashboard=T})();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: jupyterlab_unianalytics_dashboard
|
|
3
|
-
Version:
|
|
3
|
+
Version: 5.0.0
|
|
4
4
|
Dynamic: Keywords
|
|
5
5
|
Summary: A JupyterLab dashboard extension to visualize data from students.
|
|
6
6
|
Project-URL: Homepage, https://github.com/chili-epfl/jupyter-analytics-dashboard
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
jupyterlab_unianalytics_dashboard/__init__.py,sha256=Za7P6E6Jv74S8VEb4YbFMfhrdWLw9aBjmLGwQg7UszU,1184
|
|
2
|
+
jupyterlab_unianalytics_dashboard/_version.py,sha256=XIJQfJQe4phv44X3E2HdRw0DsClov3-xLDvN-ltqPug,171
|
|
3
|
+
jupyterlab_unianalytics_dashboard/handlers.py,sha256=-3HQHnkvyG7YAs9q6BDkC1oL1QMJ4zIs9v5j5PuNaNg,1677
|
|
4
|
+
jupyterlab_unianalytics_dashboard/tests/__init__.py,sha256=buA7EWWBnEQOljAcEsF8zyfrdTu9B93Khlk10h88Uu0,63
|
|
5
|
+
jupyterlab_unianalytics_dashboard/tests/test_handlers.py,sha256=kEg161G0pn_N7ghOphUc_FQHb1O7v6-FzxjPfgcOSzo,176
|
|
6
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/etc/jupyter/jupyter_server_config.d/jupyterlab_unianalytics_dashboard.json,sha256=FYXMI4pI920t2RK3w0RFVwhs0ymqABl4WwPE9KVjAOc,108
|
|
7
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/package.json,sha256=Co8umrOTsPP2zqWt0srXpyr28_jcsv5O9g4JVK1GoNU,6678
|
|
8
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/schemas/jupyterlab_unianalytics_dashboard/endpoint.json,sha256=0nq-MWVjckwP5ddK4dQxMZJTFkug-1lZwQuw8WWDbcs,724
|
|
9
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/schemas/jupyterlab_unianalytics_dashboard/package.json.orig,sha256=6c3pvaUP5Isl5-zp3Sq40BFp0ECL4ObTLQrRGMExpjc,7570
|
|
10
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/schemas/jupyterlab_unianalytics_dashboard/plugin.json,sha256=dLRO78tDnd45DUKsCmij83AFY_4F9CaL6gT61YnlDz0,1895
|
|
11
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/10.1e5c908a94fc4b83c2e5.js,sha256=HlyQipT8S4PC5ZaZiR4jl8gvs1l0EjP2CAABadOryzA,3272
|
|
12
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/18.759fbf2374edc42b5c3e.js,sha256=OoCQg2OYr0cRReBXDCWZGvXzQuaf4ACT2O75qlyS9pk,119059
|
|
13
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/18.759fbf2374edc42b5c3e.js.LICENSE.txt,sha256=LGdwyBXWbtsopwVyjsXCIwoc-zj70yxAOCOR7b1bAc4,371
|
|
14
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/308.d9da4ce35f354c6f12e1.js,sha256=2dpM4181TG8S4X9h1smTZxuEj_36_9dnyXP9WAnDc6U,34889
|
|
15
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/39.5a3b28a79ba693a9b627.js,sha256=Wjsop5umk6m2JxM1X-FUHXGjLx9VerTKARofOQiIC5Y,232611
|
|
16
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/426.a7015f9dfda310972c1b.js,sha256=pwFfnf2jEJcsG33rpOBqjadU2yl8Kjd4VKHiJBS1_Wg,44909
|
|
17
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/533.f7a454b11ba5cd79dc0c.js,sha256=96RUsRulzXncDHnRMeE-83L9WkHjRyeskAjMBXcxM9U,7674
|
|
18
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/546.61a6a427e418e90a1a97.js,sha256=YaakJ-QY6QoalzwaIT_z7Ay16xnRBj9Y5Xo_40yKUa8,26401
|
|
19
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/563.b613f734176cb51510ef.js,sha256=thP3NBdstRUQ7z0MMVTt-dRX0zdI1U6SizErxsB6vc8,2553
|
|
20
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/638.d37271636c4d956096de.js,sha256=03JxY2xNlWCW3tFQbU-MnQvO_hqaV2wVLdTT5xK5cvA,211595
|
|
21
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/686.bf9cd46d07e4efd4cb75.js,sha256=v5zUbQfk79TLdWNsYX-A9qUKhSXzhIRC3Sve23seRcE,114695
|
|
22
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/708.323c3614d31a5918cfaf.js,sha256=k5bjg7Tc0b_QeKLqQ3GySYfe-fD_Cmk2MrJw6Dy2hdA,202771
|
|
23
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/708.323c3614d31a5918cfaf.js.LICENSE.txt,sha256=xIUBoDm2Q1zieFkjrEGq0jGXVbMtAPXzrFW0MnO1d1A,257
|
|
24
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/738.f4338fb8d8276b96c3f3.js,sha256=9DOPuNgna5bD8wIHhr93Z5uK0M47OPhsUnVvDiLLrsg,7674
|
|
25
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/744.329dc4d1ed2f5c918266.js,sha256=Mp3E0e0vXJGCZhMtTLSgKoSM-NGSX33ZbxwqSwSQEM4,3046069
|
|
26
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/798.33a8f0893a66574e9259.js,sha256=M6jwiTpmV06SWWqqAniO0FVkkVtJBOINHU5raofwhrU,2553
|
|
27
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/817.6437962faf359015be36.js,sha256=ZDeWL681kBW-Nh_mO8SLNp7Ubys4AvSMEC4MT7tL4f0,40299
|
|
28
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/981.ebb9e1d6122980b5ff0e.js,sha256=b3dzzmlqyg5AOql0QCQyFAvZdTOXFSrKNiTWaIYNJf0,14181
|
|
29
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/981.ebb9e1d6122980b5ff0e.js.LICENSE.txt,sha256=Al4BU9vlGm0hvL2QgWwO5THo2WCGIoDqSdIpipPsBSw,1023
|
|
30
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/remoteEntry.8aa4bf574e381fd9c607.js,sha256=iqS_V044H9nGB7Z5tMEAzM18_u2mcRX5wfLXhmNN4lk,11838
|
|
31
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/style.js,sha256=rhrGR_lSZihMhH1ui5EcIiqrutyovwjkTWTs-UdKcws,176
|
|
32
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/third-party-licenses.json,sha256=nLcszpHEN1Krc4Al2MJvvhJp9HdL9gh9UL2eTvhqtiQ,74820
|
|
33
|
+
jupyterlab_unianalytics_dashboard-5.0.0.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/install.json,sha256=LnBFne2_G6SmJApbmJhffpyKMU9sTqEnMQP67RrBoxw,227
|
|
34
|
+
jupyterlab_unianalytics_dashboard-5.0.0.dist-info/METADATA,sha256=t5LHTKypAlygpDPNwfECOaR3Yy7ja1FhzeRd_RBPhlQ,9102
|
|
35
|
+
jupyterlab_unianalytics_dashboard-5.0.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
36
|
+
jupyterlab_unianalytics_dashboard-5.0.0.dist-info/licenses/LICENSE,sha256=Sb-joYLOnOQ8lowGMAF92ZpW1tyMcQlo8BLGKQlIFws,1078
|
|
37
|
+
jupyterlab_unianalytics_dashboard-5.0.0.dist-info/RECORD,,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunkjupyterlab_unianalytics_dashboard=self.webpackChunkjupyterlab_unianalytics_dashboard||[]).push([[995],{1505:(e,t,o)=>{o.r(t),o.d(t,{ARE_DASHBOARD_PLUGINS_ACTIVATED:()=>Kt,AuthSignal:()=>Wt,BACKEND_API_URL:()=>Yt,CURRENT_NOTEBOOK_ID:()=>Jt,WEBSOCKET_API_URL:()=>Zt,authSignal:()=>Gt,default:()=>to,setCurrentNotebookId:()=>Qt,setDashboardPluginsActivated:()=>Xt});var n=o(5999),a=o(5297),s=o(9158),l=o(1793);o(4039);const r="jupyterlab_unianalytics_dashboard",i=`${r}:plugin`,c=`${r}/access_token`,d=`${r}/refresh_token`,h=`${r}/dashboard_username`,u="unianalytics-page-container";var m;!function(e){e.dashboardOpenDashboardPlayback=`${r}:dashboard-open-playback`,e.dashboardScrollToCell=`${r}:dashboard-scroll-to-cell`,e.uploadNotebook=`${r}:dashboard-upload-notebook`,e.copyDownloadLink=`${r}:dashboard-copy-download-link`,e.openLogin=`${r}:dashboard-open-login`,e.pushCellUpdate=`${r}:dashboard-push-cell-update`,e.pushNotebookUpdate=`${r}:dashboard-push-notebook-update`}(m||(m={}));const p='.jp-DirListing-item[data-file-type="notebook"]',g="unianalytics";var b,C;!function(e){e.notebookId=`${g}_notebook_id`,e.cellMapping=`${g}_cell_mapping`}(b||(b={}));class v{static async setJupyterVersion(e){v._jupyterVersion=e,await v._setEditorLanguageRegistry(),await v._asyncImports()}static async _setEditorLanguageRegistry(){if(4===v._jupyterVersion){const{StreamLanguage:e}=await o.e(373).then(o.t.bind(o,1373,23)),{EditorLanguageRegistry:t,parseMathIPython:n}=await Promise.resolve().then(o.t.bind(o,8025,23)),a=new t;t.getDefaultLanguages().forEach((e=>{a.addLanguage(e)})),a.addLanguage({name:"ipythongfm",mime:"text/x-ipythongfm",load:async()=>{const[t,s]=await Promise.all([Promise.all([o.e(638),o.e(211),o.e(373),o.e(376)]).then(o.bind(o,8638)),o.e(10).then(o.bind(o,8010))]);return t.markdown({base:t.markdownLanguage,codeLanguages:e=>a.findBest(e),extensions:[n(e.define(s.stexMath).parser)]})}}),v._editorDefaultLanguages=a}}static async _asyncImports(){if(4===v._jupyterVersion){const{EditorView:e}=await o.e(211).then(o.t.bind(o,6211,23));this._EditorView=e;const{jupyterTheme:t}=await Promise.resolve().then(o.t.bind(o,8025,23));this._jupyterTheme=t}}static checkJupyterVersionSet(){if(null===v._jupyterVersion)throw new Error("JupyterLab version is not set in CompatibilityManager before trying to access it.")}static observeEditorVisibility(e){return 3===v._jupyterVersion?new IntersectionObserver((t=>{t[0].isIntersecting&&e.refresh()}),{root:null,threshold:.5}):null}}C=v,v._jupyterVersion=null,v._editorDefaultLanguages=void 0,v._EditorView=void 0,v._jupyterTheme=void 0,v.getMetadataComp=(e,t)=>{var o;return v.checkJupyterVersionSet(),4===v._jupyterVersion?null==e?void 0:e.getMetadata(t):null===(o=null==e?void 0:e.metadata)||void 0===o?void 0:o.get(t)},v.setMetadataComp=(e,t,o)=>{var n;v.checkJupyterVersionSet(),4===v._jupyterVersion?null==e||e.setMetadata(t,o):null===(n=null==e?void 0:e.metadata)||void 0===n||n.set(t,o)},v.deleteMetadataComp=(e,t)=>{var o;return v.checkJupyterVersionSet(),4===v._jupyterVersion?null==e?void 0:e.deleteMetadata(t):null===(o=null==e?void 0:e.metadata)||void 0===o?void 0:o.delete(t)},v.getFileComp=e=>{var t;v.checkJupyterVersionSet();const o=null===(t=e.tracker.currentWidget)||void 0===t?void 0:t.selectedItems().next();return 4===v._jupyterVersion?null==o?void 0:o.value:o},v.getCellsArrComp=e=>(v.checkJupyterVersionSet(),e?Array.from({length:e.length},((t,o)=>e.get(o))):null),v.getCodeMirrorOptionsComp=()=>(v.checkJupyterVersionSet(),4===v._jupyterVersion?{extensions:[C._jupyterTheme,C._EditorView.lineWrapping,C._EditorView.editable.of(!1)],languages:v._editorDefaultLanguages}:{config:{readOnly:!0}}),v.getNextWidgetValueComp=e=>{var t;return v.checkJupyterVersionSet(),4===v._jupyterVersion?null===(t=e.next())||void 0===t?void 0:t.value:e.next()};var w=o(6029),k=o.n(w),_=o(649),f=o(2691);const y=e=>{const[t,o]=(0,w.useState)(!1);return k().createElement("div",null,k().createElement("p",null,"Successfully uploaded, can be downloaded accessing:"),k().createElement("div",{className:"unianalytics-link-container"},k().createElement("div",{className:"unianalytics-link"},e.url),k().createElement("div",{className:"unianalytics-link-button-container"},k().createElement("button",{className:"unianalytics-link-button",onClick:()=>{navigator.clipboard.writeText(e.url).then((()=>{o(!0)})).catch((e=>{console.error(`${r}: Error copying to clipboard: `,e)}))}},t?k().createElement(_.checkIcon.react,null):k().createElement(_.copyIcon.react,null)))))};var E=o(630),S=o(4882);const x=new _.LabIcon({name:`${r}:visu-icon`,svgstr:'<svg xmlns="http://www.w3.org/2000/svg" width="801px" height="845px" viewBox="0 0 801 845">\n<path xmlns="http://www.w3.org/2000/svg" fill="#616161" class="jp-custom-icon jp-icon3 jp-icon-selectable" \n\td="\nM387.000000,138.000000 \n\tC498.142059,138.000015 608.784363,138.106552 719.425842,137.852219 \n\tC731.901794,137.823547 741.405090,147.216324 741.147522,159.494492 \n\tC740.644409,183.478592 741.009399,207.480728 740.995667,231.475388 \n\tC740.988647,243.724152 732.716797,251.995575 720.458984,251.995956 \n\tC547.497437,252.001495 374.535889,252.001434 201.574356,251.996124 \n\tC189.289490,251.995743 181.011719,243.747238 181.004547,231.508698 \n\tC180.990280,207.180771 180.990768,182.852859 181.004318,158.524933 \n\tC181.011139,146.276291 189.283295,138.005981 201.540726,138.004242 \n\tC263.193817,137.995529 324.846924,138.000107 387.000000,138.000000 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" fill="#616161" class="jp-custom-icon jp-icon3 jp-icon-selectable" \n\td="\nM585.000000,602.000000 \n\tC584.999939,619.325134 584.662598,636.159729 585.135315,652.971619 \n\tC585.389893,662.026428 574.929565,672.140991 566.068176,672.127258 \n\tC443.961212,671.938232 321.853912,672.004211 199.746674,671.990967 \n\tC189.901947,671.989868 181.021255,663.118469 181.010071,653.290161 \n\tC180.981430,628.135742 181.228653,602.978149 180.877518,577.828613 \n\tC180.753326,568.934387 190.961166,558.888672 199.629715,558.899292 \n\tC321.570190,559.048645 443.510895,558.993164 565.451538,559.013611 \n\tC576.357910,559.015442 584.922241,567.620361 584.989990,578.511169 \n\tC585.037720,586.173828 584.999756,593.837036 585.000000,602.000000 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" fill="#616161" class="jp-custom-icon jp-icon3 jp-icon-selectable" \n\td="\nM88.108398,89.952209 \n\tC98.405724,110.302505 108.714127,130.647202 118.993515,151.006561 \n\tC122.027649,157.015930 124.979767,163.066742 128.341644,169.849442 \n\tC118.648453,169.849442 109.747803,169.849442 100.429153,169.849442 \n\tC100.429153,362.281067 100.429153,554.170410 100.429153,746.530701 \n\tC277.650726,746.530701 454.991821,746.530701 632.848511,746.530701 \n\tC632.848511,737.834412 632.848511,729.237061 632.848511,719.024597 \n\tC661.517517,733.293213 689.138123,747.040100 718.055725,761.432434 \n\tC689.538452,775.702026 661.900940,789.531433 633.221680,803.882141 \n\tC633.221680,794.086548 633.221680,785.407837 633.221680,775.998657 \n\tC630.080139,775.998657 627.647522,775.998657 625.214905,775.998657 \n\tC446.394989,775.998535 267.575104,775.987793 88.755196,776.036011 \n\tC81.436424,776.037964 75.688042,773.737122 72.946358,766.585999 \n\tC72.095207,764.365967 72.036018,761.746521 72.035538,759.309814 \n\tC71.996758,565.657715 71.999886,372.005585 71.999870,178.353455 \n\tC71.999870,175.868805 71.999863,173.384155 71.999863,169.951614 \n\tC63.762573,169.951614 55.847210,169.951614 47.537605,169.537201 \n\tC47.694538,167.563828 48.088642,165.926636 48.820351,164.457596 \n\tC60.280804,141.448654 71.741646,118.439545 83.350739,95.505569 \n\tC84.420113,93.392990 86.498528,91.791183 88.108398,89.952209 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" fill="#616161" class="jp-custom-icon jp-icon3 jp-icon-selectable" \n\td="\nM401.000000,462.000000 \n\tC334.043701,462.000031 267.586212,461.806152 201.132416,462.212341 \n\tC191.340515,462.272186 180.483932,451.985443 180.776566,441.675262 \n\tC181.470917,417.211090 181.309845,392.707855 180.840012,368.233002 \n\tC180.664536,359.091675 191.110733,348.815643 200.221436,348.846802 \n\tC278.335815,349.114105 356.451508,348.995880 434.566803,349.004578 \n\tC446.758179,349.005951 454.990509,357.324249 454.996460,369.619904 \n\tC455.008209,393.937256 454.656525,418.261902 455.175049,442.568207 \n\tC455.372375,451.815918 444.949646,462.702484 435.468567,462.153870 \n\tC424.180542,461.500610 412.825836,462.000000 401.000000,462.000000 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" fill="#616161" class="jp-custom-icon jp-icon3 jp-icon-selectable" \n\td="\nM88.048347,89.607422 \n\tC86.498528,91.791183 84.420113,93.392990 83.350739,95.505569 \n\tC71.741646,118.439545 60.280804,141.448654 48.820351,164.457596 \n\tC48.088642,165.926636 47.694538,167.563828 47.072289,169.478149 \n\tC46.205418,169.833496 45.409630,169.833496 43.604004,169.833496 \n\tC57.749477,141.531204 71.589005,113.841034 85.790382,85.426895 \n\tC86.780373,87.154594 87.384331,88.208618 88.048347,89.607422 \nz"/>\n</svg>'}),N=new _.LabIcon({name:`${r}:analytics-replay-icon`,svgstr:'<svg xmlns="http://www.w3.org/2000/svg" width="801px" height="845px" viewBox="0 0 801 845">\n<path xmlns="http://www.w3.org/2000/svg" class="jp-custom-icon jp-icon3 jp-icon-selectable" fill="#616161" \n\td="\nM465.000000,137.000000 \n\tC550.147888,137.000031 634.796204,137.135956 719.443115,136.850784 \n\tC731.874146,136.808899 741.408020,146.187546 741.148132,158.511917 \n\tC740.642395,182.495926 741.009705,206.498123 740.995605,230.492798 \n\tC740.988403,242.737381 732.714661,250.995651 720.441528,250.996048 \n\tC547.479980,251.001465 374.518402,251.001480 201.556839,250.996048 \n\tC189.284561,250.995667 181.011414,242.736694 181.004410,230.491180 \n\tC180.990524,206.163254 180.990494,181.835327 181.004410,157.507401 \n\tC181.011429,145.262772 189.285263,137.005096 201.558258,137.004089 \n\tC289.205505,136.996857 376.852753,137.000092 465.000000,137.000000 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" class="jp-custom-icon jp-icon3 jp-icon-selectable" fill="#616161" \n\td="\nM635.148926,720.089355 \n\tC662.544739,733.712830 689.585266,747.259888 717.960327,761.475464 \n\tC689.524719,775.703430 661.804504,789.573425 633.158691,803.906555 \n\tC633.158691,794.057861 633.158691,785.472473 633.158691,775.998657 \n\tC630.247986,775.998657 627.834717,775.998657 625.421509,775.998657 \n\tC446.590027,775.998535 267.758545,775.986877 88.927094,776.039978 \n\tC81.632454,776.042114 75.823845,773.875000 73.007057,766.744446 \n\tC72.134315,764.535095 72.038582,761.913086 72.038055,759.479919 \n\tC71.996544,565.648621 71.999878,371.817291 71.999847,177.985962 \n\tC71.999840,175.530502 71.999847,173.075027 71.999847,170.132675 \n\tC62.473114,170.132675 53.538857,170.132675 43.464531,170.132675 \n\tC57.739803,141.563171 71.583488,113.857414 85.991348,85.022568 \n\tC100.325996,113.683899 114.169044,141.362305 128.404572,169.825470 \n\tC118.663963,169.825470 109.765915,169.825470 100.439240,169.825470 \n\tC100.439240,362.269653 100.439240,554.167786 100.439240,746.533813 \n\tC277.665100,746.533813 455.014313,746.533813 633.001404,746.533813 \n\tC633.001404,738.783020 632.924316,731.166138 633.081543,723.554016 \n\tC633.106140,722.362305 634.196167,721.192627 635.148926,720.089355 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" class="jp-custom-icon jp-icon3 jp-icon-selectable" fill="#616161" \n\td="\nM463.795166,663.684082 \n\tC458.944733,669.057251 453.354919,671.110291 446.353668,671.097351 \n\tC364.544098,670.945618 282.733490,670.850952 200.925110,671.198853 \n\tC191.268799,671.239868 180.533325,660.920715 180.790894,650.957153 \n\tC181.427948,626.314026 181.262314,601.639160 180.862076,576.986084 \n\tC180.716492,568.018616 191.031570,557.844238 199.978745,557.868408 \n\tC282.621094,558.091919 365.264313,557.994446 447.907257,558.007080 \n\tC459.506805,558.008850 467.978638,566.433594 467.991608,577.972778 \n\tC468.018402,601.799255 467.876343,625.626953 468.096619,649.451355 \n\tC468.145020,654.685852 466.992889,659.222717 463.795166,663.684082 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" class="jp-custom-icon jp-icon3 jp-icon-selectable" fill="#616161" \n\td="\nM557.000000,367.000000 \n\tC556.999878,427.464691 556.982544,487.429382 557.045776,547.393982 \n\tC557.049255,550.719543 557.078552,554.505432 553.650879,555.378540 \n\tC550.837891,556.095093 546.851746,555.555786 544.433716,553.972473 \n\tC506.113861,528.881958 467.962555,503.533997 429.774536,478.242218 \n\tC415.618622,468.866821 401.455353,459.502563 387.319794,450.096619 \n\tC381.033081,445.913391 380.988831,440.087341 387.222076,435.936890 \n\tC426.457855,409.811432 465.689392,383.679504 504.966309,357.616028 \n\tC518.141479,348.873199 531.337463,340.149567 544.790222,331.848694 \n\tC547.199219,330.362274 551.254211,330.038330 553.899048,330.988129 \n\tC555.559692,331.584442 556.774353,335.530975 556.863098,338.021729 \n\tC557.200989,347.504089 556.999756,357.005615 557.000000,367.000000 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" class="jp-custom-icon jp-icon3 jp-icon-selectable" fill="#616161" \n\td="\nM662.999878,373.002136 \n\tC684.378784,358.950073 705.376892,344.957733 726.473572,331.115723 \n\tC731.136841,328.056000 738.202637,330.252441 738.172729,337.496490 \n\tC737.882996,407.806915 738.031677,478.119171 737.858948,548.430359 \n\tC737.853027,550.836487 736.303223,554.662598 734.552917,555.299866 \n\tC732.057861,556.208313 728.103699,555.703186 725.818054,554.206116 \n\tC687.347046,529.008789 649.040222,503.560883 610.693237,478.174072 \n\tC596.525146,468.794342 582.332336,459.451782 568.181335,450.046326 \n\tC561.987366,445.929535 562.066284,440.056030 568.361389,435.876099 \n\tC598.986938,415.540466 629.630798,395.232300 660.262817,374.906281 \n\tC661.091248,374.356567 661.858765,373.714844 662.999878,373.002136 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" class="jp-custom-icon jp-icon3 jp-icon-selectable" fill="#616161" \n\td="\nM345.865936,362.817200 \n\tC345.963379,389.902039 346.020630,416.563477 345.975037,443.224792 \n\tC345.960510,451.719543 336.809052,460.960968 328.346283,460.971985 \n\tC285.187714,461.028076 242.029007,461.022461 198.870422,460.978516 \n\tC190.134705,460.969635 181.033173,451.740753 181.017441,442.941589 \n\tC180.971573,417.279785 180.967712,391.617798 181.019791,365.955994 \n\tC181.037552,357.196228 190.207504,348.027222 198.972824,348.019165 \n\tC241.964783,347.979645 284.956940,347.947144 327.948639,348.056610 \n\tC334.781342,348.074005 339.684326,351.915222 343.185669,357.593597 \n\tC344.139221,359.140137 344.923798,360.790863 345.865936,362.817200 \nz"/>\n</svg>'}),I=new _.LabIcon({name:`${r}:analytics-login-icon`,svgstr:'<svg xmlns="http://www.w3.org/2000/svg" width="801px" height="845px" viewBox="0 0 801 845">\n<path xmlns="http://www.w3.org/2000/svg" fill="#616161" class="jp-custom-icon jp-icon3 jp-icon-selectable" \n\td="\nM738.000000,599.000000 \n\tC737.999878,619.328857 738.009277,639.157654 737.994812,658.986511 \n\tC737.989014,666.934814 733.986572,670.993347 726.122437,670.994324 \n\tC653.972168,671.003296 581.821899,671.004211 509.671600,670.992310 \n\tC502.160278,670.991089 498.008820,666.818481 498.007507,659.276550 \n\tC497.995880,592.625000 497.998016,525.973511 498.003967,459.321991 \n\tC498.004730,450.822723 501.906342,447.017944 510.571411,447.000946 \n\tC513.062195,446.996063 515.552979,447.000214 518.680237,447.000214 \n\tC518.796387,444.999603 518.982727,443.253784 518.985718,441.507599 \n\tC519.010254,427.344208 518.672607,413.171631 519.066162,399.019135 \n\tC519.998840,365.477570 532.933105,337.602509 559.186768,316.270508 \n\tC574.191284,304.078918 591.182678,297.275513 610.632568,295.860992 \n\tC636.322754,293.992645 658.657410,301.480255 678.315552,317.789124 \n\tC698.896729,334.863831 711.618042,356.662292 714.768921,383.084930 \n\tC716.823181,400.311066 716.366150,417.838593 716.979919,435.233063 \n\tC717.108276,438.871582 716.998535,442.518494 716.998535,447.001343 \n\tC720.472961,447.001343 723.562073,446.978119 726.650757,447.005981 \n\tC733.789185,447.070374 737.990417,451.305908 737.992493,458.531281 \n\tC738.006104,505.187531 737.999756,551.843750 738.000000,599.000000 \nM686.169434,386.321167 \n\tC684.202209,372.874786 678.159302,361.412323 669.619812,350.970001 \n\tC656.586304,335.032257 639.597351,327.122864 619.408630,326.113678 \n\tC607.678467,325.527313 596.512085,328.608551 586.218628,334.382050 \n\tC562.178833,347.865814 549.929749,368.957886 548.176208,395.949982 \n\tC547.195801,411.041962 547.989929,426.249786 548.011963,441.405396 \n\tC548.014526,443.160858 548.194458,444.916016 548.289307,446.620117 \n\tC595.092957,446.620117 641.302185,446.620117 688.661255,446.620117 \n\tC687.953979,426.508026 687.261108,406.805328 686.169434,386.321167 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" fill="#616161" class="jp-custom-icon jp-icon3 jp-icon-selectable" \n\td="\nM445.000000,137.000000 \n\tC536.813049,137.000015 628.126404,137.126938 719.438660,136.851227 \n\tC731.881165,136.813644 741.407166,146.194763 741.147888,158.507431 \n\tC740.642883,182.491470 741.009644,206.493652 740.995605,230.488327 \n\tC740.988464,242.735672 732.716858,250.995651 720.446045,250.996033 \n\tC547.484497,251.001495 374.522919,251.001450 201.561340,250.996048 \n\tC189.286880,250.995667 181.011475,242.738358 181.004440,230.495682 \n\tC180.990463,206.167755 180.990570,181.839828 181.004395,157.511902 \n\tC181.011368,145.264450 189.282990,137.005264 201.553741,137.004120 \n\tC282.535828,136.996597 363.517914,137.000092 445.000000,137.000000 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" fill="#616161" class="jp-custom-icon jp-icon3 jp-icon-selectable" \n\td="\nM486.000000,775.998657 \n\tC353.514160,775.998657 221.528183,775.927307 89.542709,776.146667 \n\tC79.949707,776.162598 71.798676,770.599548 71.814911,758.597900 \n\tC72.076706,565.119019 71.999863,371.639648 71.999847,178.160385 \n\tC71.999847,175.691223 71.999847,173.222061 71.999847,170.227814 \n\tC62.611301,170.227814 53.688507,170.227814 43.427563,170.227814 \n\tC57.732803,141.585114 71.557716,113.904144 85.980057,85.026985 \n\tC100.277077,113.596474 114.120583,141.259720 128.424072,169.842133 \n\tC118.648087,169.842133 109.646706,169.842133 100.332687,169.842133 \n\tC100.332687,362.470093 100.332687,554.354919 100.332687,746.620605 \n\tC277.708801,746.620605 454.928070,746.620605 632.829712,746.620605 \n\tC632.829712,737.757935 632.829712,728.888367 632.829712,718.974915 \n\tC661.407043,733.216614 689.020264,746.977905 718.028381,761.434326 \n\tC689.544922,775.690369 661.832214,789.560608 633.203613,803.889282 \n\tC633.203613,794.085144 633.203613,785.506958 633.203613,775.998657 \n\tC583.961853,775.998657 535.230896,775.998657 486.000000,775.998657 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" fill="#616161" class="jp-custom-icon jp-icon3 jp-icon-selectable" \n\td="\nM189.462997,561.267212 \n\tC194.206940,560.057251 198.622803,558.142334 203.043198,558.131836 \n\tC279.851929,557.948914 356.661804,558.147339 433.469818,557.850342 \n\tC445.825714,557.802551 455.411530,567.154968 455.149750,579.537415 \n\tC454.639221,603.685669 454.733429,627.856812 455.137848,652.009094 \n\tC455.288208,660.987854 444.963867,671.157593 436.026642,671.131714 \n\tC357.385376,670.904053 278.742828,670.894165 200.101700,671.145691 \n\tC191.189301,671.174194 180.634293,660.999329 180.833405,651.636475 \n\tC181.336334,627.987915 181.235504,604.317871 180.868591,580.664307 \n\tC180.744949,572.694214 183.081192,566.437134 189.462997,561.267212 \nz"/>\n<path xmlns="http://www.w3.org/2000/svg" fill="#616161" class="jp-custom-icon jp-icon3 jp-icon-selectable" \n\td="\nM242.000000,461.000000 \n\tC227.511383,460.999695 213.522690,461.030701 199.534195,460.988190 \n\tC190.073975,460.959442 181.029373,451.998047 181.014694,442.586761 \n\tC180.974960,417.107574 180.966629,391.628235 181.020004,366.149078 \n\tC181.039078,357.047943 190.144424,348.021454 199.298752,348.016388 \n\tC254.420502,347.985992 309.542297,347.981476 364.664093,348.018463 \n\tC375.257812,348.025574 383.952515,356.668701 383.978577,367.214142 \n\tC384.040710,392.360168 384.027405,417.506531 383.984039,442.652618 \n\tC383.967834,452.056519 374.905334,460.982574 365.399902,460.988464 \n\tC324.433258,461.013885 283.466644,460.999725 242.000000,461.000000 \nz"/>\n</svg>'}),D=new _.LabIcon({name:`${r}:hide-icon`,svgstr:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-eye-slash-fill" viewBox="0 0 16 16">\n <path d="m10.79 12.912-1.614-1.615a3.5 3.5 0 0 1-4.474-4.474l-2.06-2.06C.938 6.278 0 8 0 8s3 5.5 8 5.5a7.029 7.029 0 0 0 2.79-.588zM5.21 3.088A7.028 7.028 0 0 1 8 2.5c5 0 8 5.5 8 5.5s-.939 1.721-2.641 3.238l-2.062-2.062a3.5 3.5 0 0 0-4.474-4.474L5.21 3.089z"/>\n <path d="M5.525 7.646a2.5 2.5 0 0 0 2.829 2.829l-2.83-2.829zm4.95.708-2.829-2.83a2.5 2.5 0 0 1 2.829 2.829zm3.171 6-12-12 .708-.708 12 12-.708.708z"/>\n</svg>'}),M=new _.LabIcon({name:`${r}:show-icon`,svgstr:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-eye-fill" viewBox="0 0 16 16">\n <path d="M10.5 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0z"/>\n <path d="M0 8s3-5.5 8-5.5S16 8 16 8s-3 5.5-8 5.5S0 8 0 8zm8 3.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7z"/>\n</svg>'});class O{}var T;!function(e){e.LOADING="Loading",e.NOTFOUND="Notebook not Registered",e.USERNOTAUTHORIZED="No User Permission for this Notebook",e.EXPIREDTOKEN="Expired Login Token",e.INVALIDCREDENTIALS="Invalid Credentials",e.ERROR="Fetching Error",e.SUCCESS="Success"}(T||(T={}));class R{static setPermission(e){R._isInteractionRecordingEnabled=e}}R._isInteractionRecordingEnabled=!1,R.sendInteraction=e=>{R._isInteractionRecordingEnabled&&$t(`${Yt}/dashboard_interaction/add`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...e,time:(new Date).toISOString(),notebook_id:Jt})})};var A=o(3748);const L={displayDashboard:!0,hasNotebookId:!1},$=(0,A.createSlice)({name:"tocdashboard",initialState:L,reducers:{setDisplayHideDashboard:(e,t)=>{e.displayDashboard=t.payload},setHasNotebookId:(e,t)=>{e.hasNotebookId=t.payload}}}),{setDisplayHideDashboard:B,setHasNotebookId:j}=$.actions,H=$.reducer,P={navigationState:[{pageName:"Notebook"}]},U=(0,A.createSlice)({name:"sidedashboard",initialState:P,reducers:{navigateToNotebook:(e,t)=>{e.navigationState=[{pageName:"Notebook"}]},navigateToCell:(e,t)=>{e.navigationState=[{pageName:"Notebook"},{pageName:"Cell",content:{cellId:t.payload.cellId}}]},navigateToHistory:(e,t)=>{e.navigationState=e.navigationState.slice(0,t.payload+1)},resetNavigationState:(e,t)=>{e.navigationState=P.navigationState}}}),{navigateToNotebook:F,navigateToCell:z,navigateToHistory:V,resetNavigationState:W}=U.actions,G=U.reducer,J=(0,A.createSlice)({name:"commondashboard",initialState:{notebookCells:null,refreshBoolean:!1,dashboardQueryArgs:{displayRealTime:{},t1ISOString:{},t2ISOString:{},selectedGroups:{},sortBy:{}}},reducers:{setDashboardQueryArgsT1:(e,t)=>{const{notebookId:o,t1ISOString:n}=t.payload;e.dashboardQueryArgs.t1ISOString[o]=n},setDashboardQueryArgsT2:(e,t)=>{const{notebookId:o,t2ISOString:n}=t.payload;e.dashboardQueryArgs.t2ISOString[o]=n},setDashboardQueryArgsSelectedGroups:(e,t)=>{const{notebookId:o,groups:n}=t.payload,a=e.dashboardQueryArgs.selectedGroups[o]||[];if(!Ut(a,n))return{...e,dashboardQueryArgs:{...e.dashboardQueryArgs,selectedGroups:{...e.dashboardQueryArgs.selectedGroups,[o]:n}}}},setDashboardQueryArgsDisplayRealTime:(e,t)=>{const{notebookId:o,displayRealTime:n}=t.payload;e.dashboardQueryArgs.displayRealTime[o]=n},setSortBy:(e,t)=>{const{notebookId:o,sortCriterion:n}=t.payload;e.dashboardQueryArgs.sortBy[o]=n},setNotebookCells:(e,t)=>{e.notebookCells=t.payload},refreshDashboards:e=>{e.refreshBoolean=!e.refreshBoolean}}}),{setDashboardQueryArgsT1:Q,setDashboardQueryArgsT2:K,setDashboardQueryArgsSelectedGroups:X,setDashboardQueryArgsDisplayRealTime:q,setSortBy:Y,setNotebookCells:Z,refreshDashboards:ee}=J.actions,te=J.reducer,oe=(0,A.configureStore)({reducer:{tocdashboard:H,sidedashboard:G,commondashboard:te}});var ne=o(8641),ae=o(4901),se=o(2957);const le=oe.dispatch;class re{constructor(){this._socket=null}_createSocket(e,t){this._socket=(0,se.io)(`${Zt}?conType=TEACHER&nbId=${e}&userId=${encodeURIComponent(t)}`,{transports:["websocket"]}),this._socket.on("connect",(()=>{console.log(`${r}: SocketIO connection opened for:`,{notebookId:e,userId:t})})),this._socket.on("disconnect",(o=>{console.log(`${r}: SocketIO connection closed (reason: ${o}) for:`,{notebookId:e,userId:t})})),this._socket.on("refreshDashboard",(()=>{le(ee()),console.log(`${r}: Received refresh dashboard request`)})),this._socket.on("chat",(e=>{console.log(`${r}: message received : ${e}`)})),this._socket.on("connect_error",(e=>{console.error(`${r}: SocketIO error; `,e)}))}establishSocketConnection(e){this.closeSocketConnection();const t=localStorage.getItem(h);e&&t&&this._createSocket(e,t)}closeSocketConnection(){this._socket&&this._socket.close(),this._socket=null}sendMessageToUser(e,t){this._socket&&this._socket.emit("send_message",{userId:e,message:t})}}const ie=oe.dispatch;class ce{constructor(){this._panelUpdatedSignal=new ae.Signal(this),this._panelSwitchedSignal=new ae.Signal(this),this._ongoingContextId="",this._ongoingCheckId="",this._panel=null,this._monitor=null,this._validityChecks={tag:null,registered:T.LOADING},this._websocketManager=new re,Gt.registrationStateChanged.connect(this._handleRegistrationStateChange,this)}_handleRegistrationStateChange(e,t){this._validityChecks.registered=t,this._panelUpdatedSignal.emit(void 0)}get validityChecks(){return this._validityChecks}get notebookCells(){return this._notebookCells}get websocketManager(){return this._websocketManager}get panel(){return this._panel}set panel(e){if(this._panel===e)return;if(this._panel&&this._panel.disposed.disconnect(this._onPanelDisposed,this),Qt(null),this._validityChecks={tag:null,registered:T.LOADING},this._websocketManager.closeSocketConnection(),this._panel=e,this._onPanelSwitched(),this._panel&&this._panel.disposed.connect(this._onPanelDisposed,this),this._monitor&&(this._monitor.dispose(),this._monitor=null),!this._panel)return void this._onPanelUpdated();const t=crypto.randomUUID();this._ongoingContextId=t,this._panel.sessionContext.ready.then((()=>{if(this._ongoingContextId===t&&this._panel&&!this._panel.isDisposed){if(this._monitor=new ne.ActivityMonitor({signal:this._panel.context.model.contentChanged,timeout:1e3}),this._monitor.activityStopped.connect(this._onPanelUpdated,this),Pt(this._panel)){const e=v.getMetadataComp(this._panel.model,b.notebookId);Qt(e),this._validityChecks={tag:e,registered:T.LOADING},this._performRegistrationCheck()}this._onPanelUpdated()}}))}_performRegistrationCheck(){const e=crypto.randomUUID();this._ongoingCheckId=e;let t=T.ERROR;$t(`${Yt}/dashboard/${this._validityChecks.tag}/check`).then((e=>e.json())).then((e=>{(null==e?void 0:e.status)?"expired_token"===e.status?t=T.EXPIREDTOKEN:"not_found"===e.status?t=T.NOTFOUND:"no_user_permission"===e.status?t=T.USERNOTAUTHORIZED:"success"===e.status&&(t=T.SUCCESS):t=T.INVALIDCREDENTIALS})).catch((e=>{console.log(`${r}: Notebook check fetching error (check your connection).`+e)})).finally((()=>{this._ongoingCheckId===e&&this._panel&&!this._panel.isDisposed&&(this._validityChecks.registered=t,this._validityChecks.registered===T.SUCCESS&&(ie(W()),this._websocketManager.establishSocketConnection(this._validityChecks.tag)),this._panelUpdatedSignal.emit(void 0))}))}_onPanelDisposed(e){this.panel=null}get panelSwitched(){return this._panelSwitchedSignal}_onPanelSwitched(){this._panelSwitchedSignal.emit(void 0)}get panelUpdated(){return this._panelUpdatedSignal}_onPanelUpdated(){this._updateCellList(),this._panelUpdatedSignal.emit(void 0)}_updateCellList(){var e,t;const o=v.getCellsArrComp(null===(t=null===(e=this.panel)||void 0===e?void 0:e.model)||void 0===t?void 0:t.cells);if(o){const e=o.map((e=>e.id));if(!Ut(e,this._notebookCells)){this._notebookCells=e;const t=o.map((e=>({id:e.id,cellType:e.type})));return ie(Z(t)),!0}}else this._notebookCells=null;return!1}}var de=o(7760),he=o(8559);const ue=()=>k().createElement("div",{style:{width:"100%",textAlign:"center",margin:"50px 0"}},k().createElement(he.Spinner,{style:{width:"50px",height:"50px",fontSize:"x-large"},animation:"border",role:"status",variant:"primary"})),me=({title:e,placeholderText:t="No data for the opened notebook"})=>k().createElement("div",{className:"dashboard-TableOfContents"},k().createElement("div",{className:"dashboard-stack-panel-header"},"Side Panel Dashboard"),k().createElement("div",{className:"dashboard-TableOfContents-placeholder"},k().createElement("div",{className:"dashboard-TableOfContents-placeholderContent"},k().createElement("h3",null,e),k().createElement("p",null,t))));class pe extends f.ReactWidget{constructor(e){super(),this.addClass("dashboard-panel"),this._panelManager=e,e.panelUpdated.connect((()=>this.update()),this)}onAfterShow(e){this.update()}onUpdateRequest(e){super.onUpdateRequest(e)}render(){if(!this._panelManager.panel)return w.createElement(me,{title:"No Notebook",placeholderText:"Open a notebook to start viewing its content."});if(!this._panelManager.panel.context.isReady)return w.createElement(ue,null);if(!this._panelManager.validityChecks.tag)return w.createElement(me,{title:"Notebook not Tagged for Tracking"});switch(this._panelManager.validityChecks.registered){case T.LOADING:return w.createElement(ue,null);case T.SUCCESS:return w.createElement(de.Provider,{store:oe},this.computeComponentToRender());default:return w.createElement(me,{title:this._panelManager.validityChecks.registered})}}}const ge=pe;var be=o(2535);const Ce=oe.dispatch,ve=()=>{const e=(0,de.useSelector)((e=>e.sidedashboard.navigationState));return k().createElement(he.Stack,{className:"breadcrumb-container",direction:"horizontal",gap:2},e.map(((t,o)=>k().createElement("div",{className:o===e.length-1?"breadcrumb-tile-active breadcrumb-tile":"breadcrumb-tile",onClick:()=>{"Notebook"===t.pageName?R.sendInteraction({click_type:"ON",signal_origin:"BREADCRUMB_TO_NOTEBOOK"}):"Cell"===t.pageName&&R.sendInteraction({click_type:"ON",signal_origin:"BREADCRUMB_TO_CELL"}),o!==e.length-1&&Ce(V(o))}},t.pageName))),k().createElement("div",{className:"breadcrumb-buttons-container"},k().createElement(he.Button,{className:"dashboard-button",onClick:()=>{R.sendInteraction({click_type:"ON",signal_origin:"DASHBOARD_REFRESH_BUTTON"}),Ce(ee())}},k().createElement(be.ArrowClockwise,{className:"dashboard-icon"}))))},we=oe.dispatch,ke=[{value:1,displayName:"All Data",disabledDatePicker:!0},{value:2,displayName:"From t<sub>1</sub>",disabledDatePicker:!1}],_e=e=>{const[t,o]=(0,w.useState)(!1),n=(0,de.useSelector)((e=>e.commondashboard.dashboardQueryArgs)),a=()=>{const t=n.t1ISOString[e.notebookId]?1:0;return ke[t]},s=()=>{const t=n.t1ISOString[e.notebookId];return t?new Date(t):new Date},l=()=>void 0===n.displayRealTime[e.notebookId]||n.displayRealTime[e.notebookId],[r,i]=(0,w.useState)(a()),[c,d]=(0,w.useState)(s()),[h,u]=(0,w.useState)(l),m=Ft(new Date);return(0,w.useEffect)((()=>{we(Q({notebookId:e.notebookId,t1ISOString:r.disabledDatePicker?null:c.toISOString()})),we(q({notebookId:e.notebookId,displayRealTime:h}))}),[c,r,h]),k().createElement(he.Dropdown,{show:t,onToggle:()=>{R.sendInteraction({click_type:t?"OFF":"ON",signal_origin:"DASHBOARD_FILTER_TIME"}),t||(d(s()),i(a()),u(l())),o(!t)},className:"custom-dropdown"},k().createElement(he.Dropdown.Toggle,{className:"dashboard-button"},!(h&&r.disabledDatePicker)&&k().createElement("span",{className:"dashboard-filter-red-dot"}),k().createElement(be.CalendarWeek,{className:"dashboard-icon"})),k().createElement(he.Dropdown.Menu,null,k().createElement(he.Dropdown.Header,null,"Data Timeframe Selector"),k().createElement(he.Dropdown.Divider,null),k().createElement("div",{className:"custom-dropdown-container custom-dropdown-item"},k().createElement(he.Form.Check,{id:"time-checkbox-include-all",type:"checkbox",label:"Only show active users",checked:h,onChange:e=>u(e.target.checked)})),k().createElement(he.Dropdown.Divider,null),k().createElement("div",{className:"dashboard-calendar-container"},k().createElement("div",{className:"cell-radio-container"},k().createElement(he.ButtonGroup,{size:"sm"},ke.map(((e,t)=>k().createElement(he.ToggleButton,{key:`calendar-filter-${t}`,id:`calendar-filter-${t}`,type:"radio",variant:"outline-primary",name:"radio",value:e.value,checked:r.value===e.value,onChange:e=>{i(ke[Number(e.currentTarget.value)-1])}},k().createElement("span",{dangerouslySetInnerHTML:{__html:e.displayName}}))))))),k().createElement("div",{className:"dashboard-calendar-container"},k().createElement("div",{className:"dashboard-calendar-input-wrapper "+(r.disabledDatePicker?"disabled":"")},k().createElement("div",null,"t",k().createElement("sub",null,"1")),k().createElement("input",{className:"dashboard-calendar-input",type:"datetime-local",value:Ft(c),onChange:e=>d(new Date(e.target.value)),max:m})))))},fe=({PassedComponent:e,title:t})=>k().createElement(he.Row,{className:"mb-4"},k().createElement(he.Card,{className:"chart-card"},k().createElement(he.Card.Title,{className:"chart-card-title"},t),k().createElement(he.Card.Body,{className:"chart-card-body"},e)));var ye=o(7885);const Ee="#969696",Se={maintainAspectRatio:!1,plugins:{legend:{labels:{color:Ee}}},scales:{x:{ticks:{color:Ee},title:{display:!0,text:"",color:Ee}},y:{beginAtZero:!0,ticks:{precision:0,color:Ee},title:{display:!0,text:"",color:Ee}}}},xe=e=>{const[t,o]=(0,w.useState)({labels:[],datasets:[]}),n=(0,de.useSelector)((e=>e.commondashboard.dashboardQueryArgs)),a=(0,de.useSelector)((e=>e.commondashboard.refreshBoolean)),s=(0,de.useSelector)((e=>e.commondashboard.notebookCells)),l=(0,w.useMemo)((()=>(null==s?void 0:s.filter((e=>"code"===e.cellType)))||[]),[s]);(0,w.useEffect)((()=>{$t(`${Yt}/dashboard/${e.notebookId}/user_code_execution?${Lt(n,e.notebookId)}`).then((e=>e.json())).then((e=>{const t={labels:Array.from({length:l.length},((e,t)=>t+1)),datasets:[{label:"clicks",data:Array(l.length).fill(null),backgroundColor:"rgba(51, 187, 238, 0.3)",borderColor:"rgba(51, 187, 238, 0.3)",borderWidth:1,hoverBackgroundColor:"rgba(51, 187, 238, 0.8)",hoverBorderColor:"rgba(51, 187, 238, 0.8)",hoverBorderWidth:1,hidden:!0},{label:"executions",data:Array(l.length).fill(null),backgroundColor:"rgba(0, 119, 187, 0.6)",borderColor:"rgba(0, 119, 187, 0.6)",borderWidth:1,hoverBackgroundColor:"rgba(0, 119, 187, 0.9)",hoverBorderColor:"rgba(0, 119, 187, 0.9)",hoverBorderWidth:1},{label:"executions without errors",data:Array(l.length).fill(null),backgroundColor:"rgba(0, 153, 136, 0.9)",borderColor:"rgba(0, 153, 136, 0.9)",borderWidth:1,hoverBackgroundColor:"rgba(0, 100, 90, 1)",hoverBorderColor:"rgba(0, 100, 90, 1)",hoverBorderWidth:1}]};l.forEach(((o,n)=>{const a=e.find((e=>e.cell===o.id));a&&(t.datasets[0].data[n]=parseFloat(a.cell_click_pct),t.datasets[1].data[n]=parseFloat(a.code_exec_pct),t.datasets[2].data[n]=parseFloat(a.code_exec_ok_pct))})),o(t)}))}),[n,a]);const r=((e,t)=>{var o,n,a,s,l,r,i;return{...Se,plugins:{...Se.plugins,legend:{...null===(o=Se.plugins)||void 0===o?void 0:o.legend,position:"top"},tooltip:{callbacks:{title:e=>`Code cell ${e[0].label}`}}},scales:{x:{...null===(n=Se.scales)||void 0===n?void 0:n.x,title:{...null===(s=null===(a=Se.scales)||void 0===a?void 0:a.x)||void 0===s?void 0:s.title,text:"Code cell"}},y:{...null===(l=Se.scales)||void 0===l?void 0:l.y,title:{...null===(i=null===(r=Se.scales)||void 0===r?void 0:r.y)||void 0===i?void 0:i.title,text:"Cumulated total across all users"}}},onClick:(o,n)=>{var a;if(n.length>0){const o=n[0].index,s=null===(a=null==e?void 0:e[o])||void 0===a?void 0:a.id;s&&t(s)}}}})(l,(t=>{e.commands.execute(m.dashboardScrollToCell,{from:"Visu",source:"CodeExecComponent",cell_id:t})}));return k().createElement(fe,{PassedComponent:k().createElement(ye.Bar,{data:t,options:r}),title:"Code cell executions across users"})},Ne=oe.dispatch,Ie=e=>{const[t,o]=(0,w.useState)(!1),n=(0,de.useSelector)((t=>t.commondashboard.dashboardQueryArgs.selectedGroups[e.notebookId])),[a,s]=(0,w.useState)({includeAllChecked:void 0===n||0===n.length,groupList:[]});(0,w.useEffect)((()=>{if(l){let t;t=a.includeAllChecked?[]:a.groupList.filter((e=>!0===e.checked)).map((e=>e.name)),Ne(X({notebookId:e.notebookId,groups:t}))}}),[a]);const[l,r]=(0,w.useState)(!1);return(0,w.useEffect)((()=>{r(!1),$t(`${Yt}/dashboard/${e.notebookId}/getgroups`).then((e=>e.json())).then((e=>{const t=e.map((e=>({name:e,checked:null==n?void 0:n.includes(e)}))).sort(((e,t)=>e.checked!==t.checked?t.checked?1:-1:e.name.localeCompare(t.name)));s((e=>({...e,groupList:t}))),r(!0)}))}),[e.notebookId]),k().createElement(he.Dropdown,{id:"group-dropdown",className:"custom-dropdown",show:t,onToggle:()=>{R.sendInteraction({click_type:t?"OFF":"ON",signal_origin:"DASHBOARD_FILTER_GROUPS"}),t||s((e=>{const t=void 0===n||0===n.length,o=e.groupList.map((e=>({name:e.name,checked:null==n?void 0:n.includes(e.name)}))).sort(((e,t)=>e.checked!==t.checked?t.checked?1:-1:e.name.localeCompare(t.name)));return{...e,includeAllChecked:t,groupList:o}})),o(!t)}},k().createElement(he.Dropdown.Toggle,{className:"dashboard-button"},a.groupList.some((e=>!0===e.checked))&&k().createElement("span",{className:"dashboard-filter-red-dot"}),k().createElement(be.PeopleFill,{className:"dashboard-icon"})),k().createElement(he.Dropdown.Menu,null,k().createElement(he.Dropdown.Header,null,"Filter by group of users"),k().createElement(he.Dropdown.Divider,null),k().createElement("div",{className:"custom-dropdown-container custom-dropdown-item"},k().createElement(he.Form.Check,{id:"group-checkbox-include-all",type:"checkbox",label:"Include all users",checked:a.includeAllChecked,onChange:e=>{return t=e.target.checked,void s((e=>{const o=e.groupList.map((e=>({...e,checked:!1})));return{...e,includeAllChecked:t,groupList:t?o:e.groupList}}));var t}})),k().createElement(he.Dropdown.Divider,null),k().createElement("div",{className:"group-dropdown-scroll "+(a.includeAllChecked?"disabled":"")},a.groupList.length>0?a.groupList.map(((e,t)=>k().createElement("div",{className:"custom-dropdown-item "+(a.includeAllChecked?"disabled":"")},k().createElement(he.Form.Check,{id:`group-checkbox-${t}`,type:"checkbox",disabled:!!a.includeAllChecked||void 0,label:e.name,title:e.name,checked:e.checked,onChange:()=>(e=>{s((t=>{const o=[...t.groupList];return o[e]={...o[e],checked:!o[e].checked},{...t,groupList:o}}))})(t)})))):k().createElement(he.Dropdown.Item,{disabled:!0},"No groups available"))))},De=1800,Me=`> ${Math.floor(30)}'`,Oe=e=>{const t=Math.floor(e/60);return e>=De?Me:`${t>0?t+"'":""}${(e%60).toFixed(0)}"`},Te=e=>{const[t,o]=(0,w.useState)({labels:[],datasets:[]}),n=(0,de.useSelector)((e=>e.commondashboard.dashboardQueryArgs)),a=(0,de.useSelector)((e=>e.commondashboard.refreshBoolean)),s=(0,de.useSelector)((e=>e.commondashboard.notebookCells)),l=(0,w.useRef)(null);(0,w.useEffect)((()=>{l.current=s}),[s]),(0,w.useEffect)((()=>{$t(`${Yt}/dashboard/${e.notebookId}/user_cell_duration_time?${Lt(n,e.notebookId)}`).then((e=>e.json())).then((e=>{const t=e.durations,n=e.total_user_count,a=[];t&&n&&(null==s||s.map(((e,o)=>{const s=t.find((t=>t.cell===e.id));if(s){const e=s.user_count/n,t=1,l=10;a.push({x:o+1,y:Math.min(s.average_duration,De),r:Math.min(Math.max(Math.round(t+(l-1)*e),t),l),userCount:s.user_count,totalCount:n})}})));const l={labels:s?Array.from({length:s.length},((e,t)=>t+1)):[],datasets:[{label:" fraction of users that focused on the cell",data:a,backgroundColor:"rgba(54, 162, 235, 0.2)",borderColor:"rgba(54, 162, 235, 1)",borderWidth:1}]};o(l)}))}),[n,a]);const r=((e,t)=>{var o,n,a,s,l,r,i,c,d,h,u,m;return{...Se,plugins:{...Se.plugins,legend:{...null===(o=Se.plugins)||void 0===o?void 0:o.legend,display:!0,labels:{...null===(a=null===(n=Se.plugins)||void 0===n?void 0:n.legend)||void 0===a?void 0:a.labels,usePointStyle:!0}},tooltip:{...null===(s=Se.plugins)||void 0===s?void 0:s.tooltip,usePointStyle:!0,callbacks:{title:e=>`Cell ${e[0].raw.x}`,label:e=>[`${e.raw.userCount} of ${e.raw.totalCount} users focused on this cell`,`Average focus time: ${Oe(e.raw.y)}`]}}},scales:{x:{...null===(l=Se.scales)||void 0===l?void 0:l.x,type:"category",title:{...null===(i=null===(r=Se.scales)||void 0===r?void 0:r.x)||void 0===i?void 0:i.title,text:"Cell (markdown & code)"}},y:{...null===(c=Se.scales)||void 0===c?void 0:c.y,ticks:{...null===(h=null===(d=Se.scales)||void 0===d?void 0:d.y)||void 0===h?void 0:h.ticks,count:6,callback:e=>"number"==typeof e?Oe(e):e},title:{...null===(m=null===(u=Se.scales)||void 0===u?void 0:u.y)||void 0===m?void 0:m.title,text:"Average time spent on the cell"}}},onClick:(o,n)=>{var a,s;if(n.length>0){const o=n[0].index,l=null===(s=null===(a=e.current)||void 0===a?void 0:a[o])||void 0===s?void 0:s.id;l&&t(l)}}}})(l,(t=>{e.commands.execute(m.dashboardScrollToCell,{from:"Visu",source:"CellDurationComponent",cell_id:t})}));return k().createElement(fe,{PassedComponent:k().createElement(ye.Bubble,{data:t,options:r}),title:"Time spent on each cell across users"})},Re=e=>k().createElement(k().Fragment,null,k().createElement("div",{className:"dashboard-title-container"},k().createElement("div",{className:"dashboard-title-text"},e.notebookName),k().createElement("div",{className:"dashboard-dropdown-container"},k().createElement(Ie,{notebookId:e.notebookId}),k().createElement(_e,{notebookId:e.notebookId}))),k().createElement(he.Row,null,k().createElement(he.Col,null,k().createElement(xe,{notebookId:e.notebookId,commands:e.commands}),k().createElement(Te,{notebookId:e.notebookId,commands:e.commands}))));var Ae=o(3231),Le=o.n(Ae);const $e=[{key:"timeDesc",label:"Time (newest 1st)"},{key:"timeAsc",label:"Time (oldest 1st)"},{key:"inputAsc",label:"Input (shortest 1st)"},{key:"inputDesc",label:"Input (longest 1st)"},{key:"outputAsc",label:"Output (shortest 1st)"},{key:"outputDesc",label:"Output (longest 1st)"}],Be=$e[0].key,je=oe.dispatch,He=e=>{const t=(0,de.useSelector)((t=>t.commondashboard.dashboardQueryArgs.sortBy[e.notebookId]||Be));return k().createElement(he.Dropdown,{id:"order-by-dropdown",onSelect:t=>{t&&(R.sendInteraction({click_type:"ON",signal_origin:"CELL_DASHBOARD_FILTER_SORT"}),je(Y({notebookId:e.notebookId,sortCriterion:t})))},className:"custom-dropdown"},k().createElement(he.Dropdown.Toggle,{className:"dashboard-button"},t!==Be&&k().createElement("span",{className:"dashboard-filter-red-dot"}),k().createElement(be.SortUp,{className:"dashboard-icon"})),k().createElement(he.Dropdown.Menu,null,k().createElement(he.Dropdown.Header,null,"Sort cells by"),k().createElement(he.Dropdown.Divider,null),$e.map(((e,o)=>k().createElement(he.Dropdown.Item,{id:`sort-item-${o}`,eventKey:e.key,className:t===e.key?"highlighted":""},e.label)))))},Pe=e=>k().createElement(he.Col,{md:12},k().createElement(he.Card,{className:"cell-card"},k().createElement(he.Card.Body,{style:{gap:"10px"}},k().createElement(he.Row,{className:"cell-card-wrapper"},k().createElement(he.Col,{md:12,className:"cell-user-title"},k().createElement(he.Card.Text,{title:e.value.user_id||void 0},"User ",e.value.user_id?e.value.user_id.length>8?`${e.value.user_id.substring(0,8)}...`:e.value.user_id:`${e.index+1}`)),k().createElement(he.Col,{md:12},e.ExecutionContent),(()=>{if(e.value.t_finish){const t=new Date(e.value.t_finish),o=`Executed at ${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}, ${t.getDate().toString().padStart(2,"0")}/${(t.getMonth()+1).toString().padStart(2,"0")}/${t.getFullYear().toString().slice(-2)}`;return k().createElement(he.Col,{md:12,className:"cell-execution-displayed-time"},o)}return null})()))));var Ue=o(2779);const Fe=e=>{const[t,o]=(0,w.useState)(null);return(0,w.useEffect)((()=>{(()=>{const t=Ue.marked.parser(Ue.marked.lexer(e.markdownContent));o(e.sanitizer.sanitize(t))})()}),[e.markdownContent]),k().createElement("div",{className:"cell-content-container"},t&&k().createElement("div",{className:"jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput",dangerouslySetInnerHTML:{__html:t}}))};var ze=o(8025),Ve=o(9145);const We=({cell_input:e,language_mimetype:t,className:o})=>{const n=(0,w.useRef)(null);return(0,w.useEffect)((()=>{const o=n.current;if(o){o.innerHTML="";const n=new Ve.CodeEditor.Model;n.mimeType=t,n.sharedModel.setSource(e);const a=new ze.CodeMirrorEditor({host:o,model:n,...v.getCodeMirrorOptionsComp()}),s=v.observeEditorVisibility(a);return s&&s.observe(o),()=>{s&&s.disconnect()}}}),[e,t]),k().createElement("div",{ref:n,className:o})};var Ge=o(5609);const Je=new s.RenderMimeRegistry({initialFactories:s.standardRendererFactories}),Qe=({cell_output_model:e})=>{const t=(0,w.useRef)(null),o=new Ge.OutputAreaModel;return(0,w.useEffect)((()=>{o.clear(),o.fromJSON(e);const n=t.current;if(n){n.innerHTML="";for(let e=0;e<o.length;++e){const t=o.get(e),a=Je.preferredMimeType(t.data);if(a){const e=Je.createRenderer(a);e.renderModel(t),n.appendChild(e.node)}}}}),[e]),k().createElement("div",{ref:t,className:"cell-content-container"})},Ke=e=>{const t=(0,w.useRef)([]),[o,n]=(0,w.useState)([]),[a,s]=(0,w.useState)(!1),l=(0,w.useRef)(0),i=(0,w.useRef)(7),c=(0,w.useRef)(0),d=(0,de.useSelector)((e=>e.sidedashboard.navigationState)),h=(0,de.useSelector)((e=>e.commondashboard.refreshBoolean)),m=(0,de.useSelector)((e=>e.commondashboard.dashboardQueryArgs)),[p,g]=(0,w.useState)(!0),[b,C]=(0,w.useState)(!0),[v,_]=(0,w.useState)(1),[f,y]=((e=800)=>{const[t,o]=(0,w.useState)(""),[n,a]=(0,w.useState)("");return(0,w.useEffect)((()=>{const t=setTimeout((()=>o(n)),e);return()=>clearTimeout(t)}),[n,e]),[t,a]})(),E=[{name:"All",value:1,status:"all"},{name:"Success",value:2,status:"ok"},{name:"Error",value:3,status:"error"}],S=E.map((e=>e.status)),x=d[d.length-1].content,N=async()=>{const o=++c.current,a=i.current,d=l.current;try{const r=await $t(`${Yt}/dashboard/${e.notebookId}/cell/${x.cellId}?limit=${a}&offset=${d}&${Lt(m,e.notebookId)}`),h=await r.json();if(o===c.current){const e=((e,t)=>{const o=new Set(e.map((e=>e.exec_id))),n=t.filter((e=>!o.has(e.exec_id)));return[...e,...n]})(t.current,h);t.current=e,n(e),h.length<a?s(!1):s(!0),l.current+=a,i.current=7}}catch(e){console.error(`${r}: Error cell dashboard fetch: `,e)}};return(0,w.useEffect)((()=>{i.current=Math.max(t.current.length,7),s(!1),l.current=0,t.current=[],N()}),[d,m,h]),(0,w.useEffect)((()=>()=>{s(!1),l.current=0,t.current=[],n([])}),[d]),(0,w.useEffect)((()=>{if(!e.pageRouterNode)return;const t=Math.abs(e.pageRouterNode.scrollHeight-e.pageRouterNode.clientHeight-e.pageRouterNode.scrollTop)<1;a&&t&&N()}),[a,e.pageRouterNode,o,p,b,v,f]),k().createElement(k().Fragment,null,k().createElement("div",{className:"dashboard-title-container"},k().createElement("div",{className:"dashboard-title-text"},"Cell (",x.cellId,")"),k().createElement("div",{className:"dashboard-dropdown-container"},k().createElement(He,{notebookId:e.notebookId}),k().createElement(Ie,{notebookId:e.notebookId}),k().createElement(_e,{notebookId:e.notebookId}))),k().createElement(he.Form,{className:"cell-filter-container",onSubmit:e=>e.preventDefault()},k().createElement("div",{className:"cell-radio-container"},k().createElement(he.ButtonGroup,{size:"sm"},k().createElement(he.ToggleButton,{style:{marginRight:"3px"},key:"0",id:"code-checkbox",type:"radio",variant:"outline-primary",value:"Code",checked:p,onClick:e=>{p&&!b?e.preventDefault():(R.sendInteraction({click_type:p?"OFF":"ON",signal_origin:"CELL_DASHBOARD_FILTER_CODE_INPUT"}),g(!p))}},"Code"),k().createElement(he.ToggleButton,{key:"1",id:"output-checkbox",type:"radio",variant:"outline-primary",value:"Output",checked:b,onClick:e=>{!p&&b?e.preventDefault():(R.sendInteraction({click_type:b?"OFF":"ON",signal_origin:"CELL_DASHBOARD_FILTER_CODE_OUTPUT"}),C(!b))}},"Output"))),k().createElement("div",{className:"cell-radio-container"},k().createElement(he.ButtonGroup,{size:"sm"},E.map(((e,t)=>k().createElement(he.ToggleButton,{key:t,id:`filter-${t}`,type:"radio",variant:"outline-primary",name:"radio",value:e.value,checked:v===e.value,onChange:e=>{R.sendInteraction({click_type:"ON",signal_origin:"CELL_DASHBOARD_FILTER_EXECUTION"}),_(Number(e.currentTarget.value))}},e.name))))),k().createElement(he.Form.Control,{size:"sm",type:"text",placeholder:"Type text to filter...",onChange:e=>y(e.target.value)})),k().createElement(Le(),{style:{overflow:"hidden"},scrollableTarget:u,dataLength:o.length,next:N,hasMore:a,loader:k().createElement(ue,null)},(I=o,D=f,0===D.length?I:(D=D.toLowerCase(),I.filter((e=>{var t;return(null===(t=e.cell_input)||void 0===t?void 0:t.toLowerCase().includes(D))||e.cell_output_model&&JSON.stringify(e.cell_output_model).toLowerCase().includes(D)})))).map(((t,o)=>k().createElement(he.Row,{key:o},"MarkdownExecution"===t.cell_type&&["all","ok"].includes(S[v-1])?k().createElement(Pe,{value:t,index:o,ExecutionContent:k().createElement(Fe,{markdownContent:t.cell_input,sanitizer:e.sanitizer})}):k().createElement(k().Fragment,null,(1===v||S[v-1]===t.status)&&k().createElement(Pe,{value:t,index:o,ExecutionContent:k().createElement(k().Fragment,null,p&&k().createElement(We,{cell_input:t.cell_input,language_mimetype:t.language_mimetype,className:"cell-content-container"}),p&&b&&t.cell_output_model.length>0&&k().createElement("br",null),b&&t.cell_output_model.length>0&&k().createElement(Qe,{cell_output_model:t.cell_output_model}))})))))));var I,D};var Xe=o(8352);Xe.Chart.register(...Xe.registerables);const qe=e=>{const t=(0,de.useSelector)((e=>e.sidedashboard.navigationState)),[o,n]=(0,w.useState)(null),a=(0,w.useCallback)((e=>{n(e)}),[]);return k().createElement("div",{ref:a,className:"page-container",id:u},k().createElement(ve,null),(()=>{switch(t[t.length-1].pageName){case"Notebook":return k().createElement(Re,{notebookId:e.notebookId,notebookName:e.notebookName,commands:e.commands});case"Cell":return k().createElement(Ke,{notebookId:e.notebookId,sanitizer:e.sanitizer,pageRouterNode:o});default:return null}})())};class Ye extends ge{constructor(e,t,o){super(e),this.addClass("dashboard-react-widget"),this.title.caption="Side Dashboard",this.title.icon=x,this.id="unanalytics-side-dashboard",this.node.setAttribute("role","region"),this.node.setAttribute("aria-label","Side dashboard section"),this._commands=t,this._sanitizer=o}onBeforeShow(e){R.sendInteraction({click_type:"ON",signal_origin:"RIGHT_DASHBOARD_SHOW_HIDE"})}onBeforeHide(e){R.sendInteraction({click_type:"OFF",signal_origin:"RIGHT_DASHBOARD_SHOW_HIDE"})}computeComponentToRender(){const e=this._panelManager.panel,t=this._panelManager.validityChecks.tag;return e&&t?w.createElement(qe,{notebookId:t,notebookName:e.sessionContext.name,commands:this._commands,sanitizer:this._sanitizer}):w.createElement(w.Fragment,null)}}const Ze=(e,t)=>{const o=3*e/t+.1;return Math.min(1,o)},et=({data:e,cellId:t,commands:o})=>k().createElement(k().Fragment,null,e&&e[0]&&e[1]?k().createElement("div",{onClick:e=>{e.preventDefault(),o.execute(m.dashboardOpenDashboardPlayback,{from:"Toc",cell_id:t})},className:"dashboard-toc-react-component",style:{backgroundColor:`rgba(25, 118, 210, ${Ze(e[0],e[1])})`}},k().createElement("span",{className:"dashboard-toc-react-text"},e[0]+"/"+e[1])):k().createElement("div",{className:"dashboard-toc-react-component"}));class tt extends k().Component{render(){const{panel:e,heading:t,headings:o,addReactComponent:n,isFirstCellOccurrence:a,tocDashboardData:s,commands:l}=this.props,r=this.props.itemRenderer(e,t,o);return r?k().createElement("li",{className:"dashboard-tocItem",onClick:e=>{R.sendInteraction({click_type:"ON",signal_origin:"TOC_HEADING_CLICKED"}),e.preventDefault(),e.stopPropagation(),t.onClick()}},r,n&&k().createElement(et,{cellId:t.cellRef.model.id,data:a?s:null,commands:l})):null}}const ot=e=>{const[t,o]=(0,w.useState)(null),n=(0,de.useSelector)((e=>e.tocdashboard.displayDashboard)),a=(0,de.useSelector)((e=>e.commondashboard.refreshBoolean)),s=(0,de.useSelector)((e=>e.commondashboard.dashboardQueryArgs));(0,w.useEffect)((()=>{l()}),[e.notebookCells,e.notebookPanel,a,s]),(0,w.useEffect)((()=>()=>{o(null)}),[e.notebookCells,e.notebookPanel]);const l=async()=>{const t=v.getMetadataComp(e.notebookPanel.model,b.notebookId);if(t&&e.notebookCells){try{const e=await $t(`${Yt}/dashboard/${t}/toc?${Lt(s,t)}`);if(e.ok){const t=await e.json();return void o(t.data)}console.log(`${r}: Error:`,e.status)}catch(e){console.log(`${r}: Toc Fetch Error:`,e)}o(null)}},i=(t=>{const o=e.headings.map((e=>e.cellRef.model.id)),n=[...new Set(o)],a={},s=e.notebookCells;if(s&&t){const e=n.map((e=>s.indexOf(e)));e[0]=0,e.push(s.length);let o=0;for(let l=0;l<n.length;l++){const r=e[l],i=e[l+1];let c=0;if(-1===r)c=0;else for(let e=r;e<i;e++)c+=t.location_count[s[e]]||0;a[n[l]]=c,o+=c}a.total_count=o}return a})(t),c=new Set;return k().createElement("ul",{className:"dashboard-TableOfContents-content"},e.headings.map(((t,o)=>{const a=t.cellRef.model.id,s=!c.has(a);return s&&c.add(a),k().createElement(tt,{panel:e.notebookPanel,heading:t,headings:e.headings,itemRenderer:e.itemRenderer,addReactComponent:n,isFirstCellOccurrence:s,tocDashboardData:[i[a],i.total_count],commands:e.commands,key:`${t.text}-${t.level}-${o++}`})})))};class nt extends O{constructor(e,t){super(),this._preRenderedToolbar=null,this._showCode=!1,this._showMarkdown=!1,this._numbering=t.numbering,this._numberingH1=t.numberingH1,this._syncCollapseState=t.syncCollapseState,this._widget=e,this.sanitizer=t.sanitizer,this._collapseChanged=new ae.Signal(this)}set numberingH1(e){this._numberingH1!==e&&(this._numberingH1=e,this._widget.update())}get numberingH1(){return this._numberingH1}set syncCollapseState(e){this._syncCollapseState!==e&&(this._syncCollapseState=e,this._widget.update())}get syncCollapseState(){return this._syncCollapseState}setNotebookMetadata(e,t){null!==t&&t.model&&v.setMetadataComp(t.model,e[0],e[1])}setNumbering(e,t){this._numbering=e,this._widget.update(),this.setNotebookMetadata(["dashboard-toc-autonumbering",this._numbering],t)}get numbering(){return this._numbering}setShowCode(e,t){this._showCode=e,this.setNotebookMetadata(["dashboard-toc-showcode",this._showCode],t),this._widget.update()}get showCode(){return this._showCode}setShowMarkdown(e,t){this._showMarkdown=e,this.setNotebookMetadata(["dashboard-toc-showmarkdowntxt",this._showMarkdown],t),this._widget.update()}get showMarkdown(){return this._showMarkdown}get collapseChanged(){return this._collapseChanged}set preRenderedToolbar(e){this._preRenderedToolbar=e}get preRenderedToolbar(){return this._preRenderedToolbar}updateWidget(){this._widget.update()}updateAndCollapse(e){this._collapseChanged.emit(e),this._widget.update()}initializeOptions(e,t,o,n,a){this._numbering=e,this._numberingH1=t,this._syncCollapseState=o,this._showCode=n,this._showMarkdown=a,this._widget.update()}}function at(e){if(e.length>0){let t=e.length-1;for(;t>=0;){if("header"===e[t].type)return e[t].level;t-=1}}return 0}const st="jp-MarkdownHeadingCollapsed",lt="dashboard-toc-hr-collapsed";function rt(e,t,o,n,a,s){const l=[];if(e){const r=e.split("\n"),i=Math.min(r.length,3);let c="",d=0;for(;d<i-1;d++)c+=r[d]+"\n";c+=r[d],l.push({text:c,level:n+1,onClick:t(0),type:"code",prompt:o,cellRef:a,hasChild:!1,index:s})}return l[0]}function it(e,t,o,n){if(t&&t.text){if(o&&"header"===o.type)for(let t=e.length-1;t>=0;t--)e[t]===o&&(e[t].hasChild=!0);n<0&&e.push(t),o=t}return[e,o]}const ct={allowedTags:["p","blockquote","b","i","strong","em","strike","code","br","div","span","pre","del"],allowedAttributes:{code:["class"],span:["class"],div:["class"],p:["class"],pre:["class"]}};function dt(e,t,o,n,a,s=!1,l=!0,r,i){const c=e.querySelectorAll("h1, h2, h3, h4, h5, h6, p");let d=a;const h=[];for(const e of c){if("p"===e.nodeName.toLowerCase()){if(e.innerHTML){const n=o.sanitize(e.innerHTML,ct);h.push({level:d+1,html:n.replace("¶",""),text:e.textContent?e.textContent:"",onClick:t(e),type:"markdown",cellRef:r,hasChild:!1,index:i})}continue}e.getElementsByClassName("numbering-entry").length>0&&e.removeChild(e.getElementsByClassName("numbering-entry")[0]);let a=o.sanitize(e.innerHTML,ct);a=a.replace("¶","");let c=parseInt(e.tagName[1],10);l||(c-=1),d=c;const u=mt(n,c);if(s){const t=document.createElement("span");t.classList.add("numbering-entry"),t.textContent=null!=u?u:"",e.insertBefore(t,e.firstChild)}h.push({level:c,text:e.textContent?e.textContent:"",numbering:u,html:a,onClick:t(e),type:"header",cellRef:r,hasChild:!1,index:i})}return h}function ht(e,t,o,n,a,s){return e&&"markdown"===e.type&&s?[t,o]=it(t,e,o,n):e&&"header"===e.type&&([t,o,n]=function(e,t,o,n,a){const s=e.length;if(o&&"header"===o.type&&o.level<t.level)for(let t=s-1;t>=0;t--)e[t]===o&&(e[t].hasChild=!0);return(n>=t.level||n<0)&&(e.push(t),n=a?t.level:-1),[e,o=t,n]}(t,e,o,n,a)),[t,o,n]}const ut=6;function mt(e,t){if(null===e)return;let o="";if(e=function(e,t){for(let o=t+1;o<=ut;o++)void 0!==e[o]&&(e[o]=void 0);return void 0===e[t]?e[t]=1:e[t]+=1,e}(e,t),t>=1){for(let n=1;n<=t;n++)o+=(void 0===e[n]?"0":e[n])+".";o+=" "}return o}function pt(e){const t=e.split("\n");let o=t[0].match(/^([#]{1,6}) (.*)/);return o?{text:o[2].replace(/\[(.+)\]\(.+\)/g,"$1"),level:o[1].length,type:"markdown"}:t.length>1&&(o=t[1].match(/^ {0,3}([=]{2,}|[-]{2,})\s*$/),o)?{text:t[0].replace(/\[(.+)\]\(.+\)/g,"$1"),level:"="===o[1][0]?1:2,type:"markdown-alt"}:(o=t[0].match(/<h([1-6]).*>(.*)<\/h\1>/i),o?{text:o[2],level:parseInt(o[1],10),type:"html"}:null)}function gt(e,t,o,n,a,s){const l=t(0),r=[];let i=n;for(const t of e.split("\n"))if(t){const e=pt(t);e?(r.push({text:e.text,level:e.level,numbering:mt(o,e.level),onClick:l,type:"header",cellRef:a,hasChild:!1,index:s}),i=e.level):r.push({text:t,level:i+1,onClick:l,type:"markdown",cellRef:a,hasChild:!1,index:s})}return r}function bt(e,t,o){if(t.index>-1||(null==o?void 0:o.length)){const n=e.content.activeCellIndex,a=t.index;if(n&&a<n){const e=o.indexOf(t)+1;if(e>=o.length)return!0;if((null==o?void 0:o[e].index)>n)return!0}}return!1}const Ct=oe.dispatch;function vt(e,t,o){let n=!0,a=!1;o&&o.composite.tocDashboardSettings&&(n=o.composite.tocDashboardSettings.numberingH1,a=o.composite.tocDashboardSettings.syncCollapseState);const s=new nt(e,{numbering:!1,numberingH1:n,syncCollapseState:a,sanitizer:t});return o&&o.composite.tocDashboardSettings&&o.changed.connect((()=>{s.numberingH1=o.composite.tocDashboardSettings.numberingH1,s.syncCollapseState=o.composite.tocDashboardSettings.syncCollapseState})),{options:s,toolbarGenerator:function(e){return function(e,t){return class extends w.Component{constructor(o){super(o),this.state={showCode:!0,showMarkdown:!1,numbering:!1,showVisuDashboard:L.displayDashboard},t.context.ready.then((()=>{if(t){t.content.activeCellChanged.connect((()=>{e.updateWidget()}));const o=v.getMetadataComp(t.model,"dashboard-toc-autonumbering"),n=v.getMetadataComp(t.model,"dashboard-toc-showcode"),a=v.getMetadataComp(t.model,"dashboard-toc-showmarkdowntxt");e.initializeOptions(o||e.numbering,e.numberingH1,e.syncCollapseState,n||e.showCode,a||e.showMarkdown),this.setState({showCode:e.showCode,showMarkdown:e.showMarkdown,numbering:e.numbering})}}))}toggleCode(){R.sendInteraction({click_type:e.showCode?"OFF":"ON",signal_origin:"TOC_TOOLBAR_CODE"}),e.setShowCode(!e.showCode,t),this.setState({showCode:e.showCode})}toggleMarkdown(){R.sendInteraction({click_type:e.showMarkdown?"OFF":"ON",signal_origin:"TOC_TOOLBAR_MARKDOWN"}),e.setShowMarkdown(!e.showMarkdown,t),this.setState({showMarkdown:e.showMarkdown})}toggleNumbering(){R.sendInteraction({click_type:e.numbering?"OFF":"ON",signal_origin:"TOC_TOOLBAR_NUMBERED"}),e.setNumbering(!e.numbering,t),this.setState({numbering:e.numbering})}toggleShowVisuDashboard(){const e=this.state.showVisuDashboard;R.sendInteraction({click_type:e?"OFF":"ON",signal_origin:"TOC_TOOLBAR_SHOW_HIDE"}),Ct(B(!e)),this.setState({showVisuDashboard:!e})}refreshDashboard(){R.sendInteraction({click_type:"ON",signal_origin:"TOC_TOOLBAR_REFRESH"}),Ct(ee())}render(){const e=w.createElement("div",{onClick:e=>this.toggleCode(),role:"text","aria-label":"Toggle Code Cells",title:"Toggle Code Cells",className:this.state.showCode?"dashboard-toc-toolbar-icon-selected":"dashboard-toc-toolbar-icon"},w.createElement(_.codeIcon.react,null)),t=w.createElement("div",{onClick:e=>this.toggleMarkdown(),role:"text","aria-label":"Toggle Markdown Text Cells",title:"Toggle Markdown Text Cells",className:this.state.showMarkdown?"dashboard-toc-toolbar-icon-selected":"dashboard-toc-toolbar-icon"},w.createElement(_.markdownIcon.react,null)),o=w.createElement("div",{onClick:e=>this.toggleNumbering(),role:"text","aria-label":"Toggle Auto-Numbering",title:"Toggle Auto-Numbering",className:this.state.numbering?"dashboard-toc-toolbar-icon-selected":"dashboard-toc-toolbar-icon"},w.createElement(_.numberingIcon.react,null)),n=w.createElement("div",{onClick:e=>this.toggleShowVisuDashboard(),role:"text","aria-label":this.state.showVisuDashboard?"Hide Visualization Dashboard":"Show Visualization Dashboard",title:this.state.showVisuDashboard?"Hide Visualization Dashboard":"Show Visualization Dashboard",className:"dashboard-toc-toolbar-icon"},this.state.showVisuDashboard?w.createElement(D.react,null):w.createElement(M.react,null)),a=w.createElement("div",{onClick:e=>this.refreshDashboard(),role:"text","aria-label":"Refresh Dashboard",title:"Refresh Dashboard",className:"dashboard-toc-toolbar-icon"},w.createElement(_.refreshIcon.react,null));return w.createElement("div",null,w.createElement("div",{className:"dashboard-toc-toolbar"},w.createElement("div",{className:"dashboard-toc-toolbar-compartment"},e,t,o),w.createElement("div",{className:"dashboard-toc-toolbar-compartment"},n,a)))}}}(s,e)},itemRenderer:function(e,t,o=[]){return function(e,t,o,n=[]){var a;if("markdown"===o.type||"header"===o.type){let a="dashboard-toc-level-size-default";const s=o.numbering&&e.numbering?o.numbering:"",l=e.syncCollapseState?st:lt;if("header"!==o.type&&"markdown"!==o.type||(a="dashboard-toc-level-size-"+o.level),"header"===o.type||e.showMarkdown){let r;r=o.html?w.createElement("span",{dangerouslySetInnerHTML:{__html:s+e.sanitizer.sanitize(o.html,ct)},className:"dashboard-"+o.type+"-cell dashboard-toc-cell-item"}):w.createElement("span",{className:"dashboard-"+o.type+"-cell dashboard-toc-cell-item"},s+o.text);let i=null;return"header"===o.type&&(i=w.createElement("div",{className:"jp-Collapser p-Widget lm-Widget",onClick:n=>{n.stopPropagation(),function(t,o,n){let a=!1;const s=e.syncCollapseState,l=v.getMetadataComp(null==n?void 0:n.cellRef.model,o);l&&(a=l),n?(R.sendInteraction({click_type:a?"OFF":"ON",signal_origin:"TOC_COLLAPSE_HEADERS"}),s?t&&E.NotebookActions.setHeadingCollapse(null==n?void 0:n.cellRef,!a,t.content):a?v.deleteMetadataComp(n.cellRef.model,o):v.setMetadataComp(n.cellRef.model,o,!0),e.updateAndCollapse({heading:n,collapsedState:a})):e.updateWidget()}(t,l,o)}},w.createElement("div",{className:"dashboard-toc-Collapser-child"}))),r=w.createElement("div",{className:"dashboard-toc-entry-holder "+a+(t.content.activeCell===o.cellRef||bt(t,o,n)?" dashboard-toc-active-cell":"")},i,r),r}return null}if(t&&"code"===o.type&&e.showCode){const e=(null===(a=v.getMetadataComp(t.model,"language_info"))||void 0===a?void 0:a.mimetype)||"text";return w.createElement("div",{className:"dashboard-toc-code-cell-div"},w.createElement("div",{className:"dashboard-toc-code-cell-prompt"},o.prompt),w.createElement("span",{className:"dashboard-toc-code-span"},w.createElement(We,{cell_input:o.text,language_mimetype:e,className:"dashboard-toc-cell-input"})))}return null}(s,e,t,o)},generate:function(o){let n=[],a=-1;const l={},r=o.content;let i=null;for(let o=0;o<r.widgets.length;o++){const c=r.widgets[o],d=c.model,h=s.syncCollapseState?st:lt;let u=v.getMetadataComp(d,h);if(u=u||!1,"code"!==d.type){if("markdown"===d.type){const e=c;let h;const m=at(n);if(e.rendered&&!e.inputHidden){const d=()=>()=>{e.rendered&&(r.mode="command"),r.activeCellIndex=o,r.mode="command",r.scrollToItem(o,"center")},p=dt(c.node,d,t,l,m,s.numbering,s.numberingH1,c,o);for(h of p)[n,i,a]=ht(h,n,i,a,u,s.showMarkdown)}else{const e=()=>()=>{r.activeCellIndex=o,r.mode="command",r.scrollToItem(o,"center")},t=gt(d.sharedModel.getSource(),e,l,m,c,o);for(h of t)[n,i,a]=ht(h,n,i,a,u,s.showMarkdown)}}}else if(!e||e&&s.showCode){const e=e=>()=>{r.activeCellIndex=o,r.mode="command",r.scrollToItem(o,"center")},t=c.model.executionCount,s=null!==t?"["+t+"]: ":"[ ]: ",l=rt(d.sharedModel.getSource(),e,s,at(n),c,o);[n,i]=it(n,l,i,a)}}return n},collapseChanged:s.collapseChanged}}const wt=e=>{const[t,o]=(0,w.useState)(e.startT1),[n,a]=(0,w.useState)(e.startT2),s=Ft(new Date),l=t=>{o(t),e.t1Callback(t)},r=t=>{a(t),e.t2Callback(t)};return k().createElement("div",{className:"dashboard-export-dialog-container"},k().createElement("p",null,"Select the time range of the data you want to export (the past week selected by default)."),k().createElement("div",{className:"dashboard-export-dialog-calendar-container"},k().createElement("div",{className:"dashboard-export-dialog-calendar"},k().createElement("p",null,"Start Date :"),k().createElement("input",{className:"dashboard-calendar-input",type:"datetime-local",value:Ft(t),onChange:e=>(e=>{const t=new Date(e);l(t),t>=n&&r(t)})(e.target.value),max:Ft(n)})),k().createElement("div",{className:"dashboard-export-dialog-calendar"},k().createElement("p",null,"End Date :"),k().createElement("input",{className:"dashboard-calendar-input",type:"datetime-local",value:Ft(n),onChange:e=>(e=>{const o=new Date(e);r(o),o<=t&&l(o)})(e.target.value),max:s}))))},kt=e=>{const[t,o]=(0,w.useState)(!1);return k().createElement("div",{className:"dashboard-toc-download-button"+(t?"-disabled":""),onClick:()=>{t||(e=>{let t=new Date,n=new Date;n.setDate(t.getDate()-7),(0,f.showDialog)({title:"Download Notebook Data",body:k().createElement(wt,{startT1:n,startT2:t,t1Callback:e=>n=e,t2Callback:e=>t=e}),buttons:[{accept:!0,actions:[],ariaLabel:"Export",caption:"",className:"",displayType:"default",iconClass:"",iconLabel:"",label:"Export"},f.Dialog.cancelButton()]}).then((a=>{a.button.accept&&((e,t,n)=>{o(!0);let a="";$t(`${Yt}/dashboard/${e}/download_csv?t1=${t.toISOString()}&t2=${n.toISOString()}`).then((e=>{var t;if(e.ok){const o=e.headers.get("Content-Disposition");return a=(null===(t=null==o?void 0:o.match(/filename=(.+)/))||void 0===t?void 0:t[1])||"",e.blob()}})).then((e=>{if(e){const t=window.URL.createObjectURL(e),o=document.createElement("a");o.href=t,o.download=a,document.body.appendChild(o),o.click(),o.remove()}})).finally((()=>{o(!1)}))})(e,n,t)}))})(e.notebookId)}},k().createElement(_.downloadIcon.react,{className:"dashboard-toc-download-icon"}),"Export")};class _t extends ge{constructor(e,t,o,n){super(e),this.title.caption="Dashboard ToC",this.title.icon=x,this.id="unianalytics-toc-dashboard",this.node.setAttribute("role","region"),this.node.setAttribute("aria-label","Dashboard ToC section"),this._commands=t,this._notebookGenerator=vt(this,o,n),this._toolbar=null,e.panelSwitched.connect(this._onPanelSwitched,this)}onBeforeShow(e){R.sendInteraction({click_type:"ON",signal_origin:"TOC_DASHBOARD_SHOW_HIDE"})}onBeforeHide(e){R.sendInteraction({click_type:"OFF",signal_origin:"TOC_DASHBOARD_SHOW_HIDE"})}_onPanelSwitched(e){this._panelManager.panel?this._toolbar=this._notebookGenerator.toolbarGenerator(this._panelManager.panel):this._toolbar=null}computeComponentToRender(){const e=this._panelManager.panel;return e?w.createElement("div",{className:"dashboard-TableOfContents"},w.createElement("div",{className:"dashboard-stack-panel-header"},w.createElement("span",{className:"dashboard-toc-header-title"},ne.PathExt.basename(e.context.localPath)),w.createElement(kt,{notebookId:this._panelManager.validityChecks.tag})),this._toolbar&&w.createElement(this._toolbar,null),w.createElement(ot,{headings:this._notebookGenerator.generate(e),itemRenderer:this._notebookGenerator.itemRenderer,notebookPanel:e,commands:this._commands,notebookCells:this._panelManager.notebookCells})):w.createElement(w.Fragment,null)}}const ft=oe.dispatch,yt=e=>{const t=(0,w.useRef)(null),o=(0,w.useRef)(null),n=new Date,[a,s]=(0,w.useState)(new Date(n.getTime()-72e5)),[l,r]=(0,w.useState)(new Date(n.getTime()+6e4)),[i,c]=(0,w.useState)(40),[d,h]=((e,t=200)=>{const[o,n]=(0,w.useState)(e),[a,s]=(0,w.useState)(e);return(0,w.useEffect)((()=>{const e=setTimeout((()=>n(a)),t);return()=>clearTimeout(e)}),[a,t]),[o,s]})(40),u=()=>{const e=a.getTime()+i/40*(l.getTime()-a.getTime());return new Date(e)};return(0,w.useEffect)((()=>{const t=u();ft(K({notebookId:e.notebookId,t2ISOString:t.toISOString()}))}),[d,a,l]),(0,w.useEffect)((()=>()=>{ft(K({notebookId:e.notebookId,t2ISOString:null}))}),[e.notebookId]),k().createElement("div",{className:"dashboard-playback-widget-container"},k().createElement("div",{className:"dashboard-playback-header"},k().createElement("div",{className:"dashboard-playback-icon-container"},k().createElement(N.react,{className:"dashboard-playback-icon"})),k().createElement("div",{className:"dashboard-playback-mode-title"},"Playback Mode"),k().createElement("div",{className:"dashboard-playback-icon-container-hovering dashboard-playback-icon-container",onClick:e.hideParent},k().createElement(be.X,{className:"dashboard-playback-icon"}))),k().createElement("div",{className:"dashboard-playback-mode-text"},"Move data cutoff time back in custom range (includes non-active users):"),k().createElement("div",{className:"dashboard-playback-controls"},k().createElement("div",{className:"dashboard-playback-time-button-wrapper"},k().createElement(he.Button,{className:"dashboard-playback-time-button-container",onClick:()=>{var e;return null===(e=t.current)||void 0===e?void 0:e.showPicker()}},"t",k().createElement("sub",null,"1"),k().createElement("input",{ref:t,id:"unianalytics-datetime-t1",className:"dashboard-playback-hidden-datepicker dashboard-calendar-input",type:"datetime-local",value:Ft(a),max:Ft(l),onChange:e=>{const t=new Date(e.target.value);t.getTime()>=l.getTime()&&r(new Date(t.getTime()+6e4)),s(t)}})),k().createElement("span",{className:"dashboard-playback-label"},"Min cutoff:",k().createElement("br",null)," ",zt(a))),k().createElement("div",{className:"dashboard-playback-range-wrapper"},k().createElement(he.Form.Range,{min:0,max:40,onChange:e=>{return t=parseInt(e.target.value),c(t),void h(t);var t},value:i}),k().createElement("span",{className:"dashboard-playback-label"},"Selected cutoff:",k().createElement("br",null)," ",zt(u()))),k().createElement("div",{className:"dashboard-playback-time-button-wrapper"},k().createElement(he.Button,{className:"dashboard-playback-time-button-container",onClick:()=>{var e;return null===(e=o.current)||void 0===e?void 0:e.showPicker()}},"t",k().createElement("sub",null,"2"),k().createElement("input",{ref:o,id:"unianalytics-datetime-t2",className:"dashboard-playback-hidden-datepicker dashboard-calendar-input",type:"datetime-local",value:Ft(l),max:Ft(n),onChange:e=>{const t=new Date(e.target.value);t.getTime()<=a.getTime()&&s(new Date(t.getTime()-6e4)),r(t)}})),k().createElement("span",{className:"dashboard-playback-label"},"Max cutoff:",k().createElement("br",null)," ",zt(l)))))};class Et extends f.ReactWidget{constructor(e){super(),this._dragging=!1,this._startX=0,this._startLeft=0,this.addClass("dashboard-playback-widget"),this.id="dashboard-playback-widget",this.node.setAttribute("role","region"),this.show=this.show.bind(this),this.hide=this.hide.bind(this),this.update=this.update.bind(this),this._onMouseDown=this._onMouseDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this.hide(),this._panelManager=e,e.panelUpdated.connect((()=>this.update())),e.panelSwitched.connect((()=>this.hide()))}onBeforeShow(e){R.sendInteraction({click_type:"ON",signal_origin:"DASHBOARD_PLAYBACK_SHOW_HIDE"}),this.update()}onBeforeHide(e){R.sendInteraction({click_type:"OFF",signal_origin:"DASHBOARD_PLAYBACK_SHOW_HIDE"}),this.update()}onUpdateRequest(e){super.onUpdateRequest(e)}render(){const e=this._panelManager.panel,t=this._panelManager.validityChecks.tag;return!this.isHidden&&e&&t?w.createElement(yt,{notebookId:t,hideParent:()=>this.hide()}):w.createElement(w.Fragment,null)}onAfterAttach(e){super.onAfterAttach(e),this.node.addEventListener("mousedown",this._onMouseDown.bind(this))}onBeforeDetach(e){this.node.removeEventListener("mousedown",this._onMouseDown.bind(this)),super.onBeforeDetach(e)}_onMouseDown(e){0===e.button&&e.target===this.node&&(this._dragging=!0,this._startX=e.clientX,this._startLeft=this.node.offsetLeft,document.addEventListener("mousemove",this._onMouseMove),document.addEventListener("mouseup",this._onMouseUp))}_onMouseMove(e){if(!this._dragging)return;const t=e.clientX-this._startX;this.node.style.left=`${this._startLeft+t}px`}_onMouseUp(e){this._dragging=!1,document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp)}}const St="cell-dashboard-button-container";class xt extends S.Widget{constructor(e,t){super(),this.addClass(St);const o=document.createElement("button");o.className="cell-dashboard-button",o.innerHTML=x.svgstr,o.title=o.disabled?"No notebook identifier":"Open Cell Dashboard",o.onclick=()=>{e.execute(m.dashboardOpenDashboardPlayback,{from:"Cell",cell_id:t})},this.node.appendChild(o)}dispose(){super.dispose()}}class Nt{constructor(e){this._commands=e}createNew(e){return new It(e,this._commands)}}class It{constructor(e,t){this._isDisposed=!1,this._panel=e,this._commands=t,this._previousActiveCell=this._panel.content.activeCell,e.context.ready.then((()=>{Pt(e)?(e.revealed.then((()=>{e&&!e.isDisposed&&setTimeout((()=>{this._onActiveCellChanged(e.content)}),1e3/60)})),e.content.renderingLayoutChanged.connect(this._onActiveCellChanged,this),e.content.activeCellChanged.connect(this._onActiveCellChanged,this),e.disposed.connect((()=>{e.content.activeCellChanged.disconnect(this._onActiveCellChanged)}))):this.dispose()}))}_addCellButton(e){const t=this._getCell(e);if(t){const e=new xt(this._commands,t.model.id);t.layout.insertWidget(0,e)}}_onActiveCellChanged(e){this._previousActiveCell&&!this._previousActiveCell.isDisposed&&this._removeCellButton(this._previousActiveCell.model);const t=e.activeCell;null!==t&&(this._addCellButton(t.model),this._previousActiveCell=t)}_getCell(e){var t;return null===(t=this._panel)||void 0===t?void 0:t.content.widgets.find((t=>t.model===e))}_removeCellButton(e){const t=this._getCell(e);t&&this._findCellButtonWidgets(t).forEach((e=>{e.dispose()}))}_findCellButtonWidgets(e){return e.layout.widgets.filter((e=>e.hasClass(St)))||[]}get isDisposed(){return this._isDisposed}dispose(){var e;if(this.isDisposed)return;this._isDisposed=!0;const t=v.getCellsArrComp(null===(e=this._panel)||void 0===e?void 0:e.context.model.cells);if(t)for(const e of t)this._removeCellButton(e);this._panel=null,ae.Signal.clearData(this)}}var Dt=o(7717);class Mt{constructor(e){this._commands=e}createNew(e){const t=new f.ToolbarButton({className:"playback-button",icon:N,onClick:()=>{this._commands.execute(m.dashboardOpenDashboardPlayback,{from:"Playback"})},tooltip:"Open Dashboard Playback Widget"});return e.context.ready.then((()=>{Pt(e)&&e.toolbar.insertItem(0,"openDashboardPlayback",t)})),new Dt.DisposableDelegate((()=>{t.dispose()}))}}const Ot=async(e,t)=>{e.websocketManager?$t(`${Yt}/dashboard/${Jt}/connectedstudents`).then((e=>e.json())).then((o=>{if(0!==o.length)for(const n of o)e.websocketManager.sendMessageToUser(n,t);else console.log("No connected students")})):console.error("No websocket manager found")},Tt=oe.dispatch;async function Rt(e,t,o,n,a){console.log(`JupyterLab extension ${r}: dashboard plugins activated!`),(e=>{const t=e.shell.widgets();let o=v.getNextWidgetValueComp(t);for(;o;){if(o instanceof E.NotebookPanel){const t=o,n=new Mt(e.commands),a=new Nt(e.commands),s=n.createNew(t),l=a.createNew(t);t.disposed.connect((()=>{s.dispose(),l.dispose()}))}o=v.getNextWidgetValueComp(t)}e.docRegistry.addWidgetExtension("Notebook",new Nt(e.commands)),e.docRegistry.addWidgetExtension("Notebook",new Mt(e.commands))})(e);const s=new ce,l=new Ye(s,e.commands,a.sanitizer),i=new _t(s,e.commands,a.sanitizer,n),c=new Et(s);function d(){const t=e.shell.currentWidget;if(!t)return;if(!(t instanceof E.NotebookPanel))return void(s.panel&&s.panel.isDisposed&&(s.panel=null));const o=t;s.panel=o}o.restored.then((()=>{S.Widget.attach(c,o.node)})),function(e,t){console.log(`JupyterLab extension ${r}: push-update plugin is activated!`),e.restored.then((()=>{e.commands.addCommand(m.pushCellUpdate,{label:"Push the Selected Cell",caption:"Share the selected cell with the connected students",icon:_.shareIcon,isVisible:()=>null!==t.panel,execute:()=>(async e=>{var t;if(!Jt)return void console.error("No notebook id found");const o=null===(t=e.panel)||void 0===t?void 0:t.content,n=null==o?void 0:o.activeCell;if(n){const t=n.model,o={content:{id:t.id,cell_type:t.type,source:t.toJSON().source},action:"update_cell"};await Ot(e,JSON.stringify(o))}})(t)}),e.commands.addCommand(m.pushNotebookUpdate,{label:"Push the Whole Notebook",caption:"Share the whole notebook with the connected students",icon:_.shareIcon,execute:()=>(async e=>{var t;if(!Jt)return void console.error("No notebook id found");const o=null===(t=e.panel)||void 0===t?void 0:t.content;if(o){const t={content:o.model.toJSON(),action:"update_notebook"};await Ot(e,JSON.stringify(t))}})(t)}),e.contextMenu.addItem({type:"separator",selector:".jp-Notebook"}),e.contextMenu.addItem({command:m.pushCellUpdate,selector:".jp-Cell"}),e.contextMenu.addItem({type:"separator",selector:".jp-Cell"}),e.contextMenu.addItem({command:m.pushNotebookUpdate,selector:".jp-Notebook"})}))}(e,s),o.add(l,"right",{rank:1e3}),o.add(i,"left",{rank:1e3}),e.commands.addCommand(m.dashboardOpenDashboardPlayback,{label:"Notebook Visualizations",caption:"Open Dashboards",icon:x,iconClass:"jp-icon3",execute:t=>{"Playback"===t.from?(l.isVisible||Tt(F()),i.isVisible||e.shell.activateById(i.id),c.isAttached&&s.validityChecks.registered===T.SUCCESS&&(c.isHidden?c.show():c.hide())):"Cell"===t.from?(R.sendInteraction({click_type:"ON",signal_origin:"NOTEBOOK_CELL_BUTTON"}),Tt(z({cellId:t.cell_id}))):"Toc"===t.from&&(R.sendInteraction({click_type:"ON",signal_origin:"TOC_OPEN_CELL_DASHBOARD"}),Tt(z({cellId:t.cell_id}))),l.isVisible||e.shell.activateById(l.id)}}),e.commands.addCommand(m.dashboardScrollToCell,{label:"Dashboard Scroll to Cell",caption:"Notebook Cell Navigation from Dashboards",execute:e=>{var t;if("Visu"===e.from){switch(e.source){case"CodeExecComponent":R.sendInteraction({click_type:"ON",signal_origin:"CODE_VISU_CLICK"});break;case"CellDurationComponent":R.sendInteraction({click_type:"ON",signal_origin:"TIME_VISU_CLICK"});break;default:console.log(`${r}: dashboardScrollToCell command called from an unknown source.`)}const o=null===(t=s.panel)||void 0===t?void 0:t.content;if(!o)return;const n=o.widgets.findIndex((t=>t.model.id===e.cell_id));-1!==n&&(o.activeCellIndex=n,o.mode="command",o.scrollToItem(n,"center"))}}}),t&&(t.add(l,`${r}:dashboard-notebook-restorer`),t.add(i,`${r}:dashboard-toc-restorer`)),o&&o.currentChanged.connect(d),e.restored.then((()=>{d()}))}const At=(e,t,o,n,a,s,l)=>{Ht(e.auth_notebooks),Kt||(Rt(t,n,a,l,s),function(e,t){console.log(`JupyterLab extension ${r}: upload plugin is activated!`),e.commands.addCommand(m.uploadNotebook,{label:"Upload notebook to unianalytics",icon:e=>e.isContextMenu?_.fileUploadIcon:void 0,execute:o=>{const n=v.getFileComp(t);n&&e.serviceManager.contents.get(n.path).then((t=>{var o,a;(o=t.content,a=n.name,new Promise(((e,t)=>{const n=new FormData;n.append("notebook_content",JSON.stringify(o)),n.append("name",a),$t(Yt+"/notebook/upload",{method:"POST",body:n}).then((async o=>{const n=await o.json();o.ok?e(n):422===o.status?t("Invalid token"):t(n.error||"Unknown error")})).catch((e=>{t(e)}))}))).then((o=>{const a={...t,content:o};e.serviceManager.contents.save(n.path,a).then((e=>{const t=o.metadata[b.notebookId],a=`${Yt}/notebook/download/${t}`;(0,f.showDialog)({title:n.name,body:k().createElement(y,{url:a,fileName:n.name}),buttons:[f.Dialog.okButton()]}).catch((e=>console.log(e)))})).catch((e=>{(0,f.showDialog)({title:n.name,body:`Error saving the file:\n${e}`,buttons:[f.Dialog.okButton()]}).catch((e=>console.log(e)))}))})).catch((e=>{(0,f.showDialog)({title:n.name,body:`Error uploading the file:\n${e}`,buttons:[f.Dialog.okButton()]}).catch((e=>console.log(e)))}))}))}}),e.commands.addCommand(m.copyDownloadLink,{label:"Copy unianalytics notebook link",icon:e=>e.isContextMenu?_.linkIcon:void 0,execute:o=>{const n=v.getFileComp(t);n&&e.serviceManager.contents.get(n.path).then((e=>{const t=e.content.metadata;if(t){const e=t[b.notebookId];e?navigator.clipboard.writeText(`${Yt}/notebook/download/${e}`).catch((e=>{console.error(`${r}: Error copying link: `,e)})):console.log(`${r}: Notebook not tagged`)}}))}}),e.contextMenu.addItem({selector:p,type:"separator",rank:0}),e.contextMenu.addItem({args:{isContextMenu:!0},command:m.uploadNotebook,selector:p,rank:0}),e.contextMenu.addItem({args:{isContextMenu:!0},command:m.copyDownloadLink,selector:p,rank:0}),e.contextMenu.addItem({selector:p,type:"separator",rank:0})}(t,o),Xt(!0))},Lt=(e,t)=>{var o,n;return`displayRealTime=${null===(o=e.displayRealTime[t])||void 0===o||o}`+(e.t1ISOString[t]?"&t1="+e.t1ISOString[t]:"")+(e.t2ISOString[t]?"&t2="+e.t2ISOString[t]:"")+(e.sortBy[t]?"&sortBy="+e.sortBy[t]:"")+((null===(n=e.selectedGroups[t])||void 0===n?void 0:n.length)>0?"&selectedGroups="+encodeURIComponent(JSON.stringify(e.selectedGroups[t])):"")},$t=async(e,t)=>{const o=await Bt(e,t);if(401===o.status){const n=await o.clone().json();if("expired_token"===(null==n?void 0:n.status)){if(await jt())return Bt(e,t);console.log(`${r}: Token refresh failed.`),Gt.registrationStateChanged.emit(T.EXPIREDTOKEN)}}return o},Bt=async(e,t)=>{const o={headers:{Authorization:`Bearer ${localStorage.getItem(c)}`}},n={...o,...t,headers:{...o.headers,...(null==t?void 0:t.headers)||{}}};return fetch(e,n)},jt=async()=>{const e=await fetch(`${Yt}/jwt/refresh`,{method:"POST",headers:{Authorization:`Bearer ${localStorage.getItem(d)}`}});if(e.ok){const t=await e.clone().json();if(null==t?void 0:t.access_token)return console.log(`${r}: access token refreshed`),localStorage.setItem(c,t.access_token),!0}return!1},Ht=e=>{window.postMessage({identifier:"unianalytics",authNotebooks:e||[]},window.origin)},Pt=e=>!!(e&&!e.isDisposed&&e.context.isReady&&v.getMetadataComp(e.context.model,b.notebookId)&&v.getMetadataComp(e.context.model,b.cellMapping)),Ut=(e,t)=>!(!e||!t)&&e.length===t.length&&e.every(((e,o)=>e===t[o])),Ft=e=>e.toLocaleString("sv-SE").slice(0,-3),zt=e=>`${e.getDate().toString().padStart(2,"0")}/${(e.getMonth()+1).toString().padStart(2,"0")} ${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}`,Vt=e=>{const[t,o]=(0,w.useState)(""),[n,a]=(0,w.useState)(""),[s,l]=(0,w.useState)(!1),[i,u]=(0,w.useState)({text:"",isSuccess:!1});return k().createElement("div",{className:"dashboard-loginbox-content"},k().createElement(he.Form,null,k().createElement(he.Form.Group,{controlId:"formUsername"},k().createElement(he.Form.Label,null,"Username"),k().createElement(he.Form.Control,{type:"text",value:t,onChange:e=>o(e.target.value),placeholder:"Enter username"})),k().createElement(he.Form.Group,{controlId:"formPassword",className:"dashboard-loginbox-password-group"},k().createElement(he.Form.Label,null,"Password"),k().createElement(he.Form.Control,{type:"password",value:n,onChange:e=>a(e.target.value),placeholder:"Enter password"})),k().createElement(he.Button,{variant:"primary",type:"submit",onClick:()=>{l(!0);const o=t;fetch(`${Yt}/jwt/login`,{method:"POST",body:JSON.stringify({username:o,password:n}),headers:{"Content-Type":"application/json"}}).then((async e=>{const t=await e.json();return{responseOk:e.ok,loginJSON:t}})).then((({responseOk:t,loginJSON:n})=>{l(!1),t?(localStorage.setItem(c,n.access_token),localStorage.setItem(d,n.refresh_token),localStorage.setItem(h,o),At(n,e.app,e.factory,e.restorer,e.labShell,e.rendermime,e.settings),u({text:"Login successful: dashboards activated.",isSuccess:!0})):u({text:`Login failed: ${n.error||"Unknown reason"}.`,isSuccess:!1})})).catch((e=>{l(!1),console.error(`${r}: Login error, ${e}`),u({text:`${e}`,isSuccess:!1})}))},disabled:!t||!n||s,className:"dashboard-loginbox-btn"},"Log In")),k().createElement("div",{className:"dashboard-loginbox-signup"},k().createElement("a",{href:`${Yt}/jwt/signup`,target:"_blank",rel:"noopener noreferrer"},"Not registered? Sign up",k().createElement(be.BoxArrowUpRight,{className:"dashboard-loginbox-signup-icon"}))),k().createElement("div",{className:"dashboard-loginbox-current-username"},`Current User: ${localStorage.getItem(h)}`),k().createElement("div",{className:"dashboard-loginbox-response-container"},s?k().createElement("div",{className:"dashboard-loginbox-spinner-container"},k().createElement(he.Spinner,{animation:"border",role:"status",variant:"primary",className:"dashboard-loginbox-spinner"})):k().createElement("div",{className:"dashboard-loginbox-response "+(i.isSuccess?"":"dashboard-loginbox-error-text")},i.text)))};class Wt{constructor(){this._registrationStateChanged=new ae.Signal(this)}get registrationStateChanged(){return this._registrationStateChanged}}const Gt=new Wt;let Jt=null;function Qt(e){Jt=e}let Kt=!1;function Xt(e){Kt=e}const qt="http://localhost:1015";let Yt=qt,Zt=qt;const eo={id:i,autoStart:!0,requires:[a.IFileBrowserFactory,n.ILayoutRestorer,n.ILabShell,s.IRenderMimeRegistry,l.ISettingRegistry],optional:[],activate:(e,t,o,n,a,s)=>{console.log(`JupyterLab extension ${r} is activated!`);const l="3.1.0",i=e.version.match(/[0-9]+/g);if(i&&((e,t)=>{const o=e.split(/[^0-9]+/).map(Number),n=t.split(/[^0-9]+/).map(Number);for(let e=0;e<Math.min(o.length,n.length);e++){const t=o[e],a=n[e];if(t!==a)return t-a}const a=e.replace(/[0-9]+/g,""),s=t.replace(/[0-9]+/g,"");return a.localeCompare(s)})(e.version,l)>=0){const l=parseInt(i[0]);v.setJupyterVersion(l).then((async()=>{let l,i;if(s)try{[l,i]=await Promise.all([s.load(`${r}:plugin`),s.load(`${r}:endpoint`)]),c(l),l.changed.connect(c),d(i),i.changed.connect(d)}catch(e){console.error(`${r}: Failed to load settings.\n${e}`)}!function(e,t,o,n,a,s){console.log(`JupyterLab extension ${r}: login plugin is activated!`),e.commands.addCommand(m.openLogin,{label:"Login to Access Unianalytics Dashboards",icon:I,execute:l=>{(0,f.showDialog)({title:k().createElement("div",{className:"dashboard-loginbox-title-container"},k().createElement("div",{className:"dashboard-loginbox-icon-container"},k().createElement(I.react,{className:"dashboard-loginbox-icon"})),k().createElement("div",{className:"dashboard-loginbox-title"},"Login: Unianalytics Dashboards")),body:k().createElement(Vt,{app:e,factory:t,restorer:o,labShell:n,rendermime:a,settings:s}),focusNodeSelector:'input[type="text"]',buttons:[{accept:!1,actions:[],ariaLabel:"Close",caption:"",className:"",displayType:"default",iconClass:"",iconLabel:"",label:"Close"}]}).then((e=>{})).catch((e=>console.log(`${r} Error with Login: ${e}`)))}})}(e,t,o,n,a,l),$t(`${Yt}/jwt/check`).then((e=>{if(e.ok)return e.json();throw new Error("Unauthorized user")})).then((s=>{At(s,e,t,o,n,a,l)})).catch((e=>{Ht([]),console.log(`${r}: Authentication error, ${e}`)}))}))}else console.log(`${r}: Use a more recent version of JupyterLab (>=${l})`);function c(e){var t;const o=e.composite.commonDashboardSettings;o?R.setPermission(o.dashboardCollection||!1):R.setPermission((null===(t=e.default("commonDashboardSettings"))||void 0===t?void 0:t.dashboardCollection)||!1)}function d(e){const t=e.composite.useLocalBackend,o=e.composite.backendEndpoint;t?(Yt=qt,Zt=qt):"string"==typeof o?(Yt=o,Zt=o):(Yt=qt,Zt=qt)}}},to=eo},2204:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%272%27 fill=%27%23fff%27/%3e%3c/svg%3e"},9609:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27%2386b7fe%27/%3e%3c/svg%3e"},2469:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27%23fff%27/%3e%3c/svg%3e"},7486:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27rgba%280, 0, 0, 0.25%29%27/%3e%3c/svg%3e"},991:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27rgba%28255, 255, 255, 0.25%29%27/%3e%3c/svg%3e"},4144:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 12 12%27 width=%2712%27 height=%2712%27 fill=%27none%27 stroke=%27%23dc3545%27%3e%3ccircle cx=%276%27 cy=%276%27 r=%274.5%27/%3e%3cpath stroke-linejoin=%27round%27 d=%27M5.8 3.6h.4L6 6.5z%27/%3e%3ccircle cx=%276%27 cy=%278.2%27 r=%27.6%27 fill=%27%23dc3545%27 stroke=%27none%27/%3e%3c/svg%3e"},6254:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23000%27%3e%3cpath d=%27M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z%27/%3e%3c/svg%3e"},5321:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23052c65%27%3e%3cpath fill-rule=%27evenodd%27 d=%27M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e"},3460:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23212529%27%3e%3cpath fill-rule=%27evenodd%27 d=%27M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e"},1281:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%236ea8fe%27%3e%3cpath fill-rule=%27evenodd%27 d=%27M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e"},5647:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23fff%27%3e%3cpath d=%27M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z%27/%3e%3c/svg%3e"},1692:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23fff%27%3e%3cpath d=%27M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e"},6770:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3e%3cpath fill=%27none%27 stroke=%27%23343a40%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%272%27 d=%27m2 5 6 6 6-6%27/%3e%3c/svg%3e"},6711:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3e%3cpath fill=%27none%27 stroke=%27%23dee2e6%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%272%27 d=%27m2 5 6 6 6-6%27/%3e%3c/svg%3e"},8931:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27%3e%3cpath fill=%27none%27 stroke=%27%23fff%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%273%27 d=%27M6 10h8%27/%3e%3c/svg%3e"},6199:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27%3e%3cpath fill=%27none%27 stroke=%27%23fff%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%273%27 d=%27m6 10 3 3 6-6%27/%3e%3c/svg%3e"},2956:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 30 30%27%3e%3cpath stroke=%27rgba%28255, 255, 255, 0.55%29%27 stroke-linecap=%27round%27 stroke-miterlimit=%2710%27 stroke-width=%272%27 d=%27M4 7h22M4 15h22M4 23h22%27/%3e%3c/svg%3e"},2221:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 30 30%27%3e%3cpath stroke=%27rgba%2833, 37, 41, 0.75%29%27 stroke-linecap=%27round%27 stroke-miterlimit=%2710%27 stroke-width=%272%27 d=%27M4 7h22M4 15h22M4 23h22%27/%3e%3c/svg%3e"},5122:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 8 8%27%3e%3cpath fill=%27%23198754%27 d=%27M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z%27/%3e%3c/svg%3e"}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var _JUPYTERLAB;(()=>{"use strict";var e,t,r,a,o,n,i,l,d,f,u,c,s,b,p,h,m,v,y,g,j,w,P,_,k,O,S={7426:(e,t,r)=>{var a={"./index":()=>Promise.all([r.e(39),r.e(29),r.e(995)]).then((()=>()=>r(1505))),"./extension":()=>Promise.all([r.e(39),r.e(29),r.e(995)]).then((()=>()=>r(1505))),"./style":()=>r.e(546).then((()=>()=>r(5546)))},o=(e,t)=>(r.R=t,t=r.o(a,e)?a[e]():Promise.resolve().then((()=>{throw new Error('Module "'+e+'" does not exist in container.')})),r.R=void 0,t),n=(e,t)=>{if(r.S){var a="default",o=r.S[a];if(o&&o!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return r.S[a]=e,r.I(a,t)}};r.d(t,{get:()=>o,init:()=>n})}},E={};function x(e){var t=E[e];if(void 0!==t)return t.exports;var r=E[e]={id:e,exports:{}};return S[e](r,r.exports,x),r.exports}x.m=S,x.c=E,x.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return x.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,x.t=function(r,a){if(1&a&&(r=this(r)),8&a)return r;if("object"==typeof r&&r){if(4&a&&r.__esModule)return r;if(16&a&&"function"==typeof r.then)return r}var o=Object.create(null);x.r(o);var n={};e=e||[null,t({}),t([]),t(t)];for(var i=2&a&&r;"object"==typeof i&&!~e.indexOf(i);i=t(i))Object.getOwnPropertyNames(i).forEach((e=>n[e]=()=>r[e]));return n.default=()=>r,x.d(o,n),o},x.d=(e,t)=>{for(var r in t)x.o(t,r)&&!x.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},x.f={},x.e=e=>Promise.all(Object.keys(x.f).reduce(((t,r)=>(x.f[r](e,t),t)),[])),x.u=e=>e+"."+{10:"1e5c908a94fc4b83c2e5",18:"759fbf2374edc42b5c3e",29:"9b0cb1475dcac2b485f3",39:"5a3b28a79ba693a9b627",211:"583fddc965c583e61532",308:"d9da4ce35f354c6f12e1",373:"37ddee9d229ac254f896",376:"d960746fd943a4ef55b8",426:"a7015f9dfda310972c1b",459:"75a9fe630dfdb00e65b4",533:"f7a454b11ba5cd79dc0c",546:"61a6a427e418e90a1a97",563:"b613f734176cb51510ef",638:"d37271636c4d956096de",704:"4e17d862a476ae3df8ae",708:"323c3614d31a5918cfaf",738:"f4338fb8d8276b96c3f3",744:"329dc4d1ed2f5c918266",798:"33a8f0893a66574e9259",817:"6437962faf359015be36",981:"ebb9e1d6122980b5ff0e",995:"2d1dc4fba5107831fa2e"}[e]+".js?v="+{10:"1e5c908a94fc4b83c2e5",18:"759fbf2374edc42b5c3e",29:"9b0cb1475dcac2b485f3",39:"5a3b28a79ba693a9b627",211:"583fddc965c583e61532",308:"d9da4ce35f354c6f12e1",373:"37ddee9d229ac254f896",376:"d960746fd943a4ef55b8",426:"a7015f9dfda310972c1b",459:"75a9fe630dfdb00e65b4",533:"f7a454b11ba5cd79dc0c",546:"61a6a427e418e90a1a97",563:"b613f734176cb51510ef",638:"d37271636c4d956096de",704:"4e17d862a476ae3df8ae",708:"323c3614d31a5918cfaf",738:"f4338fb8d8276b96c3f3",744:"329dc4d1ed2f5c918266",798:"33a8f0893a66574e9259",817:"6437962faf359015be36",981:"ebb9e1d6122980b5ff0e",995:"2d1dc4fba5107831fa2e"}[e],x.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),x.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},a="jupyterlab_unianalytics_dashboard:",x.l=(e,t,o,n)=>{if(r[e])r[e].push(t);else{var i,l;if(void 0!==o)for(var d=document.getElementsByTagName("script"),f=0;f<d.length;f++){var u=d[f];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==a+o){i=u;break}}i||(l=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,x.nc&&i.setAttribute("nonce",x.nc),i.setAttribute("data-webpack",a+o),i.src=e),r[e]=[t];var c=(t,a)=>{i.onerror=i.onload=null,clearTimeout(s);var o=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(a))),t)return t(a)},s=setTimeout(c.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=c.bind(null,i.onerror),i.onload=c.bind(null,i.onload),l&&document.head.appendChild(i)}},x.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{x.S={};var e={},t={};x.I=(r,a)=>{a||(a=[]);var o=t[r];if(o||(o=t[r]={}),!(a.indexOf(o)>=0)){if(a.push(o),e[r])return e[r];x.o(x.S,r)||(x.S[r]={});var n=x.S[r],i="jupyterlab_unianalytics_dashboard",l=(e,t,r,a)=>{var o=n[e]=n[e]||{},l=o[t];(!l||!l.loaded&&(!a!=!l.eager?a:i>l.from))&&(o[t]={get:r,from:i,eager:!!a})},d=[];return"default"===r&&(l("@reduxjs/toolkit","1.9.7",(()=>x.e(426).then((()=>()=>x(8426))))),l("chart.js","4.4.1",(()=>x.e(708).then((()=>()=>x(4708))))),l("jupyterlab_unianalytics_dashboard","4.0.21",(()=>Promise.all([x.e(39),x.e(29),x.e(995)]).then((()=>()=>x(1505))))),l("marked","11.1.1",(()=>x.e(308).then((()=>()=>x(3308))))),l("react-bootstrap-icons","1.10.3",(()=>Promise.all([x.e(744),x.e(29)]).then((()=>()=>x(1744))))),l("react-bootstrap","2.10.0",(()=>Promise.all([x.e(18),x.e(29),x.e(704)]).then((()=>()=>x(1018))))),l("react-chartjs-2","5.2.0",(()=>Promise.all([x.e(29),x.e(459),x.e(563)]).then((()=>()=>x(5376))))),l("react-infinite-scroll-component","6.1.0",(()=>Promise.all([x.e(29),x.e(533)]).then((()=>()=>x(8533))))),l("react-redux","8.1.3",(()=>Promise.all([x.e(981),x.e(29),x.e(704)]).then((()=>()=>x(2981))))),l("socket.io-client","4.7.5",(()=>x.e(817).then((()=>()=>x(4817)))))),e[r]=d.length?Promise.all(d).then((()=>e[r]=1)):1}}})(),(()=>{var e;x.g.importScripts&&(e=x.g.location+"");var t=x.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var a=r.length-1;a>-1&&!e;)e=r[a--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),x.p=e})(),o=e=>{var t=e=>e.split(".").map((e=>+e==e?+e:e)),r=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),a=r[1]?t(r[1]):[];return r[2]&&(a.length++,a.push.apply(a,t(r[2]))),r[3]&&(a.push([]),a.push.apply(a,t(r[3]))),a},n=(e,t)=>{e=o(e),t=o(t);for(var r=0;;){if(r>=e.length)return r<t.length&&"u"!=(typeof t[r])[0];var a=e[r],n=(typeof a)[0];if(r>=t.length)return"u"==n;var i=t[r],l=(typeof i)[0];if(n!=l)return"o"==n&&"n"==l||"s"==l||"u"==n;if("o"!=n&&"u"!=n&&a!=i)return a<i;r++}},i=e=>{var t=e[0],r="";if(1===e.length)return"*";if(t+.5){r+=0==t?">=":-1==t?"<":1==t?"^":2==t?"~":t>0?"=":"!=";for(var a=1,o=1;o<e.length;o++)a--,r+="u"==(typeof(l=e[o]))[0]?"-":(a>0?".":"")+(a=2,l);return r}var n=[];for(o=1;o<e.length;o++){var l=e[o];n.push(0===l?"not("+d()+")":1===l?"("+d()+" || "+d()+")":2===l?n.pop()+" "+n.pop():i(l))}return d();function d(){return n.pop().replace(/^\((.+)\)$/,"$1")}},l=(e,t)=>{if(0 in e){t=o(t);var r=e[0],a=r<0;a&&(r=-r-1);for(var n=0,i=1,d=!0;;i++,n++){var f,u,c=i<e.length?(typeof e[i])[0]:"";if(n>=t.length||"o"==(u=(typeof(f=t[n]))[0]))return!d||("u"==c?i>r&&!a:""==c!=a);if("u"==u){if(!d||"u"!=c)return!1}else if(d)if(c==u)if(i<=r){if(f!=e[i])return!1}else{if(a?f>e[i]:f<e[i])return!1;f!=e[i]&&(d=!1)}else if("s"!=c&&"n"!=c){if(a||i<=r)return!1;d=!1,i--}else{if(i<=r||u<c!=a)return!1;d=!1}else"s"!=c&&"n"!=c&&(d=!1,i--)}}var s=[],b=s.pop.bind(s);for(n=1;n<e.length;n++){var p=e[n];s.push(1==p?b()|b():2==p?b()&b():p?l(p,t):!b())}return!!b()},d=(e,t)=>{var r=x.S[e];if(!r||!x.o(r,t))throw new Error("Shared module "+t+" doesn't exist in shared scope "+e);return r},f=(e,t)=>{var r=e[t];return(t=Object.keys(r).reduce(((e,t)=>!e||n(e,t)?t:e),0))&&r[t]},u=(e,t)=>{var r=e[t];return Object.keys(r).reduce(((e,t)=>!e||!r[e].loaded&&n(e,t)?t:e),0)},c=(e,t,r,a)=>"Unsatisfied version "+r+" from "+(r&&e[t][r].from)+" of shared singleton module "+t+" (required "+i(a)+")",s=(e,t,r,a)=>{var o=u(e,r);return l(a,o)||h(c(e,r,o,a)),v(e[r][o])},b=(e,t,r)=>{var a=e[t];return(t=Object.keys(a).reduce(((e,t)=>!l(r,t)||e&&!n(e,t)?e:t),0))&&a[t]},p=(e,t,r,a)=>{var o=e[r];return"No satisfying version ("+i(a)+") of shared module "+r+" found in shared scope "+t+".\nAvailable versions: "+Object.keys(o).map((e=>e+" from "+o[e].from)).join(", ")},h=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},m=(e,t,r,a)=>{h(p(e,t,r,a))},v=e=>(e.loaded=1,e.get()),g=(y=e=>function(t,r,a,o){var n=x.I(t);return n&&n.then?n.then(e.bind(e,t,x.S[t],r,a,o)):e(t,x.S[t],r,a,o)})(((e,t,r,a)=>(d(e,r),v(b(t,r,a)||m(t,e,r,a)||f(t,r))))),j=y(((e,t,r,a)=>(d(e,r),s(t,0,r,a)))),w=y(((e,t,r,a,o)=>{var n=t&&x.o(t,r)&&b(t,r,a);return n?v(n):o()})),P={},_={6029:()=>j("default","react",[1,18,2,0]),630:()=>j("default","@jupyterlab/notebook",[1,4,4,1]),649:()=>j("default","@jupyterlab/ui-components",[1,4,4,1]),1793:()=>j("default","@jupyterlab/settingregistry",[1,4,4,1]),2535:()=>w("default","react-bootstrap-icons",[1,1,10,3],(()=>x.e(744).then((()=>()=>x(1744))))),2691:()=>j("default","@jupyterlab/apputils",[1,4,5,1]),2779:()=>w("default","marked",[1,11,1,1],(()=>x.e(308).then((()=>()=>x(3308))))),2957:()=>w("default","socket.io-client",[1,4,7,5],(()=>x.e(817).then((()=>()=>x(4817))))),3231:()=>w("default","react-infinite-scroll-component",[1,6,1,0],(()=>x.e(738).then((()=>()=>x(8533))))),3748:()=>w("default","@reduxjs/toolkit",[1,1,9,5],(()=>x.e(426).then((()=>()=>x(8426))))),4882:()=>j("default","@lumino/widgets",[1,2,3,1,,"alpha",0]),4901:()=>j("default","@lumino/signaling",[1,2,0,0]),5297:()=>j("default","@jupyterlab/filebrowser",[1,4,4,1]),5609:()=>g("default","@jupyterlab/outputarea",[1,4,4,1]),5999:()=>j("default","@jupyterlab/application",[1,4,4,1]),7717:()=>j("default","@lumino/disposable",[1,2,0,0]),7760:()=>w("default","react-redux",[1,8,0,5],(()=>Promise.all([x.e(981),x.e(704)]).then((()=>()=>x(2981))))),7885:()=>w("default","react-chartjs-2",[1,5,2,0],(()=>Promise.all([x.e(459),x.e(798)]).then((()=>()=>x(5376))))),8025:()=>j("default","@jupyterlab/codemirror",[1,4,4,1]),8352:()=>w("default","chart.js",[1,4,4,1],(()=>x.e(708).then((()=>()=>x(4708))))),8559:()=>w("default","react-bootstrap",[1,2,10,0],(()=>Promise.all([x.e(18),x.e(704)]).then((()=>()=>x(1018))))),8641:()=>j("default","@jupyterlab/coreutils",[1,6,4,1]),9145:()=>j("default","@jupyterlab/codeeditor",[1,4,4,1]),9158:()=>j("default","@jupyterlab/rendermime",[1,4,4,1]),7704:()=>j("default","react-dom",[1,18,2,0]),6459:()=>w("default","chart.js",[1,4,1,1],(()=>x.e(708).then((()=>()=>x(4708))))),1373:()=>j("default","@codemirror/language",[1,6,0,0]),6211:()=>j("default","@codemirror/view",[1,6,9,6]),851:()=>j("default","@lezer/common",[1,1,0,0]),7138:()=>j("default","@lezer/highlight",[1,1,0,0]),8204:()=>j("default","@codemirror/state",[1,6,2,0])},k={29:[6029],211:[6211],373:[1373],376:[851,7138,8204],459:[6459],704:[7704],995:[630,649,1793,2535,2691,2779,2957,3231,3748,4882,4901,5297,5609,5999,7717,7760,7885,8025,8352,8559,8641,9145,9158]},O={},x.f.consumes=(e,t)=>{x.o(k,e)&&k[e].forEach((e=>{if(x.o(P,e))return t.push(P[e]);if(!O[e]){var r=t=>{P[e]=0,x.m[e]=r=>{delete x.c[e],r.exports=t()}};O[e]=!0;var a=t=>{delete P[e],x.m[e]=r=>{throw delete x.c[e],t}};try{var o=_[e]();o.then?t.push(P[e]=o.then(r).catch(a)):r(o)}catch(e){a(e)}}}))},(()=>{x.b=document.baseURI||self.location.href;var e={217:0};x.f.j=(t,r)=>{var a=x.o(e,t)?e[t]:void 0;if(0!==a)if(a)r.push(a[2]);else if(/^(37[36]|211|29|459|704)$/.test(t))e[t]=0;else{var o=new Promise(((r,o)=>a=e[t]=[r,o]));r.push(a[2]=o);var n=x.p+x.u(t),i=new Error;x.l(n,(r=>{if(x.o(e,t)&&(0!==(a=e[t])&&(e[t]=void 0),a)){var o=r&&("load"===r.type?"missing":r.type),n=r&&r.target&&r.target.src;i.message="Loading chunk "+t+" failed.\n("+o+": "+n+")",i.name="ChunkLoadError",i.type=o,i.request=n,a[1](i)}}),"chunk-"+t,t)}};var t=(t,r)=>{var a,o,[n,i,l]=r,d=0;if(n.some((t=>0!==e[t]))){for(a in i)x.o(i,a)&&(x.m[a]=i[a]);l&&l(x)}for(t&&t(r);d<n.length;d++)o=n[d],x.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self.webpackChunkjupyterlab_unianalytics_dashboard=self.webpackChunkjupyterlab_unianalytics_dashboard||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),x.nc=void 0;var T=x(7426);(_JUPYTERLAB=void 0===_JUPYTERLAB?{}:_JUPYTERLAB).jupyterlab_unianalytics_dashboard=T})();
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
jupyterlab_unianalytics_dashboard/__init__.py,sha256=Za7P6E6Jv74S8VEb4YbFMfhrdWLw9aBjmLGwQg7UszU,1184
|
|
2
|
-
jupyterlab_unianalytics_dashboard/_version.py,sha256=PPaAF3bypFaaT0WYaqNOKEWilnVsOYeFlrVc967dU3U,172
|
|
3
|
-
jupyterlab_unianalytics_dashboard/handlers.py,sha256=-3HQHnkvyG7YAs9q6BDkC1oL1QMJ4zIs9v5j5PuNaNg,1677
|
|
4
|
-
jupyterlab_unianalytics_dashboard/tests/__init__.py,sha256=buA7EWWBnEQOljAcEsF8zyfrdTu9B93Khlk10h88Uu0,63
|
|
5
|
-
jupyterlab_unianalytics_dashboard/tests/test_handlers.py,sha256=kEg161G0pn_N7ghOphUc_FQHb1O7v6-FzxjPfgcOSzo,176
|
|
6
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/etc/jupyter/jupyter_server_config.d/jupyterlab_unianalytics_dashboard.json,sha256=FYXMI4pI920t2RK3w0RFVwhs0ymqABl4WwPE9KVjAOc,108
|
|
7
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/package.json,sha256=ILhxiVuxjuCDTGnH_0D900ZceBTKTOVAKphDZJlj03I,6679
|
|
8
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/schemas/jupyterlab_unianalytics_dashboard/endpoint.json,sha256=0nq-MWVjckwP5ddK4dQxMZJTFkug-1lZwQuw8WWDbcs,724
|
|
9
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/schemas/jupyterlab_unianalytics_dashboard/package.json.orig,sha256=7Rv5VTmrTYH_Qz7hnO-lVh0rENtCXy2_0PWiC4zkSL8,7571
|
|
10
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/schemas/jupyterlab_unianalytics_dashboard/plugin.json,sha256=dLRO78tDnd45DUKsCmij83AFY_4F9CaL6gT61YnlDz0,1895
|
|
11
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/10.1e5c908a94fc4b83c2e5.js,sha256=HlyQipT8S4PC5ZaZiR4jl8gvs1l0EjP2CAABadOryzA,3272
|
|
12
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/18.759fbf2374edc42b5c3e.js,sha256=OoCQg2OYr0cRReBXDCWZGvXzQuaf4ACT2O75qlyS9pk,119059
|
|
13
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/18.759fbf2374edc42b5c3e.js.LICENSE.txt,sha256=LGdwyBXWbtsopwVyjsXCIwoc-zj70yxAOCOR7b1bAc4,371
|
|
14
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/308.d9da4ce35f354c6f12e1.js,sha256=2dpM4181TG8S4X9h1smTZxuEj_36_9dnyXP9WAnDc6U,34889
|
|
15
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/39.5a3b28a79ba693a9b627.js,sha256=Wjsop5umk6m2JxM1X-FUHXGjLx9VerTKARofOQiIC5Y,232611
|
|
16
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/426.a7015f9dfda310972c1b.js,sha256=pwFfnf2jEJcsG33rpOBqjadU2yl8Kjd4VKHiJBS1_Wg,44909
|
|
17
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/533.f7a454b11ba5cd79dc0c.js,sha256=96RUsRulzXncDHnRMeE-83L9WkHjRyeskAjMBXcxM9U,7674
|
|
18
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/546.61a6a427e418e90a1a97.js,sha256=YaakJ-QY6QoalzwaIT_z7Ay16xnRBj9Y5Xo_40yKUa8,26401
|
|
19
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/563.b613f734176cb51510ef.js,sha256=thP3NBdstRUQ7z0MMVTt-dRX0zdI1U6SizErxsB6vc8,2553
|
|
20
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/638.d37271636c4d956096de.js,sha256=03JxY2xNlWCW3tFQbU-MnQvO_hqaV2wVLdTT5xK5cvA,211595
|
|
21
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/708.323c3614d31a5918cfaf.js,sha256=k5bjg7Tc0b_QeKLqQ3GySYfe-fD_Cmk2MrJw6Dy2hdA,202771
|
|
22
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/708.323c3614d31a5918cfaf.js.LICENSE.txt,sha256=xIUBoDm2Q1zieFkjrEGq0jGXVbMtAPXzrFW0MnO1d1A,257
|
|
23
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/738.f4338fb8d8276b96c3f3.js,sha256=9DOPuNgna5bD8wIHhr93Z5uK0M47OPhsUnVvDiLLrsg,7674
|
|
24
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/744.329dc4d1ed2f5c918266.js,sha256=Mp3E0e0vXJGCZhMtTLSgKoSM-NGSX33ZbxwqSwSQEM4,3046069
|
|
25
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/798.33a8f0893a66574e9259.js,sha256=M6jwiTpmV06SWWqqAniO0FVkkVtJBOINHU5raofwhrU,2553
|
|
26
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/817.6437962faf359015be36.js,sha256=ZDeWL681kBW-Nh_mO8SLNp7Ubys4AvSMEC4MT7tL4f0,40299
|
|
27
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/981.ebb9e1d6122980b5ff0e.js,sha256=b3dzzmlqyg5AOql0QCQyFAvZdTOXFSrKNiTWaIYNJf0,14181
|
|
28
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/981.ebb9e1d6122980b5ff0e.js.LICENSE.txt,sha256=Al4BU9vlGm0hvL2QgWwO5THo2WCGIoDqSdIpipPsBSw,1023
|
|
29
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/995.2d1dc4fba5107831fa2e.js,sha256=LR3E-6UQeDH6LkeEVbvFVH5FAmPRYpc5O0xNRhwLaSM,93173
|
|
30
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/remoteEntry.3425971eb7c2e96ae65b.js,sha256=NCWXHrfC6WrmW--giNEkz4bmKub0B9xVjSDOuY0fxlU,11778
|
|
31
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/style.js,sha256=rhrGR_lSZihMhH1ui5EcIiqrutyovwjkTWTs-UdKcws,176
|
|
32
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/static/third-party-licenses.json,sha256=nLcszpHEN1Krc4Al2MJvvhJp9HdL9gh9UL2eTvhqtiQ,74820
|
|
33
|
-
jupyterlab_unianalytics_dashboard-4.0.21.data/data/share/jupyter/labextensions/jupyterlab_unianalytics_dashboard/install.json,sha256=LnBFne2_G6SmJApbmJhffpyKMU9sTqEnMQP67RrBoxw,227
|
|
34
|
-
jupyterlab_unianalytics_dashboard-4.0.21.dist-info/METADATA,sha256=-FO7I67b-h63KdoBvL1lm0AKKCTahsdMHBDktOUHW04,9103
|
|
35
|
-
jupyterlab_unianalytics_dashboard-4.0.21.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
36
|
-
jupyterlab_unianalytics_dashboard-4.0.21.dist-info/licenses/LICENSE,sha256=Sb-joYLOnOQ8lowGMAF92ZpW1tyMcQlo8BLGKQlIFws,1078
|
|
37
|
-
jupyterlab_unianalytics_dashboard-4.0.21.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|