/ * *
* @ licstart The following is the entire license notice for the
* Javascript code in this page
*
* Copyright 2017 Mozilla Foundation
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing , software
* distributed under the License is distributed on an "AS IS" BASIS ,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
* See the License for the specific language governing permissions and
* limitations under the License .
*
* @ licend The above is the entire license notice for the
* Javascript code in this page
* /
'use strict' ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . DummyStatTimer = exports . StatTimer = exports . DOMSVGFactory = exports . DOMCMapReaderFactory = exports . DOMCanvasFactory = exports . DEFAULT _LINK _REL = exports . LinkTarget = exports . getFilenameFromUrl = exports . addLinkAttributes = exports . RenderingCancelledException = undefined ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _util = require ( '../shared/util' ) ;
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
var DEFAULT _LINK _REL = 'noopener noreferrer nofollow' ;
var SVG _NS = 'http://www.w3.org/2000/svg' ;
var DOMCanvasFactory = function ( ) {
function DOMCanvasFactory ( ) {
_classCallCheck ( this , DOMCanvasFactory ) ;
}
_createClass ( DOMCanvasFactory , [ {
key : 'create' ,
value : function create ( width , height ) {
if ( width <= 0 || height <= 0 ) {
throw new Error ( 'invalid canvas size' ) ;
}
var canvas = document . createElement ( 'canvas' ) ;
var context = canvas . getContext ( '2d' ) ;
canvas . width = width ;
canvas . height = height ;
return {
canvas : canvas ,
context : context
} ;
}
} , {
key : 'reset' ,
value : function reset ( canvasAndContext , width , height ) {
if ( ! canvasAndContext . canvas ) {
throw new Error ( 'canvas is not specified' ) ;
}
if ( width <= 0 || height <= 0 ) {
throw new Error ( 'invalid canvas size' ) ;
}
canvasAndContext . canvas . width = width ;
canvasAndContext . canvas . height = height ;
}
} , {
key : 'destroy' ,
value : function destroy ( canvasAndContext ) {
if ( ! canvasAndContext . canvas ) {
throw new Error ( 'canvas is not specified' ) ;
}
canvasAndContext . canvas . width = 0 ;
canvasAndContext . canvas . height = 0 ;
canvasAndContext . canvas = null ;
canvasAndContext . context = null ;
}
} ] ) ;
return DOMCanvasFactory ;
} ( ) ;
var DOMCMapReaderFactory = function ( ) {
function DOMCMapReaderFactory ( _ref ) {
var _ref$baseUrl = _ref . baseUrl ,
baseUrl = _ref$baseUrl === undefined ? null : _ref$baseUrl ,
_ref$isCompressed = _ref . isCompressed ,
isCompressed = _ref$isCompressed === undefined ? false : _ref$isCompressed ;
_classCallCheck ( this , DOMCMapReaderFactory ) ;
this . baseUrl = baseUrl ;
this . isCompressed = isCompressed ;
}
_createClass ( DOMCMapReaderFactory , [ {
key : 'fetch' ,
value : function fetch ( _ref2 ) {
var _this = this ;
var name = _ref2 . name ;
if ( ! this . baseUrl ) {
return Promise . reject ( new Error ( 'The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.' ) ) ;
}
if ( ! name ) {
return Promise . reject ( new Error ( 'CMap name must be specified.' ) ) ;
}
return new Promise ( function ( resolve , reject ) {
var url = _this . baseUrl + name + ( _this . isCompressed ? '.bcmap' : '' ) ;
var request = new XMLHttpRequest ( ) ;
request . open ( 'GET' , url , true ) ;
if ( _this . isCompressed ) {
request . responseType = 'arraybuffer' ;
}
request . onreadystatechange = function ( ) {
if ( request . readyState !== XMLHttpRequest . DONE ) {
return ;
}
if ( request . status === 200 || request . status === 0 ) {
var data = void 0 ;
if ( _this . isCompressed && request . response ) {
data = new Uint8Array ( request . response ) ;
} else if ( ! _this . isCompressed && request . responseText ) {
data = ( 0 , _util . stringToBytes ) ( request . responseText ) ;
}
if ( data ) {
resolve ( {
cMapData : data ,
compressionType : _this . isCompressed ? _util . CMapCompressionType . BINARY : _util . CMapCompressionType . NONE
} ) ;
return ;
}
}
reject ( new Error ( 'Unable to load ' + ( _this . isCompressed ? 'binary ' : '' ) + 'CMap at: ' + url ) ) ;
} ;
request . send ( null ) ;
} ) ;
}
} ] ) ;
return DOMCMapReaderFactory ;
} ( ) ;
var DOMSVGFactory = function ( ) {
function DOMSVGFactory ( ) {
_classCallCheck ( this , DOMSVGFactory ) ;
}
_createClass ( DOMSVGFactory , [ {
key : 'create' ,
value : function create ( width , height ) {
( 0 , _util . assert ) ( width > 0 && height > 0 , 'Invalid SVG dimensions' ) ;
var svg = document . createElementNS ( SVG _NS , 'svg:svg' ) ;
svg . setAttribute ( 'version' , '1.1' ) ;
svg . setAttribute ( 'width' , width + 'px' ) ;
svg . setAttribute ( 'height' , height + 'px' ) ;
svg . setAttribute ( 'preserveAspectRatio' , 'none' ) ;
svg . setAttribute ( 'viewBox' , '0 0 ' + width + ' ' + height ) ;
return svg ;
}
} , {
key : 'createElement' ,
value : function createElement ( type ) {
( 0 , _util . assert ) ( typeof type === 'string' , 'Invalid SVG element type' ) ;
return document . createElementNS ( SVG _NS , type ) ;
}
} ] ) ;
return DOMSVGFactory ;
} ( ) ;
var RenderingCancelledException = function RenderingCancelledException ( ) {
function RenderingCancelledException ( msg , type ) {
this . message = msg ;
this . type = type ;
}
RenderingCancelledException . prototype = new Error ( ) ;
RenderingCancelledException . prototype . name = 'RenderingCancelledException' ;
RenderingCancelledException . constructor = RenderingCancelledException ;
return RenderingCancelledException ;
} ( ) ;
var LinkTarget = {
NONE : 0 ,
SELF : 1 ,
BLANK : 2 ,
PARENT : 3 ,
TOP : 4
} ;
var LinkTargetStringMap = [ '' , '_self' , '_blank' , '_parent' , '_top' ] ;
function addLinkAttributes ( link ) {
var _ref3 = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : { } ,
url = _ref3 . url ,
target = _ref3 . target ,
rel = _ref3 . rel ;
link . href = link . title = url ? ( 0 , _util . removeNullCharacters ) ( url ) : '' ;
if ( url ) {
var LinkTargetValues = Object . values ( LinkTarget ) ;
var targetIndex = LinkTargetValues . includes ( target ) ? target : LinkTarget . NONE ;
link . target = LinkTargetStringMap [ targetIndex ] ;
link . rel = typeof rel === 'string' ? rel : DEFAULT _LINK _REL ;
}
}
function getFilenameFromUrl ( url ) {
var anchor = url . indexOf ( '#' ) ;
var query = url . indexOf ( '?' ) ;
var end = Math . min ( anchor > 0 ? anchor : url . length , query > 0 ? query : url . length ) ;
return url . substring ( url . lastIndexOf ( '/' , end ) + 1 , end ) ;
}
var StatTimer = function ( ) {
function StatTimer ( ) {
var enable = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : true ;
_classCallCheck ( this , StatTimer ) ;
this . enabled = ! ! enable ;
this . started = Object . create ( null ) ;
this . times = [ ] ;
}
_createClass ( StatTimer , [ {
key : 'time' ,
value : function time ( name ) {
if ( ! this . enabled ) {
return ;
}
if ( name in this . started ) {
( 0 , _util . warn ) ( 'Timer is already running for ' + name ) ;
}
this . started [ name ] = Date . now ( ) ;
}
} , {
key : 'timeEnd' ,
value : function timeEnd ( name ) {
if ( ! this . enabled ) {
return ;
}
if ( ! ( name in this . started ) ) {
( 0 , _util . warn ) ( 'Timer has not been started for ' + name ) ;
}
this . times . push ( {
'name' : name ,
'start' : this . started [ name ] ,
'end' : Date . now ( )
} ) ;
delete this . started [ name ] ;
}
} , {
key : 'toString' ,
value : function toString ( ) {
var times = this . times ;
var out = '' ,
longest = 0 ;
for ( var i = 0 , ii = times . length ; i < ii ; ++ i ) {
var name = times [ i ] [ 'name' ] ;
if ( name . length > longest ) {
longest = name . length ;
}
}
for ( var _i = 0 , _ii = times . length ; _i < _ii ; ++ _i ) {
var span = times [ _i ] ;
var duration = span . end - span . start ;
out += span [ 'name' ] . padEnd ( longest ) + ' ' + duration + 'ms\n' ;
}
return out ;
}
} ] ) ;
return StatTimer ;
} ( ) ;
var DummyStatTimer = function ( ) {
function DummyStatTimer ( ) {
_classCallCheck ( this , DummyStatTimer ) ;
( 0 , _util . unreachable ) ( 'Cannot initialize DummyStatTimer.' ) ;
}
_createClass ( DummyStatTimer , null , [ {
key : 'time' ,
value : function time ( name ) { }
} , {
key : 'timeEnd' ,
value : function timeEnd ( name ) { }
} , {
key : 'toString' ,
value : function toString ( ) {
return '' ;
}
} ] ) ;
return DummyStatTimer ;
} ( ) ;
exports . RenderingCancelledException = RenderingCancelledException ;
exports . addLinkAttributes = addLinkAttributes ;
exports . getFilenameFromUrl = getFilenameFromUrl ;
exports . LinkTarget = LinkTarget ;
exports . DEFAULT _LINK _REL = DEFAULT _LINK _REL ;
exports . DOMCanvasFactory = DOMCanvasFactory ;
exports . DOMCMapReaderFactory = DOMCMapReaderFactory ;
exports . DOMSVGFactory = DOMSVGFactory ;
exports . StatTimer = StatTimer ;
exports . DummyStatTimer = DummyStatTimer ;