@cratis/scene.components 3.4.0 → 3.6.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 (188) hide show
  1. package/README.md +87 -3
  2. package/bindings/ArcBoundComponents.tsx +40 -0
  3. package/bindings/BoundConstructor.ts +5 -5
  4. package/bindings/bindingRegistry.ts +52 -4
  5. package/bindings/for_bindingRegistry/when_registering_query_identities.ts +81 -0
  6. package/bindings/for_requireArcProxy/NativeProxies.ts +28 -0
  7. package/bindings/for_requireArcProxy/when_mounting_bound_adapters.tsx +73 -0
  8. package/bindings/for_requireArcProxy/when_previewing_without_arc.tsx +37 -0
  9. package/bindings/for_requireArcProxy/when_validating_a_proxy.ts +44 -0
  10. package/bindings/requireArcProxy.ts +24 -0
  11. package/cratisComponents.ts +4 -1
  12. package/cratisComponentsPackage.ts +3 -1
  13. package/data/SceneDataTable.tsx +1 -1
  14. package/data/SceneObservableDataTable.tsx +1 -1
  15. package/data/SceneSingleResult.tsx +29 -0
  16. package/data/SingleResultRuntime.tsx +103 -0
  17. package/data/SingleResultStatus.tsx +13 -0
  18. package/data/for_SceneDataTable/when_forwarding_query_arguments.tsx +23 -2
  19. package/data/for_SceneSingleResult/when_executing_a_native_query.tsx +290 -0
  20. package/data/for_SceneSingleResult/when_gating_the_lazy_runtime.tsx +60 -0
  21. package/data/index.ts +1 -0
  22. package/dialogs/SceneCommandDialog.tsx +1 -1
  23. package/dialogs/SceneStepperCommandDialog.tsx +1 -1
  24. package/dist/cjs/bindings/ArcBoundComponents.js +55 -0
  25. package/dist/cjs/bindings/ArcBoundComponents.js.map +1 -0
  26. package/dist/cjs/bindings/bindingRegistry.js +52 -4
  27. package/dist/cjs/bindings/bindingRegistry.js.map +1 -1
  28. package/dist/cjs/bindings/requireArcProxy.js +25 -0
  29. package/dist/cjs/bindings/requireArcProxy.js.map +1 -0
  30. package/dist/cjs/cratisComponents.js +4 -0
  31. package/dist/cjs/cratisComponents.js.map +1 -1
  32. package/dist/cjs/cratisComponentsPackage.js +3 -1
  33. package/dist/cjs/cratisComponentsPackage.js.map +1 -1
  34. package/dist/cjs/data/SceneDataTable.js +1 -1
  35. package/dist/cjs/data/SceneDataTable.js.map +1 -1
  36. package/dist/cjs/data/SceneObservableDataTable.js +1 -1
  37. package/dist/cjs/data/SceneObservableDataTable.js.map +1 -1
  38. package/dist/cjs/data/SceneSingleResult.js +41 -0
  39. package/dist/cjs/data/SceneSingleResult.js.map +1 -0
  40. package/dist/cjs/data/SingleResultRuntime.js +137 -0
  41. package/dist/cjs/data/SingleResultRuntime.js.map +1 -0
  42. package/dist/cjs/data/SingleResultStatus.js +23 -0
  43. package/dist/cjs/data/SingleResultStatus.js.map +1 -0
  44. package/dist/cjs/dialogs/SceneCommandDialog.js +1 -1
  45. package/dist/cjs/dialogs/SceneCommandDialog.js.map +1 -1
  46. package/dist/cjs/dialogs/SceneStepperCommandDialog.js +1 -1
  47. package/dist/cjs/dialogs/SceneStepperCommandDialog.js.map +1 -1
  48. package/dist/cjs/forms/SceneQueryInputForm.js +141 -0
  49. package/dist/cjs/forms/SceneQueryInputForm.js.map +1 -0
  50. package/dist/cjs/forms/fields/SceneRadioButtonField.js +4 -1
  51. package/dist/cjs/forms/fields/SceneRadioButtonField.js.map +1 -1
  52. package/dist/cjs/forms/queryInputs.js +50 -0
  53. package/dist/cjs/forms/queryInputs.js.map +1 -0
  54. package/dist/cjs/index.js +8 -0
  55. package/dist/cjs/index.js.map +1 -1
  56. package/dist/cjs/pages/SceneDataPage.js +1 -1
  57. package/dist/cjs/pages/SceneDataPage.js.map +1 -1
  58. package/dist/esm/bindings/ArcBoundComponents.d.ts +18 -0
  59. package/dist/esm/bindings/ArcBoundComponents.d.ts.map +1 -0
  60. package/dist/esm/bindings/ArcBoundComponents.js +49 -0
  61. package/dist/esm/bindings/ArcBoundComponents.js.map +1 -0
  62. package/dist/esm/bindings/bindingRegistry.d.ts +4 -0
  63. package/dist/esm/bindings/bindingRegistry.d.ts.map +1 -1
  64. package/dist/esm/bindings/bindingRegistry.js +49 -5
  65. package/dist/esm/bindings/bindingRegistry.js.map +1 -1
  66. package/dist/esm/bindings/for_bindingRegistry/when_registering_query_identities.d.ts +2 -0
  67. package/dist/esm/bindings/for_bindingRegistry/when_registering_query_identities.d.ts.map +1 -0
  68. package/dist/esm/bindings/for_bindingRegistry/when_registering_query_identities.js +73 -0
  69. package/dist/esm/bindings/for_bindingRegistry/when_registering_query_identities.js.map +1 -0
  70. package/dist/esm/bindings/for_requireArcProxy/NativeProxies.d.ts +25 -0
  71. package/dist/esm/bindings/for_requireArcProxy/NativeProxies.d.ts.map +1 -0
  72. package/dist/esm/bindings/for_requireArcProxy/NativeProxies.js +23 -0
  73. package/dist/esm/bindings/for_requireArcProxy/NativeProxies.js.map +1 -0
  74. package/dist/esm/bindings/for_requireArcProxy/when_mounting_bound_adapters.d.ts +2 -0
  75. package/dist/esm/bindings/for_requireArcProxy/when_mounting_bound_adapters.d.ts.map +1 -0
  76. package/dist/esm/bindings/for_requireArcProxy/when_mounting_bound_adapters.js +56 -0
  77. package/dist/esm/bindings/for_requireArcProxy/when_mounting_bound_adapters.js.map +1 -0
  78. package/dist/esm/bindings/for_requireArcProxy/when_previewing_without_arc.d.ts +2 -0
  79. package/dist/esm/bindings/for_requireArcProxy/when_previewing_without_arc.d.ts.map +1 -0
  80. package/dist/esm/bindings/for_requireArcProxy/when_previewing_without_arc.js +32 -0
  81. package/dist/esm/bindings/for_requireArcProxy/when_previewing_without_arc.js.map +1 -0
  82. package/dist/esm/bindings/for_requireArcProxy/when_validating_a_proxy.d.ts +2 -0
  83. package/dist/esm/bindings/for_requireArcProxy/when_validating_a_proxy.d.ts.map +1 -0
  84. package/dist/esm/bindings/for_requireArcProxy/when_validating_a_proxy.js +45 -0
  85. package/dist/esm/bindings/for_requireArcProxy/when_validating_a_proxy.js.map +1 -0
  86. package/dist/esm/bindings/requireArcProxy.d.ts +5 -0
  87. package/dist/esm/bindings/requireArcProxy.d.ts.map +1 -0
  88. package/dist/esm/bindings/requireArcProxy.js +23 -0
  89. package/dist/esm/bindings/requireArcProxy.js.map +1 -0
  90. package/dist/esm/cratisComponents.d.ts.map +1 -1
  91. package/dist/esm/cratisComponents.js +4 -0
  92. package/dist/esm/cratisComponents.js.map +1 -1
  93. package/dist/esm/cratisComponentsPackage.d.ts.map +1 -1
  94. package/dist/esm/cratisComponentsPackage.js +3 -1
  95. package/dist/esm/cratisComponentsPackage.js.map +1 -1
  96. package/dist/esm/data/SceneDataTable.js +1 -1
  97. package/dist/esm/data/SceneDataTable.js.map +1 -1
  98. package/dist/esm/data/SceneObservableDataTable.js +1 -1
  99. package/dist/esm/data/SceneObservableDataTable.js.map +1 -1
  100. package/dist/esm/data/SceneSingleResult.d.ts +3 -0
  101. package/dist/esm/data/SceneSingleResult.d.ts.map +1 -0
  102. package/dist/esm/data/SceneSingleResult.js +39 -0
  103. package/dist/esm/data/SceneSingleResult.js.map +1 -0
  104. package/dist/esm/data/SingleResultRuntime.d.ts +10 -0
  105. package/dist/esm/data/SingleResultRuntime.d.ts.map +1 -0
  106. package/dist/esm/data/SingleResultRuntime.js +133 -0
  107. package/dist/esm/data/SingleResultRuntime.js.map +1 -0
  108. package/dist/esm/data/SingleResultStatus.d.ts +7 -0
  109. package/dist/esm/data/SingleResultStatus.d.ts.map +1 -0
  110. package/dist/esm/data/SingleResultStatus.js +21 -0
  111. package/dist/esm/data/SingleResultStatus.js.map +1 -0
  112. package/dist/esm/data/for_SceneDataTable/when_forwarding_query_arguments.js +21 -4
  113. package/dist/esm/data/for_SceneDataTable/when_forwarding_query_arguments.js.map +1 -1
  114. package/dist/esm/data/for_SceneSingleResult/when_executing_a_native_query.d.ts +2 -0
  115. package/dist/esm/data/for_SceneSingleResult/when_executing_a_native_query.d.ts.map +1 -0
  116. package/dist/esm/data/for_SceneSingleResult/when_executing_a_native_query.js +255 -0
  117. package/dist/esm/data/for_SceneSingleResult/when_executing_a_native_query.js.map +1 -0
  118. package/dist/esm/data/for_SceneSingleResult/when_gating_the_lazy_runtime.d.ts +2 -0
  119. package/dist/esm/data/for_SceneSingleResult/when_gating_the_lazy_runtime.d.ts.map +1 -0
  120. package/dist/esm/data/for_SceneSingleResult/when_gating_the_lazy_runtime.js +54 -0
  121. package/dist/esm/data/for_SceneSingleResult/when_gating_the_lazy_runtime.js.map +1 -0
  122. package/dist/esm/data/index.d.ts +1 -0
  123. package/dist/esm/data/index.d.ts.map +1 -1
  124. package/dist/esm/data/index.js +1 -0
  125. package/dist/esm/data/index.js.map +1 -1
  126. package/dist/esm/dialogs/SceneCommandDialog.js +1 -1
  127. package/dist/esm/dialogs/SceneCommandDialog.js.map +1 -1
  128. package/dist/esm/dialogs/SceneStepperCommandDialog.js +1 -1
  129. package/dist/esm/dialogs/SceneStepperCommandDialog.js.map +1 -1
  130. package/dist/esm/for_cratisComponentsPackage/when_describing_query_input_form.d.ts +2 -0
  131. package/dist/esm/for_cratisComponentsPackage/when_describing_query_input_form.d.ts.map +1 -0
  132. package/dist/esm/for_cratisComponentsPackage/when_describing_query_input_form.js +14 -0
  133. package/dist/esm/for_cratisComponentsPackage/when_describing_query_input_form.js.map +1 -0
  134. package/dist/esm/for_cratisComponentsPackage/when_describing_single_result.d.ts +2 -0
  135. package/dist/esm/for_cratisComponentsPackage/when_describing_single_result.d.ts.map +1 -0
  136. package/dist/esm/for_cratisComponentsPackage/when_describing_single_result.js +16 -0
  137. package/dist/esm/for_cratisComponentsPackage/when_describing_single_result.js.map +1 -0
  138. package/dist/esm/forms/SceneQueryInputForm.d.ts +3 -0
  139. package/dist/esm/forms/SceneQueryInputForm.d.ts.map +1 -0
  140. package/dist/esm/forms/SceneQueryInputForm.js +139 -0
  141. package/dist/esm/forms/SceneQueryInputForm.js.map +1 -0
  142. package/dist/esm/forms/fields/SceneRadioButtonField.d.ts.map +1 -1
  143. package/dist/esm/forms/fields/SceneRadioButtonField.js +4 -1
  144. package/dist/esm/forms/fields/SceneRadioButtonField.js.map +1 -1
  145. package/dist/esm/forms/fields/for_SceneRadioButtonField/when_mapping_the_group_name.d.ts +2 -0
  146. package/dist/esm/forms/fields/for_SceneRadioButtonField/when_mapping_the_group_name.d.ts.map +1 -0
  147. package/dist/esm/forms/fields/for_SceneRadioButtonField/when_mapping_the_group_name.js +38 -0
  148. package/dist/esm/forms/fields/for_SceneRadioButtonField/when_mapping_the_group_name.js.map +1 -0
  149. package/dist/esm/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.js +4 -0
  150. package/dist/esm/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.js.map +1 -1
  151. package/dist/esm/forms/for_SceneQueryInputForm/ProjectLookup.d.ts +26 -0
  152. package/dist/esm/forms/for_SceneQueryInputForm/ProjectLookup.d.ts.map +1 -0
  153. package/dist/esm/forms/for_SceneQueryInputForm/ProjectLookup.js +44 -0
  154. package/dist/esm/forms/for_SceneQueryInputForm/ProjectLookup.js.map +1 -0
  155. package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_generated_guid_parameters.d.ts +2 -0
  156. package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_generated_guid_parameters.d.ts.map +1 -0
  157. package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_generated_guid_parameters.js +175 -0
  158. package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_generated_guid_parameters.js.map +1 -0
  159. package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_native_queries.d.ts +2 -0
  160. package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_native_queries.d.ts.map +1 -0
  161. package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_native_queries.js +413 -0
  162. package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_native_queries.js.map +1 -0
  163. package/dist/esm/forms/index.d.ts +2 -0
  164. package/dist/esm/forms/index.d.ts.map +1 -1
  165. package/dist/esm/forms/index.js +1 -0
  166. package/dist/esm/forms/index.js.map +1 -1
  167. package/dist/esm/forms/queryInputs.d.ts +10 -0
  168. package/dist/esm/forms/queryInputs.d.ts.map +1 -0
  169. package/dist/esm/forms/queryInputs.js +47 -0
  170. package/dist/esm/forms/queryInputs.js.map +1 -0
  171. package/dist/esm/index.js +3 -1
  172. package/dist/esm/index.js.map +1 -1
  173. package/dist/esm/pages/SceneDataPage.js +1 -1
  174. package/dist/esm/pages/SceneDataPage.js.map +1 -1
  175. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  176. package/for_cratisComponentsPackage/when_describing_query_input_form.ts +17 -0
  177. package/for_cratisComponentsPackage/when_describing_single_result.ts +20 -0
  178. package/forms/SceneQueryInputForm.tsx +79 -0
  179. package/forms/fields/SceneRadioButtonField.tsx +4 -1
  180. package/forms/fields/for_SceneRadioButtonField/when_mapping_the_group_name.tsx +45 -0
  181. package/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.ts +6 -0
  182. package/forms/for_SceneQueryInputForm/ProjectLookup.ts +54 -0
  183. package/forms/for_SceneQueryInputForm/when_submitting_generated_guid_parameters.tsx +188 -0
  184. package/forms/for_SceneQueryInputForm/when_submitting_native_queries.tsx +423 -0
  185. package/forms/index.ts +2 -0
  186. package/forms/queryInputs.ts +50 -0
  187. package/package.json +23 -7
  188. package/pages/SceneDataPage.tsx +1 -1
@@ -0,0 +1,255 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { act, cleanup, render, screen, waitFor } from '@testing-library/react';
3
+ import { expect, vi } from 'vitest';
4
+ import { StrictMode } from 'react';
5
+ import { ArcContext } from '@cratis/arc.react';
6
+ import { QueryFor, QueryHttpMethod, QueryValidator } from '@cratis/arc/queries';
7
+ import { clearBindings, registerQuery } from '../../bindings';
8
+ import { externalComponent } from '../../given';
9
+ import { SceneSingleResult } from '../SceneSingleResult';
10
+ class ProjectName extends QueryFor {
11
+ route = '/projects/{projectId}/name';
12
+ parameterDescriptors = [];
13
+ requiredRequestParameters = ['projectId'];
14
+ defaultValue = undefined;
15
+ constructor() {
16
+ super(Object, false);
17
+ this.setHttpMethod(QueryHttpMethod.Get);
18
+ }
19
+ }
20
+ class ProjectNames extends QueryFor {
21
+ route = '/projects';
22
+ parameterDescriptors = [];
23
+ requiredRequestParameters = [];
24
+ defaultValue = [];
25
+ constructor() { super(Object, true); }
26
+ }
27
+ class ProjectArgumentsValidator extends QueryValidator {
28
+ static received;
29
+ constructor() {
30
+ super();
31
+ this.ruleFor(args => {
32
+ ProjectArgumentsValidator.received = args;
33
+ return args.projectId;
34
+ }).minLength(2);
35
+ }
36
+ }
37
+ class ValidatedProjectName extends ProjectName {
38
+ validation = new ProjectArgumentsValidator();
39
+ }
40
+ function envelope(data, overrides = {}) {
41
+ return {
42
+ data, isSuccess: true, isAuthorized: true, isValid: true, hasExceptions: false,
43
+ validationResults: [], exceptionMessages: [], exceptionStackTrace: '',
44
+ paging: { page: 0, size: 0, totalItems: 0, totalPages: 0 }, ...overrides,
45
+ };
46
+ }
47
+ function response(data, overrides = {}) {
48
+ return { ok: true, status: 200, json: async () => envelope(data, overrides) };
49
+ }
50
+ function deferred() {
51
+ let resolve;
52
+ let reject;
53
+ const promise = new Promise((yes, no) => { resolve = yes; reject = no; });
54
+ return { promise, resolve, reject };
55
+ }
56
+ describe('when executing an optional single result with native Arc 22.16.1', () => {
57
+ const headers = () => ({ 'x-host': 'one' });
58
+ const context = { microservice: 'projects', origin: 'https://example.test', apiBasePath: '/backend', httpHeadersCallback: headers };
59
+ const fetch = vi.fn();
60
+ function view(queryArguments = { projectId: 'A' }, arc = context, properties = {}) {
61
+ return _jsx(ArcContext.Provider, { value: arc, children: _jsx(SceneSingleResult, { element: externalComponent('Cratis.Components:singleResult', {
62
+ query: 'ProjectName', queryArguments, enabled: true, resultField: 'name', ...properties,
63
+ }), slots: {} }) });
64
+ }
65
+ beforeEach(() => {
66
+ clearBindings();
67
+ registerQuery('ProjectName', ProjectName);
68
+ registerQuery('ProjectNames', ProjectNames);
69
+ registerQuery('ValidatedProjectName', ValidatedProjectName);
70
+ fetch.mockReset();
71
+ vi.stubGlobal('fetch', fetch);
72
+ });
73
+ afterEach(() => {
74
+ cleanup();
75
+ clearBindings();
76
+ vi.unstubAllGlobals();
77
+ });
78
+ it('uses the native URL, arguments and context headers without changing the host object', async () => {
79
+ const args = Object.freeze({ projectId: 'AA', locale: 'en' });
80
+ fetch.mockResolvedValue(response({ name: '<b>Project A</b>' }));
81
+ await act(async () => { render(view(args, context, { query: 'ValidatedProjectName' })); });
82
+ expect(await screen.findByText('<b>Project A</b>')).not.toBeNull();
83
+ expect(document.querySelector('b')).toBeNull();
84
+ expect(fetch).toHaveBeenCalledTimes(1);
85
+ const [url, init] = fetch.mock.calls[0];
86
+ expect(String(url)).toBe('https://example.test/backend/projects/AA/name?locale=en');
87
+ expect(ProjectArgumentsValidator.received).toBe(args);
88
+ expect(new Headers(init?.headers).get('x-host')).toBe('one');
89
+ expect(new Headers(init?.headers).get('x-cratis-microservice')).toBe('projects');
90
+ expect(args).toEqual({ projectId: 'AA', locale: 'en' });
91
+ });
92
+ for (const value of [false, 0, '']) {
93
+ it(`renders scalar own-field ${JSON.stringify(value)} as present`, async () => {
94
+ fetch.mockResolvedValue(response({ name: value }));
95
+ await act(async () => { render(view()); });
96
+ await waitFor(() => expect(screen.getByRole('status').getAttribute('data-scene-single-result')).toBe('success'));
97
+ expect(screen.getByRole('status').textContent).toBe(String(value));
98
+ });
99
+ }
100
+ for (const data of [null, undefined]) {
101
+ it(`shows not found for successful ${String(data)}`, async () => {
102
+ fetch.mockResolvedValue(response(data));
103
+ await act(async () => { render(view()); });
104
+ expect(await screen.findByText('Not found')).not.toBeNull();
105
+ });
106
+ }
107
+ for (const failure of [{ isSuccess: false }, { isAuthorized: false }, { isValid: false }, { hasExceptions: true }]) {
108
+ it(`prioritizes failure over missing data: ${JSON.stringify(failure)}`, async () => {
109
+ fetch.mockResolvedValue(response(null, { ...failure, exceptionMessages: ['secret'], exceptionStackTrace: 'server stack' }));
110
+ await act(async () => { render(view()); });
111
+ expect(await screen.findByRole('alert')).toHaveProperty('textContent', 'Unable to load result');
112
+ expect(screen.queryByText('Not found')).toBeNull();
113
+ expect(document.body.textContent).not.toMatch(/secret|server stack/);
114
+ });
115
+ }
116
+ for (const args of [{}, { projectId: '' }, { projectId: null }, [], null, 'A', undefined]) {
117
+ it(`does not send invalid or missing arguments: ${JSON.stringify(args)}`, async () => {
118
+ await act(async () => { render(view(args, context, { queryArguments: args })); });
119
+ expect(await screen.findByRole('alert')).not.toBeNull();
120
+ expect(fetch).not.toHaveBeenCalled();
121
+ });
122
+ }
123
+ it('lets the native proxy validator reject arguments without HTTP', async () => {
124
+ await act(async () => { render(view({ projectId: 'A' }, context, { query: 'ValidatedProjectName' })); });
125
+ expect(await screen.findByRole('alert')).not.toBeNull();
126
+ expect(fetch).not.toHaveBeenCalled();
127
+ });
128
+ for (const enabled of [false, undefined, 'true']) {
129
+ it(`is idle unless explicitly enabled: ${String(enabled)}`, async () => {
130
+ await act(async () => { render(view({ projectId: 'A' }, context, { enabled })); });
131
+ expect(screen.getByText('Idle')).not.toBeNull();
132
+ expect(fetch).not.toHaveBeenCalled();
133
+ });
134
+ }
135
+ it('never chooses another query when the binding is missing', async () => {
136
+ await act(async () => { render(view({}, context, { query: 'Missing' })); });
137
+ expect(screen.getByText(/Unresolved query binding 'Missing'/)).not.toBeNull();
138
+ expect(fetch).not.toHaveBeenCalled();
139
+ });
140
+ it('aborts A and ignores reverse completion when the transport ignores abort', async () => {
141
+ const a = deferred();
142
+ const b = deferred();
143
+ fetch.mockReturnValueOnce(a.promise).mockReturnValueOnce(b.promise);
144
+ let mounted;
145
+ await act(async () => { mounted = render(view()); });
146
+ expect(screen.getByText('Loading')).not.toBeNull();
147
+ const signal = fetch.mock.calls[0][1]?.signal;
148
+ await act(async () => { mounted.rerender(view({ projectId: 'B' })); });
149
+ expect(signal?.aborted).toBe(true);
150
+ await act(async () => { b.resolve(response({ name: 'B' })); });
151
+ expect(screen.getByText('B')).not.toBeNull();
152
+ await act(async () => { a.resolve(response({ name: 'A' })); });
153
+ expect(screen.queryByText('A')).toBeNull();
154
+ expect(screen.getByText('B')).not.toBeNull();
155
+ });
156
+ it('hides a settled A immediately on B and aborts B on disposal', async () => {
157
+ const b = deferred();
158
+ fetch.mockResolvedValueOnce(response({ name: 'A' })).mockReturnValueOnce(b.promise);
159
+ let mounted;
160
+ await act(async () => { mounted = render(view()); });
161
+ expect(screen.getByText('A')).not.toBeNull();
162
+ await act(async () => { mounted.rerender(view({ projectId: 'B' })); });
163
+ expect(screen.queryByText('A')).toBeNull();
164
+ expect(screen.getByText('Loading')).not.toBeNull();
165
+ mounted.unmount();
166
+ expect(fetch.mock.calls[1][1]?.signal?.aborted).toBe(true);
167
+ await act(async () => { b.reject(new DOMException('Aborted', 'AbortError')); });
168
+ });
169
+ it('reexecutes for header-only context changes and ignores the old response', async () => {
170
+ const a = deferred();
171
+ const b = deferred();
172
+ const args = { projectId: 'A' };
173
+ fetch.mockReturnValueOnce(a.promise).mockReturnValueOnce(b.promise);
174
+ let mounted;
175
+ await act(async () => { mounted = render(view(args)); });
176
+ await act(async () => { mounted.rerender(view(args, { ...context, httpHeadersCallback: () => ({ 'x-host': 'two' }) })); });
177
+ expect(fetch.mock.calls[0][1]?.signal?.aborted).toBe(true);
178
+ expect(new Headers(fetch.mock.calls[1][1]?.headers).get('x-host')).toBe('two');
179
+ await act(async () => { b.resolve(response({ name: 'New context' })); a.resolve(response({ name: 'Old context' })); });
180
+ expect(screen.getByText('New context')).not.toBeNull();
181
+ expect(screen.queryByText('Old context')).toBeNull();
182
+ });
183
+ it('rejects enumerable proxies before HTTP rather than adapting them to a single model', async () => {
184
+ await act(async () => { render(view({}, context, { query: 'ProjectNames' })); });
185
+ expect(await screen.findByRole('alert')).not.toBeNull();
186
+ expect(fetch).not.toHaveBeenCalled();
187
+ });
188
+ it('handles StrictMode disposal without an unhandled abort promise', async () => {
189
+ const a = deferred();
190
+ const b = deferred();
191
+ fetch.mockReturnValueOnce(a.promise).mockReturnValueOnce(b.promise);
192
+ await act(async () => { render(_jsx(StrictMode, { children: view() })); });
193
+ expect(fetch).toHaveBeenCalledTimes(2);
194
+ expect(fetch.mock.calls[0][1]?.signal?.aborted).toBe(true);
195
+ await act(async () => {
196
+ a.reject(new DOMException('Aborted', 'AbortError'));
197
+ b.resolve(response({ name: 'Current generation' }));
198
+ });
199
+ expect(screen.getByText('Current generation')).not.toBeNull();
200
+ });
201
+ it('ignores successful completion after unmount even if HTTP ignores abort', async () => {
202
+ const pending = deferred();
203
+ fetch.mockReturnValueOnce(pending.promise);
204
+ let mounted;
205
+ await act(async () => { mounted = render(view()); });
206
+ mounted.unmount();
207
+ expect(fetch.mock.calls[0][1]?.signal?.aborted).toBe(true);
208
+ await act(async () => { pending.resolve(response({ name: 'Disposed' })); });
209
+ expect(screen.queryByText('Disposed')).toBeNull();
210
+ });
211
+ it('turns transport rejection and malformed envelopes into safe failure', async () => {
212
+ fetch.mockRejectedValueOnce(new Error('private network detail'));
213
+ let mounted;
214
+ await act(async () => { mounted = render(view()); });
215
+ expect(await screen.findByRole('alert')).toHaveProperty('textContent', 'Unable to load result');
216
+ fetch.mockResolvedValueOnce({ ok: false, status: 500, json: async () => ({}) });
217
+ await act(async () => { mounted.rerender(view({ projectId: 'B' })); });
218
+ expect(await screen.findByRole('alert')).toHaveProperty('textContent', 'Unable to load result');
219
+ expect(document.body.textContent).not.toContain('private network detail');
220
+ });
221
+ it('aborts and clears a pending request when disabled', async () => {
222
+ const pending = deferred();
223
+ fetch.mockReturnValueOnce(pending.promise);
224
+ let mounted;
225
+ await act(async () => { mounted = render(view()); });
226
+ await act(async () => { mounted.rerender(view({ projectId: 'A' }, context, { enabled: false })); });
227
+ expect(fetch.mock.calls[0][1]?.signal?.aborted).toBe(true);
228
+ await act(async () => { pending.resolve(response({ name: 'Obsolete' })); });
229
+ expect(screen.getByText('Idle')).not.toBeNull();
230
+ expect(screen.queryByText('Obsolete')).toBeNull();
231
+ });
232
+ for (const change of [{ origin: 'https://other.test' }, { apiBasePath: '/v2' }, { microservice: 'other' }, { queryVersion: 1 }]) {
233
+ it(`invalidates a settled result after context changes: ${JSON.stringify(change)}`, async () => {
234
+ const pending = deferred();
235
+ const args = { projectId: 'A' };
236
+ fetch.mockResolvedValueOnce(response({ name: 'Old' })).mockReturnValueOnce(pending.promise);
237
+ let mounted;
238
+ await act(async () => { mounted = render(view(args)); });
239
+ await act(async () => { mounted.rerender(view(args, { ...context, ...change })); });
240
+ expect(screen.queryByText('Old')).toBeNull();
241
+ expect(screen.getByText('Loading')).not.toBeNull();
242
+ expect(fetch).toHaveBeenCalledTimes(2);
243
+ await act(async () => { pending.resolve(response({ name: 'New' })); });
244
+ expect(screen.getByText('New')).not.toBeNull();
245
+ });
246
+ }
247
+ for (const data of [{ name: {} }, { name: [] }, {}, Object.create({ name: 'Inherited' }), [{ name: 'A' }]]) {
248
+ it(`rejects non-scalar or absent own fields: ${JSON.stringify(data)}`, async () => {
249
+ fetch.mockResolvedValue(response(data));
250
+ await act(async () => { render(view()); });
251
+ expect(await screen.findByRole('alert')).not.toBeNull();
252
+ });
253
+ }
254
+ });
255
+ //# sourceMappingURL=when_executing_a_native_query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_executing_a_native_query.js","sourceRoot":"","sources":["../../../../data/for_SceneSingleResult/when_executing_a_native_query.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,UAAU,EAAyB,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,WAAY,SAAQ,QAAmD;IAChE,KAAK,GAAG,4BAA4B,CAAC;IACrC,oBAAoB,GAAG,EAAE,CAAC;IAC1B,yBAAyB,GAAG,CAAC,WAAW,CAAC,CAAC;IACnD,YAAY,GAAG,SAAS,CAAC;IAEzB;QACI,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;CACJ;AAED,MAAM,YAAa,SAAQ,QAAkB;IAChC,KAAK,GAAG,WAAW,CAAC;IACpB,oBAAoB,GAAG,EAAE,CAAC;IAC1B,yBAAyB,GAAG,EAAE,CAAC;IACxC,YAAY,GAAG,EAAE,CAAC;IAElB,gBAAgB,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;CACzC;AAED,MAAM,yBAA0B,SAAQ,cAAqC;IACzE,MAAM,CAAC,QAAQ,CAAU;IAEzB;QACI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAChB,yBAAyB,CAAC,QAAQ,GAAG,IAAI,CAAC;YAC1C,OAAO,IAAI,CAAC,SAAS,CAAC;QAC1B,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;CACJ;AAED,MAAM,oBAAqB,SAAQ,WAAW;IACjC,UAAU,GAAG,IAAI,yBAAyB,EAAE,CAAC;CACzD;AAED,SAAS,QAAQ,CAAC,IAAa,EAAE,SAAS,GAA4B,EAAE;IACpE,OAAO;QACH,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK;QAC9E,iBAAiB,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE;QACrE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,GAAG,SAAS;KAC3E,CAAC;AACN,CAAC;AAED,SAAS,QAAQ,CAAC,IAAa,EAAE,SAAS,GAA4B,EAAE;IACpE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,EAAc,CAAC;AAC9F,CAAC;AAED,SAAS,QAAQ;IACb,IAAI,OAAmC,CAAC;IACxC,IAAI,MAAiC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAW,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACxC,CAAC;AAED,QAAQ,CAAC,kEAAkE,EAAE,GAAG,EAAE;IAC9E,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAqB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,sBAAsB,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC;IACtJ,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,EAA2B,CAAC;IAE/C,SAAS,IAAI,CAAC,cAAc,GAAY,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,OAAO,EAAE,UAAU,GAA4B,EAAE;QAC/G,OAAO,KAAC,UAAU,CAAC,QAAQ,IAAC,KAAK,EAAE,GAAG,YAClC,KAAC,iBAAiB,IAAC,OAAO,EAAE,iBAAiB,CAAC,gCAAgC,EAAE;oBAC5E,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,UAAU;iBAC1F,CAAC,EAAE,KAAK,EAAE,EAAE,GAAI,GACC,CAAC;IAC3B,CAAC;IAED,UAAU,CAAC,GAAG,EAAE;QACZ,aAAa,EAAE,CAAC;QAChB,aAAa,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAC1C,aAAa,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAC5C,aAAa,CAAC,sBAAsB,EAAE,oBAAoB,CAAC,CAAC;QAC5D,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,OAAO,EAAE,CAAC;QACV,aAAa,EAAE,CAAC;QAChB,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qFAAqF,EAAE,KAAK,IAAI,EAAE;QACjG,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC;QAChE,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3F,MAAM,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACnE,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;QACpF,MAAM,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjF,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACjC,EAAE,CAAC,4BAA4B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;YAC1E,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACnD,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACjH,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;QACnC,EAAE,CAAC,kCAAkC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;YAC5D,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACxC,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAChE,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACjH,EAAE,CAAC,0CAA0C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;YAC/E,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,iBAAiB,EAAE,CAAC,QAAQ,CAAC,EAAE,mBAAmB,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;YAC5H,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC;YAChG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YACnD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC;QACxF,EAAE,CAAC,+CAA+C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;YACjF,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClF,MAAM,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACxD,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACzC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzG,MAAM,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACxD,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,OAAO,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;QAC/C,EAAE,CAAC,sCAAsC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAChD,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACzC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,oCAAoC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC9E,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACtF,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;QACrB,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACpE,IAAI,OAAmC,CAAC;QACxC,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAC9C,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC7C,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;QACrB,KAAK,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACpF,IAAI,OAAmC,CAAC;QACxC,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC7C,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACnD,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;QAChC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACpE,IAAI,OAAmC,CAAC;QACxC,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3H,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/E,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvH,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oFAAoF,EAAE,KAAK,IAAI,EAAE;QAChG,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACxD,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC5E,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;QACrB,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACpE,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,CAAC,KAAC,UAAU,cAAE,IAAI,EAAE,GAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,MAAM,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE;YACjB,CAAC,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;YACpD,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC;QAC3B,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,OAAmC,CAAC;QACxC,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACjF,KAAK,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACjE,IAAI,OAAmC,CAAC;QACxC,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC;QAChG,KAAK,CAAC,qBAAqB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAc,CAAC,CAAC;QAC5F,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC;QAChG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC;QAC3B,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,OAAmC,CAAC;QACxC,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9H,EAAE,CAAC,uDAAuD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;YAC3F,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;YAChC,KAAK,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC5F,IAAI,OAAmC,CAAC;YACxC,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpF,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACnD,MAAM,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;QACzG,EAAE,CAAC,4CAA4C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;YAC9E,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACxC,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC5D,CAAC,CAAC,CAAC;IACP,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=when_gating_the_lazy_runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_gating_the_lazy_runtime.d.ts","sourceRoot":"","sources":["../../../../data/for_SceneSingleResult/when_gating_the_lazy_runtime.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,54 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { act, cleanup, render, screen } from '@testing-library/react';
3
+ import { expect, vi } from 'vitest';
4
+ import { externalComponent } from '../../given';
5
+ class RegisteredQuery {
6
+ }
7
+ describe('when gating the single result lazy runtime', () => {
8
+ const loaded = vi.fn();
9
+ let SceneSingleResult;
10
+ let bindings;
11
+ beforeEach(async () => {
12
+ vi.resetModules();
13
+ loaded.mockClear();
14
+ vi.doMock('../SingleResultRuntime', () => {
15
+ loaded();
16
+ return { default: () => _jsx("span", { children: "Runtime mounted" }) };
17
+ });
18
+ bindings = await import('../../bindings');
19
+ bindings.clearBindings();
20
+ bindings.registerQuery('Registered', RegisteredQuery);
21
+ ({ SceneSingleResult } = await import('../SceneSingleResult'));
22
+ });
23
+ afterEach(() => {
24
+ cleanup();
25
+ bindings.clearBindings();
26
+ vi.doUnmock('../SingleResultRuntime');
27
+ vi.resetModules();
28
+ });
29
+ for (const properties of [
30
+ { query: 'Missing', enabled: true, queryArguments: {}, resultField: 'name' },
31
+ { query: 'Registered', queryArguments: {}, resultField: 'name' },
32
+ { query: 'Registered', enabled: true, queryArguments: [], resultField: 'name' },
33
+ { query: 'Registered', enabled: true, queryArguments: {}, resultField: '' },
34
+ ]) {
35
+ it(`does not import Arc-bound code for ${JSON.stringify(properties)}`, async () => {
36
+ await act(async () => {
37
+ render(_jsx(SceneSingleResult, { element: externalComponent('Cratis.Components:singleResult', properties), slots: {} }));
38
+ });
39
+ expect(loaded).not.toHaveBeenCalled();
40
+ expect(screen.queryByText('Runtime mounted')).toBeNull();
41
+ expect(document.body.textContent).toMatch(/Unresolved query binding|Idle|Unable to load result/);
42
+ });
43
+ }
44
+ it('loads only the explicitly bound and enabled view', async () => {
45
+ await act(async () => {
46
+ render(_jsx(SceneSingleResult, { element: externalComponent('Cratis.Components:singleResult', {
47
+ query: 'Registered', enabled: true, queryArguments: {}, resultField: 'name',
48
+ }), slots: {} }));
49
+ });
50
+ expect(await screen.findByText('Runtime mounted')).not.toBeNull();
51
+ expect(loaded).toHaveBeenCalledTimes(1);
52
+ });
53
+ });
54
+ //# sourceMappingURL=when_gating_the_lazy_runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_gating_the_lazy_runtime.js","sourceRoot":"","sources":["../../../../data/for_SceneSingleResult/when_gating_the_lazy_runtime.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ export * from './SceneSingleResult';
1
2
  export * from './SceneDataTable';
2
3
  export * from './SceneObservableDataTable';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../data/index.ts"],"names":[],"mappings":"AAGA,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../data/index.ts"],"names":[],"mappings":"AAGA,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC"}
@@ -1,3 +1,4 @@
1
+ export * from './SceneSingleResult';
1
2
  export * from './SceneDataTable';
2
3
  export * from './SceneObservableDataTable';
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../data/index.ts"],"names":[],"mappings":"AAGA,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../data/index.ts"],"names":[],"mappings":"AAGA,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC"}
@@ -7,7 +7,7 @@ import { ArcRuntimeBoundary } from '../bindings/ArcRuntimeBoundary.js';
7
7
  import { stringProperty, booleanProperty } from '../properties.js';
8
8
 
9
9
  const CommandDialog = /*#__PURE__*/ lazy(async ()=>({
10
- default: (await import('@cratis/components/CommandDialog')).CommandDialog
10
+ default: (await import('../bindings/ArcBoundComponents.js')).BoundCommandDialog
11
11
  }));
12
12
  /**
13
13
  * The `Cratis.Components:commandDialog` component - `CommandDialog` from `@cratis/components/CommandDialog`.
@@ -1 +1 @@
1
- {"version":3,"file":"SceneCommandDialog.js","sources":["../../../dialogs/SceneCommandDialog.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { lazy } from 'react';\nimport { RegisteredComponentProps } from '@cratis/scene.react';\nimport { ArcRuntimeBoundary, BindingKind, MissingBinding, resolveElementBinding } from '../bindings';\nimport { booleanProperty, stringProperty } from '../properties';\n\nconst CommandDialog = lazy(async () => ({ default: (await import('@cratis/components/CommandDialog')).CommandDialog }));\n\n/**\n * The `Cratis.Components:commandDialog` component - `CommandDialog` from `@cratis/components/CommandDialog`.\n *\n * A dialog whose confirm button *is* the command's execution: it binds the form to the command, submits\n * on confirm, feeds the backend's validation results back onto the fields, and only closes when the\n * command succeeded. That last part is the reason to use it rather than composing `dialog` with\n * `commandForm` - a hand-composed pair has no way to keep the dialog open on a rejected command without\n * reimplementing the protocol.\n *\n * The `command` property names an Arc command proxy; the fields go in the `content` slot.\n *\n * `dismissable` and `closeAriaLabel` are here rather than on `dialog` alone because `CommandDialog`\n * forwards both to the dialog it wraps, and in `@cratis/components` 3.0.0 that forwarding actually\n * happens - 2.x accepted the two props and dropped them on the floor. `dismissable` matters more on a\n * command dialog than anywhere else: it decides whether a half-filled form can be abandoned with\n * `Escape` or a backdrop click, which is a decision about the command, not about the chrome.\n *\n * The `resizable` property this adapter used to carry is gone. It is still declared upstream so call\n * sites compile, but PrimeReact 11's headless dialog has no resize handle and nothing reads the prop.\n */\nexport function SceneCommandDialog({ element, slots }: RegisteredComponentProps) {\n const { name, target } = resolveElementBinding(element, BindingKind.Command);\n if (!target) return <MissingBinding element={element} kind={BindingKind.Command} name={name} />;\n\n return (\n <ArcRuntimeBoundary>\n <CommandDialog\n title={stringProperty(element.properties, 'title') ?? ''}\n command={target}\n visible={booleanProperty(element.properties, 'visible') ?? true}\n width={stringProperty(element.properties, 'width')}\n dismissable={booleanProperty(element.properties, 'dismissable')}\n okLabel={stringProperty(element.properties, 'okLabel')}\n cancelLabel={stringProperty(element.properties, 'cancelLabel')}\n closeAriaLabel={stringProperty(element.properties, 'closeAriaLabel')}\n className={stringProperty(element.properties, 'className')}\n >\n {slots.content}\n </CommandDialog>\n </ArcRuntimeBoundary>\n );\n}\n"],"names":["CommandDialog","lazy","default","SceneCommandDialog","element","slots","name","target","resolveElementBinding","BindingKind","Command","_jsx","MissingBinding","kind","ArcRuntimeBoundary","title","stringProperty","properties","command","visible","booleanProperty","width","dismissable","okLabel","cancelLabel","closeAriaLabel","className","content"],"mappings":";;;;;;;;AAQA,MAAMA,aAAAA,iBAAgBC,IAAAA,CAAK,WAAa;AAAEC,QAAAA,OAAAA,EAAS,CAAC,MAAM,OAAO,kCAAA,CAAkC,EAAGF;KAAc,CAAA,CAAA;AAEpH;;;;;;;;;;;;;;;;;;;AAmBC,IACM,SAASG,kBAAAA,CAAmB,EAAEC,OAAO,EAAEC,KAAK,EAA4B,EAAA;IAC3E,MAAM,EAAEC,IAAI,EAAEC,MAAM,EAAE,GAAGC,qBAAAA,CAAsBJ,OAAAA,EAASK,WAAAA,CAAYC,OAAO,CAAA;IAC3E,IAAI,CAACH,MAAAA,EAAQ,qBAAOI,GAAA,CAACC,cAAAA,EAAAA;QAAeR,OAAAA,EAASA,OAAAA;AAASS,QAAAA,IAAAA,EAAMJ,YAAYC,OAAO;QAAEJ,IAAAA,EAAMA;;AAEvF,IAAA,qBACIK,GAAA,CAACG,kBAAAA,EAAAA;AACG,QAAA,QAAA,gBAAAH,GAAA,CAACX,aAAAA,EAAAA;AACGe,YAAAA,KAAAA,EAAOC,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,OAAA,CAAA,IAAY,EAAA;YACtDC,OAAAA,EAASX,MAAAA;AACTY,YAAAA,OAAAA,EAASC,eAAAA,CAAgBhB,OAAAA,CAAQa,UAAU,EAAE,SAAA,CAAA,IAAc,IAAA;YAC3DI,KAAAA,EAAOL,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,OAAA,CAAA;YAC1CK,WAAAA,EAAaF,eAAAA,CAAgBhB,OAAAA,CAAQa,UAAU,EAAE,aAAA,CAAA;YACjDM,OAAAA,EAASP,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,SAAA,CAAA;YAC5CO,WAAAA,EAAaR,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,aAAA,CAAA;YAChDQ,cAAAA,EAAgBT,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,gBAAA,CAAA;YACnDS,SAAAA,EAAWV,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,WAAA,CAAA;AAE7CZ,YAAAA,QAAAA,EAAAA,KAAAA,CAAMsB;;;AAIvB;;"}
1
+ {"version":3,"file":"SceneCommandDialog.js","sources":["../../../dialogs/SceneCommandDialog.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { lazy } from 'react';\nimport { RegisteredComponentProps } from '@cratis/scene.react';\nimport { ArcRuntimeBoundary, BindingKind, MissingBinding, resolveElementBinding } from '../bindings';\nimport { booleanProperty, stringProperty } from '../properties';\n\nconst CommandDialog = lazy(async () => ({ default: (await import('../bindings/ArcBoundComponents')).BoundCommandDialog }));\n\n/**\n * The `Cratis.Components:commandDialog` component - `CommandDialog` from `@cratis/components/CommandDialog`.\n *\n * A dialog whose confirm button *is* the command's execution: it binds the form to the command, submits\n * on confirm, feeds the backend's validation results back onto the fields, and only closes when the\n * command succeeded. That last part is the reason to use it rather than composing `dialog` with\n * `commandForm` - a hand-composed pair has no way to keep the dialog open on a rejected command without\n * reimplementing the protocol.\n *\n * The `command` property names an Arc command proxy; the fields go in the `content` slot.\n *\n * `dismissable` and `closeAriaLabel` are here rather than on `dialog` alone because `CommandDialog`\n * forwards both to the dialog it wraps, and in `@cratis/components` 3.0.0 that forwarding actually\n * happens - 2.x accepted the two props and dropped them on the floor. `dismissable` matters more on a\n * command dialog than anywhere else: it decides whether a half-filled form can be abandoned with\n * `Escape` or a backdrop click, which is a decision about the command, not about the chrome.\n *\n * The `resizable` property this adapter used to carry is gone. It is still declared upstream so call\n * sites compile, but PrimeReact 11's headless dialog has no resize handle and nothing reads the prop.\n */\nexport function SceneCommandDialog({ element, slots }: RegisteredComponentProps) {\n const { name, target } = resolveElementBinding(element, BindingKind.Command);\n if (!target) return <MissingBinding element={element} kind={BindingKind.Command} name={name} />;\n\n return (\n <ArcRuntimeBoundary>\n <CommandDialog\n title={stringProperty(element.properties, 'title') ?? ''}\n command={target}\n visible={booleanProperty(element.properties, 'visible') ?? true}\n width={stringProperty(element.properties, 'width')}\n dismissable={booleanProperty(element.properties, 'dismissable')}\n okLabel={stringProperty(element.properties, 'okLabel')}\n cancelLabel={stringProperty(element.properties, 'cancelLabel')}\n closeAriaLabel={stringProperty(element.properties, 'closeAriaLabel')}\n className={stringProperty(element.properties, 'className')}\n >\n {slots.content}\n </CommandDialog>\n </ArcRuntimeBoundary>\n );\n}\n"],"names":["CommandDialog","lazy","default","BoundCommandDialog","SceneCommandDialog","element","slots","name","target","resolveElementBinding","BindingKind","Command","_jsx","MissingBinding","kind","ArcRuntimeBoundary","title","stringProperty","properties","command","visible","booleanProperty","width","dismissable","okLabel","cancelLabel","closeAriaLabel","className","content"],"mappings":";;;;;;;;AAQA,MAAMA,aAAAA,iBAAgBC,IAAAA,CAAK,WAAa;AAAEC,QAAAA,OAAAA,EAAS,CAAC,MAAM,OAAO,mCAAA,CAAgC,EAAGC;KAAmB,CAAA,CAAA;AAEvH;;;;;;;;;;;;;;;;;;;AAmBC,IACM,SAASC,kBAAAA,CAAmB,EAAEC,OAAO,EAAEC,KAAK,EAA4B,EAAA;IAC3E,MAAM,EAAEC,IAAI,EAAEC,MAAM,EAAE,GAAGC,qBAAAA,CAAsBJ,OAAAA,EAASK,WAAAA,CAAYC,OAAO,CAAA;IAC3E,IAAI,CAACH,MAAAA,EAAQ,qBAAOI,GAAA,CAACC,cAAAA,EAAAA;QAAeR,OAAAA,EAASA,OAAAA;AAASS,QAAAA,IAAAA,EAAMJ,YAAYC,OAAO;QAAEJ,IAAAA,EAAMA;;AAEvF,IAAA,qBACIK,GAAA,CAACG,kBAAAA,EAAAA;AACG,QAAA,QAAA,gBAAAH,GAAA,CAACZ,aAAAA,EAAAA;AACGgB,YAAAA,KAAAA,EAAOC,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,OAAA,CAAA,IAAY,EAAA;YACtDC,OAAAA,EAASX,MAAAA;AACTY,YAAAA,OAAAA,EAASC,eAAAA,CAAgBhB,OAAAA,CAAQa,UAAU,EAAE,SAAA,CAAA,IAAc,IAAA;YAC3DI,KAAAA,EAAOL,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,OAAA,CAAA;YAC1CK,WAAAA,EAAaF,eAAAA,CAAgBhB,OAAAA,CAAQa,UAAU,EAAE,aAAA,CAAA;YACjDM,OAAAA,EAASP,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,SAAA,CAAA;YAC5CO,WAAAA,EAAaR,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,aAAA,CAAA;YAChDQ,cAAAA,EAAgBT,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,gBAAA,CAAA;YACnDS,SAAAA,EAAWV,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,WAAA,CAAA;AAE7CZ,YAAAA,QAAAA,EAAAA,KAAAA,CAAMsB;;;AAIvB;;"}
@@ -7,7 +7,7 @@ import { ArcRuntimeBoundary } from '../bindings/ArcRuntimeBoundary.js';
7
7
  import { stringProperty, booleanProperty, unionProperty } from '../properties.js';
8
8
 
9
9
  const StepperCommandDialog = /*#__PURE__*/ lazy(async ()=>({
10
- default: (await import('@cratis/components/CommandDialog')).StepperCommandDialog
10
+ default: (await import('../bindings/ArcBoundComponents.js')).BoundStepperCommandDialog
11
11
  }));
12
12
  /** Whether the step headers run across the top or down the side. */ const orientations = [
13
13
  'horizontal',
@@ -1 +1 @@
1
- {"version":3,"file":"SceneStepperCommandDialog.js","sources":["../../../dialogs/SceneStepperCommandDialog.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { lazy } from 'react';\nimport { RegisteredComponentProps } from '@cratis/scene.react';\nimport { ArcRuntimeBoundary, BindingKind, MissingBinding, resolveElementBinding } from '../bindings';\nimport { booleanProperty, stringProperty, unionProperty } from '../properties';\n\nconst StepperCommandDialog = lazy(async () => ({\n default: (await import('@cratis/components/CommandDialog')).StepperCommandDialog,\n}));\n\n/** Whether the step headers run across the top or down the side. */\nconst orientations = ['horizontal', 'vertical'] as const;\n\n/**\n * The `Cratis.Components:stepperCommandDialog` component - `StepperCommandDialog` from\n * `@cratis/components/CommandDialog`.\n *\n * `commandDialog` split across steps, for a command with more fields than fit one screen. It stays a\n * single command: the steps partition the *fields*, not the intent, and nothing is submitted until the\n * last step - so a half-finished wizard leaves no trace, which is exactly what a command should do.\n *\n * `linear` decides whether a step can be skipped ahead of the one before it. The step panels go in the\n * `content` slot.\n */\nexport function SceneStepperCommandDialog({ element, slots }: RegisteredComponentProps) {\n const { name, target } = resolveElementBinding(element, BindingKind.Command);\n if (!target) return <MissingBinding element={element} kind={BindingKind.Command} name={name} />;\n\n return (\n <ArcRuntimeBoundary>\n <StepperCommandDialog\n title={stringProperty(element.properties, 'title') ?? ''}\n command={target}\n visible={booleanProperty(element.properties, 'visible') ?? true}\n width={stringProperty(element.properties, 'width')}\n linear={booleanProperty(element.properties, 'linear')}\n orientation={unionProperty(element.properties, 'orientation', orientations)}\n okLabel={stringProperty(element.properties, 'okLabel')}\n nextLabel={stringProperty(element.properties, 'nextLabel')}\n previousLabel={stringProperty(element.properties, 'previousLabel')}\n showCancel={booleanProperty(element.properties, 'showCancel')}\n cancelLabel={stringProperty(element.properties, 'cancelLabel')}\n >\n {slots.content}\n </StepperCommandDialog>\n </ArcRuntimeBoundary>\n );\n}\n"],"names":["StepperCommandDialog","lazy","default","orientations","SceneStepperCommandDialog","element","slots","name","target","resolveElementBinding","BindingKind","Command","_jsx","MissingBinding","kind","ArcRuntimeBoundary","title","stringProperty","properties","command","visible","booleanProperty","width","linear","orientation","unionProperty","okLabel","nextLabel","previousLabel","showCancel","cancelLabel","content"],"mappings":";;;;;;;;AAQA,MAAMA,oBAAAA,iBAAuBC,IAAAA,CAAK,WAAa;AAC3CC,QAAAA,OAAAA,EAAS,CAAC,MAAM,OAAO,kCAAA,CAAkC,EAAGF;KAChE,CAAA,CAAA;AAEA,qEACA,MAAMG,YAAAA,GAAe;AAAC,IAAA,YAAA;AAAc,IAAA;AAAW,CAAA;AAE/C;;;;;;;;;;AAUC,IACM,SAASC,yBAAAA,CAA0B,EAAEC,OAAO,EAAEC,KAAK,EAA4B,EAAA;IAClF,MAAM,EAAEC,IAAI,EAAEC,MAAM,EAAE,GAAGC,qBAAAA,CAAsBJ,OAAAA,EAASK,WAAAA,CAAYC,OAAO,CAAA;IAC3E,IAAI,CAACH,MAAAA,EAAQ,qBAAOI,GAAA,CAACC,cAAAA,EAAAA;QAAeR,OAAAA,EAASA,OAAAA;AAASS,QAAAA,IAAAA,EAAMJ,YAAYC,OAAO;QAAEJ,IAAAA,EAAMA;;AAEvF,IAAA,qBACIK,GAAA,CAACG,kBAAAA,EAAAA;AACG,QAAA,QAAA,gBAAAH,GAAA,CAACZ,oBAAAA,EAAAA;AACGgB,YAAAA,KAAAA,EAAOC,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,OAAA,CAAA,IAAY,EAAA;YACtDC,OAAAA,EAASX,MAAAA;AACTY,YAAAA,OAAAA,EAASC,eAAAA,CAAgBhB,OAAAA,CAAQa,UAAU,EAAE,SAAA,CAAA,IAAc,IAAA;YAC3DI,KAAAA,EAAOL,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,OAAA,CAAA;YAC1CK,MAAAA,EAAQF,eAAAA,CAAgBhB,OAAAA,CAAQa,UAAU,EAAE,QAAA,CAAA;AAC5CM,YAAAA,WAAAA,EAAaC,aAAAA,CAAcpB,OAAAA,CAAQa,UAAU,EAAE,aAAA,EAAef,YAAAA,CAAAA;YAC9DuB,OAAAA,EAAST,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,SAAA,CAAA;YAC5CS,SAAAA,EAAWV,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,WAAA,CAAA;YAC9CU,aAAAA,EAAeX,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,eAAA,CAAA;YAClDW,UAAAA,EAAYR,eAAAA,CAAgBhB,OAAAA,CAAQa,UAAU,EAAE,YAAA,CAAA;YAChDY,WAAAA,EAAab,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,aAAA,CAAA;AAE/CZ,YAAAA,QAAAA,EAAAA,KAAAA,CAAMyB;;;AAIvB;;"}
1
+ {"version":3,"file":"SceneStepperCommandDialog.js","sources":["../../../dialogs/SceneStepperCommandDialog.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { lazy } from 'react';\nimport { RegisteredComponentProps } from '@cratis/scene.react';\nimport { ArcRuntimeBoundary, BindingKind, MissingBinding, resolveElementBinding } from '../bindings';\nimport { booleanProperty, stringProperty, unionProperty } from '../properties';\n\nconst StepperCommandDialog = lazy(async () => ({\n default: (await import('../bindings/ArcBoundComponents')).BoundStepperCommandDialog,\n}));\n\n/** Whether the step headers run across the top or down the side. */\nconst orientations = ['horizontal', 'vertical'] as const;\n\n/**\n * The `Cratis.Components:stepperCommandDialog` component - `StepperCommandDialog` from\n * `@cratis/components/CommandDialog`.\n *\n * `commandDialog` split across steps, for a command with more fields than fit one screen. It stays a\n * single command: the steps partition the *fields*, not the intent, and nothing is submitted until the\n * last step - so a half-finished wizard leaves no trace, which is exactly what a command should do.\n *\n * `linear` decides whether a step can be skipped ahead of the one before it. The step panels go in the\n * `content` slot.\n */\nexport function SceneStepperCommandDialog({ element, slots }: RegisteredComponentProps) {\n const { name, target } = resolveElementBinding(element, BindingKind.Command);\n if (!target) return <MissingBinding element={element} kind={BindingKind.Command} name={name} />;\n\n return (\n <ArcRuntimeBoundary>\n <StepperCommandDialog\n title={stringProperty(element.properties, 'title') ?? ''}\n command={target}\n visible={booleanProperty(element.properties, 'visible') ?? true}\n width={stringProperty(element.properties, 'width')}\n linear={booleanProperty(element.properties, 'linear')}\n orientation={unionProperty(element.properties, 'orientation', orientations)}\n okLabel={stringProperty(element.properties, 'okLabel')}\n nextLabel={stringProperty(element.properties, 'nextLabel')}\n previousLabel={stringProperty(element.properties, 'previousLabel')}\n showCancel={booleanProperty(element.properties, 'showCancel')}\n cancelLabel={stringProperty(element.properties, 'cancelLabel')}\n >\n {slots.content}\n </StepperCommandDialog>\n </ArcRuntimeBoundary>\n );\n}\n"],"names":["StepperCommandDialog","lazy","default","BoundStepperCommandDialog","orientations","SceneStepperCommandDialog","element","slots","name","target","resolveElementBinding","BindingKind","Command","_jsx","MissingBinding","kind","ArcRuntimeBoundary","title","stringProperty","properties","command","visible","booleanProperty","width","linear","orientation","unionProperty","okLabel","nextLabel","previousLabel","showCancel","cancelLabel","content"],"mappings":";;;;;;;;AAQA,MAAMA,oBAAAA,iBAAuBC,IAAAA,CAAK,WAAa;AAC3CC,QAAAA,OAAAA,EAAS,CAAC,MAAM,OAAO,mCAAA,CAAgC,EAAGC;KAC9D,CAAA,CAAA;AAEA,qEACA,MAAMC,YAAAA,GAAe;AAAC,IAAA,YAAA;AAAc,IAAA;AAAW,CAAA;AAE/C;;;;;;;;;;AAUC,IACM,SAASC,yBAAAA,CAA0B,EAAEC,OAAO,EAAEC,KAAK,EAA4B,EAAA;IAClF,MAAM,EAAEC,IAAI,EAAEC,MAAM,EAAE,GAAGC,qBAAAA,CAAsBJ,OAAAA,EAASK,WAAAA,CAAYC,OAAO,CAAA;IAC3E,IAAI,CAACH,MAAAA,EAAQ,qBAAOI,GAAA,CAACC,cAAAA,EAAAA;QAAeR,OAAAA,EAASA,OAAAA;AAASS,QAAAA,IAAAA,EAAMJ,YAAYC,OAAO;QAAEJ,IAAAA,EAAMA;;AAEvF,IAAA,qBACIK,GAAA,CAACG,kBAAAA,EAAAA;AACG,QAAA,QAAA,gBAAAH,GAAA,CAACb,oBAAAA,EAAAA;AACGiB,YAAAA,KAAAA,EAAOC,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,OAAA,CAAA,IAAY,EAAA;YACtDC,OAAAA,EAASX,MAAAA;AACTY,YAAAA,OAAAA,EAASC,eAAAA,CAAgBhB,OAAAA,CAAQa,UAAU,EAAE,SAAA,CAAA,IAAc,IAAA;YAC3DI,KAAAA,EAAOL,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,OAAA,CAAA;YAC1CK,MAAAA,EAAQF,eAAAA,CAAgBhB,OAAAA,CAAQa,UAAU,EAAE,QAAA,CAAA;AAC5CM,YAAAA,WAAAA,EAAaC,aAAAA,CAAcpB,OAAAA,CAAQa,UAAU,EAAE,aAAA,EAAef,YAAAA,CAAAA;YAC9DuB,OAAAA,EAAST,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,SAAA,CAAA;YAC5CS,SAAAA,EAAWV,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,WAAA,CAAA;YAC9CU,aAAAA,EAAeX,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,eAAA,CAAA;YAClDW,UAAAA,EAAYR,eAAAA,CAAgBhB,OAAAA,CAAQa,UAAU,EAAE,YAAA,CAAA;YAChDY,WAAAA,EAAab,cAAAA,CAAeZ,OAAAA,CAAQa,UAAU,EAAE,aAAA,CAAA;AAE/CZ,YAAAA,QAAAA,EAAAA,KAAAA,CAAMyB;;;AAIvB;;"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=when_describing_query_input_form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_describing_query_input_form.d.ts","sourceRoot":"","sources":["../../../for_cratisComponentsPackage/when_describing_query_input_form.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { expect } from 'vitest';
2
+ import { SceneQueryInputForm, cratisComponents, cratisComponentsPackageManifest, registerQueryIdentity, resolveExactQuery } from '../index';
3
+ describe('when describing the query input form public API', () => {
4
+ it('exports and registers the component advertised by the manifest', () => {
5
+ expect(cratisComponentsPackageManifest.components).toContain('queryInputForm');
6
+ expect(cratisComponents['Cratis.Components:queryInputForm']).toBe(SceneQueryInputForm);
7
+ expect(cratisComponentsPackageManifest.description).toContain('commits explicit string inputs on submit');
8
+ expect(registerQueryIdentity).toBeTypeOf('function');
9
+ expect(resolveExactQuery).toBeTypeOf('function');
10
+ const input = { parameter: 'projectId', type: 'string', label: 'Project identifier' };
11
+ expect(input.type).toBe('string');
12
+ });
13
+ });
14
+ //# sourceMappingURL=when_describing_query_input_form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_describing_query_input_form.js","sourceRoot":"","sources":["../../../for_cratisComponentsPackage/when_describing_query_input_form.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,+BAA+B,EAAE,qBAAqB,EAAE,iBAAiB,EAAmB,MAAM,UAAU,CAAC;AAE7J,QAAQ,CAAC,iDAAiD,EAAE,GAAG,EAAE;IAC7D,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACtE,MAAM,CAAC,+BAA+B,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC/E,MAAM,CAAC,gBAAgB,CAAC,kCAAkC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACvF,MAAM,CAAC,+BAA+B,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,0CAA0C,CAAC,CAAC;QAC1G,MAAM,CAAC,qBAAqB,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACrD,MAAM,CAAC,iBAAiB,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,KAAK,GAAe,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;QAClG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=when_describing_single_result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_describing_single_result.d.ts","sourceRoot":"","sources":["../../../for_cratisComponentsPackage/when_describing_single_result.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import { expect } from 'vitest';
2
+ import { componentRegistryKey } from '@cratis/scene.react';
3
+ import { cratisComponents, cratisComponentsPackageName } from '../cratisComponents';
4
+ import { cratisComponentsPackageManifest } from '../cratisComponentsPackage';
5
+ import { SceneSingleResult } from '../data/SceneSingleResult';
6
+ describe('when describing the single result view', () => {
7
+ it('registers the same component advertised by the manifest', () => {
8
+ expect(cratisComponentsPackageManifest.components).toContain('singleResult');
9
+ expect(cratisComponents[componentRegistryKey(cratisComponentsPackageName, 'singleResult')]).toBe(SceneSingleResult);
10
+ });
11
+ it('describes an explicitly enabled read-only own-field capability', () => {
12
+ expect(cratisComponentsPackageManifest.description).toContain('read-only scalar own resultField');
13
+ expect(cratisComponentsPackageManifest.description).toContain('enabled: true');
14
+ });
15
+ });
16
+ //# sourceMappingURL=when_describing_single_result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_describing_single_result.js","sourceRoot":"","sources":["../../../for_cratisComponentsPackage/when_describing_single_result.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,QAAQ,CAAC,wCAAwC,EAAE,GAAG,EAAE;IACpD,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,+BAA+B,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC7E,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,2BAA2B,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACxH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACtE,MAAM,CAAC,+BAA+B,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;QAClG,MAAM,CAAC,+BAA+B,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { RegisteredComponentProps } from '@cratis/scene.react';
2
+ export declare function SceneQueryInputForm({ element }: RegisteredComponentProps): import("react").JSX.Element;
3
+ //# sourceMappingURL=SceneQueryInputForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SceneQueryInputForm.d.ts","sourceRoot":"","sources":["../../../forms/SceneQueryInputForm.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAS/D,wBAAgB,mBAAmB,CAAC,EAAE,OAAO,EAAE,EAAE,wBAAwB,+BAgBxE"}