coursecode 0.1.49 → 0.1.51

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.
@@ -203,13 +203,10 @@ function resolveSlideId(contentWindow, slideIdOrIndex) {
203
203
  // =============================================================================
204
204
 
205
205
  function doReset() {
206
- // Viewer previews share an origin between the stub player and course iframe.
207
- // Match the local /__reset route by clearing course/framework progress too.
208
- let skipGating = null;
209
- try { skipGating = localStorage.getItem('coursecode-skipGating'); } catch { /* ignore */ }
210
- try { localStorage.clear(); } catch { /* ignore */ }
211
- if (skipGating !== null) {
212
- try { localStorage.setItem('coursecode-skipGating', skipGating); } catch { /* ignore */ }
206
+ // Static/cloud export: clear LMS localStorage and reload (no server route)
207
+ const storageKey = config.storageKey;
208
+ if (storageKey) {
209
+ try { localStorage.removeItem(storageKey); } catch { /* ignore */ }
213
210
  }
214
211
  window.location.reload();
215
212
  }
@@ -166,80 +166,3 @@
166
166
  background: rgba(139, 48, 32, 0.2);
167
167
  color: var(--color-danger-soft);
168
168
  }
169
-
170
- /* Confirm dialog (reusable) */
171
- #stub-player-confirm-dialog {
172
- position: fixed;
173
- inset: 0;
174
- background: rgba(0, 0, 0, 0.7);
175
- display: none;
176
- align-items: center;
177
- justify-content: center;
178
- z-index: 9999999;
179
- }
180
-
181
- #stub-player-confirm-dialog.visible {
182
- display: flex;
183
- }
184
-
185
- .confirm-content {
186
- background: var(--color-primary);
187
- padding: 24px;
188
- border-radius: 12px;
189
- max-width: 400px;
190
- text-align: center;
191
- }
192
-
193
- .confirm-content h3 {
194
- margin-bottom: 12px;
195
- color: var(--color-white);
196
- }
197
-
198
- .confirm-content p {
199
- color: var(--color-gray-550);
200
- margin-bottom: 20px;
201
- font-size: 14px;
202
- line-height: 1.5;
203
- }
204
-
205
- .confirm-actions {
206
- display: flex;
207
- gap: 12px;
208
- justify-content: center;
209
- }
210
-
211
- .confirm-content button {
212
- padding: 10px 20px;
213
- border-radius: 6px;
214
- border: none;
215
- cursor: pointer;
216
- font-size: 14px;
217
- font-weight: 500;
218
- }
219
-
220
- .confirm-content .btn-primary {
221
- background: var(--color-info);
222
- color: var(--color-white);
223
- }
224
-
225
- .confirm-content .btn-primary:hover {
226
- background: var(--color-info);
227
- }
228
-
229
- .confirm-content .btn-danger {
230
- background: color-mix(in srgb, var(--color-danger) 55%, var(--color-black));
231
- color: var(--color-white);
232
- }
233
-
234
- .confirm-content .btn-danger:hover {
235
- background: var(--color-danger);
236
- }
237
-
238
- .confirm-content .btn-secondary {
239
- background: var(--color-primary-panel);
240
- color: var(--color-white);
241
- }
242
-
243
- .confirm-content .btn-secondary:hover {
244
- background: var(--color-info);
245
- }
@@ -246,6 +246,83 @@
246
246
  background: var(--color-primary-panel);
247
247
  }
248
248
 
249
+ /* Confirm dialog (reusable header/menu action dialog) */
250
+ #stub-player-confirm-dialog {
251
+ position: fixed;
252
+ inset: 0;
253
+ background: rgba(0, 0, 0, 0.7);
254
+ display: none;
255
+ align-items: center;
256
+ justify-content: center;
257
+ z-index: 9999999;
258
+ }
259
+
260
+ #stub-player-confirm-dialog.visible {
261
+ display: flex;
262
+ }
263
+
264
+ .confirm-content {
265
+ background: var(--color-primary);
266
+ padding: 24px;
267
+ border-radius: 12px;
268
+ max-width: 400px;
269
+ text-align: center;
270
+ }
271
+
272
+ .confirm-content h3 {
273
+ margin-bottom: 12px;
274
+ color: var(--color-white);
275
+ }
276
+
277
+ .confirm-content p {
278
+ color: var(--color-gray-550);
279
+ margin-bottom: 20px;
280
+ font-size: 14px;
281
+ line-height: 1.5;
282
+ }
283
+
284
+ .confirm-actions {
285
+ display: flex;
286
+ gap: 12px;
287
+ justify-content: center;
288
+ }
289
+
290
+ .confirm-content button {
291
+ padding: 10px 20px;
292
+ border-radius: 6px;
293
+ border: none;
294
+ cursor: pointer;
295
+ font-size: 14px;
296
+ font-weight: 500;
297
+ }
298
+
299
+ .confirm-content .btn-primary {
300
+ background: var(--color-info);
301
+ color: var(--color-white);
302
+ }
303
+
304
+ .confirm-content .btn-primary:hover {
305
+ background: var(--color-info);
306
+ }
307
+
308
+ .confirm-content .btn-danger {
309
+ background: color-mix(in srgb, var(--color-danger) 55%, var(--color-black));
310
+ color: var(--color-white);
311
+ }
312
+
313
+ .confirm-content .btn-danger:hover {
314
+ background: var(--color-danger);
315
+ }
316
+
317
+ .confirm-content .btn-secondary {
318
+ background: var(--color-primary-panel);
319
+ color: var(--color-white);
320
+ }
321
+
322
+ .confirm-content .btn-secondary:hover {
323
+ background: var(--color-info);
324
+ }
325
+
249
326
  #stub-player-header .more-menu .menu-divider {
250
327
  height: 1px;
251
328
  margin: 6px 2px;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "coursecode",
3
- "version": "0.1.49",
3
+ "version": "0.1.51",
4
4
  "description": "Multi-format course authoring framework with CLI tools (SCORM 2004, SCORM 1.2, cmi5, LTI 1.3)",
5
5
  "type": "module",
6
6
  "bin": {