PageSourceSearch

https://www.allied-telesis.co.jp/assets/js/lib/scroll-hint.js

js allied-telesis.co.jp collected 2026-10-02 14:55:41 UTC 10,647 bytes, 299 lines download raw bytes

1/**
2 * Modules in this bundle
3 * @license
4 *
5 * scroll-hint:
6 *   license: MIT (http://opensource.org/licenses/MIT)
7 *   author: steelydylan
8 *   version: 1.2.5
9 *
10 * es6-object-assign:
11 *   license: MIT (http://opensource.org/licenses/MIT)
12 *   author: Rubén Norte <[email protected]>
13 *   homepage: https://github.com/rubennorte/es6-object-assign
14 *   version: 1.1.0
15 *
16 * This header is generated by licensify (https://github.com/twada/licensify)
17 */
18(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.ScrollHint = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
19/**
20 * Code refactored from Mozilla Developer Network:
21 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
22 */
23
24'use strict';
25
26function assign(target, firstSource) {
27  if (target === undefined || target === null) {
28    throw new TypeError('Cannot convert first argument to object');
29  }
30
31  var to = Object(target);
32  for (var i = 1; i < arguments.length; i++) {
33    var nextSource = arguments[i];
34    if (nextSource === undefined || nextSource === null) {
35      continue;
36    }
37
38    var keysArray = Object.keys(Object(nextSource));
39    for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {
40      var nextKey = keysArray[nextIndex];
41      var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
42      if (desc !== undefined && desc.enumerable) {
43        to[nextKey] = nextSource[nextKey];
44      }
45    }
46  }
47  return to;
48}
49
50function polyfill() {
51  if (!Object.assign) {
52    Object.defineProperty(Object, 'assign', {
53      enumerable: false,
54      configurable: true,
55      writable: true,
56      value: assign
57    });
58  }
59}
60
61module.exports = {
62  assign: assign,
63  polyfill: polyfill
64};
65
66},{}],2:[function(require,module,exports){
67'use strict';
68
69Object.defineProperty(exports, "__esModule", {
70  value: true
71});
72
73var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
74
75var _es6ObjectAssign = require('es6-object-assign');
76
77var _util = require('./util');
78
79function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
80
81var defaults = {
82  suggestClass: 'is-active',
83  scrollableClass: 'is-scrollable',
84  scrollableRightClass: 'is-right-scrollable',
85  scrollableLeftClass: 'is-left-scrollable',
86  scrollHintClass: 'scroll-hint',
87  scrollHintIconClass: 'scroll-hint-icon',
88  scrollHintIconAppendClass: '', // 'scroll-hint-icon-white'
89  scrollHintIconWrapClass: 'scroll-hint-icon-wrap',
90  scrollHintText: 'scroll-hint-text',
91  scrollHintBorderWidth: 10,
92  remainingTime: -1,
93  enableOverflowScrolling: true,
94  applyToParents: false,
95  suggestiveShadow: false,
96  offset: 0,
97  i18n: {
98    scrollable: 'scrollable'
99  }
100};
101
102var ScrollHint = function () {
103  function ScrollHint(ele, option) {
104    var _this = this;
105
106    _classCallCheck(this, ScrollHint);
107
108    this.opt = (0, _es6ObjectAssign.assign)({}, defaults, option);
109    this.items = [];
110    var elements = typeof ele === 'string' ? document.querySelectorAll(ele) : ele;
111    var applyToParents = this.opt.applyToParents;
112
113    [].forEach.call(elements, function (element) {
114      if (applyToParents) {
115        element = element.parentElement;
116      }
117      element.style.position = 'relative';
118      element.style.overflow = 'auto';
119      if (_this.opt.enableOverflowScrolling) {
120        if ('overflowScrolling' in element.style) {
121          element.style.overflowScrolling = 'touch';
122        } else if ('webkitOverflowScrolling' in element.style) {
123          element.style.webkitOverflowScrolling = 'touch';
124        }
125      }
126      var item = {
127        element: element,
128        scrolledIn: false,
129        interacted: false
130      };
131      document.addEventListener('scroll', function (e) {
132        if (e.target === element) {
133          item.interacted = true;
134          _this.updateItem(item);
135        }
136      }, true);
137      (0, _util.addClass)(element, _this.opt.scrollHintClass);
138      (0, _util.append)(element, '<div class="' + _this.opt.scrollHintIconWrapClass + '" data-target="scrollable-icon">\n        <span class="' + _this.opt.scrollHintIconClass + (_this.opt.scrollHintIconAppendClass ? ' ' + _this.opt.scrollHintIconAppendClass : '') + '">\n          <div class="' + _this.opt.scrollHintText + '">' + _this.opt.i18n.scrollable + '</div>\n        </span>\n      </div>');
139      _this.items.push(item);
140    });
141    window.addEventListener('scroll', function () {
142      _this.updateItems();
143    });
144    window.addEventListener('resize', function () {
145      _this.updateItems();
146    });
147    this.updateItems();
148  }
149
150  _createClass(ScrollHint, [{
151    key: 'isScrollable',
152    value: function isScrollable(item) {
153      var offset = this.opt.offset;
154      var element = item.element;
155      var offsetWidth = element.offsetWidth;
156
157      return offsetWidth + offset < element.scrollWidth;
158    }
159  }, {
160    key: 'checkScrollableDir',
161    value: function checkScrollableDir(item) {
162      var _opt = this.opt,
163          scrollHintBorderWidth = _opt.scrollHintBorderWidth,
164          scrollableRightClass = _opt.scrollableRightClass,
165          scrollableLeftClass = _opt.scrollableLeftClass;
166      var element = item.element;
167
168      var child = element.children[0];
169      var width = child.scrollWidth;
170      var parentWidth = element.offsetWidth;
171      var scrollLeft = element.scrollLeft;
172      if (parentWidth + scrollLeft < width - scrollHintBorderWidth) {
173        (0, _util.addClass)(element, scrollableRightClass);
174      } else {
175        (0, _util.removeClass)(element, scrollableRightClass);
176      }
177      if (parentWidth < width && scrollLeft > scrollHintBorderWidth) {
178        (0, _util.addClass)(element, scrollableLeftClass);
179      } else {
180        (0, _util.removeClass)(element, scrollableLeftClass);
181      }
182    }
183  }, {
184    key: 'needSuggest',
185    value: function needSuggest(item) {
186      var scrolledIn = item.scrolledIn,
187          interacted = item.interacted;
188
189      return !interacted && scrolledIn && this.isScrollable(item);
190    }
191  }, {
192    key: 'updateItems',
193    value: function updateItems() {
194      var _this2 = this;
195
196      [].forEach.call(this.items, function (item) {
197        _this2.updateItem(item);
198      });
199    }
200  }, {
201    key: 'updateStatus',
202    value: function updateStatus(item) {
203      var _this3 = this;
204
205      var element = item.element,
206          scrolledIn = item.scrolledIn;
207
208      if (scrolledIn) {
209        return;
210      }
211      var target = element.querySelector('[data-target="scrollable-icon"] > span');
212      if ((0, _util.getOffset)(target).top < (0, _util.getScrollTop)() + window.innerHeight) {
213        item.scrolledIn = true;
214        if (this.opt.remainingTime !== -1) {
215          setTimeout(function () {
216            item.interacted = true;
217            _this3.updateItem(item);
218          }, this.opt.remainingTime);
219        }
220      }
221    }
222  }, {
223    key: 'updateItem',
224    value: function updateItem(item) {
225      var opt = this.opt;
226      var element = item.element;
227
228      var target = element.querySelector('[data-target="scrollable-icon"]');
229      this.updateStatus(item);
230      if (this.isScrollable(item)) {
231        (0, _util.addClass)(element, opt.scrollableClass);
232      } else {
233        (0, _util.removeClass)(element, opt.scrollableClass);
234      }
235      if (this.needSuggest(item)) {
236        (0, _util.addClass)(target, opt.suggestClass);
237      } else {
238        (0, _util.removeClass)(target, opt.suggestClass);
239      }
240      if (opt.suggestiveShadow) {
241        this.checkScrollableDir(item);
242      }
243    }
244  }]);
245
246  return ScrollHint;
247}();
248
249exports.default = ScrollHint;
250module.exports = exports['default'];
251
252},{"./util":3,"es6-object-assign":1}],3:[function(require,module,exports){
253'use strict';
254
255Object.defineProperty(exports, "__esModule", {
256  value: true
257});
258var append = exports.append = function append(element, string) {
259  var div = document.createElement('div');
260  div.innerHTML = string;
261  while (div.children.length > 0) {
262    element.appendChild(div.children[0]);
263  }
264};
265
266var addClass = exports.addClass = function addClass(element, className) {
267  if (element.classList) {
268    element.classList.add(className);
269  } else {
270    element.className += ' ' + className;
271  }
272};
273
274var removeClass = exports.removeClass = function removeClass(element, className) {
275  if (element.classList) {
276    element.classList.remove(className);
277  } else {
278    element.className = element.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
279  }
280};
281
282var getScrollTop = exports.getScrollTop = function getScrollTop() {
283  return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
284};
285
286var getScrollLeft = exports.getScrollLeft = function getScrollLeft() {
287  return window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;
288};
289
290var getOffset = exports.getOffset = function getOffset(el) {
291  var rect = el.getBoundingClientRect();
292  return {
293    top: rect.top + getScrollTop(),
294    left: rect.left + getScrollLeft()
295  };
296};
297
298},{}]},{},[2])(2)
299});

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.