@blueprintjs/icons
Version:
Components, fonts, icons, and css files for creating and displaying icons.
167 lines • 7.36 kB
JavaScript
/*
* Copyright 2021 Palantir Technologies, Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.Icons = void 0;
var tslib_1 = require("tslib");
var iconNames_1 = require("./iconNames");
var iconTypes_1 = require("./iconTypes");
var loaderUtils_1 = require("./loaderUtils");
function getLoaderFn(options) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _a, loader;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
_a = options.loader, loader = _a === void 0 ? singleton.defaultLoader : _a;
if (!(typeof loader === "function")) return [3 /*break*/, 1];
return [2 /*return*/, loader];
case 1:
if (!(loader === "all")) return [3 /*break*/, 3];
return [4 /*yield*/, Promise.resolve().then(function () { return tslib_1.__importStar(require(
/* webpackChunkName: "blueprint-icons-all-paths-loader" */
"./paths-loaders/allPathsLoader")); })];
case 2: return [2 /*return*/, (_b.sent()).allPathsLoader];
case 3: return [4 /*yield*/, Promise.resolve().then(function () { return tslib_1.__importStar(require(
/* webpackChunkName: "blueprint-icons-split-paths-by-size-loader" */
"./paths-loaders/splitPathsBySizeLoader")); })];
case 4: return [2 /*return*/, (_b.sent()).splitPathsBySizeLoader];
}
});
});
}
/**
* Blueprint icons loader.
*/
var Icons = /** @class */ (function () {
function Icons() {
/** @internal */
this.defaultLoader = "split-by-size";
/** @internal */
this.loadedIconPaths16 = new Map();
/** @internal */
this.loadedIconPaths20 = new Map();
}
/**
* Set global icon loading options for all subsequent `Icons.load()` calls.
*/
Icons.setLoaderOptions = function (options) {
if (options.loader !== undefined) {
singleton.defaultLoader = options.loader;
}
};
Icons.load = function (icons, size, options) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _this = this;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!Array.isArray(icons)) {
icons = [icons];
}
return [4 /*yield*/, Promise.all(icons.map(function (icon) { return _this.loadImpl(icon, size, options); }))];
case 1:
_a.sent();
return [2 /*return*/];
}
});
});
};
/**
* Load all available icons for use in Blueprint components.
*/
Icons.loadAll = function (options) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var allIcons;
var _this = this;
return tslib_1.__generator(this, function (_a) {
allIcons = Object.values(iconNames_1.IconNames);
(0, loaderUtils_1.wrapWithTimer)("[Blueprint] loading all icons", function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, Promise.all([
this.load(allIcons, iconTypes_1.IconSize.STANDARD, options),
this.load(allIcons, iconTypes_1.IconSize.LARGE, options),
])];
case 1:
_a.sent();
return [2 /*return*/];
}
});
}); });
return [2 /*return*/];
});
});
};
/**
* Get the icon SVG paths. Returns `undefined` if the icon has not been loaded yet.
*/
Icons.getPaths = function (icon, size) {
if (!this.isValidIconName(icon)) {
// don't warn, since this.load() will have warned already
return undefined;
}
var loadedIcons = size < iconTypes_1.IconSize.LARGE ? singleton.loadedIconPaths16 : singleton.loadedIconPaths20;
return loadedIcons.get(icon);
};
Icons.loadImpl = function (icon, size, options) {
if (options === void 0) { options = {}; }
return tslib_1.__awaiter(this, void 0, void 0, function () {
var loadedIcons, loaderFn, supportedSize, paths, e_1;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!this.isValidIconName(icon)) {
console.error("[Blueprint] Unknown icon '".concat(icon, "'"));
return [2 /*return*/];
}
loadedIcons = size < iconTypes_1.IconSize.LARGE ? singleton.loadedIconPaths16 : singleton.loadedIconPaths20;
if (loadedIcons.has(icon)) {
// already loaded, no-op
return [2 /*return*/];
}
return [4 /*yield*/, getLoaderFn(options)];
case 1:
loaderFn = _a.sent();
_a.label = 2;
case 2:
_a.trys.push([2, 4, , 5]);
supportedSize = size < iconTypes_1.IconSize.LARGE ? iconTypes_1.IconSize.STANDARD : iconTypes_1.IconSize.LARGE;
return [4 /*yield*/, loaderFn(icon, supportedSize)];
case 3:
paths = _a.sent();
loadedIcons.set(icon, paths);
return [3 /*break*/, 5];
case 4:
e_1 = _a.sent();
console.error("[Blueprint] Unable to load ".concat(size, "px icon '").concat(icon, "'"), e_1);
return [3 /*break*/, 5];
case 5: return [2 /*return*/];
}
});
});
};
/**
* @returns true if the given string is a valid {@link IconName}
*/
Icons.isValidIconName = function (iconName) {
return iconNames_1.IconNamesSet.has(iconName);
};
return Icons;
}());
exports.Icons = Icons;
var singleton = new Icons();
//# sourceMappingURL=iconLoader.js.map
;