typed.js 2.0.0 → 2.0.1-3.1

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 (57) hide show
  1. package/LICENSE.txt +1 -1
  2. package/README.md +117 -79
  3. package/dist/typed.cjs +2 -0
  4. package/dist/typed.cjs.map +1 -0
  5. package/dist/typed.module.js +2 -0
  6. package/dist/typed.module.js.map +1 -0
  7. package/dist/typed.umd.js +3 -0
  8. package/dist/typed.umd.js.map +1 -0
  9. package/index.d.ts +131 -0
  10. package/package.json +22 -24
  11. package/.codeclimate.yml +0 -30
  12. package/.csslintrc +0 -2
  13. package/.esdoc.json +0 -4
  14. package/.eslintignore +0 -2
  15. package/.eslintrc.yml +0 -21
  16. package/.npmignore +0 -4
  17. package/.travis.yml +0 -18
  18. package/.vscode/launch.json +0 -14
  19. package/.vscode/settings.json +0 -11
  20. package/bower.json +0 -16
  21. package/docs/API.md +0 -221
  22. package/docs/assets/anchor.js +0 -197
  23. package/docs/assets/bass-addons.css +0 -12
  24. package/docs/assets/bass.css +0 -543
  25. package/docs/assets/fonts/EOT/SourceCodePro-Bold.eot +0 -0
  26. package/docs/assets/fonts/EOT/SourceCodePro-Regular.eot +0 -0
  27. package/docs/assets/fonts/LICENSE.txt +0 -93
  28. package/docs/assets/fonts/OTF/SourceCodePro-Bold.otf +0 -0
  29. package/docs/assets/fonts/OTF/SourceCodePro-Regular.otf +0 -0
  30. package/docs/assets/fonts/TTF/SourceCodePro-Bold.ttf +0 -0
  31. package/docs/assets/fonts/TTF/SourceCodePro-Regular.ttf +0 -0
  32. package/docs/assets/fonts/WOFF/OTF/SourceCodePro-Bold.otf.woff +0 -0
  33. package/docs/assets/fonts/WOFF/OTF/SourceCodePro-Regular.otf.woff +0 -0
  34. package/docs/assets/fonts/WOFF/TTF/SourceCodePro-Bold.ttf.woff +0 -0
  35. package/docs/assets/fonts/WOFF/TTF/SourceCodePro-Regular.ttf.woff +0 -0
  36. package/docs/assets/fonts/WOFF2/OTF/SourceCodePro-Bold.otf.woff2 +0 -0
  37. package/docs/assets/fonts/WOFF2/OTF/SourceCodePro-Regular.otf.woff2 +0 -0
  38. package/docs/assets/fonts/WOFF2/TTF/SourceCodePro-Bold.ttf.woff2 +0 -0
  39. package/docs/assets/fonts/WOFF2/TTF/SourceCodePro-Regular.ttf.woff2 +0 -0
  40. package/docs/assets/fonts/source-code-pro.css +0 -23
  41. package/docs/assets/github.css +0 -123
  42. package/docs/assets/site.js +0 -108
  43. package/docs/assets/style.css +0 -136
  44. package/docs/index.html +0 -2138
  45. package/gulpfile.js +0 -61
  46. package/index.html +0 -110
  47. package/lib/typed.js +0 -989
  48. package/lib/typed.min.js +0 -11
  49. package/lib/typed.min.js.map +0 -1
  50. package/logo-cropped.png +0 -0
  51. package/logo.png +0 -0
  52. package/main.css +0 -44
  53. package/src/defaults.js +0 -151
  54. package/src/html-parser.js +0 -68
  55. package/src/initializer.js +0 -133
  56. package/src/typed.js +0 -396
  57. package/webpack.config.js +0 -47
package/lib/typed.min.js DELETED
@@ -1,11 +0,0 @@
1
- /*!
2
- *
3
- * typed.js - A jQuery typing animation script
4
- * Author: Matt Boldt <me@mattboldt.com>
5
- * Version: v2.0.0
6
- * Url: https://github.com/mattboldt/typed.js
7
- * License(s): MIT
8
- *
9
- */
10
- (function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Typed=e():t.Typed=e()})(this,function(){return function(t){function e(n){if(s[n])return s[n].exports;var i=s[n]={exports:{},id:n,loaded:!1};return t[n].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var s={};return e.m=t,e.c=s,e.p="",e(0)}([function(t,e,s){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t,e){for(var s=0;s<e.length;s++){var n=e[s];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,s,n){return s&&t(e.prototype,s),n&&t(e,n),e}}(),r=s(1),o=s(3),a=function(){function t(e,s){n(this,t),r.initializer.load(this,s,e),this.begin()}return i(t,[{key:"toggle",value:function(){this.pause.status?this.start():this.stop()}},{key:"stop",value:function(){this.typingComplete||this.pause.status||(this.toggleBlinking(!0),this.pause.status=!0,this.options.onStop(this.arrayPos,this))}},{key:"start",value:function(){this.typingComplete||this.pause.status&&(this.pause.status=!1,this.pause.typewrite?this.typewrite(this.pause.curString,this.pause.curStrPos):this.backspace(this.pause.curString,this.pause.curStrPos),this.options.onStart(this.arrayPos,this))}},{key:"destroy",value:function(){this.reset(!1),this.options.onDestroy(this)}},{key:"reset",value:function(){var t=arguments.length<=0||void 0===arguments[0]||arguments[0];clearInterval(this.timeout),this.replaceText(""),this.cursor&&this.cursor.parentNode&&this.cursor.parentNode.removeChild(this.cursor),this.strPos=0,this.arrayPos=0,this.curLoop=0,t&&(this.options.onReset(this),this.begin())}},{key:"begin",value:function(){var t=this;this.typingComplete=!1,this.shuffleStringsIfNeeded(this),this.insertCursor(),this.bindInputFocusEvents&&this.bindFocusEvents(),this.timeout=setTimeout(function(){t.currentElContent&&0!==t.currentElContent.length?t.backspace(t.currentElContent,t.currentElContent.length):t.typewrite(t.strings[t.sequence[t.arrayPos]],t.strPos)},this.startDelay)}},{key:"typewrite",value:function(t,e){var s=this;this.fadeOut&&this.el.classList.contains(this.fadeOutClass)&&(this.el.classList.remove(this.fadeOutClass),this.cursor.classList.remove(this.fadeOutClass));var n=this.humanizer(this.typeSpeed);return this.pause.status===!0?void this.setPauseStatus(t,e,!0):void(this.timeout=setTimeout(function(){var n=0,i=t.substr(e);if("^"===i.charAt(0)){var r=1;/^\^\d+/.test(i)&&(i=/\d+/.exec(i)[0],r+=i.length,n=parseInt(i),s.temporaryPause=!0,s.options.onTypingPaused(s.arrayPos,s)),s.toggleBlinking(!0),t=t.substring(0,e)+t.substring(e+r)}e=o.htmlParser.typeHtmlChars(t,e,s),s.timeout=setTimeout(function(){s.toggleBlinking(!1),e===t.length?s.doneTyping(t,e):s.keepTyping(t,e),s.temporaryPause&&(s.temporaryPause=!1,s.options.onTypingResumed(s.arrayPos,s))},n)},n))}},{key:"keepTyping",value:function(t,e){0===e&&(this.toggleBlinking(!1),this.options.preStringTyped(this.arrayPos,this));var s=t.substr(0,e+1);this.replaceText(s),e++,this.typewrite(t,e)}},{key:"doneTyping",value:function(t,e){var s=this;this.options.onStringTyped(this.arrayPos,this),this.toggleBlinking(!0),this.arrayPos===this.strings.length-1&&(this.complete(),this.loop===!1||this.curLoop===this.loopCount)||(this.timeout=setTimeout(function(){s.backspace(t,e)},this.backDelay))}},{key:"backspace",value:function(t,e){var s=this;if(this.pause.status===!0)return void this.setPauseStatus(t,e,!0);if(this.fadeOut)return this.initFadeOut();this.toggleBlinking(!1);var n=this.humanizer(this.backSpeed);this.timeout=setTimeout(function(){e=o.htmlParser.backSpaceHtmlChars(t,e,s);var n=t.substr(0,e);s.replaceText(n),s.smartBackspace&&(n===s.strings[s.arrayPos+1].substr(0,e)?s.stopNum=e:s.stopNum=0),e>s.stopNum?(e--,s.backspace(t,e)):e<=s.stopNum&&(s.arrayPos++,s.arrayPos===s.strings.length?(s.arrayPos=0,s.options.onLastStringBackspaced(),s.shuffleStringsIfNeeded(),s.begin()):s.typewrite(s.strings[s.sequence[s.arrayPos]],e))},n)}},{key:"complete",value:function(){this.options.onComplete(this),this.loop?this.curLoop++:this.typingComplete=!0}},{key:"setPauseStatus",value:function(t,e,s){this.pause.typewrite=s,this.pause.curString=t,this.pause.curStrPos=e}},{key:"toggleBlinking",value:function(t){if(this.cusror&&!this.pause.status&&this.cursorBlinking!==t){this.cursorBlinking=t;var e=t?"infinite":0;this.cursor.style.animationIterationCount=e}}},{key:"humanizer",value:function(t){return Math.round(Math.random()*t/2)+t}},{key:"shuffleStringsIfNeeded",value:function(){this.shuffle&&(this.sequence=this.sequence.sort(function(){return Math.random()-.5}))}},{key:"initFadeOut",value:function(){var t=this;return this.el.className+=" "+this.fadeOutClass,this.cursor.className+=" "+this.fadeOutClass,setTimeout(function(){t.arrayPos++,t.replaceText(""),t.strings.length>t.arrayPos?t.typewrite(t.strings[t.sequence[t.arrayPos]],0):(t.typewrite(t.strings[0],0),t.arrayPos=0)},this.fadeOutDelay)}},{key:"replaceText",value:function(t){this.attr?this.el.setAttribute(this.attr,t):this.isInput?this.el.value=t:"html"===this.contentType?this.el.innerHTML=t:this.el.textContent=t}},{key:"bindFocusEvents",value:function(){var t=this;this.isInput&&(this.el.addEventListener("focus",function(e){t.stop()}),this.el.addEventListener("blur",function(e){t.start()}))}},{key:"insertCursor",value:function(){this.showCursor&&(this.cursor=document.createElement("span"),this.cursor.className="typed-cursor",this.cursor.innerHTML=this.cursorChar,this.el.parentNode&&this.el.parentNode.insertBefore(this.cursor,this.el.nextSibling))}}]),t}();e["default"]=a,t.exports=e["default"]},function(t,e,s){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var s=0;s<e.length;s++){var n=e[s];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,s,n){return s&&t(e.prototype,s),n&&t(e,n),e}}(),o=s(2),a=n(o),u=function(){function t(){i(this,t)}return r(t,[{key:"load",value:function(t,e,s){if(t.el=document.querySelector(s),t.options={},Object.assign(t.options,a["default"],e),t.isInput="input"===t.el.tagName.toLowerCase(),t.attr=t.options.attr,t.bindInputFocusEvents=t.options.bindInputFocusEvents,t.showCursor=!t.isInput&&t.options.showCursor,t.cursorChar=t.options.cursorChar,t.cursorBlinking=!0,t.elContent=t.attr?t.el.getAttribute(t.attr):t.el.textContent,t.contentType=t.options.contentType,t.typeSpeed=t.options.typeSpeed,t.startDelay=t.options.startDelay,t.backSpeed=t.options.backSpeed,t.smartBackspace=t.options.smartBackspace,t.backDelay=t.options.backDelay,t.fadeOut=t.options.fadeOut,t.fadeOutClass=t.options.fadeOutClass,t.fadeOutDelay=t.options.fadeOutDelay,t.isPaused=!1,t.strings=t.options.strings.map(function(t){return t.trim()}),t.stringsElement=document.querySelector(t.options.stringsElement),t.stringsElement){t.strings=[],t.stringsElement.style.display="none";var n=Array.prototype.slice.apply(t.stringsElement.children),i=!0,r=!1,o=void 0;try{for(var u,l=n[Symbol.iterator]();!(i=(u=l.next()).done);i=!0){var c=u.value;t.strings.push(c.innerHTML.trim())}}catch(p){r=!0,o=p}finally{try{!i&&l["return"]&&l["return"]()}finally{if(r)throw o}}}t.strPos=0,t.arrayPos=0,t.stopNum=0,t.loop=t.options.loop,t.loopCount=t.options.loopCount,t.curLoop=0,t.shuffle=t.options.shuffle,t.sequence=[],t.pause={status:!1,typewrite:!0,curString:"",curStrPos:0},t.typingComplete=!1;for(var h in t.strings)t.sequence[h]=h;t.currentElContent=this.getCurrentElContent(t)}},{key:"getCurrentElContent",value:function(t){var e="";return e=t.attr?t.el.getAttribute(t.attr):t.isInput?t.el.value:"html"===t.contentType?t.el.innerHTML:t.el.textContent}}]),t}();e["default"]=u;var l=new u;e.initializer=l},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var s={strings:["These are the default values...","You know what you should do?","Use your own!","Have a great day!"],stringsElement:null,typeSpeed:0,startDelay:0,backSpeed:0,smartBackspace:!0,shuffle:!1,backDelay:500,fadeOut:!1,fadeOutClass:"typed-fade-out",fadeOutDelay:500,loop:!1,loopCount:1/0,showCursor:!0,cursorChar:"|",attr:null,bindInputFocusEvents:!1,contentType:"html",onComplete:function(t){},preStringTyped:function(t,e){},onStringTyped:function(t,e){},onLastStringBackspaced:function(t){},onTypingPaused:function(t,e){},onTypingResumed:function(t,e){},onReset:function(t){},onStop:function(t,e){},onStart:function(t,e){},onDestroy:function(t){}};e["default"]=s,t.exports=e["default"]},function(t,e){"use strict";function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var s=0;s<e.length;s++){var n=e[s];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,s,n){return s&&t(e.prototype,s),n&&t(e,n),e}}(),i=function(){function t(){s(this,t)}return n(t,[{key:"typeHtmlChars",value:function(t,e,s){if("html"!==s.contentType)return e;var n=t.substr(e).charAt(0);if("<"===n||"&"===n){var i="";for(i="<"===n?">":";";t.substr(e+1).charAt(0)!==i&&(e++,!(e+1>t.length)););e++}return e}},{key:"backSpaceHtmlChars",value:function(t,e,s){if("html"!==s.contentType)return e;var n=t.substr(e).charAt(0);if(">"===n||";"===n){var i="";for(i=">"===n?"<":"&";t.substr(e-1).charAt(0)!==i&&(e--,!(e<0)););e--}return e}}]),t}();e["default"]=i;var r=new i;e.htmlParser=r}])});
11
- //# sourceMappingURL=typed.min.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["typed.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_classCallCheck","instance","Constructor","TypeError","Object","defineProperty","value","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","key","protoProps","staticProps","prototype","_initializerJs","_htmlParserJs","Typed","elementId","options","initializer","load","begin","pause","status","start","stop","typingComplete","toggleBlinking","onStop","arrayPos","typewrite","curString","curStrPos","backspace","onStart","reset","onDestroy","restart","arguments","undefined","clearInterval","timeout","replaceText","cursor","parentNode","removeChild","strPos","curLoop","onReset","_this","shuffleStringsIfNeeded","insertCursor","bindInputFocusEvents","bindFocusEvents","setTimeout","currentElContent","strings","sequence","startDelay","_this2","fadeOut","el","classList","contains","fadeOutClass","remove","humanize","humanizer","typeSpeed","setPauseStatus","pauseTime","substr","charAt","skip","test","exec","parseInt","temporaryPause","onTypingPaused","substring","htmlParser","typeHtmlChars","doneTyping","keepTyping","onTypingResumed","preStringTyped","nextString","_this3","onStringTyped","complete","loop","loopCount","backDelay","_this4","initFadeOut","backSpeed","backSpaceHtmlChars","smartBackspace","stopNum","onLastStringBackspaced","onComplete","isTyping","isBlinking","cusror","cursorBlinking","style","animationIterationCount","speed","Math","round","random","shuffle","sort","_this5","className","fadeOutDelay","str","attr","setAttribute","isInput","contentType","innerHTML","textContent","_this6","addEventListener","e","showCursor","document","createElement","cursorChar","insertBefore","nextSibling","_interopRequireDefault","obj","__esModule","default","_defaultsJs","_defaultsJs2","Initializer","self","querySelector","assign","tagName","toLowerCase","elContent","getAttribute","isPaused","map","s","trim","stringsElement","display","Array","slice","apply","children","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","Symbol","iterator","next","done","push","err","getCurrentElContent","defaults","Infinity","HTMLParser","curChar","endTag"],"mappings":"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","file":"typed.min.js","sourcesContent":["/*!\n * \n * typed.js - A jQuery typing animation script\n * Author: Matt Boldt <me@mattboldt.com>\n * Version: v2.0.0\n * Url: https://github.com/mattboldt/typed.js\n * License(s): MIT\n * \n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Typed\"] = factory();\n\telse\n\t\troot[\"Typed\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tvar _initializerJs = __webpack_require__(1);\n\t\n\tvar _htmlParserJs = __webpack_require__(3);\n\t\n\t/**\n\t * Welcome to Typed.js!\n\t * @param {string} elementId HTML element ID\n\t * @param {object} options options object\n\t * @returns {object} a new Typed object\n\t */\n\t\n\tvar Typed = (function () {\n\t function Typed(elementId, options) {\n\t _classCallCheck(this, Typed);\n\t\n\t // Initialize it up\n\t _initializerJs.initializer.load(this, options, elementId);\n\t // All systems go!\n\t this.begin();\n\t }\n\t\n\t /**\n\t * Toggle start() and stop() of the Typed instance\n\t * @public\n\t */\n\t\n\t _createClass(Typed, [{\n\t key: 'toggle',\n\t value: function toggle() {\n\t this.pause.status ? this.start() : this.stop();\n\t }\n\t\n\t /**\n\t * Stop typing / backspacing and enable cursor blinking\n\t * @public\n\t */\n\t }, {\n\t key: 'stop',\n\t value: function stop() {\n\t if (this.typingComplete) return;\n\t if (this.pause.status) return;\n\t this.toggleBlinking(true);\n\t this.pause.status = true;\n\t this.options.onStop(this.arrayPos, this);\n\t }\n\t\n\t /**\n\t * Start typing / backspacing after being stopped\n\t * @public\n\t */\n\t }, {\n\t key: 'start',\n\t value: function start() {\n\t if (this.typingComplete) return;\n\t if (!this.pause.status) return;\n\t this.pause.status = false;\n\t if (this.pause.typewrite) {\n\t this.typewrite(this.pause.curString, this.pause.curStrPos);\n\t } else {\n\t this.backspace(this.pause.curString, this.pause.curStrPos);\n\t }\n\t this.options.onStart(this.arrayPos, this);\n\t }\n\t\n\t /**\n\t * Destroy this instance of Typed\n\t * @public\n\t */\n\t }, {\n\t key: 'destroy',\n\t value: function destroy() {\n\t this.reset(false);\n\t this.options.onDestroy(this);\n\t }\n\t\n\t /**\n\t * Reset & begin Typed from the start\n\t * @public\n\t */\n\t }, {\n\t key: 'reset',\n\t value: function reset() {\n\t var restart = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];\n\t\n\t clearInterval(this.timeout);\n\t this.replaceText('');\n\t if (this.cursor && this.cursor.parentNode) {\n\t this.cursor.parentNode.removeChild(this.cursor);\n\t }\n\t this.strPos = 0;\n\t this.arrayPos = 0;\n\t this.curLoop = 0;\n\t if (restart) {\n\t this.options.onReset(this);\n\t this.begin();\n\t }\n\t }\n\t\n\t /**\n\t * Begins the typing animation\n\t * @private\n\t */\n\t }, {\n\t key: 'begin',\n\t value: function begin() {\n\t var _this = this;\n\t\n\t this.typingComplete = false;\n\t this.shuffleStringsIfNeeded(this);\n\t this.insertCursor();\n\t if (this.bindInputFocusEvents) this.bindFocusEvents();\n\t this.timeout = setTimeout(function () {\n\t // Check if there is some text in the element, if yes start by backspacing the default message\n\t if (!_this.currentElContent || _this.currentElContent.length === 0) {\n\t _this.typewrite(_this.strings[_this.sequence[_this.arrayPos]], _this.strPos);\n\t } else {\n\t // Start typing\n\t _this.backspace(_this.currentElContent, _this.currentElContent.length);\n\t }\n\t }, this.startDelay);\n\t }\n\t\n\t /**\n\t * Called for each character typed\n\t * @param {string} curString the current string in the strings array\n\t * @param {number} curStrPos the current position in the curString\n\t * @private\n\t */\n\t }, {\n\t key: 'typewrite',\n\t value: function typewrite(curString, curStrPos) {\n\t var _this2 = this;\n\t\n\t if (this.fadeOut && this.el.classList.contains(this.fadeOutClass)) {\n\t this.el.classList.remove(this.fadeOutClass);\n\t this.cursor.classList.remove(this.fadeOutClass);\n\t }\n\t\n\t var humanize = this.humanizer(this.typeSpeed);\n\t\n\t if (this.pause.status === true) {\n\t this.setPauseStatus(curString, curStrPos, true);\n\t return;\n\t }\n\t\n\t // contain typing function in a timeout humanize'd delay\n\t this.timeout = setTimeout(function () {\n\t // check for an escape character before a pause value\n\t // format: \\^\\d+ .. eg: ^1000 .. should be able to print the ^ too using ^^\n\t // single ^ are removed from string\n\t var pauseTime = 0;\n\t var substr = curString.substr(curStrPos);\n\t if (substr.charAt(0) === '^') {\n\t var skip = 1; // skip atleast 1\n\t if (/^\\^\\d+/.test(substr)) {\n\t substr = /\\d+/.exec(substr)[0];\n\t skip += substr.length;\n\t pauseTime = parseInt(substr);\n\t _this2.temporaryPause = true;\n\t _this2.options.onTypingPaused(_this2.arrayPos, _this2);\n\t }\n\t _this2.toggleBlinking(true);\n\t\n\t // strip out the escape character and pause value so they're not printed\n\t curString = curString.substring(0, curStrPos) + curString.substring(curStrPos + skip);\n\t }\n\t\n\t curStrPos = _htmlParserJs.htmlParser.typeHtmlChars(curString, curStrPos, _this2);\n\t\n\t // timeout for any pause after a character\n\t _this2.timeout = setTimeout(function () {\n\t // Accounts for blinking while paused\n\t _this2.toggleBlinking(false);\n\t\n\t // We're done with this sentence!\n\t if (curStrPos === curString.length) {\n\t _this2.doneTyping(curString, curStrPos);\n\t } else {\n\t _this2.keepTyping(curString, curStrPos);\n\t }\n\t // end of character pause\n\t if (_this2.temporaryPause) {\n\t _this2.temporaryPause = false;\n\t _this2.options.onTypingResumed(_this2.arrayPos, _this2);\n\t }\n\t }, pauseTime);\n\t\n\t // humanized value for typing\n\t }, humanize);\n\t }\n\t\n\t /**\n\t * Continue to the next string & begin typing\n\t * @param {string} curString the current string in the strings array\n\t * @param {number} curStrPos the current position in the curString\n\t * @private\n\t */\n\t }, {\n\t key: 'keepTyping',\n\t value: function keepTyping(curString, curStrPos) {\n\t // call before functions if applicable\n\t if (curStrPos === 0) {\n\t this.toggleBlinking(false);\n\t this.options.preStringTyped(this.arrayPos, this);\n\t }\n\t // start typing each new char into existing string\n\t // curString: arg, this.el.html: original text inside element\n\t var nextString = curString.substr(0, curStrPos + 1);\n\t this.replaceText(nextString);\n\t // add characters one by one\n\t curStrPos++;\n\t // loop the function\n\t this.typewrite(curString, curStrPos);\n\t }\n\t\n\t /**\n\t * We're done typing all strings\n\t * @param {string} curString the current string in the strings array\n\t * @param {number} curStrPos the current position in the curString\n\t * @private\n\t */\n\t }, {\n\t key: 'doneTyping',\n\t value: function doneTyping(curString, curStrPos) {\n\t var _this3 = this;\n\t\n\t // fires callback function\n\t this.options.onStringTyped(this.arrayPos, this);\n\t this.toggleBlinking(true);\n\t // is this the final string\n\t if (this.arrayPos === this.strings.length - 1) {\n\t // callback that occurs on the last typed string\n\t this.complete();\n\t // quit if we wont loop back\n\t if (this.loop === false || this.curLoop === this.loopCount) {\n\t return;\n\t }\n\t }\n\t this.timeout = setTimeout(function () {\n\t _this3.backspace(curString, curStrPos);\n\t }, this.backDelay);\n\t }\n\t\n\t /**\n\t * Backspaces 1 character at a time\n\t * @param {string} curString the current string in the strings array\n\t * @param {number} curStrPos the current position in the curString\n\t * @private\n\t */\n\t }, {\n\t key: 'backspace',\n\t value: function backspace(curString, curStrPos) {\n\t var _this4 = this;\n\t\n\t if (this.pause.status === true) {\n\t this.setPauseStatus(curString, curStrPos, true);\n\t return;\n\t }\n\t if (this.fadeOut) return this.initFadeOut();\n\t\n\t this.toggleBlinking(false);\n\t var humanize = this.humanizer(this.backSpeed);\n\t\n\t this.timeout = setTimeout(function () {\n\t curStrPos = _htmlParserJs.htmlParser.backSpaceHtmlChars(curString, curStrPos, _this4);\n\t // replace text with base text + typed characters\n\t var nextString = curString.substr(0, curStrPos);\n\t _this4.replaceText(nextString);\n\t\n\t // if smartBack is enabled\n\t if (_this4.smartBackspace) {\n\t // the remaining part of the current string is equal of the same part of the new string\n\t if (nextString === _this4.strings[_this4.arrayPos + 1].substr(0, curStrPos)) {\n\t _this4.stopNum = curStrPos;\n\t } else {\n\t _this4.stopNum = 0;\n\t }\n\t }\n\t\n\t // if the number (id of character in current string) is\n\t // less than the stop number, keep going\n\t if (curStrPos > _this4.stopNum) {\n\t // subtract characters one by one\n\t curStrPos--;\n\t // loop the function\n\t _this4.backspace(curString, curStrPos);\n\t } else if (curStrPos <= _this4.stopNum) {\n\t // if the stop number has been reached, increase\n\t // array position to next string\n\t _this4.arrayPos++;\n\t // When looping, begin at the beginning after backspace complete\n\t if (_this4.arrayPos === _this4.strings.length) {\n\t _this4.arrayPos = 0;\n\t _this4.options.onLastStringBackspaced();\n\t _this4.shuffleStringsIfNeeded();\n\t _this4.begin();\n\t } else {\n\t _this4.typewrite(_this4.strings[_this4.sequence[_this4.arrayPos]], curStrPos);\n\t }\n\t }\n\t // humanized value for typing\n\t }, humanize);\n\t }\n\t\n\t /**\n\t * Full animation is complete\n\t * @private\n\t */\n\t }, {\n\t key: 'complete',\n\t value: function complete() {\n\t this.options.onComplete(this);\n\t if (this.loop) {\n\t this.curLoop++;\n\t } else {\n\t this.typingComplete = true;\n\t }\n\t }\n\t\n\t /**\n\t * Has the typing been stopped\n\t * @param {string} curString the current string in the strings array\n\t * @param {number} curStrPos the current position in the curString\n\t * @param {boolean} isTyping\n\t * @private\n\t */\n\t }, {\n\t key: 'setPauseStatus',\n\t value: function setPauseStatus(curString, curStrPos, isTyping) {\n\t this.pause.typewrite = isTyping;\n\t this.pause.curString = curString;\n\t this.pause.curStrPos = curStrPos;\n\t }\n\t\n\t /**\n\t * Toggle the blinking cursor\n\t * @param {boolean} isBlinking\n\t * @private\n\t */\n\t }, {\n\t key: 'toggleBlinking',\n\t value: function toggleBlinking(isBlinking) {\n\t if (!this.cusror) return;\n\t // if in paused state, don't toggle blinking a 2nd time\n\t if (this.pause.status) return;\n\t if (this.cursorBlinking === isBlinking) return;\n\t this.cursorBlinking = isBlinking;\n\t var status = isBlinking ? 'infinite' : 0;\n\t this.cursor.style.animationIterationCount = status;\n\t }\n\t\n\t /**\n\t * Speed in MS to type\n\t * @param {number} speed\n\t * @private\n\t */\n\t }, {\n\t key: 'humanizer',\n\t value: function humanizer(speed) {\n\t return Math.round(Math.random() * speed / 2) + speed;\n\t }\n\t\n\t /**\n\t * Shuffle the sequence of the strings array\n\t * @private\n\t */\n\t }, {\n\t key: 'shuffleStringsIfNeeded',\n\t value: function shuffleStringsIfNeeded() {\n\t if (!this.shuffle) return;\n\t this.sequence = this.sequence.sort(function () {\n\t return Math.random() - 0.5;\n\t });\n\t }\n\t\n\t /**\n\t * Adds a CSS class to fade out current string\n\t * @private\n\t */\n\t }, {\n\t key: 'initFadeOut',\n\t value: function initFadeOut() {\n\t var _this5 = this;\n\t\n\t this.el.className += ' ' + this.fadeOutClass;\n\t this.cursor.className += ' ' + this.fadeOutClass;\n\t return setTimeout(function () {\n\t _this5.arrayPos++;\n\t _this5.replaceText('');\n\t\n\t // Resets current string if end of loop reached\n\t if (_this5.strings.length > _this5.arrayPos) {\n\t _this5.typewrite(_this5.strings[_this5.sequence[_this5.arrayPos]], 0);\n\t } else {\n\t _this5.typewrite(_this5.strings[0], 0);\n\t _this5.arrayPos = 0;\n\t }\n\t }, this.fadeOutDelay);\n\t }\n\t\n\t /**\n\t * Replaces current text in the HTML element\n\t * depending on element type\n\t * @param {string} str\n\t * @private\n\t */\n\t }, {\n\t key: 'replaceText',\n\t value: function replaceText(str) {\n\t if (this.attr) {\n\t this.el.setAttribute(this.attr, str);\n\t } else {\n\t if (this.isInput) {\n\t this.el.value = str;\n\t } else if (this.contentType === 'html') {\n\t this.el.innerHTML = str;\n\t } else {\n\t this.el.textContent = str;\n\t }\n\t }\n\t }\n\t\n\t /**\n\t * If using input elements, bind focus in order to\n\t * start and stop the animation\n\t * @private\n\t */\n\t }, {\n\t key: 'bindFocusEvents',\n\t value: function bindFocusEvents() {\n\t var _this6 = this;\n\t\n\t if (!this.isInput) return;\n\t this.el.addEventListener('focus', function (e) {\n\t _this6.stop();\n\t });\n\t this.el.addEventListener('blur', function (e) {\n\t _this6.start();\n\t });\n\t }\n\t\n\t /**\n\t * On init, insert the cursor element\n\t * @private\n\t */\n\t }, {\n\t key: 'insertCursor',\n\t value: function insertCursor() {\n\t if (!this.showCursor) return;\n\t this.cursor = document.createElement('span');\n\t this.cursor.className = 'typed-cursor';\n\t this.cursor.innerHTML = this.cursorChar;\n\t this.el.parentNode && this.el.parentNode.insertBefore(this.cursor, this.el.nextSibling);\n\t }\n\t }]);\n\t\n\t return Typed;\n\t})();\n\t\n\texports['default'] = Typed;\n\tmodule.exports = exports['default'];\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tvar _defaultsJs = __webpack_require__(2);\n\t\n\tvar _defaultsJs2 = _interopRequireDefault(_defaultsJs);\n\t\n\t/**\n\t * Initialize the Typed object\n\t */\n\t\n\tvar Initializer = (function () {\n\t function Initializer() {\n\t _classCallCheck(this, Initializer);\n\t }\n\t\n\t _createClass(Initializer, [{\n\t key: 'load',\n\t\n\t /**\n\t * Load up defaults & options on the Typed instance\n\t * @param {Typed} self instance of Typed\n\t * @param {object} options options object\n\t * @param {string} elementId HTML element ID\n\t * @private\n\t */\n\t\n\t value: function load(self, options, elementId) {\n\t // chosen element to manipulate text\n\t self.el = document.querySelector(elementId);\n\t\n\t self.options = {};\n\t Object.assign(self.options, _defaultsJs2['default'], options);\n\t\n\t // attribute to type into\n\t self.isInput = self.el.tagName.toLowerCase() === 'input';\n\t self.attr = self.options.attr;\n\t self.bindInputFocusEvents = self.options.bindInputFocusEvents;\n\t\n\t // show cursor\n\t self.showCursor = self.isInput ? false : self.options.showCursor;\n\t\n\t // custom cursor\n\t self.cursorChar = self.options.cursorChar;\n\t\n\t // Is the cursor blinking\n\t self.cursorBlinking = true;\n\t\n\t // text content of element\n\t self.elContent = self.attr ? self.el.getAttribute(self.attr) : self.el.textContent;\n\t\n\t // html or plain text\n\t self.contentType = self.options.contentType;\n\t\n\t // typing speed\n\t self.typeSpeed = self.options.typeSpeed;\n\t\n\t // add a delay before typing starts\n\t self.startDelay = self.options.startDelay;\n\t\n\t // backspacing speed\n\t self.backSpeed = self.options.backSpeed;\n\t\n\t // only backspace what doesn't match the previous string\n\t self.smartBackspace = self.options.smartBackspace;\n\t\n\t // amount of time to wait before backspacing\n\t self.backDelay = self.options.backDelay;\n\t\n\t // Fade out instead of backspace\n\t self.fadeOut = self.options.fadeOut;\n\t self.fadeOutClass = self.options.fadeOutClass;\n\t self.fadeOutDelay = self.options.fadeOutDelay;\n\t\n\t // variable to check whether typing is currently paused\n\t self.isPaused = false;\n\t\n\t // input strings of text\n\t self.strings = self.options.strings.map(function (s) {\n\t return s.trim();\n\t });\n\t\n\t // div containing strings\n\t self.stringsElement = document.querySelector(self.options.stringsElement);\n\t\n\t if (self.stringsElement) {\n\t self.strings = [];\n\t self.stringsElement.style.display = 'none';\n\t var strings = Array.prototype.slice.apply(self.stringsElement.children);\n\t var _iteratorNormalCompletion = true;\n\t var _didIteratorError = false;\n\t var _iteratorError = undefined;\n\t\n\t try {\n\t for (var _iterator = strings[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t var s = _step.value;\n\t\n\t self.strings.push(s.innerHTML.trim());\n\t }\n\t } catch (err) {\n\t _didIteratorError = true;\n\t _iteratorError = err;\n\t } finally {\n\t try {\n\t if (!_iteratorNormalCompletion && _iterator['return']) {\n\t _iterator['return']();\n\t }\n\t } finally {\n\t if (_didIteratorError) {\n\t throw _iteratorError;\n\t }\n\t }\n\t }\n\t }\n\t\n\t // character number position of current string\n\t self.strPos = 0;\n\t\n\t // current array position\n\t self.arrayPos = 0;\n\t\n\t // index of string to stop backspacing on\n\t self.stopNum = 0;\n\t\n\t // Looping logic\n\t self.loop = self.options.loop;\n\t self.loopCount = self.options.loopCount;\n\t self.curLoop = 0;\n\t\n\t // shuffle the strings\n\t self.shuffle = self.options.shuffle;\n\t // the order of strings\n\t self.sequence = [];\n\t\n\t self.pause = {\n\t status: false,\n\t typewrite: true,\n\t curString: '',\n\t curStrPos: 0\n\t };\n\t\n\t // When the typing is complete (when not looped)\n\t self.typingComplete = false;\n\t\n\t // Set the order in which the strings are typed\n\t for (var i in self.strings) {\n\t self.sequence[i] = i;\n\t }\n\t\n\t // If there is some text in the element\n\t self.currentElContent = this.getCurrentElContent(self);\n\t }\n\t }, {\n\t key: 'getCurrentElContent',\n\t value: function getCurrentElContent(self) {\n\t var elContent = '';\n\t if (self.attr) {\n\t elContent = self.el.getAttribute(self.attr);\n\t } else if (self.isInput) {\n\t elContent = self.el.value;\n\t } else if (self.contentType === 'html') {\n\t elContent = self.el.innerHTML;\n\t } else {\n\t elContent = self.el.textContent;\n\t }\n\t return elContent;\n\t }\n\t }]);\n\t\n\t return Initializer;\n\t})();\n\t\n\texports['default'] = Initializer;\n\tvar initializer = new Initializer();\n\texports.initializer = initializer;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\n\t/**\n\t * Defaults & options\n\t * @returns {object} Typed defaults & options\n\t * @public\n\t */\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\tvar defaults = {\n\t /**\n\t * @property {array} strings strings to be typed\n\t * @property {string} stringsElement ID of element containing string children\n\t */\n\t strings: ['These are the default values...', 'You know what you should do?', 'Use your own!', 'Have a great day!'],\n\t stringsElement: null,\n\t\n\t /**\n\t * @property {number} typeSpeed type speed in milliseconds\n\t */\n\t typeSpeed: 0,\n\t\n\t /**\n\t * @property {number} startDelay time before typing starts in milliseconds\n\t */\n\t startDelay: 0,\n\t\n\t /**\n\t * @property {number} backSpeed backspacing speed in milliseconds\n\t */\n\t backSpeed: 0,\n\t\n\t /**\n\t * @property {boolean} smartBackspace only backspace what doesn't match the previous string\n\t */\n\t smartBackspace: true,\n\t\n\t /**\n\t * @property {boolean} shuffle shuffle the strings\n\t */\n\t shuffle: false,\n\t\n\t /**\n\t * @property {number} backDelay time before backspacing in milliseconds\n\t */\n\t backDelay: 500,\n\t\n\t /**\n\t * @property {boolean} fadeOut Fade out instead of backspace\n\t * @property {string} fadeOutClass css class for fade animation\n\t * @property {boolean} fadeOutDelay Fade out delay in milliseconds\n\t */\n\t fadeOut: false,\n\t fadeOutClass: 'typed-fade-out',\n\t fadeOutDelay: 500,\n\t\n\t /**\n\t * @property {boolean} loop loop strings\n\t * @property {number} loopCount amount of loops\n\t */\n\t loop: false,\n\t loopCount: Infinity,\n\t\n\t /**\n\t * @property {boolean} showCursor show cursor\n\t * @property {string} cursorChar character for cursor\n\t */\n\t showCursor: true,\n\t cursorChar: '|',\n\t\n\t /**\n\t * @property {string} attr attribute for typing\n\t * Ex: input placeholder, value, or just HTML text\n\t */\n\t attr: null,\n\t\n\t /**\n\t * @property {boolean} bindInputFocusEvents bind to focus and blur if el is text input\n\t */\n\t bindInputFocusEvents: false,\n\t\n\t /**\n\t * @property {string} contentType 'html' or 'null' for plaintext\n\t */\n\t contentType: 'html',\n\t\n\t /**\n\t * All typing is complete\n\t * @param {Typed} self\n\t */\n\t onComplete: function onComplete(self) {},\n\t\n\t /**\n\t * Before each string is typed\n\t * @param {number} arrayPos\n\t * @param {Typed} self\n\t */\n\t preStringTyped: function preStringTyped(arrayPos, self) {},\n\t\n\t /**\n\t * After each string is typed\n\t * @param {number} arrayPos\n\t * @param {Typed} self\n\t */\n\t onStringTyped: function onStringTyped(arrayPos, self) {},\n\t\n\t /**\n\t * During looping, after last string is typed\n\t * @param {Typed} self\n\t */\n\t onLastStringBackspaced: function onLastStringBackspaced(self) {},\n\t\n\t /**\n\t * Typing has been stopped\n\t * @param {number} arrayPos\n\t * @param {Typed} self\n\t */\n\t onTypingPaused: function onTypingPaused(arrayPos, self) {},\n\t\n\t /**\n\t * Typing has been started after being stopped\n\t * @param {number} arrayPos\n\t * @param {Typed} self\n\t */\n\t onTypingResumed: function onTypingResumed(arrayPos, self) {},\n\t\n\t /**\n\t * After reset\n\t * @param {Typed} self\n\t */\n\t onReset: function onReset(self) {},\n\t\n\t /**\n\t * After stop\n\t * @param {number} arrayPos\n\t * @param {Typed} self\n\t */\n\t onStop: function onStop(arrayPos, self) {},\n\t\n\t /**\n\t * After start\n\t * @param {number} arrayPos\n\t * @param {Typed} self\n\t */\n\t onStart: function onStart(arrayPos, self) {},\n\t\n\t /**\n\t * After destroy\n\t * @param {Typed} self\n\t */\n\t onDestroy: function onDestroy(self) {}\n\t};\n\t\n\texports['default'] = defaults;\n\tmodule.exports = exports['default'];\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n\t\n\t/**\n\t * TODO: These methods can probably be combined somehow\n\t * Parse HTML tags & HTML Characters\n\t */\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tvar HTMLParser = (function () {\n\t function HTMLParser() {\n\t _classCallCheck(this, HTMLParser);\n\t }\n\t\n\t _createClass(HTMLParser, [{\n\t key: 'typeHtmlChars',\n\t\n\t /**\n\t * Type HTML tags & HTML Characters\n\t * @param {string} curString Current string\n\t * @param {number} curStrPos Position in current string\n\t * @param {Typed} self instance of Typed\n\t * @returns {number} a new string position\n\t * @private\n\t */\n\t\n\t value: function typeHtmlChars(curString, curStrPos, self) {\n\t if (self.contentType !== 'html') return curStrPos;\n\t var curChar = curString.substr(curStrPos).charAt(0);\n\t if (curChar === '<' || curChar === '&') {\n\t var endTag = '';\n\t if (curChar === '<') {\n\t endTag = '>';\n\t } else {\n\t endTag = ';';\n\t }\n\t while (curString.substr(curStrPos + 1).charAt(0) !== endTag) {\n\t curStrPos++;\n\t if (curStrPos + 1 > curString.length) {\n\t break;\n\t }\n\t }\n\t curStrPos++;\n\t }\n\t return curStrPos;\n\t }\n\t\n\t /**\n\t * Backspace HTML tags and HTML Characters\n\t * @param {string} curString Current string\n\t * @param {number} curStrPos Position in current string\n\t * @param {Typed} self instance of Typed\n\t * @returns {number} a new string position\n\t * @private\n\t */\n\t }, {\n\t key: 'backSpaceHtmlChars',\n\t value: function backSpaceHtmlChars(curString, curStrPos, self) {\n\t if (self.contentType !== 'html') return curStrPos;\n\t var curChar = curString.substr(curStrPos).charAt(0);\n\t if (curChar === '>' || curChar === ';') {\n\t var endTag = '';\n\t if (curChar === '>') {\n\t endTag = '<';\n\t } else {\n\t endTag = '&';\n\t }\n\t while (curString.substr(curStrPos - 1).charAt(0) !== endTag) {\n\t curStrPos--;\n\t if (curStrPos < 0) {\n\t break;\n\t }\n\t }\n\t curStrPos--;\n\t }\n\t return curStrPos;\n\t }\n\t }]);\n\t\n\t return HTMLParser;\n\t})();\n\t\n\texports['default'] = HTMLParser;\n\tvar htmlParser = new HTMLParser();\n\texports.htmlParser = htmlParser;\n\n/***/ })\n/******/ ])\n});\n;"]}
package/logo-cropped.png DELETED
Binary file
package/logo.png DELETED
Binary file
package/main.css DELETED
@@ -1,44 +0,0 @@
1
- @import url(http://fonts.googleapis.com/css?family=Ubuntu:400,500);
2
-
3
- *{
4
- padding:0;
5
- margin:0;
6
- }
7
-
8
- body{
9
- font-family: "Ubuntu", sans-serif;
10
- font-size: 100%;
11
- background:#f8f8f8;
12
- }
13
-
14
- a{
15
- text-decoration: none;
16
- color:#666;
17
- }
18
- a:hover{
19
- color:#999;
20
- }
21
- p{
22
- line-height: 2em;
23
- margin:0 0 20px;
24
- text-align: center;
25
- }
26
-
27
- .wrap{
28
- max-width: 600px;
29
- margin:150px auto;
30
- }
31
-
32
- .type-wrap{
33
- margin:10px auto;
34
- padding:20px;
35
- background:#f0f0f0;
36
- border-radius:5px;
37
- border:#CCC 1px solid;
38
- }
39
-
40
- .links{
41
- margin:20px 0;
42
- font-size: 0.75em;
43
- text-align: center;
44
- }
package/src/defaults.js DELETED
@@ -1,151 +0,0 @@
1
- /**
2
- * Defaults & options
3
- * @returns {object} Typed defaults & options
4
- * @public
5
- */
6
-
7
- const defaults = {
8
- /**
9
- * @property {array} strings strings to be typed
10
- * @property {string} stringsElement ID of element containing string children
11
- */
12
- strings: ['These are the default values...', 'You know what you should do?', 'Use your own!', 'Have a great day!'],
13
- stringsElement: null,
14
-
15
- /**
16
- * @property {number} typeSpeed type speed in milliseconds
17
- */
18
- typeSpeed: 0,
19
-
20
- /**
21
- * @property {number} startDelay time before typing starts in milliseconds
22
- */
23
- startDelay: 0,
24
-
25
- /**
26
- * @property {number} backSpeed backspacing speed in milliseconds
27
- */
28
- backSpeed: 0,
29
-
30
- /**
31
- * @property {boolean} smartBackspace only backspace what doesn't match the previous string
32
- */
33
- smartBackspace: true,
34
-
35
- /**
36
- * @property {boolean} shuffle shuffle the strings
37
- */
38
- shuffle: false,
39
-
40
- /**
41
- * @property {number} backDelay time before backspacing in milliseconds
42
- */
43
- backDelay: 500,
44
-
45
- /**
46
- * @property {boolean} fadeOut Fade out instead of backspace
47
- * @property {string} fadeOutClass css class for fade animation
48
- * @property {boolean} fadeOutDelay Fade out delay in milliseconds
49
- */
50
- fadeOut: false,
51
- fadeOutClass: 'typed-fade-out',
52
- fadeOutDelay: 500,
53
-
54
- /**
55
- * @property {boolean} loop loop strings
56
- * @property {number} loopCount amount of loops
57
- */
58
- loop: false,
59
- loopCount: Infinity,
60
-
61
- /**
62
- * @property {boolean} showCursor show cursor
63
- * @property {string} cursorChar character for cursor
64
- */
65
- showCursor: true,
66
- cursorChar: '|',
67
-
68
- /**
69
- * @property {string} attr attribute for typing
70
- * Ex: input placeholder, value, or just HTML text
71
- */
72
- attr: null,
73
-
74
- /**
75
- * @property {boolean} bindInputFocusEvents bind to focus and blur if el is text input
76
- */
77
- bindInputFocusEvents: false,
78
-
79
- /**
80
- * @property {string} contentType 'html' or 'null' for plaintext
81
- */
82
- contentType: 'html',
83
-
84
- /**
85
- * All typing is complete
86
- * @param {Typed} self
87
- */
88
- onComplete: (self) => {},
89
-
90
- /**
91
- * Before each string is typed
92
- * @param {number} arrayPos
93
- * @param {Typed} self
94
- */
95
- preStringTyped: (arrayPos, self) => {},
96
-
97
- /**
98
- * After each string is typed
99
- * @param {number} arrayPos
100
- * @param {Typed} self
101
- */
102
- onStringTyped: (arrayPos, self) => {},
103
-
104
- /**
105
- * During looping, after last string is typed
106
- * @param {Typed} self
107
- */
108
- onLastStringBackspaced: (self) => {},
109
-
110
- /**
111
- * Typing has been stopped
112
- * @param {number} arrayPos
113
- * @param {Typed} self
114
- */
115
- onTypingPaused: (arrayPos, self) => {},
116
-
117
- /**
118
- * Typing has been started after being stopped
119
- * @param {number} arrayPos
120
- * @param {Typed} self
121
- */
122
- onTypingResumed: (arrayPos, self) => {},
123
-
124
- /**
125
- * After reset
126
- * @param {Typed} self
127
- */
128
- onReset: (self) => {},
129
-
130
- /**
131
- * After stop
132
- * @param {number} arrayPos
133
- * @param {Typed} self
134
- */
135
- onStop: (arrayPos, self) => {},
136
-
137
- /**
138
- * After start
139
- * @param {number} arrayPos
140
- * @param {Typed} self
141
- */
142
- onStart: (arrayPos, self) => {},
143
-
144
- /**
145
- * After destroy
146
- * @param {Typed} self
147
- */
148
- onDestroy: (self) => {}
149
- };
150
-
151
- export default defaults;
@@ -1,68 +0,0 @@
1
-
2
- /**
3
- * TODO: These methods can probably be combined somehow
4
- * Parse HTML tags & HTML Characters
5
- */
6
-
7
- export default class HTMLParser {
8
- /**
9
- * Type HTML tags & HTML Characters
10
- * @param {string} curString Current string
11
- * @param {number} curStrPos Position in current string
12
- * @param {Typed} self instance of Typed
13
- * @returns {number} a new string position
14
- * @private
15
- */
16
-
17
- typeHtmlChars(curString, curStrPos, self) {
18
- if (self.contentType !== 'html') return curStrPos;
19
- const curChar = curString.substr(curStrPos).charAt(0);
20
- if (curChar === '<' || curChar === '&') {
21
- let endTag = '';
22
- if (curChar === '<') {
23
- endTag = '>';
24
- } else {
25
- endTag = ';';
26
- }
27
- while (curString.substr(curStrPos + 1).charAt(0) !== endTag) {
28
- curStrPos++;
29
- if (curStrPos + 1 > curString.length) {
30
- break;
31
- }
32
- }
33
- curStrPos++;
34
- }
35
- return curStrPos;
36
- }
37
-
38
- /**
39
- * Backspace HTML tags and HTML Characters
40
- * @param {string} curString Current string
41
- * @param {number} curStrPos Position in current string
42
- * @param {Typed} self instance of Typed
43
- * @returns {number} a new string position
44
- * @private
45
- */
46
- backSpaceHtmlChars(curString, curStrPos, self) {
47
- if (self.contentType !== 'html') return curStrPos;
48
- const curChar = curString.substr(curStrPos).charAt(0);
49
- if (curChar === '>' || curChar === ';') {
50
- let endTag = '';
51
- if (curChar === '>') {
52
- endTag = '<';
53
- } else {
54
- endTag = '&';
55
- }
56
- while (curString.substr(curStrPos - 1).charAt(0) !== endTag) {
57
- curStrPos--;
58
- if (curStrPos < 0) {
59
- break;
60
- }
61
- }
62
- curStrPos--;
63
- }
64
- return curStrPos;
65
- }
66
- }
67
-
68
- export let htmlParser = new HTMLParser();
@@ -1,133 +0,0 @@
1
- import defaults from './defaults.js';
2
- /**
3
- * Initialize the Typed object
4
- */
5
-
6
- export default class Initializer {
7
- /**
8
- * Load up defaults & options on the Typed instance
9
- * @param {Typed} self instance of Typed
10
- * @param {object} options options object
11
- * @param {string} elementId HTML element ID
12
- * @private
13
- */
14
-
15
- load(self, options, elementId) {
16
- // chosen element to manipulate text
17
- self.el = document.querySelector(elementId);
18
-
19
- self.options = {};
20
- Object.assign(self.options, defaults, options);
21
-
22
- // attribute to type into
23
- self.isInput = self.el.tagName.toLowerCase() === 'input';
24
- self.attr = self.options.attr;
25
- self.bindInputFocusEvents = self.options.bindInputFocusEvents;
26
-
27
- // show cursor
28
- self.showCursor = self.isInput ? false : self.options.showCursor;
29
-
30
- // custom cursor
31
- self.cursorChar = self.options.cursorChar;
32
-
33
- // Is the cursor blinking
34
- self.cursorBlinking = true;
35
-
36
- // text content of element
37
- self.elContent = self.attr ? self.el.getAttribute(self.attr) : self.el.textContent;
38
-
39
- // html or plain text
40
- self.contentType = self.options.contentType;
41
-
42
- // typing speed
43
- self.typeSpeed = self.options.typeSpeed;
44
-
45
- // add a delay before typing starts
46
- self.startDelay = self.options.startDelay;
47
-
48
- // backspacing speed
49
- self.backSpeed = self.options.backSpeed;
50
-
51
- // only backspace what doesn't match the previous string
52
- self.smartBackspace = self.options.smartBackspace;
53
-
54
- // amount of time to wait before backspacing
55
- self.backDelay = self.options.backDelay;
56
-
57
- // Fade out instead of backspace
58
- self.fadeOut = self.options.fadeOut;
59
- self.fadeOutClass = self.options.fadeOutClass;
60
- self.fadeOutDelay = self.options.fadeOutDelay;
61
-
62
- // variable to check whether typing is currently paused
63
- self.isPaused = false;
64
-
65
- // input strings of text
66
- self.strings = self.options.strings.map((s) => s.trim());
67
-
68
- // div containing strings
69
- self.stringsElement = document.querySelector(self.options.stringsElement);
70
-
71
- if (self.stringsElement) {
72
- self.strings = [];
73
- self.stringsElement.style.display = 'none';
74
- var strings = Array.prototype.slice.apply(self.stringsElement.children);
75
- for (let s of strings) {
76
- self.strings.push(s.innerHTML.trim());
77
- }
78
- }
79
-
80
- // character number position of current string
81
- self.strPos = 0;
82
-
83
- // current array position
84
- self.arrayPos = 0;
85
-
86
- // index of string to stop backspacing on
87
- self.stopNum = 0;
88
-
89
- // Looping logic
90
- self.loop = self.options.loop;
91
- self.loopCount = self.options.loopCount;
92
- self.curLoop = 0;
93
-
94
- // shuffle the strings
95
- self.shuffle = self.options.shuffle;
96
- // the order of strings
97
- self.sequence = [];
98
-
99
- self.pause = {
100
- status: false,
101
- typewrite: true,
102
- curString: '',
103
- curStrPos: 0
104
- }
105
-
106
- // When the typing is complete (when not looped)
107
- self.typingComplete = false;
108
-
109
- // Set the order in which the strings are typed
110
- for (let i in self.strings) {
111
- self.sequence[i] = i;
112
- }
113
-
114
- // If there is some text in the element
115
- self.currentElContent = this.getCurrentElContent(self);
116
- }
117
-
118
- getCurrentElContent(self) {
119
- let elContent = '';
120
- if (self.attr) {
121
- elContent = self.el.getAttribute(self.attr);
122
- } else if (self.isInput) {
123
- elContent = self.el.value;
124
- } else if (self.contentType === 'html') {
125
- elContent = self.el.innerHTML;
126
- } else {
127
- elContent = self.el.textContent;
128
- }
129
- return elContent;
130
- }
131
- }
132
-
133
- export let initializer = new Initializer();