ballerina-core 1.0.193 → 1.0.194

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 (116) hide show
  1. package/bin/main.d.ts +2 -0
  2. package/bin/main.d.ts.map +1 -1
  3. package/bin/main.js +2 -0
  4. package/bin/main.js.map +1 -1
  5. package/bin/src/forms/domains/dispatched-forms/built-ins/state.d.ts +19 -0
  6. package/bin/src/forms/domains/dispatched-forms/built-ins/state.d.ts.map +1 -1
  7. package/bin/src/forms/domains/dispatched-forms/built-ins/state.js +80 -11
  8. package/bin/src/forms/domains/dispatched-forms/built-ins/state.js.map +1 -1
  9. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/readOnly/state.d.ts +59 -0
  10. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/readOnly/state.d.ts.map +1 -0
  11. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/readOnly/state.js +56 -0
  12. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/readOnly/state.js.map +1 -0
  13. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/state.d.ts +6 -0
  14. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/state.d.ts.map +1 -1
  15. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/state.js +26 -18
  16. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/state.js.map +1 -1
  17. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/types/state.d.ts +18 -1
  18. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/types/state.d.ts.map +1 -1
  19. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/types/state.js +49 -33
  20. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/types/state.js.map +1 -1
  21. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/list/state.d.ts +2 -1
  22. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/list/state.d.ts.map +1 -1
  23. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/list/state.js.map +1 -1
  24. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/list/template.d.ts.map +1 -1
  25. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/list/template.js +12 -10
  26. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/list/template.js.map +1 -1
  27. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/lookup-type/state.d.ts +4 -2
  28. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/lookup-type/state.d.ts.map +1 -1
  29. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/lookup-type/template.d.ts +2 -1
  30. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/lookup-type/template.d.ts.map +1 -1
  31. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/lookup-type/template.js +3 -1
  32. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/lookup-type/template.js.map +1 -1
  33. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/_debouncer.d.ts +55 -0
  34. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/_debouncer.d.ts.map +1 -0
  35. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/_debouncer.js +24 -0
  36. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/_debouncer.js.map +1 -0
  37. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/_initializeOne.d.ts +61 -0
  38. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/_initializeOne.d.ts.map +1 -0
  39. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/_initializeOne.js +78 -0
  40. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/_initializeOne.js.map +1 -0
  41. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/_initializeStream.d.ts +52 -0
  42. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/_initializeStream.d.ts.map +1 -0
  43. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/_initializeStream.js +36 -0
  44. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/_initializeStream.js.map +1 -0
  45. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/builder.d.ts +4004 -0
  46. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/builder.d.ts.map +1 -0
  47. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/builder.js +6 -0
  48. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/builder.js.map +1 -0
  49. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/runner.d.ts +22 -58
  50. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/runner.d.ts.map +1 -1
  51. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/runner.js +24 -182
  52. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/runner.js.map +1 -1
  53. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/state.d.ts +63 -243
  54. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/state.d.ts.map +1 -1
  55. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/state.js +39 -29
  56. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/state.js.map +1 -1
  57. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/template.d.ts +4 -13
  58. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/template.d.ts.map +1 -1
  59. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/template.js +62 -305
  60. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/template.js.map +1 -1
  61. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/readOnly/state.d.ts +74 -0
  62. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/readOnly/state.d.ts.map +1 -0
  63. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/readOnly/state.js +22 -0
  64. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/readOnly/state.js.map +1 -0
  65. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/readOnly/template.d.ts +50 -0
  66. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/readOnly/template.d.ts.map +1 -0
  67. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/readOnly/template.js +66 -0
  68. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/readOnly/template.js.map +1 -0
  69. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/record/state.d.ts +2 -1
  70. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/record/state.d.ts.map +1 -1
  71. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/record/state.js.map +1 -1
  72. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/record/template.d.ts.map +1 -1
  73. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/record/template.js +9 -4
  74. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/record/template.js.map +1 -1
  75. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/template.d.ts.map +1 -1
  76. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/template.js +0 -3
  77. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/template.js.map +1 -1
  78. package/bin/src/forms/domains/dispatched-forms/runner/domains/deltas/state.d.ts +4 -1
  79. package/bin/src/forms/domains/dispatched-forms/runner/domains/deltas/state.d.ts.map +1 -1
  80. package/bin/src/forms/domains/dispatched-forms/runner/domains/deltas/state.js +9 -12
  81. package/bin/src/forms/domains/dispatched-forms/runner/domains/deltas/state.js.map +1 -1
  82. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/lookup/state.d.ts.map +1 -1
  83. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/lookup/state.js +1 -0
  84. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/lookup/state.js.map +1 -1
  85. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/one/state.d.ts.map +1 -1
  86. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/one/state.js +2 -0
  87. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/one/state.js.map +1 -1
  88. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/readOnly/state.d.ts +28 -0
  89. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/readOnly/state.d.ts.map +1 -0
  90. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/readOnly/state.js +41 -0
  91. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/readOnly/state.js.map +1 -0
  92. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/table/state.d.ts.map +1 -1
  93. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/table/state.js +1 -0
  94. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/table/state.js.map +1 -1
  95. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/state.d.ts.map +1 -1
  96. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/state.js +25 -15
  97. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/state.js.map +1 -1
  98. package/bin/src/forms/domains/dispatched-forms/runner/domains/traversal/state.d.ts.map +1 -1
  99. package/bin/src/forms/domains/dispatched-forms/runner/domains/traversal/state.js +90 -11
  100. package/bin/src/forms/domains/dispatched-forms/runner/domains/traversal/state.js.map +1 -1
  101. package/bin/src/forms/domains/parser/domains/predicates/domains/extractor/state.d.ts.map +1 -1
  102. package/bin/src/forms/domains/parser/domains/predicates/domains/extractor/state.js +1 -0
  103. package/bin/src/forms/domains/parser/domains/predicates/domains/extractor/state.js.map +1 -1
  104. package/bin/src/forms/domains/parser/domains/predicates/state.d.ts +9 -2
  105. package/bin/src/forms/domains/parser/domains/predicates/state.d.ts.map +1 -1
  106. package/bin/src/forms/domains/parser/domains/predicates/state.js +11 -0
  107. package/bin/src/forms/domains/parser/domains/predicates/state.js.map +1 -1
  108. package/package.json +1 -1
  109. package/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/_debouncer.ts +36 -0
  110. package/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/_initializeOne.ts +108 -0
  111. package/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/_initializeStream.ts +41 -0
  112. package/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/builder.ts +53 -0
  113. package/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/runner.ts +30 -237
  114. package/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/state.ts +94 -101
  115. package/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/template.tsx +70 -313
  116. package/src/forms/domains/dispatched-forms/runner/domains/deltas/state.ts +2 -0
@@ -2,269 +2,55 @@ import { ValueInfiniteStreamLoader } from "../../../../../../../../value-infinit
2
2
  import { ValueInfiniteStreamState } from "../../../../../../../../value-infinite-data-stream/state";
3
3
  import {
4
4
  OneAbstractRendererForeignMutationsExpected,
5
- OneAbstractRendererReadonlyContext,
6
5
  OneAbstractRendererState,
7
6
  } from "../state";
8
7
  import {
9
- Debounce,
10
8
  SimpleCallback,
11
9
  Value,
12
- CoTypedFactory,
13
- ValueOption,
14
10
  Debounced,
15
- AsyncState,
16
- Synchronize,
17
- PredicateValue,
18
11
  Unit,
19
- Synchronized,
20
12
  ValueOrErrors,
21
13
  ValueRecord,
22
- ValueUnit,
23
- DispatchOnChange,
24
- replaceWith,
25
- id as idUpdater,
26
- DispatchDelta,
14
+ BaseFlags,
15
+ Sum,
27
16
  } from "../../../../../../../../../main";
28
17
  import { Map } from "immutable";
18
+ import { Co, DebouncerCo, InitializeCo } from "./builder";
19
+ import { initializeOne } from "./_initializeOne";
20
+ import { initializeStream } from "./_initializeStream";
21
+ import { debouncer } from "./_debouncer";
29
22
 
30
- const Co = <CustomPresentationContext = Unit, ExtraContext = Unit>() =>
31
- CoTypedFactory<
32
- OneAbstractRendererReadonlyContext<CustomPresentationContext, ExtraContext>,
33
- OneAbstractRendererState
34
- >();
35
-
36
- const DebouncerCo = <CustomPresentationContext = Unit, ExtraContext = Unit>() =>
37
- CoTypedFactory<
38
- OneAbstractRendererReadonlyContext<
39
- CustomPresentationContext,
40
- ExtraContext
41
- > & {
42
- onDebounce: SimpleCallback<void>;
43
- },
44
- OneAbstractRendererState
45
- >();
46
-
47
- const DebouncedCo = CoTypedFactory<
48
- { onDebounce: SimpleCallback<void> },
49
- Value<Map<string, string>>
50
- >();
51
-
52
- const intializeOne = <
53
- CustomPresentationContext = Unit,
54
- ExtraContext = Unit,
55
- >() =>
56
- Co<CustomPresentationContext, ExtraContext>()
57
- .GetState()
58
- .then((current) => {
59
- if (current.value == undefined) {
60
- return Co<CustomPresentationContext, ExtraContext>().Wait(0);
61
- }
62
-
63
- /// When initailising, in both stages, inject the id to the get chunk
64
-
65
- const local = current.bindings.get("local");
66
- if (local == undefined) {
67
- console.error(
68
- `local binding is undefined when intialising one\n... in couroutine for\n...${current.domNodeAncestorPath + "[one]"}`,
69
- );
70
- return Co<CustomPresentationContext, ExtraContext>().Wait(0);
71
- }
72
-
73
- if (!PredicateValue.Operations.IsRecord(local)) {
74
- console.error(
75
- `local binding is not a record when intialising one\n... in couroutine for\n...${current.domNodeAncestorPath + "[one]"}`,
76
- );
77
- return Co<CustomPresentationContext, ExtraContext>().Wait(0);
78
- }
79
-
80
- if (!local.fields.has("Id")) {
81
- console.error(
82
- `local binding is missing Id (check casing) when intialising one\n... in couroutine for\n...${current.domNodeAncestorPath + "[one]"}`,
83
- );
84
- return Co<CustomPresentationContext, ExtraContext>().Wait(0);
85
- }
86
-
87
- const id = local.fields.get("Id")!; // safe because of above check;
88
- if (!PredicateValue.Operations.IsString(id)) {
89
- console.error(
90
- `local Id is not a string when intialising one\n... in couroutine for\n...${current.domNodeAncestorPath + "[one]"}`,
91
- );
92
- return Co<CustomPresentationContext, ExtraContext>().Wait(0);
93
- }
94
-
95
- const initializationCompletedCo = Co<
96
- CustomPresentationContext,
97
- ExtraContext
98
- >().SetState(
99
- OneAbstractRendererState.Updaters.Core.customFormState.children
100
- .initializationStatus(
101
- replaceWith<
102
- OneAbstractRendererState["customFormState"]["initializationStatus"]
103
- >("initialized"),
104
- )
105
- .thenMany([
106
- OneAbstractRendererState.Updaters.Core.customFormState.children.previousRemoteEntityVersionIdentifier(
107
- replaceWith(current.remoteEntityVersionIdentifier),
108
- ),
109
- OneAbstractRendererState.Updaters.Core.customFormState.children.shouldReinitialize(
110
- replaceWith(false),
111
- ),
112
- current.customFormState.initializationStatus == "reinitializing" &&
113
- current.customFormState.status == "open"
114
- ? OneAbstractRendererState.Updaters.Core.customFormState.children.stream(
115
- ValueInfiniteStreamState.Updaters.Template.loadMore(),
116
- )
117
- : idUpdater,
118
- ]),
119
- );
120
-
121
- const hasInitialValue =
122
- (PredicateValue.Operations.IsOption(current.value) &&
123
- current.value.isSome) ||
124
- PredicateValue.Operations.IsUnit(current.value);
125
- if (hasInitialValue) {
126
- const initialValue =
127
- PredicateValue.Operations.IsOption(current.value) &&
128
- current.value.isSome &&
129
- PredicateValue.Operations.IsRecord(current.value.value)
130
- ? current.value.value
131
- : PredicateValue.Default.unit();
132
-
133
- return Co<CustomPresentationContext, ExtraContext>().Seq([
134
- Co<CustomPresentationContext, ExtraContext>().SetState(
135
- OneAbstractRendererState.Updaters.Core.customFormState.children
136
- .selectedValue(
137
- Synchronized.Updaters.sync(
138
- AsyncState.Updaters.toLoaded(
139
- ValueOrErrors.Default.return(initialValue),
140
- ),
141
- ),
142
- )
143
- .then(
144
- OneAbstractRendererState.Updaters.Core.customFormState.children.stream(
145
- replaceWith(
146
- ValueInfiniteStreamState.Default(
147
- 100,
148
- current.customFormState.getChunkWithParams(id)(
149
- current.customFormState.streamParams.value,
150
- ),
151
- ),
152
- ),
153
- ),
154
- ),
155
- ),
156
- initializationCompletedCo,
157
- ]);
158
- }
159
-
160
- return Co<CustomPresentationContext, ExtraContext>().Seq([
161
- Co<CustomPresentationContext, ExtraContext>().SetState(
162
- OneAbstractRendererState.Updaters.Core.customFormState.children.stream(
163
- replaceWith(
164
- ValueInfiniteStreamState.Default(
165
- 100,
166
- current.customFormState.getChunkWithParams(id)(
167
- current.customFormState.streamParams.value,
168
- ),
169
- ),
170
- ),
171
- ),
172
- ),
173
- Synchronize<ValueUnit, ValueOrErrors<ValueRecord | ValueUnit, string>>(
174
- (_) =>
175
- current.getApi(id).then((value) => {
176
- return current.fromApiParser(value).Then((result) => {
177
- return ValueOrErrors.Default.return(result);
178
- });
179
- }),
180
- () => "transient failure",
181
- 5,
182
- 150,
183
- ).embed(
184
- (_) => _.customFormState.selectedValue,
185
- (_) =>
186
- OneAbstractRendererState.Updaters.Core.customFormState.children.selectedValue(
187
- _,
188
- ),
189
- ),
190
- initializationCompletedCo,
191
- ]);
192
- });
193
-
194
- const debouncer = <CustomPresentationContext = Unit, ExtraContext = Unit>() =>
195
- DebouncerCo<CustomPresentationContext, ExtraContext>().Repeat(
196
- DebouncerCo<CustomPresentationContext, ExtraContext>().Seq([
197
- Debounce<
198
- Value<Map<string, string>>,
199
- { onDebounce: SimpleCallback<void> }
200
- >(
201
- DebouncedCo.GetState()
202
- .then((current) => DebouncedCo.Do(() => current.onDebounce()))
203
- //.SetState(SearchNow.Updaters.reloadsRequested(_ => _ + 1))
204
- .then((_) => DebouncedCo.Return("success")),
205
- 250,
206
- ).embed(
207
- (_) => ({
208
- ..._.customFormState.streamParams,
209
- onDebounce: _.onDebounce,
210
- }),
211
- OneAbstractRendererState.Updaters.Core.customFormState.children
212
- .streamParams,
213
- ),
214
- DebouncerCo<CustomPresentationContext, ExtraContext>().Wait(0),
215
- ]),
216
- );
217
-
218
- const reinitialize = <
219
- CustomPresentationContext = Unit,
220
- ExtraContext = Unit,
221
- >() =>
222
- Co<CustomPresentationContext, ExtraContext>()
223
- .GetState()
224
- .then((_) => {
225
- return Co<CustomPresentationContext, ExtraContext>().SetState(
226
- OneAbstractRendererState.Updaters.Core.customFormState.children.initializationStatus(
227
- replaceWith<
228
- OneAbstractRendererState["customFormState"]["initializationStatus"]
229
- >("reinitializing"),
230
- ),
231
- );
232
- });
233
-
234
- export const reinitializeOneRunner = <
23
+ export const initializeOneRunner = <
235
24
  CustomPresentationContext = Unit,
236
- Flags = Unit,
25
+ Flags = BaseFlags,
237
26
  ExtraContext = Unit,
238
27
  >() =>
239
- Co<CustomPresentationContext, ExtraContext>().Template<
28
+ InitializeCo<CustomPresentationContext, ExtraContext>().Template<
240
29
  OneAbstractRendererForeignMutationsExpected<Flags>
241
- >(reinitialize<CustomPresentationContext, ExtraContext>(), {
30
+ >(initializeOne<CustomPresentationContext, ExtraContext>(), {
242
31
  interval: 15,
243
32
  runFilter: (props) =>
244
- props.context.customFormState.initializationStatus === "initialized" &&
245
- props.context.customFormState.shouldReinitialize &&
246
- props.context.remoteEntityVersionIdentifier !==
247
- props.context.customFormState.previousRemoteEntityVersionIdentifier,
33
+ // if the value is some, we already have something to pass to the renderers
34
+ // -> we don't have to run the initialization coroutine
35
+ // if the inner value is unit, we are rendering a partial one
36
+ props.context.value.kind === "option" && !props.context.value.isSome,
248
37
  });
249
38
 
250
- export const initializeOneRunner = <
39
+ export const initializeStreamRunner = <
251
40
  CustomPresentationContext = Unit,
252
- Flags = Unit,
41
+ Flags = BaseFlags,
253
42
  ExtraContext = Unit,
254
43
  >() =>
255
44
  Co<CustomPresentationContext, ExtraContext>().Template<
256
45
  OneAbstractRendererForeignMutationsExpected<Flags>
257
- >(intializeOne<CustomPresentationContext, ExtraContext>(), {
46
+ >(initializeStream<CustomPresentationContext, ExtraContext>(), {
258
47
  interval: 15,
259
- runFilter: (props) =>
260
- props.context.customFormState.initializationStatus ===
261
- "not initialized" ||
262
- props.context.customFormState.initializationStatus === "reinitializing",
48
+ runFilter: (props) => props.context.customFormState.stream.kind === "r",
263
49
  });
264
50
 
265
51
  export const oneTableDebouncerRunner = <
266
52
  CustomPresentationContext = Unit,
267
- Flags = Unit,
53
+ Flags = BaseFlags,
268
54
  ExtraContext = Unit,
269
55
  >() =>
270
56
  DebouncerCo<CustomPresentationContext, ExtraContext>().Template<
@@ -279,21 +65,28 @@ export const oneTableDebouncerRunner = <
279
65
 
280
66
  export const oneTableLoaderRunner = <
281
67
  CustomPresentationContext = Unit,
282
- Flags = Unit,
68
+ Flags = BaseFlags,
283
69
  ExtraContext = Unit,
284
70
  >() =>
285
71
  Co<CustomPresentationContext, ExtraContext>().Template<
286
72
  OneAbstractRendererForeignMutationsExpected<Flags>
287
73
  >(
288
74
  ValueInfiniteStreamLoader().embed(
289
- (_) => _.customFormState.stream,
290
- OneAbstractRendererState.Updaters.Core.customFormState.children.stream,
75
+ (_) =>
76
+ _.customFormState.stream.kind === "l"
77
+ ? _.customFormState.stream.value
78
+ : undefined,
79
+ (upd) =>
80
+ OneAbstractRendererState.Updaters.Core.customFormState.children.stream(
81
+ Sum.Updaters.left(upd),
82
+ ),
291
83
  ),
292
84
  {
293
85
  interval: 15,
294
86
  runFilter: (props) =>
87
+ props.context.customFormState.stream.kind === "l" &&
295
88
  ValueInfiniteStreamState.Operations.shouldCoroutineRun(
296
- props.context.customFormState.stream,
89
+ props.context.customFormState.stream.value,
297
90
  ),
298
91
  },
299
92
  );
@@ -14,7 +14,6 @@ import {
14
14
  OneType,
15
15
  ValueOrErrors,
16
16
  Guid,
17
- Synchronized,
18
17
  Unit,
19
18
  Template,
20
19
  ValueRecord,
@@ -23,13 +22,15 @@ import {
23
22
  MapRepo,
24
23
  BasicFun2,
25
24
  Value,
26
- replaceWith,
27
25
  ValueCallbackWithOptionalFlags,
28
26
  VoidCallbackWithOptionalFlags,
29
27
  DispatchOnChange,
30
28
  CommonAbstractRendererState,
31
29
  DispatchDelta,
32
30
  CommonAbstractRendererViewOnlyReadonlyContext,
31
+ BaseFlags,
32
+ Sum,
33
+ PredicateValue,
33
34
  } from "../../../../../../../../main";
34
35
  import { Debounced } from "../../../../../../../debounced/state";
35
36
 
@@ -51,20 +52,13 @@ export type OneAbstractRendererState = CommonAbstractRendererState & {
51
52
  customFormState: {
52
53
  detailsState: RecordAbstractRendererState;
53
54
  previewStates: Map<string, RecordAbstractRendererState>;
54
- selectedValue: Synchronized<
55
- ValueUnit,
56
- ValueOrErrors<ValueRecord | ValueUnit, string>
57
- >;
58
55
  streamParams: Debounced<Value<Map<string, string>>>;
59
56
  status: "open" | "closed";
60
- stream: ValueInfiniteStreamState;
57
+ stream: Sum<ValueInfiniteStreamState, "not initialized">;
61
58
  getChunkWithParams: BasicFun<
62
59
  string,
63
60
  BasicFun<Map<string, string>, ValueInfiniteStreamState["getChunk"]>
64
61
  >;
65
- initializationStatus: "not initialized" | "initialized" | "reinitializing";
66
- previousRemoteEntityVersionIdentifier: string;
67
- shouldReinitialize: boolean;
68
62
  };
69
63
  };
70
64
 
@@ -79,22 +73,15 @@ export const OneAbstractRendererState = {
79
73
  customFormState: {
80
74
  detailsState: RecordAbstractRendererState.Default.zero(),
81
75
  previewStates: Map(),
82
- selectedValue: Synchronized.Default(ValueUnit.Default()),
83
76
  streamParams: Debounced.Default(Value.Default(Map())),
84
77
  status: "closed",
85
78
  getChunkWithParams: getChunk,
86
- stream: ValueInfiniteStreamState.Default(10, getChunk("")(Map())), // always overriden during initialisation to inject id
87
- initializationStatus: "not initialized",
88
- previousRemoteEntityVersionIdentifier: "",
89
- shouldReinitialize: false,
79
+ stream: Sum.Default.right("not initialized"),
90
80
  },
91
81
  }),
92
82
  Updaters: {
93
83
  Core: {
94
84
  ...simpleUpdaterWithChildren<OneAbstractRendererState>()({
95
- ...simpleUpdater<OneAbstractRendererState["customFormState"]>()(
96
- "selectedValue",
97
- ),
98
85
  ...simpleUpdater<OneAbstractRendererState["customFormState"]>()(
99
86
  "status",
100
87
  ),
@@ -107,15 +94,6 @@ export const OneAbstractRendererState = {
107
94
  ...simpleUpdater<OneAbstractRendererState["customFormState"]>()(
108
95
  "detailsState",
109
96
  ),
110
- ...simpleUpdater<OneAbstractRendererState["customFormState"]>()(
111
- "previousRemoteEntityVersionIdentifier",
112
- ),
113
- ...simpleUpdater<OneAbstractRendererState["customFormState"]>()(
114
- "shouldReinitialize",
115
- ),
116
- ...simpleUpdater<OneAbstractRendererState["customFormState"]>()(
117
- "initializationStatus",
118
- ),
119
97
  ...simpleUpdater<OneAbstractRendererState["customFormState"]>()(
120
98
  "previewStates",
121
99
  ),
@@ -136,16 +114,54 @@ export const OneAbstractRendererState = {
136
114
  Value.Updaters.value(MapRepo.Updaters.upsert(key, () => "", _)),
137
115
  ),
138
116
  ),
139
- shouldReinitialize: (_: boolean) =>
140
- OneAbstractRendererState.Updaters.Core.customFormState.children.shouldReinitialize(
141
- replaceWith(_),
142
- ),
117
+ },
118
+ },
119
+ Operations: {
120
+ GetIdFromContext: <CustomPresentationContext = Unit, ExtraContext = Unit>(
121
+ ctx: OneAbstractRendererReadonlyContext<
122
+ CustomPresentationContext,
123
+ ExtraContext
124
+ >,
125
+ ): ValueOrErrors<string, string | undefined> => {
126
+ if (ctx.value == undefined) {
127
+ return ValueOrErrors.Default.throwOne(undefined);
128
+ }
129
+
130
+ /// When initailising, in both stages, inject the id to the get chunk
131
+
132
+ const local = ctx.bindings.get("local");
133
+ if (local == undefined) {
134
+ return ValueOrErrors.Default.throwOne(
135
+ `local binding is undefined when intialising one`,
136
+ );
137
+ }
138
+
139
+ if (!PredicateValue.Operations.IsRecord(local)) {
140
+ return ValueOrErrors.Default.throwOne(
141
+ `local binding is not a record when intialising one\n... in couroutine for\n...${ctx.domNodeAncestorPath + "[one]"}`,
142
+ );
143
+ }
144
+
145
+ if (!local.fields.has("Id")) {
146
+ return ValueOrErrors.Default.throwOne(
147
+ `local binding is missing Id (check casing) when intialising one\n... in couroutine for\n...${ctx.domNodeAncestorPath + "[one]"}`,
148
+ );
149
+ }
150
+
151
+ const id = local.fields.get("Id")!; // safe because of above check;
152
+ if (!PredicateValue.Operations.IsString(id)) {
153
+ return ValueOrErrors.Default.throwOne(
154
+ `local Id is not a string when intialising one\n... in couroutine for\n...${ctx.domNodeAncestorPath + "[one]"}`,
155
+ );
156
+ }
157
+
158
+ return ValueOrErrors.Default.return(id);
143
159
  },
144
160
  },
145
161
  };
146
162
 
147
- export type OneAbstractRendererForeignMutationsExpected<Flags = Unit> = {
148
- onChange: DispatchOnChange<ValueOption | ValueUnit, Flags>;
163
+ export type OneAbstractRendererForeignMutationsExpected<Flags = BaseFlags> = {
164
+ onChange: DispatchOnChange<ValueOption | ValueUnit, BaseFlags>;
149
165
  clear?: () => void;
150
166
  delete?: (delta: DispatchDelta<Flags>) => void;
151
167
  select?: (
@@ -158,81 +174,58 @@ export type OneAbstractRendererForeignMutationsExpected<Flags = Unit> = {
158
174
  ) => void;
159
175
  };
160
176
 
161
- export type OneAbstractRendererViewForeignMutationsExpected<Flags = Unit> = {
162
- onChange: DispatchOnChange<ValueOption | ValueUnit, Flags>;
163
- toggleOpen: SimpleCallback<void>;
164
- setStreamParam: BasicFun2<string, string, void>;
165
- select: ValueCallbackWithOptionalFlags<ValueRecord, Flags>;
166
- create: ValueCallbackWithOptionalFlags<ValueRecord, Flags>;
167
- delete?: VoidCallbackWithOptionalFlags<Flags>;
168
- clear?: SimpleCallback<void>;
169
- loadMore: SimpleCallback<void>;
170
- reload: SimpleCallback<void>;
171
- };
177
+ export type OneAbstractRendererViewForeignMutationsExpected<Flags = BaseFlags> =
178
+ {
179
+ onChange: DispatchOnChange<ValueOption | ValueUnit, Flags>;
180
+ toggleOpen: SimpleCallback<void>;
181
+ setStreamParam: BasicFun2<string, string, void>;
182
+ select: ValueCallbackWithOptionalFlags<ValueRecord, Flags>;
183
+ create: ValueCallbackWithOptionalFlags<ValueRecord, Flags>;
184
+ delete?: VoidCallbackWithOptionalFlags<Flags>;
185
+ clear?: SimpleCallback<void>;
186
+ loadMore: SimpleCallback<void>;
187
+ };
172
188
 
173
189
  export type OneAbstractRendererView<
174
190
  CustomPresentationContext = Unit,
175
- Flags = Unit,
191
+ Flags = BaseFlags,
176
192
  ExtraContext = Unit,
177
193
  > = View<
178
- (
179
- | (Omit<
194
+ OneAbstractRendererReadonlyContext<
195
+ CustomPresentationContext,
196
+ ExtraContext
197
+ > & {
198
+ hasMoreValues: boolean;
199
+ } & CommonAbstractRendererViewOnlyReadonlyContext &
200
+ OneAbstractRendererState,
201
+ OneAbstractRendererState,
202
+ OneAbstractRendererViewForeignMutationsExpected<Flags>,
203
+ {
204
+ DetailsRenderer?: (
205
+ flags: Flags | undefined,
206
+ ) => Template<
207
+ OneAbstractRendererState &
180
208
  OneAbstractRendererReadonlyContext<
181
209
  CustomPresentationContext,
182
210
  ExtraContext
183
211
  >,
184
- "value"
185
- > & {
186
- value: ValueRecord | ValueUnit;
187
- } & OneAbstractRendererState & {
188
- kind: "initialized";
189
- hasMoreValues: boolean;
190
- } & CommonAbstractRendererViewOnlyReadonlyContext)
191
- | {
192
- kind: "uninitialized";
193
- domNodeId: string;
194
- }
195
- ) &
196
- OneAbstractRendererState,
197
- OneAbstractRendererState,
198
- | ({
199
- kind: "initialized";
200
- } & OneAbstractRendererViewForeignMutationsExpected<Flags>)
201
- | {
202
- kind: "uninitialized";
203
- },
204
- | {
205
- kind: "initialized";
206
- DetailsRenderer: (flags: Flags | undefined) => Template<
207
- Omit<
208
- OneAbstractRendererReadonlyContext<
209
- CustomPresentationContext,
210
- ExtraContext
211
- >,
212
- "value"
213
- > & {
214
- value: ValueRecord | ValueUnit;
215
- } & OneAbstractRendererState,
216
- OneAbstractRendererState,
217
- OneAbstractRendererViewForeignMutationsExpected<Flags>
218
- >;
219
- PreviewRenderer?: (value: ValueRecord) => (id: string) => (
220
- flags: Flags | undefined,
221
- ) => Template<
222
- Omit<
223
- OneAbstractRendererReadonlyContext<
224
- CustomPresentationContext,
225
- ExtraContext
226
- >,
227
- "value"
228
- > & {
229
- value: ValueRecord | ValueUnit;
230
- } & OneAbstractRendererState,
231
- OneAbstractRendererState,
232
- OneAbstractRendererViewForeignMutationsExpected<Flags>
233
- >;
234
- }
235
- | {
236
- kind: "uninitialized";
237
- }
212
+ OneAbstractRendererState,
213
+ OneAbstractRendererViewForeignMutationsExpected<Flags>
214
+ >;
215
+ PreviewRenderer?: (
216
+ value: ValueRecord,
217
+ ) => (
218
+ id: string,
219
+ ) => (
220
+ flags: Flags | undefined,
221
+ ) => Template<
222
+ OneAbstractRendererState &
223
+ OneAbstractRendererReadonlyContext<
224
+ CustomPresentationContext,
225
+ ExtraContext
226
+ >,
227
+ OneAbstractRendererState,
228
+ OneAbstractRendererViewForeignMutationsExpected<Flags>
229
+ >;
230
+ }
238
231
  >;