intro.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. /**
  2. * @fileOverview 让内部各个部件的代码可以用[amd](https://github.com/amdjs/amdjs-api/wiki/AMD)模块定义方式组织起来。
  3. *
  4. * AMD API 内部的简单不完全实现,请忽略。只有当WebUploader被合并成一个文件的时候才会引入。
  5. */
  6. (function( root, factory ) {
  7. var modules = {},
  8. // 内部require, 简单不完全实现。
  9. // https://github.com/amdjs/amdjs-api/wiki/require
  10. _require = function( deps, callback ) {
  11. var args, len, i;
  12. // 如果deps不是数组,则直接返回指定module
  13. if ( typeof deps === 'string' ) {
  14. return getModule( deps );
  15. } else {
  16. args = [];
  17. for( len = deps.length, i = 0; i < len; i++ ) {
  18. args.push( getModule( deps[ i ] ) );
  19. }
  20. return callback.apply( null, args );
  21. }
  22. },
  23. // 内部define,暂时不支持不指定id.
  24. _define = function( id, deps, factory ) {
  25. if ( arguments.length === 2 ) {
  26. factory = deps;
  27. deps = null;
  28. }
  29. _require( deps || [], function() {
  30. setModule( id, factory, arguments );
  31. });
  32. },
  33. // 设置module, 兼容CommonJs写法。
  34. setModule = function( id, factory, args ) {
  35. var module = {
  36. exports: factory
  37. },
  38. returned;
  39. if ( typeof factory === 'function' ) {
  40. args.length || (args = [ _require, module.exports, module ]);
  41. returned = factory.apply( null, args );
  42. returned !== undefined && (module.exports = returned);
  43. }
  44. modules[ id ] = module.exports;
  45. },
  46. // 根据id获取module
  47. getModule = function( id ) {
  48. var module = modules[ id ] || root[ id ];
  49. if ( !module ) {
  50. throw new Error( '`' + id + '` is undefined' );
  51. }
  52. return module;
  53. },
  54. // 将所有modules,将路径ids装换成对象。
  55. exportsTo = function( obj ) {
  56. var key, host, parts, part, last, ucFirst;
  57. // make the first character upper case.
  58. ucFirst = function( str ) {
  59. return str && (str.charAt( 0 ).toUpperCase() + str.substr( 1 ));
  60. };
  61. for ( key in modules ) {
  62. host = obj;
  63. if ( !modules.hasOwnProperty( key ) ) {
  64. continue;
  65. }
  66. parts = key.split('/');
  67. last = ucFirst( parts.pop() );
  68. while( (part = ucFirst( parts.shift() )) ) {
  69. host[ part ] = host[ part ] || {};
  70. host = host[ part ];
  71. }
  72. host[ last ] = modules[ key ];
  73. }
  74. return obj;
  75. },
  76. makeExport = function( dollar ) {
  77. root.__dollar = dollar;
  78. // exports every module.
  79. return exportsTo( factory( root, _define, _require ) );
  80. },
  81. origin;
  82. if ( typeof module === 'object' && typeof module.exports === 'object' ) {
  83. // For CommonJS and CommonJS-like environments where a proper window is present,
  84. module.exports = makeExport();
  85. } else if ( typeof define === 'function' && define.amd ) {
  86. // Allow using this built library as an AMD module
  87. // in another project. That other project will only
  88. // see this AMD call, not the internal modules in
  89. // the closure below.
  90. define([ 'jquery' ], makeExport );
  91. } else {
  92. // Browser globals case. Just assign the
  93. // result to a property on the global.
  94. origin = root.WebUploader;
  95. root.WebUploader = makeExport();
  96. root.WebUploader.noConflict = function() {
  97. root.WebUploader = origin;
  98. };
  99. }
  100. })( window, function( window, define, require ) {