bruce-models 4.9.9 → 5.0.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.
@@ -103,5 +103,5 @@ __exportStar(require("./plugin/plugin"), exports);
103
103
  __exportStar(require("./environment"), exports);
104
104
  __exportStar(require("./data-source/data-source"), exports);
105
105
  // This is updated with the package.json version on build.
106
- exports.VERSION = "4.9.9";
106
+ exports.VERSION = "5.0.0";
107
107
  //# sourceMappingURL=bruce-models.js.map
@@ -77,61 +77,228 @@ var Calculator;
77
77
  EValueType[EValueType["RandomColor"] = 5] = "RandomColor";
78
78
  })(EValueType = Calculator.EValueType || (Calculator.EValueType = {}));
79
79
  /**
80
- * Calculates the value of arbitrary field options.
81
- * The context calling this should validate results and parse stuff if needed.
82
- * @deprecated use specific calls: eg GetColor or GetNumber.
83
- * @param fields
84
- * @param entity
85
- * @param tags
86
- * @returns
80
+ * Calculates a value-type 'T' based on given set of fields.
81
+ * The supplied data + tags are fed into the calculation.
82
+ * When a value fails to be calculated, the 'defaultValue' is returned.
83
+ * If no 'defaultValue' is provided, then 'null' is returned.
87
84
  */
88
- function GetValue(fields, entity, tags) {
89
- if (!(fields === null || fields === void 0 ? void 0 : fields.length)) {
90
- return null;
85
+ function Calculate(params) {
86
+ let { fields, tags, data, defaultValue, type } = params;
87
+ if (fields == null) {
88
+ return defaultValue;
89
+ }
90
+ if (data == null || typeof data != "object") {
91
+ data = {};
91
92
  }
92
- if (!tags) {
93
+ if (tags == null || !Array.isArray(tags)) {
93
94
  tags = [];
94
95
  }
95
- if (!entity) {
96
- entity = {};
96
+ if (type == null) {
97
+ type = "any";
98
+ }
99
+ // Normalize fields to be an array of options.
100
+ let fieldsArr = [];
101
+ if (Array.isArray(fields)) {
102
+ fieldsArr = fields;
103
+ }
104
+ else {
105
+ fieldsArr = [fields];
97
106
  }
98
- for (let i = 0; i < fields.length; i++) {
99
- const field = fields[i];
100
- let value;
107
+ // Indicator for old data.
108
+ // When a range is provided in older data, it is expected that invalid/failed mappings should default to the minimum value.
109
+ // We are deprecating this logic.
110
+ // The first step of deprecation is to avoid using this logic when multiple calculations are provided.
111
+ // TODO: When we've reviewed all existing uses, we can remove this logic entirely and just update the needed style records.
112
+ let shouldRangesDefaultToMin = true;
113
+ // This reduce totals the number of mappings and gradients.
114
+ // >1 means we should not default to min as there are multiple calculations.
115
+ if (fieldsArr.reduce((acc, field) => acc += (field.type == EValueType.Mapping || field.type == EValueType.Gradient) ? 1 : 0, 0) > 1) {
116
+ shouldRangesDefaultToMin = false;
117
+ }
118
+ const assertColor = (color) => {
119
+ if (color && typeof color == "string") {
120
+ color = color_1.Color.ColorFromStr(color);
121
+ }
122
+ if (color && typeof color == "object" && !isNaN(color.red) && color.red != null) {
123
+ return color;
124
+ }
125
+ return null;
126
+ };
127
+ const isColor = (value) => {
128
+ if (value && typeof value == "object" && !isNaN(value.red) && value.red != null) {
129
+ return true;
130
+ }
131
+ return false;
132
+ };
133
+ // Calculate the value.
134
+ let value = null;
135
+ for (let i = 0; i < fieldsArr.length; i++) {
136
+ let field = fieldsArr[i];
137
+ if (field) {
138
+ // Dereference.
139
+ // We do this because we'll be modifying the field to fix bad data.
140
+ field = JSON.parse(JSON.stringify(field));
141
+ }
142
+ // Bad data has it set to 'color' but expects the input to be a number.
143
+ if (type == "number" && field.type == EValueType.Color) {
144
+ field.type = EValueType.Input;
145
+ }
101
146
  switch (field.type) {
102
147
  case EValueType.Color:
148
+ if (type === "number") {
149
+ break;
150
+ }
103
151
  value = field.value;
104
- if (value) {
105
- value = color_1.Color.ColorFromStr(value);
152
+ value = assertColor(value);
153
+ if (value && type == "string") {
154
+ value = `rgba(${value.red},${value.green},${value.blue},${value.alpha})`;
106
155
  }
107
156
  break;
108
157
  case EValueType.Gradient:
109
- value = GetGradientValue(field.value, entity);
110
- break;
111
- case EValueType.Input:
112
- value = GetInputValue(field.value, entity);
113
- break;
114
- case EValueType.Mapping:
115
- value = GetMappingValue(field.value, entity);
158
+ if (type === "number") {
159
+ break;
160
+ }
161
+ value = GetGradientValue(field.value, data, shouldRangesDefaultToMin);
162
+ value = assertColor(value);
163
+ if (value && type == "string") {
164
+ value = `rgba(${value.red},${value.green},${value.blue},${value.alpha})`;
165
+ }
116
166
  break;
117
167
  case EValueType.RandomColor:
168
+ if (type === "number") {
169
+ break;
170
+ }
118
171
  value = color_1.Color.RandomColor();
172
+ value = assertColor(value);
173
+ if (value && type == "string") {
174
+ value = `rgba(${value.red},${value.green},${value.blue},${value.alpha})`;
175
+ }
119
176
  break;
120
177
  case EValueType.TagColor:
178
+ if (type === "number") {
179
+ break;
180
+ }
121
181
  for (let i = 0; i < tags.length; i++) {
122
182
  const tag = tags[i];
123
183
  if (tag.Color) {
124
184
  value = color_1.Color.ColorFromStr(tag.Color);
125
- break;
185
+ value = assertColor(value);
186
+ if (value) {
187
+ break;
188
+ }
189
+ }
190
+ }
191
+ if (value && type == "string") {
192
+ const cColor = value;
193
+ value = `rgba(${cColor.red},${cColor.green},${cColor.blue},${cColor.alpha})`;
194
+ }
195
+ break;
196
+ // Input can be an arbitrary value.
197
+ // Eg: Result is a colour, a number, a string.
198
+ // This means we first calculate the value, then validate it in the context of the desired type.
199
+ case EValueType.Input:
200
+ value = GetInputValue(field.value, data);
201
+ if (value != null) {
202
+ if (type == "number") {
203
+ if (typeof value == "string" && value != "" && value != null && value != undefined) {
204
+ value = Number(value);
205
+ }
206
+ else if (typeof value != "number") {
207
+ value = null;
208
+ }
209
+ }
210
+ else if (type == "string") {
211
+ if (typeof value == "number") {
212
+ value = String(value);
213
+ }
214
+ else if (typeof value == "object") {
215
+ if (isColor(value)) {
216
+ value = `rgba(${value.red},${value.green},${value.blue},${value.alpha})`;
217
+ }
218
+ else {
219
+ value = null;
220
+ }
221
+ }
222
+ }
223
+ else if (type == "color") {
224
+ value = assertColor(value);
225
+ }
226
+ }
227
+ break;
228
+ // Mapping can be an arbitrary value.
229
+ // Eg: mapping a value to a Client File ID, or a colour, or a number.
230
+ // This means we first calculate the value, then validate it in the context of the desired type.
231
+ case EValueType.Mapping:
232
+ value = GetMappingValue(field.value, data);
233
+ if (value != null) {
234
+ if (type == "number") {
235
+ if (typeof value == "string" && value != "" && value != null && value != undefined) {
236
+ value = Number(value);
237
+ }
238
+ else if (typeof value != "number") {
239
+ value = null;
240
+ }
241
+ }
242
+ else if (type == "string") {
243
+ if (typeof value == "number") {
244
+ value = String(value);
245
+ }
246
+ else if (typeof value == "object") {
247
+ if (isColor(value)) {
248
+ value = `rgba(${value.red},${value.green},${value.blue},${value.alpha})`;
249
+ }
250
+ else {
251
+ value = null;
252
+ }
253
+ }
254
+ }
255
+ else if (type == "color") {
256
+ value = assertColor(typeof value === "number" ? String(value) : value);
126
257
  }
127
258
  }
128
259
  break;
129
260
  }
130
- if (value || value == 0) {
131
- return value;
261
+ // Extra layer of validation.
262
+ // This is a backup in case some branch above failed to convert into the right type.
263
+ if (type == "number") {
264
+ if (typeof value !== "number" || isNaN(value)) {
265
+ value = null;
266
+ }
267
+ }
268
+ else if (type == "color") {
269
+ if (typeof value !== "object" || !value) {
270
+ value = null;
271
+ }
272
+ }
273
+ else if (type == "string") {
274
+ if (typeof value !== "string" || !value) {
275
+ value = null;
276
+ }
277
+ }
278
+ if (value != null) {
279
+ break;
132
280
  }
133
281
  }
134
- return null;
282
+ // Return the value or default.
283
+ return value != null ? value : defaultValue;
284
+ }
285
+ Calculator.Calculate = Calculate;
286
+ /**
287
+ * Calculates the value of arbitrary field options.
288
+ * The context calling this should validate results and parse stuff if needed.
289
+ * @param fields
290
+ * @param entity
291
+ * @param tags
292
+ * @returns
293
+ */
294
+ function GetValue(fields, entity = {}, tags = []) {
295
+ return Calculate({
296
+ fields: fields,
297
+ data: entity,
298
+ defaultValue: null,
299
+ tags: tags,
300
+ type: "any"
301
+ });
135
302
  }
136
303
  Calculator.GetValue = GetValue;
137
304
  /**
@@ -141,53 +308,14 @@ var Calculator;
141
308
  * @param entity
142
309
  * @param tags
143
310
  */
144
- function GetColor(fields, entity, tags) {
145
- if (!(fields === null || fields === void 0 ? void 0 : fields.length)) {
146
- return null;
147
- }
148
- if (!tags) {
149
- tags = [];
150
- }
151
- if (!entity) {
152
- entity = {};
153
- }
154
- for (let i = 0; i < fields.length; i++) {
155
- const field = fields[i];
156
- let value;
157
- switch (field.type) {
158
- case EValueType.Color:
159
- value = field.value;
160
- break;
161
- case EValueType.Gradient:
162
- value = GetGradientValue(field.value, entity);
163
- break;
164
- case EValueType.Input:
165
- value = GetInputValue(field.value, entity);
166
- break;
167
- case EValueType.Mapping:
168
- value = GetMappingValue(field.value, entity);
169
- break;
170
- case EValueType.RandomColor:
171
- value = color_1.Color.RandomColor();
172
- break;
173
- case EValueType.TagColor:
174
- for (let i = 0; i < tags.length; i++) {
175
- const tag = tags[i];
176
- if (tag.Color) {
177
- value = color_1.Color.ColorFromStr(tag.Color);
178
- break;
179
- }
180
- }
181
- break;
182
- }
183
- if (typeof value === "string") {
184
- value = color_1.Color.ColorFromStr(value);
185
- }
186
- if (value && typeof value === "object" && (value.red || value.red == 0)) {
187
- return value;
188
- }
189
- }
190
- return null;
311
+ function GetColor(fields, entity = {}, tags = []) {
312
+ return Calculate({
313
+ fields: fields,
314
+ data: entity,
315
+ defaultValue: null,
316
+ tags: tags,
317
+ type: "color"
318
+ });
191
319
  }
192
320
  Calculator.GetColor = GetColor;
193
321
  /**
@@ -198,39 +326,14 @@ var Calculator;
198
326
  * @param tags
199
327
  * @returns
200
328
  */
201
- function GetNumber(fields, entity, tags) {
202
- if (!(fields === null || fields === void 0 ? void 0 : fields.length)) {
203
- return null;
204
- }
205
- if (!tags) {
206
- tags = [];
207
- }
208
- if (!entity) {
209
- entity = {};
210
- }
211
- for (let i = 0; i < fields.length; i++) {
212
- const field = fields[i];
213
- let value;
214
- switch (field.type) {
215
- case EValueType.Gradient:
216
- value = GetGradientValue(field.value, entity);
217
- break;
218
- case EValueType.Color:
219
- case EValueType.Input:
220
- value = GetInputValue(field.value, entity);
221
- break;
222
- case EValueType.Mapping:
223
- value = GetMappingValue(field.value, entity);
224
- break;
225
- }
226
- if (value != "" && value != null && value != undefined) {
227
- value = Number(value);
228
- }
229
- if (value || value == 0) {
230
- return value;
231
- }
232
- }
233
- return null;
329
+ function GetNumber(fields, entity = {}, tags = []) {
330
+ return Calculate({
331
+ fields: fields,
332
+ data: entity,
333
+ defaultValue: null,
334
+ tags: tags,
335
+ type: "number"
336
+ });
234
337
  }
235
338
  Calculator.GetNumber = GetNumber;
236
339
  /**
@@ -241,68 +344,14 @@ var Calculator;
241
344
  * @param tags
242
345
  * @returns
243
346
  */
244
- function GetString(fields, entity, tags) {
245
- if (!(fields === null || fields === void 0 ? void 0 : fields.length)) {
246
- return null;
247
- }
248
- if (!tags) {
249
- tags = [];
250
- }
251
- if (!entity) {
252
- entity = {};
253
- }
254
- for (let i = 0; i < fields.length; i++) {
255
- const field = fields[i];
256
- let value;
257
- switch (field.type) {
258
- case EValueType.Gradient:
259
- {
260
- const tmp = GetGradientValue(field.value, entity);
261
- // This avoids null turning into "null".
262
- if (tmp) {
263
- value = String(tmp);
264
- }
265
- }
266
- break;
267
- case EValueType.Color:
268
- case EValueType.Input:
269
- {
270
- const tmp = GetInputValue(field.value, entity);
271
- // This avoids null turning into "null".
272
- if (tmp) {
273
- value = String(tmp);
274
- }
275
- }
276
- break;
277
- case EValueType.Mapping:
278
- {
279
- const tmp = GetMappingValue(field.value, entity);
280
- // This avoids null turning into "null".
281
- if (tmp) {
282
- value = String(tmp);
283
- }
284
- }
285
- break;
286
- case EValueType.RandomColor:
287
- // Would be nice to randomize based on an attribute or entity ID instead of pure random.
288
- var color = color_1.Color.RandomColor();
289
- value = `rgba(${color.red},${color.green},${color.blue},${color.alpha})`;
290
- break;
291
- case EValueType.TagColor:
292
- for (let i = 0; i < tags.length; i++) {
293
- const tag = tags[i];
294
- if (tag.Color) {
295
- value = tag.Color;
296
- break;
297
- }
298
- }
299
- break;
300
- }
301
- if (value) {
302
- return value;
303
- }
304
- }
305
- return null;
347
+ function GetString(fields, entity = {}, tags = []) {
348
+ return Calculate({
349
+ fields: fields,
350
+ data: entity,
351
+ defaultValue: null,
352
+ tags: tags,
353
+ type: "string"
354
+ });
306
355
  }
307
356
  Calculator.GetString = GetString;
308
357
  /**
@@ -370,9 +419,11 @@ var Calculator;
370
419
  * It is intended to be parsed and validated within a value-type context. Eg: GetColor, GetNumber, GetString.
371
420
  * @param value
372
421
  * @param entity
422
+ * @param defaultToMin if a value fails to be calculated, should we default to the minimum value?
423
+ * Default is true for backwards compatibility.
373
424
  * @returns
374
425
  */
375
- function GetGradientValue(value, entity) {
426
+ function GetGradientValue(value, entity, defaultToMin) {
376
427
  const min = +value.points[0].position;
377
428
  const max = +value.points[value.points.length - 1].position;
378
429
  const attrPaths = parseLegacyPath(value.field);
@@ -1 +1 @@
1
- {"version":3,"file":"calculator.js","sourceRoot":"","sources":["../../../src/calculator/calculator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calculator.js","sourceRoot":"","sources":["../../../src/calculator/calculator.ts"],"names":[],"mappings":"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"}
@@ -85,4 +85,4 @@ export * from "./internal/uploader";
85
85
  export * from "./plugin/plugin";
86
86
  export * from "./environment";
87
87
  export * from "./data-source/data-source";
88
- export declare const VERSION = "4.9.9";
88
+ export declare const VERSION = "5.0.0";
@@ -1,5 +1,6 @@
1
1
  import { Color } from "../common/color";
2
2
  import { Entity } from "../entity/entity";
3
+ import { EntityTag } from "../entity/entity-tag";
3
4
  /**
4
5
  * Utility for calculating values from Nextspace fields.
5
6
  * These fields are typically found in entity styles.
@@ -54,16 +55,29 @@ export declare namespace Calculator {
54
55
  value: IGradientValue | IMappingValue | string | number;
55
56
  type: EValueType;
56
57
  }
58
+ type ValueType = string | number | Color.IColor | any;
59
+ /**
60
+ * Calculates a value-type 'T' based on given set of fields.
61
+ * The supplied data + tags are fed into the calculation.
62
+ * When a value fails to be calculated, the 'defaultValue' is returned.
63
+ * If no 'defaultValue' is provided, then 'null' is returned.
64
+ */
65
+ function Calculate(params: {
66
+ type: ValueType;
67
+ fields: IField | IField[];
68
+ tags?: EntityTag.ITag[];
69
+ data?: any;
70
+ defaultValue?: ValueType | null;
71
+ }): ValueType | null;
57
72
  /**
58
73
  * Calculates the value of arbitrary field options.
59
74
  * The context calling this should validate results and parse stuff if needed.
60
- * @deprecated use specific calls: eg GetColor or GetNumber.
61
75
  * @param fields
62
76
  * @param entity
63
77
  * @param tags
64
78
  * @returns
65
79
  */
66
- function GetValue(fields: IField[], entity: Entity.IEntity, tags: any[]): string | number | Color.IColor;
80
+ function GetValue(fields: IField[], entity?: Entity.IEntity | any, tags?: EntityTag.ITag[]): string | number | Color.IColor;
67
81
  /**
68
82
  * Calculates the value of arbitrary field options with assumption that desired result is a color.
69
83
  * Will return null if a color is not found.
@@ -71,7 +85,7 @@ export declare namespace Calculator {
71
85
  * @param entity
72
86
  * @param tags
73
87
  */
74
- function GetColor(fields: IField[], entity: Entity.IEntity, tags: any[]): Color.IColor;
88
+ function GetColor(fields: IField[], entity?: Entity.IEntity | any, tags?: EntityTag.ITag[]): Color.IColor;
75
89
  /**
76
90
  * Calculates the value of arbitrary field options with assumption that desired result is a number.
77
91
  * Will return null if a number is not found.
@@ -80,7 +94,7 @@ export declare namespace Calculator {
80
94
  * @param tags
81
95
  * @returns
82
96
  */
83
- function GetNumber(fields: IField[], entity: Entity.IEntity, tags: any[]): number;
97
+ function GetNumber(fields: IField[], entity?: Entity.IEntity | any, tags?: EntityTag.ITag[]): number;
84
98
  /**
85
99
  * Calculates the value of arbitrary field options with assumption that desired result is a string.
86
100
  * Will return null if a string is not found.
@@ -89,7 +103,7 @@ export declare namespace Calculator {
89
103
  * @param tags
90
104
  * @returns
91
105
  */
92
- function GetString(fields: IField[], entity: Entity.IEntity, tags: any[]): string;
106
+ function GetString(fields: IField[], entity?: Entity.IEntity | any, tags?: EntityTag.ITag[]): string;
93
107
  /**
94
108
  * Calculates a mapping value. This can return any value type.
95
109
  * It is intended to be parsed and validated within a value-type context. Eg: GetColor, GetNumber, GetString.
@@ -103,9 +117,11 @@ export declare namespace Calculator {
103
117
  * It is intended to be parsed and validated within a value-type context. Eg: GetColor, GetNumber, GetString.
104
118
  * @param value
105
119
  * @param entity
120
+ * @param defaultToMin if a value fails to be calculated, should we default to the minimum value?
121
+ * Default is true for backwards compatibility.
106
122
  * @returns
107
123
  */
108
- function GetGradientValue(value: IGradientValue, entity: Entity.IEntity): Color.IColor;
124
+ function GetGradientValue(value: IGradientValue, entity: Entity.IEntity, defaultToMin?: boolean): Color.IColor;
109
125
  /**
110
126
  * Calculates an input value. This can return any value type.
111
127
  * It is intended to be parsed and validated within a value-type context. Eg: GetColor, GetNumber, GetString.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bruce-models",
3
- "version": "4.9.9",
3
+ "version": "5.0.0",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "main": "dist/bruce-models.umd.js",