@prose-reader/core 1.125.0 → 1.127.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,6 @@
1
- import { Manifest } from '@prose-reader/shared';
2
- import { Context } from '../../../context/Context';
3
- import { ReaderSettingsManager } from '../../../settings/ReaderSettingsManager';
4
- import { HookManager } from '../../../hooks/HookManager';
5
1
  import { DocumentRenderer } from '../../../spineItem/DocumentRenderer';
6
- import { ResourceHandler } from '../../../spineItem/ResourceHandler';
7
2
  export declare class HtmlRenderer extends DocumentRenderer {
8
3
  latestContentHeightWhenLoaded: number | undefined;
9
- constructor(context: Context, settings: ReaderSettingsManager, hookManager: HookManager, item: Manifest[`spineItems`][number], containerElement: HTMLElement, resourcesHandler: ResourceHandler);
10
4
  onCreateDocument(): import('rxjs').Observable<never>;
11
5
  onLoadDocument(): import('rxjs').Observable<HTMLIFrameElement>;
12
6
  onUnload(): import('rxjs').Observable<never>;
package/dist/index.d.ts CHANGED
@@ -12,3 +12,4 @@ export { isShallowEqual } from './utils/objects';
12
12
  export { waitForSwitch } from './utils/rxjs';
13
13
  export { SpineItem } from './spineItem/SpineItem';
14
14
  export * from './utils/DestroyableClass';
15
+ export * from './utils/frames';
package/dist/index.js CHANGED
@@ -1515,7 +1515,9 @@ const themeEnhancer = (next) => (options) => {
1515
1515
  };
1516
1516
  reader.hookManager.register(`item.onDocumentLoad`, ({ itemId }) => {
1517
1517
  const item = reader.spineItemsManager.get(itemId);
1518
- item == null ? void 0 : item.upsertCSS(`prose-reader-theme`, getStyle());
1518
+ if ((item == null ? void 0 : item.item.renditionLayout) !== "pre-paginated") {
1519
+ item == null ? void 0 : item.upsertCSS(`prose-reader-theme`, getStyle());
1520
+ }
1519
1521
  });
1520
1522
  reader.spineItemsManager.items$.pipe(
1521
1523
  tap(
@@ -5168,16 +5170,9 @@ const generateCfiFromRange = ({
5168
5170
  return { start: startCFI, end: endCFI };
5169
5171
  };
5170
5172
  class DocumentRenderer {
5171
- constructor(context, settings, hookManager, item, containerElement, resourcesHandler) {
5172
- this.context = context;
5173
- this.settings = settings;
5174
- this.hookManager = hookManager;
5175
- this.item = item;
5176
- this.containerElement = containerElement;
5177
- this.resourcesHandler = resourcesHandler;
5178
- this.stateSubject = new BehaviorSubject(`idle`);
5173
+ constructor(params) {
5179
5174
  this.triggerSubject = new Subject();
5180
- this.layers = [];
5175
+ this.stateSubject = new BehaviorSubject(`idle`);
5181
5176
  this.unload$ = this.triggerSubject.pipe(
5182
5177
  withLatestFrom(this.stateSubject),
5183
5178
  filter$1(
@@ -5194,9 +5189,16 @@ class DocumentRenderer {
5194
5189
  map$1(() => void 0),
5195
5190
  share()
5196
5191
  );
5192
+ this.layers = [];
5197
5193
  this.destroy$ = this.triggerSubject.pipe(
5198
5194
  filter$1((trigger) => trigger === `destroy`)
5199
5195
  );
5196
+ this.context = params.context;
5197
+ this.settings = params.settings;
5198
+ this.hookManager = params.hookManager;
5199
+ this.item = params.item;
5200
+ this.containerElement = params.containerElement;
5201
+ this.resourcesHandler = params.resourcesHandler;
5200
5202
  this.load$.pipe(
5201
5203
  switchMap(() => {
5202
5204
  this.stateSubject.next(`loading`);
@@ -5409,16 +5411,17 @@ class SpineItem {
5409
5411
  hookManager
5410
5412
  );
5411
5413
  parentElement.appendChild(this.containerElement);
5412
- const RendererClass = ((_b = (_a = this.settings.values).getRenderer) == null ? void 0 : _b.call(_a, item)) ?? DefaultRenderer;
5414
+ const rendererFactory = (_b = (_a = this.settings.values).getRenderer) == null ? void 0 : _b.call(_a, item);
5413
5415
  this.resourcesHandler = new ResourceHandler(item, this.settings);
5414
- this.renderer = new RendererClass(
5416
+ const rendererParams = {
5415
5417
  context,
5416
5418
  settings,
5417
5419
  hookManager,
5418
5420
  item,
5419
- this.containerElement,
5420
- this.resourcesHandler
5421
- );
5421
+ containerElement: this.containerElement,
5422
+ resourcesHandler: this.resourcesHandler
5423
+ };
5424
+ this.renderer = rendererFactory ? rendererFactory(rendererParams) : new DefaultRenderer(rendererParams);
5422
5425
  const contentLayoutChange$ = merge(
5423
5426
  this.unloaded$.pipe(map(() => ({ isFirstLayout: false }))),
5424
5427
  this.ready$.pipe(map(() => ({ isFirstLayout: true })))
@@ -6879,13 +6882,13 @@ const mediaEnhancer = (next) => (options) => {
6879
6882
  ...options,
6880
6883
  getRenderer(item) {
6881
6884
  var _a;
6882
- const MaybeRenderer = (_a = options.getRenderer) == null ? void 0 : _a.call(options, item);
6885
+ const maybeFactory = (_a = options.getRenderer) == null ? void 0 : _a.call(options, item);
6883
6886
  const mimeType = item.mediaType ?? detectMimeTypeFromName(item.href);
6884
6887
  const isImageType = !!(mimeType == null ? void 0 : mimeType.startsWith(`image/`));
6885
- if (!MaybeRenderer && isImageType) {
6886
- return ImageRenderer;
6888
+ if (!maybeFactory && isImageType) {
6889
+ return (props) => new ImageRenderer(props);
6887
6890
  }
6888
- return MaybeRenderer;
6891
+ return maybeFactory;
6889
6892
  }
6890
6893
  });
6891
6894
  const frameObserver = new IntersectionObserver(
@@ -7315,7 +7318,9 @@ const eventsEnhancer = (next) => (options) => {
7315
7318
  `item.onDocumentLoad`,
7316
7319
  ({ destroy, layers, itemId }) => {
7317
7320
  var _a;
7318
- const frame = (_a = layers[0]) == null ? void 0 : _a.element;
7321
+ const frame = (_a = layers.find(
7322
+ (layer) => layer.element instanceof HTMLIFrameElement
7323
+ )) == null ? void 0 : _a.element;
7319
7324
  if (!(frame instanceof HTMLIFrameElement)) return;
7320
7325
  const item = reader.spineItemsManager.get(itemId);
7321
7326
  if (!item) return;
@@ -7985,15 +7990,8 @@ const renderReflowable = ({
7985
7990
  };
7986
7991
  };
7987
7992
  class HtmlRenderer extends DocumentRenderer {
7988
- constructor(context, settings, hookManager, item, containerElement, resourcesHandler) {
7989
- super(
7990
- context,
7991
- settings,
7992
- hookManager,
7993
- item,
7994
- containerElement,
7995
- resourcesHandler
7996
- );
7993
+ constructor() {
7994
+ super(...arguments);
7997
7995
  this.isImageType = () => {
7998
7996
  const mimeType = this.item.mediaType ?? detectMimeTypeFromName(this.item.href);
7999
7997
  return !!(mimeType == null ? void 0 : mimeType.startsWith(`image/`));
@@ -8112,8 +8110,8 @@ const htmlEnhancer = (next) => (options) => {
8112
8110
  ...options,
8113
8111
  getRenderer(item) {
8114
8112
  var _a;
8115
- const MaybeRenderer = (_a = options.getRenderer) == null ? void 0 : _a.call(options, item);
8116
- return MaybeRenderer ?? HtmlRenderer;
8113
+ const maybeFactory = (_a = options.getRenderer) == null ? void 0 : _a.call(options, item);
8114
+ return maybeFactory ?? ((props) => new HtmlRenderer(props));
8117
8115
  }
8118
8116
  });
8119
8117
  return reader;
@@ -8331,8 +8329,15 @@ export {
8331
8329
  SettingsManager3 as SettingsManager,
8332
8330
  SpineItem,
8333
8331
  createReaderWithEnhancers as createReader,
8332
+ getAttributeValueFromString,
8333
+ getFrameViewportInfo,
8334
+ injectCSS,
8334
8335
  isHtmlElement,
8335
8336
  isShallowEqual2 as isShallowEqual,
8337
+ removeCSS,
8338
+ upsertCSS,
8339
+ waitForFrameLoad,
8340
+ waitForFrameReady,
8336
8341
  waitForSwitch
8337
8342
  };
8338
8343
  //# sourceMappingURL=index.js.map