@pie-players/pie-tool-answer-eliminator 0.2.8 → 0.2.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.
- package/answer-eliminator-core.ts +5 -35
- package/dist/answer-eliminator-core.d.ts +1 -8
- package/dist/answer-eliminator-core.d.ts.map +1 -1
- package/dist/strategies/mask-strategy.d.ts +1 -0
- package/dist/strategies/mask-strategy.d.ts.map +1 -1
- package/dist/strategies/strikethrough-strategy.d.ts +1 -0
- package/dist/strategies/strikethrough-strategy.d.ts.map +1 -1
- package/dist/tool-answer-eliminator.js +2405 -1313
- package/dist/vite.config.d.ts.map +1 -1
- package/package.json +15 -6
- package/strategies/mask-strategy.ts +6 -3
- package/strategies/strikethrough-strategy.ts +6 -3
- package/tool-answer-eliminator.svelte +77 -104
- package/dist/tool-answer-eliminator.js.map +0 -1
|
@@ -14,6 +14,7 @@ export class AnswerEliminatorCore {
|
|
|
14
14
|
private eliminatedChoices = new Set<string>(); // Set<choiceId> for current element
|
|
15
15
|
private choiceElements = new Map<string, HTMLElement>(); // choiceId -> element
|
|
16
16
|
private choiceButtons = new Map<string, HTMLButtonElement>(); // choiceId -> button
|
|
17
|
+
private choiceAdapters = new Map<string, ChoiceAdapter>(); // choiceId -> adapter
|
|
17
18
|
private buttonAlignment: "left" | "right" | "inline" = "right";
|
|
18
19
|
private shouldRestoreState: boolean = true; // Whether to restore eliminations from state storage
|
|
19
20
|
|
|
@@ -73,6 +74,7 @@ export class AnswerEliminatorCore {
|
|
|
73
74
|
|
|
74
75
|
// Track element
|
|
75
76
|
this.choiceElements.set(choiceId, choice);
|
|
77
|
+
this.choiceAdapters.set(choiceId, adapter);
|
|
76
78
|
|
|
77
79
|
// Create elimination toggle button
|
|
78
80
|
const button = this.createToggleButton(choice, adapter);
|
|
@@ -178,9 +180,6 @@ export class AnswerEliminatorCore {
|
|
|
178
180
|
|
|
179
181
|
// Save state
|
|
180
182
|
this.saveState();
|
|
181
|
-
|
|
182
|
-
// Emit state change event
|
|
183
|
-
this.emitStateChange();
|
|
184
183
|
}
|
|
185
184
|
|
|
186
185
|
/**
|
|
@@ -256,7 +255,6 @@ export class AnswerEliminatorCore {
|
|
|
256
255
|
// Clear state
|
|
257
256
|
this.eliminatedChoices.clear();
|
|
258
257
|
this.saveState();
|
|
259
|
-
this.emitStateChange();
|
|
260
258
|
}
|
|
261
259
|
|
|
262
260
|
/**
|
|
@@ -315,8 +313,8 @@ export class AnswerEliminatorCore {
|
|
|
315
313
|
const choice = this.choiceElements.get(choiceId);
|
|
316
314
|
if (!choice) continue;
|
|
317
315
|
|
|
318
|
-
//
|
|
319
|
-
const adapter = this.
|
|
316
|
+
// Use the adapter captured during initialization
|
|
317
|
+
const adapter = this.choiceAdapters.get(choiceId);
|
|
320
318
|
if (!adapter) continue;
|
|
321
319
|
|
|
322
320
|
// Re-eliminate without saving (already in state)
|
|
@@ -344,22 +342,6 @@ export class AnswerEliminatorCore {
|
|
|
344
342
|
}
|
|
345
343
|
}
|
|
346
344
|
|
|
347
|
-
/**
|
|
348
|
-
* Find adapter for a choice element
|
|
349
|
-
*/
|
|
350
|
-
private findAdapterForChoice(choice: HTMLElement): ChoiceAdapter | null {
|
|
351
|
-
// Walk up to find PIE element root
|
|
352
|
-
let element: HTMLElement | null = choice;
|
|
353
|
-
|
|
354
|
-
while (element && element !== document.body) {
|
|
355
|
-
const adapter = this.registry.findAdapter(element);
|
|
356
|
-
if (adapter) return adapter;
|
|
357
|
-
element = element.parentElement;
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
return null;
|
|
361
|
-
}
|
|
362
|
-
|
|
363
345
|
/**
|
|
364
346
|
* Cleanup buttons from previous element
|
|
365
347
|
*/
|
|
@@ -370,6 +352,7 @@ export class AnswerEliminatorCore {
|
|
|
370
352
|
|
|
371
353
|
this.choiceButtons.clear();
|
|
372
354
|
this.choiceElements.clear();
|
|
355
|
+
this.choiceAdapters.clear();
|
|
373
356
|
}
|
|
374
357
|
|
|
375
358
|
/**
|
|
@@ -441,19 +424,6 @@ export class AnswerEliminatorCore {
|
|
|
441
424
|
this.strategy.clearAll();
|
|
442
425
|
}
|
|
443
426
|
|
|
444
|
-
/**
|
|
445
|
-
* Emit state change event for UI updates
|
|
446
|
-
*/
|
|
447
|
-
private emitStateChange(): void {
|
|
448
|
-
const event = new CustomEvent("answer-eliminator-state-change", {
|
|
449
|
-
detail: {
|
|
450
|
-
eliminatedCount: this.getEliminatedCount(),
|
|
451
|
-
},
|
|
452
|
-
bubbles: true,
|
|
453
|
-
});
|
|
454
|
-
document.dispatchEvent(event);
|
|
455
|
-
}
|
|
456
|
-
|
|
457
427
|
/**
|
|
458
428
|
* Destroy and cleanup
|
|
459
429
|
*/
|
|
@@ -9,6 +9,7 @@ export declare class AnswerEliminatorCore {
|
|
|
9
9
|
private eliminatedChoices;
|
|
10
10
|
private choiceElements;
|
|
11
11
|
private choiceButtons;
|
|
12
|
+
private choiceAdapters;
|
|
12
13
|
private buttonAlignment;
|
|
13
14
|
private shouldRestoreState;
|
|
14
15
|
private storeIntegration;
|
|
@@ -60,10 +61,6 @@ export declare class AnswerEliminatorCore {
|
|
|
60
61
|
* Restore state from ElementToolStateStore
|
|
61
62
|
*/
|
|
62
63
|
private restoreState;
|
|
63
|
-
/**
|
|
64
|
-
* Find adapter for a choice element
|
|
65
|
-
*/
|
|
66
|
-
private findAdapterForChoice;
|
|
67
64
|
/**
|
|
68
65
|
* Cleanup buttons from previous element
|
|
69
66
|
*/
|
|
@@ -86,10 +83,6 @@ export declare class AnswerEliminatorCore {
|
|
|
86
83
|
* Note: State is preserved in localStorage for when tool is turned back on
|
|
87
84
|
*/
|
|
88
85
|
cleanup(): void;
|
|
89
|
-
/**
|
|
90
|
-
* Emit state change event for UI updates
|
|
91
|
-
*/
|
|
92
|
-
private emitStateChange;
|
|
93
86
|
/**
|
|
94
87
|
* Destroy and cleanup
|
|
95
88
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"answer-eliminator-core.d.ts","sourceRoot":"","sources":["../answer-eliminator-core.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAKlE;;;GAGG;AACH,qBAAa,oBAAoB;IAChC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,eAAe,CAAwC;IAC/D,OAAO,CAAC,kBAAkB,CAAiB;IAG3C,OAAO,CAAC,gBAAgB,CAGR;gBAGf,YAAY,GAAE,eAAe,GAAG,MAAM,GAAG,MAAwB,EACjE,eAAe,GAAE,MAAM,GAAG,OAAO,GAAG,QAAkB;IAQvD,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,qBAAqB,CAAC,YAAY,EAAE,WAAW,GAAG,IAAI;IAmBtD;;OAEG;IACH,OAAO,CAAC,gBAAgB;
|
|
1
|
+
{"version":3,"file":"answer-eliminator-core.d.ts","sourceRoot":"","sources":["../answer-eliminator-core.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAKlE;;;GAGG;AACH,qBAAa,oBAAoB;IAChC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,eAAe,CAAwC;IAC/D,OAAO,CAAC,kBAAkB,CAAiB;IAG3C,OAAO,CAAC,gBAAgB,CAGR;gBAGf,YAAY,GAAE,eAAe,GAAG,MAAM,GAAG,MAAwB,EACjE,eAAe,GAAE,MAAM,GAAG,OAAO,GAAG,QAAkB;IAQvD,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,qBAAqB,CAAC,YAAY,EAAE,WAAW,GAAG,IAAI;IAmBtD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4D1B;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAyBpE;;OAEG;IACH,OAAO,CAAC,eAAe;IA+BvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAsBrB;;OAEG;IACH,QAAQ,IAAI,IAAI;IAahB;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAI5B;;;;OAIG;IACH,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAI9D;;OAEG;IACH,OAAO,CAAC,SAAS;IAcjB;;OAEG;IACH,OAAO,CAAC,YAAY;IAiDpB;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmC5B;;OAEG;IACH,sBAAsB,IAAI,IAAI;IAI9B;;OAEG;IACH,uBAAuB,IAAI,IAAI;IAI/B;;;;OAIG;IACH,OAAO,IAAI,IAAI;IAYf;;OAEG;IACH,OAAO,IAAI,IAAI;CAIf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mask-strategy.d.ts","sourceRoot":"","sources":["../../strategies/mask-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE;;;GAGG;AACH,qBAAa,YAAa,YAAW,mBAAmB;IACvD,QAAQ,CAAC,IAAI,UAAU;IAEvB,OAAO,CAAC,UAAU,CAAgC;IAClD,OAAO,CAAC,MAAM,CAA4B;
|
|
1
|
+
{"version":3,"file":"mask-strategy.d.ts","sourceRoot":"","sources":["../../strategies/mask-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE;;;GAGG;AACH,qBAAa,YAAa,YAAW,mBAAmB;IACvD,QAAQ,CAAC,IAAI,UAAU;IAEvB,OAAO,CAAC,UAAU,CAAgC;IAClD,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,kBAAkB,CAAkC;IAE5D,UAAU,IAAI,IAAI;IAIlB,OAAO,IAAI,IAAI;IAKf,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAkB3C,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAqB9B,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIvC,QAAQ,IAAI,IAAI;IAOhB,gBAAgB,IAAI,MAAM,EAAE;IAI5B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,SAAS;IAmBjB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,cAAc;CAatB"}
|
|
@@ -10,6 +10,7 @@ export declare class StrikethroughStrategy implements EliminationStrategy {
|
|
|
10
10
|
readonly name = "strikethrough";
|
|
11
11
|
private highlights;
|
|
12
12
|
private ranges;
|
|
13
|
+
private fallbackContainers;
|
|
13
14
|
initialize(): void;
|
|
14
15
|
destroy(): void;
|
|
15
16
|
apply(choiceId: string, range: Range): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strikethrough-strategy.d.ts","sourceRoot":"","sources":["../../strategies/strikethrough-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE;;;;;;GAMG;AACH,qBAAa,qBAAsB,YAAW,mBAAmB;IAChE,QAAQ,CAAC,IAAI,mBAAmB;IAEhC,OAAO,CAAC,UAAU,CAAgC;IAClD,OAAO,CAAC,MAAM,CAA4B;
|
|
1
|
+
{"version":3,"file":"strikethrough-strategy.d.ts","sourceRoot":"","sources":["../../strategies/strikethrough-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE;;;;;;GAMG;AACH,qBAAa,qBAAsB,YAAW,mBAAmB;IAChE,QAAQ,CAAC,IAAI,mBAAmB;IAEhC,OAAO,CAAC,UAAU,CAAgC;IAClD,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,kBAAkB,CAAkC;IAE5D,UAAU,IAAI,IAAI;IAWlB,OAAO,IAAI,IAAI;IAKf,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAuB3C,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAuB9B,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIvC,QAAQ,IAAI,IAAI;IAQhB,gBAAgB,IAAI,MAAM,EAAE;IAI5B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,SAAS;IAkCjB,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,cAAc;CActB"}
|