Releases: openseadragon/openseadragon
Releases · openseadragon/openseadragon
v6.0.2
- Fixed an issue with being able to augment OSD's TypeScript types (#2887 @rssaini01)
- Enhanced/fixed MouseTracker TypeScript types (#2888 @msalsbery)
v6.0.1
v6.0.0
- NEW BEHAVIOR: OpenSeadragon Data Pipeline Overhaul (#2407, #2643, #2718, #2739, #2775, #2762, #2816, #2863, #2858, #2871 @Aiosa)
- DEPRECATION: Properties on tile that manage drawer data, or store data to draw: Tile.[element|imgElement|style|context2D|getImage|getCanvasContext] and transitively Tile.getScaleForEdgeSmoothing
- DEPRECATION: TileSource data lifecycle handlers: system manages these automatically: TileSource.[createTileCache|destroyTileCache|getTileCacheData|getTileCacheDataAsImage|getTileCacheDataAsContext2D]
- Tiles data is driven by caches: tiles can have multiple caches and cache can reference multiple tiles.
- Data types & conversion pipeline: caches support automated conversion between types, and call optionally destructors. These are asynchronous.
- Data conversion reasoning: the system keeps costs of converters and seeks the cheapest conversion to a target format (using Dijkstra).
- Async support: events can now await handlers. Added OpenSeadragon.Promise proxy object. This object supports also synchronous mode.
- Drawers define what data they are able to work with, and receive automatically data from one of the declared types.
- Drawers now store data only inside cache, and provide optional type converters to move data into a format they can work with.
- TileSource equality operator. TileSource destructor support. TileSources now must output type of the data they download [context.finish].
- Zombies: data can outlive tiles, and be kept in the system to wait if they are not suddenly needed. Turned on automatically with TiledImage addition with
replace: trueand equality test success. - ImagesLoadedPerFrame is boosted 10 times when system is fresh (reset / open) and then declines back to original value.
- CacheRecord supports 'internal cache' of 'SimpleCache' type. This cache can be used by drawers to hide complex types used for rendering. Such caches are stored internally on CacheRecord objects.
- CacheRecord drives asynchronous data management and ensures correct behavior through awaiting Promises.
- TileCache adds new methods for cache modification: renameCache, cloneCache, injectCache, replaceCache, restoreTilesThatShareOriginalCache, safeUnloadCache, unloadCacheForTile and more. Used internally within invalidation events
- Tiles have up to two 'originalCacheKey' and 'cacheKey' caches, which keep original data and target drawn data (if modified).
- Invalidation Pipeline: New event 'tile-invalidated' and requestInvalidate methods on World and TiledImage. Tiles get methods to modify data to draw, system prepares data for drawing and swaps them with the current main tile cache.
- New test suites for the new cache system, conversion pipeline and invalidation events.
- New testing/demo utilities (MockSeadragon, DrawerSwitcher for switching drawers in demos, getBuiltInDrawersForTest for testing all drawers), serialization guard in tests to remove circular references.
- New demos, demonstrating the new pipeline. New demos for older plugins to show how compatible new version is.
- Misc: updated CSS for dev server, new dev & test commands.
- NEW BEHAVIOR: The per-image ajaxHeaders (specified when opening) are now being merged with the viewer's ajaxHeaders (overriding as appropriate), rather than replacing them (#2757 @hrocha1)
- New tile source: IIP (Internet Imaging Protocol) (#2719 @ruven)
- New tile source: Iris (#2759 @nkathawa)
- The default drawer is now 'auto' which chooses between WebGL or canvas based on the device (#2829 @iangilman)
- New option: loadDestinationTilesOnAnimation. With it on, during animations, OSD loads tiles in the destination region, rather than the areas passed through on the way to the destination. This new feature is on by default. (#2686, #2690 @MichaelWGibson)
- New option: DrawerBase option for offscreen drawer creation, methods for TiledImage and TileSource creation exposed (#2790, #2822 @Aiosa)
- New data types: imageBitmap support with workers, image fetching moved from downloadTileStart to convertor (#2790 @Aiosa)
- New API: stopPropagation property on events (#2790 @Aiosa)
- Viewer element coordinate transformations are now based on the actual OSD element, rather than the element given to it by the user code, so it's more reliable (#2855 @dao251)
- Overlay wrapper elements now have a "openseadragon-overlay-wrapper" class. If the overlay element has an ID, the wrapper gets a variant on that ID, but if the overlay element does not have an ID, we no longer give the wrapper an ID. (#2698 @lokaesshwar)
- The functions the viewer uses to operate the zoom in and zoom out buttons are now accessible to be called programatically (#2702 @achu1998)
- The Viewer now has a getFullyLoaded function and a fully-loaded-change event, so you can know when all of the images in the viewer are loaded (#2707 @achu1998)
- The Viewer and TiledImage now both have a whenFullyLoaded function that will call you back when they are fully loaded (#2707 @achu1998)
- Improved IIIF tile requests in certain edge cases (#2710 @ruven)
- Now only removing OSD-created elements on destroy (rather than emptying out the entire container) (#2724 @Vinith1919)
- Now if you hold down navigation keys (pan or zoom), the movement is continuous rather than having a pause after the initial start (#2735 @achu1998)
- Added tries and maxReached properties to tile-load-failed event (#2777 @Tobio89)
- You can now turn off keyboard navigation (#2773 @colinrlim @yurii2007)
- Added: WebGLDrawer option to unpack textures with premultiplied alpha (#2776 @adriandarian)
- The WebGLDrawer now explicitly supports WebGL2. It's engaged automatically where available, with improvements to render quality (#2804 @adriandarian)
- If the WebGLDrawer loses its context (e.g. because too many WebGL surfaces in the browser) it now tries to recover, and switches to the canvas drawer if it can't (#2853 @pearcetm)
- Added optional support for tile load batching (#2834 @Aiosa)
- We are now including the TypeScript definitions directly in the project (#2813, #2823 @rssaini01)
- Better error handling in DataTypeConverter (#2860 @dao251)
- Improved detection for proper WebGL support before using the WebGLDrawer (#2865 @pearcetm)
- Improved drawer selection process; now if a drawer isn't included in the list of options, we won't use it (#2868 @pearcetm)
- Improved performance on mobile (#2732 @Sumaiya2505)
- Improved OSM compatibility (#2854 @JohanVisser97)
- Improved how OpenSeadragon is imported in various environments (#2644 @Aiosa)
- Improved documentation and code naming (#2676 @bennlich, #2729 @shaswata-26, #2754 @ganglike248, #2826 @kaicataldo, #2851 @pearcetm, #2852 @Aiosa)
- Improved unit tests (#2640 @harshkg23, #2803 @adriandarian, #2845 @adriandarian)
- Other internal code improvements (#2785 @suvanshenoy)
- Fixed: Transparency detection didn't always work properly (#2636 @pcram-techcyte)
- Fixed: MouseTracker's hasGestureHandlers and hasScrollHandler values were not getting updated upon dynamically adding/removing handlers (#2649 @Seafret)
- Fixed: Sometimes images wouldn't update when you changed their opacity (#2652 @pearcetm)
- Fixed: Possible MouseTracker hash collision (#2657 @cff29546)
- Fixed: Relative panning sometimes used the wrong starting point, causing jumping during touch panning (#2704 @DougTCooke)
- Fixed: World.arrange would misalign images that were rotated (#2709 @yowzadave)
- Fixed: In some cases TiledImage would throw an exception if there were no tiles to update (#2733 @DougTCooke)
- Fixed: TileSource API has now uniform behavior (#2790 @Aiosa)
- Fixed: Bugfixes and documentation improvement on tile invalidation pipeline (#2790 @Aiosa)
- Fixed: Sometimes the tile positions wouldn't update when the viewer was resized (#2798 @artokai)
- Fixed: Sometimes other elements on the page would get disrupted by the viewer going into full page/full screen mode (#2786 @DrRataplan)
- Fixed: In some circumstances an inline DZI tile source would get "undefined" added to the end of its URLs (#2832 @susanmonnelly)
- Fixed: In some circumstances the navigator wouldn't update its contents if you resized it (#2849 @pearcetm)
v5.0.1
- Improved overlay handling so it plays better with other libraries (#2582 @BeebBenjamin)
- WebGLDrawer now supports the imageSmoothingEnabled option (#2615 @pearcetm)
- Fixed: If you switched from WebGL drawer to canvas drawer, it didn't clean up properly (#2570 @pearcetm)
- Fixed: TiledImage.setClip would sometimes leave tiles unloaded (#2590 @pearcetm)
- Fixed: The WebGL drawer didn't support viewportMargins (#2600, #2606 @pearcetm)
- Fixed: If you set viewport rotation before flip, the navigator display region would be drawn wrong (#2619 @jbakarich)
- Fixed: In some cases, the WebGL drawer would draw the image in white (#2620 @sbarex)
- Fixed: If the user changed the page zoom or moved the window a different monitor, the image would disappear (#2627 @pearcetm)
v5.0.0
- BREAKING CHANGE: Dropped support for IE11 (#2300, #2361, #2553 @AndrewADev, @msalsbery)
- DEPRECATION: The OpenSeadragon.createCallback function is no longer recommended (#2367 @akansjain)
- The viewer now uses WebGL when available (#2310, #2462, #2466, #2468, #2469, #2472, #2478, #2488, #2492, #2521, #2537, #2557, #2558 @pearcetm, @Aiosa, @thec0keman)
- Added webp to supported image formats (#2455 @BeebBenjamin)
- Added avif to supported image formats (#2544 @msalsbery)
- Introduced maxTilesPerFrame option to allow loading more tiles simultaneously (#2387 @jetic83)
- Now when creating a viewer or navigator, we leave its position style alone if possible (#2393 @VIRAT9358)
- Added getter & setter for Viewport.maxZoomPixelRatio (#2506 @eug-L)
- Overlays are now positioned properly when the viewport is flipped (#2546 @BeebBenjamin)
- Added overlayPreserveContentDirection option to keep overlays readable when viewport is flipped (#2546 @BeebBenjamin)
- Test improvements (#2382 @AndrewADev)
- MouseTracker options documentation fixes (#2389 @msalsbery)
- Improved documentation and error message for Viewport.imageToViewportZoom (#2505 @eug-L)
- Fixed documentation typos (#2507 @frameflare)
- Additional documentation fixes (#2563 @msalsbery)
- Fixed: Sometimes if the viewport was flipped and the user zoomed in far enough, it would flip back (#2364 @SebDelile)
- Fixed: Two-finger tap on a Mac trackpad would zoom you out (#2431 @cavenel)
- Fixed: dragToPan gesture could not be disabled when flickEnabled was activated (#2464 @jonasengelmann)
- Fixed: placeholderFillStyle didn't work properly when the image was rotated (#2469 @pearcetm)
- Fixed: Sometimes exponential springs wouldn't ever settle (#2469 @pearcetm)
- Fixed: The navigator wouldn't update its tracking rectangle when the navigator was resized (#2491 @pearcetm)
- Fixed: The drawer would improperly crop when the viewport was flipped and a tiled image was rotated (#2511 @pearcetm, @eug-L)
- Fixed: Flipped viewport caused image to be flipped again when going fullscreen or resizing (#2518 @pearcetm)
- Fixed: Viewer ajax options (loadTilesWithAjax, ajaxHeaders, and ajaxWithCredentials) weren't being propogated to the navigator. (#2539 @eug-L)
v4.1.1
v4.1.0
- NEW BEHAVIOR: When
navigatorRotateis false, while the navigator image doesn't rotate, the red outline now does (#2356 @lcl45) - The viewer no longer emits
canvas-keyevents for both keydown and keypress events; canvas-key is now just for keydown, and the newcanvas-key-pressis for keypress (#2270 @hrghauri) - You can now specify a priority when calling addHandler, to control when your event handler gets called relative to others (#2273 @Aiosa)
- Added tileRetryMax and tileRetryDelay options, so the viewer can retry loading failed tiles (#2238 @Ughuuu @paaddyy, #2334 @Ughuuu @Titan21)
- All of the viewers keyboard handling is now in response to keydown events (it used to be split between keydown and keypress) (#2291 @MohitBansal321)
- Added
canvas-focusandcanvas-blurevents to Viewer (#2301 @MohitBansal321) - You can now more easily add custom buttons to the viewer (#2306 @MohitBansal321)
- The fitBounds function now takes zoom constraints into account (#2293 @pearcetm)
- The viewer now has an
after-resizeevent what happens after the viewport bounds have been updated, to complement theresizeevent which happens before (#2317 @pearcetm) - IIIFTileSource now uses resolution level dimensions provided in the info.json "sizes" field for more accurate tile requests (#2337 @ruven)
- Added setAjaxHeaders method to Viewer and TiledImage (#2346 @uschmidt83)
- Improved documentation (#2297 @KevinBritten)
- Fixed: The
tile-loadedevent's completionCallback could be called more than once in some circumstances (#2282 @Aiosa, @pearcetm) - Fixed: Navigator display rectangle was off if the page had
box-sizing: border-box(#2276 @ambujsahu81) - Fixed: Code that required identifying functions would fail for async functions (#2273 @Aiosa)
- Fixed: Reference strip click detection was not accurate for long reference strips (#2280 @damonsson)
- Fixed: Translation problems in some circumstances with cropping polygons enabled (#2316 @pearcetm)
- Fixed: The navigator area rectangle would grow larger when you zoom in very far (#2318 @donotloveshampo)
- Fixed: JSON with embedded XML was being incorrectly identified as XML (#2328 @craigberry)
- Fixed: Touch/pinch rotate was not working properly on some platforms (#2324 @rsimon, @pearcetm)
- Fixed: Navigator rotation didn't honor
immediatelyparameter (#2333 @robertjcolley) - Fixed: The navigator didn't update for its new size in certain circumstances (#2347 @pearcetm)
v4.0.0
- NEW BEHAVIOR: Setting the viewport rotation now animates by default (pass true for the new
immediatelyparameter to disable) (#2136 @jonasengelmann) - NEW BEHAVIOR: The auto resize now takes both width and height into account when scaling the contents proportionally to the viewer (#2256 @pearcetm)
- DEPRECATION: Don't access the viewport's degrees property directly anymore; instead use setRotation and getRotation (#2136 @jonasengelmann)
- New gesture: Double-click and drag to zoom (on by default for touch) (#2225 @HamzaTatheer)
- You can now provide a pivot point when rotating the viewport (#2233 #2253 @pearcetm)
- Improved the constraints that keep the image in the viewer, specifically when zoomed out a lot (#2160 @joedf, #2246 @pearcetm)
- You can now provide an element for the navigator (as an alternative to an ID) (#1303 @cameronbaney, #2166 #2175 @joedf)
- Now supporting IIIF "id" and "identifier" in addition to "@id" (#2173 @ahankinson)
- We now delegate tile fetching and caching to the TileSource, to allow for custom tile formats (#2148 @Aiosa)
- Added support for dynamic URLs from tile sources (#2247 @JohnReagan)
- The viewer now emits before-destroy and destroy events (#2239 @pearcetm)
- Auto resize detection is now more efficient (#2256 @pearcetm)
- Improved documentation (#2211 @shyamkumaryadav)
- Fixed: Cropping tiled images with polygons was broken (#2183 @altert)
- Fixed: Boundary constraints were wrong when the viewport was rotated (#2249 @pearcetm)
- Fixed: IIIF tile sizes would be calculated wrong on rare occasions (#2206 @filak)
- Fixed: Disabling buttons only changed their appearance, but they were still clickable (#2187 @pearcetm)
- Fixed: ImageTileSource produced an error having to do with getTileHashKey (#2190 @Aiosa)
- Fixed: On startup you would get an unnecessary "Viewer.buttons is deprecated" warning (#2201 @joedf, #2219 @jssullivan, #2212 @joedf)
v3.1.0
- Added subPixelRoundingForTransparency Viewer option to address seams that can appear in semi-transparent images (#2075 @TanukiSharp)
- Added Viewer.isAnimating() (#2075 @TanukiSharp)
- Added isFullScreen method to Viewer (#2067 @JachiOnuoha)
- Added option to include POST data when loading files via Ajax (#2072 @Aiosa)
- Exposed TiledImage's private functions for better maintainability (#2134 @Aiosa)
- Tile cache keys are now generated by the tile source, so it's easier to override them as needed (#2138 @Aiosa)
- Pinch to zoom now zooms around the center of the pinch, rather than the center of the viewer (#2158 @cavenel)
- Added fallback and deprecation warning for Viewer.buttons (which got changed to buttonGroup in 3.0.0) (#2153 @devbyjonah)
- Fixed an issue where turning off panVertical or panHorizontal would not affect the panning keyboard combos (#2069 @JachiOnuoha)
- Cleaned up console.logs so that errors and warnings use console.error and console.warn as appropriate (#2073 @Abhishek-90)
- Improved documentation (#2067 @JachiOnuoha, #2112 @shyamkumaryadav, #2152 @joedf, #2155 @samwilson)
- Fixed: Setting useCanvas to false would break the viewer (#2116 @rvv-bouvet)
- Allow silencing multi-image warnings on viewport coordinate conversion functions (#2120 @claycoleman)
- Fixed: Swiping fast multiple times made contact points in MouseTracker out of sync for touch events (#2121 @ronnymikalsen)
- Made MouseTracker more robust in certain scenarios (#2134, #2147 @Aiosa)
- Fixed an issue where full page mode wouldn't grow properly if you resized the window (#2100 @TanukiSharp)
- Now if you pass an error handler into makeAjaxRequest, it doesn't report errors into the console (#2142 @Aiosa)
- Fixed error caused by attaching MouseTracker to the page's document element (#2145 @tdiprima)
- Fixed an issue that would sometimes cause problems with freeing up ImageTileSource memory (#2162 @pearcetm)
v3.0.0
- BREAKING CHANGE: Dropped support for older browsers (IE < 11) (#1872 #1949 #1951 @msalsbery, #1950 @rmontroy)
- BREAKING CHANGE: Removed deprecated OpenSeadragon.getEvent function (#1949 @msalsbery)
- DEPRECATION: MouseTracker exitHandler deprecated for name change to leaveHandler for consistency with DOM event names (#1872 @msalsbery)
- Now when "simple image" tile sources are removed from the viewer, they free the memory used by the pyramid they create (#1789 @TakumaKira)
- Improvements to docs (#1814 @kenanchristian, #1872 @msalsbery, #1996 @tdiprima)
- Better cleanup on destruction, to avoid memory leaks (#1832 @JoFrMueller)
- Better handle destruction when navigator in custom location (#1884 @woodchuck)
- Miscellaneous code cleanup (#1840 @msalsbery)
- You can now specify tileSize for the Zoomify Tile Source (#1868 @abrlam)
- Better use of IIIF "max" and "full" URL parameters (#1871 @MImranAsghar)
- You can now specify the file format of the tiles in the Zoomify tile source (#1889 @abrlam)
- Improved browser sniffing - detect EDGE and CHROMEEDGE browsers (#1872 @msalsbery)
- Improved DOM event model feature detection (#1872 @msalsbery)
- Added support for options parameter on addEvent()/removeEvent (to support passive option) (#1872 @msalsbery)
- Added OpenSeadragon.eventIsCanceled() function for defaultPrevented detection on DOM events (#1872 @msalsbery)
- MouseTracker: better PointerEvent model detection - removed use of deprecated window.navigator.pointerEnabled (#1872 @msalsbery)
- MouseTracker: added overHandler/outHandler options for handling corresponding pointerover/pointerout events (#1872 @msalsbery)
- MouseTracker: changed enterHandler/leaveHandler to use DOM pointerenter/pointerleave events instead of simulating using pointerover/pointerout (#1872 @msalsbery)
- All internal uses of MouseTracker use pointerenter/pointerleave events instead of pointerover/pointerout events for more consistent pointer tracking (#1872 @msalsbery)
- Fixed bug in Button class where two MouseTracker event handlers used an invalid "this" causing issues in some browsers (#1872 @msalsbery)
- Added pointerType property to Viewer container-enter, container-exit, canvas-drag, canvas-drag-end, canvas-pinch events (#1872 @msalsbery)
- MouseTracker: Fire dragEndHandler event even if release point same as initial contact point (#1872 @msalsbery)
- MouseTracker: Pointer capture implemented with capture APIs where available. Only fallback to emulated capture on extremely old browsers (#1872 @msalsbery)
- MouseTracker: Added preProcessEventHandler option to allow MouseTracker instances to control bubbling and default behavior of events on their associated element (#1872 @msalsbery)
- MouseTracker: Improved handling of canceled events (#1872 @msalsbery)
- MouseTracker: Improved releasing of tracked pointers on destroy()/stopTracking() (#1872 @msalsbery)
- Updated Viewer, Button, Drawer, Navigator, ReferenceStrip DOM for proper DOM event handling (#1872 @msalsbery)
- Added OpenSeadragon.setElementPointerEventsNone() for setting pointer-events:'none' on DOM elements (#1872 @msalsbery)
- MouseTracker: added contextMenuHandler option for handling contextmenu events (#1872 @msalsbery)
- Viewer: added a canvas-contextmenu event (#1872 @msalsbery)
- Fixed simulated drag events in navigator tests (#1949 @msalsbery)
- Added preventDefault option to MouseTracker.contextMenuHandler and Viewer 'canvas-contextmenu' event args (#1951 @msalsbery)
- MouseTracker: Added preProcessEventHandler for keydown, keyup, keypress, focus, blur Events (#1951 @msalsbery)
- Fixed preventDefaultAction functionality in viewer events (#1953 @msalsbery)
- Added setImageFormatsSupported function (#1954 @pandaxtc)
- Added dragToPan to the GestureSettings class, implemented in Viewer (#1956 @msalsbery)
- Added preventDefault option to MouseTracker handlers: scrollHandler, keyDownHandler, keyUpHandler, keyHandler (#1957 @msalsbery)
- Fixed test "Events: Viewer: preventDefaultAction in dblClickHandler". Fixes #1372 (#1960 @msalsbery)
- ReferenceStrip: Fixed issue where its element was being removed from its parent element twice on destroy, causing an exception (#1958 @msalsbery)
- ReferenceStrip: Made its element focusable for keyboard navigation (#1958 @msalsbery)
- You can now flip individual images (not just the whole viewport) (#1903 @ali1234)
- Accessibility: we now take the browser's zoom into account when choosing what detail level to draw (#1937 @ronnymikalsen)
- Fixed a bug causing overlays to disappear in Sequence Mode (#1865 @gunmiosb)
- Fixed a bug where the ajaxHeaders provided per-image were not being used for image requests (#1968 @maxshuty)
- MouseTracker: Added workaround for WebKit Pointer Event Implicit Capture Bug (#1972 @msalsbery)
- Removed test for move-leave (fly-over, no enter event)...not a valid, handleable event state, no longer supported (#1972 @msalsbery)
- Added OpenSeadragon.setElementPointerEvents() for setting pointer-events to other values besides 'none' on DOM elements (#1972 @msalsbery)
- Now ensuring the page body is display:block when in fullscreen (#1995 @thewilkybarkid)
- Added a static method in OpenSeadragon to get an existing viewer (#2000 @HerCerM)
- Now ensuring that the new item is already in the navigator when the "add-item" event fires (#2005 @RammasEchor)
- Added keys to change image in sequence mode (j: previous, k: next) (#2007 @RammasEchor)
- Fixed a bug where the navigator wouldn't pick up opacity/composite changes made while it is loading (#2018 @crydell)
- Explicitly set passive:false for wheel event handlers to suppress console warnings. Fixes #1669 (#2043 @msalsbery)
- Viewer's canvas-click events now include an originalTarget property so you can know which element received the click (#2037 @iangilman)
- Added method for getting the size of an image in window coordinates (#2049 @superbland)
- Added a setMaxLevel function to TileSource so you can change its maxLevel if needed (#2059, #2066 @kim-sanghoon)