diva.js 6.0.1 → 7.2.3

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 (133) hide show
  1. package/.clang-format +7 -0
  2. package/.github/workflows/npm-publish.yml +45 -0
  3. package/LICENSE +55 -0
  4. package/Makefile +75 -0
  5. package/README.md +15 -108
  6. package/elm.json +32 -0
  7. package/package.json +12 -59
  8. package/review/elm.json +52 -0
  9. package/review/src/ReviewConfig.elm +87 -0
  10. package/scripts/elm-esm.sh +40 -0
  11. package/scripts/minify-css.mjs +31 -0
  12. package/src/Filters.elm +1044 -0
  13. package/src/Main.elm +1217 -0
  14. package/src/Model.elm +213 -0
  15. package/src/Msg.elm +59 -0
  16. package/src/Utilities.elm +46 -0
  17. package/src/View/CollectionExplorer.elm +172 -0
  18. package/src/View/Helpers.elm +86 -0
  19. package/src/View/HtmlRenderer.elm +136 -0
  20. package/src/View/Icons.elm +159 -0
  21. package/src/View/ManifestInfoModal.elm +363 -0
  22. package/src/View/PageViewModal.elm +1046 -0
  23. package/src/View/Sidebar.elm +786 -0
  24. package/src/View/Toolbar.elm +189 -0
  25. package/src/View.elm +244 -0
  26. package/src/diva.ts +802 -0
  27. package/src/filters.ts +1843 -0
  28. package/src/styles/app.css +328 -0
  29. package/src/styles/collection.css +75 -0
  30. package/src/styles/modal.css +388 -0
  31. package/src/styles/sidebar.css +215 -0
  32. package/src/styles/theme.css +39 -0
  33. package/src/styles/toolbar.css +154 -0
  34. package/src/viewer-element.ts +1307 -0
  35. package/testing/index.html +52 -0
  36. package/testing/testing.html +231 -0
  37. package/tsconfig.json +12 -0
  38. package/AUTHORS +0 -22
  39. package/_site/diva.iml +0 -11
  40. package/build/diva.css +0 -554
  41. package/build/diva.css.map +0 -1
  42. package/build/diva.js +0 -9
  43. package/build/diva.js.map +0 -1
  44. package/build/plugins/download.js +0 -2
  45. package/build/plugins/download.js.map +0 -1
  46. package/build/plugins/manipulation.js +0 -2
  47. package/build/plugins/manipulation.js.map +0 -1
  48. package/build/plugins/metadata.js +0 -2
  49. package/build/plugins/metadata.js.map +0 -1
  50. package/diva.iml +0 -11
  51. package/index.html +0 -28
  52. package/karma.conf.js +0 -87
  53. package/source/css/_mixins.scss +0 -43
  54. package/source/css/_variables.scss +0 -50
  55. package/source/css/_viewer.scss +0 -462
  56. package/source/css/diva.scss +0 -15
  57. package/source/css/plugins/_manipulation.scss +0 -228
  58. package/source/css/plugins/_metadata.scss +0 -31
  59. package/source/img/adjust.svg +0 -11
  60. package/source/img/book-view.svg +0 -6
  61. package/source/img/close.svg +0 -6
  62. package/source/img/download.svg +0 -6
  63. package/source/img/from-fullscreen.svg +0 -8
  64. package/source/img/grid-fewer.svg +0 -6
  65. package/source/img/grid-more.svg +0 -6
  66. package/source/img/grid-view.svg +0 -6
  67. package/source/img/link.svg +0 -6
  68. package/source/img/metadata.svg +0 -9
  69. package/source/img/page-view.svg +0 -6
  70. package/source/img/to-fullscreen.svg +0 -11
  71. package/source/img/zoom-in.svg +0 -6
  72. package/source/img/zoom-out.svg +0 -7
  73. package/source/js/composite-image.js +0 -174
  74. package/source/js/diva-global.js +0 -7
  75. package/source/js/diva.js +0 -1543
  76. package/source/js/document-handler.js +0 -180
  77. package/source/js/document-layout.js +0 -286
  78. package/source/js/exceptions.js +0 -26
  79. package/source/js/gesture-events.js +0 -190
  80. package/source/js/grid-handler.js +0 -122
  81. package/source/js/iiif-source-adapter.js +0 -63
  82. package/source/js/image-cache.js +0 -113
  83. package/source/js/image-manifest.js +0 -157
  84. package/source/js/image-request-handler.js +0 -76
  85. package/source/js/interpolate-animation.js +0 -122
  86. package/source/js/page-layouts/book-layout.js +0 -161
  87. package/source/js/page-layouts/grid-layout.js +0 -97
  88. package/source/js/page-layouts/index.js +0 -38
  89. package/source/js/page-layouts/page-dimensions.js +0 -9
  90. package/source/js/page-layouts/singles-layout.js +0 -27
  91. package/source/js/page-overlay-manager.js +0 -102
  92. package/source/js/page-tools-overlay.js +0 -95
  93. package/source/js/parse-iiif-manifest.js +0 -302
  94. package/source/js/plugins/_filters.js +0 -679
  95. package/source/js/plugins/download.js +0 -83
  96. package/source/js/plugins/manipulation.js +0 -837
  97. package/source/js/plugins/metadata.js +0 -190
  98. package/source/js/renderer.js +0 -584
  99. package/source/js/settings-view.js +0 -30
  100. package/source/js/tile-coverage-map.js +0 -25
  101. package/source/js/toolbar.js +0 -572
  102. package/source/js/utils/dragscroll.js +0 -106
  103. package/source/js/utils/elt.js +0 -94
  104. package/source/js/utils/events.js +0 -190
  105. package/source/js/utils/get-scrollbar-width.js +0 -29
  106. package/source/js/utils/hash-params.js +0 -86
  107. package/source/js/utils/parse-label-value.js +0 -34
  108. package/source/js/utils/vanilla.kinetic.js +0 -527
  109. package/source/js/validation-runner.js +0 -177
  110. package/source/js/viewer-core.js +0 -1505
  111. package/source/js/viewport.js +0 -143
  112. package/test/_setup.js +0 -13
  113. package/test/composite-image_test.js +0 -94
  114. package/test/diva_test.js +0 -43
  115. package/test/hash-params_test.js +0 -221
  116. package/test/image-cache_test.js +0 -106
  117. package/test/main.js +0 -6
  118. package/test/manifests/beromunsterManifest.json +0 -15514
  119. package/test/manifests/iiifv2.json +0 -11032
  120. package/test/manifests/iiifv2pages.json +0 -30437
  121. package/test/manifests/iiifv3.json +0 -10965
  122. package/test/navigation_test.js +0 -355
  123. package/test/parse-iiif-manifest_test.js +0 -68
  124. package/test/public_test.js +0 -881
  125. package/test/settings_test.js +0 -487
  126. package/test/utils/book-layout_test.js +0 -148
  127. package/test/utils/elt_test.js +0 -102
  128. package/test/utils/events_test.js +0 -245
  129. package/test/utils/hash-params_test.js +0 -79
  130. package/test/utils/parse-label-value_test.js +0 -45
  131. package/test/z_plugins_test.js +0 -180
  132. package/webpack.config.js +0 -58
  133. package/webpack.config.test.js +0 -45
@@ -1,572 +0,0 @@
1
- import diva from './diva-global';
2
- import { elt } from './utils/elt';
3
-
4
- export default class Toolbar
5
- {
6
- constructor (viewer)
7
- {
8
- this.viewer = viewer;
9
- this.settings = viewer.settings;
10
- }
11
-
12
- _elemAttrs (ident, base)
13
- {
14
- const attrs = {
15
- id: this.settings.ID + ident,
16
- class: 'diva-' + ident
17
- };
18
-
19
- if (base)
20
- return Object.assign(attrs, base);
21
- else
22
- return attrs;
23
- }
24
-
25
-
26
- /** Convenience function to subscribe to a Diva event */
27
- _subscribe (event, callback)
28
- {
29
- diva.Events.subscribe(event, callback, this.settings.ID);
30
- }
31
-
32
-
33
- createButton (name, label, callback, icon)
34
- {
35
- const button = elt('button', {
36
- type: 'button',
37
- id: this.settings.ID + name,
38
- class: 'diva-' + name + ' diva-button',
39
- title: label
40
- });
41
-
42
- if (icon)
43
- button.appendChild(icon);
44
-
45
- if (callback)
46
- button.addEventListener('click', callback);
47
-
48
- return button;
49
- }
50
-
51
- createLabel (name, id, label, innerName, innerValue)
52
- {
53
- return elt('div', { id: this.settings.ID + id, class: name + ' diva-label'},
54
- [ label, elt('span', { id: this.settings.ID + innerName }, innerValue)
55
- ]);
56
- }
57
-
58
- createZoomButtons ()
59
- {
60
- let zoomOutIcon = this._createZoomOutIcon();
61
- let zoomInIcon = this._createZoomInIcon();
62
-
63
- let zoomButtons = [
64
- this.createButton('zoom-out-button', 'Zoom Out', () => {
65
- this.viewer.setZoomLevel(this.settings.zoomLevel - 1);
66
- }, zoomOutIcon),
67
- this.createButton('zoom-in-button', 'Zoom In', () => {
68
- this.viewer.setZoomLevel(this.settings.zoomLevel + 1);
69
- }, zoomInIcon),
70
- this.createLabel('diva-zoom-label', 'zoom-label', 'Zoom level: ', 'zoom-level', this.settings.zoomLevel + 1)
71
- ];
72
-
73
- let zoomHandler = function ()
74
- {
75
- let labelEl = document.getElementById(this.settings.ID + 'zoom-level');
76
- labelEl.textContent = this.settings.zoomLevel + 1;
77
- };
78
-
79
- this._subscribe('ZoomLevelDidChange', zoomHandler);
80
- this._subscribe('ViewerDidLoad', zoomHandler);
81
-
82
- return elt('div', { id: this.settings.ID + "zoom-controls", style: "display: none"}, zoomButtons);
83
- }
84
-
85
- createGridControls ()
86
- {
87
- let gridMoreIcon = this._createGridMoreIcon();
88
- let gridFewerIcon = this._createGridFewerIcon();
89
-
90
- let gridButtons = [
91
- this.createButton('grid-out-button', 'Fewer', () => {
92
- this.viewer.setGridPagesPerRow(this.settings.pagesPerRow - 1);
93
- }, gridFewerIcon),
94
- this.createButton('grid-in-button', 'More', () => {
95
- this.viewer.setGridPagesPerRow(this.settings.pagesPerRow + 1);
96
- }, gridMoreIcon),
97
- this.createLabel('diva-grid-label', 'grid-label', 'Pages per row: ', 'pages-per-row', this.settings.pagesPerRow)
98
- ];
99
-
100
- let gridChangeHandler = function ()
101
- {
102
- let labelEl = document.getElementById(this.settings.ID + 'pages-per-row');
103
- labelEl.textContent = this.settings.pagesPerRow;
104
- };
105
-
106
- this._subscribe('GridRowNumberDidChange', gridChangeHandler);
107
-
108
- return elt('div', {id: this.settings.ID + "grid-controls", style: "display:none" }, gridButtons);
109
- }
110
-
111
- createPageLabel ()
112
- {
113
- // Current page
114
- const currentPage = elt('span', {
115
- id: this.settings.ID + 'current-page'
116
- });
117
-
118
- const updateCurrentPage = () =>
119
- {
120
- // get labels for index range
121
- let indices = this.viewer.getCurrentPageIndices();
122
- let startIndex = indices[0];
123
- let endIndex = indices[indices.length - 1];
124
- let startLabel = this.settings.manifest.pages[startIndex].l;
125
- let endLabel = this.settings.manifest.pages[endIndex].l;
126
-
127
- if (startIndex !== endIndex)
128
- {
129
- if (this.settings.enableIndexAsLabel)
130
- currentPage.textContent = startIndex + " - " + endIndex;
131
- else
132
- currentPage.textContent = startLabel + " - " + endLabel;
133
- }
134
- else
135
- {
136
- if (this.settings.enableIndexAsLabel)
137
- currentPage.textContent = startIndex;
138
- else
139
- currentPage.textContent = startLabel;
140
- }
141
- };
142
-
143
- this._subscribe('VisiblePageDidChange', updateCurrentPage);
144
- this._subscribe('ViewerDidLoad', updateCurrentPage);
145
- this._subscribe('ViewDidSwitch', updateCurrentPage);
146
-
147
- return elt('span', {
148
- class: 'diva-page-label diva-label'
149
- },
150
- currentPage
151
- );
152
- }
153
-
154
- createGotoPageForm ()
155
- {
156
- const gotoPageInput = elt('input', {
157
- id: this.settings.ID + 'goto-page-input',
158
- class: 'diva-input diva-goto-page-input',
159
- autocomplete: 'off',
160
- type: 'text'
161
- });
162
-
163
- const gotoPageSubmit = elt('input', {
164
- id: this.settings.ID + 'goto-page-submit',
165
- class: 'diva-button diva-button-text',
166
- type: 'submit',
167
- value: 'Go'
168
- });
169
-
170
- const inputSuggestions = elt('div', {
171
- id: this.settings.ID + 'input-suggestions',
172
- class: 'diva-input-suggestions'
173
- }
174
- );
175
-
176
- const gotoForm = elt('form', {
177
- id: this.settings.ID + 'goto-page',
178
- class: 'diva-goto-form'
179
- },
180
- gotoPageInput,
181
- gotoPageSubmit,
182
- inputSuggestions
183
- );
184
-
185
- gotoForm.addEventListener('submit', (e) =>
186
- {
187
- e.preventDefault();
188
-
189
- const desiredPageLabel = gotoPageInput.value;
190
-
191
- if (this.settings.onGotoSubmit && typeof this.settings.onGotoSubmit === "function")
192
- {
193
- const pageIndex = this.settings.onGotoSubmit(desiredPageLabel);
194
- if (!this.viewer.gotoPageByIndex(pageIndex))
195
- window.alert("No page could be found with that label or page number");
196
-
197
- }
198
- else // Default if no function is specified in the settings
199
- {
200
- if (!this.viewer.gotoPageByLabel(desiredPageLabel))
201
- window.alert("No page could be found with that label or page number");
202
- }
203
-
204
- // Hide the suggestions
205
- inputSuggestions.style.display = 'none';
206
-
207
- // Prevent the default action of reloading the page
208
- return false;
209
- });
210
-
211
- ['input', 'focus'].forEach(event =>
212
- {
213
- gotoPageInput.addEventListener(event, () => {
214
- inputSuggestions.innerHTML = ''; // Remove all previous suggestions
215
-
216
- const value = gotoPageInput.value;
217
- let numSuggestions = 0;
218
- if (this.settings.enableGotoSuggestions && value)
219
- {
220
- const pages = this.settings.manifest.pages;
221
- for (let i = 0, len = pages.length; i < len && numSuggestions < 10; i++)
222
- {
223
- if (pages[i].l.toLowerCase().indexOf(value.toLowerCase()) > -1)
224
- {
225
- const newInputSuggestion = elt('div', {
226
- class: 'diva-input-suggestion'
227
- },
228
- pages[i].l
229
- );
230
-
231
- inputSuggestions.appendChild(newInputSuggestion);
232
-
233
- numSuggestions++;
234
- }
235
- }
236
-
237
- // Show label suggestions
238
- if (numSuggestions > 0)
239
- inputSuggestions.style.display = 'block';
240
- }
241
- else
242
- inputSuggestions.style.display = 'none';
243
- });
244
- });
245
-
246
- gotoPageInput.addEventListener('keydown', e => {
247
- let el;
248
- if (e.keyCode === 13) // 'Enter' key
249
- {
250
- const active = document.getElementsByClassName('active')[0];
251
- if (typeof active !== 'undefined')
252
- gotoPageInput.value = active.innerText;
253
- }
254
- if (e.keyCode === 38) // Up arrow key
255
- {
256
- el = document.getElementsByClassName('active')[0];
257
- const prevEl = el ? el.previousSibling : undefined;
258
- if (typeof prevEl !== 'undefined')
259
- {
260
- el.classList.remove('active');
261
- if (prevEl !== null)
262
- prevEl.classList.add('active');
263
- }
264
- else
265
- {
266
- let last = document.getElementsByClassName('diva-input-suggestion').length - 1;
267
- document.getElementsByClassName('diva-input-suggestion')[last].classList.add('active');
268
- }
269
- }
270
- else if (e.keyCode === 40) // Down arrow key
271
- {
272
- el = document.getElementsByClassName('active')[0];
273
- const nextEl = el ? el.nextSibling : undefined;
274
- if (typeof nextEl !== 'undefined')
275
- {
276
- el.classList.remove('active');
277
- if (nextEl !== null)
278
- nextEl.classList.add('active');
279
- }
280
- else
281
- {
282
- document.getElementsByClassName('diva-input-suggestion')[0].classList.add('active');
283
- }
284
- }
285
- });
286
-
287
- onEvent(inputSuggestions, 'mousedown', '.diva-input-suggestion', function ()
288
- {
289
- gotoPageInput.value = this.textContent;
290
- inputSuggestions.style.display = 'none';
291
-
292
- let submitEvent = new Event('submit');
293
- gotoForm.dispatchEvent(submitEvent);
294
- });
295
-
296
- // javascript equivalent to jquery .on(event, selector, function)
297
- function onEvent (elem, evt, sel, handler)
298
- {
299
- elem.addEventListener(evt, function (event)
300
- {
301
- var t = event.target;
302
- while (t && t !== this)
303
- {
304
- if (t.matches(sel))
305
- handler.call(t, event);
306
- t = t.parentNode;
307
- }
308
- });
309
- }
310
-
311
- gotoPageInput.addEventListener('blur', () => {
312
- // Hide label suggestions
313
- inputSuggestions.style.display = 'none';
314
- });
315
-
316
- return gotoForm;
317
- }
318
-
319
- createViewMenu ()
320
- {
321
- const viewOptionsList = elt('div', this._elemAttrs('view-options'));
322
- const gridViewIcon = this._createGridViewIcon();
323
- const bookViewIcon = this._createBookViewIcon();
324
- const pageViewIcon = this._createPageViewIcon();
325
-
326
- const viewOptionsToggle = () =>
327
- {
328
- viewOptionsList.style.display = viewOptionsList.style.display === "none" ? "block" : "none";
329
- };
330
-
331
- const changeViewButton = this.createButton('view-icon', 'Change view', viewOptionsToggle);
332
-
333
- const selectView = (view) =>
334
- {
335
- this.viewer.changeView(view);
336
-
337
- //hide view menu
338
- viewOptionsList.style.display = "none";
339
- };
340
-
341
- const updateViewMenu = () =>
342
- {
343
- const viewIconClasses = ' diva-view-icon diva-button';
344
-
345
-
346
- // display the icon of the mode we're currently in (?)
347
- if (this.settings.inGrid)
348
- {
349
- changeViewButton.appendChild(gridViewIcon);
350
- changeViewButton.className = 'diva-grid-icon' + viewIconClasses;
351
- }
352
- else if (this.settings.inBookLayout)
353
- {
354
- changeViewButton.appendChild(bookViewIcon);
355
- changeViewButton.className = 'diva-book-icon' + viewIconClasses;
356
- }
357
- else
358
- {
359
- changeViewButton.appendChild(pageViewIcon);
360
- changeViewButton.className = 'diva-document-icon' + viewIconClasses;
361
- }
362
-
363
- const viewOptions = document.createDocumentFragment();
364
-
365
- // then display document, book, and grid buttons in that order, excluding the current view
366
- if (this.settings.inGrid || this.settings.inBookLayout)
367
- viewOptions.appendChild(this.createButton('document-icon', 'Document View', selectView.bind(null, 'document'), pageViewIcon));
368
-
369
- if (this.settings.inGrid || !this.settings.inBookLayout)
370
- viewOptions.appendChild(this.createButton('book-icon', 'Book View', selectView.bind(null, 'book'), bookViewIcon));
371
-
372
- if (!this.settings.inGrid)
373
- viewOptions.appendChild(this.createButton('grid-icon', 'Grid View', selectView.bind(null, 'grid'), gridViewIcon));
374
-
375
- // remove old menu
376
- while (viewOptionsList.firstChild)
377
- {
378
- viewOptionsList.removeChild(viewOptionsList.firstChild);
379
- }
380
-
381
- // insert new menu
382
- viewOptionsList.appendChild(viewOptions);
383
- };
384
-
385
- document.addEventListener('mouseup', event =>
386
- {
387
- if (viewOptionsList !== event.target)
388
- {
389
- viewOptionsList.style.display = 'none';
390
- }
391
- });
392
-
393
- this._subscribe('ViewDidSwitch', updateViewMenu);
394
- this._subscribe('ObjectDidLoad', updateViewMenu);
395
-
396
- return elt('div', this._elemAttrs('view-menu'),
397
- changeViewButton,
398
- viewOptionsList
399
- );
400
- }
401
-
402
- createFullscreenButton ()
403
- {
404
- let fullscreenIcon = this._createFullscreenIcon();
405
-
406
- return this.createButton('fullscreen-icon', 'Toggle fullscreen mode', () => {
407
- this.viewer.toggleFullscreenMode();
408
- }, fullscreenIcon);
409
- }
410
-
411
- toggleZoomGridControls ()
412
- {
413
- if (!this.settings.inGrid)
414
- {
415
- document.getElementById(this.settings.ID + "zoom-controls").style.display = "block";
416
- document.getElementById(this.settings.ID + "grid-controls").style.display = "none";
417
- }
418
- else
419
- {
420
- document.getElementById(this.settings.ID + "zoom-controls").style.display = "none";
421
- document.getElementById(this.settings.ID + "grid-controls").style.display = "block";
422
- }
423
-
424
- }
425
-
426
- render ()
427
- {
428
- this._subscribe("ViewDidSwitch", this.toggleZoomGridControls);
429
- this._subscribe("ObjectDidLoad", this.toggleZoomGridControls);
430
-
431
- let leftTools = [
432
- this.createZoomButtons(),
433
- this.createGridControls()
434
- ];
435
- let rightTools = [
436
- this.createPageLabel(),
437
- this.createViewMenu()
438
- ];
439
- if (this.settings.enableFullscreen)
440
- rightTools.push(this.createFullscreenButton());
441
- if (this.settings.enableGotoPage)
442
- rightTools.splice(1, 0, this.createGotoPageForm());
443
-
444
- // assign toolbar plugins to proper side
445
- let plugins = this.viewer.viewerState.pluginInstances;
446
- for (let i = 0, len = plugins.length; i < len; i++)
447
- {
448
- let plugin = plugins[i];
449
-
450
- if (!plugin.toolbarSide) // not a toolbar tool
451
- continue;
452
-
453
- plugin.toolbarIcon = plugin.createIcon();
454
- if (!plugin.toolbarIcon) // icon couldn't be created
455
- continue;
456
-
457
- // add plugin tools after the go-to-page and page-label tools
458
- if (plugin.toolbarSide === 'right')
459
- rightTools.splice(2, 0, plugin.toolbarIcon);
460
- else if (plugin.toolbarSide === 'left')
461
- leftTools.splice(2, 0, plugin.toolbarIcon);
462
-
463
- plugin.toolbarIcon.addEventListener('click', handlePluginClick.bind(this, plugin));
464
- }
465
-
466
- function handlePluginClick (plugin)
467
- {
468
- plugin.handleClick(this.viewer);
469
- }
470
-
471
- const tools = elt('div', this._elemAttrs('tools'),
472
- elt('div', this._elemAttrs('tools-left'), leftTools),
473
- elt('div', this._elemAttrs('tools-right'), rightTools)
474
- );
475
-
476
- this.settings.toolbarParentObject.insertBefore(
477
- tools,
478
- this.settings.toolbarParentObject.firstChild
479
- );
480
- }
481
-
482
- _createToolbarIcon (paths)
483
- {
484
- let icon = document.createElementNS("http://www.w3.org/2000/svg", "svg");
485
- icon.setAttributeNS(null, 'viewBox', "0 0 25 25");
486
- icon.setAttributeNS(null, 'x', '0px');
487
- icon.setAttributeNS(null, 'y', '0px');
488
- icon.setAttributeNS(null, 'style', "enable-background:new 0 0 48 48;");
489
-
490
- let glyph = document.createElementNS("http://www.w3.org/2000/svg", "g");
491
- glyph.setAttributeNS(null, "transform", "matrix(1, 0, 0, 1, -12, -12)");
492
-
493
- paths.forEach( (path) =>
494
- {
495
- let pEl = document.createElementNS("http://www.w3.org/2000/svg", "path");
496
- pEl.setAttributeNS(null, "d", path);
497
- glyph.appendChild(pEl);
498
- });
499
-
500
- icon.appendChild(glyph);
501
- return icon;
502
- }
503
-
504
- _createZoomOutIcon ()
505
- {
506
- let paths = [
507
- "M19.5,23c-0.275,0-0.5-0.225-0.5-0.5v-1c0-0.275,0.225-0.5,0.5-0.5h7c0.275,0,0.5,0.225,0.5,0.5v1c0,0.275-0.225,0.5-0.5,0.5H19.5z",
508
- "M37.219,34.257l-2.213,2.212c-0.202,0.202-0.534,0.202-0.736,0l-6.098-6.099c-1.537,0.993-3.362,1.577-5.323,1.577c-5.431,0-9.849-4.418-9.849-9.849c0-5.431,4.418-9.849,9.849-9.849c5.431,0,9.849,4.418,9.849,9.849c0,1.961-0.584,3.786-1.576,5.323l6.098,6.098C37.422,33.722,37.422,34.054,37.219,34.257z M29.568,22.099c0-3.706-3.014-6.72-6.72-6.72c-3.706,0-6.72,3.014-6.72,6.72c0,3.706,3.014,6.72,6.72,6.72C26.555,28.818,29.568,25.805,29.568,22.099z"
509
- ];
510
-
511
- return this._createToolbarIcon(paths);
512
- }
513
-
514
- _createZoomInIcon ()
515
- {
516
- let paths = [
517
- "M37.469,34.257l-2.213,2.212c-0.202,0.202-0.534,0.202-0.736,0l-6.098-6.099c-1.537,0.993-3.362,1.577-5.323,1.577c-5.431,0-9.849-4.418-9.849-9.849c0-5.431,4.418-9.849,9.849-9.849c5.431,0,9.849,4.418,9.849,9.849c0,1.961-0.584,3.786-1.576,5.323l6.098,6.098C37.672,33.722,37.672,34.054,37.469,34.257z M29.818,22.099c0-3.706-3.014-6.72-6.72-6.72c-3.706,0-6.72,3.014-6.72,6.72c0,3.706,3.014,6.72,6.72,6.72C26.805,28.818,29.818,25.805,29.818,22.099z M26.5,21H24v-2.5c0-0.275-0.225-0.5-0.5-0.5h-1c-0.275,0-0.5,0.225-0.5,0.5V21h-2.5c-0.275,0-0.5,0.225-0.5,0.5v1c0,0.275,0.225,0.5,0.5,0.5H22v2.5c0,0.275,0.225,0.5,0.5,0.5h1c0.275,0,0.5-0.225,0.5-0.5V23h2.5c0.275,0,0.5-0.225,0.5-0.5v-1C27,21.225,26.775,21,26.5,21z"
518
- ];
519
- return this._createToolbarIcon(paths);
520
- }
521
-
522
- _createGridMoreIcon ()
523
- {
524
- let paths = [
525
- "M29.5,35c-0.275,0-0.5-0.225-0.5-0.5v-5c0-0.275,0.225-0.5,0.5-0.5h5c0.275,0,0.5,0.225,0.5,0.5v5c0,0.275-0.225,0.5-0.5,0.5H29.5z M21.5,35c-0.275,0-0.5-0.225-0.5-0.5v-5c0-0.275,0.225-0.5,0.5-0.5h5c0.275,0,0.5,0.225,0.5,0.5v5c0,0.275-0.225,0.5-0.5,0.5H21.5z M13.5,35c-0.275,0-0.5-0.225-0.5-0.5v-5c0-0.275,0.225-0.5,0.5-0.5h5c0.275,0,0.5,0.225,0.5,0.5v5c0,0.275-0.225,0.5-0.5,0.5H13.5z M29.5,27c-0.275,0-0.5-0.225-0.5-0.5v-5c0-0.275,0.225-0.5,0.5-0.5h5c0.275,0,0.5,0.225,0.5,0.5v5c0,0.275-0.225,0.5-0.5,0.5H29.5z M21.5,27c-0.275,0-0.5-0.225-0.5-0.5v-5c0-0.275,0.225-0.5,0.5-0.5h5c0.275,0,0.5,0.225,0.5,0.5v5c0,0.275-0.225,0.5-0.5,0.5H21.5z M13.5,27c-0.275,0-0.5-0.225-0.5-0.5v-5c0-0.275,0.225-0.5,0.5-0.5h5c0.275,0,0.5,0.225,0.5,0.5v5c0,0.275-0.225,0.5-0.5,0.5H13.5z M29.5,19c-0.275,0-0.5-0.225-0.5-0.5v-5c0-0.275,0.225-0.5,0.5-0.5h5c0.275,0,0.5,0.225,0.5,0.5v5c0,0.275-0.225,0.5-0.5,0.5H29.5z M21.5,19c-0.275,0-0.5-0.225-0.5-0.5v-5c0-0.275,0.225-0.5,0.5-0.5h5c0.275,0,0.5,0.225,0.5,0.5v5c0,0.275-0.225,0.5-0.5,0.5H21.5z M13.5,19c-0.275,0-0.5-0.225-0.5-0.5v-5c0-0.275,0.225-0.5,0.5-0.5h5c0.275,0,0.5,0.225,0.5,0.5v5c0,0.275-0.225,0.5-0.5,0.5H13.5z"
526
- ];
527
- return this._createToolbarIcon(paths);
528
- }
529
-
530
- _createGridFewerIcon ()
531
- {
532
- let paths = [
533
- "M25.5,35c-0.275,0-0.5-0.225-0.5-0.5v-9c0-0.275,0.225-0.5,0.5-0.5h9c0.275,0,0.5,0.225,0.5,0.5v9c0,0.275-0.225,0.5-0.5,0.5H25.5z M22.5,35c0.275,0,0.5-0.225,0.5-0.5v-9c0-0.275-0.225-0.5-0.5-0.5h-9c-0.275,0-0.5,0.225-0.5,0.5v9c0,0.275,0.225,0.5,0.5,0.5H22.5z M34.5,23c0.275,0,0.5-0.225,0.5-0.5v-9c0-0.275-0.225-0.5-0.5-0.5h-9c-0.275,0-0.5,0.225-0.5,0.5v9c0,0.275,0.225,0.5,0.5,0.5H34.5z M22.5,23c0.275,0,0.5-0.225,0.5-0.5v-9c0-0.275-0.225-0.5-0.5-0.5h-9c-0.275,0-0.5,0.225-0.5,0.5v9c0,0.275,0.225,0.5,0.5,0.5H22.5z"
534
- ];
535
- return this._createToolbarIcon(paths);
536
- }
537
-
538
- _createGridViewIcon ()
539
- {
540
- let paths = [
541
- "M29.5,35c-0.275,0-0.5-0.225-0.5-0.5v-5c0-0.275,0.225-0.5,0.5-0.5h5c0.275,0,0.5,0.225,0.5,0.5v5c0,0.275-0.225,0.5-0.5,0.5H29.5z M21.5,35c-0.275,0-0.5-0.225-0.5-0.5v-5c0-0.275,0.225-0.5,0.5-0.5h5c0.275,0,0.5,0.225,0.5,0.5v5c0,0.275-0.225,0.5-0.5,0.5H21.5z M13.5,35c-0.275,0-0.5-0.225-0.5-0.5v-5c0-0.275,0.225-0.5,0.5-0.5h5c0.275,0,0.5,0.225,0.5,0.5v5c0,0.275-0.225,0.5-0.5,0.5H13.5z M29.5,27c-0.275,0-0.5-0.225-0.5-0.5v-5c0-0.275,0.225-0.5,0.5-0.5h5c0.275,0,0.5,0.225,0.5,0.5v5c0,0.275-0.225,0.5-0.5,0.5H29.5z M21.5,27c-0.275,0-0.5-0.225-0.5-0.5v-5c0-0.275,0.225-0.5,0.5-0.5h5c0.275,0,0.5,0.225,0.5,0.5v5c0,0.275-0.225,0.5-0.5,0.5H21.5z M13.5,27c-0.275,0-0.5-0.225-0.5-0.5v-5c0-0.275,0.225-0.5,0.5-0.5h5c0.275,0,0.5,0.225,0.5,0.5v5c0,0.275-0.225,0.5-0.5,0.5H13.5z M29.5,19c-0.275,0-0.5-0.225-0.5-0.5v-5c0-0.275,0.225-0.5,0.5-0.5h5c0.275,0,0.5,0.225,0.5,0.5v5c0,0.275-0.225,0.5-0.5,0.5H29.5z M21.5,19c-0.275,0-0.5-0.225-0.5-0.5v-5c0-0.275,0.225-0.5,0.5-0.5h5c0.275,0,0.5,0.225,0.5,0.5v5c0,0.275-0.225,0.5-0.5,0.5H21.5z M13.5,19c-0.275,0-0.5-0.225-0.5-0.5v-5c0-0.275,0.225-0.5,0.5-0.5h5c0.275,0,0.5,0.225,0.5,0.5v5c0,0.275-0.225,0.5-0.5,0.5H13.5z"
542
- ];
543
- return this._createToolbarIcon(paths);
544
- }
545
-
546
- _createBookViewIcon ()
547
- {
548
- let paths = [
549
- "M35,16.8v-1.323c0,0-2.292-1.328-5.74-1.328c-3.448,0-5.26,1.25-5.26,1.25s-1.813-1.25-5.26-1.25c-3.448,0-5.74,1.328-5.74,1.328V16.8l-1,0.531v0.021v15.687c0,0,4.531-1.578,6.999-1.578c2.468,0,5.001,0.885,5.001,0.885s2.532-0.885,5-0.885c0.306,0,0.643,0.024,1,0.066v4.325l1.531-2.016L33,35.852v-3.72c2,0.43,3,0.906,3,0.906V17.352v-0.021L35,16.8z M23,29.03c-1-0.292-2.584-0.679-3.981-0.679c-2.246,0-3.019,0.404-4.019,0.699V16.634c0,0,1.125-0.699,4.019-0.699c1.694,0,2.981,0.417,3.981,1.126V29.03z M33,29.051c-1-0.295-1.773-0.699-4.02-0.699c-1.396,0-2.981,0.387-3.98,0.679V17.06c1-0.709,2.286-1.126,3.98-1.126c2.895,0,4.02,0.699,4.02,0.699V29.051z"
550
- ];
551
- return this._createToolbarIcon(paths);
552
- }
553
-
554
- _createPageViewIcon ()
555
- {
556
- let paths = [
557
- "M29.425,29h4.47L29,33.934v-4.47C29,29.19,29.151,29,29.425,29z M34,14.563V28h-5.569C28.157,28,28,28.196,28,28.47V34H14.497C14.223,34,14,33.71,14,33.437V14.563C14,14.29,14.223,14,14.497,14h18.9C33.672,14,34,14.29,34,14.563z M25.497,26.497C25.497,26.223,25.275,26,25,26h-7c-0.275,0-0.497,0.223-0.497,0.497v1.006C17.503,27.777,17.725,28,18,28h7c0.275,0,0.497-0.223,0.497-0.497V26.497z M30.497,22.497C30.497,22.223,30.275,22,30,22H18c-0.275,0-0.497,0.223-0.497,0.497v1.006C17.503,23.777,17.725,24,18,24h12c0.275,0,0.497-0.223,0.497-0.497V22.497z M30.497,18.497C30.497,18.223,30.275,18,30,18H18c-0.275,0-0.497,0.223-0.497,0.497v1.006C17.503,19.777,17.725,20,18,20h12c0.275,0,0.497-0.223,0.497-0.497V18.497z"
558
- ];
559
-
560
- return this._createToolbarIcon(paths);
561
- }
562
-
563
- _createFullscreenIcon ()
564
- {
565
- let paths = [
566
- "M35,12H13c-0.55,0-1,0.45-1,1v22c0,0.55,0.45,1,1,1h22c0.55,0,1-0.45,1-1V13C36,12.45,35.55,12,35,12z M34,34H14V14h20V34z",
567
- "M17,21.75v-4.5c0-0.138,0.112-0.25,0.25-0.25h4.5c0.138,0,0.17,0.08,0.073,0.177l-1.616,1.616l1.823,1.823c0.097,0.097,0.097,0.256,0,0.354l-1.061,1.06c-0.097,0.097-0.256,0.097-0.354,0l-1.823-1.823l-1.616,1.616C17.08,21.92,17,21.888,17,21.75z M20.97,25.97c-0.097-0.097-0.256-0.097-0.354,0l-1.823,1.823l-1.616-1.616C17.08,26.08,17,26.112,17,26.25v4.5c0,0.138,0.112,0.25,0.25,0.25h4.5c0.138,0,0.17-0.08,0.073-0.177l-1.616-1.616l1.823-1.823c0.097-0.097,0.097-0.256,0-0.354L20.97,25.97z M30.75,17h-4.5c-0.138,0-0.17,0.08-0.073,0.177l1.616,1.616l-1.823,1.823c-0.097,0.097-0.097,0.256,0,0.354l1.061,1.06c0.097,0.097,0.256,0.097,0.354,0l1.823-1.823l1.616,1.616C30.92,21.92,31,21.888,31,21.75v-4.5C31,17.112,30.888,17,30.75,17z M30.823,26.177l-1.616,1.616l-1.823-1.823c-0.097-0.097-0.256-0.097-0.354,0l-1.061,1.06c-0.097,0.097-0.097,0.256,0,0.354l1.823,1.823l-1.616,1.616C26.08,30.92,26.112,31,26.25,31h4.5c0.138,0,0.25-0.112,0.25-0.25v-4.5C31,26.112,30.92,26.08,30.823,26.177z M26,22.5c0-0.275-0.225-0.5-0.5-0.5h-3c-0.275,0-0.5,0.225-0.5,0.5v3c0,0.275,0.225,0.5,0.5,0.5h3c0.275,0,0.5-0.225,0.5-0.5V22.5z"
568
- ];
569
-
570
- return this._createToolbarIcon(paths);
571
- }
572
- }
@@ -1,106 +0,0 @@
1
- /**
2
- * @fileoverview dragscroll - scroll area by dragging
3
- * @version 0.0.8
4
- *
5
- * @license MIT, see http://github.com/asvd/dragscroll
6
- * @copyright 2015 asvd <heliosframework@gmail.com>
7
- */
8
- (function (root, factory)
9
- {
10
- if (typeof define === 'function' && define.amd)
11
- {
12
- define(['exports'], factory);
13
- }
14
- else if (typeof exports !== 'undefined')
15
- {
16
- factory(exports);
17
- }
18
- else
19
- {
20
- factory((root.dragscroll = {}));
21
- }
22
- }(this, function (exports)
23
- {
24
- var _window = window;
25
- var _document = document;
26
- var mousemove = 'mousemove';
27
- var mouseup = 'mouseup';
28
- var mousedown = 'mousedown';
29
- var EventListener = 'EventListener';
30
- var addEventListener = 'add' + EventListener;
31
- var removeEventListener = 'remove' + EventListener;
32
- var newScrollX, newScrollY; // jshint ignore:line
33
-
34
- var dragged = [];
35
-
36
- var reset = function (i, el)
37
- {
38
- for (i = 0; i < dragged.length;)
39
- {
40
- el = dragged[i++];
41
- el = el.container || el;
42
- el[removeEventListener](mousedown, el.md, 0);
43
- _window[removeEventListener](mouseup, el.mu, 0);
44
- _window[removeEventListener](mousemove, el.mm, 0);
45
- }
46
-
47
- // suppress warning about functions in loops.
48
- /* jshint ignore:start */
49
- // cloning into array since HTMLCollection is updated dynamically
50
- dragged = [].slice.call(_document.getElementsByClassName('dragscroll'));
51
- for (i = 0; i < dragged.length;)
52
- {
53
- (function (el, lastClientX, lastClientY, pushed, scroller, cont)
54
- {
55
- (cont = el.container || el)[addEventListener](
56
- mousedown,
57
- cont.md = function (e)
58
- {
59
- if (!el.hasAttribute('nochilddrag') || _document.elementFromPoint(e.pageX, e.pageY) === cont)
60
- {
61
- pushed = 1;
62
- lastClientX = e.clientX;
63
- lastClientY = e.clientY;
64
-
65
- e.preventDefault();
66
- }
67
- }, 0
68
- );
69
-
70
- _window[addEventListener](mouseup, cont.mu = function ()
71
- {
72
- pushed = 0;
73
- }, 0);
74
-
75
- _window[addEventListener](mousemove, cont.mm = function (e)
76
- {
77
- if (pushed)
78
- {
79
- (scroller = el.scroller || el).scrollLeft -=
80
- newScrollX = (-lastClientX + (lastClientX = e.clientX));
81
- scroller.scrollTop -=
82
- newScrollY = (-lastClientY + (lastClientY = e.clientY));
83
- if (el === _document.body)
84
- {
85
- (scroller = _document.documentElement).scrollLeft -= newScrollX;
86
- scroller.scrollTop -= newScrollY;
87
- }
88
- }
89
- }, 0);
90
- })(dragged[i++]);
91
- }
92
- /* jshint ignore:end */
93
- };
94
-
95
- if (_document.readyState === 'complete')
96
- {
97
- reset();
98
- }
99
- else
100
- {
101
- _window[addEventListener]('load', reset, 0);
102
- }
103
-
104
- exports.reset = reset;
105
- window.resetDragscroll = reset;
106
- }));