@ms-cloudpack/overlay 0.19.6 → 0.19.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser-esm/240.chunk.js +1 -1
- package/dist/browser-esm/240.chunk.js.map +1 -1
- package/dist/browser-esm/621.chunk.js +2 -0
- package/dist/browser-esm/{173.chunk.js.map → 621.chunk.js.map} +1 -1
- package/dist/browser-esm/639.chunk.js +2 -0
- package/dist/browser-esm/639.chunk.js.map +1 -0
- package/dist/browser-esm/76.chunk.js +2 -0
- package/dist/browser-esm/76.chunk.js.map +1 -0
- package/dist/browser-esm/lib/constants.js +1 -1
- package/dist/browser-esm/lib/constants.js.map +1 -1
- package/dist/browser-esm/lib/index.js +1 -1
- package/dist/browser-esm/lib/index.js.map +1 -1
- package/dist/browser-esm/runtime.js +1 -1
- package/dist/browser-esm/runtime.js.map +1 -1
- package/lib/components/CloudpackProvider/useTaskList.d.ts +3 -0
- package/lib/components/CloudpackProvider/useTaskList.d.ts.map +1 -0
- package/lib/components/CloudpackProvider/{useStatusDetails.js → useTaskList.js} +5 -5
- package/lib/components/CloudpackProvider/useTaskList.js.map +1 -0
- package/lib/components/CloudpackProvider/useTaskStats.d.ts +3 -0
- package/lib/components/CloudpackProvider/useTaskStats.d.ts.map +1 -0
- package/lib/components/CloudpackProvider/{useStatus.js → useTaskStats.js} +11 -12
- package/lib/components/CloudpackProvider/useTaskStats.js.map +1 -0
- package/lib/components/Dialog/Dialog.d.ts.map +1 -1
- package/lib/components/Dialog/Dialog.js +9 -5
- package/lib/components/Dialog/Dialog.js.map +1 -1
- package/lib/components/Overlay/Overlay.d.ts.map +1 -1
- package/lib/components/Overlay/Overlay.js +14 -18
- package/lib/components/Overlay/Overlay.js.map +1 -1
- package/lib/components/StatusBadge/StatusBadge.d.ts +2 -1
- package/lib/components/StatusBadge/StatusBadge.d.ts.map +1 -1
- package/lib/components/StatusBadge/StatusBadge.js +22 -20
- package/lib/components/StatusBadge/StatusBadge.js.map +1 -1
- package/lib/components/StatusDialog/StatusDialog.d.ts.map +1 -1
- package/lib/components/StatusDialog/StatusDialog.js +6 -2
- package/lib/components/StatusDialog/StatusDialog.js.map +1 -1
- package/lib/components/StatusDialog/TaskList.d.ts.map +1 -1
- package/lib/components/StatusDialog/TaskList.js +3 -4
- package/lib/components/StatusDialog/TaskList.js.map +1 -1
- package/lib/constants.d.ts +4 -0
- package/lib/constants.d.ts.map +1 -1
- package/lib/constants.js +4 -0
- package/lib/constants.js.map +1 -1
- package/package.json +5 -3
- package/dist/browser-esm/132.chunk.js +0 -2
- package/dist/browser-esm/132.chunk.js.map +0 -1
- package/dist/browser-esm/173.chunk.js +0 -2
- package/dist/browser-esm/598.chunk.js +0 -2
- package/dist/browser-esm/598.chunk.js.map +0 -1
- package/lib/components/CloudpackProvider/useStatus.d.ts +0 -4
- package/lib/components/CloudpackProvider/useStatus.d.ts.map +0 -1
- package/lib/components/CloudpackProvider/useStatus.js.map +0 -1
- package/lib/components/CloudpackProvider/useStatusDetails.d.ts +0 -3
- package/lib/components/CloudpackProvider/useStatusDetails.d.ts.map +0 -1
- package/lib/components/CloudpackProvider/useStatusDetails.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e,r,t,o,n={},f={};function i(e){var r=f[e];if(void 0!==r)return r.exports;var t=f[e]={id:e,exports:{}};return n[e](t,t.exports,i),t.exports}i.m=n,i.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return i.d(r,{a:r}),r},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(t,o){if(1&o&&(t=this(t)),8&o)return t;if("object"==typeof t&&t){if(4&o&&t.__esModule)return t;if(16&o&&"function"==typeof t.then)return t}var n=Object.create(null);i.r(n);var f={};e=e||[null,r({}),r([]),r(r)];for(var u=2&o&&t;"object"==typeof u&&!~e.indexOf(u);u=r(u))Object.getOwnPropertyNames(u).forEach(
|
|
1
|
+
var e,r,t,o,n={},f={};function i(e){var r=f[e];if(void 0!==r)return r.exports;var t=f[e]={id:e,exports:{}};return n[e](t,t.exports,i),t.exports}i.m=n,i.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return i.d(r,{a:r}),r},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(t,o){if(1&o&&(t=this(t)),8&o)return t;if("object"==typeof t&&t){if(4&o&&t.__esModule)return t;if(16&o&&"function"==typeof t.then)return t}var n=Object.create(null);i.r(n);var f={};e=e||[null,r({}),r([]),r(r)];for(var u=2&o&&t;"object"==typeof u&&!~e.indexOf(u);u=r(u))Object.getOwnPropertyNames(u).forEach(e=>f[e]=()=>t[e]);return f.default=()=>t,i.d(n,f),n},i.d=(e,r)=>{for(var t in r)i.o(r,t)&&!i.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce((r,t)=>(i.f[t](e,r),r),[])),i.u=e=>e+".chunk.js",i.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};export default i;t={121:0},o=e=>{var r,o,{__webpack_ids__:n,__webpack_modules__:f,__webpack_runtime__:u}=e,a=0;for(r in f)i.o(f,r)&&(i.m[r]=f[r]);for(u&&u(i);a<n.length;a++)o=n[a],i.o(t,o)&&t[o]&&t[o][0](),t[n[a]]=0},i.f.j=(e,r)=>{var n=i.o(t,e)?t[e]:void 0;if(0!==n)if(n)r.push(n[1]);else if(121!=e){var f=import("./"+i.u(e)).then(o,r=>{throw 0!==t[e]&&(t[e]=void 0),r});f=Promise.race([f,new Promise(r=>n=t[e]=[r])]),r.push(n[1]=f)}else t[e]=0},i.C=o,i.nc=void 0;
|
|
2
2
|
//# sourceMappingURL=runtime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","mappings":"IACIA,EADAC,ECKAC,EAIAC,E,KCRAC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CACjDK,GAAIL,EAEJG,QAAS,CAAC,GAOX,OAHAG,EAAoBN,GAAUI,EAAQA,EAAOD,QAASJ,GAG/CK,EAAOD,OACf,CAGAJ,EAAoBQ,EAAID,ECxBxBP,EAAoBS,EAAKJ,IACxB,IAAIK,EAASL,GAAUA,EAAOM,WAC7B,IAAON,EAAiB,QACxB,IAAM,EAEP,OADAL,EAAoBY,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,
|
|
1
|
+
{"version":3,"file":"runtime.js","mappings":"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","sources":["webpack://@ms-cloudpack/overlay/webpack/runtime/create fake namespace object","webpack://@ms-cloudpack/overlay/webpack/runtime/import chunk loading","webpack://@ms-cloudpack/overlay/webpack/bootstrap","webpack://@ms-cloudpack/overlay/webpack/runtime/compat get default export","webpack://@ms-cloudpack/overlay/webpack/runtime/define property getters","webpack://@ms-cloudpack/overlay/webpack/runtime/ensure chunk","webpack://@ms-cloudpack/overlay/webpack/runtime/get javascript chunk filename","webpack://@ms-cloudpack/overlay/webpack/runtime/hasOwnProperty shorthand","webpack://@ms-cloudpack/overlay/webpack/runtime/make namespace object","webpack://@ms-cloudpack/overlay/webpack/runtime/export webpack runtime","webpack://@ms-cloudpack/overlay/webpack/runtime/nonce"],"sourcesContent":["var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t121: 0\n};\n\nvar installChunk = (data) => {\n\tvar {__webpack_ids__, __webpack_modules__, __webpack_runtime__} = data;\n\t// add \"modules\" to the modules object,\n\t// then flag all \"ids\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in __webpack_modules__) {\n\t\tif(__webpack_require__.o(__webpack_modules__, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = __webpack_modules__[moduleId];\n\t\t}\n\t}\n\tif(__webpack_runtime__) __webpack_runtime__(__webpack_require__);\n\tfor(;i < __webpack_ids__.length; i++) {\n\t\tchunkId = __webpack_ids__[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[__webpack_ids__[i]] = 0;\n\t}\n\n}\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// import() chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[1]);\n\t\t\t} else {\n\t\t\t\tif(121 != chunkId) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = import(\"./\" + __webpack_require__.u(chunkId)).then(installChunk, (e) => {\n\t\t\t\t\t\tif(installedChunks[chunkId] !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t});\n\t\t\t\t\tvar promise = Promise.race([promise, new Promise((resolve) => (installedChunkData = installedChunks[chunkId] = [resolve]))])\n\t\t\t\t\tpromises.push(installedChunkData[1] = promise);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n__webpack_require__.C = installChunk;\n\n// no on chunks loaded","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".chunk.js\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export default __webpack_require__;","__webpack_require__.nc = undefined;"],"names":["leafPrototypes","getProto","installedChunks","installChunk","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","__webpack_modules__","m","n","getter","__esModule","d","a","Object","getPrototypeOf","obj","t","value","mode","this","then","ns","create","r","def","current","indexOf","getOwnPropertyNames","forEach","key","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","keys","reduce","promises","u","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","data","__webpack_ids__","__webpack_runtime__","i","length","j","installedChunkData","push","promise","import","race","resolve","C","nc"],"sourceRoot":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTaskList.d.ts","sourceRoot":"","sources":["../../../src/components/CloudpackProvider/useTaskList.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAEjF,eAAO,MAAM,WAAW,QAAO,QAiB9B,CAAC"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { useEffect, useState } from 'preact/hooks';
|
|
2
2
|
import { useCloudpack } from './CloudpackProvider.js';
|
|
3
3
|
import { taskListSource } from '@ms-cloudpack/api-server/browser';
|
|
4
|
-
export const
|
|
4
|
+
export const useTaskList = () => {
|
|
5
5
|
const cloudpack = useCloudpack();
|
|
6
|
-
const [
|
|
6
|
+
const [taskList, setTaskList] = useState({ tasks: [] });
|
|
7
7
|
useEffect(() => {
|
|
8
8
|
const subscription = cloudpack?.onDataChanged.subscribe(taskListSource, {
|
|
9
9
|
onData: (data) => {
|
|
10
|
-
|
|
10
|
+
setTaskList(data);
|
|
11
11
|
},
|
|
12
12
|
});
|
|
13
13
|
return () => {
|
|
14
14
|
subscription.unsubscribe();
|
|
15
15
|
};
|
|
16
16
|
}, [cloudpack]);
|
|
17
|
-
return
|
|
17
|
+
return taskList;
|
|
18
18
|
};
|
|
19
|
-
//# sourceMappingURL=
|
|
19
|
+
//# sourceMappingURL=useTaskList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTaskList.js","sourceRoot":"","sources":["../../../src/components/CloudpackProvider/useTaskList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAiB,MAAM,kCAAkC,CAAC;AAEjF,MAAM,CAAC,MAAM,WAAW,GAAG,GAAa,EAAE;IACxC,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAW,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAElE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,YAAY,GAAG,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,cAAc,EAAE;YACtE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACf,WAAW,CAAC,IAAgB,CAAC,CAAC;YAChC,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,WAAW,EAAE,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC","sourcesContent":["import { useEffect, useState } from 'preact/hooks';\nimport { useCloudpack } from './CloudpackProvider.js';\nimport { taskListSource, type TaskList } from '@ms-cloudpack/api-server/browser';\n\nexport const useTaskList = (): TaskList => {\n const cloudpack = useCloudpack();\n const [taskList, setTaskList] = useState<TaskList>({ tasks: [] });\n\n useEffect(() => {\n const subscription = cloudpack?.onDataChanged.subscribe(taskListSource, {\n onData: (data) => {\n setTaskList(data as TaskList);\n },\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [cloudpack]);\n\n return taskList;\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTaskStats.d.ts","sourceRoot":"","sources":["../../../src/components/CloudpackProvider/useTaskStats.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAEnF,eAAO,MAAM,YAAY,QAAO,SAuB/B,CAAC"}
|
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
import { useEffect, useState } from 'preact/hooks';
|
|
2
2
|
import { useCloudpack } from './CloudpackProvider.js';
|
|
3
3
|
import { taskStatsSource } from '@ms-cloudpack/api-server/browser';
|
|
4
|
-
const
|
|
5
|
-
status: 'unknown',
|
|
6
|
-
remainingTasks: 0,
|
|
7
|
-
totalTasks: 0,
|
|
8
|
-
totalErrors: 0,
|
|
9
|
-
totalWarnings: 0,
|
|
10
|
-
};
|
|
11
|
-
export const useStatus = () => {
|
|
4
|
+
export const useTaskStats = () => {
|
|
12
5
|
const cloudpack = useCloudpack();
|
|
13
|
-
const [
|
|
6
|
+
const [stats, setStats] = useState({
|
|
7
|
+
status: 'unknown',
|
|
8
|
+
remainingTasks: 0,
|
|
9
|
+
totalTasks: 0,
|
|
10
|
+
totalErrors: 0,
|
|
11
|
+
totalWarnings: 0,
|
|
12
|
+
});
|
|
14
13
|
useEffect(() => {
|
|
15
14
|
const subscription = cloudpack?.onDataChanged.subscribe(taskStatsSource, {
|
|
16
15
|
onData: (data) => {
|
|
17
|
-
|
|
16
|
+
setStats(data);
|
|
18
17
|
},
|
|
19
18
|
});
|
|
20
19
|
return () => {
|
|
21
20
|
subscription.unsubscribe();
|
|
22
21
|
};
|
|
23
22
|
}, [cloudpack]);
|
|
24
|
-
return
|
|
23
|
+
return stats;
|
|
25
24
|
};
|
|
26
|
-
//# sourceMappingURL=
|
|
25
|
+
//# sourceMappingURL=useTaskStats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTaskStats.js","sourceRoot":"","sources":["../../../src/components/CloudpackProvider/useTaskStats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAkB,MAAM,kCAAkC,CAAC;AAEnF,MAAM,CAAC,MAAM,YAAY,GAAG,GAAc,EAAE;IAC1C,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAY;QAC5C,MAAM,EAAE,SAAS;QACjB,cAAc,EAAE,CAAC;QACjB,UAAU,EAAE,CAAC;QACb,WAAW,EAAE,CAAC;QACd,aAAa,EAAE,CAAC;KACjB,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,YAAY,GAAG,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,eAAe,EAAE;YACvE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACf,QAAQ,CAAC,IAAiB,CAAC,CAAC;YAC9B,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,WAAW,EAAE,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,KAAK,CAAC;AACf,CAAC,CAAC","sourcesContent":["import { useEffect, useState } from 'preact/hooks';\nimport { useCloudpack } from './CloudpackProvider.js';\nimport { taskStatsSource, type TaskStats } from '@ms-cloudpack/api-server/browser';\n\nexport const useTaskStats = (): TaskStats => {\n const cloudpack = useCloudpack();\n const [stats, setStats] = useState<TaskStats>({\n status: 'unknown',\n remainingTasks: 0,\n totalTasks: 0,\n totalErrors: 0,\n totalWarnings: 0,\n });\n\n useEffect(() => {\n const subscription = cloudpack?.onDataChanged.subscribe(taskStatsSource, {\n onData: (data) => {\n setStats(data as TaskStats);\n },\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [cloudpack]);\n\n return stats;\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../src/components/Dialog/Dialog.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../src/components/Dialog/Dialog.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAkB,MAAM,QAAQ,CAAC;AAanF,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAED,eAAO,MAAM,MAAM,EAAE,iBAAiB,CAAC,WAAW,CA6CjD,CAAC"}
|
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "preact/jsx-runtime";
|
|
2
2
|
import cx from 'classnames';
|
|
3
3
|
import { useRef } from 'preact/hooks';
|
|
4
|
+
import { FocusOn as _FocusOn } from 'react-focus-on';
|
|
4
5
|
import styles from './Dialog.module.css';
|
|
5
6
|
import { useDraggable } from '../../hooks/useDraggable.js';
|
|
6
7
|
import { Button } from '../Button/Button.js';
|
|
8
|
+
import { elementIds } from '../../constants.js';
|
|
9
|
+
// Re-type children for preact
|
|
10
|
+
const FocusOn = _FocusOn;
|
|
7
11
|
export const Dialog = (props) => {
|
|
8
12
|
const { title, id, style, draggable, onClose, commands, children } = props;
|
|
9
|
-
const
|
|
10
|
-
const
|
|
13
|
+
const dialogRootRef = useRef(null);
|
|
14
|
+
const titleRef = useRef(null);
|
|
11
15
|
useDraggable({
|
|
12
16
|
enabled: !!draggable,
|
|
13
|
-
containerElementRef:
|
|
14
|
-
dragElementRef:
|
|
17
|
+
containerElementRef: dialogRootRef,
|
|
18
|
+
dragElementRef: titleRef,
|
|
15
19
|
});
|
|
16
|
-
return (_jsx(
|
|
20
|
+
return (_jsx(FocusOn, { className: styles.overlay, onClickOutside: onClose, onEscapeKey: onClose, onActivation: () => titleRef.current?.focus(), children: _jsxs("div", { id: id, ref: dialogRootRef, class: cx(styles.dialog, style === 'error' && styles.error), role: "dialog", "aria-modal": true, "aria-labelledby": elementIds.dialogTitle, children: [_jsxs("div", { class: styles.titleArea, children: [_jsx("h2", { ref: titleRef, id: elementIds.dialogTitle, class: cx(styles.title, draggable && styles.draggable), tabIndex: -1, children: title }), onClose && (
|
|
17
21
|
// a close icon is common/universal enough that it doesn't need hover text
|
|
18
22
|
_jsx(Button, { variant: "iconOnly", iconName: "close", onClick: onClose, "aria-label": "Close" }))] }), commands && _jsx("div", { class: styles.commands, children: commands }), children] }) }));
|
|
19
23
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../../../src/components/Dialog/Dialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../../../src/components/Dialog/Dialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,8BAA8B;AAC9B,MAAM,OAAO,GAAG,QAEf,CAAC;AAYF,MAAM,CAAC,MAAM,MAAM,GAAmC,CAAC,KAAK,EAAE,EAAE;IAC9D,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3E,MAAM,aAAa,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAE9C,YAAY,CAAC;QACX,OAAO,EAAE,CAAC,CAAC,SAAS;QACpB,mBAAmB,EAAE,aAAa;QAClC,cAAc,EAAE,QAAQ;KACzB,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,OAAO,IACN,SAAS,EAAE,MAAM,CAAC,OAAO,EACzB,cAAc,EAAE,OAAO,EACvB,WAAW,EAAE,OAAO,EACpB,YAAY,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,YAE7C,eACE,EAAE,EAAE,EAAE,EACN,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,KAAK,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,EAC3D,IAAI,EAAC,QAAQ,yCAEI,UAAU,CAAC,WAAW,aAEvC,eAAK,KAAK,EAAE,MAAM,CAAC,SAAS,aAC1B,aACE,GAAG,EAAE,QAAQ,EACb,EAAE,EAAE,UAAU,CAAC,WAAW,EAC1B,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,EACtD,QAAQ,EAAE,CAAC,CAAC,YAEX,KAAK,GACH,EACJ,OAAO,IAAI;wBACV,0EAA0E;wBAC1E,KAAC,MAAM,IAAC,OAAO,EAAC,UAAU,EAAC,QAAQ,EAAC,OAAO,EAAC,OAAO,EAAE,OAAO,gBAAa,OAAO,GAAG,CACpF,IACG,EACL,QAAQ,IAAI,cAAK,KAAK,EAAE,MAAM,CAAC,QAAQ,YAAG,QAAQ,GAAO,EACzD,QAAQ,IACL,GACE,CACX,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import cx from 'classnames';\nimport type { ComponentChildren, FunctionComponent, ComponentProps } from 'preact';\nimport { useRef } from 'preact/hooks';\nimport { FocusOn as _FocusOn } from 'react-focus-on';\nimport styles from './Dialog.module.css';\nimport { useDraggable } from '../../hooks/useDraggable.js';\nimport { Button } from '../Button/Button.js';\nimport { elementIds } from '../../constants.js';\n\n// Re-type children for preact\nconst FocusOn = _FocusOn as FunctionComponent<\n Omit<ComponentProps<typeof _FocusOn>, 'children'> & { children: ComponentChildren }\n>;\n\nexport interface DialogProps {\n title: string;\n id: string;\n style?: 'default' | 'error';\n draggable?: boolean;\n onClose?: () => void;\n commands?: ComponentChildren;\n children: ComponentChildren;\n}\n\nexport const Dialog: FunctionComponent<DialogProps> = (props) => {\n const { title, id, style, draggable, onClose, commands, children } = props;\n const dialogRootRef = useRef<HTMLDivElement>(null);\n const titleRef = useRef<HTMLDivElement>(null);\n\n useDraggable({\n enabled: !!draggable,\n containerElementRef: dialogRootRef,\n dragElementRef: titleRef,\n });\n\n return (\n <FocusOn\n className={styles.overlay}\n onClickOutside={onClose}\n onEscapeKey={onClose}\n onActivation={() => titleRef.current?.focus()}\n >\n <div\n id={id}\n ref={dialogRootRef}\n class={cx(styles.dialog, style === 'error' && styles.error)}\n role=\"dialog\"\n aria-modal\n aria-labelledby={elementIds.dialogTitle}\n >\n <div class={styles.titleArea}>\n <h2\n ref={titleRef}\n id={elementIds.dialogTitle}\n class={cx(styles.title, draggable && styles.draggable)}\n tabIndex={-1}\n >\n {title}\n </h2>\n {onClose && (\n // a close icon is common/universal enough that it doesn't need hover text\n <Button variant=\"iconOnly\" iconName=\"close\" onClick={onClose} aria-label=\"Close\" />\n )}\n </div>\n {commands && <div class={styles.commands}>{commands}</div>}\n {children}\n </div>\n </FocusOn>\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Overlay.d.ts","sourceRoot":"","sources":["../../../src/components/Overlay/Overlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"Overlay.d.ts","sourceRoot":"","sources":["../../../src/components/Overlay/Overlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAYhD,eAAO,MAAM,OAAO,EAAE,iBA+BrB,CAAC"}
|
|
@@ -1,34 +1,30 @@
|
|
|
1
|
-
import { jsx as _jsx } from "preact/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "preact/jsx-runtime";
|
|
2
2
|
import { lazy, Suspense } from 'preact/compat';
|
|
3
|
-
import {
|
|
3
|
+
import { useState, useRef, useEffect } from 'preact/hooks';
|
|
4
4
|
import { StatusBadge } from '../StatusBadge/StatusBadge.js';
|
|
5
|
-
import {
|
|
5
|
+
import { useTaskStats } from '../CloudpackProvider/useTaskStats.js';
|
|
6
6
|
import { useErrorEvents } from '../ErrorDialog/useErrorEvents.js';
|
|
7
7
|
import { usePageLoadTimeReporter } from '../../hooks/usePageLoadTimeReporter.js';
|
|
8
8
|
const StatusDialog = lazy(() => import('../StatusDialog/StatusDialog.js'));
|
|
9
9
|
const ErrorDialog = lazy(() => import('../ErrorDialog/ErrorDialog.js'));
|
|
10
10
|
export const Overlay = () => {
|
|
11
11
|
const pageLoadTimeReport = usePageLoadTimeReporter();
|
|
12
|
-
const [
|
|
13
|
-
const
|
|
14
|
-
const
|
|
12
|
+
const [isDialogOpen, setIsDialogOpen] = useState(false);
|
|
13
|
+
const stats = useTaskStats();
|
|
14
|
+
const prevStats = useRef();
|
|
15
15
|
const { unsupported } = useErrorEvents();
|
|
16
16
|
// If we haven't set a specific state and we become idle,
|
|
17
17
|
// pop open the details if there are errors.
|
|
18
18
|
useEffect(() => {
|
|
19
|
-
if (!
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
(
|
|
23
|
-
|
|
19
|
+
if (!isDialogOpen &&
|
|
20
|
+
prevStats.current?.status !== 'idle' &&
|
|
21
|
+
stats.status === 'idle' &&
|
|
22
|
+
(prevStats.current?.totalErrors || 0) !== (stats.totalErrors || 0)) {
|
|
23
|
+
setIsDialogOpen(true);
|
|
24
24
|
}
|
|
25
|
-
|
|
26
|
-
}, [
|
|
27
|
-
const
|
|
28
|
-
console.log(`Toggling minimized state to ${!isExpanded}`);
|
|
29
|
-
setIsExpanded(!isExpanded);
|
|
30
|
-
}, [isExpanded]);
|
|
31
|
-
const result = unsupported.length ? (_jsx(ErrorDialog, { unsupported: unsupported })) : isExpanded ? (_jsx(StatusDialog, { onClose: toggleMinimized })) : (_jsx(StatusBadge, { onExpand: toggleMinimized, pageLoadTimeReport: pageLoadTimeReport }));
|
|
25
|
+
prevStats.current = stats;
|
|
26
|
+
}, [stats, isDialogOpen]);
|
|
27
|
+
const result = unsupported.length ? (_jsx(ErrorDialog, { unsupported: unsupported })) : (_jsxs(_Fragment, { children: [isDialogOpen && _jsx(StatusDialog, { onClose: () => setIsDialogOpen(false) }), _jsx(StatusBadge, { onOpenDialog: () => setIsDialogOpen(true), pageLoadTimeReport: pageLoadTimeReport })] }));
|
|
32
28
|
return _jsx(Suspense, { fallback: null, children: result });
|
|
33
29
|
};
|
|
34
30
|
//# sourceMappingURL=Overlay.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Overlay.js","sourceRoot":"","sources":["../../../src/components/Overlay/Overlay.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Overlay.js","sourceRoot":"","sources":["../../../src/components/Overlay/Overlay.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAGjF,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;AAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC;AAExE,MAAM,CAAC,MAAM,OAAO,GAAsB,GAAG,EAAE;IAC7C,MAAM,kBAAkB,GAAG,uBAAuB,EAAE,CAAC;IACrD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,MAAM,EAAyB,CAAC;IAClD,MAAM,EAAE,WAAW,EAAE,GAAG,cAAc,EAAE,CAAC;IAEzC,yDAAyD;IACzD,4CAA4C;IAC5C,SAAS,CAAC,GAAG,EAAE;QACb,IACE,CAAC,YAAY;YACb,SAAS,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM;YACpC,KAAK,CAAC,MAAM,KAAK,MAAM;YACvB,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,EAClE,CAAC;YACD,eAAe,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QACD,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;IAC5B,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IAE1B,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAClC,KAAC,WAAW,IAAC,WAAW,EAAE,WAAW,GAAI,CAC1C,CAAC,CAAC,CAAC,CACF,8BACG,YAAY,IAAI,KAAC,YAAY,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,GAAI,EACxE,KAAC,WAAW,IAAC,YAAY,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,kBAAkB,EAAE,kBAAkB,GAAI,IACjG,CACJ,CAAC;IAEF,OAAO,KAAC,QAAQ,IAAC,QAAQ,EAAE,IAAI,YAAG,MAAM,GAAY,CAAC;AACvD,CAAC,CAAC","sourcesContent":["import type { FunctionComponent } from 'preact';\nimport { lazy, Suspense } from 'preact/compat';\nimport { useState, useRef, useEffect } from 'preact/hooks';\nimport { StatusBadge } from '../StatusBadge/StatusBadge.js';\nimport { useTaskStats } from '../CloudpackProvider/useTaskStats.js';\nimport { useErrorEvents } from '../ErrorDialog/useErrorEvents.js';\nimport { usePageLoadTimeReporter } from '../../hooks/usePageLoadTimeReporter.js';\nimport type { TaskStats } from '@ms-cloudpack/api-server/browser';\n\nconst StatusDialog = lazy(() => import('../StatusDialog/StatusDialog.js'));\nconst ErrorDialog = lazy(() => import('../ErrorDialog/ErrorDialog.js'));\n\nexport const Overlay: FunctionComponent = () => {\n const pageLoadTimeReport = usePageLoadTimeReporter();\n const [isDialogOpen, setIsDialogOpen] = useState<boolean>(false);\n const stats = useTaskStats();\n const prevStats = useRef<TaskStats | undefined>();\n const { unsupported } = useErrorEvents();\n\n // If we haven't set a specific state and we become idle,\n // pop open the details if there are errors.\n useEffect(() => {\n if (\n !isDialogOpen &&\n prevStats.current?.status !== 'idle' &&\n stats.status === 'idle' &&\n (prevStats.current?.totalErrors || 0) !== (stats.totalErrors || 0)\n ) {\n setIsDialogOpen(true);\n }\n prevStats.current = stats;\n }, [stats, isDialogOpen]);\n\n const result = unsupported.length ? (\n <ErrorDialog unsupported={unsupported} />\n ) : (\n <>\n {isDialogOpen && <StatusDialog onClose={() => setIsDialogOpen(false)} />}\n <StatusBadge onOpenDialog={() => setIsDialogOpen(true)} pageLoadTimeReport={pageLoadTimeReport} />\n </>\n );\n\n return <Suspense fallback={null}>{result}</Suspense>;\n};\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { FunctionComponent } from 'preact';
|
|
2
2
|
import type { PageLoadTimeReport } from '../../hooks/usePageLoadTimeReporter.js';
|
|
3
3
|
export interface StatusBadgeProps {
|
|
4
|
-
|
|
4
|
+
/** Callback when the dialog is opened */
|
|
5
|
+
onOpenDialog: () => void;
|
|
5
6
|
pageLoadTimeReport: PageLoadTimeReport;
|
|
6
7
|
}
|
|
7
8
|
export declare const StatusBadge: FunctionComponent<StatusBadgeProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBadge.d.ts","sourceRoot":"","sources":["../../../src/components/StatusBadge/StatusBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"StatusBadge.d.ts","sourceRoot":"","sources":["../../../src/components/StatusBadge/StatusBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAQhD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAGjF,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,kBAAkB,EAAE,kBAAkB,CAAC;CACxC;AAQD,eAAO,MAAM,WAAW,EAAE,iBAAiB,CAAC,gBAAgB,CAwE3D,CAAC"}
|
|
@@ -3,49 +3,51 @@ import { useCallback, useRef, useState } from 'preact/hooks';
|
|
|
3
3
|
import { useDraggable } from '../../hooks/useDraggable.js';
|
|
4
4
|
import styles from './StatusBadge.module.css';
|
|
5
5
|
import cx from 'classnames';
|
|
6
|
-
import { useStatus } from '../CloudpackProvider/useStatus.js';
|
|
7
|
-
import { elementIds } from '../../constants.js';
|
|
8
6
|
import { Button } from '../Button/Button.js';
|
|
7
|
+
import { useTaskStats } from '../CloudpackProvider/useTaskStats.js';
|
|
8
|
+
import { elementIds } from '../../constants.js';
|
|
9
9
|
const badgeStatusKey = 'cloudpack.badgeStatus';
|
|
10
10
|
const leftChevron = '\u00AB';
|
|
11
11
|
const rightChevron = '\u00BB';
|
|
12
12
|
const buttonHint = '(see details)';
|
|
13
13
|
const buttonHelp = 'Show bundle result details';
|
|
14
|
-
export const StatusBadge = ({
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const [
|
|
19
|
-
const shouldRender =
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
14
|
+
export const StatusBadge = ({ onOpenDialog, pageLoadTimeReport }) => {
|
|
15
|
+
const badgeRootRef = useRef(null);
|
|
16
|
+
const gripRef = useRef(null);
|
|
17
|
+
const stats = useTaskStats();
|
|
18
|
+
const [isBadgeCollapsed, setIsBadgeCollapsed] = useState(!!localStorage.getItem(badgeStatusKey));
|
|
19
|
+
const shouldRender = stats.status !== 'unknown';
|
|
20
|
+
const toggleBadgeCollapsed = useCallback(() => {
|
|
21
|
+
setIsBadgeCollapsed((prev) => {
|
|
22
|
+
const newCollapsedState = !prev;
|
|
23
|
+
localStorage.setItem(badgeStatusKey, newCollapsedState ? 'collapsed' : '');
|
|
24
|
+
return newCollapsedState;
|
|
25
|
+
});
|
|
26
|
+
}, []);
|
|
25
27
|
useDraggable({
|
|
26
28
|
// If we're not yet able to render, don't enable dragging yet.
|
|
27
29
|
// Otherwise the event handlers won't be attached when the component renders.
|
|
28
30
|
enabled: shouldRender,
|
|
29
|
-
containerElementRef:
|
|
30
|
-
dragElementRef,
|
|
31
|
+
containerElementRef: badgeRootRef,
|
|
32
|
+
dragElementRef: gripRef,
|
|
31
33
|
});
|
|
32
34
|
if (!shouldRender) {
|
|
33
35
|
return null;
|
|
34
36
|
}
|
|
35
|
-
const { buttonStatusText, statusClass, statsText } =
|
|
37
|
+
const { buttonStatusText, statusClass, statsText } = processStats(stats, pageLoadTimeReport);
|
|
36
38
|
// WARNING: If you change this text, also update the `name` used to find the button in
|
|
37
39
|
// apps/test-start-e2e/src/utilities/verifyOverlay.ts
|
|
38
40
|
const buttonText = 'Cloudpack: ' + buttonStatusText;
|
|
39
41
|
const buttonAriaLabel = `${buttonText.replace(buttonHint, '')}. ${buttonHelp}`;
|
|
40
|
-
const collapseButtonText =
|
|
41
|
-
const badge = (_jsxs("div", { id: elementIds.statusBadgeRoot, ref:
|
|
42
|
+
const collapseButtonText = isBadgeCollapsed ? 'Expand Cloudpack badge' : 'Collapse';
|
|
43
|
+
const badge = (_jsxs("div", { id: elementIds.statusBadgeRoot, ref: badgeRootRef, class: cx(styles.badge, isBadgeCollapsed && styles.collapsed, statusClass), children: [_jsxs("div", { ref: gripRef, class: styles.gripArea, "aria-hidden": true, children: [_jsx("div", { class: styles.grip }), _jsx("div", { class: styles.grip })] }), _jsx(Button, { variant: "custom", class: styles.button, onClick: onOpenDialog, title: buttonHelp, "aria-label": buttonAriaLabel, children: _jsx("div", { class: styles.buttonText, children: buttonText }) }), _jsx("div", { children: statsText }), _jsx(Button, { variant: "custom", class: cx(styles.button, styles.chevron), onClick: toggleBadgeCollapsed, title: collapseButtonText, "aria-label": collapseButtonText, children: isBadgeCollapsed ? leftChevron : rightChevron })] }));
|
|
42
44
|
return (_jsx("div", { class: styles.fixedOverlay, children: _jsx("div", { class: styles.contentSurface, children: badge }) }));
|
|
43
45
|
};
|
|
44
46
|
/**
|
|
45
47
|
* Based on the status, get the badge color, button text, and stats text.
|
|
46
48
|
*/
|
|
47
|
-
function
|
|
48
|
-
const { status, totalTasks, remainingTasks, totalErrors, totalWarnings } =
|
|
49
|
+
function processStats(stats, pltReport) {
|
|
50
|
+
const { status, totalTasks, remainingTasks, totalErrors, totalWarnings } = stats;
|
|
49
51
|
let statusClass;
|
|
50
52
|
let buttonStatusText;
|
|
51
53
|
let statsText = '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBadge.js","sourceRoot":"","sources":["../../../src/components/StatusBadge/StatusBadge.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"StatusBadge.js","sourceRoot":"","sources":["../../../src/components/StatusBadge/StatusBadge.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { FunctionComponent } from 'preact';\nimport { useCallback, useRef, useState } from 'preact/hooks';\nimport { useDraggable } from '../../hooks/useDraggable.js';\nimport styles from './StatusBadge.module.css';\nimport cx from 'classnames';\nimport { Button } from '../Button/Button.js';\nimport { useTaskStats } from '../CloudpackProvider/useTaskStats.js';\nimport { elementIds } from '../../constants.js';\nimport type { PageLoadTimeReport } from '../../hooks/usePageLoadTimeReporter.js';\nimport type { TaskStats } from '@ms-cloudpack/api-server/browser';\n\nexport interface StatusBadgeProps {\n /** Callback when the dialog is opened */\n onOpenDialog: () => void;\n pageLoadTimeReport: PageLoadTimeReport;\n}\n\nconst badgeStatusKey = 'cloudpack.badgeStatus';\nconst leftChevron = '\\u00AB';\nconst rightChevron = '\\u00BB';\nconst buttonHint = '(see details)';\nconst buttonHelp = 'Show bundle result details';\n\nexport const StatusBadge: FunctionComponent<StatusBadgeProps> = ({ onOpenDialog, pageLoadTimeReport }) => {\n const badgeRootRef = useRef<HTMLDivElement>(null);\n const gripRef = useRef<HTMLDivElement>(null);\n const stats = useTaskStats();\n const [isBadgeCollapsed, setIsBadgeCollapsed] = useState<boolean>(!!localStorage.getItem(badgeStatusKey));\n\n const shouldRender = stats.status !== 'unknown';\n\n const toggleBadgeCollapsed = useCallback(() => {\n setIsBadgeCollapsed((prev) => {\n const newCollapsedState = !prev;\n localStorage.setItem(badgeStatusKey, newCollapsedState ? 'collapsed' : '');\n return newCollapsedState;\n });\n }, []);\n\n useDraggable({\n // If we're not yet able to render, don't enable dragging yet.\n // Otherwise the event handlers won't be attached when the component renders.\n enabled: shouldRender,\n containerElementRef: badgeRootRef,\n dragElementRef: gripRef,\n });\n\n if (!shouldRender) {\n return null;\n }\n\n const { buttonStatusText, statusClass, statsText } = processStats(stats, pageLoadTimeReport);\n // WARNING: If you change this text, also update the `name` used to find the button in\n // apps/test-start-e2e/src/utilities/verifyOverlay.ts\n const buttonText = 'Cloudpack: ' + buttonStatusText;\n const buttonAriaLabel = `${buttonText.replace(buttonHint, '')}. ${buttonHelp}`;\n const collapseButtonText = isBadgeCollapsed ? 'Expand Cloudpack badge' : 'Collapse';\n\n const badge = (\n <div\n id={elementIds.statusBadgeRoot}\n ref={badgeRootRef}\n class={cx(styles.badge, isBadgeCollapsed && styles.collapsed, statusClass)}\n >\n <div ref={gripRef} class={styles.gripArea} aria-hidden>\n <div class={styles.grip} />\n <div class={styles.grip} />\n </div>\n <Button\n variant=\"custom\"\n class={styles.button}\n onClick={onOpenDialog}\n title={buttonHelp}\n aria-label={buttonAriaLabel}\n >\n <div class={styles.buttonText}>{buttonText}</div>\n </Button>\n <div>{statsText}</div>\n <Button\n variant=\"custom\"\n class={cx(styles.button, styles.chevron)}\n onClick={toggleBadgeCollapsed}\n title={collapseButtonText}\n aria-label={collapseButtonText}\n >\n {isBadgeCollapsed ? leftChevron : rightChevron}\n </Button>\n </div>\n );\n\n return (\n <div class={styles.fixedOverlay}>\n <div class={styles.contentSurface}>{badge}</div>\n </div>\n );\n};\n\n/**\n * Based on the status, get the badge color, button text, and stats text.\n */\nfunction processStats(\n stats: TaskStats,\n pltReport: PageLoadTimeReport,\n): {\n /** class (color) for the badge root */\n statusClass: string | undefined;\n /** short status text for the button to open the overlay */\n buttonStatusText: string;\n /** stats to display after the button, like \"50% completed, 2 errors, 3 warnings in 500ms\" */\n statsText: string;\n} {\n const { status, totalTasks, remainingTasks, totalErrors, totalWarnings } = stats;\n\n let statusClass: string | undefined;\n let buttonStatusText: string;\n let statsText = '';\n\n if (status === 'idle' && totalTasks) {\n [statusClass, buttonStatusText] = totalErrors\n ? [styles.error, `errors ${buttonHint}`]\n : totalWarnings\n ? [styles.warning, `warnings ${buttonHint}`]\n : [styles.success, 'success'];\n } else {\n // no styling for this case\n buttonStatusText = status === 'pending' ? 'bundling...' : 'idle';\n }\n\n if (totalTasks) {\n // \"Number of tasks\" is likely not a meaningful metric for users (and doesn't strictly correspond to\n // number of packages), so just show either estimated percentage or \"completed\" plus any issue counts.\n const taskStats = [\n remainingTasks === 0\n ? 'completed'\n : `${(((totalTasks - remainingTasks) / totalTasks) * 100).toFixed(1)}% completed`,\n totalErrors && `${totalErrors} error${totalErrors > 1 ? 's' : ''}`,\n totalWarnings && `${totalWarnings} warning${totalWarnings > 1 ? 's' : ''}`,\n ]\n .filter(Boolean)\n .join(', ');\n\n const pltStat = pltReport.status === 'success' ? ` in ${Math.round(pltReport.pageLoadTime) ?? '??'}ms` : '';\n\n statsText = taskStats + pltStat;\n }\n\n return { statusClass, buttonStatusText, statsText };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusDialog.d.ts","sourceRoot":"","sources":["../../../src/components/StatusDialog/StatusDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAShD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,eAAO,MAAM,YAAY,EAAE,iBAAiB,CAAC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"StatusDialog.d.ts","sourceRoot":"","sources":["../../../src/components/StatusDialog/StatusDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAShD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,eAAO,MAAM,YAAY,EAAE,iBAAiB,CAAC,iBAAiB,CA0C7D,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -10,13 +10,17 @@ export const StatusDialog = ({ onClose }) => {
|
|
|
10
10
|
const cloudpack = useCloudpack();
|
|
11
11
|
const [searchFilter, setSearchFilter] = useState('');
|
|
12
12
|
const [issuesOnly, setIssuesOnly] = useState(false);
|
|
13
|
+
const [isRestarting, setIsRestarting] = useState(false);
|
|
13
14
|
const handleSearchChange = useCallback((event) => {
|
|
14
15
|
event.preventDefault();
|
|
15
16
|
setSearchFilter(event.target.value);
|
|
16
17
|
}, []);
|
|
17
|
-
const restartAllTasks = () =>
|
|
18
|
+
const restartAllTasks = () => {
|
|
19
|
+
setIsRestarting(true);
|
|
20
|
+
void cloudpack.restartAllTasks.mutate();
|
|
21
|
+
};
|
|
18
22
|
const toggleIssuesOnly = () => void setIssuesOnly((value) => !value);
|
|
19
|
-
return (_jsx(Dialog, { title: "Cloudpack bundle results", id: elementIds.statusDialogRoot, draggable: true, onClose: onClose, commands: _jsxs(_Fragment, { children: [_jsx(Button, { variant: "primary", iconName: "refresh", onClick: restartAllTasks, children: "Re-bundle all packages" }), _jsx(Button, { onClick: toggleIssuesOnly, children: issuesOnly ? 'Show all packages' : 'Show packages with issues' }), _jsx(Searchbox, { value: searchFilter, onInput: handleSearchChange, style: { marginLeft: 'auto' } })] }), children: _jsx(TaskList, { searchFilter: searchFilter, issuesOnly: issuesOnly }) }));
|
|
23
|
+
return (_jsx(Dialog, { title: "Cloudpack bundle results", id: elementIds.statusDialogRoot, draggable: true, onClose: onClose, commands: _jsxs(_Fragment, { children: [_jsx(Button, { variant: "primary", iconName: "refresh", onClick: restartAllTasks, disabled: isRestarting, children: "Re-bundle all packages" }), _jsx(Button, { onClick: toggleIssuesOnly, children: issuesOnly ? 'Show all packages' : 'Show packages with issues' }), _jsx(Searchbox, { value: searchFilter, onInput: handleSearchChange, style: { marginLeft: 'auto' } })] }), children: _jsx(TaskList, { searchFilter: searchFilter, issuesOnly: issuesOnly }) }));
|
|
20
24
|
};
|
|
21
25
|
export default StatusDialog;
|
|
22
26
|
//# sourceMappingURL=StatusDialog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusDialog.js","sourceRoot":"","sources":["../../../src/components/StatusDialog/StatusDialog.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMhD,MAAM,CAAC,MAAM,YAAY,GAAyC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IAChF,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"StatusDialog.js","sourceRoot":"","sources":["../../../src/components/StatusDialog/StatusDialog.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMhD,MAAM,CAAC,MAAM,YAAY,GAAyC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IAChF,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExD,MAAM,kBAAkB,GAAG,WAAW,CAA4B,CAAC,KAAK,EAAE,EAAE;QAC1E,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,eAAe,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,eAAe,CAAC,IAAI,CAAC,CAAC;QACtB,KAAK,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;IAC1C,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,KAAK,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IAErE,OAAO,CACL,KAAC,MAAM,IACL,KAAK,EAAC,0BAA0B,EAChC,EAAE,EAAE,UAAU,CAAC,gBAAgB,EAC/B,SAAS,QACT,OAAO,EAAE,OAAO,EAChB,QAAQ,EACN,8BAKE,KAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,QAAQ,EAAC,SAAS,EAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,uCAEpF,EACT,KAAC,MAAM,IAAC,OAAO,EAAE,gBAAgB,YAAG,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,2BAA2B,GAAU,EAE5G,KAAC,SAAS,IAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,GAAI,IAC7F,YAGL,KAAC,QAAQ,IAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,GAAI,GACzD,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["import type { FunctionComponent } from 'preact';\nimport { useCallback, useState } from 'preact/hooks';\nimport { TaskList } from './TaskList.js';\nimport { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';\nimport { Button } from '../Button/Button.js';\nimport { Dialog } from '../Dialog/Dialog.js';\nimport { Searchbox, type SearchboxProps } from './Searchbox.js';\nimport { elementIds } from '../../constants.js';\n\nexport interface StatusDialogProps {\n onClose: () => void;\n}\n\nexport const StatusDialog: FunctionComponent<StatusDialogProps> = ({ onClose }) => {\n const cloudpack = useCloudpack();\n const [searchFilter, setSearchFilter] = useState('');\n const [issuesOnly, setIssuesOnly] = useState(false);\n const [isRestarting, setIsRestarting] = useState(false);\n\n const handleSearchChange = useCallback<SearchboxProps['onInput']>((event) => {\n event.preventDefault();\n setSearchFilter((event.target as HTMLInputElement).value);\n }, []);\n\n const restartAllTasks = () => {\n setIsRestarting(true);\n void cloudpack.restartAllTasks.mutate();\n };\n\n const toggleIssuesOnly = () => void setIssuesOnly((value) => !value);\n\n return (\n <Dialog\n title=\"Cloudpack bundle results\"\n id={elementIds.statusDialogRoot}\n draggable\n onClose={onClose}\n commands={\n <>\n {/* Disable the button after it's clicked since the operation may take awhile, and the\n page will refresh when finished.\n TODO: ideally we'd have a spinner while restarting (this could probably be done by\n animating the refresh icon) */}\n <Button variant=\"primary\" iconName=\"refresh\" onClick={restartAllTasks} disabled={isRestarting}>\n Re-bundle all packages\n </Button>\n <Button onClick={toggleIssuesOnly}>{issuesOnly ? 'Show all packages' : 'Show packages with issues'}</Button>\n {/* Align the search box to the right */}\n <Searchbox value={searchFilter} onInput={handleSearchChange} style={{ marginLeft: 'auto' }} />\n </>\n }\n >\n <TaskList searchFilter={searchFilter} issuesOnly={issuesOnly} />\n </Dialog>\n );\n};\n\nexport default StatusDialog;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskList.d.ts","sourceRoot":"","sources":["../../../src/components/StatusDialog/TaskList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAMhD,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,QAAQ,EAAE,iBAAiB,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"TaskList.d.ts","sourceRoot":"","sources":["../../../src/components/StatusDialog/TaskList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAMhD,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,QAAQ,EAAE,iBAAiB,CAAC,aAAa,CAmBrD,CAAC"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx } from "preact/jsx-runtime";
|
|
2
2
|
import { TaskStatus } from './TaskStatus.js';
|
|
3
|
-
import {
|
|
3
|
+
import { useTaskList } from '../CloudpackProvider/useTaskList.js';
|
|
4
4
|
import styles from './TaskList.module.css';
|
|
5
5
|
export const TaskList = ({ searchFilter, issuesOnly }) => {
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
let filteredTasks = tasks;
|
|
6
|
+
const taskList = useTaskList();
|
|
7
|
+
let filteredTasks = [...taskList.tasks].sort(sortTasks);
|
|
9
8
|
if (searchFilter) {
|
|
10
9
|
searchFilter = searchFilter.toLowerCase();
|
|
11
10
|
filteredTasks = filteredTasks.filter(({ name }) => searchFilter && name?.toLowerCase().includes(searchFilter));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskList.js","sourceRoot":"","sources":["../../../src/components/StatusDialog/TaskList.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"TaskList.js","sourceRoot":"","sources":["../../../src/components/StatusDialog/TaskList.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAQ3C,MAAM,CAAC,MAAM,QAAQ,GAAqC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE;IACzF,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,IAAI,aAAa,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxD,IAAI,YAAY,EAAE,CAAC;QACjB,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;QAC1C,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,YAAY,IAAI,IAAI,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IACjH,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrG,CAAC;IAED,OAAO,CACL,cAAK,KAAK,EAAE,MAAM,CAAC,IAAI,YACpB,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAClC,KAAC,UAAU,IAAiB,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,IAAnC,IAAI,CAAC,IAAI,CAA8B,CACzD,CAAC,GACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,SAAS,SAAS,CAAC,CAAkB,EAAE,CAAkB;IACvD,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,CAAC;QACxB,OAAO,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;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,CAAC;QACxB,OAAO,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACjD,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;SAAM,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,CAAC,CAAC;IACX,CAAC;SAAM,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC","sourcesContent":["import type { FunctionComponent } from 'preact';\nimport { TaskStatus } from './TaskStatus.js';\nimport { useTaskList } from '../CloudpackProvider/useTaskList.js';\nimport styles from './TaskList.module.css';\nimport type { TaskDescription } from '@ms-cloudpack/api-server/browser';\n\nexport interface TaskListProps {\n searchFilter?: string;\n issuesOnly?: boolean;\n}\n\nexport const TaskList: FunctionComponent<TaskListProps> = ({ searchFilter, issuesOnly }) => {\n const taskList = useTaskList();\n\n let filteredTasks = [...taskList.tasks].sort(sortTasks);\n if (searchFilter) {\n searchFilter = searchFilter.toLowerCase();\n filteredTasks = filteredTasks.filter(({ name }) => searchFilter && name?.toLowerCase().includes(searchFilter));\n }\n if (issuesOnly) {\n filteredTasks = filteredTasks.filter(({ errors, warnings }) => errors?.length || warnings?.length);\n }\n\n return (\n <div class={styles.root}>\n {filteredTasks.map((task, index) => (\n <TaskStatus key={task.name} index={index} task={task} />\n ))}\n </div>\n );\n};\n\n/**\n * Really the server should be sorting. Get stuff out of the browser.\n */\nfunction sortTasks(a: TaskDescription, b: TaskDescription): number {\n const aStatus = a.status === 'pending' ? 1 : 0;\n const bStatus = b.status === 'pending' ? 1 : 0;\n\n if (aStatus !== bStatus) {\n return aStatus > bStatus ? -1 : 1;\n }\n\n const aErrors = a.errors?.length || 0;\n const bErrors = b.errors?.length || 0;\n\n if (aErrors !== bErrors) {\n return aErrors > bErrors ? -1 : 1;\n }\n\n if (a.name === undefined && b.name === undefined) {\n return a.id < b.id ? -1 : 1;\n } else if (a.name === undefined) {\n return 1;\n } else if (b.name === undefined) {\n return -1;\n }\n\n return a.name < b.name ? -1 : 1;\n}\n"]}
|
package/lib/constants.d.ts
CHANGED
|
@@ -11,6 +11,10 @@ export declare const elementIds: {
|
|
|
11
11
|
* ID for the root element of the status dialog.
|
|
12
12
|
*/
|
|
13
13
|
readonly statusDialogRoot: "cloudpack-overlay-status-dialog";
|
|
14
|
+
/**
|
|
15
|
+
* ID for the title element of any dialog.
|
|
16
|
+
*/
|
|
17
|
+
readonly dialogTitle: "cloudpack-overlay-dialog-title";
|
|
14
18
|
/**
|
|
15
19
|
* ID for the root element of the status badge.
|
|
16
20
|
*/
|
package/lib/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU;IACrB;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;CAEK,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU;IACrB;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;CAEK,CAAC"}
|
package/lib/constants.js
CHANGED
|
@@ -13,6 +13,10 @@ export const elementIds = {
|
|
|
13
13
|
* ID for the root element of the status dialog.
|
|
14
14
|
*/
|
|
15
15
|
statusDialogRoot: 'cloudpack-overlay-status-dialog',
|
|
16
|
+
/**
|
|
17
|
+
* ID for the title element of any dialog.
|
|
18
|
+
*/
|
|
19
|
+
dialogTitle: 'cloudpack-overlay-dialog-title',
|
|
16
20
|
/**
|
|
17
21
|
* ID for the root element of the status badge.
|
|
18
22
|
*/
|
package/lib/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,oBAAoB;AAEpB,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB;;OAEG;IACH,IAAI,EAAE,wBAAwB;IAC9B;;OAEG;IACH,eAAe,EAAE,gCAAgC;IACjD;;OAEG;IACH,gBAAgB,EAAE,iCAAiC;IACnD;;OAEG;IACH,eAAe,EAAE,gCAAgC;CACzC,CAAC","sourcesContent":["// This file serves as a separate entry point which can be imported without rendering the overlay\n// as a side effect.\n\nexport const elementIds = {\n /**\n * ID for the root element of the overlay.\n */\n root: 'cloudpack-overlay-root',\n /**\n * ID for the root element of the error dialog.\n */\n errorDialogRoot: 'cloudpack-overlay-error-dialog',\n /**\n * ID for the root element of the status dialog.\n */\n statusDialogRoot: 'cloudpack-overlay-status-dialog',\n /**\n * ID for the root element of the status badge.\n */\n statusBadgeRoot: 'cloudpack-overlay-status-badge',\n} as const;\n"]}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,oBAAoB;AAEpB,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB;;OAEG;IACH,IAAI,EAAE,wBAAwB;IAC9B;;OAEG;IACH,eAAe,EAAE,gCAAgC;IACjD;;OAEG;IACH,gBAAgB,EAAE,iCAAiC;IACnD;;OAEG;IACH,WAAW,EAAE,gCAAgC;IAC7C;;OAEG;IACH,eAAe,EAAE,gCAAgC;CACzC,CAAC","sourcesContent":["// This file serves as a separate entry point which can be imported without rendering the overlay\n// as a side effect.\n\nexport const elementIds = {\n /**\n * ID for the root element of the overlay.\n */\n root: 'cloudpack-overlay-root',\n /**\n * ID for the root element of the error dialog.\n */\n errorDialogRoot: 'cloudpack-overlay-error-dialog',\n /**\n * ID for the root element of the status dialog.\n */\n statusDialogRoot: 'cloudpack-overlay-status-dialog',\n /**\n * ID for the title element of any dialog.\n */\n dialogTitle: 'cloudpack-overlay-dialog-title',\n /**\n * ID for the root element of the status badge.\n */\n statusBadgeRoot: 'cloudpack-overlay-status-badge',\n} as const;\n"]}
|