1"use strict"; 2Object.defineProperty(exports, "__esModule", { value: true }); 3exports.GalleryViewSingleold = exports.GalleryViewSingle = exports.GalleryImage = exports.GalleryViewMulti = exports.GalleryView = void 0; 4var tslib_1 = require("tslib"); 5var React = require("react"); 6var EdupageAppData_1 = require("../../data/EdupageAppData"); 7var LoginUtils_1 = require("../../data/LoginUtils"); 8var ViewLoadingContainer_1 = require("../../components/ViewLoadingContainer"); 9var OfflineView_1 = require("../OfflineView"); 10var EdupageApp_1 = require("../../EdupageApp"); 11var AppCommandsProvider_1 = require("../../data/AppCommandsProvider"); 12var AppReactUtils_1 = require("../../utils/AppReactUtils"); 13var applongpressitem_1 = require("../../components/applongpressitem"); 14var AppContextToolbar_1 = require("../../components/AppContextToolbar"); 15var AppNative_1 = require("../../data/AppNative"); 16var AscPhotoSwipe_1 = require("../../../../../elearning/pics/jsw/AscPhotoSwipe"); 17importCss('/photos/pics/css/photos.css'); 18importCss('/photos/pics/css/photoswipe.css'); 19importCss('/photos/pics/css/photoswipe/default-skin.css'); 20importLegacyJsLib('/skin/pics/js/unveil.js'); 21importLegacyJsLib('/elearning/pics/js/etest/utilsETest.js'); 22importLegacyJsLib('/photos/pics/js/photoswipe.js'); 23importLegacyJsLib('/photos/pics/js/photoswipe-ui-default.js'); 24importLegacyJsLib('/photos/pics/js/edupageAlbum2.js'); 25function GalleryView(props) { 26 var photosData = null; 27 if (props.photosData) { 28 photosData = props.photosData; 29 } 30 else { 31 var loggedUser = LoginUtils_1.LoginUtils.getLoggedUserObj(); 32 var url0 = '/photos/?jwgc=EdupageGalleryViewer&akcia=getData'; 33 var url = Edupage.buildMobileUrl(url0, loggedUser ? loggedUser.edupage : null, loggedUser); 34 var postData = { 35 photo: props.albumid, 36 gallery: props.galleryid, 37 fileid: props.fileid 38 }; 39 if (props.files) { 40 postData['files'] = props.files.join(';'); 41 } 42 var photosData0 = EdupageAppData_1.EdupageAppData.useOnlineData(url, postData)[0]; 43 photosData = photosData0; 44 } 45 React.useEffect(function () { 46 EdupageApp_1.EdupageApp.inst.setViewTitle(' ', props.viewid); 47 }, []); 48 if (photosData.status == 'offline') { 49 return (React.createElement(OfflineView_1.OfflineView, null)); 50 } 51 if (photosData.status != 'loaded') { 52 return (React.createElement(ViewLoadingContainer_1.ViewLoadingContainer, null)); 53 } 54 return (React.createElement("div", { className: "app-view-outer0" }, props.showSinglePhoto 55 ? React.createElement(GalleryViewSingle, tslib_1.__assign({}, props, { photosData: photosData })) 56 : React.createElement(GalleryViewMulti, tslib_1.__assign({}, props, { photosData: photosData })))); 57} 58exports.GalleryView = GalleryView; 59function GalleryViewMulti(props) { 60 var _this = this; 61 var _a, _b, _c, _d; 62 var mainElemRef = React.useRef(null); 63 var photosData = props.photosData; 64 var photos = ((_a = photosData === null || photosData === void 0 ? void 0 : photosData.data) === null || _a === void 0 ? void 0 : _a.photos) || []; 65 var _e = AppReactUtils_1.AppReactUtils.useRefState({}), unveiledImages = _e[0], setUnveiledImages = _e[1], unveiledImagesRef = _e[2]; 66 var _f = AppReactUtils_1.AppReactUtils.useRefState(0), refreshCounter = _f[0], setRefreshCounter = _f[1], refreshCounterRef = _f[2]; 67 var wasScrolledRef = React.useRef(false); 68 var _g = AppReactUtils_1.AppReactUtils.useRefState({}), checkedItems = _g[0], setCheckedItems = _g[1], checkedItemsRef = _g[2]; 69 var _h = AppReactUtils_1.AppReactUtils.useRefState(false), checkMode = _h[0], setCheckMode = _h[1], checkModeRef = _h[2]; 70 var nativeAppVersion = AppReactUtils_1.AppReactUtils.useAsyncMemo(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { 71 return tslib_1.__generator(this, function (_a) { 72 switch (_a.label) { 73 case 0: return [4, EdupageAppData_1.EdupageAppData.getNativeAppVersion()]; 74 case 1: return [2, _a.sent()]; 75 } 76 }); 77 }); }, [], '2.1.0'); 78 var numToUnveilAtStart = 9; 79 React.useEffect(function () { 80 EdupageApp_1.EdupageApp.inst.setViewTitle(' ', props.viewid); 81 var $scrollParent = $(mainElemRef.current).scrollParent(); 82 function handleScroll(e) {
83 var $scrollContainer = orientation == 'landscape' ? $(mainElemRef.current) : $scrollParent; 84 var orientation = $(window).width() > $(window).height() ? 'landscape' : 'portrait'; 85 var wndDim = orientation == 'landscape' ? $(window).width() : $(window).height(); 86 var st = orientation == 'landscape' ? $scrollContainer.scrollLeft() : $scrollContainer.scrollTop(); 87 var po = $scrollContainer.offset(); 88 var unveilToY = st + wndDim * 3; 89 var toUnveil = {}; 90 var somethingNew = false; 91 $(mainElemRef.current).find('img').each(function () { 92 var $this = $(this); 93 var o = $this.offset(); 94 var pos = orientation == 'landscape' ? o.left + st - po.left : o.top + st - po.top; 95 if (pos <= unveilToY) { 96 var ind = parseInt($this.attr('data-ind')); 97 toUnveil[$this.attr('data-ind')] = true; 98 if (ind >= numToUnveilAtStart && !unveiledImagesRef.current[ind]) { 99 somethingNew = true; 100 } 101 } 102 }); 103 if (somethingNew) { 104 setUnveiledImages(toUnveil); 105 } 106 if (e) { 107 wasScrolledRef.current = true; 108 } 109 } 110 function handleResize() { 111 setRefreshCounter(refreshCounterRef.current + 1); 112 } 113 AppCommandsProvider_1.AppCommandsProvider.get().setStatusbarColor("#000000"); 114 handleScroll(null); 115 $(window).on('resize', handleResize); 116 $scrollParent.on('scroll', handleScroll); 117 $(mainElemRef.current).on('scroll', handleScroll); 118 return function () { 119 $scrollParent.off('scroll', handleScroll); 120 $(window).off('resize', handleResize); 121 $(mainElemRef.current).off('scroll', handleScroll); 122 }; 123 }, []); 124 React.useEffect(function () { 125 function handleGotoIndex() { 126 var _a; 127 if (wasScrolledRef.current) 128 return; 129 if (!((_a = photosData === null || photosData === void 0 ? void 0 : photosData.data) === null || _a === void 0 ? void 0 : _a.index)) 130 return; 131 if ($(mainElemRef.current).closest('body').length == 0) 132 return; 133 var elem = $(mainElemRef.current).find('.photos-multigal-item[data-ind="' + photosData.data.index + '"]'); 134 if (!elem.length) 135 return; 136 ETestUtils.ensureElementInFocusRect(elem, null, { 137 scrollContainer: elem.scrollParent(), 138 offsetTop: $(window).height() * 0.3, 139 offsetBottom: $(window).height() * 0.3, 140 animate: true 141 }); 142 } 143 function handleImageLoaded(e) { 144 if (initTimeout) { 145 clearTimeout(initTimeout); 146 initTimeout = null; 147 } 148 handleGotoIndex(); 149 } 150 var initTimeout = setTimeout(function () { 151 handleGotoIndex(); 152 }, 100); 153 $(window).on('EdupageAppGalleryImageLoaded', handleImageLoaded); 154 return function () { 155 if (initTimeout) { 156 clearTimeout(initTimeout); 157 initTimeout = null; 158 } 159 $(window).off('EdupageAppGalleryImageLoaded', handleImageLoaded); 160 }; 161 }, [(_b = photosData === null || photosData === void 0 ? void 0 : photosData.data) === null || _b === void 0 ? void 0 : _b.index, photosData === null || photosData === void 0 ? void 0 : photosData.data, unveiledImages]); 162 React.useEffect(function () { 163 if (wasScrolledRef.current) { 164 wasScrolledRef.current = false; 165 } 166 }, [photosData.data]); 167 function photoClick(ind) { 168 if (checkModeRef.current) { 169 var nv = $.extend({}, checkedItemsRef.current); 170 if (checkedItemsRef.current[ind]) { 171 delete nv[ind]; 172 } 173 else { 174 nv[ind] = true; 175 } 176 setCheckedItems(nv); 177 return; 178 } 179 var nprops = tslib_1.__assign(tslib_1.__assign({}, props), { photosData: $.extend(true, {}, photosData), gotoIndex: parseInt(ind), showSinglePhoto: true, noTransitions: true }); 180 EdupageApp_1.EdupageApp.pushReactComponentView("/app/pics/jsw/views/noticeboard/GalleryView.js", nprops); 181 } 182 function photoLongPress(ind) { 183 var nv = $.extend({}, checkedItemsRef.current); 184 if (checkedItemsRef.current[ind]) { 185 delete nv[ind]; 186 } 187 else { 188 nv[ind] = true; 189 } 190 setCheckedItems(nv); 191 setCheckMode(true); 192 } 193 function clearSelectedItems() { 194 setCheckedItems({}); 195 setCheckMode(false); 196 } 197 function downloadSelected() { 198 var _a; 199 var toDownload = photos.filter(function (r, ind) { return !!checkedItems[ind]; }).map(function (r) { return ({ url: ETestUtils.fixIOSSrc((r.hdsrc ? r.hdsrc : r.src).toString().replace('/cloud?', '/clouddownload?')), name: r.name || "photo.jpg" }); }); 200 (_a = AppNative_1.AppNative.downloadImages) === null || _a === void 0 ? void 0 : _a.call(AppNative_1.AppNative, toDownload); 201 } 202 function allCheckedChange(e) { 203 var nv = {}; 204 if (e.currentTarget.checked) { 205 for (var i = 0; i < photos.length; i++) { 206 nv[i] = true; 207 } 208 } 209 setCheckedItems(nv); 210 } 211 function shareSelected() { 212 var _a; 213 var toDownload = photos.filter(function (r, ind) { return !!checkedItems[ind]; }).map(function (r) { return ({ url: ETestUtils.fixIOSSrc((r.hdsrc ? r.hdsrc : r.src).toString().replace('/cloud?', '/clouddownload?')), name: r.name || "photo.jpg" }); }); 214 (_a = AppNative_1.AppNative.shareFiles) === null || _a === void 0 ? void 0 : _a.call(AppNative_1.AppNative, toDownload); 215 } 216 var orientation = $(window).width() > $(window).height() ? 'landscape' : 'portrait'; 217 var numSelectedItems = Object.keys(checkedItems).length; 218 return (React.createElement("div", { className: "app-view-outer photos-multigal " + orientation, ref: mainElemRef }, 219 (numSelectedItems > 0 || checkModeRef.current) && (React.createElement(AppContextToolbar_1.AppContextToolbar, { onBackClick: clearSelectedItems, viewid: props.viewid }, 220 React.createElement("div", { className: "app-header-actions flex" }, 221 React.createElement("div", { className: "app-header-text" }, 222 React.createElement("span", null, numSelectedItems)), 223 MobileAppBridge.isIOS() || MobileAppBridge.compareVersion(nativeAppVersion, '2.2.0') < 0 224 ? null 225 : React.createElement(React.Fragment, null, 226 React.createElement("a", tslib_1.__assign({ className: "app-header-action", title: ls(3644), "aria-label": ls(3644) }, tapOrClick(downloadSelected)), 227 React.createElement("i", { className: "fa fa-fw fa-download", "aria-hidden": "true" })), 228 React.createElement("a", tslib_1.__assign({ className: "app-header-action", title: ls(15067), "aria-label": ls(15067) }, tapOrClick(shareSelected), { style: { marginRight: '-8px' } }), 229 React.createElement("i", { className: "material-icons", "aria-hidden": "true" }, "share")))), 230 React.createElement("div", { style: { position: 'absolute', left: '-55px', top: '55px', backgroundColor: 'rgba(34, 47, 62, 0.3)', padding: '6px 16px', borderRadius: '0 0 16px 0' } }, 231 React.createElement("label", { className: 'app-block-label-check' }, 232 React.createElement("input", { type: "checkbox", checked: numSelectedItems == photos.length, onChange: allCheckedChange }), 233 ls(4288))))), 234 React.createElement("div", { className: "photos-multigal-hero" }, 235 React.createElement("h1", { className: "photos-multigal-title" }, undoet(((_c = photosData.data) === null || _c === void 0 ? void 0 : _c.galleryTitle) || "")), 236 React.createElement("div", { className: "photos-multigal-subtitle" }, undoet(((_d = photosData.data) === null || _d === void 0 ? void 0 : _d.galleryDesc) || ""))), 237 React.createElement("div", { className: "photos-multigal-list" }, photos.map(function (r, ind) { 238 return (React.createElement(GalleryImage, tslib_1.__assign({ row: r, unveiledImages: unveiledImages }, tapOrClick(photoClick), { index: ind, key: ind, numToUnveilAtStart: numToUnveilAtStart, onLongPress: photoLongPress, className: checkedItems[ind] ? 'selected' : '' }))); 239 })))); 240} 241exports.GalleryViewMulti = GalleryViewMulti; 242function GalleryImage(props) { 243 var _a = AppReactUtils_1.AppReactUtils.useRefState(false), isLoaded = _a[0], setIsLoaded = _a[1], isLoadedRef = _a[2]; 244 var _b = AppReactUtils_1.AppReactUtils.useRefState(0), retries = _b[0], setNumRetries = _b[1], numRetriesRef = _b[2]; 245 var _c = AppReactUtils_1.AppReactUtils.useRefState(false), isBroken = _c[0], setIsBroken = _c[1], isBrokenRef = _c[2]; 246 var _d = AppReactUtils_1.AppReactUtils.useRefState(false), forceIsUnveiled = _d[0], setForceIsUnveiled = _d[1], forceIsUnveiledRef = _d[2]; 247 var r = props.row; 248 var ind = props.index; 249 var unveiledImages = props.unveiledImages; 250 var isUnveiled = ind < props.numToUnveilAtStart || unveiledImages[ind] || forceIsUnveiled; 251 React.useEffect(function () { 252 function handleBrokenImageLoad() { 253 if (isBrokenRef.current && !isLoaded) { 254 setIsBroken(false); 255 setNumRetries(0); 256 } 257 } 258 $(window).on('EdupageAppGalleryImageLoaded', handleBrokenImageLoad); 259 return function () { 260 $(window).off('EdupageAppGalleryImageLoaded', handleBrokenImageLoad); 261 }; 262 }, []); 263 function onImageLoaded(e) { 264 var ind = $(e.currentTarget).attr('data-ind'); 265 $(e.currentTarget).closest('.photos-multigal-item').toggleClass('photos-multigal-imageLoading', false); 266 setIsLoaded(true); 267 setIsBroken(false); 268 if (forceIsUnveiledRef.current) { 269 $(window).trigger('EdupageAppGalleryImageLoaded'); 270 } 271 } 272 function imageError(e) { 273 var ind = $(e.currentTarget).attr('data-ind'); 274 if (!$(e.currentTarget).attr('src')) 275 return; 276 setTimeout(function () { 277 if (numRetriesRef.current < 4) { 278 setNumRetries(numRetriesRef.current + 1); 279 } 280 else { 281 setIsBroken(true); 282 } 283 }, 100); 284 } 285 function photoClick() { 286 var _a; 287 if (isBroken) { 288 setIsBroken(false); 289 setNumRetries(0); 290 setForceIsUnveiled(true); 291 } 292 else { 293 (_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props, ind); 294 } 295 } 296 function photoLongPress(e) { 297 var _a; 298 var ind = $(e.currentTarget).attr('data-ind'); 299 (_a = props.onLongPress) === null || _a === void 0 ? void 0 : _a.call(props, ind); 300 } 301 return (React.createElement(applongpressitem_1.AppLongPressItem, tslib_1.__assign({ className: "photos-multigal-item " + (isLoaded ? '' : 'photos-multigal-imageLoading') + (props.className ? ' ' + props.className : ''), "data-ind": ind }, tapOrClick(photoClick), { key: ind, onLongPress: photoLongPress }), 302 isBroken 303 ? React.createElement("i", { className: "material-icons" }, "cloud_off") 304 : React.createElement("img", { src: isUnveiled ? (r.hdsrc ? r.hdsrc : r.src) : null, alt: "", onLoad: onImageLoaded, "data-ind": ind, onError: imageError, key: retries }), 305 r.title ? React.createElement("div", { className: "photos-multigal-item-text" }, r.title) : '')); 306} 307exports.GalleryImage = GalleryImage; 308function GalleryViewSingle(props) { 309 var _a; 310 var mainElemRef = React.useRef(null); 311 var photosData = props.photosData; 312 if (photosData.status == 'offline') { 313 return (React.createElement(OfflineView_1.OfflineView, null)); 314 } 315 if (photosData.status != 'loaded') { 316 return (React.createElement(ViewLoadingContainer_1.ViewLoadingContainer, null)); 317 } 318 function closeClick() { 319 EdupageApp_1.EdupageApp.popView(); 320 } 321 return (React.createElement("div", { className: "app-view-outer", ref: mainElemRef }, 322 React.createElement(AscPhotoSwipe_1.AscPhotoSwipe, tslib_1.__assign({}, photosData.data, { index: props.gotoIndex || ((_a = photosData.data) === null || _a === void 0 ? void 0 : _a.index) || 0, onclose: closeClick })))); 323} 324exports.GalleryViewSingle = GalleryViewSingle; 325function GalleryViewSingleold(props) { 326 var _a, _b, _c, _d, _e, _f; 327 var mainElemRef = React.useRef(null); 328 var photosData = props.photosData; 329 var _g = AppReactUtils_1.AppReactUtils.useRefState(null), currentItem = _g[0], setCurrentItem = _g[1], currentItemRef = _g[2]; 330 React.useEffect(function () { 331 var _a; 332 if (photosData.data) { 333 var photos = photosData.data.photos; 334 var items = []; 335 for (var i = 0; i < photos.length; i++) { 336 var photo = photos[i]; 337 items.push({ 338 src: photo.hdsrc ? photo.hdsrc : photo.src, 339 title: (photo.title ? '' + photo.title : props.albumid == 'timeline' ? '' : (_a = photosData.data) === null || _a === void 0 ? void 0 : _a.galleryDesc), 340 w: photo.width ? photo.width : 1200, 341 h: photo.height ? photo.height : 800 342 }); 343 } 344 var gallery = new PhotoSwipe(mainElemRef.current, PhotoSwipeUI_Default, items, { 345 index: props.gotoIndex || 0, 346 closeOnScroll: false, 347 closeOnVerticalDrag: false, 348 history: false, 349 tapToClose: false, 350 clickToCloseNonZoomable: false, 351 fullscreenEl: false, 352 closeEl: false, 353 shareEl: false, 354 pinchToClose: false, 355 loop: false 356 }); 357 gallery.init(); 358 setTimeout(function () { 359 AppCommandsProvider_1.AppCommandsProvider.get().setStatusbarColor("#000000"); 360 }, 150); 361 gallery.listen('beforeChange', function () { 362 setCurrentItem(gallery.currItem); 363 }); 364 if (!currentItemRef.current) { 365 setCurrentItem(items[props.gotoIndex || 0]); 366 } 367 } 368 EdupageApp_1.EdupageApp.inst.setViewOtherData({ additionalCssClass: 'GalleryViewSingle' }, props.viewid); 369 return function () { 370 if (gallery) { 371 gallery.destroy(); 372 } 373 ; 374 }; 375 }, [photosData.data]); 376 if (photosData.status == 'offline') { 377 return (React.createElement(OfflineView_1.OfflineView, null)); 378 } 379 if (photosData.status != 'loaded') { 380 return (React.createElement(ViewLoadingContainer_1.ViewLoadingContainer, null)); 381 } 382 function closeClick() { 383 EdupageApp_1.EdupageApp.popView(); 384 } 385 function shareClick(e) { 386 var _a, _b, _c, _d, _e; 387 var toDownload = [{ 388 url: ETestUtils.fixIOSSrc(((_a = currentItemRef.current) === null || _a === void 0 ? void 0 : _a.fileSrc) ? (_b = currentItemRef.current) === null || _b === void 0 ? void 0 : _b.fileSrc : (_c = currentItemRef.current) === null || _c === void 0 ? void 0 : _c.src) || "", 389 name: ((_d = currentItemRef.current) === null || _d === void 0 ? void 0 : _d.name) || "photo.jpg" 390 }]; 391 (_e = AppNative_1.AppNative.shareFiles) === null || _e === void 0 ? void 0 : _e.call(AppNative_1.AppNative, toDownload); 392 } 393 return (React.createElement("div", { className: "app-view-outer" }, 394 React.createElement("div", { className: "pswp", role: "dialog", "aria-hidden": "true", ref: mainElemRef }, 395 React.createElement("div", { className: "pswp__bg" }), 396 React.createElement("div", { className: "pswp__scroll-wrap" }, 397 React.createElement("div", { className: "pswp__container" }, 398
398 React.createElement("div", { className: "pswp__item" }), 399 React.createElement("div", { className: "pswp__item" }), 400 React.createElement("div", { className: "pswp__item" })), 401 React.createElement("div", { className: "pswp__ui pswp__ui--hidden" }, 402 React.createElement("div", { className: "pswp__top-bar nobtnbg galleryView mobileGalleryView" }, 403 React.createElement("div", { className: "pswp__counter" }), 404 React.createElement("button", { className: "pswp__button pswp__button--close", title: ls(1567) + ' (Esc)', "aria-label": ls(1567) + ' (Esc)' }, 405 React.createElement("i", { className: "fa fa-fw fa-close", "aria-hidden": "true" })), 406 React.createElement("button", { className: "pswp__button pswp__button--share", title: "Share", style: { display: 'none' } }), 407 React.createElement("button", { className: "pswp__button pswp__button--fs", title: ls(8343), "aria-label": ls(8343) }, 408 React.createElement("i", { className: "material-icons", "aria-hidden": "true" }, "fullscreen")), 409 React.createElement("button", { className: "pswp__button pswp__button--zoom", title: ls(10625), "aria-label": ls(10625) }, 410 React.createElement("i", { className: "fa fa-fw fa-search-plus", "aria-hidden": "true" })), 411 React.createElement("a", { href: ETestUtils.fixIOSSrc(((((_a = currentItemRef.current) === null || _a === void 0 ? void 0 : _a.fileSrc) ? (_b = currentItemRef.current) === null || _b === void 0 ? void 0 : _b.fileSrc : (_c = currentItemRef.current) === null || _c === void 0 ? void 0 : _c.src) || "").toString().replace('/cloud?', '/clouddownloadimg?')), target: "_blank", className: "pswp__button", title: ls(3644), "aria-label": ls(3644), style: { background: 'none', color: '#fff' } }, 412 React.createElement("i", { className: "fa fa-fw fa-download", "aria-hidden": "true" })), 413 MobileAppBridge.isActive() && !MobileAppBridge.isIOS() && (React.createElement("a", tslib_1.__assign({ "data-url": ETestUtils.fixIOSSrc(((((_d = currentItemRef.current) === null || _d === void 0 ? void 0 : _d.fileSrc) ? (_e = currentItemRef.current) === null || _e === void 0 ? void 0 : _e.fileSrc : (_f = currentItemRef.current) === null || _f === void 0 ? void 0 : _f.src) || "").toString().replace('/cloud?', '/clouddownloadimg?')), className: "pswp__button", title: ls(3644), "aria-label": ls(3644), style: { background: 'none', color: '#fff' } }, tapOrClick(shareClick)), 414 React.createElement("i", { className: "material-icons", "aria-hidden": "true" }, "share"))), 415 React.createElement("div", { className: "pswp__preloader" }, 416 React.createElement("div", { className: "pswp__preloader__icn" }, 417 React.createElement("div", { className: "pswp__preloader__cut" }, 418 React.createElement("div", { className: "pswp__preloader__donut" }))))), 419 React.createElement("div", { className: "pswp__share-modal pswp__share-modal--hidden pswp__single-tap" }, 420 React.createElement("div", { className: "pswp__share-tooltip" })), 421 React.createElement("button", { className: "pswp__button pswp__button--arrow--left", title: "Previous (arrow left)" }), 422 React.createElement("button", { className: "pswp__button pswp__button--arrow--right", title: "Next (arrow right)" }), 423 React.createElement("div", { className: "pswp__caption" }, 424 React.createElement("div", { className: "pswp__caption__center" }))))), 425 React.createElement("a", tslib_1.__assign({ className: "app-header-action app-global-goback" }, tapOrClick(closeClick)), 426 React.createElement("i", { className: "material-icons" }, ertl('arrow_back', 'arrow_forward'))))); 427} 428exports.GalleryViewSingleold = GalleryViewSingleold;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.