\";\n return div.innerHTML.indexOf('
') > 0\n}\n\n// #3663: IE encodes newlines inside attribute values while other browsers don't\nvar shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false;\n// #6828: chrome encodes content in a[href]\nvar shouldDecodeNewlinesForHref = inBrowser ? getShouldDecode(true) : false;\n\n/* */\n\nvar idToTemplate = cached(function (id) {\n var el = query(id);\n return el && el.innerHTML\n});\n\nvar mount = Vue.prototype.$mount;\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && query(el);\n\n /* istanbul ignore if */\n if (el === document.body || el === document.documentElement) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Do not mount Vue to or - mount to normal elements instead.\"\n );\n return this\n }\n\n var options = this.$options;\n // resolve template/el and convert to render function\n if (!options.render) {\n var template = options.template;\n if (template) {\n if (typeof template === 'string') {\n if (template.charAt(0) === '#') {\n template = idToTemplate(template);\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && !template) {\n warn(\n (\"Template element not found or is empty: \" + (options.template)),\n this\n );\n }\n }\n } else if (template.nodeType) {\n template = template.innerHTML;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn('invalid template option:' + template, this);\n }\n return this\n }\n } else if (el) {\n template = getOuterHTML(el);\n }\n if (template) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n mark('compile');\n }\n\n var ref = compileToFunctions(template, {\n shouldDecodeNewlines: shouldDecodeNewlines,\n shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref,\n delimiters: options.delimiters,\n comments: options.comments\n }, this);\n var render = ref.render;\n var staticRenderFns = ref.staticRenderFns;\n options.render = render;\n options.staticRenderFns = staticRenderFns;\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n mark('compile end');\n measure((\"vue \" + (this._name) + \" compile\"), 'compile', 'compile end');\n }\n }\n }\n return mount.call(this, el, hydrating)\n};\n\n/**\n * Get outerHTML of elements, taking care\n * of SVG elements in IE as well.\n */\nfunction getOuterHTML (el) {\n if (el.outerHTML) {\n return el.outerHTML\n } else {\n var container = document.createElement('div');\n container.appendChild(el.cloneNode(true));\n return container.innerHTML\n }\n}\n\nVue.compile = compileToFunctions;\n\nmodule.exports = Vue;\n","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","var apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\nexports.setImmediate = setImmediate;\nexports.clearImmediate = clearImmediate;\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a \n\n\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=9b89b344&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!./node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"App.vue\"\nexport default component.exports","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"VueStringFilter\",attrs:{\"id\":\"app\"}},[_vm._m(0),_vm._v(\" \"),_c('div',{staticClass:\"app\"},[_c('div',{staticClass:\"grid__row content centered\"},[_c('h1',[_vm._v(\"Lightweight Vue 2 String Manipulation Filter By Irfan Maulana\")]),_vm._v(\" \"),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.textInput),expression:\"textInput\"}],staticClass:\"textfield textfield--shadow\",domProps:{\"value\":(_vm.textInput)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.textInput=$event.target.value}}}),_vm._v(\" \"),_c('b',[_vm._v(\"Before filter\")]),_vm._v(\": \"+_vm._s(_vm.textInput)+\"\\n\\t\\t\\t\"),_c('br'),_vm._v(\" \"),_c('br')]),_vm._v(\" \"),_c('div',[_c('h2',[_vm._v(\"Result :\")]),_vm._v(\" \"),_c('b',[_vm._v(\"Uppercase\")]),_vm._v(\": \"),_c('span',{staticClass:\"result__uppercase\"},[_vm._v(_vm._s(_vm._f(\"uppercase\")(_vm.textInput)))]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('b',[_vm._v(\"Lowercase\")]),_vm._v(\": \"),_c('span',{staticClass:\"result__lowercase\"},[_vm._v(_vm._s(_vm._f(\"lowercase\")(_vm.textInput)))]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('b',[_vm._v(\"Capitalize\")]),_vm._v(\": \"),_c('span',{staticClass:\"result__capitalize\"},[_vm._v(_vm._s(_vm._f(\"capitalize\")(_vm.textInput)))]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('b',[_vm._v(\"Titlecase\")]),_vm._v(\": \"),_c('span',{staticClass:\"result__titlecase\"},[_vm._v(_vm._s(_vm._f(\"titlecase\")(_vm.textInput)))]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('b',[_vm._v(\"Slug\")]),_vm._v(\": \"),_c('span',{staticClass:\"result__slug\"},[_vm._v(_vm._s(_vm._f(\"slug\")(_vm.textInput)))]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('b',[_vm._v(\"Truncate\")]),_vm._v(\": \"),_c('span',{staticClass:\"result__truncate\"},[_vm._v(_vm._s(_vm._f(\"truncate\")(_vm.textInput,10)))]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('b',[_vm._v(\"Cut\")]),_vm._v(\": \"),_c('span',{staticClass:\"result__cut\"},[_vm._v(_vm._s(_vm._f(\"cut\")(_vm.textInput,10)))]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('b',[_vm._v(\"Append\")]),_vm._v(\": \"),_c('span',{staticClass:\"result__append\"},[_vm._v(_vm._s(_vm._f(\"append\")(_vm.textInput,'This is append string.')))]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('b',[_vm._v(\"Remove\")]),_vm._v(\": \"),_c('span',{staticClass:\"result__remove\"},[_vm._v(_vm._s(_vm._f(\"remove\")(_vm.textInput,',')))]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('b',[_vm._v(\"Remove First\")]),_vm._v(\": \"),_c('span',{staticClass:\"result__remove_first\"},[_vm._v(_vm._s(_vm._f(\"remove_first\")(_vm.textInput,',')))]),_vm._v(\" \"),_c('br')])])]),_vm._v(\" \"),_vm._m(1),_vm._v(\" \"),_vm._m(2),_vm._v(\" \"),_vm._m(3)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',{staticClass:\"site__header header\",attrs:{\"role\":\"header\"}},[_c('div',{staticClass:\"header__wrapper\"},[_c('div',{staticClass:\"header__brand\"},[_c('a',{attrs:{\"href\":\"https://mazipan.github.io/demo/\"}},[_c('img',{attrs:{\"src\":\"https://mazipan.github.io/images/irfan-maulana.jpg\",\"alt\":\"Irfan Maulana\",\"title\":\"Irfan Maulana\"}})]),_c('div',{staticClass:\"header__title\"},[_vm._v(\" Irfan Maulana | Demo\")])])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grid__row content centered\"},[_c('h2',[_vm._v(\"Contribute\")]),_c('p',[_vm._v(\" Feel free to fork \"),_c('i',{staticClass:\"fa fa-code-fork\"}),_vm._v(\" on \"),_c('a',{attrs:{\"href\":\"https://github.com/mazipan/vue-string-filter\",\"target\":\"_blank\"}},[_vm._v(\"GitHub \"),_c('i',{staticClass:\"fa fa-github\"})]),_vm._v(\" if you have any features \"),_c('i',{staticClass:\"fa fa-cart-plus\"}),_vm._v(\" or bugs \"),_c('i',{staticClass:\"fa fa-bug\"}),_vm._v(\"!\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grid__row content centered\"},[_c('h2',[_vm._v(\"Contact Developer\")]),_vm._v(\" \"),_c('p',[_c('a',{attrs:{\"href\":\"https://github.com/mazipan\"}},[_c('img',{attrs:{\"src\":\"https://img.shields.io/badge/mazipan-Github-lightgrey.svg?maxAge=3600\",\"alt\":\"Github\"}})]),_vm._v(\"\\n\\t\\t\\t \\n\\t\\t\\t\"),_c('a',{attrs:{\"href\":\"https://mazipanneh.com/blog/\"}},[_c('img',{attrs:{\"src\":\"https://img.shields.io/badge/mazipanneh-Blog-brightgreen.svg?maxAge=3600\",\"alt\":\"Blog\"}})]),_vm._v(\"\\n\\t\\t\\t \\n\\t\\t\\t\"),_c('a',{attrs:{\"href\":\"https://facebook.com/mazipanneh\"}},[_c('img',{attrs:{\"src\":\"https://img.shields.io/badge/mazipanneh-Facebook-blue.svg?maxAge=3600\",\"alt\":\"Facebook\"}})]),_vm._v(\"\\n\\t\\t\\t \\n\\t\\t\\t\"),_c('a',{attrs:{\"href\":\"https://twitter.com/Maz_Ipan\"}},[_c('img',{attrs:{\"src\":\"https://img.shields.io/badge/Maz_Ipan-Twitter-55acee.svg?maxAge=3600\",\"alt\":\"Twitter\"}})])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grid__row content centered\"},[_c('p',[_vm._v(\" Copyright © 2017 \"),_c('a',{attrs:{\"href\":\"https://mazipanneh.com/blog/\"}},[_vm._v(\"Irfan Maulana\")]),_vm._v(\", All Rights Reserved.\")])])}]\n\nexport { render, staticRenderFns }","const VueStringFilter = {\n install(Vue) {\n\n Vue.filter('lowercase', function (value) {\n return value.toString().toLowerCase()\n })\n\n Vue.filter('uppercase', function (value) {\n return value.toString().toUpperCase()\n })\n\n Vue.filter('capitalize', function (value) {\n return value.charAt(0).toUpperCase() + value.slice(1)\n })\n\n Vue.filter('titlecase', function (value) {\n return value.replace(/\\w\\S*/g, function (txt) {\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase()\n })\n })\n\n Vue.filter('slug', function (value) {\n // credit for gist : https://gist.github.com/mathewbyrne/1280286\n let result = value.toString()\n .toLowerCase()\n .trim()\n .replace(/&/g, '-and-') //\n .replace(/[\\s\\W-]+/g, '-')\n .replace(/--+/g, '-')\n .replace(/^-+|-+$/g, '')\n\n return result\n })\n\n Vue.filter('truncate', function (value, count) {\n return value.length < count ? value : value.slice(0, count) + '...'\n })\n\n Vue.filter('cut', function (value, count) {\n return value.length < count ? value : value.slice(0, count)\n })\n\n Vue.filter('remove', function (value, removalTarget) {\n return value.replace(new RegExp(removalTarget, 'g'), '')\n })\n\n Vue.filter('remove_first', function (value, removalTarget) {\n return value.replace(removalTarget, '')\n })\n\n Vue.filter('replace', function (value, replacement) {\n return value.replace(new RegExp(value, 'g'), replacement)\n })\n\n Vue.filter('replace_first', function (value, replacement) {\n return value.replace(value, replacement)\n })\n\n Vue.filter('append', function (value, string) {\n return value.toString().concat(string)\n })\n }\n}\n\nexport default VueStringFilter\n","import Vue from 'vue'\nimport App from './App.vue'\n\nif (process.env.NODE_ENV !== 'production') { // eslint-disable-line no-undef\n Vue.config.devtools = true\n}\n\nimport VueStringFilter from './VueStringFilter.js'\nVue.use(VueStringFilter)\n\nnew Vue({\n el: '#app',\n template: '
',\n components: {App}\n})\n\n","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nexport default function listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n","/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array
\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of
+
-
+
-
-
-
+
+
+
+
-
+