@judo/components 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/LICENSE +277 -0
  2. package/README.md +200 -0
  3. package/dist/FlexRenderer-0KCxU9QU.js +1612 -0
  4. package/dist/FlexRenderer-0KCxU9QU.js.map +1 -0
  5. package/dist/FormContainerRenderer-B8H4kyz0.js +67 -0
  6. package/dist/FormContainerRenderer-B8H4kyz0.js.map +1 -0
  7. package/dist/FormContainerRenderer-CtuXP8jP.js +3 -0
  8. package/dist/TableContainerRenderer-gKBlsD4S.js +127 -0
  9. package/dist/TableContainerRenderer-gKBlsD4S.js.map +1 -0
  10. package/dist/TableContainerRenderer-qbzKI1Cd.js +2 -0
  11. package/dist/ViewContainerRenderer-7Cx4fcLp.js +3 -0
  12. package/dist/ViewContainerRenderer-DCRaE_dq.js +132 -0
  13. package/dist/ViewContainerRenderer-DCRaE_dq.js.map +1 -0
  14. package/dist/containers/FormContainerRenderer.d.ts +11 -0
  15. package/dist/containers/FormContainerRenderer.d.ts.map +1 -0
  16. package/dist/containers/PageRenderer.d.ts +9 -0
  17. package/dist/containers/PageRenderer.d.ts.map +1 -0
  18. package/dist/containers/TableContainerRenderer.d.ts +11 -0
  19. package/dist/containers/TableContainerRenderer.d.ts.map +1 -0
  20. package/dist/containers/ViewContainerRenderer.d.ts +12 -0
  21. package/dist/containers/ViewContainerRenderer.d.ts.map +1 -0
  22. package/dist/dialogs/LinkSelectorDialog.d.ts +21 -0
  23. package/dist/dialogs/LinkSelectorDialog.d.ts.map +1 -0
  24. package/dist/errors/ContainerErrorBoundary.d.ts +42 -0
  25. package/dist/errors/ContainerErrorBoundary.d.ts.map +1 -0
  26. package/dist/errors/index.d.ts +2 -0
  27. package/dist/errors/index.d.ts.map +1 -0
  28. package/dist/find-on-init-action-C5CqxQaH.js +7727 -0
  29. package/dist/find-on-init-action-C5CqxQaH.js.map +1 -0
  30. package/dist/hooks/use-file-handling.d.ts +79 -0
  31. package/dist/hooks/use-file-handling.d.ts.map +1 -0
  32. package/dist/hooks/use-page-title.d.ts +23 -0
  33. package/dist/hooks/use-page-title.d.ts.map +1 -0
  34. package/dist/hooks/use-table-data.d.ts +77 -0
  35. package/dist/hooks/use-table-data.d.ts.map +1 -0
  36. package/dist/index.css +2 -0
  37. package/dist/index.d.ts +44 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +296 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/inputs/BinaryInputComponent.d.ts +15 -0
  42. package/dist/inputs/BinaryInputComponent.d.ts.map +1 -0
  43. package/dist/inputs/CheckboxComponent.d.ts +14 -0
  44. package/dist/inputs/CheckboxComponent.d.ts.map +1 -0
  45. package/dist/inputs/DateInputComponent.d.ts +14 -0
  46. package/dist/inputs/DateInputComponent.d.ts.map +1 -0
  47. package/dist/inputs/DateTimeInputComponent.d.ts +14 -0
  48. package/dist/inputs/DateTimeInputComponent.d.ts.map +1 -0
  49. package/dist/inputs/EnumerationComboComponent.d.ts +20 -0
  50. package/dist/inputs/EnumerationComboComponent.d.ts.map +1 -0
  51. package/dist/inputs/EnumerationRadioComponent.d.ts +22 -0
  52. package/dist/inputs/EnumerationRadioComponent.d.ts.map +1 -0
  53. package/dist/inputs/EnumerationToggleButtonbarComponent.d.ts +23 -0
  54. package/dist/inputs/EnumerationToggleButtonbarComponent.d.ts.map +1 -0
  55. package/dist/inputs/InputRenderer.d.ts +11 -0
  56. package/dist/inputs/InputRenderer.d.ts.map +1 -0
  57. package/dist/inputs/NumericInputComponent.d.ts +14 -0
  58. package/dist/inputs/NumericInputComponent.d.ts.map +1 -0
  59. package/dist/inputs/PasswordInputComponent.d.ts +14 -0
  60. package/dist/inputs/PasswordInputComponent.d.ts.map +1 -0
  61. package/dist/inputs/SwitchComponent.d.ts +14 -0
  62. package/dist/inputs/SwitchComponent.d.ts.map +1 -0
  63. package/dist/inputs/TextAreaComponent.d.ts +14 -0
  64. package/dist/inputs/TextAreaComponent.d.ts.map +1 -0
  65. package/dist/inputs/TextInputComponent.d.ts +19 -0
  66. package/dist/inputs/TextInputComponent.d.ts.map +1 -0
  67. package/dist/inputs/TimeInputComponent.d.ts +14 -0
  68. package/dist/inputs/TimeInputComponent.d.ts.map +1 -0
  69. package/dist/renderers/ButtonGroupRenderer.d.ts +10 -0
  70. package/dist/renderers/ButtonGroupRenderer.d.ts.map +1 -0
  71. package/dist/renderers/FlexRenderer.d.ts +13 -0
  72. package/dist/renderers/FlexRenderer.d.ts.map +1 -0
  73. package/dist/renderers/FormattedRenderer.d.ts +12 -0
  74. package/dist/renderers/FormattedRenderer.d.ts.map +1 -0
  75. package/dist/renderers/FrameRenderer.d.ts +17 -0
  76. package/dist/renderers/FrameRenderer.d.ts.map +1 -0
  77. package/dist/renderers/IconRenderer.d.ts +41 -0
  78. package/dist/renderers/IconRenderer.d.ts.map +1 -0
  79. package/dist/renderers/InlineButtonGroupRenderer.d.ts +22 -0
  80. package/dist/renderers/InlineButtonGroupRenderer.d.ts.map +1 -0
  81. package/dist/renderers/LinkRenderer.d.ts +17 -0
  82. package/dist/renderers/LinkRenderer.d.ts.map +1 -0
  83. package/dist/renderers/PageHeader.d.ts +13 -0
  84. package/dist/renderers/PageHeader.d.ts.map +1 -0
  85. package/dist/renderers/RowActionCell.d.ts +28 -0
  86. package/dist/renderers/RowActionCell.d.ts.map +1 -0
  87. package/dist/renderers/StandaloneButtonRenderer.d.ts +16 -0
  88. package/dist/renderers/StandaloneButtonRenderer.d.ts.map +1 -0
  89. package/dist/renderers/SubThemeWrapper.d.ts +22 -0
  90. package/dist/renderers/SubThemeWrapper.d.ts.map +1 -0
  91. package/dist/renderers/TabControllerRenderer.d.ts +10 -0
  92. package/dist/renderers/TabControllerRenderer.d.ts.map +1 -0
  93. package/dist/renderers/TableRenderer.d.ts +10 -0
  94. package/dist/renderers/TableRenderer.d.ts.map +1 -0
  95. package/dist/renderers/TableToolbar.d.ts +47 -0
  96. package/dist/renderers/TableToolbar.d.ts.map +1 -0
  97. package/dist/renderers/VisualElementRenderer.d.ts +17 -0
  98. package/dist/renderers/VisualElementRenderer.d.ts.map +1 -0
  99. package/dist/utils/alignment-mappers.d.ts +17 -0
  100. package/dist/utils/alignment-mappers.d.ts.map +1 -0
  101. package/dist/utils/build-mask-string.d.ts +31 -0
  102. package/dist/utils/build-mask-string.d.ts.map +1 -0
  103. package/dist/utils/build-query-customizer.d.ts +35 -0
  104. package/dist/utils/build-query-customizer.d.ts.map +1 -0
  105. package/dist/utils/destructive-action-utils.d.ts +17 -0
  106. package/dist/utils/destructive-action-utils.d.ts.map +1 -0
  107. package/dist/utils/find-action-by-definition.d.ts +26 -0
  108. package/dist/utils/find-action-by-definition.d.ts.map +1 -0
  109. package/dist/utils/find-on-init-action.d.ts +12 -0
  110. package/dist/utils/find-on-init-action.d.ts.map +1 -0
  111. package/dist/utils/find-visual-element.d.ts +18 -0
  112. package/dist/utils/find-visual-element.d.ts.map +1 -0
  113. package/dist/utils/flex-layout.d.ts +104 -0
  114. package/dist/utils/flex-layout.d.ts.map +1 -0
  115. package/dist/utils/get-visible-buttons.d.ts +33 -0
  116. package/dist/utils/get-visible-buttons.d.ts.map +1 -0
  117. package/dist/utils/icon-adornment.d.ts +13 -0
  118. package/dist/utils/icon-adornment.d.ts.map +1 -0
  119. package/dist/utils/mdi-alias-map.d.ts +44 -0
  120. package/dist/utils/mdi-alias-map.d.ts.map +1 -0
  121. package/dist/utils/mdi-alias-map.generated.d.ts +10 -0
  122. package/dist/utils/mdi-alias-map.generated.d.ts.map +1 -0
  123. package/dist/utils/resolve-container-type.d.ts +11 -0
  124. package/dist/utils/resolve-container-type.d.ts.map +1 -0
  125. package/dist/utils/singleton-access.d.ts +25 -0
  126. package/dist/utils/singleton-access.d.ts.map +1 -0
  127. package/dist/utils/table-column-utils.d.ts +75 -0
  128. package/dist/utils/table-column-utils.d.ts.map +1 -0
  129. package/dist/utils/table-filter-utils.d.ts +14 -0
  130. package/dist/utils/table-filter-utils.d.ts.map +1 -0
  131. package/dist/utils/table-sort-utils.d.ts +24 -0
  132. package/dist/utils/table-sort-utils.d.ts.map +1 -0
  133. package/package.json +84 -0
@@ -0,0 +1,2 @@
1
+ import { n as TableContainerRenderer_default, t as TableContainerRenderer } from "./TableContainerRenderer-gKBlsD4S.js";
2
+ export { TableContainerRenderer, TableContainerRenderer_default as default };
@@ -0,0 +1,3 @@
1
+ import "./FlexRenderer-0KCxU9QU.js";
2
+ import { n as ViewContainerRenderer_default, t as ViewContainerRenderer } from "./ViewContainerRenderer-DCRaE_dq.js";
3
+ export { ViewContainerRenderer, ViewContainerRenderer_default as default };
@@ -0,0 +1,132 @@
1
+ import { t as FlexRenderer } from "./FlexRenderer-0KCxU9QU.js";
2
+ import { s as PageHeader, t as findOnInitAction } from "./find-on-init-action-C5CqxQaH.js";
3
+ import { Box } from "@mui/material";
4
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { useActionDispatcher, useApi } from "@judo/actions";
7
+ import { DispatchProvider, PageProvider, RefreshSignalProvider, useApplication, useDataStore, useNavigation, usePageContext, useResolvedPageActionOverrides, useTransferDirty } from "@judo/core";
8
+ import { useNotifications } from "@judo/feedback";
9
+ function isSingletonAccessPage(e) {
10
+ let x = e.dataElement;
11
+ if (!x || x["@type"] !== "RelationType") return !1;
12
+ let S = x;
13
+ return String(S.isAccess) === "true" && String(S.isCollection) === "false";
14
+ }
15
+ function getSingletonAccessRelation(e) {
16
+ if (isSingletonAccessPage(e)) return e.dataElement;
17
+ }
18
+ function resolveClassTypeFromDataElement(e) {
19
+ if (e["@type"] === "ClassType") return e;
20
+ if (e["@type"] === "RelationType" || e.target) return e.target;
21
+ }
22
+ function ViewContainerRenderer({ page: C }) {
23
+ let w = C.container, T = usePageContext(), E = useNavigation(), D = useDataStore(), O = useApplication(), k = useApi(), A = useNotifications(), j = useMemo(() => {
24
+ let e = findOnInitAction(C, w);
25
+ if (e && e.actionDefinition["@type"] === "RefreshActionDefinition" && !e.actionDefinition.targetType) {
26
+ let x = C.dataElement || w.dataElement;
27
+ if (x) {
28
+ let S = resolveClassTypeFromDataElement(x);
29
+ S ? e.actionDefinition.targetType = S : console.error("[ViewContainerRenderer] Failed to set valid targetType - could not derive from dataElement");
30
+ }
31
+ }
32
+ return e;
33
+ }, [C, w]), M = useMemo(() => {
34
+ let e = T?.transferId, x = T?.params?.signedIdentifier ?? T?.params?.transfer?.__signedIdentifier;
35
+ if (!(!e || !x)) return {
36
+ __identifier: e,
37
+ __signedIdentifier: x
38
+ };
39
+ }, [T?.transferId, T?.params]), N = useMemo(() => isSingletonAccessPage(C), [C]), [P, F] = useState(void 0), I = useRef(!1);
40
+ useEffect(() => {
41
+ if (!N || M || I.current) return;
42
+ let e = getSingletonAccessRelation(C);
43
+ !e || !k || (I.current = !0, (async () => {
44
+ try {
45
+ let { data: x } = await k.refreshAccessRelation(e, { _mask: "{}" });
46
+ x?.__signedIdentifier ? F({
47
+ __identifier: `transfer::${x.__signedIdentifier}`,
48
+ __signedIdentifier: x.__signedIdentifier
49
+ }) : console.error("[ViewContainerRenderer] Singleton access page returned no signedIdentifier");
50
+ } catch (e) {
51
+ console.error("[ViewContainerRenderer] Error fetching singleton access transfer:", e);
52
+ }
53
+ })());
54
+ }, [
55
+ N,
56
+ M,
57
+ C,
58
+ k
59
+ ]);
60
+ let L = M ?? P, R = L?.__identifier ?? T?.transferId ?? null, z = useTransferDirty(R ?? ""), B = R !== null && z, V = T?.params?.isEager, H = T?.params?.parentTransferId, U = T?.params?.relationName, W = useResolvedPageActionOverrides(), [G, K] = useState(0), q = useCallback(() => K((e) => e + 1), []), J = useMemo(() => P ? {
61
+ ...T?.params,
62
+ signedIdentifier: P.__signedIdentifier
63
+ } : T?.params ?? {}, [P, T?.params]), { dispatch: Y } = useActionDispatcher(useMemo(() => ({
64
+ navigation: E,
65
+ data: D,
66
+ registry: O,
67
+ api: k,
68
+ transfer: L,
69
+ notifications: A,
70
+ actionOverrides: W,
71
+ additionalContext: {
72
+ pageType: "VIEW",
73
+ isEditMode: B,
74
+ refreshPage: q,
75
+ ...V && {
76
+ isEager: V,
77
+ parentTransferId: H,
78
+ relationName: U
79
+ }
80
+ }
81
+ }), [
82
+ E,
83
+ D,
84
+ O,
85
+ k,
86
+ L,
87
+ A,
88
+ B,
89
+ W,
90
+ V,
91
+ H,
92
+ U,
93
+ q
94
+ ])), X = useRef(!1), Z = useRef(Y);
95
+ Z.current = Y, useEffect(() => {
96
+ X.current || j && L && (X.current = !0, Z.current(j).catch((e) => {
97
+ console.error("[ViewContainerRenderer] Error dispatching onInit action:", e);
98
+ }));
99
+ }, [j, L]), useEffect(() => {
100
+ G !== 0 && j && L && Z.current(j).catch((e) => {
101
+ console.error("[ViewContainerRenderer] Error refreshing page:", e);
102
+ });
103
+ }, [
104
+ G,
105
+ j,
106
+ L
107
+ ]);
108
+ let Q = w.children?.[0], $ = !T?.isDialog;
109
+ return /* @__PURE__ */ jsx(PageProvider, {
110
+ transferId: R,
111
+ pageDefinition: C,
112
+ params: J,
113
+ isDialog: T?.isDialog ?? !1,
114
+ children: /* @__PURE__ */ jsx(RefreshSignalProvider, {
115
+ signal: G,
116
+ children: /* @__PURE__ */ jsx(DispatchProvider, {
117
+ dispatch: Y,
118
+ children: /* @__PURE__ */ jsxs(Box, {
119
+ "data-testid": `view-container::${w.name ?? w["xmi:id"]}`,
120
+ sx: { animation: "judoFadeInUp 0.4s cubic-bezier(0.4,0,0.2,1) both" },
121
+ children: [$ && /* @__PURE__ */ jsx(PageHeader, {
122
+ page: C,
123
+ editMode: B,
124
+ onDispatch: Y
125
+ }), Q && /* @__PURE__ */ jsx(FlexRenderer, { element: Q })]
126
+ })
127
+ })
128
+ })
129
+ });
130
+ }
131
+ var ViewContainerRenderer_default = ViewContainerRenderer;
132
+ export { isSingletonAccessPage as i, ViewContainerRenderer_default as n, getSingletonAccessRelation as r, ViewContainerRenderer as t };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ViewContainerRenderer-DCRaE_dq.js","names":[],"sources":["../src/utils/singleton-access.ts","../src/containers/ViewContainerRenderer.tsx"],"sourcesContent":["import type { PageDefinition, RelationType } from \"@judo/model-api\";\n\n/**\n * Check if a page is a singleton access page.\n *\n * A singleton access page is an AccessViewPage whose dataElement is a RelationType with:\n * - isAccess = true (it's an access relation, i.e., top-level entry point)\n * - isCollection = false (there's exactly one instance, not a list)\n *\n * Singleton access pages don't require a signedIdentifier in the URL because\n * there's only one transfer behind the relation. The transfer's signedIdentifier\n * must be resolved at runtime by calling refreshAccessRelation before the\n * normal onInit refresh can proceed.\n *\n * @param page - The PageDefinition to check\n * @returns true if the page is a singleton access page\n */\nexport function isSingletonAccessPage(page: PageDefinition): boolean {\n\tconst dataElement = page.dataElement;\n\n\tif (!dataElement || dataElement[\"@type\"] !== \"RelationType\") {\n\t\treturn false;\n\t}\n\n\tconst relation = dataElement as RelationType;\n\n\t// isAccess can be boolean true or string \"true\" depending on model parsing\n\tconst isAccess = String(relation.isAccess) === \"true\";\n\t// isCollection defaults to true in the EMF model, so false means explicitly set\n\tconst isNotCollection = String(relation.isCollection) === \"false\";\n\n\treturn isAccess && isNotCollection;\n}\n\n/**\n * Get the access relation from a singleton access page.\n *\n * @param page - The PageDefinition (must be a singleton access page)\n * @returns The RelationType representing the access relation, or undefined\n */\nexport function getSingletonAccessRelation(page: PageDefinition): RelationType | undefined {\n\tif (!isSingletonAccessPage(page)) {\n\t\treturn undefined;\n\t}\n\treturn page.dataElement as RelationType;\n}\n","import { useActionDispatcher, useApi } from \"@judo/actions\";\nimport {\n\tDispatchProvider,\n\tPageProvider,\n\tRefreshSignalProvider,\n\tuseApplication,\n\tuseDataStore,\n\tuseTransferDirty,\n\tuseNavigation,\n\tusePageContext,\n\tuseResolvedPageActionOverrides,\n} from \"@judo/core\";\nimport { useNotifications } from \"@judo/feedback\";\nimport type { ClassType, Flex, PageContainer, PageDefinition, RelationType } from \"@judo/model-api\";\nimport { Box } from \"@mui/material\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { FlexRenderer } from \"../renderers/FlexRenderer\";\nimport { PageHeader } from \"../renderers/PageHeader\";\nimport { findOnInitAction } from \"../utils/find-on-init-action\";\nimport { getSingletonAccessRelation, isSingletonAccessPage } from \"../utils/singleton-access\";\n\n/**\n * Resolve a ClassType from a dataElement, handling different types:\n * - ClassType: return directly\n * - RelationType: follow .target\n * - OperationParameterType (output/input): also follow .target (inherits from ReferenceType)\n * These elements have no @type from the parser because inline <output>/<input> tags aren't mapped.\n */\nfunction resolveClassTypeFromDataElement(dataElement: { \"@type\"?: string; target?: ClassType }): ClassType | undefined {\n\tif (dataElement[\"@type\"] === \"ClassType\") {\n\t\treturn dataElement as unknown as ClassType;\n\t}\n\tif (dataElement[\"@type\"] === \"RelationType\") {\n\t\treturn (dataElement as unknown as RelationType).target;\n\t}\n\t// OperationParameterType or other ReferenceType subtypes - follow .target if present\n\tif (dataElement.target) {\n\t\treturn dataElement.target;\n\t}\n\treturn undefined;\n}\n\nexport interface ViewContainerRendererProps {\n\tpage: PageDefinition;\n}\n\n/**\n * Renderer for VIEW type containers.\n * Edit mode is derived from transfer dirty state - when user modifies data, view enters edit mode.\n * Fetches transfer data on mount via onInit action (Refresh).\n */\nexport function ViewContainerRenderer({ page }: ViewContainerRendererProps) {\n\tconst container = page.container as PageContainer;\n\tconst pageContext = usePageContext();\n\n\t// Get required contexts for action dispatcher\n\tconst navigation = useNavigation();\n\tconst dataStore = useDataStore();\n\tconst application = useApplication();\n\tconst api = useApi();\n\tconst notifications = useNotifications();\n\n\t// Find the onInit action\n\tconst onInitAction = useMemo(() => {\n\t\tconst action = findOnInitAction(page, container);\n\n\t\t// If action exists and has a RefreshActionDefinition\n\t\tif (action && action.actionDefinition[\"@type\"] === \"RefreshActionDefinition\") {\n\t\t\tconst existingTargetType = action.actionDefinition.targetType;\n\n\t\t\t// If no targetType is set, derive it from the dataElement\n\t\t\tif (!existingTargetType) {\n\t\t\t\t// Prefer page.dataElement, fallback to container.dataElement\n\t\t\t\tconst dataElement = page.dataElement || container.dataElement;\n\n\t\t\t\tif (dataElement) {\n\t\t\t\t\t// Derive the ClassType from the dataElement:\n\t\t\t\t\t// - ClassType: use directly\n\t\t\t\t\t// - RelationType: follow .target to get ClassType\n\t\t\t\t\t// - OperationParameterType (output/input): also has .target via ReferenceType\n\t\t\t\t\t// (no @type is set by the parser for inline <output>/<input> elements)\n\t\t\t\t\tconst targetType = resolveClassTypeFromDataElement(dataElement);\n\n\t\t\t\t\t// Mutate the action definition to add targetType (parser should do this, but doesn't)\n\t\t\t\t\tif (targetType) {\n\t\t\t\t\t\taction.actionDefinition.targetType = targetType;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.error(\"[ViewContainerRenderer] Failed to set valid targetType - could not derive from dataElement\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn action;\n\t}, [page, container]);\n\n\t// Get transfer from page context\n\t// CRITICAL: Use pageContext.transferId as __identifier to ensure storage key matches\n\t// what useVisualBinding expects. PageRoute sets transferId = `transfer::${signedIdentifier}`\n\t// and useVisualBinding reads from pageContext.transferId.\n\tconst entityFromContext = useMemo(() => {\n\t\tconst transferId = pageContext?.transferId;\n\t\tconst signedIdentifier = pageContext?.params?.signedIdentifier as string | undefined;\n\n\t\t// For dialog pages opened from table rows, signedIdentifier is not at the top level\n\t\t// of params. Instead, it's nested inside params.transfer.__signedIdentifier.\n\t\tconst entityParam = pageContext?.params?.transfer as { __signedIdentifier?: string } | undefined;\n\t\tconst effectiveSignedId = signedIdentifier ?? entityParam?.__signedIdentifier;\n\n\t\tif (!transferId || !effectiveSignedId) return undefined;\n\n\t\tconst constructedEntity = {\n\t\t\t__identifier: transferId, // Full transfer ID: \"transfer::abc123\" or \"dialog::transfer::abc123\"\n\t\t\t__signedIdentifier: effectiveSignedId, // Bare signed identifier: \"abc123\"\n\t\t};\n\n\t\treturn constructedEntity;\n\t}, [pageContext?.transferId, pageContext?.params]);\n\n\t// Singleton access page detection\n\tconst isSingleton = useMemo(() => isSingletonAccessPage(page), [page]);\n\n\tconst [singletonEntity, setSingletonEntity] = useState<\n\t\t{ __identifier: string; __signedIdentifier: string } | undefined\n\t>(undefined);\n\tconst hasFetchedSingleton = useRef(false);\n\n\tuseEffect(() => {\n\t\tif (!isSingleton || entityFromContext || hasFetchedSingleton.current) return;\n\n\t\tconst relation = getSingletonAccessRelation(page);\n\t\tif (!relation || !api) return;\n\n\t\thasFetchedSingleton.current = true;\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tconst { data } = await api.refreshAccessRelation(relation, { _mask: \"{}\" });\n\t\t\t\tif (data?.__signedIdentifier) {\n\t\t\t\t\tconst transferId = `transfer::${data.__signedIdentifier}`;\n\t\t\t\t\tsetSingletonEntity({\n\t\t\t\t\t\t__identifier: transferId,\n\t\t\t\t\t\t__signedIdentifier: data.__signedIdentifier as string,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(\"[ViewContainerRenderer] Singleton access page returned no signedIdentifier\");\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\"[ViewContainerRenderer] Error fetching singleton access transfer:\", error);\n\t\t\t}\n\t\t})();\n\t}, [isSingleton, entityFromContext, page, api]);\n\n\t// Use transfer from context (normal flow) or singleton pre-fetch\n\tconst transfer = entityFromContext ?? singletonEntity;\n\n\t// For singleton pages, override the transferId in page context so downstream\n\t// useVisualBinding can find data in the store under the correct key.\n\tconst effectiveEntityId = transfer?.__identifier ?? pageContext?.transferId ?? null;\n\n\t// Derive edit mode from effective transfer ID (works for both regular and singleton pages)\n\tconst isDirty = useTransferDirty(effectiveEntityId ?? \"\");\n\tconst isEditMode = effectiveEntityId !== null && isDirty;\n\n\t// Extract eager context from page params (forwarded by RowOpenPageActionHandler)\n\t// When a dialog is opened from an eager table, these params tell the update handler\n\t// to skip REST calls and instead update the parent transfer's local relation data.\n\tconst isEager = pageContext?.params?.isEager as boolean | undefined;\n\tconst eagerParentEntityId = pageContext?.params?.parentTransferId as string | undefined;\n\tconst eagerRelationName = pageContext?.params?.relationName as string | undefined;\n\n\t// Get resolved page action overrides from customizations\n\tconst actionOverrides = useResolvedPageActionOverrides();\n\n\t// Page-wide refresh signal — operation handlers call refreshPage() to\n\t// trigger a full page refresh (transfer + embedded tables).\n\tconst [refreshVersion, setRefreshVersion] = useState(0);\n\tconst refreshPage = useCallback(() => setRefreshVersion((v) => v + 1), []);\n\n\t// Build effective params - for singleton pages, add the resolved signedIdentifier\n\tconst effectiveParams = useMemo(() => {\n\t\tif (singletonEntity) {\n\t\t\treturn {\n\t\t\t\t...pageContext?.params,\n\t\t\t\tsignedIdentifier: singletonEntity.__signedIdentifier,\n\t\t\t};\n\t\t}\n\t\treturn pageContext?.params ?? {};\n\t}, [singletonEntity, pageContext?.params]);\n\n\t// Memoize dispatcher context\n\tconst dispatcherContext = useMemo(\n\t\t() =>\n\t\t\t({\n\t\t\t\tnavigation,\n\t\t\t\tdata: dataStore,\n\t\t\t\tregistry: application,\n\t\t\t\tapi,\n\t\t\t\ttransfer,\n\t\t\t\tnotifications,\n\t\t\t\tactionOverrides,\n\t\t\t\tadditionalContext: {\n\t\t\t\t\tpageType: \"VIEW\",\n\t\t\t\t\tisEditMode,\n\t\t\t\t\trefreshPage,\n\t\t\t\t\t// Forward eager context so update handler knows to skip REST calls\n\t\t\t\t\t...(isEager && {\n\t\t\t\t\t\tisEager,\n\t\t\t\t\t\tparentTransferId: eagerParentEntityId,\n\t\t\t\t\t\trelationName: eagerRelationName,\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t}) as unknown as Parameters<typeof useActionDispatcher>[0],\n\t\t[\n\t\t\tnavigation,\n\t\t\tdataStore,\n\t\t\tapplication,\n\t\t\tapi,\n\t\t\ttransfer,\n\t\t\tnotifications,\n\t\t\tisEditMode,\n\t\t\tactionOverrides,\n\t\t\tisEager,\n\t\t\teagerParentEntityId,\n\t\t\teagerRelationName,\n\t\t\trefreshPage,\n\t\t]\n\t);\n\n\t// Initialize action dispatcher\n\tconst { dispatch } = useActionDispatcher(dispatcherContext);\n\n\t// Use ref to track if onInit has been dispatched (avoid duplicate calls on strict mode re-renders)\n\tconst hasDispatchedOnInit = useRef(false);\n\t// Use ref to store dispatch function to avoid it changing in effect deps\n\tconst dispatchRef = useRef(dispatch);\n\tdispatchRef.current = dispatch;\n\n\t// Call onInit (Refresh) when view container mounts\n\tuseEffect(() => {\n\t\tif (hasDispatchedOnInit.current) return;\n\n\t\tif (onInitAction && transfer) {\n\t\t\thasDispatchedOnInit.current = true;\n\n\t\t\t// Dispatch the refresh action\n\t\t\tdispatchRef.current(onInitAction).catch((error) => {\n\t\t\t\tconsole.error(\"[ViewContainerRenderer] Error dispatching onInit action:\", error);\n\t\t\t});\n\t\t}\n\t}, [onInitAction, transfer]);\n\n\t// Re-dispatch onInit when refreshVersion changes (triggered by operations)\n\tuseEffect(() => {\n\t\tif (refreshVersion === 0) return; // Skip initial mount\n\t\tif (onInitAction && transfer) {\n\t\t\tdispatchRef.current(onInitAction).catch((error) => {\n\t\t\t\tconsole.error(\"[ViewContainerRenderer] Error refreshing page:\", error);\n\t\t\t});\n\t\t}\n\t}, [refreshVersion, onInitAction, transfer]);\n\n\tconst firstChild = container.children?.[0] as Flex | undefined;\n\n\t// Don't render PageHeader in dialogs - dialog handles its own title and actions\n\tconst showPageHeader = !pageContext?.isDialog;\n\n\treturn (\n\t\t<PageProvider\n\t\t\ttransferId={effectiveEntityId}\n\t\t\tpageDefinition={page}\n\t\t\tparams={effectiveParams}\n\t\t\tisDialog={pageContext?.isDialog ?? false}\n\t\t>\n\t\t\t<RefreshSignalProvider signal={refreshVersion}>\n\t\t\t\t<DispatchProvider dispatch={dispatch}>\n\t\t\t\t\t<Box\n\t\t\t\t\t\tdata-testid={`view-container::${container.name ?? container[\"xmi:id\"]}`}\n\t\t\t\t\t\tsx={{ animation: \"judoFadeInUp 0.4s cubic-bezier(0.4,0,0.2,1) both\" }}\n\t\t\t\t\t>\n\t\t\t\t\t\t{showPageHeader && <PageHeader page={page} editMode={isEditMode} onDispatch={dispatch} />}\n\n\t\t\t\t\t\t{/* View content - render children from visual model */}\n\t\t\t\t\t\t{/* Note: We do NOT force readOnly based on edit mode here.\n\t\t\t\t\t\t Each input's readOnly state comes from its own isReadOnly attribute in the model.\n\t\t\t\t\t\t Edit mode (isDirty) is used for showing Cancel/Save buttons, not for input editability. */}\n\t\t\t\t\t\t{firstChild && <FlexRenderer element={firstChild} />}\n\t\t\t\t\t</Box>\n\t\t\t\t</DispatchProvider>\n\t\t\t</RefreshSignalProvider>\n\t\t</PageProvider>\n\t);\n}\n\nexport default ViewContainerRenderer;\n"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { PageDefinition } from '@judo/model-api';
2
+ export interface FormContainerRendererProps {
3
+ page: PageDefinition;
4
+ }
5
+ /**
6
+ * Renderer for FORM type containers.
7
+ * Handles onInit action (GetTemplate) on mount to fetch default values for new transfers.
8
+ */
9
+ export declare function FormContainerRenderer({ page }: FormContainerRendererProps): import("react/jsx-runtime").JSX.Element;
10
+ export default FormContainerRenderer;
11
+ //# sourceMappingURL=FormContainerRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormContainerRenderer.d.ts","sourceRoot":"","sources":["../../src/containers/FormContainerRenderer.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAuB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAO3E,MAAM,WAAW,0BAA0B;IAC1C,IAAI,EAAE,cAAc,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,IAAI,EAAE,EAAE,0BAA0B,2CAkHzE;AAED,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { PageDefinition } from '@judo/model-api';
2
+ export interface PageRendererProps {
3
+ page: PageDefinition;
4
+ }
5
+ /**
6
+ * Main page renderer that delegates to container type.
7
+ */
8
+ export declare function PageRenderer({ page }: PageRendererProps): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=PageRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageRenderer.d.ts","sourceRoot":"","sources":["../../src/containers/PageRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAYtD,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,cAAc,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE,iBAAiB,2CAkDvD"}
@@ -0,0 +1,11 @@
1
+ import { PageDefinition } from '@judo/model-api';
2
+ export interface TableContainerRendererProps {
3
+ page: PageDefinition;
4
+ }
5
+ /**
6
+ * Renderer for TABLE type containers.
7
+ * Fetches table data on mount via onInit action (Refresh).
8
+ */
9
+ export declare function TableContainerRenderer({ page }: TableContainerRendererProps): import("react/jsx-runtime").JSX.Element;
10
+ export default TableContainerRenderer;
11
+ //# sourceMappingURL=TableContainerRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableContainerRenderer.d.ts","sourceRoot":"","sources":["../../src/containers/TableContainerRenderer.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAA4B,cAAc,EAAuB,MAAM,iBAAiB,CAAC;AAQrG,MAAM,WAAW,2BAA2B;IAC3C,IAAI,EAAE,cAAc,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,IAAI,EAAE,EAAE,2BAA2B,2CA2L3E;AAED,eAAe,sBAAsB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { PageDefinition } from '@judo/model-api';
2
+ export interface ViewContainerRendererProps {
3
+ page: PageDefinition;
4
+ }
5
+ /**
6
+ * Renderer for VIEW type containers.
7
+ * Edit mode is derived from transfer dirty state - when user modifies data, view enters edit mode.
8
+ * Fetches transfer data on mount via onInit action (Refresh).
9
+ */
10
+ export declare function ViewContainerRenderer({ page }: ViewContainerRendererProps): import("react/jsx-runtime").JSX.Element;
11
+ export default ViewContainerRenderer;
12
+ //# sourceMappingURL=ViewContainerRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ViewContainerRenderer.d.ts","sourceRoot":"","sources":["../../src/containers/ViewContainerRenderer.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAkC,cAAc,EAAgB,MAAM,iBAAiB,CAAC;AA6BpG,MAAM,WAAW,0BAA0B;IAC1C,IAAI,EAAE,cAAc,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,IAAI,EAAE,EAAE,0BAA0B,2CAiPzE;AAED,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { JudoRestApi } from '@judo/actions';
2
+ import { Link, RelationType } from '@judo/model-api';
3
+ type OptionRecord = Record<string, unknown>;
4
+ export interface LinkSelectorDialogProps {
5
+ open: boolean;
6
+ element: Link;
7
+ relationType: RelationType;
8
+ api: JudoRestApi;
9
+ transfer?: OptionRecord;
10
+ onConfirm: (selected: OptionRecord) => void;
11
+ onCancel: () => void;
12
+ }
13
+ /**
14
+ * A selector dialog for Link components.
15
+ *
16
+ * Shows a DataGrid table with the available relation range,
17
+ * supports text filtering, pagination, and single-row selection.
18
+ */
19
+ export declare function LinkSelectorDialog({ open, element, relationType, api, transfer, onConfirm, onCancel, }: LinkSelectorDialogProps): import("react/jsx-runtime").JSX.Element;
20
+ export {};
21
+ //# sourceMappingURL=LinkSelectorDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinkSelectorDialog.d.ts","sourceRoot":"","sources":["../../src/dialogs/LinkSelectorDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjE,OAAO,KAAK,EAAU,IAAI,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAMlE,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5C,MAAM,WAAW,uBAAuB;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,IAAI,CAAC;IACd,YAAY,EAAE,YAAY,CAAC;IAC3B,GAAG,EAAE,WAAW,CAAC;IACjB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,SAAS,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,QAAQ,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EAClC,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,GAAG,EACH,QAAQ,EACR,SAAS,EACT,QAAQ,GACR,EAAE,uBAAuB,2CAiLzB"}
@@ -0,0 +1,42 @@
1
+ import { VisualElement } from '@judo/model-api';
2
+ import { Component, ErrorInfo, ReactNode } from 'react';
3
+ export interface ContainerErrorBoundaryProps {
4
+ children: ReactNode;
5
+ containerType: "TABLE" | "FORM" | "VIEW";
6
+ element?: VisualElement;
7
+ }
8
+ interface ErrorBoundaryState {
9
+ hasError: boolean;
10
+ error: Error | null;
11
+ errorInfo: ErrorInfo | null;
12
+ showDetails: boolean;
13
+ }
14
+ /**
15
+ * Error boundary for container types.
16
+ * No retry - displays error with model context for debugging.
17
+ */
18
+ export declare class ContainerErrorBoundary extends Component<ContainerErrorBoundaryProps, ErrorBoundaryState> {
19
+ state: ErrorBoundaryState;
20
+ static getDerivedStateFromError(error: Error): Partial<ErrorBoundaryState>;
21
+ componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
22
+ toggleDetails: () => void;
23
+ /**
24
+ * Safely stringify objects with cyclic references.
25
+ */
26
+ private safeStringify;
27
+ render(): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import('react').ReactPortal | import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react/jsx-runtime").JSX.Element | null | undefined;
28
+ }
29
+ export declare function TableContainerErrorBoundary({ children, element }: {
30
+ children: ReactNode;
31
+ element?: VisualElement;
32
+ }): import("react/jsx-runtime").JSX.Element;
33
+ export declare function FormContainerErrorBoundary({ children, element }: {
34
+ children: ReactNode;
35
+ element?: VisualElement;
36
+ }): import("react/jsx-runtime").JSX.Element;
37
+ export declare function ViewContainerErrorBoundary({ children, element }: {
38
+ children: ReactNode;
39
+ element?: VisualElement;
40
+ }): import("react/jsx-runtime").JSX.Element;
41
+ export {};
42
+ //# sourceMappingURL=ContainerErrorBoundary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContainerErrorBoundary.d.ts","sourceRoot":"","sources":["../../src/errors/ContainerErrorBoundary.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIrD,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAElE,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,EAAE,SAAS,CAAC;IACpB,aAAa,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACzC,OAAO,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,UAAU,kBAAkB;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,SAAS,CAAC,2BAA2B,EAAE,kBAAkB,CAAC;IACrG,KAAK,EAAE,kBAAkB,CAKvB;IAEF,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAI1E,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAM3D,aAAa,QAAO,IAAI,CAEtB;IAEF;;OAEG;IACH,OAAO,CAAC,aAAa;IAiBrB,MAAM;CAoFN;AAGD,wBAAgB,2BAA2B,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAC;IAAC,OAAO,CAAC,EAAE,aAAa,CAAA;CAAE,2CAMlH;AAED,wBAAgB,0BAA0B,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAC;IAAC,OAAO,CAAC,EAAE,aAAa,CAAA;CAAE,2CAMjH;AAED,wBAAgB,0BAA0B,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAC;IAAC,OAAO,CAAC,EAAE,aAAa,CAAA;CAAE,2CAMjH"}
@@ -0,0 +1,2 @@
1
+ export { ContainerErrorBoundary, TableContainerErrorBoundary, FormContainerErrorBoundary, ViewContainerErrorBoundary, type ContainerErrorBoundaryProps, } from './ContainerErrorBoundary';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,EAC1B,0BAA0B,EAC1B,KAAK,2BAA2B,GAChC,MAAM,0BAA0B,CAAC"}