@webwriter/quiz 1.0.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.
Files changed (62) hide show
  1. package/LICENSE +7 -0
  2. package/custom.d.ts +176 -0
  3. package/dist/widgets/webwriter-choice-item.css +444 -0
  4. package/dist/widgets/webwriter-choice-item.js +288 -0
  5. package/dist/widgets/webwriter-choice.css +444 -0
  6. package/dist/widgets/webwriter-choice.js +327 -0
  7. package/dist/widgets/webwriter-cloze-gap.css +444 -0
  8. package/dist/widgets/webwriter-cloze-gap.js +722 -0
  9. package/dist/widgets/webwriter-cloze.css +444 -0
  10. package/dist/widgets/webwriter-cloze.js +177 -0
  11. package/dist/widgets/webwriter-mark.css +444 -0
  12. package/dist/widgets/webwriter-mark.js +410 -0
  13. package/dist/widgets/webwriter-order-item.css +444 -0
  14. package/dist/widgets/webwriter-order-item.js +464 -0
  15. package/dist/widgets/webwriter-order.css +444 -0
  16. package/dist/widgets/webwriter-order.js +560 -0
  17. package/dist/widgets/webwriter-pairing-item.css +444 -0
  18. package/dist/widgets/webwriter-pairing-item.js +203 -0
  19. package/dist/widgets/webwriter-pairing.css +444 -0
  20. package/dist/widgets/webwriter-pairing.js +224 -0
  21. package/dist/widgets/webwriter-quiz.css +444 -0
  22. package/dist/widgets/webwriter-quiz.js +323 -0
  23. package/dist/widgets/webwriter-speech.css +444 -0
  24. package/dist/widgets/webwriter-speech.js +320 -0
  25. package/dist/widgets/webwriter-task-explainer.css +444 -0
  26. package/dist/widgets/webwriter-task-explainer.js +90 -0
  27. package/dist/widgets/webwriter-task-hint.css +444 -0
  28. package/dist/widgets/webwriter-task-hint.js +67 -0
  29. package/dist/widgets/webwriter-task-prompt.css +444 -0
  30. package/dist/widgets/webwriter-task-prompt.js +68 -0
  31. package/dist/widgets/webwriter-task.css +444 -0
  32. package/dist/widgets/webwriter-task.js +546 -0
  33. package/dist/widgets/webwriter-text.css +444 -0
  34. package/dist/widgets/webwriter-text.js +174 -0
  35. package/package.json +199 -0
  36. package/src/lib/combobox.ts +456 -0
  37. package/src/lib/highlighter-fill.svg +6 -0
  38. package/src/snippets/choice.html +8 -0
  39. package/src/snippets/cloze.html +4 -0
  40. package/src/snippets/mark.html +4 -0
  41. package/src/snippets/order.html +8 -0
  42. package/src/snippets/pairing.html +10 -0
  43. package/src/snippets/speech.html +4 -0
  44. package/src/snippets/text.html +4 -0
  45. package/src/snippets/wordsearch.html +4 -0
  46. package/src/widgets/webwriter-choice-item.ts +251 -0
  47. package/src/widgets/webwriter-choice.ts +310 -0
  48. package/src/widgets/webwriter-cloze-gap.ts +217 -0
  49. package/src/widgets/webwriter-cloze.ts +136 -0
  50. package/src/widgets/webwriter-mark.ts +435 -0
  51. package/src/widgets/webwriter-order-item.ts +445 -0
  52. package/src/widgets/webwriter-order.ts +273 -0
  53. package/src/widgets/webwriter-pairing-item.ts +156 -0
  54. package/src/widgets/webwriter-pairing.ts +188 -0
  55. package/src/widgets/webwriter-quiz.ts +281 -0
  56. package/src/widgets/webwriter-speech.ts +268 -0
  57. package/src/widgets/webwriter-task-explainer.ts +38 -0
  58. package/src/widgets/webwriter-task-hint.ts +17 -0
  59. package/src/widgets/webwriter-task-prompt.ts +18 -0
  60. package/src/widgets/webwriter-task.ts +544 -0
  61. package/src/widgets/webwriter-text.ts +131 -0
  62. package/tsconfig.json +7 -0
@@ -0,0 +1,323 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
5
+ var __typeError = (msg) => {
6
+ throw TypeError(msg);
7
+ };
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
10
+ var __decoratorStart = (base) => [, , , __create(base?.[__knownSymbol("metadata")] ?? null)];
11
+ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
12
+ var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
13
+ var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
14
+ var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
15
+ var __runInitializers = (array, flags, self, value) => {
16
+ for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
17
+ return value;
18
+ };
19
+ var __decorateElement = (array, flags, name, decorators, target, extra) => {
20
+ var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
21
+ var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];
22
+ var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
23
+ var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {
24
+ return __privateGet(this, extra);
25
+ }, set [name](x) {
26
+ return __privateSet(this, extra, x);
27
+ } }, name));
28
+ k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name(target, name);
29
+ for (var i = decorators.length - 1; i >= 0; i--) {
30
+ ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
31
+ if (k) {
32
+ ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };
33
+ if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];
34
+ if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;
35
+ }
36
+ it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;
37
+ if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);
38
+ else if (typeof it !== "object" || it === null) __typeError("Object expected");
39
+ else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
40
+ }
41
+ return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
42
+ };
43
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
44
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
45
+ var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj);
46
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
47
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
48
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
49
+ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
50
+
51
+ // src/widgets/webwriter-quiz.ts
52
+ import { css, html } from "lit";
53
+ import { LitElementWw, option } from "@webwriter/lit";
54
+ import { customElement, property, query, queryAssignedElements } from "lit/decorators.js";
55
+ import SlButton from "@shoelace-style/shoelace/dist/components/button/button.component.js";
56
+ import SlButtonGroup from "@shoelace-style/shoelace/dist/components/button-group/button-group.component.js";
57
+ import SlDropdown from "@shoelace-style/shoelace/dist/components/dropdown/dropdown.component.js";
58
+ import SlMenu from "@shoelace-style/shoelace/dist/components/menu/menu.component.js";
59
+ import SlMenuItem from "@shoelace-style/shoelace/dist/components/menu-item/menu-item.component.js";
60
+ import SlIcon from "@shoelace-style/shoelace/dist/components/icon/icon.component.js";
61
+
62
+ // ../../node_modules/bootstrap-icons/icons/ui-checks-grid.svg
63
+ var ui_checks_grid_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-ui-checks-grid" viewBox="0 0 16 16">%0A <path d="M2 10h3a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1m9-9h3a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1m0 9a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1zm0-10a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2h3a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM2 9a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2h3a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2zm7 2a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2h-3a2 2 0 0 1-2-2zM0 2a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.354.854a.5.5 0 1 0-.708-.708L3 3.793l-.646-.647a.5.5 0 1 0-.708.708l1 1a.5.5 0 0 0 .708 0z"/>%0A</svg>';
64
+
65
+ // ../../node_modules/bootstrap-icons/icons/123.svg
66
+ var __default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-123" viewBox="0 0 16 16">%0A <path d="M2.873 11.297V4.142H1.699L0 5.379v1.137l1.64-1.18h.06v5.961zm3.213-5.09v-.063c0-.618.44-1.169 1.196-1.169.676 0 1.174.44 1.174 1.106 0 .624-.42 1.101-.807 1.526L4.99 10.553v.744h4.78v-.99H6.643v-.069L8.41 8.252c.65-.724 1.237-1.332 1.237-2.27C9.646 4.849 8.723 4 7.308 4c-1.573 0-2.36 1.064-2.36 2.15v.057zm6.559 1.883h.786c.823 0 1.374.481 1.379 1.179.01.707-.55 1.216-1.421 1.21-.77-.005-1.326-.419-1.379-.953h-1.095c.042 1.053.938 1.918 2.464 1.918 1.478 0 2.642-.839 2.62-2.144-.02-1.143-.922-1.651-1.551-1.714v-.063c.535-.09 1.347-.66 1.326-1.678-.026-1.053-.933-1.855-2.359-1.845-1.5.005-2.317.88-2.348 1.898h1.116c.032-.498.498-.944 1.206-.944.703 0 1.206.435 1.206 1.07.005.64-.504 1.106-1.2 1.106h-.75z"/>%0A</svg>';
67
+
68
+ // ../../node_modules/bootstrap-icons/icons/card-text.svg
69
+ var card_text_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-card-text" viewBox="0 0 16 16">%0A <path d="M14.5 3a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5zm-13-1A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2z"/>%0A <path d="M3 5.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5M3 8a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9A.5.5 0 0 1 3 8m0 2.5a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5"/>%0A</svg>';
70
+
71
+ // ../../node_modules/bootstrap-icons/icons/highlighter.svg
72
+ var highlighter_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-highlighter" viewBox="0 0 16 16">%0A <path fill-rule="evenodd" d="M11.096.644a2 2 0 0 1 2.791.036l1.433 1.433a2 2 0 0 1 .035 2.791l-.413.435-8.07 8.995a.5.5 0 0 1-.372.166h-3a.5.5 0 0 1-.234-.058l-.412.412A.5.5 0 0 1 2.5 15h-2a.5.5 0 0 1-.354-.854l1.412-1.412A.5.5 0 0 1 1.5 12.5v-3a.5.5 0 0 1 .166-.372l8.995-8.07zm-.115 1.47L2.727 9.52l3.753 3.753 7.406-8.254zm3.585 2.17.064-.068a1 1 0 0 0-.017-1.396L13.18 1.387a1 1 0 0 0-1.396-.018l-.068.065zM5.293 13.5 2.5 10.707v1.586L3.707 13.5z"/>%0A</svg>';
73
+
74
+ // ../../node_modules/bootstrap-icons/icons/mic.svg
75
+ var mic_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-mic" viewBox="0 0 16 16">%0A <path d="M3.5 6.5A.5.5 0 0 1 4 7v1a4 4 0 0 0 8 0V7a.5.5 0 0 1 1 0v1a5 5 0 0 1-4.5 4.975V15h3a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1h3v-2.025A5 5 0 0 1 3 8V7a.5.5 0 0 1 .5-.5"/>%0A <path d="M10 8a2 2 0 1 1-4 0V3a2 2 0 1 1 4 0zM8 0a3 3 0 0 0-3 3v5a3 3 0 0 0 6 0V3a3 3 0 0 0-3-3"/>%0A</svg>';
76
+
77
+ // src/widgets/webwriter-quiz.ts
78
+ function shuffle(a) {
79
+ for (let i = a.length - 1; i > 0; i--) {
80
+ const j = Math.floor(Math.random() * (i + 1));
81
+ [a[i], a[j]] = [a[j], a[i]];
82
+ }
83
+ return a;
84
+ }
85
+ var _submitted_dec, _tasks_dec, _slotEl_dec, _counter_dec, _randomOrder_dec, _a, _WebwriterQuiz_decorators, _init, _randomOrder, _slotEl, _tasks, _submitted;
86
+ _WebwriterQuiz_decorators = [customElement("webwriter-quiz")];
87
+ var _WebwriterQuiz = class _WebwriterQuiz extends (_a = LitElementWw, _randomOrder_dec = [property({ type: Boolean, attribute: true, reflect: true }), option({ type: Boolean, label: { "en": "Random Task Order" } })], _counter_dec = [property({ attribute: true }), option({
88
+ type: "select",
89
+ label: {
90
+ "en": "Counter"
91
+ },
92
+ options: [
93
+ { value: void 0, label: { "en": "None" } },
94
+ { value: "number", label: { "en": "1. 2. 3." } },
95
+ { value: "roman", label: { "en": "i. ii. iii." } },
96
+ { value: "roman-capitalized", label: { "en": "I. II. III." } },
97
+ { value: "alphabetical", label: { "en": "a. b. c." } },
98
+ { value: "alphabetical-capitalized", label: { "en": "A. B. C." } }
99
+ ]
100
+ })], _slotEl_dec = [query("slot")], _tasks_dec = [queryAssignedElements()], _submitted_dec = [property({ type: Boolean, attribute: true, reflect: true })], _a) {
101
+ constructor() {
102
+ super(...arguments);
103
+ __runInitializers(_init, 5, this);
104
+ __publicField(this, "msg", (str) => this.lang in _WebwriterQuiz.localization ? _WebwriterQuiz.localization[this.lang][str] ?? str : str);
105
+ __privateAdd(this, _randomOrder, __runInitializers(_init, 8, this, false)), __runInitializers(_init, 11, this);
106
+ __publicField(this, "handleReset", () => {
107
+ this.tasks.forEach((task) => task.reset());
108
+ this.requestUpdate();
109
+ this.submitted = false;
110
+ });
111
+ __publicField(this, "observer");
112
+ __privateAdd(this, _slotEl, __runInitializers(_init, 12, this)), __runInitializers(_init, 15, this);
113
+ __privateAdd(this, _tasks, __runInitializers(_init, 16, this)), __runInitializers(_init, 19, this);
114
+ __privateAdd(this, _submitted, __runInitializers(_init, 20, this, false)), __runInitializers(_init, 23, this);
115
+ }
116
+ get answerTypes() {
117
+ return {
118
+ "webwriter-choice": {
119
+ label: this.msg("Choice"),
120
+ icon: ui_checks_grid_default
121
+ },
122
+ "webwriter-order": {
123
+ label: this.msg("Order"),
124
+ icon: __default
125
+ },
126
+ "webwriter-text": {
127
+ label: this.msg("Text"),
128
+ icon: card_text_default
129
+ },
130
+ "webwriter-mark": {
131
+ label: this.msg("Mark"),
132
+ icon: highlighter_default
133
+ },
134
+ /*
135
+ "webwriter-pairing": {
136
+ label: this.msg("Pairing"),
137
+ icon: IconSubtract
138
+ },
139
+ "webwriter-cloze": {
140
+ label: this.msg("Cloze"),
141
+ icon: IconBodyText
142
+ },*/
143
+ "webwriter-speech": {
144
+ label: this.msg("Speech"),
145
+ //advanced: true,
146
+ icon: mic_default
147
+ }
148
+ /*"webwriter-wordsearch": {
149
+ label: this.msg("Word Search"),
150
+ advanced: true,
151
+ icon: IconSearch
152
+ },
153
+ "webwriter-memory": {
154
+ label: this.msg("Memory"),
155
+ advanced: true,
156
+ icon: IconGrid3x3Gap
157
+ }*/
158
+ };
159
+ }
160
+ addTask(answerTypeName) {
161
+ const task = this.ownerDocument.createElement("webwriter-task");
162
+ task.setAttribute("counter", this.counter);
163
+ const prompt = this.ownerDocument.createElement("webwriter-task-prompt");
164
+ const p = this.ownerDocument.createElement("p");
165
+ prompt.append(p);
166
+ prompt.slot = "prompt";
167
+ const answer = this.ownerDocument.createElement(answerTypeName);
168
+ task.appendChild(prompt);
169
+ task.appendChild(answer);
170
+ this.appendChild(task);
171
+ document.getSelection().setBaseAndExtent(p, 0, p, 0);
172
+ }
173
+ get counter() {
174
+ return this.tasks[0]?.counter;
175
+ }
176
+ set counter(value) {
177
+ this.tasks.forEach((el) => el.counter = value);
178
+ }
179
+ shuffleTasks() {
180
+ const n = this.tasks.length;
181
+ const nums = shuffle([...new Array(n).keys()]);
182
+ this.tasks.forEach((el, i) => el.style.order = String(nums[i]));
183
+ }
184
+ handleSubmit(e) {
185
+ this.submitted = true;
186
+ this.dispatchEvent(new Event("submit"));
187
+ this.tasks.forEach((task) => task.handleSubmit());
188
+ }
189
+ connectedCallback() {
190
+ super.connectedCallback();
191
+ this.observer = new MutationObserver(() => {
192
+ if (!this.contentEditable && this.randomOrder) {
193
+ this.shuffleTasks();
194
+ }
195
+ });
196
+ this.observer.observe(this, { childList: true });
197
+ }
198
+ disconnectedCallback() {
199
+ super.disconnectedCallback();
200
+ this.observer.disconnect();
201
+ }
202
+ get isChanged() {
203
+ return this.tasks.some((task) => task.isChanged);
204
+ }
205
+ render() {
206
+ const basicAnswerTypes = Object.keys(this.answerTypes).filter((k) => !this.answerTypes[k]?.advanced);
207
+ const otherAnswerTypes = Object.keys(this.answerTypes).filter((k) => this.answerTypes[k]?.advanced);
208
+ return html`
209
+ <slot ?inert=${this.submitted} @ww-answer-change=${() => this.requestUpdate()}></slot>
210
+ <sl-button-group class="user-only user-actions">
211
+ <sl-button id="submit" @click=${this.handleSubmit}>Submit</sl-button>
212
+ <sl-button ?disabled=${!this.isChanged} id="reset" @click=${this.handleReset}>Reset</sl-button>
213
+ </sl-button-group>
214
+ <sl-button-group class="author-only">
215
+ ${basicAnswerTypes.map((k) => html`
216
+ <sl-button @click=${() => this.addTask(k)}>
217
+ <sl-icon src=${this.answerTypes[k]?.icon}></sl-icon>
218
+ ${this.answerTypes[k].label}
219
+ </sl-button>
220
+ `)}
221
+ <sl-dropdown data-empty=${!otherAnswerTypes.length} placement="bottom-end" hoist>
222
+ <sl-button slot="trigger" caret></sl-button>
223
+ <sl-menu>
224
+ ${otherAnswerTypes.map((k) => html`
225
+ <sl-menu-item @click=${() => this.addTask(k)}>
226
+ <sl-icon src=${this.answerTypes[k]?.icon}></sl-icon>
227
+ ${this.answerTypes[k].label}
228
+ </sl-menu-item>
229
+ `)}
230
+ </sl-menu>
231
+ </sl-dropdown>
232
+ </sl-button-group>
233
+ `;
234
+ }
235
+ };
236
+ _init = __decoratorStart(_a);
237
+ _randomOrder = new WeakMap();
238
+ _slotEl = new WeakMap();
239
+ _tasks = new WeakMap();
240
+ _submitted = new WeakMap();
241
+ __decorateElement(_init, 4, "randomOrder", _randomOrder_dec, _WebwriterQuiz, _randomOrder);
242
+ __decorateElement(_init, 3, "counter", _counter_dec, _WebwriterQuiz);
243
+ __decorateElement(_init, 4, "slotEl", _slotEl_dec, _WebwriterQuiz, _slotEl);
244
+ __decorateElement(_init, 4, "tasks", _tasks_dec, _WebwriterQuiz, _tasks);
245
+ __decorateElement(_init, 4, "submitted", _submitted_dec, _WebwriterQuiz, _submitted);
246
+ _WebwriterQuiz = __decorateElement(_init, 0, "WebwriterQuiz", _WebwriterQuiz_decorators, _WebwriterQuiz);
247
+ __publicField(_WebwriterQuiz, "localization", {});
248
+ __publicField(_WebwriterQuiz, "scopedElements", {
249
+ "sl-button": SlButton,
250
+ "sl-button-group": SlButtonGroup,
251
+ "sl-icon": SlIcon,
252
+ "sl-dropdown": SlDropdown,
253
+ "sl-menu": SlMenu,
254
+ "sl-menu-item": SlMenuItem
255
+ });
256
+ __publicField(_WebwriterQuiz, "styles", css`
257
+ :host {
258
+ border-top: 1px solid darkgray;
259
+ border-bottom: 1px solid darkgray;
260
+ padding: 1ch;
261
+ display: flex !important;
262
+ flex-direction: column;
263
+ gap: 2rem;
264
+ counter-reset: task;
265
+ }
266
+
267
+ :host(:not([contenteditable=true]):not([contenteditable=""])) .author-only {
268
+ display: none;
269
+ }
270
+
271
+ :host(:is([contenteditable=true], [contenteditable=""])) .user-only {
272
+ display: none;
273
+ }
274
+
275
+ :host(:is([contenteditable=true], [contenteditable=""])) ::slotted(*) {
276
+ order: unset !important;
277
+ }
278
+
279
+ sl-button-group::part(base) {
280
+ display: flex;
281
+ }
282
+
283
+ sl-button-group > *:not(sl-dropdown) {
284
+ flex-grow: 1;
285
+ }
286
+
287
+ sl-dropdown[data-empty] {
288
+ display: none;
289
+ }
290
+
291
+ sl-button:not([caret])::part(label) {
292
+ padding: 0;
293
+ display: flex;
294
+ flex-direction: row;
295
+ width: 100%;
296
+ justify-content: space-evenly;
297
+ align-items: center;
298
+ }
299
+
300
+ sl-icon {
301
+ width: 18px;
302
+ height: 18px;
303
+ }
304
+
305
+ sl-menu::part(menu) {
306
+ z-index: 10000;
307
+ }
308
+
309
+ .user-actions {
310
+ & #submit {
311
+ flex-grow: 3;
312
+ }
313
+
314
+ & #reset {
315
+ flex-grow: 1;
316
+ }
317
+ }
318
+ `);
319
+ __runInitializers(_init, 1, _WebwriterQuiz);
320
+ var WebwriterQuiz = _WebwriterQuiz;
321
+ export {
322
+ WebwriterQuiz
323
+ };