@proteinjs/ui 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +21 -0
  3. package/dist/generated/index.d.ts +17 -0
  4. package/dist/generated/index.d.ts.map +1 -0
  5. package/dist/generated/index.js +40 -0
  6. package/dist/generated/index.js.map +1 -0
  7. package/dist/index.d.ts +15 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +31 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/src/container/AccountIconButton.d.ts +20 -0
  12. package/dist/src/container/AccountIconButton.d.ts.map +1 -0
  13. package/dist/src/container/AccountIconButton.js +112 -0
  14. package/dist/src/container/AccountIconButton.js.map +1 -0
  15. package/dist/src/container/NavMenu.d.ts +16 -0
  16. package/dist/src/container/NavMenu.d.ts.map +1 -0
  17. package/dist/src/container/NavMenu.js +51 -0
  18. package/dist/src/container/NavMenu.js.map +1 -0
  19. package/dist/src/container/PageContainer.d.ts +31 -0
  20. package/dist/src/container/PageContainer.d.ts.map +1 -0
  21. package/dist/src/container/PageContainer.js +75 -0
  22. package/dist/src/container/PageContainer.js.map +1 -0
  23. package/dist/src/form/Field.d.ts +34 -0
  24. package/dist/src/form/Field.d.ts.map +1 -0
  25. package/dist/src/form/Field.js +29 -0
  26. package/dist/src/form/Field.js.map +1 -0
  27. package/dist/src/form/Form.d.ts +46 -0
  28. package/dist/src/form/Form.d.ts.map +1 -0
  29. package/dist/src/form/Form.js +377 -0
  30. package/dist/src/form/Form.js.map +1 -0
  31. package/dist/src/form/FormButton.d.ts +28 -0
  32. package/dist/src/form/FormButton.d.ts.map +1 -0
  33. package/dist/src/form/FormButton.js +18 -0
  34. package/dist/src/form/FormButton.js.map +1 -0
  35. package/dist/src/form/FunctionalForm.d.ts +1 -0
  36. package/dist/src/form/FunctionalForm.d.ts.map +1 -0
  37. package/dist/src/form/FunctionalForm.js +328 -0
  38. package/dist/src/form/FunctionalForm.js.map +1 -0
  39. package/dist/src/form/container/FormPage.d.ts +4 -0
  40. package/dist/src/form/container/FormPage.d.ts.map +1 -0
  41. package/dist/src/form/container/FormPage.js +29 -0
  42. package/dist/src/form/container/FormPage.js.map +1 -0
  43. package/dist/src/form/container/FormPaper.d.ts +4 -0
  44. package/dist/src/form/container/FormPaper.d.ts.map +1 -0
  45. package/dist/src/form/container/FormPaper.js +27 -0
  46. package/dist/src/form/container/FormPaper.js.map +1 -0
  47. package/dist/src/form/fields/TextField.d.ts +6 -0
  48. package/dist/src/form/fields/TextField.d.ts.map +1 -0
  49. package/dist/src/form/fields/TextField.js +70 -0
  50. package/dist/src/form/fields/TextField.js.map +1 -0
  51. package/dist/src/list/NestedList.d.ts +14 -0
  52. package/dist/src/list/NestedList.d.ts.map +1 -0
  53. package/dist/src/list/NestedList.js +44 -0
  54. package/dist/src/list/NestedList.js.map +1 -0
  55. package/dist/src/router/Page.d.ts +28 -0
  56. package/dist/src/router/Page.d.ts.map +1 -0
  57. package/dist/src/router/Page.js +7 -0
  58. package/dist/src/router/Page.js.map +1 -0
  59. package/dist/src/router/Router.d.ts +14 -0
  60. package/dist/src/router/Router.d.ts.map +1 -0
  61. package/dist/src/router/Router.js +66 -0
  62. package/dist/src/router/Router.js.map +1 -0
  63. package/dist/src/router/createUrlParams.d.ts +4 -0
  64. package/dist/src/router/createUrlParams.d.ts.map +1 -0
  65. package/dist/src/router/createUrlParams.js +19 -0
  66. package/dist/src/router/createUrlParams.js.map +1 -0
  67. package/dist/src/router/withRouter.d.ts +7 -0
  68. package/dist/src/router/withRouter.d.ts.map +1 -0
  69. package/dist/src/router/withRouter.js +28 -0
  70. package/dist/src/router/withRouter.js.map +1 -0
  71. package/dist/src/table/Table.d.ts +14 -0
  72. package/dist/src/table/Table.d.ts.map +1 -0
  73. package/dist/src/table/Table.js +170 -0
  74. package/dist/src/table/Table.js.map +1 -0
  75. package/dist/src/table/TableButton.d.ts +12 -0
  76. package/dist/src/table/TableButton.d.ts.map +1 -0
  77. package/dist/src/table/TableButton.js +3 -0
  78. package/dist/src/table/TableButton.js.map +1 -0
  79. package/dist/src/table/TableLoader.d.ts +16 -0
  80. package/dist/src/table/TableLoader.d.ts.map +1 -0
  81. package/dist/src/table/TableLoader.js +57 -0
  82. package/dist/src/table/TableLoader.js.map +1 -0
  83. package/dist/src/table/TableToolbar.d.ts +10 -0
  84. package/dist/src/table/TableToolbar.d.ts.map +1 -0
  85. package/dist/src/table/TableToolbar.js +59 -0
  86. package/dist/src/table/TableToolbar.js.map +1 -0
  87. package/generated/index.ts +37 -0
  88. package/index.ts +20 -0
  89. package/jest.config.js +18 -0
  90. package/package.json +52 -0
  91. package/src/container/AccountIconButton.tsx +118 -0
  92. package/src/container/NavMenu.tsx +91 -0
  93. package/src/container/PageContainer.tsx +108 -0
  94. package/src/form/Field.tsx +51 -0
  95. package/src/form/Form.tsx +405 -0
  96. package/src/form/FormButton.tsx +30 -0
  97. package/src/form/FunctionalForm.tsx +364 -0
  98. package/src/form/container/FormPage.tsx +23 -0
  99. package/src/form/container/FormPaper.tsx +16 -0
  100. package/src/form/fields/TextField.tsx +71 -0
  101. package/src/list/NestedList.tsx +61 -0
  102. package/src/router/Page.ts +28 -0
  103. package/src/router/Router.tsx +76 -0
  104. package/src/router/createUrlParams.ts +16 -0
  105. package/src/router/withRouter.tsx +21 -0
  106. package/src/table/Table.tsx +195 -0
  107. package/src/table/TableButton.ts +12 -0
  108. package/src/table/TableLoader.ts +19 -0
  109. package/src/table/TableToolbar.tsx +99 -0
  110. package/tsconfig.json +18 -0
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { Page } from './Page';
3
+ export type AppOptions = {
4
+ pageContainer?: React.ComponentType<{
5
+ page: Page;
6
+ }>;
7
+ pageNotFound?: React.ComponentType;
8
+ };
9
+ export declare function loadApp(options?: AppOptions): void;
10
+ export declare function Router(props: {
11
+ pages: Page[];
12
+ options: AppOptions;
13
+ }): React.JSX.Element;
14
+ //# sourceMappingURL=Router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../../src/router/Router.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAAE,IAAI,EAAY,MAAM,QAAQ,CAAC;AAGxC,MAAM,MAAM,UAAU,GAAG;IACrB,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IACpD,YAAY,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;CACrC,CAAA;AAED,wBAAgB,OAAO,CAAC,OAAO,GAAE,UAAe,QAI/C;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,qBAiDnE"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Router = exports.loadApp = void 0;
7
+ var react_1 = __importDefault(require("react"));
8
+ var react_router_1 = require("react-router");
9
+ var client_1 = require("react-dom/client");
10
+ var react_router_dom_1 = require("react-router-dom");
11
+ var material_1 = require("@mui/material");
12
+ var Page_1 = require("./Page");
13
+ var createUrlParams_1 = require("./createUrlParams");
14
+ function loadApp(options) {
15
+ if (options === void 0) { options = {}; }
16
+ var container = document.getElementById('app');
17
+ var root = (0, client_1.createRoot)(container);
18
+ root.render(react_1.default.createElement(Router, { pages: (0, Page_1.getPages)(), options: options }));
19
+ }
20
+ exports.loadApp = loadApp;
21
+ function Router(props) {
22
+ var pages = props.pages, options = props.options;
23
+ return (react_1.default.createElement("div", null,
24
+ react_1.default.createElement(material_1.CssBaseline, null),
25
+ react_1.default.createElement(react_router_dom_1.BrowserRouter, null,
26
+ react_1.default.createElement(RoutesComponent, null))));
27
+ function RoutesComponent() {
28
+ var navigate = (0, react_router_dom_1.useNavigate)();
29
+ return (react_1.default.createElement(react_router_1.Routes, null,
30
+ (function () {
31
+ var routes = [];
32
+ var key = 0;
33
+ for (var _i = 0, pages_1 = pages; _i < pages_1.length; _i++) {
34
+ var page = pages_1[_i];
35
+ if (typeof page.path === 'string')
36
+ routes.push(react_1.default.createElement(react_router_1.Route, { key: key++, path: getPath(page.path), element: react_1.default.createElement(ContainerizedComponent, { options: options, page: page, navigate: navigate }) }));
37
+ else {
38
+ var paths = page.path;
39
+ for (var _a = 0, paths_1 = paths; _a < paths_1.length; _a++) {
40
+ var path = paths_1[_a];
41
+ routes.push(react_1.default.createElement(react_router_1.Route, { key: key++, path: getPath(path), element: react_1.default.createElement(ContainerizedComponent, { options: options, page: page, navigate: navigate }) }));
42
+ }
43
+ }
44
+ }
45
+ return routes;
46
+ })(),
47
+ react_1.default.createElement(react_router_1.Route, { element: react_1.default.createElement(PageNotFound, { pageNotFound: options.pageNotFound }) })));
48
+ }
49
+ function ContainerizedComponent(props) {
50
+ if (props.options.pageContainer && !props.page.noPageContainer)
51
+ return (react_1.default.createElement(props.options.pageContainer, { page: props.page }));
52
+ return (react_1.default.createElement(props.page.component, { urlParams: (0, createUrlParams_1.createUrlParams)(), navigate: props.navigate }));
53
+ }
54
+ function PageNotFound(props) {
55
+ if (props.pageNotFound)
56
+ return (react_1.default.createElement(props.pageNotFound, null));
57
+ return react_1.default.createElement("h1", null, "404: Page not found");
58
+ }
59
+ }
60
+ exports.Router = Router;
61
+ function getPath(path) {
62
+ if (path.startsWith('/'))
63
+ return path;
64
+ return "/".concat(path);
65
+ }
66
+ //# sourceMappingURL=Router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Router.js","sourceRoot":"","sources":["../../../src/router/Router.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function createUrlParams(): {
2
+ [paramName: string]: string;
3
+ };
4
+ //# sourceMappingURL=createUrlParams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createUrlParams.d.ts","sourceRoot":"","sources":["../../../src/router/createUrlParams.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe;;EAa9B"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createUrlParams = void 0;
4
+ var react_router_1 = require("react-router");
5
+ function createUrlParams() {
6
+ var urlParams = {};
7
+ var location = (0, react_router_1.useLocation)();
8
+ var serializedParams = location.search.substring(1).split('&');
9
+ for (var _i = 0, serializedParams_1 = serializedParams; _i < serializedParams_1.length; _i++) {
10
+ var serializedParam = serializedParams_1[_i];
11
+ if (serializedParam === '')
12
+ continue;
13
+ var kvp = serializedParam.split('=');
14
+ urlParams[decodeURIComponent(kvp[0])] = decodeURIComponent(kvp[1]);
15
+ }
16
+ return urlParams;
17
+ }
18
+ exports.createUrlParams = createUrlParams;
19
+ //# sourceMappingURL=createUrlParams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createUrlParams.js","sourceRoot":"","sources":["../../../src/router/createUrlParams.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAE3C,SAAgB,eAAe;IAC7B,IAAM,SAAS,GAAkC,EAAE,CAAC;IACpD,IAAM,QAAQ,GAAG,IAAA,0BAAW,GAAE,CAAC;IAC/B,IAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjE,KAA4B,UAAgB,EAAhB,qCAAgB,EAAhB,8BAAgB,EAAhB,IAAgB,EAAE;QAAzC,IAAI,eAAe,yBAAA;QACpB,IAAI,eAAe,KAAK,EAAE;YACtB,SAAS;QAEb,IAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KACtE;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAbD,0CAaC"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { NavigateFunction } from 'react-router-dom';
3
+ export type WithRouterProps = {
4
+ navigate: NavigateFunction;
5
+ };
6
+ export declare const withRouter: (Component: typeof React.Component) => (props: any) => React.JSX.Element;
7
+ //# sourceMappingURL=withRouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withRouter.d.ts","sourceRoot":"","sources":["../../../src/router/withRouter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAe,MAAM,kBAAkB,CAAC;AAEjE,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,gBAAgB,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,UAAU,iDACG,GAAG,sBAY5B,CAAC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.withRouter = void 0;
18
+ var react_1 = __importDefault(require("react"));
19
+ var react_router_dom_1 = require("react-router-dom");
20
+ var withRouter = function (Component) {
21
+ var Wrapper = function (props) {
22
+ var navigate = (0, react_router_dom_1.useNavigate)();
23
+ return (react_1.default.createElement(Component, __assign({ navigate: navigate }, props)));
24
+ };
25
+ return Wrapper;
26
+ };
27
+ exports.withRouter = withRouter;
28
+ //# sourceMappingURL=withRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withRouter.js","sourceRoot":"","sources":["../../../src/router/withRouter.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,gDAA0B;AAC1B,qDAAiE;AAM1D,IAAM,UAAU,GAAG,UAAC,SAAiC;IAC1D,IAAM,OAAO,GAAG,UAAC,KAAU;QACzB,IAAM,QAAQ,GAAG,IAAA,8BAAW,GAAE,CAAC;QAE/B,OAAO,CACL,8BAAC,SAAS,aACN,QAAQ,EAAE,QAAQ,IACd,KAAK,EACT,CACL,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAbW,QAAA,UAAU,cAarB"}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { TableLoader } from './TableLoader';
3
+ import { TableButton } from './TableButton';
4
+ export type TableProps<T> = {
5
+ title?: string;
6
+ description?: () => JSX.Element;
7
+ columns: (keyof T)[];
8
+ tableLoader: TableLoader<T>;
9
+ rowOnClickRedirectUrl?: (row: T) => Promise<string>;
10
+ defaultRowsPerPage?: number;
11
+ buttons?: TableButton<T>[];
12
+ };
13
+ export declare function Table<T>({ title, description, columns, tableLoader, rowOnClickRedirectUrl, defaultRowsPerPage, buttons }: TableProps<T>): React.JSX.Element;
14
+ //# sourceMappingURL=Table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../src/table/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAG3C,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAChC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5B,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;CAC5B,CAAA;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,kBAAuB,EAAE,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,qBA8K5I"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.Table = void 0;
43
+ var react_1 = __importDefault(require("react"));
44
+ var react_router_dom_1 = require("react-router-dom");
45
+ var material_1 = require("@mui/material");
46
+ var moment_1 = __importDefault(require("moment"));
47
+ var util_1 = require("@proteinjs/util");
48
+ var TableToolbar_1 = require("./TableToolbar");
49
+ function Table(_a) {
50
+ var _this = this;
51
+ var title = _a.title, description = _a.description, columns = _a.columns, tableLoader = _a.tableLoader, rowOnClickRedirectUrl = _a.rowOnClickRedirectUrl, _b = _a.defaultRowsPerPage, defaultRowsPerPage = _b === void 0 ? 10 : _b, buttons = _a.buttons;
52
+ var _c = react_1.default.useState(defaultRowsPerPage), rowsPerPage = _c[0], setRowsPerPage = _c[1];
53
+ var _d = react_1.default.useState(0), page = _d[0], setPage = _d[1];
54
+ var _e = react_1.default.useState(0), totalRows = _e[0], setTotalRows = _e[1];
55
+ var _f = react_1.default.useState([]), rows = _f[0], setRows = _f[1];
56
+ var _g = react_1.default.useState({}), selectedRows = _g[0], setSelectedRows = _g[1];
57
+ var _h = react_1.default.useState(false), selectAll = _h[0], setSelectAll = _h[1];
58
+ var navigate = (0, react_router_dom_1.useNavigate)();
59
+ react_1.default.useEffect(function () {
60
+ var fetchData = function () { return __awaiter(_this, void 0, void 0, function () {
61
+ var startIndex, endIndex, rowWindow;
62
+ return __generator(this, function (_a) {
63
+ switch (_a.label) {
64
+ case 0:
65
+ startIndex = page * rowsPerPage;
66
+ endIndex = startIndex + rowsPerPage;
67
+ return [4 /*yield*/, tableLoader.load(startIndex, endIndex)];
68
+ case 1:
69
+ rowWindow = _a.sent();
70
+ setRows(rowWindow.rows);
71
+ setTotalRows(rowWindow.totalCount);
72
+ return [2 /*return*/];
73
+ }
74
+ });
75
+ }); };
76
+ fetchData();
77
+ }, [page, rowsPerPage, tableLoader]);
78
+ function handleRowOnClick(row) {
79
+ return __awaiter(this, void 0, void 0, function () {
80
+ var redirectUrl;
81
+ return __generator(this, function (_a) {
82
+ switch (_a.label) {
83
+ case 0:
84
+ if (!rowOnClickRedirectUrl)
85
+ return [2 /*return*/];
86
+ return [4 /*yield*/, rowOnClickRedirectUrl(row)];
87
+ case 1:
88
+ redirectUrl = _a.sent();
89
+ if (!redirectUrl.startsWith('/'))
90
+ redirectUrl = "/".concat(redirectUrl);
91
+ navigate(redirectUrl);
92
+ return [2 /*return*/];
93
+ }
94
+ });
95
+ });
96
+ }
97
+ function updateRowsPerPage(newValue) {
98
+ setRowsPerPage(newValue);
99
+ setPage(0);
100
+ }
101
+ function toggleSelectRow(rowIndex, row) {
102
+ var newSelectedRows = Object.assign({}, selectedRows);
103
+ if (newSelectedRows[rowIndex])
104
+ delete newSelectedRows[rowIndex];
105
+ else
106
+ newSelectedRows[rowIndex] = row;
107
+ setSelectedRows(newSelectedRows);
108
+ if (selectAll && Object.keys(selectedRows).length != rows.length)
109
+ setSelectAll(false);
110
+ else if (!selectAll && Object.keys(selectedRows).length == rows.length)
111
+ setSelectAll(true);
112
+ }
113
+ function toggleSelectAll(selected) {
114
+ if (selected) {
115
+ var newSelectedRows = Object.assign({}, selectedRows);
116
+ for (var i = 0; i < rows.length; i++) {
117
+ var index = rowsPerPage * page + i;
118
+ if (!newSelectedRows[index])
119
+ newSelectedRows[index] = rows[i];
120
+ }
121
+ setSelectedRows(newSelectedRows);
122
+ }
123
+ else {
124
+ setSelectedRows({});
125
+ }
126
+ setSelectAll(selected);
127
+ }
128
+ function formatCellValue(value) {
129
+ if (value == null)
130
+ return '';
131
+ if (typeof value === 'boolean')
132
+ return value ? 'True' : 'False';
133
+ if (moment_1.default.isMoment(value))
134
+ return value.format('ddd, MMM Do YY, h:mm:ss a');
135
+ if (typeof value === 'object')
136
+ return JSON.stringify(value);
137
+ return value.toString();
138
+ }
139
+ return (react_1.default.createElement("div", { style: { overflow: 'auto', width: '100%' } },
140
+ (title || description || buttons && buttons.length > 0) &&
141
+ react_1.default.createElement(TableToolbar_1.TableToolbar, { title: title, description: description, selectedRows: Object.values(selectedRows), buttons: buttons }),
142
+ react_1.default.createElement(material_1.TableContainer, null,
143
+ react_1.default.createElement(material_1.Table, { stickyHeader: true },
144
+ react_1.default.createElement(material_1.TableHead, null,
145
+ react_1.default.createElement(material_1.TableRow, null,
146
+ buttons && buttons.length > 0 &&
147
+ react_1.default.createElement(material_1.TableCell, { padding: 'checkbox' },
148
+ react_1.default.createElement(material_1.Checkbox, { checked: selectAll, onChange: function (event, selected) { return toggleSelectAll(selected); }, inputProps: {
149
+ 'aria-label': 'Select all'
150
+ } })),
151
+ columns.map(function (column, index) { return (react_1.default.createElement(material_1.TableCell, { key: index },
152
+ react_1.default.createElement(material_1.Typography, { variant: 'h6' }, util_1.StringUtil.humanizeCamel(column)))); }))),
153
+ react_1.default.createElement(material_1.TableBody, null, rows.map(function (row, index) {
154
+ index = rowsPerPage * page + index;
155
+ return (react_1.default.createElement(material_1.TableRow, { hover: true, role: 'checkbox', tabIndex: -1, key: index, selected: typeof selectedRows[index] !== 'undefined' },
156
+ buttons && buttons.length > 0 &&
157
+ react_1.default.createElement(material_1.TableCell, { padding: 'checkbox' },
158
+ react_1.default.createElement(material_1.Checkbox, { checked: typeof selectedRows[index] !== 'undefined', onChange: function (event, value) { return toggleSelectRow(index, row); }, inputProps: {
159
+ 'aria-label': 'Select row'
160
+ } })),
161
+ columns.map(function (column, index) {
162
+ var cellValue = formatCellValue(row[column]);
163
+ return (react_1.default.createElement(material_1.TableCell, { key: index, onClick: function (event) { return handleRowOnClick(row); } },
164
+ react_1.default.createElement(material_1.Typography, { variant: 'subtitle1' }, cellValue)));
165
+ })));
166
+ })))),
167
+ react_1.default.createElement(material_1.TablePagination, { rowsPerPageOptions: [5, 10, 25, 50, 100, 200], component: 'div', count: totalRows, rowsPerPage: rowsPerPage, page: page, onPageChange: function (event, newPage) { return setPage(newPage); }, onRowsPerPageChange: function (event) { return updateRowsPerPage(parseInt(event.target.value)); } })));
168
+ }
169
+ exports.Table = Table;
170
+ //# sourceMappingURL=Table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.js","sourceRoot":"","sources":["../../../src/table/Table.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { NavigateFunction } from 'react-router';
3
+ export type TableButton<T> = {
4
+ name: string;
5
+ icon: React.ComponentType;
6
+ visibility: {
7
+ showWhenRowsSelected: boolean;
8
+ showWhenNoRowsSelected: boolean;
9
+ };
10
+ onClick: (selectedRows: T[], navigate: NavigateFunction) => Promise<void>;
11
+ };
12
+ //# sourceMappingURL=TableButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableButton.d.ts","sourceRoot":"","sources":["../../../src/table/TableButton.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC;IAC1B,UAAU,EAAE;QACV,oBAAoB,EAAE,OAAO,CAAC;QAC9B,sBAAsB,EAAE,OAAO,CAAC;KACjC,CAAC;IACF,OAAO,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3E,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=TableButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableButton.js","sourceRoot":"","sources":["../../../src/table/TableButton.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ export type RowWindow<T> = {
2
+ rows: T[];
3
+ totalCount: number;
4
+ };
5
+ export type TableLoader<T> = {
6
+ load: (startIndex: number, endIndex: number) => Promise<RowWindow<T>>;
7
+ };
8
+ export declare class StaticTableLoader<T> implements TableLoader<T> {
9
+ private list;
10
+ constructor(list: T[]);
11
+ load(startIndex: number, endIndex: number): Promise<{
12
+ rows: T[];
13
+ totalCount: number;
14
+ }>;
15
+ }
16
+ //# sourceMappingURL=TableLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableLoader.d.ts","sourceRoot":"","sources":["../../../src/table/TableLoader.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IACzB,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,UAAU,EAAE,MAAM,CAAC;CACpB,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC3B,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;CACvE,CAAA;AAED,qBAAa,iBAAiB,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,CAAC,EAAE;IAEvB,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;CAMhD"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.StaticTableLoader = void 0;
40
+ var StaticTableLoader = /** @class */ (function () {
41
+ function StaticTableLoader(list) {
42
+ this.list = list;
43
+ }
44
+ StaticTableLoader.prototype.load = function (startIndex, endIndex) {
45
+ return __awaiter(this, void 0, void 0, function () {
46
+ return __generator(this, function (_a) {
47
+ return [2 /*return*/, {
48
+ rows: this.list.slice(startIndex, endIndex),
49
+ totalCount: this.list.length,
50
+ }];
51
+ });
52
+ });
53
+ };
54
+ return StaticTableLoader;
55
+ }());
56
+ exports.StaticTableLoader = StaticTableLoader;
57
+ //# sourceMappingURL=TableLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableLoader.js","sourceRoot":"","sources":["../../../src/table/TableLoader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA;IACE,2BAAoB,IAAS;QAAT,SAAI,GAAJ,IAAI,CAAK;IAAG,CAAC;IAE3B,gCAAI,GAAV,UAAW,UAAkB,EAAE,QAAgB;;;gBAC7C,sBAAO;wBACL,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC;wBAC3C,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;qBAC7B,EAAC;;;KACH;IACH,wBAAC;AAAD,CAAC,AATD,IASC;AATY,8CAAiB"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { TableButton } from './TableButton';
3
+ export type TableToolbarProps = {
4
+ title?: string;
5
+ selectedRows: any[];
6
+ description?: () => JSX.Element;
7
+ buttons?: TableButton<any>[];
8
+ };
9
+ export declare const TableToolbar: (props: TableToolbarProps) => React.JSX.Element;
10
+ //# sourceMappingURL=TableToolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableToolbar.d.ts","sourceRoot":"","sources":["../../../src/table/TableToolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAI3C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,GAAG,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAChC,OAAO,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;CAC9B,CAAA;AAED,eAAO,MAAM,YAAY,UAAY,iBAAiB,sBAsFrD,CAAA"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TableToolbar = void 0;
7
+ var react_1 = __importDefault(require("react"));
8
+ var material_1 = require("@mui/material");
9
+ var react_router_1 = require("react-router");
10
+ var TableToolbar = function (props) {
11
+ var title = props.title, selectedRows = props.selectedRows, buttons = props.buttons;
12
+ var navigate = (0, react_router_1.useNavigate)();
13
+ return (react_1.default.createElement(material_1.Toolbar, { sx: function (theme) {
14
+ if (selectedRows.length > 0) {
15
+ return theme.palette.mode === 'light'
16
+ ? {
17
+ color: theme.palette.info.main,
18
+ backgroundColor: (0, material_1.lighten)(theme.palette.info.light, 0.85),
19
+ }
20
+ : {
21
+ color: theme.palette.info.light,
22
+ backgroundColor: theme.palette.info.dark,
23
+ };
24
+ }
25
+ return {
26
+ paddingLeft: theme.spacing(2),
27
+ paddingRight: theme.spacing(1),
28
+ };
29
+ } },
30
+ react_1.default.createElement("div", { style: {
31
+ marginLeft: 4,
32
+ flex: '0 0 auto',
33
+ } }, selectedRows.length > 0 ? (react_1.default.createElement(material_1.Typography, { variant: 'subtitle1', color: 'inherit' },
34
+ selectedRows.length,
35
+ " rows selected")) : (react_1.default.createElement("div", null,
36
+ typeof title !== 'undefined' &&
37
+ react_1.default.createElement(material_1.Typography, { variant: 'h5' }, title),
38
+ typeof props.description !== 'undefined' &&
39
+ react_1.default.createElement(props.description, null)))),
40
+ react_1.default.createElement("div", { style: {
41
+ flex: '1 1 100%',
42
+ } }),
43
+ react_1.default.createElement("div", null,
44
+ react_1.default.createElement(Buttons, null))));
45
+ function Buttons() {
46
+ if (!buttons)
47
+ return null;
48
+ if (selectedRows.length > 0) {
49
+ return buttons.filter(function (button) { return button.visibility.showWhenRowsSelected; }).map(function (button, index) { return (react_1.default.createElement(material_1.Tooltip, { key: index, title: button.name },
50
+ react_1.default.createElement(material_1.IconButton, { "aria-label": button.name, onClick: function (event) { return button.onClick(selectedRows, navigate); } },
51
+ react_1.default.createElement(button.icon, null)))); });
52
+ }
53
+ return buttons.filter(function (button) { return button.visibility.showWhenNoRowsSelected; }).map(function (button, index) { return (react_1.default.createElement(material_1.Tooltip, { key: index, title: button.name },
54
+ react_1.default.createElement(material_1.IconButton, { "aria-label": button.name, onClick: function (event) { return button.onClick([], navigate); } },
55
+ react_1.default.createElement(button.icon, null)))); });
56
+ }
57
+ };
58
+ exports.TableToolbar = TableToolbar;
59
+ //# sourceMappingURL=TableToolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableToolbar.js","sourceRoot":"","sources":["../../../src/table/TableToolbar.tsx"],"names":[],"mappings":";;;;;;AAAA,gDAAyB;AAEzB,0CAAiF;AACjF,6CAA0C;AASnC,IAAM,YAAY,GAAG,UAAC,KAAyB;IAC5C,IAAA,KAAK,GAA4B,KAAK,MAAjC,EAAE,YAAY,GAAc,KAAK,aAAnB,EAAE,OAAO,GAAK,KAAK,QAAV,CAAW;IAC/C,IAAM,QAAQ,GAAG,IAAA,0BAAW,GAAE,CAAC;IAC/B,OAAO,CACL,8BAAC,kBAAO,IACN,EAAE,EAAE,UAAC,KAAK;YACR,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3B,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO;oBACrC,CAAC,CAAC;wBACA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI;wBAC9B,eAAe,EAAE,IAAA,kBAAO,EAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;qBACzD;oBACD,CAAC,CAAC;wBACA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK;wBAC/B,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI;qBACzC,CAAC;aACH;YAED,OAAO;gBACL,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC/B,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;aAC7B,CAAC;QACJ,CAAC;QAED,uCACE,KAAK,EAAE;gBACL,UAAU,EAAE,CAAC;gBACb,IAAI,EAAE,UAAU;aACjB,IAEH,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC3B,8BAAC,qBAAU,IAAC,OAAO,EAAC,WAAW,EAAC,KAAK,EAAC,SAAS;YAC7C,YAAY,CAAC,MAAM;6BACR,CACb,CAAC,CAAC,CAAC,CACH;YACS,OAAO,KAAK,KAAK,WAAW;gBAC5B,8BAAC,qBAAU,IAAC,OAAO,EAAC,IAAI,IACrB,KAAK,CACK;YAEnB,OAAO,KAAK,CAAC,WAAW,KAAK,WAAW;gBACzC,8BAAC,KAAK,CAAC,WAAW,OAAG,CAEjB,CACN,CACI;QACN,uCACK,KAAK,EAAE;gBACL,IAAI,EAAE,UAAU;aACjB,GACD;QACL;YACC,8BAAC,OAAO,OAAG,CACN,CACK,CACX,CAAC;IAEF,SAAS,OAAO;QACd,IAAI,CAAC,OAAO;YACV,OAAO,IAAI,CAAC;QAEd,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,OAAO,OAAO,CAAC,MAAM,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,UAAU,CAAC,oBAAoB,EAAtC,CAAsC,CAAC,CAAC,GAAG,CAAC,UAAC,MAAM,EAAE,KAAK,IAAK,OAAA,CAC/F,8BAAC,kBAAO,IAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI;gBACrC,8BAAC,qBAAU,kBACG,MAAM,CAAC,IAAI,EACvB,OAAO,EAAE,UAAA,KAAK,IAAI,OAAA,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAtC,CAAsC;oBAExD,8BAAC,MAAM,CAAC,IAAI,OAAG,CACJ,CACL,CACX,EATgG,CAShG,CAAC,CAAC;SACJ;QAED,OAAO,OAAO,CAAC,MAAM,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,UAAU,CAAC,sBAAsB,EAAxC,CAAwC,CAAC,CAAC,GAAG,CAAC,UAAC,MAAM,EAAE,KAAK,IAAK,OAAA,CACjG,8BAAC,kBAAO,IAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI;YACrC,8BAAC,qBAAU,kBACG,MAAM,CAAC,IAAI,EACvB,OAAO,EAAE,UAAA,KAAK,IAAI,OAAA,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,EAA5B,CAA4B;gBAE9C,8BAAC,MAAM,CAAC,IAAI,OAAG,CACJ,CACL,CACX,EATkG,CASlG,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAA;AAtFY,QAAA,YAAY,gBAsFxB"}
@@ -0,0 +1,37 @@
1
+ /** Load Dependency Source Graphs */
2
+
3
+ import '@proteinjs/reflection';
4
+ import '@proteinjs/util';
5
+ import '@emotion/react';
6
+ import '@emotion/styled';
7
+ import '@mui/icons-material';
8
+ import '@mui/material';
9
+ import 'history';
10
+ import 'moment';
11
+ import 'query-string';
12
+ import 'react';
13
+ import 'react-dom';
14
+ import 'react-router';
15
+ import 'react-router-dom';
16
+ import 'string';
17
+
18
+
19
+ /** Generate Source Graph */
20
+
21
+ const sourceGraph = "{\"options\":{\"directed\":true,\"multigraph\":false,\"compound\":false},\"nodes\":[{\"v\":\"@proteinjs/ui/Page\",\"value\":{\"packageName\":\"@proteinjs/ui\",\"name\":\"Page\",\"filePath\":\"/home/runner/work/ui/ui/packages/ui/src/router/Page.ts\",\"qualifiedName\":\"@proteinjs/ui/Page\",\"properties\":[{\"name\":\"name\",\"type\":{\"packageName\":\"\",\"name\":\"string\",\"filePath\":null,\"qualifiedName\":\"/string\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"},{\"name\":\"path\",\"type\":{\"packageName\":\"\",\"name\":\"string|string[]\",\"filePath\":null,\"qualifiedName\":\"/string|string[]\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"},{\"name\":\"component\",\"type\":{\"packageName\":\"\",\"name\":\"React.ComponentType<PageComponentProps>\",\"filePath\":null,\"qualifiedName\":\"/React.ComponentType<PageComponentProps>\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"},{\"name\":\"noPageContainer\",\"type\":{\"packageName\":\"\",\"name\":\"boolean\",\"filePath\":null,\"qualifiedName\":\"/boolean\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":true,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"},{\"name\":\"auth\",\"type\":{\"packageName\":\"@proteinjs/ui\",\"name\":\"{\\n /** If true, the user does not need to be logged in or have any roles to access this page. If blank, defaults to false. */\\n public?: boolean;\\n /** If true, the user does not need to have any roles to access this page, but must be logged in. If blank, defaults to false. */\\n allUsers?: boolean,\\n /** The user must be logged in and have these roles to access this page. If blank, defaults to requiring the 'admin' role. */\\n roles?: string[];\\n }\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/ui/{\\n /** If true, the user does not need to be logged in or have any roles to access this page. If blank, defaults to false. */\\n public?: boolean;\\n /** If true, the user does not need to have any roles to access this page, but must be logged in. If blank, defaults to false. */\\n allUsers?: boolean,\\n /** The user must be logged in and have these roles to access this page. If blank, defaults to requiring the 'admin' role. */\\n roles?: string[];\\n }\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":true,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"},{\"name\":\"pageContainerSxProps\",\"type\":{\"packageName\":\"@mui/material\",\"name\":\"SxProps\",\"filePath\":null,\"qualifiedName\":\"@mui/material/SxProps\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":true,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"}],\"methods\":[],\"typeParameters\":[],\"directParents\":[{\"packageName\":\"@proteinjs/reflection\",\"name\":\"Loadable\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/reflection/Loadable\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"sourceType\":3}},{\"v\":\"@proteinjs/reflection/Loadable\"},{\"v\":\"/string | React.ComponentType\"},{\"v\":\"/React.FC\"},{\"v\":\"/Partial\"},{\"v\":\"/React.Component\"}],\"edges\":[{\"v\":\"@proteinjs/ui/Page\",\"w\":\"@proteinjs/reflection/Loadable\",\"value\":\"extends interface\"}]}";
22
+
23
+
24
+ /** Generate Source Links */
25
+
26
+
27
+ const sourceLinks = {
28
+ };
29
+
30
+
31
+ /** Load Source Graph and Links */
32
+
33
+ import { SourceRepository } from '@proteinjs/reflection';
34
+ SourceRepository.merge(sourceGraph, sourceLinks);
35
+
36
+
37
+ export * from '../index';