@launchmenu/core
Version:
An environment for visual keyboard controlled applets
75 lines • 5.83 kB
JavaScript
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.useBackgroundColor = exports.BackgroundColorProvider = exports.BackgroundColorContext = void 0;
const react_1 = __importStar(require("react"));
const color_1 = __importDefault(require("color"));
const ThemeContext_1 = require("./theming/ThemeContext");
/**
* A context to pass background color info down the tree, used by menu items, since their bg changes based on selection
*/
exports.BackgroundColorContext = react_1.createContext({
isHighlight: false,
});
/**
* A provider for the background color, isDark will automatically be computed if a color is provided
*/
const BackgroundColorProvider = ({ isDark, color, children, }) => {
const valueRef = react_1.useRef({ isHighlight: false });
const inpRef = react_1.useRef({});
const theme = ThemeContext_1.useTheme();
// Update the data if input changed
if (inpRef.current.color != color || inpRef.current.isDark != isDark) {
// If a color is provided calculate the isDark property and check if theme color
if (color) {
const isThemeColor = typeof color == "string" && !!theme.color[color];
const c = isThemeColor ? theme.color[color] : color;
if (isDark === undefined)
isDark = new color_1.default(c).isDark();
const isHighlight = isThemeColor
? !["bgPrimary", "bgSecondary", "bgTertiary"].includes(color)
: isDark != new color_1.default(theme.color.bgPrimary).isDark();
valueRef.current = {
isHighlight: isHighlight,
isDark,
color: c,
themeColorName: isThemeColor ? color : undefined,
};
}
else {
// Otherwise just forward the isDark property
valueRef.current = { isHighlight: isDark || false };
}
// Update the input data to later compare for changes
inpRef.current = { color, isDark };
}
return (react_1.default.createElement(exports.BackgroundColorContext.Provider, { value: valueRef.current, children: children }));
};
exports.BackgroundColorProvider = BackgroundColorProvider;
/**
* Retrieve color background color data in the current context
*/
const useBackgroundColor = () => react_1.useContext(exports.BackgroundColorContext);
exports.useBackgroundColor = useBackgroundColor;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2dyb3VuZENvbG9yQ29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHlsaW5nL2JhY2tncm91bmRDb2xvckNvbnRleHQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBbUU7QUFDbkUsa0RBQTBCO0FBQzFCLHlEQUFnRDtBQUloRDs7R0FFRztBQUNVLFFBQUEsc0JBQXNCLEdBQUcscUJBQWEsQ0FBdUI7SUFDdEUsV0FBVyxFQUFFLEtBQUs7Q0FDckIsQ0FBQyxDQUFDO0FBRUg7O0dBRUc7QUFDSSxNQUFNLHVCQUF1QixHQUFvRCxDQUFDLEVBQ3JGLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxHQUNYLEVBQUUsRUFBRTtJQUNELE1BQU0sUUFBUSxHQUFHLGNBQU0sQ0FBdUIsRUFBQyxXQUFXLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztJQUNwRSxNQUFNLE1BQU0sR0FBRyxjQUFNLENBR2xCLEVBQUUsQ0FBQyxDQUFDO0lBRVAsTUFBTSxLQUFLLEdBQUcsdUJBQVEsRUFBRSxDQUFDO0lBRXpCLG1DQUFtQztJQUNuQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxNQUFNLEVBQUU7UUFDbEUsZ0ZBQWdGO1FBQ2hGLElBQUksS0FBSyxFQUFFO1lBQ1AsTUFBTSxZQUFZLEdBQ2QsT0FBTyxLQUFLLElBQUksUUFBUSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQW9CLENBQUMsQ0FBQztZQUNwRSxNQUFNLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDbkUsSUFBSSxNQUFNLEtBQUssU0FBUztnQkFBRSxNQUFNLEdBQUcsSUFBSSxlQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDekQsTUFBTSxXQUFXLEdBQUcsWUFBWTtnQkFDNUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FDaEQsS0FBb0IsQ0FDdkI7Z0JBQ0gsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLGVBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBRTFELFFBQVEsQ0FBQyxPQUFPLEdBQUc7Z0JBQ2YsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLE1BQU07Z0JBQ04sS0FBSyxFQUFFLENBQUM7Z0JBQ1IsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUUsS0FBZ0IsQ0FBQyxDQUFDLENBQUMsU0FBUzthQUMvRCxDQUFDO1NBQ0w7YUFBTTtZQUNILDZDQUE2QztZQUM3QyxRQUFRLENBQUMsT0FBTyxHQUFHLEVBQUMsV0FBVyxFQUFFLE1BQU0sSUFBSSxLQUFLLEVBQUMsQ0FBQztTQUNyRDtRQUVELHFEQUFxRDtRQUNyRCxNQUFNLENBQUMsT0FBTyxHQUFHLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBQyxDQUFDO0tBQ3BDO0lBRUQsT0FBTyxDQUNILDhCQUFDLDhCQUFzQixDQUFDLFFBQVEsSUFBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxHQUFJLENBQ25GLENBQUM7QUFDTixDQUFDLENBQUM7QUE3Q1csUUFBQSx1QkFBdUIsMkJBNkNsQztBQUVGOztHQUVHO0FBQ0ksTUFBTSxrQkFBa0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxrQkFBVSxDQUFDLDhCQUFzQixDQUFDLENBQUM7QUFBOUQsUUFBQSxrQkFBa0Isc0JBQTRDIn0=
;