@progress/telerik-jquery-report-viewer 25.25.211 → 26.25.521

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/accessibility.js +22 -64
  3. package/dist/cjs/aiPrompt.js +311 -0
  4. package/dist/cjs/base-component.js +8 -11
  5. package/dist/cjs/binder.js +12 -12
  6. package/dist/cjs/command.js +44 -25
  7. package/dist/cjs/commandSet.js +78 -53
  8. package/dist/cjs/components/button.js +41 -0
  9. package/dist/cjs/components/toggle-button.js +47 -0
  10. package/dist/cjs/constants.js +22 -0
  11. package/dist/cjs/documentMapArea.js +114 -93
  12. package/dist/cjs/event-emitter.js +2 -8
  13. package/dist/cjs/history.js +13 -12
  14. package/dist/cjs/index.js +4 -12
  15. package/dist/cjs/mainMenu.js +38 -28
  16. package/dist/cjs/mem-storage.js +7 -13
  17. package/dist/cjs/notificationService.js +128 -0
  18. package/dist/cjs/parameterValidators.js +26 -25
  19. package/dist/cjs/parameters.js +180 -161
  20. package/dist/cjs/parametersArea.js +306 -298
  21. package/dist/cjs/perspectives.js +23 -27
  22. package/dist/cjs/report-viewer/report-viewer-settings.js +4 -10
  23. package/dist/cjs/reportViewer.js +441 -190
  24. package/dist/cjs/search.js +218 -328
  25. package/dist/cjs/sendEmail.js +259 -264
  26. package/dist/cjs/service-client-sentinel.js +1 -1
  27. package/dist/cjs/sideMenu.js +20 -16
  28. package/dist/cjs/sr.js +9 -5
  29. package/dist/cjs/template-cache.js +2 -2
  30. package/dist/cjs/toolbar/button.js +18 -0
  31. package/dist/cjs/toolbar/link-button.js +6 -12
  32. package/dist/cjs/toolbar/page-count-label.js +1 -1
  33. package/dist/cjs/toolbar/page-number-input.js +16 -14
  34. package/dist/cjs/toolbar.js +186 -0
  35. package/dist/cjs/touch.js +8 -8
  36. package/dist/cjs/uiController.js +70 -57
  37. package/dist/cjs/utils.js +20 -207
  38. package/dist/font/font-icons.css +25 -222
  39. package/dist/font/font-icons.min.css +3 -3
  40. package/dist/js/telerikReportViewer.js +8173 -9110
  41. package/dist/js/telerikReportViewer.kendo.js +105616 -60642
  42. package/dist/js/telerikReportViewer.kendo.min.js +2 -2
  43. package/dist/js/telerikReportViewer.min.js +1 -1
  44. package/dist/js/telerikReportViewer.stringResources.js +9 -5
  45. package/dist/styles/telerikReportViewer.css +3 -3
  46. package/dist/styles/telerikReportViewer.min.css +3 -3
  47. package/dist/templates/telerikReportViewerTemplate.html +299 -238
  48. package/package.json +2 -3
  49. package/dist/cjs/controller.js +0 -1226
  50. package/dist/cjs/kendo-jquery.js +0 -4
  51. package/dist/cjs/pagesArea.js +0 -625
  52. package/dist/cjs/print.js +0 -165
  53. package/dist/cjs/scroll.js +0 -535
  54. package/dist/cjs/serviceClient.js +0 -311
  55. package/dist/cjs/telerikReportViewer.kendo.js +0 -60196
  56. package/dist/cjs/telerikReportViewer.kendo.min.js +0 -19776
  57. package/dist/cjs/uiFreezeCoordinator.js +0 -282
  58. package/dist/es/accessibility.js +0 -204
  59. package/dist/es/base-component.js +0 -22
  60. package/dist/es/binder.js +0 -75
  61. package/dist/es/command.js +0 -28
  62. package/dist/es/commandSet.js +0 -163
  63. package/dist/es/controller.js +0 -1222
  64. package/dist/es/documentMapArea.js +0 -161
  65. package/dist/es/domUtils.js +0 -43
  66. package/dist/es/enums.js +0 -41
  67. package/dist/es/event-emitter.js +0 -127
  68. package/dist/es/events.js +0 -20
  69. package/dist/es/globalSettings.js +0 -5
  70. package/dist/es/history.js +0 -131
  71. package/dist/es/index.js +0 -25
  72. package/dist/es/jqueryThrottleDebounce.js +0 -46
  73. package/dist/es/kendo-jquery.js +0 -1
  74. package/dist/es/mainMenu.js +0 -319
  75. package/dist/es/mem-storage.js +0 -40
  76. package/dist/es/pagesArea.js +0 -621
  77. package/dist/es/parameterValidators.js +0 -160
  78. package/dist/es/parameters.js +0 -916
  79. package/dist/es/parametersArea.js +0 -493
  80. package/dist/es/perspectives.js +0 -134
  81. package/dist/es/print.js +0 -161
  82. package/dist/es/report-viewer/report-viewer-settings.js +0 -134
  83. package/dist/es/reportViewer.js +0 -666
  84. package/dist/es/scroll.js +0 -531
  85. package/dist/es/search.js +0 -580
  86. package/dist/es/sendEmail.js +0 -388
  87. package/dist/es/service-client-sentinel.js +0 -49
  88. package/dist/es/serviceClient.js +0 -307
  89. package/dist/es/sideMenu.js +0 -212
  90. package/dist/es/sr.js +0 -164
  91. package/dist/es/stringResources.js +0 -7
  92. package/dist/es/telerikReportViewer.kendo.js +0 -60194
  93. package/dist/es/telerikReportViewer.kendo.min.js +0 -19774
  94. package/dist/es/template-cache.js +0 -35
  95. package/dist/es/toolbar/link-button.js +0 -38
  96. package/dist/es/toolbar/page-count-label.js +0 -14
  97. package/dist/es/toolbar/page-number-input.js +0 -60
  98. package/dist/es/touch.js +0 -82
  99. package/dist/es/uiController.js +0 -138
  100. package/dist/es/uiFreezeCoordinator.js +0 -278
  101. package/dist/es/utils.js +0 -444
  102. package/dist/templates/telerikReportViewerTemplate-FA.html +0 -317
  103. /package/dist/font/{ReportingIcons-19.0.25.211.ttf → ReportingIcons-19.1.25.521.ttf} +0 -0
package/dist/es/scroll.js DELETED
@@ -1,531 +0,0 @@
1
- import { stringFormat } from './utils.js';
2
-
3
- var Scroll = {
4
- controller: {},
5
- $placeholder: null,
6
- $pageContainer: null,
7
- pageContainer: null,
8
- $pageWrapper: null,
9
- pageWrapper: null,
10
- viewMode: null,
11
- loadedPage: {},
12
- scrollInProgress: false,
13
- enabled: false,
14
- pageCount: 0,
15
- additionalTopOffset: 130,
16
- pageDistance: 20,
17
- oldScrollTopPosition: 0,
18
- skeletonTemplate: '<div class="trv-report-page trv-skeleton-page trv-skeleton-{0}" style="{1}" data-page="{0}"><div class="trv-skeleton-wrapper" style="{2}"></div></div>',
19
- /**
20
- * Initialize the scroll object
21
- * Takes two parameters
22
- * - placeholder - PageArea dom element
23
- * - options - PageArea options
24
- */
25
- init: function init(placeholder, options) {
26
- var that = this;
27
- that.$placeholder = $("[data-selector='" + options.viewerSelector + "']").find(placeholder);
28
- that.$pageContainer = this.$placeholder.find(".trv-page-container");
29
- that.pageContainer = this.$pageContainer[0];
30
- that.$pageWrapper = this.$placeholder.find(".trv-page-wrapper");
31
- that.pageWrapper = this.$pageWrapper[0];
32
- that.controller = options.controller;
33
- that.viewMode = null;
34
- that.loadedPage = {};
35
- that.scrollInProgress = false;
36
- that.enabled = false;
37
- that.pageCount = 0;
38
- that.controller.scaleChanged(function(e, args) {
39
- if (that.enabled) {
40
- setTimeout(function() {
41
- that._loadMorePages();
42
- that._keepCurrentPageInToView();
43
- }, 100);
44
- }
45
- }).loadedReportChange(function(event) {
46
- if (that.enabled) {
47
- that.disable();
48
- if (event.type !== "loadedReportChange") {
49
- setTimeout(function() {
50
- that.controller.getPageData(1).then(function(newPage) {
51
- that.renderPage(newPage);
52
- });
53
- });
54
- }
55
- }
56
- }).viewModeChanged(function(args) {
57
- if (that.enabled) {
58
- that.disable();
59
- }
60
- }).interactiveActionExecuting(function(e, args) {
61
- var actionType = args.action.Type;
62
- if (that.enabled && (actionType === "sorting" || actionType === "toggleVisibility")) {
63
- that.disable();
64
- }
65
- }).updatePageDimensionsReady(function(event, args) {
66
- if (that.enabled && that._currentPageNumber() > 0) {
67
- that._keepCurrentPageInToView();
68
- }
69
- }).pageCountChange(function(event, args) {
70
- if (that.enabled && that.pageCount !== args) {
71
- if (that._currentPageNumber() > 0 && !that.scrollInProgress) {
72
- that._loadMorePages();
73
- }
74
- if (args > 1) {
75
- that._initEvents();
76
- }
77
- that.pageCount = args;
78
- }
79
- });
80
- },
81
- /**
82
- * Returns true, when Telerik Report Viewer pageMode is set to CONTINUOUS_SCROLL or it is unset
83
- */
84
- isEnabled: function isEnabled() {
85
- return this.enabled;
86
- },
87
- disable: function disable() {
88
- this.$pageWrapper.empty();
89
- this.enabled = false;
90
- this.loadedPage = {};
91
- this.pageCount = 0;
92
- this.$placeholder.removeClass("scrollable");
93
- this._unbind();
94
- },
95
- enable: function() {
96
- this.enabled = true;
97
- this.$placeholder.addClass("scrollable");
98
- this._initEvents();
99
- },
100
- /**
101
- * Handle the page rendering called from the PageArea
102
- * Takes one parameter
103
- * page - the page object
104
- */
105
- renderPage: function renderPage(page) {
106
- var that = this;
107
- var pageViewMode = that.controller.getViewMode();
108
- var renderedPage = that.$placeholder.find('[data-page="' + page.pageNumber + '"]');
109
- if (!that.enabled) {
110
- that.enabled = true;
111
- that.$placeholder.addClass("scrollable");
112
- if (pageViewMode !== that.viewMode || !renderedPage.length) {
113
- that._updatePageArea(page);
114
- } else {
115
- that._render(page, true);
116
- this.$pageContainer.scrollTop(3);
117
- that._setCurrentPage(page.pageNumber);
118
- }
119
- that.viewMode = that.controller.getViewMode();
120
- that._loadMorePages();
121
- } else {
122
- if (pageViewMode !== that.viewMode || !renderedPage.length) {
123
- that._updatePageArea(page);
124
- } else {
125
- that._navigateToPage(page, renderedPage);
126
- }
127
- that.viewMode = that.controller.getViewMode();
128
- }
129
- },
130
- /**
131
- * Trigger scrolling animation to the specific element.
132
- */
133
- navigateToElement: function navigateToElement(offsetTop, pageNumber) {
134
- var that = this;
135
- that.scrollInProgress = true;
136
- if (that._isSkeletonScreen(null, pageNumber)) {
137
- that.controller.getPageData(pageNumber).then(function(newPage) {
138
- that._render(newPage, false);
139
- that.$pageContainer.animate({ scrollTop: offsetTop }, 500, function() {
140
- that._setCurrentPage(pageNumber);
141
- setTimeout(function() {
142
- that.scrollInProgress = false;
143
- }, 100);
144
- });
145
- });
146
- } else {
147
- that.$pageContainer.animate({ scrollTop: offsetTop }, 500, function() {
148
- that._setCurrentPage(pageNumber);
149
- setTimeout(function() {
150
- that.scrollInProgress = false;
151
- }, 100);
152
- });
153
- }
154
- },
155
- _setCurrentPage: function _setCurrentPage(pageNumber) {
156
- var that = this;
157
- if (pageNumber !== that._currentPageNumber()) {
158
- that.controller.setCurrentPageNumber(pageNumber);
159
- }
160
- if (that.controller.getPageCount() > 1) {
161
- that.$placeholder.find(".k-state-default").removeClass("k-state-default");
162
- that.$placeholder.find('[data-page="' + pageNumber + '"]').addClass("k-state-default");
163
- }
164
- that._loadNextPreviousPage(pageNumber);
165
- },
166
- _updatePageArea: function _updatePageArea(page) {
167
- var that = this;
168
- var scrollTo = 0;
169
- var pageNumber = page.pageNumber;
170
- that.scrollInProgress = true;
171
- if (pageNumber > 1) {
172
- that._generateSkeletonScreens(pageNumber);
173
- }
174
- that._render(page, false);
175
- that._setCurrentPage(page.pageNumber);
176
- setTimeout(function() {
177
- scrollTo = pageNumber > 1 ? that.$placeholder.find('[data-page="' + pageNumber + '"]').position().top : 0;
178
- that.$pageContainer.animate({ scrollTop: scrollTo }, 0, function() {
179
- that.scrollInProgress = false;
180
- });
181
- }, 100);
182
- },
183
- _navigateToPage: function _navigateToPage(page, renderedPage) {
184
- var that = this;
185
- that.scrollInProgress = true;
186
- var scrollTo = renderedPage.position().top;
187
- var pages = that.$placeholder.find(".trv-report-page");
188
- var pageNumber = page.pageNumber;
189
- $(pages[0]).height();
190
- if (that._isSkeletonScreen(renderedPage, pageNumber)) {
191
- that.controller.getPageData(pageNumber).then(function(newPage) {
192
- that._render(newPage, false);
193
- that.$pageContainer.animate({ scrollTop: scrollTo }, 500, function() {
194
- setTimeout(function() {
195
- that._setCurrentPage(newPage.pageNumber);
196
- that.scrollInProgress = false;
197
- });
198
- });
199
- });
200
- } else {
201
- that._updatePageContent(page, renderedPage);
202
- that.$pageContainer.animate({ scrollTop: scrollTo }, 500, function() {
203
- setTimeout(function() {
204
- that._setCurrentPage(page.pageNumber);
205
- that.scrollInProgress = false;
206
- });
207
- });
208
- }
209
- },
210
- _updatePageContent: function _updatePageContent(page, renderedPage) {
211
- this._updatePageStyle(page);
212
- var pageNumber = page.pageNumber;
213
- var wrapper = $($.parseHTML(page.pageContent));
214
- var $pageContent = wrapper.find("div.sheet");
215
- var $page = this.$placeholder.find('[data-page="' + pageNumber + '"]');
216
- $pageContent.css("margin", 0);
217
- $page.append($pageContent).append($('<div class="trv-page-overlay"></div>'));
218
- renderedPage.replaceWith($page);
219
- this.controller.scrollPageReady({ page, target: $page });
220
- },
221
- _currentPageNumber: function _currentPageNumber() {
222
- return this.controller.getCurrentPageNumber();
223
- },
224
- _isSkeletonScreen: function _isSkeletonScreen(page, pageNumber) {
225
- if (!page) {
226
- page = this.$placeholder.find('[data-page="' + pageNumber + '"]');
227
- }
228
- return page.hasClass("trv-skeleton-" + pageNumber);
229
- },
230
- _addSkeletonScreen: function _addSkeletonScreen(pageNumber, position) {
231
- var that = this;
232
- var pageStyleNumber = position ? parseInt(pageNumber + 1) : parseInt(pageNumber - 1);
233
- var pageStyleBaseDom = that.$placeholder.find('[data-page="' + pageStyleNumber + '"]');
234
- var pageStyle = pageStyleBaseDom.attr("style");
235
- var contentStyle = pageStyleBaseDom.find("sheet").attr("style");
236
- var skeletonEl = stringFormat(that.skeletonTemplate, [pageNumber, pageStyle, contentStyle]);
237
- if (position) {
238
- that.$pageWrapper.prepend(skeletonEl);
239
- } else {
240
- that.$pageWrapper.append(skeletonEl);
241
- }
242
- },
243
- _generateSkeletonScreens: function _generateSkeletonScreens(upToPageNumber) {
244
- var that = this;
245
- var skeletonEl = "";
246
- var pageStyleBaseDom = this.$placeholder.find('[data-page="1"]');
247
- var pageStyle = pageStyleBaseDom.attr("style");
248
- var contentStyle = pageStyleBaseDom.find("sheet").attr("style");
249
- var lastPage = that.$placeholder.find(".trv-report-page").last().attr("data-page");
250
- var index = lastPage ? parseInt(lastPage) + 1 : 1;
251
- for (index; index < upToPageNumber; index++) {
252
- skeletonEl = skeletonEl + stringFormat(that.skeletonTemplate, [index, pageStyle, contentStyle]);
253
- }
254
- that.$pageWrapper.append($(skeletonEl));
255
- },
256
- _loadMorePages: function _loadMorePages() {
257
- var that = this;
258
- var pageCount = that.controller.getPageCount();
259
- var isViewPortBiggerThanPageHeight = that.$pageContainer.innerHeight() > that.$pageWrapper.innerHeight();
260
- if (pageCount > 1) {
261
- if (isViewPortBiggerThanPageHeight) {
262
- that.scrollInProgress = true;
263
- var lastPage = parseInt(that.$placeholder.find(".trv-report-page").last().attr("data-page"));
264
- var nextPage = lastPage + 1;
265
- if (nextPage <= pageCount) {
266
- that.controller.getPageData(nextPage).then(function(newPage) {
267
- that._render(newPage, false);
268
- that._loadMorePages();
269
- that.scrollInProgress = false;
270
- });
271
- }
272
- } else {
273
- that._loadVisiblePages();
274
- that.scrollInProgress = false;
275
- }
276
- }
277
- },
278
- _loadVisiblePages: function _loadVisiblePages() {
279
- var that = this;
280
- var pages = that.$placeholder.find(".trv-report-page");
281
- Array.from(pages).forEach((value) => {
282
- var pageItem = $(value);
283
- var pageNumber = parseInt(pageItem.attr("data-page"));
284
- if (that._scrolledInToView(pageItem) && that._isSkeletonScreen(pageItem, pageNumber)) {
285
- that.controller.getPageData(pageNumber).then((newPage) => {
286
- that._render(newPage, false);
287
- });
288
- }
289
- });
290
- },
291
- _scrolledInToView: function _scrolledInToView(elem) {
292
- var pageCoords = elem[0].getBoundingClientRect();
293
- var parentCoords = elem.closest(".trv-pages-area")[0].getBoundingClientRect();
294
- var parentTop = parentCoords.top;
295
- var parentBottom = parentCoords.top + parentCoords.height;
296
- var pageTop = pageCoords.top;
297
- var pageBottom = pageTop + elem.outerHeight(true);
298
- var additionalTopOffset = this.additionalTopOffset + parentTop;
299
- var topVisible = pageTop > 0 && pageTop < parentBottom;
300
- var bottomVisible = pageBottom < parentBottom && pageBottom > additionalTopOffset;
301
- return topVisible || bottomVisible;
302
- },
303
- _render: function _render(page, empty) {
304
- var that = this;
305
- var pageNumber = page.pageNumber;
306
- var pageItem = that.$placeholder.find('[data-page="' + pageNumber + '"]');
307
- if (!empty && pageItem && pageItem.length && !that._isSkeletonScreen(pageItem, pageNumber)) {
308
- return;
309
- }
310
- that.loadedPage[pageNumber] = page;
311
- that._updatePageStyle(page);
312
- var wrapper = $($.parseHTML(page.pageContent));
313
- var $pageContent = wrapper.find("div.sheet");
314
- var $page = $('<div class="trv-report-page" data-page="' + pageNumber + '"></div>');
315
- $pageContent.css("margin", 0);
316
- $page.append($pageContent).append($('<div class="trv-page-overlay"></div>'));
317
- if (empty) {
318
- that.$pageWrapper.empty();
319
- }
320
- that.$pageWrapper.removeData().data("pageNumber", pageNumber);
321
- var $skeletonPage = that.$placeholder.find(".trv-skeleton-" + pageNumber);
322
- if ($skeletonPage.length) {
323
- $skeletonPage.replaceWith($page);
324
- } else {
325
- that.$pageWrapper.append($page);
326
- }
327
- that.controller.scrollPageReady({ page, target: $page });
328
- },
329
- _updatePageStyle: function _updatePageStyle(page) {
330
- var that = this;
331
- var lastLoadedPage = that.loadedPage[that._lastLoadedPage()] || page;
332
- var styleId = "trv-" + that.controller.clientId() + "-styles";
333
- var pageStyles;
334
- $("#" + styleId).remove();
335
- pageStyles = $("<style id=" + styleId + "></style>");
336
- pageStyles.append(lastLoadedPage.pageStyles);
337
- pageStyles.appendTo("head");
338
- },
339
- _lastLoadedPage: function _lastLoadedPage() {
340
- var that = this;
341
- var lastKey;
342
- for (var key in that.loadedPage) {
343
- if (that.loadedPage.hasOwnProperty(key)) {
344
- lastKey = key;
345
- }
346
- }
347
- return lastKey;
348
- },
349
- _loadNextPreviousPage: function _loadNextPreviousPage(pageNumber) {
350
- var that = this;
351
- var nextPage;
352
- var previousPage;
353
- var nextItem;
354
- var previousItem;
355
- if (pageNumber < that.controller.getPageCount()) {
356
- nextPage = pageNumber + 1;
357
- nextItem = that.$placeholder.find('[data-page="' + nextPage + '"]');
358
- }
359
- if (pageNumber > 1) {
360
- previousPage = pageNumber - 1;
361
- previousItem = that.$placeholder.find('[data-page="' + previousPage + '"]');
362
- }
363
- if (previousItem && previousItem.length && that._isSkeletonScreen(previousItem, previousPage)) {
364
- that.controller.getPageData(previousPage).then(function(newPage) {
365
- that._render(newPage, false);
366
- });
367
- }
368
- if (nextItem && nextItem.length && that._isSkeletonScreen(nextItem, nextPage)) {
369
- that.controller.getPageData(nextPage).then(function(newPage) {
370
- that._render(newPage, false);
371
- });
372
- }
373
- },
374
- _clickPage: function _clickPage(pageDom) {
375
- var that = this;
376
- var currentPage = that._currentPageNumber();
377
- var pageNumber = parseInt(pageDom.attr("data-page"));
378
- if (currentPage !== pageNumber) {
379
- if (that._isSkeletonScreen(pageDom, pageNumber)) {
380
- that.controller.getPageData(pageNumber).then(function(newPage) {
381
- that._render(newPage, false, true);
382
- that._setCurrentPage(newPage.pageNumber);
383
- });
384
- } else {
385
- that._setCurrentPage(pageNumber);
386
- }
387
- }
388
- },
389
- _initEvents: function _initEvents() {
390
- var that = this;
391
- that.$pageContainer.off("click", ".trv-report-page").on("click", ".trv-report-page", function(e) {
392
- that._clickPage($(e.currentTarget));
393
- });
394
- that.$pageContainer.scroll(function() {
395
- var pages = that.$placeholder.find(".trv-report-page");
396
- var scrollPosition = parseInt((that.$pageContainer.scrollTop() + that.$pageContainer.innerHeight()).toFixed(0));
397
- if (!that.scrollInProgress && that.oldScrollTopPosition !== scrollPosition) {
398
- if (that.oldScrollTopPosition > scrollPosition) {
399
- that._scrollUp(pages);
400
- } else {
401
- that._scrollDown(pages, scrollPosition);
402
- }
403
- }
404
- that.oldScrollTopPosition = scrollPosition;
405
- });
406
- that.$pageContainer.scroll(function() {
407
- var pages = that.$placeholder.find(".trv-report-page");
408
- var scrollPosition = parseInt((that.$pageContainer.scrollTop() + that.$pageContainer.innerHeight()).toFixed(0));
409
- if (!that.scrollInProgress && pages.length && that.oldScrollTopPosition !== scrollPosition) {
410
- that._advanceCurrentPage(pages);
411
- }
412
- });
413
- },
414
- _unbind: function() {
415
- var that = this;
416
- that.$pageContainer.off("click", ".trv-report-page");
417
- that.$pageContainer.off("scroll");
418
- },
419
- _advanceCurrentPage: function _advanceCurrentPage(pages) {
420
- var that = this;
421
- var newCurrentPage = that._findNewCurrentPage(pages);
422
- var pageNumber;
423
- var currentPageNumber = that._currentPageNumber();
424
- var currentPageIsInToView = that._scrolledInToView(that.$placeholder.find('[data-page="' + currentPageNumber + '"]'));
425
- if (newCurrentPage !== -1) {
426
- newCurrentPage = $(newCurrentPage);
427
- pageNumber = parseInt(newCurrentPage.attr("data-page"));
428
- if (currentPageNumber !== pageNumber && !currentPageIsInToView) {
429
- if (that._isSkeletonScreen(newCurrentPage, pageNumber)) {
430
- that.controller.getPageData(pageNumber).then(function(newPage) {
431
- that._render(newPage, false, true);
432
- that._setCurrentPage(newPage.pageNumber);
433
- });
434
- } else {
435
- that._setCurrentPage(pageNumber);
436
- }
437
- }
438
- } else {
439
- console.log("Page not found - ", newCurrentPage);
440
- }
441
- },
442
- // Binary search
443
- _findNewCurrentPage: function _findNewCurrentPage(pages) {
444
- var that = this;
445
- var middleIndex = Math.floor(pages.length / 2);
446
- var result = that._findPageInViewPort(middleIndex, pages);
447
- if (pages.length === 1) {
448
- return pages[0];
449
- }
450
- if (result === 0) {
451
- return pages[middleIndex];
452
- } else if (result < 0 && pages.length > 1) {
453
- return that._findNewCurrentPage(pages.splice(middleIndex, Number.MAX_VALUE));
454
- } else if (result > 0 && pages.length > 1) {
455
- return that._findNewCurrentPage(pages.splice(0, middleIndex));
456
- }
457
- return -1;
458
- },
459
- _findPageInViewPort: function _findPageInViewPort(index, pages) {
460
- var pageItem = this.$placeholder.find(pages[index]);
461
- var pageCoords = pageItem[0].getBoundingClientRect();
462
- var parentCoords = pageItem.closest(".trv-pages-area")[0].getBoundingClientRect();
463
- var parentTop = parentCoords.top;
464
- parentCoords.top + parentCoords.height;
465
- var pageTop = pageCoords.top;
466
- var pageBottom = pageTop + pageItem.outerHeight(true);
467
- var additionalTopOffset = this.additionalTopOffset + parentTop;
468
- var isCurentPage = pageTop <= additionalTopOffset && additionalTopOffset < pageBottom;
469
- if (isCurentPage) {
470
- return 0;
471
- }
472
- if (pageBottom < additionalTopOffset) {
473
- return -1;
474
- }
475
- return 1;
476
- },
477
- _scrollDown: function _scrollDown(pages, scrollPosition) {
478
- var that = this;
479
- if (scrollPosition >= that.pageContainer.scrollHeight - 5) {
480
- var lastPage = parseInt($(pages[pages.length - 1]).attr("data-page"));
481
- var nextPage = lastPage + 1;
482
- if (that._currentPageNumber() < nextPage && nextPage <= that.controller.getPageCount()) {
483
- that._addSkeletonScreen(nextPage, false);
484
- that.controller.getPageData(nextPage).then(function(newPage) {
485
- that._render(newPage, false);
486
- });
487
- }
488
- } else {
489
- that._advanceCurrentPage(pages);
490
- that._loadVisiblePages();
491
- }
492
- },
493
- _scrollUp: function _scrollUp(pages) {
494
- var that = this;
495
- if (that.$pageContainer.scrollTop() === 0) {
496
- var firstPage = $(pages[0]);
497
- var pageNumber = parseInt(firstPage.attr("data-page"));
498
- var previousPage = pageNumber - 1;
499
- if (that._currentPageNumber() > previousPage && previousPage >= 1) {
500
- that._addSkeletonScreen(previousPage, true);
501
- that.controller.getPageData(previousPage).then(function(newPage) {
502
- that._render(newPage, false);
503
- that.$pageContainer.scrollTop(3);
504
- });
505
- }
506
- } else {
507
- that._advanceCurrentPage(pages);
508
- that._loadVisiblePages();
509
- }
510
- },
511
- _keepCurrentPageInToView: function _keepCurrentPageInToView() {
512
- var that = this;
513
- var currentPage = that.$placeholder.find('[data-page="' + that._currentPageNumber() + '"]');
514
- var currentPagePosition = currentPage.position().top;
515
- var currentPageHeight = currentPage.innerHeight();
516
- var pageContainerHeight = that.$pageContainer.innerHeight();
517
- var emptyView;
518
- that.scrollInProgress = true;
519
- if (currentPageHeight < pageContainerHeight) {
520
- emptyView = (pageContainerHeight - currentPageHeight) / 2;
521
- currentPagePosition = parseInt(currentPagePosition - emptyView);
522
- }
523
- that.$pageContainer.animate({ scrollTop: currentPagePosition }, 0, function() {
524
- setTimeout(function() {
525
- that.scrollInProgress = false;
526
- }, 100);
527
- });
528
- }
529
- };
530
-
531
- export { Scroll };