title-switcher 2.0.0

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.
package/dist/main.js ADDED
@@ -0,0 +1,449 @@
1
+ 'use strict'
2
+
3
+ // Created by Joshua Heagle
4
+
5
+ /*********************************************
6
+ Title Switcher: to imitate typing and switch to different titles based on DOM.
7
+ Requires titles to be listed as elements inside a div, pass the class of the div as an argument to TitleSwitcher.
8
+ **********************************************/
9
+ require('core-js/modules/es.symbol.to-primitive.js')
10
+ require('core-js/modules/es.date.to-primitive.js')
11
+ require('core-js/modules/es.symbol.js')
12
+ require('core-js/modules/es.symbol.description.js')
13
+ require('core-js/modules/es.number.constructor.js')
14
+ require('core-js/modules/es.object.define-property.js')
15
+ require('core-js/modules/es.symbol.iterator.js')
16
+ function _typeof (o) { '@babel/helpers - typeof'; return _typeof = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? function (o) { return typeof o } : function (o) { return o && typeof Symbol === 'function' && o.constructor === Symbol && o !== Symbol.prototype ? 'symbol' : typeof o }, _typeof(o) }
17
+ Object.defineProperty(exports, '__esModule', {
18
+ value: true
19
+ })
20
+ exports.default = void 0
21
+ require('core-js/modules/es.regexp.exec.js')
22
+ require('core-js/modules/es.string.replace.js')
23
+ require('core-js/modules/es.regexp.constructor.js')
24
+ require('core-js/modules/es.regexp.sticky.js')
25
+ require('core-js/modules/es.regexp.to-string.js')
26
+ require('core-js/modules/es.array.join.js')
27
+ require('core-js/modules/es.array.for-each.js')
28
+ require('core-js/modules/es.object.to-string.js')
29
+ require('core-js/modules/es.string.trim.js')
30
+ require('core-js/modules/web.timers.js')
31
+ require('core-js/modules/esnext.async-iterator.for-each.js')
32
+ require('core-js/modules/esnext.iterator.constructor.js')
33
+ require('core-js/modules/esnext.iterator.for-each.js')
34
+ require('core-js/modules/web.dom-collections.for-each.js')
35
+ require('core-js/modules/es.array.iterator.js')
36
+ require('core-js/modules/es.string.iterator.js')
37
+ require('core-js/modules/es.weak-map.js')
38
+ require('core-js/modules/esnext.weak-map.delete-all.js')
39
+ require('core-js/modules/web.dom-collections.iterator.js')
40
+ var _this = void 0
41
+ function _classCallCheck (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } }
42
+ 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, _toPropertyKey(descriptor.key), descriptor) } }
43
+ function _createClass (Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, 'prototype', { writable: false }); return Constructor }
44
+ function _toPropertyKey (arg) { var key = _toPrimitive(arg, 'string'); return _typeof(key) === 'symbol' ? key : String(key) }
45
+ function _toPrimitive (input, hint) { if (_typeof(input) !== 'object' || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || 'default'); if (_typeof(res) !== 'object') return res; throw new TypeError('@@toPrimitive must return a primitive value.') } return (hint === 'string' ? String : Number)(input) }
46
+ function _classPrivateFieldInitSpec (obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value) }
47
+ function _checkPrivateRedeclaration (obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError('Cannot initialize the same private elements twice on an object') } }
48
+ function _classPrivateFieldGet (receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, 'get'); return _classApplyDescriptorGet(receiver, descriptor) }
49
+ function _classApplyDescriptorGet (receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver) } return descriptor.value }
50
+ function _classPrivateFieldSet (receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, 'set'); _classApplyDescriptorSet(receiver, descriptor, value); return value }
51
+ function _classExtractFieldDescriptor (receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError('attempted to ' + action + ' private field on non-instance') } return privateMap.get(receiver) }
52
+ function _classApplyDescriptorSet (receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value) } else { if (!descriptor.writable) { throw new TypeError('attempted to set read only private field') } descriptor.value = value } }
53
+ var _active = /* #__PURE__ */new WeakMap()
54
+ var _currentClass = /* #__PURE__ */new WeakMap()
55
+ var _currentIndex = /* #__PURE__ */new WeakMap()
56
+ var _delayEffect = /* #__PURE__ */new WeakMap()
57
+ var _delaySwitch = /* #__PURE__ */new WeakMap()
58
+ var _isRandom = /* #__PURE__ */new WeakMap()
59
+ var _switchStyle = /* #__PURE__ */new WeakMap()
60
+ var _titles = /* #__PURE__ */new WeakMap()
61
+ var _titlesContainer = /* #__PURE__ */new WeakMap()
62
+ var _typeSurface = /* #__PURE__ */new WeakMap()
63
+ var TitleSwitcher = /* #__PURE__ */(function () {
64
+ /**
65
+ * Instantiate this as a class to get an instance of TitleSwitcher
66
+ * @param {string} [titlesContainer=''] - The selector where titles are stored
67
+ * @param {Function|string} [switchStyle='typingEffect'] - The function or function name for the effect to apply
68
+ * @constructor
69
+ */
70
+ function TitleSwitcher () {
71
+ var titlesContainer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''
72
+ var switchStyle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'typingEffect'
73
+ _classCallCheck(this, TitleSwitcher)
74
+ _classPrivateFieldInitSpec(this, _active, {
75
+ writable: true,
76
+ value: false
77
+ })
78
+ _classPrivateFieldInitSpec(this, _currentClass, {
79
+ writable: true,
80
+ value: 'displayTitle'
81
+ })
82
+ _classPrivateFieldInitSpec(this, _currentIndex, {
83
+ writable: true,
84
+ value: 0
85
+ })
86
+ _classPrivateFieldInitSpec(this, _delayEffect, {
87
+ writable: true,
88
+ value: 200
89
+ })
90
+ _classPrivateFieldInitSpec(this, _delaySwitch, {
91
+ writable: true,
92
+ value: 400
93
+ })
94
+ _classPrivateFieldInitSpec(this, _isRandom, {
95
+ writable: true,
96
+ value: false
97
+ })
98
+ _classPrivateFieldInitSpec(this, _switchStyle, {
99
+ writable: true,
100
+ value: 'typingEffect'
101
+ })
102
+ _classPrivateFieldInitSpec(this, _titles, {
103
+ writable: true,
104
+ value: []
105
+ })
106
+ _classPrivateFieldInitSpec(this, _titlesContainer, {
107
+ writable: true,
108
+ value: null
109
+ })
110
+ _classPrivateFieldInitSpec(this, _typeSurface, {
111
+ writable: true,
112
+ value: void 0
113
+ })
114
+ _classPrivateFieldSet(this, _currentClass, 'displayTitle')
115
+ _classPrivateFieldSet(this, _switchStyle, this[typeof this[switchStyle] === 'function' ? switchStyle : 'typingEffect'])
116
+ _classPrivateFieldSet(this, _titlesContainer, titlesContainer)
117
+ _classPrivateFieldSet(this, _titles, [])
118
+ var foundContainers = titlesContainer ? document.querySelectorAll(titlesContainer) : []
119
+ if (foundContainers && foundContainers[0]) {
120
+ _classPrivateFieldSet(this, _titlesContainer, foundContainers[0])
121
+ _classPrivateFieldSet(this, _titles, _classPrivateFieldGet(this, _titlesContainer).children)
122
+ }
123
+ }
124
+
125
+ /**
126
+ * Retrieve active
127
+ * @return {boolean}
128
+ */
129
+ _createClass(TitleSwitcher, [{
130
+ key: 'active',
131
+ get: function get () {
132
+ return _classPrivateFieldGet(this, _active)
133
+ }
134
+
135
+ /**
136
+ * Retrieve currentClass
137
+ * @return {string}
138
+ */
139
+ }, {
140
+ key: 'currentClass',
141
+ get: function get () {
142
+ return _classPrivateFieldGet(this, _currentClass)
143
+ }
144
+
145
+ /**
146
+ * Retrieve currentIndex
147
+ * @return {number}
148
+ */
149
+ }, {
150
+ key: 'currentIndex',
151
+ get: function get () {
152
+ return _classPrivateFieldGet(this, _currentIndex)
153
+ }
154
+
155
+ /**
156
+ * Retrieve delayEffect
157
+ * @return {number}
158
+ */
159
+ }, {
160
+ key: 'delayEffect',
161
+ get: function get () {
162
+ return _classPrivateFieldGet(this, _delayEffect)
163
+ }
164
+
165
+ /**
166
+ * Retrieve delaySwitch
167
+ * @return {number}
168
+ */
169
+ }, {
170
+ key: 'delaySwitch',
171
+ get: function get () {
172
+ return _classPrivateFieldGet(this, _delaySwitch)
173
+ }
174
+
175
+ /**
176
+ * Retrieve switchStyle
177
+ * @return {string}
178
+ */
179
+ }, {
180
+ key: 'switchStyle',
181
+ get: function get () {
182
+ return _classPrivateFieldGet(this, _switchStyle)
183
+ }
184
+
185
+ /**
186
+ * Retrieve list of titles DOM elements
187
+ * @return {Array|NodeList}
188
+ */
189
+ }, {
190
+ key: 'titles',
191
+ get: function get () {
192
+ return _classPrivateFieldGet(this, _titles)
193
+ }
194
+
195
+ /**
196
+ * Retrieve typeSurface used
197
+ * @return {HTMLElement|null}
198
+ */
199
+ }, {
200
+ key: 'typeSurface',
201
+ get: function get () {
202
+ return _classPrivateFieldGet(this, _typeSurface)
203
+ }
204
+
205
+ /**
206
+ * This is the function to begin the switching titles
207
+ * @param {Object} [settings={}]
208
+ * @param {number} [settings.delaySwitch=400]
209
+ * @param {number} [settings.delayEffect=200]
210
+ * @param {boolean} [settings.isRandom=false]
211
+ * @param {boolean} [settings.immediatePause=false]
212
+ * @returns {TitleSwitcher}
213
+ */
214
+ }, {
215
+ key: 'startTitles',
216
+ value: function startTitles () {
217
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}
218
+ var _ref$delaySwitch = _ref.delaySwitch
219
+ var delaySwitch = _ref$delaySwitch === void 0 ? 400 : _ref$delaySwitch
220
+ var _ref$delayEffect = _ref.delayEffect
221
+ var delayEffect = _ref$delayEffect === void 0 ? 200 : _ref$delayEffect
222
+ var _ref$isRandom = _ref.isRandom
223
+ var isRandom = _ref$isRandom === void 0 ? false : _ref$isRandom
224
+ var _ref$immediatePause = _ref.immediatePause
225
+ var immediatePause = _ref$immediatePause === void 0 ? false : _ref$immediatePause
226
+ var typeSurface = 'typeSurface'
227
+ _classPrivateFieldSet(this, _delaySwitch, delaySwitch)
228
+ _classPrivateFieldSet(this, _delayEffect, delayEffect)
229
+ _classPrivateFieldSet(this, _isRandom, isRandom)
230
+ _classPrivateFieldSet(this, _active, !immediatePause)
231
+ if (_classPrivateFieldGet(this, _currentIndex) >= _classPrivateFieldGet(this, _titles).length) {
232
+ _classPrivateFieldSet(this, _active, false)
233
+ console.warn("No titles found for '".concat(_classPrivateFieldGet(this, _titlesContainer), "'"))
234
+ return this
235
+ }
236
+ if (_classPrivateFieldGet(this, _isRandom)) {
237
+ _classPrivateFieldSet(this, _currentIndex, Math.round(Math.random() * (_classPrivateFieldGet(this, _titles).length - 2)) + 1)
238
+ }
239
+ var currentTitle = _classPrivateFieldGet(this, _titles)[_classPrivateFieldGet(this, _currentIndex)]
240
+ if (currentTitle.classList) {
241
+ currentTitle.classList.add(_classPrivateFieldGet(this, _currentClass))
242
+ } else {
243
+ currentTitle.className += ' ' + _classPrivateFieldGet(this, _currentClass)
244
+ }
245
+ var typeElement = _classPrivateFieldGet(this, _titles)[0].cloneNode(true)
246
+ if (typeElement.classList) {
247
+ typeElement.classList.add(typeSurface)
248
+ } else {
249
+ typeElement.className += ' ' + typeSurface
250
+ }
251
+ if (typeElement.classList) {
252
+ typeElement.classList.remove(_classPrivateFieldGet(this, _currentClass))
253
+ } else {
254
+ typeElement.className = typeElement.className.replace(new RegExp('(^|\\b)' + typeElement.className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ')
255
+ }
256
+ _classPrivateFieldGet(this, _titlesContainer).insertBefore(typeElement, _classPrivateFieldGet(this, _titlesContainer).firstChild)
257
+ _classPrivateFieldSet(this, _typeSurface, _classPrivateFieldGet(this, _titlesContainer).querySelectorAll('.' + typeSurface)[0])
258
+ _classPrivateFieldGet(this, _typeSurface).innerHTML = ''
259
+ _classPrivateFieldGet(this, _typeSurface).style.display = 'block'
260
+ Array.prototype.forEach.call(_classPrivateFieldGet(this, _titles), function (title) {
261
+ title.style.display = 'none'
262
+ })
263
+ return this.switchTitle(_classPrivateFieldGet(this, _titles)[_classPrivateFieldGet(this, _currentIndex)], _classPrivateFieldGet(this, _switchStyle), this)
264
+ }
265
+
266
+ /**
267
+ * This is the function to pause between switching
268
+ */
269
+ }, {
270
+ key: 'pause',
271
+ value: function pause () {
272
+ _classPrivateFieldSet(this, _active, false)
273
+ }
274
+
275
+ /**
276
+ * This is the function to resume after a pause.
277
+ */
278
+ }, {
279
+ key: 'resume',
280
+ value: function resume () {
281
+ if (!_classPrivateFieldGet(this, _active)) {
282
+ _classPrivateFieldSet(this, _active, true)
283
+ this.switchTitle(_classPrivateFieldGet(this, _titles)[_classPrivateFieldGet(this, _currentIndex)], _classPrivateFieldGet(this, _switchStyle), this)
284
+ }
285
+ }
286
+
287
+ /**
288
+ * This is the core function for switching titles
289
+ * @param {HTMLElement} currentTitle
290
+ * @param {Function} callBackFunction
291
+ * @param {TitleSwitcher} self
292
+ * @param {boolean} [runOnce=false]
293
+ * @returns {TitleSwitcher}
294
+ */
295
+ }, {
296
+ key: 'switchTitle',
297
+ value: function switchTitle (currentTitle, callBackFunction, self) {
298
+ var runOnce = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false
299
+ self = self || this
300
+ var currentIndex = 1
301
+ var size = _classPrivateFieldGet(self, _titles).length
302
+ for (var i = 1; i < size; ++i) {
303
+ if (_classPrivateFieldGet(self, _titles)[i] === currentTitle) {
304
+ currentIndex = i
305
+ break
306
+ }
307
+ }
308
+ if (!_classPrivateFieldGet(self, _active)) {
309
+ _classPrivateFieldSet(self, _currentIndex, currentIndex)
310
+ return self
311
+ }
312
+ var maxIndex = _classPrivateFieldGet(self, _titles).length - 1
313
+ var nextIndex = 1
314
+ if (maxIndex === 1) {
315
+ return callBackFunction(currentTitle, self.switchTitle, self)
316
+ }
317
+ if (_classPrivateFieldGet(self, _isRandom)) {
318
+ if (!self.typeSurface.textContent.trim()) {
319
+ currentIndex = -1
320
+ }
321
+ do {
322
+ nextIndex = Math.round(Math.random() * (maxIndex - 1)) + 1
323
+ } while (nextIndex === currentIndex)
324
+ } else {
325
+ if (!self.typeSurface.textContent.trim()) {
326
+ currentIndex = maxIndex
327
+ }
328
+ nextIndex = currentIndex < maxIndex ? currentIndex + 1 : 1
329
+ }
330
+ var nextTitle = _classPrivateFieldGet(self, _titles)[nextIndex]
331
+ if (currentTitle.classList) {
332
+ currentTitle.classList.remove(self.currentClass)
333
+ } else {
334
+ currentTitle.className = currentTitle.className.replace(new RegExp('(^|\\b)' + currentTitle.className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ')
335
+ }
336
+ if (nextTitle.classList) {
337
+ nextTitle.classList.add(self.currentClass)
338
+ } else {
339
+ nextTitle.className += ' ' + self.currentClass
340
+ }
341
+ return callBackFunction(nextTitle, runOnce ? function () {
342
+ return null
343
+ } : self.switchTitle, self, runOnce)
344
+ }
345
+ }])
346
+ return TitleSwitcher
347
+ }())
348
+ /**
349
+ * This is a helper function to improve the default 'typingEffect'
350
+ * @param {boolean} blinkOn
351
+ * @param {TitleSwitcher} self
352
+ * @return {TitleSwitcher}
353
+ */
354
+ TitleSwitcher.prototype.cursorBlink = function (blinkOn, self) {
355
+ // display cursor effect
356
+ self = self || _this
357
+ if (blinkOn) {
358
+ self.typeSurface.innerHTML = self.typeSurface.innerHTML.replace(/\||&nbsp;*(<\/span>)?$/, '$1').trim()
359
+ self.typeSurface.innerHTML = self.typeSurface.innerHTML + '<span style="display: inline-block;font-weight: normal; color: black; text-decoration: none">&#124;</span>'
360
+ } else {
361
+ self.typeSurface.innerHTML = self.typeSurface.innerHTML.replace(/\|(<\/span>)$/, '&nbsp;$1')
362
+ }
363
+ return self
364
+ }
365
+
366
+ /**
367
+ * This is the default and example of an effect being implemented when Titles are switched
368
+ * These functions take the currentElement in focus, the switchTitle function as a callback
369
+ * and an instance of the TitleSwitcher
370
+ * @param {HTMLElement} domObject
371
+ * @param {Function} callBackFunction
372
+ * @param {TitleSwitcher} self
373
+ * @param {boolean} [runOnce=false]
374
+ * @returns {TitleSwitcher}
375
+ */
376
+ TitleSwitcher.prototype.typingEffect = function (domObject, callBackFunction, self) {
377
+ var runOnce = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false
378
+ self = self || _this
379
+ var size = self.titles.length
380
+ var currentIndex = 0
381
+ for (var i = 1; i < size; ++i) {
382
+ if (self.titles[i] === domObject) {
383
+ currentIndex = i
384
+ break
385
+ }
386
+ }
387
+ domObject = domObject || self.titles[currentIndex + 1]
388
+ callBackFunction = callBackFunction || self.switchStyle
389
+ var blinkOn = true
390
+ var numBlinks = 4
391
+ if (self.typeSurface.hasAttribute('style')) {
392
+ self.typeSurface.removeAttribute('style')
393
+ }
394
+ if (domObject.hasAttribute('style')) {
395
+ self.typeSurface.setAttribute('style', domObject.getAttribute('style'))
396
+ }
397
+ // If we copied the title style, then display:none is set, so we need to ensure the surface is display:block
398
+ self.typeSurface.innerHTML = ''
399
+ self.typeSurface.style.display = 'block'
400
+
401
+ // Initialize with a few cursor blinks
402
+ for (var _i = 0; _i < numBlinks; ++_i) {
403
+ setTimeout(function () {
404
+ self.cursorBlink(blinkOn, self)
405
+ blinkOn = !blinkOn
406
+ }, _i * self.delaySwitch)
407
+ }
408
+ setTimeout(function () {
409
+ // Empty the surface, and display the cursor (cursor is always solid while typing / not flashing)
410
+ self.typeSurface.innerHTML = ''
411
+ self.cursorBlink(true, self)
412
+ // Copy each letter from the current title (text only)
413
+ domObject.textContent.split('').forEach(function (letter, i) {
414
+ setTimeout(function () {
415
+ // Remove the previous cursor, place the new letter, then append a formatted cursor on the end
416
+ self.typeSurface.innerHTML = self.typeSurface.textContent.replace('|', '') + letter + '<span style="font-weight: normal; color: black; text-decoration: none">&#124;</span>'
417
+ // If the text content equals the title content with a cursor appended then we reached the end.
418
+ if (domObject.textContent + '|' === self.typeSurface.textContent) {
419
+ // Replace html with old html on last letter, so we get all the html formatting applied
420
+ self.typeSurface.innerHTML = domObject.innerHTML + '<span style="font-weight: normal; color: black; text-decoration: none">&#124;</span>'
421
+ // Run the blinking cursor two times the regular time in order to let the text be readable before switching
422
+ var _loop = function _loop (_j) {
423
+ setTimeout(function () {
424
+ --_j
425
+ self.cursorBlink(blinkOn, self)
426
+ if (_j === 0) {
427
+ callBackFunction(domObject, function () {
428
+ return null
429
+ }, self, runOnce)
430
+ // callBackFunction(domObject, runOnce ? () => null : self.switchStyle, self, runOnce)
431
+ }
432
+ }, _j * self.delaySwitch)
433
+ j = _j
434
+ }
435
+ for (var j = 0; j < numBlinks * 2; ++j) {
436
+ _loop(j)
437
+ }
438
+ }
439
+ }, i * self.delayEffect)
440
+ })
441
+ }, numBlinks * self.delaySwitch)
442
+ return self
443
+ }
444
+ var _default = exports.default = TitleSwitcher
445
+ if (void 0) {
446
+ (void 0).TitleSwitcher = TitleSwitcher
447
+ } else if (typeof window !== 'undefined') {
448
+ window.TitleSwitcher = TitleSwitcher
449
+ }
@@ -0,0 +1 @@
1
+ "use strict";function _typeof(e){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_typeof(e)}require("core-js/modules/es.symbol.to-primitive.js"),require("core-js/modules/es.date.to-primitive.js"),require("core-js/modules/es.symbol.js"),require("core-js/modules/es.symbol.description.js"),require("core-js/modules/es.number.constructor.js"),require("core-js/modules/es.object.define-property.js"),require("core-js/modules/es.symbol.iterator.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0,require("core-js/modules/es.regexp.exec.js"),require("core-js/modules/es.string.replace.js"),require("core-js/modules/es.regexp.constructor.js"),require("core-js/modules/es.regexp.sticky.js"),require("core-js/modules/es.regexp.to-string.js"),require("core-js/modules/es.array.join.js"),require("core-js/modules/es.array.for-each.js"),require("core-js/modules/es.object.to-string.js"),require("core-js/modules/es.string.trim.js"),require("core-js/modules/web.timers.js"),require("core-js/modules/esnext.async-iterator.for-each.js"),require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.for-each.js"),require("core-js/modules/web.dom-collections.for-each.js"),require("core-js/modules/es.array.iterator.js"),require("core-js/modules/es.string.iterator.js"),require("core-js/modules/es.weak-map.js"),require("core-js/modules/esnext.weak-map.delete-all.js"),require("core-js/modules/web.dom-collections.iterator.js");var _this=void 0;function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var i=0;i<t.length;i++){var s=t[i];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,_toPropertyKey(s.key),s)}}function _createClass(e,t,i){return t&&_defineProperties(e.prototype,t),i&&_defineProperties(e,i),Object.defineProperty(e,"prototype",{writable:!1}),e}function _toPropertyKey(e){var t=_toPrimitive(e,"string");return"symbol"===_typeof(t)?t:String(t)}function _toPrimitive(e,t){if("object"!==_typeof(e)||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var s=i.call(e,t||"default");if("object"!==_typeof(s))return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function _classPrivateFieldInitSpec(e,t,i){_checkPrivateRedeclaration(e,t),t.set(e,i)}function _checkPrivateRedeclaration(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function _classPrivateFieldGet(e,t){return _classApplyDescriptorGet(e,_classExtractFieldDescriptor(e,t,"get"))}function _classApplyDescriptorGet(e,t){return t.get?t.get.call(e):t.value}function _classPrivateFieldSet(e,t,i){return _classApplyDescriptorSet(e,_classExtractFieldDescriptor(e,t,"set"),i),i}function _classExtractFieldDescriptor(e,t,i){if(!t.has(e))throw new TypeError("attempted to "+i+" private field on non-instance");return t.get(e)}function _classApplyDescriptorSet(e,t,i){if(t.set)t.set.call(e,i);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=i}}var _active=new WeakMap,_currentClass=new WeakMap,_currentIndex=new WeakMap,_delayEffect=new WeakMap,_delaySwitch=new WeakMap,_isRandom=new WeakMap,_switchStyle=new WeakMap,_titles=new WeakMap,_titlesContainer=new WeakMap,_typeSurface=new WeakMap,TitleSwitcher=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"typingEffect";_classCallCheck(this,e),_classPrivateFieldInitSpec(this,_active,{writable:!0,value:!1}),_classPrivateFieldInitSpec(this,_currentClass,{writable:!0,value:"displayTitle"}),_classPrivateFieldInitSpec(this,_currentIndex,{writable:!0,value:0}),_classPrivateFieldInitSpec(this,_delayEffect,{writable:!0,value:200}),_classPrivateFieldInitSpec(this,_delaySwitch,{writable:!0,value:400}),_classPrivateFieldInitSpec(this,_isRandom,{writable:!0,value:!1}),_classPrivateFieldInitSpec(this,_switchStyle,{writable:!0,value:"typingEffect"}),_classPrivateFieldInitSpec(this,_titles,{writable:!0,value:[]}),_classPrivateFieldInitSpec(this,_titlesContainer,{writable:!0,value:null}),_classPrivateFieldInitSpec(this,_typeSurface,{writable:!0,value:void 0}),_classPrivateFieldSet(this,_currentClass,"displayTitle"),_classPrivateFieldSet(this,_switchStyle,this["function"==typeof this[i]?i:"typingEffect"]),_classPrivateFieldSet(this,_titlesContainer,t),_classPrivateFieldSet(this,_titles,[]);var s=t?document.querySelectorAll(t):[];s&&s[0]&&(_classPrivateFieldSet(this,_titlesContainer,s[0]),_classPrivateFieldSet(this,_titles,_classPrivateFieldGet(this,_titlesContainer).children))}return _createClass(e,[{key:"active",get:function(){return _classPrivateFieldGet(this,_active)}},{key:"currentClass",get:function(){return _classPrivateFieldGet(this,_currentClass)}},{key:"currentIndex",get:function(){return _classPrivateFieldGet(this,_currentIndex)}},{key:"delayEffect",get:function(){return _classPrivateFieldGet(this,_delayEffect)}},{key:"delaySwitch",get:function(){return _classPrivateFieldGet(this,_delaySwitch)}},{key:"switchStyle",get:function(){return _classPrivateFieldGet(this,_switchStyle)}},{key:"titles",get:function(){return _classPrivateFieldGet(this,_titles)}},{key:"typeSurface",get:function(){return _classPrivateFieldGet(this,_typeSurface)}},{key:"startTitles",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.delaySwitch,i=void 0===t?400:t,s=e.delayEffect,r=void 0===s?200:s,a=e.isRandom,l=void 0!==a&&a,c=e.immediatePause,n=void 0!==c&&c,o="typeSurface";if(_classPrivateFieldSet(this,_delaySwitch,i),_classPrivateFieldSet(this,_delayEffect,r),_classPrivateFieldSet(this,_isRandom,l),_classPrivateFieldSet(this,_active,!n),_classPrivateFieldGet(this,_currentIndex)>=_classPrivateFieldGet(this,_titles).length)return _classPrivateFieldSet(this,_active,!1),console.warn("No titles found for '".concat(_classPrivateFieldGet(this,_titlesContainer),"'")),this;_classPrivateFieldGet(this,_isRandom)&&_classPrivateFieldSet(this,_currentIndex,Math.round(Math.random()*(_classPrivateFieldGet(this,_titles).length-2))+1);var u=_classPrivateFieldGet(this,_titles)[_classPrivateFieldGet(this,_currentIndex)];u.classList?u.classList.add(_classPrivateFieldGet(this,_currentClass)):u.className+=" "+_classPrivateFieldGet(this,_currentClass);var d=_classPrivateFieldGet(this,_titles)[0].cloneNode(!0);return d.classList?d.classList.add(o):d.className+=" "+o,d.classList?d.classList.remove(_classPrivateFieldGet(this,_currentClass)):d.className=d.className.replace(new RegExp("(^|\\b)"+d.className.split(" ").join("|")+"(\\b|$)","gi")," "),_classPrivateFieldGet(this,_titlesContainer).insertBefore(d,_classPrivateFieldGet(this,_titlesContainer).firstChild),_classPrivateFieldSet(this,_typeSurface,_classPrivateFieldGet(this,_titlesContainer).querySelectorAll("."+o)[0]),_classPrivateFieldGet(this,_typeSurface).innerHTML="",_classPrivateFieldGet(this,_typeSurface).style.display="block",Array.prototype.forEach.call(_classPrivateFieldGet(this,_titles),(function(e){e.style.display="none"})),this.switchTitle(_classPrivateFieldGet(this,_titles)[_classPrivateFieldGet(this,_currentIndex)],_classPrivateFieldGet(this,_switchStyle),this)}},{key:"pause",value:function(){_classPrivateFieldSet(this,_active,!1)}},{key:"resume",value:function(){_classPrivateFieldGet(this,_active)||(_classPrivateFieldSet(this,_active,!0),this.switchTitle(_classPrivateFieldGet(this,_titles)[_classPrivateFieldGet(this,_currentIndex)],_classPrivateFieldGet(this,_switchStyle),this))}},{key:"switchTitle",value:function(e,t,i){for(var s=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=1,a=_classPrivateFieldGet(i=i||this,_titles).length,l=1;l<a;++l)if(_classPrivateFieldGet(i,_titles)[l]===e){r=l;break}if(!_classPrivateFieldGet(i,_active))return _classPrivateFieldSet(i,_currentIndex,r),i;var c=_classPrivateFieldGet(i,_titles).length-1,n=1;if(1===c)return t(e,i.switchTitle,i);if(_classPrivateFieldGet(i,_isRandom)){i.typeSurface.textContent.trim()||(r=-1);do{n=Math.round(Math.random()*(c-1))+1}while(n===r)}else i.typeSurface.textContent.trim()||(r=c),n=r<c?r+1:1;var o=_classPrivateFieldGet(i,_titles)[n];return e.classList?e.classList.remove(i.currentClass):e.className=e.className.replace(new RegExp("(^|\\b)"+e.className.split(" ").join("|")+"(\\b|$)","gi")," "),o.classList?o.classList.add(i.currentClass):o.className+=" "+i.currentClass,t(o,s?function(){return null}:i.switchTitle,i,s)}}]),e}();TitleSwitcher.prototype.cursorBlink=function(e,t){return t=t||_this,e?(t.typeSurface.innerHTML=t.typeSurface.innerHTML.replace(/\||&nbsp;*(<\/span>)?$/,"$1").trim(),t.typeSurface.innerHTML=t.typeSurface.innerHTML+'<span style="display: inline-block;font-weight: normal; color: black; text-decoration: none">&#124;</span>'):t.typeSurface.innerHTML=t.typeSurface.innerHTML.replace(/\|(<\/span>)$/,"&nbsp;$1"),t},TitleSwitcher.prototype.typingEffect=function(e,t,i){for(var s=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=(i=i||_this).titles.length,a=0,l=1;l<r;++l)if(i.titles[l]===e){a=l;break}e=e||i.titles[a+1],t=t||i.switchStyle;var c=!0;i.typeSurface.hasAttribute("style")&&i.typeSurface.removeAttribute("style"),e.hasAttribute("style")&&i.typeSurface.setAttribute("style",e.getAttribute("style")),i.typeSurface.innerHTML="",i.typeSurface.style.display="block";for(var n=0;n<4;++n)setTimeout((function(){i.cursorBlink(c,i),c=!c}),n*i.delaySwitch);return setTimeout((function(){i.typeSurface.innerHTML="",i.cursorBlink(!0,i),e.textContent.split("").forEach((function(r,a){setTimeout((function(){if(i.typeSurface.innerHTML=i.typeSurface.textContent.replace("|","")+r+'<span style="font-weight: normal; color: black; text-decoration: none">&#124;</span>',e.textContent+"|"===i.typeSurface.textContent){i.typeSurface.innerHTML=e.innerHTML+'<span style="font-weight: normal; color: black; text-decoration: none">&#124;</span>';for(var a=function(r){setTimeout((function(){--r,i.cursorBlink(c,i),0===r&&t(e,(function(){return null}),i,s)}),r*i.delaySwitch),l=r},l=0;l<8;++l)a(l)}}),a*i.delayEffect)}))}),4*i.delaySwitch),i};var _default=exports.default=TitleSwitcher;"undefined"!=typeof window&&(window.TitleSwitcher=TitleSwitcher);
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "title-switcher",
3
+ "version": "2.0.0",
4
+ "description": "Add typing effect to titles and also switch through several titles.",
5
+ "scripts": {
6
+ "build": "gulp build",
7
+ "dev": "gulp",
8
+ "htmldocs": "jsdoc -R MAIN.md -c ./.jsdoc.conf.js -d docs",
9
+ "readme": "gulp readme",
10
+ "resolutions": "npx npm-force-resolutions",
11
+ "test": "gulp testFull",
12
+ "test:quick": "gulp testQuick",
13
+ "watch": "gulp watchFull",
14
+ "watch:test": "gulp watchTest"
15
+ },
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/jheagle/title-switcher-v2.git"
19
+ },
20
+ "author": "Joshua Heagle",
21
+ "license": "MIT",
22
+ "bugs": {
23
+ "url": "https://github.com/jheagle/title-switcher-v2/issues"
24
+ },
25
+ "homepage": "https://github.com/jheagle/title-switcher-v2#readme",
26
+ "devDependencies": {
27
+ "js-build-tools": "^2.2.7"
28
+ },
29
+ "dependencies": {},
30
+ "main": "dist/main.min.js",
31
+ "files": [
32
+ "dist",
33
+ "browser"
34
+ ],
35
+ "standard": {
36
+ "env": [
37
+ "jest"
38
+ ]
39
+ },
40
+ "directories": {
41
+ "doc": "docs"
42
+ }
43
+ }