Merge branch 'master' into ms-reference-strip

This commit is contained in:
Mark Salsbery 2024-06-24 10:25:40 -07:00
commit 3678cc46a8
10 changed files with 86 additions and 169 deletions

View File

@ -3,10 +3,11 @@ OPENSEADRAGON CHANGELOG
5.0.0: (in progress...) 5.0.0: (in progress...)
* BREAKING CHANGE: Dropped support for IE11 (#2300, #2361 @AndrewADev) * BREAKING CHANGE: Dropped support for IE11 (#2300, #2361, #2553 @AndrewADev, @msalsbery)
* DEPRECATION: The OpenSeadragon.createCallback function is no longer recommended (#2367 @akansjain) * 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 @pearcetm, @Aiosa, @thec0keman) * The viewer now uses WebGL when available (#2310, #2462, #2466, #2468, #2469, #2472, #2478, #2488, #2492, #2521, #2537 @pearcetm, @Aiosa, @thec0keman)
* Added webp to supported image formats (#2455 @BeebBenjamin) * 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) * 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) * 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) * Added getter & setter for Viewport.maxZoomPixelRatio (#2506 @eug-L)
@ -22,6 +23,7 @@ OPENSEADRAGON CHANGELOG
* Fixed: The navigator wouldn't update its tracking rectangle when the navigator was resized (#2491 @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: 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: 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)
4.1.1: 4.1.1:

148
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "openseadragon", "name": "openseadragon",
"version": "4.1.0", "version": "4.1.1",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "openseadragon", "name": "openseadragon",
"version": "4.1.0", "version": "4.1.1",
"license": "BSD-3-Clause", "license": "BSD-3-Clause",
"devDependencies": { "devDependencies": {
"eslint-plugin-compat": "^4.1.2", "eslint-plugin-compat": "^4.1.2",
@ -571,6 +571,18 @@
"concat-map": "0.0.1" "concat-map": "0.0.1"
} }
}, },
"node_modules/braces": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"dependencies": {
"fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/browserslist": { "node_modules/browserslist": {
"version": "4.21.5", "version": "4.21.5",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
@ -656,9 +668,9 @@
} }
}, },
"node_modules/caniuse-lite": { "node_modules/caniuse-lite": {
"version": "1.0.30001456", "version": "1.0.30001636",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001456.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz",
"integrity": "sha512-XFHJY5dUgmpMV25UqaD4kVq2LsiaU5rS8fb0f17pCoXQiQslzmFgnfOxfvo1bTpTqf7dwG/N/05CnLCnOEKmzA==", "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@ -668,8 +680,13 @@
{ {
"type": "tidelift", "type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/caniuse-lite" "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
} }
] ],
"license": "CC-BY-4.0"
}, },
"node_modules/chalk": { "node_modules/chalk": {
"version": "2.4.2", "version": "2.4.2",
@ -1735,6 +1752,18 @@
"node": "^10.12.0 || >=12.0.0" "node": "^10.12.0 || >=12.0.0"
} }
}, },
"node_modules/fill-range": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"dependencies": {
"to-regex-range": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/finalhandler": { "node_modules/finalhandler": {
"version": "1.1.2", "version": "1.1.2",
"dev": true, "dev": true,
@ -1767,39 +1796,6 @@
"node": ">= 10.13.0" "node": ">= 10.13.0"
} }
}, },
"node_modules/findup-sync/node_modules/braces": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
"dev": true,
"dependencies": {
"fill-range": "^7.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/findup-sync/node_modules/fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
"dev": true,
"dependencies": {
"to-regex-range": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/findup-sync/node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true,
"engines": {
"node": ">=0.12.0"
}
},
"node_modules/findup-sync/node_modules/micromatch": { "node_modules/findup-sync/node_modules/micromatch": {
"version": "4.0.5", "version": "4.0.5",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
@ -1813,18 +1809,6 @@
"node": ">=8.6" "node": ">=8.6"
} }
}, },
"node_modules/findup-sync/node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
"dependencies": {
"is-number": "^7.0.0"
},
"engines": {
"node": ">=8.0"
}
},
"node_modules/fined": { "node_modules/fined": {
"version": "1.2.0", "version": "1.2.0",
"dev": true, "dev": true,
@ -3097,6 +3081,15 @@
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true,
"engines": {
"node": ">=0.12.0"
}
},
"node_modules/is-number-like": { "node_modules/is-number-like": {
"version": "1.0.8", "version": "1.0.8",
"dev": true, "dev": true,
@ -3348,28 +3341,6 @@
"node": ">=10" "node": ">=10"
} }
}, },
"node_modules/liftup/node_modules/braces": {
"version": "3.0.2",
"dev": true,
"license": "MIT",
"dependencies": {
"fill-range": "^7.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/liftup/node_modules/fill-range": {
"version": "7.0.1",
"dev": true,
"license": "MIT",
"dependencies": {
"to-regex-range": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/liftup/node_modules/findup-sync": { "node_modules/liftup/node_modules/findup-sync": {
"version": "4.0.0", "version": "4.0.0",
"dev": true, "dev": true,
@ -3384,14 +3355,6 @@
"node": ">= 8" "node": ">= 8"
} }
}, },
"node_modules/liftup/node_modules/is-number": {
"version": "7.0.0",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.12.0"
}
},
"node_modules/liftup/node_modules/micromatch": { "node_modules/liftup/node_modules/micromatch": {
"version": "4.0.5", "version": "4.0.5",
"dev": true, "dev": true,
@ -3404,17 +3367,6 @@
"node": ">=8.6" "node": ">=8.6"
} }
}, },
"node_modules/liftup/node_modules/to-regex-range": {
"version": "5.0.1",
"dev": true,
"license": "MIT",
"dependencies": {
"is-number": "^7.0.0"
},
"engines": {
"node": ">=8.0"
}
},
"node_modules/lines-and-columns": { "node_modules/lines-and-columns": {
"version": "1.2.4", "version": "1.2.4",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
@ -4765,6 +4717,18 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
"dependencies": {
"is-number": "^7.0.0"
},
"engines": {
"node": ">=8.0"
}
},
"node_modules/toidentifier": { "node_modules/toidentifier": {
"version": "1.0.1", "version": "1.0.1",
"dev": true, "dev": true,

View File

@ -48,4 +48,4 @@
"test": "grunt test", "test": "grunt test",
"prepare": "grunt build" "prepare": "grunt build"
} }
} }

View File

@ -167,13 +167,6 @@ $.Button = function( options ) {
this.imgDown.style.visibility = this.imgDown.style.visibility =
"hidden"; "hidden";
if ($.Browser.vendor === $.BROWSERS.FIREFOX && $.Browser.version < 3) {
this.imgGroup.style.top =
this.imgHover.style.top =
this.imgDown.style.top =
"";
}
this.element.appendChild( this.imgRest ); this.element.appendChild( this.imgRest );
this.element.appendChild( this.imgGroup ); this.element.appendChild( this.imgGroup );
this.element.appendChild( this.imgHover ); this.element.appendChild( this.imgHover );

View File

@ -194,11 +194,7 @@ $.Control.prototype = {
* @param {Number} opactiy - a value between 1 and 0 inclusively. * @param {Number} opactiy - a value between 1 and 0 inclusively.
*/ */
setOpacity: function( opacity ) { setOpacity: function( opacity ) {
if ( this.element[ $.SIGNAL ] && $.Browser.vendor === $.BROWSERS.IE ) { $.setElementOpacity( this.wrapper, opacity, true );
$.setElementOpacity( this.element, opacity, true );
} else {
$.setElementOpacity( this.wrapper, opacity, true );
}
} }
}; };

View File

@ -1116,10 +1116,9 @@
/** /**
* Detect available mouse wheel event name. * Detect available mouse wheel event name.
*/ */
$.MouseTracker.wheelEventName = ( $.Browser.vendor === $.BROWSERS.IE && $.Browser.version > 8 ) || $.MouseTracker.wheelEventName = ( 'onwheel' in document.createElement( 'div' ) ) ? 'wheel' : // Modern browsers support 'wheel'
( 'onwheel' in document.createElement( 'div' ) ) ? 'wheel' : // Modern browsers support 'wheel' document.onmousewheel !== undefined ? 'mousewheel' : // Webkit (and unsupported IE) support at least 'mousewheel'
document.onmousewheel !== undefined ? 'mousewheel' : // Webkit and IE support at least 'mousewheel' 'DOMMouseScroll'; // Assume old Firefox (deprecated)
'DOMMouseScroll'; // Assume old Firefox
/** /**
* Detect browser pointer device event model(s) and build appropriate list of events to subscribe to. * Detect browser pointer device event model(s) and build appropriate list of events to subscribe to.
@ -1132,7 +1131,7 @@
} }
if ( window.PointerEvent ) { if ( window.PointerEvent ) {
// IE11 and other W3C Pointer Event implementations (see http://www.w3.org/TR/pointerevents) // W3C Pointer Event implementations (see http://www.w3.org/TR/pointerevents)
$.MouseTracker.havePointerEvents = true; $.MouseTracker.havePointerEvents = true;
$.MouseTracker.subscribeEvents.push( "pointerenter", "pointerleave", "pointerover", "pointerout", "pointerdown", "pointerup", "pointermove", "pointercancel" ); $.MouseTracker.subscribeEvents.push( "pointerenter", "pointerleave", "pointerover", "pointerout", "pointerdown", "pointerup", "pointermove", "pointercancel" );
// Pointer events capture support // Pointer events capture support
@ -1671,7 +1670,6 @@
/** /**
* Gets a W3C Pointer Events model compatible pointer type string from a DOM pointer event. * Gets a W3C Pointer Events model compatible pointer type string from a DOM pointer event.
* IE10 used a long integer value, but the W3C specification (and IE11+) use a string "mouse", "touch", "pen", etc.
* *
* Note: Called for both pointer events and legacy mouse events * Note: Called for both pointer events and legacy mouse events
* ($.MouseTracker.havePointerEvents determines which) * ($.MouseTracker.havePointerEvents determines which)
@ -1679,14 +1677,7 @@
* @inner * @inner
*/ */
function getPointerType( event ) { function getPointerType( event ) {
if ( $.MouseTracker.havePointerEvents ) { return $.MouseTracker.havePointerEvents && event.pointerType ? event.pointerType : 'mouse';
// Note: IE pointer events bug - sends invalid pointerType on lostpointercapture events
// and possibly other events. We rely on sane, valid property values in DOM events, so for
// IE, when the pointerType is missing, we'll default to 'mouse'...should be right most of the time
return event.pointerType || (( $.Browser.vendor === $.BROWSERS.IE ) ? 'mouse' : '');
} else {
return 'mouse';
}
} }
@ -2554,15 +2545,14 @@
}; };
// Most browsers implicitly capture touch pointer events // Most browsers implicitly capture touch pointer events
// Note no IE versions have element.hasPointerCapture() so no implicit // Note no IE versions (unsupported) have element.hasPointerCapture() so
// pointer capture possible // no implicit pointer capture possible
// var implicitlyCaptured = ($.MouseTracker.havePointerEvents && // var implicitlyCaptured = ($.MouseTracker.havePointerEvents &&
// event.target.hasPointerCapture && // event.target.hasPointerCapture &&
// $.Browser.vendor !== $.BROWSERS.IE) ? // $.Browser.vendor !== $.BROWSERS.IE) ?
// event.target.hasPointerCapture(event.pointerId) : false; // event.target.hasPointerCapture(event.pointerId) : false;
var implicitlyCaptured = $.MouseTracker.havePointerEvents && var implicitlyCaptured = $.MouseTracker.havePointerEvents &&
gPoint.type === 'touch' && gPoint.type === 'touch';
$.Browser.vendor !== $.BROWSERS.IE;
//$.console.log('pointerdown ' + (tracker.userData ? tracker.userData.toString() : '') + ' ' + (event.target === tracker.element ? 'tracker.element' : '')); //$.console.log('pointerdown ' + (tracker.userData ? tracker.userData.toString() : '') + ' ' + (event.target === tracker.element ? 'tracker.element' : ''));

View File

@ -178,7 +178,6 @@ $.Navigator = function( options ){
style['float'] = 'left'; //Webkit style['float'] = 'left'; //Webkit
style.cssFloat = 'left'; //Firefox style.cssFloat = 'left'; //Firefox
style.styleFloat = 'left'; //IE
style.zIndex = 999999999; style.zIndex = 999999999;
style.cursor = 'default'; style.cursor = 'default';
style.boxSizing = 'content-box'; style.boxSizing = 'content-box';

View File

@ -2403,43 +2403,18 @@ function OpenSeadragon( options ){
/** /**
* Create an XHR object * Create an XHR object
* @private * @private
* @param {type} [local] If set to true, the XHR will be file: protocol * @param {type} [local] Deprecated. Ignored (IE/ActiveXObject file protocol no longer supported).
* compatible if possible (but may raise a warning in the browser).
* @returns {XMLHttpRequest} * @returns {XMLHttpRequest}
*/ */
createAjaxRequest: function( local ) { createAjaxRequest: function() {
// IE11 does not support window.ActiveXObject so we just try to if ( window.XMLHttpRequest ) {
// create one to see if it is supported.
// See: http://msdn.microsoft.com/en-us/library/ie/dn423948%28v=vs.85%29.aspx
var supportActiveX;
try {
/* global ActiveXObject:true */
supportActiveX = !!new ActiveXObject( "Microsoft.XMLHTTP" );
} catch( e ) {
supportActiveX = false;
}
if ( supportActiveX ) {
if ( window.XMLHttpRequest ) {
$.createAjaxRequest = function( local ) {
if ( local ) {
return new ActiveXObject( "Microsoft.XMLHTTP" );
}
return new XMLHttpRequest();
};
} else {
$.createAjaxRequest = function() {
return new ActiveXObject( "Microsoft.XMLHTTP" );
};
}
} else if ( window.XMLHttpRequest ) {
$.createAjaxRequest = function() { $.createAjaxRequest = function() {
return new XMLHttpRequest(); return new XMLHttpRequest();
}; };
return new XMLHttpRequest();
} else { } else {
throw new Error( "Browser doesn't support XMLHttpRequest." ); throw new Error( "Browser doesn't support XMLHttpRequest." );
} }
return $.createAjaxRequest( local );
}, },
/** /**
@ -2475,7 +2450,7 @@ function OpenSeadragon( options ){
} }
var protocol = $.getUrlProtocol( url ); var protocol = $.getUrlProtocol( url );
var request = $.createAjaxRequest( protocol === "file:" ); var request = $.createAjaxRequest();
if ( !$.isFunction( onSuccess ) ) { if ( !$.isFunction( onSuccess ) ) {
throw new Error( "makeAjaxRequest requires a success callback" ); throw new Error( "makeAjaxRequest requires a success callback" );
@ -2644,17 +2619,6 @@ function OpenSeadragon( options ){
return xmlDoc; return xmlDoc;
}; };
} else if ( window.ActiveXObject ) {
$.parseXml = function( string ) {
var xmlDoc = null;
xmlDoc = new ActiveXObject( "Microsoft.XMLDOM" );
xmlDoc.async = false;
xmlDoc.loadXML( string );
return xmlDoc;
};
} else { } else {
throw new Error( "Browser doesn't support XML DOM." ); throw new Error( "Browser doesn't support XML DOM." );
} }
@ -2691,6 +2655,7 @@ function OpenSeadragon( options ){
* Preexisting formats that are not being updated are left unchanged. * Preexisting formats that are not being updated are left unchanged.
* By default, the defined formats are * By default, the defined formats are
* <pre><code>{ * <pre><code>{
* avif: true,
* bmp: false, * bmp: false,
* jpeg: true, * jpeg: true,
* jpg: true, * jpg: true,
@ -2758,6 +2723,7 @@ function OpenSeadragon( options ){
var FILEFORMATS = { var FILEFORMATS = {
avif: true,
bmp: false, bmp: false,
jpeg: true, jpeg: true,
jpg: true, jpg: true,
@ -2779,6 +2745,10 @@ function OpenSeadragon( options ){
//console.error( 'appVersion: ' + navigator.appVersion ); //console.error( 'appVersion: ' + navigator.appVersion );
//console.error( 'userAgent: ' + navigator.userAgent ); //console.error( 'userAgent: ' + navigator.userAgent );
//TODO navigator.appName is deprecated. Should be 'Netscape' for all browsers
// but could be dropped at any time
// See https://developer.mozilla.org/en-US/docs/Web/API/Navigator/appName
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent
switch( navigator.appName ){ switch( navigator.appName ){
case "Microsoft Internet Explorer": case "Microsoft Internet Explorer":
if( !!window.attachEvent && if( !!window.attachEvent &&
@ -2864,8 +2834,8 @@ function OpenSeadragon( options ){
//determine if this browser supports element.style.opacity //determine if this browser supports element.style.opacity
$.Browser.opacity = true; $.Browser.opacity = true;
if ( $.Browser.vendor === $.BROWSERS.IE && $.Browser.version < 11 ) { if ( $.Browser.vendor === $.BROWSERS.IE ) {
$.console.error('Internet Explorer versions < 11 are not supported by OpenSeadragon'); $.console.error('Internet Explorer is not supported by OpenSeadragon');
} }
})(); })();

View File

@ -515,6 +515,9 @@ $.Viewer = function( options ) {
crossOriginPolicy: this.crossOriginPolicy, crossOriginPolicy: this.crossOriginPolicy,
animationTime: this.animationTime, animationTime: this.animationTime,
drawer: this.drawer.getType(), drawer: this.drawer.getType(),
loadTilesWithAjax: this.loadTilesWithAjax,
ajaxHeaders: this.ajaxHeaders,
ajaxWithCredentials: this.ajaxWithCredentials,
}); });
} }

View File

@ -1,4 +1,4 @@
(function($, undefined) { (function($) {
/** /**
* Plugin to force OpenSeadragon to use the legacy mouse pointer event model * Plugin to force OpenSeadragon to use the legacy mouse pointer event model