plexora 0.0.1__py3-none-any.whl

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 (248) hide show
  1. plexora/__init__.py +129 -0
  2. plexora/__main__.py +15 -0
  3. plexora/_url.py +105 -0
  4. plexora/api/__init__.py +55 -0
  5. plexora/api/dataset.py +398 -0
  6. plexora/api/http.py +19 -0
  7. plexora/api/plugin.py +541 -0
  8. plexora/api/store.py +221 -0
  9. plexora/cli.py +777 -0
  10. plexora/client/dist/354_bundle.js +2 -0
  11. plexora/client/dist/354_bundle.js.LICENSE.txt +20 -0
  12. plexora/client/dist/418_bundle.js +2 -0
  13. plexora/client/dist/418_bundle.js.LICENSE.txt +1 -0
  14. plexora/client/dist/693b935cb1f907814be9c6199a68c217.svg +19 -0
  15. plexora/client/dist/713c134ff47cd328a5b711526f151082.svg +18 -0
  16. plexora/client/dist/770_bundle.js +1 -0
  17. plexora/client/dist/ff743f408972e0e96ca9153ed5ae4c83.svg +23 -0
  18. plexora/client/dist/vendor_bundle.js +2 -0
  19. plexora/client/dist/vendor_bundle.js.LICENSE.txt +308 -0
  20. plexora/client/external/openseadragon-bin-2.4.0/LICENSE.txt +28 -0
  21. plexora/client/external/openseadragon-bin-2.4.0/canvas-overlay-hd.js +140 -0
  22. plexora/client/external/openseadragon-bin-2.4.0/changelog.txt +501 -0
  23. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/.gitattributes +17 -0
  24. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/LICENSE.txt +116 -0
  25. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/Photoshop/Toolbar.png +0 -0
  26. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/Photoshop/fullpage.psd +0 -0
  27. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/Photoshop/home.psd +0 -0
  28. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/Photoshop/next.psd +0 -0
  29. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/Photoshop/previous.psd +0 -0
  30. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/Photoshop/rotateleft.psd +0 -0
  31. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/Photoshop/rotateright.psd +0 -0
  32. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/Photoshop/zoom.psd +0 -0
  33. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/README.md +9 -0
  34. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/fullpage_grouphover.png +0 -0
  35. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/fullpage_hover.png +0 -0
  36. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/fullpage_pressed.png +0 -0
  37. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/fullpage_rest.png +0 -0
  38. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/home_grouphover.png +0 -0
  39. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/home_hover.png +0 -0
  40. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/home_pressed.png +0 -0
  41. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/home_rest.png +0 -0
  42. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/next_grouphover.png +0 -0
  43. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/next_hover.png +0 -0
  44. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/next_pressed.png +0 -0
  45. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/next_rest.png +0 -0
  46. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/previous_grouphover.png +0 -0
  47. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/previous_hover.png +0 -0
  48. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/previous_pressed.png +0 -0
  49. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/previous_rest.png +0 -0
  50. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/rotateleft_grouphover.png +0 -0
  51. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/rotateleft_hover.png +0 -0
  52. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/rotateleft_pressed.png +0 -0
  53. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/rotateleft_rest.png +0 -0
  54. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/rotateright_grouphover.png +0 -0
  55. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/rotateright_hover.png +0 -0
  56. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/rotateright_pressed.png +0 -0
  57. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/rotateright_rest.png +0 -0
  58. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/zoomin_grouphover.png +0 -0
  59. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/zoomin_hover.png +0 -0
  60. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/zoomin_pressed.png +0 -0
  61. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/zoomin_rest.png +0 -0
  62. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/zoomout_grouphover.png +0 -0
  63. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/zoomout_hover.png +0 -0
  64. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/zoomout_pressed.png +0 -0
  65. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/zoomout_rest.png +0 -0
  66. plexora/client/external/openseadragon-bin-2.4.0/openseadragon-scalebar.js +562 -0
  67. plexora/client/src/css/import.css +474 -0
  68. plexora/client/src/css/main.css +903 -0
  69. plexora/client/src/css/openProject.css +363 -0
  70. plexora/client/src/css/quickView.css +166 -0
  71. plexora/client/src/css/tokens.css +51 -0
  72. plexora/client/src/css/viewer.css +1655 -0
  73. plexora/client/src/img/apple-touch-icon.png +0 -0
  74. plexora/client/src/img/favicon.ico +0 -0
  75. plexora/client/src/img/logo.ai +8892 -33
  76. plexora/client/src/img/logo.svg +1 -0
  77. plexora/client/src/img/logo_with_text.ai +9011 -34
  78. plexora/client/src/img/logo_with_text.svg +1 -0
  79. plexora/client/src/js/main.js +704 -0
  80. plexora/client/src/js/pluginRegistry.js +108 -0
  81. plexora/client/src/js/services/appStatus.js +286 -0
  82. plexora/client/src/js/services/browsePicker.js +73 -0
  83. plexora/client/src/js/services/dataLayer.js +400 -0
  84. plexora/client/src/js/services/datasetContext.js +143 -0
  85. plexora/client/src/js/services/glRenderer.js +143 -0
  86. plexora/client/src/js/services/importFormValidation.js +257 -0
  87. plexora/client/src/js/services/numericData.js +100 -0
  88. plexora/client/src/js/services/passVariablesToFrontend.js +20 -0
  89. plexora/client/src/js/services/simpleEventHandler.js +25 -0
  90. plexora/client/src/js/vendor.js +29 -0
  91. plexora/client/src/js/views/channelList.js +663 -0
  92. plexora/client/src/js/views/colorSwatchPicker.js +202 -0
  93. plexora/client/src/js/views/columnClassifier.js +146 -0
  94. plexora/client/src/js/views/coordinateField.js +133 -0
  95. plexora/client/src/js/views/dataSourceField.js +276 -0
  96. plexora/client/src/js/views/imageViewer.js +3306 -0
  97. plexora/client/src/js/views/miniMap.js +787 -0
  98. plexora/client/src/js/views/navbarControls.js +178 -0
  99. plexora/client/src/js/views/openProjectPage.js +239 -0
  100. plexora/client/src/js/views/projectEdit.js +335 -0
  101. plexora/client/src/js/views/quickViewLanding.js +136 -0
  102. plexora/client/src/js/views/rainbow.js +326 -0
  103. plexora/client/src/js/views/requirementsModal.js +572 -0
  104. plexora/client/src/js/views/rgbImageViewer.js +115 -0
  105. plexora/client/src/js/views/searchableSelect.js +411 -0
  106. plexora/client/src/js/views/segmentationProgress.js +122 -0
  107. plexora/client/src/js/views/toolLoader.js +747 -0
  108. plexora/client/src/js/views/viewerControls.js +689 -0
  109. plexora/client/src/js/views/viewerManager.js +434 -0
  110. plexora/client/src/js/views/viewerSidebar.js +1117 -0
  111. plexora/client/src/js/workers/tileDecoder.js +130 -0
  112. plexora/client/src/shaders/frag.glsl +528 -0
  113. plexora/client/src/shaders/vert.glsl +12 -0
  114. plexora/client/templates/base.html +212 -0
  115. plexora/client/templates/index.html +238 -0
  116. plexora/client/templates/open_project.html +96 -0
  117. plexora/client/templates/project_columns.html +86 -0
  118. plexora/client/templates/project_edit.html +196 -0
  119. plexora/client/templates/upload.html +118 -0
  120. plexora/connect.py +528 -0
  121. plexora/datasource.py +782 -0
  122. plexora/jupyter.py +406 -0
  123. plexora/notebook_env.py +232 -0
  124. plexora/paths.py +486 -0
  125. plexora/plugins/__init__.py +12 -0
  126. plexora/plugins/cell_explorer/__init__.py +100 -0
  127. plexora/plugins/cell_explorer/server/__init__.py +11 -0
  128. plexora/plugins/cell_explorer/server/routes.py +167 -0
  129. plexora/plugins/cell_explorer/server/state.py +281 -0
  130. plexora/plugins/cell_explorer/server/values.py +145 -0
  131. plexora/plugins/cell_explorer/server/variables.py +367 -0
  132. plexora/plugins/cell_explorer/static/cellExplorerApi.js +158 -0
  133. plexora/plugins/cell_explorer/static/cellExplorerColors.js +316 -0
  134. plexora/plugins/cell_explorer/static/cellExplorerContinuous.js +403 -0
  135. plexora/plugins/cell_explorer/static/cellExplorerFigureBridge.js +133 -0
  136. plexora/plugins/cell_explorer/static/cellExplorerLegend.js +188 -0
  137. plexora/plugins/cell_explorer/static/cellExplorerRoiBridge.js +822 -0
  138. plexora/plugins/cell_explorer/static/cellExplorerSidebarController.js +826 -0
  139. plexora/plugins/cell_explorer/static/cellExplorerState.js +372 -0
  140. plexora/plugins/cell_explorer/static/cell_explorer.css +752 -0
  141. plexora/plugins/cell_explorer/templates/cell_explorer/panel.html +137 -0
  142. plexora/plugins/figure_builder/__init__.py +125 -0
  143. plexora/plugins/figure_builder/server/__init__.py +7 -0
  144. plexora/plugins/figure_builder/server/compose.py +365 -0
  145. plexora/plugins/figure_builder/server/export.py +784 -0
  146. plexora/plugins/figure_builder/server/export_jobs.py +148 -0
  147. plexora/plugins/figure_builder/server/operations.py +556 -0
  148. plexora/plugins/figure_builder/server/pixels.py +142 -0
  149. plexora/plugins/figure_builder/server/provenance.py +174 -0
  150. plexora/plugins/figure_builder/server/render.py +278 -0
  151. plexora/plugins/figure_builder/server/repository.py +701 -0
  152. plexora/plugins/figure_builder/server/routes.py +594 -0
  153. plexora/plugins/figure_builder/server/schema.py +1023 -0
  154. plexora/plugins/figure_builder/server/sources.py +120 -0
  155. plexora/plugins/figure_builder/server/textmetrics.py +155 -0
  156. plexora/plugins/figure_builder/static/figureActions.js +363 -0
  157. plexora/plugins/figure_builder/static/figureBuilderApi.js +255 -0
  158. plexora/plugins/figure_builder/static/figureCanvas.js +2362 -0
  159. plexora/plugins/figure_builder/static/figureCaptureBoxes.js +369 -0
  160. plexora/plugins/figure_builder/static/figureCaptureDock.js +466 -0
  161. plexora/plugins/figure_builder/static/figureCaptureTool.js +1034 -0
  162. plexora/plugins/figure_builder/static/figureConfirm.js +136 -0
  163. plexora/plugins/figure_builder/static/figureContextBar.js +1193 -0
  164. plexora/plugins/figure_builder/static/figureContextMenu.js +253 -0
  165. plexora/plugins/figure_builder/static/figureDocumentState.js +275 -0
  166. plexora/plugins/figure_builder/static/figureExportUi.js +174 -0
  167. plexora/plugins/figure_builder/static/figureLibrary.js +247 -0
  168. plexora/plugins/figure_builder/static/figureQuickEdit.js +628 -0
  169. plexora/plugins/figure_builder/static/figureRichText.js +634 -0
  170. plexora/plugins/figure_builder/static/figureSceneSnapshot.js +361 -0
  171. plexora/plugins/figure_builder/static/figureSchema.js +218 -0
  172. plexora/plugins/figure_builder/static/figureSidebarController.js +1159 -0
  173. plexora/plugins/figure_builder/static/figureTextEditor.js +503 -0
  174. plexora/plugins/figure_builder/static/figureTextPanel.js +491 -0
  175. plexora/plugins/figure_builder/static/figureViewOptions.js +273 -0
  176. plexora/plugins/figure_builder/static/figureWorkspace.js +2030 -0
  177. plexora/plugins/figure_builder/static/figure_builder.css +3292 -0
  178. plexora/plugins/figure_builder/templates/figure_builder/library.html +74 -0
  179. plexora/plugins/figure_builder/templates/figure_builder/workspace.html +27 -0
  180. plexora/plugins/figure_builder/templates/figure_builder/workspace_body.html +458 -0
  181. plexora/plugins/gating/__init__.py +76 -0
  182. plexora/plugins/gating/server/__init__.py +0 -0
  183. plexora/plugins/gating/server/anndata_gates.py +367 -0
  184. plexora/plugins/gating/server/database.py +16 -0
  185. plexora/plugins/gating/server/model.py +320 -0
  186. plexora/plugins/gating/server/routes.py +235 -0
  187. plexora/plugins/gating/static/csvGatingList.js +947 -0
  188. plexora/plugins/gating/static/gating.css +289 -0
  189. plexora/plugins/gating/static/gatingApi.js +221 -0
  190. plexora/plugins/gating/static/gatingSidebarController.js +513 -0
  191. plexora/plugins/gating/templates/gating/legacy.html +26 -0
  192. plexora/plugins/gating/templates/gating/panel.html +69 -0
  193. plexora/plugins/roi/__init__.py +95 -0
  194. plexora/plugins/roi/server/__init__.py +8 -0
  195. plexora/plugins/roi/server/adapters.py +655 -0
  196. plexora/plugins/roi/server/geojson.py +267 -0
  197. plexora/plugins/roi/server/geometry.py +181 -0
  198. plexora/plugins/roi/server/mapping.py +169 -0
  199. plexora/plugins/roi/server/operations.py +293 -0
  200. plexora/plugins/roi/server/repository.py +215 -0
  201. plexora/plugins/roi/server/routes.py +409 -0
  202. plexora/plugins/roi/server/schema.py +323 -0
  203. plexora/plugins/roi/static/roi.css +583 -0
  204. plexora/plugins/roi/static/roiApi.js +177 -0
  205. plexora/plugins/roi/static/roiFigureBridge.js +107 -0
  206. plexora/plugins/roi/static/roiGeometry.js +350 -0
  207. plexora/plugins/roi/static/roiRenderer.js +278 -0
  208. plexora/plugins/roi/static/roiSidebarController.js +1038 -0
  209. plexora/plugins/roi/static/roiState.js +518 -0
  210. plexora/plugins/roi/static/roiTools.js +993 -0
  211. plexora/plugins/roi/templates/roi/panel.html +240 -0
  212. plexora/proxy.py +57 -0
  213. plexora/server/models/adapters/__init__.py +94 -0
  214. plexora/server/models/adapters/anndata_adapter.py +388 -0
  215. plexora/server/models/adapters/base.py +93 -0
  216. plexora/server/models/adapters/classify.py +192 -0
  217. plexora/server/models/adapters/csv_adapter.py +105 -0
  218. plexora/server/models/adapters/inspection.py +265 -0
  219. plexora/server/models/adapters/spatialdata_adapter.py +248 -0
  220. plexora/server/models/centroid_tiles.py +305 -0
  221. plexora/server/models/data_model.py +1659 -0
  222. plexora/server/models/database_model.py +169 -0
  223. plexora/server/models/project.py +1270 -0
  224. plexora/server/plugins.py +199 -0
  225. plexora/server/routes/browse_routes.py +41 -0
  226. plexora/server/routes/data_routes.py +294 -0
  227. plexora/server/routes/import_routes.py +603 -0
  228. plexora/server/routes/page_routes.py +139 -0
  229. plexora/server/routes/project_routes.py +438 -0
  230. plexora/server/routes/quick_view_routes.py +62 -0
  231. plexora/server/routes/system_routes.py +39 -0
  232. plexora/server/routes/tool_routes.py +418 -0
  233. plexora/server/utils/addHEColumns.py +11 -0
  234. plexora/server/utils/fast_png.py +97 -0
  235. plexora/server/utils/fullConversion.py +50 -0
  236. plexora/server/utils/native_dialog.py +168 -0
  237. plexora/server/utils/pre_normalization.py +47 -0
  238. plexora/server/utils/segmentation_pyramid.py +598 -0
  239. plexora/server/utils/smallestenclosingcircle.py +126 -0
  240. plexora/server/utils/tiffsurgeon.py +372 -0
  241. plexora/server_cli.py +48 -0
  242. plexora/test.py +0 -0
  243. plexora-0.0.1.dist-info/METADATA +341 -0
  244. plexora-0.0.1.dist-info/RECORD +248 -0
  245. plexora-0.0.1.dist-info/WHEEL +5 -0
  246. plexora-0.0.1.dist-info/entry_points.txt +12 -0
  247. plexora-0.0.1.dist-info/licenses/LICENSE +207 -0
  248. plexora-0.0.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,308 @@
1
+ /*!
2
+ * Bootstrap v5.3.8 (https://getbootstrap.com/)
3
+ * Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
+ */
6
+
7
+ /*!
8
+ * Font Awesome Free 7.3.1 by @fontawesome - https://fontawesome.com
9
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
10
+ * Copyright 2026 Fonticons, Inc.
11
+ */
12
+
13
+ /*!
14
+ * The buffer module from node.js, for the browser.
15
+ *
16
+ * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
17
+ * @license MIT
18
+ */
19
+
20
+ /*!
21
+ * The buffer module from node.js, for the browser.
22
+ *
23
+ * @author Feross Aboukhadijeh <https://feross.org>
24
+ * @license MIT
25
+ */
26
+
27
+ /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
28
+
29
+ /**
30
+ * @license
31
+ Copyright (c) 2008, Adobe Systems Incorporated
32
+ All rights reserved.
33
+
34
+ Redistribution and use in source and binary forms, with or without
35
+ modification, are permitted provided that the following conditions are
36
+ met:
37
+
38
+ * Redistributions of source code must retain the above copyright notice,
39
+ this list of conditions and the following disclaimer.
40
+
41
+ * Redistributions in binary form must reproduce the above copyright
42
+ notice, this list of conditions and the following disclaimer in the
43
+ documentation and/or other materials provided with the distribution.
44
+
45
+ * Neither the name of Adobe Systems Incorporated nor the names of its
46
+ contributors may be used to endorse or promote products derived from
47
+ this software without specific prior written permission.
48
+
49
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
50
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
51
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
52
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
53
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
54
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
55
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
56
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
57
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
58
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
59
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
60
+ */
61
+
62
+ /**
63
+ * @license
64
+ *
65
+ * Licensed under the MIT License.
66
+ * http://opensource.org/licenses/mit-license
67
+ */
68
+
69
+ /**
70
+ * @license
71
+ * (c) Dean McNamee <dean@gmail.com>, 2013.
72
+ *
73
+ * https://github.com/deanm/omggif
74
+ *
75
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
76
+ * of this software and associated documentation files (the "Software"), to
77
+ * deal in the Software without restriction, including without limitation the
78
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
79
+ * sell copies of the Software, and to permit persons to whom the Software is
80
+ * furnished to do so, subject to the following conditions:
81
+ *
82
+ * The above copyright notice and this permission notice shall be included in
83
+ * all copies or substantial portions of the Software.
84
+ *
85
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
86
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
87
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
88
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
89
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
90
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
91
+ * IN THE SOFTWARE.
92
+ *
93
+ * omggif is a JavaScript implementation of a GIF 89a encoder and decoder,
94
+ * including animation and compression. It does not rely on any specific
95
+ * underlying system, so should run in the browser, Node, or Plask.
96
+ */
97
+
98
+ /**
99
+ * @license
100
+ * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv
101
+ *
102
+ * Licensed under the MIT License.
103
+ * http://opensource.org/licenses/mit-license
104
+ */
105
+
106
+ /**
107
+ * @license
108
+ * Copyright (c) 2017 Aras Abbasi
109
+ *
110
+ * Licensed under the MIT License.
111
+ * http://opensource.org/licenses/mit-license
112
+ */
113
+
114
+ /**
115
+ * @license
116
+ * Copyright (c) 2018 Aras Abbasi
117
+ *
118
+ * Licensed under the MIT License.
119
+ * http://opensource.org/licenses/mit-license
120
+ */
121
+
122
+ /**
123
+ * @license
124
+ * Copyright (c) 2019 Aras Abbasi
125
+ *
126
+ * Licensed under the MIT License.
127
+ * http://opensource.org/licenses/mit-license
128
+ */
129
+
130
+ /**
131
+ * @license
132
+ * FPDF is released under a permissive license: there is no usage restriction.
133
+ * You may embed it freely in your application (commercial or not), with or
134
+ * without modifications.
135
+ *
136
+ * Reference: http://www.fpdf.org/en/script/script37.php
137
+ */
138
+
139
+ /**
140
+ * @license
141
+ * Joseph Myers does not specify a particular license for his work.
142
+ *
143
+ * Author: Joseph Myers
144
+ * Accessed from: http://www.myersdaily.org/joseph/javascript/md5.js
145
+ *
146
+ * Modified by: Owen Leong
147
+ */
148
+
149
+ /**
150
+ * @license
151
+ * Licensed under the MIT License.
152
+ * http://opensource.org/licenses/mit-license
153
+ * Author: Owen Leong (@owenl131)
154
+ * Date: 15 Oct 2020
155
+ * References:
156
+ * https://www.cs.cmu.edu/~dst/Adobe/Gallery/anon21jul01-pdf-encryption.txt
157
+ * https://github.com/foliojs/pdfkit/blob/master/lib/security.js
158
+ * http://www.fpdf.org/en/script/script37.php
159
+ */
160
+
161
+ /**
162
+ * @license
163
+ * Licensed under the MIT License.
164
+ * http://opensource.org/licenses/mit-license
165
+ */
166
+
167
+ /**
168
+ * @license
169
+ * Lodash <https://lodash.com/>
170
+ * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
171
+ * Released under MIT license <https://lodash.com/license>
172
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
173
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
174
+ */
175
+
176
+ /**
177
+ * @license
178
+ * Unicode Bidi Engine based on the work of Alex Shensis (@asthensis)
179
+ * MIT License
180
+ */
181
+
182
+ /**
183
+ * @license
184
+ * jsPDF fileloading PlugIn
185
+ * Copyright (c) 2018 Aras Abbasi (aras.abbasi@gmail.com)
186
+ *
187
+ * Licensed under the MIT License.
188
+ * http://opensource.org/licenses/mit-license
189
+ */
190
+
191
+ /**
192
+ * @license
193
+ * jsPDF filters PlugIn
194
+ * Copyright (c) 2014 Aras Abbasi
195
+ *
196
+ * Licensed under the MIT License.
197
+ * http://opensource.org/licenses/mit-license
198
+ */
199
+
200
+ /**
201
+ * @license
202
+ * jsPDF virtual FileSystem functionality
203
+ *
204
+ * Licensed under the MIT License.
205
+ * http://opensource.org/licenses/mit-license
206
+ */
207
+
208
+ /**
209
+ * A class to parse color values
210
+ * @author Stoyan Stefanov <sstoo@gmail.com>
211
+ * {@link http://www.phpied.com/rgb-color-parser-in-javascript/}
212
+ * @license Use it if you like it
213
+ */
214
+
215
+ /** ====================================================================
216
+ * @license
217
+ * jsPDF XMP metadata plugin
218
+ * Copyright (c) 2016 Jussi Utunen, u-jussi@suomi24.fi
219
+ *
220
+ * Permission is hereby granted, free of charge, to any person obtaining
221
+ * a copy of this software and associated documentation files (the
222
+ * "Software"), to deal in the Software without restriction, including
223
+ * without limitation the rights to use, copy, modify, merge, publish,
224
+ * distribute, sublicense, and/or sell copies of the Software, and to
225
+ * permit persons to whom the Software is furnished to do so, subject to
226
+ * the following conditions:
227
+ *
228
+ * The above copyright notice and this permission notice shall be
229
+ * included in all copies or substantial portions of the Software.
230
+ *
231
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
232
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
233
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
234
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
235
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
236
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
237
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
238
+ * ====================================================================
239
+ */
240
+
241
+ /** @license
242
+ * Copyright (c) 2017 Dominik Homberger
243
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
244
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
245
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
246
+ https://webpjs.appspot.com
247
+ WebPRiffParser dominikhlbg@gmail.com
248
+ */
249
+
250
+ /** @license
251
+ *
252
+ * jsPDF - PDF Document creation from JavaScript
253
+ * Version 3.0.4 Built on 2025-11-19T12:48:37.232Z
254
+ * CommitID 00000000
255
+ *
256
+ * Copyright (c) 2010-2025 James Hall <james@parall.ax>, https://github.com/MrRio/jsPDF
257
+ * 2015-2025 yWorks GmbH, http://www.yworks.com
258
+ * 2015-2025 Lukas Holländer <lukas.hollaender@yworks.com>, https://github.com/HackbrettXXX
259
+ * 2016-2018 Aras Abbasi <aras.abbasi@gmail.com>
260
+ * 2010 Aaron Spike, https://github.com/acspike
261
+ * 2012 Willow Systems Corporation, https://github.com/willowsystems
262
+ * 2012 Pablo Hess, https://github.com/pablohess
263
+ * 2012 Florian Jenett, https://github.com/fjenett
264
+ * 2013 Warren Weckesser, https://github.com/warrenweckesser
265
+ * 2013 Youssef Beddad, https://github.com/lifof
266
+ * 2013 Lee Driscoll, https://github.com/lsdriscoll
267
+ * 2013 Stefan Slonevskiy, https://github.com/stefslon
268
+ * 2013 Jeremy Morel, https://github.com/jmorel
269
+ * 2013 Christoph Hartmann, https://github.com/chris-rock
270
+ * 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria
271
+ * 2014 James Makes, https://github.com/dollaruw
272
+ * 2014 Diego Casorran, https://github.com/diegocr
273
+ * 2014 Steven Spungin, https://github.com/Flamenco
274
+ * 2014 Kenneth Glassey, https://github.com/Gavvers
275
+ *
276
+ * Permission is hereby granted, free of charge, to any person obtaining
277
+ * a copy of this software and associated documentation files (the
278
+ * "Software"), to deal in the Software without restriction, including
279
+ * without limitation the rights to use, copy, modify, merge, publish,
280
+ * distribute, sublicense, and/or sell copies of the Software, and to
281
+ * permit persons to whom the Software is furnished to do so, subject to
282
+ * the following conditions:
283
+ *
284
+ * The above copyright notice and this permission notice shall be
285
+ * included in all copies or substantial portions of the Software.
286
+ *
287
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
288
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
289
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
290
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
291
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
292
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
293
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
294
+ *
295
+ * Contributor(s):
296
+ * siefkenj, ahwolf, rickygu, Midnith, saintclair, eaparango,
297
+ * kim3er, mfo, alnorth, Flamenco
298
+ */
299
+
300
+ //! Built on 2026-08-06
301
+
302
+ //! Git commit: v6.1.0-0-1dc52bd0
303
+
304
+ //! License: http://openseadragon.github.io/license/
305
+
306
+ //! http://openseadragon.github.io
307
+
308
+ //! openseadragon 6.1.0
@@ -0,0 +1,28 @@
1
+ Copyright (C) 2009 CodePlex Foundation
2
+ Copyright (C) 2010-2013 OpenSeadragon contributors
3
+
4
+ Redistribution and use in source and binary forms, with or without
5
+ modification, are permitted provided that the following conditions are met:
6
+
7
+ - Redistributions of source code must retain the above copyright notice,
8
+ this list of conditions and the following disclaimer.
9
+
10
+ - Redistributions in binary form must reproduce the above copyright notice,
11
+ this list of conditions and the following disclaimer in the documentation
12
+ and/or other materials provided with the distribution.
13
+
14
+ - Neither the name of CodePlex Foundation nor the names of its contributors
15
+ may be used to endorse or promote products derived from this software
16
+ without specific prior written permission.
17
+
18
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28
+ POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,140 @@
1
+ // https://github.com/joshua-gould/OpenSeadragonCanvasOverlayHd v1.0.0 Copyright 2018 Joshua Gould
2
+ (function (global, factory) {
3
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
4
+ typeof define === 'function' && define.amd ? define(factory) :
5
+ (global.OpenSeadragon = global.OpenSeadragon || {}, global.OpenSeadragon.CanvasOverlayHd = factory());
6
+ }(this, (function () { 'use strict';
7
+
8
+ class CanvasOverlayHd {
9
+ constructor (viewer, options) {
10
+ this._viewer = viewer;
11
+ this.backingScale = 1;
12
+ this._containerWidth = 0;
13
+ this._containerHeight = 0;
14
+ this._canvasdiv = document.createElement('div');
15
+ this._canvasdiv.style.position = 'absolute';
16
+ this._canvasdiv.style.left = 0;
17
+ this._canvasdiv.style.top = 0;
18
+ this._canvasdiv.style.width = '100%';
19
+ this._canvasdiv.style.height = '100%';
20
+ this._viewer.canvas.appendChild(this._canvasdiv);
21
+ this._canvas = document.createElement('canvas');
22
+ this._canvasdiv.appendChild(this._canvas);
23
+ this.onRedraw = options.onRedraw || function () {};
24
+ this.clearBeforeRedraw = (typeof (options.clearBeforeRedraw) !== 'undefined') ?
25
+ options.clearBeforeRedraw : true;
26
+
27
+
28
+ //
29
+ // var that = this;
30
+ // this._viewer.world.addHandler('add-item', function(event) {
31
+ // var tiledImage = event.item;
32
+ // tiledImage.addHandler('fully-loaded-change', function(e) {
33
+ // that.resize();
34
+ // that._updateCanvas();
35
+ // });
36
+ // });
37
+
38
+
39
+ this._viewer.addHandler('update-viewport', () => {
40
+ this.resize();
41
+ this._updateCanvas();
42
+ });
43
+ this._viewer.addHandler('open', () => {
44
+ this.resize();
45
+ this._updateCanvas();
46
+ });
47
+ }
48
+
49
+ static getTileIndexFromPixel (viewer, webPoint) {
50
+ let viewportPos = viewer.viewport.pointFromPixel(webPoint);
51
+ for (let i = 0, count = viewer.world.getItemCount(); i < count; i++) {
52
+ let tiledImage = viewer.world.getItemAt(i);
53
+ // box = viewer.world.getItemAt(i).getBounds();
54
+ // if (viewportPos.x > box.x &&
55
+ // viewportPos.y > box.y &&
56
+ // viewportPos.x < box.x + box.width &&
57
+ // viewportPos.y < box.y + box.height) {
58
+ //
59
+ // }
60
+ // tiledImage.lastDrawn.forEach(function (tile) {
61
+ // if (tile.bounds.containsPoint(viewportPos)) {
62
+ // console.log('lastDrawn', tile);
63
+ // }
64
+ // });
65
+
66
+ let viewportPosRect = new OpenSeadragon.Rect(viewportPos.x, viewportPos.y, 0, 0);
67
+ let tileSourcePosRect = tiledImage._viewportToTiledImageRectangle(viewportPosRect);
68
+ let tileSourcePos = tileSourcePosRect.getTopLeft();
69
+ let source = tiledImage.source;
70
+ if (tileSourcePos.x >= 0 && tileSourcePos.x <= 1 && tileSourcePos.y >= 0 &&
71
+ tileSourcePos.y <= 1 / source.aspectRatio) {
72
+ return i;
73
+ // for (let level = source.minLevel; level <= source.maxLevel; level++) {
74
+ // let tilePoint = source.getTileAtPoint(level, tileSourcePos);
75
+ // return i;
76
+ // }
77
+ }
78
+ }
79
+ return -1;
80
+ }
81
+
82
+ canvas () {
83
+ return this._canvas;
84
+ }
85
+
86
+ context2d () {
87
+ return this._canvas.getContext('2d');
88
+ }
89
+
90
+ clear () {
91
+ this._canvas.getContext('2d').
92
+ clearRect(0, 0, this._containerWidth * this.backingScale, this._containerHeight * this.backingScale);
93
+ }
94
+
95
+ resize () {
96
+ let backingScale = 1;
97
+ if (typeof window !== 'undefined' && 'devicePixelRatio' in window) {
98
+ backingScale = window.devicePixelRatio;
99
+ }
100
+ let backingScaleUpdated = this.backingScale !== backingScale;
101
+ this.backingScale = backingScale;
102
+ if (this._containerWidth !== this._viewer.container.clientWidth || backingScaleUpdated) {
103
+ this._containerWidth = this._viewer.container.clientWidth;
104
+ this._canvasdiv.setAttribute('width', backingScale * this._containerWidth);
105
+ this._canvas.setAttribute('width', backingScale * this._containerWidth);
106
+ this._canvas.style.width = this._containerWidth + 'px';
107
+ }
108
+
109
+ if (this._containerHeight !== this._viewer.container.clientHeight || backingScaleUpdated) {
110
+ this._containerHeight = this._viewer.container.clientHeight;
111
+ this._canvasdiv.setAttribute('height', backingScale * this._containerHeight);
112
+ this._canvas.setAttribute('height', backingScale * this._containerHeight);
113
+ this._canvas.style.height = this._containerHeight + 'px';
114
+ }
115
+ }
116
+
117
+ _updateCanvas () {
118
+ let viewportZoom = this._viewer.viewport.getZoom(true);
119
+ if (this.clearBeforeRedraw) {
120
+ this.clear();
121
+ }
122
+ let context = this._canvas.getContext('2d');
123
+ for (let i = 0, count = this._viewer.world.getItemCount(); i < count; i++) {
124
+ let image = this._viewer.world.getItemAt(i);
125
+ if (image) {
126
+ let zoom = image.viewportToImageZoom(viewportZoom);
127
+ let vp = image.imageToViewportCoordinates(0, 0, true);
128
+ let p = this._viewer.viewport.pixelFromPoint(vp, true);
129
+ context.scale(this.backingScale, this.backingScale);
130
+ context.translate(p.x, p.y);
131
+ context.scale(zoom, zoom);
132
+ this.onRedraw({ index: i, context: context, x: p.x, y: p.y, zoom: zoom });
133
+ context.setTransform(1, 0, 0, 1, 0, 0);
134
+ }
135
+ }
136
+ }
137
+ }
138
+
139
+ return CanvasOverlayHd;
140
+ })));