@j2inn/fin5-ui-utils 6.0.4 → 6.0.5-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/dist/fantomProps/createFin5Props/index.d.ts +12 -12
- package/dist/fantomProps/createFin5Props/index.js +146 -146
- package/dist/fantomProps/createFin5Props/runCreateFin5Props.d.ts +2 -2
- package/dist/fantomProps/createFin5Props/runCreateFin5Props.js +16 -16
- package/dist/fantomProps/fantomPropsToObject.d.ts +8 -8
- package/dist/fantomProps/fantomPropsToObject.js +183 -183
- package/dist/fantomProps/generateJsonFromFantomPropsFile.d.ts +4 -4
- package/dist/fantomProps/generateJsonFromFantomPropsFile.js +41 -41
- package/dist/fantomProps/localePropsToJson.d.ts +1 -1
- package/dist/fantomProps/localePropsToJson.js +50 -50
- package/dist/fantomProps/readFantomPropsFile.d.ts +5 -5
- package/dist/fantomProps/readFantomPropsFile.js +66 -61
- package/dist/fantomProps/readFantomPropsFile.js.map +1 -1
- package/dist/fin5Top/fin5FileUpload.d.ts +24 -24
- package/dist/fin5Top/fin5FileUpload.js +51 -51
- package/dist/fin5Top/fin5Top.d.ts +124 -124
- package/dist/fin5Top/fin5Top.js +53 -53
- package/dist/fin5Top/finEdge2Cloud.d.ts +6 -6
- package/dist/fin5Top/finEdge2Cloud.js +15 -15
- package/dist/fin5Top/getFin5BinUrl.d.ts +2 -2
- package/dist/fin5Top/getFin5BinUrl.js +9 -9
- package/dist/fin5Top/openFin5Alarm.d.ts +22 -22
- package/dist/fin5Top/openFin5Alarm.js +23 -23
- package/dist/fin5Top/openFin5Historian.d.ts +3 -3
- package/dist/fin5Top/openFin5Historian.js +19 -19
- package/dist/fin5Top/useFin5AppURLHashParameter.d.ts +18 -18
- package/dist/fin5Top/useFin5AppURLHashParameter.js +133 -133
- package/dist/index.d.ts +35 -35
- package/dist/index.js +69 -69
- package/dist/jobs/jobUtils.d.ts +14 -14
- package/dist/jobs/jobUtils.js +15 -15
- package/dist/react/app/Fin5AppContainer.d.ts +36 -36
- package/dist/react/app/Fin5AppContainer.js +102 -102
- package/dist/react/app/Fin5AppRootStore.d.ts +40 -40
- package/dist/react/app/Fin5AppRootStore.js +69 -69
- package/dist/react/components/ErrorBoundary.d.ts +57 -57
- package/dist/react/components/ErrorBoundary.js +150 -150
- package/dist/react/components/ErrorDisplayer.d.ts +19 -19
- package/dist/react/components/ErrorDisplayer.js +36 -36
- package/dist/react/components/Loader.d.ts +9 -9
- package/dist/react/components/Loader.js +17 -17
- package/dist/react/components/LoadingSpinner.d.ts +2 -2
- package/dist/react/components/LoadingSpinner.js +27 -27
- package/dist/react/components/RecordImage.d.ts +20 -20
- package/dist/react/components/RecordImage.js +51 -51
- package/dist/react/components/charts/QRCode.d.ts +25 -25
- package/dist/react/components/charts/QRCode.js +82 -82
- package/dist/react/components/charts/line-bar/Chart.d.ts +166 -166
- package/dist/react/components/charts/line-bar/Chart.js +442 -442
- package/dist/react/components/charts/line-bar/HGridChart.d.ts +58 -58
- package/dist/react/components/charts/line-bar/HGridChart.js +285 -285
- package/dist/react/components/charts/pie/PieChart.d.ts +94 -94
- package/dist/react/components/charts/pie/PieChart.js +204 -204
- package/dist/react/components/charts/pie/SimplePieChart.d.ts +21 -21
- package/dist/react/components/charts/pie/SimplePieChart.js +55 -55
- package/dist/react/components/graphics/GraphicViewer.d.ts +10 -10
- package/dist/react/components/graphics/GraphicViewer.js +29 -29
- package/dist/react/components/graphics/GraphicsTabViewer.d.ts +17 -17
- package/dist/react/components/graphics/GraphicsTabViewer.js +90 -90
- package/dist/react/components/makeCustomElement.d.ts +16 -16
- package/dist/react/components/makeCustomElement.js +150 -150
- package/dist/react/components/navigation/BasicLayout.d.ts +41 -41
- package/dist/react/components/navigation/BasicLayout.js +155 -155
- package/dist/react/components/navigation/HeaderSiderLayout.d.ts +13 -13
- package/dist/react/components/navigation/HeaderSiderLayout.js +110 -110
- package/dist/react/components/navigation/MenuPage.d.ts +37 -37
- package/dist/react/components/navigation/MenuPage.js +36 -36
- package/dist/react/components/navigation/MenuTrigger.d.ts +9 -9
- package/dist/react/components/navigation/MenuTrigger.js +33 -33
- package/dist/react/components/navigation/ReactRouterHeaderSiderLayout.d.ts +11 -11
- package/dist/react/components/navigation/ReactRouterHeaderSiderLayout.js +25 -25
- package/dist/react/components/navigation/ReactRouterLayout.d.ts +46 -46
- package/dist/react/components/navigation/ReactRouterLayout.js +132 -132
- package/dist/react/components/navigation/customRouting/Router.d.ts +12 -12
- package/dist/react/components/navigation/customRouting/Router.js +45 -45
- package/dist/react/components/navigation/customRouting/RouterLayout.d.ts +11 -11
- package/dist/react/components/navigation/customRouting/RouterLayout.js +61 -61
- package/dist/react/components/resolvable/configurationForm/ConfigurationForm.d.ts +27 -27
- package/dist/react/components/resolvable/configurationForm/ConfigurationForm.js +95 -95
- package/dist/react/components/resolvable/configurationForm/ConfigurationFormEntry.d.ts +16 -16
- package/dist/react/components/resolvable/configurationForm/ConfigurationFormEntry.js +88 -88
- package/dist/react/components/resolvable/configurationForm/getSectionDefault.d.ts +16 -16
- package/dist/react/components/resolvable/configurationForm/getSectionDefault.js +99 -99
- package/dist/react/hooks/useFin5BinUrl.d.ts +6 -6
- package/dist/react/hooks/useFin5BinUrl.js +15 -15
- package/dist/react/hooks/useFin5ColorScheme.d.ts +2 -2
- package/dist/react/hooks/useFin5ColorScheme.js +49 -49
- package/dist/react/hooks/useScreenSize.d.ts +7 -7
- package/dist/react/hooks/useScreenSize.js +31 -31
- package/dist_es/fantomProps/createFin5Props/index.d.ts +12 -12
- package/dist_es/fantomProps/createFin5Props/index.js +140 -140
- package/dist_es/fantomProps/createFin5Props/runCreateFin5Props.d.ts +2 -2
- package/dist_es/fantomProps/createFin5Props/runCreateFin5Props.js +11 -11
- package/dist_es/fantomProps/fantomPropsToObject.d.ts +8 -8
- package/dist_es/fantomProps/fantomPropsToObject.js +178 -178
- package/dist_es/fantomProps/generateJsonFromFantomPropsFile.d.ts +4 -4
- package/dist_es/fantomProps/generateJsonFromFantomPropsFile.js +12 -12
- package/dist_es/fantomProps/localePropsToJson.d.ts +1 -1
- package/dist_es/fantomProps/localePropsToJson.js +21 -21
- package/dist_es/fantomProps/readFantomPropsFile.d.ts +5 -5
- package/dist_es/fantomProps/readFantomPropsFile.js +40 -35
- package/dist_es/fantomProps/readFantomPropsFile.js.map +1 -1
- package/dist_es/fin5Top/fin5FileUpload.d.ts +24 -24
- package/dist_es/fin5Top/fin5FileUpload.js +47 -47
- package/dist_es/fin5Top/fin5Top.d.ts +124 -124
- package/dist_es/fin5Top/fin5Top.js +49 -49
- package/dist_es/fin5Top/finEdge2Cloud.d.ts +6 -6
- package/dist_es/fin5Top/finEdge2Cloud.js +11 -11
- package/dist_es/fin5Top/getFin5BinUrl.d.ts +2 -2
- package/dist_es/fin5Top/getFin5BinUrl.js +5 -5
- package/dist_es/fin5Top/openFin5Alarm.d.ts +22 -22
- package/dist_es/fin5Top/openFin5Alarm.js +19 -19
- package/dist_es/fin5Top/openFin5Historian.d.ts +3 -3
- package/dist_es/fin5Top/openFin5Historian.js +15 -15
- package/dist_es/fin5Top/useFin5AppURLHashParameter.d.ts +18 -18
- package/dist_es/fin5Top/useFin5AppURLHashParameter.js +124 -124
- package/dist_es/index.d.ts +35 -35
- package/dist_es/index.js +53 -53
- package/dist_es/jobs/jobUtils.d.ts +14 -14
- package/dist_es/jobs/jobUtils.js +9 -9
- package/dist_es/react/app/Fin5AppContainer.d.ts +36 -36
- package/dist_es/react/app/Fin5AppContainer.js +73 -73
- package/dist_es/react/app/Fin5AppContainer.jsx +82 -0
- package/dist_es/react/app/Fin5AppContainer.jsx.map +1 -0
- package/dist_es/react/app/Fin5AppRootStore.d.ts +40 -40
- package/dist_es/react/app/Fin5AppRootStore.js +65 -65
- package/dist_es/react/components/ErrorBoundary.d.ts +57 -57
- package/dist_es/react/components/ErrorBoundary.js +123 -123
- package/dist_es/react/components/ErrorBoundary.jsx +150 -0
- package/dist_es/react/components/ErrorBoundary.jsx.map +1 -0
- package/dist_es/react/components/ErrorDisplayer.d.ts +19 -19
- package/dist_es/react/components/ErrorDisplayer.js +28 -28
- package/dist_es/react/components/ErrorDisplayer.jsx +36 -0
- package/dist_es/react/components/ErrorDisplayer.jsx.map +1 -0
- package/dist_es/react/components/Loader.d.ts +9 -9
- package/dist_es/react/components/Loader.js +12 -12
- package/dist_es/react/components/Loader.jsx +13 -0
- package/dist_es/react/components/Loader.jsx.map +1 -0
- package/dist_es/react/components/LoadingSpinner.d.ts +2 -2
- package/dist_es/react/components/LoadingSpinner.js +20 -20
- package/dist_es/react/components/LoadingSpinner.jsx +22 -0
- package/dist_es/react/components/LoadingSpinner.jsx.map +1 -0
- package/dist_es/react/components/RecordImage.d.ts +20 -20
- package/dist_es/react/components/RecordImage.js +24 -24
- package/dist_es/react/components/charts/QRCode.d.ts +25 -25
- package/dist_es/react/components/charts/QRCode.js +52 -52
- package/dist_es/react/components/charts/line-bar/Chart.d.ts +166 -166
- package/dist_es/react/components/charts/line-bar/Chart.js +415 -415
- package/dist_es/react/components/charts/line-bar/HGridChart.d.ts +58 -58
- package/dist_es/react/components/charts/line-bar/HGridChart.js +250 -250
- package/dist_es/react/components/charts/line-bar/ZincGridChart.d.ts +12 -0
- package/dist_es/react/components/charts/line-bar/ZincGridChart.js +17 -0
- package/dist_es/react/components/charts/line-bar/ZincGridChart.js.map +1 -0
- package/dist_es/react/components/charts/pie/PieChart.d.ts +94 -94
- package/dist_es/react/components/charts/pie/PieChart.js +177 -177
- package/dist_es/react/components/charts/pie/SimplePieChart.d.ts +21 -21
- package/dist_es/react/components/charts/pie/SimplePieChart.js +25 -25
- package/dist_es/react/components/graphics/GraphicViewer.d.ts +10 -10
- package/dist_es/react/components/graphics/GraphicViewer.js +22 -22
- package/dist_es/react/components/graphics/GraphicViewer.jsx +23 -0
- package/dist_es/react/components/graphics/GraphicViewer.jsx.map +1 -0
- package/dist_es/react/components/graphics/GraphicsTabViewer.d.ts +17 -17
- package/dist_es/react/components/graphics/GraphicsTabViewer.js +60 -60
- package/dist_es/react/components/graphics/GraphicsTabViewer.jsx +63 -0
- package/dist_es/react/components/graphics/GraphicsTabViewer.jsx.map +1 -0
- package/dist_es/react/components/makeCustomElement.d.ts +16 -16
- package/dist_es/react/components/makeCustomElement.js +142 -142
- package/dist_es/react/components/navigation/BasicLayout.d.ts +41 -41
- package/dist_es/react/components/navigation/BasicLayout.js +124 -124
- package/dist_es/react/components/navigation/BasicLayout.jsx +133 -0
- package/dist_es/react/components/navigation/BasicLayout.jsx.map +1 -0
- package/dist_es/react/components/navigation/HeaderSiderLayout.d.ts +13 -13
- package/dist_es/react/components/navigation/HeaderSiderLayout.js +80 -80
- package/dist_es/react/components/navigation/MenuPage.d.ts +37 -37
- package/dist_es/react/components/navigation/MenuPage.js +30 -30
- package/dist_es/react/components/navigation/MenuPage.jsx +31 -0
- package/dist_es/react/components/navigation/MenuPage.jsx.map +1 -0
- package/dist_es/react/components/navigation/MenuTrigger.d.ts +9 -9
- package/dist_es/react/components/navigation/MenuTrigger.js +28 -28
- package/dist_es/react/components/navigation/ReactRouterHeaderSiderLayout.d.ts +11 -11
- package/dist_es/react/components/navigation/ReactRouterHeaderSiderLayout.js +18 -18
- package/dist_es/react/components/navigation/ReactRouterLayout.d.ts +46 -46
- package/dist_es/react/components/navigation/ReactRouterLayout.js +99 -99
- package/dist_es/react/components/navigation/Router.d.ts +12 -0
- package/dist_es/react/components/navigation/Router.js +19 -0
- package/dist_es/react/components/navigation/Router.js.map +1 -0
- package/dist_es/react/components/navigation/Router.jsx +19 -0
- package/dist_es/react/components/navigation/Router.jsx.map +1 -0
- package/dist_es/react/components/navigation/customRouting/Router.d.ts +12 -12
- package/dist_es/react/components/navigation/customRouting/Router.js +18 -18
- package/dist_es/react/components/navigation/customRouting/RouterLayout.d.ts +11 -11
- package/dist_es/react/components/navigation/customRouting/RouterLayout.js +34 -34
- package/dist_es/react/components/navigation/react-router/BasicLayout.d.ts +23 -0
- package/dist_es/react/components/navigation/react-router/BasicLayout.js +82 -0
- package/dist_es/react/components/navigation/react-router/BasicLayout.js.map +1 -0
- package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.d.ts +24 -0
- package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.js +82 -0
- package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.js.map +1 -0
- package/dist_es/react/components/resolvable/configurationForm/ConfigurationForm.d.ts +27 -27
- package/dist_es/react/components/resolvable/configurationForm/ConfigurationForm.js +64 -64
- package/dist_es/react/components/resolvable/configurationForm/ConfigurationFormEntry.d.ts +16 -16
- package/dist_es/react/components/resolvable/configurationForm/ConfigurationFormEntry.js +58 -58
- package/dist_es/react/components/resolvable/configurationForm/getSectionDefault.d.ts +16 -16
- package/dist_es/react/components/resolvable/configurationForm/getSectionDefault.js +94 -94
- package/dist_es/react/hooks/useFin5BinUrl.d.ts +6 -6
- package/dist_es/react/hooks/useFin5BinUrl.js +11 -11
- package/dist_es/react/hooks/useFin5ColorScheme.d.ts +2 -2
- package/dist_es/react/hooks/useFin5ColorScheme.js +45 -45
- package/dist_es/react/hooks/useScreenSize.d.ts +7 -7
- package/dist_es/react/hooks/useScreenSize.js +27 -27
- package/package.json +1 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { HRef } from 'haystack-core';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
interface GraphicViewerProps {
|
|
4
|
-
projectName?: string;
|
|
5
|
-
graphicId: HRef;
|
|
6
|
-
targetRef: HRef;
|
|
7
|
-
className?: string;
|
|
8
|
-
}
|
|
9
|
-
export declare const GraphicViewer: React.FC<GraphicViewerProps>;
|
|
10
|
-
export {};
|
|
1
|
+
import { HRef } from 'haystack-core';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
interface GraphicViewerProps {
|
|
4
|
+
projectName?: string;
|
|
5
|
+
graphicId: HRef;
|
|
6
|
+
targetRef: HRef;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const GraphicViewer: React.FC<GraphicViewerProps>;
|
|
10
|
+
export {};
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
-
*/
|
|
4
|
-
import cn from 'classnames';
|
|
5
|
-
import React from 'react';
|
|
6
|
-
import { createUseStyles } from 'react-jss';
|
|
7
|
-
import { fin5Top } from '../../../fin5Top/fin5Top';
|
|
8
|
-
const useStyles = createUseStyles({
|
|
9
|
-
iframe: {
|
|
10
|
-
width: '100%',
|
|
11
|
-
height: '100%',
|
|
12
|
-
border: 0,
|
|
13
|
-
overflow: 'hidden',
|
|
14
|
-
},
|
|
15
|
-
});
|
|
16
|
-
export const GraphicViewer = ({ projectName = fin5Top?.finstack?.projectName ?? '', graphicId, targetRef, className, }) => {
|
|
17
|
-
const classes = useStyles();
|
|
18
|
-
const url = new URL(`${window.location.protocol}//${window.location.host}/fin5/${projectName}`);
|
|
19
|
-
url.hash = `targetRef=${targetRef.toAxon()}`;
|
|
20
|
-
url.searchParams.set('projectRef', graphicId.toAxon());
|
|
21
|
-
return (React.createElement("iframe", { id: graphicId.toAxon(), className: cn(classes.iframe, className), src: url.toString() }));
|
|
22
|
-
};
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
+
*/
|
|
4
|
+
import cn from 'classnames';
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import { createUseStyles } from 'react-jss';
|
|
7
|
+
import { fin5Top } from '../../../fin5Top/fin5Top';
|
|
8
|
+
const useStyles = createUseStyles({
|
|
9
|
+
iframe: {
|
|
10
|
+
width: '100%',
|
|
11
|
+
height: '100%',
|
|
12
|
+
border: 0,
|
|
13
|
+
overflow: 'hidden',
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
export const GraphicViewer = ({ projectName = fin5Top?.finstack?.projectName ?? '', graphicId, targetRef, className, }) => {
|
|
17
|
+
const classes = useStyles();
|
|
18
|
+
const url = new URL(`${window.location.protocol}//${window.location.host}/fin5/${projectName}`);
|
|
19
|
+
url.hash = `targetRef=${targetRef.toAxon()}`;
|
|
20
|
+
url.searchParams.set('projectRef', graphicId.toAxon());
|
|
21
|
+
return (React.createElement("iframe", { id: graphicId.toAxon(), className: cn(classes.iframe, className), src: url.toString() }));
|
|
22
|
+
};
|
|
23
23
|
//# sourceMappingURL=GraphicViewer.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
+
*/
|
|
4
|
+
import cn from 'classnames';
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import { createUseStyles } from 'react-jss';
|
|
7
|
+
import { fin5Top } from '../../../fin5Top/fin5Top';
|
|
8
|
+
const useStyles = createUseStyles({
|
|
9
|
+
iframe: {
|
|
10
|
+
width: '100%',
|
|
11
|
+
height: '100%',
|
|
12
|
+
border: 0,
|
|
13
|
+
overflow: 'hidden',
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
export const GraphicViewer = ({ projectName = fin5Top?.finstack?.projectName ?? '', graphicId, targetRef, className, }) => {
|
|
17
|
+
const classes = useStyles();
|
|
18
|
+
const url = new URL(`${window.location.protocol}//${window.location.host}/fin5/${projectName}`);
|
|
19
|
+
url.hash = `targetRef=${targetRef.toAxon()}`;
|
|
20
|
+
url.searchParams.set('projectRef', graphicId.toAxon());
|
|
21
|
+
return (<iframe id={graphicId.toAxon()} className={cn(classes.iframe, className)} src={url.toString()}/>);
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=GraphicViewer.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GraphicViewer.jsx","sourceRoot":"","sources":["../../../../src/react/components/graphics/GraphicViewer.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAElD,MAAM,SAAS,GAAG,eAAe,CAAC;IACjC,MAAM,EAAE;QACP,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,QAAQ;KAClB;CACD,CAAC,CAAA;AASF,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EAC3D,WAAW,GAAG,OAAO,EAAE,QAAQ,EAAE,WAAW,IAAI,EAAE,EAClD,SAAS,EACT,SAAS,EACT,SAAS,GACT,EAAE,EAAE;IACJ,MAAM,OAAO,GAAG,SAAS,EAAE,CAAA;IAE3B,MAAM,GAAG,GAAG,IAAI,GAAG,CAClB,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAS,WAAW,EAAE,CAC1E,CAAA;IACD,GAAG,CAAC,IAAI,GAAG,aAAa,SAAS,CAAC,MAAM,EAAE,EAAE,CAAA;IAC5C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;IAEtD,OAAO,CACN,CAAC,MAAM,CACN,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CACvB,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CACzC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EACnB,CACF,CAAA;AACF,CAAC,CAAA"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { HRef } from 'haystack-core';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
interface GraphicsTabViewer {
|
|
4
|
-
projectName?: string;
|
|
5
|
-
targetRef: HRef;
|
|
6
|
-
className?: string;
|
|
7
|
-
/**
|
|
8
|
-
* Set it to true if you want to query also for related graphics (graphics applicable to objects linked by refs),
|
|
9
|
-
* false to just get the graphics on this target.
|
|
10
|
-
* @default false
|
|
11
|
-
*/
|
|
12
|
-
queryRelated?: boolean;
|
|
13
|
-
fallbackClassName?: string;
|
|
14
|
-
fallbackText?: string;
|
|
15
|
-
}
|
|
16
|
-
export declare const GraphicsTabViewer: React.FC<GraphicsTabViewer>;
|
|
17
|
-
export {};
|
|
1
|
+
import { HRef } from 'haystack-core';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
interface GraphicsTabViewer {
|
|
4
|
+
projectName?: string;
|
|
5
|
+
targetRef: HRef;
|
|
6
|
+
className?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Set it to true if you want to query also for related graphics (graphics applicable to objects linked by refs),
|
|
9
|
+
* false to just get the graphics on this target.
|
|
10
|
+
* @default false
|
|
11
|
+
*/
|
|
12
|
+
queryRelated?: boolean;
|
|
13
|
+
fallbackClassName?: string;
|
|
14
|
+
fallbackText?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare const GraphicsTabViewer: React.FC<GraphicsTabViewer>;
|
|
17
|
+
export {};
|
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
-
*/
|
|
4
|
-
import { ant_prefix, Tabs } from '@j2inn/ui';
|
|
5
|
-
import cn from 'classnames';
|
|
6
|
-
import { useClient } from 'haystack-react';
|
|
7
|
-
import React, { useEffect, useMemo, useState } from 'react';
|
|
8
|
-
import { createUseStyles } from 'react-jss';
|
|
9
|
-
import { fin5Top } from '../../../fin5Top/fin5Top';
|
|
10
|
-
import { LoadingSpinner } from '../LoadingSpinner';
|
|
11
|
-
import { GraphicViewer } from './GraphicViewer';
|
|
12
|
-
const useStyles = createUseStyles({
|
|
13
|
-
tabs: {
|
|
14
|
-
height: '100%',
|
|
15
|
-
[`& .${ant_prefix}-tabs-content-holder`]: {
|
|
16
|
-
height: '100%',
|
|
17
|
-
[`& .${ant_prefix}-tabs-content`]: {
|
|
18
|
-
height: '100%',
|
|
19
|
-
[`& .${ant_prefix}-tabs-tabpane`]: {
|
|
20
|
-
height: '100%',
|
|
21
|
-
},
|
|
22
|
-
},
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
fallback: {
|
|
26
|
-
height: '100%',
|
|
27
|
-
display: 'flex',
|
|
28
|
-
justifyContent: 'center',
|
|
29
|
-
alignItems: 'center',
|
|
30
|
-
fontSize: '1.1em',
|
|
31
|
-
},
|
|
32
|
-
});
|
|
33
|
-
export const GraphicsTabViewer = ({ projectName = fin5Top?.finstack?.projectName, targetRef, className, queryRelated = false, fallbackText = 'No graphics found.', fallbackClassName, }) => {
|
|
34
|
-
const client = useClient();
|
|
35
|
-
const classes = useStyles();
|
|
36
|
-
const [loading, setLoading] = useState(true);
|
|
37
|
-
const [graphicsList, setGraphicsList] = useState([]);
|
|
38
|
-
useEffect(() => {
|
|
39
|
-
if (targetRef) {
|
|
40
|
-
client.ext
|
|
41
|
-
.eval(`readById(${targetRef.toAxon()}).finGraphicOn(${queryRelated})`)
|
|
42
|
-
.then((grid) => {
|
|
43
|
-
setGraphicsList(grid.getRows());
|
|
44
|
-
})
|
|
45
|
-
.finally(() => setLoading(false));
|
|
46
|
-
}
|
|
47
|
-
}, [targetRef]);
|
|
48
|
-
const tabs = useMemo(() => {
|
|
49
|
-
return graphicsList
|
|
50
|
-
.sort((g1, g2) => g1.toDis().localeCompare(g2.toDis()))
|
|
51
|
-
.map((graphic) => {
|
|
52
|
-
return {
|
|
53
|
-
label: graphic.toDis(),
|
|
54
|
-
key: graphic.id.toAxon(),
|
|
55
|
-
children: (React.createElement(GraphicViewer, { projectName: projectName ?? '', targetRef: targetRef, graphicId: graphic.id })),
|
|
56
|
-
};
|
|
57
|
-
});
|
|
58
|
-
}, [graphicsList]);
|
|
59
|
-
return loading ? (React.createElement(LoadingSpinner, null)) : tabs.length > 0 ? (React.createElement(Tabs, { className: cn(classes.tabs, className), items: tabs })) : (React.createElement("div", { className: cn(classes.fallback, fallbackClassName) }, fallbackText));
|
|
60
|
-
};
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
+
*/
|
|
4
|
+
import { ant_prefix, Tabs } from '@j2inn/ui';
|
|
5
|
+
import cn from 'classnames';
|
|
6
|
+
import { useClient } from 'haystack-react';
|
|
7
|
+
import React, { useEffect, useMemo, useState } from 'react';
|
|
8
|
+
import { createUseStyles } from 'react-jss';
|
|
9
|
+
import { fin5Top } from '../../../fin5Top/fin5Top';
|
|
10
|
+
import { LoadingSpinner } from '../LoadingSpinner';
|
|
11
|
+
import { GraphicViewer } from './GraphicViewer';
|
|
12
|
+
const useStyles = createUseStyles({
|
|
13
|
+
tabs: {
|
|
14
|
+
height: '100%',
|
|
15
|
+
[`& .${ant_prefix}-tabs-content-holder`]: {
|
|
16
|
+
height: '100%',
|
|
17
|
+
[`& .${ant_prefix}-tabs-content`]: {
|
|
18
|
+
height: '100%',
|
|
19
|
+
[`& .${ant_prefix}-tabs-tabpane`]: {
|
|
20
|
+
height: '100%',
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
fallback: {
|
|
26
|
+
height: '100%',
|
|
27
|
+
display: 'flex',
|
|
28
|
+
justifyContent: 'center',
|
|
29
|
+
alignItems: 'center',
|
|
30
|
+
fontSize: '1.1em',
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
export const GraphicsTabViewer = ({ projectName = fin5Top?.finstack?.projectName, targetRef, className, queryRelated = false, fallbackText = 'No graphics found.', fallbackClassName, }) => {
|
|
34
|
+
const client = useClient();
|
|
35
|
+
const classes = useStyles();
|
|
36
|
+
const [loading, setLoading] = useState(true);
|
|
37
|
+
const [graphicsList, setGraphicsList] = useState([]);
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
if (targetRef) {
|
|
40
|
+
client.ext
|
|
41
|
+
.eval(`readById(${targetRef.toAxon()}).finGraphicOn(${queryRelated})`)
|
|
42
|
+
.then((grid) => {
|
|
43
|
+
setGraphicsList(grid.getRows());
|
|
44
|
+
})
|
|
45
|
+
.finally(() => setLoading(false));
|
|
46
|
+
}
|
|
47
|
+
}, [targetRef]);
|
|
48
|
+
const tabs = useMemo(() => {
|
|
49
|
+
return graphicsList
|
|
50
|
+
.sort((g1, g2) => g1.toDis().localeCompare(g2.toDis()))
|
|
51
|
+
.map((graphic) => {
|
|
52
|
+
return {
|
|
53
|
+
label: graphic.toDis(),
|
|
54
|
+
key: graphic.id.toAxon(),
|
|
55
|
+
children: (React.createElement(GraphicViewer, { projectName: projectName ?? '', targetRef: targetRef, graphicId: graphic.id })),
|
|
56
|
+
};
|
|
57
|
+
});
|
|
58
|
+
}, [graphicsList]);
|
|
59
|
+
return loading ? (React.createElement(LoadingSpinner, null)) : tabs.length > 0 ? (React.createElement(Tabs, { className: cn(classes.tabs, className), items: tabs })) : (React.createElement("div", { className: cn(classes.fallback, fallbackClassName) }, fallbackText));
|
|
60
|
+
};
|
|
61
61
|
//# sourceMappingURL=GraphicsTabViewer.js.map
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
+
*/
|
|
4
|
+
import { ant_prefix, Tabs } from '@j2inn/ui';
|
|
5
|
+
import cn from 'classnames';
|
|
6
|
+
import { useClient } from 'haystack-react';
|
|
7
|
+
import React, { useEffect, useMemo, useState } from 'react';
|
|
8
|
+
import { createUseStyles } from 'react-jss';
|
|
9
|
+
import { fin5Top } from '../../../fin5Top/fin5Top';
|
|
10
|
+
import { LoadingSpinner } from '../LoadingSpinner';
|
|
11
|
+
import { GraphicViewer } from './GraphicViewer';
|
|
12
|
+
const useStyles = createUseStyles({
|
|
13
|
+
tabs: {
|
|
14
|
+
height: '100%',
|
|
15
|
+
[`& .${ant_prefix}-tabs-content-holder`]: {
|
|
16
|
+
height: '100%',
|
|
17
|
+
[`& .${ant_prefix}-tabs-content`]: {
|
|
18
|
+
height: '100%',
|
|
19
|
+
[`& .${ant_prefix}-tabs-tabpane`]: {
|
|
20
|
+
height: '100%',
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
fallback: {
|
|
26
|
+
height: '100%',
|
|
27
|
+
display: 'flex',
|
|
28
|
+
justifyContent: 'center',
|
|
29
|
+
alignItems: 'center',
|
|
30
|
+
fontSize: '1.1em',
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
export const GraphicsTabViewer = ({ projectName = fin5Top?.finstack?.projectName, targetRef, className, queryRelated = false, fallbackText = 'No graphics found.', fallbackClassName, }) => {
|
|
34
|
+
const client = useClient();
|
|
35
|
+
const classes = useStyles();
|
|
36
|
+
const [loading, setLoading] = useState(true);
|
|
37
|
+
const [graphicsList, setGraphicsList] = useState([]);
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
if (targetRef) {
|
|
40
|
+
client.ext
|
|
41
|
+
.eval(`readById(${targetRef.toAxon()}).finGraphicOn(${queryRelated})`)
|
|
42
|
+
.then((grid) => {
|
|
43
|
+
setGraphicsList(grid.getRows());
|
|
44
|
+
})
|
|
45
|
+
.finally(() => setLoading(false));
|
|
46
|
+
}
|
|
47
|
+
}, [targetRef]);
|
|
48
|
+
const tabs = useMemo(() => {
|
|
49
|
+
return graphicsList
|
|
50
|
+
.sort((g1, g2) => g1.toDis().localeCompare(g2.toDis()))
|
|
51
|
+
.map((graphic) => {
|
|
52
|
+
return {
|
|
53
|
+
label: graphic.toDis(),
|
|
54
|
+
key: graphic.id.toAxon(),
|
|
55
|
+
children: (<GraphicViewer projectName={projectName ?? ''} targetRef={targetRef} graphicId={graphic.id}/>),
|
|
56
|
+
};
|
|
57
|
+
});
|
|
58
|
+
}, [graphicsList]);
|
|
59
|
+
return loading ? (<LoadingSpinner />) : tabs.length > 0 ? (<Tabs className={cn(classes.tabs, className)} items={tabs}/>) : (<div className={cn(classes.fallback, fallbackClassName)}>
|
|
60
|
+
{fallbackText}
|
|
61
|
+
</div>);
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=GraphicsTabViewer.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GraphicsTabViewer.jsx","sourceRoot":"","sources":["../../../../src/react/components/graphics/GraphicsTabViewer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
interface CustomElementOptions {
|
|
3
|
-
useShadowDom?: boolean;
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
* Generate a custom element constructor that wraps the given react component.
|
|
7
|
-
*/
|
|
8
|
-
export declare const makeCustomElement: <T extends object>(Component: React.FC<T>, options?: CustomElementOptions) => CustomElementConstructor;
|
|
9
|
-
/**
|
|
10
|
-
* Create a custom element wrapping a React component and register it.
|
|
11
|
-
* @param webComponentName the name of the Web component (tag name)
|
|
12
|
-
* @param ReactComponent the React component to wrap
|
|
13
|
-
* @returns
|
|
14
|
-
*/
|
|
15
|
-
export declare const registerReactWebComponent: <T extends object>(webComponentName: string, ReactComponent: React.FC<T>, options?: CustomElementOptions) => void;
|
|
16
|
-
export {};
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface CustomElementOptions {
|
|
3
|
+
useShadowDom?: boolean;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Generate a custom element constructor that wraps the given react component.
|
|
7
|
+
*/
|
|
8
|
+
export declare const makeCustomElement: <T extends object>(Component: React.FC<T>, options?: CustomElementOptions) => CustomElementConstructor;
|
|
9
|
+
/**
|
|
10
|
+
* Create a custom element wrapping a React component and register it.
|
|
11
|
+
* @param webComponentName the name of the Web component (tag name)
|
|
12
|
+
* @param ReactComponent the React component to wrap
|
|
13
|
+
* @returns
|
|
14
|
+
*/
|
|
15
|
+
export declare const registerReactWebComponent: <T extends object>(webComponentName: string, ReactComponent: React.FC<T>, options?: CustomElementOptions) => void;
|
|
16
|
+
export {};
|
|
@@ -1,143 +1,143 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2025, J2 Innovations. All Rights Reserved
|
|
3
|
-
*/
|
|
4
|
-
import { AppRootStoreContext, AppStoreContext } from '@j2inn/app-react';
|
|
5
|
-
import { GenerateTheme } from '@j2inn/ui';
|
|
6
|
-
import { I18NContext } from '@j2inn/utils';
|
|
7
|
-
import { ClientContext } from 'haystack-react';
|
|
8
|
-
import { create } from 'jss';
|
|
9
|
-
import React from 'react';
|
|
10
|
-
import { createRoot } from 'react-dom/client';
|
|
11
|
-
import { JssProvider, ThemeProvider } from 'react-jss';
|
|
12
|
-
const defaultTheme = GenerateTheme().light;
|
|
13
|
-
/**
|
|
14
|
-
* Generate a custom element constructor that wraps the given react component.
|
|
15
|
-
*/
|
|
16
|
-
export const makeCustomElement = (Component, options = {
|
|
17
|
-
useShadowDom: true,
|
|
18
|
-
}) => {
|
|
19
|
-
return class extends HTMLElement {
|
|
20
|
-
static get observedAttributes() {
|
|
21
|
-
return ['props'];
|
|
22
|
-
}
|
|
23
|
-
_locale;
|
|
24
|
-
get locale() {
|
|
25
|
-
return this._locale;
|
|
26
|
-
}
|
|
27
|
-
set locale(value) {
|
|
28
|
-
this._locale = value;
|
|
29
|
-
this.render();
|
|
30
|
-
}
|
|
31
|
-
_appRootStore;
|
|
32
|
-
get appRootStore() {
|
|
33
|
-
return this._appRootStore ?? {};
|
|
34
|
-
}
|
|
35
|
-
set appRootStore(value) {
|
|
36
|
-
this._appRootStore = value;
|
|
37
|
-
this.render();
|
|
38
|
-
}
|
|
39
|
-
_appStore;
|
|
40
|
-
get appStore() {
|
|
41
|
-
return this._appStore ?? {};
|
|
42
|
-
}
|
|
43
|
-
set appStore(value) {
|
|
44
|
-
this._appStore = value;
|
|
45
|
-
this.render();
|
|
46
|
-
}
|
|
47
|
-
_client;
|
|
48
|
-
get client() {
|
|
49
|
-
return this._client;
|
|
50
|
-
}
|
|
51
|
-
set client(value) {
|
|
52
|
-
this._client = value;
|
|
53
|
-
this.render();
|
|
54
|
-
}
|
|
55
|
-
_i18n;
|
|
56
|
-
get i18n() {
|
|
57
|
-
return this._i18n;
|
|
58
|
-
}
|
|
59
|
-
set i18n(value) {
|
|
60
|
-
this._i18n = value;
|
|
61
|
-
this.render();
|
|
62
|
-
}
|
|
63
|
-
_props;
|
|
64
|
-
get props() {
|
|
65
|
-
return this._props;
|
|
66
|
-
}
|
|
67
|
-
set props(value) {
|
|
68
|
-
this._props = value;
|
|
69
|
-
this.render();
|
|
70
|
-
}
|
|
71
|
-
_theme;
|
|
72
|
-
get theme() {
|
|
73
|
-
return this._theme ?? defaultTheme;
|
|
74
|
-
}
|
|
75
|
-
set theme(value) {
|
|
76
|
-
this._theme = value;
|
|
77
|
-
this.render();
|
|
78
|
-
}
|
|
79
|
-
root;
|
|
80
|
-
jss;
|
|
81
|
-
base;
|
|
82
|
-
initialized = false;
|
|
83
|
-
constructor() {
|
|
84
|
-
super();
|
|
85
|
-
this.base = options?.useShadowDom
|
|
86
|
-
? this.attachShadow({ mode: 'open' })
|
|
87
|
-
: this;
|
|
88
|
-
}
|
|
89
|
-
initialize() {
|
|
90
|
-
if (!this.initialized) {
|
|
91
|
-
const mountPoint = document.createElement('div');
|
|
92
|
-
mountPoint.setAttribute('style', 'display: contents;');
|
|
93
|
-
this.base.appendChild(mountPoint);
|
|
94
|
-
this.root = createRoot(mountPoint);
|
|
95
|
-
this.jss = create({
|
|
96
|
-
insertionPoint: mountPoint,
|
|
97
|
-
});
|
|
98
|
-
this.initialized = true;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
connectedCallback() {
|
|
102
|
-
this.render();
|
|
103
|
-
}
|
|
104
|
-
attributeChangedCallback() {
|
|
105
|
-
this.render();
|
|
106
|
-
}
|
|
107
|
-
disconnectedCallback() {
|
|
108
|
-
this.root?.unmount();
|
|
109
|
-
this.initialized = false;
|
|
110
|
-
}
|
|
111
|
-
render() {
|
|
112
|
-
this.initialize();
|
|
113
|
-
const ThemedComponent = (React.createElement(ThemeProvider, { theme: this.theme },
|
|
114
|
-
React.createElement(I18NContext.Provider, { value: this.i18n },
|
|
115
|
-
React.createElement(JssProvider, { jss: this.jss },
|
|
116
|
-
React.createElement(Component, { ...this.props })))));
|
|
117
|
-
this.root?.render(React.createElement(AppRootStoreContext.Provider, { value: this.appRootStore ?? null },
|
|
118
|
-
React.createElement(AppStoreContext.Provider, { value: this.appStore }, this.client ? (React.createElement(ClientContext.Provider, { value: this.client }, ThemedComponent)) : (ThemedComponent))));
|
|
119
|
-
}
|
|
120
|
-
};
|
|
121
|
-
};
|
|
122
|
-
/**
|
|
123
|
-
* Create a custom element wrapping a React component and register it.
|
|
124
|
-
* @param webComponentName the name of the Web component (tag name)
|
|
125
|
-
* @param ReactComponent the React component to wrap
|
|
126
|
-
* @returns
|
|
127
|
-
*/
|
|
128
|
-
export const registerReactWebComponent = (webComponentName, ReactComponent, options) => {
|
|
129
|
-
// Bail if web component is already defined
|
|
130
|
-
if (customElements.get(webComponentName)) {
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
// Make web component that wraps the react component
|
|
134
|
-
const Element = makeCustomElement(ReactComponent, options);
|
|
135
|
-
try {
|
|
136
|
-
// Define web component
|
|
137
|
-
customElements.define(webComponentName, Element);
|
|
138
|
-
}
|
|
139
|
-
catch (e) {
|
|
140
|
-
console.error(e);
|
|
141
|
-
}
|
|
142
|
-
};
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025, J2 Innovations. All Rights Reserved
|
|
3
|
+
*/
|
|
4
|
+
import { AppRootStoreContext, AppStoreContext } from '@j2inn/app-react';
|
|
5
|
+
import { GenerateTheme } from '@j2inn/ui';
|
|
6
|
+
import { I18NContext } from '@j2inn/utils';
|
|
7
|
+
import { ClientContext } from 'haystack-react';
|
|
8
|
+
import { create } from 'jss';
|
|
9
|
+
import React from 'react';
|
|
10
|
+
import { createRoot } from 'react-dom/client';
|
|
11
|
+
import { JssProvider, ThemeProvider } from 'react-jss';
|
|
12
|
+
const defaultTheme = GenerateTheme().light;
|
|
13
|
+
/**
|
|
14
|
+
* Generate a custom element constructor that wraps the given react component.
|
|
15
|
+
*/
|
|
16
|
+
export const makeCustomElement = (Component, options = {
|
|
17
|
+
useShadowDom: true,
|
|
18
|
+
}) => {
|
|
19
|
+
return class extends HTMLElement {
|
|
20
|
+
static get observedAttributes() {
|
|
21
|
+
return ['props'];
|
|
22
|
+
}
|
|
23
|
+
_locale;
|
|
24
|
+
get locale() {
|
|
25
|
+
return this._locale;
|
|
26
|
+
}
|
|
27
|
+
set locale(value) {
|
|
28
|
+
this._locale = value;
|
|
29
|
+
this.render();
|
|
30
|
+
}
|
|
31
|
+
_appRootStore;
|
|
32
|
+
get appRootStore() {
|
|
33
|
+
return this._appRootStore ?? {};
|
|
34
|
+
}
|
|
35
|
+
set appRootStore(value) {
|
|
36
|
+
this._appRootStore = value;
|
|
37
|
+
this.render();
|
|
38
|
+
}
|
|
39
|
+
_appStore;
|
|
40
|
+
get appStore() {
|
|
41
|
+
return this._appStore ?? {};
|
|
42
|
+
}
|
|
43
|
+
set appStore(value) {
|
|
44
|
+
this._appStore = value;
|
|
45
|
+
this.render();
|
|
46
|
+
}
|
|
47
|
+
_client;
|
|
48
|
+
get client() {
|
|
49
|
+
return this._client;
|
|
50
|
+
}
|
|
51
|
+
set client(value) {
|
|
52
|
+
this._client = value;
|
|
53
|
+
this.render();
|
|
54
|
+
}
|
|
55
|
+
_i18n;
|
|
56
|
+
get i18n() {
|
|
57
|
+
return this._i18n;
|
|
58
|
+
}
|
|
59
|
+
set i18n(value) {
|
|
60
|
+
this._i18n = value;
|
|
61
|
+
this.render();
|
|
62
|
+
}
|
|
63
|
+
_props;
|
|
64
|
+
get props() {
|
|
65
|
+
return this._props;
|
|
66
|
+
}
|
|
67
|
+
set props(value) {
|
|
68
|
+
this._props = value;
|
|
69
|
+
this.render();
|
|
70
|
+
}
|
|
71
|
+
_theme;
|
|
72
|
+
get theme() {
|
|
73
|
+
return this._theme ?? defaultTheme;
|
|
74
|
+
}
|
|
75
|
+
set theme(value) {
|
|
76
|
+
this._theme = value;
|
|
77
|
+
this.render();
|
|
78
|
+
}
|
|
79
|
+
root;
|
|
80
|
+
jss;
|
|
81
|
+
base;
|
|
82
|
+
initialized = false;
|
|
83
|
+
constructor() {
|
|
84
|
+
super();
|
|
85
|
+
this.base = options?.useShadowDom
|
|
86
|
+
? this.attachShadow({ mode: 'open' })
|
|
87
|
+
: this;
|
|
88
|
+
}
|
|
89
|
+
initialize() {
|
|
90
|
+
if (!this.initialized) {
|
|
91
|
+
const mountPoint = document.createElement('div');
|
|
92
|
+
mountPoint.setAttribute('style', 'display: contents;');
|
|
93
|
+
this.base.appendChild(mountPoint);
|
|
94
|
+
this.root = createRoot(mountPoint);
|
|
95
|
+
this.jss = create({
|
|
96
|
+
insertionPoint: mountPoint,
|
|
97
|
+
});
|
|
98
|
+
this.initialized = true;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
connectedCallback() {
|
|
102
|
+
this.render();
|
|
103
|
+
}
|
|
104
|
+
attributeChangedCallback() {
|
|
105
|
+
this.render();
|
|
106
|
+
}
|
|
107
|
+
disconnectedCallback() {
|
|
108
|
+
this.root?.unmount();
|
|
109
|
+
this.initialized = false;
|
|
110
|
+
}
|
|
111
|
+
render() {
|
|
112
|
+
this.initialize();
|
|
113
|
+
const ThemedComponent = (React.createElement(ThemeProvider, { theme: this.theme },
|
|
114
|
+
React.createElement(I18NContext.Provider, { value: this.i18n },
|
|
115
|
+
React.createElement(JssProvider, { jss: this.jss },
|
|
116
|
+
React.createElement(Component, { ...this.props })))));
|
|
117
|
+
this.root?.render(React.createElement(AppRootStoreContext.Provider, { value: this.appRootStore ?? null },
|
|
118
|
+
React.createElement(AppStoreContext.Provider, { value: this.appStore }, this.client ? (React.createElement(ClientContext.Provider, { value: this.client }, ThemedComponent)) : (ThemedComponent))));
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* Create a custom element wrapping a React component and register it.
|
|
124
|
+
* @param webComponentName the name of the Web component (tag name)
|
|
125
|
+
* @param ReactComponent the React component to wrap
|
|
126
|
+
* @returns
|
|
127
|
+
*/
|
|
128
|
+
export const registerReactWebComponent = (webComponentName, ReactComponent, options) => {
|
|
129
|
+
// Bail if web component is already defined
|
|
130
|
+
if (customElements.get(webComponentName)) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
// Make web component that wraps the react component
|
|
134
|
+
const Element = makeCustomElement(ReactComponent, options);
|
|
135
|
+
try {
|
|
136
|
+
// Define web component
|
|
137
|
+
customElements.define(webComponentName, Element);
|
|
138
|
+
}
|
|
139
|
+
catch (e) {
|
|
140
|
+
console.error(e);
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
143
|
//# sourceMappingURL=makeCustomElement.js.map
|