@iobroker/adapter-react-v5 7.5.2 → 7.6.1
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/LICENSE +22 -22
- package/build/AdminConnection.js.map +1 -1
- package/build/Components/404.js +13 -13
- package/build/Components/404.js.map +1 -1
- package/build/Components/ColorPicker.js.map +1 -1
- package/build/Components/CopyToClipboard.js.map +1 -1
- package/build/Components/CustomModal.js.map +1 -1
- package/build/Components/FileViewer.js.map +1 -1
- package/build/Components/Icon.js.map +1 -1
- package/build/Components/IconPicker.js.map +1 -1
- package/build/Components/IconSelector.js.map +1 -1
- package/build/Components/IobUri.js.map +1 -1
- package/build/Components/Loader.js +223 -223
- package/build/Components/Loader.js.map +1 -1
- package/build/Components/Loaders/MV.js.map +1 -1
- package/build/Components/Loaders/PT.js +103 -103
- package/build/Components/Loaders/PT.js.map +1 -1
- package/build/Components/Loaders/Vendor.js +7 -7
- package/build/Components/Loaders/Vendor.js.map +1 -1
- package/build/Components/MDUtils.js.map +1 -1
- package/build/Components/ObjectBrowser.js +1 -1
- package/build/Components/ObjectBrowser.js.map +1 -1
- package/build/Components/Router.js.map +1 -1
- package/build/Components/SaveCloseButtons.js.map +1 -1
- package/build/Components/SimpleCron/cronText.js.map +1 -1
- package/build/Components/SimpleCron/index.js.map +1 -1
- package/build/Components/TabContainer.js.map +1 -1
- package/build/Components/TabContent.js.map +1 -1
- package/build/Components/TabHeader.js.map +1 -1
- package/build/Components/TableResize.js.map +1 -1
- package/build/Components/TextWithIcon.js.map +1 -1
- package/build/Components/ToggleThemeMenu.js.map +1 -1
- package/build/Components/TreeTable.js.map +1 -1
- package/build/Components/UploadImage.js +305 -305
- package/build/Components/UploadImage.js.map +1 -1
- package/build/Components/withWidth.js.map +1 -1
- package/build/Connection.js.map +1 -1
- package/build/Dialogs/ComplexCron.js.map +1 -1
- package/build/Dialogs/Confirm.js.map +1 -1
- package/build/Dialogs/Cron.js.map +1 -1
- package/build/Dialogs/Error.js.map +1 -1
- package/build/Dialogs/Message.js.map +1 -1
- package/build/Dialogs/SelectFile.js.map +1 -1
- package/build/Dialogs/SimpleCron.js.map +1 -1
- package/build/Dialogs/TextInput.d.ts +1 -1
- package/build/Dialogs/TextInput.js.map +1 -1
- package/build/Prompt.js +7 -7
- package/build/Prompt.js.map +1 -1
- package/build/assets/devices/parseNames.js.map +1 -1
- package/build/assets/devices.json +1 -1
- package/build/assets/lamp_ceiling.svg +8 -8
- package/build/assets/lamp_table.svg +7 -7
- package/build/assets/no_icon.svg +9 -9
- package/build/assets/rooms/parseNames.js.map +1 -1
- package/build/assets/rooms.json +1 -1
- package/build/dictionary.js.map +1 -1
- package/build/i18n.js.map +1 -1
- package/build/icons/IconAdapter.js.map +1 -1
- package/build/icons/IconAlias.js.map +1 -1
- package/build/icons/IconButtonImage.js.map +1 -1
- package/build/icons/IconChannel.js.map +1 -1
- package/build/icons/IconClearFilter.js.map +1 -1
- package/build/icons/IconClosed.js.map +1 -1
- package/build/icons/IconCopy.js.map +1 -1
- package/build/icons/IconDevice.js.map +1 -1
- package/build/icons/IconDocument.js.map +1 -1
- package/build/icons/IconDocumentReadOnly.js.map +1 -1
- package/build/icons/IconExpert.js.map +1 -1
- package/build/icons/IconFx.js +1 -1
- package/build/icons/IconFx.js.map +1 -1
- package/build/icons/IconInstance.js.map +1 -1
- package/build/icons/IconLogout.js +1 -1
- package/build/icons/IconLogout.js.map +1 -1
- package/build/icons/IconNoIcon.js.map +1 -1
- package/build/icons/IconOpen.js.map +1 -1
- package/build/icons/IconProps.js.map +1 -1
- package/build/icons/IconState.js.map +1 -1
- package/build/icons/IconVacuum.js.map +1 -1
- package/build/index.css +56 -56
- package/build/index.d.ts +1 -0
- package/build/index.js +1 -0
- package/build/index.js.map +1 -1
- package/build/modulefederation.admin.config.d.ts +13 -0
- package/build/modulefederation.admin.config.js +45 -0
- package/build/modulefederation.admin.config.js.map +1 -0
- package/craco-module-federation.js +62 -62
- package/index.css +56 -56
- package/modulefederation.admin.config.d.ts +20 -0
- package/modulefederation.admin.config.js +54 -33
- package/package.json +12 -10
- package/tasksExample.js +91 -91
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Router.js","sourceRoot":"./src/","sources":["Components/Router.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,mEAAmE;AACnE,MAAM,OAAO,MAAuB,SAAQ,SAAe;IAC7C,kBAAkB,CAAa;IAEzC,YAAY,KAAQ;QAChB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,iBAAiB;QACb,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACnE,CAAC;IAED,oBAAoB;QAChB,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACtE,CAAC;IAED,kDAAkD;IAClD,aAAa;QACT,yBAAyB;IAC7B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW;QACd,IAAI,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAChC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACrC,IAAI,CAAC;gBACD,OAAO,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,CAAC;YAAC,MAAM,CAAC;gBACL,OAAO,CAAC,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;gBAC/C,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC,CAAC,CAAC;QACH,+BAA+B;QAC/B,OAAO;YACH,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;YACnB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;YACtB,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;YAClB,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;SACtB,CAAC;IACN,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU,CACb,GAA8B,EAC9B,MAAsB,EACtB,EAAkB,EAClB,GAAmB;QAEnB,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACtC,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,EAAE,EAAE,CAAC;YAC3B,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QACrB,CAAC;QACD,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC7B,CAAC;QACD,IAAI,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;YACjB,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;QACvB,CAAC;aAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACtB,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;QACvB,CAAC;QAED,IAAI,GAAG,EAAE,CAAC;YACN,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;YACjB,IAAI,MAAM,EAAE,CAAC;gBACT,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;gBAErB,IAAI,EAAE,EAAE,CAAC;oBACL,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;oBACjB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;wBACpB,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;oBACtB,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAChC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;QAChC,CAAC;IACL,CAAC;CACJ","sourcesContent":["import { Component } from 'react';\
|
|
1
|
+
{"version":3,"file":"Router.js","sourceRoot":"./src/","sources":["Components/Router.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component } from 'react';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport class Router<P = {}, S = {}> extends Component<P, S> {\n protected onHashChangedBound: () => void;\n\n constructor(props: P) {\n super(props);\n this.onHashChangedBound = this.onHashChanged.bind(this);\n }\n\n componentDidMount(): void {\n window.addEventListener('hashchange', this.onHashChangedBound);\n }\n\n componentWillUnmount(): void {\n window.removeEventListener('hashchange', this.onHashChangedBound);\n }\n\n // eslint-disable-next-line class-methods-use-this\n onHashChanged(): void {\n // override this function\n }\n\n /**\n * Gets the location object.\n */\n static getLocation(): { tab: string; dialog: string; id: string; arg: string } {\n let hash = window.location.hash;\n hash = hash.replace(/^#/, '');\n const parts = hash.split('/').map(item => {\n try {\n return item ? decodeURIComponent(item) : '';\n } catch {\n console.error(`Router: Cannot decode ${item}`);\n return item;\n }\n });\n // #tabName/dialogName/deviceId\n return {\n tab: parts[0] || '',\n dialog: parts[1] || '',\n id: parts[2] || '',\n arg: parts[3] || '',\n };\n }\n\n /**\n * Navigate to a new location. Any parameters that are not set will be taken from the current location.\n */\n static doNavigate(\n tab: string | undefined | null,\n dialog?: string | null,\n id?: string | null,\n arg?: string | null,\n ): void {\n let hash = '';\n const location = Router.getLocation();\n if (arg !== undefined && !id) {\n id = location.id;\n }\n if (id && !dialog) {\n dialog = location.dialog;\n }\n if (dialog && !tab) {\n tab = location.tab;\n } else if (tab === null) {\n tab = location.tab;\n }\n\n if (tab) {\n hash = `#${tab}`;\n if (dialog) {\n hash += `/${dialog}`;\n\n if (id) {\n hash += `/${id}`;\n if (arg !== undefined) {\n hash += `/${arg}`;\n }\n }\n }\n }\n if (window.location.hash !== hash) {\n window.location.hash = hash;\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SaveCloseButtons.js","sourceRoot":"./src/","sources":["Components/SaveCloseButtons.tsx"],"names":[],"mappings":"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","sourcesContent":["// please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined\
|
|
1
|
+
{"version":3,"file":"SaveCloseButtons.js","sourceRoot":"./src/","sources":["Components/SaveCloseButtons.tsx"],"names":[],"mappings":"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","sourcesContent":["// please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined\nimport React, { type JSX } from 'react';\n\nimport { Fab, Toolbar } from '@mui/material';\n\nimport { Save as IconSave, Close as IconClose } from '@mui/icons-material';\n\nimport { I18n } from '../i18n';\nimport type { IobTheme } from '../types';\n\nconst styles: Record<string, React.CSSProperties> = {\n buttonIcon: {\n marginRight: 8,\n },\n};\n\ninterface SaveCloseButtonsProps {\n /* Are the buttons without text */\n noTextOnButtons?: boolean;\n /* Theme object (from this.state.theme) */\n theme: IobTheme;\n /* bottom position 0 or 38 for iFrame */\n isIFrame?: boolean;\n /* is used in new React */\n newReact?: boolean;\n /* on Save handler */\n onSave: (close: boolean) => void;\n /* on Close handler */\n onClose: () => void;\n dense?: boolean;\n paddingLeft?: number;\n changed: boolean;\n error?: boolean;\n}\n\nexport class SaveCloseButtons extends React.Component<SaveCloseButtonsProps> {\n private readonly isIFrame: boolean;\n\n constructor(props: SaveCloseButtonsProps) {\n super(props);\n const newReact = props.newReact === undefined ? true : props.newReact;\n\n if (props.isIFrame !== undefined) {\n this.isIFrame = props.isIFrame;\n } else {\n try {\n this.isIFrame = !newReact && window.self !== window.top;\n } catch {\n this.isIFrame = !newReact;\n }\n }\n }\n\n render(): JSX.Element {\n const noTextOnButtons = this.props.noTextOnButtons;\n const buttonStyle: React.CSSProperties = {\n borderRadius: this.props.theme.saveToolbar.button.borderRadius || 3,\n height: this.props.theme.saveToolbar.button.height || 32,\n };\n\n const style: React.CSSProperties = {\n bottom: this.isIFrame ? 38 : 0,\n left: this.props.paddingLeft || 0,\n right: 0,\n position: 'absolute',\n background: this.props.theme.saveToolbar.background,\n };\n if (this.props.dense) {\n style.minHeight = 48;\n }\n\n if (this.props.error) {\n buttonStyle.border = '1px solid red';\n }\n\n return (\n <Toolbar\n // position=\"absolute\"\n style={style}\n >\n <Fab\n variant=\"extended\"\n aria-label=\"Save\"\n disabled={!this.props.changed || this.props.error}\n onClick={() => this.props.onSave(false)}\n style={buttonStyle}\n >\n <IconSave style={!noTextOnButtons ? styles.buttonIcon : undefined} />\n {!noTextOnButtons && I18n.t('ra_Save')}\n </Fab>\n <Fab\n variant=\"extended\"\n aria-label=\"Save and close\"\n disabled={!this.props.changed || this.props.error}\n onClick={() => this.props.onSave(true)}\n style={{ ...buttonStyle, ...{ marginLeft: 10 } }}\n >\n <IconSave style={!noTextOnButtons ? styles.buttonIcon : undefined} />\n {!noTextOnButtons ? I18n.t('ra_Save and close') : '+'}\n {noTextOnButtons && <IconClose />}\n </Fab>\n <div style={{ flexGrow: 1 }} />\n <Fab\n variant=\"extended\"\n aria-label=\"Close\"\n onClick={() => this.props.onClose()}\n style={buttonStyle}\n >\n <IconClose style={!noTextOnButtons ? styles.buttonIcon : undefined} />\n {!noTextOnButtons && I18n.t('ra_Close')}\n </Fab>\n </Toolbar>\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cronText.js","sourceRoot":"./src/","sources":["Components/SimpleCron/cronText.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,yBAAyB,CAAC;AACjC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,yBAAyB,CAAC;AACjC,OAAO,sBAAsB,CAAC;AAE9B,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,IAAyB;IACrE,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACtD,CAAC","sourcesContent":["import cronstrue from 'cronstrue';\
|
|
1
|
+
{"version":3,"file":"cronText.js","sourceRoot":"./src/","sources":["Components/SimpleCron/cronText.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,yBAAyB,CAAC;AACjC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,yBAAyB,CAAC;AACjC,OAAO,sBAAsB,CAAC;AAE9B,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,IAAyB;IACrE,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACtD,CAAC","sourcesContent":["import cronstrue from 'cronstrue';\nimport 'cronstrue/locales/fr';\nimport 'cronstrue/locales/es';\nimport 'cronstrue/locales/de';\nimport 'cronstrue/locales/it';\nimport 'cronstrue/locales/ru';\nimport 'cronstrue/locales/zh_CN';\nimport 'cronstrue/locales/uk';\nimport 'cronstrue/locales/pt_BR';\nimport 'cronstrue/locales/pl';\n\nexport function convertCronToText(cron: string, lang?: ioBroker.Languages): string {\n return cronstrue.toString(cron, { locale: lang });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"./src/","sources":["Components/SimpleCron/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\r\n\r\nimport {\r\n InputLabel,\r\n MenuItem,\r\n Select,\r\n TextField,\r\n FormControl,\r\n FormControlLabel,\r\n Checkbox,\r\n type Theme,\r\n} from '@mui/material';\r\n\r\nimport { convertCronToText } from './cronText';\r\n\r\nimport { I18n } from '../../i18n';\r\n\r\nconst styles: Record<string, React.CSSProperties> = {\r\n mainDiv: {\r\n width: '100%',\r\n height: '100%',\r\n overflow: 'auto',\r\n },\r\n formControl: {\r\n margin: 0,\r\n minWidth: 120,\r\n },\r\n formControlMarginRight: {\r\n marginRight: 5,\r\n },\r\n formControlPaddingTop: {\r\n paddingTop: 6.2,\r\n },\r\n};\r\n\r\ntype SimpleCronType = 'once' | 'interval' | 'intervalBetween' | 'specific';\r\nconst PERIODIC = {\r\n once: 'once',\r\n interval: 'interval',\r\n intervalBetween: 'intervalBetween',\r\n specific: 'specific',\r\n};\r\nconst PERIODIC_TYPES = {\r\n seconds: 'seconds',\r\n minutes: 'minutes',\r\n // hours: 'hours',\r\n};\r\nconst WEEKDAYS = [\r\n 'ra_Sunday',\r\n 'ra_Monday',\r\n 'ra_Tuesday',\r\n 'ra_Wednesday',\r\n 'ra_Thursday',\r\n 'ra_Friday',\r\n 'ra_Saturday',\r\n 'ra_Sunday',\r\n];\r\n\r\nfunction padding(num: number): string {\r\n if (num < 10) {\r\n return `0${num}`;\r\n }\r\n\r\n return `${num}`;\r\n}\r\nconst DEFAULT_STATE = {\r\n mode: 'interval',\r\n interval: {\r\n period: 1,\r\n unit: PERIODIC_TYPES.minutes,\r\n },\r\n};\r\n\r\ninterface SimpleCronProps {\r\n cronExpression?: string;\r\n onChange: (cron: string) => void;\r\n language: ioBroker.Languages;\r\n}\r\n\r\ninterface SimpleCronState {\r\n extended: boolean;\r\n cron: string;\r\n mode: SimpleCronType;\r\n once: {\r\n time: string;\r\n date: string;\r\n // weekdays?: number[];\r\n };\r\n interval: {\r\n period: number;\r\n unit: string;\r\n minutes?: number; // if extended\r\n hours?: number; // if extended\r\n };\r\n intervalBetween: {\r\n period: number;\r\n unit: string;\r\n timeFrom: number;\r\n timeTo: number;\r\n weekdays: number[];\r\n minutes?: number; // if extended\r\n hours?: number; // if extended\r\n };\r\n specific: {\r\n time: string;\r\n weekdays: number[];\r\n };\r\n}\r\n\r\ninterface CronStructure {\r\n seconds: string | null;\r\n minutes: string;\r\n hours: string;\r\n date: string;\r\n months: string;\r\n dow: string;\r\n}\r\n\r\nfunction text2weekdays(text: string): number[] {\r\n if (text === '*') {\r\n return [0, 1, 2, 3, 4, 5, 6];\r\n }\r\n\r\n const parts = text.split(',');\r\n const list: number[] = [];\r\n parts.forEach(part => {\r\n const _parts = part.split('-');\r\n if (_parts.length === 2) {\r\n const start = parseInt(_parts[0], 10);\r\n const end = parseInt(_parts[1], 10);\r\n for (let day = start; day <= end; day++) {\r\n if (!list.includes(day === 7 ? 0 : day)) {\r\n list.push(day === 7 ? 0 : day);\r\n }\r\n }\r\n } else {\r\n if (part === '7') {\r\n part = '0';\r\n }\r\n const numPart = parseInt(part, 10);\r\n if (!list.includes(numPart)) {\r\n list.push(numPart);\r\n }\r\n }\r\n });\r\n list.sort();\r\n return list;\r\n}\r\n\r\nexport function cron2state(cron: string, force?: boolean): Partial<SimpleCronState> | null {\r\n cron = cron.replace(/['\"]/g, '').trim();\r\n const cronParts = cron.split(' ');\r\n let options: CronStructure;\r\n let state: Partial<SimpleCronState> | null = null;\r\n\r\n if (cronParts.length === 6) {\r\n options = {\r\n seconds: cronParts[0] || '*',\r\n minutes: cronParts[1] || '*',\r\n hours: cronParts[2] || '*',\r\n date: cronParts[3] || '*',\r\n months: cronParts[4] || '*',\r\n dow: cronParts[5] || '*',\r\n };\r\n } else {\r\n options = {\r\n seconds: null,\r\n minutes: cronParts[0] || '*',\r\n hours: cronParts[1] || '*',\r\n date: cronParts[2] || '*',\r\n months: cronParts[3] || '*',\r\n dow: cronParts[4] || '*',\r\n };\r\n }\r\n\r\n // * * * * *\r\n if (\r\n options.seconds === null &&\r\n options.minutes === '*' &&\r\n options.hours === '*' &&\r\n options.date === '*' &&\r\n options.months === '*' &&\r\n (options.dow === '*' || force)\r\n ) {\r\n state = {\r\n mode: 'interval',\r\n interval: {\r\n period: 1,\r\n unit: PERIODIC_TYPES.minutes,\r\n },\r\n };\r\n } // * * * * * *\r\n\r\n if (\r\n options.seconds === '*' &&\r\n options.minutes === '*' &&\r\n options.hours === '*' &&\r\n options.date === '*' &&\r\n options.months === '*' &&\r\n (options.dow === '*' || force)\r\n ) {\r\n state = {\r\n mode: 'interval',\r\n interval: {\r\n period: 1,\r\n unit: PERIODIC_TYPES.seconds,\r\n },\r\n };\r\n } else if (\r\n options.seconds === null &&\r\n options.minutes.includes('/') &&\r\n options.hours === '*' &&\r\n options.date === '*' &&\r\n options.months === '*' &&\r\n (options.dow === '*' || force)\r\n ) {\r\n // */n * * * *\r\n state = {\r\n mode: 'interval',\r\n interval: {\r\n period: parseInt(options.minutes.split('/')[1], 10),\r\n unit: PERIODIC_TYPES.minutes,\r\n },\r\n };\r\n } else if (\r\n options.seconds !== null &&\r\n options.seconds.includes('/') &&\r\n options.minutes === '*' &&\r\n options.hours === '*' &&\r\n options.date === '*' &&\r\n options.months === '*' &&\r\n (options.dow === '*' || force)\r\n ) {\r\n // */n * * * * *\r\n state = {\r\n mode: 'interval',\r\n interval: {\r\n period: parseInt(options.seconds.split('/')[1], 10),\r\n unit: PERIODIC_TYPES.seconds,\r\n },\r\n };\r\n } else if (\r\n options.seconds !== null &&\r\n options.seconds.includes('/') &&\r\n options.minutes === '*' &&\r\n options.hours.includes('-') &&\r\n options.date === '*' &&\r\n options.months === '*' &&\r\n (options.dow === '*' || force)\r\n ) {\r\n // */n * 0-23 * * 1-7 or */n * 0-23 * * *\r\n state = {\r\n mode: 'intervalBetween',\r\n intervalBetween: {\r\n period: parseInt(options.seconds.split('/')[1], 10),\r\n unit: PERIODIC_TYPES.seconds,\r\n timeFrom: parseInt(options.hours.split('-')[0], 10),\r\n timeTo: parseInt(options.hours.split('-')[1], 10),\r\n weekdays: text2weekdays(options.dow),\r\n },\r\n };\r\n } else if (\r\n options.seconds === null &&\r\n options.minutes.includes('/') &&\r\n options.hours.includes('-') &&\r\n options.date === '*' &&\r\n options.months === '*' &&\r\n (options.dow === '*' || force)\r\n ) {\r\n // */n 0-23 * * 1-7 or */n 0-23 * * *\r\n state = {\r\n mode: 'intervalBetween',\r\n intervalBetween: {\r\n period: parseInt(options.minutes.split('/')[1], 10),\r\n unit: PERIODIC_TYPES.minutes,\r\n timeFrom: parseInt(options.hours.split('-')[0], 10),\r\n timeTo: parseInt(options.hours.split('-')[1], 10),\r\n weekdays: text2weekdays(options.dow),\r\n },\r\n };\r\n } else if (\r\n options.seconds === null &&\r\n parseInt(options.minutes, 10).toString() === options.minutes &&\r\n parseInt(options.hours, 10).toString() === options.hours &&\r\n options.date === '*' &&\r\n options.months === '*' &&\r\n (options.dow === '*' || force)\r\n ) {\r\n // m h * * 1-7 or m h * * *\r\n state = {\r\n mode: 'specific',\r\n specific: {\r\n time: `${padding(parseInt(options.hours, 10))}:${padding(parseInt(options.minutes, 10))}`,\r\n weekdays: text2weekdays(options.dow),\r\n },\r\n };\r\n } else if (\r\n options.seconds === null &&\r\n parseInt(options.minutes, 10).toString() === options.minutes &&\r\n parseInt(options.hours, 10).toString() === options.hours &&\r\n parseInt(options.date, 10).toString() === options.date &&\r\n parseInt(options.months, 10).toString() === options.months &&\r\n (options.dow === '*' || force)\r\n ) {\r\n // m h d M *\r\n state = {\r\n mode: 'once',\r\n once: {\r\n time: `${padding(parseInt(options.hours, 10))}:${padding(parseInt(options.minutes, 10))}`,\r\n date: `${padding(parseInt(options.date, 10))}.${padding(parseInt(options.months, 10))}`,\r\n },\r\n };\r\n }\r\n\r\n return state;\r\n}\r\n\r\nexport class SimpleCron extends React.Component<SimpleCronProps, SimpleCronState> {\r\n constructor(props: SimpleCronProps) {\r\n super(props);\r\n let cron =\r\n typeof props.cronExpression === 'string'\r\n ? props.cronExpression.replace(/^[\"']/, '').replace(/[\"']\\n?$/, '')\r\n : '';\r\n if (cron[0] === '{') {\r\n cron = '';\r\n }\r\n const state = cron2state(cron || '* * * * *', true) || DEFAULT_STATE;\r\n\r\n this.state = {\r\n extended: false,\r\n cron: SimpleCron.state2cron(state as SimpleCronState),\r\n mode: 'interval',\r\n once: {\r\n time: '00:00',\r\n date: '',\r\n },\r\n interval: {\r\n period: 1,\r\n unit: PERIODIC_TYPES.minutes,\r\n },\r\n intervalBetween: {\r\n period: 1,\r\n unit: PERIODIC_TYPES.minutes,\r\n timeFrom: 0,\r\n timeTo: 23,\r\n weekdays: [0, 1, 2, 3, 4, 5, 6],\r\n },\r\n specific: {\r\n time: '00:00',\r\n weekdays: [0, 1, 2, 3, 4, 5, 6],\r\n },\r\n };\r\n Object.assign(this.state, state);\r\n\r\n if (this.state.cron !== props.cronExpression) {\r\n setTimeout(() => props.onChange && props.onChange(this.state.cron), 100);\r\n }\r\n }\r\n\r\n static periodArray2text(list: number[], max: number = 7): string {\r\n max = max || 7;\r\n if (list.length === max) {\r\n return '*';\r\n }\r\n const text = [];\r\n let start = null;\r\n let end = null;\r\n if (!list.length) {\r\n return '_';\r\n }\r\n for (let i = 0; i < list.length; i++) {\r\n if (start === null) {\r\n start = list[i];\r\n end = list[i];\r\n } else if (list[i - 1] + 1 === list[i]) {\r\n end = list[i];\r\n } else {\r\n if (start !== end) {\r\n text.push(`${start}-${end}`);\r\n } else {\r\n text.push(start);\r\n }\r\n start = list[i];\r\n end = list[i];\r\n }\r\n }\r\n if (start !== end) {\r\n text.push(`${start}-${end}`);\r\n } else {\r\n text.push(start);\r\n }\r\n return text.join(',');\r\n }\r\n\r\n static text2weekdays(text: string): number[] {\r\n return text2weekdays(text);\r\n }\r\n\r\n static state2cron(state: Partial<SimpleCronState>): string {\r\n let cron = '* * * * *';\r\n if (state.mode === 'interval') {\r\n const settings = state.interval || {\r\n period: 1,\r\n unit: PERIODIC_TYPES.minutes,\r\n };\r\n if (settings.period !== undefined && settings.period > 60) {\r\n settings.period = 60;\r\n }\r\n if (settings.period !== undefined && settings.period < 1) {\r\n settings.period = 1;\r\n }\r\n\r\n if (settings.minutes !== undefined && settings.minutes !== null && settings.minutes > 60) {\r\n settings.minutes = 60;\r\n }\r\n if (settings.minutes !== undefined && settings.minutes !== null && settings.minutes < 1) {\r\n settings.minutes = 1;\r\n }\r\n\r\n if (settings.hours !== undefined && settings.hours !== null && settings.hours > 24) {\r\n settings.hours = 24;\r\n }\r\n if (settings.hours !== undefined && settings.hours !== null && settings.hours < 1) {\r\n settings.hours = 1;\r\n }\r\n\r\n if (state.extended) {\r\n cron = `${settings.minutes !== undefined && settings.minutes !== null && settings.minutes > 1 ? `*/${settings.minutes}` : '*'} ${settings.hours !== undefined && settings.hours !== null && settings.hours > 1 ? `*/${settings.hours}` : '*'} * * *`;\r\n } else {\r\n switch (settings.unit) {\r\n case PERIODIC_TYPES.seconds:\r\n cron = `${settings.period > 1 ? `*/${settings.period}` : '*'} * * * * *`;\r\n break;\r\n case PERIODIC_TYPES.minutes:\r\n cron = `${settings.period > 1 ? `*/${settings.period}` : '*'} * * * *`;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n } else if (state.mode === 'intervalBetween') {\r\n const settings = state.intervalBetween || {\r\n period: 1,\r\n unit: PERIODIC_TYPES.minutes,\r\n timeFrom: 0,\r\n timeTo: 24,\r\n weekdays: [0, 1, 2, 3, 4, 5, 6],\r\n };\r\n let hours;\r\n settings.timeFrom = settings.timeFrom || 0;\r\n settings.timeTo = settings.timeTo === undefined ? 24 : settings.timeTo;\r\n if (settings.timeFrom !== 0 && settings.timeTo === 24) {\r\n settings.timeTo = 23;\r\n }\r\n if (settings.timeFrom === 0 && settings.timeTo === 24) {\r\n hours = '*';\r\n } else {\r\n hours = settings.timeFrom !== settings.timeTo ? `${settings.timeFrom}-${settings.timeTo}` : '*';\r\n }\r\n if (settings.period > 60) {\r\n settings.period = 60;\r\n }\r\n if (settings.period < 1) {\r\n settings.period = 1;\r\n }\r\n settings.unit = settings.unit || PERIODIC_TYPES.minutes;\r\n switch (settings.unit) {\r\n case PERIODIC_TYPES.seconds:\r\n cron = `${settings.period > 1 ? `*/${settings.period}` : '*'} * ${hours} * * ${this.periodArray2text(settings.weekdays)}`;\r\n break;\r\n case PERIODIC_TYPES.minutes:\r\n cron = `${settings.period > 1 ? `*/${settings.period}` : '*'} ${hours} * * ${this.periodArray2text(settings.weekdays)}`;\r\n break;\r\n default:\r\n break;\r\n }\r\n } else if (state.mode === 'specific') {\r\n const settings = state.specific || {\r\n time: '00:00',\r\n weekdays: [0, 1, 2, 3, 4, 5, 6],\r\n };\r\n const parts = (settings.time || '00:00').split(':');\r\n let minutes = parseInt(parts[1], 10) || 0;\r\n if (minutes > 59) {\r\n minutes = 59;\r\n }\r\n if (minutes < 0) {\r\n minutes = 0;\r\n }\r\n let hours = parseInt(parts[0], 10) || 0;\r\n if (hours > 23) {\r\n hours = 59;\r\n }\r\n if (hours < 0) {\r\n hours = 0;\r\n }\r\n\r\n cron = `${minutes} ${hours} * * ${this.periodArray2text(settings.weekdays || [])}`;\r\n } else if (state.mode === 'once') {\r\n const settings = state.once || {\r\n time: '00:00',\r\n date: '',\r\n };\r\n if (!settings.date) {\r\n settings.date = `${new Date().getDate()}.${padding(new Date().getMonth() + 1)}`;\r\n }\r\n const parts = (settings.time || '00:00').split(':');\r\n const partsDate = settings.date.split('.');\r\n let minutes = parseInt(parts[1], 10) || 0;\r\n if (minutes > 59) {\r\n minutes = 59;\r\n }\r\n if (minutes < 0) {\r\n minutes = 0;\r\n }\r\n let hours = parseInt(parts[0], 10) || 0;\r\n if (hours > 23) {\r\n hours = 59;\r\n }\r\n if (hours < 0) {\r\n hours = 0;\r\n }\r\n let date = parseInt(partsDate[0], 10) || 1;\r\n if (date > 31) {\r\n date = 31;\r\n }\r\n if (date < 1) {\r\n hours = 1;\r\n }\r\n let month = parseInt(partsDate[1], 10) || 1;\r\n if (month > 12) {\r\n month = 12;\r\n }\r\n if (month < 1) {\r\n month = 1;\r\n }\r\n\r\n cron = `${minutes} ${hours} ${date} ${month} *`;\r\n }\r\n return cron;\r\n }\r\n\r\n recalcCron(): void {\r\n this.onChange(SimpleCron.state2cron(this.state));\r\n }\r\n\r\n getControlsWeekdaysElements(type: 'intervalBetween' | 'specific'): React.JSX.Element {\r\n const settings = type === 'intervalBetween' ? this.state.intervalBetween : this.state.specific;\r\n return (\r\n <div\r\n key=\"weekdays\"\r\n style={{ paddingLeft: 8, width: 'calc(100% - 8px)', maxWidth: 600 }}\r\n >\r\n <h5>{I18n.t('ra_On weekdays')}</h5>\r\n {[1, 2, 3, 4, 5, 6, 0].map(day => (\r\n <FormControlLabel\r\n key={WEEKDAYS[day]}\r\n control={\r\n <Checkbox\r\n checked={settings.weekdays.includes(day)}\r\n onChange={e => {\r\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\r\n const pos = _settings.weekdays.indexOf(day);\r\n if (e.target.checked) {\r\n if (pos === -1) {\r\n _settings.weekdays.push(day);\r\n }\r\n } else {\r\n if (pos !== -1) {\r\n _settings.weekdays.splice(pos, 1);\r\n }\r\n }\r\n _settings.weekdays.sort();\r\n if (type === 'intervalBetween') {\r\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\r\n } else {\r\n this.setState({ specific: _settings }, () => this.recalcCron());\r\n }\r\n }}\r\n value={day.toString()}\r\n />\r\n }\r\n label={I18n.t(WEEKDAYS[day])}\r\n />\r\n ))}\r\n </div>\r\n );\r\n }\r\n\r\n getControlsPeriodElements(type: 'interval' | 'intervalBetween'): React.JSX.Element {\r\n const settings = type === 'interval' ? this.state.interval : this.state.intervalBetween;\r\n\r\n if (this.state.extended) {\r\n return (\r\n <div\r\n key=\"period\"\r\n style={{ paddingLeft: 8, display: 'inline-block' }}\r\n >\r\n <h5 style={{ marginBottom: 5 }}>{I18n.t('sc_period')}</h5>\r\n <TextField\r\n variant=\"standard\"\r\n style={{ marginTop: 0, marginBottom: 0, verticalAlign: 'bottom' }}\r\n key=\"value\"\r\n label={I18n.t('sc_minutes')}\r\n value={settings.minutes}\r\n onChange={e => {\r\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\r\n _settings.minutes = parseInt(e.target.value, 10);\r\n if (_settings.minutes < 1) {\r\n _settings.minutes = 1;\r\n }\r\n if (type === 'interval') {\r\n this.setState({ interval: _settings }, () => this.recalcCron());\r\n } else {\r\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\r\n }\r\n }}\r\n slotProps={{\r\n htmlInput: {\r\n min: 1,\r\n max: 60,\r\n },\r\n inputLabel: {\r\n shrink: true,\r\n },\r\n }}\r\n type=\"number\"\r\n margin=\"normal\"\r\n />\r\n <TextField\r\n variant=\"standard\"\r\n style={{ marginTop: 0, marginBottom: 0, verticalAlign: 'bottom' }}\r\n key=\"value\"\r\n label={I18n.t('sc_hours')}\r\n value={settings.hours}\r\n onChange={e => {\r\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\r\n _settings.hours = parseInt(e.target.value, 10);\r\n if (_settings.hours < 1) {\r\n _settings.hours = 1;\r\n }\r\n if (type === 'interval') {\r\n this.setState({ interval: _settings }, () => this.recalcCron());\r\n } else {\r\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\r\n }\r\n }}\r\n slotProps={{\r\n htmlInput: {\r\n min: 1,\r\n max: 24,\r\n },\r\n inputLabel: {\r\n shrink: true,\r\n },\r\n }}\r\n type=\"number\"\r\n margin=\"normal\"\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n key=\"period\"\r\n style={{ paddingLeft: 8, display: 'inline-block' }}\r\n >\r\n <h5 style={{ marginBottom: 5 }}>{I18n.t('sc_period')}</h5>\r\n <TextField\r\n variant=\"standard\"\r\n style={{ marginTop: 0, marginBottom: 0, verticalAlign: 'bottom' }}\r\n key=\"value\"\r\n label={I18n.t('sc_every')}\r\n value={settings.period}\r\n onChange={e => {\r\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\r\n _settings.period = parseInt(e.target.value, 10);\r\n if (_settings.period < 1) {\r\n _settings.period = 1;\r\n }\r\n if (type === 'interval') {\r\n this.setState({ interval: _settings }, () => this.recalcCron());\r\n } else {\r\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\r\n }\r\n }}\r\n slotProps={{\r\n htmlInput: {\r\n min: 1,\r\n max: 60,\r\n },\r\n inputLabel: {\r\n shrink: true,\r\n },\r\n }}\r\n type=\"number\"\r\n margin=\"normal\"\r\n />\r\n <Select\r\n variant=\"standard\"\r\n style={{ verticalAlign: 'bottom' }}\r\n value={settings.unit}\r\n onChange={e => {\r\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\r\n _settings.unit = e.target.value;\r\n if (type === 'interval') {\r\n this.setState({ interval: _settings }, () => this.recalcCron());\r\n } else {\r\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\r\n }\r\n }}\r\n >\r\n <MenuItem value=\"seconds\">{I18n.t('sc_seconds')}</MenuItem>)\r\n <MenuItem value=\"minutes\">{I18n.t('sc_minutes')}</MenuItem>)\r\n </Select>\r\n </div>\r\n );\r\n }\r\n\r\n getControlsTime(type: 'once' | 'specific'): React.JSX.Element {\r\n const settings = type === 'once' ? this.state.once : this.state.specific;\r\n return (\r\n <FormControl\r\n variant=\"standard\"\r\n sx={{\r\n ...styles.formControl,\r\n '&.MuiFormControl-root': styles.formControlMarginRight,\r\n }}\r\n >\r\n <TextField\r\n variant=\"standard\"\r\n key=\"at\"\r\n label={I18n.t('sc_time')}\r\n value={settings.time}\r\n type=\"time\"\r\n sx={(theme: Theme) => ({\r\n '& input[type=\"time\"]::-webkit-calendar-picker-indicator': {\r\n filter: theme.palette.mode === 'dark' ? 'invert(80%)' : undefined,\r\n },\r\n })}\r\n onChange={e => {\r\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\r\n _settings.time = e.target.value;\r\n if (type === 'once') {\r\n this.setState({ once: _settings }, () => this.recalcCron());\r\n } else {\r\n this.setState({ specific: _settings }, () => this.recalcCron());\r\n }\r\n }}\r\n slotProps={{\r\n inputLabel: {\r\n shrink: true,\r\n },\r\n }}\r\n margin=\"normal\"\r\n />\r\n </FormControl>\r\n );\r\n }\r\n\r\n getControlsDate(): React.JSX.Element {\r\n const settings = this.state.once;\r\n\r\n if (!settings.date) {\r\n const d = new Date();\r\n settings.date = `${d.getDate()}.${padding(d.getMonth() + 1)}`;\r\n }\r\n\r\n // <InputLabel htmlFor=\"formatted-text-mask-input\">{I18n.t('sc_at')}</InputLabel>\r\n return (\r\n <FormControl\r\n variant=\"standard\"\r\n style={styles.formControl}\r\n >\r\n <TextField\r\n variant=\"standard\"\r\n key=\"date\"\r\n label={I18n.t('sc_date')}\r\n value={settings.date}\r\n type=\"text\"\r\n slotProps={{\r\n htmlInput: {\r\n style: styles.formControlPaddingTop,\r\n },\r\n inputLabel: {\r\n shrink: true,\r\n },\r\n }}\r\n onChange={e => {\r\n const _settings = JSON.parse(JSON.stringify(this.state.once));\r\n _settings.date = e.target.value;\r\n this.setState({ once: _settings }, () => this.recalcCron());\r\n }}\r\n margin=\"normal\"\r\n />\r\n </FormControl>\r\n );\r\n }\r\n\r\n getOnceElements(): React.JSX.Element {\r\n return (\r\n <div style={{ marginLeft: 8 }}>\r\n {this.getControlsTime('once')}\r\n {this.getControlsDate()}\r\n </div>\r\n );\r\n }\r\n\r\n getIntervalElements(): React.JSX.Element {\r\n return this.getControlsPeriodElements('interval');\r\n }\r\n\r\n getIntervalBetweenElements(): React.JSX.Element[] {\r\n const settings = this.state.intervalBetween;\r\n return [\r\n this.getControlsPeriodElements('intervalBetween'),\r\n <div\r\n key=\"between\"\r\n style={{ paddingLeft: 8, display: 'inline-block', verticalAlign: 'top' }}\r\n >\r\n <h5 style={{ marginBottom: 5 }}>{I18n.t('sc_hours')}</h5>\r\n <FormControl\r\n variant=\"standard\"\r\n style={styles.formControl}\r\n >\r\n <InputLabel\r\n shrink\r\n htmlFor=\"age-label-placeholder\"\r\n >\r\n {I18n.t('sc_from')}\r\n </InputLabel>\r\n <Select\r\n variant=\"standard\"\r\n style={{ width: 100 }}\r\n value={settings.timeFrom}\r\n onChange={e => {\r\n const _settings = JSON.parse(JSON.stringify(this.state.intervalBetween));\r\n _settings.timeFrom = parseInt(e.target.value as string, 10);\r\n if (_settings.timeTo === 24) {\r\n _settings.timeTo = 23;\r\n }\r\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\r\n }}\r\n >\r\n {[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23].map(\r\n hour => (\r\n <MenuItem\r\n key={`B_${hour}`}\r\n value={hour}\r\n >\r\n {`${padding(hour)}:00`}\r\n </MenuItem>\r\n ),\r\n )}\r\n </Select>\r\n </FormControl>\r\n <FormControl\r\n variant=\"standard\"\r\n style={styles.formControl}\r\n >\r\n <InputLabel\r\n shrink\r\n htmlFor=\"age-label-placeholder\"\r\n >\r\n {I18n.t('sc_to')}\r\n </InputLabel>\r\n <Select\r\n variant=\"standard\"\r\n style={{ width: 100 }}\r\n value={settings.timeTo}\r\n onChange={e => {\r\n const _settings = JSON.parse(JSON.stringify(this.state.intervalBetween));\r\n _settings.timeTo = parseInt(e.target.value as string, 10);\r\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\r\n }}\r\n >\r\n {[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23].map(\r\n hour => (\r\n <MenuItem\r\n key={`A_${hour}`}\r\n value={hour}\r\n >\r\n {`${padding(hour)}:00`}\r\n </MenuItem>\r\n ),\r\n )}\r\n {!settings.timeFrom && <MenuItem value={24}>00:00</MenuItem>}\r\n </Select>\r\n </FormControl>\r\n </div>,\r\n this.getControlsWeekdaysElements('intervalBetween'),\r\n ];\r\n }\r\n\r\n getSpecificTimeElements(): React.JSX.Element[] {\r\n return [\r\n <div\r\n key=\"time\"\r\n style={{ marginLeft: 8 }}\r\n >\r\n {this.getControlsTime('specific')}\r\n </div>,\r\n this.getControlsWeekdaysElements('specific'),\r\n ];\r\n }\r\n\r\n onModeChange(mode: 'once' | 'interval' | 'intervalBetween' | 'specific'): void {\r\n if (mode !== this.state.mode) {\r\n this.setState({ mode }, () => this.recalcCron());\r\n }\r\n }\r\n\r\n onChange(cron: string): void {\r\n if (cron !== this.state.cron) {\r\n this.setState({ cron });\r\n this.props.onChange && this.props.onChange(cron);\r\n }\r\n }\r\n\r\n render(): React.JSX.Element {\r\n return (\r\n <div style={styles.mainDiv}>\r\n <div style={{ paddingLeft: 8, width: 'calc(100% - 8px)' }}>\r\n <TextField\r\n variant=\"standard\"\r\n style={{ width: '100%' }}\r\n value={this.state.cron}\r\n disabled\r\n error={this.state.cron.includes('_')}\r\n />\r\n </div>\r\n <div style={{ paddingLeft: 8, width: 'calc(100% - 8px)', height: 60 }}>\r\n {this.state.cron.includes('_')\r\n ? I18n.t('sc_invalid_cron')\r\n : convertCronToText(this.state.cron, this.props.language || 'en')}\r\n </div>\r\n <div>\r\n <FormControl\r\n variant=\"standard\"\r\n style={{ ...styles.formControl, marginLeft: 8, marginTop: 8 }}\r\n >\r\n <InputLabel>{I18n.t('ra_Repeat')}</InputLabel>\r\n <Select\r\n variant=\"standard\"\r\n value={this.state.mode}\r\n onChange={e => this.onModeChange(e.target.value as SimpleCronType)}\r\n inputProps={{ name: 'mode', id: 'mode' }}\r\n >\r\n <MenuItem value=\"once\">{I18n.t('sc_once')}</MenuItem>\r\n <MenuItem value=\"interval\">{I18n.t('sc_interval')}</MenuItem>\r\n <MenuItem value=\"intervalBetween\">{I18n.t('sc_intervalBetween')}</MenuItem>\r\n <MenuItem value=\"specific\">{I18n.t('sc_specific')}</MenuItem>\r\n </Select>\r\n </FormControl>\r\n </div>\r\n {this.state.mode === PERIODIC.once && this.getOnceElements()}\r\n {this.state.mode === 'interval' && this.getIntervalElements()}\r\n {this.state.mode === 'intervalBetween' && this.getIntervalBetweenElements()}\r\n {this.state.mode === 'specific' && this.getSpecificTimeElements()}\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"./src/","sources":["Components/SimpleCron/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {\n InputLabel,\n MenuItem,\n Select,\n TextField,\n FormControl,\n FormControlLabel,\n Checkbox,\n type Theme,\n} from '@mui/material';\n\nimport { convertCronToText } from './cronText';\n\nimport { I18n } from '../../i18n';\n\nconst styles: Record<string, React.CSSProperties> = {\n mainDiv: {\n width: '100%',\n height: '100%',\n overflow: 'auto',\n },\n formControl: {\n margin: 0,\n minWidth: 120,\n },\n formControlMarginRight: {\n marginRight: 5,\n },\n formControlPaddingTop: {\n paddingTop: 6.2,\n },\n};\n\ntype SimpleCronType = 'once' | 'interval' | 'intervalBetween' | 'specific';\nconst PERIODIC = {\n once: 'once',\n interval: 'interval',\n intervalBetween: 'intervalBetween',\n specific: 'specific',\n};\nconst PERIODIC_TYPES = {\n seconds: 'seconds',\n minutes: 'minutes',\n // hours: 'hours',\n};\nconst WEEKDAYS = [\n 'ra_Sunday',\n 'ra_Monday',\n 'ra_Tuesday',\n 'ra_Wednesday',\n 'ra_Thursday',\n 'ra_Friday',\n 'ra_Saturday',\n 'ra_Sunday',\n];\n\nfunction padding(num: number): string {\n if (num < 10) {\n return `0${num}`;\n }\n\n return `${num}`;\n}\nconst DEFAULT_STATE = {\n mode: 'interval',\n interval: {\n period: 1,\n unit: PERIODIC_TYPES.minutes,\n },\n};\n\ninterface SimpleCronProps {\n cronExpression?: string;\n onChange: (cron: string) => void;\n language: ioBroker.Languages;\n}\n\ninterface SimpleCronState {\n extended: boolean;\n cron: string;\n mode: SimpleCronType;\n once: {\n time: string;\n date: string;\n // weekdays?: number[];\n };\n interval: {\n period: number;\n unit: string;\n minutes?: number; // if extended\n hours?: number; // if extended\n };\n intervalBetween: {\n period: number;\n unit: string;\n timeFrom: number;\n timeTo: number;\n weekdays: number[];\n minutes?: number; // if extended\n hours?: number; // if extended\n };\n specific: {\n time: string;\n weekdays: number[];\n };\n}\n\ninterface CronStructure {\n seconds: string | null;\n minutes: string;\n hours: string;\n date: string;\n months: string;\n dow: string;\n}\n\nfunction text2weekdays(text: string): number[] {\n if (text === '*') {\n return [0, 1, 2, 3, 4, 5, 6];\n }\n\n const parts = text.split(',');\n const list: number[] = [];\n parts.forEach(part => {\n const _parts = part.split('-');\n if (_parts.length === 2) {\n const start = parseInt(_parts[0], 10);\n const end = parseInt(_parts[1], 10);\n for (let day = start; day <= end; day++) {\n if (!list.includes(day === 7 ? 0 : day)) {\n list.push(day === 7 ? 0 : day);\n }\n }\n } else {\n if (part === '7') {\n part = '0';\n }\n const numPart = parseInt(part, 10);\n if (!list.includes(numPart)) {\n list.push(numPart);\n }\n }\n });\n list.sort();\n return list;\n}\n\nexport function cron2state(cron: string, force?: boolean): Partial<SimpleCronState> | null {\n cron = cron.replace(/['\"]/g, '').trim();\n const cronParts = cron.split(' ');\n let options: CronStructure;\n let state: Partial<SimpleCronState> | null = null;\n\n if (cronParts.length === 6) {\n options = {\n seconds: cronParts[0] || '*',\n minutes: cronParts[1] || '*',\n hours: cronParts[2] || '*',\n date: cronParts[3] || '*',\n months: cronParts[4] || '*',\n dow: cronParts[5] || '*',\n };\n } else {\n options = {\n seconds: null,\n minutes: cronParts[0] || '*',\n hours: cronParts[1] || '*',\n date: cronParts[2] || '*',\n months: cronParts[3] || '*',\n dow: cronParts[4] || '*',\n };\n }\n\n // * * * * *\n if (\n options.seconds === null &&\n options.minutes === '*' &&\n options.hours === '*' &&\n options.date === '*' &&\n options.months === '*' &&\n (options.dow === '*' || force)\n ) {\n state = {\n mode: 'interval',\n interval: {\n period: 1,\n unit: PERIODIC_TYPES.minutes,\n },\n };\n } // * * * * * *\n\n if (\n options.seconds === '*' &&\n options.minutes === '*' &&\n options.hours === '*' &&\n options.date === '*' &&\n options.months === '*' &&\n (options.dow === '*' || force)\n ) {\n state = {\n mode: 'interval',\n interval: {\n period: 1,\n unit: PERIODIC_TYPES.seconds,\n },\n };\n } else if (\n options.seconds === null &&\n options.minutes.includes('/') &&\n options.hours === '*' &&\n options.date === '*' &&\n options.months === '*' &&\n (options.dow === '*' || force)\n ) {\n // */n * * * *\n state = {\n mode: 'interval',\n interval: {\n period: parseInt(options.minutes.split('/')[1], 10),\n unit: PERIODIC_TYPES.minutes,\n },\n };\n } else if (\n options.seconds !== null &&\n options.seconds.includes('/') &&\n options.minutes === '*' &&\n options.hours === '*' &&\n options.date === '*' &&\n options.months === '*' &&\n (options.dow === '*' || force)\n ) {\n // */n * * * * *\n state = {\n mode: 'interval',\n interval: {\n period: parseInt(options.seconds.split('/')[1], 10),\n unit: PERIODIC_TYPES.seconds,\n },\n };\n } else if (\n options.seconds !== null &&\n options.seconds.includes('/') &&\n options.minutes === '*' &&\n options.hours.includes('-') &&\n options.date === '*' &&\n options.months === '*' &&\n (options.dow === '*' || force)\n ) {\n // */n * 0-23 * * 1-7 or */n * 0-23 * * *\n state = {\n mode: 'intervalBetween',\n intervalBetween: {\n period: parseInt(options.seconds.split('/')[1], 10),\n unit: PERIODIC_TYPES.seconds,\n timeFrom: parseInt(options.hours.split('-')[0], 10),\n timeTo: parseInt(options.hours.split('-')[1], 10),\n weekdays: text2weekdays(options.dow),\n },\n };\n } else if (\n options.seconds === null &&\n options.minutes.includes('/') &&\n options.hours.includes('-') &&\n options.date === '*' &&\n options.months === '*' &&\n (options.dow === '*' || force)\n ) {\n // */n 0-23 * * 1-7 or */n 0-23 * * *\n state = {\n mode: 'intervalBetween',\n intervalBetween: {\n period: parseInt(options.minutes.split('/')[1], 10),\n unit: PERIODIC_TYPES.minutes,\n timeFrom: parseInt(options.hours.split('-')[0], 10),\n timeTo: parseInt(options.hours.split('-')[1], 10),\n weekdays: text2weekdays(options.dow),\n },\n };\n } else if (\n options.seconds === null &&\n parseInt(options.minutes, 10).toString() === options.minutes &&\n parseInt(options.hours, 10).toString() === options.hours &&\n options.date === '*' &&\n options.months === '*' &&\n (options.dow === '*' || force)\n ) {\n // m h * * 1-7 or m h * * *\n state = {\n mode: 'specific',\n specific: {\n time: `${padding(parseInt(options.hours, 10))}:${padding(parseInt(options.minutes, 10))}`,\n weekdays: text2weekdays(options.dow),\n },\n };\n } else if (\n options.seconds === null &&\n parseInt(options.minutes, 10).toString() === options.minutes &&\n parseInt(options.hours, 10).toString() === options.hours &&\n parseInt(options.date, 10).toString() === options.date &&\n parseInt(options.months, 10).toString() === options.months &&\n (options.dow === '*' || force)\n ) {\n // m h d M *\n state = {\n mode: 'once',\n once: {\n time: `${padding(parseInt(options.hours, 10))}:${padding(parseInt(options.minutes, 10))}`,\n date: `${padding(parseInt(options.date, 10))}.${padding(parseInt(options.months, 10))}`,\n },\n };\n }\n\n return state;\n}\n\nexport class SimpleCron extends React.Component<SimpleCronProps, SimpleCronState> {\n constructor(props: SimpleCronProps) {\n super(props);\n let cron =\n typeof props.cronExpression === 'string'\n ? props.cronExpression.replace(/^[\"']/, '').replace(/[\"']\\n?$/, '')\n : '';\n if (cron[0] === '{') {\n cron = '';\n }\n const state = cron2state(cron || '* * * * *', true) || DEFAULT_STATE;\n\n this.state = {\n extended: false,\n cron: SimpleCron.state2cron(state as SimpleCronState),\n mode: 'interval',\n once: {\n time: '00:00',\n date: '',\n },\n interval: {\n period: 1,\n unit: PERIODIC_TYPES.minutes,\n },\n intervalBetween: {\n period: 1,\n unit: PERIODIC_TYPES.minutes,\n timeFrom: 0,\n timeTo: 23,\n weekdays: [0, 1, 2, 3, 4, 5, 6],\n },\n specific: {\n time: '00:00',\n weekdays: [0, 1, 2, 3, 4, 5, 6],\n },\n };\n Object.assign(this.state, state);\n\n if (this.state.cron !== props.cronExpression) {\n setTimeout(() => props.onChange && props.onChange(this.state.cron), 100);\n }\n }\n\n static periodArray2text(list: number[], max: number = 7): string {\n max = max || 7;\n if (list.length === max) {\n return '*';\n }\n const text = [];\n let start = null;\n let end = null;\n if (!list.length) {\n return '_';\n }\n for (let i = 0; i < list.length; i++) {\n if (start === null) {\n start = list[i];\n end = list[i];\n } else if (list[i - 1] + 1 === list[i]) {\n end = list[i];\n } else {\n if (start !== end) {\n text.push(`${start}-${end}`);\n } else {\n text.push(start);\n }\n start = list[i];\n end = list[i];\n }\n }\n if (start !== end) {\n text.push(`${start}-${end}`);\n } else {\n text.push(start);\n }\n return text.join(',');\n }\n\n static text2weekdays(text: string): number[] {\n return text2weekdays(text);\n }\n\n static state2cron(state: Partial<SimpleCronState>): string {\n let cron = '* * * * *';\n if (state.mode === 'interval') {\n const settings = state.interval || {\n period: 1,\n unit: PERIODIC_TYPES.minutes,\n };\n if (settings.period !== undefined && settings.period > 60) {\n settings.period = 60;\n }\n if (settings.period !== undefined && settings.period < 1) {\n settings.period = 1;\n }\n\n if (settings.minutes !== undefined && settings.minutes !== null && settings.minutes > 60) {\n settings.minutes = 60;\n }\n if (settings.minutes !== undefined && settings.minutes !== null && settings.minutes < 1) {\n settings.minutes = 1;\n }\n\n if (settings.hours !== undefined && settings.hours !== null && settings.hours > 24) {\n settings.hours = 24;\n }\n if (settings.hours !== undefined && settings.hours !== null && settings.hours < 1) {\n settings.hours = 1;\n }\n\n if (state.extended) {\n cron = `${settings.minutes !== undefined && settings.minutes !== null && settings.minutes > 1 ? `*/${settings.minutes}` : '*'} ${settings.hours !== undefined && settings.hours !== null && settings.hours > 1 ? `*/${settings.hours}` : '*'} * * *`;\n } else {\n switch (settings.unit) {\n case PERIODIC_TYPES.seconds:\n cron = `${settings.period > 1 ? `*/${settings.period}` : '*'} * * * * *`;\n break;\n case PERIODIC_TYPES.minutes:\n cron = `${settings.period > 1 ? `*/${settings.period}` : '*'} * * * *`;\n break;\n default:\n break;\n }\n }\n } else if (state.mode === 'intervalBetween') {\n const settings = state.intervalBetween || {\n period: 1,\n unit: PERIODIC_TYPES.minutes,\n timeFrom: 0,\n timeTo: 24,\n weekdays: [0, 1, 2, 3, 4, 5, 6],\n };\n let hours;\n settings.timeFrom = settings.timeFrom || 0;\n settings.timeTo = settings.timeTo === undefined ? 24 : settings.timeTo;\n if (settings.timeFrom !== 0 && settings.timeTo === 24) {\n settings.timeTo = 23;\n }\n if (settings.timeFrom === 0 && settings.timeTo === 24) {\n hours = '*';\n } else {\n hours = settings.timeFrom !== settings.timeTo ? `${settings.timeFrom}-${settings.timeTo}` : '*';\n }\n if (settings.period > 60) {\n settings.period = 60;\n }\n if (settings.period < 1) {\n settings.period = 1;\n }\n settings.unit = settings.unit || PERIODIC_TYPES.minutes;\n switch (settings.unit) {\n case PERIODIC_TYPES.seconds:\n cron = `${settings.period > 1 ? `*/${settings.period}` : '*'} * ${hours} * * ${this.periodArray2text(settings.weekdays)}`;\n break;\n case PERIODIC_TYPES.minutes:\n cron = `${settings.period > 1 ? `*/${settings.period}` : '*'} ${hours} * * ${this.periodArray2text(settings.weekdays)}`;\n break;\n default:\n break;\n }\n } else if (state.mode === 'specific') {\n const settings = state.specific || {\n time: '00:00',\n weekdays: [0, 1, 2, 3, 4, 5, 6],\n };\n const parts = (settings.time || '00:00').split(':');\n let minutes = parseInt(parts[1], 10) || 0;\n if (minutes > 59) {\n minutes = 59;\n }\n if (minutes < 0) {\n minutes = 0;\n }\n let hours = parseInt(parts[0], 10) || 0;\n if (hours > 23) {\n hours = 59;\n }\n if (hours < 0) {\n hours = 0;\n }\n\n cron = `${minutes} ${hours} * * ${this.periodArray2text(settings.weekdays || [])}`;\n } else if (state.mode === 'once') {\n const settings = state.once || {\n time: '00:00',\n date: '',\n };\n if (!settings.date) {\n settings.date = `${new Date().getDate()}.${padding(new Date().getMonth() + 1)}`;\n }\n const parts = (settings.time || '00:00').split(':');\n const partsDate = settings.date.split('.');\n let minutes = parseInt(parts[1], 10) || 0;\n if (minutes > 59) {\n minutes = 59;\n }\n if (minutes < 0) {\n minutes = 0;\n }\n let hours = parseInt(parts[0], 10) || 0;\n if (hours > 23) {\n hours = 59;\n }\n if (hours < 0) {\n hours = 0;\n }\n let date = parseInt(partsDate[0], 10) || 1;\n if (date > 31) {\n date = 31;\n }\n if (date < 1) {\n hours = 1;\n }\n let month = parseInt(partsDate[1], 10) || 1;\n if (month > 12) {\n month = 12;\n }\n if (month < 1) {\n month = 1;\n }\n\n cron = `${minutes} ${hours} ${date} ${month} *`;\n }\n return cron;\n }\n\n recalcCron(): void {\n this.onChange(SimpleCron.state2cron(this.state));\n }\n\n getControlsWeekdaysElements(type: 'intervalBetween' | 'specific'): React.JSX.Element {\n const settings = type === 'intervalBetween' ? this.state.intervalBetween : this.state.specific;\n return (\n <div\n key=\"weekdays\"\n style={{ paddingLeft: 8, width: 'calc(100% - 8px)', maxWidth: 600 }}\n >\n <h5>{I18n.t('ra_On weekdays')}</h5>\n {[1, 2, 3, 4, 5, 6, 0].map(day => (\n <FormControlLabel\n key={WEEKDAYS[day]}\n control={\n <Checkbox\n checked={settings.weekdays.includes(day)}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\n const pos = _settings.weekdays.indexOf(day);\n if (e.target.checked) {\n if (pos === -1) {\n _settings.weekdays.push(day);\n }\n } else {\n if (pos !== -1) {\n _settings.weekdays.splice(pos, 1);\n }\n }\n _settings.weekdays.sort();\n if (type === 'intervalBetween') {\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\n } else {\n this.setState({ specific: _settings }, () => this.recalcCron());\n }\n }}\n value={day.toString()}\n />\n }\n label={I18n.t(WEEKDAYS[day])}\n />\n ))}\n </div>\n );\n }\n\n getControlsPeriodElements(type: 'interval' | 'intervalBetween'): React.JSX.Element {\n const settings = type === 'interval' ? this.state.interval : this.state.intervalBetween;\n\n if (this.state.extended) {\n return (\n <div\n key=\"period\"\n style={{ paddingLeft: 8, display: 'inline-block' }}\n >\n <h5 style={{ marginBottom: 5 }}>{I18n.t('sc_period')}</h5>\n <TextField\n variant=\"standard\"\n style={{ marginTop: 0, marginBottom: 0, verticalAlign: 'bottom' }}\n key=\"value\"\n label={I18n.t('sc_minutes')}\n value={settings.minutes}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\n _settings.minutes = parseInt(e.target.value, 10);\n if (_settings.minutes < 1) {\n _settings.minutes = 1;\n }\n if (type === 'interval') {\n this.setState({ interval: _settings }, () => this.recalcCron());\n } else {\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\n }\n }}\n slotProps={{\n htmlInput: {\n min: 1,\n max: 60,\n },\n inputLabel: {\n shrink: true,\n },\n }}\n type=\"number\"\n margin=\"normal\"\n />\n <TextField\n variant=\"standard\"\n style={{ marginTop: 0, marginBottom: 0, verticalAlign: 'bottom' }}\n key=\"value\"\n label={I18n.t('sc_hours')}\n value={settings.hours}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\n _settings.hours = parseInt(e.target.value, 10);\n if (_settings.hours < 1) {\n _settings.hours = 1;\n }\n if (type === 'interval') {\n this.setState({ interval: _settings }, () => this.recalcCron());\n } else {\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\n }\n }}\n slotProps={{\n htmlInput: {\n min: 1,\n max: 24,\n },\n inputLabel: {\n shrink: true,\n },\n }}\n type=\"number\"\n margin=\"normal\"\n />\n </div>\n );\n }\n\n return (\n <div\n key=\"period\"\n style={{ paddingLeft: 8, display: 'inline-block' }}\n >\n <h5 style={{ marginBottom: 5 }}>{I18n.t('sc_period')}</h5>\n <TextField\n variant=\"standard\"\n style={{ marginTop: 0, marginBottom: 0, verticalAlign: 'bottom' }}\n key=\"value\"\n label={I18n.t('sc_every')}\n value={settings.period}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\n _settings.period = parseInt(e.target.value, 10);\n if (_settings.period < 1) {\n _settings.period = 1;\n }\n if (type === 'interval') {\n this.setState({ interval: _settings }, () => this.recalcCron());\n } else {\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\n }\n }}\n slotProps={{\n htmlInput: {\n min: 1,\n max: 60,\n },\n inputLabel: {\n shrink: true,\n },\n }}\n type=\"number\"\n margin=\"normal\"\n />\n <Select\n variant=\"standard\"\n style={{ verticalAlign: 'bottom' }}\n value={settings.unit}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\n _settings.unit = e.target.value;\n if (type === 'interval') {\n this.setState({ interval: _settings }, () => this.recalcCron());\n } else {\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\n }\n }}\n >\n <MenuItem value=\"seconds\">{I18n.t('sc_seconds')}</MenuItem>)\n <MenuItem value=\"minutes\">{I18n.t('sc_minutes')}</MenuItem>)\n </Select>\n </div>\n );\n }\n\n getControlsTime(type: 'once' | 'specific'): React.JSX.Element {\n const settings = type === 'once' ? this.state.once : this.state.specific;\n return (\n <FormControl\n variant=\"standard\"\n sx={{\n ...styles.formControl,\n '&.MuiFormControl-root': styles.formControlMarginRight,\n }}\n >\n <TextField\n variant=\"standard\"\n key=\"at\"\n label={I18n.t('sc_time')}\n value={settings.time}\n type=\"time\"\n sx={(theme: Theme) => ({\n '& input[type=\"time\"]::-webkit-calendar-picker-indicator': {\n filter: theme.palette.mode === 'dark' ? 'invert(80%)' : undefined,\n },\n })}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\n _settings.time = e.target.value;\n if (type === 'once') {\n this.setState({ once: _settings }, () => this.recalcCron());\n } else {\n this.setState({ specific: _settings }, () => this.recalcCron());\n }\n }}\n slotProps={{\n inputLabel: {\n shrink: true,\n },\n }}\n margin=\"normal\"\n />\n </FormControl>\n );\n }\n\n getControlsDate(): React.JSX.Element {\n const settings = this.state.once;\n\n if (!settings.date) {\n const d = new Date();\n settings.date = `${d.getDate()}.${padding(d.getMonth() + 1)}`;\n }\n\n // <InputLabel htmlFor=\"formatted-text-mask-input\">{I18n.t('sc_at')}</InputLabel>\n return (\n <FormControl\n variant=\"standard\"\n style={styles.formControl}\n >\n <TextField\n variant=\"standard\"\n key=\"date\"\n label={I18n.t('sc_date')}\n value={settings.date}\n type=\"text\"\n slotProps={{\n htmlInput: {\n style: styles.formControlPaddingTop,\n },\n inputLabel: {\n shrink: true,\n },\n }}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state.once));\n _settings.date = e.target.value;\n this.setState({ once: _settings }, () => this.recalcCron());\n }}\n margin=\"normal\"\n />\n </FormControl>\n );\n }\n\n getOnceElements(): React.JSX.Element {\n return (\n <div style={{ marginLeft: 8 }}>\n {this.getControlsTime('once')}\n {this.getControlsDate()}\n </div>\n );\n }\n\n getIntervalElements(): React.JSX.Element {\n return this.getControlsPeriodElements('interval');\n }\n\n getIntervalBetweenElements(): React.JSX.Element[] {\n const settings = this.state.intervalBetween;\n return [\n this.getControlsPeriodElements('intervalBetween'),\n <div\n key=\"between\"\n style={{ paddingLeft: 8, display: 'inline-block', verticalAlign: 'top' }}\n >\n <h5 style={{ marginBottom: 5 }}>{I18n.t('sc_hours')}</h5>\n <FormControl\n variant=\"standard\"\n style={styles.formControl}\n >\n <InputLabel\n shrink\n htmlFor=\"age-label-placeholder\"\n >\n {I18n.t('sc_from')}\n </InputLabel>\n <Select\n variant=\"standard\"\n style={{ width: 100 }}\n value={settings.timeFrom}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state.intervalBetween));\n _settings.timeFrom = parseInt(e.target.value as string, 10);\n if (_settings.timeTo === 24) {\n _settings.timeTo = 23;\n }\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\n }}\n >\n {[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23].map(\n hour => (\n <MenuItem\n key={`B_${hour}`}\n value={hour}\n >\n {`${padding(hour)}:00`}\n </MenuItem>\n ),\n )}\n </Select>\n </FormControl>\n <FormControl\n variant=\"standard\"\n style={styles.formControl}\n >\n <InputLabel\n shrink\n htmlFor=\"age-label-placeholder\"\n >\n {I18n.t('sc_to')}\n </InputLabel>\n <Select\n variant=\"standard\"\n style={{ width: 100 }}\n value={settings.timeTo}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state.intervalBetween));\n _settings.timeTo = parseInt(e.target.value as string, 10);\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\n }}\n >\n {[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23].map(\n hour => (\n <MenuItem\n key={`A_${hour}`}\n value={hour}\n >\n {`${padding(hour)}:00`}\n </MenuItem>\n ),\n )}\n {!settings.timeFrom && <MenuItem value={24}>00:00</MenuItem>}\n </Select>\n </FormControl>\n </div>,\n this.getControlsWeekdaysElements('intervalBetween'),\n ];\n }\n\n getSpecificTimeElements(): React.JSX.Element[] {\n return [\n <div\n key=\"time\"\n style={{ marginLeft: 8 }}\n >\n {this.getControlsTime('specific')}\n </div>,\n this.getControlsWeekdaysElements('specific'),\n ];\n }\n\n onModeChange(mode: 'once' | 'interval' | 'intervalBetween' | 'specific'): void {\n if (mode !== this.state.mode) {\n this.setState({ mode }, () => this.recalcCron());\n }\n }\n\n onChange(cron: string): void {\n if (cron !== this.state.cron) {\n this.setState({ cron });\n this.props.onChange && this.props.onChange(cron);\n }\n }\n\n render(): React.JSX.Element {\n return (\n <div style={styles.mainDiv}>\n <div style={{ paddingLeft: 8, width: 'calc(100% - 8px)' }}>\n <TextField\n variant=\"standard\"\n style={{ width: '100%' }}\n value={this.state.cron}\n disabled\n error={this.state.cron.includes('_')}\n />\n </div>\n <div style={{ paddingLeft: 8, width: 'calc(100% - 8px)', height: 60 }}>\n {this.state.cron.includes('_')\n ? I18n.t('sc_invalid_cron')\n : convertCronToText(this.state.cron, this.props.language || 'en')}\n </div>\n <div>\n <FormControl\n variant=\"standard\"\n style={{ ...styles.formControl, marginLeft: 8, marginTop: 8 }}\n >\n <InputLabel>{I18n.t('ra_Repeat')}</InputLabel>\n <Select\n variant=\"standard\"\n value={this.state.mode}\n onChange={e => this.onModeChange(e.target.value as SimpleCronType)}\n inputProps={{ name: 'mode', id: 'mode' }}\n >\n <MenuItem value=\"once\">{I18n.t('sc_once')}</MenuItem>\n <MenuItem value=\"interval\">{I18n.t('sc_interval')}</MenuItem>\n <MenuItem value=\"intervalBetween\">{I18n.t('sc_intervalBetween')}</MenuItem>\n <MenuItem value=\"specific\">{I18n.t('sc_specific')}</MenuItem>\n </Select>\n </FormControl>\n </div>\n {this.state.mode === PERIODIC.once && this.getOnceElements()}\n {this.state.mode === 'interval' && this.getIntervalElements()}\n {this.state.mode === 'intervalBetween' && this.getIntervalBetweenElements()}\n {this.state.mode === 'specific' && this.getSpecificTimeElements()}\n </div>\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabContainer.js","sourceRoot":"./src/","sources":["Components/TabContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,MAAM,GAAwC;IAChD,IAAI,EAAE;QACF,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;KACjB;IACD,cAAc,EAAE;QACZ,QAAQ,EAAE,QAAQ;KACrB;IACD,SAAS,EAAE;QACP,MAAM,EAAE,MAAM;KACjB;CACJ,CAAC;AAiBF,MAAM,UAAU,YAAY,CAAC,KAAwB;IACjD,OAAO,CACH,oBAAC,KAAK,IACF,SAAS,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAC/D,KAAK,EAAE;YACH,GAAG,MAAM,CAAC,IAAI;YACd,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,IAAI,SAAS,CAAC;YACpC,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;SACxE,EACD,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QAExB,oBAAC,KAAK,IACF,SAAS,QACT,SAAS,EAAC,QAAQ,EAClB,IAAI,EAAC,QAAQ,EACb,EAAE,EAAE,MAAM,CAAC,SAAS,IAEnB,KAAK,CAAC,QAAQ,CACX,CACJ,CACX,CAAC;AACN,CAAC","sourcesContent":["import React from 'react';\
|
|
1
|
+
{"version":3,"file":"TabContainer.js","sourceRoot":"./src/","sources":["Components/TabContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,MAAM,GAAwC;IAChD,IAAI,EAAE;QACF,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;KACjB;IACD,cAAc,EAAE;QACZ,QAAQ,EAAE,QAAQ;KACrB;IACD,SAAS,EAAE;QACP,MAAM,EAAE,MAAM;KACjB;CACJ,CAAC;AAiBF,MAAM,UAAU,YAAY,CAAC,KAAwB;IACjD,OAAO,CACH,oBAAC,KAAK,IACF,SAAS,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAC/D,KAAK,EAAE;YACH,GAAG,MAAM,CAAC,IAAI;YACd,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,IAAI,SAAS,CAAC;YACpC,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;SACxE,EACD,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QAExB,oBAAC,KAAK,IACF,SAAS,QACT,SAAS,EAAC,QAAQ,EAClB,IAAI,EAAC,QAAQ,EACb,EAAE,EAAE,MAAM,CAAC,SAAS,IAEnB,KAAK,CAAC,QAAQ,CACX,CACJ,CACX,CAAC;AACN,CAAC","sourcesContent":["import React from 'react';\n\nimport { Grid2, Paper } from '@mui/material';\n\nconst styles: Record<string, React.CSSProperties> = {\n root: {\n width: '100%',\n height: '100%',\n },\n overflowHidden: {\n overflow: 'hidden',\n },\n container: {\n height: '100%',\n },\n};\n\ninterface TabContainerProps {\n /* The elevation of the tab container. */\n elevation?: number;\n /* Set to 'visible' show the overflow. */\n overflow?: string;\n styles?: {\n root?: React.CSSProperties;\n container?: React.CSSProperties;\n };\n onKeyDown?: (event: React.KeyboardEvent<HTMLDivElement>) => void;\n tabIndex?: number;\n /** The content of the component. */\n children: React.ReactNode;\n}\n\nexport function TabContainer(props: TabContainerProps): React.JSX.Element {\n return (\n <Paper\n elevation={!Number.isNaN(props.elevation) ? props.elevation : 1}\n style={{\n ...styles.root,\n ...(props.styles?.root || undefined),\n ...(props.overflow !== 'visible' ? styles.overflowHidden : undefined),\n }}\n onKeyDown={props.onKeyDown}\n tabIndex={props.tabIndex}\n >\n <Grid2\n container\n direction=\"column\"\n wrap=\"nowrap\"\n sx={styles.container}\n >\n {props.children}\n </Grid2>\n </Paper>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabContent.js","sourceRoot":"./src/","sources":["Components/TabContent.tsx"],"names":[],"mappings":"AAAA,uHAAuH;AACvH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,MAAM,MAAM,GAAwC;IAChD,IAAI,EAAE;QACF,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,QAAQ;KACrB;IACD,YAAY,EAAE;QACV,QAAQ,EAAE,MAAM;KACnB;CACJ,CAAC;AAWF,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC7C,OAAO,CACH,oBAAC,KAAK,IACF,EAAE,EAAE;YACA,GAAG,MAAM,CAAC,IAAI;YACd,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,SAAS,CAAC;YAC9B,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;SACnE,EACD,GAAG,EAAE,KAAK,CAAC,GAAG,IAEb,KAAK,CAAC,QAAQ,CACX,CACX,CAAC;AACN,CAAC","sourcesContent":["// please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined\
|
|
1
|
+
{"version":3,"file":"TabContent.js","sourceRoot":"./src/","sources":["Components/TabContent.tsx"],"names":[],"mappings":"AAAA,uHAAuH;AACvH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,MAAM,MAAM,GAAwC;IAChD,IAAI,EAAE;QACF,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,QAAQ;KACrB;IACD,YAAY,EAAE;QACV,QAAQ,EAAE,MAAM;KACnB;CACJ,CAAC;AAWF,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC7C,OAAO,CACH,oBAAC,KAAK,IACF,EAAE,EAAE;YACA,GAAG,MAAM,CAAC,IAAI;YACd,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,SAAS,CAAC;YAC9B,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;SACnE,EACD,GAAG,EAAE,KAAK,CAAC,GAAG,IAEb,KAAK,CAAC,QAAQ,CACX,CACX,CAAC;AACN,CAAC","sourcesContent":["// please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined\nimport React from 'react';\nimport { Grid2 } from '@mui/material';\n\nconst styles: Record<string, React.CSSProperties> = {\n root: {\n height: '100%',\n overflow: 'hidden',\n },\n overflowAuto: {\n overflow: 'auto',\n },\n};\n\ninterface TabContentProps {\n /** The content of the component. */\n children: React.JSX.Element | (React.JSX.Element | null | React.JSX.Element[])[];\n /** Overflow behavior */\n overflow?: 'auto';\n style?: React.CSSProperties;\n ref?: React.RefObject<HTMLDivElement>;\n}\n\nexport function TabContent(props: TabContentProps): React.JSX.Element {\n return (\n <Grid2\n sx={{\n ...styles.root,\n ...(props?.style || undefined),\n ...(props.overflow === 'auto' ? styles.overflowAuto : undefined),\n }}\n ref={props.ref}\n >\n {props.children}\n </Grid2>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabHeader.js","sourceRoot":"./src/","sources":["Components/TabHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAMtC,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC3C,OAAO,CACH,oBAAC,KAAK,IACF,SAAS,QACT,UAAU,EAAC,QAAQ,IAElB,KAAK,CAAC,QAAQ,CACX,CACX,CAAC;AACN,CAAC","sourcesContent":["import React from 'react';\
|
|
1
|
+
{"version":3,"file":"TabHeader.js","sourceRoot":"./src/","sources":["Components/TabHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAMtC,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC3C,OAAO,CACH,oBAAC,KAAK,IACF,SAAS,QACT,UAAU,EAAC,QAAQ,IAElB,KAAK,CAAC,QAAQ,CACX,CACX,CAAC;AACN,CAAC","sourcesContent":["import React from 'react';\n\nimport { Grid2 } from '@mui/material';\n\ninterface TabHeaderProps {\n children: React.ReactNode;\n}\n\nexport function TabHeader(props: TabHeaderProps): React.JSX.Element {\n return (\n <Grid2\n container\n alignItems=\"center\"\n >\n {props.children}\n </Grid2>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableResize.js","sourceRoot":"./src/","sources":["Components/TableResize.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Copyright 2022-2024, Denis Haev <dogafox@gmail.com>\r\n *\r\n * MIT License\r\n *\r\n */\r\nimport React, { Component } from 'react';\r\n\r\nimport { Table, Skeleton } from '@mui/material';\r\n\r\ninterface TableResizeProps {\r\n name?: string;\r\n ready?: boolean;\r\n stickyHeader?: boolean;\r\n size?: 'small' | 'medium';\r\n className?: string;\r\n sx?: Record<string, any>;\r\n style?: React.CSSProperties;\r\n initialWidths?: (number | 'auto')[];\r\n minWidths?: number[];\r\n dblTitle?: string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport class TableResize extends Component<TableResizeProps> {\r\n private readonly resizerRefTable: React.RefObject<HTMLTableElement>;\r\n\r\n private resizerActiveIndex: number | null;\r\n\r\n private resizerActiveDiv: HTMLDivElement | null;\r\n\r\n private resizerCurrentWidths: (number | 'auto')[];\r\n\r\n private widthFilled: boolean = false;\r\n\r\n private installTimeout: ReturnType<typeof setTimeout> | null = null;\r\n\r\n private resizerMin: number = 0;\r\n\r\n private resizerMinNext: number = 0;\r\n\r\n private resizerPosition: number = 0;\r\n\r\n private resizerOldWidth: number = 0;\r\n\r\n private resizerOldWidthNext: number = 0;\r\n\r\n constructor(props: TableResizeProps) {\r\n super(props);\r\n this.resizerRefTable = React.createRef();\r\n this.resizerActiveIndex = null;\r\n this.resizerActiveDiv = null;\r\n this.resizerCurrentWidths = [];\r\n }\r\n\r\n componentDidMount(): void {\r\n this.resizerInstall();\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this.resizerUninstall();\r\n }\r\n\r\n resizerInstall(): void {\r\n if (this.resizerRefTable.current && !(this.resizerRefTable.current as any)._installed) {\r\n (this.resizerRefTable.current as any)._installed = true;\r\n const ths = this.resizerRefTable.current.querySelectorAll('th');\r\n\r\n const widthsStored = ((window as any)._localStorage || window.localStorage).getItem(\r\n `App.${this.props.name || 'history'}.table`,\r\n );\r\n this.widthFilled = false;\r\n\r\n if (widthsStored) {\r\n try {\r\n this.resizerCurrentWidths = JSON.parse(widthsStored);\r\n this.widthFilled = true;\r\n } catch {\r\n // ignore\r\n }\r\n }\r\n if (this.widthFilled) {\r\n if (this.resizerCurrentWidths.length !== ths.length) {\r\n this.resizerCurrentWidths = [];\r\n this.widthFilled = false;\r\n } else {\r\n const tableWidth = this.resizerRefTable.current.offsetWidth;\r\n let storedWidth: number | null = 0;\r\n for (let w = 0; w < this.resizerCurrentWidths.length; w++) {\r\n if (window.isFinite(this.resizerCurrentWidths[w] as number)) {\r\n storedWidth += this.resizerCurrentWidths[w] as number;\r\n } else {\r\n storedWidth = null;\r\n break;\r\n }\r\n }\r\n if (storedWidth !== null && Math.abs(storedWidth - tableWidth) > 20) {\r\n this.resizerCurrentWidths = [];\r\n this.widthFilled = false;\r\n }\r\n }\r\n }\r\n\r\n for (let i = 0; i < ths.length; i++) {\r\n !this.widthFilled && this.resizerCurrentWidths.push(ths[i].offsetWidth);\r\n\r\n // last column does need a handle\r\n if (i < ths.length - 1) {\r\n const div = window.document.createElement('div');\r\n div.dataset.index = i.toString();\r\n div.onmousedown = this.resizerMouseDown;\r\n div.ondblclick = this.resizerReset;\r\n div.title = this.props.dblTitle || 'Double click to reset table layout';\r\n div.className = 'resize-handle';\r\n ths[i].appendChild(div);\r\n }\r\n }\r\n if (this.widthFilled) {\r\n this.resizerApplyWidths();\r\n }\r\n } else {\r\n this.installTimeout = setTimeout(() => {\r\n this.installTimeout = null;\r\n this.resizerInstall();\r\n }, 100);\r\n }\r\n }\r\n\r\n resizerReset = (): void => {\r\n for (let c = 0; c < this.resizerCurrentWidths.length; c++) {\r\n this.resizerCurrentWidths[c] = (this.props.initialWidths || [])[c] || 'auto';\r\n }\r\n\r\n ((window as any)._localStorage || window.localStorage).setItem(\r\n `App.${this.props.name || 'history'}.table`,\r\n JSON.stringify(this.resizerCurrentWidths),\r\n );\r\n this.resizerApplyWidths();\r\n };\r\n\r\n resizerUninstall(): void {\r\n this.installTimeout && clearTimeout(this.installTimeout);\r\n this.installTimeout = null;\r\n\r\n // resizer\r\n if (this.resizerRefTable.current && (this.resizerRefTable.current as any)._installed) {\r\n (this.resizerRefTable.current as any)._installed = false;\r\n const ths = this.resizerRefTable.current.querySelectorAll('th');\r\n for (let i = 0; i < ths.length; i++) {\r\n const div: HTMLDivElement | null = ths[i].querySelector('.resize-handle');\r\n if (div) {\r\n div.onmousedown = null;\r\n div.remove();\r\n }\r\n }\r\n }\r\n }\r\n\r\n resizerApplyWidths(): string | undefined {\r\n const gridTemplateColumns: string[] = [];\r\n if (this.resizerCurrentWidths.length) {\r\n for (let c = 0; c < this.resizerCurrentWidths.length; c++) {\r\n if (this.resizerCurrentWidths[c]) {\r\n gridTemplateColumns.push(\r\n this.resizerCurrentWidths[c] !== 'auto' ? `${this.resizerCurrentWidths[c]}px` : 'auto',\r\n );\r\n } else if (this.props.initialWidths && this.props.initialWidths[c]) {\r\n gridTemplateColumns.push(\r\n this.props.initialWidths[c] !== 'auto' ? `${this.props.initialWidths[c]}px` : 'auto',\r\n );\r\n } else {\r\n gridTemplateColumns.push('auto');\r\n }\r\n }\r\n } else if (this.props.initialWidths) {\r\n for (let c = 0; c < this.props.initialWidths.length; c++) {\r\n if (this.props.initialWidths[c]) {\r\n gridTemplateColumns.push(\r\n this.props.initialWidths[c] !== 'auto' ? `${this.props.initialWidths[c]}px` : 'auto',\r\n );\r\n } else {\r\n gridTemplateColumns.push('auto');\r\n }\r\n }\r\n }\r\n\r\n if (this.resizerRefTable.current && gridTemplateColumns.length) {\r\n this.resizerRefTable.current.style.gridTemplateColumns = gridTemplateColumns.join(' ');\r\n }\r\n\r\n return gridTemplateColumns.length ? gridTemplateColumns.join(' ') : undefined;\r\n }\r\n\r\n resizerMouseMove = (e: MouseEvent): void => {\r\n if (this.resizerActiveDiv && this.resizerActiveIndex !== null) {\r\n const width = this.resizerOldWidth + e.clientX - this.resizerPosition;\r\n const widthNext = this.resizerOldWidthNext - e.clientX + this.resizerPosition;\r\n if (\r\n (!this.resizerMin || width > this.resizerMin) &&\r\n (!this.resizerMinNext || widthNext > this.resizerMinNext)\r\n ) {\r\n this.resizerCurrentWidths[this.resizerActiveIndex] = width;\r\n this.resizerCurrentWidths[this.resizerActiveIndex + 1] = widthNext;\r\n this.resizerApplyWidths();\r\n }\r\n }\r\n };\r\n\r\n resizerMouseUp = (): void => {\r\n ((window as any)._localStorage || window.localStorage).setItem(\r\n `App.${this.props.name || 'history'}.table`,\r\n JSON.stringify(this.resizerCurrentWidths),\r\n );\r\n\r\n this.resizerActiveIndex = null;\r\n this.resizerActiveDiv = null;\r\n window.removeEventListener('mousemove', this.resizerMouseMove);\r\n window.removeEventListener('mouseup', this.resizerMouseUp);\r\n };\r\n\r\n resizerMouseDown = (e: MouseEvent): void => {\r\n if (this.resizerActiveIndex === null || this.resizerActiveIndex === undefined) {\r\n console.log(`Mouse down ${(e.target as HTMLDivElement)?.dataset.index}`);\r\n this.resizerActiveIndex = parseInt((e.target as HTMLDivElement)?.dataset.index || '0', 10);\r\n this.resizerActiveDiv = e.target as HTMLDivElement;\r\n this.resizerMin = this.props.minWidths ? this.props.minWidths[this.resizerActiveIndex] : 0;\r\n this.resizerMinNext = this.props.minWidths ? this.props.minWidths[this.resizerActiveIndex + 1] : 0;\r\n this.resizerPosition = e.clientX;\r\n let ths;\r\n if (this.resizerCurrentWidths[this.resizerActiveIndex] === 'auto') {\r\n ths = this.resizerRefTable.current?.querySelectorAll('th');\r\n if (ths) {\r\n this.resizerCurrentWidths[this.resizerActiveIndex] = ths[this.resizerActiveIndex].offsetWidth;\r\n }\r\n }\r\n if (this.resizerCurrentWidths[this.resizerActiveIndex + 1] === 'auto') {\r\n ths = ths || this.resizerRefTable.current?.querySelectorAll('th');\r\n if (ths) {\r\n this.resizerCurrentWidths[this.resizerActiveIndex + 1] =\r\n ths[this.resizerActiveIndex + 1].offsetWidth;\r\n }\r\n }\r\n\r\n this.resizerOldWidth = this.resizerCurrentWidths[this.resizerActiveIndex] as number;\r\n this.resizerOldWidthNext = this.resizerCurrentWidths[this.resizerActiveIndex + 1] as number;\r\n\r\n window.addEventListener('mousemove', this.resizerMouseMove);\r\n window.addEventListener('mouseup', this.resizerMouseUp);\r\n }\r\n };\r\n\r\n render(): React.JSX.Element {\r\n if (this.props.ready === false) {\r\n return <Skeleton />;\r\n }\r\n\r\n const style = { gridTemplateColumns: this.resizerApplyWidths() };\r\n\r\n return (\r\n <Table\r\n stickyHeader={this.props.stickyHeader}\r\n size={this.props.size || 'small'}\r\n className={this.props.className}\r\n sx={this.props.sx}\r\n ref={this.resizerRefTable}\r\n style={{ ...(this.props.style || undefined), ...style }}\r\n >\r\n {this.props.children}\r\n </Table>\r\n );\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"TableResize.js","sourceRoot":"./src/","sources":["Components/TableResize.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAgBhD,MAAM,OAAO,WAAY,SAAQ,SAA2B;IACvC,eAAe,CAAoC;IAE5D,kBAAkB,CAAgB;IAElC,gBAAgB,CAAwB;IAExC,oBAAoB,CAAsB;IAE1C,WAAW,GAAY,KAAK,CAAC;IAE7B,cAAc,GAAyC,IAAI,CAAC;IAE5D,UAAU,GAAW,CAAC,CAAC;IAEvB,cAAc,GAAW,CAAC,CAAC;IAE3B,eAAe,GAAW,CAAC,CAAC;IAE5B,eAAe,GAAW,CAAC,CAAC;IAE5B,mBAAmB,GAAW,CAAC,CAAC;IAExC,YAAY,KAAuB;QAC/B,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QACzC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;IACnC,CAAC;IAED,iBAAiB;QACb,IAAI,CAAC,cAAc,EAAE,CAAC;IAC1B,CAAC;IAED,oBAAoB;QAChB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAED,cAAc;QACV,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,IAAI,CAAE,IAAI,CAAC,eAAe,CAAC,OAAe,CAAC,UAAU,EAAE,CAAC;YACnF,IAAI,CAAC,eAAe,CAAC,OAAe,CAAC,UAAU,GAAG,IAAI,CAAC;YACxD,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAEhE,MAAM,YAAY,GAAG,CAAE,MAAc,CAAC,aAAa,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAC/E,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,QAAQ,CAC9C,CAAC;YACF,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YAEzB,IAAI,YAAY,EAAE,CAAC;gBACf,IAAI,CAAC;oBACD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;oBACrD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBAC5B,CAAC;gBAAC,MAAM,CAAC;oBACL,SAAS;gBACb,CAAC;YACL,CAAC;YACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;oBAClD,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;oBAC/B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACJ,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC;oBAC5D,IAAI,WAAW,GAAkB,CAAC,CAAC;oBACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACxD,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAW,CAAC,EAAE,CAAC;4BAC1D,WAAW,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAW,CAAC;wBAC1D,CAAC;6BAAM,CAAC;4BACJ,WAAW,GAAG,IAAI,CAAC;4BACnB,MAAM;wBACV,CAAC;oBACL,CAAC;oBACD,IAAI,WAAW,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;wBAClE,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;wBAC/B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;oBAC7B,CAAC;gBACL,CAAC;YACL,CAAC;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;gBAExE,iCAAiC;gBACjC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBACjD,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;oBACjC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC;oBACxC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;oBACnC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,oCAAoC,CAAC;oBACxE,GAAG,CAAC,SAAS,GAAG,eAAe,CAAC;oBAChC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC5B,CAAC;YACL,CAAC;YACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9B,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;gBAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1B,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,CAAC;IACL,CAAC;IAED,YAAY,GAAG,GAAS,EAAE;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxD,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;QACjF,CAAC;QAED,CAAE,MAAc,CAAC,aAAa,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAC1D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,QAAQ,EAC3C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAC5C,CAAC;QACF,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC,CAAC;IAEF,gBAAgB;QACZ,IAAI,CAAC,cAAc,IAAI,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACzD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,UAAU;QACV,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,IAAK,IAAI,CAAC,eAAe,CAAC,OAAe,CAAC,UAAU,EAAE,CAAC;YAClF,IAAI,CAAC,eAAe,CAAC,OAAe,CAAC,UAAU,GAAG,KAAK,CAAC;YACzD,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,MAAM,GAAG,GAA0B,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;gBAC1E,IAAI,GAAG,EAAE,CAAC;oBACN,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;oBACvB,GAAG,CAAC,MAAM,EAAE,CAAC;gBACjB,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,kBAAkB;QACd,MAAM,mBAAmB,GAAa,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC;YACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxD,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC/B,mBAAmB,CAAC,IAAI,CACpB,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CACzF,CAAC;gBACN,CAAC;qBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjE,mBAAmB,CAAC,IAAI,CACpB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CACvF,CAAC;gBACN,CAAC;qBAAM,CAAC;oBACJ,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrC,CAAC;YACL,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvD,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC9B,mBAAmB,CAAC,IAAI,CACpB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CACvF,CAAC;gBACN,CAAC;qBAAM,CAAC;oBACJ,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrC,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,IAAI,mBAAmB,CAAC,MAAM,EAAE,CAAC;YAC7D,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,mBAAmB,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3F,CAAC;QAED,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClF,CAAC;IAED,gBAAgB,GAAG,CAAC,CAAa,EAAQ,EAAE;QACvC,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,EAAE,CAAC;YAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;YACtE,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;YAC9E,IACI,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;gBAC7C,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,EAC3D,CAAC;gBACC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC;gBAC3D,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;gBACnE,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9B,CAAC;QACL,CAAC;IACL,CAAC,CAAC;IAEF,cAAc,GAAG,GAAS,EAAE;QACxB,CAAE,MAAc,CAAC,aAAa,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAC1D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,QAAQ,EAC3C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAC5C,CAAC;QAEF,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/D,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC/D,CAAC,CAAC;IAEF,gBAAgB,GAAG,CAAC,CAAa,EAAQ,EAAE;QACvC,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAC5E,OAAO,CAAC,GAAG,CAAC,cAAe,CAAC,CAAC,MAAyB,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YACzE,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAE,CAAC,CAAC,MAAyB,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;YAC3F,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,MAAwB,CAAC;YACnD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3F,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnG,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC;YACjC,IAAI,GAAG,CAAC;YACR,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,MAAM,EAAE,CAAC;gBAChE,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBAC3D,IAAI,GAAG,EAAE,CAAC;oBACN,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC;gBAClG,CAAC;YACL,CAAC;YACD,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;gBACpE,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBAClE,IAAI,GAAG,EAAE,CAAC;oBACN,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;wBAClD,GAAG,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC;gBACrD,CAAC;YACL,CAAC;YAED,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAW,CAAC;YACpF,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAW,CAAC;YAE5F,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC5D,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5D,CAAC;IACL,CAAC,CAAC;IAEF,MAAM;QACF,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YAC7B,OAAO,oBAAC,QAAQ,OAAG,CAAC;QACxB,CAAC;QAED,MAAM,KAAK,GAAG,EAAE,mBAAmB,EAAE,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAEjE,OAAO,CACH,oBAAC,KAAK,IACF,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EACrC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,EAChC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EACjB,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,KAAK,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC,EAAE,GAAG,KAAK,EAAE,IAEtD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAChB,CACX,CAAC;IACN,CAAC;CACJ","sourcesContent":["/**\n * Copyright 2022-2024, Denis Haev <dogafox@gmail.com>\n *\n * MIT License\n *\n */\nimport React, { Component } from 'react';\n\nimport { Table, Skeleton } from '@mui/material';\n\ninterface TableResizeProps {\n name?: string;\n ready?: boolean;\n stickyHeader?: boolean;\n size?: 'small' | 'medium';\n className?: string;\n sx?: Record<string, any>;\n style?: React.CSSProperties;\n initialWidths?: (number | 'auto')[];\n minWidths?: number[];\n dblTitle?: string;\n children?: React.ReactNode;\n}\n\nexport class TableResize extends Component<TableResizeProps> {\n private readonly resizerRefTable: React.RefObject<HTMLTableElement>;\n\n private resizerActiveIndex: number | null;\n\n private resizerActiveDiv: HTMLDivElement | null;\n\n private resizerCurrentWidths: (number | 'auto')[];\n\n private widthFilled: boolean = false;\n\n private installTimeout: ReturnType<typeof setTimeout> | null = null;\n\n private resizerMin: number = 0;\n\n private resizerMinNext: number = 0;\n\n private resizerPosition: number = 0;\n\n private resizerOldWidth: number = 0;\n\n private resizerOldWidthNext: number = 0;\n\n constructor(props: TableResizeProps) {\n super(props);\n this.resizerRefTable = React.createRef();\n this.resizerActiveIndex = null;\n this.resizerActiveDiv = null;\n this.resizerCurrentWidths = [];\n }\n\n componentDidMount(): void {\n this.resizerInstall();\n }\n\n componentWillUnmount(): void {\n this.resizerUninstall();\n }\n\n resizerInstall(): void {\n if (this.resizerRefTable.current && !(this.resizerRefTable.current as any)._installed) {\n (this.resizerRefTable.current as any)._installed = true;\n const ths = this.resizerRefTable.current.querySelectorAll('th');\n\n const widthsStored = ((window as any)._localStorage || window.localStorage).getItem(\n `App.${this.props.name || 'history'}.table`,\n );\n this.widthFilled = false;\n\n if (widthsStored) {\n try {\n this.resizerCurrentWidths = JSON.parse(widthsStored);\n this.widthFilled = true;\n } catch {\n // ignore\n }\n }\n if (this.widthFilled) {\n if (this.resizerCurrentWidths.length !== ths.length) {\n this.resizerCurrentWidths = [];\n this.widthFilled = false;\n } else {\n const tableWidth = this.resizerRefTable.current.offsetWidth;\n let storedWidth: number | null = 0;\n for (let w = 0; w < this.resizerCurrentWidths.length; w++) {\n if (window.isFinite(this.resizerCurrentWidths[w] as number)) {\n storedWidth += this.resizerCurrentWidths[w] as number;\n } else {\n storedWidth = null;\n break;\n }\n }\n if (storedWidth !== null && Math.abs(storedWidth - tableWidth) > 20) {\n this.resizerCurrentWidths = [];\n this.widthFilled = false;\n }\n }\n }\n\n for (let i = 0; i < ths.length; i++) {\n !this.widthFilled && this.resizerCurrentWidths.push(ths[i].offsetWidth);\n\n // last column does need a handle\n if (i < ths.length - 1) {\n const div = window.document.createElement('div');\n div.dataset.index = i.toString();\n div.onmousedown = this.resizerMouseDown;\n div.ondblclick = this.resizerReset;\n div.title = this.props.dblTitle || 'Double click to reset table layout';\n div.className = 'resize-handle';\n ths[i].appendChild(div);\n }\n }\n if (this.widthFilled) {\n this.resizerApplyWidths();\n }\n } else {\n this.installTimeout = setTimeout(() => {\n this.installTimeout = null;\n this.resizerInstall();\n }, 100);\n }\n }\n\n resizerReset = (): void => {\n for (let c = 0; c < this.resizerCurrentWidths.length; c++) {\n this.resizerCurrentWidths[c] = (this.props.initialWidths || [])[c] || 'auto';\n }\n\n ((window as any)._localStorage || window.localStorage).setItem(\n `App.${this.props.name || 'history'}.table`,\n JSON.stringify(this.resizerCurrentWidths),\n );\n this.resizerApplyWidths();\n };\n\n resizerUninstall(): void {\n this.installTimeout && clearTimeout(this.installTimeout);\n this.installTimeout = null;\n\n // resizer\n if (this.resizerRefTable.current && (this.resizerRefTable.current as any)._installed) {\n (this.resizerRefTable.current as any)._installed = false;\n const ths = this.resizerRefTable.current.querySelectorAll('th');\n for (let i = 0; i < ths.length; i++) {\n const div: HTMLDivElement | null = ths[i].querySelector('.resize-handle');\n if (div) {\n div.onmousedown = null;\n div.remove();\n }\n }\n }\n }\n\n resizerApplyWidths(): string | undefined {\n const gridTemplateColumns: string[] = [];\n if (this.resizerCurrentWidths.length) {\n for (let c = 0; c < this.resizerCurrentWidths.length; c++) {\n if (this.resizerCurrentWidths[c]) {\n gridTemplateColumns.push(\n this.resizerCurrentWidths[c] !== 'auto' ? `${this.resizerCurrentWidths[c]}px` : 'auto',\n );\n } else if (this.props.initialWidths && this.props.initialWidths[c]) {\n gridTemplateColumns.push(\n this.props.initialWidths[c] !== 'auto' ? `${this.props.initialWidths[c]}px` : 'auto',\n );\n } else {\n gridTemplateColumns.push('auto');\n }\n }\n } else if (this.props.initialWidths) {\n for (let c = 0; c < this.props.initialWidths.length; c++) {\n if (this.props.initialWidths[c]) {\n gridTemplateColumns.push(\n this.props.initialWidths[c] !== 'auto' ? `${this.props.initialWidths[c]}px` : 'auto',\n );\n } else {\n gridTemplateColumns.push('auto');\n }\n }\n }\n\n if (this.resizerRefTable.current && gridTemplateColumns.length) {\n this.resizerRefTable.current.style.gridTemplateColumns = gridTemplateColumns.join(' ');\n }\n\n return gridTemplateColumns.length ? gridTemplateColumns.join(' ') : undefined;\n }\n\n resizerMouseMove = (e: MouseEvent): void => {\n if (this.resizerActiveDiv && this.resizerActiveIndex !== null) {\n const width = this.resizerOldWidth + e.clientX - this.resizerPosition;\n const widthNext = this.resizerOldWidthNext - e.clientX + this.resizerPosition;\n if (\n (!this.resizerMin || width > this.resizerMin) &&\n (!this.resizerMinNext || widthNext > this.resizerMinNext)\n ) {\n this.resizerCurrentWidths[this.resizerActiveIndex] = width;\n this.resizerCurrentWidths[this.resizerActiveIndex + 1] = widthNext;\n this.resizerApplyWidths();\n }\n }\n };\n\n resizerMouseUp = (): void => {\n ((window as any)._localStorage || window.localStorage).setItem(\n `App.${this.props.name || 'history'}.table`,\n JSON.stringify(this.resizerCurrentWidths),\n );\n\n this.resizerActiveIndex = null;\n this.resizerActiveDiv = null;\n window.removeEventListener('mousemove', this.resizerMouseMove);\n window.removeEventListener('mouseup', this.resizerMouseUp);\n };\n\n resizerMouseDown = (e: MouseEvent): void => {\n if (this.resizerActiveIndex === null || this.resizerActiveIndex === undefined) {\n console.log(`Mouse down ${(e.target as HTMLDivElement)?.dataset.index}`);\n this.resizerActiveIndex = parseInt((e.target as HTMLDivElement)?.dataset.index || '0', 10);\n this.resizerActiveDiv = e.target as HTMLDivElement;\n this.resizerMin = this.props.minWidths ? this.props.minWidths[this.resizerActiveIndex] : 0;\n this.resizerMinNext = this.props.minWidths ? this.props.minWidths[this.resizerActiveIndex + 1] : 0;\n this.resizerPosition = e.clientX;\n let ths;\n if (this.resizerCurrentWidths[this.resizerActiveIndex] === 'auto') {\n ths = this.resizerRefTable.current?.querySelectorAll('th');\n if (ths) {\n this.resizerCurrentWidths[this.resizerActiveIndex] = ths[this.resizerActiveIndex].offsetWidth;\n }\n }\n if (this.resizerCurrentWidths[this.resizerActiveIndex + 1] === 'auto') {\n ths = ths || this.resizerRefTable.current?.querySelectorAll('th');\n if (ths) {\n this.resizerCurrentWidths[this.resizerActiveIndex + 1] =\n ths[this.resizerActiveIndex + 1].offsetWidth;\n }\n }\n\n this.resizerOldWidth = this.resizerCurrentWidths[this.resizerActiveIndex] as number;\n this.resizerOldWidthNext = this.resizerCurrentWidths[this.resizerActiveIndex + 1] as number;\n\n window.addEventListener('mousemove', this.resizerMouseMove);\n window.addEventListener('mouseup', this.resizerMouseUp);\n }\n };\n\n render(): React.JSX.Element {\n if (this.props.ready === false) {\n return <Skeleton />;\n }\n\n const style = { gridTemplateColumns: this.resizerApplyWidths() };\n\n return (\n <Table\n stickyHeader={this.props.stickyHeader}\n size={this.props.size || 'small'}\n className={this.props.className}\n sx={this.props.sx}\n ref={this.resizerRefTable}\n style={{ ...(this.props.style || undefined), ...style }}\n >\n {this.props.children}\n </Table>\n );\n }\n}\n"]}
|