]> git.immae.eu Git - perso/Immae/Projets/packagist/piedsjaloux-ckeditor-component.git/blobdiff - sources/plugins/widget/dev/console.js
Add oembed
[perso/Immae/Projets/packagist/piedsjaloux-ckeditor-component.git] / sources / plugins / widget / dev / console.js
diff --git a/sources/plugins/widget/dev/console.js b/sources/plugins/widget/dev/console.js
new file mode 100644 (file)
index 0000000..78db0d0
--- /dev/null
@@ -0,0 +1,131 @@
+/**\r
+ * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\r
+ * For licensing, see LICENSE.md or http://ckeditor.com/license\r
+ */\r
+\r
+/* global CKCONSOLE */\r
+\r
+'use strict';\r
+\r
+( function() {\r
+\r
+       CKCONSOLE.add( 'widget', {\r
+               panels: [\r
+                       {\r
+                               type: 'box',\r
+                               content: '<ul class="ckconsole_list ckconsole_value" data-value="instances"></ul>',\r
+\r
+                               refresh: function( editor ) {\r
+                                       var instances = obj2Array( editor.widgets.instances );\r
+\r
+                                       return {\r
+                                               header: 'Instances (' + instances.length + ')',\r
+                                               instances: generateInstancesList( instances )\r
+                                       };\r
+                               },\r
+\r
+                               refreshOn: function( editor, refresh ) {\r
+                                       editor.widgets.on( 'instanceCreated', function( evt ) {\r
+                                               refresh();\r
+\r
+                                               evt.data.on( 'data', refresh );\r
+                                       } );\r
+\r
+                                       editor.widgets.on( 'instanceDestroyed', refresh );\r
+                               }\r
+                       },\r
+\r
+                       {\r
+                               type: 'box',\r
+                               content:\r
+                                       '<ul class="ckconsole_list">' +\r
+                                               '<li>focused: <span class="ckconsole_value" data-value="focused"></span></li>' +\r
+                                               '<li>selected: <span class="ckconsole_value" data-value="selected"></span></li>' +\r
+                                       '</ul>',\r
+\r
+                               refresh: function( editor ) {\r
+                                       var focused = editor.widgets.focused,\r
+                                               selected = editor.widgets.selected,\r
+                                               selectedIds = [];\r
+\r
+                                       for ( var i = 0; i < selected.length; ++i )\r
+                                               selectedIds.push( selected[ i ].id );\r
+\r
+                                       return {\r
+                                               header: 'Focus &amp; selection',\r
+                                               focused: focused ? 'id: ' + focused.id : '-',\r
+                                               selected: selectedIds.length ? 'id: ' + selectedIds.join( ', id: ' ) : '-'\r
+                                       };\r
+                               },\r
+\r
+                               refreshOn: function( editor, refresh ) {\r
+                                       editor.on( 'selectionCheck', refresh, null, null, 999 );\r
+                               }\r
+                       },\r
+\r
+                       {\r
+                               type: 'log',\r
+\r
+                               on: function( editor, log, logFn ) {\r
+                                       // Add all listeners with high priorities to log\r
+                                       // messages in the correct order when one event depends on another.\r
+                                       // E.g. selectionChange triggers widget selection - if this listener\r
+                                       // for selectionChange will be executed later than that one, then order\r
+                                       // will be incorrect.\r
+\r
+                                       editor.on( 'selectionChange', function( evt ) {\r
+                                               var msg = 'selection change',\r
+                                                       sel = evt.data.selection,\r
+                                                       el = sel.getSelectedElement(),\r
+                                                       widget;\r
+\r
+                                               if ( el && ( widget = editor.widgets.getByElement( el, true ) ) )\r
+                                                       msg += ' (id: ' + widget.id + ')';\r
+\r
+                                               log( msg );\r
+                                       }, null, null, 1 );\r
+\r
+                                       editor.widgets.on( 'instanceDestroyed', function( evt ) {\r
+                                               log( 'instance destroyed (id: ' + evt.data.id + ')' );\r
+                                       }, null, null, 1 );\r
+\r
+                                       editor.widgets.on( 'instanceCreated', function( evt ) {\r
+                                               log( 'instance created (id: ' + evt.data.id + ')' );\r
+                                       }, null, null, 1 );\r
+\r
+                                       editor.widgets.on( 'widgetFocused', function( evt ) {\r
+                                               log( 'widget focused (id: ' + evt.data.widget.id + ')' );\r
+                                       }, null, null, 1 );\r
+\r
+                                       editor.widgets.on( 'widgetBlurred', function( evt ) {\r
+                                               log( 'widget blurred (id: ' + evt.data.widget.id + ')' );\r
+                                       }, null, null, 1 );\r
+\r
+                                       editor.widgets.on( 'checkWidgets', logFn( 'checking widgets' ), null, null, 1 );\r
+                                       editor.widgets.on( 'checkSelection', logFn( 'checking selection' ), null, null, 1 );\r
+                               }\r
+                       }\r
+               ]\r
+       } );\r
+\r
+       function generateInstancesList( instances ) {\r
+               var html = '',\r
+                       instance;\r
+\r
+               for ( var i = 0; i < instances.length; ++i ) {\r
+                       instance = instances[ i ];\r
+                       html += itemTpl.output( { id: instance.id, name: instance.name, data: JSON.stringify( instance.data ) } );\r
+               }\r
+               return html;\r
+       }\r
+\r
+       function obj2Array( obj ) {\r
+               var arr = [];\r
+               for ( var id in obj )\r
+                       arr.push( obj[ id ] );\r
+\r
+               return arr;\r
+       }\r
+\r
+       var itemTpl = new CKEDITOR.template( '<li>id: <code>{id}</code>, name: <code>{name}</code>, data: <code>{data}</code></li>' );\r
+} )();\r