Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-jupyter-docprovider for openSUSE:Factory checked in at 2025-06-23 14:56:33 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-jupyter-docprovider (Old) and /work/SRC/openSUSE:Factory/.python-jupyter-docprovider.new.7067 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jupyter-docprovider" Mon Jun 23 14:56:33 2025 rev:3 rq:1287606 version:2.0.2 Changes: -------- --- /work/SRC/openSUSE:Factory/python-jupyter-docprovider/python-jupyter-docprovider.changes 2025-01-31 16:02:45.211899993 +0100 +++ /work/SRC/openSUSE:Factory/.python-jupyter-docprovider.new.7067/python-jupyter-docprovider.changes 2025-06-23 14:56:56.400995949 +0200 @@ -1,0 +2,6 @@ +Sat Jun 21 16:59:44 UTC 2025 - Ben Greiner <c...@bnavigator.de> + +- Update to 2.0.2 + * New subpackage version for jupyter-collaboration 4.0.2 + +------------------------------------------------------------------- Old: ---- jupyter_docprovider-1.1.0.tar.gz New: ---- jupyter_docprovider-2.0.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-jupyter-docprovider.spec ++++++ --- /var/tmp/diff_new_pack.1yx7rC/_old 2025-06-23 14:56:57.041022714 +0200 +++ /var/tmp/diff_new_pack.1yx7rC/_new 2025-06-23 14:56:57.041022714 +0200 @@ -16,9 +16,9 @@ # -%define distversion 1.1 +%define distversion 2.0.2 Name: python-jupyter-docprovider -Version: 1.1.0 +Version: 2.0.2 Release: 0 Summary: Jupyter extension integrating collaborative shared models License: BSD-3-Clause ++++++ jupyter_docprovider-1.1.0.tar.gz -> jupyter_docprovider-2.0.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_docprovider-1.1.0/PKG-INFO new/jupyter_docprovider-2.0.2/PKG-INFO --- old/jupyter_docprovider-1.1.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_docprovider-2.0.2/PKG-INFO 2020-02-02 01:00:00.000000000 +0100 @@ -1,6 +1,6 @@ -Metadata-Version: 2.3 +Metadata-Version: 2.4 Name: jupyter-docprovider -Version: 1.1.0 +Version: 2.0.2 Summary: JupyterLab/Jupyter Notebook 7+ extension integrating collaborative shared models. Project-URL: Documentation, https://jupyterlab-realtime-collaboration.readthedocs.io/ Project-URL: Repository, https://github.com/jupyterlab/jupyter-collaboration @@ -64,6 +64,7 @@ # Copyright (c) Jupyter Development Team. # Distributed under the terms of the Modified BSD License. +License-File: LICENSE Classifier: Framework :: Jupyter Classifier: Framework :: Jupyter :: JupyterLab Classifier: Framework :: Jupyter :: JupyterLab :: 4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_docprovider-1.1.0/jupyter_docprovider/_version.py new/jupyter_docprovider-2.0.2/jupyter_docprovider/_version.py --- old/jupyter_docprovider-1.1.0/jupyter_docprovider/_version.py 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_docprovider-2.0.2/jupyter_docprovider/_version.py 2020-02-02 01:00:00.000000000 +0100 @@ -1 +1 @@ -__version__ = "1.1.0" +__version__ = "2.0.2" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/package.json new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/package.json --- old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/package.json 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/package.json 2020-02-02 01:00:00.000000000 +0100 @@ -1,6 +1,6 @@ { "name": "@jupyter/docprovider-extension", - "version": "3.1.0", + "version": "4.0.2", "description": "JupyterLab - Collaborative Shared Models", "keywords": [ "jupyter", @@ -53,29 +53,29 @@ "watch:labextension": "jupyter labextension watch ." }, "dependencies": { - "@jupyter/collaborative-drive": "^3.1.0", - "@jupyter/docprovider": "^3.1.0", - "@jupyter/ydoc": "^2.0.0 || ^3.0.0", - "@jupyterlab/application": "^4.2.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/docregistry": "^4.2.0", - "@jupyterlab/filebrowser": "^4.2.0", - "@jupyterlab/fileeditor": "^4.2.0", - "@jupyterlab/logconsole": "^4.2.0", - "@jupyterlab/notebook": "^4.2.0", - "@jupyterlab/settingregistry": "^4.2.0", - "@jupyterlab/translation": "^4.2.0", - "@lumino/commands": "^2.1.0", + "@jupyter/collaborative-drive": "^4.0.2", + "@jupyter/docprovider": "^4.0.2", + "@jupyter/ydoc": "^2.1.3 || ^3.0.0", + "@jupyterlab/application": "^4.4.0", + "@jupyterlab/apputils": "^4.4.0", + "@jupyterlab/docregistry": "^4.4.0", + "@jupyterlab/filebrowser": "^4.4.0", + "@jupyterlab/fileeditor": "^4.4.0", + "@jupyterlab/logconsole": "^4.4.0", + "@jupyterlab/notebook": "^4.4.0", + "@jupyterlab/settingregistry": "^4.4.0", + "@jupyterlab/translation": "^4.4.0", + "@lumino/commands": "^2.3.2", "y-protocols": "^1.0.5", "y-websocket": "^1.3.15", "yjs": "^13.5.40" }, "devDependencies": { - "@jupyterlab/builder": "^4.0.0", + "@jupyterlab/builder": "^4.4.0", "@types/react": "~18.3.1", "npm-run-all": "^4.1.5", "rimraf": "^4.1.2", - "typescript": "~5.0.4" + "typescript": "~5.1.6" }, "publishConfig": { "access": "public" @@ -128,7 +128,7 @@ } }, "_build": { - "load": "static/remoteEntry.2870ff42f76951af28a0.js", + "load": "static/remoteEntry.236b886ba495f686c573.js", "extension": "./extension", "style": "./style" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/240.b89bafe21cc031ed1f8d.js new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/static/240.b89bafe21cc031ed1f8d.js --- old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/240.b89bafe21cc031ed1f8d.js 1970-01-01 01:00:00.000000000 +0100 +++ new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/static/240.b89bafe21cc031ed1f8d.js 2020-02-02 01:00:00.000000000 +0100 @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_jupyter_docprovider_extension=self.webpackChunk_jupyter_docprovider_extension||[]).push([[240],{68:(e,t,n)=>{n.d(t,{A:()=>a});var o=n(758),r=n.n(o),s=n(935),i=n.n(s)()(r());i.push([e.id,"/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|---------------------------------------------------------------------------- */\n\n.jp-timelineSliderWrapper .jp-sliderContainer{\n display: flex;\n align-items: center;\n}\n\n.jp-Slider {\n height: 4.5px\n}\n\n#jp-slider-status-bar {\n display: flex;\n}\n\n.jp-timestampDisplay {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 6px;\n}\n\n.jp-restoreBtnContainer {\n width: 192px;\n}\n\n.jp-ToolbarButtonComponent.jp-restoreBtn {\n cursor: pointer;\n color: var(--jp-layout-color2);\n width: 100%;\n background: var(--jp-accept-color-normal)\n}\n",""]);con st a=i},935:e=>{e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",o=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),o&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),o&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,o,r,s){"string"==typeof e&&(e=[[null,e,void 0]]);var i={};if(o)for(var a=0;a<this.length;a++){var c=this[a][0];null!=c&&(i[c]=!0)}for(var l=0;l<e.length;l++){var d=[].concat(e[l]);o&&i[d[0]]||(void 0!==s&&(void 0===d[5]||(d[1]="@layer".concat(d[5].length>0?" ".concat(d[5]):""," {").concat(d[1],"}")),d[5]=s),n&&(d[2]?(d[1]="@media ".concat(d[2]," {").concat(d[1],"}"),d[2]=n):d[2]=n),r&&(d[4]?(d[1]="@supports (".concat(d[4],") {").concat(d[1],"}"),d[4]=r):d[4]="".concat(r)),t.push(d))}},t}},758:e=>{e.exports=function(e){return e[1]}},591:e=>{var t=[];function n(e){for(var n=-1,o=0;o<t.length;o++)if(t[o].identifier===e){n=o;br eak}return n}function o(e,o){for(var s={},i=[],a=0;a<e.length;a++){var c=e[a],l=o.base?c[0]+o.base:c[0],d=s[l]||0,h="".concat(l," ").concat(d);s[l]=d+1;var u=n(h),p={css:c[1],media:c[2],sourceMap:c[3],supports:c[4],layer:c[5]};if(-1!==u)t[u].references++,t[u].updater(p);else{var m=r(p,o);o.byIndex=a,t.splice(a,0,{identifier:h,updater:m,references:1})}i.push(h)}return i}function r(e,t){var n=t.domAPI(t);return n.update(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap&&t.supports===e.supports&&t.layer===e.layer)return;n.update(e=t)}else n.remove()}}e.exports=function(e,r){var s=o(e=e||[],r=r||{});return function(e){e=e||[];for(var i=0;i<s.length;i++){var a=n(s[i]);t[a].references--}for(var c=o(e,r),l=0;l<s.length;l++){var d=n(s[l]);0===t[d].references&&(t[d].updater(),t.splice(d,1))}s=c}}},128:e=>{var t={};e.exports=function(e,n){var o=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLI FrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(n)}},51:e=>{e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},855:(e,t,n)=>{e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},359:e=>{e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var o="";n.supports&&(o+="@supports (".concat(n.supports,") {")),n.media&&(o+="@media ".concat(n.media," {"));var r=void 0!==n.layer;r&&(o+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),o+=n.css,r&&(o+="}"),n.media&&(o+="}"),n.supports&&(o+="}");var s=n.sourceMap;s&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat (btoa(unescape(encodeURIComponent(JSON.stringify(s))))," */")),t.styleTagTransform(o,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},656:e=>{e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},240:(e,t,n)=>{n.r(t),n.d(t,{ForkManager:()=>K,IForkManagerToken:()=>J,JUPYTER_COLLABORATION_FORK_EVENTS_URI:()=>q,NotebookCellServerExecutor:()=>l,ROOM_FORK_URL:()=>p,RtcContentProvider:()=>k,TimelineWidget:()=>B,WebSocketAwarenessProvider:()=>r,WebSocketProvider:()=>w,requestAPI:()=>m,requestDocSession:()=>f,requestDocumentTimeline:()=>v,requestUndoRedo:()=>g});var o=n(560);class r extends o.WebsocketProvider{constructor(e){super(e.url,e.roomID,e.awareness.doc,{awareness:e.awareness}),this._isDisposed=!1,this._awareness=e.awareness,this._user=e.user,this._user.ready.then((()=>this._onUserChanged(this._user))).catch ((e=>console.error(e))),this._user.userChanged.connect(this._onUserChanged,this)}get isDisposed(){return this._isDisposed}dispose(){this._isDisposed||(this._user.userChanged.disconnect(this._onUserChanged,this),this._isDisposed=!0,this.destroy())}_onUserChanged(e){this._awareness.setLocalStateField("user",e.identity)}}var s=n(569),i=n(808),a=n(695),c=n(579);class l{constructor(e){var t;this._serverSettings=null!==(t=e.serverSettings)&&void 0!==t?t:a.ServerConnection.makeSettings()}async runCell({cell:e,notebook:t,notebookConfig:n,onCellExecuted:o,onCellExecutionScheduled:r,sessionContext:l,sessionDialogs:d,translator:h}){var u,p,m;const f=(h=null!=h?h:c.nullTranslator).load("jupyterlab");switch(e.model.type){case"markdown":e.rendered=!0,e.inputHidden=!1,o({cell:e,success:!0});break;case"code":if(l){if(l.isTerminating){await(0,s.showDialog)({title:f.__("Kernel Terminating"),body:f.__("The kernel for %1 appears to be terminating. You can not run any cell for now.",null===(u=l.session) ||void 0===u?void 0:u.path),buttons:[s.Dialog.okButton()]});break}if(l.pendingInput)return await(0,s.showDialog)({title:f.__("Cell not executed due to pending input"),body:f.__("The cell has not been executed to avoid kernel deadlock as there is another pending input! Submit your pending input and try again."),buttons:[s.Dialog.okButton()]}),!1;if(l.hasNoKernel&&await l.startKernel()&&d&&await d.selectKernel(l),l.hasNoKernel)return e.model.sharedModel.transact((()=>{e.model.clearExecution()})),!0;const n=null===(m=null===(p=null==l?void 0:l.session)||void 0===p?void 0:p.kernel)||void 0===m?void 0:m.id,c=i.URLExt.join(this._serverSettings.baseUrl,`api/kernels/${n}/execute`),h=e.model.sharedModel.getId(),v=t.sharedModel.getState("document_id"),g={method:"POST",body:JSON.stringify({cell_id:h,document_id:v})};r({cell:e});let y=!1;try{y=(await a.ServerConnection.makeRequest(c,g,this._serverSettings)).ok}catch(t){if(o({cell:e,success:!1}),e.isDisposed)return!1;throw t}return o({cell:e,suc cess:y}),!0}e.model.sharedModel.transact((()=>{e.model.clearExecution()}),!1)}return Promise.resolve(!0)}}const d="api/collaboration/session",h="api/collaboration/undo_redo",u="api/collaboration/timeline",p="api/collaboration/fork";async function m(e="",t={}){const n=a.ServerConnection.makeSettings(),o=i.URLExt.join(n.baseUrl,e);let r;try{r=await a.ServerConnection.makeRequest(o,t,n)}catch(e){throw new a.ServerConnection.NetworkError(e)}let s=await r.text();if(s.length>0)try{s=JSON.parse(s)}catch(e){console.error("Not a JSON response body.",r)}if(!r.ok)throw new a.ServerConnection.ResponseError(r,s.message||s);return s}async function f(e,t,n){const o=a.ServerConnection.makeSettings(),r=i.URLExt.join(o.baseUrl,d,encodeURIComponent(n)),s={method:"PUT",body:JSON.stringify({format:e,type:t})};let c;try{c=await a.ServerConnection.makeRequest(r,s,o)}catch(e){throw new a.ServerConnection.NetworkError(e)}let l=await c.text();if(l.length>0)try{l=JSON.parse(l)}catch(e){console.log("Not a JSON response body.",c)}if(!c.ok)throw new a.ServerConnection.ResponseError(c,l.message||l);return l}async function v(e,t,n){const o=a.ServerConnection.makeSettings();let r=i.URLExt.join(o.baseUrl,u,n);r=r.concat(`?format=${e}&&type=${t}`);const s={method:"GET"};let c;try{c=await a.ServerConnection.makeRequest(r,s,o)}catch(e){throw new a.ServerConnection.NetworkError(e)}return c}async function g(e,t,n,o){const r=a.ServerConnection.makeSettings();let s=i.URLExt.join(r.baseUrl,h,encodeURIComponent(e));s=s.concat(`?action=${t}&&steps=${n}&&forkRoom=${o}`);const c={method:"PUT"};let l;try{l=await a.ServerConnection.makeRequest(s,c,r)}catch(e){throw new a.ServerConnection.NetworkError(e)}let d=await l.text();if(d.length>0)try{d=JSON.parse(d)}catch(e){console.log("Not a JSON response body.",l)}if(!l.ok)throw new a.ServerConnection.ResponseError(l,d.message||d);return d}var y=n(602),_=n(262);class w{constructor(e){this._onConnectionClosed=e=>{1003===e.code&&(console.error("Document provider cl osed:",e.reason),(0,s.showErrorMessage)(this._trans.__("Document session error"),e.reason,[s.Dialog.okButton()]),this._sharedModel.dispose())},this._onSync=e=>{e&&(this._yWebsocketProvider&&(this._yWebsocketProvider.off("sync",this._onSync),this._sharedModel.ydoc.getMap("state").set("document_id",this._yWebsocketProvider.roomname)),this._ready.resolve())},this._ready=new _.PromiseDelegate,this._isDisposed=!1,this._path=e.path,this._contentType=e.contentType,this._format=e.format,this._serverUrl=e.url,this._sharedModel=e.model,this._awareness=e.model.awareness,this._yWebsocketProvider=null,this._trans=e.translator;const t=e.user;t.ready.then((()=>{this._onUserChanged(t)})).catch((e=>console.error(e))),t.userChanged.connect(this._onUserChanged,this),this._connect().catch((e=>console.warn(e)))}get isDisposed(){return this._isDisposed}get ready(){return this._ready.promise}get contentType(){return this._contentType}get format(){return this._format}dispose(){var e,t,n;this.isDisposed||(t his._isDisposed=!0,null===(e=this._yWebsocketProvider)||void 0===e||e.off("connection-close",this._onConnectionClosed),null===(t=this._yWebsocketProvider)||void 0===t||t.off("sync",this._onSync),null===(n=this._yWebsocketProvider)||void 0===n||n.destroy(),this._disconnect(),y.Signal.clearData(this))}async reconnect(){this._disconnect(),this._connect()}async _connect(){const e=await f(this._format,this._contentType,this._path);this._yWebsocketProvider=new o.WebsocketProvider(this._serverUrl,`${e.format}:${e.type}:${e.fileId}`,this._sharedModel.ydoc,{disableBc:!0,params:{sessionId:e.sessionId},awareness:this._awareness}),this._yWebsocketProvider.on("sync",this._onSync),this._yWebsocketProvider.on("connection-close",this._onConnectionClosed)}async connectToForkDoc(e,t){this._disconnect(),this._yWebsocketProvider=new o.WebsocketProvider(this._serverUrl,e,this._sharedModel.ydoc,{disableBc:!0,params:{sessionId:t},awareness:this._awareness})}get wsProvider(){return this._yWebsocketProvider }_disconnect(){var e,t,n;null===(e=this._yWebsocketProvider)||void 0===e||e.off("connection-close",this._onConnectionClosed),null===(t=this._yWebsocketProvider)||void 0===t||t.off("sync",this._onSync),null===(n=this._yWebsocketProvider)||void 0===n||n.destroy(),this._yWebsocketProvider=null}_onUserChanged(e){this._awareness.setLocalStateField("user",e.identity)}}const S="true"===i.PageConfig.getOption("disableRTC");class k extends a.RestContentProvider{constructor(e){super(e),this._onCreate=(e,t)=>{var n,o;if("string"==typeof e.format)try{const r=new w({url:i.URLExt.join(this._serverSettings.wsUrl,"api/collaboration/room"),path:e.path,format:e.format,contentType:e.contentType,model:t,user:this._user,translator:this._trans}),s=((null===(n=this._globalAwareness)||void 0===n?void 0:n.getLocalState())||{}).documents||[];s.includes(e.path)||(s.push(e.path),null===(o=this._globalAwareness)||void 0===o||o.setLocalStateField("documents",s));const a=`${e.format}:${e.contentType}:${e.path}`;t his._providers.set(a,r),t.changed.connect((async(n,o)=>{var r;if(!o.stateChange)return;const s=o.stateChange.filter((e=>"hash"===e.name));if(0===s.length)return;s.length>1&&console.error("Unexpected multiple changes to hash value in a single transaction");const i=s[0],a=null!==(r=t.state.path)&&void 0!==r?r:e.path,c=await this.get(a,{content:!1});this._ydriveFileChanged.emit({type:"save",newValue:{...c,hash:i.newValue},oldValue:{hash:i.oldValue}})})),t.disposed.connect((()=>{var t,n;const o=this._providers.get(a);o&&(o.dispose(),this._providers.delete(a));const r=((null===(t=this._globalAwareness)||void 0===t?void 0:t.getLocalState())||{}).documents||[],s=r.indexOf(e.path);s>-1&&r.splice(s,1),null===(n=this._globalAwareness)||void 0===n||n.setLocalStateField("documents",r)}))}catch(t){console.error(`Failed to open websocket connection for ${e.path}.\n:${t}`)}},this._ydriveFileChanged=new y.Signal(this),this._user=e.user,this._trans=e.trans,this._globalAwareness=e.globalAwareness,thi s._serverSettings=e.serverSettings,this.sharedModelFactory=new b(this._onCreate),this._providers=new Map}get providers(){return this._providers}async get(e,t){if(t&&t.format&&t.type){const n=`${t.format}:${t.type}:${e}`,o=this._providers.get(n);if(o){const[n]=await Promise.all([super.get(e,{...t,content:!1}),o.ready]);return{...n,format:t.format}}}return super.get(e,t)}async save(e,t={}){if(t.format&&t.type){const n=`${t.format}:${t.type}:${e}`;if(this._providers.get(n)){const n={type:t.type,format:t.format,content:!1};return this.get(e,n)}}return super.save(e,t)}get fileChanged(){return this._ydriveFileChanged}}class b{constructor(e){this._onCreate=e,this.collaborative=!S,this.documentFactories=new Map}registerDocumentFactory(e,t){if(this.documentFactories.has(e))throw new Error(`The content type ${e} already exists`);this.documentFactories.set(e,t)}createNew(e){if("string"==typeof e.format){if(this.collaborative&&e.collaborative&&this.documentFactories.has(e.contentType)){const t= this.documentFactories.get(e.contentType)(e);return this._onCreate(e,t),t}}else console.warn(`Only defined format are supported; got ${e.format}.`)}}var C=n(345),T=n.n(C),E=n(591),x=n.n(E),R=n(359),U=n.n(R),D=n(128),P=n.n(D),$=n(855),N=n.n($),j=n(51),I=n.n(j),L=n(656),M=n.n(L),F=n(68),A={};A.styleTagTransform=M(),A.setAttributes=N(),A.insert=P().bind(null,"head"),A.domAPI=U(),A.insertStyleElement=I(),x()(F.A,A),F.A&&F.A.locals&&F.A.locals;var W=n(989);const O=({apiURL:e,provider:t,contentType:n,format:o,documentTimelineUrl:r})=>{const[i,a]=(0,C.useState)({roomId:"",timestamps:[],forkRoom:"",sessionId:""}),[c,l]=(0,C.useState)(i.timestamps.length-1),[d,h]=(0,C.useState)(!1),[u,p]=(0,C.useState)(!1),m=(0,C.useRef)(!0),y=(0,C.useRef)(!0),_=(0,C.useRef)(null);function w(e){try{const t=new URL(e).pathname,n=t.lastIndexOf(r);if(-1===n)throw new Error(`API segment "${r}" not found in URL.`);return t.slice(n+r.length)}catch(e){return console.error("Invalid URL or unable to extract filename: ",e),""}}return T().createElement("div",{className:"jp-sliderContainer"},T().createElement("div",{onClick:()=>{!async function(r){try{if(m.current){const i=await v(o,n,r);if(!i.ok)throw 404===i.status?new Error("Not found"):503===i.status?new Error("WebSocket closed"):new Error(`Failed to fetch data: ${i.statusText}`);const c=await i.text();let d={roomId:"",timestamps:[],forkRoom:"",sessionId:""};return c&&(s.Notification.warning("Document is now in read-only mode. Changes will not be saved.",{autoClose:2500}),d=JSON.parse(c),a(d),l(d.timestamps.length-1),t.connectToForkDoc(d.forkRoom,d.sessionId),_.current=await f(o,n,w(e))),h(!0),m.current=!1,d}}catch(e){console.error("Error fetching data:",e)}}(w(e))},className:"jp-mod-highlighted",title:"Document Timeline"},T().createElement(W.historyIcon.react,{marginRight:"4px"})),d&&T().createElement("div",{className:"jp-timestampDisplay"},T().createElement("input",{type:"range",min:0,max:i.timestamps.length-1,value:c,onChange:async e=>{const t=parseInt(e.target.value),n=Math.abs(t-c);try{const e=function(e){return e<c?"undo":"redo"}(t);if(l(t),y.current&&(p(!0),y.current=!1),!_.current)return void console.error("Session is not initialized");await g(`${_.current.format}:${_.current.type}:${_.current.fileId}`,e,n,i.forkRoom)}catch(e){console.error("Error fetching or applying updates:",e)}},className:"jp-Slider"}),T().createElement("div",null,T().createElement("strong",null,w(e).split("/").pop()," ")," "),u&&T().createElement("div",{className:"jp-restoreBtnContainer"},T().createElement("button",{onClick:async()=>{if(!_.current)return void console.error("Session is not initialized");const e=await g(`${_.current.format}:${_.current.type}:${_.current.fileId}`,"restore",0,i.forkRoom);200===e.code?(s.Notification.success(e.status,{autoClose:4e3}),t.reconnect(),h(!1),m.current=!0):s.Notification.error(e.status,{autoClose:4e3})},className:"jp-ToolbarButtonComponent jp-restoreBtn"},"Restore version"," ",(e=>{const t=new Date(1e3* e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")} ${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}`})(i.timestamps[c])))))};class B extends s.ReactWidget{constructor(e,t,n,o,r){super(),this.apiURL=e,this.provider=t,this.contentType=n,this.format=o,this.documentTimelineUrl=r,this.addClass("jp-timelineSliderWrapper")}render(){return C.createElement(O,{key:this.apiURL,apiURL:this.apiURL,provider:this.provider,contentType:this.contentType,format:this.format,documentTimelineUrl:this.documentTimelineUrl})}updateContent(e,t){this.apiURL=e,this.provider=t,this.contentType=this.provider.contentType,this.format=this.provider.format,this.update()}}const J=new _.Token("@jupyter/docprovider:IForkManagerToken"),q="https://schema.jupyter.org/jupyter_collaboration/fork/v1";class K{constructor(e){this._disposed=!1,this._forkAddedSignal=new y.Signal(this),this._forkDe letedSignal=new y.Signal(this);const{contentProvider:t,eventManager:n}=e;this._contentProvider=t,this._eventManager=n,this._eventManager.stream.connect(this._handleEvent,this)}get isDisposed(){return this._disposed}get forkAdded(){return this._forkAddedSignal}get forkDeleted(){return this._forkDeletedSignal}dispose(){var e;this._disposed||(null===(e=this._eventManager)||void 0===e||e.stream.disconnect(this._handleEvent),this._disposed=!0)}async createFork(e){const{rootId:t,title:n,description:o,synchronize:r}=e,s={method:"PUT",body:JSON.stringify({title:n,description:o,synchronize:r})},a=i.URLExt.join(p,t);return await m(a,s)}async getAllForks(e){const t=i.URLExt.join(p,e);return await m(t,{method:"GET"})}async deleteFork(e){const{forkId:t,merge:n}=e,o=i.URLExt.join(p,t),r=i.URLExt.objectToQueryString({merge:n});await m(`${o}${r}`,{method:"DELETE"})}getProvider(e){const{documentPath:t,format:n,type:o}=e,r=this._contentProvider;if(r){const e=t;return r.providers.get(`${n}:${o}:${e}`) }}_handleEvent(e,t){if(t.schema_id===q)switch(t.action){case"create":this._forkAddedSignal.emit(t);break;case"delete":this._forkDeletedSignal.emit(t)}}}}}]); \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/240.dd1dbd559d6c95c85b3f.js new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/static/240.dd1dbd559d6c95c85b3f.js --- old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/240.dd1dbd559d6c95c85b3f.js 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/static/240.dd1dbd559d6c95c85b3f.js 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_jupyter_docprovider_extension=self.webpackChunk_jupyter_docprovider_extension||[]).push([[240],{68:(e,t,n)=>{n.d(t,{A:()=>a});var o=n(758),r=n.n(o),s=n(935),i=n.n(s)()(r());i.push([e.id,"/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|---------------------------------------------------------------------------- */\n\n.jp-timelineSliderWrapper .jp-sliderContainer{\n display: flex;\n align-items: center;\n}\n\n.jp-Slider {\n height: 4.5px\n}\n\n#jp-slider-status-bar {\n display: flex;\n}\n\n.jp-timestampDisplay {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 6px;\n}\n\n.jp-restoreBtnContainer {\n width: 192px;\n}\n\n.jp-ToolbarButtonComponent.jp-restoreBtn {\n cursor: pointer;\n color: var(--jp-layout-color2);\n width: 100%;\n background: var(--jp-accept-color-normal)\n}\n",""]);con st a=i},935:e=>{e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",o=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),o&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),o&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,o,r,s){"string"==typeof e&&(e=[[null,e,void 0]]);var i={};if(o)for(var a=0;a<this.length;a++){var c=this[a][0];null!=c&&(i[c]=!0)}for(var l=0;l<e.length;l++){var d=[].concat(e[l]);o&&i[d[0]]||(void 0!==s&&(void 0===d[5]||(d[1]="@layer".concat(d[5].length>0?" ".concat(d[5]):""," {").concat(d[1],"}")),d[5]=s),n&&(d[2]?(d[1]="@media ".concat(d[2]," {").concat(d[1],"}"),d[2]=n):d[2]=n),r&&(d[4]?(d[1]="@supports (".concat(d[4],") {").concat(d[1],"}"),d[4]=r):d[4]="".concat(r)),t.push(d))}},t}},758:e=>{e.exports=function(e){return e[1]}},591:e=>{var t=[];function n(e){for(var n=-1,o=0;o<t.length;o++)if(t[o].identifier===e){n=o;br eak}return n}function o(e,o){for(var s={},i=[],a=0;a<e.length;a++){var c=e[a],l=o.base?c[0]+o.base:c[0],d=s[l]||0,h="".concat(l," ").concat(d);s[l]=d+1;var u=n(h),p={css:c[1],media:c[2],sourceMap:c[3],supports:c[4],layer:c[5]};if(-1!==u)t[u].references++,t[u].updater(p);else{var m=r(p,o);o.byIndex=a,t.splice(a,0,{identifier:h,updater:m,references:1})}i.push(h)}return i}function r(e,t){var n=t.domAPI(t);return n.update(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap&&t.supports===e.supports&&t.layer===e.layer)return;n.update(e=t)}else n.remove()}}e.exports=function(e,r){var s=o(e=e||[],r=r||{});return function(e){e=e||[];for(var i=0;i<s.length;i++){var a=n(s[i]);t[a].references--}for(var c=o(e,r),l=0;l<s.length;l++){var d=n(s[l]);0===t[d].references&&(t[d].updater(),t.splice(d,1))}s=c}}},128:e=>{var t={};e.exports=function(e,n){var o=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLI FrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(n)}},51:e=>{e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},855:(e,t,n)=>{e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},740:e=>{e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var o="";n.supports&&(o+="@supports (".concat(n.supports,") {")),n.media&&(o+="@media ".concat(n.media," {"));var r=void 0!==n.layer;r&&(o+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),o+=n.css,r&&(o+="}"),n.media&&(o+="}"),n.supports&&(o+="}");var s=n.sourceMap;s&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat (btoa(unescape(encodeURIComponent(JSON.stringify(s))))," */")),t.styleTagTransform(o,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},656:e=>{e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},240:(e,t,n)=>{n.r(t),n.d(t,{ForkManager:()=>K,IForkManagerToken:()=>J,JUPYTER_COLLABORATION_FORK_EVENTS_URI:()=>q,NotebookCellServerExecutor:()=>l,ROOM_FORK_URL:()=>p,TimelineWidget:()=>B,WebSocketAwarenessProvider:()=>r,WebSocketProvider:()=>w,YDrive:()=>k,requestAPI:()=>m,requestDocSession:()=>f,requestDocumentTimeline:()=>v,requestUndoRedo:()=>g});var o=n(560);class r extends o.WebsocketProvider{constructor(e){super(e.url,e.roomID,e.awareness.doc,{awareness:e.awareness}),this._isDisposed=!1,this._awareness=e.awareness,this._user=e.user,this._user.ready.then((()=>this._onUserChanged(this._user))).catch((e=>console .error(e))),this._user.userChanged.connect(this._onUserChanged,this)}get isDisposed(){return this._isDisposed}dispose(){this._isDisposed||(this._user.userChanged.disconnect(this._onUserChanged,this),this._isDisposed=!0,this.destroy())}_onUserChanged(e){this._awareness.setLocalStateField("user",e.identity)}}var s=n(123),i=n(672),a=n(943),c=n(624);class l{constructor(e){var t;this._serverSettings=null!==(t=e.serverSettings)&&void 0!==t?t:a.ServerConnection.makeSettings()}async runCell({cell:e,notebook:t,notebookConfig:n,onCellExecuted:o,onCellExecutionScheduled:r,sessionContext:l,sessionDialogs:d,translator:h}){var u,p,m;const f=(h=null!=h?h:c.nullTranslator).load("jupyterlab");switch(e.model.type){case"markdown":e.rendered=!0,e.inputHidden=!1,o({cell:e,success:!0});break;case"code":if(l){if(l.isTerminating){await(0,s.showDialog)({title:f.__("Kernel Terminating"),body:f.__("The kernel for %1 appears to be terminating. You can not run any cell for now.",null===(u=l.session)||void 0===u ?void 0:u.path),buttons:[s.Dialog.okButton()]});break}if(l.pendingInput)return await(0,s.showDialog)({title:f.__("Cell not executed due to pending input"),body:f.__("The cell has not been executed to avoid kernel deadlock as there is another pending input! Submit your pending input and try again."),buttons:[s.Dialog.okButton()]}),!1;if(l.hasNoKernel&&await l.startKernel()&&d&&await d.selectKernel(l),l.hasNoKernel)return e.model.sharedModel.transact((()=>{e.model.clearExecution()})),!0;const n=null===(m=null===(p=null==l?void 0:l.session)||void 0===p?void 0:p.kernel)||void 0===m?void 0:m.id,c=i.URLExt.join(this._serverSettings.baseUrl,`api/kernels/${n}/execute`),h=e.model.sharedModel.getId(),v=t.sharedModel.getState("document_id"),g={method:"POST",body:JSON.stringify({cell_id:h,document_id:v})};r({cell:e});let y=!1;try{y=(await a.ServerConnection.makeRequest(c,g,this._serverSettings)).ok}catch(t){if(o({cell:e,success:!1}),e.isDisposed)return!1;throw t}return o({cell:e,success:y}),!0} e.model.sharedModel.transact((()=>{e.model.clearExecution()}),!1)}return Promise.resolve(!0)}}const d="api/collaboration/session",h="api/collaboration/undo_redo",u="api/collaboration/timeline",p="api/collaboration/fork";async function m(e="",t={}){const n=a.ServerConnection.makeSettings(),o=i.URLExt.join(n.baseUrl,e);let r;try{r=await a.ServerConnection.makeRequest(o,t,n)}catch(e){throw new a.ServerConnection.NetworkError(e)}let s=await r.text();if(s.length>0)try{s=JSON.parse(s)}catch(e){console.error("Not a JSON response body.",r)}if(!r.ok)throw new a.ServerConnection.ResponseError(r,s.message||s);return s}async function f(e,t,n){const o=a.ServerConnection.makeSettings(),r=i.URLExt.join(o.baseUrl,d,encodeURIComponent(n)),s={method:"PUT",body:JSON.stringify({format:e,type:t})};let c;try{c=await a.ServerConnection.makeRequest(r,s,o)}catch(e){throw new a.ServerConnection.NetworkError(e)}let l=await c.text();if(l.length>0)try{l=JSON.parse(l)}catch(e){console.log("Not a JSON response bo dy.",c)}if(!c.ok)throw new a.ServerConnection.ResponseError(c,l.message||l);return l}async function v(e,t,n){const o=a.ServerConnection.makeSettings();let r=i.URLExt.join(o.baseUrl,u,n);r=r.concat(`?format=${e}&&type=${t}`);const s={method:"GET"};let c;try{c=await a.ServerConnection.makeRequest(r,s,o)}catch(e){throw new a.ServerConnection.NetworkError(e)}return c}async function g(e,t,n,o){const r=a.ServerConnection.makeSettings();let s=i.URLExt.join(r.baseUrl,h,encodeURIComponent(e));s=s.concat(`?action=${t}&&steps=${n}&&forkRoom=${o}`);const c={method:"PUT"};let l;try{l=await a.ServerConnection.makeRequest(s,c,r)}catch(e){throw new a.ServerConnection.NetworkError(e)}let d=await l.text();if(d.length>0)try{d=JSON.parse(d)}catch(e){console.log("Not a JSON response body.",l)}if(!l.ok)throw new a.ServerConnection.ResponseError(l,d.message||d);return d}var y=n(602),_=n(262);class w{constructor(e){this._onConnectionClosed=e=>{1003===e.code&&(console.error("Document provider closed:",e.rea son),(0,s.showErrorMessage)(this._trans.__("Document session error"),e.reason,[s.Dialog.okButton()]),this._sharedModel.dispose())},this._onSync=e=>{e&&(this._yWebsocketProvider&&(this._yWebsocketProvider.off("sync",this._onSync),this._sharedModel.ydoc.getMap("state").set("document_id",this._yWebsocketProvider.roomname)),this._ready.resolve())},this._ready=new _.PromiseDelegate,this._isDisposed=!1,this._path=e.path,this._contentType=e.contentType,this._format=e.format,this._serverUrl=e.url,this._sharedModel=e.model,this._awareness=e.model.awareness,this._yWebsocketProvider=null,this._trans=e.translator;const t=e.user;t.ready.then((()=>{this._onUserChanged(t)})).catch((e=>console.error(e))),t.userChanged.connect(this._onUserChanged,this),this._connect().catch((e=>console.warn(e)))}get isDisposed(){return this._isDisposed}get ready(){return this._ready.promise}get contentType(){return this._contentType}get format(){return this._format}dispose(){var e,t,n;this.isDisposed||(this._isDispo sed=!0,null===(e=this._yWebsocketProvider)||void 0===e||e.off("connection-close",this._onConnectionClosed),null===(t=this._yWebsocketProvider)||void 0===t||t.off("sync",this._onSync),null===(n=this._yWebsocketProvider)||void 0===n||n.destroy(),this._disconnect(),y.Signal.clearData(this))}async reconnect(){this._disconnect(),this._connect()}async _connect(){const e=await f(this._format,this._contentType,this._path);this._yWebsocketProvider=new o.WebsocketProvider(this._serverUrl,`${e.format}:${e.type}:${e.fileId}`,this._sharedModel.ydoc,{disableBc:!0,params:{sessionId:e.sessionId},awareness:this._awareness}),this._yWebsocketProvider.on("sync",this._onSync),this._yWebsocketProvider.on("connection-close",this._onConnectionClosed)}async connectToForkDoc(e,t){this._disconnect(),this._yWebsocketProvider=new o.WebsocketProvider(this._serverUrl,e,this._sharedModel.ydoc,{disableBc:!0,params:{sessionId:t},awareness:this._awareness})}get wsProvider(){return this._yWebsocketProvider}_disconnect (){var e,t,n;null===(e=this._yWebsocketProvider)||void 0===e||e.off("connection-close",this._onConnectionClosed),null===(t=this._yWebsocketProvider)||void 0===t||t.off("sync",this._onSync),null===(n=this._yWebsocketProvider)||void 0===n||n.destroy(),this._yWebsocketProvider=null}_onUserChanged(e){this._awareness.setLocalStateField("user",e.identity)}}const S="true"===i.PageConfig.getOption("disableRTC");class k extends a.Drive{constructor(e,t,n){super({name:"RTC"}),this._onCreate=(e,t)=>{var n,o;if("string"==typeof e.format)try{const r=new w({url:i.URLExt.join(this.serverSettings.wsUrl,"api/collaboration/room"),path:e.path,format:e.format,contentType:e.contentType,model:t,user:this._user,translator:this._trans}),s=((null===(n=this._globalAwareness)||void 0===n?void 0:n.getLocalState())||{}).documents||[];s.includes(e.path)||(s.push(`${this.name}:${e.path}`),null===(o=this._globalAwareness)||void 0===o||o.setLocalStateField("documents",s));const a=`${e.format}:${e.contentType}:${e.pa th}`;this._providers.set(a,r),t.changed.connect((async(n,o)=>{var r;if(!o.stateChange)return;const s=o.stateChange.filter((e=>"hash"===e.name));if(0===s.length)return;s.length>1&&console.error("Unexpected multiple changes to hash value in a single transaction");const i=s[0],a=null!==(r=t.state.path)&&void 0!==r?r:e.path,c=await this.get(a,{content:!1});this._ydriveFileChanged.emit({type:"save",newValue:{...c,hash:i.newValue},oldValue:{hash:i.oldValue}})})),t.disposed.connect((()=>{var t,n;const o=this._providers.get(a);o&&(o.dispose(),this._providers.delete(a));const r=((null===(t=this._globalAwareness)||void 0===t?void 0:t.getLocalState())||{}).documents||[],s=r.indexOf(`${this.name}:${e.path}`);s>-1&&r.splice(s,1),null===(n=this._globalAwareness)||void 0===n||n.setLocalStateField("documents",r)}))}catch(t){console.error(`Failed to open websocket connection for ${e.path}.\n:${t}`)}},this._ydriveFileChanged=new y.Signal(this),this._user=e,this._trans=t,this._globalAwareness=n,this._ providers=new Map,this.sharedModelFactory=new b(this._onCreate),super.fileChanged.connect(((e,t)=>{this._ydriveFileChanged.emit(t)}))}get providers(){return this._providers}dispose(){this.isDisposed||(this._providers.forEach((e=>e.dispose())),this._providers.clear(),super.dispose())}async get(e,t){if(t&&t.format&&t.type){const n=`${t.format}:${t.type}:${e}`,o=this._providers.get(n);if(o){const[n]=await Promise.all([super.get(e,{...t,content:!1}),o.ready]);return{...n,format:t.format}}}return super.get(e,t)}async save(e,t={}){if(t.format&&t.type){const n=`${t.format}:${t.type}:${e}`;if(this._providers.get(n)){const n={type:t.type,format:t.format,content:!1};return this.get(e,n)}}return super.save(e,t)}get fileChanged(){return this._ydriveFileChanged}}class b{constructor(e){this._onCreate=e,this.collaborative=!S,this.documentFactories=new Map}registerDocumentFactory(e,t){if(this.documentFactories.has(e))throw new Error(`The content type ${e} already exists`);this.documentFactories.set (e,t)}createNew(e){if("string"==typeof e.format){if(this.collaborative&&e.collaborative&&this.documentFactories.has(e.contentType)){const t=this.documentFactories.get(e.contentType)(e);return this._onCreate(e,t),t}}else console.warn(`Only defined format are supported; got ${e.format}.`)}}var C=n(345),T=n.n(C),E=n(591),x=n.n(E),R=n(740),U=n.n(R),D=n(128),$=n.n(D),N=n(855),P=n.n(N),j=n(51),I=n.n(j),L=n(656),M=n.n(L),F=n(68),W={};W.styleTagTransform=M(),W.setAttributes=P(),W.insert=$().bind(null,"head"),W.domAPI=U(),W.insertStyleElement=I(),x()(F.A,W),F.A&&F.A.locals&&F.A.locals;var A=n(597);const O=({apiURL:e,provider:t,contentType:n,format:o,documentTimelineUrl:r})=>{const[i,a]=(0,C.useState)({roomId:"",timestamps:[],forkRoom:"",sessionId:""}),[c,l]=(0,C.useState)(i.timestamps.length-1),[d,h]=(0,C.useState)(!1),[u,p]=(0,C.useState)(!1),m=(0,C.useRef)(!0),y=(0,C.useRef)(!0),_=(0,C.useRef)(null);function w(e){try{const t=new URL(e).pathname,n=t.lastIndexOf(r);if(-1===n)throw new Error( `API segment "${r}" not found in URL.`);return t.slice(n+r.length)}catch(e){return console.error("Invalid URL or unable to extract filename:",e),""}}return T().createElement("div",{className:"jp-sliderContainer"},T().createElement("div",{onClick:()=>{!async function(r){try{if(m.current){const i=await v(o,n,r);if(!i.ok)throw 404===i.status?new Error("Not found"):503===i.status?new Error("WebSocket closed"):new Error(`Failed to fetch data: ${i.statusText}`);const c=await i.text();let d={roomId:"",timestamps:[],forkRoom:"",sessionId:""};return c&&(s.Notification.warning("Document is now in read-only mode. Changes will not be saved.",{autoClose:2500}),d=JSON.parse(c),a(d),l(d.timestamps.length-1),t.connectToForkDoc(d.forkRoom,d.sessionId),_.current=await f(o,n,w(e))),h(!0),m.current=!1,d}}catch(e){console.error("Error fetching data:",e)}}(w(e))},className:"jp-mod-highlighted",title:"Document Timeline"},T().createElement(A.historyIcon.react,{marginRight:"4px"})),d&&T().createElement("div ",{className:"jp-timestampDisplay"},T().createElement("input",{type:"range",min:0,max:i.timestamps.length-1,value:c,onChange:async e=>{const t=parseInt(e.target.value),n=Math.abs(t-c);try{const e=function(e){return e<c?"undo":"redo"}(t);if(l(t),y.current&&(p(!0),y.current=!1),!_.current)return void console.error("Session is not initialized");await g(`${_.current.format}:${_.current.type}:${_.current.fileId}`,e,n,i.forkRoom)}catch(e){console.error("Error fetching or applying updates:",e)}},className:"jp-Slider"}),T().createElement("div",null,T().createElement("strong",null,w(e).split("/").pop()," ")," "),u&&T().createElement("div",{className:"jp-restoreBtnContainer"},T().createElement("button",{onClick:async()=>{if(!_.current)return void console.error("Session is not initialized");const e=await g(`${_.current.format}:${_.current.type}:${_.current.fileId}`,"restore",0,i.forkRoom);200===e.code?(s.Notification.success(e.status,{autoClose:4e3}),t.reconnect(),h(!1),m.current=!0):s.Notific ation.error(e.status,{autoClose:4e3})},className:"jp-ToolbarButtonComponent jp-restoreBtn"},"Restore version"," ",(e=>{const t=new Date(1e3*e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")} ${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}`})(i.timestamps[c])))))};class B extends s.ReactWidget{constructor(e,t,n,o,r){super(),this.apiURL=e,this.provider=t,this.contentType=n,this.format=o,this.documentTimelineUrl=r,this.addClass("jp-timelineSliderWrapper")}render(){return C.createElement(O,{key:this.apiURL,apiURL:this.apiURL,provider:this.provider,contentType:this.contentType,format:this.format,documentTimelineUrl:this.documentTimelineUrl})}updateContent(e,t){this.apiURL=e,this.provider=t,this.contentType=this.provider.contentType,this.format=this.provider.format,this.update()}}const J=new _.Token("@jupyter/docprovider:IForkManagerToken"),q="https://sche ma.jupyter.org/jupyter_collaboration/fork/v1";class K{constructor(e){this._disposed=!1,this._forkAddedSignal=new y.Signal(this),this._forkDeletedSignal=new y.Signal(this);const{drive:t,eventManager:n}=e;this._drive=t,this._eventManager=n,this._eventManager.stream.connect(this._handleEvent,this)}get isDisposed(){return this._disposed}get forkAdded(){return this._forkAddedSignal}get forkDeleted(){return this._forkDeletedSignal}dispose(){var e;this._disposed||(null===(e=this._eventManager)||void 0===e||e.stream.disconnect(this._handleEvent),this._disposed=!0)}async createFork(e){const{rootId:t,title:n,description:o,synchronize:r}=e,s={method:"PUT",body:JSON.stringify({title:n,description:o,synchronize:r})},a=i.URLExt.join(p,t);return await m(a,s)}async getAllForks(e){const t=i.URLExt.join(p,e);return await m(t,{method:"GET"})}async deleteFork(e){const{forkId:t,merge:n}=e,o=i.URLExt.join(p,t),r=i.URLExt.objectToQueryString({merge:n});await m(`${o}${r}`,{method:"DELETE"})}getProvider(e){ const{documentPath:t,format:n,type:o}=e,r=this._drive;if(r){const e=r.name;let s=t;return t.startsWith(e)&&(s=t.slice(e.length+1)),r.providers.get(`${n}:${o}:${s}`)}}_handleEvent(e,t){if(t.schema_id===q)switch(t.action){case"create":this._forkAddedSignal.emit(t);break;case"delete":this._forkDeletedSignal.emit(t)}}}}}]); \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/444.12adfae9a2b50e91531f.js new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/static/444.12adfae9a2b50e91531f.js --- old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/444.12adfae9a2b50e91531f.js 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/static/444.12adfae9a2b50e91531f.js 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_jupyter_docprovider_extension=self.webpackChunk_jupyter_docprovider_extension||[]).push([[444],{444:(e,o,r)=>{r.r(o),r.d(o,{ICollaborativeDrive:()=>a,IGlobalAwareness:()=>l});var n=r(262);const a=new n.Token("@jupyter/collaboration-extension:ICollaborativeDrive"),l=new n.Token("@jupyter/collaboration:IGlobalAwareness")}}]); \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/444.13de0fd44849e3f7d780.js new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/static/444.13de0fd44849e3f7d780.js --- old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/444.13de0fd44849e3f7d780.js 1970-01-01 01:00:00.000000000 +0100 +++ new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/static/444.13de0fd44849e3f7d780.js 2020-02-02 01:00:00.000000000 +0100 @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_jupyter_docprovider_extension=self.webpackChunk_jupyter_docprovider_extension||[]).push([[444],{444:(e,o,n)=>{n.r(o),n.d(o,{ICollaborativeContentProvider:()=>t,IGlobalAwareness:()=>a});var r=n(262);const t=new r.Token("@jupyter/collaboration-extension:ICollaborativeContentProvider"),a=new r.Token("@jupyter/collaboration:IGlobalAwareness")}}]); \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/703.17b6b904d18a75a9f3c6.js new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/static/703.17b6b904d18a75a9f3c6.js --- old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/703.17b6b904d18a75a9f3c6.js 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/static/703.17b6b904d18a75a9f3c6.js 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_jupyter_docprovider_extension=self.webpackChunk_jupyter_docprovider_extension||[]).push([[703],{703:(e,t,o)=>{o.r(t),o.d(t,{default:()=>D});var r,a=o(180),n=o(123),i=o(256),s=o(920),l=o(295),d=o(243),c=o(343),u=o(977),p=o(227),v=o(624),g=o(0),h=o(236),b=o(132),w=o(672);!function(e){e.openPath="filebrowser:open-path"}(r||(r={}));const m="api/collaboration/timeline",y="The file %1 has been opened with two different views. This is not supported. Please close this view; otherwise, some of your edits may not be saved properly.",f={id:"@jupyter/docprovider-extension:drive",description:"The default collaborative drive provider",provides:h.ICollaborativeDrive,requires:[v.ITranslator],optional:[h.IGlobalAwareness],activate:(e,t,o)=>{const r=t.load("jupyter_collaboration"),a=new b.YDrive(e.serviceManager.user,r,o);return e.serviceManager.contents.addDrive(a),a}},x={id:"@jupyter/docprovider-extension:yfile",description:"Plugin to register the shared model factor y for the content type 'file'",autoStart:!0,requires:[h.ICollaborativeDrive],optional:[],activate:(e,t)=>{t.sharedModelFactory.registerDocumentFactory("file",(()=>new g.YFile))}},I={id:"@jupyter/docprovider-extension:ynotebook",description:"Plugin to register the shared model factory for the content type 'notebook'",autoStart:!0,requires:[h.ICollaborativeDrive],optional:[p.ISettingRegistry],activate:(e,t,o)=>{let r=!0;o&&o.load("@jupyterlab/notebook-extension:tracker").then((e=>{const t=e=>{var t;const o=null==e?void 0:e.get("experimentalEnableDocumentWideUndoRedo").composite;r=null===(t=!o)||void 0===t||t};t(e),e.changed.connect((e=>t(e)))})),t.sharedModelFactory.registerDocumentFactory("notebook",(()=>new g.YNotebook({disableDocumentWideUndoRedo:r})))}},k={id:"@jupyter/docprovider-extension:statusBarTimeline",description:"Plugin to add a timeline slider to the status bar",autoStart:!0,requires:[l.IStatusBar,h.ICollaborativeDrive],activate:async(e,t,o)=>{try{let r=null,a=null;const n=async(t,r)=>{if(r&&"RTC"===t.split(":")[0]&&o){t=t.slice(o.name.length+1),a&&(a.dispose(),a=null);const[n,s]=r.split(":"),l=o.providers.get(`${n}:${s}:${t}`),d=w.URLExt.join(e.serviceManager.serverSettings.baseUrl,m,t);a=new b.TimelineWidget(d,l,l.contentType,l.format,m);const c=document.getElementById("jp-slider-status-bar");c&&!a.isAttached&&i.Widget.attach(a,c)}};e.shell.currentChanged&&e.shell.currentChanged.connect((async(e,t)=>{const o=t.newValue;a&&(a.dispose(),a=null),o&&"context"in o&&(await o.context.ready,await n(o.context.path,o.context.model.sharedModel.getState("document_id")))})),t&&(r||(r=new i.Widget,r.addClass("jp-StatusBar-GroupItem"),r.addClass("jp-mod-highlighted"),r.id="jp-slider-status-bar",t.registerStatusItem("jp-slider-status-bar",{item:r,align:"left",rank:4,isActive:()=>{const t=e.shell.currentWidget;if(t&&t.context&&"string"==typeof t.context.path){const e=t.context.path;return!!t.context.model.sharedModel.getState("document_id")&&"RTC"===e.split(":")[ 0]}return!1}})))}catch(e){console.error("Failed to activate statusBarTimeline plugin:",e)}}},_={id:"@jupyter/docprovider-extension:defaultFileBrowser",description:"The default file browser factory provider",provides:s.IDefaultFileBrowser,requires:[h.ICollaborativeDrive,s.IFileBrowserFactory],optional:[a.IRouter,a.JupyterFrontEnd.ITreeResolver,a.ILabShell,v.ITranslator],activate:async(e,t,o,r,a,n,i)=>{const{commands:s}=e,l=(null!=i?i:v.nullTranslator).load("jupyterlab");e.serviceManager.contents.addDrive(t);const d=o.createFileBrowser("filebrowser",{auto:!1,restore:!1,driveName:t.name});return d.node.setAttribute("role","region"),d.node.setAttribute("aria-label",l.__("File Browser Section")),C.restoreBrowser(d,s,r,a,n),d}},j={id:"@jupyter/docprovider-extension:logger",description:"A logging plugin for debugging purposes.",autoStart:!0,optional:[c.ILoggerRegistry,d.IEditorTracker,u.INotebookTracker,v.ITranslator],activate:(e,t,o,r,a)=>{const i=(null!=a?a:v.nullTranslator).load("jupyte r_collaboration"),s="https://schema.jupyter.org/jupyter_collaboration/session/v1";if(!t)return void e.serviceManager.events.stream.connect(((e,t)=>{var o,r;t.schema_id===s&&(console.debug(`[${t.room}(${t.path})] ${null!==(o=t.action)&&void 0!==o?o:""}: ${null!==(r=t.msg)&&void 0!==r?r:""}`),"WARNING"===t.level&&(0,n.showDialog)({title:i.__("Warning"),body:i.__(y,t.path),buttons:[n.Dialog.okButton()]}))}));const l=new Map,d=(e,o)=>{const r=t.getLogger(o.context.path);l.set(o.context.localPath,r),o.disposed.connect((e=>{l.delete(e.context.localPath)}))};o&&o.widgetAdded.connect(d),r&&r.widgetAdded.connect(d),(async()=>{var t,o;const{events:r}=e.serviceManager;for await(const e of r.stream)if(e.schema_id===s){const r=l.get(e.path);null==r||r.log({type:"text",level:e.level.toLowerCase(),data:`[${e.room}] ${null!==(t=e.action)&&void 0!==t?t:""}: ${null!==(o=e.msg)&&void 0!==o?o:""}`}),"WARNING"===e.level&&(0,n.showDialog)({title:i.__("Warning"),body:i.__(y,e.path),buttons:[n.Dialog.warnB utton({label:i.__("Ok")})]})}})()}};var C;!function(e){e.restoreBrowser=async function(e,t,o,a,n){const i="jp-mod-restoring";if(e.addClass(i),!o)return await e.model.restore(e.id),await e.model.refresh(),void e.removeClass(i);const s=async()=>{o.routed.disconnect(s);const l=await(null==a?void 0:a.paths);(null==l?void 0:l.file)||(null==l?void 0:l.browser)?(await e.model.restore(e.id,!1),l.file&&await t.execute(r.openPath,{path:l.file,dontShowBrowser:!0}),l.browser&&await t.execute(r.openPath,{path:l.browser,dontShowBrowser:!0})):(await e.model.restore(e.id),await e.model.refresh()),e.removeClass(i),(null==n?void 0:n.isEmpty("main"))&&t.execute("launcher:create")};o.routed.connect(s)}}(C||(C={}));const S={id:"@jupyter/docprovider-extension:notebook-cell-executor",description:"Add notebook cell executor that uses REST API instead of kernel protocol over WebSocket.",autoStart:!0,provides:u.INotebookCellExecutor,activate:e=>"true"===w.PageConfig.getOption("serverSideExecution")?new b.Not ebookCellServerExecutor({serverSettings:e.serviceManager.serverSettings}):Object.freeze({runCell:u.runCell})},T={id:"@jupyter/docprovider-extension:forkManager",autoStart:!0,requires:[h.ICollaborativeDrive],provides:b.IForkManagerToken,activate:(e,t)=>{const o=e.serviceManager.events;return new b.ForkManager({drive:t,eventManager:o})}},D=[f,x,I,_,j,S,k,T]}}]); \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/703.b02363b93dbf18450ce4.js new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/static/703.b02363b93dbf18450ce4.js --- old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/703.b02363b93dbf18450ce4.js 1970-01-01 01:00:00.000000000 +0100 +++ new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/static/703.b02363b93dbf18450ce4.js 2020-02-02 01:00:00.000000000 +0100 @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_jupyter_docprovider_extension=self.webpackChunk_jupyter_docprovider_extension||[]).push([[703],{703:(e,t,o)=>{o.r(t),o.d(t,{default:()=>k});var r=o(569),n=o(256),i=o(319),a=o(739),s=o(191),l=o(369),d=o(507),c=o(579),u=o(0),v=o(980),p=o(772),g=o(808);const h="api/collaboration/timeline",b="The file %1 has been opened with two different views. This is not supported. Please close this view; otherwise, some of your edits may not be saved properly.",y={id:"@jupyter/docprovider-extension:content-provider",description:"The RTC content provider",provides:v.ICollaborativeContentProvider,requires:[c.ITranslator],optional:[v.IGlobalAwareness],activate:(e,t,o)=>{const r=t.load("jupyter_collaboration"),n=e.serviceManager.contents.defaultDrive;if(!n)throw Error("Cannot initialize content provider: default drive property not accessible on contents manager instance.");const i=n.contentProviderRegistry;if(!i)throw Error("Cannot initialize content provider: no content provider registry.");const a=new p.RtcContentProvider({apiEndpoint:"/api/contents",serverSettings:n.serverSettings,user:e.serviceManager.user,trans:r,globalAwareness:o});return i.register("rtc",a),a}},m={id:"@jupyter/docprovider-extension:yfile",description:"Plugin to register the shared model factory for the content type 'file'",autoStart:!0,requires:[v.ICollaborativeContentProvider,a.IEditorWidgetFactory],activate:(e,t,o)=>{t.sharedModelFactory.registerDocumentFactory("file",(()=>new u.YFile)),o.contentProviderId="rtc"}},f={id:"@jupyter/docprovider-extension:ynotebook",description:"Plugin to register the shared model factory for the content type 'notebook'",autoStart:!0,requires:[v.ICollaborativeContentProvider,l.INotebookWidgetFactory],optional:[d.ISettingRegistry],activate:(e,t,o,r)=>{let n=!0;r&&r.load("@jupyterlab/notebook-extension:tracker").then((e=>{const t=e=>{var t;const o=null==e?void 0:e.get("experimentalEnableDocumentWideUndoRedo").composite;n=null===(t=!o)||void 0===t ||t};t(e),e.changed.connect((e=>t(e)))})),t.sharedModelFactory.registerDocumentFactory("notebook",(()=>new u.YNotebook({disableDocumentWideUndoRedo:n}))),o.contentProviderId="rtc"}},w={id:"@jupyter/docprovider-extension:statusBarTimeline",description:"Plugin to add a timeline slider to the status bar",autoStart:!0,requires:[i.IStatusBar,v.ICollaborativeContentProvider],activate:async(e,t,o)=>{try{let r=null,i=null;const a=async(t,r)=>{if(!r)return;i&&(i.dispose(),i=null);const[a,s]=r.split(":"),l=o.providers.get(`${a}:${s}:${t}`);if(!l)return;const d=l,c=g.URLExt.join(e.serviceManager.serverSettings.baseUrl,h,t);i=new p.TimelineWidget(c,d,d.contentType,d.format,h);const u=document.getElementById("jp-slider-status-bar");u&&!i.isAttached&&n.Widget.attach(i,u)};e.shell.currentChanged&&e.shell.currentChanged.connect((async(e,t)=>{const o=t.newValue;i&&(i.dispose(),i=null),o&&"context"in o&&(await o.context.ready,await a(o.context.path,o.context.model.sharedModel.getState("document_id")) )})),t&&(r||(r=new n.Widget,r.addClass("jp-StatusBar-GroupItem"),r.addClass("jp-mod-highlighted"),r.id="jp-slider-status-bar",t.registerStatusItem("jp-slider-status-bar",{item:r,align:"left",rank:4,isActive:()=>{var t,o;const r=e.shell.currentWidget;return(null===(o=null===(t=null==r?void 0:r.context)||void 0===t?void 0:t.model)||void 0===o?void 0:o.collaborative)||!1}})))}catch(e){console.error("Failed to activate statusBarTimeline plugin:",e)}}},k=[y,m,f,{id:"@jupyter/docprovider-extension:logger",description:"A logging plugin for debugging purposes.",autoStart:!0,optional:[s.ILoggerRegistry,a.IEditorTracker,l.INotebookTracker,c.ITranslator],activate:(e,t,o,n,i)=>{const a=(null!=i?i:c.nullTranslator).load("jupyter_collaboration"),s="https://schema.jupyter.org/jupyter_collaboration/session/v1";if(!t)return void e.serviceManager.events.stream.connect(((e,t)=>{var o,n;t.schema_id===s&&(console.debug(`[${t.room}(${t.path})] ${null!==(o=t.action)&&void 0!==o?o:""}: ${null!==(n=t.msg)&& void 0!==n?n:""}`),"WARNING"===t.level&&(0,r.showDialog)({title:a.__("Warning"),body:a.__(b,t.path),buttons:[r.Dialog.okButton()]}))}));const l=new Map,d=(e,o)=>{const r=t.getLogger(o.context.path);l.set(o.context.localPath,r),o.disposed.connect((e=>{l.delete(e.context.localPath)}))};o&&o.widgetAdded.connect(d),n&&n.widgetAdded.connect(d),(async()=>{var t,o;const{events:n}=e.serviceManager;for await(const e of n.stream)if(e.schema_id===s){const n=l.get(e.path);null==n||n.log({type:"text",level:e.level.toLowerCase(),data:`[${e.room}] ${null!==(t=e.action)&&void 0!==t?t:""}: ${null!==(o=e.msg)&&void 0!==o?o:""}`}),"WARNING"===e.level&&(0,r.showDialog)({title:a.__("Warning"),body:a.__(b,e.path),buttons:[r.Dialog.warnButton({label:a.__("Ok")})]})}})()}},{id:"@jupyter/docprovider-extension:notebook-cell-executor",description:"Add notebook cell executor that uses REST API instead of kernel protocol over WebSocket.",autoStart:!0,provides:l.INotebookCellExecutor,activate:e=>"true"===g.PageC onfig.getOption("serverSideExecution")?new p.NotebookCellServerExecutor({serverSettings:e.serviceManager.serverSettings}):Object.freeze({runCell:l.runCell})},w,{id:"@jupyter/docprovider-extension:forkManager",autoStart:!0,requires:[v.ICollaborativeContentProvider],provides:p.IForkManagerToken,activate:(e,t)=>{const o=e.serviceManager.events;return new p.ForkManager({contentProvider:t,eventManager:o})}}]}}]); \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/944.b26f5029dcd72a4e58bc.js new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/static/944.b26f5029dcd72a4e58bc.js --- old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/944.b26f5029dcd72a4e58bc.js 1970-01-01 01:00:00.000000000 +0100 +++ new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/static/944.b26f5029dcd72a4e58bc.js 2020-02-02 01:00:00.000000000 +0100 @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_jupyter_docprovider_extension=self.webpackChunk_jupyter_docprovider_extension||[]).push([[944],{78:(n,e,o)=>{o.d(e,{A:()=>u});var r=o(758),t=o.n(r),a=o(935),i=o.n(a),l=o(875),p=o(28),s=o(921),c=i()(t());c.i(l.A),c.i(p.A),c.i(s.A),c.push([n.id,"/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|---------------------------------------------------------------------------- */\n\n.jp-shared-link-body {\n user-select: none;\n}\n",""]);const u=c},875:(n,e,o)=>{o.d(e,{A:()=>l});var r=o(758),t=o.n(r),a=o(935),i=o.n(a)()(t());i.push([n.id,"/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|---------------------------------------------------------------------------- */\n\n.jp-MenuBar-label {\n margin-left: 25px;\n}\n\n.jp-MenuBar-anonymousIcon span {\n width: 24px;\n text-align: center;\n fill: var(--jp-ui-font-color1);\n color: var(--jp-ui-font-color1);\n}\n\n.jp-MenuBar-anonymousIcon,\n.jp-MenuBar-imageIcon {\n position: absolute;\n top: 1px;\n left: 8px;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n vertical-align: middle;\n border-radius: 100%;\n}\n\n.jp-MenuBar-imageIcon img {\n width: 24px;\n border-radius: 100%;\n fill: var(--jp-ui-font-color1);\n color: var(--jp-ui-font-color1);\n}\n\n.jp-UserMenu-caretDownIcon {\n height: 22px;\n position: relative;\n top: 15%;\n}\n",""]);const l=i},28:(n,e,o)=>{o.d(e,{A:()=>l});var r=o(758),t=o.n(r),a=o(935),i=o.n(a)()(t());i.push([n.id,"/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\n/************************************************************\n Main Panel\n*********************************** **************************/\n\n.jp-RTCPanel {\n min-width: var(--jp-sidebar-min-width) !important;\n color: var(--jp-ui-font-color1);\n background: var(--jp-layout-color1);\n font-size: var(--jp-ui-font-size1);\n}\n\n/************************************************************\n User Info Panel\n*************************************************************/\n.jp-UserInfoPanel {\n display: flex;\n flex-direction: column;\n max-height: 140px;\n padding-top: 3px;\n}\n\n.jp-UserInfo-Container {\n margin: 20px;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.jp-UserInfo-Icon {\n margin: auto;\n width: 50px;\n height: 50px;\n border-radius: 50px;\n display: inline-flex;\n align-items: center;\n}\n\n.jp-UserInfo-Icon span {\n margin: auto;\n text-align: center;\n font-size: 25px;\n fill: var(--jp-ui-font-color1);\n color: var(--jp-ui-font-color1);\n}\n\n.jp-UserInfo-Info {\n margin: 20px;\n display: inline-flex;\n fle x-direction: column;\n}\n\n.jp-UserInfo-Info label {\n font-weight: bold;\n fill: var(--jp-ui-font-color1);\n color: var(--jp-ui-font-color1);\n}\n\n.jp-UserInfo-Info input {\n text-decoration: none;\n border-top: none;\n border-left: none;\n border-right: none;\n border-color: var(--jp-ui-font-color1);\n border-width: 0.5px;\n background-color: transparent;\n fill: var(--jp-ui-font-color1);\n color: var(--jp-ui-font-color1);\n}\n\n/************************************************************\n Collaborators Info Panel\n*************************************************************/\n\n.jp-CollaboratorsPanel {\n overflow-y: auto;\n}\n\n.jp-CollaboratorsList {\n flex-direction: column;\n display: flex;\n z-index: 1000;\n}\n\n.jp-CollaboratorHeader {\n padding: 10px;\n display: flex;\n align-items: center;\n font-size: var(--jp-ui-font-size0);\n fill: var(--jp-ui-font-color1);\n color: var(--jp-ui-font-color1);\n}\n\n.jp-CollaboratorHeader > span {\ n padding-left: 7px;\n}\n\n.jp-ClickableCollaborator:hover {\n cursor: pointer;\n background-color: var(--jp-layout-color2);\n fill: var(--jp-ui-font-color0);\n color: var(--jp-ui-font-color0);\n}\n\n.jp-CollaboratorHeaderCollapser {\n transform: rotate(-90deg);\n margin: auto 0;\n height: 16px;\n}\n\n.jp-CollaboratorHeader:not(.jp-ClickableCollaborator) .jp-CollaboratorHeaderCollapser {\n visibility: hidden;\n}\n\n.jp-CollaboratorHeaderCollapser.jp-mod-expanded {\n transform: rotate(0deg);\n}\n\n.jp-CollaboratorIcon {\n border-radius: 100%;\n padding: 2px;\n width: 24px;\n height: 24px;\n display: flex;\n}\n\n.jp-CollaboratorIcon > span {\n text-align: center;\n margin: auto;\n font-size: 12px;\n fill: var(--jp-ui-font-color1);\n color: var(--jp-ui-font-color1);\n}\n\n.jp-CollaboratorFiles {\n padding-left: 1em;\n margin-top: 0;\n box-shadow: 0 2px 2px -2px rgb(0 0 0 / 24%);\n\n}\n",""]);const l=i},921:(n,e,o)=>{o.d(e,{A:()=>l});var r=o(758),t=o.n(r),a=o(935) ,i=o.n(a)()(t());i.push([n.id,"/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|---------------------------------------------------------------------------- */\n\n.jp-toolbar-users-item {\n flex-grow: 1;\n display: flex;\n flex-direction: row;\n}\n\n.jp-toolbar-users-item .jp-MenuBar-anonymousIcon,\n.jp-toolbar-users-item .jp-MenuBar-imageIcon {\n position: relative;\n left: 0;\n height: 22px;\n width: 22px;\n box-sizing: border-box;\n cursor: default;\n}\n",""]);const l=i},935:n=>{n.exports=function(n){var e=[];return e.toString=function(){return this.map((function(e){var o="",r=void 0!==e[5];return e[4]&&(o+="@supports (".concat(e[4],") {")),e[2]&&(o+="@media ".concat(e[2]," {")),r&&(o+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),o+=n(e),r&&(o+="}"),e[2]&&(o+="}"),e[4]&&(o+="}"),o})).join("")},e.i=function(n,o,r,t,a){"string "==typeof n&&(n=[[null,n,void 0]]);var i={};if(r)for(var l=0;l<this.length;l++){var p=this[l][0];null!=p&&(i[p]=!0)}for(var s=0;s<n.length;s++){var c=[].concat(n[s]);r&&i[c[0]]||(void 0!==a&&(void 0===c[5]||(c[1]="@layer".concat(c[5].length>0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=a),o&&(c[2]?(c[1]="@media ".concat(c[2]," {").concat(c[1],"}"),c[2]=o):c[2]=o),t&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=t):c[4]="".concat(t)),e.push(c))}},e}},758:n=>{n.exports=function(n){return n[1]}},591:n=>{var e=[];function o(n){for(var o=-1,r=0;r<e.length;r++)if(e[r].identifier===n){o=r;break}return o}function r(n,r){for(var a={},i=[],l=0;l<n.length;l++){var p=n[l],s=r.base?p[0]+r.base:p[0],c=a[s]||0,u="".concat(s," ").concat(c);a[s]=c+1;var d=o(u),f={css:p[1],media:p[2],sourceMap:p[3],supports:p[4],layer:p[5]};if(-1!==d)e[d].references++,e[d].updater(f);else{var m=t(f,r);r.byIndex=l,e.splice(l,0,{identifier:u,updater:m,references:1})}i.push(u)}return i}function t(n,e){var o=e.domAPI(e);return o.update(n),function(e){if(e){if(e.css===n.css&&e.media===n.media&&e.sourceMap===n.sourceMap&&e.supports===n.supports&&e.layer===n.layer)return;o.update(n=e)}else o.remove()}}n.exports=function(n,t){var a=r(n=n||[],t=t||{});return function(n){n=n||[];for(var i=0;i<a.length;i++){var l=o(a[i]);e[l].references--}for(var p=r(n,t),s=0;s<a.length;s++){var c=o(a[s]);0===e[c].references&&(e[c].updater(),e.splice(c,1))}a=p}}},128:n=>{var e={};n.exports=function(n,o){var r=function(n){if(void 0===e[n]){var o=document.querySelector(n);if(window.HTMLIFrameElement&&o instanceof window.HTMLIFrameElement)try{o=o.contentDocument.head}catch(n){o=null}e[n]=o}return e[n]}(n);if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(o)}},51:n=>{n.exports=function(n){var e=document.createElement("style");return n.setAttributes(e,n.attributes),n.insert(e,n.options),e}},855:(n,e,o)=>{n.exp orts=function(n){var e=o.nc;e&&n.setAttribute("nonce",e)}},359:n=>{n.exports=function(n){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var e=n.insertStyleElement(n);return{update:function(o){!function(n,e,o){var r="";o.supports&&(r+="@supports (".concat(o.supports,") {")),o.media&&(r+="@media ".concat(o.media," {"));var t=void 0!==o.layer;t&&(r+="@layer".concat(o.layer.length>0?" ".concat(o.layer):""," {")),r+=o.css,t&&(r+="}"),o.media&&(r+="}"),o.supports&&(r+="}");var a=o.sourceMap;a&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),e.styleTagTransform(r,n,e.options)}(e,n,o)},remove:function(){!function(n){if(null===n.parentNode)return!1;n.parentNode.removeChild(n)}(e)}}}},656:n=>{n.exports=function(n,e){if(e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}},944:(n ,e,o)=>{var r=o(591),t=o.n(r),a=o(359),i=o.n(a),l=o(128),p=o.n(l),s=o(855),c=o.n(s),u=o(51),d=o.n(u),f=o(656),m=o.n(f),v=o(78),h={};h.styleTagTransform=m(),h.setAttributes=c(),h.insert=p().bind(null,"head"),h.domAPI=i(),h.insertStyleElement=d(),t()(v.A,h),v.A&&v.A.locals&&v.A.locals}}]); \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/944.b85c55dff0f14165f872.js new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/static/944.b85c55dff0f14165f872.js --- old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/944.b85c55dff0f14165f872.js 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/static/944.b85c55dff0f14165f872.js 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_jupyter_docprovider_extension=self.webpackChunk_jupyter_docprovider_extension||[]).push([[944],{78:(n,e,o)=>{o.d(e,{A:()=>s});var r=o(758),t=o.n(r),a=o(935),i=o.n(a),l=o(875),p=o(28),c=i()(t());c.i(l.A),c.i(p.A),c.push([n.id,"/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|---------------------------------------------------------------------------- */\n\n.jp-shared-link-body {\n user-select: none;\n}\n",""]);const s=c},875:(n,e,o)=>{o.d(e,{A:()=>l});var r=o(758),t=o.n(r),a=o(935),i=o.n(a)()(t());i.push([n.id,"/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|---------------------------------------------------------------------------- */\n\n.jp-MenuBar-label {\n margin-left: 25px ;\n}\n\n.jp-MenuBar-anonymousIcon span {\n width: 24px;\n text-align: center;\n fill: var(--jp-ui-font-color1);\n color: var(--jp-ui-font-color1);\n}\n\n.jp-MenuBar-anonymousIcon,\n.jp-MenuBar-imageIcon {\n position: absolute;\n top: 1px;\n left: 8px;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n vertical-align: middle;\n border-radius: 100%;\n}\n\n.jp-MenuBar-imageIcon img {\n width: 24px;\n border-radius: 100%;\n fill: var(--jp-ui-font-color1);\n color: var(--jp-ui-font-color1);\n}\n\n.jp-UserMenu-caretDownIcon {\n height: 22px;\n position: relative;\n top: 15%;\n}\n",""]);const l=i},28:(n,e,o)=>{o.d(e,{A:()=>l});var r=o(758),t=o.n(r),a=o(935),i=o.n(a)()(t());i.push([n.id,"/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\n/************************************************************\n Main Panel\n***************************************************** ********/\n\n.jp-RTCPanel {\n min-width: var(--jp-sidebar-min-width) !important;\n color: var(--jp-ui-font-color1);\n background: var(--jp-layout-color1);\n font-size: var(--jp-ui-font-size1);\n}\n\n/************************************************************\n User Info Panel\n*************************************************************/\n.jp-UserInfoPanel {\n display: flex;\n flex-direction: column;\n max-height: 140px;\n padding-top: 3px;\n}\n\n.jp-UserInfo-Container {\n margin: 20px;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.jp-UserInfo-Icon {\n margin: auto;\n width: 50px;\n height: 50px;\n border-radius: 50px;\n display: inline-flex;\n align-items: center;\n}\n\n.jp-UserInfo-Icon span {\n margin: auto;\n text-align: center;\n font-size: 25px;\n fill: var(--jp-ui-font-color1);\n color: var(--jp-ui-font-color1);\n}\n\n.jp-UserInfo-Info {\n margin: 20px;\n display: inline-flex;\n flex-direction: colum n;\n}\n\n.jp-UserInfo-Info label {\n font-weight: bold;\n fill: var(--jp-ui-font-color1);\n color: var(--jp-ui-font-color1);\n}\n\n.jp-UserInfo-Info input {\n text-decoration: none;\n border-top: none;\n border-left: none;\n border-right: none;\n border-color: var(--jp-ui-font-color1);\n border-width: 0.5px;\n background-color: transparent;\n fill: var(--jp-ui-font-color1);\n color: var(--jp-ui-font-color1);\n}\n\n/************************************************************\n Collaborators Info Panel\n*************************************************************/\n\n.jp-CollaboratorsPanel {\n overflow-y: auto;\n}\n\n.jp-CollaboratorsList {\n flex-direction: column;\n display: flex;\n z-index: 1000;\n}\n\n.jp-CollaboratorHeader {\n padding: 10px;\n display: flex;\n align-items: center;\n font-size: var(--jp-ui-font-size0);\n fill: var(--jp-ui-font-color1);\n color: var(--jp-ui-font-color1);\n}\n\n.jp-CollaboratorHeader > span {\n padding-left: 7 px;\n}\n\n.jp-ClickableCollaborator:hover {\n cursor: pointer;\n background-color: var(--jp-layout-color2);\n fill: var(--jp-ui-font-color0);\n color: var(--jp-ui-font-color0);\n}\n\n.jp-CollaboratorHeaderCollapser {\n transform: rotate(-90deg);\n margin: auto 0;\n height: 16px;\n}\n\n.jp-CollaboratorHeader:not(.jp-ClickableCollaborator) .jp-CollaboratorHeaderCollapser {\n visibility: hidden;\n}\n\n.jp-CollaboratorHeaderCollapser.jp-mod-expanded {\n transform: rotate(0deg);\n}\n\n.jp-CollaboratorIcon {\n border-radius: 100%;\n padding: 2px;\n width: 24px;\n height: 24px;\n display: flex;\n}\n\n.jp-CollaboratorIcon > span {\n text-align: center;\n margin: auto;\n font-size: 12px;\n fill: var(--jp-ui-font-color1);\n color: var(--jp-ui-font-color1);\n}\n\n.jp-CollaboratorFiles {\n padding-left: 1em;\n margin-top: 0;\n box-shadow: 0 2px 2px -2px rgb(0 0 0 / 24%);\n\n}\n",""]);const l=i},935:n=>{n.exports=function(n){var e=[];return e.toString=function(){return this .map((function(e){var o="",r=void 0!==e[5];return e[4]&&(o+="@supports (".concat(e[4],") {")),e[2]&&(o+="@media ".concat(e[2]," {")),r&&(o+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),o+=n(e),r&&(o+="}"),e[2]&&(o+="}"),e[4]&&(o+="}"),o})).join("")},e.i=function(n,o,r,t,a){"string"==typeof n&&(n=[[null,n,void 0]]);var i={};if(r)for(var l=0;l<this.length;l++){var p=this[l][0];null!=p&&(i[p]=!0)}for(var c=0;c<n.length;c++){var s=[].concat(n[c]);r&&i[s[0]]||(void 0!==a&&(void 0===s[5]||(s[1]="@layer".concat(s[5].length>0?" ".concat(s[5]):""," {").concat(s[1],"}")),s[5]=a),o&&(s[2]?(s[1]="@media ".concat(s[2]," {").concat(s[1],"}"),s[2]=o):s[2]=o),t&&(s[4]?(s[1]="@supports (".concat(s[4],") {").concat(s[1],"}"),s[4]=t):s[4]="".concat(t)),e.push(s))}},e}},758:n=>{n.exports=function(n){return n[1]}},591:n=>{var e=[];function o(n){for(var o=-1,r=0;r<e.length;r++)if(e[r].identifier===n){o=r;break}return o}function r(n,r){for(var a={},i=[],l=0;l<n.length;l++){var p=n[l],c=r.base? p[0]+r.base:p[0],s=a[c]||0,u="".concat(c," ").concat(s);a[c]=s+1;var d=o(u),f={css:p[1],media:p[2],sourceMap:p[3],supports:p[4],layer:p[5]};if(-1!==d)e[d].references++,e[d].updater(f);else{var v=t(f,r);r.byIndex=l,e.splice(l,0,{identifier:u,updater:v,references:1})}i.push(u)}return i}function t(n,e){var o=e.domAPI(e);return o.update(n),function(e){if(e){if(e.css===n.css&&e.media===n.media&&e.sourceMap===n.sourceMap&&e.supports===n.supports&&e.layer===n.layer)return;o.update(n=e)}else o.remove()}}n.exports=function(n,t){var a=r(n=n||[],t=t||{});return function(n){n=n||[];for(var i=0;i<a.length;i++){var l=o(a[i]);e[l].references--}for(var p=r(n,t),c=0;c<a.length;c++){var s=o(a[c]);0===e[s].references&&(e[s].updater(),e.splice(s,1))}a=p}}},128:n=>{var e={};n.exports=function(n,o){var r=function(n){if(void 0===e[n]){var o=document.querySelector(n);if(window.HTMLIFrameElement&&o instanceof window.HTMLIFrameElement)try{o=o.contentDocument.head}catch(n){o=null}e[n]=o}return e[n]}(n);if(!r) throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(o)}},51:n=>{n.exports=function(n){var e=document.createElement("style");return n.setAttributes(e,n.attributes),n.insert(e,n.options),e}},855:(n,e,o)=>{n.exports=function(n){var e=o.nc;e&&n.setAttribute("nonce",e)}},740:n=>{n.exports=function(n){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var e=n.insertStyleElement(n);return{update:function(o){!function(n,e,o){var r="";o.supports&&(r+="@supports (".concat(o.supports,") {")),o.media&&(r+="@media ".concat(o.media," {"));var t=void 0!==o.layer;t&&(r+="@layer".concat(o.layer.length>0?" ".concat(o.layer):""," {")),r+=o.css,t&&(r+="}"),o.media&&(r+="}"),o.supports&&(r+="}");var a=o.sourceMap;a&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),e.styleTagTransform(r,n, e.options)}(e,n,o)},remove:function(){!function(n){if(null===n.parentNode)return!1;n.parentNode.removeChild(n)}(e)}}}},656:n=>{n.exports=function(n,e){if(e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}},944:(n,e,o)=>{var r=o(591),t=o.n(r),a=o(740),i=o.n(a),l=o(128),p=o.n(l),c=o(855),s=o.n(c),u=o(51),d=o.n(u),f=o(656),v=o.n(f),m=o(78),h={};h.styleTagTransform=v(),h.setAttributes=s(),h.insert=p().bind(null,"head"),h.domAPI=i(),h.insertStyleElement=d(),t()(m.A,h),m.A&&m.A.locals&&m.A.locals}}]); \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/remoteEntry.236b886ba495f686c573.js new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/static/remoteEntry.236b886ba495f686c573.js --- old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/remoteEntry.236b886ba495f686c573.js 1970-01-01 01:00:00.000000000 +0100 +++ new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/static/remoteEntry.236b886ba495f686c573.js 2020-02-02 01:00:00.000000000 +0100 @@ -0,0 +1 @@ +var _JUPYTERLAB;(()=>{"use strict";var e,r,t,o,n,a,i,l,u,s,d,f,c,p,v,h,y,m,b,g,j,w,P,S={496:(e,r,t)=>{var o={"./index":()=>Promise.all([t.e(738),t.e(453),t.e(703)]).then((()=>()=>t(703))),"./extension":()=>Promise.all([t.e(738),t.e(453),t.e(703)]).then((()=>()=>t(703))),"./style":()=>t.e(944).then((()=>()=>t(944)))},n=(e,r)=>(t.R=r,r=t.o(o,e)?o[e]():Promise.resolve().then((()=>{throw new Error('Module "'+e+'" does not exist in container.')})),t.R=void 0,r),a=(e,r)=>{if(t.S){var o="default",n=t.S[o];if(n&&n!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return t.S[o]=e,t.I(o,r)}};t.d(r,{get:()=>n,init:()=>a})}},k={};function x(e){var r=k[e];if(void 0!==r)return r.exports;var t=k[e]={id:e,exports:{}};return S[e](t,t.exports,x),t.exports}x.m=S,x.c=k,x.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return x.d(r,{a:r}),r},x.d=(e,r)=>{for(var t in r)x.o(r,t)&&!x.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[ t]})},x.f={},x.e=e=>Promise.all(Object.keys(x.f).reduce(((r,t)=>(x.f[t](e,r),r)),[])),x.u=e=>e+"."+{240:"b89bafe21cc031ed1f8d",444:"13de0fd44849e3f7d780",576:"21a3c1a9ebaebb58d346",703:"b02363b93dbf18450ce4",944:"b26f5029dcd72a4e58bc"}[e]+".js?v="+{240:"b89bafe21cc031ed1f8d",444:"13de0fd44849e3f7d780",576:"21a3c1a9ebaebb58d346",703:"b02363b93dbf18450ce4",944:"b26f5029dcd72a4e58bc"}[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,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="@jupyter/docprovider-extension:",x.l=(t,o,n,a)=>{if(e[t])e[t].push(o);else{var i,l;if(void 0!==n)for(var u=document.getElementsByTagName("script"),s=0;s<u.length;s++){var d=u[s];if(d.getAttribute("src")==t||d.getAttribute("data-webpack")==r+n){i=d;break}}i||(l=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,x.nc&&i.setAttribute("nonce",x.nc),i.setAttribute("d ata-webpack",r+n),i.src=t),e[t]=[o];var f=(r,o)=>{i.onerror=i.onload=null,clearTimeout(c);var n=e[t];if(delete e[t],i.parentNode&&i.parentNode.removeChild(i),n&&n.forEach((e=>e(o))),r)return r(o)},c=setTimeout(f.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=f.bind(null,i.onerror),i.onload=f.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={},r={};x.I=(t,o)=>{o||(o=[]);var n=r[t];if(n||(n=r[t]={}),!(o.indexOf(n)>=0)){if(o.push(n),e[t])return e[t];x.o(x.S,t)||(x.S[t]={});var a=x.S[t],i="@jupyter/docprovider-extension",l=(e,r,t,o)=>{var n=a[e]=a[e]||{},l=n[r];(!l||!l.loaded&&(!o!=!l.eager?o:i>l.from))&&(n[r]={get:t,from:i,eager:!!o})},u=[];return"default"===t&&(l("@jupyter/collaborative-drive","4.0.2",(()=>Promise.all([x.e(262),x.e(444)]).then((()=>()=>x(444))))),l("@jupyter/docprovid er-extension","4.0.2",(()=>Promise.all([x.e(738),x.e(453),x.e(703)]).then((()=>()=>x(703))))),l("@jupyter/docprovider","4.0.2",(()=>Promise.all([x.e(738),x.e(262),x.e(240)]).then((()=>()=>x(240))))),l("y-websocket","1.5.4",(()=>Promise.all([x.e(576),x.e(206)]).then((()=>()=>x(576)))))),e[t]=u.length?Promise.all(u).then((()=>e[t]=1)):1}}})(),(()=>{var e;x.g.importScripts&&(e=x.g.location+"");var r=x.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var o=t.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=t[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),x.p=e})(),t=e=>{var r=e=>e.split(".").map((e=>+e==e?+e:e)),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),o=t[1]?r(t[1]):[];return t[2]&&(o.length++,o.push.apply(o,r(t[2]))),t[3]&&(o.push([]),o.push.apply(o,r( t[3]))),o},o=(e,r)=>{e=t(e),r=t(r);for(var o=0;;){if(o>=e.length)return o<r.length&&"u"!=(typeof r[o])[0];var n=e[o],a=(typeof n)[0];if(o>=r.length)return"u"==a;var i=r[o],l=(typeof i)[0];if(a!=l)return"o"==a&&"n"==l||"s"==l||"u"==a;if("o"!=a&&"u"!=a&&n!=i)return n<i;o++}},n=e=>{var r=e[0],t="";if(1===e.length)return"*";if(r+.5){t+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var o=1,a=1;a<e.length;a++)o--,t+="u"==(typeof(l=e[a]))[0]?"-":(o>0?".":"")+(o=2,l);return t}var i=[];for(a=1;a<e.length;a++){var l=e[a];i.push(0===l?"not("+u()+")":1===l?"("+u()+" || "+u()+")":2===l?i.pop()+" "+i.pop():n(l))}return u();function u(){return i.pop().replace(/^\((.+)\)$/,"$1")}},a=(e,r)=>{if(0 in e){r=t(r);var o=e[0],n=o<0;n&&(o=-o-1);for(var i=0,l=1,u=!0;;l++,i++){var s,d,f=l<e.length?(typeof e[l])[0]:"";if(i>=r.length||"o"==(d=(typeof(s=r[i]))[0]))return!u||("u"==f?l>o&&!n:""==f!=n);if("u"==d){if(!u||"u"!=f)return!1}else if(u)if(f==d)if(l<=o){if(s!=e[l])return!1}else{if(n?s>e[l]:s<e[l] )return!1;s!=e[l]&&(u=!1)}else if("s"!=f&&"n"!=f){if(n||l<=o)return!1;u=!1,l--}else{if(l<=o||d<f!=n)return!1;u=!1}else"s"!=f&&"n"!=f&&(u=!1,l--)}}var c=[],p=c.pop.bind(c);for(i=1;i<e.length;i++){var v=e[i];c.push(1==v?p()|p():2==v?p()&p():v?a(v,r):!p())}return!!p()},i=(e,r)=>e&&x.o(e,r),l=e=>(e.loaded=1,e.get()),u=e=>Object.keys(e).reduce(((r,t)=>(e[t].eager&&(r[t]=e[t]),r)),{}),s=(e,r,t,n)=>{var i=n?u(e[r]):e[r];return(r=Object.keys(i).reduce(((e,r)=>!a(t,r)||e&&!o(e,r)?e:r),0))&&i[r]},d=(e,r,t)=>{var n=t?u(e[r]):e[r];return Object.keys(n).reduce(((e,r)=>!e||!n[e].loaded&&o(e,r)?r:e),0)},f=(e,r,t,o)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+n(o)+")",c=(e,r,t,o,a)=>{var i=e[t];return"No satisfying version ("+n(o)+")"+(a?" for eager consumption":"")+" of shared module "+t+" found in shared scope "+r+".\nAvailable versions: "+Object.keys(i).map((e=>e+" from "+i[e].from)).join(", ")},p=e=>{throw new Error(e)},v=e=>{"undefined"!= typeof console&&console.warn&&console.warn(e)},y=(e,r,t)=>t?t():((e,r)=>p("Shared module "+r+" doesn't exist in shared scope "+e))(e,r),m=(h=e=>function(r,t,o,n,a){var i=x.I(r);return i&&i.then&&!o?i.then(e.bind(e,r,x.S[r],t,!1,n,a)):e(r,x.S[r],t,o,n,a)})(((e,r,t,o,n,a)=>{if(!i(r,t))return y(e,t,a);var u=s(r,t,n,o);return u?l(u):a?a():void p(c(r,e,t,n,o))})),b=h(((e,r,t,o,n,u)=>{if(!i(r,t))return y(e,t,u);var s=d(r,t,o);return a(n,s)||v(f(r,t,s,n)),l(r[t][s])})),g={},j={569:()=>b("default","@jupyterlab/apputils",!1,[1,4,5,0]),579:()=>b("default","@jupyterlab/translation",!1,[1,4,4,0]),808:()=>b("default","@jupyterlab/coreutils",!1,[1,6,4,0]),0:()=>b("default","@jupyter/ydoc",!1,[1,3,0,0,,"a3"]),191:()=>b("default","@jupyterlab/logconsole",!1,[1,4,4,0]),256:()=>b("default","@lumino/widgets",!1,[1,2,3,1,,"alpha",0]),319:()=>b("default","@jupyterlab/statusbar",!1,[1,4,4,0]),369:()=>b("default","@jupyterlab/notebook",!1,[1,4,4,0]),507:()=>b("default","@jupyterlab/settingregistry",!1,[1, 4,4,0]),739:()=>b("default","@jupyterlab/fileeditor",!1,[1,4,4,0]),772:()=>b("default","@jupyter/docprovider",!1,[1,4,0,2],(()=>Promise.all([x.e(262),x.e(240)]).then((()=>()=>x(240))))),980:()=>b("default","@jupyter/collaborative-drive",!1,[1,4,0,2],(()=>Promise.all([x.e(262),x.e(444)]).then((()=>()=>x(444))))),262:()=>b("default","@lumino/coreutils",!1,[1,2,0,0]),345:()=>b("default","react",!1,[1,18,2,0]),560:()=>m("default","y-websocket",!1,[1,1,3,15],(()=>Promise.all([x.e(576),x.e(206)]).then((()=>()=>x(576))))),602:()=>b("default","@lumino/signaling",!1,[1,2,0,0]),695:()=>b("default","@jupyterlab/services",!1,[1,7,4,0]),989:()=>b("default","@jupyterlab/ui-components",!1,[1,4,4,0]),206:()=>b("default","yjs",!1,[1,13,5,40])},w={206:[206],240:[345,560,602,695,989],262:[262],453:[0,191,256,319,369,507,739,772,980],738:[569,579,808]},P={},x.f.consumes=(e,r)=>{x.o(w,e)&&w[e].forEach((e=>{if(x.o(g,e))return r.push(g[e]);if(!P[e]){var t=r=>{g[e]=0,x.m[e]=t=>{delete x.c[e],t.exports=r()} };P[e]=!0;var o=r=>{delete g[e],x.m[e]=t=>{throw delete x.c[e],r}};try{var n=j[e]();n.then?r.push(g[e]=n.then(t).catch(o)):t(n)}catch(e){o(e)}}}))},(()=>{var e={552:0};x.f.j=(r,t)=>{var o=x.o(e,r)?e[r]:void 0;if(0!==o)if(o)t.push(o[2]);else if(/^(206|262|453|738)$/.test(r))e[r]=0;else{var n=new Promise(((t,n)=>o=e[r]=[t,n]));t.push(o[2]=n);var a=x.p+x.u(r),i=new Error;x.l(a,(t=>{if(x.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var n=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;i.message="Loading chunk "+r+" failed.\n("+n+": "+a+")",i.name="ChunkLoadError",i.type=n,i.request=a,o[1](i)}}),"chunk-"+r,r)}};var r=(r,t)=>{var o,n,[a,i,l]=t,u=0;if(a.some((r=>0!==e[r]))){for(o in i)x.o(i,o)&&(x.m[o]=i[o]);l&&l(x)}for(r&&r(t);u<a.length;u++)n=a[u],x.o(e,n)&&e[n]&&e[n][0](),e[n]=0},t=self.webpackChunk_jupyter_docprovider_extension=self.webpackChunk_jupyter_docprovider_extension||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),x.nc=void 0;var E=x(496);(_JU PYTERLAB=void 0===_JUPYTERLAB?{}:_JUPYTERLAB)["@jupyter/docprovider-extension"]=E})(); \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/remoteEntry.2870ff42f76951af28a0.js new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/static/remoteEntry.2870ff42f76951af28a0.js --- old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/remoteEntry.2870ff42f76951af28a0.js 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/static/remoteEntry.2870ff42f76951af28a0.js 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -var _JUPYTERLAB;(()=>{"use strict";var e,r,t,o,a,n,i,l,u,s,d,f,p,c,v,h,b,y,m,g,j,w,P,S={496:(e,r,t)=>{var o={"./index":()=>Promise.all([t.e(260),t.e(401),t.e(703)]).then((()=>()=>t(703))),"./extension":()=>Promise.all([t.e(260),t.e(401),t.e(703)]).then((()=>()=>t(703))),"./style":()=>t.e(944).then((()=>()=>t(944)))},a=(e,r)=>(t.R=r,r=t.o(o,e)?o[e]():Promise.resolve().then((()=>{throw new Error('Module "'+e+'" does not exist in container.')})),t.R=void 0,r),n=(e,r)=>{if(t.S){var o="default",a=t.S[o];if(a&&a!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return t.S[o]=e,t.I(o,r)}};t.d(r,{get:()=>a,init:()=>n})}},k={};function x(e){var r=k[e];if(void 0!==r)return r.exports;var t=k[e]={id:e,exports:{}};return S[e](t,t.exports,x),t.exports}x.m=S,x.c=k,x.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return x.d(r,{a:r}),r},x.d=(e,r)=>{for(var t in r)x.o(r,t)&&!x.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[ t]})},x.f={},x.e=e=>Promise.all(Object.keys(x.f).reduce(((r,t)=>(x.f[t](e,r),r)),[])),x.u=e=>e+"."+{240:"dd1dbd559d6c95c85b3f",444:"12adfae9a2b50e91531f",576:"21a3c1a9ebaebb58d346",703:"17b6b904d18a75a9f3c6",944:"b85c55dff0f14165f872"}[e]+".js?v="+{240:"dd1dbd559d6c95c85b3f",444:"12adfae9a2b50e91531f",576:"21a3c1a9ebaebb58d346",703:"17b6b904d18a75a9f3c6",944:"b85c55dff0f14165f872"}[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,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="@jupyter/docprovider-extension:",x.l=(t,o,a,n)=>{if(e[t])e[t].push(o);else{var i,l;if(void 0!==a)for(var u=document.getElementsByTagName("script"),s=0;s<u.length;s++){var d=u[s];if(d.getAttribute("src")==t||d.getAttribute("data-webpack")==r+a){i=d;break}}i||(l=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,x.nc&&i.setAttribute("nonce",x.nc),i.setAttribute("d ata-webpack",r+a),i.src=t),e[t]=[o];var f=(r,o)=>{i.onerror=i.onload=null,clearTimeout(p);var a=e[t];if(delete e[t],i.parentNode&&i.parentNode.removeChild(i),a&&a.forEach((e=>e(o))),r)return r(o)},p=setTimeout(f.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=f.bind(null,i.onerror),i.onload=f.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={},r={};x.I=(t,o)=>{o||(o=[]);var a=r[t];if(a||(a=r[t]={}),!(o.indexOf(a)>=0)){if(o.push(a),e[t])return e[t];x.o(x.S,t)||(x.S[t]={});var n=x.S[t],i="@jupyter/docprovider-extension",l=(e,r,t,o)=>{var a=n[e]=n[e]||{},l=a[r];(!l||!l.loaded&&(!o!=!l.eager?o:i>l.from))&&(a[r]={get:t,from:i,eager:!!o})},u=[];return"default"===t&&(l("@jupyter/collaborative-drive","3.1.0",(()=>Promise.all([x.e(262),x.e(444)]).then((()=>()=>x(444))))),l("@jupyter/docprovid er-extension","3.1.0",(()=>Promise.all([x.e(260),x.e(401),x.e(703)]).then((()=>()=>x(703))))),l("@jupyter/docprovider","3.1.0",(()=>Promise.all([x.e(260),x.e(262),x.e(240)]).then((()=>()=>x(240))))),l("y-websocket","1.5.4",(()=>Promise.all([x.e(576),x.e(206)]).then((()=>()=>x(576)))))),e[t]=u.length?Promise.all(u).then((()=>e[t]=1)):1}}})(),(()=>{var e;x.g.importScripts&&(e=x.g.location+"");var r=x.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var o=t.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=t[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),x.p=e})(),t=e=>{var r=e=>e.split(".").map((e=>+e==e?+e:e)),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),o=t[1]?r(t[1]):[];return t[2]&&(o.length++,o.push.apply(o,r(t[2]))),t[3]&&(o.push([]),o.push.apply(o,r( t[3]))),o},o=(e,r)=>{e=t(e),r=t(r);for(var o=0;;){if(o>=e.length)return o<r.length&&"u"!=(typeof r[o])[0];var a=e[o],n=(typeof a)[0];if(o>=r.length)return"u"==n;var i=r[o],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;o++}},a=e=>{var r=e[0],t="";if(1===e.length)return"*";if(r+.5){t+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var o=1,n=1;n<e.length;n++)o--,t+="u"==(typeof(l=e[n]))[0]?"-":(o>0?".":"")+(o=2,l);return t}var i=[];for(n=1;n<e.length;n++){var l=e[n];i.push(0===l?"not("+u()+")":1===l?"("+u()+" || "+u()+")":2===l?i.pop()+" "+i.pop():a(l))}return u();function u(){return i.pop().replace(/^\((.+)\)$/,"$1")}},n=(e,r)=>{if(0 in e){r=t(r);var o=e[0],a=o<0;a&&(o=-o-1);for(var i=0,l=1,u=!0;;l++,i++){var s,d,f=l<e.length?(typeof e[l])[0]:"";if(i>=r.length||"o"==(d=(typeof(s=r[i]))[0]))return!u||("u"==f?l>o&&!a:""==f!=a);if("u"==d){if(!u||"u"!=f)return!1}else if(u)if(f==d)if(l<=o){if(s!=e[l])return!1}else{if(a?s>e[l]:s<e[l] )return!1;s!=e[l]&&(u=!1)}else if("s"!=f&&"n"!=f){if(a||l<=o)return!1;u=!1,l--}else{if(l<=o||d<f!=a)return!1;u=!1}else"s"!=f&&"n"!=f&&(u=!1,l--)}}var p=[],c=p.pop.bind(p);for(i=1;i<e.length;i++){var v=e[i];p.push(1==v?c()|c():2==v?c()&c():v?n(v,r):!c())}return!!c()},i=(e,r)=>e&&x.o(e,r),l=e=>(e.loaded=1,e.get()),u=e=>Object.keys(e).reduce(((r,t)=>(e[t].eager&&(r[t]=e[t]),r)),{}),s=(e,r,t,a)=>{var i=a?u(e[r]):e[r];return(r=Object.keys(i).reduce(((e,r)=>!n(t,r)||e&&!o(e,r)?e:r),0))&&i[r]},d=(e,r,t)=>{var a=t?u(e[r]):e[r];return Object.keys(a).reduce(((e,r)=>!e||!a[e].loaded&&o(e,r)?r:e),0)},f=(e,r,t,o)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+a(o)+")",p=(e,r,t,o,n)=>{var i=e[t];return"No satisfying version ("+a(o)+")"+(n?" for eager consumption":"")+" of shared module "+t+" found in shared scope "+r+".\nAvailable versions: "+Object.keys(i).map((e=>e+" from "+i[e].from)).join(", ")},c=e=>{throw new Error(e)},v=e=>{"undefined"!= typeof console&&console.warn&&console.warn(e)},b=(e,r,t)=>t?t():((e,r)=>c("Shared module "+r+" doesn't exist in shared scope "+e))(e,r),y=(h=e=>function(r,t,o,a,n){var i=x.I(r);return i&&i.then&&!o?i.then(e.bind(e,r,x.S[r],t,!1,a,n)):e(r,x.S[r],t,o,a,n)})(((e,r,t,o,a,n)=>{if(!i(r,t))return b(e,t,n);var u=s(r,t,a,o);return u?l(u):n?n():void c(p(r,e,t,a,o))})),m=h(((e,r,t,o,a,u)=>{if(!i(r,t))return b(e,t,u);var s=d(r,t,o);return n(a,s)||v(f(r,t,s,a)),l(r[t][s])})),g={},j={123:()=>m("default","@jupyterlab/apputils",!1,[1,4,4,3]),624:()=>m("default","@jupyterlab/translation",!1,[1,4,3,3]),672:()=>m("default","@jupyterlab/coreutils",!1,[1,6,3,3]),0:()=>m("default","@jupyter/ydoc",!1,[1,3,0,0,,"a3"]),132:()=>m("default","@jupyter/docprovider",!1,[1,3,1,0],(()=>Promise.all([x.e(262),x.e(240)]).then((()=>()=>x(240))))),180:()=>m("default","@jupyterlab/application",!1,[1,4,3,3]),227:()=>m("default","@jupyterlab/settingregistry",!1,[1,4,3,3]),236:()=>m("default","@jupyter/collaborative-drive" ,!1,[1,3,1,0],(()=>Promise.all([x.e(262),x.e(444)]).then((()=>()=>x(444))))),243:()=>m("default","@jupyterlab/fileeditor",!1,[1,4,3,3]),256:()=>m("default","@lumino/widgets",!1,[1,2,3,1,,"alpha",0]),295:()=>m("default","@jupyterlab/statusbar",!1,[1,4,3,3]),343:()=>m("default","@jupyterlab/logconsole",!1,[1,4,3,3]),920:()=>m("default","@jupyterlab/filebrowser",!1,[1,4,3,3]),977:()=>m("default","@jupyterlab/notebook",!1,[1,4,3,3]),262:()=>m("default","@lumino/coreutils",!1,[1,2,0,0]),345:()=>m("default","react",!1,[1,18,2,0]),560:()=>y("default","y-websocket",!1,[1,1,3,15],(()=>Promise.all([x.e(576),x.e(206)]).then((()=>()=>x(576))))),597:()=>m("default","@jupyterlab/ui-components",!1,[1,4,3,3]),602:()=>m("default","@lumino/signaling",!1,[1,2,0,0]),943:()=>m("default","@jupyterlab/services",!1,[1,7,3,3]),206:()=>m("default","yjs",!1,[1,13,5,40])},w={206:[206],240:[345,560,597,602,943],260:[123,624,672],262:[262],401:[0,132,180,227,236,243,256,295,343,920,977]},P={},x.f.consumes=(e,r)= >{x.o(w,e)&&w[e].forEach((e=>{if(x.o(g,e))return r.push(g[e]);if(!P[e]){var >t=r=>{g[e]=0,x.m[e]=t=>{delete x.c[e],t.exports=r()}};P[e]=!0;var >o=r=>{delete g[e],x.m[e]=t=>{throw delete x.c[e],r}};try{var >a=j[e]();a.then?r.push(g[e]=a.then(t).catch(o)):t(a)}catch(e){o(e)}}}))},(()=>{var > e={552:0};x.f.j=(r,t)=>{var o=x.o(e,r)?e[r]:void >0;if(0!==o)if(o)t.push(o[2]);else >if(/^(2(06|60|62)|401)$/.test(r))e[r]=0;else{var a=new >Promise(((t,a)=>o=e[r]=[t,a]));t.push(o[2]=a);var n=x.p+x.u(r),i=new >Error;x.l(n,(t=>{if(x.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var >a=t&&("load"===t.type?"missing":t.type),n=t&&t.target&&t.target.src;i.message="Loading > chunk "+r+" failed.\n("+a+": >"+n+")",i.name="ChunkLoadError",i.type=a,i.request=n,o[1](i)}}),"chunk-"+r,r)}};var > r=(r,t)=>{var o,a,[n,i,l]=t,u=0;if(n.some((r=>0!==e[r]))){for(o in >i)x.o(i,o)&&(x.m[o]=i[o]);l&&l(x)}for(r&&r(t);u<n.length;u++)a=n[u],x.o(e,a)&&e[a]&&e[a][0](),e[a]=0},t=self.webpackChunk_jupyter_docprovider_extension=self.webpackChunk_ jupyter_docprovider_extension||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),x.nc=void 0;var E=x(496);(_JUPYTERLAB=void 0===_JUPYTERLAB?{}:_JUPYTERLAB)["@jupyter/docprovider-extension"]=E})(); \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/third-party-licenses.json new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/static/third-party-licenses.json --- old/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/third-party-licenses.json 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_docprovider-2.0.2/jupyter_docprovider/labextension/static/third-party-licenses.json 2020-02-02 01:00:00.000000000 +0100 @@ -2,19 +2,19 @@ "packages": [ { "name": "@jupyter/collaboration", - "versionInfo": "3.1.0", + "versionInfo": "4.0.2", "licenseId": "BSD-3-Clause", "extractedText": "" }, { "name": "@jupyter/collaborative-drive", - "versionInfo": "3.1.0", + "versionInfo": "4.0.2", "licenseId": "BSD-3-Clause", "extractedText": "" }, { "name": "@jupyter/docprovider", - "versionInfo": "3.1.0", + "versionInfo": "4.0.2", "licenseId": "BSD-3-Clause", "extractedText": "" }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_docprovider-1.1.0/packages/docprovider/package.json new/jupyter_docprovider-2.0.2/packages/docprovider/package.json --- old/jupyter_docprovider-1.1.0/packages/docprovider/package.json 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_docprovider-2.0.2/packages/docprovider/package.json 2020-02-02 01:00:00.000000000 +0100 @@ -1,6 +1,6 @@ { "name": "@jupyter/docprovider", - "version": "3.1.0", + "version": "4.0.2", "description": "JupyterLab - Document Provider", "homepage": "https://github.com/jupyterlab/jupyter-collaboration", "bugs": { @@ -41,28 +41,28 @@ "watch": "tsc -b --watch" }, "dependencies": { - "@jupyter/collaborative-drive": "^3.1.0", - "@jupyter/ydoc": "^2.0.0 || ^3.0.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/cells": "^4.2.0", - "@jupyterlab/coreutils": "^6.2.0", - "@jupyterlab/notebook": "^4.2.0", - "@jupyterlab/services": "^7.2.0", - "@jupyterlab/translation": "^4.2.0", - "@lumino/coreutils": "^2.1.0", - "@lumino/disposable": "^2.1.0", - "@lumino/signaling": "^2.1.0", - "@lumino/widgets": "^2.2.0", + "@jupyter/collaborative-drive": "^4.0.2", + "@jupyter/ydoc": "^2.1.3 || ^3.0.0", + "@jupyterlab/apputils": "^4.4.0", + "@jupyterlab/cells": "^4.4.0", + "@jupyterlab/coreutils": "^6.4.0", + "@jupyterlab/notebook": "^4.4.0", + "@jupyterlab/services": "^7.4.0", + "@jupyterlab/translation": "^4.4.0", + "@lumino/coreutils": "^2.2.1", + "@lumino/disposable": "^2.1.4", + "@lumino/signaling": "^2.1.4", + "@lumino/widgets": "^2.7.0", "y-protocols": "^1.0.5", "y-websocket": "^1.3.15", "yjs": "^13.5.40" }, "devDependencies": { - "@jupyterlab/testing": "^4.0.0", + "@jupyterlab/testing": "^4.4.0", "@types/jest": "^29.2.0", "jest": "^29.5.0", "rimraf": "^4.1.2", - "typescript": "~5.0.4" + "typescript": "~5.1.6" }, "publishConfig": { "access": "public" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_docprovider-1.1.0/packages/docprovider/src/__tests__/forkManager.spec.ts new/jupyter_docprovider-2.0.2/packages/docprovider/src/__tests__/forkManager.spec.ts --- old/jupyter_docprovider-1.1.0/packages/docprovider/src/__tests__/forkManager.spec.ts 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_docprovider-2.0.2/packages/docprovider/src/__tests__/forkManager.spec.ts 2020-02-02 01:00:00.000000000 +0100 @@ -1,7 +1,7 @@ // Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. -import { ICollaborativeDrive } from '@jupyter/collaborative-drive'; +import { ICollaborativeContentProvider } from '@jupyter/collaborative-drive'; import { ForkManager, JUPYTER_COLLABORATION_FORK_EVENTS_URI @@ -11,10 +11,9 @@ import { requestAPI } from '../requests'; jest.mock('../requests'); -const driveMock = { - name: 'rtc', +const contentProviderMock = { providers: new Map() -} as ICollaborativeDrive; +} as ICollaborativeContentProvider; const stream = new Signal({}); const eventManagerMock = { stream: stream as any @@ -24,7 +23,7 @@ let manager: ForkManager; beforeEach(() => { manager = new ForkManager({ - drive: driveMock, + contentProvider: contentProviderMock, eventManager: eventManagerMock }); }); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_docprovider-1.1.0/packages/docprovider/src/forkManager.ts new/jupyter_docprovider-2.0.2/packages/docprovider/src/forkManager.ts --- old/jupyter_docprovider-1.1.0/packages/docprovider/src/forkManager.ts 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_docprovider-2.0.2/packages/docprovider/src/forkManager.ts 2020-02-02 01:00:00.000000000 +0100 @@ -3,7 +3,7 @@ * Distributed under the terms of the Modified BSD License. */ -import { ICollaborativeDrive } from '@jupyter/collaborative-drive'; +import { ICollaborativeContentProvider } from '@jupyter/collaborative-drive'; import { URLExt } from '@jupyterlab/coreutils'; import { Event } from '@jupyterlab/services'; import { ISignal, Signal } from '@lumino/signaling'; @@ -22,8 +22,8 @@ export class ForkManager implements IForkManager { constructor(options: ForkManager.IOptions) { - const { drive, eventManager } = options; - this._drive = drive; + const { contentProvider, eventManager } = options; + this._contentProvider = contentProvider; this._eventManager = eventManager; this._eventManager.stream.connect(this._handleEvent, this); } @@ -81,14 +81,12 @@ type: string; }): IForkProvider | undefined { const { documentPath, format, type } = options; - const drive = this._drive; - if (drive) { - const driveName = drive.name; - let docPath = documentPath; - if (documentPath.startsWith(driveName)) { - docPath = documentPath.slice(driveName.length + 1); - } - const provider = drive.providers.get(`${format}:${type}:${docPath}`); + const contentProvider = this._contentProvider; + if (contentProvider) { + const docPath = documentPath; + const provider = contentProvider.providers.get( + `${format}:${type}:${docPath}` + ); return provider as IForkProvider | undefined; } return; @@ -112,7 +110,7 @@ } private _disposed = false; - private _drive: ICollaborativeDrive | undefined; + private _contentProvider: ICollaborativeContentProvider | undefined; private _eventManager: Event.IManager | undefined; private _forkAddedSignal = new Signal<ForkManager, IForkChangedEvent>(this); private _forkDeletedSignal = new Signal<ForkManager, IForkChangedEvent>(this); @@ -120,7 +118,7 @@ export namespace ForkManager { export interface IOptions { - drive: ICollaborativeDrive; + contentProvider: ICollaborativeContentProvider; eventManager: Event.IManager; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_docprovider-1.1.0/packages/docprovider/src/ydrive.ts new/jupyter_docprovider-2.0.2/packages/docprovider/src/ydrive.ts --- old/jupyter_docprovider-1.1.0/packages/docprovider/src/ydrive.ts 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_docprovider-2.0.2/packages/docprovider/src/ydrive.ts 2020-02-02 01:00:00.000000000 +0100 @@ -3,16 +3,22 @@ import { PageConfig, URLExt } from '@jupyterlab/coreutils'; import { TranslationBundle } from '@jupyterlab/translation'; -import { Contents, Drive, User } from '@jupyterlab/services'; +import { + Contents, + IContentProvider, + RestContentProvider, + SharedDocumentFactory, + ServerConnection, + User +} from '@jupyterlab/services'; import { ISignal, Signal } from '@lumino/signaling'; import { DocumentChange, ISharedDocument, YDocument } from '@jupyter/ydoc'; import { WebSocketProvider } from './yprovider'; import { - ICollaborativeDrive, - ISharedModelFactory, - SharedDocumentFactory + IDocumentProvider, + ISharedModelFactory } from '@jupyter/collaborative-drive'; import { Awareness } from 'y-protocols/awareness'; @@ -31,56 +37,38 @@ format: string; } -/** - * A Collaborative implementation for an `IDrive`, talking to the - * server using the Jupyter REST API and a WebSocket connection. - */ -export class YDrive extends Drive implements ICollaborativeDrive { - /** - * Construct a new drive object. - * - * @param user - The user manager to add the identity to the awareness of documents. - */ - constructor( - user: User.IManager, - translator: TranslationBundle, - globalAwareness: Awareness | null - ) { - super({ name: 'RTC' }); - this._user = user; - this._trans = translator; - this._globalAwareness = globalAwareness; - this._providers = new Map<string, WebSocketProvider>(); +namespace RtcContentProvider { + export interface IOptions extends RestContentProvider.IOptions { + user: User.IManager; + trans: TranslationBundle; + globalAwareness: Awareness | null; + } +} +export class RtcContentProvider + extends RestContentProvider + implements IContentProvider +{ + constructor(options: RtcContentProvider.IOptions) { + super(options); + this._user = options.user; + this._trans = options.trans; + this._globalAwareness = options.globalAwareness; + this._serverSettings = options.serverSettings; this.sharedModelFactory = new SharedModelFactory(this._onCreate); - super.fileChanged.connect((_, change) => { - // pass through any events from the Drive superclass - this._ydriveFileChanged.emit(change); - }); + this._providers = new Map<string, WebSocketProvider>(); } /** - * SharedModel factory for the YDrive. + * SharedModel factory for the content provider. */ readonly sharedModelFactory: ISharedModelFactory; - get providers(): Map<string, WebSocketProvider> { + get providers(): Map<string, IDocumentProvider> { return this._providers; } /** - * Dispose of the resources held by the manager. - */ - dispose(): void { - if (this.isDisposed) { - return; - } - this._providers.forEach(p => p.dispose()); - this._providers.clear(); - super.dispose(); - } - - /** * Get a file or directory. * * @param localPath: The path to the file. @@ -88,8 +76,6 @@ * @param options: The options used to fetch the file. * * @returns A promise which resolves with the file content. - * - * Uses the [Jupyter Notebook API](http://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter/notebook/master/notebook/services/api/api.yaml#!/contents) and validates the response model. */ async get( localPath: string, @@ -166,7 +152,7 @@ } try { const provider = new WebSocketProvider({ - url: URLExt.join(this.serverSettings.wsUrl, DOCUMENT_PROVIDER_URL), + url: URLExt.join(this._serverSettings.wsUrl, DOCUMENT_PROVIDER_URL), path: options.path, format: options.format, contentType: options.contentType, @@ -177,9 +163,9 @@ // Add the document path in the list of opened ones for this user. const state = this._globalAwareness?.getLocalState() || {}; - const documents: any[] = state.documents || []; + const documents: string[] = state.documents || []; if (!documents.includes(options.path)) { - documents.push(`${this.name}:${options.path}`); + documents.push(options.path); this._globalAwareness?.setLocalStateField('documents', documents); } @@ -228,7 +214,7 @@ // Remove the document path from the list of opened ones for this user. const state = this._globalAwareness?.getLocalState() || {}; const documents: any[] = state.documents || []; - const index = documents.indexOf(`${this.name}:${options.path}`); + const index = documents.indexOf(options.path); if (index > -1) { documents.splice(index, 1); } @@ -245,9 +231,10 @@ private _user: User.IManager; private _trans: TranslationBundle; - private _providers: Map<string, WebSocketProvider>; private _globalAwareness: Awareness | null; + private _providers: Map<string, WebSocketProvider>; private _ydriveFileChanged = new Signal<this, Contents.IChangedArgs>(this); + private _serverSettings: ServerConnection.ISettings; } /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_docprovider-1.1.0/packages/docprovider-extension/package.json new/jupyter_docprovider-2.0.2/packages/docprovider-extension/package.json --- old/jupyter_docprovider-1.1.0/packages/docprovider-extension/package.json 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_docprovider-2.0.2/packages/docprovider-extension/package.json 2020-02-02 01:00:00.000000000 +0100 @@ -1,6 +1,6 @@ { "name": "@jupyter/docprovider-extension", - "version": "3.1.0", + "version": "4.0.2", "description": "JupyterLab - Collaborative Shared Models", "keywords": [ "jupyter", @@ -53,29 +53,29 @@ "watch:labextension": "jupyter labextension watch ." }, "dependencies": { - "@jupyter/collaborative-drive": "^3.1.0", - "@jupyter/docprovider": "^3.1.0", - "@jupyter/ydoc": "^2.0.0 || ^3.0.0", - "@jupyterlab/application": "^4.2.0", - "@jupyterlab/apputils": "^4.2.0", - "@jupyterlab/docregistry": "^4.2.0", - "@jupyterlab/filebrowser": "^4.2.0", - "@jupyterlab/fileeditor": "^4.2.0", - "@jupyterlab/logconsole": "^4.2.0", - "@jupyterlab/notebook": "^4.2.0", - "@jupyterlab/settingregistry": "^4.2.0", - "@jupyterlab/translation": "^4.2.0", - "@lumino/commands": "^2.1.0", + "@jupyter/collaborative-drive": "^4.0.2", + "@jupyter/docprovider": "^4.0.2", + "@jupyter/ydoc": "^2.1.3 || ^3.0.0", + "@jupyterlab/application": "^4.4.0", + "@jupyterlab/apputils": "^4.4.0", + "@jupyterlab/docregistry": "^4.4.0", + "@jupyterlab/filebrowser": "^4.4.0", + "@jupyterlab/fileeditor": "^4.4.0", + "@jupyterlab/logconsole": "^4.4.0", + "@jupyterlab/notebook": "^4.4.0", + "@jupyterlab/settingregistry": "^4.4.0", + "@jupyterlab/translation": "^4.4.0", + "@lumino/commands": "^2.3.2", "y-protocols": "^1.0.5", "y-websocket": "^1.3.15", "yjs": "^13.5.40" }, "devDependencies": { - "@jupyterlab/builder": "^4.0.0", + "@jupyterlab/builder": "^4.4.0", "@types/react": "~18.3.1", "npm-run-all": "^4.1.5", "rimraf": "^4.1.2", - "typescript": "~5.0.4" + "typescript": "~5.1.6" }, "publishConfig": { "access": "public" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_docprovider-1.1.0/packages/docprovider-extension/src/filebrowser.ts new/jupyter_docprovider-2.0.2/packages/docprovider-extension/src/filebrowser.ts --- old/jupyter_docprovider-1.1.0/packages/docprovider-extension/src/filebrowser.ts 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_docprovider-2.0.2/packages/docprovider-extension/src/filebrowser.ts 2020-02-02 01:00:00.000000000 +0100 @@ -4,45 +4,44 @@ */ import { - ILabShell, - IRouter, JupyterFrontEnd, JupyterFrontEndPlugin } from '@jupyterlab/application'; import { Dialog, showDialog } from '@jupyterlab/apputils'; import { DocumentWidget, IDocumentWidget } from '@jupyterlab/docregistry'; import { Widget } from '@lumino/widgets'; -import { - FileBrowser, - IDefaultFileBrowser, - IFileBrowserFactory -} from '@jupyterlab/filebrowser'; + import { IStatusBar } from '@jupyterlab/statusbar'; +import { ContentsManager } from '@jupyterlab/services'; -import { IEditorTracker } from '@jupyterlab/fileeditor'; +import { + IEditorTracker, + IEditorWidgetFactory, + FileEditorFactory +} from '@jupyterlab/fileeditor'; import { ILogger, ILoggerRegistry } from '@jupyterlab/logconsole'; -import { INotebookTracker } from '@jupyterlab/notebook'; +import { + INotebookTracker, + INotebookWidgetFactory, + NotebookWidgetFactory +} from '@jupyterlab/notebook'; import { ISettingRegistry } from '@jupyterlab/settingregistry'; import { ITranslator, nullTranslator } from '@jupyterlab/translation'; -import { CommandRegistry } from '@lumino/commands'; - import { YFile, YNotebook } from '@jupyter/ydoc'; import { - ICollaborativeDrive, + ICollaborativeContentProvider, IGlobalAwareness } from '@jupyter/collaborative-drive'; -import { IForkProvider, TimelineWidget, YDrive } from '@jupyter/docprovider'; +import { + IForkProvider, + TimelineWidget, + RtcContentProvider +} from '@jupyter/docprovider'; import { Awareness } from 'y-protocols/awareness'; import { URLExt } from '@jupyterlab/coreutils'; -/** - * The command IDs used by the file browser plugin. - */ -namespace CommandIDs { - export const openPath = 'filebrowser:open-path'; -} const DOCUMENT_TIMELINE_URL = 'api/collaboration/timeline'; const TWO_SESSIONS_WARNING = @@ -50,26 +49,43 @@ 'This is not supported. Please close this view; otherwise, ' + 'some of your edits may not be saved properly.'; -/** - * The default collaborative drive provider. - */ -export const drive: JupyterFrontEndPlugin<ICollaborativeDrive> = { - id: '@jupyter/docprovider-extension:drive', - description: 'The default collaborative drive provider', - provides: ICollaborativeDrive, - requires: [ITranslator], - optional: [IGlobalAwareness], - activate: ( - app: JupyterFrontEnd, - translator: ITranslator, - globalAwareness: Awareness | null - ): ICollaborativeDrive => { - const trans = translator.load('jupyter_collaboration'); - const drive = new YDrive(app.serviceManager.user, trans, globalAwareness); - app.serviceManager.contents.addDrive(drive); - return drive; - } -}; +export const rtcContentProvider: JupyterFrontEndPlugin<ICollaborativeContentProvider> = + { + id: '@jupyter/docprovider-extension:content-provider', + description: 'The RTC content provider', + provides: ICollaborativeContentProvider, + requires: [ITranslator], + optional: [IGlobalAwareness], + activate: ( + app: JupyterFrontEnd, + translator: ITranslator, + globalAwareness: Awareness | null + ): ICollaborativeContentProvider => { + const trans = translator.load('jupyter_collaboration'); + const defaultDrive = (app.serviceManager.contents as ContentsManager) + .defaultDrive; + if (!defaultDrive) { + throw Error( + 'Cannot initialize content provider: default drive property not accessible on contents manager instance.' + ); + } + const registry = defaultDrive.contentProviderRegistry; + if (!registry) { + throw Error( + 'Cannot initialize content provider: no content provider registry.' + ); + } + const rtcContentProvider = new RtcContentProvider({ + apiEndpoint: '/api/contents', + serverSettings: defaultDrive.serverSettings, + user: app.serviceManager.user, + trans, + globalAwareness + }); + registry.register('rtc', rtcContentProvider); + return rtcContentProvider; + } + }; /** * Plugin to register the shared model factory for the content type 'file'. @@ -79,13 +95,20 @@ description: "Plugin to register the shared model factory for the content type 'file'", autoStart: true, - requires: [ICollaborativeDrive], - optional: [], - activate: (app: JupyterFrontEnd, drive: ICollaborativeDrive): void => { + requires: [ICollaborativeContentProvider, IEditorWidgetFactory], + activate: ( + app: JupyterFrontEnd, + contentProvider: ICollaborativeContentProvider, + editorFactory: FileEditorFactory.IFactory + ): void => { const yFileFactory = () => { return new YFile(); }; - drive.sharedModelFactory.registerDocumentFactory('file', yFileFactory); + contentProvider.sharedModelFactory.registerDocumentFactory( + 'file', + yFileFactory + ); + editorFactory.contentProviderId = 'rtc'; } }; @@ -97,11 +120,12 @@ description: "Plugin to register the shared model factory for the content type 'notebook'", autoStart: true, - requires: [ICollaborativeDrive], + requires: [ICollaborativeContentProvider, INotebookWidgetFactory], optional: [ISettingRegistry], activate: ( app: JupyterFrontEnd, - drive: YDrive, + contentProvider: ICollaborativeContentProvider, + notebookFactory: NotebookWidgetFactory.IFactory, settingRegistry: ISettingRegistry | null ): void => { let disableDocumentWideUndoRedo = true; @@ -131,10 +155,11 @@ disableDocumentWideUndoRedo }); }; - drive.sharedModelFactory.registerDocumentFactory( + contentProvider.sharedModelFactory.registerDocumentFactory( 'notebook', yNotebookFactory ); + notebookFactory.contentProviderId = 'rtc'; } }; /** @@ -144,11 +169,11 @@ id: '@jupyter/docprovider-extension:statusBarTimeline', description: 'Plugin to add a timeline slider to the status bar', autoStart: true, - requires: [IStatusBar, ICollaborativeDrive], + requires: [IStatusBar, ICollaborativeContentProvider], activate: async ( app: JupyterFrontEnd, statusBar: IStatusBar, - drive: ICollaborativeDrive + contentProvider: ICollaborativeContentProvider ): Promise<void> => { try { let sliderItem: Widget | null = null; @@ -158,39 +183,43 @@ documentPath: string, documentId: string ) => { - if (documentId && documentPath.split(':')[0] === 'RTC') { - if (drive) { - // Remove 'RTC:' from document path - documentPath = documentPath.slice(drive.name.length + 1); - // Dispose of the previous timelineWidget if it exists - if (timelineWidget) { - timelineWidget.dispose(); - timelineWidget = null; - } + if (!documentId) { + return; + } + // Dispose of the previous timelineWidget if it exists + if (timelineWidget) { + timelineWidget.dispose(); + timelineWidget = null; + } - const [format, type] = documentId.split(':'); - const provider = drive.providers.get( - `${format}:${type}:${documentPath}` - ) as unknown as IForkProvider; - const fullPath = URLExt.join( - app.serviceManager.serverSettings.baseUrl, - DOCUMENT_TIMELINE_URL, - documentPath - ); + const [format, type] = documentId.split(':'); + const provider = contentProvider.providers.get( + `${format}:${type}:${documentPath}` + ); + if (!provider) { + // this can happen for documents which are not provisioned with RTC + return; + } - timelineWidget = new TimelineWidget( - fullPath, - provider, - provider.contentType, - provider.format, - DOCUMENT_TIMELINE_URL - ); + const forkProvider = provider as unknown as IForkProvider; - const elt = document.getElementById('jp-slider-status-bar'); - if (elt && !timelineWidget.isAttached) { - Widget.attach(timelineWidget, elt); - } - } + const fullPath = URLExt.join( + app.serviceManager.serverSettings.baseUrl, + DOCUMENT_TIMELINE_URL, + documentPath + ); + + timelineWidget = new TimelineWidget( + fullPath, + forkProvider, + forkProvider.contentType, + forkProvider.format, + DOCUMENT_TIMELINE_URL + ); + + const elt = document.getElementById('jp-slider-status-bar'); + if (elt && !timelineWidget.isAttached) { + Widget.attach(timelineWidget, elt); } }; @@ -228,19 +257,7 @@ const currentWidget = app.shell .currentWidget as DocumentWidget | null; - if ( - currentWidget && - currentWidget.context && - typeof currentWidget.context.path === 'string' - ) { - const documentPath = currentWidget.context.path; - const documentId = - currentWidget.context.model.sharedModel.getState( - 'document_id' - ) as string; - return !!documentId && documentPath.split(':')[0] === 'RTC'; - } - return false; + return currentWidget?.context?.model?.collaborative || false; } }); } @@ -252,52 +269,6 @@ }; /** - * The default file browser factory provider. - */ -export const defaultFileBrowser: JupyterFrontEndPlugin<IDefaultFileBrowser> = { - id: '@jupyter/docprovider-extension:defaultFileBrowser', - description: 'The default file browser factory provider', - provides: IDefaultFileBrowser, - requires: [ICollaborativeDrive, IFileBrowserFactory], - optional: [IRouter, JupyterFrontEnd.ITreeResolver, ILabShell, ITranslator], - activate: async ( - app: JupyterFrontEnd, - drive: YDrive, - fileBrowserFactory: IFileBrowserFactory, - router: IRouter | null, - tree: JupyterFrontEnd.ITreeResolver | null, - labShell: ILabShell | null, - translator: ITranslator | null - ): Promise<IDefaultFileBrowser> => { - const { commands } = app; - const trans = (translator ?? nullTranslator).load('jupyterlab'); - app.serviceManager.contents.addDrive(drive); - - // Manually restore and load the default file browser. - const defaultBrowser = fileBrowserFactory.createFileBrowser('filebrowser', { - auto: false, - restore: false, - driveName: drive.name - }); - defaultBrowser.node.setAttribute('role', 'region'); - defaultBrowser.node.setAttribute( - 'aria-label', - trans.__('File Browser Section') - ); - - void Private.restoreBrowser( - defaultBrowser, - commands, - router, - tree, - labShell - ); - - return defaultBrowser; - } -}; - -/** * The default collaborative drive provider. */ export const logger: JupyterFrontEndPlugin<void> = { @@ -383,59 +354,3 @@ })(); } }; - -namespace Private { - /** - * Restores file browser state and overrides state if tree resolver resolves. - */ - export async function restoreBrowser( - browser: FileBrowser, - commands: CommandRegistry, - router: IRouter | null, - tree: JupyterFrontEnd.ITreeResolver | null, - labShell: ILabShell | null - ): Promise<void> { - const restoring = 'jp-mod-restoring'; - - browser.addClass(restoring); - - if (!router) { - await browser.model.restore(browser.id); - await browser.model.refresh(); - browser.removeClass(restoring); - return; - } - - const listener = async () => { - router.routed.disconnect(listener); - - const paths = await tree?.paths; - - if (paths?.file || paths?.browser) { - // Restore the model without populating it. - await browser.model.restore(browser.id, false); - if (paths.file) { - await commands.execute(CommandIDs.openPath, { - path: paths.file, - dontShowBrowser: true - }); - } - if (paths.browser) { - await commands.execute(CommandIDs.openPath, { - path: paths.browser, - dontShowBrowser: true - }); - } - } else { - await browser.model.restore(browser.id); - await browser.model.refresh(); - } - browser.removeClass(restoring); - - if (labShell?.isEmpty('main')) { - void commands.execute('launcher:create'); - } - }; - router.routed.connect(listener); - } -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_docprovider-1.1.0/packages/docprovider-extension/src/forkManager.ts new/jupyter_docprovider-2.0.2/packages/docprovider-extension/src/forkManager.ts --- old/jupyter_docprovider-1.1.0/packages/docprovider-extension/src/forkManager.ts 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_docprovider-2.0.2/packages/docprovider-extension/src/forkManager.ts 2020-02-02 01:00:00.000000000 +0100 @@ -3,7 +3,7 @@ * Distributed under the terms of the Modified BSD License. */ -import { ICollaborativeDrive } from '@jupyter/collaborative-drive'; +import { ICollaborativeContentProvider } from '@jupyter/collaborative-drive'; import { ForkManager, IForkManager, @@ -18,11 +18,14 @@ export const forkManagerPlugin: JupyterFrontEndPlugin<IForkManager> = { id: '@jupyter/docprovider-extension:forkManager', autoStart: true, - requires: [ICollaborativeDrive], + requires: [ICollaborativeContentProvider], provides: IForkManagerToken, - activate: (app: JupyterFrontEnd, drive: ICollaborativeDrive) => { + activate: ( + app: JupyterFrontEnd, + contentProvider: ICollaborativeContentProvider + ) => { const eventManager = app.serviceManager.events; - const manager = new ForkManager({ drive, eventManager }); + const manager = new ForkManager({ contentProvider, eventManager }); return manager; } }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_docprovider-1.1.0/packages/docprovider-extension/src/index.ts new/jupyter_docprovider-2.0.2/packages/docprovider-extension/src/index.ts --- old/jupyter_docprovider-1.1.0/packages/docprovider-extension/src/index.ts 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_docprovider-2.0.2/packages/docprovider-extension/src/index.ts 2020-02-02 01:00:00.000000000 +0100 @@ -8,10 +8,9 @@ import { JupyterFrontEndPlugin } from '@jupyterlab/application'; import { - drive, + rtcContentProvider, yfile, ynotebook, - defaultFileBrowser, logger, statusBarTimeline } from './filebrowser'; @@ -21,11 +20,10 @@ /** * Export the plugins as default. */ -const plugins: JupyterFrontEndPlugin<any>[] = [ - drive, +const plugins: JupyterFrontEndPlugin<unknown>[] = [ + rtcContentProvider, yfile, ynotebook, - defaultFileBrowser, logger, notebookCellExecutor, statusBarTimeline,