@omegagrid/editor 0.10.2 → 0.10.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.
- package/dist/commands/index.d.ts +3 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +34 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/options.d.ts +12 -0
- package/dist/options.d.ts.map +1 -0
- package/dist/options.js +14 -0
- package/dist/options.js.map +1 -0
- package/dist/ui/editor.d.ts +76 -0
- package/dist/ui/editor.d.ts.map +1 -0
- package/dist/ui/editor.js +338 -0
- package/dist/ui/editor.js.map +1 -0
- package/dist/ui/editor.style.d.ts +2 -0
- package/dist/ui/editor.style.d.ts.map +1 -0
- package/dist/ui/editor.style.js +38 -0
- package/dist/ui/editor.style.js.map +1 -0
- package/dist/ui/editorZoom.d.ts +16 -0
- package/dist/ui/editorZoom.d.ts.map +1 -0
- package/dist/ui/editorZoom.js +82 -0
- package/dist/ui/editorZoom.js.map +1 -0
- package/dist/ui/editors/hyperlinkEditor.d.ts +10 -0
- package/dist/ui/editors/hyperlinkEditor.d.ts.map +1 -0
- package/dist/ui/editors/hyperlinkEditor.js +70 -0
- package/dist/ui/editors/hyperlinkEditor.js.map +1 -0
- package/dist/ui/editors/index.d.ts +6 -0
- package/dist/ui/editors/index.d.ts.map +1 -0
- package/dist/ui/editors/index.js +6 -0
- package/dist/ui/editors/index.js.map +1 -0
- package/dist/ui/editors/ruleEditor.d.ts +27 -0
- package/dist/ui/editors/ruleEditor.d.ts.map +1 -0
- package/dist/ui/editors/ruleEditor.js +251 -0
- package/dist/ui/editors/ruleEditor.js.map +1 -0
- package/dist/ui/editors/styleEditor.d.ts +14 -0
- package/dist/ui/editors/styleEditor.d.ts.map +1 -0
- package/dist/ui/editors/styleEditor.js +160 -0
- package/dist/ui/editors/styleEditor.js.map +1 -0
- package/dist/ui/editors/themeEditor.d.ts +24 -0
- package/dist/ui/editors/themeEditor.d.ts.map +1 -0
- package/dist/ui/editors/themeEditor.js +138 -0
- package/dist/ui/editors/themeEditor.js.map +1 -0
- package/dist/ui/editors/themeItemEditor.d.ts +22 -0
- package/dist/ui/editors/themeItemEditor.d.ts.map +1 -0
- package/dist/ui/editors/themeItemEditor.js +181 -0
- package/dist/ui/editors/themeItemEditor.js.map +1 -0
- package/dist/ui/forms/configForm.d.ts +12 -0
- package/dist/ui/forms/configForm.d.ts.map +1 -0
- package/dist/ui/forms/configForm.js +101 -0
- package/dist/ui/forms/configForm.js.map +1 -0
- package/dist/ui/forms/headerForm.d.ts +18 -0
- package/dist/ui/forms/headerForm.d.ts.map +1 -0
- package/dist/ui/forms/headerForm.js +144 -0
- package/dist/ui/forms/headerForm.js.map +1 -0
- package/dist/ui/forms/index.d.ts +9 -0
- package/dist/ui/forms/index.d.ts.map +1 -0
- package/dist/ui/forms/index.js +9 -0
- package/dist/ui/forms/index.js.map +1 -0
- package/dist/ui/forms/namesForm.d.ts +21 -0
- package/dist/ui/forms/namesForm.d.ts.map +1 -0
- package/dist/ui/forms/namesForm.js +124 -0
- package/dist/ui/forms/namesForm.js.map +1 -0
- package/dist/ui/forms/ruleForm.d.ts +13 -0
- package/dist/ui/forms/ruleForm.d.ts.map +1 -0
- package/dist/ui/forms/ruleForm.js +56 -0
- package/dist/ui/forms/ruleForm.js.map +1 -0
- package/dist/ui/forms/ruleForm.style.d.ts +2 -0
- package/dist/ui/forms/ruleForm.style.d.ts.map +1 -0
- package/dist/ui/forms/ruleForm.style.js +50 -0
- package/dist/ui/forms/ruleForm.style.js.map +1 -0
- package/dist/ui/forms/ruleFormThreshold.d.ts +19 -0
- package/dist/ui/forms/ruleFormThreshold.d.ts.map +1 -0
- package/dist/ui/forms/ruleFormThreshold.js +97 -0
- package/dist/ui/forms/ruleFormThreshold.js.map +1 -0
- package/dist/ui/forms/ruleList.d.ts +25 -0
- package/dist/ui/forms/ruleList.d.ts.map +1 -0
- package/dist/ui/forms/ruleList.js +169 -0
- package/dist/ui/forms/ruleList.js.map +1 -0
- package/dist/ui/forms/ruleList.style.d.ts +3 -0
- package/dist/ui/forms/ruleList.style.d.ts.map +1 -0
- package/dist/ui/forms/ruleList.style.js +69 -0
- package/dist/ui/forms/ruleList.style.js.map +1 -0
- package/dist/ui/forms/sparklineForm.d.ts +22 -0
- package/dist/ui/forms/sparklineForm.d.ts.map +1 -0
- package/dist/ui/forms/sparklineForm.js +199 -0
- package/dist/ui/forms/sparklineForm.js.map +1 -0
- package/dist/ui/forms/sparklineForm.style.d.ts +3 -0
- package/dist/ui/forms/sparklineForm.style.d.ts.map +1 -0
- package/dist/ui/forms/sparklineForm.style.js +94 -0
- package/dist/ui/forms/sparklineForm.style.js.map +1 -0
- package/dist/ui/forms/styleForm.d.ts +14 -0
- package/dist/ui/forms/styleForm.d.ts.map +1 -0
- package/dist/ui/forms/styleForm.js +151 -0
- package/dist/ui/forms/styleForm.js.map +1 -0
- package/dist/ui/formulabar.d.ts +23 -0
- package/dist/ui/formulabar.d.ts.map +1 -0
- package/dist/ui/formulabar.js +155 -0
- package/dist/ui/formulabar.js.map +1 -0
- package/dist/ui/formulabar.style.d.ts +2 -0
- package/dist/ui/formulabar.style.d.ts.map +1 -0
- package/dist/ui/formulabar.style.js +48 -0
- package/dist/ui/formulabar.style.js.map +1 -0
- package/dist/ui/gridStats.d.ts +11 -0
- package/dist/ui/gridStats.d.ts.map +1 -0
- package/dist/ui/gridStats.js +71 -0
- package/dist/ui/gridStats.js.map +1 -0
- package/dist/ui/index.d.ts +11 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +11 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/sidebars/baseSidebar.d.ts +10 -0
- package/dist/ui/sidebars/baseSidebar.d.ts.map +1 -0
- package/dist/ui/sidebars/baseSidebar.js +24 -0
- package/dist/ui/sidebars/baseSidebar.js.map +1 -0
- package/dist/ui/sidebars/index.d.ts +2 -0
- package/dist/ui/sidebars/index.d.ts.map +1 -0
- package/dist/ui/sidebars/index.js +2 -0
- package/dist/ui/sidebars/index.js.map +1 -0
- package/dist/ui/sidebars/themeEditorSidebar.d.ts +14 -0
- package/dist/ui/sidebars/themeEditorSidebar.d.ts.map +1 -0
- package/dist/ui/sidebars/themeEditorSidebar.js +110 -0
- package/dist/ui/sidebars/themeEditorSidebar.js.map +1 -0
- package/dist/ui/statusbar.d.ts +19 -0
- package/dist/ui/statusbar.d.ts.map +1 -0
- package/dist/ui/statusbar.js +69 -0
- package/dist/ui/statusbar.js.map +1 -0
- package/dist/ui/toolbar.config.d.ts +7 -0
- package/dist/ui/toolbar.config.d.ts.map +1 -0
- package/dist/ui/toolbar.config.js +166 -0
- package/dist/ui/toolbar.config.js.map +1 -0
- package/dist/ui/toolbar.d.ts +42 -0
- package/dist/ui/toolbar.d.ts.map +1 -0
- package/dist/ui/toolbar.js +356 -0
- package/dist/ui/toolbar.js.map +1 -0
- package/dist/ui/toolbar.style.d.ts +2 -0
- package/dist/ui/toolbar.style.d.ts.map +1 -0
- package/dist/ui/toolbar.style.js +22 -0
- package/dist/ui/toolbar.style.js.map +1 -0
- 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 @@
|
|
|
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"}
|
package/dist/ui/index.js
ADDED
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/sidebars/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
|
|
@@ -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"}
|