@quillsql/react 2.11.5 → 2.11.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/BarList.d.ts +1 -0
- package/dist/cjs/BarList.d.ts.map +1 -1
- package/dist/cjs/BarList.js +55 -46
- package/dist/cjs/Chart.d.ts +4 -0
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +25 -19
- package/dist/cjs/ChartBuilder.d.ts +5 -3
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +236 -196
- package/dist/cjs/ChartEditor.d.ts +3 -1
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +17 -2
- package/dist/cjs/Context.d.ts +1 -1
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +33 -3
- package/dist/cjs/Dashboard.d.ts +2 -1
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +4 -4
- package/dist/cjs/PieChart.d.ts +1 -1
- package/dist/cjs/PieChart.d.ts.map +1 -1
- package/dist/cjs/PieChart.js +95 -357
- package/dist/cjs/QuillProvider.d.ts +1 -3
- package/dist/cjs/QuillProvider.d.ts.map +1 -1
- package/dist/cjs/QuillProvider.js +2 -2
- package/dist/cjs/ReportBuilder.d.ts +11 -3
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +224 -99
- package/dist/cjs/SQLEditor.d.ts +4 -2
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +9 -6
- package/dist/cjs/components/Chart/BarChart.d.ts +2 -1
- package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/BarChart.js +9 -5
- package/dist/cjs/components/Chart/ChartError.js +1 -1
- package/dist/cjs/components/Chart/ChartSkeleton.js +2 -2
- package/dist/cjs/components/Chart/LineChart.d.ts +2 -1
- package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/LineChart.js +10 -3
- package/dist/cjs/components/Dashboard/TableComponent.d.ts +1 -1
- package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TableComponent.js +1 -1
- package/dist/cjs/components/QuillTable.js +1 -1
- package/dist/cjs/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddColumnPopover.js +2 -2
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +3 -0
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -0
- package/dist/cjs/components/ReportBuilder/AddSortPopover.js +62 -0
- package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/convert.js +3 -2
- package/dist/cjs/components/ReportBuilder/ui.d.ts +1 -0
- package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/ui.js +12 -5
- package/dist/cjs/components/ReportBuilder/util.js +2 -2
- package/dist/cjs/components/UiComponents.d.ts +12 -2
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +7 -6
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +2 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +47 -56
- package/dist/cjs/utils/aggregate.js +2 -2
- package/dist/cjs/utils/color.d.ts +25 -0
- package/dist/cjs/utils/color.d.ts.map +1 -1
- package/dist/cjs/utils/color.js +164 -1
- package/dist/esm/BarList.d.ts +1 -0
- package/dist/esm/BarList.d.ts.map +1 -1
- package/dist/esm/BarList.js +55 -46
- package/dist/esm/Chart.d.ts +4 -0
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +25 -19
- package/dist/esm/ChartBuilder.d.ts +5 -3
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +234 -195
- package/dist/esm/ChartEditor.d.ts +3 -1
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +19 -4
- package/dist/esm/Context.d.ts +1 -1
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +33 -3
- package/dist/esm/Dashboard.d.ts +2 -1
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +4 -4
- package/dist/esm/PieChart.d.ts +1 -1
- package/dist/esm/PieChart.d.ts.map +1 -1
- package/dist/esm/PieChart.js +93 -334
- package/dist/esm/QuillProvider.d.ts +1 -3
- package/dist/esm/QuillProvider.d.ts.map +1 -1
- package/dist/esm/QuillProvider.js +2 -2
- package/dist/esm/ReportBuilder.d.ts +11 -3
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +229 -104
- package/dist/esm/SQLEditor.d.ts +4 -2
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +9 -6
- package/dist/esm/components/Chart/BarChart.d.ts +2 -1
- package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/BarChart.js +9 -5
- package/dist/esm/components/Chart/ChartError.js +1 -1
- package/dist/esm/components/Chart/ChartSkeleton.js +2 -2
- package/dist/esm/components/Chart/LineChart.d.ts +2 -1
- package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/LineChart.js +10 -3
- package/dist/esm/components/Dashboard/TableComponent.d.ts +1 -1
- package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/TableComponent.js +1 -1
- package/dist/esm/components/QuillTable.js +1 -1
- package/dist/esm/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddColumnPopover.js +2 -2
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +3 -0
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -0
- package/dist/esm/components/ReportBuilder/AddSortPopover.js +57 -0
- package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/convert.js +3 -2
- package/dist/esm/components/ReportBuilder/ui.d.ts +1 -0
- package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/ui.js +11 -5
- package/dist/esm/components/ReportBuilder/util.js +2 -2
- package/dist/esm/components/UiComponents.d.ts +12 -2
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +7 -6
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +2 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +47 -56
- package/dist/esm/utils/aggregate.js +2 -2
- package/dist/esm/utils/color.d.ts +25 -0
- package/dist/esm/utils/color.d.ts.map +1 -1
- package/dist/esm/utils/color.js +160 -0
- package/package.json +1 -1
|
@@ -23,38 +23,8 @@ const QuillHover = () => {
|
|
|
23
23
|
}
|
|
24
24
|
` }));
|
|
25
25
|
};
|
|
26
|
-
export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivotColumnField, pivotValueField, setPivotValueField, pivotAggregation, setPivotAggregation, popUpTitle, setPopUpTitle, selectedTable, SelectComponent, ButtonComponent, PopoverComponent, HeaderComponent, LabelComponent, TextComponent, selectedPivotIndex, setSelectedPivotIndex, removePivot, selectPivot, showUpdatePivot, setShowUpdatePivot, data, columns, theme, isOpen, setIsOpen, dateRange, createdPivots, setCreatedPivots, recommendedPivots, setRecommendedPivots, triggerButtonText = 'Pivot', showPivotEditButton = false, showEditOnPivotClick = true, selectPivotOnEdit = false, showTrigger = true, rightAlign = false, parentRef, }) => {
|
|
26
|
+
export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivotColumnField, pivotValueField, setPivotValueField, pivotAggregation, setPivotAggregation, popUpTitle, setPopUpTitle, selectedTable, SelectComponent, ButtonComponent, PopoverComponent, HeaderComponent, LabelComponent, TextComponent, selectedPivotIndex, setSelectedPivotIndex, removePivot, selectPivot, showUpdatePivot, setShowUpdatePivot, data, columns, theme, isOpen, setIsOpen, dateRange, createdPivots, setCreatedPivots, recommendedPivots, setRecommendedPivots, triggerButtonText = 'Pivot', showPivotEditButton = false, showEditOnPivotClick = true, selectPivotOnEdit = false, showTrigger = true, rightAlign = false, parentRef, recommendPivotCount = 6, }) => {
|
|
27
27
|
const [isLoading, setIsLoading] = useState(false);
|
|
28
|
-
// for testing
|
|
29
|
-
// const [createdPivots, setCreatedPivots] = useState<Pivot[]>([
|
|
30
|
-
// {
|
|
31
|
-
// rowField: 'created_at',
|
|
32
|
-
// rowFieldType: 'date',
|
|
33
|
-
// columnField: undefined,
|
|
34
|
-
// columnFieldType: undefined,
|
|
35
|
-
// valueField: 'amount',
|
|
36
|
-
// aggregationType: 'sum',
|
|
37
|
-
// title: 'sum of amount by created_at',
|
|
38
|
-
// },
|
|
39
|
-
// {
|
|
40
|
-
// rowField: 'merchant',
|
|
41
|
-
// rowFieldType: 'varchar',
|
|
42
|
-
// columnField: 'created_at',
|
|
43
|
-
// columnFieldType: 'date',
|
|
44
|
-
// valueField: 'amount',
|
|
45
|
-
// aggregationType: 'sum',
|
|
46
|
-
// title: 'sum of amount by merchant and created_at',
|
|
47
|
-
// },
|
|
48
|
-
// {
|
|
49
|
-
// rowField: 'created_at',
|
|
50
|
-
// rowFieldType: 'date',
|
|
51
|
-
// columnField: 'merchant',
|
|
52
|
-
// columnFieldType: 'varchar',
|
|
53
|
-
// valueField: 'amount',
|
|
54
|
-
// aggregationType: 'sum',
|
|
55
|
-
// title: 'sum of amount by created_at and merchant',
|
|
56
|
-
// },
|
|
57
|
-
// ]);
|
|
58
28
|
const [pivotUpdateIndex, setPivotUpdateIndex] = useState(null);
|
|
59
29
|
const [selectedPivotType, setSelectedPivotType] = useState('recommended');
|
|
60
30
|
const [errors, setErrors] = useState([]);
|
|
@@ -176,7 +146,7 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
|
|
|
176
146
|
};
|
|
177
147
|
try {
|
|
178
148
|
const resp = await getDataFromCloud(client, 'pivotai', cloudBody);
|
|
179
|
-
const recommendedPivots = resp?.data?.pivotTables || [];
|
|
149
|
+
const recommendedPivots = resp?.data?.pivotTables.slice(0, recommendPivotCount) || [];
|
|
180
150
|
// for testing if needed
|
|
181
151
|
// const recommendedPivots = [
|
|
182
152
|
// {
|
|
@@ -242,7 +212,7 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
|
|
|
242
212
|
if (recommendedPivots.length === 0) {
|
|
243
213
|
refreshPivots();
|
|
244
214
|
}
|
|
245
|
-
}, [
|
|
215
|
+
}, []);
|
|
246
216
|
const recommendedPivotTables = useMemo(() => {
|
|
247
217
|
const pts = recommendedPivots.map((p) => {
|
|
248
218
|
const { rows, columns } = generatePivotTable(p, data, dateRange, 6);
|
|
@@ -328,16 +298,22 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
|
|
|
328
298
|
marginBottom: 5,
|
|
329
299
|
}, children: [_jsxs("div", { children: [_jsx(LabelComponent, { children: "Row Field" }), _jsx(SelectComponent, { id: "pivot-row-field", value: pivotRowField, onChange: (e) => {
|
|
330
300
|
setPivotRowField(e === '' ? undefined : e);
|
|
331
|
-
}, options:
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
301
|
+
}, options: [
|
|
302
|
+
{ label: 'Select', value: '' },
|
|
303
|
+
...columnSelectOptions.filter((option) => {
|
|
304
|
+
const format = columns.find((col) => col.field === option.value)?.format;
|
|
305
|
+
return (format === 'string' ||
|
|
306
|
+
dateFormatOptions.includes(format));
|
|
307
|
+
}),
|
|
308
|
+
], theme: theme })] }), _jsxs("div", { children: [_jsx(LabelComponent, { children: "Column Field" }), _jsx(SelectComponent, { id: "pivot-row-field", value: pivotColumnField, onChange: (e) => {
|
|
336
309
|
setPivotColumnField(e === '' ? undefined : e);
|
|
337
|
-
}, options:
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
310
|
+
}, options: [
|
|
311
|
+
{ label: 'Select', value: '' },
|
|
312
|
+
...columnSelectOptions.filter((option) => {
|
|
313
|
+
return (columns.find((col) => col.field === option.value)
|
|
314
|
+
?.format === 'string');
|
|
315
|
+
}),
|
|
316
|
+
], theme: theme })] })] }), _jsxs("div", { style: {
|
|
341
317
|
display: 'flex',
|
|
342
318
|
flexDirection: 'row',
|
|
343
319
|
gap: 20,
|
|
@@ -345,20 +321,29 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
|
|
|
345
321
|
}, children: [_jsxs("div", { children: [_jsx(LabelComponent, { children: "Value Field" }), _jsx(SelectComponent, { id: "pivot-row-field", value: pivotValueField, onChange: (e) => {
|
|
346
322
|
setPivotValueField(e === '' ? undefined : e);
|
|
347
323
|
}, options: pivotAggregation === 'count'
|
|
348
|
-
?
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
324
|
+
? [
|
|
325
|
+
{ label: 'Select', value: '' },
|
|
326
|
+
...columnSelectOptions,
|
|
327
|
+
]
|
|
328
|
+
: [
|
|
329
|
+
{ label: 'Select', value: '' },
|
|
330
|
+
...columnSelectOptions.filter((option) => {
|
|
331
|
+
return (option.value === '' ||
|
|
332
|
+
numberFormatOptions.includes(columns.find((col) => col.field === option.value)?.format));
|
|
333
|
+
}),
|
|
334
|
+
], theme: theme })] }), _jsxs("div", { children: [_jsx(LabelComponent, { children: "Aggregation Type" }), _jsx(SelectComponent, { id: "pivot-row-field", value: pivotAggregation, theme: theme, onChange: (e) => {
|
|
353
335
|
if (e !== 'count' &&
|
|
354
336
|
pivotValueField &&
|
|
355
337
|
!numberFormatOptions.includes(columns.find((col) => col.field === pivotValueField)?.format)) {
|
|
356
338
|
setPivotValueField(null);
|
|
357
339
|
}
|
|
358
340
|
setPivotAggregation(e === '' ? undefined : e);
|
|
359
|
-
}, options: [
|
|
360
|
-
|
|
361
|
-
|
|
341
|
+
}, options: [
|
|
342
|
+
{ label: 'Select', value: '' },
|
|
343
|
+
...['sum', 'average', 'count'].map((option) => {
|
|
344
|
+
return { label: option, value: option };
|
|
345
|
+
}),
|
|
346
|
+
] })] })] })] }), _jsx("div", { children: _jsx(ButtonComponent, { id: "custom-button", onClick: () => {
|
|
362
347
|
const errors = [];
|
|
363
348
|
if (!pivotRowField) {
|
|
364
349
|
errors.push('Row field cannot be empty');
|
|
@@ -386,12 +371,8 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
|
|
|
386
371
|
}
|
|
387
372
|
setErrors(errors);
|
|
388
373
|
}, label: popUpTitle }) }), _jsx("div", { children: errors.length > 0 && (_jsxs("div", { children: [_jsx("div", { style: {
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
marginTop: '12px',
|
|
392
|
-
fontWeight: '600',
|
|
393
|
-
color: theme.secondaryTextColor,
|
|
394
|
-
}, children: "Pivot Errors" }), errors.map((error, index) => (_jsx("div", { style: {
|
|
374
|
+
paddingTop: '8px',
|
|
375
|
+
} }), errors.map((error, index) => (_jsx("div", { style: {
|
|
395
376
|
borderRadius: 8,
|
|
396
377
|
backgroundColor: '#FF9494',
|
|
397
378
|
paddingLeft: '12px',
|
|
@@ -908,5 +889,15 @@ export function generatePivotTable(pivot, data, dateRange, isComparison, rowLimi
|
|
|
908
889
|
})
|
|
909
890
|
: []),
|
|
910
891
|
];
|
|
892
|
+
if (pivot.sort) {
|
|
893
|
+
pivotRows.sort((a, b) => {
|
|
894
|
+
if (pivot.sortDirection === 'ASC') {
|
|
895
|
+
return a[pivot.rowField].localeCompare(b[pivot.rowField]);
|
|
896
|
+
}
|
|
897
|
+
else {
|
|
898
|
+
return b[pivot.rowField].localeCompare(a[pivot.rowField]);
|
|
899
|
+
}
|
|
900
|
+
});
|
|
901
|
+
}
|
|
911
902
|
return { rows: pivotRows, columns };
|
|
912
903
|
}
|
|
@@ -22,12 +22,12 @@ function findTimePeriod(dateFilter) {
|
|
|
22
22
|
else if (dateFilter.initialRange === 'LAST_30_DAYS') {
|
|
23
23
|
time_span = 1000 * 60 * 60 * 24 * 30;
|
|
24
24
|
}
|
|
25
|
-
else if (dateFilter.initialRange === '
|
|
25
|
+
else if (dateFilter.initialRange === 'THIS_MONTH') {
|
|
26
26
|
const now = new Date();
|
|
27
27
|
const startOfMonth = new Date(now.getFullYear(), now.getMonth(), 1);
|
|
28
28
|
time_span = now - startOfMonth;
|
|
29
29
|
}
|
|
30
|
-
else if (dateFilter.initialRange === '
|
|
30
|
+
else if (dateFilter.initialRange === 'THIS_WEEK') {
|
|
31
31
|
const today = new Date();
|
|
32
32
|
time_span = new Date(today.setDate(today.getDate() - today.getDay()));
|
|
33
33
|
}
|
|
@@ -9,5 +9,30 @@ export type Color = (typeof colorValues)[number];
|
|
|
9
9
|
* @param index the index of this element in colors
|
|
10
10
|
*/
|
|
11
11
|
export declare function selectColor(element: any, colors: string[], index: number): string;
|
|
12
|
+
export declare function namedColorToHex(color: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Converts an RGB color value to HSL. Conversion formula
|
|
15
|
+
* adapted from http://en.wikipedia.org/wiki/HSL_color_space.
|
|
16
|
+
* Assumes r, g, and b are contained in the set [0, 255] and
|
|
17
|
+
* returns h, s, and l in the set [0, 1].
|
|
18
|
+
*
|
|
19
|
+
* @param Number r The red color value
|
|
20
|
+
* @param Number g The green color value
|
|
21
|
+
* @param Number b The blue color value
|
|
22
|
+
* @return Array The HSL representation
|
|
23
|
+
*/
|
|
24
|
+
export declare function rgbToHsl(r: any, g: any, b: any): number[];
|
|
25
|
+
/**
|
|
26
|
+
* Converts an HSL color value to RGB. Conversion formula
|
|
27
|
+
* adapted from http://en.wikipedia.org/wiki/HSL_color_space.
|
|
28
|
+
* Assumes h, s, and l are contained in the set [0, 1] and
|
|
29
|
+
* returns r, g, and b in the set [0, 255].
|
|
30
|
+
*
|
|
31
|
+
* @param Number h The hue
|
|
32
|
+
* @param Number s The saturation
|
|
33
|
+
* @param Number l The lightness
|
|
34
|
+
* @return Array The RGB representation
|
|
35
|
+
*/
|
|
36
|
+
export declare function HSLtoRGB(h: any, s: any, l: any): number[];
|
|
12
37
|
export {};
|
|
13
38
|
//# sourceMappingURL=color.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../src/utils/color.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,WAAW,mKAkBP,CAAC;AAEX,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,UAuBxE"}
|
|
1
|
+
{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../src/utils/color.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,WAAW,mKAkBP,CAAC;AAEX,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,UAuBxE;AAyDD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,UAK5C;AAwJD;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,YA4B9C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,YAuB9C"}
|
package/dist/esm/utils/color.js
CHANGED
|
@@ -98,6 +98,12 @@ function toGrayscale(rgba) {
|
|
|
98
98
|
const avg = (sum / 3).toFixed(2);
|
|
99
99
|
return `rgb(${avg}, ${avg}, ${avg})`;
|
|
100
100
|
}
|
|
101
|
+
export function namedColorToHex(color) {
|
|
102
|
+
if (Object.keys(COLOR_TO_HEX).includes(color)) {
|
|
103
|
+
return COLOR_TO_HEX[color];
|
|
104
|
+
}
|
|
105
|
+
return color;
|
|
106
|
+
}
|
|
101
107
|
/**
|
|
102
108
|
* A comprehensive map of all the CSS named-colors that modern browsers will
|
|
103
109
|
* recognize, and converts them into their hex values.
|
|
@@ -245,3 +251,157 @@ const COLOR_TO_HEX = {
|
|
|
245
251
|
yellow: '#ffff00',
|
|
246
252
|
yellowgreen: '#9acd32',
|
|
247
253
|
};
|
|
254
|
+
/**
|
|
255
|
+
* Converts an RGB color value to HSL. Conversion formula
|
|
256
|
+
* adapted from http://en.wikipedia.org/wiki/HSL_color_space.
|
|
257
|
+
* Assumes r, g, and b are contained in the set [0, 255] and
|
|
258
|
+
* returns h, s, and l in the set [0, 1].
|
|
259
|
+
*
|
|
260
|
+
* @param Number r The red color value
|
|
261
|
+
* @param Number g The green color value
|
|
262
|
+
* @param Number b The blue color value
|
|
263
|
+
* @return Array The HSL representation
|
|
264
|
+
*/
|
|
265
|
+
export function rgbToHsl(r, g, b) {
|
|
266
|
+
(r /= 255), (g /= 255), (b /= 255);
|
|
267
|
+
var max = Math.max(r, g, b), min = Math.min(r, g, b);
|
|
268
|
+
var h = (max + min) / 2;
|
|
269
|
+
var s = (max + min) / 2;
|
|
270
|
+
var l = (max + min) / 2;
|
|
271
|
+
if (max == min) {
|
|
272
|
+
h = s = 0; // achromatic
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
var d = max - min;
|
|
276
|
+
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
|
277
|
+
switch (max) {
|
|
278
|
+
case r:
|
|
279
|
+
h = (g - b) / d + (g < b ? 6 : 0);
|
|
280
|
+
break;
|
|
281
|
+
case g:
|
|
282
|
+
h = (b - r) / d + 2;
|
|
283
|
+
break;
|
|
284
|
+
case b:
|
|
285
|
+
h = (r - g) / d + 4;
|
|
286
|
+
break;
|
|
287
|
+
}
|
|
288
|
+
h /= 6;
|
|
289
|
+
}
|
|
290
|
+
return [h, s, l];
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Converts an HSL color value to RGB. Conversion formula
|
|
294
|
+
* adapted from http://en.wikipedia.org/wiki/HSL_color_space.
|
|
295
|
+
* Assumes h, s, and l are contained in the set [0, 1] and
|
|
296
|
+
* returns r, g, and b in the set [0, 255].
|
|
297
|
+
*
|
|
298
|
+
* @param Number h The hue
|
|
299
|
+
* @param Number s The saturation
|
|
300
|
+
* @param Number l The lightness
|
|
301
|
+
* @return Array The RGB representation
|
|
302
|
+
*/
|
|
303
|
+
export function HSLtoRGB(h, s, l) {
|
|
304
|
+
var r, g, b;
|
|
305
|
+
if (s == 0) {
|
|
306
|
+
r = g = b = l; // achromatic
|
|
307
|
+
}
|
|
308
|
+
else {
|
|
309
|
+
const hue2rgb = (p, q, t) => {
|
|
310
|
+
if (t < 0)
|
|
311
|
+
t += 1;
|
|
312
|
+
if (t > 1)
|
|
313
|
+
t -= 1;
|
|
314
|
+
if (t < 1 / 6)
|
|
315
|
+
return p + (q - p) * 6 * t;
|
|
316
|
+
if (t < 1 / 2)
|
|
317
|
+
return q;
|
|
318
|
+
if (t < 2 / 3)
|
|
319
|
+
return p + (q - p) * (2 / 3 - t) * 6;
|
|
320
|
+
return p;
|
|
321
|
+
};
|
|
322
|
+
var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
|
|
323
|
+
var p = 2 * l - q;
|
|
324
|
+
r = hue2rgb(p, q, h + 1 / 3);
|
|
325
|
+
g = hue2rgb(p, q, h);
|
|
326
|
+
b = hue2rgb(p, q, h - 1 / 3);
|
|
327
|
+
}
|
|
328
|
+
return [r * 255, g * 255, b * 255];
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Converts an RGB color value to HSV. Conversion formula
|
|
332
|
+
* adapted from http://en.wikipedia.org/wiki/HSV_color_space.
|
|
333
|
+
* Assumes r, g, and b are contained in the set [0, 255] and
|
|
334
|
+
* returns h, s, and v in the set [0, 1].
|
|
335
|
+
*
|
|
336
|
+
* @param Number r The red color value
|
|
337
|
+
* @param Number g The green color value
|
|
338
|
+
* @param Number b The blue color value
|
|
339
|
+
* @return Array The HSV representation
|
|
340
|
+
*/
|
|
341
|
+
function rgbToHsv(r, g, b) {
|
|
342
|
+
(r = r / 255), (g = g / 255), (b = b / 255);
|
|
343
|
+
var max = Math.max(r, g, b), min = Math.min(r, g, b);
|
|
344
|
+
var h = max;
|
|
345
|
+
var s = max;
|
|
346
|
+
var v = max;
|
|
347
|
+
var d = max - min;
|
|
348
|
+
s = max == 0 ? 0 : d / max;
|
|
349
|
+
if (max == min) {
|
|
350
|
+
h = 0; // achromatic
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
switch (max) {
|
|
354
|
+
case r:
|
|
355
|
+
h = (g - b) / d + (g < b ? 6 : 0);
|
|
356
|
+
break;
|
|
357
|
+
case g:
|
|
358
|
+
h = (b - r) / d + 2;
|
|
359
|
+
break;
|
|
360
|
+
case b:
|
|
361
|
+
h = (r - g) / d + 4;
|
|
362
|
+
break;
|
|
363
|
+
}
|
|
364
|
+
h /= 6;
|
|
365
|
+
}
|
|
366
|
+
return [h, s, v];
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Converts an HSV color value to RGB. Conversion formula
|
|
370
|
+
* adapted from http://en.wikipedia.org/wiki/HSV_color_space.
|
|
371
|
+
* Assumes h, s, and v are contained in the set [0, 1] and
|
|
372
|
+
* returns r, g, and b in the set [0, 255].
|
|
373
|
+
*
|
|
374
|
+
* @param Number h The hue
|
|
375
|
+
* @param Number s The saturation
|
|
376
|
+
* @param Number v The value
|
|
377
|
+
* @return Array The RGB representation
|
|
378
|
+
*/
|
|
379
|
+
function hsvToRgb(h, s, v) {
|
|
380
|
+
var r, g, b;
|
|
381
|
+
var i = Math.floor(h * 6);
|
|
382
|
+
var f = h * 6 - i;
|
|
383
|
+
var p = v * (1 - s);
|
|
384
|
+
var q = v * (1 - f * s);
|
|
385
|
+
var t = v * (1 - (1 - f) * s);
|
|
386
|
+
switch (i % 6) {
|
|
387
|
+
case 0:
|
|
388
|
+
(r = v), (g = t), (b = p);
|
|
389
|
+
break;
|
|
390
|
+
case 1:
|
|
391
|
+
(r = q), (g = v), (b = p);
|
|
392
|
+
break;
|
|
393
|
+
case 2:
|
|
394
|
+
(r = p), (g = v), (b = t);
|
|
395
|
+
break;
|
|
396
|
+
case 3:
|
|
397
|
+
(r = p), (g = q), (b = v);
|
|
398
|
+
break;
|
|
399
|
+
case 4:
|
|
400
|
+
(r = t), (g = p), (b = v);
|
|
401
|
+
break;
|
|
402
|
+
case 5:
|
|
403
|
+
(r = v), (g = p), (b = q);
|
|
404
|
+
break;
|
|
405
|
+
}
|
|
406
|
+
return [r * 255, g * 255, b * 255];
|
|
407
|
+
}
|