12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- var fs = require("fs");
- const CLIENT_FILES_OPT = "clientFiles";
- /**
- * Enable a element on clients
- * @param clients
- * @param ui
- * @param bs
- * @returns {Function}
- */
- var types = {
- "css": "text/css",
- "js": "application/javascript"
- };
- function enableElement (clients, ui, bs) {
- return function (file) {
- var uiItem = ui.getOptionIn([CLIENT_FILES_OPT, file.name]);
- var item = uiItem.toJS();
- var enableFn = uiItem.getIn(["callbacks", "enable"]);
- if (item.active) {
- return;
- }
- ui.setOptionIn([CLIENT_FILES_OPT, item.name, "active"], true, {silent: true});
- if (enableFn) {
- enableFn.call(ui, item);
- }
- if (item.file && !item.served) {
- ui.setOptionIn([CLIENT_FILES_OPT, item.name, "served"], true, {silent: true});
- bs.serveFile(item.src, {
- type: types[item.type],
- content: fs.readFileSync(item.file)
- });
- }
- addElement(clients, ui.getOptionIn([CLIENT_FILES_OPT, item.name]).toJS());
- };
- }
- /**
- * @param clients
- * @param ui
- * @returns {Function}
- */
- function disableElement (clients, ui) {
- return function (file) {
- var uiItem = ui.getOptionIn([CLIENT_FILES_OPT, file.name]);
- var item = uiItem.toJS();
- var disableFn = uiItem.getIn(["callbacks", "disable"]);
- if (disableFn) {
- disableFn.call(ui, item);
- }
- ui.setOptionIn([CLIENT_FILES_OPT, item.name, "active"], false, {silent: true});
- removeElement(clients, item.id);
- };
- }
- /**
- * @param clients
- * @param item
- */
- function addElement (clients, item) {
- clients.emit("ui:element:add", item);
- }
- /**
- * @param clients
- * @param id
- */
- function removeElement(clients, id) {
- clients.emit("ui:element:remove", {id: id});
- }
- module.exports.addElement = addElement;
- module.exports.removeElement = removeElement;
- module.exports.enable = enableElement;
- module.exports.disable = disableElement;
|