Skip to content

Commit 8d2b5ba

Browse files
author
Kelly Walker
committed
Remove plugin id
1 parent 29fed02 commit 8d2b5ba

File tree

12 files changed

+12
-24
lines changed

12 files changed

+12
-24
lines changed

Extensions/Editor Extensions/Banner/config.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
{
2-
"plugin_id": "banner",
32
"plugin_type": "widget",
43
"name": "Banner",
54
"edit_page_url": "http://www.atticandbutton.us/",
@@ -42,4 +41,4 @@
4241
"apply_js": "var utils = window.optimizely.get('utils');\n\nutils.waitForElement('body').then(function(element){\n var html = widget.$html;\n\telement.insertAdjacentHTML('afterbegin',html);\n});\n",
4342
"undo_js": "var extensionHTML = document.querySelector('.banner');\nif(extensionHTML) extensionHTML.remove();"
4443
}
45-
}
44+
}

Extensions/Editor Extensions/Bottom Banner/config.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
{
2-
"plugin_id": "notice",
32
"plugin_type": "widget",
43
"name": "Notification Bar",
54
"edit_page_url": "www.optimizely.com",
@@ -44,4 +43,4 @@
4443
"apply_js": "//Setup utility functions from Optimizely\nvar utils = window.optimizely.get('utils');\n\n//Use waitForElement promise to wait until we want to render the extension\nutils.waitForElement('body').then(function(element){\n var html = extension.$html;\n\n //Insert the extension\n element.insertAdjacentHTML('afterbegin', html);\n \n var closeBtn = document.querySelector('button.close');\n\n //Bind event listener on close cta \n closeBtn.addEventListener('click', function(e) {\n e.preventDefault();\n \tdocument.querySelector('.notice').remove();\n\n //Send Custom Event to Optimizely to track click\n window['optimizely'] = window['optimizely'] || [];\n\t\twindow.optimizely.push({\n type: \"event\",\n eventName: \"close_notice\"\n });\n });\n});\n",
4544
"undo_js": "var extensionHTML = document.querySelector('#optimizely-extension-' + extension.$instance);\n\nif (extensionHTML) extensionHTML.remove();"
4645
}
47-
}
46+
}

Extensions/Editor Extensions/Countdown Timer/config.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
{
2-
"plugin_id": "countdownTimer2",
32
"plugin_type": "widget",
43
"name": "Countdown Timer",
54
"edit_page_url": "www.optimizely.com",
@@ -42,4 +41,4 @@
4241
"apply_js": "var utils = optimizely.get('utils');\nvar selector = widget.selector;\n\nutils.waitForElement(selector).then(function(element){\n var html = widget.$html;\n var deadline = widget.date;\n\n element.insertAdjacentHTML('beforebegin', html);\n\n function getTimeRemaining(endtime){\n var t = Date.parse(endtime) - Date.parse(new Date());\n var seconds = Math.floor( (t/1000) % 60 );\n var minutes = Math.floor( (t/1000/60) % 60 );\n var hours = Math.floor( (t/(1000*60*60)) % 24 );\n var days = Math.floor( t/(1000*60*60*24) );\n return {\n 'total': t,\n 'days': days,\n 'hours': hours,\n 'minutes': minutes,\n 'seconds': seconds\n };\n\t}\n \n function initializeClock(id, endtime){\n var clock = document.getElementById(id);\n var daysSpan = clock.querySelector('.days');\n var hoursSpan = clock.querySelector('.hours');\n var minutesSpan = clock.querySelector('.minutes');\n var secondsSpan = clock.querySelector('.seconds');\n function updateClock(){\n var t = getTimeRemaining(endtime);\n daysSpan.innerHTML = ('0' + t.days).slice(-2);\n hoursSpan.innerHTML = ('0' + t.hours).slice(-2);\n minutesSpan.innerHTML = ('0' + t.minutes).slice(-2);\n secondsSpan.innerHTML = ('0' + t.seconds).slice(-2);\n if(t.total<=0){\n clearInterval(timeinterval);\n }\n }\n\n\t\tupdateClock(); // run function once at first to avoid delay\n\t\tvar timeinterval = setInterval(updateClock,1000);\n\t}\n\n\tinitializeClock('clockdiv', deadline);\n});",
4342
"undo_js": "var extensionHtml = document.querySelector('.countdown');\nif (extensionHtml){\n\textensionHtml.remove();\n}\n"
4443
}
45-
}
44+
}

Extensions/Editor Extensions/Dynamic Banner/config.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
{
2-
"plugin_id": "butter_bar_ext",
32
"plugin_type": "widget",
43
"name": "Banner Bar",
54
"edit_page_url": "https://www.optimizely.com/products/experimentation/",
@@ -113,4 +112,4 @@
113112
"apply_js": "var utils = optimizely.get('utils');\nvar selector = extension.selector;\n\nutils.waitForElement(selector).then(function(element){\n\tvar html = extension.$html;\n var insert = extension.insert;\n element.insertAdjacentHTML(insert, html);\n});",
114113
"undo_js": "var extensionHtml = document.querySelector('.optly_butter_bar');\nif (extensionHtml) extensionHtml.remove();\n"
115114
}
116-
}
115+
}

Extensions/Editor Extensions/Email Capture Pop-up/config.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
{
2-
"plugin_id": "email_capture",
32
"plugin_type": "widget",
43
"name": "Email Capture",
54
"edit_page_url": "www.atticandbutton.us",
@@ -51,4 +50,4 @@
5150
"apply_js": "var utils = window.optimizely.get('utils');\n\nutils.waitForElement('body').then(function(element){\n var html = widget.$html;\n element.insertAdjacentHTML('afterbegin', html);\n});",
5251
"undo_js": "var extensionHTML = document.querySelector('.optimizely-modal-widget');\nif(extensionHTML) extensionHTML.remove();"
5352
}
54-
}
53+
}

Extensions/Editor Extensions/Exit Intent Pop-up 2/config.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
{
2-
"plugin_id": "Exit_Modal",
32
"plugin_type": "widget",
43
"name": "Exit Modal",
54
"edit_page_url": "www.optimizely.com",
@@ -65,4 +64,4 @@
6564
"apply_js": "var utils = window.optimizely.get('utils');\n\nutils.waitForElement('body').then(function(element){\n\tvar html = widget.$html;\n var injection = widget.injectionType;\n element.insertAdjacentHTML('afterbegin', html);\n element.addEventListener(injection, function(){\n showPopup();\n\t\tbindCloseBtn();\n });\n});\n\nfunction showPopup() {\n if(document.querySelector('.fade-out')){\n\t document.querySelector('.fade-out').classList.remove('fade-out');\n }\n document.querySelector('.optly-modal').classList += ' fade-in';\n}\n\nfunction hidePopup() {\n document.querySelector('.optly-modal').classList += ' fade-out';\n window.optimizely = window.optimizely || [];\n\twindow.optimizely.push({\n\t\ttype: \"event\",\n\t\teventName: \"close_modal\"\n\t});\n}\n\nfunction bindCloseBtn() {\n\tdocument.querySelector('.optly-modal-close').addEventListener('click', function(e){\n hidePopup();\n });\n}",
6665
"undo_js": "var extensionHTML = document.querySelector('.optly-modal');\nif ( extensionHTML ) extensionHTML.remove();"
6766
}
68-
}
67+
}

Extensions/Editor Extensions/Exit Intent Pop-up/config.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
{
2-
"plugin_id": "exit_intent",
32
"plugin_type": "widget",
43
"name": "Exit Intent Popup",
54
"edit_page_url": "http://www.atticandbutton.us",
@@ -40,4 +39,4 @@
4039
"apply_js": "var utils = window.optimizely.get('utils');\n\nutils.waitForElement('body').then(function(element){\n\tvar html = widget.$html;\n element.insertAdjacentHTML('afterbegin', html);\n element.addEventListener('mouseleave', function(){\n showPopup();\n\t\tbindCloseBtn();\n });\n});\n\nfunction showPopup() {\n if(document.querySelector('.fade-out')){\n\t document.querySelector('.fade-out').classList.remove('fade-out');\n }\n document.querySelector('.exit-intent-modal').classList += ' fade-in';\n}\n\nfunction hidePopup() {\n document.querySelector('.exit-intent-modal').classList += ' fade-out';\n}\n\nfunction bindCloseBtn() {\n\tdocument.querySelector('.exit-popup-close').addEventListener('click', function(e){\n hidePopup();\n });\n}",
4140
"undo_js": "var extensionHTML = document.querySelector('.exit-intent-modal');\nif (extensionHTML) extensionHTML.remove();"
4241
}
43-
}
42+
}

Extensions/Editor Extensions/Sidebar Sliding Card/config.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
{
2-
"plugin_id": "Sliding_Div",
32
"plugin_type": "widget",
43
"name": "Plain Sliding Card",
54
"edit_page_url": "www.optimizely.com",
@@ -101,4 +100,4 @@
101100
"apply_js": "var utils = window.optimizely.get('utils');\n\nutils.waitForElement('body').then(function(element){\n var html = widget.$html;\n\telement.insertAdjacentHTML('afterbegin', html);\n if (document.cookie.indexOf(\"slidingBag\") > -1 === false) {\n\t document.querySelector(\".sliding_div_\" +extension.direction).style.display = \"block\";\n \n document.querySelector(\".optly-close\").addEventListener('click', function(e){\n e.preventDefault();\n document.querySelector('#optimizely-widget-' + widget.$instance).remove();\n window['optimizely'] = window['optimizely'] || [];\n window['optimizely'].push({\n type: \"event\",\n eventName: \"close_card\"\n });\n });\n }\n\t\n});",
102101
"undo_js": "var extensionHTML = document.querySelector('#optimizely-widget-' + widget.$instance);\nif(extensionHTML) extensionHTML.remove();"
103102
}
104-
}
103+
}

Extensions/Editor Extensions/Sliding Card Advanced/config.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
{
2-
"plugin_id": "bt_sliding_div",
32
"plugin_type": "widget",
43
"name": "Sliding Card + Behavioral Targeting",
54
"edit_page_url": "www.optimizely.com",
@@ -47,4 +46,4 @@
4746
"apply_js": "var utils = window.optimizely.get('utils');\nvar behavior = window.optimizely.get('behavior');\nvar i = 0,\n name,\n image,\n url,\n contentBlock1;\n\nvar lastViewed = behavior.query(\n {\n \"version\": \"0.2\",\n \"filter\": [\n {\n \"field\": [\"tags\", \"\"+ extension.name +\"\"],\n \"comparator\": \"exists\"\n }\n ],\n \"pick\": {\n \"field\": [\"tags\", \"\"+ extension.name +\"\"]\n },\n \"sort\":\t[{\n \"field\": [\"frequency\"],\n \"direction\":\"descending\"\n }]\n }\n );\n\nvar allViewed = behavior.query(\n {\n \"version\": \"0.2\",\n \"filter\": [\n {\n \"field\": [\"tags\", \"\"+ extension.name +\"\"],\n \"comparator\": \"exists\"\n }\n ]\n }\n);\n\nconsole.warn(allViewed);\nconsole.warn(lastViewed);\nconsole.warn(lastViewed[0]);\n\nutils.waitForElement('body').then(function(element){\n for(i = 0; i<=allViewed.length-1; i++){\n if(allViewed[i].tags[extension.name] === lastViewed[0]){\n name = allViewed[i].tags[extension.name];\n console.log(name);\n image = allViewed[i].tags[extension.image];\n url = allViewed[i].tags[extension.location];\n }\n }\n\tvar html = widget.$html;\n element.insertAdjacentHTML('afterbegin', html);\n \n contentBlock1 = \"<span class=\\\"name\\\">\"+ name +\"</span>\\n<img src=\\\"\"+image+\"\\\" class=\\\"product\\\"/>\\n<a href=\\\"\"+ url +\"\\\" class=\\\"optly-cta\\\">\"+ extension.cta +\"</a>\";\n document.querySelector('.optly-content').insertAdjacentHTML('afterend', contentBlock1);\n document.querySelector(\".sliding_div_right\").style.display = \"block\";\n document.querySelector('.optly-close a').addEventListener('click', function(){\n document.querySelector(\".sliding_div_right\").remove();\n window['optimizely'] = window['optimizely'] || [];\n window['optimizely'].push({\n type: \"event\",\n eventName: \"close_slide\"\n });\n });\n});\n",
4847
"undo_js": "var extensionHTML = document.querySelector('#optimizely-widget-' + widget.$instance);\nif(extensionHTML) extensionHTML.remove();"
4948
}
50-
}
49+
}

Extensions/Editor Extensions/Timed Modal/config.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
{
2-
"plugin_id": "timed_modal",
32
"plugin_type": "widget",
43
"name": "Timed Modal",
54
"edit_page_url": "www.optimizely.com",
@@ -54,4 +53,4 @@
5453
"apply_js": "var utils = window.optimizely.get(\"utils\");\n \nvar hidePopup = function() {\n document.querySelector('.optly-modal').style.display = \"none\";\n window['optimizely'] = window['optimizely'] || [];\n window['optimizely'].push({\n type: \"event\",\n eventName: \"close_modal\"\n });\n};\n\nvar showPopup = function() {\n\tdocument.querySelector('.optly-modal').style.display = \"block\";\n};\n\nutils.waitForElement('body').then(function(element) {\n var html = widget.$html;\n element.insertAdjacentHTML('beforeend', html);\n\n document.querySelector('.optly-modal').addEventListener('click', function() {\n hidePopup();\n });\n\n\tvar pop = setTimeout(function(){\n showPopup();\n }, widget.timer*1000);\n});",
5554
"undo_js": "var extensionHTML = document.querySelector('.optly-modal');\nif(extensionHTML) extensionHTML.remove();"
5655
}
57-
}
56+
}

Extensions/Editor Extensions/Typed Messages/config.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
{
2-
"plugin_id": "typed_js",
32
"plugin_type": "widget",
43
"name": "Typed Messages",
54
"edit_page_url": "https://www.optimizely.com/products/experimentation/",
@@ -58,4 +57,4 @@
5857
"apply_js": "/** Typed JS Documentation: http://www.mattboldt.com/demos/typed-js/ **/\nvar $ = window.$ || window.optimizely.get('jquery');\n\n$(function() {\n \n \"use strict\";\n\n\tvar Typed = function(el, options){\n\n\t\t// chosen element to manipulate text\n\t\tthis.el = $(el);\n\t\t// options\n\t\tthis.options = $.extend({}, $.fn.typed.defaults, options);\n\n\t\t// text content of element\n\t\tthis.text = this.el.text();\n\n\t\t// typing speed\n\t\tthis.typeSpeed = this.options.typeSpeed;\n\n\t\t// amount of time to wait before backspacing\n\t\tthis.backDelay = this.options.backDelay;\n\n\t\t// input strings of text\n\t\tthis.strings = this.options.strings;\n\n\t\t// character number position of current string\n\t\tthis.strPos = 0;\n\n\t\t// current array position\n\t\tthis.arrayPos = 0;\n\n\t\t// current string based on current values[] array position\n\t\tthis.string = this.strings[this.arrayPos];\n\n\t\t// number to stop backspacing on.\n\t\t// default 0, can change depending on how many chars\n\t\t// you want to remove at the time\n\t\tthis.stopNum = 0;\n\n\t\t// Looping logic\n\t\tthis.loop = this.options.loop;\n\t\tthis.loopCount = this.options.loopCount;\n\t\tthis.curLoop = 1;\n\t\tif (this.loop === false){\n\t\t\t// number in which to stop going through array\n\t\t\t// set to strings[] array (length - 1) to stop deleting after last string is typed\n\t\t\tthis.stopArray = this.strings.length-1;\n\t\t}\n\t\telse{\n\t\t\tthis.stopArray = this.strings.length;\n\t\t}\n\n\t\t// All systems go!\n\t\tthis.init();\n\t\tthis.build();\n\t}\n\n\t\tTyped.prototype = {\n\n\t\t\tconstructor: Typed\n\n\t\t\t, init: function(){\n\t\t\t\t// begin the loop w/ first current string (global self.string)\n\t\t\t\t// current string will be passed as an argument each time after this\n\t\t\t\tthis.typewrite(this.string, this.strPos);\n\t\t\t}\n\n\t\t\t, build: function(){\n\t\t\t\t//this.el.after(\"<span id=\\\"typed-cursor\\\">|</span>\");\n\t\t\t}\n\n\t\t\t// pass current string state to each function\n\t\t\t, typewrite: function(curString, curStrPos){\n\n\t\t\t\t// varying values for setTimeout during typing\n\t\t\t\t// can't be global since number changes each time loop is executed\n\t\t\t\tvar humanize = Math.round(Math.random() * (100 - 30)) + this.typeSpeed;\n\t\t\t\tvar self = this;\n\n\t\t\t\t// ------------- optional ------------- //\n\t\t\t\t// backpaces a certain string faster\n\t\t\t\t// ------------------------------------ //\n\t\t\t\t// if (self.arrayPos == 1){\n\t\t\t\t// \tself.backDelay = 50;\n\t\t\t\t// }\n\t\t\t\t// else{ self.backDelay = 500; }\n\n\t\t\t\t// containg entire typing function in a timeout\n\t\t\t\tsetTimeout(function() {\n\n\t\t\t\t\t// make sure array position is less than array length\n\t\t\t\t\tif (self.arrayPos < self.strings.length){\n\n\t\t\t\t\t\t// start typing each new char into existing string\n\t\t\t\t\t\t// curString is function arg\n\t\t\t\t\t\tself.el.text(self.text + curString.substr(0, curStrPos));\n\n\t\t\t\t\t\t// check if current character number is the string's length\n\t\t\t\t\t\t// and if the current array position is less than the stopping point\n\t\t\t\t\t\t// if so, backspace after backDelay setting\n\t\t\t\t\t\tif (curStrPos > curString.length && self.arrayPos < self.stopArray){\n\t\t\t\t\t\t\tclearTimeout(clear);\n\t\t\t\t\t\t\tvar clear = setTimeout(function(){\n\t\t\t\t\t\t\t\tself.backspace(curString, curStrPos);\n\t\t\t\t\t\t\t}, self.backDelay);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// else, keep typing\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t// add characters one by one\n\t\t\t\t\t\t\tcurStrPos++;\n\t\t\t\t\t\t\t// loop the function\n\t\t\t\t\t\t\tself.typewrite(curString, curStrPos);\n\t\t\t\t\t\t\t// if the array position is at the stopping position\n\t\t\t\t\t\t\t// finish code, on to next task\n\t\t\t\t\t\t\tif (self.loop === false){\n\t\t\t\t\t\t\t\tif (self.arrayPos === self.stopArray && curStrPos === curString.length){\n\t\t\t\t\t\t\t\t\t// animation that occurs on the last typed string\n\t\t\t\t\t\t\t\t\t// fires callback function\n\t\t\t\t\t\t\t\t\tvar clear = self.options.callback();\n\t\t\t\t\t\t\t\t\tclearTimeout(clear);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// if the array position is greater than array length\n\t\t\t\t\t// and looping is active, reset array pos and start over.\n\t\t\t\t\telse if (self.loop === true && self.loopCount === false){\n\t\t\t\t\t\tself.arrayPos = 0;\n\t\t\t\t\t\tself.init();\n\t\t\t\t\t}\n\t\t\t\t\t\telse if(self.loopCount !== false && self.curLoop < self.loopCount){\n\t\t\t\t\t\t\tself.arrayPos = 0;\n\t\t\t\t\t\t\tself.curLoop = self.curLoop+1;\n\t\t\t\t\t\t\tself.init();\n\t\t\t\t\t\t}\n\n\t\t\t\t// humanized value for typing\n\t\t\t\t}, humanize);\n\n\t\t\t}\n\n\t\t\t, backspace: function(curString, curStrPos){\n\n\t\t\t\t// varying values for setTimeout during typing\n\t\t\t\t// can't be global since number changes each time loop is executed\n\t\t\t\tvar humanize = Math.round(Math.random() * (100 - 30)) + this.typeSpeed;\n\t\t\t\tvar self = this;\n\n\t\t\t\tsetTimeout(function() {\n\n\t\t\t\t\t// ----- this part is optional ----- //\n\t\t\t\t\t// check string array position\n\t\t\t\t\t// on the first string, only delete one word\n\t\t\t\t\t// the stopNum actually represents the amount of chars to\n\t\t\t\t\t// keep in the current string. In my case it's 14.\n\t\t\t\t\t// if (self.arrayPos == 1){\n\t\t\t\t\t//\tself.stopNum = 14;\n\t\t\t\t\t// }\n\t\t\t\t\t//every other time, delete the whole typed string\n\t\t\t\t\t// else{\n\t\t\t\t\t//\tself.stopNum = 0;\n\t\t\t\t\t// }\n\n\t\t\t\t\t// ----- continue important stuff ----- //\n\t\t\t\t\t// replace text with current text + typed characters\n\t\t\t\t\tself.el.text(self.text + curString.substr(0, curStrPos));\n\n\t\t\t\t\t// if the number (id of character in current string) is\n\t\t\t\t\t// less than the stop number, keep going\n\t\t\t\t\tif (curStrPos > self.stopNum){\n\t\t\t\t\t\t// subtract characters one by one\n\t\t\t\t\t\tcurStrPos--;\n\t\t\t\t\t\t// loop the function\n\t\t\t\t\t\tself.backspace(curString, curStrPos);\n\t\t\t\t\t}\n\t\t\t\t\t// if the stop number has been reached, increase\n\t\t\t\t\t// array position to next string\n\t\t\t\t\telse if (curStrPos <= self.stopNum){\n\t\t\t\t\t\tclearTimeout(clear);\n\t\t\t\t\t\tvar clear = self.arrayPos = self.arrayPos+1;\n\t\t\t\t\t\t// must pass new array position in this instance\n\t\t\t\t\t\t// instead of using global arrayPos\n\t\t\t\t\t\tself.typewrite(self.strings[self.arrayPos], curStrPos);\n\t\t\t\t\t}\n\n\t\t\t\t// humanized value for typing\n\t\t\t\t}, humanize);\n\n\t\t\t}\n\n\t\t}\n\n\t$.fn.typed = function (option) {\n\t return this.each(function () {\n\t var $this = $(this)\n\t , data = $this.data('typed')\n\t , options = typeof option == 'object' && option\n\t if (!data) $this.data('typed', (data = new Typed(this, options)))\n\t if (typeof option == 'string') data[option]()\n\t });\n\t}\n\n\t$.fn.typed.defaults = {\n\t\tstrings: [\"These are the default values...\", \"You know what you should do?\", \"Use your own!\", \"Have a great day!\"],\n\t\t// typing and backspacing speed\n\t\ttypeSpeed: 0,\n\t\t// time before backspacing\n\t\tbackDelay: 500,\n\t\t// loop\n\t\tloop: false,\n\t\t// false = infinite\n\t\tloopCount: false,\n\t\t// ending callback function\n\t\tcallback: function(){ null }\n\t};\n\n\n $(extension.location).prepend(extension.$html);\n \n var message_array = [];\n message_array.push(extension.message);\n if(extension.message2 !== \"\"){\n message_array.push(extension.message2);\n }\n \n $(\"#optly_typed\").typed({\n strings: message_array,\n typeSpeed: 10,\n backDelay: 1000,\n cursorChar: \"|\",\n loop: true\n });\n \n});",
5958
"undo_js": "$('#optly_typed').remove();"
6059
}
61-
}
60+
}

0 commit comments

Comments
 (0)