|
1 /** |
|
2 * Inline development version. Only to be used while developing since it uses document.write to load scripts. |
|
3 */ |
|
4 |
|
5 /*jshint smarttabs:true, undef:true, latedef:true, curly:true, bitwise:true, camelcase:true */ |
|
6 /*globals $code */ |
|
7 |
|
8 (function(exports) { |
|
9 "use strict"; |
|
10 |
|
11 var html = "", baseDir; |
|
12 var modules = {}, exposedModules = [], moduleCount = 0; |
|
13 |
|
14 var scripts = document.getElementsByTagName('script'); |
|
15 for (var i = 0; i < scripts.length; i++) { |
|
16 var src = scripts[i].src; |
|
17 |
|
18 if (src.indexOf('/plugin.dev.js') != -1) { |
|
19 baseDir = src.substring(0, src.lastIndexOf('/')); |
|
20 } |
|
21 } |
|
22 |
|
23 function require(ids, callback) { |
|
24 var module, defs = []; |
|
25 |
|
26 for (var i = 0; i < ids.length; ++i) { |
|
27 module = modules[ids[i]] || resolve(ids[i]); |
|
28 if (!module) { |
|
29 throw 'module definition dependecy not found: ' + ids[i]; |
|
30 } |
|
31 |
|
32 defs.push(module); |
|
33 } |
|
34 |
|
35 callback.apply(null, defs); |
|
36 } |
|
37 |
|
38 function resolve(id) { |
|
39 var target = exports; |
|
40 var fragments = id.split(/[.\/]/); |
|
41 |
|
42 for (var fi = 0; fi < fragments.length; ++fi) { |
|
43 if (!target[fragments[fi]]) { |
|
44 return; |
|
45 } |
|
46 |
|
47 target = target[fragments[fi]]; |
|
48 } |
|
49 |
|
50 return target; |
|
51 } |
|
52 |
|
53 function register(id) { |
|
54 var target = exports; |
|
55 var fragments = id.split(/[.\/]/); |
|
56 |
|
57 for (var fi = 0; fi < fragments.length - 1; ++fi) { |
|
58 if (target[fragments[fi]] === undefined) { |
|
59 target[fragments[fi]] = {}; |
|
60 } |
|
61 |
|
62 target = target[fragments[fi]]; |
|
63 } |
|
64 |
|
65 target[fragments[fragments.length - 1]] = modules[id]; |
|
66 } |
|
67 |
|
68 function define(id, dependencies, definition) { |
|
69 if (typeof id !== 'string') { |
|
70 throw 'invalid module definition, module id must be defined and be a string'; |
|
71 } |
|
72 |
|
73 if (dependencies === undefined) { |
|
74 throw 'invalid module definition, dependencies must be specified'; |
|
75 } |
|
76 |
|
77 if (definition === undefined) { |
|
78 throw 'invalid module definition, definition function must be specified'; |
|
79 } |
|
80 |
|
81 require(dependencies, function() { |
|
82 modules[id] = definition.apply(null, arguments); |
|
83 }); |
|
84 |
|
85 if (--moduleCount === 0) { |
|
86 for (var i = 0; i < exposedModules.length; i++) { |
|
87 register(exposedModules[i]); |
|
88 } |
|
89 } |
|
90 } |
|
91 |
|
92 function expose(ids) { |
|
93 exposedModules = ids; |
|
94 } |
|
95 |
|
96 function writeScripts() { |
|
97 document.write(html); |
|
98 } |
|
99 |
|
100 function load(path) { |
|
101 html += '<script type="text/javascript" src="' + baseDir + '/' + path + '"></script>\n'; |
|
102 moduleCount++; |
|
103 } |
|
104 |
|
105 // Expose globally |
|
106 exports.define = define; |
|
107 exports.require = require; |
|
108 |
|
109 expose(["tinymce/pasteplugin/Utils"]); |
|
110 |
|
111 load('classes/Utils.js'); |
|
112 load('classes/Clipboard.js'); |
|
113 load('classes/WordFilter.js'); |
|
114 load('classes/Quirks.js'); |
|
115 load('classes/Plugin.js'); |
|
116 |
|
117 writeScripts(); |
|
118 })(this); |
|
119 |
|
120 // $hash: bc2f915b9558e72dc8a3bd07314a5bfe |