@pie-element/venn-classification 0.1.1-next.7 → 0.1.1-next.9

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.
@@ -1,59 +1,3 @@
1
- //#region ../../shared/configure-events/dist/index.js
2
- var _e$1;
3
- var _e2$1;
4
- var _e3;
5
- var _e4;
6
- var _e5;
7
- var e$3 = (_e$1 = class e extends CustomEvent {
8
- constructor(t, n = !1) {
9
- super(e.TYPE, {
10
- bubbles: !0,
11
- detail: {
12
- update: t,
13
- reset: n
14
- }
15
- }), this.update = t, this.reset = n;
16
- }
17
- }, _e$1.TYPE = "model.updated", _e$1);
18
- _e2$1 = class e extends CustomEvent {
19
- constructor(t, n) {
20
- super(e.TYPE, {
21
- bubbles: !0,
22
- detail: {
23
- src: t,
24
- done: n
25
- }
26
- }), this.src = t, this.done = n;
27
- }
28
- }, _e2$1.TYPE = "delete.image";
29
- _e3 = class e extends CustomEvent {
30
- constructor(t) {
31
- super(e.TYPE, {
32
- bubbles: !0,
33
- detail: t
34
- }), this.handler = t;
35
- }
36
- }, _e3.TYPE = "insert.image";
37
- _e4 = class e extends CustomEvent {
38
- constructor(t, n) {
39
- super(e.TYPE, {
40
- bubbles: !0,
41
- detail: {
42
- src: t,
43
- done: n
44
- }
45
- }), this.src = t, this.done = n;
46
- }
47
- }, _e4.TYPE = "delete.sound";
48
- _e5 = class e extends CustomEvent {
49
- constructor(t) {
50
- super(e.TYPE, {
51
- bubbles: !0,
52
- detail: t
53
- }), this.handler = t;
54
- }
55
- }, _e5.TYPE = "insert.sound";
56
- //#endregion
57
1
  //#region ../../../node_modules/.bun/svelte@5.57.0/node_modules/svelte/src/internal/disclose-version.js
58
2
  if (typeof window !== "undefined") {
59
3
  var _window$__svelte, _window;
@@ -5528,83 +5472,176 @@ function create_custom_element(Component, props_definition, slots, exports, shad
5528
5472
  return Class;
5529
5473
  }
5530
5474
  //#endregion
5531
- //#region ../../shared/player-events/dist/index.js
5475
+ //#region ../../shared/configure-events/dist/index.js
5532
5476
  var _e;
5533
5477
  var _e2;
5534
- _e = class e extends CustomEvent {
5535
- constructor(t, n, r) {
5478
+ var _e3;
5479
+ var _e4;
5480
+ var _e5;
5481
+ var e$3 = (_e = class e extends CustomEvent {
5482
+ constructor(t, n = !1) {
5536
5483
  super(e.TYPE, {
5537
5484
  bubbles: !0,
5538
- composed: !0,
5539
5485
  detail: {
5540
- complete: n,
5541
- component: t,
5542
- hasModel: r
5486
+ update: t,
5487
+ reset: n
5543
5488
  }
5544
- }), this.component = t, this.complete = n;
5489
+ }), this.update = t, this.reset = n;
5545
5490
  }
5546
- }, _e.TYPE = "model-set";
5547
- var c$2 = (_e2 = class e extends CustomEvent {
5491
+ }, _e.TYPE = "model.updated", _e);
5492
+ _e2 = class e extends CustomEvent {
5548
5493
  constructor(t, n) {
5549
5494
  super(e.TYPE, {
5550
5495
  bubbles: !0,
5551
- composed: !0,
5552
5496
  detail: {
5553
- complete: n,
5554
- component: t
5497
+ src: t,
5498
+ done: n
5555
5499
  }
5556
- }), this.component = t, this.complete = n;
5500
+ }), this.src = t, this.done = n;
5557
5501
  }
5558
- }, _e2.TYPE = "session-changed", _e2);
5502
+ }, _e2.TYPE = "delete.image";
5503
+ _e3 = class e extends CustomEvent {
5504
+ constructor(t) {
5505
+ super(e.TYPE, {
5506
+ bubbles: !0,
5507
+ detail: t
5508
+ }), this.handler = t;
5509
+ }
5510
+ }, _e3.TYPE = "insert.image";
5511
+ _e4 = class e extends CustomEvent {
5512
+ constructor(t, n) {
5513
+ super(e.TYPE, {
5514
+ bubbles: !0,
5515
+ detail: {
5516
+ src: t,
5517
+ done: n
5518
+ }
5519
+ }), this.src = t, this.done = n;
5520
+ }
5521
+ }, _e4.TYPE = "delete.sound";
5522
+ _e5 = class e extends CustomEvent {
5523
+ constructor(t) {
5524
+ super(e.TYPE, {
5525
+ bubbles: !0,
5526
+ detail: t
5527
+ }), this.handler = t;
5528
+ }
5529
+ }, _e5.TYPE = "insert.sound";
5559
5530
  //#endregion
5560
- //#region ../../lib-svelte/delivery-events/dist/index2.js
5561
- var t$3 = (e) => {
5562
- let t = e;
5563
- return t ? typeof t.onSessionChange == "function" || typeof t.onAudioStarted == "function" || typeof t.onAudioEnded == "function" : !1;
5564
- };
5565
- function n$1(e) {
5566
- if (e.parentElement) return e.parentElement;
5567
- let t = e.getRootNode();
5568
- return t instanceof ShadowRoot ? t.host : null;
5569
- }
5570
- function r$2(e, r = {}) {
5571
- let i = r.hostPredicate ?? t$3, a = e;
5572
- for (; a;) {
5573
- if (i(a)) return a;
5574
- a = n$1(a);
5531
+ //#region ../../lib-svelte/config-ui-svelte/dist/index.js
5532
+ var t$3 = /* @__PURE__ */ from_html("<aside class=\"pie-config-layout-settings svelte-9dr0jr\" aria-label=\"Settings\"><!></aside>");
5533
+ var n$1 = /* @__PURE__ */ from_html("<div class=\"pie-config-layout svelte-9dr0jr\"><div class=\"pie-config-layout-contents svelte-9dr0jr\"><div class=\"pie-config-layout-design svelte-9dr0jr\"><!></div> <!></div></div>");
5534
+ var r$2 = {
5535
+ hash: "svelte-9dr0jr",
5536
+ code: ".pie-config-layout.svelte-9dr0jr {container-type:inline-size;}.pie-config-layout-contents.svelte-9dr0jr {display:flex;flex-direction:column;gap:16px;}.pie-config-layout-design.svelte-9dr0jr {flex:1 1 auto;min-width:0;}\n\n @container (min-width: 1135px) {.pie-config-layout-contents.svelte-9dr0jr {flex-direction:row;align-items:flex-start;}.pie-config-layout-settings.svelte-9dr0jr {flex:0 0 300px;position:sticky;top:0;}\n }"
5537
+ };
5538
+ function i$1(i, a) {
5539
+ append_styles$1(i, r$2);
5540
+ let o = prop(a, "hideSettings", 3, !1);
5541
+ var s = n$1(), c = child(s), l = child(c);
5542
+ snippet(child(l), () => a.children), reset$1(l);
5543
+ var d = sibling(l, 2), f = (n) => {
5544
+ var r = t$3();
5545
+ snippet(child(r), () => a.settings), reset$1(r), append(n, r);
5546
+ };
5547
+ if_block(d, (e) => {
5548
+ a.settings && !o() && e(f);
5549
+ }), reset$1(c), reset$1(s), append(i, s);
5550
+ }
5551
+ var a$1 = (e) => typeof e == "object" && !!e && !Array.isArray(e);
5552
+ function o$1(e, t) {
5553
+ if (!a$1(t)) return e;
5554
+ let n = { ...e };
5555
+ for (let [r, i] of Object.entries(t)) {
5556
+ let t = e[r];
5557
+ n[r] = a$1(t) && a$1(i) ? {
5558
+ ...t,
5559
+ ...i
5560
+ } : i;
5575
5561
  }
5576
- return null;
5562
+ return n;
5577
5563
  }
5578
- function i$1(e) {
5579
- return !!e && typeof e == "object" && !Array.isArray(e);
5564
+ function s$1(e) {
5565
+ return a$1(e) ? Object.values(e).some((e) => a$1(e) && (e.settings === !0 || s$1(e))) : !1;
5580
5566
  }
5581
- function a$1(e, t) {
5582
- if (e === t) return e;
5583
- if (!i$1(e) || !i$1(t) || Object.isFrozen(e) || !Object.isExtensible(e)) return t;
5584
- try {
5585
- for (let n of Object.keys(e)) n in t || delete e[n];
5586
- Object.assign(e, t);
5587
- } catch {
5588
- return t;
5589
- }
5590
- return e;
5591
- }
5592
- var o$1 = {};
5593
- var s$1 = /* @__PURE__ */ new WeakSet();
5594
- function c$1(e) {
5595
- let t = e ?? o$1;
5596
- if (s$1.has(t)) return;
5597
- s$1.add(t);
5598
- let n = e ? `above <${e.tagName.toLowerCase()}>` : "for an update with no source element";
5599
- console.warn(`[session-bridge] no delivery host ${n}; the session change was not forwarded to the player`);
5600
- }
5601
- function l({ sourceEl: t, complete: n, session: i }) {
5602
- let o = r$2(t);
5603
- if (!o) return c$1(t), null;
5604
- if (typeof o.onSessionChange == "function") return o.onSessionChange(i), o;
5605
- let s = a$1(o.session, i);
5606
- return s !== o.session && (o.session = s), o.dispatchEvent(new c$2(o.tagName.toLowerCase(), n)), o;
5567
+ var c$1 = (e, t = !1, n = !1) => ({
5568
+ type: "toggle",
5569
+ label: e,
5570
+ isConfigProperty: t,
5571
+ disabled: n
5572
+ });
5573
+ var l = (e, t, n = !1) => ({
5574
+ type: "radio",
5575
+ label: e,
5576
+ choices: t.map((e) => typeof e == "string" ? {
5577
+ label: e,
5578
+ value: e
5579
+ } : e),
5580
+ isConfigProperty: n
5581
+ });
5582
+ function u(e, t) {
5583
+ let n = e;
5584
+ for (let e of t.split(".")) {
5585
+ if (!a$1(n)) return;
5586
+ n = n[e];
5587
+ }
5588
+ return n;
5589
+ }
5590
+ function d(e, t, n) {
5591
+ let [r, ...i] = t.split("."), o = e[r], s = i.length === 0 ? n : d(a$1(o) ? o : {}, i.join("."), n);
5592
+ return {
5593
+ ...e,
5594
+ [r]: s
5595
+ };
5607
5596
  }
5597
+ var f = /* @__PURE__ */ from_html("<label class=\"pie-settings-toggle svelte-1ang3sw\"><span> </span> <input type=\"checkbox\" role=\"switch\" class=\"svelte-1ang3sw\"/></label>");
5598
+ var p = /* @__PURE__ */ from_html("<label class=\"pie-settings-choice-row svelte-1ang3sw\"><input type=\"radio\" class=\"svelte-1ang3sw\"/> <span> </span></label>");
5599
+ var m = /* @__PURE__ */ from_html("<fieldset class=\"pie-settings-choice svelte-1ang3sw\"><legend class=\"svelte-1ang3sw\"> </legend> <!></fieldset>");
5600
+ var h$1 = /* @__PURE__ */ from_html("<fieldset class=\"pie-settings-group svelte-1ang3sw\"><legend class=\"pie-settings-group-name svelte-1ang3sw\"> </legend> <!></fieldset>");
5601
+ var g = /* @__PURE__ */ from_html("<div class=\"pie-settings-panel svelte-1ang3sw\"></div>");
5602
+ var _ = {
5603
+ hash: "svelte-1ang3sw",
5604
+ code: ".pie-settings-panel.svelte-1ang3sw {display:flex;flex-direction:column;gap:16px;padding:16px;border:1px solid var(--pie-border-light, #ccc);border-radius:4px;color:var(--pie-text, #212121);}fieldset.svelte-1ang3sw {margin:0;padding:0;border:0;min-width:0;}.pie-settings-group.svelte-1ang3sw {display:flex;flex-direction:column;gap:8px;}.pie-settings-group-name.svelte-1ang3sw {margin-bottom:8px;font-weight:600;}.pie-settings-toggle.svelte-1ang3sw {display:flex;align-items:center;justify-content:space-between;gap:12px;}.pie-settings-choice.svelte-1ang3sw legend:where(.svelte-1ang3sw) {margin-bottom:4px;}.pie-settings-choice-row.svelte-1ang3sw {display:flex;align-items:center;gap:8px;}input.svelte-1ang3sw {accent-color:var(--pie-primary, #3f51b5);}input.svelte-1ang3sw:focus-visible {outline:2px solid var(--pie-focus-outline, #1a73e8);outline-offset:2px;}"
5605
+ };
5606
+ function v(t, n) {
5607
+ push(n, !0), append_styles$1(t, _);
5608
+ let r = prop(n, "configuration", 19, () => ({})), i = Math.random().toString(36).slice(2, 10), a = /* @__PURE__ */ user_derived(() => Object.entries(n.groups).map(([e, t]) => [e, Object.entries(t).filter((e) => !!e[1])]).filter(([, e]) => e.length > 0)), o = (e, t) => u(t.isConfigProperty ? r() : n.model, e);
5609
+ function s(e, t, i) {
5610
+ t.isConfigProperty ? n.onChangeConfiguration?.(d(r(), e, i), e) : n.onChangeModel(d(n.model, e, i), e);
5611
+ }
5612
+ var c = g();
5613
+ each(c, 21, () => get$1(a), ([e, t]) => e, (t, n) => {
5614
+ var r = /* @__PURE__ */ user_derived(() => to_array(get$1(n), 2));
5615
+ let a = () => get$1(r)[0], c = () => get$1(r)[1];
5616
+ var l = h$1(), u = child(l), d = only_child(u, !0);
5617
+ each(sibling(u, 2), 17, c, ([e, t]) => e, (t, n) => {
5618
+ var r = /* @__PURE__ */ user_derived(() => to_array(get$1(n), 2));
5619
+ let a = () => get$1(r)[0], c = () => get$1(r)[1];
5620
+ var l = comment(), u = first_child(l), d = (t) => {
5621
+ var n = f(), r = child(n), i = only_child(r, !0), l = sibling(r, 2);
5622
+ remove_input_defaults(l), reset$1(n), template_effect((t) => {
5623
+ set_text(i, c().label), set_checked(l, t), l.disabled = c().disabled;
5624
+ }, [() => !!o(a(), c())]), delegated("change", l, (e) => s(a(), c(), e.currentTarget.checked)), append(t, n);
5625
+ }, h = (t) => {
5626
+ var n = m(), r = child(n), l = only_child(r, !0);
5627
+ each(sibling(r, 2), 17, () => c().choices, (e) => e.value, (t, n) => {
5628
+ var r = p(), l = child(r);
5629
+ remove_input_defaults(l);
5630
+ var d = only_child(sibling(l, 2), !0);
5631
+ reset$1(r), template_effect((t) => {
5632
+ set_attribute(l, "name", `${i}-${a()}`), set_value(l, get$1(n).value), set_checked(l, t), set_text(d, get$1(n).label);
5633
+ }, [() => o(a(), c()) === get$1(n).value]), delegated("change", l, () => s(a(), c(), get$1(n).value)), append(t, r);
5634
+ }), reset$1(n), template_effect(() => set_text(l, c().label)), append(t, n);
5635
+ };
5636
+ if_block(u, (e) => {
5637
+ c().type === "toggle" ? e(d) : c().type === "radio" && e(h, 1);
5638
+ }), append(t, l);
5639
+ }), reset$1(l), template_effect(() => set_text(d, a())), append(t, l);
5640
+ }), reset$1(c), append(t, c), pop();
5641
+ }
5642
+ delegate(["change"]);
5643
+ var y = i$1;
5644
+ var b = v;
5608
5645
  //#endregion
5609
5646
  //#region ../../../node_modules/.bun/@tiptap+core@3.31.3+ef29727eaaf819d3/node_modules/@tiptap/core/dist/rolldown-runtime-D7D4PA-g.js
5610
5647
  var __defProp = Object.defineProperty;
@@ -32062,8 +32099,15 @@ function EditableHtml$1($$anchor, $$props) {
32062
32099
  let markup = prop($$props, "markup", 3, ""), placeholder = prop($$props, "placeholder", 3, "Enter text here..."), showToolbar = prop($$props, "showToolbar", 3, true), disabled = prop($$props, "disabled", 3, false);
32063
32100
  let editorElement;
32064
32101
  let editor = /* @__PURE__ */ state(null);
32065
- let isFocused = /* @__PURE__ */ state(false);
32102
+ let hasFocus = /* @__PURE__ */ state(false);
32066
32103
  let showAlignMenu = /* @__PURE__ */ state(false);
32104
+ function editorAttributes() {
32105
+ return {
32106
+ role: "textbox",
32107
+ "aria-multiline": "true",
32108
+ ...$$props.ariaLabel ? { "aria-label": $$props.ariaLabel } : {}
32109
+ };
32110
+ }
32067
32111
  let editorState = /* @__PURE__ */ state(proxy({
32068
32112
  isBold: false,
32069
32113
  canBold: false,
@@ -32155,6 +32199,7 @@ function EditableHtml$1($$anchor, $$props) {
32155
32199
  content: markup() || "",
32156
32200
  editable: !disabled(),
32157
32201
  autofocus: false,
32202
+ editorProps: { attributes: editorAttributes() },
32158
32203
  onUpdate: ({ editor }) => {
32159
32204
  const html = editor.getHTML();
32160
32205
  if ($$props.onChange) $$props.onChange(html);
@@ -32164,12 +32209,7 @@ function EditableHtml$1($$anchor, $$props) {
32164
32209
  updateEditorState();
32165
32210
  },
32166
32211
  onFocus: () => {
32167
- set(isFocused, true);
32168
32212
  updateEditorState();
32169
- },
32170
- onBlur: () => {
32171
- set(isFocused, false);
32172
- set(showAlignMenu, false);
32173
32213
  }
32174
32214
  }), true);
32175
32215
  updateEditorState();
@@ -32184,6 +32224,19 @@ function EditableHtml$1($$anchor, $$props) {
32184
32224
  const editable = !disabled();
32185
32225
  if (get$1(editor) && get$1(editor).isEditable !== editable) get$1(editor).setEditable(editable, false);
32186
32226
  });
32227
+ user_effect(() => {
32228
+ const attributes = editorAttributes();
32229
+ if (get$1(editor) && get$1(editor).view.dom.getAttribute("aria-label") !== (attributes["aria-label"] ?? null)) get$1(editor).setOptions({ editorProps: { attributes } });
32230
+ });
32231
+ function handleFocusIn() {
32232
+ set(hasFocus, true);
32233
+ }
32234
+ function handleFocusOut(e) {
32235
+ if (!e.currentTarget.contains(e.relatedTarget)) {
32236
+ set(hasFocus, false);
32237
+ set(showAlignMenu, false);
32238
+ }
32239
+ }
32187
32240
  function toggleBold() {
32188
32241
  get$1(editor)?.chain().focus().toggleBold().run();
32189
32242
  }
@@ -32488,7 +32541,10 @@ function EditableHtml$1($$anchor, $$props) {
32488
32541
  reset$1(button_24);
32489
32542
  reset$1(div_5);
32490
32543
  reset$1(div_4);
32491
- template_effect(() => classes_1 = set_class(div_4, 1, "toolbar", null, classes_1, { focused: get$1(isFocused) }));
32544
+ template_effect(() => {
32545
+ classes_1 = set_class(div_4, 1, "toolbar", null, classes_1, { focused: get$1(hasFocus) });
32546
+ div_4.inert = !get$1(hasFocus);
32547
+ });
32492
32548
  delegated("mousedown", div_4, handleMouseDown);
32493
32549
  delegated("click", button_24, handleDoneClick);
32494
32550
  append($$anchor, div_4);
@@ -32498,10 +32554,17 @@ function EditableHtml$1($$anchor, $$props) {
32498
32554
  });
32499
32555
  reset$1(div);
32500
32556
  template_effect(() => classes = set_class(div_1, 1, "editor-holder", null, classes, { disabled: disabled() }));
32557
+ delegated("focusin", div, handleFocusIn);
32558
+ delegated("focusout", div, handleFocusOut);
32501
32559
  append($$anchor, div);
32502
32560
  pop();
32503
32561
  }
32504
- delegate(["mousedown", "click"]);
32562
+ delegate([
32563
+ "focusin",
32564
+ "focusout",
32565
+ "mousedown",
32566
+ "click"
32567
+ ]);
32505
32568
  //#endregion
32506
32569
  //#region ../../lib-svelte/editable-html-tiptap-svelte/dist/index.js
32507
32570
  var EditableHtml = EditableHtml$1;
@@ -32584,8 +32647,7 @@ var e$2 = {
32584
32647
  listenSilentAlt: "Repeat instructions",
32585
32648
  listenPlayingAlt: "Instructions are playing",
32586
32649
  printAudio: "Audio:",
32587
- printTranscript: "Transcript:",
32588
- printKey: "(key)"
32650
+ printTranscript: "Transcript:"
32589
32651
  },
32590
32652
  multipleChoice: {
32591
32653
  minSelections: "Select at least {{minSelections}}.",
@@ -32728,8 +32790,7 @@ var e$1 = {
32728
32790
  listenSilentAlt: "Escuchar. Repetir las instrucciones.",
32729
32791
  listenPlayingAlt: "Escuchar. Estas son las instrucciones.",
32730
32792
  printAudio: "Audio:",
32731
- printTranscript: "Transcripción:",
32732
- printKey: "(clave)"
32793
+ printTranscript: "Transcripción:"
32733
32794
  },
32734
32795
  multipleChoice: {
32735
32796
  minSelections: "Seleccione al menos {{minSelections}}.",
@@ -35947,7 +36008,12 @@ var defaults_default = {
35947
36008
  scoringPolicy: {
35948
36009
  label: "Scoring policy",
35949
36010
  settings: true
35950
- }
36011
+ },
36012
+ teacherInstructions: {
36013
+ label: "Teacher Instructions",
36014
+ settings: true
36015
+ },
36016
+ settingsPanelDisabled: false
35951
36017
  }
35952
36018
  };
35953
36019
  //#endregion
@@ -36091,8 +36157,8 @@ var root_8$1 = /* @__PURE__ */ from_svg(`<circle fill="none" stroke="#1e293b"></
36091
36157
  var root_9$1 = /* @__PURE__ */ from_svg(`<text font-weight="600" fill="#0f172a"> </text>`);
36092
36158
  var root_10$1 = /* @__PURE__ */ from_html(`<div class="region-aria svelte-gkcqor" role="region"></div>`);
36093
36159
  var root_11$1 = /* @__PURE__ */ from_html(`<div class="tile-wrapper svelte-gkcqor"><!></div>`);
36094
- var root_12 = /* @__PURE__ */ from_html(`<div class="venn-diagram svelte-gkcqor"><svg preserveAspectRatio="xMidYMid meet" aria-hidden="true" class="svelte-gkcqor"><defs><mask maskUnits="userSpaceOnUse" x="0" y="0"><rect x="0" y="0" fill="black"></rect><circle fill="white"></circle><circle fill="black"></circle></mask><mask maskUnits="userSpaceOnUse" x="0" y="0"><rect x="0" y="0" fill="black"></rect><circle fill="white"></circle><circle fill="black"></circle></mask><clipPath clipPathUnits="userSpaceOnUse"><circle></circle></clipPath><mask maskUnits="userSpaceOnUse" x="0" y="0"><rect x="0" y="0" fill="white"></rect><circle fill="black"></circle><circle fill="black"></circle></mask></defs><rect fill="#ffffff" stroke="#cbd5e1"></rect><!><!><!><!><!><!><!><line stroke="#cbd5e1"></line></svg> <div class="region-labels svelte-gkcqor" aria-hidden="false"></div> <div class="placed-tiles svelte-gkcqor"></div></div> <!>`, 1);
36095
- var root_13 = /* @__PURE__ */ from_html(`<div class="drag-ghost svelte-gkcqor"><!></div>`);
36160
+ var root_12$1 = /* @__PURE__ */ from_html(`<div class="venn-diagram svelte-gkcqor"><svg preserveAspectRatio="xMidYMid meet" aria-hidden="true" class="svelte-gkcqor"><defs><mask maskUnits="userSpaceOnUse" x="0" y="0"><rect x="0" y="0" fill="black"></rect><circle fill="white"></circle><circle fill="black"></circle></mask><mask maskUnits="userSpaceOnUse" x="0" y="0"><rect x="0" y="0" fill="black"></rect><circle fill="white"></circle><circle fill="black"></circle></mask><clipPath clipPathUnits="userSpaceOnUse"><circle></circle></clipPath><mask maskUnits="userSpaceOnUse" x="0" y="0"><rect x="0" y="0" fill="white"></rect><circle fill="black"></circle><circle fill="black"></circle></mask></defs><rect fill="#ffffff" stroke="#cbd5e1"></rect><!><!><!><!><!><!><!><line stroke="#cbd5e1"></line></svg> <div class="region-labels svelte-gkcqor" aria-hidden="false"></div> <div class="placed-tiles svelte-gkcqor"></div></div> <!>`, 1);
36161
+ var root_13$1 = /* @__PURE__ */ from_html(`<div class="drag-ghost svelte-gkcqor"><!></div>`);
36096
36162
  var root_14 = /* @__PURE__ */ from_html(`<div class="venn-root svelte-gkcqor"><!> <!> <!> <!> <!> <div class="sr-only svelte-gkcqor" aria-live="polite" aria-atomic="true"></div></div>`);
36097
36163
  var $$css$1 = {
36098
36164
  hash: "svelte-gkcqor",
@@ -36221,11 +36287,7 @@ function VennClassification($$anchor, $$props) {
36221
36287
  tileId,
36222
36288
  placement
36223
36289
  });
36224
- l({
36225
- sourceEl: containerEl,
36226
- session: next,
36227
- complete: next.completed === true
36228
- });
36290
+ $$props.onSessionChange?.(next);
36229
36291
  }
36230
36292
  function findTile(id) {
36231
36293
  if (!id) return null;
@@ -36496,7 +36558,7 @@ function VennClassification($$anchor, $$props) {
36496
36558
  append($$anchor, div_2);
36497
36559
  };
36498
36560
  var alternate_1 = ($$anchor) => {
36499
- var fragment_1 = root_12();
36561
+ var fragment_1 = root_12$1();
36500
36562
  var div_3 = first_child(fragment_1);
36501
36563
  let styles;
36502
36564
  var svg_2 = child(div_3);
@@ -36818,7 +36880,7 @@ function VennClassification($$anchor, $$props) {
36818
36880
  });
36819
36881
  var node_17 = sibling(node_4, 2);
36820
36882
  var consequent_10 = ($$anchor) => {
36821
- var div_8 = root_13();
36883
+ var div_8 = root_13$1();
36822
36884
  Tile(child(div_8), {
36823
36885
  get id() {
36824
36886
  return get$1(draggedTile).id;
@@ -36855,58 +36917,60 @@ function VennClassification($$anchor, $$props) {
36855
36917
  delegate(["focusout", "click"]);
36856
36918
  create_custom_element(VennClassification, {
36857
36919
  model: { type: "Object" },
36858
- session: { type: "Object" }
36920
+ session: { type: "Object" },
36921
+ onSessionChange: {}
36859
36922
  }, [], []);
36860
36923
  //#endregion
36861
36924
  //#region src/author/Author.svelte
36862
- var root = /* @__PURE__ */ from_html(`<label class="circle-label-row svelte-13ppn6m"><span></span> <input type="text" class="svelte-13ppn6m"/></label>`);
36863
- var root_1 = /* @__PURE__ */ from_html(`<div class="hint svelte-13ppn6m">Add at least one tile; each tile needs a correct region and either a label (text or simple HTML) or an
36925
+ var root = /* @__PURE__ */ from_html(`<div class="field-group svelte-13ppn6m"><div class="field-header svelte-13ppn6m"> </div> <!></div>`);
36926
+ var root_1 = /* @__PURE__ */ from_html(`<label class="circle-label-row svelte-13ppn6m"><span></span> <input type="text" class="svelte-13ppn6m"/></label>`);
36927
+ var root_2 = /* @__PURE__ */ from_html(`<div class="hint svelte-13ppn6m">Add at least one tile; each tile needs a correct region and either a label (text or simple HTML) or an
36864
36928
  image URL plus short alt text.</div>`);
36865
- var root_2 = /* @__PURE__ */ from_html(`<div class="tile-field-full svelte-13ppn6m"><button type="button" class="btn-ghost svelte-13ppn6m">Remove image</button></div>`);
36866
- var root_3 = /* @__PURE__ */ from_html(`<li class="tile-row svelte-13ppn6m"><div class="tile-row-header svelte-13ppn6m"><div class="tile-inputs svelte-13ppn6m"><label class="svelte-13ppn6m"><span>ID</span> <input type="text" class="svelte-13ppn6m"/></label> <label class="label-input svelte-13ppn6m"><span>Label</span> <input type="text" class="svelte-13ppn6m"/></label> <label class="label-input tile-field-full svelte-13ppn6m"><span>Image URL (optional)</span> <input type="text" placeholder="https://… or data:image/…" class="svelte-13ppn6m"/></label> <label class="label-input tile-field-full svelte-13ppn6m"><span>Image alt (required if image URL is set)</span> <input type="text" class="svelte-13ppn6m"/></label> <!></div> <div class="tile-actions svelte-13ppn6m"><button type="button" class="btn-ghost svelte-13ppn6m" aria-label="Move up">↑</button> <button type="button" class="btn-ghost svelte-13ppn6m" aria-label="Move down">↓</button> <button type="button" class="btn-ghost danger svelte-13ppn6m" aria-label="Remove">✕</button></div></div> <div class="tile-region svelte-13ppn6m"><div class="region-header svelte-13ppn6m">Correct region</div> <!></div></li>`);
36867
- var root_4 = /* @__PURE__ */ from_html(`<label class="override-row svelte-13ppn6m"><span class="override-key svelte-13ppn6m"> </span> <input type="text" class="svelte-13ppn6m"/></label>`);
36868
- var root_5 = /* @__PURE__ */ from_html(`<div class="preview-diagram svelte-13ppn6m"><!></div>`);
36869
- var root_6 = /* @__PURE__ */ from_html(`<p class="hint preview-diagram-placeholder svelte-13ppn6m">Add at least one tile to see the diagram.</p>`);
36870
- var root_7 = /* @__PURE__ */ from_html(`<p class="hint preview-diagram-placeholder svelte-13ppn6m">Exactly two circles are required for the preview.</p>`);
36871
- var root_8 = /* @__PURE__ */ from_html(`<img alt="" class="preview-thumb svelte-13ppn6m" aria-hidden="true"/>`);
36872
- var root_9 = /* @__PURE__ */ from_html(`<li class="svelte-13ppn6m"><span class="preview-tile svelte-13ppn6m"><!> </span> <span class="preview-arrow svelte-13ppn6m">→</span> <span class="preview-region svelte-13ppn6m"> </span></li>`);
36873
- var root_10 = /* @__PURE__ */ from_html(`<div class="preview-list-heading svelte-13ppn6m">Correct regions</div> <ol class="preview-list svelte-13ppn6m"></ol>`, 1);
36874
- var root_11 = /* @__PURE__ */ from_html(`<div class="venn-author svelte-13ppn6m"><div class="author-shell svelte-13ppn6m"><div class="editor-column svelte-13ppn6m"><div class="field-group svelte-13ppn6m"><label class="field-header svelte-13ppn6m"><input type="checkbox" class="svelte-13ppn6m"/> <span>Prompt</span></label> <!></div> <div class="field-group svelte-13ppn6m"><div class="field-header svelte-13ppn6m">Circles</div> <p class="hint circle-count-note svelte-13ppn6m">2 circles (4 regions).</p> <div class="circle-labels svelte-13ppn6m"></div></div> <div class="field-group svelte-13ppn6m"><div class="field-header-row svelte-13ppn6m"><span class="field-header svelte-13ppn6m">Tiles</span> <button type="button" class="btn-add svelte-13ppn6m">+ Add tile</button></div> <!> <ul class="tile-list svelte-13ppn6m"></ul></div> <div class="field-group svelte-13ppn6m"><div class="field-header svelte-13ppn6m">Scoring policy</div> <label class="radio-row svelte-13ppn6m"><input type="radio" name="scoring" value="partialPerTile"/> <span>Partial credit per tile</span></label> <label class="radio-row svelte-13ppn6m"><input type="radio" name="scoring" value="allOrNothing"/> <span>All or nothing</span></label></div> <details class="field-group svelte-13ppn6m"><summary class="field-header svelte-13ppn6m">Region labels (advanced)</summary> <p class="hint svelte-13ppn6m">Override the auto-composed region labels that delivery uses for aria-labels and visible region chrome.</p> <!></details></div> <button type="button" class="split-gutter svelte-13ppn6m" role="slider" aria-orientation="vertical" aria-label="Resize editor and preview panels"></button> <div class="preview-column svelte-13ppn6m"><div class="preview-header svelte-13ppn6m">Preview</div> <div class="preview-note svelte-13ppn6m">Live diagram with each tile in its authored <em>correct region</em>. Drag the vertical handle (or use
36875
- arrow keys when it is focused) to change the editor / preview split.</div> <div class="preview-summary svelte-13ppn6m"><div><strong>Circles:</strong> </div> <div><strong>Scoring:</strong> </div> <div><strong>Tiles:</strong> </div></div> <!> <!></div></div></div>`);
36929
+ var root_3 = /* @__PURE__ */ from_html(`<div class="tile-field-full svelte-13ppn6m"><button type="button" class="btn-ghost svelte-13ppn6m">Remove image</button></div>`);
36930
+ var root_4 = /* @__PURE__ */ from_html(`<li class="tile-row svelte-13ppn6m"><div class="tile-row-header svelte-13ppn6m"><div class="tile-inputs svelte-13ppn6m"><label class="svelte-13ppn6m"><span>ID</span> <input type="text" class="svelte-13ppn6m"/></label> <label class="label-input svelte-13ppn6m"><span>Label</span> <input type="text" class="svelte-13ppn6m"/></label> <label class="label-input tile-field-full svelte-13ppn6m"><span>Image URL (optional)</span> <input type="text" placeholder="https://… or data:image/…" class="svelte-13ppn6m"/></label> <label class="label-input tile-field-full svelte-13ppn6m"><span>Image alt (required if image URL is set)</span> <input type="text" class="svelte-13ppn6m"/></label> <!></div> <div class="tile-actions svelte-13ppn6m"><button type="button" class="btn-ghost svelte-13ppn6m" aria-label="Move up">↑</button> <button type="button" class="btn-ghost svelte-13ppn6m" aria-label="Move down">↓</button> <button type="button" class="btn-ghost danger svelte-13ppn6m" aria-label="Remove">✕</button></div></div> <div class="tile-region svelte-13ppn6m"><div class="region-header svelte-13ppn6m">Correct region</div> <!></div></li>`);
36931
+ var root_5 = /* @__PURE__ */ from_html(`<label class="override-row svelte-13ppn6m"><span class="override-key svelte-13ppn6m"> </span> <input type="text" class="svelte-13ppn6m"/></label>`);
36932
+ var root_6 = /* @__PURE__ */ from_html(`<div class="preview-diagram svelte-13ppn6m"><!></div>`);
36933
+ var root_7 = /* @__PURE__ */ from_html(`<p class="hint preview-diagram-placeholder svelte-13ppn6m">Add at least one tile to see the diagram.</p>`);
36934
+ var root_8 = /* @__PURE__ */ from_html(`<p class="hint preview-diagram-placeholder svelte-13ppn6m">Exactly two circles are required for the preview.</p>`);
36935
+ var root_9 = /* @__PURE__ */ from_html(`<img alt="" class="preview-thumb svelte-13ppn6m" aria-hidden="true"/>`);
36936
+ var root_10 = /* @__PURE__ */ from_html(`<li class="svelte-13ppn6m"><span class="preview-tile svelte-13ppn6m"><!> </span> <span class="preview-arrow svelte-13ppn6m">→</span> <span class="preview-region svelte-13ppn6m"> </span></li>`);
36937
+ var root_11 = /* @__PURE__ */ from_html(`<div class="preview-list-heading svelte-13ppn6m">Correct regions</div> <ol class="preview-list svelte-13ppn6m"></ol>`, 1);
36938
+ var root_12 = /* @__PURE__ */ from_html(`<div class="author-shell svelte-13ppn6m"><div class="editor-column svelte-13ppn6m"><!> <!> <div class="field-group svelte-13ppn6m"><div class="field-header svelte-13ppn6m">Circles</div> <p class="hint circle-count-note svelte-13ppn6m">2 circles (4 regions).</p> <div class="circle-labels svelte-13ppn6m"></div></div> <div class="field-group svelte-13ppn6m"><div class="field-header-row svelte-13ppn6m"><span class="field-header svelte-13ppn6m">Tiles</span> <button type="button" class="btn-add svelte-13ppn6m">+ Add tile</button></div> <!> <ul class="tile-list svelte-13ppn6m"></ul></div> <details class="field-group svelte-13ppn6m"><summary class="field-header svelte-13ppn6m">Region labels (advanced)</summary> <p class="hint svelte-13ppn6m">Override the auto-composed region labels that delivery uses for aria-labels and visible region chrome.</p> <!></details></div> <button type="button" class="split-gutter svelte-13ppn6m" role="slider" aria-orientation="vertical" aria-label="Resize editor and preview panels"></button> <div class="preview-column svelte-13ppn6m"><div class="preview-header svelte-13ppn6m">Preview</div> <div class="preview-note svelte-13ppn6m">Live diagram with each tile in its authored <em>correct region</em>. Drag the vertical handle (or use
36939
+ arrow keys when it is focused) to change the editor / preview split.</div> <div class="preview-summary svelte-13ppn6m"><div><strong>Circles:</strong> </div> <div><strong>Scoring:</strong> </div> <div><strong>Tiles:</strong> </div></div> <!> <!></div></div>`);
36940
+ var root_13 = /* @__PURE__ */ from_html(`<div class="venn-author svelte-13ppn6m"><!></div>`);
36876
36941
  var $$css = {
36877
36942
  hash: "svelte-13ppn6m",
36878
- code: ".venn-author.svelte-13ppn6m {padding:24px;font-family:system-ui, -apple-system, Segoe UI, Roboto, sans-serif;color:#0f172a;box-sizing:border-box;--vc-focus-ring: var(\n --pie-focus-outline,\n var(--pie-button-focus-outline, var(--pie-focus-checked-border, #1565c0))\n );}.author-shell.svelte-13ppn6m {display:flex;flex-direction:row;align-items:stretch;gap:0;width:100%;min-height:min(72vh, 720px);max-height:min(85vh, 960px);box-sizing:border-box;}.editor-column.svelte-13ppn6m {display:flex;flex-direction:column;gap:20px;flex-shrink:0;overflow:auto;min-width:0;}.split-gutter.svelte-13ppn6m {flex:0 0 6px;width:6px;margin:0;padding:0;border:none;border-left:1px solid #cbd5e1;border-right:1px solid #cbd5e1;cursor:col-resize;touch-action:none;background:#e2e8f0;align-self:stretch;}.split-gutter.svelte-13ppn6m:hover,\n .split-gutter.svelte-13ppn6m:focus-visible {background:#cbd5e1;}.split-gutter.svelte-13ppn6m:focus-visible {outline:2px solid var(--vc-focus-ring, #1565c0);outline-offset:2px;}\n @media (max-width: 900px) {.author-shell.svelte-13ppn6m {flex-direction:column;min-height:unset;max-height:unset;}.editor-column.svelte-13ppn6m {width:100% !important;flex:none;max-width:none;}.split-gutter.svelte-13ppn6m {display:none;}.preview-column.svelte-13ppn6m {flex:none;width:100%;}\n }.field-group.svelte-13ppn6m {border:1px solid #e2e8f0;border-radius:8px;padding:16px;background:#ffffff;}.field-header.svelte-13ppn6m,\n .field-header-row.svelte-13ppn6m {display:flex;align-items:center;justify-content:space-between;font-weight:600;font-size:14px;margin-bottom:12px;color:#0f172a;}.field-header.svelte-13ppn6m input[type='checkbox']:where(.svelte-13ppn6m) {margin-right:8px;}.field-header-row.svelte-13ppn6m {gap:8px;}.btn-add.svelte-13ppn6m {background:#2563eb;color:#ffffff;border:none;padding:6px 10px;border-radius:6px;font-size:12px;cursor:pointer;}.btn-add.svelte-13ppn6m:hover {background:#1d4ed8;}.btn-ghost.svelte-13ppn6m {background:transparent;border:1px solid #cbd5e1;border-radius:4px;padding:2px 8px;cursor:pointer;font-size:13px;}.btn-ghost.svelte-13ppn6m:hover:not(:disabled) {background:#f1f5f9;}.btn-ghost.svelte-13ppn6m:disabled {opacity:0.4;cursor:not-allowed;}.btn-ghost.danger.svelte-13ppn6m {color:#bf0d00;}.circle-labels.svelte-13ppn6m {display:flex;flex-direction:column;gap:8px;}.circle-count-note.svelte-13ppn6m {margin:0 0 4px 0;}.radio-row.svelte-13ppn6m {display:inline-flex;align-items:center;gap:6px;font-size:13px;margin-top:6px;}.circle-label-row.svelte-13ppn6m {display:grid;grid-template-columns:120px minmax(0, 1fr);align-items:center;gap:8px;font-size:13px;}.circle-label-row.svelte-13ppn6m input:where(.svelte-13ppn6m),\n .tile-inputs.svelte-13ppn6m input:where(.svelte-13ppn6m),\n .override-row.svelte-13ppn6m input:where(.svelte-13ppn6m) {padding:6px 8px;border:1px solid #cbd5e1;border-radius:4px;font-size:13px;width:100%;box-sizing:border-box;}.tile-list.svelte-13ppn6m {list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px;}.tile-row.svelte-13ppn6m {border:1px solid #e2e8f0;border-radius:6px;padding:10px 12px;background:#f8fafc;}.tile-row-header.svelte-13ppn6m {display:flex;gap:8px;align-items:center;}.tile-inputs.svelte-13ppn6m {flex:1;display:grid;grid-template-columns:140px 1fr;gap:8px;}.tile-inputs.svelte-13ppn6m label:where(.svelte-13ppn6m) {display:flex;flex-direction:column;gap:2px;font-size:12px;color:#475569;}.tile-inputs.svelte-13ppn6m .tile-field-full:where(.svelte-13ppn6m) {grid-column:1 / -1;}.tile-actions.svelte-13ppn6m {display:flex;gap:4px;}.tile-region.svelte-13ppn6m {margin-top:8px;}.region-header.svelte-13ppn6m {font-size:12px;font-weight:600;color:#475569;margin-bottom:6px;}.override-row.svelte-13ppn6m {display:grid;grid-template-columns:100px minmax(0, 1fr);align-items:center;gap:8px;font-size:13px;margin-top:6px;}.override-key.svelte-13ppn6m {font-family:ui-monospace, SFMono-Regular, Menlo, monospace;font-size:12px;color:#64748b;}.hint.svelte-13ppn6m {font-size:12px;color:#64748b;margin:8px 0;}.preview-column.svelte-13ppn6m {flex:1 1 auto;min-width:0;overflow:auto;border:1px solid #e2e8f0;border-radius:8px;padding:16px;background:#ffffff;}.preview-diagram.svelte-13ppn6m {margin:12px 0 16px 0;max-width:100%;overflow-x:auto;}.preview-diagram.svelte-13ppn6m .venn-root {padding-top:8px;}.preview-list-heading.svelte-13ppn6m {font-size:12px;font-weight:600;color:#475569;margin:8px 0 6px 0;}.preview-diagram-placeholder.svelte-13ppn6m {margin:12px 0;}.preview-header.svelte-13ppn6m {font-weight:600;font-size:14px;margin-bottom:8px;}.preview-note.svelte-13ppn6m {font-size:12px;color:#64748b;margin-bottom:12px;}.preview-summary.svelte-13ppn6m {font-size:13px;line-height:1.5;color:#334155;margin-bottom:10px;}.preview-list.svelte-13ppn6m {list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:4px;}.preview-list.svelte-13ppn6m li:where(.svelte-13ppn6m) {display:flex;align-items:center;gap:6px;font-size:13px;}.preview-tile.svelte-13ppn6m {display:inline-flex;align-items:center;gap:6px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:4px;padding:2px 6px;color:#1d4ed8;}.preview-thumb.svelte-13ppn6m {width:22px;height:22px;object-fit:contain;flex-shrink:0;}.preview-arrow.svelte-13ppn6m {color:#94a3b8;}.preview-region.svelte-13ppn6m {color:#0f172a;}"
36943
+ code: ".venn-author.svelte-13ppn6m {padding:24px;font-family:system-ui, -apple-system, Segoe UI, Roboto, sans-serif;color:#0f172a;box-sizing:border-box;--vc-focus-ring: var(\n --pie-focus-outline,\n var(--pie-button-focus-outline, var(--pie-focus-checked-border, #1565c0))\n );}.author-shell.svelte-13ppn6m {display:flex;flex-direction:row;align-items:stretch;gap:0;width:100%;min-height:min(72vh, 720px);max-height:min(85vh, 960px);box-sizing:border-box;}.editor-column.svelte-13ppn6m {display:flex;flex-direction:column;gap:20px;flex-shrink:0;overflow:auto;min-width:0;}.split-gutter.svelte-13ppn6m {flex:0 0 6px;width:6px;margin:0;padding:0;border:none;border-left:1px solid #cbd5e1;border-right:1px solid #cbd5e1;cursor:col-resize;touch-action:none;background:#e2e8f0;align-self:stretch;}.split-gutter.svelte-13ppn6m:hover,\n .split-gutter.svelte-13ppn6m:focus-visible {background:#cbd5e1;}.split-gutter.svelte-13ppn6m:focus-visible {outline:2px solid var(--vc-focus-ring, #1565c0);outline-offset:2px;}\n @media (max-width: 900px) {.author-shell.svelte-13ppn6m {flex-direction:column;min-height:unset;max-height:unset;}.editor-column.svelte-13ppn6m {width:100% !important;flex:none;max-width:none;}.split-gutter.svelte-13ppn6m {display:none;}.preview-column.svelte-13ppn6m {flex:none;width:100%;}\n }.field-group.svelte-13ppn6m {border:1px solid #e2e8f0;border-radius:8px;padding:16px;background:#ffffff;}.field-header.svelte-13ppn6m,\n .field-header-row.svelte-13ppn6m {display:flex;align-items:center;justify-content:space-between;font-weight:600;font-size:14px;margin-bottom:12px;color:#0f172a;}.field-header-row.svelte-13ppn6m {gap:8px;}.btn-add.svelte-13ppn6m {background:#2563eb;color:#ffffff;border:none;padding:6px 10px;border-radius:6px;font-size:12px;cursor:pointer;}.btn-add.svelte-13ppn6m:hover {background:#1d4ed8;}.btn-ghost.svelte-13ppn6m {background:transparent;border:1px solid #cbd5e1;border-radius:4px;padding:2px 8px;cursor:pointer;font-size:13px;}.btn-ghost.svelte-13ppn6m:hover:not(:disabled) {background:#f1f5f9;}.btn-ghost.svelte-13ppn6m:disabled {opacity:0.4;cursor:not-allowed;}.btn-ghost.danger.svelte-13ppn6m {color:#bf0d00;}.circle-labels.svelte-13ppn6m {display:flex;flex-direction:column;gap:8px;}.circle-count-note.svelte-13ppn6m {margin:0 0 4px 0;}.circle-label-row.svelte-13ppn6m {display:grid;grid-template-columns:120px minmax(0, 1fr);align-items:center;gap:8px;font-size:13px;}.circle-label-row.svelte-13ppn6m input:where(.svelte-13ppn6m),\n .tile-inputs.svelte-13ppn6m input:where(.svelte-13ppn6m),\n .override-row.svelte-13ppn6m input:where(.svelte-13ppn6m) {padding:6px 8px;border:1px solid #cbd5e1;border-radius:4px;font-size:13px;width:100%;box-sizing:border-box;}.tile-list.svelte-13ppn6m {list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px;}.tile-row.svelte-13ppn6m {border:1px solid #e2e8f0;border-radius:6px;padding:10px 12px;background:#f8fafc;}.tile-row-header.svelte-13ppn6m {display:flex;gap:8px;align-items:center;}.tile-inputs.svelte-13ppn6m {flex:1;display:grid;grid-template-columns:140px 1fr;gap:8px;}.tile-inputs.svelte-13ppn6m label:where(.svelte-13ppn6m) {display:flex;flex-direction:column;gap:2px;font-size:12px;color:#475569;}.tile-inputs.svelte-13ppn6m .tile-field-full:where(.svelte-13ppn6m) {grid-column:1 / -1;}.tile-actions.svelte-13ppn6m {display:flex;gap:4px;}.tile-region.svelte-13ppn6m {margin-top:8px;}.region-header.svelte-13ppn6m {font-size:12px;font-weight:600;color:#475569;margin-bottom:6px;}.override-row.svelte-13ppn6m {display:grid;grid-template-columns:100px minmax(0, 1fr);align-items:center;gap:8px;font-size:13px;margin-top:6px;}.override-key.svelte-13ppn6m {font-family:ui-monospace, SFMono-Regular, Menlo, monospace;font-size:12px;color:#64748b;}.hint.svelte-13ppn6m {font-size:12px;color:#64748b;margin:8px 0;}.preview-column.svelte-13ppn6m {flex:1 1 auto;min-width:0;overflow:auto;border:1px solid #e2e8f0;border-radius:8px;padding:16px;background:#ffffff;}.preview-diagram.svelte-13ppn6m {margin:12px 0 16px 0;max-width:100%;overflow-x:auto;}.preview-diagram.svelte-13ppn6m .venn-root {padding-top:8px;}.preview-list-heading.svelte-13ppn6m {font-size:12px;font-weight:600;color:#475569;margin:8px 0 6px 0;}.preview-diagram-placeholder.svelte-13ppn6m {margin:12px 0;}.preview-header.svelte-13ppn6m {font-weight:600;font-size:14px;margin-bottom:8px;}.preview-note.svelte-13ppn6m {font-size:12px;color:#64748b;margin-bottom:12px;}.preview-summary.svelte-13ppn6m {font-size:13px;line-height:1.5;color:#334155;margin-bottom:10px;}.preview-list.svelte-13ppn6m {list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:4px;}.preview-list.svelte-13ppn6m li:where(.svelte-13ppn6m) {display:flex;align-items:center;gap:6px;font-size:13px;}.preview-tile.svelte-13ppn6m {display:inline-flex;align-items:center;gap:6px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:4px;padding:2px 6px;color:#1d4ed8;}.preview-thumb.svelte-13ppn6m {width:22px;height:22px;object-fit:contain;flex-shrink:0;}.preview-arrow.svelte-13ppn6m {color:#94a3b8;}.preview-region.svelte-13ppn6m {color:#0f172a;}"
36879
36944
  };
36880
36945
  function Author($$anchor, $$props) {
36881
36946
  push($$props, true);
36882
36947
  append_styles$1($$anchor, $$css);
36883
- let model = prop($$props, "model", 15), onChange = prop($$props, "onChange", 7);
36884
- const isAuthorHost = (node) => typeof node?.onModelChange === "function";
36885
- /** The wrapper owns the model and announces the edit; `onChange` serves a component mounted without one. */
36948
+ let model = prop($$props, "model", 7), configuration = prop($$props, "configuration", 7);
36949
+ const config = /* @__PURE__ */ user_derived(() => o$1(defaults_default.configuration, configuration()));
36950
+ const SCORING_POLICY_CHOICES = [{
36951
+ label: "Partial credit per tile",
36952
+ value: "partialPerTile"
36953
+ }, {
36954
+ label: "All or nothing",
36955
+ value: "allOrNothing"
36956
+ }];
36957
+ /**
36958
+ * Keeps the edit as the element's model, so the next edit builds on it,
36959
+ * assigning it through the host: a remount after a detach starts from the
36960
+ * host's property. Announces it as a bubbling `model.updated` for the player
36961
+ * listening at its root.
36962
+ */
36886
36963
  function emit(next) {
36887
- const host = r$2(get$1(authorShellEl), { hostPredicate: isAuthorHost });
36888
- if (host) host.onModelChange(next);
36889
- else {
36890
- model(next);
36891
- onChange()?.(next);
36892
- }
36964
+ $$props.$$host.model = next;
36965
+ $$props.$$host.dispatchEvent(new e$3(next));
36893
36966
  }
36894
36967
  /**
36895
- * The model with the fields this form edits filled in. Every other field,
36896
- * `id` and `element` included, passes through untouched: the player owns those
36897
- * two, and an edit must not drop what the form does not show.
36968
+ * The model with the controller's defaults filled in. Every other field, `id`
36969
+ * and `element` included, passes through untouched: the player owns those two,
36970
+ * and an edit must not drop what the form does not show.
36898
36971
  */
36899
36972
  function safeModel() {
36900
- const m = model() || {};
36901
- return {
36902
- ...m,
36903
- prompt: m.prompt ?? "",
36904
- promptEnabled: m.promptEnabled !== false,
36905
- circles: Array.isArray(m.circles) && m.circles.length > 0 ? m.circles : [{ label: "Set A" }, { label: "Set B" }],
36906
- tiles: Array.isArray(m.tiles) ? m.tiles : [],
36907
- regionLabels: m.regionLabels ?? {},
36908
- scoringPolicy: m.scoringPolicy ?? "partialPerTile"
36909
- };
36973
+ return createDefaultModel(model() || void 0);
36910
36974
  }
36911
36975
  function update(patch) {
36912
36976
  emit({
@@ -36917,9 +36981,6 @@ function Author($$anchor, $$props) {
36917
36981
  function onPromptChange(html) {
36918
36982
  update({ prompt: html });
36919
36983
  }
36920
- function setPromptEnabled(enabled) {
36921
- update({ promptEnabled: enabled });
36922
- }
36923
36984
  function setCircleLabel(idx, label) {
36924
36985
  update({ circles: safeModel().circles.map((c, i) => i === idx ? {
36925
36986
  ...c,
@@ -36990,9 +37051,6 @@ function Author($$anchor, $$props) {
36990
37051
  correctRegion: normalizeRegion(region)
36991
37052
  } : t) });
36992
37053
  }
36993
- function setScoringPolicy(policy) {
36994
- update({ scoringPolicy: policy });
36995
- }
36996
37054
  function setRegionLabelOverride(key, label) {
36997
37055
  const next = { ...safeModel().regionLabels || {} };
36998
37056
  if (label.trim().length === 0) delete next[key];
@@ -37097,270 +37155,321 @@ function Author($$anchor, $$props) {
37097
37155
  model($$value);
37098
37156
  flushSync();
37099
37157
  },
37100
- get onChange() {
37101
- return onChange();
37158
+ get configuration() {
37159
+ return configuration();
37102
37160
  },
37103
- set onChange($$value) {
37104
- onChange($$value);
37161
+ set configuration($$value) {
37162
+ configuration($$value);
37105
37163
  flushSync();
37106
37164
  }
37107
37165
  };
37108
- var div = root_11();
37109
- var div_1 = child(div);
37110
- var div_2 = child(div_1);
37111
- let styles;
37112
- var div_3 = child(div_2);
37113
- var label_1 = child(div_3);
37114
- var input = child(label_1);
37115
- remove_input_defaults(input);
37116
- next(2);
37117
- reset$1(label_1);
37118
- var node_1 = sibling(label_1, 2);
37119
- var consequent = ($$anchor) => {
37120
- {
37121
- let $0 = /* @__PURE__ */ user_derived(() => get$1(m).prompt || "");
37122
- EditableHtml($$anchor, {
37123
- get markup() {
37124
- return get$1($0);
37125
- },
37126
- onChange: onPromptChange,
37127
- placeholder: "Enter a prompt for the Venn classification question..."
37128
- });
37129
- }
37130
- };
37131
- if_block(node_1, ($$render) => {
37132
- if (get$1(m).promptEnabled !== false) $$render(consequent);
37133
- });
37134
- reset$1(div_3);
37135
- var div_4 = sibling(div_3, 2);
37136
- var div_5 = sibling(child(div_4), 4);
37137
- each(div_5, 21, () => get$1(m).circles, index, ($$anchor, circle, idx) => {
37138
- var label_2 = root();
37139
- var span = child(label_2);
37140
- span.textContent = `Circle ${idx + 1} label`;
37141
- var input_1 = sibling(span, 2);
37142
- remove_input_defaults(input_1);
37143
- reset$1(label_2);
37144
- template_effect(() => set_value(input_1, get$1(circle).label));
37145
- delegated("input", input_1, (e) => setCircleLabel(idx, e.currentTarget.value));
37146
- append($$anchor, label_2);
37147
- });
37148
- reset$1(div_5);
37149
- reset$1(div_4);
37150
- var div_6 = sibling(div_4, 2);
37151
- var div_7 = child(div_6);
37152
- var button = sibling(child(div_7), 2);
37153
- reset$1(div_7);
37154
- var node_2 = sibling(div_7, 2);
37155
- var consequent_1 = ($$anchor) => {
37156
- append($$anchor, root_1());
37157
- };
37158
- if_block(node_2, ($$render) => {
37159
- if (get$1(m).tiles.length === 0) $$render(consequent_1);
37160
- });
37161
- var ul = sibling(node_2, 2);
37162
- each(ul, 21, () => get$1(m).tiles, index, ($$anchor, tile, idx) => {
37163
- var li = root_3();
37164
- var div_9 = child(li);
37165
- var div_10 = child(div_9);
37166
- var label_3 = child(div_10);
37167
- var input_2 = sibling(child(label_3), 2);
37168
- remove_input_defaults(input_2);
37169
- reset$1(label_3);
37170
- var label_4 = sibling(label_3, 2);
37171
- var input_3 = sibling(child(label_4), 2);
37172
- remove_input_defaults(input_3);
37173
- reset$1(label_4);
37174
- var label_5 = sibling(label_4, 2);
37175
- var input_4 = sibling(child(label_5), 2);
37176
- remove_input_defaults(input_4);
37177
- reset$1(label_5);
37178
- var label_6 = sibling(label_5, 2);
37179
- var input_5 = sibling(child(label_6), 2);
37180
- remove_input_defaults(input_5);
37181
- reset$1(label_6);
37182
- var node_3 = sibling(label_6, 2);
37183
- var consequent_2 = ($$anchor) => {
37184
- var div_11 = root_2();
37185
- delegated("click", only_child(div_11), () => clearTileImage(idx));
37186
- append($$anchor, div_11);
37166
+ var div = root_13();
37167
+ var node = child(div);
37168
+ {
37169
+ const settings = ($$anchor) => {
37170
+ {
37171
+ let $0 = /* @__PURE__ */ user_derived(() => ({
37172
+ Settings: { promptEnabled: get$1(config).prompt?.settings && c$1(get$1(config).prompt.label) },
37173
+ Properties: {
37174
+ teacherInstructionsEnabled: get$1(config).teacherInstructions?.settings && c$1(get$1(config).teacherInstructions.label),
37175
+ scoringPolicy: get$1(config).scoringPolicy?.settings && l(get$1(config).scoringPolicy.label, SCORING_POLICY_CHOICES)
37176
+ }
37177
+ }));
37178
+ b($$anchor, {
37179
+ get model() {
37180
+ return get$1(m);
37181
+ },
37182
+ get configuration() {
37183
+ return get$1(config);
37184
+ },
37185
+ get groups() {
37186
+ return get$1($0);
37187
+ },
37188
+ onChangeModel: (next) => update(next)
37189
+ });
37190
+ }
37187
37191
  };
37188
- var d = /* @__PURE__ */ user_derived(() => (get$1(tile).imageUrl ?? "").trim());
37189
- if_block(node_3, ($$render) => {
37190
- if (get$1(d)) $$render(consequent_2);
37191
- });
37192
- reset$1(div_10);
37193
- var div_12 = sibling(div_10, 2);
37194
- var button_2 = child(div_12);
37195
- button_2.disabled = idx === 0;
37196
- var button_3 = sibling(button_2, 2);
37197
- var button_4 = sibling(button_3, 2);
37198
- reset$1(div_12);
37199
- reset$1(div_9);
37200
- var div_13 = sibling(div_9, 2);
37201
- RegionPicker(sibling(child(div_13), 2), {
37202
- get circles() {
37203
- return get$1(m).circles;
37204
- },
37205
- get regionLabels() {
37206
- return get$1(m).regionLabels;
37207
- },
37208
- get value() {
37209
- return get$1(tile).correctRegion;
37192
+ let $0 = /* @__PURE__ */ user_derived(() => get$1(config).settingsPanelDisabled === true || !s$1(get$1(config)));
37193
+ y(node, {
37194
+ get hideSettings() {
37195
+ return get$1($0);
37210
37196
  },
37211
- onchange: (region) => setTileRegion(idx, region)
37212
- });
37213
- reset$1(div_13);
37214
- reset$1(li);
37215
- template_effect(() => {
37216
- set_value(input_2, get$1(tile).id);
37217
- set_value(input_3, get$1(tile).label);
37218
- set_value(input_4, get$1(tile).imageUrl ?? "");
37219
- set_value(input_5, get$1(tile).imageAlt ?? "");
37220
- button_3.disabled = idx === get$1(m).tiles.length - 1;
37221
- });
37222
- delegated("input", input_2, (e) => setTileId(idx, e.currentTarget.value));
37223
- delegated("input", input_3, (e) => setTileLabel(idx, e.currentTarget.value));
37224
- delegated("input", input_4, (e) => setTileImageUrl(idx, e.currentTarget.value));
37225
- delegated("input", input_5, (e) => setTileImageAlt(idx, e.currentTarget.value));
37226
- delegated("click", button_2, () => moveTile(idx, -1));
37227
- delegated("click", button_3, () => moveTile(idx, 1));
37228
- delegated("click", button_4, () => removeTile(idx));
37229
- append($$anchor, li);
37230
- });
37231
- reset$1(ul);
37232
- reset$1(div_6);
37233
- var div_14 = sibling(div_6, 2);
37234
- var label_7 = sibling(child(div_14), 2);
37235
- var input_6 = child(label_7);
37236
- remove_input_defaults(input_6);
37237
- next(2);
37238
- reset$1(label_7);
37239
- var label_8 = sibling(label_7, 2);
37240
- var input_7 = child(label_8);
37241
- remove_input_defaults(input_7);
37242
- next(2);
37243
- reset$1(label_8);
37244
- reset$1(div_14);
37245
- var details = sibling(div_14, 2);
37246
- each(sibling(child(details), 4), 17, () => get$1(regions), (region) => regionKey(region), ($$anchor, region) => {
37247
- const key = /* @__PURE__ */ user_derived(() => regionKey(get$1(region)));
37248
- const placeholder = /* @__PURE__ */ user_derived(() => composeRegionLabel(get$1(m).circles || [], get$1(region)));
37249
- var label_9 = root_4();
37250
- var span_1 = child(label_9);
37251
- var text = only_child(span_1, true);
37252
- var input_8 = sibling(span_1, 2);
37253
- remove_input_defaults(input_8);
37254
- reset$1(label_9);
37255
- template_effect(() => {
37256
- set_text(text, get$1(key) || "(outside)");
37257
- set_attribute(input_8, "placeholder", get$1(placeholder));
37258
- set_value(input_8, get$1(m).regionLabels?.[get$1(key)] ?? "");
37259
- });
37260
- delegated("input", input_8, (e) => setRegionLabelOverride(get$1(key), e.currentTarget.value));
37261
- append($$anchor, label_9);
37262
- });
37263
- reset$1(details);
37264
- reset$1(div_2);
37265
- var button_5 = sibling(div_2, 2);
37266
- set_attribute(button_5, "aria-valuemin", MIN_EDITOR_W);
37267
- var div_15 = sibling(button_5, 2);
37268
- var div_16 = sibling(child(div_15), 4);
37269
- var div_17 = child(div_16);
37270
- var text_1 = sibling(child(div_17));
37271
- reset$1(div_17);
37272
- var div_18 = sibling(div_17, 2);
37273
- var text_2 = sibling(child(div_18));
37274
- reset$1(div_18);
37275
- var div_19 = sibling(div_18, 2);
37276
- var text_3 = sibling(child(div_19));
37277
- reset$1(div_19);
37278
- reset$1(div_16);
37279
- var node_6 = sibling(div_16, 2);
37280
- var consequent_3 = ($$anchor) => {
37281
- var div_20 = root_5();
37282
- VennClassification(child(div_20), {
37283
- get model() {
37284
- return get$1(previewModel);
37197
+ settings,
37198
+ children: ($$anchor, $$slotProps) => {
37199
+ var div_1 = root_12();
37200
+ var div_2 = child(div_1);
37201
+ let styles;
37202
+ var node_1 = child(div_2);
37203
+ var consequent = ($$anchor) => {
37204
+ var div_3 = root();
37205
+ var div_4 = child(div_3);
37206
+ var text = only_child(div_4, true);
37207
+ var node_2 = sibling(div_4, 2);
37208
+ {
37209
+ let $0 = /* @__PURE__ */ user_derived(() => get$1(m).teacherInstructions || "");
37210
+ let $1 = /* @__PURE__ */ user_derived(() => get$1(config).teacherInstructions?.label);
37211
+ EditableHtml(node_2, {
37212
+ get markup() {
37213
+ return get$1($0);
37214
+ },
37215
+ onChange: (html) => update({ teacherInstructions: html }),
37216
+ get ariaLabel() {
37217
+ return get$1($1);
37218
+ }
37219
+ });
37220
+ }
37221
+ reset$1(div_3);
37222
+ template_effect(() => set_text(text, get$1(config).teacherInstructions?.label));
37223
+ append($$anchor, div_3);
37224
+ };
37225
+ if_block(node_1, ($$render) => {
37226
+ if (get$1(m).teacherInstructionsEnabled !== false) $$render(consequent);
37227
+ });
37228
+ var node_3 = sibling(node_1, 2);
37229
+ var consequent_1 = ($$anchor) => {
37230
+ var div_5 = root();
37231
+ var div_6 = child(div_5);
37232
+ var text_1 = only_child(div_6, true);
37233
+ var node_4 = sibling(div_6, 2);
37234
+ {
37235
+ let $0 = /* @__PURE__ */ user_derived(() => get$1(m).prompt || "");
37236
+ let $1 = /* @__PURE__ */ user_derived(() => get$1(config).prompt?.label);
37237
+ EditableHtml(node_4, {
37238
+ get markup() {
37239
+ return get$1($0);
37240
+ },
37241
+ onChange: onPromptChange,
37242
+ placeholder: "Enter a prompt for the Venn classification question...",
37243
+ get ariaLabel() {
37244
+ return get$1($1);
37245
+ }
37246
+ });
37247
+ }
37248
+ reset$1(div_5);
37249
+ template_effect(() => set_text(text_1, get$1(config).prompt?.label));
37250
+ append($$anchor, div_5);
37251
+ };
37252
+ if_block(node_3, ($$render) => {
37253
+ if (get$1(m).promptEnabled !== false) $$render(consequent_1);
37254
+ });
37255
+ var div_7 = sibling(node_3, 2);
37256
+ var div_8 = sibling(child(div_7), 4);
37257
+ each(div_8, 21, () => get$1(m).circles, index, ($$anchor, circle, idx) => {
37258
+ var label_1 = root_1();
37259
+ var span = child(label_1);
37260
+ span.textContent = `Circle ${idx + 1} label`;
37261
+ var input = sibling(span, 2);
37262
+ remove_input_defaults(input);
37263
+ reset$1(label_1);
37264
+ template_effect(() => set_value(input, get$1(circle).label));
37265
+ delegated("input", input, (e) => setCircleLabel(idx, e.currentTarget.value));
37266
+ append($$anchor, label_1);
37267
+ });
37268
+ reset$1(div_8);
37269
+ reset$1(div_7);
37270
+ var div_9 = sibling(div_7, 2);
37271
+ var div_10 = child(div_9);
37272
+ var button = sibling(child(div_10), 2);
37273
+ reset$1(div_10);
37274
+ var node_5 = sibling(div_10, 2);
37275
+ var consequent_2 = ($$anchor) => {
37276
+ append($$anchor, root_2());
37277
+ };
37278
+ if_block(node_5, ($$render) => {
37279
+ if (get$1(m).tiles.length === 0) $$render(consequent_2);
37280
+ });
37281
+ var ul = sibling(node_5, 2);
37282
+ each(ul, 21, () => get$1(m).tiles, index, ($$anchor, tile, idx) => {
37283
+ var li = root_4();
37284
+ var div_12 = child(li);
37285
+ var div_13 = child(div_12);
37286
+ var label_2 = child(div_13);
37287
+ var input_1 = sibling(child(label_2), 2);
37288
+ remove_input_defaults(input_1);
37289
+ reset$1(label_2);
37290
+ var label_3 = sibling(label_2, 2);
37291
+ var input_2 = sibling(child(label_3), 2);
37292
+ remove_input_defaults(input_2);
37293
+ reset$1(label_3);
37294
+ var label_4 = sibling(label_3, 2);
37295
+ var input_3 = sibling(child(label_4), 2);
37296
+ remove_input_defaults(input_3);
37297
+ reset$1(label_4);
37298
+ var label_5 = sibling(label_4, 2);
37299
+ var input_4 = sibling(child(label_5), 2);
37300
+ remove_input_defaults(input_4);
37301
+ reset$1(label_5);
37302
+ var node_6 = sibling(label_5, 2);
37303
+ var consequent_3 = ($$anchor) => {
37304
+ var div_14 = root_3();
37305
+ delegated("click", only_child(div_14), () => clearTileImage(idx));
37306
+ append($$anchor, div_14);
37307
+ };
37308
+ var d = /* @__PURE__ */ user_derived(() => (get$1(tile).imageUrl ?? "").trim());
37309
+ if_block(node_6, ($$render) => {
37310
+ if (get$1(d)) $$render(consequent_3);
37311
+ });
37312
+ reset$1(div_13);
37313
+ var div_15 = sibling(div_13, 2);
37314
+ var button_2 = child(div_15);
37315
+ button_2.disabled = idx === 0;
37316
+ var button_3 = sibling(button_2, 2);
37317
+ var button_4 = sibling(button_3, 2);
37318
+ reset$1(div_15);
37319
+ reset$1(div_12);
37320
+ var div_16 = sibling(div_12, 2);
37321
+ RegionPicker(sibling(child(div_16), 2), {
37322
+ get circles() {
37323
+ return get$1(m).circles;
37324
+ },
37325
+ get regionLabels() {
37326
+ return get$1(m).regionLabels;
37327
+ },
37328
+ get value() {
37329
+ return get$1(tile).correctRegion;
37330
+ },
37331
+ onchange: (region) => setTileRegion(idx, region)
37332
+ });
37333
+ reset$1(div_16);
37334
+ reset$1(li);
37335
+ template_effect(() => {
37336
+ set_value(input_1, get$1(tile).id);
37337
+ set_value(input_2, get$1(tile).label);
37338
+ set_value(input_3, get$1(tile).imageUrl ?? "");
37339
+ set_value(input_4, get$1(tile).imageAlt ?? "");
37340
+ button_3.disabled = idx === get$1(m).tiles.length - 1;
37341
+ });
37342
+ delegated("input", input_1, (e) => setTileId(idx, e.currentTarget.value));
37343
+ delegated("input", input_2, (e) => setTileLabel(idx, e.currentTarget.value));
37344
+ delegated("input", input_3, (e) => setTileImageUrl(idx, e.currentTarget.value));
37345
+ delegated("input", input_4, (e) => setTileImageAlt(idx, e.currentTarget.value));
37346
+ delegated("click", button_2, () => moveTile(idx, -1));
37347
+ delegated("click", button_3, () => moveTile(idx, 1));
37348
+ delegated("click", button_4, () => removeTile(idx));
37349
+ append($$anchor, li);
37350
+ });
37351
+ reset$1(ul);
37352
+ reset$1(div_9);
37353
+ var details = sibling(div_9, 2);
37354
+ each(sibling(child(details), 4), 17, () => get$1(regions), (region) => regionKey(region), ($$anchor, region) => {
37355
+ const key = /* @__PURE__ */ user_derived(() => regionKey(get$1(region)));
37356
+ const placeholder = /* @__PURE__ */ user_derived(() => composeRegionLabel(get$1(m).circles || [], get$1(region)));
37357
+ var label_6 = root_5();
37358
+ var span_1 = child(label_6);
37359
+ var text_2 = only_child(span_1, true);
37360
+ var input_5 = sibling(span_1, 2);
37361
+ remove_input_defaults(input_5);
37362
+ reset$1(label_6);
37363
+ template_effect(() => {
37364
+ set_text(text_2, get$1(key) || "(outside)");
37365
+ set_attribute(input_5, "placeholder", get$1(placeholder));
37366
+ set_value(input_5, get$1(m).regionLabels?.[get$1(key)] ?? "");
37367
+ });
37368
+ delegated("input", input_5, (e) => setRegionLabelOverride(get$1(key), e.currentTarget.value));
37369
+ append($$anchor, label_6);
37370
+ });
37371
+ reset$1(details);
37372
+ reset$1(div_2);
37373
+ var button_5 = sibling(div_2, 2);
37374
+ set_attribute(button_5, "aria-valuemin", MIN_EDITOR_W);
37375
+ var div_17 = sibling(button_5, 2);
37376
+ var div_18 = sibling(child(div_17), 4);
37377
+ var div_19 = child(div_18);
37378
+ var text_3 = sibling(child(div_19));
37379
+ reset$1(div_19);
37380
+ var div_20 = sibling(div_19, 2);
37381
+ var text_4 = sibling(child(div_20));
37382
+ reset$1(div_20);
37383
+ var div_21 = sibling(div_20, 2);
37384
+ var text_5 = sibling(child(div_21));
37385
+ reset$1(div_21);
37386
+ reset$1(div_18);
37387
+ var node_9 = sibling(div_18, 2);
37388
+ var consequent_4 = ($$anchor) => {
37389
+ var div_22 = root_6();
37390
+ VennClassification(child(div_22), {
37391
+ get model() {
37392
+ return get$1(previewModel);
37393
+ },
37394
+ get session() {
37395
+ return get$1(previewSession);
37396
+ }
37397
+ });
37398
+ reset$1(div_22);
37399
+ append($$anchor, div_22);
37400
+ };
37401
+ var consequent_5 = ($$anchor) => {
37402
+ append($$anchor, root_7());
37403
+ };
37404
+ var alternate = ($$anchor) => {
37405
+ append($$anchor, root_8());
37406
+ };
37407
+ if_block(node_9, ($$render) => {
37408
+ if (get$1(m).tiles.length > 0 && get$1(m).circles?.length === 2) $$render(consequent_4);
37409
+ else if (get$1(m).tiles.length === 0) $$render(consequent_5, 1);
37410
+ else $$render(alternate, -1);
37411
+ });
37412
+ var node_11 = sibling(node_9, 2);
37413
+ var consequent_7 = ($$anchor) => {
37414
+ var fragment_1 = root_11();
37415
+ var ol = sibling(first_child(fragment_1), 2);
37416
+ each(ol, 21, () => get$1(m).tiles, index, ($$anchor, tile) => {
37417
+ var li_1 = root_10();
37418
+ var span_2 = child(li_1);
37419
+ var node_12 = child(span_2);
37420
+ var consequent_6 = ($$anchor) => {
37421
+ var img = root_9();
37422
+ template_effect(() => set_attribute(img, "src", get$1(tile).imageUrl));
37423
+ append($$anchor, img);
37424
+ };
37425
+ var d_1 = /* @__PURE__ */ user_derived(() => (get$1(tile).imageUrl ?? "").trim());
37426
+ if_block(node_12, ($$render) => {
37427
+ if (get$1(d_1)) $$render(consequent_6);
37428
+ });
37429
+ var text_6 = sibling(node_12);
37430
+ reset$1(span_2);
37431
+ var text_7 = only_child(sibling(span_2, 4), true);
37432
+ reset$1(li_1);
37433
+ template_effect(($0, $1) => {
37434
+ set_text(text_6, ` ${$0 ?? ""}`);
37435
+ set_text(text_7, $1);
37436
+ }, [() => stripHtml(get$1(tile).label) || (get$1(tile).imageAlt ?? "").trim() || get$1(tile).id, () => getRegionLabel(get$1(m), get$1(tile).correctRegion)]);
37437
+ append($$anchor, li_1);
37438
+ });
37439
+ reset$1(ol);
37440
+ append($$anchor, fragment_1);
37441
+ };
37442
+ if_block(node_11, ($$render) => {
37443
+ if (get$1(m).tiles.length > 0) $$render(consequent_7);
37444
+ });
37445
+ reset$1(div_17);
37446
+ reset$1(div_1);
37447
+ bind_this(div_1, ($$value) => set(authorShellEl, $$value), () => get$1(authorShellEl));
37448
+ template_effect(($0, $1) => {
37449
+ styles = set_style(div_2, "", styles, { width: get$1(editorColumnWidth) });
37450
+ set_attribute(button_5, "aria-valuemax", get$1(shellWidth) > 0 ? get$1(shellWidth) - MIN_PREVIEW_W - SPLITTER_W : 360);
37451
+ set_attribute(button_5, "aria-valuenow", $0);
37452
+ set_text(text_3, ` ${$1 ?? ""}`);
37453
+ set_text(text_4, ` ${get$1(m).scoringPolicy === "allOrNothing" ? "All or nothing" : "Partial per tile"}`);
37454
+ set_text(text_5, ` ${get$1(m).tiles.length ?? ""}`);
37455
+ }, [() => get$1(editorWidthPx) ?? (get$1(shellWidth) > 0 ? Math.floor((get$1(shellWidth) - SPLITTER_W) / 2) : MIN_EDITOR_W), () => get$1(m).circles.map((c) => c.label).join(", ")]);
37456
+ delegated("click", button, addTile);
37457
+ delegated("pointerdown", button_5, onSplitPointerDown);
37458
+ delegated("keydown", button_5, onSplitKeyDown);
37459
+ bind_element_size(div_1, "clientWidth", ($$value) => set(shellWidth, $$value));
37460
+ append($$anchor, div_1);
37285
37461
  },
37286
- get session() {
37287
- return get$1(previewSession);
37462
+ $$slots: {
37463
+ settings: true,
37464
+ default: true
37288
37465
  }
37289
37466
  });
37290
- reset$1(div_20);
37291
- append($$anchor, div_20);
37292
- };
37293
- var consequent_4 = ($$anchor) => {
37294
- append($$anchor, root_6());
37295
- };
37296
- var alternate = ($$anchor) => {
37297
- append($$anchor, root_7());
37298
- };
37299
- if_block(node_6, ($$render) => {
37300
- if (get$1(m).tiles.length > 0 && get$1(m).circles?.length === 2) $$render(consequent_3);
37301
- else if (get$1(m).tiles.length === 0) $$render(consequent_4, 1);
37302
- else $$render(alternate, -1);
37303
- });
37304
- var node_8 = sibling(node_6, 2);
37305
- var consequent_6 = ($$anchor) => {
37306
- var fragment_1 = root_10();
37307
- var ol = sibling(first_child(fragment_1), 2);
37308
- each(ol, 21, () => get$1(m).tiles, index, ($$anchor, tile) => {
37309
- var li_1 = root_9();
37310
- var span_2 = child(li_1);
37311
- var node_9 = child(span_2);
37312
- var consequent_5 = ($$anchor) => {
37313
- var img = root_8();
37314
- template_effect(() => set_attribute(img, "src", get$1(tile).imageUrl));
37315
- append($$anchor, img);
37316
- };
37317
- var d_1 = /* @__PURE__ */ user_derived(() => (get$1(tile).imageUrl ?? "").trim());
37318
- if_block(node_9, ($$render) => {
37319
- if (get$1(d_1)) $$render(consequent_5);
37320
- });
37321
- var text_4 = sibling(node_9);
37322
- reset$1(span_2);
37323
- var text_5 = only_child(sibling(span_2, 4), true);
37324
- reset$1(li_1);
37325
- template_effect(($0, $1) => {
37326
- set_text(text_4, ` ${$0 ?? ""}`);
37327
- set_text(text_5, $1);
37328
- }, [() => stripHtml(get$1(tile).label) || (get$1(tile).imageAlt ?? "").trim() || get$1(tile).id, () => getRegionLabel(get$1(m), get$1(tile).correctRegion)]);
37329
- append($$anchor, li_1);
37330
- });
37331
- reset$1(ol);
37332
- append($$anchor, fragment_1);
37333
- };
37334
- if_block(node_8, ($$render) => {
37335
- if (get$1(m).tiles.length > 0) $$render(consequent_6);
37336
- });
37337
- reset$1(div_15);
37338
- reset$1(div_1);
37339
- bind_this(div_1, ($$value) => set(authorShellEl, $$value), () => get$1(authorShellEl));
37467
+ }
37340
37468
  reset$1(div);
37341
- template_effect(($0, $1) => {
37342
- styles = set_style(div_2, "", styles, { width: get$1(editorColumnWidth) });
37343
- set_checked(input, get$1(m).promptEnabled !== false);
37344
- set_checked(input_6, get$1(m).scoringPolicy !== "allOrNothing");
37345
- set_checked(input_7, get$1(m).scoringPolicy === "allOrNothing");
37346
- set_attribute(button_5, "aria-valuemax", get$1(shellWidth) > 0 ? get$1(shellWidth) - MIN_PREVIEW_W - SPLITTER_W : 360);
37347
- set_attribute(button_5, "aria-valuenow", $0);
37348
- set_text(text_1, ` ${$1 ?? ""}`);
37349
- set_text(text_2, ` ${get$1(m).scoringPolicy === "allOrNothing" ? "All or nothing" : "Partial per tile"}`);
37350
- set_text(text_3, ` ${get$1(m).tiles.length ?? ""}`);
37351
- }, [() => get$1(editorWidthPx) ?? (get$1(shellWidth) > 0 ? Math.floor((get$1(shellWidth) - SPLITTER_W) / 2) : MIN_EDITOR_W), () => get$1(m).circles.map((c) => c.label).join(", ")]);
37352
- delegated("change", input, (e) => setPromptEnabled(e.currentTarget.checked));
37353
- delegated("click", button, addTile);
37354
- delegated("change", input_6, () => setScoringPolicy("partialPerTile"));
37355
- delegated("change", input_7, () => setScoringPolicy("allOrNothing"));
37356
- delegated("pointerdown", button_5, onSplitPointerDown);
37357
- delegated("keydown", button_5, onSplitKeyDown);
37358
- bind_element_size(div_1, "clientWidth", ($$value) => set(shellWidth, $$value));
37359
37469
  append($$anchor, div);
37360
37470
  return pop($$exports);
37361
37471
  }
37362
37472
  delegate([
37363
- "change",
37364
37473
  "input",
37365
37474
  "click",
37366
37475
  "pointerdown",
@@ -37368,47 +37477,12 @@ delegate([
37368
37477
  ]);
37369
37478
  create_custom_element(Author, {
37370
37479
  model: { type: "Object" },
37371
- onChange: {}
37480
+ configuration: { type: "Object" }
37372
37481
  }, [], []);
37373
37482
  //#endregion
37374
37483
  //#region src/author/index.ts
37375
- var SvelteElementClass = Author.element;
37376
- var VennClassificationAuthor = class extends SvelteElementClass {
37377
- constructor(..._args) {
37378
- super(..._args);
37379
- _defineProperty(this, "_model", null);
37380
- _defineProperty(this, "_onChange", null);
37381
- _defineProperty(
37382
- this,
37383
- /**
37384
- * The component reports each edit here. The host keeps the edited model,
37385
- * renders from it, and announces it as `model.updated`, which bubbles to
37386
- * the listener an authoring player registers at its root.
37387
- */
37388
- "onModelChange",
37389
- (update) => {
37390
- this._model = update;
37391
- super.model = update;
37392
- this._onChange?.(update);
37393
- this.dispatchEvent(new e$3(update, false));
37394
- }
37395
- );
37396
- }
37397
- set model(m) {
37398
- this._model = m;
37399
- super.model = m;
37400
- }
37401
- get model() {
37402
- return this._model;
37403
- }
37404
- set onChange(fn) {
37405
- this._onChange = fn;
37406
- }
37407
- get onChange() {
37408
- return this._onChange || (() => {});
37409
- }
37410
- };
37484
+ var author_default = Author.element;
37411
37485
  //#endregion
37412
- export { VennClassificationAuthor as default };
37486
+ export { author_default as default };
37413
37487
 
37414
37488
  //# sourceMappingURL=index.js.map