@morscherlab/mint-sdk 1.3.2 → 1.3.4

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-BG6v13Zq.js","names":[],"sources":["../src/apiErrors.ts","../src/stores/settings.ts"],"sourcesContent":["export interface MintApiErrorEnvelope {\n code: string\n message: string\n status: number\n request_id: string | null\n details: unknown\n detail?: unknown\n}\n\nconst STATUS_MESSAGES: Readonly<Record<number, string>> = {\n 400: 'Bad request',\n 401: 'Authentication required',\n 403: 'Permission denied',\n 404: 'Resource not found',\n 405: 'Method not allowed',\n 409: 'Conflict',\n 413: 'Payload too large',\n 415: 'Unsupported media type',\n 422: 'Validation error',\n 429: 'Rate limit exceeded',\n 500: 'Internal server error',\n 502: 'Bad gateway',\n 503: 'Service unavailable',\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | null {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return null\n return value as Record<string, unknown>\n}\n\n/** Public error thrown by typed MINT SDK requests. */\nexport class MintApiError extends Error {\n override readonly name: string = 'MintApiError'\n\n constructor(\n message: string,\n readonly code: string,\n readonly status: number,\n readonly requestId: string | null,\n readonly details: unknown,\n readonly detail: unknown,\n readonly body: unknown,\n readonly cause?: unknown,\n ) {\n super(message)\n }\n}\n\nexport interface MintApiErrorOptions {\n requestId?: string | null\n cause?: unknown\n}\n\n/** Normalize current typed envelopes and the previous FastAPI detail shape. */\nexport function mintApiErrorFromResponse(\n status: number,\n payload: unknown,\n options: MintApiErrorOptions = {},\n): MintApiError {\n const body = asRecord(payload)\n const legacyDetail = body?.detail\n const inner = asRecord(legacyDetail) ?? body\n const text = (value: unknown): string | undefined =>\n typeof value === 'string' && value ? value : undefined\n // Complete envelopes own the public code; older wrappers defer to the plugin payload.\n const canonical = typeof body?.status === 'number' && text(body.code) && text(body.message)\n const code = (canonical ? text(body.code) : text(inner?.error) ?? text(inner?.code))\n ?? text(body?.code) ?? 'unknown'\n const message = (canonical ? text(body.message) : text(inner?.message))\n ?? text(body?.message) ?? text(legacyDetail)\n ?? STATUS_MESSAGES[status] ?? `HTTP ${status}`\n const details = body?.details ?? inner?.details ?? null\n const requestId = text(body?.request_id) ?? text(inner?.request_id) ?? options.requestId ?? null\n\n return new MintApiError(\n message,\n code,\n status,\n requestId,\n details,\n legacyDetail,\n payload,\n options.cause,\n )\n}\n","import { defineStore, getActivePinia } from 'pinia'\nimport { ref, watch } from 'vue'\nimport type { ThemeMode, ColorPalette, TableDensity } from '../types'\n\ndeclare global {\n interface ImportMetaEnv {\n readonly VITE_API_PREFIX?: string\n }\n\n interface ImportMeta {\n readonly env: ImportMetaEnv\n }\n}\n\nexport interface SettingsState {\n serverHost: string\n serverPort: number\n requestTimeout: number\n wsAutoReconnect: boolean\n wsReconnectInterval: number\n theme: ThemeMode\n colorPalette: ColorPalette\n tableDensity: TableDensity\n}\n\nconst STORAGE_KEY = 'mint-settings'\nconst LEGACY_STORAGE_KEY = 'mld-settings'\n\nfunction getDefaultServerHost(): string {\n if (typeof window !== 'undefined' && window.location.hostname !== 'localhost') {\n return window.location.hostname\n }\n return 'localhost'\n}\n\nfunction getDefaultServerPort(): number {\n if (typeof window !== 'undefined') {\n if (window.location.port) {\n return parseInt(window.location.port, 10)\n }\n // Standard ports: 443 for HTTPS, 80 for HTTP (browser omits from location.port)\n return window.location.protocol === 'https:' ? 443 : 80\n }\n return 8000\n}\n\nconst defaultSettings: SettingsState = {\n serverHost: getDefaultServerHost(),\n serverPort: getDefaultServerPort(),\n requestTimeout: 120000,\n wsAutoReconnect: true,\n wsReconnectInterval: 5000,\n theme: 'system',\n colorPalette: 'default',\n tableDensity: 'normal',\n}\n\nexport const colorPalettes: Record<ColorPalette, { name: string; hues: [number, number] }> = {\n default: { name: 'Default (Cyan-Pink)', hues: [180, 320] },\n colorblind: { name: 'Colorblind-friendly', hues: [45, 260] },\n viridis: { name: 'Viridis', hues: [280, 80] },\n pastel: { name: 'Pastel', hues: [200, 340] },\n}\n\n/**\n * Custom properties a non-default palette overrides on `<html>`.\n *\n * The saturation/lightness pairs are lifted from the original indigo/orange\n * tokens in `styles/variables.css` so only the hue moves; the `default`\n * palette writes nothing at all and the stylesheet values stand.\n */\nexport const PALETTE_CSS_VARIABLES = [\n '--color-primary',\n '--color-primary-hover',\n '--color-primary-soft',\n '--color-cta',\n '--color-cta-hover',\n] as const\n\n/** Build the `<html>` custom-property overrides for a palette. */\nexport function paletteCssVariables(palette: ColorPalette): Record<string, string> {\n if (palette === 'default') return {}\n const [primaryHue, accentHue] = colorPalettes[palette].hues\n return {\n '--color-primary': `hsl(${primaryHue} 84% 67%)`,\n '--color-primary-hover': `hsl(${primaryHue} 75% 59%)`,\n '--color-primary-soft': `hsl(${primaryHue} 84% 67% / 0.12)`,\n '--color-cta': `hsl(${accentHue} 95% 53%)`,\n '--color-cta-hover': `hsl(${accentHue} 90% 48%)`,\n }\n}\n\n/** `DataFrame`-style size that each table density maps onto. */\nconst DENSITY_TABLE_SIZE: Record<TableDensity, 'sm' | 'md' | 'lg'> = {\n compact: 'sm',\n normal: 'md',\n comfortable: 'lg',\n}\n\n/** Map a table density onto the `size` prop shared by the SDK table components. */\nexport function tableDensityToSize(density: TableDensity): 'sm' | 'md' | 'lg' {\n return DENSITY_TABLE_SIZE[density]\n}\n\nfunction loadSettings(): SettingsState {\n try {\n const stored = localStorage.getItem(STORAGE_KEY)\n if (stored) {\n const parsed = JSON.parse(stored)\n return { ...defaultSettings, ...parsed }\n }\n\n const legacyStored = localStorage.getItem(LEGACY_STORAGE_KEY)\n if (legacyStored) {\n const parsed = JSON.parse(legacyStored)\n const migrated = { ...defaultSettings, ...parsed }\n localStorage.setItem(STORAGE_KEY, JSON.stringify(migrated))\n localStorage.removeItem(LEGACY_STORAGE_KEY)\n return migrated\n }\n } catch (e) {\n console.warn('Failed to load settings from localStorage:', e)\n }\n return { ...defaultSettings }\n}\n\nfunction saveSettings(settings: SettingsState): void {\n try {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(settings))\n } catch (e) {\n console.warn('Failed to save settings to localStorage:', e)\n }\n}\n\nfunction getSystemPrefersDark(): boolean {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return false\n return window.matchMedia('(prefers-color-scheme: dark)').matches\n}\n\nexport const useSettingsStore = defineStore('mint-settings', () => {\n // State\n const serverHost = ref(defaultSettings.serverHost)\n const serverPort = ref(defaultSettings.serverPort)\n const requestTimeout = ref(defaultSettings.requestTimeout)\n const wsAutoReconnect = ref(defaultSettings.wsAutoReconnect)\n const wsReconnectInterval = ref(defaultSettings.wsReconnectInterval)\n const theme = ref<ThemeMode>(defaultSettings.theme)\n const systemPrefersDark = ref(getSystemPrefersDark())\n const colorPalette = ref<ColorPalette>(defaultSettings.colorPalette)\n const tableDensity = ref<TableDensity>(defaultSettings.tableDensity)\n\n // API prefix - can be configured via env variable VITE_API_PREFIX\n const apiPrefix: string = (import.meta.env?.VITE_API_PREFIX as string | undefined) ?? '/api'\n\n function _isSameOrigin(): { same: boolean; currentHost: string; currentPort: string } {\n const currentHost = typeof window !== 'undefined' ? window.location.hostname : 'localhost'\n const currentPort = typeof window !== 'undefined' ? window.location.port : '8000'\n const effectivePort = currentPort || (window.location.protocol === 'https:' ? '443' : '80')\n const same =\n (serverHost.value === currentHost && String(serverPort.value) === effectivePort) ||\n (serverHost.value === 'localhost' && currentHost !== 'localhost')\n return { same, currentHost, currentPort }\n }\n\n function getApiBaseUrl(): string {\n const { same } = _isSameOrigin()\n if (same) return apiPrefix\n return `http://${serverHost.value}:${serverPort.value}${apiPrefix}`\n }\n\n function getWsBaseUrl(): string {\n const { same, currentHost, currentPort } = _isSameOrigin()\n const protocol = typeof window !== 'undefined' && window.location.protocol === 'https:' ? 'wss:' : 'ws:'\n if (same) return `${protocol}//${currentHost}${currentPort ? ':' + currentPort : ''}${apiPrefix}`\n return `ws://${serverHost.value}:${serverPort.value}${apiPrefix}`\n }\n\n let _initialized = false\n\n function initialize() {\n if (_initialized) return\n _initialized = true\n\n const loaded = loadSettings()\n serverHost.value = loaded.serverHost\n serverPort.value = loaded.serverPort\n requestTimeout.value = loaded.requestTimeout\n wsAutoReconnect.value = loaded.wsAutoReconnect\n wsReconnectInterval.value = loaded.wsReconnectInterval\n theme.value = loaded.theme\n colorPalette.value = loaded.colorPalette\n tableDensity.value = loaded.tableDensity\n\n applyTheme()\n applyPalette()\n applyDensity()\n }\n\n function applyTheme() {\n if (typeof document === 'undefined') return\n const dark = theme.value === 'system' ? systemPrefersDark.value : theme.value === 'dark'\n document.documentElement.classList.toggle('dark', dark)\n }\n\n /**\n * Write the selected palette's hues onto `<html>` as custom-property\n * overrides. The `default` palette clears them so `styles/variables.css`\n * keeps ownership of the brand colors.\n */\n function applyPalette() {\n if (typeof document === 'undefined') return\n const style = document.documentElement.style\n const overrides = paletteCssVariables(colorPalette.value)\n for (const name of PALETTE_CSS_VARIABLES) {\n const value = overrides[name]\n if (value) style.setProperty(name, value)\n else style.removeProperty(name)\n }\n }\n\n /** Mirror the table density onto `<html data-density>` for CSS consumers. */\n function applyDensity() {\n if (typeof document === 'undefined') return\n document.documentElement.dataset.density = tableDensity.value\n }\n\n watch(theme, () => {\n applyTheme()\n persistSettings()\n })\n\n watch(colorPalette, applyPalette)\n watch(tableDensity, applyDensity)\n\n if (typeof window !== 'undefined' && typeof window.matchMedia === 'function') {\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (event) => {\n systemPrefersDark.value = event.matches\n if (theme.value === 'system') {\n applyTheme()\n }\n })\n }\n\n function persistSettings() {\n saveSettings({\n serverHost: serverHost.value,\n serverPort: serverPort.value,\n requestTimeout: requestTimeout.value,\n wsAutoReconnect: wsAutoReconnect.value,\n wsReconnectInterval: wsReconnectInterval.value,\n theme: theme.value,\n colorPalette: colorPalette.value,\n tableDensity: tableDensity.value,\n })\n }\n\n watch([serverHost, serverPort, requestTimeout, wsAutoReconnect, wsReconnectInterval, colorPalette, tableDensity], () => {\n persistSettings()\n })\n\n function resetToDefaults() {\n serverHost.value = defaultSettings.serverHost\n serverPort.value = defaultSettings.serverPort\n requestTimeout.value = defaultSettings.requestTimeout\n wsAutoReconnect.value = defaultSettings.wsAutoReconnect\n wsReconnectInterval.value = defaultSettings.wsReconnectInterval\n theme.value = defaultSettings.theme\n colorPalette.value = defaultSettings.colorPalette\n tableDensity.value = defaultSettings.tableDensity\n }\n\n function getPaletteHues(): [number, number] {\n return colorPalettes[colorPalette.value].hues\n }\n\n /** The `size` the SDK table components default to for the current density. */\n function getTableSize(): 'sm' | 'md' | 'lg' {\n return tableDensityToSize(tableDensity.value)\n }\n\n function isDark(): boolean {\n return theme.value === 'system' ? systemPrefersDark.value : theme.value === 'dark'\n }\n\n return {\n serverHost,\n serverPort,\n requestTimeout,\n wsAutoReconnect,\n wsReconnectInterval,\n theme,\n systemPrefersDark,\n colorPalette,\n tableDensity,\n initialize,\n applyTheme,\n applyPalette,\n applyDensity,\n persistSettings,\n resetToDefaults,\n getPaletteHues,\n getTableSize,\n isDark,\n getApiBaseUrl,\n getWsBaseUrl,\n }\n})\n\n/**\n * Read the settings store without requiring Pinia to be installed.\n *\n * SDK components are mounted standalone (unit tests, Histoire stories, plugin\n * previews) where no Pinia instance exists. They use this to pick up a user's\n * preferences when the platform is running and fall back to their own defaults\n * otherwise, instead of throwing.\n */\nexport function tryUseSettingsStore(): ReturnType<typeof useSettingsStore> | null {\n if (!getActivePinia()) return null\n try {\n return useSettingsStore()\n } catch {\n return null\n }\n}\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { a as tryUseSettingsStore, i as tableDensityToSize, n as colorPalettes, o as useSettingsStore, r as paletteCssVariables, t as PALETTE_CSS_VARIABLES } from "../settings-BLr8lzw6.js";
2
- import { o as useAuthStore, t as useExperimentStore } from "../experiment-DgllIc3I.js";
1
+ import { a as tryUseSettingsStore, i as tableDensityToSize, n as colorPalettes, o as useSettingsStore, r as paletteCssVariables, t as PALETTE_CSS_VARIABLES } from "../settings-BG6v13Zq.js";
2
+ import { o as useAuthStore, t as useExperimentStore } from "../experiment-D49y_Kro.js";
3
3
  export { PALETTE_CSS_VARIABLES, colorPalettes, paletteCssVariables, tableDensityToSize, tryUseSettingsStore, useAuthStore, useExperimentStore, useSettingsStore };
@@ -24,7 +24,7 @@ export declare const colorPalettes: Record<ColorPalette, {
24
24
  /**
25
25
  * Custom properties a non-default palette overrides on `<html>`.
26
26
  *
27
- * The saturation/lightness pairs are lifted from the canonical indigo/orange
27
+ * The saturation/lightness pairs are lifted from the original indigo/orange
28
28
  * tokens in `styles/variables.css` so only the hue moves; the `default`
29
29
  * palette writes nothing at all and the stylesheet values stand.
30
30
  */
package/dist/styles.css CHANGED
@@ -473,11 +473,11 @@
473
473
  --text-secondary-strong: #475569;
474
474
 
475
475
  /* Brand colors */
476
- --color-primary: #6366F1;
477
- --color-primary-hover: #4F46E5;
478
- --color-primary-soft: rgba(99, 102, 241, 0.12);
479
- --color-cta: #F97316;
480
- --color-cta-hover: #EA580C;
476
+ --color-primary: #14B8A6;
477
+ --color-primary-hover: #0F766E;
478
+ --color-primary-soft: rgba(20, 184, 166, 0.12);
479
+ --color-cta: #06B6D4;
480
+ --color-cta-hover: #0891B2;
481
481
  --color-purple: #8B5CF6;
482
482
 
483
483
  /* Entity accent colors — experiments (cyan) and projects (sky), from the
@@ -581,8 +581,8 @@
581
581
  /* Soft focus rings — 3px translucent. Used by all form primitives
582
582
  post-0.16 visual refresh. Solid variants above kept for legacy
583
583
  components that haven't migrated yet. */
584
- --focus-ring-soft: 0 0 0 3px rgba(99, 102, 241, 0.20);
585
- /* Red is perceptually brighter than indigo at equal alpha; drop 2pp to keep visual weight matched. */
584
+ --focus-ring-soft: 0 0 0 3px rgba(20, 184, 166, 0.20);
585
+ /* Red is perceptually brighter than teal at equal alpha; drop 2pp to keep visual weight matched. */
586
586
  --focus-ring-soft-error: 0 0 0 3px rgba(239, 68, 68, 0.18);
587
587
 
588
588
  /* Legacy aliases — still consumed by components that haven't migrated to the
@@ -1135,11 +1135,11 @@ button, input, select, textarea {
1135
1135
  }
1136
1136
 
1137
1137
  .bg-mint-primary\/5 {
1138
- background-color: rgba(99, 102, 241, 0.05);
1138
+ background-color: rgba(20, 184, 166, 0.05);
1139
1139
  }
1140
1140
 
1141
1141
  .hover\:border-mint-primary\/50:hover {
1142
- border-color: rgba(99, 102, 241, 0.5);
1142
+ border-color: rgba(20, 184, 166, 0.5);
1143
1143
  }
1144
1144
 
1145
1145
  /* Danger/error color utilities */
@@ -1212,11 +1212,11 @@ button, input, select, textarea {
1212
1212
  }
1213
1213
 
1214
1214
  .bg-mint-primary\/10 {
1215
- background-color: rgba(99, 102, 241, 0.1);
1215
+ background-color: rgba(20, 184, 166, 0.1);
1216
1216
  }
1217
1217
 
1218
1218
  .hover\:bg-mint-primary\/20:hover {
1219
- background-color: rgba(99, 102, 241, 0.2);
1219
+ background-color: rgba(20, 184, 166, 0.2);
1220
1220
  }
1221
1221
 
1222
1222
  .bg-mint-info {
@@ -1255,11 +1255,11 @@ button, input, select, textarea {
1255
1255
  }
1256
1256
 
1257
1257
  .text-mint-primary\/80 {
1258
- color: rgba(99, 102, 241, 0.8);
1258
+ color: rgba(20, 184, 166, 0.8);
1259
1259
  }
1260
1260
 
1261
1261
  .hover\:text-mint-primary\/70:hover {
1262
- color: rgba(99, 102, 241, 0.7);
1262
+ color: rgba(20, 184, 166, 0.7);
1263
1263
  }
1264
1264
 
1265
1265
  /* ==========================================================================
@@ -3114,12 +3114,12 @@ button, input, select, textarea {
3114
3114
  .mint-button--primary {
3115
3115
  background-color: var(--color-primary);
3116
3116
  color: white;
3117
- box-shadow: 0 1px 2px rgba(99, 102, 241, 0.20);
3117
+ box-shadow: 0 1px 2px rgba(20, 184, 166, 0.20);
3118
3118
  }
3119
3119
 
3120
3120
  .mint-button--primary:hover:not(.mint-button--disabled) {
3121
3121
  background-color: var(--color-primary-hover);
3122
- box-shadow: 0 2px 5px rgba(99, 102, 241, 0.28);
3122
+ box-shadow: 0 2px 5px rgba(20, 184, 166, 0.28);
3123
3123
  }
3124
3124
 
3125
3125
  .mint-button--secondary {
@@ -1,2 +1,2 @@
1
- import { $ as toTimeCourseDataFrame, $t as getBioTemplatePackInfo, A as createSamplePrepTemplate, At as toCalibrationCurveDataFrame, B as toBioTemplateComponentProps, Bt as validateInstrumentRunData, C as createFlowCytometryPanelTemplate, Ct as toInstrumentRunRows, D as createTimeCourseTemplate, Dt as toFlowPanelDataFrame, E as createProtocolStepsTemplate, Et as toFlowPanelColumns, F as getBioTemplateComponentProps, Ft as toAssayMatrixSampleOptions, G as toTemplateDataFrame, Gt as validateSamplePrepData, H as toBioTemplateComponentPropsById, Ht as validateProtocolStepsData, I as listBioTemplateComponentBindings, It as validateAssayMatrixData, J as toDoseConditions, Jt as bioTemplatePresets, K as toWellMapArray, Kt as validateSampleSheetData, L as toBioTemplateComponentBindings, Lt as validateCalibrationCurveData, M as createPlateMapTemplate, Mt as toAssayMatrixColumns, N as bioTemplatePresetControlValuesToOptions, Nt as toAssayMatrixDataFrame, O as createCalibrationCurveTemplate, Ot as toFlowPanelRows, P as getBioTemplateComponentBindings, Pt as toAssayMatrixRows, Q as toTimeCourseColumns, Qt as bioTemplatePacks, R as toBioTemplateComponentBindingsById, Rt as validateDoseResponseData, S as createInstrumentRunTemplate, St as toInstrumentRunDataFrame, T as createAssayMatrixTemplate, Tt as toInstrumentRunSteps, U as toBioTemplateComponentSnippets, Ut as validateQpcrPlateData, V as toBioTemplateComponentPropsByComponent, Vt as validatePlateMapData, W as toBioTemplateComponentUsage, Wt as validateReagentListData, X as toPlateMapEditorState, Xt as listBioTemplatePresets, Y as toDoseLayoutState, Yt as getBioTemplatePresetInfo, Z as toWellPlateWells, Zt as searchBioTemplatePresets, _ as createElisaAssayCollection, _t as toProtocolColumns, a as getBioTemplateControlDefaults, an as searchBioTemplateCatalog, at as toSampleRows, b as createQpcrExpressionCollection, bt as toProtocolSteps, c as listBioTemplatePresetControlSchemas, cn as createTemplateCollection, ct as toSamplePrepRows, d as createBioTemplatePresetCollectionFromControls, dn as ensureTemplateFromCollection, dt as toReagentListItems, en as listBioTemplatePacks, et as toTimeCourseRows, f as createWellPlateScreenCollection, fn as extractTemplateCollection, ft as toReagentRows, g as createFlowCytometryAssayCollection, gt as toQpcrWellPlateWells, h as createWesternBlotAssayCollection, ht as toQpcrRows, i as createBioTemplateControlToolkit, in as listBioTemplateCatalog, it as toSampleOptions, j as createSampleSheetTemplate, jt as toCalibrationCurveRows, k as createDoseResponseTemplate, kt as toCalibrationCurveColumns, l as requireBioTemplateControlSchema, ln as createTemplateEnvelope, lt as toReagentColumns, m as createDefaultBioTemplate, mt as toQpcrDataFrame, n as bioTemplateControlsToSectionFormSchemas, nn as bioTemplateCatalog, nt as toSampleColumns, o as getBioTemplateControlSchema, on as TEMPLATE_COLLECTION_KEY, ot as toSamplePrepColumns, p as createBioTemplatePackCollection, pn as getTemplateData, pt as toQpcrColumns, q as racksFromPlateState, qt as validateTimeCourseData, r as bioTemplateControlsToSidebarPanels, rn as getBioTemplateInfo, rt as toSampleDataFrame, s as listBioTemplateControlSchemas, sn as assertTemplateEnvelope, st as toSamplePrepDataFrame, t as bioTemplateControlsToFormSchema, tn as searchBioTemplatePacks, tt as toTimeCourseSteps, u as createBioTemplatePresetCollection, un as ensureTemplateEnvelope, ut as toReagentDataFrame, v as createTargetedMetabolomicsCollection, vt as toProtocolDataFrame, w as createReagentListTemplate, wt as toInstrumentRunScheduleEvents, x as createQpcrPlateTemplate, xt as toInstrumentRunColumns, y as createLcmsBatchCollection, yt as toProtocolRows, z as toBioTemplateComponentImports, zt as validateFlowCytometryPanelData } from "../templates-BU1pet28.js";
1
+ import { $ as toTimeCourseDataFrame, $t as getBioTemplatePackInfo, A as createSamplePrepTemplate, At as toCalibrationCurveDataFrame, B as toBioTemplateComponentProps, Bt as validateInstrumentRunData, C as createFlowCytometryPanelTemplate, Ct as toInstrumentRunRows, D as createTimeCourseTemplate, Dt as toFlowPanelDataFrame, E as createProtocolStepsTemplate, Et as toFlowPanelColumns, F as getBioTemplateComponentProps, Ft as toAssayMatrixSampleOptions, G as toTemplateDataFrame, Gt as validateSamplePrepData, H as toBioTemplateComponentPropsById, Ht as validateProtocolStepsData, I as listBioTemplateComponentBindings, It as validateAssayMatrixData, J as toDoseConditions, Jt as bioTemplatePresets, K as toWellMapArray, Kt as validateSampleSheetData, L as toBioTemplateComponentBindings, Lt as validateCalibrationCurveData, M as createPlateMapTemplate, Mt as toAssayMatrixColumns, N as bioTemplatePresetControlValuesToOptions, Nt as toAssayMatrixDataFrame, O as createCalibrationCurveTemplate, Ot as toFlowPanelRows, P as getBioTemplateComponentBindings, Pt as toAssayMatrixRows, Q as toTimeCourseColumns, Qt as bioTemplatePacks, R as toBioTemplateComponentBindingsById, Rt as validateDoseResponseData, S as createInstrumentRunTemplate, St as toInstrumentRunDataFrame, T as createAssayMatrixTemplate, Tt as toInstrumentRunSteps, U as toBioTemplateComponentSnippets, Ut as validateQpcrPlateData, V as toBioTemplateComponentPropsByComponent, Vt as validatePlateMapData, W as toBioTemplateComponentUsage, Wt as validateReagentListData, X as toPlateMapEditorState, Xt as listBioTemplatePresets, Y as toDoseLayoutState, Yt as getBioTemplatePresetInfo, Z as toWellPlateWells, Zt as searchBioTemplatePresets, _ as createElisaAssayCollection, _t as toProtocolColumns, a as getBioTemplateControlDefaults, an as searchBioTemplateCatalog, at as toSampleRows, b as createQpcrExpressionCollection, bt as toProtocolSteps, c as listBioTemplatePresetControlSchemas, cn as createTemplateCollection, ct as toSamplePrepRows, d as createBioTemplatePresetCollectionFromControls, dn as ensureTemplateFromCollection, dt as toReagentListItems, en as listBioTemplatePacks, et as toTimeCourseRows, f as createWellPlateScreenCollection, fn as extractTemplateCollection, ft as toReagentRows, g as createFlowCytometryAssayCollection, gt as toQpcrWellPlateWells, h as createWesternBlotAssayCollection, ht as toQpcrRows, i as createBioTemplateControlToolkit, in as listBioTemplateCatalog, it as toSampleOptions, j as createSampleSheetTemplate, jt as toCalibrationCurveRows, k as createDoseResponseTemplate, kt as toCalibrationCurveColumns, l as requireBioTemplateControlSchema, ln as createTemplateEnvelope, lt as toReagentColumns, m as createDefaultBioTemplate, mt as toQpcrDataFrame, n as bioTemplateControlsToSectionFormSchemas, nn as bioTemplateCatalog, nt as toSampleColumns, o as getBioTemplateControlSchema, on as TEMPLATE_COLLECTION_KEY, ot as toSamplePrepColumns, p as createBioTemplatePackCollection, pn as getTemplateData, pt as toQpcrColumns, q as racksFromPlateState, qt as validateTimeCourseData, r as bioTemplateControlsToSidebarPanels, rn as getBioTemplateInfo, rt as toSampleDataFrame, s as listBioTemplateControlSchemas, sn as assertTemplateEnvelope, st as toSamplePrepDataFrame, t as bioTemplateControlsToFormSchema, tn as searchBioTemplatePacks, tt as toTimeCourseSteps, u as createBioTemplatePresetCollection, un as ensureTemplateEnvelope, ut as toReagentDataFrame, v as createTargetedMetabolomicsCollection, vt as toProtocolDataFrame, w as createReagentListTemplate, wt as toInstrumentRunScheduleEvents, x as createQpcrPlateTemplate, xt as toInstrumentRunColumns, y as createLcmsBatchCollection, yt as toProtocolRows, z as toBioTemplateComponentImports, zt as validateFlowCytometryPanelData } from "../templates-B2DB0MCM.js";
2
2
  export { TEMPLATE_COLLECTION_KEY, assertTemplateEnvelope, bioTemplateCatalog, bioTemplateControlsToFormSchema, bioTemplateControlsToSectionFormSchemas, bioTemplateControlsToSidebarPanels, bioTemplatePacks, bioTemplatePresetControlValuesToOptions, bioTemplatePresets, createAssayMatrixTemplate, createBioTemplateControlToolkit, createBioTemplatePackCollection, createBioTemplatePresetCollection, createBioTemplatePresetCollectionFromControls, createCalibrationCurveTemplate, createDefaultBioTemplate, createDoseResponseTemplate, createElisaAssayCollection, createFlowCytometryAssayCollection, createFlowCytometryPanelTemplate, createInstrumentRunTemplate, createLcmsBatchCollection, createPlateMapTemplate, createProtocolStepsTemplate, createQpcrExpressionCollection, createQpcrPlateTemplate, createReagentListTemplate, createSamplePrepTemplate, createSampleSheetTemplate, createTargetedMetabolomicsCollection, createTemplateCollection, createTemplateEnvelope, createTimeCourseTemplate, createWellPlateScreenCollection, createWesternBlotAssayCollection, ensureTemplateEnvelope, ensureTemplateFromCollection, extractTemplateCollection, getBioTemplateComponentBindings, getBioTemplateComponentProps, getBioTemplateControlDefaults, getBioTemplateControlSchema, getBioTemplateInfo, getBioTemplatePackInfo, getBioTemplatePresetInfo, getTemplateData, listBioTemplateCatalog, listBioTemplateComponentBindings, listBioTemplateControlSchemas, listBioTemplatePacks, listBioTemplatePresetControlSchemas, listBioTemplatePresets, racksFromPlateState, requireBioTemplateControlSchema, searchBioTemplateCatalog, searchBioTemplatePacks, searchBioTemplatePresets, toAssayMatrixColumns, toAssayMatrixDataFrame, toAssayMatrixRows, toAssayMatrixSampleOptions, toBioTemplateComponentBindings, toBioTemplateComponentBindingsById, toBioTemplateComponentImports, toBioTemplateComponentProps, toBioTemplateComponentPropsByComponent, toBioTemplateComponentPropsById, toBioTemplateComponentSnippets, toBioTemplateComponentUsage, toCalibrationCurveColumns, toCalibrationCurveDataFrame, toCalibrationCurveRows, toDoseConditions, toDoseLayoutState, toFlowPanelColumns, toFlowPanelDataFrame, toFlowPanelRows, toInstrumentRunColumns, toInstrumentRunDataFrame, toInstrumentRunRows, toInstrumentRunScheduleEvents, toInstrumentRunSteps, toPlateMapEditorState, toProtocolColumns, toProtocolDataFrame, toProtocolRows, toProtocolSteps, toQpcrColumns, toQpcrDataFrame, toQpcrRows, toQpcrWellPlateWells, toReagentColumns, toReagentDataFrame, toReagentListItems, toReagentRows, toSampleColumns, toSampleDataFrame, toSampleOptions, toSamplePrepColumns, toSamplePrepDataFrame, toSamplePrepRows, toSampleRows, toTemplateDataFrame, toTimeCourseColumns, toTimeCourseDataFrame, toTimeCourseRows, toTimeCourseSteps, toWellMapArray, toWellPlateWells, validateAssayMatrixData, validateCalibrationCurveData, validateDoseResponseData, validateFlowCytometryPanelData, validateInstrumentRunData, validatePlateMapData, validateProtocolStepsData, validateQpcrPlateData, validateReagentListData, validateSamplePrepData, validateSampleSheetData, validateTimeCourseData };
@@ -1,4 +1,4 @@
1
- import { a as tryUseSettingsStore, c as mintApiErrorFromResponse, s as MintApiError } from "./settings-BLr8lzw6.js";
1
+ import { a as tryUseSettingsStore, c as mintApiErrorFromResponse, s as MintApiError } from "./settings-BG6v13Zq.js";
2
2
  import { c as formatExperimentDate, f as BaseModal_default, h as BaseButton_default, m as useEventListener, p as useFocusTrap } from "./experiment-utils-DTANyVKV.js";
3
3
  import { a as normalizeOptionInput, i as BaseSelect_default, o as BaseInput_default, t as ResourcePickerListInternal_default } from "./ResourcePickerListInternal-CFAw4vTZ.js";
4
4
  import { Fragment, Teleport, Transition, TransitionGroup, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createStaticVNode, createTextVNode, createVNode, defineComponent, getCurrentInstance, getCurrentScope, inject, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, onScopeDispose, onUnmounted, openBlock, ref, renderList, renderSlot, shallowRef, toDisplayString, toValue, unref, useId, useTemplateRef, vModelText, watch, withCtx, withDirectives, withKeys, withModifiers } from "vue";
@@ -11474,8 +11474,8 @@ var templateControlSchemas = {
11474
11474
  view: "design",
11475
11475
  sidebar: {
11476
11476
  icon: ICONS.plate,
11477
- iconColor: "#6366f1",
11478
- iconBg: "#e0e7ff"
11477
+ iconColor: "#0d9488",
11478
+ iconBg: "#ccfbf1"
11479
11479
  }
11480
11480
  },
11481
11481
  plateFormat: {
@@ -11607,8 +11607,8 @@ var templateControlSchemas = {
11607
11607
  view: "design",
11608
11608
  sidebar: {
11609
11609
  icon: ICONS.plate,
11610
- iconColor: "#6366f1",
11611
- iconBg: "#e0e7ff",
11610
+ iconColor: "#0d9488",
11611
+ iconBg: "#ccfbf1",
11612
11612
  defaultOpen: false
11613
11613
  }
11614
11614
  }
@@ -11642,8 +11642,8 @@ var templateControlSchemas = {
11642
11642
  view: "analysis",
11643
11643
  sidebar: {
11644
11644
  icon: ICONS.settings,
11645
- iconColor: "#6366f1",
11646
- iconBg: "#e0e7ff"
11645
+ iconColor: "#0d9488",
11646
+ iconBg: "#ccfbf1"
11647
11647
  }
11648
11648
  },
11649
11649
  minRSquared: {
@@ -11749,8 +11749,8 @@ var templateControlSchemas = {
11749
11749
  view: "analysis",
11750
11750
  sidebar: {
11751
11751
  icon: ICONS.settings,
11752
- iconColor: "#6366f1",
11753
- iconBg: "#e0e7ff",
11752
+ iconColor: "#0d9488",
11753
+ iconBg: "#ccfbf1",
11754
11754
  defaultOpen: false
11755
11755
  }
11756
11756
  }
@@ -11815,8 +11815,8 @@ var templateControlSchemas = {
11815
11815
  view: "design",
11816
11816
  sidebar: {
11817
11817
  icon: ICONS.settings,
11818
- iconColor: "#6366f1",
11819
- iconBg: "#e0e7ff"
11818
+ iconColor: "#0d9488",
11819
+ iconBg: "#ccfbf1"
11820
11820
  }
11821
11821
  },
11822
11822
  includeDefaultControls: {
@@ -11862,8 +11862,8 @@ var templateControlSchemas = {
11862
11862
  view: "run",
11863
11863
  sidebar: {
11864
11864
  icon: ICONS.settings,
11865
- iconColor: "#6366f1",
11866
- iconBg: "#e0e7ff",
11865
+ iconColor: "#0d9488",
11866
+ iconBg: "#ccfbf1",
11867
11867
  defaultOpen: false
11868
11868
  }
11869
11869
  }
@@ -11885,8 +11885,8 @@ var templateControlSchemas = {
11885
11885
  view: "design",
11886
11886
  sidebar: {
11887
11887
  icon: ICONS.plate,
11888
- iconColor: "#6366f1",
11889
- iconBg: "#e0e7ff"
11888
+ iconColor: "#0d9488",
11889
+ iconBg: "#ccfbf1"
11890
11890
  }
11891
11891
  },
11892
11892
  replicates: {
@@ -11948,8 +11948,8 @@ var presetControlSchemas = {
11948
11948
  view: "design",
11949
11949
  sidebar: {
11950
11950
  icon: ICONS.plate,
11951
- iconColor: "#6366f1",
11952
- iconBg: "#e0e7ff"
11951
+ iconColor: "#0d9488",
11952
+ iconBg: "#ccfbf1"
11953
11953
  }
11954
11954
  },
11955
11955
  ...templateControlSchemas["qpcr-plate"]
@@ -12152,8 +12152,8 @@ var presetControlSchemas = {
12152
12152
  view: "design",
12153
12153
  sidebar: {
12154
12154
  icon: ICONS.plate,
12155
- iconColor: "#6366f1",
12156
- iconBg: "#e0e7ff"
12155
+ iconColor: "#0d9488",
12156
+ iconBg: "#ccfbf1"
12157
12157
  }
12158
12158
  },
12159
12159
  plateFormat: {
@@ -12248,8 +12248,8 @@ var presetControlSchemas = {
12248
12248
  view: "analysis",
12249
12249
  sidebar: {
12250
12250
  icon: ICONS.settings,
12251
- iconColor: "#6366f1",
12252
- iconBg: "#e0e7ff"
12251
+ iconColor: "#0d9488",
12252
+ iconBg: "#ccfbf1"
12253
12253
  }
12254
12254
  }
12255
12255
  }
@@ -12301,4 +12301,4 @@ function getBioTemplateControlDefaults(target) {
12301
12301
  //#endregion
12302
12302
  export { toTimeCourseDataFrame as $, FormulaInput_default as $n, snapToSlot as $r, getBioTemplatePackInfo as $t, createSamplePrepTemplate as A, getControlDefaults as An, isPluginSecretLocked as Ar, toCalibrationCurveDataFrame as At, toBioTemplateComponentProps as B, getDefaultControlView as Bn, addMinutes$1 as Br, validateInstrumentRunData as Bt, createFlowCytometryPanelTemplate as C, SAMPLE_GROUP_TOKENS as Cn, FileUploader_default as Cr, toInstrumentRunRows as Ct, createTimeCourseTemplate as D, hslToHex as Dn, PLUGIN_SECRET_FORMAT_REF as Dr, toFlowPanelDataFrame as Dt, createProtocolStepsTemplate as E, hexToHsl as En, PLUGIN_SECRET_FORMAT_KEY as Er, toFlowPanelColumns as Et, getBioTemplateComponentProps as F, controlsToSettingsSchema as Fn, pluginSecretState as Fr, toAssayMatrixSampleOptions as Ft, toTemplateDataFrame as G, getFieldRegistryEntry as Gn, formatDuration as Gr, validateSamplePrepData as Gt, toBioTemplateComponentPropsById as H, omitUndefined as Hn, durationMinutes as Hr, validateProtocolStepsData as Ht, listBioTemplateComponentBindings as I, controlsToSidebarPanels as In, setPluginSecret as Ir, validateAssayMatrixData as It, toDoseConditions as J, UnitInput_default as Jn, fromMinutes as Jr, bioTemplatePresets as Jt, toWellMapArray as K, getTypeDefault as Kn, formatTime as Kr, validateSampleSheetData as Kt, toBioTemplateComponentBindings as L, controlsToTopBarSettingsConfig as Ln, usesPluginSecretReferences as Lr, validateCalibrationCurveData as Lt, createPlateMapTemplate as M, controlsToFormSchema as Mn, keepPluginSecret as Mr, toAssayMatrixColumns as Mt, bioTemplatePresetControlValuesToOptions as N, controlsToSectionFormSchema as Nn, pluginSecretId as Nr, toAssayMatrixDataFrame as Nt, createCalibrationCurveTemplate as O, defineControlComponentBindings as On, PLUGIN_SECRET_REF_KEY as Or, toFlowPanelRows as Ot, getBioTemplateComponentBindings as P, controlsToSectionFormSchemas as Pn, pluginSecretLabel as Pr, toAssayMatrixRows as Pt, toTimeCourseColumns as Q, useSequenceUtils as Qn, rangesOverlap as Qr, bioTemplatePacks as Qt, toBioTemplateComponentBindingsById as R, controlsToViewIds as Rn, TagsInput_default as Rr, validateDoseResponseData as Rt, createInstrumentRunTemplate as S, SAMPLE_COLOR_SCALE as Sn, _plugin_vue_export_helper_default as Sr, toInstrumentRunDataFrame as St, createAssayMatrixTemplate as T, deriveShade as Tn, SecretInput_default as Tr, toInstrumentRunSteps as Tt, toBioTemplateComponentSnippets as U, recordValue as Un, findAvailableSlots as Ur, validateQpcrPlateData as Ut, toBioTemplateComponentPropsByComponent as V, normalizeControlDefinition as Vn, compareTime as Vr, validatePlateMapData as Vt, toBioTemplateComponentUsage as W, replaceRecord as Wn, findNearestTimeSlotIndex as Wr, validateReagentListData as Wt, toPlateMapEditorState as X, MoleculeInput_default as Xn, isTimeInRange as Xr, listBioTemplatePresets as Xt, toDoseLayoutState as Y, useConcentrationUnits as Yn, generateTimeSlots as Yr, getBioTemplatePresetInfo as Yt, toWellPlateWells as Z, SequenceInput_default as Zn, parseTime as Zr, searchBioTemplatePresets as Zt, createElisaAssayCollection as _, createPlateRowLabels as _n, resolveJobCapabilities as _r, toProtocolColumns as _t, getBioTemplateControlDefaults as a, useListSelection as ai, searchBioTemplateCatalog as an, getInjectedPlatformContext as ar, toSampleRows as at, createQpcrExpressionCollection as b, rowIndex as bn, isRecord as br, toProtocolSteps as bt, listBioTemplatePresetControlSchemas as c, BaseRadioGroup_default as ci, createTemplateCollection as cn, resolveCurrentPluginId as cr, toSamplePrepRows as ct, createBioTemplatePresetCollectionFromControls as d, Tooltip_default as di, ensureTemplateFromCollection as dn, usePluginJobs as dr, toReagentListItems as dt, toMinutes as ei, listBioTemplatePacks as en, ATOMIC_WEIGHTS as er, toTimeCourseRows as et, createWellPlateScreenCollection as f, BaseTextarea_default as fi, extractTemplateCollection as fn, isActiveJobStatus as fr, toReagentRows as ft, createFlowCytometryAssayCollection as g, createPlateColumnLabels as gn, normalizeJobState as gr, toQpcrWellPlateWells as gt, createWesternBlotAssayCollection as h, WELL_PLATE_SIZE_CONFIGS as hn, normalizeJobPercent as hr, toQpcrRows as ht, createBioTemplateControlToolkit as i, MultiSelect_default as ii, listBioTemplateCatalog as in, currentExperimentFromContext as ir, toSampleOptions as it, createSampleSheetTemplate as j, useControlSchema as jn, isPluginSecretRef as jr, toCalibrationCurveRows as jt, createDoseResponseTemplate as k, defineControls as kn, clearPluginSecret as kr, toCalibrationCurveColumns as kt, requireBioTemplateControlSchema as l, BaseToggle_default as li, createTemplateEnvelope as ln, createGeneratedAnalysisTransport as lr, toReagentColumns as lt, createDefaultBioTemplate as m, PLATE_CONFIGS as mn, jobStatusLabel as mr, toQpcrDataFrame as mt, bioTemplateControlsToSectionFormSchemas as n, DatePicker_default as ni, bioTemplateCatalog as nn, GeneratedPathInput_default as nr, toSampleColumns as nt, getBioTemplateControlSchema as o, useSelectionLimit as oi, TEMPLATE_COLLECTION_KEY as on, parseExperimentId as or, toSamplePrepColumns as ot, createBioTemplatePackCollection as p, getTemplateData as pn, isTerminalJobStatus as pr, toQpcrColumns as pt, racksFromPlateState as q, ConcentrationInput_default as qn, formatTimeSlot as qr, validateTimeCourseData as qt, bioTemplateControlsToSidebarPanels as r, useDropdownState as ri, getBioTemplateInfo as rn, GENERATED_JOBS_API_KEY as rr, toSampleDataFrame as rt, listBioTemplateControlSchemas as s, BaseSlider_default as si, assertTemplateEnvelope as sn, resolveCurrentExperimentId as sr, toSamplePrepDataFrame as st, bioTemplateControlsToFormSchema as t, useTimeUtils as ti, searchBioTemplatePacks as tn, useChemicalFormula as tr, toTimeCourseSteps as tt, createBioTemplatePresetCollection as u, BaseCheckbox_default as ui, ensureTemplateEnvelope as un, useGeneratedAnalysis as ur, toReagentDataFrame as ut, createTargetedMetabolomicsCollection as v, createWellGrid as vn, useEventStream as vr, toProtocolDataFrame as vt, createReagentListTemplate as w, SLOT_ORDER as wn, NumberInput_default as wr, toInstrumentRunScheduleEvents as wt, createQpcrPlateTemplate as x, rowLabel as xn, useMenuKeyboard as xr, toInstrumentRunColumns as xt, createLcmsBatchCollection as y, getRectangleWellIds as yn, DateTimePicker_default as yr, toProtocolRows as yt, toBioTemplateComponentImports as z, controlsToViewItems as zn, TimePicker_default as zr, validateFlowCytometryPanelData as zt };
12303
12303
 
12304
- //# sourceMappingURL=templates-BU1pet28.js.map
12304
+ //# sourceMappingURL=templates-B2DB0MCM.js.map