@ms-cloudpack/overlay 0.0.2 → 0.1.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/CHANGELOG.json +16 -1
- package/CHANGELOG.md +10 -2
- package/lib/components/CloudpackProvider/CloudpackProvider.d.ts +7 -0
- package/lib/components/CloudpackProvider/CloudpackProvider.js +9 -0
- package/lib/components/CloudpackProvider/CloudpackProvider.js.map +1 -0
- package/lib/components/CloudpackProvider/createCloudpackClient.d.ts +16 -0
- package/lib/components/CloudpackProvider/createCloudpackClient.js +119 -0
- package/lib/components/CloudpackProvider/createCloudpackClient.js.map +1 -0
- package/lib/components/{StatusProvider → CloudpackProvider}/getCookies.d.ts +3 -0
- package/lib/components/CloudpackProvider/getCookies.js +17 -0
- package/lib/components/CloudpackProvider/getCookies.js.map +1 -0
- package/lib/components/CloudpackProvider/useStatus.d.ts +9 -0
- package/lib/components/CloudpackProvider/useStatus.js +16 -0
- package/lib/components/CloudpackProvider/useStatus.js.map +1 -0
- package/lib/components/CloudpackProvider/useStatusDetails.d.ts +24 -0
- package/lib/components/CloudpackProvider/useStatusDetails.js +9 -0
- package/lib/components/CloudpackProvider/useStatusDetails.js.map +1 -0
- package/lib/components/StatusBadge/StatusBadge.d.ts +5 -1
- package/lib/components/StatusBadge/StatusBadge.js +52 -24
- package/lib/components/StatusBadge/StatusBadge.js.map +1 -1
- package/lib/components/StatusDialog/StatusDialog.d.ts +7 -0
- package/lib/components/StatusDialog/StatusDialog.js +21 -0
- package/lib/components/StatusDialog/StatusDialog.js.map +1 -0
- package/lib/components/StatusDialog/TaskList.d.ts +1 -0
- package/lib/components/StatusDialog/TaskList.js +26 -0
- package/lib/components/StatusDialog/TaskList.js.map +1 -0
- package/lib/components/StatusDialog/TaskResultItem.d.ts +7 -0
- package/lib/components/StatusDialog/TaskResultItem.js +32 -0
- package/lib/components/StatusDialog/TaskResultItem.js.map +1 -0
- package/lib/components/StatusDialog/TaskStatus.d.ts +5 -0
- package/lib/components/StatusDialog/TaskStatus.js +62 -0
- package/lib/components/StatusDialog/TaskStatus.js.map +1 -0
- package/lib/components/StatusOverlay/StatusOverlay.d.ts +1 -0
- package/lib/components/StatusOverlay/StatusOverlay.js +26 -0
- package/lib/components/StatusOverlay/StatusOverlay.js.map +1 -0
- package/lib/components/ThemeProvider/ThemeProvider.d.ts +2 -0
- package/lib/components/ThemeProvider/ThemeProvider.js +6 -0
- package/lib/components/ThemeProvider/ThemeProvider.js.map +1 -0
- package/lib/hooks/preferDarkTheme.d.ts +4 -0
- package/lib/hooks/preferDarkTheme.js +7 -0
- package/lib/hooks/preferDarkTheme.js.map +1 -0
- package/lib/hooks/useDraggable.d.ts +1 -1
- package/lib/hooks/useDraggable.js +38 -36
- package/lib/hooks/useDraggable.js.map +1 -1
- package/lib/index.js +6 -4
- package/lib/index.js.map +1 -1
- package/lib/tsdoc-metadata.json +1 -1
- package/package.json +5 -2
- package/lib/components/StatusBadge/StatusBadge.types.d.ts +0 -1
- package/lib/components/StatusBadge/StatusBadge.types.js +0 -2
- package/lib/components/StatusBadge/StatusBadge.types.js.map +0 -1
- package/lib/components/StatusBadge/getStatusText.d.ts +0 -2
- package/lib/components/StatusBadge/getStatusText.js +0 -19
- package/lib/components/StatusBadge/getStatusText.js.map +0 -1
- package/lib/components/StatusProvider/StatusProvider.d.ts +0 -12
- package/lib/components/StatusProvider/StatusProvider.js +0 -50
- package/lib/components/StatusProvider/StatusProvider.js.map +0 -1
- package/lib/components/StatusProvider/getCookies.js +0 -10
- package/lib/components/StatusProvider/getCookies.js.map +0 -1
- package/lib/components/StatusProvider/useStatus.d.ts +0 -1
- package/lib/components/StatusProvider/useStatus.js +0 -4
- package/lib/components/StatusProvider/useStatus.js.map +0 -1
- package/lib/hooks/useSessionId.d.ts +0 -1
- package/lib/hooks/useSessionId.js +0 -14
- package/lib/hooks/useSessionId.js.map +0 -1
package/CHANGELOG.json
CHANGED
|
@@ -2,7 +2,22 @@
|
|
|
2
2
|
"name": "@ms-cloudpack/overlay",
|
|
3
3
|
"entries": [
|
|
4
4
|
{
|
|
5
|
-
"date": "
|
|
5
|
+
"date": "Sat, 13 Aug 2022 08:13:57 GMT",
|
|
6
|
+
"tag": "@ms-cloudpack/overlay_v0.1.0",
|
|
7
|
+
"version": "0.1.0",
|
|
8
|
+
"comments": {
|
|
9
|
+
"minor": [
|
|
10
|
+
{
|
|
11
|
+
"author": "dzearing@microsoft.com",
|
|
12
|
+
"package": "@ms-cloudpack/overlay",
|
|
13
|
+
"commit": "69781360664cac5e13e889efa2dc02bc55a60315",
|
|
14
|
+
"comment": "Major changes to overlay to add a summary dialog overlay for seeing errors."
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"date": "Tue, 02 Aug 2022 19:53:54 GMT",
|
|
6
21
|
"tag": "@ms-cloudpack/overlay_v0.0.2",
|
|
7
22
|
"version": "0.0.2",
|
|
8
23
|
"comments": {
|
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
# Change Log - @ms-cloudpack/overlay
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Sat, 13 Aug 2022 08:13:57 GMT and should not be manually modified.
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
+
## 0.1.0
|
|
8
|
+
|
|
9
|
+
Sat, 13 Aug 2022 08:13:57 GMT
|
|
10
|
+
|
|
11
|
+
### Minor changes
|
|
12
|
+
|
|
13
|
+
- Major changes to overlay to add a summary dialog overlay for seeing errors. (dzearing@microsoft.com)
|
|
14
|
+
|
|
7
15
|
## 0.0.2
|
|
8
16
|
|
|
9
|
-
Tue, 02 Aug 2022 19:53:
|
|
17
|
+
Tue, 02 Aug 2022 19:53:54 GMT
|
|
10
18
|
|
|
11
19
|
### Patches
|
|
12
20
|
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type CloudpackClient } from './createCloudpackClient.js';
|
|
3
|
+
export declare const CloudpackContext: React.Context<CloudpackClient>;
|
|
4
|
+
export declare function CloudpackProvider({ children }: {
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
}): JSX.Element;
|
|
7
|
+
export declare const useCloudpack: () => CloudpackClient;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React, { createContext, useState, useContext } from 'react';
|
|
2
|
+
import { createCloudpackClient } from './createCloudpackClient.js';
|
|
3
|
+
export const CloudpackContext = createContext(null);
|
|
4
|
+
export function CloudpackProvider({ children }) {
|
|
5
|
+
const [client] = useState(createCloudpackClient);
|
|
6
|
+
return React.createElement(CloudpackContext.Provider, { value: client }, children);
|
|
7
|
+
}
|
|
8
|
+
export const useCloudpack = () => useContext(CloudpackContext);
|
|
9
|
+
//# sourceMappingURL=CloudpackProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CloudpackProvider.js","sourceRoot":"","sources":["../../../src/components/CloudpackProvider/CloudpackProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAwB,MAAM,4BAA4B,CAAC;AAEzF,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAkB,IAAW,CAAC,CAAC;AAE5E,MAAM,UAAU,iBAAiB,CAAC,EAAE,QAAQ,EAAiC;IAC3E,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IAEjD,OAAO,oBAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,IAAG,QAAQ,CAA6B,CAAC;AAC1F,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface CloudpackClient {
|
|
2
|
+
dispose: () => void;
|
|
3
|
+
getValue(path: string[]): any;
|
|
4
|
+
subscribe: (path: string[], callback: (newValue: any, oldValue: any) => void) => () => void;
|
|
5
|
+
openSource: (options: {
|
|
6
|
+
rootPath: string;
|
|
7
|
+
relativePath: string;
|
|
8
|
+
line: number;
|
|
9
|
+
column: number;
|
|
10
|
+
}) => void;
|
|
11
|
+
open: (options: {
|
|
12
|
+
rootPath: string;
|
|
13
|
+
relativePath?: string;
|
|
14
|
+
}) => void;
|
|
15
|
+
}
|
|
16
|
+
export declare function createCloudpackClient(): CloudpackClient;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { getCookies } from './getCookies.js';
|
|
2
|
+
import { createDataBus } from '@ms-cloudpack/data-bus';
|
|
3
|
+
export function createCloudpackClient() {
|
|
4
|
+
const cookies = getCookies();
|
|
5
|
+
const bus = createDataBus();
|
|
6
|
+
let subCounter = 0;
|
|
7
|
+
const subIds = {};
|
|
8
|
+
bus.addProvider({
|
|
9
|
+
path: [],
|
|
10
|
+
onActivate: ({ path }) => {
|
|
11
|
+
const id = subCounter++;
|
|
12
|
+
subIds[path.join('/')] = id;
|
|
13
|
+
sendMessage('subscribe', { path, id });
|
|
14
|
+
},
|
|
15
|
+
onDeactivate: ({ path }) => {
|
|
16
|
+
const pathString = path.join('/');
|
|
17
|
+
const id = subIds[pathString];
|
|
18
|
+
delete subIds[pathString];
|
|
19
|
+
sendMessage('unsubscribe', { path, id });
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
const enqueuedMessages = [];
|
|
23
|
+
const sessionId = cookies['cloudpack-session-id'];
|
|
24
|
+
const apiUrl = cookies['cloudpack-api-url'];
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
26
|
+
let socket;
|
|
27
|
+
/**
|
|
28
|
+
* Attempts to open the websocket connection.
|
|
29
|
+
*/
|
|
30
|
+
function openConnection() {
|
|
31
|
+
if (apiUrl && sessionId) {
|
|
32
|
+
const newSocket = new WebSocket(apiUrl);
|
|
33
|
+
newSocket.onopen = () => {
|
|
34
|
+
console.log('socket opened');
|
|
35
|
+
socket = newSocket;
|
|
36
|
+
socket.onmessage = onMessageReceived;
|
|
37
|
+
socket.onclose = () => {
|
|
38
|
+
socket = undefined;
|
|
39
|
+
};
|
|
40
|
+
// Initialize any pending subscriptions.
|
|
41
|
+
for (const message of enqueuedMessages) {
|
|
42
|
+
socket.send(message);
|
|
43
|
+
}
|
|
44
|
+
enqueuedMessages.length = 0;
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Closes the websocket connection.
|
|
50
|
+
*/
|
|
51
|
+
function dispose() {
|
|
52
|
+
if (socket) {
|
|
53
|
+
socket.close();
|
|
54
|
+
socket = undefined;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Sends a message to the websocket.
|
|
59
|
+
*/
|
|
60
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
61
|
+
function sendMessage(type, data) {
|
|
62
|
+
const message = JSON.stringify({ type, data });
|
|
63
|
+
if (socket) {
|
|
64
|
+
console.log(`Sent message: ${type}`, data);
|
|
65
|
+
socket.send(message);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
enqueuedMessages.push(message);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Receives a message from the websocket and calls the appropriate callback.
|
|
73
|
+
*/
|
|
74
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
75
|
+
function onMessageReceived(message) {
|
|
76
|
+
const response = JSON.parse(message.data);
|
|
77
|
+
console.log('Received message:', response);
|
|
78
|
+
switch (response.type) {
|
|
79
|
+
case 'notify': {
|
|
80
|
+
const { path, data } = response;
|
|
81
|
+
bus.publish(path, data);
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
case 'reload': {
|
|
85
|
+
window.location.reload();
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Creates a subscription to the given path.
|
|
92
|
+
*/
|
|
93
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
94
|
+
function subscribe(path, callback) {
|
|
95
|
+
const sessionPath = [sessionId, ...path];
|
|
96
|
+
return bus.subscribe(sessionPath, callback);
|
|
97
|
+
}
|
|
98
|
+
function getValue(path) {
|
|
99
|
+
const sessionPath = [sessionId, ...path];
|
|
100
|
+
return bus.getData(sessionPath);
|
|
101
|
+
}
|
|
102
|
+
function openSource(options) {
|
|
103
|
+
sendMessage('openSource', options);
|
|
104
|
+
}
|
|
105
|
+
function open(options) {
|
|
106
|
+
sendMessage('open', options);
|
|
107
|
+
}
|
|
108
|
+
// Start the connection.
|
|
109
|
+
openConnection();
|
|
110
|
+
// Return the public API.
|
|
111
|
+
return {
|
|
112
|
+
dispose,
|
|
113
|
+
getValue,
|
|
114
|
+
open,
|
|
115
|
+
openSource,
|
|
116
|
+
subscribe,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=createCloudpackClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createCloudpackClient.js","sourceRoot":"","sources":["../../../src/components/CloudpackProvider/createCloudpackClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gets the cookies dictionary from the browser.
|
|
3
|
+
*/
|
|
4
|
+
export function getCookies() {
|
|
5
|
+
return document.cookie
|
|
6
|
+
.split(';')
|
|
7
|
+
.map((s) => s.split('='))
|
|
8
|
+
.reduce((current, nextValue) => {
|
|
9
|
+
const name = nextValue[0]?.trim();
|
|
10
|
+
const value = decodeURIComponent(nextValue[1]?.trim());
|
|
11
|
+
if (name && value) {
|
|
12
|
+
current[name] = value;
|
|
13
|
+
}
|
|
14
|
+
return current;
|
|
15
|
+
}, {});
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=getCookies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getCookies.js","sourceRoot":"","sources":["../../../src/components/CloudpackProvider/getCookies.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,QAAQ,CAAC,MAAM;SACnB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACxB,MAAM,CAAyB,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE;QACrD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAEvD,IAAI,IAAI,IAAI,KAAK,EAAE;YACjB,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;SACvB;QAED,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare type CloudpackStatusType = 'unknown' | 'idle' | 'building' | 'success' | 'warning' | 'error' | 'cancelled';
|
|
2
|
+
export interface CloudpackStatus {
|
|
3
|
+
status: 'idle' | 'pending' | 'unknown';
|
|
4
|
+
remainingTasks: number;
|
|
5
|
+
totalTasks: number;
|
|
6
|
+
totalErrors: number;
|
|
7
|
+
totalWarnings: number;
|
|
8
|
+
}
|
|
9
|
+
export declare const useStatus: () => CloudpackStatus;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
|
+
import { useCloudpack } from './CloudpackProvider.js';
|
|
3
|
+
const defaultStatus = {
|
|
4
|
+
status: 'unknown',
|
|
5
|
+
remainingTasks: 0,
|
|
6
|
+
totalTasks: 0,
|
|
7
|
+
totalErrors: 0,
|
|
8
|
+
totalWarnings: 0,
|
|
9
|
+
};
|
|
10
|
+
export const useStatus = () => {
|
|
11
|
+
const service = useCloudpack();
|
|
12
|
+
const [status, setStatus] = useState(() => service?.getValue(['status']) || defaultStatus);
|
|
13
|
+
useEffect(() => service?.subscribe(['status'], setStatus), [service]);
|
|
14
|
+
return status;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=useStatus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useStatus.js","sourceRoot":"","sources":["../../../src/components/CloudpackProvider/useStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAetD,MAAM,aAAa,GAAoB;IACrC,MAAM,EAAE,SAAS;IACjB,cAAc,EAAE,CAAC;IACjB,UAAU,EAAE,CAAC;IACb,WAAW,EAAE,CAAC;IACd,aAAa,EAAE,CAAC;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE;IAC5B,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAC/B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAkB,GAAG,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC;IAE5G,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEtE,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface TaskResultItemType {
|
|
2
|
+
text: string;
|
|
3
|
+
pluginName: string;
|
|
4
|
+
stack: string;
|
|
5
|
+
location?: {
|
|
6
|
+
file: string;
|
|
7
|
+
line: number;
|
|
8
|
+
column: number;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export interface TaskDescriptionType {
|
|
12
|
+
name: string;
|
|
13
|
+
inputPath: string;
|
|
14
|
+
outputPath: string;
|
|
15
|
+
status: 'pending' | 'complete';
|
|
16
|
+
errors: TaskResultItemType[];
|
|
17
|
+
warnings: TaskResultItemType[];
|
|
18
|
+
durationMilliseconds: number;
|
|
19
|
+
}
|
|
20
|
+
interface CloudpackStatusDetailsType {
|
|
21
|
+
tasks: TaskDescriptionType[];
|
|
22
|
+
}
|
|
23
|
+
export declare const useStatusDetails: () => CloudpackStatusDetailsType;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
|
+
import { useCloudpack } from './CloudpackProvider.js';
|
|
3
|
+
export const useStatusDetails = () => {
|
|
4
|
+
const service = useCloudpack();
|
|
5
|
+
const [details, setDetails] = useState({ tasks: [] });
|
|
6
|
+
useEffect(() => service?.subscribe(['status-details'], setDetails), [service]);
|
|
7
|
+
return details;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=useStatusDetails.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useStatusDetails.js","sourceRoot":"","sources":["../../../src/components/CloudpackProvider/useStatusDetails.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AA2BtD,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAC/B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAA6B,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAElF,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAE/E,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -1,32 +1,60 @@
|
|
|
1
1
|
import React, { useRef } from 'react';
|
|
2
|
-
import { useDraggable } from '../../hooks/useDraggable';
|
|
2
|
+
import { useDraggable } from '../../hooks/useDraggable.js';
|
|
3
3
|
import styles from './StatusBadge.module.css';
|
|
4
|
-
import cx from 'classnames';
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
export function StatusBadge() {
|
|
4
|
+
import { default as cx } from 'classnames';
|
|
5
|
+
import { useStatus } from '../CloudpackProvider/useStatus.js';
|
|
6
|
+
import OpenFilled from '../../images/open-16-filled.inline.svg';
|
|
7
|
+
export function StatusBadge({ inline, onExpand }) {
|
|
8
8
|
const rootElementRef = useRef(null);
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
const dragElementRef = useRef(null);
|
|
10
|
+
const status = useStatus();
|
|
11
|
+
useDraggable(rootElementRef, dragElementRef);
|
|
12
|
+
if (status.status === 'unknown') {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
const badge = (React.createElement("div", { ref: inline ? undefined : rootElementRef, className: getStatusClassName(status, !!inline) },
|
|
16
|
+
!inline && (React.createElement("div", { ref: inline ? undefined : dragElementRef, className: styles.gripArea },
|
|
17
|
+
React.createElement("div", { className: styles.grip }),
|
|
18
|
+
React.createElement("div", { className: styles.grip }))),
|
|
19
|
+
React.createElement("button", { className: styles.button, onClick: onExpand },
|
|
20
|
+
React.createElement("div", { className: styles.value }, getStatusString(status))),
|
|
21
|
+
React.createElement("div", null, getStatsString(status)),
|
|
22
|
+
React.createElement("button", { className: styles.button },
|
|
23
|
+
React.createElement("img", { src: OpenFilled, alt: "" }))));
|
|
24
|
+
return inline ? (badge) : (React.createElement("div", { className: styles.fixedOverlay },
|
|
25
|
+
React.createElement("div", { className: styles.contentSurface }, badge)));
|
|
26
|
+
}
|
|
27
|
+
function getStatusString(status) {
|
|
28
|
+
if (status.status === 'pending') {
|
|
29
|
+
return 'Running';
|
|
30
|
+
}
|
|
31
|
+
if (status.totalTasks === 0) {
|
|
32
|
+
return 'Idle';
|
|
33
|
+
}
|
|
34
|
+
return status.totalErrors === 0 ? 'Success' : 'Errors';
|
|
35
|
+
}
|
|
36
|
+
function getStatusClassName(status, inline) {
|
|
37
|
+
return cx(styles.badge, {
|
|
38
|
+
[styles.inline]: inline,
|
|
39
|
+
[styles.building]: status.status === 'pending',
|
|
40
|
+
[styles.success]: status.status === 'idle' && status.totalTasks > 0 && status.totalErrors === 0 && status.totalWarnings === 0,
|
|
41
|
+
[styles.error]: status.status === 'idle' && status.totalErrors > 0,
|
|
42
|
+
[styles.warning]: status.status === 'idle' && status.totalErrors === 0 && status.totalWarnings > 0,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function getStatsString(status) {
|
|
46
|
+
if (status.totalTasks === 0) {
|
|
47
|
+
return '';
|
|
48
|
+
}
|
|
49
|
+
return [
|
|
50
|
+
status.remainingTasks > 0 && `${status.remainingTasks} of ${status.totalTasks} tasks pending`,
|
|
51
|
+
status.remainingTasks === 0 && `${status.totalTasks} tasks completed`,
|
|
52
|
+
status.totalErrors === 1 && `${status.totalErrors} error`,
|
|
53
|
+
status.totalErrors > 1 && `${status.totalErrors} errors`,
|
|
54
|
+
status.totalWarnings === 1 && `${status.totalWarnings} warning`,
|
|
55
|
+
status.totalWarnings > 1 && `${status.totalWarnings} warnings`,
|
|
16
56
|
]
|
|
17
57
|
.filter(Boolean)
|
|
18
58
|
.join(', ');
|
|
19
|
-
return (React.createElement("div", { className: styles.fixedOverlay },
|
|
20
|
-
React.createElement("div", { className: styles.contentSurface },
|
|
21
|
-
React.createElement("div", { ref: rootElementRef, className: cx(styles.badge, {
|
|
22
|
-
[styles.building]: status === 'building',
|
|
23
|
-
[styles.success]: status === 'success',
|
|
24
|
-
[styles.error]: status === 'error',
|
|
25
|
-
[styles.warning]: status === 'warning',
|
|
26
|
-
}) },
|
|
27
|
-
React.createElement("button", { className: styles.button },
|
|
28
|
-
React.createElement("div", { className: styles.value }, getStatusText(status))),
|
|
29
|
-
React.createElement("div", null, statusString.length ? `(${statusString})` : ''),
|
|
30
|
-
React.createElement("button", { className: styles.button }, "...")))));
|
|
31
59
|
}
|
|
32
60
|
//# sourceMappingURL=StatusBadge.js.map
|
|
@@ -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,
|
|
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;AACpF,OAAO,UAAU,MAAM,wCAAwC,CAAC;AAOhE,MAAM,UAAU,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAoB;IAChE,MAAM,cAAc,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,YAAY,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IAE7C,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;QAC/B,OAAO,IAAI,CAAC;KACb;IAED,MAAM,KAAK,GAAG,CACZ,6BAAK,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,EAAE,SAAS,EAAE,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QAC3F,CAAC,MAAM,IAAI,CACV,6BAAK,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ;YACvE,6BAAK,SAAS,EAAE,MAAM,CAAC,IAAI,GAAI;YAC/B,6BAAK,SAAS,EAAE,MAAM,CAAC,IAAI,GAAI,CAC3B,CACP;QACD,gCAAQ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ;YACjD,6BAAK,SAAS,EAAE,MAAM,CAAC,KAAK,IAAG,eAAe,CAAC,MAAM,CAAC,CAAO,CACtD;QACT,iCAAM,cAAc,CAAC,MAAM,CAAC,CAAO;QACnC,gCAAQ,SAAS,EAAE,MAAM,CAAC,MAAM;YAC9B,6BAAK,GAAG,EAAE,UAAU,EAAE,GAAG,EAAC,EAAE,GAAG,CACxB,CACL,CACP,CAAC;IAEF,OAAO,MAAM,CAAC,CAAC,CAAC,CACd,KAAK,CACN,CAAC,CAAC,CAAC,CACF,6BAAK,SAAS,EAAE,MAAM,CAAC,YAAY;QACjC,6BAAK,SAAS,EAAE,MAAM,CAAC,cAAc,IAAG,KAAK,CAAO,CAChD,CACP,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,MAAuB;IAC9C,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;QAC/B,OAAO,SAAS,CAAC;KAClB;IAED,IAAI,MAAM,CAAC,UAAU,KAAK,CAAC,EAAE;QAC3B,OAAO,MAAM,CAAC;KACf;IAED,OAAO,MAAM,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;AACzD,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAuB,EAAE,MAAe;IAClE,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;QACtB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM;QACvB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,KAAK,SAAS;QAC9C,CAAC,MAAM,CAAC,OAAO,CAAC,EACd,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,IAAI,MAAM,CAAC,WAAW,KAAK,CAAC,IAAI,MAAM,CAAC,aAAa,KAAK,CAAC;QAC7G,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC;QAClE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,WAAW,KAAK,CAAC,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC;KACnG,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,MAAuB;IAC7C,IAAI,MAAM,CAAC,UAAU,KAAK,CAAC,EAAE;QAC3B,OAAO,EAAE,CAAC;KACX;IAED,OAAO;QACL,MAAM,CAAC,cAAc,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,cAAc,OAAO,MAAM,CAAC,UAAU,gBAAgB;QAC7F,MAAM,CAAC,cAAc,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,kBAAkB;QACrE,MAAM,CAAC,WAAW,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,WAAW,QAAQ;QACzD,MAAM,CAAC,WAAW,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,WAAW,SAAS;QACxD,MAAM,CAAC,aAAa,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,aAAa,UAAU;QAC/D,MAAM,CAAC,aAAa,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,aAAa,WAAW;KAC/D;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface StatusDialogProps {
|
|
3
|
+
onClose: () => void;
|
|
4
|
+
}
|
|
5
|
+
declare function StatusDialogUnmemoized({ onClose }: StatusDialogProps): JSX.Element;
|
|
6
|
+
export declare const StatusDialog: React.MemoExoticComponent<typeof StatusDialogUnmemoized>;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { default as React, useRef } from 'react';
|
|
2
|
+
import styles from './StatusDialog.module.css';
|
|
3
|
+
import { useDraggable } from '../../hooks/useDraggable.js';
|
|
4
|
+
import CloseIcon from '../../images/dismiss-16-filled.inline.svg';
|
|
5
|
+
import { TaskList } from './TaskList.js';
|
|
6
|
+
function StatusDialogUnmemoized({ onClose }) {
|
|
7
|
+
const draggableRef = useRef(null);
|
|
8
|
+
const draggableTargetRef = useRef(null);
|
|
9
|
+
useDraggable(draggableRef, draggableTargetRef);
|
|
10
|
+
return (React.createElement("div", { className: styles.overlay },
|
|
11
|
+
React.createElement("div", { ref: draggableRef, className: styles.dialog },
|
|
12
|
+
React.createElement("div", { className: styles.titleArea },
|
|
13
|
+
React.createElement("div", { ref: draggableTargetRef, className: styles.title }, "Task results"),
|
|
14
|
+
React.createElement("button", { className: styles.closeButton, onClick: onClose },
|
|
15
|
+
React.createElement("img", { src: CloseIcon, alt: "" }))),
|
|
16
|
+
React.createElement(TaskList, null))));
|
|
17
|
+
}
|
|
18
|
+
export const StatusDialog = React.memo(StatusDialogUnmemoized, (prev, next) => {
|
|
19
|
+
return prev.onClose === next.onClose;
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=StatusDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusDialog.js","sourceRoot":"","sources":["../../../src/components/StatusDialog/StatusDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,SAAS,MAAM,2CAA2C,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAMzC,SAAS,sBAAsB,CAAC,EAAE,OAAO,EAAqB;IAC5D,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAExC,YAAY,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;IAE/C,OAAO,CACL,6BAAK,SAAS,EAAE,MAAM,CAAC,OAAO;QAC5B,6BAAK,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM;YAC9C,6BAAK,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC9B,6BAAK,GAAG,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,mBAE/C;gBACN,gCAAQ,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO;oBACrD,6BAAK,GAAG,EAAE,SAAS,EAAE,GAAG,EAAC,EAAE,GAAG,CACvB,CACL;YACN,oBAAC,QAAQ,OAAG,CACR,CACF,CACP,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;IAC5E,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC;AACvC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function TaskList(): JSX.Element;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TaskStatus } from './TaskStatus.js';
|
|
3
|
+
import { useStatusDetails } from '../CloudpackProvider/useStatusDetails.js';
|
|
4
|
+
import styles from './TaskList.module.css';
|
|
5
|
+
export function TaskList() {
|
|
6
|
+
const details = useStatusDetails();
|
|
7
|
+
const tasks = (details.tasks || []).sort(sortTasks);
|
|
8
|
+
return (React.createElement("div", { className: styles.root }, tasks.map((task, index) => (React.createElement(TaskStatus, { key: index, task: task })))));
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Really the server should be sorting. Get stuff out of the browser.
|
|
12
|
+
*/
|
|
13
|
+
function sortTasks(a, b) {
|
|
14
|
+
const aStatus = a.status === 'pending' ? 1 : 0;
|
|
15
|
+
const bStatus = b.status === 'pending' ? 1 : 0;
|
|
16
|
+
if (aStatus !== bStatus) {
|
|
17
|
+
return aStatus > bStatus ? -1 : 1;
|
|
18
|
+
}
|
|
19
|
+
const aErrors = a.errors?.length || 0;
|
|
20
|
+
const bErrors = b.errors?.length || 0;
|
|
21
|
+
if (aErrors !== bErrors) {
|
|
22
|
+
return aErrors > bErrors ? -1 : 1;
|
|
23
|
+
}
|
|
24
|
+
return a.name < b.name ? -1 : 1;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=TaskList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskList.js","sourceRoot":"","sources":["../../../src/components/StatusDialog/TaskList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAA4B,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AACtG,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAE3C,MAAM,UAAU,QAAQ;IACtB,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEpD,OAAO,CACL,6BAAK,SAAS,EAAE,MAAM,CAAC,IAAI,IACxB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1B,oBAAC,UAAU,IAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAI,CACvC,CAAC,CACE,CACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,CAAsB,EAAE,CAAsB;IAC/D,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/C,IAAI,OAAO,KAAK,OAAO,EAAE;QACvB,OAAO,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACnC;IAED,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC;IAEtC,IAAI,OAAO,KAAK,OAAO,EAAE;QACvB,OAAO,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACnC;IAED,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { TaskResultItemType } from '../CloudpackProvider/useStatusDetails.js';
|
|
2
|
+
export interface TaskResultItemProps {
|
|
3
|
+
item: TaskResultItemType;
|
|
4
|
+
projectPath: string;
|
|
5
|
+
index: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function TaskResultItem({ item, projectPath, index }: TaskResultItemProps): JSX.Element;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';
|
|
3
|
+
import styles from './TaskResultItem.module.css';
|
|
4
|
+
export function TaskResultItem({ item, projectPath, index }) {
|
|
5
|
+
const service = useCloudpack();
|
|
6
|
+
const openSource = (ev) => {
|
|
7
|
+
if (item.location) {
|
|
8
|
+
service.openSource({
|
|
9
|
+
rootPath: projectPath,
|
|
10
|
+
relativePath: item.location?.file,
|
|
11
|
+
line: item.location?.line,
|
|
12
|
+
column: item.location?.column,
|
|
13
|
+
});
|
|
14
|
+
ev.preventDefault();
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const filename = item.location?.file || '(path unavailable)';
|
|
18
|
+
const location = ['', item.location?.line, item.location?.column].filter(Boolean).join(':');
|
|
19
|
+
return (React.createElement("div", { className: styles.root },
|
|
20
|
+
React.createElement("div", { className: styles.statusBar }),
|
|
21
|
+
React.createElement("div", { className: styles.content },
|
|
22
|
+
React.createElement("div", { className: styles.titleArea },
|
|
23
|
+
React.createElement("button", { onClick: openSource, className: styles.file },
|
|
24
|
+
index,
|
|
25
|
+
". ",
|
|
26
|
+
filename,
|
|
27
|
+
location && ` (${location})`,
|
|
28
|
+
":")),
|
|
29
|
+
React.createElement("div", { className: styles.text }, item.text),
|
|
30
|
+
React.createElement("pre", { className: styles.text }, JSON.stringify(item, null, 2)))));
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=TaskResultItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskResultItem.js","sourceRoot":"","sources":["../../../src/components/StatusDialog/TaskResultItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAEzE,OAAO,MAAM,MAAM,6BAA6B,CAAC;AAQjD,MAAM,UAAU,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAuB;IAC9E,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAE/B,MAAM,UAAU,GAAG,CAAC,EAAoB,EAAE,EAAE;QAC1C,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,CAAC,UAAU,CAAC;gBACjB,QAAQ,EAAE,WAAW;gBACrB,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI;gBACjC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI;gBACzB,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM;aAC9B,CAAC,CAAC;YACH,EAAE,CAAC,cAAc,EAAE,CAAC;SACrB;IACH,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,oBAAoB,CAAC;IAC7D,MAAM,QAAQ,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5F,OAAO,CACL,6BAAK,SAAS,EAAE,MAAM,CAAC,IAAI;QACzB,6BAAK,SAAS,EAAE,MAAM,CAAC,SAAS,GAAQ;QACxC,6BAAK,SAAS,EAAE,MAAM,CAAC,OAAO;YAC5B,6BAAK,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC9B,gCAAQ,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI;oBAChD,KAAK;;oBAAI,QAAQ;oBACjB,QAAQ,IAAI,KAAK,QAAQ,GAAG;wBACtB,CACL;YACN,6BAAK,SAAS,EAAE,MAAM,CAAC,IAAI,IAAG,IAAI,CAAC,IAAI,CAAO;YAC9C,6BAAK,SAAS,EAAE,MAAM,CAAC,IAAI,IAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAO,CAC9D,CACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TaskResultItem } from './TaskResultItem.js';
|
|
3
|
+
import styles from './TaskStatus.module.css';
|
|
4
|
+
import { default as cx } from 'classnames';
|
|
5
|
+
import ErrorIcon from '../../images/error-24.inline.svg';
|
|
6
|
+
import SuccessIcon from '../../images/success-24.inline.svg';
|
|
7
|
+
import ChevronDownIcon from '../../images/chevrondown-20.inline.svg';
|
|
8
|
+
import { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';
|
|
9
|
+
function getCompletion(task) {
|
|
10
|
+
if (task.status === 'pending') {
|
|
11
|
+
return 'Running';
|
|
12
|
+
}
|
|
13
|
+
return [
|
|
14
|
+
`Completed in ${task.durationMilliseconds}ms`,
|
|
15
|
+
task.errors?.length && `${task.errors.length} error${task.errors.length > 1 ? 's' : ''}`,
|
|
16
|
+
task.warnings?.length && `${task.warnings.length} warning${task.warnings.length > 1 ? 's' : ''}`,
|
|
17
|
+
]
|
|
18
|
+
.filter(Boolean)
|
|
19
|
+
.join(', ');
|
|
20
|
+
}
|
|
21
|
+
export function TaskStatus({ task }) {
|
|
22
|
+
const [isOpen, setIsOpen] = React.useState(undefined);
|
|
23
|
+
const { name, warnings, errors } = task;
|
|
24
|
+
const cloudpack = useCloudpack();
|
|
25
|
+
const showContent = isOpen === true || (isOpen === undefined && task.errors?.length > 0);
|
|
26
|
+
const open = (rootPath) => {
|
|
27
|
+
cloudpack.open({
|
|
28
|
+
rootPath,
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
return (React.createElement("div", { className: styles.root },
|
|
32
|
+
React.createElement("div", { className: getHeaderClassName(task) },
|
|
33
|
+
React.createElement("button", { className: styles.expandButton, onClick: () => setIsOpen(!showContent) },
|
|
34
|
+
React.createElement("img", { className: cx(styles.expandIcon, !showContent && styles.collapsed), src: ChevronDownIcon, alt: "" })),
|
|
35
|
+
errors?.length === 0 && warnings?.length === 0 && (React.createElement("img", { className: styles.errorIcon, src: SuccessIcon, alt: "" })),
|
|
36
|
+
errors?.length > 0 && React.createElement("img", { className: styles.errorIcon, src: ErrorIcon, alt: "" }),
|
|
37
|
+
React.createElement("div", { className: styles.title }, name),
|
|
38
|
+
React.createElement("div", { className: styles.farArea }, getCompletion(task))),
|
|
39
|
+
showContent && (React.createElement("div", { className: styles.content },
|
|
40
|
+
React.createElement("div", { className: styles.title }, "Details"),
|
|
41
|
+
React.createElement("div", { className: styles.nameValueArea },
|
|
42
|
+
React.createElement("div", { className: styles.name }, "Input path"),
|
|
43
|
+
React.createElement("div", { className: styles.value },
|
|
44
|
+
React.createElement("button", { className: styles.linkButton, onClick: () => open(task.inputPath) }, task.inputPath))),
|
|
45
|
+
React.createElement("div", { className: styles.nameValueArea },
|
|
46
|
+
React.createElement("div", { className: styles.name }, "Output path"),
|
|
47
|
+
React.createElement("button", { className: styles.linkButton, onClick: () => open(task.outputPath) }, task.outputPath)),
|
|
48
|
+
errors?.length > 0 && (React.createElement(React.Fragment, null,
|
|
49
|
+
React.createElement("div", { className: styles.title }, "Errors"),
|
|
50
|
+
React.createElement("div", { className: styles.resultItems }, errors.map((error, index) => (React.createElement(TaskResultItem, { key: index, item: error, projectPath: task.inputPath, index: index + 1 })))))),
|
|
51
|
+
warnings?.length > 0 && (React.createElement(React.Fragment, null,
|
|
52
|
+
React.createElement("div", { className: styles.title }, "Warnings"),
|
|
53
|
+
React.createElement("div", { className: styles.resultItems }, warnings.map((warning, index) => (React.createElement(TaskResultItem, { key: index, item: warning, projectPath: task.inputPath, index: index + 1 }))))))))));
|
|
54
|
+
}
|
|
55
|
+
function getHeaderClassName(task) {
|
|
56
|
+
return cx(styles.header, {
|
|
57
|
+
[styles.success]: task.errors?.length === 0 && task.warnings?.length === 0,
|
|
58
|
+
[styles.warning]: task.errors?.length === 0 && task.warnings?.length > 0,
|
|
59
|
+
[styles.error]: task.errors?.length > 0,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=TaskStatus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskStatus.js","sourceRoot":"","sources":["../../../src/components/StatusDialog/TaskStatus.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function StatusOverlay(): JSX.Element;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React, { useCallback, useState, useRef } from 'react';
|
|
2
|
+
import { StatusBadge } from '../StatusBadge/StatusBadge.js';
|
|
3
|
+
import { StatusDialog } from '../StatusDialog/StatusDialog.js';
|
|
4
|
+
import { useStatus } from '../CloudpackProvider/useStatus.js';
|
|
5
|
+
export function StatusOverlay() {
|
|
6
|
+
const [isExpanded, setIsExpanded] = useState(false);
|
|
7
|
+
const status = useStatus();
|
|
8
|
+
const internal = useRef();
|
|
9
|
+
// If we haven't set a specific state and we become idle,
|
|
10
|
+
// pop open the details if there are errors.
|
|
11
|
+
if (isExpanded === false &&
|
|
12
|
+
internal.current?.status !== 'idle' &&
|
|
13
|
+
status.status === 'idle' &&
|
|
14
|
+
internal.current?.totalErrors != status.totalErrors) {
|
|
15
|
+
setIsExpanded(true);
|
|
16
|
+
}
|
|
17
|
+
internal.current = status;
|
|
18
|
+
const toggleMinimized = useCallback(() => {
|
|
19
|
+
console.log(`Toggling minimized state to ${!isExpanded}`);
|
|
20
|
+
setIsExpanded(!isExpanded);
|
|
21
|
+
}, [isExpanded, setIsExpanded]);
|
|
22
|
+
return (React.createElement("div", null,
|
|
23
|
+
!isExpanded && React.createElement(StatusBadge, { onExpand: toggleMinimized }),
|
|
24
|
+
isExpanded && React.createElement(StatusDialog, { onClose: toggleMinimized })));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=StatusOverlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusOverlay.js","sourceRoot":"","sources":["../../../src/components/StatusOverlay/StatusOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAwB,MAAM,mCAAmC,CAAC;AAEpF,MAAM,UAAU,aAAa;IAC3B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,EAA+B,CAAC;IAEvD,yDAAyD;IACzD,4CAA4C;IAC5C,IACE,UAAU,KAAK,KAAK;QACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM;QACnC,MAAM,CAAC,MAAM,KAAK,MAAM;QACxB,QAAQ,CAAC,OAAO,EAAE,WAAW,IAAI,MAAM,CAAC,WAAW,EACnD;QACA,aAAa,CAAC,IAAI,CAAC,CAAC;KACrB;IACD,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC;IAE1B,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE;QACvC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1D,aAAa,CAAC,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;IAEhC,OAAO,CACL;QACG,CAAC,UAAU,IAAI,oBAAC,WAAW,IAAC,QAAQ,EAAE,eAAe,GAAI;QACzD,UAAU,IAAI,oBAAC,YAAY,IAAC,OAAO,EAAE,eAAe,GAAI,CACrD,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeProvider.js","sourceRoot":"","sources":["../../../src/components/ThemeProvider/ThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,4BAA4B,CAAC;AAEhD,MAAM,UAAU,aAAa,CAAC,EAAE,QAAQ,EAA+B;IACrE,OAAO,6BAAK,SAAS,EAAE,MAAM,CAAC,IAAI,IAAG,QAAQ,CAAO,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preferDarkTheme.js","sourceRoot":"","sources":["../../src/hooks/preferDarkTheme.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,OAAO,CAAC;AACnE,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type RefObject } from 'react';
|
|
2
|
-
export declare function useDraggable(
|
|
2
|
+
export declare function useDraggable(containerElementRef?: RefObject<HTMLElement>, dragElementRef?: RefObject<HTMLElement> | undefined): {
|
|
3
3
|
isDragging: boolean;
|
|
4
4
|
};
|
|
@@ -1,44 +1,46 @@
|
|
|
1
1
|
import { useEffect, useState } from 'react';
|
|
2
|
-
export function useDraggable(
|
|
2
|
+
export function useDraggable(containerElementRef, dragElementRef = containerElementRef) {
|
|
3
3
|
const [isDragging, setIsDragging] = useState(false);
|
|
4
4
|
useEffect(() => {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const onPointerUp = (event) => {
|
|
15
|
-
setIsDragging(false);
|
|
16
|
-
offset = {
|
|
17
|
-
x: offset.x + event.clientX - originalX,
|
|
18
|
-
y: offset.y + event.clientY - originalY,
|
|
5
|
+
if (containerElementRef && dragElementRef) {
|
|
6
|
+
const moveTarget = containerElementRef.current;
|
|
7
|
+
const dragTarget = dragElementRef.current;
|
|
8
|
+
if (moveTarget && dragTarget) {
|
|
9
|
+
let originalX = 0;
|
|
10
|
+
let originalY = 0;
|
|
11
|
+
let offset = { x: 0, y: 0 };
|
|
12
|
+
const onPointerMove = (event) => {
|
|
13
|
+
moveTarget.style.transform = `translate(${offset.x + event.clientX - originalX}px, ${offset.y + event.clientY - originalY}px)`;
|
|
19
14
|
};
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
15
|
+
const onPointerUp = (event) => {
|
|
16
|
+
setIsDragging(false);
|
|
17
|
+
offset = {
|
|
18
|
+
x: offset.x + event.clientX - originalX,
|
|
19
|
+
y: offset.y + event.clientY - originalY,
|
|
20
|
+
};
|
|
21
|
+
dragTarget.releasePointerCapture(event.pointerId);
|
|
22
|
+
dragTarget.removeEventListener('pointerup', onPointerUp);
|
|
23
|
+
dragTarget.removeEventListener('pointermove', onPointerMove);
|
|
24
|
+
event.preventDefault();
|
|
25
|
+
};
|
|
26
|
+
const onPointerDown = (event) => {
|
|
27
|
+
setIsDragging(true);
|
|
28
|
+
originalX = event.clientX;
|
|
29
|
+
originalY = event.clientY;
|
|
30
|
+
dragTarget.setPointerCapture(event.pointerId);
|
|
31
|
+
dragTarget.addEventListener('pointerup', onPointerUp);
|
|
32
|
+
dragTarget.addEventListener('pointermove', onPointerMove);
|
|
33
|
+
event.preventDefault();
|
|
34
|
+
};
|
|
35
|
+
dragTarget.addEventListener('pointerdown', onPointerDown);
|
|
36
|
+
return () => {
|
|
37
|
+
dragTarget.removeEventListener('pointerdown', onPointerDown);
|
|
38
|
+
dragTarget.removeEventListener('pointermove', onPointerMove);
|
|
39
|
+
dragTarget.removeEventListener('pointerup', onPointerUp);
|
|
40
|
+
};
|
|
41
|
+
}
|
|
40
42
|
}
|
|
41
|
-
}, [
|
|
43
|
+
}, [containerElementRef, dragElementRef]);
|
|
42
44
|
return {
|
|
43
45
|
isDragging,
|
|
44
46
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDraggable.js","sourceRoot":"","sources":["../../src/hooks/useDraggable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5D,MAAM,UAAU,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"useDraggable.js","sourceRoot":"","sources":["../../src/hooks/useDraggable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5D,MAAM,UAAU,YAAY,CAAC,mBAA4C,EAAE,cAAc,GAAG,mBAAmB;IAC7G,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,mBAAmB,IAAI,cAAc,EAAE;YACzC,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC;YAC/C,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC;YAE1C,IAAI,UAAU,IAAI,UAAU,EAAE;gBAC5B,IAAI,SAAS,GAAG,CAAC,CAAC;gBAClB,IAAI,SAAS,GAAG,CAAC,CAAC;gBAClB,IAAI,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;gBAE5B,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAE,EAAE;oBAC5C,UAAU,CAAC,KAAK,CAAC,SAAS,GAAG,aAAa,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,SAAS,OAC5E,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,SAC7B,KAAK,CAAC;gBACR,CAAC,CAAC;gBAEF,MAAM,WAAW,GAAG,CAAC,KAAmB,EAAE,EAAE;oBAC1C,aAAa,CAAC,KAAK,CAAC,CAAC;oBACrB,MAAM,GAAG;wBACP,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,SAAS;wBACvC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,SAAS;qBACxC,CAAC;oBAEF,UAAU,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBAClD,UAAU,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;oBACzD,UAAU,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;oBAE7D,KAAK,CAAC,cAAc,EAAE,CAAC;gBACzB,CAAC,CAAC;gBAEF,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAE,EAAE;oBAC5C,aAAa,CAAC,IAAI,CAAC,CAAC;oBACpB,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;oBAC1B,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;oBAC1B,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBAC9C,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;oBACtD,UAAU,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;oBAC1D,KAAK,CAAC,cAAc,EAAE,CAAC;gBACzB,CAAC,CAAC;gBAEF,UAAU,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;gBAE1D,OAAO,GAAG,EAAE;oBACV,UAAU,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;oBAC7D,UAAU,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;oBAC7D,UAAU,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;gBAC3D,CAAC,CAAC;aACH;SACF;IACH,CAAC,EAAE,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC,CAAC;IAE1C,OAAO;QACL,UAAU;KACX,CAAC;AACJ,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import ReactDOM from 'react-dom';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { CloudpackProvider } from './components/CloudpackProvider/CloudpackProvider.js';
|
|
4
|
+
import { StatusOverlay } from './components/StatusOverlay/StatusOverlay.js';
|
|
5
|
+
import { ThemeProvider } from './components/ThemeProvider/ThemeProvider.js';
|
|
5
6
|
const rootDiv = document.createElement('div');
|
|
6
|
-
ReactDOM.render(React.createElement(
|
|
7
|
-
React.createElement(
|
|
7
|
+
ReactDOM.render(React.createElement(ThemeProvider, null,
|
|
8
|
+
React.createElement(CloudpackProvider, null,
|
|
9
|
+
React.createElement(StatusOverlay, null))), rootDiv);
|
|
8
10
|
document.body.appendChild(rootDiv);
|
|
9
11
|
//# sourceMappingURL=index.js.map
|
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,
|
|
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;AAE5E,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAE9C,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"}
|
package/lib/tsdoc-metadata.json
CHANGED
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ms-cloudpack/overlay",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "The Cloudpack overlay ux.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"types": "./lib/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
7
8
|
"exports": {
|
|
8
9
|
".": {
|
|
9
10
|
"types": "./lib/index.d.ts",
|
|
@@ -19,8 +20,10 @@
|
|
|
19
20
|
"lint": "cloudpack-scripts lint"
|
|
20
21
|
},
|
|
21
22
|
"dependencies": {
|
|
23
|
+
"@ms-cloudpack/data-bus": "^0.1.0",
|
|
22
24
|
"react": "^17.0.2",
|
|
23
|
-
"react-dom": "^17.0.2"
|
|
25
|
+
"react-dom": "^17.0.2",
|
|
26
|
+
"classnames": "^2.3.1"
|
|
24
27
|
},
|
|
25
28
|
"devDependencies": {
|
|
26
29
|
"@ms-cloudpack/eslint-config-base": "*",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare type CloudpackStatus = 'unknown' | 'idle' | 'building' | 'success' | 'warning' | 'error' | 'cancelled';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBadge.types.js","sourceRoot":"","sources":["../../../src/components/StatusBadge/StatusBadge.types.ts"],"names":[],"mappings":""}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export function getStatusText(status) {
|
|
2
|
-
switch (status) {
|
|
3
|
-
case 'idle':
|
|
4
|
-
return 'Idle';
|
|
5
|
-
case 'building':
|
|
6
|
-
return 'Building';
|
|
7
|
-
case 'success':
|
|
8
|
-
return 'Success';
|
|
9
|
-
case 'warning':
|
|
10
|
-
return 'Warning';
|
|
11
|
-
case 'error':
|
|
12
|
-
return 'Error';
|
|
13
|
-
case 'cancelled':
|
|
14
|
-
return 'Cancelled';
|
|
15
|
-
default:
|
|
16
|
-
return 'Unknown';
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=getStatusText.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getStatusText.js","sourceRoot":"","sources":["../../../src/components/StatusBadge/getStatusText.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAAC,MAAuB;IACnD,QAAQ,MAAM,EAAE;QACd,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,OAAO;YACV,OAAO,OAAO,CAAC;QACjB,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QAErB;YACE,OAAO,SAAS,CAAC;KACpB;AACH,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
export interface CloudpackStatus {
|
|
3
|
-
status: 'building' | 'success' | 'error' | 'warning' | 'unknown';
|
|
4
|
-
pendingJobCount: number;
|
|
5
|
-
completeJobCount: number;
|
|
6
|
-
totalErrorCount: number;
|
|
7
|
-
totalWarningCount: number;
|
|
8
|
-
}
|
|
9
|
-
export declare const StatusContext: React.Context<CloudpackStatus>;
|
|
10
|
-
export declare function StatusProvider({ children }: {
|
|
11
|
-
children: any;
|
|
12
|
-
}): JSX.Element;
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { getCookies } from './getCookies.js';
|
|
3
|
-
const defaultStatus = {
|
|
4
|
-
status: 'unknown',
|
|
5
|
-
pendingJobCount: 0,
|
|
6
|
-
completeJobCount: 0,
|
|
7
|
-
totalErrorCount: 0,
|
|
8
|
-
totalWarningCount: 0,
|
|
9
|
-
};
|
|
10
|
-
export const StatusContext = React.createContext(defaultStatus);
|
|
11
|
-
export function StatusProvider({ children }) {
|
|
12
|
-
const [status, setStatus] = React.useState(defaultStatus);
|
|
13
|
-
React.useEffect(() => {
|
|
14
|
-
const cookies = getCookies();
|
|
15
|
-
const sessionId = cookies['cloudpack-session-id'];
|
|
16
|
-
const apiUrl = cookies['cloudpack-api-url'];
|
|
17
|
-
console.log(`StatusProvider: sessionId=${sessionId}, apiurl=${apiUrl}`);
|
|
18
|
-
if (sessionId && apiUrl) {
|
|
19
|
-
console.log('setting up socket');
|
|
20
|
-
const socket = new WebSocket(apiUrl);
|
|
21
|
-
socket.onopen = () => {
|
|
22
|
-
console.log('socket opened');
|
|
23
|
-
// Send a subscribe request for the session status.
|
|
24
|
-
socket.send(JSON.stringify({
|
|
25
|
-
type: 'subscribe',
|
|
26
|
-
data: {
|
|
27
|
-
path: [sessionId, 'status'],
|
|
28
|
-
},
|
|
29
|
-
}));
|
|
30
|
-
};
|
|
31
|
-
socket.onmessage = (result) => {
|
|
32
|
-
const response = JSON.parse(result.data);
|
|
33
|
-
switch (response.type) {
|
|
34
|
-
case 'notify':
|
|
35
|
-
setStatus(response.data);
|
|
36
|
-
break;
|
|
37
|
-
case 'reload':
|
|
38
|
-
window.location.reload();
|
|
39
|
-
break;
|
|
40
|
-
}
|
|
41
|
-
console.log('socket message', response);
|
|
42
|
-
};
|
|
43
|
-
return () => {
|
|
44
|
-
socket.close();
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
}, []);
|
|
48
|
-
return React.createElement(StatusContext.Provider, { value: status }, children);
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=StatusProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StatusProvider.js","sourceRoot":"","sources":["../../../src/components/StatusProvider/StatusProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAU7C,MAAM,aAAa,GAAoB;IACrC,MAAM,EAAE,SAAS;IACjB,eAAe,EAAE,CAAC;IAClB,gBAAgB,EAAE,CAAC;IACnB,eAAe,EAAE,CAAC;IAClB,iBAAiB,EAAE,CAAC;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAkB,aAAa,CAAC,CAAC;AAEjF,MAAM,UAAU,cAAc,CAAC,EAAE,QAAQ,EAAE;IACzC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAkB,aAAa,CAAC,CAAC;IAE3E,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAE5C,OAAO,CAAC,GAAG,CAAC,6BAA6B,SAAS,YAAY,MAAM,EAAE,CAAC,CAAC;QACxE,IAAI,SAAS,IAAI,MAAM,EAAE;YACvB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAEjC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;YAErC,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;gBACnB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBAE7B,mDAAmD;gBACnD,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,SAAS,CAAC;oBACb,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE;wBACJ,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;qBAC5B;iBACF,CAAC,CACH,CAAC;YACJ,CAAC,CAAC;YAEF,MAAM,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,EAAE;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAEzC,QAAQ,QAAQ,CAAC,IAAI,EAAE;oBACrB,KAAK,QAAQ;wBACX,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;wBACzB,MAAM;oBACR,KAAK,QAAQ;wBACX,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;wBACzB,MAAM;iBACT;gBAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAC1C,CAAC,CAAC;YAEF,OAAO,GAAG,EAAE;gBACV,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC,CAAC;SACH;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,oBAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,IAAG,QAAQ,CAA0B,CAAC;AACpF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getCookies.js","sourceRoot":"","sources":["../../../src/components/StatusProvider/getCookies.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU;IACxB,OAAO,QAAQ,CAAC,MAAM;SACnB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACxB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,CAAC;IACX,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const useStatus: () => import("./StatusProvider").CloudpackStatus;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useStatus.js","sourceRoot":"","sources":["../../../src/components/StatusProvider/useStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const useSessionId: () => string;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
const getSessionId = () => {
|
|
3
|
-
const cookies = document.cookie?.split(';').reduce((p, n) => {
|
|
4
|
-
const [id, value] = n.split('=');
|
|
5
|
-
p[id.trim()] = value;
|
|
6
|
-
return p;
|
|
7
|
-
}, {});
|
|
8
|
-
return cookies?.['cloudpack-session-id'];
|
|
9
|
-
};
|
|
10
|
-
export const useSessionId = () => {
|
|
11
|
-
const [sessionId] = React.useState(getSessionId());
|
|
12
|
-
return sessionId;
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=useSessionId.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useSessionId.js","sourceRoot":"","sources":["../../src/hooks/useSessionId.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,YAAY,GAAG,GAAG,EAAE;IACxB,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAyB,EAAE,CAAC,EAAE,EAAE;QAClF,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC;QACrB,OAAO,CAAC,CAAC;IACX,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,OAAO,EAAE,CAAC,sBAAsB,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;IAEnD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}
|