@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.
Files changed (65) hide show
  1. package/CHANGELOG.json +16 -1
  2. package/CHANGELOG.md +10 -2
  3. package/lib/components/CloudpackProvider/CloudpackProvider.d.ts +7 -0
  4. package/lib/components/CloudpackProvider/CloudpackProvider.js +9 -0
  5. package/lib/components/CloudpackProvider/CloudpackProvider.js.map +1 -0
  6. package/lib/components/CloudpackProvider/createCloudpackClient.d.ts +16 -0
  7. package/lib/components/CloudpackProvider/createCloudpackClient.js +119 -0
  8. package/lib/components/CloudpackProvider/createCloudpackClient.js.map +1 -0
  9. package/lib/components/{StatusProvider → CloudpackProvider}/getCookies.d.ts +3 -0
  10. package/lib/components/CloudpackProvider/getCookies.js +17 -0
  11. package/lib/components/CloudpackProvider/getCookies.js.map +1 -0
  12. package/lib/components/CloudpackProvider/useStatus.d.ts +9 -0
  13. package/lib/components/CloudpackProvider/useStatus.js +16 -0
  14. package/lib/components/CloudpackProvider/useStatus.js.map +1 -0
  15. package/lib/components/CloudpackProvider/useStatusDetails.d.ts +24 -0
  16. package/lib/components/CloudpackProvider/useStatusDetails.js +9 -0
  17. package/lib/components/CloudpackProvider/useStatusDetails.js.map +1 -0
  18. package/lib/components/StatusBadge/StatusBadge.d.ts +5 -1
  19. package/lib/components/StatusBadge/StatusBadge.js +52 -24
  20. package/lib/components/StatusBadge/StatusBadge.js.map +1 -1
  21. package/lib/components/StatusDialog/StatusDialog.d.ts +7 -0
  22. package/lib/components/StatusDialog/StatusDialog.js +21 -0
  23. package/lib/components/StatusDialog/StatusDialog.js.map +1 -0
  24. package/lib/components/StatusDialog/TaskList.d.ts +1 -0
  25. package/lib/components/StatusDialog/TaskList.js +26 -0
  26. package/lib/components/StatusDialog/TaskList.js.map +1 -0
  27. package/lib/components/StatusDialog/TaskResultItem.d.ts +7 -0
  28. package/lib/components/StatusDialog/TaskResultItem.js +32 -0
  29. package/lib/components/StatusDialog/TaskResultItem.js.map +1 -0
  30. package/lib/components/StatusDialog/TaskStatus.d.ts +5 -0
  31. package/lib/components/StatusDialog/TaskStatus.js +62 -0
  32. package/lib/components/StatusDialog/TaskStatus.js.map +1 -0
  33. package/lib/components/StatusOverlay/StatusOverlay.d.ts +1 -0
  34. package/lib/components/StatusOverlay/StatusOverlay.js +26 -0
  35. package/lib/components/StatusOverlay/StatusOverlay.js.map +1 -0
  36. package/lib/components/ThemeProvider/ThemeProvider.d.ts +2 -0
  37. package/lib/components/ThemeProvider/ThemeProvider.js +6 -0
  38. package/lib/components/ThemeProvider/ThemeProvider.js.map +1 -0
  39. package/lib/hooks/preferDarkTheme.d.ts +4 -0
  40. package/lib/hooks/preferDarkTheme.js +7 -0
  41. package/lib/hooks/preferDarkTheme.js.map +1 -0
  42. package/lib/hooks/useDraggable.d.ts +1 -1
  43. package/lib/hooks/useDraggable.js +38 -36
  44. package/lib/hooks/useDraggable.js.map +1 -1
  45. package/lib/index.js +6 -4
  46. package/lib/index.js.map +1 -1
  47. package/lib/tsdoc-metadata.json +1 -1
  48. package/package.json +5 -2
  49. package/lib/components/StatusBadge/StatusBadge.types.d.ts +0 -1
  50. package/lib/components/StatusBadge/StatusBadge.types.js +0 -2
  51. package/lib/components/StatusBadge/StatusBadge.types.js.map +0 -1
  52. package/lib/components/StatusBadge/getStatusText.d.ts +0 -2
  53. package/lib/components/StatusBadge/getStatusText.js +0 -19
  54. package/lib/components/StatusBadge/getStatusText.js.map +0 -1
  55. package/lib/components/StatusProvider/StatusProvider.d.ts +0 -12
  56. package/lib/components/StatusProvider/StatusProvider.js +0 -50
  57. package/lib/components/StatusProvider/StatusProvider.js.map +0 -1
  58. package/lib/components/StatusProvider/getCookies.js +0 -10
  59. package/lib/components/StatusProvider/getCookies.js.map +0 -1
  60. package/lib/components/StatusProvider/useStatus.d.ts +0 -1
  61. package/lib/components/StatusProvider/useStatus.js +0 -4
  62. package/lib/components/StatusProvider/useStatus.js.map +0 -1
  63. package/lib/hooks/useSessionId.d.ts +0 -1
  64. package/lib/hooks/useSessionId.js +0 -14
  65. 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": "Tue, 02 Aug 2022 19:53:43 GMT",
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 Tue, 02 Aug 2022 19:53:43 GMT and should not be manually modified.
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:43 GMT
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":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAgBvD,MAAM,UAAU,qBAAqB;IACnC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,GAAG,CAAC,WAAW,CAAC;QACd,IAAI,EAAE,EAAE;QACR,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YACvB,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAC5B,WAAW,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YACzB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;YAC9B,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC;YAC1B,WAAW,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3C,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,MAAM,SAAS,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC5C,8DAA8D;IAC9D,IAAI,MAA6B,CAAC;IAElC;;OAEG;IACH,SAAS,cAAc;QACrB,IAAI,MAAM,IAAI,SAAS,EAAE;YACvB,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;YAExC,SAAS,CAAC,MAAM,GAAG,GAAG,EAAE;gBACtB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBAC7B,MAAM,GAAG,SAAS,CAAC;gBACnB,MAAM,CAAC,SAAS,GAAG,iBAAiB,CAAC;gBACrC,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE;oBACpB,MAAM,GAAG,SAAS,CAAC;gBACrB,CAAC,CAAC;gBAEF,wCAAwC;gBACxC,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE;oBACtC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACtB;gBACD,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9B,CAAC,CAAC;SACH;IACH,CAAC;IAED;;OAEG;IACH,SAAS,OAAO;QACd,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,SAAS,CAAC;SACpB;IACH,CAAC;IAED;;OAEG;IACH,8DAA8D;IAC9D,SAAS,WAAW,CAAC,IAAY,EAAE,IAAS;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,IAAI,MAAM,EAAE;YACV,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;YAE3C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACtB;aAAM;YACL,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAChC;IACH,CAAC;IAED;;OAEG;IACH,8DAA8D;IAC9D,SAAS,iBAAiB,CAAC,OAAY;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE1C,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;QAC3C,QAAQ,QAAQ,CAAC,IAAI,EAAE;YACrB,KAAK,QAAQ,CAAC,CAAC;gBACb,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;gBAEhC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACxB,MAAM;aACP;YAED,KAAK,QAAQ,CAAC,CAAC;gBACb,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACzB,MAAM;aACP;SACF;IACH,CAAC;IAED;;OAEG;IACH,8DAA8D;IAC9D,SAAS,SAAS,CAAC,IAAc,EAAE,QAAgD;QACjF,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;QAEzC,OAAO,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,SAAS,QAAQ,CAAC,IAAc;QAC9B,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;QAEzC,OAAO,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IAED,SAAS,UAAU,CAAC,OAAiF;QACnG,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,SAAS,IAAI,CAAC,OAAoD;QAChE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,wBAAwB;IACxB,cAAc,EAAE,CAAC;IAEjB,yBAAyB;IACzB,OAAO;QACL,OAAO;QACP,QAAQ;QACR,IAAI;QACJ,UAAU;QACV,SAAS;KACV,CAAC;AACJ,CAAC"}
@@ -1 +1,4 @@
1
+ /**
2
+ * Gets the cookies dictionary from the browser.
3
+ */
1
4
  export declare function getCookies(): Record<string, string>;
@@ -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 +1,5 @@
1
- export declare function StatusBadge(): JSX.Element;
1
+ export interface StatusBadgeProps {
2
+ inline?: boolean;
3
+ onExpand?: () => void;
4
+ }
5
+ export declare function StatusBadge({ inline, onExpand }: StatusBadgeProps): JSX.Element | null;
@@ -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 { getStatusText } from './getStatusText';
6
- import { useStatus } from '../StatusProvider/useStatus';
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 { status, pendingJobCount, completeJobCount, totalErrorCount, totalWarningCount } = useStatus();
10
- useDraggable(rootElementRef);
11
- const statusString = [
12
- pendingJobCount ? `${pendingJobCount} pending` : undefined,
13
- completeJobCount ? `${completeJobCount} complete` : undefined,
14
- totalErrorCount ? `${totalErrorCount} errors` : undefined,
15
- totalWarningCount ? `${totalWarningCount} warnings` : undefined,
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,0BAA0B,CAAC;AACxD,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,MAAM,UAAU,WAAW;IACzB,MAAM,cAAc,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACpD,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,GAAG,SAAS,EAAE,CAAC;IACtG,YAAY,CAAC,cAAc,CAAC,CAAC;IAE7B,MAAM,YAAY,GAAG;QACnB,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,UAAU,CAAC,CAAC,CAAC,SAAS;QAC1D,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,WAAW,CAAC,CAAC,CAAC,SAAS;QAC7D,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,SAAS,CAAC,CAAC,CAAC,SAAS;QACzD,iBAAiB,CAAC,CAAC,CAAC,GAAG,iBAAiB,WAAW,CAAC,CAAC,CAAC,SAAS;KAChE;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,CACL,6BAAK,SAAS,EAAE,MAAM,CAAC,YAAY;QACjC,6BAAK,SAAS,EAAE,MAAM,CAAC,cAAc;YACnC,6BACE,GAAG,EAAE,cAAc,EACnB,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;oBAC1B,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,UAAU;oBACxC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,SAAS;oBACtC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO;oBAClC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,SAAS;iBACvC,CAAC;gBAEF,gCAAQ,SAAS,EAAE,MAAM,CAAC,MAAM;oBAC9B,6BAAK,SAAS,EAAE,MAAM,CAAC,KAAK,IAAG,aAAa,CAAC,MAAM,CAAC,CAAO,CACpD;gBACT,iCAAM,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAO;gBAC3D,gCAAQ,SAAS,EAAE,MAAM,CAAC,MAAM,UAAc,CAC1C,CACF,CACF,CACP,CAAC;AACJ,CAAC"}
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,5 @@
1
+ import { type TaskDescriptionType } from '../CloudpackProvider/useStatusDetails.js';
2
+ export interface TaskStatusProps {
3
+ task: TaskDescriptionType;
4
+ }
5
+ export declare function TaskStatus({ task }: TaskStatusProps): JSX.Element;
@@ -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,2 @@
1
+ import React from 'react';
2
+ export declare function ThemeProvider({ children }: React.ComponentProps<'div'>): JSX.Element;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import styles from './ThemeProvider.module.css';
3
+ export function ThemeProvider({ children }) {
4
+ return React.createElement("div", { className: styles.root }, children);
5
+ }
6
+ //# sourceMappingURL=ThemeProvider.js.map
@@ -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,4 @@
1
+ /**
2
+ * Returns true if a dark color scheme is preferred.
3
+ */
4
+ export declare function preferDarkTheme(): boolean;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Returns true if a dark color scheme is preferred.
3
+ */
4
+ export function preferDarkTheme() {
5
+ return window.matchMedia('(prefers-color-scheme: dark)').matches;
6
+ }
7
+ //# sourceMappingURL=preferDarkTheme.js.map
@@ -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(hostElement: RefObject<HTMLElement>, dragTargetElement?: RefObject<HTMLElement>): {
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(hostElement, dragTargetElement = hostElement) {
2
+ export function useDraggable(containerElementRef, dragElementRef = containerElementRef) {
3
3
  const [isDragging, setIsDragging] = useState(false);
4
4
  useEffect(() => {
5
- const moveTarget = hostElement.current;
6
- const dragTarget = hostElement.current || dragTargetElement.current;
7
- if (moveTarget && dragTarget) {
8
- let originalX = 0;
9
- let originalY = 0;
10
- let offset = { x: 0, y: 0 };
11
- const onPointerMove = (event) => {
12
- moveTarget.style.transform = `translate(${offset.x + event.clientX - originalX}px, ${offset.y + event.clientY - originalY}px)`;
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
- dragTarget.releasePointerCapture(event.pointerId);
21
- dragTarget.removeEventListener('pointerup', onPointerUp);
22
- dragTarget.removeEventListener('pointermove', onPointerMove);
23
- event.preventDefault();
24
- };
25
- const onPointerDown = (event) => {
26
- setIsDragging(true);
27
- originalX = event.clientX;
28
- originalY = event.clientY;
29
- dragTarget.setPointerCapture(event.pointerId);
30
- dragTarget.addEventListener('pointerup', onPointerUp);
31
- dragTarget.addEventListener('pointermove', onPointerMove);
32
- event.preventDefault();
33
- };
34
- dragTarget.addEventListener('pointerdown', onPointerDown);
35
- return () => {
36
- dragTarget.removeEventListener('pointerdown', onPointerDown);
37
- dragTarget.removeEventListener('pointermove', onPointerMove);
38
- dragTarget.removeEventListener('pointerup', onPointerUp);
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
- }, [hostElement, dragTargetElement]);
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,WAAmC,EAAE,iBAAiB,GAAG,WAAW;IAC/F,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC;QACvC,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC;QAEpE,IAAI,UAAU,IAAI,UAAU,EAAE;YAC5B,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,IAAI,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YAE5B,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAE,EAAE;gBAC5C,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;YACR,CAAC,CAAC;YAEF,MAAM,WAAW,GAAG,CAAC,KAAmB,EAAE,EAAE;gBAC1C,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM,GAAG;oBACP,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,SAAS;oBACvC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,SAAS;iBACxC,CAAC;gBAEF,UAAU,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAClD,UAAU,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;gBACzD,UAAU,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;gBAE7D,KAAK,CAAC,cAAc,EAAE,CAAC;YACzB,CAAC,CAAC;YAEF,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAE,EAAE;gBAC5C,aAAa,CAAC,IAAI,CAAC,CAAC;gBACpB,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;gBAC1B,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;gBAC1B,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC9C,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;gBACtD,UAAU,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;gBAC1D,KAAK,CAAC,cAAc,EAAE,CAAC;YACzB,CAAC,CAAC;YAEF,UAAU,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;YAE1D,OAAO,GAAG,EAAE;gBACV,UAAU,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;gBAC7D,UAAU,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;gBAC7D,UAAU,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAC3D,CAAC,CAAC;SACH;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAErC,OAAO;QACL,UAAU;KACX,CAAC;AACJ,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 { StatusBadge } from './components/StatusBadge/StatusBadge';
4
- import { StatusProvider } from './components/StatusProvider/StatusProvider';
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(StatusProvider, null,
7
- React.createElement(StatusBadge, null)), rootDiv);
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,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAE5E,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAE9C,QAAQ,CAAC,MAAM,CACb,oBAAC,cAAc;IACb,oBAAC,WAAW,OAAG,CACA,EACjB,OAAO,CACR,CAAC;AAEF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC"}
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"}
@@ -5,7 +5,7 @@
5
5
  "toolPackages": [
6
6
  {
7
7
  "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.28.7"
8
+ "packageVersion": "7.29.0"
9
9
  }
10
10
  ]
11
11
  }
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@ms-cloudpack/overlay",
3
- "version": "0.0.2",
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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=StatusBadge.types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StatusBadge.types.js","sourceRoot":"","sources":["../../../src/components/StatusBadge/StatusBadge.types.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- import type { CloudpackStatus } from './StatusBadge.types';
2
- export declare function getStatusText(status: CloudpackStatus): string;
@@ -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,10 +0,0 @@
1
- export function getCookies() {
2
- return document.cookie
3
- .split(';')
4
- .map((s) => s.split('='))
5
- .reduce((p, n) => {
6
- p[n[0].trim()] = decodeURIComponent(n[1]);
7
- return p;
8
- }, {});
9
- }
10
- //# sourceMappingURL=getCookies.js.map
@@ -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,4 +0,0 @@
1
- import { useContext } from 'react';
2
- import { StatusContext } from './StatusProvider';
3
- export const useStatus = () => useContext(StatusContext);
4
- //# sourceMappingURL=useStatus.js.map
@@ -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"}