@pie-players/pie-players-shared 0.3.60 → 0.3.62

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 (147) hide show
  1. package/dist/config/profile.js +0 -1
  2. package/dist/i18n/index.js +0 -1
  3. package/dist/i18n/loader.js +0 -1
  4. package/dist/i18n/simple-i18n.js +0 -1
  5. package/dist/i18n/types.js +0 -1
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.js +2 -1
  8. package/dist/instrumentation/debug-panel-stream.js +0 -1
  9. package/dist/instrumentation/index.js +0 -1
  10. package/dist/instrumentation/provider-guards.js +0 -1
  11. package/dist/instrumentation/providers/BaseInstrumentationProvider.js +0 -1
  12. package/dist/instrumentation/providers/CompositeInstrumentationProvider.js +0 -1
  13. package/dist/instrumentation/providers/ConsoleInstrumentationProvider.js +0 -1
  14. package/dist/instrumentation/providers/DebugPanelInstrumentationProvider.js +0 -1
  15. package/dist/instrumentation/providers/NewRelicInstrumentationProvider.js +0 -1
  16. package/dist/instrumentation/providers/index.js +0 -1
  17. package/dist/instrumentation/types.js +0 -1
  18. package/dist/loader-config.js +0 -1
  19. package/dist/loaders/ElementLoader.js +0 -1
  20. package/dist/loaders/element-loader-types.js +0 -1
  21. package/dist/loaders/element-loader.js +0 -1
  22. package/dist/loaders/element-package-policy.js +0 -1
  23. package/dist/loaders/esm-adapter.js +0 -1
  24. package/dist/loaders/iife-adapter.js +0 -1
  25. package/dist/loaders/index.js +0 -1
  26. package/dist/object/index.js +0 -1
  27. package/dist/pie/asset-handler.js +0 -1
  28. package/dist/pie/authoring-tag.js +0 -1
  29. package/dist/pie/authoring.js +0 -1
  30. package/dist/pie/component-context.js +0 -1
  31. package/dist/pie/config.js +0 -1
  32. package/dist/pie/configure-initialization.js +0 -1
  33. package/dist/pie/correct-response-env.js +0 -1
  34. package/dist/pie/custom-element-define.js +0 -1
  35. package/dist/pie/index.js +0 -1
  36. package/dist/pie/initialization.js +0 -1
  37. package/dist/pie/instrumentation-event-bridge.js +0 -1
  38. package/dist/pie/instrumentation-event-map.js +0 -1
  39. package/dist/pie/instrumentation-provider-resolution.js +0 -1
  40. package/dist/pie/item-controller-storage.js +0 -1
  41. package/dist/pie/item-controller.js +0 -1
  42. package/dist/pie/item-session-contract.js +0 -1
  43. package/dist/pie/logger.js +0 -1
  44. package/dist/pie/math-rendering.js +0 -1
  45. package/dist/pie/overrides.js +0 -1
  46. package/dist/pie/player-initializer.js +0 -1
  47. package/dist/pie/registry.js +0 -1
  48. package/dist/pie/resource-monitor.js +0 -1
  49. package/dist/pie/scoring.js +0 -1
  50. package/dist/pie/stage-tracker.js +0 -1
  51. package/dist/pie/stages.js +0 -1
  52. package/dist/pie/tag-names.js +0 -1
  53. package/dist/pie/types.js +0 -1
  54. package/dist/pie/updates.js +0 -1
  55. package/dist/pie/utils.js +0 -1
  56. package/dist/pie/versioned-tag.js +0 -1
  57. package/dist/player-strategy.js +0 -1
  58. package/dist/security/index.js +0 -1
  59. package/dist/security/sanitize-item-markup.d.ts +11 -0
  60. package/dist/security/sanitize-item-markup.js +5 -3
  61. package/dist/security/sanitize-svg-icon.js +0 -1
  62. package/dist/security/validate-style-url.js +0 -1
  63. package/dist/security/wrap-model-rich-content.js +0 -1
  64. package/dist/security/wrap-overwide-images.js +0 -1
  65. package/dist/security/wrap-overwide-tables.js +0 -1
  66. package/dist/server/npm-registry.js +0 -1
  67. package/dist/types/index.js +0 -1
  68. package/dist/ui/content-styles.d.ts +73 -0
  69. package/dist/ui/content-styles.js +204 -0
  70. package/dist/ui/debug-panel-persistence.js +0 -1
  71. package/dist/ui/first-focusable.js +0 -1
  72. package/dist/ui/focus-trap.js +0 -1
  73. package/dist/ui/safe-storage.js +0 -1
  74. package/dist/ui/scope-css.d.ts +56 -0
  75. package/dist/ui/scope-css.js +310 -0
  76. package/dist/ui/zoom-compensation.js +0 -1
  77. package/package.json +9 -5
  78. package/dist/config/profile.js.map +0 -1
  79. package/dist/i18n/index.js.map +0 -1
  80. package/dist/i18n/loader.js.map +0 -1
  81. package/dist/i18n/simple-i18n.js.map +0 -1
  82. package/dist/i18n/types.js.map +0 -1
  83. package/dist/index.js.map +0 -1
  84. package/dist/instrumentation/debug-panel-stream.js.map +0 -1
  85. package/dist/instrumentation/index.js.map +0 -1
  86. package/dist/instrumentation/provider-guards.js.map +0 -1
  87. package/dist/instrumentation/providers/BaseInstrumentationProvider.js.map +0 -1
  88. package/dist/instrumentation/providers/CompositeInstrumentationProvider.js.map +0 -1
  89. package/dist/instrumentation/providers/ConsoleInstrumentationProvider.js.map +0 -1
  90. package/dist/instrumentation/providers/DebugPanelInstrumentationProvider.js.map +0 -1
  91. package/dist/instrumentation/providers/NewRelicInstrumentationProvider.js.map +0 -1
  92. package/dist/instrumentation/providers/index.js.map +0 -1
  93. package/dist/instrumentation/types.js.map +0 -1
  94. package/dist/loader-config.js.map +0 -1
  95. package/dist/loaders/ElementLoader.js.map +0 -1
  96. package/dist/loaders/element-loader-types.js.map +0 -1
  97. package/dist/loaders/element-loader.js.map +0 -1
  98. package/dist/loaders/element-package-policy.js.map +0 -1
  99. package/dist/loaders/esm-adapter.js.map +0 -1
  100. package/dist/loaders/iife-adapter.js.map +0 -1
  101. package/dist/loaders/index.js.map +0 -1
  102. package/dist/object/index.js.map +0 -1
  103. package/dist/pie/asset-handler.js.map +0 -1
  104. package/dist/pie/authoring-tag.js.map +0 -1
  105. package/dist/pie/authoring.js.map +0 -1
  106. package/dist/pie/component-context.js.map +0 -1
  107. package/dist/pie/config.js.map +0 -1
  108. package/dist/pie/configure-initialization.js.map +0 -1
  109. package/dist/pie/correct-response-env.js.map +0 -1
  110. package/dist/pie/custom-element-define.js.map +0 -1
  111. package/dist/pie/index.js.map +0 -1
  112. package/dist/pie/initialization.js.map +0 -1
  113. package/dist/pie/instrumentation-event-bridge.js.map +0 -1
  114. package/dist/pie/instrumentation-event-map.js.map +0 -1
  115. package/dist/pie/instrumentation-provider-resolution.js.map +0 -1
  116. package/dist/pie/item-controller-storage.js.map +0 -1
  117. package/dist/pie/item-controller.js.map +0 -1
  118. package/dist/pie/item-session-contract.js.map +0 -1
  119. package/dist/pie/logger.js.map +0 -1
  120. package/dist/pie/math-rendering.js.map +0 -1
  121. package/dist/pie/overrides.js.map +0 -1
  122. package/dist/pie/player-initializer.js.map +0 -1
  123. package/dist/pie/registry.js.map +0 -1
  124. package/dist/pie/resource-monitor.js.map +0 -1
  125. package/dist/pie/scoring.js.map +0 -1
  126. package/dist/pie/stage-tracker.js.map +0 -1
  127. package/dist/pie/stages.js.map +0 -1
  128. package/dist/pie/tag-names.js.map +0 -1
  129. package/dist/pie/types.js.map +0 -1
  130. package/dist/pie/updates.js.map +0 -1
  131. package/dist/pie/utils.js.map +0 -1
  132. package/dist/pie/versioned-tag.js.map +0 -1
  133. package/dist/player-strategy.js.map +0 -1
  134. package/dist/security/index.js.map +0 -1
  135. package/dist/security/sanitize-item-markup.js.map +0 -1
  136. package/dist/security/sanitize-svg-icon.js.map +0 -1
  137. package/dist/security/validate-style-url.js.map +0 -1
  138. package/dist/security/wrap-model-rich-content.js.map +0 -1
  139. package/dist/security/wrap-overwide-images.js.map +0 -1
  140. package/dist/security/wrap-overwide-tables.js.map +0 -1
  141. package/dist/server/npm-registry.js.map +0 -1
  142. package/dist/types/index.js.map +0 -1
  143. package/dist/ui/debug-panel-persistence.js.map +0 -1
  144. package/dist/ui/first-focusable.js.map +0 -1
  145. package/dist/ui/focus-trap.js.map +0 -1
  146. package/dist/ui/safe-storage.js.map +0 -1
  147. package/dist/ui/zoom-compensation.js.map +0 -1
@@ -24,4 +24,3 @@ export const BUILDER_ORIGIN_URL = (typeof window !== "undefined" && window.PIE_B
24
24
  export const BUILDER_BUNDLE_URL = (typeof window !== "undefined" && window.PIE_BUILDER_BUNDLE_URL) ||
25
25
  readPublicEnv("PUBLIC_BUILDER_BUNDLE_URL") ||
26
26
  DEFAULT_BUILDER_BUNDLE_URL;
27
- //# sourceMappingURL=profile.js.map
@@ -7,4 +7,3 @@
7
7
  */
8
8
  export { BUNDLED_TRANSLATIONS, getAvailableLocales, isRTLLocale, loadTranslations, } from "./loader.js";
9
9
  export { SimpleI18n } from "./simple-i18n.js";
10
- //# sourceMappingURL=index.js.map
@@ -130,4 +130,3 @@ export function getAvailableLocales() {
130
130
  export function isRTLLocale(locale) {
131
131
  return RTL_LOCALES.includes(locale);
132
132
  }
133
- //# sourceMappingURL=loader.js.map
@@ -196,4 +196,3 @@ export class SimpleI18n {
196
196
  return browserLang.split("-")[0];
197
197
  }
198
198
  }
199
- //# sourceMappingURL=simple-i18n.js.map
@@ -5,4 +5,3 @@
5
5
  * Defined in players-shared to avoid circular dependencies.
6
6
  */
7
7
  export {};
8
- //# sourceMappingURL=types.js.map
package/dist/index.d.ts CHANGED
@@ -8,7 +8,9 @@ export * from "./object/index.js";
8
8
  export * from "./pie/index.js";
9
9
  export type { AssessmentEntity, AssessmentItemRef, AssessmentSection, AdvancedItemConfig, ConfigEntity, ConfigResource, Env, ItemConfig, ItemEntity, ItemSession, OutcomeResponse, PassageEntity, PieController, PieContent, PieDefaultModel, PieItemElement, PieModel, QuestionEntity, RubricBlock, TestPart, } from "./types/index.js";
10
10
  export { editorPostFix } from "./types/index.js";
11
+ export * from "./ui/content-styles.js";
11
12
  export * from "./ui/focus-trap.js";
12
13
  export * from "./ui/first-focusable.js";
13
14
  export * from "./ui/debug-panel-persistence.js";
14
15
  export * from "./ui/safe-storage.js";
16
+ export * from "./ui/scope-css.js";
package/dist/index.js CHANGED
@@ -8,8 +8,9 @@ export * from "./object/index.js";
8
8
  // Barrel export for PIE runtime utilities
9
9
  export * from "./pie/index.js";
10
10
  export { editorPostFix } from "./types/index.js";
11
+ export * from "./ui/content-styles.js";
11
12
  export * from "./ui/focus-trap.js";
12
13
  export * from "./ui/first-focusable.js";
13
14
  export * from "./ui/debug-panel-persistence.js";
14
15
  export * from "./ui/safe-storage.js";
15
- //# sourceMappingURL=index.js.map
16
+ export * from "./ui/scope-css.js";
@@ -107,4 +107,3 @@ export function createMetricDebugRecord(args) {
107
107
  : undefined,
108
108
  };
109
109
  }
110
- //# sourceMappingURL=debug-panel-stream.js.map
@@ -33,4 +33,3 @@
33
33
  export * from "./providers/index.js";
34
34
  export { isInstrumentationProvider } from "./provider-guards.js";
35
35
  export { clearBufferedInstrumentationDebugRecords, getBufferedInstrumentationDebugRecords, INSTRUMENTATION_DEBUG_EVENT_NAME, subscribeInstrumentationDebugRecords, } from "./debug-panel-stream.js";
36
- //# sourceMappingURL=index.js.map
@@ -10,4 +10,3 @@ export function isInstrumentationProvider(value) {
10
10
  typeof candidate.destroy === "function" &&
11
11
  typeof candidate.isReady === "function");
12
12
  }
13
- //# sourceMappingURL=provider-guards.js.map
@@ -264,4 +264,3 @@ export class BaseInstrumentationProvider {
264
264
  return attributes;
265
265
  }
266
266
  }
267
- //# sourceMappingURL=BaseInstrumentationProvider.js.map
@@ -79,4 +79,3 @@ export class CompositeInstrumentationProvider {
79
79
  }
80
80
  }
81
81
  }
82
- //# sourceMappingURL=CompositeInstrumentationProvider.js.map
@@ -179,4 +179,3 @@ export class ConsoleInstrumentationProvider extends BaseInstrumentationProvider
179
179
  console.log("Attributes:", attributes);
180
180
  }
181
181
  }
182
- //# sourceMappingURL=ConsoleInstrumentationProvider.js.map
@@ -70,4 +70,3 @@ export class DebugPanelInstrumentationProvider extends BaseInstrumentationProvid
70
70
  });
71
71
  }
72
72
  }
73
- //# sourceMappingURL=DebugPanelInstrumentationProvider.js.map
@@ -131,4 +131,3 @@ export class NewRelicInstrumentationProvider extends BaseInstrumentationProvider
131
131
  }
132
132
  }
133
133
  }
134
- //# sourceMappingURL=NewRelicInstrumentationProvider.js.map
@@ -10,4 +10,3 @@ export { CompositeInstrumentationProvider } from "./CompositeInstrumentationProv
10
10
  export { ConsoleInstrumentationProvider } from "./ConsoleInstrumentationProvider.js";
11
11
  export { DebugPanelInstrumentationProvider } from "./DebugPanelInstrumentationProvider.js";
12
12
  export { NewRelicInstrumentationProvider } from "./NewRelicInstrumentationProvider.js";
13
- //# sourceMappingURL=index.js.map
@@ -6,4 +6,3 @@
6
6
  * to enable clients to use any instrumentation provider.
7
7
  */
8
8
  export {};
9
- //# sourceMappingURL=types.js.map
@@ -14,4 +14,3 @@ export const DEFAULT_LOADER_CONFIG = {
14
14
  resourceRetryDelay: 500,
15
15
  iifeBundleRetry: DEFAULT_IIFE_BUNDLE_RETRY_CONFIG,
16
16
  };
17
- //# sourceMappingURL=loader-config.js.map
@@ -54,4 +54,3 @@ export function aggregateElements(items) {
54
54
  });
55
55
  return elementMap;
56
56
  }
57
- //# sourceMappingURL=ElementLoader.js.map
@@ -23,4 +23,3 @@ export class AdapterFailure extends Error {
23
23
  this.reasons = reasons;
24
24
  }
25
25
  }
26
- //# sourceMappingURL=element-loader-types.js.map
@@ -416,4 +416,3 @@ export const __testing = {
416
416
  resolvedBackendOverrides.clear();
417
417
  },
418
418
  };
419
- //# sourceMappingURL=element-loader.js.map
@@ -65,4 +65,3 @@ export function assertElementPackagesAllowed(elements, policy) {
65
65
  }
66
66
  }
67
67
  }
68
- //# sourceMappingURL=element-package-policy.js.map
@@ -541,4 +541,3 @@ function assertImportMapSupported() {
541
541
  throw new Error('This browser does not support import maps. Use moduleResolution="url" or switch to iife/preloaded strategy.');
542
542
  }
543
543
  }
544
- //# sourceMappingURL=esm-adapter.js.map
@@ -395,4 +395,3 @@ function createEmptyConfigure() {
395
395
  }
396
396
  };
397
397
  }
398
- //# sourceMappingURL=iife-adapter.js.map
@@ -35,4 +35,3 @@ export { assertElementPackagesAllowed, ElementPackagePolicyError, } from "./elem
35
35
  export { AdapterFailure, ElementAssertionError, ElementLoaderError, assertRegistered, ensureRegistered, } from "./element-loader.js";
36
36
  export { BUILT_IN_VIEWS, createEsmBackend, mapEsmViewElements, } from "./esm-adapter.js";
37
37
  export { createIifeBackend, DEFAULT_BUNDLE_HOST } from "./iife-adapter.js";
38
- //# sourceMappingURL=index.js.map
@@ -37,4 +37,3 @@ export const cloneDeep = (value) => {
37
37
  }
38
38
  return copy;
39
39
  };
40
- //# sourceMappingURL=index.js.map
@@ -413,4 +413,3 @@ export function createDefaultSoundDeleteHandler() {
413
413
  done(); // Success
414
414
  };
415
415
  }
416
- //# sourceMappingURL=asset-handler.js.map
@@ -10,4 +10,3 @@ export function transformMarkupForAuthoring(markup, elements) {
10
10
  return result.replace(exactTag, (_match, opening) => `${opening}${elementTag}-config`);
11
11
  }, markup);
12
12
  }
13
- //# sourceMappingURL=authoring-tag.js.map
@@ -198,4 +198,3 @@ export function createAuthoringAssetEventManager(rootElement, handlers, onHandle
198
198
  }
199
199
  : undefined);
200
200
  }
201
- //# sourceMappingURL=authoring.js.map
@@ -27,4 +27,3 @@ export function getCurrentComponentContext() {
27
27
  ? activeComponents[activeComponents.length - 1]
28
28
  : null;
29
29
  }
30
- //# sourceMappingURL=component-context.js.map
@@ -258,4 +258,3 @@ export const makeUniqueTags = (container) => {
258
258
  },
259
259
  };
260
260
  };
261
- //# sourceMappingURL=config.js.map
@@ -28,4 +28,3 @@ export function initializeConfiguresFromLoadedBundle(config, configuration, opti
28
28
  logger.debug("[initializeConfiguresFromLoadedBundle] Initialization complete");
29
29
  return initializedModels;
30
30
  }
31
- //# sourceMappingURL=configure-initialization.js.map
@@ -3,4 +3,3 @@ export const getCorrectResponseEnv = (env) => ({
3
3
  ...env,
4
4
  role: "instructor",
5
5
  });
6
- //# sourceMappingURL=correct-response-env.js.map
@@ -28,4 +28,3 @@ export const defineCustomElementSafely = (tagName, elementConstructor, context =
28
28
  throw error;
29
29
  }
30
30
  };
31
- //# sourceMappingURL=custom-element-define.js.map
package/dist/pie/index.js CHANGED
@@ -44,4 +44,3 @@ export { updatePieElement, updatePieElements, updatePieElementWithRef, } from ".
44
44
  export { addOrUpdateOverrideInUrl, applyElementOverrides, applyElementVersionOverridesPreserveTags, extractPackageInfo, formatElementOverrideParam, parseElementOverridesFromCurrentUrl, parseElementOverridesFromUrl, } from "./overrides.js";
45
45
  // Utils
46
46
  export { findOrAddSession, getPackageWithoutVersion, getPieElementBundlesUrl, parsePackageName, } from "./utils.js";
47
- //# sourceMappingURL=index.js.map
@@ -423,4 +423,3 @@ const withBlobBundleUrl = async (bundleJs, options, run) => {
423
423
  URL.revokeObjectURL(bundleUrl);
424
424
  }
425
425
  };
426
- //# sourceMappingURL=initialization.js.map
@@ -106,4 +106,3 @@ export function attachInstrumentationEventBridge(args) {
106
106
  }
107
107
  };
108
108
  }
109
- //# sourceMappingURL=instrumentation-event-bridge.js.map
@@ -101,4 +101,3 @@ export const ASSESSMENT_INSTRUMENTATION_EVENT_MAP = [
101
101
  instrumentationEventName: "pie-assessment-error",
102
102
  },
103
103
  ];
104
- //# sourceMappingURL=instrumentation-event-map.js.map
@@ -63,4 +63,3 @@ export function resolveInstrumentationProvider(args) {
63
63
  }
64
64
  return undefined;
65
65
  }
66
- //# sourceMappingURL=instrumentation-provider-resolution.js.map
@@ -41,4 +41,3 @@ export class SessionStorageItemSessionStorage {
41
41
  catch { }
42
42
  }
43
43
  }
44
- //# sourceMappingURL=item-controller-storage.js.map
@@ -89,4 +89,3 @@ export class ItemController {
89
89
  }
90
90
  }
91
91
  export const normalizeItemSessionContainer = normalizeSessionContainer;
92
- //# sourceMappingURL=item-controller.js.map
@@ -254,4 +254,3 @@ export function normalizeItemSessionChange(args) {
254
254
  complete: getMetadataComplete(sessionDetail, candidate),
255
255
  };
256
256
  }
257
- //# sourceMappingURL=item-session-contract.js.map
@@ -42,4 +42,3 @@ export function createPieLogger(namespace, debugEnabledFn) {
42
42
  export function isGlobalDebugEnabled() {
43
43
  return typeof window !== "undefined" && window.PIE_DEBUG === true;
44
44
  }
45
- //# sourceMappingURL=logger.js.map
@@ -123,4 +123,3 @@ export function renderMath(element) {
123
123
  renderer.renderMath(element);
124
124
  }
125
125
  }
126
- //# sourceMappingURL=math-rendering.js.map
@@ -199,4 +199,3 @@ export function extractPackageInfo(packageStr) {
199
199
  };
200
200
  }
201
201
  }
202
- //# sourceMappingURL=overrides.js.map
@@ -120,4 +120,3 @@ export async function fetchItemData(apiBaseUrl, itemId, token, endpoint, env, ad
120
120
  }
121
121
  return await response.json();
122
122
  }
123
- //# sourceMappingURL=player-initializer.js.map
@@ -18,4 +18,3 @@ export const pieRegistry = () => {
18
18
  }
19
19
  return registry;
20
20
  };
21
- //# sourceMappingURL=registry.js.map
@@ -1349,4 +1349,3 @@ export function getTrackedResourceRequests() {
1349
1349
  export function clearTrackedResourceRequests() {
1350
1350
  failedRequests.clear();
1351
1351
  }
1352
- //# sourceMappingURL=resource-monitor.js.map
@@ -108,4 +108,3 @@ export async function scorePieItem(config, sessionData, options = {}) {
108
108
  : r.filter(Boolean),
109
109
  };
110
110
  }
111
- //# sourceMappingURL=scoring.js.map
@@ -103,4 +103,3 @@ export function createStageTracker(opts) {
103
103
  }
104
104
  return { enter, reset, getCurrent };
105
105
  }
106
- //# sourceMappingURL=stage-tracker.js.map
@@ -55,4 +55,3 @@ export function stageOrdinal(stage) {
55
55
  }
56
56
  return idx;
57
57
  }
58
- //# sourceMappingURL=stages.js.map
@@ -59,4 +59,3 @@ export const toPrintHashedTag = (baseTag, hashSource, hashFn) => {
59
59
  const hash = Math.abs(hashFn(hashSource));
60
60
  return `${baseTag}-print-${hash}`;
61
61
  };
62
- //# sourceMappingURL=tag-names.js.map
package/dist/pie/types.js CHANGED
@@ -49,4 +49,3 @@ export function isCustomElementConstructor(obj) {
49
49
  export function isPieRegistryAvailable(obj) {
50
50
  return obj && typeof obj.PIE_REGISTRY === "object";
51
51
  }
52
- //# sourceMappingURL=types.js.map
@@ -225,4 +225,3 @@ export const updatePieElements = (config, session, env, container, onElementSess
225
225
  onElementSessionUpdate,
226
226
  }))).then(() => undefined);
227
227
  };
228
- //# sourceMappingURL=updates.js.map
package/dist/pie/utils.js CHANGED
@@ -71,4 +71,3 @@ export const findOrAddSession = (data, id, element) => {
71
71
  data.push(ss);
72
72
  return ss;
73
73
  };
74
- //# sourceMappingURL=utils.js.map
@@ -40,4 +40,3 @@ export function toPackageVersionedTag(tagName, packageSpec, options = {}) {
40
40
  // package versions at runtime, which requires updating the cloned runtime tag.
41
41
  return `${baseName}${VERSION_DELIMITER}${targetEncodedVersion}`;
42
42
  }
43
- //# sourceMappingURL=versioned-tag.js.map
@@ -10,4 +10,3 @@ export function resolveItemPlayerView(mode, defaultView = "delivery") {
10
10
  }
11
11
  return defaultView;
12
12
  }
13
- //# sourceMappingURL=player-strategy.js.map
@@ -4,4 +4,3 @@ export { resetSvgSanitizerForTesting, sanitizeSvgIcon, } from "./sanitize-svg-ic
4
4
  export { wrapOverwideImages, wrapOverwideImagesInElement, } from "./wrap-overwide-images.js";
5
5
  export { wrapModelRichContent } from "./wrap-model-rich-content.js";
6
6
  export { wrapOverwideTables, wrapOverwideTablesInElement, } from "./wrap-overwide-tables.js";
7
- //# sourceMappingURL=index.js.map
@@ -15,6 +15,17 @@ export interface SanitizeItemMarkupOptions {
15
15
  * tags that rewrite to `pie-*-config` or host-registered extensions.
16
16
  */
17
17
  allowedCustomElements?: string[];
18
+ /**
19
+ * Whether to apply the overwide image / table scroll wrappers after
20
+ * sanitizing. Defaults to `true` for screen rendering.
21
+ *
22
+ * Print rendering must pass `false`: the wrappers are `overflow-x: auto`
23
+ * reflow affordances (WCAG 1.4.10 at 400% zoom), and `@pie-players/pie-theme`
24
+ * carries no `@media print` override for them. In print media `overflow`
25
+ * clips instead of scrolling, so a wide image or table would be silently
26
+ * cut off at the column edge with no way to reach the rest.
27
+ */
28
+ wrapOverwideContent?: boolean;
18
29
  }
19
30
  /**
20
31
  * Sanitize raw item/passage markup before it is injected into the DOM.
@@ -138,6 +138,9 @@ export function sanitizeItemMarkup(markup, options = {}) {
138
138
  RETURN_TRUSTED_TYPE: false,
139
139
  });
140
140
  const sanitized = typeof result === "string" ? result : String(result ?? "");
141
+ // Print rendering opts out: `overflow` clips rather than scrolls on paper.
142
+ if (options.wrapOverwideContent === false)
143
+ return sanitized;
141
144
  // PIE-94: wrap overwide authored images in a horizontal-scroll container
142
145
  // so they don't get clipped by ancestor `overflow-x: hidden` regions in
143
146
  // the section player (and match WCAG 1.4.10 Reflow at 400% zoom).
@@ -151,8 +154,8 @@ export function sanitizeItemMarkup(markup, options = {}) {
151
154
  * can safely use reference equality when deciding whether to re-sanitize.
152
155
  */
153
156
  export function createDefaultItemMarkupSanitizer(options = {}) {
154
- const { allowedCustomElements } = options;
155
- return (markup) => sanitizeItemMarkup(markup, { allowedCustomElements });
157
+ const { allowedCustomElements, wrapOverwideContent } = options;
158
+ return (markup) => sanitizeItemMarkup(markup, { allowedCustomElements, wrapOverwideContent });
156
159
  }
157
160
  /**
158
161
  * Derive the authoring-mode allow-list (`pie-*-config`) from a set of PIE
@@ -174,4 +177,3 @@ export function buildAuthoringAllowList(elementTagNames) {
174
177
  export function resetPurifierForTesting() {
175
178
  purifierInstance = null;
176
179
  }
177
- //# sourceMappingURL=sanitize-item-markup.js.map
@@ -86,4 +86,3 @@ export function resetSvgSanitizerForTesting() {
86
86
  svgPurifierInstance = null;
87
87
  stringCache.clear();
88
88
  }
89
- //# sourceMappingURL=sanitize-svg-icon.js.map
@@ -55,4 +55,3 @@ export function parseAllowedStyleOrigins(raw) {
55
55
  .map((entry) => entry.trim())
56
56
  .filter((entry) => entry.length > 0);
57
57
  }
58
- //# sourceMappingURL=validate-style-url.js.map
@@ -38,4 +38,3 @@ function wrapValue(value, parentKey) {
38
38
  export function wrapModelRichContent(model) {
39
39
  return wrapValue(model);
40
40
  }
41
- //# sourceMappingURL=wrap-model-rich-content.js.map
@@ -113,4 +113,3 @@ export function wrapOverwideImages(markup) {
113
113
  });
114
114
  return wrapped > 0 ? body.innerHTML : markup;
115
115
  }
116
- //# sourceMappingURL=wrap-overwide-images.js.map
@@ -124,4 +124,3 @@ export function wrapOverwideTables(markup) {
124
124
  });
125
125
  return wrapped > 0 ? body.innerHTML : markup;
126
126
  }
127
- //# sourceMappingURL=wrap-overwide-tables.js.map
@@ -57,4 +57,3 @@ export const getNpmPackageVersions = async (element, fetch, filter = DEFAULT_FIL
57
57
  return searchTerm ? [] : ["latest"];
58
58
  }
59
59
  };
60
- //# sourceMappingURL=npm-registry.js.map
@@ -117,4 +117,3 @@ export var StandardType;
117
117
  StandardType[StandardType["LEVEL"] = 2] = "LEVEL";
118
118
  StandardType[StandardType["STANDARD"] = 3] = "STANDARD";
119
119
  })(StandardType || (StandardType = {}));
120
- //# sourceMappingURL=index.js.map
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Installs the shared PIE content stylesheet
3
+ * (`@pie-players/pie-theme/components.css`) into the host document.
4
+ *
5
+ * Authored assessment content depends on classes that belong to no single
6
+ * component: passage markup (`.numbered-paragraph`, `.p-number`,
7
+ * `div.passage-title`), the legacy `kds-*` families, the `@media print`
8
+ * `.noprint` rules, and the answer-eliminator classes. Players render into
9
+ * light DOM, so those rules have to exist as a document-level stylesheet —
10
+ * there is no shadow root to scope them to.
11
+ *
12
+ * Hosts used to be required to import that stylesheet themselves. Nothing
13
+ * enforced it and nothing failed loudly when they didn't: the item rendered,
14
+ * the passage was simply unstyled, and it surfaced as a visual bug reported by
15
+ * hand days later. Players install the stylesheet themselves instead, which
16
+ * keeps the host contract at "import the player".
17
+ *
18
+ * The CSS text is passed in rather than imported here: this package builds with
19
+ * plain `tsc`, so it cannot inline a stylesheet. Bundler-built player packages
20
+ * import it with Vite's `?inline` and hand the text over.
21
+ */
22
+ export type ContentStylesResult = "installed" | "already-installed" | "opted-out" | "no-document";
23
+ /**
24
+ * True when the host declared `<html data-pie-content-styles="host">`, i.e. it
25
+ * takes ownership of loading the stylesheet.
26
+ */
27
+ export declare function contentStylesOptedOut(): boolean;
28
+ /**
29
+ * True when `components.css` is applied to the document, by any route. Reads the
30
+ * sentinel custom property the stylesheet declares on `:root`.
31
+ *
32
+ * Only meaningful once the document's stylesheets have been applied — a host
33
+ * that loads CSS via an async `<link>` reads as missing until it lands.
34
+ */
35
+ export declare function contentStylesPresent(): boolean;
36
+ /**
37
+ * Installs `cssText` as a document-level stylesheet, once per document.
38
+ *
39
+ * The stylesheet is **prepended** to `<head>` and deliberately left out of a
40
+ * cascade layer. Prepending reproduces the placement hosts were told to use by
41
+ * hand — first in the entry, before app CSS — so an app rule and a content rule
42
+ * of equal specificity resolve in the host's favour, exactly as before.
43
+ *
44
+ * A cascade layer looks tempting here and is the wrong tool: unlayered author
45
+ * declarations beat *all* layered ones regardless of specificity, so a host
46
+ * reset as broad as `p { margin: 0 }` would silently outrank
47
+ * `.numbered-paragraph { margin-left: 36px }`. That trades a visible missing
48
+ * stylesheet for a subtler override bug, so ordinary specificity wins instead.
49
+ *
50
+ * @param cssText Contents of `@pie-players/pie-theme/components.css`.
51
+ * @param source Package installing the styles, for diagnostics.
52
+ */
53
+ export declare function installContentStyles(cssText: string, source: string): ContentStylesResult;
54
+ /**
55
+ * Reports, once per page, the two ways content styling can go wrong. Neither is
56
+ * detectable synchronously — a host copy may still be in flight as an async
57
+ * `<link>` — so the check is deferred.
58
+ *
59
+ * - **Missing**: the host opted out and then loaded nothing, so authored content
60
+ * renders unstyled. This is the failure the old host-import contract produced
61
+ * silently.
62
+ * - **Duplicated**: the host still imports `components.css` itself *and* the
63
+ * player installed a copy. Rendering is correct while the two agree, but the
64
+ * host's copy loads later and therefore wins ties at equal specificity — so a
65
+ * host copy pinned to an older `@pie-players/pie-theme` silently overrides the
66
+ * player's newer rules. Harmless today, a confusing override tomorrow.
67
+ */
68
+ export declare function auditContentStyles(source: string): void;
69
+ /**
70
+ * Test-only: clears the once-per-page warning latch and cancels any pending
71
+ * deferred check, so a timer scheduled by one test cannot warn during the next.
72
+ */
73
+ export declare function resetContentStylesWarningForTesting(): void;