mito-ai 0.1.57__py3-none-any.whl → 0.1.59__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/__init__.py +19 -22
- mito_ai/_version.py +1 -1
- mito_ai/anthropic_client.py +24 -14
- mito_ai/chart_wizard/handlers.py +78 -17
- mito_ai/chart_wizard/urls.py +8 -5
- mito_ai/completions/completion_handlers/agent_auto_error_fixup_handler.py +6 -8
- mito_ai/completions/completion_handlers/agent_execution_handler.py +6 -8
- mito_ai/completions/completion_handlers/chat_completion_handler.py +13 -17
- mito_ai/completions/completion_handlers/code_explain_handler.py +13 -17
- mito_ai/completions/completion_handlers/completion_handler.py +3 -5
- mito_ai/completions/completion_handlers/inline_completer_handler.py +5 -6
- mito_ai/completions/completion_handlers/scratchpad_result_handler.py +6 -8
- mito_ai/completions/completion_handlers/smart_debug_handler.py +13 -17
- mito_ai/completions/completion_handlers/utils.py +3 -7
- mito_ai/completions/handlers.py +32 -22
- mito_ai/completions/message_history.py +8 -10
- mito_ai/completions/prompt_builders/chart_add_field_prompt.py +35 -0
- mito_ai/completions/prompt_builders/prompt_constants.py +2 -0
- mito_ai/constants.py +31 -2
- mito_ai/enterprise/__init__.py +1 -1
- mito_ai/enterprise/litellm_client.py +144 -0
- mito_ai/enterprise/utils.py +16 -2
- mito_ai/log/handlers.py +1 -1
- mito_ai/openai_client.py +36 -96
- mito_ai/provider_manager.py +420 -0
- mito_ai/settings/enterprise_handler.py +26 -0
- mito_ai/settings/urls.py +2 -0
- mito_ai/streamlit_conversion/agent_utils.py +2 -30
- mito_ai/streamlit_conversion/streamlit_agent_handler.py +48 -46
- mito_ai/streamlit_preview/handlers.py +6 -3
- mito_ai/streamlit_preview/urls.py +5 -3
- mito_ai/tests/message_history/test_generate_short_chat_name.py +103 -28
- mito_ai/tests/open_ai_utils_test.py +34 -36
- mito_ai/tests/providers/test_anthropic_client.py +174 -16
- mito_ai/tests/providers/test_azure.py +15 -15
- mito_ai/tests/providers/test_capabilities.py +14 -17
- mito_ai/tests/providers/test_gemini_client.py +14 -13
- mito_ai/tests/providers/test_model_resolution.py +145 -89
- mito_ai/tests/providers/test_openai_client.py +209 -13
- mito_ai/tests/providers/test_provider_limits.py +5 -5
- mito_ai/tests/providers/test_providers.py +229 -51
- mito_ai/tests/providers/test_retry_logic.py +13 -22
- mito_ai/tests/providers/utils.py +4 -4
- mito_ai/tests/streamlit_conversion/test_streamlit_agent_handler.py +57 -85
- mito_ai/tests/streamlit_preview/test_streamlit_preview_handler.py +4 -1
- mito_ai/tests/test_constants.py +90 -0
- mito_ai/tests/test_enterprise_mode.py +217 -0
- mito_ai/tests/test_model_utils.py +362 -0
- mito_ai/utils/anthropic_utils.py +8 -6
- mito_ai/utils/gemini_utils.py +0 -3
- mito_ai/utils/litellm_utils.py +84 -0
- mito_ai/utils/model_utils.py +257 -0
- mito_ai/utils/open_ai_utils.py +29 -41
- mito_ai/utils/provider_utils.py +13 -29
- mito_ai/utils/telemetry_utils.py +14 -2
- {mito_ai-0.1.57.data → mito_ai-0.1.59.data}/data/share/jupyter/labextensions/mito_ai/build_log.json +102 -102
- {mito_ai-0.1.57.data → mito_ai-0.1.59.data}/data/share/jupyter/labextensions/mito_ai/package.json +2 -2
- {mito_ai-0.1.57.data → mito_ai-0.1.59.data}/data/share/jupyter/labextensions/mito_ai/schemas/mito_ai/package.json.orig +1 -1
- mito_ai-0.1.57.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.9d26322f3e78beb2b666.js → mito_ai-0.1.59.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.44c109c7be36fb884d25.js +1059 -144
- mito_ai-0.1.59.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.44c109c7be36fb884d25.js.map +1 -0
- mito_ai-0.1.57.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.79c1ea8a3cda73a4cb6f.js → mito_ai-0.1.59.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.f7decebaf69618541e0f.js +17 -17
- mito_ai-0.1.57.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.79c1ea8a3cda73a4cb6f.js.map → mito_ai-0.1.59.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.f7decebaf69618541e0f.js.map +1 -1
- {mito_ai-0.1.57.data → mito_ai-0.1.59.data}/data/share/jupyter/labextensions/mito_ai/themes/mito_ai/index.css +78 -78
- {mito_ai-0.1.57.dist-info → mito_ai-0.1.59.dist-info}/METADATA +2 -1
- {mito_ai-0.1.57.dist-info → mito_ai-0.1.59.dist-info}/RECORD +90 -83
- mito_ai/completions/providers.py +0 -284
- mito_ai-0.1.57.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.9d26322f3e78beb2b666.js.map +0 -1
- {mito_ai-0.1.57.data → mito_ai-0.1.59.data}/data/etc/jupyter/jupyter_server_config.d/mito_ai.json +0 -0
- {mito_ai-0.1.57.data → mito_ai-0.1.59.data}/data/share/jupyter/labextensions/mito_ai/schemas/mito_ai/toolbar-buttons.json +0 -0
- {mito_ai-0.1.57.data → mito_ai-0.1.59.data}/data/share/jupyter/labextensions/mito_ai/static/node_modules_process_browser_js.4b128e94d31a81ebd209.js +0 -0
- {mito_ai-0.1.57.data → mito_ai-0.1.59.data}/data/share/jupyter/labextensions/mito_ai/static/node_modules_process_browser_js.4b128e94d31a81ebd209.js.map +0 -0
- {mito_ai-0.1.57.data → mito_ai-0.1.59.data}/data/share/jupyter/labextensions/mito_ai/static/style.js +0 -0
- {mito_ai-0.1.57.data → mito_ai-0.1.59.data}/data/share/jupyter/labextensions/mito_ai/static/style_index_js.f5d476ac514294615881.js +0 -0
- {mito_ai-0.1.57.data → mito_ai-0.1.59.data}/data/share/jupyter/labextensions/mito_ai/static/style_index_js.f5d476ac514294615881.js.map +0 -0
- {mito_ai-0.1.57.data → mito_ai-0.1.59.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.57.data → mito_ai-0.1.59.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.57.data → mito_ai-0.1.59.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.57.data → mito_ai-0.1.59.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.57.data → mito_ai-0.1.59.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.57.data → mito_ai-0.1.59.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.57.data → mito_ai-0.1.59.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.57.data → mito_ai-0.1.59.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.57.data → mito_ai-0.1.59.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.57.data → mito_ai-0.1.59.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.57.data → mito_ai-0.1.59.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_semver_index_js.3f6754ac5116d47de76b.js +0 -0
- {mito_ai-0.1.57.data → mito_ai-0.1.59.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_semver_index_js.3f6754ac5116d47de76b.js.map +0 -0
- {mito_ai-0.1.57.data → mito_ai-0.1.59.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_vscode-diff_dist_index_js.ea55f1f9346638aafbcf.js +0 -0
- {mito_ai-0.1.57.data → mito_ai-0.1.59.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.57.data → mito_ai-0.1.59.data}/data/share/jupyter/labextensions/mito_ai/themes/mito_ai/index.js +0 -0
- {mito_ai-0.1.57.dist-info → mito_ai-0.1.59.dist-info}/WHEEL +0 -0
- {mito_ai-0.1.57.dist-info → mito_ai-0.1.59.dist-info}/entry_points.txt +0 -0
- {mito_ai-0.1.57.dist-info → mito_ai-0.1.59.dist-info}/licenses/LICENSE +0 -0
|
@@ -2162,6 +2162,7 @@ const MarkdownBlock = ({ markdown, renderMimeRegistry, notebookTracker }) => {
|
|
|
2162
2162
|
// This ensures re-renders when cells are reordered (even if count stays the same)
|
|
2163
2163
|
const cellOrderKey = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {
|
|
2164
2164
|
return Array.from(cellOrder.entries())
|
|
2165
|
+
.filter(([cellId]) => cellId != null) // Filter out entries with undefined/null keys
|
|
2165
2166
|
.sort((a, b) => a[0].localeCompare(b[0])) // Sort by cellId for stable string
|
|
2166
2167
|
.map(([cellId, cellNumber]) => `${cellId}:${cellNumber}`)
|
|
2167
2168
|
.join(',');
|
|
@@ -7417,6 +7418,164 @@ const getAppNameFromNotebookID = (notebookID) => {
|
|
|
7417
7418
|
};
|
|
7418
7419
|
|
|
7419
7420
|
|
|
7421
|
+
/***/ }),
|
|
7422
|
+
|
|
7423
|
+
/***/ "./lib/Extensions/ChartWizard/AddFieldButton.js":
|
|
7424
|
+
/*!******************************************************!*\
|
|
7425
|
+
!*** ./lib/Extensions/ChartWizard/AddFieldButton.js ***!
|
|
7426
|
+
\******************************************************/
|
|
7427
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
7428
|
+
|
|
7429
|
+
__webpack_require__.r(__webpack_exports__);
|
|
7430
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
7431
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
7432
|
+
/* harmony export */ });
|
|
7433
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react");
|
|
7434
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
7435
|
+
/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/apputils */ "webpack/sharing/consume/default/@jupyterlab/apputils");
|
|
7436
|
+
/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__);
|
|
7437
|
+
/* harmony import */ var _utils_parser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/parser */ "./lib/Extensions/ChartWizard/utils/parser.js");
|
|
7438
|
+
/* harmony import */ var _restAPI_RestAPI__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../restAPI/RestAPI */ "./lib/restAPI/RestAPI.js");
|
|
7439
|
+
/* harmony import */ var _utils_strings__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/strings */ "./lib/utils/strings.js");
|
|
7440
|
+
/* harmony import */ var _style_AddFieldButton_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../style/AddFieldButton.css */ "./style/AddFieldButton.css");
|
|
7441
|
+
/*
|
|
7442
|
+
* Copyright (c) Saga Inc.
|
|
7443
|
+
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
7444
|
+
*/
|
|
7445
|
+
|
|
7446
|
+
|
|
7447
|
+
|
|
7448
|
+
|
|
7449
|
+
|
|
7450
|
+
|
|
7451
|
+
/**
|
|
7452
|
+
* Component that renders a button to add a new field to the chart configuration.
|
|
7453
|
+
* When clicked, prompts the user for a description and uses LLM to add the field.
|
|
7454
|
+
*/
|
|
7455
|
+
const AddFieldButton = ({ code, onFieldAdded, clearPendingUpdate, onLoadingStateChange }) => {
|
|
7456
|
+
/**
|
|
7457
|
+
* Handles adding a new field to the chart configuration.
|
|
7458
|
+
*/
|
|
7459
|
+
const handleAddField = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {
|
|
7460
|
+
if (!code) {
|
|
7461
|
+
_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Notification.emit('No source code available', 'error', {
|
|
7462
|
+
autoClose: 3000
|
|
7463
|
+
});
|
|
7464
|
+
return;
|
|
7465
|
+
}
|
|
7466
|
+
// Create a component that manages its own input state
|
|
7467
|
+
// Use a ref to store the value so we can access it after dialog closes
|
|
7468
|
+
const inputValueRef = { current: '' };
|
|
7469
|
+
const InputDialogBody = () => {
|
|
7470
|
+
const [value, setValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)('');
|
|
7471
|
+
const textareaRef = react__WEBPACK_IMPORTED_MODULE_0___default().useRef(null);
|
|
7472
|
+
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
7473
|
+
// Focus the textarea when component mounts
|
|
7474
|
+
// Use a small timeout to ensure the dialog is fully rendered and focusable
|
|
7475
|
+
const timeoutId = setTimeout(() => {
|
|
7476
|
+
if (textareaRef.current) {
|
|
7477
|
+
textareaRef.current.focus();
|
|
7478
|
+
// Also select any existing text for better UX
|
|
7479
|
+
textareaRef.current.select();
|
|
7480
|
+
}
|
|
7481
|
+
}, 100);
|
|
7482
|
+
return () => clearTimeout(timeoutId);
|
|
7483
|
+
}, []);
|
|
7484
|
+
const handleChange = (e) => {
|
|
7485
|
+
const newValue = e.target.value;
|
|
7486
|
+
setValue(newValue);
|
|
7487
|
+
inputValueRef.current = newValue;
|
|
7488
|
+
};
|
|
7489
|
+
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", null,
|
|
7490
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", null, "Describe what field you would like to add to the chart configuration:"),
|
|
7491
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("textarea", { ref: textareaRef, value: value, onChange: handleChange, placeholder: "e.g., font size for the title, background color, grid visibility...", className: "add-field-dialog-textarea" })));
|
|
7492
|
+
};
|
|
7493
|
+
// Show dialog to get user description
|
|
7494
|
+
const result = await (0,_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.showDialog)({
|
|
7495
|
+
title: 'Add New Field',
|
|
7496
|
+
body: react__WEBPACK_IMPORTED_MODULE_0___default().createElement(InputDialogBody, null),
|
|
7497
|
+
buttons: [
|
|
7498
|
+
_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Dialog.cancelButton({ label: 'Cancel' }),
|
|
7499
|
+
_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Dialog.okButton({ label: 'Add Field' })
|
|
7500
|
+
],
|
|
7501
|
+
defaultButton: 1
|
|
7502
|
+
});
|
|
7503
|
+
if (!result.button.accept) {
|
|
7504
|
+
return;
|
|
7505
|
+
}
|
|
7506
|
+
// Get the input value from the ref
|
|
7507
|
+
const description = inputValueRef.current.trim();
|
|
7508
|
+
if (!description) {
|
|
7509
|
+
_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Notification.emit('Please provide a description of the field you want to add', 'warning', {
|
|
7510
|
+
autoClose: 3000
|
|
7511
|
+
});
|
|
7512
|
+
return;
|
|
7513
|
+
}
|
|
7514
|
+
// Log the field addition event with user input
|
|
7515
|
+
void (0,_restAPI_RestAPI__WEBPACK_IMPORTED_MODULE_3__.logEvent)('chart_wizard_add_chart_field', {
|
|
7516
|
+
user_input: description
|
|
7517
|
+
});
|
|
7518
|
+
// Clear any pending debounced updates
|
|
7519
|
+
clearPendingUpdate();
|
|
7520
|
+
onLoadingStateChange(true);
|
|
7521
|
+
try {
|
|
7522
|
+
// Get existing variable names
|
|
7523
|
+
const parsed = (0,_utils_parser__WEBPACK_IMPORTED_MODULE_4__.parseChartConfig)(code);
|
|
7524
|
+
const existingVariables = parsed ? parsed.variables.map(v => v.name) : [];
|
|
7525
|
+
const response = await (0,_restAPI_RestAPI__WEBPACK_IMPORTED_MODULE_3__.addChartField)(code, description, existingVariables);
|
|
7526
|
+
if (response.updated_code) {
|
|
7527
|
+
// Check if the response contains a code block
|
|
7528
|
+
// If no code block is found, the AI couldn't add the field
|
|
7529
|
+
const hasCodeBlock = response.updated_code.includes(_utils_strings__WEBPACK_IMPORTED_MODULE_5__.PYTHON_CODE_BLOCK_START_WITH_NEW_LINE);
|
|
7530
|
+
if (!hasCodeBlock) {
|
|
7531
|
+
// AI couldn't add the field and didn't return a code block
|
|
7532
|
+
console.log('AI response does not contain a code block - field addition was not possible.');
|
|
7533
|
+
_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Notification.emit('Unable to add the requested field. Please try a different description or ensure your request is clear and applicable to chart configuration.', 'warning', {
|
|
7534
|
+
autoClose: 5000
|
|
7535
|
+
});
|
|
7536
|
+
return;
|
|
7537
|
+
}
|
|
7538
|
+
// Extract code from markdown code blocks if present
|
|
7539
|
+
const extractedCode = (0,_utils_strings__WEBPACK_IMPORTED_MODULE_5__.removeMarkdownCodeFormatting)(response.updated_code);
|
|
7540
|
+
// Validate that extracted code is not empty
|
|
7541
|
+
if (!extractedCode || extractedCode.trim().length === 0) {
|
|
7542
|
+
console.error('Error: Extracted code is empty. Cannot update notebook cell.');
|
|
7543
|
+
_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Notification.emit('Failed to add field: The updated code is empty. Please try again.', 'error', {
|
|
7544
|
+
autoClose: 5000
|
|
7545
|
+
});
|
|
7546
|
+
return;
|
|
7547
|
+
}
|
|
7548
|
+
// Notify parent component of the updated code
|
|
7549
|
+
onFieldAdded(extractedCode);
|
|
7550
|
+
_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Notification.emit('Field added successfully!', 'success', {
|
|
7551
|
+
autoClose: 3000
|
|
7552
|
+
});
|
|
7553
|
+
}
|
|
7554
|
+
else {
|
|
7555
|
+
// Handle case where updated_code is missing, null, or empty
|
|
7556
|
+
console.error('Error: No updated code returned from server.');
|
|
7557
|
+
_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Notification.emit('Failed to add field: The server did not return updated code. Please try again.', 'error', {
|
|
7558
|
+
autoClose: 5000
|
|
7559
|
+
});
|
|
7560
|
+
}
|
|
7561
|
+
}
|
|
7562
|
+
catch (error) {
|
|
7563
|
+
console.error('Error adding field:', error);
|
|
7564
|
+
const errorMessage = error instanceof Error ? error.message : 'An unknown error occurred';
|
|
7565
|
+
_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Notification.emit(`Failed to add field: ${errorMessage}. Please try again.`, 'error', {
|
|
7566
|
+
autoClose: 5000
|
|
7567
|
+
});
|
|
7568
|
+
}
|
|
7569
|
+
finally {
|
|
7570
|
+
onLoadingStateChange(false);
|
|
7571
|
+
}
|
|
7572
|
+
}, [code, onFieldAdded, clearPendingUpdate, onLoadingStateChange]);
|
|
7573
|
+
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "add-field-container" },
|
|
7574
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", { className: "button-base button-purple add-field-button", onClick: handleAddField, type: "button" }, "+ Add New Field")));
|
|
7575
|
+
};
|
|
7576
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (AddFieldButton);
|
|
7577
|
+
|
|
7578
|
+
|
|
7420
7579
|
/***/ }),
|
|
7421
7580
|
|
|
7422
7581
|
/***/ "./lib/Extensions/ChartWizard/ChartWizardPlugin.js":
|
|
@@ -7449,6 +7608,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
7449
7608
|
/* harmony import */ var _components_TextAndIconButton__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../components/TextAndIconButton */ "./lib/components/TextAndIconButton.js");
|
|
7450
7609
|
/* harmony import */ var _icons_MagicWand__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../icons/MagicWand */ "./lib/icons/MagicWand.js");
|
|
7451
7610
|
/* harmony import */ var _restAPI_RestAPI__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../restAPI/RestAPI */ "./lib/restAPI/RestAPI.js");
|
|
7611
|
+
/* harmony import */ var _utils_notebook__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../utils/notebook */ "./lib/utils/notebook.js");
|
|
7452
7612
|
/* harmony import */ var _style_ChartWizardPlugin_css__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../style/ChartWizardPlugin.css */ "./style/ChartWizardPlugin.css");
|
|
7453
7613
|
/*
|
|
7454
7614
|
* Copyright (c) Saga Inc.
|
|
@@ -7468,6 +7628,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
7468
7628
|
|
|
7469
7629
|
|
|
7470
7630
|
|
|
7631
|
+
|
|
7471
7632
|
const ChartWizardButton = ({ onButtonClick }) => {
|
|
7472
7633
|
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,
|
|
7473
7634
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_TextAndIconButton__WEBPACK_IMPORTED_MODULE_9__["default"], { icon: _icons_MagicWand__WEBPACK_IMPORTED_MODULE_10__["default"], text: "Chart Wizard", title: "Chart Wizard", onClick: onButtonClick, variant: 'purple', width: 'fit-contents', iconPosition: 'left' })));
|
|
@@ -7519,7 +7680,7 @@ const ChartWizardPlugin = {
|
|
|
7519
7680
|
app.commands.addCommand(_commands__WEBPACK_IMPORTED_MODULE_12__.COMMAND_MITO_AI_OPEN_CHART_WIZARD, {
|
|
7520
7681
|
label: 'Open Chart Wizard',
|
|
7521
7682
|
execute: () => {
|
|
7522
|
-
void (0,_restAPI_RestAPI__WEBPACK_IMPORTED_MODULE_13__.logEvent)('
|
|
7683
|
+
void (0,_restAPI_RestAPI__WEBPACK_IMPORTED_MODULE_13__.logEvent)('chart_wizard_opened', { source: 'command_palette' });
|
|
7523
7684
|
openChartWizard();
|
|
7524
7685
|
}
|
|
7525
7686
|
});
|
|
@@ -7551,11 +7712,12 @@ const ChartWizardPlugin = {
|
|
|
7551
7712
|
* A widget that extends the default ImageRenderer for matplotlib charts.
|
|
7552
7713
|
*/
|
|
7553
7714
|
class AugmentedImageRenderer extends _lumino_widgets__WEBPACK_IMPORTED_MODULE_7__.Widget {
|
|
7554
|
-
constructor(
|
|
7715
|
+
constructor(app, originalRenderer, notebookTracker, openChartWizard) {
|
|
7555
7716
|
super();
|
|
7556
7717
|
this.reactRoot = null;
|
|
7557
7718
|
this.originalRenderer = originalRenderer;
|
|
7558
7719
|
this.notebookTracker = notebookTracker;
|
|
7720
|
+
this.app = app;
|
|
7559
7721
|
this.openChartWizard = openChartWizard;
|
|
7560
7722
|
}
|
|
7561
7723
|
/**
|
|
@@ -7594,7 +7756,7 @@ class AugmentedImageRenderer extends _lumino_widgets__WEBPACK_IMPORTED_MODULE_7_
|
|
|
7594
7756
|
Extracts chart data and source code, then opens the Chart Wizard panel.
|
|
7595
7757
|
*/
|
|
7596
7758
|
handleButtonClick(_model) {
|
|
7597
|
-
void (0,_restAPI_RestAPI__WEBPACK_IMPORTED_MODULE_13__.logEvent)('
|
|
7759
|
+
void (0,_restAPI_RestAPI__WEBPACK_IMPORTED_MODULE_13__.logEvent)('chart_wizard_opened', { source: 'chart_output_button' });
|
|
7598
7760
|
// Get the notebook panel
|
|
7599
7761
|
const notebookPanel = this.notebookTracker.currentWidget;
|
|
7600
7762
|
if (!notebookPanel) {
|
|
@@ -7620,8 +7782,20 @@ class AugmentedImageRenderer extends _lumino_widgets__WEBPACK_IMPORTED_MODULE_7_
|
|
|
7620
7782
|
}
|
|
7621
7783
|
const sourceCode = cellWidget.model.sharedModel.source;
|
|
7622
7784
|
const cellId = cellWidget.model.id;
|
|
7785
|
+
// Set the cell as active before collapsing and scrolling
|
|
7786
|
+
(0,_utils_notebook__WEBPACK_IMPORTED_MODULE_14__.setActiveCellByIDInNotebookPanel)(notebookPanel, cellId);
|
|
7787
|
+
// Collapse the code cell when opening the chart wizard
|
|
7788
|
+
cellWidget.inputHidden = true;
|
|
7789
|
+
// Scroll to the top of the cell
|
|
7790
|
+
void notebookPanel.content.scrollToCell(cellWidget, 'start');
|
|
7623
7791
|
// Open the Chart Wizard with the extracted data
|
|
7624
|
-
this.openChartWizard({
|
|
7792
|
+
this.openChartWizard({
|
|
7793
|
+
sourceCode,
|
|
7794
|
+
cellId,
|
|
7795
|
+
notebookTracker: this.notebookTracker,
|
|
7796
|
+
notebookPanelId: notebookPanel.id,
|
|
7797
|
+
app: this.app
|
|
7798
|
+
});
|
|
7625
7799
|
}
|
|
7626
7800
|
}
|
|
7627
7801
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ChartWizardPlugin);
|
|
@@ -7643,18 +7817,20 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
7643
7817
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
7644
7818
|
/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/apputils */ "webpack/sharing/consume/default/@jupyterlab/apputils");
|
|
7645
7819
|
/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__);
|
|
7646
|
-
/* harmony import */ var
|
|
7647
|
-
/* harmony import */ var
|
|
7648
|
-
/* harmony import */ var
|
|
7649
|
-
/* harmony import */ var
|
|
7650
|
-
/* harmony import */ var
|
|
7651
|
-
/* harmony import */ var _inputs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./inputs */ "./lib/Extensions/ChartWizard/inputs/
|
|
7652
|
-
/* harmony import */ var _inputs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./inputs */ "./lib/Extensions/ChartWizard/inputs/
|
|
7653
|
-
/* harmony import */ var _inputs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./inputs */ "./lib/Extensions/ChartWizard/inputs/
|
|
7654
|
-
/* harmony import */ var _inputs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./inputs */ "./lib/Extensions/ChartWizard/inputs/
|
|
7655
|
-
/* harmony import */ var _inputs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./inputs */ "./lib/Extensions/ChartWizard/inputs/
|
|
7656
|
-
/* harmony import */ var
|
|
7657
|
-
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hooks */ "./lib/Extensions/ChartWizard/hooks/
|
|
7820
|
+
/* harmony import */ var _utils_parser__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/parser */ "./lib/Extensions/ChartWizard/utils/parser.js");
|
|
7821
|
+
/* harmony import */ var _restAPI_RestAPI__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../restAPI/RestAPI */ "./lib/restAPI/RestAPI.js");
|
|
7822
|
+
/* harmony import */ var _utils_strings__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils/strings */ "./lib/utils/strings.js");
|
|
7823
|
+
/* harmony import */ var _components_LoadingDots__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../components/LoadingDots */ "./lib/components/LoadingDots.js");
|
|
7824
|
+
/* harmony import */ var _AddFieldButton__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./AddFieldButton */ "./lib/Extensions/ChartWizard/AddFieldButton.js");
|
|
7825
|
+
/* harmony import */ var _inputs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./inputs */ "./lib/Extensions/ChartWizard/inputs/BooleanInputRow.js");
|
|
7826
|
+
/* harmony import */ var _inputs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./inputs */ "./lib/Extensions/ChartWizard/inputs/TupleInputRow.js");
|
|
7827
|
+
/* harmony import */ var _inputs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./inputs */ "./lib/Extensions/ChartWizard/inputs/NumberInputRow.js");
|
|
7828
|
+
/* harmony import */ var _inputs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./inputs */ "./lib/Extensions/ChartWizard/inputs/utils.js");
|
|
7829
|
+
/* harmony import */ var _inputs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./inputs */ "./lib/Extensions/ChartWizard/inputs/ColorInputRow.js");
|
|
7830
|
+
/* harmony import */ var _inputs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./inputs */ "./lib/Extensions/ChartWizard/inputs/StringInputRow.js");
|
|
7831
|
+
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hooks */ "./lib/Extensions/ChartWizard/hooks/useChartConfig.js");
|
|
7832
|
+
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hooks */ "./lib/Extensions/ChartWizard/hooks/useDebouncedNotebookUpdate.js");
|
|
7833
|
+
/* harmony import */ var _utils_notebook__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/notebook */ "./lib/utils/notebook.js");
|
|
7658
7834
|
/* harmony import */ var _style_ChartWizardWidget_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../style/ChartWizardWidget.css */ "./style/ChartWizardWidget.css");
|
|
7659
7835
|
/*
|
|
7660
7836
|
* Copyright (c) Saga Inc.
|
|
@@ -7669,6 +7845,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
7669
7845
|
|
|
7670
7846
|
|
|
7671
7847
|
|
|
7848
|
+
|
|
7849
|
+
|
|
7672
7850
|
/**
|
|
7673
7851
|
* Formats a variable name into a human-readable label.
|
|
7674
7852
|
* Converts snake_case to Title Case (e.g., "figure_size" -> "Figure Size").
|
|
@@ -7681,18 +7859,73 @@ const formatVariableLabel = (variableName) => {
|
|
|
7681
7859
|
};
|
|
7682
7860
|
const ChartWizardContent = ({ chartData }) => {
|
|
7683
7861
|
const [isConverting, setIsConverting] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
7862
|
+
const [isAddingField, setIsAddingField] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
7684
7863
|
const [currentSourceCode, setCurrentSourceCode] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);
|
|
7864
|
+
const widgetRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
|
|
7865
|
+
const [overlayHeight, setOverlayHeight] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0);
|
|
7866
|
+
const [isActiveCellMismatch, setIsActiveCellMismatch] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
7685
7867
|
// Reset currentSourceCode when switching to a different chart
|
|
7686
7868
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
7687
7869
|
setCurrentSourceCode(null);
|
|
7688
7870
|
}, [chartData === null || chartData === void 0 ? void 0 : chartData.sourceCode]);
|
|
7871
|
+
// Track active cell changes and compare with chart cell
|
|
7872
|
+
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
7873
|
+
if (!chartData) {
|
|
7874
|
+
setIsActiveCellMismatch(false);
|
|
7875
|
+
return;
|
|
7876
|
+
}
|
|
7877
|
+
const checkActiveCell = () => {
|
|
7878
|
+
const activeCellId = (0,_utils_notebook__WEBPACK_IMPORTED_MODULE_3__.getActiveCellID)(chartData.notebookTracker);
|
|
7879
|
+
const chartCellId = chartData.cellId;
|
|
7880
|
+
// Show warning if active cell exists and doesn't match the chart cell
|
|
7881
|
+
setIsActiveCellMismatch(activeCellId !== undefined && activeCellId !== chartCellId);
|
|
7882
|
+
};
|
|
7883
|
+
// Initial check
|
|
7884
|
+
checkActiveCell();
|
|
7885
|
+
// Listen to active cell changes
|
|
7886
|
+
chartData.notebookTracker.activeCellChanged.connect(checkActiveCell);
|
|
7887
|
+
return () => {
|
|
7888
|
+
chartData.notebookTracker.activeCellChanged.disconnect(checkActiveCell);
|
|
7889
|
+
};
|
|
7890
|
+
}, [chartData]);
|
|
7891
|
+
// Update overlay height to cover full scrollable content
|
|
7892
|
+
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
7893
|
+
if (!isAddingField) {
|
|
7894
|
+
setOverlayHeight(0);
|
|
7895
|
+
return;
|
|
7896
|
+
}
|
|
7897
|
+
const updateOverlayHeight = () => {
|
|
7898
|
+
if (widgetRef.current) {
|
|
7899
|
+
// Use scrollHeight to get the full scrollable content height
|
|
7900
|
+
setOverlayHeight(widgetRef.current.scrollHeight);
|
|
7901
|
+
}
|
|
7902
|
+
};
|
|
7903
|
+
// Initial update
|
|
7904
|
+
updateOverlayHeight();
|
|
7905
|
+
// Use ResizeObserver to watch for content size changes
|
|
7906
|
+
let resizeObserver = null;
|
|
7907
|
+
if (widgetRef.current && typeof ResizeObserver !== 'undefined') {
|
|
7908
|
+
resizeObserver = new ResizeObserver(() => {
|
|
7909
|
+
updateOverlayHeight();
|
|
7910
|
+
});
|
|
7911
|
+
resizeObserver.observe(widgetRef.current);
|
|
7912
|
+
}
|
|
7913
|
+
// Fallback: Update on window resize
|
|
7914
|
+
window.addEventListener('resize', updateOverlayHeight);
|
|
7915
|
+
return () => {
|
|
7916
|
+
if (resizeObserver) {
|
|
7917
|
+
resizeObserver.disconnect();
|
|
7918
|
+
}
|
|
7919
|
+
window.removeEventListener('resize', updateOverlayHeight);
|
|
7920
|
+
};
|
|
7921
|
+
}, [isAddingField]);
|
|
7689
7922
|
// Use custom hook for chart config management
|
|
7690
|
-
const { configVariables, setConfigVariables, hasConfig } = (0,
|
|
7923
|
+
const { configVariables, setConfigVariables, hasConfig } = (0,_hooks__WEBPACK_IMPORTED_MODULE_4__.useChartConfig)({
|
|
7691
7924
|
sourceCode: chartData === null || chartData === void 0 ? void 0 : chartData.sourceCode,
|
|
7692
7925
|
currentSourceCode,
|
|
7693
7926
|
});
|
|
7694
7927
|
// Use custom hook for debounced notebook updates
|
|
7695
|
-
const { updateNotebookCell, scheduleUpdate, clearPendingUpdate } = (0,
|
|
7928
|
+
const { updateNotebookCell, scheduleUpdate, clearPendingUpdate } = (0,_hooks__WEBPACK_IMPORTED_MODULE_5__.useDebouncedNotebookUpdate)({
|
|
7696
7929
|
chartData,
|
|
7697
7930
|
debounceDelay: 500,
|
|
7698
7931
|
});
|
|
@@ -7707,7 +7940,7 @@ const ChartWizardContent = ({ chartData }) => {
|
|
|
7707
7940
|
const updated = configVariables.map((v) => v.name === variableName ? { ...v, value: newValue } : v);
|
|
7708
7941
|
setConfigVariables(updated);
|
|
7709
7942
|
// Update the source code
|
|
7710
|
-
const updatedCode = (0,
|
|
7943
|
+
const updatedCode = (0,_utils_parser__WEBPACK_IMPORTED_MODULE_6__.updateChartConfig)(codeToUse, updated);
|
|
7711
7944
|
setCurrentSourceCode(updatedCode);
|
|
7712
7945
|
// Schedule debounced notebook update
|
|
7713
7946
|
scheduleUpdate(updatedCode);
|
|
@@ -7716,7 +7949,7 @@ const ChartWizardContent = ({ chartData }) => {
|
|
|
7716
7949
|
* Handles chart conversion from matplotlib to Chart Wizard format.
|
|
7717
7950
|
*/
|
|
7718
7951
|
const handleConvertChart = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {
|
|
7719
|
-
void (0,
|
|
7952
|
+
void (0,_restAPI_RestAPI__WEBPACK_IMPORTED_MODULE_7__.logEvent)('chart_wizard_convert_chart');
|
|
7720
7953
|
if (!(chartData === null || chartData === void 0 ? void 0 : chartData.sourceCode)) {
|
|
7721
7954
|
console.error('No source code available');
|
|
7722
7955
|
return;
|
|
@@ -7725,10 +7958,10 @@ const ChartWizardContent = ({ chartData }) => {
|
|
|
7725
7958
|
clearPendingUpdate();
|
|
7726
7959
|
setIsConverting(true);
|
|
7727
7960
|
try {
|
|
7728
|
-
const response = await (0,
|
|
7961
|
+
const response = await (0,_restAPI_RestAPI__WEBPACK_IMPORTED_MODULE_7__.convertChartCode)(chartData.sourceCode);
|
|
7729
7962
|
if (response.converted_code) {
|
|
7730
7963
|
// Extract code from markdown code blocks if present
|
|
7731
|
-
const extractedCode = (0,
|
|
7964
|
+
const extractedCode = (0,_utils_strings__WEBPACK_IMPORTED_MODULE_8__.removeMarkdownCodeFormatting)(response.converted_code);
|
|
7732
7965
|
// Validate that extracted code is not empty to prevent deleting user's code
|
|
7733
7966
|
if (!extractedCode || extractedCode.trim().length === 0) {
|
|
7734
7967
|
console.error('Error: Extracted code is empty. Cannot update notebook cell.');
|
|
@@ -7754,6 +7987,15 @@ const ChartWizardContent = ({ chartData }) => {
|
|
|
7754
7987
|
setIsConverting(false);
|
|
7755
7988
|
}
|
|
7756
7989
|
}, [chartData === null || chartData === void 0 ? void 0 : chartData.sourceCode, clearPendingUpdate, updateNotebookCell]);
|
|
7990
|
+
/**
|
|
7991
|
+
* Handles when a new field is added via the AddFieldButton component.
|
|
7992
|
+
*/
|
|
7993
|
+
const handleFieldAdded = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((updatedCode) => {
|
|
7994
|
+
// Update current source code so the useEffect will parse it
|
|
7995
|
+
setCurrentSourceCode(updatedCode);
|
|
7996
|
+
// Update the cell with the updated code
|
|
7997
|
+
updateNotebookCell(updatedCode);
|
|
7998
|
+
}, [updateNotebookCell]);
|
|
7757
7999
|
/**
|
|
7758
8000
|
* Renders the appropriate input field component based on variable type.
|
|
7759
8001
|
*/
|
|
@@ -7766,22 +8008,22 @@ const ChartWizardContent = ({ chartData }) => {
|
|
|
7766
8008
|
};
|
|
7767
8009
|
switch (variable.type) {
|
|
7768
8010
|
case 'boolean':
|
|
7769
|
-
return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
|
|
8011
|
+
return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_inputs__WEBPACK_IMPORTED_MODULE_9__.BooleanInputRow, { key: variable.name, ...commonProps });
|
|
7770
8012
|
case 'tuple':
|
|
7771
|
-
return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
|
|
8013
|
+
return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_inputs__WEBPACK_IMPORTED_MODULE_10__.TupleInputRow, { key: variable.name, ...commonProps });
|
|
7772
8014
|
case 'number':
|
|
7773
|
-
return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
|
|
8015
|
+
return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_inputs__WEBPACK_IMPORTED_MODULE_11__.NumberInputRow, { key: variable.name, ...commonProps });
|
|
7774
8016
|
case 'string': {
|
|
7775
8017
|
// String input - check if it's a hex color
|
|
7776
8018
|
const stringValue = variable.value;
|
|
7777
|
-
const isColor = (0,
|
|
8019
|
+
const isColor = (0,_inputs__WEBPACK_IMPORTED_MODULE_12__.isHexColor)(stringValue);
|
|
7778
8020
|
if (isColor) {
|
|
7779
|
-
return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
|
|
8021
|
+
return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_inputs__WEBPACK_IMPORTED_MODULE_13__.ColorInputRow, { key: variable.name, ...commonProps });
|
|
7780
8022
|
}
|
|
7781
|
-
return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
|
|
8023
|
+
return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_inputs__WEBPACK_IMPORTED_MODULE_14__.StringInputRow, { key: variable.name, ...commonProps });
|
|
7782
8024
|
}
|
|
7783
8025
|
default:
|
|
7784
|
-
return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
|
|
8026
|
+
return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_inputs__WEBPACK_IMPORTED_MODULE_14__.StringInputRow, { key: variable.name, ...commonProps });
|
|
7785
8027
|
}
|
|
7786
8028
|
}, [handleVariableChange]);
|
|
7787
8029
|
// Memoize input fields to prevent unnecessary re-renders
|
|
@@ -7792,11 +8034,35 @@ const ChartWizardContent = ({ chartData }) => {
|
|
|
7792
8034
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h2", null, "Chart Wizard"),
|
|
7793
8035
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", null, "Click the Chart Wizard button on a matplotlib chart to get started.")));
|
|
7794
8036
|
}
|
|
7795
|
-
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "chart-wizard-widget" },
|
|
8037
|
+
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "chart-wizard-widget", ref: widgetRef, style: { position: 'relative' } },
|
|
7796
8038
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h2", null, "Chart Wizard"),
|
|
8039
|
+
isActiveCellMismatch && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "chart-wizard-warning" },
|
|
8040
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "chart-wizard-warning-content" }, "The active cell is no longer the chart cell. Changes may not be applied correctly."),
|
|
8041
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", { className: "chart-wizard-warning-button", onClick: () => {
|
|
8042
|
+
var _a;
|
|
8043
|
+
if (chartData) {
|
|
8044
|
+
// Find the notebook panel by ID
|
|
8045
|
+
const notebookPanel = chartData.notebookTracker.find(panel => panel.id === chartData.notebookPanelId);
|
|
8046
|
+
if (notebookPanel) {
|
|
8047
|
+
// Activate the notebook panel if it's not the current one
|
|
8048
|
+
if (((_a = chartData.notebookTracker.currentWidget) === null || _a === void 0 ? void 0 : _a.id) !== notebookPanel.id) {
|
|
8049
|
+
chartData.app.shell.activateById(notebookPanel.id);
|
|
8050
|
+
// Wait a bit for the notebook to activate before scrolling
|
|
8051
|
+
setTimeout(() => {
|
|
8052
|
+
(0,_utils_notebook__WEBPACK_IMPORTED_MODULE_3__.scrollToCell)(notebookPanel, chartData.cellId, undefined, 'start');
|
|
8053
|
+
}, 100);
|
|
8054
|
+
}
|
|
8055
|
+
else {
|
|
8056
|
+
// Navigate to and scroll to the chart cell
|
|
8057
|
+
(0,_utils_notebook__WEBPACK_IMPORTED_MODULE_3__.scrollToCell)(notebookPanel, chartData.cellId, undefined, 'start');
|
|
8058
|
+
}
|
|
8059
|
+
}
|
|
8060
|
+
}
|
|
8061
|
+
}, type: "button" }, "Go to Chart Cell"))),
|
|
7797
8062
|
hasConfig ? (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "chart-wizard-config-container" },
|
|
7798
8063
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", { className: "chart-wizard-config-description" }, "Edit values below to customize your chart. Changes will be reflected in the notebook."),
|
|
7799
|
-
inputFields
|
|
8064
|
+
inputFields,
|
|
8065
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_AddFieldButton__WEBPACK_IMPORTED_MODULE_15__["default"], { code: currentSourceCode || (chartData === null || chartData === void 0 ? void 0 : chartData.sourceCode) || null, onFieldAdded: handleFieldAdded, clearPendingUpdate: clearPendingUpdate, onLoadingStateChange: setIsAddingField }))) : (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "chart-wizard-no-config" },
|
|
7800
8066
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", null,
|
|
7801
8067
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("strong", null, "This chart isn't ready for Chart Wizard yet."),
|
|
7802
8068
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("br", null),
|
|
@@ -7805,7 +8071,13 @@ const ChartWizardContent = ({ chartData }) => {
|
|
|
7805
8071
|
"Converting",
|
|
7806
8072
|
' ',
|
|
7807
8073
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", { className: "chart-wizard-loading-dots" },
|
|
7808
|
-
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
|
|
8074
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_LoadingDots__WEBPACK_IMPORTED_MODULE_16__["default"], null)))) : ('Convert')))),
|
|
8075
|
+
isAddingField && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "chart-wizard-overlay", style: { height: overlayHeight > 0 ? `${overlayHeight}px` : '100%' } },
|
|
8076
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "chart-wizard-overlay-text" },
|
|
8077
|
+
"Adding new field",
|
|
8078
|
+
' ',
|
|
8079
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", { className: "chart-wizard-loading-dots" },
|
|
8080
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_LoadingDots__WEBPACK_IMPORTED_MODULE_16__["default"], null)))))));
|
|
7809
8081
|
};
|
|
7810
8082
|
class ChartWizardWidget extends _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.ReactWidget {
|
|
7811
8083
|
constructor() {
|
|
@@ -7910,14 +8182,14 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
7910
8182
|
*/
|
|
7911
8183
|
const useDebouncedNotebookUpdate = ({ chartData, debounceDelay = 500, }) => {
|
|
7912
8184
|
const executeTimeoutRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
|
|
7913
|
-
// Cleanup timeout on unmount
|
|
8185
|
+
// Cleanup timeout on unmount or when chartData changes
|
|
7914
8186
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
7915
8187
|
return () => {
|
|
7916
8188
|
if (executeTimeoutRef.current) {
|
|
7917
8189
|
clearTimeout(executeTimeoutRef.current);
|
|
7918
8190
|
}
|
|
7919
8191
|
};
|
|
7920
|
-
}, []);
|
|
8192
|
+
}, [chartData]);
|
|
7921
8193
|
const updateNotebookCell = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((updatedCode) => {
|
|
7922
8194
|
var _a;
|
|
7923
8195
|
if (!chartData)
|
|
@@ -9035,10 +9307,10 @@ const getFullErrorMessageFromTraceback = (tracebackArray) => {
|
|
|
9035
9307
|
|
|
9036
9308
|
/***/ }),
|
|
9037
9309
|
|
|
9038
|
-
/***/ "./lib/Extensions/
|
|
9039
|
-
|
|
9040
|
-
!*** ./lib/Extensions/
|
|
9041
|
-
|
|
9310
|
+
/***/ "./lib/Extensions/MitoThemes/index.js":
|
|
9311
|
+
/*!********************************************!*\
|
|
9312
|
+
!*** ./lib/Extensions/MitoThemes/index.js ***!
|
|
9313
|
+
\********************************************/
|
|
9042
9314
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
9043
9315
|
|
|
9044
9316
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -9055,8 +9327,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
9055
9327
|
/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_3__);
|
|
9056
9328
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react");
|
|
9057
9329
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_4__);
|
|
9058
|
-
/* harmony import */ var
|
|
9059
|
-
/* harmony import */ var
|
|
9330
|
+
/* harmony import */ var _components_RunCellButton__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../components/RunCellButton */ "./lib/components/RunCellButton.js");
|
|
9331
|
+
/* harmony import */ var _utils_lineNumbers__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils/lineNumbers */ "./lib/utils/lineNumbers.js");
|
|
9332
|
+
/* harmony import */ var _palettes__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./palettes */ "./lib/Extensions/MitoThemes/palettes.js");
|
|
9060
9333
|
/* harmony import */ var _style_RunCellButton_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../style/RunCellButton.css */ "./style/RunCellButton.css");
|
|
9061
9334
|
/*
|
|
9062
9335
|
* Copyright (c) Saga Inc.
|
|
@@ -9070,6 +9343,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
9070
9343
|
|
|
9071
9344
|
|
|
9072
9345
|
|
|
9346
|
+
|
|
9073
9347
|
/**
|
|
9074
9348
|
* Updates cell numbers for all cells in a notebook.
|
|
9075
9349
|
* Uses notebook.widgets which is always in the correct order.
|
|
@@ -9107,6 +9381,8 @@ function setupCellNumbering(notebookPanel) {
|
|
|
9107
9381
|
updateAllCellNumbers(notebookPanel);
|
|
9108
9382
|
});
|
|
9109
9383
|
observer.observe(notebook.node, { childList: true, subtree: true });
|
|
9384
|
+
// Initial update
|
|
9385
|
+
updateAllCellNumbers(notebookPanel);
|
|
9110
9386
|
// Return cleanup function
|
|
9111
9387
|
return () => {
|
|
9112
9388
|
var _a;
|
|
@@ -9123,20 +9399,24 @@ function setupCellNumbering(notebookPanel) {
|
|
|
9123
9399
|
};
|
|
9124
9400
|
}
|
|
9125
9401
|
/**
|
|
9126
|
-
* A plugin for the Mito Light
|
|
9402
|
+
* A plugin for the Mito Themes (Light and Dark).
|
|
9127
9403
|
*
|
|
9128
|
-
*
|
|
9129
|
-
*
|
|
9404
|
+
* Registers both Mito Light and Mito Dark themes.
|
|
9405
|
+
* The Run Cell Button, cell numbering, and hidden default toolbar buttons apply
|
|
9406
|
+
* when either Mito theme is active.
|
|
9130
9407
|
*/
|
|
9131
9408
|
const plugin = {
|
|
9132
|
-
id: 'mito_ai:
|
|
9133
|
-
description: 'Adds the Mito Light
|
|
9409
|
+
id: 'mito_ai:themes',
|
|
9410
|
+
description: 'Adds the Mito Light and Dark themes.',
|
|
9134
9411
|
requires: [_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.IThemeManager, _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_1__.ITranslator, _jupyterlab_notebook__WEBPACK_IMPORTED_MODULE_2__.INotebookTracker],
|
|
9135
9412
|
activate: (app, manager, translator, notebookTracker) => {
|
|
9136
9413
|
const trans = translator.load('jupyterlab');
|
|
9414
|
+
// CSS path - single CSS file for both themes (uses CSS variables set by palettes)
|
|
9137
9415
|
const style = 'mito_ai/index.css';
|
|
9138
|
-
|
|
9139
|
-
|
|
9416
|
+
const palettes = new _palettes__WEBPACK_IMPORTED_MODULE_6__.MitoPalettes();
|
|
9417
|
+
// Store connections for cleanup
|
|
9418
|
+
let lightWidgetAddedConnection = null;
|
|
9419
|
+
let darkWidgetAddedConnection = null;
|
|
9140
9420
|
// Store cell numbering cleanup functions for each notebook
|
|
9141
9421
|
const cellNumberingCleanups = new Map();
|
|
9142
9422
|
// Add Run Cell button to notebook toolbar
|
|
@@ -9157,7 +9437,7 @@ const plugin = {
|
|
|
9157
9437
|
this.addClass('mito-run-cell-button-widget');
|
|
9158
9438
|
}
|
|
9159
9439
|
render() {
|
|
9160
|
-
return react__WEBPACK_IMPORTED_MODULE_4___default().createElement(
|
|
9440
|
+
return react__WEBPACK_IMPORTED_MODULE_4___default().createElement(_components_RunCellButton__WEBPACK_IMPORTED_MODULE_7__["default"], { notebookPanel: this.panel });
|
|
9161
9441
|
}
|
|
9162
9442
|
}
|
|
9163
9443
|
const runCellWidget = new RunCellButtonWidget(notebookPanel);
|
|
@@ -9196,54 +9476,65 @@ const plugin = {
|
|
|
9196
9476
|
cellNumberingCleanups.delete(notebookPanel);
|
|
9197
9477
|
}
|
|
9198
9478
|
};
|
|
9199
|
-
// Add
|
|
9200
|
-
const
|
|
9479
|
+
// Add cell numbering to a notebook panel (guard against duplicates)
|
|
9480
|
+
const addCellNumbering = (notebookPanel) => {
|
|
9481
|
+
if (cellNumberingCleanups.has(notebookPanel)) {
|
|
9482
|
+
return;
|
|
9483
|
+
}
|
|
9484
|
+
const cleanup = setupCellNumbering(notebookPanel);
|
|
9485
|
+
if (cleanup) {
|
|
9486
|
+
cellNumberingCleanups.set(notebookPanel, cleanup);
|
|
9487
|
+
// Also cleanup when notebook is disposed
|
|
9488
|
+
notebookPanel.disposed.connect(() => {
|
|
9489
|
+
cellNumberingCleanups.delete(notebookPanel);
|
|
9490
|
+
});
|
|
9491
|
+
}
|
|
9492
|
+
};
|
|
9493
|
+
// Add buttons and cell numbering to all notebooks (for a specific theme)
|
|
9494
|
+
const addButtonsToAllNotebooks = (themeName) => {
|
|
9201
9495
|
notebookTracker.forEach(widget => {
|
|
9202
9496
|
addRunCellButton(widget);
|
|
9203
9497
|
// Enable line numbers if needed
|
|
9204
|
-
void (0,
|
|
9498
|
+
void (0,_utils_lineNumbers__WEBPACK_IMPORTED_MODULE_8__.enableLineNumbersIfNeeded)(app, widget);
|
|
9205
9499
|
// Setup cell numbering
|
|
9206
|
-
|
|
9207
|
-
if (cleanup) {
|
|
9208
|
-
cellNumberingCleanups.set(widget, cleanup);
|
|
9209
|
-
// Also cleanup when notebook is disposed
|
|
9210
|
-
widget.disposed.connect(() => {
|
|
9211
|
-
cellNumberingCleanups.delete(widget);
|
|
9212
|
-
});
|
|
9213
|
-
}
|
|
9500
|
+
addCellNumbering(widget);
|
|
9214
9501
|
});
|
|
9215
9502
|
// Connect to new notebooks
|
|
9216
|
-
|
|
9503
|
+
const widgetAddedHandler = (sender, widget) => {
|
|
9217
9504
|
setTimeout(() => {
|
|
9218
9505
|
// Check if widget is still valid before proceeding
|
|
9219
9506
|
if (widget.isDisposed) {
|
|
9220
9507
|
return;
|
|
9221
9508
|
}
|
|
9222
|
-
// Only add if
|
|
9223
|
-
if (manager.theme ===
|
|
9509
|
+
// Only add if the specified theme is still active
|
|
9510
|
+
if (manager.theme === themeName) {
|
|
9224
9511
|
addRunCellButton(widget);
|
|
9225
9512
|
// Enable line numbers if needed
|
|
9226
|
-
void (0,
|
|
9513
|
+
void (0,_utils_lineNumbers__WEBPACK_IMPORTED_MODULE_8__.enableLineNumbersIfNeeded)(app, widget);
|
|
9227
9514
|
// Setup cell numbering
|
|
9228
|
-
|
|
9229
|
-
if (cleanup) {
|
|
9230
|
-
cellNumberingCleanups.set(widget, cleanup);
|
|
9231
|
-
// Also cleanup when notebook is disposed
|
|
9232
|
-
widget.disposed.connect(() => {
|
|
9233
|
-
cellNumberingCleanups.delete(widget);
|
|
9234
|
-
});
|
|
9235
|
-
}
|
|
9515
|
+
addCellNumbering(widget);
|
|
9236
9516
|
}
|
|
9237
9517
|
}, 100);
|
|
9238
9518
|
};
|
|
9239
|
-
|
|
9519
|
+
if (themeName === 'Mito Light') {
|
|
9520
|
+
lightWidgetAddedConnection = widgetAddedHandler;
|
|
9521
|
+
notebookTracker.widgetAdded.connect(lightWidgetAddedConnection);
|
|
9522
|
+
}
|
|
9523
|
+
else if (themeName === 'Mito Dark') {
|
|
9524
|
+
darkWidgetAddedConnection = widgetAddedHandler;
|
|
9525
|
+
notebookTracker.widgetAdded.connect(darkWidgetAddedConnection);
|
|
9526
|
+
}
|
|
9240
9527
|
};
|
|
9241
9528
|
// Remove buttons and cell numbering from all notebooks
|
|
9242
9529
|
const removeButtonsFromAllNotebooks = () => {
|
|
9243
9530
|
// Disconnect from new notebooks
|
|
9244
|
-
if (
|
|
9245
|
-
notebookTracker.widgetAdded.disconnect(
|
|
9246
|
-
|
|
9531
|
+
if (lightWidgetAddedConnection) {
|
|
9532
|
+
notebookTracker.widgetAdded.disconnect(lightWidgetAddedConnection);
|
|
9533
|
+
lightWidgetAddedConnection = null;
|
|
9534
|
+
}
|
|
9535
|
+
if (darkWidgetAddedConnection) {
|
|
9536
|
+
notebookTracker.widgetAdded.disconnect(darkWidgetAddedConnection);
|
|
9537
|
+
darkWidgetAddedConnection = null;
|
|
9247
9538
|
}
|
|
9248
9539
|
// Remove from all existing notebooks
|
|
9249
9540
|
notebookTracker.forEach(widget => {
|
|
@@ -9253,33 +9544,323 @@ const plugin = {
|
|
|
9253
9544
|
// Clear all cleanup functions
|
|
9254
9545
|
cellNumberingCleanups.clear();
|
|
9255
9546
|
};
|
|
9547
|
+
// Register Mito Light theme
|
|
9256
9548
|
manager.register({
|
|
9257
9549
|
name: 'Mito Light',
|
|
9258
9550
|
displayName: trans.__('Mito Light'),
|
|
9259
9551
|
isLight: true,
|
|
9260
9552
|
themeScrollbars: false,
|
|
9261
9553
|
load: async () => {
|
|
9262
|
-
//
|
|
9554
|
+
// Set CSS variables for light theme before loading CSS
|
|
9555
|
+
palettes.setColorsLight();
|
|
9556
|
+
// Load theme CSS (hides default buttons, applies light theme variables)
|
|
9263
9557
|
await manager.loadCSS(style);
|
|
9264
9558
|
// Add Run Cell buttons to all notebooks and enable line numbers
|
|
9265
|
-
addButtonsToAllNotebooks();
|
|
9559
|
+
addButtonsToAllNotebooks('Mito Light');
|
|
9266
9560
|
},
|
|
9267
9561
|
unload: async () => {
|
|
9268
9562
|
// Remove Run Cell buttons from all notebooks
|
|
9269
9563
|
removeButtonsFromAllNotebooks();
|
|
9270
9564
|
}
|
|
9271
9565
|
});
|
|
9272
|
-
//
|
|
9273
|
-
|
|
9274
|
-
|
|
9275
|
-
|
|
9276
|
-
|
|
9566
|
+
// Register Mito Dark theme
|
|
9567
|
+
manager.register({
|
|
9568
|
+
name: 'Mito Dark',
|
|
9569
|
+
displayName: trans.__('Mito Dark'),
|
|
9570
|
+
isLight: false,
|
|
9571
|
+
themeScrollbars: false,
|
|
9572
|
+
load: async () => {
|
|
9573
|
+
// Set CSS variables for dark theme before loading CSS
|
|
9574
|
+
palettes.setColorsDark();
|
|
9575
|
+
// Load theme CSS (hides default buttons, applies dark theme variables)
|
|
9576
|
+
await manager.loadCSS(style);
|
|
9577
|
+
// Add Run Cell buttons to all notebooks and enable line numbers
|
|
9578
|
+
addButtonsToAllNotebooks('Mito Dark');
|
|
9579
|
+
},
|
|
9580
|
+
unload: async () => {
|
|
9581
|
+
// Remove Run Cell buttons from all notebooks
|
|
9582
|
+
removeButtonsFromAllNotebooks();
|
|
9583
|
+
}
|
|
9584
|
+
});
|
|
9585
|
+
// Flag to prevent infinite recursion when we convert themes
|
|
9586
|
+
let isConvertingTheme = false;
|
|
9587
|
+
// Helper function to convert non-Mito themes to corresponding Mito theme
|
|
9588
|
+
const convertToMitoTheme = (themeName) => {
|
|
9589
|
+
// Prevent infinite recursion - if we're already converting, don't do it again
|
|
9590
|
+
if (isConvertingTheme) {
|
|
9591
|
+
return;
|
|
9592
|
+
}
|
|
9593
|
+
if (!themeName) {
|
|
9594
|
+
// No theme set, default to Mito Light
|
|
9595
|
+
isConvertingTheme = true;
|
|
9596
|
+
void manager.setTheme('Mito Light').finally(() => {
|
|
9597
|
+
isConvertingTheme = false;
|
|
9598
|
+
});
|
|
9599
|
+
return;
|
|
9600
|
+
}
|
|
9601
|
+
const isMitoTheme = themeName === 'Mito Light' || themeName === 'Mito Dark';
|
|
9602
|
+
if (isMitoTheme) {
|
|
9603
|
+
// Already a Mito theme, don't change - this ensures user's Mito theme preference is preserved
|
|
9604
|
+
return;
|
|
9605
|
+
}
|
|
9606
|
+
// Convert non-Mito themes to corresponding Mito theme
|
|
9607
|
+
isConvertingTheme = true;
|
|
9608
|
+
if (themeName === 'JupyterLab Dark' || themeName.includes('Dark')) {
|
|
9609
|
+
void manager.setTheme('Mito Dark').finally(() => {
|
|
9610
|
+
isConvertingTheme = false;
|
|
9611
|
+
});
|
|
9612
|
+
}
|
|
9613
|
+
else {
|
|
9614
|
+
// Default to light theme for any other non-Mito theme (including JupyterLab Light)
|
|
9615
|
+
void manager.setTheme('Mito Light').finally(() => {
|
|
9616
|
+
isConvertingTheme = false;
|
|
9617
|
+
});
|
|
9618
|
+
}
|
|
9619
|
+
};
|
|
9620
|
+
// Wait for app restoration to complete before checking/setting theme
|
|
9621
|
+
// This ensures saved theme preferences are loaded first
|
|
9622
|
+
void app.restored.then(() => {
|
|
9623
|
+
// Convert theme on initial load if needed
|
|
9624
|
+
convertToMitoTheme(manager.theme);
|
|
9625
|
+
});
|
|
9626
|
+
// Listen for theme changes and automatically convert to Mito theme
|
|
9627
|
+
// This ensures that when users switch themes, they get converted to Mito themes
|
|
9628
|
+
// and the preference is saved properly
|
|
9629
|
+
manager.themeChanged.connect(() => {
|
|
9630
|
+
// Use manager.theme to get the current theme after the change
|
|
9631
|
+
convertToMitoTheme(manager.theme);
|
|
9632
|
+
});
|
|
9277
9633
|
},
|
|
9278
9634
|
autoStart: true
|
|
9279
9635
|
};
|
|
9280
9636
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (plugin);
|
|
9281
9637
|
|
|
9282
9638
|
|
|
9639
|
+
/***/ }),
|
|
9640
|
+
|
|
9641
|
+
/***/ "./lib/Extensions/MitoThemes/palettes.js":
|
|
9642
|
+
/*!***********************************************!*\
|
|
9643
|
+
!*** ./lib/Extensions/MitoThemes/palettes.js ***!
|
|
9644
|
+
\***********************************************/
|
|
9645
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
9646
|
+
|
|
9647
|
+
__webpack_require__.r(__webpack_exports__);
|
|
9648
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
9649
|
+
/* harmony export */ MitoPalettes: () => (/* binding */ MitoPalettes)
|
|
9650
|
+
/* harmony export */ });
|
|
9651
|
+
/*
|
|
9652
|
+
* Copyright (c) Saga Inc.
|
|
9653
|
+
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
9654
|
+
*/
|
|
9655
|
+
/**
|
|
9656
|
+
* MitoPalettes class sets CSS variables for light and dark themes.
|
|
9657
|
+
* Similar to catppuccin's approach, this allows a single CSS file to work
|
|
9658
|
+
* for both themes by setting different variable values before loading CSS.
|
|
9659
|
+
*/
|
|
9660
|
+
class MitoPalettes {
|
|
9661
|
+
/**
|
|
9662
|
+
* Set CSS variables for the light theme
|
|
9663
|
+
*/
|
|
9664
|
+
setColorsLight() {
|
|
9665
|
+
// Border colors
|
|
9666
|
+
document.documentElement.style.setProperty('--mito-theme-border-color0', '#bdbdbd');
|
|
9667
|
+
document.documentElement.style.setProperty('--mito-theme-border-color1', '#bdbdbd');
|
|
9668
|
+
document.documentElement.style.setProperty('--mito-theme-border-color2', '#e0e0e0');
|
|
9669
|
+
document.documentElement.style.setProperty('--mito-theme-border-color3', '#eee');
|
|
9670
|
+
document.documentElement.style.setProperty('--mito-theme-inverse-border-color', '#757575');
|
|
9671
|
+
// UI Font colors
|
|
9672
|
+
document.documentElement.style.setProperty('--mito-theme-ui-font-color0', 'rgba(0, 0, 0, 1)');
|
|
9673
|
+
document.documentElement.style.setProperty('--mito-theme-ui-font-color1', 'rgba(0, 0, 0, 0.87)');
|
|
9674
|
+
document.documentElement.style.setProperty('--mito-theme-ui-font-color2', 'rgba(0, 0, 0, 0.54)');
|
|
9675
|
+
document.documentElement.style.setProperty('--mito-theme-ui-font-color3', 'rgba(0, 0, 0, 0.38)');
|
|
9676
|
+
document.documentElement.style.setProperty('--mito-theme-ui-inverse-font-color0', 'rgba(255, 255, 255, 1)');
|
|
9677
|
+
document.documentElement.style.setProperty('--mito-theme-ui-inverse-font-color1', 'rgba(255, 255, 255, 1)');
|
|
9678
|
+
document.documentElement.style.setProperty('--mito-theme-ui-inverse-font-color2', 'rgba(255, 255, 255, 0.7)');
|
|
9679
|
+
document.documentElement.style.setProperty('--mito-theme-ui-inverse-font-color3', 'rgba(255, 255, 255, 0.5)');
|
|
9680
|
+
// Content Font colors
|
|
9681
|
+
document.documentElement.style.setProperty('--mito-theme-content-font-color0', 'rgba(0, 0, 0, 1)');
|
|
9682
|
+
document.documentElement.style.setProperty('--mito-theme-content-font-color1', 'rgba(0, 0, 0, 0.87)');
|
|
9683
|
+
document.documentElement.style.setProperty('--mito-theme-content-font-color2', 'rgba(0, 0, 0, 0.54)');
|
|
9684
|
+
document.documentElement.style.setProperty('--mito-theme-content-font-color3', 'rgba(0, 0, 0, 0.38)');
|
|
9685
|
+
document.documentElement.style.setProperty('--mito-theme-content-link-color', '#0d47a1');
|
|
9686
|
+
document.documentElement.style.setProperty('--mito-theme-content-link-visited-color', '#7b1fa2');
|
|
9687
|
+
// Layout colors
|
|
9688
|
+
document.documentElement.style.setProperty('--mito-theme-layout-color0', 'white');
|
|
9689
|
+
document.documentElement.style.setProperty('--mito-theme-layout-color1', 'white');
|
|
9690
|
+
document.documentElement.style.setProperty('--mito-theme-layout-color2', '#eee');
|
|
9691
|
+
document.documentElement.style.setProperty('--mito-theme-layout-color3', '#bdbdbd');
|
|
9692
|
+
document.documentElement.style.setProperty('--mito-theme-layout-color4', '#757575');
|
|
9693
|
+
document.documentElement.style.setProperty('--mito-theme-inverse-layout-color0', '#111');
|
|
9694
|
+
document.documentElement.style.setProperty('--mito-theme-inverse-layout-color1', '#212121');
|
|
9695
|
+
document.documentElement.style.setProperty('--mito-theme-inverse-layout-color2', '#424242');
|
|
9696
|
+
document.documentElement.style.setProperty('--mito-theme-inverse-layout-color3', '#616161');
|
|
9697
|
+
document.documentElement.style.setProperty('--mito-theme-inverse-layout-color4', '#757575');
|
|
9698
|
+
// Brand colors (using purple variables from light theme)
|
|
9699
|
+
document.documentElement.style.setProperty('--mito-theme-brand-color0', 'var(--purple-900)');
|
|
9700
|
+
document.documentElement.style.setProperty('--mito-theme-brand-color1', 'var(--purple-700)');
|
|
9701
|
+
document.documentElement.style.setProperty('--mito-theme-brand-color2', 'var(--purple-500)');
|
|
9702
|
+
document.documentElement.style.setProperty('--mito-theme-brand-color3', 'var(--purple-300)');
|
|
9703
|
+
document.documentElement.style.setProperty('--mito-theme-brand-color4', 'var(--purple-300)');
|
|
9704
|
+
// Primary button colors (light mode: blue theme to avoid pinkish-purple)
|
|
9705
|
+
document.documentElement.style.setProperty('--mito-theme-button-background', 'var(--blue-300)');
|
|
9706
|
+
document.documentElement.style.setProperty('--mito-theme-button-border', 'var(--blue-900)');
|
|
9707
|
+
document.documentElement.style.setProperty('--mito-theme-button-text', 'var(--blue-900)');
|
|
9708
|
+
document.documentElement.style.setProperty('--mito-theme-button-hover-background', 'var(--blue-400)');
|
|
9709
|
+
// Cell editor colors
|
|
9710
|
+
document.documentElement.style.setProperty('--mito-theme-cell-editor-background', '#f5f5f5');
|
|
9711
|
+
document.documentElement.style.setProperty('--mito-theme-cell-editor-border-color', '#e0e0e0');
|
|
9712
|
+
document.documentElement.style.setProperty('--mito-theme-cell-editor-active-background', 'var(--mito-theme-layout-color0)');
|
|
9713
|
+
document.documentElement.style.setProperty('--mito-theme-cell-prompt-not-active-font-color', '#616161');
|
|
9714
|
+
document.documentElement.style.setProperty('--mito-theme-cell-outprompt-font-color', '#bf5b3d');
|
|
9715
|
+
// Notebook colors
|
|
9716
|
+
document.documentElement.style.setProperty('--mito-theme-notebook-select-background', 'var(--mito-theme-layout-color1)');
|
|
9717
|
+
document.documentElement.style.setProperty('--mito-theme-notebook-multiselected-color', '#e3f2fd');
|
|
9718
|
+
// Rendermime colors
|
|
9719
|
+
document.documentElement.style.setProperty('--mito-theme-rendermime-error-background', '#fdd');
|
|
9720
|
+
document.documentElement.style.setProperty('--mito-theme-rendermime-table-row-background', '#ebebeb');
|
|
9721
|
+
document.documentElement.style.setProperty('--mito-theme-rendermime-table-row-hover-background', '#e1f5fe');
|
|
9722
|
+
// Dialog colors
|
|
9723
|
+
document.documentElement.style.setProperty('--mito-theme-dialog-background', 'rgba(0, 0, 0, 0.25)');
|
|
9724
|
+
// Input field colors
|
|
9725
|
+
document.documentElement.style.setProperty('--mito-theme-input-background', '#f5f5f5');
|
|
9726
|
+
document.documentElement.style.setProperty('--mito-theme-input-border-color', 'var(--mito-theme-inverse-border-color)');
|
|
9727
|
+
// Editor colors
|
|
9728
|
+
document.documentElement.style.setProperty('--mito-theme-editor-selected-background', '#d9d9d9');
|
|
9729
|
+
document.documentElement.style.setProperty('--mito-theme-editor-selected-focused-background', '#d7d4f0');
|
|
9730
|
+
document.documentElement.style.setProperty('--mito-theme-editor-cursor-color', 'var(--mito-theme-ui-font-color0)');
|
|
9731
|
+
// Line number colors (grey/white/blue instead of pink)
|
|
9732
|
+
document.documentElement.style.setProperty('--mito-theme-line-number-color', '#92999F');
|
|
9733
|
+
// Code mirror colors
|
|
9734
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-keyword-color', '#008000');
|
|
9735
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-atom-color', '#88f');
|
|
9736
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-number-color', '#080');
|
|
9737
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-def-color', '#00f');
|
|
9738
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-variable-color', '#212121');
|
|
9739
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-variable-2-color', 'rgb(0, 54, 109)');
|
|
9740
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-variable-3-color', '#085');
|
|
9741
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-punctuation-color', '#05a');
|
|
9742
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-property-color', '#05a');
|
|
9743
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-operator-color', '#7800c2');
|
|
9744
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-comment-color', '#408080');
|
|
9745
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-string-color', '#ba2121');
|
|
9746
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-string-2-color', '#708');
|
|
9747
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-meta-color', '#a2f');
|
|
9748
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-qualifier-color', '#555');
|
|
9749
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-builtin-color', '#008000');
|
|
9750
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-bracket-color', '#997');
|
|
9751
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-tag-color', '#170');
|
|
9752
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-attribute-color', '#00c');
|
|
9753
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-header-color', 'blue');
|
|
9754
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-quote-color', '#090');
|
|
9755
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-link-color', '#00c');
|
|
9756
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-error-color', '#f00');
|
|
9757
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-hr-color', '#999');
|
|
9758
|
+
// Vega colors
|
|
9759
|
+
document.documentElement.style.setProperty('--mito-theme-vega-background', 'white');
|
|
9760
|
+
}
|
|
9761
|
+
/**
|
|
9762
|
+
* Set CSS variables for the dark theme
|
|
9763
|
+
*/
|
|
9764
|
+
setColorsDark() {
|
|
9765
|
+
// Border colors
|
|
9766
|
+
document.documentElement.style.setProperty('--mito-theme-border-color0', '#3c3c3c');
|
|
9767
|
+
document.documentElement.style.setProperty('--mito-theme-border-color1', '#3c3c3c');
|
|
9768
|
+
document.documentElement.style.setProperty('--mito-theme-border-color2', '#2d2d2d');
|
|
9769
|
+
document.documentElement.style.setProperty('--mito-theme-border-color3', '#252526');
|
|
9770
|
+
document.documentElement.style.setProperty('--mito-theme-inverse-border-color', '#5a5a5a');
|
|
9771
|
+
// UI Font colors
|
|
9772
|
+
document.documentElement.style.setProperty('--mito-theme-ui-font-color0', 'rgba(255, 255, 255, 1)');
|
|
9773
|
+
document.documentElement.style.setProperty('--mito-theme-ui-font-color1', 'rgba(255, 255, 255, 0.87)');
|
|
9774
|
+
document.documentElement.style.setProperty('--mito-theme-ui-font-color2', 'rgba(255, 255, 255, 0.6)');
|
|
9775
|
+
document.documentElement.style.setProperty('--mito-theme-ui-font-color3', 'rgba(255, 255, 255, 0.4)');
|
|
9776
|
+
document.documentElement.style.setProperty('--mito-theme-ui-inverse-font-color0', 'rgba(0, 0, 0, 1)');
|
|
9777
|
+
document.documentElement.style.setProperty('--mito-theme-ui-inverse-font-color1', 'rgba(0, 0, 0, 0.87)');
|
|
9778
|
+
document.documentElement.style.setProperty('--mito-theme-ui-inverse-font-color2', 'rgba(0, 0, 0, 0.6)');
|
|
9779
|
+
document.documentElement.style.setProperty('--mito-theme-ui-inverse-font-color3', 'rgba(0, 0, 0, 0.4)');
|
|
9780
|
+
// Content Font colors
|
|
9781
|
+
document.documentElement.style.setProperty('--mito-theme-content-font-color0', 'rgba(255, 255, 255, 1)');
|
|
9782
|
+
document.documentElement.style.setProperty('--mito-theme-content-font-color1', 'rgba(255, 255, 255, 0.87)');
|
|
9783
|
+
document.documentElement.style.setProperty('--mito-theme-content-font-color2', 'rgba(255, 255, 255, 0.6)');
|
|
9784
|
+
document.documentElement.style.setProperty('--mito-theme-content-font-color3', 'rgba(255, 255, 255, 0.4)');
|
|
9785
|
+
document.documentElement.style.setProperty('--mito-theme-content-link-color', '#7c93ee');
|
|
9786
|
+
document.documentElement.style.setProperty('--mito-theme-content-link-visited-color', '#b39ddb');
|
|
9787
|
+
// Layout colors
|
|
9788
|
+
document.documentElement.style.setProperty('--mito-theme-layout-color0', '#1a1a1a');
|
|
9789
|
+
document.documentElement.style.setProperty('--mito-theme-layout-color1', '#1e1e1e');
|
|
9790
|
+
document.documentElement.style.setProperty('--mito-theme-layout-color2', '#252526');
|
|
9791
|
+
document.documentElement.style.setProperty('--mito-theme-layout-color3', '#2d2d2d');
|
|
9792
|
+
document.documentElement.style.setProperty('--mito-theme-layout-color4', '#3c3c3c');
|
|
9793
|
+
document.documentElement.style.setProperty('--mito-theme-inverse-layout-color0', '#ffffff');
|
|
9794
|
+
document.documentElement.style.setProperty('--mito-theme-inverse-layout-color1', '#f0f0f0');
|
|
9795
|
+
document.documentElement.style.setProperty('--mito-theme-inverse-layout-color2', '#d4d4d4');
|
|
9796
|
+
document.documentElement.style.setProperty('--mito-theme-inverse-layout-color3', '#a0a0a0');
|
|
9797
|
+
document.documentElement.style.setProperty('--mito-theme-inverse-layout-color4', '#6e6e6e');
|
|
9798
|
+
// Brand colors (pink-purple theme for dark, starting with #C65FAA)
|
|
9799
|
+
document.documentElement.style.setProperty('--mito-theme-brand-color0', '#C65FAA');
|
|
9800
|
+
document.documentElement.style.setProperty('--mito-theme-brand-color1', '#D97BC0');
|
|
9801
|
+
document.documentElement.style.setProperty('--mito-theme-brand-color2', '#E8A3D5');
|
|
9802
|
+
document.documentElement.style.setProperty('--mito-theme-brand-color3', '#F4D1EA');
|
|
9803
|
+
document.documentElement.style.setProperty('--mito-theme-brand-color4', '#FAE8F5');
|
|
9804
|
+
// Primary button colors (dark mode: lighter brand background, dark brand border)
|
|
9805
|
+
document.documentElement.style.setProperty('--mito-theme-button-background', '#F4D1EA');
|
|
9806
|
+
document.documentElement.style.setProperty('--mito-theme-button-border', '#C65FAA');
|
|
9807
|
+
document.documentElement.style.setProperty('--mito-theme-button-text', 'rgba(0, 0, 0, 0.87)');
|
|
9808
|
+
document.documentElement.style.setProperty('--mito-theme-button-hover-background', '#FAE8F5');
|
|
9809
|
+
// Cell editor colors
|
|
9810
|
+
document.documentElement.style.setProperty('--mito-theme-cell-editor-background', '#1e1e1e');
|
|
9811
|
+
document.documentElement.style.setProperty('--mito-theme-cell-editor-border-color', '#3c3c3c');
|
|
9812
|
+
document.documentElement.style.setProperty('--mito-theme-cell-editor-active-background', '#252526');
|
|
9813
|
+
document.documentElement.style.setProperty('--mito-theme-cell-prompt-not-active-font-color', '#6e6e6e');
|
|
9814
|
+
document.documentElement.style.setProperty('--mito-theme-cell-outprompt-font-color', '#f59e0b');
|
|
9815
|
+
// Notebook colors
|
|
9816
|
+
document.documentElement.style.setProperty('--mito-theme-notebook-select-background', '#2d2d2d');
|
|
9817
|
+
document.documentElement.style.setProperty('--mito-theme-notebook-multiselected-color', 'rgba(198, 95, 170, 0.2)');
|
|
9818
|
+
// Rendermime colors
|
|
9819
|
+
document.documentElement.style.setProperty('--mito-theme-rendermime-error-background', 'rgba(244, 67, 54, 0.2)');
|
|
9820
|
+
document.documentElement.style.setProperty('--mito-theme-rendermime-table-row-background', '#252526');
|
|
9821
|
+
document.documentElement.style.setProperty('--mito-theme-rendermime-table-row-hover-background', '#2d2d2d');
|
|
9822
|
+
// Dialog colors
|
|
9823
|
+
document.documentElement.style.setProperty('--mito-theme-dialog-background', 'rgba(0, 0, 0, 0.5)');
|
|
9824
|
+
// Input field colors
|
|
9825
|
+
document.documentElement.style.setProperty('--mito-theme-input-background', '#2d2d2d');
|
|
9826
|
+
document.documentElement.style.setProperty('--mito-theme-input-border-color', '#3c3c3c');
|
|
9827
|
+
// Editor colors
|
|
9828
|
+
document.documentElement.style.setProperty('--mito-theme-editor-selected-background', '#3c3c3c');
|
|
9829
|
+
document.documentElement.style.setProperty('--mito-theme-editor-selected-focused-background', '#3d4a5c');
|
|
9830
|
+
document.documentElement.style.setProperty('--mito-theme-editor-cursor-color', '#ffffff');
|
|
9831
|
+
// Line number colors (grey/white/blue instead of pink)
|
|
9832
|
+
document.documentElement.style.setProperty('--mito-theme-line-number-color', '#92999F');
|
|
9833
|
+
// Code mirror colors
|
|
9834
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-keyword-color', '#c586c0');
|
|
9835
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-atom-color', '#b5cea8');
|
|
9836
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-number-color', '#b5cea8');
|
|
9837
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-def-color', '#dcdcaa');
|
|
9838
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-variable-color', '#9cdcfe');
|
|
9839
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-variable-2-color', '#4fc1ff');
|
|
9840
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-variable-3-color', '#4ec9b0');
|
|
9841
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-punctuation-color', '#d4d4d4');
|
|
9842
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-property-color', '#9cdcfe');
|
|
9843
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-operator-color', '#d4d4d4');
|
|
9844
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-comment-color', '#6a9955');
|
|
9845
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-string-color', '#ce9178');
|
|
9846
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-string-2-color', '#ce9178');
|
|
9847
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-meta-color', '#d4d4d4');
|
|
9848
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-qualifier-color', '#d4d4d4');
|
|
9849
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-builtin-color', '#4ec9b0');
|
|
9850
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-bracket-color', '#ffd700');
|
|
9851
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-tag-color', '#569cd6');
|
|
9852
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-attribute-color', '#9cdcfe');
|
|
9853
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-header-color', '#569cd6');
|
|
9854
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-quote-color', '#6a9955');
|
|
9855
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-link-color', '#569cd6');
|
|
9856
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-error-color', '#f44747');
|
|
9857
|
+
document.documentElement.style.setProperty('--mito-theme-mirror-editor-hr-color', '#6e6e6e');
|
|
9858
|
+
// Vega colors
|
|
9859
|
+
document.documentElement.style.setProperty('--mito-theme-vega-background', '#1e1e1e');
|
|
9860
|
+
}
|
|
9861
|
+
}
|
|
9862
|
+
|
|
9863
|
+
|
|
9283
9864
|
/***/ }),
|
|
9284
9865
|
|
|
9285
9866
|
/***/ "./lib/Extensions/NotebookFooter/NotebookFooter.js":
|
|
@@ -12386,47 +12967,124 @@ const MODEL_MAPPINGS = [
|
|
|
12386
12967
|
complexityHandling: 'High'
|
|
12387
12968
|
}
|
|
12388
12969
|
];
|
|
12389
|
-
|
|
12970
|
+
// Removed ALL_MODEL_DISPLAY_NAMES - now using availableModels from backend
|
|
12390
12971
|
// Maximum length for displayed model name before truncating
|
|
12391
12972
|
const DEFAULT_MODEL = _utils_models__WEBPACK_IMPORTED_MODULE_3__.CLAUDE_HAIKU_DISPLAY_NAME;
|
|
12392
12973
|
const ModelSelector = ({ onConfigChange }) => {
|
|
12393
12974
|
const [selectedModel, setSelectedModel] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(DEFAULT_MODEL);
|
|
12394
12975
|
const [isOpen, setIsOpen] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
12395
12976
|
const [hoveredModel, setHoveredModel] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);
|
|
12977
|
+
const [availableModels, setAvailableModels] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);
|
|
12978
|
+
const [isLoadingModels, setIsLoadingModels] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);
|
|
12396
12979
|
const dropdownRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
|
|
12397
|
-
//
|
|
12980
|
+
// Fetch available models from backend on mount
|
|
12398
12981
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
12399
|
-
|
|
12400
|
-
|
|
12401
|
-
let fullModelName;
|
|
12402
|
-
let displayName;
|
|
12403
|
-
if (storedConfig) {
|
|
12982
|
+
const fetchModels = async () => {
|
|
12983
|
+
var _a, _b;
|
|
12404
12984
|
try {
|
|
12405
|
-
|
|
12406
|
-
|
|
12407
|
-
|
|
12985
|
+
setIsLoadingModels(true);
|
|
12986
|
+
const models = await (0,_utils_models__WEBPACK_IMPORTED_MODULE_3__.getAvailableModels)();
|
|
12987
|
+
setAvailableModels(models);
|
|
12988
|
+
// Load config from localStorage and validate against available models
|
|
12989
|
+
const storedConfig = localStorage.getItem('llmModelConfig');
|
|
12990
|
+
let fullModelName;
|
|
12991
|
+
let displayName;
|
|
12992
|
+
if (storedConfig) {
|
|
12993
|
+
try {
|
|
12994
|
+
const parsedConfig = JSON.parse(storedConfig);
|
|
12995
|
+
const storedModel = parsedConfig.model;
|
|
12996
|
+
if (storedModel && typeof storedModel === 'string') {
|
|
12997
|
+
fullModelName = storedModel;
|
|
12998
|
+
// Check if model is in available models list
|
|
12999
|
+
if (models.includes(fullModelName)) {
|
|
13000
|
+
// Check if it's a LiteLLM model (has provider prefix)
|
|
13001
|
+
if (fullModelName.includes('/')) {
|
|
13002
|
+
// LiteLLM model - use model name directly as display name
|
|
13003
|
+
displayName = fullModelName;
|
|
13004
|
+
}
|
|
13005
|
+
else {
|
|
13006
|
+
// Standard model - find display name from MODEL_MAPPINGS
|
|
13007
|
+
displayName = (_a = MODEL_MAPPINGS.find(m => m.fullName === fullModelName)) === null || _a === void 0 ? void 0 : _a.displayName;
|
|
13008
|
+
}
|
|
13009
|
+
}
|
|
13010
|
+
}
|
|
13011
|
+
}
|
|
13012
|
+
catch (e) {
|
|
13013
|
+
console.error('Failed to parse stored LLM config', e);
|
|
13014
|
+
}
|
|
13015
|
+
}
|
|
13016
|
+
// Fallback to default model or first available model if not found or invalid
|
|
13017
|
+
if (!fullModelName || !displayName || (fullModelName && !models.includes(fullModelName))) {
|
|
13018
|
+
if (models.length > 0) {
|
|
13019
|
+
// First, try to use the default model if it's available
|
|
13020
|
+
const defaultMapping = MODEL_MAPPINGS.find(m => m.displayName === DEFAULT_MODEL);
|
|
13021
|
+
if (defaultMapping && models.includes(defaultMapping.fullName)) {
|
|
13022
|
+
fullModelName = defaultMapping.fullName;
|
|
13023
|
+
displayName = defaultMapping.displayName;
|
|
13024
|
+
}
|
|
13025
|
+
else {
|
|
13026
|
+
// Fallback to first available model
|
|
13027
|
+
const firstModel = models[0];
|
|
13028
|
+
fullModelName = firstModel;
|
|
13029
|
+
// Check if it's a LiteLLM model
|
|
13030
|
+
if (firstModel && firstModel.includes('/')) {
|
|
13031
|
+
displayName = firstModel;
|
|
13032
|
+
}
|
|
13033
|
+
else {
|
|
13034
|
+
displayName = ((_b = MODEL_MAPPINGS.find(m => m.fullName === firstModel)) === null || _b === void 0 ? void 0 : _b.displayName) || firstModel;
|
|
13035
|
+
}
|
|
13036
|
+
}
|
|
13037
|
+
}
|
|
13038
|
+
else {
|
|
13039
|
+
// Fallback to default if no models available
|
|
13040
|
+
const defaultMapping = MODEL_MAPPINGS.find(m => m.displayName === DEFAULT_MODEL) || MODEL_MAPPINGS[0];
|
|
13041
|
+
if (defaultMapping) {
|
|
13042
|
+
fullModelName = defaultMapping.fullName;
|
|
13043
|
+
displayName = defaultMapping.displayName;
|
|
13044
|
+
}
|
|
13045
|
+
else {
|
|
13046
|
+
// Ultimate fallback
|
|
13047
|
+
fullModelName = _utils_models__WEBPACK_IMPORTED_MODULE_3__.GPT_4_1_MODEL_NAME;
|
|
13048
|
+
displayName = _utils_models__WEBPACK_IMPORTED_MODULE_3__.GPT_4_1_DISPLAY_NAME;
|
|
13049
|
+
}
|
|
13050
|
+
}
|
|
13051
|
+
}
|
|
13052
|
+
if (displayName && fullModelName) {
|
|
13053
|
+
setSelectedModel(displayName);
|
|
13054
|
+
onConfigChange({ model: fullModelName });
|
|
13055
|
+
}
|
|
12408
13056
|
}
|
|
12409
|
-
catch (
|
|
12410
|
-
console.error('Failed to
|
|
13057
|
+
catch (error) {
|
|
13058
|
+
console.error('Failed to fetch available models:', error);
|
|
13059
|
+
// Fallback to default models
|
|
13060
|
+
const defaultMapping = MODEL_MAPPINGS.find(m => m.displayName === DEFAULT_MODEL) || MODEL_MAPPINGS[0];
|
|
13061
|
+
setSelectedModel(defaultMapping.displayName);
|
|
13062
|
+
onConfigChange({ model: defaultMapping.fullName });
|
|
12411
13063
|
}
|
|
12412
|
-
|
|
12413
|
-
|
|
12414
|
-
|
|
12415
|
-
|
|
12416
|
-
|
|
12417
|
-
}
|
|
12418
|
-
if (!fullModelName || !displayName) {
|
|
12419
|
-
fullModelName = defaultMapping.fullName;
|
|
12420
|
-
displayName = defaultMapping.displayName;
|
|
12421
|
-
}
|
|
12422
|
-
setSelectedModel(displayName);
|
|
12423
|
-
onConfigChange({ model: fullModelName });
|
|
13064
|
+
finally {
|
|
13065
|
+
setIsLoadingModels(false);
|
|
13066
|
+
}
|
|
13067
|
+
};
|
|
13068
|
+
void fetchModels();
|
|
12424
13069
|
}, [onConfigChange]);
|
|
12425
|
-
const handleModelChange = (
|
|
13070
|
+
const handleModelChange = (modelName) => {
|
|
12426
13071
|
var _a;
|
|
12427
|
-
|
|
13072
|
+
if (!modelName) {
|
|
13073
|
+
return;
|
|
13074
|
+
}
|
|
13075
|
+
setSelectedModel(modelName);
|
|
12428
13076
|
setIsOpen(false);
|
|
12429
|
-
|
|
13077
|
+
// For LiteLLM models (with provider prefix), modelName is already the full model name
|
|
13078
|
+
// For standard models, we need to find the full name from MODEL_MAPPINGS
|
|
13079
|
+
let fullModelName;
|
|
13080
|
+
if (modelName.includes('/')) {
|
|
13081
|
+
// LiteLLM model - use model name directly
|
|
13082
|
+
fullModelName = modelName;
|
|
13083
|
+
}
|
|
13084
|
+
else {
|
|
13085
|
+
// Standard model - find full name from MODEL_MAPPINGS
|
|
13086
|
+
fullModelName = ((_a = MODEL_MAPPINGS.find(m => m.displayName === modelName)) === null || _a === void 0 ? void 0 : _a.fullName) || modelName;
|
|
13087
|
+
}
|
|
12430
13088
|
const newConfig = {
|
|
12431
13089
|
model: fullModelName
|
|
12432
13090
|
};
|
|
@@ -12466,18 +13124,30 @@ const ModelSelector = ({ onConfigChange }) => {
|
|
|
12466
13124
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons_NucleausIcon__WEBPACK_IMPORTED_MODULE_4__["default"], { height: 10, width: 10 })),
|
|
12467
13125
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", { className: "model-name" }, selectedModel),
|
|
12468
13126
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", { className: "dropdown-arrow" }, "\u25BC")),
|
|
12469
|
-
isOpen && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: `model-options dropup`, style: { minWidth: '150px' }, onMouseLeave: () => setHoveredModel(null) },
|
|
12470
|
-
|
|
12471
|
-
|
|
13127
|
+
isOpen && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: `model-options dropup`, style: { minWidth: '150px' }, onMouseLeave: () => setHoveredModel(null) }, isLoadingModels ? (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "model-option" }, "Loading models...")) : (availableModels.map(modelName => {
|
|
13128
|
+
// Check if it's a LiteLLM model (has provider prefix)
|
|
13129
|
+
const isLiteLLMModel = modelName.includes('/');
|
|
13130
|
+
let displayName;
|
|
13131
|
+
let modelMapping;
|
|
13132
|
+
if (isLiteLLMModel) {
|
|
13133
|
+
// LiteLLM model - use model name directly as display name
|
|
13134
|
+
displayName = modelName;
|
|
13135
|
+
}
|
|
13136
|
+
else {
|
|
13137
|
+
// Standard model - find display name from MODEL_MAPPINGS
|
|
13138
|
+
modelMapping = MODEL_MAPPINGS.find(m => m.fullName === modelName);
|
|
13139
|
+
displayName = (modelMapping === null || modelMapping === void 0 ? void 0 : modelMapping.displayName) || modelName;
|
|
13140
|
+
}
|
|
13141
|
+
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { key: modelName, className: `model-option ${displayName === selectedModel ? 'selected' : ''}`, onClick: (e) => {
|
|
12472
13142
|
e.stopPropagation();
|
|
12473
|
-
handleModelChange(
|
|
13143
|
+
handleModelChange(displayName);
|
|
12474
13144
|
}, onMouseEnter: () => setHoveredModel(modelMapping || null), "data-testid": "model-option" },
|
|
12475
|
-
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", { className: "model-option-name" },
|
|
13145
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", { className: "model-option-name" }, displayName),
|
|
12476
13146
|
(modelMapping === null || modelMapping === void 0 ? void 0 : modelMapping.type) === 'smart' && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", { className: "model-type-icon" },
|
|
12477
13147
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons_BrainIcon__WEBPACK_IMPORTED_MODULE_5__["default"], { height: 12, width: 12 }))),
|
|
12478
13148
|
(modelMapping === null || modelMapping === void 0 ? void 0 : modelMapping.type) === 'fast' && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", { className: "model-type-icon" },
|
|
12479
13149
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons_LightningIcon__WEBPACK_IMPORTED_MODULE_6__["default"], { height: 12, width: 12 })))));
|
|
12480
|
-
})))),
|
|
13150
|
+
}))))),
|
|
12481
13151
|
isOpen && hoveredModel && react_dom__WEBPACK_IMPORTED_MODULE_1___default().createPortal(react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "model-tooltip" },
|
|
12482
13152
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "model-tooltip-content" },
|
|
12483
13153
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "model-tooltip-header" },
|
|
@@ -12499,7 +13169,14 @@ const ModelSelector = ({ onConfigChange }) => {
|
|
|
12499
13169
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", { className: "model-tooltip-metadata-value" }, hoveredModel.complexityHandling)))),
|
|
12500
13170
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "model-tooltip-section" },
|
|
12501
13171
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "model-tooltip-section-label" }, "Good For:"),
|
|
12502
|
-
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("ul", { className: "model-tooltip-bullet-list" }, hoveredModel.goodFor.map((item, index) => (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", { key: index, className: "model-tooltip-bullet-item" }, item))))))), document.body)
|
|
13172
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("ul", { className: "model-tooltip-bullet-list" }, hoveredModel.goodFor.map((item, index) => (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", { key: index, className: "model-tooltip-bullet-item" }, item))))))), document.body),
|
|
13173
|
+
isOpen && !hoveredModel && selectedModel.includes('/') && react_dom__WEBPACK_IMPORTED_MODULE_1___default().createPortal(react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "model-tooltip" },
|
|
13174
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "model-tooltip-content" },
|
|
13175
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "model-tooltip-header" },
|
|
13176
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "model-tooltip-title-row" },
|
|
13177
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "model-tooltip-title" }, selectedModel))),
|
|
13178
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "model-tooltip-section" },
|
|
13179
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "model-tooltip-section-label" }, "No additional information available")))), document.body)));
|
|
12503
13180
|
};
|
|
12504
13181
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ModelSelector);
|
|
12505
13182
|
|
|
@@ -14319,7 +14996,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
14319
14996
|
/* harmony import */ var _Extensions_SettingsManager_SettingsManagerPlugin__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Extensions/SettingsManager/SettingsManagerPlugin */ "./lib/Extensions/SettingsManager/SettingsManagerPlugin.js");
|
|
14320
14997
|
/* harmony import */ var _Extensions_VersionCheck__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Extensions/VersionCheck */ "./lib/Extensions/VersionCheck/index.js");
|
|
14321
14998
|
/* harmony import */ var _Extensions_NotebookFooter__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Extensions/NotebookFooter */ "./lib/Extensions/NotebookFooter/index.js");
|
|
14322
|
-
/* harmony import */ var
|
|
14999
|
+
/* harmony import */ var _Extensions_MitoThemes__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Extensions/MitoThemes */ "./lib/Extensions/MitoThemes/index.js");
|
|
14323
15000
|
/* harmony import */ var _Extensions_AppManager_ManageAppsPlugin__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./Extensions/AppManager/ManageAppsPlugin */ "./lib/Extensions/AppManager/ManageAppsPlugin.js");
|
|
14324
15001
|
/* harmony import */ var _Extensions_ChartWizard_ChartWizardPlugin__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./Extensions/ChartWizard/ChartWizardPlugin */ "./lib/Extensions/ChartWizard/ChartWizardPlugin.js");
|
|
14325
15002
|
/*
|
|
@@ -14355,7 +15032,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
14355
15032
|
_Extensions_VersionCheck__WEBPACK_IMPORTED_MODULE_9__.versionCheckPlugin,
|
|
14356
15033
|
_Extensions_NotebookFooter__WEBPACK_IMPORTED_MODULE_10__["default"],
|
|
14357
15034
|
_Extensions_AppManager_ManageAppsPlugin__WEBPACK_IMPORTED_MODULE_11__["default"],
|
|
14358
|
-
|
|
15035
|
+
_Extensions_MitoThemes__WEBPACK_IMPORTED_MODULE_12__["default"],
|
|
14359
15036
|
_Extensions_ChartWizard_ChartWizardPlugin__WEBPACK_IMPORTED_MODULE_13__["default"]
|
|
14360
15037
|
]);
|
|
14361
15038
|
|
|
@@ -14370,6 +15047,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
14370
15047
|
|
|
14371
15048
|
__webpack_require__.r(__webpack_exports__);
|
|
14372
15049
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
15050
|
+
/* harmony export */ addChartField: () => (/* binding */ addChartField),
|
|
14373
15051
|
/* harmony export */ convertChartCode: () => (/* binding */ convertChartCode),
|
|
14374
15052
|
/* harmony export */ getChatHistoryThread: () => (/* binding */ getChatHistoryThread),
|
|
14375
15053
|
/* harmony export */ getChatHistoryThreads: () => (/* binding */ getChatHistoryThreads),
|
|
@@ -14534,7 +15212,7 @@ CHART WIZARD ENDPOINTS
|
|
|
14534
15212
|
|
|
14535
15213
|
************************************/
|
|
14536
15214
|
const convertChartCode = async (code) => {
|
|
14537
|
-
const resp = await (0,_utils__WEBPACK_IMPORTED_MODULE_0__.requestAPI)('chart-wizard', {
|
|
15215
|
+
const resp = await (0,_utils__WEBPACK_IMPORTED_MODULE_0__.requestAPI)('chart-wizard/convert', {
|
|
14538
15216
|
method: 'POST',
|
|
14539
15217
|
body: JSON.stringify({ code }),
|
|
14540
15218
|
});
|
|
@@ -14543,6 +15221,20 @@ const convertChartCode = async (code) => {
|
|
|
14543
15221
|
}
|
|
14544
15222
|
return resp.data;
|
|
14545
15223
|
};
|
|
15224
|
+
const addChartField = async (code, userDescription, existingVariables) => {
|
|
15225
|
+
const resp = await (0,_utils__WEBPACK_IMPORTED_MODULE_0__.requestAPI)('chart-wizard/add-field', {
|
|
15226
|
+
method: 'POST',
|
|
15227
|
+
body: JSON.stringify({
|
|
15228
|
+
code,
|
|
15229
|
+
user_description: userDescription,
|
|
15230
|
+
existing_variables: existingVariables
|
|
15231
|
+
}),
|
|
15232
|
+
});
|
|
15233
|
+
if (resp.error) {
|
|
15234
|
+
throw new Error(resp.error.message);
|
|
15235
|
+
}
|
|
15236
|
+
return resp.data;
|
|
15237
|
+
};
|
|
14546
15238
|
const getChatHistoryThreads = async () => {
|
|
14547
15239
|
var _a;
|
|
14548
15240
|
const resp = await (0,_utils__WEBPACK_IMPORTED_MODULE_0__.requestAPI)('chat-history/threads');
|
|
@@ -16026,7 +16718,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
16026
16718
|
/* harmony export */ GPT_4_1_DISPLAY_NAME: () => (/* binding */ GPT_4_1_DISPLAY_NAME),
|
|
16027
16719
|
/* harmony export */ GPT_4_1_MODEL_NAME: () => (/* binding */ GPT_4_1_MODEL_NAME),
|
|
16028
16720
|
/* harmony export */ GPT_5_2_DISPLAY_NAME: () => (/* binding */ GPT_5_2_DISPLAY_NAME),
|
|
16029
|
-
/* harmony export */ GPT_5_2_MODEL_NAME: () => (/* binding */ GPT_5_2_MODEL_NAME)
|
|
16721
|
+
/* harmony export */ GPT_5_2_MODEL_NAME: () => (/* binding */ GPT_5_2_MODEL_NAME),
|
|
16722
|
+
/* harmony export */ getAvailableModels: () => (/* binding */ getAvailableModels)
|
|
16030
16723
|
/* harmony export */ });
|
|
16031
16724
|
/*
|
|
16032
16725
|
* Copyright (c) Saga Inc.
|
|
@@ -16044,6 +16737,33 @@ const GEMINI_3_FLASH_DISPLAY_NAME = 'Gemini 3 Flash';
|
|
|
16044
16737
|
const GEMINI_3_FLASH_MODEL_NAME = 'gemini-3-flash-preview';
|
|
16045
16738
|
const GEMINI_3_PRO_DISPLAY_NAME = 'Gemini 3 Pro';
|
|
16046
16739
|
const GEMINI_3_PRO_MODEL_NAME = 'gemini-3-pro-preview';
|
|
16740
|
+
/**
|
|
16741
|
+
* Fetch available models from the backend API.
|
|
16742
|
+
* Returns the list of model names that are available based on enterprise mode and LiteLLM configuration.
|
|
16743
|
+
*
|
|
16744
|
+
* @returns Promise resolving to an array of model names
|
|
16745
|
+
*/
|
|
16746
|
+
async function getAvailableModels() {
|
|
16747
|
+
var _a;
|
|
16748
|
+
// Lazy import to avoid loading JupyterLab dependencies when only constants are needed
|
|
16749
|
+
const { requestAPI } = await Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../restAPI/utils */ "./lib/restAPI/utils.js"));
|
|
16750
|
+
const response = await requestAPI('available-models', {
|
|
16751
|
+
method: 'GET'
|
|
16752
|
+
});
|
|
16753
|
+
if (response.error) {
|
|
16754
|
+
console.error('Failed to fetch available models:', response.error.message);
|
|
16755
|
+
// Return default models as fallback
|
|
16756
|
+
return [
|
|
16757
|
+
GPT_4_1_MODEL_NAME,
|
|
16758
|
+
GPT_5_2_MODEL_NAME,
|
|
16759
|
+
CLAUDE_SONNET_MODEL_NAME,
|
|
16760
|
+
CLAUDE_HAIKU_MODEL_NAME,
|
|
16761
|
+
GEMINI_3_FLASH_MODEL_NAME,
|
|
16762
|
+
GEMINI_3_PRO_MODEL_NAME,
|
|
16763
|
+
];
|
|
16764
|
+
}
|
|
16765
|
+
return ((_a = response.data) === null || _a === void 0 ? void 0 : _a.models) || [];
|
|
16766
|
+
}
|
|
16047
16767
|
|
|
16048
16768
|
|
|
16049
16769
|
/***/ }),
|
|
@@ -17973,6 +18693,59 @@ class CompletionWebsocketClient extends _BaseWebsocketClient__WEBPACK_IMPORTED_M
|
|
|
17973
18693
|
}
|
|
17974
18694
|
|
|
17975
18695
|
|
|
18696
|
+
/***/ }),
|
|
18697
|
+
|
|
18698
|
+
/***/ "./node_modules/css-loader/dist/cjs.js!./style/AddFieldButton.css":
|
|
18699
|
+
/*!************************************************************************!*\
|
|
18700
|
+
!*** ./node_modules/css-loader/dist/cjs.js!./style/AddFieldButton.css ***!
|
|
18701
|
+
\************************************************************************/
|
|
18702
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
18703
|
+
|
|
18704
|
+
__webpack_require__.r(__webpack_exports__);
|
|
18705
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
18706
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
18707
|
+
/* harmony export */ });
|
|
18708
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
|
|
18709
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
18710
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
|
|
18711
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
18712
|
+
// Imports
|
|
18713
|
+
|
|
18714
|
+
|
|
18715
|
+
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
|
18716
|
+
// Module
|
|
18717
|
+
___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
18718
|
+
* Copyright (c) Saga Inc.
|
|
18719
|
+
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
18720
|
+
*/
|
|
18721
|
+
|
|
18722
|
+
.add-field-container {
|
|
18723
|
+
margin-top: 16px;
|
|
18724
|
+
padding-top: 16px;
|
|
18725
|
+
border-top: 1px solid #e0e0e0;
|
|
18726
|
+
}
|
|
18727
|
+
|
|
18728
|
+
.add-field-button {
|
|
18729
|
+
width: 100%;
|
|
18730
|
+
}
|
|
18731
|
+
|
|
18732
|
+
.add-field-dialog-textarea {
|
|
18733
|
+
width: 100%;
|
|
18734
|
+
padding: 8px;
|
|
18735
|
+
margin-top: 10px;
|
|
18736
|
+
font-size: 14px;
|
|
18737
|
+
border: 1px solid #ccc;
|
|
18738
|
+
border-radius: 4px;
|
|
18739
|
+
min-height: 100px;
|
|
18740
|
+
resize: vertical;
|
|
18741
|
+
font-family: inherit;
|
|
18742
|
+
box-sizing: border-box;
|
|
18743
|
+
}
|
|
18744
|
+
`, "",{"version":3,"sources":["webpack://./style/AddFieldButton.css"],"names":[],"mappings":"AAAA;;;EAGE;;AAEF;IACI,gBAAgB;IAChB,iBAAiB;IACjB,6BAA6B;AACjC;;AAEA;IACI,WAAW;AACf;;AAEA;IACI,WAAW;IACX,YAAY;IACZ,gBAAgB;IAChB,eAAe;IACf,sBAAsB;IACtB,kBAAkB;IAClB,iBAAiB;IACjB,gBAAgB;IAChB,oBAAoB;IACpB,sBAAsB;AAC1B","sourcesContent":["/*\n * Copyright (c) Saga Inc.\n * Distributed under the terms of the GNU Affero General Public License v3.0 License.\n */\n\n.add-field-container {\n margin-top: 16px;\n padding-top: 16px;\n border-top: 1px solid #e0e0e0;\n}\n\n.add-field-button {\n width: 100%;\n}\n\n.add-field-dialog-textarea {\n width: 100%;\n padding: 8px;\n margin-top: 10px;\n font-size: 14px;\n border: 1px solid #ccc;\n border-radius: 4px;\n min-height: 100px;\n resize: vertical;\n font-family: inherit;\n box-sizing: border-box;\n}\n"],"sourceRoot":""}]);
|
|
18745
|
+
// Exports
|
|
18746
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
18747
|
+
|
|
18748
|
+
|
|
17976
18749
|
/***/ }),
|
|
17977
18750
|
|
|
17978
18751
|
/***/ "./node_modules/css-loader/dist/cjs.js!./style/AgentChangeControls.css":
|
|
@@ -19800,7 +20573,71 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
19800
20573
|
display: inline-block;
|
|
19801
20574
|
min-width: 1.5em;
|
|
19802
20575
|
text-align: left;
|
|
19803
|
-
}
|
|
20576
|
+
}
|
|
20577
|
+
|
|
20578
|
+
.chart-wizard-overlay {
|
|
20579
|
+
position: absolute;
|
|
20580
|
+
top: 0;
|
|
20581
|
+
left: 0;
|
|
20582
|
+
right: 0;
|
|
20583
|
+
/* Height is set dynamically via inline style to cover full scrollable content */
|
|
20584
|
+
min-height: 100%;
|
|
20585
|
+
background-color: rgba(255, 255, 255, 0.8);
|
|
20586
|
+
display: flex;
|
|
20587
|
+
align-items: center;
|
|
20588
|
+
justify-content: center;
|
|
20589
|
+
z-index: 1000;
|
|
20590
|
+
pointer-events: all;
|
|
20591
|
+
}
|
|
20592
|
+
|
|
20593
|
+
.chart-wizard-overlay-text {
|
|
20594
|
+
font-size: 16px;
|
|
20595
|
+
font-weight: 500;
|
|
20596
|
+
color: #333;
|
|
20597
|
+
}
|
|
20598
|
+
|
|
20599
|
+
.chart-wizard-warning {
|
|
20600
|
+
background-color: var(--yellow-100);
|
|
20601
|
+
color: var(--yellow-900);
|
|
20602
|
+
padding: 10px 12px;
|
|
20603
|
+
border-radius: 4px;
|
|
20604
|
+
margin-bottom: 15px;
|
|
20605
|
+
font-size: 13px;
|
|
20606
|
+
line-height: 1.4;
|
|
20607
|
+
border: 1px solid var(--yellow-300);
|
|
20608
|
+
display: flex;
|
|
20609
|
+
flex-direction: column;
|
|
20610
|
+
gap: 10px;
|
|
20611
|
+
}
|
|
20612
|
+
|
|
20613
|
+
.chart-wizard-warning-content {
|
|
20614
|
+
flex: 1;
|
|
20615
|
+
}
|
|
20616
|
+
|
|
20617
|
+
.chart-wizard-warning strong {
|
|
20618
|
+
font-weight: 600;
|
|
20619
|
+
}
|
|
20620
|
+
|
|
20621
|
+
.chart-wizard-warning-button {
|
|
20622
|
+
background-color: var(--yellow-600);
|
|
20623
|
+
color: var(--yellow-900);
|
|
20624
|
+
border: none;
|
|
20625
|
+
padding: 6px 12px;
|
|
20626
|
+
border-radius: 4px;
|
|
20627
|
+
font-size: 12px;
|
|
20628
|
+
font-weight: 500;
|
|
20629
|
+
cursor: pointer;
|
|
20630
|
+
align-self: flex-start;
|
|
20631
|
+
transition: background-color 0.2s ease;
|
|
20632
|
+
}
|
|
20633
|
+
|
|
20634
|
+
.chart-wizard-warning-button:hover {
|
|
20635
|
+
background-color: var(--yellow-500);
|
|
20636
|
+
}
|
|
20637
|
+
|
|
20638
|
+
.chart-wizard-warning-button:active {
|
|
20639
|
+
background-color: var(--yellow-300);
|
|
20640
|
+
}`, "",{"version":3,"sources":["webpack://./style/ChartWizardWidget.css"],"names":[],"mappings":"AAAA;;;EAGE;;AAEF;IACI,aAAa;IACb,YAAY;IACZ,gBAAgB;IAChB,aAAa;IACb,sBAAsB;IACtB,sBAAsB;AAC1B;;AAEA;IACI,aAAa;IACb,sBAAsB;IACtB,mBAAmB;IACnB,QAAQ;AACZ;;AAEA;IACI,mBAAmB;IACnB,mBAAmB;IACnB,8BAA8B;IAC9B,mBAAmB;IACnB,SAAS;AACb;;AAEA;IACI,oCAAoC;IACpC,eAAe;IACf,gBAAgB;IAChB,oBAAoB;AACxB;;AAEA;IACI,OAAO;IACP,SAAS;IACT,eAAe;AACnB;;AAEA;IACI,kBAAkB;IAClB,oBAAoB;IACpB,mBAAmB;IACnB,eAAe;IACf,cAAc;AAClB;;AAEA;IACI,kBAAkB;IAClB,UAAU;IACV,eAAe;IACf,QAAQ;IACR,SAAS;IACT,SAAS;AACb;;AAEA;IACI,kBAAkB;IAClB,qBAAqB;IACrB,WAAW;IACX,YAAY;IACZ,yCAAyC;IACzC,mBAAmB;IACnB,sCAAsC;IACtC,sBAAsB;AAC1B;;AAEA;IACI,WAAW;IACX,kBAAkB;IAClB,WAAW;IACX,YAAY;IACZ,SAAS;IACT,QAAQ;IACR,uBAAuB;IACvB,kBAAkB;IAClB,+BAA+B;IAC/B,wCAAwC;AAC5C;;AAEA;IACI,wCAAwC;AAC5C;;AAEA;IACI,2BAA2B;AAC/B;;AAEA;IACI,6CAA6C;AACjD;;AAEA;IACI,yCAAyC;AAC7C;;AAEA;IACI,wCAAwC;AAC5C;;AAEA;;;;IAII,WAAW;IACX,sBAAsB;AAC1B;;AAEA;IACI,aAAa;IACb,QAAQ;IACR,WAAW;AACf;;AAEA;IACI,cAAc;AAClB;;AAEA;IACI,OAAO;AACX;;AAEA;IACI,aAAa;IACb,mBAAmB;IACnB,QAAQ;IACR,WAAW;AACf;;AAEA;IACI,OAAO;AACX;;AAEA;IACI,OAAO;IACP,aAAa;AACjB;;AAEA;;IAEI,OAAO;IACP,aAAa;IACb,sBAAsB;IACtB,uBAAuB;AAC3B;;AAEA;IACI,kBAAkB;AACtB;;AAEA;IACI,qBAAqB;IACrB,gBAAgB;IAChB,gBAAgB;AACpB;;AAEA;IACI,kBAAkB;IAClB,MAAM;IACN,OAAO;IACP,QAAQ;IACR,gFAAgF;IAChF,gBAAgB;IAChB,0CAA0C;IAC1C,aAAa;IACb,mBAAmB;IACnB,uBAAuB;IACvB,aAAa;IACb,mBAAmB;AACvB;;AAEA;IACI,eAAe;IACf,gBAAgB;IAChB,WAAW;AACf;;AAEA;IACI,mCAAmC;IACnC,wBAAwB;IACxB,kBAAkB;IAClB,kBAAkB;IAClB,mBAAmB;IACnB,eAAe;IACf,gBAAgB;IAChB,mCAAmC;IACnC,aAAa;IACb,sBAAsB;IACtB,SAAS;AACb;;AAEA;IACI,OAAO;AACX;;AAEA;IACI,gBAAgB;AACpB;;AAEA;IACI,mCAAmC;IACnC,wBAAwB;IACxB,YAAY;IACZ,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,sBAAsB;IACtB,sCAAsC;AAC1C;;AAEA;IACI,mCAAmC;AACvC;;AAEA;IACI,mCAAmC;AACvC","sourcesContent":["/*\n * Copyright (c) Saga Inc.\n * Distributed under the terms of the GNU Affero General Public License v3.0 License.\n */\n\n.chart-wizard-widget {\n padding: 10px;\n height: 100%;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n}\n\n.chart-wizard-input-row {\n display: flex;\n flex-direction: column;\n margin-bottom: 15px;\n gap: 5px;\n}\n\n.chart-wizard-boolean-row {\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n gap: 12px;\n}\n\n.chart-wizard-input-label {\n color: var(--jp-content-font-color2);\n font-size: 12px;\n font-weight: 500;\n text-transform: none;\n}\n\n.chart-wizard-boolean-label {\n flex: 1;\n margin: 0;\n cursor: pointer;\n}\n\n.chart-wizard-toggle-container {\n position: relative;\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n flex-shrink: 0;\n}\n\n.chart-wizard-toggle-input {\n position: absolute;\n opacity: 0;\n cursor: pointer;\n width: 0;\n height: 0;\n margin: 0;\n}\n\n.chart-wizard-toggle-slider {\n position: relative;\n display: inline-block;\n width: 44px;\n height: 24px;\n background-color: var(--jp-border-color2);\n border-radius: 12px;\n transition: background-color 0.3s ease;\n box-sizing: border-box;\n}\n\n.chart-wizard-toggle-slider::before {\n content: '';\n position: absolute;\n width: 20px;\n height: 20px;\n left: 2px;\n top: 2px;\n background-color: white;\n border-radius: 50%;\n transition: transform 0.3s ease;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n}\n\n.chart-wizard-toggle-input:checked + .chart-wizard-toggle-slider {\n background-color: var(--jp-brand-color1);\n}\n\n.chart-wizard-toggle-input:checked + .chart-wizard-toggle-slider::before {\n transform: translateX(20px);\n}\n\n.chart-wizard-toggle-input:focus + .chart-wizard-toggle-slider {\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.2);\n}\n\n.chart-wizard-toggle-input:hover + .chart-wizard-toggle-slider {\n background-color: var(--jp-border-color1);\n}\n\n.chart-wizard-toggle-input:checked:hover + .chart-wizard-toggle-slider {\n background-color: var(--jp-brand-color0);\n}\n\n.chart-wizard-number-input,\n.chart-wizard-text-input,\n.chart-wizard-color-input,\n.chart-wizard-tuple-input {\n width: 100%;\n box-sizing: border-box;\n}\n\n.chart-wizard-color-container {\n display: flex;\n gap: 8px;\n width: 100%;\n}\n\n.chart-wizard-color-picker {\n flex-shrink: 0;\n}\n\n.chart-wizard-color-input {\n flex: 1;\n}\n\n.chart-wizard-tuple-container {\n display: flex;\n align-items: center;\n gap: 5px;\n width: 100%;\n}\n\n.chart-wizard-tuple-input {\n flex: 1;\n}\n\n.chart-wizard-config-container {\n flex: 1;\n min-height: 0;\n}\n\n.chart-wizard-empty-state,\n.chart-wizard-no-config {\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n\n.chart-wizard-no-config p {\n text-align: center;\n}\n\n.chart-wizard-loading-dots {\n display: inline-block;\n min-width: 1.5em;\n text-align: left;\n}\n\n.chart-wizard-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n /* Height is set dynamically via inline style to cover full scrollable content */\n min-height: 100%;\n background-color: rgba(255, 255, 255, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n pointer-events: all;\n}\n\n.chart-wizard-overlay-text {\n font-size: 16px;\n font-weight: 500;\n color: #333;\n}\n\n.chart-wizard-warning {\n background-color: var(--yellow-100);\n color: var(--yellow-900);\n padding: 10px 12px;\n border-radius: 4px;\n margin-bottom: 15px;\n font-size: 13px;\n line-height: 1.4;\n border: 1px solid var(--yellow-300);\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.chart-wizard-warning-content {\n flex: 1;\n}\n\n.chart-wizard-warning strong {\n font-weight: 600;\n}\n\n.chart-wizard-warning-button {\n background-color: var(--yellow-600);\n color: var(--yellow-900);\n border: none;\n padding: 6px 12px;\n border-radius: 4px;\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n align-self: flex-start;\n transition: background-color 0.2s ease;\n}\n\n.chart-wizard-warning-button:hover {\n background-color: var(--yellow-500);\n}\n\n.chart-wizard-warning-button:active {\n background-color: var(--yellow-300);\n}"],"sourceRoot":""}]);
|
|
19804
20641
|
// Exports
|
|
19805
20642
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
19806
20643
|
|
|
@@ -21146,10 +21983,9 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
21146
21983
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
|
|
21147
21984
|
display: flex;
|
|
21148
21985
|
flex-direction: column;
|
|
21149
|
-
min-width:
|
|
21986
|
+
min-width: 225px;
|
|
21150
21987
|
white-space: nowrap;
|
|
21151
21988
|
height: 400px;
|
|
21152
|
-
min-width: 225px;
|
|
21153
21989
|
max-width: 350px;
|
|
21154
21990
|
overflow-y: auto;
|
|
21155
21991
|
}
|
|
@@ -21166,6 +22002,22 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
21166
22002
|
left: auto;
|
|
21167
22003
|
}
|
|
21168
22004
|
|
|
22005
|
+
/* Responsive width based on chat taskpane container width */
|
|
22006
|
+
/* Make dropdown width relative to container width, accounting for padding */
|
|
22007
|
+
/* At minimum taskpane width (350px), dropdown should fit within available space (330px accounting for 20px padding) */
|
|
22008
|
+
@container (max-width: 350px) {
|
|
22009
|
+
.dropdown-menu {
|
|
22010
|
+
max-width: calc(100cqw - 20px);
|
|
22011
|
+
}
|
|
22012
|
+
}
|
|
22013
|
+
|
|
22014
|
+
/* For wider taskpanes, allow dropdown to use up to 350px but still respect container width */
|
|
22015
|
+
@container (min-width: 351px) {
|
|
22016
|
+
.dropdown-menu {
|
|
22017
|
+
max-width: min(350px, calc(100cqw - 20px));
|
|
22018
|
+
}
|
|
22019
|
+
}
|
|
22020
|
+
|
|
21169
22021
|
.dropdown-item-row {
|
|
21170
22022
|
display: flex;
|
|
21171
22023
|
flex-direction: row;
|
|
@@ -21221,7 +22073,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
21221
22073
|
display: flex;
|
|
21222
22074
|
align-items: center;
|
|
21223
22075
|
}
|
|
21224
|
-
`, "",{"version":3,"sources":["webpack://./style/DropdownMenu.css"],"names":[],"mappings":"AAAA;;;EAGE;;AAEF;EACE,kBAAkB;EAClB,qBAAqB;AACvB;;AAEA;EACE,kBAAkB;EAClB,qBAAqB;EACrB,aAAa;EACb,yCAAyC;EACzC,yCAAyC;EACzC,kBAAkB;EAClB,wCAAwC;EACxC,aAAa;EACb,sBAAsB;EACtB,gBAAgB;EAChB,mBAAmB;EACnB,aAAa;EACb,gBAAgB;EAChB,gBAAgB;
|
|
22076
|
+
`, "",{"version":3,"sources":["webpack://./style/DropdownMenu.css"],"names":[],"mappings":"AAAA;;;EAGE;;AAEF;EACE,kBAAkB;EAClB,qBAAqB;AACvB;;AAEA;EACE,kBAAkB;EAClB,qBAAqB;EACrB,aAAa;EACb,yCAAyC;EACzC,yCAAyC;EACzC,kBAAkB;EAClB,wCAAwC;EACxC,aAAa;EACb,sBAAsB;EACtB,gBAAgB;EAChB,mBAAmB;EACnB,aAAa;EACb,gBAAgB;EAChB,gBAAgB;AAClB;;AAEA,0BAA0B;AAC1B;EACE,OAAO;EACP,WAAW;AACb;;AAEA,2BAA2B;AAC3B;EACE,QAAQ;EACR,UAAU;AACZ;;AAEA,4DAA4D;AAC5D,4EAA4E;AAC5E,sHAAsH;AACtH;EACE;IACE,8BAA8B;EAChC;AACF;;AAEA,6FAA6F;AAC7F;EACE;IACE,0CAA0C;EAC5C;AACF;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,8BAA8B;EAC9B,mBAAmB;EACnB,QAAQ;EACR,gBAAgB;EAChB,mBAAmB,EAAE,iDAAiD;AACxE;;AAEA;EACE,yCAAyC;AAC3C;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,mBAAmB;EACnB,gBAAgB;EAChB,YAAY;EACZ,gBAAgB;EAChB,+BAA+B;EAC/B,OAAO;EACP,gBAAgB;EAChB,uBAAuB;EACvB,eAAe;AACjB;;AAEA;EACE,WAAW;EACX,eAAe;EACf,YAAY;EACZ,aAAa;EACb,mBAAmB;EACnB,uBAAuB;AACzB;;AAEA;EACE,iBAAiB,EAAE,2BAA2B;AAChD;;AAEA;EACE,YAAY;EACZ,eAAe;AACjB;;AAEA;;;CAGC;AACD;;EAEE,aAAa;EACb,mBAAmB;AACrB","sourcesContent":["/*\n * Copyright (c) Saga Inc.\n * Distributed under the terms of the GNU Affero General Public License v3.0 License.\n */\n\n.dropdown-container {\n position: relative;\n display: inline-block;\n}\n\n.dropdown-menu {\n position: absolute;\n top: calc(100% + 4px);\n z-index: 1000;\n background-color: var(--jp-layout-color1);\n border: 1px solid var(--jp-layout-color2);\n border-radius: 3px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n display: flex;\n flex-direction: column;\n min-width: 225px;\n white-space: nowrap;\n height: 400px;\n max-width: 350px;\n overflow-y: auto;\n}\n\n/* Left-aligned dropdown */\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n/* Right-aligned dropdown */\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n\n/* Responsive width based on chat taskpane container width */\n/* Make dropdown width relative to container width, accounting for padding */\n/* At minimum taskpane width (350px), dropdown should fit within available space (330px accounting for 20px padding) */\n@container (max-width: 350px) {\n .dropdown-menu {\n max-width: calc(100cqw - 20px);\n }\n}\n\n/* For wider taskpanes, allow dropdown to use up to 350px but still respect container width */\n@container (min-width: 351px) {\n .dropdown-menu {\n max-width: min(350px, calc(100cqw - 20px));\n }\n}\n\n.dropdown-item-row {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n padding: 4px 2px;\n padding-right: 20px; /* Add padding to leave space for the scrollbar */\n}\n\n.dropdown-item-row:hover {\n background-color: var(--jp-layout-color2);\n}\n\n.dropdown-item-main {\n display: flex;\n flex-direction: row;\n align-items: center;\n text-align: left;\n border: none;\n background: none;\n color: var(--jp-ui-font-color1);\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n cursor: pointer;\n}\n\n.dropdown-item-icon {\n width: 20px;\n min-width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.dropdown-item-label {\n padding-left: 3px; /* Add consistent padding */\n}\n\n.dropdown-item-disabled {\n opacity: 0.5;\n cursor: default;\n}\n\n/* \n When using Lab Icons, we seem to get an extra div around the svg icon\n This makes sure the svg is aligned properly in that div\n*/\n.dropdown-item-icon > div, \n.dropdown-item-secondary > div{\n display: flex;\n align-items: center;\n}\n"],"sourceRoot":""}]);
|
|
21225
22077
|
// Exports
|
|
21226
22078
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
21227
22079
|
|
|
@@ -21870,12 +22722,11 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
21870
22722
|
|
|
21871
22723
|
.model-option:hover {
|
|
21872
22724
|
background-color: var(--jp-layout-color2);
|
|
21873
|
-
color: var(--purple-700);
|
|
21874
22725
|
}
|
|
21875
22726
|
|
|
21876
22727
|
.model-option.selected {
|
|
21877
22728
|
background-color: var(--jp-layout-color2);
|
|
21878
|
-
color: var(--
|
|
22729
|
+
color: var(--jp-brand-color2);
|
|
21879
22730
|
}
|
|
21880
22731
|
|
|
21881
22732
|
/* When inside chat-controls - ensure proper alignment with other controls */
|
|
@@ -22031,7 +22882,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
22031
22882
|
|
|
22032
22883
|
.model-tooltip-bullet-item:last-child {
|
|
22033
22884
|
margin-bottom: 0;
|
|
22034
|
-
}`, "",{"version":3,"sources":["webpack://./style/ModelSelector.css"],"names":[],"mappings":"AAAA;;;EAGE;;AAEF,4DAA4D;;AAE5D;EACE,kBAAkB;EAClB,cAAc;EACd,aAAa;EACb,YAAY,EAAE,mCAAmC;EACjD,aAAa;EACb,mBAAmB,EAAE,sBAAsB;EAC3C,+BAA+B;AACjC;;AAEA;EACE,+BAA+B;AACjC;;AAEA;EACE,kBAAkB;EAClB,YAAY,EAAE,yCAAyC;EACvD,kBAAkB;EAClB,eAAe;EACf,aAAa;EACb,mBAAmB,EAAE,0CAA0C;EAC/D,kBAAkB;EAClB,eAAe;AACjB;;;AAGA;EACE,aAAa;EACb,mBAAmB;EACnB,8BAA8B;EAC9B,WAAW;EACX,YAAY;EACZ,cAAc;EACd,eAAe;EACf,gBAAgB;EAChB,cAAc;EACd,mBAAmB;EACnB,gBAAgB;EAChB,uBAAuB;AACzB;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,WAAW;EACX,YAAY;EACZ,cAAc;AAChB;;AAEA;EACE,cAAc;EACd,0BAA0B;EAC1B,gBAAgB;EAChB,cAAc,EAAE,iCAAiC;AACnD;;AAEA,2BAA2B;AAC3B;EACE,kBAAkB;EAClB,YAAY;EACZ,iBAAiB;EACjB,gBAAgB;EAChB,yCAAyC;EACzC,yCAAyC;EACzC,kBAAkB;EAClB,kBAAkB;EAClB,yCAAyC;EACzC,aAAa;EACb,WAAW;AACb;;AAEA;EACE,gBAAgB;EAChB,eAAe;EACf,mCAAmC;EACnC,oCAAoC;EACpC,eAAe;EACf,iCAAiC;EACjC,mBAAmB;EACnB,0BAA0B;EAC1B,aAAa;EACb,mBAAmB;EACnB,8BAA8B;EAC9B,QAAQ;AACV;;AAEA;EACE,OAAO;EACP,YAAY;EACZ,gBAAgB;EAChB,uBAAuB;AACzB;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,cAAc;EACd,YAAY;AACd;;AAEA;EACE,yCAAyC;
|
|
22885
|
+
}`, "",{"version":3,"sources":["webpack://./style/ModelSelector.css"],"names":[],"mappings":"AAAA;;;EAGE;;AAEF,4DAA4D;;AAE5D;EACE,kBAAkB;EAClB,cAAc;EACd,aAAa;EACb,YAAY,EAAE,mCAAmC;EACjD,aAAa;EACb,mBAAmB,EAAE,sBAAsB;EAC3C,+BAA+B;AACjC;;AAEA;EACE,+BAA+B;AACjC;;AAEA;EACE,kBAAkB;EAClB,YAAY,EAAE,yCAAyC;EACvD,kBAAkB;EAClB,eAAe;EACf,aAAa;EACb,mBAAmB,EAAE,0CAA0C;EAC/D,kBAAkB;EAClB,eAAe;AACjB;;;AAGA;EACE,aAAa;EACb,mBAAmB;EACnB,8BAA8B;EAC9B,WAAW;EACX,YAAY;EACZ,cAAc;EACd,eAAe;EACf,gBAAgB;EAChB,cAAc;EACd,mBAAmB;EACnB,gBAAgB;EAChB,uBAAuB;AACzB;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,WAAW;EACX,YAAY;EACZ,cAAc;AAChB;;AAEA;EACE,cAAc;EACd,0BAA0B;EAC1B,gBAAgB;EAChB,cAAc,EAAE,iCAAiC;AACnD;;AAEA,2BAA2B;AAC3B;EACE,kBAAkB;EAClB,YAAY;EACZ,iBAAiB;EACjB,gBAAgB;EAChB,yCAAyC;EACzC,yCAAyC;EACzC,kBAAkB;EAClB,kBAAkB;EAClB,yCAAyC;EACzC,aAAa;EACb,WAAW;AACb;;AAEA;EACE,gBAAgB;EAChB,eAAe;EACf,mCAAmC;EACnC,oCAAoC;EACpC,eAAe;EACf,iCAAiC;EACjC,mBAAmB;EACnB,0BAA0B;EAC1B,aAAa;EACb,mBAAmB;EACnB,8BAA8B;EAC9B,QAAQ;AACV;;AAEA;EACE,OAAO;EACP,YAAY;EACZ,gBAAgB;EAChB,uBAAuB;AACzB;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,cAAc;EACd,YAAY;AACd;;AAEA;EACE,yCAAyC;AAC3C;;AAEA;EACE,yCAAyC;EACzC,6BAA6B;AAC/B;;AAEA,4EAA4E;AAC5E;EACE,YAAY;EACZ,aAAa;EACb,mBAAmB;AACrB;;AAEA;EACE,YAAY;EACZ,kBAAkB;AACpB;;AAEA,iDAAiD;AACjD;EACE,aAAa;EACb,wCAAwC;AAC1C;;AAEA;EACE,qBAAqB;EACrB,gBAAgB;EAChB,gBAAgB;EAChB,uBAAuB;EACvB,mBAAmB;EACnB,sBAAsB;AACxB;;AAEA,qDAAqD;AACrD;EACE,aAAa;AACf;;AAEA;EACE,eAAe;AACjB;;AAEA,2CAA2C;AAC3C;;EAEE,uEAAuE;EACvE;IACE,WAAW;EACb;;EAEA;IACE,eAAe;EACjB;;EAEA;IACE,aAAa;EACf;AACF;;AAEA,8EAA8E;AAC9E;EACE,eAAe;EACf,8BAA8B;EAC9B,gCAAgC;EAChC,yCAAyC;EACzC,yCAAyC;EACzC,kBAAkB;EAClB,aAAa;EACb,yCAAyC;EACzC,cAAc,EAAE,kDAAkD;EAClE,YAAY;EACZ,oBAAoB,EAAE,+CAA+C;AACvE;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,SAAS;AACX;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,QAAQ;AACV;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,QAAQ;AACV;;AAEA;EACE,cAAc;EACd,YAAY;EACZ,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,cAAc;AAChB;;AAEA;EACE,eAAe;EACf,gBAAgB;EAChB,oCAAoC;EACpC,gBAAgB;AAClB;;AAEA;EACE,aAAa;EACb,8BAA8B;EAC9B,aAAa;EACb,eAAe;AACjB;;AAEA;EACE,aAAa;EACb,QAAQ;AACV;;AAEA;EACE,oCAAoC;EACpC,gBAAgB;AAClB;;AAEA;EACE,oCAAoC;EACpC,gBAAgB;AAClB;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,QAAQ;AACV;;AAEA;EACE,eAAe;EACf,gBAAgB;EAChB,oCAAoC;EACpC,yBAAyB;EACzB,qBAAqB;AACvB;;AAEA;EACE,SAAS;EACT,kBAAkB;EAClB,qBAAqB;AACvB;;AAEA;EACE,eAAe;EACf,oCAAoC;EACpC,gBAAgB;EAChB,kBAAkB;AACpB;;AAEA;EACE,gBAAgB;AAClB","sourcesContent":["/*\n * Copyright (c) Saga Inc.\n * Distributed under the terms of the GNU Affero General Public License v3.0 License.\n */\n\n/* ModelSelector.css - responsive design with compact mode */\n\n.model-selector {\n position: relative;\n flex: 0 0 auto;\n margin: 0 8px;\n height: 20px; /* Match height of other elements */\n display: flex;\n align-items: center; /* Center vertically */\n color: var(--jp-ui-font-color2);\n}\n\n.model-selector:hover {\n color: var(--jp-ui-font-color1);\n}\n\n.model-selector-dropdown {\n position: relative;\n height: 20px; /* Fixed height to match other elements */\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center; /* Ensure content is vertically centered */\n width: min-content;\n max-width: 18ch;\n}\n\n\n.selected-model {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n height: 100%;\n padding: 0 8px;\n font-size: 12px;\n font-weight: 500;\n line-height: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.model-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n height: 14px;\n line-height: 1;\n}\n\n.dropdown-arrow {\n font-size: 8px;\n transition: transform 0.2s;\n margin-left: 4px;\n flex-shrink: 0; /* Prevent arrow from shrinking */\n}\n\n/* Model options dropdown */\n.model-options {\n position: absolute;\n bottom: 100%;\n max-height: 180px;\n overflow-y: auto;\n background-color: var(--jp-layout-color1);\n border: 1px solid var(--jp-layout-color2);\n border-radius: 4px;\n margin-bottom: 4px;\n box-shadow: 0 -2px 6px rgba(0, 0, 0, 0.1);\n z-index: 1000;\n width: auto;\n}\n\n.model-option {\n padding: 4px 8px;\n font-size: 12px;\n /* Keep this size for readability */\n color: var(--jp-content-font-color1);\n cursor: pointer;\n transition: background-color 0.2s;\n white-space: nowrap;\n /* Prevent text wrapping */\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.model-option-name {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.model-type-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n opacity: 0.7;\n}\n\n.model-option:hover {\n background-color: var(--jp-layout-color2);\n}\n\n.model-option.selected {\n background-color: var(--jp-layout-color2);\n color: var(--jp-brand-color2);\n}\n\n/* When inside chat-controls - ensure proper alignment with other controls */\n.chat-controls .model-selector {\n height: 20px;\n display: flex;\n align-items: center;\n}\n\n.chat-controls .model-selector-dropdown {\n height: 20px;\n align-self: center;\n}\n\n/* Ensure dropdown appears above other elements */\n.model-options {\n z-index: 1010;\n /* Higher z-index to ensure visibility */\n}\n\n.model-name {\n display: inline-block;\n max-width: 120px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n vertical-align: bottom;\n}\n\n/* On wider screens, show only the name of the model*/\n.model-icon {\n display: none;\n}\n\n.model-name {\n display: inline;\n}\n\n/* On compact screens, show only the icon */\n@container (max-width: 260px) {\n\n /* Shift the dropdown to the left to help prevent right-edge overflow */\n .model-options {\n left: -40px;\n }\n\n .model-icon {\n display: inline;\n }\n\n .model-name {\n display: none;\n }\n}\n\n/* Model tooltip - appears to the right of the dropdown, rendered via portal */\n.model-tooltip {\n position: fixed;\n top: var(--tooltip-top, 200px);\n left: var(--tooltip-left, 200px);\n background-color: var(--jp-layout-color1);\n border: 1px solid var(--jp-layout-color2);\n border-radius: 4px;\n padding: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n z-index: 10000; /* High z-index to appear above Jupyter notebook */\n width: 280px;\n pointer-events: none; /* Prevent tooltip from blocking mouse events */\n}\n\n.model-tooltip-content {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.model-tooltip-header {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.model-tooltip-title-row {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.model-tooltip-title-icon {\n flex-shrink: 0;\n opacity: 0.8;\n display: flex;\n align-items: center;\n justify-content: center;\n line-height: 1;\n}\n\n.model-tooltip-title {\n font-size: 14px;\n font-weight: 600;\n color: var(--jp-content-font-color1);\n line-height: 1.2;\n}\n\n.model-tooltip-metadata {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 6px 12px;\n font-size: 11px;\n}\n\n.model-tooltip-metadata-item {\n display: flex;\n gap: 4px;\n}\n\n.model-tooltip-metadata-label {\n color: var(--jp-content-font-color2);\n font-weight: 500;\n}\n\n.model-tooltip-metadata-value {\n color: var(--jp-content-font-color1);\n font-weight: 600;\n}\n\n.model-tooltip-section {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.model-tooltip-section-label {\n font-size: 11px;\n font-weight: 600;\n color: var(--jp-content-font-color1);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.model-tooltip-bullet-list {\n margin: 0;\n padding-left: 16px;\n list-style-type: disc;\n}\n\n.model-tooltip-bullet-item {\n font-size: 12px;\n color: var(--jp-content-font-color2);\n line-height: 1.5;\n margin-bottom: 4px;\n}\n\n.model-tooltip-bullet-item:last-child {\n margin-bottom: 0;\n}"],"sourceRoot":""}]);
|
|
22035
22886
|
// Exports
|
|
22036
22887
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
22037
22888
|
|
|
@@ -22980,8 +23831,14 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
22980
23831
|
width: 100%;
|
|
22981
23832
|
border-radius: 4px;
|
|
22982
23833
|
overflow: hidden;
|
|
22983
|
-
|
|
22984
|
-
|
|
23834
|
+
/* Theme-aware button colors set by Mito palettes */
|
|
23835
|
+
background-color: var(--mito-theme-button-background, var(--blue-300));
|
|
23836
|
+
border: 0.5px solid var(--mito-theme-button-border, var(--blue-900));
|
|
23837
|
+
transition: all 0.15s ease;
|
|
23838
|
+
}
|
|
23839
|
+
|
|
23840
|
+
.mito-run-cell-button-group:hover {
|
|
23841
|
+
background-color: var(--mito-theme-button-hover-background, var(--blue-400));
|
|
22985
23842
|
}
|
|
22986
23843
|
|
|
22987
23844
|
/* Shared button styles */
|
|
@@ -22992,7 +23849,8 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
22992
23849
|
padding: 0;
|
|
22993
23850
|
border-radius: 0;
|
|
22994
23851
|
cursor: pointer;
|
|
22995
|
-
color
|
|
23852
|
+
/* Theme-aware text color */
|
|
23853
|
+
color: var(--mito-theme-button-text, var(--blue-900));
|
|
22996
23854
|
font-size: 13px;
|
|
22997
23855
|
font-weight: 400;
|
|
22998
23856
|
transition: background-color 0.15s ease;
|
|
@@ -23001,7 +23859,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
23001
23859
|
}
|
|
23002
23860
|
|
|
23003
23861
|
.mito-run-cell-button:hover {
|
|
23004
|
-
background-color:
|
|
23862
|
+
background-color: transparent;
|
|
23005
23863
|
}
|
|
23006
23864
|
|
|
23007
23865
|
/* Main button (left side - play icon + text) */
|
|
@@ -23018,8 +23876,8 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
23018
23876
|
background: linear-gradient(
|
|
23019
23877
|
to bottom,
|
|
23020
23878
|
transparent,
|
|
23021
|
-
var(--blue-900) 20%,
|
|
23022
|
-
var(--blue-900) 80%,
|
|
23879
|
+
var(--mito-theme-button-border, var(--blue-900)) 20%,
|
|
23880
|
+
var(--mito-theme-button-border, var(--blue-900)) 80%,
|
|
23023
23881
|
transparent
|
|
23024
23882
|
);
|
|
23025
23883
|
opacity: 0.4;
|
|
@@ -23037,8 +23895,8 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
23037
23895
|
|
|
23038
23896
|
/* Play icon styling */
|
|
23039
23897
|
.mito-run-cell-button-main > svg {
|
|
23040
|
-
color: var(--blue-900);
|
|
23041
|
-
fill: var(--blue-900);
|
|
23898
|
+
color: var(--mito-theme-button-text, var(--blue-900));
|
|
23899
|
+
fill: var(--mito-theme-button-text, var(--blue-900));
|
|
23042
23900
|
width: 12px;
|
|
23043
23901
|
height: 12px;
|
|
23044
23902
|
flex-shrink: 0;
|
|
@@ -23048,7 +23906,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
23048
23906
|
.mito-run-cell-button-dropdown svg {
|
|
23049
23907
|
width: 14px;
|
|
23050
23908
|
height: 14px;
|
|
23051
|
-
color: var(--blue-900);
|
|
23909
|
+
color: var(--mito-theme-button-text, var(--blue-900));
|
|
23052
23910
|
}
|
|
23053
23911
|
|
|
23054
23912
|
/* Ensure chevron path only uses stroke, not fill */
|
|
@@ -23059,6 +23917,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
23059
23917
|
|
|
23060
23918
|
.mito-run-cell-button-text {
|
|
23061
23919
|
white-space: nowrap;
|
|
23920
|
+
color: var(--mito-theme-button-text, var(--blue-900));
|
|
23062
23921
|
}
|
|
23063
23922
|
|
|
23064
23923
|
/* Running state - applied to the group */
|
|
@@ -23196,7 +24055,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
23196
24055
|
.jp-Notebook-toolbar {
|
|
23197
24056
|
display: flex;
|
|
23198
24057
|
align-items: center;
|
|
23199
|
-
}`, "",{"version":3,"sources":["webpack://./style/RunCellButton.css"],"names":[],"mappings":"AAAA;;;EAGE;;AAEF;EACE,kBAAkB;EAClB,cAAc;EACd,YAAY;AACd;;AAEA,yCAAyC;AACzC;EACE,aAAa;EACb,mBAAmB;EACnB,oCAAoC;EACpC,WAAW;EACX,kBAAkB;EAClB,gBAAgB;EAChB,
|
|
24058
|
+
}`, "",{"version":3,"sources":["webpack://./style/RunCellButton.css"],"names":[],"mappings":"AAAA;;;EAGE;;AAEF;EACE,kBAAkB;EAClB,cAAc;EACd,YAAY;AACd;;AAEA,yCAAyC;AACzC;EACE,aAAa;EACb,mBAAmB;EACnB,oCAAoC;EACpC,WAAW;EACX,kBAAkB;EAClB,gBAAgB;EAChB,mDAAmD;EACnD,sEAAsE;EACtE,oEAAoE;EACpE,0BAA0B;AAC5B;;AAEA;EACE,4EAA4E;AAC9E;;AAEA,yBAAyB;AACzB;EACE,aAAa;EACb,mBAAmB;EACnB,YAAY;EACZ,UAAU;EACV,gBAAgB;EAChB,eAAe;EACf,2BAA2B;EAC3B,qDAAqD;EACrD,eAAe;EACf,gBAAgB;EAChB,uCAAuC;EACvC,YAAY;EACZ,6BAA6B;AAC/B;;AAEA;EACE,6BAA6B;AAC/B;;AAEA,+CAA+C;AAC/C;EACE,OAAO;EACP,QAAQ;EACR,eAAe;AACjB;;AAEA,4BAA4B;AAC5B;EACE,UAAU;EACV,YAAY;EACZ;;;;;;GAMC;EACD,YAAY;EACZ,cAAc;AAChB;;AAEA,2CAA2C;AAC3C;EACE,cAAc;EACd,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,gBAAgB;AAClB;;AAEA,sBAAsB;AACtB;EACE,qDAAqD;EACrD,oDAAoD;EACpD,WAAW;EACX,YAAY;EACZ,cAAc;AAChB;;AAEA,oBAAoB;AACpB;EACE,WAAW;EACX,YAAY;EACZ,qDAAqD;AACvD;;AAEA,mDAAmD;AACnD;EACE,UAAU;EACV,oBAAoB;AACtB;;AAEA;EACE,mBAAmB;EACnB,qDAAqD;AACvD;;AAEA,yCAAyC;AACzC;EACE,8BAA8B;AAChC;;AAEA;;EAEE,kCAAkC;EAClC,uBAAuB;AACzB;;AAEA;EACE,kCAAkC;AACpC;;AAEA;EACE;;;;;;GAMC;EACD,YAAY;AACd;;AAEA,uCAAuC;AACvC;EACE,uBAAuB;EACvB,sBAAsB;EACtB,WAAW;EACX,YAAY;AACd;;AAEA;EACE,uBAAuB;AACzB;;AAEA;EACE,uBAAuB;AACzB;;AAEA;EACE,kBAAkB;EAClB,qBAAqB;EACrB,QAAQ;EACR,aAAa;EACb,yCAAyC;EACzC,yCAAyC;EACzC,kBAAkB;EAClB,wCAAwC;EACxC,gBAAgB;EAChB,mBAAmB;EACnB,cAAc;AAChB;;AAEA;EACE,aAAa;EACb,sBAAsB;AACxB;;AAEA;EACE,0BAA0B;EAC1B,eAAe;EACf,gBAAgB;EAChB,+BAA+B;EAC/B,yBAAyB;EACzB,qBAAqB;AACvB;;AAEA;EACE,WAAW;EACX,yCAAyC;EACzC,aAAa;AACf;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,WAAW;EACX,iBAAiB;EACjB,gBAAgB;EAChB,YAAY;EACZ,gBAAgB;EAChB,+BAA+B;EAC/B,eAAe;EACf,eAAe;EACf,gBAAgB;EAChB,QAAQ;AACV;;AAEA;EACE,yCAAyC;AAC3C;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,WAAW,EAAE,mCAAmC;EAChD,YAAY;EACZ,cAAc;EACd,+BAA+B;EAC/B,cAAc,EAAE,kDAAkD;AACpE;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,cAAc,EAAE,0BAA0B;EAC1C,cAAc,EAAE,qDAAqD;EACrE,+BAA+B;AACjC;;AAEA;EACE,OAAO;AACT;;AAEA;EACE,+BAA+B;EAC/B,eAAe;EACf,iBAAiB;EACjB,YAAY;AACd;;AAEA,gEAAgE;AAChE;EACE,iBAAiB;EACjB,WAAW,EAAE,2BAA2B;AAC1C;;AAEA,qDAAqD;AACrD;EACE,aAAa;EACb,mBAAmB;AACrB","sourcesContent":["/*\n * Copyright (c) Saga Inc.\n * Distributed under the terms of the GNU Affero General Public License v3.0 License.\n */\n\n.mito-run-cell-button-container {\n position: relative;\n display: block;\n width: 160px;\n}\n\n/* Button group - contains both buttons */\n.mito-run-cell-button-group {\n display: flex;\n align-items: center;\n height: var(--toolbar-button-height);\n width: 100%;\n border-radius: 4px;\n overflow: hidden;\n /* Theme-aware button colors set by Mito palettes */\n background-color: var(--mito-theme-button-background, var(--blue-300));\n border: 0.5px solid var(--mito-theme-button-border, var(--blue-900));\n transition: all 0.15s ease;\n}\n\n.mito-run-cell-button-group:hover {\n background-color: var(--mito-theme-button-hover-background, var(--blue-400));\n}\n\n/* Shared button styles */\n.mito-run-cell-button {\n display: flex;\n align-items: center;\n border: none;\n padding: 0;\n border-radius: 0;\n cursor: pointer;\n /* Theme-aware text color */\n color: var(--mito-theme-button-text, var(--blue-900));\n font-size: 13px;\n font-weight: 400;\n transition: background-color 0.15s ease;\n height: 100%;\n background-color: transparent;\n}\n\n.mito-run-cell-button:hover {\n background-color: transparent;\n}\n\n/* Main button (left side - play icon + text) */\n.mito-run-cell-button-main {\n flex: 1;\n gap: 6px;\n padding: 0 10px;\n}\n\n/* Divider between buttons */\n.mito-run-cell-button-divider {\n width: 1px;\n height: 14px;\n background: linear-gradient(\n to bottom,\n transparent,\n var(--mito-theme-button-border, var(--blue-900)) 20%,\n var(--mito-theme-button-border, var(--blue-900)) 80%,\n transparent\n );\n opacity: 0.4;\n flex-shrink: 0;\n}\n\n/* Dropdown button (right side - chevron) */\n.mito-run-cell-button-dropdown {\n padding: 0 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 0;\n}\n\n/* Play icon styling */\n.mito-run-cell-button-main > svg {\n color: var(--mito-theme-button-text, var(--blue-900));\n fill: var(--mito-theme-button-text, var(--blue-900));\n width: 12px;\n height: 12px;\n flex-shrink: 0;\n}\n\n/* Chevron styling */\n.mito-run-cell-button-dropdown svg {\n width: 14px;\n height: 14px;\n color: var(--mito-theme-button-text, var(--blue-900));\n}\n\n/* Ensure chevron path only uses stroke, not fill */\n.mito-run-cell-button-dropdown svg path {\n fill: none;\n stroke: currentColor;\n}\n\n.mito-run-cell-button-text {\n white-space: nowrap;\n color: var(--mito-theme-button-text, var(--blue-900));\n}\n\n/* Running state - applied to the group */\n.mito-run-cell-button-running {\n border-color: var(--green-900);\n}\n\n.mito-run-cell-button-running .mito-run-cell-button,\n.mito-run-cell-button-running .mito-run-cell-button-dropdown {\n background-color: var(--green-300);\n color: var(--green-900);\n}\n\n.mito-run-cell-button-running .mito-run-cell-button-dropdown:hover {\n background-color: var(--green-500);\n}\n\n.mito-run-cell-button-running .mito-run-cell-button-divider {\n background: linear-gradient(\n to bottom,\n transparent,\n var(--green-900) 20%,\n var(--green-900) 80%,\n transparent\n );\n opacity: 0.5;\n}\n\n/* LoadingCircle styling when running */\n.mito-run-cell-button-running .mito-run-cell-button-main > svg {\n color: var(--green-900);\n fill: var(--green-900);\n width: 16px;\n height: 16px;\n}\n\n.mito-run-cell-button-running .mito-run-cell-button-text {\n color: var(--green-900);\n}\n\n.mito-run-cell-button-running .mito-run-cell-button-dropdown svg {\n color: var(--green-900);\n}\n\n.mito-run-cell-dropdown-menu {\n position: absolute;\n top: calc(100% + 4px);\n right: 0;\n z-index: 1000;\n background-color: var(--jp-layout-color1);\n border: 1px solid var(--jp-layout-color2);\n border-radius: 3px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n min-width: 200px;\n white-space: nowrap;\n padding: 4px 0;\n}\n\n.mito-run-cell-dropdown-section {\n display: flex;\n flex-direction: column;\n}\n\n.mito-run-cell-dropdown-section-header {\n padding: 6px 12px 4px 12px;\n font-size: 11px;\n font-weight: 600;\n color: var(--jp-ui-font-color2);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.mito-run-cell-dropdown-separator {\n height: 1px;\n background-color: var(--jp-layout-color2);\n margin: 4px 0;\n}\n\n.mito-run-cell-dropdown-item {\n display: flex;\n align-items: center;\n width: 100%;\n padding: 6px 12px;\n text-align: left;\n border: none;\n background: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n font-size: 13px;\n font-weight: 400;\n gap: 8px;\n}\n\n.mito-run-cell-dropdown-item:hover {\n background-color: var(--jp-layout-color2);\n}\n\n.mito-run-cell-dropdown-item-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px; /* Fixed width to align all icons */\n height: 16px;\n flex-shrink: 0;\n color: var(--jp-ui-font-color1);\n line-height: 0; /* Remove extra line height for better alignment */\n}\n\n.mito-run-cell-dropdown-item-icon svg {\n width: 16px;\n height: 16px;\n display: block; /* Remove inline spacing */\n margin: 0 auto; /* Center the icon within the fixed width container */\n color: var(--jp-ui-font-color1); \n}\n\n.mito-run-cell-dropdown-item-label {\n flex: 1;\n}\n\n.mito-run-cell-dropdown-item-shortcut {\n color: var(--jp-ui-font-color2);\n font-size: 11px;\n margin-left: 10px;\n opacity: 0.7;\n}\n\n/* Position the button widget on the right side of the toolbar */\n.jp-Notebook-toolbar .mito-run-cell-button-widget {\n margin-left: auto;\n order: 9999; /* Ensure it appears last */\n}\n\n/* Ensure toolbar uses flexbox for proper alignment */\n.jp-Notebook-toolbar {\n display: flex;\n align-items: center;\n}"],"sourceRoot":""}]);
|
|
23200
24059
|
// Exports
|
|
23201
24060
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
23202
24061
|
|
|
@@ -24080,14 +24939,16 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
24080
24939
|
}
|
|
24081
24940
|
|
|
24082
24941
|
.button-blue {
|
|
24083
|
-
|
|
24084
|
-
color: var(--blue-
|
|
24085
|
-
|
|
24942
|
+
/* Theme-aware button colors set by Mito palettes */
|
|
24943
|
+
background-color: var(--mito-theme-button-background, var(--blue-300));
|
|
24944
|
+
color: var(--mito-theme-button-text, var(--blue-900)) !important;
|
|
24945
|
+
border: 0.5px solid var(--mito-theme-button-border, var(--blue-900));
|
|
24086
24946
|
border-radius: 4px;
|
|
24947
|
+
transition: all 0.15s ease;
|
|
24087
24948
|
}
|
|
24088
24949
|
|
|
24089
24950
|
.button-blue:hover {
|
|
24090
|
-
background-color: var(--blue-400);
|
|
24951
|
+
background-color: var(--mito-theme-button-hover-background, var(--blue-400));
|
|
24091
24952
|
}
|
|
24092
24953
|
|
|
24093
24954
|
.button-dark-purple {
|
|
@@ -24112,7 +24973,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
24112
24973
|
font-size: 12px;
|
|
24113
24974
|
padding: 2px 5px;
|
|
24114
24975
|
}
|
|
24115
|
-
`, "",{"version":3,"sources":["webpack://./style/button.css"],"names":[],"mappings":"AAAA;;;EAGE;;AAEF;;;;CAIC;;AAED;EACE,YAAY;EACZ,kBAAkB;EAClB,eAAe;EACf,eAAe;EACf,2EAA2E;EAC3E,mBAAmB;EACnB,iBAAiB;AACnB;;AAEA;EACE,YAAY;EACZ,mBAAmB;EACnB,oBAAoB;AACtB;;AAEA;EACE,kCAAkC;EAClC,kCAAkC;AACpC;;AAEA;EACE,kCAAkC;AACpC;;AAEA;EACE,gCAAgC;EAChC,gCAAgC;AAClC;;AAEA;EACE,gCAAgC;AAClC;;AAEA;EACE,yCAAyC;EACzC,+CAA+C;AACjD;;AAEA;EACE,yCAAyC;AAC3C;;AAEA;EACE,mCAAmC;EACnC,mCAAmC;AACrC;;AAEA;EACE,mCAAmC;AACrC;;AAEA;EACE,mCAAmC;AACrC;;AAEA;EACE,
|
|
24976
|
+
`, "",{"version":3,"sources":["webpack://./style/button.css"],"names":[],"mappings":"AAAA;;;EAGE;;AAEF;;;;CAIC;;AAED;EACE,YAAY;EACZ,kBAAkB;EAClB,eAAe;EACf,eAAe;EACf,2EAA2E;EAC3E,mBAAmB;EACnB,iBAAiB;AACnB;;AAEA;EACE,YAAY;EACZ,mBAAmB;EACnB,oBAAoB;AACtB;;AAEA;EACE,kCAAkC;EAClC,kCAAkC;AACpC;;AAEA;EACE,kCAAkC;AACpC;;AAEA;EACE,gCAAgC;EAChC,gCAAgC;AAClC;;AAEA;EACE,gCAAgC;AAClC;;AAEA;EACE,yCAAyC;EACzC,+CAA+C;AACjD;;AAEA;EACE,yCAAyC;AAC3C;;AAEA;EACE,mCAAmC;EACnC,mCAAmC;AACrC;;AAEA;EACE,mCAAmC;AACrC;;AAEA;EACE,mCAAmC;AACrC;;AAEA;EACE,mDAAmD;EACnD,sEAAsE;EACtE,gEAAgE;EAChE,oEAAoE;EACpE,kBAAkB;EAClB,0BAA0B;AAC5B;;AAEA;EACE,4EAA4E;AAC9E;;AAEA;EACE,mCAAmC;EACnC,8BAA8B;AAChC;;AAEA;EACE,mCAAmC;AACrC;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,kBAAkB;AACpB;;AAEA;EACE,oCAAoC;EACpC,eAAe;EACf,gBAAgB;AAClB","sourcesContent":["/*\n * Copyright (c) Saga Inc.\n * Distributed under the terms of the GNU Affero General Public License v3.0 License.\n */\n\n/* \n Classes that can be used for any button, making it easier to keep \n the theme consistent. For example, use them to make a textButton or\n textAndIconButton green.\n*/\n\n.button-base {\n border: none;\n border-radius: 3px;\n cursor: pointer;\n font-size: 14px;\n /* Make sure the button grows large enough so that the text does not wrap */\n white-space: nowrap;\n padding: 5px 10px;\n}\n\n.button-base:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n.button-green {\n background-color: var(--green-400);\n color: var(--green-900) !important;\n}\n\n.button-green:hover {\n background-color: var(--green-500);\n}\n\n.button-red {\n background-color: var(--red-400);\n color: var(--red-900) !important;\n}\n\n.button-red:hover {\n background-color: var(--red-500);\n}\n\n.button-gray {\n background-color: var(--jp-layout-color2);\n color: var(--jp-content-font-color1) !important;\n}\n\n.button-gray:hover {\n background-color: var(--jp-layout-color3);\n}\n\n.button-purple {\n background-color: var(--purple-300);\n color: var(--purple-700) !important;\n}\n\n.button-purple:hover {\n background-color: var(--purple-400);\n}\n\n.button-purple:disabled:hover {\n background-color: var(--purple-300);\n}\n\n.button-blue {\n /* Theme-aware button colors set by Mito palettes */\n background-color: var(--mito-theme-button-background, var(--blue-300));\n color: var(--mito-theme-button-text, var(--blue-900)) !important;\n border: 0.5px solid var(--mito-theme-button-border, var(--blue-900));\n border-radius: 4px;\n transition: all 0.15s ease;\n}\n\n.button-blue:hover {\n background-color: var(--mito-theme-button-hover-background, var(--blue-400));\n}\n\n.button-dark-purple {\n background-color: var(--purple-500);\n color: var(--white) !important;\n}\n\n.button-dark-purple:hover {\n background-color: var(--purple-600);\n}\n\n.button-width-block {\n width: 100%;\n}\n\n.button-width-fit-contents {\n width: fit-content;\n}\n\n.button-small {\n height: var(--toolbar-button-height);\n font-size: 12px;\n padding: 2px 5px;\n}\n"],"sourceRoot":""}]);
|
|
24116
24977
|
// Exports
|
|
24117
24978
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
24118
24979
|
|
|
@@ -24155,7 +25016,7 @@ module.exports = "<svg width=\"22\" height=\"17\" viewBox=\"0 0 22 17\" fill=\"n
|
|
|
24155
25016
|
\********************************/
|
|
24156
25017
|
/***/ ((module) => {
|
|
24157
25018
|
|
|
24158
|
-
module.exports = "<svg width=\"19\" height=\"20\" viewBox=\"0 0 19 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15.0626 4.8125C15.5466 4.8125 15.9376 5.20352 15.9376 5.6875C15.9376 6.17148 15.5466 6.5625 15.0626 6.5625C14.5787 6.5625 14.1876 6.17148 14.1876 5.6875C14.1876 5.20352 14.5787 4.8125 15.0626 4.8125ZM12.0001 4.8125C12.4841 4.8125 12.8751 5.20352 12.8751 5.6875C12.8751 6.17148 12.4841 6.5625 12.0001 6.5625C11.5162 6.5625 11.1251 6.17148 11.1251 5.6875C11.1251 5.20352 11.5162 4.8125 12.0001 4.8125ZM8.93764 4.8125C9.42162 4.8125 9.81264 5.20352 9.81264 5.6875C9.81264 6.17148 9.42162 6.5625 8.93764 6.5625C8.45365 6.5625 8.06264 6.17148 8.06264 5.6875C8.06264 5.20352 8.45365 4.8125 8.93764 4.8125ZM12.0001 0C15.8665 0 19.0001 2.5457 19.0001 5.6875C19.0001 6.98906 18.456 8.18125 17.5537 9.14102C17.9611 10.2184 18.8087 11.1316 18.8224 11.1426C19.0029 11.334 19.0521 11.6129 18.9482 11.8535C18.8443 12.0941 18.6064 12.25 18.3439 12.25C16.6622 12.25 15.3361 11.5473 14.5404 10.984C13.7501 11.2328 12.897 11.375 12.0001 11.375C8.13373 11.375 5.00014 8.8293 5.00014 5.6875C5.00014 2.5457 8.13373 0 12.0001 0ZM12.0001 10.0625C12.7302 10.0625 13.4521 9.95039 14.1439 9.73164L14.7646 9.53477L15.2978 9.91211C15.6888 10.1883 16.2247 10.4973 16.8701 10.7051C16.6705 10.3742 16.4763 10.0023 16.3259 9.60586L16.0361 8.8375L16.5994 8.24141C17.0943 7.71367 17.6876 6.84141 17.6876 5.6875C17.6876 3.27578 15.1365 1.3125 12.0001 1.3125C8.86381 1.3125 6.31264 3.27578 6.31264 5.6875C6.31264 8.09922 8.86381 10.0625 12.0001 10.0625Z\" fill=\"var(--
|
|
25019
|
+
module.exports = "<svg width=\"19\" height=\"20\" viewBox=\"0 0 19 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15.0626 4.8125C15.5466 4.8125 15.9376 5.20352 15.9376 5.6875C15.9376 6.17148 15.5466 6.5625 15.0626 6.5625C14.5787 6.5625 14.1876 6.17148 14.1876 5.6875C14.1876 5.20352 14.5787 4.8125 15.0626 4.8125ZM12.0001 4.8125C12.4841 4.8125 12.8751 5.20352 12.8751 5.6875C12.8751 6.17148 12.4841 6.5625 12.0001 6.5625C11.5162 6.5625 11.1251 6.17148 11.1251 5.6875C11.1251 5.20352 11.5162 4.8125 12.0001 4.8125ZM8.93764 4.8125C9.42162 4.8125 9.81264 5.20352 9.81264 5.6875C9.81264 6.17148 9.42162 6.5625 8.93764 6.5625C8.45365 6.5625 8.06264 6.17148 8.06264 5.6875C8.06264 5.20352 8.45365 4.8125 8.93764 4.8125ZM12.0001 0C15.8665 0 19.0001 2.5457 19.0001 5.6875C19.0001 6.98906 18.456 8.18125 17.5537 9.14102C17.9611 10.2184 18.8087 11.1316 18.8224 11.1426C19.0029 11.334 19.0521 11.6129 18.9482 11.8535C18.8443 12.0941 18.6064 12.25 18.3439 12.25C16.6622 12.25 15.3361 11.5473 14.5404 10.984C13.7501 11.2328 12.897 11.375 12.0001 11.375C8.13373 11.375 5.00014 8.8293 5.00014 5.6875C5.00014 2.5457 8.13373 0 12.0001 0ZM12.0001 10.0625C12.7302 10.0625 13.4521 9.95039 14.1439 9.73164L14.7646 9.53477L15.2978 9.91211C15.6888 10.1883 16.2247 10.4973 16.8701 10.7051C16.6705 10.3742 16.4763 10.0023 16.3259 9.60586L16.0361 8.8375L16.5994 8.24141C17.0943 7.71367 17.6876 6.84141 17.6876 5.6875C17.6876 3.27578 15.1365 1.3125 12.0001 1.3125C8.86381 1.3125 6.31264 3.27578 6.31264 5.6875C6.31264 8.09922 8.86381 10.0625 12.0001 10.0625Z\" fill=\"var(--jp-brand-color0)\" class=\"jp-icon-selectable\"/>\n <path d=\"M7 7C3.13359 7 0 9.5457 0 12.6875C0 14.0437 0.585156 15.2852 1.55859 16.2613C1.2168 17.6395 0.0738281 18.8672 0.0601563 18.8809C0 18.9438 -0.0164062 19.0367 0.0191406 19.1188C0.0546875 19.2008 0.13125 19.25 0.21875 19.25C2.03164 19.25 3.39063 18.3805 4.06328 17.8445C4.95742 18.1809 5.95 18.375 7 18.375C10.8664 18.375 14 15.8293 14 12.6875C14 9.5457 10.8664 7 7 7ZM3.5 13.5625C3.01602 13.5625 2.625 13.1715 2.625 12.6875C2.625 12.2035 3.01602 11.8125 3.5 11.8125C3.98398 11.8125 4.375 12.2035 4.375 12.6875C4.375 13.1715 3.98398 13.5625 3.5 13.5625ZM7 13.5625C6.51602 13.5625 6.125 13.1715 6.125 12.6875C6.125 12.2035 6.51602 11.8125 7 11.8125C7.48398 11.8125 7.875 12.2035 7.875 12.6875C7.875 13.1715 7.48398 13.5625 7 13.5625ZM10.5 13.5625C10.016 13.5625 9.625 13.1715 9.625 12.6875C9.625 12.2035 10.016 11.8125 10.5 11.8125C10.984 11.8125 11.375 12.2035 11.375 12.6875C11.375 13.1715 10.984 13.5625 10.5 13.5625Z\" fill=\"var(--jp-brand-color1)\" class=\"jp-icon-selectable\"/>\n</svg>\n";
|
|
24159
25020
|
|
|
24160
25021
|
/***/ }),
|
|
24161
25022
|
|
|
@@ -24207,6 +25068,60 @@ module.exports = "<svg width=\"14\" height=\"14\" viewBox=\"0 0 10 10\" fill=\"n
|
|
|
24207
25068
|
|
|
24208
25069
|
module.exports = "<svg width=\"33\" height=\"33\" viewBox=\"0 0 33 33\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g fill=\"currentColor\">\n <path d=\"M27.8204 5.193C24.7983 2.1709 20.7805 0.506836 16.5068 0.506836C7.78625 0.506836 0.506836 7.78625 0.506836 16.5068C0.506836 25.2274 7.78625 32.5068 16.5068 32.5068C25.2274 32.5068 32.5068 25.2274 32.5068 16.5068C32.5068 12.2332 30.8426 8.2151 27.8207 5.19329L27.8204 5.193ZM23.627 21.5962L21.7553 17.7403L23.4737 16.9062L24.3955 18.8053L24.4401 18.6209C24.608 17.9267 24.6932 17.2155 24.6932 16.5068C24.6932 11.6336 20.7854 7.66893 15.9819 7.66893C11.1788 7.66893 7.27066 11.6336 7.27066 16.5068C7.27066 21.3572 11.1414 25.3073 15.9137 25.3444V27.2546C10.0885 27.217 5.36066 22.41 5.36066 16.5067C5.36066 10.5804 10.1253 5.75855 15.9819 5.75855C21.8385 5.75855 26.6032 10.5801 26.6032 16.5067C26.6032 17.2903 26.5175 18.0775 26.3484 18.8468L26.315 18.999L27.9027 18.0676L28.8693 19.7151L24.9693 22.003C24.3869 22.4896 23.6689 21.9597 23.6268 21.5962L23.627 21.5962Z\"/>\n </g>\n</svg>\n";
|
|
24209
25070
|
|
|
25071
|
+
/***/ }),
|
|
25072
|
+
|
|
25073
|
+
/***/ "./style/AddFieldButton.css":
|
|
25074
|
+
/*!**********************************!*\
|
|
25075
|
+
!*** ./style/AddFieldButton.css ***!
|
|
25076
|
+
\**********************************/
|
|
25077
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
25078
|
+
|
|
25079
|
+
__webpack_require__.r(__webpack_exports__);
|
|
25080
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
25081
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
25082
|
+
/* harmony export */ });
|
|
25083
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
|
|
25084
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
25085
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");
|
|
25086
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
25087
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");
|
|
25088
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
|
|
25089
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
|
|
25090
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
|
|
25091
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");
|
|
25092
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
|
|
25093
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");
|
|
25094
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
|
|
25095
|
+
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_AddFieldButton_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../node_modules/css-loader/dist/cjs.js!./AddFieldButton.css */ "./node_modules/css-loader/dist/cjs.js!./style/AddFieldButton.css");
|
|
25096
|
+
|
|
25097
|
+
|
|
25098
|
+
|
|
25099
|
+
|
|
25100
|
+
|
|
25101
|
+
|
|
25102
|
+
|
|
25103
|
+
|
|
25104
|
+
|
|
25105
|
+
|
|
25106
|
+
|
|
25107
|
+
var options = {};
|
|
25108
|
+
|
|
25109
|
+
options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
|
|
25110
|
+
options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
|
|
25111
|
+
|
|
25112
|
+
options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
|
|
25113
|
+
|
|
25114
|
+
options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
|
|
25115
|
+
options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
|
|
25116
|
+
|
|
25117
|
+
var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_AddFieldButton_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);
|
|
25118
|
+
|
|
25119
|
+
|
|
25120
|
+
|
|
25121
|
+
|
|
25122
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_AddFieldButton_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_AddFieldButton_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_AddFieldButton_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
|
|
25123
|
+
|
|
25124
|
+
|
|
24210
25125
|
/***/ }),
|
|
24211
25126
|
|
|
24212
25127
|
/***/ "./style/AgentChangeControls.css":
|
|
@@ -26694,4 +27609,4 @@ var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js
|
|
|
26694
27609
|
/***/ })
|
|
26695
27610
|
|
|
26696
27611
|
}]);
|
|
26697
|
-
//# sourceMappingURL=lib_index_js.
|
|
27612
|
+
//# sourceMappingURL=lib_index_js.44c109c7be36fb884d25.js.map
|