@omegagrid/editor 0.10.2 → 0.10.5

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 (141) hide show
  1. package/dist/commands/index.d.ts +3 -0
  2. package/dist/commands/index.d.ts.map +1 -0
  3. package/dist/commands/index.js +34 -0
  4. package/dist/commands/index.js.map +1 -0
  5. package/dist/index.d.ts +3 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +2 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/options.d.ts +12 -0
  10. package/dist/options.d.ts.map +1 -0
  11. package/dist/options.js +14 -0
  12. package/dist/options.js.map +1 -0
  13. package/dist/ui/editor.d.ts +76 -0
  14. package/dist/ui/editor.d.ts.map +1 -0
  15. package/dist/ui/editor.js +338 -0
  16. package/dist/ui/editor.js.map +1 -0
  17. package/dist/ui/editor.style.d.ts +2 -0
  18. package/dist/ui/editor.style.d.ts.map +1 -0
  19. package/dist/ui/editor.style.js +38 -0
  20. package/dist/ui/editor.style.js.map +1 -0
  21. package/dist/ui/editorZoom.d.ts +16 -0
  22. package/dist/ui/editorZoom.d.ts.map +1 -0
  23. package/dist/ui/editorZoom.js +82 -0
  24. package/dist/ui/editorZoom.js.map +1 -0
  25. package/dist/ui/editors/hyperlinkEditor.d.ts +10 -0
  26. package/dist/ui/editors/hyperlinkEditor.d.ts.map +1 -0
  27. package/dist/ui/editors/hyperlinkEditor.js +70 -0
  28. package/dist/ui/editors/hyperlinkEditor.js.map +1 -0
  29. package/dist/ui/editors/index.d.ts +6 -0
  30. package/dist/ui/editors/index.d.ts.map +1 -0
  31. package/dist/ui/editors/index.js +6 -0
  32. package/dist/ui/editors/index.js.map +1 -0
  33. package/dist/ui/editors/ruleEditor.d.ts +27 -0
  34. package/dist/ui/editors/ruleEditor.d.ts.map +1 -0
  35. package/dist/ui/editors/ruleEditor.js +251 -0
  36. package/dist/ui/editors/ruleEditor.js.map +1 -0
  37. package/dist/ui/editors/styleEditor.d.ts +14 -0
  38. package/dist/ui/editors/styleEditor.d.ts.map +1 -0
  39. package/dist/ui/editors/styleEditor.js +160 -0
  40. package/dist/ui/editors/styleEditor.js.map +1 -0
  41. package/dist/ui/editors/themeEditor.d.ts +24 -0
  42. package/dist/ui/editors/themeEditor.d.ts.map +1 -0
  43. package/dist/ui/editors/themeEditor.js +138 -0
  44. package/dist/ui/editors/themeEditor.js.map +1 -0
  45. package/dist/ui/editors/themeItemEditor.d.ts +22 -0
  46. package/dist/ui/editors/themeItemEditor.d.ts.map +1 -0
  47. package/dist/ui/editors/themeItemEditor.js +181 -0
  48. package/dist/ui/editors/themeItemEditor.js.map +1 -0
  49. package/dist/ui/forms/configForm.d.ts +12 -0
  50. package/dist/ui/forms/configForm.d.ts.map +1 -0
  51. package/dist/ui/forms/configForm.js +101 -0
  52. package/dist/ui/forms/configForm.js.map +1 -0
  53. package/dist/ui/forms/headerForm.d.ts +18 -0
  54. package/dist/ui/forms/headerForm.d.ts.map +1 -0
  55. package/dist/ui/forms/headerForm.js +144 -0
  56. package/dist/ui/forms/headerForm.js.map +1 -0
  57. package/dist/ui/forms/index.d.ts +9 -0
  58. package/dist/ui/forms/index.d.ts.map +1 -0
  59. package/dist/ui/forms/index.js +9 -0
  60. package/dist/ui/forms/index.js.map +1 -0
  61. package/dist/ui/forms/namesForm.d.ts +21 -0
  62. package/dist/ui/forms/namesForm.d.ts.map +1 -0
  63. package/dist/ui/forms/namesForm.js +124 -0
  64. package/dist/ui/forms/namesForm.js.map +1 -0
  65. package/dist/ui/forms/ruleForm.d.ts +13 -0
  66. package/dist/ui/forms/ruleForm.d.ts.map +1 -0
  67. package/dist/ui/forms/ruleForm.js +56 -0
  68. package/dist/ui/forms/ruleForm.js.map +1 -0
  69. package/dist/ui/forms/ruleForm.style.d.ts +2 -0
  70. package/dist/ui/forms/ruleForm.style.d.ts.map +1 -0
  71. package/dist/ui/forms/ruleForm.style.js +50 -0
  72. package/dist/ui/forms/ruleForm.style.js.map +1 -0
  73. package/dist/ui/forms/ruleFormThreshold.d.ts +19 -0
  74. package/dist/ui/forms/ruleFormThreshold.d.ts.map +1 -0
  75. package/dist/ui/forms/ruleFormThreshold.js +97 -0
  76. package/dist/ui/forms/ruleFormThreshold.js.map +1 -0
  77. package/dist/ui/forms/ruleList.d.ts +25 -0
  78. package/dist/ui/forms/ruleList.d.ts.map +1 -0
  79. package/dist/ui/forms/ruleList.js +169 -0
  80. package/dist/ui/forms/ruleList.js.map +1 -0
  81. package/dist/ui/forms/ruleList.style.d.ts +3 -0
  82. package/dist/ui/forms/ruleList.style.d.ts.map +1 -0
  83. package/dist/ui/forms/ruleList.style.js +69 -0
  84. package/dist/ui/forms/ruleList.style.js.map +1 -0
  85. package/dist/ui/forms/sparklineForm.d.ts +22 -0
  86. package/dist/ui/forms/sparklineForm.d.ts.map +1 -0
  87. package/dist/ui/forms/sparklineForm.js +199 -0
  88. package/dist/ui/forms/sparklineForm.js.map +1 -0
  89. package/dist/ui/forms/sparklineForm.style.d.ts +3 -0
  90. package/dist/ui/forms/sparklineForm.style.d.ts.map +1 -0
  91. package/dist/ui/forms/sparklineForm.style.js +94 -0
  92. package/dist/ui/forms/sparklineForm.style.js.map +1 -0
  93. package/dist/ui/forms/styleForm.d.ts +14 -0
  94. package/dist/ui/forms/styleForm.d.ts.map +1 -0
  95. package/dist/ui/forms/styleForm.js +151 -0
  96. package/dist/ui/forms/styleForm.js.map +1 -0
  97. package/dist/ui/formulabar.d.ts +23 -0
  98. package/dist/ui/formulabar.d.ts.map +1 -0
  99. package/dist/ui/formulabar.js +155 -0
  100. package/dist/ui/formulabar.js.map +1 -0
  101. package/dist/ui/formulabar.style.d.ts +2 -0
  102. package/dist/ui/formulabar.style.d.ts.map +1 -0
  103. package/dist/ui/formulabar.style.js +48 -0
  104. package/dist/ui/formulabar.style.js.map +1 -0
  105. package/dist/ui/gridStats.d.ts +11 -0
  106. package/dist/ui/gridStats.d.ts.map +1 -0
  107. package/dist/ui/gridStats.js +71 -0
  108. package/dist/ui/gridStats.js.map +1 -0
  109. package/dist/ui/index.d.ts +11 -0
  110. package/dist/ui/index.d.ts.map +1 -0
  111. package/dist/ui/index.js +11 -0
  112. package/dist/ui/index.js.map +1 -0
  113. package/dist/ui/sidebars/baseSidebar.d.ts +10 -0
  114. package/dist/ui/sidebars/baseSidebar.d.ts.map +1 -0
  115. package/dist/ui/sidebars/baseSidebar.js +24 -0
  116. package/dist/ui/sidebars/baseSidebar.js.map +1 -0
  117. package/dist/ui/sidebars/index.d.ts +2 -0
  118. package/dist/ui/sidebars/index.d.ts.map +1 -0
  119. package/dist/ui/sidebars/index.js +2 -0
  120. package/dist/ui/sidebars/index.js.map +1 -0
  121. package/dist/ui/sidebars/themeEditorSidebar.d.ts +14 -0
  122. package/dist/ui/sidebars/themeEditorSidebar.d.ts.map +1 -0
  123. package/dist/ui/sidebars/themeEditorSidebar.js +110 -0
  124. package/dist/ui/sidebars/themeEditorSidebar.js.map +1 -0
  125. package/dist/ui/statusbar.d.ts +19 -0
  126. package/dist/ui/statusbar.d.ts.map +1 -0
  127. package/dist/ui/statusbar.js +69 -0
  128. package/dist/ui/statusbar.js.map +1 -0
  129. package/dist/ui/toolbar.config.d.ts +7 -0
  130. package/dist/ui/toolbar.config.d.ts.map +1 -0
  131. package/dist/ui/toolbar.config.js +166 -0
  132. package/dist/ui/toolbar.config.js.map +1 -0
  133. package/dist/ui/toolbar.d.ts +42 -0
  134. package/dist/ui/toolbar.d.ts.map +1 -0
  135. package/dist/ui/toolbar.js +356 -0
  136. package/dist/ui/toolbar.js.map +1 -0
  137. package/dist/ui/toolbar.style.d.ts +2 -0
  138. package/dist/ui/toolbar.style.d.ts.map +1 -0
  139. package/dist/ui/toolbar.style.js +22 -0
  140. package/dist/ui/toolbar.style.js.map +1 -0
  141. package/package.json +10 -10
@@ -0,0 +1,155 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { isFormula, CellModel } from '@omegagrid/grid';
8
+ import { LitElement, html } from 'lit';
9
+ import { customElement, property, query, state } from 'lit/decorators.js';
10
+ import { style } from './formulabar.style';
11
+ let EditorFormula = class EditorFormula extends LitElement {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.isInputActive = false;
15
+ this._onGridSelectorUpdate = (e) => {
16
+ if (!this.isInputActive)
17
+ return;
18
+ if (e.selector?.index == null)
19
+ return;
20
+ const range = e.selector.selection.clone();
21
+ if (e.selector.grid != this.grid)
22
+ range.sheet = e.selector.grid.model.name;
23
+ this.formulaInput.setRange(range, e.selector.index);
24
+ };
25
+ this._onGridSelect = (e) => {
26
+ if (e.grid.editing.isFormulaMode) {
27
+ if (!this.isInputActive)
28
+ return;
29
+ const range = e.selection.range.clone();
30
+ if (e.grid != this.grid)
31
+ range.sheet = e.grid.model.name;
32
+ this.formulaInput.setRange(range);
33
+ }
34
+ else {
35
+ if (e.selection.range.isCell) {
36
+ this.gridElement = e.grid.selecting.activeCell;
37
+ }
38
+ else if (e.selection.range.isColumn) {
39
+ this.gridElement = e.grid.selecting.activeCell.column;
40
+ }
41
+ else if (e.selection.range.isRow) {
42
+ this.gridElement = e.grid.selecting.activeCell.row;
43
+ }
44
+ if (this.formulaInput)
45
+ this.formulaInput.value = this.gridElementValue;
46
+ }
47
+ };
48
+ this._onInputPreview = (e) => {
49
+ this.grid.selecting.removeFormulaHighlight();
50
+ if (e.formula)
51
+ this.grid.selecting.highlightFormula(e.formula);
52
+ };
53
+ this._onInputCommit = () => {
54
+ this.commit();
55
+ };
56
+ this._onInputDiscard = () => {
57
+ if (!this.formulaInput.isDiscarded)
58
+ this.commit();
59
+ this.grid.editing.endFormulaMode();
60
+ this.grid.focus();
61
+ this.isInputActive = false;
62
+ this.formulaInput.value = (this.gridElement ? (this.gridElement.value2 ?? '') : '').toString();
63
+ };
64
+ this._onAddressFocus = () => {
65
+ const range = this.grid?.selection.range;
66
+ const name = this.gridElement?.name;
67
+ this.addressInput.selectionStart = name ? (range.A1.length + 2) : 0;
68
+ this.addressInput.selectionEnd = name ? (this.addressInput.selectionStart + name.length) : range.A1.length;
69
+ };
70
+ this._onInputFocus = () => {
71
+ this.isInputActive = true;
72
+ if (isFormula(this.formulaInput.inputValue))
73
+ this.grid.editing.startFormulaMode();
74
+ };
75
+ this._onInput = () => {
76
+ if (isFormula(this.formulaInput.inputValue))
77
+ this.grid.editing.startFormulaMode();
78
+ };
79
+ this.render = () => {
80
+ const range = this.grid?.selection.range;
81
+ return html `
82
+ <div id="address">
83
+ <input id="addressInput"
84
+ type="text"
85
+ @focus="${this._onAddressFocus}"
86
+ .value="${range ? `${range.A1}${this.gridElement?.name ? ` (${this.gridElement.name})` : ''}` : ''}"
87
+ readonly>
88
+ </div>
89
+
90
+ <og-grid-formula id="formulaInput"
91
+ .tokenizer="${this.grid?.model.calculations.tokenizer}"
92
+ .value="${this.gridElementValue}"
93
+ @input="${this._onInput}"
94
+ @focus="${this._onInputFocus}"
95
+ @formula.preview="${this._onInputPreview}"
96
+ @formula.commit="${this._onInputCommit}"
97
+ @formula.discard="${this._onInputDiscard}">
98
+ </og-grid-formula>
99
+ `;
100
+ };
101
+ }
102
+ get gridElementValue() { return (this.gridElement?.value2 ?? '').toString(); }
103
+ willUpdate(props) {
104
+ if (props.has('grid') && this.grid) {
105
+ const eventTarget = this.grid.group ? this.grid.group : this.grid;
106
+ eventTarget.removeEventListener('grid.selector.resize', this._onGridSelectorUpdate);
107
+ eventTarget.removeEventListener('grid.selector.move', this._onGridSelectorUpdate);
108
+ eventTarget.removeEventListener('grid.select', this._onGridSelect);
109
+ eventTarget.addEventListener('grid.selector.resize', this._onGridSelectorUpdate);
110
+ eventTarget.addEventListener('grid.selector.move', this._onGridSelectorUpdate);
111
+ eventTarget.addEventListener('grid.select', this._onGridSelect);
112
+ }
113
+ }
114
+ commit() {
115
+ if (this.formulaInput.isDiscarded)
116
+ return;
117
+ const gridElement = this.gridElement;
118
+ const value = this.formulaInput.value;
119
+ if (gridElement instanceof CellModel) {
120
+ gridElement.value = value;
121
+ this.grid.rendering.updateCell(gridElement, true);
122
+ }
123
+ else if (gridElement && isFormula(value)) {
124
+ gridElement.formula = value;
125
+ this.grid.rendering.calculateViewport(true);
126
+ this.grid.rendering.render(false);
127
+ }
128
+ else if (gridElement) {
129
+ gridElement.formula = null;
130
+ this.grid.rendering.calculateViewport(true);
131
+ this.grid.rendering.render(false);
132
+ }
133
+ this.grid.editing.endFormulaMode();
134
+ this.grid.focus();
135
+ this.isInputActive = false;
136
+ }
137
+ };
138
+ EditorFormula.styles = [style];
139
+ __decorate([
140
+ property({ type: Object })
141
+ ], EditorFormula.prototype, "grid", void 0);
142
+ __decorate([
143
+ state()
144
+ ], EditorFormula.prototype, "gridElement", void 0);
145
+ __decorate([
146
+ query('#addressInput')
147
+ ], EditorFormula.prototype, "addressInput", void 0);
148
+ __decorate([
149
+ query('#formulaInput')
150
+ ], EditorFormula.prototype, "formulaInput", void 0);
151
+ EditorFormula = __decorate([
152
+ customElement('og-editor-formula')
153
+ ], EditorFormula);
154
+ export { EditorFormula };
155
+ //# sourceMappingURL=formulabar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formulabar.js","sourceRoot":"","sources":["../../src/ui/formulabar.ts"],"names":[],"mappings":"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","sourcesContent":["import { isFormula, CellModel, ElementModel, Grid, FormulaInput, FormulaInputEvent, SelectorEvent, GridEvent } from '@omegagrid/grid';\nimport { LitElement, html } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { style } from './formulabar.style';\n\n@customElement('og-editor-formula')\nexport class EditorFormula extends LitElement {\n\n\tstatic styles = [style];\n\t@property({type: Object})\n\tgrid: Grid;\n\n\t@state()\n\tgridElement: ElementModel;\n\n\t@query('#addressInput')\n\taddressInput: HTMLInputElement;\n\n\t@query('#formulaInput')\n\tformulaInput: FormulaInput;\n\n\tprivate isInputActive = false;\n\t\n\tget gridElementValue() { return (this.gridElement?.value2 ?? '').toString() }\n\n\t_onGridSelectorUpdate = (e: SelectorEvent) => {\n\t\tif (!this.isInputActive) return;\n\t\tif (e.selector?.index == null) return;\n\t\tconst range = e.selector.selection.clone();\n\t\tif (e.selector.grid != this.grid) range.sheet = e.selector.grid.model.name;\n\t\tthis.formulaInput.setRange(range, e.selector.index);\n\t}\n\n\t_onGridSelect = (e: GridEvent) => {\n\t\tif (e.grid.editing.isFormulaMode) {\n\t\t\tif (!this.isInputActive) return;\n\t\t\tconst range = e.selection.range.clone();\n\t\t\tif (e.grid != this.grid) range.sheet = e.grid.model.name;\n\t\t\tthis.formulaInput.setRange(range);\n\t\t} else {\n\t\t\tif (e.selection.range.isCell) {\n\t\t\t\tthis.gridElement = e.grid.selecting.activeCell;\n\t\t\t} else if (e.selection.range.isColumn) {\n\t\t\t\tthis.gridElement = e.grid.selecting.activeCell.column;\n\t\t\t} else if (e.selection.range.isRow) {\n\t\t\t\tthis.gridElement = e.grid.selecting.activeCell.row;\n\t\t\t}\n\n\t\t\tif (this.formulaInput) this.formulaInput.value = this.gridElementValue;\n\t\t}\n\t}\n\n\twillUpdate(props: Map<PropertyKey, unknown>) {\n\t\tif (props.has('grid') && this.grid) {\n\t\t\tconst eventTarget = this.grid.group ? this.grid.group : this.grid;\n\t\t\teventTarget.removeEventListener('grid.selector.resize', this._onGridSelectorUpdate);\n\t\t\teventTarget.removeEventListener('grid.selector.move', this._onGridSelectorUpdate);\n\t\t\teventTarget.removeEventListener('grid.select', this._onGridSelect);\n\t\t\teventTarget.addEventListener('grid.selector.resize', this._onGridSelectorUpdate);\n\t\t\teventTarget.addEventListener('grid.selector.move', this._onGridSelectorUpdate);\n\t\t\teventTarget.addEventListener('grid.select', this._onGridSelect);\n\t\t}\n\t}\n\n\t_onInputPreview = (e: FormulaInputEvent) => {\n\t\tthis.grid.selecting.removeFormulaHighlight();\n\t\tif (e.formula) this.grid.selecting.highlightFormula(e.formula);\n\t}\n\n\tcommit() {\n\t\tif (this.formulaInput.isDiscarded) return;\n\t\tconst gridElement = this.gridElement;\n\t\tconst value = this.formulaInput.value;\n\t\tif (gridElement instanceof CellModel) {\n\t\t\tgridElement.value = value;\n\t\t\tthis.grid.rendering.updateCell(gridElement, true);\n\t\t} else if (gridElement && isFormula(value)) {\n\t\t\tgridElement.formula = value;\n\t\t\tthis.grid.rendering.calculateViewport(true);\n\t\t\tthis.grid.rendering.render(false);\n\t\t} else if (gridElement) {\n\t\t\tgridElement.formula = null;\n\t\t\tthis.grid.rendering.calculateViewport(true);\n\t\t\tthis.grid.rendering.render(false);\n\t\t}\n\n\t\tthis.grid.editing.endFormulaMode();\n\t\tthis.grid.focus();\n\t\tthis.isInputActive = false;\n\t}\n\n\t_onInputCommit = () => {\n\t\tthis.commit();\n\t}\n\n\t_onInputDiscard = () => {\n\t\tif (!this.formulaInput.isDiscarded) this.commit();\n\t\tthis.grid.editing.endFormulaMode();\n\t\tthis.grid.focus();\n\t\tthis.isInputActive = false;\n\t\tthis.formulaInput.value = (this.gridElement ? (this.gridElement.value2 ?? '') : '').toString();\n\t}\n\n\t_onAddressFocus = () => {\n\t\tconst range = this.grid?.selection.range;\n\t\tconst name = this.gridElement?.name;\n\t\tthis.addressInput.selectionStart = name ? (range.A1.length + 2) : 0;\n\t\tthis.addressInput.selectionEnd = name ? (this.addressInput.selectionStart + name.length) : range.A1.length;\n\t}\n\n\t_onInputFocus = () => {\n\t\tthis.isInputActive = true;\n\t\tif (isFormula(this.formulaInput.inputValue)) this.grid.editing.startFormulaMode();\n\t}\n\n\t_onInput = () => {\n\t\tif (isFormula(this.formulaInput.inputValue)) this.grid.editing.startFormulaMode();\n\t}\n\t\n\trender = () => {\n\t\tconst range = this.grid?.selection.range;\n\t\treturn html`\n\t\t\t<div id=\"address\">\n\t\t\t\t<input id=\"addressInput\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t@focus=\"${this._onAddressFocus}\"\n\t\t\t\t\t.value=\"${range ? `${range.A1}${this.gridElement?.name ? ` (${this.gridElement.name})` : ''}` : ''}\"\n\t\t\t\t\treadonly>\n\t\t\t</div>\n\t\t\t\n\t\t\t<og-grid-formula id=\"formulaInput\"\n\t\t\t\t.tokenizer=\"${this.grid?.model.calculations.tokenizer}\"\n\t\t\t\t.value=\"${this.gridElementValue}\"\n\t\t\t\t@input=\"${this._onInput}\"\n\t\t\t\t@focus=\"${this._onInputFocus}\"\n\t\t\t\t@formula.preview=\"${this._onInputPreview}\"\n\t\t\t\t@formula.commit=\"${this._onInputCommit}\"\n\t\t\t\t@formula.discard=\"${this._onInputDiscard}\">\n\t\t\t</og-grid-formula>\n\t\t`;\n\t};\n\n}"]}
@@ -0,0 +1,2 @@
1
+ export declare const style: import("lit").CSSResult;
2
+ //# sourceMappingURL=formulabar.style.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formulabar.style.d.ts","sourceRoot":"","sources":["../../src/ui/formulabar.style.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,yBA6CjB,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { css } from 'lit';
2
+ export const style = css `
3
+ * {
4
+ box-sizing: border-box;
5
+ }
6
+
7
+ :host {
8
+ font-size: var(--og-font-size);
9
+ box-sizing: border-box;
10
+ display: flex;
11
+ flex-direction: row;
12
+ gap: 4px;
13
+ position: relative;
14
+ background-color: var(--og-background-color);
15
+ padding: 4px;
16
+ outline: none;
17
+ }
18
+
19
+ #address {
20
+ flex: 0;
21
+ min-width: 100px;
22
+ border: 1.5px solid var(--og-accent-color);
23
+ border-radius: var(--og-base-radius);
24
+ padding: 0;
25
+ }
26
+
27
+ #address input {
28
+ outline: none;
29
+ border: none;
30
+ color: var(--og-text-color);
31
+ background-color: transparent;
32
+ display: block;
33
+ height: 100%;
34
+ width: 100%;
35
+ }
36
+
37
+
38
+ #formulaInput {
39
+ flex: 1;
40
+ height: 100%;
41
+ outline: none;
42
+ border: 1.5px solid var(--og-accent-color);
43
+ border-radius: var(--og-base-radius);
44
+ display: block;
45
+ padding: 0;
46
+ }
47
+ `;
48
+ //# sourceMappingURL=formulabar.style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formulabar.style.js","sourceRoot":"","sources":["../../src/ui/formulabar.style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CvB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const style = css`\n\t* {\n\t\tbox-sizing: border-box;\n\t}\n\n\t:host {\n\t\tfont-size: var(--og-font-size);\n\t\tbox-sizing: border-box;\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tgap: 4px;\n\t\tposition: relative;\n\t\tbackground-color: var(--og-background-color);\n\t\tpadding: 4px;\n\t\toutline: none;\n\t}\n\n\t#address {\n\t\tflex: 0;\n\t\tmin-width: 100px;\n\t\tborder: 1.5px solid var(--og-accent-color);\n\t\tborder-radius: var(--og-base-radius);\n\t\tpadding: 0;\n\t}\n\n\t#address input {\n\t\toutline: none;\n\t\tborder: none;\n\t\tcolor: var(--og-text-color);\n\t\tbackground-color: transparent;\n\t\tdisplay: block;\n\t\theight: 100%;\n\t\twidth: 100%;\n\t}\n\n\n\t#formulaInput {\n\t\tflex: 1;\n\t\theight: 100%;\n\t\toutline: none;\n\t\tborder: 1.5px solid var(--og-accent-color);\n\t\tborder-radius: var(--og-base-radius);\n\t\tdisplay: block;\n\t\tpadding: 0;\n\t}\n`;"]}
@@ -0,0 +1,11 @@
1
+ import { CellRange, Grid } from '@omegagrid/grid';
2
+ import { LitElement } from 'lit';
3
+ export declare class GridStats extends LitElement {
4
+ static styles: import("lit").CSSResult[];
5
+ grid: Grid;
6
+ range: CellRange;
7
+ stats: [string, string][];
8
+ willUpdate(props: Map<PropertyKey, unknown>): void;
9
+ render: () => import("lit-html").TemplateResult<1>;
10
+ }
11
+ //# sourceMappingURL=gridStats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gridStats.d.ts","sourceRoot":"","sources":["../../src/ui/gridStats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAa,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAK5C,qBACa,SAAU,SAAQ,UAAU;IAExC,MAAM,CAAC,MAAM,4BAYV;IAGH,IAAI,EAAE,IAAI,CAAC;IAGX,KAAK,EAAE,SAAS,CAAC;IAGjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAM;IAE/B,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC;IAsB3C,MAAM,6CAMJ;CAEF"}
@@ -0,0 +1,71 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { CellRange, functions } from '@omegagrid/grid';
8
+ import { LitElement, html, css } from 'lit';
9
+ import { customElement, property, state } from 'lit/decorators.js';
10
+ import { map } from 'lit-html/directives/map.js';
11
+ import { numbers } from '@omegagrid/core';
12
+ let GridStats = class GridStats extends LitElement {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.stats = [];
16
+ this.render = () => html `
17
+ ${map(this.stats, item => html `
18
+ <div class="item">
19
+ <span>${item[0]}</span>: <span>${item[1]}</span>
20
+ </div>
21
+ `)}
22
+ `;
23
+ }
24
+ willUpdate(props) {
25
+ if ((props.has('grid') || props.has('range')) && this.range && this.grid?.model) {
26
+ const stats = [];
27
+ const values = this.grid.model.getValuesInRange(CellRange.fromA1(this.range.A1));
28
+ const numberFormatter = numbers.getNumberFormatter(this.grid.options.locale, '#,0.###');
29
+ // avg
30
+ const avg = functions._map.get('AVERAGE')(values);
31
+ if (avg)
32
+ stats.push(['avg', numberFormatter(avg)]);
33
+ // cnt
34
+ const cnt = functions._map.get('COUNT')(values);
35
+ if (cnt)
36
+ stats.push(['cnt', cnt.toString()]);
37
+ // sum
38
+ const sum = functions._map.get('SUM')(values);
39
+ if (sum)
40
+ stats.push(['sum', numberFormatter(sum)]);
41
+ this.stats = stats;
42
+ }
43
+ }
44
+ };
45
+ GridStats.styles = [css `
46
+ :host {
47
+ display: flex;
48
+ flex-direction: row;
49
+ white-space: nowrap;
50
+ font-size: var(--og-font-size);
51
+ gap: 10px;
52
+ }
53
+
54
+ .item {
55
+ flex: 1;
56
+ }
57
+ `];
58
+ __decorate([
59
+ property({ type: Object })
60
+ ], GridStats.prototype, "grid", void 0);
61
+ __decorate([
62
+ property({ type: Object })
63
+ ], GridStats.prototype, "range", void 0);
64
+ __decorate([
65
+ state()
66
+ ], GridStats.prototype, "stats", void 0);
67
+ GridStats = __decorate([
68
+ customElement('og-editor-gridstats')
69
+ ], GridStats);
70
+ export { GridStats };
71
+ //# sourceMappingURL=gridStats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gridStats.js","sourceRoot":"","sources":["../../src/ui/gridStats.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAQ,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAGnC,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,UAAU;IAAlC;;QAuBN,UAAK,GAAuB,EAAE,CAAC;QAwB/B,WAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAA;IAChB,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAA;;YAEpB,IAAI,CAAC,CAAC,CAAC,kBAAkB,IAAI,CAAC,CAAC,CAAC;;GAEzC,CAAC;EACF,CAAC;IAEH,CAAC;IA9BA,UAAU,CAAC,KAAgC;QAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;YACjF,MAAM,KAAK,GAAsB,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YACjF,MAAM,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAExF,MAAM;YACN,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAW,CAAC;YAC5D,IAAI,GAAG;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAEnD,MAAM;YACN,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAW,CAAC;YAC1D,IAAI,GAAG;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAE7C,MAAM;YACN,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAW,CAAC;YACxD,IAAI,GAAG;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAEnD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACpB,CAAC;IACF,CAAC;;AA3CM,gBAAM,GAAG,CAAC,GAAG,CAAA;;;;;;;;;;;;EAYnB,CAAC,AAZW,CAYV;AAGH;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;uCACd;AAGX;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;wCACR;AAGjB;IADC,KAAK,EAAE;wCACuB;AAvBnB,SAAS;IADrB,aAAa,CAAC,qBAAqB,CAAC;GACxB,SAAS,CAuDrB","sourcesContent":["import { CellRange, functions, Grid } from '@omegagrid/grid';\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { map } from 'lit-html/directives/map.js';\nimport { numbers } from '@omegagrid/core';\n\n@customElement('og-editor-gridstats')\nexport class GridStats extends LitElement {\n\n\tstatic styles = [css`\n\t\t:host {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\twhite-space: nowrap;\n\t\t\tfont-size: var(--og-font-size);\n\t\t\tgap: 10px;\n\t\t}\n\n\t\t.item {\n\t\t\tflex: 1;\n\t\t}\n\t`];\n\n\t@property({type: Object})\n\tgrid: Grid;\n\n\t@property({type: Object})\n\trange: CellRange;\n\n\t@state()\n\tstats: [string, string][] = [];\n\t\n\twillUpdate(props: Map<PropertyKey, unknown>) {\n\t\tif ((props.has('grid') || props.has('range')) && this.range && this.grid?.model) {\n\t\t\tconst stats: typeof this.stats = [];\n\t\t\tconst values = this.grid.model.getValuesInRange(CellRange.fromA1(this.range.A1));\n\t\t\tconst numberFormatter = numbers.getNumberFormatter(this.grid.options.locale, '#,0.###');\n\n\t\t\t// avg\n\t\t\tconst avg = functions._map.get('AVERAGE')(values) as number;\n\t\t\tif (avg) stats.push(['avg', numberFormatter(avg)]);\n\n\t\t\t// cnt\n\t\t\tconst cnt = functions._map.get('COUNT')(values) as number;\n\t\t\tif (cnt) stats.push(['cnt', cnt.toString()]);\n\n\t\t\t// sum\n\t\t\tconst sum = functions._map.get('SUM')(values) as number;\n\t\t\tif (sum) stats.push(['sum', numberFormatter(sum)]);\n\t\t\t\n\t\t\tthis.stats = stats;\n\t\t}\n\t}\n\n\trender = () => html`\n\t\t${map(this.stats, item => html`\n\t\t\t<div class=\"item\">\n\t\t\t\t<span>${item[0]}</span>: <span>${item[1]}</span>\n\t\t\t</div>\n\t\t`)}\n\t`;\n\n}"]}
@@ -0,0 +1,11 @@
1
+ export * from './forms/configForm';
2
+ export * from './editor';
3
+ export * from './editorZoom';
4
+ export * from './formulabar';
5
+ export * from './gridStats';
6
+ export * from './statusbar';
7
+ export * from './toolbar';
8
+ export * from './forms';
9
+ export * from './sidebars';
10
+ export * from './editors';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,11 @@
1
+ export * from './forms/configForm';
2
+ export * from './editor';
3
+ export * from './editorZoom';
4
+ export * from './formulabar';
5
+ export * from './gridStats';
6
+ export * from './statusbar';
7
+ export * from './toolbar';
8
+ export * from './forms';
9
+ export * from './sidebars';
10
+ export * from './editors';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC","sourcesContent":["export * from './forms/configForm';\nexport * from './editor';\nexport * from './editorZoom';\nexport * from './formulabar';\nexport * from './gridStats';\nexport * from './statusbar';\nexport * from './toolbar';\nexport * from './forms';\nexport * from './sidebars';\nexport * from './editors';"]}
@@ -0,0 +1,10 @@
1
+ import { OmegaComponent } from "@omegagrid/core";
2
+ import { CellRange, Grid, GridGroup, GridModel } from "@omegagrid/grid";
3
+ export declare abstract class BaseSidebar extends OmegaComponent {
4
+ static styles: import("lit").CSSResultGroup[];
5
+ model: GridModel;
6
+ grid: Grid;
7
+ group: GridGroup;
8
+ range: CellRange;
9
+ }
10
+ //# sourceMappingURL=baseSidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseSidebar.d.ts","sourceRoot":"","sources":["../../../src/ui/sidebars/baseSidebar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGxE,8BAAsB,WAAY,SAAQ,cAAc;IAEvD,MAAM,CAAC,MAAM,iCAA2B;IAGxC,KAAK,EAAE,SAAS,CAAC;IAGjB,IAAI,EAAE,IAAI,CAAC;IAGX,KAAK,EAAE,SAAS,CAAC;IAGjB,KAAK,EAAE,SAAS,CAAC;CAEjB"}
@@ -0,0 +1,24 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { OmegaComponent } from "@omegagrid/core";
8
+ import { property } from "lit/decorators.js";
9
+ export class BaseSidebar extends OmegaComponent {
10
+ }
11
+ BaseSidebar.styles = [OmegaComponent.styles];
12
+ __decorate([
13
+ property({ type: Object })
14
+ ], BaseSidebar.prototype, "model", void 0);
15
+ __decorate([
16
+ property({ type: Object })
17
+ ], BaseSidebar.prototype, "grid", void 0);
18
+ __decorate([
19
+ property({ type: Object })
20
+ ], BaseSidebar.prototype, "group", void 0);
21
+ __decorate([
22
+ property({ type: Object })
23
+ ], BaseSidebar.prototype, "range", void 0);
24
+ //# sourceMappingURL=baseSidebar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseSidebar.js","sourceRoot":"","sources":["../../../src/ui/sidebars/baseSidebar.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,OAAgB,WAAY,SAAQ,cAAc;;AAEhD,kBAAM,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAGxC;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;0CACR;AAGjB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;yCACd;AAGX;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;0CACR;AAGjB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;0CACR","sourcesContent":["import { OmegaComponent } from \"@omegagrid/core\";\nimport { CellRange, Grid, GridGroup, GridModel } from \"@omegagrid/grid\";\nimport { property } from \"lit/decorators.js\";\n\nexport abstract class BaseSidebar extends OmegaComponent {\n\n\tstatic styles = [OmegaComponent.styles];\n\n\t@property({type: Object})\n\tmodel: GridModel;\n\n\t@property({type: Object})\n\tgrid: Grid;\n\n\t@property({type: Object})\n\tgroup: GridGroup;\n\n\t@property({type: Object})\n\trange: CellRange;\n\n}"]}
@@ -0,0 +1,2 @@
1
+ export * from './themeEditorSidebar';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/sidebars/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './themeEditorSidebar';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/sidebars/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC","sourcesContent":["export * from './themeEditorSidebar';\n"]}
@@ -0,0 +1,14 @@
1
+ import { BaseSidebar } from './baseSidebar';
2
+ import { TreeDropdown } from '@omegagrid/tree';
3
+ import { TableTheme } from '@omegagrid/grid';
4
+ export declare class ThemeEditorSidebar extends BaseSidebar {
5
+ static styles: (import("lit").CSSResult | import("lit").CSSResultGroup[])[];
6
+ themeList: TreeDropdown;
7
+ theme: TableTheme;
8
+ willUpdate(): void;
9
+ updated(): void;
10
+ addTheme(): void;
11
+ _onApplyClick: () => void;
12
+ render: () => import("lit-html").TemplateResult<1>;
13
+ }
14
+ //# sourceMappingURL=themeEditorSidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themeEditorSidebar.d.ts","sourceRoot":"","sources":["../../../src/ui/sidebars/themeEditorSidebar.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAa,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,qBACa,kBAAmB,SAAQ,WAAW;IAElD,MAAM,CAAC,MAAM,+DA6BV;IAGH,SAAS,EAAE,YAAY,CAAC;IAGxB,KAAK,EAAE,UAAU,CAAC;IAElB,UAAU;IAMV,OAAO;IAaP,QAAQ;IAUR,aAAa,aAGZ;IAED,MAAM,6CAqBJ;CAEF"}
@@ -0,0 +1,110 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { customElement, property, query } from 'lit/decorators.js';
8
+ import { html, css } from 'lit';
9
+ import { BaseSidebar } from './baseSidebar';
10
+ import { msg } from '@omegagrid/localize';
11
+ let ThemeEditorSidebar = class ThemeEditorSidebar extends BaseSidebar {
12
+ constructor() {
13
+ super(...arguments);
14
+ this._onApplyClick = () => {
15
+ this.grid?.model.applyTheme(this.theme, true);
16
+ this.grid.refresh();
17
+ };
18
+ this.render = () => html `
19
+ <div class="header">
20
+ <og-tree-dropdown
21
+ @change="${(e) => {
22
+ this.theme = e.node ? this.group.model.themes.get(e.node.key) : null;
23
+ }}"
24
+ style="flex: 1"
25
+ .value="${this.theme == null ? null : [[this.theme.name, 0, 1]]}">
26
+ </og-tree-dropdown>
27
+
28
+ <og-button @click="${this._onApplyClick}">
29
+ <div slot="content"><og-icon icon="refresh"></og-icon> ${msg('Apply')}</div>
30
+ </og-button>
31
+
32
+ <og-button icon="plus" style="flex: 0 0 20px" @click="${() => this.addTheme()}"></og-button>
33
+ </div>
34
+
35
+ <div class="body">
36
+ <og-input .value="${this.theme?.name}" style="flex: 0 20px"></og-input>
37
+ <og-editor-theme .theme="${this.theme}" style="flex: 1"></og-editor-theme>
38
+ </div>
39
+ `;
40
+ }
41
+ willUpdate() {
42
+ if (this.theme == null && this.group?.model?.themes?.size) {
43
+ this.theme = [...this.group.model.themes.values()][0];
44
+ }
45
+ }
46
+ updated() {
47
+ if (this.group?.model?.themes) {
48
+ this.themeList.setSourceData([...this.group.model.themes.values()].map((theme) => ({
49
+ k: theme.name,
50
+ v: theme.name
51
+ })), {
52
+ checkboxes: false,
53
+ selectMode: 'single',
54
+ autoClose: true,
55
+ });
56
+ }
57
+ }
58
+ addTheme() {
59
+ const model = this.group?.model;
60
+ if (!model)
61
+ return;
62
+ let i = model.themes.size + 1;
63
+ while (model.themes.has(`Theme ${i}`))
64
+ ++i;
65
+ const theme = { name: `Theme ${i}` };
66
+ model.themes.set(theme.name, theme);
67
+ this.theme = theme;
68
+ }
69
+ };
70
+ ThemeEditorSidebar.styles = [BaseSidebar.styles, css `
71
+ :host {
72
+ display: flex;
73
+ flex-direction: column;
74
+ }
75
+
76
+ .header {
77
+ flex: 0;
78
+ padding: 0 4px 4px;
79
+ display: flex;
80
+ flex-direction: row;
81
+ gap: 4px;
82
+ }
83
+
84
+ .body {
85
+ flex: 1;
86
+ padding: 0 4px 4px;
87
+ display: flex;
88
+ flex-direction: column;
89
+ overflow: hidden;
90
+ }
91
+
92
+ og-editor-theme {
93
+ margin-top: 4px;
94
+ }
95
+
96
+ og-input {
97
+ display: block;
98
+ }
99
+ `];
100
+ __decorate([
101
+ query('og-tree-dropdown')
102
+ ], ThemeEditorSidebar.prototype, "themeList", void 0);
103
+ __decorate([
104
+ property({ type: Object })
105
+ ], ThemeEditorSidebar.prototype, "theme", void 0);
106
+ ThemeEditorSidebar = __decorate([
107
+ customElement('og-editor-themesidebar')
108
+ ], ThemeEditorSidebar);
109
+ export { ThemeEditorSidebar };
110
+ //# sourceMappingURL=themeEditorSidebar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themeEditorSidebar.js","sourceRoot":"","sources":["../../../src/ui/sidebars/themeEditorSidebar.ts"],"names":[],"mappings":"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","sourcesContent":["import { customElement, property, query } from 'lit/decorators.js';\nimport { html, css } from 'lit';\nimport { BaseSidebar } from './baseSidebar';\nimport { TreeDropdown, TreeEvent } from '@omegagrid/tree';\nimport { TableTheme } from '@omegagrid/grid';\nimport { msg } from '@omegagrid/localize';\n\n@customElement('og-editor-themesidebar')\nexport class ThemeEditorSidebar extends BaseSidebar {\n\n\tstatic styles = [BaseSidebar.styles, css`\n\t\t:host {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t}\n\n\t\t.header {\n\t\t\tflex: 0;\n\t\t\tpadding: 0 4px 4px;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\tgap: 4px;\n\t\t}\n\n\t\t.body {\n\t\t\tflex: 1;\n\t\t\tpadding: 0 4px 4px;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\tog-editor-theme {\n\t\t\tmargin-top: 4px;\n\t\t}\n\n\t\tog-input {\n\t\t\tdisplay: block;\n\t\t}\n\t`];\n\n\t@query('og-tree-dropdown')\n\tthemeList: TreeDropdown;\n\n\t@property({type: Object})\n\ttheme: TableTheme;\n\n\twillUpdate() {\n\t\tif (this.theme == null && this.group?.model?.themes?.size) {\n\t\t\tthis.theme = [...this.group.model.themes.values()][0];\n\t\t}\n\t}\n\n\tupdated() {\n\t\tif (this.group?.model?.themes) {\n\t\t\tthis.themeList.setSourceData([...this.group.model.themes.values()].map((theme) => ({\n\t\t\t\tk: theme.name, \n\t\t\t\tv: theme.name\n\t\t\t})), {\n\t\t\t\tcheckboxes: false,\n\t\t\t\tselectMode: 'single',\n\t\t\t\tautoClose: true,\n\t\t\t});\n\t\t}\n\t}\n\n\taddTheme() {\n\t\tconst model = this.group?.model;\n\t\tif (!model) return;\n\t\tlet i = model.themes.size + 1;\n\t\twhile (model.themes.has(`Theme ${i}`)) ++i;\n\t\tconst theme = {name: `Theme ${i}`} as TableTheme;\n\t\tmodel.themes.set(theme.name, theme);\n\t\tthis.theme = theme;\n\t}\n\n\t_onApplyClick = () => {\n\t\tthis.grid?.model.applyTheme(this.theme, true);\n\t\tthis.grid.refresh();\n\t}\n\n\trender = () => html`\n\t\t<div class=\"header\">\n\t\t\t<og-tree-dropdown\n\t\t\t\t@change=\"${(e: TreeEvent) => {\n\t\t\t\t\tthis.theme = e.node ? this.group.model.themes.get(e.node.key) : null;\n\t\t\t\t}}\"\n\t\t\t\tstyle=\"flex: 1\" \n\t\t\t\t.value=\"${this.theme == null ? null : [[this.theme.name, 0, 1]]}\">\n\t\t\t</og-tree-dropdown>\n\n\t\t\t<og-button @click=\"${this._onApplyClick}\">\n\t\t\t\t<div slot=\"content\"><og-icon icon=\"refresh\"></og-icon> ${msg('Apply')}</div>\n\t\t\t</og-button>\n\t\t\t\n\t\t\t<og-button icon=\"plus\" style=\"flex: 0 0 20px\" @click=\"${() => this.addTheme()}\"></og-button>\n\t\t</div>\n\n\t\t<div class=\"body\">\n\t\t\t<og-input .value=\"${this.theme?.name}\" style=\"flex: 0 20px\"></og-input>\n\t\t\t<og-editor-theme .theme=\"${this.theme}\" style=\"flex: 1\"></og-editor-theme>\n\t\t</div>\n\t`;\n\n}"]}
@@ -0,0 +1,19 @@
1
+ import { CellRange, Grid, GridEditEvent, GridGroup } from '@omegagrid/grid';
2
+ import { LitElement } from 'lit';
3
+ import { ComponentId } from '@omegagrid/core';
4
+ export type StatusBarComponent = HTMLElement & {
5
+ group: GridGroup;
6
+ grid: Grid;
7
+ range: CellRange;
8
+ };
9
+ export declare class EditorStatusbar extends LitElement {
10
+ components: Map<ComponentId, StatusBarComponent>;
11
+ group: GridGroup;
12
+ grid: Grid;
13
+ range: CellRange;
14
+ _onGridEdit: (_e: GridEditEvent) => void;
15
+ willUpdate(_props: Map<PropertyKey, unknown>): void;
16
+ createComponent: (id: ComponentId) => StatusBarComponent;
17
+ render: () => import("lit-html").TemplateResult<1>;
18
+ }
19
+ //# sourceMappingURL=statusbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statusbar.d.ts","sourceRoot":"","sources":["../../src/ui/statusbar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAGvC,OAAO,EAAE,WAAW,EAAO,MAAM,iBAAiB,CAAC;AAuBnD,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG;IAAC,KAAK,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAC,CAAC;AAEhG,qBACa,eAAgB,SAAQ,UAAU;IAI9C,UAAU,uCAA8C;IAGxD,KAAK,EAAE,SAAS,CAAC;IAGjB,IAAI,EAAE,IAAI,CAAC;IAGX,KAAK,EAAE,SAAS,CAAC;IAEjB,WAAW,GAAI,IAAI,aAAa,UAE/B;IAED,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC;IAQ5C,eAAe,GAAI,IAAI,WAAW,wBAGhC;IAEF,MAAM,6CAKJ;CAEF"}