@snabcentr/client-ui 4.16.9 → 4.16.10-profstroy

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 (64) hide show
  1. package/alerts/confirm-alert/sc-confirm-alert.component.d.ts +22 -0
  2. package/alerts/index.d.ts +1 -0
  3. package/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.d.ts +1 -1
  4. package/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.d.ts +3 -3
  5. package/catalog/input-quantity/sc-input-quantity.component.d.ts +17 -1
  6. package/esm2022/alerts/confirm-alert/sc-confirm-alert.component.mjs +29 -0
  7. package/esm2022/alerts/index.mjs +2 -0
  8. package/esm2022/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.mjs +4 -3
  9. package/esm2022/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.mjs +5 -16
  10. package/esm2022/catalog/input-quantity/sc-input-quantity.component.mjs +24 -4
  11. package/esm2022/helpers/sc-api-error-helper.mjs +25 -0
  12. package/esm2022/helpers/sc-file-helper.mjs +29 -0
  13. package/esm2022/order/draft/helpers/sc-draft-list-helper.mjs +83 -0
  14. package/esm2022/order/draft/models/sc-i-draft-list-item.mjs +2 -0
  15. package/esm2022/order/draft/profstroy/actualization-panel/sc-profstroy-actualization-panel.component.mjs +73 -0
  16. package/esm2022/order/draft/profstroy/badge/sc-profstroy-badge.component.mjs +21 -0
  17. package/esm2022/order/draft/profstroy/badges/sc-profstroy-draft-badges.component.mjs +31 -0
  18. package/esm2022/order/draft/profstroy/create-dialog/sc-profstroy-draft-create-dialog.component.mjs +139 -0
  19. package/esm2022/order/draft/profstroy/enums/sc-profstroy-draft-state.mjs +32 -0
  20. package/esm2022/order/draft/profstroy/helpers/sc-profstroy-draft-helper.mjs +94 -0
  21. package/esm2022/order/draft/profstroy/index.mjs +8 -0
  22. package/esm2022/order/draft/profstroy/models/sc-i-profstroy-draft-state-view.mjs +2 -0
  23. package/esm2022/order/draft/sc-draft.component.mjs +148 -14
  24. package/esm2022/order/draft/services/sc-draft-expiration-clock.service.mjs +42 -0
  25. package/esm2022/order/draft/services/sc-draft-list-updates.service.mjs +288 -0
  26. package/esm2022/order/index.mjs +6 -1
  27. package/esm2022/order/new-order-items/sc-new-order-items.component.mjs +11 -3
  28. package/esm2022/order/order-form/sc-order-form.component.mjs +4 -2
  29. package/esm2022/order/order-item/sc-order-item.component.mjs +37 -5
  30. package/esm2022/order/order-items-list/sc-order-items-list.component.mjs +180 -47
  31. package/esm2022/order/order-items-list-by-stock/sc-order-items-list-by-stock.component.mjs +1 -1
  32. package/esm2022/order/order-items-list-with-actions/sc-order-items-list-with-actions.component.mjs +15 -3
  33. package/esm2022/pipes/sc-format-date.mjs +1 -1
  34. package/esm2022/providers/sc-date-formatter.mjs +1 -1
  35. package/esm2022/public-api.mjs +2 -1
  36. package/fesm2022/snabcentr-client-ui.mjs +1273 -122
  37. package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
  38. package/helpers/sc-api-error-helper.d.ts +18 -0
  39. package/helpers/sc-file-helper.d.ts +13 -0
  40. package/order/draft/helpers/sc-draft-list-helper.d.ts +51 -0
  41. package/order/draft/models/sc-i-draft-list-item.d.ts +14 -0
  42. package/order/draft/profstroy/actualization-panel/sc-profstroy-actualization-panel.component.d.ts +58 -0
  43. package/order/draft/profstroy/badge/sc-profstroy-badge.component.d.ts +12 -0
  44. package/order/draft/profstroy/badges/sc-profstroy-draft-badges.component.d.ts +21 -0
  45. package/order/draft/profstroy/create-dialog/sc-profstroy-draft-create-dialog.component.d.ts +65 -0
  46. package/order/draft/profstroy/enums/sc-profstroy-draft-state.d.ts +29 -0
  47. package/order/draft/profstroy/helpers/sc-profstroy-draft-helper.d.ts +33 -0
  48. package/order/draft/profstroy/index.d.ts +7 -0
  49. package/order/draft/profstroy/models/sc-i-profstroy-draft-state-view.d.ts +17 -0
  50. package/order/draft/sc-draft.component.d.ts +73 -1
  51. package/order/draft/services/sc-draft-expiration-clock.service.d.ts +29 -0
  52. package/order/draft/services/sc-draft-list-updates.service.d.ts +158 -0
  53. package/order/index.d.ts +5 -0
  54. package/order/new-order-items/sc-new-order-items.component.d.ts +9 -1
  55. package/order/order-form/sc-order-form.component.d.ts +1 -0
  56. package/order/order-item/sc-order-item.component.d.ts +25 -1
  57. package/order/order-items-list/sc-order-items-list.component.d.ts +87 -9
  58. package/order/order-items-list-with-actions/sc-order-items-list-with-actions.component.d.ts +13 -1
  59. package/package.json +2 -2
  60. package/pipes/sc-format-date.d.ts +1 -1
  61. package/providers/sc-date-formatter.d.ts +1 -1
  62. package/public-api.d.ts +1 -0
  63. package/release_notes.tmp +1 -1
  64. package/styles/tailwind/tailwind.scss +41 -0
@@ -0,0 +1,83 @@
1
+ import { ScOrderDraft } from '@snabcentr/client-core';
2
+ /**
3
+ * Класс-помощник для работы со списком черновиков.
4
+ */
5
+ export class ScDraftListHelper {
6
+ /**
7
+ * Возвращает признак, что состав страницы не изменился: то же общее количество черновиков и те же черновики в том же порядке.
8
+ *
9
+ * @param items Текущие элементы списка.
10
+ * @param total Текущее общее количество черновиков.
11
+ * @param drafts Черновики полученной страницы.
12
+ * @param receivedTotal Общее количество черновиков в полученных данных.
13
+ */
14
+ static isSamePage(items, total, drafts, receivedTotal) {
15
+ return total === receivedTotal && items.length === drafts.length && drafts.every((draft, index) => draft.id === items.at(index)?.order.id);
16
+ }
17
+ /**
18
+ * Возвращает подпись состава страницы: общее количество черновиков и номера черновиков страницы по порядку.
19
+ *
20
+ * @param page Страница списка.
21
+ */
22
+ static getSignature(page) {
23
+ return `${page.meta.total}:${page.data.map(({ id }) => id).join(',')}`;
24
+ }
25
+ /**
26
+ * Возвращает элементы новой страницы списка. Черновики, которые уже есть в списке, сохраняют раскрытие и полные данные.
27
+ *
28
+ * @param items Текущие элементы списка.
29
+ * @param drafts Черновики новой страницы.
30
+ */
31
+ static fromPage(items, drafts) {
32
+ return drafts.map((short) => {
33
+ const item = items.find(({ order }) => order.id === short.id);
34
+ return item ? ScDraftListHelper.update(item, short) : { order: short, isExpanded: false };
35
+ });
36
+ }
37
+ /**
38
+ * Возвращает список с обновлёнными краткими данными полученных черновиков, состав и порядок списка не меняются.
39
+ * Полные данные раскрытых черновиков не меняются: их обновляет кэш черновика.
40
+ *
41
+ * @param items Текущие элементы списка.
42
+ * @param drafts Полученные краткие данные черновиков.
43
+ */
44
+ static merge(items, drafts) {
45
+ return items.map((item) => {
46
+ const short = drafts.find(({ id }) => id === item.order.id);
47
+ return short ? ScDraftListHelper.update(item, short) : item;
48
+ });
49
+ }
50
+ /**
51
+ * Возвращает номера черновиков с полными данными, у которых краткие данные отличаются: название или данные актуализации.
52
+ *
53
+ * @param items Текущие элементы списка.
54
+ * @param drafts Полученные краткие данные черновиков.
55
+ */
56
+ static getChangedFullDraftIds(items, drafts) {
57
+ return items
58
+ .filter(({ order }) => order instanceof ScOrderDraft)
59
+ .filter(({ order }) => {
60
+ const short = drafts.find(({ id }) => id === order.id);
61
+ if (!short) {
62
+ return false;
63
+ }
64
+ const isSameActualization = short.actualization ? short.actualization.isSameAs(order.actualization) : order.actualization === undefined;
65
+ return short.name !== order.name || !isSameActualization;
66
+ })
67
+ .map(({ order }) => order.id);
68
+ }
69
+ /**
70
+ * Обновляет элемент списка краткими данными черновика. Полные данные черновика не заменяются.
71
+ *
72
+ * @param item Элемент списка.
73
+ * @param short Краткие данные черновика.
74
+ */
75
+ static update(item, short) {
76
+ if (!(item.order instanceof ScOrderDraft)) {
77
+ // eslint-disable-next-line no-param-reassign
78
+ item.order = short;
79
+ }
80
+ return item;
81
+ }
82
+ }
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZHJhZnQtbGlzdC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvb3JkZXIvZHJhZnQvaGVscGVycy9zYy1kcmFmdC1saXN0LWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsWUFBWSxFQUFxQixNQUFNLHdCQUF3QixDQUFDO0FBSXRGOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQUMxQjs7Ozs7OztPQU9HO0lBQ0ksTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUF5QixFQUFFLEtBQWEsRUFBRSxNQUEyQixFQUFFLGFBQXFCO1FBQ2pILE9BQU8sS0FBSyxLQUFLLGFBQWEsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0ksQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLElBQW9DO1FBQzNELE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQzNFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBeUIsRUFBRSxNQUEyQjtRQUN6RSxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN4QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFOUQsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDOUYsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUF5QixFQUFFLE1BQTJCO1FBQ3RFLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3RCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUU1RCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2hFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLHNCQUFzQixDQUFDLEtBQXlCLEVBQUUsTUFBMkI7UUFDdkYsT0FBTyxLQUFLO2FBQ1AsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxZQUFZLFlBQVksQ0FBQzthQUNwRCxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDbEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFdkQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNULE9BQU8sS0FBSyxDQUFDO1lBQ2pCLENBQUM7WUFFRCxNQUFNLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWEsS0FBSyxTQUFTLENBQUM7WUFFeEksT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQUM3RCxDQUFDLENBQUM7YUFDRCxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFzQixFQUFFLEtBQXdCO1FBQ2xFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLFlBQVksWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUN4Qyw2Q0FBNkM7WUFDN0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjSVBhZ2luYXRlLCBTY09yZGVyRHJhZnQsIFNjT3JkZXJEcmFmdFNob3J0IH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5cbmltcG9ydCB7IFNjSURyYWZ0TGlzdEl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvc2MtaS1kcmFmdC1saXN0LWl0ZW0nO1xuXG4vKipcbiAqINCa0LvQsNGB0YEt0L/QvtC80L7RidC90LjQuiDQtNC70Y8g0YDQsNCx0L7RgtGLINGB0L4g0YHQv9C40YHQutC+0Lwg0YfQtdGA0L3QvtCy0LjQutC+0LIuXG4gKi9cbmV4cG9ydCBjbGFzcyBTY0RyYWZ0TGlzdEhlbHBlciB7XG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L/RgNC40LfQvdCw0LosINGH0YLQviDRgdC+0YHRgtCw0LIg0YHRgtGA0LDQvdC40YbRiyDQvdC1INC40LfQvNC10L3QuNC70YHRjzog0YLQviDQttC1INC+0LHRidC10LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YfQtdGA0L3QvtCy0LjQutC+0LIg0Lgg0YLQtSDQttC1INGH0LXRgNC90L7QstC40LrQuCDQsiDRgtC+0Lwg0LbQtSDQv9C+0YDRj9C00LrQtS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpdGVtcyDQotC10LrRg9GJ0LjQtSDRjdC70LXQvNC10L3RgtGLINGB0L/QuNGB0LrQsC5cbiAgICAgKiBAcGFyYW0gdG90YWwg0KLQtdC60YPRidC10LUg0L7QsdGJ0LXQtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRh9C10YDQvdC+0LLQuNC60L7Qsi5cbiAgICAgKiBAcGFyYW0gZHJhZnRzINCn0LXRgNC90L7QstC40LrQuCDQv9C+0LvRg9GH0LXQvdC90L7QuSDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqIEBwYXJhbSByZWNlaXZlZFRvdGFsINCe0LHRidC10LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YfQtdGA0L3QvtCy0LjQutC+0LIg0LIg0L/QvtC70YPRh9C10L3QvdGL0YUg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgaXNTYW1lUGFnZShpdGVtczogU2NJRHJhZnRMaXN0SXRlbVtdLCB0b3RhbDogbnVtYmVyLCBkcmFmdHM6IFNjT3JkZXJEcmFmdFNob3J0W10sIHJlY2VpdmVkVG90YWw6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdG90YWwgPT09IHJlY2VpdmVkVG90YWwgJiYgaXRlbXMubGVuZ3RoID09PSBkcmFmdHMubGVuZ3RoICYmIGRyYWZ0cy5ldmVyeSgoZHJhZnQsIGluZGV4KSA9PiBkcmFmdC5pZCA9PT0gaXRlbXMuYXQoaW5kZXgpPy5vcmRlci5pZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L/QvtC00L/QuNGB0Ywg0YHQvtGB0YLQsNCy0LAg0YHRgtGA0LDQvdC40YbRizog0L7QsdGJ0LXQtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRh9C10YDQvdC+0LLQuNC60L7QsiDQuCDQvdC+0LzQtdGA0LAg0YfQtdGA0L3QvtCy0LjQutC+0LIg0YHRgtGA0LDQvdC40YbRiyDQv9C+INC/0L7RgNGP0LTQutGDLlxuICAgICAqXG4gICAgICogQHBhcmFtIHBhZ2Ug0KHRgtGA0LDQvdC40YbQsCDRgdC/0LjRgdC60LAuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXRTaWduYXR1cmUocGFnZTogU2NJUGFnaW5hdGU8U2NPcmRlckRyYWZ0U2hvcnQ+KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3BhZ2UubWV0YS50b3RhbH06JHtwYWdlLmRhdGEubWFwKCh7IGlkIH0pID0+IGlkKS5qb2luKCcsJyl9YDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRjdC70LXQvNC10L3RgtGLINC90L7QstC+0Lkg0YHRgtGA0LDQvdC40YbRiyDRgdC/0LjRgdC60LAuINCn0LXRgNC90L7QstC40LrQuCwg0LrQvtGC0L7RgNGL0LUg0YPQttC1INC10YHRgtGMINCyINGB0L/QuNGB0LrQtSwg0YHQvtGF0YDQsNC90Y/RjtGCINGA0LDRgdC60YDRi9GC0LjQtSDQuCDQv9C+0LvQvdGL0LUg0LTQsNC90L3Ri9C1LlxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW1zINCi0LXQutGD0YnQuNC1INGN0LvQtdC80LXQvdGC0Ysg0YHQv9C40YHQutCwLlxuICAgICAqIEBwYXJhbSBkcmFmdHMg0KfQtdGA0L3QvtCy0LjQutC4INC90L7QstC+0Lkg0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGZyb21QYWdlKGl0ZW1zOiBTY0lEcmFmdExpc3RJdGVtW10sIGRyYWZ0czogU2NPcmRlckRyYWZ0U2hvcnRbXSk6IFNjSURyYWZ0TGlzdEl0ZW1bXSB7XG4gICAgICAgIHJldHVybiBkcmFmdHMubWFwKChzaG9ydCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zLmZpbmQoKHsgb3JkZXIgfSkgPT4gb3JkZXIuaWQgPT09IHNob3J0LmlkKTtcblxuICAgICAgICAgICAgcmV0dXJuIGl0ZW0gPyBTY0RyYWZ0TGlzdEhlbHBlci51cGRhdGUoaXRlbSwgc2hvcnQpIDogeyBvcmRlcjogc2hvcnQsIGlzRXhwYW5kZWQ6IGZhbHNlIH07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L/QuNGB0L7QuiDRgSDQvtCx0L3QvtCy0LvRkdC90L3Ri9C80Lgg0LrRgNCw0YLQutC40LzQuCDQtNCw0L3QvdGL0LzQuCDQv9C+0LvRg9GH0LXQvdC90YvRhSDRh9C10YDQvdC+0LLQuNC60L7Qsiwg0YHQvtGB0YLQsNCyINC4INC/0L7RgNGP0LTQvtC6INGB0L/QuNGB0LrQsCDQvdC1INC80LXQvdGP0Y7RgtGB0Y8uXG4gICAgICog0J/QvtC70L3Ri9C1INC00LDQvdC90YvQtSDRgNCw0YHQutGA0YvRgtGL0YUg0YfQtdGA0L3QvtCy0LjQutC+0LIg0L3QtSDQvNC10L3Rj9GO0YLRgdGPOiDQuNGFINC+0LHQvdC+0LLQu9GP0LXRgiDQutGN0Ygg0YfQtdGA0L3QvtCy0LjQutCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW1zINCi0LXQutGD0YnQuNC1INGN0LvQtdC80LXQvdGC0Ysg0YHQv9C40YHQutCwLlxuICAgICAqIEBwYXJhbSBkcmFmdHMg0J/QvtC70YPRh9C10L3QvdGL0LUg0LrRgNCw0YLQutC40LUg0LTQsNC90L3Ri9C1INGH0LXRgNC90L7QstC40LrQvtCyLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgbWVyZ2UoaXRlbXM6IFNjSURyYWZ0TGlzdEl0ZW1bXSwgZHJhZnRzOiBTY09yZGVyRHJhZnRTaG9ydFtdKTogU2NJRHJhZnRMaXN0SXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2hvcnQgPSBkcmFmdHMuZmluZCgoeyBpZCB9KSA9PiBpZCA9PT0gaXRlbS5vcmRlci5pZCk7XG5cbiAgICAgICAgICAgIHJldHVybiBzaG9ydCA/IFNjRHJhZnRMaXN0SGVscGVyLnVwZGF0ZShpdGVtLCBzaG9ydCkgOiBpdGVtO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQvdC+0LzQtdGA0LAg0YfQtdGA0L3QvtCy0LjQutC+0LIg0YEg0L/QvtC70L3Ri9C80Lgg0LTQsNC90L3Ri9C80LgsINGDINC60L7RgtC+0YDRi9GFINC60YDQsNGC0LrQuNC1INC00LDQvdC90YvQtSDQvtGC0LvQuNGH0LDRjtGC0YHRjzog0L3QsNC30LLQsNC90LjQtSDQuNC70Lgg0LTQsNC90L3Ri9C1INCw0LrRgtGD0LDQu9C40LfQsNGG0LjQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpdGVtcyDQotC10LrRg9GJ0LjQtSDRjdC70LXQvNC10L3RgtGLINGB0L/QuNGB0LrQsC5cbiAgICAgKiBAcGFyYW0gZHJhZnRzINCf0L7Qu9GD0YfQtdC90L3Ri9C1INC60YDQsNGC0LrQuNC1INC00LDQvdC90YvQtSDRh9C10YDQvdC+0LLQuNC60L7Qsi5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldENoYW5nZWRGdWxsRHJhZnRJZHMoaXRlbXM6IFNjSURyYWZ0TGlzdEl0ZW1bXSwgZHJhZnRzOiBTY09yZGVyRHJhZnRTaG9ydFtdKTogbnVtYmVyW10ge1xuICAgICAgICByZXR1cm4gaXRlbXNcbiAgICAgICAgICAgIC5maWx0ZXIoKHsgb3JkZXIgfSkgPT4gb3JkZXIgaW5zdGFuY2VvZiBTY09yZGVyRHJhZnQpXG4gICAgICAgICAgICAuZmlsdGVyKCh7IG9yZGVyIH0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzaG9ydCA9IGRyYWZ0cy5maW5kKCh7IGlkIH0pID0+IGlkID09PSBvcmRlci5pZCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXNob3J0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpc1NhbWVBY3R1YWxpemF0aW9uID0gc2hvcnQuYWN0dWFsaXphdGlvbiA/IHNob3J0LmFjdHVhbGl6YXRpb24uaXNTYW1lQXMob3JkZXIuYWN0dWFsaXphdGlvbikgOiBvcmRlci5hY3R1YWxpemF0aW9uID09PSB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnQubmFtZSAhPT0gb3JkZXIubmFtZSB8fCAhaXNTYW1lQWN0dWFsaXphdGlvbjtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAubWFwKCh7IG9yZGVyIH0pID0+IG9yZGVyLmlkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0L3QvtCy0LvRj9C10YIg0Y3Qu9C10LzQtdC90YIg0YHQv9C40YHQutCwINC60YDQsNGC0LrQuNC80Lgg0LTQsNC90L3Ri9C80Lgg0YfQtdGA0L3QvtCy0LjQutCwLiDQn9C+0LvQvdGL0LUg0LTQsNC90L3Ri9C1INGH0LXRgNC90L7QstC40LrQsCDQvdC1INC30LDQvNC10L3Rj9GO0YLRgdGPLlxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW0g0K3Qu9C10LzQtdC90YIg0YHQv9C40YHQutCwLlxuICAgICAqIEBwYXJhbSBzaG9ydCDQmtGA0LDRgtC60LjQtSDQtNCw0L3QvdGL0LUg0YfQtdGA0L3QvtCy0LjQutCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgc3RhdGljIHVwZGF0ZShpdGVtOiBTY0lEcmFmdExpc3RJdGVtLCBzaG9ydDogU2NPcmRlckRyYWZ0U2hvcnQpOiBTY0lEcmFmdExpc3RJdGVtIHtcbiAgICAgICAgaWYgKCEoaXRlbS5vcmRlciBpbnN0YW5jZW9mIFNjT3JkZXJEcmFmdCkpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgICAgaXRlbS5vcmRlciA9IHNob3J0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1kcmFmdC1saXN0LWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvb3JkZXIvZHJhZnQvbW9kZWxzL3NjLWktZHJhZnQtbGlzdC1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY09yZGVyRHJhZnQsIFNjT3JkZXJEcmFmdFNob3J0IH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5cbi8qKlxuICog0JTQsNC90L3Ri9C1INC+0LEg0Y3Qu9C10LzQtdC90YLQtSDRgdC/0LjRgdC60LAg0YfQtdGA0L3QvtCy0LjQutC+0LIg0LfQsNC60LDQt9C+0LIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NJRHJhZnRMaXN0SXRlbSB7XG4gICAgLyoqXG4gICAgICog0JrRgNCw0YLQutC40LUg0LjQu9C4INC/0L7Qu9C90YvQtSDQtNCw0L3QvdGL0LUg0L4g0YfQtdGA0L3QvtCy0LjQutC1INC30LDQutCw0LfQsC5cbiAgICAgKi9cbiAgICBvcmRlcjogU2NPcmRlckRyYWZ0IHwgU2NPcmRlckRyYWZ0U2hvcnQ7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INGH0LXRgNC90L7QstC40Log0YDQsNGB0LrRgNGL0YIg0LIg0YHQv9C40YHQutC1LlxuICAgICAqL1xuICAgIGlzRXhwYW5kZWQ6IGJvb2xlYW47XG59XG4iXX0=
@@ -0,0 +1,73 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';
3
+ import { SC_URLS } from '@snabcentr/client-core';
4
+ import { TuiButton, TuiLink, TuiLoader, TuiNotification } from '@taiga-ui/core';
5
+ import { ScFormatDatePipe } from '../../../../pipes/sc-format-date';
6
+ import { ScProfstroyDraftState } from '../enums/sc-profstroy-draft-state';
7
+ import { ScProfstroyDraftHelper } from '../helpers/sc-profstroy-draft-helper';
8
+ import * as i0 from "@angular/core";
9
+ /**
10
+ * Компонент панели состояния актуализации черновика Профстрой с действиями актуализации и пересборки.
11
+ */
12
+ export class ScProfstroyActualizationPanelComponent {
13
+ constructor() {
14
+ /**
15
+ * Список ссылок приложения.
16
+ */
17
+ this.urls = inject(SC_URLS);
18
+ /**
19
+ * Объект документа.
20
+ */
21
+ this.document = inject(DOCUMENT);
22
+ /**
23
+ * Черновик Профстрой.
24
+ */
25
+ this.draft = input.required();
26
+ /**
27
+ * Момент, на который определяется состояние. Передаётся снаружи и обновляется по таймеру проверки срока, иначе метка «Данные устарели» не сменится.
28
+ */
29
+ this.now = input.required();
30
+ /**
31
+ * Признак, что действия над черновиком недоступны.
32
+ */
33
+ this.busy = input(false);
34
+ /**
35
+ * Событие запуска актуализации.
36
+ */
37
+ this.actualize = output();
38
+ /**
39
+ * Событие запуска пересборки из файла.
40
+ */
41
+ this.reload = output();
42
+ /**
43
+ * Текущее состояние черновика.
44
+ */
45
+ this.state = computed(() => ScProfstroyDraftHelper.getState(this.draft().actualization, this.now()));
46
+ /**
47
+ * Данные об отображении состояния.
48
+ */
49
+ this.stateView = computed(() => ScProfstroyDraftHelper.getPanelView(this.draft(), this.now()));
50
+ /**
51
+ * Признак, что выполняется обработка.
52
+ */
53
+ this.isProcessing = computed(() => this.state() === ScProfstroyDraftState.processing);
54
+ /**
55
+ * Признак, что срок действия актуализации ещё не истёк.
56
+ */
57
+ this.isActual = computed(() => this.state() === ScProfstroyDraftState.actual);
58
+ /**
59
+ * Абсолютная ссылка на исходный файл заявки. Файл лежит на хосте API, адрес API может быть указан относительно сайта.
60
+ */
61
+ this.fileUrl = computed(() => {
62
+ const url = this.draft().file?.url;
63
+ return url ? new URL(url, new URL(this.urls.apiUrl, this.document.baseURI)).href : null;
64
+ });
65
+ }
66
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScProfstroyActualizationPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
67
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScProfstroyActualizationPanelComponent, isStandalone: true, selector: "sc-profstroy-actualization-panel", inputs: { draft: { classPropertyName: "draft", publicName: "draft", isSignal: true, isRequired: true, transformFunction: null }, now: { classPropertyName: "now", publicName: "now", isSignal: true, isRequired: true, transformFunction: null }, busy: { classPropertyName: "busy", publicName: "busy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { actualize: "actualize", reload: "reload" }, ngImport: i0, template: "@let actualization = draft().actualization;\n@let view = stateView();\n\n<tui-notification\n [appearance]=\"view.appearance\"\n size=\"m\"\n>\n <div class=\"flex flex-col items-start gap-2 text-start\">\n <div class=\"flex items-center justify-start gap-2 text-start font-bold\">\n @if (isProcessing()) {\n <tui-loader size=\"s\" />\n }\n {{ view.label }}\n </div>\n\n <div class=\"flex flex-col items-start gap-1\">\n @if (actualization?.actualizedAt; as actualizedAt) {\n <span>\u0410\u043A\u0442\u0443\u0430\u043B\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u043D {{ actualizedAt | scFormatDate }}</span>\n }\n @if (isActual() && actualization?.expiresAt; as expiresAt) {\n <span>\u0410\u043A\u0442\u0443\u0430\u043B\u0435\u043D \u0434\u043E {{ expiresAt | scFormatDate }}</span>\n }\n @if (view.description) {\n <span>{{ view.description }}</span>\n }\n @if (actualization?.error; as error) {\n <span class=\"font-bold\">{{ error }}</span>\n }\n @if (fileUrl(); as url) {\n <span>\n \u0424\u0430\u0439\u043B \u0437\u0430\u044F\u0432\u043A\u0438:\n <a\n tuiLink\n [href]=\"url\"\n target=\"_blank\"\n rel=\"noopener\"\n class=\"break-all\"\n >\n {{ draft().file?.originalName ?? '\u0441\u043A\u0430\u0447\u0430\u0442\u044C' }}\n </a>\n </span>\n }\n </div>\n\n <div class=\"flex flex-wrap gap-2\">\n <button\n tuiButton\n type=\"button\"\n size=\"s\"\n appearance=\"secondary\"\n iconStart=\"@tui.refresh-cw\"\n [disabled]=\"isProcessing() || busy()\"\n (click)=\"actualize.emit()\"\n >\n \u0410\u043A\u0442\u0443\u0430\u043B\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u0442\u044C\n </button>\n <button\n tuiButton\n type=\"button\"\n size=\"s\"\n appearance=\"secondary\"\n iconStart=\"@tui.file-up\"\n [disabled]=\"isProcessing() || busy()\"\n (click)=\"reload.emit()\"\n >\n \u0421\u043E\u0431\u0440\u0430\u0442\u044C \u0437\u0430\u043D\u043E\u0432\u043E \u0438\u0437 \u0444\u0430\u0439\u043B\u0430\n </button>\n </div>\n </div>\n</tui-notification>\n", dependencies: [{ kind: "directive", type: TuiNotification, selector: "tui-notification,a[tuiNotification],button[tuiNotification]", inputs: ["appearance", "icon", "size"] }, { kind: "component", type: TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "pipe", type: ScFormatDatePipe, name: "scFormatDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
68
+ }
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScProfstroyActualizationPanelComponent, decorators: [{
70
+ type: Component,
71
+ args: [{ standalone: true, selector: 'sc-profstroy-actualization-panel', imports: [TuiNotification, TuiLoader, TuiButton, TuiLink, ScFormatDatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "@let actualization = draft().actualization;\n@let view = stateView();\n\n<tui-notification\n [appearance]=\"view.appearance\"\n size=\"m\"\n>\n <div class=\"flex flex-col items-start gap-2 text-start\">\n <div class=\"flex items-center justify-start gap-2 text-start font-bold\">\n @if (isProcessing()) {\n <tui-loader size=\"s\" />\n }\n {{ view.label }}\n </div>\n\n <div class=\"flex flex-col items-start gap-1\">\n @if (actualization?.actualizedAt; as actualizedAt) {\n <span>\u0410\u043A\u0442\u0443\u0430\u043B\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u043D {{ actualizedAt | scFormatDate }}</span>\n }\n @if (isActual() && actualization?.expiresAt; as expiresAt) {\n <span>\u0410\u043A\u0442\u0443\u0430\u043B\u0435\u043D \u0434\u043E {{ expiresAt | scFormatDate }}</span>\n }\n @if (view.description) {\n <span>{{ view.description }}</span>\n }\n @if (actualization?.error; as error) {\n <span class=\"font-bold\">{{ error }}</span>\n }\n @if (fileUrl(); as url) {\n <span>\n \u0424\u0430\u0439\u043B \u0437\u0430\u044F\u0432\u043A\u0438:\n <a\n tuiLink\n [href]=\"url\"\n target=\"_blank\"\n rel=\"noopener\"\n class=\"break-all\"\n >\n {{ draft().file?.originalName ?? '\u0441\u043A\u0430\u0447\u0430\u0442\u044C' }}\n </a>\n </span>\n }\n </div>\n\n <div class=\"flex flex-wrap gap-2\">\n <button\n tuiButton\n type=\"button\"\n size=\"s\"\n appearance=\"secondary\"\n iconStart=\"@tui.refresh-cw\"\n [disabled]=\"isProcessing() || busy()\"\n (click)=\"actualize.emit()\"\n >\n \u0410\u043A\u0442\u0443\u0430\u043B\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u0442\u044C\n </button>\n <button\n tuiButton\n type=\"button\"\n size=\"s\"\n appearance=\"secondary\"\n iconStart=\"@tui.file-up\"\n [disabled]=\"isProcessing() || busy()\"\n (click)=\"reload.emit()\"\n >\n \u0421\u043E\u0431\u0440\u0430\u0442\u044C \u0437\u0430\u043D\u043E\u0432\u043E \u0438\u0437 \u0444\u0430\u0439\u043B\u0430\n </button>\n </div>\n </div>\n</tui-notification>\n" }]
72
+ }] });
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJvZnN0cm95LWFjdHVhbGl6YXRpb24tcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL29yZGVyL2RyYWZ0L3Byb2ZzdHJveS9hY3R1YWxpemF0aW9uLXBhbmVsL3NjLXByb2ZzdHJveS1hY3R1YWxpemF0aW9uLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9vcmRlci9kcmFmdC9wcm9mc3Ryb3kvYWN0dWFsaXphdGlvbi1wYW5lbC9zYy1wcm9mc3Ryb3ktYWN0dWFsaXphdGlvbi1wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7O0FBRTlFOztHQUVHO0FBUUgsTUFBTSxPQUFPLHNDQUFzQztJQVBuRDtRQVFJOztXQUVHO1FBQ2MsU0FBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4Qzs7V0FFRztRQUNjLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFN0M7O1dBRUc7UUFDYSxVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBZ0IsQ0FBQztRQUV2RDs7V0FFRztRQUNhLFFBQUcsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFRLENBQUM7UUFFN0M7O1dBRUc7UUFDYSxTQUFJLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRTdDOztXQUVHO1FBQ2EsY0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBRXJDOztXQUVHO1FBQ2EsV0FBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBRWxDOztXQUVHO1FBQ2dCLFVBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVuSDs7V0FFRztRQUNnQixjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU3Rzs7V0FFRztRQUNnQixpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUsscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFcEc7O1dBRUc7UUFDZ0IsYUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUsscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFNUY7O1dBRUc7UUFDZ0IsWUFBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDdkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7WUFFbkMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDNUYsQ0FBQyxDQUFDLENBQUM7S0FDTjsrR0FoRVksc0NBQXNDO21HQUF0QyxzQ0FBc0MsNGZDbkJuRCwwdEZBc0VBLDRDRHREYyxlQUFlLGdKQUFFLFNBQVMsaUlBQUUsU0FBUyxvSUFBRSxPQUFPLHVGQUFFLGdCQUFnQjs7NEZBR2pFLHNDQUFzQztrQkFQbEQsU0FBUztpQ0FDTSxJQUFJLFlBQ04sa0NBQWtDLFdBRW5DLENBQUMsZUFBZSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixDQUFDLG1CQUMxRCx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU0NfVVJMUywgU2NPcmRlckRyYWZ0IH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBUdWlCdXR0b24sIFR1aUxpbmssIFR1aUxvYWRlciwgVHVpTm90aWZpY2F0aW9uIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuXG5pbXBvcnQgeyBTY0Zvcm1hdERhdGVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMvc2MtZm9ybWF0LWRhdGUnO1xuaW1wb3J0IHsgU2NQcm9mc3Ryb3lEcmFmdFN0YXRlIH0gZnJvbSAnLi4vZW51bXMvc2MtcHJvZnN0cm95LWRyYWZ0LXN0YXRlJztcbmltcG9ydCB7IFNjUHJvZnN0cm95RHJhZnRIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL3NjLXByb2ZzdHJveS1kcmFmdC1oZWxwZXInO1xuXG4vKipcbiAqINCa0L7QvNC/0L7QvdC10L3RgiDQv9Cw0L3QtdC70Lgg0YHQvtGB0YLQvtGP0L3QuNGPINCw0LrRgtGD0LDQu9C40LfQsNGG0LjQuCDRh9C10YDQvdC+0LLQuNC60LAg0J/RgNC+0YTRgdGC0YDQvtC5INGBINC00LXQudGB0YLQstC40Y/QvNC4INCw0LrRgtGD0LDQu9C40LfQsNGG0LjQuCDQuCDQv9C10YDQtdGB0LHQvtGA0LrQuC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3NjLXByb2ZzdHJveS1hY3R1YWxpemF0aW9uLXBhbmVsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtcHJvZnN0cm95LWFjdHVhbGl6YXRpb24tcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIGltcG9ydHM6IFtUdWlOb3RpZmljYXRpb24sIFR1aUxvYWRlciwgVHVpQnV0dG9uLCBUdWlMaW5rLCBTY0Zvcm1hdERhdGVQaXBlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NQcm9mc3Ryb3lBY3R1YWxpemF0aW9uUGFuZWxDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDRgdGB0YvQu9C+0Log0L/RgNC40LvQvtC20LXQvdC40Y8uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1cmxzID0gaW5qZWN0KFNDX1VSTFMpO1xuXG4gICAgLyoqXG4gICAgICog0J7QsdGK0LXQutGCINC00L7QutGD0LzQtdC90YLQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcblxuICAgIC8qKlxuICAgICAqINCn0LXRgNC90L7QstC40Log0J/RgNC+0YTRgdGC0YDQvtC5LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBkcmFmdCA9IGlucHV0LnJlcXVpcmVkPFNjT3JkZXJEcmFmdD4oKTtcblxuICAgIC8qKlxuICAgICAqINCc0L7QvNC10L3Rgiwg0L3QsCDQutC+0YLQvtGA0YvQuSDQvtC/0YDQtdC00LXQu9GP0LXRgtGB0Y8g0YHQvtGB0YLQvtGP0L3QuNC1LiDQn9C10YDQtdC00LDRkdGC0YHRjyDRgdC90LDRgNGD0LbQuCDQuCDQvtCx0L3QvtCy0LvRj9C10YLRgdGPINC/0L4g0YLQsNC50LzQtdGA0YMg0L/RgNC+0LLQtdGA0LrQuCDRgdGA0L7QutCwLCDQuNC90LDRh9C1INC80LXRgtC60LAgwqvQlNCw0L3QvdGL0LUg0YPRgdGC0LDRgNC10LvQuMK7INC90LUg0YHQvNC10L3QuNGC0YHRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgbm93ID0gaW5wdXQucmVxdWlyZWQ8RGF0ZT4oKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0LTQtdC50YHRgtCy0LjRjyDQvdCw0LQg0YfQtdGA0L3QvtCy0LjQutC+0Lwg0L3QtdC00L7RgdGC0YPQv9C90YsuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGJ1c3kgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQt9Cw0L/Rg9GB0LrQsCDQsNC60YLRg9Cw0LvQuNC30LDRhtC40LguXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGFjdHVhbGl6ZSA9IG91dHB1dCgpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0LfQsNC/0YPRgdC60LAg0L/QtdGA0LXRgdCx0L7RgNC60Lgg0LjQtyDRhNCw0LnQu9CwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSByZWxvYWQgPSBvdXRwdXQoKTtcblxuICAgIC8qKlxuICAgICAqINCi0LXQutGD0YnQtdC1INGB0L7RgdGC0L7Rj9C90LjQtSDRh9C10YDQvdC+0LLQuNC60LAuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0YXRlID0gY29tcHV0ZWQoKCkgPT4gU2NQcm9mc3Ryb3lEcmFmdEhlbHBlci5nZXRTdGF0ZSh0aGlzLmRyYWZ0KCkuYWN0dWFsaXphdGlvbiwgdGhpcy5ub3coKSkpO1xuXG4gICAgLyoqXG4gICAgICog0JTQsNC90L3Ri9C1INC+0LEg0L7RgtC+0LHRgNCw0LbQtdC90LjQuCDRgdC+0YHRgtC+0Y/QvdC40Y8uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0YXRlVmlldyA9IGNvbXB1dGVkKCgpID0+IFNjUHJvZnN0cm95RHJhZnRIZWxwZXIuZ2V0UGFuZWxWaWV3KHRoaXMuZHJhZnQoKSwgdGhpcy5ub3coKSkpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQstGL0L/QvtC70L3Rj9C10YLRgdGPINC+0LHRgNCw0LHQvtGC0LrQsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNQcm9jZXNzaW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0ZSgpID09PSBTY1Byb2ZzdHJveURyYWZ0U3RhdGUucHJvY2Vzc2luZyk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INGB0YDQvtC6INC00LXQudGB0YLQstC40Y8g0LDQutGC0YPQsNC70LjQt9Cw0YbQuNC4INC10YnRkSDQvdC1INC40YHRgtGR0LouXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzQWN0dWFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0ZSgpID09PSBTY1Byb2ZzdHJveURyYWZ0U3RhdGUuYWN0dWFsKTtcblxuICAgIC8qKlxuICAgICAqINCQ0LHRgdC+0LvRjtGC0L3QsNGPINGB0YHRi9C70LrQsCDQvdCwINC40YHRhdC+0LTQvdGL0Lkg0YTQsNC50Lsg0LfQsNGP0LLQutC4LiDQpNCw0LnQuyDQu9C10LbQuNGCINC90LAg0YXQvtGB0YLQtSBBUEksINCw0LTRgNC10YEgQVBJINC80L7QttC10YIg0LHRi9GC0Ywg0YPQutCw0LfQsNC9INC+0YLQvdC+0YHQuNGC0LXQu9GM0L3QviDRgdCw0LnRgtCwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBmaWxlVXJsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmRyYWZ0KCkuZmlsZT8udXJsO1xuXG4gICAgICAgIHJldHVybiB1cmwgPyBuZXcgVVJMKHVybCwgbmV3IFVSTCh0aGlzLnVybHMuYXBpVXJsLCB0aGlzLmRvY3VtZW50LmJhc2VVUkkpKS5ocmVmIDogbnVsbDtcbiAgICB9KTtcbn1cbiIsIkBsZXQgYWN0dWFsaXphdGlvbiA9IGRyYWZ0KCkuYWN0dWFsaXphdGlvbjtcbkBsZXQgdmlldyA9IHN0YXRlVmlldygpO1xuXG48dHVpLW5vdGlmaWNhdGlvblxuICAgIFthcHBlYXJhbmNlXT1cInZpZXcuYXBwZWFyYW5jZVwiXG4gICAgc2l6ZT1cIm1cIlxuPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGdhcC0yIHRleHQtc3RhcnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnQgZ2FwLTIgdGV4dC1zdGFydCBmb250LWJvbGRcIj5cbiAgICAgICAgICAgIEBpZiAoaXNQcm9jZXNzaW5nKCkpIHtcbiAgICAgICAgICAgICAgICA8dHVpLWxvYWRlciBzaXplPVwic1wiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7eyB2aWV3LmxhYmVsIH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGdhcC0xXCI+XG4gICAgICAgICAgICBAaWYgKGFjdHVhbGl6YXRpb24/LmFjdHVhbGl6ZWRBdDsgYXMgYWN0dWFsaXplZEF0KSB7XG4gICAgICAgICAgICAgICAgPHNwYW4+0JDQutGC0YPQsNC70LjQt9C40YDQvtCy0LDQvSB7eyBhY3R1YWxpemVkQXQgfCBzY0Zvcm1hdERhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGlzQWN0dWFsKCkgJiYgYWN0dWFsaXphdGlvbj8uZXhwaXJlc0F0OyBhcyBleHBpcmVzQXQpIHtcbiAgICAgICAgICAgICAgICA8c3Bhbj7QkNC60YLRg9Cw0LvQtdC9INC00L4ge3sgZXhwaXJlc0F0IHwgc2NGb3JtYXREYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmICh2aWV3LmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdmlldy5kZXNjcmlwdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoYWN0dWFsaXphdGlvbj8uZXJyb3I7IGFzIGVycm9yKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LWJvbGRcIj57eyBlcnJvciB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoZmlsZVVybCgpOyBhcyB1cmwpIHtcbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAg0KTQsNC50Lsg0LfQsNGP0LLQutC4OlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgdHVpTGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwidXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJyZWFrLWFsbFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRyYWZ0KCkuZmlsZT8ub3JpZ2luYWxOYW1lID8/ICfRgdC60LDRh9Cw0YLRjCcgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGdhcC0yXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkucmVmcmVzaC1jd1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzUHJvY2Vzc2luZygpIHx8IGJ1c3koKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdHVhbGl6ZS5lbWl0KClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgINCQ0LrRgtGD0LDQu9C40LfQuNGA0L7QstCw0YLRjFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkuZmlsZS11cFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzUHJvY2Vzc2luZygpIHx8IGJ1c3koKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbG9hZC5lbWl0KClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgINCh0L7QsdGA0LDRgtGMINC30LDQvdC+0LLQviDQuNC3INGE0LDQudC70LBcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvdHVpLW5vdGlmaWNhdGlvbj5cbiJdfQ==
@@ -0,0 +1,21 @@
1
+ import { ChangeDetectionStrategy, Component, input } from '@angular/core';
2
+ import { TuiBadge } from '@taiga-ui/kit';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Компонент метки «Профстрой» у черновика или заказа, созданного из файла программы «Профстрой».
6
+ */
7
+ export class ScProfstroyBadgeComponent {
8
+ constructor() {
9
+ /**
10
+ * Размер метки.
11
+ */
12
+ this.size = input('m');
13
+ }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScProfstroyBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: ScProfstroyBadgeComponent, isStandalone: true, selector: "sc-profstroy-badge", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<tui-badge\n class=\"!font-medium\"\n appearance=\"primary\"\n [size]=\"size()\"\n>\n \u041F\u0440\u043E\u0444\u0441\u0442\u0440\u043E\u0439\n</tui-badge>\n", dependencies: [{ kind: "directive", type: TuiBadge, selector: "tui-badge,[tuiBadge]", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScProfstroyBadgeComponent, decorators: [{
18
+ type: Component,
19
+ args: [{ standalone: true, selector: 'sc-profstroy-badge', imports: [TuiBadge], changeDetection: ChangeDetectionStrategy.OnPush, template: "<tui-badge\n class=\"!font-medium\"\n appearance=\"primary\"\n [size]=\"size()\"\n>\n \u041F\u0440\u043E\u0444\u0441\u0442\u0440\u043E\u0439\n</tui-badge>\n" }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJvZnN0cm95LWJhZGdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9vcmRlci9kcmFmdC9wcm9mc3Ryb3kvYmFkZ2Uvc2MtcHJvZnN0cm95LWJhZGdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9vcmRlci9kcmFmdC9wcm9mc3Ryb3kvYmFkZ2Uvc2MtcHJvZnN0cm95LWJhZGdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRXpDOztHQUVHO0FBUUgsTUFBTSxPQUFPLHlCQUF5QjtJQVB0QztRQVFJOztXQUVHO1FBQ2EsU0FBSSxHQUFHLEtBQUssQ0FBWSxHQUFHLENBQUMsQ0FBQztLQUNoRDsrR0FMWSx5QkFBeUI7bUdBQXpCLHlCQUF5QiwrTUNidEMsMEtBT0EsNENER2MsUUFBUTs7NEZBR1QseUJBQXlCO2tCQVByQyxTQUFTO2lDQUNNLElBQUksWUFDTixvQkFBb0IsV0FFckIsQ0FBQyxRQUFRLENBQUMsbUJBQ0YsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUdWlCYWRnZSB9IGZyb20gJ0B0YWlnYS11aS9raXQnO1xuXG4vKipcbiAqINCa0L7QvNC/0L7QvdC10L3RgiDQvNC10YLQutC4IMKr0J/RgNC+0YTRgdGC0YDQvtC5wrsg0YMg0YfQtdGA0L3QvtCy0LjQutCwINC40LvQuCDQt9Cw0LrQsNC30LAsINGB0L7Qt9C00LDQvdC90L7Qs9C+INC40Lcg0YTQsNC50LvQsCDQv9GA0L7Qs9GA0LDQvNC80YsgwqvQn9GA0L7RhNGB0YLRgNC+0LnCuy5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3NjLXByb2ZzdHJveS1iYWRnZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLXByb2ZzdHJveS1iYWRnZS5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1R1aUJhZGdlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NQcm9mc3Ryb3lCYWRnZUNvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICog0KDQsNC30LzQtdGAINC80LXRgtC60LguXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHNpemUgPSBpbnB1dDwncycgfCAnbSc+KCdtJyk7XG59XG4iLCI8dHVpLWJhZGdlXG4gICAgY2xhc3M9XCIhZm9udC1tZWRpdW1cIlxuICAgIGFwcGVhcmFuY2U9XCJwcmltYXJ5XCJcbiAgICBbc2l6ZV09XCJzaXplKClcIlxuPlxuICAgINCf0YDQvtGE0YHRgtGA0L7QuVxuPC90dWktYmFkZ2U+XG4iXX0=
@@ -0,0 +1,31 @@
1
+ import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
2
+ import { TuiBadge } from '@taiga-ui/kit';
3
+ import { ScProfstroyBadgeComponent } from '../badge/sc-profstroy-badge.component';
4
+ import { ScProfstroyDraftHelper } from '../helpers/sc-profstroy-draft-helper';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Компонент меток черновика Профстрой: признак и текущее состояние обработки.
8
+ */
9
+ export class ScProfstroyDraftBadgesComponent {
10
+ constructor() {
11
+ /**
12
+ * Данные об актуализации черновика.
13
+ */
14
+ this.actualization = input();
15
+ /**
16
+ * Момент, на который определяется состояние. Передаётся снаружи и обновляется по таймеру проверки срока, иначе метка «Данные устарели» не сменится.
17
+ */
18
+ this.now = input.required();
19
+ /**
20
+ * Данные об отображении состояния.
21
+ */
22
+ this.stateView = computed(() => ScProfstroyDraftHelper.getStateView(this.actualization(), this.now()));
23
+ }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScProfstroyDraftBadgesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: ScProfstroyDraftBadgesComponent, isStandalone: true, selector: "sc-profstroy-draft-badges", inputs: { actualization: { classPropertyName: "actualization", publicName: "actualization", isSignal: true, isRequired: false, transformFunction: null }, now: { classPropertyName: "now", publicName: "now", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<span class=\"inline-flex flex-wrap items-center gap-1\">\n <sc-profstroy-badge />\n <tui-badge\n class=\"!font-medium\"\n [appearance]=\"stateView().appearance\"\n size=\"m\"\n >\n {{ stateView().label }}\n </tui-badge>\n</span>\n", dependencies: [{ kind: "directive", type: TuiBadge, selector: "tui-badge,[tuiBadge]", inputs: ["size"] }, { kind: "component", type: ScProfstroyBadgeComponent, selector: "sc-profstroy-badge", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26
+ }
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScProfstroyDraftBadgesComponent, decorators: [{
28
+ type: Component,
29
+ args: [{ standalone: true, selector: 'sc-profstroy-draft-badges', imports: [TuiBadge, ScProfstroyBadgeComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span class=\"inline-flex flex-wrap items-center gap-1\">\n <sc-profstroy-badge />\n <tui-badge\n class=\"!font-medium\"\n [appearance]=\"stateView().appearance\"\n size=\"m\"\n >\n {{ stateView().label }}\n </tui-badge>\n</span>\n" }]
30
+ }] });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJvZnN0cm95LWRyYWZ0LWJhZGdlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvb3JkZXIvZHJhZnQvcHJvZnN0cm95L2JhZGdlcy9zYy1wcm9mc3Ryb3ktZHJhZnQtYmFkZ2VzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9vcmRlci9kcmFmdC9wcm9mc3Ryb3kvYmFkZ2VzL3NjLXByb2ZzdHJveS1kcmFmdC1iYWRnZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7O0FBRTlFOztHQUVHO0FBUUgsTUFBTSxPQUFPLCtCQUErQjtJQVA1QztRQVFJOztXQUVHO1FBQ2Esa0JBQWEsR0FBRyxLQUFLLEVBQXlDLENBQUM7UUFFL0U7O1dBRUc7UUFDYSxRQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBUSxDQUFDO1FBRTdDOztXQUVHO1FBQ2dCLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQ3hIOytHQWZZLCtCQUErQjttR0FBL0IsK0JBQStCLGtXQ2pCNUMsaVJBVUEsNENESWMsUUFBUSxtRkFBRSx5QkFBeUI7OzRGQUdwQywrQkFBK0I7a0JBUDNDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLDJCQUEyQixXQUU1QixDQUFDLFFBQVEsRUFBRSx5QkFBeUIsQ0FBQyxtQkFDN0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2NPcmRlckRyYWZ0QWN0dWFsaXphdGlvbiB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVHVpQmFkZ2UgfSBmcm9tICdAdGFpZ2EtdWkva2l0JztcblxuaW1wb3J0IHsgU2NQcm9mc3Ryb3lCYWRnZUNvbXBvbmVudCB9IGZyb20gJy4uL2JhZGdlL3NjLXByb2ZzdHJveS1iYWRnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2NQcm9mc3Ryb3lEcmFmdEhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvc2MtcHJvZnN0cm95LWRyYWZ0LWhlbHBlcic7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINC80LXRgtC+0Log0YfQtdGA0L3QvtCy0LjQutCwINCf0YDQvtGE0YHRgtGA0L7QuTog0L/RgNC40LfQvdCw0Log0Lgg0YLQtdC60YPRidC10LUg0YHQvtGB0YLQvtGP0L3QuNC1INC+0LHRgNCw0LHQvtGC0LrQuC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3NjLXByb2ZzdHJveS1kcmFmdC1iYWRnZXMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1wcm9mc3Ryb3ktZHJhZnQtYmFkZ2VzLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbVHVpQmFkZ2UsIFNjUHJvZnN0cm95QmFkZ2VDb21wb25lbnRdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY1Byb2ZzdHJveURyYWZ0QmFkZ2VzQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiDQlNCw0L3QvdGL0LUg0L7QsSDQsNC60YLRg9Cw0LvQuNC30LDRhtC40Lgg0YfQtdGA0L3QvtCy0LjQutCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBhY3R1YWxpemF0aW9uID0gaW5wdXQ8U2NPcmRlckRyYWZ0QWN0dWFsaXphdGlvbiB8IHVuZGVmaW5lZD4oKTtcblxuICAgIC8qKlxuICAgICAqINCc0L7QvNC10L3Rgiwg0L3QsCDQutC+0YLQvtGA0YvQuSDQvtC/0YDQtdC00LXQu9GP0LXRgtGB0Y8g0YHQvtGB0YLQvtGP0L3QuNC1LiDQn9C10YDQtdC00LDRkdGC0YHRjyDRgdC90LDRgNGD0LbQuCDQuCDQvtCx0L3QvtCy0LvRj9C10YLRgdGPINC/0L4g0YLQsNC50LzQtdGA0YMg0L/RgNC+0LLQtdGA0LrQuCDRgdGA0L7QutCwLCDQuNC90LDRh9C1INC80LXRgtC60LAgwqvQlNCw0L3QvdGL0LUg0YPRgdGC0LDRgNC10LvQuMK7INC90LUg0YHQvNC10L3QuNGC0YHRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgbm93ID0gaW5wdXQucmVxdWlyZWQ8RGF0ZT4oKTtcblxuICAgIC8qKlxuICAgICAqINCU0LDQvdC90YvQtSDQvtCxINC+0YLQvtCx0YDQsNC20LXQvdC40Lgg0YHQvtGB0YLQvtGP0L3QuNGPLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzdGF0ZVZpZXcgPSBjb21wdXRlZCgoKSA9PiBTY1Byb2ZzdHJveURyYWZ0SGVscGVyLmdldFN0YXRlVmlldyh0aGlzLmFjdHVhbGl6YXRpb24oKSwgdGhpcy5ub3coKSkpO1xufVxuIiwiPHNwYW4gY2xhc3M9XCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC0xXCI+XG4gICAgPHNjLXByb2ZzdHJveS1iYWRnZSAvPlxuICAgIDx0dWktYmFkZ2VcbiAgICAgICAgY2xhc3M9XCIhZm9udC1tZWRpdW1cIlxuICAgICAgICBbYXBwZWFyYW5jZV09XCJzdGF0ZVZpZXcoKS5hcHBlYXJhbmNlXCJcbiAgICAgICAgc2l6ZT1cIm1cIlxuICAgID5cbiAgICAgICAge3sgc3RhdGVWaWV3KCkubGFiZWwgfX1cbiAgICA8L3R1aS1iYWRnZT5cbjwvc3Bhbj5cbiJdfQ==
@@ -0,0 +1,139 @@
1
+ /* eslint-disable @typescript-eslint/unbound-method */
2
+ import { AsyncPipe } from '@angular/common';
3
+ import { HttpErrorResponse, HttpStatusCode } from '@angular/common/http';
4
+ import { ChangeDetectionStrategy, Component, DestroyRef, inject, signal } from '@angular/core';
5
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
+ import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
7
+ import { ScOrderDraftsService } from '@snabcentr/client-core';
8
+ import { TuiValidationError } from '@taiga-ui/cdk';
9
+ import { TuiButton, TuiError, TuiLabel, TuiNotification, TuiTextfield } from '@taiga-ui/core';
10
+ import { TUI_INPUT_FILE_TEXTS, TUI_INPUT_FILES_OPTIONS, TuiButtonLoading, tuiCreateFileFormatValidator, tuiCreateFileSizeValidator, TuiFieldErrorPipe, TuiFileRejectedPipe, TuiFiles, } from '@taiga-ui/kit';
11
+ import { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';
12
+ import { finalize, map, switchMap } from 'rxjs';
13
+ import { ScApiErrorHelper } from '../../../../helpers/sc-api-error-helper';
14
+ import { ScFileHelper } from '../../../../helpers/sc-file-helper';
15
+ import * as i0 from "@angular/core";
16
+ import * as i1 from "@angular/forms";
17
+ import * as i2 from "@taiga-ui/kit";
18
+ import * as i3 from "@taiga-ui/core";
19
+ /**
20
+ * Компонент диалога создания черновика заказа из файла программы «Профстрой».
21
+ */
22
+ export class ScProfstroyDraftCreateDialogComponent {
23
+ constructor() {
24
+ /**
25
+ * Контекст диалогового окна, в котором открыт компонент.
26
+ */
27
+ this.context = inject(POLYMORPHEUS_CONTEXT);
28
+ /**
29
+ * Сервис для работы с черновиками заказов.
30
+ */
31
+ this.draftsService = inject(ScOrderDraftsService);
32
+ /**
33
+ * Ссылка для автоматического управления уничтожением зависимостей.
34
+ */
35
+ this.destroyRef = inject(DestroyRef);
36
+ /**
37
+ * Настройки поля выбора файлов, в том числе наибольший размер файла из настроек приложения.
38
+ */
39
+ this.inputFilesOptions = inject(TUI_INPUT_FILES_OPTIONS);
40
+ /**
41
+ * Допустимое расширение файла.
42
+ */
43
+ this.accept = '.xlsx';
44
+ /**
45
+ * Наибольшая длина названия заявки.
46
+ */
47
+ this.nameMaxLength = 255;
48
+ /**
49
+ * Форма создания черновика. Формат и размер файла проверяются на самом поле: после выбора файла поле выбора убирается вместе со своими проверками.
50
+ */
51
+ this.form = new FormGroup({
52
+ file: new FormControl(null, [Validators.required, tuiCreateFileFormatValidator(this.accept), tuiCreateFileSizeValidator(this.inputFilesOptions.maxFileSize)]),
53
+ name: new FormControl('', { nonNullable: true, validators: Validators.maxLength(this.nameMaxLength) }),
54
+ });
55
+ /**
56
+ * Признак выполнения запроса создания.
57
+ */
58
+ this.submitting = signal(false);
59
+ /**
60
+ * Признак попытки создать заявку. До неё незаполненное поле файла ошибкой не подсвечивается: поле теряет фокус уже при открытии окна выбора файла.
61
+ */
62
+ this.submitAttempted = signal(false);
63
+ }
64
+ /**
65
+ * Удаляет выбранный файл.
66
+ */
67
+ removeFile() {
68
+ this.form.controls.file.setValue(null);
69
+ }
70
+ /**
71
+ * Отправляет файл и создаёт черновик. Ошибки сервера с прошлой отправки не мешают отправить форму снова.
72
+ */
73
+ submit() {
74
+ this.submitAttempted.set(true);
75
+ Object.values(this.form.controls).forEach((control) => {
76
+ control.updateValueAndValidity();
77
+ });
78
+ this.form.markAllAsTouched();
79
+ const file = this.form.controls.file.value;
80
+ if (this.form.invalid || !file || this.submitting()) {
81
+ return;
82
+ }
83
+ this.submitting.set(true);
84
+ ScFileHelper.readAsUploadedFile$(file)
85
+ .pipe(switchMap((uploadedFile) => this.draftsService.createProfstroy$({ file: uploadedFile, name: this.form.controls.name.value.trim() || undefined })), finalize(() => {
86
+ this.submitting.set(false);
87
+ }), takeUntilDestroyed(this.destroyRef))
88
+ .subscribe({
89
+ next: (draft) => {
90
+ this.context.completeWith(draft);
91
+ },
92
+ error: (error) => {
93
+ this.applyError(error);
94
+ },
95
+ });
96
+ }
97
+ /**
98
+ * Показывает ошибку создания в форме: ошибки проверки данных у полей, ошибку чтения файла у поля файла, остальные ошибкой формы (401 обрабатывает авторизация).
99
+ * Диалог остаётся открытым.
100
+ *
101
+ * @param error Ошибка чтения файла или запроса.
102
+ */
103
+ applyError(error) {
104
+ if (!(error instanceof HttpErrorResponse)) {
105
+ this.form.controls.file.setErrors({ serverResponse: new TuiValidationError('Не удалось прочитать файл.') });
106
+ return;
107
+ }
108
+ if (error.status === HttpStatusCode.Unauthorized) {
109
+ return;
110
+ }
111
+ const { errors } = (error.error ?? {});
112
+ if (error.status !== HttpStatusCode.UnprocessableEntity || !errors) {
113
+ this.form.setErrors({ serverResponse: new TuiValidationError(ScApiErrorHelper.getMessage(error, 'Не удалось создать заявку.')) });
114
+ return;
115
+ }
116
+ Object.entries(errors).forEach(([key, messages]) => {
117
+ const control = key === 'name' ? this.form.controls.name : this.form.controls.file;
118
+ control.setErrors({ serverResponse: new TuiValidationError(messages.join(' ')) });
119
+ control.markAsTouched();
120
+ });
121
+ }
122
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScProfstroyDraftCreateDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
123
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScProfstroyDraftCreateDialogComponent, isStandalone: true, selector: "sc-profstroy-draft-create-dialog", providers: [
124
+ {
125
+ provide: TUI_INPUT_FILE_TEXTS,
126
+ useFactory: () => inject(TUI_INPUT_FILE_TEXTS, { skipSelf: true }).pipe(map((texts) => ({ ...texts, formatRejectionReason: 'Файл должен быть в формате .xlsx' }))),
127
+ },
128
+ ], ngImport: i0, template: "<form\n [formGroup]=\"form\"\n class=\"flex flex-col gap-5\"\n (ngSubmit)=\"submit()\"\n>\n <!-- \u0424\u0430\u0439\u043B. \u041F\u0440\u0438\u0447\u0438\u043D\u0443 \u043E\u0442\u043A\u043B\u043E\u043D\u0435\u043D\u0438\u044F \u0444\u0430\u0439\u043B\u0430 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043E\u043A\u0430 \u0444\u0430\u0439\u043B\u0430, \u043F\u043E\u0434 \u043F\u043E\u043B\u0435\u043C \u043E\u043D\u0430 \u043D\u0435 \u043F\u043E\u0432\u0442\u043E\u0440\u044F\u0435\u0442\u0441\u044F. \u041D\u0435\u0437\u0430\u043F\u043E\u043B\u043D\u0435\u043D\u043D\u043E\u0435 \u043F\u043E\u043B\u0435 \u043F\u043E\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u043E\u0441\u043B\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0438 \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u0437\u0430\u044F\u0432\u043A\u0443. -->\n <div class=\"flex flex-col gap-1\">\n @let file = form.controls.file.value;\n @let rejected = file | tuiFileRejected: { accept } | async;\n @if (!file) {\n <label tuiInputFiles>\n <input\n tuiInputFiles\n formControlName=\"file\"\n [accept]=\"accept\"\n [invalid]=\"submitAttempted() ? null : false\"\n />\n </label>\n }\n <tui-files>\n @if (file) {\n <tui-file\n [state]=\"rejected ? 'error' : 'normal'\"\n [file]=\"rejected ?? file\"\n (remove)=\"removeFile()\"\n />\n }\n </tui-files>\n <span class=\"text-body-s text-tui-text-02\">\u0424\u0430\u0439\u043B Excel, \u0432\u044B\u0433\u0440\u0443\u0436\u0435\u043D\u043D\u044B\u0439 \u0438\u0437 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B \u00AB\u041F\u0440\u043E\u0444\u0441\u0442\u0440\u043E\u0439\u00BB: {{ accept }}</span>\n @if (!rejected) {\n @let fileErrorVisible = submitAttempted() || !form.controls.file.hasError('required');\n <tui-error\n formControlName=\"file\"\n [error]=\"fileErrorVisible ? (['required', 'serverResponse'] | tuiFieldError | async) : null\"\n />\n }\n </div>\n\n <!-- \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0437\u0430\u044F\u0432\u043A\u0438. -->\n <label tuiLabel>\n \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0437\u0430\u044F\u0432\u043A\u0438\n <tui-textfield>\n <input\n tuiTextfield\n formControlName=\"name\"\n placeholder=\"\u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440: \u0411\u0430\u043B\u043A\u043E\u043D\u044B, \u043E\u0431\u044A\u0435\u043A\u0442 \u043D\u0430 \u041B\u0435\u043D\u0438\u043D\u0430\"\n autocomplete=\"off\"\n [maxLength]=\"nameMaxLength\"\n />\n </tui-textfield>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n @if (form.errors?.['serverResponse']) {\n <tui-error [error]=\"[] | tuiFieldError | async\" />\n }\n\n <tui-notification\n appearance=\"info\"\n size=\"m\"\n >\n \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u0444\u0430\u0439\u043B\u0430 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u0432 \u0444\u043E\u043D\u0435: \u043F\u043E\u0437\u0438\u0446\u0438\u0438 \u0438 \u0446\u0435\u043D\u044B \u043F\u043E\u044F\u0432\u044F\u0442\u0441\u044F \u0432 \u0447\u0435\u0440\u043D\u043E\u0432\u0438\u043A\u0435 \u0447\u0435\u0440\u0435\u0437 \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u043E\u0435 \u0432\u0440\u0435\u043C\u044F.\n </tui-notification>\n\n <div class=\"flex flex-wrap gap-2\">\n <button\n tuiButton\n type=\"submit\"\n iconStart=\"@tui.sc.send\"\n [loading]=\"submitting()\"\n >\n \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u0437\u0430\u044F\u0432\u043A\u0443\n </button>\n <button\n tuiButton\n type=\"button\"\n appearance=\"secondary\"\n [disabled]=\"submitting()\"\n (click)=\"context.$implicit.complete()\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.TuiFile, selector: "tui-file,a[tuiFile],button[tuiFile]", inputs: ["file", "state", "size", "showDelete", "showSize", "leftContent"], outputs: ["remove"] }, { kind: "component", type: i2.TuiInputFiles, selector: "label[tuiInputFiles]" }, { kind: "component", type: i2.TuiFilesComponent, selector: "tui-files", inputs: ["max", "expanded"], outputs: ["expandedChange"] }, { kind: "pipe", type: i2.TuiFileRejectedPipe, name: "tuiFileRejected" }, { kind: "directive", type: i2.TuiInputFilesDirective, selector: "input[tuiInputFiles]", outputs: ["reject"] }, { kind: "directive", type: TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: TuiError, selector: "tui-error", inputs: ["error"] }, { kind: "pipe", type: TuiFieldErrorPipe, name: "tuiFieldError" }, { kind: "component", type: i3.TuiTextfieldComponent, selector: "tui-textfield:not([multi])" }, { kind: "directive", type: i3.TuiTextfieldDirective, selector: "input[tuiTextfield]:not([tuiInputCard]):not([tuiInputExpire]):not([tuiInputCVC])" }, { kind: "directive", type: TuiNotification, selector: "tui-notification,a[tuiNotification],button[tuiNotification]", inputs: ["appearance", "icon", "size"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
129
+ }
130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScProfstroyDraftCreateDialogComponent, decorators: [{
131
+ type: Component,
132
+ args: [{ standalone: true, selector: 'sc-profstroy-draft-create-dialog', imports: [ReactiveFormsModule, TuiFiles, TuiFileRejectedPipe, TuiLabel, TuiError, TuiFieldErrorPipe, TuiTextfield, TuiNotification, TuiButton, TuiButtonLoading, AsyncPipe], providers: [
133
+ {
134
+ provide: TUI_INPUT_FILE_TEXTS,
135
+ useFactory: () => inject(TUI_INPUT_FILE_TEXTS, { skipSelf: true }).pipe(map((texts) => ({ ...texts, formatRejectionReason: 'Файл должен быть в формате .xlsx' }))),
136
+ },
137
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n [formGroup]=\"form\"\n class=\"flex flex-col gap-5\"\n (ngSubmit)=\"submit()\"\n>\n <!-- \u0424\u0430\u0439\u043B. \u041F\u0440\u0438\u0447\u0438\u043D\u0443 \u043E\u0442\u043A\u043B\u043E\u043D\u0435\u043D\u0438\u044F \u0444\u0430\u0439\u043B\u0430 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043E\u043A\u0430 \u0444\u0430\u0439\u043B\u0430, \u043F\u043E\u0434 \u043F\u043E\u043B\u0435\u043C \u043E\u043D\u0430 \u043D\u0435 \u043F\u043E\u0432\u0442\u043E\u0440\u044F\u0435\u0442\u0441\u044F. \u041D\u0435\u0437\u0430\u043F\u043E\u043B\u043D\u0435\u043D\u043D\u043E\u0435 \u043F\u043E\u043B\u0435 \u043F\u043E\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u043E\u0441\u043B\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0438 \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u0437\u0430\u044F\u0432\u043A\u0443. -->\n <div class=\"flex flex-col gap-1\">\n @let file = form.controls.file.value;\n @let rejected = file | tuiFileRejected: { accept } | async;\n @if (!file) {\n <label tuiInputFiles>\n <input\n tuiInputFiles\n formControlName=\"file\"\n [accept]=\"accept\"\n [invalid]=\"submitAttempted() ? null : false\"\n />\n </label>\n }\n <tui-files>\n @if (file) {\n <tui-file\n [state]=\"rejected ? 'error' : 'normal'\"\n [file]=\"rejected ?? file\"\n (remove)=\"removeFile()\"\n />\n }\n </tui-files>\n <span class=\"text-body-s text-tui-text-02\">\u0424\u0430\u0439\u043B Excel, \u0432\u044B\u0433\u0440\u0443\u0436\u0435\u043D\u043D\u044B\u0439 \u0438\u0437 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B \u00AB\u041F\u0440\u043E\u0444\u0441\u0442\u0440\u043E\u0439\u00BB: {{ accept }}</span>\n @if (!rejected) {\n @let fileErrorVisible = submitAttempted() || !form.controls.file.hasError('required');\n <tui-error\n formControlName=\"file\"\n [error]=\"fileErrorVisible ? (['required', 'serverResponse'] | tuiFieldError | async) : null\"\n />\n }\n </div>\n\n <!-- \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0437\u0430\u044F\u0432\u043A\u0438. -->\n <label tuiLabel>\n \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0437\u0430\u044F\u0432\u043A\u0438\n <tui-textfield>\n <input\n tuiTextfield\n formControlName=\"name\"\n placeholder=\"\u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440: \u0411\u0430\u043B\u043A\u043E\u043D\u044B, \u043E\u0431\u044A\u0435\u043A\u0442 \u043D\u0430 \u041B\u0435\u043D\u0438\u043D\u0430\"\n autocomplete=\"off\"\n [maxLength]=\"nameMaxLength\"\n />\n </tui-textfield>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n @if (form.errors?.['serverResponse']) {\n <tui-error [error]=\"[] | tuiFieldError | async\" />\n }\n\n <tui-notification\n appearance=\"info\"\n size=\"m\"\n >\n \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u0444\u0430\u0439\u043B\u0430 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u0432 \u0444\u043E\u043D\u0435: \u043F\u043E\u0437\u0438\u0446\u0438\u0438 \u0438 \u0446\u0435\u043D\u044B \u043F\u043E\u044F\u0432\u044F\u0442\u0441\u044F \u0432 \u0447\u0435\u0440\u043D\u043E\u0432\u0438\u043A\u0435 \u0447\u0435\u0440\u0435\u0437 \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u043E\u0435 \u0432\u0440\u0435\u043C\u044F.\n </tui-notification>\n\n <div class=\"flex flex-wrap gap-2\">\n <button\n tuiButton\n type=\"submit\"\n iconStart=\"@tui.sc.send\"\n [loading]=\"submitting()\"\n >\n \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u0437\u0430\u044F\u0432\u043A\u0443\n </button>\n <button\n tuiButton\n type=\"button\"\n appearance=\"secondary\"\n [disabled]=\"submitting()\"\n (click)=\"context.$implicit.complete()\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n </div>\n</form>\n" }]
138
+ }] });
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJvZnN0cm95LWRyYWZ0LWNyZWF0ZS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL29yZGVyL2RyYWZ0L3Byb2ZzdHJveS9jcmVhdGUtZGlhbG9nL3NjLXByb2ZzdHJveS1kcmFmdC1jcmVhdGUtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9vcmRlci9kcmFmdC9wcm9mc3Ryb3kvY3JlYXRlLWRpYWxvZy9zYy1wcm9mc3Ryb3ktZHJhZnQtY3JlYXRlLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzREFBc0Q7QUFFdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBcUMsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBb0IsUUFBUSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEgsT0FBTyxFQUNILG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIsZ0JB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aUIsMFNBQWdCLGVBQWUsZ0pBQUUsU0FBUyxvSUFBRSxnQkFBZ0Isa0hBQUUsU0FBUzs7NEZBU2pLLHFDQUFxQztrQkFiakQsU0FBUztpQ0FDTSxJQUFJLFlBQ04sa0NBQWtDLFdBRW5DLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLGFBQ2hLO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxvQkFBb0I7NEJBQzdCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsa0NBQWtDLEVBQUUsQ0FBQyxDQUFDLENBQUM7eUJBQ3JLO3FCQUNKLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kICovXG5cbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cFN0YXR1c0NvZGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBEZXN0cm95UmVmLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNjSUFwaUVycm9yUmVzcG9uc2UsIFNjT3JkZXJEcmFmdCwgU2NPcmRlckRyYWZ0c1NlcnZpY2UgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFR1aVZhbGlkYXRpb25FcnJvciB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVHVpQnV0dG9uLCBUdWlEaWFsb2dDb250ZXh0LCBUdWlFcnJvciwgVHVpTGFiZWwsIFR1aU5vdGlmaWNhdGlvbiwgVHVpVGV4dGZpZWxkIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBUVUlfSU5QVVRfRklMRV9URVhUUyxcbiAgICBUVUlfSU5QVVRfRklMRVNfT1BUSU9OUyxcbiAgICBUdWlCdXR0b25Mb2FkaW5nLFxuICAgIHR1aUNyZWF0ZUZpbGVGb3JtYXRWYWxpZGF0b3IsXG4gICAgdHVpQ3JlYXRlRmlsZVNpemVWYWxpZGF0b3IsXG4gICAgVHVpRmllbGRFcnJvclBpcGUsXG4gICAgVHVpRmlsZVJlamVjdGVkUGlwZSxcbiAgICBUdWlGaWxlcyxcbn0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBQT0xZTU9SUEhFVVNfQ09OVEVYVCB9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHsgZmluYWxpemUsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjQXBpRXJyb3JIZWxwZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9oZWxwZXJzL3NjLWFwaS1lcnJvci1oZWxwZXInO1xuaW1wb3J0IHsgU2NGaWxlSGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vaGVscGVycy9zYy1maWxlLWhlbHBlcic7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINC00LjQsNC70L7Qs9CwINGB0L7Qt9C00LDQvdC40Y8g0YfQtdGA0L3QvtCy0LjQutCwINC30LDQutCw0LfQsCDQuNC3INGE0LDQudC70LAg0L/RgNC+0LPRgNCw0LzQvNGLIMKr0J/RgNC+0YTRgdGC0YDQvtC5wrsuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdzYy1wcm9mc3Ryb3ktZHJhZnQtY3JlYXRlLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLXByb2ZzdHJveS1kcmFmdC1jcmVhdGUtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZSwgVHVpRmlsZXMsIFR1aUZpbGVSZWplY3RlZFBpcGUsIFR1aUxhYmVsLCBUdWlFcnJvciwgVHVpRmllbGRFcnJvclBpcGUsIFR1aVRleHRmaWVsZCwgVHVpTm90aWZpY2F0aW9uLCBUdWlCdXR0b24sIFR1aUJ1dHRvbkxvYWRpbmcsIEFzeW5jUGlwZV0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRVSV9JTlBVVF9GSUxFX1RFWFRTLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKCkgPT4gaW5qZWN0KFRVSV9JTlBVVF9GSUxFX1RFWFRTLCB7IHNraXBTZWxmOiB0cnVlIH0pLnBpcGUobWFwKCh0ZXh0cykgPT4gKHsgLi4udGV4dHMsIGZvcm1hdFJlamVjdGlvblJlYXNvbjogJ9Ck0LDQudC7INC00L7Qu9C20LXQvSDQsdGL0YLRjCDQsiDRhNC+0YDQvNCw0YLQtSAueGxzeCcgfSkpKSxcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY1Byb2ZzdHJveURyYWZ0Q3JlYXRlRGlhbG9nQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiDQmtC+0L3RgtC10LrRgdGCINC00LjQsNC70L7Qs9C+0LLQvtCz0L4g0L7QutC90LAsINCyINC60L7RgtC+0YDQvtC8INC+0YLQutGA0YvRgiDQutC+0LzQv9C+0L3QtdC90YIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRleHQgPSBpbmplY3Q8VHVpRGlhbG9nQ29udGV4dDxTY09yZGVyRHJhZnQgfCB1bmRlZmluZWQ+PihQT0xZTU9SUEhFVVNfQ09OVEVYVCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDRh9C10YDQvdC+0LLQuNC60LDQvNC4INC30LDQutCw0LfQvtCyLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZHJhZnRzU2VydmljZSA9IGluamVjdChTY09yZGVyRHJhZnRzU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodGB0YvQu9C60LAg0LTQu9GPINCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC+0LPQviDRg9C/0YDQsNCy0LvQtdC90LjRjyDRg9C90LjRh9GC0L7QttC10L3QuNC10Lwg0LfQsNCy0LjRgdC40LzQvtGB0YLQtdC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKlxuICAgICAqINCd0LDRgdGC0YDQvtC50LrQuCDQv9C+0LvRjyDQstGL0LHQvtGA0LAg0YTQsNC50LvQvtCyLCDQsiDRgtC+0Lwg0YfQuNGB0LvQtSDQvdCw0LjQsdC+0LvRjNGI0LjQuSDRgNCw0LfQvNC10YAg0YTQsNC50LvQsCDQuNC3INC90LDRgdGC0YDQvtC10Log0L/RgNC40LvQvtC20LXQvdC40Y8uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dEZpbGVzT3B0aW9ucyA9IGluamVjdChUVUlfSU5QVVRfRklMRVNfT1BUSU9OUyk7XG5cbiAgICAvKipcbiAgICAgKiDQlNC+0L/Rg9GB0YLQuNC80L7QtSDRgNCw0YHRiNC40YDQtdC90LjQtSDRhNCw0LnQu9CwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBhY2NlcHQgPSAnLnhsc3gnO1xuXG4gICAgLyoqXG4gICAgICog0J3QsNC40LHQvtC70YzRiNCw0Y8g0LTQu9C40L3QsCDQvdCw0LfQstCw0L3QuNGPINC30LDRj9Cy0LrQuC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbmFtZU1heExlbmd0aCA9IDI1NTtcblxuICAgIC8qKlxuICAgICAqINCk0L7RgNC80LAg0YHQvtC30LTQsNC90LjRjyDRh9C10YDQvdC+0LLQuNC60LAuINCk0L7RgNC80LDRgiDQuCDRgNCw0LfQvNC10YAg0YTQsNC50LvQsCDQv9GA0L7QstC10YDRj9GO0YLRgdGPINC90LAg0YHQsNC80L7QvCDQv9C+0LvQtTog0L/QvtGB0LvQtSDQstGL0LHQvtGA0LAg0YTQsNC50LvQsCDQv9C+0LvQtSDQstGL0LHQvtGA0LAg0YPQsdC40YDQsNC10YLRgdGPINCy0LzQtdGB0YLQtSDRgdC+INGB0LLQvtC40LzQuCDQv9GA0L7QstC10YDQutCw0LzQuC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBmaWxlOiBuZXcgRm9ybUNvbnRyb2w8RmlsZSB8IG51bGw+KG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB0dWlDcmVhdGVGaWxlRm9ybWF0VmFsaWRhdG9yKHRoaXMuYWNjZXB0KSwgdHVpQ3JlYXRlRmlsZVNpemVWYWxpZGF0b3IodGhpcy5pbnB1dEZpbGVzT3B0aW9ucy5tYXhGaWxlU2l6ZSldKSxcbiAgICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sPHN0cmluZz4oJycsIHsgbm9uTnVsbGFibGU6IHRydWUsIHZhbGlkYXRvcnM6IFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMubmFtZU1heExlbmd0aCkgfSksXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiDQstGL0L/QvtC70L3QtdC90LjRjyDQt9Cw0L/RgNC+0YHQsCDRgdC+0LfQtNCw0L3QuNGPLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzdWJtaXR0aW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INC/0L7Qv9GL0YLQutC4INGB0L7Qt9C00LDRgtGMINC30LDRj9Cy0LrRgy4g0JTQviDQvdC10ZEg0L3QtdC30LDQv9C+0LvQvdC10L3QvdC+0LUg0L/QvtC70LUg0YTQsNC50LvQsCDQvtGI0LjQsdC60L7QuSDQvdC1INC/0L7QtNGB0LLQtdGH0LjQstCw0LXRgtGB0Y86INC/0L7Qu9C1INGC0LXRgNGP0LXRgiDRhNC+0LrRg9GBINGD0LbQtSDQv9GA0Lgg0L7RgtC60YDRi9GC0LjQuCDQvtC60L3QsCDQstGL0LHQvtGA0LAg0YTQsNC50LvQsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3VibWl0QXR0ZW1wdGVkID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqINCj0LTQsNC70Y/QtdGCINCy0YvQsdGA0LDQvdC90YvQuSDRhNCw0LnQuy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVtb3ZlRmlsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmZpbGUuc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7RgtC/0YDQsNCy0LvRj9C10YIg0YTQsNC50Lsg0Lgg0YHQvtC30LTQsNGR0YIg0YfQtdGA0L3QvtCy0LjQui4g0J7RiNC40LHQutC4INGB0LXRgNCy0LXRgNCwINGBINC/0YDQvtGI0LvQvtC5INC+0YLQv9GA0LDQstC60Lgg0L3QtSDQvNC10YjQsNGO0YIg0L7RgtC/0YDQsNCy0LjRgtGMINGE0L7RgNC80YMg0YHQvdC+0LLQsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3VibWl0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1Ym1pdEF0dGVtcHRlZC5zZXQodHJ1ZSk7XG4gICAgICAgIE9iamVjdC52YWx1ZXModGhpcy5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChjb250cm9sKSA9PiB7XG4gICAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG5cbiAgICAgICAgY29uc3QgZmlsZSA9IHRoaXMuZm9ybS5jb250cm9scy5maWxlLnZhbHVlO1xuXG4gICAgICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCB8fCAhZmlsZSB8fCB0aGlzLnN1Ym1pdHRpbmcoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdWJtaXR0aW5nLnNldCh0cnVlKTtcblxuICAgICAgICBTY0ZpbGVIZWxwZXIucmVhZEFzVXBsb2FkZWRGaWxlJChmaWxlKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCh1cGxvYWRlZEZpbGUpID0+IHRoaXMuZHJhZnRzU2VydmljZS5jcmVhdGVQcm9mc3Ryb3kkKHsgZmlsZTogdXBsb2FkZWRGaWxlLCBuYW1lOiB0aGlzLmZvcm0uY29udHJvbHMubmFtZS52YWx1ZS50cmltKCkgfHwgdW5kZWZpbmVkIH0pKSxcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VibWl0dGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAoZHJhZnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmNvbXBsZXRlV2l0aChkcmFmdCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogKGVycm9yOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0L7QutCw0LfRi9Cy0LDQtdGCINC+0YjQuNCx0LrRgyDRgdC+0LfQtNCw0L3QuNGPINCyINGE0L7RgNC80LU6INC+0YjQuNCx0LrQuCDQv9GA0L7QstC10YDQutC4INC00LDQvdC90YvRhSDRgyDQv9C+0LvQtdC5LCDQvtGI0LjQsdC60YMg0YfRgtC10L3QuNGPINGE0LDQudC70LAg0YMg0L/QvtC70Y8g0YTQsNC50LvQsCwg0L7RgdGC0LDQu9GM0L3Ri9C1INC+0YjQuNCx0LrQvtC5INGE0L7RgNC80YsgKDQwMSDQvtCx0YDQsNCx0LDRgtGL0LLQsNC10YIg0LDQstGC0L7RgNC40LfQsNGG0LjRjykuXG4gICAgICog0JTQuNCw0LvQvtCzINC+0YHRgtCw0ZHRgtGB0Y8g0L7RgtC60YDRi9GC0YvQvC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlcnJvciDQntGI0LjQsdC60LAg0YfRgtC10L3QuNGPINGE0LDQudC70LAg0LjQu9C4INC30LDQv9GA0L7RgdCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgYXBwbHlFcnJvcihlcnJvcjogdW5rbm93bik6IHZvaWQge1xuICAgICAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmZpbGUuc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IG5ldyBUdWlWYWxpZGF0aW9uRXJyb3IoJ9Cd0LUg0YPQtNCw0LvQvtGB0Ywg0L/RgNC+0YfQuNGC0LDRgtGMINGE0LDQudC7LicpIH0pO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKGVycm9yLnN0YXR1cyBhcyBIdHRwU3RhdHVzQ29kZSkgPT09IEh0dHBTdGF0dXNDb2RlLlVuYXV0aG9yaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBlcnJvcnMgfSA9IChlcnJvci5lcnJvciA/PyB7fSkgYXMgUGFydGlhbDxTY0lBcGlFcnJvclJlc3BvbnNlPjtcblxuICAgICAgICBpZiAoKGVycm9yLnN0YXR1cyBhcyBIdHRwU3RhdHVzQ29kZSkgIT09IEh0dHBTdGF0dXNDb2RlLlVucHJvY2Vzc2FibGVFbnRpdHkgfHwgIWVycm9ycykge1xuICAgICAgICAgICAgdGhpcy5mb3JtLnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBuZXcgVHVpVmFsaWRhdGlvbkVycm9yKFNjQXBpRXJyb3JIZWxwZXIuZ2V0TWVzc2FnZShlcnJvciwgJ9Cd0LUg0YPQtNCw0LvQvtGB0Ywg0YHQvtC30LTQsNGC0Ywg0LfQsNGP0LLQutGDLicpKSB9KTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmVudHJpZXMoZXJyb3JzKS5mb3JFYWNoKChba2V5LCBtZXNzYWdlc10pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBrZXkgPT09ICduYW1lJyA/IHRoaXMuZm9ybS5jb250cm9scy5uYW1lIDogdGhpcy5mb3JtLmNvbnRyb2xzLmZpbGU7XG5cbiAgICAgICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IG5ldyBUdWlWYWxpZGF0aW9uRXJyb3IobWVzc2FnZXMuam9pbignICcpKSB9KTtcbiAgICAgICAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8Zm9ybVxuICAgIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC01XCJcbiAgICAobmdTdWJtaXQpPVwic3VibWl0KClcIlxuPlxuICAgIDwhLS0g0KTQsNC50LsuINCf0YDQuNGH0LjQvdGDINC+0YLQutC70L7QvdC10L3QuNGPINGE0LDQudC70LAg0L/QvtC60LDQt9GL0LLQsNC10YIg0YHRgtGA0L7QutCwINGE0LDQudC70LAsINC/0L7QtCDQv9C+0LvQtdC8INC+0L3QsCDQvdC1INC/0L7QstGC0L7RgNGP0LXRgtGB0Y8uINCd0LXQt9Cw0L/QvtC70L3QtdC90L3QvtC1INC/0L7Qu9C1INC/0L7QtNGB0LLQtdGH0LjQstCw0LXRgtGB0Y8g0YLQvtC70YzQutC+INC/0L7RgdC70LUg0L/QvtC/0YvRgtC60Lgg0YHQvtC30LTQsNGC0Ywg0LfQsNGP0LLQutGDLiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMVwiPlxuICAgICAgICBAbGV0IGZpbGUgPSBmb3JtLmNvbnRyb2xzLmZpbGUudmFsdWU7XG4gICAgICAgIEBsZXQgcmVqZWN0ZWQgPSBmaWxlIHwgdHVpRmlsZVJlamVjdGVkOiB7IGFjY2VwdCB9IHwgYXN5bmM7XG4gICAgICAgIEBpZiAoIWZpbGUpIHtcbiAgICAgICAgICAgIDxsYWJlbCB0dWlJbnB1dEZpbGVzPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0dWlJbnB1dEZpbGVzXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImZpbGVcIlxuICAgICAgICAgICAgICAgICAgICBbYWNjZXB0XT1cImFjY2VwdFwiXG4gICAgICAgICAgICAgICAgICAgIFtpbnZhbGlkXT1cInN1Ym1pdEF0dGVtcHRlZCgpID8gbnVsbCA6IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgfVxuICAgICAgICA8dHVpLWZpbGVzPlxuICAgICAgICAgICAgQGlmIChmaWxlKSB7XG4gICAgICAgICAgICAgICAgPHR1aS1maWxlXG4gICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJyZWplY3RlZCA/ICdlcnJvcicgOiAnbm9ybWFsJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtmaWxlXT1cInJlamVjdGVkID8/IGZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAocmVtb3ZlKT1cInJlbW92ZUZpbGUoKVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC90dWktZmlsZXM+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ib2R5LXMgdGV4dC10dWktdGV4dC0wMlwiPtCk0LDQudC7IEV4Y2VsLCDQstGL0LPRgNGD0LbQtdC90L3Ri9C5INC40Lcg0L/RgNC+0LPRgNCw0LzQvNGLIMKr0J/RgNC+0YTRgdGC0YDQvtC5wrs6IHt7IGFjY2VwdCB9fTwvc3Bhbj5cbiAgICAgICAgQGlmICghcmVqZWN0ZWQpIHtcbiAgICAgICAgICAgIEBsZXQgZmlsZUVycm9yVmlzaWJsZSA9IHN1Ym1pdEF0dGVtcHRlZCgpIHx8ICFmb3JtLmNvbnRyb2xzLmZpbGUuaGFzRXJyb3IoJ3JlcXVpcmVkJyk7XG4gICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZmlsZVwiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cImZpbGVFcnJvclZpc2libGUgPyAoWydyZXF1aXJlZCcsICdzZXJ2ZXJSZXNwb25zZSddIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jKSA6IG51bGxcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSDQndCw0LfQstCw0L3QuNC1INC30LDRj9Cy0LrQuC4gLS0+XG4gICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICDQndCw0LfQstCw0L3QuNC1INC30LDRj9Cy0LrQuFxuICAgICAgICA8dHVpLXRleHRmaWVsZD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR1aVRleHRmaWVsZFxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi0J3QsNC/0YDQuNC80LXRgDog0JHQsNC70LrQvtC90YssINC+0LHRitC10LrRgiDQvdCwINCb0LXQvdC40L3QsFwiXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICBbbWF4TGVuZ3RoXT1cIm5hbWVNYXhMZW5ndGhcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC90dWktdGV4dGZpZWxkPlxuICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgIC8+XG4gICAgPC9sYWJlbD5cblxuICAgIEBpZiAoZm9ybS5lcnJvcnM/Llsnc2VydmVyUmVzcG9uc2UnXSkge1xuICAgICAgICA8dHVpLWVycm9yIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiIC8+XG4gICAgfVxuXG4gICAgPHR1aS1ub3RpZmljYXRpb25cbiAgICAgICAgYXBwZWFyYW5jZT1cImluZm9cIlxuICAgICAgICBzaXplPVwibVwiXG4gICAgPlxuICAgICAgICDQntCx0YDQsNCx0L7RgtC60LAg0YTQsNC50LvQsCDQstGL0L/QvtC70L3Rj9C10YLRgdGPINCyINGE0L7QvdC1OiDQv9C+0LfQuNGG0LjQuCDQuCDRhtC10L3RiyDQv9C+0Y/QstGP0YLRgdGPINCyINGH0LXRgNC90L7QstC40LrQtSDRh9C10YDQtdC3INC90LXQutC+0YLQvtGA0L7QtSDQstGA0LXQvNGPLlxuICAgIDwvdHVpLW5vdGlmaWNhdGlvbj5cblxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMlwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5zYy5zZW5kXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cInN1Ym1pdHRpbmcoKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgINCh0L7Qt9C00LDRgtGMINC30LDRj9Cy0LrRg1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInN1Ym1pdHRpbmcoKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY29udGV4dC4kaW1wbGljaXQuY29tcGxldGUoKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgINCe0YLQvNC10L3QsFxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Перечисление состояний черновика Профстрой для отображения пользователю.
3
+ */
4
+ // eslint-disable-next-line no-shadow
5
+ export var ScProfstroyDraftState;
6
+ (function (ScProfstroyDraftState) {
7
+ /**
8
+ * Выполняется обработка.
9
+ */
10
+ ScProfstroyDraftState["processing"] = "processing";
11
+ /**
12
+ * Актуализирован, срок действия не истёк.
13
+ */
14
+ ScProfstroyDraftState["actual"] = "actual";
15
+ /**
16
+ * Актуализирован, но срок действия истёк.
17
+ */
18
+ ScProfstroyDraftState["outdated"] = "outdated";
19
+ /**
20
+ * Обработка завершилась с ошибкой.
21
+ */
22
+ ScProfstroyDraftState["error"] = "error";
23
+ /**
24
+ * Требуется актуализация после изменения состава.
25
+ */
26
+ ScProfstroyDraftState["needsActualization"] = "needsActualization";
27
+ /**
28
+ * Состояние не известно.
29
+ */
30
+ ScProfstroyDraftState["unknown"] = "unknown";
31
+ })(ScProfstroyDraftState || (ScProfstroyDraftState = {}));
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJvZnN0cm95LWRyYWZ0LXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL29yZGVyL2RyYWZ0L3Byb2ZzdHJveS9lbnVtcy9zYy1wcm9mc3Ryb3ktZHJhZnQtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxxQ0FBcUM7QUFDckMsTUFBTSxDQUFOLElBQVkscUJBOEJYO0FBOUJELFdBQVkscUJBQXFCO0lBQzdCOztPQUVHO0lBQ0gsa0RBQXlCLENBQUE7SUFFekI7O09BRUc7SUFDSCwwQ0FBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILDhDQUFxQixDQUFBO0lBRXJCOztPQUVHO0lBQ0gsd0NBQWUsQ0FBQTtJQUVmOztPQUVHO0lBQ0gsa0VBQXlDLENBQUE7SUFFekM7O09BRUc7SUFDSCw0Q0FBbUIsQ0FBQTtBQUN2QixDQUFDLEVBOUJXLHFCQUFxQixLQUFyQixxQkFBcUIsUUE4QmhDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDQn9C10YDQtdGH0LjRgdC70LXQvdC40LUg0YHQvtGB0YLQvtGP0L3QuNC5INGH0LXRgNC90L7QstC40LrQsCDQn9GA0L7RhNGB0YLRgNC+0Lkg0LTQu9GPINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GOLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93XG5leHBvcnQgZW51bSBTY1Byb2ZzdHJveURyYWZ0U3RhdGUge1xuICAgIC8qKlxuICAgICAqINCS0YvQv9C+0LvQvdGP0LXRgtGB0Y8g0L7QsdGA0LDQsdC+0YLQutCwLlxuICAgICAqL1xuICAgIHByb2Nlc3NpbmcgPSAncHJvY2Vzc2luZycsXG5cbiAgICAvKipcbiAgICAgKiDQkNC60YLRg9Cw0LvQuNC30LjRgNC+0LLQsNC9LCDRgdGA0L7QuiDQtNC10LnRgdGC0LLQuNGPINC90LUg0LjRgdGC0ZHQui5cbiAgICAgKi9cbiAgICBhY3R1YWwgPSAnYWN0dWFsJyxcblxuICAgIC8qKlxuICAgICAqINCQ0LrRgtGD0LDQu9C40LfQuNGA0L7QstCw0L0sINC90L4g0YHRgNC+0Log0LTQtdC50YHRgtCy0LjRjyDQuNGB0YLRkdC6LlxuICAgICAqL1xuICAgIG91dGRhdGVkID0gJ291dGRhdGVkJyxcblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQvtGC0LrQsCDQt9Cw0LLQtdGA0YjQuNC70LDRgdGMINGBINC+0YjQuNCx0LrQvtC5LlxuICAgICAqL1xuICAgIGVycm9yID0gJ2Vycm9yJyxcblxuICAgIC8qKlxuICAgICAqINCi0YDQtdCx0YPQtdGC0YHRjyDQsNC60YLRg9Cw0LvQuNC30LDRhtC40Y8g0L/QvtGB0LvQtSDQuNC30LzQtdC90LXQvdC40Y8g0YHQvtGB0YLQsNCy0LAuXG4gICAgICovXG4gICAgbmVlZHNBY3R1YWxpemF0aW9uID0gJ25lZWRzQWN0dWFsaXphdGlvbicsXG5cbiAgICAvKipcbiAgICAgKiDQodC+0YHRgtC+0Y/QvdC40LUg0L3QtSDQuNC30LLQtdGB0YLQvdC+LlxuICAgICAqL1xuICAgIHVua25vd24gPSAndW5rbm93bicsXG59XG4iXX0=