-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathimjoy-loader.min.js.map
1 lines (1 loc) · 54.7 KB
/
imjoy-loader.min.js.map
1
{"version":3,"sources":["webpack://[name]/webpack/universalModuleDefinition","webpack://[name]/webpack/bootstrap","webpack://[name]/./src/imjoyBasicApp.js","webpack://[name]/(webpack)/buildin/amd-options.js","webpack://[name]/./src/imjoyLoader.js","webpack://[name]/./src/imjoyBasicApp.template.css","webpack://[name]/./src/imjoyBasicApp.template.html","webpack://[name]/./src/imjoyBasicAppMenu.template.html","webpack://[name]/./src/imjoyBasicAppWindows.template.html"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","injectScript","src","Promise","resolve","reject","script","document","createElement","addEventListener","head","removeChild","appendChild","getUrlParameter","replace","results","RegExp","exec","location","search","decodeURIComponent","async","loadImJoyBasicApp","config","app","url","fileref","setAttribute","getElementsByTagName","loadCss","imjoy_api","showDialog","plugin","cfg","extra_cfg","dialog","imjoy","pm","createWindow","window_manager_container","showSnackbar","msg","duration","showMessage","showStatus","showProgress","progress","$forceUpdate","k","keys","loadImJoyCore","ImJoy","expose_api","client_id","default_base_frame","default_rpc_base_url","debug","flags","engine_selector","elem","windowManager","menuManager","start","console","log","Vue","use","default","VueWindow","main_container","getElementById","body","style","visibility","innerHTML","APP_TEMPLATE","insertAdjacentHTML","CSS_STYLE","windowsElem","WINDOWS_TEMPLATE","el","data","type","window_manager_type","windowSizePosChanging","windowStyle","window_style","showEmpty","show_empty_window","showWindowTitle","show_window_title","windows","activeWindow","watch","newVal","$emit","methods","closeWindow","w","this","hidden","close","menu_container","menuElem","MENU_TEMPLATE","minHeight","menuPos","menu_pos","menuStyle","menu_style","showAboutImJoy","extraMenuItems","loadedPlugins","allWindows","showContent","mounted","float","menuClicked","setTimeout","dialogWindows","selectedDialogWindow","selectedWindowsStack","selectedRegularWindow","fullscreen","loading","snackBarContent","snackBarTimer","showProgressBar","show_progress_bar","showLoaderCallback","show_loader","showWindows","show_windows","$el","event_bus","on","push","addWindow","process_url_query","processURLQuery","hide_about_imjoy","api","passive","computed","regularWindows","filter","includes","inline","engine","binder","token","setupPluginEngine","spec","setupBinderEngine","loadPlugin","then","tmp","JSON","parse","runPlugin","ui","indexOf","run","em","getFactory","reloadPluginRecursively","uri","unregister","addEngine","nbUrl","e","error","alert","addMenuItem","removeMenuItem","label","item","it","idx","splice","clearTimeout","showLoader","windowElm","window_id","assign","show","scrollIntoView","standalone","$modal","wm","selectWindow","emit","hide","sizeState","self","showWindow","pop","length","minimizeWindow","maximizeWindow","__webpack_amd_options__","_getParams","params","parser","href","vars","substring","split","pair","baseUrl","base_url","version","imjoyCore","eval","_rpc_registry","latest_rpc_version","dependencies","_rpc_api_versions","from","to","skips","findRPCVersionByAPIVersion","apiVersion","latestOnly","cached","f","v","map","a","sort","reverse","API_VERSION","loadImJoyRPC","api_version","Error","info","rpc_url","checkAndCacheLib","imjoyRPC","VERSION","catch","loadImJoyRPCSocketIO","imjoyRPCSocketIO","loadImJoyRPCByQueryString","urlParams"],"mappings":"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","file":"imjoy-loader.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"imjoyLoader\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"imjoyLoader\"] = factory();\n\telse\n\t\troot[\"imjoyLoader\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 19);\n","import CSS_STYLE from \"./imjoyBasicApp.template.css\";\nimport APP_TEMPLATE from \"./imjoyBasicApp.template.html\";\nimport MENU_TEMPLATE from \"./imjoyBasicAppMenu.template.html\";\nimport WINDOWS_TEMPLATE from \"./imjoyBasicAppWindows.template.html\";\n\nexport function injectScript(src) {\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = src;\n script.addEventListener(\"load\", resolve);\n script.addEventListener(\"error\", () => {\n document.head.removeChild(script);\n reject(\"Error loading script: \" + src);\n });\n script.addEventListener(\"abort\", () => reject(\"Script loading aborted.\"));\n document.head.appendChild(script);\n });\n}\n\nfunction getUrlParameter(name) {\n name = name.replace(/[\\[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\n var regex = new RegExp(\"[\\\\?&]\" + name + \"=([^&#]*)\");\n var results = regex.exec(location.search);\n return results === null\n ? \"\"\n : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\n}\n\nfunction loadCss(url) {\n const fileref = document.createElement(\"link\");\n fileref.setAttribute(\"rel\", \"stylesheet\");\n fileref.setAttribute(\"type\", \"text/css\");\n fileref.setAttribute(\"href\", url);\n document.getElementsByTagName(\"head\")[0].appendChild(fileref);\n}\n\nexport async function loadImJoyBasicApp(config) {\n await injectScript(\"https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.min.js\");\n await injectScript(\"https://imjoy-team.github.io/vue-js-modal/index.js\");\n loadCss(\"https://imjoy-team.github.io/vue-js-modal/styles.css\");\n await injectScript(\n \"https://cdn.jsdelivr.net/npm/@oeway/[email protected]/lib/index.js\"\n );\n config = config || {};\n let app;\n const imjoy_api = {\n showDialog(plugin, cfg, extra_cfg) {\n extra_cfg = extra_cfg || {};\n extra_cfg.dialog = true;\n return imjoy.pm.createWindow(plugin, cfg, extra_cfg);\n },\n createWindow(plugin, cfg, extra_cfg) {\n extra_cfg = extra_cfg || {};\n if (!config.window_manager_container) extra_cfg.dialog = true;\n return imjoy.pm.createWindow(plugin, cfg, extra_cfg);\n },\n showSnackbar(plugin, msg, duration) {\n app.showSnackbar(msg, duration);\n },\n showMessage(plugin, msg) {\n app.showSnackbar(msg, 5);\n },\n showStatus(plugin, msg) {\n app.showSnackbar(msg, 5);\n },\n showProgress(plugin, progress) {\n progress = progress || 0;\n if (progress < 1) progress = progress * 100;\n app.progress = progress;\n app.$forceUpdate();\n },\n };\n if (config.imjoy_api) {\n for (let k of Object.keys(config.imjoy_api)) {\n imjoy_api[k] = config.imjoy_api[k];\n }\n }\n const imjoyCore = await loadImJoyCore(config);\n const imjoy = new imjoyCore.ImJoy({\n imjoy_api,\n expose_api: config.expose_api,\n client_id: config.client_id,\n default_base_frame: config.default_base_frame,\n default_rpc_base_url: config.default_rpc_base_url,\n debug: config.debug,\n flags: config.flags || [],\n engine_selector: config.engine_selector,\n });\n await imjoy.start(config);\n console.log(\"ImJoy Core started successfully!\");\n Vue.use(window[\"vue-js-modal\"].default);\n Vue.use(window.VueWindow);\n let elem;\n if (config.main_container) {\n if (typeof config.main_container === \"string\")\n elem = document.getElementById(config.main_container);\n else elem = config.main_container;\n } else {\n elem = document.createElement(\"div\");\n document.body.appendChild(elem);\n }\n elem.style.visibility = \"hidden\";\n elem.innerHTML = APP_TEMPLATE;\n document.head.insertAdjacentHTML(\"beforeend\", `<style>${CSS_STYLE}</style>`);\n\n let windowManager;\n if (config.window_manager_container) {\n let windowsElem;\n if (typeof config.window_manager_container === \"string\")\n windowsElem = document.getElementById(config.window_manager_container);\n else windowsElem = config.window_manager_container;\n windowsElem.innerHTML = WINDOWS_TEMPLATE;\n windowManager = new Vue({\n el: windowsElem,\n data: {\n type: config.window_manager_type || \"standard\",\n windowSizePosChanging: false,\n windowStyle: config.window_style || {},\n showEmpty: config.show_empty_window || false,\n showWindowTitle: config.show_window_title || false,\n windows: [],\n activeWindow: null,\n },\n watch: {\n windowSizePosChanging: function(newVal) {\n app.$emit(\"window-size-pos-changing\", newVal);\n },\n },\n methods: {\n closeWindow(w) {\n this.windowSizePosChanging = false;\n w.hidden = true;\n this.$forceUpdate();\n w.close();\n },\n },\n });\n }\n\n let menuManager;\n if (config.menu_container) {\n let menuElem;\n if (typeof config.menu_container === \"string\")\n menuElem = document.getElementById(config.menu_container);\n else menuElem = config.menu_container;\n menuElem.innerHTML = MENU_TEMPLATE;\n menuElem.style.minHeight = \"30px\";\n menuManager = new Vue({\n el: menuElem,\n data: {\n menuPos: config.menu_pos || \"right\",\n menuStyle: config.menu_style || { \"z-index\": 999 },\n activeWindow: null,\n closeWindow: null,\n showAboutImJoy: null,\n extraMenuItems: [],\n loadedPlugins: [],\n allWindows: [],\n showContent: true,\n },\n mounted() {\n this.menuStyle = this.menuStyle || {};\n this.menuStyle.float = this.menuPos === \"left\" ? \"left\" : \"right\";\n },\n methods: {\n menuClicked() {\n // force closing the menu for touch screen devices\n this.showContent = false;\n this.$forceUpdate();\n setTimeout(() => {\n this.showContent = true;\n this.$forceUpdate();\n }, 0);\n },\n },\n });\n }\n\n app = new Vue({\n el: elem,\n data: {\n dialogWindows: [],\n selectedDialogWindow: null,\n selectedWindowsStack: [],\n selectedRegularWindow: null,\n fullscreen: false,\n loading: false,\n snackBarContent: false,\n snackBarTimer: null,\n progress: 0,\n loadedPlugins: [],\n allWindows: [],\n extraMenuItems: [],\n showProgressBar: config.show_progress_bar,\n showLoaderCallback: config.show_loader,\n showWindows: config.show_windows,\n },\n mounted() {\n this.$el.style.visibility = \"visible\";\n imjoy.event_bus.on(\"close_window\", w => {\n this.closeWindow(w);\n this.$forceUpdate();\n });\n imjoy.event_bus.on(\"add_window\", w => {\n this.allWindows.push(w);\n this.addWindow(w);\n });\n this.imjoy = imjoy;\n if (config.process_url_query) {\n this.processURLQuery();\n }\n if (menuManager) {\n menuManager.closeWindow = w => {\n this.closeWindow(w);\n };\n if (!config.hide_about_imjoy) {\n menuManager.showAboutImJoy = () => {\n imjoy.api.showDialog({\n src: \"https://imjoy.io/docs/\",\n passive: true,\n });\n };\n }\n }\n },\n computed: {\n regularWindows: function() {\n return this.allWindows.filter(\n w => !this.dialogWindows.includes(w) && !w.inline\n );\n },\n },\n watch: {\n regularWindows: function(newVal) {\n if (windowManager) {\n windowManager.windows = newVal;\n windowManager.$forceUpdate();\n }\n },\n selectedRegularWindow: function(newVal) {\n if (windowManager) {\n windowManager.activeWindow = newVal;\n windowManager.$forceUpdate();\n }\n if (menuManager && config.window_manager_type === \"simple\") {\n menuManager.activeWindow = newVal;\n menuManager.$forceUpdate();\n }\n },\n extraMenuItems: function(newVal) {\n if (menuManager) {\n menuManager.extraMenuItems = newVal;\n menuManager.$forceUpdate();\n }\n },\n allWindows: function(newVal) {\n if (menuManager) {\n menuManager.allWindows = newVal;\n menuManager.$forceUpdate();\n }\n },\n loadedPlugins: function(newVal) {\n if (menuManager) {\n menuManager.loadedPlugins = newVal;\n menuManager.$forceUpdate();\n }\n },\n },\n methods: {\n async processURLQuery() {\n const engine = getUrlParameter(\"engine\");\n const p = getUrlParameter(\"plugin\") || getUrlParameter(\"p\");\n const binder = getUrlParameter(\"binder\");\n if (engine) {\n const token = getUrlParameter(\"token\");\n const name = getUrlParameter(\"name\");\n await this.setupPluginEngine(engine, token, name);\n }\n if (binder) {\n const name = getUrlParameter(\"name\");\n const spec = getUrlParameter(\"spec\");\n await this.setupBinderEngine(binder, spec, name);\n }\n\n if (p) {\n this.loadPlugin(p).then(plugin => {\n let config = {},\n data = {},\n tmp;\n tmp = getUrlParameter(\"data\");\n if (tmp) data = JSON.parse(tmp);\n tmp = getUrlParameter(\"config\");\n if (tmp) config = JSON.parse(tmp);\n this.runPlugin(plugin, config, data);\n });\n }\n },\n async runPlugin(plugin, config, data) {\n if (!config && plugin.config.ui && plugin.config.ui.indexOf(\"{\") > -1) {\n config = await imjoy.pm.imjoy_api.showDialog(plugin, plugin.config);\n }\n data = data || {};\n return await plugin.api.run({\n config: config,\n data: data,\n });\n },\n async setupPluginEngine(engine, token, name) {\n try {\n console.log(\"Loading Jupyter-Engine-Manager from Gist...\");\n if (!imjoy.em.getFactory(\"Jupyter-Engine\")) {\n await imjoy.pm.reloadPluginRecursively({\n uri:\n \"https://imjoy-team.github.io/jupyter-engine-manager/Jupyter-Engine-Manager.imjoy.html\",\n });\n console.log(\"Jupyter-Engine-Manager loaded.\");\n await imjoy.em.unregister(\"https://mybinder.org\");\n }\n const factory = imjoy.em.getFactory(\"Jupyter-Engine\");\n\n await factory.addEngine({\n name: name,\n url: engine,\n nbUrl: engine + \"?token=\" + token,\n });\n console.log(\"plugin engine added:\", engine);\n } catch (e) {\n console.error(e);\n alert(`Failed to connect to the engine: ${e}`);\n }\n },\n async setupBinderEngine(url, spec, name) {\n try {\n console.log(\"Loading Jupyter-Engine-Manager from Gist...\");\n if (!imjoy.em.getFactory(\"MyBinder-Engine\")) {\n await imjoy.pm.reloadPluginRecursively({\n uri:\n \"https://imjoy-team.github.io/jupyter-engine-manager/Jupyter-Engine-Manager.imjoy.html\",\n });\n console.log(\"Jupyter-Engine-Manager loaded.\");\n await imjoy.em.unregister(\"https://mybinder.org\");\n }\n\n const factory = imjoy.em.getFactory(\"MyBinder-Engine\");\n await factory.addEngine({\n name,\n spec,\n url,\n });\n console.log(\"Binder engine added:\", url);\n } catch (e) {\n console.error(e);\n alert(`Failed to connect to the engine: ${e}`);\n }\n },\n async loadPlugin(uri) {\n try {\n this.loading = true;\n const p = await imjoy.pm.reloadPluginRecursively({\n uri,\n });\n this.loadedPlugins.push(p);\n this.showSnackbar(`Plugin ${p.name} successfully loaded.`);\n return p;\n } finally {\n this.loading = false;\n }\n },\n addMenuItem(config) {\n this.extraMenuItems.push(config);\n this.$forceUpdate();\n },\n removeMenuItem(label) {\n const item = this.extraMenuItems.filter(it => it.label === label)[0];\n const idx = this.extraMenuItems.indexOf(item);\n if (idx >= 0) this.extraMenuItems.splice(idx, 1);\n },\n showSnackbar(msg, duration) {\n if (this.snackBarTimer) clearTimeout(this.snackBarTimer);\n duration = duration || 3;\n this.snackBarContent = msg;\n this.$forceUpdate();\n this.snackBarTimer = setTimeout(() => {\n this.snackBarContent = null;\n this.snackBarTimer = null;\n this.$forceUpdate();\n }, duration * 1000);\n },\n showLoader(loading) {\n if (this.showLoaderCallback) {\n this.showLoaderCallback(loading);\n } else {\n this.loading = loading;\n }\n this.$forceUpdate();\n },\n addWindow(w) {\n w.api = w.api || {};\n const windowElm = document.getElementById(w.window_id);\n if (windowElm) {\n if (w.window_style) Object.assign(windowElm.style, w.window_style);\n w.inline = true;\n w.api.show = w.show = () => {\n windowElm.scrollIntoView();\n };\n return;\n }\n if (!w.dialog) {\n this.selectedRegularWindow = w;\n setTimeout(() => {\n if (w.fullscreen || w.standalone) {\n w.sizeState = \"maximized\";\n } else {\n w.sizeState = \"normal\";\n }\n this.$forceUpdate();\n }, 0);\n const self = this;\n w.api.show = w.show = () => {\n w.sizeState = \"restore\";\n self.selectedRegularWindow = w;\n self.$forceUpdate();\n imjoy.wm.selectWindow(w);\n w.api.emit(\"show\");\n };\n } else {\n this.dialogWindows.push(w);\n if (this.selectedDialogWindow) {\n this.selectedWindowsStack.push(this.selectedDialogWindow);\n }\n this.selectedDialogWindow = w;\n if (w.fullscreen || w.standalone) this.fullscreen = true;\n else this.fullscreen = false;\n this.$modal.show(\"window-modal-dialog\");\n this.$forceUpdate();\n w.api.show = w.show = () => {\n this.selectedDialogWindow = w;\n this.$modal.show(\"window-modal-dialog\");\n imjoy.wm.selectWindow(w);\n w.api.emit(\"show\");\n };\n\n w.api.hide = w.hide = () => {\n if (this.selectedDialogWindow === w) {\n this.$modal.hide(\"window-modal-dialog\");\n }\n w.api.emit(\"hide\");\n };\n\n setTimeout(() => {\n try {\n w.show();\n } catch (e) {\n console.error(e);\n }\n }, 500);\n }\n },\n showWindow(w) {\n if (w.fullscreen || w.standalone) this.fullscreen = true;\n else this.fullscreen = false;\n if (w) this.selectedDialogWindow = w;\n this.$modal.show(\"window-modal-dialog\");\n },\n closeWindow(w) {\n let idx = this.dialogWindows.indexOf(w);\n if (idx >= 0) this.dialogWindows.splice(idx, 1);\n idx = this.allWindows.indexOf(w);\n if (idx >= 0) this.allWindows.splice(idx, 1);\n if (w === this.selectedDialogWindow) {\n this.selectedDialogWindow = this.selectedWindowsStack.pop();\n }\n if (!this.selectedDialogWindow) this.$modal.hide(\"window-modal-dialog\");\n if (w === this.selectedRegularWindow) {\n if (this.regularWindows.length > 0)\n this.selectedRegularWindow =\n this.regularWindows[this.regularWindows.length - 1] || null;\n else this.selectedRegularWindow = null;\n }\n this.$forceUpdate();\n },\n minimizeWindow() {\n this.$modal.hide(\"window-modal-dialog\");\n },\n maximizeWindow() {\n this.fullscreen = !this.fullscreen;\n },\n },\n });\n return app;\n}\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","import { dependencies } from \"../package.json\";\nimport { injectScript, loadImJoyBasicApp } from \"./imjoyBasicApp.js\";\n\n/**\n * Get the URL parameters\n * source: https://css-tricks.com/snippets/javascript/get-url-variables/\n * @param {String} url The URL\n * @return {Object} The URL parameters\n */\nvar _getParams = function(url) {\n var params = {};\n var parser = document.createElement(\"a\");\n parser.href = url;\n var query = parser.search.substring(1);\n var vars = query.split(\"&\");\n for (var i = 0; i < vars.length; i++) {\n var pair = vars[i].split(\"=\");\n params[pair[0]] = decodeURIComponent(pair[1]);\n }\n return params;\n};\n\n// Load the imjoy core script\n// it support the following options:\n// 1) version, you can specify a specific version of the core,\n// for example `version: \"0.11.13\"` or `version: \"latest\"`\n// 2) debug, by default, the minified version will be used,\n// if debug==true, the full version will be served\n// 3) base_url, the url for loading the core library\nexport function loadImJoyCore(config) {\n config = config || {};\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve, reject) => {\n try {\n var baseUrl = config.base_url;\n if (!baseUrl) {\n const version = config.version || \"latest\";\n baseUrl = `https://cdn.jsdelivr.net/npm/imjoy-core@${version}/dist/`;\n }\n delete window.imjoyCore;\n if (config.debug) {\n await injectScript(baseUrl + \"imjoy-core.js\");\n } else {\n await injectScript(baseUrl + \"imjoy-core.min.js\");\n }\n if (window.imjoyCore) {\n const imjoyCore = window.imjoyCore;\n delete window.imjoyCore;\n resolve(imjoyCore);\n } else if (\n typeof define === \"function\" &&\n // eslint-disable-next-line no-undef\n define.amd\n )\n eval(\"require\")([\"imjoyCore\"], resolve);\n else reject(\"Failed to import imjoy-core.\");\n } catch (e) {\n reject(e);\n }\n });\n}\nconst _rpc_registry = {};\n// get version number from package.json\nexport const latest_rpc_version = dependencies[\"imjoy-rpc\"].replace(\n /[^\\d.-]/g,\n \"\"\n);\n\nconst _rpc_api_versions = {\n \"0.2.0\": { from: \"0.1.10\", to: \"0.1.17\", skips: [] },\n \"0.2.1\": { from: \"0.1.18\", to: \"0.2.5\", skips: [] },\n \"0.2.2\": { from: \"0.2.6\", to: \"0.2.6\", skips: [] },\n \"0.2.3\": {\n from: \"0.2.7\",\n to: latest_rpc_version,\n skips: [\n \"0.2.9\",\n \"0.2.15\",\n \"0.2.16\",\n \"0.2.18\",\n \"0.2.23\",\n \"0.2.24\",\n \"0.2.25\",\n ],\n },\n};\n\n// specify an api version and this function will return the actual imjoy-rpc version\n// if you set latestOnly to true, then it returns always the latest for the api version\n// otherwise, it will try to find a compatible version in the cached version.\nfunction findRPCVersionByAPIVersion(apiVersion, latestOnly) {\n if (!apiVersion || !apiVersion.includes(\".\")) return;\n let cached = Object.keys(_rpc_registry);\n if (_rpc_api_versions[apiVersion]) {\n if (cached.length <= 0 || latestOnly) {\n return _rpc_api_versions[apiVersion].to;\n }\n // see if we can find a compatible version in the cache\n // sort the cached version\n cached = (f => f(f(cached, 1).sort(), -1))((cached, v) =>\n cached.map(a => a.replace(/\\d+/g, n => +n + v * 100000))\n );\n for (let c of cached.reverse()) {\n if (_rpc_registry[c].API_VERSION === apiVersion) return c;\n }\n return _rpc_api_versions[apiVersion].to;\n } else {\n return null;\n }\n}\n// Load the script for a plugin to communicate with imjoy-rpc\n// This should only be called when the window is inside the iframe\n// it support the following options:\n// 1) version, you can specify a specific version of the imjoy-rpc,\n// for example `version: \"0.11.13\"` or `version: \"latest\"`\n// 2) api_version, specify the api version of the imjoy-rpc\n// 3) debug, by default, the minified version will be used,\n// if debug==true, the full version will be served\n// 4) base_url, the url for loading the rpc library\nexport function loadImJoyRPC(config) {\n config = config || {};\n return new Promise((resolve, reject) => {\n var baseUrl = config.base_url;\n let version = config.version;\n if (!baseUrl) {\n if (config.version) {\n baseUrl = `https://cdn.jsdelivr.net/npm/imjoy-rpc@${\n config.version\n }/dist/`;\n } else {\n if (config.api_version) {\n // find the latest version for this api_version\n version = findRPCVersionByAPIVersion(config.api_version, true);\n if (version) {\n baseUrl = `https://cdn.jsdelivr.net/npm/imjoy-rpc@${version}/dist/`;\n } else {\n reject(\n Error(\n `Cannot find a version of imjoy-rpc that supports api v${\n config.api_version\n }`\n )\n );\n return;\n }\n } else {\n baseUrl = `https://cdn.jsdelivr.net/npm/imjoy-rpc@latest/dist/`;\n version = \"latest\";\n console.info(`Using imjoy-rpc library from ${baseUrl}.`);\n }\n }\n }\n\n if (version && _rpc_registry[version]) {\n console.info(`Using cached imjoy-rpc library v${version}.`);\n resolve(_rpc_registry[version]);\n return;\n }\n\n let rpc_url = baseUrl + \"imjoy-rpc.min.js\";\n if (config.debug) {\n rpc_url = baseUrl + \"imjoy-rpc.js\";\n }\n function checkAndCacheLib(imjoyRPC) {\n if (version && version !== \"latest\" && version !== imjoyRPC.VERSION) {\n throw new Error(\n `imjoy-rpc version mismatch ${version} != ${imjoyRPC.VERSION}`\n );\n }\n if (config.api_version && config.api_version !== imjoyRPC.API_VERSION) {\n throw new Error(\n `imjoy-rpc api version mismatch ${config.api_version} != ${\n imjoyRPC.API_VERSION\n }`\n );\n }\n _rpc_registry[imjoyRPC.VERSION] = imjoyRPC;\n }\n delete window.imjoyRPC;\n injectScript(rpc_url)\n .then(() => {\n if (window.imjoyRPC) {\n const imjoyRPC = window.imjoyRPC;\n delete window.imjoyRPC;\n try {\n checkAndCacheLib(imjoyRPC);\n resolve(imjoyRPC);\n } catch (e) {\n reject(e);\n }\n } else if (\n typeof define === \"function\" &&\n // eslint-disable-next-line no-undef\n define.amd\n )\n eval(\"require\")([\"imjoyRPC\"], imjoyRPC => {\n try {\n checkAndCacheLib(imjoyRPC);\n resolve(imjoyRPC);\n } catch (e) {\n reject(e);\n }\n });\n else {\n reject(\"Failed to import imjoy-rpc.\");\n return;\n }\n })\n .catch(reject);\n });\n}\n\nexport function loadImJoyRPCSocketIO(config) {\n config = config || {};\n return new Promise((resolve, reject) => {\n var baseUrl = config.base_url;\n let version = config.version;\n if (!baseUrl) {\n if (config.version) {\n baseUrl = `https://cdn.jsdelivr.net/npm/imjoy-rpc-socketio@${\n config.version\n }/dist/`;\n } else {\n if (config.api_version) {\n // find the latest version for this api_version\n version = findRPCVersionByAPIVersion(config.api_version, true);\n if (version) {\n baseUrl = `https://cdn.jsdelivr.net/npm/imjoy-rpc-socketio@${version}/dist/`;\n } else {\n reject(\n Error(\n `Cannot find a version of imjoy-rpc-socketio that supports api v${\n config.api_version\n }`\n )\n );\n return;\n }\n } else {\n baseUrl = `https://cdn.jsdelivr.net/npm/imjoy-rpc-socketio@latest/dist/`;\n version = \"latest\";\n console.info(`Using imjoy-rpc-socketio library from ${baseUrl}.`);\n }\n }\n }\n\n let rpc_url = baseUrl + \"imjoy-rpc-socketio.min.js\";\n if (config.debug) {\n rpc_url = baseUrl + \"imjoy-rpc-socketio.js\";\n }\n delete window.imjoyRPCSocketIO;\n injectScript(rpc_url)\n .then(() => {\n if (window.imjoyRPCSocketIO) {\n const imjoyRPCSocketIO = window.imjoyRPCSocketIO;\n delete window.imjoyRPCSocketIO;\n resolve(imjoyRPCSocketIO);\n } else if (\n typeof define === \"function\" &&\n // eslint-disable-next-line no-undef\n define.amd\n )\n eval(\"require\")([\"imjoyRPCSocketIO\"], resolve);\n else {\n reject(\"Failed to import imjoy-rpc-socketio.\");\n }\n })\n .catch(reject);\n });\n}\n\nasync function loadImJoyRPCByQueryString() {\n const urlParams = _getParams(window.location);\n return await loadImJoyRPC(urlParams);\n}\n\nexport { loadImJoyBasicApp };\n\nwindow.loadImJoyRPCByQueryString = loadImJoyRPCByQueryString;\nwindow.loadImJoyRPC = loadImJoyRPC;\nwindow.loadImJoyRPCSocketIO = loadImJoyRPCSocketIO;\nwindow.loadImJoyCore = loadImJoyCore;\nwindow.loadImJoyBasicApp = loadImJoyBasicApp;\n","module.exports = \".vm--modal {\\n max-height: 100% !important;\\n max-width: 100% !important;\\n}\\n\\n.imjoy-inline-window {\\n width: 100%;\\n height: 600px;\\n}\\n\\n.imjoy-progress-border > div {\\n background-color: #448aff;\\n height: 3px;\\n}\\n\\n.imjoy-progress-border {\\n top: 0;\\n left: 0;\\n position: absolute;\\n width: 100%;\\n height: 3px;\\n}\\n\\n.imjoy-noselect {\\n -webkit-touch-callout: none;\\n -webkit-user-select: none;\\n -khtml-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n}\\n\\nbody {\\n margin: 0px;\\n}\\n.imjoy-dialog-control {\\n padding: 0px;\\n line-height: 10px;\\n height: 23px;\\n width: 25px;\\n border: 0px;\\n font-size: 1rem;\\n position: absolute;\\n color: white;\\n top: 1px;\\n}\\n\\n.imjoy-dialog-control:focus {\\n outline: none;\\n}\\n\\n.imjoy-loader {\\n position: fixed;\\n top: 40%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n transform: -webkit-translate(-50%, -50%);\\n transform: -moz-translate(-50%, -50%);\\n transform: -ms-translate(-50%, -50%);\\n border: 10px solid #f3f3f3;\\n /* Light grey */\\n border-top: 10px solid #448aff;\\n /* Blue */\\n border-radius: 50%;\\n width: 40px;\\n height: 40px;\\n animation: spin 2s linear infinite;\\n}\\n\\n@keyframes spin {\\n 0% {\\n transform: rotate(0deg);\\n }\\n\\n 100% {\\n transform: rotate(360deg);\\n }\\n}\\n\\n/* The snackbar - position it at the bottom and in the middle of the screen */\\n.imjoy-snackbar {\\n font-family: Arial, Helvetica, sans-serif;\\n visibility: hidden;\\n /* Hidden by default. Visible on click */\\n min-width: 250px;\\n /* Set a default minimum width */\\n background-color: #333333c2;\\n /* Black background color */\\n color: #fff;\\n /* White text color */\\n text-align: center;\\n /* Centered text */\\n border-radius: 5px;\\n /* Rounded borders */\\n padding: 16px;\\n /* Padding */\\n position: fixed;\\n /* Sit on top of the screen */\\n z-index: 9999;\\n /* Add a z-index if needed */\\n left: 50%;\\n /* Center the snackbar */\\n transform: translate(-50%, 0);\\n bottom: 20px;\\n /* 20px from the bottom */\\n}\\n\\n.imjoy-window-title-bar {\\n cursor: move;\\n background-color: #448aff;\\n color: white;\\n text-align: center;\\n height: 24px;\\n}\\n\\n.imjoy-window-title {\\n text-align: center;\\n font-family: Arial, Helvetica, sans-serif;\\n font-size: 16px;\\n line-height: 23px;\\n margin: 0px;\\n}\\n\\n/* Show the snackbar when clicking on a button (class added with JavaScript) */\\n.imjoy-snackbar.show-snackbar {\\n visibility: visible;\\n /* Show the snackbar */\\n /* Add animation: Take 0.5 seconds to fade in and out the snackbar.\\n However, delay the fade out process for 2.5 seconds */\\n -webkit-animation: imjoy-fadein 0.5s;\\n animation: imjoy-fadein 0.5s;\\n}\\n\\n/* Animations to fade the snackbar in and out */\\n@-webkit-keyframes imjoy-fadein {\\n from {\\n bottom: 0;\\n opacity: 0;\\n }\\n\\n to {\\n bottom: 30px;\\n opacity: 1;\\n }\\n}\\n\\n@keyframes imjoy-fadein {\\n from {\\n bottom: 0;\\n opacity: 0;\\n }\\n\\n to {\\n bottom: 30px;\\n opacity: 1;\\n }\\n}\\n\\n.imjoy-dropdown-btn {\\n padding: 4px;\\n font-size: 16px;\\n border: none;\\n cursor: pointer;\\n}\\n\\n.imjoy-dropdown {\\n position: relative;\\n display: inline-block;\\n}\\n\\n.imjoy-dropdown-content {\\n display: none;\\n position: absolute;\\n right: 0;\\n background-color: #f9f9f9;\\n min-width: 200px;\\n box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);\\n z-index: 1;\\n}\\n\\n.imjoy-dropdown-content a {\\n font-family: Arial, Helvetica, sans-serif;\\n color: black;\\n padding: 6px 10px;\\n text-decoration: none;\\n display: block;\\n}\\n\\n.imjoy-dropdown-content a:hover {\\n background-color: #f1f1f1;\\n}\\n\\n.imjoy-dropdown:hover .imjoy-dropdown-content {\\n display: block;\\n}\\n\\n.imjoy-window-container {\\n width: 100%;\\n height: 100%;\\n}\\n\\n.imjoy-windows {\\n position: relative;\\n min-height: 100px;\\n height: calc(100% - 30px);\\n}\\n\\n.block-pointer-events {\\n pointer-events: none;\\n}\\n\"","module.exports = \"<div v-if=\\\"showLoader\\\" class=\\\"imjoy-loader\\\" v-show=\\\"loading\\\"></div>\\n<div v-if=\\\"showProgressBar\\\" class=\\\"imjoy-progress-border\\\" v-show=\\\"progress\\\">\\n <div :style=\\\"{width: progress+'%'}\\\"></div>\\n</div>\\n<div\\n v-show=\\\"snackBarContent\\\"\\n :class=\\\"{'show-snackbar': snackBarContent}\\\"\\n class=\\\"imjoy-snackbar\\\"\\n>\\n {{snackBarContent}}\\n</div>\\n<modal\\n name=\\\"window-modal-dialog\\\"\\n height=\\\"500px\\\"\\n style=\\\"max-height: 100%; max-width: 100%\\\"\\n :fullscreen=\\\"fullscreen\\\"\\n :resizable=\\\"true\\\"\\n draggable=\\\".imjoy-drag-handle\\\"\\n :scrollable=\\\"true\\\"\\n>\\n <div\\n v-if=\\\"selectedDialogWindow\\\"\\n @dblclick=\\\"maximizeWindow()\\\"\\n class=\\\"imjoy-drag-handle imjoy-window-title-bar\\\"\\n >\\n <span class=\\\"imjoy-noselect imjoy-window-title\\\"\\n >{{ selectedDialogWindow.name}}</span\\n >\\n <button\\n @click=\\\"closeWindow(selectedDialogWindow)\\\"\\n class=\\\"imjoy-noselect imjoy-dialog-control\\\"\\n style=\\\"background:#ff0000c4;left:1px;\\\"\\n >\\n x\\n </button>\\n <button\\n @click=\\\"minimizeWindow()\\\"\\n class=\\\"imjoy-noselect imjoy-dialog-control\\\"\\n style=\\\"background:#00cdff61;left:28px;\\\"\\n >\\n -\\n </button>\\n <button\\n @click=\\\"maximizeWindow()\\\"\\n class=\\\"imjoy-noselect imjoy-dialog-control\\\"\\n style=\\\"background:#00cdff61;left:55px;\\\"\\n >\\n {{fullscreen?'=': '+'}}\\n </button>\\n </div>\\n <template v-for=\\\"wdialog in dialogWindows\\\">\\n <div\\n :key=\\\"wdialog.window_id\\\"\\n v-show=\\\"wdialog === selectedDialogWindow\\\"\\n style=\\\"height: calc(100% - 18px);\\\"\\n >\\n <div :id=\\\"wdialog.window_id\\\" style=\\\"width: 100%;height: 100%;\\\"></div>\\n </div>\\n </template>\\n</modal>\\n\"","module.exports = \"<div class=\\\"imjoy-dropdown\\\" :style=\\\"menuStyle\\\">\\n <a class=\\\"imjoy-dropdown-btn\\\"\\n ><img\\n style=\\\"width:24px;\\\"\\n src=\\\"https://imjoy.io/static/img/imjoy-icon.svg\\\"\\n />\\n </a>\\n <div\\n class=\\\"imjoy-dropdown-content\\\"\\n v-if=\\\"showContent\\\"\\n @click=\\\"menuClicked\\\"\\n :style=\\\"{left: menuPos==='left'? 0: null}\\\"\\n >\\n <a\\n href=\\\"#\\\"\\n v-for=\\\"item in extraMenuItems\\\"\\n :key=\\\"item.label\\\"\\n @click.prevent=\\\"item.callback()\\\"\\n >{{item.label}}</a\\n >\\n <hr\\n style=\\\"margin: 0;border-style: solid;color: rgb(157 205 255 / 45%);\\\"\\n v-show=\\\"extraMenuItems.length>0 && loadedPlugins.length>0\\\"\\n />\\n <a\\n href=\\\"#\\\"\\n v-for=\\\"p in loadedPlugins\\\"\\n :key=\\\"p.id\\\"\\n @click.prevent=\\\"p.api.run()\\\"\\n >🧩 {{p.name}}</a\\n >\\n <hr\\n style=\\\"margin: 0;border-style: solid;color: rgb(157 205 255 / 45%);\\\"\\n v-show=\\\"allWindows.length>0 && loadedPlugins.length>0\\\"\\n />\\n <a href=\\\"#\\\" v-if=\\\"showAboutImJoy\\\" @click.prevent=\\\"showAboutImJoy()\\\"\\n >ℹ️ About ImJoy</a\\n >\\n <hr\\n style=\\\"margin: 0;border-style: solid;color: rgb(157 205 255 / 45%);\\\"\\n v-show=\\\"allWindows.length>0 && loadedPlugins.length>0\\\"\\n />\\n <a\\n href=\\\"#\\\"\\n v-for=\\\"w in allWindows\\\"\\n :style=\\\"{'background-color': activeWindow===w?'#adcafb78':'', 'font-weight': activeWindow===w? 600:300}\\\"\\n :key=\\\"w.id\\\"\\n @click.prevent=\\\"w.api.show()\\\"\\n >🔳 {{w.name}}</a\\n >\\n <a\\n href=\\\"#\\\"\\n v-if=\\\"activeWindow && closeWindow\\\"\\n @click.prevent=\\\"closeWindow(activeWindow)\\\"\\n >❌ Close Window</a\\n >\\n </div>\\n</div>\\n\"","module.exports = \"<template v-if=\\\"type==='standard'\\\">\\n <hsc-window-style-material>\\n <hsc-window\\n v-for=\\\"w in windows\\\"\\n :key=\\\"w.id\\\"\\n v-show=\\\"!w.hidden\\\"\\n :title=\\\"w.name\\\"\\n :minimize-style=\\\"{display: 'none'}\\\"\\n :close-button=\\\"!w.disable_close\\\"\\n @close=\\\"closeWindow(w)\\\"\\n :size-state.sync=\\\"w.sizeState\\\"\\n :maximize-button=\\\"true\\\"\\n :resizable=\\\"true\\\"\\n :width=\\\"w.w*30\\\"\\n :height=\\\"w.h*30\\\"\\n :resizable=\\\"true\\\"\\n @resize-start=\\\"windowSizePosChanging = true\\\"\\n @resize-end=\\\"windowSizePosChanging = false\\\"\\n @move-start=\\\"windowSizePosChanging = true\\\"\\n @move-end=\\\"windowSizePosChanging = false\\\"\\n >\\n <div\\n :class=\\\"{'block-pointer-events': windowSizePosChanging }\\\"\\n :id=\\\"w.window_id\\\"\\n class=\\\"imjoy-window-container\\\"\\n ></div>\\n </hsc-window>\\n </hsc-window-style-material>\\n</template>\\n<template v-else>\\n <div\\n v-for=\\\"w in windows\\\"\\n v-show=\\\"w === activeWindow\\\"\\n :key=\\\"w.id\\\"\\n class=\\\"imjoy-windows\\\"\\n :style=\\\"windowStyle\\\"\\n >\\n <div\\n v-if=\\\"showWindowTitle\\\"\\n style=\\\"text-align: center;height:24px; background: #cacaca66;\\\"\\n >\\n <span\\n style=\\\"font-size:1rem;font-family: Arial, Helvetica, sans-serif;line-height: 24px;\\\"\\n >{{ w.name }}</span\\n >\\n </div>\\n <div\\n :id=\\\"w.window_id\\\"\\n class=\\\"imjoy-window-container\\\"\\n :style=\\\"{height: showWindowTitle?'calc(100% - 24px)': '100%'}\\\"\\n ></div>\\n </div>\\n</template>\\n<div\\n v-if=\\\"showEmpty && (!activeWindow || windows.length <= 0)\\\"\\n class=\\\"imjoy-windows\\\"\\n :style=\\\"windowStyle\\\"\\n>\\n <img\\n style=\\\"width:80px; position:absolute; left:50%; top: 50%; transform: translate(-50%, -50%);\\\"\\n src=\\\"https://imjoy.io/static/img/imjoy-icon.svg\\\"\\n />\\n</div>\\n\""],"sourceRoot":""}