dinocollab-core 1.0.20 → 1.0.21
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/README.md +1 -1
- package/dist/_virtual/_rollupPluginBabelHelpers.js +1 -1
- package/dist/filter-bar/base.js +1 -1
- package/dist/filter-bar/base.js.map +1 -1
- package/dist/filter-bar/create.filter-bar.js +1 -1
- package/dist/filter-bar/create.filter-bar.js.map +1 -1
- package/dist/filter-bar/create.filter-menu.js +1 -1
- package/dist/filter-bar/create.filter-menu.js.map +1 -1
- package/dist/filter-bar/create.filter-panel.js +1 -1
- package/dist/filter-bar/create.filter-panel.js.map +1 -1
- package/dist/filter-bar/create.filtered.js +1 -1
- package/dist/filter-bar/create.filtered.js.map +1 -1
- package/dist/filter-bar/types.js.map +1 -1
- package/dist/filter-bar/ui.units.js +1 -1
- package/dist/filter-bar/ui.units.js.map +1 -1
- package/dist/form/create.autocomplete.chips.js.map +1 -1
- package/dist/form/create.form-base.js +1 -1
- package/dist/form/create.form-base.js.map +1 -1
- package/dist/form/create.form-grid-layout.js +1 -1
- package/dist/form/create.form-grid-layout.js.map +1 -1
- package/dist/form/create.input-file.csv-local-parser.js.map +1 -1
- package/dist/form/create.input.js +1 -1
- package/dist/form/create.input.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/table-grid/create.table-grid.js +1 -1
- package/dist/table-grid/create.table-grid.js.map +1 -1
- package/dist/types/filter-bar/base.d.ts +10 -16
- package/dist/types/filter-bar/create.filter-bar.d.ts +3 -91
- package/dist/types/filter-bar/create.filter-menu.d.ts +6 -59
- package/dist/types/filter-bar/create.filter-panel.d.ts +7 -111
- package/dist/types/filter-bar/create.filtered.d.ts +11 -8
- package/dist/types/filter-bar/create.sort-menu.d.ts +1 -7
- package/dist/types/filter-bar/index.d.ts +0 -1
- package/dist/types/filter-bar/types.d.ts +42 -23
- package/dist/types/filter-bar/ui.units.d.ts +4 -3
- package/dist/types/form/create.autocomplete.chips.d.ts +3 -3
- package/dist/types/form/create.form-base.d.ts +15 -21
- package/dist/types/form/create.form-grid-layout.units.d.ts +6 -2
- package/dist/types/form/create.input-file.csv-local-parser.d.ts +1 -2
- package/dist/types/form/create.input.d.ts +1 -2
- package/dist/types/form/dino-form.d.ts +4 -2
- package/dist/types/form/types.d.ts +18 -7
- package/dist/types/table-grid/types.d.ts +2 -2
- package/dist/types/utils/helpers.d.ts +1 -0
- package/dist/utils/helpers.js +1 -1
- package/dist/utils/helpers.js.map +1 -1
- package/package.json +5 -2
- package/dist/filter-bar/create.sort-menu.js +0 -2
- package/dist/filter-bar/create.sort-menu.js.map +0 -1
- package/dist/types/filter-bar/demo.d.ts +0 -3
- package/dist/types/lab/create.autocomplete.simple.d.ts +0 -19
- package/dist/types/lab/create.dino-store.d.ts +0 -1
- package/dist/types/lab/grafana-dashboard/configs.d.ts +0 -4
- package/dist/types/lab/grafana-dashboard/date-time-range/absolute-time-rage.d.ts +0 -14
- package/dist/types/lab/grafana-dashboard/date-time-range/helpers.d.ts +0 -36
- package/dist/types/lab/grafana-dashboard/date-time-range/index.d.ts +0 -24
- package/dist/types/lab/grafana-dashboard/date-time-range/menu-wrap.d.ts +0 -19
- package/dist/types/lab/grafana-dashboard/date-time-range/quick-ranges.d.ts +0 -20
- package/dist/types/lab/grafana-dashboard/date-time-range/types.d.ts +0 -8
- package/dist/types/lab/grafana-dashboard/date-time-range/units.d.ts +0 -2
- package/dist/types/lab/grafana-dashboard/helper.d.ts +0 -7
- package/dist/types/lab/grafana-dashboard/hooks.d.ts +0 -10
- package/dist/types/lab/grafana-dashboard/icons.d.ts +0 -5
- package/dist/types/lab/grafana-dashboard/index.d.ts +0 -12
- package/dist/types/lab/grafana-dashboard/top-bar.d.ts +0 -19
- package/dist/types/lab/grafana-dashboard/top-bar.types.d.ts +0 -4
- package/dist/types/lab/grafana-dashboard/types.d.ts +0 -8
- package/dist/types/lab/media-player.core1.d.ts +0 -14
- package/dist/types/lab/media-player.muted.d.ts +0 -10
- package/dist/types/lab/media-player.units.d.ts +0 -36
- package/dist/types/lab/select-mul-with-api/create.select-mul-with-api.d.ts +0 -26
- package/dist/types/lab/select-mul-with-api/index.d.ts +0 -2
- package/dist/types/lab/select-mul-with-api/table-custom.d.ts +0 -43
- package/dist/types/lab/select-mul-with-api/types.d.ts +0 -21
- package/dist/types/lab/select-mul-with-api/ui.units.d.ts +0 -29
|
@@ -1,15 +1,26 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { IPartialError } from './validator';
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
export type ISetModelStateFunc<T> = (state: Pick<T, keyof T>) => void;
|
|
4
|
+
export interface IFormBaseContext<T> {
|
|
5
|
+
modelState?: Partial<T>;
|
|
6
|
+
setModelState: ISetModelStateFunc<T>;
|
|
7
|
+
messageErrors: IPartialError<T>;
|
|
8
|
+
onBlur: (keyName: keyof T) => void;
|
|
9
|
+
setError: (keyName: keyof T, message: string) => void;
|
|
10
|
+
clearErrorAll: (keyName: keyof T) => void;
|
|
11
|
+
}
|
|
12
|
+
export interface IFormBase<T> {
|
|
13
|
+
data?: Partial<T>;
|
|
14
|
+
messageErrors: IPartialError<T>;
|
|
15
|
+
onBlur: (keyName: keyof T) => void;
|
|
7
16
|
disabled?: boolean;
|
|
8
17
|
}
|
|
9
|
-
export interface IFormInputBase<
|
|
10
|
-
|
|
18
|
+
export interface IFormInputBase<T, S = any> extends Partial<IFormBase<T>> {
|
|
19
|
+
formData?: Partial<T>;
|
|
20
|
+
name?: keyof T;
|
|
11
21
|
label?: React.ReactNode;
|
|
12
22
|
placeholder?: string;
|
|
13
23
|
defaultValue?: any;
|
|
14
|
-
|
|
24
|
+
onObservedChange?: (name: keyof T, value?: any) => void;
|
|
25
|
+
slots?: S;
|
|
15
26
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ComponentType, ReactNode } from 'react';
|
|
2
2
|
import { GridProps, RegularBreakpoints } from '@mui/material';
|
|
3
3
|
import { IToolbarPannelProps } from './toolbar-pannel';
|
|
4
|
-
import {
|
|
4
|
+
import { IFilterBarParams, IFilterState } from '../filter-bar';
|
|
5
5
|
import { TableGridItemActionsConfig, ITableGridItemActionsBaseProps } from './item-actions';
|
|
6
6
|
export interface ITableGridItemProps<T = any> {
|
|
7
7
|
value: T;
|
|
@@ -34,7 +34,7 @@ export interface ITableGridInnerSlots<T> extends ITableGridSlots<T> {
|
|
|
34
34
|
export interface ITableGridParams<T> extends ITableGridFlexibleSlots<T> {
|
|
35
35
|
getSelecterId: IGetSelecterIdFunc<T>;
|
|
36
36
|
title?: ReactNode;
|
|
37
|
-
filterBarConfig?:
|
|
37
|
+
filterBarConfig?: IFilterBarParams<T>;
|
|
38
38
|
size?: RegularBreakpoints;
|
|
39
39
|
slots?: ITableGridSlots<T>;
|
|
40
40
|
}
|
|
@@ -6,6 +6,7 @@ type DeepPartial<T> = {
|
|
|
6
6
|
[P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
|
|
7
7
|
} | undefined;
|
|
8
8
|
export declare const mergeObjects: <T>(...objects: DeepPartial<T>[]) => T;
|
|
9
|
+
export declare const cleanObject: <T extends object>(obj: T) => Partial<T>;
|
|
9
10
|
export declare const encodeBase64: (input: string) => string;
|
|
10
11
|
export declare const decodeBase64: (encoded: string) => string | undefined;
|
|
11
12
|
export declare const tryParseObject: <T>(value: any, defaultValue: T) => T;
|
package/dist/utils/helpers.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{slicedToArray as r,asyncToGenerator as t,typeof as n,regeneratorRuntime as e,objectSpread2 as o,toArray as a}from"../_virtual/_rollupPluginBabelHelpers.js";import c from"dayjs";var i=function(r){return new Promise((function(t){return setTimeout(t,r)}))},u=function(){var n=t(e().mark((function t(n,o){var a,c,u;return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Promise.all([n(),i(o)]);case 2:return a=t.sent,c=r(a,1),u=c[0],t.abrupt("return",u);case 6:case"end":return t.stop()}}),t)})));return function(r,t){return n.apply(this,arguments)}}(),f=function(r,t){setTimeout((function(){window.scrollTo(o({top:0,left:0,behavior:"smooth"},r))}),t||50)},s=function(){for(var r=arguments.length,t=new Array(r),n=0;n<r;n++)t[n]=arguments[n];return t.join(" ")},l=function(r){return r&&"object"===n(r)&&!Array.isArray(r)},d=function(){for(var r=arguments.length,t=new Array(r),n=0;n<r;n++)t[n]=arguments[n];return t.reduce((function(r,t){return t?(Object.keys(t).forEach((function(n){l(r[n])&&l(t[n])?r[n]=d(r[n],t[n]):r[n]=t[n]})),r):r}),{})},v=function(t){try{return t?Object.entries(t).reduce((function(t,n){var e=r(n,2),o=e[0],a=e[1];return void 0!==a&&(t[o]=a),t}),{}):{}}catch(r){return{}}},h=function(r){try{var t=(new TextEncoder).encode(r),n="";return t.forEach((function(r){n+=String.fromCharCode(r)})),btoa(n)}catch(r){return console.error("Error encoding to base64",r),""}},p=function(r){try{for(var t=atob(r),n=new Uint8Array(t.length),e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return(new TextDecoder).decode(n)}catch(r){return void console.error("Error decoding base64",r)}},y=function(r,t){try{if(!r)throw new Error("Value is required!");return JSON.parse(r)}catch(r){return t}},m=function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];try{if(!r)return[];var n=JSON.parse(r);return Array.isArray(n)?n:[]}catch(r){return t}},g=function(r,t){try{return r?parseInt(r):t}catch(r){return t}},w=function(r){return new Promise((function(t,n){var e=new FileReader;e.onload=function(){try{var r=e.result.split(/\r?\n/).filter(Boolean);if(r.length<1)return t([]);var n=r[0].split(",").map((function(r){return r.trim()})),o=r.slice(1).map((function(r){var t=r.split(",").map((function(r){return r.trim()})),e={};return n.forEach((function(r,n){var o;e[r]=null!==(o=t[n])&&void 0!==o?o:""})),e}));t(o)}catch(r){t([])}},e.onerror=function(){n(new Error("Error reading file"))},e.readAsText(r)}))},b=function(r){return r<1024?r.toFixed(2)+" Kb":r<1048576?(r/1024).toFixed(2)+" Mb":r<1073741824?(r/1048576).toFixed(2)+" Gb":(r/1073741824).toFixed(2)+" Tb"},A=function(t){var n,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"$ ",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";try{n=parseFloat(t),isNaN(n)&&(n=0)}catch(r){n=0}var a=n.toFixed(2).split("."),c=r(a,2),i=c[0],u=c[1],f=i.replace(/\B(?=(\d{3})+(?!\d))/g," "),s=f;return"00"!==u&&(s="".concat(f,".").concat(u)),"".concat(e).concat(s).concat(o)},Y=function(r){return r.toLocaleString("en-US")},x=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";if(!r)return r;var t=Array.from(r),n=a(t),e=n[0],o=n.slice(1);return"".concat(e.toUpperCase()).concat(o.join(""))},E={style1:"DD/MM/YYYY HH:mm",style2:"MMMM D, YYYY",style3:"MM-DD-YYYY"},j=function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"style1";try{if(!r)throw new Error;return c(r).format(E[t])}catch(r){return"unknown"}};export{v as cleanObject,p as decodeBase64,h as encodeBase64,u as fetchDelay,x as formatCapitalizeFirstText,A as formatCurrency,j as formatDatetime,b as formatFileSize,Y as formatNumberWithCommas,s as mergeClasses,d as mergeObjects,i as sleep,m as tryParseArray,w as tryParseCsvFileToArray,g as tryParseIntRequired,y as tryParseObject,f as windowScrollToTop};
|
|
2
2
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sources":["../../src/utils/helpers.ts"],"sourcesContent":["import dayjs from 'dayjs'\r\n\r\nexport const sleep = (sec: number) => new Promise((res) => setTimeout(res, sec))\r\n\r\nexport const fetchDelay = async function <TModel>(action: () => Promise<TModel>, sec: number) {\r\n const [res] = await Promise.all([action(), sleep(sec)])\r\n return res\r\n}\r\n\r\nexport const windowScrollToTop = (options?: ScrollToOptions, delay?: number) => {\r\n setTimeout(() => {\r\n window.scrollTo({ top: 0, left: 0, behavior: 'smooth', ...options })\r\n }, delay || 50)\r\n}\r\n\r\nexport const mergeClasses = (...classes: string[]) => {\r\n return classes.join(' ')\r\n}\r\n\r\n/**\r\n * Simple object check.\r\n * @param item\r\n * @returns {boolean}\r\n */\r\nconst isObject = (obj: any) => {\r\n return obj && typeof obj === 'object' && !Array.isArray(obj)\r\n}\r\n\r\ntype DeepPartial<T> = { [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P] } | undefined\r\n\r\nexport const mergeObjects = <T>(...objects: DeepPartial<T>[]): T => {\r\n return objects.reduce((prev, obj) => {\r\n if (!obj) return prev\r\n Object.keys(obj).forEach((key) => {\r\n if (isObject((prev as any)[key]) && isObject((obj as any)[key])) {\r\n ;(prev as any)[key] = mergeObjects((prev as any)[key], (obj as any)[key])\r\n } else {\r\n ;(prev as any)[key] = (obj as any)[key]\r\n }\r\n })\r\n return prev\r\n }, {} as T) as any\r\n}\r\n\r\nexport const encodeBase64 = (input: string): string => {\r\n try {\r\n const utf8Bytes = new TextEncoder().encode(input)\r\n let binaryString = ''\r\n utf8Bytes.forEach((byte) => {\r\n binaryString += String.fromCharCode(byte)\r\n })\r\n return btoa(binaryString)\r\n } catch (error) {\r\n console.error('Error encoding to base64', error)\r\n return ''\r\n }\r\n}\r\n\r\nexport const decodeBase64 = (encoded: string): string | undefined => {\r\n try {\r\n const binaryString = atob(encoded)\r\n const utf8Bytes = new Uint8Array(binaryString.length)\r\n for (let i = 0; i < binaryString.length; i++) {\r\n utf8Bytes[i] = binaryString.charCodeAt(i)\r\n }\r\n return new TextDecoder().decode(utf8Bytes)\r\n } catch (error) {\r\n console.error('Error decoding base64', error)\r\n return\r\n }\r\n}\r\n\r\n//#region Try Parse\r\nexport const tryParseObject = function <T>(value: any, defaultValue: T): T {\r\n try {\r\n if (!value) {\r\n throw new Error('Value is required!')\r\n }\r\n return JSON.parse(value)\r\n } catch {\r\n // console.log(error)\r\n return defaultValue\r\n }\r\n}\r\n\r\nexport const tryParseArray = function <T>(value: any, defaultValue: T[] = []): T[] {\r\n try {\r\n if (!value) return []\r\n const parseValue = JSON.parse(value)\r\n return Array.isArray(parseValue) ? parseValue : []\r\n } catch {\r\n return defaultValue\r\n }\r\n}\r\n\r\nexport const tryParseIntRequired = function (value: any, defaultValue: number): number {\r\n try {\r\n if (!value) return defaultValue\r\n return parseInt(value)\r\n } catch {\r\n return defaultValue\r\n }\r\n}\r\n\r\nexport const tryParseCsvFileToArray = (file: File): Promise<Record<string, string>[]> => {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader()\r\n\r\n reader.onload = () => {\r\n try {\r\n const text = reader.result as string\r\n const rows = text.split(/\\r?\\n/).filter(Boolean)\r\n\r\n if (rows.length < 1) return resolve([])\r\n\r\n const headers = rows[0].split(',').map((h) => h.trim())\r\n\r\n const data = rows.slice(1).map((row) => {\r\n const values = row.split(',').map((v) => v.trim())\r\n const item: Record<string, string> = {}\r\n\r\n headers.forEach((header, index) => {\r\n item[header] = values[index] ?? ''\r\n })\r\n\r\n return item\r\n })\r\n\r\n resolve(data)\r\n } catch (error) {\r\n resolve([])\r\n }\r\n }\r\n\r\n reader.onerror = () => {\r\n reject(new Error('Error reading file'))\r\n }\r\n\r\n reader.readAsText(file)\r\n })\r\n}\r\n//#endregion\r\n\r\n//#region Format\r\nexport const formatFileSize = (sizeInKb: number) => {\r\n if (sizeInKb < 1024) {\r\n return sizeInKb.toFixed(2) + ' Kb'\r\n } else if (sizeInKb < 1024 * 1024) {\r\n return (sizeInKb / 1024).toFixed(2) + ' Mb'\r\n } else if (sizeInKb < 1024 * 1024 * 1024) {\r\n return (sizeInKb / (1024 * 1024)).toFixed(2) + ' Gb'\r\n } else {\r\n return (sizeInKb / (1024 * 1024 * 1024)).toFixed(2) + ' Tb'\r\n }\r\n}\r\n\r\nexport const formatCurrency = (value?: any, prefix = '$ ', suffix = ''): string => {\r\n let parsedValue\r\n try {\r\n parsedValue = parseFloat(value)\r\n if (isNaN(parsedValue)) parsedValue = 0\r\n } catch (e) {\r\n parsedValue = 0\r\n }\r\n const roundedValue = parsedValue.toFixed(2)\r\n const [integerPart, decimalPart] = roundedValue.split('.')\r\n const formattedIntegerPart = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ')\r\n\r\n let formattedValue = formattedIntegerPart\r\n if (decimalPart !== '00') {\r\n formattedValue = `${formattedIntegerPart}.${decimalPart}`\r\n }\r\n return `${prefix}${formattedValue}${suffix}`\r\n}\r\n\r\nexport const formatNumberWithCommas = (number: number): string => {\r\n return number.toLocaleString('en-US')\r\n}\r\n\r\nexport const formatCapitalizeFirstText = (value: string = '') => {\r\n if (!value) return value\r\n const [first, ...data] = Array.from(value)\r\n return `${first.toUpperCase()}${data.join('')}`\r\n}\r\n\r\nconst formatDatetimeStyle = {\r\n style1: 'DD/MM/YYYY HH:mm',\r\n style2: 'MMMM D, YYYY',\r\n style3: 'MM-DD-YYYY'\r\n}\r\n\r\n/**\r\n * Formats a datetime string using one of the predefined styles.\r\n *\r\n * Available format styles:\r\n * - style1: DD/MM/YYYY HH:mm → e.g., '25/04/2025 14:30'\r\n * - style2: 'MMMM D, YYYY' → e.g., 'April 25, 2025'\r\n * - style2: 'MM-DD-YYYY' → e.g., '04-25-2025'\r\n * @param value - A datetime string (ISO format or any format parsable by dayjs).\r\n * @param format - Format style key: 'style1' or 'style2'. Defaults to 'style1'.\r\n * @returns A formatted datetime string, or 'unknown' if the input is invalid or unparsable.\r\n */\r\nexport const formatDatetime = (value: string, format: keyof typeof formatDatetimeStyle = 'style1'): string => {\r\n try {\r\n if (!value) throw new Error()\r\n return dayjs(value).format(formatDatetimeStyle[format])\r\n } catch (error) {\r\n return 'unknown'\r\n }\r\n}\r\n//#endregion\r\n"],"names":["sleep","sec","Promise","res","setTimeout","fetchDelay","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","action","_yield$Promise$all","_yield$Promise$all2","wrap","_context","prev","next","all","sent","_slicedToArray","abrupt","stop","_x","_x2","apply","this","arguments","windowScrollToTop","options","delay","window","scrollTo","_objectSpread","top","left","behavior","mergeClasses","_len","length","classes","Array","_key","join","isObject","obj","_typeof","isArray","mergeObjects","_len2","objects","_key2","reduce","Object","keys","forEach","key","encodeBase64","input","utf8Bytes","TextEncoder","encode","binaryString","byte","String","fromCharCode","btoa","error","console","decodeBase64","encoded","atob","Uint8Array","i","charCodeAt","TextDecoder","decode","tryParseObject","value","defaultValue","Error","JSON","parse","_unused","tryParseArray","parseValue","_unused2","tryParseIntRequired","parseInt","_unused3","tryParseCsvFileToArray","file","resolve","reject","reader","FileReader","onload","rows","result","split","filter","Boolean","headers","map","h","trim","data","slice","row","values","v","item","header","index","_values$index","onerror","readAsText","formatFileSize","sizeInKb","toFixed","formatCurrency","parsedValue","prefix","undefined","suffix","parseFloat","isNaN","e","_roundedValue$split","_roundedValue$split2","integerPart","decimalPart","formattedIntegerPart","replace","formattedValue","concat","formatNumberWithCommas","number","toLocaleString","formatCapitalizeFirstText","_Array$from","from","_Array$from2","_toArray","first","toUpperCase","formatDatetimeStyle","style1","style2","style3","formatDatetime","format","dayjs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../src/utils/helpers.ts"],"sourcesContent":["import dayjs from 'dayjs'\r\n\r\nexport const sleep = (sec: number) => new Promise((res) => setTimeout(res, sec))\r\n\r\nexport const fetchDelay = async function <TModel>(action: () => Promise<TModel>, sec: number) {\r\n const [res] = await Promise.all([action(), sleep(sec)])\r\n return res\r\n}\r\n\r\nexport const windowScrollToTop = (options?: ScrollToOptions, delay?: number) => {\r\n setTimeout(() => {\r\n window.scrollTo({ top: 0, left: 0, behavior: 'smooth', ...options })\r\n }, delay || 50)\r\n}\r\n\r\nexport const mergeClasses = (...classes: string[]) => {\r\n return classes.join(' ')\r\n}\r\n\r\n/**\r\n * Simple object check.\r\n * @param item\r\n * @returns {boolean}\r\n */\r\nconst isObject = (obj: any) => {\r\n return obj && typeof obj === 'object' && !Array.isArray(obj)\r\n}\r\n\r\ntype DeepPartial<T> = { [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P] } | undefined\r\n\r\nexport const mergeObjects = <T>(...objects: DeepPartial<T>[]): T => {\r\n return objects.reduce((prev, obj) => {\r\n if (!obj) return prev\r\n Object.keys(obj).forEach((key) => {\r\n if (isObject((prev as any)[key]) && isObject((obj as any)[key])) {\r\n ;(prev as any)[key] = mergeObjects((prev as any)[key], (obj as any)[key])\r\n } else {\r\n ;(prev as any)[key] = (obj as any)[key]\r\n }\r\n })\r\n return prev\r\n }, {} as T) as any\r\n}\r\n\r\nexport const cleanObject = <T extends object>(obj: T): Partial<T> => {\r\n try {\r\n if (!obj) return {}\r\n return Object.entries(obj).reduce((acc, [key, value]) => {\r\n if (value !== undefined) {\r\n ;(acc as any)[key] = value\r\n }\r\n return acc\r\n }, {} as Partial<T>)\r\n } catch (error) {\r\n return {}\r\n }\r\n}\r\n\r\nexport const encodeBase64 = (input: string): string => {\r\n try {\r\n const utf8Bytes = new TextEncoder().encode(input)\r\n let binaryString = ''\r\n utf8Bytes.forEach((byte) => {\r\n binaryString += String.fromCharCode(byte)\r\n })\r\n return btoa(binaryString)\r\n } catch (error) {\r\n console.error('Error encoding to base64', error)\r\n return ''\r\n }\r\n}\r\n\r\nexport const decodeBase64 = (encoded: string): string | undefined => {\r\n try {\r\n const binaryString = atob(encoded)\r\n const utf8Bytes = new Uint8Array(binaryString.length)\r\n for (let i = 0; i < binaryString.length; i++) {\r\n utf8Bytes[i] = binaryString.charCodeAt(i)\r\n }\r\n return new TextDecoder().decode(utf8Bytes)\r\n } catch (error) {\r\n console.error('Error decoding base64', error)\r\n return\r\n }\r\n}\r\n\r\n//#region Try Parse\r\nexport const tryParseObject = function <T>(value: any, defaultValue: T): T {\r\n try {\r\n if (!value) {\r\n throw new Error('Value is required!')\r\n }\r\n return JSON.parse(value)\r\n } catch {\r\n // console.log(error)\r\n return defaultValue\r\n }\r\n}\r\n\r\nexport const tryParseArray = function <T>(value: any, defaultValue: T[] = []): T[] {\r\n try {\r\n if (!value) return []\r\n const parseValue = JSON.parse(value)\r\n return Array.isArray(parseValue) ? parseValue : []\r\n } catch {\r\n return defaultValue\r\n }\r\n}\r\n\r\nexport const tryParseIntRequired = function (value: any, defaultValue: number): number {\r\n try {\r\n if (!value) return defaultValue\r\n return parseInt(value)\r\n } catch {\r\n return defaultValue\r\n }\r\n}\r\n\r\nexport const tryParseCsvFileToArray = (file: File): Promise<Record<string, string>[]> => {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader()\r\n\r\n reader.onload = () => {\r\n try {\r\n const text = reader.result as string\r\n const rows = text.split(/\\r?\\n/).filter(Boolean)\r\n\r\n if (rows.length < 1) return resolve([])\r\n\r\n const headers = rows[0].split(',').map((h) => h.trim())\r\n\r\n const data = rows.slice(1).map((row) => {\r\n const values = row.split(',').map((v) => v.trim())\r\n const item: Record<string, string> = {}\r\n\r\n headers.forEach((header, index) => {\r\n item[header] = values[index] ?? ''\r\n })\r\n\r\n return item\r\n })\r\n\r\n resolve(data)\r\n } catch (error) {\r\n resolve([])\r\n }\r\n }\r\n\r\n reader.onerror = () => {\r\n reject(new Error('Error reading file'))\r\n }\r\n\r\n reader.readAsText(file)\r\n })\r\n}\r\n//#endregion\r\n\r\n//#region Format\r\nexport const formatFileSize = (sizeInKb: number) => {\r\n if (sizeInKb < 1024) {\r\n return sizeInKb.toFixed(2) + ' Kb'\r\n } else if (sizeInKb < 1024 * 1024) {\r\n return (sizeInKb / 1024).toFixed(2) + ' Mb'\r\n } else if (sizeInKb < 1024 * 1024 * 1024) {\r\n return (sizeInKb / (1024 * 1024)).toFixed(2) + ' Gb'\r\n } else {\r\n return (sizeInKb / (1024 * 1024 * 1024)).toFixed(2) + ' Tb'\r\n }\r\n}\r\n\r\nexport const formatCurrency = (value?: any, prefix = '$ ', suffix = ''): string => {\r\n let parsedValue\r\n try {\r\n parsedValue = parseFloat(value)\r\n if (isNaN(parsedValue)) parsedValue = 0\r\n } catch (e) {\r\n parsedValue = 0\r\n }\r\n const roundedValue = parsedValue.toFixed(2)\r\n const [integerPart, decimalPart] = roundedValue.split('.')\r\n const formattedIntegerPart = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ')\r\n\r\n let formattedValue = formattedIntegerPart\r\n if (decimalPart !== '00') {\r\n formattedValue = `${formattedIntegerPart}.${decimalPart}`\r\n }\r\n return `${prefix}${formattedValue}${suffix}`\r\n}\r\n\r\nexport const formatNumberWithCommas = (number: number): string => {\r\n return number.toLocaleString('en-US')\r\n}\r\n\r\nexport const formatCapitalizeFirstText = (value: string = '') => {\r\n if (!value) return value\r\n const [first, ...data] = Array.from(value)\r\n return `${first.toUpperCase()}${data.join('')}`\r\n}\r\n\r\nconst formatDatetimeStyle = {\r\n style1: 'DD/MM/YYYY HH:mm',\r\n style2: 'MMMM D, YYYY',\r\n style3: 'MM-DD-YYYY'\r\n}\r\n\r\n/**\r\n * Formats a datetime string using one of the predefined styles.\r\n *\r\n * Available format styles:\r\n * - style1: DD/MM/YYYY HH:mm → e.g., '25/04/2025 14:30'\r\n * - style2: 'MMMM D, YYYY' → e.g., 'April 25, 2025'\r\n * - style2: 'MM-DD-YYYY' → e.g., '04-25-2025'\r\n * @param value - A datetime string (ISO format or any format parsable by dayjs).\r\n * @param format - Format style key: 'style1' or 'style2'. Defaults to 'style1'.\r\n * @returns A formatted datetime string, or 'unknown' if the input is invalid or unparsable.\r\n */\r\nexport const formatDatetime = (value: string, format: keyof typeof formatDatetimeStyle = 'style1'): string => {\r\n try {\r\n if (!value) throw new Error()\r\n return dayjs(value).format(formatDatetimeStyle[format])\r\n } catch (error) {\r\n return 'unknown'\r\n }\r\n}\r\n//#endregion\r\n"],"names":["sleep","sec","Promise","res","setTimeout","fetchDelay","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","action","_yield$Promise$all","_yield$Promise$all2","wrap","_context","prev","next","all","sent","_slicedToArray","abrupt","stop","_x","_x2","apply","this","arguments","windowScrollToTop","options","delay","window","scrollTo","_objectSpread","top","left","behavior","mergeClasses","_len","length","classes","Array","_key","join","isObject","obj","_typeof","isArray","mergeObjects","_len2","objects","_key2","reduce","Object","keys","forEach","key","cleanObject","entries","acc","_ref2","_ref3","value","undefined","error","encodeBase64","input","utf8Bytes","TextEncoder","encode","binaryString","byte","String","fromCharCode","btoa","console","decodeBase64","encoded","atob","Uint8Array","i","charCodeAt","TextDecoder","decode","tryParseObject","defaultValue","Error","JSON","parse","_unused","tryParseArray","parseValue","_unused2","tryParseIntRequired","parseInt","_unused3","tryParseCsvFileToArray","file","resolve","reject","reader","FileReader","onload","rows","result","split","filter","Boolean","headers","map","h","trim","data","slice","row","values","v","item","header","index","_values$index","onerror","readAsText","formatFileSize","sizeInKb","toFixed","formatCurrency","parsedValue","prefix","suffix","parseFloat","isNaN","e","_roundedValue$split","_roundedValue$split2","integerPart","decimalPart","formattedIntegerPart","replace","formattedValue","concat","formatNumberWithCommas","number","toLocaleString","formatCapitalizeFirstText","_Array$from","from","_Array$from2","_toArray","first","toUpperCase","formatDatetimeStyle","style1","style2","style3","formatDatetime","format","dayjs"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dinocollab-core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.21",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -15,12 +15,15 @@
|
|
|
15
15
|
"dist"
|
|
16
16
|
],
|
|
17
17
|
"scripts": {
|
|
18
|
-
"build": "npx rimraf dist && rollup -c"
|
|
18
|
+
"build": "npx rimraf dist && rollup -c",
|
|
19
|
+
"build:watch": "rollup -c -w"
|
|
19
20
|
},
|
|
20
21
|
"keywords": [],
|
|
21
22
|
"author": "",
|
|
22
23
|
"license": "ISC",
|
|
23
24
|
"peerDependencies": {
|
|
25
|
+
"@emotion/react": "11.14.0",
|
|
26
|
+
"@emotion/styled": "11.14.0",
|
|
24
27
|
"@mui/icons-material": "5.17.1",
|
|
25
28
|
"@mui/material": "5.17.1",
|
|
26
29
|
"@mui/x-data-grid": "6.20.4",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{inherits as r,createClass as e,classCallCheck as i,callSuper as n}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as l,jsx as t}from"react/jsx-runtime";import{List as a,ListItem as c,ListItemButton as s,ListItemText as d}from"@mui/material";import h from"./base.js";function m(m){var u=function(){function m(){return i(this,m),n(this,m,arguments)}return r(m,h),e(m,[{key:"render",value:function(){return l(a,{disablePadding:!0,children:[t(c,{children:t(s,{children:t(d,{children:"Item 1"})})}),t(c,{children:t(s,{children:"Item 2"})}),t(c,{children:t(s,{children:"Item 3"})}),t(c,{children:t(s,{children:"Item 4"})}),t(c,{children:t(s,{children:"Item 5"})})]})}}])}();return u}export{m as default};
|
|
2
|
-
//# sourceMappingURL=create.sort-menu.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create.sort-menu.js","sources":["../../src/filter-bar/create.sort-menu.tsx"],"sourcesContent":["import { List, ListItem, ListItemButton, ListItemText } from '@mui/material'\r\nimport FilterBarBase from './base'\r\nimport { IFilterPanelParams, IFilterPannelSubmitFunc } from './types'\r\n\r\ninterface IProps<T> {\r\n onSubmit?: IFilterPannelSubmitFunc<T>\r\n}\r\n\r\ninterface IState<T> {}\r\n\r\nfunction CreateFilterSort<T>(params: IFilterPanelParams<T>): React.ComponentType<IProps<T>> {\r\n class FilterSort extends FilterBarBase<IProps<T>, IState<T>, T> {\r\n render() {\r\n // const sortFields = this.getSortFields(params.fields)\r\n // const keys = Object.keys(sortFields) as (keyof FilterFields<T>)[]\r\n return (\r\n <List disablePadding>\r\n <ListItem>\r\n <ListItemButton>\r\n <ListItemText>Item 1</ListItemText>\r\n </ListItemButton>\r\n </ListItem>\r\n <ListItem>\r\n <ListItemButton>Item 2</ListItemButton>\r\n </ListItem>\r\n <ListItem>\r\n <ListItemButton>Item 3</ListItemButton>\r\n </ListItem>\r\n <ListItem>\r\n <ListItemButton>Item 4</ListItemButton>\r\n </ListItem>\r\n <ListItem>\r\n <ListItemButton>Item 5</ListItemButton>\r\n </ListItem>\r\n </List>\r\n )\r\n }\r\n }\r\n\r\n return FilterSort\r\n}\r\n\r\nexport default CreateFilterSort\r\n"],"names":["CreateFilterSort","params","FilterSort","_classCallCheck","_callSuper","this","arguments","_inherits","FilterBarBase","_createClass","key","value","_jsxs","List","disablePadding","children","_jsx","ListItem","ListItemButton","ListItemText"],"mappings":"4RAUA,SAASA,EAAoBC,GAA6B,IAClDC,aAAW,SAAAA,IAAA,OAAAC,OAAAD,GAAAE,EAAAC,KAAAH,EAAAI,UAAA,CAAA,OAAAC,EAAAL,EAAQM,GAARC,EAAAP,EAAA,CAAA,CAAAQ,IAAA,SAAAC,MACf,WAGE,OACEC,EAACC,EAAI,CAACC,gBACJ,EAAAC,SAAA,CAAAC,EAACC,EAAQ,CAAAF,SACPC,EAACE,YACCF,EAACG,EAAkC,CAAAJ,SAAA,eAGvCC,EAACC,EAAQ,CAAAF,SACPC,EAACE,EAAsC,CAAAH,SAAA,aAEzCC,EAACC,EACC,CAAAF,SAAAC,EAACE,EAAc,CAAAH,SAAA,aAEjBC,EAACC,EAAQ,CAAAF,SACPC,EAACE,yBAEHF,EAACC,EACC,CAAAF,SAAAC,EAACE,EAAsC,CAAAH,SAAA,eAI/C,IAAC,IAGH,OAAOb,CACT"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { ComponentType } from 'react';
|
|
2
|
-
import { AutocompleteProps } from '@mui/material';
|
|
3
|
-
import { IFormInputBase } from '../form';
|
|
4
|
-
export interface IAutocompleteSimpleModel<O = any> {
|
|
5
|
-
value: string;
|
|
6
|
-
label?: string;
|
|
7
|
-
other?: O;
|
|
8
|
-
}
|
|
9
|
-
export type IOptionsGetter<T, O = any> = (value: any, model: T) => IAutocompleteSimpleModel<O>;
|
|
10
|
-
export interface IAutocompleteSimpleSlots<O> {
|
|
11
|
-
options?: IAutocompleteSimpleModel<O>[];
|
|
12
|
-
autocompleteProps?: AutocompleteProps<any, any, any, any>;
|
|
13
|
-
}
|
|
14
|
-
export interface IAutocompleteSimpleProps<T, O> extends IFormInputBase<T>, IAutocompleteSimpleSlots<O> {
|
|
15
|
-
}
|
|
16
|
-
export interface IAutocompleteSimpleState {
|
|
17
|
-
}
|
|
18
|
-
declare function CreateAutocompleteSimple<T, O = any>(params: IAutocompleteSimpleSlots<O>): ComponentType<IAutocompleteSimpleProps<T, O>>;
|
|
19
|
-
export default CreateAutocompleteSimple;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import React, { Component } from 'react';
|
|
2
|
-
import { IQuickRangeConfig } from './types';
|
|
3
|
-
interface IProps {
|
|
4
|
-
data?: IQuickRangeConfig;
|
|
5
|
-
onChangeRange?: (value: IQuickRangeConfig) => void;
|
|
6
|
-
}
|
|
7
|
-
export default class AbsoluteTimeRage extends Component<IProps> {
|
|
8
|
-
render(): import("react/jsx-runtime").JSX.Element;
|
|
9
|
-
date1Ref: React.RefObject<HTMLInputElement>;
|
|
10
|
-
date2Ref: React.RefObject<HTMLInputElement>;
|
|
11
|
-
dateTimeRangePickerRanges(): JSX.Element;
|
|
12
|
-
handleApply: (value: Partial<IQuickRangeConfig>) => Promise<void>;
|
|
13
|
-
}
|
|
14
|
-
export {};
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import dayjs from 'dayjs';
|
|
2
|
-
import { IQuickRangeConfig, IRange } from './types';
|
|
3
|
-
type TDateTimeKetType = /** 'minute' | 'hour' | */ 'day' | 'month' | 'year';
|
|
4
|
-
export declare const MapDateTimeKey: (count: number, type?: TDateTimeKetType) => string | undefined;
|
|
5
|
-
declare class DTRHelperBase {
|
|
6
|
-
formatString: string;
|
|
7
|
-
/**
|
|
8
|
-
* getTitle generates a formatted date range string based on the input dates.
|
|
9
|
-
* @param from - Start date as a string in milliseconds.
|
|
10
|
-
* @param to - End date as a string in milliseconds.
|
|
11
|
-
* @param quickRanges - quickRanges as a ```QuickRangeConfig[]```.
|
|
12
|
-
* @returns Formatted date range or quick range title or fallback string for invalid/undefined values.
|
|
13
|
-
*/
|
|
14
|
-
getTitle: (from?: string, to?: string, quickRanges?: IQuickRangeConfig[]) => string;
|
|
15
|
-
/**
|
|
16
|
-
* getTime converts a formatted date string into a timestamp in milliseconds.
|
|
17
|
-
* Returns the timestamp as a string or NaN if the date is invalid.
|
|
18
|
-
* @param value - Date string in the format 'MM/DD/YYYY'.
|
|
19
|
-
* @returns Timestamp in milliseconds as a string.
|
|
20
|
-
*/
|
|
21
|
-
getTime: (value: string, options?: ((d: dayjs.Dayjs) => dayjs.Dayjs) | undefined) => string;
|
|
22
|
-
/**
|
|
23
|
-
* parseDayJS parses a date in milliseconds into a dayjs object.
|
|
24
|
-
* Returns undefined if the date is invalid or if parsing fails.
|
|
25
|
-
* @param value - String representing a date in milliseconds or other formats.
|
|
26
|
-
* @returns A valid dayjs object or undefined if invalid.
|
|
27
|
-
*/
|
|
28
|
-
parseDayJS: (value?: string) => dayjs.Dayjs | undefined;
|
|
29
|
-
dayRange: (range?: number) => Required<IRange>;
|
|
30
|
-
monthRange: (range?: number) => Required<IRange>;
|
|
31
|
-
monthString: (range?: number) => string;
|
|
32
|
-
yearRange: (range?: number) => Required<IRange>;
|
|
33
|
-
yearString: (range?: number) => string;
|
|
34
|
-
}
|
|
35
|
-
export declare const DTRHelper: DTRHelperBase;
|
|
36
|
-
export {};
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Component } from 'react';
|
|
2
|
-
import { IQuickRangeConfig } from './types';
|
|
3
|
-
import { IMenuWrap } from './menu-wrap';
|
|
4
|
-
interface IProps {
|
|
5
|
-
data: IQuickRangeConfig[];
|
|
6
|
-
defaultSelected?: IQuickRangeConfig;
|
|
7
|
-
onChange?: (value: IQuickRangeConfig) => void;
|
|
8
|
-
}
|
|
9
|
-
interface IState {
|
|
10
|
-
selected?: IQuickRangeConfig;
|
|
11
|
-
}
|
|
12
|
-
export default class DateTimeRange extends Component<IProps, IState> {
|
|
13
|
-
configs: IQuickRangeConfig[];
|
|
14
|
-
constructor(props: IProps);
|
|
15
|
-
refMenuWrap: IMenuWrap | null;
|
|
16
|
-
render(): import("react/jsx-runtime").JSX.Element;
|
|
17
|
-
handleSelectItem: (item: IQuickRangeConfig) => void;
|
|
18
|
-
getTitle: () => {
|
|
19
|
-
text: string;
|
|
20
|
-
sub: string;
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
export * from './types';
|
|
24
|
-
export * from './helpers';
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import React, { Component, PropsWithChildren } from 'react';
|
|
2
|
-
interface IProps {
|
|
3
|
-
title?: string;
|
|
4
|
-
subTitle?: string;
|
|
5
|
-
}
|
|
6
|
-
interface IState {
|
|
7
|
-
anchorEl: null | HTMLElement;
|
|
8
|
-
}
|
|
9
|
-
export interface IMenuWrap {
|
|
10
|
-
close: () => void;
|
|
11
|
-
}
|
|
12
|
-
export default class MenuWrap extends Component<PropsWithChildren<IProps>, IState> implements IMenuWrap {
|
|
13
|
-
constructor(props: IProps);
|
|
14
|
-
render(): import("react/jsx-runtime").JSX.Element;
|
|
15
|
-
renderTooltip: (child: JSX.Element) => import("react/jsx-runtime").JSX.Element;
|
|
16
|
-
onOpen: (event: React.MouseEvent<HTMLElement>) => void;
|
|
17
|
-
close: () => void;
|
|
18
|
-
}
|
|
19
|
-
export {};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import React, { Component } from 'react';
|
|
2
|
-
import { IQuickRangeConfig } from './types';
|
|
3
|
-
interface IProps {
|
|
4
|
-
selectedValue?: IQuickRangeConfig;
|
|
5
|
-
data: IQuickRangeConfig[];
|
|
6
|
-
onSelect: (item: IQuickRangeConfig) => void;
|
|
7
|
-
}
|
|
8
|
-
interface IState {
|
|
9
|
-
searchKey: string;
|
|
10
|
-
}
|
|
11
|
-
export default class QuickRanges extends Component<IProps, IState> {
|
|
12
|
-
constructor(props: IProps);
|
|
13
|
-
render: () => import("react/jsx-runtime").JSX.Element;
|
|
14
|
-
renderQuickRanges: (items: IQuickRangeConfig[]) => import("react/jsx-runtime").JSX.Element;
|
|
15
|
-
renderQuickRangeCustom: (items: IQuickRangeConfig[], selected?: IQuickRangeConfig) => import("react/jsx-runtime").JSX.Element;
|
|
16
|
-
handleChangeSearch: React.ChangeEventHandler<HTMLInputElement | HTMLTextAreaElement>;
|
|
17
|
-
getClassNameItem: (item: IQuickRangeConfig) => "" | "activated";
|
|
18
|
-
getData: () => IQuickRangeConfig[];
|
|
19
|
-
}
|
|
20
|
-
export {};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { ITopBarInfo } from './top-bar.types';
|
|
2
|
-
import { IGrafanaDashBoardOptions } from './types';
|
|
3
|
-
interface IOptions extends ITopBarInfo, Omit<IGrafanaDashBoardOptions, 'from' | 'to'> {
|
|
4
|
-
}
|
|
5
|
-
export declare const TopBarInfoToQueryParam: (urlBase: string, options?: IOptions) => string;
|
|
6
|
-
export declare const GetTopBarInfoQueryParam: () => IGrafanaDashBoardOptions;
|
|
7
|
-
export {};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { ITopBarInfo } from './top-bar.types';
|
|
3
|
-
import { IQuickRangeConfig } from './date-time-range';
|
|
4
|
-
declare const GrafanaDashboardHooks: {
|
|
5
|
-
useQueryParam: (data: ITopBarInfo, activated?: boolean) => void;
|
|
6
|
-
useLoading: () => [boolean, () => void, () => void];
|
|
7
|
-
useTopBarInfo: () => [ITopBarInfo, (value?: IQuickRangeConfig, callback?: () => void) => void];
|
|
8
|
-
useCustomScrollBar: (iframeRef: React.RefObject<HTMLIFrameElement>) => void;
|
|
9
|
-
};
|
|
10
|
-
export default GrafanaDashboardHooks;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
2
|
-
import { IGrafanaDashBoardOptions } from './types';
|
|
3
|
-
interface IGrafanaDashboardProps {
|
|
4
|
-
url: string;
|
|
5
|
-
title?: string;
|
|
6
|
-
options?: IGrafanaDashBoardOptions;
|
|
7
|
-
topBar?: boolean;
|
|
8
|
-
queryParam?: boolean;
|
|
9
|
-
onLoadComplete?: () => void;
|
|
10
|
-
}
|
|
11
|
-
export declare const GrafanaDashboard: FC<IGrafanaDashboardProps>;
|
|
12
|
-
export {};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Component } from 'react';
|
|
2
|
-
import { IQuickRangeConfig } from './date-time-range';
|
|
3
|
-
export interface ITopBar {
|
|
4
|
-
onRefresh?: () => void;
|
|
5
|
-
onDateTimeRangeChange?: (value?: IQuickRangeConfig) => void;
|
|
6
|
-
}
|
|
7
|
-
interface IProps extends ITopBar {
|
|
8
|
-
dateTimeRanges: {
|
|
9
|
-
data: IQuickRangeConfig[];
|
|
10
|
-
defaultValue?: IQuickRangeConfig;
|
|
11
|
-
};
|
|
12
|
-
after?: JSX.Element;
|
|
13
|
-
before?: JSX.Element;
|
|
14
|
-
}
|
|
15
|
-
export default class TopBar extends Component<IProps> {
|
|
16
|
-
render(): import("react/jsx-runtime").JSX.Element;
|
|
17
|
-
}
|
|
18
|
-
export declare const TopBarheight = 43;
|
|
19
|
-
export {};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { SvgIconOwnProps } from '@mui/material';
|
|
3
|
-
export interface MediaPlayerCore1Slots {
|
|
4
|
-
autoPlay?: boolean;
|
|
5
|
-
muted?: boolean;
|
|
6
|
-
iconPlayProps?: SvgIconOwnProps;
|
|
7
|
-
}
|
|
8
|
-
interface IProps {
|
|
9
|
-
src: string;
|
|
10
|
-
className?: string;
|
|
11
|
-
slots?: MediaPlayerCore1Slots;
|
|
12
|
-
}
|
|
13
|
-
declare const MediaPlayerCore1: React.FC<IProps>;
|
|
14
|
-
export default MediaPlayerCore1;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
2
|
-
import { MediaPlayerBaseProps, MediaPlayerBaseSlots } from './media-player.units';
|
|
3
|
-
import { MediaPlayerCore1Slots } from './media-player.core1';
|
|
4
|
-
interface IProps extends MediaPlayerBaseProps {
|
|
5
|
-
slots?: MediaPlayerBaseSlots & {
|
|
6
|
-
core1Props?: MediaPlayerCore1Slots;
|
|
7
|
-
};
|
|
8
|
-
}
|
|
9
|
-
declare const MediaPlayerMuted: FC<IProps>;
|
|
10
|
-
export default MediaPlayerMuted;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
import { Breakpoint, SxProps, Theme } from '@mui/material';
|
|
3
|
-
export interface IMediaStream {
|
|
4
|
-
code: number;
|
|
5
|
-
token: string;
|
|
6
|
-
StreamUrl: string;
|
|
7
|
-
}
|
|
8
|
-
export interface MediaPlayerBaseProps {
|
|
9
|
-
resourceId: string;
|
|
10
|
-
fetchDataStream: (resourceId: string, signal?: AbortSignal) => Promise<IMediaStream[]>;
|
|
11
|
-
loading?: boolean;
|
|
12
|
-
}
|
|
13
|
-
export type AspectRatioParams = number | Partial<Record<Breakpoint, number>>;
|
|
14
|
-
export interface MediaPlayerBaseSlots {
|
|
15
|
-
/**
|
|
16
|
-
* Aspect ratio (height / width), used to calculate height based on width.
|
|
17
|
-
* @default 56.25 (%)
|
|
18
|
-
*/
|
|
19
|
-
aspectRatio?: AspectRatioParams;
|
|
20
|
-
loading?: ReactNode;
|
|
21
|
-
loadingProps?: {
|
|
22
|
-
disabled?: boolean;
|
|
23
|
-
animationDuration?: string;
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
export declare enum EMediaPlayerStatus {
|
|
27
|
-
Loading = "Loading",
|
|
28
|
-
Loaded = "Loaded",
|
|
29
|
-
Error = "Error"
|
|
30
|
-
}
|
|
31
|
-
export declare const useStreamUrl: (resourceId: string | null, fetchDataStream: MediaPlayerBaseProps['fetchDataStream']) => {
|
|
32
|
-
status: EMediaPlayerStatus;
|
|
33
|
-
streamUrl: string | null;
|
|
34
|
-
};
|
|
35
|
-
export declare const getAspectRatio: (value?: AspectRatioParams, defaultAspectRatio?: string) => string | Partial<Record<Breakpoint, string>> | undefined;
|
|
36
|
-
export declare const getAspectRatioStyled: (value?: AspectRatioParams) => SxProps<Theme>;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { ComponentType } from 'react';
|
|
2
|
-
import { GridPaginationModel } from '@mui/x-data-grid';
|
|
3
|
-
import { FilterBarParams, IFilterState } from '../../filter-bar';
|
|
4
|
-
import { ISeclectMulFetchData, ISeclectMulFetchTotal, ISelectModel } from './types';
|
|
5
|
-
export interface ISelectMulWithApiProps<T> {
|
|
6
|
-
fetchData?: ISeclectMulFetchData<T>;
|
|
7
|
-
fetchTotal?: ISeclectMulFetchTotal;
|
|
8
|
-
onSubmit?: (value: ISelectModel[]) => Promise<void>;
|
|
9
|
-
}
|
|
10
|
-
export interface ISelectMulWithApiState<T> {
|
|
11
|
-
loading?: boolean;
|
|
12
|
-
submiting?: boolean;
|
|
13
|
-
filterState: IFilterState<T>;
|
|
14
|
-
pagination: GridPaginationModel;
|
|
15
|
-
rows: ISelectModel[];
|
|
16
|
-
totalRows: number;
|
|
17
|
-
rowSelecteds: ISelectModel[];
|
|
18
|
-
searchKeyLocal?: string;
|
|
19
|
-
isUnselected?: boolean;
|
|
20
|
-
}
|
|
21
|
-
export interface ISelectMulWithApiParams<T> {
|
|
22
|
-
filterConfig: FilterBarParams<T>;
|
|
23
|
-
}
|
|
24
|
-
declare function CreateSelectMulWithApi<T>(params: ISelectMulWithApiParams<T>): ComponentType<ISelectMulWithApiProps<T>>;
|
|
25
|
-
export * from './types';
|
|
26
|
-
export default CreateSelectMulWithApi;
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import React, { Component, ReactNode } from 'react';
|
|
2
|
-
import { DataGridProps, GridColDef, GridFeatureMode, GridPaginationModel, GridRowSelectionModel } from '@mui/x-data-grid';
|
|
3
|
-
import { ISelectModel } from './types';
|
|
4
|
-
interface IProps {
|
|
5
|
-
title: string;
|
|
6
|
-
rows: ISelectModel[];
|
|
7
|
-
featureMode?: GridFeatureMode;
|
|
8
|
-
totalRows?: number;
|
|
9
|
-
maxSelected?: number;
|
|
10
|
-
pagination?: GridPaginationModel;
|
|
11
|
-
defaultPagination?: GridPaginationModel;
|
|
12
|
-
loading?: boolean;
|
|
13
|
-
onPaginationChange?: DataGridProps['onPaginationModelChange'];
|
|
14
|
-
isRowSelectable?: DataGridProps['isRowSelectable'];
|
|
15
|
-
slots?: {
|
|
16
|
-
title?: {
|
|
17
|
-
before?: ReactNode;
|
|
18
|
-
after?: ReactNode;
|
|
19
|
-
};
|
|
20
|
-
renderAction?: (value: ISelectModel) => ReactNode;
|
|
21
|
-
renderHeaderAction?: (parmas: {
|
|
22
|
-
rowSelecteds: GridRowSelectionModel;
|
|
23
|
-
}) => ReactNode;
|
|
24
|
-
header?: ReactNode;
|
|
25
|
-
topBar?: ReactNode;
|
|
26
|
-
dataGridProps?: Partial<DataGridProps>;
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
export declare class TableCustom extends Component<IProps> {
|
|
30
|
-
rowSelecteds: GridRowSelectionModel;
|
|
31
|
-
constructor(props: IProps);
|
|
32
|
-
shouldComponentUpdate(nextProps: Readonly<IProps>, nextState: Readonly<{}>, nextContext: any): boolean;
|
|
33
|
-
render(): import("react/jsx-runtime").JSX.Element;
|
|
34
|
-
getDataGridProps: () => DataGridProps;
|
|
35
|
-
getData: () => {
|
|
36
|
-
rows: ISelectModel<any>[];
|
|
37
|
-
rowSelecteds: import("@mui/x-data-grid").GridRowId[];
|
|
38
|
-
};
|
|
39
|
-
getColumns: () => GridColDef[];
|
|
40
|
-
renderHeader: () => number | true | import("react/jsx-runtime").JSX.Element | Iterable<React.ReactNode>;
|
|
41
|
-
handleRowSelectionChange: (value: GridRowSelectionModel) => void;
|
|
42
|
-
}
|
|
43
|
-
export {};
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { IFilterState } from '../../filter-bar';
|
|
2
|
-
export interface ISelectModel<F = any> {
|
|
3
|
-
value: string;
|
|
4
|
-
label?: string;
|
|
5
|
-
disabled?: boolean;
|
|
6
|
-
other?: F;
|
|
7
|
-
}
|
|
8
|
-
export interface IPaginationModel {
|
|
9
|
-
/** @default 0 */
|
|
10
|
-
page: number;
|
|
11
|
-
/** @default 100 */
|
|
12
|
-
pageSize: number;
|
|
13
|
-
}
|
|
14
|
-
export interface IFilterStateCustom<T> extends IFilterState<T> {
|
|
15
|
-
pagination: IPaginationModel;
|
|
16
|
-
}
|
|
17
|
-
export type ISeclectMulFetchData<T> = (filterState: IFilterStateCustom<T>, signal?: AbortSignal) => Promise<{
|
|
18
|
-
items: ISelectModel<T>[];
|
|
19
|
-
totalItems: number;
|
|
20
|
-
}>;
|
|
21
|
-
export type ISeclectMulFetchTotal = (signal?: AbortSignal) => Promise<number>;
|