js.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. var empty = require('is-empty-object');
  2. var unique = require('array-uniq');
  3. var path = require('path');
  4. // custom module names where needed
  5. const MODULES = {
  6. 'offcanvas': 'OffCanvas'
  7. };
  8. /**
  9. * Creates an array of file paths that can be passed to `gulp.src()`.
  10. * @param {Object} config - Customizer configuration file.
  11. * @param {String[]} modules - Modules to include in the file list.
  12. * @returns {String[]} Array of file paths.
  13. */
  14. module.exports = function(config, modules) {
  15. var dir = path.resolve(__dirname, '../../js/');
  16. var entry = "import $ from 'jquery';\n" +
  17. "import { Foundation } from '" + dir + "/foundation.core';\n" +
  18. "Foundation.addToJquery($);\n" +
  19. "import { MediaQuery } from '" + dir + "/foundation.util.mediaQuery';\n" +
  20. "Foundation.MediaQuery = MediaQuery;\n" +
  21. "import { Triggers } from '" + dir + "/foundation.util.triggers';\n" +
  22. "Triggers.init($, Foundation);\n";
  23. // last 2 pieces work around https://github.com/zurb/foundation-sites/issues/10287
  24. var libraries = [];
  25. if (empty(modules)) {
  26. modules = Object.keys(config);
  27. }
  28. for (var i in modules) {
  29. var name = modules[i];
  30. // Check if the module has JS files
  31. if (config[name] && config[name].js) {
  32. libraries.push(config[name].js);
  33. }
  34. }
  35. // add plugins into entry
  36. for (var i in libraries) {
  37. var file = libraries[i];
  38. var moduleName = MODULES[file] || file.charAt(0).toUpperCase() + file.slice(1);
  39. entry = entry + "import { " + moduleName + " } from '" + dir + "/foundation." + file + "';\n";
  40. entry = entry + "Foundation.plugin(" + moduleName + ", '" + moduleName + "');\n";
  41. }
  42. // return entry file as string
  43. return entry;
  44. }