@ms-cloudpack/overlay 0.16.100 → 0.16.101

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.
@@ -581,9 +581,8 @@ function TaskResultItem({ item, projectPath, index }) {
581
581
  ev.preventDefault();
582
582
  }
583
583
  };
584
- const filename = item.location?.file || "(path unavailable)";
585
- const location = ["", item.location?.line, item.location?.column].filter(Boolean).join(":");
586
- return /* @__PURE__ */ React3.createElement("div", { className: TaskResultItem_module_default.root }, /* @__PURE__ */ React3.createElement("div", { className: TaskResultItem_module_default.statusBar }), /* @__PURE__ */ React3.createElement("div", { className: TaskResultItem_module_default.content }, /* @__PURE__ */ React3.createElement("div", { className: TaskResultItem_module_default.titleArea }, /* @__PURE__ */ React3.createElement("button", { onClick: openSource, className: TaskResultItem_module_default.file }, index, ". ", filename, location && ` (${location})`, ":")), /* @__PURE__ */ React3.createElement("div", { className: TaskResultItem_module_default.text }, "[", item.source, "] ", item.text), /* @__PURE__ */ React3.createElement("pre", { className: TaskResultItem_module_default.text }, JSON.stringify(item, null, 2))));
584
+ const location = [item.location?.file || "(path unavailable)", item.location?.line, item.location?.column].filter(Boolean).join(":");
585
+ return /* @__PURE__ */ React3.createElement("div", { className: TaskResultItem_module_default.root }, /* @__PURE__ */ React3.createElement("div", { className: TaskResultItem_module_default.statusBar }), /* @__PURE__ */ React3.createElement("div", { className: TaskResultItem_module_default.content }, /* @__PURE__ */ React3.createElement("div", { className: TaskResultItem_module_default.titleArea }, /* @__PURE__ */ React3.createElement("button", { onClick: openSource, className: TaskResultItem_module_default.file }, index, ". ", location)), /* @__PURE__ */ React3.createElement("div", { className: TaskResultItem_module_default.text }, "[", item.source, "] ", item.text), /* @__PURE__ */ React3.createElement("pre", { className: TaskResultItem_module_default.text }, JSON.stringify(item, null, 2))));
587
586
  }
588
587
 
589
588
  // packages/overlay/src/components/StatusDialog/TaskStatus.module.css
@@ -871,9 +870,7 @@ function TaskStatus({ task }) {
871
870
  const openPackage = () => {
872
871
  cloudpack.openSource({
873
872
  rootPath: task.inputPath,
874
- relativePath: "package.json",
875
- line: 0,
876
- column: 0
873
+ relativePath: "package.json"
877
874
  });
878
875
  };
879
876
  const restartTask = () => {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/index.tsx", "../../../src/components/CloudpackProvider/CloudpackProvider.tsx", "../../../src/components/CloudpackProvider/getCookies.ts", "../../../src/components/CloudpackProvider/createCloudpackClient.ts", "../../../src/components/StatusOverlay/StatusOverlay.tsx", "../../../src/components/StatusBadge/StatusBadge.tsx", "../../../src/hooks/useDraggable.ts", "../../../src/components/StatusBadge/StatusBadge.module.css", "../../../src/components/CloudpackProvider/useStatus.ts", "../../../src/components/StatusDialog/StatusDialog.tsx", "../../../src/components/StatusDialog/TaskList.tsx", "../../../src/components/StatusDialog/TaskStatus.tsx", "../../../src/components/StatusDialog/TaskResultItem.tsx", "../../../src/components/StatusDialog/TaskResultItem.module.css", "../../../src/components/StatusDialog/TaskStatus.module.css", "../../../src/components/Button/Button.tsx", "../../../src/components/Button/Button.module.css", "../../../src/components/CloudpackProvider/useStatusDetails.ts", "../../../src/components/StatusDialog/TaskList.module.css", "../../../src/components/Dialog/Dialog.tsx", "../../../src/components/Dialog/Dialog.module.css", "../../../src/components/StatusDialog/Searchbox.tsx", "../../../src/components/StatusDialog/Searchbox.module.css", "../../../src/components/ErrorDialog/ErrorDialog.tsx", "../../../src/components/ErrorDialog/PathError.tsx", "../../../src/components/ErrorDialog/useErrorEvents.ts", "../../../src/hooks/usePageLoadTimeReporter.ts", "../../../src/components/ThemeProvider/ThemeProvider.tsx", "../../../src/components/ThemeProvider/ThemeProvider.module.css"],
4
- "sourcesContent": ["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { CloudpackProvider } from './components/CloudpackProvider/CloudpackProvider.js';\nimport { StatusOverlay } from './components/StatusOverlay/StatusOverlay.js';\nimport { ThemeProvider } from './components/ThemeProvider/ThemeProvider.js';\nimport { elementIds } from './constants.js';\n\nconst rootDiv = document.createElement('div');\nrootDiv.id = elementIds.root;\n\nReactDOM.render(\n <ThemeProvider>\n <CloudpackProvider>\n <StatusOverlay />\n </CloudpackProvider>\n </ThemeProvider>,\n rootDiv,\n);\n\ndocument.body.appendChild(rootDiv);\n", "import React, { createContext, useState, useContext } from 'react';\nimport { createCloudpackClient, type CloudpackClient } from './createCloudpackClient.js';\n\nexport const CloudpackContext = createContext<CloudpackClient>(null as unknown as CloudpackClient);\n\nexport function CloudpackProvider({ children }: { children: React.ReactNode }) {\n const [client] = useState(createCloudpackClient);\n\n return <CloudpackContext.Provider value={client}>{children}</CloudpackContext.Provider>;\n}\n\nexport const useCloudpack = () => useContext(CloudpackContext);\n", "/**\n * Gets the cookies dictionary from the browser.\n */\nexport function getCookies(): Record<string, string> {\n return document.cookie\n .split(';')\n .map((s) => s.split('='))\n .reduce<Record<string, string>>((current, nextValue) => {\n const name = nextValue[0]?.trim();\n const value = decodeURIComponent(nextValue[1]?.trim());\n\n if (name && value) {\n current[name] = value;\n }\n\n return current;\n }, {});\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { getCookies } from './getCookies.js';\nimport { createDataBus, type DataBusPath } from '@ms-cloudpack/data-bus';\nimport type {\n AddPackageOverrideInput,\n OpenCodeEditorInput,\n OpenFilePathInput,\n ReportMetricInput,\n ValidatePackageOverrideInput,\n ValidatePackageOverrideOutput,\n} from '@ms-cloudpack/api-server/browser';\nimport type { z } from 'zod';\nimport { cookieNames } from '../../constants.js';\n\nexport interface CloudpackClient {\n /**\n * Closes the websocket connection.\n */\n dispose(): void;\n getValue<TZodData extends z.ZodType>(path: DataBusPath<TZodData>): z.infer<TZodData>;\n /**\n * Creates a subscription to the given path.\n */\n subscribe<TZodData extends z.ZodType>(\n path: DataBusPath<TZodData>,\n callback: (newValue: any, oldValue: any) => void,\n ): () => void;\n\n openSource(options: OpenCodeEditorInput): void;\n open(options: OpenFilePathInput): void;\n editConfig(): void;\n addOverride(options: AddPackageOverrideInput): void;\n validateOverride(options: ValidatePackageOverrideInput): Promise<ValidatePackageOverrideOutput>;\n restartAllTasks(): void;\n restartTask(options: { id: string; inputPath: string }): void;\n reportMetric(options: ReportMetricInput): void;\n}\n\nexport function createCloudpackClient(): CloudpackClient {\n const cookies = getCookies();\n const bus = createDataBus();\n let subCounter = 0;\n const subIds: Record<string, number> = {};\n\n bus.addProvider({\n path: [],\n onActivate: ({ path }) => {\n const id = subCounter++;\n subIds[path.join('/')] = id;\n sendMessage({ type: 'subscribe', data: { path, id } });\n },\n\n onDeactivate: ({ path }) => {\n const pathString = path.join('/');\n const id = subIds[pathString];\n delete subIds[pathString];\n sendMessage({ type: 'unsubscribe', data: { path, id } });\n },\n });\n\n const enqueuedMessages: string[] = [];\n const sessionId = cookies[cookieNames.sessionId];\n const apiUrl = cookies[cookieNames.apiUrl];\n const currentSequence = cookies[cookieNames.sessionSequence];\n let socket: WebSocket | undefined;\n let idCount = 0;\n\n /**\n * Attempts to open the websocket connection.\n */\n function openConnection() {\n if (apiUrl && sessionId) {\n const newSocket = new WebSocket(apiUrl);\n\n newSocket.onopen = () => {\n console.log('socket opened');\n socket = newSocket;\n socket.onmessage = onMessageReceived;\n socket.onclose = () => {\n socket = undefined;\n };\n\n // Initialize any pending subscriptions.\n for (const message of enqueuedMessages) {\n socket.send(message);\n }\n enqueuedMessages.length = 0;\n };\n }\n }\n\n /**\n * Sends a message to the websocket.\n */\n function sendMessage(options: { type: string; requestId?: string; data: unknown }) {\n const { type, requestId, data } = options;\n const message = JSON.stringify({ type, requestId, data });\n if (socket) {\n socket.send(message);\n } else {\n enqueuedMessages.push(message);\n }\n }\n\n const activeRequests: Record<\n string,\n {\n resolve: (value: any) => void;\n reject: (reason: any) => void;\n }\n > = {};\n\n /**\n * Sends a request to the websocket and returns a promise that resolves when the response is received.\n */\n function sendRequest(options: { type: string; data: unknown }) {\n const { type, data } = options;\n const requestId = `${idCount++}`;\n return new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n if (activeRequests[requestId]) {\n reject(new Error('Request timed out.'));\n }\n }, 10000);\n\n activeRequests[requestId] = {\n resolve: (resultData) => {\n delete activeRequests[requestId];\n clearTimeout(timeoutId);\n resolve(resultData);\n },\n reject: (error) => {\n delete activeRequests[requestId];\n clearTimeout(timeoutId);\n reject(error);\n },\n };\n\n sendMessage({ type, requestId, data });\n });\n }\n\n /**\n * Receives a message from the websocket and calls the appropriate callback.\n */\n function onMessageReceived(message: { data: string }) {\n const response = JSON.parse(message.data) as Record<string, unknown>;\n const requestId = response.requestId as string | undefined;\n\n if (requestId !== undefined) {\n activeRequests[requestId].resolve(response.data);\n return;\n }\n\n switch (response.type) {\n case 'notify': {\n const { path, data } = response;\n\n bus.publish(path as string[], data);\n break;\n }\n\n case 'reload': {\n window.location.reload();\n break;\n }\n\n case 'sequence': {\n const { sequence } = response;\n if (Number(sequence) > Number(currentSequence)) {\n window.location.reload();\n }\n break;\n }\n }\n }\n\n // Start the connection.\n openConnection();\n\n // Return the public API.\n const client: CloudpackClient = {\n dispose: () => {\n socket?.close();\n socket = undefined;\n },\n getValue: (path) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return bus.getData(path);\n },\n open: (options) => {\n sendMessage({ type: 'open', data: options });\n },\n openSource: (options) => {\n sendMessage({ type: 'openSource', data: options });\n },\n subscribe: (path, callback) => {\n return bus.subscribe(path, callback);\n },\n editConfig: () => {\n sendMessage({ type: 'editConfig', data: {} });\n },\n addOverride: (options) => {\n sendMessage({ type: 'addOverride', data: options });\n },\n restartTask: (options) => {\n sendMessage({ type: 'restartTask', data: options });\n },\n restartAllTasks: () => {\n sendMessage({ type: 'restartAllTasks', data: {} });\n },\n validateOverride: (options) => {\n return sendRequest({ type: 'validateOverride', data: options }) as Promise<{ fixable: boolean }>;\n },\n reportMetric: (options) => {\n sendMessage({ type: 'reportMetric', data: options });\n },\n };\n\n return client;\n}\n", "import React, { useCallback, useState, useRef } from 'react';\nimport { StatusBadge } from '../StatusBadge/StatusBadge.js';\nimport { StatusDialog } from '../StatusDialog/StatusDialog.js';\nimport { useStatus, type CloudpackStatus } from '../CloudpackProvider/useStatus.js';\nimport { ErrorDialog } from '../ErrorDialog/ErrorDialog.js';\nimport { useErrorEvents } from '../ErrorDialog/useErrorEvents.js';\nimport { usePageLoadTimeReporter } from '../../hooks/usePageLoadTimeReporter.js';\n\nexport function StatusOverlay() {\n const pageLoadTime = usePageLoadTimeReporter();\n const [isExpanded, setIsExpanded] = useState<boolean>(false);\n const status = useStatus();\n const prevStatus = useRef<CloudpackStatus | undefined>();\n const { unsupported } = useErrorEvents();\n\n // If we haven't set a specific state and we become idle,\n // pop open the details if there are errors.\n React.useEffect(() => {\n if (\n !isExpanded &&\n prevStatus.current?.status !== 'idle' &&\n status.status === 'idle' &&\n (prevStatus.current?.totalErrors || 0) !== (status.totalErrors || 0)\n ) {\n setIsExpanded(true);\n }\n prevStatus.current = status;\n }, [status, isExpanded]);\n\n const toggleMinimized = useCallback(() => {\n console.log(`Toggling minimized state to ${!isExpanded}`);\n setIsExpanded(!isExpanded);\n }, [isExpanded]);\n\n return unsupported.length ? (\n <ErrorDialog unsupported={unsupported} />\n ) : isExpanded ? (\n <StatusDialog onClose={toggleMinimized} />\n ) : (\n <StatusBadge onExpand={toggleMinimized} pageLoadTime={pageLoadTime} />\n );\n}\n", "import React, { useCallback, useRef, useState } from 'react';\nimport { useDraggable } from '../../hooks/useDraggable.js';\nimport styles from './StatusBadge.module.css';\nimport { default as cx } from 'classnames';\nimport { useStatus, type CloudpackStatus } from '../CloudpackProvider/useStatus.js';\nimport { elementIds } from '../../constants.js';\n\nexport interface StatusBadgeProps {\n inline?: boolean;\n onExpand?: () => void;\n onToggle?: () => void;\n pageLoadTime?: number;\n}\n\nexport function StatusBadge({ inline, onExpand, pageLoadTime }: StatusBadgeProps) {\n const badgeStatusKey = 'cloudpack.badgeStatus';\n\n const rootElementRef = useRef<HTMLDivElement>(null);\n const dragElementRef = useRef<HTMLDivElement>(null);\n const status = useStatus();\n const [isCollapsed, setIsCollapsed] = useState<boolean>(!!localStorage.getItem(badgeStatusKey));\n\n const shouldRender = status.status !== 'unknown';\n\n const toggleBadgeVisibility = useCallback(() => {\n const newCollapsedState = !isCollapsed;\n console.log('Status badge collapsed state:', newCollapsedState);\n setIsCollapsed(newCollapsedState);\n localStorage.setItem(badgeStatusKey, newCollapsedState ? 'collapsed' : '');\n }, [isCollapsed]);\n\n useDraggable({\n // If we're not yet able to render, don't enable dragging yet.\n // Otherwise the event handlers won't be attached when the component renders.\n enabled: shouldRender && !inline,\n containerElementRef: rootElementRef,\n dragElementRef,\n });\n\n if (!shouldRender) {\n return null;\n }\n\n const metric = pageLoadTime ? (\n <span className={styles.metric} title=\"Page Load Time\">\n in {pageLoadTime.toFixed(2)} ms\n </span>\n ) : null;\n\n const leftChevron = '\\u00AB';\n const rightChevron = '\\u00BB';\n const badge = (\n <div\n id={elementIds.statusBadgeRoot}\n ref={rootElementRef}\n className={`${getStatusClassName(status, !!inline)} ${getCollapsedClassName(isCollapsed)}`}\n >\n {!inline && (\n <div ref={dragElementRef} className={styles.gripArea}>\n <div className={styles.grip} />\n <div className={styles.grip} />\n </div>\n )}\n <button className={styles.button} onClick={onExpand} aria-label=\"Expand overlay\">\n <div className={styles.value}>{getStatusString(status)}</div>\n </button>\n <div>\n {getStatsString(status)}\n {metric}\n </div>\n <button className={`${styles.button} ${styles.chevron}`} onClick={toggleBadgeVisibility}>\n {isCollapsed ? leftChevron : rightChevron}\n </button>\n </div>\n );\n\n return inline ? (\n badge\n ) : (\n <div className={styles.fixedOverlay}>\n <div className={styles.contentSurface}>{badge}</div>\n </div>\n );\n}\n\nfunction getStatusString(status: CloudpackStatus) {\n if (status.status === 'pending') {\n return 'Running';\n }\n\n if (status.totalTasks === 0) {\n return 'Idle';\n }\n\n return status.totalErrors === 0 ? 'Success' : 'Errors';\n}\n\nfunction getStatusClassName({ status, totalTasks, totalErrors, totalWarnings }: CloudpackStatus, inline: boolean) {\n return cx(styles.badge, {\n [styles.inline]: inline,\n [styles.building]: status === 'pending',\n [styles.success]: status === 'idle' && totalTasks > 0 && totalErrors === 0 && totalWarnings === 0,\n [styles.error]: status === 'idle' && totalErrors > 0,\n [styles.warning]: status === 'idle' && totalErrors === 0 && totalWarnings > 0,\n });\n}\n\nfunction getCollapsedClassName(isCollapsed: boolean) {\n return cx(styles.badge, {\n [styles.collapsed]: isCollapsed,\n });\n}\n\nfunction getStatsString({ totalTasks, remainingTasks, totalErrors, totalWarnings }: CloudpackStatus) {\n if (totalTasks === 0) {\n return '';\n }\n\n return [\n remainingTasks > 0 && `${remainingTasks} of ${totalTasks} tasks pending`,\n remainingTasks === 0 && `${totalTasks} tasks completed`,\n totalErrors === 1 && `${totalErrors} error`,\n totalErrors > 1 && `${totalErrors} errors`,\n totalWarnings === 1 && `${totalWarnings} warning`,\n totalWarnings > 1 && `${totalWarnings} warnings`,\n ]\n .filter(Boolean)\n .join(', ');\n}\n", "import { type RefObject, useEffect, useState } from 'react';\n\n/**\n * Make an element draggable. Note that changing `enabled` or passing different ref objects\n * will trigger reconfiguring the event handlers, but changing `.current` will not.\n * @returns Whether the element is currently being dragged\n */\nexport function useDraggable(options: {\n /** Whether to enable dragging */\n enabled: boolean;\n /** Element that should be draggable */\n containerElementRef: RefObject<HTMLElement>;\n /** The drag handle element */\n dragElementRef: RefObject<HTMLElement>;\n}) {\n const { enabled, containerElementRef, dragElementRef } = options;\n\n const [isDragging, setIsDragging] = useState(false);\n\n useEffect(() => {\n const moveTarget = containerElementRef?.current;\n const dragTarget = dragElementRef?.current;\n\n if (!enabled || !moveTarget || !dragTarget) {\n return;\n }\n\n let originalX = 0;\n let originalY = 0;\n let offset = { x: 0, y: 0 };\n\n const onPointerMove = (event: PointerEvent) => {\n moveTarget.style.transform = `translate(${offset.x + event.clientX - originalX}px, ${\n offset.y + event.clientY - originalY\n }px)`;\n };\n\n const onPointerUp = (event: PointerEvent) => {\n setIsDragging(false);\n offset = {\n x: offset.x + event.clientX - originalX,\n y: offset.y + event.clientY - originalY,\n };\n\n dragTarget.releasePointerCapture(event.pointerId);\n dragTarget.removeEventListener('pointerup', onPointerUp);\n dragTarget.removeEventListener('pointermove', onPointerMove);\n\n event.preventDefault();\n };\n\n const onPointerDown = (event: PointerEvent) => {\n setIsDragging(true);\n originalX = event.clientX;\n originalY = event.clientY;\n dragTarget.setPointerCapture(event.pointerId);\n dragTarget.addEventListener('pointerup', onPointerUp);\n dragTarget.addEventListener('pointermove', onPointerMove);\n event.preventDefault();\n };\n\n dragTarget.addEventListener('pointerdown', onPointerDown);\n\n return () => {\n dragTarget.removeEventListener('pointerdown', onPointerDown);\n dragTarget.removeEventListener('pointermove', onPointerMove);\n dragTarget.removeEventListener('pointerup', onPointerUp);\n };\n }, [enabled, containerElementRef, dragElementRef]);\n\n return {\n isDragging,\n };\n}\n", "// THIS FILE IS AUTO GENERATED FROM packages/overlay/src/components/StatusBadge/StatusBadge.module.css\n\n\nlet compiledModule = `.uHuWYf-StatusBadgemodule--fixedOverlay {\\n position: fixed;\\n pointer-events: none;\\n background: transparent;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n z-index: 99999;\\n overflow: hidden;\\n}\\n\\n.uHuWYf-StatusBadgemodule--gripArea {\\n display: flex;\\n flex-direction: row;\\n gap: 2px;\\n height: 100%;\\n width: 12px;\\n cursor: move;\\n margin-right: -4px;\\n}\\n\\n.uHuWYf-StatusBadgemodule--grip {\\n width: 2px;\\n height: 100%;\\n background: rgba(0, 0, 0, 0.2);\\n}\\n\\n.uHuWYf-StatusBadgemodule--contentSurface {\\n pointer-events: auto;\\n display: contents;\\n}\\n\\n.uHuWYf-StatusBadgemodule--badge {\\n position: absolute;\\n bottom: 4px;\\n right: 4px;\\n font-size: 12px;\\n display: inline-flex;\\n gap: 8px;\\n background: #dddddd;\\n box-shadow: 0 0 12px -6px rgba(0, 0, 0, 0.75);\\n border: 1px solid #999999;\\n border-radius: 4px;\\n height: 28px;\\n flex-shrink: 0;\\n justify-content: center;\\n align-items: center;\\n box-sizing: border-box;\\n padding: 3px;\\n padding-right: 8px;\\n\\n transition: background-color 0.2s ease-in-out;\\n}\\n\\n.uHuWYf-StatusBadgemodule--inline {\\n flex-shrink: 0;\\n position: relative;\\n bottom: auto;\\n right: auto;\\n top: auto;\\n left: auto;\\n box-shadow: none;\\n padding-left: 8px;\\n}\\n\\n.uHuWYf-StatusBadgemodule--building {\\n background: #bbb;\\n color: #000;\\n}\\n\\n.uHuWYf-StatusBadgemodule--success {\\n background: #7ad17a;\\n color: #000;\\n}\\n\\n.uHuWYf-StatusBadgemodule--warning {\\n background: #e4e68b;\\n color: #000;\\n}\\n\\n.uHuWYf-StatusBadgemodule--error {\\n background: #ffb9b9;\\n color: #000;\\n}\\n\\n.uHuWYf-StatusBadgemodule--button {\\n cursor: pointer;\\n background: inherit;\\n border: none;\\n border-radius: 3px;\\n display: flex;\\n align-self: stretch;\\n align-items: center;\\n justify-content: center;\\n box-sizing: border-box;\\n padding: 0;\\n margin: 0;\\n font-weight: inherit;\\n font-size: inherit;\\n font-family: inherit;\\n}\\n\\n.uHuWYf-StatusBadgemodule--button:hover {\\n filter: invert(0.1);\\n}\\n\\n.uHuWYf-StatusBadgemodule--value {\\n font-weight: 600;\\n background: rgba(255, 255, 255, 0.4);\\n box-shadow: 2px 2px 3px -1px rgba(0, 0, 0, 0.15) inset;\\n padding: 2px 8px;\\n border-radius: 3px;\\n}\\n\\n.uHuWYf-StatusBadgemodule--metric {\\n margin-left: 2px;\\n}\\n\\n.uHuWYf-StatusBadgemodule--collapsed {\\n overflow: hidden;\\n padding: 0;\\n}\\n.uHuWYf-StatusBadgemodule--collapsed *:not(.uHuWYf-StatusBadgemodule--chevron) {\\n display: none;\\n}\\n\\n.uHuWYf-StatusBadgemodule--chevron {\\n padding: 0 3px;\\n}\\n`;\nconst s = document.createElement('style');\ns.setAttribute('data-sourceFile', 'packages/overlay/src/components/StatusBadge/StatusBadge.module.css');\ns.appendChild(document.createTextNode(compiledModule));\ndocument.head.appendChild(s)\nexport const badge = 'uHuWYf-StatusBadgemodule--badge';\nexport const building = 'uHuWYf-StatusBadgemodule--building';\nexport const button = 'uHuWYf-StatusBadgemodule--button';\nexport const chevron = 'uHuWYf-StatusBadgemodule--chevron';\nexport const collapsed = 'uHuWYf-StatusBadgemodule--collapsed';\nexport const contentSurface = 'uHuWYf-StatusBadgemodule--contentSurface';\nexport const error = 'uHuWYf-StatusBadgemodule--error';\nexport const fixedOverlay = 'uHuWYf-StatusBadgemodule--fixedOverlay';\nexport const grip = 'uHuWYf-StatusBadgemodule--grip';\nexport const gripArea = 'uHuWYf-StatusBadgemodule--gripArea';\nexport const inline = 'uHuWYf-StatusBadgemodule--inline';\nexport const metric = 'uHuWYf-StatusBadgemodule--metric';\nexport const success = 'uHuWYf-StatusBadgemodule--success';\nexport const value = 'uHuWYf-StatusBadgemodule--value';\nexport const warning = 'uHuWYf-StatusBadgemodule--warning';\nexport default {badge, building, button, chevron, collapsed, contentSurface, error, fixedOverlay, grip, gripArea, inline, metric, success, value, warning}\n", "import { useEffect, useState } from 'react';\nimport { useCloudpack } from './CloudpackProvider.js';\nimport { taskStatsSource, type TaskStats } from '@ms-cloudpack/api-server/browser';\n\nexport type CloudpackStatus = TaskStats;\n\nconst defaultStatus: CloudpackStatus = {\n status: 'unknown',\n remainingTasks: 0,\n totalTasks: 0,\n totalErrors: 0,\n totalWarnings: 0,\n};\n\nexport const useStatus = () => {\n const service = useCloudpack();\n const [status, setStatus] = useState<CloudpackStatus>(() => service?.getValue(taskStatsSource) || defaultStatus);\n\n useEffect(() => service?.subscribe(taskStatsSource, setStatus), [service]);\n\n return status;\n};\n", "import React, { useCallback } from 'react';\nimport { TaskList } from './TaskList.js';\nimport { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';\nimport { Button } from '../Button/Button.js';\nimport { Dialog } from '../Dialog/Dialog.js';\nimport { Searchbox } from './Searchbox.js';\nimport { elementIds } from '../../constants.js';\n\nexport interface StatusDialogProps {\n onClose: () => void;\n}\n\nexport function StatusDialog({ onClose }: StatusDialogProps) {\n const cloudpack = useCloudpack();\n const [searchFilter, setSearchFilter] = React.useState('');\n const [issuesOnly, setIssuesOnly] = React.useState(false);\n\n const handleSearchChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n event.preventDefault();\n setSearchFilter(event.target.value);\n }, []);\n\n const restartAllTasks = () => {\n cloudpack.restartAllTasks();\n };\n\n const toggleIssuesOnly = () => setIssuesOnly((value) => !value);\n\n return (\n <Dialog\n title=\"Task results\"\n id={elementIds.statusDialogRoot}\n draggable\n onClose={onClose}\n commands={[\n <Button primary onClick={restartAllTasks} key=\"restart\">\n Restart all tasks\n </Button>,\n <Button onClick={toggleIssuesOnly} key=\"issues\">\n {issuesOnly ? 'Show all tasks' : 'Show tasks with issues'}\n </Button>,\n ]}\n >\n <Searchbox value={searchFilter} onChange={handleSearchChange} />\n <TaskList searchFilter={searchFilter} issuesOnly={issuesOnly} />\n </Dialog>\n );\n}\n", "import React from 'react';\nimport { TaskStatus } from './TaskStatus.js';\nimport { type TaskDescriptionType, useStatusDetails } from '../CloudpackProvider/useStatusDetails.js';\nimport styles from './TaskList.module.css';\n\nexport interface TaskListProps {\n searchFilter?: string;\n issuesOnly?: boolean;\n}\n\nexport function TaskList({ searchFilter, issuesOnly }: TaskListProps) {\n const details = useStatusDetails();\n const tasks = (details.tasks || []).sort(sortTasks);\n\n let filteredTasks = tasks;\n if (searchFilter) {\n searchFilter = searchFilter.toLowerCase();\n filteredTasks = filteredTasks.filter(({ name }) => searchFilter && name.toLowerCase().includes(searchFilter));\n }\n if (issuesOnly) {\n filteredTasks = filteredTasks.filter(({ errors, warnings }) => errors?.length || warnings?.length);\n }\n\n return (\n <div className={styles.root}>\n {filteredTasks.map((task) => (\n <TaskStatus key={task.name} task={task} />\n ))}\n </div>\n );\n}\n\n/**\n * Really the server should be sorting. Get stuff out of the browser.\n */\nfunction sortTasks(a: TaskDescriptionType, b: TaskDescriptionType) {\n const aStatus = a.status === 'pending' ? 1 : 0;\n const bStatus = b.status === 'pending' ? 1 : 0;\n\n if (aStatus !== bStatus) {\n return aStatus > bStatus ? -1 : 1;\n }\n\n const aErrors = a.errors?.length || 0;\n const bErrors = b.errors?.length || 0;\n\n if (aErrors !== bErrors) {\n return aErrors > bErrors ? -1 : 1;\n }\n\n return a.name < b.name ? -1 : 1;\n}\n", "import React from 'react';\nimport type { TaskDescriptionType } from '../CloudpackProvider/useStatusDetails.js';\nimport { TaskResultItem } from './TaskResultItem.js';\nimport styles from './TaskStatus.module.css';\nimport { default as cx } from 'classnames';\nimport ErrorIcon from '../../images/error-24.inline.svg';\nimport SuccessIcon from '../../images/success-24.inline.svg';\nimport ChevronDownIcon from '../../images/chevrondown-20.inline.svg';\nimport { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';\nimport { Button } from '../Button/Button.js';\n\nexport interface TaskStatusProps {\n task: TaskDescriptionType;\n}\n\nfunction getCompletion(task: TaskDescriptionType) {\n if (task.status === 'pending') {\n return 'Running';\n }\n return [\n `Completed in ${task.durationMilliseconds}ms`,\n task.errors?.length && `${task.errors.length} error${task.errors.length > 1 ? 's' : ''}`,\n task.warnings?.length && `${task.warnings.length} warning${task.warnings.length > 1 ? 's' : ''}`,\n ]\n .filter(Boolean)\n .join(', ');\n}\n\nexport function TaskStatus({ task }: TaskStatusProps) {\n const [isOpen, setIsOpen] = React.useState<boolean | undefined>(undefined);\n const { name, warnings, errors } = task;\n const cloudpack = useCloudpack();\n const showContent = isOpen === true || (isOpen === undefined && task.errors?.length > 0);\n\n const open = (rootPath: string) => {\n cloudpack.open({\n rootPath,\n });\n };\n\n const openPackage = () => {\n cloudpack.openSource({\n rootPath: task.inputPath,\n relativePath: 'package.json',\n line: 0,\n column: 0,\n });\n };\n\n const restartTask = () => {\n cloudpack.restartTask({ id: task.id, inputPath: task.inputPath });\n };\n\n return (\n <div className={styles.root}>\n <div className={getHeaderClassName(task)}>\n <button\n className={styles.expandButton}\n onClick={() => setIsOpen(!showContent)}\n aria-label={showContent ? `Minimize ${name}` : `Expand ${name}`}\n >\n <img\n className={cx(styles.expandIcon, !showContent && styles.collapsed)}\n src={ChevronDownIcon}\n alt=\"Chevron down icon\"\n />\n </button>\n {errors?.length === 0 && warnings?.length === 0 && (\n <img className={styles.errorIcon} src={SuccessIcon} alt=\"Success icon\" />\n )}\n {errors?.length > 0 && <img className={styles.errorIcon} src={ErrorIcon} alt=\"Error icon\" />}\n <div className={styles.title}>{name}</div>\n <div className={styles.farArea}>{getCompletion(task)}</div>\n </div>\n {showContent && (\n <>\n <div className={styles.commands}>\n <Button onClick={restartTask}>Restart task</Button>\n </div>\n <div className={styles.content}>\n <div className={styles.title}>Details</div>\n <div className={styles.nameValueArea}>\n <div className={styles.name}>Input path</div>\n <div className={styles.value}>\n <button className={styles.linkButton} onClick={() => open(task.inputPath)}>\n {task.inputPath}\n </button>\n\n <button className={styles.linkButton} onClick={openPackage}>\n (Package.json)\n </button>\n </div>\n </div>\n <div className={styles.nameValueArea}>\n <div className={styles.name}>Output path</div>\n <button className={styles.linkButton} onClick={() => open(task.outputPath)}>\n {task.outputPath}\n </button>\n </div>\n {errors?.length > 0 && (\n <>\n <div className={styles.title}>Errors</div>\n <div className={styles.resultItems}>\n {errors.map((error, index) => (\n <TaskResultItem key={index} item={error} projectPath={task.inputPath} index={index + 1} />\n ))}\n </div>\n </>\n )}\n {warnings?.length > 0 && (\n <>\n <div className={styles.title}>Warnings</div>\n <div className={styles.resultItems}>\n {warnings.map((warning, index) => (\n <TaskResultItem key={index} item={warning} projectPath={task.inputPath} index={index + 1} />\n ))}\n </div>\n </>\n )}\n </div>\n </>\n )}\n </div>\n );\n}\n\nfunction getHeaderClassName(task: TaskDescriptionType) {\n return cx(styles.header, {\n [styles.success]: task.errors?.length === 0 && task.warnings?.length === 0,\n [styles.warning]: task.errors?.length === 0 && task.warnings?.length > 0,\n [styles.error]: task.errors?.length > 0,\n });\n}\n", "import type { BundleMessage } from '@ms-cloudpack/common-types';\nimport React from 'react';\nimport { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';\nimport styles from './TaskResultItem.module.css';\n\nexport interface TaskResultItemProps {\n item: BundleMessage;\n projectPath: string;\n index: number;\n}\n\nexport function TaskResultItem({ item, projectPath, index }: TaskResultItemProps) {\n const service = useCloudpack();\n\n const openSource = (ev: React.MouseEvent) => {\n if (item.location) {\n service.openSource({\n rootPath: projectPath,\n relativePath: item.location?.file,\n line: item.location?.line,\n column: item.location?.column,\n });\n ev.preventDefault();\n }\n };\n\n const filename = item.location?.file || '(path unavailable)';\n const location = ['', item.location?.line, item.location?.column].filter(Boolean).join(':');\n\n return (\n <div className={styles.root}>\n <div className={styles.statusBar}></div>\n <div className={styles.content}>\n <div className={styles.titleArea}>\n <button onClick={openSource} className={styles.file}>\n {index}. {filename}\n {location && ` (${location})`}:\n </button>\n </div>\n <div className={styles.text}>\n [{item.source}] {item.text}\n </div>\n <pre className={styles.text}>{JSON.stringify(item, null, 2)}</pre>\n </div>\n </div>\n );\n}\n", "// THIS FILE IS AUTO GENERATED FROM packages/overlay/src/components/StatusDialog/TaskResultItem.module.css\n\n\nlet compiledModule = `.FSsdmcQ-TaskResultItemmodule--root {\\n display: flex;\\n background: #f5f5f5;\\n}\\n\\n.FSsdmcQ-TaskResultItemmodule--statusBar {\\n flex-shrink: 0;\\n border-radius: 4px;\\n width: 4px;\\n background: #aa0000;\\n box-shadow: 2px 0 4px 0 rgb(220 0 0 / 20%);\\n}\\n\\n.FSsdmcQ-TaskResultItemmodule--content {\\n padding: 8px;\\n display: flex;\\n flex-grow: 1;\\n overflow: hidden;\\n flex-direction: column;\\n}\\n\\n.FSsdmcQ-TaskResultItemmodule--titleArea {\\n display: flex;\\n align-items: center;\\n flex-direction: row;\\n gap: 4px;\\n padding: 4px 0;\\n}\\n\\n.FSsdmcQ-TaskResultItemmodule--file {\\n display: inline-flex;\\n margin: 0;\\n padding: 0;\\n border: none;\\n background: inherit;\\n font-family: inherit;\\n flex-grow: 1;\\n font-weight: 500;\\n font-size: 14px;\\n flex-shrink: 0;\\n text-decoration: none;\\n color: #000;\\n cursor: pointer;\\n}\\n\\n.FSsdmcQ-TaskResultItemmodule--file:hover {\\n text-decoration: underline;\\n}\\n\\n.FSsdmcQ-TaskResultItemmodule--actionArea {\\n display: flex;\\n flex-direction: row;\\n gap: 8px;\\n flex-shrink: 0;\\n}\\n\\n.FSsdmcQ-TaskResultItemmodule--text {\\n word-wrap: break-word;\\n color: #333;\\n}\\n`;\nconst s = document.createElement('style');\ns.setAttribute('data-sourceFile', 'packages/overlay/src/components/StatusDialog/TaskResultItem.module.css');\ns.appendChild(document.createTextNode(compiledModule));\ndocument.head.appendChild(s)\nexport const actionArea = 'FSsdmcQ-TaskResultItemmodule--actionArea';\nexport const content = 'FSsdmcQ-TaskResultItemmodule--content';\nexport const file = 'FSsdmcQ-TaskResultItemmodule--file';\nexport const root = 'FSsdmcQ-TaskResultItemmodule--root';\nexport const statusBar = 'FSsdmcQ-TaskResultItemmodule--statusBar';\nexport const text = 'FSsdmcQ-TaskResultItemmodule--text';\nexport const titleArea = 'FSsdmcQ-TaskResultItemmodule--titleArea';\nexport default {actionArea, content, file, root, statusBar, text, titleArea}\n", "// THIS FILE IS AUTO GENERATED FROM packages/overlay/src/components/StatusDialog/TaskStatus.module.css\n\n\nlet compiledModule = `.WGSBzu-TaskStatusmodule--root {\\n border: 1px solid #ccc;\\n border-radius: 3px;\\n box-shadow: 0 0 12px -6px rgba(0, 0, 0, 0.25);\\n}\\n\\n.WGSBzu-TaskStatusmodule--header {\\n display: flex;\\n gap: 8px;\\n padding: 8px 16px;\\n background: #f0f0f0;\\n align-items: center;\\n line-height: 1;\\n}\\n\\n.WGSBzu-TaskStatusmodule--commands {\\n display: flex;\\n flex-direction: row;\\n gap: 8px;\\n align-items: center;\\n flex-shrink: 0;\\n height: 40px;\\n padding: 0 16px;\\n}\\n\\n.WGSBzu-TaskStatusmodule--expandButton {\\n background: transparent;\\n border: none;\\n border-radius: 4px;\\n width: 32px;\\n height: 32px;\\n}\\n.WGSBzu-TaskStatusmodule--expandButton:hover {\\n background: rgba(0, 0, 0, 0.1);\\n}\\n\\n.WGSBzu-TaskStatusmodule--expandButton:active {\\n background: rgba(0, 0, 0, 0.2);\\n}\\n\\n.WGSBzu-TaskStatusmodule--expandIcon {\\n transition: transform 0.1s ease-in-out;\\n}\\n\\n.WGSBzu-TaskStatusmodule--collapsed {\\n transform: rotate(-90deg);\\n}\\n\\n.WGSBzu-TaskStatusmodule--farArea {\\n line-height: 1;\\n font-size: 13px;\\n text-align: end;\\n display: flex;\\n align-items: baseline;\\n flex-direction: row;\\n gap: 8px;\\n display: flex;\\n flex-grow: 1;\\n justify-content: end;\\n flex-direction: row;\\n}\\n\\n.WGSBzu-TaskStatusmodule--title {\\n font-size: 16px;\\n font-weight: 500;\\n color: #333;\\n}\\n\\n.WGSBzu-TaskStatusmodule--subTitle {\\n font-size: 13px;\\n}\\n\\n.WGSBzu-TaskStatusmodule--content {\\n border-top: 1px solid #ccc;\\n background: #fafafa;\\n padding: 8px 16px;\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n}\\n\\n.WGSBzu-TaskStatusmodule--resultItems {\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n}\\n\\n.WGSBzu-TaskStatusmodule--error {\\n background: #ffe9e9;\\n}\\n\\n.WGSBzu-TaskStatusmodule--success {\\n background: #e9f9e9;\\n}\\n\\n.WGSBzu-TaskStatusmodule--warning {\\n background: #fff9e9;\\n}\\n\\n.WGSBzu-TaskStatusmodule--name {\\n font-size: 12px;\\n font-weight: 600;\\n text-transform: uppercase;\\n}\\n\\n.WGSBzu-TaskStatusmodule--value {\\n display: flex;\\n flex-direction: column;\\n font-size: 14px;\\n color: #333;\\n}\\n\\n.WGSBzu-TaskStatusmodule--linkButton {\\n display: inline-flex;\\n align-items: flex-start;\\n text-align: start;\\n margin: 0;\\n padding: 0;\\n border: none;\\n background: inherit;\\n font-family: inherit;\\n flex-grow: 1;\\n\\n font-size: 14px;\\n flex-shrink: 0;\\n text-decoration: none;\\n color: #000;\\n cursor: pointer;\\n}\\n\\n.WGSBzu-TaskStatusmodule--linkButton:hover {\\n text-decoration: underline;\\n}\\n`;\nconst s = document.createElement('style');\ns.setAttribute('data-sourceFile', 'packages/overlay/src/components/StatusDialog/TaskStatus.module.css');\ns.appendChild(document.createTextNode(compiledModule));\ndocument.head.appendChild(s)\nexport const collapsed = 'WGSBzu-TaskStatusmodule--collapsed';\nexport const commands = 'WGSBzu-TaskStatusmodule--commands';\nexport const content = 'WGSBzu-TaskStatusmodule--content';\nexport const error = 'WGSBzu-TaskStatusmodule--error';\nexport const expandButton = 'WGSBzu-TaskStatusmodule--expandButton';\nexport const expandIcon = 'WGSBzu-TaskStatusmodule--expandIcon';\nexport const farArea = 'WGSBzu-TaskStatusmodule--farArea';\nexport const header = 'WGSBzu-TaskStatusmodule--header';\nexport const linkButton = 'WGSBzu-TaskStatusmodule--linkButton';\nexport const name = 'WGSBzu-TaskStatusmodule--name';\nexport const resultItems = 'WGSBzu-TaskStatusmodule--resultItems';\nexport const root = 'WGSBzu-TaskStatusmodule--root';\nexport const subTitle = 'WGSBzu-TaskStatusmodule--subTitle';\nexport const success = 'WGSBzu-TaskStatusmodule--success';\nexport const title = 'WGSBzu-TaskStatusmodule--title';\nexport const value = 'WGSBzu-TaskStatusmodule--value';\nexport const warning = 'WGSBzu-TaskStatusmodule--warning';\nexport default {collapsed, commands, content, error, expandButton, expandIcon, farArea, header, linkButton, name, resultItems, root, subTitle, success, title, value, warning}\n", "import React from 'react';\nimport styles from './Button.module.css';\n\nexport function Button(props: React.ButtonHTMLAttributes<HTMLButtonElement> & { primary?: boolean }) {\n const { primary, ...other } = props;\n const className = primary ? styles.primaryButton : styles.standardButton;\n return <button {...other} className={className} type={'button'} />;\n}\n", "// THIS FILE IS AUTO GENERATED FROM packages/overlay/src/components/Button/Button.module.css\n\n\nlet compiledModule = `.RpmxvThK-Buttonmodule--standardButton {\\n outline: transparent;\\n position: relative;\\n font-family: inherit;\\n font-size: 14px;\\n font-weight: 600;\\n box-sizing: border-box;\\n border: 1px solid rgb(138, 136, 134);\\n display: inline-block;\\n text-decoration: none;\\n text-align: center;\\n cursor: pointer;\\n padding: 0px 16px;\\n border-radius: 2px;\\n min-width: 80px;\\n height: 32px;\\n background-color: rgb(255, 255, 255);\\n color: rgb(50, 49, 48);\\n user-select: none;\\n}\\n\\n.RpmxvThK-Buttonmodule--standardButton:active {\\n background-color: rgb(237, 235, 233);\\n color: rgb(32, 31, 30);\\n}\\n\\n.RpmxvThK-Buttonmodule--standardButton:hover {\\n background-color: rgb(243, 242, 241);\\n color: rgb(32, 31, 30);\\n}\\n\\n.RpmxvThK-Buttonmodule--standardButton:focus {\\n border: 3px solid rgb(0, 0, 0);\\n}\\n\\n.RpmxvThK-Buttonmodule--primaryButton {\\n outline: transparent;\\n position: relative;\\n font-family: inherit;\\n font-size: 14px;\\n font-weight: 600;\\n box-sizing: border-box;\\n border: 1px solid rgb(0, 120, 212);\\n display: inline-block;\\n text-decoration: none;\\n text-align: center;\\n cursor: pointer;\\n padding: 0px 16px;\\n border-radius: 2px;\\n min-width: 80px;\\n height: 32px;\\n background-color: rgb(0, 120, 212);\\n color: rgb(255, 255, 255);\\n user-select: none;\\n}\\n\\n.RpmxvThK-Buttonmodule--primaryButton:active {\\n background-color: rgb(0, 90, 158);\\n border: 1px solid rgb(0, 90, 158);\\n color: rgb(255, 255, 255);\\n}\\n\\n.RpmxvThK-Buttonmodule--primaryButton:hover {\\n background-color: rgb(16, 110, 190);\\n border: 1px solid rgb(16, 110, 190);\\n color: rgb(255, 255, 255);\\n}\\n\\n.RpmxvThK-Buttonmodule--primaryButton:focus {\\n border: 3px solid rgb(0, 0, 0);\\n}\\n`;\nconst s = document.createElement('style');\ns.setAttribute('data-sourceFile', 'packages/overlay/src/components/Button/Button.module.css');\ns.appendChild(document.createTextNode(compiledModule));\ndocument.head.appendChild(s)\nexport const primaryButton = 'RpmxvThK-Buttonmodule--primaryButton';\nexport const standardButton = 'RpmxvThK-Buttonmodule--standardButton';\nexport default {primaryButton, standardButton}\n", "import { useEffect, useState } from 'react';\nimport { useCloudpack } from './CloudpackProvider.js';\nimport { taskListSource } from '@ms-cloudpack/api-server/browser';\nimport type { BundleMessage } from '@ms-cloudpack/common-types';\n\nexport interface TaskDescriptionType {\n id: string;\n name: string;\n inputPath: string;\n outputPath: string;\n status: 'pending' | 'complete';\n errors: BundleMessage[];\n warnings: BundleMessage[];\n durationMilliseconds: number;\n}\n\ninterface CloudpackStatusDetailsType {\n tasks: TaskDescriptionType[];\n}\n\nexport const useStatusDetails = () => {\n const service = useCloudpack();\n const [details, setDetails] = useState<CloudpackStatusDetailsType>({ tasks: [] });\n\n useEffect(() => service?.subscribe(taskListSource, setDetails), [service]);\n\n return details;\n};\n", "// THIS FILE IS AUTO GENERATED FROM packages/overlay/src/components/StatusDialog/TaskList.module.css\n\n\nlet compiledModule = `.ZnVPBoZ-TaskListmodule--root {\\n flex-grow: 1;\\n overflow: auto;\\n border-top: 1px solid #ccc;\\n box-sizing: border-box;\\n padding: 20px;\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n}\\n`;\nconst s = document.createElement('style');\ns.setAttribute('data-sourceFile', 'packages/overlay/src/components/StatusDialog/TaskList.module.css');\ns.appendChild(document.createTextNode(compiledModule));\ndocument.head.appendChild(s)\nexport const root = 'ZnVPBoZ-TaskListmodule--root';\nexport default {root}\n", "import { default as React, useRef } from 'react';\nimport styles from './Dialog.module.css';\nimport { useDraggable } from '../../hooks/useDraggable.js';\nimport CloseIcon from '../../images/dismiss-16-filled.inline.svg';\n\nexport interface DialogProps {\n title: string;\n id: string;\n style?: 'default' | 'error';\n draggable?: boolean;\n onClose?: () => void;\n commands?: React.ReactNode[];\n children: React.ReactNode;\n}\n\nexport function Dialog({ title, id, style, draggable, onClose, commands, children }: DialogProps) {\n const draggableRef = useRef<HTMLDivElement>(null);\n const draggableTargetRef = useRef<HTMLDivElement>(null);\n const colorAccent = style === 'error' ? 'rgb(164, 38, 44)' : undefined;\n const cursorDraggable = draggable ? 'move' : undefined;\n\n useDraggable({\n enabled: !!draggable,\n containerElementRef: draggableRef,\n dragElementRef: draggableTargetRef,\n });\n\n return (\n <div id={id} className={styles.overlay}>\n <div ref={draggableRef} className={styles.dialog} style={{ borderTopColor: colorAccent }}>\n <div className={styles.titleArea}>\n <div\n ref={draggableTargetRef}\n className={styles.title}\n style={{ color: colorAccent, cursor: cursorDraggable }}\n >\n {title}\n </div>\n {onClose && (\n <button className={styles.closeButton} onClick={onClose} aria-label=\"Minimize overlay\">\n {/* a close icon is common/universal enough that it doesn't need alt text */}\n <img src={CloseIcon} alt=\"\" />\n </button>\n )}\n </div>\n {commands && <div className={styles.commands}>{...commands}</div>}\n {children}\n </div>\n </div>\n );\n}\n", "// THIS FILE IS AUTO GENERATED FROM packages/overlay/src/components/Dialog/Dialog.module.css\n\n\nlet compiledModule = `.XZLLsVjN-Dialogmodule--overlay {\\n background: rgba(0, 0, 0, 0.1);\\n border: 1px solid black;\\n position: fixed;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n z-index: 999;\\n}\\n\\n@keyframes fade-in {\\n 0% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n\\n.XZLLsVjN-Dialogmodule--commands {\\n display: flex;\\n flex-direction: row;\\n gap: 8px;\\n align-items: center;\\n flex-shrink: 0;\\n height: 40px;\\n padding: 0 20px;\\n}\\n\\n.XZLLsVjN-Dialogmodule--dialog {\\n animation: fade-in 0.1s ease-in-out;\\n width: 80vw;\\n align-self: stretch;\\n margin: 20px 0;\\n background: white;\\n color: #000;\\n box-sizing: border-box;\\n display: flex;\\n flex-direction: column;\\n border-top: 4px solid rgb(0, 120, 212);\\n border-radius: 3px;\\n box-shadow:\\n rgb(0 0 0 / 22%) 0px 25.6px 57.6px 0px,\\n rgb(0 0 0 / 18%) 0px 4.8px 14.4px 0px;\\n position: relative;\\n outline: transparent solid 3px;\\n}\\n\\n.XZLLsVjN-Dialogmodule--titleArea {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n padding: 8px 8px 8px 20px;\\n gap: 8px;\\n}\\n\\n.XZLLsVjN-Dialogmodule--closeButton {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n width: 32px;\\n height: 32px;\\n margin: 0;\\n padding: 0;\\n background: transparent;\\n border: none;\\n border-radius: 4px;\\n}\\n\\n.XZLLsVjN-Dialogmodule--closeButton:hover {\\n background: rgba(0, 0, 0, 0.1);\\n}\\n\\n.XZLLsVjN-Dialogmodule--closeButton:active {\\n background: rgba(0, 0, 0, 0.2);\\n}\\n\\n.XZLLsVjN-Dialogmodule--title {\\n flex-grow: 1;\\n font-size: 20px;\\n font-weight: 600;\\n color: rgb(0, 120, 212);\\n}\\n`;\nconst s = document.createElement('style');\ns.setAttribute('data-sourceFile', 'packages/overlay/src/components/Dialog/Dialog.module.css');\ns.appendChild(document.createTextNode(compiledModule));\ndocument.head.appendChild(s)\nexport const closeButton = 'XZLLsVjN-Dialogmodule--closeButton';\nexport const commands = 'XZLLsVjN-Dialogmodule--commands';\nexport const dialog = 'XZLLsVjN-Dialogmodule--dialog';\nexport const overlay = 'XZLLsVjN-Dialogmodule--overlay';\nexport const title = 'XZLLsVjN-Dialogmodule--title';\nexport const titleArea = 'XZLLsVjN-Dialogmodule--titleArea';\nexport default {closeButton, commands, dialog, overlay, title, titleArea}\n", "import React from 'react';\nimport styles from './Searchbox.module.css';\n\nexport interface SearchboxProps {\n value: string;\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport function Searchbox({ value, onChange }: SearchboxProps) {\n return (\n <>\n {typeof value === 'string' && (\n <input type=\"text\" placeholder=\"Search\" className={styles.searchbox} onChange={onChange} value={value} />\n )}\n </>\n );\n}\n", "// THIS FILE IS AUTO GENERATED FROM packages/overlay/src/components/StatusDialog/Searchbox.module.css\n\n\nlet compiledModule = `.aJeqJtva-Searchboxmodule--searchbox {\\n position: absolute;\\n font-size: 14px;\\n font-weight: 400;\\n box-shadow: none;\\n padding: 0px 4px;\\n box-sizing: border-box;\\n color: rgb(50, 49, 48);\\n background-color: rgb(255, 255, 255);\\n display: flex;\\n flex-flow: row nowrap;\\n align-items: stretch;\\n border-radius: 2px;\\n border: 1px solid rgb(96, 94, 92);\\n height: 32px;\\n min-width: 160px;\\n top: 52px;\\n right: 20px;\\n}\\n`;\nconst s = document.createElement('style');\ns.setAttribute('data-sourceFile', 'packages/overlay/src/components/StatusDialog/Searchbox.module.css');\ns.appendChild(document.createTextNode(compiledModule));\ndocument.head.appendChild(s)\nexport const searchbox = 'aJeqJtva-Searchboxmodule--searchbox';\nexport default {searchbox}\n", "import { default as React } from 'react';\nimport { Button } from '../Button/Button.js';\nimport { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';\nimport { PathError } from './PathError.js';\nimport styles from '../StatusDialog/TaskList.module.css';\nimport type { UnsupportedErrorEvent } from './useErrorEvents.js';\nimport { Dialog } from '../Dialog/Dialog.js';\nimport { elementIds } from '../../constants.js';\n\nexport interface ErrorDialogProps {\n unsupported: UnsupportedErrorEvent[];\n}\n\nexport function ErrorDialog({ unsupported }: ErrorDialogProps) {\n const cloudpack = useCloudpack();\n\n const reload = () => {\n cloudpack.restartAllTasks();\n };\n\n return (\n <Dialog\n title=\"Found unsupported paths in your project\"\n id={elementIds.errorDialogRoot}\n style=\"error\"\n commands={[\n <Button primary onClick={reload} key=\"1\">\n Restart all tasks\n </Button>,\n ]}\n >\n <div className={styles.root}>\n {unsupported.map((data, index) => (\n <PathError {...data} key={index} />\n ))}\n </div>\n </Dialog>\n );\n}\n", "import React from 'react';\nimport styles from '../StatusDialog/TaskStatus.module.css';\nimport ErrorIcon from '../../images/error-24.inline.svg';\nimport { default as cx } from 'classnames';\nimport ChevronDownIcon from '../../images/chevrondown-20.inline.svg';\nimport type { UnsupportedErrorEvent } from './useErrorEvents.js';\nimport { Button } from '../Button/Button.js';\nimport { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';\n\nexport function PathError(props: UnsupportedErrorEvent) {\n const [showContent, setshowContent] = React.useState<boolean>(false);\n const { packageName, importPath, issuerUrl, fixable } = props;\n const cloudpack = useCloudpack();\n\n const editConfig = () => {\n cloudpack.editConfig();\n };\n\n const addOverride = () => {\n cloudpack.addOverride({ packageName, importPath, issuerUrl });\n };\n\n return (\n <div className={styles.root}>\n <div className={cx(styles.header, styles.error)}>\n <button\n className={styles.expandButton}\n onClick={() => setshowContent(!showContent)}\n aria-label={showContent ? `Minimize ${packageName}/${importPath}` : `Expand ${packageName}/${importPath}`}\n >\n <img\n className={cx(styles.expandIcon, !showContent && styles.collapsed)}\n src={ChevronDownIcon}\n alt=\"Chevron down icon\"\n />\n </button>\n <img className={styles.errorIcon} src={ErrorIcon} alt=\"Error icon\" />\n <div className={styles.title}>{`${packageName}/${importPath}`}</div>\n </div>\n {showContent && (\n <>\n <div className={styles.commands}>\n {fixable && <Button onClick={addOverride}>Add override</Button>}\n <Button onClick={editConfig}>Edit config file</Button>\n </div>\n <div className={styles.content}>\n <div className={styles.title}>Details</div>\n\n <div className={styles.nameValueArea}>\n <div className={styles.name}>Problem</div>\n <div className={styles.value}>\n {importPath === '.'\n ? `An unrecognized package \"${packageName}\" was imported.`\n : `Path \"${importPath}\" was imported from package \"${packageName}\" but was not recognized as an exported path.`}\n </div>\n </div>\n <div className={styles.nameValueArea}>\n <div className={styles.name}>Solution</div>\n <div className={styles.value}>\n {fixable\n ? `Remove the path from the import in your source. (Import from \"${packageName}\" rather than \"${packageName}/${importPath}\")`\n : importPath === '.'\n ? `Make sure the package name is valid.`\n : `Import not found on package. Make sure the import path is valid.`}\n </div>\n </div>\n </div>\n </>\n )}\n </div>\n );\n}\n", "import { useEffect, useState } from 'react';\nimport { parseImportString } from '@ms-cloudpack/path-string-parsing';\nimport { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';\n\ndeclare global {\n interface Window {\n __pageErrors: {\n uncaughtErrors: ErrorEvent[];\n uncaughtRejections: PromiseRejectionEvent[];\n unregister: () => void;\n };\n }\n}\n\n// Interface with reason as a record.\ninterface ReasonRecord extends PromiseRejectionEvent {\n readonly reason: Record<string, unknown>;\n}\n\n// Interface with message as a string.\ninterface ReasonString extends ReasonRecord {\n readonly reason: { message: string };\n}\n\n// Verify the reason is a record.\nconst reasonIsRecord = (event: PromiseRejectionEvent): event is ReasonRecord => {\n return typeof event.reason === 'object' && !Array.isArray(event.reason) && event.reason !== null;\n};\n\n// Verify the reason has a message which is a string.\nconst hasMessage = (event: PromiseRejectionEvent): event is ReasonString => {\n return reasonIsRecord(event) && typeof event.reason.message === 'string';\n};\n\nexport type UnsupportedErrorEvent = { packageName: string; importPath: string; issuerUrl?: string; fixable?: boolean };\n\nexport const useErrorEvents = () => {\n const [errorEvents, setErrorEvents] = useState<{ unsupported: UnsupportedErrorEvent[] }>({ unsupported: [] });\n const cloudpack = useCloudpack();\n\n useEffect(() => {\n const handleUnsupportedError = (message: string, issuerUrl?: string): void => {\n const errorRegex = /[Mm]odule specifier,? ['\"](.*?)['\"]/;\n const match = message.match(errorRegex);\n\n if (match) {\n const importString = parseImportString(match[1]);\n const { packageName } = importString;\n const importPath = importString.importPath.replace(/^\\.\\//, '');\n\n (async () => {\n const { fixable } = await cloudpack.validateOverride({ packageName, importPath, issuerUrl });\n setErrorEvents((prev) => ({\n ...prev,\n unsupported: [...prev.unsupported, { packageName, importPath, issuerUrl: issuerUrl, fixable }],\n }));\n })().catch(() => {\n // no-op\n });\n }\n };\n\n const pageErrors = window.__pageErrors;\n\n pageErrors.unregister();\n\n // Append unsupported paths to the list.\n window.addEventListener('error', (event: ErrorEvent) => {\n handleUnsupportedError(event.message, event.filename);\n });\n\n // Handle errors caught before rendering.\n for (const error of pageErrors.uncaughtErrors) {\n handleUnsupportedError(error.message, error.filename);\n }\n\n // Append unsupported paths to the list.\n window.addEventListener('unhandledrejection', (event: PromiseRejectionEvent) => {\n hasMessage(event) && handleUnsupportedError(event.reason.message);\n });\n\n // Handle rejections caught before rendering.\n for (const error of pageErrors.uncaughtRejections) {\n hasMessage(error) && handleUnsupportedError(error.reason.message);\n }\n }, [cloudpack]);\n\n return errorEvents;\n};\n", "import React from 'react';\nimport { useCloudpack } from '../components/CloudpackProvider/CloudpackProvider.js';\n\nexport function usePageLoadTimeReporter() {\n const [pageLoadTime, setPageLoadTime] = React.useState<number>();\n const cloudpack = useCloudpack();\n\n React.useEffect(() => {\n async function reportPageLoadTime() {\n const { getPageLoadTime, getBrowserCacheRatio } = window.__cloudpack;\n\n const newPageLoadTime = await getPageLoadTime();\n setPageLoadTime(newPageLoadTime);\n cloudpack.reportMetric({ metric: 'PAGE_LOAD_TIME', value: newPageLoadTime });\n\n // Page is loaded, the browser cache ratio can be reported\n cloudpack.reportMetric({ metric: 'BROWSER_CACHE_RATIO', value: getBrowserCacheRatio() });\n }\n\n void reportPageLoadTime();\n }, [cloudpack]);\n\n return pageLoadTime;\n}\n", "import React from 'react';\nimport styles from './ThemeProvider.module.css';\n\nexport function ThemeProvider({ children }: React.ComponentProps<'div'>) {\n return <div className={styles.root}>{children}</div>;\n}\n", "// THIS FILE IS AUTO GENERATED FROM packages/overlay/src/components/ThemeProvider/ThemeProvider.module.css\n\n\nlet compiledModule = `.ASWLkl-ThemeProvidermodule--root {\\n font-family:\\n Inter,\\n -apple-system,\\n BlinkMacSystemFont,\\n 'Segoe UI',\\n Roboto,\\n Oxygen,\\n Ubuntu,\\n Cantarell,\\n 'Fira Sans',\\n 'Droid Sans',\\n 'Helvetica Neue',\\n sans-serif;\\n}\\n`;\nconst s = document.createElement('style');\ns.setAttribute('data-sourceFile', 'packages/overlay/src/components/ThemeProvider/ThemeProvider.module.css');\ns.appendChild(document.createTextNode(compiledModule));\ndocument.head.appendChild(s)\nexport const root = 'ASWLkl-ThemeProvidermodule--root';\nexport default {root}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { CloudpackProvider } from './components/CloudpackProvider/CloudpackProvider.js';\nimport { StatusOverlay } from './components/StatusOverlay/StatusOverlay.js';\nimport { ThemeProvider } from './components/ThemeProvider/ThemeProvider.js';\nimport { elementIds } from './constants.js';\n\nconst rootDiv = document.createElement('div');\nrootDiv.id = elementIds.root;\n\nReactDOM.render(\n <ThemeProvider>\n <CloudpackProvider>\n <StatusOverlay />\n </CloudpackProvider>\n </ThemeProvider>,\n rootDiv,\n);\n\ndocument.body.appendChild(rootDiv);\n", "import React, { createContext, useState, useContext } from 'react';\nimport { createCloudpackClient, type CloudpackClient } from './createCloudpackClient.js';\n\nexport const CloudpackContext = createContext<CloudpackClient>(null as unknown as CloudpackClient);\n\nexport function CloudpackProvider({ children }: { children: React.ReactNode }) {\n const [client] = useState(createCloudpackClient);\n\n return <CloudpackContext.Provider value={client}>{children}</CloudpackContext.Provider>;\n}\n\nexport const useCloudpack = () => useContext(CloudpackContext);\n", "/**\n * Gets the cookies dictionary from the browser.\n */\nexport function getCookies(): Record<string, string> {\n return document.cookie\n .split(';')\n .map((s) => s.split('='))\n .reduce<Record<string, string>>((current, nextValue) => {\n const name = nextValue[0]?.trim();\n const value = decodeURIComponent(nextValue[1]?.trim());\n\n if (name && value) {\n current[name] = value;\n }\n\n return current;\n }, {});\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { getCookies } from './getCookies.js';\nimport { createDataBus, type DataBusPath } from '@ms-cloudpack/data-bus';\nimport type {\n AddPackageOverrideInput,\n OpenCodeEditorInput,\n OpenFilePathInput,\n ReportMetricInput,\n ValidatePackageOverrideInput,\n ValidatePackageOverrideOutput,\n} from '@ms-cloudpack/api-server/browser';\nimport type { z } from 'zod';\nimport { cookieNames } from '../../constants.js';\n\nexport interface CloudpackClient {\n /**\n * Closes the websocket connection.\n */\n dispose(): void;\n getValue<TZodData extends z.ZodType>(path: DataBusPath<TZodData>): z.infer<TZodData>;\n /**\n * Creates a subscription to the given path.\n */\n subscribe<TZodData extends z.ZodType>(\n path: DataBusPath<TZodData>,\n callback: (newValue: any, oldValue: any) => void,\n ): () => void;\n\n openSource(options: OpenCodeEditorInput): void;\n open(options: OpenFilePathInput): void;\n editConfig(): void;\n addOverride(options: AddPackageOverrideInput): void;\n validateOverride(options: ValidatePackageOverrideInput): Promise<ValidatePackageOverrideOutput>;\n restartAllTasks(): void;\n restartTask(options: { id: string; inputPath: string }): void;\n reportMetric(options: ReportMetricInput): void;\n}\n\nexport function createCloudpackClient(): CloudpackClient {\n const cookies = getCookies();\n const bus = createDataBus();\n let subCounter = 0;\n const subIds: Record<string, number> = {};\n\n bus.addProvider({\n path: [],\n onActivate: ({ path }) => {\n const id = subCounter++;\n subIds[path.join('/')] = id;\n sendMessage({ type: 'subscribe', data: { path, id } });\n },\n\n onDeactivate: ({ path }) => {\n const pathString = path.join('/');\n const id = subIds[pathString];\n delete subIds[pathString];\n sendMessage({ type: 'unsubscribe', data: { path, id } });\n },\n });\n\n const enqueuedMessages: string[] = [];\n const sessionId = cookies[cookieNames.sessionId];\n const apiUrl = cookies[cookieNames.apiUrl];\n const currentSequence = cookies[cookieNames.sessionSequence];\n let socket: WebSocket | undefined;\n let idCount = 0;\n\n /**\n * Attempts to open the websocket connection.\n */\n function openConnection() {\n if (apiUrl && sessionId) {\n const newSocket = new WebSocket(apiUrl);\n\n newSocket.onopen = () => {\n console.log('socket opened');\n socket = newSocket;\n socket.onmessage = onMessageReceived;\n socket.onclose = () => {\n socket = undefined;\n };\n\n // Initialize any pending subscriptions.\n for (const message of enqueuedMessages) {\n socket.send(message);\n }\n enqueuedMessages.length = 0;\n };\n }\n }\n\n /**\n * Sends a message to the websocket.\n */\n function sendMessage(options: { type: string; requestId?: string; data: unknown }) {\n const { type, requestId, data } = options;\n const message = JSON.stringify({ type, requestId, data });\n if (socket) {\n socket.send(message);\n } else {\n enqueuedMessages.push(message);\n }\n }\n\n const activeRequests: Record<\n string,\n {\n resolve: (value: any) => void;\n reject: (reason: any) => void;\n }\n > = {};\n\n /**\n * Sends a request to the websocket and returns a promise that resolves when the response is received.\n */\n function sendRequest(options: { type: string; data: unknown }) {\n const { type, data } = options;\n const requestId = `${idCount++}`;\n return new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n if (activeRequests[requestId]) {\n reject(new Error('Request timed out.'));\n }\n }, 10000);\n\n activeRequests[requestId] = {\n resolve: (resultData) => {\n delete activeRequests[requestId];\n clearTimeout(timeoutId);\n resolve(resultData);\n },\n reject: (error) => {\n delete activeRequests[requestId];\n clearTimeout(timeoutId);\n reject(error);\n },\n };\n\n sendMessage({ type, requestId, data });\n });\n }\n\n /**\n * Receives a message from the websocket and calls the appropriate callback.\n */\n function onMessageReceived(message: { data: string }) {\n const response = JSON.parse(message.data) as Record<string, unknown>;\n const requestId = response.requestId as string | undefined;\n\n if (requestId !== undefined) {\n activeRequests[requestId].resolve(response.data);\n return;\n }\n\n switch (response.type) {\n case 'notify': {\n const { path, data } = response;\n\n bus.publish(path as string[], data);\n break;\n }\n\n case 'reload': {\n window.location.reload();\n break;\n }\n\n case 'sequence': {\n const { sequence } = response;\n if (Number(sequence) > Number(currentSequence)) {\n window.location.reload();\n }\n break;\n }\n }\n }\n\n // Start the connection.\n openConnection();\n\n // Return the public API.\n const client: CloudpackClient = {\n dispose: () => {\n socket?.close();\n socket = undefined;\n },\n getValue: (path) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return bus.getData(path);\n },\n open: (options) => {\n sendMessage({ type: 'open', data: options });\n },\n openSource: (options) => {\n sendMessage({ type: 'openSource', data: options });\n },\n subscribe: (path, callback) => {\n return bus.subscribe(path, callback);\n },\n editConfig: () => {\n sendMessage({ type: 'editConfig', data: {} });\n },\n addOverride: (options) => {\n sendMessage({ type: 'addOverride', data: options });\n },\n restartTask: (options) => {\n sendMessage({ type: 'restartTask', data: options });\n },\n restartAllTasks: () => {\n sendMessage({ type: 'restartAllTasks', data: {} });\n },\n validateOverride: (options) => {\n return sendRequest({ type: 'validateOverride', data: options }) as Promise<{ fixable: boolean }>;\n },\n reportMetric: (options) => {\n sendMessage({ type: 'reportMetric', data: options });\n },\n };\n\n return client;\n}\n", "import React, { useCallback, useState, useRef } from 'react';\nimport { StatusBadge } from '../StatusBadge/StatusBadge.js';\nimport { StatusDialog } from '../StatusDialog/StatusDialog.js';\nimport { useStatus, type CloudpackStatus } from '../CloudpackProvider/useStatus.js';\nimport { ErrorDialog } from '../ErrorDialog/ErrorDialog.js';\nimport { useErrorEvents } from '../ErrorDialog/useErrorEvents.js';\nimport { usePageLoadTimeReporter } from '../../hooks/usePageLoadTimeReporter.js';\n\nexport function StatusOverlay() {\n const pageLoadTime = usePageLoadTimeReporter();\n const [isExpanded, setIsExpanded] = useState<boolean>(false);\n const status = useStatus();\n const prevStatus = useRef<CloudpackStatus | undefined>();\n const { unsupported } = useErrorEvents();\n\n // If we haven't set a specific state and we become idle,\n // pop open the details if there are errors.\n React.useEffect(() => {\n if (\n !isExpanded &&\n prevStatus.current?.status !== 'idle' &&\n status.status === 'idle' &&\n (prevStatus.current?.totalErrors || 0) !== (status.totalErrors || 0)\n ) {\n setIsExpanded(true);\n }\n prevStatus.current = status;\n }, [status, isExpanded]);\n\n const toggleMinimized = useCallback(() => {\n console.log(`Toggling minimized state to ${!isExpanded}`);\n setIsExpanded(!isExpanded);\n }, [isExpanded]);\n\n return unsupported.length ? (\n <ErrorDialog unsupported={unsupported} />\n ) : isExpanded ? (\n <StatusDialog onClose={toggleMinimized} />\n ) : (\n <StatusBadge onExpand={toggleMinimized} pageLoadTime={pageLoadTime} />\n );\n}\n", "import React, { useCallback, useRef, useState } from 'react';\nimport { useDraggable } from '../../hooks/useDraggable.js';\nimport styles from './StatusBadge.module.css';\nimport { default as cx } from 'classnames';\nimport { useStatus, type CloudpackStatus } from '../CloudpackProvider/useStatus.js';\nimport { elementIds } from '../../constants.js';\n\nexport interface StatusBadgeProps {\n inline?: boolean;\n onExpand?: () => void;\n onToggle?: () => void;\n pageLoadTime?: number;\n}\n\nexport function StatusBadge({ inline, onExpand, pageLoadTime }: StatusBadgeProps) {\n const badgeStatusKey = 'cloudpack.badgeStatus';\n\n const rootElementRef = useRef<HTMLDivElement>(null);\n const dragElementRef = useRef<HTMLDivElement>(null);\n const status = useStatus();\n const [isCollapsed, setIsCollapsed] = useState<boolean>(!!localStorage.getItem(badgeStatusKey));\n\n const shouldRender = status.status !== 'unknown';\n\n const toggleBadgeVisibility = useCallback(() => {\n const newCollapsedState = !isCollapsed;\n console.log('Status badge collapsed state:', newCollapsedState);\n setIsCollapsed(newCollapsedState);\n localStorage.setItem(badgeStatusKey, newCollapsedState ? 'collapsed' : '');\n }, [isCollapsed]);\n\n useDraggable({\n // If we're not yet able to render, don't enable dragging yet.\n // Otherwise the event handlers won't be attached when the component renders.\n enabled: shouldRender && !inline,\n containerElementRef: rootElementRef,\n dragElementRef,\n });\n\n if (!shouldRender) {\n return null;\n }\n\n const metric = pageLoadTime ? (\n <span className={styles.metric} title=\"Page Load Time\">\n in {pageLoadTime.toFixed(2)} ms\n </span>\n ) : null;\n\n const leftChevron = '\\u00AB';\n const rightChevron = '\\u00BB';\n const badge = (\n <div\n id={elementIds.statusBadgeRoot}\n ref={rootElementRef}\n className={`${getStatusClassName(status, !!inline)} ${getCollapsedClassName(isCollapsed)}`}\n >\n {!inline && (\n <div ref={dragElementRef} className={styles.gripArea}>\n <div className={styles.grip} />\n <div className={styles.grip} />\n </div>\n )}\n <button className={styles.button} onClick={onExpand} aria-label=\"Expand overlay\">\n <div className={styles.value}>{getStatusString(status)}</div>\n </button>\n <div>\n {getStatsString(status)}\n {metric}\n </div>\n <button className={`${styles.button} ${styles.chevron}`} onClick={toggleBadgeVisibility}>\n {isCollapsed ? leftChevron : rightChevron}\n </button>\n </div>\n );\n\n return inline ? (\n badge\n ) : (\n <div className={styles.fixedOverlay}>\n <div className={styles.contentSurface}>{badge}</div>\n </div>\n );\n}\n\nfunction getStatusString(status: CloudpackStatus) {\n if (status.status === 'pending') {\n return 'Running';\n }\n\n if (status.totalTasks === 0) {\n return 'Idle';\n }\n\n return status.totalErrors === 0 ? 'Success' : 'Errors';\n}\n\nfunction getStatusClassName({ status, totalTasks, totalErrors, totalWarnings }: CloudpackStatus, inline: boolean) {\n return cx(styles.badge, {\n [styles.inline]: inline,\n [styles.building]: status === 'pending',\n [styles.success]: status === 'idle' && totalTasks > 0 && totalErrors === 0 && totalWarnings === 0,\n [styles.error]: status === 'idle' && totalErrors > 0,\n [styles.warning]: status === 'idle' && totalErrors === 0 && totalWarnings > 0,\n });\n}\n\nfunction getCollapsedClassName(isCollapsed: boolean) {\n return cx(styles.badge, {\n [styles.collapsed]: isCollapsed,\n });\n}\n\nfunction getStatsString({ totalTasks, remainingTasks, totalErrors, totalWarnings }: CloudpackStatus) {\n if (totalTasks === 0) {\n return '';\n }\n\n return [\n remainingTasks > 0 && `${remainingTasks} of ${totalTasks} tasks pending`,\n remainingTasks === 0 && `${totalTasks} tasks completed`,\n totalErrors === 1 && `${totalErrors} error`,\n totalErrors > 1 && `${totalErrors} errors`,\n totalWarnings === 1 && `${totalWarnings} warning`,\n totalWarnings > 1 && `${totalWarnings} warnings`,\n ]\n .filter(Boolean)\n .join(', ');\n}\n", "import { type RefObject, useEffect, useState } from 'react';\n\n/**\n * Make an element draggable. Note that changing `enabled` or passing different ref objects\n * will trigger reconfiguring the event handlers, but changing `.current` will not.\n * @returns Whether the element is currently being dragged\n */\nexport function useDraggable(options: {\n /** Whether to enable dragging */\n enabled: boolean;\n /** Element that should be draggable */\n containerElementRef: RefObject<HTMLElement>;\n /** The drag handle element */\n dragElementRef: RefObject<HTMLElement>;\n}) {\n const { enabled, containerElementRef, dragElementRef } = options;\n\n const [isDragging, setIsDragging] = useState(false);\n\n useEffect(() => {\n const moveTarget = containerElementRef?.current;\n const dragTarget = dragElementRef?.current;\n\n if (!enabled || !moveTarget || !dragTarget) {\n return;\n }\n\n let originalX = 0;\n let originalY = 0;\n let offset = { x: 0, y: 0 };\n\n const onPointerMove = (event: PointerEvent) => {\n moveTarget.style.transform = `translate(${offset.x + event.clientX - originalX}px, ${\n offset.y + event.clientY - originalY\n }px)`;\n };\n\n const onPointerUp = (event: PointerEvent) => {\n setIsDragging(false);\n offset = {\n x: offset.x + event.clientX - originalX,\n y: offset.y + event.clientY - originalY,\n };\n\n dragTarget.releasePointerCapture(event.pointerId);\n dragTarget.removeEventListener('pointerup', onPointerUp);\n dragTarget.removeEventListener('pointermove', onPointerMove);\n\n event.preventDefault();\n };\n\n const onPointerDown = (event: PointerEvent) => {\n setIsDragging(true);\n originalX = event.clientX;\n originalY = event.clientY;\n dragTarget.setPointerCapture(event.pointerId);\n dragTarget.addEventListener('pointerup', onPointerUp);\n dragTarget.addEventListener('pointermove', onPointerMove);\n event.preventDefault();\n };\n\n dragTarget.addEventListener('pointerdown', onPointerDown);\n\n return () => {\n dragTarget.removeEventListener('pointerdown', onPointerDown);\n dragTarget.removeEventListener('pointermove', onPointerMove);\n dragTarget.removeEventListener('pointerup', onPointerUp);\n };\n }, [enabled, containerElementRef, dragElementRef]);\n\n return {\n isDragging,\n };\n}\n", "// THIS FILE IS AUTO GENERATED FROM packages/overlay/src/components/StatusBadge/StatusBadge.module.css\n\n\nlet compiledModule = `.uHuWYf-StatusBadgemodule--fixedOverlay {\\n position: fixed;\\n pointer-events: none;\\n background: transparent;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n z-index: 99999;\\n overflow: hidden;\\n}\\n\\n.uHuWYf-StatusBadgemodule--gripArea {\\n display: flex;\\n flex-direction: row;\\n gap: 2px;\\n height: 100%;\\n width: 12px;\\n cursor: move;\\n margin-right: -4px;\\n}\\n\\n.uHuWYf-StatusBadgemodule--grip {\\n width: 2px;\\n height: 100%;\\n background: rgba(0, 0, 0, 0.2);\\n}\\n\\n.uHuWYf-StatusBadgemodule--contentSurface {\\n pointer-events: auto;\\n display: contents;\\n}\\n\\n.uHuWYf-StatusBadgemodule--badge {\\n position: absolute;\\n bottom: 4px;\\n right: 4px;\\n font-size: 12px;\\n display: inline-flex;\\n gap: 8px;\\n background: #dddddd;\\n box-shadow: 0 0 12px -6px rgba(0, 0, 0, 0.75);\\n border: 1px solid #999999;\\n border-radius: 4px;\\n height: 28px;\\n flex-shrink: 0;\\n justify-content: center;\\n align-items: center;\\n box-sizing: border-box;\\n padding: 3px;\\n padding-right: 8px;\\n\\n transition: background-color 0.2s ease-in-out;\\n}\\n\\n.uHuWYf-StatusBadgemodule--inline {\\n flex-shrink: 0;\\n position: relative;\\n bottom: auto;\\n right: auto;\\n top: auto;\\n left: auto;\\n box-shadow: none;\\n padding-left: 8px;\\n}\\n\\n.uHuWYf-StatusBadgemodule--building {\\n background: #bbb;\\n color: #000;\\n}\\n\\n.uHuWYf-StatusBadgemodule--success {\\n background: #7ad17a;\\n color: #000;\\n}\\n\\n.uHuWYf-StatusBadgemodule--warning {\\n background: #e4e68b;\\n color: #000;\\n}\\n\\n.uHuWYf-StatusBadgemodule--error {\\n background: #ffb9b9;\\n color: #000;\\n}\\n\\n.uHuWYf-StatusBadgemodule--button {\\n cursor: pointer;\\n background: inherit;\\n border: none;\\n border-radius: 3px;\\n display: flex;\\n align-self: stretch;\\n align-items: center;\\n justify-content: center;\\n box-sizing: border-box;\\n padding: 0;\\n margin: 0;\\n font-weight: inherit;\\n font-size: inherit;\\n font-family: inherit;\\n}\\n\\n.uHuWYf-StatusBadgemodule--button:hover {\\n filter: invert(0.1);\\n}\\n\\n.uHuWYf-StatusBadgemodule--value {\\n font-weight: 600;\\n background: rgba(255, 255, 255, 0.4);\\n box-shadow: 2px 2px 3px -1px rgba(0, 0, 0, 0.15) inset;\\n padding: 2px 8px;\\n border-radius: 3px;\\n}\\n\\n.uHuWYf-StatusBadgemodule--metric {\\n margin-left: 2px;\\n}\\n\\n.uHuWYf-StatusBadgemodule--collapsed {\\n overflow: hidden;\\n padding: 0;\\n}\\n.uHuWYf-StatusBadgemodule--collapsed *:not(.uHuWYf-StatusBadgemodule--chevron) {\\n display: none;\\n}\\n\\n.uHuWYf-StatusBadgemodule--chevron {\\n padding: 0 3px;\\n}\\n`;\nconst s = document.createElement('style');\ns.setAttribute('data-sourceFile', 'packages/overlay/src/components/StatusBadge/StatusBadge.module.css');\ns.appendChild(document.createTextNode(compiledModule));\ndocument.head.appendChild(s)\nexport const badge = 'uHuWYf-StatusBadgemodule--badge';\nexport const building = 'uHuWYf-StatusBadgemodule--building';\nexport const button = 'uHuWYf-StatusBadgemodule--button';\nexport const chevron = 'uHuWYf-StatusBadgemodule--chevron';\nexport const collapsed = 'uHuWYf-StatusBadgemodule--collapsed';\nexport const contentSurface = 'uHuWYf-StatusBadgemodule--contentSurface';\nexport const error = 'uHuWYf-StatusBadgemodule--error';\nexport const fixedOverlay = 'uHuWYf-StatusBadgemodule--fixedOverlay';\nexport const grip = 'uHuWYf-StatusBadgemodule--grip';\nexport const gripArea = 'uHuWYf-StatusBadgemodule--gripArea';\nexport const inline = 'uHuWYf-StatusBadgemodule--inline';\nexport const metric = 'uHuWYf-StatusBadgemodule--metric';\nexport const success = 'uHuWYf-StatusBadgemodule--success';\nexport const value = 'uHuWYf-StatusBadgemodule--value';\nexport const warning = 'uHuWYf-StatusBadgemodule--warning';\nexport default {badge, building, button, chevron, collapsed, contentSurface, error, fixedOverlay, grip, gripArea, inline, metric, success, value, warning}\n", "import { useEffect, useState } from 'react';\nimport { useCloudpack } from './CloudpackProvider.js';\nimport { taskStatsSource, type TaskStats } from '@ms-cloudpack/api-server/browser';\n\nexport type CloudpackStatus = TaskStats;\n\nconst defaultStatus: CloudpackStatus = {\n status: 'unknown',\n remainingTasks: 0,\n totalTasks: 0,\n totalErrors: 0,\n totalWarnings: 0,\n};\n\nexport const useStatus = () => {\n const service = useCloudpack();\n const [status, setStatus] = useState<CloudpackStatus>(() => service?.getValue(taskStatsSource) || defaultStatus);\n\n useEffect(() => service?.subscribe(taskStatsSource, setStatus), [service]);\n\n return status;\n};\n", "import React, { useCallback } from 'react';\nimport { TaskList } from './TaskList.js';\nimport { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';\nimport { Button } from '../Button/Button.js';\nimport { Dialog } from '../Dialog/Dialog.js';\nimport { Searchbox } from './Searchbox.js';\nimport { elementIds } from '../../constants.js';\n\nexport interface StatusDialogProps {\n onClose: () => void;\n}\n\nexport function StatusDialog({ onClose }: StatusDialogProps) {\n const cloudpack = useCloudpack();\n const [searchFilter, setSearchFilter] = React.useState('');\n const [issuesOnly, setIssuesOnly] = React.useState(false);\n\n const handleSearchChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n event.preventDefault();\n setSearchFilter(event.target.value);\n }, []);\n\n const restartAllTasks = () => {\n cloudpack.restartAllTasks();\n };\n\n const toggleIssuesOnly = () => setIssuesOnly((value) => !value);\n\n return (\n <Dialog\n title=\"Task results\"\n id={elementIds.statusDialogRoot}\n draggable\n onClose={onClose}\n commands={[\n <Button primary onClick={restartAllTasks} key=\"restart\">\n Restart all tasks\n </Button>,\n <Button onClick={toggleIssuesOnly} key=\"issues\">\n {issuesOnly ? 'Show all tasks' : 'Show tasks with issues'}\n </Button>,\n ]}\n >\n <Searchbox value={searchFilter} onChange={handleSearchChange} />\n <TaskList searchFilter={searchFilter} issuesOnly={issuesOnly} />\n </Dialog>\n );\n}\n", "import React from 'react';\nimport { TaskStatus } from './TaskStatus.js';\nimport { type TaskDescriptionType, useStatusDetails } from '../CloudpackProvider/useStatusDetails.js';\nimport styles from './TaskList.module.css';\n\nexport interface TaskListProps {\n searchFilter?: string;\n issuesOnly?: boolean;\n}\n\nexport function TaskList({ searchFilter, issuesOnly }: TaskListProps) {\n const details = useStatusDetails();\n const tasks = (details.tasks || []).sort(sortTasks);\n\n let filteredTasks = tasks;\n if (searchFilter) {\n searchFilter = searchFilter.toLowerCase();\n filteredTasks = filteredTasks.filter(({ name }) => searchFilter && name.toLowerCase().includes(searchFilter));\n }\n if (issuesOnly) {\n filteredTasks = filteredTasks.filter(({ errors, warnings }) => errors?.length || warnings?.length);\n }\n\n return (\n <div className={styles.root}>\n {filteredTasks.map((task) => (\n <TaskStatus key={task.name} task={task} />\n ))}\n </div>\n );\n}\n\n/**\n * Really the server should be sorting. Get stuff out of the browser.\n */\nfunction sortTasks(a: TaskDescriptionType, b: TaskDescriptionType) {\n const aStatus = a.status === 'pending' ? 1 : 0;\n const bStatus = b.status === 'pending' ? 1 : 0;\n\n if (aStatus !== bStatus) {\n return aStatus > bStatus ? -1 : 1;\n }\n\n const aErrors = a.errors?.length || 0;\n const bErrors = b.errors?.length || 0;\n\n if (aErrors !== bErrors) {\n return aErrors > bErrors ? -1 : 1;\n }\n\n return a.name < b.name ? -1 : 1;\n}\n", "import React from 'react';\nimport type { TaskDescriptionType } from '../CloudpackProvider/useStatusDetails.js';\nimport { TaskResultItem } from './TaskResultItem.js';\nimport styles from './TaskStatus.module.css';\nimport { default as cx } from 'classnames';\nimport ErrorIcon from '../../images/error-24.inline.svg';\nimport SuccessIcon from '../../images/success-24.inline.svg';\nimport ChevronDownIcon from '../../images/chevrondown-20.inline.svg';\nimport { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';\nimport { Button } from '../Button/Button.js';\n\nexport interface TaskStatusProps {\n task: TaskDescriptionType;\n}\n\nfunction getCompletion(task: TaskDescriptionType) {\n if (task.status === 'pending') {\n return 'Running';\n }\n return [\n `Completed in ${task.durationMilliseconds}ms`,\n task.errors?.length && `${task.errors.length} error${task.errors.length > 1 ? 's' : ''}`,\n task.warnings?.length && `${task.warnings.length} warning${task.warnings.length > 1 ? 's' : ''}`,\n ]\n .filter(Boolean)\n .join(', ');\n}\n\nexport function TaskStatus({ task }: TaskStatusProps) {\n const [isOpen, setIsOpen] = React.useState<boolean | undefined>(undefined);\n const { name, warnings, errors } = task;\n const cloudpack = useCloudpack();\n const showContent = isOpen === true || (isOpen === undefined && task.errors?.length > 0);\n\n const open = (rootPath: string) => {\n cloudpack.open({\n rootPath,\n });\n };\n\n const openPackage = () => {\n cloudpack.openSource({\n rootPath: task.inputPath,\n relativePath: 'package.json',\n });\n };\n\n const restartTask = () => {\n cloudpack.restartTask({ id: task.id, inputPath: task.inputPath });\n };\n\n return (\n <div className={styles.root}>\n <div className={getHeaderClassName(task)}>\n <button\n className={styles.expandButton}\n onClick={() => setIsOpen(!showContent)}\n aria-label={showContent ? `Minimize ${name}` : `Expand ${name}`}\n >\n <img\n className={cx(styles.expandIcon, !showContent && styles.collapsed)}\n src={ChevronDownIcon}\n alt=\"Chevron down icon\"\n />\n </button>\n {errors?.length === 0 && warnings?.length === 0 && (\n <img className={styles.errorIcon} src={SuccessIcon} alt=\"Success icon\" />\n )}\n {errors?.length > 0 && <img className={styles.errorIcon} src={ErrorIcon} alt=\"Error icon\" />}\n <div className={styles.title}>{name}</div>\n <div className={styles.farArea}>{getCompletion(task)}</div>\n </div>\n {showContent && (\n <>\n <div className={styles.commands}>\n <Button onClick={restartTask}>Restart task</Button>\n </div>\n <div className={styles.content}>\n <div className={styles.title}>Details</div>\n <div className={styles.nameValueArea}>\n <div className={styles.name}>Input path</div>\n <div className={styles.value}>\n <button className={styles.linkButton} onClick={() => open(task.inputPath)}>\n {task.inputPath}\n </button>\n\n <button className={styles.linkButton} onClick={openPackage}>\n (Package.json)\n </button>\n </div>\n </div>\n <div className={styles.nameValueArea}>\n <div className={styles.name}>Output path</div>\n <button className={styles.linkButton} onClick={() => open(task.outputPath)}>\n {task.outputPath}\n </button>\n </div>\n {errors?.length > 0 && (\n <>\n <div className={styles.title}>Errors</div>\n <div className={styles.resultItems}>\n {errors.map((error, index) => (\n <TaskResultItem key={index} item={error} projectPath={task.inputPath} index={index + 1} />\n ))}\n </div>\n </>\n )}\n {warnings?.length > 0 && (\n <>\n <div className={styles.title}>Warnings</div>\n <div className={styles.resultItems}>\n {warnings.map((warning, index) => (\n <TaskResultItem key={index} item={warning} projectPath={task.inputPath} index={index + 1} />\n ))}\n </div>\n </>\n )}\n </div>\n </>\n )}\n </div>\n );\n}\n\nfunction getHeaderClassName(task: TaskDescriptionType) {\n return cx(styles.header, {\n [styles.success]: task.errors?.length === 0 && task.warnings?.length === 0,\n [styles.warning]: task.errors?.length === 0 && task.warnings?.length > 0,\n [styles.error]: task.errors?.length > 0,\n });\n}\n", "import type { BundleMessage } from '@ms-cloudpack/common-types';\nimport React from 'react';\nimport { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';\nimport styles from './TaskResultItem.module.css';\n\nexport interface TaskResultItemProps {\n item: BundleMessage;\n projectPath: string;\n index: number;\n}\n\nexport function TaskResultItem({ item, projectPath, index }: TaskResultItemProps) {\n const service = useCloudpack();\n\n const openSource = (ev: React.MouseEvent) => {\n if (item.location) {\n service.openSource({\n rootPath: projectPath,\n relativePath: item.location?.file,\n line: item.location?.line,\n column: item.location?.column,\n });\n ev.preventDefault();\n }\n };\n\n const location = [item.location?.file || '(path unavailable)', item.location?.line, item.location?.column]\n .filter(Boolean)\n .join(':');\n\n return (\n <div className={styles.root}>\n <div className={styles.statusBar}></div>\n <div className={styles.content}>\n <div className={styles.titleArea}>\n <button onClick={openSource} className={styles.file}>\n {index}. {location}\n </button>\n </div>\n <div className={styles.text}>\n [{item.source}] {item.text}\n </div>\n <pre className={styles.text}>{JSON.stringify(item, null, 2)}</pre>\n </div>\n </div>\n );\n}\n", "// THIS FILE IS AUTO GENERATED FROM packages/overlay/src/components/StatusDialog/TaskResultItem.module.css\n\n\nlet compiledModule = `.FSsdmcQ-TaskResultItemmodule--root {\\n display: flex;\\n background: #f5f5f5;\\n}\\n\\n.FSsdmcQ-TaskResultItemmodule--statusBar {\\n flex-shrink: 0;\\n border-radius: 4px;\\n width: 4px;\\n background: #aa0000;\\n box-shadow: 2px 0 4px 0 rgb(220 0 0 / 20%);\\n}\\n\\n.FSsdmcQ-TaskResultItemmodule--content {\\n padding: 8px;\\n display: flex;\\n flex-grow: 1;\\n overflow: hidden;\\n flex-direction: column;\\n}\\n\\n.FSsdmcQ-TaskResultItemmodule--titleArea {\\n display: flex;\\n align-items: center;\\n flex-direction: row;\\n gap: 4px;\\n padding: 4px 0;\\n}\\n\\n.FSsdmcQ-TaskResultItemmodule--file {\\n display: inline-flex;\\n margin: 0;\\n padding: 0;\\n border: none;\\n background: inherit;\\n font-family: inherit;\\n flex-grow: 1;\\n font-weight: 500;\\n font-size: 14px;\\n flex-shrink: 0;\\n text-decoration: none;\\n color: #000;\\n cursor: pointer;\\n}\\n\\n.FSsdmcQ-TaskResultItemmodule--file:hover {\\n text-decoration: underline;\\n}\\n\\n.FSsdmcQ-TaskResultItemmodule--actionArea {\\n display: flex;\\n flex-direction: row;\\n gap: 8px;\\n flex-shrink: 0;\\n}\\n\\n.FSsdmcQ-TaskResultItemmodule--text {\\n word-wrap: break-word;\\n color: #333;\\n}\\n`;\nconst s = document.createElement('style');\ns.setAttribute('data-sourceFile', 'packages/overlay/src/components/StatusDialog/TaskResultItem.module.css');\ns.appendChild(document.createTextNode(compiledModule));\ndocument.head.appendChild(s)\nexport const actionArea = 'FSsdmcQ-TaskResultItemmodule--actionArea';\nexport const content = 'FSsdmcQ-TaskResultItemmodule--content';\nexport const file = 'FSsdmcQ-TaskResultItemmodule--file';\nexport const root = 'FSsdmcQ-TaskResultItemmodule--root';\nexport const statusBar = 'FSsdmcQ-TaskResultItemmodule--statusBar';\nexport const text = 'FSsdmcQ-TaskResultItemmodule--text';\nexport const titleArea = 'FSsdmcQ-TaskResultItemmodule--titleArea';\nexport default {actionArea, content, file, root, statusBar, text, titleArea}\n", "// THIS FILE IS AUTO GENERATED FROM packages/overlay/src/components/StatusDialog/TaskStatus.module.css\n\n\nlet compiledModule = `.WGSBzu-TaskStatusmodule--root {\\n border: 1px solid #ccc;\\n border-radius: 3px;\\n box-shadow: 0 0 12px -6px rgba(0, 0, 0, 0.25);\\n}\\n\\n.WGSBzu-TaskStatusmodule--header {\\n display: flex;\\n gap: 8px;\\n padding: 8px 16px;\\n background: #f0f0f0;\\n align-items: center;\\n line-height: 1;\\n}\\n\\n.WGSBzu-TaskStatusmodule--commands {\\n display: flex;\\n flex-direction: row;\\n gap: 8px;\\n align-items: center;\\n flex-shrink: 0;\\n height: 40px;\\n padding: 0 16px;\\n}\\n\\n.WGSBzu-TaskStatusmodule--expandButton {\\n background: transparent;\\n border: none;\\n border-radius: 4px;\\n width: 32px;\\n height: 32px;\\n}\\n.WGSBzu-TaskStatusmodule--expandButton:hover {\\n background: rgba(0, 0, 0, 0.1);\\n}\\n\\n.WGSBzu-TaskStatusmodule--expandButton:active {\\n background: rgba(0, 0, 0, 0.2);\\n}\\n\\n.WGSBzu-TaskStatusmodule--expandIcon {\\n transition: transform 0.1s ease-in-out;\\n}\\n\\n.WGSBzu-TaskStatusmodule--collapsed {\\n transform: rotate(-90deg);\\n}\\n\\n.WGSBzu-TaskStatusmodule--farArea {\\n line-height: 1;\\n font-size: 13px;\\n text-align: end;\\n display: flex;\\n align-items: baseline;\\n flex-direction: row;\\n gap: 8px;\\n display: flex;\\n flex-grow: 1;\\n justify-content: end;\\n flex-direction: row;\\n}\\n\\n.WGSBzu-TaskStatusmodule--title {\\n font-size: 16px;\\n font-weight: 500;\\n color: #333;\\n}\\n\\n.WGSBzu-TaskStatusmodule--subTitle {\\n font-size: 13px;\\n}\\n\\n.WGSBzu-TaskStatusmodule--content {\\n border-top: 1px solid #ccc;\\n background: #fafafa;\\n padding: 8px 16px;\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n}\\n\\n.WGSBzu-TaskStatusmodule--resultItems {\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n}\\n\\n.WGSBzu-TaskStatusmodule--error {\\n background: #ffe9e9;\\n}\\n\\n.WGSBzu-TaskStatusmodule--success {\\n background: #e9f9e9;\\n}\\n\\n.WGSBzu-TaskStatusmodule--warning {\\n background: #fff9e9;\\n}\\n\\n.WGSBzu-TaskStatusmodule--name {\\n font-size: 12px;\\n font-weight: 600;\\n text-transform: uppercase;\\n}\\n\\n.WGSBzu-TaskStatusmodule--value {\\n display: flex;\\n flex-direction: column;\\n font-size: 14px;\\n color: #333;\\n}\\n\\n.WGSBzu-TaskStatusmodule--linkButton {\\n display: inline-flex;\\n align-items: flex-start;\\n text-align: start;\\n margin: 0;\\n padding: 0;\\n border: none;\\n background: inherit;\\n font-family: inherit;\\n flex-grow: 1;\\n\\n font-size: 14px;\\n flex-shrink: 0;\\n text-decoration: none;\\n color: #000;\\n cursor: pointer;\\n}\\n\\n.WGSBzu-TaskStatusmodule--linkButton:hover {\\n text-decoration: underline;\\n}\\n`;\nconst s = document.createElement('style');\ns.setAttribute('data-sourceFile', 'packages/overlay/src/components/StatusDialog/TaskStatus.module.css');\ns.appendChild(document.createTextNode(compiledModule));\ndocument.head.appendChild(s)\nexport const collapsed = 'WGSBzu-TaskStatusmodule--collapsed';\nexport const commands = 'WGSBzu-TaskStatusmodule--commands';\nexport const content = 'WGSBzu-TaskStatusmodule--content';\nexport const error = 'WGSBzu-TaskStatusmodule--error';\nexport const expandButton = 'WGSBzu-TaskStatusmodule--expandButton';\nexport const expandIcon = 'WGSBzu-TaskStatusmodule--expandIcon';\nexport const farArea = 'WGSBzu-TaskStatusmodule--farArea';\nexport const header = 'WGSBzu-TaskStatusmodule--header';\nexport const linkButton = 'WGSBzu-TaskStatusmodule--linkButton';\nexport const name = 'WGSBzu-TaskStatusmodule--name';\nexport const resultItems = 'WGSBzu-TaskStatusmodule--resultItems';\nexport const root = 'WGSBzu-TaskStatusmodule--root';\nexport const subTitle = 'WGSBzu-TaskStatusmodule--subTitle';\nexport const success = 'WGSBzu-TaskStatusmodule--success';\nexport const title = 'WGSBzu-TaskStatusmodule--title';\nexport const value = 'WGSBzu-TaskStatusmodule--value';\nexport const warning = 'WGSBzu-TaskStatusmodule--warning';\nexport default {collapsed, commands, content, error, expandButton, expandIcon, farArea, header, linkButton, name, resultItems, root, subTitle, success, title, value, warning}\n", "import React from 'react';\nimport styles from './Button.module.css';\n\nexport function Button(props: React.ButtonHTMLAttributes<HTMLButtonElement> & { primary?: boolean }) {\n const { primary, ...other } = props;\n const className = primary ? styles.primaryButton : styles.standardButton;\n return <button {...other} className={className} type={'button'} />;\n}\n", "// THIS FILE IS AUTO GENERATED FROM packages/overlay/src/components/Button/Button.module.css\n\n\nlet compiledModule = `.RpmxvThK-Buttonmodule--standardButton {\\n outline: transparent;\\n position: relative;\\n font-family: inherit;\\n font-size: 14px;\\n font-weight: 600;\\n box-sizing: border-box;\\n border: 1px solid rgb(138, 136, 134);\\n display: inline-block;\\n text-decoration: none;\\n text-align: center;\\n cursor: pointer;\\n padding: 0px 16px;\\n border-radius: 2px;\\n min-width: 80px;\\n height: 32px;\\n background-color: rgb(255, 255, 255);\\n color: rgb(50, 49, 48);\\n user-select: none;\\n}\\n\\n.RpmxvThK-Buttonmodule--standardButton:active {\\n background-color: rgb(237, 235, 233);\\n color: rgb(32, 31, 30);\\n}\\n\\n.RpmxvThK-Buttonmodule--standardButton:hover {\\n background-color: rgb(243, 242, 241);\\n color: rgb(32, 31, 30);\\n}\\n\\n.RpmxvThK-Buttonmodule--standardButton:focus {\\n border: 3px solid rgb(0, 0, 0);\\n}\\n\\n.RpmxvThK-Buttonmodule--primaryButton {\\n outline: transparent;\\n position: relative;\\n font-family: inherit;\\n font-size: 14px;\\n font-weight: 600;\\n box-sizing: border-box;\\n border: 1px solid rgb(0, 120, 212);\\n display: inline-block;\\n text-decoration: none;\\n text-align: center;\\n cursor: pointer;\\n padding: 0px 16px;\\n border-radius: 2px;\\n min-width: 80px;\\n height: 32px;\\n background-color: rgb(0, 120, 212);\\n color: rgb(255, 255, 255);\\n user-select: none;\\n}\\n\\n.RpmxvThK-Buttonmodule--primaryButton:active {\\n background-color: rgb(0, 90, 158);\\n border: 1px solid rgb(0, 90, 158);\\n color: rgb(255, 255, 255);\\n}\\n\\n.RpmxvThK-Buttonmodule--primaryButton:hover {\\n background-color: rgb(16, 110, 190);\\n border: 1px solid rgb(16, 110, 190);\\n color: rgb(255, 255, 255);\\n}\\n\\n.RpmxvThK-Buttonmodule--primaryButton:focus {\\n border: 3px solid rgb(0, 0, 0);\\n}\\n`;\nconst s = document.createElement('style');\ns.setAttribute('data-sourceFile', 'packages/overlay/src/components/Button/Button.module.css');\ns.appendChild(document.createTextNode(compiledModule));\ndocument.head.appendChild(s)\nexport const primaryButton = 'RpmxvThK-Buttonmodule--primaryButton';\nexport const standardButton = 'RpmxvThK-Buttonmodule--standardButton';\nexport default {primaryButton, standardButton}\n", "import { useEffect, useState } from 'react';\nimport { useCloudpack } from './CloudpackProvider.js';\nimport { taskListSource } from '@ms-cloudpack/api-server/browser';\nimport type { BundleMessage } from '@ms-cloudpack/common-types';\n\nexport interface TaskDescriptionType {\n id: string;\n name: string;\n inputPath: string;\n outputPath: string;\n status: 'pending' | 'complete';\n errors: BundleMessage[];\n warnings: BundleMessage[];\n durationMilliseconds: number;\n}\n\ninterface CloudpackStatusDetailsType {\n tasks: TaskDescriptionType[];\n}\n\nexport const useStatusDetails = () => {\n const service = useCloudpack();\n const [details, setDetails] = useState<CloudpackStatusDetailsType>({ tasks: [] });\n\n useEffect(() => service?.subscribe(taskListSource, setDetails), [service]);\n\n return details;\n};\n", "// THIS FILE IS AUTO GENERATED FROM packages/overlay/src/components/StatusDialog/TaskList.module.css\n\n\nlet compiledModule = `.ZnVPBoZ-TaskListmodule--root {\\n flex-grow: 1;\\n overflow: auto;\\n border-top: 1px solid #ccc;\\n box-sizing: border-box;\\n padding: 20px;\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n}\\n`;\nconst s = document.createElement('style');\ns.setAttribute('data-sourceFile', 'packages/overlay/src/components/StatusDialog/TaskList.module.css');\ns.appendChild(document.createTextNode(compiledModule));\ndocument.head.appendChild(s)\nexport const root = 'ZnVPBoZ-TaskListmodule--root';\nexport default {root}\n", "import { default as React, useRef } from 'react';\nimport styles from './Dialog.module.css';\nimport { useDraggable } from '../../hooks/useDraggable.js';\nimport CloseIcon from '../../images/dismiss-16-filled.inline.svg';\n\nexport interface DialogProps {\n title: string;\n id: string;\n style?: 'default' | 'error';\n draggable?: boolean;\n onClose?: () => void;\n commands?: React.ReactNode[];\n children: React.ReactNode;\n}\n\nexport function Dialog({ title, id, style, draggable, onClose, commands, children }: DialogProps) {\n const draggableRef = useRef<HTMLDivElement>(null);\n const draggableTargetRef = useRef<HTMLDivElement>(null);\n const colorAccent = style === 'error' ? 'rgb(164, 38, 44)' : undefined;\n const cursorDraggable = draggable ? 'move' : undefined;\n\n useDraggable({\n enabled: !!draggable,\n containerElementRef: draggableRef,\n dragElementRef: draggableTargetRef,\n });\n\n return (\n <div id={id} className={styles.overlay}>\n <div ref={draggableRef} className={styles.dialog} style={{ borderTopColor: colorAccent }}>\n <div className={styles.titleArea}>\n <div\n ref={draggableTargetRef}\n className={styles.title}\n style={{ color: colorAccent, cursor: cursorDraggable }}\n >\n {title}\n </div>\n {onClose && (\n <button className={styles.closeButton} onClick={onClose} aria-label=\"Minimize overlay\">\n {/* a close icon is common/universal enough that it doesn't need alt text */}\n <img src={CloseIcon} alt=\"\" />\n </button>\n )}\n </div>\n {commands && <div className={styles.commands}>{...commands}</div>}\n {children}\n </div>\n </div>\n );\n}\n", "// THIS FILE IS AUTO GENERATED FROM packages/overlay/src/components/Dialog/Dialog.module.css\n\n\nlet compiledModule = `.XZLLsVjN-Dialogmodule--overlay {\\n background: rgba(0, 0, 0, 0.1);\\n border: 1px solid black;\\n position: fixed;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n z-index: 999;\\n}\\n\\n@keyframes fade-in {\\n 0% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n\\n.XZLLsVjN-Dialogmodule--commands {\\n display: flex;\\n flex-direction: row;\\n gap: 8px;\\n align-items: center;\\n flex-shrink: 0;\\n height: 40px;\\n padding: 0 20px;\\n}\\n\\n.XZLLsVjN-Dialogmodule--dialog {\\n animation: fade-in 0.1s ease-in-out;\\n width: 80vw;\\n align-self: stretch;\\n margin: 20px 0;\\n background: white;\\n color: #000;\\n box-sizing: border-box;\\n display: flex;\\n flex-direction: column;\\n border-top: 4px solid rgb(0, 120, 212);\\n border-radius: 3px;\\n box-shadow:\\n rgb(0 0 0 / 22%) 0px 25.6px 57.6px 0px,\\n rgb(0 0 0 / 18%) 0px 4.8px 14.4px 0px;\\n position: relative;\\n outline: transparent solid 3px;\\n}\\n\\n.XZLLsVjN-Dialogmodule--titleArea {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n padding: 8px 8px 8px 20px;\\n gap: 8px;\\n}\\n\\n.XZLLsVjN-Dialogmodule--closeButton {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n width: 32px;\\n height: 32px;\\n margin: 0;\\n padding: 0;\\n background: transparent;\\n border: none;\\n border-radius: 4px;\\n}\\n\\n.XZLLsVjN-Dialogmodule--closeButton:hover {\\n background: rgba(0, 0, 0, 0.1);\\n}\\n\\n.XZLLsVjN-Dialogmodule--closeButton:active {\\n background: rgba(0, 0, 0, 0.2);\\n}\\n\\n.XZLLsVjN-Dialogmodule--title {\\n flex-grow: 1;\\n font-size: 20px;\\n font-weight: 600;\\n color: rgb(0, 120, 212);\\n}\\n`;\nconst s = document.createElement('style');\ns.setAttribute('data-sourceFile', 'packages/overlay/src/components/Dialog/Dialog.module.css');\ns.appendChild(document.createTextNode(compiledModule));\ndocument.head.appendChild(s)\nexport const closeButton = 'XZLLsVjN-Dialogmodule--closeButton';\nexport const commands = 'XZLLsVjN-Dialogmodule--commands';\nexport const dialog = 'XZLLsVjN-Dialogmodule--dialog';\nexport const overlay = 'XZLLsVjN-Dialogmodule--overlay';\nexport const title = 'XZLLsVjN-Dialogmodule--title';\nexport const titleArea = 'XZLLsVjN-Dialogmodule--titleArea';\nexport default {closeButton, commands, dialog, overlay, title, titleArea}\n", "import React from 'react';\nimport styles from './Searchbox.module.css';\n\nexport interface SearchboxProps {\n value: string;\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport function Searchbox({ value, onChange }: SearchboxProps) {\n return (\n <>\n {typeof value === 'string' && (\n <input type=\"text\" placeholder=\"Search\" className={styles.searchbox} onChange={onChange} value={value} />\n )}\n </>\n );\n}\n", "// THIS FILE IS AUTO GENERATED FROM packages/overlay/src/components/StatusDialog/Searchbox.module.css\n\n\nlet compiledModule = `.aJeqJtva-Searchboxmodule--searchbox {\\n position: absolute;\\n font-size: 14px;\\n font-weight: 400;\\n box-shadow: none;\\n padding: 0px 4px;\\n box-sizing: border-box;\\n color: rgb(50, 49, 48);\\n background-color: rgb(255, 255, 255);\\n display: flex;\\n flex-flow: row nowrap;\\n align-items: stretch;\\n border-radius: 2px;\\n border: 1px solid rgb(96, 94, 92);\\n height: 32px;\\n min-width: 160px;\\n top: 52px;\\n right: 20px;\\n}\\n`;\nconst s = document.createElement('style');\ns.setAttribute('data-sourceFile', 'packages/overlay/src/components/StatusDialog/Searchbox.module.css');\ns.appendChild(document.createTextNode(compiledModule));\ndocument.head.appendChild(s)\nexport const searchbox = 'aJeqJtva-Searchboxmodule--searchbox';\nexport default {searchbox}\n", "import { default as React } from 'react';\nimport { Button } from '../Button/Button.js';\nimport { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';\nimport { PathError } from './PathError.js';\nimport styles from '../StatusDialog/TaskList.module.css';\nimport type { UnsupportedErrorEvent } from './useErrorEvents.js';\nimport { Dialog } from '../Dialog/Dialog.js';\nimport { elementIds } from '../../constants.js';\n\nexport interface ErrorDialogProps {\n unsupported: UnsupportedErrorEvent[];\n}\n\nexport function ErrorDialog({ unsupported }: ErrorDialogProps) {\n const cloudpack = useCloudpack();\n\n const reload = () => {\n cloudpack.restartAllTasks();\n };\n\n return (\n <Dialog\n title=\"Found unsupported paths in your project\"\n id={elementIds.errorDialogRoot}\n style=\"error\"\n commands={[\n <Button primary onClick={reload} key=\"1\">\n Restart all tasks\n </Button>,\n ]}\n >\n <div className={styles.root}>\n {unsupported.map((data, index) => (\n <PathError {...data} key={index} />\n ))}\n </div>\n </Dialog>\n );\n}\n", "import React from 'react';\nimport styles from '../StatusDialog/TaskStatus.module.css';\nimport ErrorIcon from '../../images/error-24.inline.svg';\nimport { default as cx } from 'classnames';\nimport ChevronDownIcon from '../../images/chevrondown-20.inline.svg';\nimport type { UnsupportedErrorEvent } from './useErrorEvents.js';\nimport { Button } from '../Button/Button.js';\nimport { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';\n\nexport function PathError(props: UnsupportedErrorEvent) {\n const [showContent, setshowContent] = React.useState<boolean>(false);\n const { packageName, importPath, issuerUrl, fixable } = props;\n const cloudpack = useCloudpack();\n\n const editConfig = () => {\n cloudpack.editConfig();\n };\n\n const addOverride = () => {\n cloudpack.addOverride({ packageName, importPath, issuerUrl });\n };\n\n return (\n <div className={styles.root}>\n <div className={cx(styles.header, styles.error)}>\n <button\n className={styles.expandButton}\n onClick={() => setshowContent(!showContent)}\n aria-label={showContent ? `Minimize ${packageName}/${importPath}` : `Expand ${packageName}/${importPath}`}\n >\n <img\n className={cx(styles.expandIcon, !showContent && styles.collapsed)}\n src={ChevronDownIcon}\n alt=\"Chevron down icon\"\n />\n </button>\n <img className={styles.errorIcon} src={ErrorIcon} alt=\"Error icon\" />\n <div className={styles.title}>{`${packageName}/${importPath}`}</div>\n </div>\n {showContent && (\n <>\n <div className={styles.commands}>\n {fixable && <Button onClick={addOverride}>Add override</Button>}\n <Button onClick={editConfig}>Edit config file</Button>\n </div>\n <div className={styles.content}>\n <div className={styles.title}>Details</div>\n\n <div className={styles.nameValueArea}>\n <div className={styles.name}>Problem</div>\n <div className={styles.value}>\n {importPath === '.'\n ? `An unrecognized package \"${packageName}\" was imported.`\n : `Path \"${importPath}\" was imported from package \"${packageName}\" but was not recognized as an exported path.`}\n </div>\n </div>\n <div className={styles.nameValueArea}>\n <div className={styles.name}>Solution</div>\n <div className={styles.value}>\n {fixable\n ? `Remove the path from the import in your source. (Import from \"${packageName}\" rather than \"${packageName}/${importPath}\")`\n : importPath === '.'\n ? `Make sure the package name is valid.`\n : `Import not found on package. Make sure the import path is valid.`}\n </div>\n </div>\n </div>\n </>\n )}\n </div>\n );\n}\n", "import { useEffect, useState } from 'react';\nimport { parseImportString } from '@ms-cloudpack/path-string-parsing';\nimport { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';\n\ndeclare global {\n interface Window {\n __pageErrors: {\n uncaughtErrors: ErrorEvent[];\n uncaughtRejections: PromiseRejectionEvent[];\n unregister: () => void;\n };\n }\n}\n\n// Interface with reason as a record.\ninterface ReasonRecord extends PromiseRejectionEvent {\n readonly reason: Record<string, unknown>;\n}\n\n// Interface with message as a string.\ninterface ReasonString extends ReasonRecord {\n readonly reason: { message: string };\n}\n\n// Verify the reason is a record.\nconst reasonIsRecord = (event: PromiseRejectionEvent): event is ReasonRecord => {\n return typeof event.reason === 'object' && !Array.isArray(event.reason) && event.reason !== null;\n};\n\n// Verify the reason has a message which is a string.\nconst hasMessage = (event: PromiseRejectionEvent): event is ReasonString => {\n return reasonIsRecord(event) && typeof event.reason.message === 'string';\n};\n\nexport type UnsupportedErrorEvent = { packageName: string; importPath: string; issuerUrl?: string; fixable?: boolean };\n\nexport const useErrorEvents = () => {\n const [errorEvents, setErrorEvents] = useState<{ unsupported: UnsupportedErrorEvent[] }>({ unsupported: [] });\n const cloudpack = useCloudpack();\n\n useEffect(() => {\n const handleUnsupportedError = (message: string, issuerUrl?: string): void => {\n const errorRegex = /[Mm]odule specifier,? ['\"](.*?)['\"]/;\n const match = message.match(errorRegex);\n\n if (match) {\n const importString = parseImportString(match[1]);\n const { packageName } = importString;\n const importPath = importString.importPath.replace(/^\\.\\//, '');\n\n (async () => {\n const { fixable } = await cloudpack.validateOverride({ packageName, importPath, issuerUrl });\n setErrorEvents((prev) => ({\n ...prev,\n unsupported: [...prev.unsupported, { packageName, importPath, issuerUrl: issuerUrl, fixable }],\n }));\n })().catch(() => {\n // no-op\n });\n }\n };\n\n const pageErrors = window.__pageErrors;\n\n pageErrors.unregister();\n\n // Append unsupported paths to the list.\n window.addEventListener('error', (event: ErrorEvent) => {\n handleUnsupportedError(event.message, event.filename);\n });\n\n // Handle errors caught before rendering.\n for (const error of pageErrors.uncaughtErrors) {\n handleUnsupportedError(error.message, error.filename);\n }\n\n // Append unsupported paths to the list.\n window.addEventListener('unhandledrejection', (event: PromiseRejectionEvent) => {\n hasMessage(event) && handleUnsupportedError(event.reason.message);\n });\n\n // Handle rejections caught before rendering.\n for (const error of pageErrors.uncaughtRejections) {\n hasMessage(error) && handleUnsupportedError(error.reason.message);\n }\n }, [cloudpack]);\n\n return errorEvents;\n};\n", "import React from 'react';\nimport { useCloudpack } from '../components/CloudpackProvider/CloudpackProvider.js';\n\nexport function usePageLoadTimeReporter() {\n const [pageLoadTime, setPageLoadTime] = React.useState<number>();\n const cloudpack = useCloudpack();\n\n React.useEffect(() => {\n async function reportPageLoadTime() {\n const { getPageLoadTime, getBrowserCacheRatio } = window.__cloudpack;\n\n const newPageLoadTime = await getPageLoadTime();\n setPageLoadTime(newPageLoadTime);\n cloudpack.reportMetric({ metric: 'PAGE_LOAD_TIME', value: newPageLoadTime });\n\n // Page is loaded, the browser cache ratio can be reported\n cloudpack.reportMetric({ metric: 'BROWSER_CACHE_RATIO', value: getBrowserCacheRatio() });\n }\n\n void reportPageLoadTime();\n }, [cloudpack]);\n\n return pageLoadTime;\n}\n", "import React from 'react';\nimport styles from './ThemeProvider.module.css';\n\nexport function ThemeProvider({ children }: React.ComponentProps<'div'>) {\n return <div className={styles.root}>{children}</div>;\n}\n", "// THIS FILE IS AUTO GENERATED FROM packages/overlay/src/components/ThemeProvider/ThemeProvider.module.css\n\n\nlet compiledModule = `.ASWLkl-ThemeProvidermodule--root {\\n font-family:\\n Inter,\\n -apple-system,\\n BlinkMacSystemFont,\\n 'Segoe UI',\\n Roboto,\\n Oxygen,\\n Ubuntu,\\n Cantarell,\\n 'Fira Sans',\\n 'Droid Sans',\\n 'Helvetica Neue',\\n sans-serif;\\n}\\n`;\nconst s = document.createElement('style');\ns.setAttribute('data-sourceFile', 'packages/overlay/src/components/ThemeProvider/ThemeProvider.module.css');\ns.appendChild(document.createTextNode(compiledModule));\ndocument.head.appendChild(s)\nexport const root = 'ASWLkl-ThemeProvidermodule--root';\nexport default {root}\n"],
5
+ "mappings": ";;;;;;AAAA,OAAOA,aAAW;AAClB,OAAO,cAAc;;;ACDrB,OAAO,SAAS,eAAe,UAAU,kBAAkB;;;ACGpD,SAAS,aAAqC;AACnD,SAAO,SAAS,OACb,MAAM,GAAG,EACT,IAAI,CAACC,OAAMA,GAAE,MAAM,GAAG,CAAC,EACvB,OAA+B,CAAC,SAAS,cAAc;AACtD,UAAMC,QAAO,UAAU,CAAC,GAAG,KAAK;AAChC,UAAMC,SAAQ,mBAAmB,UAAU,CAAC,GAAG,KAAK,CAAC;AAErD,QAAID,SAAQC,QAAO;AACjB,cAAQD,KAAI,IAAIC;AAAA,IAClB;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACT;;;ACfA,SAAS,qBAAuC;AAoCzC,SAAS,wBAAyC;AACvD,QAAM,UAAU,WAAW;AAC3B,QAAM,MAAM,cAAc;AAC1B,MAAI,aAAa;AACjB,QAAM,SAAiC,CAAC;AAExC,MAAI,YAAY;AAAA,IACd,MAAM,CAAC;AAAA,IACP,YAAY,CAAC,EAAE,KAAK,MAAM;AACxB,YAAM,KAAK;AACX,aAAO,KAAK,KAAK,GAAG,CAAC,IAAI;AACzB,kBAAY,EAAE,MAAM,aAAa,MAAM,EAAE,MAAM,GAAG,EAAE,CAAC;AAAA,IACvD;AAAA,IAEA,cAAc,CAAC,EAAE,KAAK,MAAM;AAC1B,YAAM,aAAa,KAAK,KAAK,GAAG;AAChC,YAAM,KAAK,OAAO,UAAU;AAC5B,aAAO,OAAO,UAAU;AACxB,kBAAY,EAAE,MAAM,eAAe,MAAM,EAAE,MAAM,GAAG,EAAE,CAAC;AAAA,IACzD;AAAA,EACF,CAAC;AAED,QAAM,mBAA6B,CAAC;AACpC,QAAM,YAAY,QAAQ,YAAY,SAAS;AAC/C,QAAM,SAAS,QAAQ,YAAY,MAAM;AACzC,QAAM,kBAAkB,QAAQ,YAAY,eAAe;AAC3D,MAAI;AACJ,MAAI,UAAU;AAKd,WAAS,iBAAiB;AACxB,QAAI,UAAU,WAAW;AACvB,YAAM,YAAY,IAAI,UAAU,MAAM;AAEtC,gBAAU,SAAS,MAAM;AACvB,gBAAQ,IAAI,eAAe;AAC3B,iBAAS;AACT,eAAO,YAAY;AACnB,eAAO,UAAU,MAAM;AACrB,mBAAS;AAAA,QACX;AAGA,mBAAW,WAAW,kBAAkB;AACtC,iBAAO,KAAK,OAAO;AAAA,QACrB;AACA,yBAAiB,SAAS;AAAA,MAC5B;AAAA,IACF;AAAA,EACF;AAKA,WAAS,YAAY,SAA8D;AACjF,UAAM,EAAE,MAAM,WAAW,KAAK,IAAI;AAClC,UAAM,UAAU,KAAK,UAAU,EAAE,MAAM,WAAW,KAAK,CAAC;AACxD,QAAI,QAAQ;AACV,aAAO,KAAK,OAAO;AAAA,IACrB,OAAO;AACL,uBAAiB,KAAK,OAAO;AAAA,IAC/B;AAAA,EACF;AAEA,QAAM,iBAMF,CAAC;AAKL,WAAS,YAAY,SAA0C;AAC7D,UAAM,EAAE,MAAM,KAAK,IAAI;AACvB,UAAM,YAAY,GAAG,SAAS;AAC9B,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,YAAM,YAAY,WAAW,MAAM;AACjC,YAAI,eAAe,SAAS,GAAG;AAC7B,iBAAO,IAAI,MAAM,oBAAoB,CAAC;AAAA,QACxC;AAAA,MACF,GAAG,GAAK;AAER,qBAAe,SAAS,IAAI;AAAA,QAC1B,SAAS,CAAC,eAAe;AACvB,iBAAO,eAAe,SAAS;AAC/B,uBAAa,SAAS;AACtB,kBAAQ,UAAU;AAAA,QACpB;AAAA,QACA,QAAQ,CAACC,WAAU;AACjB,iBAAO,eAAe,SAAS;AAC/B,uBAAa,SAAS;AACtB,iBAAOA,MAAK;AAAA,QACd;AAAA,MACF;AAEA,kBAAY,EAAE,MAAM,WAAW,KAAK,CAAC;AAAA,IACvC,CAAC;AAAA,EACH;AAKA,WAAS,kBAAkB,SAA2B;AACpD,UAAM,WAAW,KAAK,MAAM,QAAQ,IAAI;AACxC,UAAM,YAAY,SAAS;AAE3B,QAAI,cAAc,QAAW;AAC3B,qBAAe,SAAS,EAAE,QAAQ,SAAS,IAAI;AAC/C;AAAA,IACF;AAEA,YAAQ,SAAS,MAAM;AAAA,MACrB,KAAK,UAAU;AACb,cAAM,EAAE,MAAM,KAAK,IAAI;AAEvB,YAAI,QAAQ,MAAkB,IAAI;AAClC;AAAA,MACF;AAAA,MAEA,KAAK,UAAU;AACb,eAAO,SAAS,OAAO;AACvB;AAAA,MACF;AAAA,MAEA,KAAK,YAAY;AACf,cAAM,EAAE,SAAS,IAAI;AACrB,YAAI,OAAO,QAAQ,IAAI,OAAO,eAAe,GAAG;AAC9C,iBAAO,SAAS,OAAO;AAAA,QACzB;AACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGA,iBAAe;AAGf,QAAM,SAA0B;AAAA,IAC9B,SAAS,MAAM;AACb,cAAQ,MAAM;AACd,eAAS;AAAA,IACX;AAAA,IACA,UAAU,CAAC,SAAS;AAElB,aAAO,IAAI,QAAQ,IAAI;AAAA,IACzB;AAAA,IACA,MAAM,CAAC,YAAY;AACjB,kBAAY,EAAE,MAAM,QAAQ,MAAM,QAAQ,CAAC;AAAA,IAC7C;AAAA,IACA,YAAY,CAAC,YAAY;AACvB,kBAAY,EAAE,MAAM,cAAc,MAAM,QAAQ,CAAC;AAAA,IACnD;AAAA,IACA,WAAW,CAAC,MAAM,aAAa;AAC7B,aAAO,IAAI,UAAU,MAAM,QAAQ;AAAA,IACrC;AAAA,IACA,YAAY,MAAM;AAChB,kBAAY,EAAE,MAAM,cAAc,MAAM,CAAC,EAAE,CAAC;AAAA,IAC9C;AAAA,IACA,aAAa,CAAC,YAAY;AACxB,kBAAY,EAAE,MAAM,eAAe,MAAM,QAAQ,CAAC;AAAA,IACpD;AAAA,IACA,aAAa,CAAC,YAAY;AACxB,kBAAY,EAAE,MAAM,eAAe,MAAM,QAAQ,CAAC;AAAA,IACpD;AAAA,IACA,iBAAiB,MAAM;AACrB,kBAAY,EAAE,MAAM,mBAAmB,MAAM,CAAC,EAAE,CAAC;AAAA,IACnD;AAAA,IACA,kBAAkB,CAAC,YAAY;AAC7B,aAAO,YAAY,EAAE,MAAM,oBAAoB,MAAM,QAAQ,CAAC;AAAA,IAChE;AAAA,IACA,cAAc,CAAC,YAAY;AACzB,kBAAY,EAAE,MAAM,gBAAgB,MAAM,QAAQ,CAAC;AAAA,IACrD;AAAA,EACF;AAEA,SAAO;AACT;;;AFzNO,IAAM,mBAAmB,cAA+B,IAAkC;AAE1F,SAAS,kBAAkB,EAAE,SAAS,GAAkC;AAC7E,QAAM,CAAC,MAAM,IAAI,SAAS,qBAAqB;AAE/C,SAAO,oCAAC,iBAAiB,UAAjB,EAA0B,OAAO,UAAS,QAAS;AAC7D;AAEO,IAAM,eAAe,MAAM,WAAW,gBAAgB;;;AGX7D,OAAOC,WAAS,eAAAC,cAAa,YAAAC,WAAU,UAAAC,eAAc;;;ACArD,OAAOC,UAAS,aAAa,QAAQ,YAAAC,iBAAgB;;;ACArD,SAAyB,WAAW,YAAAC,iBAAgB;AAO7C,SAAS,aAAa,SAO1B;AACD,QAAM,EAAE,SAAS,qBAAqB,eAAe,IAAI;AAEzD,QAAM,CAAC,YAAY,aAAa,IAAIA,UAAS,KAAK;AAElD,YAAU,MAAM;AACd,UAAM,aAAa,qBAAqB;AACxC,UAAM,aAAa,gBAAgB;AAEnC,QAAI,CAAC,WAAW,CAAC,cAAc,CAAC,YAAY;AAC1C;AAAA,IACF;AAEA,QAAI,YAAY;AAChB,QAAI,YAAY;AAChB,QAAI,SAAS,EAAE,GAAG,GAAG,GAAG,EAAE;AAE1B,UAAM,gBAAgB,CAAC,UAAwB;AAC7C,iBAAW,MAAM,YAAY,aAAa,OAAO,IAAI,MAAM,UAAU,SAAS,OAC5E,OAAO,IAAI,MAAM,UAAU,SAC7B;AAAA,IACF;AAEA,UAAM,cAAc,CAAC,UAAwB;AAC3C,oBAAc,KAAK;AACnB,eAAS;AAAA,QACP,GAAG,OAAO,IAAI,MAAM,UAAU;AAAA,QAC9B,GAAG,OAAO,IAAI,MAAM,UAAU;AAAA,MAChC;AAEA,iBAAW,sBAAsB,MAAM,SAAS;AAChD,iBAAW,oBAAoB,aAAa,WAAW;AACvD,iBAAW,oBAAoB,eAAe,aAAa;AAE3D,YAAM,eAAe;AAAA,IACvB;AAEA,UAAM,gBAAgB,CAAC,UAAwB;AAC7C,oBAAc,IAAI;AAClB,kBAAY,MAAM;AAClB,kBAAY,MAAM;AAClB,iBAAW,kBAAkB,MAAM,SAAS;AAC5C,iBAAW,iBAAiB,aAAa,WAAW;AACpD,iBAAW,iBAAiB,eAAe,aAAa;AACxD,YAAM,eAAe;AAAA,IACvB;AAEA,eAAW,iBAAiB,eAAe,aAAa;AAExD,WAAO,MAAM;AACX,iBAAW,oBAAoB,eAAe,aAAa;AAC3D,iBAAW,oBAAoB,eAAe,aAAa;AAC3D,iBAAW,oBAAoB,aAAa,WAAW;AAAA,IACzD;AAAA,EACF,GAAG,CAAC,SAAS,qBAAqB,cAAc,CAAC;AAEjD,SAAO;AAAA,IACL;AAAA,EACF;AACF;;;ACtEA,IAAI,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACrB,IAAM,IAAI,SAAS,cAAc,OAAO;AACxC,EAAE,aAAa,mBAAmB,oEAAoE;AACtG,EAAE,YAAY,SAAS,eAAe,cAAc,CAAC;AACrD,SAAS,KAAK,YAAY,CAAC;AACpB,IAAM,QAAQ;AACd,IAAM,WAAW;AACjB,IAAM,SAAS;AACf,IAAM,UAAU;AAChB,IAAM,YAAY;AAClB,IAAM,iBAAiB;AACvB,IAAM,QAAQ;AACd,IAAM,eAAe;AACrB,IAAM,OAAO;AACb,IAAM,WAAW;AACjB,IAAM,SAAS;AACf,IAAM,SAAS;AACf,IAAM,UAAU;AAChB,IAAM,QAAQ;AACd,IAAM,UAAU;AACvB,IAAO,6BAAQ,EAAC,OAAO,UAAU,QAAQ,SAAS,WAAW,gBAAgB,OAAO,cAAc,MAAM,UAAU,QAAQ,QAAQ,SAAS,OAAO,QAAO;;;AFpBzJ,SAAS,WAAW,UAAU;;;AGH9B,SAAS,aAAAC,YAAW,YAAAC,iBAAgB;AAEpC,SAAS,uBAAuC;AAIhD,IAAM,gBAAiC;AAAA,EACrC,QAAQ;AAAA,EACR,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,eAAe;AACjB;AAEO,IAAM,YAAY,MAAM;AAC7B,QAAM,UAAU,aAAa;AAC7B,QAAM,CAAC,QAAQ,SAAS,IAAIC,UAA0B,MAAM,SAAS,SAAS,eAAe,KAAK,aAAa;AAE/G,EAAAC,WAAU,MAAM,SAAS,UAAU,iBAAiB,SAAS,GAAG,CAAC,OAAO,CAAC;AAEzE,SAAO;AACT;;;AHPO,SAAS,YAAY,EAAE,QAAAC,SAAQ,UAAU,aAAa,GAAqB;AAChF,QAAM,iBAAiB;AAEvB,QAAM,iBAAiB,OAAuB,IAAI;AAClD,QAAM,iBAAiB,OAAuB,IAAI;AAClD,QAAM,SAAS,UAAU;AACzB,QAAM,CAAC,aAAa,cAAc,IAAIC,UAAkB,CAAC,CAAC,aAAa,QAAQ,cAAc,CAAC;AAE9F,QAAM,eAAe,OAAO,WAAW;AAEvC,QAAM,wBAAwB,YAAY,MAAM;AAC9C,UAAM,oBAAoB,CAAC;AAC3B,YAAQ,IAAI,iCAAiC,iBAAiB;AAC9D,mBAAe,iBAAiB;AAChC,iBAAa,QAAQ,gBAAgB,oBAAoB,cAAc,EAAE;AAAA,EAC3E,GAAG,CAAC,WAAW,CAAC;AAEhB,eAAa;AAAA;AAAA;AAAA,IAGX,SAAS,gBAAgB,CAACD;AAAA,IAC1B,qBAAqB;AAAA,IACrB;AAAA,EACF,CAAC;AAED,MAAI,CAAC,cAAc;AACjB,WAAO;AAAA,EACT;AAEA,QAAME,UAAS,eACb,gBAAAC,OAAA,cAAC,UAAK,WAAW,2BAAO,QAAQ,OAAM,oBAAiB,OACjD,aAAa,QAAQ,CAAC,GAAE,KAC9B,IACE;AAEJ,QAAM,cAAc;AACpB,QAAM,eAAe;AACrB,QAAMC,SACJ,gBAAAD,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,IAAI,WAAW;AAAA,MACf,KAAK;AAAA,MACL,WAAW,GAAG,mBAAmB,QAAQ,CAAC,CAACH,OAAM,CAAC,IAAI,sBAAsB,WAAW,CAAC;AAAA;AAAA,IAEvF,CAACA,WACA,gBAAAG,OAAA,cAAC,SAAI,KAAK,gBAAgB,WAAW,2BAAO,YAC1C,gBAAAA,OAAA,cAAC,SAAI,WAAW,2BAAO,MAAM,GAC7B,gBAAAA,OAAA,cAAC,SAAI,WAAW,2BAAO,MAAM,CAC/B;AAAA,IAEF,gBAAAA,OAAA,cAAC,YAAO,WAAW,2BAAO,QAAQ,SAAS,UAAU,cAAW,oBAC9D,gBAAAA,OAAA,cAAC,SAAI,WAAW,2BAAO,SAAQ,gBAAgB,MAAM,CAAE,CACzD;AAAA,IACA,gBAAAA,OAAA,cAAC,aACE,eAAe,MAAM,GACrBD,OACH;AAAA,IACA,gBAAAC,OAAA,cAAC,YAAO,WAAW,GAAG,2BAAO,MAAM,IAAI,2BAAO,OAAO,IAAI,SAAS,yBAC/D,cAAc,cAAc,YAC/B;AAAA,EACF;AAGF,SAAOH,UACLI,SAEA,gBAAAD,OAAA,cAAC,SAAI,WAAW,2BAAO,gBACrB,gBAAAA,OAAA,cAAC,SAAI,WAAW,2BAAO,kBAAiBC,MAAM,CAChD;AAEJ;AAEA,SAAS,gBAAgB,QAAyB;AAChD,MAAI,OAAO,WAAW,WAAW;AAC/B,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,eAAe,GAAG;AAC3B,WAAO;AAAA,EACT;AAEA,SAAO,OAAO,gBAAgB,IAAI,YAAY;AAChD;AAEA,SAAS,mBAAmB,EAAE,QAAQ,YAAY,aAAa,cAAc,GAAoBJ,SAAiB;AAChH,SAAO,GAAG,2BAAO,OAAO;AAAA,IACtB,CAAC,2BAAO,MAAM,GAAGA;AAAA,IACjB,CAAC,2BAAO,QAAQ,GAAG,WAAW;AAAA,IAC9B,CAAC,2BAAO,OAAO,GAAG,WAAW,UAAU,aAAa,KAAK,gBAAgB,KAAK,kBAAkB;AAAA,IAChG,CAAC,2BAAO,KAAK,GAAG,WAAW,UAAU,cAAc;AAAA,IACnD,CAAC,2BAAO,OAAO,GAAG,WAAW,UAAU,gBAAgB,KAAK,gBAAgB;AAAA,EAC9E,CAAC;AACH;AAEA,SAAS,sBAAsB,aAAsB;AACnD,SAAO,GAAG,2BAAO,OAAO;AAAA,IACtB,CAAC,2BAAO,SAAS,GAAG;AAAA,EACtB,CAAC;AACH;AAEA,SAAS,eAAe,EAAE,YAAY,gBAAgB,aAAa,cAAc,GAAoB;AACnG,MAAI,eAAe,GAAG;AACpB,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,iBAAiB,KAAK,GAAG,cAAc,OAAO,UAAU;AAAA,IACxD,mBAAmB,KAAK,GAAG,UAAU;AAAA,IACrC,gBAAgB,KAAK,GAAG,WAAW;AAAA,IACnC,cAAc,KAAK,GAAG,WAAW;AAAA,IACjC,kBAAkB,KAAK,GAAG,aAAa;AAAA,IACvC,gBAAgB,KAAK,GAAG,aAAa;AAAA,EACvC,EACG,OAAO,OAAO,EACd,KAAK,IAAI;AACd;;;AIhIA,OAAOK,UAAS,eAAAC,oBAAmB;;;ACAnC,OAAOC,YAAW;;;ACAlB,OAAOC,YAAW;;;ACClB,OAAOC,YAAW;;;ACElB,IAAIC,kBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACrB,IAAMC,KAAI,SAAS,cAAc,OAAO;AACxCA,GAAE,aAAa,mBAAmB,wEAAwE;AAC1GA,GAAE,YAAY,SAAS,eAAeD,eAAc,CAAC;AACrD,SAAS,KAAK,YAAYC,EAAC;AACpB,IAAM,aAAa;AACnB,IAAM,UAAU;AAChB,IAAM,OAAO;AACb,IAAM,OAAO;AACb,IAAM,YAAY;AAClB,IAAM,OAAO;AACb,IAAM,YAAY;AACzB,IAAO,gCAAQ,EAAC,YAAY,SAAS,MAAM,MAAM,WAAW,MAAM,UAAS;;;ADJpE,SAAS,eAAe,EAAE,MAAM,aAAa,MAAM,GAAwB;AAChF,QAAM,UAAU,aAAa;AAE7B,QAAM,aAAa,CAAC,OAAyB;AAC3C,QAAI,KAAK,UAAU;AACjB,cAAQ,WAAW;AAAA,QACjB,UAAU;AAAA,QACV,cAAc,KAAK,UAAU;AAAA,QAC7B,MAAM,KAAK,UAAU;AAAA,QACrB,QAAQ,KAAK,UAAU;AAAA,MACzB,CAAC;AACD,SAAG,eAAe;AAAA,IACpB;AAAA,EACF;AAEA,QAAM,WAAW,CAAC,KAAK,UAAU,QAAQ,sBAAsB,KAAK,UAAU,MAAM,KAAK,UAAU,MAAM,EACtG,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACE,gBAAAC,OAAA,cAAC,SAAI,WAAW,8BAAO,QACrB,gBAAAA,OAAA,cAAC,SAAI,WAAW,8BAAO,WAAW,GAClC,gBAAAA,OAAA,cAAC,SAAI,WAAW,8BAAO,WACrB,gBAAAA,OAAA,cAAC,SAAI,WAAW,8BAAO,aACrB,gBAAAA,OAAA,cAAC,YAAO,SAAS,YAAY,WAAW,8BAAO,QAC5C,OAAM,MAAG,QACZ,CACF,GACA,gBAAAA,OAAA,cAAC,SAAI,WAAW,8BAAO,QAAM,KACzB,KAAK,QAAO,MAAG,KAAK,IACxB,GACA,gBAAAA,OAAA,cAAC,SAAI,WAAW,8BAAO,QAAO,KAAK,UAAU,MAAM,MAAM,CAAC,CAAE,CAC9D,CACF;AAEJ;;;AE3CA,IAAIC,kBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACrB,IAAMC,KAAI,SAAS,cAAc,OAAO;AACxCA,GAAE,aAAa,mBAAmB,oEAAoE;AACtGA,GAAE,YAAY,SAAS,eAAeD,eAAc,CAAC;AACrD,SAAS,KAAK,YAAYC,EAAC;AACpB,IAAMC,aAAY;AAClB,IAAM,WAAW;AACjB,IAAMC,WAAU;AAChB,IAAMC,SAAQ;AACd,IAAM,eAAe;AACrB,IAAM,aAAa;AACnB,IAAM,UAAU;AAChB,IAAM,SAAS;AACf,IAAM,aAAa;AACnB,IAAM,OAAO;AACb,IAAM,cAAc;AACpB,IAAMC,QAAO;AACb,IAAM,WAAW;AACjB,IAAMC,WAAU;AAChB,IAAM,QAAQ;AACd,IAAMC,SAAQ;AACd,IAAMC,WAAU;AACvB,IAAO,4BAAQ,EAAC,WAAAN,YAAW,UAAU,SAAAC,UAAS,OAAAC,QAAO,cAAc,YAAY,SAAS,QAAQ,YAAY,MAAM,aAAa,MAAAC,OAAM,UAAU,SAAAC,UAAS,OAAO,OAAAC,QAAO,SAAAC,SAAO;;;AHrB7K,SAAS,WAAWC,WAAU;;;;;;;;;;;;AIJ9B,OAAOC,YAAW;;;ACGlB,IAAIC,kBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACrB,IAAMC,KAAI,SAAS,cAAc,OAAO;AACxCA,GAAE,aAAa,mBAAmB,0DAA0D;AAC5FA,GAAE,YAAY,SAAS,eAAeD,eAAc,CAAC;AACrD,SAAS,KAAK,YAAYC,EAAC;AACpB,IAAM,gBAAgB;AACtB,IAAM,iBAAiB;AAC9B,IAAO,wBAAQ,EAAC,eAAe,eAAc;;;ADPtC,SAAS,OAAO,OAA8E;AACnG,QAAM,EAAE,SAAS,GAAG,MAAM,IAAI;AAC9B,QAAM,YAAY,UAAU,sBAAO,gBAAgB,sBAAO;AAC1D,SAAO,gBAAAC,OAAA,cAAC,YAAQ,GAAG,OAAO,WAAsB,MAAM,UAAU;AAClE;;;AJQA,SAAS,cAAc,MAA2B;AAChD,MAAI,KAAK,WAAW,WAAW;AAC7B,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,KAAK,oBAAoB;AAAA,IACzC,KAAK,QAAQ,UAAU,GAAG,KAAK,OAAO,MAAM,SAAS,KAAK,OAAO,SAAS,IAAI,MAAM,EAAE;AAAA,IACtF,KAAK,UAAU,UAAU,GAAG,KAAK,SAAS,MAAM,WAAW,KAAK,SAAS,SAAS,IAAI,MAAM,EAAE;AAAA,EAChG,EACG,OAAO,OAAO,EACd,KAAK,IAAI;AACd;AAEO,SAAS,WAAW,EAAE,KAAK,GAAoB;AACpD,QAAM,CAAC,QAAQ,SAAS,IAAIC,OAAM,SAA8B,MAAS;AACzE,QAAM,EAAE,MAAAC,OAAM,UAAU,OAAO,IAAI;AACnC,QAAM,YAAY,aAAa;AAC/B,QAAM,cAAc,WAAW,QAAS,WAAW,UAAa,KAAK,QAAQ,SAAS;AAEtF,QAAM,OAAO,CAAC,aAAqB;AACjC,cAAU,KAAK;AAAA,MACb;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,cAAc,MAAM;AACxB,cAAU,WAAW;AAAA,MACnB,UAAU,KAAK;AAAA,MACf,cAAc;AAAA,IAChB,CAAC;AAAA,EACH;AAEA,QAAM,cAAc,MAAM;AACxB,cAAU,YAAY,EAAE,IAAI,KAAK,IAAI,WAAW,KAAK,UAAU,CAAC;AAAA,EAClE;AAEA,SACE,gBAAAD,OAAA,cAAC,SAAI,WAAW,0BAAO,QACrB,gBAAAA,OAAA,cAAC,SAAI,WAAW,mBAAmB,IAAI,KACrC,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,0BAAO;AAAA,MAClB,SAAS,MAAM,UAAU,CAAC,WAAW;AAAA,MACrC,cAAY,cAAc,YAAYC,KAAI,KAAK,UAAUA,KAAI;AAAA;AAAA,IAE7D,gBAAAD,OAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAWE,IAAG,0BAAO,YAAY,CAAC,eAAe,0BAAO,SAAS;AAAA,QACjE,KAAK;AAAA,QACL,KAAI;AAAA;AAAA,IACN;AAAA,EACF,GACC,QAAQ,WAAW,KAAK,UAAU,WAAW,KAC5C,gBAAAF,OAAA,cAAC,SAAI,WAAW,0BAAO,WAAW,KAAK,2BAAa,KAAI,gBAAe,GAExE,QAAQ,SAAS,KAAK,gBAAAA,OAAA,cAAC,SAAI,WAAW,0BAAO,WAAW,KAAK,yBAAW,KAAI,cAAa,GAC1F,gBAAAA,OAAA,cAAC,SAAI,WAAW,0BAAO,SAAQC,KAAK,GACpC,gBAAAD,OAAA,cAAC,SAAI,WAAW,0BAAO,WAAU,cAAc,IAAI,CAAE,CACvD,GACC,eACC,gBAAAA,OAAA,cAAAA,OAAA,gBACE,gBAAAA,OAAA,cAAC,SAAI,WAAW,0BAAO,YACrB,gBAAAA,OAAA,cAAC,UAAO,SAAS,eAAa,cAAY,CAC5C,GACA,gBAAAA,OAAA,cAAC,SAAI,WAAW,0BAAO,WACrB,gBAAAA,OAAA,cAAC,SAAI,WAAW,0BAAO,SAAO,SAAO,GACrC,gBAAAA,OAAA,cAAC,SAAI,WAAW,0BAAO,iBACrB,gBAAAA,OAAA,cAAC,SAAI,WAAW,0BAAO,QAAM,YAAU,GACvC,gBAAAA,OAAA,cAAC,SAAI,WAAW,0BAAO,SACrB,gBAAAA,OAAA,cAAC,YAAO,WAAW,0BAAO,YAAY,SAAS,MAAM,KAAK,KAAK,SAAS,KACrE,KAAK,SACR,GAEA,gBAAAA,OAAA,cAAC,YAAO,WAAW,0BAAO,YAAY,SAAS,eAAa,gBAE5D,CACF,CACF,GACA,gBAAAA,OAAA,cAAC,SAAI,WAAW,0BAAO,iBACrB,gBAAAA,OAAA,cAAC,SAAI,WAAW,0BAAO,QAAM,aAAW,GACxC,gBAAAA,OAAA,cAAC,YAAO,WAAW,0BAAO,YAAY,SAAS,MAAM,KAAK,KAAK,UAAU,KACtE,KAAK,UACR,CACF,GACC,QAAQ,SAAS,KAChB,gBAAAA,OAAA,cAAAA,OAAA,gBACE,gBAAAA,OAAA,cAAC,SAAI,WAAW,0BAAO,SAAO,QAAM,GACpC,gBAAAA,OAAA,cAAC,SAAI,WAAW,0BAAO,eACpB,OAAO,IAAI,CAACG,QAAO,UAClB,gBAAAH,OAAA,cAAC,kBAAe,KAAK,OAAO,MAAMG,QAAO,aAAa,KAAK,WAAW,OAAO,QAAQ,GAAG,CACzF,CACH,CACF,GAED,UAAU,SAAS,KAClB,gBAAAH,OAAA,cAAAA,OAAA,gBACE,gBAAAA,OAAA,cAAC,SAAI,WAAW,0BAAO,SAAO,UAAQ,GACtC,gBAAAA,OAAA,cAAC,SAAI,WAAW,0BAAO,eACpB,SAAS,IAAI,CAACI,UAAS,UACtB,gBAAAJ,OAAA,cAAC,kBAAe,KAAK,OAAO,MAAMI,UAAS,aAAa,KAAK,WAAW,OAAO,QAAQ,GAAG,CAC3F,CACH,CACF,CAEJ,CACF,CAEJ;AAEJ;AAEA,SAAS,mBAAmB,MAA2B;AACrD,SAAOF,IAAG,0BAAO,QAAQ;AAAA,IACvB,CAAC,0BAAO,OAAO,GAAG,KAAK,QAAQ,WAAW,KAAK,KAAK,UAAU,WAAW;AAAA,IACzE,CAAC,0BAAO,OAAO,GAAG,KAAK,QAAQ,WAAW,KAAK,KAAK,UAAU,SAAS;AAAA,IACvE,CAAC,0BAAO,KAAK,GAAG,KAAK,QAAQ,SAAS;AAAA,EACxC,CAAC;AACH;;;AMlIA,SAAS,aAAAG,YAAW,YAAAC,iBAAgB;AAEpC,SAAS,sBAAsB;AAkBxB,IAAM,mBAAmB,MAAM;AACpC,QAAM,UAAU,aAAa;AAC7B,QAAM,CAAC,SAAS,UAAU,IAAIC,UAAqC,EAAE,OAAO,CAAC,EAAE,CAAC;AAEhF,EAAAC,WAAU,MAAM,SAAS,UAAU,gBAAgB,UAAU,GAAG,CAAC,OAAO,CAAC;AAEzE,SAAO;AACT;;;ACxBA,IAAIC,kBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACrB,IAAMC,KAAI,SAAS,cAAc,OAAO;AACxCA,GAAE,aAAa,mBAAmB,kEAAkE;AACpGA,GAAE,YAAY,SAAS,eAAeD,eAAc,CAAC;AACrD,SAAS,KAAK,YAAYC,EAAC;AACpB,IAAMC,QAAO;AACpB,IAAO,0BAAQ,EAAC,MAAAA,MAAI;;;ARCb,SAAS,SAAS,EAAE,cAAc,WAAW,GAAkB;AACpE,QAAM,UAAU,iBAAiB;AACjC,QAAM,SAAS,QAAQ,SAAS,CAAC,GAAG,KAAK,SAAS;AAElD,MAAI,gBAAgB;AACpB,MAAI,cAAc;AAChB,mBAAe,aAAa,YAAY;AACxC,oBAAgB,cAAc,OAAO,CAAC,EAAE,MAAAC,MAAK,MAAM,gBAAgBA,MAAK,YAAY,EAAE,SAAS,YAAY,CAAC;AAAA,EAC9G;AACA,MAAI,YAAY;AACd,oBAAgB,cAAc,OAAO,CAAC,EAAE,QAAQ,SAAS,MAAM,QAAQ,UAAU,UAAU,MAAM;AAAA,EACnG;AAEA,SACE,gBAAAC,OAAA,cAAC,SAAI,WAAW,wBAAO,QACpB,cAAc,IAAI,CAAC,SAClB,gBAAAA,OAAA,cAAC,cAAW,KAAK,KAAK,MAAM,MAAY,CACzC,CACH;AAEJ;AAKA,SAAS,UAAU,GAAwB,GAAwB;AACjE,QAAM,UAAU,EAAE,WAAW,YAAY,IAAI;AAC7C,QAAM,UAAU,EAAE,WAAW,YAAY,IAAI;AAE7C,MAAI,YAAY,SAAS;AACvB,WAAO,UAAU,UAAU,KAAK;AAAA,EAClC;AAEA,QAAM,UAAU,EAAE,QAAQ,UAAU;AACpC,QAAM,UAAU,EAAE,QAAQ,UAAU;AAEpC,MAAI,YAAY,SAAS;AACvB,WAAO,UAAU,UAAU,KAAK;AAAA,EAClC;AAEA,SAAO,EAAE,OAAO,EAAE,OAAO,KAAK;AAChC;;;ASnDA,SAAS,WAAWC,QAAO,UAAAC,eAAc;;;ACGzC,IAAIC,kBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACrB,IAAMC,KAAI,SAAS,cAAc,OAAO;AACxCA,GAAE,aAAa,mBAAmB,0DAA0D;AAC5FA,GAAE,YAAY,SAAS,eAAeD,eAAc,CAAC;AACrD,SAAS,KAAK,YAAYC,EAAC;AACpB,IAAM,cAAc;AACpB,IAAMC,YAAW;AACjB,IAAM,SAAS;AACf,IAAM,UAAU;AAChB,IAAMC,SAAQ;AACd,IAAMC,aAAY;AACzB,IAAO,wBAAQ,EAAC,aAAa,UAAAF,WAAU,QAAQ,SAAS,OAAAC,QAAO,WAAAC,WAAS;;;;;;ADCjE,SAAS,OAAO,EAAE,OAAAC,QAAO,IAAI,OAAO,WAAW,SAAS,UAAAC,WAAU,SAAS,GAAgB;AAChG,QAAM,eAAeC,QAAuB,IAAI;AAChD,QAAM,qBAAqBA,QAAuB,IAAI;AACtD,QAAM,cAAc,UAAU,UAAU,qBAAqB;AAC7D,QAAM,kBAAkB,YAAY,SAAS;AAE7C,eAAa;AAAA,IACX,SAAS,CAAC,CAAC;AAAA,IACX,qBAAqB;AAAA,IACrB,gBAAgB;AAAA,EAClB,CAAC;AAED,SACE,gBAAAC,OAAA,cAAC,SAAI,IAAQ,WAAW,sBAAO,WAC7B,gBAAAA,OAAA,cAAC,SAAI,KAAK,cAAc,WAAW,sBAAO,QAAQ,OAAO,EAAE,gBAAgB,YAAY,KACrF,gBAAAA,OAAA,cAAC,SAAI,WAAW,sBAAO,aACrB,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAW,sBAAO;AAAA,MAClB,OAAO,EAAE,OAAO,aAAa,QAAQ,gBAAgB;AAAA;AAAA,IAEpDH;AAAA,EACH,GACC,WACC,gBAAAG,OAAA,cAAC,YAAO,WAAW,sBAAO,aAAa,SAAS,SAAS,cAAW,sBAElE,gBAAAA,OAAA,cAAC,SAAI,KAAK,kCAAW,KAAI,IAAG,CAC9B,CAEJ,GACCF,aAAY,gBAAAE,OAAA,cAAC,SAAI,WAAW,sBAAO,YAAW,GAAGF,SAAS,GAC1D,QACH,CACF;AAEJ;;;AElDA,OAAOG,YAAW;;;ACGlB,IAAIC,kBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACrB,IAAMC,KAAI,SAAS,cAAc,OAAO;AACxCA,GAAE,aAAa,mBAAmB,mEAAmE;AACrGA,GAAE,YAAY,SAAS,eAAeD,eAAc,CAAC;AACrD,SAAS,KAAK,YAAYC,EAAC;AACpB,IAAM,YAAY;AACzB,IAAO,2BAAQ,EAAC,UAAS;;;ADDlB,SAAS,UAAU,EAAE,OAAAC,QAAO,SAAS,GAAmB;AAC7D,SACE,gBAAAC,OAAA,cAAAA,OAAA,gBACG,OAAOD,WAAU,YAChB,gBAAAC,OAAA,cAAC,WAAM,MAAK,QAAO,aAAY,UAAS,WAAW,yBAAO,WAAW,UAAoB,OAAOD,QAAO,CAE3G;AAEJ;;;AZJO,SAAS,aAAa,EAAE,QAAQ,GAAsB;AAC3D,QAAM,YAAY,aAAa;AAC/B,QAAM,CAAC,cAAc,eAAe,IAAIE,OAAM,SAAS,EAAE;AACzD,QAAM,CAAC,YAAY,aAAa,IAAIA,OAAM,SAAS,KAAK;AAExD,QAAM,qBAAqBC,aAAY,CAAC,UAA+C;AACrF,UAAM,eAAe;AACrB,oBAAgB,MAAM,OAAO,KAAK;AAAA,EACpC,GAAG,CAAC,CAAC;AAEL,QAAM,kBAAkB,MAAM;AAC5B,cAAU,gBAAgB;AAAA,EAC5B;AAEA,QAAM,mBAAmB,MAAM,cAAc,CAACC,WAAU,CAACA,MAAK;AAE9D,SACE,gBAAAF,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,IAAI,WAAW;AAAA,MACf,WAAS;AAAA,MACT;AAAA,MACA,UAAU;AAAA,QACR,gBAAAA,OAAA,cAAC,UAAO,SAAO,MAAC,SAAS,iBAAiB,KAAI,aAAU,mBAExD;AAAA,QACA,gBAAAA,OAAA,cAAC,UAAO,SAAS,kBAAkB,KAAI,YACpC,aAAa,mBAAmB,wBACnC;AAAA,MACF;AAAA;AAAA,IAEA,gBAAAA,OAAA,cAAC,aAAU,OAAO,cAAc,UAAU,oBAAoB;AAAA,IAC9D,gBAAAA,OAAA,cAAC,YAAS,cAA4B,YAAwB;AAAA,EAChE;AAEJ;;;Ac/CA,SAAS,WAAWG,eAAa;;;ACAjC,OAAOC,aAAW;AAGlB,SAAS,WAAWC,WAAU;AAMvB,SAAS,UAAU,OAA8B;AACtD,QAAM,CAAC,aAAa,cAAc,IAAIC,QAAM,SAAkB,KAAK;AACnE,QAAM,EAAE,aAAa,YAAY,WAAW,QAAQ,IAAI;AACxD,QAAM,YAAY,aAAa;AAE/B,QAAM,aAAa,MAAM;AACvB,cAAU,WAAW;AAAA,EACvB;AAEA,QAAM,cAAc,MAAM;AACxB,cAAU,YAAY,EAAE,aAAa,YAAY,UAAU,CAAC;AAAA,EAC9D;AAEA,SACE,gBAAAA,QAAA,cAAC,SAAI,WAAW,0BAAO,QACrB,gBAAAA,QAAA,cAAC,SAAI,WAAWC,IAAG,0BAAO,QAAQ,0BAAO,KAAK,KAC5C,gBAAAD,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,0BAAO;AAAA,MAClB,SAAS,MAAM,eAAe,CAAC,WAAW;AAAA,MAC1C,cAAY,cAAc,YAAY,WAAW,IAAI,UAAU,KAAK,UAAU,WAAW,IAAI,UAAU;AAAA;AAAA,IAEvG,gBAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAWC,IAAG,0BAAO,YAAY,CAAC,eAAe,0BAAO,SAAS;AAAA,QACjE,KAAK;AAAA,QACL,KAAI;AAAA;AAAA,IACN;AAAA,EACF,GACA,gBAAAD,QAAA,cAAC,SAAI,WAAW,0BAAO,WAAW,KAAK,yBAAW,KAAI,cAAa,GACnE,gBAAAA,QAAA,cAAC,SAAI,WAAW,0BAAO,SAAQ,GAAG,WAAW,IAAI,UAAU,EAAG,CAChE,GACC,eACC,gBAAAA,QAAA,cAAAA,QAAA,gBACE,gBAAAA,QAAA,cAAC,SAAI,WAAW,0BAAO,YACpB,WAAW,gBAAAA,QAAA,cAAC,UAAO,SAAS,eAAa,cAAY,GACtD,gBAAAA,QAAA,cAAC,UAAO,SAAS,cAAY,kBAAgB,CAC/C,GACA,gBAAAA,QAAA,cAAC,SAAI,WAAW,0BAAO,WACrB,gBAAAA,QAAA,cAAC,SAAI,WAAW,0BAAO,SAAO,SAAO,GAErC,gBAAAA,QAAA,cAAC,SAAI,WAAW,0BAAO,iBACrB,gBAAAA,QAAA,cAAC,SAAI,WAAW,0BAAO,QAAM,SAAO,GACpC,gBAAAA,QAAA,cAAC,SAAI,WAAW,0BAAO,SACpB,eAAe,MACZ,4BAA4B,WAAW,oBACvC,SAAS,UAAU,gCAAgC,WAAW,+CACpE,CACF,GACA,gBAAAA,QAAA,cAAC,SAAI,WAAW,0BAAO,iBACrB,gBAAAA,QAAA,cAAC,SAAI,WAAW,0BAAO,QAAM,UAAQ,GACrC,gBAAAA,QAAA,cAAC,SAAI,WAAW,0BAAO,SACpB,UACG,iEAAiE,WAAW,kBAAkB,WAAW,IAAI,UAAU,OACvH,eAAe,MACb,yCACA,kEACR,CACF,CACF,CACF,CAEJ;AAEJ;;;AD1DO,SAAS,YAAY,EAAE,YAAY,GAAqB;AAC7D,QAAM,YAAY,aAAa;AAE/B,QAAM,SAAS,MAAM;AACnB,cAAU,gBAAgB;AAAA,EAC5B;AAEA,SACE,gBAAAE,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,IAAI,WAAW;AAAA,MACf,OAAM;AAAA,MACN,UAAU;AAAA,QACR,gBAAAA,QAAA,cAAC,UAAO,SAAO,MAAC,SAAS,QAAQ,KAAI,OAAI,mBAEzC;AAAA,MACF;AAAA;AAAA,IAEA,gBAAAA,QAAA,cAAC,SAAI,WAAW,wBAAO,QACpB,YAAY,IAAI,CAAC,MAAM,UACtB,gBAAAA,QAAA,cAAC,aAAW,GAAG,MAAM,KAAK,OAAO,CAClC,CACH;AAAA,EACF;AAEJ;;;AEtCA,SAAS,aAAAC,YAAW,YAAAC,iBAAgB;AACpC,SAAS,yBAAyB;AAwBlC,IAAM,iBAAiB,CAAC,UAAwD;AAC9E,SAAO,OAAO,MAAM,WAAW,YAAY,CAAC,MAAM,QAAQ,MAAM,MAAM,KAAK,MAAM,WAAW;AAC9F;AAGA,IAAM,aAAa,CAAC,UAAwD;AAC1E,SAAO,eAAe,KAAK,KAAK,OAAO,MAAM,OAAO,YAAY;AAClE;AAIO,IAAM,iBAAiB,MAAM;AAClC,QAAM,CAAC,aAAa,cAAc,IAAIC,UAAmD,EAAE,aAAa,CAAC,EAAE,CAAC;AAC5G,QAAM,YAAY,aAAa;AAE/B,EAAAC,WAAU,MAAM;AACd,UAAM,yBAAyB,CAAC,SAAiB,cAA6B;AAC5E,YAAM,aAAa;AACnB,YAAM,QAAQ,QAAQ,MAAM,UAAU;AAEtC,UAAI,OAAO;AACT,cAAM,eAAe,kBAAkB,MAAM,CAAC,CAAC;AAC/C,cAAM,EAAE,YAAY,IAAI;AACxB,cAAM,aAAa,aAAa,WAAW,QAAQ,SAAS,EAAE;AAE9D,SAAC,YAAY;AACX,gBAAM,EAAE,QAAQ,IAAI,MAAM,UAAU,iBAAiB,EAAE,aAAa,YAAY,UAAU,CAAC;AAC3F,yBAAe,CAAC,UAAU;AAAA,YACxB,GAAG;AAAA,YACH,aAAa,CAAC,GAAG,KAAK,aAAa,EAAE,aAAa,YAAY,WAAsB,QAAQ,CAAC;AAAA,UAC/F,EAAE;AAAA,QACJ,GAAG,EAAE,MAAM,MAAM;AAAA,QAEjB,CAAC;AAAA,MACH;AAAA,IACF;AAEA,UAAM,aAAa,OAAO;AAE1B,eAAW,WAAW;AAGtB,WAAO,iBAAiB,SAAS,CAAC,UAAsB;AACtD,6BAAuB,MAAM,SAAS,MAAM,QAAQ;AAAA,IACtD,CAAC;AAGD,eAAWC,UAAS,WAAW,gBAAgB;AAC7C,6BAAuBA,OAAM,SAASA,OAAM,QAAQ;AAAA,IACtD;AAGA,WAAO,iBAAiB,sBAAsB,CAAC,UAAiC;AAC9E,iBAAW,KAAK,KAAK,uBAAuB,MAAM,OAAO,OAAO;AAAA,IAClE,CAAC;AAGD,eAAWA,UAAS,WAAW,oBAAoB;AACjD,iBAAWA,MAAK,KAAK,uBAAuBA,OAAM,OAAO,OAAO;AAAA,IAClE;AAAA,EACF,GAAG,CAAC,SAAS,CAAC;AAEd,SAAO;AACT;;;ACxFA,OAAOC,aAAW;AAGX,SAAS,0BAA0B;AACxC,QAAM,CAAC,cAAc,eAAe,IAAIC,QAAM,SAAiB;AAC/D,QAAM,YAAY,aAAa;AAE/B,EAAAA,QAAM,UAAU,MAAM;AACpB,mBAAe,qBAAqB;AAClC,YAAM,EAAE,iBAAiB,qBAAqB,IAAI,OAAO;AAEzD,YAAM,kBAAkB,MAAM,gBAAgB;AAC9C,sBAAgB,eAAe;AAC/B,gBAAU,aAAa,EAAE,QAAQ,kBAAkB,OAAO,gBAAgB,CAAC;AAG3E,gBAAU,aAAa,EAAE,QAAQ,uBAAuB,OAAO,qBAAqB,EAAE,CAAC;AAAA,IACzF;AAEA,SAAK,mBAAmB;AAAA,EAC1B,GAAG,CAAC,SAAS,CAAC;AAEd,SAAO;AACT;;;AtBfO,SAAS,gBAAgB;AAC9B,QAAM,eAAe,wBAAwB;AAC7C,QAAM,CAAC,YAAY,aAAa,IAAIC,UAAkB,KAAK;AAC3D,QAAM,SAAS,UAAU;AACzB,QAAM,aAAaC,QAAoC;AACvD,QAAM,EAAE,YAAY,IAAI,eAAe;AAIvC,EAAAC,QAAM,UAAU,MAAM;AACpB,QACE,CAAC,cACD,WAAW,SAAS,WAAW,UAC/B,OAAO,WAAW,WACjB,WAAW,SAAS,eAAe,QAAQ,OAAO,eAAe,IAClE;AACA,oBAAc,IAAI;AAAA,IACpB;AACA,eAAW,UAAU;AAAA,EACvB,GAAG,CAAC,QAAQ,UAAU,CAAC;AAEvB,QAAM,kBAAkBC,aAAY,MAAM;AACxC,YAAQ,IAAI,+BAA+B,CAAC,UAAU,EAAE;AACxD,kBAAc,CAAC,UAAU;AAAA,EAC3B,GAAG,CAAC,UAAU,CAAC;AAEf,SAAO,YAAY,SACjB,gBAAAD,QAAA,cAAC,eAAY,aAA0B,IACrC,aACF,gBAAAA,QAAA,cAAC,gBAAa,SAAS,iBAAiB,IAExC,gBAAAA,QAAA,cAAC,eAAY,UAAU,iBAAiB,cAA4B;AAExE;;;AuBzCA,OAAOE,aAAW;;;ACGlB,IAAIC,kBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACrB,IAAMC,KAAI,SAAS,cAAc,OAAO;AACxCA,GAAE,aAAa,mBAAmB,wEAAwE;AAC1GA,GAAE,YAAY,SAAS,eAAeD,eAAc,CAAC;AACrD,SAAS,KAAK,YAAYC,EAAC;AACpB,IAAMC,QAAO;AACpB,IAAO,+BAAQ,EAAC,MAAAA,MAAI;;;ADNb,SAAS,cAAc,EAAE,SAAS,GAAgC;AACvE,SAAO,gBAAAC,QAAA,cAAC,SAAI,WAAW,6BAAO,QAAO,QAAS;AAChD;;;A3BEA,IAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,QAAQ,KAAK,WAAW;AAExB,SAAS;AAAA,EACP,gBAAAC,QAAA,cAAC,qBACC,gBAAAA,QAAA,cAAC,yBACC,gBAAAA,QAAA,cAAC,mBAAc,CACjB,CACF;AAAA,EACA;AACF;AAEA,SAAS,KAAK,YAAY,OAAO;",
6
6
  "names": ["React", "s", "name", "value", "error", "React", "useCallback", "useState", "useRef", "React", "useState", "useState", "useEffect", "useState", "useState", "useEffect", "inline", "useState", "metric", "React", "badge", "React", "useCallback", "React", "React", "React", "compiledModule", "s", "React", "compiledModule", "s", "collapsed", "content", "error", "root", "success", "value", "warning", "cx", "React", "compiledModule", "s", "React", "React", "name", "cx", "error", "warning", "useEffect", "useState", "useState", "useEffect", "compiledModule", "s", "root", "name", "React", "React", "useRef", "compiledModule", "s", "commands", "title", "titleArea", "title", "commands", "useRef", "React", "React", "compiledModule", "s", "value", "React", "React", "useCallback", "value", "React", "React", "cx", "React", "cx", "React", "useEffect", "useState", "useState", "useEffect", "error", "React", "React", "useState", "useRef", "React", "useCallback", "React", "compiledModule", "s", "root", "React", "React"]
7
7
  }
@@ -1,28 +1,28 @@
1
1
  {
2
2
  "type": "builder:notify",
3
- "buildId": "build_73be53ad-907d-47dd-b28d-8bd580e01910",
3
+ "buildId": "build_24ba9bcb-5eed-4dbe-989f-2e7a8348e407",
4
4
  "buildStatus": "complete",
5
5
  "internalError": null,
6
6
  "warnings": [],
7
7
  "errors": [],
8
8
  "outputFilePaths": [
9
- "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/lib/constants.js.map",
10
- "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/lib/constants.js",
11
9
  "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/lib/index.js.map",
12
10
  "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/lib/index.js",
11
+ "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/lib/constants.js.map",
12
+ "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/lib/constants.js",
13
13
  "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/chunks/js/chunk-PDWQRLCD.js.map",
14
14
  "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/chunks/js/chunk-PDWQRLCD.js"
15
15
  ],
16
16
  "outputFiles": null,
17
17
  "metafile": {
18
18
  "inputs": {
19
- "packages/overlay/src/constants.ts": {
20
- "bytes": 803,
19
+ "packages/overlay/src/components/CloudpackProvider/getCookies.ts": {
20
+ "bytes": 452,
21
21
  "imports": [],
22
22
  "format": "esm"
23
23
  },
24
- "packages/overlay/src/components/CloudpackProvider/getCookies.ts": {
25
- "bytes": 452,
24
+ "packages/overlay/src/constants.ts": {
25
+ "bytes": 803,
26
26
  "imports": [],
27
27
  "format": "esm"
28
28
  },
@@ -142,7 +142,7 @@
142
142
  "format": "esm"
143
143
  },
144
144
  "packages/overlay/src/components/StatusDialog/TaskResultItem.tsx": {
145
- "bytes": 1445,
145
+ "bytes": 1388,
146
146
  "imports": [
147
147
  {
148
148
  "path": "react",
@@ -201,7 +201,7 @@
201
201
  "format": "esm"
202
202
  },
203
203
  "packages/overlay/src/components/StatusDialog/TaskStatus.tsx": {
204
- "bytes": 4796,
204
+ "bytes": 4764,
205
205
  "imports": [
206
206
  {
207
207
  "path": "react",
@@ -619,32 +619,11 @@
619
619
  }
620
620
  },
621
621
  "outputs": {
622
- "packages/overlay/dist/browser-esm/lib/constants.js.map": {
623
- "imports": [],
624
- "exports": [],
625
- "inputs": {},
626
- "bytes": 93
627
- },
628
- "packages/overlay/dist/browser-esm/lib/constants.js": {
629
- "imports": [
630
- {
631
- "path": "packages/overlay/dist/browser-esm/chunks/js/chunk-PDWQRLCD.js",
632
- "kind": "import-statement"
633
- }
634
- ],
635
- "exports": [
636
- "cookieNames",
637
- "elementIds"
638
- ],
639
- "entryPoint": "packages/overlay/src/constants.ts",
640
- "inputs": {},
641
- "bytes": 156
642
- },
643
622
  "packages/overlay/dist/browser-esm/lib/index.js.map": {
644
623
  "imports": [],
645
624
  "exports": [],
646
625
  "inputs": {},
647
- "bytes": 83068
626
+ "bytes": 82908
648
627
  },
649
628
  "packages/overlay/dist/browser-esm/lib/index.js": {
650
629
  "imports": [
@@ -825,10 +804,10 @@
825
804
  "bytesInOutput": 1120
826
805
  },
827
806
  "packages/overlay/src/components/StatusDialog/TaskStatus.tsx": {
828
- "bytesInOutput": 5034
807
+ "bytesInOutput": 5002
829
808
  },
830
809
  "packages/overlay/src/components/StatusDialog/TaskResultItem.tsx": {
831
- "bytesInOutput": 1399
810
+ "bytesInOutput": 1341
832
811
  },
833
812
  "packages/overlay/src/components/StatusDialog/TaskResultItem.module.css": {
834
813
  "bytesInOutput": 1838
@@ -891,7 +870,28 @@
891
870
  "bytesInOutput": 614
892
871
  }
893
872
  },
894
- "bytes": 52274
873
+ "bytes": 52184
874
+ },
875
+ "packages/overlay/dist/browser-esm/lib/constants.js.map": {
876
+ "imports": [],
877
+ "exports": [],
878
+ "inputs": {},
879
+ "bytes": 93
880
+ },
881
+ "packages/overlay/dist/browser-esm/lib/constants.js": {
882
+ "imports": [
883
+ {
884
+ "path": "packages/overlay/dist/browser-esm/chunks/js/chunk-PDWQRLCD.js",
885
+ "kind": "import-statement"
886
+ }
887
+ ],
888
+ "exports": [
889
+ "cookieNames",
890
+ "elementIds"
891
+ ],
892
+ "entryPoint": "packages/overlay/src/constants.ts",
893
+ "inputs": {},
894
+ "bytes": 156
895
895
  },
896
896
  "packages/overlay/dist/browser-esm/chunks/js/chunk-PDWQRLCD.js.map": {
897
897
  "imports": [],
@@ -4,8 +4,17 @@
4
4
  "./lib/index": "./src/index.tsx",
5
5
  "./lib/constants": "./src/constants.ts"
6
6
  },
7
- "hash": "v4-0a454c9699fdc64bce5c3836a29c4e0cd9c8c761",
7
+ "hash": "v4-38833cbcf20304d80bfbae2af1fe51333efa92a1",
8
8
  "outputFiles": [
9
+ {
10
+ "outputPath": "./lib/index.js.map",
11
+ "exports": []
12
+ },
13
+ {
14
+ "outputPath": "./lib/index.js",
15
+ "entryPoint": "./src/index.tsx",
16
+ "exports": []
17
+ },
9
18
  {
10
19
  "outputPath": "./lib/constants.js.map",
11
20
  "exports": []
@@ -18,15 +27,6 @@
18
27
  "elementIds"
19
28
  ]
20
29
  },
21
- {
22
- "outputPath": "./lib/index.js.map",
23
- "exports": []
24
- },
25
- {
26
- "outputPath": "./lib/index.js",
27
- "entryPoint": "./src/index.tsx",
28
- "exports": []
29
- },
30
30
  {
31
31
  "outputPath": "./chunks/js/chunk-PDWQRLCD.js.map",
32
32
  "exports": []
@@ -14,8 +14,9 @@ export function TaskResultItem({ item, projectPath, index }) {
14
14
  ev.preventDefault();
15
15
  }
16
16
  };
17
- const filename = item.location?.file || '(path unavailable)';
18
- const location = ['', item.location?.line, item.location?.column].filter(Boolean).join(':');
17
+ const location = [item.location?.file || '(path unavailable)', item.location?.line, item.location?.column]
18
+ .filter(Boolean)
19
+ .join(':');
19
20
  return (React.createElement("div", { className: styles.root },
20
21
  React.createElement("div", { className: styles.statusBar }),
21
22
  React.createElement("div", { className: styles.content },
@@ -23,9 +24,7 @@ export function TaskResultItem({ item, projectPath, index }) {
23
24
  React.createElement("button", { onClick: openSource, className: styles.file },
24
25
  index,
25
26
  ". ",
26
- filename,
27
- location && ` (${location})`,
28
- ":")),
27
+ location)),
29
28
  React.createElement("div", { className: styles.text },
30
29
  "[",
31
30
  item.source,
@@ -1 +1 @@
1
- {"version":3,"file":"TaskResultItem.js","sourceRoot":"","sources":["../../../src/components/StatusDialog/TaskResultItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,MAAM,MAAM,6BAA6B,CAAC;AAQjD,MAAM,UAAU,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAuB;IAC9E,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAE/B,MAAM,UAAU,GAAG,CAAC,EAAoB,EAAE,EAAE;QAC1C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,UAAU,CAAC;gBACjB,QAAQ,EAAE,WAAW;gBACrB,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI;gBACjC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI;gBACzB,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM;aAC9B,CAAC,CAAC;YACH,EAAE,CAAC,cAAc,EAAE,CAAC;QACtB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,oBAAoB,CAAC;IAC7D,MAAM,QAAQ,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5F,OAAO,CACL,6BAAK,SAAS,EAAE,MAAM,CAAC,IAAI;QACzB,6BAAK,SAAS,EAAE,MAAM,CAAC,SAAS,GAAQ;QACxC,6BAAK,SAAS,EAAE,MAAM,CAAC,OAAO;YAC5B,6BAAK,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC9B,gCAAQ,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI;oBAChD,KAAK;;oBAAI,QAAQ;oBACjB,QAAQ,IAAI,KAAK,QAAQ,GAAG;wBACtB,CACL;YACN,6BAAK,SAAS,EAAE,MAAM,CAAC,IAAI;;gBACvB,IAAI,CAAC,MAAM;;gBAAI,IAAI,CAAC,IAAI,CACtB;YACN,6BAAK,SAAS,EAAE,MAAM,CAAC,IAAI,IAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAO,CAC9D,CACF,CACP,CAAC;AACJ,CAAC","sourcesContent":["import type { BundleMessage } from '@ms-cloudpack/common-types';\nimport React from 'react';\nimport { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';\nimport styles from './TaskResultItem.module.css';\n\nexport interface TaskResultItemProps {\n item: BundleMessage;\n projectPath: string;\n index: number;\n}\n\nexport function TaskResultItem({ item, projectPath, index }: TaskResultItemProps) {\n const service = useCloudpack();\n\n const openSource = (ev: React.MouseEvent) => {\n if (item.location) {\n service.openSource({\n rootPath: projectPath,\n relativePath: item.location?.file,\n line: item.location?.line,\n column: item.location?.column,\n });\n ev.preventDefault();\n }\n };\n\n const filename = item.location?.file || '(path unavailable)';\n const location = ['', item.location?.line, item.location?.column].filter(Boolean).join(':');\n\n return (\n <div className={styles.root}>\n <div className={styles.statusBar}></div>\n <div className={styles.content}>\n <div className={styles.titleArea}>\n <button onClick={openSource} className={styles.file}>\n {index}. {filename}\n {location && ` (${location})`}:\n </button>\n </div>\n <div className={styles.text}>\n [{item.source}] {item.text}\n </div>\n <pre className={styles.text}>{JSON.stringify(item, null, 2)}</pre>\n </div>\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"TaskResultItem.js","sourceRoot":"","sources":["../../../src/components/StatusDialog/TaskResultItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,MAAM,MAAM,6BAA6B,CAAC;AAQjD,MAAM,UAAU,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAuB;IAC9E,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAE/B,MAAM,UAAU,GAAG,CAAC,EAAoB,EAAE,EAAE;QAC1C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,UAAU,CAAC;gBACjB,QAAQ,EAAE,WAAW;gBACrB,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI;gBACjC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI;gBACzB,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM;aAC9B,CAAC,CAAC;YACH,EAAE,CAAC,cAAc,EAAE,CAAC;QACtB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,oBAAoB,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;SACvG,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO,CACL,6BAAK,SAAS,EAAE,MAAM,CAAC,IAAI;QACzB,6BAAK,SAAS,EAAE,MAAM,CAAC,SAAS,GAAQ;QACxC,6BAAK,SAAS,EAAE,MAAM,CAAC,OAAO;YAC5B,6BAAK,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC9B,gCAAQ,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI;oBAChD,KAAK;;oBAAI,QAAQ,CACX,CACL;YACN,6BAAK,SAAS,EAAE,MAAM,CAAC,IAAI;;gBACvB,IAAI,CAAC,MAAM;;gBAAI,IAAI,CAAC,IAAI,CACtB;YACN,6BAAK,SAAS,EAAE,MAAM,CAAC,IAAI,IAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAO,CAC9D,CACF,CACP,CAAC;AACJ,CAAC","sourcesContent":["import type { BundleMessage } from '@ms-cloudpack/common-types';\nimport React from 'react';\nimport { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';\nimport styles from './TaskResultItem.module.css';\n\nexport interface TaskResultItemProps {\n item: BundleMessage;\n projectPath: string;\n index: number;\n}\n\nexport function TaskResultItem({ item, projectPath, index }: TaskResultItemProps) {\n const service = useCloudpack();\n\n const openSource = (ev: React.MouseEvent) => {\n if (item.location) {\n service.openSource({\n rootPath: projectPath,\n relativePath: item.location?.file,\n line: item.location?.line,\n column: item.location?.column,\n });\n ev.preventDefault();\n }\n };\n\n const location = [item.location?.file || '(path unavailable)', item.location?.line, item.location?.column]\n .filter(Boolean)\n .join(':');\n\n return (\n <div className={styles.root}>\n <div className={styles.statusBar}></div>\n <div className={styles.content}>\n <div className={styles.titleArea}>\n <button onClick={openSource} className={styles.file}>\n {index}. {location}\n </button>\n </div>\n <div className={styles.text}>\n [{item.source}] {item.text}\n </div>\n <pre className={styles.text}>{JSON.stringify(item, null, 2)}</pre>\n </div>\n </div>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TaskStatus.d.ts","sourceRoot":"","sources":["../../../src/components/StatusDialog/TaskStatus.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAUpF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,mBAAmB,CAAC;CAC3B;AAeD,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,eAAe,qBAgGnD"}
1
+ {"version":3,"file":"TaskStatus.d.ts","sourceRoot":"","sources":["../../../src/components/StatusDialog/TaskStatus.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAUpF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,mBAAmB,CAAC;CAC3B;AAeD,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,eAAe,qBA8FnD"}
@@ -33,8 +33,6 @@ export function TaskStatus({ task }) {
33
33
  cloudpack.openSource({
34
34
  rootPath: task.inputPath,
35
35
  relativePath: 'package.json',
36
- line: 0,
37
- column: 0,
38
36
  });
39
37
  };
40
38
  const restartTask = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"TaskStatus.js","sourceRoot":"","sources":["../../../src/components/StatusDialog/TaskStatus.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport type { TaskDescriptionType } from '../CloudpackProvider/useStatusDetails.js';\nimport { TaskResultItem } from './TaskResultItem.js';\nimport styles from './TaskStatus.module.css';\nimport { default as cx } from 'classnames';\nimport ErrorIcon from '../../images/error-24.inline.svg';\nimport SuccessIcon from '../../images/success-24.inline.svg';\nimport ChevronDownIcon from '../../images/chevrondown-20.inline.svg';\nimport { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';\nimport { Button } from '../Button/Button.js';\n\nexport interface TaskStatusProps {\n task: TaskDescriptionType;\n}\n\nfunction getCompletion(task: TaskDescriptionType) {\n if (task.status === 'pending') {\n return 'Running';\n }\n return [\n `Completed in ${task.durationMilliseconds}ms`,\n task.errors?.length && `${task.errors.length} error${task.errors.length > 1 ? 's' : ''}`,\n task.warnings?.length && `${task.warnings.length} warning${task.warnings.length > 1 ? 's' : ''}`,\n ]\n .filter(Boolean)\n .join(', ');\n}\n\nexport function TaskStatus({ task }: TaskStatusProps) {\n const [isOpen, setIsOpen] = React.useState<boolean | undefined>(undefined);\n const { name, warnings, errors } = task;\n const cloudpack = useCloudpack();\n const showContent = isOpen === true || (isOpen === undefined && task.errors?.length > 0);\n\n const open = (rootPath: string) => {\n cloudpack.open({\n rootPath,\n });\n };\n\n const openPackage = () => {\n cloudpack.openSource({\n rootPath: task.inputPath,\n relativePath: 'package.json',\n line: 0,\n column: 0,\n });\n };\n\n const restartTask = () => {\n cloudpack.restartTask({ id: task.id, inputPath: task.inputPath });\n };\n\n return (\n <div className={styles.root}>\n <div className={getHeaderClassName(task)}>\n <button\n className={styles.expandButton}\n onClick={() => setIsOpen(!showContent)}\n aria-label={showContent ? `Minimize ${name}` : `Expand ${name}`}\n >\n <img\n className={cx(styles.expandIcon, !showContent && styles.collapsed)}\n src={ChevronDownIcon}\n alt=\"Chevron down icon\"\n />\n </button>\n {errors?.length === 0 && warnings?.length === 0 && (\n <img className={styles.errorIcon} src={SuccessIcon} alt=\"Success icon\" />\n )}\n {errors?.length > 0 && <img className={styles.errorIcon} src={ErrorIcon} alt=\"Error icon\" />}\n <div className={styles.title}>{name}</div>\n <div className={styles.farArea}>{getCompletion(task)}</div>\n </div>\n {showContent && (\n <>\n <div className={styles.commands}>\n <Button onClick={restartTask}>Restart task</Button>\n </div>\n <div className={styles.content}>\n <div className={styles.title}>Details</div>\n <div className={styles.nameValueArea}>\n <div className={styles.name}>Input path</div>\n <div className={styles.value}>\n <button className={styles.linkButton} onClick={() => open(task.inputPath)}>\n {task.inputPath}\n </button>\n\n <button className={styles.linkButton} onClick={openPackage}>\n (Package.json)\n </button>\n </div>\n </div>\n <div className={styles.nameValueArea}>\n <div className={styles.name}>Output path</div>\n <button className={styles.linkButton} onClick={() => open(task.outputPath)}>\n {task.outputPath}\n </button>\n </div>\n {errors?.length > 0 && (\n <>\n <div className={styles.title}>Errors</div>\n <div className={styles.resultItems}>\n {errors.map((error, index) => (\n <TaskResultItem key={index} item={error} projectPath={task.inputPath} index={index + 1} />\n ))}\n </div>\n </>\n )}\n {warnings?.length > 0 && (\n <>\n <div className={styles.title}>Warnings</div>\n <div className={styles.resultItems}>\n {warnings.map((warning, index) => (\n <TaskResultItem key={index} item={warning} projectPath={task.inputPath} index={index + 1} />\n ))}\n </div>\n </>\n )}\n </div>\n </>\n )}\n </div>\n );\n}\n\nfunction getHeaderClassName(task: TaskDescriptionType) {\n return cx(styles.header, {\n [styles.success]: task.errors?.length === 0 && task.warnings?.length === 0,\n [styles.warning]: task.errors?.length === 0 && task.warnings?.length > 0,\n [styles.error]: task.errors?.length > 0,\n });\n}\n"]}
1
+ {"version":3,"file":"TaskStatus.js","sourceRoot":"","sources":["../../../src/components/StatusDialog/TaskStatus.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport type { TaskDescriptionType } from '../CloudpackProvider/useStatusDetails.js';\nimport { TaskResultItem } from './TaskResultItem.js';\nimport styles from './TaskStatus.module.css';\nimport { default as cx } from 'classnames';\nimport ErrorIcon from '../../images/error-24.inline.svg';\nimport SuccessIcon from '../../images/success-24.inline.svg';\nimport ChevronDownIcon from '../../images/chevrondown-20.inline.svg';\nimport { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';\nimport { Button } from '../Button/Button.js';\n\nexport interface TaskStatusProps {\n task: TaskDescriptionType;\n}\n\nfunction getCompletion(task: TaskDescriptionType) {\n if (task.status === 'pending') {\n return 'Running';\n }\n return [\n `Completed in ${task.durationMilliseconds}ms`,\n task.errors?.length && `${task.errors.length} error${task.errors.length > 1 ? 's' : ''}`,\n task.warnings?.length && `${task.warnings.length} warning${task.warnings.length > 1 ? 's' : ''}`,\n ]\n .filter(Boolean)\n .join(', ');\n}\n\nexport function TaskStatus({ task }: TaskStatusProps) {\n const [isOpen, setIsOpen] = React.useState<boolean | undefined>(undefined);\n const { name, warnings, errors } = task;\n const cloudpack = useCloudpack();\n const showContent = isOpen === true || (isOpen === undefined && task.errors?.length > 0);\n\n const open = (rootPath: string) => {\n cloudpack.open({\n rootPath,\n });\n };\n\n const openPackage = () => {\n cloudpack.openSource({\n rootPath: task.inputPath,\n relativePath: 'package.json',\n });\n };\n\n const restartTask = () => {\n cloudpack.restartTask({ id: task.id, inputPath: task.inputPath });\n };\n\n return (\n <div className={styles.root}>\n <div className={getHeaderClassName(task)}>\n <button\n className={styles.expandButton}\n onClick={() => setIsOpen(!showContent)}\n aria-label={showContent ? `Minimize ${name}` : `Expand ${name}`}\n >\n <img\n className={cx(styles.expandIcon, !showContent && styles.collapsed)}\n src={ChevronDownIcon}\n alt=\"Chevron down icon\"\n />\n </button>\n {errors?.length === 0 && warnings?.length === 0 && (\n <img className={styles.errorIcon} src={SuccessIcon} alt=\"Success icon\" />\n )}\n {errors?.length > 0 && <img className={styles.errorIcon} src={ErrorIcon} alt=\"Error icon\" />}\n <div className={styles.title}>{name}</div>\n <div className={styles.farArea}>{getCompletion(task)}</div>\n </div>\n {showContent && (\n <>\n <div className={styles.commands}>\n <Button onClick={restartTask}>Restart task</Button>\n </div>\n <div className={styles.content}>\n <div className={styles.title}>Details</div>\n <div className={styles.nameValueArea}>\n <div className={styles.name}>Input path</div>\n <div className={styles.value}>\n <button className={styles.linkButton} onClick={() => open(task.inputPath)}>\n {task.inputPath}\n </button>\n\n <button className={styles.linkButton} onClick={openPackage}>\n (Package.json)\n </button>\n </div>\n </div>\n <div className={styles.nameValueArea}>\n <div className={styles.name}>Output path</div>\n <button className={styles.linkButton} onClick={() => open(task.outputPath)}>\n {task.outputPath}\n </button>\n </div>\n {errors?.length > 0 && (\n <>\n <div className={styles.title}>Errors</div>\n <div className={styles.resultItems}>\n {errors.map((error, index) => (\n <TaskResultItem key={index} item={error} projectPath={task.inputPath} index={index + 1} />\n ))}\n </div>\n </>\n )}\n {warnings?.length > 0 && (\n <>\n <div className={styles.title}>Warnings</div>\n <div className={styles.resultItems}>\n {warnings.map((warning, index) => (\n <TaskResultItem key={index} item={warning} projectPath={task.inputPath} index={index + 1} />\n ))}\n </div>\n </>\n )}\n </div>\n </>\n )}\n </div>\n );\n}\n\nfunction getHeaderClassName(task: TaskDescriptionType) {\n return cx(styles.header, {\n [styles.success]: task.errors?.length === 0 && task.warnings?.length === 0,\n [styles.warning]: task.errors?.length === 0 && task.warnings?.length > 0,\n [styles.error]: task.errors?.length > 0,\n });\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ms-cloudpack/overlay",
3
- "version": "0.16.100",
3
+ "version": "0.16.101",
4
4
  "description": "The Cloudpack overlay ux.",
5
5
  "license": "MIT",
6
6
  "types": "./lib/index.d.ts",
@@ -28,7 +28,7 @@
28
28
  "lint": "cloudpack-scripts lint"
29
29
  },
30
30
  "dependencies": {
31
- "@ms-cloudpack/api-server": "^0.36.0",
31
+ "@ms-cloudpack/api-server": "^0.37.0",
32
32
  "@ms-cloudpack/data-bus": "^0.4.2",
33
33
  "@ms-cloudpack/path-string-parsing": "^1.2.1",
34
34
  "classnames": "^2.0.0",
@@ -37,7 +37,7 @@
37
37
  "zod": "^3.21.4"
38
38
  },
39
39
  "devDependencies": {
40
- "@ms-cloudpack/common-types": "^0.2.1",
40
+ "@ms-cloudpack/common-types": "^0.2.2",
41
41
  "@ms-cloudpack/eslint-plugin-internal": "^0.0.1",
42
42
  "@ms-cloudpack/scripts": "^0.0.1",
43
43
  "@types/react": "^17.0.58",