mito-ai 0.1.53__py3-none-any.whl → 0.1.54__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mito_ai/_version.py +1 -1
- mito_ai/completions/models.py +1 -1
- mito_ai/completions/prompt_builders/agent_system_message.py +10 -7
- mito_ai/streamlit_conversion/prompts/streamlit_app_creation_prompt.py +18 -2
- mito_ai/streamlit_conversion/streamlit_agent_handler.py +12 -12
- mito_ai/streamlit_preview/handlers.py +13 -6
- mito_ai/streamlit_preview/manager.py +4 -1
- mito_ai/streamlit_preview/utils.py +4 -4
- mito_ai/tests/streamlit_conversion/test_streamlit_agent_handler.py +7 -7
- mito_ai/tests/streamlit_preview/test_streamlit_preview_handler.py +4 -3
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/share/jupyter/labextensions/mito_ai/build_log.json +1 -1
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/share/jupyter/labextensions/mito_ai/package.json +4 -4
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/share/jupyter/labextensions/mito_ai/schemas/mito_ai/package.json.orig +3 -3
- mito_ai-0.1.53.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.4b7cd47a24bb24ef84ea.js → mito_ai-0.1.54.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.31462f8f6a76b1cefbeb.js +169 -42
- mito_ai-0.1.54.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.31462f8f6a76b1cefbeb.js.map +1 -0
- mito_ai-0.1.53.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.4395ab9342efa39fc0a2.js → mito_ai-0.1.54.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.3f3c98eaba66bf084c66.js +3 -3
- mito_ai-0.1.53.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.4395ab9342efa39fc0a2.js.map → mito_ai-0.1.54.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.3f3c98eaba66bf084c66.js.map +1 -1
- {mito_ai-0.1.53.dist-info → mito_ai-0.1.54.dist-info}/METADATA +1 -1
- {mito_ai-0.1.53.dist-info → mito_ai-0.1.54.dist-info}/RECORD +43 -43
- {mito_ai-0.1.53.dist-info → mito_ai-0.1.54.dist-info}/WHEEL +1 -1
- mito_ai-0.1.53.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.4b7cd47a24bb24ef84ea.js.map +0 -1
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/etc/jupyter/jupyter_server_config.d/mito_ai.json +0 -0
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/share/jupyter/labextensions/mito_ai/schemas/mito_ai/toolbar-buttons.json +0 -0
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/share/jupyter/labextensions/mito_ai/static/node_modules_process_browser_js.4b128e94d31a81ebd209.js +0 -0
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/share/jupyter/labextensions/mito_ai/static/node_modules_process_browser_js.4b128e94d31a81ebd209.js.map +0 -0
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/share/jupyter/labextensions/mito_ai/static/style.js +0 -0
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/share/jupyter/labextensions/mito_ai/static/style_index_js.5876024bb17dbd6a3ee6.js +0 -0
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/share/jupyter/labextensions/mito_ai/static/style_index_js.5876024bb17dbd6a3ee6.js.map +0 -0
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_auth_dist_esm_providers_cognito_apis_signOut_mjs-node_module-75790d.688c25857e7b81b1740f.js +0 -0
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_auth_dist_esm_providers_cognito_apis_signOut_mjs-node_module-75790d.688c25857e7b81b1740f.js.map +0 -0
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_auth_dist_esm_providers_cognito_tokenProvider_tokenProvider_-72f1c8.a917210f057fcfe224ad.js +0 -0
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_auth_dist_esm_providers_cognito_tokenProvider_tokenProvider_-72f1c8.a917210f057fcfe224ad.js.map +0 -0
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_dist_esm_index_mjs.6bac1a8c4cc93f15f6b7.js +0 -0
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_dist_esm_index_mjs.6bac1a8c4cc93f15f6b7.js.map +0 -0
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_ui-react_dist_esm_index_mjs.4fcecd65bef9e9847609.js +0 -0
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_ui-react_dist_esm_index_mjs.4fcecd65bef9e9847609.js.map +0 -0
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_react-dom_client_js-node_modules_aws-amplify_ui-react_dist_styles_css.b43d4249e4d3dac9ad7b.js +0 -0
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_react-dom_client_js-node_modules_aws-amplify_ui-react_dist_styles_css.b43d4249e4d3dac9ad7b.js.map +0 -0
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_semver_index_js.3f6754ac5116d47de76b.js +0 -0
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_semver_index_js.3f6754ac5116d47de76b.js.map +0 -0
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_vscode-diff_dist_index_js.ea55f1f9346638aafbcf.js +0 -0
- {mito_ai-0.1.53.data → mito_ai-0.1.54.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_vscode-diff_dist_index_js.ea55f1f9346638aafbcf.js.map +0 -0
- {mito_ai-0.1.53.dist-info → mito_ai-0.1.54.dist-info}/entry_points.txt +0 -0
- {mito_ai-0.1.53.dist-info → mito_ai-0.1.54.dist-info}/licenses/LICENSE +0 -0
|
@@ -3740,7 +3740,7 @@ const useAgentExecution = ({ notebookTracker, app, streamlitPreviewManager, webs
|
|
|
3740
3740
|
break;
|
|
3741
3741
|
}
|
|
3742
3742
|
// TODO: If we created a validated type in the agent response validation function, then we woulnd't need to do these checks
|
|
3743
|
-
if (agentResponse.type === 'edit_streamlit_app' && (agentResponse.
|
|
3743
|
+
if (agentResponse.type === 'edit_streamlit_app' && (agentResponse.streamlit_app_prompt === undefined || agentResponse.streamlit_app_prompt === null)) {
|
|
3744
3744
|
await markAgentForStopping();
|
|
3745
3745
|
isAgentFinished = true;
|
|
3746
3746
|
break;
|
|
@@ -3785,12 +3785,13 @@ const useAgentExecution = ({ notebookTracker, app, streamlitPreviewManager, webs
|
|
|
3785
3785
|
}
|
|
3786
3786
|
if (agentResponse.type === 'create_streamlit_app') {
|
|
3787
3787
|
// Create new preview using the service
|
|
3788
|
-
const
|
|
3788
|
+
const createStreamlitAppPrompt = agentResponse.streamlit_app_prompt || '';
|
|
3789
|
+
const streamlitPreviewResponse = await streamlitPreviewManager.openAppPreview(app, agentTargetNotebookPanelRef.current, createStreamlitAppPrompt);
|
|
3789
3790
|
if (streamlitPreviewResponse.type === 'error') {
|
|
3790
3791
|
messageToShareWithAgent = streamlitPreviewResponse.message;
|
|
3791
3792
|
}
|
|
3792
3793
|
}
|
|
3793
|
-
if (agentResponse.type === 'edit_streamlit_app' && agentResponse.
|
|
3794
|
+
if (agentResponse.type === 'edit_streamlit_app' && agentResponse.streamlit_app_prompt) {
|
|
3794
3795
|
// Ensure there is an active preview to edit
|
|
3795
3796
|
let streamlitPreviewResponse = await streamlitPreviewManager.openAppPreview(app, agentTargetNotebookPanelRef.current);
|
|
3796
3797
|
if (streamlitPreviewResponse.type === 'error') {
|
|
@@ -3798,7 +3799,7 @@ const useAgentExecution = ({ notebookTracker, app, streamlitPreviewManager, webs
|
|
|
3798
3799
|
continue;
|
|
3799
3800
|
}
|
|
3800
3801
|
// Edit the existing preview
|
|
3801
|
-
streamlitPreviewResponse = await streamlitPreviewManager.editExistingPreview(agentResponse.
|
|
3802
|
+
streamlitPreviewResponse = await streamlitPreviewManager.editExistingPreview(agentResponse.streamlit_app_prompt, agentTargetNotebookPanelRef.current);
|
|
3802
3803
|
if (streamlitPreviewResponse.type === 'error') {
|
|
3803
3804
|
messageToShareWithAgent = streamlitPreviewResponse.message;
|
|
3804
3805
|
}
|
|
@@ -4959,9 +4960,9 @@ function validateAndCorrectAgentResponse(agentResponse) {
|
|
|
4959
4960
|
// No empty strings in the assumptions
|
|
4960
4961
|
correctedResponse.analysis_assumptions = (_a = correctedResponse.analysis_assumptions) === null || _a === void 0 ? void 0 : _a.filter(assumption => assumption.trim() !== '');
|
|
4961
4962
|
}
|
|
4962
|
-
// Correct
|
|
4963
|
-
const editStreamlitAppPromptType = typeof correctedResponse.
|
|
4964
|
-
correctedResponse.
|
|
4963
|
+
// Correct streamlit_app_prompt - ensure it's a string when present
|
|
4964
|
+
const editStreamlitAppPromptType = typeof correctedResponse.streamlit_app_prompt;
|
|
4965
|
+
correctedResponse.streamlit_app_prompt = editStreamlitAppPromptType === 'string' ? correctedResponse.streamlit_app_prompt : undefined;
|
|
4965
4966
|
// For now we don't validate the cell_update object itself, as this is more complex and has
|
|
4966
4967
|
// not caused issues thus far.
|
|
4967
4968
|
return correctedResponse;
|
|
@@ -6342,6 +6343,112 @@ const ManageAppsPlugin = {
|
|
|
6342
6343
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ManageAppsPlugin);
|
|
6343
6344
|
|
|
6344
6345
|
|
|
6346
|
+
/***/ }),
|
|
6347
|
+
|
|
6348
|
+
/***/ "./lib/Extensions/AppPreview/PlaceholderWidget.js":
|
|
6349
|
+
/*!********************************************************!*\
|
|
6350
|
+
!*** ./lib/Extensions/AppPreview/PlaceholderWidget.js ***!
|
|
6351
|
+
\********************************************************/
|
|
6352
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6353
|
+
|
|
6354
|
+
__webpack_require__.r(__webpack_exports__);
|
|
6355
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
6356
|
+
/* harmony export */ PlaceholderWidget: () => (/* binding */ PlaceholderWidget)
|
|
6357
|
+
/* harmony export */ });
|
|
6358
|
+
/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @lumino/widgets */ "webpack/sharing/consume/default/@lumino/widgets");
|
|
6359
|
+
/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_lumino_widgets__WEBPACK_IMPORTED_MODULE_0__);
|
|
6360
|
+
/*
|
|
6361
|
+
* Copyright (c) Saga Inc.
|
|
6362
|
+
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
6363
|
+
*/
|
|
6364
|
+
|
|
6365
|
+
/**
|
|
6366
|
+
* Simple placeholder widget for loading state.
|
|
6367
|
+
*/
|
|
6368
|
+
class PlaceholderWidget extends _lumino_widgets__WEBPACK_IMPORTED_MODULE_0__.Widget {
|
|
6369
|
+
constructor() {
|
|
6370
|
+
var _a, _b;
|
|
6371
|
+
super();
|
|
6372
|
+
this.addClass('jp-placeholder-widget');
|
|
6373
|
+
const container = document.createElement('div');
|
|
6374
|
+
container.style.display = 'flex';
|
|
6375
|
+
container.style.flexDirection = 'column';
|
|
6376
|
+
container.style.alignItems = 'center';
|
|
6377
|
+
container.style.justifyContent = 'center';
|
|
6378
|
+
container.style.height = '100%';
|
|
6379
|
+
container.style.width = '100%';
|
|
6380
|
+
container.style.padding = '40px 20px';
|
|
6381
|
+
container.style.textAlign = 'center';
|
|
6382
|
+
const emojiContainer = document.createElement('div');
|
|
6383
|
+
emojiContainer.style.fontSize = '64px';
|
|
6384
|
+
emojiContainer.style.minHeight = '80px';
|
|
6385
|
+
emojiContainer.style.display = 'flex';
|
|
6386
|
+
emojiContainer.style.alignItems = 'center';
|
|
6387
|
+
emojiContainer.style.justifyContent = 'center';
|
|
6388
|
+
emojiContainer.style.marginBottom = '24px';
|
|
6389
|
+
emojiContainer.style.transition = 'opacity 0.3s ease-in-out';
|
|
6390
|
+
const emojis = ['🚧', '🧱', '🏗️', '🔨', '🔧', '⚙️', '🛠️', '🔩', '📐'];
|
|
6391
|
+
let currentEmojiIndex = 0;
|
|
6392
|
+
emojiContainer.textContent = (_a = emojis[currentEmojiIndex]) !== null && _a !== void 0 ? _a : '';
|
|
6393
|
+
const emojiInterval = setInterval(() => {
|
|
6394
|
+
emojiContainer.style.opacity = '0';
|
|
6395
|
+
setTimeout(() => {
|
|
6396
|
+
var _a;
|
|
6397
|
+
currentEmojiIndex = (currentEmojiIndex + 1) % emojis.length;
|
|
6398
|
+
emojiContainer.textContent = (_a = emojis[currentEmojiIndex]) !== null && _a !== void 0 ? _a : '';
|
|
6399
|
+
emojiContainer.style.opacity = '1';
|
|
6400
|
+
}, 150);
|
|
6401
|
+
}, 2000);
|
|
6402
|
+
const message = document.createElement('div');
|
|
6403
|
+
message.textContent = 'Building your app. This might take a couple of minutes.';
|
|
6404
|
+
message.style.fontSize = '16px';
|
|
6405
|
+
message.style.fontWeight = '500';
|
|
6406
|
+
message.style.color = 'var(--jp-content-font-color1)';
|
|
6407
|
+
message.style.marginBottom = '12px';
|
|
6408
|
+
message.style.textAlign = 'center';
|
|
6409
|
+
message.style.lineHeight = '1.5';
|
|
6410
|
+
const statusMessages = [
|
|
6411
|
+
'Starting build...',
|
|
6412
|
+
'Processing cells...',
|
|
6413
|
+
'Analyzing notebook structure...',
|
|
6414
|
+
'Converting to Streamlit format...',
|
|
6415
|
+
'Configuring app components...',
|
|
6416
|
+
'Evaluating Streamlit Apps...',
|
|
6417
|
+
'Initializing server...',
|
|
6418
|
+
'Almost there...',
|
|
6419
|
+
'Finalizing your app...',
|
|
6420
|
+
'Preparing preview...'
|
|
6421
|
+
];
|
|
6422
|
+
const statusMessage = document.createElement('div');
|
|
6423
|
+
let currentStatusIndex = 0;
|
|
6424
|
+
statusMessage.textContent = (_b = statusMessages[currentStatusIndex]) !== null && _b !== void 0 ? _b : '';
|
|
6425
|
+
statusMessage.style.fontSize = '13px';
|
|
6426
|
+
statusMessage.style.color = 'var(--jp-content-font-color3)';
|
|
6427
|
+
statusMessage.style.textAlign = 'center';
|
|
6428
|
+
statusMessage.style.lineHeight = '1.4';
|
|
6429
|
+
statusMessage.style.transition = 'opacity 0.2s ease-in-out';
|
|
6430
|
+
const statusInterval = setInterval(() => {
|
|
6431
|
+
statusMessage.style.opacity = '0';
|
|
6432
|
+
setTimeout(() => {
|
|
6433
|
+
var _a;
|
|
6434
|
+
currentStatusIndex = (currentStatusIndex + 1) % statusMessages.length;
|
|
6435
|
+
statusMessage.textContent = (_a = statusMessages[currentStatusIndex]) !== null && _a !== void 0 ? _a : '';
|
|
6436
|
+
statusMessage.style.opacity = '1';
|
|
6437
|
+
}, 200);
|
|
6438
|
+
}, 20000);
|
|
6439
|
+
// Clean up intervals when widget is disposed
|
|
6440
|
+
this.disposed.connect(() => {
|
|
6441
|
+
clearInterval(emojiInterval);
|
|
6442
|
+
clearInterval(statusInterval);
|
|
6443
|
+
});
|
|
6444
|
+
container.appendChild(emojiContainer);
|
|
6445
|
+
container.appendChild(message);
|
|
6446
|
+
container.appendChild(statusMessage);
|
|
6447
|
+
this.node.appendChild(container);
|
|
6448
|
+
}
|
|
6449
|
+
}
|
|
6450
|
+
|
|
6451
|
+
|
|
6345
6452
|
/***/ }),
|
|
6346
6453
|
|
|
6347
6454
|
/***/ "./lib/Extensions/AppPreview/StreamlitPreviewPlugin.js":
|
|
@@ -6363,16 +6470,17 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
6363
6470
|
/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_lumino_widgets__WEBPACK_IMPORTED_MODULE_2__);
|
|
6364
6471
|
/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @lumino/coreutils */ "webpack/sharing/consume/default/@lumino/coreutils");
|
|
6365
6472
|
/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__WEBPACK_IMPORTED_MODULE_3__);
|
|
6366
|
-
/* harmony import */ var
|
|
6367
|
-
/* harmony import */ var
|
|
6368
|
-
/* harmony import */ var
|
|
6369
|
-
/* harmony import */ var
|
|
6370
|
-
/* harmony import */ var
|
|
6371
|
-
/* harmony import */ var
|
|
6473
|
+
/* harmony import */ var _restAPI_RestAPI__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../restAPI/RestAPI */ "./lib/restAPI/RestAPI.js");
|
|
6474
|
+
/* harmony import */ var _AppDeploy_DeployStreamlitApp__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../AppDeploy/DeployStreamlitApp */ "./lib/Extensions/AppDeploy/DeployStreamlitApp.js");
|
|
6475
|
+
/* harmony import */ var _AppDeploy_AppDeployPlugin__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../AppDeploy/AppDeployPlugin */ "./lib/Extensions/AppDeploy/AppDeployPlugin.js");
|
|
6476
|
+
/* harmony import */ var _AppManager_ManageAppsPlugin__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../AppManager/ManageAppsPlugin */ "./lib/Extensions/AppManager/ManageAppsPlugin.js");
|
|
6477
|
+
/* harmony import */ var _commands__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../commands */ "./lib/commands.js");
|
|
6478
|
+
/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../icons */ "./lib/icons/index.js");
|
|
6372
6479
|
/* harmony import */ var _style_StreamlitPreviewPlugin_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../style/StreamlitPreviewPlugin.css */ "./style/StreamlitPreviewPlugin.css");
|
|
6373
6480
|
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils */ "./lib/Extensions/AppPreview/utils.js");
|
|
6374
|
-
/* harmony import */ var
|
|
6375
|
-
/* harmony import */ var
|
|
6481
|
+
/* harmony import */ var _UpdateAppDropdown__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./UpdateAppDropdown */ "./lib/Extensions/AppPreview/UpdateAppDropdown.js");
|
|
6482
|
+
/* harmony import */ var _utils_notebookMetadata__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../utils/notebookMetadata */ "./lib/utils/notebookMetadata.js");
|
|
6483
|
+
/* harmony import */ var _PlaceholderWidget__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./PlaceholderWidget */ "./lib/Extensions/AppPreview/PlaceholderWidget.js");
|
|
6376
6484
|
/*
|
|
6377
6485
|
* Copyright (c) Saga Inc.
|
|
6378
6486
|
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
@@ -6392,6 +6500,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
6392
6500
|
|
|
6393
6501
|
|
|
6394
6502
|
|
|
6503
|
+
|
|
6395
6504
|
/**
|
|
6396
6505
|
* The token for the StreamlitPreview service.
|
|
6397
6506
|
*/
|
|
@@ -6430,16 +6539,33 @@ class StreamlitAppPreviewManager {
|
|
|
6430
6539
|
/**
|
|
6431
6540
|
* Create a new Streamlit app preview, replacing any existing preview.
|
|
6432
6541
|
*/
|
|
6433
|
-
async openAppPreview(app, notebookPanel) {
|
|
6542
|
+
async openAppPreview(app, notebookPanel, createStreamlitAppPrompt = '') {
|
|
6434
6543
|
// If the user has a different app open, we first close that one
|
|
6435
6544
|
if (!this.isCurrentPreivewForCurrentNotebook(notebookPanel)) {
|
|
6436
6545
|
this.closeCurrentPreview();
|
|
6437
6546
|
}
|
|
6547
|
+
// Create and show placeholder panel immediately
|
|
6548
|
+
let placeholderWidget = null;
|
|
6549
|
+
if (!this.isCurrentPreivewForCurrentNotebook(notebookPanel)) {
|
|
6550
|
+
const placeholderContent = new _PlaceholderWidget__WEBPACK_IMPORTED_MODULE_5__.PlaceholderWidget();
|
|
6551
|
+
placeholderWidget = new _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.MainAreaWidget({ content: placeholderContent });
|
|
6552
|
+
placeholderWidget.title.label = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getAppPreviewNameFromNotebookPanel)(notebookPanel);
|
|
6553
|
+
placeholderWidget.title.closable = true;
|
|
6554
|
+
// Add placeholder to main area with split-right mode
|
|
6555
|
+
app.shell.add(placeholderWidget, 'main', {
|
|
6556
|
+
mode: 'split-right',
|
|
6557
|
+
ref: notebookPanel.id
|
|
6558
|
+
});
|
|
6559
|
+
}
|
|
6438
6560
|
// First save the notebook to ensure the app is up to date
|
|
6439
6561
|
await notebookPanel.context.save();
|
|
6440
6562
|
const notebookPath = notebookPanel.context.path;
|
|
6441
|
-
const notebookID = (0,
|
|
6442
|
-
const streamlitPreviewResponse = await (0,_utils__WEBPACK_IMPORTED_MODULE_6__.startStreamlitPreviewAndNotify)(notebookPath, notebookID);
|
|
6563
|
+
const notebookID = (0,_utils_notebookMetadata__WEBPACK_IMPORTED_MODULE_7__.getNotebookIDAndSetIfNonexistant)(notebookPanel);
|
|
6564
|
+
const streamlitPreviewResponse = await (0,_utils__WEBPACK_IMPORTED_MODULE_6__.startStreamlitPreviewAndNotify)(notebookPath, notebookID, false, createStreamlitAppPrompt);
|
|
6565
|
+
// Close placeholder before handling response (always dispose if it exists)
|
|
6566
|
+
if (placeholderWidget) {
|
|
6567
|
+
placeholderWidget.dispose();
|
|
6568
|
+
}
|
|
6443
6569
|
if (streamlitPreviewResponse.type === 'error') {
|
|
6444
6570
|
return streamlitPreviewResponse;
|
|
6445
6571
|
}
|
|
@@ -6473,9 +6599,9 @@ class StreamlitAppPreviewManager {
|
|
|
6473
6599
|
// Because we are parsing the notebook on the backend by reading
|
|
6474
6600
|
// the file system, it only sees the last saved version of the notebook.
|
|
6475
6601
|
await notebookPanel.context.save();
|
|
6476
|
-
const notebookID = (0,
|
|
6602
|
+
const notebookID = (0,_utils_notebookMetadata__WEBPACK_IMPORTED_MODULE_7__.getNotebookIDAndSetIfNonexistant)(notebookPanel);
|
|
6477
6603
|
// Update the app with the edit prompt
|
|
6478
|
-
const streamlitPreviewResponse = await (0,_utils__WEBPACK_IMPORTED_MODULE_6__.startStreamlitPreviewAndNotify)(notebookPanel.context.path, notebookID,
|
|
6604
|
+
const streamlitPreviewResponse = await (0,_utils__WEBPACK_IMPORTED_MODULE_6__.startStreamlitPreviewAndNotify)(notebookPanel.context.path, notebookID, false, // force_recreate
|
|
6479
6605
|
editPrompt, 'Editing Streamlit app...', 'Streamlit app updated successfully!');
|
|
6480
6606
|
return streamlitPreviewResponse;
|
|
6481
6607
|
}
|
|
@@ -6516,22 +6642,22 @@ class StreamlitAppPreviewManager {
|
|
|
6516
6642
|
createPreviewWidget(app, notebookPanel, appDeployService, appManagerService, previewData) {
|
|
6517
6643
|
const iframeWidget = new IFrameWidget(previewData.url);
|
|
6518
6644
|
// Log that the preview is open
|
|
6519
|
-
void (0,
|
|
6645
|
+
void (0,_restAPI_RestAPI__WEBPACK_IMPORTED_MODULE_8__.logEvent)('opened_streamlit_app_preview');
|
|
6520
6646
|
// Create main area widget
|
|
6521
6647
|
const widget = new _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.MainAreaWidget({ content: iframeWidget });
|
|
6522
6648
|
const notebookPath = notebookPanel.context.path;
|
|
6523
|
-
const notebookID = (0,
|
|
6649
|
+
const notebookID = (0,_utils_notebookMetadata__WEBPACK_IMPORTED_MODULE_7__.getNotebookIDAndSetIfNonexistant)(notebookPanel);
|
|
6524
6650
|
widget.title.label = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getAppPreviewNameFromNotebookPanel)(notebookPanel);
|
|
6525
6651
|
widget.title.closable = true;
|
|
6526
6652
|
// Create toolbar buttons
|
|
6527
6653
|
const editAppButton = new _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.ToolbarButton({
|
|
6528
6654
|
className: 'text-button-mito-ai button-base button-small jp-ToolbarButton mito-deploy-button',
|
|
6529
6655
|
onClick: () => {
|
|
6530
|
-
(0,
|
|
6656
|
+
(0,_UpdateAppDropdown__WEBPACK_IMPORTED_MODULE_9__.showUpdateAppDropdown)(editAppButton.node, notebookPanel);
|
|
6531
6657
|
},
|
|
6532
6658
|
tooltip: 'Edit Streamlit App',
|
|
6533
6659
|
label: 'Edit App',
|
|
6534
|
-
icon:
|
|
6660
|
+
icon: _icons__WEBPACK_IMPORTED_MODULE_10__.EditLabIcon,
|
|
6535
6661
|
iconClass: 'mito-ai-deploy-icon'
|
|
6536
6662
|
});
|
|
6537
6663
|
const recreateAppButton = new _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.ToolbarButton({
|
|
@@ -6541,30 +6667,30 @@ class StreamlitAppPreviewManager {
|
|
|
6541
6667
|
},
|
|
6542
6668
|
tooltip: 'Recreate new App from scratch based on the current state of the notebook',
|
|
6543
6669
|
label: 'Recreate App',
|
|
6544
|
-
icon:
|
|
6670
|
+
icon: _icons__WEBPACK_IMPORTED_MODULE_10__.ResetCircleLabIcon,
|
|
6545
6671
|
iconClass: 'mito-ai-deploy-icon'
|
|
6546
6672
|
});
|
|
6547
6673
|
const deployButton = new _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.ToolbarButton({
|
|
6548
6674
|
className: 'text-button-mito-ai button-base button-small jp-ToolbarButton mito-deploy-button',
|
|
6549
6675
|
onClick: () => {
|
|
6550
|
-
void (0,
|
|
6676
|
+
void (0,_AppDeploy_DeployStreamlitApp__WEBPACK_IMPORTED_MODULE_11__.deployStreamlitApp)(notebookPanel, appDeployService, appManagerService);
|
|
6551
6677
|
},
|
|
6552
6678
|
tooltip: 'Deploy Streamlit App',
|
|
6553
6679
|
label: 'Deploy App',
|
|
6554
|
-
icon:
|
|
6680
|
+
icon: _icons__WEBPACK_IMPORTED_MODULE_10__.DeployLabIcon,
|
|
6555
6681
|
iconClass: 'mito-ai-deploy-icon'
|
|
6556
6682
|
});
|
|
6557
6683
|
// Insert the buttons into the toolbar
|
|
6558
6684
|
widget.toolbar.insertAfter('spacer', 'edit-app-button', editAppButton);
|
|
6559
6685
|
widget.toolbar.insertAfter('edit-app-button', 'recreate-app-button', recreateAppButton);
|
|
6560
|
-
if (app.commands.hasCommand(
|
|
6686
|
+
if (app.commands.hasCommand(_commands__WEBPACK_IMPORTED_MODULE_12__.COMMAND_MITO_AI_BETA_MODE_ENABLED)) {
|
|
6561
6687
|
widget.toolbar.insertAfter('recreate-app-button', 'deploy-app-button', deployButton);
|
|
6562
6688
|
}
|
|
6563
6689
|
// Handle widget disposal
|
|
6564
6690
|
widget.disposed.connect(() => {
|
|
6565
6691
|
console.log('Widget disposed, stopping preview');
|
|
6566
6692
|
if (previewData) {
|
|
6567
|
-
void (0,
|
|
6693
|
+
void (0,_restAPI_RestAPI__WEBPACK_IMPORTED_MODULE_8__.stopStreamlitPreview)(previewData.id);
|
|
6568
6694
|
}
|
|
6569
6695
|
// Clear our reference when the widget is disposed
|
|
6570
6696
|
if (this.currentPreview === widget) {
|
|
@@ -6580,14 +6706,14 @@ class StreamlitAppPreviewManager {
|
|
|
6580
6706
|
const StreamlitPreviewPlugin = {
|
|
6581
6707
|
id: 'mito-ai:streamlit-preview',
|
|
6582
6708
|
autoStart: true,
|
|
6583
|
-
requires: [_jupyterlab_notebook__WEBPACK_IMPORTED_MODULE_0__.INotebookTracker, _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.ICommandPalette,
|
|
6709
|
+
requires: [_jupyterlab_notebook__WEBPACK_IMPORTED_MODULE_0__.INotebookTracker, _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.ICommandPalette, _AppDeploy_AppDeployPlugin__WEBPACK_IMPORTED_MODULE_13__.IAppDeployService, _AppManager_ManageAppsPlugin__WEBPACK_IMPORTED_MODULE_14__.IAppManagerService],
|
|
6584
6710
|
provides: IStreamlitPreviewManager,
|
|
6585
6711
|
activate: (app, notebookTracker, palette, appDeployService, appManagerService) => {
|
|
6586
6712
|
console.log('mito-ai: StreamlitPreviewPlugin activated');
|
|
6587
6713
|
// Create the service instance
|
|
6588
6714
|
const streamlitPreviewManager = new StreamlitAppPreviewManager(appDeployService, appManagerService);
|
|
6589
6715
|
// Add command to command palette
|
|
6590
|
-
app.commands.addCommand(
|
|
6716
|
+
app.commands.addCommand(_commands__WEBPACK_IMPORTED_MODULE_12__.COMMAND_MITO_AI_PREVIEW_AS_STREAMLIT, {
|
|
6591
6717
|
label: 'Preview as Streamlit',
|
|
6592
6718
|
caption: 'Convert current notebook to Streamlit app and preview it',
|
|
6593
6719
|
execute: async () => {
|
|
@@ -6603,7 +6729,7 @@ const StreamlitPreviewPlugin = {
|
|
|
6603
6729
|
});
|
|
6604
6730
|
// Add to command palette
|
|
6605
6731
|
palette.addItem({
|
|
6606
|
-
command:
|
|
6732
|
+
command: _commands__WEBPACK_IMPORTED_MODULE_12__.COMMAND_MITO_AI_PREVIEW_AS_STREAMLIT,
|
|
6607
6733
|
category: 'Mito AI'
|
|
6608
6734
|
});
|
|
6609
6735
|
// Return the service so other plugins can use it
|
|
@@ -6739,7 +6865,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
6739
6865
|
|
|
6740
6866
|
const startStreamlitPreviewAndNotify = async (notebookPath, notebookID, force_recreate = false, edit_prompt = '', start_notification_message = 'Building App Preview...', success_notification_message = 'Streamlit preview started successfully!') => {
|
|
6741
6867
|
const notificationId = _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Notification.emit(start_notification_message, 'in-progress', { autoClose: false });
|
|
6742
|
-
|
|
6868
|
+
// TODO: I can have one function for creating new streamlit app and another function for editing a streamlit app
|
|
6869
|
+
const previewData = await (0,_restAPI_RestAPI__WEBPACK_IMPORTED_MODULE_2__.startStreamlitAppPreview)(notebookPath, notebookID, force_recreate, edit_prompt);
|
|
6743
6870
|
if (previewData.type === 'success') {
|
|
6744
6871
|
// Update notification to success
|
|
6745
6872
|
_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Notification.update({
|
|
@@ -6771,7 +6898,7 @@ async function showRecreateAppConfirmation(notebookPath, notebookID) {
|
|
|
6771
6898
|
defaultButton: 1
|
|
6772
6899
|
});
|
|
6773
6900
|
if (result.button.accept) {
|
|
6774
|
-
void startStreamlitPreviewAndNotify(notebookPath, notebookID, true,
|
|
6901
|
+
void startStreamlitPreviewAndNotify(notebookPath, notebookID, true, '', 'Recreating app from scratch...', 'App recreated successfully!');
|
|
6775
6902
|
}
|
|
6776
6903
|
}
|
|
6777
6904
|
const getAppPreviewNameFromNotebookPanel = (notebookPanel) => {
|
|
@@ -10356,7 +10483,7 @@ const MODEL_MAPPINGS = [
|
|
|
10356
10483
|
},
|
|
10357
10484
|
{
|
|
10358
10485
|
displayName: 'Gemini 2.5 Pro',
|
|
10359
|
-
fullName: 'gemini-2.5-pro
|
|
10486
|
+
fullName: 'gemini-2.5-pro',
|
|
10360
10487
|
type: 'smart',
|
|
10361
10488
|
goodFor: [
|
|
10362
10489
|
'Complex data analysis',
|
|
@@ -11534,7 +11661,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
11534
11661
|
/* harmony export */ logEvent: () => (/* binding */ logEvent),
|
|
11535
11662
|
/* harmony export */ setRule: () => (/* binding */ setRule),
|
|
11536
11663
|
/* harmony export */ setUserKey: () => (/* binding */ setUserKey),
|
|
11537
|
-
/* harmony export */
|
|
11664
|
+
/* harmony export */ startStreamlitAppPreview: () => (/* binding */ startStreamlitAppPreview),
|
|
11538
11665
|
/* harmony export */ stopStreamlitPreview: () => (/* binding */ stopStreamlitPreview),
|
|
11539
11666
|
/* harmony export */ updateSettings: () => (/* binding */ updateSettings)
|
|
11540
11667
|
/* harmony export */ });
|
|
@@ -11631,14 +11758,14 @@ const getDatabaseConnections = async () => {
|
|
|
11631
11758
|
STREAMLIT PREVIEW ENDPOINTS
|
|
11632
11759
|
|
|
11633
11760
|
************************************/
|
|
11634
|
-
const
|
|
11761
|
+
const startStreamlitAppPreview = async (notebookPath, notebookID, force_recreate = false, streamlit_app_prompt = '') => {
|
|
11635
11762
|
const response = await (0,_utils__WEBPACK_IMPORTED_MODULE_0__.requestAPI)('streamlit-preview', {
|
|
11636
11763
|
method: 'POST',
|
|
11637
11764
|
body: JSON.stringify({
|
|
11638
11765
|
notebook_path: notebookPath,
|
|
11639
11766
|
notebook_id: notebookID,
|
|
11640
11767
|
force_recreate: force_recreate,
|
|
11641
|
-
|
|
11768
|
+
streamlit_app_prompt: streamlit_app_prompt
|
|
11642
11769
|
})
|
|
11643
11770
|
});
|
|
11644
11771
|
if (response.error) {
|
|
@@ -15543,7 +15670,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
15543
15670
|
|
|
15544
15671
|
/* Tab styling for sign in/sign up tabs */
|
|
15545
15672
|
.modal-content .amplify-tabs__item {
|
|
15546
|
-
color: var(--
|
|
15673
|
+
color: var(--purple-500) !important;
|
|
15547
15674
|
border-bottom: 2px solid transparent !important;
|
|
15548
15675
|
}
|
|
15549
15676
|
|
|
@@ -15561,7 +15688,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
15561
15688
|
|
|
15562
15689
|
|
|
15563
15690
|
.modal-content .amplify-tabs__item:hover {
|
|
15564
|
-
color: var(--
|
|
15691
|
+
color: var(--purple-700) !important;
|
|
15565
15692
|
}
|
|
15566
15693
|
|
|
15567
15694
|
/* Override any default blue tab styling from Amplify */
|
|
@@ -15837,7 +15964,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
15837
15964
|
margin: 0;
|
|
15838
15965
|
font-family: var(--jp-ui-font-family);
|
|
15839
15966
|
font-style: italic;
|
|
15840
|
-
}`, "",{"version":3,"sources":["webpack://./style/AuthPopup.css"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (c) Saga Inc.\n * Distributed under the terms of the GNU Affero General Public License v3.0 License.\n */\n\n/* Auth popup specific styling to integrate AWS Amplify with Mito theme */\n.modal-content .amplify-authenticator {\n --amplify-colors-font-primary: var(--jp-ui-font-color1);\n --amplify-colors-font-secondary: var(--jp-ui-font-color2);\n --amplify-colors-background-primary: var(--jp-layout-color0);\n --amplify-colors-background-secondary: var(--jp-layout-color1);\n --amplify-colors-border-primary: var(--jp-border-color1);\n --amplify-colors-brand-primary-10: var(--purple-700);\n --amplify-colors-brand-primary-80: var(--purple-500);\n --amplify-colors-brand-primary-90: var(--purple-400);\n --amplify-colors-brand-primary-100: var(--purple-300);\n --amplify-radii-small: 4px;\n --amplify-radii-medium: 4px;\n --amplify-space-small: 8px;\n --amplify-space-medium: 12px;\n --amplify-space-large: 16px;\n --amplify-font-sizes-small: 14px;\n --amplify-font-sizes-medium: 14px;\n \n /* Remove the blue top border on active tabs */\n --amplify-components-tabs-item-active-border-width: 0;\n --amplify-components-tabs-item-border-width: 0;\n \n /* Ensure active tab bottom border uses purple */\n --amplify-components-tabs-item-active-border-color: var(--purple-500);\n --amplify-components-tabs-item-active-color: var(--purple-700);\n}\n\n/* Ensure modal content has adequate width for auth form */\n.modal-content:has(.amplify-authenticator) {\n width: 480px;\n max-width: 90vw;\n min-width: 400px;\n}\n\n/* Style the authenticator container */\n.modal-content .amplify-authenticator__modal {\n background: transparent !important;\n box-shadow: none !important;\n border: none !important;\n}\n\n/* Constrain authenticator content within modal bounds */\n.modal-content .amplify-authenticator {\n width: 100% !important;\n max-width: 100% !important;\n overflow: hidden !important;\n}\n\n/* Specifically target the data-amplify-container to prevent overflow */\n.modal-content [data-amplify-container] {\n width: 100% !important;\n max-width: 100% !important;\n overflow: hidden !important;\n box-sizing: border-box !important;\n}\n\n\n\n/* Constrain the tabs container */\n.modal-content .amplify-tabs {\n width: 100% !important;\n max-width: 100% !important;\n overflow: hidden !important;\n}\n\n/* Ensure form fields don't overflow */\n.modal-content .amplify-field,\n.modal-content .amplify-field__group {\n width: 100% !important;\n max-width: 100% !important;\n box-sizing: border-box !important;\n}\n\n/* Align form elements with Mito styling */\n.modal-content .amplify-field__label {\n color: var(--jp-ui-font-color1) !important;\n font-weight: 500 !important;\n}\n\n.modal-content .amplify-input,\n.modal-content .amplify-select {\n background: var(--jp-layout-color0) !important;\n border: 1px solid var(--jp-border-color1) !important;\n color: var(--jp-ui-font-color1) !important;\n border-radius: 4px !important;\n}\n\n.modal-content .amplify-input:focus,\n.modal-content .amplify-select:focus {\n border-color: var(--purple-500) !important;\n box-shadow: 0 0 0 2px rgba(124, 58, 237, 0.1) !important;\n}\n\n\n\n/* Style Amplify buttons to match Mito theme */\n.modal-content .amplify-button--primary {\n background-color: var(--purple-400) !important;\n color: var(--purple-700) !important;\n border: none !important;\n border-radius: 4px !important;\n font-weight: 500 !important;\n padding: 8px 16px !important;\n width: 100% !important;\n max-width: 100% !important;\n box-sizing: border-box !important;\n}\n\n.modal-content .amplify-button--primary:hover {\n background-color: var(--purple-500) !important;\n}\n\n.modal-content .amplify-button--link {\n color: var(--purple-600) !important;\n text-decoration: none !important;\n}\n\n.modal-content .amplify-button--link:hover {\n color: var(--purple-700) !important;\n text-decoration: underline !important;\n}\n\n/* Error and success message styling */\n.modal-content .amplify-alert--error {\n background-color: var(--red-300) !important;\n color: var(--red-900) !important;\n border: 1px solid var(--red-400) !important;\n border-radius: 4px !important;\n}\n\n.modal-content .amplify-alert--info {\n background-color: var(--purple-300) !important;\n color: var(--purple-700) !important;\n border: 1px solid var(--purple-400) !important;\n border-radius: 4px !important;\n}\n\n/* Tab styling for sign in/sign up tabs */\n.modal-content .amplify-tabs__item {\n color: var(--jp-ui-font-color2) !important;\n border-bottom: 2px solid transparent !important;\n}\n\n.modal-content .amplify-tabs__item[data-state=\"active\"] {\n color: var(--purple-700) !important;\n border-bottom-color: var(--purple-500) !important;\n}\n\n/* Ensure inactive tabs don't have purple styling */\n.modal-content .amplify-tabs__item[data-state=\"inactive\"] {\n color: var(--jp-ui-font-color2) !important;\n border-bottom: 2px solid transparent !important;\n}\n\n\n\n.modal-content .amplify-tabs__item:hover {\n color: var(--jp-ui-font-color1) !important;\n}\n\n/* Override any default blue tab styling from Amplify */\n.modal-content .amplify-tabs__list {\n border-bottom: 1px solid var(--jp-border-color1) !important;\n}\n\n.modal-content .amplify-tabs__item[data-state=\"active\"]:after,\n.modal-content .amplify-tabs__item[aria-selected=\"true\"]:after {\n background-color: var(--purple-500) !important;\n border-color: var(--purple-500) !important;\n}\n\n/* Override any Amplify default blue colors */\n.modal-content .amplify-tabs [data-amplify-color-mode] .amplify-tabs__item[data-state=\"active\"] {\n color: var(--purple-700) !important;\n border-bottom-color: var(--purple-500) !important;\n}\n\n.modal-content .amplify-tabs [data-amplify-color-mode] .amplify-tabs__item[aria-selected=\"true\"] {\n color: var(--purple-700) !important;\n border-bottom-color: var(--purple-500) !important;\n}\n\n/* Additional selectors to ensure default active state on initial load */\n.modal-content .amplify-tabs__item[aria-selected=\"true\"] {\n color: var(--purple-700) !important;\n border-bottom: 2px solid var(--purple-500) !important;\n}\n\n\n\n/* Loading spinner colors */\n.modal-content .amplify-loader {\n border-top-color: var(--purple-500) !important;\n}\n\n/* Additional purple color overrides for any remaining blue elements */\n.modal-content .amplify-tabs__item[data-state=\"active\"] *,\n.modal-content .amplify-tabs__item[aria-selected=\"true\"] * {\n color: var(--purple-700) !important;\n}\n\n/* Override focus states to use purple */\n.modal-content .amplify-tabs__item:focus,\n.modal-content .amplify-tabs__item:focus-visible {\n border-bottom-color: var(--purple-500) !important;\n outline-color: var(--purple-500) !important;\n}\n\n/* Ensure any nested tab content uses purple theme */\n.modal-content [data-amplify-authenticator] [data-amplify-router] .amplify-tabs__item[data-state=\"active\"] {\n color: var(--purple-700) !important;\n border-bottom-color: var(--purple-500) !important;\n}\n\n/* Remove any top borders, outlines, or blue styling from tabs */\n.modal-content .amplify-tabs__item {\n border-top: none !important;\n border-left: none !important;\n border-right: none !important;\n outline: none !important;\n}\n\n.modal-content .amplify-tabs__item[data-state=\"active\"],\n.modal-content .amplify-tabs__item[aria-selected=\"true\"] {\n border-top: none !important;\n border-left: none !important;\n border-right: none !important;\n outline: none !important;\n box-shadow: none !important;\n}\n\n/* Remove any pseudo-element borders that might create blue lines */\n.modal-content .amplify-tabs__item:before,\n.modal-content .amplify-tabs__item:after,\n.modal-content .amplify-tabs__item[data-state=\"active\"]:before,\n.modal-content .amplify-tabs__item[aria-selected=\"true\"]:before {\n display: none !important;\n border: none !important;\n background: none !important;\n}\n\n\n\n/* Additional containment rules for better layout */\n.modal-content .amplify-authenticator * {\n box-sizing: border-box !important;\n}\n\n/* Prevent any Amplify containers from overflowing */\n.modal-content [data-amplify-authenticator],\n.modal-content [data-amplify-router],\n.modal-content [data-amplify-authenticator-signin],\n.modal-content [data-amplify-authenticator-signup] {\n width: 100% !important;\n max-width: 100% !important;\n overflow: hidden !important;\n box-sizing: border-box !important;\n}\n\n/* Remove any default margins or padding that might cause overflow */\n.modal-content [data-amplify-container] * {\n max-width: 100% !important;\n}\n\n/* Ensure modal content itself doesn't allow horizontal scroll */\n.modal-content:has(.amplify-authenticator) {\n overflow-x: hidden !important;\n}\n\n/* Target main Amplify containers but not inputs */\n.modal-content div[data-amplify-container] {\n width: 100% !important;\n max-width: 100% !important;\n box-sizing: border-box !important;\n}\n\n/* Ensure tab panels fit within bounds */\n.modal-content .amplify-tabs__panel {\n width: 100% !important;\n max-width: 100% !important;\n overflow: hidden !important;\n padding: 16px !important;\n}\n\n/* Ensure tab list doesn't overflow */\n.modal-content .amplify-tabs__list {\n width: 100% !important;\n max-width: 100% !important;\n display: flex !important;\n justify-content: space-around !important;\n}\n\n.modal-content .amplify-tabs__item {\n flex: 1 !important;\n text-align: center !important;\n max-width: 50% !important;\n}\n\n/* Add this to your AuthPopup.css file */\n\n/* Hide password requirements by default */\n.password-requirements {\n display: none;\n padding: 16px 20px;\n background-color: var(--jp-layout-color2);\n border-top: 1px solid var(--jp-border-color1);\n font-size: 13px;\n}\n\n/* Show password requirements when sign-up form is present */\n.modal-content:has([data-amplify-authenticator-signup]) .password-requirements {\n display: block;\n}\n\n/* Style the requirements content */\n.password-requirements p {\n margin: 0 0 8px 0;\n font-weight: bold;\n color: var(--jp-ui-font-color1);\n}\n\n.password-requirements ul {\n margin: 0;\n padding-left: 20px;\n color: var(--jp-ui-font-color2);\n font-size: 12px;\n}\n\n/* Success message styling */\n.auth-success-message {\n padding: 32px 24px;\n text-align: center;\n background: var(--jp-layout-color0);\n border-radius: 8px;\n}\n\n.success-icon {\n margin-bottom: 20px;\n display: flex;\n justify-content: center;\n}\n\n.success-title {\n color: var(--jp-ui-font-color1);\n font-size: 24px;\n font-weight: 600;\n margin: 0 0 12px 0;\n font-family: var(--jp-ui-font-family);\n}\n\n.success-description {\n color: var(--jp-ui-font-color1);\n font-size: 16px;\n margin: 0 0 16px 0;\n font-family: var(--jp-ui-font-family);\n line-height: 1.5;\n}\n\n.success-timer {\n color: var(--jp-ui-font-color2);\n font-size: 14px;\n margin: 0 0 24px 0;\n font-family: var(--jp-ui-font-family);\n font-style: italic;\n}\n\n.success-actions {\n display: flex;\n justify-content: center;\n gap: 12px;\n}\n\n/* Progress bar animation */\n@keyframes progressFill {\n from { width: 0%; }\n to { width: 100%; }\n}\n\n/* Welcome message container styling */\n.welcome-message-container {\n border: 1px solid var(--jp-border-color1);\n border-radius: 8px;\n padding: 32px 24px;\n margin: 16px 0;\n background-color: var(--jp-layout-color0);\n text-align: center;\n}\n\n/* Welcome message title */\n.welcome-message-title {\n color: var(--jp-ui-font-color1);\n font-size: 24px;\n font-weight: 600;\n margin: 0 0 12px 0;\n font-family: var(--jp-ui-font-family);\n}\n\n/* Welcome message description */\n.welcome-message-description {\n color: var(--jp-ui-font-color1);\n font-size: 16px;\n margin: 0 0 16px 0;\n font-family: var(--jp-ui-font-family);\n line-height: 1.5;\n}\n\n/* Progress bar container */\n.progress-bar-container {\n width: 100%;\n height: 4px;\n background-color: var(--jp-border-color1);\n border-radius: 2px;\n overflow: hidden;\n margin-top: 20px;\n margin-bottom: 12px;\n}\n\n/* Progress bar fill with CSS animation */\n.progress-bar-fill {\n width: 0%;\n height: 100%;\n background-color: var(--purple-500);\n border-radius: 2px;\n animation: progressFill 3s linear forwards;\n}\n\n/* Progress bar timer text */\n.progress-bar-timer {\n color: var(--jp-ui-font-color2);\n font-size: 14px;\n margin: 0;\n font-family: var(--jp-ui-font-family);\n font-style: italic;\n}"],"sourceRoot":""}]);
|
|
15967
|
+
}`, "",{"version":3,"sources":["webpack://./style/AuthPopup.css"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (c) Saga Inc.\n * Distributed under the terms of the GNU Affero General Public License v3.0 License.\n */\n\n/* Auth popup specific styling to integrate AWS Amplify with Mito theme */\n.modal-content .amplify-authenticator {\n --amplify-colors-font-primary: var(--jp-ui-font-color1);\n --amplify-colors-font-secondary: var(--jp-ui-font-color2);\n --amplify-colors-background-primary: var(--jp-layout-color0);\n --amplify-colors-background-secondary: var(--jp-layout-color1);\n --amplify-colors-border-primary: var(--jp-border-color1);\n --amplify-colors-brand-primary-10: var(--purple-700);\n --amplify-colors-brand-primary-80: var(--purple-500);\n --amplify-colors-brand-primary-90: var(--purple-400);\n --amplify-colors-brand-primary-100: var(--purple-300);\n --amplify-radii-small: 4px;\n --amplify-radii-medium: 4px;\n --amplify-space-small: 8px;\n --amplify-space-medium: 12px;\n --amplify-space-large: 16px;\n --amplify-font-sizes-small: 14px;\n --amplify-font-sizes-medium: 14px;\n \n /* Remove the blue top border on active tabs */\n --amplify-components-tabs-item-active-border-width: 0;\n --amplify-components-tabs-item-border-width: 0;\n \n /* Ensure active tab bottom border uses purple */\n --amplify-components-tabs-item-active-border-color: var(--purple-500);\n --amplify-components-tabs-item-active-color: var(--purple-700);\n}\n\n/* Ensure modal content has adequate width for auth form */\n.modal-content:has(.amplify-authenticator) {\n width: 480px;\n max-width: 90vw;\n min-width: 400px;\n}\n\n/* Style the authenticator container */\n.modal-content .amplify-authenticator__modal {\n background: transparent !important;\n box-shadow: none !important;\n border: none !important;\n}\n\n/* Constrain authenticator content within modal bounds */\n.modal-content .amplify-authenticator {\n width: 100% !important;\n max-width: 100% !important;\n overflow: hidden !important;\n}\n\n/* Specifically target the data-amplify-container to prevent overflow */\n.modal-content [data-amplify-container] {\n width: 100% !important;\n max-width: 100% !important;\n overflow: hidden !important;\n box-sizing: border-box !important;\n}\n\n\n\n/* Constrain the tabs container */\n.modal-content .amplify-tabs {\n width: 100% !important;\n max-width: 100% !important;\n overflow: hidden !important;\n}\n\n/* Ensure form fields don't overflow */\n.modal-content .amplify-field,\n.modal-content .amplify-field__group {\n width: 100% !important;\n max-width: 100% !important;\n box-sizing: border-box !important;\n}\n\n/* Align form elements with Mito styling */\n.modal-content .amplify-field__label {\n color: var(--jp-ui-font-color1) !important;\n font-weight: 500 !important;\n}\n\n.modal-content .amplify-input,\n.modal-content .amplify-select {\n background: var(--jp-layout-color0) !important;\n border: 1px solid var(--jp-border-color1) !important;\n color: var(--jp-ui-font-color1) !important;\n border-radius: 4px !important;\n}\n\n.modal-content .amplify-input:focus,\n.modal-content .amplify-select:focus {\n border-color: var(--purple-500) !important;\n box-shadow: 0 0 0 2px rgba(124, 58, 237, 0.1) !important;\n}\n\n\n\n/* Style Amplify buttons to match Mito theme */\n.modal-content .amplify-button--primary {\n background-color: var(--purple-400) !important;\n color: var(--purple-700) !important;\n border: none !important;\n border-radius: 4px !important;\n font-weight: 500 !important;\n padding: 8px 16px !important;\n width: 100% !important;\n max-width: 100% !important;\n box-sizing: border-box !important;\n}\n\n.modal-content .amplify-button--primary:hover {\n background-color: var(--purple-500) !important;\n}\n\n.modal-content .amplify-button--link {\n color: var(--purple-600) !important;\n text-decoration: none !important;\n}\n\n.modal-content .amplify-button--link:hover {\n color: var(--purple-700) !important;\n text-decoration: underline !important;\n}\n\n/* Error and success message styling */\n.modal-content .amplify-alert--error {\n background-color: var(--red-300) !important;\n color: var(--red-900) !important;\n border: 1px solid var(--red-400) !important;\n border-radius: 4px !important;\n}\n\n.modal-content .amplify-alert--info {\n background-color: var(--purple-300) !important;\n color: var(--purple-700) !important;\n border: 1px solid var(--purple-400) !important;\n border-radius: 4px !important;\n}\n\n/* Tab styling for sign in/sign up tabs */\n.modal-content .amplify-tabs__item {\n color: var(--purple-500) !important;\n border-bottom: 2px solid transparent !important;\n}\n\n.modal-content .amplify-tabs__item[data-state=\"active\"] {\n color: var(--purple-700) !important;\n border-bottom-color: var(--purple-500) !important;\n}\n\n/* Ensure inactive tabs don't have purple styling */\n.modal-content .amplify-tabs__item[data-state=\"inactive\"] {\n color: var(--jp-ui-font-color2) !important;\n border-bottom: 2px solid transparent !important;\n}\n\n\n\n.modal-content .amplify-tabs__item:hover {\n color: var(--purple-700) !important;\n}\n\n/* Override any default blue tab styling from Amplify */\n.modal-content .amplify-tabs__list {\n border-bottom: 1px solid var(--jp-border-color1) !important;\n}\n\n.modal-content .amplify-tabs__item[data-state=\"active\"]:after,\n.modal-content .amplify-tabs__item[aria-selected=\"true\"]:after {\n background-color: var(--purple-500) !important;\n border-color: var(--purple-500) !important;\n}\n\n/* Override any Amplify default blue colors */\n.modal-content .amplify-tabs [data-amplify-color-mode] .amplify-tabs__item[data-state=\"active\"] {\n color: var(--purple-700) !important;\n border-bottom-color: var(--purple-500) !important;\n}\n\n.modal-content .amplify-tabs [data-amplify-color-mode] .amplify-tabs__item[aria-selected=\"true\"] {\n color: var(--purple-700) !important;\n border-bottom-color: var(--purple-500) !important;\n}\n\n/* Additional selectors to ensure default active state on initial load */\n.modal-content .amplify-tabs__item[aria-selected=\"true\"] {\n color: var(--purple-700) !important;\n border-bottom: 2px solid var(--purple-500) !important;\n}\n\n\n\n/* Loading spinner colors */\n.modal-content .amplify-loader {\n border-top-color: var(--purple-500) !important;\n}\n\n/* Additional purple color overrides for any remaining blue elements */\n.modal-content .amplify-tabs__item[data-state=\"active\"] *,\n.modal-content .amplify-tabs__item[aria-selected=\"true\"] * {\n color: var(--purple-700) !important;\n}\n\n/* Override focus states to use purple */\n.modal-content .amplify-tabs__item:focus,\n.modal-content .amplify-tabs__item:focus-visible {\n border-bottom-color: var(--purple-500) !important;\n outline-color: var(--purple-500) !important;\n}\n\n/* Ensure any nested tab content uses purple theme */\n.modal-content [data-amplify-authenticator] [data-amplify-router] .amplify-tabs__item[data-state=\"active\"] {\n color: var(--purple-700) !important;\n border-bottom-color: var(--purple-500) !important;\n}\n\n/* Remove any top borders, outlines, or blue styling from tabs */\n.modal-content .amplify-tabs__item {\n border-top: none !important;\n border-left: none !important;\n border-right: none !important;\n outline: none !important;\n}\n\n.modal-content .amplify-tabs__item[data-state=\"active\"],\n.modal-content .amplify-tabs__item[aria-selected=\"true\"] {\n border-top: none !important;\n border-left: none !important;\n border-right: none !important;\n outline: none !important;\n box-shadow: none !important;\n}\n\n/* Remove any pseudo-element borders that might create blue lines */\n.modal-content .amplify-tabs__item:before,\n.modal-content .amplify-tabs__item:after,\n.modal-content .amplify-tabs__item[data-state=\"active\"]:before,\n.modal-content .amplify-tabs__item[aria-selected=\"true\"]:before {\n display: none !important;\n border: none !important;\n background: none !important;\n}\n\n\n\n/* Additional containment rules for better layout */\n.modal-content .amplify-authenticator * {\n box-sizing: border-box !important;\n}\n\n/* Prevent any Amplify containers from overflowing */\n.modal-content [data-amplify-authenticator],\n.modal-content [data-amplify-router],\n.modal-content [data-amplify-authenticator-signin],\n.modal-content [data-amplify-authenticator-signup] {\n width: 100% !important;\n max-width: 100% !important;\n overflow: hidden !important;\n box-sizing: border-box !important;\n}\n\n/* Remove any default margins or padding that might cause overflow */\n.modal-content [data-amplify-container] * {\n max-width: 100% !important;\n}\n\n/* Ensure modal content itself doesn't allow horizontal scroll */\n.modal-content:has(.amplify-authenticator) {\n overflow-x: hidden !important;\n}\n\n/* Target main Amplify containers but not inputs */\n.modal-content div[data-amplify-container] {\n width: 100% !important;\n max-width: 100% !important;\n box-sizing: border-box !important;\n}\n\n/* Ensure tab panels fit within bounds */\n.modal-content .amplify-tabs__panel {\n width: 100% !important;\n max-width: 100% !important;\n overflow: hidden !important;\n padding: 16px !important;\n}\n\n/* Ensure tab list doesn't overflow */\n.modal-content .amplify-tabs__list {\n width: 100% !important;\n max-width: 100% !important;\n display: flex !important;\n justify-content: space-around !important;\n}\n\n.modal-content .amplify-tabs__item {\n flex: 1 !important;\n text-align: center !important;\n max-width: 50% !important;\n}\n\n/* Add this to your AuthPopup.css file */\n\n/* Hide password requirements by default */\n.password-requirements {\n display: none;\n padding: 16px 20px;\n background-color: var(--jp-layout-color2);\n border-top: 1px solid var(--jp-border-color1);\n font-size: 13px;\n}\n\n/* Show password requirements when sign-up form is present */\n.modal-content:has([data-amplify-authenticator-signup]) .password-requirements {\n display: block;\n}\n\n/* Style the requirements content */\n.password-requirements p {\n margin: 0 0 8px 0;\n font-weight: bold;\n color: var(--jp-ui-font-color1);\n}\n\n.password-requirements ul {\n margin: 0;\n padding-left: 20px;\n color: var(--jp-ui-font-color2);\n font-size: 12px;\n}\n\n/* Success message styling */\n.auth-success-message {\n padding: 32px 24px;\n text-align: center;\n background: var(--jp-layout-color0);\n border-radius: 8px;\n}\n\n.success-icon {\n margin-bottom: 20px;\n display: flex;\n justify-content: center;\n}\n\n.success-title {\n color: var(--jp-ui-font-color1);\n font-size: 24px;\n font-weight: 600;\n margin: 0 0 12px 0;\n font-family: var(--jp-ui-font-family);\n}\n\n.success-description {\n color: var(--jp-ui-font-color1);\n font-size: 16px;\n margin: 0 0 16px 0;\n font-family: var(--jp-ui-font-family);\n line-height: 1.5;\n}\n\n.success-timer {\n color: var(--jp-ui-font-color2);\n font-size: 14px;\n margin: 0 0 24px 0;\n font-family: var(--jp-ui-font-family);\n font-style: italic;\n}\n\n.success-actions {\n display: flex;\n justify-content: center;\n gap: 12px;\n}\n\n/* Progress bar animation */\n@keyframes progressFill {\n from { width: 0%; }\n to { width: 100%; }\n}\n\n/* Welcome message container styling */\n.welcome-message-container {\n border: 1px solid var(--jp-border-color1);\n border-radius: 8px;\n padding: 32px 24px;\n margin: 16px 0;\n background-color: var(--jp-layout-color0);\n text-align: center;\n}\n\n/* Welcome message title */\n.welcome-message-title {\n color: var(--jp-ui-font-color1);\n font-size: 24px;\n font-weight: 600;\n margin: 0 0 12px 0;\n font-family: var(--jp-ui-font-family);\n}\n\n/* Welcome message description */\n.welcome-message-description {\n color: var(--jp-ui-font-color1);\n font-size: 16px;\n margin: 0 0 16px 0;\n font-family: var(--jp-ui-font-family);\n line-height: 1.5;\n}\n\n/* Progress bar container */\n.progress-bar-container {\n width: 100%;\n height: 4px;\n background-color: var(--jp-border-color1);\n border-radius: 2px;\n overflow: hidden;\n margin-top: 20px;\n margin-bottom: 12px;\n}\n\n/* Progress bar fill with CSS animation */\n.progress-bar-fill {\n width: 0%;\n height: 100%;\n background-color: var(--purple-500);\n border-radius: 2px;\n animation: progressFill 3s linear forwards;\n}\n\n/* Progress bar timer text */\n.progress-bar-timer {\n color: var(--jp-ui-font-color2);\n font-size: 14px;\n margin: 0;\n font-family: var(--jp-ui-font-family);\n font-style: italic;\n}"],"sourceRoot":""}]);
|
|
15841
15968
|
// Exports
|
|
15842
15969
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
15843
15970
|
|
|
@@ -22236,4 +22363,4 @@ var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js
|
|
|
22236
22363
|
/***/ })
|
|
22237
22364
|
|
|
22238
22365
|
}]);
|
|
22239
|
-
//# sourceMappingURL=lib_index_js.
|
|
22366
|
+
//# sourceMappingURL=lib_index_js.31462f8f6a76b1cefbeb.js.map
|