@gpa-gemstone/react-graph
Version:
Interactive UI Components for GPA products
75 lines • 5.93 kB
JavaScript
;
// ******************************************************************************************************
// 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