@infomaximum/widget-sdk 7.0.0-15 → 7.0.0-17
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.
- package/CHANGELOG.md +255 -111
- package/dist/index.d.ts +17223 -15264
- package/dist/index.esm.js +189 -92
- package/dist/index.js +190 -91
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -32,6 +32,7 @@ var apiVersions = [
|
|
|
32
32
|
"16.2", // Для версии системы 250709
|
|
33
33
|
"17", // 2508
|
|
34
34
|
"18", // 2601
|
|
35
|
+
"19", // 2602
|
|
35
36
|
];
|
|
36
37
|
/**
|
|
37
38
|
* Актуальная версия settings, с которой работает система.
|
|
@@ -222,6 +223,21 @@ function memoize(fn) {
|
|
|
222
223
|
return result;
|
|
223
224
|
};
|
|
224
225
|
}
|
|
226
|
+
var clamp = function (value, min, max) {
|
|
227
|
+
if (value < min) {
|
|
228
|
+
return min;
|
|
229
|
+
}
|
|
230
|
+
if (value > max) {
|
|
231
|
+
return max;
|
|
232
|
+
}
|
|
233
|
+
return value;
|
|
234
|
+
};
|
|
235
|
+
function mapValues(obj, fn) {
|
|
236
|
+
return Object.fromEntries(Object.entries(obj).map(function (_a) {
|
|
237
|
+
var _b = __read(_a, 2), key = _b[0], value = _b[1];
|
|
238
|
+
return [key, fn(value, key)];
|
|
239
|
+
}));
|
|
240
|
+
}
|
|
225
241
|
/** Добавляет свойства к функции */
|
|
226
242
|
function assignPropsToFn(fn, props) {
|
|
227
243
|
return Object.assign(fn, props);
|
|
@@ -266,6 +282,31 @@ var VersionedSchemaFactory = /** @class */ (function () {
|
|
|
266
282
|
});
|
|
267
283
|
};
|
|
268
284
|
};
|
|
285
|
+
/**
|
|
286
|
+
* Оборачивает фабрику схемы, добавляя кеширование результата.
|
|
287
|
+
*
|
|
288
|
+
* Предполагается, что `z` — синглтон (один экземпляр на всё приложение),
|
|
289
|
+
* поэтому достаточно закешировать единственный результат.
|
|
290
|
+
*
|
|
291
|
+
* Вызовы с дополнительными аргументами (restArgs) не кешируются,
|
|
292
|
+
* так как результат может зависеть от их значений.
|
|
293
|
+
*/
|
|
294
|
+
VersionedSchemaFactory.withCache = function (schemaFactory) {
|
|
295
|
+
var cached;
|
|
296
|
+
return (function (z) {
|
|
297
|
+
var restArgs = [];
|
|
298
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
299
|
+
restArgs[_i - 1] = arguments[_i];
|
|
300
|
+
}
|
|
301
|
+
if (restArgs.length > 0) {
|
|
302
|
+
return schemaFactory.apply(void 0, __spreadArray([z], __read(restArgs), false));
|
|
303
|
+
}
|
|
304
|
+
if (cached === undefined) {
|
|
305
|
+
cached = schemaFactory(z);
|
|
306
|
+
}
|
|
307
|
+
return cached;
|
|
308
|
+
});
|
|
309
|
+
};
|
|
269
310
|
/** Построить версионированную схему */
|
|
270
311
|
VersionedSchemaFactory.build = function (_a) {
|
|
271
312
|
var _this = this;
|
|
@@ -274,20 +315,23 @@ var VersionedSchemaFactory = /** @class */ (function () {
|
|
|
274
315
|
if (!latestFactory) {
|
|
275
316
|
throw new Error("Не найдено записи в 'history' по 'latestVersion'");
|
|
276
317
|
}
|
|
277
|
-
var
|
|
278
|
-
var
|
|
318
|
+
var annotate = this.annotateSchema(meta);
|
|
319
|
+
var preparedHistory = mapValues(history, function (factory) {
|
|
320
|
+
return _this.withCache(annotate(factory));
|
|
321
|
+
});
|
|
322
|
+
var schema = assignPropsToFn(preparedHistory[latestVersion], {
|
|
279
323
|
forVersion: function (targetVersion) {
|
|
280
324
|
if (targetVersion === null || targetVersion === undefined) {
|
|
281
|
-
return
|
|
325
|
+
return preparedHistory[latestVersion];
|
|
282
326
|
}
|
|
283
|
-
if (targetVersion in
|
|
284
|
-
return
|
|
327
|
+
if (targetVersion in preparedHistory) {
|
|
328
|
+
return preparedHistory[targetVersion];
|
|
285
329
|
}
|
|
286
|
-
var closestVersion = _this.findClosestVersion(Object.keys(
|
|
287
|
-
if (closestVersion === undefined || !(closestVersion in
|
|
330
|
+
var closestVersion = _this.findClosestVersion(Object.keys(preparedHistory), targetVersion, VersionedSchemaFactory.compareVersions);
|
|
331
|
+
if (closestVersion === undefined || !(closestVersion in preparedHistory)) {
|
|
288
332
|
throw new Error("\u041D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043F\u043E\u0434\u0445\u043E\u0434\u044F\u0449\u0435\u0439 \u0441\u0445\u0435\u043C\u044B \u0434\u043B\u044F \u0432\u0435\u0440\u0441\u0438\u0438 '".concat(targetVersion, "'"));
|
|
289
333
|
}
|
|
290
|
-
return
|
|
334
|
+
return preparedHistory[closestVersion];
|
|
291
335
|
},
|
|
292
336
|
});
|
|
293
337
|
return schema;
|
|
@@ -377,9 +421,9 @@ var AutoIdentifiedArrayItemSchema = SchemaRegistry.define({
|
|
|
377
421
|
});
|
|
378
422
|
var BaseWidgetSettingsSchema = SchemaRegistry.define({
|
|
379
423
|
key: "BaseWidgetSettings",
|
|
380
|
-
latestVersion: "
|
|
381
|
-
history
|
|
382
|
-
|
|
424
|
+
latestVersion: "19",
|
|
425
|
+
get history() {
|
|
426
|
+
var v17 = function (z) {
|
|
383
427
|
return z.object({
|
|
384
428
|
title: z.string().default(""),
|
|
385
429
|
titleSize: themed(z.number().default(14), function (theme) { return theme.widgets.titleSize; }),
|
|
@@ -395,10 +439,14 @@ var BaseWidgetSettingsSchema = SchemaRegistry.define({
|
|
|
395
439
|
ignoreFilters: z.boolean().default(false),
|
|
396
440
|
sorting: z.array(WidgetSortingIndicatorSchema.forVersion("17")(z)).default([]),
|
|
397
441
|
actionButtons: z.array(ActionButtonSchema.forVersion("17")(z)).default([]),
|
|
398
|
-
paddings:
|
|
442
|
+
paddings: z.union([z.number(), z.string()]).default(8),
|
|
399
443
|
viewTheme: z.boolean().default(false),
|
|
400
444
|
});
|
|
401
|
-
}
|
|
445
|
+
};
|
|
446
|
+
return {
|
|
447
|
+
"17": v17,
|
|
448
|
+
"19": function (z) { return v17(z).omit({ paddings: true }); },
|
|
449
|
+
};
|
|
402
450
|
},
|
|
403
451
|
});
|
|
404
452
|
|
|
@@ -2834,7 +2882,7 @@ exports.ESortDirection = void 0;
|
|
|
2834
2882
|
* Если к разрезу иерархии применяется INCLUDE-фильтр с несколькими значениями - выбираем данный разрез
|
|
2835
2883
|
*/
|
|
2836
2884
|
function selectDimensionFromHierarchy(hierarchy, filters) {
|
|
2837
|
-
var hierarchyDimensions = hierarchy.hierarchyDimensions;
|
|
2885
|
+
var hierarchyDimensions = hierarchy.hierarchyDimensions;
|
|
2838
2886
|
var _loop_1 = function (i) {
|
|
2839
2887
|
var dimension = hierarchyDimensions[i];
|
|
2840
2888
|
// todo: widgets - возможно, стоит использовать Map фильтров для быстрого поиска
|
|
@@ -3147,6 +3195,39 @@ var replaceFiltersBySelection = function (filters, selection) {
|
|
|
3147
3195
|
}, []);
|
|
3148
3196
|
};
|
|
3149
3197
|
|
|
3198
|
+
var colors = [
|
|
3199
|
+
"#222F3E",
|
|
3200
|
+
"#00D2D3",
|
|
3201
|
+
"#5F27CD",
|
|
3202
|
+
"#FECA57",
|
|
3203
|
+
"#078936",
|
|
3204
|
+
"#E51320",
|
|
3205
|
+
"#96AABF",
|
|
3206
|
+
"#1C55E7",
|
|
3207
|
+
"#341F97",
|
|
3208
|
+
"#FFDD59",
|
|
3209
|
+
"#D82C46",
|
|
3210
|
+
"#0BE881",
|
|
3211
|
+
"#0ABDE3",
|
|
3212
|
+
"#FF9F43",
|
|
3213
|
+
"#EC41D4",
|
|
3214
|
+
"#117F8E",
|
|
3215
|
+
"#B9B9B9",
|
|
3216
|
+
"#505BF1",
|
|
3217
|
+
"#64FFB6",
|
|
3218
|
+
"#485460",
|
|
3219
|
+
"#FFD32A",
|
|
3220
|
+
"#C74E1A",
|
|
3221
|
+
"#6E70A6",
|
|
3222
|
+
"#3C40C6",
|
|
3223
|
+
"#48DBFB",
|
|
3224
|
+
"#486179",
|
|
3225
|
+
"#FF9FF3",
|
|
3226
|
+
"#1DD1A1",
|
|
3227
|
+
"#BCC8D4",
|
|
3228
|
+
"#BA46AA",
|
|
3229
|
+
];
|
|
3230
|
+
|
|
3150
3231
|
exports.EColorMode = void 0;
|
|
3151
3232
|
(function (EColorMode) {
|
|
3152
3233
|
/** Окрашивание отключено */
|
|
@@ -3166,6 +3247,7 @@ exports.EColorMode = void 0;
|
|
|
3166
3247
|
/** Задать цвет конкретным значениям общего разреза. Режим используется только для настроек правила отображения */
|
|
3167
3248
|
EColorMode["BY_DIMENSION"] = "BY_DIMENSION";
|
|
3168
3249
|
})(exports.EColorMode || (exports.EColorMode = {}));
|
|
3250
|
+
|
|
3169
3251
|
var getRuleColor = function (ruleFormula, globalContext) {
|
|
3170
3252
|
var _a, _b;
|
|
3171
3253
|
var link = parseIndicatorLink(ruleFormula);
|
|
@@ -3187,38 +3269,6 @@ var isValidColor = function (color, globalContext) {
|
|
|
3187
3269
|
}
|
|
3188
3270
|
return true;
|
|
3189
3271
|
};
|
|
3190
|
-
var colors = [
|
|
3191
|
-
"#222F3E",
|
|
3192
|
-
"#00D2D3",
|
|
3193
|
-
"#5F27CD",
|
|
3194
|
-
"#FECA57",
|
|
3195
|
-
"#078936",
|
|
3196
|
-
"#E51320",
|
|
3197
|
-
"#96AABF",
|
|
3198
|
-
"#1C55E7",
|
|
3199
|
-
"#341F97",
|
|
3200
|
-
"#FFDD59",
|
|
3201
|
-
"#D82C46",
|
|
3202
|
-
"#0BE881",
|
|
3203
|
-
"#0ABDE3",
|
|
3204
|
-
"#FF9F43",
|
|
3205
|
-
"#EC41D4",
|
|
3206
|
-
"#117F8E",
|
|
3207
|
-
"#B9B9B9",
|
|
3208
|
-
"#505BF1",
|
|
3209
|
-
"#64FFB6",
|
|
3210
|
-
"#485460",
|
|
3211
|
-
"#FFD32A",
|
|
3212
|
-
"#C74E1A",
|
|
3213
|
-
"#6E70A6",
|
|
3214
|
-
"#3C40C6",
|
|
3215
|
-
"#48DBFB",
|
|
3216
|
-
"#486179",
|
|
3217
|
-
"#FF9FF3",
|
|
3218
|
-
"#1DD1A1",
|
|
3219
|
-
"#BCC8D4",
|
|
3220
|
-
"#BA46AA",
|
|
3221
|
-
];
|
|
3222
3272
|
/**
|
|
3223
3273
|
* Получить цвет по индексу элемента
|
|
3224
3274
|
* @param index - индекс элемента, которому требуется цвет
|
|
@@ -3233,51 +3283,6 @@ var getColorByIndex = function (index) {
|
|
|
3233
3283
|
return color;
|
|
3234
3284
|
};
|
|
3235
3285
|
|
|
3236
|
-
var WidgetPresetSettingsSchema = SchemaRegistry.define({
|
|
3237
|
-
key: "WidgetPresetSettings",
|
|
3238
|
-
latestVersion: "17",
|
|
3239
|
-
history: {
|
|
3240
|
-
"17": function (z) {
|
|
3241
|
-
return BaseWidgetSettingsSchema.forVersion("17")(z)
|
|
3242
|
-
.pick({
|
|
3243
|
-
filterMode: true,
|
|
3244
|
-
ignoreFilters: true,
|
|
3245
|
-
stateName: true,
|
|
3246
|
-
titleColor: true,
|
|
3247
|
-
titleSize: true,
|
|
3248
|
-
titleWeight: true,
|
|
3249
|
-
paddings: true,
|
|
3250
|
-
})
|
|
3251
|
-
.extend({
|
|
3252
|
-
textSize: z.number().default(12),
|
|
3253
|
-
});
|
|
3254
|
-
},
|
|
3255
|
-
},
|
|
3256
|
-
});
|
|
3257
|
-
|
|
3258
|
-
/**
|
|
3259
|
-
* Привязывает мета-информацию о теме к Zod-схеме
|
|
3260
|
-
*
|
|
3261
|
-
* @template Value - Тип значения схемы
|
|
3262
|
-
* @template Theme - Тип темы (по умолчанию ITheme)
|
|
3263
|
-
*
|
|
3264
|
-
* @param scheme - Zod схема для привязки
|
|
3265
|
-
* @param selectThemeValue - Функция, возвращающая значение из темы
|
|
3266
|
-
*
|
|
3267
|
-
* @returns Zod схему с мета-информацией о теме
|
|
3268
|
-
*
|
|
3269
|
-
* @example
|
|
3270
|
-
* // Базовое использование
|
|
3271
|
-
* textSize: themed(
|
|
3272
|
-
* z.number().default(12),
|
|
3273
|
-
* (theme) => theme.textSize
|
|
3274
|
-
* )
|
|
3275
|
-
*/
|
|
3276
|
-
var themed = function (scheme, selectThemeValue) {
|
|
3277
|
-
var _a;
|
|
3278
|
-
return scheme.meta((_a = {}, _a[exports.ESettingsSchemaMetaKey.themeValue] = selectThemeValue, _a));
|
|
3279
|
-
};
|
|
3280
|
-
|
|
3281
3286
|
var ColorBaseSchema = SchemaRegistry.define({
|
|
3282
3287
|
key: "ColorBase",
|
|
3283
3288
|
latestVersion: "17",
|
|
@@ -3425,6 +3430,98 @@ var ColorSchema = SchemaRegistry.define({
|
|
|
3425
3430
|
},
|
|
3426
3431
|
});
|
|
3427
3432
|
|
|
3433
|
+
var hexToRgb = function (hex) {
|
|
3434
|
+
if (hex.length === 0) {
|
|
3435
|
+
return;
|
|
3436
|
+
}
|
|
3437
|
+
var rgbTuple = [0, 0, 0];
|
|
3438
|
+
var matchArray = hex
|
|
3439
|
+
.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, function (m, r, g, b) { return "#".concat(r).concat(r).concat(g).concat(g).concat(b).concat(b); })
|
|
3440
|
+
.substring(1)
|
|
3441
|
+
.match(/.{2}/g);
|
|
3442
|
+
matchArray === null || matchArray === void 0 ? void 0 : matchArray.forEach(function (value, index) {
|
|
3443
|
+
if (index > 2) {
|
|
3444
|
+
return undefined;
|
|
3445
|
+
}
|
|
3446
|
+
rgbTuple[index] = parseInt(value, 16);
|
|
3447
|
+
});
|
|
3448
|
+
return rgbTuple;
|
|
3449
|
+
};
|
|
3450
|
+
|
|
3451
|
+
var rgbToHex = function (rgb) {
|
|
3452
|
+
return "#".concat(rgb.map(function (x) { return x.toString(16).padStart(2, "0"); }).join(""));
|
|
3453
|
+
};
|
|
3454
|
+
|
|
3455
|
+
var lerp = function (a, b, t) { return a + (b - a) * t; };
|
|
3456
|
+
/**
|
|
3457
|
+
* Вычисляет промежуточный hex цвет между двумя цветами путем линейной интерполяции
|
|
3458
|
+
* в RGB пространстве
|
|
3459
|
+
*
|
|
3460
|
+
* @param startHex цвет начала
|
|
3461
|
+
* @param endHex цвет конца
|
|
3462
|
+
* @param position позиция на градиенте от 0 до 1
|
|
3463
|
+
*/
|
|
3464
|
+
var interpolateHexColor = function (startHex, endHex, position) {
|
|
3465
|
+
var clampedPosition = clamp(position, 0, 1);
|
|
3466
|
+
var startRgb = hexToRgb(startHex);
|
|
3467
|
+
var endRgb = hexToRgb(endHex);
|
|
3468
|
+
if (!startRgb || !endRgb) {
|
|
3469
|
+
throw new Error("\u041D\u0435\u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u044B\u0435 \u0446\u0432\u0435\u0442\u0430: start: ".concat(startHex, ", end: ").concat(endHex));
|
|
3470
|
+
}
|
|
3471
|
+
var interpolated = [
|
|
3472
|
+
Math.round(lerp(startRgb[0], endRgb[0], clampedPosition)),
|
|
3473
|
+
Math.round(lerp(startRgb[1], endRgb[1], clampedPosition)),
|
|
3474
|
+
Math.round(lerp(startRgb[2], endRgb[2], clampedPosition)),
|
|
3475
|
+
];
|
|
3476
|
+
return rgbToHex(interpolated);
|
|
3477
|
+
};
|
|
3478
|
+
|
|
3479
|
+
/** @deprecated временно используется для миграции */
|
|
3480
|
+
var WidgetPresetSettingsSchema = SchemaRegistry.define({
|
|
3481
|
+
key: "WidgetPresetSettings",
|
|
3482
|
+
latestVersion: "17",
|
|
3483
|
+
history: {
|
|
3484
|
+
"17": function (z) {
|
|
3485
|
+
return BaseWidgetSettingsSchema.forVersion("17")(z)
|
|
3486
|
+
.pick({
|
|
3487
|
+
filterMode: true,
|
|
3488
|
+
ignoreFilters: true,
|
|
3489
|
+
stateName: true,
|
|
3490
|
+
titleColor: true,
|
|
3491
|
+
titleSize: true,
|
|
3492
|
+
titleWeight: true,
|
|
3493
|
+
paddings: true,
|
|
3494
|
+
})
|
|
3495
|
+
.extend({
|
|
3496
|
+
textSize: z.number().default(12),
|
|
3497
|
+
});
|
|
3498
|
+
},
|
|
3499
|
+
},
|
|
3500
|
+
});
|
|
3501
|
+
|
|
3502
|
+
/**
|
|
3503
|
+
* Привязывает мета-информацию о теме к Zod-схеме
|
|
3504
|
+
*
|
|
3505
|
+
* @template Value - Тип значения схемы
|
|
3506
|
+
* @template Theme - Тип темы (по умолчанию ITheme)
|
|
3507
|
+
*
|
|
3508
|
+
* @param scheme - Zod схема для привязки
|
|
3509
|
+
* @param selectThemeValue - Функция, возвращающая значение из темы
|
|
3510
|
+
*
|
|
3511
|
+
* @returns Zod схему с мета-информацией о теме
|
|
3512
|
+
*
|
|
3513
|
+
* @example
|
|
3514
|
+
* // Базовое использование
|
|
3515
|
+
* textSize: themed(
|
|
3516
|
+
* z.number().default(12),
|
|
3517
|
+
* (theme) => theme.textSize
|
|
3518
|
+
* )
|
|
3519
|
+
*/
|
|
3520
|
+
var themed = function (scheme, selectThemeValue) {
|
|
3521
|
+
var _a;
|
|
3522
|
+
return scheme.meta((_a = {}, _a[exports.ESettingsSchemaMetaKey.themeValue] = selectThemeValue, _a));
|
|
3523
|
+
};
|
|
3524
|
+
|
|
3428
3525
|
Object.defineProperty(exports, "ELanguages", {
|
|
3429
3526
|
enumerable: true,
|
|
3430
3527
|
get: function () { return localization.ELanguages; }
|
|
@@ -3559,7 +3656,9 @@ exports.getMeasureFormula = getMeasureFormula;
|
|
|
3559
3656
|
exports.getProcessDimensionValueFormula = getProcessDimensionValueFormula;
|
|
3560
3657
|
exports.getRuleColor = getRuleColor;
|
|
3561
3658
|
exports.getTransitionMeasureFormula = getTransitionMeasureFormula;
|
|
3659
|
+
exports.hexToRgb = hexToRgb;
|
|
3562
3660
|
exports.inheritDisplayConditionFromHierarchy = inheritDisplayConditionFromHierarchy;
|
|
3661
|
+
exports.interpolateHexColor = interpolateHexColor;
|
|
3563
3662
|
exports.isDimensionProcessFilter = isDimensionProcessFilter;
|
|
3564
3663
|
exports.isDimensionsHierarchy = isDimensionsHierarchy;
|
|
3565
3664
|
exports.isFormulaFilterValue = isFormulaFilterValue;
|