@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.
Files changed (127) hide show
  1. package/dist/cjs/BarList.d.ts +1 -0
  2. package/dist/cjs/BarList.d.ts.map +1 -1
  3. package/dist/cjs/BarList.js +55 -46
  4. package/dist/cjs/Chart.d.ts +4 -0
  5. package/dist/cjs/Chart.d.ts.map +1 -1
  6. package/dist/cjs/Chart.js +25 -19
  7. package/dist/cjs/ChartBuilder.d.ts +5 -3
  8. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  9. package/dist/cjs/ChartBuilder.js +236 -196
  10. package/dist/cjs/ChartEditor.d.ts +3 -1
  11. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  12. package/dist/cjs/ChartEditor.js +17 -2
  13. package/dist/cjs/Context.d.ts +1 -1
  14. package/dist/cjs/Context.d.ts.map +1 -1
  15. package/dist/cjs/Context.js +33 -3
  16. package/dist/cjs/Dashboard.d.ts +2 -1
  17. package/dist/cjs/Dashboard.d.ts.map +1 -1
  18. package/dist/cjs/Dashboard.js +4 -4
  19. package/dist/cjs/PieChart.d.ts +1 -1
  20. package/dist/cjs/PieChart.d.ts.map +1 -1
  21. package/dist/cjs/PieChart.js +95 -357
  22. package/dist/cjs/QuillProvider.d.ts +1 -3
  23. package/dist/cjs/QuillProvider.d.ts.map +1 -1
  24. package/dist/cjs/QuillProvider.js +2 -2
  25. package/dist/cjs/ReportBuilder.d.ts +11 -3
  26. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  27. package/dist/cjs/ReportBuilder.js +224 -99
  28. package/dist/cjs/SQLEditor.d.ts +4 -2
  29. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  30. package/dist/cjs/SQLEditor.js +9 -6
  31. package/dist/cjs/components/Chart/BarChart.d.ts +2 -1
  32. package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
  33. package/dist/cjs/components/Chart/BarChart.js +9 -5
  34. package/dist/cjs/components/Chart/ChartError.js +1 -1
  35. package/dist/cjs/components/Chart/ChartSkeleton.js +2 -2
  36. package/dist/cjs/components/Chart/LineChart.d.ts +2 -1
  37. package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
  38. package/dist/cjs/components/Chart/LineChart.js +10 -3
  39. package/dist/cjs/components/Dashboard/TableComponent.d.ts +1 -1
  40. package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
  41. package/dist/cjs/components/Dashboard/TableComponent.js +1 -1
  42. package/dist/cjs/components/QuillTable.js +1 -1
  43. package/dist/cjs/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -1
  44. package/dist/cjs/components/ReportBuilder/AddColumnPopover.js +2 -2
  45. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +3 -0
  46. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -0
  47. package/dist/cjs/components/ReportBuilder/AddSortPopover.js +62 -0
  48. package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
  49. package/dist/cjs/components/ReportBuilder/convert.js +3 -2
  50. package/dist/cjs/components/ReportBuilder/ui.d.ts +1 -0
  51. package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
  52. package/dist/cjs/components/ReportBuilder/ui.js +12 -5
  53. package/dist/cjs/components/ReportBuilder/util.js +2 -2
  54. package/dist/cjs/components/UiComponents.d.ts +12 -2
  55. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  56. package/dist/cjs/components/UiComponents.js +7 -6
  57. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +2 -1
  58. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  59. package/dist/cjs/internals/ReportBuilder/PivotModal.js +47 -56
  60. package/dist/cjs/utils/aggregate.js +2 -2
  61. package/dist/cjs/utils/color.d.ts +25 -0
  62. package/dist/cjs/utils/color.d.ts.map +1 -1
  63. package/dist/cjs/utils/color.js +164 -1
  64. package/dist/esm/BarList.d.ts +1 -0
  65. package/dist/esm/BarList.d.ts.map +1 -1
  66. package/dist/esm/BarList.js +55 -46
  67. package/dist/esm/Chart.d.ts +4 -0
  68. package/dist/esm/Chart.d.ts.map +1 -1
  69. package/dist/esm/Chart.js +25 -19
  70. package/dist/esm/ChartBuilder.d.ts +5 -3
  71. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  72. package/dist/esm/ChartBuilder.js +234 -195
  73. package/dist/esm/ChartEditor.d.ts +3 -1
  74. package/dist/esm/ChartEditor.d.ts.map +1 -1
  75. package/dist/esm/ChartEditor.js +19 -4
  76. package/dist/esm/Context.d.ts +1 -1
  77. package/dist/esm/Context.d.ts.map +1 -1
  78. package/dist/esm/Context.js +33 -3
  79. package/dist/esm/Dashboard.d.ts +2 -1
  80. package/dist/esm/Dashboard.d.ts.map +1 -1
  81. package/dist/esm/Dashboard.js +4 -4
  82. package/dist/esm/PieChart.d.ts +1 -1
  83. package/dist/esm/PieChart.d.ts.map +1 -1
  84. package/dist/esm/PieChart.js +93 -334
  85. package/dist/esm/QuillProvider.d.ts +1 -3
  86. package/dist/esm/QuillProvider.d.ts.map +1 -1
  87. package/dist/esm/QuillProvider.js +2 -2
  88. package/dist/esm/ReportBuilder.d.ts +11 -3
  89. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  90. package/dist/esm/ReportBuilder.js +229 -104
  91. package/dist/esm/SQLEditor.d.ts +4 -2
  92. package/dist/esm/SQLEditor.d.ts.map +1 -1
  93. package/dist/esm/SQLEditor.js +9 -6
  94. package/dist/esm/components/Chart/BarChart.d.ts +2 -1
  95. package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
  96. package/dist/esm/components/Chart/BarChart.js +9 -5
  97. package/dist/esm/components/Chart/ChartError.js +1 -1
  98. package/dist/esm/components/Chart/ChartSkeleton.js +2 -2
  99. package/dist/esm/components/Chart/LineChart.d.ts +2 -1
  100. package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
  101. package/dist/esm/components/Chart/LineChart.js +10 -3
  102. package/dist/esm/components/Dashboard/TableComponent.d.ts +1 -1
  103. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
  104. package/dist/esm/components/Dashboard/TableComponent.js +1 -1
  105. package/dist/esm/components/QuillTable.js +1 -1
  106. package/dist/esm/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -1
  107. package/dist/esm/components/ReportBuilder/AddColumnPopover.js +2 -2
  108. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +3 -0
  109. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -0
  110. package/dist/esm/components/ReportBuilder/AddSortPopover.js +57 -0
  111. package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
  112. package/dist/esm/components/ReportBuilder/convert.js +3 -2
  113. package/dist/esm/components/ReportBuilder/ui.d.ts +1 -0
  114. package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
  115. package/dist/esm/components/ReportBuilder/ui.js +11 -5
  116. package/dist/esm/components/ReportBuilder/util.js +2 -2
  117. package/dist/esm/components/UiComponents.d.ts +12 -2
  118. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  119. package/dist/esm/components/UiComponents.js +7 -6
  120. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +2 -1
  121. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  122. package/dist/esm/internals/ReportBuilder/PivotModal.js +47 -56
  123. package/dist/esm/utils/aggregate.js +2 -2
  124. package/dist/esm/utils/color.d.ts +25 -0
  125. package/dist/esm/utils/color.d.ts.map +1 -1
  126. package/dist/esm/utils/color.js +160 -0
  127. 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
- }, [refreshPivots]);
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: columnSelectOptions.filter((option) => {
332
- const format = columns.find((col) => col.field === option.value)?.format;
333
- return (format === 'string' ||
334
- dateFormatOptions.includes(format));
335
- }), theme: theme })] }), _jsxs("div", { children: [_jsx(LabelComponent, { children: "Column Field" }), _jsx(SelectComponent, { id: "pivot-row-field", value: pivotColumnField, onChange: (e) => {
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: columnSelectOptions.filter((option) => {
338
- return (columns.find((col) => col.field === option.value)
339
- ?.format === 'string');
340
- }), theme: theme })] })] }), _jsxs("div", { style: {
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
- ? columnSelectOptions
349
- : columnSelectOptions.filter((option) => {
350
- return (option.value === '' ||
351
- numberFormatOptions.includes(columns.find((col) => col.field === option.value)?.format));
352
- }), theme: theme })] }), _jsxs("div", { children: [_jsx(LabelComponent, { children: "Aggregation Type" }), _jsx(SelectComponent, { id: "pivot-row-field", value: pivotAggregation, theme: theme, onChange: (e) => {
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: ['sum', 'average', 'count'].map((option) => {
360
- return { label: option, value: option };
361
- }) })] })] })] }), _jsx("div", { children: _jsx(ButtonComponent, { id: "custom-button", onClick: () => {
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
- fontSize: 14,
390
- marginBottom: '6px',
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 === 'CURRENT_MONTH') {
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 === 'CURRENT_WEEK') {
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"}
@@ -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
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quillsql/react",
3
- "version": "2.11.5",
3
+ "version": "2.11.8",
4
4
  "exports": {
5
5
  ".": {
6
6
  "import": "./dist/esm/index.js",