diff --git a/example.html b/example.html
index b8dd39b2..c02bd669 100644
--- a/example.html
+++ b/example.html
@@ -177,11 +177,11 @@
},
video: {
type: 'video',
- make: videoTool.make,
+ make: video.make,
appendCallback: null,
settings: null,
- render: videoTool.render,
- save: videoTool.save,
+ render: video.render,
+ save: video.save,
displayInToolbox: false,
enableLineBreaks: false,
allowedToPaste: false
diff --git a/plugins/paste/patterns.js b/plugins/paste/patterns.js
index b78a7748..8b32017a 100644
--- a/plugins/paste/patterns.js
+++ b/plugins/paste/patterns.js
@@ -39,37 +39,37 @@ pasteTool.patterns = [
{
type: 'youtube',
regex: /^.*(?:(?:youtu\.be\/)|(?:youtube\.com)\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*)(?:[\?\&]t\=(\d*)|)/,
- callback: videoTool.urlPastedCallbacks.generalCallback
+ callback: video.urlPastedCallback
},
{
type: 'vimeo',
regex: /(?:http[s]?:\/\/)?(?:www.)?vimeo\.co(?:.+\/([^\/]\d+)(?:#t=[\d]+)?s?$)/,
- callback: videoTool.urlPastedCallbacks.generalCallback
+ callback: video.urlPastedCallback
},
{
type: 'coub',
regex: /https?:\/\/coub\.com\/view\/([^\/\?\&]+)/,
- callback: videoTool.urlPastedCallbacks.generalCallback
+ callback: video.urlPastedCallback
},
{
type: 'vine',
regex: /https?:\/\/vine\.co\/v\/([^\/\?\&]+)/,
- callback: videoTool.urlPastedCallbacks.generalCallback
+ callback: video.urlPastedCallback
},
{
type: 'vk',
regex: /https?:\/\/vk\.com\/.*(?:video)[-0-9]+_([0-9]+)/,
- callback: videoTool.urlPastedCallbacks.generalCallback
+ callback: video.urlPastedCallback
},
{
type: 'imgur',
regex: /https?:\/\/(?:i\.)?imgur\.com.*\/([a-zA-Z0-9]+)(?:\.gifv)?/,
- callback: videoTool.urlPastedCallbacks.generalCallback
+ callback: video.urlPastedCallback
},
{
type: 'gfycat',
regex: /https?:\/\/gfycat\.com(?:\/detail)?\/([a-zA-Z]+)/,
- callback: videoTool.urlPastedCallbacks.generalCallback
+ callback: video.urlPastedCallback
}
];
\ No newline at end of file
diff --git a/plugins/video/video.js b/plugins/video/video.js
index 29fe60c3..e2f34a87 100644
--- a/plugins/video/video.js
+++ b/plugins/video/video.js
@@ -2,88 +2,34 @@
* Video plugin by gohabereg
* @version 1.0.0
*/
-var videoTool = {
+var video = function(video){
- make : function(data, isInternal) {
+ var methods = {
- if (!data.video_id)
- return;
+ addInternal: function (content) {
+ codex.content.switchBlock(codex.content.currentNode, content, 'video');
- var html = videoTool.content.getHtmlWithVideoId(data.service, data.video_id),
- block = videoTool.content.makeElementFromHtml(html);
+ var blockContent = codex.content.currentNode.childNodes[0];
+ blockContent.classList.add('video__loader');
- block.dataset.id = data.video_id;
- block.dataset.videoSeirvice = data.service;
+ setTimeout(function(){
+ blockContent.classList.remove('video__loader');
+ }, 1000);
- if (isInternal) {
+ },
- setTimeout(function() {
+ getHtmlWithVideoId: function (type, id) {
+ return services[type].html.replace(/<\%\= remote\_id \%\>/g, id);
+ },
- /** Render block */
- videoTool.content.render(block);
-
- }, 200);
+ makeElementFromHtml: function(html) {
+ var wrapper = document.createElement('DIV');
+ wrapper.innerHTML = html;
+ return wrapper.firstElementChild;
}
+ };
- return block;
-
- },
-
- /**
- * Saving JSON output.
- * Upload data via ajax
- */
- save : function(blockContent) {
-
- var data;
-
- if (!blockContent)
- return;
-
- data = {
- video_id: blockContent.dataset.id,
- service: blockContent.dataset.videoService
- };
-
- return data;
-
- },
-
- /**
- * Render data
- */
- render : function(data) {
- return videoTool.make(data);
- },
-
-
-};
-
-videoTool.content = {
-
- render: function (content) {
- codex.content.switchBlock(codex.content.currentNode, content, 'video');
-
- var blockContent = codex.content.currentNode.childNodes[0];
- blockContent.classList.add('video__loader');
-
- setTimeout(function(){
- blockContent.classList.remove('video__loader');
- }, 1000);
-
- },
-
- getHtmlWithVideoId: function (type, id) {
- return videoTool.content.services[type].html.replace(/<\%\= remote\_id \%\>/g, id);
- },
-
- makeElementFromHtml: function(html) {
- var wrapper = document.createElement('DIV');
- wrapper.innerHTML = html;
- return wrapper.firstElementChild;
- },
-
- services: {
+ var services = {
vimeo: {
regex: /(?:http[s]?:\/\/)?(?:www.)?vimeo\.co(?:.+\/([^\/]\d+)(?:#t=[\d]+)?s?$)/,
html: ""
@@ -113,11 +59,56 @@ videoTool.content = {
regex: /https?:\/\/gfycat\.com(?:\/detail)?\/([a-zA-Z]+)/,
html: "",
}
- }
-};
+ };
-videoTool.urlPastedCallbacks = {
- generalCallback: function(url, pattern) {
+
+ video.make = function(data, isInternal) {
+
+ if (!data.video_id)
+ return;
+
+ var html = methods.getHtmlWithVideoId(data.service, data.video_id),
+ block = methods.makeElementFromHtml(html);
+
+ block.dataset.id = data.video_id;
+ block.dataset.videoSeirvice = data.service;
+
+ if (isInternal) {
+ methods.addInternal(block);
+ }
+
+ return block;
+
+ };
+
+ /**
+ * Saving JSON output.
+ * Upload data via ajax
+ */
+ video.save = function(blockContent) {
+
+ var data;
+
+ if (!blockContent)
+ return;
+
+ data = {
+ video_id: blockContent.dataset.id,
+ service: blockContent.dataset.videoService
+ };
+
+ return data;
+
+ };
+
+ /**
+ * Render data
+ */
+ video.render = function(data) {
+ return video.make(data);
+ };
+
+ video.urlPastedCallback = function(url, pattern) {
var id = pattern.regex.exec(url)[1];
@@ -126,6 +117,9 @@ videoTool.urlPastedCallbacks = {
service: pattern.type
};
- videoTool.make(data, true);
- }
-};
\ No newline at end of file
+ video.make(data, true);
+ };
+
+ return video;
+
+}({});
\ No newline at end of file