image-size.js 2.3 KB

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