4365d067446d46b4ee464a1e9b97edba0872d27517dcfb1cabcca0aca01987fccf44b5c7ebab2914f8d459699d5cd86535fd3e0079acbeebd9329da8f07921 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. "use strict";
  2. exports.__esModule = true;
  3. var _plugin = require("../plugin");
  4. var _plugin2 = _interopRequireDefault(_plugin);
  5. var _sortBy = require("lodash/sortBy");
  6. var _sortBy2 = _interopRequireDefault(_sortBy);
  7. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  8. exports.default = new _plugin2.default({
  9. name: "internal.blockHoist",
  10. visitor: {
  11. Block: {
  12. exit: function exit(_ref) {
  13. var node = _ref.node;
  14. var hasChange = false;
  15. for (var i = 0; i < node.body.length; i++) {
  16. var bodyNode = node.body[i];
  17. if (bodyNode && bodyNode._blockHoist != null) {
  18. hasChange = true;
  19. break;
  20. }
  21. }
  22. if (!hasChange) return;
  23. node.body = (0, _sortBy2.default)(node.body, function (bodyNode) {
  24. var priority = bodyNode && bodyNode._blockHoist;
  25. if (priority == null) priority = 1;
  26. if (priority === true) priority = 2;
  27. return -1 * priority;
  28. });
  29. }
  30. }
  31. }
  32. });
  33. module.exports = exports["default"];