image-size.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. var dimension_1 = __importDefault(require("../less/tree/dimension"));
  7. var expression_1 = __importDefault(require("../less/tree/expression"));
  8. var function_registry_1 = __importDefault(require("./../less/functions/function-registry"));
  9. exports.default = (function (environment) {
  10. function imageSize(functionContext, filePathNode) {
  11. var filePath = filePathNode.value;
  12. var currentFileInfo = functionContext.currentFileInfo;
  13. var currentDirectory = currentFileInfo.rewriteUrls ?
  14. currentFileInfo.currentDirectory : currentFileInfo.entryPath;
  15. var fragmentStart = filePath.indexOf('#');
  16. var fragment = '';
  17. if (fragmentStart !== -1) {
  18. fragment = filePath.slice(fragmentStart);
  19. filePath = filePath.slice(0, fragmentStart);
  20. }
  21. var fileManager = environment.getFileManager(filePath, currentDirectory, functionContext.context, environment, true);
  22. if (!fileManager) {
  23. throw {
  24. type: 'File',
  25. message: "Can not set up FileManager for " + filePathNode
  26. };
  27. }
  28. var fileSync = fileManager.loadFileSync(filePath, currentDirectory, functionContext.context, environment);
  29. if (fileSync.error) {
  30. throw fileSync.error;
  31. }
  32. var sizeOf = require('image-size');
  33. return sizeOf(fileSync.filename);
  34. }
  35. var imageFunctions = {
  36. 'image-size': function (filePathNode) {
  37. var size = imageSize(this, filePathNode);
  38. return new expression_1.default([
  39. new dimension_1.default(size.width, 'px'),
  40. new dimension_1.default(size.height, 'px')
  41. ]);
  42. },
  43. 'image-width': function (filePathNode) {
  44. var size = imageSize(this, filePathNode);
  45. return new dimension_1.default(size.width, 'px');
  46. },
  47. 'image-height': function (filePathNode) {
  48. var size = imageSize(this, filePathNode);
  49. return new dimension_1.default(size.height, 'px');
  50. }
  51. };
  52. function_registry_1.default.addMultiple(imageFunctions);
  53. });
  54. //# sourceMappingURL=image-size.js.map