@sankhyalabs/sankhyablocks 1.4.0-beta.2 → 1.4.0-beta.4

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 (152) hide show
  1. package/dist/cjs/{index-b0b676c5.js → index-6fcf07f3.js} +159 -1515
  2. package/dist/cjs/loader.cjs.js +2 -18
  3. package/dist/cjs/sankhyablocks.cjs.js +4 -116
  4. package/dist/cjs/snk-application.cjs.entry.js +53 -217
  5. package/dist/cjs/snk-crud.cjs.entry.js +9 -3
  6. package/dist/cjs/snk-data-unit.cjs.entry.js +23 -23
  7. package/dist/cjs/snk-filter-bar_5.cjs.entry.js +883 -0
  8. package/dist/cjs/snk-filter-binary-select.cjs.entry.js +1 -1
  9. package/dist/cjs/snk-filter-detail.cjs.entry.js +32 -21
  10. package/dist/cjs/snk-filter-multi-select.cjs.entry.js +1 -1
  11. package/dist/cjs/snk-filter-number.cjs.entry.js +1 -1
  12. package/dist/cjs/snk-filter-period.cjs.entry.js +1 -1
  13. package/dist/cjs/snk-filter-personalized.cjs.entry.js +23 -31
  14. package/dist/cjs/snk-filter-search.cjs.entry.js +3 -12
  15. package/dist/cjs/snk-filter-text.cjs.entry.js +1 -1
  16. package/dist/cjs/{snk-form.cjs.entry.js → snk-form_2.cjs.entry.js} +119 -5
  17. package/dist/cjs/snk-pesquisa.cjs.entry.js +5 -5
  18. package/dist/cjs/{taskbar-elements-283c737e.js → taskbar-elements-aedfeae6.js} +1 -1
  19. package/dist/cjs/teste-pesquisa.cjs.entry.js +5 -5
  20. package/dist/collection/components/snk-crud/snk-crud.js +29 -0
  21. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-personalized.js +0 -39
  22. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-search.js +0 -39
  23. package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-detail.js +30 -36
  24. package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-item.js +3 -14
  25. package/dist/collection/components/snk-filter-bar/filter-list/snk-filter-list.js +4 -12
  26. package/dist/collection/lib/http/data-fetcher/DataFetcher.js +3 -3
  27. package/dist/components/index.js +0 -4
  28. package/dist/components/snk-application2.js +13 -177
  29. package/dist/components/snk-crud.js +9 -2
  30. package/dist/components/snk-data-unit.js +2 -2
  31. package/dist/components/snk-filter-bar2.js +4 -2
  32. package/dist/components/snk-filter-detail2.js +31 -21
  33. package/dist/components/snk-filter-item2.js +4 -15
  34. package/dist/components/snk-filter-list2.js +5 -13
  35. package/dist/components/snk-filter-modal2.js +4 -19
  36. package/dist/components/snk-filter-personalized.js +3 -13
  37. package/dist/components/snk-filter-search.js +2 -13
  38. package/dist/components/snk-form2.js +1 -1
  39. package/dist/components/snk-grid2.js +1 -1
  40. package/dist/components/snk-pesquisa2.js +1 -1
  41. package/dist/components/snk-taskbar2.js +1 -1
  42. package/dist/components/teste-pesquisa.js +1 -1
  43. package/dist/{sankhyablocks/index-2b4d2d14.js → esm/index-81dda3cf.js} +160 -1508
  44. package/dist/esm/loader.js +2 -18
  45. package/dist/esm/sankhyablocks.js +4 -116
  46. package/dist/esm/snk-application.entry.js +14 -178
  47. package/dist/esm/snk-crud.entry.js +8 -2
  48. package/dist/esm/snk-data-unit.entry.js +3 -3
  49. package/dist/esm/{snk-filter-bar.entry.js → snk-filter-bar_5.entry.js} +417 -4
  50. package/dist/esm/snk-filter-binary-select.entry.js +1 -1
  51. package/dist/esm/snk-filter-detail.entry.js +32 -21
  52. package/dist/esm/snk-filter-multi-select.entry.js +1 -1
  53. package/dist/esm/snk-filter-number.entry.js +1 -1
  54. package/dist/esm/snk-filter-period.entry.js +1 -1
  55. package/dist/esm/snk-filter-personalized.entry.js +3 -11
  56. package/dist/esm/snk-filter-search.entry.js +2 -11
  57. package/dist/esm/snk-filter-text.entry.js +1 -1
  58. package/dist/{sankhyablocks/snk-form.entry.js → esm/snk-form_2.entry.js} +117 -4
  59. package/dist/esm/snk-pesquisa.entry.js +2 -2
  60. package/dist/esm/{taskbar-elements-35d64ff9.js → taskbar-elements-38eb5d51.js} +1 -1
  61. package/dist/esm/teste-pesquisa.entry.js +2 -2
  62. package/dist/sankhyablocks/index.esm.js +0 -1
  63. package/dist/sankhyablocks/p-01823784.entry.js +1 -0
  64. package/dist/sankhyablocks/p-0352c0e2.entry.js +1 -0
  65. package/dist/sankhyablocks/p-07ebda01.entry.js +1 -0
  66. package/dist/sankhyablocks/p-46caa101.entry.js +1 -0
  67. package/dist/sankhyablocks/p-586e2522.js +1 -0
  68. package/dist/sankhyablocks/p-6f8303f3.entry.js +1 -0
  69. package/dist/sankhyablocks/p-746fc78b.entry.js +1 -0
  70. package/dist/sankhyablocks/p-77216252.entry.js +1 -0
  71. package/dist/sankhyablocks/p-86f15ffe.js +1 -0
  72. package/dist/sankhyablocks/p-8bbc0cbb.entry.js +74 -0
  73. package/dist/sankhyablocks/p-8f3c5709.entry.js +1 -0
  74. package/dist/sankhyablocks/p-97009a2c.entry.js +1 -0
  75. package/dist/sankhyablocks/p-9dd2b8cb.js +1 -0
  76. package/dist/sankhyablocks/p-aecf3e0a.entry.js +1 -0
  77. package/dist/sankhyablocks/p-c1c3b5d8.entry.js +1 -0
  78. package/dist/sankhyablocks/p-c9eec639.entry.js +1 -0
  79. package/dist/sankhyablocks/p-eea6444c.entry.js +1 -0
  80. package/dist/sankhyablocks/p-fac2b6a9.js +2 -0
  81. package/dist/sankhyablocks/p-fb705f81.entry.js +1 -0
  82. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -129
  83. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-personalized.d.ts +0 -2
  84. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-search.d.ts +0 -2
  85. package/dist/types/components/snk-filter-bar/filter-item/snk-filter-detail.d.ts +1 -1
  86. package/dist/types/components/snk-filter-bar/filter-list/snk-filter-list.d.ts +1 -1
  87. package/dist/types/components.d.ts +4 -10
  88. package/package.json +1 -1
  89. package/react/components.d.ts +19 -0
  90. package/react/components.js +19 -0
  91. package/react/components.js.map +1 -1
  92. package/dist/cjs/app-globals-3a1e7e63.js +0 -5
  93. package/dist/cjs/css-shim-b8158822.js +0 -6
  94. package/dist/cjs/dom-36862b77.js +0 -75
  95. package/dist/cjs/index-84fe3b86.js +0 -20
  96. package/dist/cjs/index-93965c41.js +0 -141
  97. package/dist/cjs/index-e90ae303.js +0 -2408
  98. package/dist/cjs/shadow-css-346c0795.js +0 -389
  99. package/dist/cjs/snk-filter-bar.cjs.entry.js +0 -466
  100. package/dist/cjs/snk-filter-item.cjs.entry.js +0 -177
  101. package/dist/cjs/snk-filter-list.cjs.entry.js +0 -91
  102. package/dist/cjs/snk-filter-modal.cjs.entry.js +0 -37
  103. package/dist/cjs/snk-grid.cjs.entry.js +0 -79
  104. package/dist/cjs/snk-taskbar.cjs.entry.js +0 -160
  105. package/dist/cjs/taskbar-processor-6bd0d35c.js +0 -47
  106. package/dist/components/index2.js +0 -2394
  107. package/dist/components/index3.js +0 -139
  108. package/dist/esm/app-globals-0f993ce5.js +0 -3
  109. package/dist/esm/css-shim-b3f2ee8d.js +0 -4
  110. package/dist/esm/dom-665d6011.js +0 -73
  111. package/dist/esm/index-2b4d2d14.js +0 -3262
  112. package/dist/esm/index-5992b7e6.js +0 -139
  113. package/dist/esm/index-c683b2b0.js +0 -2394
  114. package/dist/esm/index-c71285cb.js +0 -17
  115. package/dist/esm/shadow-css-b18e99d7.js +0 -387
  116. package/dist/esm/snk-filter-item.entry.js +0 -173
  117. package/dist/esm/snk-filter-list.entry.js +0 -87
  118. package/dist/esm/snk-filter-modal.entry.js +0 -33
  119. package/dist/esm/snk-form.entry.js +0 -129
  120. package/dist/esm/snk-grid.entry.js +0 -75
  121. package/dist/esm/snk-taskbar.entry.js +0 -156
  122. package/dist/esm/taskbar-processor-aa6772c9.js +0 -45
  123. package/dist/sankhyablocks/SnkMessageBuilder-35a20271.js +0 -199
  124. package/dist/sankhyablocks/app-globals-0f993ce5.js +0 -3
  125. package/dist/sankhyablocks/css-shim-b3f2ee8d.js +0 -4
  126. package/dist/sankhyablocks/dom-665d6011.js +0 -73
  127. package/dist/sankhyablocks/filter-item-type.enum-a79b2fa8.js +0 -14
  128. package/dist/sankhyablocks/index-5992b7e6.js +0 -139
  129. package/dist/sankhyablocks/index-c683b2b0.js +0 -2394
  130. package/dist/sankhyablocks/index-c71285cb.js +0 -17
  131. package/dist/sankhyablocks/shadow-css-b18e99d7.js +0 -387
  132. package/dist/sankhyablocks/snk-application.entry.js +0 -8166
  133. package/dist/sankhyablocks/snk-crud.entry.js +0 -66
  134. package/dist/sankhyablocks/snk-data-unit.entry.js +0 -268
  135. package/dist/sankhyablocks/snk-filter-bar.entry.js +0 -462
  136. package/dist/sankhyablocks/snk-filter-binary-select.entry.js +0 -43
  137. package/dist/sankhyablocks/snk-filter-detail.entry.js +0 -80
  138. package/dist/sankhyablocks/snk-filter-item.entry.js +0 -173
  139. package/dist/sankhyablocks/snk-filter-list.entry.js +0 -87
  140. package/dist/sankhyablocks/snk-filter-modal.entry.js +0 -33
  141. package/dist/sankhyablocks/snk-filter-multi-select.entry.js +0 -19
  142. package/dist/sankhyablocks/snk-filter-number.entry.js +0 -20
  143. package/dist/sankhyablocks/snk-filter-period.entry.js +0 -33
  144. package/dist/sankhyablocks/snk-filter-personalized.entry.js +0 -85
  145. package/dist/sankhyablocks/snk-filter-search.entry.js +0 -40
  146. package/dist/sankhyablocks/snk-filter-text.entry.js +0 -18
  147. package/dist/sankhyablocks/snk-grid.entry.js +0 -75
  148. package/dist/sankhyablocks/snk-pesquisa.entry.js +0 -311
  149. package/dist/sankhyablocks/snk-taskbar.entry.js +0 -156
  150. package/dist/sankhyablocks/taskbar-elements-35d64ff9.js +0 -90
  151. package/dist/sankhyablocks/taskbar-processor-aa6772c9.js +0 -45
  152. package/dist/sankhyablocks/teste-pesquisa.entry.js +0 -33
@@ -1,33 +0,0 @@
1
- import { r as registerInstance, h } from './index-2b4d2d14.js';
2
- import { a as ModalButtonStatus } from './index-c71285cb.js';
3
- import { h as ArrayUtils } from './index-c683b2b0.js';
4
-
5
- const SnkFilterModal = class {
6
- constructor(hostRef) {
7
- registerInstance(this, hostRef);
8
- }
9
- updateValue(id, value) {
10
- this.items = this.items.map(item => {
11
- if (item.id === id) {
12
- return Object.assign(Object.assign({}, item), { active: value });
13
- }
14
- return item;
15
- });
16
- }
17
- getActiveFiltersMsg() {
18
- const activeFilters = this.items.filter(item => item.active).length;
19
- if (activeFilters === 0) {
20
- return this.getMessage("snkFilterBar.noActiveFilters");
21
- }
22
- return this.getMessage(activeFilters > 1 ? "snkFilterBar.activeFilters" : "snkFilterBar.activeFilter", { ACTIVE_FILTERS: activeFilters });
23
- }
24
- getFilteredItems() {
25
- return this.items ? ArrayUtils.applyStringFilter(this._filterArgument, this.items) : [];
26
- }
27
- render() {
28
- const allowCancel = this.items.filter(item => item.active).length > 0;
29
- return (h("ez-modal-container", { modalTitle: this.modalTitle, modalSubTitle: this.modalSubTitle, cancelButtonLabel: this.cancelButtonLabel, okButtonLabel: this.okButtonLabel, onEzModalAction: evt => this.processModalAction(evt.detail), cancelButtonStatus: allowCancel ? ModalButtonStatus.ENABLED : ModalButtonStatus.DISABLED }, h("div", { class: "sc-snk-filter-bar snk-filter-bar__filter-modal-content" }, h("div", null, this.useSearch ? h("ez-filter-input", { label: this.getMessage("snkFilterBar.modalFindFilter"), onEzChange: (evt) => this._filterArgument = evt.detail }) : undefined), this.getFilteredItems().length > 0 ? h("div", { class: "ez-text ez-text--medium ez-text--primary ez-padding-bottom--small" }, this.getActiveFiltersMsg()) : undefined, h("div", null, this.getFilteredItems().map(item => h("div", { class: "ez-padding--medium sc-snk-filter-bar snk-filter-bar__filter-modal-item ez-align--middle ez-margin-bottom--small" }, h("ez-check", { class: "sc-snk-filter-bar snk-filter-bar__filter-modal-item__check", onEzChange: evt => this.updateValue(item.id, evt.detail), enabled: item.enabled, value: item.active, mode: "switch" }), h("div", { class: "ez-text ez-title--primary ez-text--medium ez-margin-left--medium sc-snk-filter-bar snk-filter-bar__filter-modal-item__label" }, item.label)))), h("div", { class: "ez-text ez-text--large ez-align--middle ez-text--secondary ez-text--center ez-padding-bottom--large" }, this.infoText))));
30
- }
31
- };
32
-
33
- export { SnkFilterModal as snk_filter_modal };
@@ -1,129 +0,0 @@
1
- import { r as registerInstance, e as createEvent, h, g as getElement } from './index-2b4d2d14.js';
2
- import { A as ApplicationContext } from './index-c683b2b0.js';
3
- import { T as TaskbarProcessor } from './taskbar-processor-aa6772c9.js';
4
-
5
- const snkFormCss = ".sc-snk-form-h{display:block}.snk-form.sc-snk-form{position:relative;padding:var(--space--large);padding-top:var(--space--medium)}.snk-form__header.sc-snk-form{position:relative;padding-top:var(--space--medium);padding-bottom:var(--space--medium);margin-bottom:var(--space--medium)}.snk-form__header--fixed.sc-snk-form{position:sticky;top:0;background:var(--background--body);z-index:var(--more-visible, 2);padding-left:var(--space--large);padding-right:var(--space--large);margin-left:calc(var(--space--large) * -1);margin-right:calc(var(--space--large) * -1);width:calc(100% + (var(--space--large) * 2))}";
6
-
7
- const SnkForm = class {
8
- constructor(hostRef) {
9
- registerInstance(this, hostRef);
10
- this.exit = createEvent(this, "exit", 7);
11
- this.actionClick = createEvent(this, "actionClick", 7);
12
- this._taskbarProcessor = new TaskbarProcessor({
13
- "snkForm.regular": ["PREVIOUS", "NEXT", "DIVIDER", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "GRID_MODE", "INSERT"],
14
- "snkForm.finish_edition": ["CANCEL", "SAVE"]
15
- });
16
- }
17
- getFormConfig() {
18
- return (this._dataState && this._dataState.insertionMode ? this._insertionFormConfig : this._editionFormConfig);
19
- }
20
- getInsertionHiddenFields(formConfig) {
21
- const hiddenFields = [];
22
- formConfig === null || formConfig === void 0 ? void 0 : formConfig.forEach(cfg => {
23
- const def = this._dataUnit.getField(cfg.name);
24
- if (def === null || def === void 0 ? void 0 : def.readOnly) {
25
- hiddenFields.push(cfg.name);
26
- }
27
- });
28
- return hiddenFields;
29
- }
30
- exitForm() {
31
- if (this._dataUnit.isDirty()) {
32
- this._dataUnit.cancelEdition({ after: () => this.exit.emit() });
33
- }
34
- else {
35
- this.exit.emit();
36
- }
37
- }
38
- getDisabledButtons() {
39
- const disabled = [];
40
- if (!this._dataState.hasPrevious) {
41
- disabled.push("PREVIOUS");
42
- }
43
- if (!this._dataState.hasNext) {
44
- disabled.push("NEXT");
45
- }
46
- return disabled;
47
- }
48
- loadInsertionConfig() {
49
- if (this._dataUnit && this._configLoaded) {
50
- this._insertionFormConfig = this._editionFormConfig.filter(fieldCfg => {
51
- const def = this._dataUnit.getField(fieldCfg.name);
52
- if (def === null || def === void 0 ? void 0 : def.readOnly) {
53
- return false;
54
- }
55
- return true;
56
- });
57
- }
58
- }
59
- /**
60
- * Conforme mecanismo de mensagens, é possível customizar as mensagens dos blocos de construção
61
- * através de um pequeno modulo na estrutura da aplicação:
62
- * - Criar um arquivo no seguinte caminho: /messages/appmessages.msg.js.
63
- * Para conhecer os detalhes do módulo, vide o arquivo neste projeto "/src/lib/message/resources/snk-form.msg.ts"
64
- */
65
- getMessage(key) {
66
- return this._application.messagesBuilder.getMessage(key, this.getMessageParams());
67
- }
68
- getMessageParams() {
69
- var _a;
70
- return ((_a = this._dataState) === null || _a === void 0 ? void 0 : _a.selectedRecords) ? this._dataState.selectedRecords[0] : undefined;
71
- }
72
- componentWillLoad() {
73
- this._application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
74
- if (this._application) {
75
- this._application.loadFormConfig(this.configName).then(cfg => {
76
- this._configLoaded = true;
77
- this._editionFormConfig = cfg;
78
- this.loadInsertionConfig();
79
- });
80
- //Forçamos a carga dos acessos pra aproveitar a request inicial.
81
- this._application.getAllAccess();
82
- }
83
- let parent = this._element.parentElement;
84
- while (parent) {
85
- if (parent.tagName.toUpperCase() === "SNK-DATA-UNIT") {
86
- this._snkDataUnit = parent;
87
- this._dataUnit = this._snkDataUnit.dataUnit;
88
- this._dataState = this._snkDataUnit.dataState;
89
- if (this._dataUnit) {
90
- this.loadInsertionConfig();
91
- }
92
- else {
93
- this._snkDataUnit.addEventListener("dataUnitReady", (evt) => {
94
- this._dataUnit = evt.detail;
95
- this.loadInsertionConfig();
96
- });
97
- }
98
- this._snkDataUnit.addEventListener("dataStateChange", (evt) => {
99
- this._dataState = evt.detail;
100
- });
101
- break;
102
- }
103
- parent = parent.parentElement;
104
- }
105
- }
106
- componentWillRender() {
107
- var _a;
108
- const taskbarId = ((_a = this._dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "snkForm.finish_edition" : "snkForm.regular";
109
- const disabledButtons = [];
110
- if (!this._dataState || !this._dataState.hasPrevious) {
111
- disabledButtons.push("PREVIOUS");
112
- }
113
- if (!this._dataState || !this._dataState.hasNext) {
114
- disabledButtons.push("NEXT");
115
- }
116
- this._taskbarProcessor.process(taskbarId, this.taskbarManager, this._dataState, disabledButtons);
117
- }
118
- render() {
119
- var _a;
120
- if (!this._configLoaded || !this._dataUnit || !this._dataState) {
121
- return undefined;
122
- }
123
- return (h("section", { class: "snk-form" }, h("div", { class: "snk-form__header snk-form__header--fixed ez-row" }, h("div", { class: "ez-col ez-col--sd-6 ez-col--tb-6", key: "formHeader" }, h("ez-button", { title: this.getMessage("snkForm.goBackTitle"), mode: "icon", iconName: "arrow_back", class: "ez-padding-right--medium", size: "small", onClick: () => this.exitForm() }), h("h1", { class: "ez-title ez-title--primary ez-title--xlarge ez-align--middle" }, this.getMessage("snkForm.title"))), h("div", { class: "ez-col ez-col--sd-6 ez-col--tb-6 ez-align--right" }, h("snk-taskbar", { key: "formTaskbar", buttons: this._taskbarProcessor.buttons, disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, actionsList: this.actionsList, primaryButton: ((_a = this._dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "SAVE" : "INSERT", dataUnit: this._dataUnit }))), h("section", null, h("div", { class: "ez-row" }, h("div", { class: "ez-col ez-col--sd-12" }, h("ez-form", { key: "ezForm" + this._snkDataUnit.entityName, dataUnit: this._dataUnit, config: this.getFormConfig(), recordsValidator: this.recordsValidator }))))));
124
- }
125
- get _element() { return getElement(this); }
126
- };
127
- SnkForm.style = snkFormCss;
128
-
129
- export { SnkForm as snk_form };
@@ -1,75 +0,0 @@
1
- import { r as registerInstance, e as createEvent, h, g as getElement } from './index-2b4d2d14.js';
2
- import { A as ApplicationContext } from './index-c683b2b0.js';
3
- import { T as TaskbarElement } from './taskbar-elements-35d64ff9.js';
4
- import { T as TaskbarProcessor } from './taskbar-processor-aa6772c9.js';
5
-
6
- const snkGridCss = ".snk-grid__container.sc-snk-grid{display:flex;height:100%;width:100%}.snk-grid__header.sc-snk-grid{display:flex;flex-wrap:nowrap;width:100%}.snk-grid__filter-bar.sc-snk-grid{width:100%}.snk-grid__header-divider.sc-snk-grid{margin-bottom:var(--space--small)}";
7
-
8
- const SnkGrid = class {
9
- constructor(hostRef) {
10
- registerInstance(this, hostRef);
11
- this.actionClick = createEvent(this, "actionClick", 7);
12
- this.gridDoubleClick = createEvent(this, "gridDoubleClick", 7);
13
- this._topTaskbarProcessor = new TaskbarProcessor({
14
- "snkGridTopTaskbar": ["FORM_MODE", "CONFIG_GRID", "INSERT"]
15
- });
16
- this._headerTaskbarProcessor = new TaskbarProcessor({
17
- "snkGridHeaderTaskbar.unselected": ["REFRESH"],
18
- "snkGridHeaderTaskbar.selected": ["UPDATE", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "REFRESH"]
19
- });
20
- }
21
- actionClickHandler(evt) {
22
- if (evt.detail === TaskbarElement.CONFIG_GRID && this._grid) {
23
- this._grid.openGridConfig();
24
- }
25
- }
26
- saveConfig(config) {
27
- const snkApplication = ApplicationContext.getContextValue("__SNK__APPLICATION__");
28
- if (snkApplication) {
29
- snkApplication.saveGridConfig(config);
30
- }
31
- }
32
- componentWillLoad() {
33
- const snkApplication = ApplicationContext.getContextValue("__SNK__APPLICATION__");
34
- if (snkApplication) {
35
- snkApplication.loadGridConfig(this.configName).then(cfg => {
36
- this._gridConfig = cfg;
37
- this._configLoaded = true;
38
- });
39
- //Forçamos a carga dos acessos pra aproveitar a request inicial.
40
- snkApplication.getAllAccess();
41
- }
42
- let parent = this._element.parentElement;
43
- while (parent) {
44
- if (parent.tagName.toUpperCase() === "SNK-DATA-UNIT") {
45
- this._snkDataUnit = parent;
46
- this._dataUnit = this._snkDataUnit.dataUnit;
47
- if (!this._dataUnit) {
48
- this._snkDataUnit.addEventListener("dataUnitReady", (evt) => {
49
- this._dataUnit = evt.detail;
50
- });
51
- }
52
- this._snkDataUnit.addEventListener("dataStateChange", (evt) => {
53
- this._dataState = evt.detail;
54
- });
55
- break;
56
- }
57
- parent = parent.parentElement;
58
- }
59
- }
60
- componentWillRender() {
61
- const headerTaskbarId = this._dataState && this._dataState.selectedRecords.length > 0 ? "snkGridHeaderTaskbar.selected" : "snkGridHeaderTaskbar.unselected";
62
- this._headerTaskbarProcessor.process(headerTaskbarId, this.taskbarManager, this._dataState);
63
- this._topTaskbarProcessor.process("snkGridTopTaskbar", this.taskbarManager, this._dataState);
64
- }
65
- render() {
66
- if (!this._configLoaded || !this._dataUnit) {
67
- return undefined;
68
- }
69
- return (h("div", { class: "snk-grid__container ez-flex ez-flex--column ez-flex-item--auto ez-padding--large" }, h("div", { class: "snk-grid__header ez-padding-bottom--medium ez-margin-bottom--medium" }, h("snk-filter-bar", { dataUnit: this._dataUnit, class: "snk-grid__filter-bar ez-align--top", configName: this.configName }), h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin-left--medium snk-grid__header-divider" }), h("snk-taskbar", { class: "ez-padding-left--medium", onActionClick: evt => this.actionClickHandler(evt), key: "topTaskbar", dataUnit: this._dataUnit, buttons: this._topTaskbarProcessor.buttons, disabledButtons: this._topTaskbarProcessor.disabledButtons, customButtons: this._topTaskbarProcessor.customButtons, primaryButton: "INSERT" })), h("ez-grid", { ref: ref => this._grid = ref, dataUnit: this._dataUnit, key: "grid-" + this._snkDataUnit.entityName, config: this._gridConfig, onConfigChange: evt => { this.saveConfig(evt.detail); }, onEzDoubleClick: () => this.gridDoubleClick.emit(), statusResolver: this.statusResolver }, h("snk-taskbar", { dataUnit: this._dataUnit, buttons: this._headerTaskbarProcessor.buttons, disabledButtons: this._headerTaskbarProcessor.disabledButtons, customButtons: this._headerTaskbarProcessor.customButtons, slot: "leftButtons", actionsList: this.actionsList })), h("div", { class: "ez-col ez-col--sd-12" }, h("slot", { name: "SnkGridFooter" }))));
70
- }
71
- get _element() { return getElement(this); }
72
- };
73
- SnkGrid.style = snkGridCss;
74
-
75
- export { SnkGrid as snk_grid };
@@ -1,156 +0,0 @@
1
- import { r as registerInstance, e as createEvent, h, f as Host } from './index-2b4d2d14.js';
2
- import { A as ApplicationContext } from './index-c683b2b0.js';
3
- import { T as TaskbarElement, V as VisibleWhenForbidden, A as AuthorizationElements, b as buildElem, a as buildCustomButton } from './taskbar-elements-35d64ff9.js';
4
-
5
- const snkTaskbarCss = ".sc-snk-taskbar-h{display:flex}";
6
-
7
- const SnkTaskbar = class {
8
- constructor(hostRef) {
9
- registerInstance(this, hostRef);
10
- this.actionClick = createEvent(this, "actionClick", 7);
11
- this._titleKeyByElement = {
12
- [TaskbarElement.UPDATE]: "snkTaskbar.titleUpdate",
13
- [TaskbarElement.PREVIOUS]: "snkTaskbar.titlePrevious",
14
- [TaskbarElement.NEXT]: "snkTaskbar.titleNext",
15
- [TaskbarElement.REFRESH]: "snkTaskbar.titleRefresh",
16
- [TaskbarElement.CLONE]: "snkTaskbar.titleClone",
17
- [TaskbarElement.REMOVE]: "snkTaskbar.titleRemove",
18
- [TaskbarElement.MORE_OPTIONS]: "snkTaskbar.titleMoreOptions",
19
- [TaskbarElement.INSERT]: "snkTaskbar.titleInsert",
20
- [TaskbarElement.CANCEL]: "snkTaskbar.titleCancel",
21
- [TaskbarElement.SAVE]: "snkTaskbar.titleSave",
22
- [TaskbarElement.GRID_MODE]: "snkTaskbar.titleGridMode",
23
- [TaskbarElement.CONFIG_GRID]: "snkTaskbar.titleConfigGrid",
24
- [TaskbarElement.FORM_MODE]: "snkTaskbar.titleFormMode"
25
- };
26
- }
27
- observeButtons() {
28
- this._definitions = undefined;
29
- }
30
- // Internal methods
31
- elementsFromString(strButtons) {
32
- const elements = [];
33
- if (strButtons) {
34
- strButtons.split(",").forEach(buttonName => {
35
- buttonName = buttonName.trim();
36
- if (VisibleWhenForbidden[buttonName] || this.isAllowed(buttonName)) {
37
- elements.push(buttonName.trim());
38
- }
39
- });
40
- }
41
- return elements;
42
- }
43
- isAllowed(buttonName) {
44
- if (AuthorizationElements[buttonName]) {
45
- return this._permissions ? this._permissions.isSup || this._permissions[buttonName] : false;
46
- }
47
- return true;
48
- }
49
- /**
50
- * Conforme mecanismo de mensagens, é possível customizar as mensagens dos blocos de construção
51
- * através de um pequeno modulo na estrutura da aplicação:
52
- * - Criar um arquivo no seguinte caminho: /messages/appmessages.msg.js.
53
- * Para conhecer os detalhes do módulo, vide o arquivo neste projeto "/src/lib/message/resources/snk-taskbar.msg.ts"
54
- */
55
- getTitle(element) {
56
- let key;
57
- if (this.isAllowed(element)) {
58
- key = this._titleKeyByElement[element];
59
- }
60
- else {
61
- key = "snkTaskbar.forbidden";
62
- }
63
- return key ? this._application.messagesBuilder.getMessage(key, {}) : "";
64
- }
65
- elementClick(elem) {
66
- if (this.dataUnit) {
67
- switch (elem) {
68
- case TaskbarElement.PREVIOUS:
69
- this.dataUnit.previousRecord();
70
- break;
71
- case TaskbarElement.NEXT:
72
- this.dataUnit.nextRecord();
73
- break;
74
- case TaskbarElement.REFRESH:
75
- this.dataUnit.loadData();
76
- break;
77
- case TaskbarElement.CLONE:
78
- this.dataUnit.copySelected();
79
- break;
80
- case TaskbarElement.REMOVE:
81
- this.dataUnit.removeSelectedRecords();
82
- break;
83
- case TaskbarElement.INSERT:
84
- this.dataUnit.addRecord();
85
- break;
86
- case TaskbarElement.CANCEL:
87
- this.dataUnit.cancelEdition();
88
- break;
89
- case TaskbarElement.SAVE:
90
- this.dataUnit.saveData();
91
- break;
92
- }
93
- }
94
- this.actionClick.emit(elem);
95
- }
96
- isEnabled(elem) {
97
- if (!this.isAllowed(elem)) {
98
- return false;
99
- }
100
- return !(this.disabledButtons && this.disabledButtons.includes(elem));
101
- }
102
- getElement(index, def) {
103
- let className = def === this.primaryButton ? "ez-button--primary " : "";
104
- if (index > 1) {
105
- className += "ez-padding-left--medium";
106
- }
107
- if (TaskbarElement[def.toString()]) {
108
- return buildElem(def, className, elem => this.getTitle(elem), elem => this.elementClick(elem), elem => this.isEnabled(elem), this.actionsList);
109
- }
110
- else {
111
- return buildCustomButton(def, className, elem => this.elementClick(elem), elem => this.isEnabled(elem));
112
- }
113
- }
114
- // Lifecycle
115
- componentWillLoad() {
116
- this._application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
117
- if (this._application) {
118
- this._application.getAllAccess().then(access => this._permissions = access);
119
- }
120
- else {
121
- this._permissions = {};
122
- }
123
- }
124
- componentWillRender() {
125
- if (this._definitions == undefined && this._permissions) {
126
- this._definitions = this.elementsFromString(this.buttons);
127
- }
128
- }
129
- render() {
130
- if (this._definitions === undefined) {
131
- return undefined;
132
- }
133
- let index = 0;
134
- return (h(Host, null, this._definitions.map((elem) => {
135
- if (elem === TaskbarElement.DIVIDER) {
136
- index = 0;
137
- }
138
- else {
139
- index++;
140
- }
141
- if (TaskbarElement[elem]) {
142
- return this.getElement(index, TaskbarElement[elem]);
143
- }
144
- if (this.customButtons.has(elem)) {
145
- return this.getElement(index, this.customButtons.get(elem));
146
- }
147
- return h("slot", { name: elem });
148
- })));
149
- }
150
- static get watchers() { return {
151
- "buttons": ["observeButtons"]
152
- }; }
153
- };
154
- SnkTaskbar.style = snkTaskbarCss;
155
-
156
- export { SnkTaskbar as snk_taskbar };
@@ -1,45 +0,0 @@
1
- class TaskbarProcessor {
2
- constructor(defaultButtons) {
3
- this._defaultButtons = defaultButtons;
4
- }
5
- process(taskbarId, taskbarManager, dataState, disabledButtons = []) {
6
- var _a;
7
- this.customButtons = new Map();
8
- this.buttons = "";
9
- this.disabledButtons = [];
10
- (_a = this.getButtonsArray(taskbarId, taskbarManager, dataState)) === null || _a === void 0 ? void 0 : _a.forEach(btnDef => {
11
- let buttonName;
12
- if (typeof btnDef === "string") {
13
- buttonName = btnDef;
14
- }
15
- else {
16
- const customBtn = btnDef;
17
- this.customButtons.set(customBtn.name, customBtn);
18
- buttonName = customBtn.name;
19
- }
20
- if (!this.isEnabled(taskbarId, taskbarManager, buttonName, dataState, disabledButtons)) {
21
- this.disabledButtons.push(buttonName);
22
- }
23
- if (this.buttons.length > 0) {
24
- this.buttons += ",";
25
- }
26
- this.buttons += buttonName;
27
- });
28
- }
29
- getButtonsArray(taskbarId, taskbarManager, dataState) {
30
- const defaults = this._defaultButtons[taskbarId];
31
- if (taskbarManager) {
32
- return taskbarManager.getButtons(taskbarId, dataState, [...defaults]);
33
- }
34
- return defaults;
35
- }
36
- isEnabled(taskbarId, taskbarManager, buttonName, dataState, disabled) {
37
- const originalValue = disabled.includes(buttonName) ? false : true;
38
- if (taskbarManager && taskbarManager.isEnabled) {
39
- return taskbarManager.isEnabled(taskbarId, dataState, buttonName, originalValue);
40
- }
41
- return originalValue;
42
- }
43
- }
44
-
45
- export { TaskbarProcessor as T };
@@ -1,199 +0,0 @@
1
- const snkDataUnitMessages = {
2
- saveInfo: {
3
- clone: "Duplicação realizada!",
4
- insert: "Inclusão realizada!",
5
- update: "Aleração realizada!"
6
- },
7
- cancelInfo: {
8
- clone: "Duplicação descartada!",
9
- insert: "A inclusão descartada!",
10
- update: "A edição foi descartada!"
11
- },
12
- removeInfo: "Registro removido com sucesso!",
13
- cancelConfirmationTitle: "Aviso",
14
- cancelConfirmation: "As alterações realizadas serão descartadas<br/><br/><b>Você realmente gostaria de cancelar?",
15
- removeConfirmationTitle: "Excluir",
16
- removeConfirmation: "Deseja realmente excluir o registro atual?",
17
- forbidden: "Sem permissão",
18
- forbiddenUpdate: "Não é possível fazer alterações. Verifique as permissões de acesso.",
19
- forbiddenInsert: "Não é possível incluir. Verifique as permissões de acesso.",
20
- forbiddenClone: "Não é possível duplicar. Verifique as permissões de acesso.",
21
- forbiddenRemove: "Não é possível remover. Verifique as permissões de acesso."
22
- };
23
-
24
- const snkFilterBarMessages = {
25
- "addFilter": "Adicionar filtro",
26
- "pinFilter": "Fixar filtro",
27
- "unpinFilter": "Desfixar filtro",
28
- "removeFilter": "Remover filtro",
29
- "cleanFilter": "Limpar",
30
- "applyFilter": "Aplicar",
31
- "findFilter": "Buscar filtros...",
32
- "findField": "Buscar filtros...",
33
- "modalFindFilter": "Buscar filtro",
34
- "emptyFiltersList": "Não há filtros disponíveis",
35
- "emptyAppliedFiltersList": "Não há filtros aplicados",
36
- "customFilter": "Filtro personalizado",
37
- "defaultFilter": "Filtro padrão",
38
- "failToLoadConfig": "Falha ao buscar configuração de filtros",
39
- "clearAllFilters": "Limpar todos os filtros",
40
- "successfullyCleaned": "Filtro limpo com sucesso!",
41
- "activeFilter": "{{ACTIVE_FILTERS}} filtro aplicado",
42
- "activeFilters": "{{ACTIVE_FILTERS}} filtros aplicados",
43
- "noActiveFilters": "Nenhum filtro aplicado",
44
- "modalDefaultFilterTitle": "Filtro padrão",
45
- "modalInfoTextEditDefault": "Use o layout antigo para editar o seu filtro padrão, em breve traremos uma nova experiência.",
46
- "modalInfoTextCreateDefault": "Use o layout antigo para criar o seu filtro padrão, em breve traremos uma nova experiência.",
47
- "modalPersonalizedFilterTitle": "Filtro personalizado",
48
- "modalPersonalizedFilterSubTitle": "Gerencie seus filtros",
49
- "modalInfoTextCreateEditPersonalized": "Use o layout antigo para criar ou editar filtros, em breve traremos uma nova experiência",
50
- "modalOkButtonLabel": "Aplicar",
51
- "modalCancelButtonLabel": "Limpar"
52
- };
53
-
54
- const snkFormMessages = {
55
- title: {
56
- clone: "Duplicar registro",
57
- insert: "Cadastrar registro",
58
- update: "Alterar registro",
59
- clean: "{{ENTITY_NAME}}"
60
- },
61
- goBackTitle: "Voltar"
62
- };
63
-
64
- const snkTaskbarMessages = {
65
- titleUpdate: "Editar",
66
- titlePrevious: "Anterior",
67
- titleNext: "Próximo",
68
- titleRefresh: "Atualizar",
69
- titleClone: "Duplicar",
70
- titleRemove: "Excluir",
71
- titleMoreOptions: "Mais Opções",
72
- titleInsert: "Cadastrar",
73
- titleCancel: "Cancelar",
74
- titleSave: "Salvar",
75
- titleGridMode: "Modo Grade",
76
- titleFormMode: "Modo Formulário",
77
- titleConfigGrid: "Configuração da grade",
78
- forbidden: "Permissão não liberada"
79
- };
80
-
81
- class SnkMessageBuilder {
82
- constructor() {
83
- this._defaults = {
84
- snkDataUnit: snkDataUnitMessages,
85
- snkForm: snkFormMessages,
86
- snkTaskbar: snkTaskbarMessages,
87
- snkFilterBar: snkFilterBarMessages
88
- };
89
- this._currentOperation = OperationMap.CLEAN;
90
- this.loadAppMessages().then((msgs) => {
91
- this._appMessages = msgs;
92
- }, error => {
93
- console.info('O arquivo de mensagens personalizadas não foi encontrado no caminho /messages/appmessages.js', error);
94
- });
95
- }
96
- /**
97
- * Existem mensagens sensíveis a operação. Por exemplo, a mensagem
98
- * de inclusão pode ser diferente da mensagem de alteração do mesmo
99
- * recurso. Para isso "currentOperation" pode variar de acordo com
100
- * OperationMap.
101
- */
102
- set currentOperation(op) {
103
- this._currentOperation = op;
104
- }
105
- /**
106
- * Método usado para se obter mensagens, respeitando o padrão do sistema
107
- * ou as mensagens específicas de cada tela
108
- *
109
- * @param key Chave usada para obter mensagens. Deve-se usar o separador "."
110
- * alcançar diversos níveis.
111
- * @param params Quando a mensagem possui o padrão {{NOME}} as ocorrências
112
- * serão substituidas pelo respectivo valor do param.
113
- * @returns A mensagem formatada.
114
- */
115
- getMessage(key, params) {
116
- if (key == undefined) {
117
- return undefined;
118
- }
119
- var parts = key.split(".");
120
- let msg = this.resolveMessage(parts, this._appMessages);
121
- if (msg == undefined) {
122
- msg = this.resolveMessage(parts, this._defaults);
123
- }
124
- if (this.customMessageBuilder) {
125
- const result = this.customMessageBuilder(key, msg, params);
126
- msg = result.message;
127
- params = result.params;
128
- }
129
- return this.postProcess(msg, params);
130
- }
131
- resolveMessage(keys, object) {
132
- if (object == undefined) {
133
- return undefined;
134
- }
135
- const key = keys[0];
136
- const result = object[key];
137
- if (result) {
138
- if (this.isOperationSensitive(result)) {
139
- return result[this._currentOperation];
140
- }
141
- else {
142
- const isLeaf = keys.length === 1 ||
143
- result == undefined ||
144
- typeof result === "string";
145
- return isLeaf ? result : this.resolveMessage(keys.slice(1), result);
146
- }
147
- }
148
- }
149
- isOperationSensitive(value) {
150
- return value[OperationMap.CLONE] != undefined ||
151
- value[OperationMap.INSERT] != undefined ||
152
- value[OperationMap.UPDATE] != undefined ||
153
- value[OperationMap.CLEAN] != undefined;
154
- }
155
- postProcess(message, params) {
156
- if (message) {
157
- const propPattern = /(.*?)\{\{(.+?)\}\}/g;
158
- let processed = "";
159
- let tail = message;
160
- let result;
161
- while ((result = propPattern.exec(message)) !== null) {
162
- const [match, head, attribute] = result;
163
- const tailIndex = result.index + match.length;
164
- tail = tailIndex < message.length ? message.substring(tailIndex) : "";
165
- let replacement = params ? params[attribute] : undefined;
166
- if (replacement == undefined) {
167
- replacement = "";
168
- }
169
- processed += head + replacement;
170
- }
171
- return processed + tail;
172
- }
173
- else {
174
- return message;
175
- }
176
- }
177
- loadAppMessages() {
178
- return new Promise((accept, reject) => {
179
- const messagesUrl = window['applicationenv'] !== "dev" ? `/${window["MGE_MODULE_NAME"]}/labsApps/${window["APPLICATION_NAME"]}/build/messages/appmessages.js`
180
- : '/messages/appmessages.js';
181
- import(/* webpackIgnore: true */ messagesUrl)
182
- .then(module => {
183
- accept(module.default);
184
- })
185
- .catch(reason => {
186
- reject(reason);
187
- });
188
- });
189
- }
190
- }
191
- var OperationMap;
192
- (function (OperationMap) {
193
- OperationMap["CLONE"] = "clone";
194
- OperationMap["INSERT"] = "insert";
195
- OperationMap["UPDATE"] = "update";
196
- OperationMap["CLEAN"] = "clean";
197
- })(OperationMap || (OperationMap = {}));
198
-
199
- export { OperationMap as O, SnkMessageBuilder as S };
@@ -1,3 +0,0 @@
1
- const globalScripts = () => {};
2
-
3
- export { globalScripts as g };
@@ -1,4 +0,0 @@
1
- /*
2
- Stencil Client Patch Esm v2.18.1 | MIT Licensed | https://stenciljs.com
3
- */
4
- var __assign=undefined&&undefined.__assign||function(){return (__assign=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var s in t=arguments[r])Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s]);return e}).apply(this,arguments)},StyleNode=function(){this.start=0,this.end=0,this.previous=null,this.parent=null,this.rules=null,this.parsedCssText="",this.cssText="",this.atRule=!1,this.type=0,this.keyframesName="",this.selector="",this.parsedSelector="";};function parse(e){return parseCss(lex(e=clean(e)),e)}function clean(e){return e.replace(RX.comments,"").replace(RX.port,"")}function lex(e){var t=new StyleNode;t.start=0,t.end=e.length;for(var r=t,n=0,s=e.length;n<s;n++)if(e[n]===OPEN_BRACE){r.rules||(r.rules=[]);var o=r,a=o.rules[o.rules.length-1]||null;(r=new StyleNode).start=n+1,r.parent=o,r.previous=a,o.rules.push(r);}else e[n]===CLOSE_BRACE&&(r.end=n+1,r=r.parent||t);return t}function parseCss(e,t){var r=t.substring(e.start,e.end-1);if(e.parsedCssText=e.cssText=r.trim(),e.parent){var n=e.previous?e.previous.end:e.parent.start;r=(r=(r=_expandUnicodeEscapes(r=t.substring(n,e.start-1))).replace(RX.multipleSpaces," ")).substring(r.lastIndexOf(";")+1);var s=e.parsedSelector=e.selector=r.trim();e.atRule=0===s.indexOf(AT_START),e.atRule?0===s.indexOf(MEDIA_START)?e.type=types.MEDIA_RULE:s.match(RX.keyframesRule)&&(e.type=types.KEYFRAMES_RULE,e.keyframesName=e.selector.split(RX.multipleSpaces).pop()):0===s.indexOf(VAR_START)?e.type=types.MIXIN_RULE:e.type=types.STYLE_RULE;}var o=e.rules;if(o)for(var a=0,i=o.length,l=void 0;a<i&&(l=o[a]);a++)parseCss(l,t);return e}function _expandUnicodeEscapes(e){return e.replace(/\\([0-9a-f]{1,6})\s/gi,(function(){for(var e=arguments[1],t=6-e.length;t--;)e="0"+e;return "\\"+e}))}var types={STYLE_RULE:1,KEYFRAMES_RULE:7,MEDIA_RULE:4,MIXIN_RULE:1e3},OPEN_BRACE="{",CLOSE_BRACE="}",RX={comments:/\/\*[^*]*\*+([^/*][^*]*\*+)*\//gim,port:/@import[^;]*;/gim,customProp:/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\n]|$)/gim,mixinProp:/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\n]|$)?/gim,mixinApply:/@apply\s*\(?[^);]*\)?\s*(?:[;\n]|$)?/gim,varApply:/[^;:]*?:[^;]*?var\([^;]*\)(?:[;\n]|$)?/gim,keyframesRule:/^@[^\s]*keyframes/,multipleSpaces:/\s+/g},VAR_START="--",MEDIA_START="@media",AT_START="@",VAR_USAGE_START=/\bvar\(/,VAR_ASSIGN_START=/\B--[\w-]+\s*:/,COMMENTS=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//gim,TRAILING_LINES=/^[\t ]+\n/gm;function findRegex(e,t,r){e.lastIndex=0;var n=t.substring(r).match(e);if(n){var s=r+n.index;return {start:s,end:s+n[0].length}}return null}function resolveVar(e,t,r){return e[t]?e[t]:r?executeTemplate(r,e):""}function findVarEndIndex(e,t){for(var r=0,n=t;n<e.length;n++){var s=e[n];if("("===s)r++;else if(")"===s&&--r<=0)return n+1}return n}function parseVar(e,t){var r=findRegex(VAR_USAGE_START,e,t);if(!r)return null;var n=findVarEndIndex(e,r.start),s=e.substring(r.end,n-1).split(","),o=s[0],a=s.slice(1);return {start:r.start,end:n,propName:o.trim(),fallback:a.length>0?a.join(",").trim():void 0}}function compileVar(e,t,r){var n=parseVar(e,r);if(!n)return t.push(e.substring(r,e.length)),e.length;var s=n.propName,o=null!=n.fallback?compileTemplate(n.fallback):void 0;return t.push(e.substring(r,n.start),(function(e){return resolveVar(e,s,o)})),n.end}function executeTemplate(e,t){for(var r="",n=0;n<e.length;n++){var s=e[n];r+="string"==typeof s?s:s(t);}return r}function findEndValue(e,t){for(var r=!1,n=!1,s=t;s<e.length;s++){var o=e[s];if(r)n&&'"'===o&&(r=!1),n||"'"!==o||(r=!1);else if('"'===o)r=!0,n=!0;else if("'"===o)r=!0,n=!1;else {if(";"===o)return s+1;if("}"===o)return s}}return s}function removeCustomAssigns(e){for(var t="",r=0;;){var n=findRegex(VAR_ASSIGN_START,e,r),s=n?n.start:e.length;if(t+=e.substring(r,s),!n)break;r=findEndValue(e,s);}return t}function compileTemplate(e){var t=0;e=removeCustomAssigns(e=e.replace(COMMENTS,"")).replace(TRAILING_LINES,"");for(var r=[];t<e.length;)t=compileVar(e,r,t);return r}function resolveValues(e){var t={};e.forEach((function(e){e.declarations.forEach((function(e){t[e.prop]=e.value;}));}));for(var r={},n=Object.entries(t),s=function(e){var t=!1;if(n.forEach((function(e){var n=e[0],s=executeTemplate(e[1],r);s!==r[n]&&(r[n]=s,t=!0);})),!t)return "break"},o=0;o<10;o++){if("break"===s())break}return r}function getSelectors(e,t){if(void 0===t&&(t=0),!e.rules)return [];var r=[];return e.rules.filter((function(e){return e.type===types.STYLE_RULE})).forEach((function(e){var n=getDeclarations(e.cssText);n.length>0&&e.parsedSelector.split(",").forEach((function(e){e=e.trim(),r.push({selector:e,declarations:n,specificity:computeSpecificity(),nu:t});})),t++;})),r}function computeSpecificity(e){return 1}var IMPORTANT="!important",FIND_DECLARATIONS=/(?:^|[;\s{]\s*)(--[\w-]*?)\s*:\s*(?:((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};{])+)|\{([^}]*)\}(?:(?=[;\s}])|$))/gm;function getDeclarations(e){for(var t,r=[];t=FIND_DECLARATIONS.exec(e.trim());){var n=normalizeValue(t[2]),s=n.value,o=n.important;r.push({prop:t[1].trim(),value:compileTemplate(s),important:o});}return r}function normalizeValue(e){var t=(e=e.replace(/\s+/gim," ").trim()).endsWith(IMPORTANT);return t&&(e=e.slice(0,e.length-IMPORTANT.length).trim()),{value:e,important:t}}function getActiveSelectors(e,t,r){var n=[],s=getScopesForElement(t,e);return r.forEach((function(e){return n.push(e)})),s.forEach((function(e){return n.push(e)})),sortSelectors(getSelectorsForScopes(n).filter((function(t){return matches(e,t.selector)})))}function getScopesForElement(e,t){for(var r=[];t;){var n=e.get(t);n&&r.push(n),t=t.parentElement;}return r}function getSelectorsForScopes(e){var t=[];return e.forEach((function(e){t.push.apply(t,e.selectors);})),t}function sortSelectors(e){return e.sort((function(e,t){return e.specificity===t.specificity?e.nu-t.nu:e.specificity-t.specificity})),e}function matches(e,t){return ":root"===t||"html"===t||e.matches(t)}function parseCSS(e){var t=parse(e),r=compileTemplate(e);return {original:e,template:r,selectors:getSelectors(t),usesCssVars:r.length>1}}function addGlobalStyle(e,t){if(e.some((function(e){return e.styleEl===t})))return !1;var r=parseCSS(t.textContent);return r.styleEl=t,e.push(r),!0}function updateGlobalScopes(e){var t=resolveValues(getSelectorsForScopes(e));e.forEach((function(e){e.usesCssVars&&(e.styleEl.textContent=executeTemplate(e.template,t));}));}function reScope(e,t){var r=e.template.map((function(r){return "string"==typeof r?replaceScope(r,e.scopeId,t):r})),n=e.selectors.map((function(r){return __assign(__assign({},r),{selector:replaceScope(r.selector,e.scopeId,t)})}));return __assign(__assign({},e),{template:r,selectors:n,scopeId:t})}function replaceScope(e,t,r){return e=replaceAll(e,"\\.".concat(t),".".concat(r))}function replaceAll(e,t,r){return e.replace(new RegExp(t,"g"),r)}function loadDocument(e,t){return loadDocumentStyles(e,t),loadDocumentLinks(e,t).then((function(){updateGlobalScopes(t);}))}function startWatcher(e,t){"undefined"!=typeof MutationObserver&&new MutationObserver((function(){loadDocumentStyles(e,t)&&updateGlobalScopes(t);})).observe(document.head,{childList:!0});}function loadDocumentLinks(e,t){for(var r=[],n=e.querySelectorAll('link[rel="stylesheet"][href]:not([data-no-shim])'),s=0;s<n.length;s++)r.push(addGlobalLink(e,t,n[s]));return Promise.all(r)}function loadDocumentStyles(e,t){return Array.from(e.querySelectorAll("style:not([data-styles]):not([data-no-shim])")).map((function(e){return addGlobalStyle(t,e)})).some(Boolean)}function addGlobalLink(e,t,r){var n=r.href;return fetch(n).then((function(e){return e.text()})).then((function(s){if(hasCssVariables(s)&&r.parentNode){hasRelativeUrls(s)&&(s=fixRelativeUrls(s,n));var o=e.createElement("style");o.setAttribute("data-styles",""),o.textContent=s,addGlobalStyle(t,o),r.parentNode.insertBefore(o,r),r.remove();}})).catch((function(e){console.error(e);}))}var CSS_VARIABLE_REGEXP=/[\s;{]--[-a-zA-Z0-9]+\s*:/m;function hasCssVariables(e){return e.indexOf("var(")>-1||CSS_VARIABLE_REGEXP.test(e)}var CSS_URL_REGEXP=/url[\s]*\([\s]*['"]?(?!(?:https?|data)\:|\/)([^\'\"\)]*)[\s]*['"]?\)[\s]*/gim;function hasRelativeUrls(e){return CSS_URL_REGEXP.lastIndex=0,CSS_URL_REGEXP.test(e)}function fixRelativeUrls(e,t){var r=t.replace(/[^/]*$/,"");return e.replace(CSS_URL_REGEXP,(function(e,t){var n=r+t;return e.replace(t,n)}))}var CustomStyle=function(){function e(e,t){this.win=e,this.doc=t,this.count=0,this.hostStyleMap=new WeakMap,this.hostScopeMap=new WeakMap,this.globalScopes=[],this.scopesMap=new Map,this.didInit=!1;}return e.prototype.i=function(){var e=this;return this.didInit||!this.win.requestAnimationFrame?Promise.resolve():(this.didInit=!0,new Promise((function(t){e.win.requestAnimationFrame((function(){startWatcher(e.doc,e.globalScopes),loadDocument(e.doc,e.globalScopes).then((function(){return t()}));}));})))},e.prototype.addLink=function(e){var t=this;return addGlobalLink(this.doc,this.globalScopes,e).then((function(){t.updateGlobal();}))},e.prototype.addGlobalStyle=function(e){addGlobalStyle(this.globalScopes,e)&&this.updateGlobal();},e.prototype.createHostStyle=function(e,t,r,n){if(this.hostScopeMap.has(e))throw new Error("host style already created");var s=this.registerHostTemplate(r,t,n),o=this.doc.createElement("style");return o.setAttribute("data-no-shim",""),s.usesCssVars?n?(o["s-sc"]=t="".concat(s.scopeId,"-").concat(this.count),o.textContent="/*needs update*/",this.hostStyleMap.set(e,o),this.hostScopeMap.set(e,reScope(s,t)),this.count++):(s.styleEl=o,s.usesCssVars||(o.textContent=executeTemplate(s.template,{})),this.globalScopes.push(s),this.updateGlobal(),this.hostScopeMap.set(e,s)):o.textContent=r,o},e.prototype.removeHost=function(e){var t=this.hostStyleMap.get(e);t&&t.remove(),this.hostStyleMap.delete(e),this.hostScopeMap.delete(e);},e.prototype.updateHost=function(e){var t=this.hostScopeMap.get(e);if(t&&t.usesCssVars&&t.isScoped){var r=this.hostStyleMap.get(e);if(r){var n=resolveValues(getActiveSelectors(e,this.hostScopeMap,this.globalScopes));r.textContent=executeTemplate(t.template,n);}}},e.prototype.updateGlobal=function(){updateGlobalScopes(this.globalScopes);},e.prototype.registerHostTemplate=function(e,t,r){var n=this.scopesMap.get(t);return n||((n=parseCSS(e)).scopeId=t,n.isScoped=r,this.scopesMap.set(t,n)),n},e}();!function(e){!e||e.__cssshim||e.CSS&&e.CSS.supports&&e.CSS.supports("color","var(--c)")||(e.__cssshim=new CustomStyle(e,e.document));}("undefined"!=typeof window&&window);