pict-section-form 1.0.139 → 1.0.141

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.
@@ -64,6 +64,24 @@ Because modern charting libraries rely almost entirely on configuration to
64
64
  define behavior these days, we can manage the displays this way and only
65
65
  rely on the pict-section-form library to broker data back-and-forth.
66
66
 
67
+ Chaining by default does the following:
68
+
69
+ 1. If there is a `Raw` use that as the base
70
+ 2. If there as an `Address` use that instead of `Raw` as the base (this lets you override config if you want)
71
+ 3. If there is a configuration, merge that with the base
72
+
73
+ So if there is a `ChartLabelsRaw` you can have a set of hard-coded values, and
74
+ then if there is a `ChartLabelsAddress` the input provider will look at that
75
+ address and see if there is an object at that address; if there is it will be
76
+ used instead (as opposed to merging).
77
+
78
+ Lastly, if there is a configuration, it will merge the configuration into
79
+ whatever came from these.
80
+
81
+ You can control this though! It's controlled by configuration.
82
+
83
+
84
+
67
85
  ### Purely Raw Data
68
86
 
69
87
  You can hard code any chart right into the form. There are three places
@@ -76,106 +94,116 @@ for raw form config:
76
94
  The input provider will use the `ChartJSOptionsCorePrototype` and then
77
95
  decorate in the `labels` and `data` objects from their raw entries.
78
96
 
79
- Chaining always does the following:
80
97
 
81
- 1. If there is a `Raw`
98
+ ### Purely Raw, Hard-coded Data and Labels
99
+
100
+ This is hard-coded config. It takes whatever is in the "Raw" configuration and
101
+ puts it into the chart config.
82
102
 
83
103
  ```json
84
104
  {
85
- "SimpleGraphExampleRawData":
86
- {
87
- Name: "OrderCaloryGraph",
88
- Hash: "OrderCaloryGraph",
89
-
90
- DataType: "Object",
91
- PictForm:
92
- {
93
- Section: "Chart",
94
- Group: "SimpleChart",
95
-
96
- Row: 1,
97
- Width: 12,
98
-
99
- InputType: "Chart",
100
-
101
- ChartLabelsRaw: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
102
-
103
- ChartDatasetsRaw: [
104
- {
105
- label: 'Awesomeness',
106
- data: [ 1500, 1200, 800, 1700, 900, 2000 ]
107
- }],
108
-
109
- ChartJSOptionsCorePrototype:
110
- {
111
- type: 'bar'
112
- }
113
- }
114
- }
105
+ "SimpleGraphExampleRawDataOne":
106
+ {
107
+ Name: "SimpleGraphExampleOne",
108
+ Hash: "SimpleGraphExampleOne",
109
+
110
+ DataType: "Object",
111
+ PictForm:
112
+ {
113
+ Section: "Chart",
114
+ Group: "SimpleChart",
115
+
116
+ Row: 1,
117
+ Width: 3,
118
+
119
+ InputType: "Chart",
120
+
121
+ ChartLabelsRaw: ['Red', 'Green', 'Yellow', 'Grey', 'Blue'],
122
+
123
+ ChartDatasetsRaw: [{
124
+ label: 'My First Dataset',
125
+ data: [11, 16, 7, 3, 14],
126
+ backgroundColor:
127
+ [
128
+ 'rgb(255, 99, 132)',
129
+ 'rgb(75, 192, 192)',
130
+ 'rgb(255, 205, 86)',
131
+ 'rgb(201, 203, 207)',
132
+ 'rgb(54, 162, 235)'
133
+ ]
134
+ }],
135
+
136
+ ChartJSOptionsCorePrototype:
137
+ {
138
+ type: 'polarArea'
139
+ }
140
+ }
141
+ }
115
142
  }
116
143
  ```
117
144
 
118
- ### Purely Raw Data
145
+ ### Configurability via Solvers
146
+
147
+ This is configuration based on solvers.
119
148
 
120
149
  ```json
121
150
  {
122
- "SimpleGraphExampleRawData":
123
- {
124
- Name: "OrderCaloryGraph",
125
- Hash: "OrderCaloryGraph",
126
-
127
- DataType: "Object",
128
- PictForm:
129
- {
130
- Section: "Chart",
131
- Group: "SimpleChart",
132
- Row: 1,
133
- Width: 12,
134
- InputType: "Chart",
135
-
136
- ChartType: "bar",
137
-
138
- // This allows you to scope data for the chart separately from appdata
139
- ChartDataScope: "Form",
151
+ "SimpleGraphExampleRawDataTwo":
152
+ {
153
+ Name: "SimpleGraphExampleTwo",
154
+ Hash: "SimpleGraphExampleTwo",
155
+
156
+ DataType: "Object",
157
+ PictForm:
158
+ {
159
+ Section: "Chart",
160
+ Group: "SimpleChart",
161
+
162
+ Row: 2,
163
+ Width: 6,
164
+
165
+ InputType: "Chart",
166
+
167
+ ChartType: "bar",
168
+ ChartLabelsSolver: `objectkeystoarray(aggregationhistogrambyobject(FruitGrid, "name", "nutritions.calories"))`,
169
+ ChartDatasetsSolvers:
170
+ [
171
+ {
172
+ Label: 'Calories',
173
+ DataSolver: `objectvaluestoarray(aggregationhistogrambyobject(FruitGrid, "name", "nutritions.calories"))`
174
+ }
175
+ ]
176
+ }
177
+ }
178
+ }
179
+ ```
140
180
 
141
- ChartDataAddress: "FruitData.FruityVice",
181
+ ### Configurability via Address
142
182
 
143
- ChartLabelsAddress: "FruitData.FruityVice",
144
- ChartLabelsRaw: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
183
+ This is configuration based on solvers.
145
184
 
146
- ChartDatasetsAddress: "FruitData.FruityVice",
147
- ChartDatasetsConfig:
148
- {
149
- Calories:
150
- {
151
- ChartLabel: "Calories",
152
- DataSolver: "Data = {~D:Record.nutritions.calories~}",
153
- DataTemplate: "{~D:Record.SolverResult~}", // Could also be something from the solver postfix stack
154
- DataCorePrototype:
155
- {
156
- borderWidth: 1
157
- }
158
- }
159
- },
160
- ChartDatasetsRaw: [
161
- {
162
- label: 'Awesomeness',
163
- data: [ 1500, 1200, 800, 1700, 900, 2000 ]
164
- }],
165
-
166
- // Do anything you want here!!
167
- ChartJSOptionsCorePrototype:
168
- {
169
- type: 'bar',
170
- options: {
171
- scales: {
172
- y: {
173
- beginAtZero: true
174
- }
175
- }
176
- }
177
- }
178
- }
179
- }
185
+ ```json
186
+ {
187
+ "SimpleGraphExampleRawDataTwo":
188
+ {
189
+ Name: "SimpleGraphExampleTwo",
190
+ Hash: "SimpleGraphExampleTwo",
191
+
192
+ DataType: "Object",
193
+ PictForm:
194
+ {
195
+ Section: "Chart",
196
+ Group: "SimpleChart",
197
+
198
+ Row: 2,
199
+ Width: 6,
200
+
201
+ InputType: "Chart",
202
+
203
+ ChartType: "bar",
204
+ ChartLabelsAddress: `AppData.Chart.LabelsArray`,
205
+ ChartDatasetsAddress: `AppData.Chart.Datasets`
206
+ }
207
+ }
180
208
  }
181
- ```
209
+ ```
@@ -354,7 +354,7 @@ module.exports.default_configuration.pict_configuration = {
354
354
  ]
355
355
  }],
356
356
 
357
- ChartJSOptionsCorePrototype:
357
+ ChartConfigCorePrototypeRaw:
358
358
  {
359
359
  type: 'polarArea'
360
360
  }
@@ -379,7 +379,7 @@ module.exports.default_configuration.pict_configuration = {
379
379
 
380
380
  ChartType: "bar",
381
381
  ChartLabelsSolver: `objectkeystoarray(aggregationhistogrambyobject(FruitGrid, "name", "nutritions.calories"))`,
382
- ChartDataSolvers:
382
+ ChartDatasetsSolvers:
383
383
  [
384
384
  {
385
385
  Label: 'Calories',
@@ -407,7 +407,7 @@ module.exports.default_configuration.pict_configuration = {
407
407
 
408
408
  ChartType: "bar",
409
409
  ChartLabelsSolver: `objectkeystoarray(aggregationhistogrambyobject(FruitGrid, "name", "nutritions.fat"))`,
410
- ChartDataSolvers:
410
+ ChartDatasetsSolvers:
411
411
  [
412
412
  {
413
413
  Label: 'Fat',
@@ -441,30 +441,8 @@ module.exports.default_configuration.pict_configuration = {
441
441
  Width: 12,
442
442
  InputType: "Chart",
443
443
 
444
- //ChartType: "Bar",
445
-
446
- // This allows you to scope data for the chart separately from appdata
447
- ChartDataScope: "Form",
448
-
449
- ChartDataAddress: "FruitData.FruityVice",
450
-
451
- ChartLabelsAddress: "FruitData.FruityVice",
452
444
  ChartLabelsRaw: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
453
445
 
454
- ChartDatasetsAddress: "FruitData.FruityVice",
455
- ChartDatasetsConfig:
456
- {
457
- Calories:
458
- {
459
- ChartLabel: "Calories",
460
- DataSolver: "Data = {~D:Record.nutritions.calories~}",
461
- DataTemplate: "{~D:Record.SolverResult~}", // Could also be something from the solver postfix stack
462
- DataCorePrototype:
463
- {
464
- borderWidth: 1
465
- }
466
- }
467
- },
468
446
  ChartDatasetsRaw: [
469
447
  {
470
448
  label: 'Awesomeness',
@@ -472,7 +450,7 @@ module.exports.default_configuration.pict_configuration = {
472
450
  }],
473
451
 
474
452
  // Do anything you want here!!
475
- ChartJSOptionsCorePrototype:
453
+ ChartConfigCorePrototypeRaw:
476
454
  {
477
455
  type: 'bar',
478
456
  options: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pict-section-form",
3
- "version": "1.0.139",
3
+ "version": "1.0.141",
4
4
  "description": "Pict dynamic form sections",
5
5
  "main": "source/Pict-Section-Form.js",
6
6
  "directories": {
@@ -40,7 +40,7 @@
40
40
  },
41
41
  "dependencies": {
42
42
  "fable-serviceproviderbase": "^3.0.15",
43
- "marked": "^16.4.1",
43
+ "marked": "^15.0.12",
44
44
  "pict-provider": "^1.0.6",
45
45
  "pict-section-tuigrid": "^1.0.27",
46
46
  "pict-template": "^1.0.13",
@@ -20,86 +20,548 @@ class CustomInputHandler extends libPictSectionInputExtension
20
20
  /** @type {any} */
21
21
  this.log;
22
22
 
23
+ // Manage the the configuration parsing configurations -- these can be overridden in the object or even per-input
24
+ if (!this.options.DefaultCoreParsingConfiguration || !Array.isArray(this.options.DefaultCoreParsingConfiguration))
25
+ {
26
+ this.options.DefaultCoreParsingConfiguration = (
27
+ {
28
+ AddressInObject: '',
29
+ ObjectType: 'object',
30
+ MergeMethod: 'Object',
31
+ Steps: [
32
+ {
33
+ InputProperty: false,
34
+ Method: `Initialize`,
35
+ Merge: false
36
+ },
37
+ {
38
+ InputProperty: 'PictForm.ChartConfigCorePrototypeRaw',
39
+ Method: `Raw`,
40
+ Merge: true
41
+ },
42
+ {
43
+ InputProperty: 'PictForm.ChartConfigCorePrototypeAddress',
44
+ Method: `Address`,
45
+ Merge: true
46
+ },
47
+ {
48
+ InputProperty: `PictForm.ChartConfigCorePrototype`,
49
+ Method: 'SingleSolver',
50
+ Merge: true
51
+ }
52
+ ]
53
+ });
54
+ }
55
+ this.defaultCoreParsingConfiguration = JSON.parse(JSON.stringify(this.options.DefaultCoreParsingConfiguration));
56
+
57
+ if (typeof (this.options.DefaultLabelParsingConfiguration) !== 'object' || !Array.isArray(this.options.DefaultLabelParsingConfiguration.Steps))
58
+ {
59
+ this.options.DefaultLabelParsingConfiguration = (
60
+ {
61
+ AddressInObject: 'data.labels',
62
+ ObjectType: 'array',
63
+ MergeMethod: 'Array',
64
+ Steps: [
65
+ {
66
+ InputProperty: false,
67
+ Method: `Initialize`,
68
+ Merge: false
69
+ },
70
+ {
71
+ InputProperty: 'PictForm.ChartLabelsRaw',
72
+ Method: `Raw`,
73
+ Merge: false
74
+ },
75
+ {
76
+ InputProperty: 'PictForm.ChartLabelsAddress',
77
+ Method: `Address`,
78
+ Merge: false
79
+ },
80
+ {
81
+ InputProperty: `PictForm.ChartLabelsSolver`,
82
+ Method: 'SingleSolver',
83
+ Merge: false
84
+ }
85
+ ]
86
+ });
87
+ }
88
+ this.defaultLabelParsingConfiguration = JSON.parse(JSON.stringify(this.options.DefaultLabelParsingConfiguration));
89
+
90
+ if (typeof (this.options.DefaultDataParsingConfiguration) !== 'object' || !Array.isArray(this.options.DefaultDataParsingConfiguration.Steps))
91
+ {
92
+ this.options.DefaultDataParsingConfiguration = (
93
+ {
94
+ AddressInObject: 'data.datasets',
95
+ ObjectType: 'array',
96
+ MergeMethod: 'Array',
97
+ Steps: [
98
+ {
99
+ InputProperty: false,
100
+ Method: `Initialize`,
101
+ Merge: false
102
+ },
103
+ {
104
+ InputProperty: 'PictForm.ChartDatasetsRaw',
105
+ Method: `Raw`,
106
+ Merge: false
107
+ },
108
+ {
109
+ InputProperty: 'PictForm.ChartDatasetsAddress',
110
+ Method: `Address`,
111
+ Merge: false
112
+ },
113
+ {
114
+ InputProperty: 'PictForm.ChartDatasetsSolvers',
115
+ Method: `ArrayOfSolvers`,
116
+ Merge: true
117
+ }
118
+ ]
119
+ });
120
+ }
121
+ this.defaultDataParsingConfiguration = JSON.parse(JSON.stringify(this.options.DefaultDataParsingConfiguration));
122
+
23
123
  this.currentChartObjects = {};
24
124
  }
25
125
 
26
- getInputChartConfiguration(pView, pInput, pValue)
126
+ /**
127
+ *
128
+ * @param {Object} pInput - The PictForm input object
129
+ * @param {*} pChartConfiguration - The current configuration object for the form
130
+ * @param {*} pParsingConfiguration - The parsing configuration to apply
131
+ * @param {*} pInputParsingConfigurationScope - The input-specific parsing configuration string address for additional configuration
132
+ * @returns
133
+ */
134
+ applyInputParsingConfiguration(pInput, pChartConfiguration, pParsingConfiguration, pInputParsingConfigurationScope)
27
135
  {
28
- let tmpView = pView;
136
+ // TODO: There is a ton of DRY to be had in this function when we break it out to the base class
29
137
  let tmpInput = pInput;
30
- let tmpValue = pValue;
138
+ let tmpInputParsingConfigurationScope = pInputParsingConfigurationScope;
31
139
 
32
- if (!('PictForm' in tmpInput))
140
+ let tmpChartConfiguration = pChartConfiguration;
141
+ let tmpParsingConfiguration = pParsingConfiguration;
142
+
143
+ if (typeof (pInput) !== 'object')
144
+ {
145
+ return false;
146
+ }
147
+ if (typeof (pInputParsingConfigurationScope) !== 'string' || (pInputParsingConfigurationScope.length < 1))
148
+ {
149
+ return false;
150
+ }
151
+ if (typeof (tmpParsingConfiguration) !== 'object')
33
152
  {
34
153
  return false;
35
154
  }
36
155
 
37
- let tmpPictform = pInput.PictForm;
156
+ if (typeof (tmpChartConfiguration) !== 'object')
157
+ {
158
+ tmpChartConfiguration = {};
159
+ }
38
160
 
39
- let tmpChartConfiguration = (typeof(tmpPictform.ChartJSOptionsCorePrototype) === 'object') ? tmpPictform.ChartJSOptionsCorePrototype : {};
161
+ // 1. Check if there is any custom configurtion for how to parse the config for this input (dynamic dynamic)
162
+ let tmpInputCustomConfiguration = this.pict.manifest.getValueByHash(tmpInput, tmpInputParsingConfigurationScope);
163
+ if (typeof (tmpInputCustomConfiguration) === 'object')
164
+ {
165
+ // Merge the custom configuration into the base configuration
166
+ tmpParsingConfiguration = Object.assign(tmpParsingConfiguration, tmpInputCustomConfiguration);
167
+ }
40
168
 
41
- // Vet the most important two properties for defaults
42
- if (!('type' in tmpChartConfiguration))
169
+ // Get existing data
170
+ let tmpExistingData;
171
+ if (!tmpParsingConfiguration.AddressInObject || (tmpParsingConfiguration.AddressInObject == ''))
43
172
  {
44
- tmpChartConfiguration.type = (typeof(tmpPictform.ChartType) === 'string') ? tmpPictform.ChartType : 'bar';
173
+ tmpExistingData = tmpChartConfiguration;
45
174
  }
46
- if (!('data' in tmpChartConfiguration))
175
+ else
47
176
  {
48
- tmpChartConfiguration.data = {};
177
+ tmpExistingData = this.pict.manifest.getValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject);
49
178
  }
50
179
 
51
- // See if there is a data solution configuration
52
-
53
- // Start with Raw / defaults for labels and data
54
- if (!('labels' in tmpChartConfiguration))
180
+ // 2. Enumerate through each step and apply them consistently
181
+ for (let i = 0; i < tmpParsingConfiguration.Steps.length; i++)
55
182
  {
56
- tmpChartConfiguration.data.labels = [];
183
+ let tmpCurrentStep = tmpParsingConfiguration.Steps[i];
57
184
 
58
- if (Array.isArray(tmpPictform.ChartLabelsRaw))
185
+ switch (tmpCurrentStep.Method)
59
186
  {
60
- tmpChartConfiguration.data.labels = tmpPictform.ChartLabelsRaw;
61
- }
62
- // Now do the configuration-based population behaviors
187
+ case 'Initialize':
188
+ // Do nothing, already initialized
189
+ if (tmpParsingConfiguration.AddressInObject && (typeof (tmpParsingConfiguration.AddressInObject) === 'string') && (tmpParsingConfiguration.AddressInObject.length > 0))
190
+ {
191
+ let tmpCurrentStepData = this.pict.manifest.getValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject);
192
+ // see if the address exists and if it's the type we expect
193
+ if (tmpParsingConfiguration.ObjectType === 'array')
194
+ {
195
+ if (!tmpCurrentStepData || !Array.isArray(tmpCurrentStepData))
196
+ {
197
+ this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, []);
198
+ }
199
+ }
200
+ else if (tmpParsingConfiguration.ObjectType === 'object')
201
+ {
202
+ if (!tmpCurrentStepData || (typeof (tmpCurrentStepData) !== 'object'))
203
+ {
204
+ this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, {});
205
+ }
206
+ }
207
+ else
208
+ {
209
+ this.pict.log.warn(`Unsupported ObjectType ${tmpParsingConfiguration.ObjectType} parsing chart Initialize configuration for input ${tmpInput.Macro.RawHTMLID}`);
210
+ }
211
+ }
212
+ break;
213
+ case 'Raw':
214
+ // Check if the Raw is in there
215
+ let tmpRawDataExists = this.pict.manifest.checkAddressExists(tmpInput, tmpCurrentStep.InputProperty);
216
+ if (!tmpRawDataExists)
217
+ {
218
+ break;
219
+ }
63
220
 
64
- if (`ChartLabelsSolver` in tmpPictform)
65
- {
66
- let tmpSolvedLabels = this.pict.providers.DynamicSolver.runSolver(tmpPictform.ChartLabelsSolver);
67
- if (Array.isArray(tmpSolvedLabels))
68
- {
69
- // TODO: This may need to get complex for multiple sets of labels?
70
- tmpChartConfiguration.data.labels = tmpSolvedLabels;
71
- }
72
- }
73
- }
74
- if (!('datasets' in tmpChartConfiguration))
75
- {
76
- tmpChartConfiguration.data.datasets = [];
77
-
78
- if (Array.isArray(tmpPictform.ChartDatasetsRaw))
79
- {
80
- tmpChartConfiguration.data.datasets = tmpChartConfiguration.data.datasets.concat(tmpPictform.ChartDatasetsRaw);
81
- }
221
+ // Get the raw data from the input
222
+ let tmpRawData = this.pict.manifest.getValueByHash(tmpInput, tmpCurrentStep.InputProperty);
223
+ let tmpRawDataType = typeof(tmpRawData);
82
224
 
83
- // Now see if there are any non-raw datasets to add
84
- if (`ChartDataSolvers` in tmpPictform)
85
- {
86
- for (let i = 0; i < tmpPictform.ChartDataSolvers.length; i++)
87
- {
88
- let tmpDatasetSolverConfig = tmpPictform.ChartDataSolvers[i];
89
- // TODO: Cache and check if it's changed before making it initialize data in the control again
90
- let tmpDataSetSolved = this.pict.providers.DynamicSolver.runSolver(tmpDatasetSolverConfig.DataSolver);
91
- if (!'Label' in tmpDatasetSolverConfig)
225
+ // We only support objects as configuration
226
+ if (tmpRawDataType !== 'object')
227
+ {
228
+ break;
229
+ }
230
+
231
+ if (tmpParsingConfiguration.ObjectType === 'array')
92
232
  {
93
- tmpDatasetSolverConfig.Label = `Dataset ${i+1}`;
233
+ if (Array.isArray(tmpRawData))
234
+ {
235
+ if (tmpCurrentStep.Merge)
236
+ {
237
+ // Get existing data
238
+ if (!Array.isArray(tmpExistingData))
239
+ {
240
+ tmpExistingData = [];
241
+ }
242
+ // Merge in the arrays
243
+ let tmpMergedData = tmpExistingData.concat(tmpRawData);
244
+ this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpMergedData);
245
+ }
246
+ else
247
+ {
248
+ // Just set the value
249
+ this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpRawData);
250
+ }
251
+ }
94
252
  }
95
- let tmpNewDataset = {
96
- label: tmpDatasetSolverConfig.Label,
97
- data: (Array.isArray(tmpDataSetSolved)) ? tmpDataSetSolved : []
98
- };
99
- tmpChartConfiguration.data.datasets.push(tmpNewDataset);
100
- }
253
+ else if (tmpParsingConfiguration.ObjectType === 'object')
254
+ {
255
+ if (tmpCurrentStep.Merge)
256
+ {
257
+ if (!tmpParsingConfiguration.AddressInObject || (tmpParsingConfiguration.AddressInObject == ''))
258
+ {
259
+ // This is the "root" object, so we need to merge or set directly
260
+ if (tmpCurrentStep.Merge)
261
+ {
262
+ tmpChartConfiguration = Object.assign(tmpChartConfiguration, tmpRawData);
263
+ }
264
+ else
265
+ {
266
+ tmpChartConfiguration = tmpRawData;
267
+ }
268
+ }
269
+ else
270
+ {
271
+ if ((typeof(tmpExistingData) != 'object') || (tmpExistingData == null))
272
+ {
273
+ tmpExistingData = {};
274
+ }
275
+ if (tmpCurrentStep.Merge)
276
+ {
277
+ // Merge the objects
278
+ let tmpMergedData = Object.assign(tmpExistingData, tmpRawData);
279
+ this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpMergedData);
280
+ }
281
+ else
282
+ {
283
+ // Just set the value
284
+ this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpRawData);
285
+ }
286
+ }
287
+ }
288
+ else
289
+ {
290
+ // Just set the value?
291
+ this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpRawData);
292
+ }
293
+ }
294
+ break;
295
+ case 'Address':
296
+ let tmpAddress = this.pict.manifest.getValueByHash(tmpInput, tmpCurrentStep.InputProperty);
297
+ // Input is the Record in the resolution chain
298
+ if (!tmpAddress)
299
+ {
300
+ break;
301
+ }
302
+
303
+ let tmpPotentialConfigurationObject = this.pict.resolveStateFromAddress(tmpAddress, pInput);
304
+
305
+ if (typeof (tmpPotentialConfigurationObject) !== 'object')
306
+ {
307
+ break;
308
+ }
309
+
310
+ if (tmpParsingConfiguration.ObjectType === 'array')
311
+ {
312
+ if (Array.isArray(tmpRawData))
313
+ {
314
+ if (tmpCurrentStep.Merge)
315
+ {
316
+ // Get existing data
317
+ if (!Array.isArray(tmpExistingData))
318
+ {
319
+ tmpExistingData = [];
320
+ }
321
+ // Merge in the arrays
322
+ let tmpMergedData = tmpExistingData.concat(tmpRawData);
323
+ this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpMergedData);
324
+ }
325
+ else
326
+ {
327
+ // Just set the value
328
+ this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpRawData);
329
+ }
330
+ }
331
+ }
332
+ else if (tmpParsingConfiguration.ObjectType === 'object')
333
+ {
334
+ if (tmpCurrentStep.Merge)
335
+ {
336
+ if (!tmpParsingConfiguration.AddressInObject || (tmpParsingConfiguration.AddressInObject == ''))
337
+ {
338
+ // This is the "root" object, so we need to merge or set directly
339
+ if (tmpCurrentStep.Merge)
340
+ {
341
+ tmpChartConfiguration = Object.assign(tmpChartConfiguration, tmpRawData);
342
+ }
343
+ else
344
+ {
345
+ tmpChartConfiguration = tmpRawData;
346
+ }
347
+ }
348
+ else
349
+ {
350
+ if ((typeof(tmpExistingData) != 'object') || (tmpExistingData == null))
351
+ {
352
+ tmpExistingData = {};
353
+ }
354
+ if (tmpCurrentStep.Merge)
355
+ {
356
+ // Merge the objects
357
+ let tmpMergedData = Object.assign(tmpExistingData, tmpRawData);
358
+ this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpMergedData);
359
+ }
360
+ else
361
+ {
362
+ // Just set the value
363
+ this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpRawData);
364
+ }
365
+ }
366
+ }
367
+ else
368
+ {
369
+ // Just set the value?
370
+ this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpRawData);
371
+ }
372
+ }
373
+ break;
374
+ case 'SingleSolver':
375
+ let tmpSolverExpression = this.pict.manifest.getValueByHash(tmpInput, tmpCurrentStep.InputProperty);
376
+ // Check that the expression is a string
377
+ if (typeof (tmpSolverExpression) !== 'string')
378
+ {
379
+ break;
380
+ }
381
+
382
+ let tmpSolvedConfiguration = this.pict.providers.DynamicSolver.runSolver(tmpSolverExpression);
383
+
384
+ if (tmpParsingConfiguration.ObjectType === 'array')
385
+ {
386
+ if (Array.isArray(tmpSolvedConfiguration))
387
+ {
388
+ if (tmpCurrentStep.Merge)
389
+ {
390
+ // Get existing data
391
+ if (!Array.isArray(tmpExistingData))
392
+ {
393
+ tmpExistingData = [];
394
+ }
395
+ // Merge in the arrays
396
+ let tmpMergedData = tmpExistingData.concat(tmpSolvedConfiguration);
397
+ this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpMergedData);
398
+ }
399
+ else
400
+ {
401
+ // Just set the value
402
+ this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpSolvedConfiguration);
403
+ }
404
+ }
405
+ }
406
+ else if (tmpParsingConfiguration.ObjectType === 'object')
407
+ {
408
+ if (tmpCurrentStep.Merge)
409
+ {
410
+ if (!tmpParsingConfiguration.AddressInObject || (tmpParsingConfiguration.AddressInObject == ''))
411
+ {
412
+ // This is the "root" object, so we need to merge or set directly
413
+ if (tmpCurrentStep.Merge)
414
+ {
415
+ tmpChartConfiguration = Object.assign(tmpChartConfiguration, tmpSolvedConfiguration);
416
+ }
417
+ else
418
+ {
419
+ tmpChartConfiguration = tmpSolvedConfiguration;
420
+ }
421
+ }
422
+ else
423
+ {
424
+ if ((typeof(tmpExistingData) != 'object') || (tmpExistingData == null))
425
+ {
426
+ tmpExistingData = {};
427
+ }
428
+ if (tmpCurrentStep.Merge)
429
+ {
430
+ // Merge the objects
431
+ let tmpMergedData = Object.assign(tmpExistingData, tmpSolvedConfiguration);
432
+ this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpMergedData);
433
+ }
434
+ else
435
+ {
436
+ // Just set the value
437
+ this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpRawData);
438
+ }
439
+ }
440
+ }
441
+ else
442
+ {
443
+ // Just set the value?
444
+ this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpRawData);
445
+ }
446
+ }
447
+ break;
448
+
449
+ case 'ArrayOfSolvers':
450
+ let tmpSolverExpressionList = this.pict.manifest.getValueByHash(tmpInput, tmpCurrentStep.InputProperty);
451
+
452
+ // Check that the expression is a string
453
+ if (!Array.isArray(tmpSolverExpressionList))
454
+ {
455
+ break;
456
+ }
457
+
458
+ for (let i = 0; i < tmpSolverExpressionList.length; i++)
459
+ {
460
+ let tmpCurrentSolverExpression = tmpSolverExpressionList[i];
461
+ if (typeof(tmpCurrentSolverExpression) !== 'object')
462
+ {
463
+ continue;
464
+ }
465
+
466
+ let tmpSolverLabel = tmpCurrentSolverExpression.Label;
467
+ let tmpSolverExpression = tmpCurrentSolverExpression.DataSolver;
468
+ let tmpSolvedDataSet = this.pict.providers.DynamicSolver.runSolver(tmpSolverExpression);
469
+
470
+ let tmpDataObject = (
471
+ {
472
+ label: tmpSolverLabel,
473
+ data: (Array.isArray(tmpSolvedDataSet)) ? tmpSolvedDataSet : []
474
+ });
475
+
476
+ if (tmpParsingConfiguration.ObjectType === 'array')
477
+ {
478
+ if (Array.isArray(tmpSolvedDataSet))
479
+ {
480
+ if (tmpCurrentStep.Merge)
481
+ {
482
+ // Get existing data
483
+ if (!Array.isArray(tmpExistingData))
484
+ {
485
+ tmpExistingData = [];
486
+ }
487
+ tmpExistingData.push(tmpDataObject);
488
+ this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpExistingData);
489
+ }
490
+ else
491
+ {
492
+ this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, [tmpDataObject]);
493
+ }
494
+ }
495
+ }
496
+ else if (tmpParsingConfiguration.ObjectType === 'object')
497
+ {
498
+ if (tmpCurrentStep.Merge)
499
+ {
500
+ if (!tmpParsingConfiguration.AddressInObject || (tmpParsingConfiguration.AddressInObject == ''))
501
+ {
502
+ // This is the "root" object, so we need to merge or set directly
503
+ if (tmpCurrentStep.Merge)
504
+ {
505
+ tmpChartConfiguration = Object.assign(tmpChartConfiguration, tmpSolvedDataSet);
506
+ }
507
+ else
508
+ {
509
+ tmpChartConfiguration = tmpSolvedDataSet;
510
+ }
511
+ }
512
+ else
513
+ {
514
+ if ((typeof(tmpExistingData) != 'object') || (tmpExistingData == null))
515
+ {
516
+ tmpExistingData = {};
517
+ }
518
+ if (tmpCurrentStep.Merge)
519
+ {
520
+ // Merge the objects
521
+ let tmpMergedData = Object.assign(tmpExistingData, tmpSolvedDataSet);
522
+ this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpMergedData);
523
+ }
524
+ else
525
+ {
526
+ // Just set the value
527
+ this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpRawData);
528
+ }
529
+ }
530
+ }
531
+ else
532
+ {
533
+ // Just set the value?
534
+ this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpRawData);
535
+ }
536
+ }
537
+ }
538
+ break;
101
539
  }
102
540
  }
541
+ }
542
+
543
+ getInputChartConfiguration(pView, pInput, pValue)
544
+ {
545
+ let tmpView = pView;
546
+ let tmpInput = pInput;
547
+ let tmpValue = pValue;
548
+
549
+ if (!('PictForm' in tmpInput))
550
+ {
551
+ return false;
552
+ }
553
+
554
+ let tmpPictform = pInput.PictForm;
555
+
556
+ let tmpChartConfiguration = (typeof (tmpPictform.ChartJSOptionsCorePrototype) === 'object') ? tmpPictform.ChartJSOptionsCorePrototype : {};
557
+
558
+ this.applyInputParsingConfiguration(pInput, tmpChartConfiguration, this.defaultCoreParsingConfiguration, 'PictForm.ChartConfigCoreParsingConfigurationOverride');
559
+ if (!('type' in tmpChartConfiguration))
560
+ {
561
+ tmpChartConfiguration.type = (typeof (tmpPictform.ChartType) === 'string') ? tmpPictform.ChartType : 'bar';
562
+ }
563
+ this.applyInputParsingConfiguration(pInput, tmpChartConfiguration, this.defaultLabelParsingConfiguration, 'PictForm.ChartLabelsParsingConfigurationOverride');
564
+ this.applyInputParsingConfiguration(pInput, tmpChartConfiguration, this.defaultDataParsingConfiguration, 'PictForm.ChartDataParsingConfigurationOverride');
103
565
 
104
566
  return tmpChartConfiguration;
105
567
  }
@@ -121,7 +583,7 @@ class CustomInputHandler extends libPictSectionInputExtension
121
583
  tmpChartCanvasElement = tmpChartCanvasElement[0]
122
584
 
123
585
  // Check if there is a window.Chart which is the Chart.js library
124
- if (typeof(window.Chart) !== 'function')
586
+ if (typeof (window.Chart) !== 'function')
125
587
  {
126
588
  this.log.warn(`Chart.js library not loaded for input ${tmpChartCanvasElementSelector}`);
127
589
  }
@@ -18,6 +18,7 @@ declare class PictDynamicSolver extends libPictProvider {
18
18
  instantiateServiceProviderIfNotExists: (hash: string) => any;
19
19
  ExpressionParser: any;
20
20
  };
21
+ runSolver(pSolverExpression: any): any;
21
22
  /**
22
23
  * Checks the solver and returns the solver object if it passes the checks.
23
24
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Pict-Provider-DynamicSolver.d.ts","sourceRoot":"","sources":["../../../source/providers/Pict-Provider-DynamicSolver.js"],"names":[],"mappings":";AA8BA;;GAEG;AACH;IAEC;;;;;;OAMG;IACH,oBAJW,MAAM,YACN,MAAM,gBACN,MAAM,EAqChB;IA9BA,6BAA6B;IAC7B,MADW,OAAO,MAAM,CAAC,CAChB;IACT,uHAAuH;IACvH,OADW,OAAO,MAAM,CAAC,GAAG;QAAE,qCAAqC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,CAAC;QAAC,gBAAgB,EAAE,GAAG,CAAA;KAAE,CACzG;IA6BX;;;;;;;;;OASG;IACH,qBALW,MAAM,GAAC,MAAM,cACb,OAAO,aACP,MAAM,GACJ,MAAM,GAAC,SAAS,CA8B5B;IAED;;;;;;;OAOG;IACH,wDAFW,MAAM,QAyDhB;IAED;;;;;OAKG;IACH,gEAFW,MAAM,QA+BhB;IAED;;;;;OAKG;IACH,sDAFW,MAAM,QAwBhB;IAED;;;;;;;;OAQG;IACH,gCAJW,MAAM,yBAWhB;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,yBAFW,QAAM,MAAM,EAAE,QAiFxB;IADA;;;;;MAAuC;CAExC;;;;;AAhWD,kCAAkC;AAClC,6CADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAS3B"}
1
+ {"version":3,"file":"Pict-Provider-DynamicSolver.d.ts","sourceRoot":"","sources":["../../../source/providers/Pict-Provider-DynamicSolver.js"],"names":[],"mappings":";AA+BA;;GAEG;AACH;IAEC;;;;;;OAMG;IACH,oBAJW,MAAM,YACN,MAAM,gBACN,MAAM,EAqChB;IA9BA,6BAA6B;IAC7B,MADW,OAAO,MAAM,CAAC,CAChB;IACT,uHAAuH;IACvH,OADW,OAAO,MAAM,CAAC,GAAG;QAAE,qCAAqC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,CAAC;QAAC,gBAAgB,EAAE,GAAG,CAAA;KAAE,CACzG;IA6BX,uCAaC;IAED;;;;;;;;;OASG;IACH,qBALW,MAAM,GAAC,MAAM,cACb,OAAO,aACP,MAAM,GACJ,MAAM,GAAC,SAAS,CA8B5B;IAED;;;;;;;OAOG;IACH,wDAFW,MAAM,QAyDhB;IAED;;;;;OAKG;IACH,gEAFW,MAAM,QA+BhB;IAED;;;;;OAKG;IACH,sDAFW,MAAM,QAwBhB;IAED;;;;;;;;OAQG;IACH,gCAJW,MAAM,yBAWhB;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,yBAFW,QAAM,MAAM,EAAE,QAiFxB;IADA;;;;;MAAuC;CAExC;;;;;AA/WD,kCAAkC;AAClC,6CADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAS3B"}
@@ -0,0 +1,115 @@
1
+ export = CustomInputHandler;
2
+ /**
3
+ * CustomInputHandler class.
4
+ *
5
+ * @class
6
+ * @extends libPictSectionInputExtension
7
+ * @memberof providers.inputs
8
+ */
9
+ declare class CustomInputHandler extends libPictSectionInputExtension {
10
+ constructor(pFable: any, pOptions: any, pServiceHash: any);
11
+ /** @type {import('pict')} */
12
+ pict: import("pict");
13
+ /** @type {import('pict')} */
14
+ fable: import("pict");
15
+ defaultCoreParsingConfiguration: any;
16
+ defaultLabelParsingConfiguration: any;
17
+ defaultDataParsingConfiguration: any;
18
+ currentChartObjects: {};
19
+ /**
20
+ *
21
+ * @param {Object} pInput - The PictForm input object
22
+ * @param {*} pChartConfiguration - The current configuration object for the form
23
+ * @param {*} pParsingConfiguration - The parsing configuration to apply
24
+ * @param {*} pInputParsingConfigurationScope - The input-specific parsing configuration string address for additional configuration
25
+ * @returns
26
+ */
27
+ applyInputParsingConfiguration(pInput: any, pChartConfiguration: any, pParsingConfiguration: any, pInputParsingConfigurationScope: any): boolean;
28
+ getInputChartConfiguration(pView: any, pInput: any, pValue: any): any;
29
+ initializeChartVisualization(pView: any, pGroup: any, pRow: any, pInput: any, pValue: any, pHTMLSelector: any): boolean;
30
+ /**
31
+ * Initializes a tabular input element.
32
+ *
33
+ * @param {Object} pView - The view object.
34
+ * @param {Object} pGroup - The group object.
35
+ * @param {Object} pInput - The input object.
36
+ * @param {any} pValue - The input value.
37
+ * @param {string} pHTMLSelector - The HTML selector.
38
+ * @param {number} pRowIndex - The index of the row.
39
+ * @param {string} pTransactionGUID - The transaction GUID for the event dispatch.
40
+ * @returns {any} - The result of the initialization.
41
+ */
42
+ onInputInitializeTabular(pView: any, pGroup: any, pInput: any, pValue: any, pHTMLSelector: string, pRowIndex: number, pTransactionGUID: string): any;
43
+ /**
44
+ * Handles the change event for the data in the select input.
45
+ *
46
+ * @param {Object} pView - The view object.
47
+ * @param {Object} pInput - The input object.
48
+ * @param {any} pValue - The new value of the input.
49
+ * @param {string} pHTMLSelector - The HTML selector of the input.
50
+ * @param {string} pTransactionGUID - The transaction GUID for the event dispatch.
51
+ * @returns {any} - The result of the super.onDataChange method.
52
+ */
53
+ onDataChange(pView: any, pInput: any, pValue: any, pHTMLSelector: string, pTransactionGUID: string): any;
54
+ /**
55
+ * Handles the change event for tabular data.
56
+ *
57
+ * @param {Object} pView - The view object.
58
+ * @param {Object} pInput - The input object.
59
+ * @param {any} pValue - The new value.
60
+ * @param {string} pHTMLSelector - The HTML selector.
61
+ * @param {number} pRowIndex - The index of the row.
62
+ * @param {string} pTransactionGUID - The transaction GUID for the event dispatch.
63
+ * @returns {any} - The result of the super method.
64
+ */
65
+ onDataChangeTabular(pView: any, pInput: any, pValue: any, pHTMLSelector: string, pRowIndex: number, pTransactionGUID: string): any;
66
+ /**
67
+ * Marshals data to the form for the given input.
68
+ *
69
+ * @param {Object} pView - The view object.
70
+ * @param {Object} pGroup - The group object.
71
+ * @param {Object} pRow - The row object.
72
+ * @param {Object} pInput - The input object.
73
+ * @param {any} pValue - The value to be marshaled.
74
+ * @param {string} pHTMLSelector - The HTML selector.
75
+ * @param {string} pTransactionGUID - The transaction GUID for the event dispatch.
76
+ * @returns {boolean} - Returns true if the value is successfully marshaled to the form, otherwise false.
77
+ */
78
+ onDataMarshalToForm(pView: any, pGroup: any, pRow: any, pInput: any, pValue: any, pHTMLSelector: string, pTransactionGUID: string): boolean;
79
+ /**
80
+ * Marshals data to a form in tabular format.
81
+ *
82
+ * @param {Object} pView - The view object.
83
+ * @param {Object} pGroup - The group object.
84
+ * @param {Object} pInput - The input object.
85
+ * @param {any} pValue - The value parameter.
86
+ * @param {string} pHTMLSelector - The HTML selector parameter.
87
+ * @param {number} pRowIndex - The row index parameter.
88
+ * @param {string} pTransactionGUID - The transaction GUID for the event dispatch.
89
+ * @returns {any} - The result of the data marshaling.
90
+ */
91
+ onDataMarshalToFormTabular(pView: any, pGroup: any, pInput: any, pValue: any, pHTMLSelector: string, pRowIndex: number, pTransactionGUID: string): any;
92
+ /**
93
+ * Handles the data request event for a select input in the PictProviderInputSelect class.
94
+ *
95
+ * @param {Object} pView - The view object.
96
+ * @param {Object} pInput - The input object.
97
+ * @param {any} pValue - The value object.
98
+ * @param {string} pHTMLSelector - The HTML selector object.
99
+ * @returns {any} - The result of the onDataRequest method.
100
+ */
101
+ onDataRequest(pView: any, pInput: any, pValue: any, pHTMLSelector: string): any;
102
+ /**
103
+ * Handles the data request event for a tabular input.
104
+ *
105
+ * @param {Object} pView - The view object.
106
+ * @param {Object} pInput - The input object.
107
+ * @param {any} pValue - The value object.
108
+ * @param {string} pHTMLSelector - The HTML selector.
109
+ * @param {number} pRowIndex - The row index.
110
+ * @returns {any} - The result of the data request.
111
+ */
112
+ onDataRequestTabular(pView: any, pInput: any, pValue: any, pHTMLSelector: string, pRowIndex: number): any;
113
+ }
114
+ import libPictSectionInputExtension = require("../Pict-Provider-InputExtension.js");
115
+ //# sourceMappingURL=Pict-Provider-Input-Chart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pict-Provider-Input-Chart.d.ts","sourceRoot":"","sources":["../../../../source/providers/inputs/Pict-Provider-Input-Chart.js"],"names":[],"mappings":";AAEA;;;;;;GAMG;AACH;IAEC,2DAgHC;IA5GA,6BAA6B;IAC7B,MADW,OAAO,MAAM,CAAC,CAChB;IACT,6BAA6B;IAC7B,OADW,OAAO,MAAM,CAAC,CACf;IAoCV,qCAA+G;IAiC/G,sCAAiH;IAiCjH,qCAA+G;IAE/G,wBAA6B;IAG9B;;;;;;;OAOG;IACH,iEALW,GAAC,yBACD,GAAC,mCACD,GAAC,WA0ZX;IAED,sEAwBC;IAED,wHAyBC;IAoBD;;;;;;;;;;;OAWG;IACH,uEANW,GAAG,iBACH,MAAM,aACN,MAAM,oBACN,MAAM,GACJ,GAAG,CAKf;IAED;;;;;;;;;OASG;IACH,8CALW,GAAG,iBACH,MAAM,oBACN,MAAM,GACJ,GAAG,CAKf;IAED;;;;;;;;;;OAUG;IACH,qDANW,GAAG,iBACH,MAAM,aACN,MAAM,oBACN,MAAM,GACJ,GAAG,CAKf;IAED;;;;;;;;;;;OAWG;IACH,6EALW,GAAG,iBACH,MAAM,oBACN,MAAM,GACJ,OAAO,CAKnB;IAED;;;;;;;;;;;OAWG;IACH,yEANW,GAAG,iBACH,MAAM,aACN,MAAM,oBACN,MAAM,GACJ,GAAG,CAKf;IAED;;;;;;;;OAQG;IACH,+CAJW,GAAG,iBACH,MAAM,GACJ,GAAG,CAKf;IAED;;;;;;;;;OASG;IACH,sDALW,GAAG,iBACH,MAAM,aACN,MAAM,GACJ,GAAG,CAKf;CACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"Pict-Layout-Record.d.ts","sourceRoot":"","sources":["../../../../source/providers/layouts/Pict-Layout-Record.js"],"names":[],"mappings":";AAEA;IAEC,2DAUC;IANA,6BAA6B;IAC7B,MADW,OAAO,MAAM,CAAC,CAChB;IACT,6BAA6B;IAC7B,OADW,OAAO,MAAM,CAAC,CACf;CAgDX"}
1
+ {"version":3,"file":"Pict-Layout-Record.d.ts","sourceRoot":"","sources":["../../../../source/providers/layouts/Pict-Layout-Record.js"],"names":[],"mappings":";AAEA;IAEC,2DAUC;IANA,6BAA6B;IAC7B,MADW,OAAO,MAAM,CAAC,CAChB;IACT,6BAA6B;IAC7B,OADW,OAAO,MAAM,CAAC,CACf;CAiGX"}
@@ -1 +1 @@
1
- {"version":3,"file":"Pict-View-PSF-SupportBase.d.ts","sourceRoot":"","sources":["../../../../source/views/support/Pict-View-PSF-SupportBase.js"],"names":[],"mappings":";AAqBA;IAEC,2DAYC;IALA,yBAA2B;IAC3B,wBAAkC;IAMnC;;;;;;;;;;;;;;MAgMC;IAED,8CAKC;IAGD,8CA6BC;IAED,uMA8GC;IAED,8BAiIC;CACD"}
1
+ {"version":3,"file":"Pict-View-PSF-SupportBase.d.ts","sourceRoot":"","sources":["../../../../source/views/support/Pict-View-PSF-SupportBase.js"],"names":[],"mappings":";AAqBA;IAEC,2DAYC;IALA,yBAA2B;IAC3B,wBAAkC;IAMnC;;;;;;;;;;;;;;MAsMC;IAED,8CAKC;IAGD,8CA6BC;IAED,uMA8GC;IAED,8BAiIC;CACD"}