@golemui/gui-lit 0.0.2 → 0.12.0
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/README.md +17 -4
- package/{accordion.element-D1RfC2ew.js → accordion.element-81uTv6Ms.js} +29 -18
- package/{alert.element-B4rpyqGV.js → alert.element-DWrS5ggK.js} +17 -17
- package/button.element-hjhVBamJ.js +56 -0
- package/{calendar.element-D7mAbpAa.js → calendar.element-C1rLK7aY.js} +24 -18
- package/{checkbox.element--Kc7sWBx.js → checkbox.element-bu9_MvED.js} +8 -8
- package/{currency.element-D9dyGRBH.js → currency.element-Bxv2WxAx.js} +20 -19
- package/date-picker.element-GNC8f3Qi.js +157 -0
- package/{date.element-na_Uywms.js → date.element-Dzw-UJzC.js} +10 -10
- package/{dropdown.element-Cfj40aJz.js → dropdown.element-CebROj9s.js} +95 -78
- package/flex.element-BMqqfxjI.js +77 -0
- package/grid.element-CBMoOuLt.js +75 -0
- package/index.js +1104 -1031
- package/index.umd.cjs +319 -112
- package/lib/components/accordion.element.d.ts +1 -1
- package/lib/components/alert.element.d.ts +1 -1
- package/lib/components/button.element.d.ts +3 -2
- package/lib/components/calendar.element.d.ts +1 -0
- package/lib/components/checkbox.element.d.ts +1 -1
- package/lib/components/currency.element.d.ts +1 -1
- package/lib/components/date-picker.element.d.ts +4 -2
- package/lib/components/date.element.d.ts +1 -1
- package/lib/components/dropdown.element.d.ts +1 -1
- package/lib/components/flex.element.d.ts +1 -1
- package/lib/components/form.element.d.ts +6 -16
- package/lib/components/grid.element.d.ts +16 -0
- package/lib/components/list.element.d.ts +1 -1
- package/lib/components/markdown-text.element.d.ts +16 -0
- package/lib/components/markdown.element.d.ts +17 -0
- package/lib/components/number.element.d.ts +1 -1
- package/lib/components/password.element.d.ts +1 -1
- package/lib/components/radiogroup.element.d.ts +1 -1
- package/lib/components/range-calendar.element.d.ts +1 -0
- package/lib/components/range-date-input.element.d.ts +18 -0
- package/lib/components/range-date-picker.element.d.ts +30 -0
- package/lib/components/renderer.element.d.ts +1 -0
- package/lib/components/repeater.element.d.ts +5 -1
- package/lib/components/select.element.d.ts +1 -1
- package/lib/components/tabs.element.d.ts +1 -1
- package/lib/components/textarea.element.d.ts +1 -1
- package/lib/components/textinput.element.d.ts +1 -1
- package/lib/components/toggle.element.d.ts +1 -1
- package/lib/widget.loaders.d.ts +2 -2
- package/{list.element--aj6sNNU.js → list.element-DIIgN_Ww.js} +66 -59
- package/markdown-text.element-DY7b-dU5.js +53 -0
- package/markdown.element-ZD_n4ObO.js +73 -0
- package/{number.element-Bl5YReaL.js → number.element-B0E7W2TK.js} +20 -19
- package/package.json +11 -6
- package/{password.element-CKmcH8Gn.js → password.element-C4_eLdUO.js} +11 -10
- package/{radiogroup.element-Cn1lyyVE.js → radiogroup.element-BD8qBNoO.js} +8 -7
- package/{range-calendar.element-C2YUElqM.js → range-calendar.element-Bli9UfhN.js} +35 -27
- package/range-date-input.element-BwPvGk5F.js +72 -0
- package/range-date-picker.element-DJQOwDPh.js +170 -0
- package/renderer.element-B99qD2mz.js +48 -0
- package/repeater.element-AaifWsOB.js +136 -0
- package/{select.element-LWiqYxzA.js → select.element-BLxtqB0A.js} +9 -8
- package/{tabs.element-DYg1wAz9.js → tabs.element-k8JMNDXi.js} +18 -16
- package/{textarea.element-BXc-rLZE.js → textarea.element-DgDwfzYP.js} +14 -14
- package/{textinput.element-x9LYeW8B.js → textinput.element-DSLFDjfb.js} +17 -16
- package/{toggle.element-BP4YKWyR.js → toggle.element-BLu6F99u.js} +5 -5
- package/CHANGELOG.md +0 -529
- package/button.element-BnUBVNSH.js +0 -58
- package/date-picker.element-Dcs5OpxN.js +0 -136
- package/flex.element-BSMOum-h.js +0 -65
- package/renderer.element-B7AjPqr2.js +0 -43
- package/repeater.element-BfwzCooC.js +0 -83
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import * as l from "@golemui/lit";
|
|
2
|
-
import { addIcon as c, addLabel as u, addErrors as m } from "@golemui/gui-components";
|
|
3
|
-
import { consume as $, provide as C } from "@lit/context";
|
|
4
|
-
import { LitElement as D, html as o, nothing as v } from "lit";
|
|
5
|
-
import { property as g, query as h, state as b, customElement as f } from "lit/decorators.js";
|
|
6
|
-
import { classMap as y } from "lit/directives/class-map.js";
|
|
7
|
-
var I = Object.defineProperty, k = Object.getOwnPropertyDescriptor, s = (t, e, n, i) => {
|
|
8
|
-
for (var a = i > 1 ? void 0 : i ? k(e, n) : e, d = t.length - 1, p; d >= 0; d--)
|
|
9
|
-
(p = t[d]) && (a = (i ? p(e, n, a) : p(a)) || a);
|
|
10
|
-
return i && a && I(e, n, a), a;
|
|
11
|
-
};
|
|
12
|
-
let r = class extends D {
|
|
13
|
-
constructor() {
|
|
14
|
-
super(...arguments), this.adapter = new l.InputWidgetAdapter(), this.isCalendarOpen = !1, this.subscriptions = [], this.onDocumentClick = (t) => {
|
|
15
|
-
if (!this.isCalendarOpen) return;
|
|
16
|
-
const e = t.composedPath(), n = this.dateInput && e.includes(this.dateInput), i = this.calendarInput && e.includes(this.calendarInput);
|
|
17
|
-
!n && !i && this.closeCalendar();
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
createRenderRoot() {
|
|
21
|
-
return this;
|
|
22
|
-
}
|
|
23
|
-
connectedCallback() {
|
|
24
|
-
super.connectedCallback(), document.addEventListener("click", this.onDocumentClick), this.classList.add("gui-date-picker"), this.adapter.context = this.formContext, this.adapter.init(this.widget), this.subscriptions.push(
|
|
25
|
-
this.adapter.templateDataChanged$.subscribe(() => this.requestUpdate())
|
|
26
|
-
);
|
|
27
|
-
}
|
|
28
|
-
updated(t) {
|
|
29
|
-
super.updated(t);
|
|
30
|
-
const e = this.adapter.templateData.size;
|
|
31
|
-
e ? this.style.flex = String(e) : this.style.removeProperty("flex");
|
|
32
|
-
}
|
|
33
|
-
render() {
|
|
34
|
-
super.render();
|
|
35
|
-
const t = c("datePicker", this.adapter.templateData), e = this.isCalendarOpen ? o`<gui-calendar
|
|
36
|
-
id="calendar-input"
|
|
37
|
-
.uid=${this.widget.uid}
|
|
38
|
-
.hint=${this.adapter.templateData.hint}
|
|
39
|
-
?touched=${this.adapter.templateData.touched}
|
|
40
|
-
?required=${this.adapter.templateData.validator?.required}
|
|
41
|
-
?disabled=${this.adapter.templateData.disabled}
|
|
42
|
-
?readonly=${this.adapter.templateData.readonly}
|
|
43
|
-
.value=${this.adapter.templateData.value}
|
|
44
|
-
.prevMonthIcon=${this.adapter.templateData.prevMonthIcon}
|
|
45
|
-
.nextMonthIcon=${this.adapter.templateData.nextMonthIcon}
|
|
46
|
-
.prevMonthAriaLabel=${this.adapter.templateData.prevMonthAriaLabel}
|
|
47
|
-
.nextMonthAriaLabel=${this.adapter.templateData.nextMonthAriaLabel}
|
|
48
|
-
.dayFormat=${this.adapter.templateData.dayFormat}
|
|
49
|
-
.weekdayFormat=${this.adapter.templateData.weekdayFormat}
|
|
50
|
-
.monthFormat=${this.adapter.templateData.monthFormat}
|
|
51
|
-
.localeId=${this.adapter.templateData.lang}
|
|
52
|
-
@blur=${this.onBlurCalendar}
|
|
53
|
-
@change=${this.valueChanged}
|
|
54
|
-
></gui-calendar>` : v;
|
|
55
|
-
return o`
|
|
56
|
-
${u(this.widget.uid, this.adapter.templateData)}
|
|
57
|
-
|
|
58
|
-
<div
|
|
59
|
-
role="button"
|
|
60
|
-
tabindex="0"
|
|
61
|
-
class="gui-widget"
|
|
62
|
-
aria-expanded=${this.isCalendarOpen}
|
|
63
|
-
@keyup=${() => this.onKeyUp(event)}
|
|
64
|
-
@click=${() => this.openCalendar()}
|
|
65
|
-
>
|
|
66
|
-
<gui-date
|
|
67
|
-
id="date-input"
|
|
68
|
-
class=${y(t.widgetClasses)}
|
|
69
|
-
.uid=${this.widget.uid}
|
|
70
|
-
.hint=${this.adapter.templateData.hint}
|
|
71
|
-
.showErrors=${!1}
|
|
72
|
-
.errors=${this.adapter.templateData.errors}
|
|
73
|
-
?touched=${this.adapter.templateData.touched}
|
|
74
|
-
?required=${this.adapter.templateData.validator?.required}
|
|
75
|
-
?disabled=${this.adapter.templateData.disabled}
|
|
76
|
-
?readonly=${this.adapter.templateData.readonly}
|
|
77
|
-
.value=${this.adapter.templateData.value}
|
|
78
|
-
.icon=${this.adapter.templateData.icon}
|
|
79
|
-
.localeId=${this.adapter.templateData.lang}
|
|
80
|
-
@inputError=${this.onInputError}
|
|
81
|
-
@blur=${() => this.adapter.onBlur()}
|
|
82
|
-
@focus=${this.openCalendar}
|
|
83
|
-
@change=${this.valueChanged}
|
|
84
|
-
></gui-date>
|
|
85
|
-
|
|
86
|
-
${e}
|
|
87
|
-
</div>
|
|
88
|
-
|
|
89
|
-
${m(this.widget.uid, this.adapter.templateData)}
|
|
90
|
-
`;
|
|
91
|
-
}
|
|
92
|
-
valueChanged(t) {
|
|
93
|
-
this.adapter.injectValidationIssues(null), this.adapter.valueChanged(t.detail.value);
|
|
94
|
-
}
|
|
95
|
-
onBlurCalendar() {
|
|
96
|
-
this.adapter.onBlur(), this.closeCalendar();
|
|
97
|
-
}
|
|
98
|
-
onInputError(t) {
|
|
99
|
-
this.adapter.injectValidationIssues([t.detail.message]);
|
|
100
|
-
}
|
|
101
|
-
onKeyUp(t) {
|
|
102
|
-
const e = t;
|
|
103
|
-
(e?.key === "Enter" || e?.key === " ") && this.openCalendar();
|
|
104
|
-
}
|
|
105
|
-
openCalendar() {
|
|
106
|
-
this.isCalendarOpen = !0, this.requestUpdate();
|
|
107
|
-
}
|
|
108
|
-
closeCalendar() {
|
|
109
|
-
this.isCalendarOpen = !1, this.requestUpdate();
|
|
110
|
-
}
|
|
111
|
-
disconnectedCallback() {
|
|
112
|
-
super.disconnectedCallback(), document.removeEventListener("click", this.onDocumentClick), this.adapter.destroy(), this.subscriptions.forEach((t) => t.unsubscribe());
|
|
113
|
-
}
|
|
114
|
-
};
|
|
115
|
-
s([
|
|
116
|
-
$({ context: l.formContext }),
|
|
117
|
-
g({ attribute: !1 })
|
|
118
|
-
], r.prototype, "formContext", 2);
|
|
119
|
-
s([
|
|
120
|
-
C({ context: l.inputContext })
|
|
121
|
-
], r.prototype, "adapter", 2);
|
|
122
|
-
s([
|
|
123
|
-
h("#date-input")
|
|
124
|
-
], r.prototype, "dateInput", 2);
|
|
125
|
-
s([
|
|
126
|
-
h("#calendar-input")
|
|
127
|
-
], r.prototype, "calendarInput", 2);
|
|
128
|
-
s([
|
|
129
|
-
b()
|
|
130
|
-
], r.prototype, "isCalendarOpen", 2);
|
|
131
|
-
r = s([
|
|
132
|
-
f("gui-date-picker-input")
|
|
133
|
-
], r);
|
|
134
|
-
export {
|
|
135
|
-
r as DatePickerElement
|
|
136
|
-
};
|
package/flex.element-BSMOum-h.js
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import * as n from "@golemui/lit";
|
|
2
|
-
import { consume as c, provide as u } from "@lit/context";
|
|
3
|
-
import { LitElement as g, html as d } from "lit";
|
|
4
|
-
import { property as h, customElement as m } from "lit/decorators.js";
|
|
5
|
-
import { repeat as f } from "lit-html/directives/repeat.js";
|
|
6
|
-
import { classMap as x } from "lit/directives/class-map.js";
|
|
7
|
-
var _ = Object.defineProperty, w = Object.getOwnPropertyDescriptor, o = (e, t, s, i) => {
|
|
8
|
-
for (var a = i > 1 ? void 0 : i ? w(t, s) : t, l = e.length - 1, p; l >= 0; l--)
|
|
9
|
-
(p = e[l]) && (a = (i ? p(t, s, a) : p(a)) || a);
|
|
10
|
-
return i && a && _(t, s, a), a;
|
|
11
|
-
};
|
|
12
|
-
let r = class extends g {
|
|
13
|
-
constructor() {
|
|
14
|
-
super(...arguments), this.adapter = new n.LayoutWidgetAdapter(), this.subscriptions = [];
|
|
15
|
-
}
|
|
16
|
-
createRenderRoot() {
|
|
17
|
-
return this;
|
|
18
|
-
}
|
|
19
|
-
connectedCallback() {
|
|
20
|
-
super.connectedCallback(), this.classList.add("gui-flex"), this.adapter.context = this.formContext, this.adapter.init(this.widget), this.subscriptions.push(
|
|
21
|
-
this.adapter.templateDataChanged$.subscribe(() => this.requestUpdate())
|
|
22
|
-
);
|
|
23
|
-
}
|
|
24
|
-
updated(e) {
|
|
25
|
-
super.updated(e);
|
|
26
|
-
const t = this.adapter.templateData.size;
|
|
27
|
-
t ? this.style.flex = String(t) : this.style.removeProperty("flex");
|
|
28
|
-
}
|
|
29
|
-
render() {
|
|
30
|
-
const e = {
|
|
31
|
-
"gui-flex__widget": !0,
|
|
32
|
-
"gui-flex__widget--horizontal": this.adapter.templateData.direction === "horizontal",
|
|
33
|
-
"gui-flex__widget--align-start": this.adapter.templateData.align === "start",
|
|
34
|
-
"gui-flex__widget--align-end": this.adapter.templateData.align === "end",
|
|
35
|
-
"gui-flex__widget--align-center": this.adapter.templateData.align === "center",
|
|
36
|
-
"gui-flex__widget--align-space-between": this.adapter.templateData.align === "space-between",
|
|
37
|
-
"gui-flex__widget--align-space-around": this.adapter.templateData.align === "space-around"
|
|
38
|
-
};
|
|
39
|
-
return d`
|
|
40
|
-
<div class=${x(e)} id=${this.widget?.uid}>
|
|
41
|
-
${f(
|
|
42
|
-
this.adapter.templateData.children || [],
|
|
43
|
-
(t) => t?.uid,
|
|
44
|
-
(t) => d`<gui-widget .widget=${t}></gui-widget>`
|
|
45
|
-
)}
|
|
46
|
-
</div>
|
|
47
|
-
`;
|
|
48
|
-
}
|
|
49
|
-
disconnectedCallback() {
|
|
50
|
-
super.disconnectedCallback(), this.adapter.destroy(), this.subscriptions.forEach((e) => e.unsubscribe());
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
o([
|
|
54
|
-
c({ context: n.formContext }),
|
|
55
|
-
h({ attribute: !1 })
|
|
56
|
-
], r.prototype, "formContext", 2);
|
|
57
|
-
o([
|
|
58
|
-
u({ context: n.layoutContext })
|
|
59
|
-
], r.prototype, "adapter", 2);
|
|
60
|
-
r = o([
|
|
61
|
-
m("gui-flex-layout")
|
|
62
|
-
], r);
|
|
63
|
-
export {
|
|
64
|
-
r as FlexElement
|
|
65
|
-
};
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import * as p from "@golemui/lit";
|
|
2
|
-
import { consume as c, provide as l } from "@lit/context";
|
|
3
|
-
import { LitElement as u, html as m } from "lit";
|
|
4
|
-
import { property as h, customElement as b } from "lit/decorators.js";
|
|
5
|
-
var f = Object.defineProperty, g = Object.getOwnPropertyDescriptor, d = (e, r, a, s) => {
|
|
6
|
-
for (var t = s > 1 ? void 0 : s ? g(r, a) : r, o = e.length - 1, n; o >= 0; o--)
|
|
7
|
-
(n = e[o]) && (t = (s ? n(r, a, t) : n(t)) || t);
|
|
8
|
-
return s && t && f(r, a, t), t;
|
|
9
|
-
};
|
|
10
|
-
let i = class extends u {
|
|
11
|
-
constructor() {
|
|
12
|
-
super(...arguments), this.adapter = new p.DisplayWidgetAdapter(), this.subscriptions = [];
|
|
13
|
-
}
|
|
14
|
-
createRenderRoot() {
|
|
15
|
-
return this;
|
|
16
|
-
}
|
|
17
|
-
connectedCallback() {
|
|
18
|
-
super.connectedCallback(), this.classList.add("gui-renderer"), this.adapter.context = this.formContext, this.adapter.init(this.widget), this.subscriptions.push(
|
|
19
|
-
this.adapter.templateDataChanged$.subscribe(() => this.requestUpdate())
|
|
20
|
-
);
|
|
21
|
-
}
|
|
22
|
-
render() {
|
|
23
|
-
return m`
|
|
24
|
-
<div class="gui-widget" id=${this.widget.uid}>${this.adapter.templateData.render}</div>
|
|
25
|
-
`;
|
|
26
|
-
}
|
|
27
|
-
disconnectedCallback() {
|
|
28
|
-
super.disconnectedCallback(), this.adapter.destroy(), this.subscriptions.forEach((e) => e.unsubscribe());
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
d([
|
|
32
|
-
c({ context: p.formContext }),
|
|
33
|
-
h({ attribute: !1 })
|
|
34
|
-
], i.prototype, "formContext", 2);
|
|
35
|
-
d([
|
|
36
|
-
l({ context: p.displayWidgetContext })
|
|
37
|
-
], i.prototype, "adapter", 2);
|
|
38
|
-
i = d([
|
|
39
|
-
b("gui-renderer-component")
|
|
40
|
-
], i);
|
|
41
|
-
export {
|
|
42
|
-
i as RendererElement
|
|
43
|
-
};
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import * as o from "@golemui/lit";
|
|
2
|
-
import { consume as u, provide as h } from "@lit/context";
|
|
3
|
-
import { LitElement as m, nothing as c, html as n } from "lit";
|
|
4
|
-
import { repeat as b } from "lit-html/directives/repeat.js";
|
|
5
|
-
import { property as v, customElement as g } from "lit/decorators.js";
|
|
6
|
-
var f = Object.defineProperty, D = Object.getOwnPropertyDescriptor, l = (e, t, s, r) => {
|
|
7
|
-
for (var a = r > 1 ? void 0 : r ? D(t, s) : t, p = e.length - 1, d; p >= 0; p--)
|
|
8
|
-
(d = e[p]) && (a = (r ? d(t, s, a) : d(a)) || a);
|
|
9
|
-
return r && a && f(t, s, a), a;
|
|
10
|
-
};
|
|
11
|
-
let i = class extends m {
|
|
12
|
-
constructor() {
|
|
13
|
-
super(...arguments), this.adapter = new o.InputWidgetAdapter(), this.subscriptions = [];
|
|
14
|
-
}
|
|
15
|
-
createRenderRoot() {
|
|
16
|
-
return this;
|
|
17
|
-
}
|
|
18
|
-
connectedCallback() {
|
|
19
|
-
super.connectedCallback(), this.classList.add("gui-repeater"), this.adapter.context = this.formContext, this.adapter.init(this.widget), this.subscriptions.push(
|
|
20
|
-
this.adapter.templateDataChanged$.subscribe(() => this.requestUpdate())
|
|
21
|
-
);
|
|
22
|
-
}
|
|
23
|
-
updated(e) {
|
|
24
|
-
super.updated(e);
|
|
25
|
-
const t = this.adapter.templateData.size;
|
|
26
|
-
t ? this.style.flex = String(t) : this.style.removeProperty("flex");
|
|
27
|
-
}
|
|
28
|
-
render() {
|
|
29
|
-
return super.render(), n`
|
|
30
|
-
<div id=${this.widget.uid}>
|
|
31
|
-
<h2>${this.adapter.templateData.label}</h2>
|
|
32
|
-
|
|
33
|
-
${this.adapter.templateData.value ? b(
|
|
34
|
-
this.adapter.templateData.value,
|
|
35
|
-
(e) => e.uid,
|
|
36
|
-
(e, t) => n`
|
|
37
|
-
<div class="card">
|
|
38
|
-
<gui-repeater-widget
|
|
39
|
-
.repeaterIndex=${t}
|
|
40
|
-
.widget=${this.adapter.templateData.template}
|
|
41
|
-
></gui-repeater-widget>
|
|
42
|
-
<button type="button" class="gui-button" @click=${() => this.removeItem(t)}>
|
|
43
|
-
${this.adapter.templateData.removeLabel ?? "Remove"}
|
|
44
|
-
</button>
|
|
45
|
-
</div>
|
|
46
|
-
`
|
|
47
|
-
) : c}
|
|
48
|
-
|
|
49
|
-
<button
|
|
50
|
-
type="button"
|
|
51
|
-
class="gui-button"
|
|
52
|
-
@click=${() => this.addItem()}
|
|
53
|
-
?disabled=${!!(this.adapter.templateData.limit && this.adapter.templateData.limit === this.adapter.templateData.value?.length)}
|
|
54
|
-
>
|
|
55
|
-
${this.adapter.templateData.addLabel ?? "Add"}
|
|
56
|
-
</button>
|
|
57
|
-
</div>
|
|
58
|
-
`;
|
|
59
|
-
}
|
|
60
|
-
disconnectedCallback() {
|
|
61
|
-
super.disconnectedCallback(), this.adapter.destroy(), this.subscriptions.forEach((e) => e.unsubscribe());
|
|
62
|
-
}
|
|
63
|
-
addItem() {
|
|
64
|
-
this.adapter.valueChanged([...this.adapter.templateData.value ?? [], {}]), this.requestUpdate();
|
|
65
|
-
}
|
|
66
|
-
removeItem(e) {
|
|
67
|
-
const t = [...this.adapter.templateData.value ?? []];
|
|
68
|
-
t.splice(e, 1), this.adapter.valueChanged(t), this.requestUpdate();
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
l([
|
|
72
|
-
u({ context: o.formContext }),
|
|
73
|
-
v({ attribute: !1 })
|
|
74
|
-
], i.prototype, "formContext", 2);
|
|
75
|
-
l([
|
|
76
|
-
h({ context: o.inputContext })
|
|
77
|
-
], i.prototype, "adapter", 2);
|
|
78
|
-
i = l([
|
|
79
|
-
g("gui-repeater-input")
|
|
80
|
-
], i);
|
|
81
|
-
export {
|
|
82
|
-
i as RepeaterElement
|
|
83
|
-
};
|