@endge/ui-vue 0.23.3
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/LICENSE +201 -0
- package/dist/domain/core/endge-vue.d.ts +22 -0
- package/dist/domain/types/filter-renderer.type.d.ts +5 -0
- package/dist/domain/types/sfc-render.type.d.ts +143 -0
- package/dist/edit.utils-Dnnbd0xG-D9ndNtVP.js +51 -0
- package/dist/events-BvSmBueA-Doh7RyHn.js +23 -0
- package/dist/main-CQv-nkoD.js +19453 -0
- package/dist/main.d.ts +42 -0
- package/dist/model/render/sfc/SFCVueRenderInspection.d.ts +12 -0
- package/dist/model/render/sfc/SFCVueRuntimeBridge.d.ts +43 -0
- package/dist/model/render/sfc/native-vue-sfc-adapter.d.ts +4 -0
- package/dist/model/style/EndgeDOMStyleRuntime.d.ts +10 -0
- package/dist/model/style/endge-dom-style.d.ts +17 -0
- package/dist/model/style/index.d.ts +2 -0
- package/dist/reactive/use-current-environment.d.ts +8 -0
- package/dist/reactive/use-current-locale.d.ts +8 -0
- package/dist/reactive/use-current-project-filter.d.ts +8 -0
- package/dist/reactive/use-current-theme.d.ts +8 -0
- package/dist/reactive/use-ui.d.ts +3 -0
- package/dist/revo-grid.entry-BAwst49a.js +1615 -0
- package/dist/revogr-attribution_7.entry-BMG7pXkt.js +967 -0
- package/dist/revogr-clipboard_3.entry-BRLLR59Q.js +334 -0
- package/dist/revogr-data_4.entry-D1ndZEok.js +745 -0
- package/dist/revogr-filter-panel.entry-C-xzIppO.js +329 -0
- package/dist/store/domain.d.ts +91 -0
- package/dist/test/overlay/context-menu-manager.test.d.ts +1 -0
- package/dist/test/sfc/EndgeVueAdapter.test.d.ts +1 -0
- package/dist/test/sfc/SFCRender_Component.test.d.ts +1 -0
- package/dist/test/sfc/SFCRender_Evaluator.test.d.ts +1 -0
- package/dist/test/sfc/SFCRender_FormControls.test.d.ts +1 -0
- package/dist/test/sfc/SFCRender_Grid.test.d.ts +1 -0
- package/dist/test/sfc/SFCRender_IntrinsicEvents.test.d.ts +1 -0
- package/dist/test/sfc/SFCRender_TableAlignment.test.d.ts +1 -0
- package/dist/test/sfc/SFCRender_TableLayout.test.d.ts +1 -0
- package/dist/test/sfc/SFCRender_TableVisibility.test.d.ts +1 -0
- package/dist/test/sfc/SFCVueRenderInspection.test.d.ts +1 -0
- package/dist/test/style/endge-dom-runtime-placement.test.d.ts +1 -0
- package/dist/test/style/endge-dom-style-jsdom.test.d.ts +1 -0
- package/dist/test/style/endge-dom-style.test.d.ts +1 -0
- package/dist/test/style/sfc-style-markers.test.d.ts +1 -0
- package/dist/throttle-Cpk1LoGk-5dM_0aHc.js +183 -0
- package/dist/ui/filter/EndgeFilterControlRenderer.d.ts +33 -0
- package/dist/ui/filter/EndgeFilterField.vue.d.ts +13 -0
- package/dist/ui/filter/EndgeFilterRenderer.vue.d.ts +3 -0
- package/dist/ui/filter/index.d.ts +2 -0
- package/dist/ui/layout/EndgeShell.vue.d.ts +22 -0
- package/dist/ui/overlay/EndgeContextMenuRoot.vue.d.ts +4 -0
- package/dist/ui/overlay/context-menu-manager.d.ts +46 -0
- package/dist/ui/render/entities/EndgePage.vue.d.ts +1852 -0
- package/dist/ui/render/sfc/SFCRender_Badge.d.ts +3 -0
- package/dist/ui/render/sfc/SFCRender_Base.d.ts +8 -0
- package/dist/ui/render/sfc/SFCRender_BoundaryRegistry.d.ts +15 -0
- package/dist/ui/render/sfc/SFCRender_Box.d.ts +3 -0
- package/dist/ui/render/sfc/SFCRender_Checkbox.d.ts +3 -0
- package/dist/ui/render/sfc/SFCRender_Component.d.ts +3 -0
- package/dist/ui/render/sfc/SFCRender_Context.d.ts +8 -0
- package/dist/ui/render/sfc/SFCRender_DateTime.d.ts +3 -0
- package/dist/ui/render/sfc/SFCRender_Divider.d.ts +3 -0
- package/dist/ui/render/sfc/SFCRender_Dot.d.ts +3 -0
- package/dist/ui/render/sfc/SFCRender_Evaluator.d.ts +19 -0
- package/dist/ui/render/sfc/SFCRender_Flex.d.ts +3 -0
- package/dist/ui/render/sfc/SFCRender_Grid.d.ts +3 -0
- package/dist/ui/render/sfc/SFCRender_Icon.d.ts +3 -0
- package/dist/ui/render/sfc/SFCRender_Input.d.ts +3 -0
- package/dist/ui/render/sfc/SFCRender_Node.d.ts +6 -0
- package/dist/ui/render/sfc/SFCRender_Number.d.ts +3 -0
- package/dist/ui/render/sfc/SFCRender_Select.d.ts +3 -0
- package/dist/ui/render/sfc/SFCRender_Table.d.ts +9 -0
- package/dist/ui/render/sfc/SFCRender_TableAlignment.d.ts +8 -0
- package/dist/ui/render/sfc/SFCRender_TableStyle.d.ts +35 -0
- package/dist/ui/render/sfc/SFCRender_Text.d.ts +3 -0
- package/dist/ui/render/sfc/SFCRender_Textarea.d.ts +3 -0
- package/dist/ui/render/sfc/SFC_Renderer.vue.d.ts +3 -0
- package/dist/ui/render/sfc/SFC_RuntimeRenderer.vue.d.ts +3 -0
- package/dist/ui/table/NativeTablePagination.vue.d.ts +15 -0
- package/dist/viewport.helpers-CoCAvmZs-f555rwPU.js +77 -0
- package/dist/vue.css +1 -0
- package/dist/vue.js +75 -0
- package/package.json +77 -0
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
import { r as F, c as m, l as I, h as s, J as w, K as C, L as k, M as D, H as E, f as O } from "./main-CQv-nkoD.js";
|
|
2
|
+
/*!
|
|
3
|
+
* Built by Revolist OU ❤️
|
|
4
|
+
*/
|
|
5
|
+
(function() {
|
|
6
|
+
Element.prototype.matches || (Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector), Element.prototype.closest || (Element.prototype.closest = function(i) {
|
|
7
|
+
let t = this;
|
|
8
|
+
do {
|
|
9
|
+
if (Element.prototype.matches.call(t, i))
|
|
10
|
+
return t;
|
|
11
|
+
t = t.parentElement || t.parentNode;
|
|
12
|
+
} while (t !== null && t.nodeType === 1);
|
|
13
|
+
return null;
|
|
14
|
+
});
|
|
15
|
+
})();
|
|
16
|
+
const y = "text/revogrid-filter-id";
|
|
17
|
+
function S(e, i) {
|
|
18
|
+
e && (e.effectAllowed = "move", e.setData(y, String(i)), e.setData("text/plain", String(i)));
|
|
19
|
+
}
|
|
20
|
+
function A(e) {
|
|
21
|
+
if (!e)
|
|
22
|
+
return;
|
|
23
|
+
const t = (e.getData(y) || e.getData("text/plain")).trim();
|
|
24
|
+
if (!t)
|
|
25
|
+
return;
|
|
26
|
+
const r = Number(t);
|
|
27
|
+
return Number.isFinite(r) ? r : void 0;
|
|
28
|
+
}
|
|
29
|
+
function b(e, i, t) {
|
|
30
|
+
if (i === t)
|
|
31
|
+
return !1;
|
|
32
|
+
const r = e.findIndex((n) => n.id === i), a = e.findIndex((n) => n.id === t);
|
|
33
|
+
if (r === -1 || a === -1 || r === a)
|
|
34
|
+
return !1;
|
|
35
|
+
const o = e.map((n) => {
|
|
36
|
+
var d;
|
|
37
|
+
return (d = n.relation) !== null && d !== void 0 ? d : "and";
|
|
38
|
+
}), [l] = e.splice(r, 1);
|
|
39
|
+
return e.splice(a, 0, l), e.forEach((n, d) => {
|
|
40
|
+
var c;
|
|
41
|
+
n.relation = d === e.length - 1 ? "and" : (c = o[d]) !== null && c !== void 0 ? c : "and";
|
|
42
|
+
}), !0;
|
|
43
|
+
}
|
|
44
|
+
const T = () => '.revo-button{position:relative;overflow:hidden;color:#fff;background-color:#4545ff;height:32px;line-height:32px;padding:0 15px;outline:0;border:0;border-radius:7px;box-sizing:border-box;cursor:pointer}.revo-button.green{background-color:#009037}.revo-button.red{background-color:#E0662E}.revo-button:disabled,.revo-button[disabled]{cursor:not-allowed !important;filter:opacity(0.35) !important}.revo-button.outline{border:1px solid #dbdbdb;line-height:30px;background:none;color:#000;box-shadow:none}revo-grid[theme^=dark] .revo-button.outline{border:1px solid #404040;color:#d8d8d8}revogr-filter-panel{display:block}revogr-filter-panel .filter-panel-dialog{position:fixed;top:0;left:0;z-index:100;max-height:calc(100vh - 16px);overflow:auto;opacity:1;transform:none;background-color:var(--revo-grid-filter-panel-bg, #fff);border:1px solid var(--revo-grid-filter-panel-border, #cecece);transform-origin:62px 0px;box-shadow:0 5px 18px -2px var(--revo-grid-filter-panel-shadow, rgba(0, 0, 0, 0.15));box-sizing:border-box;padding:10px;border-radius:8px;margin:0;min-width:220px;text-align:left;animation:revogr-filter-panel-open 140ms cubic-bezier(0.2, 0, 0, 1)}revogr-filter-panel .filter-panel-dialog .filter-holder>div{display:flex;flex-direction:column}revogr-filter-panel .filter-panel-dialog label{font-size:13px;display:block;padding:8px 0}revogr-filter-panel .filter-panel-dialog select{width:100%}revogr-filter-panel .filter-panel-dialog input[type=text]{border:0;min-height:34px;margin:5px 0;background:var(--revo-grid-filter-panel-input-bg, #f3f3f3);border-radius:5px;padding:0 10px;box-sizing:border-box;width:100%}revogr-filter-panel .filter-panel-dialog .filter-actions{position:sticky;right:0;bottom:-10px;left:0;z-index:1;text-align:right;margin:10px -10px -10px;padding:0 5px 10px 10px;background:var(--revo-grid-filter-panel-bg, #fff);border-top:1px solid var(--revo-grid-filter-panel-divider, #d9d9d9)}revogr-filter-panel .filter-panel-dialog .filter-actions button{margin-top:10px;margin-right:5px}@keyframes revogr-filter-panel-open{from{opacity:0;transform:translateY(-4px) scale(0.98)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){revogr-filter-panel .filter-panel-dialog{animation:none}}.rgHeaderCell:hover .rv-filter{transition:opacity 267ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, transform 178ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.rgHeaderCell:hover .rv-filter,.rgHeaderCell .rv-filter.active{opacity:1}.rgHeaderCell .rv-filter{height:24px;width:24px;background:none;border:0;opacity:0;visibility:visible;cursor:pointer;border-radius:4px}.rgHeaderCell .rv-filter.active{color:#10224a}.rgHeaderCell .rv-filter .filter-img{color:gray;width:11px}.select-css{display:block;font-family:sans-serif;line-height:1.3;padding:0.6em 1.4em 0.5em 0.8em;width:100%;max-width:100%;box-sizing:border-box;margin:0;border:1px solid var(--revo-grid-filter-panel-select-border, #d9d9d9);box-shadow:transparent;border-radius:0.5em;appearance:none;background-color:var(--revo-grid-filter-panel-input-bg, #f3f3f3);background-image:url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23007CB2%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E");background-repeat:no-repeat, repeat;background-position:right 0.7em top 50%, 0 0;background-size:0.65em auto, 100%;}.select-css::-ms-expand{display:none}.select-css:hover{border-color:var(--revo-grid-filter-panel-select-border, #d9d9d9)}.select-css:focus{border-color:var(--revo-grid-filter-panel-select-border-hover, #d9d9d9);box-shadow:0 0 1px 3px rgba(59, 153, 252, 0.7);box-shadow:0 0 0 3px -moz-mac-focusring;outline:none}.select-css option{font-weight:normal}.select-css:disabled,.select-css[aria-disabled=true]{color:gray;background-image:url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22graytext%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E"), linear-gradient(to bottom, #ffffff 0%, #ffffff 100%)}.select-css:disabled:hover,.select-css[aria-disabled=true]{border-color:var(--revo-grid-filter-panel-select-border, #d9d9d9)}.multi-filter-list{margin-top:5px;margin-bottom:5px}.multi-filter-list div{white-space:nowrap}.multi-filter-list .multi-filter-list-row{display:flex;align-items:center;gap:6px;position:relative}.multi-filter-list .multi-filter-list-row.filter-row-dragging{opacity:0.65}.multi-filter-list .multi-filter-list-row.filter-row-drag-over::before{content:"";position:absolute;top:-4px;right:0;left:0;z-index:2;height:2px;background:var(--revo-grid-filter-panel-reorder-accent, #007cb2);border-radius:999px;box-shadow:0 0 0 2px var(--revo-grid-filter-panel-bg, #fff)}.multi-filter-list .multi-filter-list-row.filter-row-drop-active .filter-row-drop-target{pointer-events:auto}.multi-filter-list .filter-row-drop-target{position:absolute;inset:0;z-index:1;padding:0;pointer-events:none;background:transparent;border:0}.multi-filter-list .multi-filter-list-action{display:flex;align-self:stretch;flex:0 0 auto;justify-content:flex-end;align-items:center}.multi-filter-list .and-or-button{margin:0 0 0 10px;min-width:58px;cursor:pointer}.multi-filter-list .trash-button{margin:0 0 -2px 6px;padding:0;border:0;background:transparent;color:inherit;cursor:pointer;width:22px;height:100%;font-size:16px}.multi-filter-list .trash-button .trash-img{width:1em}.multi-filter-list .reorder-button{border:0;background:transparent;color:var(--revo-grid-filter-panel-reorder-color, #6b7280);cursor:grab;font-family:monospace;font-size:12px;letter-spacing:0;line-height:1;padding:6px 2px;transform:scaleX(0.8);width:16px}.multi-filter-list .reorder-button.filter-row-drag-over{color:var(--revo-grid-filter-panel-reorder-accent, #007cb2)}.multi-filter-list .reorder-button:active{cursor:grabbing}.multi-filter-list-container{padding:0;margin:0;list-style:none}.add-filter-divider{display:block;margin:0 -10px 10px -10px;border-bottom:1px solid var(--revo-grid-filter-panel-divider, #d9d9d9);height:10px}.select-input{display:flex;align-items:center;flex:1 1 auto;gap:6px;min-width:0}.select-input .select-filter,.select-input .filter-extra{flex:1 1 0;min-width:0}.select-input .select-filter{width:auto}.select-input .filter-extra{display:flex}.select-input .filter-extra>*{width:100%}.select-input input[type=text],.select-input input[type=date]{margin:0}', f = "none", _ = "multi-filter-list", R = "multi-filter-list-action", x = "add-filter", u = 8, L = class {
|
|
45
|
+
constructor(e) {
|
|
46
|
+
F(this, e), this.filterChange = m(this, "filterChange", 7), this.resetChange = m(this, "resetChange", 7), this.filterCaptionsInternal = {
|
|
47
|
+
title: "Filter by",
|
|
48
|
+
ok: "Close",
|
|
49
|
+
save: "Save",
|
|
50
|
+
// drops the filter
|
|
51
|
+
reset: "Reset",
|
|
52
|
+
cancel: "Cancel",
|
|
53
|
+
add: "Add condition",
|
|
54
|
+
placeholder: "Enter value...",
|
|
55
|
+
and: "and",
|
|
56
|
+
or: "or",
|
|
57
|
+
filterCondition: "Filter condition",
|
|
58
|
+
removeFilter: "Remove filter",
|
|
59
|
+
reorderFilter: "Reorder filter"
|
|
60
|
+
}, this.isFilterIdSet = !1, this.filterId = 0, this.currentFilterId = -1, this.currentFilterType = f, this.filterItems = {}, this.filterNames = {}, this.filterEntities = {}, this.disableDynamicFiltering = !1, this.closeOnOutsideClick = !0, this.debouncedApplyFilter = I(() => {
|
|
61
|
+
this.filterChange.emit(this.filterItems);
|
|
62
|
+
}, 400);
|
|
63
|
+
}
|
|
64
|
+
onMouseDown(e) {
|
|
65
|
+
if (!this.changes)
|
|
66
|
+
return;
|
|
67
|
+
const i = e.composedPath(), t = this.getAddFilterSelect();
|
|
68
|
+
if (t instanceof HTMLSelectElement) {
|
|
69
|
+
if (i.includes(t))
|
|
70
|
+
return;
|
|
71
|
+
t.value = f;
|
|
72
|
+
}
|
|
73
|
+
this.currentFilterType = f, this.changes && (this.changes.type = f), this.currentFilterId = -1, !i.includes(this.element) && !this.isOwnFilterButton(e.target) && this.closeOnOutsideClick && (this.changes = void 0);
|
|
74
|
+
}
|
|
75
|
+
async show(e) {
|
|
76
|
+
this.changes = e, this.filterItems = (e == null ? void 0 : e.filterItems) || {}, this.changes && (this.changes.type = this.changes.type || f);
|
|
77
|
+
}
|
|
78
|
+
async getChanges() {
|
|
79
|
+
return this.changes;
|
|
80
|
+
}
|
|
81
|
+
componentWillRender() {
|
|
82
|
+
if (!this.isFilterIdSet) {
|
|
83
|
+
this.isFilterIdSet = !0;
|
|
84
|
+
const e = Object.keys(this.filterItems);
|
|
85
|
+
for (const i of e)
|
|
86
|
+
this.filterId += this.filterItems[i].length;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
getFilterItemsList() {
|
|
90
|
+
var e, i;
|
|
91
|
+
const t = (e = this.changes) === null || e === void 0 ? void 0 : e.prop;
|
|
92
|
+
if (typeof t > "u")
|
|
93
|
+
return "";
|
|
94
|
+
const r = (i = this.filterItems[t]) !== null && i !== void 0 ? i : [], a = r.filter((l) => !l.hidden).length, o = Object.assign(Object.assign({}, this.filterCaptionsInternal), this.filterCaptions);
|
|
95
|
+
return s("div", { key: this.filterId }, s("ul", { class: "multi-filter-list-container" }, r.map((l, n) => {
|
|
96
|
+
let d;
|
|
97
|
+
if (l.hidden)
|
|
98
|
+
return;
|
|
99
|
+
n !== this.filterItems[t].length - 1 && (d = s(w, { text: l.relation === "and" ? o.and : o.or, onClick: () => this.toggleFilterAndOr(l.id) }));
|
|
100
|
+
const c = this.renderExtra(t, n), h = this.draggedFilterId === l.id, p = this.dragOverFilterId === l.id && !h, v = a > 1;
|
|
101
|
+
return s("li", { key: l.id, class: _, "aria-label": `${o.filterCondition} ${n + 1}` }, s("div", { class: {
|
|
102
|
+
"multi-filter-list-row": !0,
|
|
103
|
+
"filter-row-drop-active": this.draggedFilterId !== void 0 && !h,
|
|
104
|
+
"filter-row-dragging": h,
|
|
105
|
+
"filter-row-drag-over": p
|
|
106
|
+
} }, v ? s("button", { type: "button", class: "filter-row-drop-target", tabIndex: -1, "aria-label": `${o.filterCondition} ${n + 1}`, onDragOver: (g) => this.onFilterDragOver(g, l.id), onDragLeave: () => this.onFilterDragLeave(l.id), onDrop: (g) => this.onFilterDrop(g, t, l.id) }) : "", v ? s(C, { ariaLabel: o.reorderFilter, dragging: h, dragOver: p, onDragStart: (g) => this.onFilterDragStart(g, l.id), onDragEnd: () => this.onFilterDragEnd(), onKeyDown: (g) => this.onFilterReorderKeyDown(g, t, l.id) }) : "", s("div", { class: { "select-input": !0 } }, s("select", { class: "select-css select-filter", onChange: (g) => this.onFilterTypeChange(g, t, n) }, this.renderSelectOptions(this.filterItems[t][n].type, !0)), c ? s("div", { class: "filter-extra" }, c) : ""), s("div", { class: R }, d, s(k, { ariaLabel: o.removeFilter, onClick: () => this.onRemoveFilter(l.id) }))));
|
|
107
|
+
})), r.filter((l) => !l.hidden).length > 0 ? s("div", { class: "add-filter-divider" }) : "");
|
|
108
|
+
}
|
|
109
|
+
componentDidRender() {
|
|
110
|
+
this.syncDialog();
|
|
111
|
+
}
|
|
112
|
+
syncDialog() {
|
|
113
|
+
if (this.dialog) {
|
|
114
|
+
if (!this.changes) {
|
|
115
|
+
this.dialog.open && this.dialog.close();
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
this.dialog.open || this.dialog.show(), this.changes.autoCorrect !== !1 && (this.autoCorrect(this.dialog), requestAnimationFrame(() => this.autoCorrect(this.dialog)));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
autoCorrect(e) {
|
|
122
|
+
var i;
|
|
123
|
+
if (!e || !this.changes)
|
|
124
|
+
return;
|
|
125
|
+
e.style.maxHeight = "", e.style.left = `${this.changes.x}px`, e.style.top = `${this.changes.y}px`;
|
|
126
|
+
const t = e.getBoundingClientRect(), r = (i = this.changes.anchorY) !== null && i !== void 0 ? i : this.changes.y, a = this.changes.y, o = Math.max(0, r - u), l = Math.max(0, window.innerHeight - a - u), n = t.height > l && o > l, d = Math.max(u, n ? o : l);
|
|
127
|
+
e.style.maxHeight = `${d}px`;
|
|
128
|
+
const c = e.getBoundingClientRect(), h = Math.max(u, window.innerWidth - c.width - u), p = Math.max(u, window.innerHeight - c.height - u), v = Math.min(Math.max(u, this.changes.x), h), g = Math.min(n ? Math.max(u, r - c.height) : Math.max(u, a), p);
|
|
129
|
+
e.style.left = `${v}px`, e.style.top = `${g}px`;
|
|
130
|
+
}
|
|
131
|
+
onFilterTypeChange(e, i, t) {
|
|
132
|
+
e.target instanceof HTMLSelectElement && (this.filterItems[i][t].type = e.target.value, this.filterId++, setTimeout(() => {
|
|
133
|
+
const r = document.getElementById("filter-input-" + this.filterItems[i][t].id);
|
|
134
|
+
r instanceof HTMLInputElement && r.focus();
|
|
135
|
+
}, 0), this.disableDynamicFiltering || this.debouncedApplyFilter());
|
|
136
|
+
}
|
|
137
|
+
onAddNewFilter(e) {
|
|
138
|
+
const i = e.target;
|
|
139
|
+
this.currentFilterType = i.value, this.addNewFilterToProp();
|
|
140
|
+
const t = this.getAddFilterSelect();
|
|
141
|
+
t && (t.value = f, this.currentFilterType = f), this.disableDynamicFiltering || this.debouncedApplyFilter();
|
|
142
|
+
}
|
|
143
|
+
addNewFilterToProp() {
|
|
144
|
+
var e;
|
|
145
|
+
const i = (e = this.changes) === null || e === void 0 ? void 0 : e.prop;
|
|
146
|
+
(i || i === 0) && (this.filterItems[i] || (this.filterItems[i] = []), this.currentFilterType !== "none" && (this.filterId++, this.currentFilterId = this.filterId, this.filterItems[i].push({
|
|
147
|
+
id: this.currentFilterId,
|
|
148
|
+
type: this.currentFilterType,
|
|
149
|
+
value: "",
|
|
150
|
+
relation: "and"
|
|
151
|
+
}), setTimeout(() => {
|
|
152
|
+
const t = document.getElementById("filter-input-" + this.currentFilterId);
|
|
153
|
+
t && t.focus();
|
|
154
|
+
}, 0)));
|
|
155
|
+
}
|
|
156
|
+
onSave() {
|
|
157
|
+
this.filterChange.emit(this.filterItems);
|
|
158
|
+
}
|
|
159
|
+
onCancel() {
|
|
160
|
+
this.changes = void 0;
|
|
161
|
+
}
|
|
162
|
+
onReset() {
|
|
163
|
+
var e;
|
|
164
|
+
this.assertChanges(), this.resetChange.emit((e = this.changes) === null || e === void 0 ? void 0 : e.prop), this.filterId++;
|
|
165
|
+
}
|
|
166
|
+
onRemoveFilter(e) {
|
|
167
|
+
var i;
|
|
168
|
+
this.assertChanges(), this.filterId++;
|
|
169
|
+
const t = (i = this.changes) === null || i === void 0 ? void 0 : i.prop, r = this.filterItems[t ?? ""];
|
|
170
|
+
if (!r)
|
|
171
|
+
return;
|
|
172
|
+
const a = r.findIndex((o) => o.id === e);
|
|
173
|
+
a !== -1 && (r.splice(a, 1), r.length === 0 && delete this.filterItems[t ?? ""], this.disableDynamicFiltering || this.debouncedApplyFilter());
|
|
174
|
+
}
|
|
175
|
+
onFilterDragStart(e, i) {
|
|
176
|
+
this.draggedFilterId = i, S(e.dataTransfer, i);
|
|
177
|
+
}
|
|
178
|
+
onFilterDragOver(e, i) {
|
|
179
|
+
this.draggedFilterId === void 0 || this.draggedFilterId === i || (e.preventDefault(), e.dataTransfer && (e.dataTransfer.dropEffect = "move"), this.dragOverFilterId = i);
|
|
180
|
+
}
|
|
181
|
+
onFilterDragLeave(e) {
|
|
182
|
+
this.dragOverFilterId === e && (this.dragOverFilterId = void 0);
|
|
183
|
+
}
|
|
184
|
+
onFilterDrop(e, i, t) {
|
|
185
|
+
var r;
|
|
186
|
+
e.preventDefault();
|
|
187
|
+
const a = (r = this.draggedFilterId) !== null && r !== void 0 ? r : A(e.dataTransfer);
|
|
188
|
+
if (this.onFilterDragEnd(), a === void 0)
|
|
189
|
+
return;
|
|
190
|
+
const o = this.filterItems[i];
|
|
191
|
+
o && b(o, a, t) && (this.filterId++, this.disableDynamicFiltering || this.debouncedApplyFilter());
|
|
192
|
+
}
|
|
193
|
+
onFilterDragEnd() {
|
|
194
|
+
this.draggedFilterId = void 0, this.dragOverFilterId = void 0;
|
|
195
|
+
}
|
|
196
|
+
onFilterReorderKeyDown(e, i, t) {
|
|
197
|
+
let r = 0;
|
|
198
|
+
if (e.key === "ArrowUp")
|
|
199
|
+
r = -1;
|
|
200
|
+
else if (e.key === "ArrowDown")
|
|
201
|
+
r = 1;
|
|
202
|
+
else
|
|
203
|
+
return;
|
|
204
|
+
const a = this.filterItems[i];
|
|
205
|
+
if (!a)
|
|
206
|
+
return;
|
|
207
|
+
const o = a.filter((d) => !d.hidden), l = o.findIndex((d) => d.id === t);
|
|
208
|
+
if (l === -1)
|
|
209
|
+
return;
|
|
210
|
+
e.preventDefault(), e.stopPropagation();
|
|
211
|
+
const n = o[l + r];
|
|
212
|
+
!n || !b(a, t, n.id) || (this.filterId++, this.disableDynamicFiltering || this.debouncedApplyFilter());
|
|
213
|
+
}
|
|
214
|
+
toggleFilterAndOr(e) {
|
|
215
|
+
var i;
|
|
216
|
+
this.assertChanges(), this.filterId++;
|
|
217
|
+
const t = (i = this.changes) === null || i === void 0 ? void 0 : i.prop, r = this.filterItems[t ?? ""];
|
|
218
|
+
if (!r)
|
|
219
|
+
return;
|
|
220
|
+
const a = r.findIndex((o) => o.id === e);
|
|
221
|
+
a !== -1 && (r[a].relation = r[a].relation === "and" ? "or" : "and", this.disableDynamicFiltering || this.debouncedApplyFilter());
|
|
222
|
+
}
|
|
223
|
+
assertChanges() {
|
|
224
|
+
if (!this.changes)
|
|
225
|
+
throw new Error("Changes required per edit");
|
|
226
|
+
}
|
|
227
|
+
renderSelectOptions(e, i = !1) {
|
|
228
|
+
if (!this.changes)
|
|
229
|
+
return;
|
|
230
|
+
const t = [], r = this.changes.prop, a = /* @__PURE__ */ new Set();
|
|
231
|
+
if (Object.keys(this.filterItems).forEach((o) => {
|
|
232
|
+
this.filterItems[o].forEach((n) => {
|
|
233
|
+
n.hidden && a.add(n.type);
|
|
234
|
+
});
|
|
235
|
+
}), !i) {
|
|
236
|
+
const o = Object.assign(Object.assign({}, this.filterCaptionsInternal), this.filterCaptions);
|
|
237
|
+
t.push(s("option", { selected: this.currentFilterType === f, value: f }, r && this.filterItems[r] && this.filterItems[r].length > 0 ? o.add : this.filterNames[f]));
|
|
238
|
+
}
|
|
239
|
+
for (let o in this.changes.filterTypes) {
|
|
240
|
+
const l = this.changes.filterTypes[o].filter((n) => !a.has(n));
|
|
241
|
+
l.length && (t.push(...l.map((n) => s("option", { value: n, selected: e === n }, this.filterNames[n]))), t.push(s("option", { disabled: !0 })));
|
|
242
|
+
}
|
|
243
|
+
return t;
|
|
244
|
+
}
|
|
245
|
+
renderExtra(e, i) {
|
|
246
|
+
const t = this.filterItems[e];
|
|
247
|
+
if (!t)
|
|
248
|
+
return "";
|
|
249
|
+
const r = (n) => {
|
|
250
|
+
this.filterItems[e][i].value = n, this.disableDynamicFiltering || this.debouncedApplyFilter();
|
|
251
|
+
}, a = () => {
|
|
252
|
+
const n = this.getAddFilterSelect();
|
|
253
|
+
n && (n.value = f, this.currentFilterType = f, this.addNewFilterToProp(), n.focus());
|
|
254
|
+
}, o = Object.assign(Object.assign({}, this.filterCaptionsInternal), this.filterCaptions), l = this.filterEntities[t[i].type].extra;
|
|
255
|
+
return typeof l == "function" ? l(s, {
|
|
256
|
+
value: t[i].value,
|
|
257
|
+
filter: t[i],
|
|
258
|
+
prop: e,
|
|
259
|
+
index: i,
|
|
260
|
+
placeholder: o.placeholder,
|
|
261
|
+
onInput: (n) => {
|
|
262
|
+
r(n);
|
|
263
|
+
},
|
|
264
|
+
onFocus: () => {
|
|
265
|
+
a();
|
|
266
|
+
}
|
|
267
|
+
}) : l !== "input" && l !== "datepicker" ? "" : s("input", { id: `filter-input-${t[i].id}`, placeholder: o.placeholder, type: l === "datepicker" ? "date" : "text", value: t[i].value, onInput: (n) => {
|
|
268
|
+
n.target instanceof HTMLInputElement && r(n.target.value);
|
|
269
|
+
}, onKeyDown: (n) => {
|
|
270
|
+
if (n.key.toLowerCase() === "enter") {
|
|
271
|
+
this.getAddFilterSelect() && a();
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
n.stopPropagation();
|
|
275
|
+
} });
|
|
276
|
+
}
|
|
277
|
+
getAddFilterSelect() {
|
|
278
|
+
return this.element.querySelector(`#${x}`);
|
|
279
|
+
}
|
|
280
|
+
isOwnFilterButton(e) {
|
|
281
|
+
if (!(e instanceof Element) || !D(e))
|
|
282
|
+
return !1;
|
|
283
|
+
const i = this.getOwningGrid(this.element), t = this.getOwningGrid(e);
|
|
284
|
+
return !!i && i === t;
|
|
285
|
+
}
|
|
286
|
+
getOwningGrid(e) {
|
|
287
|
+
const i = e.closest("revo-grid");
|
|
288
|
+
if (i)
|
|
289
|
+
return i;
|
|
290
|
+
const t = e.getRootNode();
|
|
291
|
+
if (t instanceof ShadowRoot && t.host.localName === "revo-grid")
|
|
292
|
+
return t.host;
|
|
293
|
+
}
|
|
294
|
+
render() {
|
|
295
|
+
var e, i, t, r, a, o, l, n, d;
|
|
296
|
+
const c = {
|
|
297
|
+
left: `${(i = (e = this.changes) === null || e === void 0 ? void 0 : e.x) !== null && i !== void 0 ? i : 0}px`,
|
|
298
|
+
top: `${(r = (t = this.changes) === null || t === void 0 ? void 0 : t.y) !== null && r !== void 0 ? r : 0}px`
|
|
299
|
+
}, h = Object.assign(Object.assign({}, this.filterCaptionsInternal), this.filterCaptions);
|
|
300
|
+
return s(E, { key: "2a19b35adb56fb7d23385fffebc768838edee162" }, s("dialog", { key: "94386d7cbc4bd9c631f72928938b1d1550a3de82", class: "filter-panel-dialog", style: c, ref: (p) => this.dialog = p, onCancel: (p) => {
|
|
301
|
+
p.preventDefault(), this.onCancel();
|
|
302
|
+
} }, this.changes && [
|
|
303
|
+
s("slot", { key: "header-slot", slot: "header" }),
|
|
304
|
+
((o = (a = this.changes).extraContent) === null || o === void 0 ? void 0 : o.call(a, this.changes)) || "",
|
|
305
|
+
((l = this.changes) === null || l === void 0 ? void 0 : l.hideDefaultFilters) !== !0 && [
|
|
306
|
+
s("label", { key: "filter-title" }, h.title),
|
|
307
|
+
s("div", { key: "filter-holder", class: "filter-holder" }, this.getFilterItemsList()),
|
|
308
|
+
s("div", { key: "add-filter", class: "add-filter" }, s("select", { key: "4f7354e39d8e5cf9ae7b735290eff18d105ab87e", id: x, class: "select-css", onChange: (p) => this.onAddNewFilter(p) }, this.renderSelectOptions(this.currentFilterType)))
|
|
309
|
+
],
|
|
310
|
+
s("slot", { key: "default-slot" }),
|
|
311
|
+
((d = (n = this.changes).extraBottomContent) === null || d === void 0 ? void 0 : d.call(n, this.changes)) || "",
|
|
312
|
+
s("div", { key: "filter-actions", class: "filter-actions" }, this.disableDynamicFiltering && [
|
|
313
|
+
s("button", { key: "save", id: "revo-button-save", "aria-label": "save", class: "revo-button green", onClick: () => this.onSave() }, h.save),
|
|
314
|
+
s("button", { key: "cancel", id: "revo-button-ok", "aria-label": "ok", class: "revo-button green", onClick: () => this.onCancel() }, h.cancel)
|
|
315
|
+
], !this.disableDynamicFiltering && [
|
|
316
|
+
s("button", { key: "ok", id: "revo-button-ok", "aria-label": "ok", class: "revo-button green", onClick: () => this.onCancel() }, h.ok),
|
|
317
|
+
s("button", { key: "reset", id: "revo-button-reset", "aria-label": "reset", class: "revo-button outline", onClick: () => this.onReset() }, h.reset)
|
|
318
|
+
]),
|
|
319
|
+
s("slot", { key: "footer-slot", slot: "footer" })
|
|
320
|
+
]));
|
|
321
|
+
}
|
|
322
|
+
get element() {
|
|
323
|
+
return O(this);
|
|
324
|
+
}
|
|
325
|
+
};
|
|
326
|
+
L.style = T();
|
|
327
|
+
export {
|
|
328
|
+
L as revogr_filter_panel
|
|
329
|
+
};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
export declare const useDomainStore: import('pinia').StoreDefinition<"endge-domain-store", Pick<{
|
|
2
|
+
domain: import('vue').Ref<import('@endge/core').EndgeDomain, import('@endge/core').EndgeDomain>;
|
|
3
|
+
projects: import('vue').ComputedRef<import('@endge/core/dist/domain/entities/reflect/RProject').RProject[]>;
|
|
4
|
+
types: import('vue').ComputedRef<import('@endge/core').RType[]>;
|
|
5
|
+
typesPrimitives: import('vue').ComputedRef<import('@endge/core').RType[]>;
|
|
6
|
+
typesComplex: import('vue').ComputedRef<import('@endge/core').RType[]>;
|
|
7
|
+
typeCatalog: import('vue').ComputedRef<import('@endge/core').TypeProgramCatalogEntry[]>;
|
|
8
|
+
queries: import('vue').ComputedRef<import('@endge/core').RQuery[]>;
|
|
9
|
+
components: import('vue').ComputedRef<import('@endge/core').RComponent[]>;
|
|
10
|
+
componentSFCs: import('vue').ComputedRef<import('@endge/core').RComponentSFC[]>;
|
|
11
|
+
actions: import('vue').ComputedRef<import('@endge/core').RAction[]>;
|
|
12
|
+
converters: import('vue').ComputedRef<import('@endge/core').RConverter[]>;
|
|
13
|
+
integrations: import('vue').ComputedRef<import('@endge/core').RIntegration[]>;
|
|
14
|
+
pageTemplates: import('vue').ComputedRef<import('@endge/core').RPageTemplate[]>;
|
|
15
|
+
pages: import('vue').ComputedRef<import('@endge/core').RPage[]>;
|
|
16
|
+
navigations: import('vue').ComputedRef<import('@endge/core').RNavigation[]>;
|
|
17
|
+
folders: import('vue').ComputedRef<import('@endge/core').RFolder[]>;
|
|
18
|
+
queriesNames: import('vue').ComputedRef<string[]>;
|
|
19
|
+
parameters: import('vue').ComputedRef<import('@endge/core').RParameter[]>;
|
|
20
|
+
filters: import('vue').ComputedRef<import('@endge/core').RFilter[]>;
|
|
21
|
+
compositions: import('vue').ComputedRef<import('@endge/core').RComposition[]>;
|
|
22
|
+
environments: import('vue').ComputedRef<import('@endge/core').REnvironment[]>;
|
|
23
|
+
tenants: import('vue').ComputedRef<import('@endge/core').RTenant[]>;
|
|
24
|
+
policies: import('vue').ComputedRef<import('@endge/core').RPolicy[]>;
|
|
25
|
+
styles: import('vue').ComputedRef<import('@endge/core').RStyle[]>;
|
|
26
|
+
vocabs: import('vue').ComputedRef<import('@endge/core').RVocabs[]>;
|
|
27
|
+
i18nBundles: import('vue').ComputedRef<import('@endge/core').RI18nBundle[]>;
|
|
28
|
+
mocks: import('vue').ComputedRef<import('@endge/core').RMock[]>;
|
|
29
|
+
authProfiles: import('vue').ComputedRef<import('@endge/core').RAuthProfile[]>;
|
|
30
|
+
events: import('vue').ComputedRef<import('@endge/core').CachedEvent[]>;
|
|
31
|
+
}, "domain">, Pick<{
|
|
32
|
+
domain: import('vue').Ref<import('@endge/core').EndgeDomain, import('@endge/core').EndgeDomain>;
|
|
33
|
+
projects: import('vue').ComputedRef<import('@endge/core/dist/domain/entities/reflect/RProject').RProject[]>;
|
|
34
|
+
types: import('vue').ComputedRef<import('@endge/core').RType[]>;
|
|
35
|
+
typesPrimitives: import('vue').ComputedRef<import('@endge/core').RType[]>;
|
|
36
|
+
typesComplex: import('vue').ComputedRef<import('@endge/core').RType[]>;
|
|
37
|
+
typeCatalog: import('vue').ComputedRef<import('@endge/core').TypeProgramCatalogEntry[]>;
|
|
38
|
+
queries: import('vue').ComputedRef<import('@endge/core').RQuery[]>;
|
|
39
|
+
components: import('vue').ComputedRef<import('@endge/core').RComponent[]>;
|
|
40
|
+
componentSFCs: import('vue').ComputedRef<import('@endge/core').RComponentSFC[]>;
|
|
41
|
+
actions: import('vue').ComputedRef<import('@endge/core').RAction[]>;
|
|
42
|
+
converters: import('vue').ComputedRef<import('@endge/core').RConverter[]>;
|
|
43
|
+
integrations: import('vue').ComputedRef<import('@endge/core').RIntegration[]>;
|
|
44
|
+
pageTemplates: import('vue').ComputedRef<import('@endge/core').RPageTemplate[]>;
|
|
45
|
+
pages: import('vue').ComputedRef<import('@endge/core').RPage[]>;
|
|
46
|
+
navigations: import('vue').ComputedRef<import('@endge/core').RNavigation[]>;
|
|
47
|
+
folders: import('vue').ComputedRef<import('@endge/core').RFolder[]>;
|
|
48
|
+
queriesNames: import('vue').ComputedRef<string[]>;
|
|
49
|
+
parameters: import('vue').ComputedRef<import('@endge/core').RParameter[]>;
|
|
50
|
+
filters: import('vue').ComputedRef<import('@endge/core').RFilter[]>;
|
|
51
|
+
compositions: import('vue').ComputedRef<import('@endge/core').RComposition[]>;
|
|
52
|
+
environments: import('vue').ComputedRef<import('@endge/core').REnvironment[]>;
|
|
53
|
+
tenants: import('vue').ComputedRef<import('@endge/core').RTenant[]>;
|
|
54
|
+
policies: import('vue').ComputedRef<import('@endge/core').RPolicy[]>;
|
|
55
|
+
styles: import('vue').ComputedRef<import('@endge/core').RStyle[]>;
|
|
56
|
+
vocabs: import('vue').ComputedRef<import('@endge/core').RVocabs[]>;
|
|
57
|
+
i18nBundles: import('vue').ComputedRef<import('@endge/core').RI18nBundle[]>;
|
|
58
|
+
mocks: import('vue').ComputedRef<import('@endge/core').RMock[]>;
|
|
59
|
+
authProfiles: import('vue').ComputedRef<import('@endge/core').RAuthProfile[]>;
|
|
60
|
+
events: import('vue').ComputedRef<import('@endge/core').CachedEvent[]>;
|
|
61
|
+
}, "parameters" | "pages" | "components" | "filters" | "actions" | "projects" | "types" | "typesPrimitives" | "typesComplex" | "typeCatalog" | "queries" | "componentSFCs" | "converters" | "integrations" | "pageTemplates" | "navigations" | "folders" | "queriesNames" | "compositions" | "environments" | "tenants" | "policies" | "styles" | "vocabs" | "i18nBundles" | "mocks" | "authProfiles" | "events">, Pick<{
|
|
62
|
+
domain: import('vue').Ref<import('@endge/core').EndgeDomain, import('@endge/core').EndgeDomain>;
|
|
63
|
+
projects: import('vue').ComputedRef<import('@endge/core/dist/domain/entities/reflect/RProject').RProject[]>;
|
|
64
|
+
types: import('vue').ComputedRef<import('@endge/core').RType[]>;
|
|
65
|
+
typesPrimitives: import('vue').ComputedRef<import('@endge/core').RType[]>;
|
|
66
|
+
typesComplex: import('vue').ComputedRef<import('@endge/core').RType[]>;
|
|
67
|
+
typeCatalog: import('vue').ComputedRef<import('@endge/core').TypeProgramCatalogEntry[]>;
|
|
68
|
+
queries: import('vue').ComputedRef<import('@endge/core').RQuery[]>;
|
|
69
|
+
components: import('vue').ComputedRef<import('@endge/core').RComponent[]>;
|
|
70
|
+
componentSFCs: import('vue').ComputedRef<import('@endge/core').RComponentSFC[]>;
|
|
71
|
+
actions: import('vue').ComputedRef<import('@endge/core').RAction[]>;
|
|
72
|
+
converters: import('vue').ComputedRef<import('@endge/core').RConverter[]>;
|
|
73
|
+
integrations: import('vue').ComputedRef<import('@endge/core').RIntegration[]>;
|
|
74
|
+
pageTemplates: import('vue').ComputedRef<import('@endge/core').RPageTemplate[]>;
|
|
75
|
+
pages: import('vue').ComputedRef<import('@endge/core').RPage[]>;
|
|
76
|
+
navigations: import('vue').ComputedRef<import('@endge/core').RNavigation[]>;
|
|
77
|
+
folders: import('vue').ComputedRef<import('@endge/core').RFolder[]>;
|
|
78
|
+
queriesNames: import('vue').ComputedRef<string[]>;
|
|
79
|
+
parameters: import('vue').ComputedRef<import('@endge/core').RParameter[]>;
|
|
80
|
+
filters: import('vue').ComputedRef<import('@endge/core').RFilter[]>;
|
|
81
|
+
compositions: import('vue').ComputedRef<import('@endge/core').RComposition[]>;
|
|
82
|
+
environments: import('vue').ComputedRef<import('@endge/core').REnvironment[]>;
|
|
83
|
+
tenants: import('vue').ComputedRef<import('@endge/core').RTenant[]>;
|
|
84
|
+
policies: import('vue').ComputedRef<import('@endge/core').RPolicy[]>;
|
|
85
|
+
styles: import('vue').ComputedRef<import('@endge/core').RStyle[]>;
|
|
86
|
+
vocabs: import('vue').ComputedRef<import('@endge/core').RVocabs[]>;
|
|
87
|
+
i18nBundles: import('vue').ComputedRef<import('@endge/core').RI18nBundle[]>;
|
|
88
|
+
mocks: import('vue').ComputedRef<import('@endge/core').RMock[]>;
|
|
89
|
+
authProfiles: import('vue').ComputedRef<import('@endge/core').RAuthProfile[]>;
|
|
90
|
+
events: import('vue').ComputedRef<import('@endge/core').CachedEvent[]>;
|
|
91
|
+
}, never>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|