@nulib/clover 4.5.8 → 4.6.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.
Files changed (308) hide show
  1. package/dist/components/Canvas/CanvasView.mjs +19 -0
  2. package/dist/components/Canvas/Connected.mjs +5 -1
  3. package/dist/components/Canvas/FrameAnimation.mjs +4 -48
  4. package/dist/components/Items/Items.mjs +31 -2
  5. package/dist/components/Items/vertical/ItemsVertical.mjs +8 -0
  6. package/dist/components/Transcript/Transcript.mjs +17 -2
  7. package/dist/core/request.mjs +7 -0
  8. package/dist/core/save-file.mjs +5 -2
  9. package/dist/core/selectors.mjs +9 -1
  10. package/dist/core/vtt.mjs +6 -4
  11. package/dist/i18n/locales/en.json.mjs +1 -1
  12. package/dist/i18n/locales/es.json.mjs +1 -1
  13. package/dist/i18n/locales/fi.json.mjs +1 -1
  14. package/dist/i18n/locales/fr.json.mjs +1 -1
  15. package/dist/i18n/locales/it.json.mjs +1 -1
  16. package/dist/i18n/locales/ja.json.mjs +1 -1
  17. package/dist/i18n/locales/nb.json.mjs +1 -1
  18. package/dist/i18n/locales/nn.json.mjs +1 -1
  19. package/dist/i18n/locales/no.json.mjs +1 -1
  20. package/dist/i18n/locales/pt.json.mjs +1 -1
  21. package/dist/i18n/locales/zh-Hans.json.mjs +1 -1
  22. package/dist/i18n/locales/zh-Hant.json.mjs +1 -1
  23. package/dist/lib/gltf/load.mjs +5 -2
  24. package/dist/lib/renderer/CanvasRenderer.mjs +179 -42
  25. package/dist/lib/renderer/backends/webgl2/shaders.mjs +2 -1
  26. package/dist/lib/renderer/io/TileCache.mjs +1 -1
  27. package/dist/lib/renderer/io/decode.mjs +2 -1
  28. package/dist/lib/renderer/scene/planFrame.mjs +17 -0
  29. package/dist/lib/renderer/scene/sceneItem.mjs +9 -4
  30. package/dist/lib/renderer/sources/imageService.mjs +2 -1
  31. package/dist/lib/renderer/sources/tilePyramid.mjs +14 -3
  32. package/dist/styles/core.css +1 -1
  33. package/dist/styles/items-vertical.css +1 -0
  34. package/dist/styles/items.css +1 -1
  35. package/dist/styles.css +1 -1
  36. package/dist/ui/Loading.mjs +9 -0
  37. package/dist/ui/loadingPass.mjs +52 -0
  38. package/dist/ui/sheets/items-vertical.mjs +5 -0
  39. package/dist/web-components/{About-CVX3WjIM.mjs → About-Brbhm22a.mjs} +1 -1
  40. package/dist/web-components/AnnotationItems-Dy4BNabL.mjs +1 -0
  41. package/dist/web-components/{AnnotationMenu-DS8hpHt_.mjs → AnnotationMenu-4PN2LNP-.mjs} +1 -1
  42. package/dist/web-components/{AnnotationState-C6XuLyjK.mjs → AnnotationState-3KHHmQhl.mjs} +1 -1
  43. package/dist/web-components/{Annotations-DZ0uCsSA.mjs → Annotations-BwKS6fG8.mjs} +1 -1
  44. package/dist/web-components/{Annotations-C6jdThgl.mjs → Annotations-CPUvoKJe.mjs} +1 -1
  45. package/dist/web-components/{Body-BSgaX-3F.mjs → Body-CTzmxY8R.mjs} +1 -1
  46. package/dist/web-components/{BodyAlert-B4aQaIUq.mjs → BodyAlert-CXOxbNBE.mjs} +1 -1
  47. package/dist/web-components/{Button-DjjrKoEn.mjs → Button-a59NBnOp.mjs} +1 -1
  48. package/dist/web-components/{Camera-BEeXRxzV.mjs → Camera-BlbXBgYZ.mjs} +1 -1
  49. package/dist/web-components/{Canvas2DBackend-nJRJutaS.mjs → Canvas2DBackend-DXCfms6g.mjs} +1 -1
  50. package/dist/web-components/CanvasView-CiP25Iqc.mjs +2 -0
  51. package/dist/web-components/{CaptionDetails-ljenvCyI.mjs → CaptionDetails-CCCTWTQP.mjs} +1 -1
  52. package/dist/web-components/{ChaptersMenu-DDgnLAtO.mjs → ChaptersMenu-Bne6N9cf.mjs} +1 -1
  53. package/dist/web-components/{Chevron-JoTeVk7K.mjs → Chevron-CH8yyEDi.mjs} +1 -1
  54. package/dist/web-components/{ChoiceMenu-82jUcgr6.mjs → ChoiceMenu-BQVTRzXj.mjs} +1 -1
  55. package/dist/web-components/{Collection-JI80uk-a.mjs → Collection-CbEMQWrO.mjs} +1 -1
  56. package/dist/web-components/{CollectionSelect-CxOlBjmO.mjs → CollectionSelect-BpvtCwSl.mjs} +1 -1
  57. package/dist/web-components/Connected-BWomgzfE.mjs +1 -0
  58. package/dist/web-components/{Connected-Bur9iAGb.mjs → Connected-C31vzWei.mjs} +1 -1
  59. package/dist/web-components/{Connected-DTYB8ubW.mjs → Connected-Dq0xux9o.mjs} +1 -1
  60. package/dist/web-components/{Contents-cwsn0zpJ.mjs → Contents-CGc6_Z5c.mjs} +1 -1
  61. package/dist/web-components/{ControlMenu-BBBRHutV.mjs → ControlMenu-ej-Kpb31.mjs} +1 -1
  62. package/dist/web-components/ControlsFade-CStkqANR.mjs +1 -0
  63. package/dist/web-components/{CountMenu-DFOUdzB0.mjs → CountMenu-D4M1roIh.mjs} +1 -1
  64. package/dist/web-components/Cue-BhXRUDe9.mjs +1 -0
  65. package/dist/web-components/{Document-CKJYtix1.mjs → Document-CPQELxSI.mjs} +1 -1
  66. package/dist/web-components/{DomLayers-vrvJUN5_.mjs → DomLayers-DwhkzPRS.mjs} +1 -1
  67. package/dist/web-components/{Download-CQX7fDub.mjs → Download-Dsei4KG3.mjs} +1 -1
  68. package/dist/web-components/{EntryBodies-BvHccb-L.mjs → EntryBodies-BI7V3B5i.mjs} +1 -1
  69. package/dist/web-components/{EntryThumbnail-YuRsScmh.mjs → EntryThumbnail-BnMLzy5M.mjs} +1 -1
  70. package/dist/web-components/{FieldPill-D8JBm03i.mjs → FieldPill-BOeOasUT.mjs} +1 -1
  71. package/dist/web-components/FrameAnimation-BcEfAQrI.mjs +1 -0
  72. package/dist/web-components/{Gallery-BH4b0bkJ.mjs → Gallery-BDGDzt0R.mjs} +1 -1
  73. package/dist/web-components/{GlobeGlyph-DU4HgIlU.mjs → GlobeGlyph-9zKXX7B6.mjs} +1 -1
  74. package/dist/web-components/{HideToggle-C5GjtOeD.mjs → HideToggle-CmwFnHcZ.mjs} +1 -1
  75. package/dist/web-components/{ImageControls-D4NriMaR.mjs → ImageControls-CSHxdUD1.mjs} +1 -1
  76. package/dist/web-components/Items-DCRr750U.mjs +1 -0
  77. package/dist/web-components/ItemsVertical-BeIiJ37B.mjs +1 -0
  78. package/dist/web-components/{Label-AzCladKz.mjs → Label-CVfL9bMO.mjs} +1 -1
  79. package/dist/web-components/{LanguageChoice-BjOVXoTc.mjs → LanguageChoice-D_vEiQp9.mjs} +1 -1
  80. package/dist/web-components/{LanguageMenu-DYKPJWTQ.mjs → LanguageMenu-ycNvnbOB.mjs} +1 -1
  81. package/dist/web-components/{LightboxView-BTtyMjPN.mjs → LightboxView-CsOAsZ3f.mjs} +1 -1
  82. package/dist/web-components/{ListEnd-Dp2ZLTtS.mjs → ListEnd-B6tyeK1B.mjs} +1 -1
  83. package/dist/web-components/{Loaded-B_afJf30.mjs → Loaded-CSYg8oIR.mjs} +1 -1
  84. package/dist/web-components/LoadedCanvas-W9sCFkdf.mjs +1 -0
  85. package/dist/web-components/LoadedMap-jx7uEeDg.mjs +1 -0
  86. package/dist/web-components/Loading-CAkF1fBT.mjs +1 -0
  87. package/dist/web-components/{Map-Sr8lEkIx.mjs → Map-BDsBYSp5.mjs} +1 -1
  88. package/dist/web-components/{MapView-Cyuq8ZjK.mjs → MapView-DO23FSrT.mjs} +2 -2
  89. package/dist/web-components/{Markup-D_j5vPvk.mjs → Markup-COA2t_y1.mjs} +1 -1
  90. package/dist/web-components/{MediaBody-DRkphCAw.mjs → MediaBody-CNk9fFfN.mjs} +1 -1
  91. package/dist/web-components/{MediaBody-BFkIoL-g.mjs → MediaBody-XsEObuYV.mjs} +1 -1
  92. package/dist/web-components/{NavDate-DWIV5F6P.mjs → NavDate-1LLiZ8Vq.mjs} +1 -1
  93. package/dist/web-components/{Navigator-R3SCVscB.mjs → Navigator-t1y35uj8.mjs} +1 -1
  94. package/dist/web-components/{Pager-D6slnuet.mjs → Pager-35N8_3lH.mjs} +1 -1
  95. package/dist/web-components/PagerLayout-SNT5cl4D.mjs +1 -0
  96. package/dist/web-components/{Panel-CuGSpuMG.mjs → Panel-D16u98YB.mjs} +1 -1
  97. package/dist/web-components/PanelPart-DfjlK_hB.mjs +1 -0
  98. package/dist/web-components/{PanelToggle-DGi2sN1Y.mjs → PanelToggle-BcUVIbQw.mjs} +1 -1
  99. package/dist/web-components/{PartOfManifest-dHMlHOeZ.mjs → PartOfManifest-BYyflVQI.mjs} +1 -1
  100. package/dist/web-components/{Pending-DqTfvy6z.mjs → Pending-bIYd0PwB.mjs} +1 -1
  101. package/dist/web-components/PlaceBox-D-pLIX5w.mjs +1 -0
  102. package/dist/web-components/{Placeholder-D2xzRHzw.mjs → Placeholder-Mq1Iaasr.mjs} +1 -1
  103. package/dist/web-components/{Position-CZxedOcV.mjs → Position-Bh1Iq4d6.mjs} +1 -1
  104. package/dist/web-components/{Primitives-DjUlp4ln.mjs → Primitives-DP2uwwcU.mjs} +1 -1
  105. package/dist/web-components/{Provider-BhDLDrIb.mjs → Provider-BUDzNTyJ.mjs} +1 -1
  106. package/dist/web-components/{ReadMore-l-ljjCbA.mjs → ReadMore-B6qft77s.mjs} +1 -1
  107. package/dist/web-components/Root-J9v7nQ6o.mjs +1 -0
  108. package/dist/web-components/Scene-CdqC1O-B.mjs +1 -0
  109. package/dist/web-components/{SceneView-C-5ZBOMj.mjs → SceneView-DykQJepG.mjs} +1 -1
  110. package/dist/web-components/{Search-DvSuOWsf.mjs → Search-DEoFdx2g.mjs} +1 -1
  111. package/dist/web-components/{Sections-WeQ6ifoH.mjs → Sections-B6j9eFao.mjs} +1 -1
  112. package/dist/web-components/{SeekMarks-CnV7psCC.mjs → SeekMarks-C3ZDOMbt.mjs} +1 -1
  113. package/dist/web-components/StandaloneItems-CtxMB090.mjs +1 -0
  114. package/dist/web-components/{Status-CjAX4ZcY.mjs → Status-C49DxNaY.mjs} +1 -1
  115. package/dist/web-components/{Steps-WGighDCr.mjs → Steps-BTAJ3lc6.mjs} +1 -1
  116. package/dist/web-components/{TargetItems-CHK11XsC.mjs → TargetItems-BZFSWVs6.mjs} +1 -1
  117. package/dist/web-components/Timeline-D5oL1UyW.mjs +1 -0
  118. package/dist/web-components/{Tip-MXBlEQhp.mjs → Tip-Dv-gYN8n.mjs} +1 -1
  119. package/dist/web-components/Transcript-FmC6HR0-.mjs +1 -0
  120. package/dist/web-components/{Transport-DkJkLd_9.mjs → Transport-BKFLjI45.mjs} +1 -1
  121. package/dist/web-components/{Transport-B4jS-QyR.mjs → Transport-pRWbs9M3.mjs} +1 -1
  122. package/dist/web-components/{annotation-collection-DgDTaqZJ.mjs → annotation-collection-Dc-peX7w.mjs} +1 -1
  123. package/dist/web-components/{annotation-name-BQPsnye0.mjs → annotation-name-BhbhOgES.mjs} +1 -1
  124. package/dist/web-components/{annotations-content-C2Ard-Wu.mjs → annotations-content-BJSUCNd1.mjs} +1 -1
  125. package/dist/web-components/{body-CsDqGyS1.mjs → body-BEZ3sYcR.mjs} +1 -1
  126. package/dist/web-components/{canvas-DYIiw-An.mjs → canvas-CfnKZqTU.mjs} +1 -1
  127. package/dist/web-components/{viewer/cloverEngine-SxAYyRtz.mjs → cloverEngine-BstElW9l.mjs} +3 -3
  128. package/dist/web-components/{content-state-reader-W2X5SbX2.mjs → content-state-reader-DGOg8oAH.mjs} +1 -1
  129. package/dist/web-components/{controlGlyphs-DO8zuBuP.mjs → controlGlyphs-Lxfq7zz4.mjs} +1 -1
  130. package/dist/web-components/{controls-B-kceETo.mjs → controls-BibZpBh1.mjs} +1 -1
  131. package/dist/web-components/{downloads-b2ula2rS.mjs → downloads-cYib41PV.mjs} +1 -1
  132. package/dist/web-components/{dragToClose-CyySNxZo.mjs → dragToClose-BpzjNnPx.mjs} +1 -1
  133. package/dist/web-components/{engine-BO2NyZbt.mjs → engine-Cl755NaO.mjs} +1 -1
  134. package/dist/web-components/{engines-ByJdQYM6.mjs → engines-fZzYf1dz.mjs} +1 -1
  135. package/dist/web-components/{es-Bn4XnLxy.mjs → es-Bx-zZBfZ.mjs} +1 -1
  136. package/dist/web-components/{fetchManifest-BJPcndui.mjs → fetchManifest-D31pEPrb.mjs} +1 -1
  137. package/dist/web-components/{fi-CjAXeLqH.mjs → fi-DsP1FhBy.mjs} +1 -1
  138. package/dist/web-components/{follow-content-Bta7Cphz.mjs → follow-content-Byosc3Ev.mjs} +1 -1
  139. package/dist/web-components/{fr-CeFhkxoi.mjs → fr-BuL_F9Jq.mjs} +1 -1
  140. package/dist/web-components/{fromManifest-toVz2G-X.mjs → fromManifest-DqCyZd2Q.mjs} +1 -1
  141. package/dist/web-components/{glyphs-C9dkvLmy.mjs → glyphs-8fjIPAtZ.mjs} +1 -1
  142. package/dist/web-components/{hooks-C1S0JZNP.mjs → hooks-Bo5GjPGX.mjs} +1 -1
  143. package/dist/web-components/{image-layers-hf965hJE.mjs → image-layers-CFarmTfZ.mjs} +1 -1
  144. package/dist/web-components/{image-service-content-kG5TIiB7.mjs → image-service-content-bUFBZCr1.mjs} +1 -1
  145. package/dist/web-components/imageService-CCKieCxo.mjs +1 -0
  146. package/dist/web-components/{index-BqgqqnqN.mjs → index-DhlRi3H9.mjs} +1 -1
  147. package/dist/web-components/index.mjs +1 -1
  148. package/dist/web-components/{it-DxtfVek2.mjs → it-DH3EtrgI.mjs} +1 -1
  149. package/dist/web-components/items-BXd02UN6.mjs +1 -0
  150. package/dist/web-components/{items-DNfIV4vN.mjs → items-CKMFXz0W.mjs} +1 -1
  151. package/dist/web-components/{ja-rsicBgWR.mjs → ja-BEHbDotv.mjs} +1 -1
  152. package/dist/web-components/label-DcF-YCIN.mjs +1 -0
  153. package/dist/web-components/{layout--P98JuFG.mjs → layout-DQtgCOJJ.mjs} +1 -1
  154. package/dist/web-components/{link-p71HL3dn.mjs → link-q4quIuuD.mjs} +1 -1
  155. package/dist/web-components/logo-DWI0N9FL.mjs +1 -0
  156. package/dist/web-components/{models-BnyeBKu_.mjs → models-Dw-cADIz.mjs} +1 -1
  157. package/dist/web-components/{no-BkyI1fhp.mjs → nb-Bdfn_mZs.mjs} +1 -1
  158. package/dist/web-components/{nn-n_xM6AGl.mjs → nn-BCWbSuK0.mjs} +1 -1
  159. package/dist/web-components/{nb-BkyI1fhp.mjs → no-Bdfn_mZs.mjs} +1 -1
  160. package/dist/web-components/{nodes-DZbVJvjk.mjs → nodes-nZmQ93ib.mjs} +1 -1
  161. package/dist/web-components/{overlayImage-D6TfbX70.mjs → overlayImage-B-ybt0wn.mjs} +1 -1
  162. package/dist/web-components/{panel-COA5_tL_.mjs → panel-C27fOmhT.mjs} +1 -1
  163. package/dist/web-components/part-B9t8Qe9D.mjs +1 -0
  164. package/dist/web-components/{playerSurface-Uc4JAuxZ.mjs → playerSurface-BLzwC0Ux.mjs} +1 -1
  165. package/dist/web-components/{pointer-BPJduQ1u.mjs → pointer-BYZjBehK.mjs} +1 -1
  166. package/dist/web-components/{provider-B4tq-84F.mjs → provider-Cs6sFr4G.mjs} +1 -1
  167. package/dist/web-components/{pt-COchUT7D.mjs → pt-Da5El49z.mjs} +1 -1
  168. package/dist/web-components/{range-regions-92kmJCAy.mjs → range-regions-DssQTTra.mjs} +1 -1
  169. package/dist/web-components/{read-more-BnhdOE8Y.mjs → read-more-Cp9CLzyd.mjs} +1 -1
  170. package/dist/web-components/{readingLanguages-Bf_HW2UJ.mjs → readingLanguages-D97yt-4s.mjs} +1 -1
  171. package/dist/web-components/rendererSurface-BuBm8Th_.mjs +22 -0
  172. package/dist/web-components/{renderers-CX9SrgrB.mjs → renderers-BL-b8snn.mjs} +1 -1
  173. package/dist/web-components/{resource-DF5HkAfv.mjs → resource-DwKOZbOZ.mjs} +1 -1
  174. package/dist/web-components/save-file-CcfAgDXf.mjs +1 -0
  175. package/dist/web-components/{search-BvpD-NWY.mjs → search-C45Jd7QH.mjs} +1 -1
  176. package/dist/web-components/shared-D2pvbPvF.mjs +1 -0
  177. package/dist/web-components/{show-link-DRCdG8ae.mjs → show-link-D9bByIzf.mjs} +1 -1
  178. package/dist/web-components/{sizedImage-BtyysLax.mjs → sizedImage-BFAry04f.mjs} +1 -1
  179. package/dist/web-components/{split-DFthztSD.mjs → split-CDZiE4rz.mjs} +1 -1
  180. package/dist/web-components/{status-BZuOJ0UE.mjs → status-BtCciELI.mjs} +1 -1
  181. package/dist/web-components/styles-Bf3qmdsh.mjs +1 -0
  182. package/dist/web-components/three.mjs +1 -1
  183. package/dist/web-components/thumbnail-By5wfGlE.mjs +1 -0
  184. package/dist/web-components/{tip-ukHtKmqe.mjs → tip-_XUeFMj4.mjs} +1 -1
  185. package/dist/web-components/{toggle-DX4vFKqT.mjs → toggle-DkPNS5eL.mjs} +1 -1
  186. package/dist/web-components/{useContainerName-CM_MIZu9.mjs → useContainerName-BfU0IozO.mjs} +1 -1
  187. package/dist/web-components/{useControlsVisibility-DZFyrqAJ.mjs → useControlsVisibility-pU1JVIpK.mjs} +1 -1
  188. package/dist/web-components/{useNearViewport-DHvgWl-0.mjs → useNearViewport-D1kQt-tS.mjs} +1 -1
  189. package/dist/web-components/{useScrollTrack-B0Nx9ZZ7.mjs → useScrollTrack-cQfG_zk_.mjs} +1 -1
  190. package/dist/web-components/viewer/{AnnotationItems-CLssRyMA.mjs → AnnotationItems-UHFS1uDO.mjs} +1 -1
  191. package/dist/web-components/viewer/{AnnotationMenu-i4ieWtOL.mjs → AnnotationMenu-0Ru0csCz.mjs} +1 -1
  192. package/dist/web-components/viewer/{AnnotationState-BmDac4UI.mjs → AnnotationState-hEds2Tpa.mjs} +1 -1
  193. package/dist/web-components/viewer/{Annotations-CEwycZ2M.mjs → Annotations-Oprg7015.mjs} +1 -1
  194. package/dist/web-components/viewer/{Annotations-C-zxQ4wJ.mjs → Annotations-vzP6-fS4.mjs} +1 -1
  195. package/dist/web-components/viewer/{Canvas2DBackend-BFb2tuhl.mjs → Canvas2DBackend-3b5xEKac.mjs} +1 -1
  196. package/dist/web-components/viewer/CaptionDetails-DDIjm-rC.mjs +1 -0
  197. package/dist/web-components/viewer/ChaptersMenu-DmJy-cfd.mjs +1 -0
  198. package/dist/web-components/viewer/{ChoiceMenu-Ccv0BI0G.mjs → ChoiceMenu-COUDRKGM.mjs} +1 -1
  199. package/dist/web-components/viewer/{Collection-86-r4tY9.mjs → Collection-kWUradiW.mjs} +1 -1
  200. package/dist/web-components/viewer/{Connected-D_7Zs7Hq.mjs → Connected-B2TrgX9-.mjs} +1 -1
  201. package/dist/web-components/viewer/{Connected-DbLzPNdX.mjs → Connected-FiJKHEv9.mjs} +1 -1
  202. package/dist/web-components/viewer/{Contents-DUjhQjnI.mjs → Contents-DHyzbjco.mjs} +1 -1
  203. package/dist/web-components/viewer/{ControlMenu-CKcTiPrh.mjs → ControlMenu-DWi6tgKb.mjs} +1 -1
  204. package/dist/web-components/viewer/ControlsFade-CuooJOpa.mjs +1 -0
  205. package/dist/web-components/viewer/{CountMenu-B1_cvbuR.mjs → CountMenu-BYU6T0Ou.mjs} +1 -1
  206. package/dist/web-components/viewer/Cue-Ct2isFl7.mjs +1 -0
  207. package/dist/web-components/viewer/{Document-BGRVcflJ.mjs → Document-BtN3vmsO.mjs} +1 -1
  208. package/dist/web-components/viewer/{DomLayers-wxV3sHPY.mjs → DomLayers-CEzVM7HQ.mjs} +1 -1
  209. package/dist/web-components/viewer/{Download-Cyfhran6.mjs → Download-5BsnDZLL.mjs} +1 -1
  210. package/dist/web-components/viewer/{EntryBodies-B2WCkj8y.mjs → EntryBodies-D9R-wouw.mjs} +1 -1
  211. package/dist/web-components/viewer/{EntryThumbnail-dUTxyqTj.mjs → EntryThumbnail-P6CmjmO9.mjs} +1 -1
  212. package/dist/web-components/viewer/{FieldPill-D8gW-r_p.mjs → FieldPill-CsyRt9Xh.mjs} +1 -1
  213. package/dist/web-components/viewer/FrameAnimation-f4RKtdpP.mjs +1 -0
  214. package/dist/web-components/viewer/{Gallery-OZ5ZiwmB.mjs → Gallery-DC4QY9lG.mjs} +1 -1
  215. package/dist/web-components/viewer/{GlobeGlyph-CXycpMBJ.mjs → GlobeGlyph-BwZm2Ffj.mjs} +1 -1
  216. package/dist/web-components/viewer/{HideToggle-BMddH3GA.mjs → HideToggle-BD6zlrz3.mjs} +1 -1
  217. package/dist/web-components/viewer/{ImageControls-Bu_6VlDO.mjs → ImageControls-Bw9a17cS.mjs} +1 -1
  218. package/dist/web-components/viewer/ItemsVertical-BftsRVJP.mjs +1 -0
  219. package/dist/web-components/viewer/{LanguageChoice-BUTtsHEi.mjs → LanguageChoice-CcDmpHnE.mjs} +1 -1
  220. package/dist/web-components/viewer/{LanguageMenu-DOYyHpdr.mjs → LanguageMenu-CRtM-mLy.mjs} +1 -1
  221. package/dist/web-components/viewer/{LightboxView-DP4_ElsL.mjs → LightboxView-DJoH23fL.mjs} +1 -1
  222. package/dist/web-components/viewer/{ListEnd-CEdhO0md.mjs → ListEnd-CSp0KGGZ.mjs} +1 -1
  223. package/dist/web-components/viewer/{MapView-qaaRmnM-.mjs → MapView-BO2ppZpW.mjs} +2 -2
  224. package/dist/web-components/viewer/{MediaBody-Cjl76Spk.mjs → MediaBody-CMddJWMF.mjs} +1 -1
  225. package/dist/web-components/viewer/{MediaBody-CvXptO7l.mjs → MediaBody-D-1SNnW2.mjs} +1 -1
  226. package/dist/web-components/viewer/{NavDate-OJND1QQD.mjs → NavDate-BJ_MF_t1.mjs} +1 -1
  227. package/dist/web-components/viewer/{Navigator-DRwnm5an.mjs → Navigator-Gt56cM6f.mjs} +1 -1
  228. package/dist/web-components/viewer/{PagerLayout-DN7ZEktF.mjs → PagerLayout-BMrlMLfO.mjs} +1 -1
  229. package/dist/web-components/viewer/PanelPart-CaxBca8z.mjs +1 -0
  230. package/dist/web-components/viewer/{PartOfManifest-3cK5il9_.mjs → PartOfManifest-BdZWbAQI.mjs} +1 -1
  231. package/dist/web-components/viewer/{PlaceBox-C9qj6wIy.mjs → PlaceBox-C27N2KG8.mjs} +1 -1
  232. package/dist/web-components/viewer/{Placeholder-DmX-oTRS.mjs → Placeholder-BX2y25Fo.mjs} +1 -1
  233. package/dist/web-components/viewer/{Search-DLRmliHy.mjs → Search-auUpOyeS.mjs} +1 -1
  234. package/dist/web-components/viewer/{SeekMarks-BsAVx2o9.mjs → SeekMarks-Bg0PLdp0.mjs} +1 -1
  235. package/dist/web-components/viewer/{StandaloneItems-BOXI-FO-.mjs → StandaloneItems-CBRWUCNf.mjs} +1 -1
  236. package/dist/web-components/viewer/{Steps-Dl85Vj2l.mjs → Steps-ABKs2V_m.mjs} +1 -1
  237. package/dist/web-components/viewer/{TargetItems-BVT2_Bey.mjs → TargetItems-BQVUKMAs.mjs} +1 -1
  238. package/dist/web-components/viewer/Transcript-DaShc1z-.mjs +1 -0
  239. package/dist/web-components/viewer/{Transport-DKUQM7Hn.mjs → Transport-6wRUIGiD.mjs} +1 -1
  240. package/dist/web-components/viewer/{Transport-Bu1B2DCX.mjs → Transport-ClkPaaOB.mjs} +1 -1
  241. package/dist/web-components/viewer/{annotation-collection-B7DNaCRe.mjs → annotation-collection-eyRpE2h4.mjs} +1 -1
  242. package/dist/web-components/viewer/{annotation-name-DCAh29x5.mjs → annotation-name-DdchUvJI.mjs} +1 -1
  243. package/dist/web-components/viewer/{annotations-content-BG992gjT.mjs → annotations-content-BZXlT3bR.mjs} +1 -1
  244. package/dist/web-components/{cloverEngine-BjfUbU7f.mjs → viewer/cloverEngine-CZWHXlyY.mjs} +3 -3
  245. package/dist/web-components/viewer/{content-state-reader-CRGjvYpM.mjs → content-state-reader-CDV0Igdx.mjs} +1 -1
  246. package/dist/web-components/viewer/{dragToClose-Di8WUOHC.mjs → dragToClose-CD-MJb-V.mjs} +1 -1
  247. package/dist/web-components/viewer/{fetchManifest-B3gCtveO.mjs → fetchManifest-C1IEIf45.mjs} +1 -1
  248. package/dist/web-components/viewer/{follow-content-2RmNmRMy.mjs → follow-content-IQqCbvbJ.mjs} +1 -1
  249. package/dist/web-components/viewer/{host-CM3zmrKp.mjs → host-BxQrzQnu.mjs} +1 -1
  250. package/dist/web-components/viewer/{image-layers-CmimeZYQ.mjs → image-layers-DurrQgfL.mjs} +1 -1
  251. package/dist/web-components/viewer/{image-service-content-DNYciFvo.mjs → image-service-content-ClAm_g0Y.mjs} +1 -1
  252. package/dist/web-components/viewer/index.mjs +1 -1
  253. package/dist/web-components/viewer/{link-CrW4CND2.mjs → link-Drdj-HcB.mjs} +1 -1
  254. package/dist/web-components/viewer/overlayImage-CDT5ohRo.mjs +1 -0
  255. package/dist/web-components/viewer/{range-regions-DwMexshz.mjs → range-regions-a5eVBfJy.mjs} +1 -1
  256. package/dist/web-components/viewer/{renderers-Cs9Wbr3d.mjs → renderers-CdXzZ9As.mjs} +1 -1
  257. package/dist/web-components/viewer/save-file-B2UBQRXz.mjs +1 -0
  258. package/dist/web-components/viewer/{search-CI1xScP1.mjs → search-BBZKUiMB.mjs} +1 -1
  259. package/dist/web-components/viewer/styles-XRfyRUPf.mjs +1 -0
  260. package/dist/web-components/viewer/{useControlsVisibility-CCTZH1aT.mjs → useControlsVisibility-BfTACzo_.mjs} +1 -1
  261. package/dist/web-components/viewer/viewer-BrkFZVo_.mjs +29 -0
  262. package/dist/web-components/viewer/vtt-CCkTp_f2.mjs +5 -0
  263. package/dist/web-components/{viewer-DD2bGSYe.mjs → viewer-D-AQ7mGw.mjs} +1 -1
  264. package/dist/web-components/vtt-BjXkNfI_.mjs +5 -0
  265. package/dist/web-components/{zh-Hans-Bfn3LUnq.mjs → zh-Hans-BhTHTZXT.mjs} +1 -1
  266. package/dist/web-components/{zh-Hant-DzmK541A.mjs → zh-Hant-_CJAOTzC.mjs} +1 -1
  267. package/package.json +1 -1
  268. package/dist/web-components/AnnotationItems-DKP8AOB9.mjs +0 -1
  269. package/dist/web-components/CanvasView-DK0lfyWR.mjs +0 -2
  270. package/dist/web-components/Connected-CC10s8oE.mjs +0 -1
  271. package/dist/web-components/ControlsFade-DNHDI2WA.mjs +0 -1
  272. package/dist/web-components/Cue-C2a4Pvi3.mjs +0 -1
  273. package/dist/web-components/FrameAnimation-DJRLNImC.mjs +0 -1
  274. package/dist/web-components/Items-V4WBXxYO.mjs +0 -1
  275. package/dist/web-components/LoadedCanvas-DisvEU6k.mjs +0 -1
  276. package/dist/web-components/LoadedMap-DCMWMk1e.mjs +0 -1
  277. package/dist/web-components/Loading-BXzghLiL.mjs +0 -1
  278. package/dist/web-components/PagerLayout-B-a-Bj7s.mjs +0 -1
  279. package/dist/web-components/PanelPart-C5T9XPgt.mjs +0 -1
  280. package/dist/web-components/PlaceBox-DW79A9P1.mjs +0 -1
  281. package/dist/web-components/Root-DdfxetNr.mjs +0 -1
  282. package/dist/web-components/Scene-CoKy2-jQ.mjs +0 -1
  283. package/dist/web-components/StandaloneItems-BrGYircX.mjs +0 -1
  284. package/dist/web-components/Timeline-CylMxHCg.mjs +0 -1
  285. package/dist/web-components/Transcript-BdmTrR_U.mjs +0 -1
  286. package/dist/web-components/imageService-DVoE9khh.mjs +0 -1
  287. package/dist/web-components/items-Di34gCGN.mjs +0 -1
  288. package/dist/web-components/label-Dt_ns3jW.mjs +0 -1
  289. package/dist/web-components/logo-QsMwaY8M.mjs +0 -1
  290. package/dist/web-components/part-DgEyWjer.mjs +0 -1
  291. package/dist/web-components/rendererSurface-BZa3x_Xh.mjs +0 -22
  292. package/dist/web-components/save-file-oScSwFhH.mjs +0 -1
  293. package/dist/web-components/shared-w6hjs-L1.mjs +0 -1
  294. package/dist/web-components/styles-BeCG47FS.mjs +0 -1
  295. package/dist/web-components/thumbnail-DhVhVkd8.mjs +0 -1
  296. package/dist/web-components/viewer/CaptionDetails-Et5z9c7X.mjs +0 -1
  297. package/dist/web-components/viewer/ChaptersMenu-CSFNWKY2.mjs +0 -1
  298. package/dist/web-components/viewer/ControlsFade-Bo9VWCLG.mjs +0 -1
  299. package/dist/web-components/viewer/Cue-DzOw4BLm.mjs +0 -1
  300. package/dist/web-components/viewer/FrameAnimation-ChG6Louz.mjs +0 -1
  301. package/dist/web-components/viewer/PanelPart-CF2Fw2b4.mjs +0 -1
  302. package/dist/web-components/viewer/Transcript-fRjfw6kB.mjs +0 -1
  303. package/dist/web-components/viewer/overlayImage-Bgl_ar2I.mjs +0 -1
  304. package/dist/web-components/viewer/save-file-CpREFWq3.mjs +0 -1
  305. package/dist/web-components/viewer/styles-nU97HodU.mjs +0 -1
  306. package/dist/web-components/viewer/viewer-BDXZbbZI.mjs +0 -29
  307. package/dist/web-components/viewer/vtt-DJjsoNz1.mjs +0 -5
  308. package/dist/web-components/vtt-D30pzLou.mjs +0 -5
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- const nn = JSON.parse('{"commonClose":"Lukk","commonNext":"Neste","commonPrevious":"Førre","commonSearch":"Søk","commonViewAll":"Sjå alle","controlShortcut":"{{label}} ({{shortcut}})","contentSearchLoading":"Lastar inn...","contentSearchPlaceholder":"Søk","contentSearchResultsNone":"Ingen resultat","contentSearchResult":"1 resultat","contentSearchResults":"{{count}} resultat","contentSearchError":"Søket kunne ikkje fullførast.","contentSearchPosition":"Resultat {{index}} av {{total}}","contentSearchClear":"Tøm søket","canvasPosition":"Element {{index}} av {{total}}","canvasImage":"Bilete","bodyUnloadableImage":"Dette biletet kunne ikkje lastast inn.","bodyUnloadableVideo":"Denne videoen kunne ikkje lastast inn.","bodyUnloadableAudio":"Denne lyden kunne ikkje lastast inn.","bodyUnloadableModel":"Denne modellen kunne ikkje lastast inn.","canvasRoleDescription":"zoombart bilete","canvasKeysImage":"Bruk piltastane for å flytte biletet, med Shift for lengre steg, pluss og minus for å zoome, 0 for å tilbakestille visinga, og R eller Shift+R for å rotere.","canvasKeysMedia":"Trykk mellomrom eller K for å spele av eller pause, J eller L for å spole ti sekund bakover eller framover, og M for å slå lyden av eller på.","canvasKeysAnnotations":"Trykk Esc for å fjerne valet av annoteringa.","sceneModel":"3D-modell","sceneRoleDescription":"roterbar 3D-modell","sceneKeys":"Bruk piltastane for å rotere modellen, med Shift for lengre steg, pluss og minus for å zoome, 0 for å tilbakestille visinga, og R eller Shift+R for å rotere han mot høgre eller venstre.","sceneRotateUp":"Roter oppover","sceneRotateDown":"Roter nedover","sceneRotate":"Roter","sceneResetView":"Tilbakestill visinga","statusLoading":"Lastar inn…","statusError":"Dette kunne ikkje lastast inn.","itemsLabel":"Element","download":"Last ned","downloadPage":"Denne sida","downloadAll":"Alle sider","templateSidebar":"Element","templateSidebarToggle":"Vis element","templateBack":"Tilbake","templateBackTo":"Tilbake til {{label}}","collectionLabel":"Samling","itemsScrollBack":"Vis førre element","itemsScrollForward":"Vis fleire element","aboutRights":"Rettigheiter","aboutDate":"Dato","aboutHomepage":"Heimeside","aboutSeeAlso":"Sjå også","aboutProvider":"Leverandør","logo":"Logo","aboutManifest":"IIIF-manifest","aboutCanvas":"IIIF-lerret","aboutPartOf":"Del av","aboutOpenManifest":"Opne heile manifestet","aboutCollection":"IIIF-samling","readingLanguage":"Språk","annotationsHide":"Skjul annoteringar","annotationsHideTip":"Skjul","readMore":"Les meir","readLess":"Les mindre","annotationsShow":"Vis på biletet","annotationsShowTime":"Vis i opptaket","annotationsImage":"Bilete","annotationsLanguage":"Språk","annotationsOpenLink":"Opne","transcriptLabel":"Transkripsjon","imageViewerOpen":"Opne biletvisaren","imageViewerClose":"Lukk biletvisaren","canvasChoice":"Val","canvasViewerControls":"Visarkontrollar","canvasExpandControls":"Utvid visarkontrollane","canvasCollapseControls":"Slå saman visarkontrollane","canvasScrollBack":"Vis førre kontrollar","canvasScrollForward":"Vis fleire kontrollar","imageFullScreen":"Fullskjerm","imageExitFullScreen":"Avslutt fullskjerm","imageResetZoom":"Tilbakestill zoom","imageRotateLeft":"Roter mot venstre","imageRotateRight":"Roter mot høgre","imageZoomIn":"Zoom inn","imageZoomOut":"Zoom ut","informationPanelTabs":"Informasjonspanel","sectionsScrollBack":"Vis førre faner","sectionsScrollForward":"Vis fleire faner","informationPanelClose":"Lukk informasjonspanelet","informationPanelTabsAbout":"Om","informationPanelTabsAnnotations":"Annoteringar","informationPanelTabsSearch":"Søk","informationPanelTabsContents":"Innhald","contentsSectionsIn":"Delar av","informationPanelTabsMap":"Kart","informationPanelTabsCollection":"Samling","informationPanelTabsTargets":"Visingar","mapUnavailable":"Kartet kunne ikkje visast.","mapLabel":"Kart","mapAttribution":"Kartkreditering","mapPlaceUntitled":"Stad {{number}}","mapOverlay":"Georeferert bilete","mapPlacesListed":"Stader lista opp etter kartet: {{count}}","informationPanelToggle":"Meir informasjon","playerPlay":"Spel av","playerPause":"Pause","playerMute":"Demp","playerUnmute":"Slå på lyd","playerVolume":"Volum","playerSeek":"Avspelingsposisjon","playerCaptions":"Teksting","playerCaptionsOff":"Av","playerChapters":"Kapittel","playerFill":"Fyll ramma","playerFit":"Tilpass til ramma","frameRepeat":"Gjenta","playerCurrentTime":"Noverande tid","playerDuration":"Varigheit","splitHandle":"Endre storleiken på panela"}');
2
+ const nn = JSON.parse('{"commonClose":"Lukk","commonNext":"Neste","commonPrevious":"Førre","commonSearch":"Søk","commonViewAll":"Sjå alle","controlShortcut":"{{label}} ({{shortcut}})","contentSearchLoading":"Lastar inn...","contentSearchPlaceholder":"Søk","contentSearchResultsNone":"Ingen resultat","contentSearchResult":"1 resultat","contentSearchResults":"{{count}} resultat","contentSearchError":"Søket kunne ikkje fullførast.","contentSearchPosition":"Resultat {{index}} av {{total}}","contentSearchClear":"Tøm søket","canvasPosition":"Element {{index}} av {{total}}","canvasImage":"Bilete","bodyUnloadableImage":"Dette biletet kunne ikkje lastast inn.","bodyUnloadableVideo":"Denne videoen kunne ikkje lastast inn.","bodyUnloadableAudio":"Denne lyden kunne ikkje lastast inn.","bodyUnloadableModel":"Denne modellen kunne ikkje lastast inn.","canvasRoleDescription":"zoombart bilete","canvasKeysImage":"Bruk piltastane for å flytte biletet, med Shift for lengre steg, pluss og minus for å zoome, 0 for å tilbakestille visinga, og R eller Shift+R for å rotere.","canvasKeysMedia":"Trykk mellomrom eller K for å spele av eller pause, J eller L for å spole ti sekund bakover eller framover, og M for å slå lyden av eller på.","canvasKeysAnnotations":"Trykk Esc for å fjerne valet av annoteringa.","sceneModel":"3D-modell","sceneRoleDescription":"roterbar 3D-modell","sceneKeys":"Bruk piltastane for å rotere modellen, med Shift for lengre steg, pluss og minus for å zoome, 0 for å tilbakestille visinga, og R eller Shift+R for å rotere han mot høgre eller venstre.","sceneRotateUp":"Roter oppover","sceneRotateDown":"Roter nedover","sceneRotate":"Roter","sceneResetView":"Tilbakestill visinga","statusLoading":"Lastar inn…","statusError":"Dette kunne ikkje lastast inn.","itemsLabel":"Element","download":"Last ned","downloadPage":"Denne sida","downloadAll":"Alle sider","templateSidebar":"Element","templateSidebarToggle":"Vis element","templateBack":"Tilbake","templateBackTo":"Tilbake til {{label}}","collectionLabel":"Samling","itemsScrollBack":"Vis førre element","itemsScrollForward":"Vis fleire element","aboutRights":"Rettigheiter","aboutDate":"Dato","aboutHomepage":"Heimeside","aboutSeeAlso":"Sjå også","aboutProvider":"Leverandør","logo":"Logo","aboutManifest":"IIIF-manifest","aboutCanvas":"IIIF-lerret","aboutPartOf":"Del av","aboutOpenManifest":"Opne heile manifestet","aboutCollection":"IIIF-samling","readingLanguage":"Språk","annotationsHide":"Skjul annoteringar","annotationsHideTip":"Skjul","readMore":"Les meir","readLess":"Les mindre","annotationsShow":"Vis på biletet","annotationsShowTime":"Vis i opptaket","annotationsImage":"Bilete","annotationsLanguage":"Språk","annotationsOpenLink":"Opne","transcriptLabel":"Transkripsjon","imageViewerOpen":"Opne biletvisaren","imageViewerClose":"Lukk biletvisaren","canvasChoice":"Val","canvasViewerControls":"Visarkontrollar","canvasExpandControls":"Utvid visarkontrollane","canvasCollapseControls":"Slå saman visarkontrollane","canvasScrollBack":"Vis førre kontrollar","canvasScrollForward":"Vis fleire kontrollar","imageFullScreen":"Fullskjerm","imageExitFullScreen":"Avslutt fullskjerm","imageResetZoom":"Tilbakestill zoom","imageRotateLeft":"Roter mot venstre","imageRotateRight":"Roter mot høgre","imageZoomIn":"Zoom inn","imageZoomOut":"Zoom ut","informationPanelTabs":"Informasjonspanel","sectionsScrollBack":"Vis førre faner","sectionsScrollForward":"Vis fleire faner","informationPanelClose":"Lukk informasjonspanelet","informationPanelTabsAbout":"Om","informationPanelTabsAnnotations":"Annoteringar","informationPanelTabsSearch":"Søk","informationPanelTabsContents":"Innhald","contentsSectionsIn":"Delar av","informationPanelTabsMap":"Kart","informationPanelTabsCollection":"Samling","informationPanelTabsTargets":"Visingar","mapUnavailable":"Kartet kunne ikkje visast.","mapLabel":"Kart","mapAttribution":"Kartkreditering","mapPlaceUntitled":"Stad {{number}}","mapOverlay":"Georeferert bilete","mapPlacesListed":"Stader lista opp etter kartet: {{count}}","informationPanelToggle":"Meir informasjon","playerPlay":"Spel av","playerPause":"Pause","playerMute":"Demp","playerUnmute":"Slå på lyd","playerVolume":"Volum","playerSeek":"Avspelingsposisjon","playerCaptions":"Teksting","playerCaptionsOff":"Av","playerChapters":"Kapittel","playerFill":"Fyll ramma","playerFit":"Tilpass til ramma","playerCurrentTime":"Noverande tid","playerDuration":"Varigheit","splitHandle":"Endre storleiken på panela"}');
3
3
  export {
4
4
  nn as default
5
5
  };
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- const no = JSON.parse('{"commonClose":"Lukk","commonNext":"Neste","commonPrevious":"Forrige","commonSearch":"Søk","commonViewAll":"Se alle","controlShortcut":"{{label}} ({{shortcut}})","contentSearchLoading":"Laster inn...","contentSearchPlaceholder":"Søk","contentSearchResultsNone":"Ingen resultat","contentSearchResult":"1 resultat","contentSearchResults":"{{count}} resultater","contentSearchError":"Søket kunne ikke fullføres.","contentSearchPosition":"Resultat {{index}} av {{total}}","contentSearchClear":"Tøm søket","canvasPosition":"Element {{index}} av {{total}}","canvasImage":"Bilde","bodyUnloadableImage":"Dette bildet kunne ikke lastes inn.","bodyUnloadableVideo":"Denne videoen kunne ikke lastes inn.","bodyUnloadableAudio":"Denne lyden kunne ikke lastes inn.","bodyUnloadableModel":"Denne modellen kunne ikke lastes inn.","canvasRoleDescription":"zoombart bilde","canvasKeysImage":"Bruk piltastene for å flytte bildet, med Shift for lengre steg, pluss og minus for å zoome, 0 for å tilbakestille visningen, og R eller Shift+R for å rotere.","canvasKeysMedia":"Trykk mellomrom eller K for å spille av eller pause, J eller L for å spole ti sekunder bakover eller fremover, og M for å slå lyden av eller på.","canvasKeysAnnotations":"Trykk Esc for å fjerne valget av annoteringen.","sceneModel":"3D-modell","sceneRoleDescription":"roterbar 3D-modell","sceneKeys":"Bruk piltastene for å rotere modellen, med Shift for lengre steg, pluss og minus for å zoome, 0 for å tilbakestille visningen, og R eller Shift+R for å rotere den mot høyre eller venstre.","sceneRotateUp":"Roter oppover","sceneRotateDown":"Roter nedover","sceneRotate":"Roter","sceneResetView":"Tilbakestill visningen","statusLoading":"Laster inn…","statusError":"Dette kunne ikke lastes inn.","itemsLabel":"Elementer","download":"Last ned","downloadPage":"Denne siden","downloadAll":"Alle sider","templateSidebar":"Elementer","templateSidebarToggle":"Vis elementer","templateBack":"Tilbake","templateBackTo":"Tilbake til {{label}}","collectionLabel":"Samling","itemsScrollBack":"Vis forrige elementer","itemsScrollForward":"Vis flere elementer","aboutRights":"Rettigheter","aboutDate":"Dato","aboutHomepage":"Hjemmeside","aboutSeeAlso":"Se også","aboutProvider":"Leverandør","logo":"Logo","aboutManifest":"IIIF-manifest","aboutCanvas":"IIIF-lerret","aboutPartOf":"Del av","aboutOpenManifest":"Åpne hele manifestet","aboutCollection":"IIIF-samling","readingLanguage":"Språk","annotationsHide":"Skjul annoteringer","annotationsHideTip":"Skjul","readMore":"Les mer","readLess":"Les mindre","annotationsShow":"Vis på bildet","annotationsShowTime":"Vis i opptaket","annotationsImage":"Bilde","annotationsLanguage":"Språk","annotationsOpenLink":"Åpne","transcriptLabel":"Transkripsjon","imageViewerOpen":"Åpne bildeviseren","imageViewerClose":"Lukk bildeviseren","canvasChoice":"Valg","canvasViewerControls":"Viserkontroller","canvasExpandControls":"Utvid viserkontrollene","canvasCollapseControls":"Slå sammen viserkontrollene","canvasScrollBack":"Vis forrige kontroller","canvasScrollForward":"Vis flere kontroller","imageFullScreen":"Fullskjerm","imageExitFullScreen":"Avslutt fullskjerm","imageResetZoom":"Tilbakestill zoom","imageRotateLeft":"Roter mot venstre","imageRotateRight":"Roter mot høyre","imageZoomIn":"Zoom inn","imageZoomOut":"Zoom ut","informationPanelTabs":"Informasjonspanel","sectionsScrollBack":"Vis forrige faner","sectionsScrollForward":"Vis flere faner","informationPanelClose":"Lukk informasjonspanelet","informationPanelTabsAbout":"Om","informationPanelTabsAnnotations":"Annoteringer","informationPanelTabsSearch":"Søk","informationPanelTabsContents":"Innhold","contentsSectionsIn":"Deler av","informationPanelTabsMap":"Kart","informationPanelTabsCollection":"Samling","informationPanelTabsTargets":"Visninger","mapUnavailable":"Kartet kunne ikke vises.","mapLabel":"Kart","mapAttribution":"Kartkreditering","mapPlaceUntitled":"Sted {{number}}","mapOverlay":"Georeferert bilde","mapPlacesListed":"Steder oppført etter kartet: {{count}}","informationPanelToggle":"Mer informasjon","playerPlay":"Spill av","playerPause":"Pause","playerMute":"Demp","playerUnmute":"Slå på lyd","playerVolume":"Volum","playerSeek":"Avspillingsposisjon","playerCaptions":"Teksting","playerCaptionsOff":"Av","playerChapters":"Kapitler","playerFill":"Fyll rammen","playerFit":"Tilpass til rammen","frameRepeat":"Gjenta","playerCurrentTime":"Nåværende tid","playerDuration":"Varighet","splitHandle":"Endre størrelse på panelene"}');
2
+ const no = JSON.parse('{"commonClose":"Lukk","commonNext":"Neste","commonPrevious":"Forrige","commonSearch":"Søk","commonViewAll":"Se alle","controlShortcut":"{{label}} ({{shortcut}})","contentSearchLoading":"Laster inn...","contentSearchPlaceholder":"Søk","contentSearchResultsNone":"Ingen resultat","contentSearchResult":"1 resultat","contentSearchResults":"{{count}} resultater","contentSearchError":"Søket kunne ikke fullføres.","contentSearchPosition":"Resultat {{index}} av {{total}}","contentSearchClear":"Tøm søket","canvasPosition":"Element {{index}} av {{total}}","canvasImage":"Bilde","bodyUnloadableImage":"Dette bildet kunne ikke lastes inn.","bodyUnloadableVideo":"Denne videoen kunne ikke lastes inn.","bodyUnloadableAudio":"Denne lyden kunne ikke lastes inn.","bodyUnloadableModel":"Denne modellen kunne ikke lastes inn.","canvasRoleDescription":"zoombart bilde","canvasKeysImage":"Bruk piltastene for å flytte bildet, med Shift for lengre steg, pluss og minus for å zoome, 0 for å tilbakestille visningen, og R eller Shift+R for å rotere.","canvasKeysMedia":"Trykk mellomrom eller K for å spille av eller pause, J eller L for å spole ti sekunder bakover eller fremover, og M for å slå lyden av eller på.","canvasKeysAnnotations":"Trykk Esc for å fjerne valget av annoteringen.","sceneModel":"3D-modell","sceneRoleDescription":"roterbar 3D-modell","sceneKeys":"Bruk piltastene for å rotere modellen, med Shift for lengre steg, pluss og minus for å zoome, 0 for å tilbakestille visningen, og R eller Shift+R for å rotere den mot høyre eller venstre.","sceneRotateUp":"Roter oppover","sceneRotateDown":"Roter nedover","sceneRotate":"Roter","sceneResetView":"Tilbakestill visningen","statusLoading":"Laster inn…","statusError":"Dette kunne ikke lastes inn.","itemsLabel":"Elementer","download":"Last ned","downloadPage":"Denne siden","downloadAll":"Alle sider","templateSidebar":"Elementer","templateSidebarToggle":"Vis elementer","templateBack":"Tilbake","templateBackTo":"Tilbake til {{label}}","collectionLabel":"Samling","itemsScrollBack":"Vis forrige elementer","itemsScrollForward":"Vis flere elementer","aboutRights":"Rettigheter","aboutDate":"Dato","aboutHomepage":"Hjemmeside","aboutSeeAlso":"Se også","aboutProvider":"Leverandør","logo":"Logo","aboutManifest":"IIIF-manifest","aboutCanvas":"IIIF-lerret","aboutPartOf":"Del av","aboutOpenManifest":"Åpne hele manifestet","aboutCollection":"IIIF-samling","readingLanguage":"Språk","annotationsHide":"Skjul annoteringer","annotationsHideTip":"Skjul","readMore":"Les mer","readLess":"Les mindre","annotationsShow":"Vis på bildet","annotationsShowTime":"Vis i opptaket","annotationsImage":"Bilde","annotationsLanguage":"Språk","annotationsOpenLink":"Åpne","transcriptLabel":"Transkripsjon","imageViewerOpen":"Åpne bildeviseren","imageViewerClose":"Lukk bildeviseren","canvasChoice":"Valg","canvasViewerControls":"Viserkontroller","canvasExpandControls":"Utvid viserkontrollene","canvasCollapseControls":"Slå sammen viserkontrollene","canvasScrollBack":"Vis forrige kontroller","canvasScrollForward":"Vis flere kontroller","imageFullScreen":"Fullskjerm","imageExitFullScreen":"Avslutt fullskjerm","imageResetZoom":"Tilbakestill zoom","imageRotateLeft":"Roter mot venstre","imageRotateRight":"Roter mot høyre","imageZoomIn":"Zoom inn","imageZoomOut":"Zoom ut","informationPanelTabs":"Informasjonspanel","sectionsScrollBack":"Vis forrige faner","sectionsScrollForward":"Vis flere faner","informationPanelClose":"Lukk informasjonspanelet","informationPanelTabsAbout":"Om","informationPanelTabsAnnotations":"Annoteringer","informationPanelTabsSearch":"Søk","informationPanelTabsContents":"Innhold","contentsSectionsIn":"Deler av","informationPanelTabsMap":"Kart","informationPanelTabsCollection":"Samling","informationPanelTabsTargets":"Visninger","mapUnavailable":"Kartet kunne ikke vises.","mapLabel":"Kart","mapAttribution":"Kartkreditering","mapPlaceUntitled":"Sted {{number}}","mapOverlay":"Georeferert bilde","mapPlacesListed":"Steder oppført etter kartet: {{count}}","informationPanelToggle":"Mer informasjon","playerPlay":"Spill av","playerPause":"Pause","playerMute":"Demp","playerUnmute":"Slå på lyd","playerVolume":"Volum","playerSeek":"Avspillingsposisjon","playerCaptions":"Teksting","playerCaptionsOff":"Av","playerChapters":"Kapitler","playerFill":"Fyll rammen","playerFit":"Tilpass til rammen","playerCurrentTime":"Nåværende tid","playerDuration":"Varighet","splitHandle":"Endre størrelse på panelene"}');
3
3
  export {
4
4
  no as default
5
5
  };
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- const pt = JSON.parse('{"commonClose":"Fechar","commonNext":"Seguinte","commonPrevious":"Anterior","commonSearch":"Pesquisar","commonViewAll":"Ver tudo","controlShortcut":"{{label}} ({{shortcut}})","contentSearchLoading":"A carregar...","contentSearchPlaceholder":"Pesquisar","contentSearchResultsNone":"Sem resultados","contentSearchResult":"1 resultado","contentSearchResults":"{{count}} resultados","contentSearchError":"Não foi possível concluir a pesquisa.","contentSearchPosition":"Resultado {{index}} de {{total}}","contentSearchClear":"Limpar a pesquisa","canvasPosition":"Item {{index}} de {{total}}","canvasImage":"Imagem","bodyUnloadableImage":"Não foi possível carregar esta imagem.","bodyUnloadableVideo":"Não foi possível carregar este vídeo.","bodyUnloadableAudio":"Não foi possível carregar este áudio.","bodyUnloadableModel":"Não foi possível carregar este modelo.","canvasRoleDescription":"imagem ampliável","canvasKeysImage":"Use as teclas de seta para deslocar a imagem, com Shift para ir mais longe, mais e menos para ampliar e reduzir, 0 para repor a vista, e R ou Shift+R para rodar.","canvasKeysMedia":"Prima Espaço ou K para reproduzir ou pausar, J ou L para recuar ou avançar dez segundos, e M para silenciar ou ativar o som.","canvasKeysAnnotations":"Prima Esc para desmarcar a anotação.","sceneModel":"Modelo 3D","sceneRoleDescription":"modelo 3D rotativo","sceneKeys":"Use as teclas de seta para rodar o modelo, com Shift para ir mais longe, mais e menos para ampliar e reduzir, 0 para repor a vista, e R ou Shift+R para o rodar para a direita ou para a esquerda.","sceneRotateUp":"Rodar para cima","sceneRotateDown":"Rodar para baixo","sceneRotate":"Rodar","sceneResetView":"Repor a vista","statusLoading":"A carregar…","statusError":"Não foi possível carregar este conteúdo.","itemsLabel":"Itens","download":"Transferir","downloadPage":"Esta página","downloadAll":"Todas as páginas","templateSidebar":"Itens","templateSidebarToggle":"Mostrar itens","templateBack":"Voltar","templateBackTo":"Voltar a {{label}}","collectionLabel":"Coleção","itemsScrollBack":"Mostrar itens anteriores","itemsScrollForward":"Mostrar mais itens","aboutRights":"Direitos","aboutDate":"Data","aboutHomepage":"Página inicial","aboutSeeAlso":"Ver também","aboutProvider":"Fornecedor","logo":"Logótipo","aboutManifest":"Manifesto IIIF","aboutCanvas":"Tela IIIF","aboutPartOf":"Parte de","aboutOpenManifest":"Abrir o manifesto completo","aboutCollection":"Coleção IIIF","readingLanguage":"Idioma","annotationsHide":"Ocultar anotações","annotationsHideTip":"Ocultar","readMore":"Ler mais","readLess":"Ler menos","annotationsShow":"Mostrar na imagem","annotationsShowTime":"Mostrar na gravação","annotationsImage":"Imagem","annotationsLanguage":"Idioma","annotationsOpenLink":"Abrir","transcriptLabel":"Transcrição","imageViewerOpen":"Abrir o visualizador de imagens","imageViewerClose":"Fechar o visualizador de imagens","canvasChoice":"Alternativas","canvasViewerControls":"Controlos do visualizador","canvasExpandControls":"Expandir os controlos do visualizador","canvasCollapseControls":"Recolher os controlos do visualizador","canvasScrollBack":"Mostrar controlos anteriores","canvasScrollForward":"Mostrar mais controlos","imageFullScreen":"Ecrã completo","imageExitFullScreen":"Sair do ecrã completo","imageResetZoom":"Repor o zoom","imageRotateLeft":"Rodar para a esquerda","imageRotateRight":"Rodar para a direita","imageZoomIn":"Ampliar","imageZoomOut":"Reduzir","informationPanelTabs":"Painel de informações","sectionsScrollBack":"Mostrar separadores anteriores","sectionsScrollForward":"Mostrar mais separadores","informationPanelClose":"Fechar o painel de informações","informationPanelTabsAbout":"Sobre","informationPanelTabsAnnotations":"Anotações","informationPanelTabsSearch":"Pesquisa","informationPanelTabsContents":"Conteúdo","contentsSectionsIn":"Secções de","informationPanelTabsMap":"Mapa","informationPanelTabsCollection":"Coleção","informationPanelTabsTargets":"Vistas","mapUnavailable":"Não foi possível mostrar o mapa.","mapLabel":"Mapa","mapAttribution":"Créditos do mapa","mapPlaceUntitled":"Local {{number}}","mapOverlay":"Imagem georreferenciada","mapPlacesListed":"Locais listados depois do mapa: {{count}}","informationPanelToggle":"Mais informações","playerPlay":"Reproduzir","playerPause":"Pausar","playerMute":"Silenciar","playerUnmute":"Ativar o som","playerVolume":"Volume","playerSeek":"Posição de reprodução","playerCaptions":"Legendas","playerCaptionsOff":"Desativadas","playerChapters":"Capítulos","playerFill":"Preencher o enquadramento","playerFit":"Ajustar ao enquadramento","frameRepeat":"Repetir","playerCurrentTime":"Tempo atual","playerDuration":"Duração","splitHandle":"Redimensionar os painéis"}');
2
+ const pt = JSON.parse('{"commonClose":"Fechar","commonNext":"Seguinte","commonPrevious":"Anterior","commonSearch":"Pesquisar","commonViewAll":"Ver tudo","controlShortcut":"{{label}} ({{shortcut}})","contentSearchLoading":"A carregar...","contentSearchPlaceholder":"Pesquisar","contentSearchResultsNone":"Sem resultados","contentSearchResult":"1 resultado","contentSearchResults":"{{count}} resultados","contentSearchError":"Não foi possível concluir a pesquisa.","contentSearchPosition":"Resultado {{index}} de {{total}}","contentSearchClear":"Limpar a pesquisa","canvasPosition":"Item {{index}} de {{total}}","canvasImage":"Imagem","bodyUnloadableImage":"Não foi possível carregar esta imagem.","bodyUnloadableVideo":"Não foi possível carregar este vídeo.","bodyUnloadableAudio":"Não foi possível carregar este áudio.","bodyUnloadableModel":"Não foi possível carregar este modelo.","canvasRoleDescription":"imagem ampliável","canvasKeysImage":"Use as teclas de seta para deslocar a imagem, com Shift para ir mais longe, mais e menos para ampliar e reduzir, 0 para repor a vista, e R ou Shift+R para rodar.","canvasKeysMedia":"Prima Espaço ou K para reproduzir ou pausar, J ou L para recuar ou avançar dez segundos, e M para silenciar ou ativar o som.","canvasKeysAnnotations":"Prima Esc para desmarcar a anotação.","sceneModel":"Modelo 3D","sceneRoleDescription":"modelo 3D rotativo","sceneKeys":"Use as teclas de seta para rodar o modelo, com Shift para ir mais longe, mais e menos para ampliar e reduzir, 0 para repor a vista, e R ou Shift+R para o rodar para a direita ou para a esquerda.","sceneRotateUp":"Rodar para cima","sceneRotateDown":"Rodar para baixo","sceneRotate":"Rodar","sceneResetView":"Repor a vista","statusLoading":"A carregar…","statusError":"Não foi possível carregar este conteúdo.","itemsLabel":"Itens","download":"Transferir","downloadPage":"Esta página","downloadAll":"Todas as páginas","templateSidebar":"Itens","templateSidebarToggle":"Mostrar itens","templateBack":"Voltar","templateBackTo":"Voltar a {{label}}","collectionLabel":"Coleção","itemsScrollBack":"Mostrar itens anteriores","itemsScrollForward":"Mostrar mais itens","aboutRights":"Direitos","aboutDate":"Data","aboutHomepage":"Página inicial","aboutSeeAlso":"Ver também","aboutProvider":"Fornecedor","logo":"Logótipo","aboutManifest":"Manifesto IIIF","aboutCanvas":"Tela IIIF","aboutPartOf":"Parte de","aboutOpenManifest":"Abrir o manifesto completo","aboutCollection":"Coleção IIIF","readingLanguage":"Idioma","annotationsHide":"Ocultar anotações","annotationsHideTip":"Ocultar","readMore":"Ler mais","readLess":"Ler menos","annotationsShow":"Mostrar na imagem","annotationsShowTime":"Mostrar na gravação","annotationsImage":"Imagem","annotationsLanguage":"Idioma","annotationsOpenLink":"Abrir","transcriptLabel":"Transcrição","imageViewerOpen":"Abrir o visualizador de imagens","imageViewerClose":"Fechar o visualizador de imagens","canvasChoice":"Alternativas","canvasViewerControls":"Controlos do visualizador","canvasExpandControls":"Expandir os controlos do visualizador","canvasCollapseControls":"Recolher os controlos do visualizador","canvasScrollBack":"Mostrar controlos anteriores","canvasScrollForward":"Mostrar mais controlos","imageFullScreen":"Ecrã completo","imageExitFullScreen":"Sair do ecrã completo","imageResetZoom":"Repor o zoom","imageRotateLeft":"Rodar para a esquerda","imageRotateRight":"Rodar para a direita","imageZoomIn":"Ampliar","imageZoomOut":"Reduzir","informationPanelTabs":"Painel de informações","sectionsScrollBack":"Mostrar separadores anteriores","sectionsScrollForward":"Mostrar mais separadores","informationPanelClose":"Fechar o painel de informações","informationPanelTabsAbout":"Sobre","informationPanelTabsAnnotations":"Anotações","informationPanelTabsSearch":"Pesquisa","informationPanelTabsContents":"Conteúdo","contentsSectionsIn":"Secções de","informationPanelTabsMap":"Mapa","informationPanelTabsCollection":"Coleção","informationPanelTabsTargets":"Vistas","mapUnavailable":"Não foi possível mostrar o mapa.","mapLabel":"Mapa","mapAttribution":"Créditos do mapa","mapPlaceUntitled":"Local {{number}}","mapOverlay":"Imagem georreferenciada","mapPlacesListed":"Locais listados depois do mapa: {{count}}","informationPanelToggle":"Mais informações","playerPlay":"Reproduzir","playerPause":"Pausar","playerMute":"Silenciar","playerUnmute":"Ativar o som","playerVolume":"Volume","playerSeek":"Posição de reprodução","playerCaptions":"Legendas","playerCaptionsOff":"Desativadas","playerChapters":"Capítulos","playerFill":"Preencher o enquadramento","playerFit":"Ajustar ao enquadramento","playerCurrentTime":"Tempo atual","playerDuration":"Duração","splitHandle":"Redimensionar os painéis"}');
3
3
  export {
4
4
  pt as default
5
5
  };
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- const zhHans = JSON.parse('{"commonClose":"关闭","commonNext":"下一个","commonPrevious":"上一个","commonSearch":"搜索","commonViewAll":"查看全部","controlShortcut":"{{label}}({{shortcut}})","contentSearchLoading":"正在加载…","contentSearchPlaceholder":"搜索","contentSearchResultsNone":"无结果","contentSearchResult":"1 个结果","contentSearchResults":"{{count}} 个结果","contentSearchError":"无法完成搜索。","contentSearchPosition":"第 {{index}} 个结果,共 {{total}} 个","contentSearchClear":"清除搜索","canvasPosition":"第 {{index}} 项,共 {{total}} 项","canvasImage":"图像","bodyUnloadableImage":"无法加载此图像。","bodyUnloadableVideo":"无法加载此视频。","bodyUnloadableAudio":"无法加载此音频。","bodyUnloadableModel":"无法加载此模型。","canvasRoleDescription":"可缩放图像","canvasKeysImage":"使用方向键平移(按住 Shift 可大步移动),按加号和减号缩放,按 0 重置视图,按 R 或 Shift+R 旋转。","canvasKeysMedia":"按空格键或 K 播放或暂停,按 J 或 L 后退或前进十秒,按 M 静音或取消静音。","canvasKeysAnnotations":"按 Esc 键清除所选注释。","sceneModel":"3D 模型","sceneRoleDescription":"可旋转 3D 模型","sceneKeys":"使用方向键旋转模型(按住 Shift 可大步旋转),按加号和减号缩放,按 0 重置视图,按 R 或 Shift+R 向右或向左旋转。","sceneRotateUp":"向上旋转","sceneRotateDown":"向下旋转","sceneRotate":"旋转","sceneResetView":"重置视图","statusLoading":"正在加载…","statusError":"无法加载。","itemsLabel":"项目","download":"下载","downloadPage":"本页","downloadAll":"所有页面","templateSidebar":"项目","templateSidebarToggle":"显示项目","templateBack":"返回","templateBackTo":"返回{{label}}","collectionLabel":"集合","itemsScrollBack":"显示上一组项目","itemsScrollForward":"显示更多项目","aboutRights":"权利","aboutDate":"日期","aboutHomepage":"主页","aboutSeeAlso":"另见","aboutProvider":"提供者","logo":"标志","aboutManifest":"IIIF 清单","aboutCanvas":"IIIF 画布","aboutPartOf":"所属","aboutOpenManifest":"打开完整清单","aboutCollection":"IIIF 集合","readingLanguage":"语言","annotationsHide":"隐藏注释","annotationsHideTip":"隐藏","readMore":"展开","readLess":"收起","annotationsShow":"在图像上查找","annotationsShowTime":"在录音中查找","annotationsImage":"图像","annotationsLanguage":"语言","annotationsOpenLink":"打开","transcriptLabel":"文字记录","imageViewerOpen":"打开图像查看器","imageViewerClose":"关闭图像查看器","canvasChoice":"选项","canvasViewerControls":"查看器控件","canvasExpandControls":"展开查看器控件","canvasCollapseControls":"收起查看器控件","canvasScrollBack":"显示上一组控件","canvasScrollForward":"显示更多控件","imageFullScreen":"全屏","imageExitFullScreen":"退出全屏","imageResetZoom":"重置缩放","imageRotateLeft":"向左旋转","imageRotateRight":"向右旋转","imageZoomIn":"放大","imageZoomOut":"缩小","informationPanelTabs":"信息面板","sectionsScrollBack":"显示上一组标签页","sectionsScrollForward":"显示更多标签页","informationPanelClose":"关闭信息面板","informationPanelTabsAbout":"简介","informationPanelTabsAnnotations":"注释","informationPanelTabsSearch":"搜索","informationPanelTabsContents":"目录","contentsSectionsIn":"下级章节:","informationPanelTabsMap":"地图","informationPanelTabsCollection":"集合","informationPanelTabsTargets":"视图","mapUnavailable":"无法显示地图。","mapLabel":"地图","mapAttribution":"地图来源","mapPlaceUntitled":"地点 {{number}}","mapOverlay":"地理配准图像","mapPlacesListed":"地图后列出的地点:{{count}} 个","informationPanelToggle":"更多信息","playerPlay":"播放","playerPause":"暂停","playerMute":"静音","playerUnmute":"取消静音","playerVolume":"音量","playerSeek":"播放进度","playerCaptions":"字幕","playerCaptionsOff":"关闭","playerChapters":"章节","playerFill":"填满画面","playerFit":"适应画面","frameRepeat":"重复","playerCurrentTime":"当前时间","playerDuration":"时长","splitHandle":"调整面板大小"}');
2
+ const zhHans = JSON.parse('{"commonClose":"关闭","commonNext":"下一个","commonPrevious":"上一个","commonSearch":"搜索","commonViewAll":"查看全部","controlShortcut":"{{label}}({{shortcut}})","contentSearchLoading":"正在加载…","contentSearchPlaceholder":"搜索","contentSearchResultsNone":"无结果","contentSearchResult":"1 个结果","contentSearchResults":"{{count}} 个结果","contentSearchError":"无法完成搜索。","contentSearchPosition":"第 {{index}} 个结果,共 {{total}} 个","contentSearchClear":"清除搜索","canvasPosition":"第 {{index}} 项,共 {{total}} 项","canvasImage":"图像","bodyUnloadableImage":"无法加载此图像。","bodyUnloadableVideo":"无法加载此视频。","bodyUnloadableAudio":"无法加载此音频。","bodyUnloadableModel":"无法加载此模型。","canvasRoleDescription":"可缩放图像","canvasKeysImage":"使用方向键平移(按住 Shift 可大步移动),按加号和减号缩放,按 0 重置视图,按 R 或 Shift+R 旋转。","canvasKeysMedia":"按空格键或 K 播放或暂停,按 J 或 L 后退或前进十秒,按 M 静音或取消静音。","canvasKeysAnnotations":"按 Esc 键清除所选注释。","sceneModel":"3D 模型","sceneRoleDescription":"可旋转 3D 模型","sceneKeys":"使用方向键旋转模型(按住 Shift 可大步旋转),按加号和减号缩放,按 0 重置视图,按 R 或 Shift+R 向右或向左旋转。","sceneRotateUp":"向上旋转","sceneRotateDown":"向下旋转","sceneRotate":"旋转","sceneResetView":"重置视图","statusLoading":"正在加载…","statusError":"无法加载。","itemsLabel":"项目","download":"下载","downloadPage":"本页","downloadAll":"所有页面","templateSidebar":"项目","templateSidebarToggle":"显示项目","templateBack":"返回","templateBackTo":"返回{{label}}","collectionLabel":"集合","itemsScrollBack":"显示上一组项目","itemsScrollForward":"显示更多项目","aboutRights":"权利","aboutDate":"日期","aboutHomepage":"主页","aboutSeeAlso":"另见","aboutProvider":"提供者","logo":"标志","aboutManifest":"IIIF 清单","aboutCanvas":"IIIF 画布","aboutPartOf":"所属","aboutOpenManifest":"打开完整清单","aboutCollection":"IIIF 集合","readingLanguage":"语言","annotationsHide":"隐藏注释","annotationsHideTip":"隐藏","readMore":"展开","readLess":"收起","annotationsShow":"在图像上查找","annotationsShowTime":"在录音中查找","annotationsImage":"图像","annotationsLanguage":"语言","annotationsOpenLink":"打开","transcriptLabel":"文字记录","imageViewerOpen":"打开图像查看器","imageViewerClose":"关闭图像查看器","canvasChoice":"选项","canvasViewerControls":"查看器控件","canvasExpandControls":"展开查看器控件","canvasCollapseControls":"收起查看器控件","canvasScrollBack":"显示上一组控件","canvasScrollForward":"显示更多控件","imageFullScreen":"全屏","imageExitFullScreen":"退出全屏","imageResetZoom":"重置缩放","imageRotateLeft":"向左旋转","imageRotateRight":"向右旋转","imageZoomIn":"放大","imageZoomOut":"缩小","informationPanelTabs":"信息面板","sectionsScrollBack":"显示上一组标签页","sectionsScrollForward":"显示更多标签页","informationPanelClose":"关闭信息面板","informationPanelTabsAbout":"简介","informationPanelTabsAnnotations":"注释","informationPanelTabsSearch":"搜索","informationPanelTabsContents":"目录","contentsSectionsIn":"下级章节:","informationPanelTabsMap":"地图","informationPanelTabsCollection":"集合","informationPanelTabsTargets":"视图","mapUnavailable":"无法显示地图。","mapLabel":"地图","mapAttribution":"地图来源","mapPlaceUntitled":"地点 {{number}}","mapOverlay":"地理配准图像","mapPlacesListed":"地图后列出的地点:{{count}} 个","informationPanelToggle":"更多信息","playerPlay":"播放","playerPause":"暂停","playerMute":"静音","playerUnmute":"取消静音","playerVolume":"音量","playerSeek":"播放进度","playerCaptions":"字幕","playerCaptionsOff":"关闭","playerChapters":"章节","playerFill":"填满画面","playerFit":"适应画面","playerCurrentTime":"当前时间","playerDuration":"时长","splitHandle":"调整面板大小"}');
3
3
  export {
4
4
  zhHans as default
5
5
  };
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- const zhHant = JSON.parse('{"commonClose":"關閉","commonNext":"下一個","commonPrevious":"上一個","commonSearch":"搜尋","commonViewAll":"檢視全部","controlShortcut":"{{label}}({{shortcut}})","contentSearchLoading":"載入中…","contentSearchPlaceholder":"搜尋","contentSearchResultsNone":"沒有結果","contentSearchResult":"1 筆結果","contentSearchResults":"{{count}} 筆結果","contentSearchError":"無法完成搜尋。","contentSearchPosition":"第 {{index}} 筆結果,共 {{total}} 筆","contentSearchClear":"清除搜尋","canvasPosition":"第 {{index}} 項,共 {{total}} 項","canvasImage":"影像","bodyUnloadableImage":"無法載入此影像。","bodyUnloadableVideo":"無法載入此影片。","bodyUnloadableAudio":"無法載入此音訊。","bodyUnloadableModel":"無法載入此模型。","canvasRoleDescription":"可縮放影像","canvasKeysImage":"使用方向鍵平移(按住 Shift 可大幅移動),按加號和減號縮放,按 0 重設檢視,按 R 或 Shift+R 旋轉。","canvasKeysMedia":"按空白鍵或 K 播放或暫停,按 J 或 L 倒轉或快轉十秒,按 M 靜音或取消靜音。","canvasKeysAnnotations":"按 Esc 鍵清除所選註解。","sceneModel":"3D 模型","sceneRoleDescription":"可旋轉 3D 模型","sceneKeys":"使用方向鍵旋轉模型(按住 Shift 可大幅旋轉),按加號和減號縮放,按 0 重設檢視,按 R 或 Shift+R 向右或向左旋轉。","sceneRotateUp":"向上旋轉","sceneRotateDown":"向下旋轉","sceneRotate":"旋轉","sceneResetView":"重設檢視","statusLoading":"載入中…","statusError":"無法載入。","itemsLabel":"項目","download":"下載","downloadPage":"本頁","downloadAll":"所有頁面","templateSidebar":"項目","templateSidebarToggle":"顯示項目","templateBack":"返回","templateBackTo":"返回{{label}}","collectionLabel":"集合","itemsScrollBack":"顯示上一組項目","itemsScrollForward":"顯示更多項目","aboutRights":"權利","aboutDate":"日期","aboutHomepage":"首頁","aboutSeeAlso":"另見","aboutProvider":"提供者","logo":"標誌","aboutManifest":"IIIF 清單","aboutCanvas":"IIIF 畫布","aboutPartOf":"所屬","aboutOpenManifest":"開啟完整清單","aboutCollection":"IIIF 集合","readingLanguage":"語言","annotationsHide":"隱藏註解","annotationsHideTip":"隱藏","readMore":"展開","readLess":"收合","annotationsShow":"在影像上尋找","annotationsShowTime":"在錄音中尋找","annotationsImage":"影像","annotationsLanguage":"語言","annotationsOpenLink":"開啟","transcriptLabel":"逐字稿","imageViewerOpen":"開啟影像檢視器","imageViewerClose":"關閉影像檢視器","canvasChoice":"選項","canvasViewerControls":"檢視器控制項","canvasExpandControls":"展開檢視器控制項","canvasCollapseControls":"收合檢視器控制項","canvasScrollBack":"顯示上一組控制項","canvasScrollForward":"顯示更多控制項","imageFullScreen":"全螢幕","imageExitFullScreen":"結束全螢幕","imageResetZoom":"重設縮放","imageRotateLeft":"向左旋轉","imageRotateRight":"向右旋轉","imageZoomIn":"放大","imageZoomOut":"縮小","informationPanelTabs":"資訊面板","sectionsScrollBack":"顯示上一組分頁","sectionsScrollForward":"顯示更多分頁","informationPanelClose":"關閉資訊面板","informationPanelTabsAbout":"簡介","informationPanelTabsAnnotations":"註解","informationPanelTabsSearch":"搜尋","informationPanelTabsContents":"目錄","contentsSectionsIn":"下層章節:","informationPanelTabsMap":"地圖","informationPanelTabsCollection":"集合","informationPanelTabsTargets":"檢視","mapUnavailable":"無法顯示地圖。","mapLabel":"地圖","mapAttribution":"地圖來源","mapPlaceUntitled":"地點 {{number}}","mapOverlay":"地理對位影像","mapPlacesListed":"地圖後列出的地點:{{count}} 個","informationPanelToggle":"更多資訊","playerPlay":"播放","playerPause":"暫停","playerMute":"靜音","playerUnmute":"取消靜音","playerVolume":"音量","playerSeek":"播放進度","playerCaptions":"字幕","playerCaptionsOff":"關閉","playerChapters":"章節","playerFill":"填滿畫面","playerFit":"符合畫面","frameRepeat":"重複","playerCurrentTime":"目前時間","playerDuration":"長度","splitHandle":"調整面板大小"}');
2
+ const zhHant = JSON.parse('{"commonClose":"關閉","commonNext":"下一個","commonPrevious":"上一個","commonSearch":"搜尋","commonViewAll":"檢視全部","controlShortcut":"{{label}}({{shortcut}})","contentSearchLoading":"載入中…","contentSearchPlaceholder":"搜尋","contentSearchResultsNone":"沒有結果","contentSearchResult":"1 筆結果","contentSearchResults":"{{count}} 筆結果","contentSearchError":"無法完成搜尋。","contentSearchPosition":"第 {{index}} 筆結果,共 {{total}} 筆","contentSearchClear":"清除搜尋","canvasPosition":"第 {{index}} 項,共 {{total}} 項","canvasImage":"影像","bodyUnloadableImage":"無法載入此影像。","bodyUnloadableVideo":"無法載入此影片。","bodyUnloadableAudio":"無法載入此音訊。","bodyUnloadableModel":"無法載入此模型。","canvasRoleDescription":"可縮放影像","canvasKeysImage":"使用方向鍵平移(按住 Shift 可大幅移動),按加號和減號縮放,按 0 重設檢視,按 R 或 Shift+R 旋轉。","canvasKeysMedia":"按空白鍵或 K 播放或暫停,按 J 或 L 倒轉或快轉十秒,按 M 靜音或取消靜音。","canvasKeysAnnotations":"按 Esc 鍵清除所選註解。","sceneModel":"3D 模型","sceneRoleDescription":"可旋轉 3D 模型","sceneKeys":"使用方向鍵旋轉模型(按住 Shift 可大幅旋轉),按加號和減號縮放,按 0 重設檢視,按 R 或 Shift+R 向右或向左旋轉。","sceneRotateUp":"向上旋轉","sceneRotateDown":"向下旋轉","sceneRotate":"旋轉","sceneResetView":"重設檢視","statusLoading":"載入中…","statusError":"無法載入。","itemsLabel":"項目","download":"下載","downloadPage":"本頁","downloadAll":"所有頁面","templateSidebar":"項目","templateSidebarToggle":"顯示項目","templateBack":"返回","templateBackTo":"返回{{label}}","collectionLabel":"集合","itemsScrollBack":"顯示上一組項目","itemsScrollForward":"顯示更多項目","aboutRights":"權利","aboutDate":"日期","aboutHomepage":"首頁","aboutSeeAlso":"另見","aboutProvider":"提供者","logo":"標誌","aboutManifest":"IIIF 清單","aboutCanvas":"IIIF 畫布","aboutPartOf":"所屬","aboutOpenManifest":"開啟完整清單","aboutCollection":"IIIF 集合","readingLanguage":"語言","annotationsHide":"隱藏註解","annotationsHideTip":"隱藏","readMore":"展開","readLess":"收合","annotationsShow":"在影像上尋找","annotationsShowTime":"在錄音中尋找","annotationsImage":"影像","annotationsLanguage":"語言","annotationsOpenLink":"開啟","transcriptLabel":"逐字稿","imageViewerOpen":"開啟影像檢視器","imageViewerClose":"關閉影像檢視器","canvasChoice":"選項","canvasViewerControls":"檢視器控制項","canvasExpandControls":"展開檢視器控制項","canvasCollapseControls":"收合檢視器控制項","canvasScrollBack":"顯示上一組控制項","canvasScrollForward":"顯示更多控制項","imageFullScreen":"全螢幕","imageExitFullScreen":"結束全螢幕","imageResetZoom":"重設縮放","imageRotateLeft":"向左旋轉","imageRotateRight":"向右旋轉","imageZoomIn":"放大","imageZoomOut":"縮小","informationPanelTabs":"資訊面板","sectionsScrollBack":"顯示上一組分頁","sectionsScrollForward":"顯示更多分頁","informationPanelClose":"關閉資訊面板","informationPanelTabsAbout":"簡介","informationPanelTabsAnnotations":"註解","informationPanelTabsSearch":"搜尋","informationPanelTabsContents":"目錄","contentsSectionsIn":"下層章節:","informationPanelTabsMap":"地圖","informationPanelTabsCollection":"集合","informationPanelTabsTargets":"檢視","mapUnavailable":"無法顯示地圖。","mapLabel":"地圖","mapAttribution":"地圖來源","mapPlaceUntitled":"地點 {{number}}","mapOverlay":"地理對位影像","mapPlacesListed":"地圖後列出的地點:{{count}} 個","informationPanelToggle":"更多資訊","playerPlay":"播放","playerPause":"暫停","playerMute":"靜音","playerUnmute":"取消靜音","playerVolume":"音量","playerSeek":"播放進度","playerCaptions":"字幕","playerCaptionsOff":"關閉","playerChapters":"章節","playerFill":"填滿畫面","playerFit":"符合畫面","playerCurrentTime":"目前時間","playerDuration":"長度","splitHandle":"調整面板大小"}');
3
3
  export {
4
4
  zhHant as default
5
5
  };
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { requestKey, cloverFetch } from "../../core/request.mjs";
2
+ import { requestKey, cloverFetch, discardBody } from "../../core/request.mjs";
3
3
  const EXTENSIONS = [
4
4
  "KHR_materials_unlit",
5
5
  "KHR_materials_ior",
@@ -33,7 +33,10 @@ function parseGlb(data) {
33
33
  async function fetchBytes(uri, base, request) {
34
34
  const url = new URL(uri, base).href;
35
35
  const response = url.startsWith("data:") ? await fetch(url) : await cloverFetch(request, url);
36
- if (!response.ok) throw new Error(`${url} answered ${response.status}`);
36
+ if (!response.ok) {
37
+ discardBody(response);
38
+ throw new Error(`${url} answered ${response.status}`);
39
+ }
37
40
  return response.arrayBuffer();
38
41
  }
39
42
  const loading = /* @__PURE__ */ new WeakMap();
@@ -13,8 +13,8 @@ import { FrameLoop } from "./loop/FrameLoop.mjs";
13
13
  import { uploadBudget } from "./scene/uploadBudget.mjs";
14
14
  import { apply, compose, rotate, scale } from "./math/affine.mjs";
15
15
  import { union, rectCenter, clamp, transformRect } from "./math/rect.mjs";
16
- import { planFrame } from "./scene/planFrame.mjs";
17
- import { sameSpec, prepareItem, layoutItems, pixelsToWorld, itemToWorld, MEDIA_KEY_PREFIX } from "./scene/sceneItem.mjs";
16
+ import { TARGET_BAND, planFrame } from "./scene/planFrame.mjs";
17
+ import { sameSpec, layoutItems, resolveItem, pixelsToWorld, itemToWorld, MEDIA_KEY_PREFIX, prefetchCoarse } from "./scene/sceneItem.mjs";
18
18
  const DEFAULTS = {
19
19
  maxZoomPixelRatio: 1.1,
20
20
  minZoomImageRatio: 0.9,
@@ -25,13 +25,15 @@ const DEFAULTS = {
25
25
  constrainDuringPan: true,
26
26
  request: void 0,
27
27
  byteBudget: 192 * 1024 * 1024,
28
- maxInFlight: 6,
28
+ maxInFlight: 16,
29
29
  releaseAfterMs: 2e3
30
30
  };
31
31
  const MAX_PIXEL_RATIO = 2;
32
32
  const MAX_CONTEXT_LOSSES = 3;
33
33
  const ANNOTATION_PADDING = 0.1;
34
34
  const ZOOM_EPSILON = 1e-6;
35
+ const LANDING_AHEAD = 1e8;
36
+ const PREPARE_AT_ONCE = 6;
35
37
  const NO_INSET = { top: 0, right: 0, bottom: 0, left: 0 };
36
38
  function readInset(element, box = "padding") {
37
39
  if (!element || typeof getComputedStyle !== "function") return NO_INSET;
@@ -103,6 +105,13 @@ class CanvasRenderer {
103
105
  __publicField(this, "interacting", false);
104
106
  __publicField(this, "lastEmitted", null);
105
107
  __publicField(this, "generation", 0);
108
+ /**
109
+ * The tiles a scene still preparing will want where it lands, asked for with every
110
+ * frame's, ahead of them, until it replaces the scene on screen (`setImages`).
111
+ */
112
+ __publicField(this, "landing", []);
113
+ /** A scene to read ahead (`prefetch`), once every tile the scene on screen wants is in. */
114
+ __publicField(this, "ahead", null);
106
115
  __publicField(this, "listeners", /* @__PURE__ */ new Map());
107
116
  __publicField(this, "unloadable", false);
108
117
  __publicField(this, "resizeObserver", null);
@@ -128,14 +137,18 @@ class CanvasRenderer {
128
137
  viewport: this.viewport,
129
138
  pixelRatio: this.pixelRatio,
130
139
  getTile: uploads.getTile,
140
+ has: this.hasTile,
131
141
  wantOverview: Boolean(this.navigator),
132
142
  // Fetch for where the camera lands, not for each view on the way.
133
143
  destination: animating ? this.camera.destination : void 0
134
144
  });
135
- const wants = plan.wants.filter(
136
- (want) => !want.url.startsWith(MEDIA_KEY_PREFIX)
137
- );
145
+ const wants = (this.landing.length ? [...this.landing, ...plan.wants] : plan.wants).filter((want) => !want.url.startsWith(MEDIA_KEY_PREFIX));
138
146
  this.cache.update(wants);
147
+ if (this.ahead && !animating && !this.cache.pending) {
148
+ const ahead = this.ahead;
149
+ this.ahead = null;
150
+ void this.readAhead(ahead);
151
+ }
139
152
  if (plan.draws.length) this.setUnloadable(false);
140
153
  else if (wants.length && wants.every((want) => this.cache.failed(want.url)))
141
154
  this.setUnloadable(true);
@@ -156,6 +169,8 @@ class CanvasRenderer {
156
169
  return animating || uploads.deferred;
157
170
  });
158
171
  __publicField(this, "getTile", (url) => this.mediaByKey.get(url) ?? this.cache.get(url));
172
+ /** Decoded and in memory, drawn this frame or held back by the upload budget. */
173
+ __publicField(this, "hasTile", (url) => this.mediaByKey.has(url) || this.cache.has(url));
159
174
  /*
160
175
  * The browser took the context (too many on the page, a GPU reset). Its canvas goes at
161
176
  * once, so the browser's picture of a lost context never shows, only the host's
@@ -244,56 +259,151 @@ class CanvasRenderer {
244
259
  * replace the old ones, so a swap never flashes empty. Items whose description is
245
260
  * unchanged are kept as they are, and tiles are cached by URL, so swapping between two
246
261
  * regions of one image costs nothing at all.
262
+ *
263
+ * The finer tiles do not wait for the coarsest: once every item's size is known, the
264
+ * tiles for the view the new scene will open on are asked for beside them, ahead of the
265
+ * scene being left (`landing`). A page turn then sharpens a round trip sooner.
266
+ *
267
+ * Images are prepared in the scene's order, `PREPARE_AT_ONCE` at a time. On an empty
268
+ * Body, a scene of several placed images (a continuous Manifest's pages) goes up an image
269
+ * at a time, each as soon as its own coarsest tiles are in, where it will stay, framed
270
+ * for all of them from the first; with a scene on screen, the new one replaces it whole.
247
271
  */
248
272
  async setImages(images, {
249
273
  world,
250
274
  fit = false
251
275
  } = {}) {
252
276
  const generation = ++this.generation;
277
+ const stale = () => generation !== this.generation || this.disposed;
253
278
  const previous = new Map(this.items.map((item) => [item.id, item]));
254
- const results = await Promise.allSettled(
255
- images.map((spec) => {
256
- const kept = previous.get(spec.id);
257
- if (kept && sameSpec(kept.spec, spec)) {
258
- kept.spec = spec;
259
- return Promise.resolve(kept);
260
- }
261
- return prepareItem(spec, {
262
- cache: this.cache,
263
- loadStatic: (url) => this.loadTile(url),
264
- infoOptions: { request: this.options.request }
265
- });
266
- })
279
+ this.landing = [];
280
+ this.ahead = null;
281
+ const context = this.prepareContext();
282
+ const queue = [];
283
+ const prepared = images.map((spec) => {
284
+ const kept = previous.get(spec.id);
285
+ if (kept && sameSpec(kept.spec, spec)) {
286
+ kept.spec = spec;
287
+ return { item: Promise.resolve(kept), ready: Promise.resolve() };
288
+ }
289
+ let found;
290
+ let lost;
291
+ let done;
292
+ const item = new Promise((resolve, reject) => {
293
+ found = resolve;
294
+ lost = reject;
295
+ });
296
+ const ready = new Promise((resolve) => done = resolve);
297
+ queue.push(
298
+ () => resolveItem(spec, context).then((resolved) => {
299
+ found(resolved);
300
+ return prefetchCoarse(resolved, this.cache);
301
+ }, lost).then(done, done)
302
+ );
303
+ return { item, ready };
304
+ });
305
+ const work = () => {
306
+ var _a;
307
+ return (_a = queue.shift()) == null ? void 0 : _a().then(work);
308
+ };
309
+ for (let slot = 0; slot < PREPARE_AT_ONCE; slot++) void work();
310
+ const placements = images.flatMap(
311
+ (spec) => spec.placement ? [spec.placement] : []
312
+ );
313
+ let framed = false;
314
+ if (!this.items.length && images.length > 1 && placements.length === images.length) {
315
+ const bounds = union(world ? [world, ...placements] : placements);
316
+ const up = [];
317
+ prepared.forEach(({ item, ready }, index) => {
318
+ void Promise.all([item, ready]).then(
319
+ ([resolved]) => {
320
+ if (stale()) return;
321
+ up[index] = resolved;
322
+ this.place(up.filter(Boolean), bounds, fit, !framed, false);
323
+ framed = true;
324
+ },
325
+ () => void 0
326
+ );
327
+ });
328
+ }
329
+ const results = await Promise.allSettled(prepared.map(({ item }) => item));
330
+ if (stale()) return;
331
+ this.landing = this.landingWants(
332
+ results.flatMap((r) => r.status === "fulfilled" ? [r.value] : []),
333
+ world,
334
+ fit || !this.opened
267
335
  );
268
- if (generation !== this.generation || this.disposed) return;
336
+ this.invalidate();
337
+ await Promise.all(prepared.map(({ ready }) => ready));
338
+ if (stale()) return;
339
+ this.landing = [];
269
340
  const items = results.filter(
270
341
  (r) => r.status === "fulfilled"
271
342
  ).map((r) => r.value);
272
343
  const errors = results.filter((r) => r.status === "rejected").map((r) => r.reason);
344
+ if (errors.length) this.emit("error", errors);
345
+ this.setUnloadable(images.length > 0 && !items.length && errors.length > 0);
346
+ this.place(items, world, fit, !framed, true);
347
+ }
348
+ /**
349
+ * Put `items` on screen, the world their layout and `world`: opened, the first time;
350
+ * where `frame`, framed again (home where `fit`, else the reader's view, its limits
351
+ * applied again) and announced; else announced only where `announce`.
352
+ */
353
+ place(items, world, fit, frame, announce) {
273
354
  this.items = items;
274
355
  this.watchMedia(items);
275
356
  const laidOut = layoutItems(items);
276
357
  this.worldBounds = world ? laidOut ? union([world, laidOut]) : world : laidOut;
277
358
  this.contentVersion++;
278
- if (errors.length) this.emit("error", errors);
279
- this.setUnloadable(images.length > 0 && !items.length && errors.length > 0);
280
- if (!this.worldBounds) {
281
- this.invalidate();
282
- return;
283
- }
284
- if (!this.opened) {
285
- this.opened = true;
286
- this.home(true);
287
- this.emit("open");
288
- } else if (fit) {
289
- this.home(true);
290
- this.emit("change");
291
- } else {
292
- this.camera.set(this.constrain(this.camera.current));
293
- this.emit("change");
359
+ if (this.worldBounds) {
360
+ if (!this.opened) {
361
+ this.opened = true;
362
+ this.home(true);
363
+ this.emit("open");
364
+ } else if (frame) {
365
+ if (fit) this.home(true);
366
+ else this.camera.set(this.constrain(this.camera.current));
367
+ this.emit("change");
368
+ } else if (announce) this.emit("change");
294
369
  }
295
370
  this.invalidate();
296
371
  }
372
+ /**
373
+ * Read a scene ahead of time: what is shown next, the view after this one. Once every
374
+ * tile the scene on screen wants is in, each image's `info.json` is read, then the
375
+ * coarsest and middle levels its framed view would want are loaded and kept, as loads
376
+ * no frame cancels, so the turn to it draws at once and sharpens a round trip sooner;
377
+ * its sharp tiles wait until it is shown. A later call, `setImages` or `clear` drops it.
378
+ */
379
+ prefetch(images, { world } = {}) {
380
+ const pictures = images.filter((spec) => !spec.media);
381
+ this.ahead = pictures.length ? { images: pictures, world } : null;
382
+ if (this.ahead) this.invalidate();
383
+ }
384
+ async readAhead({
385
+ images,
386
+ world
387
+ }) {
388
+ const generation = this.generation;
389
+ const context = this.prepareContext();
390
+ const items = (await Promise.allSettled(images.map((spec) => resolveItem(spec, context)))).flatMap(
391
+ (result) => result.status === "fulfilled" ? [result.value] : []
392
+ );
393
+ if (!items.length || generation !== this.generation || this.disposed)
394
+ return;
395
+ const wants = this.landingWants(items, world, true).filter(
396
+ (want) => want.priority < TARGET_BAND - LANDING_AHEAD
397
+ );
398
+ await this.cache.prefetch(wants);
399
+ }
400
+ prepareContext() {
401
+ return {
402
+ cache: this.cache,
403
+ loadStatic: (url) => this.loadTile(url),
404
+ infoOptions: { request: this.options.request }
405
+ };
406
+ }
297
407
  /**
298
408
  * Put the scene away at once: from the next frame nothing of it is drawn, and a swap
299
409
  * still preparing is dropped. For moving to a different resource, whose pictures should
@@ -303,6 +413,8 @@ class CanvasRenderer {
303
413
  clear() {
304
414
  this.setUnloadable(false);
305
415
  this.generation++;
416
+ this.landing = [];
417
+ this.ahead = null;
306
418
  this.items = [];
307
419
  this.watchMedia([]);
308
420
  this.worldBounds = null;
@@ -428,8 +540,8 @@ class CanvasRenderer {
428
540
  * those. Measured against the sharpest image in the scene, so an inset photograph
429
541
  * denser than the page it sits on can still be zoomed to its own full resolution.
430
542
  */
431
- closestZoom() {
432
- const worldPerPixel = this.items.length ? Math.min(...this.items.map((item) => pixelsToWorld(item).x)) : 1;
543
+ closestZoom(items = this.items) {
544
+ const worldPerPixel = items.length ? Math.min(...items.map((item) => pixelsToWorld(item).x)) : 1;
433
545
  return this.options.maxZoomPixelRatio / worldPerPixel;
434
546
  }
435
547
  home(immediate = false) {
@@ -643,6 +755,31 @@ class CanvasRenderer {
643
755
  this.listeners.clear();
644
756
  delete this.host.dataset.backend;
645
757
  }
758
+ /**
759
+ * What a scene still preparing will want once shown, for the view it opens on: framed
760
+ * as home where it will be (`fit`), else where the camera is heading. Its items are
761
+ * laid out as copies, since kept ones are still on screen where they are. Each want
762
+ * goes ahead of the scene on screen, which is being left.
763
+ */
764
+ landingWants(items, world, fit) {
765
+ const placed = items.map((item) => ({ ...item, rect: { ...item.rect } }));
766
+ const laidOut = layoutItems(placed);
767
+ const bounds = world ? laidOut ? union([world, laidOut]) : world : laidOut;
768
+ if (!bounds) return [];
769
+ const camera = fit ? this.homeCamera(bounds, placed) : this.camera.destination;
770
+ if (!camera) return [];
771
+ const { wants } = planFrame({
772
+ items: placed,
773
+ camera,
774
+ viewport: this.viewport,
775
+ pixelRatio: this.pixelRatio,
776
+ getTile: (url) => this.cache.get(url)
777
+ });
778
+ return wants.map((want) => ({
779
+ ...want,
780
+ priority: want.priority - LANDING_AHEAD
781
+ }));
782
+ }
646
783
  /**
647
784
  * Track the scene's media elements: redraw when one has a new frame to show (it
648
785
  * started, seeked, or loaded), and drop the listeners when the scene changes.
@@ -729,15 +866,15 @@ class CanvasRenderer {
729
866
  * is the whole turn nearest where the camera is heading, so four quarter turns right then
730
867
  * home does not spin a full turn back, and three come upright by one more quarter.
731
868
  */
732
- homeCamera() {
733
- if (!this.worldBounds) return null;
869
+ homeCamera(bounds = this.worldBounds, items = this.items) {
870
+ if (!bounds) return null;
734
871
  const turn = 2 * Math.PI;
735
872
  const upright = Math.round(this.camera.destination.rotation / turn) * turn || 0;
736
873
  return this.fit(
737
- this.worldBounds,
874
+ bounds,
738
875
  upright,
739
876
  this.inset,
740
- this.options.upscale ? Infinity : this.closestZoom()
877
+ this.options.upscale ? Infinity : this.closestZoom(items)
741
878
  );
742
879
  }
743
880
  /**
@@ -11,6 +11,7 @@ void main() {
11
11
  v_uv = u_crop.xy + a_position * u_crop.zw;
12
12
  }
13
13
  `;
14
+ const LOD_BIAS = -0.5;
14
15
  const FRAGMENT_SHADER = `#version 300 es
15
16
  precision highp float;
16
17
  in vec2 v_uv;
@@ -19,7 +20,7 @@ uniform float u_opacity;
19
20
  out vec4 outColor;
20
21
 
21
22
  void main() {
22
- outColor = texture(u_texture, v_uv) * u_opacity;
23
+ outColor = texture(u_texture, v_uv, ${LOD_BIAS.toFixed(1)}) * u_opacity;
23
24
  }
24
25
  `;
25
26
  export {
@@ -4,7 +4,7 @@ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { en
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
5
  import { releaseImage } from "./decode.mjs";
6
6
  const DEFAULT_BUDGET = 192 * 1024 * 1024;
7
- const DEFAULT_IN_FLIGHT = 6;
7
+ const DEFAULT_IN_FLIGHT = 16;
8
8
  const MAX_ATTEMPTS = 2;
9
9
  class TileCache {
10
10
  constructor(options) {
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { sendsCredentials, cloverFetch } from "../../../core/request.mjs";
2
+ import { sendsCredentials, cloverFetch, discardBody } from "../../../core/request.mjs";
3
3
  class ImageLoadError extends Error {
4
4
  constructor(message, url, status) {
5
5
  super(message);
@@ -33,6 +33,7 @@ async function loadImage(url, options = {}) {
33
33
  return loaded;
34
34
  }
35
35
  if (!response.ok) {
36
+ discardBody(response);
36
37
  throw new ImageLoadError(
37
38
  `Image request failed with ${response.status}`,
38
39
  url,
@@ -4,12 +4,14 @@ import { compose, scale, translate } from "../math/affine.mjs";
4
4
  import { intersects } from "../math/rect.mjs";
5
5
  import { pixelsToWorld, orientOf, shownPointToPixels, shownToPixels } from "./sceneItem.mjs";
6
6
  import { tilesInRegion, chooseLevel } from "../sources/tilePyramid.mjs";
7
+ const MIDDLE_BAND = 5e6;
7
8
  const TARGET_BAND = 1e7;
8
9
  const IN_FLIGHT_BAND = 15e6;
9
10
  const OVERVIEW_BAND = 2e7;
10
11
  const IN_FLIGHT_LEVELS = 2;
11
12
  function planFrame(input) {
12
13
  const { items, camera, viewport, pixelRatio, getTile, destination } = input;
14
+ const has = input.has ?? ((url) => getTile(url) !== void 0);
13
15
  const view = worldToScreen(camera, viewport);
14
16
  const draws = [];
15
17
  const wants = [];
@@ -68,6 +70,20 @@ function planFrame(input) {
68
70
  }
69
71
  }
70
72
  }
73
+ const middle = target - IN_FLIGHT_LEVELS;
74
+ if (there === here && middle > 0) {
75
+ const asked = /* @__PURE__ */ new Set();
76
+ for (const address of fine) {
77
+ const tile = pyramid.tile(address);
78
+ if (has(tile.url)) continue;
79
+ for (const under of tilesInRegion(pyramid, middle, tile.region)) {
80
+ const key = `${under.col},${under.row}`;
81
+ if (asked.has(key)) continue;
82
+ asked.add(key);
83
+ want(pyramid, under, MIDDLE_BAND + distance(under));
84
+ }
85
+ }
86
+ }
71
87
  if (item.spec.hidden) continue;
72
88
  const targetTiles = target === 0 ? coarse : fine;
73
89
  const complete = targetTiles.every(
@@ -164,5 +180,6 @@ function dedupeWants(wants) {
164
180
  });
165
181
  }
166
182
  export {
183
+ TARGET_BAND,
167
184
  planFrame
168
185
  };