@ace-util/injects
Version:
Utils.
118 lines • 4.63 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.globalInject = exports.globalStorage = exports.createInject = void 0;
var core_1 = require("@ace-util/core");
var Inject_1 = require("./Inject");
/**
* create a new Inject instance
* @param store Store
*/
function createInject(store) {
function inject(tag, functionToAdd, priority, acceptedArgs) {
if (functionToAdd) {
if (!(0, core_1.hasOwn)(store, tag)) {
store[tag] = new Inject_1.Inject();
}
store[tag].addFilter(functionToAdd, priority, acceptedArgs);
}
else {
return {
has: function (functionToCheck) {
if (!(0, core_1.hasOwn)(store, tag)) {
return false;
}
return store[tag].hasFilter(functionToCheck);
},
remove: function (functionToRemove, priority) {
if (priority === void 0) { priority = 10; }
var removed = false;
if ((0, core_1.hasOwn)(store, tag)) {
removed = store[tag].removeFilter(functionToRemove, priority);
}
return removed;
},
removeAll: function (priority) {
if ((0, core_1.hasOwn)(store, tag)) {
store[tag].removeAllFilters(priority);
}
},
filter: function (value) {
var _a;
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
if ((0, core_1.hasOwn)(store, 'all')) {
// todo:apply tag "all" filter
}
if ((0, core_1.hasOwn)(store, tag)) {
return (_a = store[tag]).applyFilters.apply(_a, __spreadArray([value], __read(args), false));
}
return Promise.resolve(value);
},
exec: function () {
var _a;
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
if ((0, core_1.hasOwn)(store, tag)) {
return (_a = store[tag]).doAction.apply(_a, __spreadArray([], __read(args), false));
}
return Promise.resolve();
},
};
}
}
return inject;
}
exports.createInject = createInject;
/**
* Global filters is used as singleton and can storage all inject callbacks;
*/
exports.globalStorage = Inject_1.Inject.buildPreinitializedStorage({});
/**
* Global Inject instalce
*/
exports.globalInject = createInject(exports.globalStorage);
__exportStar(require("./types"), exports);
//# sourceMappingURL=index.js.map