@edgepdf/viewer-js 0.0.30 → 0.0.31

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/dist/index.js CHANGED
@@ -9575,11 +9575,30 @@ var require_leaflet_src = __commonJS({
9575
9575
  }
9576
9576
  });
9577
9577
 
9578
- // packages/viewer-js/src/lib/viewer.ts
9579
- var import_leaflet4 = __toESM(require_leaflet_src(), 1);
9580
-
9581
- // packages/viewer-js/src/lib/tile-layer-manager.ts
9582
- var import_leaflet = __toESM(require_leaflet_src(), 1);
9578
+ // packages/viewer-js/src/lib/leaflet-loader.ts
9579
+ var L2 = null;
9580
+ var leafletLoadPromise = null;
9581
+ async function loadLeaflet() {
9582
+ if (L2) {
9583
+ return L2;
9584
+ }
9585
+ if (leafletLoadPromise) {
9586
+ return leafletLoadPromise;
9587
+ }
9588
+ if (typeof window === "undefined" || typeof document === "undefined") {
9589
+ throw new Error(
9590
+ "Leaflet requires a browser environment. This code can only be used in the browser."
9591
+ );
9592
+ }
9593
+ leafletLoadPromise = Promise.resolve().then(() => __toESM(require_leaflet_src(), 1)).then((leafletModule) => {
9594
+ L2 = leafletModule.default;
9595
+ return L2;
9596
+ });
9597
+ return leafletLoadPromise;
9598
+ }
9599
+ function getLeaflet() {
9600
+ return L2;
9601
+ }
9583
9602
 
9584
9603
  // packages/utils/dist/index.js
9585
9604
  var S3_PREFIX = {
@@ -9663,12 +9682,13 @@ var TileLayerManager = class {
9663
9682
  *
9664
9683
  * @throws {Error} If tile layer creation fails
9665
9684
  */
9666
- createTileLayer(map) {
9685
+ async createTileLayer(map) {
9667
9686
  if (this.tileLayer) {
9668
9687
  console.warn("Tile layer already created. Use removeTileLayer() first.");
9669
9688
  return this.tileLayer;
9670
9689
  }
9671
9690
  try {
9691
+ const L3 = getLeaflet() || await loadLeaflet();
9672
9692
  const { imageInfo, tileUrl, keepBuffer, updateInterval } = this.config;
9673
9693
  const bounds = this.calculateTileBounds();
9674
9694
  const tileLayerOptions = {
@@ -9691,7 +9711,7 @@ var TileLayerManager = class {
9691
9711
  className: "seamless-tiles"
9692
9712
  // CSS class for styling
9693
9713
  };
9694
- this.tileLayer = import_leaflet.default.tileLayer(tileUrl, tileLayerOptions);
9714
+ this.tileLayer = L3.tileLayer(tileUrl, tileLayerOptions);
9695
9715
  if (map) {
9696
9716
  this.setupEventListeners(map);
9697
9717
  }
@@ -9805,7 +9825,6 @@ var TileLayerManager = class {
9805
9825
  };
9806
9826
 
9807
9827
  // packages/viewer-js/src/lib/coordinate-mapper.ts
9808
- var import_leaflet2 = __toESM(require_leaflet_src(), 1);
9809
9828
  var CoordinateMapper = class {
9810
9829
  imageInfo;
9811
9830
  /**
@@ -9945,13 +9964,14 @@ var CoordinateMapper = class {
9945
9964
  * // [[0, 0], [512, 512]] for minZoom 0 with tileSize 256
9946
9965
  * ```
9947
9966
  */
9948
- calculateMapBounds() {
9967
+ async calculateMapBounds() {
9968
+ const L3 = getLeaflet() || await loadLeaflet();
9949
9969
  const tileSize = this.imageInfo.tileSize || 256;
9950
9970
  const minZoom = this.imageInfo.minZoom || 0;
9951
9971
  const gridSize = Math.pow(2, minZoom + 1);
9952
9972
  const boundsWidth = gridSize * tileSize;
9953
9973
  const boundsHeight = gridSize * tileSize;
9954
- return import_leaflet2.default.latLngBounds([0, 0], [boundsHeight, boundsWidth]);
9974
+ return L3.latLngBounds([0, 0], [boundsHeight, boundsWidth]);
9955
9975
  }
9956
9976
  /**
9957
9977
  * Validates Leaflet coordinates and checks bounds
@@ -10009,9 +10029,10 @@ var CoordinateMapper = class {
10009
10029
  *
10010
10030
  * @returns Custom CRS instance
10011
10031
  */
10012
- createCustomCRS() {
10013
- return import_leaflet2.default.extend({}, import_leaflet2.default.CRS.Simple, {
10014
- transformation: new import_leaflet2.default.Transformation(1, 0, 1, 0)
10032
+ async createCustomCRS() {
10033
+ const L3 = getLeaflet() || await loadLeaflet();
10034
+ return L3.extend({}, L3.CRS.Simple, {
10035
+ transformation: new L3.Transformation(1, 0, 1, 0)
10015
10036
  });
10016
10037
  }
10017
10038
  /**
@@ -10390,9 +10411,6 @@ var ZoomController = class {
10390
10411
  }
10391
10412
  };
10392
10413
 
10393
- // packages/viewer-js/src/lib/marker-manager.ts
10394
- var import_leaflet3 = __toESM(require_leaflet_src(), 1);
10395
-
10396
10414
  // packages/viewer-js/src/lib/marker-edit-popup.ts
10397
10415
  var currentEditPopup = null;
10398
10416
  function createEditPopup(options) {
@@ -10624,7 +10642,7 @@ var MarkerManager = class {
10624
10642
  imageInfo;
10625
10643
  markers = /* @__PURE__ */ new Map();
10626
10644
  leafletMarkers = /* @__PURE__ */ new Map();
10627
- markerLayerGroup;
10645
+ markerLayerGroup = null;
10628
10646
  eventListeners = /* @__PURE__ */ new Map();
10629
10647
  selectedIds = /* @__PURE__ */ new Set();
10630
10648
  activeMarkerId = null;
@@ -10669,7 +10687,16 @@ var MarkerManager = class {
10669
10687
  this.map = options.map;
10670
10688
  this.coordinateMapper = options.coordinateMapper;
10671
10689
  this.imageInfo = options.imageInfo;
10672
- this.markerLayerGroup = import_leaflet3.default.layerGroup().addTo(this.map);
10690
+ }
10691
+ /**
10692
+ * Initializes the marker layer group (called after Leaflet is loaded)
10693
+ */
10694
+ async ensureLayerGroup() {
10695
+ if (this.markerLayerGroup) {
10696
+ return;
10697
+ }
10698
+ const L3 = getLeaflet() || await loadLeaflet();
10699
+ this.markerLayerGroup = L3.layerGroup().addTo(this.map);
10673
10700
  }
10674
10701
  /**
10675
10702
  * Creates a new marker from coordinates
@@ -10692,7 +10719,7 @@ var MarkerManager = class {
10692
10719
  * @throws {Error} If neither position nor imageCoords is provided
10693
10720
  * @throws {Error} If coordinates are invalid or out of bounds
10694
10721
  */
10695
- createMarker(options) {
10722
+ async createMarker(options) {
10696
10723
  if (!options.position && !options.imageCoords) {
10697
10724
  throw new Error("Either position or imageCoords must be provided");
10698
10725
  }
@@ -10738,10 +10765,11 @@ var MarkerManager = class {
10738
10765
  deletable: options.deletable
10739
10766
  };
10740
10767
  this.validateMarker(marker);
10741
- const leafletMarker = this.createLeafletMarker(marker);
10768
+ const leafletMarker = await this.createLeafletMarker(marker);
10742
10769
  this.setupMarkerInteractions(leafletMarker, marker);
10743
10770
  this.markers.set(id, marker);
10744
10771
  this.leafletMarkers.set(id, leafletMarker);
10772
+ await this.ensureLayerGroup();
10745
10773
  this.markerLayerGroup.addLayer(leafletMarker);
10746
10774
  return marker;
10747
10775
  }
@@ -10883,7 +10911,9 @@ var MarkerManager = class {
10883
10911
  if (!marker || !leafletMarker) {
10884
10912
  return false;
10885
10913
  }
10886
- this.markerLayerGroup.removeLayer(leafletMarker);
10914
+ if (this.markerLayerGroup) {
10915
+ this.markerLayerGroup.removeLayer(leafletMarker);
10916
+ }
10887
10917
  this.removeActiveMarkerOverlay(id);
10888
10918
  if (this.activeMarkerId === id) {
10889
10919
  this.setActiveMarker(null);
@@ -10896,7 +10926,9 @@ var MarkerManager = class {
10896
10926
  * Removes all markers
10897
10927
  */
10898
10928
  removeAllMarkers() {
10899
- this.markerLayerGroup.clearLayers();
10929
+ if (this.markerLayerGroup) {
10930
+ this.markerLayerGroup.clearLayers();
10931
+ }
10900
10932
  this.markers.clear();
10901
10933
  this.leafletMarkers.clear();
10902
10934
  this.activeMarkerOverlays.clear();
@@ -10941,7 +10973,7 @@ var MarkerManager = class {
10941
10973
  * @param updates - Partial marker properties to update
10942
10974
  * @returns True if marker was updated, false if not found
10943
10975
  */
10944
- updateMarker(id, updates) {
10976
+ async updateMarker(id, updates) {
10945
10977
  const marker = this.markers.get(id);
10946
10978
  const leafletMarker = this.leafletMarkers.get(id);
10947
10979
  if (!marker || !leafletMarker) {
@@ -10964,7 +10996,7 @@ var MarkerManager = class {
10964
10996
  }
10965
10997
  if (updates.iconType !== void 0) {
10966
10998
  marker.iconType = updates.iconType;
10967
- const newIcon = this.createCustomIcon(updates.iconType);
10999
+ const newIcon = await this.createCustomIcon(updates.iconType);
10968
11000
  leafletMarker.setIcon(newIcon);
10969
11001
  }
10970
11002
  if (updates.referenceId !== void 0) {
@@ -11122,7 +11154,7 @@ var MarkerManager = class {
11122
11154
  * @param id - Marker ID to set as active, or null to clear active marker
11123
11155
  * @returns True if marker was set as active, false if not found
11124
11156
  */
11125
- setActiveMarker(id) {
11157
+ async setActiveMarker(id) {
11126
11158
  if (id === null) {
11127
11159
  const previousActiveId = this.activeMarkerId;
11128
11160
  this.activeMarkerId = null;
@@ -11154,7 +11186,9 @@ var MarkerManager = class {
11154
11186
  leafletMarker.closePopup();
11155
11187
  }
11156
11188
  this.activeMarkerId = id;
11157
- this.addActiveMarkerOverlay(id);
11189
+ this.addActiveMarkerOverlay(id).catch((error) => {
11190
+ console.warn("Failed to add active marker overlay:", error);
11191
+ });
11158
11192
  if (this.interactionConfig.onActiveMarkerChange) {
11159
11193
  this.interactionConfig.onActiveMarkerChange(marker);
11160
11194
  }
@@ -11279,14 +11313,14 @@ var MarkerManager = class {
11279
11313
  * @param iconType - New icon type
11280
11314
  * @returns True if marker was updated, false if not found
11281
11315
  */
11282
- updateMarkerIcon(id, iconType) {
11316
+ async updateMarkerIcon(id, iconType) {
11283
11317
  const marker = this.markers.get(id);
11284
11318
  const leafletMarker = this.leafletMarkers.get(id);
11285
11319
  if (!marker || !leafletMarker) {
11286
11320
  return false;
11287
11321
  }
11288
11322
  marker.iconType = iconType;
11289
- const newIcon = this.createCustomIcon(iconType);
11323
+ const newIcon = await this.createCustomIcon(iconType);
11290
11324
  leafletMarker.setIcon(newIcon);
11291
11325
  return true;
11292
11326
  }
@@ -11318,9 +11352,10 @@ var MarkerManager = class {
11318
11352
  * @param iconType - Icon type to use
11319
11353
  * @returns Leaflet icon instance
11320
11354
  */
11321
- createCustomIcon(iconType) {
11355
+ async createCustomIcon(iconType) {
11356
+ const L3 = getLeaflet() || await loadLeaflet();
11322
11357
  const iconUrl = `${this.iconBasePath}${iconType}.png`;
11323
- return import_leaflet3.default.icon({
11358
+ return L3.icon({
11324
11359
  iconUrl,
11325
11360
  iconSize: [30, 40],
11326
11361
  // Default marker size
@@ -11340,9 +11375,11 @@ var MarkerManager = class {
11340
11375
  * @param marker - Marker data
11341
11376
  * @returns Leaflet marker instance
11342
11377
  */
11343
- createLeafletMarker(marker) {
11378
+ async createLeafletMarker(marker) {
11379
+ const L3 = getLeaflet() || await loadLeaflet();
11380
+ await this.ensureLayerGroup();
11344
11381
  const iconType = marker.iconType || "pin-gray";
11345
- const customIcon = this.createCustomIcon(iconType);
11382
+ const customIcon = await this.createCustomIcon(iconType);
11346
11383
  const markerOptions = {
11347
11384
  title: marker.label,
11348
11385
  icon: customIcon
@@ -11351,7 +11388,7 @@ var MarkerManager = class {
11351
11388
  if (isDraggable) {
11352
11389
  markerOptions.draggable = true;
11353
11390
  }
11354
- const leafletMarker = import_leaflet3.default.marker(
11391
+ const leafletMarker = L3.marker(
11355
11392
  [marker.position[0], marker.position[1]],
11356
11393
  markerOptions
11357
11394
  );
@@ -11446,13 +11483,14 @@ var MarkerManager = class {
11446
11483
  *
11447
11484
  * @param id - Marker ID
11448
11485
  */
11449
- addActiveMarkerOverlay(id) {
11486
+ async addActiveMarkerOverlay(id) {
11450
11487
  this.removeActiveMarkerOverlay(id);
11451
11488
  const marker = this.markers.get(id);
11452
11489
  const leafletMarker = this.leafletMarkers.get(id);
11453
11490
  if (!marker || !leafletMarker) {
11454
11491
  return;
11455
11492
  }
11493
+ await this.ensureLayerGroup();
11456
11494
  const overlaySize = 40;
11457
11495
  const borderWidth = 1;
11458
11496
  const overlayAnchorX = 20;
@@ -11468,8 +11506,9 @@ var MarkerManager = class {
11468
11506
  position: relative;
11469
11507
  "></div>
11470
11508
  `;
11471
- const overlay = import_leaflet3.default.marker([marker.position[0], marker.position[1]], {
11472
- icon: import_leaflet3.default.divIcon({
11509
+ const L3 = getLeaflet() || await loadLeaflet();
11510
+ const overlay = L3.marker([marker.position[0], marker.position[1]], {
11511
+ icon: L3.divIcon({
11473
11512
  html: overlayHTML,
11474
11513
  className: "edgepdf-active-marker-overlay",
11475
11514
  iconSize: [overlaySize, overlaySize],
@@ -11481,7 +11520,9 @@ var MarkerManager = class {
11481
11520
  // Below marker but visible
11482
11521
  });
11483
11522
  this.activeMarkerOverlays.set(id, overlay);
11484
- this.markerLayerGroup.addLayer(overlay);
11523
+ if (this.markerLayerGroup) {
11524
+ this.markerLayerGroup.addLayer(overlay);
11525
+ }
11485
11526
  leafletMarker.on("drag", () => {
11486
11527
  const newPos = leafletMarker.getLatLng();
11487
11528
  overlay.setLatLng(newPos);
@@ -11494,7 +11535,7 @@ var MarkerManager = class {
11494
11535
  */
11495
11536
  removeActiveMarkerOverlay(id) {
11496
11537
  const overlay = this.activeMarkerOverlays.get(id);
11497
- if (overlay) {
11538
+ if (overlay && this.markerLayerGroup) {
11498
11539
  this.markerLayerGroup.removeLayer(overlay);
11499
11540
  this.activeMarkerOverlays.delete(id);
11500
11541
  }
@@ -12245,7 +12286,7 @@ var EdgePdfViewer = class {
12245
12286
  *
12246
12287
  * @throws {Error} If map initialization fails
12247
12288
  */
12248
- initialize() {
12289
+ async initialize() {
12249
12290
  if (this.map) {
12250
12291
  console.warn(
12251
12292
  "Map already initialized. Call dispose() before reinitializing."
@@ -12253,9 +12294,10 @@ var EdgePdfViewer = class {
12253
12294
  return;
12254
12295
  }
12255
12296
  try {
12297
+ const Leaflet = await loadLeaflet();
12256
12298
  this.coordinateMapper = new CoordinateMapper(this.config.imageInfo);
12257
- const customCRS = this.coordinateMapper.createCustomCRS();
12258
- const bounds = this.coordinateMapper.calculateMapBounds();
12299
+ const customCRS = await this.coordinateMapper.createCustomCRS();
12300
+ const bounds = await this.coordinateMapper.calculateMapBounds();
12259
12301
  const imageCenter = this.coordinateMapper.getImageCenter();
12260
12302
  const center = this.mapOptions?.center || [
12261
12303
  imageCenter.y,
@@ -12283,11 +12325,11 @@ var EdgePdfViewer = class {
12283
12325
  // Mouse wheel sensitivity
12284
12326
  ...this.mapOptions
12285
12327
  };
12286
- this.map = import_leaflet4.default.map(this.container, leafletOptions);
12328
+ this.map = Leaflet.map(this.container, leafletOptions);
12287
12329
  if (!this.mapOptions?.center && !this.mapOptions?.zoom) {
12288
12330
  this.map.setView([imageCenter.y, imageCenter.x], initialZoom);
12289
12331
  }
12290
- this.addTileLayer();
12332
+ await this.addTileLayer();
12291
12333
  this.addSeamlessTileStyles();
12292
12334
  this.zoomController = new ZoomController({
12293
12335
  map: this.map,
@@ -12381,7 +12423,7 @@ var EdgePdfViewer = class {
12381
12423
  *
12382
12424
  * @throws {Error} If map is not initialized or tile layer creation fails
12383
12425
  */
12384
- addTileLayer() {
12426
+ async addTileLayer() {
12385
12427
  if (!this.map) {
12386
12428
  throw new Error("Map must be initialized before adding tile layer");
12387
12429
  }
@@ -12390,7 +12432,7 @@ var EdgePdfViewer = class {
12390
12432
  tileUrl: this.config.tileUrl,
12391
12433
  imageInfo: this.config.imageInfo
12392
12434
  });
12393
- const tileLayer = this.tileLayerManager.createTileLayer(this.map);
12435
+ const tileLayer = await this.tileLayerManager.createTileLayer(this.map);
12394
12436
  tileLayer.addTo(this.map);
12395
12437
  console.log("Tile layer added to map successfully");
12396
12438
  } catch (error) {
@@ -1,4 +1,4 @@
1
- import L from 'leaflet';
1
+ import type * as LeafletType from 'leaflet';
2
2
  import type { ImageInfo, LeafletCoords, ImageCoords, CoordinateBounds } from '@edgepdf/types';
3
3
  /**
4
4
  * Image position information within the tile grid canvas
@@ -124,7 +124,7 @@ export declare class CoordinateMapper {
124
124
  * // [[0, 0], [512, 512]] for minZoom 0 with tileSize 256
125
125
  * ```
126
126
  */
127
- calculateMapBounds(): L.LatLngBoundsExpression;
127
+ calculateMapBounds(): Promise<LeafletType.LatLngBoundsExpression>;
128
128
  /**
129
129
  * Validates Leaflet coordinates and checks bounds
130
130
  *
@@ -145,7 +145,7 @@ export declare class CoordinateMapper {
145
145
  *
146
146
  * @returns Custom CRS instance
147
147
  */
148
- createCustomCRS(): L.CRS;
148
+ createCustomCRS(): Promise<LeafletType.CRS>;
149
149
  /**
150
150
  * Calculates the aspect ratio of the image
151
151
  *
@@ -1 +1 @@
1
- {"version":3,"file":"coordinate-mapper.d.ts","sourceRoot":"","sources":["../../src/lib/coordinate-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,SAAS,CAAC;AACxB,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,WAAW,EACX,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,oDAAoD;IACpD,gBAAgB,EAAE,MAAM,CAAC;IACzB,qDAAqD;IACrD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,0BAA0B;IAC1B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAY;IAE7B;;;;;;OAMG;gBACS,SAAS,EAAE,SAAS;IAchC;;;;;OAKG;IACH,sBAAsB,IAAI,aAAa;IAuCvC;;;;;;;;;;;;;OAaG;IACH,cAAc,CACZ,aAAa,EAAE,aAAa,GAC3B,WAAW,GAAG;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE;IAyB1C;;;;;;;;;;;;;OAaG;IACH,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa;IAkBvD;;;;;;;;;;OAUG;IACH,cAAc,IAAI;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE;IAU1C;;;;;;;;;;;;;OAaG;IACH,kBAAkB,IAAI,CAAC,CAAC,sBAAsB;IAU9C;;;;;OAKG;IACH,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAqBlD;;;;;OAKG;IACH,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IA+B9C;;;;;OAKG;IACH,eAAe,IAAI,CAAC,CAAC,GAAG;IAMxB;;;;;;;;;;OAUG;IACH,cAAc,IAAI,MAAM;IAIxB;;;;;;;;;;OAUG;IACH,SAAS,IAAI,gBAAgB;IAS7B;;;;OAIG;IACH,YAAY,IAAI,SAAS;IAIzB;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;IAS5C;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW;IAO/C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,qBAAqB,CACnB,MAAM,EAAE,WAAW,EACnB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,GACtB,WAAW;CAaf"}
1
+ {"version":3,"file":"coordinate-mapper.d.ts","sourceRoot":"","sources":["../../src/lib/coordinate-mapper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,WAAW,MAAM,SAAS,CAAC;AAE5C,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,WAAW,EACX,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,oDAAoD;IACpD,gBAAgB,EAAE,MAAM,CAAC;IACzB,qDAAqD;IACrD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,0BAA0B;IAC1B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAY;IAE7B;;;;;;OAMG;gBACS,SAAS,EAAE,SAAS;IAchC;;;;;OAKG;IACH,sBAAsB,IAAI,aAAa;IAuCvC;;;;;;;;;;;;;OAaG;IACH,cAAc,CACZ,aAAa,EAAE,aAAa,GAC3B,WAAW,GAAG;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE;IAyB1C;;;;;;;;;;;;;OAaG;IACH,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa;IAkBvD;;;;;;;;;;OAUG;IACH,cAAc,IAAI;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE;IAU1C;;;;;;;;;;;;;OAaG;IACG,kBAAkB,IAAI,OAAO,CAAC,WAAW,CAAC,sBAAsB,CAAC;IAWvE;;;;;OAKG;IACH,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAqBlD;;;;;OAKG;IACH,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IA+B9C;;;;;OAKG;IACG,eAAe,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC;IAOjD;;;;;;;;;;OAUG;IACH,cAAc,IAAI,MAAM;IAIxB;;;;;;;;;;OAUG;IACH,SAAS,IAAI,gBAAgB;IAS7B;;;;OAIG;IACH,YAAY,IAAI,SAAS;IAIzB;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;IAS5C;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW;IAO/C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,qBAAqB,CACnB,MAAM,EAAE,WAAW,EACnB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,GACtB,WAAW;CAaf"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Shared Leaflet loader for SSR-safe dynamic imports
3
+ *
4
+ * This module provides a centralized way to load Leaflet only in browser environments.
5
+ * All files that need Leaflet should use this loader instead of direct imports.
6
+ */
7
+ import type * as LeafletType from 'leaflet';
8
+ /**
9
+ * Lazy loads Leaflet only in browser environment
10
+ * Returns a promise that resolves to the Leaflet module
11
+ *
12
+ * @throws {Error} If called in a non-browser environment
13
+ */
14
+ export declare function loadLeaflet(): Promise<typeof LeafletType>;
15
+ /**
16
+ * Gets the Leaflet instance if already loaded
17
+ * Returns null if not yet loaded (useful for synchronous access after initial load)
18
+ *
19
+ * @returns Leaflet instance or null if not loaded
20
+ */
21
+ export declare function getLeaflet(): typeof LeafletType | null;
22
+ /**
23
+ * Type export for Leaflet types
24
+ */
25
+ export type { LeafletType };
26
+ //# sourceMappingURL=leaflet-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leaflet-loader.d.ts","sourceRoot":"","sources":["../../src/lib/leaflet-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,KAAK,WAAW,MAAM,SAAS,CAAC;AAM5C;;;;;GAKG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,WAAW,CAAC,CAyB/D;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,IAAI,OAAO,WAAW,GAAG,IAAI,CAEtD;AAED;;GAEG;AACH,YAAY,EAAE,WAAW,EAAE,CAAC"}
@@ -1,4 +1,4 @@
1
- import L from 'leaflet';
1
+ import type * as LeafletType from 'leaflet';
2
2
  import type { Marker, MarkerData, LeafletCoords, ImageCoords, ImageInfo, MarkerEvent, MarkerEventType, MarkerInteractionConfig, MarkerSelectionState } from '@edgepdf/types';
3
3
  import { CoordinateMapper } from './coordinate-mapper.js';
4
4
  /**
@@ -101,10 +101,14 @@ export declare class MarkerManager {
101
101
  * @throws {Error} If imageInfo is not provided
102
102
  */
103
103
  constructor(options: {
104
- map: L.Map;
104
+ map: LeafletType.Map;
105
105
  coordinateMapper: CoordinateMapper;
106
106
  imageInfo: ImageInfo;
107
107
  });
108
+ /**
109
+ * Initializes the marker layer group (called after Leaflet is loaded)
110
+ */
111
+ private ensureLayerGroup;
108
112
  /**
109
113
  * Creates a new marker from coordinates
110
114
  *
@@ -126,7 +130,7 @@ export declare class MarkerManager {
126
130
  * @throws {Error} If neither position nor imageCoords is provided
127
131
  * @throws {Error} If coordinates are invalid or out of bounds
128
132
  */
129
- createMarker(options: CreateMarkerOptions): Marker;
133
+ createMarker(options: CreateMarkerOptions): Promise<Marker>;
130
134
  /**
131
135
  * Gets a marker by ID
132
136
  *
@@ -225,7 +229,7 @@ export declare class MarkerManager {
225
229
  * @param updates - Partial marker properties to update
226
230
  * @returns True if marker was updated, false if not found
227
231
  */
228
- updateMarker(id: string, updates: Partial<Omit<Marker, 'id' | 'position' | 'x' | 'y' | 'zoom'>>): boolean;
232
+ updateMarker(id: string, updates: Partial<Omit<Marker, 'id' | 'position' | 'x' | 'y' | 'zoom'>>): Promise<boolean>;
229
233
  /**
230
234
  * Gets the number of markers
231
235
  *
@@ -288,7 +292,7 @@ export declare class MarkerManager {
288
292
  * @param id - Marker ID to set as active, or null to clear active marker
289
293
  * @returns True if marker was set as active, false if not found
290
294
  */
291
- setActiveMarker(id: string | null): boolean;
295
+ setActiveMarker(id: string | null): Promise<boolean>;
292
296
  /**
293
297
  * Gets the currently active marker
294
298
  *
@@ -366,7 +370,7 @@ export declare class MarkerManager {
366
370
  * @param iconType - New icon type
367
371
  * @returns True if marker was updated, false if not found
368
372
  */
369
- updateMarkerIcon(id: string, iconType: 'pin-gray' | 'pin-yellow'): boolean;
373
+ updateMarkerIcon(id: string, iconType: 'pin-gray' | 'pin-yellow'): Promise<boolean>;
370
374
  /**
371
375
  * Updates all markers to use a new icon type
372
376
  *
@@ -1 +1 @@
1
- {"version":3,"file":"marker-manager.d.ts","sourceRoot":"","sources":["../../src/lib/marker-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"marker-manager.d.ts","sourceRoot":"","sources":["../../src/lib/marker-manager.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import L from 'leaflet';
1
+ import type * as LeafletType from 'leaflet';
2
2
  import type { TileConfig, ImageInfo } from '@edgepdf/types';
3
3
  /**
4
4
  * TileLayerManager - Manages Leaflet tile layer for displaying image tiles
@@ -45,7 +45,7 @@ export declare class TileLayerManager {
45
45
  *
46
46
  * @throws {Error} If tile layer creation fails
47
47
  */
48
- createTileLayer(map?: L.Map): L.TileLayer;
48
+ createTileLayer(map?: LeafletType.Map): Promise<LeafletType.TileLayer>;
49
49
  /**
50
50
  * Calculates tile bounds based on image dimensions
51
51
  *
@@ -54,7 +54,7 @@ export declare class TileLayerManager {
54
54
  *
55
55
  * @returns Leaflet bounds for the tile layer
56
56
  */
57
- calculateTileBounds(): L.LatLngBoundsExpression;
57
+ calculateTileBounds(): LeafletType.LatLngBoundsExpression;
58
58
  /**
59
59
  * Calculates tile grid dimensions for a specific zoom level
60
60
  *
@@ -79,13 +79,13 @@ export declare class TileLayerManager {
79
79
  *
80
80
  * @returns The tile layer, or null if not created
81
81
  */
82
- getTileLayer(): L.TileLayer | null;
82
+ getTileLayer(): LeafletType.TileLayer | null;
83
83
  /**
84
84
  * Removes the tile layer from the map and cleans up
85
85
  *
86
86
  * @param map - Optional map instance to remove layer from
87
87
  */
88
- removeTileLayer(map?: L.Map): void;
88
+ removeTileLayer(map?: LeafletType.Map): void;
89
89
  /**
90
90
  * Sets up event listeners for tile loading events
91
91
  *
@@ -1 +1 @@
1
- {"version":3,"file":"tile-layer-manager.d.ts","sourceRoot":"","sources":["../../src/lib/tile-layer-manager.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,SAAS,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAQ5D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,SAAS,CAA4B;IAE7C;;;;;;OAMG;gBACS,MAAM,EAAE,UAAU;IAmB9B;;;;;;;OAOG;IACH,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS;IAkDzC;;;;;;;OAOG;IACH,mBAAmB,IAAI,CAAC,CAAC,sBAAsB;IAK/C;;;;;OAKG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAKjE;;;;;;;OAOG;IACH,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAInD;;;;OAIG;IACH,YAAY,IAAI,CAAC,CAAC,SAAS,GAAG,IAAI;IAIlC;;;;OAIG;IACH,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,IAAI;IAUlC;;;;OAIG;IAEH,OAAO,CAAC,mBAAmB;IAwB3B;;;;OAIG;IACH,YAAY,IAAI,SAAS;IAIzB;;;;OAIG;IACH,SAAS,IAAI,UAAU;CAGxB"}
1
+ {"version":3,"file":"tile-layer-manager.d.ts","sourceRoot":"","sources":["../../src/lib/tile-layer-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,WAAW,MAAM,SAAS,CAAC;AAE5C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAQ5D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,SAAS,CAAsC;IAEvD;;;;;;OAMG;gBACS,MAAM,EAAE,UAAU;IAmB9B;;;;;;;OAOG;IACG,eAAe,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC;IAqD5E;;;;;;;OAOG;IACH,mBAAmB,IAAI,WAAW,CAAC,sBAAsB;IAKzD;;;;;OAKG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAKjE;;;;;;;OAOG;IACH,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAInD;;;;OAIG;IACH,YAAY,IAAI,WAAW,CAAC,SAAS,GAAG,IAAI;IAI5C;;;;OAIG;IACH,eAAe,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG,GAAG,IAAI;IAU5C;;;;OAIG;IAEH,OAAO,CAAC,mBAAmB;IAwB3B;;;;OAIG;IACH,YAAY,IAAI,SAAS;IAIzB;;;;OAIG;IACH,SAAS,IAAI,UAAU;CAGxB"}
@@ -1,4 +1,4 @@
1
- import L from 'leaflet';
1
+ import type * as LeafletType from 'leaflet';
2
2
  import type { ViewerConfig, MapOptions } from '@edgepdf/types';
3
3
  import { TileLayerManager } from './tile-layer-manager.js';
4
4
  import { CoordinateMapper } from './coordinate-mapper.js';
@@ -28,7 +28,7 @@ import { MarkerManager } from './marker-manager.js';
28
28
  * }
29
29
  * });
30
30
  *
31
- * viewer.initialize();
31
+ * await viewer.initialize(); // initialize() is now async for SSR support
32
32
  * ```
33
33
  */
34
34
  export declare class EdgePdfViewer {
@@ -64,7 +64,7 @@ export declare class EdgePdfViewer {
64
64
  *
65
65
  * @throws {Error} If map initialization fails
66
66
  */
67
- initialize(): void;
67
+ initialize(): Promise<void>;
68
68
  /**
69
69
  * Calculates optimal initial zoom based on device type
70
70
  *
@@ -84,7 +84,7 @@ export declare class EdgePdfViewer {
84
84
  *
85
85
  * @returns The Leaflet map instance, or null if not initialized
86
86
  */
87
- getMap(): L.Map | null;
87
+ getMap(): LeafletType.Map | null;
88
88
  /**
89
89
  * Checks if the map is initialized
90
90
  *
@@ -1 +1 @@
1
- {"version":3,"file":"viewer.d.ts","sourceRoot":"","sources":["../../src/lib/viewer.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,SAAS,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,aAAa,CAA8B;IAEnD;;;;;;;;;;OAUG;gBACS,OAAO,EAAE;QACnB,SAAS,EAAE,WAAW,CAAC;QACvB,MAAM,EAAE,YAAY,CAAC;QACrB,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB;IAmBD;;;;;;;OAOG;IACH,UAAU,IAAI,IAAI;IA6FlB;;;;;;OAMG;IACH,OAAO,CAAC,2BAA2B;IAmBnC;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAuB7B;;;;OAIG;IACH,MAAM,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI;IAItB;;;;OAIG;IACH,aAAa,IAAI,OAAO;IAIxB;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY;IAwBpB;;;;OAIG;IACH,mBAAmB,IAAI,gBAAgB,GAAG,IAAI;IAI9C;;;;OAIG;IACH,mBAAmB,IAAI,gBAAgB,GAAG,IAAI;IAI9C;;;;OAIG;IACH,iBAAiB,IAAI,cAAc,GAAG,IAAI;IAI1C;;;;OAIG;IACH,gBAAgB,IAAI,aAAa,GAAG,IAAI;IAIxC;;;;;OAKG;IACH,OAAO,IAAI,IAAI;CA0BhB"}
1
+ {"version":3,"file":"viewer.d.ts","sourceRoot":"","sources":["../../src/lib/viewer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,WAAW,MAAM,SAAS,CAAC;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,aAAa,CAA8B;IAEnD;;;;;;;;;;OAUG;gBACS,OAAO,EAAE;QACnB,SAAS,EAAE,WAAW,CAAC;QACvB,MAAM,EAAE,YAAY,CAAC;QACrB,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB;IAmBD;;;;;;;OAOG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgGjC;;;;;;OAMG;IACH,OAAO,CAAC,2BAA2B;IAmBnC;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAuB7B;;;;OAIG;IACH,MAAM,IAAI,WAAW,CAAC,GAAG,GAAG,IAAI;IAIhC;;;;OAIG;IACH,aAAa,IAAI,OAAO;IAIxB;;;;;;;OAOG;YACW,YAAY;IAwB1B;;;;OAIG;IACH,mBAAmB,IAAI,gBAAgB,GAAG,IAAI;IAI9C;;;;OAIG;IACH,mBAAmB,IAAI,gBAAgB,GAAG,IAAI;IAI9C;;;;OAIG;IACH,iBAAiB,IAAI,cAAc,GAAG,IAAI;IAI1C;;;;OAIG;IACH,gBAAgB,IAAI,aAAa,GAAG,IAAI;IAIxC;;;;;OAKG;IACH,OAAO,IAAI,IAAI;CA0BhB"}
@@ -1,4 +1,4 @@
1
- import L from 'leaflet';
1
+ import type * as LeafletType from 'leaflet';
2
2
  import type { ImageInfo, ZoomConfig, ZoomState } from '@edgepdf/types';
3
3
  /**
4
4
  * ZoomController - Manages zoom state and operations for the viewer
@@ -55,7 +55,7 @@ export declare class ZoomController {
55
55
  * @throws {Error} If imageInfo is invalid
56
56
  */
57
57
  constructor(options: {
58
- map: L.Map;
58
+ map: LeafletType.Map;
59
59
  imageInfo: ImageInfo;
60
60
  config?: Partial<ZoomConfig>;
61
61
  });
@@ -1 +1 @@
1
- {"version":3,"file":"zoom-controller.d.ts","sourceRoot":"","sources":["../../src/lib/zoom-controller.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,SAAS,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,mBAAmB,CAA8C;IAEzE;;;;;;;;;;OAUG;gBACS,OAAO,EAAE;QACnB,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;QACX,SAAS,EAAE,SAAS,CAAC;QACrB,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;KAC9B;IAgDD;;;;;;;;;OASG;IACH,8BAA8B,IAAI,MAAM;IAyBxC;;;;;;OAMG;IACH,2BAA2B,IAAI,MAAM;IAiBrC;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAOnC;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQlC;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO;IAahD;;;;;;OAMG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO;IAajD;;;;;;;OAOG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAe5D;;;;OAIG;IACH,YAAY,IAAI,SAAS;IAIzB;;;;OAIG;IACH,OAAO,IAAI,MAAM;IAIjB;;;;OAIG;IACH,UAAU,IAAI,MAAM;IAIpB;;;;OAIG;IACH,UAAU,IAAI,MAAM;IAIpB;;;;OAIG;IACH,SAAS,IAAI,OAAO;IAIpB;;;;OAIG;IACH,UAAU,IAAI,OAAO;IAIrB;;;;;OAKG;IACH,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,MAAM,IAAI;IAS9D;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAI1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;OAEG;IACH,OAAO,IAAI,IAAI;CAKhB"}
1
+ {"version":3,"file":"zoom-controller.d.ts","sourceRoot":"","sources":["../../src/lib/zoom-controller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,WAAW,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,mBAAmB,CAA8C;IAEzE;;;;;;;;;;OAUG;gBACS,OAAO,EAAE;QACnB,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC;QACrB,SAAS,EAAE,SAAS,CAAC;QACrB,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;KAC9B;IAgDD;;;;;;;;;OASG;IACH,8BAA8B,IAAI,MAAM;IAyBxC;;;;;;OAMG;IACH,2BAA2B,IAAI,MAAM;IAiBrC;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAOnC;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQlC;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO;IAahD;;;;;;OAMG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO;IAajD;;;;;;;OAOG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAe5D;;;;OAIG;IACH,YAAY,IAAI,SAAS;IAIzB;;;;OAIG;IACH,OAAO,IAAI,MAAM;IAIjB;;;;OAIG;IACH,UAAU,IAAI,MAAM;IAIpB;;;;OAIG;IACH,UAAU,IAAI,MAAM;IAIpB;;;;OAIG;IACH,SAAS,IAAI,OAAO;IAIpB;;;;OAIG;IACH,UAAU,IAAI,OAAO;IAIrB;;;;;OAKG;IACH,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,MAAM,IAAI;IAS9D;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAI1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;OAEG;IACH,OAAO,IAAI,IAAI;CAKhB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edgepdf/viewer-js",
3
- "version": "0.0.30",
3
+ "version": "0.0.31",
4
4
  "description": "EdgePDF Viewer - JavaScript library for viewing PDF documents with interactive markers and zoom controls",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",