{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./Scripts/Viewer/lib/useragent.js","webpack:///./Scripts/Viewer/lib/viewer-core.js","webpack:///./Scripts/Viewer/lib/viewer-downloader.js","webpack:///./Scripts/Viewer/lib/viewer-quote.js","webpack:///./Scripts/Viewer/lib/viewer-ui-dialog.js","webpack:///./Scripts/Viewer/lib/viewer-ui-element-resizer.js","webpack:///./Scripts/Viewer/lib/viewer-ui-slider.js","webpack:///./Scripts/Viewer/lib/viewer-ui-tab-helper.js","webpack:///./Scripts/Viewer/lib/viewer-ui-thumblist.js","webpack:///./Scripts/Viewer/lib/viewer-watermark.js","webpack:///./Scripts/Viewer/viewer.js","webpack:///./node_modules/core-js/modules/_a-function.js","webpack:///./node_modules/core-js/modules/_advance-string-index.js","webpack:///./node_modules/core-js/modules/_an-object.js","webpack:///./node_modules/core-js/modules/_classof.js","webpack:///./node_modules/core-js/modules/_cof.js","webpack:///./node_modules/core-js/modules/_core.js","webpack:///./node_modules/core-js/modules/_ctx.js","webpack:///./node_modules/core-js/modules/_defined.js","webpack:///./node_modules/core-js/modules/_descriptors.js","webpack:///./node_modules/core-js/modules/_dom-create.js","webpack:///./node_modules/core-js/modules/_export.js","webpack:///./node_modules/core-js/modules/_fails.js","webpack:///./node_modules/core-js/modules/_fix-re-wks.js","webpack:///./node_modules/core-js/modules/_flags.js","webpack:///./node_modules/core-js/modules/_function-to-string.js","webpack:///./node_modules/core-js/modules/_global.js","webpack:///./node_modules/core-js/modules/_has.js","webpack:///./node_modules/core-js/modules/_hide.js","webpack:///./node_modules/core-js/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/modules/_is-object.js","webpack:///./node_modules/core-js/modules/_is-regexp.js","webpack:///./node_modules/core-js/modules/_library.js","webpack:///./node_modules/core-js/modules/_object-dp.js","webpack:///./node_modules/core-js/modules/_property-desc.js","webpack:///./node_modules/core-js/modules/_redefine.js","webpack:///./node_modules/core-js/modules/_regexp-exec-abstract.js","webpack:///./node_modules/core-js/modules/_regexp-exec.js","webpack:///./node_modules/core-js/modules/_same-value.js","webpack:///./node_modules/core-js/modules/_shared.js","webpack:///./node_modules/core-js/modules/_species-constructor.js","webpack:///./node_modules/core-js/modules/_string-at.js","webpack:///./node_modules/core-js/modules/_to-integer.js","webpack:///./node_modules/core-js/modules/_to-length.js","webpack:///./node_modules/core-js/modules/_to-object.js","webpack:///./node_modules/core-js/modules/_to-primitive.js","webpack:///./node_modules/core-js/modules/_uid.js","webpack:///./node_modules/core-js/modules/_wks.js","webpack:///./node_modules/core-js/modules/es6.regexp.exec.js","webpack:///./node_modules/core-js/modules/es6.regexp.match.js","webpack:///./node_modules/core-js/modules/es6.regexp.replace.js","webpack:///./node_modules/core-js/modules/es6.regexp.search.js","webpack:///./node_modules/core-js/modules/es6.regexp.split.js","webpack:///./node_modules/jquery-lazyload/jquery.lazyload.js","webpack:///external \"jQuery\""],"names":["ua","navigator","userAgent","toLowerCase","indexOf","window","chrome","ViewerCore","mainViewerId","tileSourceDef","initialPage","watermarkUrl","watermarkPosition","quoteCallback","loadingOverlayId","Error","mainViewer","_mainViewerId","totalPagesCount","length","_listeners","_watermark","_watermarkUrl","_watermarkPosition","_navigatorHandler","_subWatermark","_immediateRender","_userAgent","_loadTimer","_loadOverlay","document","getElementById","showLoadAnimation","OpenSeadragon","id","tileSources","sequenceMode","immediateRender","showSequenceControl","showFullPageControl","showHomeControl","showZoomControl","showNavigator","navigatorId","navigatorPosition","navigatorRotate","navigatorAutoFade","navigatorAutoResize","gestureSettingsMouse","clickToZoom","dblClickToZoom","crossOriginPolicy","hasWatermark","undefined","Watermark","_mainQuoteHelper","Quote","addOnceHandler","_init","bind","_updateNavigator","addHandler","hiddenLoadAnimation","source","aspectRatio","goHomeForScrollsItem","toggleDisplayOfNavigator","raiseEvent","degrees","getRotation","page","getCurrentPage","existNextPage","setTimeout","setAttribute","clearTimeout","tileSource","world","getItemAt","Point","width","height","currentPage","needRaiseEvent","index","getIndexOfCurrentPage","RangeError","goToPage","zoom","viewport","zoomBy","applyConstraints","immediately","center","getCenter","newBounds","Rect","y","x","fitBounds","goHome","fitVertically","bounds","getBounds","panTo","setRotation","offset","webkitFullscreenElement","webkitCurrentFullScreenElement","mozFullScreenElement","msFullscreenElement","fullscreenElement","isFullScreen","getFullscreenState","exitFullscreen","webkitExitFullscreen","msExitFullscreen","mozCancelFullScreen","documentElement","requestFullscreen","msRequestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","isFullscreen","isHidden","element","getAttribute","setVisible","update","forceRedraw","containerSize","getElementSize","parentNode","parentContainerSize","left","top","Math","min","round","style","updateSize","enabled","setSelectionState","_subQuoteHelper","confirmSelection","cancelSelection","getSelectionSize","params","split","imageId","pop","replace","url","isDrawing","regist","type","callback","push","stack","splice","i","removeEventListener","event","l","call","eventName","eventArgs","CustomEvent","detail","dispatchEvent","createEvent","initCustomEvent","ViewerDownloader","viewer","downloadButtonId","typeSelectorName","dummyAnchorId","pageSelectorName","pageInputId","_viewer","_typeSelectors","querySelectorAll","_pageSelectors","_pageInput","_initPageSelector","addEventListener","_parsePageEvent","_alertMsg","textContent","_dummyElement","_download","_generateUrl","_getDownloadFileType","click","xhr","XMLHttpRequest","open","responseType","setRequestHeader","onload","e","status","fileName","decodeURI","getResponseHeader","msSaveBlob","response","reader","FileReader","alert","result","readAsBinaryString","onerror","send","console","log","message","fileType","_typeSelectorsCount","checked","value","selectorsLength","selectorsCount","selector","disabled","_parsePage","currentTarget","ViewerQuote","_callback","_rect","_selectedSize","_selection","selection","showSelectionControl","allowRotation","restrictToImage","showConfirmDenyButtons","styleConfirmDenyButtons","onSelection","_confirm","rect","clientWidth","clientHeight","generateImageUrl","_raiseEvent","setState","sizeParam","rotate","param","confirm","cancel","size","_getImageUrl","_generateParametor","parseInt","ViewerDialog","dialogId","showOverlay","overlayClickToClose","closeButtonId","_dialog","_button","querySelector","_overlay","createElement","classList","add","body","insertBefore","parent","close","buttonId","closeButton","ViewerElementResizer","resizerId","_element","_resizer","_resizeHandler","_resizing","_stopResizeHandler","_stopResize","_initResize","preventDefault","changedTouches","cursor","clientX","offsetLeft","ViewerSlider","changeCallback","defaultValue","valueLabelId","_slider","sliderEventName","labelId","dataset","valueLabel","_label","_setValueLabel","_initialValue","reset","evt","initEvent","createEveneObject","fireEvent","getValue","_triggerEvent","ViewerTabHelper","self","_mouseWheelEventHandler","_tabList","_tabPanelList","Array","prototype","forEach","tab","_changeTab","_mouseOverEvent","_mouseOutEvent","tabPanel","_dragFlag","targetTab","isSelected","tabLength","panel","target","deltaY","scrollVal","pageDirection","HTMLUListElement","scrollBy","behavior","scrollLeft","remove","blur","currentTab","ViewerThumbList","direction","_list","_direction","_mouseOverEventHandler","_mouseOutEventHandler","_thumbList","children","thumb","_clickThumbEventHandler","focus","scrollIntoView","thumbPage","pageNumber","clientRect","getBoundingClientRect","parentRect","scrollTop","ViewerWatermark","position","dispPages","_pixelRatio","devicePixelRatio","_position","_dispPages","_drawWatermarkHandler","_drawWatermark","Image","_wmWidth","_wmHeight","src","canDrawWatermark","imageSize","dimensions","imageCorners","_detectCorners","wmSize","_detectWMSize","positionCorrection","point","_calcWmCoordinates","drawer","context","drawImage","topLeft","imageToViewerElementCoordinates","times","topRight","bottomLeft","bottomRight","viewerElem","ViewerWatermarkRect","dispRegionWidth","getWidth","dispRegionHeight","getHeight","getLeft","getRight","getTop","getBottom","wmAspectRatio","coordinates","positionDef","TopLeft","getTopLeft","TopRight","getTopRight","BottomRight","getBottomRight","BottomLeft","getBottomLeft","removeHandler","minX","maxX","minY","maxY","_normalize","correctionValue","correctedX","correctedY","corner","RoDAViewer","args","JSON","parse","_confirmSelection","_timer","_filters","filterName","max","step","isSlider","isAdd","parseFloat","processor","Filters","BRIGHTNESS","_saturationFilter","_contrastFilter","GAMMA","GREYSCALE","INVERT","_createFilterSliders","filterItem","getElementsByClassName","display","buttonList","getElementsByTagName","button","_registClickEventForHasCommand","_registClickEventForHasExpanded","_registMouseEventForButton","tabList","contains","_filterTab","TabHelper","_initPaging","_rotateSlider","Slider","_setRotation","_setRotationInfo","_changeFullscreenEventHandler","_isUILock","_beforeNavigatorState","_hideStart","_hideUI","_toggleUI","uiElements","uiLength","uiElem","_pageInfoForms","changeEventName","pageForm","_directPageInput","_changePageEventHandler","_sidebarThumbList","ThumbList","_bottomThumbList","thumbnailList","k","_sidebarContentClick","ElemResizer","$","lazyload","container","effect","failure_limit","skip_invisible","threshold","viewerCommand","goPrevPage","goNextPage","viewerCommandArg","zoomTo","fitHorizontally","_setRotate","_toggleNavigator","enableFullscreen","fullscreenEnabled","msFullscreenEnabled","mozFullScreenEnabled","webkitFullscreenEnabled","_fullScreenButton","toggleFullscreen","_infoDialog","Dialog","_initDownload","_initQuote","imageAdjustment","_resetFilters","clickToClose","_closeMenuDialog","_clickEventForHasExpanded","toggleTab","tagName","tooltipId","tooltip","tpRect","bottom","right","elemCenter","tpLeft","innerWidth","innerHeight","_tooltipTimer","isExpanded","ctrlElemId","toggleButtonId","toggleButton","tCtrlElemId","tCtrlElem","closed","closeElem","toggle","overlay","_sidebarFunc","_elementClickTrigger","msg","notExpandedMsg","expandedMsg","keyCode","pageNum","isNaN","totalPages","hasNextPage","prevPages","prevCount","nextPages","nextCount","changePage","j","form","location","href","match","search","charAt","isMobile","getComputedStyle","visibility","setImageRotation","setValue","_quoteAboutDialog","_quoteDialog","_quotePreviewDialog","_quoteResultDialog","startButton","_startSelection","_redoSelection","_endSelection","_registQuoteUrl","_showQuote","image","quoteSize","getSelectedRectSize","preview","_imageUrl","onloadend","readAsDataURL","permalinkUrl","formData","FormData","append","xhrObject","permalink","_downloadDialog","Downloader","buttonChildren","buttonCount","buttonIcon","classCount","classListStr","className","quick","_showUI","autoHide","adjustment","intercept","precomputedContrast","floor","imgData","getImageData","canvas","pixels","data","putImageData","hsv","_convertRGB2HSV","s","rgb","_convertHSV2RGB","h","v","r","g","b","diff","f","panels","selectedFilter","map","filter","filters","slider","inputEventName","_updateFilter","resetButton","effectType","appendChild","_resetFilter","firstChild","setFilterOptions","processors","loadMode","filterInput","func","intervel","prevPage","nextPage","toggleFullScreen","isPressed","module","exports","it","TypeError","at","require","S","unicode","isObject","cof","TAG","ARG","arguments","tryGet","key","O","T","B","Object","callee","toString","slice","core","version","__e","aFunction","fn","that","a","c","apply","defineProperty","get","is","global","hide","redefine","ctx","PROTOTYPE","$export","name","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","IS_PROTO","P","IS_BIND","expProto","own","out","exp","Function","U","W","R","exec","fails","defined","wks","regexpExec","SPECIES","REPLACE_SUPPORTS_NAMED_GROUPS","re","groups","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","KEY","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","constructor","nativeRegExpMethod","fns","maybeCallNative","nativeMethod","regexp","str","arg2","forceStringMethod","done","strfn","rxfn","String","RegExp","string","arg","anObject","ignoreCase","multiline","sticky","__g","hasOwnProperty","dP","createDesc","object","MATCH","isRegExp","IE8_DOM_DEFINE","toPrimitive","Attributes","bitmap","enumerable","configurable","writable","has","SRC","$toString","TO_STRING","TPL","inspectSource","val","safe","isFunction","join","classof","builtinExec","regexpFlags","nativeExec","nativeReplace","patchedExec","LAST_INDEX","UPDATES_LAST_INDEX_WRONG","re1","re2","NPCG_INCLUDED","PATCH","lastIndex","reCopy","SHARED","store","mode","copyright","D","C","toInteger","pos","charCodeAt","ceil","valueOf","px","random","concat","uid","Symbol","USE_SYMBOL","$exports","proto","forced","toLength","advanceStringIndex","regExpExec","$match","res","rx","fullUnicode","A","n","matchStr","toObject","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","maybeToString","REPLACE","$replace","searchValue","replaceValue","functionalReplace","results","accumulatedResult","nextSourcePosition","matched","captures","namedCaptures","replacerArgs","replacement","getSubstitution","tailPos","m","symbols","ch","capture","sameValue","SEARCH","$search","previousLastIndex","speciesConstructor","callRegExpExec","$min","$push","$SPLIT","LENGTH","MAX_UINT32","SUPPORTS_Y","SPLIT","$split","internalSplit","separator","limit","output","flags","lastLastIndex","splitLimit","separatorCopy","lastLength","test","splitter","unicodeMatching","lim","p","q","z","$window","options","elements","$container","settings","data_attribute","appear","load","placeholder","counter","each","$this","abovethetop","leftofbegin","belowthefold","rightoffold","trigger","failurelimit","effectspeed","effect_speed","extend","$self","loaded","attr","one","elements_left","original","css","temp","grep","appVersion","originalEvent","persisted","ready","fold","inviewport","expr","jQuery"],"mappings":"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","file":"/viewer.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./Scripts/Viewer/viewer.js\");\n","export default (() => {\r\n var ua = navigator.userAgent.toLowerCase();\r\n\r\n if (ua.indexOf('iphone') !== -1 || ua.indexOf('ipad') !== -1) {\r\n return 'ios';\r\n }\r\n else if (ua.indexOf('android') !== -1) {\r\n return 'android';\r\n }\r\n else if (ua.indexOf('edge') !== -1) {\r\n return 'edge';\r\n }\r\n else if (ua.indexOf('meie') !== -1 || ua.indexOf('trident') !== -1) {\r\n return 'ie';\r\n }\r\n else if (ua.indexOf('firefox') !== -1) {\r\n return 'firefox';\r\n }\r\n else if (ua.indexOf('chrome') !== -1 && window.chrome) {\r\n return 'chrome';\r\n }\r\n else if (ua.indexOf('safari') !== -1) {\r\n return 'safari';\r\n }\r\n else {\r\n return 'unknown';\r\n }\r\n})();","import Quote from './viewer-quote';\r\nimport Watermark from './viewer-watermark';\r\nimport _userAgent from './useragent';\r\n\r\nexport default class ViewerCore {\r\n constructor(mainViewerId, tileSourceDef, initialPage, watermarkUrl, watermarkPosition, quoteCallback, loadingOverlayId) {\r\n if (!mainViewerId) throw new Error('mainViewerIdが指定されていません。');\r\n if (!tileSourceDef) throw new Error('tileSourceDefが指定されていません。');\r\n\r\n /**\r\n * メインビューア\r\n * @type {OpenSeadragon.Viewer}\r\n */\r\n this.mainViewer = null;\r\n\r\n this._mainViewerId = mainViewerId;\r\n\r\n /**\r\n * 総ページ数。 \r\n * @type {Number}\r\n */\r\n this.totalPagesCount = tileSourceDef.length;\r\n /**\r\n * 保持しているイベントリスナーリスト。 \r\n * @type {Array}\r\n */\r\n this._listeners = {};\r\n /**\r\n * ウォーターマークオブジェクト。\r\n * @private\r\n * @type {JGMWatermark}\r\n */\r\n this._watermark;\r\n /**\r\n * ウォーターマークのURL\r\n * @private\r\n * @type {String}\r\n */\r\n this._watermarkUrl = watermarkUrl;\r\n /**\r\n * ウォーターマークの表示位置\r\n * @private\r\n * @type {Number}\r\n */\r\n this._watermarkPosition = watermarkPosition;\r\n /**\r\n * ビューアを同期するイベントハンドラを保持する変数。\r\n * @private\r\n * @type {Function}\r\n */\r\n this._navigatorHandler = null;\r\n /**\r\n * サブ画像のウォーターマーク\r\n * @private\r\n * @type {JGMWatermark}\r\n */\r\n this._subWatermark = null;\r\n /**\r\n * 描写をすぐに行うか否か\r\n * @private\r\n * @type {Boolean}\r\n */\r\n this._immediateRender = _userAgent === 'ios' || _userAgent === 'android';\r\n\r\n if (loadingOverlayId) {\r\n this._loadTimer = null;\r\n this._loadOverlay = document.getElementById(loadingOverlayId);\r\n this.showLoadAnimation();\r\n }\r\n\r\n // メインビューアの生成。\r\n this.mainViewer = new OpenSeadragon({\r\n id: mainViewerId,\r\n tileSources: tileSourceDef,\r\n sequenceMode: true,\r\n initialPage: initialPage - 1 || 0,\r\n immediateRender: this._immediateRender,\r\n showSequenceControl: false,\r\n showFullPageControl: false,\r\n showHomeControl: false,\r\n showZoomControl: false,\r\n showNavigator: true,\r\n navigatorId: 'navigator',\r\n navigatorPosition: 'ABSOLUTE',\r\n navigatorRotate: false,\r\n navigatorAutoFade: false,\r\n navigatorAutoResize: false,\r\n gestureSettingsMouse: {\r\n clickToZoom: false,\r\n dblClickToZoom: true\r\n },\r\n crossOriginPolicy: 'Anonymous'\r\n });\r\n\r\n // ウォーターマークの設定。\r\n this.hasWatermark = watermarkUrl !== ' ' && watermarkUrl !== null && watermarkUrl !== undefined && watermarkPosition !== undefined;\r\n if (this.hasWatermark) this._watermark = new Watermark(this.mainViewer, this._watermarkUrl, this._watermarkPosition, null);\r\n\r\n this._mainQuoteHelper = new Quote(this.mainViewer, quoteCallback);\r\n\r\n // ビューアが開かれた際の処理。\r\n this.mainViewer.addOnceHandler('open', this._init.bind(this));\r\n this.mainViewer.addOnceHandler('open', this._updateNavigator.bind(this));\r\n\r\n if (loadingOverlayId) this.mainViewer.addHandler('tile-drawing', this.hiddenLoadAnimation.bind(this));\r\n }\r\n\r\n /**\r\n * ビューアの初期化を行います。\r\n */\r\n _init() {\r\n // アスペクト比が10:1以上の場合は巻物と判定し、初期表示位置設定を行う。\r\n if (this.mainViewer.source.aspectRatio > 10) this.goHomeForScrollsItem(true);\r\n\r\n // ビューアサイズが変更された場合にナビゲーターのサイズも変更されるように登録する。\r\n this.mainViewer.addHandler('resize', this._updateNavigator.bind(this));\r\n //if (this._initializeNavView === 0) this.toggleDisplayOfNavigator();\r\n this.toggleDisplayOfNavigator();\r\n\r\n // 初期状態を通利するためにイベントを発生させる。\r\n this.raiseEvent('changeRotate', { degrees: this.getRotation() });\r\n this.raiseEvent('changePage', { page: this.getCurrentPage(), existNextPage: this.existNextPage() });\r\n }\r\n\r\n /**\r\n * ローディングアイコンを表示します。\r\n */\r\n showLoadAnimation() {\r\n this._loadTimer = setTimeout(function () {\r\n this._loadOverlay.setAttribute('aria-hidden', 'false');\r\n }.bind(this), 200);\r\n }\r\n\r\n /**\r\n * ローディングアイコンを非表示にします。\r\n */\r\n hiddenLoadAnimation() {\r\n clearTimeout(this._loadTimer);\r\n this._loadOverlay.setAttribute('aria-hidden', 'true');\r\n }\r\n\r\n getOriginalImageSize() {\r\n \r\n const tileSource = this.mainViewer.world.getItemAt(0).source;\r\n\r\n return new OpenSeadragon.Point(tileSource.width, tileSource.height);\r\n }\r\n\r\n /**\r\n * 現在のページ番号を取得します。\r\n * @return {Number} 現在のページ番号。\r\n */\r\n getCurrentPage() {\r\n \r\n return this.mainViewer.currentPage() + 1;\r\n }\r\n\r\n /**\r\n * 現在のページ番号(インデックス)を取得します。\r\n * @return {Number} 現在のページ番号(インデックス)。\r\n */\r\n getIndexOfCurrentPage() {\r\n \r\n return this.mainViewer.currentPage();\r\n }\r\n\r\n /**\r\n * 指定したページに移動します。\r\n * @param {Number} page 移動先のページ番号。\r\n * @param {Boolean} [needRaiseEvent=true] イベントを発火させる必要性の有無。\r\n * \r\n * @throws {RangeError} 指定されたページが存在しない場合に発生します。\r\n */\r\n goToPage(page, needRaiseEvent) {\r\n\r\n const index = page - 1;\r\n if (index === this.getIndexOfCurrentPage()) return;\r\n if (index < 0 || this.totalPagesCount < index) throw new RangeError('specified page does not exist');\r\n\r\n this.showLoadAnimation();\r\n this.mainViewer.goToPage(index);\r\n\r\n const raiseEvent = needRaiseEvent === null || needRaiseEvent === undefined ? true : needRaiseEvent;\r\n if (raiseEvent) this.raiseEvent('changePage', { page: page, existNextPage: this.existNextPage() });\r\n }\r\n\r\n /**\r\n * 次のページが存在するか否かを判定します。\r\n * @returns {Boolean} 次のページの有無。\r\n */\r\n existNextPage () {\r\n\r\n return this.getCurrentPage() < this.totalPagesCount;\r\n }\r\n\r\n /**\r\n * 画像の表示を指定した倍率に変更します。\r\n * @param {Number} [zoom=2.0] 拡大倍率。\r\n */\r\n zoomTo(zoom) {\r\n\r\n zoom = zoom || 2.0;\r\n this.mainViewer.viewport.zoomBy(zoom);\r\n this.mainViewer.viewport.applyConstraints();\r\n }\r\n\r\n /**\r\n * 画像を横幅に合わせます。\r\n * @param {Boolean} [immediately=false] 直ちに実行するか否か(=アニメーションの有無)。\r\n */\r\n fitHorizontally(immediately) {\r\n\r\n immediately = immediately === true;\r\n\r\n const degrees = this.getRotation();\r\n const center = this.mainViewer.viewport.getCenter(immediately);\r\n\r\n const newBounds = degrees !== 90 && degrees !== 270\r\n ? new OpenSeadragon.Rect(0, center.y, 1, 0)\r\n : new OpenSeadragon.Rect(center.x, 0, 0, 1 / this.mainViewer.source.aspectRatio);\r\n\r\n this.mainViewer.viewport.fitBounds(newBounds, immediately);\r\n }\r\n\r\n /**\r\n * 画像を縦幅に合わせます。\r\n * @param {Boolean} [immediately=false] 直ちに実行するか否か(=アニメーションの有無)。\r\n */\r\n fitVertically(immediately) {\r\n\r\n immediately = immediately === true;\r\n\r\n const degrees = this.getRotation();\r\n const center = this.mainViewer.viewport.getCenter(immediately);\r\n\r\n const newBounds = degrees !== 90 && degrees !== 270\r\n ? new OpenSeadragon.Rect(center.x, 0, 0, 1 / this.mainViewer.source.aspectRatio)\r\n : new OpenSeadragon.Rect(0, center.y, 1, 0);\r\n\r\n this.mainViewer.viewport.fitBounds(newBounds, immediately);\r\n }\r\n\r\n /**\r\n * 画像を全体表示します。\r\n * @param {Boolean} [immediately=false] 直ちに実行するか否か(=アニメーションの有無)。\r\n */\r\n goHome(immediately) {\r\n\r\n immediately = immediately === true;\r\n\r\n if (this.mainViewer.source.aspectRatio > 10) {\r\n this.goHomeForScrollsItem(immediately);\r\n }\r\n else {\r\n this.mainViewer.viewport.goHome(immediately);\r\n }\r\n }\r\n\r\n /**\r\n * 巻物のホーム画面に移動させます。\r\n * @param {Boolean} [immediately=false] 直ちに実行するか否か(=アニメーションの有無)。\r\n */\r\n goHomeForScrollsItem(immediately) {\r\n\r\n immediately = immediately === true;\r\n\r\n this.fitVertically(true);\r\n const viewport = this.mainViewer.viewport;\r\n\r\n // 現在のビューポートの矩形座標(x, y, width, height)\r\n const bounds = viewport.getBounds(true);\r\n\r\n // 現在のビューポートの中心点(x,y)\r\n const center = viewport.getCenter(true);\r\n\r\n viewport.panTo({ x: 1 - bounds.width / 2, y: center.y }, immediately);\r\n }\r\n\r\n /**\r\n * 画像の回転角を取得します。\r\n * @returns {Number} 画像の回転角。\r\n */\r\n getRotation() {\r\n \r\n\r\n let degrees = this.mainViewer.viewport.getRotation() % 360;\r\n if (degrees < 0) degrees += 360;\r\n\r\n return degrees;\r\n }\r\n\r\n /**\r\n * 画像を指定した角度に設定します。\r\n * @param {Number} [degrees=0] 回転角度。\r\n * @param {Boolean} [needRaiseEvent=true] イベントを発火させる必要の有無。\r\n */\r\n setRotation(degrees, needRaiseEvent) {\r\n \r\n degrees = degrees || 0;\r\n this.mainViewer.viewport.setRotation(degrees);\r\n\r\n const raiseEvent = needRaiseEvent === null || needRaiseEvent === undefined ? true : needRaiseEvent;\r\n if (raiseEvent) this.raiseEvent('changeRotate', { degrees: this.getRotation() });\r\n }\r\n\r\n /**\r\n * 画像を指定した角度回転させます。\r\n * @param {Number} offset 回転させる角度。\r\n * @param {Boolean} [needRaiseEvent=true] イベントを発火させる必要の有無。\r\n */\r\n setRotate(offset, needRaiseEvent) {\r\n \r\n let degrees = offset + this.getRotation();\r\n degrees = (degrees + 360) % 360;\r\n\r\n this.setRotation(degrees, needRaiseEvent);\r\n }\r\n\r\n /**\r\n * 現在の表示がフルスクリーンであるか否かを取得します。\r\n * @return {Boolean} フルスクリーンであるか否か。\r\n */\r\n getFullscreenState () {\r\n\r\n if (document.webkitFullscreenElement) {\r\n return document.getElementById(this._mainViewerId).webkitCurrentFullScreenElement !== null;\r\n }\r\n else if (document.mozFullScreenElement) {\r\n return document.getElementById(this._mainViewerId).mozFullScreenElement !== null;\r\n }\r\n else if (document.msFullscreenElement) {\r\n return document.getElementById(this._mainViewerId).msFullscreenElement !== null;\r\n }\r\n else if (document.fullscreenElement) {\r\n return document.getElementById(this._mainViewerId).fullscreenElement !== null;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n\r\n /**\r\n * フルスクリーン表示に切り替えます。\r\n */\r\n toggleFullScreen () {\r\n\r\n const isFullScreen = this.getFullscreenState();\r\n\r\n if (isFullScreen) {\r\n if (document.exitFullscreen) {\r\n document.exitFullscreen();\r\n }\r\n else if (document.webkitExitFullscreen) {\r\n document.webkitExitFullscreen();\r\n }\r\n else if (document.msExitFullscreen) {\r\n document.msExitFullscreen();\r\n }\r\n else if (document.mozCancelFullScreen) {\r\n document.mozCancelFullScreen();\r\n }\r\n }\r\n else {\r\n if (document.documentElement.requestFullscreen) {\r\n document.documentElement.requestFullscreen();\r\n }\r\n else if (document.documentElement.msRequestFullscreen) {\r\n document.documentElement.msRequestFullscreen();\r\n }\r\n else if (document.documentElement.webkitRequestFullscreen) {\r\n document.documentElement.webkitRequestFullscreen();\r\n }\r\n else if (document.documentElement.mozRequestFullScreen) {\r\n document.documentElement.mozRequestFullScreen();\r\n }\r\n }\r\n\r\n setTimeout(function () {\r\n this.mainViewer.raiseEvent('resize');\r\n }.bind(this), 300);\r\n\r\n this.raiseEvent('changeFullscreenState', { isFullscreen: !isFullScreen });\r\n };\r\n\r\n /**\r\n * ナビゲーターの表示/非表示を判定します。\r\n * @return {Boolean} ナビゲータ表示の有無。\r\n */\r\n getVisibleOfNavigator () {\r\n\r\n const navigator = this.mainViewer.navigator;\r\n const isHidden = navigator.element.getAttribute('aria-hidden') === 'true';\r\n\r\n return !isHidden;\r\n }\r\n\r\n /**\r\n * ナビゲーターの表示/非表示を切り替えます。\r\n */\r\n toggleDisplayOfNavigator () {\r\n\r\n const navigator = this.mainViewer.navigator;\r\n const isHidden = navigator.element.getAttribute('aria-hidden') === 'true';\r\n navigator.element.setAttribute('aria-hidden', !isHidden);\r\n navigator.setVisible(isHidden);\r\n\r\n if (isHidden) {\r\n navigator.update(this.mainViewer.viewport);\r\n navigator.forceRedraw();\r\n }\r\n\r\n this.mainViewer.raiseEvent('resize');\r\n };\r\n\r\n /**\r\n * ナビゲータのサイズ調整を行います。\r\n */\r\n _updateNavigator () {\r\n\r\n const containerSize = OpenSeadragon.getElementSize(this.mainViewer.element.parentNode);\r\n const parentContainerSize = OpenSeadragon.getElementSize(this.mainViewer.element.parentNode.parentNode);\r\n\r\n const aspectRatio = this.mainViewer.source.aspectRatio;\r\n\r\n let width, height, left, top;\r\n if (aspectRatio > 10) {\r\n width = containerSize.x;\r\n height = Math.min(containerSize.y * 0.1, width / aspectRatio + 30);\r\n left = 0;\r\n }\r\n else {\r\n width = Math.round(containerSize.x * 0.2);\r\n height = Math.round(containerSize.y * 0.2);\r\n left = parentContainerSize.x - width - 4;\r\n }\r\n\r\n this.mainViewer.navigator.element.style.width = width + 'px';\r\n this.mainViewer.navigator.element.style.height = height + 'px';\r\n this.mainViewer.navigator.element.style.top = '0px';\r\n this.mainViewer.navigator.element.style.left = left + 'px';\r\n\r\n setTimeout(() => {\r\n this.mainViewer.navigator.updateSize();\r\n this.mainViewer.navigator.update(this.mainViewer.viewport);\r\n }, 250); \r\n }\r\n\r\n /**\r\n * 引用の状態を設定します。\r\n * @param {Boolean} enabled 引用の状態。\r\n */\r\n setSelectionState (enabled) {\r\n this._mainQuoteHelper.setSelectionState(enabled);\r\n if (this._subQuoteHelper) this._subQuoteHelper.setSelectionState(enabled);\r\n }\r\n\r\n /**\r\n * 引用を確定します。 \r\n */\r\n confirmSelection() {\r\n this._mainQuoteHelper.confirmSelection();\r\n }\r\n\r\n /**\r\n * 引用を中止します。 \r\n */\r\n cancelSelection () {\r\n this._mainQuoteHelper.cancelSelection();\r\n if (this._subQuoteHelper) this._subQuoteHelper.cancelSelection();\r\n }\r\n\r\n getSelectedRectSize () {\r\n return this._mainQuoteHelper.getSelectionSize();\r\n }\r\n\r\n getCurrentPageImageId () {\r\n const params = this.mainViewer.world.getItemAt(0).source['@id'].split('/');\r\n const imageId = params.pop();\r\n\r\n return imageId.replace('.jp2', '');\r\n }\r\n\r\n registUrl (url) {\r\n\r\n this._mainQuoteHelper.isDrawing();\r\n return this._mainQuoteHelper.regist(url, url);\r\n }\r\n\r\n /**\r\n * イベントリスナーを登録します。\r\n * @param {String} type イベントの種類。\r\n * @param {EventListenerOrEventListenerObject} callback コールバック。\r\n */\r\n addEventListener (type, callback) {\r\n if (!(type in this._listeners)) {\r\n this._listeners[type] = [];\r\n }\r\n this._listeners[type].push(callback);\r\n }\r\n\r\n /**\r\n * イベントリスナーを削除します。\r\n * @param {String} type イベントの種類\r\n * @param {EventListenerOrEventListenerObject} [callback] コールバック\r\n */\r\n removeEventListener (type, callback) {\r\n if (!(type in this._listeners)) return;\r\n\r\n const stack = this._listeners[type];\r\n if (callback === null || callback === undefined) {\r\n stack.splice(0);\r\n }\r\n else {\r\n for (var i = 0, length = stack.length; i < length; i++) {\r\n if (stack[i] === callback) {\r\n stack.splice(i, 1);\r\n this.removeEventListener(type, callback);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * イベントを発火します。\r\n * @param {CustomEvent} event イベントオブジェクト。\r\n */\r\n dispatchEvent (event) {\r\n\r\n if (!(event.type in this._listeners)) return;\r\n\r\n var stack = this._listeners[event.type];\r\n\r\n // event.target = this;\r\n for (var i = 0, l = stack.length; i < l; i++) {\r\n stack[i].call(this, event);\r\n }\r\n }\r\n\r\n /**\r\n * イベントを発火させます。\r\n * @param {String} eventName イベント名\r\n * @param {any} eventArgs detailに入る変数。\r\n */\r\n raiseEvent (eventName, eventArgs) {\r\n\r\n if (_userAgent !== 'ie') {\r\n const event = new CustomEvent(eventName, { detail: eventArgs });\r\n this.dispatchEvent(event);\r\n }\r\n else {\r\n const event = document.createEvent('CustomEvent');\r\n event.initCustomEvent(eventName, false, false, eventArgs);\r\n this.dispatchEvent(event);\r\n }\r\n }\r\n}","import _userAgent from './useragent';\r\n\r\nexport default class ViewerDownloader {\r\n constructor(viewer, downloadButtonId, typeSelectorName, dummyAnchorId, pageSelectorName, pageInputId) {\r\n this._viewer = viewer;\r\n //this._baseUrl = baseUrl;\r\n\r\n this._typeSelectors = document.querySelectorAll('input[name=' + typeSelectorName + ']');\r\n\r\n if (pageSelectorName !== undefined && pageSelectorName !== null && pageSelectorName !== '') {\r\n this._pageSelectors = document.querySelectorAll('input[name=' + pageSelectorName + ']');\r\n this._pageInput = document.getElementById(pageInputId);\r\n this._initPageSelector();\r\n }\r\n\r\n if (this._pageInput) this._pageInput.addEventListener('change', this._parsePageEvent.bind(this), false);\r\n\r\n //this._lastPage = this._viewer.totalPagesCount;\r\n\r\n this._alertMsg = document.getElementById('alert-msg');\r\n if (this._alertMsg) this._alertMsg.textContent = '';\r\n\r\n this._dummyElement = document.getElementById(dummyAnchorId);\r\n document.getElementById(downloadButtonId).addEventListener('click', this._download.bind(this), false);\r\n }\r\n\r\n /**\r\n * サブミットイベントのイベントハンドラ。\r\n * 実際にはフォームに送信せずに\r\n * @param {MouseEvent} event マウスイベント。\r\n */\r\n _download(event) {\r\n \r\n try {\r\n if (_userAgent !== 'ie') {\r\n this._dummyElement.setAttribute('href', this._generateUrl());\r\n if (this._getDownloadFileType() === 'JPEG') {\r\n this._dummyElement.setAttribute('download', 'download.jpg');\r\n }\r\n else {\r\n this._dummyElement.setAttribute('download', 'download.jp2');\r\n }\r\n this._dummyElement.click();\r\n }\r\n else {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('GET', this._generateUrl(), true);\r\n xhr.responseType = 'blob';\r\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\r\n xhr.onload = function (e) {\r\n if (xhr.status === 200) {\r\n var fileName = decodeURI(xhr.getResponseHeader('Content-Disposition').replace('attachment; filename=', ''));\r\n window.navigator.msSaveBlob(xhr.response, fileName);\r\n }\r\n else {\r\n var reader = new FileReader();\r\n reader.addEventListener('loadend', function () {\r\n alert(reader.result);\r\n });\r\n reader.readAsBinaryString(xhr.response);\r\n }\r\n this._dummyElement.click();\r\n };\r\n\r\n xhr.onerror = function(e) {\r\n var reader = new FileReader();\r\n reader.addEventListener('loadend', function () {\r\n alert(reader.result);\r\n });\r\n reader.readAsBinaryString(xhr.response);\r\n this._dummyElement.click();\r\n };\r\n xhr.send();\r\n }\r\n\r\n this._alertMsg.textContent = '';\r\n }\r\n catch (e) {\r\n //this._alertMsg.textContent = e.message;\r\n console.log(e.message);\r\n }\r\n }\r\n\r\n /**\r\n * ダウンロードする画像の種別を取得します。\r\n * @returns {String} ダウンロードする画像の種別。\r\n */\r\n _getDownloadFileType() {\r\n let fileType = '';\r\n for (let i = 0; i < this._typeSelectorsCount; i = i + 1) {\r\n if (this._typeSelectors[i].checked) {\r\n fileType = this._typeSelectors[i].value;\r\n return;\r\n }\r\n }\r\n\r\n return fileType;\r\n }\r\n\r\n /**\r\n * ダウンロードする画像の種別を取得します。\r\n * @returns {String} ダウンロードする画像の種別。\r\n */\r\n _getDownloadFileType() {\r\n \r\n\r\n let fileType = 'JPEG';\r\n const selectorsLength = this._typeSelectors.length;\r\n for (let i = 0; i < selectorsLength; i = i + 1) {\r\n if (this._typeSelectors[i].checked) return this._typeSelectors[i].value;\r\n }\r\n\r\n return fileType;\r\n }\r\n\r\n /**\r\n * ページ種別セレクターの初期化を行う。\r\n */\r\n _initPageSelector() {\r\n \r\n const selectorsCount = this._pageSelectors.length;\r\n for (let i = 0; i < selectorsCount; i = i + 1) {\r\n let selector = this._pageSelectors[i];\r\n if (selector.value === 'current-page') {\r\n selector.addEventListener('change', function () {\r\n this._pageInput.disabled = true;\r\n }.bind(this));\r\n }\r\n else if (selector.value === 'page-select') {\r\n this._pageInput.disabled = selector.checked === false;\r\n selector.addEventListener('change', function () {\r\n this._pageInput.disabled = false;\r\n }.bind(this));\r\n }\r\n }\r\n }\r\n\r\n _parsePageEvent(event) {\r\n \r\n try {\r\n this._parsePage(event.currentTarget.value);\r\n this._alertMsg.textContent = '';\r\n }\r\n catch (e) {\r\n this._alertMsg.textContent = e.message;\r\n }\r\n }\r\n\r\n /**\r\n * ダウンロードするURLを生成します。\r\n * @returns {String} ダウンロード先のURL。\r\n */\r\n _generateUrl() {\r\n \r\n let url = this._viewer.world.getItemAt(0).source['@id'];\r\n const fileType = this._getDownloadFileType();\r\n\r\n if (fileType === \"JPEG\") {\r\n url += \"/full/full/0/default.jpg\";\r\n }\r\n else {\r\n url = url.replace('images', 'contents')\r\n }\r\n\r\n return url;\r\n }\r\n}","\r\nexport default class ViewerQuote {\r\n constructor(viewer, callback) {\r\n /**\r\n * ビューア本体。 \r\n * @type {OpenSeadragon.Viewer}\r\n */\r\n this._viewer = viewer;\r\n\r\n /**\r\n * 登録後に呼び出すコールバック関数。 \r\n * @type {Function}\r\n */\r\n this._callback = callback;\r\n\r\n this._rect = null;\r\n this._selectedSize = null;\r\n\r\n /**\r\n * 画像矩形領域選択クライアント。 \r\n * @type {OpenSeadragon.selection}\r\n */\r\n this._selection = viewer.selection({\r\n showSelectionControl: false,\r\n allowRotation: false,\r\n restrictToImage: true,\r\n showConfirmDenyButtons: false,\r\n styleConfirmDenyButtons: false,\r\n onSelection: this._confirm.bind(this)\r\n });\r\n }\r\n\r\n /**\r\n * 引用領域の指定を確定し、パーマリンクサーバに登録します。\r\n * @param {OpenSeadragon.Rect} rect 引用領域情報。\r\n */\r\n _confirm(rect) {\r\n \r\n this._rect = rect;\r\n this._selectedSize = Math.round(this._selection.element.clientWidth) + ',' + Math.round(this._selection.element.clientHeight);\r\n\r\n const url = this.generateImageUrl();\r\n\r\n this._raiseEvent(url);\r\n this._selection.setState(false);\r\n }\r\n\r\n /**\r\n * 画像IDを取得します。\r\n * @return {String} 画像ID。\r\n */\r\n _getImageUrl() {\r\n return this._viewer.world.getItemAt(0).source['@id'];\r\n }\r\n\r\n /**\r\n * URLのパラメータを生成します。\r\n * @param {String} sizeParam サイズパラメータの文字列。\r\n * @param {Number} rotate 回転角。\r\n * @return {String} パラメータ文字列。\r\n */\r\n _generateParametor(sizeParam, rotate) {\r\n \r\n let param = Math.round(this._rect.x) + ',' + Math.round(this._rect.y) + ',' + Math.round(this._rect.width) + ',' + Math.round(this._rect.height);\r\n param += '/' + sizeParam;\r\n param += '/' + rotate + '/default.jpg';\r\n\r\n return param;\r\n }\r\n\r\n /**\r\n * コールバック関数を実行する。\r\n * @param {Object} eventArgs イベントの引き数。 \r\n */\r\n _raiseEvent(eventArgs) {\r\n if (!document.createEvent) {\r\n const event = new CustomEvent('confirmSelection', { detail: eventArgs });\r\n this._callback.call(this, event);\r\n }\r\n else {\r\n const event = document.createEvent('CustomEvent');\r\n event.initCustomEvent('confirmSelection', false, false, eventArgs);\r\n this._callback.call(this, event);\r\n }\r\n }\r\n\r\n /**\r\n * 引用領域の指定を確定します。\r\n */\r\n confirmSelection() {\r\n 'use strict';\r\n\r\n this._selection.confirm();\r\n }\r\n\r\n /**\r\n * 引用領域の指定をキャンセルします。\r\n */\r\n cancelSelection() {\r\n 'use strict';\r\n\r\n this._selection.cancel();\r\n }\r\n\r\n /**\r\n * 引用領域の指定を開始します。\r\n * @param {Boolean} enabled 設定する状態。\r\n */\r\n setSelectionState(enabled) {\r\n 'use strict';\r\n\r\n if (enabled) {\r\n this._rect = null;\r\n this._selectedSize = null;\r\n }\r\n\r\n this._selection.setState(enabled);\r\n }\r\n\r\n /**\r\n * 現在、矩形領域が指定されているか判定します。\r\n * @return {Boolean} 矩形領域が指定されているかどうか。\r\n */\r\n isDrawing() {\r\n 'use strict';\r\n\r\n return this.rect !== null;\r\n }\r\n\r\n /**\r\n * パーマネントサーバに登録するURLを取得します。\r\n * @param {Number} [size] 登録する画像の長辺の長さ。未指定の場合は矩形領域のサイズを指定する。\r\n * @return {String} url\r\n */\r\n generateImageUrl(size) {\r\n 'use strict';\r\n\r\n const url = this._getImageUrl();\r\n const sizeParam = size === undefined || size === null ? this._selectedSize : '!' + size + ',' + size;\r\n\r\n let degrees = this._viewer.viewport.getRotation() % 360;\r\n if (degrees < 0) degrees += 360;\r\n\r\n return url + '/' + this._generateParametor(sizeParam, degrees);\r\n }\r\n\r\n /**\r\n * 選択した領域のサイズを取得します。。\r\n * @return {OpenSeadragon.Point} 選択した領域のサイズ。\r\n */\r\n getSelectionSize() {\r\n 'use strict';\r\n\r\n const size = this._selectedSize.split(',');\r\n const width = parseInt(size[0]);\r\n const height = parseInt(size[1]);\r\n\r\n return new OpenSeadragon.Point(width, height);\r\n }\r\n}","export default class ViewerDialog {\r\n constructor(dialogId, showOverlay, overlayClickToClose, closeButtonId) {\r\n this._dialog = document.getElementById(dialogId);\r\n this._button = document.querySelector('*[aria-controls=' + dialogId + ']');\r\n\r\n if (showOverlay === true || showOverlay === null || showOverlay === undefined) {\r\n this._overlay = document.createElement('div');\r\n this._overlay.classList.add('dialog-overlay');\r\n this._overlay.setAttribute('aria-hidden', 'true');\r\n document.body.insertBefore(this._overlay, this._dialog.parent);\r\n\r\n if (overlayClickToClose === true || overlayClickToClose === null || overlayClickToClose === undefined) {\r\n this._overlay.addEventListener('click', this.close.bind(this), false);\r\n }\r\n }\r\n\r\n const buttonId = closeButtonId || null;\r\n if (buttonId !== null) {\r\n const closeButton = document.getElementById(buttonId);\r\n closeButton.addEventListener('click', this.close.bind(this), false);\r\n }\r\n }\r\n\r\n /**\r\n * ダイアログを表示します。\r\n */\r\n open() {\r\n\r\n if (this._dialog.getAttribute('aria-hidden') === 'false') return;\r\n\r\n this._dialog.setAttribute('aria-hidden', 'false');\r\n\r\n if (this._overlay !== null && this._overlay !== undefined) {\r\n this._overlay.setAttribute('aria-hidden', 'false');\r\n }\r\n\r\n if (this._button !== null && this._button !== undefined) {\r\n this._button.setAttribute('aria-expanded', 'true');\r\n }\r\n }\r\n\r\n /**\r\n * ダイアログを閉じます。\r\n */\r\n close() {\r\n\r\n if (this._dialog.getAttribute('aria-hidden') === 'true') return;\r\n\r\n this._dialog.setAttribute('aria-hidden', 'true');\r\n\r\n if (this._overlay !== null && this._overlay !== undefined) {\r\n this._overlay.setAttribute('aria-hidden', 'true');\r\n }\r\n\r\n if (this._button !== null && this._button !== undefined) {\r\n this._button.setAttribute('aria-expanded', 'false');\r\n }\r\n }\r\n\r\n /**\r\n * ダイアログの表示を切り替えます。 \r\n */\r\n toggle() {\r\n\r\n if (this._dialog.getAttribute('aria-hidden') === 'false') {\r\n this.close();\r\n }\r\n else {\r\n this.open();\r\n }\r\n }\r\n}","export default class ViewerElementResizer {\r\n constructor(id, resizerId) {\r\n this._element = document.getElementById(id);\r\n this._resizer = document.getElementById(resizerId);\r\n\r\n this._resizeHandler = this._resizing.bind(this);\r\n this._stopResizeHandler = this._stopResize.bind(this);\r\n\r\n this._resizer.addEventListener('mousedown', this._initResize.bind(this));\r\n this._resizer.addEventListener('touchstart', this._initResize.bind(this));\r\n }\r\n\r\n /**\r\n * タブを切り替えます。\r\n * @param {MouseEvent} event イベント。\r\n */\r\n _initResize(event) {\r\n event.preventDefault();\r\n\r\n window.addEventListener('mousemove', this._resizeHandler, false);\r\n window.addEventListener('touchmove', this._resizeHandler, false);\r\n window.addEventListener('mouseup', this._stopResizeHandler, false);\r\n window.addEventListener('touchend', this._stopResizeHandler, false);\r\n }\r\n\r\n /**\r\n * タブを切り替えます。\r\n * @param {MouseEvent} event イベント。\r\n */\r\n _resizing(event) {\r\n event.preventDefault();\r\n\r\n const e = event.type === \"mousemove\" ? event : event.changedTouches[0];\r\n\r\n window.document.body.style.cursor = 'ew-resize';\r\n this._element.style.width = e.clientX - this._element.offsetLeft + 'px';\r\n }\r\n\r\n /**\r\n * タブを切り替えます。\r\n * @param {MouseEvent} event イベント。\r\n */\r\n _stopResize(event) {\r\n window.document.body.style.cursor = '';\r\n window.removeEventListener('mousemove', this._resizeHandler);\r\n window.removeEventListener('touchmove', this._resizeHandler);\r\n window.removeEventListener('mouseup', this._stopResizeHandler);\r\n window.removeEventListener('touchend', this._stopResizeHandler);\r\n }\r\n}","import _userAgent from './useragent';\r\n\r\nexport default class ViewerSlider {\r\n constructor(id, changeCallback, defaultValue, valueLabelId) {\r\n this._slider = document.getElementById(id);\r\n\r\n // input(type=range)要素の値が変更された際のイベントはieの場合のみchangeイベントである。\r\n const sliderEventName = _userAgent === 'ie' ? 'change' : 'input';\r\n\r\n // 変更イベントの登録。\r\n this._slider.addEventListener(sliderEventName, changeCallback, false);\r\n\r\n // ラベルのIdは初期値が指定されていない場合はdata-value-label属性から取得する。\r\n const labelId = valueLabelId || this._slider.dataset.valueLabel;\r\n this._label = labelId !== null && labelId !== undefined ? document.getElementById(labelId) : null;\r\n if (this._label !== null) this._slider.addEventListener(sliderEventName, this._setValueLabel.bind(this), false);\r\n\r\n // 初期値が指定されていない場合は現時点でのスライダーの値を初期値にする。\r\n this._initialValue = defaultValue || this._slider.value;\r\n this.reset();\r\n }\r\n\r\n /**\r\n * スライダーの値を表示します。\r\n */\r\n _setValueLabel() {\r\n this._label.textContent = this._slider.value;\r\n }\r\n\r\n _triggerEvent(event) {\r\n\r\n if (document.createEvent) {\r\n const evt = document.createEvent('HTMLEvents');\r\n evt.initEvent(event, true, true);\r\n return this._slider.dispatchEvent(evt);\r\n }\r\n else {\r\n const evt = document.createEveneObject();\r\n return this._slider.fireEvent('on' + event, evt);\r\n }\r\n }\r\n\r\n /**\r\n * スライダーの現在値を取得します。\r\n * @return {String} スライダーの現在値。\r\n */\r\n getValue() {\r\n return this._slider.value;\r\n }\r\n\r\n /**\r\n * スライダーの値を変更します。\r\n * @param {String} value 変更するスライダーの値。\r\n */\r\n setValue(value) {\r\n\r\n if (this.getValue() === value) return;\r\n\r\n this._slider.value = value;\r\n if (this._label !== null) this._setValueLabel();\r\n\r\n const sliderEventName = _userAgent === 'ie' ? 'change' : 'input';\r\n this._triggerEvent(sliderEventName);\r\n }\r\n\r\n /**\r\n * スライダーの値を初期値に戻します。 \r\n */\r\n reset() {\r\n\r\n if (this.getValue() === this._initialValue) return;\r\n\r\n this._slider.value = this._initialValue;\r\n if (this._label !== null) this._setValueLabel();\r\n\r\n const sliderEventName = _userAgent === 'ie' ? 'change' : 'input';\r\n this._triggerEvent(sliderEventName);\r\n }\r\n\r\n //#endregion\r\n}","export default class ViewerTabHelper {\r\n constructor(element) {\r\n const self = this;\r\n\r\n element.addEventListener('wheel', this._mouseWheelEventHandler.bind(this), false);\r\n\r\n this._tabList = element.querySelectorAll('[role=\"tab\"]');\r\n\r\n this._tabPanelList = new Array();\r\n Array.prototype.forEach.call(this._tabList, function (tab) {\r\n tab.addEventListener('click', self._changeTab.bind(self), false);\r\n tab.addEventListener('mouseover', self._mouseOverEvent.bind(self), false);\r\n tab.addEventListener('mouseout', self._mouseOutEvent.bind(self), false);\r\n\r\n const tabPanel = document.getElementById(tab.getAttribute('aria-controls'));\r\n self._tabPanelList.push(tabPanel);\r\n });\r\n\r\n this._dragFlag = false;\r\n }\r\n\r\n /**\r\n * タブを切り替えます。\r\n * @param {MouseEvent} event イベント。\r\n */\r\n _changeTab(event) {\r\n const targetTab = event.currentTarget;\r\n\r\n const self = this;\r\n Array.prototype.forEach.call(this._tabList, function (tab) {\r\n const isSelected = tab === targetTab;\r\n const tabLength = self._tabPanelList.length;\r\n let tabPanel;\r\n for (let i = 0; i < tabLength; i++) {\r\n const panel = self._tabPanelList[i];\r\n if (panel.id === tab.getAttribute('aria-controls')) {\r\n tabPanel = panel;\r\n break;\r\n }\r\n }\r\n\r\n tab.setAttribute('aria-selected', isSelected);\r\n tabPanel.setAttribute('aria-hidden', !isSelected);\r\n });\r\n }\r\n\r\n /**\r\n * マウスホイールイベントのイベントハンドラ。\r\n * @param {WheelEvent} event マウスホイールイベント。\r\n */\r\n _mouseWheelEventHandler(event) {\r\n\r\n const target = event.currentTarget;\r\n\r\n // deltaYが0でない場合(=上下のスクロール)の場合は横スクロールに置き換える。\r\n if (event.deltaY !== 0) {\r\n event.preventDefault();\r\n\r\n const deltaY = event.deltaY > 0 ? 1 : -1;\r\n const scrollVal = target.dataset.pageDirection === 'rtl' ? -1 * deltaY * 128 : deltaY * 128;\r\n\r\n if (HTMLUListElement.prototype.scrollBy) {\r\n target.scrollBy({\r\n top: 0,\r\n left: scrollVal,\r\n behavior: 'auto',\r\n });\r\n }\r\n else {\r\n target.scrollLeft = target.scrollLeft - scrollVal;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * ボタンがマウスオーバーされた時のイベント。\r\n * hoverクラスの付与と(あれば)ツールチップの表示を行う。\r\n * @param {MouseEvent} event MouseEvent\r\n */\r\n _mouseOverEvent(event) {\r\n\r\n const element = event.currentTarget;\r\n element.classList.add('hover');\r\n }\r\n\r\n /**\r\n * ボタンがマウスオーバーされた時のイベント。\r\n * hoverクラスの除去と(あれば)ツールチップを非表示にする。\r\n * @param {MouseEvent} event MouseEvent\r\n */\r\n _mouseOutEvent(event) {\r\n\r\n const element = event.currentTarget;\r\n\r\n // hoverクラスの削除。\r\n element.classList.remove('hover');\r\n element.blur();\r\n }\r\n\r\n /**\r\n * 先頭のタブに遷移します。 \r\n */\r\n getCurrentTab() {\r\n let currentTab;\r\n Array.prototype.forEach.call(this._tabList, function (tab) {\r\n if (tab.getAttribute('aria-selected') === 'true') {\r\n currentTab = tab;\r\n return;\r\n };\r\n });\r\n return currentTab;\r\n }\r\n\r\n /**\r\n * 先頭のタブに遷移します。 \r\n */\r\n goToFirst() {\r\n this._tabList[0].click();\r\n }\r\n}","export default class ViewerThumbList {\r\n constructor(id, direction) {\r\n const self = this;\r\n\r\n this._list = document.getElementById(id);\r\n this._direction = direction;\r\n\r\n this._list.addEventListener('mouseover', this._mouseOverEventHandler, false);\r\n this._list.addEventListener('mouseout', this._mouseOutEventHandler, false);\r\n if (this._direction === 'row') this._list.addEventListener('wheel', this._mouseWheelEventHandler, false);\r\n\r\n this._thumbList = this._list.children;\r\n Array.prototype.forEach.call(this._thumbList, function (thumb) {\r\n thumb.addEventListener('click', self._clickThumbEventHandler.bind(self), false);\r\n });\r\n }\r\n\r\n /**\r\n * マウスオーバー時のイベントハンドラ。\r\n * 要素にフォーカスを当てます。\r\n * @param {MouseEvent} event マウスイベント。\r\n */\r\n _mouseOverEventHandler(event) {\r\n event.currentTarget.focus();\r\n }\r\n\r\n /**\r\n * マウスアウト時のイベントハンドラ。\r\n * 要素からフォーカスを外します。\r\n * @param {MouseEvent} event マウスイベント。\r\n */\r\n _mouseOutEventHandler(event) {\r\n event.currentTarget.blur();\r\n }\r\n\r\n /**\r\n * マウスホイールイベントのイベントハンドラ。\r\n * @param {WheelEvent} event マウスホイールイベント。\r\n */\r\n _mouseWheelEventHandler(event) {\r\n\r\n const target = event.currentTarget;\r\n\r\n // deltaYが0でない場合(=上下のスクロール)の場合は横スクロールに置き換える。\r\n if (event.deltaY !== 0) {\r\n event.preventDefault();\r\n\r\n const deltaY = event.deltaY > 0 ? 1 : -1;\r\n const scrollVal = target.dataset.pageDirection === 'rtl' ? -1 * deltaY * 128 : deltaY * 128;\r\n\r\n if (HTMLUListElement.prototype.scrollBy) {\r\n target.scrollBy({\r\n top: 0,\r\n left: scrollVal,\r\n behavior: 'auto',\r\n });\r\n }\r\n else {\r\n target.scrollLeft = target.scrollLeft - scrollVal;\r\n }\r\n }\r\n }\r\n\r\n _clickThumbEventHandler(event) {\r\n\r\n const target = event.currentTarget;\r\n const self = this;\r\n Array.prototype.forEach.call(this._thumbList, function (thumb) {\r\n if (target === thumb) {\r\n thumb.classList.add('selected');\r\n self.scrollIntoView(thumb);\r\n }\r\n else {\r\n thumb.classList.remove('selected');\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * サムネイルの状態を変更します。\r\n * @param {Number} page ページ番号。\r\n */\r\n changePage(page) {\r\n\r\n const self = this;\r\n Array.prototype.forEach.call(this._thumbList, function (thumb) {\r\n const thumbPage = parseInt(thumb.dataset.pageNumber);\r\n\r\n if (page === thumbPage) {\r\n thumb.classList.add('selected');\r\n self.scrollIntoView(thumb);\r\n }\r\n else {\r\n thumb.classList.remove('selected');\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * 指定された要素の位置までスクロールします。\r\n * @param {HTMLElement} element エレメント\r\n */\r\n scrollIntoView(element) {\r\n\r\n const clientRect = element.getBoundingClientRect();\r\n const parentRect = this._list.getBoundingClientRect();\r\n\r\n if (this._direction === 'column') {\r\n const scrollTop = clientRect.top - parentRect.top - 10;\r\n if (HTMLUListElement.prototype.scrollBy) {\r\n this._list.scrollBy({\r\n top: scrollTop,\r\n left: 0,\r\n behavior: 'smooth',\r\n });\r\n }\r\n else {\r\n this._list.scrollTop = this._list.scrollTop - scrollTop;\r\n }\r\n }\r\n else {\r\n const scrollLeft = clientRect.left - parentRect.left - (parentRect.width / 2) + (clientRect.width / 2);\r\n if (HTMLUListElement.prototype.scrollBy) {\r\n this._list.scrollBy({\r\n top: 0,\r\n left: scrollLeft,\r\n behavior: 'smooth',\r\n });\r\n }\r\n else {\r\n this._list.scrollLeft = this._list.scrollLeft - scrollLeft;\r\n }\r\n }\r\n }\r\n}","export default class ViewerWatermark {\r\n constructor(viewer, watermarkUrl, position, dispPages) {\r\n /**\r\n * ウォーターマークを描画するビューア\r\n * @private\r\n * @type {OpenSeadragon.viewer} \r\n */\r\n this._viewer = viewer;\r\n\r\n /**\r\n * デバイスのピクセルレシオ。\r\n * @type {Number}\r\n */\r\n this._pixelRatio = window.devicePixelRatio > 1 ? window.devicePixelRatio : 1;\r\n\r\n /**\r\n * ウォーターマークを描画する位置。\r\n * @type {Number}\r\n */\r\n this._position = position;\r\n\r\n /**\r\n * ウォーターマークを描画するページ定義 \r\n * @type {Array}\r\n */\r\n this._dispPages = dispPages;\r\n\r\n /**\r\n * ウォーターマークを描画イベントハンドラ。 \r\n * @type {function}\r\n */\r\n this._drawWatermarkHandler = this._drawWatermark.bind(this);\r\n\r\n /**\r\n * ウォーターマーク画像。 \r\n * @type {Image}\r\n */\r\n this._watermark = new Image();\r\n this._watermark.onload = function() {\r\n this._viewer.addHandler('update-viewport', this._drawWatermarkHandler);\r\n this._wmWidth = this._watermark.width * this._pixelRatio;\r\n this._wmHeight = this._watermark.height * this._pixelRatio;\r\n }.bind(this);\r\n this._watermark.src = watermarkUrl;\r\n }\r\n\r\n /**\r\n * ウォーターマークを描画する。\r\n * @function IRIArchives._drawWatermark\r\n * @private\r\n */\r\n _drawWatermark() {\r\n\r\n var currentPage = parseInt(this._viewer.currentPage()) + 1;\r\n\r\n // 現在のページが表示するページリストに含まれていない場合は抜ける。\r\n if (!this.canDrawWatermark()) return;\r\n\r\n // 画像のサイズを取得する。\r\n var imageSize = this._viewer.source.dimensions;\r\n\r\n // 回転角を取得する。\r\n var rotate = this._viewer.viewport.getRotation();\r\n\r\n // 画像の貼り付け領域を取得する。\r\n var imageCorners = this._detectCorners(imageSize);\r\n\r\n // ウォーターマークのサイズを計算する。\r\n var wmSize = this._detectWMSize(imageCorners, rotate);\r\n\r\n // ウォーターマークサイズから貼り付け位置を補正する。\r\n imageCorners.positionCorrection(wmSize);\r\n\r\n // ウォーターマークの貼り付け位置を取得する。\r\n var point = this._calcWmCoordinates(imageCorners, wmSize, rotate);\r\n\r\n // canvasにウオーターマーク画像を張り付ける。\r\n this._viewer.drawer.context.drawImage(this._watermark, point.x, point.y, wmSize.x, wmSize.y);\r\n }\r\n\r\n /**\r\n * ウォーターマーク貼り付け可能領域を判定する。\r\n * @function IRIArchives._detectCorners\r\n * @private\r\n * @param {OpenSeadragon.Point} imageSize 画像のサイズ(pixel)。\r\n * @return {IRIArchives.RectCorners} 貼り付け可能領域。\r\n */\r\n _detectCorners(imageSize) {\r\n // ビューアにおける画像の四隅の座標を取得する。\r\n var topLeft = this._viewer.world.getItemAt(0).imageToViewerElementCoordinates(new OpenSeadragon.Point(0, 0)).times(this._pixelRatio);\r\n var topRight = this._viewer.world.getItemAt(0).imageToViewerElementCoordinates(new OpenSeadragon.Point(imageSize.x, 0)).times(this._pixelRatio);\r\n var bottomLeft = this._viewer.world.getItemAt(0).imageToViewerElementCoordinates(new OpenSeadragon.Point(0, imageSize.y)).times(this._pixelRatio);\r\n var bottomRight = this._viewer.world.getItemAt(0).imageToViewerElementCoordinates(imageSize).times(this._pixelRatio);\r\n\r\n var viewerElem = this._viewer.element;\r\n return new ViewerWatermarkRect(topLeft, topRight, bottomRight, bottomLeft, 0, viewerElem.clientWidth * this._pixelRatio, 0, viewerElem.clientHeight * this._pixelRatio);\r\n }\r\n\r\n /**\r\n * ウォーターマークのサイズを求める。\r\n * @function IRIArchives._detectWMSize\r\n * @private\r\n * @param {IRIArchives.RectCorners} imageCorners 画像のサイズ(pixel)。\r\n * @param {Number} degrees 回転角(degree)。\r\n * @return {OpenSeadragon.Point} ウォーターマークのサイズ。\r\n */\r\n _detectWMSize(imageCorners, degrees) {\r\n // ウォーターマーク表示可能サイズを求める。\r\n var dispRegionWidth = imageCorners.getWidth(degrees);\r\n var dispRegionHeight = imageCorners.getHeight(degrees);\r\n\r\n // 表示可能領域がビューアの端にかかっていない場合は表示可能領域を0.8倍にする。\r\n if (imageCorners.getLeft(degrees) !== 0 && imageCorners.getRight(degrees) !== this._viewer.element.clientWidth * this._pixelRatio) dispRegionWidth = dispRegionWidth * 0.8;\r\n if (imageCorners.getTop(degrees) !== 0 && imageCorners.getBottom(degrees) !== this._viewer.element.clientHeight * this._pixelRatio) dispRegionHeight = dispRegionHeight * 0.8;\r\n\r\n // ウォーターマークの大きさ。\r\n var wmSize = new OpenSeadragon.Point(this._wmWidth, this._wmHeight);\r\n var wmAspectRatio = this._wmWidth / this._wmHeight;\r\n\r\n // ウォーターマークの大きさが表示可能領域より小さい場合は縮小を行う。\r\n if (this._wmWidth > dispRegionWidth) {\r\n wmSize.x = dispRegionWidth;\r\n wmSize.y = wmSize.x / wmAspectRatio;\r\n }\r\n\r\n if (wmSize.y > dispRegionHeight) {\r\n wmSize.y = dispRegionHeight;\r\n wmSize.x = wmSize.y * wmAspectRatio;\r\n }\r\n\r\n return wmSize;\r\n }\r\n\r\n /**\r\n * ウォーターマークの座標を求める。\r\n * @function IRIArchives._calcWmCoordinates\r\n * @private\r\n * @param {WatermarkRect} imageCorners 画像のサイズ(pixel)。\r\n * @param {OpenSeadragon.Point} wmSize ウォーターマークのサイズ。\r\n * @param {Number} degrees 回転角(degree)。\r\n * @return {OpenSeadragon.Point} ウォーターマークの座標。\r\n */\r\n _calcWmCoordinates(imageCorners, wmSize, degrees) {\r\n\r\n var coordinates = new OpenSeadragon.Point();\r\n\r\n //ウォーターマークの貼り付け座標は左上の座標が基準なので、\r\n //ウォーターマークの貼り付け位置が右もしくは下に位置している場合はウォーターマークのサイズを考慮する。\r\n switch (this._position) {\r\n case positionDef.TopLeft:\r\n coordinates.x = imageCorners.getTopLeft(degrees).x;\r\n coordinates.y = imageCorners.getTopLeft(degrees).y;\r\n break;\r\n\r\n case positionDef.TopRight:\r\n coordinates.x = imageCorners.getTopRight(degrees).x - wmSize.x;\r\n coordinates.y = imageCorners.getTopRight(degrees).y;\r\n break;\r\n\r\n case positionDef.BottomRight:\r\n coordinates.x = imageCorners.getBottomRight(degrees).x - wmSize.x;\r\n coordinates.y = imageCorners.getBottomRight(degrees).y - wmSize.y;\r\n break;\r\n\r\n case positionDef.BottomLeft:\r\n coordinates.x = imageCorners.getBottomLeft(degrees).x;\r\n coordinates.y = imageCorners.getBottomLeft(degrees).y - wmSize.y;\r\n break;\r\n }\r\n\r\n if (coordinates.x < 0) coordinates.x = 0;\r\n if (coordinates.x + wmSize.x > this._viewer.element.clientWidth * this._pixelRatio) coordinates.x = this._viewer.element.clientWidth * this._pixelRatio - wmSize.x;\r\n\r\n if (coordinates.y < 0) coordinates.y = 0;\r\n if (coordinates.y + wmSize.y > this._viewer.element.clientHeight * this._pixelRatio) coordinates.y = this._viewer.element.clientHeight * this._pixelRatio - wmSize.y;\r\n\r\n return coordinates;\r\n }\r\n\r\n\r\n /**\r\n * ウォーターマークが描写できるか判定する。\r\n * @returns {Boolean} ウォーターマークの可否。\r\n */\r\n canDrawWatermark() {\r\n\r\n if (!this._dispPages) return true;\r\n\r\n var currentPage = parseInt(this._viewer.currentPage()) + 1;\r\n return this._dispPages.indexOf(currentPage) !== -1;\r\n }\r\n\r\n /**\r\n * ウォーターマークを破棄します。\r\n */\r\n destroy() {\r\n\r\n this._viewer.removeHandler('update-viewport', this._drawWatermarkHandler);\r\n\r\n this._viewer = null;\r\n this._pixelRatio = null;\r\n\r\n this._position = null;\r\n this._dispPages = null;\r\n\r\n this._watermark = null;\r\n\r\n this._wmWidth = null;\r\n this._wmHeight = null;\r\n\r\n this._drawWatermarkHandler = null;\r\n }\r\n}\r\n\r\n\r\nclass ViewerWatermarkRect {\r\n constructor(topLeft, topRight, bottomRight, bottomLeft, minX, maxX, minY, maxY) {\r\n this.topLeft = this._normalize(topLeft, minX, maxX, minY, maxY);\r\n this.topRight = this._normalize(topRight, minX, maxX, minY, maxY);\r\n this.bottomRight = this._normalize(bottomRight, minX, maxX, minY, maxY);\r\n this.bottomLeft = this._normalize(bottomLeft, minX, maxX, minY, maxY);\r\n\r\n this._pixelRatio = window.devicePixelRatio;\r\n }\r\n\r\n /**\r\n * 幅を取得する。\r\n * @function IRIArchives.RectCorners.prototype.getWidth\r\n * @param {Number} degrees 現在の角度(degree)。\r\n * @returns {Number} 幅(pixel)。\r\n */\r\n getWidth(degrees) {\r\n if (degrees >= 0 && degrees < 90) return this.topRight.x - this.bottomLeft.x;\r\n if (degrees >= 90 && degrees < 180) return this.topLeft.x - this.bottomRight.x;\r\n if (degrees >= 180 && degrees < 270) return this.bottomLeft.x - this.topRight.x;\r\n if (degrees >= 270 && degrees < 360) return this.bottomRight.x - this.topLeft.x;\r\n\r\n return this.getWidth(degrees - 360);\r\n }\r\n\r\n /**\r\n * 高さを取得する。\r\n * @function IRIArchives.RectCorners.prototype.getHeight\r\n * @param {Number} degrees 現在の角度(degree)。\r\n * @returns {Number} 高さ(pixel)。\r\n */\r\n getHeight(degrees) {\r\n if (degrees >= 0 && degrees < 90) return this.bottomRight.y - this.topLeft.y;\r\n if (degrees >= 90 && degrees < 180) return this.topRight.y - this.bottomLeft.y;\r\n if (degrees >= 180 && degrees < 270) return this.topLeft.y - this.bottomRight.y;\r\n if (degrees >= 270 && degrees < 360) return this.bottomLeft.y - this.topRight.y;\r\n\r\n return this.getHeight(degrees - 360);\r\n }\r\n\r\n /**\r\n * 上底のY座標を取得する。\r\n * @function IRIArchives.RectCorners.prototype.getTop\r\n * @param {Number} degrees 現在の角度(degree)。\r\n * @returns {Number} 上底のY座標(pixel)。\r\n */\r\n getTop(degrees) {\r\n if (degrees >= 0 && degrees < 90) return this.topLeft.y;\r\n if (degrees >= 90 && degrees < 180) return this.bottomLeft.y;\r\n if (degrees >= 180 && degrees < 270) return this.bottomRight.y;\r\n if (degrees >= 270 && degrees < 360) return this.topRight.y;\r\n\r\n return this.getTop(degrees - 360);\r\n }\r\n\r\n /**\r\n * 右端のX座標を取得する。\r\n * @function IRIArchives.RectCorners.prototype.getRight\r\n * @param {Number} degrees 現在の角度(degree)。\r\n * @returns {Number} 右端のX座標(pixel)。\r\n */\r\n getRight(degrees) {\r\n if (degrees >= 0 && degrees < 90) return this.topRight.x;\r\n if (degrees >= 90 && degrees < 180) return this.topLeft.x;\r\n if (degrees >= 180 && degrees < 270) return this.bottomLeft.x;\r\n if (degrees >= 270 && degrees < 360) return this.bottomRight.x;\r\n\r\n return this.getRight(degrees - 360);\r\n }\r\n\r\n /**\r\n * 下底のY座標を取得する。\r\n * @function IRIArchives.RectCorners.prototype.getBottom\r\n * @param {Number} degrees 現在の角度(degree)。\r\n * @returns {Number} 下底のY座標(pixel)。\r\n */\r\n getBottom(degrees) {\r\n if (degrees >= 0 && degrees < 90) return this.bottomRight.y;\r\n if (degrees >= 90 && degrees < 180) return this.topRight.y;\r\n if (degrees >= 180 && degrees < 270) return this.topLeft.y;\r\n if (degrees >= 270 && degrees < 360) return this.bottomLeft.y;\r\n\r\n return this.getTop(degrees - 360);\r\n }\r\n\r\n /**\r\n * 左端のX座標を取得する。\r\n * @function IRIArchives.RectCorners.prototype.getLeft\r\n * @param {Number} degrees 現在の角度(degree)。\r\n * @returns {Number} 左端のX座標(pixel)。\r\n */\r\n getLeft(degrees) {\r\n if (degrees >= 0 && degrees < 90) return this.bottomLeft.x;\r\n if (degrees >= 90 && degrees < 180) return this.bottomRight.x;\r\n if (degrees >= 180 && degrees < 270) return this.topRight.x;\r\n if (degrees >= 270 && degrees < 360) return this.topLeft.x;\r\n\r\n return this.getLeft(degrees - 360);\r\n }\r\n\r\n /**\r\n * 回転後の左上の頂点の座標を取得する。\r\n * @function IRIArchives.RectCorners.prototype.getTopLeft\r\n * @param {Number} degrees 現在の角度(degree)。\r\n * @returns {OpenSeadragon.Point} 頂点の座標。\r\n */\r\n getTopLeft(degrees) {\r\n if (degrees >= 45 && degrees < 135) return this.bottomLeft;\r\n if (degrees >= 135 && degrees < 225) return this.bottomRight;\r\n if (degrees >= 225 && degrees < 315) return this.topRight;\r\n\r\n return this.topLeft;\r\n }\r\n\r\n /**\r\n * 回転後の左下の頂点の座標を取得する。\r\n * @function IRIArchives.RectCorners.prototype.getBottomLeft\r\n * @param {Number} degrees 現在の角度(degree)。\r\n * @returns {OpenSeadragon.Point} 頂点の座標。\r\n */\r\n getBottomLeft(degrees) {\r\n if (degrees >= 45 && degrees < 135) return this.bottomRight;\r\n if (degrees >= 135 && degrees < 225) return this.topRight;\r\n if (degrees >= 225 && degrees < 315) return this.topLeft;\r\n\r\n return this.bottomLeft;\r\n }\r\n\r\n /**\r\n * 回転後の右下の頂点の座標を取得する。\r\n * @function IRIArchives.RectCorners.prototype.getBottomRight\r\n * @param {Number} degrees 現在の角度(degree)。\r\n * @returns {OpenSeadragon.Point} 頂点の座標。\r\n */\r\n getBottomRight(degrees) {\r\n if (degrees >= 45 && degrees < 135) return this.topRight;\r\n if (degrees >= 135 && degrees < 225) return this.topLeft;\r\n if (degrees >= 225 && degrees < 315) return this.bottomLeft;\r\n\r\n return this.bottomRight;\r\n }\r\n\r\n /**\r\n * 回転後の右上の頂点の座標を取得する。\r\n * @function IRIArchives.RectCorners.prototype.getTopRigth\r\n * @param {Number} degrees 現在の角度(degree)。\r\n * @returns {OpenSeadragon.Point} 頂点の座標。\r\n */\r\n getTopRight(degrees) {\r\n if (degrees >= 45 && degrees < 135) return this.topLeft;\r\n if (degrees >= 135 && degrees < 225) return this.bottomLeft;\r\n if (degrees >= 225 && degrees < 315) return this.bottomRight;\r\n\r\n return this.topRight;\r\n }\r\n\r\n /**\r\n * 位置の補正を行う。\r\n * @function IRIArchives.RectCorners.prototype.positionCorrection\r\n * @param {OpenSeadragon.Point} correctionValue 補正値。\r\n */\r\n positionCorrection(correctionValue) {\r\n var correctedX = this.maxX;\r\n var correctedY = this.maxY;\r\n\r\n this.topLeft = this._normalize(this.topLeft, 0, correctedX, 0, correctedY);\r\n this.topRight = this._normalize(this.topRight, 0, correctedX, 0, correctedY);\r\n this.bottomRight = this._normalize(this.bottomRight, 0, correctedX, 0, correctedY);\r\n this.bottomLeft = this._normalize(this.bottomLeft, 0, correctedX, 0, correctedY);\r\n }\r\n\r\n /**\r\n * 座標を補正して、閾値を超えないようにする。\r\n * @private\r\n * @function IRIArchives.RectCorners.prototype._normalize\r\n * @param {OpenSeadragon.Point} corner 補正する座標。\r\n * @param {Number} minX X座標の最小値。\r\n * @param {Number} maxX X座標の最大値。\r\n * @param {Number} minY Y座標の最小値。\r\n * @param {Number} maxY Y座標の最大値。\r\n * @returns {OpenSeadragon.Point} 補正後の値。\r\n */\r\n _normalize(corner, minX, maxX, minY, maxY) {\r\n\r\n if (corner.x < minX) {\r\n corner.x = minX;\r\n }\r\n else if (corner.x > maxX) {\r\n corner.x = maxX;\r\n }\r\n\r\n if (corner.y < minY) {\r\n corner.y = minY;\r\n }\r\n else if (corner.y > maxY) {\r\n corner.y = maxY;\r\n }\r\n\r\n return corner;\r\n }\r\n}\r\n\r\nconst positionDef = {\r\n /** @member {Number} */\r\n /** 左上 */\r\n TopLeft: 0,\r\n /** @member {Number} */\r\n /** 右上 */\r\n TopRight: 1,\r\n /** @member {Number} */\r\n /** 右下 */\r\n BottomRight: 2,\r\n /** @member {Number} */\r\n /** 左下 */\r\n BottomLeft: 3\r\n};\r\n","import ViewerCore from './lib/viewer-core';\r\nimport Downloader from './lib/viewer-downloader';\r\nimport ElemResizer from './lib/viewer-ui-element-resizer';\r\nimport Slider from './lib/viewer-ui-slider';\r\nimport TabHelper from './lib/viewer-ui-tab-helper';\r\nimport ThumbList from './lib/viewer-ui-thumblist';\r\nimport Dialog from './lib/viewer-ui-dialog';\r\nimport _userAgent from './lib/useragent';\r\nimport $ from 'jquery';\r\nimport 'jquery-lazyload';\r\n\r\nclass RoDAViewer {\r\n constructor(args) {\r\n\r\n var self = this;\r\n\r\n this._viewer = new ViewerCore(args.mainViewerId, JSON.parse(args.tileSources), args.initialPage, args.watermarkUrl, args.watermarkPosition, this._confirmSelection.bind(this), 'spinner-overlay');\r\n\r\n document.addEventListener('resize', () => {\r\n setTimeout(this._viewer.mainViewer.raiseEvent('resize'), 500);\r\n }); \r\n\r\n //#region 画像フィルター系\r\n\r\n if (_userAgent !== 'ie') {\r\n\r\n this._timer = null;\r\n this._filters = [\r\n {\r\n filterName: 'brightness',\r\n min: -255,\r\n max: 255,\r\n defaultValue: 0,\r\n step: 1,\r\n isSlider: true,\r\n isAdd () {\r\n const value = parseFloat(document.getElementById('brightness-slider').value);\r\n return value !== this.defaultValue;\r\n },\r\n processor () {\r\n const value = parseFloat(document.getElementById('brightness-slider').value);\r\n return OpenSeadragon.Filters.BRIGHTNESS(value);\r\n }\r\n },\r\n {\r\n filterName: 'saturation',\r\n min: -100,\r\n max: 100,\r\n defaultValue: 0,\r\n step: 1,\r\n isSlider: true,\r\n isAdd () {\r\n const value = parseFloat(document.getElementById('saturation-slider').value);\r\n return value !== this.defaultValue;\r\n },\r\n processor () {\r\n const value = parseFloat(document.getElementById('saturation-slider').value);\r\n return self._saturationFilter(value);\r\n }\r\n },\r\n {\r\n filterName: 'contrast',\r\n min: -100,\r\n max: 100,\r\n defaultValue: 0,\r\n step: 1,\r\n isSlider: true,\r\n isAdd () {\r\n const value = parseFloat(document.getElementById('contrast-slider').value);\r\n return value !== this.defaultValue;\r\n },\r\n processor () {\r\n const value = parseFloat(document.getElementById('contrast-slider').value);\r\n return self._contrastFilter(value);\r\n }\r\n },\r\n {\r\n filterName: 'gamma',\r\n min: 0,\r\n max: 5,\r\n defaultValue: 1,\r\n step: 0.1,\r\n isSlider: true,\r\n isAdd () {\r\n const value = parseFloat(document.getElementById('gamma-slider').value);\r\n return value !== this.defaultValue;\r\n },\r\n processor () {\r\n const value = parseFloat(document.getElementById('gamma-slider').value);\r\n return OpenSeadragon.Filters.GAMMA(value);\r\n }\r\n },\r\n {\r\n filterName: 'greyscale',\r\n isSlider: false,\r\n isAdd () {\r\n return document.querySelector('.filter-button[data-effect-type=greyscale]').getAttribute('aria-pressed') === 'true';\r\n },\r\n processor () {\r\n return OpenSeadragon.Filters.GREYSCALE();\r\n }\r\n },\r\n {\r\n filterName: 'invert',\r\n isSlider: false,\r\n isAdd () {\r\n return document.querySelector('.filter-button[data-effect-type=invert]').getAttribute('aria-pressed') === 'true';\r\n },\r\n processor () {\r\n return OpenSeadragon.Filters.INVERT();\r\n }\r\n }\r\n ];\r\n\r\n this._createFilterSliders();\r\n }\r\n else {\r\n const filterItem = document.getElementsByClassName('image-filter');\r\n for (let i = 0; i < filterItem.length; i++) {\r\n filterItem[i].style.display = 'none';\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n //#region ボタン初期化\r\n\r\n const buttonList = document.getElementsByTagName('button');\r\n for (let i = 0; i < buttonList.length; i++) {\r\n const button = buttonList[i];\r\n\r\n if (button.getAttribute('data-viewer-command')) {\r\n this._registClickEventForHasCommand(button);\r\n }\r\n else if (button.getAttribute('aria-expanded')) {\r\n this._registClickEventForHasExpanded(button);\r\n }\r\n\r\n this._registMouseEventForButton(button);\r\n }\r\n\r\n const tabList = document.querySelectorAll('[role=\"tablist\"]');\r\n for (let i = 0; i < tabList.length; i++) {\r\n const tab = tabList[i];\r\n\r\n if (tab.classList.contains('filter-list')) {\r\n this._filterTab = new TabHelper(tab);\r\n }\r\n else {\r\n new TabHelper(tab);\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n //#region ページ系初期化\r\n\r\n // コンテンツが複数ページを有する場合のイベントハンドラの登録\r\n if (this._viewer.totalPagesCount > 1) this._initPaging();\r\n\r\n //#endregion\r\n\r\n //#region 回転系の初期化\r\n\r\n this._rotateSlider = new Slider('rotate-slider', this._setRotation.bind(this));\r\n this._viewer.addEventListener('changeRotate', this._setRotationInfo.bind(this));\r\n\r\n //#endregion\r\n\r\n //#region フルスクリーン機能の初期化\r\n\r\n document.addEventListener(\"webkitfullscreenchange\", this._changeFullscreenEventHandler.bind(this), false);\r\n document.addEventListener(\"mozfullscreenchange\", this._changeFullscreenEventHandler.bind(this), false);\r\n document.addEventListener(\"MSFullscreenChange\", this._changeFullscreenEventHandler.bind(this), false);\r\n document.addEventListener(\"fullscreenchange\", this._changeFullscreenEventHandler.bind(this), false);\r\n\r\n //#endregion\r\n\r\n //#region UI系の初期化\r\n\r\n this._isUILock = false;\r\n this._beforeNavigatorState = false;\r\n\r\n this._hideStart = setTimeout(this._hideUI.bind(this), 3000);\r\n\r\n this._viewer.mainViewer.addHandler('canvas-click', this._toggleUI.bind(this));\r\n\r\n const uiElements = document.querySelectorAll('[data-auto-hide]');\r\n const uiLength = uiElements.length;\r\n for (let i = 0; i < uiLength; i = i + 1) {\r\n const uiElem = uiElements[i];\r\n\r\n uiElem.addEventListener('mouseover', this._mouseOverEvent.bind(this), false);\r\n uiElem.addEventListener('mouseout', this._mouseOutEvent.bind(this), false);\r\n }\r\n\r\n //#endregion\r\n }\r\n\r\n //#region 各種初期化系\r\n\r\n _initPaging() {\r\n\r\n this._pageInfoForms = document.getElementsByClassName('current-page-number');\r\n const changeEventName = _userAgent !== 'ie' ? 'change' : 'mouseup';\r\n\r\n for (let i = 0; i < this._pageInfoForms.length; i++) {\r\n const pageForm = this._pageInfoForms[i];\r\n pageForm.addEventListener(changeEventName, this._directPageInput.bind(this), false);\r\n if (_userAgent === 'ie') {\r\n pageForm.addEventListener('blur', this._directPageInput.bind(this), false);\r\n pageForm.addEventListener('keyup', this._directPageInput.bind(this), false);\r\n }\r\n }\r\n\r\n // ページが変更された場合のイベントを登録する。\r\n this._viewer.addEventListener('changePage', this._changePageEventHandler.bind(this));\r\n\r\n //#region サムネイル系初期化\r\n\r\n this._sidebarThumbList = new ThumbList('sidebar-thumbnail-list-inner', 'column');\r\n this._bottomThumbList = new ThumbList('bottom-thumbnail-list-inner', 'row');\r\n\r\n const thumbnailList = document.getElementsByClassName('thumb');\r\n for (let k = 0; k < thumbnailList.length; k++) {\r\n const thumb = thumbnailList[k];\r\n\r\n this._registClickEventForHasCommand(thumb);\r\n this._registMouseEventForButton(thumb);\r\n\r\n thumb.addEventListener('click', this._sidebarContentClick, false);\r\n }\r\n\r\n new ElemResizer('sidebar', 'sidebar-resizer');\r\n\r\n $('.bottom-lazy').lazyload({\r\n container: $('#bottom-thumbnail-list-inner'),\r\n effect: 'fadeIn',\r\n failure_limit: 1000,\r\n skip_invisible: true,\r\n threshold: 300\r\n //load: function (e) {\r\n // $(this).css('visibility', 'visible');\r\n // $(this).next('svg').remove();\r\n //}\r\n });\r\n\r\n $('.side-lazy').lazyload({\r\n container: $('#sidebar-thumbnail-list-inner'),\r\n effect: 'fadeIn',\r\n failure_limit: 1000,\r\n skip_invisible: true,\r\n threshold: 300\r\n //load: function (e) {\r\n // $(this).css('visibility','visible');\r\n // $(this).next('svg').remove();\r\n //}\r\n });\r\n //lazyload();\r\n\r\n //#endregion\r\n }\r\n\r\n//#endregion\r\n\r\n//#region ボタン関係\r\n\r\n/**\r\n * コマンドを実行するイベントハンドラを登録します。\r\n * @param {HTMLElement} button ボタン要素\r\n */\r\n _registClickEventForHasCommand(button) {\r\n 'use strict';\r\n\r\n switch (button.dataset.viewerCommand) {\r\n\r\n case 'goPrevPage':\r\n button.addEventListener('click', this.goPrevPage.bind(this), false);\r\n break;\r\n\r\n case 'goNextPage':\r\n button.addEventListener('click', this.goNextPage.bind(this), false);\r\n break;\r\n\r\n case 'setPage':\r\n const page = parseInt(button.dataset.viewerCommandArg);\r\n button.addEventListener('click', this._viewer.goToPage.bind(this._viewer, page, true), false);\r\n break;\r\n\r\n case 'zoomOut':\r\n button.addEventListener('click', this._viewer.zoomTo.bind(this._viewer, 0.5), false);\r\n break;\r\n\r\n case 'zoomIn':\r\n button.addEventListener('click', this._viewer.zoomTo.bind(this._viewer, 2.0), false);\r\n break;\r\n\r\n case 'fitHome':\r\n button.addEventListener('click', this._viewer.goHome.bind(this._viewer, false), false);\r\n break;\r\n\r\n case 'fitVertical':\r\n button.addEventListener('click', this._viewer.fitVertically.bind(this._viewer), false);\r\n break;\r\n\r\n case 'fitHorizontal':\r\n button.addEventListener('click', this._viewer.fitHorizontally.bind(this._viewer), false);\r\n break;\r\n\r\n case 'rotate':\r\n button.addEventListener('click', this._setRotate.bind(this), false);\r\n break;\r\n\r\n case 'setRotate':\r\n const degrees = parseInt(button.dataset.viewerCommandArg);\r\n button.addEventListener('click', this._viewer.setRotation.bind(this._viewer, degrees, true), false);\r\n break;\r\n\r\n case 'toggleNavigator':\r\n button.addEventListener('click', this._toggleNavigator.bind(this), false);\r\n break;\r\n\r\n case 'toggleFullscreen':\r\n var enableFullscreen = document.fullscreenEnabled || document.msFullscreenEnabled || document.mozFullScreenEnabled || document.webkitFullscreenEnabled;\r\n if (enableFullscreen) {\r\n this._fullScreenButton = button;\r\n button.addEventListener('click', this.toggleFullscreen.bind(this), false);\r\n }\r\n else {\r\n button.style.display = 'none';\r\n button.setAttribute('aria-hidden', 'true');\r\n }\r\n break;\r\n\r\n case 'openInfoDialog':\r\n this._infoDialog = new Dialog('info-dialog', true, true, 'info-close-button');\r\n button.addEventListener('click', this._infoDialog.open.bind(this._infoDialog), false);\r\n break;\r\n\r\n case 'openDownloadDialog':\r\n this._initDownload(button);\r\n break;\r\n\r\n case 'openQuoteDialog':\r\n this._initQuote(button);\r\n break;\r\n\r\n case 'effect':\r\n button.addEventListener('click', this.imageAdjustment.bind(this), false);\r\n break;\r\n\r\n case 'effect-reset':\r\n button.addEventListener('click', this._resetFilters.bind(this), false);\r\n break;\r\n\r\n default:\r\n }\r\n\r\n if (button.dataset.clickToClose === 'true') {\r\n button.addEventListener('click', this._closeMenuDialog.bind(this), false);\r\n }\r\n }\r\n\r\n/**\r\n * 要素の開閉を行うイベントハンドラを登録します。\r\n * @param {HTMLButtonElement} button ボタン要素\r\n */\r\n _registClickEventForHasExpanded(button) {\r\n 'use strict';\r\n\r\n button.addEventListener('click', this._clickEventForHasExpanded.bind(this), false);\r\n }\r\n\r\n/**\r\n * タブの切り替えを行うイベントハンドラを登録します。\r\n * @param {HTMLButtonElement} button ボタン要素\r\n */\r\n _registClickEventForTab(button) {\r\n 'use strict';\r\n\r\n button.addEventListener('click', this.toggleTab.bind(this), false);\r\n }\r\n\r\n/**\r\n * ボタンに対するマウス操作のイベントハンドラを登録します。\r\n * @param {HTMLElement} button ボタン要素\r\n */\r\n _registMouseEventForButton(button) {\r\n 'use strict';\r\n\r\n if (_userAgent !== 'ios' && _userAgent !== 'android') button.addEventListener('focus', this._mouseOverEvent.bind(this), false);\r\n button.addEventListener('blur', this._mouseOutEvent.bind(this), false);\r\n button.addEventListener('touchend', this._mouseOutEvent.bind(this), false);\r\n button.addEventListener('mouseover', this._mouseOverEvent.bind(this), false);\r\n button.addEventListener('mouseout', this._mouseOutEvent.bind(this), false);\r\n button.addEventListener('mouseup', this._mouseOutEvent.bind(this), false);\r\n }\r\n\r\n/**\r\n * ボタンがマウスオーバーされた時のイベント。\r\n * hoverクラスの付与と(あれば)ツールチップの表示を行う。\r\n * @param {MouseEvent} event MouseEvent\r\n */\r\n _mouseOverEvent(event) {\r\n 'use strict';\r\n\r\n const element = event.currentTarget;\r\n\r\n if (this._isUILock) return;\r\n\r\n // hoverクラスの付与。\r\n element.classList.add('hover');\r\n\r\n if (element.tagName.toLowerCase() !== 'button') return;\r\n\r\n // ツールチップの表示\r\n // 端末のOSがiOSとandroidの場合はツールチップを表示せずに抜ける。\r\n if (_userAgent === 'ios' || _userAgent === 'android') return;\r\n\r\n const tooltipId = element.dataset.tooltipId;\r\n if (!tooltipId) return;\r\n\r\n const tooltip = document.getElementById(tooltipId);\r\n if (!tooltip) return;\r\n\r\n tooltip.setAttribute('aria-hidden', 'false');\r\n\r\n const rect = element.getBoundingClientRect();\r\n const tpRect = tooltip.getBoundingClientRect();\r\n\r\n tooltip.style.top = '';\r\n tooltip.style.bottom = '';\r\n tooltip.style.left = '';\r\n tooltip.style.right = '';\r\n\r\n const elemCenter = rect.left + (rect.width / 2);\r\n const tpLeft = elemCenter - (tpRect.width / 2);\r\n\r\n if (rect.left === 0) {\r\n tooltip.style.left = 0;\r\n } else if (window.innerWidth < tpLeft + tpRect.width) {\r\n tooltip.style.right = 0;\r\n } else {\r\n tooltip.style.left = tpLeft + 'px';\r\n }\r\n\r\n if (rect.y + rect.height > window.innerHeight / 2) {\r\n tooltip.style.top = rect.top - tpRect.height + 'px';\r\n }\r\n else {\r\n tooltip.style.top = rect.top + rect.height + 'px';\r\n }\r\n }\r\n\r\n/**\r\n * ボタンがマウスオーバーされた時のイベント。\r\n * hoverクラスの除去と(あれば)ツールチップを非表示にする。\r\n * @param {MouseEvent} event MouseEvent\r\n */\r\n _mouseOutEvent(event) {\r\n 'use strict';\r\n\r\n const element = event.currentTarget;\r\n\r\n // hoverクラスの削除。\r\n element.classList.remove('hover');\r\n element.blur();\r\n\r\n // ツールチップの表示\r\n // 端末のOSがiOSとandroidの場合はツールチップを表示せずに抜ける。\r\n if (_userAgent === 'ios' || _userAgent === 'android') return;\r\n\r\n // ツールチップのIDを取得。\r\n const tooltipId = element.dataset.tooltipId;\r\n if (!tooltipId) return;\r\n\r\n // ツールチップ要素を取得。\r\n const tooltip = document.getElementById(tooltipId);\r\n if (!tooltip) return;\r\n\r\n // 200ms後にツールチップを表示する。\r\n if (this._tooltipTimer !== null) window.clearTimeout(this._tooltipTimer);\r\n this._tooltipTimer = null;\r\n tooltip.setAttribute('aria-hidden', 'true');\r\n }\r\n\r\n/**\r\n * 要素の開閉を行うボタンをクリックした際のイベント。\r\n * @param {MouseEvent} event イベント。\r\n */\r\n _clickEventForHasExpanded(event) {\r\n 'use strict';\r\n\r\n const element = event.currentTarget;\r\n const isExpanded = element.getAttribute('aria-expanded') === 'true';\r\n const ctrlElemId = element.getAttribute('aria-controls');\r\n\r\n element.setAttribute('aria-expanded', !isExpanded);\r\n document.getElementById(ctrlElemId).setAttribute('aria-hidden', isExpanded);\r\n\r\n const toggleButtonId = element.dataset.toggleButtonId;\r\n if (toggleButtonId) {\r\n const toggleButton = document.getElementById(toggleButtonId);\r\n if (toggleButton && toggleButton.getAttribute('aria-expanded') === 'true') {\r\n const tCtrlElemId = toggleButton.getAttribute('aria-controls');\r\n if (tCtrlElemId) {\r\n const tCtrlElem = document.getElementById(tCtrlElemId);\r\n if (tCtrlElem) {\r\n toggleButton.setAttribute('aria-expanded', 'false');\r\n tCtrlElem.setAttribute('aria-hidden', 'true');\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (element.dataset.closed) {\r\n const closeElem = document.getElementById(element.dataset.closed);\r\n if (closeElem) {\r\n closeElem.setAttribute('aria-expanded', 'false');\r\n document.getElementById(closeElem.getAttribute('aria-controls')).setAttribute('aria-hidden', 'true');\r\n }\r\n }\r\n\r\n if (ctrlElemId === 'sidebar') {\r\n document.querySelector('.toolbar').classList.toggle('show-sidebar');\r\n document.getElementById('viewer-container').classList.toggle('show-sidebar');\r\n document.getElementById('bottom-toolbar').classList.toggle('show-sidebar');\r\n\r\n const overlay = document.getElementById('sidebar-overlay');\r\n overlay.setAttribute('aria-hidden', isExpanded);\r\n\r\n if (isExpanded) {\r\n if (this._sidebarFunc !== null && this._sidebarFunc !== undefined) {\r\n overlay.removeEventListener('click', this._sidebarFunc);\r\n this._sidebarFunc = null;\r\n }\r\n }\r\n else {\r\n this._sidebarFunc = this._elementClickTrigger.bind(this, element);\r\n overlay.addEventListener('click', this._sidebarFunc, false);\r\n }\r\n }\r\n\r\n if (this._hideStart) clearTimeout(this._hideStart);\r\n\r\n // ツールチップのIDを取得。\r\n const tooltipId = element.dataset.tooltip;\r\n if (!tooltipId) return;\r\n\r\n // ツールチップ要素を取得。\r\n const tooltip = document.getElementById(tooltipId);\r\n if (!tooltip) return;\r\n\r\n const msg = isExpanded ? tooltip.dataset.notExpandedMsg : tooltip.dataset.expandedMsg;\r\n if (!msg) return;\r\n\r\n tooltip.textContent = msg;\r\n }\r\n\r\n _elementClickTrigger(element) {\r\n 'use strict';\r\n\r\n element.click();\r\n }\r\n\r\n//#endregion\r\n\r\n//#region ページ関係\r\n\r\n/**\r\n * ページを直接入力した際のイベントハンドラ。\r\n * @param {Event} event イベント。\r\n */\r\n _directPageInput(event) {\r\n\r\n // イベント種別がキーアップの場合はEnter以外は反応しない。\r\n if (event.type === 'keyup' && event.keyCode !== 13) return;\r\n\r\n const pageNum = parseInt(event.target.value);\r\n if (isNaN(pageNum) || pageNum < 1 || pageNum > this._viewer.totalPages) {\r\n // 入力されたページ番号が不正であった場合は現在のページ番号をセットする。\r\n event.target.value = this._viewer.getCurrentPage();\r\n }\r\n else if (pageNum !== this._viewer.getCurrentPage()) {\r\n try {\r\n this._viewer.goToPage(pageNum, true);\r\n }\r\n catch (e) {\r\n // 入力されたページ番号が不正であった場合は現在のページ番号をセットする。\r\n event.currentTarget.value = this._viewer.getCurrentPage();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * ページが変更された際のイベントハンドラ。\r\n * ページ番号の補正、スライダー位置の補正等を行う。\r\n * \r\n */\r\n _changePageEventHandler(event) {\r\n\r\n const currentPage = event.detail.page;\r\n const hasNextPage = event.detail.existNextPage;\r\n\r\n // 最初のページである場合に前のページへ移動するボタンを無効化する。\r\n // 最初のページでない場合は逆に有効化を行う。\r\n const prevPages = document.getElementsByClassName('prev-page');\r\n const prevCount = prevPages.length;\r\n for (let i = 0; i < prevCount; i = i + 1) {\r\n prevPages[i].disabled = currentPage === 1;\r\n }\r\n\r\n // 最後のページである場合に後ろのページへ移動するボタンを無効化する。\r\n // 最後のページでない場合は逆に有効化を行う。\r\n const nextPages = document.getElementsByClassName('next-page');\r\n const nextCount = nextPages.length;\r\n for (let i = 0; i < nextCount; i = i + 1) {\r\n nextPages[i].disabled = !hasNextPage;\r\n }\r\n\r\n // サムネイルリストのページを変更する。\r\n this._sidebarThumbList.changePage(currentPage);\r\n this._bottomThumbList.changePage(currentPage);\r\n\r\n // フォームの設定を行う。\r\n for (let j = 0; j < this._pageInfoForms.length; j = j + 1) {\r\n const form = this._pageInfoForms[j];\r\n if (parseInt(form.value) !== currentPage) form.value = currentPage;\r\n }\r\n }\r\n\r\n/**\r\n* ページ番号を変更したURLを生成する。\r\n* @param {Number} page ページ番号\r\n* @return {string} URL。\r\n*/\r\n _generateUrl(page) {\r\n if (!location.href.match(/[?&]p=\\d{1,}/)) {\r\n if (!location.search) {\r\n return location.href + '?p=' + page;\r\n }\r\n else {\r\n return location.href + '&p=' + page;\r\n }\r\n }\r\n\r\n return location.href.replace(/[?&]p=\\d{1,}/, function (match) {\r\n return match.charAt(0) + 'p=' + page;\r\n });\r\n }\r\n\r\n//#endregion\r\n\r\n//#region サムネイルリスト関係\r\n\r\n _sidebarContentClick() {\r\n 'use strict';\r\n\r\n const isMobile = window.getComputedStyle(document.getElementById('sidebar-overlay'), '').visibility === 'visible';\r\n if (isMobile) document.getElementById('sidebar-toggle-button').click();\r\n }\r\n\r\n//#endregion\r\n\r\n//#region 回転系\r\n\r\n/**\r\n * 画像角度回転ボタンが押された際のイベントハンドラ。\r\n * ボタンのdata-viewer-command-arg属性の値だけ回転させる。\r\n * @param {MouseEvent} event マウスイベント\r\n */\r\n _setRotate(event) {\r\n 'use strict';\r\n\r\n const offset = parseInt(event.currentTarget.dataset.viewerCommandArg);\r\n const degrees = (offset + this._viewer.getRotation() + 360) % 360;\r\n\r\n this.setImageRotation(degrees, true);\r\n }\r\n\r\n/**\r\n * 画像角度回転スライダーの値が変更された際のイベントハンドラ。\r\n * 画像の角度をinput要素のvalueに変更する。\r\n * @param {Event} event inputイベント。\r\n */\r\n _setRotation(event) {\r\n 'use strict';\r\n\r\n if (event.type !== 'input' && event.type !== 'change') return;\r\n\r\n const degrees = parseInt(event.target.value);\r\n this.setImageRotation(degrees, false);\r\n }\r\n\r\n/**\r\n * 画像角度が変更された際のイベントハンドラ。\r\n * 画像角度回転スライダーの値を画像角度と一致させる。\r\n * @param {CustomEvent} event イベント。\r\n */\r\n _setRotationInfo(event) {\r\n 'use strict';\r\n\r\n // OpenSeadragonでは角度は0~360だが、スライダー上では-180~180であるので、変換を行う。\r\n const degrees = event.detail.degrees > 180 ? event.detail.degrees - 360 : event.detail.degrees;\r\n this._rotateSlider.setValue(degrees);\r\n }\r\n\r\n//#endregion\r\n\r\n//#region メニュー系\r\n\r\n/**\r\n * メニューダイアログを閉じるイベント。\r\n * @param {MouseEvent} event マウスイベント\r\n */\r\n _closeMenuDialog(event) {\r\n 'use strict';\r\n\r\n const button = document.querySelector('button[aria-controls=\"toolbar-menu\"]');\r\n button.setAttribute('aria-expanded', 'false');\r\n\r\n document.getElementById('toolbar-menu').setAttribute('aria-hidden', 'true');\r\n }\r\n\r\n//#endregion\r\n\r\n//#region 引用系\r\n\r\n/**\r\n * 引用の初期化を行います。\r\n * @param {HTMLButtonElement} button ボタン要素\r\n */\r\n _initQuote(button) {\r\n this._quoteAboutDialog = new Dialog('quote-about-dialog', true, true, 'quote-about-button');\r\n this._quoteDialog = new Dialog('quote-command', false, false);\r\n this._quotePreviewDialog = new Dialog('quote-preview-dialog', true, false, '');\r\n this._quoteResultDialog = new Dialog('quote-result-dialog', true, false, 'quote-close-button');\r\n\r\n button.addEventListener('click', this._quoteAboutDialog.open.bind(this._quoteAboutDialog), false);\r\n\r\n const startButton = document.getElementById('quote-about-button');\r\n startButton.addEventListener('click', this._startSelection.bind(this), false);\r\n\r\n document.getElementById('quote-confirm-button').addEventListener('click', this._viewer.confirmSelection.bind(this._viewer), false);\r\n document.getElementById('quote-redo-button').addEventListener('click', this._redoSelection.bind(this), false);\r\n document.getElementById('quote-cancel-button').addEventListener('click', this._endSelection.bind(this), false);\r\n\r\n document.getElementById('quote-regist-button').addEventListener('click', this._registQuoteUrl.bind(this), false);\r\n document.getElementById('quote-preview-cancel-button').addEventListener('click', this._redoSelection.bind(this), false);\r\n }\r\n\r\n/**\r\n* 引用を開始します。\r\n*/\r\n _startSelection() {\r\n\r\n this._hideUI();\r\n this._isUILock = true;\r\n\r\n this._quoteDialog.open();\r\n this._viewer.setSelectionState(true);\r\n }\r\n\r\n/**\r\n * 引用を中止します。\r\n */\r\n _endSelection() {\r\n\r\n this._isUILock = false;\r\n\r\n this._quoteDialog.close();\r\n this._viewer.setSelectionState(false);\r\n }\r\n\r\n/**\r\n * 引用をやり直します。\r\n */\r\n _redoSelection() {\r\n this._quoteDialog.open();\r\n this._quotePreviewDialog.close();\r\n\r\n this._viewer.cancelSelection();\r\n }\r\n\r\n /**\r\n * 引用が確定した際のイベントハンドラ。\r\n * @param {Event} event イベント\r\n */\r\n _confirmSelection(event) {\r\n this._quoteDialog.close();\r\n this._showQuote(event.detail);\r\n //this._showQuotePreview(event.detail);\r\n }\r\n\r\n /**\r\n * URLを登録して、結果を表示します。\r\n * @param {string} url url\r\n */\r\n _showQuote(url) {\r\n const self = this;\r\n\r\n this._quotePreviewDialog.close();\r\n this._viewer.showLoadAnimation();\r\n\r\n const image = document.getElementById('quote-result');\r\n image.src = url;\r\n image.onload = function () {\r\n self._viewer.hiddenLoadAnimation();\r\n self._quoteResultDialog.open();\r\n document.getElementById('image-url').textContent = url;\r\n document.getElementById('image-tag').textContent = `\"${document.getElementById('image-title').value}\"`;\r\n };\r\n image.onerror = function () {\r\n self._viewer.hiddenLoadAnimation();\r\n alert('画像の取得に失敗しました');\r\n };\r\n \r\n this._isUILock = false;\r\n }\r\n\r\n /**\r\n * プレビューを表示します。\r\n * @param {String} url 登録するURL。\r\n */\r\n _showQuotePreview(url) {\r\n const quoteSize = this._viewer.getSelectedRectSize();\r\n document.getElementById('quote-size').textContent = quoteSize.x + '×' + quoteSize.y;\r\n\r\n const preview = document.getElementById('quote-preview');\r\n preview.src = preview.dataset.src;\r\n\r\n console.log(url);\r\n this._quotePreviewDialog.open();\r\n this._imageUrl = url;\r\n\r\n const xhr = new XMLHttpRequest();\r\n xhr.open('GET', url, true);\r\n xhr.responseType = 'blob';\r\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\r\n xhr.onloadend = function(e) {\r\n if (xhr.status === 200) {\r\n const reader = new FileReader();\r\n reader.onloadend =function() {\r\n preview.src = reader.result;\r\n };\r\n reader.readAsDataURL(xhr.response);\r\n }\r\n else {\r\n alert('画像の取得に失敗しました。');\r\n }\r\n }.bind(this);\r\n xhr.send();\r\n }\r\n\r\n /**\r\n * URLを登録して、結果を表示します。\r\n */\r\n _registQuoteUrl() {\r\n const self = this;\r\n\r\n this._quotePreviewDialog.close();\r\n this._viewer.showLoadAnimation();\r\n\r\n const image = document.getElementById('quote-result');\r\n image.onload = function() {\r\n self._viewer.hiddenLoadAnimation();\r\n self._quoteResultDialog.open();\r\n };\r\n image.onerror = function () {\r\n self._viewer.hiddenLoadAnimation();\r\n alert('画像の取得に失敗しました');\r\n };\r\n\r\n const permalinkUrl = document.getElementById('quote_url').value;\r\n\r\n const formData = new FormData();\r\n formData.append('url', this._imageUrl);\r\n\r\n const xhrObject = new XMLHttpRequest();\r\n xhrObject.open('POST', permalinkUrl, true);\r\n xhrObject.responseType = 'json';\r\n xhrObject.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\r\n xhrObject.onloadend = function (e) {\r\n self._isUILock = false;\r\n const url = xhrObject.response.permalink;\r\n\r\n image.src = url;\r\n document.getElementById('image-url').textContent = url;\r\n document.getElementById('image-tag').textContent = ``;\r\n console.log(``);\r\n };\r\n \r\n xhrObject.send(formData);\r\n }\r\n\r\n//#endregion\r\n\r\n//#region ダウンロード系\r\n\r\n /**\r\n * ダウンロードダイアログの初期化を行う。\r\n * @param {object} button ボタン\r\n */\r\n _initDownload(button) {\r\n\r\n this._downloadDialog = new Dialog('download-dialog', true, true, 'download-close-button');\r\n\r\n //const downloadUrl = document.getElementById('download_url');\r\n new Downloader(this._viewer.mainViewer, 'download-button', 'type', 'download', 'page-select', 'page-range');\r\n\r\n button.addEventListener('click', this._downloadDialog.open.bind(this._downloadDialog), false);\r\n document.getElementById('download').addEventListener('click', this._downloadDialog.close.bind(this._downloadDialog), false);\r\n }\r\n\r\n//#endregion\r\n\r\n//#region フルスクリーン\r\n\r\n /**\r\n * フルスクリーン変更イベントのイベントハンドラ。\r\n * @param {fullscreenchange} event フルスクリーン変更イベント。\r\n */\r\n _changeFullscreenEventHandler(event) {\r\n\r\n const isFullscreen = this._viewer.getFullscreenState();\r\n\r\n this._fullScreenButton.setAttribute('aria-pressed', isFullscreen);\r\n\r\n const buttonChildren = this._fullScreenButton.children;\r\n const buttonCount = buttonChildren.length;\r\n for (let i = 0; i < buttonCount; i = i + 1) {\r\n const buttonIcon = buttonChildren[i];\r\n if (buttonIcon.tagName === 'svg') {\r\n\r\n if (buttonIcon.classList) {\r\n buttonIcon.classList.toggle('fa-compress');\r\n buttonIcon.classList.toggle('fa-expand');\r\n }\r\n else {\r\n try {\r\n const classList = buttonIcon.getAttribute('class').split(' ');\r\n const classCount = classList.length;\r\n\r\n let classListStr = '';\r\n for (let i = 0; i < classCount; i = i + 1) {\r\n const className = classList[i];\r\n if (className === 'fa-compress') {\r\n classListStr += 'fa-expand ';\r\n }\r\n else if (className === 'fa-expand') {\r\n classListStr += 'fa-compress ';\r\n }\r\n else {\r\n classListStr += className + ' ';\r\n }\r\n }\r\n\r\n buttonIcon.setAttribute('class', classListStr);\r\n }\r\n catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n } else if (buttonIcon.classList.contains('menu-button-label')) {\r\n buttonIcon.textContent = isFullscreen ? '全画面モードの終了' : '全画面表示';\r\n }\r\n }\r\n }\r\n\r\n//#endregion\r\n\r\n//#region ナビゲータ\r\n\r\n _toggleNavigator(event) {\r\n this._viewer.toggleDisplayOfNavigator();\r\n }\r\n\r\n//#endregion\r\n\r\n//#region UI系\r\n\r\n/**\r\n * UIの表示を切り替えるイベントハンドラ\r\n * @param {MouseEvent} event イベント。\r\n */\r\n _toggleUI(event) {\r\n 'use strict';\r\n\r\n if (event.quick === false || this._isUILock === true) return;\r\n\r\n const container = document.getElementById('viewer-container');\r\n if (container.getAttribute('data-show-header') === 'true') {\r\n this._hideUI();\r\n }\r\n else {\r\n this._showUI();\r\n }\r\n }\r\n\r\n/**\r\n * UIを非表示にする。 \r\n */\r\n _hideUI() {\r\n 'use strict';\r\n\r\n if (this._isUILock === true) return;\r\n\r\n const uiElements = document.querySelectorAll('[data-auto-hide]');\r\n const uiLength = uiElements.length;\r\n\r\n for (let i = 0; i < uiLength; i = i + 1) {\r\n const uiElem = uiElements[i];\r\n if (uiElem.classList.contains('hover')) {\r\n setTimeout(this._hideUI.bind(this), 3000);\r\n return;\r\n }\r\n }\r\n\r\n for (let i = 0; i < uiLength; i = i + 1) {\r\n const uiElem = uiElements[i];\r\n\r\n uiElem.setAttribute('aria-hidden', true);\r\n if (uiElem.dataset.autoHide === 'hide-only') {\r\n const parent = document.querySelector('button[aria-controls=\"' + uiElem.id + '\"]');\r\n if (parent) {\r\n parent.setAttribute('aria-expanded', false);\r\n parent.classList.remove('hover');\r\n\r\n if (uiElem.id === 'sidebar-container') document.getElementById('viewer-container').classList.remove('show-sidebar');\r\n }\r\n }\r\n }\r\n\r\n document.getElementById('viewer-container').setAttribute('data-show-header', 'false');\r\n document.getElementById('navigator').setAttribute('data-show-header', 'false');\r\n }\r\n\r\n/**\r\n * UIを表示する。 \r\n */\r\n _showUI() {\r\n 'use strict';\r\n\r\n if (this._isUILock === true) return;\r\n\r\n const uiElements = document.querySelectorAll('[data-auto-hide=\"true\"]');\r\n const uiLength = uiElements.length;\r\n\r\n for (let i = 0; i < uiLength; i = i + 1) {\r\n const uiElem = uiElements[i];\r\n\r\n uiElem.setAttribute('aria-hidden', false);\r\n }\r\n\r\n document.getElementById('viewer-container').setAttribute('data-show-header', 'true');\r\n document.getElementById('navigator').setAttribute('data-show-header', 'true');\r\n }\r\n\r\n//#endregion\r\n\r\n//#region フィルター\r\n\r\n _contrastFilter(adjustment) {\r\n if (adjustment < -100 || adjustment > 100) {\r\n throw new Error('Contrast adjustment must be between -100 and 100.');\r\n }\r\n adjustment = adjustment / 100 + 1;\r\n const intercept = 128 * (1 - adjustment);\r\n\r\n const precomputedContrast = [];\r\n for (var i = 0; i < 256; i++) {\r\n precomputedContrast[i] = Math.floor(i * adjustment + intercept);\r\n }\r\n return function (context, callback) {\r\n var imgData = context.getImageData(\r\n 0, 0, context.canvas.width, context.canvas.height);\r\n var pixels = imgData.data;\r\n for (var i = 0; i < pixels.length; i += 4) {\r\n pixels[i] = precomputedContrast[pixels[i]];\r\n pixels[i + 1] = precomputedContrast[pixels[i + 1]];\r\n pixels[i + 2] = precomputedContrast[pixels[i + 2]];\r\n }\r\n context.putImageData(imgData, 0, 0);\r\n callback();\r\n };\r\n }\r\n\r\n _saturationFilter(adjustment) {\r\n if (adjustment < -100 || adjustment > 100) {\r\n throw new Error('Saturation adjustment must be between -100 and 100.');\r\n }\r\n adjustment += 100;\r\n adjustment = adjustment !== 0 ? adjustment / 100 : 0;\r\n\r\n const self = this;\r\n return function (context, callback) {\r\n const imgData = context.getImageData(0, 0, context.canvas.width, context.canvas.height);\r\n const pixels = imgData.data;\r\n for (let i = 0; i < pixels.length; i += 4) {\r\n const hsv = self._convertRGB2HSV(pixels[i], pixels[i + 1], pixels[i + 2]);\r\n hsv.s *= adjustment;\r\n\r\n const rgb = self._convertHSV2RGB(hsv.h, hsv.s, hsv.v);\r\n pixels[i] = rgb.r;\r\n pixels[i + 1] = rgb.g;\r\n pixels[i + 2] = rgb.b;\r\n }\r\n context.putImageData(imgData, 0, 0);\r\n callback();\r\n };\r\n }\r\n\r\n _convertRGB2HSV(r, g, b) {\r\n\r\n // RGBを0.0~1.0の浮動小数点モデルに変換する。\r\n r /= 255;\r\n g /= 255;\r\n b /= 255;\r\n\r\n const max = Math.max(r, g, b);\r\n const min = Math.min(r, g, b);\r\n\r\n const diff = max - min;\r\n let h = 0;\r\n let s = max === 0 ? 0 : diff / max;\r\n let v = max;\r\n\r\n if (diff > 0) {\r\n switch (max) {\r\n case r:\r\n h = (g - b) / diff;\r\n if (h < 0) h += 6;\r\n break;\r\n\r\n case g:\r\n h = (b - r) / diff + 2;\r\n break;\r\n\r\n case b:\r\n h = (r - g) / diff + 4;\r\n break;\r\n }\r\n h /= 6;\r\n }\r\n\r\n return {\r\n h: h,\r\n s: s,\r\n v: v\r\n };\r\n }\r\n\r\n _convertHSV2RGB(h, s, v) {\r\n let r, g, b;\r\n\r\n const i = Math.floor(h * 6);\r\n const f = h * 6 - i;\r\n\r\n switch (i) {\r\n\r\n case 0:\r\n r = v;\r\n g = v * (1 - (1 - f) * s);\r\n b = v * (1 - s);\r\n break;\r\n\r\n case 1:\r\n r = v * (1 - s * f);\r\n g = v;\r\n b = v * (1 - s);\r\n break;\r\n\r\n case 2:\r\n r = v * (1 - s);\r\n g = v;\r\n b = v * (1 - (1 - f) * s);\r\n break;\r\n\r\n case 3:\r\n r = v * (1 - s);\r\n g = v * (1 - s * f);\r\n b = v;\r\n break;\r\n\r\n case 4:\r\n r = v * (1 - (1 - f) * s);\r\n g = v * (1 - s);\r\n b = v;\r\n break;\r\n\r\n case 5:\r\n r = v;\r\n g = v * (1 - s);\r\n b = v * (1 - s * f);\r\n break;\r\n }\r\n\r\n return {\r\n r: Math.floor(255 * r),\r\n g: Math.floor(255 * g),\r\n b: Math.floor(255 * b)\r\n };\r\n }\r\n\r\n _createFilterSliders() {\r\n const self = this;\r\n const panels = document.getElementById('bottom-image-filter');\r\n const selectedFilter = document.querySelector('.image-filter[aria-selected=\"true\"]');\r\n this._filters.map(function (filter) {\r\n\r\n const filters = document.createElement('div');\r\n filters.id = filter.filterName + '-slider-panel';\r\n filters.classList.add('bottom-slider-panel');\r\n filters.setAttribute('aria-hidden', selectedFilter.getAttribute('aria-controls') !== filters.id);\r\n filters.setAttribute('role', 'tabpanel');\r\n\r\n const slider = document.createElement('input');\r\n slider.id = filter.filterName + '-slider';\r\n slider.classList.add('dialog-slider');\r\n slider.type = 'range';\r\n slider.min = filter.min;\r\n slider.max = filter.max;\r\n slider.step = filter.step || 1;\r\n slider.value = filter.defaultValue;\r\n\r\n const inputEventName = _userAgent === 'ie' || _userAgent === 'edge' ? 'change' : 'input';\r\n slider.addEventListener(inputEventName, self._updateFilter.bind(self), false);\r\n\r\n const resetButton = document.createElement('button');\r\n resetButton.classList.add('slider-button');\r\n resetButton.type = 'button';\r\n resetButton.dataset.effectType = filter.filterName;\r\n\r\n const i = document.createElement('i');\r\n i.classList.add('fas');\r\n i.classList.add('fa-sync-alt');\r\n\r\n resetButton.appendChild(i);\r\n filters.appendChild(slider);\r\n filters.appendChild(resetButton);\r\n\r\n resetButton.addEventListener('click', self._resetFilter.bind(self), false);\r\n\r\n panels.insertBefore(filters, panels.firstChild);\r\n });\r\n }\r\n\r\n _updateFilter() {\r\n\r\n var filters = [];\r\n if (this._timer !== null) clearTimeout(this._timer);\r\n\r\n setTimeout(function () {\r\n\r\n this._filters.map(function (filter) {\r\n if (filter.isAdd() === true) {\r\n filters.push(filter.processor());\r\n }\r\n });\r\n\r\n\r\n this._viewer.mainViewer.setFilterOptions({\r\n filters: {\r\n processors: filters\r\n },\r\n loadMode: 'sync'\r\n });\r\n\r\n }.bind(this), 50);\r\n }\r\n\r\n _resetFilter(event) {\r\n const id = event.currentTarget.dataset.effectType;\r\n this._filters.map(function (filter) {\r\n if (filter.filterName === id) {\r\n var filterInput = document.getElementById(filter.filterName + '-slider');\r\n filterInput.value = filter.defaultValue || 0;\r\n }\r\n });\r\n this._updateFilter();\r\n }\r\n\r\n _resetFilters(event) {\r\n if (_userAgent !== 'ie') {\r\n this._filters.map(function (filter) {\r\n if (filter.isSlider) {\r\n var filterInput = document.getElementById(filter.filterName + '-slider');\r\n filterInput.value = filter.defaultValue || 0;\r\n }\r\n else if (filter.isAdd()) {\r\n const button = document.querySelector('.filter-button[data-effect-type=' + filter.filterName + ']');\r\n if (button) button.click();\r\n }\r\n });\r\n this._updateFilter();\r\n }\r\n\r\n this._viewer.setRotation(0, true);\r\n }\r\n\r\n _debounce(func, intervel) {\r\n\r\n if (this._timer !== null) clearTimeout(this._timer);\r\n this._timer = setTimeout(function () {\r\n func.call();\r\n }, intervel);\r\n }\r\n\r\n\r\n//#region パブリックメソッド\r\n\r\n//#region ページ関係\r\n\r\n/**\r\n * 前のページへ移動します。 \r\n */\r\n goPrevPage() {\r\n\r\n if (this._isUILock) return;\r\n\r\n const prevPage = this._viewer.getCurrentPage() - 1;\r\n this._viewer.goToPage(prevPage, true);\r\n }\r\n\r\n/**\r\n * 前のページへ移動します。 \r\n */\r\n goNextPage() {\r\n\r\n if (this._isUILock) return;\r\n\r\n const nextPage = this._viewer.getCurrentPage() + 1;\r\n this._viewer.goToPage(nextPage, true);\r\n }\r\n\r\n//#endregion\r\n\r\n//#region 回転系\r\n\r\n/**\r\n * 画像を回転させます。\r\n * @param {Number} degrees 設定する回転角。\r\n * @param {Boolean} [raiseEvent=true] イベントを発火させるか否か。\r\n */\r\n setImageRotation(degrees, raiseEvent) {\r\n const needRaiseEvent = raiseEvent === true;\r\n this._viewer.setRotation(degrees, needRaiseEvent);\r\n }\r\n\r\n//#endregion\r\n\r\n//#region フルスクリーン\r\n\r\n/**\r\n * フルスクリーン表示を切り替えます。\r\n */\r\n toggleFullscreen() {\r\n\r\n if (this._fullScreenButton === undefined || this._fullScreenButton === null) throw new Error('この端末ではフルスクリーン表示がサポートされていません。');\r\n\r\n this._viewer.toggleFullScreen();\r\n }\r\n\r\n//#endregion\r\n\r\n imageAdjustment(event) {\r\n\r\n const target = event.currentTarget;\r\n const isPressed = target.getAttribute('aria-pressed') === 'true';\r\n target.setAttribute('aria-pressed', !isPressed);\r\n\r\n this._updateFilter();\r\n }\r\n}\r\n\r\nwindow.RoDAViewer = RoDAViewer;\r\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var core = module.exports = { version: '2.6.11' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","module.exports = false;\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n","'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative($replace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return $replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar sameValue = require('./_same-value');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative($search, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\n\nvar isRegExp = require('./_is-regexp');\nvar anObject = require('./_an-object');\nvar speciesConstructor = require('./_species-constructor');\nvar advanceStringIndex = require('./_advance-string-index');\nvar toLength = require('./_to-length');\nvar callRegExpExec = require('./_regexp-exec-abstract');\nvar regexpExec = require('./_regexp-exec');\nvar fails = require('./_fails');\nvar $min = Math.min;\nvar $push = [].push;\nvar $SPLIT = 'split';\nvar LENGTH = 'length';\nvar LAST_INDEX = 'lastIndex';\nvar MAX_UINT32 = 0xffffffff;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return $split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy[LAST_INDEX];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);\n };\n } else {\n internalSplit = $split;\n }\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = defined(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n});\n","/*!\n * Lazy Load - jQuery plugin for lazy loading images\n *\n * Copyright (c) 2007-2015 Mika Tuupola\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n *\n * Project home:\n * http://www.appelsiini.net/projects/lazyload\n *\n * Version: 1.9.7\n *\n */\n\n(function($, window, document, undefined) {\n var $window = $(window);\n\n $.fn.lazyload = function(options) {\n var elements = this;\n var $container;\n var settings = {\n threshold : 0,\n failure_limit : 0,\n event : \"scroll\",\n effect : \"show\",\n container : window,\n data_attribute : \"original\",\n skip_invisible : false,\n appear : null,\n load : null,\n placeholder : \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC\"\n };\n\n function update() {\n var counter = 0;\n\n elements.each(function() {\n var $this = $(this);\n if (settings.skip_invisible && !$this.is(\":visible\")) {\n return;\n }\n if ($.abovethetop(this, settings) ||\n $.leftofbegin(this, settings)) {\n /* Nothing. */\n } else if (!$.belowthefold(this, settings) &&\n !$.rightoffold(this, settings)) {\n $this.trigger(\"appear\");\n /* if we found an image we'll load, reset the counter */\n counter = 0;\n } else {\n if (++counter > settings.failure_limit) {\n return false;\n }\n }\n });\n\n }\n\n if(options) {\n /* Maintain BC for a couple of versions. */\n if (undefined !== options.failurelimit) {\n options.failure_limit = options.failurelimit;\n delete options.failurelimit;\n }\n if (undefined !== options.effectspeed) {\n options.effect_speed = options.effectspeed;\n delete options.effectspeed;\n }\n\n $.extend(settings, options);\n }\n\n /* Cache container as jQuery as object. */\n $container = (settings.container === undefined ||\n settings.container === window) ? $window : $(settings.container);\n\n /* Fire one scroll event per scroll. Not one scroll event per image. */\n if (0 === settings.event.indexOf(\"scroll\")) {\n $container.bind(settings.event, function() {\n return update();\n });\n }\n\n this.each(function() {\n var self = this;\n var $self = $(self);\n\n self.loaded = false;\n\n /* If no src attribute given use data:uri. */\n if ($self.attr(\"src\") === undefined || $self.attr(\"src\") === false) {\n if ($self.is(\"img\")) {\n $self.attr(\"src\", settings.placeholder);\n }\n }\n\n /* When appear is triggered load original image. */\n $self.one(\"appear\", function() {\n if (!this.loaded) {\n if (settings.appear) {\n var elements_left = elements.length;\n settings.appear.call(self, elements_left, settings);\n }\n $(\"\")\n .bind(\"load\", function() {\n\n var original = $self.attr(\"data-\" + settings.data_attribute);\n $self.hide();\n if ($self.is(\"img\")) {\n $self.attr(\"src\", original);\n } else {\n $self.css(\"background-image\", \"url('\" + original + \"')\");\n }\n $self[settings.effect](settings.effect_speed);\n\n self.loaded = true;\n\n /* Remove image from array so it is not looped next time. */\n var temp = $.grep(elements, function(element) {\n return !element.loaded;\n });\n elements = $(temp);\n\n if (settings.load) {\n var elements_left = elements.length;\n settings.load.call(self, elements_left, settings);\n }\n })\n .attr(\"src\", $self.attr(\"data-\" + settings.data_attribute));\n }\n });\n\n /* When wanted event is triggered load original image */\n /* by triggering appear. */\n if (0 !== settings.event.indexOf(\"scroll\")) {\n $self.bind(settings.event, function() {\n if (!self.loaded) {\n $self.trigger(\"appear\");\n }\n });\n }\n });\n\n /* Check if something appears when window is resized. */\n $window.bind(\"resize\", function() {\n update();\n });\n\n /* With IOS5 force loading images when navigating with back button. */\n /* Non optimal workaround. */\n if ((/(?:iphone|ipod|ipad).*os 5/gi).test(navigator.appVersion)) {\n $window.bind(\"pageshow\", function(event) {\n if (event.originalEvent && event.originalEvent.persisted) {\n elements.each(function() {\n $(this).trigger(\"appear\");\n });\n }\n });\n }\n\n /* Force initial check if images should appear. */\n $(document).ready(function() {\n update();\n });\n\n return this;\n };\n\n /* Convenience methods in jQuery namespace. */\n /* Use as $.belowthefold(element, {threshold : 100, container : window}) */\n\n $.belowthefold = function(element, settings) {\n var fold;\n\n if (settings.container === undefined || settings.container === window) {\n fold = (window.innerHeight ? window.innerHeight : $window.height()) + $window.scrollTop();\n } else {\n fold = $(settings.container).offset().top + $(settings.container).height();\n }\n\n return fold <= $(element).offset().top - settings.threshold;\n };\n\n $.rightoffold = function(element, settings) {\n var fold;\n\n if (settings.container === undefined || settings.container === window) {\n fold = $window.width() + $window.scrollLeft();\n } else {\n fold = $(settings.container).offset().left + $(settings.container).width();\n }\n\n return fold <= $(element).offset().left - settings.threshold;\n };\n\n $.abovethetop = function(element, settings) {\n var fold;\n\n if (settings.container === undefined || settings.container === window) {\n fold = $window.scrollTop();\n } else {\n fold = $(settings.container).offset().top;\n }\n\n return fold >= $(element).offset().top + settings.threshold + $(element).height();\n };\n\n $.leftofbegin = function(element, settings) {\n var fold;\n\n if (settings.container === undefined || settings.container === window) {\n fold = $window.scrollLeft();\n } else {\n fold = $(settings.container).offset().left;\n }\n\n return fold >= $(element).offset().left + settings.threshold + $(element).width();\n };\n\n $.inviewport = function(element, settings) {\n return !$.rightoffold(element, settings) && !$.leftofbegin(element, settings) &&\n !$.belowthefold(element, settings) && !$.abovethetop(element, settings);\n };\n\n /* Custom selectors for your convenience. */\n /* Use as $(\"img:below-the-fold\").something() or */\n /* $(\"img\").filter(\":below-the-fold\").something() which is faster */\n\n $.extend($.expr[\":\"], {\n \"below-the-fold\" : function(a) { return $.belowthefold(a, {threshold : 0}); },\n \"above-the-top\" : function(a) { return !$.belowthefold(a, {threshold : 0}); },\n \"right-of-screen\": function(a) { return $.rightoffold(a, {threshold : 0}); },\n \"left-of-screen\" : function(a) { return !$.rightoffold(a, {threshold : 0}); },\n \"in-viewport\" : function(a) { return $.inviewport(a, {threshold : 0}); },\n /* Maintain BC for couple of versions. */\n \"above-the-fold\" : function(a) { return !$.belowthefold(a, {threshold : 0}); },\n \"right-of-fold\" : function(a) { return $.rightoffold(a, {threshold : 0}); },\n \"left-of-fold\" : function(a) { return !$.rightoffold(a, {threshold : 0}); }\n });\n\n})(jQuery, window, document);\n","module.exports = jQuery;"],"sourceRoot":""}