@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,464 @@
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-order-item.ts
52
+ import { css, html } from "lit";
53
+ import { styleMap } from "lit/directives/style-map.js";
54
+ import { LitElementWw } from "@webwriter/lit";
55
+ import { customElement, property, query } from "lit/decorators.js";
56
+ import SlIconButton from "@shoelace-style/shoelace/dist/components/icon-button/icon-button.component.js";
57
+
58
+ // ../../node_modules/bootstrap-icons/icons/arrow-up.svg
59
+ var arrow_up_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-up" viewBox="0 0 16 16">%0A <path fill-rule="evenodd" d="M8 15a.5.5 0 0 0 .5-.5V2.707l3.146 3.147a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 1 0 .708.708L7.5 2.707V14.5a.5.5 0 0 0 .5.5"/>%0A</svg>';
60
+
61
+ // ../../node_modules/bootstrap-icons/icons/arrow-down.svg
62
+ var arrow_down_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down" viewBox="0 0 16 16">%0A <path fill-rule="evenodd" d="M8 1a.5.5 0 0 1 .5.5v11.793l3.146-3.147a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 .708-.708L7.5 13.293V1.5A.5.5 0 0 1 8 1"/>%0A</svg>';
63
+
64
+ // src/widgets/webwriter-order-item.ts
65
+ var _contentSlotEl_dec, _baseEl_dec, _hideOrderButtons_dec, _validOrder_dec, _layout_dec, _dropPreview_dec, _draggable_dec, _a, _WebwriterOrderItem_decorators, _init, _draggable, _dropPreview, _layout, _validOrder, _hideOrderButtons, _baseEl, _contentSlotEl;
66
+ _WebwriterOrderItem_decorators = [customElement("webwriter-order-item")];
67
+ var _WebwriterOrderItem = class _WebwriterOrderItem extends (_a = LitElementWw, _draggable_dec = [property({ attribute: true, reflect: true, converter: { toAttribute: (v) => v ? "true" : "false", fromAttribute: (attr) => attr === "true" } })], _dropPreview_dec = [property({ type: String, attribute: true, reflect: true })], _layout_dec = [property({ type: String, attribute: true, reflect: true })], _validOrder_dec = [property({ type: Number, attribute: false })], _hideOrderButtons_dec = [property({ type: Boolean, attribute: true, reflect: true })], _baseEl_dec = [query("[part=base]")], _contentSlotEl_dec = [query("#content")], _a) {
68
+ constructor() {
69
+ super(...arguments);
70
+ __privateAdd(this, _draggable, __runInitializers(_init, 8, this, true)), __runInitializers(_init, 11, this);
71
+ __publicField(this, "msg", (str) => this.lang in _WebwriterOrderItem.localization ? _WebwriterOrderItem.localization[this.lang][str] ?? str : str);
72
+ __publicField(this, "emitClearDropPreview", () => {
73
+ this.dispatchEvent(new CustomEvent("webwriter-clear-drop-preview", { bubbles: true }));
74
+ });
75
+ __privateAdd(this, _dropPreview, __runInitializers(_init, 12, this)), __runInitializers(_init, 15, this);
76
+ __privateAdd(this, _layout, __runInitializers(_init, 16, this, "list")), __runInitializers(_init, 19, this);
77
+ __privateAdd(this, _validOrder, __runInitializers(_init, 20, this)), __runInitializers(_init, 23, this);
78
+ __privateAdd(this, _hideOrderButtons, __runInitializers(_init, 24, this, false)), __runInitializers(_init, 27, this);
79
+ __publicField(this, "handleClick", (e, up = false) => {
80
+ if (e.target.id === "up") {
81
+ this.dispatchEvent(new CustomEvent("ww-moveup", { bubbles: true }));
82
+ } else {
83
+ this.dispatchEvent(new CustomEvent("ww-movedown", { bubbles: true }));
84
+ }
85
+ e.stopPropagation();
86
+ });
87
+ __privateAdd(this, _baseEl, __runInitializers(_init, 28, this)), __runInitializers(_init, 31, this);
88
+ __privateAdd(this, _contentSlotEl, __runInitializers(_init, 32, this)), __runInitializers(_init, 35, this);
89
+ __publicField(this, "observer");
90
+ }
91
+ get elementIndex() {
92
+ return Array.from(this.parentElement?.children ?? []).indexOf(this);
93
+ }
94
+ getSibling(i) {
95
+ return this.parentElement.children.item(i);
96
+ }
97
+ connectedCallback() {
98
+ super.connectedCallback();
99
+ this.dropPreview = void 0;
100
+ this.addEventListener("dragstart", (e) => {
101
+ this.dropPreview = void 0;
102
+ e.dataTransfer.setData("text/html", this.outerHTML);
103
+ e.dataTransfer.setData("text/plain", this.id);
104
+ e.stopPropagation();
105
+ });
106
+ this.addEventListener("drop", (e) => {
107
+ e.stopPropagation();
108
+ const id = e.dataTransfer.getData("text/plain");
109
+ const inTopHalf = e.offsetY < this.offsetHeight / 2;
110
+ const inLeftHalf = e.offsetX < this.offsetWidth / 2;
111
+ const el = document.querySelector(`webwriter-order-item#${id}`);
112
+ const offset = (this.layout === "tiles" ? inLeftHalf : inTopHalf) ? 0 : 1;
113
+ el.dispatchEvent(new CustomEvent("ww-moveto", { bubbles: true, detail: { i: this.elementIndex + offset } }));
114
+ }, { passive: true });
115
+ this.addEventListener("dragover", (e) => {
116
+ const inTopHalf = e.offsetY < this.offsetHeight / 2;
117
+ const inLeftHalf = e.offsetX < this.offsetWidth / 2;
118
+ if (this.layout === "tiles") {
119
+ this.dropPreview = inLeftHalf ? "left" : "right";
120
+ } else {
121
+ this.dropPreview = inTopHalf ? "top" : "bottom";
122
+ }
123
+ e.preventDefault();
124
+ e.stopImmediatePropagation();
125
+ });
126
+ this.addEventListener("dragleave", () => this.emitClearDropPreview(), { passive: true });
127
+ document.addEventListener("dragend", (e) => {
128
+ this.emitClearDropPreview();
129
+ }, { passive: true });
130
+ }
131
+ async updated(_changedProperties) {
132
+ if (_changedProperties.has("layout") && this.layout === "list") {
133
+ console.log("switched to list");
134
+ this.syncSize(true);
135
+ this.observer?.disconnect();
136
+ this.requestUpdate();
137
+ } else if (_changedProperties.has("layout") && this.layout === "tiles") {
138
+ this.syncSize();
139
+ if (!this.observer) {
140
+ this.observer = new MutationObserver(() => this.syncSize());
141
+ this.observer.observe(this.baseEl, { attributeFilter: ["style"], attributes: true });
142
+ }
143
+ }
144
+ }
145
+ firstUpdated(_changedProperties) {
146
+ this.requestUpdate();
147
+ }
148
+ syncSize(clear = false) {
149
+ if (this.baseEl && !clear) {
150
+ this.style.width = this.baseEl.style.width;
151
+ this.style.height = this.baseEl.style.height;
152
+ } else if (this.baseEl && clear) {
153
+ this.style.width = this.baseEl.style.width = null;
154
+ this.style.height = this.baseEl.style.height = null;
155
+ }
156
+ }
157
+ disconnectedCallback() {
158
+ super.disconnectedCallback();
159
+ this.observer?.disconnect();
160
+ this.observer = void 0;
161
+ }
162
+ get nextElementInOrder() {
163
+ return Array.from(this?.parentElement?.children ?? []).find((el) => {
164
+ const elOrder = parseInt(getComputedStyle(el).order);
165
+ return elOrder === this.elementIndex + 1;
166
+ });
167
+ }
168
+ get prevElementInOrder() {
169
+ return Array.from(this?.parentElement?.children ?? []).find((el) => {
170
+ const elOrder = parseInt(getComputedStyle(el).order);
171
+ return elOrder === this.elementIndex - 1;
172
+ });
173
+ }
174
+ get inCorrectPosition() {
175
+ return this.elementIndex === this.validOrder;
176
+ }
177
+ render() {
178
+ const solution = this.validOrder !== void 0 ? html`<span class="solution" ?data-valid=${this.elementIndex === this.validOrder}>${this.validOrder + 1}</span>` : null;
179
+ return html`<ol part="base" start=${this.elementIndex + 1}>
180
+ ${this.layout === "list" ? solution : null}
181
+ <li id="main-li">
182
+ <slot id="content" style=${styleMap({ "--ww-placeholder": `"${this.msg("Option")}"`, "--offset": `${this.contentSlotEl?.offsetLeft + 1}px` })}></slot>
183
+ </li>
184
+ <div id="order-buttons" part="order-buttons" draggable="false">
185
+ <sl-icon-button ?disabled=${!this.previousElementSibling} id="up" class="order-button user-only" src=${arrow_up_default} @click=${this.handleClick} @mouseup=${() => this.draggable = true}></sl-icon-button>
186
+ <sl-icon-button ?disabled=${!this.nextElementSibling} id="down" class="order-button user-only" src=${arrow_down_default} @click=${this.handleClick}></sl-icon-button>
187
+ </div>
188
+ </ol>
189
+ <ol id="count" start=${this.elementIndex + 1}>
190
+ <li ?data-two-digit=${this.elementIndex + 1 >= 10}></li>
191
+ ${this.layout === "tiles" ? solution : null}
192
+ </ol>
193
+ <div id="handle"></div>`;
194
+ }
195
+ };
196
+ _init = __decoratorStart(_a);
197
+ _draggable = new WeakMap();
198
+ _dropPreview = new WeakMap();
199
+ _layout = new WeakMap();
200
+ _validOrder = new WeakMap();
201
+ _hideOrderButtons = new WeakMap();
202
+ _baseEl = new WeakMap();
203
+ _contentSlotEl = new WeakMap();
204
+ __decorateElement(_init, 4, "draggable", _draggable_dec, _WebwriterOrderItem, _draggable);
205
+ __decorateElement(_init, 4, "dropPreview", _dropPreview_dec, _WebwriterOrderItem, _dropPreview);
206
+ __decorateElement(_init, 4, "layout", _layout_dec, _WebwriterOrderItem, _layout);
207
+ __decorateElement(_init, 4, "validOrder", _validOrder_dec, _WebwriterOrderItem, _validOrder);
208
+ __decorateElement(_init, 4, "hideOrderButtons", _hideOrderButtons_dec, _WebwriterOrderItem, _hideOrderButtons);
209
+ __decorateElement(_init, 4, "baseEl", _baseEl_dec, _WebwriterOrderItem, _baseEl);
210
+ __decorateElement(_init, 4, "contentSlotEl", _contentSlotEl_dec, _WebwriterOrderItem, _contentSlotEl);
211
+ _WebwriterOrderItem = __decorateElement(_init, 0, "WebwriterOrderItem", _WebwriterOrderItem_decorators, _WebwriterOrderItem);
212
+ __publicField(_WebwriterOrderItem, "localization", {});
213
+ __publicField(_WebwriterOrderItem, "scopedElements", {
214
+ "sl-icon-button": SlIconButton
215
+ });
216
+ __publicField(_WebwriterOrderItem, "styles", css`
217
+
218
+ :host {
219
+ position: relative;
220
+ }
221
+
222
+ :host(:is([contenteditable=true], [contenteditable=""])) .user-only {
223
+ display: none;
224
+ }
225
+
226
+ ::marker {
227
+ font-weight: bold;
228
+ }
229
+
230
+ :host(:is([contenteditable=true], [contenteditable=""])) ::marker {
231
+ color: var(--sl-color-success-800);
232
+ }
233
+
234
+ ol {
235
+ padding-left: 0;
236
+ margin: 0;
237
+ width: 100%;
238
+ position: relative;
239
+ }
240
+
241
+ .solution {
242
+ display: flex;
243
+ align-items: center;
244
+ justify-content: center;
245
+ position: absolute;
246
+ top: -7px;
247
+ left: -13px;
248
+ border: 2px solid var(--sl-color-gray-500);
249
+ border-radius: 100%;
250
+ width: 15px;
251
+ height: 15px;
252
+ font-size: 10px;
253
+ z-index: 1;
254
+ color: white;
255
+ font-weight: bold;
256
+
257
+ &[data-valid] {
258
+ background: var(--sl-color-success-600);
259
+ }
260
+
261
+ &:not([data-valid]) {
262
+ background: var(--sl-color-danger-600);
263
+ }
264
+ }
265
+
266
+
267
+ :host([layout=tiles]) {
268
+ border: 2px solid var(--sl-color-gray-500);
269
+ border-radius: 5px;
270
+ aspect-ratio: 1;
271
+ min-width: 125px;
272
+ width: 125px;
273
+ max-width: 350px;
274
+ min-height: 125px;
275
+ height: 125px;
276
+ max-height: 350px;
277
+
278
+ & .solution {
279
+ left: unset;
280
+ top: -10px;
281
+ right: -10px;
282
+ width: 20px;
283
+ height: 20px;
284
+ font-size: 15px;
285
+ }
286
+
287
+ & ol[part=base] {
288
+ padding-left: 0;
289
+ margin: 0;
290
+ aspect-ratio: 1;
291
+ min-width: 125px;
292
+ width: 125px;
293
+ max-width: 350px;
294
+ min-height: 125px;
295
+ height: 125px;
296
+ max-height: 350px;
297
+ overflow-y: auto;
298
+ scrollbar-width: thin;
299
+ resize: both;
300
+ }
301
+
302
+ & ::slotted(:is(picture, audio, video, img, iframe)) {
303
+ height: 100%;
304
+ width: 100%;
305
+ }
306
+
307
+ & ::slotted(:not(:is(picture, audio, video, img, iframe))) {
308
+ margin: 5px !important;
309
+ }
310
+ }
311
+
312
+ :host(:not([layout=tiles])) {
313
+
314
+ width: 100% !important;
315
+ height: unset !important;
316
+
317
+ & ol[part=base] {
318
+ width: 100% !important;
319
+ height: auto !important;
320
+ }
321
+ }
322
+
323
+ li {
324
+ list-style-type: inherit;
325
+ list-style-position: inside;
326
+ flex-direction: row;
327
+ align-items: center;
328
+ font-size: var(--sl-input-font-size-medium);
329
+ cursor: move;
330
+ }
331
+
332
+ :host([droppreview])::before {
333
+ content: "";
334
+ position: absolute;
335
+ background: var(--sl-color-primary-600);
336
+ }
337
+
338
+ :host([droppreview=top])::before {
339
+ height: 2px;
340
+ width: 100%;
341
+ top: -2px;
342
+ }
343
+
344
+ :host([droppreview=bottom])::before {
345
+ height: 2px;
346
+ width: 100%;
347
+ bottom: -2px;
348
+ }
349
+
350
+ :host([droppreview=left])::before {
351
+ left: -17px;
352
+ height: 100%;
353
+ width: 15px;
354
+ }
355
+
356
+ :host([droppreview=right])::before {
357
+ right: -17px;
358
+ height: 100%;
359
+ width: 15px;
360
+ }
361
+
362
+ slot {
363
+ display: inline-block;
364
+ width: calc(100% - var(--offset));
365
+ cursor: text;
366
+ }
367
+
368
+ #order-buttons {
369
+ position: absolute;
370
+ right: 0;
371
+ top: 0;
372
+
373
+ & .order-button::part(base) {
374
+ padding: 0;
375
+ }
376
+ }
377
+
378
+ :host([hideorderbuttons]) #order-buttons {
379
+ display: none;
380
+ }
381
+
382
+ #handle {
383
+ box-sizing: border-box;
384
+ border-radius: 2px;
385
+ position: absolute;
386
+ left: 0px;
387
+ bottom: 0px;
388
+ width: 20px;
389
+ height: 25px;
390
+ display: inline-block;
391
+ overflow: hidden;
392
+ line-height: 5px;
393
+ padding: 1.5px 1px;
394
+ padding-bottom: 0;
395
+ cursor: move;
396
+ vertical-align: middle;
397
+ font-size: 12px;
398
+ font-family: sans-serif;
399
+ letter-spacing: 2px;
400
+ color: #cccccc;
401
+ text-shadow: 1px 0 1px black;
402
+ font-weight: 600;
403
+ opacity: 0.95;
404
+ transform: rotate(135deg);
405
+ }
406
+ #handle::after {
407
+ content: '.. .. ..';
408
+ }
409
+
410
+ :host(:not([layout=tiles])) :is(#handle, #count) {
411
+ display: none;
412
+ }
413
+
414
+ :host(:not([layout=list])) :is(#up, #down) {
415
+ display: none;
416
+ }
417
+
418
+ :host([layout=tiles]) #main-li {
419
+ display: contents;
420
+ }
421
+
422
+ :host([layout=tiles]) slot {
423
+ width: 100%;
424
+ box-sizing: border-box;
425
+ }
426
+
427
+
428
+ #count {
429
+ display: flex;
430
+ justify-content: center;
431
+ align-items: center;
432
+ display: inline-block;
433
+ width: 3ch;
434
+ position: absolute;
435
+ bottom: -14px;
436
+ left: -14px;
437
+ z-index: 10;
438
+ & li {
439
+ display: list-item;
440
+ width: 4ch;
441
+ height: 4ch;
442
+ font-size: 12px;
443
+ font-weight: bold;
444
+ border-radius: 100%;
445
+ border: 2px solid var(--sl-color-gray-600);
446
+ color: var(--sl-color-gray-600);
447
+ box-sizing: border-box;
448
+ background: white;
449
+ padding-left: 7px;
450
+ padding-top: 4px;
451
+ overflow: hidden;
452
+
453
+ &[data-two-digit] {
454
+ padding-left: 4px;
455
+ }
456
+ }
457
+
458
+ }
459
+ `);
460
+ __runInitializers(_init, 1, _WebwriterOrderItem);
461
+ var WebwriterOrderItem = _WebwriterOrderItem;
462
+ export {
463
+ WebwriterOrderItem
464
+ };