UNPKG

@gpa-gemstone/react-graph

Version:
75 lines 5.93 kB
"use strict"; // ****************************************************************************************************** // useLegend.tsx - Gbtc // // Copyright © 2026, Grid Protection Alliance. All Rights Reserved. // // Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See // the NOTICE file distributed with this work for additional information regarding copyright ownership. // The GPA licenses this file to you under the MIT License (MIT), the "License"; you may not use this // file except in compliance with the License. You may obtain a copy of the License at: // // http://opensource.org/licenses/MIT // // Unless agreed to in writing, the subject software distributed under the License is distributed on an // "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the // License for the specific language governing permissions and limitations. // // Code Modification History: // ---------------------------------------------------------------------------------------------------- // 01/05/2026 - Preston Crawford // Generated original version of source code. // // ****************************************************************************************************** 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; }; Object.defineProperty(exports, "__esModule", { value: true }); var React = require("react"); var GraphContext_1 = require("../GraphContext"); var DataLegend_1 = require("../DataLegend"); /** * Hook to create and manage legend entries/operations. * @param color The color of the legend entry. * @param legendSymbol The symbol style of the legend entry. * @param guid The unique identifier for the data series component. * @param hasNoData Indicates if the data series has no data. * @param legendLabel Text label for the legend entry. * @returns An object containing the createLegend function and the enabled state. */ var useLegend = function (color, legendSymbol, guid, hasNoData, legendLabel) { var context = React.useContext(GraphContext_1.GraphContext); var _a = __read(React.useState(true), 2), enabled = _a[0], setEnabled = _a[1]; var createLegend = React.useCallback(function () { if (legendLabel === undefined || guid === "") return undefined; return React.createElement(DataLegend_1.default, { id: guid, label: legendLabel, color: color, legendSymbol: legendSymbol, setEnabled: setEnabled, enabled: enabled, hasNoData: hasNoData !== null && hasNoData !== void 0 ? hasNoData : false }); }, [color, enabled, legendLabel, guid, legendSymbol, hasNoData]); React.useEffect(function () { if (guid === "") return; context.SetLegend(guid, createLegend()); }, [enabled, createLegend, guid, context]); React.useEffect(function () { if (context.MassEnableCommand.command === "enable-all") setEnabled(true); else if (context.MassEnableCommand.command === "disable-others") setEnabled(guid === context.MassEnableCommand.requester); }, [context.MassEnableCommand, guid]); return { createLegend: createLegend, enabled: enabled }; }; exports.default = useLegend; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlTGVnZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0hvb2tzL3VzZUxlZ2VuZC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHlHQUF5RztBQUN6Ryx3QkFBd0I7QUFDeEIsRUFBRTtBQUNGLHFFQUFxRTtBQUNyRSxFQUFFO0FBQ0Ysd0dBQXdHO0FBQ3hHLHdHQUF3RztBQUN4RyxzR0FBc0c7QUFDdEcsd0ZBQXdGO0FBQ3hGLEVBQUU7QUFDRiwwQ0FBMEM7QUFDMUMsRUFBRTtBQUNGLHdHQUF3RztBQUN4Ryx3R0FBd0c7QUFDeEcsNEVBQTRFO0FBQzVFLEVBQUU7QUFDRiw4QkFBOEI7QUFDOUIsd0dBQXdHO0FBQ3hHLGlDQUFpQztBQUNqQyxtREFBbUQ7QUFDbkQsRUFBRTtBQUNGLHlHQUF5Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXpHLDZCQUErQjtBQUMvQixnREFBK0M7QUFDL0MsNENBQXdEO0FBRXhEOzs7Ozs7OztHQVFHO0FBQ0gsSUFBTSxTQUFTLEdBQUcsVUFBQyxLQUFhLEVBQUUsWUFBeUIsRUFBRSxJQUFZLEVBQUUsU0FBbUIsRUFBRSxXQUFvQjtJQUNoSCxJQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLDJCQUFZLENBQUMsQ0FBQztJQUN6QyxJQUFBLEtBQUEsT0FBd0IsS0FBSyxDQUFDLFFBQVEsQ0FBVSxJQUFJLENBQUMsSUFBQSxFQUFwRCxPQUFPLFFBQUEsRUFBRSxVQUFVLFFBQWlDLENBQUM7SUFFNUQsSUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUNuQyxJQUFJLFdBQVcsS0FBSyxTQUFTLElBQUksSUFBSSxLQUFLLEVBQUU7WUFDeEMsT0FBTyxTQUFTLENBQUM7UUFFckIsT0FBTyxvQkFBQyxvQkFBVSxJQUNkLEVBQUUsRUFBRSxJQUFJLEVBQ1IsS0FBSyxFQUFFLFdBQVcsRUFDbEIsS0FBSyxFQUFFLEtBQUssRUFDWixZQUFZLEVBQUUsWUFBWSxFQUMxQixVQUFVLEVBQUUsVUFBVSxFQUN0QixPQUFPLEVBQUUsT0FBTyxFQUNoQixTQUFTLEVBQUUsU0FBUyxhQUFULFNBQVMsY0FBVCxTQUFTLEdBQUksS0FBSyxHQUMvQixDQUFDO0lBQ1AsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBRWpFLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDWixJQUFJLElBQUksS0FBSyxFQUFFO1lBQUUsT0FBTztRQUN4QixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFM0MsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNaLElBQUksT0FBTyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sS0FBSyxZQUFZO1lBQ2xELFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNoQixJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEtBQUssZ0JBQWdCO1lBQzNELFVBQVUsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRXRDLE9BQU8sRUFBRSxZQUFZLGNBQUEsRUFBRSxPQUFPLFNBQUEsRUFBRSxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQUVGLGtCQUFlLFNBQVMsQ0FBQyJ9