@ynput/ayon-frontend-shared 0.2.44 → 0.2.45
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/_virtual/index.cjs10.js +1 -1
- package/dist/_virtual/index.cjs11.js +1 -1
- package/dist/_virtual/index.cjs12.js +1 -1
- package/dist/_virtual/index.cjs4.js +1 -1
- package/dist/_virtual/index.cjs5.js +1 -1
- package/dist/_virtual/index.es10.js +3 -3
- package/dist/_virtual/index.es11.js +5 -5
- package/dist/_virtual/index.es12.js +5 -5
- package/dist/_virtual/index.es4.js +5 -2
- package/dist/_virtual/index.es4.js.map +1 -1
- package/dist/_virtual/index.es5.js +2 -5
- package/dist/_virtual/index.es5.js.map +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
- package/dist/node_modules/remove-accents/index.cjs.js +1 -1
- package/dist/node_modules/remove-accents/index.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +73 -68
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
- package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
- package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
- package/dist/shared/src/components/Menu/MenuItem.es.js +21 -21
- package/dist/shared/src/components/Menu/MenuItem.es.js.map +1 -1
- package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const
|
|
1
|
+
"use strict";const r=require("./_commonjsHelpers.cjs.js"),e=require("../node_modules/parse5/lib/parser/index.cjs.js");var s=e.__require();const t=r.getDefaultExportFromCjs(s);module.exports=t;
|
|
2
2
|
//# sourceMappingURL=index.cjs10.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const e=require("./_commonjsHelpers.cjs.js"),r=require("../node_modules/
|
|
1
|
+
"use strict";const e=require("./_commonjsHelpers.cjs.js"),r=require("../node_modules/is-buffer/index.cjs.js");var s=r.__require();const t=e.getDefaultExportFromCjs(s);module.exports=t;
|
|
2
2
|
//# sourceMappingURL=index.cjs11.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const
|
|
1
|
+
"use strict";const e=require("./_commonjsHelpers.cjs.js"),r=require("../node_modules/extend/index.cjs.js");var t=r.__require();const s=e.getDefaultExportFromCjs(t);module.exports=s;
|
|
2
2
|
//# sourceMappingURL=index.cjs12.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";const e=require("./_commonjsHelpers.cjs.js"),r=require("../shared/node_modules/prop-types/index.cjs.js");var s=r.__require();const o=e.getDefaultExportFromCjs(s);module.exports=o;
|
|
2
2
|
//# sourceMappingURL=index.cjs4.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var e={exports:{}};exports.__module=e;
|
|
2
2
|
//# sourceMappingURL=index.cjs5.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.es.js";
|
|
2
|
-
import { __require as e } from "../node_modules/
|
|
3
|
-
var
|
|
4
|
-
const s = /* @__PURE__ */ r(
|
|
2
|
+
import { __require as e } from "../node_modules/parse5/lib/parser/index.es.js";
|
|
3
|
+
var o = e();
|
|
4
|
+
const s = /* @__PURE__ */ r(o);
|
|
5
5
|
export {
|
|
6
6
|
s as default
|
|
7
7
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { getDefaultExportFromCjs as
|
|
2
|
-
import { __require as
|
|
3
|
-
var
|
|
4
|
-
const
|
|
1
|
+
import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.es.js";
|
|
2
|
+
import { __require as e } from "../node_modules/is-buffer/index.es.js";
|
|
3
|
+
var f = e();
|
|
4
|
+
const s = /* @__PURE__ */ r(f);
|
|
5
5
|
export {
|
|
6
|
-
|
|
6
|
+
s as default
|
|
7
7
|
};
|
|
8
8
|
//# sourceMappingURL=index.es11.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { getDefaultExportFromCjs as
|
|
2
|
-
import { __require as
|
|
3
|
-
var
|
|
4
|
-
const
|
|
1
|
+
import { getDefaultExportFromCjs as e } from "./_commonjsHelpers.es.js";
|
|
2
|
+
import { __require as r } from "../node_modules/extend/index.es.js";
|
|
3
|
+
var t = r();
|
|
4
|
+
const a = /* @__PURE__ */ e(t);
|
|
5
5
|
export {
|
|
6
|
-
|
|
6
|
+
a as default
|
|
7
7
|
};
|
|
8
8
|
//# sourceMappingURL=index.es12.js.map
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.es.js";
|
|
2
|
+
import { __require as o } from "../shared/node_modules/prop-types/index.es.js";
|
|
3
|
+
var p = /* @__PURE__ */ o();
|
|
4
|
+
const s = /* @__PURE__ */ r(p);
|
|
2
5
|
export {
|
|
3
|
-
|
|
6
|
+
s as default
|
|
4
7
|
};
|
|
5
8
|
//# sourceMappingURL=index.es4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es4.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.es4.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import { __require as o } from "../shared/node_modules/prop-types/index.es.js";
|
|
3
|
-
var p = /* @__PURE__ */ o();
|
|
4
|
-
const s = /* @__PURE__ */ r(p);
|
|
1
|
+
var e = { exports: {} };
|
|
5
2
|
export {
|
|
6
|
-
|
|
3
|
+
e as __module
|
|
7
4
|
};
|
|
8
5
|
//# sourceMappingURL=index.es5.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es5.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.es5.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("../../../../bail/index.cjs.js"),B=require("../../../../../_virtual/index.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("../../../../bail/index.cjs.js"),B=require("../../../../../_virtual/index.cjs11.js"),z=require("../../../../../_virtual/index.cjs12.js"),E=require("../../../../is-plain-obj/index.cjs.js"),D=require("../../../../trough/lib/index.cjs.js"),M=require("../../vfile/lib/index.cjs.js"),Y=$().freeze(),A={}.hasOwnProperty;function $(){const t=D.trough(),s=[];let a={},w,h=-1;return n.data=j,n.Parser=void 0,n.Compiler=void 0,n.freeze=q,n.attachers=s,n.use=I,n.parse=O,n.stringify=V,n.run=F,n.runSync=N,n.process=L,n.processSync=U,n;function n(){const e=$();let r=-1;for(;++r<s.length;)e.use(...s[r]);return e.data(z(!0,{},a)),e}function j(e,r){return typeof e=="string"?arguments.length===2?(P("data",w),a[e]=r,n):A.call(a,e)&&a[e]||null:e?(P("data",w),a=e,n):a}function q(){if(w)return n;for(;++h<s.length;){const[e,...r]=s[h];if(r[0]===!1)continue;r[0]===!0&&(r[0]=void 0);const i=e.call(n,...r);typeof i=="function"&&t.use(i)}return w=!0,h=Number.POSITIVE_INFINITY,n}function I(e,...r){let i;if(P("use",w),e!=null)if(typeof e=="function")d(e,...r);else if(typeof e=="object")Array.isArray(e)?y(e):p(e);else throw new TypeError("Expected usable value, not `"+e+"`");return i&&(a.settings=Object.assign(a.settings||{},i)),n;function u(o){if(typeof o=="function")d(o);else if(typeof o=="object")if(Array.isArray(o)){const[f,...c]=o;d(f,...c)}else p(o);else throw new TypeError("Expected usable value, not `"+o+"`")}function p(o){y(o.plugins),o.settings&&(i=Object.assign(i||{},o.settings))}function y(o){let f=-1;if(o!=null)if(Array.isArray(o))for(;++f<o.length;){const c=o[f];u(c)}else throw new TypeError("Expected a list of plugins, not `"+o+"`")}function d(o,f){let c=-1,l;for(;++c<s.length;)if(s[c][0]===o){l=s[c];break}l?(E(l[1])&&E(f)&&(f=z(!0,l[1],f)),l[1]=f):s.push([...arguments])}}function O(e){n.freeze();const r=g(e),i=n.Parser;return m("parse",i),C(i,"parse")?new i(String(r),r).parse():i(String(r),r)}function V(e,r){n.freeze();const i=g(r),u=n.Compiler;return x("stringify",u),b(e),C(u,"compile")?new u(e,i).compile():u(e,i)}function F(e,r,i){if(b(e),n.freeze(),!i&&typeof r=="function"&&(i=r,r=void 0),!i)return new Promise(u);u(null,i);function u(p,y){t.run(e,g(r),d);function d(o,f,c){f=f||e,o?y(o):p?p(f):i(null,f,c)}}}function N(e,r){let i,u;return n.run(e,r,p),T("runSync","run",u),i;function p(y,d){S.bail(y),i=d,u=!0}}function L(e,r){if(n.freeze(),m("process",n.Parser),x("process",n.Compiler),!r)return new Promise(i);i(null,r);function i(u,p){const y=g(e);n.run(n.parse(y),y,(o,f,c)=>{if(o||!f||!c)d(o);else{const l=n.stringify(f,c);l==null||(H(l)?c.value=l:c.result=l),d(o,c)}});function d(o,f){o||!f?p(o):u?u(f):r(null,f)}}}function U(e){let r;n.freeze(),m("processSync",n.Parser),x("processSync",n.Compiler);const i=g(e);return n.process(i,u),T("processSync","process",r),i;function u(p){r=!0,S.bail(p)}}}function C(t,s){return typeof t=="function"&&t.prototype&&(_(t.prototype)||s in t.prototype)}function _(t){let s;for(s in t)if(A.call(t,s))return!0;return!1}function m(t,s){if(typeof s!="function")throw new TypeError("Cannot `"+t+"` without `Parser`")}function x(t,s){if(typeof s!="function")throw new TypeError("Cannot `"+t+"` without `Compiler`")}function P(t,s){if(s)throw new Error("Cannot call `"+t+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function b(t){if(!E(t)||typeof t.type!="string")throw new TypeError("Expected node, got `"+t+"`")}function T(t,s,a){if(!a)throw new Error("`"+t+"` finished async. Use `"+s+"` instead")}function g(t){return G(t)?t:new M.VFile(t)}function G(t){return!!(t&&typeof t=="object"&&"message"in t&&"messages"in t)}function H(t){return typeof t=="string"||B(t)}exports.unified=Y;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { bail as z } from "../../../../bail/index.es.js";
|
|
2
|
-
import Y from "../../../../../_virtual/index.
|
|
3
|
-
import C from "../../../../../_virtual/index.
|
|
2
|
+
import Y from "../../../../../_virtual/index.es11.js";
|
|
3
|
+
import C from "../../../../../_virtual/index.es12.js";
|
|
4
4
|
import x from "../../../../is-plain-obj/index.es.js";
|
|
5
5
|
import { trough as _ } from "../../../../trough/lib/index.es.js";
|
|
6
6
|
import { VFile as q } from "../../vfile/lib/index.es.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("../../../../../_virtual/index.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("../../../../../_virtual/index.cjs11.js"),i=require("./minpath.browser.cjs.js"),d=require("./minproc.browser.cjs.js"),c=require("./minurl.browser.cjs.js"),m=require("./minurl.shared.cjs.js"),l=require("../../vfile-message/lib/index.cjs.js"),a=["history","path","basename","stem","extname","dirname"];class g{constructor(t){let e;t?typeof t=="string"||w(t)?e={value:t}:m.isUrl(t)?e={path:t}:e=t:e={},this.data={},this.messages=[],this.history=[],this.cwd=d.proc.cwd(),this.value,this.stored,this.result,this.map;let r=-1;for(;++r<a.length;){const h=a[r];h in e&&e[h]!==void 0&&e[h]!==null&&(this[h]=h==="history"?[...e[h]]:e[h])}let s;for(s in e)a.includes(s)||(this[s]=e[s])}get path(){return this.history[this.history.length-1]}set path(t){m.isUrl(t)&&(t=c.urlToPath(t)),p(t,"path"),this.path!==t&&this.history.push(t)}get dirname(){return typeof this.path=="string"?i.path.dirname(this.path):void 0}set dirname(t){u(this.basename,"dirname"),this.path=i.path.join(t||"",this.basename)}get basename(){return typeof this.path=="string"?i.path.basename(this.path):void 0}set basename(t){p(t,"basename"),o(t,"basename"),this.path=i.path.join(this.dirname||"",t)}get extname(){return typeof this.path=="string"?i.path.extname(this.path):void 0}set extname(t){if(o(t,"extname"),u(this.dirname,"extname"),t){if(t.charCodeAt(0)!==46)throw new Error("`extname` must start with `.`");if(t.includes(".",1))throw new Error("`extname` cannot contain multiple dots")}this.path=i.path.join(this.dirname,this.stem+(t||""))}get stem(){return typeof this.path=="string"?i.path.basename(this.path,this.extname):void 0}set stem(t){p(t,"stem"),o(t,"stem"),this.path=i.path.join(this.dirname||"",t+(this.extname||""))}toString(t){return(this.value||"").toString(t||void 0)}message(t,e,r){const s=new l.VFileMessage(t,e,r);return this.path&&(s.name=this.path+":"+s.name,s.file=this.path),s.fatal=!1,this.messages.push(s),s}info(t,e,r){const s=this.message(t,e,r);return s.fatal=null,s}fail(t,e,r){const s=this.message(t,e,r);throw s.fatal=!0,s}}function o(n,t){if(n&&n.includes(i.path.sep))throw new Error("`"+t+"` cannot be a path: did not expect `"+i.path.sep+"`")}function p(n,t){if(!n)throw new Error("`"+t+"` cannot be empty")}function u(n,t){if(!n)throw new Error("Setting `"+t+"` requires `path` to be set too")}function w(n){return f(n)}exports.VFile=g;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import d from "../../../../../_virtual/index.
|
|
1
|
+
import d from "../../../../../_virtual/index.es11.js";
|
|
2
2
|
import { path as i } from "./minpath.browser.es.js";
|
|
3
3
|
import { proc as u } from "./minproc.browser.es.js";
|
|
4
4
|
import { urlToPath as l } from "./minurl.browser.es.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const w=require("../../../_virtual/index.
|
|
1
|
+
"use strict";const w=require("../../../_virtual/index.cjs10.js"),A=require("./errors.cjs.js"),E=require("../../hast-util-from-parse5/lib/index.cjs.js"),I="https://html.spec.whatwg.org/multipage/parsing.html#parse-error-",L={2:!0,1:!1,0:null};function j(r){const o=this.data("settings"),n=Object.assign({},o,r);Object.assign(this,{Parser:h});function h(a,l){const b=n.fragment?"parseFragment":"parse",C=n.emitParseErrors?x:null,O=new w({sourceCodeLocationInfo:!0,onParseError:C,scriptingEnabled:!1});return E.fromParse5(O[b](a),{space:n.space,file:l,verbose:n.verbose});function x(e){const c=e.code,u=y(c),i=n[u],f=i??!0,p=typeof f=="number"?f:f?1:0,P={line:e.startLine,column:e.startCol,offset:e.startOffset},q={line:e.endLine,column:e.endCol,offset:e.endOffset};if(p){const t=A.errors[u]||{reason:"",description:"",url:""},s=l.message(g(t.reason),{start:P,end:q});s.source="parse-error",s.ruleId=c,s.fatal=L[p],s.note=g(t.description),s.url="url"in t&&t.url===!1?null:I+c}function g(t){return t.replace(/%c(?:-(\d+))?/g,(s,d)=>{const v=d?-Number.parseInt(d,10):0,m=a.charAt(e.startOffset+v);return m==="`"?"` ` `":m}).replace(/%x/g,()=>"0x"+a.charCodeAt(e.startOffset).toString(16).toUpperCase())}}}}function y(r){return r.replace(/-[a-z]/g,o=>o.charAt(1).toUpperCase())}module.exports=j;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import A from "../../../_virtual/index.
|
|
1
|
+
import A from "../../../_virtual/index.es10.js";
|
|
2
2
|
import { errors as E } from "./errors.es.js";
|
|
3
3
|
import { fromParse5 as I } from "../../hast-util-from-parse5/lib/index.es.js";
|
|
4
4
|
const L = "https://html.spec.whatwg.org/multipage/parsing.html#parse-error-", j = { 2: !0, 1: !1, 0: null };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../../_virtual/index.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../../_virtual/index.cjs5.js");var t;function O(){if(t)return o.__module.exports;t=1;var a={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",Ấ:"A",Ắ:"A",Ẳ:"A",Ẵ:"A",Ặ:"A",Æ:"AE",Ầ:"A",Ằ:"A",Ȃ:"A",Ả:"A",Ạ:"A",Ẩ:"A",Ẫ:"A",Ậ:"A",Ç:"C",Ḉ:"C",È:"E",É:"E",Ê:"E",Ë:"E",Ế:"E",Ḗ:"E",Ề:"E",Ḕ:"E",Ḝ:"E",Ȇ:"E",Ẻ:"E",Ẽ:"E",Ẹ:"E",Ể:"E",Ễ:"E",Ệ:"E",Ì:"I",Í:"I",Î:"I",Ï:"I",Ḯ:"I",Ȋ:"I",Ỉ:"I",Ị:"I",Ð:"D",Ñ:"N",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",Ố:"O",Ṍ:"O",Ṓ:"O",Ȏ:"O",Ỏ:"O",Ọ:"O",Ổ:"O",Ỗ:"O",Ộ:"O",Ờ:"O",Ở:"O",Ỡ:"O",Ớ:"O",Ợ:"O",Ù:"U",Ú:"U",Û:"U",Ü:"U",Ủ:"U",Ụ:"U",Ử:"U",Ữ:"U",Ự:"U",Ý:"Y",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",ấ:"a",ắ:"a",ẳ:"a",ẵ:"a",ặ:"a",æ:"ae",ầ:"a",ằ:"a",ȃ:"a",ả:"a",ạ:"a",ẩ:"a",ẫ:"a",ậ:"a",ç:"c",ḉ:"c",è:"e",é:"e",ê:"e",ë:"e",ế:"e",ḗ:"e",ề:"e",ḕ:"e",ḝ:"e",ȇ:"e",ẻ:"e",ẽ:"e",ẹ:"e",ể:"e",ễ:"e",ệ:"e",ì:"i",í:"i",î:"i",ï:"i",ḯ:"i",ȋ:"i",ỉ:"i",ị:"i",ð:"d",ñ:"n",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",ố:"o",ṍ:"o",ṓ:"o",ȏ:"o",ỏ:"o",ọ:"o",ổ:"o",ỗ:"o",ộ:"o",ờ:"o",ở:"o",ỡ:"o",ớ:"o",ợ:"o",ù:"u",ú:"u",û:"u",ü:"u",ủ:"u",ụ:"u",ử:"u",ữ:"u",ự:"u",ý:"y",ÿ:"y",Ā:"A",ā:"a",Ă:"A",ă:"a",Ą:"A",ą:"a",Ć:"C",ć:"c",Ĉ:"C",ĉ:"c",Ċ:"C",ċ:"c",Č:"C",č:"c",C̆:"C",c̆:"c",Ď:"D",ď:"d",Đ:"D",đ:"d",Ē:"E",ē:"e",Ĕ:"E",ĕ:"e",Ė:"E",ė:"e",Ę:"E",ę:"e",Ě:"E",ě:"e",Ĝ:"G",Ǵ:"G",ĝ:"g",ǵ:"g",Ğ:"G",ğ:"g",Ġ:"G",ġ:"g",Ģ:"G",ģ:"g",Ĥ:"H",ĥ:"h",Ħ:"H",ħ:"h",Ḫ:"H",ḫ:"h",Ĩ:"I",ĩ:"i",Ī:"I",ī:"i",Ĭ:"I",ĭ:"i",Į:"I",į:"i",İ:"I",ı:"i",IJ:"IJ",ij:"ij",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",Ḱ:"K",ḱ:"k",K̆:"K",k̆:"k",Ĺ:"L",ĺ:"l",Ļ:"L",ļ:"l",Ľ:"L",ľ:"l",Ŀ:"L",ŀ:"l",Ł:"l",ł:"l",Ḿ:"M",ḿ:"m",M̆:"M",m̆:"m",Ń:"N",ń:"n",Ņ:"N",ņ:"n",Ň:"N",ň:"n",ʼn:"n",N̆:"N",n̆:"n",Ō:"O",ō:"o",Ŏ:"O",ŏ:"o",Ő:"O",ő:"o",Œ:"OE",œ:"oe",P̆:"P",p̆:"p",Ŕ:"R",ŕ:"r",Ŗ:"R",ŗ:"r",Ř:"R",ř:"r",R̆:"R",r̆:"r",Ȓ:"R",ȓ:"r",Ś:"S",ś:"s",Ŝ:"S",ŝ:"s",Ş:"S",Ș:"S",ș:"s",ş:"s",Š:"S",š:"s",Ţ:"T",ţ:"t",ț:"t",Ț:"T",Ť:"T",ť:"t",Ŧ:"T",ŧ:"t",T̆:"T",t̆:"t",Ũ:"U",ũ:"u",Ū:"U",ū:"u",Ŭ:"U",ŭ:"u",Ů:"U",ů:"u",Ű:"U",ű:"u",Ų:"U",ų:"u",Ȗ:"U",ȗ:"u",V̆:"V",v̆:"v",Ŵ:"W",ŵ:"w",Ẃ:"W",ẃ:"w",X̆:"X",x̆:"x",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Y̆:"Y",y̆:"y",Ź:"Z",ź:"z",Ż:"Z",ż:"z",Ž:"Z",ž:"z",ſ:"s",ƒ:"f",Ơ:"O",ơ:"o",Ư:"U",ư:"u",Ǎ:"A",ǎ:"a",Ǐ:"I",ǐ:"i",Ǒ:"O",ǒ:"o",Ǔ:"U",ǔ:"u",Ǖ:"U",ǖ:"u",Ǘ:"U",ǘ:"u",Ǚ:"U",ǚ:"u",Ǜ:"U",ǜ:"u",Ứ:"U",ứ:"u",Ṹ:"U",ṹ:"u",Ǻ:"A",ǻ:"a",Ǽ:"AE",ǽ:"ae",Ǿ:"O",ǿ:"o",Þ:"TH",þ:"th",Ṕ:"P",ṕ:"p",Ṥ:"S",ṥ:"s",X́:"X",x́:"x",Ѓ:"Г",ѓ:"г",Ќ:"К",ќ:"к",A̋:"A",a̋:"a",E̋:"E",e̋:"e",I̋:"I",i̋:"i",Ǹ:"N",ǹ:"n",Ồ:"O",ồ:"o",Ṑ:"O",ṑ:"o",Ừ:"U",ừ:"u",Ẁ:"W",ẁ:"w",Ỳ:"Y",ỳ:"y",Ȁ:"A",ȁ:"a",Ȅ:"E",ȅ:"e",Ȉ:"I",ȉ:"i",Ȍ:"O",ȍ:"o",Ȑ:"R",ȑ:"r",Ȕ:"U",ȕ:"u",B̌:"B",b̌:"b",Č̣:"C",č̣:"c",Ê̌:"E",ê̌:"e",F̌:"F",f̌:"f",Ǧ:"G",ǧ:"g",Ȟ:"H",ȟ:"h",J̌:"J",ǰ:"j",Ǩ:"K",ǩ:"k",M̌:"M",m̌:"m",P̌:"P",p̌:"p",Q̌:"Q",q̌:"q",Ř̩:"R",ř̩:"r",Ṧ:"S",ṧ:"s",V̌:"V",v̌:"v",W̌:"W",w̌:"w",X̌:"X",x̌:"x",Y̌:"Y",y̌:"y",A̧:"A",a̧:"a",B̧:"B",b̧:"b",Ḑ:"D",ḑ:"d",Ȩ:"E",ȩ:"e",Ɛ̧:"E",ɛ̧:"e",Ḩ:"H",ḩ:"h",I̧:"I",i̧:"i",Ɨ̧:"I",ɨ̧:"i",M̧:"M",m̧:"m",O̧:"O",o̧:"o",Q̧:"Q",q̧:"q",U̧:"U",u̧:"u",X̧:"X",x̧:"x",Z̧:"Z",z̧:"z",й:"и",Й:"И",ё:"е",Ё:"Е"},r=Object.keys(a).join("|"),A=new RegExp(r,"g"),i=new RegExp(r,"");function c(e){return a[e]}var u=function(e){return e.replace(A,c)},n=function(e){return!!e.match(i)};return o.__module.exports=u,o.__module.exports.has=n,o.__module.exports.remove=u,o.__module.exports}exports.__require=O;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const m=require("../../@babel/runtime/helpers/esm/extends.cjs.js"),h=require("../../@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.cjs.js"),N=require("../../@babel/runtime/helpers/esm/inheritsLoose.cjs.js"),v=require("../../../../_virtual/index.
|
|
1
|
+
"use strict";const m=require("../../@babel/runtime/helpers/esm/extends.cjs.js"),h=require("../../@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.cjs.js"),N=require("../../@babel/runtime/helpers/esm/inheritsLoose.cjs.js"),v=require("../../../../_virtual/index.cjs4.js"),A=require("../../dom-helpers/esm/addClass.cjs.js"),q=require("../../dom-helpers/esm/removeClass.cjs.js"),E=require("react"),g=require("./Transition.cjs.js"),$=require("./utils/PropTypes.cjs.js"),_=require("./utils/reflow.cjs.js");var S=function(i,l){return i&&l&&l.split(" ").forEach(function(e){return A(i,e)})},f=function(i,l){return i&&l&&l.split(" ").forEach(function(e){return q(i,e)})},C=(function(d){N(i,d);function i(){for(var e,t=arguments.length,o=new Array(t),a=0;a<t;a++)o[a]=arguments[a];return e=d.call.apply(d,[this].concat(o))||this,e.appliedClasses={appear:{},enter:{},exit:{}},e.onEnter=function(s,r){var n=e.resolveArguments(s,r),p=n[0],u=n[1];e.removeClasses(p,"exit"),e.addClass(p,u?"appear":"enter","base"),e.props.onEnter&&e.props.onEnter(s,r)},e.onEntering=function(s,r){var n=e.resolveArguments(s,r),p=n[0],u=n[1],c=u?"appear":"enter";e.addClass(p,c,"active"),e.props.onEntering&&e.props.onEntering(s,r)},e.onEntered=function(s,r){var n=e.resolveArguments(s,r),p=n[0],u=n[1],c=u?"appear":"enter";e.removeClasses(p,c),e.addClass(p,c,"done"),e.props.onEntered&&e.props.onEntered(s,r)},e.onExit=function(s){var r=e.resolveArguments(s),n=r[0];e.removeClasses(n,"appear"),e.removeClasses(n,"enter"),e.addClass(n,"exit","base"),e.props.onExit&&e.props.onExit(s)},e.onExiting=function(s){var r=e.resolveArguments(s),n=r[0];e.addClass(n,"exit","active"),e.props.onExiting&&e.props.onExiting(s)},e.onExited=function(s){var r=e.resolveArguments(s),n=r[0];e.removeClasses(n,"exit"),e.addClass(n,"exit","done"),e.props.onExited&&e.props.onExited(s)},e.resolveArguments=function(s,r){return e.props.nodeRef?[e.props.nodeRef.current,s]:[s,r]},e.getClassNames=function(s){var r=e.props.classNames,n=typeof r=="string",p=n&&r?r+"-":"",u=n?""+p+s:r[s],c=n?u+"-active":r[s+"Active"],x=n?u+"-done":r[s+"Done"];return{baseClassName:u,activeClassName:c,doneClassName:x}},e}var l=i.prototype;return l.addClass=function(t,o,a){var s=this.getClassNames(o)[a+"ClassName"],r=this.getClassNames("enter"),n=r.doneClassName;o==="appear"&&a==="done"&&n&&(s+=" "+n),a==="active"&&t&&_.forceReflow(t),s&&(this.appliedClasses[o][a]=s,S(t,s))},l.removeClasses=function(t,o){var a=this.appliedClasses[o],s=a.base,r=a.active,n=a.done;this.appliedClasses[o]={},s&&f(t,s),r&&f(t,r),n&&f(t,n)},l.render=function(){var t=this.props;t.classNames;var o=h(t,["classNames"]);return E.createElement(g.default,m({},o,{onEnter:this.onEnter,onEntered:this.onEntered,onEntering:this.onEntering,onExit:this.onExit,onExiting:this.onExiting,onExited:this.onExited}))},i})(E.Component);C.defaultProps={classNames:""};C.propTypes=process.env.NODE_ENV!=="production"?m({},g.default.propTypes,{classNames:$.classNamesShape,onEnter:v.func,onEntering:v.func,onEntered:v.func,onExit:v.func,onExiting:v.func,onExited:v.func}):{};module.exports=C;
|
|
2
2
|
//# sourceMappingURL=CSSTransition.cjs.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import C from "../../@babel/runtime/helpers/esm/extends.es.js";
|
|
2
2
|
import x from "../../@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.es.js";
|
|
3
3
|
import N from "../../@babel/runtime/helpers/esm/inheritsLoose.es.js";
|
|
4
|
-
import v from "../../../../_virtual/index.
|
|
4
|
+
import v from "../../../../_virtual/index.es4.js";
|
|
5
5
|
import A from "../../dom-helpers/esm/addClass.es.js";
|
|
6
6
|
import _ from "../../dom-helpers/esm/removeClass.es.js";
|
|
7
7
|
import c from "react";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const D=require("../../@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.cjs.js"),C=require("../../@babel/runtime/helpers/esm/inheritsLoose.cjs.js"),o=require("../../../../_virtual/index.
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const D=require("../../@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.cjs.js"),C=require("../../@babel/runtime/helpers/esm/inheritsLoose.cjs.js"),o=require("../../../../_virtual/index.cjs4.js"),v=require("react"),N=require("react-dom"),S=require("./config.cjs.js"),R=require("./utils/PropTypes.cjs.js"),O=require("./TransitionGroupContext.cjs.js"),k=require("./utils/reflow.cjs.js");var x="unmounted",p="exited",f="entering",c="entered",T="exiting",l=(function(d){C(u,d);function u(i,e){var t;t=d.call(this,i,e)||this;var n=e,r=n&&!n.isMounting?i.enter:i.appear,a;return t.appearStatus=null,i.in?r?(a=p,t.appearStatus=f):a=c:i.unmountOnExit||i.mountOnEnter?a=x:a=p,t.state={status:a},t.nextCallback=null,t}u.getDerivedStateFromProps=function(e,t){var n=e.in;return n&&t.status===x?{status:p}:null};var s=u.prototype;return s.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},s.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==f&&n!==c&&(t=f):(n===f||n===c)&&(t=T)}this.updateStatus(!1,t)},s.componentWillUnmount=function(){this.cancelNextCallback()},s.getTimeouts=function(){var e=this.props.timeout,t,n,r;return t=n=r=e,e!=null&&typeof e!="number"&&(t=e.exit,n=e.enter,r=e.appear!==void 0?e.appear:n),{exit:t,enter:n,appear:r}},s.updateStatus=function(e,t){if(e===void 0&&(e=!1),t!==null)if(this.cancelNextCallback(),t===f){if(this.props.unmountOnExit||this.props.mountOnEnter){var n=this.props.nodeRef?this.props.nodeRef.current:N.findDOMNode(this);n&&k.forceReflow(n)}this.performEnter(e)}else this.performExit();else this.props.unmountOnExit&&this.state.status===p&&this.setState({status:x})},s.performEnter=function(e){var t=this,n=this.props.enter,r=this.context?this.context.isMounting:e,a=this.props.nodeRef?[r]:[N.findDOMNode(this),r],E=a[0],m=a[1],b=this.getTimeouts(),g=r?b.appear:b.enter;if(!e&&!n||S.disabled){this.safeSetState({status:c},function(){t.props.onEntered(E)});return}this.props.onEnter(E,m),this.safeSetState({status:f},function(){t.props.onEntering(E,m),t.onTransitionEnd(g,function(){t.safeSetState({status:c},function(){t.props.onEntered(E,m)})})})},s.performExit=function(){var e=this,t=this.props.exit,n=this.getTimeouts(),r=this.props.nodeRef?void 0:N.findDOMNode(this);if(!t||S.disabled){this.safeSetState({status:p},function(){e.props.onExited(r)});return}this.props.onExit(r),this.safeSetState({status:T},function(){e.props.onExiting(r),e.onTransitionEnd(n.exit,function(){e.safeSetState({status:p},function(){e.props.onExited(r)})})})},s.cancelNextCallback=function(){this.nextCallback!==null&&(this.nextCallback.cancel(),this.nextCallback=null)},s.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},s.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(r){n&&(n=!1,t.nextCallback=null,e(r))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},s.onTransitionEnd=function(e,t){this.setNextCallback(t);var n=this.props.nodeRef?this.props.nodeRef.current:N.findDOMNode(this),r=e==null&&!this.props.addEndListener;if(!n||r){setTimeout(this.nextCallback,0);return}if(this.props.addEndListener){var a=this.props.nodeRef?[this.nextCallback]:[n,this.nextCallback],E=a[0],m=a[1];this.props.addEndListener(E,m)}e!=null&&setTimeout(this.nextCallback,e)},s.render=function(){var e=this.state.status;if(e===x)return null;var t=this.props,n=t.children;t.in,t.mountOnEnter,t.unmountOnExit,t.appear,t.enter,t.exit,t.timeout,t.addEndListener,t.onEnter,t.onEntering,t.onEntered,t.onExit,t.onExiting,t.onExited,t.nodeRef;var r=D(t,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]);return v.createElement(O.Provider,{value:null},typeof n=="function"?n(e,r):v.cloneElement(v.Children.only(n),r))},u})(v.Component);l.contextType=O;l.propTypes=process.env.NODE_ENV!=="production"?{nodeRef:o.shape({current:typeof Element>"u"?o.any:function(d,u,s,i,e,t){var n=d[u];return o.instanceOf(n&&"ownerDocument"in n?n.ownerDocument.defaultView.Element:Element)(d,u,s,i,e,t)}}),children:o.oneOfType([o.func.isRequired,o.element.isRequired]).isRequired,in:o.bool,mountOnEnter:o.bool,unmountOnExit:o.bool,appear:o.bool,enter:o.bool,exit:o.bool,timeout:function(u){var s=R.timeoutsShape;u.addEndListener||(s=s.isRequired);for(var i=arguments.length,e=new Array(i>1?i-1:0),t=1;t<i;t++)e[t-1]=arguments[t];return s.apply(void 0,[u].concat(e))},addEndListener:o.func,onEnter:o.func,onEntering:o.func,onEntered:o.func,onExit:o.func,onExiting:o.func,onExited:o.func}:{};function h(){}l.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:h,onEntering:h,onEntered:h,onExit:h,onExiting:h,onExited:h};l.UNMOUNTED=x;l.EXITED=p;l.ENTERING=f;l.ENTERED=c;l.EXITING=T;exports.ENTERED=c;exports.ENTERING=f;exports.EXITED=p;exports.EXITING=T;exports.UNMOUNTED=x;exports.default=l;
|
|
2
2
|
//# sourceMappingURL=Transition.cjs.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import C from "../../@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.es.js";
|
|
2
2
|
import D from "../../@babel/runtime/helpers/esm/inheritsLoose.es.js";
|
|
3
|
-
import o from "../../../../_virtual/index.
|
|
3
|
+
import o from "../../../../_virtual/index.es4.js";
|
|
4
4
|
import v from "react";
|
|
5
5
|
import b from "react-dom";
|
|
6
6
|
import T from "./config.es.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../../../../_virtual/index.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../../../../_virtual/index.cjs4.js");var t=process.env.NODE_ENV!=="production"?e.oneOfType([e.number,e.shape({enter:e.number,exit:e.number,appear:e.number}).isRequired]):null,n=process.env.NODE_ENV!=="production"?e.oneOfType([e.string,e.shape({enter:e.string,exit:e.string,active:e.string}),e.shape({enter:e.string,enterDone:e.string,enterActive:e.string,exit:e.string,exitDone:e.string,exitActive:e.string})]):null;exports.classNamesShape=n;exports.timeoutsShape=t;
|
|
2
2
|
//# sourceMappingURL=PropTypes.cjs.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../base/client.cjs.js");const K=require("../../generated/graphql.cjs.js");require("../../generated/graphqlLinks.cjs.js");require("../../generated/access.cjs.js");require("../../generated/actions.cjs.js");require("../../generated/activityFeed.cjs.js");require("../../generated/addons.cjs.js");require("../../generated/anatomy.cjs.js");require("../../generated/attributes.cjs.js");require("../../generated/authentication.cjs.js");require("../../generated/bundles.cjs.js");require("../../generated/configuration.cjs.js");require("../../generated/desktop.cjs.js");require("../../generated/entityLists.cjs.js");require("../../generated/events.cjs.js");require("../../generated/files.cjs.js");require("../../generated/folders.cjs.js");require("../../generated/inbox.cjs.js");require("../../generated/links.cjs.js");require("../../generated/market.cjs.js");require("../../generated/onboarding.cjs.js");require("../../generated/operations.cjs.js");require("../../generated/products.cjs.js");require("../../generated/projectDashboard.cjs.js");require("../../generated/projects.cjs.js");require("../../generated/reviewables.cjs.js");require("../../generated/services.cjs.js");require("../../generated/system.cjs.js");require("../../generated/tasks.cjs.js");require("../../generated/teams.cjs.js");require("../../generated/thumbnails.cjs.js");require("../../generated/uRIs.cjs.js");require("../../generated/users.cjs.js");require("../../generated/versions.cjs.js");require("../../generated/workfiles.cjs.js");require("../../generated/ynputCloud.cjs.js");require("../../generated/grouping.cjs.js");require("../../generated/views.cjs.js");const g=require("../project/getProject.cjs.js");require("../project/updateProject.cjs.js");require("lodash");require("react-toastify");require("uuid");const m=require("../../../util/pubsub.cjs.js"),P=require("./convertAccessGroupsData.cjs.js"),A=require("./getUserProjectsAccess.cjs.js"),h=
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../base/client.cjs.js");const K=require("../../generated/graphql.cjs.js");require("../../generated/graphqlLinks.cjs.js");require("../../generated/access.cjs.js");require("../../generated/actions.cjs.js");require("../../generated/activityFeed.cjs.js");require("../../generated/addons.cjs.js");require("../../generated/anatomy.cjs.js");require("../../generated/attributes.cjs.js");require("../../generated/authentication.cjs.js");require("../../generated/bundles.cjs.js");require("../../generated/configuration.cjs.js");require("../../generated/desktop.cjs.js");require("../../generated/entityLists.cjs.js");require("../../generated/events.cjs.js");require("../../generated/files.cjs.js");require("../../generated/folders.cjs.js");require("../../generated/inbox.cjs.js");require("../../generated/links.cjs.js");require("../../generated/market.cjs.js");require("../../generated/onboarding.cjs.js");require("../../generated/operations.cjs.js");require("../../generated/products.cjs.js");require("../../generated/projectDashboard.cjs.js");require("../../generated/projects.cjs.js");require("../../generated/reviewables.cjs.js");require("../../generated/services.cjs.js");require("../../generated/system.cjs.js");require("../../generated/tasks.cjs.js");require("../../generated/teams.cjs.js");require("../../generated/thumbnails.cjs.js");require("../../generated/uRIs.cjs.js");require("../../generated/users.cjs.js");require("../../generated/versions.cjs.js");require("../../generated/workfiles.cjs.js");require("../../generated/ynputCloud.cjs.js");require("../../generated/grouping.cjs.js");require("../../generated/views.cjs.js");const g=require("../project/getProject.cjs.js");require("../project/updateProject.cjs.js");require("lodash");require("react-toastify");require("uuid");const m=require("../../../util/pubsub.cjs.js"),P=require("./convertAccessGroupsData.cjs.js"),A=require("./getUserProjectsAccess.cjs.js"),h=s=>s.kanban.edges.map(({node:r})=>r).sort((r,o)=>{const e=r.label||r.name,t=o.label||o.name;return e.localeCompare(t)}),k=(s,r,o)=>s?.length?[{type:"kanBanTask",id:"LIST"},...s.flatMap(({id:e,projectName:t,assignees:c})=>[{type:"task",id:e},{type:"kanban",id:"project-"+t},...c.map(n=>({type:"kanban",id:"user-"+n})),...c.map(n=>({type:"kanban",id:"user-"+n+"-project-"+t})),{type:"kanban",id:JSON.stringify(o)}])]:[{type:"kanBanTask",id:"LIST"}],v=async({projects:s=[],taskIds:r=[]},o)=>{try{const e=await o(j.endpoints.GetKanbanTasks.initiate({projects:s,taskIds:r},{forceRefetch:!0}));if(e.status==="rejected"||!e.data)throw console.error("No tasks found",r),new Error(`No tasks found ${r.join(", ")}`);return e.status!=="fulfilled"?[]:e.data}catch(e){return console.error(e),[]}},j=K.api.enhanceEndpoints({endpoints:{GetKanban:{transformResponse:h,providesTags:k,async onCacheEntryAdded({assignees:s=[],projects:r=[]}={},{updateCachedData:o,cacheDataLoaded:e,cacheEntryRemoved:t,dispatch:c}){let n;try{await e;const u=async({projects:q=[],taskIds:d=[]})=>{const p=await v({projects:q,taskIds:d},c),y=p.filter(a=>a.assignees.some(i=>s?.includes(i))),G=p.filter(a=>!a.assignees.some(i=>s?.includes(i)));o(a=>{y.forEach(i=>{const f=a.findIndex(b=>b.id===i.id);f===-1?a.push(i):a[f]=i}),G.forEach(i=>{const f=a.findIndex(b=>b.id===i.id);f!==-1&&a.splice(f,1)})})},l=async(q,d)=>{const p=d.project;if(!r?.includes(p))return console.log("project not selected");const y=d.summary.entityId;if(!y)return console.log("no entity id found");u({taskIds:[y],projects:[p]})};n=m.subscribe("entity.task",l)}catch(u){console.error(u)}await t,m.unsubscribe(n)}},GetKanbanTasks:{transformResponse:h,providesTags:k},GetKanbanProjectUsers:{transformResponse:(s,r,{projects:o}={})=>s.users.edges.map(({node:e})=>{const t=P(e.accessGroups);let n=!e.isManager&&!e.isAdmin?A(t):o;(typeof n=="string"||!n)&&(n=[]);const u=`/api/users/${e.name}/avatar`;return{...e,accessGroups:t,projects:n,avatarUrl:u}}),providesTags:s=>s?.length?[{type:"user",id:"LIST"},...s.map(({name:r})=>({type:"user",id:r}))]:[{type:"user",id:"LIST"}]}}}),{useGetKanbanQuery:I,useGetKanbanProjectUsersQuery:w}=j,T=j.injectEndpoints({endpoints:s=>({getProjectsInfo:s.query({async queryFn({projects:r=[],anatomy:o=!0},{dispatch:e}){try{const t={};for(const c of r){const n=c,u=[e(g.default.endpoints.getProject.initiate({projectName:n},{forceRefetch:!0})).unwrap(),...o?[e(g.default.endpoints.getProjectAnatomy.initiate({projectName:n},{forceRefetch:!0})).unwrap()]:[]],l=await Promise.allSettled(u),q=l[0],d=q.status==="fulfilled"?q.value:void 0,p=o&&l[1]?.status==="fulfilled"?l[1].value:void 0;d&&(t[n]={...d,anatomy:p})}return{data:t,meta:void 0,error:void 0}}catch(t){return console.error(t),{error:t,meta:void 0,data:void 0}}},providesTags:(r,o,{projects:e})=>e.map(t=>({type:"project",id:t}))})})}),{useGetProjectsInfoQuery:S}=T;exports.dashboardQueries=T;exports.getKanbanTasks=v;exports.useGetKanbanProjectUsersQuery=w;exports.useGetKanbanQuery=I;exports.useGetProjectsInfoQuery=S;
|
|
2
2
|
//# sourceMappingURL=getUserDashboard.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getUserDashboard.cjs.js","sources":["../../../../../../src/api/queries/userDashboard/getUserDashboard.ts"],"sourcesContent":["import {\n gqlApi,\n GetKanbanProjectUsersQuery,\n GetKanbanQuery,\n ProjectModel,\n KanbanNode,\n Anatomy,\n} from '@shared/api/generated'\nimport { projectQueries } from '@shared/api/queries/project'\nimport { PubSub } from '@shared/util'\nimport convertAccessGroupsData, { AccessGroups } from './convertAccessGroupsData'\n\n// GetKanban response type\nexport type GetKanbanResponse = KanbanNode[]\n\n// GetKanbanProjectUsers response type\nexport type KanbanProjectUserNode = Omit<\n GetKanbanProjectUsersQuery['users']['edges'][0]['node'],\n 'accessGroups'\n> & { accessGroups: AccessGroups; projects: string[]; avatarUrl: string }\nexport type GetKanbanProjectUsersResponse = KanbanProjectUserNode[]\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\nimport getUserProjectsAccess from './getUserProjectsAccess'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<\n Definitions,\n 'GetKanban' | 'GetKanbanTasks' | 'GetKanbanProjectUsers'\n> & {\n GetKanban: OverrideResultType<Definitions['GetKanban'], GetKanbanResponse>\n GetKanbanTasks: OverrideResultType<Definitions['GetKanbanTasks'], GetKanbanResponse>\n GetKanbanProjectUsers: OverrideResultType<\n Definitions['GetKanbanProjectUsers'],\n GetKanbanProjectUsersResponse\n >\n}\n\n// get edges and sort by task label || name\nconst transformKanban = (response: GetKanbanQuery) =>\n response.kanban.edges\n .map(({ node }) => node)\n .sort((a, b) => {\n const aLabel = a.label || a.name\n const bLabel = b.label || b.name\n return aLabel.localeCompare(bLabel)\n })\n\nconst provideKanbanTags = (result: GetKanbanResponse | undefined, _error: any, args: any) =>\n result?.length\n ? [\n { type: 'kanBanTask', id: 'LIST' },\n ...result.flatMap(({ id, projectName, assignees }) => [\n { type: 'task', id },\n { type: 'kanban', id: 'project-' + projectName },\n ...assignees.map((assignee) => ({ type: 'kanban', id: 'user-' + assignee })),\n ...assignees.map((assignee) => ({\n type: 'kanban',\n id: 'user-' + assignee + '-project-' + projectName,\n })),\n { type: 'kanban', id: JSON.stringify(args) },\n ]),\n ]\n : [{ type: 'kanBanTask', id: 'LIST' }]\n\nexport const getKanbanTasks = async (\n {\n projects = [],\n taskIds = [],\n }: {\n projects: string[]\n taskIds: string[]\n },\n dispatch: ThunkDispatch<any, any, UnknownAction>,\n) => {\n try {\n // get the task\n const response = await dispatch(\n enhancedDashboardGraphqlApi.endpoints.GetKanbanTasks.initiate(\n { projects, taskIds },\n { forceRefetch: true },\n ),\n )\n\n if (response.status === 'rejected' || !response.data) {\n console.error('No tasks found', taskIds)\n throw new Error(`No tasks found ${taskIds.join(', ')}`)\n }\n\n if (response.status !== 'fulfilled') return []\n // get tasks from response (usually only one task)\n return response.data\n } catch (error) {\n console.error(error)\n return []\n }\n}\n\nconst enhancedDashboardGraphqlApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetKanban: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n async onCacheEntryAdded(\n { assignees = [], projects = [] } = {},\n { updateCachedData, cacheDataLoaded, cacheEntryRemoved, dispatch },\n ) {\n let token\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n const patchKanbanTask = async ({\n projects = [],\n taskIds = [],\n }: {\n projects: string[]\n taskIds: string[]\n }) => {\n const tasks = await getKanbanTasks({ projects, taskIds }, dispatch)\n\n // get all tasks that have been ADDED to the assignees\n const tasksWithArgAssignees = tasks.filter((task) =>\n task.assignees.some((assignee) => assignees?.includes(assignee)),\n )\n // get all tasks that have been REMOVED from the assignees\n const tasksWithoutArgAssignees = tasks.filter(\n (task) => !task.assignees.some((assignee) => assignees?.includes(assignee)),\n )\n\n // patch the kanban query by adding new tasks and remove old tasks\n updateCachedData((draft) => {\n // add new tasks\n tasksWithArgAssignees.forEach((task) => {\n const index = draft.findIndex((t) => t.id === task.id)\n if (index === -1) {\n draft.push(task)\n } else {\n // update the task\n draft[index] = task\n }\n })\n // remove old tasks\n tasksWithoutArgAssignees.forEach((task) => {\n const index = draft.findIndex((t) => t.id === task.id)\n if (index !== -1) {\n draft.splice(index, 1)\n }\n })\n })\n }\n\n const handlePubSub = async (_topic: string, message: any) => {\n const project = message.project as string\n // first check the project name as selected\n if (!projects?.includes(project)) return console.log('project not selected')\n // then get entity id\n const entityId = message.summary.entityId\n if (!entityId) return console.log('no entity id found')\n\n // patch task updates into kanban cache\n patchKanbanTask({\n taskIds: [entityId],\n projects: [project],\n })\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (error) {\n console.error(error)\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n },\n // // there is only one cache for kanban\n // serializeQueryArgs: () => '',\n // // whenever the assignees or projects change, we need to refetch the one query\n // forceRefetch: (params) => {\n // const { currentArg, previousArg } = params\n // // if the assignees are different, we need to refetch the query\n // if (!isEqual(currentArg?.assignees, previousArg?.assignees)) return true\n // // if the projects are different, we need to refetch the query\n // if (!isEqual(currentArg?.projects, previousArg?.projects)) return true\n // return false\n // },\n },\n // same query as GetKanban but for specific tasks\n // used mainly for patching tasks into the kanban cache\n GetKanbanTasks: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n },\n // get all users on all selected projects\n GetKanbanProjectUsers: {\n transformResponse: (response: GetKanbanProjectUsersQuery, _meta, { projects } = {}) =>\n response.users.edges.map(({ node: user }) => {\n const accessGroups = convertAccessGroupsData(user.accessGroups)\n // parse access groups json\n const isUser = !user.isManager && !user.isAdmin\n // get the projects that the user has access to\n let projectsAccess = isUser ? getUserProjectsAccess(accessGroups) : projects\n if (typeof projectsAccess === 'string' || !projectsAccess) projectsAccess = []\n\n // assignees select requires avatarUrl\n const avatarUrl = `/api/users/${user.name}/avatar`\n\n return {\n ...user,\n accessGroups: accessGroups,\n projects: projectsAccess,\n avatarUrl,\n }\n }),\n providesTags: (result) =>\n result?.length\n ? [\n { type: 'user', id: 'LIST' },\n ...result.map(({ name }) => ({ type: 'user', id: name })),\n ]\n : [{ type: 'user', id: 'LIST' }],\n },\n },\n})\n\nexport const { useGetKanbanQuery, useGetKanbanProjectUsersQuery } = enhancedDashboardGraphqlApi\n\ntype GetProjectsInfoParams = {\n projects: string[]\n}\n\nexport type ProjectModeWithAnatomy = ProjectModel & { anatomy?: Anatomy }\n\nexport type GetProjectsInfoResponse = { [projectName: string]: ProjectModeWithAnatomy | undefined }\n\nconst injectedDashboardRestApi = enhancedDashboardGraphqlApi.injectEndpoints({\n endpoints: (build) => ({\n getProjectsInfo: build.query<GetProjectsInfoResponse, GetProjectsInfoParams>({\n async queryFn({ projects = [] }, { dispatch }) {\n try {\n // get project info for each project\n const projectInfo: Record<string, ProjectModeWithAnatomy | undefined> = {}\n for (const project of projects) {\n const projectName = project as string\n // hopefully this will be cached\n // it also allows for different combination of projects but still use the cache\n const responses = [\n dispatch(\n projectQueries.endpoints.getProject.initiate(\n { projectName },\n { forceRefetch: true },\n ),\n ).unwrap(),\n dispatch(\n projectQueries.endpoints.getProjectAnatomy.initiate(\n { projectName },\n { forceRefetch: true },\n ),\n ).unwrap(),\n ]\n\n const response = await Promise.all(responses)\n\n const projectData = response[0] as ProjectModel | undefined\n const anatomyData = response[1] as Anatomy | undefined\n\n if (projectData) {\n projectInfo[projectName] = { ...projectData, anatomy: anatomyData }\n }\n }\n\n return { data: projectInfo, meta: undefined, error: undefined }\n } catch (error: any) {\n console.error(error)\n return { error, meta: undefined, data: undefined }\n }\n },\n providesTags: (_res, _error, { projects }) =>\n projects.map((projectName) => ({ type: 'project', id: projectName })),\n }),\n }),\n})\n\nexport const { useGetProjectsInfoQuery } = injectedDashboardRestApi\nexport { injectedDashboardRestApi as dashboardQueries }\n"],"names":["transformKanban","response","node","a","b","aLabel","bLabel","provideKanbanTags","result","_error","args","id","projectName","assignees","assignee","getKanbanTasks","projects","taskIds","dispatch","enhancedDashboardGraphqlApi","error","gqlApi","updateCachedData","cacheDataLoaded","cacheEntryRemoved","token","patchKanbanTask","tasks","tasksWithArgAssignees","task","tasksWithoutArgAssignees","draft","index","t","handlePubSub","_topic","message","project","entityId","PubSub","_meta","user","accessGroups","convertAccessGroupsData","projectsAccess","getUserProjectsAccess","avatarUrl","name","useGetKanbanQuery","useGetKanbanProjectUsersQuery","injectedDashboardRestApi","build","projectInfo","responses","projectQueries","projectData","anatomyData","_res","useGetProjectsInfoQuery"],"mappings":"s9DA0CMA,EAAmBC,GACvBA,EAAS,OAAO,MACb,IAAI,CAAC,CAAE,KAAAC,CAAA,IAAWA,CAAI,EACtB,KAAK,CAACC,EAAGC,IAAM,CACd,MAAMC,EAASF,EAAE,OAASA,EAAE,KACtBG,EAASF,EAAE,OAASA,EAAE,KAC5B,OAAOC,EAAO,cAAcC,CAAM,CACpC,CAAC,EAECC,EAAoB,CAACC,EAAuCC,EAAaC,IAC7EF,GAAQ,OACJ,CACE,CAAE,KAAM,aAAc,GAAI,MAAA,EAC1B,GAAGA,EAAO,QAAQ,CAAC,CAAE,GAAAG,EAAI,YAAAC,EAAa,UAAAC,KAAgB,CACpD,CAAE,KAAM,OAAQ,GAAAF,CAAA,EAChB,CAAE,KAAM,SAAU,GAAI,WAAaC,CAAA,EACnC,GAAGC,EAAU,IAAKC,IAAc,CAAE,KAAM,SAAU,GAAI,QAAUA,CAAA,EAAW,EAC3E,GAAGD,EAAU,IAAKC,IAAc,CAC9B,KAAM,SACN,GAAI,QAAUA,EAAW,YAAcF,CAAA,EACvC,EACF,CAAE,KAAM,SAAU,GAAI,KAAK,UAAUF,CAAI,CAAA,CAAE,CAC5C,CACH,EACA,CAAC,CAAE,KAAM,aAAc,GAAI,OAAQ,EAE5BK,EAAiB,MAC5B,CACE,SAAAC,EAAW,CAAA,EACX,QAAAC,EAAU,CAAA,CACZ,EAIAC,IACG,CACH,GAAI,CAEF,MAAMjB,EAAW,MAAMiB,EACrBC,EAA4B,UAAU,eAAe,SACnD,CAAE,SAAAH,EAAU,QAAAC,CAAA,EACZ,CAAE,aAAc,EAAA,CAAK,CACvB,EAGF,GAAIhB,EAAS,SAAW,YAAc,CAACA,EAAS,KAC9C,cAAQ,MAAM,iBAAkBgB,CAAO,EACjC,IAAI,MAAM,kBAAkBA,EAAQ,KAAK,IAAI,CAAC,EAAE,EAGxD,OAAIhB,EAAS,SAAW,YAAoB,CAAA,EAErCA,EAAS,IAClB,OAASmB,EAAO,CACd,eAAQ,MAAMA,CAAK,EACZ,CAAA,CACT,CACF,EAEMD,EAA8BE,EAAAA,IAAO,iBAA+C,CACxF,UAAW,CACT,UAAW,CACT,kBAAmBrB,EACnB,aAAcO,EACd,MAAM,kBACJ,CAAE,UAAAM,EAAY,CAAA,EAAI,SAAAG,EAAW,CAAA,CAAC,EAAM,CAAA,EACpC,CAAE,iBAAAM,EAAkB,gBAAAC,EAAiB,kBAAAC,EAAmB,SAAAN,GACxD,CACA,IAAIO,EACJ,GAAI,CAEF,MAAMF,EAEN,MAAMG,EAAkB,MAAO,CAC7B,SAAAV,EAAW,CAAA,EACX,QAAAC,EAAU,CAAA,CAAC,IAIP,CACJ,MAAMU,EAAQ,MAAMZ,EAAe,CAAE,SAAAC,EAAU,QAAAC,CAAA,EAAWC,CAAQ,EAG5DU,EAAwBD,EAAM,OAAQE,GAC1CA,EAAK,UAAU,KAAMf,GAAaD,GAAW,SAASC,CAAQ,CAAC,CAAA,EAG3DgB,EAA2BH,EAAM,OACpCE,GAAS,CAACA,EAAK,UAAU,KAAMf,GAAaD,GAAW,SAASC,CAAQ,CAAC,CAAA,EAI5EQ,EAAkBS,GAAU,CAE1BH,EAAsB,QAASC,GAAS,CACtC,MAAMG,EAAQD,EAAM,UAAWE,GAAMA,EAAE,KAAOJ,EAAK,EAAE,EACjDG,IAAU,GACZD,EAAM,KAAKF,CAAI,EAGfE,EAAMC,CAAK,EAAIH,CAEnB,CAAC,EAEDC,EAAyB,QAASD,GAAS,CACzC,MAAMG,EAAQD,EAAM,UAAWE,GAAMA,EAAE,KAAOJ,EAAK,EAAE,EACjDG,IAAU,IACZD,EAAM,OAAOC,EAAO,CAAC,CAEzB,CAAC,CACH,CAAC,CACH,EAEME,EAAe,MAAOC,EAAgBC,IAAiB,CAC3D,MAAMC,EAAUD,EAAQ,QAExB,GAAI,CAACpB,GAAU,SAASqB,CAAO,EAAG,OAAO,QAAQ,IAAI,sBAAsB,EAE3E,MAAMC,EAAWF,EAAQ,QAAQ,SACjC,GAAI,CAACE,EAAU,OAAO,QAAQ,IAAI,oBAAoB,EAGtDZ,EAAgB,CACd,QAAS,CAACY,CAAQ,EAClB,SAAU,CAACD,CAAO,CAAA,CACnB,CACH,EAGAZ,EAAQc,EAAO,UAAU,cAAeL,CAAY,CACtD,OAASd,EAAO,CACd,QAAQ,MAAMA,CAAK,CAGrB,CAEA,MAAMI,EAENe,EAAO,YAAYd,CAAK,CAC1B,CAAA,EAeF,eAAgB,CACd,kBAAmBzB,EACnB,aAAcO,CAAA,EAGhB,sBAAuB,CACrB,kBAAmB,CAACN,EAAsCuC,EAAO,CAAE,SAAAxB,GAAa,CAAA,IAC9Ef,EAAS,MAAM,MAAM,IAAI,CAAC,CAAE,KAAMwC,KAAW,CAC3C,MAAMC,EAAeC,EAAwBF,EAAK,YAAY,EAI9D,IAAIG,EAFW,CAACH,EAAK,WAAa,CAACA,EAAK,QAEVI,EAAsBH,CAAY,EAAI1B,GAChE,OAAO4B,GAAmB,UAAY,CAACA,OAAiC,CAAA,GAG5E,MAAME,EAAY,cAAcL,EAAK,IAAI,UAEzC,MAAO,CACL,GAAGA,EACH,aAAAC,EACA,SAAUE,EACV,UAAAE,CAAA,CAEJ,CAAC,EACH,aAAetC,GACbA,GAAQ,OACJ,CACE,CAAE,KAAM,OAAQ,GAAI,MAAA,EACpB,GAAGA,EAAO,IAAI,CAAC,CAAE,KAAAuC,CAAA,KAAY,CAAE,KAAM,OAAQ,GAAIA,GAAO,CAAA,EAE1D,CAAC,CAAE,KAAM,OAAQ,GAAI,OAAQ,CAAA,CACrC,CAEJ,CAAC,EAEY,CAAE,kBAAAC,EAAmB,8BAAAC,GAAkC9B,EAU9D+B,EAA2B/B,EAA4B,gBAAgB,CAC3E,UAAYgC,IAAW,CACrB,gBAAiBA,EAAM,MAAsD,CAC3E,MAAM,QAAQ,CAAE,SAAAnC,EAAW,CAAA,CAAC,EAAK,CAAE,SAAAE,CAAA,EAAY,CAC7C,GAAI,CAEF,MAAMkC,EAAkE,CAAA,EACxE,UAAWf,KAAWrB,EAAU,CAC9B,MAAMJ,EAAcyB,EAGdgB,EAAY,CAChBnC,EACEoC,UAAe,UAAU,WAAW,SAClC,CAAE,YAAA1C,CAAA,EACF,CAAE,aAAc,EAAA,CAAK,CACvB,EACA,OAAA,EACFM,EACEoC,UAAe,UAAU,kBAAkB,SACzC,CAAE,YAAA1C,CAAA,EACF,CAAE,aAAc,EAAA,CAAK,CACvB,EACA,OAAA,CAAO,EAGLX,EAAW,MAAM,QAAQ,IAAIoD,CAAS,EAEtCE,EAActD,EAAS,CAAC,EACxBuD,EAAcvD,EAAS,CAAC,EAE1BsD,IACFH,EAAYxC,CAAW,EAAI,CAAE,GAAG2C,EAAa,QAASC,CAAA,EAE1D,CAEA,MAAO,CAAE,KAAMJ,EAAa,KAAM,OAAW,MAAO,MAAA,CACtD,OAAShC,EAAY,CACnB,eAAQ,MAAMA,CAAK,EACZ,CAAE,MAAAA,EAAO,KAAM,OAAW,KAAM,MAAA,CACzC,CACF,EACA,aAAc,CAACqC,EAAMhD,EAAQ,CAAE,SAAAO,KAC7BA,EAAS,IAAKJ,IAAiB,CAAE,KAAM,UAAW,GAAIA,GAAc,CAAA,CACvE,CAAA,EAEL,CAAC,EAEY,CAAE,wBAAA8C,GAA4BR"}
|
|
1
|
+
{"version":3,"file":"getUserDashboard.cjs.js","sources":["../../../../../../src/api/queries/userDashboard/getUserDashboard.ts"],"sourcesContent":["import {\n gqlApi,\n GetKanbanProjectUsersQuery,\n GetKanbanQuery,\n ProjectModel,\n KanbanNode,\n Anatomy,\n} from '@shared/api/generated'\nimport { projectQueries } from '@shared/api/queries/project'\nimport { PubSub } from '@shared/util'\nimport convertAccessGroupsData, { AccessGroups } from './convertAccessGroupsData'\n\n// GetKanban response type\nexport type GetKanbanResponse = KanbanNode[]\n\n// GetKanbanProjectUsers response type\nexport type KanbanProjectUserNode = Omit<\n GetKanbanProjectUsersQuery['users']['edges'][0]['node'],\n 'accessGroups'\n> & { accessGroups: AccessGroups; projects: string[]; avatarUrl: string }\nexport type GetKanbanProjectUsersResponse = KanbanProjectUserNode[]\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\nimport getUserProjectsAccess from './getUserProjectsAccess'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<\n Definitions,\n 'GetKanban' | 'GetKanbanTasks' | 'GetKanbanProjectUsers'\n> & {\n GetKanban: OverrideResultType<Definitions['GetKanban'], GetKanbanResponse>\n GetKanbanTasks: OverrideResultType<Definitions['GetKanbanTasks'], GetKanbanResponse>\n GetKanbanProjectUsers: OverrideResultType<\n Definitions['GetKanbanProjectUsers'],\n GetKanbanProjectUsersResponse\n >\n}\n\n// get edges and sort by task label || name\nconst transformKanban = (response: GetKanbanQuery) =>\n response.kanban.edges\n .map(({ node }) => node)\n .sort((a, b) => {\n const aLabel = a.label || a.name\n const bLabel = b.label || b.name\n return aLabel.localeCompare(bLabel)\n })\n\nconst provideKanbanTags = (result: GetKanbanResponse | undefined, _error: any, args: any) =>\n result?.length\n ? [\n { type: 'kanBanTask', id: 'LIST' },\n ...result.flatMap(({ id, projectName, assignees }) => [\n { type: 'task', id },\n { type: 'kanban', id: 'project-' + projectName },\n ...assignees.map((assignee) => ({ type: 'kanban', id: 'user-' + assignee })),\n ...assignees.map((assignee) => ({\n type: 'kanban',\n id: 'user-' + assignee + '-project-' + projectName,\n })),\n { type: 'kanban', id: JSON.stringify(args) },\n ]),\n ]\n : [{ type: 'kanBanTask', id: 'LIST' }]\n\nexport const getKanbanTasks = async (\n {\n projects = [],\n taskIds = [],\n }: {\n projects: string[]\n taskIds: string[]\n },\n dispatch: ThunkDispatch<any, any, UnknownAction>,\n) => {\n try {\n // get the task\n const response = await dispatch(\n enhancedDashboardGraphqlApi.endpoints.GetKanbanTasks.initiate(\n { projects, taskIds },\n { forceRefetch: true },\n ),\n )\n\n if (response.status === 'rejected' || !response.data) {\n console.error('No tasks found', taskIds)\n throw new Error(`No tasks found ${taskIds.join(', ')}`)\n }\n\n if (response.status !== 'fulfilled') return []\n // get tasks from response (usually only one task)\n return response.data\n } catch (error) {\n console.error(error)\n return []\n }\n}\n\nconst enhancedDashboardGraphqlApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetKanban: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n async onCacheEntryAdded(\n { assignees = [], projects = [] } = {},\n { updateCachedData, cacheDataLoaded, cacheEntryRemoved, dispatch },\n ) {\n let token\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n const patchKanbanTask = async ({\n projects = [],\n taskIds = [],\n }: {\n projects: string[]\n taskIds: string[]\n }) => {\n const tasks = await getKanbanTasks({ projects, taskIds }, dispatch)\n\n // get all tasks that have been ADDED to the assignees\n const tasksWithArgAssignees = tasks.filter((task) =>\n task.assignees.some((assignee) => assignees?.includes(assignee)),\n )\n // get all tasks that have been REMOVED from the assignees\n const tasksWithoutArgAssignees = tasks.filter(\n (task) => !task.assignees.some((assignee) => assignees?.includes(assignee)),\n )\n\n // patch the kanban query by adding new tasks and remove old tasks\n updateCachedData((draft) => {\n // add new tasks\n tasksWithArgAssignees.forEach((task) => {\n const index = draft.findIndex((t) => t.id === task.id)\n if (index === -1) {\n draft.push(task)\n } else {\n // update the task\n draft[index] = task\n }\n })\n // remove old tasks\n tasksWithoutArgAssignees.forEach((task) => {\n const index = draft.findIndex((t) => t.id === task.id)\n if (index !== -1) {\n draft.splice(index, 1)\n }\n })\n })\n }\n\n const handlePubSub = async (_topic: string, message: any) => {\n const project = message.project as string\n // first check the project name as selected\n if (!projects?.includes(project)) return console.log('project not selected')\n // then get entity id\n const entityId = message.summary.entityId\n if (!entityId) return console.log('no entity id found')\n\n // patch task updates into kanban cache\n patchKanbanTask({\n taskIds: [entityId],\n projects: [project],\n })\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (error) {\n console.error(error)\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n },\n // // there is only one cache for kanban\n // serializeQueryArgs: () => '',\n // // whenever the assignees or projects change, we need to refetch the one query\n // forceRefetch: (params) => {\n // const { currentArg, previousArg } = params\n // // if the assignees are different, we need to refetch the query\n // if (!isEqual(currentArg?.assignees, previousArg?.assignees)) return true\n // // if the projects are different, we need to refetch the query\n // if (!isEqual(currentArg?.projects, previousArg?.projects)) return true\n // return false\n // },\n },\n // same query as GetKanban but for specific tasks\n // used mainly for patching tasks into the kanban cache\n GetKanbanTasks: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n },\n // get all users on all selected projects\n GetKanbanProjectUsers: {\n transformResponse: (response: GetKanbanProjectUsersQuery, _meta, { projects } = {}) =>\n response.users.edges.map(({ node: user }) => {\n const accessGroups = convertAccessGroupsData(user.accessGroups)\n // parse access groups json\n const isUser = !user.isManager && !user.isAdmin\n // get the projects that the user has access to\n let projectsAccess = isUser ? getUserProjectsAccess(accessGroups) : projects\n if (typeof projectsAccess === 'string' || !projectsAccess) projectsAccess = []\n\n // assignees select requires avatarUrl\n const avatarUrl = `/api/users/${user.name}/avatar`\n\n return {\n ...user,\n accessGroups: accessGroups,\n projects: projectsAccess,\n avatarUrl,\n }\n }),\n providesTags: (result) =>\n result?.length\n ? [\n { type: 'user', id: 'LIST' },\n ...result.map(({ name }) => ({ type: 'user', id: name })),\n ]\n : [{ type: 'user', id: 'LIST' }],\n },\n },\n})\n\nexport const { useGetKanbanQuery, useGetKanbanProjectUsersQuery } = enhancedDashboardGraphqlApi\n\ntype GetProjectsInfoParams = {\n projects: string[]\n anatomy?: boolean\n}\n\nexport type ProjectModeWithAnatomy = ProjectModel & { anatomy?: Anatomy }\n\nexport type GetProjectsInfoResponse = { [projectName: string]: ProjectModeWithAnatomy | undefined }\n\nconst injectedDashboardRestApi = enhancedDashboardGraphqlApi.injectEndpoints({\n endpoints: (build) => ({\n getProjectsInfo: build.query<GetProjectsInfoResponse, GetProjectsInfoParams>({\n async queryFn({ projects = [], anatomy = true }, { dispatch }) {\n try {\n // get project info for each project\n const projectInfo: Record<string, ProjectModeWithAnatomy | undefined> = {}\n for (const project of projects) {\n const projectName = project as string\n // hopefully this will be cached\n // it also allows for different combination of projects but still use the cache\n const responses = [\n dispatch(\n projectQueries.endpoints.getProject.initiate(\n { projectName },\n { forceRefetch: true },\n ),\n ).unwrap(),\n ...(anatomy\n ? [\n dispatch(\n projectQueries.endpoints.getProjectAnatomy.initiate(\n { projectName },\n { forceRefetch: true },\n ),\n ).unwrap(),\n ]\n : []),\n ]\n\n const settled = await Promise.allSettled(responses)\n\n const projectDataResult = settled[0]\n const projectData =\n projectDataResult.status === 'fulfilled'\n ? (projectDataResult.value as ProjectModel)\n : undefined\n const anatomyData =\n anatomy && settled[1]?.status === 'fulfilled'\n ? (settled[1].value as Anatomy)\n : undefined\n\n if (projectData) {\n projectInfo[projectName] = {\n ...projectData,\n anatomy: anatomyData,\n } as ProjectModeWithAnatomy\n }\n }\n\n return { data: projectInfo, meta: undefined, error: undefined }\n } catch (error: any) {\n console.error(error)\n return { error, meta: undefined, data: undefined }\n }\n },\n providesTags: (_res, _error, { projects }) =>\n projects.map((projectName) => ({ type: 'project', id: projectName })),\n }),\n }),\n})\n\nexport const { useGetProjectsInfoQuery } = injectedDashboardRestApi\nexport { injectedDashboardRestApi as dashboardQueries }\n"],"names":["transformKanban","response","node","a","b","aLabel","bLabel","provideKanbanTags","result","_error","args","id","projectName","assignees","assignee","getKanbanTasks","projects","taskIds","dispatch","enhancedDashboardGraphqlApi","error","gqlApi","updateCachedData","cacheDataLoaded","cacheEntryRemoved","token","patchKanbanTask","tasks","tasksWithArgAssignees","task","tasksWithoutArgAssignees","draft","index","t","handlePubSub","_topic","message","project","entityId","PubSub","_meta","user","accessGroups","convertAccessGroupsData","projectsAccess","getUserProjectsAccess","avatarUrl","name","useGetKanbanQuery","useGetKanbanProjectUsersQuery","injectedDashboardRestApi","build","anatomy","projectInfo","responses","projectQueries","settled","projectDataResult","projectData","anatomyData","_res","useGetProjectsInfoQuery"],"mappings":"s9DA0CMA,EAAmBC,GACvBA,EAAS,OAAO,MACb,IAAI,CAAC,CAAE,KAAAC,CAAA,IAAWA,CAAI,EACtB,KAAK,CAACC,EAAGC,IAAM,CACd,MAAMC,EAASF,EAAE,OAASA,EAAE,KACtBG,EAASF,EAAE,OAASA,EAAE,KAC5B,OAAOC,EAAO,cAAcC,CAAM,CACpC,CAAC,EAECC,EAAoB,CAACC,EAAuCC,EAAaC,IAC7EF,GAAQ,OACJ,CACE,CAAE,KAAM,aAAc,GAAI,MAAA,EAC1B,GAAGA,EAAO,QAAQ,CAAC,CAAE,GAAAG,EAAI,YAAAC,EAAa,UAAAC,KAAgB,CACpD,CAAE,KAAM,OAAQ,GAAAF,CAAA,EAChB,CAAE,KAAM,SAAU,GAAI,WAAaC,CAAA,EACnC,GAAGC,EAAU,IAAKC,IAAc,CAAE,KAAM,SAAU,GAAI,QAAUA,CAAA,EAAW,EAC3E,GAAGD,EAAU,IAAKC,IAAc,CAC9B,KAAM,SACN,GAAI,QAAUA,EAAW,YAAcF,CAAA,EACvC,EACF,CAAE,KAAM,SAAU,GAAI,KAAK,UAAUF,CAAI,CAAA,CAAE,CAC5C,CACH,EACA,CAAC,CAAE,KAAM,aAAc,GAAI,OAAQ,EAE5BK,EAAiB,MAC5B,CACE,SAAAC,EAAW,CAAA,EACX,QAAAC,EAAU,CAAA,CACZ,EAIAC,IACG,CACH,GAAI,CAEF,MAAMjB,EAAW,MAAMiB,EACrBC,EAA4B,UAAU,eAAe,SACnD,CAAE,SAAAH,EAAU,QAAAC,CAAA,EACZ,CAAE,aAAc,EAAA,CAAK,CACvB,EAGF,GAAIhB,EAAS,SAAW,YAAc,CAACA,EAAS,KAC9C,cAAQ,MAAM,iBAAkBgB,CAAO,EACjC,IAAI,MAAM,kBAAkBA,EAAQ,KAAK,IAAI,CAAC,EAAE,EAGxD,OAAIhB,EAAS,SAAW,YAAoB,CAAA,EAErCA,EAAS,IAClB,OAASmB,EAAO,CACd,eAAQ,MAAMA,CAAK,EACZ,CAAA,CACT,CACF,EAEMD,EAA8BE,EAAAA,IAAO,iBAA+C,CACxF,UAAW,CACT,UAAW,CACT,kBAAmBrB,EACnB,aAAcO,EACd,MAAM,kBACJ,CAAE,UAAAM,EAAY,CAAA,EAAI,SAAAG,EAAW,CAAA,CAAC,EAAM,CAAA,EACpC,CAAE,iBAAAM,EAAkB,gBAAAC,EAAiB,kBAAAC,EAAmB,SAAAN,GACxD,CACA,IAAIO,EACJ,GAAI,CAEF,MAAMF,EAEN,MAAMG,EAAkB,MAAO,CAC7B,SAAAV,EAAW,CAAA,EACX,QAAAC,EAAU,CAAA,CAAC,IAIP,CACJ,MAAMU,EAAQ,MAAMZ,EAAe,CAAE,SAAAC,EAAU,QAAAC,CAAA,EAAWC,CAAQ,EAG5DU,EAAwBD,EAAM,OAAQE,GAC1CA,EAAK,UAAU,KAAMf,GAAaD,GAAW,SAASC,CAAQ,CAAC,CAAA,EAG3DgB,EAA2BH,EAAM,OACpCE,GAAS,CAACA,EAAK,UAAU,KAAMf,GAAaD,GAAW,SAASC,CAAQ,CAAC,CAAA,EAI5EQ,EAAkBS,GAAU,CAE1BH,EAAsB,QAASC,GAAS,CACtC,MAAMG,EAAQD,EAAM,UAAWE,GAAMA,EAAE,KAAOJ,EAAK,EAAE,EACjDG,IAAU,GACZD,EAAM,KAAKF,CAAI,EAGfE,EAAMC,CAAK,EAAIH,CAEnB,CAAC,EAEDC,EAAyB,QAASD,GAAS,CACzC,MAAMG,EAAQD,EAAM,UAAWE,GAAMA,EAAE,KAAOJ,EAAK,EAAE,EACjDG,IAAU,IACZD,EAAM,OAAOC,EAAO,CAAC,CAEzB,CAAC,CACH,CAAC,CACH,EAEME,EAAe,MAAOC,EAAgBC,IAAiB,CAC3D,MAAMC,EAAUD,EAAQ,QAExB,GAAI,CAACpB,GAAU,SAASqB,CAAO,EAAG,OAAO,QAAQ,IAAI,sBAAsB,EAE3E,MAAMC,EAAWF,EAAQ,QAAQ,SACjC,GAAI,CAACE,EAAU,OAAO,QAAQ,IAAI,oBAAoB,EAGtDZ,EAAgB,CACd,QAAS,CAACY,CAAQ,EAClB,SAAU,CAACD,CAAO,CAAA,CACnB,CACH,EAGAZ,EAAQc,EAAO,UAAU,cAAeL,CAAY,CACtD,OAASd,EAAO,CACd,QAAQ,MAAMA,CAAK,CAGrB,CAEA,MAAMI,EAENe,EAAO,YAAYd,CAAK,CAC1B,CAAA,EAeF,eAAgB,CACd,kBAAmBzB,EACnB,aAAcO,CAAA,EAGhB,sBAAuB,CACrB,kBAAmB,CAACN,EAAsCuC,EAAO,CAAE,SAAAxB,GAAa,CAAA,IAC9Ef,EAAS,MAAM,MAAM,IAAI,CAAC,CAAE,KAAMwC,KAAW,CAC3C,MAAMC,EAAeC,EAAwBF,EAAK,YAAY,EAI9D,IAAIG,EAFW,CAACH,EAAK,WAAa,CAACA,EAAK,QAEVI,EAAsBH,CAAY,EAAI1B,GAChE,OAAO4B,GAAmB,UAAY,CAACA,OAAiC,CAAA,GAG5E,MAAME,EAAY,cAAcL,EAAK,IAAI,UAEzC,MAAO,CACL,GAAGA,EACH,aAAAC,EACA,SAAUE,EACV,UAAAE,CAAA,CAEJ,CAAC,EACH,aAAetC,GACbA,GAAQ,OACJ,CACE,CAAE,KAAM,OAAQ,GAAI,MAAA,EACpB,GAAGA,EAAO,IAAI,CAAC,CAAE,KAAAuC,CAAA,KAAY,CAAE,KAAM,OAAQ,GAAIA,GAAO,CAAA,EAE1D,CAAC,CAAE,KAAM,OAAQ,GAAI,OAAQ,CAAA,CACrC,CAEJ,CAAC,EAEY,CAAE,kBAAAC,EAAmB,8BAAAC,GAAkC9B,EAW9D+B,EAA2B/B,EAA4B,gBAAgB,CAC3E,UAAYgC,IAAW,CACrB,gBAAiBA,EAAM,MAAsD,CAC3E,MAAM,QAAQ,CAAE,SAAAnC,EAAW,CAAA,EAAI,QAAAoC,EAAU,EAAA,EAAQ,CAAE,SAAAlC,GAAY,CAC7D,GAAI,CAEF,MAAMmC,EAAkE,CAAA,EACxE,UAAWhB,KAAWrB,EAAU,CAC9B,MAAMJ,EAAcyB,EAGdiB,EAAY,CAChBpC,EACEqC,UAAe,UAAU,WAAW,SAClC,CAAE,YAAA3C,CAAA,EACF,CAAE,aAAc,EAAA,CAAK,CACvB,EACA,OAAA,EACF,GAAIwC,EACA,CACElC,EACEqC,UAAe,UAAU,kBAAkB,SACzC,CAAE,YAAA3C,CAAA,EACF,CAAE,aAAc,EAAA,CAAK,CACvB,EACA,OAAA,CAAO,EAEX,CAAA,CAAC,EAGD4C,EAAU,MAAM,QAAQ,WAAWF,CAAS,EAE5CG,EAAoBD,EAAQ,CAAC,EAC7BE,EACJD,EAAkB,SAAW,YACxBA,EAAkB,MACnB,OACAE,EACJP,GAAWI,EAAQ,CAAC,GAAG,SAAW,YAC7BA,EAAQ,CAAC,EAAE,MACZ,OAEFE,IACFL,EAAYzC,CAAW,EAAI,CACzB,GAAG8C,EACH,QAASC,CAAA,EAGf,CAEA,MAAO,CAAE,KAAMN,EAAa,KAAM,OAAW,MAAO,MAAA,CACtD,OAASjC,EAAY,CACnB,eAAQ,MAAMA,CAAK,EACZ,CAAE,MAAAA,EAAO,KAAM,OAAW,KAAM,MAAA,CACzC,CACF,EACA,aAAc,CAACwC,EAAMnD,EAAQ,CAAE,SAAAO,KAC7BA,EAAS,IAAKJ,IAAiB,CAAE,KAAM,UAAW,GAAIA,GAAc,CAAA,CACvE,CAAA,EAEL,CAAC,EAEY,CAAE,wBAAAiD,GAA4BX"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "../../base/client.es.js";
|
|
2
|
-
import { api as
|
|
2
|
+
import { api as A } from "../../generated/graphql.es.js";
|
|
3
3
|
import "../../generated/graphqlLinks.es.js";
|
|
4
4
|
import "../../generated/access.es.js";
|
|
5
5
|
import "../../generated/actions.es.js";
|
|
@@ -44,29 +44,29 @@ import "uuid";
|
|
|
44
44
|
import g from "../../../util/pubsub.es.js";
|
|
45
45
|
import G from "./convertAccessGroupsData.es.js";
|
|
46
46
|
import P from "./getUserProjectsAccess.es.js";
|
|
47
|
-
const k = (
|
|
48
|
-
const t = e.label || e.name,
|
|
49
|
-
return t.localeCompare(
|
|
50
|
-
}),
|
|
47
|
+
const k = (r) => r.kanban.edges.map(({ node: e }) => e).sort((e, n) => {
|
|
48
|
+
const t = e.label || e.name, o = n.label || n.name;
|
|
49
|
+
return t.localeCompare(o);
|
|
50
|
+
}), v = (r, e, n) => r?.length ? [
|
|
51
51
|
{ type: "kanBanTask", id: "LIST" },
|
|
52
|
-
...
|
|
52
|
+
...r.flatMap(({ id: t, projectName: o, assignees: p }) => [
|
|
53
53
|
{ type: "task", id: t },
|
|
54
|
-
{ type: "kanban", id: "project-" +
|
|
55
|
-
...
|
|
56
|
-
...
|
|
54
|
+
{ type: "kanban", id: "project-" + o },
|
|
55
|
+
...p.map((s) => ({ type: "kanban", id: "user-" + s })),
|
|
56
|
+
...p.map((s) => ({
|
|
57
57
|
type: "kanban",
|
|
58
|
-
id: "user-" + s + "-project-" +
|
|
58
|
+
id: "user-" + s + "-project-" + o
|
|
59
59
|
})),
|
|
60
|
-
{ type: "kanban", id: JSON.stringify(
|
|
60
|
+
{ type: "kanban", id: JSON.stringify(n) }
|
|
61
61
|
])
|
|
62
62
|
] : [{ type: "kanBanTask", id: "LIST" }], I = async ({
|
|
63
|
-
projects:
|
|
63
|
+
projects: r = [],
|
|
64
64
|
taskIds: e = []
|
|
65
|
-
},
|
|
65
|
+
}, n) => {
|
|
66
66
|
try {
|
|
67
|
-
const t = await
|
|
67
|
+
const t = await n(
|
|
68
68
|
j.endpoints.GetKanbanTasks.initiate(
|
|
69
|
-
{ projects:
|
|
69
|
+
{ projects: r, taskIds: e },
|
|
70
70
|
{ forceRefetch: !0 }
|
|
71
71
|
)
|
|
72
72
|
);
|
|
@@ -76,48 +76,48 @@ const k = (o) => o.kanban.edges.map(({ node: e }) => e).sort((e, r) => {
|
|
|
76
76
|
} catch (t) {
|
|
77
77
|
return console.error(t), [];
|
|
78
78
|
}
|
|
79
|
-
}, j =
|
|
79
|
+
}, j = A.enhanceEndpoints({
|
|
80
80
|
endpoints: {
|
|
81
81
|
GetKanban: {
|
|
82
82
|
transformResponse: k,
|
|
83
|
-
providesTags:
|
|
84
|
-
async onCacheEntryAdded({ assignees:
|
|
83
|
+
providesTags: v,
|
|
84
|
+
async onCacheEntryAdded({ assignees: r = [], projects: e = [] } = {}, { updateCachedData: n, cacheDataLoaded: t, cacheEntryRemoved: o, dispatch: p }) {
|
|
85
85
|
let s;
|
|
86
86
|
try {
|
|
87
87
|
await t;
|
|
88
88
|
const c = async ({
|
|
89
|
-
projects:
|
|
90
|
-
taskIds:
|
|
89
|
+
projects: l = [],
|
|
90
|
+
taskIds: m = []
|
|
91
91
|
}) => {
|
|
92
|
-
const
|
|
93
|
-
(
|
|
94
|
-
),
|
|
95
|
-
(
|
|
92
|
+
const d = await I({ projects: l, taskIds: m }, p), y = d.filter(
|
|
93
|
+
(a) => a.assignees.some((i) => r?.includes(i))
|
|
94
|
+
), T = d.filter(
|
|
95
|
+
(a) => !a.assignees.some((i) => r?.includes(i))
|
|
96
96
|
);
|
|
97
|
-
|
|
98
|
-
y.forEach((
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
}),
|
|
102
|
-
const
|
|
103
|
-
|
|
97
|
+
n((a) => {
|
|
98
|
+
y.forEach((i) => {
|
|
99
|
+
const f = a.findIndex((b) => b.id === i.id);
|
|
100
|
+
f === -1 ? a.push(i) : a[f] = i;
|
|
101
|
+
}), T.forEach((i) => {
|
|
102
|
+
const f = a.findIndex((b) => b.id === i.id);
|
|
103
|
+
f !== -1 && a.splice(f, 1);
|
|
104
104
|
});
|
|
105
105
|
});
|
|
106
|
-
}, u = async (
|
|
107
|
-
const
|
|
108
|
-
if (!e?.includes(
|
|
109
|
-
const y =
|
|
106
|
+
}, u = async (l, m) => {
|
|
107
|
+
const d = m.project;
|
|
108
|
+
if (!e?.includes(d)) return console.log("project not selected");
|
|
109
|
+
const y = m.summary.entityId;
|
|
110
110
|
if (!y) return console.log("no entity id found");
|
|
111
111
|
c({
|
|
112
112
|
taskIds: [y],
|
|
113
|
-
projects: [
|
|
113
|
+
projects: [d]
|
|
114
114
|
});
|
|
115
115
|
};
|
|
116
116
|
s = g.subscribe("entity.task", u);
|
|
117
117
|
} catch (c) {
|
|
118
118
|
console.error(c);
|
|
119
119
|
}
|
|
120
|
-
await
|
|
120
|
+
await o, g.unsubscribe(s);
|
|
121
121
|
}
|
|
122
122
|
// // there is only one cache for kanban
|
|
123
123
|
// serializeQueryArgs: () => '',
|
|
@@ -135,65 +135,70 @@ const k = (o) => o.kanban.edges.map(({ node: e }) => e).sort((e, r) => {
|
|
|
135
135
|
// used mainly for patching tasks into the kanban cache
|
|
136
136
|
GetKanbanTasks: {
|
|
137
137
|
transformResponse: k,
|
|
138
|
-
providesTags:
|
|
138
|
+
providesTags: v
|
|
139
139
|
},
|
|
140
140
|
// get all users on all selected projects
|
|
141
141
|
GetKanbanProjectUsers: {
|
|
142
|
-
transformResponse: (
|
|
143
|
-
const
|
|
144
|
-
let s = !t.isManager && !t.isAdmin ? P(
|
|
142
|
+
transformResponse: (r, e, { projects: n } = {}) => r.users.edges.map(({ node: t }) => {
|
|
143
|
+
const o = G(t.accessGroups);
|
|
144
|
+
let s = !t.isManager && !t.isAdmin ? P(o) : n;
|
|
145
145
|
(typeof s == "string" || !s) && (s = []);
|
|
146
146
|
const c = `/api/users/${t.name}/avatar`;
|
|
147
147
|
return {
|
|
148
148
|
...t,
|
|
149
|
-
accessGroups:
|
|
149
|
+
accessGroups: o,
|
|
150
150
|
projects: s,
|
|
151
151
|
avatarUrl: c
|
|
152
152
|
};
|
|
153
153
|
}),
|
|
154
|
-
providesTags: (
|
|
154
|
+
providesTags: (r) => r?.length ? [
|
|
155
155
|
{ type: "user", id: "LIST" },
|
|
156
|
-
...
|
|
156
|
+
...r.map(({ name: e }) => ({ type: "user", id: e }))
|
|
157
157
|
] : [{ type: "user", id: "LIST" }]
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
|
-
}), { useGetKanbanQuery: kt, useGetKanbanProjectUsersQuery:
|
|
161
|
-
endpoints: (
|
|
162
|
-
getProjectsInfo:
|
|
163
|
-
async queryFn({ projects: e = [] }, { dispatch:
|
|
160
|
+
}), { useGetKanbanQuery: kt, useGetKanbanProjectUsersQuery: vt } = j, K = j.injectEndpoints({
|
|
161
|
+
endpoints: (r) => ({
|
|
162
|
+
getProjectsInfo: r.query({
|
|
163
|
+
async queryFn({ projects: e = [], anatomy: n = !0 }, { dispatch: t }) {
|
|
164
164
|
try {
|
|
165
|
-
const
|
|
166
|
-
for (const
|
|
167
|
-
const
|
|
168
|
-
|
|
165
|
+
const o = {};
|
|
166
|
+
for (const p of e) {
|
|
167
|
+
const s = p, c = [
|
|
168
|
+
t(
|
|
169
169
|
h.endpoints.getProject.initiate(
|
|
170
|
-
{ projectName:
|
|
170
|
+
{ projectName: s },
|
|
171
171
|
{ forceRefetch: !0 }
|
|
172
172
|
)
|
|
173
173
|
).unwrap(),
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
174
|
+
...n ? [
|
|
175
|
+
t(
|
|
176
|
+
h.endpoints.getProjectAnatomy.initiate(
|
|
177
|
+
{ projectName: s },
|
|
178
|
+
{ forceRefetch: !0 }
|
|
179
|
+
)
|
|
180
|
+
).unwrap()
|
|
181
|
+
] : []
|
|
182
|
+
], u = await Promise.allSettled(c), l = u[0], m = l.status === "fulfilled" ? l.value : void 0, d = n && u[1]?.status === "fulfilled" ? u[1].value : void 0;
|
|
183
|
+
m && (o[s] = {
|
|
184
|
+
...m,
|
|
185
|
+
anatomy: d
|
|
186
|
+
});
|
|
182
187
|
}
|
|
183
|
-
return { data:
|
|
184
|
-
} catch (
|
|
185
|
-
return console.error(
|
|
188
|
+
return { data: o, meta: void 0, error: void 0 };
|
|
189
|
+
} catch (o) {
|
|
190
|
+
return console.error(o), { error: o, meta: void 0, data: void 0 };
|
|
186
191
|
}
|
|
187
192
|
},
|
|
188
|
-
providesTags: (e,
|
|
193
|
+
providesTags: (e, n, { projects: t }) => t.map((o) => ({ type: "project", id: o }))
|
|
189
194
|
})
|
|
190
195
|
})
|
|
191
|
-
}), { useGetProjectsInfoQuery:
|
|
196
|
+
}), { useGetProjectsInfoQuery: Tt } = K;
|
|
192
197
|
export {
|
|
193
198
|
K as dashboardQueries,
|
|
194
199
|
I as getKanbanTasks,
|
|
195
|
-
|
|
200
|
+
vt as useGetKanbanProjectUsersQuery,
|
|
196
201
|
kt as useGetKanbanQuery,
|
|
197
|
-
|
|
202
|
+
Tt as useGetProjectsInfoQuery
|
|
198
203
|
};
|
|
199
204
|
//# sourceMappingURL=getUserDashboard.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getUserDashboard.es.js","sources":["../../../../../../src/api/queries/userDashboard/getUserDashboard.ts"],"sourcesContent":["import {\n gqlApi,\n GetKanbanProjectUsersQuery,\n GetKanbanQuery,\n ProjectModel,\n KanbanNode,\n Anatomy,\n} from '@shared/api/generated'\nimport { projectQueries } from '@shared/api/queries/project'\nimport { PubSub } from '@shared/util'\nimport convertAccessGroupsData, { AccessGroups } from './convertAccessGroupsData'\n\n// GetKanban response type\nexport type GetKanbanResponse = KanbanNode[]\n\n// GetKanbanProjectUsers response type\nexport type KanbanProjectUserNode = Omit<\n GetKanbanProjectUsersQuery['users']['edges'][0]['node'],\n 'accessGroups'\n> & { accessGroups: AccessGroups; projects: string[]; avatarUrl: string }\nexport type GetKanbanProjectUsersResponse = KanbanProjectUserNode[]\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\nimport getUserProjectsAccess from './getUserProjectsAccess'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<\n Definitions,\n 'GetKanban' | 'GetKanbanTasks' | 'GetKanbanProjectUsers'\n> & {\n GetKanban: OverrideResultType<Definitions['GetKanban'], GetKanbanResponse>\n GetKanbanTasks: OverrideResultType<Definitions['GetKanbanTasks'], GetKanbanResponse>\n GetKanbanProjectUsers: OverrideResultType<\n Definitions['GetKanbanProjectUsers'],\n GetKanbanProjectUsersResponse\n >\n}\n\n// get edges and sort by task label || name\nconst transformKanban = (response: GetKanbanQuery) =>\n response.kanban.edges\n .map(({ node }) => node)\n .sort((a, b) => {\n const aLabel = a.label || a.name\n const bLabel = b.label || b.name\n return aLabel.localeCompare(bLabel)\n })\n\nconst provideKanbanTags = (result: GetKanbanResponse | undefined, _error: any, args: any) =>\n result?.length\n ? [\n { type: 'kanBanTask', id: 'LIST' },\n ...result.flatMap(({ id, projectName, assignees }) => [\n { type: 'task', id },\n { type: 'kanban', id: 'project-' + projectName },\n ...assignees.map((assignee) => ({ type: 'kanban', id: 'user-' + assignee })),\n ...assignees.map((assignee) => ({\n type: 'kanban',\n id: 'user-' + assignee + '-project-' + projectName,\n })),\n { type: 'kanban', id: JSON.stringify(args) },\n ]),\n ]\n : [{ type: 'kanBanTask', id: 'LIST' }]\n\nexport const getKanbanTasks = async (\n {\n projects = [],\n taskIds = [],\n }: {\n projects: string[]\n taskIds: string[]\n },\n dispatch: ThunkDispatch<any, any, UnknownAction>,\n) => {\n try {\n // get the task\n const response = await dispatch(\n enhancedDashboardGraphqlApi.endpoints.GetKanbanTasks.initiate(\n { projects, taskIds },\n { forceRefetch: true },\n ),\n )\n\n if (response.status === 'rejected' || !response.data) {\n console.error('No tasks found', taskIds)\n throw new Error(`No tasks found ${taskIds.join(', ')}`)\n }\n\n if (response.status !== 'fulfilled') return []\n // get tasks from response (usually only one task)\n return response.data\n } catch (error) {\n console.error(error)\n return []\n }\n}\n\nconst enhancedDashboardGraphqlApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetKanban: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n async onCacheEntryAdded(\n { assignees = [], projects = [] } = {},\n { updateCachedData, cacheDataLoaded, cacheEntryRemoved, dispatch },\n ) {\n let token\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n const patchKanbanTask = async ({\n projects = [],\n taskIds = [],\n }: {\n projects: string[]\n taskIds: string[]\n }) => {\n const tasks = await getKanbanTasks({ projects, taskIds }, dispatch)\n\n // get all tasks that have been ADDED to the assignees\n const tasksWithArgAssignees = tasks.filter((task) =>\n task.assignees.some((assignee) => assignees?.includes(assignee)),\n )\n // get all tasks that have been REMOVED from the assignees\n const tasksWithoutArgAssignees = tasks.filter(\n (task) => !task.assignees.some((assignee) => assignees?.includes(assignee)),\n )\n\n // patch the kanban query by adding new tasks and remove old tasks\n updateCachedData((draft) => {\n // add new tasks\n tasksWithArgAssignees.forEach((task) => {\n const index = draft.findIndex((t) => t.id === task.id)\n if (index === -1) {\n draft.push(task)\n } else {\n // update the task\n draft[index] = task\n }\n })\n // remove old tasks\n tasksWithoutArgAssignees.forEach((task) => {\n const index = draft.findIndex((t) => t.id === task.id)\n if (index !== -1) {\n draft.splice(index, 1)\n }\n })\n })\n }\n\n const handlePubSub = async (_topic: string, message: any) => {\n const project = message.project as string\n // first check the project name as selected\n if (!projects?.includes(project)) return console.log('project not selected')\n // then get entity id\n const entityId = message.summary.entityId\n if (!entityId) return console.log('no entity id found')\n\n // patch task updates into kanban cache\n patchKanbanTask({\n taskIds: [entityId],\n projects: [project],\n })\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (error) {\n console.error(error)\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n },\n // // there is only one cache for kanban\n // serializeQueryArgs: () => '',\n // // whenever the assignees or projects change, we need to refetch the one query\n // forceRefetch: (params) => {\n // const { currentArg, previousArg } = params\n // // if the assignees are different, we need to refetch the query\n // if (!isEqual(currentArg?.assignees, previousArg?.assignees)) return true\n // // if the projects are different, we need to refetch the query\n // if (!isEqual(currentArg?.projects, previousArg?.projects)) return true\n // return false\n // },\n },\n // same query as GetKanban but for specific tasks\n // used mainly for patching tasks into the kanban cache\n GetKanbanTasks: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n },\n // get all users on all selected projects\n GetKanbanProjectUsers: {\n transformResponse: (response: GetKanbanProjectUsersQuery, _meta, { projects } = {}) =>\n response.users.edges.map(({ node: user }) => {\n const accessGroups = convertAccessGroupsData(user.accessGroups)\n // parse access groups json\n const isUser = !user.isManager && !user.isAdmin\n // get the projects that the user has access to\n let projectsAccess = isUser ? getUserProjectsAccess(accessGroups) : projects\n if (typeof projectsAccess === 'string' || !projectsAccess) projectsAccess = []\n\n // assignees select requires avatarUrl\n const avatarUrl = `/api/users/${user.name}/avatar`\n\n return {\n ...user,\n accessGroups: accessGroups,\n projects: projectsAccess,\n avatarUrl,\n }\n }),\n providesTags: (result) =>\n result?.length\n ? [\n { type: 'user', id: 'LIST' },\n ...result.map(({ name }) => ({ type: 'user', id: name })),\n ]\n : [{ type: 'user', id: 'LIST' }],\n },\n },\n})\n\nexport const { useGetKanbanQuery, useGetKanbanProjectUsersQuery } = enhancedDashboardGraphqlApi\n\ntype GetProjectsInfoParams = {\n projects: string[]\n}\n\nexport type ProjectModeWithAnatomy = ProjectModel & { anatomy?: Anatomy }\n\nexport type GetProjectsInfoResponse = { [projectName: string]: ProjectModeWithAnatomy | undefined }\n\nconst injectedDashboardRestApi = enhancedDashboardGraphqlApi.injectEndpoints({\n endpoints: (build) => ({\n getProjectsInfo: build.query<GetProjectsInfoResponse, GetProjectsInfoParams>({\n async queryFn({ projects = [] }, { dispatch }) {\n try {\n // get project info for each project\n const projectInfo: Record<string, ProjectModeWithAnatomy | undefined> = {}\n for (const project of projects) {\n const projectName = project as string\n // hopefully this will be cached\n // it also allows for different combination of projects but still use the cache\n const responses = [\n dispatch(\n projectQueries.endpoints.getProject.initiate(\n { projectName },\n { forceRefetch: true },\n ),\n ).unwrap(),\n dispatch(\n projectQueries.endpoints.getProjectAnatomy.initiate(\n { projectName },\n { forceRefetch: true },\n ),\n ).unwrap(),\n ]\n\n const response = await Promise.all(responses)\n\n const projectData = response[0] as ProjectModel | undefined\n const anatomyData = response[1] as Anatomy | undefined\n\n if (projectData) {\n projectInfo[projectName] = { ...projectData, anatomy: anatomyData }\n }\n }\n\n return { data: projectInfo, meta: undefined, error: undefined }\n } catch (error: any) {\n console.error(error)\n return { error, meta: undefined, data: undefined }\n }\n },\n providesTags: (_res, _error, { projects }) =>\n projects.map((projectName) => ({ type: 'project', id: projectName })),\n }),\n }),\n})\n\nexport const { useGetProjectsInfoQuery } = injectedDashboardRestApi\nexport { injectedDashboardRestApi as dashboardQueries }\n"],"names":["transformKanban","response","node","a","b","aLabel","bLabel","provideKanbanTags","result","_error","args","id","projectName","assignees","assignee","getKanbanTasks","projects","taskIds","dispatch","enhancedDashboardGraphqlApi","error","gqlApi","updateCachedData","cacheDataLoaded","cacheEntryRemoved","token","patchKanbanTask","tasks","tasksWithArgAssignees","task","tasksWithoutArgAssignees","draft","index","t","handlePubSub","_topic","message","project","entityId","PubSub","_meta","user","accessGroups","convertAccessGroupsData","projectsAccess","getUserProjectsAccess","avatarUrl","name","useGetKanbanQuery","useGetKanbanProjectUsersQuery","injectedDashboardRestApi","build","projectInfo","responses","projectQueries","projectData","anatomyData","_res","useGetProjectsInfoQuery"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getUserDashboard.es.js","sources":["../../../../../../src/api/queries/userDashboard/getUserDashboard.ts"],"sourcesContent":["import {\n gqlApi,\n GetKanbanProjectUsersQuery,\n GetKanbanQuery,\n ProjectModel,\n KanbanNode,\n Anatomy,\n} from '@shared/api/generated'\nimport { projectQueries } from '@shared/api/queries/project'\nimport { PubSub } from '@shared/util'\nimport convertAccessGroupsData, { AccessGroups } from './convertAccessGroupsData'\n\n// GetKanban response type\nexport type GetKanbanResponse = KanbanNode[]\n\n// GetKanbanProjectUsers response type\nexport type KanbanProjectUserNode = Omit<\n GetKanbanProjectUsersQuery['users']['edges'][0]['node'],\n 'accessGroups'\n> & { accessGroups: AccessGroups; projects: string[]; avatarUrl: string }\nexport type GetKanbanProjectUsersResponse = KanbanProjectUserNode[]\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\nimport getUserProjectsAccess from './getUserProjectsAccess'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<\n Definitions,\n 'GetKanban' | 'GetKanbanTasks' | 'GetKanbanProjectUsers'\n> & {\n GetKanban: OverrideResultType<Definitions['GetKanban'], GetKanbanResponse>\n GetKanbanTasks: OverrideResultType<Definitions['GetKanbanTasks'], GetKanbanResponse>\n GetKanbanProjectUsers: OverrideResultType<\n Definitions['GetKanbanProjectUsers'],\n GetKanbanProjectUsersResponse\n >\n}\n\n// get edges and sort by task label || name\nconst transformKanban = (response: GetKanbanQuery) =>\n response.kanban.edges\n .map(({ node }) => node)\n .sort((a, b) => {\n const aLabel = a.label || a.name\n const bLabel = b.label || b.name\n return aLabel.localeCompare(bLabel)\n })\n\nconst provideKanbanTags = (result: GetKanbanResponse | undefined, _error: any, args: any) =>\n result?.length\n ? [\n { type: 'kanBanTask', id: 'LIST' },\n ...result.flatMap(({ id, projectName, assignees }) => [\n { type: 'task', id },\n { type: 'kanban', id: 'project-' + projectName },\n ...assignees.map((assignee) => ({ type: 'kanban', id: 'user-' + assignee })),\n ...assignees.map((assignee) => ({\n type: 'kanban',\n id: 'user-' + assignee + '-project-' + projectName,\n })),\n { type: 'kanban', id: JSON.stringify(args) },\n ]),\n ]\n : [{ type: 'kanBanTask', id: 'LIST' }]\n\nexport const getKanbanTasks = async (\n {\n projects = [],\n taskIds = [],\n }: {\n projects: string[]\n taskIds: string[]\n },\n dispatch: ThunkDispatch<any, any, UnknownAction>,\n) => {\n try {\n // get the task\n const response = await dispatch(\n enhancedDashboardGraphqlApi.endpoints.GetKanbanTasks.initiate(\n { projects, taskIds },\n { forceRefetch: true },\n ),\n )\n\n if (response.status === 'rejected' || !response.data) {\n console.error('No tasks found', taskIds)\n throw new Error(`No tasks found ${taskIds.join(', ')}`)\n }\n\n if (response.status !== 'fulfilled') return []\n // get tasks from response (usually only one task)\n return response.data\n } catch (error) {\n console.error(error)\n return []\n }\n}\n\nconst enhancedDashboardGraphqlApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetKanban: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n async onCacheEntryAdded(\n { assignees = [], projects = [] } = {},\n { updateCachedData, cacheDataLoaded, cacheEntryRemoved, dispatch },\n ) {\n let token\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n const patchKanbanTask = async ({\n projects = [],\n taskIds = [],\n }: {\n projects: string[]\n taskIds: string[]\n }) => {\n const tasks = await getKanbanTasks({ projects, taskIds }, dispatch)\n\n // get all tasks that have been ADDED to the assignees\n const tasksWithArgAssignees = tasks.filter((task) =>\n task.assignees.some((assignee) => assignees?.includes(assignee)),\n )\n // get all tasks that have been REMOVED from the assignees\n const tasksWithoutArgAssignees = tasks.filter(\n (task) => !task.assignees.some((assignee) => assignees?.includes(assignee)),\n )\n\n // patch the kanban query by adding new tasks and remove old tasks\n updateCachedData((draft) => {\n // add new tasks\n tasksWithArgAssignees.forEach((task) => {\n const index = draft.findIndex((t) => t.id === task.id)\n if (index === -1) {\n draft.push(task)\n } else {\n // update the task\n draft[index] = task\n }\n })\n // remove old tasks\n tasksWithoutArgAssignees.forEach((task) => {\n const index = draft.findIndex((t) => t.id === task.id)\n if (index !== -1) {\n draft.splice(index, 1)\n }\n })\n })\n }\n\n const handlePubSub = async (_topic: string, message: any) => {\n const project = message.project as string\n // first check the project name as selected\n if (!projects?.includes(project)) return console.log('project not selected')\n // then get entity id\n const entityId = message.summary.entityId\n if (!entityId) return console.log('no entity id found')\n\n // patch task updates into kanban cache\n patchKanbanTask({\n taskIds: [entityId],\n projects: [project],\n })\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (error) {\n console.error(error)\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n },\n // // there is only one cache for kanban\n // serializeQueryArgs: () => '',\n // // whenever the assignees or projects change, we need to refetch the one query\n // forceRefetch: (params) => {\n // const { currentArg, previousArg } = params\n // // if the assignees are different, we need to refetch the query\n // if (!isEqual(currentArg?.assignees, previousArg?.assignees)) return true\n // // if the projects are different, we need to refetch the query\n // if (!isEqual(currentArg?.projects, previousArg?.projects)) return true\n // return false\n // },\n },\n // same query as GetKanban but for specific tasks\n // used mainly for patching tasks into the kanban cache\n GetKanbanTasks: {\n transformResponse: transformKanban,\n providesTags: provideKanbanTags,\n },\n // get all users on all selected projects\n GetKanbanProjectUsers: {\n transformResponse: (response: GetKanbanProjectUsersQuery, _meta, { projects } = {}) =>\n response.users.edges.map(({ node: user }) => {\n const accessGroups = convertAccessGroupsData(user.accessGroups)\n // parse access groups json\n const isUser = !user.isManager && !user.isAdmin\n // get the projects that the user has access to\n let projectsAccess = isUser ? getUserProjectsAccess(accessGroups) : projects\n if (typeof projectsAccess === 'string' || !projectsAccess) projectsAccess = []\n\n // assignees select requires avatarUrl\n const avatarUrl = `/api/users/${user.name}/avatar`\n\n return {\n ...user,\n accessGroups: accessGroups,\n projects: projectsAccess,\n avatarUrl,\n }\n }),\n providesTags: (result) =>\n result?.length\n ? [\n { type: 'user', id: 'LIST' },\n ...result.map(({ name }) => ({ type: 'user', id: name })),\n ]\n : [{ type: 'user', id: 'LIST' }],\n },\n },\n})\n\nexport const { useGetKanbanQuery, useGetKanbanProjectUsersQuery } = enhancedDashboardGraphqlApi\n\ntype GetProjectsInfoParams = {\n projects: string[]\n anatomy?: boolean\n}\n\nexport type ProjectModeWithAnatomy = ProjectModel & { anatomy?: Anatomy }\n\nexport type GetProjectsInfoResponse = { [projectName: string]: ProjectModeWithAnatomy | undefined }\n\nconst injectedDashboardRestApi = enhancedDashboardGraphqlApi.injectEndpoints({\n endpoints: (build) => ({\n getProjectsInfo: build.query<GetProjectsInfoResponse, GetProjectsInfoParams>({\n async queryFn({ projects = [], anatomy = true }, { dispatch }) {\n try {\n // get project info for each project\n const projectInfo: Record<string, ProjectModeWithAnatomy | undefined> = {}\n for (const project of projects) {\n const projectName = project as string\n // hopefully this will be cached\n // it also allows for different combination of projects but still use the cache\n const responses = [\n dispatch(\n projectQueries.endpoints.getProject.initiate(\n { projectName },\n { forceRefetch: true },\n ),\n ).unwrap(),\n ...(anatomy\n ? [\n dispatch(\n projectQueries.endpoints.getProjectAnatomy.initiate(\n { projectName },\n { forceRefetch: true },\n ),\n ).unwrap(),\n ]\n : []),\n ]\n\n const settled = await Promise.allSettled(responses)\n\n const projectDataResult = settled[0]\n const projectData =\n projectDataResult.status === 'fulfilled'\n ? (projectDataResult.value as ProjectModel)\n : undefined\n const anatomyData =\n anatomy && settled[1]?.status === 'fulfilled'\n ? (settled[1].value as Anatomy)\n : undefined\n\n if (projectData) {\n projectInfo[projectName] = {\n ...projectData,\n anatomy: anatomyData,\n } as ProjectModeWithAnatomy\n }\n }\n\n return { data: projectInfo, meta: undefined, error: undefined }\n } catch (error: any) {\n console.error(error)\n return { error, meta: undefined, data: undefined }\n }\n },\n providesTags: (_res, _error, { projects }) =>\n projects.map((projectName) => ({ type: 'project', id: projectName })),\n }),\n }),\n})\n\nexport const { useGetProjectsInfoQuery } = injectedDashboardRestApi\nexport { injectedDashboardRestApi as dashboardQueries }\n"],"names":["transformKanban","response","node","a","b","aLabel","bLabel","provideKanbanTags","result","_error","args","id","projectName","assignees","assignee","getKanbanTasks","projects","taskIds","dispatch","enhancedDashboardGraphqlApi","error","gqlApi","updateCachedData","cacheDataLoaded","cacheEntryRemoved","token","patchKanbanTask","tasks","tasksWithArgAssignees","task","tasksWithoutArgAssignees","draft","index","t","handlePubSub","_topic","message","project","entityId","PubSub","_meta","user","accessGroups","convertAccessGroupsData","projectsAccess","getUserProjectsAccess","avatarUrl","name","useGetKanbanQuery","useGetKanbanProjectUsersQuery","injectedDashboardRestApi","build","anatomy","projectInfo","responses","projectQueries","settled","projectDataResult","projectData","anatomyData","_res","useGetProjectsInfoQuery"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const e=require("../../../../_virtual/jsx-runtime.cjs.js"),t=require("@ynput/ayon-react-components"),M=require("react"),m=require("./Menu.styled.cjs.js"),N=require("lodash"),P=require("react-router-dom"),C=require("clsx");require("../../context/RemoteModulesContext.cjs.js");require("../../context/DetailsPanelContext.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");const
|
|
1
|
+
"use strict";const e=require("../../../../_virtual/jsx-runtime.cjs.js"),t=require("@ynput/ayon-react-components"),M=require("react"),m=require("./Menu.styled.cjs.js"),N=require("lodash"),P=require("react-router-dom"),C=require("clsx");require("../../context/RemoteModulesContext.cjs.js");require("../../context/DetailsPanelContext.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");const L=require("../../context/PowerpackContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../context/MenuContext.cjs.js");require("../../context/WebsocketContext.cjs.js");require("../../context/GlobalContext.cjs.js");require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContext.cjs.js");require("../../context/UriContext.cjs.js");const q=M.forwardRef(({label:r,icon:i,img:n,highlighted:j,notification:l,selected:p,danger:R,items:d=[],className:h,isLink:o,isDev:g,shortcut:u,disabled:E,powerFeature:I,active:w,...c},y)=>{const x=N.isArray(r)?r:[r],{powerLicense:f}=L.usePowerpack(),s=!f&&I,a=e.jsxRuntimeExports.jsxs(m.Item,{ref:y,className:C("menu-item",{highlighted:j,selected:p,notification:l,danger:R,dev:g,disabled:E,power:s},h),...c,"aria-label":x.join(", "),children:[(i||s)&&e.jsxRuntimeExports.jsx(t.Icon,{icon:s?"bolt":i}),n&&e.jsxRuntimeExports.jsx(m.Img,{src:n,alt:`${r} icon`}),x.map((k,A)=>e.jsxRuntimeExports.jsx("span",{children:k},A)),u&&e.jsxRuntimeExports.jsx(t.ShortcutTag,{style:{minWidth:22,textAlign:"center"},align:"right",children:u}),w&&e.jsxRuntimeExports.jsx(t.Icon,{icon:"check",style:{marginLeft:"auto"}}),!!d.length&&e.jsxRuntimeExports.jsx(t.Icon,{icon:"arrow_right",className:"more"})]});return o?e.jsxRuntimeExports.jsx(P.Link,{to:o,target:c.target,children:a}):a});q.displayName="MenuItem";module.exports=q;
|
|
2
2
|
//# sourceMappingURL=MenuItem.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItem.cjs.js","sources":["../../../../../src/components/Menu/MenuItem.tsx"],"sourcesContent":["import { Icon, ShortcutTag } from '@ynput/ayon-react-components'\nimport React, { forwardRef } from 'react'\nimport * as Styled from './Menu.styled'\nimport { isArray } from 'lodash'\nimport { Link } from 'react-router-dom'\nimport clsx from 'clsx'\nimport { usePowerpack } from '@shared/context'\nimport { MenuItemType } from './Menu'\n\nexport interface MenuItemProps extends Omit<React.HTMLAttributes<HTMLElement>, 'label'> {\n label?: string | string[]\n icon?: string\n img?: string\n highlighted?: boolean\n notification?: boolean\n selected?: boolean\n danger?: boolean\n items?: MenuItemType[]\n isLink?: string\n isDev?: boolean\n shortcut?: string\n disabled?: boolean\n powerFeature?: string\n active?: boolean\n target?: string\n}\n\nconst MenuItem = forwardRef<HTMLLIElement, MenuItemProps>(\n (\n {\n label,\n icon,\n img,\n highlighted,\n notification,\n selected,\n danger,\n items = [],\n className,\n isLink,\n isDev,\n shortcut,\n disabled,\n powerFeature,\n active,\n ...props\n },\n ref,\n ) => {\n const labelsArray = isArray(label) ? label : [label]\n const { powerLicense
|
|
1
|
+
{"version":3,"file":"MenuItem.cjs.js","sources":["../../../../../src/components/Menu/MenuItem.tsx"],"sourcesContent":["import { Icon, ShortcutTag } from '@ynput/ayon-react-components'\nimport React, { forwardRef } from 'react'\nimport * as Styled from './Menu.styled'\nimport { isArray } from 'lodash'\nimport { Link } from 'react-router-dom'\nimport clsx from 'clsx'\nimport { usePowerpack } from '@shared/context'\nimport { MenuItemType } from './Menu'\n\nexport interface MenuItemProps extends Omit<React.HTMLAttributes<HTMLElement>, 'label'> {\n label?: string | string[]\n icon?: string\n img?: string\n highlighted?: boolean\n notification?: boolean\n selected?: boolean\n danger?: boolean\n items?: MenuItemType[]\n isLink?: string\n isDev?: boolean\n shortcut?: string\n disabled?: boolean\n powerFeature?: string\n active?: boolean\n target?: string\n}\n\nconst MenuItem = forwardRef<HTMLLIElement, MenuItemProps>(\n (\n {\n label,\n icon,\n img,\n highlighted,\n notification,\n selected,\n danger,\n items = [],\n className,\n isLink,\n isDev,\n shortcut,\n disabled,\n powerFeature,\n active,\n ...props\n },\n ref,\n ) => {\n const labelsArray = isArray(label) ? label : [label]\n const { powerLicense } = usePowerpack()\n const isPowerFeature = !powerLicense && powerFeature\n\n const Item = (\n <Styled.Item\n ref={ref}\n className={clsx(\n 'menu-item',\n {\n highlighted: highlighted,\n selected: selected,\n notification: notification,\n danger: danger,\n dev: isDev,\n disabled: disabled,\n power: isPowerFeature,\n },\n className,\n )}\n {...props}\n aria-label={labelsArray.join(', ')}\n >\n {(icon || isPowerFeature) && <Icon icon={isPowerFeature ? 'bolt' : icon!} />}\n {img && <Styled.Img src={img} alt={`${label} icon`} />}\n {labelsArray.map((label, index) => (\n <span key={index}>{label}</span>\n ))}\n {shortcut && (\n <ShortcutTag style={{ minWidth: 22, textAlign: 'center' }} align={'right'}>\n {shortcut}\n </ShortcutTag>\n )}\n {active && <Icon icon=\"check\" style={{ marginLeft: 'auto' }} />}\n\n {!!items.length && <Icon icon=\"arrow_right\" className=\"more\" />}\n </Styled.Item>\n )\n\n if (isLink) {\n return (\n <Link to={isLink} target={props.target}>\n {Item}\n </Link>\n )\n } else {\n return Item\n }\n },\n)\n\nMenuItem.displayName = 'MenuItem'\n\nexport default MenuItem\n"],"names":["MenuItem","forwardRef","label","icon","img","highlighted","notification","selected","danger","items","className","isLink","isDev","shortcut","disabled","powerFeature","active","props","ref","labelsArray","isArray","powerLicense","usePowerpack","isPowerFeature","Item","jsxs","Styled.Item","clsx","jsx","Icon","Styled.Img","index","ShortcutTag","Link"],"mappings":"6hCA2BA,MAAMA,EAAWC,EAAAA,WACf,CACE,CACE,MAAAC,EACA,KAAAC,EACA,IAAAC,EACA,YAAAC,EACA,aAAAC,EACA,SAAAC,EACA,OAAAC,EACA,MAAAC,EAAQ,CAAA,EACR,UAAAC,EACA,OAAAC,EACA,MAAAC,EACA,SAAAC,EACA,SAAAC,EACA,aAAAC,EACA,OAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CACH,MAAMC,EAAcC,EAAAA,QAAQlB,CAAK,EAAIA,EAAQ,CAACA,CAAK,EAC7C,CAAE,aAAAmB,CAAA,EAAiBC,eAAA,EACnBC,EAAiB,CAACF,GAAgBN,EAElCS,EACJC,EAAAA,kBAAAA,KAACC,EAAAA,KAAA,CACC,IAAAR,EACA,UAAWS,EACT,YACA,CACE,YAAAtB,EACA,SAAAE,EACA,aAAAD,EACA,OAAAE,EACA,IAAKI,EACL,SAAAE,EACA,MAAOS,CAAA,EAETb,CAAA,EAED,GAAGO,EACJ,aAAYE,EAAY,KAAK,IAAI,EAE/B,SAAA,EAAAhB,GAAQoB,IAAmBK,EAAAA,kBAAAA,IAACC,EAAAA,KAAA,CAAK,KAAMN,EAAiB,OAASpB,EAAO,EACzEC,GAAOwB,EAAAA,kBAAAA,IAACE,MAAA,CAAW,IAAK1B,EAAK,IAAK,GAAGF,CAAK,QAAS,EACnDiB,EAAY,IAAI,CAACjB,EAAO6B,4BACtB,OAAA,CAAkB,SAAA7B,CAAAA,EAAR6B,CAAc,CAC1B,EACAlB,GACCe,EAAAA,kBAAAA,IAACI,EAAAA,YAAA,CAAY,MAAO,CAAE,SAAU,GAAI,UAAW,QAAA,EAAY,MAAO,QAC/D,SAAAnB,CAAA,CACH,EAEDG,2BAAWa,EAAAA,KAAA,CAAK,KAAK,QAAQ,MAAO,CAAE,WAAY,MAAA,EAAU,EAE5D,CAAC,CAACpB,EAAM,gCAAWoB,EAAAA,KAAA,CAAK,KAAK,cAAc,UAAU,MAAA,CAAO,CAAA,CAAA,CAAA,EAIjE,OAAIlB,0BAECsB,EAAAA,KAAA,CAAK,GAAItB,EAAQ,OAAQM,EAAM,OAC7B,SAAAO,EACH,EAGKA,CAEX,CACF,EAEAxB,EAAS,YAAc"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { j as r } from "../../../../_virtual/jsx-runtime.es.js";
|
|
2
|
-
import { Icon as
|
|
3
|
-
import { forwardRef as
|
|
4
|
-
import { Item as
|
|
5
|
-
import { isArray as
|
|
2
|
+
import { Icon as m, ShortcutTag as L } from "@ynput/ayon-react-components";
|
|
3
|
+
import { forwardRef as M } from "react";
|
|
4
|
+
import { Item as P, Img as R } from "./Menu.styled.es.js";
|
|
5
|
+
import { isArray as $ } from "lodash";
|
|
6
6
|
import { Link as v } from "react-router-dom";
|
|
7
7
|
import E from "clsx";
|
|
8
8
|
import "../../context/RemoteModulesContext.es.js";
|
|
@@ -22,27 +22,27 @@ import "../../context/GlobalContext.es.js";
|
|
|
22
22
|
import "../../context/ProjectContext.es.js";
|
|
23
23
|
import "../../context/ProjectFoldersContext.es.js";
|
|
24
24
|
import "../../context/UriContext.es.js";
|
|
25
|
-
const S =
|
|
25
|
+
const S = M(
|
|
26
26
|
({
|
|
27
27
|
label: t,
|
|
28
|
-
icon:
|
|
28
|
+
icon: i,
|
|
29
29
|
img: e,
|
|
30
30
|
highlighted: l,
|
|
31
31
|
notification: f,
|
|
32
32
|
selected: x,
|
|
33
|
-
danger:
|
|
34
|
-
items:
|
|
35
|
-
className:
|
|
33
|
+
danger: j,
|
|
34
|
+
items: u = [],
|
|
35
|
+
className: d,
|
|
36
36
|
isLink: s,
|
|
37
|
-
isDev:
|
|
37
|
+
isDev: g,
|
|
38
38
|
shortcut: p,
|
|
39
39
|
disabled: h,
|
|
40
40
|
powerFeature: w,
|
|
41
41
|
active: I,
|
|
42
42
|
...n
|
|
43
43
|
}, y) => {
|
|
44
|
-
const a =
|
|
45
|
-
|
|
44
|
+
const a = $(t) ? t : [t], { powerLicense: A } = F(), o = !A && w, c = /* @__PURE__ */ r.jsxs(
|
|
45
|
+
P,
|
|
46
46
|
{
|
|
47
47
|
ref: y,
|
|
48
48
|
className: E(
|
|
@@ -51,22 +51,22 @@ const S = P(
|
|
|
51
51
|
highlighted: l,
|
|
52
52
|
selected: x,
|
|
53
53
|
notification: f,
|
|
54
|
-
danger:
|
|
55
|
-
dev:
|
|
56
|
-
disabled: h
|
|
54
|
+
danger: j,
|
|
55
|
+
dev: g,
|
|
56
|
+
disabled: h,
|
|
57
57
|
power: o
|
|
58
58
|
},
|
|
59
|
-
|
|
59
|
+
d
|
|
60
60
|
),
|
|
61
61
|
...n,
|
|
62
62
|
"aria-label": a.join(", "),
|
|
63
63
|
children: [
|
|
64
|
-
(
|
|
65
|
-
e && /* @__PURE__ */ r.jsx(
|
|
64
|
+
(i || o) && /* @__PURE__ */ r.jsx(m, { icon: o ? "bolt" : i }),
|
|
65
|
+
e && /* @__PURE__ */ r.jsx(R, { src: e, alt: `${t} icon` }),
|
|
66
66
|
a.map((N, k) => /* @__PURE__ */ r.jsx("span", { children: N }, k)),
|
|
67
|
-
p && /* @__PURE__ */ r.jsx(
|
|
68
|
-
I && /* @__PURE__ */ r.jsx(
|
|
69
|
-
!!
|
|
67
|
+
p && /* @__PURE__ */ r.jsx(L, { style: { minWidth: 22, textAlign: "center" }, align: "right", children: p }),
|
|
68
|
+
I && /* @__PURE__ */ r.jsx(m, { icon: "check", style: { marginLeft: "auto" } }),
|
|
69
|
+
!!u.length && /* @__PURE__ */ r.jsx(m, { icon: "arrow_right", className: "more" })
|
|
70
70
|
]
|
|
71
71
|
}
|
|
72
72
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItem.es.js","sources":["../../../../../src/components/Menu/MenuItem.tsx"],"sourcesContent":["import { Icon, ShortcutTag } from '@ynput/ayon-react-components'\nimport React, { forwardRef } from 'react'\nimport * as Styled from './Menu.styled'\nimport { isArray } from 'lodash'\nimport { Link } from 'react-router-dom'\nimport clsx from 'clsx'\nimport { usePowerpack } from '@shared/context'\nimport { MenuItemType } from './Menu'\n\nexport interface MenuItemProps extends Omit<React.HTMLAttributes<HTMLElement>, 'label'> {\n label?: string | string[]\n icon?: string\n img?: string\n highlighted?: boolean\n notification?: boolean\n selected?: boolean\n danger?: boolean\n items?: MenuItemType[]\n isLink?: string\n isDev?: boolean\n shortcut?: string\n disabled?: boolean\n powerFeature?: string\n active?: boolean\n target?: string\n}\n\nconst MenuItem = forwardRef<HTMLLIElement, MenuItemProps>(\n (\n {\n label,\n icon,\n img,\n highlighted,\n notification,\n selected,\n danger,\n items = [],\n className,\n isLink,\n isDev,\n shortcut,\n disabled,\n powerFeature,\n active,\n ...props\n },\n ref,\n ) => {\n const labelsArray = isArray(label) ? label : [label]\n const { powerLicense
|
|
1
|
+
{"version":3,"file":"MenuItem.es.js","sources":["../../../../../src/components/Menu/MenuItem.tsx"],"sourcesContent":["import { Icon, ShortcutTag } from '@ynput/ayon-react-components'\nimport React, { forwardRef } from 'react'\nimport * as Styled from './Menu.styled'\nimport { isArray } from 'lodash'\nimport { Link } from 'react-router-dom'\nimport clsx from 'clsx'\nimport { usePowerpack } from '@shared/context'\nimport { MenuItemType } from './Menu'\n\nexport interface MenuItemProps extends Omit<React.HTMLAttributes<HTMLElement>, 'label'> {\n label?: string | string[]\n icon?: string\n img?: string\n highlighted?: boolean\n notification?: boolean\n selected?: boolean\n danger?: boolean\n items?: MenuItemType[]\n isLink?: string\n isDev?: boolean\n shortcut?: string\n disabled?: boolean\n powerFeature?: string\n active?: boolean\n target?: string\n}\n\nconst MenuItem = forwardRef<HTMLLIElement, MenuItemProps>(\n (\n {\n label,\n icon,\n img,\n highlighted,\n notification,\n selected,\n danger,\n items = [],\n className,\n isLink,\n isDev,\n shortcut,\n disabled,\n powerFeature,\n active,\n ...props\n },\n ref,\n ) => {\n const labelsArray = isArray(label) ? label : [label]\n const { powerLicense } = usePowerpack()\n const isPowerFeature = !powerLicense && powerFeature\n\n const Item = (\n <Styled.Item\n ref={ref}\n className={clsx(\n 'menu-item',\n {\n highlighted: highlighted,\n selected: selected,\n notification: notification,\n danger: danger,\n dev: isDev,\n disabled: disabled,\n power: isPowerFeature,\n },\n className,\n )}\n {...props}\n aria-label={labelsArray.join(', ')}\n >\n {(icon || isPowerFeature) && <Icon icon={isPowerFeature ? 'bolt' : icon!} />}\n {img && <Styled.Img src={img} alt={`${label} icon`} />}\n {labelsArray.map((label, index) => (\n <span key={index}>{label}</span>\n ))}\n {shortcut && (\n <ShortcutTag style={{ minWidth: 22, textAlign: 'center' }} align={'right'}>\n {shortcut}\n </ShortcutTag>\n )}\n {active && <Icon icon=\"check\" style={{ marginLeft: 'auto' }} />}\n\n {!!items.length && <Icon icon=\"arrow_right\" className=\"more\" />}\n </Styled.Item>\n )\n\n if (isLink) {\n return (\n <Link to={isLink} target={props.target}>\n {Item}\n </Link>\n )\n } else {\n return Item\n }\n },\n)\n\nMenuItem.displayName = 'MenuItem'\n\nexport default MenuItem\n"],"names":["MenuItem","forwardRef","label","icon","img","highlighted","notification","selected","danger","items","className","isLink","isDev","shortcut","disabled","powerFeature","active","props","ref","labelsArray","isArray","powerLicense","usePowerpack","isPowerFeature","Item","jsxs","Styled.Item","clsx","jsx","Icon","Styled.Img","index","ShortcutTag","Link"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA2BA,MAAMA,IAAWC;AAAA,EACf,CACE;AAAA,IACE,OAAAC;AAAA,IACA,MAAAC;AAAA,IACA,KAAAC;AAAA,IACA,aAAAC;AAAA,IACA,cAAAC;AAAA,IACA,UAAAC;AAAA,IACA,QAAAC;AAAA,IACA,OAAAC,IAAQ,CAAA;AAAA,IACR,WAAAC;AAAA,IACA,QAAAC;AAAA,IACA,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,cAAAC;AAAA,IACA,QAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAcC,EAAQlB,CAAK,IAAIA,IAAQ,CAACA,CAAK,GAC7C,EAAE,cAAAmB,EAAA,IAAiBC,EAAA,GACnBC,IAAiB,CAACF,KAAgBN,GAElCS,IACJC,gBAAAA,EAAAA;AAAAA,MAACC;AAAAA,MAAA;AAAA,QACC,KAAAR;AAAA,QACA,WAAWS;AAAA,UACT;AAAA,UACA;AAAA,YACE,aAAAtB;AAAA,YACA,UAAAE;AAAA,YACA,cAAAD;AAAA,YACA,QAAAE;AAAA,YACA,KAAKI;AAAA,YACL,UAAAE;AAAA,YACA,OAAOS;AAAA,UAAA;AAAA,UAETb;AAAA,QAAA;AAAA,QAED,GAAGO;AAAA,QACJ,cAAYE,EAAY,KAAK,IAAI;AAAA,QAE/B,UAAA;AAAA,WAAAhB,KAAQoB,MAAmBK,gBAAAA,EAAAA,IAACC,GAAA,EAAK,MAAMN,IAAiB,SAASpB,GAAO;AAAA,UACzEC,KAAOwB,gBAAAA,EAAAA,IAACE,GAAA,EAAW,KAAK1B,GAAK,KAAK,GAAGF,CAAK,SAAS;AAAA,UACnDiB,EAAY,IAAI,CAACjB,GAAO6B,4BACtB,QAAA,EAAkB,UAAA7B,EAAAA,GAAR6B,CAAc,CAC1B;AAAA,UACAlB,KACCe,gBAAAA,EAAAA,IAACI,GAAA,EAAY,OAAO,EAAE,UAAU,IAAI,WAAW,SAAA,GAAY,OAAO,SAC/D,UAAAnB,EAAA,CACH;AAAA,UAEDG,2BAAWa,GAAA,EAAK,MAAK,SAAQ,OAAO,EAAE,YAAY,OAAA,GAAU;AAAA,UAE5D,CAAC,CAACpB,EAAM,gCAAWoB,GAAA,EAAK,MAAK,eAAc,WAAU,OAAA,CAAO;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAIjE,WAAIlB,0BAECsB,GAAA,EAAK,IAAItB,GAAQ,QAAQM,EAAM,QAC7B,UAAAO,GACH,IAGKA;AAAAA,EAEX;AACF;AAEAxB,EAAS,cAAc;"}
|
|
@@ -470,6 +470,7 @@ export declare const useGetKanbanQuery: <R extends Record<string, any> = import(
|
|
|
470
470
|
};
|
|
471
471
|
type GetProjectsInfoParams = {
|
|
472
472
|
projects: string[];
|
|
473
|
+
anatomy?: boolean;
|
|
473
474
|
};
|
|
474
475
|
export type ProjectModeWithAnatomy = ProjectModel & {
|
|
475
476
|
anatomy?: Anatomy;
|