jupyter-docprovider 1.0.0b5__tar.gz → 1.0.0b8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/PKG-INFO +1 -1
  2. jupyter_docprovider-1.0.0b8/jupyter_docprovider/_version.py +1 -0
  3. {jupyter_docprovider-1.0.0b5/packages/docprovider-extension → jupyter_docprovider-1.0.0b8/jupyter_docprovider/labextension}/package.json +12 -2
  4. jupyter_docprovider-1.0.0b8/jupyter_docprovider/labextension/static/444.12adfae9a2b50e91531f.js +1 -0
  5. jupyter_docprovider-1.0.0b8/jupyter_docprovider/labextension/static/544.2ddaafa7187578bbc811.js +1 -0
  6. jupyter_docprovider-1.0.0b8/jupyter_docprovider/labextension/static/618.afd487be93204de05459.js +1 -0
  7. jupyter_docprovider-1.0.0b8/jupyter_docprovider/labextension/static/remoteEntry.664d5a8b85d89d4a46d6.js +1 -0
  8. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/jupyter_docprovider/labextension/static/third-party-licenses.json +8 -2
  9. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider/package.json +10 -1
  10. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider/src/index.ts +0 -1
  11. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider/src/ydrive.ts +7 -7
  12. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider/src/yprovider.ts +1 -11
  13. {jupyter_docprovider-1.0.0b5/jupyter_docprovider/labextension → jupyter_docprovider-1.0.0b8/packages/docprovider-extension}/package.json +7 -7
  14. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider-extension/src/filebrowser.ts +5 -13
  15. jupyter_docprovider-1.0.0b5/jupyter_docprovider/_version.py +0 -1
  16. jupyter_docprovider-1.0.0b5/jupyter_docprovider/labextension/static/544.93c72014d00edb4807b7.js +0 -1
  17. jupyter_docprovider-1.0.0b5/jupyter_docprovider/labextension/static/562.7a1279cc90d15b8b4fa0.js +0 -1
  18. jupyter_docprovider-1.0.0b5/jupyter_docprovider/labextension/static/remoteEntry.01ca8b4214d9332cf35c.js +0 -1
  19. jupyter_docprovider-1.0.0b5/packages/docprovider/src/tokens.ts +0 -58
  20. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/.gitignore +0 -0
  21. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/LICENSE +0 -0
  22. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/README.md +0 -0
  23. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/install.json +0 -0
  24. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/jupyter_docprovider/__init__.py +0 -0
  25. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/jupyter_docprovider/labextension/static/576.36471ca07f7437678515.js +0 -0
  26. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/jupyter_docprovider/labextension/static/944.b85c55dff0f14165f872.js +0 -0
  27. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/jupyter_docprovider/labextension/static/style.js +0 -0
  28. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider/babel.config.js +0 -0
  29. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider/jest.config.js +0 -0
  30. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider/src/TimelineSlider.tsx +0 -0
  31. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider/src/__tests__/yprovider.spec.ts +0 -0
  32. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider/src/awareness.ts +0 -0
  33. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider/src/component.tsx +0 -0
  34. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider/src/notebookCellExecutor.ts +0 -0
  35. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider/src/requests.ts +0 -0
  36. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider/style/base.css +0 -0
  37. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider/style/index.css +0 -0
  38. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider/style/index.js +0 -0
  39. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider/style/slider.css +0 -0
  40. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider/tsconfig.json +0 -0
  41. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider/tsconfig.test.json +0 -0
  42. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider-extension/README.md +0 -0
  43. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider-extension/src/executor.ts +0 -0
  44. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider-extension/src/index.ts +0 -0
  45. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider-extension/style/index.css +0 -0
  46. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider-extension/style/index.js +0 -0
  47. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/packages/docprovider-extension/tsconfig.json +0 -0
  48. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/pyproject.toml +0 -0
  49. {jupyter_docprovider-1.0.0b5 → jupyter_docprovider-1.0.0b8}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: jupyter-docprovider
3
- Version: 1.0.0b5
3
+ Version: 1.0.0b8
4
4
  Summary: JupyterLab/Jupyter Notebook 7+ extension integrating collaborative shared models.
5
5
  Project-URL: Documentation, https://jupyterlab-realtime-collaboration.readthedocs.io/
6
6
  Project-URL: Repository, https://github.com/jupyterlab/jupyter-collaboration
@@ -0,0 +1 @@
1
+ __version__ = "1.0.0b8"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jupyter/docprovider-extension",
3
- "version": "3.0.0-beta.5",
3
+ "version": "3.0.0-beta.8",
4
4
  "description": "JupyterLab - Collaborative Shared Models",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -53,7 +53,8 @@
53
53
  "watch:labextension": "jupyter labextension watch ."
54
54
  },
55
55
  "dependencies": {
56
- "@jupyter/docprovider": "^3.0.0-beta.5",
56
+ "@jupyter/collaborative-drive": "^3.0.0-beta.8",
57
+ "@jupyter/docprovider": "^3.0.0-beta.8",
57
58
  "@jupyter/ydoc": "^2.0.0 || ^3.0.0-a3",
58
59
  "@jupyterlab/application": "^4.2.0",
59
60
  "@jupyterlab/apputils": "^4.2.0",
@@ -105,6 +106,10 @@
105
106
  "bundled": false,
106
107
  "singleton": true
107
108
  },
109
+ "@jupyter/collaborative-drive": {
110
+ "bundled": true,
111
+ "singleton": true
112
+ },
108
113
  "@jupyter/docprovider": {
109
114
  "bundled": true,
110
115
  "singleton": true
@@ -121,6 +126,11 @@
121
126
  "bundled": false,
122
127
  "singleton": true
123
128
  }
129
+ },
130
+ "_build": {
131
+ "load": "static/remoteEntry.664d5a8b85d89d4a46d6.js",
132
+ "extension": "./extension",
133
+ "style": "./style"
124
134
  }
125
135
  }
126
136
  }
@@ -0,0 +1 @@
1
+ "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")}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_jupyter_docprovider_extension=self.webpackChunk_jupyter_docprovider_extension||[]).push([[544],{544:(e,t,o)=>{o.r(t),o.d(t,{default:()=>k});var r,n=o(909),i=o(200),a=o(256),s=o(313),l=o(922),c=o(710),d=o(154),u=o(480),p=o(614),v=o(678),g=o(697),h=o(192),m=o(766),w=o(473);!function(e){e.openPath="filebrowser:open-path"}(r||(r={}));const b={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"),n=new m.YDrive(e.serviceManager.user,r,o);return e.serviceManager.contents.addDrive(n),n}},y={id:"@jupyter/docprovider-extension:yfile",description:"Plugin to register the shared model factory for the content type 'file'",autoStart:!0,requires:[h.ICollaborativeDrive],optional:[],activate:(e,t)=>{t.sharedModelFactory.registerDocumentFactory("file",(()=>new g.YFile))}},f={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})))}},x={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,n=null;const i=async(t,r)=>{if(o){t=t.slice(o.name.length+1),n&&(n.dispose(),n=null);const[i,s]=r.split(":"),l=o.providers.get(`${i}:${s}:${t}`),c=w.URLExt.join(e.serviceManager.serverSettings.baseUrl,"api/collaboration/timeline",t);n=new m.TimelineWidget(c,l,l.contentType,l.format);const d=document.getElementById("jp-slider-status-bar");d&&!n.isAttached&&a.Widget.attach(n,d)}};e.shell.currentChanged&&e.shell.currentChanged.connect((async(e,t)=>{const o=t.newValue;n&&(n.dispose(),n=null),o&&"context"in o&&(await o.context.ready,await i(o.context.path,o.context.model.sharedModel.getState("document_id")))})),t&&(r||(r=new a.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;return!!t&&"context"in t}})))}catch(e){console.error("Failed to activate statusBarTimeline plugin:",e)}}},I={id:"@jupyter/docprovider-extension:defaultFileBrowser",description:"The default file browser factory provider",provides:s.IDefaultFileBrowser,requires:[h.ICollaborativeDrive,s.IFileBrowserFactory],optional:[n.IRouter,n.JupyterFrontEnd.ITreeResolver,n.ILabShell,v.ITranslator],activate:async(e,t,o,r,n,i,a)=>{const{commands:s}=e,l=(null!=a?a:v.nullTranslator).load("jupyterlab");e.serviceManager.contents.addDrive(t);const c=o.createFileBrowser("filebrowser",{auto:!1,restore:!1,driveName:t.name});return c.node.setAttribute("role","region"),c.node.setAttribute("aria-label",l.__("File Browser Section")),j.restoreBrowser(c,s,r,n,i),c}},_={id:"@jupyter/docprovider-extension:logger",description:"A logging plugin for debugging purposes.",autoStart:!0,optional:[d.ILoggerRegistry,c.IEditorTracker,u.INotebookTracker,v.ITranslator],activate:(e,t,o,r,n)=>{const a=(null!=n?n:v.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,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,i.showDialog)({title:a.__("Warning"),body:a.__(`Two collaborative sessions are accessing the file ${t.path} simultaneously.\n \nOpening the same file using different views simultaneously is not supported. Please, close one view; otherwise, you might lose some of your progress.`),buttons:[i.Dialog.okButton()]}))}));const l=new Map,c=(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(c),r&&r.widgetAdded.connect(c),(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,i.showDialog)({title:a.__("Warning"),body:a.__("Two collaborative sessions are accessing the file %1 simultaneously.\n \nOpening a document with multiple views simultaneously is not supported. Please close one view; otherwise, you might lose some of your progress.",e.path),buttons:[i.Dialog.warnButton({label:a.__("Ok")})]})}})()}};var j;!function(e){e.restoreBrowser=async function(e,t,o,n,i){const a="jp-mod-restoring";if(e.addClass(a),!o)return await e.model.restore(e.id),await e.model.refresh(),void e.removeClass(a);const s=async()=>{o.routed.disconnect(s);const l=await(null==n?void 0:n.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(a),(null==i?void 0:i.isEmpty("main"))&&t.execute("launcher:create")};o.routed.connect(s)}}(j||(j={}));const k=[b,y,f,I,_,{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 m.NotebookCellServerExecutor({serverSettings:e.serviceManager.serverSettings}):Object.freeze({runCell:u.runCell})},x]}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_jupyter_docprovider_extension=self.webpackChunk_jupyter_docprovider_extension||[]).push([[618],{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",""]);const 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;break}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.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(n)}},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))}}},618:(e,t,n)=>{n.r(t),n.d(t,{NotebookCellServerExecutor:()=>l,TimelineWidget:()=>A,WebSocketAwarenessProvider:()=>r,WebSocketProvider:()=>g,YDrive:()=>w,requestDocSession:()=>p,requestDocumentTimeline:()=>m,requestUndoRedo:()=>f});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(200),i=n(473),a=n(354),c=n(678);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"),y={method:"POST",body:JSON.stringify({cell_id:h,document_id:v})};r({cell:e});let g=!1;try{g=(await a.ServerConnection.makeRequest(c,y,this._serverSettings)).ok}catch(t){if(o({cell:e,success:!1}),e.isDisposed)return!1;throw t}return o({cell:e,success:g}),!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";async function p(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 m(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 f(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 v=n(602),y=n(262);class g{constructor(e){this._onConnectionClosed=e=>{1003===e.code&&(console.error("Document provider closed:",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 y.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._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(),v.Signal.clearData(this))}async reconnect(){this._disconnect(),this._connect()}async _connect(){const e=await p(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 _="true"===i.PageConfig.getOption("disableRTC");class w 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 g({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.path}`;this._providers.set(a,r),t.changed.connect((async(t,n)=>{if(!n.stateChange)return;const o=n.stateChange.filter((e=>"hash"===e.name));if(0===o.length)return;o.length>1&&console.error("Unexpected multiple changes to hash value in a single transaction");const r=o[0],s=await this.get(e.path,{content:!1});this._ydriveFileChanged.emit({type:"save",newValue:{...s,hash:r.newValue},oldValue:{hash:r.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 v.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}}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=!_,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),S=n.n(C),k=n(591),x=n.n(k),T=n(740),D=n.n(T),E=n(128),$=n.n(E),R=n(855),U=n.n(R),P=n(51),N=n.n(P),j=n(656),W=n.n(j),I=n(68),M={};M.styleTagTransform=W(),M.setAttributes=U(),M.insert=$().bind(null,"head"),M.domAPI=D(),M.insertStyleElement=N(),x()(I.A,M),I.A&&I.A.locals&&I.A.locals;var L=n(460);const F=({apiURL:e,provider:t,contentType:n,format:o})=>{const[r,i]=(0,C.useState)({roomId:"",timestamps:[],forkRoom:"",sessionId:""}),[a,c]=(0,C.useState)(r.timestamps.length-1),[l,d]=(0,C.useState)(!1),[h,u]=(0,C.useState)(!1),v=(0,C.useRef)(!0),y=(0,C.useRef)(!0),g=(0,C.useRef)(null);function _(e){try{const t=new URL(e).pathname.split("/");return t.slice(4-t.length).join("/")}catch(e){return console.error("Invalid URL:",e),""}}return S().createElement("div",{className:"jp-sliderContainer"},S().createElement("div",{onClick:()=>{!async function(r){try{if(v.current){const a=await m(o,n,r);if(!a.ok)throw 404===a.status?new Error("Not found"):503===a.status?new Error("WebSocket closed"):new Error(`Failed to fetch data: ${a.statusText}`);const l=await a.text();let h={roomId:"",timestamps:[],forkRoom:"",sessionId:""};return l&&(s.Notification.warning("Document is now in read-only mode. Changes will not be saved.",{autoClose:2500}),h=JSON.parse(l),i(h),c(h.timestamps.length-1),t.connectToForkDoc(h.forkRoom,h.sessionId),g.current=await p(o,n,_(e))),d(!0),v.current=!1,h}}catch(e){console.error("Error fetching data:",e)}}(_(e))},className:"jp-mod-highlighted",title:"Document Timeline"},S().createElement(L.historyIcon.react,{marginRight:"4px"})),l&&S().createElement("div",{className:"jp-timestampDisplay"},S().createElement("input",{type:"range",min:0,max:r.timestamps.length-1,value:a,onChange:async e=>{const t=parseInt(e.target.value),n=Math.abs(t-a);try{const e=function(e){return e<a?"undo":"redo"}(t);if(c(t),y.current&&(u(!0),y.current=!1),!g.current)return void console.error("Session is not initialized");await f(`${g.current.format}:${g.current.type}:${g.current.fileId}`,e,n,r.forkRoom)}catch(e){console.error("Error fetching or applying updates:",e)}},className:"jp-Slider"}),S().createElement("div",null,S().createElement("strong",null,_(e).split("/").pop()," ")," "),h&&S().createElement("div",{className:"jp-restoreBtnContainer"},S().createElement("button",{onClick:async()=>{if(!g.current)return void console.error("Session is not initialized");const e=await f(`${g.current.format}:${g.current.type}:${g.current.fileId}`,"restore",0,r.forkRoom);200===e.code?(s.Notification.success(e.status,{autoClose:4e3}),t.reconnect(),d(!1),v.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")}`})(r.timestamps[a])))))};class A extends s.ReactWidget{constructor(e,t,n,o){super(),this.apiURL=e,this.provider=t,this.contentType=n,this.format=o,this.addClass("jp-timelineSliderWrapper")}render(){return C.createElement(F,{key:this.apiURL,apiURL:this.apiURL,provider:this.provider,contentType:this.contentType,format:this.format})}updateContent(e,t){this.apiURL=e,this.provider=t,this.contentType=this.provider.contentType,this.format=this.provider.format,this.update()}}}}]);
@@ -0,0 +1 @@
1
+ var _JUPYTERLAB;(()=>{"use strict";var e,r,t,o,a,n,i,l,u,d,f,s,c,p,b,v,h,y,m,g,j,w,P,k={496:(e,r,t)=>{var o={"./index":()=>Promise.all([t.e(823),t.e(544)]).then((()=>()=>t(544))),"./extension":()=>Promise.all([t.e(823),t.e(544)]).then((()=>()=>t(544))),"./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})}},S={};function x(e){var r=S[e];if(void 0!==r)return r.exports;var t=S[e]={id:e,exports:{}};return k[e](t,t.exports,x),t.exports}x.m=k,x.c=S,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+"."+{206:"84c5901f15f0fa0bd745",262:"0cc35b53ffb65372f245",444:"12adfae9a2b50e91531f",544:"2ddaafa7187578bbc811",576:"36471ca07f7437678515",618:"afd487be93204de05459",823:"7ffe7ee89772c5a0cfc8",944:"b85c55dff0f14165f872"}[e]+".js?v="+{206:"84c5901f15f0fa0bd745",262:"0cc35b53ffb65372f245",444:"12adfae9a2b50e91531f",544:"2ddaafa7187578bbc811",576:"36471ca07f7437678515",618:"afd487be93204de05459",823:"7ffe7ee89772c5a0cfc8",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"),d=0;d<u.length;d++){var f=u[d];if(f.getAttribute("src")==t||f.getAttribute("data-webpack")==r+a){i=f;break}}i||(l=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,x.nc&&i.setAttribute("nonce",x.nc),i.setAttribute("data-webpack",r+a),i.src=t),e[t]=[o];var s=(r,o)=>{i.onerror=i.onload=null,clearTimeout(c);var a=e[t];if(delete e[t],i.parentNode&&i.parentNode.removeChild(i),a&&a.forEach((e=>e(o))),r)return r(o)},c=setTimeout(s.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=s.bind(null,i.onerror),i.onload=s.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.0.0-beta.8",(()=>Promise.all([x.e(262),x.e(444)]).then((()=>()=>x(444))))),l("@jupyter/docprovider-extension","3.0.0-beta.8",(()=>Promise.all([x.e(823),x.e(544)]).then((()=>()=>x(544))))),l("@jupyter/docprovider","3.0.0-beta.8",(()=>Promise.all([x.e(262),x.e(618),x.e(823)]).then((()=>()=>x(618))))),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&&(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 d,f,s=l<e.length?(typeof e[l])[0]:"";if(i>=r.length||"o"==(f=(typeof(d=r[i]))[0]))return!u||("u"==s?l>o&&!a:""==s!=a);if("u"==f){if(!u||"u"!=s)return!1}else if(u)if(s==f)if(l<=o){if(d!=e[l])return!1}else{if(a?d>e[l]:d<e[l])return!1;d!=e[l]&&(u=!1)}else if("s"!=s&&"n"!=s){if(a||l<=o)return!1;u=!1,l--}else{if(l<=o||f<s!=a)return!1;u=!1}else"s"!=s&&"n"!=s&&(u=!1,l--)}}var c=[],p=c.pop.bind(c);for(i=1;i<e.length;i++){var b=e[i];c.push(1==b?p()|p():2==b?p()&p():b?n(b,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)),{}),d=(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]},f=(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)},s=(e,r,t,o)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+a(o)+")",c=(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(", ")},p=e=>{throw new Error(e)},b=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},h=(e,r,t)=>t?t():((e,r)=>p("Shared module "+r+" doesn't exist in shared scope "+e))(e,r),y=(v=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 h(e,t,n);var u=d(r,t,a,o);return u?l(u):n?n():void p(c(r,e,t,a,o))})),m=v(((e,r,t,o,a,u)=>{if(!i(r,t))return h(e,t,u);var d=f(r,t,o);return n(a,d)||b(s(r,t,d,a)),l(r[t][d])})),g={},j={200:()=>m("default","@jupyterlab/apputils",!1,[1,4,3,5]),473:()=>m("default","@jupyterlab/coreutils",!1,[1,6,2,5]),678:()=>m("default","@jupyterlab/translation",!1,[1,4,2,5]),154:()=>m("default","@jupyterlab/logconsole",!1,[1,4,2,5]),192:()=>m("default","@jupyter/collaborative-drive",!1,[1,3,0,0,,"beta",8],(()=>Promise.all([x.e(262),x.e(444)]).then((()=>()=>x(444))))),256:()=>m("default","@lumino/widgets",!1,[1,2,3,1,,"alpha",0]),313:()=>m("default","@jupyterlab/filebrowser",!1,[1,4,2,5]),480:()=>m("default","@jupyterlab/notebook",!1,[1,4,2,5]),614:()=>m("default","@jupyterlab/settingregistry",!1,[1,4,2,5]),697:()=>m("default","@jupyter/ydoc",!1,[1,2,0,1]),710:()=>m("default","@jupyterlab/fileeditor",!1,[1,4,2,5]),766:()=>m("default","@jupyter/docprovider",!1,[1,3,0,0,,"beta",8],(()=>Promise.all([x.e(262),x.e(618)]).then((()=>()=>x(618))))),909:()=>m("default","@jupyterlab/application",!1,[1,4,2,5]),922:()=>m("default","@jupyterlab/statusbar",!1,[1,4,2,5]),262:()=>m("default","@lumino/coreutils",!1,[1,2,0,0]),345:()=>m("default","react",!1,[1,18,2,0]),354:()=>m("default","@jupyterlab/services",!1,[1,7,2,5]),460:()=>m("default","@jupyterlab/ui-components",!1,[1,4,2,5]),560:()=>y("default","y-websocket",!1,[1,1,3,15],(()=>Promise.all([x.e(576),x.e(206)]).then((()=>()=>x(576))))),602:()=>m("default","@lumino/signaling",!1,[1,2,0,0]),206:()=>m("default","yjs",!1,[1,13,5,40])},w={206:[206],262:[262],544:[154,192,256,313,480,614,697,710,766,909,922],618:[345,354,460,560,602],823:[200,473,678]},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(/^(206|262|823)$/.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})();
@@ -2,13 +2,19 @@
2
2
  "packages": [
3
3
  {
4
4
  "name": "@jupyter/collaboration",
5
- "versionInfo": "3.0.0-beta.5",
5
+ "versionInfo": "3.0.0-beta.8",
6
+ "licenseId": "BSD-3-Clause",
7
+ "extractedText": ""
8
+ },
9
+ {
10
+ "name": "@jupyter/collaborative-drive",
11
+ "versionInfo": "3.0.0-beta.8",
6
12
  "licenseId": "BSD-3-Clause",
7
13
  "extractedText": ""
8
14
  },
9
15
  {
10
16
  "name": "@jupyter/docprovider",
11
- "versionInfo": "3.0.0-beta.5",
17
+ "versionInfo": "3.0.0-beta.8",
12
18
  "licenseId": "BSD-3-Clause",
13
19
  "extractedText": ""
14
20
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jupyter/docprovider",
3
- "version": "3.0.0-beta.5",
3
+ "version": "3.0.0-beta.8",
4
4
  "description": "JupyterLab - Document Provider",
5
5
  "homepage": "https://github.com/jupyterlab/jupyter-collaboration",
6
6
  "bugs": {
@@ -41,6 +41,7 @@
41
41
  "watch": "tsc -b --watch"
42
42
  },
43
43
  "dependencies": {
44
+ "@jupyter/collaborative-drive": "^3.0.0-beta.8",
44
45
  "@jupyter/ydoc": "^2.0.0 || ^3.0.0-a3",
45
46
  "@jupyterlab/apputils": "^4.2.0",
46
47
  "@jupyterlab/cells": "^4.2.0",
@@ -70,5 +71,13 @@
70
71
  "entryPoint": "./src/index.ts",
71
72
  "displayName": "@jupyter/docprovider",
72
73
  "tsconfig": "./tsconfig.json"
74
+ },
75
+ "jupyterlab": {
76
+ "sharedPackages": {
77
+ "@jupyter/collaborative-drive": {
78
+ "bundled": true,
79
+ "singleton": true
80
+ }
81
+ }
73
82
  }
74
83
  }
@@ -12,5 +12,4 @@ export * from './notebookCellExecutor';
12
12
  export * from './requests';
13
13
  export * from './ydrive';
14
14
  export * from './yprovider';
15
- export * from './tokens';
16
15
  export * from './TimelineSlider';
@@ -13,7 +13,7 @@ import {
13
13
  ICollaborativeDrive,
14
14
  ISharedModelFactory,
15
15
  SharedDocumentFactory
16
- } from './tokens';
16
+ } from '@jupyter/collaborative-drive';
17
17
  import { Awareness } from 'y-protocols/awareness';
18
18
 
19
19
  const DISABLE_RTC =
@@ -251,7 +251,7 @@ export class YDrive extends Drive implements ICollaborativeDrive {
251
251
  * Yjs sharedModel factory for real-time collaboration.
252
252
  */
253
253
  class SharedModelFactory implements ISharedModelFactory {
254
- private _documentFactories: Map<Contents.ContentType, SharedDocumentFactory>;
254
+ documentFactories: Map<Contents.ContentType, SharedDocumentFactory>;
255
255
 
256
256
  /**
257
257
  * Shared model factory constructor
@@ -264,7 +264,7 @@ class SharedModelFactory implements ISharedModelFactory {
264
264
  sharedModel: YDocument<DocumentChange>
265
265
  ) => void
266
266
  ) {
267
- this._documentFactories = new Map();
267
+ this.documentFactories = new Map();
268
268
  }
269
269
 
270
270
  /**
@@ -282,10 +282,10 @@ class SharedModelFactory implements ISharedModelFactory {
282
282
  type: Contents.ContentType,
283
283
  factory: SharedDocumentFactory
284
284
  ) {
285
- if (this._documentFactories.has(type)) {
285
+ if (this.documentFactories.has(type)) {
286
286
  throw new Error(`The content type ${type} already exists`);
287
287
  }
288
- this._documentFactories.set(type, factory);
288
+ this.documentFactories.set(type, factory);
289
289
  }
290
290
 
291
291
  /**
@@ -307,8 +307,8 @@ class SharedModelFactory implements ISharedModelFactory {
307
307
  return;
308
308
  }
309
309
 
310
- if (this._documentFactories.has(options.contentType)) {
311
- const factory = this._documentFactories.get(options.contentType)!;
310
+ if (this.documentFactories.has(options.contentType)) {
311
+ const factory = this.documentFactories.get(options.contentType)!;
312
312
  const sharedModel = factory(options);
313
313
  this._onCreate(options, sharedModel);
314
314
  return sharedModel;
@@ -3,12 +3,12 @@
3
3
  | Distributed under the terms of the Modified BSD License.
4
4
  |----------------------------------------------------------------------------*/
5
5
 
6
+ import { IDocumentProvider } from '@jupyter/collaborative-drive';
6
7
  import { showErrorMessage, Dialog } from '@jupyterlab/apputils';
7
8
  import { User } from '@jupyterlab/services';
8
9
  import { TranslationBundle } from '@jupyterlab/translation';
9
10
 
10
11
  import { PromiseDelegate } from '@lumino/coreutils';
11
- import { IDisposable } from '@lumino/disposable';
12
12
  import { Signal } from '@lumino/signaling';
13
13
 
14
14
  import { DocumentChange, YDocument } from '@jupyter/ydoc';
@@ -19,16 +19,6 @@ import { WebsocketProvider as YWebsocketProvider } from 'y-websocket';
19
19
  import { requestDocSession } from './requests';
20
20
  import { IForkProvider } from './ydrive';
21
21
 
22
- /**
23
- * An interface for a document provider.
24
- */
25
- export interface IDocumentProvider extends IDisposable {
26
- /**
27
- * Returns a Promise that resolves when the document provider is ready.
28
- */
29
- readonly ready: Promise<void>;
30
- }
31
-
32
22
  /**
33
23
  * A class to provide Yjs synchronization over WebSocket.
34
24
  *
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jupyter/docprovider-extension",
3
- "version": "3.0.0-beta.5",
3
+ "version": "3.0.0-beta.8",
4
4
  "description": "JupyterLab - Collaborative Shared Models",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -53,7 +53,8 @@
53
53
  "watch:labextension": "jupyter labextension watch ."
54
54
  },
55
55
  "dependencies": {
56
- "@jupyter/docprovider": "^3.0.0-beta.5",
56
+ "@jupyter/collaborative-drive": "^3.0.0-beta.8",
57
+ "@jupyter/docprovider": "^3.0.0-beta.8",
57
58
  "@jupyter/ydoc": "^2.0.0 || ^3.0.0-a3",
58
59
  "@jupyterlab/application": "^4.2.0",
59
60
  "@jupyterlab/apputils": "^4.2.0",
@@ -105,6 +106,10 @@
105
106
  "bundled": false,
106
107
  "singleton": true
107
108
  },
109
+ "@jupyter/collaborative-drive": {
110
+ "bundled": true,
111
+ "singleton": true
112
+ },
108
113
  "@jupyter/docprovider": {
109
114
  "bundled": true,
110
115
  "singleton": true
@@ -121,11 +126,6 @@
121
126
  "bundled": false,
122
127
  "singleton": true
123
128
  }
124
- },
125
- "_build": {
126
- "load": "static/remoteEntry.01ca8b4214d9332cf35c.js",
127
- "extension": "./extension",
128
- "style": "./style"
129
129
  }
130
130
  }
131
131
  }
@@ -31,11 +31,9 @@ import { YFile, YNotebook } from '@jupyter/ydoc';
31
31
 
32
32
  import {
33
33
  ICollaborativeDrive,
34
- IForkProvider,
35
- IGlobalAwareness,
36
- TimelineWidget,
37
- YDrive
38
- } from '@jupyter/docprovider';
34
+ IGlobalAwareness
35
+ } from '@jupyter/collaborative-drive';
36
+ import { IForkProvider, TimelineWidget, YDrive } from '@jupyter/docprovider';
39
37
  import { Awareness } from 'y-protocols/awareness';
40
38
  import { URLExt } from '@jupyterlab/coreutils';
41
39
 
@@ -167,7 +165,7 @@ export const statusBarTimeline: JupyterFrontEndPlugin<void> = {
167
165
  const [format, type] = documentId.split(':');
168
166
  const provider = drive.providers.get(
169
167
  `${format}:${type}:${documentPath}`
170
- ) as IForkProvider;
168
+ ) as unknown as IForkProvider;
171
169
  const fullPath = URLExt.join(
172
170
  app.serviceManager.serverSettings.baseUrl,
173
171
  DOCUMENT_TIMELINE_URL,
@@ -239,13 +237,7 @@ export const defaultFileBrowser: JupyterFrontEndPlugin<IDefaultFileBrowser> = {
239
237
  description: 'The default file browser factory provider',
240
238
  provides: IDefaultFileBrowser,
241
239
  requires: [ICollaborativeDrive, IFileBrowserFactory],
242
- optional: [
243
- IRouter,
244
- JupyterFrontEnd.ITreeResolver,
245
- ILabShell,
246
- ISettingRegistry,
247
- ITranslator
248
- ],
240
+ optional: [IRouter, JupyterFrontEnd.ITreeResolver, ILabShell, ITranslator],
249
241
  activate: async (
250
242
  app: JupyterFrontEnd,
251
243
  drive: YDrive,
@@ -1 +0,0 @@
1
- __version__ = "1.0.0b5"
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_jupyter_docprovider_extension=self.webpackChunk_jupyter_docprovider_extension||[]).push([[544],{544:(e,t,o)=>{o.r(t),o.d(t,{default:()=>j});var r,i=o(909),n=o(200),a=o(256),s=o(313),l=o(922),c=o(710),d=o(154),u=o(480),p=o(614),v=o(678),g=o(697),h=o(933),m=o(473);!function(e){e.openPath="filebrowser:open-path"}(r||(r={}));const w={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"),i=new h.YDrive(e.serviceManager.user,r,o);return e.serviceManager.contents.addDrive(i),i}},y={id:"@jupyter/docprovider-extension:yfile",description:"Plugin to register the shared model factory for the content type 'file'",autoStart:!0,requires:[h.ICollaborativeDrive],optional:[],activate:(e,t)=>{t.sharedModelFactory.registerDocumentFactory("file",(()=>new g.YFile))}},b={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})))}},f={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,i=null;const n=async(t,r)=>{if(o){t=t.slice(o.name.length+1),i&&(i.dispose(),i=null);const[n,s]=r.split(":"),l=o.providers.get(`${n}:${s}:${t}`),c=m.URLExt.join(e.serviceManager.serverSettings.baseUrl,"api/collaboration/timeline",t);i=new h.TimelineWidget(c,l,l.contentType,l.format);const d=document.getElementById("jp-slider-status-bar");d&&!i.isAttached&&a.Widget.attach(i,d)}};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 n(o.context.path,o.context.model.sharedModel.getState("document_id")))})),t&&(r||(r=new a.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;return!!t&&"context"in t}})))}catch(e){console.error("Failed to activate statusBarTimeline plugin:",e)}}},x={id:"@jupyter/docprovider-extension:defaultFileBrowser",description:"The default file browser factory provider",provides:s.IDefaultFileBrowser,requires:[h.ICollaborativeDrive,s.IFileBrowserFactory],optional:[i.IRouter,i.JupyterFrontEnd.ITreeResolver,i.ILabShell,p.ISettingRegistry,v.ITranslator],activate:async(e,t,o,r,i,n,a)=>{const{commands:s}=e,l=(null!=a?a:v.nullTranslator).load("jupyterlab");e.serviceManager.contents.addDrive(t);const c=o.createFileBrowser("filebrowser",{auto:!1,restore:!1,driveName:t.name});return c.node.setAttribute("role","region"),c.node.setAttribute("aria-label",l.__("File Browser Section")),_.restoreBrowser(c,s,r,i,n),c}},I={id:"@jupyter/docprovider-extension:logger",description:"A logging plugin for debugging purposes.",autoStart:!0,optional:[d.ILoggerRegistry,c.IEditorTracker,u.INotebookTracker,v.ITranslator],activate:(e,t,o,r,i)=>{const a=(null!=i?i:v.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,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:a.__("Warning"),body:a.__(`Two collaborative sessions are accessing the file ${t.path} simultaneously.\n \nOpening the same file using different views simultaneously is not supported. Please, close one view; otherwise, you might lose some of your progress.`),buttons:[n.Dialog.okButton()]}))}));const l=new Map,c=(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(c),r&&r.widgetAdded.connect(c),(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:a.__("Warning"),body:a.__("Two collaborative sessions are accessing the file %1 simultaneously.\n \nOpening a document with multiple views simultaneously is not supported. Please close one view; otherwise, you might lose some of your progress.",e.path),buttons:[n.Dialog.warnButton({label:a.__("Ok")})]})}})()}};var _;!function(e){e.restoreBrowser=async function(e,t,o,i,n){const a="jp-mod-restoring";if(e.addClass(a),!o)return await e.model.restore(e.id),await e.model.refresh(),void e.removeClass(a);const s=async()=>{o.routed.disconnect(s);const l=await(null==i?void 0:i.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(a),(null==n?void 0:n.isEmpty("main"))&&t.execute("launcher:create")};o.routed.connect(s)}}(_||(_={}));const j=[w,y,b,x,I,{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"===m.PageConfig.getOption("serverSideExecution")?new h.NotebookCellServerExecutor({serverSettings:e.serviceManager.serverSettings}):Object.freeze({runCell:u.runCell})},f]}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_jupyter_docprovider_extension=self.webpackChunk_jupyter_docprovider_extension||[]).push([[562],{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",""]);const 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;break}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.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(n)}},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))}}},562:(e,t,n)=>{n.r(t),n.d(t,{ICollaborativeDrive:()=>C,IGlobalAwareness:()=>S,NotebookCellServerExecutor:()=>l,TimelineWidget:()=>O,WebSocketAwarenessProvider:()=>r,WebSocketProvider:()=>g,YDrive:()=>w,requestDocSession:()=>p,requestDocumentTimeline:()=>m,requestUndoRedo:()=>v});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(200),i=n(473),a=n(354),c=n(678);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 v=(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:v.__("Kernel Terminating"),body:v.__("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:v.__("Cell not executed due to pending input"),body:v.__("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(),f=t.sharedModel.getState("document_id"),y={method:"POST",body:JSON.stringify({cell_id:h,document_id:f})};r({cell:e});let g=!1;try{g=(await a.ServerConnection.makeRequest(c,y,this._serverSettings)).ok}catch(t){if(o({cell:e,success:!1}),e.isDisposed)return!1;throw t}return o({cell:e,success:g}),!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";async function p(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 m(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 v(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 f=n(602),y=n(262);class g{constructor(e){this._onConnectionClosed=e=>{1003===e.code&&(console.error("Document provider closed:",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 y.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._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(),f.Signal.clearData(this))}async reconnect(){this._disconnect(),this._connect()}async _connect(){const e=await p(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 _="true"===i.PageConfig.getOption("disableRTC");class w 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 g({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.path}`;this._providers.set(a,r),t.changed.connect((async(t,n)=>{if(!n.stateChange)return;const o=n.stateChange.filter((e=>"hash"===e.name));if(0===o.length)return;o.length>1&&console.error("Unexpected multiple changes to hash value in a single transaction");const r=o[0],s=await this.get(e.path,{content:!1});this._ydriveFileChanged.emit({type:"save",newValue:{...s,hash:r.newValue},oldValue:{hash:r.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 f.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}}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=!_,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}.`)}}const C=new y.Token("@jupyter/collaboration-extension:ICollaborativeDrive"),S=new y.Token("@jupyter/collaboration:IGlobalAwareness");var k=n(345),T=n.n(k),x=n(591),D=n.n(x),E=n(740),$=n.n(E),R=n(128),U=n.n(R),j=n(855),P=n.n(j),N=n(51),I=n.n(N),W=n(656),M=n.n(W),L=n(68),F={};F.styleTagTransform=M(),F.setAttributes=P(),F.insert=U().bind(null,"head"),F.domAPI=$(),F.insertStyleElement=I(),D()(L.A,F),L.A&&L.A.locals&&L.A.locals;var A=n(460);const B=({apiURL:e,provider:t,contentType:n,format:o})=>{const[r,i]=(0,k.useState)({roomId:"",timestamps:[],forkRoom:"",sessionId:""}),[a,c]=(0,k.useState)(r.timestamps.length-1),[l,d]=(0,k.useState)(!1),[h,u]=(0,k.useState)(!1),f=(0,k.useRef)(!0),y=(0,k.useRef)(!0),g=(0,k.useRef)(null);function _(e){try{const t=new URL(e).pathname.split("/");return t.slice(4-t.length).join("/")}catch(e){return console.error("Invalid URL:",e),""}}return T().createElement("div",{className:"jp-sliderContainer"},T().createElement("div",{onClick:()=>{!async function(r){try{if(f.current){const a=await m(o,n,r);if(!a.ok)throw 404===a.status?new Error("Not found"):503===a.status?new Error("WebSocket closed"):new Error(`Failed to fetch data: ${a.statusText}`);const l=await a.text();let h={roomId:"",timestamps:[],forkRoom:"",sessionId:""};return l&&(s.Notification.warning("Document is now in read-only mode. Changes will not be saved.",{autoClose:2500}),h=JSON.parse(l),i(h),c(h.timestamps.length-1),t.connectToForkDoc(h.forkRoom,h.sessionId),g.current=await p(o,n,_(e))),d(!0),f.current=!1,h}}catch(e){console.error("Error fetching data:",e)}}(_(e))},className:"jp-mod-highlighted",title:"Document Timeline"},T().createElement(A.historyIcon.react,{marginRight:"4px"})),l&&T().createElement("div",{className:"jp-timestampDisplay"},T().createElement("input",{type:"range",min:0,max:r.timestamps.length-1,value:a,onChange:async e=>{const t=parseInt(e.target.value),n=Math.abs(t-a);try{const e=function(e){return e<a?"undo":"redo"}(t);if(c(t),y.current&&(u(!0),y.current=!1),!g.current)return void console.error("Session is not initialized");await v(`${g.current.format}:${g.current.type}:${g.current.fileId}`,e,n,r.forkRoom)}catch(e){console.error("Error fetching or applying updates:",e)}},className:"jp-Slider"}),T().createElement("div",null,T().createElement("strong",null,_(e).split("/").pop()," ")," "),h&&T().createElement("div",{className:"jp-restoreBtnContainer"},T().createElement("button",{onClick:async()=>{if(!g.current)return void console.error("Session is not initialized");const e=await v(`${g.current.format}:${g.current.type}:${g.current.fileId}`,"restore",0,r.forkRoom);200===e.code?(s.Notification.success(e.status,{autoClose:4e3}),t.reconnect(),d(!1),f.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")}`})(r.timestamps[a])))))};class O extends s.ReactWidget{constructor(e,t,n,o){super(),this.apiURL=e,this.provider=t,this.contentType=n,this.format=o,this.addClass("jp-timelineSliderWrapper")}render(){return k.createElement(B,{key:this.apiURL,apiURL:this.apiURL,provider:this.provider,contentType:this.contentType,format:this.format})}updateContent(e,t){this.apiURL=e,this.provider=t,this.contentType=this.provider.contentType,this.format=this.provider.format,this.update()}}}}]);
@@ -1 +0,0 @@
1
- var _JUPYTERLAB;(()=>{"use strict";var e,r,t,o,a,n,i,u,l,d,s,f,c,p,h,v,b,y,m,g,j,w,P,k={496:(e,r,t)=>{var o={"./index":()=>Promise.all([t.e(823),t.e(544)]).then((()=>()=>t(544))),"./extension":()=>Promise.all([t.e(823),t.e(544)]).then((()=>()=>t(544))),"./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})}},S={};function x(e){var r=S[e];if(void 0!==r)return r.exports;var t=S[e]={id:e,exports:{}};return k[e](t,t.exports,x),t.exports}x.m=k,x.c=S,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+"."+{206:"84c5901f15f0fa0bd745",544:"93c72014d00edb4807b7",562:"7a1279cc90d15b8b4fa0",576:"36471ca07f7437678515",823:"7ffe7ee89772c5a0cfc8",944:"b85c55dff0f14165f872"}[e]+".js?v="+{206:"84c5901f15f0fa0bd745",544:"93c72014d00edb4807b7",562:"7a1279cc90d15b8b4fa0",576:"36471ca07f7437678515",823:"7ffe7ee89772c5a0cfc8",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,u;if(void 0!==a)for(var l=document.getElementsByTagName("script"),d=0;d<l.length;d++){var s=l[d];if(s.getAttribute("src")==t||s.getAttribute("data-webpack")==r+a){i=s;break}}i||(u=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,x.nc&&i.setAttribute("nonce",x.nc),i.setAttribute("data-webpack",r+a),i.src=t),e[t]=[o];var f=(r,o)=>{i.onerror=i.onload=null,clearTimeout(c);var a=e[t];if(delete e[t],i.parentNode&&i.parentNode.removeChild(i),a&&a.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),u&&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",u=(e,r,t,o)=>{var a=n[e]=n[e]||{},u=a[r];(!u||!u.loaded&&(!o!=!u.eager?o:i>u.from))&&(a[r]={get:t,from:i,eager:!!o})},l=[];return"default"===t&&(u("@jupyter/docprovider-extension","3.0.0-beta.5",(()=>Promise.all([x.e(823),x.e(544)]).then((()=>()=>x(544))))),u("@jupyter/docprovider","3.0.0-beta.5",(()=>Promise.all([x.e(562),x.e(823)]).then((()=>()=>x(562))))),u("y-websocket","1.5.4",(()=>Promise.all([x.e(576),x.e(206)]).then((()=>()=>x(576)))))),e[t]=l.length?Promise.all(l).then((()=>e[t]=1)):1}}})(),(()=>{var e;x.g.importScripts&&(e=x.g.location+"");var r=x.g.document;if(!e&&r&&(r.currentScript&&(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],u=(typeof i)[0];if(n!=u)return"o"==n&&"n"==u||"s"==u||"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(u=e[n]))[0]?"-":(o>0?".":"")+(o=2,u);return t}var i=[];for(n=1;n<e.length;n++){var u=e[n];i.push(0===u?"not("+l()+")":1===u?"("+l()+" || "+l()+")":2===u?i.pop()+" "+i.pop():a(u))}return l();function l(){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,u=1,l=!0;;u++,i++){var d,s,f=u<e.length?(typeof e[u])[0]:"";if(i>=r.length||"o"==(s=(typeof(d=r[i]))[0]))return!l||("u"==f?u>o&&!a:""==f!=a);if("u"==s){if(!l||"u"!=f)return!1}else if(l)if(f==s)if(u<=o){if(d!=e[u])return!1}else{if(a?d>e[u]:d<e[u])return!1;d!=e[u]&&(l=!1)}else if("s"!=f&&"n"!=f){if(a||u<=o)return!1;l=!1,u--}else{if(u<=o||s<f!=a)return!1;l=!1}else"s"!=f&&"n"!=f&&(l=!1,u--)}}var c=[],p=c.pop.bind(c);for(i=1;i<e.length;i++){var h=e[i];c.push(1==h?p()|p():2==h?p()&p():h?n(h,r):!p())}return!!p()},i=(e,r)=>e&&x.o(e,r),u=e=>(e.loaded=1,e.get()),l=e=>Object.keys(e).reduce(((r,t)=>(e[t].eager&&(r[t]=e[t]),r)),{}),d=(e,r,t,a)=>{var i=a?l(e[r]):e[r];return(r=Object.keys(i).reduce(((e,r)=>!n(t,r)||e&&!o(e,r)?e:r),0))&&i[r]},s=(e,r,t)=>{var a=t?l(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)+")",c=(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(", ")},p=e=>{throw new Error(e)},h=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},b=(e,r,t)=>t?t():((e,r)=>p("Shared module "+r+" doesn't exist in shared scope "+e))(e,r),y=(v=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 l=d(r,t,a,o);return l?u(l):n?n():void p(c(r,e,t,a,o))})),m=v(((e,r,t,o,a,l)=>{if(!i(r,t))return b(e,t,l);var d=s(r,t,o);return n(a,d)||h(f(r,t,d,a)),u(r[t][d])})),g={},j={200:()=>m("default","@jupyterlab/apputils",!1,[1,4,3,5]),473:()=>m("default","@jupyterlab/coreutils",!1,[1,6,2,5]),678:()=>m("default","@jupyterlab/translation",!1,[1,4,2,5]),154:()=>m("default","@jupyterlab/logconsole",!1,[1,4,2,5]),256:()=>m("default","@lumino/widgets",!1,[1,2,3,1,,"alpha",0]),313:()=>m("default","@jupyterlab/filebrowser",!1,[1,4,2,5]),480:()=>m("default","@jupyterlab/notebook",!1,[1,4,2,5]),614:()=>m("default","@jupyterlab/settingregistry",!1,[1,4,2,5]),697:()=>m("default","@jupyter/ydoc",!1,[1,2,0,1]),710:()=>m("default","@jupyterlab/fileeditor",!1,[1,4,2,5]),909:()=>m("default","@jupyterlab/application",!1,[1,4,2,5]),922:()=>m("default","@jupyterlab/statusbar",!1,[1,4,2,5]),933:()=>m("default","@jupyter/docprovider",!1,[1,3,0,0,,"beta",5],(()=>x.e(562).then((()=>()=>x(562))))),262:()=>m("default","@lumino/coreutils",!1,[1,2,0,0]),345:()=>m("default","react",!1,[1,18,2,0]),354:()=>m("default","@jupyterlab/services",!1,[1,7,2,5]),460:()=>m("default","@jupyterlab/ui-components",!1,[1,4,2,5]),560:()=>y("default","y-websocket",!1,[1,1,3,15],(()=>Promise.all([x.e(576),x.e(206)]).then((()=>()=>x(576))))),602:()=>m("default","@lumino/signaling",!1,[1,2,0,0]),206:()=>m("default","yjs",!1,[1,13,5,40])},w={206:[206],544:[154,256,313,480,614,697,710,909,922,933],562:[262,345,354,460,560,602],823:[200,473,678]},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(/^(206|823)$/.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,u]=t,l=0;if(n.some((r=>0!==e[r]))){for(o in i)x.o(i,o)&&(x.m[o]=i[o]);u&&u(x)}for(r&&r(t);l<n.length;l++)a=n[l],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})();
@@ -1,58 +0,0 @@
1
- // Copyright (c) Jupyter Development Team.
2
- // Distributed under the terms of the Modified BSD License.
3
-
4
- import { DocumentChange, IAwareness, YDocument } from '@jupyter/ydoc';
5
- import { Contents } from '@jupyterlab/services';
6
-
7
- import { Token } from '@lumino/coreutils';
8
- import { WebSocketProvider } from './yprovider';
9
-
10
- /**
11
- * The collaborative drive.
12
- */
13
- export const ICollaborativeDrive = new Token<ICollaborativeDrive>(
14
- '@jupyter/collaboration-extension:ICollaborativeDrive'
15
- );
16
-
17
- /**
18
- * The global awareness token.
19
- */
20
- export const IGlobalAwareness = new Token<IAwareness>(
21
- '@jupyter/collaboration:IGlobalAwareness'
22
- );
23
-
24
- /**
25
- * A document factory for registering shared models
26
- */
27
- export type SharedDocumentFactory = (
28
- options: Contents.ISharedFactoryOptions
29
- ) => YDocument<DocumentChange>;
30
-
31
- /**
32
- * A Collaborative implementation for an `IDrive`, talking to the
33
- * server using the Jupyter REST API and a WebSocket connection.
34
- */
35
- export interface ICollaborativeDrive extends Contents.IDrive {
36
- /**
37
- * SharedModel factory for the YDrive.
38
- */
39
- readonly sharedModelFactory: ISharedModelFactory;
40
-
41
- readonly providers: Map<string, WebSocketProvider>;
42
- }
43
-
44
- /**
45
- * Yjs sharedModel factory for real-time collaboration.
46
- */
47
- export interface ISharedModelFactory extends Contents.ISharedFactory {
48
- /**
49
- * Register a SharedDocumentFactory.
50
- *
51
- * @param type Document type
52
- * @param factory Document factory
53
- */
54
- registerDocumentFactory(
55
- type: Contents.ContentType,
56
- factory: SharedDocumentFactory
57
- ): void;
58
- }