@ms-cloudpack/overlay 0.15.2 → 0.16.0
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.
- package/dist/browser-esm/chunks/js/chunk-PDWQRLCD.js +30 -0
- package/dist/browser-esm/chunks/js/chunk-PDWQRLCD.js.map +7 -0
- package/dist/browser-esm/lib/constants.js +3 -3
- package/dist/browser-esm/lib/index.js +8 -6
- package/dist/browser-esm/lib/index.js.map +2 -2
- package/dist/browser-esm/ori-output.json +41 -26
- package/lib/components/Dialog/Dialog.d.ts +2 -1
- package/lib/components/Dialog/Dialog.d.ts.map +1 -1
- package/lib/components/Dialog/Dialog.js +2 -2
- package/lib/components/Dialog/Dialog.js.map +1 -1
- package/lib/components/ErrorDialog/ErrorDialog.d.ts.map +1 -1
- package/lib/components/ErrorDialog/ErrorDialog.js +2 -1
- package/lib/components/ErrorDialog/ErrorDialog.js.map +1 -1
- package/lib/components/StatusBadge/StatusBadge.d.ts.map +1 -1
- package/lib/components/StatusBadge/StatusBadge.js +2 -1
- package/lib/components/StatusBadge/StatusBadge.js.map +1 -1
- package/lib/components/StatusDialog/StatusDialog.d.ts.map +1 -1
- package/lib/components/StatusDialog/StatusDialog.js +2 -1
- package/lib/components/StatusDialog/StatusDialog.js.map +1 -1
- package/lib/constants.d.ts +18 -4
- package/lib/constants.d.ts.map +1 -1
- package/lib/constants.js +18 -4
- package/lib/constants.js.map +1 -1
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/browser-esm/chunks/js/chunk-IJJX7VIJ.js +0 -13
- package/dist/browser-esm/chunks/js/chunk-IJJX7VIJ.js.map +0 -7
- /package/dist/ori/logs/{2V8rpsWm11KZ1akPZAxa4iK4RVw-logger.log → 2VMYIGkqwKBA8vfcqo9Jq49UyKn-logger.log} +0 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// packages/overlay/src/constants.ts
|
|
2
|
+
var elementIds = {
|
|
3
|
+
/**
|
|
4
|
+
* ID for the root element of the overlay.
|
|
5
|
+
*/
|
|
6
|
+
root: "cloudpack-overlay-root",
|
|
7
|
+
/**
|
|
8
|
+
* ID for the root element of the error dialog.
|
|
9
|
+
*/
|
|
10
|
+
errorDialogRoot: "cloudpack-overlay-error-dialog",
|
|
11
|
+
/**
|
|
12
|
+
* ID for the root element of the status dialog.
|
|
13
|
+
*/
|
|
14
|
+
statusDialogRoot: "cloudpack-overlay-status-dialog",
|
|
15
|
+
/**
|
|
16
|
+
* ID for the root element of the status badge.
|
|
17
|
+
*/
|
|
18
|
+
statusBadgeRoot: "cloudpack-overlay-status-badge"
|
|
19
|
+
};
|
|
20
|
+
var cookieNames = {
|
|
21
|
+
sessionId: "cloudpack-session-id",
|
|
22
|
+
sessionSequence: "cloudpack-session-sequence",
|
|
23
|
+
apiUrl: "cloudpack-api-url"
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export {
|
|
27
|
+
elementIds,
|
|
28
|
+
cookieNames
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=chunk-PDWQRLCD.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/constants.ts"],
|
|
4
|
+
"sourcesContent": ["// This file serves as a separate entry point which can be imported without rendering the overlay\n// as a side effect.\n\nexport const elementIds = {\n /**\n * ID for the root element of the overlay.\n */\n root: 'cloudpack-overlay-root',\n /**\n * ID for the root element of the error dialog.\n */\n errorDialogRoot: 'cloudpack-overlay-error-dialog',\n /**\n * ID for the root element of the status dialog.\n */\n statusDialogRoot: 'cloudpack-overlay-status-dialog',\n /**\n * ID for the root element of the status badge.\n */\n statusBadgeRoot: 'cloudpack-overlay-status-badge',\n} as const;\n\n/**\n * Cloudpack cookies accessed by the overlay.\n */\nexport const cookieNames = {\n sessionId: 'cloudpack-session-id',\n sessionSequence: 'cloudpack-session-sequence',\n apiUrl: 'cloudpack-api-url',\n};\n"],
|
|
5
|
+
"mappings": ";AAGO,IAAM,aAAa;AAAA;AAAA;AAAA;AAAA,EAIxB,MAAM;AAAA;AAAA;AAAA;AAAA,EAIN,iBAAiB;AAAA;AAAA;AAAA;AAAA,EAIjB,kBAAkB;AAAA;AAAA;AAAA;AAAA,EAIlB,iBAAiB;AACnB;AAKO,IAAM,cAAc;AAAA,EACzB,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB,QAAQ;AACV;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
cookieNames,
|
|
3
|
-
|
|
4
|
-
} from "../chunks/js/chunk-
|
|
3
|
+
elementIds
|
|
4
|
+
} from "../chunks/js/chunk-PDWQRLCD.js";
|
|
5
5
|
|
|
6
6
|
// packages/overlay/src/index.tsx
|
|
7
7
|
import React15 from "react";
|
|
@@ -405,7 +405,7 @@ function StatusBadge({ inline: inline2, onExpand, pageLoadTime }) {
|
|
|
405
405
|
return null;
|
|
406
406
|
}
|
|
407
407
|
const metric2 = pageLoadTime ? /* @__PURE__ */ React2.createElement("span", { className: StatusBadge_module_default.metric, title: "Page Load Time" }, "in ", pageLoadTime.toFixed(2), " ms") : null;
|
|
408
|
-
const badge2 = /* @__PURE__ */ React2.createElement("div", { ref: rootElementRef, className: getStatusClassName(status, !!inline2) }, !inline2 && /* @__PURE__ */ React2.createElement("div", { ref: dragElementRef, className: StatusBadge_module_default.gripArea }, /* @__PURE__ */ React2.createElement("div", { className: StatusBadge_module_default.grip }), /* @__PURE__ */ React2.createElement("div", { className: StatusBadge_module_default.grip })), /* @__PURE__ */ React2.createElement("button", { className: StatusBadge_module_default.button, onClick: onExpand, "aria-label": "Expand overlay" }, /* @__PURE__ */ React2.createElement("div", { className: StatusBadge_module_default.value }, getStatusString(status))), /* @__PURE__ */ React2.createElement("div", null, getStatsString(status), metric2));
|
|
408
|
+
const badge2 = /* @__PURE__ */ React2.createElement("div", { id: elementIds.statusBadgeRoot, ref: rootElementRef, className: getStatusClassName(status, !!inline2) }, !inline2 && /* @__PURE__ */ React2.createElement("div", { ref: dragElementRef, className: StatusBadge_module_default.gripArea }, /* @__PURE__ */ React2.createElement("div", { className: StatusBadge_module_default.grip }), /* @__PURE__ */ React2.createElement("div", { className: StatusBadge_module_default.grip })), /* @__PURE__ */ React2.createElement("button", { className: StatusBadge_module_default.button, onClick: onExpand, "aria-label": "Expand overlay" }, /* @__PURE__ */ React2.createElement("div", { className: StatusBadge_module_default.value }, getStatusString(status))), /* @__PURE__ */ React2.createElement("div", null, getStatsString(status), metric2));
|
|
409
409
|
return inline2 ? badge2 : /* @__PURE__ */ React2.createElement("div", { className: StatusBadge_module_default.fixedOverlay }, /* @__PURE__ */ React2.createElement("div", { className: StatusBadge_module_default.contentSurface }, badge2));
|
|
410
410
|
}
|
|
411
411
|
function getStatusString(status) {
|
|
@@ -1022,7 +1022,7 @@ var Dialog_module_default = { closeButton, commands: commands2, dialog, overlay,
|
|
|
1022
1022
|
var dismiss_16_filled_inline_default = 'data:image/svg+xml,<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">%0A<path d="M2.39705 2.55379L2.46967 2.46967C2.73594 2.2034 3.1526 2.1792 3.44621 2.39705L3.53033 2.46967L8 6.939L12.4697 2.46967C12.7626 2.17678 13.2374 2.17678 13.5303 2.46967C13.8232 2.76256 13.8232 3.23744 13.5303 3.53033L9.061 8L13.5303 12.4697C13.7966 12.7359 13.8208 13.1526 13.6029 13.4462L13.5303 13.5303C13.2641 13.7966 12.8474 13.8208 12.5538 13.6029L12.4697 13.5303L8 9.061L3.53033 13.5303C3.23744 13.8232 2.76256 13.8232 2.46967 13.5303C2.17678 13.2374 2.17678 12.7626 2.46967 12.4697L6.939 8L2.46967 3.53033C2.2034 3.26406 2.1792 2.8474 2.39705 2.55379L2.46967 2.46967L2.39705 2.55379Z" fill="%23212121"/>%0A</svg>%0A';
|
|
1023
1023
|
|
|
1024
1024
|
// packages/overlay/src/components/Dialog/Dialog.tsx
|
|
1025
|
-
function Dialog({ title: title3, style, draggable, onClose, commands: commands3, children }) {
|
|
1025
|
+
function Dialog({ title: title3, id, style, draggable, onClose, commands: commands3, children }) {
|
|
1026
1026
|
const draggableRef = useRef2(null);
|
|
1027
1027
|
const draggableTargetRef = useRef2(null);
|
|
1028
1028
|
const colorAccent = style === "error" ? "rgb(164, 38, 44)" : void 0;
|
|
@@ -1032,7 +1032,7 @@ function Dialog({ title: title3, style, draggable, onClose, commands: commands3,
|
|
|
1032
1032
|
containerElementRef: draggableRef,
|
|
1033
1033
|
dragElementRef: draggableTargetRef
|
|
1034
1034
|
});
|
|
1035
|
-
return /* @__PURE__ */ React7.createElement("div", { className: Dialog_module_default.overlay }, /* @__PURE__ */ React7.createElement("div", { ref: draggableRef, className: Dialog_module_default.dialog, style: { borderTopColor: colorAccent } }, /* @__PURE__ */ React7.createElement("div", { className: Dialog_module_default.titleArea }, /* @__PURE__ */ React7.createElement(
|
|
1035
|
+
return /* @__PURE__ */ React7.createElement("div", { id, className: Dialog_module_default.overlay }, /* @__PURE__ */ React7.createElement("div", { ref: draggableRef, className: Dialog_module_default.dialog, style: { borderTopColor: colorAccent } }, /* @__PURE__ */ React7.createElement("div", { className: Dialog_module_default.titleArea }, /* @__PURE__ */ React7.createElement(
|
|
1036
1036
|
"div",
|
|
1037
1037
|
{
|
|
1038
1038
|
ref: draggableTargetRef,
|
|
@@ -1094,6 +1094,7 @@ function StatusDialog({ onClose }) {
|
|
|
1094
1094
|
Dialog,
|
|
1095
1095
|
{
|
|
1096
1096
|
title: "Task results",
|
|
1097
|
+
id: elementIds.statusDialogRoot,
|
|
1097
1098
|
draggable: true,
|
|
1098
1099
|
onClose,
|
|
1099
1100
|
commands: [
|
|
@@ -1149,6 +1150,7 @@ function ErrorDialog({ unsupported }) {
|
|
|
1149
1150
|
Dialog,
|
|
1150
1151
|
{
|
|
1151
1152
|
title: "Found unsupported paths in your project",
|
|
1153
|
+
id: elementIds.errorDialogRoot,
|
|
1152
1154
|
style: "error",
|
|
1153
1155
|
commands: [
|
|
1154
1156
|
/* @__PURE__ */ React11.createElement(Button, { primary: true, onClick: reload, key: "1" }, "Restart all tasks")
|
|
@@ -1278,7 +1280,7 @@ function ThemeProvider({ children }) {
|
|
|
1278
1280
|
|
|
1279
1281
|
// packages/overlay/src/index.tsx
|
|
1280
1282
|
var rootDiv = document.createElement("div");
|
|
1281
|
-
rootDiv.id =
|
|
1283
|
+
rootDiv.id = elementIds.root;
|
|
1282
1284
|
ReactDOM.render(
|
|
1283
1285
|
/* @__PURE__ */ React15.createElement(ThemeProvider, null, /* @__PURE__ */ React15.createElement(CloudpackProvider, null, /* @__PURE__ */ React15.createElement(StatusOverlay, null))),
|
|
1284
1286
|
rootDiv
|
|
@@ -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 { overlayRootDivId } from './constants.js';\n\nconst rootDiv = document.createElement('div');\nrootDiv.id = overlayRootDivId;\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';\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, { useRef } 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';\n\nexport interface StatusBadgeProps {\n inline?: boolean;\n onExpand?: () => void;\n pageLoadTime?: number;\n}\n\nexport function StatusBadge({ inline, onExpand, pageLoadTime }: StatusBadgeProps) {\n const rootElementRef = useRef<HTMLDivElement>(null);\n const dragElementRef = useRef<HTMLDivElement>(null);\n const status = useStatus();\n\n const shouldRender = status.status !== 'unknown';\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 badge = (\n <div ref={rootElementRef} className={getStatusClassName(status, !!inline)}>\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 </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 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`;\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 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, contentSurface, error, fixedOverlay, grip, gripArea, inline, metric, success, value, warning}\n", "import { useEffect, useState } from 'react';\nimport { useCloudpack } from './CloudpackProvider.js';\nimport { taskStatsSource } from '@ms-cloudpack/api-server/client';\nimport type { TaskStats } from '@ms-cloudpack/api-server';\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';\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\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 return (\n <Dialog\n title=\"Task results\"\n draggable\n onClose={onClose}\n commands={[\n <Button primary onClick={restartAllTasks} key=\"1\">\n Restart all tasks\n </Button>,\n ]}\n >\n <Searchbox value={searchFilter} onChange={handleSearchChange} />\n <TaskList searchFilter={searchFilter} />\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 function TaskList({ searchFilter }: { searchFilter?: string }) {\n const details = useStatusDetails();\n const tasks = (details.tasks || []).sort(sortTasks);\n searchFilter = searchFilter?.toLowerCase();\n\n return (\n <div className={styles.root}>\n {tasks\n .filter(({ name }) => !searchFilter || name.toLowerCase().includes(searchFilter))\n .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';\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 React from 'react';\nimport { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';\nimport type { TaskResultItemType } from '../CloudpackProvider/useStatusDetails.js';\nimport styles from './TaskResultItem.module.css';\n\nexport interface TaskResultItemProps {\n item: TaskResultItemType;\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}>{item.text}</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/client';\n\nexport interface TaskResultItemType {\n text: string;\n pluginName: string;\n stack: string;\n location?: {\n file: string;\n line: number;\n column: number;\n };\n}\n\nexport interface TaskDescriptionType {\n id: string;\n name: string;\n inputPath: string;\n outputPath: string;\n status: 'pending' | 'complete';\n errors: TaskResultItemType[];\n warnings: TaskResultItemType[];\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 style?: 'default' | 'error';\n draggable?: boolean;\n onClose?: () => void;\n commands?: React.ReactNode[];\n children: React.ReactNode;\n}\n\nexport function Dialog({ title, 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 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';\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 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,cAAc;;;ACA9B,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;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,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,gBAAgB,OAAO,cAAc,MAAM,UAAU,QAAQ,QAAQ,SAAS,OAAO,QAAO;;;AFlBrI,SAAS,WAAW,UAAU;;;AGH9B,SAAS,aAAAC,YAAW,YAAAC,iBAAgB;AAEpC,SAAS,uBAAuB;AAKhC,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;;;AHVO,SAAS,YAAY,EAAE,QAAAC,SAAQ,UAAU,aAAa,GAAqB;AAChF,QAAM,iBAAiB,OAAuB,IAAI;AAClD,QAAM,iBAAiB,OAAuB,IAAI;AAClD,QAAM,SAAS,UAAU;AAEzB,QAAM,eAAe,OAAO,WAAW;AAEvC,eAAa;AAAA;AAAA;AAAA,IAGX,SAAS,gBAAgB,CAACA;AAAA,IAC1B,qBAAqB;AAAA,IACrB;AAAA,EACF,CAAC;AAED,MAAI,CAAC,cAAc;AACjB,WAAO;AAAA,EACT;AAEA,QAAMC,UAAS,eACb,gBAAAC,OAAA,cAAC,UAAK,WAAW,2BAAO,QAAQ,OAAM,oBAAiB,OACjD,aAAa,QAAQ,CAAC,GAAE,KAC9B,IACE;AAEJ,QAAMC,SACJ,gBAAAD,OAAA,cAAC,SAAI,KAAK,gBAAgB,WAAW,mBAAmB,QAAQ,CAAC,CAACF,OAAM,KACrE,CAACA,WACA,gBAAAE,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,GAEF,gBAAAA,OAAA,cAAC,YAAO,WAAW,2BAAO,QAAQ,SAAS,UAAU,cAAW,oBAC9D,gBAAAA,OAAA,cAAC,SAAI,WAAW,2BAAO,SAAQ,gBAAgB,MAAM,CAAE,CACzD,GACA,gBAAAA,OAAA,cAAC,aACE,eAAe,MAAM,GACrBD,OACH,CACF;AAGF,SAAOD,UACLG,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,GAAoBH,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,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;;;AIrGA,OAAOI,UAAS,mBAAmB;;;ACAnC,OAAOC,YAAW;;;ACAlB,OAAOC,YAAW;;;ACAlB,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;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,KAAK,UAAU,QAAQ;AACxC,QAAM,WAAW,CAAC,IAAI,KAAK,UAAU,MAAM,KAAK,UAAU,MAAM,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1F,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,UACT,YAAY,KAAK,QAAQ,KAAI,GAChC,CACF,GACA,gBAAAA,OAAA,cAAC,SAAI,WAAW,8BAAO,QAAO,KAAK,IAAK,GACxC,gBAAAA,OAAA,cAAC,SAAI,WAAW,8BAAO,QAAO,KAAK,UAAU,MAAM,MAAM,CAAC,CAAE,CAC9D,CACF;AAEJ;;;AEzCA,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,IAAM,YAAY;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,WAAW,UAAU,SAAAL,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;;;AJOA,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,MACd,MAAM;AAAA,MACN,QAAQ;AAAA,IACV,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;;;AMnIA,SAAS,aAAAG,YAAW,YAAAC,iBAAgB;AAEpC,SAAS,sBAAsB;AA4BxB,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;;;AClCA,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;;;ARJb,SAAS,SAAS,EAAE,aAAa,GAA8B;AACpE,QAAM,UAAU,iBAAiB;AACjC,QAAM,SAAS,QAAQ,SAAS,CAAC,GAAG,KAAK,SAAS;AAClD,iBAAe,cAAc,YAAY;AAEzC,SACE,gBAAAC,OAAA,cAAC,SAAI,WAAW,wBAAO,QACpB,MACE,OAAO,CAAC,EAAE,MAAAC,MAAK,MAAM,CAAC,gBAAgBA,MAAK,YAAY,EAAE,SAAS,YAAY,CAAC,EAC/E,IAAI,CAAC,SACJ,gBAAAD,OAAA,cAAC,cAAW,KAAK,KAAK,MAAM,MAAY,CACzC,CACL;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;;;ASxCA,SAAS,WAAWE,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;;;;;;ADAjE,SAAS,OAAO,EAAE,OAAAC,QAAO,OAAO,WAAW,SAAS,UAAAC,WAAU,SAAS,GAAgB;AAC5F,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,WAAW,sBAAO,WACrB,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;;;AEjDA,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;;;AZLO,SAAS,aAAa,EAAE,QAAQ,GAAsB;AAC3D,QAAM,YAAY,aAAa;AAC/B,QAAM,CAAC,cAAc,eAAe,IAAIE,OAAM,SAAS,EAAE;AAEzD,QAAM,qBAAqB,YAAY,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,SACE,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,WAAS;AAAA,MACT;AAAA,MACA,UAAU;AAAA,QACR,gBAAAA,OAAA,cAAC,UAAO,SAAO,MAAC,SAAS,iBAAiB,KAAI,OAAI,mBAElD;AAAA,MACF;AAAA;AAAA,IAEA,gBAAAA,OAAA,cAAC,aAAU,OAAO,cAAc,UAAU,oBAAoB;AAAA,IAC9D,gBAAAA,OAAA,cAAC,YAAS,cAA4B;AAAA,EACxC;AAEJ;;;AcvCA,SAAS,WAAWC,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,MACf,yCACA,kEACN,CACF,CACF,CACF,CAEJ;AAEJ;;;AD3DO,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,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;;;AEpCA,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;AAEb,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;",
|
|
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';\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, { useRef } 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 pageLoadTime?: number;\n}\n\nexport function StatusBadge({ inline, onExpand, pageLoadTime }: StatusBadgeProps) {\n const rootElementRef = useRef<HTMLDivElement>(null);\n const dragElementRef = useRef<HTMLDivElement>(null);\n const status = useStatus();\n\n const shouldRender = status.status !== 'unknown';\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 badge = (\n <div id={elementIds.statusBadgeRoot} ref={rootElementRef} className={getStatusClassName(status, !!inline)}>\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 </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 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`;\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 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, contentSurface, error, fixedOverlay, grip, gripArea, inline, metric, success, value, warning}\n", "import { useEffect, useState } from 'react';\nimport { useCloudpack } from './CloudpackProvider.js';\nimport { taskStatsSource } from '@ms-cloudpack/api-server/client';\nimport type { TaskStats } from '@ms-cloudpack/api-server';\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\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 return (\n <Dialog\n title=\"Task results\"\n id={elementIds.statusDialogRoot}\n draggable\n onClose={onClose}\n commands={[\n <Button primary onClick={restartAllTasks} key=\"1\">\n Restart all tasks\n </Button>,\n ]}\n >\n <Searchbox value={searchFilter} onChange={handleSearchChange} />\n <TaskList searchFilter={searchFilter} />\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 function TaskList({ searchFilter }: { searchFilter?: string }) {\n const details = useStatusDetails();\n const tasks = (details.tasks || []).sort(sortTasks);\n searchFilter = searchFilter?.toLowerCase();\n\n return (\n <div className={styles.root}>\n {tasks\n .filter(({ name }) => !searchFilter || name.toLowerCase().includes(searchFilter))\n .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';\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 React from 'react';\nimport { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';\nimport type { TaskResultItemType } from '../CloudpackProvider/useStatusDetails.js';\nimport styles from './TaskResultItem.module.css';\n\nexport interface TaskResultItemProps {\n item: TaskResultItemType;\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}>{item.text}</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/client';\n\nexport interface TaskResultItemType {\n text: string;\n pluginName: string;\n stack: string;\n location?: {\n file: string;\n line: number;\n column: number;\n };\n}\n\nexport interface TaskDescriptionType {\n id: string;\n name: string;\n inputPath: string;\n outputPath: string;\n status: 'pending' | 'complete';\n errors: TaskResultItemType[];\n warnings: TaskResultItemType[];\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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",
|
|
6
6
|
"names": ["React", "s", "name", "value", "error", "React", "useCallback", "useState", "useRef", "React", "useState", "useEffect", "useState", "useState", "useEffect", "inline", "metric", "React", "badge", "React", "React", "React", "React", "compiledModule", "s", "React", "compiledModule", "s", "content", "error", "root", "success", "value", "warning", "cx", "React", "compiledModule", "s", "React", "React", "name", "cx", "error", "warning", "useEffect", "useState", "useState", "useEffect", "compiledModule", "s", "root", "React", "name", "React", "useRef", "compiledModule", "s", "commands", "title", "titleArea", "title", "commands", "useRef", "React", "React", "compiledModule", "s", "value", "React", "React", "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,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "builder:notify",
|
|
3
|
-
"buildId": "
|
|
3
|
+
"buildId": "build_b4da5352-c935-4a69-9251-4112ffe9d867",
|
|
4
4
|
"buildStatus": "complete",
|
|
5
5
|
"internalError": null,
|
|
6
6
|
"warnings": [],
|
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
"/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/lib/constants.js",
|
|
11
11
|
"/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/lib/index.js.map",
|
|
12
12
|
"/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/lib/index.js",
|
|
13
|
-
"/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/chunks/js/chunk-
|
|
14
|
-
"/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/chunks/js/chunk-
|
|
13
|
+
"/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/chunks/js/chunk-PDWQRLCD.js.map",
|
|
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
19
|
"packages/overlay/src/constants.ts": {
|
|
20
|
-
"bytes":
|
|
20
|
+
"bytes": 803,
|
|
21
21
|
"imports": [],
|
|
22
22
|
"format": "esm"
|
|
23
23
|
},
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
"format": "esm"
|
|
102
102
|
},
|
|
103
103
|
"packages/overlay/src/components/StatusBadge/StatusBadge.tsx": {
|
|
104
|
-
"bytes":
|
|
104
|
+
"bytes": 3185,
|
|
105
105
|
"imports": [
|
|
106
106
|
{
|
|
107
107
|
"path": "react",
|
|
@@ -127,6 +127,11 @@
|
|
|
127
127
|
"path": "packages/overlay/src/components/CloudpackProvider/useStatus.ts",
|
|
128
128
|
"kind": "import-statement",
|
|
129
129
|
"original": "../CloudpackProvider/useStatus.js"
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"path": "packages/overlay/src/constants.ts",
|
|
133
|
+
"kind": "import-statement",
|
|
134
|
+
"original": "../../constants.js"
|
|
130
135
|
}
|
|
131
136
|
],
|
|
132
137
|
"format": "esm"
|
|
@@ -308,7 +313,7 @@
|
|
|
308
313
|
"imports": []
|
|
309
314
|
},
|
|
310
315
|
"packages/overlay/src/components/Dialog/Dialog.tsx": {
|
|
311
|
-
"bytes":
|
|
316
|
+
"bytes": 1736,
|
|
312
317
|
"imports": [
|
|
313
318
|
{
|
|
314
319
|
"path": "react",
|
|
@@ -355,7 +360,7 @@
|
|
|
355
360
|
"format": "esm"
|
|
356
361
|
},
|
|
357
362
|
"packages/overlay/src/components/StatusDialog/StatusDialog.tsx": {
|
|
358
|
-
"bytes":
|
|
363
|
+
"bytes": 1222,
|
|
359
364
|
"imports": [
|
|
360
365
|
{
|
|
361
366
|
"path": "react",
|
|
@@ -386,6 +391,11 @@
|
|
|
386
391
|
"path": "packages/overlay/src/components/StatusDialog/Searchbox.tsx",
|
|
387
392
|
"kind": "import-statement",
|
|
388
393
|
"original": "./Searchbox.js"
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
"path": "packages/overlay/src/constants.ts",
|
|
397
|
+
"kind": "import-statement",
|
|
398
|
+
"original": "../../constants.js"
|
|
389
399
|
}
|
|
390
400
|
],
|
|
391
401
|
"format": "esm"
|
|
@@ -432,7 +442,7 @@
|
|
|
432
442
|
"format": "esm"
|
|
433
443
|
},
|
|
434
444
|
"packages/overlay/src/components/ErrorDialog/ErrorDialog.tsx": {
|
|
435
|
-
"bytes":
|
|
445
|
+
"bytes": 1108,
|
|
436
446
|
"imports": [
|
|
437
447
|
{
|
|
438
448
|
"path": "react",
|
|
@@ -463,6 +473,11 @@
|
|
|
463
473
|
"path": "packages/overlay/src/components/Dialog/Dialog.tsx",
|
|
464
474
|
"kind": "import-statement",
|
|
465
475
|
"original": "../Dialog/Dialog.js"
|
|
476
|
+
},
|
|
477
|
+
{
|
|
478
|
+
"path": "packages/overlay/src/constants.ts",
|
|
479
|
+
"kind": "import-statement",
|
|
480
|
+
"original": "../../constants.js"
|
|
466
481
|
}
|
|
467
482
|
],
|
|
468
483
|
"format": "esm"
|
|
@@ -567,7 +582,7 @@
|
|
|
567
582
|
"format": "esm"
|
|
568
583
|
},
|
|
569
584
|
"packages/overlay/src/index.tsx": {
|
|
570
|
-
"bytes":
|
|
585
|
+
"bytes": 607,
|
|
571
586
|
"imports": [
|
|
572
587
|
{
|
|
573
588
|
"path": "react",
|
|
@@ -613,28 +628,28 @@
|
|
|
613
628
|
"packages/overlay/dist/browser-esm/lib/constants.js": {
|
|
614
629
|
"imports": [
|
|
615
630
|
{
|
|
616
|
-
"path": "packages/overlay/dist/browser-esm/chunks/js/chunk-
|
|
631
|
+
"path": "packages/overlay/dist/browser-esm/chunks/js/chunk-PDWQRLCD.js",
|
|
617
632
|
"kind": "import-statement"
|
|
618
633
|
}
|
|
619
634
|
],
|
|
620
635
|
"exports": [
|
|
621
636
|
"cookieNames",
|
|
622
|
-
"
|
|
637
|
+
"elementIds"
|
|
623
638
|
],
|
|
624
639
|
"entryPoint": "packages/overlay/src/constants.ts",
|
|
625
640
|
"inputs": {},
|
|
626
|
-
"bytes":
|
|
641
|
+
"bytes": 156
|
|
627
642
|
},
|
|
628
643
|
"packages/overlay/dist/browser-esm/lib/index.js.map": {
|
|
629
644
|
"imports": [],
|
|
630
645
|
"exports": [],
|
|
631
646
|
"inputs": {},
|
|
632
|
-
"bytes":
|
|
647
|
+
"bytes": 80106
|
|
633
648
|
},
|
|
634
649
|
"packages/overlay/dist/browser-esm/lib/index.js": {
|
|
635
650
|
"imports": [
|
|
636
651
|
{
|
|
637
|
-
"path": "packages/overlay/dist/browser-esm/chunks/js/chunk-
|
|
652
|
+
"path": "packages/overlay/dist/browser-esm/chunks/js/chunk-PDWQRLCD.js",
|
|
638
653
|
"kind": "import-statement"
|
|
639
654
|
},
|
|
640
655
|
{
|
|
@@ -777,7 +792,7 @@
|
|
|
777
792
|
"entryPoint": "packages/overlay/src/index.tsx",
|
|
778
793
|
"inputs": {
|
|
779
794
|
"packages/overlay/src/index.tsx": {
|
|
780
|
-
"bytesInOutput":
|
|
795
|
+
"bytesInOutput": 390
|
|
781
796
|
},
|
|
782
797
|
"packages/overlay/src/components/CloudpackProvider/CloudpackProvider.tsx": {
|
|
783
798
|
"bytesInOutput": 366
|
|
@@ -792,7 +807,7 @@
|
|
|
792
807
|
"bytesInOutput": 1087
|
|
793
808
|
},
|
|
794
809
|
"packages/overlay/src/components/StatusBadge/StatusBadge.tsx": {
|
|
795
|
-
"bytesInOutput":
|
|
810
|
+
"bytesInOutput": 3205
|
|
796
811
|
},
|
|
797
812
|
"packages/overlay/src/hooks/useDraggable.ts": {
|
|
798
813
|
"bytesInOutput": 1803
|
|
@@ -804,7 +819,7 @@
|
|
|
804
819
|
"bytesInOutput": 517
|
|
805
820
|
},
|
|
806
821
|
"packages/overlay/src/components/StatusDialog/StatusDialog.tsx": {
|
|
807
|
-
"bytesInOutput":
|
|
822
|
+
"bytesInOutput": 903
|
|
808
823
|
},
|
|
809
824
|
"packages/overlay/src/components/StatusDialog/TaskList.tsx": {
|
|
810
825
|
"bytesInOutput": 882
|
|
@@ -843,7 +858,7 @@
|
|
|
843
858
|
"bytesInOutput": 548
|
|
844
859
|
},
|
|
845
860
|
"packages/overlay/src/components/Dialog/Dialog.tsx": {
|
|
846
|
-
"bytesInOutput":
|
|
861
|
+
"bytesInOutput": 1447
|
|
847
862
|
},
|
|
848
863
|
"packages/overlay/src/components/Dialog/Dialog.module.css": {
|
|
849
864
|
"bytesInOutput": 2275
|
|
@@ -858,7 +873,7 @@
|
|
|
858
873
|
"bytesInOutput": 786
|
|
859
874
|
},
|
|
860
875
|
"packages/overlay/src/components/ErrorDialog/ErrorDialog.tsx": {
|
|
861
|
-
"bytesInOutput":
|
|
876
|
+
"bytesInOutput": 729
|
|
862
877
|
},
|
|
863
878
|
"packages/overlay/src/components/ErrorDialog/PathError.tsx": {
|
|
864
879
|
"bytesInOutput": 3131
|
|
@@ -876,26 +891,26 @@
|
|
|
876
891
|
"bytesInOutput": 614
|
|
877
892
|
}
|
|
878
893
|
},
|
|
879
|
-
"bytes":
|
|
894
|
+
"bytes": 50304
|
|
880
895
|
},
|
|
881
|
-
"packages/overlay/dist/browser-esm/chunks/js/chunk-
|
|
896
|
+
"packages/overlay/dist/browser-esm/chunks/js/chunk-PDWQRLCD.js.map": {
|
|
882
897
|
"imports": [],
|
|
883
898
|
"exports": [],
|
|
884
899
|
"inputs": {},
|
|
885
|
-
"bytes":
|
|
900
|
+
"bytes": 1178
|
|
886
901
|
},
|
|
887
|
-
"packages/overlay/dist/browser-esm/chunks/js/chunk-
|
|
902
|
+
"packages/overlay/dist/browser-esm/chunks/js/chunk-PDWQRLCD.js": {
|
|
888
903
|
"imports": [],
|
|
889
904
|
"exports": [
|
|
890
905
|
"cookieNames",
|
|
891
|
-
"
|
|
906
|
+
"elementIds"
|
|
892
907
|
],
|
|
893
908
|
"inputs": {
|
|
894
909
|
"packages/overlay/src/constants.ts": {
|
|
895
|
-
"bytesInOutput":
|
|
910
|
+
"bytesInOutput": 599
|
|
896
911
|
}
|
|
897
912
|
},
|
|
898
|
-
"bytes":
|
|
913
|
+
"bytes": 720
|
|
899
914
|
}
|
|
900
915
|
}
|
|
901
916
|
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
2
|
export interface DialogProps {
|
|
3
3
|
title: string;
|
|
4
|
+
id: string;
|
|
4
5
|
style?: 'default' | 'error';
|
|
5
6
|
draggable?: boolean;
|
|
6
7
|
onClose?: () => void;
|
|
7
8
|
commands?: React.ReactNode[];
|
|
8
9
|
children: React.ReactNode;
|
|
9
10
|
}
|
|
10
|
-
export declare function Dialog({ title, style, draggable, onClose, commands, children }: DialogProps): React.JSX.Element;
|
|
11
|
+
export declare function Dialog({ title, id, style, draggable, onClose, commands, children }: DialogProps): React.JSX.Element;
|
|
11
12
|
//# sourceMappingURL=Dialog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../src/components/Dialog/Dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAU,MAAM,OAAO,CAAC;AAKjD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../src/components/Dialog/Dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAU,MAAM,OAAO,CAAC;AAKjD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,WAAW,qBAmC/F"}
|
|
@@ -2,7 +2,7 @@ import { default as React, useRef } from 'react';
|
|
|
2
2
|
import styles from './Dialog.module.css';
|
|
3
3
|
import { useDraggable } from '../../hooks/useDraggable.js';
|
|
4
4
|
import CloseIcon from '../../images/dismiss-16-filled.inline.svg';
|
|
5
|
-
export function Dialog({ title, style, draggable, onClose, commands, children }) {
|
|
5
|
+
export function Dialog({ title, id, style, draggable, onClose, commands, children }) {
|
|
6
6
|
const draggableRef = useRef(null);
|
|
7
7
|
const draggableTargetRef = useRef(null);
|
|
8
8
|
const colorAccent = style === 'error' ? 'rgb(164, 38, 44)' : undefined;
|
|
@@ -12,7 +12,7 @@ export function Dialog({ title, style, draggable, onClose, commands, children })
|
|
|
12
12
|
containerElementRef: draggableRef,
|
|
13
13
|
dragElementRef: draggableTargetRef,
|
|
14
14
|
});
|
|
15
|
-
return (React.createElement("div", { className: styles.overlay },
|
|
15
|
+
return (React.createElement("div", { id: id, className: styles.overlay },
|
|
16
16
|
React.createElement("div", { ref: draggableRef, className: styles.dialog, style: { borderTopColor: colorAccent } },
|
|
17
17
|
React.createElement("div", { className: styles.titleArea },
|
|
18
18
|
React.createElement("div", { ref: draggableTargetRef, className: styles.title, style: { color: colorAccent, cursor: cursorDraggable } }, title),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../../../src/components/Dialog/Dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,SAAS,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../../../src/components/Dialog/Dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,SAAS,MAAM,2CAA2C,CAAC;AAYlE,MAAM,UAAU,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAe;IAC9F,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAClD,MAAM,kBAAkB,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,MAAM,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAEvD,YAAY,CAAC;QACX,OAAO,EAAE,CAAC,CAAC,SAAS;QACpB,mBAAmB,EAAE,YAAY;QACjC,cAAc,EAAE,kBAAkB;KACnC,CAAC,CAAC;IAEH,OAAO,CACL,6BAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO;QACpC,6BAAK,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE;YACtF,6BAAK,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC9B,6BACE,GAAG,EAAE,kBAAkB,EACvB,SAAS,EAAE,MAAM,CAAC,KAAK,EACvB,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,IAErD,KAAK,CACF;gBACL,OAAO,IAAI,CACV,gCAAQ,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,gBAAa,kBAAkB;oBAEpF,6BAAK,GAAG,EAAE,SAAS,EAAE,GAAG,EAAC,EAAE,GAAG,CACvB,CACV,CACG;YACL,QAAQ,IAAI,6BAAK,SAAS,EAAE,MAAM,CAAC,QAAQ,OAAM,QAAQ,CAAO;YAChE,QAAQ,CACL,CACF,CACP,CAAC;AACJ,CAAC","sourcesContent":["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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorDialog.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorDialog/ErrorDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,OAAO,CAAC;AAKzC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"ErrorDialog.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorDialog/ErrorDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,OAAO,CAAC;AAKzC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAIjE,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,qBAAqB,EAAE,CAAC;CACtC;AAED,wBAAgB,WAAW,CAAC,EAAE,WAAW,EAAE,EAAE,gBAAgB,qBAyB5D"}
|
|
@@ -4,12 +4,13 @@ import { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';
|
|
|
4
4
|
import { PathError } from './PathError.js';
|
|
5
5
|
import styles from '../StatusDialog/TaskList.module.css';
|
|
6
6
|
import { Dialog } from '../Dialog/Dialog.js';
|
|
7
|
+
import { elementIds } from '../../constants.js';
|
|
7
8
|
export function ErrorDialog({ unsupported }) {
|
|
8
9
|
const cloudpack = useCloudpack();
|
|
9
10
|
const reload = () => {
|
|
10
11
|
cloudpack.restartAllTasks();
|
|
11
12
|
};
|
|
12
|
-
return (React.createElement(Dialog, { title: "Found unsupported paths in your project", style: "error", commands: [
|
|
13
|
+
return (React.createElement(Dialog, { title: "Found unsupported paths in your project", id: elementIds.errorDialogRoot, style: "error", commands: [
|
|
13
14
|
React.createElement(Button, { primary: true, onClick: reload, key: "1" }, "Restart all tasks"),
|
|
14
15
|
] },
|
|
15
16
|
React.createElement("div", { className: styles.root }, unsupported.map((data, index) => (React.createElement(PathError, { ...data, key: index }))))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorDialog.js","sourceRoot":"","sources":["../../../src/components/ErrorDialog/ErrorDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,MAAM,MAAM,qCAAqC,CAAC;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"ErrorDialog.js","sourceRoot":"","sources":["../../../src/components/ErrorDialog/ErrorDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,MAAM,MAAM,qCAAqC,CAAC;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMhD,MAAM,UAAU,WAAW,CAAC,EAAE,WAAW,EAAoB;IAC3D,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IAEjC,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,SAAS,CAAC,eAAe,EAAE,CAAC;IAC9B,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,MAAM,IACL,KAAK,EAAC,yCAAyC,EAC/C,EAAE,EAAE,UAAU,CAAC,eAAe,EAC9B,KAAK,EAAC,OAAO,EACb,QAAQ,EAAE;YACR,oBAAC,MAAM,IAAC,OAAO,QAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAC,GAAG,wBAE/B;SACV;QAED,6BAAK,SAAS,EAAE,MAAM,CAAC,IAAI,IACxB,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAChC,oBAAC,SAAS,OAAK,IAAI,EAAE,GAAG,EAAE,KAAK,GAAI,CACpC,CAAC,CACE,CACC,CACV,CAAC;AACJ,CAAC","sourcesContent":["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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBadge.d.ts","sourceRoot":"","sources":["../../../src/components/StatusBadge/StatusBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"StatusBadge.d.ts","sourceRoot":"","sources":["../../../src/components/StatusBadge/StatusBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiB,MAAM,OAAO,CAAC;AAOtC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,gBAAgB,4BAkD/E"}
|
|
@@ -3,6 +3,7 @@ import { useDraggable } from '../../hooks/useDraggable.js';
|
|
|
3
3
|
import styles from './StatusBadge.module.css';
|
|
4
4
|
import { default as cx } from 'classnames';
|
|
5
5
|
import { useStatus } from '../CloudpackProvider/useStatus.js';
|
|
6
|
+
import { elementIds } from '../../constants.js';
|
|
6
7
|
export function StatusBadge({ inline, onExpand, pageLoadTime }) {
|
|
7
8
|
const rootElementRef = useRef(null);
|
|
8
9
|
const dragElementRef = useRef(null);
|
|
@@ -22,7 +23,7 @@ export function StatusBadge({ inline, onExpand, pageLoadTime }) {
|
|
|
22
23
|
"in ",
|
|
23
24
|
pageLoadTime.toFixed(2),
|
|
24
25
|
" ms")) : null;
|
|
25
|
-
const badge = (React.createElement("div", { ref: rootElementRef, className: getStatusClassName(status, !!inline) },
|
|
26
|
+
const badge = (React.createElement("div", { id: elementIds.statusBadgeRoot, ref: rootElementRef, className: getStatusClassName(status, !!inline) },
|
|
26
27
|
!inline && (React.createElement("div", { ref: dragElementRef, className: styles.gripArea },
|
|
27
28
|
React.createElement("div", { className: styles.grip }),
|
|
28
29
|
React.createElement("div", { className: styles.grip }))),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBadge.js","sourceRoot":"","sources":["../../../src/components/StatusBadge/StatusBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAwB,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"StatusBadge.js","sourceRoot":"","sources":["../../../src/components/StatusBadge/StatusBadge.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useRef } 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 pageLoadTime?: number;\n}\n\nexport function StatusBadge({ inline, onExpand, pageLoadTime }: StatusBadgeProps) {\n const rootElementRef = useRef<HTMLDivElement>(null);\n const dragElementRef = useRef<HTMLDivElement>(null);\n const status = useStatus();\n\n const shouldRender = status.status !== 'unknown';\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 badge = (\n <div id={elementIds.statusBadgeRoot} ref={rootElementRef} className={getStatusClassName(status, !!inline)}>\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 </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 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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusDialog.d.ts","sourceRoot":"","sources":["../../../src/components/StatusDialog/StatusDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"StatusDialog.d.ts","sourceRoot":"","sources":["../../../src/components/StatusDialog/StatusDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAQ3C,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE,iBAAiB,qBA6B1D"}
|
|
@@ -4,6 +4,7 @@ import { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';
|
|
|
4
4
|
import { Button } from '../Button/Button.js';
|
|
5
5
|
import { Dialog } from '../Dialog/Dialog.js';
|
|
6
6
|
import { Searchbox } from './Searchbox.js';
|
|
7
|
+
import { elementIds } from '../../constants.js';
|
|
7
8
|
export function StatusDialog({ onClose }) {
|
|
8
9
|
const cloudpack = useCloudpack();
|
|
9
10
|
const [searchFilter, setSearchFilter] = React.useState('');
|
|
@@ -14,7 +15,7 @@ export function StatusDialog({ onClose }) {
|
|
|
14
15
|
const restartAllTasks = () => {
|
|
15
16
|
cloudpack.restartAllTasks();
|
|
16
17
|
};
|
|
17
|
-
return (React.createElement(Dialog, { title: "Task results", draggable: true, onClose: onClose, commands: [
|
|
18
|
+
return (React.createElement(Dialog, { title: "Task results", id: elementIds.statusDialogRoot, draggable: true, onClose: onClose, commands: [
|
|
18
19
|
React.createElement(Button, { primary: true, onClick: restartAllTasks, key: "1" }, "Restart all tasks"),
|
|
19
20
|
] },
|
|
20
21
|
React.createElement(Searchbox, { value: searchFilter, onChange: handleSearchChange }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusDialog.js","sourceRoot":"","sources":["../../../src/components/StatusDialog/StatusDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"StatusDialog.js","sourceRoot":"","sources":["../../../src/components/StatusDialog/StatusDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMhD,MAAM,UAAU,YAAY,CAAC,EAAE,OAAO,EAAqB;IACzD,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAE3D,MAAM,kBAAkB,GAAG,WAAW,CAAC,CAAC,KAA0C,EAAE,EAAE;QACpF,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,SAAS,CAAC,eAAe,EAAE,CAAC;IAC9B,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,MAAM,IACL,KAAK,EAAC,cAAc,EACpB,EAAE,EAAE,UAAU,CAAC,gBAAgB,EAC/B,SAAS,QACT,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE;YACR,oBAAC,MAAM,IAAC,OAAO,QAAC,OAAO,EAAE,eAAe,EAAE,GAAG,EAAC,GAAG,wBAExC;SACV;QAED,oBAAC,SAAS,IAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,GAAI;QAChE,oBAAC,QAAQ,IAAC,YAAY,EAAE,YAAY,GAAI,CACjC,CACV,CAAC;AACJ,CAAC","sourcesContent":["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\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 return (\n <Dialog\n title=\"Task results\"\n id={elementIds.statusDialogRoot}\n draggable\n onClose={onClose}\n commands={[\n <Button primary onClick={restartAllTasks} key=\"1\">\n Restart all tasks\n </Button>,\n ]}\n >\n <Searchbox value={searchFilter} onChange={handleSearchChange} />\n <TaskList searchFilter={searchFilter} />\n </Dialog>\n );\n}\n"]}
|
package/lib/constants.d.ts
CHANGED
|
@@ -1,7 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
export declare const elementIds: {
|
|
2
|
+
/**
|
|
3
|
+
* ID for the root element of the overlay.
|
|
4
|
+
*/
|
|
5
|
+
readonly root: "cloudpack-overlay-root";
|
|
6
|
+
/**
|
|
7
|
+
* ID for the root element of the error dialog.
|
|
8
|
+
*/
|
|
9
|
+
readonly errorDialogRoot: "cloudpack-overlay-error-dialog";
|
|
10
|
+
/**
|
|
11
|
+
* ID for the root element of the status dialog.
|
|
12
|
+
*/
|
|
13
|
+
readonly statusDialogRoot: "cloudpack-overlay-status-dialog";
|
|
14
|
+
/**
|
|
15
|
+
* ID for the root element of the status badge.
|
|
16
|
+
*/
|
|
17
|
+
readonly statusBadgeRoot: "cloudpack-overlay-status-badge";
|
|
18
|
+
};
|
|
5
19
|
/**
|
|
6
20
|
* Cloudpack cookies accessed by the overlay.
|
|
7
21
|
*/
|
package/lib/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU;IACrB;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;CAEK,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,WAAW;;;;CAIvB,CAAC"}
|
package/lib/constants.js
CHANGED
|
@@ -1,9 +1,23 @@
|
|
|
1
1
|
// This file serves as a separate entry point which can be imported without rendering the overlay
|
|
2
2
|
// as a side effect.
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
export const elementIds = {
|
|
4
|
+
/**
|
|
5
|
+
* ID for the root element of the overlay.
|
|
6
|
+
*/
|
|
7
|
+
root: 'cloudpack-overlay-root',
|
|
8
|
+
/**
|
|
9
|
+
* ID for the root element of the error dialog.
|
|
10
|
+
*/
|
|
11
|
+
errorDialogRoot: 'cloudpack-overlay-error-dialog',
|
|
12
|
+
/**
|
|
13
|
+
* ID for the root element of the status dialog.
|
|
14
|
+
*/
|
|
15
|
+
statusDialogRoot: 'cloudpack-overlay-status-dialog',
|
|
16
|
+
/**
|
|
17
|
+
* ID for the root element of the status badge.
|
|
18
|
+
*/
|
|
19
|
+
statusBadgeRoot: 'cloudpack-overlay-status-badge',
|
|
20
|
+
};
|
|
7
21
|
/**
|
|
8
22
|
* Cloudpack cookies accessed by the overlay.
|
|
9
23
|
*/
|
package/lib/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,oBAAoB;AAEpB
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,oBAAoB;AAEpB,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB;;OAEG;IACH,IAAI,EAAE,wBAAwB;IAC9B;;OAEG;IACH,eAAe,EAAE,gCAAgC;IACjD;;OAEG;IACH,gBAAgB,EAAE,iCAAiC;IACnD;;OAEG;IACH,eAAe,EAAE,gCAAgC;CACzC,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,SAAS,EAAE,sBAAsB;IACjC,eAAe,EAAE,4BAA4B;IAC7C,MAAM,EAAE,mBAAmB;CAC5B,CAAC","sourcesContent":["// This file serves as a separate entry point which can be imported without rendering the overlay\n// as a side effect.\n\nexport const elementIds = {\n /**\n * ID for the root element of the overlay.\n */\n root: 'cloudpack-overlay-root',\n /**\n * ID for the root element of the error dialog.\n */\n errorDialogRoot: 'cloudpack-overlay-error-dialog',\n /**\n * ID for the root element of the status dialog.\n */\n statusDialogRoot: 'cloudpack-overlay-status-dialog',\n /**\n * ID for the root element of the status badge.\n */\n statusBadgeRoot: 'cloudpack-overlay-status-badge',\n} as const;\n\n/**\n * Cloudpack cookies accessed by the overlay.\n */\nexport const cookieNames = {\n sessionId: 'cloudpack-session-id',\n sessionSequence: 'cloudpack-session-sequence',\n apiUrl: 'cloudpack-api-url',\n};\n"]}
|
package/lib/index.js
CHANGED
|
@@ -3,9 +3,9 @@ import ReactDOM from 'react-dom';
|
|
|
3
3
|
import { CloudpackProvider } from './components/CloudpackProvider/CloudpackProvider.js';
|
|
4
4
|
import { StatusOverlay } from './components/StatusOverlay/StatusOverlay.js';
|
|
5
5
|
import { ThemeProvider } from './components/ThemeProvider/ThemeProvider.js';
|
|
6
|
-
import {
|
|
6
|
+
import { elementIds } from './constants.js';
|
|
7
7
|
const rootDiv = document.createElement('div');
|
|
8
|
-
rootDiv.id =
|
|
8
|
+
rootDiv.id = elementIds.root;
|
|
9
9
|
ReactDOM.render(React.createElement(ThemeProvider, null,
|
|
10
10
|
React.createElement(CloudpackProvider, null,
|
|
11
11
|
React.createElement(StatusOverlay, null))), rootDiv);
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qDAAqD,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAC5E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qDAAqD,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9C,OAAO,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC;AAE7B,QAAQ,CAAC,MAAM,CACb,oBAAC,aAAa;IACZ,oBAAC,iBAAiB;QAChB,oBAAC,aAAa,OAAG,CACC,CACN,EAChB,OAAO,CACR,CAAC;AAEF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC","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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ms-cloudpack/overlay",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"description": "The Cloudpack overlay ux.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"types": "./lib/index.d.ts",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"lint": "cloudpack-scripts lint"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@ms-cloudpack/api-server": "^0.20.
|
|
29
|
+
"@ms-cloudpack/api-server": "^0.20.2",
|
|
30
30
|
"@ms-cloudpack/data-bus": "^0.4.0",
|
|
31
31
|
"@ms-cloudpack/path-string-parsing": "^1.1.0",
|
|
32
32
|
"react": "^17.0.0 || ^18.0.0",
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
// packages/overlay/src/constants.ts
|
|
2
|
-
var overlayRootDivId = "cloudpack-overlay-root";
|
|
3
|
-
var cookieNames = {
|
|
4
|
-
sessionId: "cloudpack-session-id",
|
|
5
|
-
sessionSequence: "cloudpack-session-sequence",
|
|
6
|
-
apiUrl: "cloudpack-api-url"
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
export {
|
|
10
|
-
overlayRootDivId,
|
|
11
|
-
cookieNames
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=chunk-IJJX7VIJ.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/constants.ts"],
|
|
4
|
-
"sourcesContent": ["// This file serves as a separate entry point which can be imported without rendering the overlay\n// as a side effect.\n\n/**\n * The id attached to the root element of the overlay div.\n */\nexport const overlayRootDivId = 'cloudpack-overlay-root';\n\n/**\n * Cloudpack cookies accessed by the overlay.\n */\nexport const cookieNames = {\n sessionId: 'cloudpack-session-id',\n sessionSequence: 'cloudpack-session-sequence',\n apiUrl: 'cloudpack-api-url',\n};\n"],
|
|
5
|
-
"mappings": ";AAMO,IAAM,mBAAmB;AAKzB,IAAM,cAAc;AAAA,EACzB,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB,QAAQ;AACV;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
File without changes
|