ag-charts-core
Version:
Advanced Charting / Charts supporting Javascript / Typescript / React / Angular / Vue
1,485 lines (1,462 loc) • 290 kB
JavaScript
"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from3, except, desc) => {
if (from3 && typeof from3 === "object" || typeof from3 === "function") {
for (let key of __getOwnPropNames(from3))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from3[key], enumerable: !(desc = __getOwnPropDesc(from3, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var __decorateClass = (decorators, target, key, kind) => {
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
for (var i = decorators.length - 1, decorator; i >= 0; i--)
if (decorator = decorators[i])
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
if (kind && result)
__defProp(target, key, result);
return result;
};
// packages/ag-charts-core/src/main.ts
var main_exports = {};
__export(main_exports, {
AGGREGATION_INDEX_UNSET: () => AGGREGATION_INDEX_UNSET,
AGGREGATION_INDEX_X_MAX: () => AGGREGATION_INDEX_X_MAX,
AGGREGATION_INDEX_X_MIN: () => AGGREGATION_INDEX_X_MIN,
AGGREGATION_INDEX_Y_MAX: () => AGGREGATION_INDEX_Y_MAX,
AGGREGATION_INDEX_Y_MIN: () => AGGREGATION_INDEX_Y_MIN,
AGGREGATION_MAX_POINTS: () => AGGREGATION_MAX_POINTS,
AGGREGATION_MIN_RANGE: () => AGGREGATION_MIN_RANGE,
AGGREGATION_SPAN: () => AGGREGATION_SPAN,
AGGREGATION_THRESHOLD: () => AGGREGATION_THRESHOLD,
AbstractModuleInstance: () => AbstractModuleInstance,
ActionOnSet: () => ActionOnSet,
AdjacencyListGraph: () => AdjacencyListGraph,
AsyncAwaitQueue: () => AsyncAwaitQueue,
BASE_FONT_SIZE: () => BASE_FONT_SIZE,
BREAK_TRANSFORM_CHAIN: () => BREAK_TRANSFORM_CHAIN,
BaseProperties: () => BaseProperties,
Border: () => Border,
CARTESIAN_AXIS_TYPE: () => CARTESIAN_AXIS_TYPE,
CARTESIAN_POSITION: () => CARTESIAN_POSITION,
CallbackCache: () => CallbackCache,
ChangeDetectableProperties: () => ChangeDetectableProperties,
ChartAxisDirection: () => ChartAxisDirection,
ChartUpdateType: () => ChartUpdateType,
CleanupRegistry: () => CleanupRegistry,
Color: () => Color,
DEFAULT_ANNOTATION_HANDLE_FILL: () => DEFAULT_ANNOTATION_HANDLE_FILL,
DEFAULT_ANNOTATION_STATISTICS_COLOR: () => DEFAULT_ANNOTATION_STATISTICS_COLOR,
DEFAULT_ANNOTATION_STATISTICS_DIVIDER_STROKE: () => DEFAULT_ANNOTATION_STATISTICS_DIVIDER_STROKE,
DEFAULT_ANNOTATION_STATISTICS_DOWN_FILL: () => DEFAULT_ANNOTATION_STATISTICS_DOWN_FILL,
DEFAULT_ANNOTATION_STATISTICS_DOWN_STROKE: () => DEFAULT_ANNOTATION_STATISTICS_DOWN_STROKE,
DEFAULT_ANNOTATION_STATISTICS_FILL: () => DEFAULT_ANNOTATION_STATISTICS_FILL,
DEFAULT_ANNOTATION_STATISTICS_STROKE: () => DEFAULT_ANNOTATION_STATISTICS_STROKE,
DEFAULT_CAPTION_ALIGNMENT: () => DEFAULT_CAPTION_ALIGNMENT,
DEFAULT_CAPTION_LAYOUT_STYLE: () => DEFAULT_CAPTION_LAYOUT_STYLE,
DEFAULT_FIBONACCI_STROKES: () => DEFAULT_FIBONACCI_STROKES,
DEFAULT_FINANCIAL_CHARTS_ANNOTATION_BACKGROUND_FILL: () => DEFAULT_FINANCIAL_CHARTS_ANNOTATION_BACKGROUND_FILL,
DEFAULT_FINANCIAL_CHARTS_ANNOTATION_COLOR: () => DEFAULT_FINANCIAL_CHARTS_ANNOTATION_COLOR,
DEFAULT_POLAR_SERIES_STROKE: () => DEFAULT_POLAR_SERIES_STROKE,
DEFAULT_SHADOW_COLOUR: () => DEFAULT_SHADOW_COLOUR,
DEFAULT_SPARKLINE_CROSSHAIR_STROKE: () => DEFAULT_SPARKLINE_CROSSHAIR_STROKE,
DEFAULT_TEXTBOX_COLOR: () => DEFAULT_TEXTBOX_COLOR,
DEFAULT_TEXTBOX_FILL: () => DEFAULT_TEXTBOX_FILL,
DEFAULT_TEXTBOX_STROKE: () => DEFAULT_TEXTBOX_STROKE,
DEFAULT_TEXT_ANNOTATION_COLOR: () => DEFAULT_TEXT_ANNOTATION_COLOR,
DEFAULT_TOOLBAR_POSITION: () => DEFAULT_TOOLBAR_POSITION,
Debug: () => debug_logger_exports,
DebugMetrics: () => debug_metrics_exports,
DeclaredSceneChangeDetection: () => DeclaredSceneChangeDetection,
DeclaredSceneObjectChangeDetection: () => DeclaredSceneObjectChangeDetection,
Deprecated: () => Deprecated,
DeprecatedAndRenamedTo: () => DeprecatedAndRenamedTo,
EllipsisChar: () => EllipsisChar,
ErrorType: () => ErrorType,
EventEmitter: () => EventEmitter,
FONT_SIZE: () => FONT_SIZE,
FONT_SIZE_RATIO: () => FONT_SIZE_RATIO,
IS_DARK_THEME: () => IS_DARK_THEME,
InterpolationProperties: () => InterpolationProperties,
LRUCache: () => LRUCache,
LineSplitter: () => LineSplitter,
Logger: () => logger_exports,
LonLatBBox: () => LonLatBBox,
MementoCaretaker: () => MementoCaretaker,
ModuleRegistry: () => moduleRegistry_exports,
ModuleType: () => ModuleType,
ObserveChanges: () => ObserveChanges,
PALETTE_ALT_DOWN_FILL: () => PALETTE_ALT_DOWN_FILL,
PALETTE_ALT_DOWN_STROKE: () => PALETTE_ALT_DOWN_STROKE,
PALETTE_ALT_NEUTRAL_FILL: () => PALETTE_ALT_NEUTRAL_FILL,
PALETTE_ALT_NEUTRAL_STROKE: () => PALETTE_ALT_NEUTRAL_STROKE,
PALETTE_ALT_UP_FILL: () => PALETTE_ALT_UP_FILL,
PALETTE_ALT_UP_STROKE: () => PALETTE_ALT_UP_STROKE,
PALETTE_DOWN_FILL: () => PALETTE_DOWN_FILL,
PALETTE_DOWN_STROKE: () => PALETTE_DOWN_STROKE,
PALETTE_NEUTRAL_FILL: () => PALETTE_NEUTRAL_FILL,
PALETTE_NEUTRAL_STROKE: () => PALETTE_NEUTRAL_STROKE,
PALETTE_UP_FILL: () => PALETTE_UP_FILL,
PALETTE_UP_STROKE: () => PALETTE_UP_STROKE,
POLAR_AXIS_SHAPE: () => POLAR_AXIS_SHAPE,
POLAR_AXIS_TYPE: () => POLAR_AXIS_TYPE,
PREV_NEXT_KEYS: () => PREV_NEXT_KEYS,
Padding: () => Padding,
ParallelStateMachine: () => ParallelStateMachine,
PolarZIndexMap: () => PolarZIndexMap,
PropertiesArray: () => PropertiesArray,
Property: () => addFakeTransformToInstanceProperty,
ProxyOnWrite: () => ProxyOnWrite,
ProxyProperty: () => ProxyProperty,
ProxyPropertyOnWrite: () => ProxyPropertyOnWrite,
SKIP_JS_BUILTINS: () => SKIP_JS_BUILTINS,
ScaleAlignment: () => ScaleAlignment,
SceneArrayChangeDetection: () => SceneArrayChangeDetection,
SceneChangeDetection: () => SceneChangeDetection,
SceneObjectChangeDetection: () => SceneObjectChangeDetection,
SceneRefChangeDetection: () => SceneRefChangeDetection,
SeriesContentZIndexMap: () => SeriesContentZIndexMap,
SeriesZIndexMap: () => SeriesZIndexMap,
SimpleCache: () => SimpleCache,
SpanJoin: () => SpanJoin,
StateMachine: () => StateMachine,
StateMachineProperty: () => StateMachineProperty,
TRIPLE_EQ: () => TRIPLE_EQ,
TextMeasurer: () => TextMeasurer,
TickIntervals: () => TickIntervals,
ToolbarButtonProperties: () => ToolbarButtonProperties,
TrimEdgeGuard: () => TrimEdgeGuard,
UnknownError: () => UnknownError,
ValidationError: () => ValidationError,
Vec2: () => vector_exports,
Vec4: () => vector4_exports,
Vertex: () => Vertex,
WeakCache: () => WeakCache,
ZIndexMap: () => ZIndexMap,
addEscapeEventListener: () => addEscapeEventListener,
addFakeTransformToInstanceProperty: () => addFakeTransformToInstanceProperty,
addMouseCloseListener: () => addMouseCloseListener,
addObserverToInstanceProperty: () => addObserverToInstanceProperty,
addOverrideFocusVisibleEventListener: () => addOverrideFocusVisibleEventListener,
addTouchCloseListener: () => addTouchCloseListener,
addTransformToInstanceProperty: () => addTransformToInstanceProperty,
aggregationBucketForDatum: () => aggregationBucketForDatum,
aggregationDatumMatchesIndex: () => aggregationDatumMatchesIndex,
aggregationDomain: () => aggregationDomain,
aggregationIndexForXRatio: () => aggregationIndexForXRatio,
aggregationRangeFittingPoints: () => aggregationRangeFittingPoints,
aggregationXRatioForDatumIndex: () => aggregationXRatioForDatumIndex,
aggregationXRatioForXValue: () => aggregationXRatioForXValue,
and: () => and,
angleBetween: () => angleBetween,
angularPadding: () => angularPadding,
appendEllipsis: () => appendEllipsis,
arcDistanceSquared: () => arcDistanceSquared,
areScalingEqual: () => areScalingEqual,
array: () => array,
arrayLength: () => arrayLength,
arrayOf: () => arrayOf,
arrayOfDefs: () => arrayOfDefs,
arraysEqual: () => arraysEqual,
assignIfNotStrictlyEqual: () => assignIfNotStrictlyEqual,
attachDescription: () => attachDescription,
attachListener: () => attachListener,
autoSizedLabelOptionsDefs: () => autoSizedLabelOptionsDefs,
barHighlightOptionsDef: () => barHighlightOptionsDef,
bezier2DDistance: () => bezier2DDistance,
bezier2DExtrema: () => bezier2DExtrema,
boolean: () => boolean,
borderOptionsDef: () => borderOptionsDef,
boxCollides: () => boxCollides,
boxContains: () => boxContains,
boxEmpty: () => boxEmpty,
boxesEqual: () => boxesEqual,
buildDateFormatter: () => buildDateFormatter,
cachedTextMeasurer: () => cachedTextMeasurer,
calcLineHeight: () => calcLineHeight,
calculatePlacement: () => calculatePlacement,
callWithContext: () => callWithContext,
callback: () => callback,
callbackDefs: () => callbackDefs,
callbackOf: () => callbackOf,
checkDatum: () => checkDatum,
circularSliceArray: () => circularSliceArray,
clamp: () => clamp,
clampArray: () => clampArray,
clipLines: () => clipLines,
clipSpanX: () => clipSpanX,
collapseSpanToPoint: () => collapseSpanToPoint,
collectAggregationLevels: () => collectAggregationLevels,
color: () => color,
colorStopsOrderValidator: () => colorStopsOrderValidator,
colorUnion: () => colorUnion,
commonChartOptionsDefs: () => commonChartOptionsDefs,
commonSeriesOptionsDefs: () => commonSeriesOptionsDefs,
commonSeriesThemeableOptionsDefs: () => commonSeriesThemeableOptionsDefs,
compactAggregationIndices: () => compactAggregationIndices,
compareDates: () => compareDates,
computeExtremesAggregation: () => computeExtremesAggregation,
computeExtremesAggregationPartial: () => computeExtremesAggregationPartial,
constant: () => constant,
contextMenuItemsArray: () => contextMenuItemsArray,
countFractionDigits: () => countFractionDigits,
countLines: () => countLines,
createAggregationIndices: () => createAggregationIndices,
createButton: () => createButton,
createCanvasContext: () => createCanvasContext,
createCheckbox: () => createCheckbox,
createDeprecationWarning: () => createDeprecationWarning,
createElement: () => createElement,
createElementId: () => createElementId,
createIcon: () => createIcon,
createId: () => createId,
createIdsGenerator: () => createIdsGenerator,
createNumberFormatter: () => createNumberFormatter,
createSelect: () => createSelect,
createSvgElement: () => createSvgElement,
createTextArea: () => createTextArea,
createTicks: () => createTicks,
date: () => date,
dateToNumber: () => dateToNumber,
dateTruncationForDomain: () => dateTruncationForDomain,
datesSortOrder: () => datesSortOrder,
debounce: () => debounce,
decodeIntervalValue: () => decodeIntervalValue,
deepClone: () => deepClone,
deepFreeze: () => deepFreeze,
defaultEpoch: () => defaultEpoch,
defined: () => defined,
diffArrays: () => diffArrays,
distribute: () => distribute,
downloadUrl: () => downloadUrl,
dropFirstWhile: () => dropFirstWhile,
dropLastWhile: () => dropLastWhile,
durationDay: () => durationDay,
durationHour: () => durationHour,
durationMinute: () => durationMinute,
durationMonth: () => durationMonth,
durationSecond: () => durationSecond,
durationWeek: () => durationWeek,
durationYear: () => durationYear,
easeIn: () => easeIn,
easeInOut: () => easeInOut,
easeInOutQuad: () => easeInOutQuad,
easeInQuad: () => easeInQuad,
easeOut: () => easeOut,
easeOutQuad: () => easeOutQuad,
encodedToTimestamp: () => encodedToTimestamp,
enterpriseRegistry: () => enterpriseRegistry,
entries: () => entries,
errorBarOptionsDefs: () => errorBarOptionsDefs,
errorBarThemeableOptionsDefs: () => errorBarThemeableOptionsDefs,
estimateTickCount: () => estimateTickCount,
evaluateBezier: () => evaluateBezier,
every: () => every,
expandLegendPosition: () => expandLegendPosition,
extent: () => extent,
extractDecoratedProperties: () => extractDecoratedProperties,
extractDomain: () => extractDomain,
fillGradientDefaults: () => fillGradientDefaults,
fillImageDefaults: () => fillImageDefaults,
fillOptionsDef: () => fillOptionsDef,
fillPatternDefaults: () => fillPatternDefaults,
findMaxIndex: () => findMaxIndex,
findMaxValue: () => findMaxValue,
findMinIndex: () => findMinIndex,
findMinMax: () => findMinMax,
findMinValue: () => findMinValue,
findRangeExtent: () => findRangeExtent,
first: () => first,
focusCursorAtEnd: () => focusCursorAtEnd,
fontFamilyFull: () => fontFamilyFull,
fontOptionsDef: () => fontOptionsDef,
formatNumber: () => formatNumber,
formatObjectValidator: () => formatObjectValidator,
formatPercent: () => formatPercent,
formatValue: () => formatValue,
fromPairs: () => fromPairs,
generateUUID: () => generateUUID,
geoJson: () => geoJson,
getAngleRatioRadians: () => getAngleRatioRadians,
getAttribute: () => getAttribute,
getDocument: () => getDocument,
getElementBBox: () => getElementBBox,
getIconClassNames: () => getIconClassNames,
getLastFocus: () => getLastFocus,
getMaxInnerRectSize: () => getMaxInnerRectSize,
getMidpointsForIndices: () => getMidpointsForIndices,
getMinOuterRectSize: () => getMinOuterRectSize,
getPath: () => getPath,
getTickTimeInterval: () => getTickTimeInterval,
getWindow: () => getWindow,
googleFont: () => googleFont,
gradientColorStops: () => gradientColorStops,
gradientStrict: () => gradientStrict,
greaterThan: () => greaterThan,
groupBy: () => groupBy,
guardTextEdges: () => guardTextEdges,
hasNoModifiers: () => hasNoModifiers,
hasRequiredInPath: () => hasRequiredInPath,
highlightOptionsDef: () => highlightOptionsDef,
htmlElement: () => htmlElement,
inRange: () => inRange,
initRovingTabIndex: () => initRovingTabIndex,
insertListItemsSorted: () => insertListItemsSorted,
instanceOf: () => instanceOf,
interpolationOptionsDefs: () => interpolationOptionsDefs,
intervalCeil: () => intervalCeil,
intervalEpoch: () => intervalEpoch,
intervalExtent: () => intervalExtent,
intervalFloor: () => intervalFloor,
intervalHierarchy: () => intervalHierarchy,
intervalMilliseconds: () => intervalMilliseconds,
intervalNext: () => intervalNext,
intervalPrevious: () => intervalPrevious,
intervalRange: () => intervalRange,
intervalRangeCount: () => intervalRangeCount,
intervalRangeNumeric: () => intervalRangeNumeric,
intervalRangeStartIndex: () => intervalRangeStartIndex,
intervalStep: () => intervalStep,
intervalUnit: () => intervalUnit,
inverseEaseOut: () => inverseEaseOut,
isArray: () => isArray,
isBetweenAngles: () => isBetweenAngles,
isBoolean: () => isBoolean,
isButtonClickEvent: () => isButtonClickEvent,
isColor: () => isColor,
isContinuous: () => isContinuous,
isDate: () => isDate,
isDecoratedObject: () => isDecoratedObject,
isDefined: () => isDefined,
isDenseInterval: () => isDenseInterval,
isEmptyObject: () => isEmptyObject,
isEnumKey: () => isEnumKey,
isEnumValue: () => isEnumValue,
isFiniteNumber: () => isFiniteNumber,
isFunction: () => isFunction,
isGradientFill: () => isGradientFill,
isGradientFillArray: () => isGradientFillArray,
isGradientOrPatternFill: () => isGradientOrPatternFill,
isHtmlElement: () => isHtmlElement,
isImageFill: () => isImageFill,
isInputPending: () => isInputPending,
isInteger: () => isInteger,
isKeyOf: () => isKeyOf,
isNegative: () => isNegative,
isNumber: () => isNumber,
isNumberEqual: () => isNumberEqual,
isNumberObject: () => isNumberObject,
isObject: () => isObject,
isObjectLike: () => isObjectLike,
isObjectWithProperty: () => isObjectWithProperty,
isObjectWithStringProperty: () => isObjectWithStringProperty,
isPatternFill: () => isPatternFill,
isPlainObject: () => isPlainObject,
isPointLabelDatum: () => isPointLabelDatum,
isProperties: () => isProperties,
isRegExp: () => isRegExp,
isScaleValid: () => isScaleValid,
isSegmentTruncated: () => isSegmentTruncated,
isString: () => isString,
isStringFillArray: () => isStringFillArray,
isStringObject: () => isStringObject,
isSymbol: () => isSymbol,
isTextTruncated: () => isTextTruncated,
isTruncated: () => isTruncated,
isUnitTimeCategoryScaling: () => isUnitTimeCategoryScaling,
isValidDate: () => isValidDate,
isValidNumberFormat: () => isValidNumberFormat,
iterate: () => iterate,
joinFormatted: () => joinFormatted,
jsonApply: () => jsonApply,
jsonDiff: () => jsonDiff,
jsonPropertyCompare: () => jsonPropertyCompare,
jsonWalk: () => jsonWalk,
kebabCase: () => kebabCase,
labelBoxOptionsDef: () => labelBoxOptionsDef,
legendPositionValidator: () => legendPositionValidator,
lessThan: () => lessThan,
lessThanOrEqual: () => lessThanOrEqual,
levenshteinDistance: () => levenshteinDistance,
lineDashOptionsDef: () => lineDashOptionsDef,
lineDistanceSquared: () => lineDistanceSquared,
lineHighlightOptionsDef: () => lineHighlightOptionsDef,
lineSegmentOptions: () => lineSegmentOptions,
lineSegmentation: () => lineSegmentation,
linear: () => linear,
linearGaugeSeriesOptionsDef: () => linearGaugeSeriesOptionsDef,
linearGaugeSeriesThemeableOptionsDef: () => linearGaugeSeriesThemeableOptionsDef,
linearGaugeTargetOptionsDef: () => linearGaugeTargetOptionsDef,
linearPoints: () => linearPoints,
listDecoratedProperties: () => listDecoratedProperties,
lowestGranularityForInterval: () => lowestGranularityForInterval,
lowestGranularityUnitForTicks: () => lowestGranularityUnitForTicks,
lowestGranularityUnitForValue: () => lowestGranularityUnitForValue,
makeAccessibleClickListener: () => makeAccessibleClickListener,
mapValues: () => mapValues,
markerOptionsDefs: () => markerOptionsDefs,
markerStyleOptionsDefs: () => markerStyleOptionsDefs,
measureTextSegments: () => measureTextSegments,
memo: () => memo,
merge: () => merge,
mergeArrayDefaults: () => mergeArrayDefaults,
mergeDefaults: () => mergeDefaults,
modulus: () => modulus,
multiSeriesHighlightOptionsDef: () => multiSeriesHighlightOptionsDef,
nearestSquared: () => nearestSquared,
nearestSquaredInContainer: () => nearestSquaredInContainer,
nextPowerOf2: () => nextPowerOf2,
niceTicksDomain: () => niceTicksDomain,
normalisedExtentWithMetadata: () => normalisedExtentWithMetadata,
normalisedTimeExtentWithMetadata: () => normalisedTimeExtentWithMetadata,
normalizeAngle180: () => normalizeAngle180,
normalizeAngle360: () => normalizeAngle360,
normalizeAngle360FromDegrees: () => normalizeAngle360FromDegrees,
normalizeAngle360Inclusive: () => normalizeAngle360Inclusive,
number: () => number,
numberFormatValidator: () => numberFormatValidator,
numberMin: () => numberMin,
numberRange: () => numberRange,
object: () => object,
objectsEqual: () => objectsEqual,
objectsEqualWith: () => objectsEqualWith,
optionsDefs: () => optionsDefs,
or: () => or,
padding: () => padding,
paddingOptions: () => paddingOptions,
parseColor: () => parseColor,
parseNumberFormat: () => parseNumberFormat,
partialAssign: () => partialAssign,
pause: () => pause,
pick: () => pick,
placeLabels: () => placeLabels,
positiveNumber: () => positiveNumber,
positiveNumberNonZero: () => positiveNumberNonZero,
previousPowerOf2: () => previousPowerOf2,
radialGaugeSeriesOptionsDef: () => radialGaugeSeriesOptionsDef,
radialGaugeSeriesThemeableOptionsDef: () => radialGaugeSeriesThemeableOptionsDef,
radialGaugeTargetOptionsDef: () => radialGaugeTargetOptionsDef,
range: () => range,
rangeValidator: () => rangeValidator,
ratio: () => ratio,
readIntegratedWrappedValue: () => readIntegratedWrappedValue,
required: () => required,
rescaleSpan: () => rescaleSpan,
rescaleVisibleRange: () => rescaleVisibleRange,
resetIds: () => resetIds,
rotatePoint: () => rotatePoint,
roundTo: () => roundTo,
safeCall: () => safeCall,
seriesLabelOptionsDefs: () => seriesLabelOptionsDefs,
setAttribute: () => setAttribute,
setAttributes: () => setAttributes,
setDocument: () => setDocument,
setElementBBox: () => setElementBBox,
setElementStyle: () => setElementStyle,
setElementStyles: () => setElementStyles,
setPath: () => setPath,
setWindow: () => setWindow,
shadowOptionsDefs: () => shadowOptionsDefs,
shallowClone: () => shallowClone,
shapeHighlightOptionsDef: () => shapeHighlightOptionsDef,
shapeSegmentOptions: () => shapeSegmentOptions,
shapeSegmentation: () => shapeSegmentation,
shapeValidator: () => shapeValidator,
simpleMemorize: () => simpleMemorize,
simpleMemorize2: () => simpleMemorize2,
smoothPoints: () => smoothPoints,
solveBezier: () => solveBezier,
sortAndUniqueDates: () => sortAndUniqueDates,
sortBasedOnArray: () => sortBasedOnArray,
spanRange: () => spanRange,
splitBezier2D: () => splitBezier2D,
stepPoints: () => stepPoints,
stopPageScrolling: () => stopPageScrolling,
strictObjectKeys: () => strictObjectKeys,
strictUnion: () => strictUnion,
string: () => string,
stringLength: () => stringLength,
stringifyValue: () => stringifyValue,
strokeOptionsDef: () => strokeOptionsDef,
textOrSegments: () => textOrSegments,
themeOperator: () => themeOperator,
throttle: () => throttle,
tickFormat: () => tickFormat,
tickStep: () => tickStep,
toArray: () => toArray,
toDegrees: () => toDegrees,
toFontString: () => toFontString,
toIterable: () => toIterable,
toPlainText: () => toPlainText,
toRadians: () => toRadians,
toTextString: () => toTextString,
toolbarButtonOptionsDefs: () => toolbarButtonOptionsDefs,
tooltipOptionsDefs: () => tooltipOptionsDefs,
transformIntegratedCategoryValue: () => transformIntegratedCategoryValue,
truncateLine: () => truncateLine,
typeUnion: () => typeUnion,
undocumented: () => undocumented,
unguardTextEdges: () => unguardTextEdges,
union: () => union,
unionSymbol: () => unionSymbol,
unique: () => unique,
validate: () => validate,
without: () => without,
wrapLines: () => wrapLines,
wrapText: () => wrapText,
wrapTextOrSegments: () => wrapTextOrSegments,
wrapTextSegments: () => wrapTextSegments
});
module.exports = __toCommonJS(main_exports);
// packages/ag-charts-core/src/globals/debug-logger.ts
var debug_logger_exports = {};
__export(debug_logger_exports, {
Time: () => Time,
check: () => check,
create: () => create,
inDevelopmentMode: () => inDevelopmentMode
});
// packages/ag-charts-core/src/utils/arrays.ts
function toArray(value) {
if (value === void 0) {
return [];
}
return Array.isArray(value) ? value : [value];
}
function unique(array2) {
return Array.from(new Set(array2));
}
function groupBy(array2, iteratee) {
return array2.reduce((result, item) => {
const groupKey = iteratee(item);
result[groupKey] ?? (result[groupKey] = []);
result[groupKey].push(item);
return result;
}, {});
}
function arraysEqual(a, b) {
if (a == null || b == null || a.length !== b.length) {
return false;
}
for (let i = 0; i < a.length; i++) {
if (Array.isArray(a[i]) && Array.isArray(b[i])) {
if (!arraysEqual(a[i], b[i])) {
return false;
}
} else if (a[i] !== b[i]) {
return false;
}
}
return true;
}
function circularSliceArray(data, size, offset = 0) {
if (data.length === 0) {
return [];
}
const result = [];
for (let i = 0; i < size; i++) {
result.push(data.at((i + offset) % data.length));
}
return result;
}
function sortBasedOnArray(baseArray, orderArray) {
const orderMap = /* @__PURE__ */ new Map();
for (const [index, item] of orderArray.entries()) {
orderMap.set(item, index);
}
return baseArray.sort((a, b) => {
const indexA = orderMap.get(a) ?? Infinity;
const indexB = orderMap.get(b) ?? Infinity;
return indexA - indexB;
});
}
function dropFirstWhile(array2, cond) {
let i = 0;
while (i < array2.length && cond(array2[i])) {
i += 1;
}
const deleteCount = i;
if (deleteCount !== 0)
array2.splice(0, deleteCount);
}
function dropLastWhile(array2, cond) {
let i = array2.length - 1;
while (i >= 0 && cond(array2[i])) {
i -= 1;
}
const deleteCount = array2.length - 1 - i;
if (deleteCount !== 0)
array2.splice(array2.length - deleteCount, deleteCount);
}
function distribute(min, max, maxCount) {
const values = [min];
const step = Math.round((max - min) / (maxCount - 1));
if (step > 0) {
for (let i = min + step; i < max; i += step) {
const length2 = values.push(i);
if (length2 >= maxCount - 1)
break;
}
}
values.push(max);
return values;
}
// packages/ag-charts-core/src/utils/dom/globalsProxy.ts
var verifiedGlobals = {};
if (typeof globalThis.window !== "undefined") {
verifiedGlobals.window = globalThis.window;
}
if (typeof document !== "undefined") {
verifiedGlobals.document = document;
} else if (typeof globalThis.global !== "undefined") {
verifiedGlobals.document = globalThis.document;
}
function getDocument(propertyName) {
return propertyName ? verifiedGlobals.document?.[propertyName] : verifiedGlobals.document;
}
function getWindow(propertyName) {
return propertyName ? verifiedGlobals.window?.[propertyName] : verifiedGlobals.window;
}
function setDocument(document2) {
verifiedGlobals.document = document2;
}
function setWindow(window) {
verifiedGlobals.window = window;
}
// packages/ag-charts-core/src/utils/dom/domElements.ts
function createElement(tagName, className, style2) {
const element = getDocument().createElement(tagName);
if (typeof className === "object") {
style2 = className;
className = void 0;
}
if (className) {
for (const name of className.split(" ")) {
element.classList.add(name);
}
}
if (style2) {
Object.assign(element.style, style2);
}
return element;
}
function createSvgElement(elementName) {
return getDocument().createElementNS("http://www.w3.org/2000/svg", elementName);
}
// packages/ag-charts-core/src/utils/dom/domDownload.ts
function downloadUrl(dataUrl, fileName) {
const body = getDocument("body");
const element = createElement("a", { display: "none" });
element.href = dataUrl;
element.download = fileName;
body.appendChild(element);
element.click();
setTimeout(() => element.remove());
}
// packages/ag-charts-core/src/utils/dom/domEvents.ts
function attachListener(element, eventName, handler, options) {
element.addEventListener(eventName, handler, options);
return () => element.removeEventListener(eventName, handler, options);
}
// packages/ag-charts-core/src/utils/dom/domUtils.ts
var style;
function parseColor(color2) {
if (style == null) {
const OptionConstructor = getWindow("Option");
style = new OptionConstructor().style;
}
style.color = color2;
const result = style.color || null;
style.color = "";
return result;
}
// packages/ag-charts-core/src/globals/logger.ts
var logger_exports = {};
__export(logger_exports, {
error: () => error,
errorOnce: () => errorOnce,
log: () => log,
logGroup: () => logGroup,
reset: () => reset,
table: () => table,
warn: () => warn,
warnOnce: () => warnOnce
});
var doOnceCache = /* @__PURE__ */ new Set();
function log(...logContent) {
console.log(...logContent);
}
function warn(message, ...logContent) {
console.warn(`AG Charts - ${message}`, ...logContent);
}
function error(message, ...logContent) {
if (typeof message === "object") {
console.error(`AG Charts error`, message, ...logContent);
} else {
console.error(`AG Charts - ${message}`, ...logContent);
}
}
function table(...logContent) {
console.table(...logContent);
}
function guardOnce(messageOrError, prefix, cb) {
let message;
if (messageOrError instanceof Error) {
message = messageOrError.message;
} else if (typeof messageOrError === "string") {
message = messageOrError;
} else if (typeof messageOrError === "object") {
message = JSON.stringify(messageOrError);
} else {
message = String(messageOrError);
}
const cacheKey = `${prefix}: ${message}`;
if (doOnceCache.has(cacheKey))
return;
cb(messageOrError);
doOnceCache.add(cacheKey);
}
function warnOnce(messageOrError, ...logContent) {
guardOnce(messageOrError, "Logger.warn", (message) => warn(message, ...logContent));
}
function errorOnce(messageOrError, ...logContent) {
guardOnce(messageOrError, "Logger.error", (message) => error(message, ...logContent));
}
function reset() {
doOnceCache.clear();
}
function logGroup(name, cb) {
console.groupCollapsed(name);
try {
return cb();
} finally {
console.groupEnd();
}
}
// packages/ag-charts-core/src/globals/debug-logger.ts
var LongTimePeriodThreshold = 2e3;
var timeOfLastLog = Date.now();
function logTimeGap() {
const timeSinceLastLog = Date.now() - timeOfLastLog;
if (timeSinceLastLog > LongTimePeriodThreshold) {
const prettyDuration = (Math.floor(timeSinceLastLog / 100) / 10).toFixed(1);
log(`**** ${prettyDuration}s since last log message ****`);
}
timeOfLastLog = Date.now();
}
function create(...debugSelectors) {
const resultFn = (...logContent) => {
if (check(...debugSelectors)) {
if (typeof logContent[0] === "function") {
logContent = toArray(logContent[0]());
}
logTimeGap();
log(...logContent);
}
};
return Object.assign(resultFn, {
check: () => check(...debugSelectors),
group: (name, cb) => {
if (check(...debugSelectors)) {
return logGroup(name, cb);
}
return cb();
}
});
}
function check(...debugSelectors) {
if (debugSelectors.length === 0) {
debugSelectors.push(true);
}
const chartDebug = toArray(getWindow("agChartsDebug"));
return chartDebug.some((selector) => debugSelectors.includes(selector));
}
function inDevelopmentMode(fn) {
if (check("dev")) {
return fn();
}
}
function Time(name, opts = {}) {
const { logResult = true, logStack = false, logArgs = false, logData } = opts;
return function(_target, _propertyKey, descriptor) {
const method = descriptor.value;
descriptor.value = function(...args) {
const start2 = performance.now();
const result = method.apply(this, args);
const duration = performance.now() - start2;
const logMessage = { duration };
if (logResult)
logMessage.result = result;
if (logArgs)
logMessage.args = args;
if (logStack)
logMessage.stack = new Error("Stack trace for timing debug").stack;
if (logData)
logMessage.logData = logData(this);
log(name, logMessage);
return result;
};
};
}
// packages/ag-charts-core/src/globals/debug-metrics.ts
var debug_metrics_exports = {};
__export(debug_metrics_exports, {
flush: () => flush,
record: () => record
});
var metrics = /* @__PURE__ */ new Map();
function record(key, value) {
if (!check("scene:stats:verbose"))
return;
metrics.set(key, value);
}
function flush() {
const result = Object.fromEntries(metrics);
metrics.clear();
return result;
}
// packages/ag-charts-core/src/globals/enterpriseRegistry.ts
var enterpriseRegistry = {};
// packages/ag-charts-core/src/globals/moduleRegistry.ts
var moduleRegistry_exports = {};
__export(moduleRegistry_exports, {
RegistryMode: () => RegistryMode,
getAxisModule: () => getAxisModule,
getChartModule: () => getChartModule,
getPresetModule: () => getPresetModule,
getSeriesModule: () => getSeriesModule,
hasModule: () => hasModule,
isEnterprise: () => isEnterprise,
isIntegrated: () => isIntegrated,
isModuleType: () => isModuleType,
isUmd: () => isUmd,
listModules: () => listModules,
listModulesByType: () => listModulesByType,
register: () => register,
registerModules: () => registerModules,
reset: () => reset2,
setRegistryMode: () => setRegistryMode
});
// packages/ag-charts-core/src/interfaces/moduleDefinition.ts
var ModuleType = /* @__PURE__ */ ((ModuleType2) => {
ModuleType2["Chart"] = "chart";
ModuleType2["Axis"] = "axis";
ModuleType2["Series"] = "series";
ModuleType2["Plugin"] = "plugin";
ModuleType2["AxisPlugin"] = "axis:plugin";
ModuleType2["SeriesPlugin"] = "series:plugin";
ModuleType2["Preset"] = "preset";
return ModuleType2;
})(ModuleType || {});
// packages/ag-charts-core/src/globals/moduleRegistry.ts
var RegistryMode = /* @__PURE__ */ ((RegistryMode2) => {
RegistryMode2["Enterprise"] = "enterprise";
RegistryMode2["Integrated"] = "integrated";
RegistryMode2["UMD"] = "umd";
return RegistryMode2;
})(RegistryMode || {});
var registeredModes = /* @__PURE__ */ new Set();
var registeredModules = /* @__PURE__ */ new Map();
function registerModuleDefinition(def) {
registeredModules.set(def.name, def);
if (def.dependencies) {
for (const dependency of def.dependencies) {
register(dependency);
}
}
}
function register(def) {
const existingDefinition = registeredModules.get(def.name);
if (!existingDefinition) {
registerModuleDefinition(def);
return;
}
if (existingDefinition.version === def.version) {
if (!existingDefinition.enterprise && def.enterprise) {
registerModuleDefinition(def);
}
return;
}
throw new Error(
[
`AG Charts - Module '${def.name}' already registered with different version:`,
`${existingDefinition.version} vs ${def.version}`,
``,
`Check your package.json for conflicting dependencies - depending on your package manager`,
`one of these commands may help:`,
`- npm ls ag-charts-community`,
`- yarn why ag-charts-community`
].join("\n")
);
}
function registerModules(definitions) {
for (const definition of definitions.flat()) {
register(definition);
}
}
function reset2() {
registeredModes.clear();
registeredModules.clear();
}
function hasModule(moduleName) {
return registeredModules.has(moduleName);
}
function* listModules() {
for (const definition of registeredModules.values()) {
yield definition;
}
}
function* listModulesByType(moduleType) {
for (const definition of registeredModules.values()) {
if (isModuleType(moduleType, definition)) {
yield definition;
}
}
}
function getAxisModule(moduleName) {
const definition = registeredModules.get(moduleName);
if (isModuleType("axis" /* Axis */, definition)) {
return definition;
}
}
function getChartModule(moduleName) {
const definition = registeredModules.get(moduleName);
if (isModuleType("chart" /* Chart */, definition)) {
return definition;
}
throw new Error(
`AG Charts - Unknown chart type; Check options are correctly structured and series types are specified`
);
}
function getPresetModule(moduleName) {
const definition = registeredModules.get(moduleName);
if (isModuleType("preset" /* Preset */, definition)) {
return definition;
}
}
function getSeriesModule(moduleName) {
const definition = registeredModules.get(moduleName);
if (isModuleType("series" /* Series */, definition)) {
return definition;
}
}
function setRegistryMode(registryFlag) {
registeredModes.add(registryFlag);
}
function isEnterprise() {
return registeredModes.has("enterprise" /* Enterprise */);
}
function isIntegrated() {
return registeredModes.has("integrated" /* Integrated */);
}
function isUmd() {
return registeredModes.has("umd" /* UMD */);
}
function isModuleType(moduleType, definition) {
return definition?.type === moduleType;
}
// packages/ag-charts-core/src/utils/cleanupRegistry.ts
var CleanupRegistry = class {
constructor() {
this.callbacks = /* @__PURE__ */ new Set();
}
flush() {
for (const cb of this.callbacks) {
cb();
}
this.callbacks.clear();
}
merge(registry) {
for (const cb of registry.callbacks) {
this.callbacks.add(cb);
}
}
register(...callbacks) {
for (const cb of callbacks) {
if (!cb)
continue;
this.callbacks.add(cb);
}
}
};
// packages/ag-charts-core/src/globals/moduleInstance.ts
var AbstractModuleInstance = class {
constructor() {
this.cleanup = new CleanupRegistry();
}
destroy() {
this.cleanup.flush();
}
};
// packages/ag-charts-core/src/interfaces/scaleTypes.ts
function extractDomain(value) {
return value.domain;
}
var ScaleAlignment = /* @__PURE__ */ ((ScaleAlignment2) => {
ScaleAlignment2[ScaleAlignment2["Leading"] = 0] = "Leading";
ScaleAlignment2[ScaleAlignment2["Trailing"] = 1] = "Trailing";
ScaleAlignment2[ScaleAlignment2["Interpolate"] = 2] = "Interpolate";
return ScaleAlignment2;
})(ScaleAlignment || {});
// packages/ag-charts-core/src/classes/eventEmitter.ts
var EventEmitter = class {
constructor() {
this.events = /* @__PURE__ */ new Map();
}
/**
* Registers an event listener.
* @param eventName The event name to listen for.
* @param listener The callback to be invoked on the event.
* @returns A function to unregister the listener.
*/
on(eventName, listener) {
if (!this.events.has(eventName)) {
this.events.set(eventName, /* @__PURE__ */ new Set());
}
this.events.get(eventName)?.add(listener);
return () => this.off(eventName, listener);
}
/**
* Unregisters an event listener.
* @param eventName The event name to stop listening for.
* @param listener The callback to be removed.
*/
off(eventName, listener) {
const eventListeners = this.events.get(eventName);
if (eventListeners) {
eventListeners.delete(listener);
if (eventListeners.size === 0) {
this.events.delete(eventName);
}
}
}
/**
* Emits an event to all registered listeners.
* @param eventName The name of the event to emit.
* @param event The event payload.
*/
emit(eventName, event) {
const listeners = this.events.get(eventName);
if (listeners) {
for (const callback2 of listeners) {
callback2(event);
}
}
}
/**
* Clears all listeners for a specific event or all events if no event name is provided.
* @param eventName (Optional) The name of the event to clear listeners for. If not provided, all listeners for all events are cleared.
*/
clear(eventName) {
if (eventName) {
this.events.delete(eventName);
} else {
this.events.clear();
}
}
};
// packages/ag-charts-core/src/classes/lruCache.ts
var LRUCache = class {
constructor(maxCacheSize) {
this.maxCacheSize = maxCacheSize;
this.store = /* @__PURE__ */ new Map();
if (maxCacheSize <= 0) {
throw new Error("LRUCache size must be greater than 0");
}
}
get(key) {
if (!this.store.has(key))
return;
const value = this.store.get(key);
this.store.delete(key);
this.store.set(key, value);
return value;
}
has(key) {
return this.store.has(key);
}
set(key, value) {
this.store.set(key, value);
if (this.store.size > this.maxCacheSize) {
this.store.delete(this.store.keys().next().value);
}
return value;
}
clear() {
this.store.clear();
}
};
// packages/ag-charts-core/src/utils/numbers.ts
function clamp(min, value, max) {
return Math.min(max, Math.max(min, value));
}
function inRange(value, range2, epsilon = 1e-10) {
return value >= range2[0] - epsilon && value <= range2[1] + epsilon;
}
function isNumberEqual(a, b, epsilon = 1e-10) {
return a === b || Math.abs(a - b) < epsilon;
}
function isNegative(value) {
return Math.sign(value) === -1 || Object.is(value, -0);
}
function isInteger(value) {
return value % 1 === 0;
}
function roundTo(value, decimals = 2) {
const base = 10 ** decimals;
return Math.round(value * base) / base;
}
function modulus(n, m) {
return Math.floor(n % m + (n < 0 ? Math.abs(m) : 0));
}
function countFractionDigits(value) {
if (Math.floor(value) === value) {
return 0;
}
let valueString = String(value);
let exponent = 0;
if (value < 1e-6 || value >= 1e21) {
let exponentString;
[valueString, exponentString] = valueString.split("e");
if (exponentString != null) {
exponent = Number(exponentString);
}
}
const decimalPlaces2 = valueString.split(".")[1]?.length ?? 0;
return Math.max(decimalPlaces2 - exponent, 0);
}
// packages/ag-charts-core/src/utils/typeGuards.ts
function isDefined(val) {
return val != null;
}
function isArray(value) {
return Array.isArray(value);
}
function isBoolean(value) {
return typeof value === "boolean";
}
function isDate(value) {
return value instanceof Date;
}
function isValidDate(value) {
return isDate(value) && !Number.isNaN(Number(value));
}
function isRegExp(value) {
return value instanceof RegExp;
}
function isFunction(value) {
return typeof value === "function";
}
function isObject(value) {
return typeof value === "object" && value !== null && !isArray(value);
}
function isObjectLike(value) {
return isArray(value) || isPlainObject(value);
}
function isPlainObject(value) {
return typeof value === "object" && value !== null && value.constructor?.name === "Object";
}
function isEmptyObject(value) {
if (typeof value !== "object" || value === null)
return false;
for (const _ in value) {
return false;
}
return true;
}
function isString(value) {
return typeof value === "string";
}
function isNumber(value) {
return typeof value === "number";
}
function isFiniteNumber(value) {
return Number.isFinite(value);
}
function isHtmlElement(value) {
return typeof globalThis.window !== "undefined" && value instanceof HTMLElement;
}
function isEnumKey(enumObject, enumKey) {
return isString(enumKey) && Object.keys(enumObject).includes(enumKey);
}
function isEnumValue(enumObject, enumValue) {
return Object.values(enumObject).includes(enumValue);
}
function isSymbol(value) {
return typeof value === "symbol";
}
function isColor(value) {
return isString(value) && (value === "none" || parseColor(value) != null);
}
function isKeyOf(value, container) {
return value in container;
}
// packages/ag-charts-core/src/modules/format/numberFormat.ts
var formatRegEx = /^(?:(.)?([<>=^]))?([+\-( ])?([$€£¥₣₹#])?(0)?(\d+)?(,)?(?:\.(\d+))?(~)?([%a-z])?$/i;
var surroundedRegEx = /^((?:[^#]|#[^{])*)#{([^}]+)}(.*)$/;
function isValidNumberFormat(value) {
if (!isString(value))
return false;
const match = surroundedRegEx.exec(value);
return formatRegEx.test(match ? match[2] : value);
}
function parseNumberFormat(format) {
let prefix;
let suffix;
const surrounded = surroundedRegEx.exec(format);
if (surrounded) {
[, prefix, format, suffix] = surrounded;
}
const match = formatRegEx.exec(format);
if (!match) {
logger_exports.warnOnce(`The number formatter is invalid: ${format}`);
return;
}
const [, fill, align, sign, symbol, zero, width2, comma, precision, trim, type] = match;
return {
fill,
align,
sign,
symbol,
zero,
width: Number.parseInt(width2),
comma,
precision: Number.parseInt(precision),
trim: Boolean(trim),
type,
prefix,
suffix
};
}
function createNumberFormatter(format) {
const options = typeof format === "string" ? parseNumberFormat(format) : format;
if (options == null)
return;
const { fill, align, sign = "-", symbol, zero, width: width2, comma, type, prefix = "", suffix = "", precision } = options;
let { trim } = options;
const precisionIsNaN = precision == null || Number.isNaN(precision);
let formatBody;
if (!type) {
formatBody = decimalTypes["g"];
trim = true;
} else if (type in decimalTypes && type in integerTypes) {
formatBody = precisionIsNaN ? integerTypes[type] : decimalTypes[type];
} else if (type in decimalTypes) {
formatBody = decimalTypes[type];
} else if (type in integerTypes) {
formatBody = integerTypes[type];
} else {
throw new Error(`The number formatter type is invalid: ${type}`);
}
const defaultFormatterPrecision = type ? 6 : 12;
let formatterPrecision;
if (!precisionIsNaN) {
formatterPrecision = precision;
}
let padAlign = align;
let padFill = fill;
if (zero) {
padFill ?? (padFill = "0");
padAlign ?? (padAlign = "=");
}
return (n, fractionDigits) => {
let effectivePrecision;
if (formatterPrecision != null) {
effectivePrecision = formatterPrecision;
} else if (type === "f" || type === "%") {
effectivePrecision = fractionDigits ?? defaultFormatterPrecision;
} else if (type) {
effectivePrecision = defaultFormatterPrecision;
} else {
effectivePrecision = fractionDigits ?? defaultFormatterPrecision;
}
let result = formatBody(n, effectivePrecision);
if (trim) {
result = removeTrailingZeros(result);
}
if (comma) {
result = insertSeparator(result, comma);
}
const symbolPrefix = getSymbolPrefix(symbol, type);
const symbolPrefixLength = symbolPrefix?.length ?? 0;
if (symbolPrefix) {
result = `${symbolPrefix}${result}`;
}
if (type === "s") {
result = `${result}${getSIPrefix(n)}`;
}
if (type === "%" || type === "p") {
result = `${result}%`;
}
const { value: signedResult, prefixLength: signPrefixLength } = addSign(n, result, sign);
const totalPrefixLength = signPrefixLength + symbolPrefixLength;
let output = signedResult;
if (width2 != null && !Number.isNaN(width2)) {
output = addPadding(output, width2, padFill ?? " ", padAlign, totalPrefixLength);
}
output = `${prefix}${output}${suffix}`;
return output;
};
}
var integerTypes = {
b: (n) => absFloor(n).toString(2),
c: (n) => String.fromCodePoint(n),
d: (n) => Math.round(Math.abs(n)).toFixed(0),
o: (n) => absFloor(n).toString(8),
x: (n) => absFloor(n).toString(16),
X: (n) => integerTypes.x(n).toUpperCase(),
n: (n) => integerTypes.d(n),
"%": (n) => `${absFloor(n * 100).toFixed(0)}`
};
var decimalTypes = {
e: (n, f) => Math.abs(n).toExponential(f),
E: (n, f) => decimalTypes.e(n, f).toUpperCase(),
f: (n, f) => Math.abs(n).toFixed(f),
F: (n, f) => decimalTypes.f(n, f).toUpperCase(),
g: (n, f) => {
if (n === 0) {
return "0";
}
const a = Math.abs(n);
const p = Math.floor(Math.log10(a));
if (p >= -4 && p < f) {
return a.toFixed(f - 1 - p);
}
return a.toExponential(f - 1);
},
G: (n, f) => decimalTypes.g(n, f).toUpperCase(),
n: (n, f) => decimalTypes.g(n, f),
p: (n, f) => decimalTypes.r(n * 100, f),
r: (n, f) => {
if (n === 0) {
return "0";
}
const a = Math.abs(n);
const p = Math.floor(Math.log10(a));
const q = p - (f - 1);
if (q <= 0) {
return a.toFixed(-q);
}
const x = 10 ** q;
return (Math.round(a / x) * x).toFixed();
},
s: (n, f) => {
const p = getSIPrefixPower(n);
return decimalTypes.r(n / 10 ** p, f);
},
"%": (n, f) => decimalTypes.f(n * 100, f)
};
var minSIPrefix = -24;
var maxSIPrefix = 24;
var siPrefixes = {
[minSIPrefix]: "y",
[-21]: "z",
[-18]: "a",
[-15]: "f",
[-12]: "p",
[-9]: "n",
[-6]: "\xB5",
[-3]: "m",
[0]: "",
[3]: "k",
[6]: "M",
[9]: "G",
[12]: "T",
[15]: "P",
[18]: "E",
[21]: "Z",
[maxSIPrefix]: "Y"
};
var minusSign = "\u2212";
function absFloor(n) {
return Math.floor(Math.abs(n));
}
function removeTrailingZeros(numString) {
if (!numString.endsWith("0") || !numString.includes("."))
return numString;
let endIndex = numString.length - 1;
while (endIndex > 0) {
if (numString[endIndex] == "0") {
endIndex -= 1;
} else if (numString[endIndex] == ".") {
endIndex -= 1;
break;
} else {
break;
}
}
return numString.substring(0, endIndex + 1);
}
function insertSeparator(numString, separator) {
let dotIndex = numString.indexOf(".");
if (dotIndex < 0) {
dotIndex = numString.length;
}
const integerChars = numString.substring(0, dotIndex).split("");
const fractionalPart = numString.substring(dotIndex);
for (let i = integerChars.length - 3; i > 0; i -= 3) {
integerChars.splice(i, 0, separator);
}
return `${integerChars.join("")}${fractionalPart}`;
}
function getSIPrefix(n) {
return siPrefixes[getSIPrefixPower(n)];
}
function getSIPrefixPower(n) {
return clamp(minSIPrefix, n ? Math.floor(Math.log10(Math.abs(n)) / 3) * 3 : 0, maxSIPrefix);
}
function addSign(num, numString, signType = "") {
if (signType === "(") {
if (num >= 0) {
return { value: numString, prefixLength: 0 };
}
return { value: `(${numString})`, prefixLength: 1 };
}
let signPrefix = "";
if (num < 0) {
signPrefix = minusSign;
} else if (signType === "+") {
signPrefix = "+";
} else if (signType === " ") {
signPrefix = " ";
}
return { value: `${signPrefix}${numString}`, prefixLength: signPrefix.length };
}
function addPadding(numString, width2, fill = " ", align = ">", prefixLength = 0) {
const padSize = width2 - numString.length;
if (padSize <= 0) {
return numString;
}
const padding2 = fill.repeat(padSize);
if (align === "=") {
const clampedPrefix = Math.min(Math.max(prefixLength, 0), numString.length);
const start2 = numString.slice(0, clampedPrefix);
const rest = numString.slice(clampedPrefix);
return `${start2}${padding2}${rest}`;
}
if (align === ">" || !align) {
return padding2 + numString;
} else if (align === "<") {
return `${numString}${padding2}`;
} else if (align === "^") {
const padLeft = Math.ceil(padSize / 2);
const padRight = Math.floor(padSize / 2);
return `${fill.repeat(padLeft)}${numString}${fill.repeat(padRight)}`;
}
return padding2 + numString;
}
function getSymbolPrefix(symbol, type) {
if (symbol === "#") {
switch (type) {
case "b":
return "0b";
case "o":
return "0o";