UNPKG

@launchmenu/core

Version:

An environment for visual keyboard controlled applets

75 lines 5.83 kB
"use strict"; 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=