@deviceinsight/ng-ui-basic-components 7.21.0 → 7.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -40,17 +40,17 @@ npm run storybook # dev server on http://localhost:6006
40
40
 
41
41
  Available scripts:
42
42
 
43
- | Script | Description |
44
- | ------------------------- | ---------------------------------------------------------------------------- |
45
- | `npm run build:library` | Cleans `dist`, bundles with Vite and emits types via `tsconfig.types.json` |
46
- | `npm run watch` | Builds once, then rebuilds and runs `yalc push` on every successful compile |
47
- | `npm run clean` | Removes `dist` |
48
- | `npm run storybook` | Starts Storybook on port 6006 |
49
- | `npm run build-storybook` | Builds the static Storybook |
50
- | `npm run typecheck` | `tsc --noEmit` |
51
- | `npm run lint` | Lints with oxlint and checks formatting with Prettier |
52
- | `npm run prettier` | Formats sources, `package.json` and the Storybook config |
53
- | `npm run scan` | Vulnerability scan via `audit-ci` using `scan-config.json5` |
43
+ | Script | Description |
44
+ | ------------------------- | --------------------------------------------------------------------------- |
45
+ | `npm run build:library` | Cleans `dist`, bundles with Vite and emits types via `tsconfig.types.json` |
46
+ | `npm run watch` | Builds once, then rebuilds and runs `yalc push` on every successful compile |
47
+ | `npm run clean` | Removes `dist` |
48
+ | `npm run storybook` | Starts Storybook on port 6006 |
49
+ | `npm run build-storybook` | Builds the static Storybook |
50
+ | `npm run typecheck` | `tsc --noEmit` |
51
+ | `npm run lint` | Lints with oxlint and checks formatting with Prettier |
52
+ | `npm run prettier` | Formats sources, `package.json` and the Storybook config |
53
+ | `npm run scan` | Vulnerability scan via `audit-ci` using `scan-config.json5` |
54
54
 
55
55
  There are no unit tests in this project; components are exercised via Storybook
56
56
  stories (`*.stories.tsx`).
@@ -82,13 +82,11 @@ Use `npm run watch` to keep pushing changes to the linked consumers while develo
82
82
 
83
83
  # CI
84
84
 
85
- `.gitlab-ci.yml` installs the dependencies and then runs `scan`, `lint` and
86
- `typecheck` on every branch except `main`. The `publish` job runs for `develop` and
87
- for tags: `-SNAPSHOT` versions are published to the internal Nexus registry under the
88
- `next` tag, releases go to the public npm registry. A release older than the currently
89
- published `latest` is published under a `hotfix-<major>.<minor>` tag so that `latest`
90
- is not moved backwards. `publish_alpha` is a manual job that publishes an alpha
91
- prerelease of the `VERSION` variable to the internal registry under `next`.
85
+ `.gitlab-ci.yml` installs the dependencies and then runs `lint` and `typecheck` on every branch except `main`.
86
+ The `audit` job (`npm run scan`) only runs on `develop`, `feature/*` and `renovate/*` branches, so hotfixes and tags are not blocked by it.
87
+ The `publish` job runs for `develop` and for tags: `-SNAPSHOT` versions are published to the internal Nexus registry under the `next` tag, releases go to the public npm registry.
88
+ A release older than the currently published `latest` is published under a `hotfix-<major>.<minor>` tag so that `latest` is not moved backwards.
89
+ `publish_alpha` is a manual job that publishes an alpha prerelease of the `VERSION` variable to the internal registry under `next`.
92
90
 
93
91
  # Releasing the library using git flow
94
92
 
@@ -104,75 +102,55 @@ After git flow is installed, the repo needs to be initialized. Run `git flow ini
104
102
  question with the default (press Enter/Return). The script verifies that the branches
105
103
  are named `main` and `develop`.
106
104
 
107
- ## Building a release
105
+ ## Releasing the develop branch
108
106
 
109
- To build a release of this library, execute `./release.sh`, which consists of the following steps:
107
+ Run the release script from the repository root:
110
108
 
111
- ### Before the release: Check for vulnerabilities
112
-
113
- Vulnerabilities can occur at any time.
114
- To be sure, the pipeline for the branches and the tags created
115
- in the release process will not fail, the script runs the checks locally before building the
116
- release:
117
-
118
- ```
119
- npm install
120
- npm run scan
109
+ ```shell
110
+ ./release.sh
121
111
  ```
122
112
 
123
- If `package-lock.json` changed during the install, the script commits it.
124
-
125
- ### Building the release
126
-
127
- 1. Switch to develop branch and make sure both main and develop are current:
128
-
129
- `git checkout develop && git pull && git fetch origin main:main`
130
-
131
- The script also aborts if the workarea is dirty or if `develop` has unpushed commits.
132
-
133
- 2. Get the upcoming release from `package.json` and start the release:
134
-
135
- `git flow release start $RELEASE_VERSION`, e.g. `git flow release start 1.2.0`.
136
-
137
- 3. Edit the version in `package.json`.
138
-
139
- 3.1. Edit the version in `package.json`, remove the `-SNAPSHOT`.
140
-
141
- 3.2. Commit `package.json`. Commit message should be `Release $RELEASE_VERSION`, e.g. `Release 1.2.0`.
142
-
143
- 4. Finish the release:
144
-
145
- `git flow release finish`
146
-
147
- This will merge the release branch into the `main` branch and create a tag. It will also merge the release branch into the `develop` branch.
148
-
149
- After this you should be on the `develop` branch.
150
-
151
- 4.1 A merge conflict might occur in `package.json` for the `version`, when main is merged into the develop branch:
152
-
153
- Resolve it by taking the version of the `develop` branch. Then run `npm install` to resolve conflicts in `package-lock.version`.
154
-
155
- Run `git status` to see if there are more conflicts. If there are, resolve them and `git add` the fixed files.
156
-
157
- If there are no more conflicts, run `git add package*` and `git commit`.
158
-
159
- 5. Start a new snapshot version:
160
-
161
- 5.1.
162
- Edit the version in `package.json`,
163
- increment the minor version (e.g., from `1.1.0` to `1.2.0`) and add the `-SNAPSHOT` again,
164
- so that the version is e.g. `1.2.0-SNAPSHOT`.
165
-
166
- 5.2. Run `npm install`.
167
-
168
- 5.3. Commit `package.json` and `package-lock.json`. Commit message should be `Starting $NEW_SNAPSHOT_VERSION`, e.g. `Starting 1.2.0`.
169
-
170
- 6. Push the branches and the tag:
171
-
172
- On branch `develop`:
173
-
174
- `git push`
175
- `git checkout main`
176
- `git push`
177
- `git push --tags`
178
- `git checkout develop`
113
+ Before running it, make sure the workarea is clean and all commits on `develop` are pushed; otherwise the script aborts.
114
+ It releases the current version from `package.json` (without `-SNAPSHOT`) and afterwards starts the next minor snapshot version.
115
+
116
+ ## Building a hotfix for a specific version of this library
117
+
118
+ When building a hotfix in `ng-ui-scale`, first check which version of this library is used on the `main` branch of `ng-ui-scale`, e.g. with `git show origin/main:package.json | grep ng-ui-basic-components`.
119
+ Then build the hotfix on top of exactly that version, so that no unrelated changes from newer releases end up in the `ng-ui-scale` hotfix.
120
+ Do not use `release.sh` or `git flow hotfix` for this: `git flow hotfix finish` merges into `main`, which already contains the newer release.
121
+
122
+ Example: `ng-ui-scale` uses 7.19.0 while 7.21.0 is already released (the version on `main` of this library):
123
+
124
+ 1. Create the branch `hotfix/7.19.1` from the tag 7.19.0:
125
+ ```shell
126
+ git fetch --tags
127
+ git checkout -b hotfix/7.19.1 7.19.0
128
+ ```
129
+ 2. Set the version in `package.json` and `package-lock.json` to 7.19.1:
130
+ ```shell
131
+ npm version 7.19.1 --no-git-tag-version
132
+ ```
133
+ Copy the `rules` of the `audit` job in `.gitlab-ci.yml` from `develop`, so that the vulnerability audit does not block the hotfix pipeline: all tags up to 7.21.0 still run it on every branch except `main`.
134
+ 3. Implement or cherry-pick the changes needed for the hotfix, either directly on the hotfix branch or in a feature branch that is merged into it.
135
+ 4. Add a `## Version 7.19.1` entry to `CHANGELOG.md` describing the changes in the hotfix.
136
+ 5. Run `npm run build:library`, `npm run typecheck` and `npm run lint` to verify there are no errors.
137
+ 6. Commit the changes.
138
+ 7. Tag the hotfix commit and push the tag:
139
+ ```shell
140
+ git tag -a 7.19.1 -m "Hotfix 7.19.1"
141
+ git push origin 7.19.1
142
+ ```
143
+ The `publish` CI job builds the tag and publishes it to npm.
144
+ Because 7.19.1 is older than the `latest` version, it is published under the dist-tag `hotfix-7.19` and `latest` stays at 7.21.0.
145
+ 8. Merge the hotfix branch into `develop` and push `develop`:
146
+ ```shell
147
+ git checkout develop
148
+ git pull
149
+ git merge --no-ff hotfix/7.19.1
150
+ git push
151
+ ```
152
+ `package.json` and `package-lock.json` will conflict; keep the `-SNAPSHOT` version of `develop` and run `npm install` before committing the merge.
153
+ In `CHANGELOG.md`, keep the 7.19.1 entry between the entries for 7.20.0 and 7.19.0.
154
+ Do not merge the hotfix branch into `main`.
155
+ 9. Delete the local hotfix branch: `git branch -d hotfix/7.19.1`.
156
+ 10. Update `ng-ui-scale` on its hotfix branch to 7.19.1.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../src/components/accordion/Accordion.tsx","../src/components/accordionComponents/AccordionItem.tsx","../src/components/button/Button.tsx","../src/components/button/ButtonRow.tsx","../src/hooks/useOutsideClick.ts","../src/components/modalComponents/ModalWindow.tsx","../src/components/modal/Modal.tsx","../src/components/modalComponents/ModalContainer.tsx","../src/components/spinner/Spinner.tsx","../src/components/spinner/SpinnerContainer.tsx","../src/components/input/Checkbox.tsx","../src/components/confirm/utils.ts","../src/components/confirm/Confirm.tsx","../src/components/confirm/ConfirmProvider.tsx","../src/components/confirm/useConfirm.ts","../src/components/confirm/withConfirm.tsx","../src/assets/svg/icon_add.svg","../src/assets/svg/icon_cross.svg","../src/assets/svg/icon_edit.svg","../src/assets/svg/icon_gear.svg","../src/assets/svg/icon_duplicate.svg","../src/assets/svg/icon_download.svg","../src/assets/svg/icon_lupe.svg","../src/assets/svg/icon_key.svg","../src/assets/svg/icon_reload.svg","../src/assets/svg/icon_fullscreen.svg","../src/assets/svg/icon_help_light.svg","../src/assets/svg/icon_star.svg","../src/components/icon/Icon.tsx","../src/components/label/Label.tsx","../src/components/popup/Popup.tsx","../src/components/bubble/Bubble.tsx","../src/components/tooltip/Tooltip.tsx","../src/components/tabs/Tabs.tsx","../src/components/input/SearchBox.tsx"],"sourcesContent":["import * as React from 'react';\n\nexport type Props = {\n\t/** Should contain Array of &lt;AccordionItems/&gt; elements */\n\tchildren?: Array<React.ReactNode>;\n\n\t/** (Optional) sets additional class for styling purposes */\n\taccordionClass?: string;\n\n\t/** Function to be called if active &lt;AccordionItems/&gt; gets changed */\n\tonPageChange?: (newPageNumber: number) => any;\n\n\t/** (Optional) Index of the &lt;AccordionItem/&gt; which should be opened on initial render cycle */\n\tdefaultOpenPageIndex?: number;\n};\n\ntype State = {\n\tcurrentPageIndex: number;\n};\n\n/**\n * Accordions are best used to display homogenous information, e.g. multiple configurations which would take up a lot of space otherwise.\n */\nexport default class Accordion extends React.Component<Props, State> {\n\tstate: State = {\n\t\tcurrentPageIndex: -1\n\t};\n\n\tcomponentDidMount() {\n\t\tconst {defaultOpenPageIndex} = this.props;\n\n\t\tif (defaultOpenPageIndex !== null && defaultOpenPageIndex !== undefined) {\n\t\t\tthis.handleAccordionToggle(defaultOpenPageIndex);\n\t\t}\n\t}\n\n\thandleAccordionToggle: (index: number) => void = (index: number) => {\n\t\tconst {onPageChange} = this.props;\n\t\tconst newPageIndex = this.state.currentPageIndex !== index ? index : -1;\n\t\tthis.setState({\n\t\t\tcurrentPageIndex: newPageIndex\n\t\t});\n\n\t\tif (onPageChange) {\n\t\t\tonPageChange(newPageIndex);\n\t\t}\n\t};\n\n\trender() {\n\t\tconst {children, accordionClass} = this.props;\n\t\tconst {currentPageIndex} = this.state;\n\t\treturn (\n\t\t\t<div className={accordionClass ? `di accordion ${accordionClass}` : 'di accordion'}>\n\t\t\t\t{children &&\n\t\t\t\t\tchildren.map((child: any, index) =>\n\t\t\t\t\t\tchild ? (\n\t\t\t\t\t\t\t<child.type\n\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\t\tisOpen={currentPageIndex === index}\n\t\t\t\t\t\t\t\ttoggle={() => this.handleAccordionToggle(index)}\n\t\t\t\t\t\t\t\t{...child.props}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null\n\t\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import * as React from 'react';\n\ntype Info = {\n\ttext: string;\n\tcssStyle: Record<string, any>;\n};\n\nexport type Props = {\n\t/** (Optional) Displays either numeric- or text-based badge in front of the &lt;AccordionItems/&gt; */\n\tbadge?: (number | string | React.ReactNode) | null | undefined;\n\n\t/** @ignore */\n\tchildren?: React.ReactNode;\n\n\t/** (Optional) Displays additional information, which is visible in \"closed\" state */\n\tinfo1?: Info;\n\n\t/** If true, expands &lt;AccordionItems/&gt; */\n\tisOpen?: boolean;\n\n\t/** (Optional) Sets additional classes for styling purposes */\n\titemClasses?: string;\n\n\t/** Title of &lt;AccordionItems/&gt; */\n\ttitle: string | React.ReactNode;\n\n\t/** (Optional) Tooltip of &lt;AccordionItems/&gt; */\n\ttitleTooltip?: string;\n\n\t/** Function which is called to open/close &lt;AccordionItems/&gt; */\n\ttoggle?: () => void;\n\n\t/** (Optional) Enables additional handler, e.g., for editing or deleting &lt;AccordionItems/&gt; */\n\ttools?: Array<React.ReactNode>;\n\n\t/** @ignore */\n\t'data-testid'?: string | undefined;\n};\n\nexport default class AccordionItem extends React.PureComponent<Props> {\n\trender() {\n\t\tconst {badge, children, isOpen, info1, itemClasses, title, titleTooltip, toggle, tools, ...rest} = this.props;\n\t\tconst accordionItemClasses = ['item'];\n\n\t\tif (itemClasses) accordionItemClasses.push(itemClasses);\n\t\tif (isOpen) accordionItemClasses.push('open');\n\n\t\treturn (\n\t\t\t<div className={accordionItemClasses.join(' ')}>\n\t\t\t\t<div className=\"head\">\n\t\t\t\t\t<span className=\"title\" onClick={toggle} data-testid={rest['data-testid']}>\n\t\t\t\t\t\t<h1 title={titleTooltip}>{title}</h1>\n\t\t\t\t\t\t{badge && (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName=\"di label\"\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tmargin: '0 0 0 10px',\n\t\t\t\t\t\t\t\t\tbackgroundColor: '#ddd',\n\t\t\t\t\t\t\t\t\tborderColor: 'transparent'\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{badge}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{info1 && <span style={info1.cssStyle}>{info1.text}</span>}\n\t\t\t\t\t</span>\n\t\t\t\t\t<span className=\"tools\">\n\t\t\t\t\t\t{tools &&\n\t\t\t\t\t\t\ttools.map((toolComponent, index) => (\n\t\t\t\t\t\t\t\t<span key={index} className=\"tool\">\n\t\t\t\t\t\t\t\t\t{toolComponent}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"cont\">{children}</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import React, {ComponentType} from 'react';\nimport cx from 'classnames';\nimport {withTranslation, WithTranslation} from 'react-i18next';\n\nimport {TranslationDescriptor} from '../../types/i18n';\n\nexport type Props = {\n\t/** primary style, mutually exclusive with _danger_ and _naked_ */\n\tprimary?: boolean;\n\n\t/** danger style, mutually exclusive with _primary_ and _naked_ */\n\tdanger?: boolean;\n\n\t/** render the button without border and background color, mutually exclusive with _primary_ and _danger_ */\n\tnaked?: boolean;\n\n\t/** a title tooltip */\n\ttitle?: (TranslationDescriptor | null | undefined) | string;\n\n\t/** button | submit | reset */\n\ttype?: 'button' | 'submit' | 'reset';\n\n\t/** a click handler */\n\tonClick?: (...args: Array<any>) => any;\n\n\t/** a smaller button */\n\tsmall?: boolean;\n\n\t/** disable the button */\n\tdisabled?: boolean;\n\n\t/** @ignore */\n\tchildren?: React.ReactNode;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** @ignore */\n\tstyle?: React.CSSProperties;\n\n\t/** @ignore */\n\t'data-testid'?: string;\n\n\t/** @ignore */\n\ttabIndex?: number;\n};\n\n/**\n * Buttons are used to inform the user about a potential user interaction, which then on interaction causes an action.\n * To create a standardized look and feel, different props can be passed to the Button.\n */\nfunction Button({\n\tchildren,\n\ttitle,\n\ttype,\n\tdisabled,\n\tonClick,\n\tstyle,\n\ttabIndex,\n\tt,\n\tprimary,\n\tdanger,\n\tnaked,\n\tclassName,\n\tsmall,\n\t...rest\n}: Props & WithTranslation) {\n\tlet btnTitle = title;\n\n\tif (title && typeof title !== 'string') {\n\t\tbtnTitle = t(title.id, {\n\t\t\tdefaultValue: title.defaultValue\n\t\t});\n\t}\n\n\treturn (\n\t\t<button\n\t\t\tdata-testid={rest['data-testid']}\n\t\t\ttype={type || 'button'}\n\t\t\tclassName={cx('di button', className, {small, primary, danger, link: naked})}\n\t\t\ttitle={typeof btnTitle === 'string' ? btnTitle : undefined}\n\t\t\tdisabled={disabled}\n\t\t\tonClick={onClick}\n\t\t\tstyle={style}\n\t\t\ttabIndex={tabIndex}\n\t\t>\n\t\t\t{children}\n\t\t</button>\n\t);\n}\n\nexport default withTranslation()(Button) as ComponentType<Props>;\n","import * as React from 'react';\n\nexport type Props = {\n\t/** should contain &lt;Button /&gt; elements */\n\tchildren: React.ReactNode;\n\n\t/** show a horizontal row above the buttons */\n\tdividing?: boolean;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** @ignore */\n\tstyle?: React.CSSProperties;\n};\n\n/**\n * ButtonRows align Buttons nicely for all relevant and/or related user actions such as saving or canceling changes.\n * To separate the ButtonRow from the content, the extra property `dividing` can be used.\n */\nconst ButtonRow = ({children, dividing, className, style}: Props) => (\n\t<div style={style} className={`di button-row ${dividing ? 'dividing' : ''} ${className || ''}`}>\n\t\t{children}\n\t</div>\n);\n\nButtonRow.defaultProps = {\n\tdividing: false\n};\n\nexport default ButtonRow;\n","import {useEffect, useRef} from 'react';\n\nconst isTouchEvent = (event: Event): event is TouchEvent => {\n\treturn !!(event as any).touches;\n};\n\nconst isInsideBoundingRect = (element: HTMLElement, event: MouseEvent | TouchEvent) => {\n\tconst rect = element.getBoundingClientRect();\n\n\tlet x, y;\n\tif (isTouchEvent(event)) {\n\t\tx = event.touches[0].pageX;\n\t\ty = event.touches[0].pageY;\n\t} else {\n\t\tx = event.pageX;\n\t\ty = event.pageY;\n\t}\n\n\treturn rect.left <= x && rect.right >= x && rect.top <= y && rect.bottom >= y;\n};\n\nconst useOutsideClick = (\n\telements: Array<HTMLElement | null>,\n\tcallback: (evt: MouseEvent | TouchEvent | undefined) => void\n) => {\n\tconst callbackRef = useRef(callback);\n\n\tuseEffect(() => {\n\t\tcallbackRef.current = callback;\n\t}, [callback]);\n\n\tuseEffect(() => {\n\t\tconst listener = (event: MouseEvent | TouchEvent) => {\n\t\t\tconst elementsNonNull = elements.filter((element) => element != null) as HTMLElement[];\n\t\t\tif (\n\t\t\t\telementsNonNull.every(\n\t\t\t\t\t(element) =>\n\t\t\t\t\t\telement !== event.target &&\n\t\t\t\t\t\t!element.contains(event.target as any) &&\n\t\t\t\t\t\t!isInsideBoundingRect(element, event)\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcallbackRef.current(event);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('mousedown', listener, true);\n\t\tdocument.addEventListener('touchstart', listener, true);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('mousedown', listener, true);\n\t\t\tdocument.removeEventListener('touchstart', listener, true);\n\t\t};\n\t}, [elements]);\n};\n\nexport default useOutsideClick;\n","import {useEffect, useRef, useState} from 'react';\nimport Draggable from 'react-draggable';\n\nimport {Props} from '../modal/Modal';\nimport useOutsideClick from '../../hooks/useOutsideClick';\n\nexport default function ModalWindow({className, width, header, content, footer, onOutsideClick}: Props) {\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst [rootElement, setRootElement] = useState<HTMLElement | null>(null);\n\n\tuseEffect(() => {\n\t\tsetRootElement(ref.current);\n\t}, []);\n\n\tuseOutsideClick([rootElement], () => {\n\t\tif (onOutsideClick) onOutsideClick();\n\t});\n\n\treturn (\n\t\t<Draggable handle=\".modal-header\" nodeRef={ref}>\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tclassName={`modal-window ${className || ''}`}\n\t\t\t\tstyle={{\n\t\t\t\t\tmaxWidth: width\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{header && <div className=\"modal-header\">{header}</div>}\n\t\t\t\t{content && <div className=\"modal-content\">{content}</div>}\n\t\t\t\t{footer && <div className=\"modal-footer\">{footer}</div>}\n\t\t\t</div>\n\t\t</Draggable>\n\t);\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport ModalWindow from '../modalComponents/ModalWindow';\n\nexport type Props = {\n\theader?: React.ReactNode;\n\tcontent?: React.ReactNode;\n\tfooter?: React.ReactNode;\n\n\t/** the CSS width setting, either a number or string */\n\twidth?: string | number;\n\tclassName?: string;\n\n\t/** callback function that is executed when the users click outside the modal */\n\tonOutsideClick?: (event?: Event) => void;\n\tonMouseDown?: (event: React.SyntheticEvent<HTMLElement>) => void;\n};\n\nexport default class Modal extends React.Component<\n\tProps,\n\t{\n\t\tclassName: string;\n\t}\n> {\n\tstatic defaultProps: {\n\t\twidth: string;\n\t} = {\n\t\twidth: '60%'\n\t};\n\tcontainer: HTMLDivElement | undefined;\n\tmodalRoot: HTMLElement | null | undefined;\n\ttimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n\tconstructor(props: Props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tclassName: 'di modal'\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.container = document.createElement('div');\n\t\tthis.modalRoot = document.getElementById('modal-root');\n\n\t\tif (this.modalRoot) {\n\t\t\tthis.modalRoot.appendChild(this.container);\n\t\t} else if (document.body) {\n\t\t\tdocument.body.appendChild(this.container);\n\t\t}\n\n\t\tif (this.props.onOutsideClick) {\n\t\t\twindow.addEventListener('keydown', this.keyEventHandler);\n\t\t}\n\n\t\t// set the show class after 10ms for animation\n\t\tthis.timeoutId = setTimeout(\n\t\t\t() =>\n\t\t\t\t// eslint-disable-next-line react/no-did-mount-set-state -- deferred via setTimeout, not a synchronous mount update\n\t\t\t\tthis.setState({\n\t\t\t\t\tclassName: `di modal show ${this.props.className || ''}`\n\t\t\t\t}),\n\t\t\t10\n\t\t);\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif (this.container) {\n\t\t\tif (this.modalRoot) {\n\t\t\t\tthis.modalRoot.removeChild(this.container);\n\t\t\t} else if (document.body) {\n\t\t\t\tdocument.body.removeChild(this.container);\n\t\t\t}\n\t\t}\n\n\t\tif (this.props.onOutsideClick) {\n\t\t\twindow.removeEventListener('keydown', this.keyEventHandler);\n\t\t}\n\n\t\tif (this.timeoutId) {\n\t\t\tclearTimeout(this.timeoutId);\n\t\t}\n\t}\n\n\tkeyEventHandler: (event: KeyboardEvent) => void = (event: KeyboardEvent) => {\n\t\tif (event.key === 'Escape' && this.props.onOutsideClick) {\n\t\t\tthis.props.onOutsideClick(event);\n\t\t}\n\t};\n\n\trender() {\n\t\tif (!this.container) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn ReactDOM.createPortal(\n\t\t\t<div className={this.state.className} onMouseDown={this.props.onMouseDown}>\n\t\t\t\t<ModalWindow {...this.props} />\n\t\t\t</div>,\n\t\t\tthis.container\n\t\t);\n\t}\n}\n","import React from 'react';\n\nexport type Props = Record<string, never>;\n\nexport default class ModalContainer extends React.PureComponent<Props> {\n\trender() {\n\t\treturn <div id=\"modal-root\" />;\n\t}\n}\n","import React from 'react';\n\nexport type Props = {\n\t/** the size of the Spinner in px */\n\tsize?: number;\n\n\t/** @ignore */\n\tcenter?: boolean;\n\n\t/** @ignore */\n\t'data-testid'?: string;\n};\n\n/**\n * Spinners usually show a loading indication.\n */\nexport default class Spinner extends React.Component<Props> {\n\tstatic defaultProps = {\n\t\tsize: 56,\n\t\tcenter: false\n\t};\n\n\trender() {\n\t\tconst {size = 56, center, ...dataAttrs} = this.props;\n\t\tlet style: React.CSSProperties = {\n\t\t\twidth: size,\n\t\t\theight: size\n\t\t};\n\n\t\tif (center) {\n\t\t\tstyle = {\n\t\t\t\t...style,\n\t\t\t\tposition: 'absolute',\n\t\t\t\ttop: '50%',\n\t\t\t\tleft: '50%',\n\t\t\t\tmarginTop: -size / 2,\n\t\t\t\tmarginLeft: -size / 2\n\t\t\t};\n\t\t}\n\n\t\treturn <div className=\"di spinner\" style={style} {...dataAttrs} />;\n\t}\n}\n","import React from 'react';\n\nimport Spinner from './Spinner';\n\nexport type Props = {\n\t/** controls the display of the Spinner */\n\tshow: boolean;\n\n\t/** the size of the Spinner in px */\n\tsize?: number;\n\n\t/** content to be rendered once the loading is done */\n\tchildren?: React.ReactNode;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** @ignore */\n\t'data-testid'?: string;\n};\n\n/**\n * SpinnerContainer wraps the entire content and displays a loading indicator until the loading is done.\n */\nexport default class SpinnerContainer extends React.Component<Props> {\n\tstatic defaultProps: {\n\t\tsize: number;\n\t} = {\n\t\tsize: 56\n\t};\n\n\trender() {\n\t\tconst {show, size, children, className} = this.props;\n\t\tconst classNames = `di spinner-wrapper ${className ? className : ''}`;\n\t\treturn (\n\t\t\t<div className={classNames}>\n\t\t\t\t<div\n\t\t\t\t\tclassName={`di spinner-container ${show ? 'visible' : ''}`}\n\t\t\t\t\tdata-testid={this.props['data-testid']}\n\t\t\t\t>\n\t\t\t\t\t<Spinner size={size} center />\n\t\t\t\t</div>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import * as React from 'react';\nimport {withTranslation, WithTranslation} from 'react-i18next';\n\nimport {TranslationDescriptor} from '../../types/i18n';\n\nexport type Props = {\n\t/** input type selector */\n\ttype?: 'checkbox' | 'radio' | 'toggle';\n\n\t/** Flag to preselect the status of the checkbox */\n\tvalue: boolean;\n\n\t/** Function, executed when toggling the checkbox */\n\tonChange: (nextStatus: boolean) => void;\n\n\t/** Optional input element tooltip */\n\ttitle?: TranslationDescriptor;\n\n\t/** Optional label for checkbox and radio button*/\n\tlabel?: TranslationDescriptor;\n\n\t/** visually indicate that the checkbox is disabled and disable onChange handler */\n\tdisabled?: boolean;\n\n\t/** Optional flag for toggle type: Render a small Toggle */\n\ttoggleSmall?: boolean;\n\n\t/** Optional flag for toggle type: Sets the slider color when the Toggle is truthy */\n\ttoggleColor?: string;\n\n\t/** @ignore */\n\t'data-testid'?: string;\n\n\t/** @ignore */\n\t'wrapper-data-testid'?: string;\n\n\t/** @ignore */\n\t'innerdiv-data-testid'?: string;\n};\n\nconst getWrapperClassName = (type: string, small: boolean) => {\n\tswitch (type) {\n\t\tcase 'checkbox':\n\t\tcase 'radio':\n\t\t\treturn 'di checkbox';\n\n\t\tcase 'toggle':\n\t\t\treturn small ? 'di toggle toggle-small' : 'di toggle';\n\n\t\tdefault:\n\t\t\tthrow Error(`type not support: ${type}`);\n\t}\n};\n\nconst getCheckboxClassName = (type: string, small: boolean) => {\n\tswitch (type) {\n\t\tcase 'checkbox':\n\t\t\treturn 'box';\n\n\t\tcase 'radio':\n\t\t\treturn 'radio';\n\n\t\tcase 'toggle':\n\t\t\treturn small ? 'switch switch-small' : 'switch';\n\n\t\tdefault:\n\t\t\tthrow Error(`type not support: ${type}`);\n\t}\n};\n\n/**\n * Checkbox for enabling user interaction can have one of multiple types which are defined via the `type` prop.\n */\nconst Checkbox = ({\n\ttype = 'checkbox',\n\tvalue,\n\tonChange,\n\ttitle,\n\tlabel,\n\tdisabled = false,\n\ttoggleSmall = false,\n\ttoggleColor = '#259b23',\n\tt,\n\t...other\n}: Props & WithTranslation) => {\n\tconst style =\n\t\ttype === 'toggle'\n\t\t\t? {\n\t\t\t\t\tbackgroundColor: value ? toggleColor : 'gray'\n\t\t\t\t}\n\t\t\t: {};\n\tconst tooltip = title\n\t\t? t(title.id, {\n\t\t\t\tdefaultValue: title.defaultValue\n\t\t\t})\n\t\t: undefined;\n\tconst labelText = label\n\t\t? t(label.id, {\n\t\t\t\tdefaultValue: label.defaultValue\n\t\t\t})\n\t\t: null;\n\treturn (\n\t\t<label\n\t\t\ttitle={tooltip}\n\t\t\tclassName={getWrapperClassName(type, toggleSmall)}\n\t\t\tdata-testid={other['wrapper-data-testid']}\n\t\t>\n\t\t\t<input\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tchecked={value}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonChange={() => onChange(!value)}\n\t\t\t\tdata-testid={other['data-testid']}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclassName={getCheckboxClassName(type, toggleSmall)}\n\t\t\t\tstyle={style}\n\t\t\t\tdata-testid={other['innerdiv-data-testid']}\n\t\t\t/>\n\t\t\t{label && <span className=\"textlabel\">{labelText}</span>}\n\t\t</label>\n\t);\n};\n\nexport default withTranslation()(Checkbox) as React.ComponentType<Props>;\n","import * as React from 'react';\n\nimport {TranslationDescriptor} from '../../types/i18n';\n\nexport function isTranslationDescriptor(\n\targ: TranslationDescriptor | string | React.ReactElement\n): arg is TranslationDescriptor {\n\tconst result =\n\t\ttypeof arg === 'object' && typeof (arg as any).id === 'string' && typeof (arg as any).defaultValue === 'string';\n\n\tif (result) {\n\t\tconsole.warn(\n\t\t\t'Please use strings instead of TranslationDescriptors to initialize the Confirm modal, because TranslationDescriptors are deprecated'\n\t\t);\n\t}\n\n\treturn result;\n}\n","import * as React from 'react';\nimport {Trans} from 'react-i18next';\n\nimport Modal from '../modal/Modal';\nimport Button from '../button/Button';\nimport {TranslationDescriptor} from '../../types/i18n';\nimport {isTranslationDescriptor} from './utils';\n\nexport type Props = {\n\ttitle: string | TranslationDescriptor;\n\tmessage: string | React.ReactElement | TranslationDescriptor;\n\n\t/** @ignore */\n\tonAccept: (...args: Array<any>) => any;\n\n\t/** @ignore */\n\tonDecline: (...args: Array<any>) => any;\n\tacceptButtonLabel?: string | TranslationDescriptor;\n\tdeclineButtonLabel?: string | TranslationDescriptor;\n\tacceptButtonStyle?: 'primary' | 'danger';\n};\n\nfunction transformTextToElement(\n\tmessage: TranslationDescriptor | string | React.ReactElement\n): React.ReactElement | string {\n\tif (isTranslationDescriptor(message)) {\n\t\treturn <Trans i18nKey={message.id}>{message.defaultValue}</Trans>;\n\t}\n\treturn message;\n}\n\n/**\n * Confirm enables the possibility to open up a dialog within a modal, requiring additional user actions.\n * This component should not be used directly, instead use `@withConfirm` to inject a promise based confirm method\n */\nexport default function Confirm({\n\ttitle,\n\tmessage,\n\tonAccept,\n\tonDecline,\n\tacceptButtonLabel,\n\tdeclineButtonLabel,\n\tacceptButtonStyle = 'primary'\n}: Props) {\n\treturn (\n\t\t<Modal\n\t\t\theader={transformTextToElement(title)}\n\t\t\tcontent={transformTextToElement(message)}\n\t\t\tfooter={\n\t\t\t\t<div>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tprimary={acceptButtonStyle === 'primary'}\n\t\t\t\t\t\tdanger={acceptButtonStyle === 'danger'}\n\t\t\t\t\t\tonClick={onAccept}\n\t\t\t\t\t>\n\t\t\t\t\t\t{acceptButtonLabel ? (\n\t\t\t\t\t\t\ttransformTextToElement(acceptButtonLabel)\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Trans i18nKey=\"form.accept\">Accept</Trans>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button onClick={onDecline}>\n\t\t\t\t\t\t{declineButtonLabel ? (\n\t\t\t\t\t\t\ttransformTextToElement(declineButtonLabel)\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Trans i18nKey=\"form.decline\">Decline</Trans>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\twidth={500}\n\t\t/>\n\t);\n}\n","import React, {createContext, useState} from 'react';\n\nimport Confirm, {Props as ConfirmProps} from './Confirm';\n\ntype ConfirmOptions = {\n\ttitle: string;\n\tmessage: string | React.ReactElement;\n\tacceptButtonLabel?: string;\n\tdeclineButtonLabel?: string;\n\tacceptButtonStyle?: 'primary' | 'danger';\n};\n\nexport const ConfirmContext = createContext<{\n\tconfirm: (options: ConfirmOptions) => Promise<boolean>;\n}>({\n\tconfirm: () => Promise.reject(new Error('ConfirmProvider is missing!'))\n});\n\nfunction ConfirmProvider({children}: React.PropsWithChildren<Record<string, unknown>>) {\n\tconst [visible, setVisible] = useState<boolean>(false);\n\tconst [confirmProps, setConfirmProps] = useState<ConfirmProps>({\n\t\ttitle: '',\n\t\tmessage: '',\n\t\tonAccept: () => {},\n\t\tonDecline: () => {}\n\t});\n\n\tasync function confirm(options: ConfirmOptions) {\n\t\treturn new Promise<boolean>((resolve) => {\n\t\t\tsetVisible(true);\n\t\t\tsetConfirmProps({\n\t\t\t\t...options,\n\t\t\t\tonAccept: () => {\n\t\t\t\t\tsetVisible(false);\n\t\t\t\t\tresolve(true);\n\t\t\t\t},\n\t\t\t\tonDecline: () => {\n\t\t\t\t\tsetVisible(false);\n\t\t\t\t\tresolve(false);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\treturn (\n\t\t<ConfirmContext.Provider value={{confirm}}>\n\t\t\t{children}\n\t\t\t{visible && <Confirm {...confirmProps} />}\n\t\t</ConfirmContext.Provider>\n\t);\n}\n\nexport default ConfirmProvider;\n","import {useContext} from 'react';\n\nimport {ConfirmContext} from './ConfirmProvider';\n\nexport default function useConfirm() {\n\tconst context = useContext(ConfirmContext);\n\tif (!context) {\n\t\tthrow new Error('ConfirmProvider is missing');\n\t}\n\tconst {confirm} = context;\n\treturn confirm;\n}\n","import React from 'react';\nimport {useTranslation} from 'react-i18next';\n\nimport {TranslationDescriptor} from '../../types/i18n';\nimport useConfirm from './useConfirm';\nimport ConfirmProvider from './ConfirmProvider';\nimport {isTranslationDescriptor} from './utils';\n\nexport type ConfirmProps = {\n\tconfirm: (\n\t\ttitle: string | TranslationDescriptor,\n\t\tmessage: string | TranslationDescriptor | React.ReactElement,\n\t\tacceptButtonLabel?: string | TranslationDescriptor,\n\t\tdeclineButtonLabel?: string | TranslationDescriptor,\n\t\tresolveWithConfirmation?: boolean,\n\t\tacceptButtonStyle?: 'primary' | 'danger'\n\t) => Promise<void | boolean>;\n};\n\nexport default function withConfirm<P extends object>(WrappedComponent: React.ComponentType<P & ConfirmProps>) {\n\tfunction WithConfirm(props: P) {\n\t\tconst confirm = useConfirm();\n\t\tconst {t} = useTranslation();\n\n\t\tfunction trans(arg: TranslationDescriptor | string) {\n\t\t\tif (isTranslationDescriptor(arg)) {\n\t\t\t\treturn t(arg.id, {defaultValue: arg.defaultValue});\n\t\t\t}\n\t\t\treturn arg;\n\t\t}\n\n\t\tasync function deprecatedConfirm(\n\t\t\ttitle: string | TranslationDescriptor,\n\t\t\tmessage: string | TranslationDescriptor | React.ReactElement,\n\t\t\tacceptButtonLabel?: string | TranslationDescriptor,\n\t\t\tdeclineButtonLabel?: string | TranslationDescriptor,\n\t\t\tresolveWithConfirmation?: boolean,\n\t\t\tacceptButtonStyle?: 'primary' | 'danger'\n\t\t): Promise<boolean | void> {\n\t\t\tconst accepted = await confirm({\n\t\t\t\ttitle: trans(title),\n\t\t\t\tmessage: isTranslationDescriptor(message) ? trans(message) : message,\n\t\t\t\tacceptButtonLabel: acceptButtonLabel ? trans(acceptButtonLabel) : undefined,\n\t\t\t\tdeclineButtonLabel: declineButtonLabel ? trans(declineButtonLabel) : undefined,\n\t\t\t\tacceptButtonStyle\n\t\t\t});\n\n\t\t\tif (resolveWithConfirmation) {\n\t\t\t\treturn accepted;\n\t\t\t} else if (!accepted) {\n\t\t\t\treturn new Promise(() => {});\n\t\t\t}\n\t\t}\n\n\t\treturn <WrappedComponent {...props} confirm={deprecatedConfirm} />;\n\t}\n\n\treturn function WithConfirmWrapper(props: P) {\n\t\treturn (\n\t\t\t<ConfirmProvider>\n\t\t\t\t<WithConfirm {...props} />\n\t\t\t</ConfirmProvider>\n\t\t);\n\t};\n}\n","export default \"data:image/svg+xml,%3csvg%20id='icon-add_24_sga'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cpolygon%20id='plus'%20points='20%2010%2014%2010%2014%204%2010%204%2010%2010%204%2010%204%2014%2010%2014%2010%2020%2014%2020%2014%2014%2020%2014%2020%2010'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='icon-cross_24_sga'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cpolygon%20id='icon-cross_24'%20points='20%206.28%2017.87%204%2012%209.78%206.13%204%204%206.28%209.78%2011.97%204%2017.66%206.13%2019.93%2012%2014.15%2017.87%2019.93%2020%2017.66%2014.22%2011.97%2020%206.28'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='icon-edit-24_sga'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cg%20id='stift'%3e%3cpath%20d='M7.35,12.65a.5.5,0,0,0,0,.7l3.3,3.3a.5.5,0,0,0,.7,0l8.3-8.3A1.4,1.4,0,0,0,20,7.5v-1a1.4,1.4,0,0,0-.35-.85l-1.3-1.3A1.4,1.4,0,0,0,17.5,4h-1a1.4,1.4,0,0,0-.85.35Z'/%3e%3c/g%3e%3cpath%20d='M5.9,14.49c.06-.27.26-.33.45-.14l3.3,3.3c.19.19.13.39-.14.45l-4,.8a.3.3,0,0,1-.39-.39Z'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='icon-gear-24_sga'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cg%20id='icon-gear-24_sga-2'%20data-name='icon-gear-24_sga'%3e%3cpath%20d='M22.82,14.06A1.25,1.25,0,0,0,24,13,7.66,7.66,0,0,0,24,12,7.66,7.66,0,0,0,24,11a1.25,1.25,0,0,0-1.13-1l-1.09,0A1.49,1.49,0,0,1,20.44,9c-.15-.47-.44-2-.07-2.37l.74-.81a1.16,1.16,0,0,0,0-1.5L19.7,2.87a1.16,1.16,0,0,0-1.5,0l-.81.74a1.5,1.5,0,0,1-1.54.27c-.44-.23-1.72-1.08-1.74-1.63l0-1.09A1.25,1.25,0,0,0,13,.05a7.66,7.66,0,0,0-1,0,7.66,7.66,0,0,0-1,.05,1.25,1.25,0,0,0-1,1.13l0,1.09A1.52,1.52,0,0,1,9,3.56c-.47.15-2,.44-2.37.07L5.8,2.89a1.16,1.16,0,0,0-1.5,0L2.86,4.3a1.18,1.18,0,0,0,0,1.5l.74.81A1.5,1.5,0,0,1,3.9,8.15c-.23.44-1.08,1.72-1.63,1.74l-1.09,0A1.25,1.25,0,0,0,.05,11a7.66,7.66,0,0,0,0,1,7.66,7.66,0,0,0,.05,1,1.25,1.25,0,0,0,1.13,1l1.09,0A1.47,1.47,0,0,1,3.55,15c.16.48.45,2,.08,2.37l-.74.81a1.16,1.16,0,0,0,0,1.5L4.3,21.13a1.16,1.16,0,0,0,1.5,0l.81-.74a1.5,1.5,0,0,1,1.54-.27c.44.23,1.72,1.08,1.75,1.63l0,1.09A1.25,1.25,0,0,0,11,24,7.66,7.66,0,0,0,12,24,7.66,7.66,0,0,0,13,24a1.25,1.25,0,0,0,1-1.13l0-1.09A1.49,1.49,0,0,1,15,20.44c.47-.15,2-.44,2.37-.07l.81.74a1.16,1.16,0,0,0,1.5,0l1.43-1.43a1.16,1.16,0,0,0,0-1.5l-.74-.81a1.5,1.5,0,0,1-.27-1.54c.23-.44,1.08-1.72,1.63-1.74ZM12,15.5A3.5,3.5,0,1,1,15.5,12,3.5,3.5,0,0,1,12,15.5Z'/%3e%3c/g%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cg%3e%3cpath%20d='M22.1,4.91a3,3,0,0,0-3-3H6.44a2.4,2.4,0,0,1,1.34-.4h12.6A2.12,2.12,0,0,1,22.5,3.62V17.26a1.42,1.42,0,0,1-.4,1Z'/%3e%3cpath%20d='M20.38,1H7.78A3,3,0,0,0,5.26,2.4H19.09A2.51,2.51,0,0,1,21.6,4.91V19.12A1.94,1.94,0,0,0,23,17.26V3.62A2.62,2.62,0,0,0,20.38,1Z'/%3e%3c/g%3e%3cg%3e%3cpath%20d='M4,21.5A1.5,1.5,0,0,1,2.5,20V5.8A1.5,1.5,0,0,1,4,4.3H18.2a1.5,1.5,0,0,1,1.5,1.5V20a1.5,1.5,0,0,1-1.5,1.5ZM9.5,18a.5.5,0,0,0,.5.5h2a.5.5,0,0,0,.5-.5V14.5H16a.5.5,0,0,0,.5-.5V12a.5.5,0,0,0-.5-.5H12.5V8a.5.5,0,0,0-.5-.5H10a.5.5,0,0,0-.5.5v3.5H6a.5.5,0,0,0-.5.5v2a.5.5,0,0,0,.5.5H9.5Z'/%3e%3cpath%20d='M18.2,4.8a1,1,0,0,1,1,1V20a1,1,0,0,1-1,1H4a1,1,0,0,1-1-1V5.8a1,1,0,0,1,1-1H18.2M9,11H6a1,1,0,0,0-1,1v2a1,1,0,0,0,1,1H9v3a1,1,0,0,0,1,1h2a1,1,0,0,0,1-1V15h3a1,1,0,0,0,1-1V12a1,1,0,0,0-1-1H13V8a1,1,0,0,0-1-1H10A1,1,0,0,0,9,8v3m9.2-7.2H4a2,2,0,0,0-2,2V20a2,2,0,0,0,2,2H18.2a2,2,0,0,0,2-2V5.8a2,2,0,0,0-2-2ZM6,14V12h4V8h2v4h4v2H12v4H10V14Z'/%3e%3c/g%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%3e%3cpolygon%20points='7.92%2012%202.84%207%2013%207%207.92%2012'/%3e%3crect%20x='5'%20y='2'%20width='6'%20height='5'/%3e%3crect%20x='2'%20y='14'%20width='12'%20height='1'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%3e%3cdefs%3e%3cstyle%3e%20.cls-1%20{%20fill:%20%23fff;%20}%20%3c/style%3e%3c/defs%3e%3cg%3e%3ccircle%20class='cls-1'%20cx='5.5'%20cy='5.5'%20r='4.5'/%3e%3cpath%20d='M5.5,2A3.5,3.5,0,1,1,2,5.5,3.5,3.5,0,0,1,5.5,2m0-1A4.5,4.5,0,1,0,10,5.5,4.49,4.49,0,0,0,5.5,1Z'/%3e%3c/g%3e%3crect%20x='6.79'%20y='10.04'%20width='7.74'%20height='2.16'%20transform='translate(10.98%20-4.28)%20rotate(45)'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20data-name='icon_key'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2027.02%2027'%3e%3cpath%20d='M35.07,16.5a8.52,8.52,0,0,0-7.69,12L17.2,38.8a2.46,2.46,0,0,0,0,3.46,2.41,2.41,0,0,0,3.42,0l1.69-1.7,2.91,2.94L31,37.63l-2.92-3,2.44-2.46a8.31,8.31,0,0,0,4.51,1.33,8.53,8.53,0,0,0,0-17Zm0,3.91A4.62,4.62,0,1,1,30.5,25,4.6,4.6,0,0,1,35.07,20.41Z'%20transform='translate(-16.49%20-16.5)'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cg%20id='Pfeilende'%3e%3cpath%20d='M24,10H15l9-8.93Z'/%3e%3c/g%3e%3cpath%20d='M18.45,18.78A9.33,9.33,0,0,1,2.62,14.86,9.8,9.8,0,0,1,8.89,2.69,9.42,9.42,0,0,1,20.72,9.14H23A11.72,11.72,0,0,0,11.68,0,11.74,11.74,0,0,0,.34,9.14,12,12,0,0,0,8.89,23.65a11.43,11.43,0,0,0,11.16-3.31Z'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20data-name='icon_fullscreen_sga'%20xmlns='http://www.w3.org/2000/svg'%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%3e%3cpolygon%20id='ecke'%20points='2%2014%202%2010%200%2010%200%2016%206%2016%206%2014%202%2014'/%3e%3cpolygon%20id='ecke-2'%20data-name='ecke'%20points='2%202%206%202%206%200%200%200%200%206%202%206%202%202'/%3e%3cpolygon%20id='ecke-3'%20data-name='ecke'%20points='14%2014%2010%2014%2010%2016%2016%2016%2016%2010%2014%2010%2014%2014'/%3e%3cpolygon%20id='ecke-4'%20data-name='ecke'%20points='10%200%2010%202%2014%202%2014%206%2016%206%2016%200%2010%200'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='Icon_help'%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%3e%3cpath%20id='icon_help-2'%20data-name='icon_help'%20d='M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm1,16H11V15h2Zm1.7-6.26a4.85,4.85,0,0,1-.49.81l-1,1.37a1.36,1.36,0,0,0-.18.34,1,1,0,0,0-.07.38L13,14H11l.1-.49a2,2,0,0,1,.13-.77,3.18,3.18,0,0,1,.4-.69l1-1.33a3.21,3.21,0,0,0,.29-.46,1.19,1.19,0,0,0,.11-.47,1.17,1.17,0,0,0-.3-.82,1.07,1.07,0,0,0-.83-.33A1,1,0,0,0,11.1,9a1.25,1.25,0,0,0-.28.83H9a2.94,2.94,0,0,1,.23-1.17,2.45,2.45,0,0,1,.63-.88,2.9,2.9,0,0,1,.93-.55A3.13,3.13,0,0,1,11.94,7a3.31,3.31,0,0,1,1.13.19,2.82,2.82,0,0,1,.94.54,2.62,2.62,0,0,1,.65.88A3,3,0,0,1,14.9,9.8,2.16,2.16,0,0,1,14.7,10.74Z'%20style='opacity:%200.2'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20id='icon_star_16'%20xmlns='http://www.w3.org/2000/svg'%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%3e%3cpath%20id='star'%20d='M8,0l2.45,4.97,5.55,.76-4.04,3.83,.99,5.44-4.94-2.61-4.94,2.61,.99-5.44L0,5.73l5.55-.76L8,0Z'/%3e%3c/svg%3e\"","import iconAdd from '../../assets/svg/icon_add.svg';\nimport iconDel from '../../assets/svg/icon_cross.svg';\nimport iconEdit from '../../assets/svg/icon_edit.svg';\nimport iconConfig from '../../assets/svg/icon_gear.svg';\nimport iconDuplicate from '../../assets/svg/icon_duplicate.svg';\nimport iconDownload from '../../assets/svg/icon_download.svg';\nimport iconSearch from '../../assets/svg/icon_lupe.svg';\nimport iconIconKey from '../../assets/svg/icon_key.svg';\nimport iconSync from '../../assets/svg/icon_reload.svg';\nimport iconFullscreen from '../../assets/svg/icon_fullscreen.svg';\nimport iconDocumentation from '../../assets/svg/icon_help_light.svg';\nimport iconStar from '../../assets/svg/icon_star.svg';\n\nexport type Props = {\n\tadd?: boolean;\n\tdel?: boolean;\n\tedit?: boolean;\n\tconfig?: boolean;\n\tduplicate?: boolean;\n\tsearch?: boolean;\n\tdownload?: boolean;\n\tsync?: boolean;\n\tfullscreen?: boolean;\n\tstar?: boolean;\n\n\t/** key is reserved in React */\n\ticonKey?: boolean;\n\tdocumentation?: boolean;\n\n\t/** renders a larger version of the icon (24x24) */\n\tlarge?: boolean;\n\n\t/** inverts the colors of the icon for display on dark background */\n\tinverted?: boolean;\n\n\t/** @ignore */\n\tclassName?: string;\n};\n\nfunction getSrc(props: Props) {\n\tconst {add, del, edit, config, duplicate, search, download, sync, fullscreen, iconKey, documentation, star} = props;\n\n\tif (add) {\n\t\treturn iconAdd;\n\t} else if (del) {\n\t\treturn iconDel;\n\t} else if (edit) {\n\t\treturn iconEdit;\n\t} else if (config) {\n\t\treturn iconConfig;\n\t} else if (duplicate) {\n\t\treturn iconDuplicate;\n\t} else if (search) {\n\t\treturn iconSearch;\n\t} else if (download) {\n\t\treturn iconDownload;\n\t} else if (sync) {\n\t\treturn iconSync;\n\t} else if (fullscreen) {\n\t\treturn iconFullscreen;\n\t} else if (iconKey) {\n\t\treturn iconIconKey;\n\t} else if (documentation) {\n\t\treturn iconDocumentation;\n\t} else if (star) {\n\t\treturn iconStar;\n\t} else {\n\t\tthrow Error('getSrc: no icon type specified');\n\t}\n}\n\nfunction getAlt(props: Props) {\n\tconst {add, del, edit, config, duplicate, search, download, sync, fullscreen, iconKey, documentation, star} = props;\n\n\tif (add) {\n\t\treturn 'icon add';\n\t} else if (del) {\n\t\treturn 'icon delete';\n\t} else if (edit) {\n\t\treturn 'icon edit';\n\t} else if (config) {\n\t\treturn 'icon config';\n\t} else if (duplicate) {\n\t\treturn 'icon duplicate';\n\t} else if (search) {\n\t\treturn 'icon search';\n\t} else if (download) {\n\t\treturn 'icon download';\n\t} else if (sync) {\n\t\treturn 'icon sync';\n\t} else if (fullscreen) {\n\t\treturn 'icon fullscreen';\n\t} else if (iconKey) {\n\t\treturn 'icon iconKey';\n\t} else if (documentation) {\n\t\treturn 'icon documentation';\n\t} else if (star) {\n\t\treturn 'icon star';\n\t} else {\n\t\tthrow Error('getAlt: no icon type specified');\n\t}\n}\n\nexport default function Icon(props: Props) {\n\tlet style;\n\tif (props.large) {\n\t\tstyle = {width: 24, height: 24};\n\t} else {\n\t\tstyle = {width: 16, height: 16};\n\t}\n\tif (props.inverted) {\n\t\tstyle = {...style, filter: 'invert(1)'};\n\t}\n\n\treturn <img src={getSrc(props)} className={`di icon ${props.className || ''}`} alt={getAlt(props)} style={style} />;\n}\n","import React, {MouseEventHandler, PropsWithChildren, MouseEvent} from 'react';\nimport {Trans} from 'react-i18next';\nimport cx from 'classnames';\n\nimport Icon from '../icon/Icon';\nimport {TranslationDescriptor} from '../../types/i18n';\n\nexport interface Props extends React.HTMLAttributes<HTMLSpanElement> {\n\t/** the label text, either a string or TranslationDescriptor */\n\ttext?: string | TranslationDescriptor;\n\n\t/** a smaller label */\n\tsmall?: boolean;\n\n\t/** a larger label */\n\tlarge?: boolean;\n\n\tonClick?: MouseEventHandler<HTMLSpanElement>;\n\n\t/** adds a delete button that triggers this callback function */\n\tonDelete?: (...args: Array<any>) => any;\n\n\tclassName?: string;\n\n\t/** @ignore */\n\t'data-testid'?: string;\n\n\t/** @ignore */\n\t'delete-button-data-testid'?: string;\n}\n\n/**\n * Label enables an easy way for marking or tagging elements.\n */\nexport default function Label({\n\ttext,\n\tsmall = false,\n\tlarge = false,\n\tonDelete,\n\tclassName,\n\tonClick,\n\tchildren,\n\t...dataTestIds\n}: PropsWithChildren<Props>) {\n\tfunction handleDelete(event: MouseEvent<HTMLSpanElement>) {\n\t\tevent.stopPropagation();\n\t\tif (onDelete) {\n\t\t\tonDelete();\n\t\t}\n\t}\n\n\treturn (\n\t\t<span\n\t\t\tonClick={onClick}\n\t\t\tclassName={cx('di label', className, {large, small, removable: onDelete, clickable: !!onClick})}\n\t\t\tdata-testid={dataTestIds['data-testid']}\n\t\t>\n\t\t\t{typeof text === 'string' ? text : text && <Trans i18nKey={text.id}>{text.defaultValue}</Trans>}\n\t\t\t<>{children}</>\n\t\t\t{onDelete && (\n\t\t\t\t<span data-testid={dataTestIds['delete-button-data-testid']} className=\"remove\" onClick={handleDelete}>\n\t\t\t\t\t<Icon del inverted />\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</span>\n\t);\n}\n","import {\n\tarrow,\n\tautoUpdate,\n\tflip,\n\tFloatingPortal,\n\toffset,\n\tsafePolygon,\n\tshift,\n\tsize,\n\tuseClick,\n\tuseDismiss,\n\tuseFloating,\n\tuseFocus,\n\tuseHover,\n\tuseInteractions\n} from '@floating-ui/react';\nimport cx from 'classnames';\nimport React, {useEffect, useRef} from 'react';\n\nexport type Placement =\n\t| 'top'\n\t| 'bottom'\n\t| 'left'\n\t| 'right'\n\t| 'top-start'\n\t| 'top-end'\n\t| 'bottom-start'\n\t| 'bottom-end'\n\t| 'right-start'\n\t| 'right-end'\n\t| 'left-start'\n\t| 'left-end';\n\nexport type Props = {\n\t/** Element to toggle the Popup */\n\thandler: React.ReactNode;\n\n\t/** Content to be displayed */\n\tchildren: React.ReactNode;\n\n\t/** If true, displays the Popup's content */\n\topen: boolean;\n\n\t/** Function, executed when the Popup gets closed */\n\tonOpenChange: (open: boolean) => void;\n\n\t/** (Optional) if set, sets the direction in which the content should be displayed */\n\tplacement?: Placement;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** (Optional) If set to true, the content is hidden via styles, but still exists in the DOM tree */\n\tpreventDestroyContentOnHide?: boolean;\n\n\t/** (Optional) Class name of the handler wrapping element */\n\thandlerWrapperClassName?: string;\n\n\t/** (Optional) Interaction mode to open the popup */\n\tmode?: Array<'click' | 'hover' | 'focus'>;\n\n\t/** (Optional) Disables the Popup */\n\tdisabled?: boolean;\n};\n\n// Margin from the edge of the viewport\nconst MARGIN = 16;\n\n/**\n * Popup displays content within a small modal.\n * Its usage is highly flexible and used in several other components.\n */\nexport default function Popup({\n\tplacement = 'bottom',\n\tmode = ['click'],\n\tdisabled,\n\thandler,\n\thandlerWrapperClassName,\n\tpreventDestroyContentOnHide,\n\topen,\n\tonOpenChange,\n\tclassName,\n\tchildren\n}: Props) {\n\tconst arrowRef = useRef<HTMLDivElement>(null);\n\n\tconst {\n\t\telements,\n\t\tupdate,\n\t\trefs,\n\t\tfloatingStyles,\n\t\tcontext,\n\t\tmiddlewareData,\n\t\tplacement: computedPlacement\n\t} = useFloating({\n\t\tplacement,\n\t\topen,\n\t\tonOpenChange,\n\t\twhileElementsMounted: !preventDestroyContentOnHide ? autoUpdate : undefined,\n\t\tmiddleware: [\n\t\t\toffset({\n\t\t\t\tmainAxis: 12\n\t\t\t}),\n\t\t\tflip({\n\t\t\t\tpadding: MARGIN,\n\t\t\t\tboundary: 'clippingAncestors',\n\t\t\t\taltBoundary: true\n\t\t\t}),\n\t\t\tshift({\n\t\t\t\tpadding: MARGIN,\n\t\t\t\tboundary: 'clippingAncestors',\n\t\t\t\taltBoundary: true\n\t\t\t}),\n\t\t\tsize({\n\t\t\t\tpadding: MARGIN,\n\t\t\t\tboundary: 'clippingAncestors',\n\t\t\t\taltBoundary: true,\n\t\t\t\tapply({availableHeight, availableWidth, elements}) {\n\t\t\t\t\tconst width = `${Math.max(0, availableWidth - MARGIN)}px`;\n\t\t\t\t\tconst height = `${Math.max(0, availableHeight - MARGIN)}px`;\n\t\t\t\t\telements.floating.style.maxWidth = width;\n\t\t\t\t\telements.floating.style.maxHeight = height;\n\t\t\t\t}\n\t\t\t}),\n\t\t\tarrow({\n\t\t\t\telement: arrowRef\n\t\t\t})\n\t\t]\n\t});\n\n\tuseEffect(() => {\n\t\tif (preventDestroyContentOnHide && open && elements.reference && elements.floating) {\n\t\t\tconst cleanup = autoUpdate(elements.reference, elements.floating, update);\n\t\t\treturn cleanup;\n\t\t}\n\t}, [elements.floating, elements.reference, open, update, preventDestroyContentOnHide]);\n\n\tconst click = useClick(context, {\n\t\tenabled: !disabled && mode.includes('click'),\n\t\tkeyboardHandlers: false // Prevent space key from being blocked in input fields (floating-ui issue #1812)\n\t});\n\tconst hover = useHover(context, {\n\t\tenabled: !disabled && mode.includes('hover'),\n\t\thandleClose: safePolygon()\n\t});\n\tconst focus = useFocus(context, {enabled: !disabled && mode.includes('focus')});\n\tconst dismiss = useDismiss(context);\n\tconst {getReferenceProps, getFloatingProps} = useInteractions([click, hover, focus, dismiss]);\n\n\treturn (\n\t\t<>\n\t\t\t<span\n\t\t\t\tstyle={{display: 'inline-block'}}\n\t\t\t\tclassName={cx('popup-handler-wrapper', handlerWrapperClassName)}\n\t\t\t\tref={refs.setReference}\n\t\t\t\t{...getReferenceProps()}\n\t\t\t>\n\t\t\t\t{handler}\n\t\t\t</span>\n\t\t\t{(open || preventDestroyContentOnHide) && (\n\t\t\t\t<FloatingPortal>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cx('di popup-wrapper', {hidden: preventDestroyContentOnHide && !open})}\n\t\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t\t\tstyle={{...floatingStyles, zIndex: 100000}}\n\t\t\t\t\t\t{...getFloatingProps()}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className={cx('di popup', computedPlacement, className)}>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={cx('popup-arrow', computedPlacement)}\n\t\t\t\t\t\t\t\tref={arrowRef}\n\t\t\t\t\t\t\t\tstyle={{left: middlewareData.arrow?.x, top: middlewareData.arrow?.y}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<div className=\"popup-content\">{children}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</FloatingPortal>\n\t\t\t)}\n\t\t</>\n\t);\n}\n","import React, {useState} from 'react';\n\nimport Popup, {Placement} from '../popup/Popup';\n\nexport type Props = {\n\t/** the Bubble content */\n\tcontent: React.ReactNode;\n\n\t/** inverts the colors */\n\tinverted?: boolean;\n\n\t/** @ignore */\n\tchildren: React.ReactNode;\n\n\t/** @ignore */\n\tstyle?: React.CSSProperties;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** hides the bubble */\n\tdisabled?: boolean;\n\n\t/** changed the direction */\n\tdirection?: Placement;\n};\n\n/**\n * Bubbles are best used to provide some additional information like short instructions or help texts, which are then going to be displayed on Mouse-Over.\n */\nexport default function Bubble({content, inverted, children, disabled, style, direction, className}: Props) {\n\tconst [open, setOpen] = useState(false);\n\treturn (\n\t\t<Popup\n\t\t\topen={open}\n\t\t\tonOpenChange={setOpen}\n\t\t\thandler={children}\n\t\t\tdisabled={disabled}\n\t\t\tmode={['hover']}\n\t\t\tplacement={direction ? direction : 'top'}\n\t\t\tclassName={`bubble ${inverted ? 'inverted' : ''} ${className ? className : ''}`}\n\t\t>\n\t\t\t<span className={`bubble-content`} style={style}>\n\t\t\t\t{content}\n\t\t\t</span>\n\t\t</Popup>\n\t);\n}\n","import React, {useState} from 'react';\n\nimport Popup, {Placement} from '../popup/Popup';\n\nexport type Props = {\n\t/** Content of the Tooltip */\n\tcontent: React.ReactNode;\n\n\t/** Enabler of the Tooltip */\n\tchildren: React.ReactNode;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** (Optional) if set, disables the &lt;Tooltip/&gt; from opening */\n\tdisabled?: boolean;\n\n\t/** (Optional) if set, opens &lt;Tooltip/&gt; in given direction, defaults to 'right' */\n\tdirection?: Placement;\n};\n\n/**\n * Tooltip is best used to display some short additional information or description\n */\nexport default function Tooltip({content, children, className, direction, disabled}: Props) {\n\tconst [open, setOpen] = useState(false);\n\n\treturn (\n\t\t<Popup\n\t\t\topen={open}\n\t\t\tdisabled={disabled}\n\t\t\tmode={['hover']}\n\t\t\tonOpenChange={setOpen}\n\t\t\thandler={children}\n\t\t\tplacement={direction ? direction : 'right'}\n\t\t\tclassName={`tooltip inverted ${className ? className : ''}`}\n\t\t>\n\t\t\t<span className=\"tooltip-content\">{content}</span>\n\t\t</Popup>\n\t);\n}\n","import * as React from 'react';\n\nimport Bubble from '../bubble/Bubble';\n\ntype Page = {\n\tname: string;\n\trenderHeading: () => React.ReactNode;\n\trenderBody?: () => React.ReactNode;\n\ttabDescription?: string;\n};\n\ntype State = {\n\tcurrentTab: string | null | undefined;\n};\n\nexport type Props = {\n\t/** Array of pages to be displayed */\n\tpages: Array<Page>;\n\n\t/** (Optional) if set, disables tab */\n\tdisabled?: boolean;\n\n\t/** (Optional) function, executed if tabs change */\n\tonChange?: (tab: string) => void;\n\n\t/** (Optional) sets the current tab */\n\tcurrentTab?: string | null | undefined;\n};\n\n/**\n * Tabs add the possibility to unite several homogeneous pages into one.\n * Unlike RouteTabs, Tabs cannot be accessed directly via the browser's history\n */\nexport default class Tabs extends React.Component<Props, State> {\n\tstate: State = {\n\t\tcurrentTab: this.props.pages.length ? this.props.pages[0].name : null\n\t};\n\n\thandleClick: (tab: string) => void = (tab: string) => {\n\t\tif (this.props.onChange) {\n\t\t\tthis.props.onChange(tab);\n\t\t} else if (typeof this.props.currentTab === 'undefined') {\n\t\t\tthis.setState({\n\t\t\t\tcurrentTab: tab\n\t\t\t});\n\t\t}\n\t};\n\n\tcurrentTabPage: () => Page | null | undefined = (): Page | null | undefined => {\n\t\tconst currentTab = typeof this.props.currentTab === 'string' ? this.props.currentTab : this.state.currentTab;\n\t\treturn this.props.pages.find(({name}) => currentTab === name);\n\t};\n\n\tisCurrentTab: (tab: string) => boolean = (tab: string) => {\n\t\tconst currentTab = typeof this.props.currentTab === 'string' ? this.props.currentTab : this.state.currentTab;\n\t\treturn currentTab === tab;\n\t};\n\n\trenderBody = () => {\n\t\tconst page = this.currentTabPage();\n\n\t\tif (page && typeof page.renderBody === 'function') {\n\t\t\treturn page.renderBody();\n\t\t}\n\n\t\treturn null;\n\t};\n\n\trender() {\n\t\tconst {pages, disabled} = this.props;\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<div className=\"di tabs\">\n\t\t\t\t\t{pages.map(({name, renderHeading, tabDescription}) =>\n\t\t\t\t\t\ttabDescription ? (\n\t\t\t\t\t\t\t<Bubble inverted key={name} content={tabDescription} className=\"bubble-tab-description\">\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tdata-testid=\"tab-button\"\n\t\t\t\t\t\t\t\t\tclassName={`item ${disabled ? 'disabled' : ''} ${\n\t\t\t\t\t\t\t\t\t\tthis.isCurrentTab(name) ? 'active' : ''\n\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\tonClick={() => !disabled && this.handleClick(name)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{renderHeading()}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</Bubble>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tdata-testid=\"tab-button\"\n\t\t\t\t\t\t\t\tkey={name}\n\t\t\t\t\t\t\t\tclassName={`item ${disabled ? 'disabled' : ''} ${\n\t\t\t\t\t\t\t\t\tthis.isCurrentTab(name) ? 'active' : ''\n\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\tonClick={() => !disabled && this.handleClick(name)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{renderHeading()}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t)\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t{this.renderBody()}\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import * as React from 'react';\nimport {withTranslation, WithTranslation} from 'react-i18next';\n\nimport '../../assets/search-box.css';\nimport {ComponentType, CSSProperties} from 'react';\n\nimport Icon from '../icon/Icon';\nimport Button from '../button/Button';\nimport {TranslationDescriptor} from '../../types/i18n';\n\nexport type Props = {\n\t/** Placeholder text for input field `(string | TranslationDescriptor)` */\n\tplaceholder: string | TranslationDescriptor;\n\n\t/** Function to call if the input changes */\n\tonChange: (value: string) => void;\n\n\t/** Function to call if the search is triggered (button press or return in search field) */\n\tonSubmit?: (value: string) => void;\n\n\t/** if true, a button is shown that clears the input */\n\tclearable?: boolean;\n\n\t/** Value that should initially be displayed in the text box */\n\tinitialValue: string | null | undefined;\n\n\t/** Wrapper styles */\n\tstyle: CSSProperties | undefined;\n};\n\ntype State = {\n\tquery: string;\n};\n\nconst ClearButton = ({\n\tonChange,\n\tinputElement,\n\tstyle\n}: {\n\tonChange: (value: string) => void;\n\tinputElement: HTMLElement | null | undefined;\n\tstyle?: React.CSSProperties;\n}) => (\n\t<Button\n\t\tnaked\n\t\tonClick={() => {\n\t\t\tonChange('');\n\n\t\t\tif (inputElement) {\n\t\t\t\tinputElement.focus();\n\t\t\t}\n\t\t}}\n\t\tstyle={style}\n\t>\n\t\t<Icon del />\n\t</Button>\n);\n\n/**\n * SearchBox is used for searching content and provides a set of `props` for different user experiences\n */\nclass SearchBox extends React.Component<Props & WithTranslation, State> {\n\tstate: State = {\n\t\tquery: this.props.initialValue || ''\n\t};\n\tinput: HTMLInputElement | null | undefined;\n\n\tprintPlaceholder(): string {\n\t\tconst {t, placeholder} = this.props;\n\n\t\tif (typeof placeholder === 'object') {\n\t\t\treturn t(placeholder.id, {\n\t\t\t\tdefaultValue: placeholder.defaultValue\n\t\t\t});\n\t\t} else {\n\t\t\treturn placeholder;\n\t\t}\n\t}\n\n\thandleChange: (value: string) => void = (value: string) => {\n\t\tconst {onChange} = this.props;\n\t\tthis.setState({\n\t\t\tquery: value\n\t\t});\n\t\tonChange(value);\n\t};\n\n\thandleKeyUp: (arg0: any) => void = ({key}) => {\n\t\tconst {onSubmit} = this.props;\n\t\tconst {query} = this.state;\n\n\t\tif (key === 'Enter' && typeof onSubmit === 'function') {\n\t\t\tonSubmit(query);\n\t\t}\n\t};\n\n\trender() {\n\t\tconst {onSubmit, style, clearable} = this.props;\n\t\tconst {query} = this.state;\n\t\treturn (\n\t\t\t<div className=\"search-box\" style={style}>\n\t\t\t\t<input\n\t\t\t\t\tref={(input) => {\n\t\t\t\t\t\tthis.input = input;\n\t\t\t\t\t}}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tvalue={query}\n\t\t\t\t\tplaceholder={this.printPlaceholder()}\n\t\t\t\t\tonKeyUp={this.handleKeyUp}\n\t\t\t\t\tonChange={({target: {value}}) => this.handleChange(value)}\n\t\t\t\t/>\n\t\t\t\t{typeof onSubmit === 'function' ? (\n\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t{query && clearable && (\n\t\t\t\t\t\t\t<ClearButton\n\t\t\t\t\t\t\t\tonChange={this.handleChange}\n\t\t\t\t\t\t\t\tinputElement={this.input}\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tright: 30\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<Button naked onClick={() => onSubmit(query)}>\n\t\t\t\t\t\t\t<Icon search />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</React.Fragment>\n\t\t\t\t) : query && clearable ? (\n\t\t\t\t\t<ClearButton onChange={this.handleChange} inputElement={this.input} />\n\t\t\t\t) : (\n\t\t\t\t\t<Button naked disabled>\n\t\t\t\t\t\t<Icon search />\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nexport default withTranslation()(SearchBox) as ComponentType<Props>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["React","React","cx","withTranslation","useRef","useRef","useState","Draggable","React","ReactDOM","React","React","React","withTranslation","Trans","Button","createContext","useState","useContext","useTranslation","iconAdd","iconDel","iconEdit","iconConfig","iconDuplicate","iconSearch","iconDownload","iconSync","iconFullscreen","iconIconKey","iconDocumentation","iconStar","cx","Trans","_Fragment","useRef","useFloating","autoUpdate","offset","flip","shift","size","arrow","useClick","useHover","safePolygon","useFocus","useDismiss","useInteractions","_Fragment","cx","FloatingPortal","useState","useState","React","Button","React","withTranslation"],"sources":["../src/components/accordion/Accordion.tsx","../src/components/accordionComponents/AccordionItem.tsx","../src/components/button/Button.tsx","../src/components/button/ButtonRow.tsx","../src/hooks/useOutsideClick.ts","../src/components/modalComponents/ModalWindow.tsx","../src/components/modal/Modal.tsx","../src/components/modalComponents/ModalContainer.tsx","../src/components/spinner/Spinner.tsx","../src/components/spinner/SpinnerContainer.tsx","../src/components/input/Checkbox.tsx","../src/components/confirm/utils.ts","../src/components/confirm/Confirm.tsx","../src/components/confirm/ConfirmProvider.tsx","../src/components/confirm/useConfirm.ts","../src/components/confirm/withConfirm.tsx","../src/assets/svg/icon_add.svg","../src/assets/svg/icon_cross.svg","../src/assets/svg/icon_edit.svg","../src/assets/svg/icon_gear.svg","../src/assets/svg/icon_duplicate.svg","../src/assets/svg/icon_download.svg","../src/assets/svg/icon_lupe.svg","../src/assets/svg/icon_key.svg","../src/assets/svg/icon_reload.svg","../src/assets/svg/icon_fullscreen.svg","../src/assets/svg/icon_help_light.svg","../src/assets/svg/icon_star.svg","../src/components/icon/Icon.tsx","../src/components/label/Label.tsx","../src/components/popup/Popup.tsx","../src/components/bubble/Bubble.tsx","../src/components/tooltip/Tooltip.tsx","../src/components/tabs/Tabs.tsx","../src/components/input/SearchBox.tsx"],"sourcesContent":["import * as React from 'react';\n\nexport type Props = {\n\t/** Should contain Array of &lt;AccordionItems/&gt; elements */\n\tchildren?: Array<React.ReactNode>;\n\n\t/** (Optional) sets additional class for styling purposes */\n\taccordionClass?: string;\n\n\t/** Function to be called if active &lt;AccordionItems/&gt; gets changed */\n\tonPageChange?: (newPageNumber: number) => any;\n\n\t/** (Optional) Index of the &lt;AccordionItem/&gt; which should be opened on initial render cycle */\n\tdefaultOpenPageIndex?: number;\n};\n\ntype State = {\n\tcurrentPageIndex: number;\n};\n\n/**\n * Accordions are best used to display homogenous information, e.g. multiple configurations which would take up a lot of space otherwise.\n */\nexport default class Accordion extends React.Component<Props, State> {\n\tstate: State = {\n\t\tcurrentPageIndex: -1\n\t};\n\n\tcomponentDidMount() {\n\t\tconst {defaultOpenPageIndex} = this.props;\n\n\t\tif (defaultOpenPageIndex !== null && defaultOpenPageIndex !== undefined) {\n\t\t\tthis.handleAccordionToggle(defaultOpenPageIndex);\n\t\t}\n\t}\n\n\thandleAccordionToggle: (index: number) => void = (index: number) => {\n\t\tconst {onPageChange} = this.props;\n\t\tconst newPageIndex = this.state.currentPageIndex !== index ? index : -1;\n\t\tthis.setState({\n\t\t\tcurrentPageIndex: newPageIndex\n\t\t});\n\n\t\tif (onPageChange) {\n\t\t\tonPageChange(newPageIndex);\n\t\t}\n\t};\n\n\trender() {\n\t\tconst {children, accordionClass} = this.props;\n\t\tconst {currentPageIndex} = this.state;\n\t\treturn (\n\t\t\t<div className={accordionClass ? `di accordion ${accordionClass}` : 'di accordion'}>\n\t\t\t\t{children &&\n\t\t\t\t\tchildren.map((child: any, index) =>\n\t\t\t\t\t\tchild ? (\n\t\t\t\t\t\t\t<child.type\n\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\t\tisOpen={currentPageIndex === index}\n\t\t\t\t\t\t\t\ttoggle={() => this.handleAccordionToggle(index)}\n\t\t\t\t\t\t\t\t{...child.props}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null\n\t\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import * as React from 'react';\n\ntype Info = {\n\ttext: string;\n\tcssStyle: Record<string, any>;\n};\n\nexport type Props = {\n\t/** (Optional) Displays either numeric- or text-based badge in front of the &lt;AccordionItems/&gt; */\n\tbadge?: (number | string | React.ReactNode) | null | undefined;\n\n\t/** @ignore */\n\tchildren?: React.ReactNode;\n\n\t/** (Optional) Displays additional information, which is visible in \"closed\" state */\n\tinfo1?: Info;\n\n\t/** If true, expands &lt;AccordionItems/&gt; */\n\tisOpen?: boolean;\n\n\t/** (Optional) Sets additional classes for styling purposes */\n\titemClasses?: string;\n\n\t/** Title of &lt;AccordionItems/&gt; */\n\ttitle: string | React.ReactNode;\n\n\t/** (Optional) Tooltip of &lt;AccordionItems/&gt; */\n\ttitleTooltip?: string;\n\n\t/** Function which is called to open/close &lt;AccordionItems/&gt; */\n\ttoggle?: () => void;\n\n\t/** (Optional) Enables additional handler, e.g., for editing or deleting &lt;AccordionItems/&gt; */\n\ttools?: Array<React.ReactNode>;\n\n\t/** @ignore */\n\t'data-testid'?: string | undefined;\n};\n\nexport default class AccordionItem extends React.PureComponent<Props> {\n\trender() {\n\t\tconst {badge, children, isOpen, info1, itemClasses, title, titleTooltip, toggle, tools, ...rest} = this.props;\n\t\tconst accordionItemClasses = ['item'];\n\n\t\tif (itemClasses) accordionItemClasses.push(itemClasses);\n\t\tif (isOpen) accordionItemClasses.push('open');\n\n\t\treturn (\n\t\t\t<div className={accordionItemClasses.join(' ')}>\n\t\t\t\t<div className=\"head\">\n\t\t\t\t\t<span className=\"title\" onClick={toggle} data-testid={rest['data-testid']}>\n\t\t\t\t\t\t<h1 title={titleTooltip}>{title}</h1>\n\t\t\t\t\t\t{badge && (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName=\"di label\"\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tmargin: '0 0 0 10px',\n\t\t\t\t\t\t\t\t\tbackgroundColor: '#ddd',\n\t\t\t\t\t\t\t\t\tborderColor: 'transparent'\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{badge}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{info1 && <span style={info1.cssStyle}>{info1.text}</span>}\n\t\t\t\t\t</span>\n\t\t\t\t\t<span className=\"tools\">\n\t\t\t\t\t\t{tools &&\n\t\t\t\t\t\t\ttools.map((toolComponent, index) => (\n\t\t\t\t\t\t\t\t<span key={index} className=\"tool\">\n\t\t\t\t\t\t\t\t\t{toolComponent}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"cont\">{children}</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import React, {ComponentType} from 'react';\nimport cx from 'classnames';\nimport {withTranslation, WithTranslation} from 'react-i18next';\n\nimport {TranslationDescriptor} from '../../types/i18n';\n\nexport type Props = {\n\t/** primary style, mutually exclusive with _danger_ and _naked_ */\n\tprimary?: boolean;\n\n\t/** danger style, mutually exclusive with _primary_ and _naked_ */\n\tdanger?: boolean;\n\n\t/** render the button without border and background color, mutually exclusive with _primary_ and _danger_ */\n\tnaked?: boolean;\n\n\t/** a title tooltip */\n\ttitle?: (TranslationDescriptor | null | undefined) | string;\n\n\t/** button | submit | reset */\n\ttype?: 'button' | 'submit' | 'reset';\n\n\t/** a click handler */\n\tonClick?: (...args: Array<any>) => any;\n\n\t/** a smaller button */\n\tsmall?: boolean;\n\n\t/** disable the button */\n\tdisabled?: boolean;\n\n\t/** @ignore */\n\tchildren?: React.ReactNode;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** @ignore */\n\tstyle?: React.CSSProperties;\n\n\t/** @ignore */\n\t'data-testid'?: string;\n\n\t/** @ignore */\n\ttabIndex?: number;\n};\n\n/**\n * Buttons are used to inform the user about a potential user interaction, which then on interaction causes an action.\n * To create a standardized look and feel, different props can be passed to the Button.\n */\nfunction Button({\n\tchildren,\n\ttitle,\n\ttype,\n\tdisabled,\n\tonClick,\n\tstyle,\n\ttabIndex,\n\tt,\n\tprimary,\n\tdanger,\n\tnaked,\n\tclassName,\n\tsmall,\n\t...rest\n}: Props & WithTranslation) {\n\tlet btnTitle = title;\n\n\tif (title && typeof title !== 'string') {\n\t\tbtnTitle = t(title.id, {\n\t\t\tdefaultValue: title.defaultValue\n\t\t});\n\t}\n\n\treturn (\n\t\t<button\n\t\t\tdata-testid={rest['data-testid']}\n\t\t\ttype={type || 'button'}\n\t\t\tclassName={cx('di button', className, {small, primary, danger, link: naked})}\n\t\t\ttitle={typeof btnTitle === 'string' ? btnTitle : undefined}\n\t\t\tdisabled={disabled}\n\t\t\tonClick={onClick}\n\t\t\tstyle={style}\n\t\t\ttabIndex={tabIndex}\n\t\t>\n\t\t\t{children}\n\t\t</button>\n\t);\n}\n\nexport default withTranslation()(Button) as ComponentType<Props>;\n","import * as React from 'react';\n\nexport type Props = {\n\t/** should contain &lt;Button /&gt; elements */\n\tchildren: React.ReactNode;\n\n\t/** show a horizontal row above the buttons */\n\tdividing?: boolean;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** @ignore */\n\tstyle?: React.CSSProperties;\n};\n\n/**\n * ButtonRows align Buttons nicely for all relevant and/or related user actions such as saving or canceling changes.\n * To separate the ButtonRow from the content, the extra property `dividing` can be used.\n */\nconst ButtonRow = ({children, dividing, className, style}: Props) => (\n\t<div style={style} className={`di button-row ${dividing ? 'dividing' : ''} ${className || ''}`}>\n\t\t{children}\n\t</div>\n);\n\nButtonRow.defaultProps = {\n\tdividing: false\n};\n\nexport default ButtonRow;\n","import {useEffect, useRef} from 'react';\n\nconst isTouchEvent = (event: Event): event is TouchEvent => {\n\treturn !!(event as any).touches;\n};\n\nconst isInsideBoundingRect = (element: HTMLElement, event: MouseEvent | TouchEvent) => {\n\tconst rect = element.getBoundingClientRect();\n\n\tlet x, y;\n\tif (isTouchEvent(event)) {\n\t\tx = event.touches[0].pageX;\n\t\ty = event.touches[0].pageY;\n\t} else {\n\t\tx = event.pageX;\n\t\ty = event.pageY;\n\t}\n\n\treturn rect.left <= x && rect.right >= x && rect.top <= y && rect.bottom >= y;\n};\n\nconst useOutsideClick = (\n\telements: Array<HTMLElement | null>,\n\tcallback: (evt: MouseEvent | TouchEvent | undefined) => void\n) => {\n\tconst callbackRef = useRef(callback);\n\n\tuseEffect(() => {\n\t\tcallbackRef.current = callback;\n\t}, [callback]);\n\n\tuseEffect(() => {\n\t\tconst listener = (event: MouseEvent | TouchEvent) => {\n\t\t\tconst elementsNonNull = elements.filter((element) => element != null) as HTMLElement[];\n\t\t\tif (\n\t\t\t\telementsNonNull.every(\n\t\t\t\t\t(element) =>\n\t\t\t\t\t\telement !== event.target &&\n\t\t\t\t\t\t!element.contains(event.target as any) &&\n\t\t\t\t\t\t!isInsideBoundingRect(element, event)\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcallbackRef.current(event);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('mousedown', listener, true);\n\t\tdocument.addEventListener('touchstart', listener, true);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('mousedown', listener, true);\n\t\t\tdocument.removeEventListener('touchstart', listener, true);\n\t\t};\n\t}, [elements]);\n};\n\nexport default useOutsideClick;\n","import {useEffect, useRef, useState} from 'react';\nimport Draggable from 'react-draggable';\n\nimport {Props} from '../modal/Modal';\nimport useOutsideClick from '../../hooks/useOutsideClick';\n\nexport default function ModalWindow({className, width, header, content, footer, onOutsideClick}: Props) {\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst [rootElement, setRootElement] = useState<HTMLElement | null>(null);\n\n\tuseEffect(() => {\n\t\tsetRootElement(ref.current);\n\t}, []);\n\n\tuseOutsideClick([rootElement], () => {\n\t\tif (onOutsideClick) onOutsideClick();\n\t});\n\n\treturn (\n\t\t<Draggable handle=\".modal-header\" nodeRef={ref}>\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tclassName={`modal-window ${className || ''}`}\n\t\t\t\tstyle={{\n\t\t\t\t\tmaxWidth: width\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{header && <div className=\"modal-header\">{header}</div>}\n\t\t\t\t{content && <div className=\"modal-content\">{content}</div>}\n\t\t\t\t{footer && <div className=\"modal-footer\">{footer}</div>}\n\t\t\t</div>\n\t\t</Draggable>\n\t);\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport ModalWindow from '../modalComponents/ModalWindow';\n\nexport type Props = {\n\theader?: React.ReactNode;\n\tcontent?: React.ReactNode;\n\tfooter?: React.ReactNode;\n\n\t/** the CSS width setting, either a number or string */\n\twidth?: string | number;\n\tclassName?: string;\n\n\t/** callback function that is executed when the users click outside the modal */\n\tonOutsideClick?: (event?: Event) => void;\n\tonMouseDown?: (event: React.SyntheticEvent<HTMLElement>) => void;\n};\n\nexport default class Modal extends React.Component<\n\tProps,\n\t{\n\t\tclassName: string;\n\t}\n> {\n\tstatic defaultProps: {\n\t\twidth: string;\n\t} = {\n\t\twidth: '60%'\n\t};\n\tcontainer: HTMLDivElement | undefined;\n\tmodalRoot: HTMLElement | null | undefined;\n\ttimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n\tconstructor(props: Props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tclassName: 'di modal'\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.container = document.createElement('div');\n\t\tthis.modalRoot = document.getElementById('modal-root');\n\n\t\tif (this.modalRoot) {\n\t\t\tthis.modalRoot.appendChild(this.container);\n\t\t} else if (document.body) {\n\t\t\tdocument.body.appendChild(this.container);\n\t\t}\n\n\t\tif (this.props.onOutsideClick) {\n\t\t\twindow.addEventListener('keydown', this.keyEventHandler);\n\t\t}\n\n\t\t// set the show class after 10ms for animation\n\t\tthis.timeoutId = setTimeout(\n\t\t\t() =>\n\t\t\t\t// eslint-disable-next-line react/no-did-mount-set-state -- deferred via setTimeout, not a synchronous mount update\n\t\t\t\tthis.setState({\n\t\t\t\t\tclassName: `di modal show ${this.props.className || ''}`\n\t\t\t\t}),\n\t\t\t10\n\t\t);\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif (this.container) {\n\t\t\tif (this.modalRoot) {\n\t\t\t\tthis.modalRoot.removeChild(this.container);\n\t\t\t} else if (document.body) {\n\t\t\t\tdocument.body.removeChild(this.container);\n\t\t\t}\n\t\t}\n\n\t\tif (this.props.onOutsideClick) {\n\t\t\twindow.removeEventListener('keydown', this.keyEventHandler);\n\t\t}\n\n\t\tif (this.timeoutId) {\n\t\t\tclearTimeout(this.timeoutId);\n\t\t}\n\t}\n\n\tkeyEventHandler: (event: KeyboardEvent) => void = (event: KeyboardEvent) => {\n\t\tif (event.key === 'Escape' && this.props.onOutsideClick) {\n\t\t\tthis.props.onOutsideClick(event);\n\t\t}\n\t};\n\n\trender() {\n\t\tif (!this.container) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn ReactDOM.createPortal(\n\t\t\t<div className={this.state.className} onMouseDown={this.props.onMouseDown}>\n\t\t\t\t<ModalWindow {...this.props} />\n\t\t\t</div>,\n\t\t\tthis.container\n\t\t);\n\t}\n}\n","import React from 'react';\n\nexport type Props = Record<string, never>;\n\nexport default class ModalContainer extends React.PureComponent<Props> {\n\trender() {\n\t\treturn <div id=\"modal-root\" />;\n\t}\n}\n","import React from 'react';\n\nexport type Props = {\n\t/** the size of the Spinner in px */\n\tsize?: number;\n\n\t/** @ignore */\n\tcenter?: boolean;\n\n\t/** @ignore */\n\t'data-testid'?: string;\n};\n\n/**\n * Spinners usually show a loading indication.\n */\nexport default class Spinner extends React.Component<Props> {\n\tstatic defaultProps = {\n\t\tsize: 56,\n\t\tcenter: false\n\t};\n\n\trender() {\n\t\tconst {size = 56, center, ...dataAttrs} = this.props;\n\t\tlet style: React.CSSProperties = {\n\t\t\twidth: size,\n\t\t\theight: size\n\t\t};\n\n\t\tif (center) {\n\t\t\tstyle = {\n\t\t\t\t...style,\n\t\t\t\tposition: 'absolute',\n\t\t\t\ttop: '50%',\n\t\t\t\tleft: '50%',\n\t\t\t\tmarginTop: -size / 2,\n\t\t\t\tmarginLeft: -size / 2\n\t\t\t};\n\t\t}\n\n\t\treturn <div className=\"di spinner\" style={style} {...dataAttrs} />;\n\t}\n}\n","import React from 'react';\n\nimport Spinner from './Spinner';\n\nexport type Props = {\n\t/** controls the display of the Spinner */\n\tshow: boolean;\n\n\t/** the size of the Spinner in px */\n\tsize?: number;\n\n\t/** content to be rendered once the loading is done */\n\tchildren?: React.ReactNode;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** @ignore */\n\t'data-testid'?: string;\n};\n\n/**\n * SpinnerContainer wraps the entire content and displays a loading indicator until the loading is done.\n */\nexport default class SpinnerContainer extends React.Component<Props> {\n\tstatic defaultProps: {\n\t\tsize: number;\n\t} = {\n\t\tsize: 56\n\t};\n\n\trender() {\n\t\tconst {show, size, children, className} = this.props;\n\t\tconst classNames = `di spinner-wrapper ${className ? className : ''}`;\n\t\treturn (\n\t\t\t<div className={classNames}>\n\t\t\t\t<div\n\t\t\t\t\tclassName={`di spinner-container ${show ? 'visible' : ''}`}\n\t\t\t\t\tdata-testid={this.props['data-testid']}\n\t\t\t\t>\n\t\t\t\t\t<Spinner size={size} center />\n\t\t\t\t</div>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import * as React from 'react';\nimport {withTranslation, WithTranslation} from 'react-i18next';\n\nimport {TranslationDescriptor} from '../../types/i18n';\n\nexport type Props = {\n\t/** input type selector */\n\ttype?: 'checkbox' | 'radio' | 'toggle';\n\n\t/** Flag to preselect the status of the checkbox */\n\tvalue: boolean;\n\n\t/** Function, executed when toggling the checkbox */\n\tonChange: (nextStatus: boolean) => void;\n\n\t/** Optional input element tooltip */\n\ttitle?: TranslationDescriptor;\n\n\t/** Optional label for checkbox and radio button*/\n\tlabel?: TranslationDescriptor;\n\n\t/** visually indicate that the checkbox is disabled and disable onChange handler */\n\tdisabled?: boolean;\n\n\t/** Optional flag for toggle type: Render a small Toggle */\n\ttoggleSmall?: boolean;\n\n\t/** Optional flag for toggle type: Sets the slider color when the Toggle is truthy */\n\ttoggleColor?: string;\n\n\t/** @ignore */\n\t'data-testid'?: string;\n\n\t/** @ignore */\n\t'wrapper-data-testid'?: string;\n\n\t/** @ignore */\n\t'innerdiv-data-testid'?: string;\n};\n\nconst getWrapperClassName = (type: string, small: boolean) => {\n\tswitch (type) {\n\t\tcase 'checkbox':\n\t\tcase 'radio':\n\t\t\treturn 'di checkbox';\n\n\t\tcase 'toggle':\n\t\t\treturn small ? 'di toggle toggle-small' : 'di toggle';\n\n\t\tdefault:\n\t\t\tthrow Error(`type not support: ${type}`);\n\t}\n};\n\nconst getCheckboxClassName = (type: string, small: boolean) => {\n\tswitch (type) {\n\t\tcase 'checkbox':\n\t\t\treturn 'box';\n\n\t\tcase 'radio':\n\t\t\treturn 'radio';\n\n\t\tcase 'toggle':\n\t\t\treturn small ? 'switch switch-small' : 'switch';\n\n\t\tdefault:\n\t\t\tthrow Error(`type not support: ${type}`);\n\t}\n};\n\n/**\n * Checkbox for enabling user interaction can have one of multiple types which are defined via the `type` prop.\n */\nconst Checkbox = ({\n\ttype = 'checkbox',\n\tvalue,\n\tonChange,\n\ttitle,\n\tlabel,\n\tdisabled = false,\n\ttoggleSmall = false,\n\ttoggleColor = '#259b23',\n\tt,\n\t...other\n}: Props & WithTranslation) => {\n\tconst style =\n\t\ttype === 'toggle'\n\t\t\t? {\n\t\t\t\t\tbackgroundColor: value ? toggleColor : 'gray'\n\t\t\t\t}\n\t\t\t: {};\n\tconst tooltip = title\n\t\t? t(title.id, {\n\t\t\t\tdefaultValue: title.defaultValue\n\t\t\t})\n\t\t: undefined;\n\tconst labelText = label\n\t\t? t(label.id, {\n\t\t\t\tdefaultValue: label.defaultValue\n\t\t\t})\n\t\t: null;\n\treturn (\n\t\t<label\n\t\t\ttitle={tooltip}\n\t\t\tclassName={getWrapperClassName(type, toggleSmall)}\n\t\t\tdata-testid={other['wrapper-data-testid']}\n\t\t>\n\t\t\t<input\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tchecked={value}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonChange={() => onChange(!value)}\n\t\t\t\tdata-testid={other['data-testid']}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclassName={getCheckboxClassName(type, toggleSmall)}\n\t\t\t\tstyle={style}\n\t\t\t\tdata-testid={other['innerdiv-data-testid']}\n\t\t\t/>\n\t\t\t{label && <span className=\"textlabel\">{labelText}</span>}\n\t\t</label>\n\t);\n};\n\nexport default withTranslation()(Checkbox) as React.ComponentType<Props>;\n","import * as React from 'react';\n\nimport {TranslationDescriptor} from '../../types/i18n';\n\nexport function isTranslationDescriptor(\n\targ: TranslationDescriptor | string | React.ReactElement\n): arg is TranslationDescriptor {\n\tconst result =\n\t\ttypeof arg === 'object' && typeof (arg as any).id === 'string' && typeof (arg as any).defaultValue === 'string';\n\n\tif (result) {\n\t\tconsole.warn(\n\t\t\t'Please use strings instead of TranslationDescriptors to initialize the Confirm modal, because TranslationDescriptors are deprecated'\n\t\t);\n\t}\n\n\treturn result;\n}\n","import * as React from 'react';\nimport {Trans} from 'react-i18next';\n\nimport Modal from '../modal/Modal';\nimport Button from '../button/Button';\nimport {TranslationDescriptor} from '../../types/i18n';\nimport {isTranslationDescriptor} from './utils';\n\nexport type Props = {\n\ttitle: string | TranslationDescriptor;\n\tmessage: string | React.ReactElement | TranslationDescriptor;\n\n\t/** @ignore */\n\tonAccept: (...args: Array<any>) => any;\n\n\t/** @ignore */\n\tonDecline: (...args: Array<any>) => any;\n\tacceptButtonLabel?: string | TranslationDescriptor;\n\tdeclineButtonLabel?: string | TranslationDescriptor;\n\tacceptButtonStyle?: 'primary' | 'danger';\n};\n\nfunction transformTextToElement(\n\tmessage: TranslationDescriptor | string | React.ReactElement\n): React.ReactElement | string {\n\tif (isTranslationDescriptor(message)) {\n\t\treturn <Trans i18nKey={message.id}>{message.defaultValue}</Trans>;\n\t}\n\treturn message;\n}\n\n/**\n * Confirm enables the possibility to open up a dialog within a modal, requiring additional user actions.\n * This component should not be used directly, instead use `@withConfirm` to inject a promise based confirm method\n */\nexport default function Confirm({\n\ttitle,\n\tmessage,\n\tonAccept,\n\tonDecline,\n\tacceptButtonLabel,\n\tdeclineButtonLabel,\n\tacceptButtonStyle = 'primary'\n}: Props) {\n\treturn (\n\t\t<Modal\n\t\t\theader={transformTextToElement(title)}\n\t\t\tcontent={transformTextToElement(message)}\n\t\t\tfooter={\n\t\t\t\t<div>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tprimary={acceptButtonStyle === 'primary'}\n\t\t\t\t\t\tdanger={acceptButtonStyle === 'danger'}\n\t\t\t\t\t\tonClick={onAccept}\n\t\t\t\t\t>\n\t\t\t\t\t\t{acceptButtonLabel ? (\n\t\t\t\t\t\t\ttransformTextToElement(acceptButtonLabel)\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Trans i18nKey=\"form.accept\">Accept</Trans>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button onClick={onDecline}>\n\t\t\t\t\t\t{declineButtonLabel ? (\n\t\t\t\t\t\t\ttransformTextToElement(declineButtonLabel)\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Trans i18nKey=\"form.decline\">Decline</Trans>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\twidth={500}\n\t\t/>\n\t);\n}\n","import React, {createContext, useState} from 'react';\n\nimport Confirm, {Props as ConfirmProps} from './Confirm';\n\ntype ConfirmOptions = {\n\ttitle: string;\n\tmessage: string | React.ReactElement;\n\tacceptButtonLabel?: string;\n\tdeclineButtonLabel?: string;\n\tacceptButtonStyle?: 'primary' | 'danger';\n};\n\nexport const ConfirmContext = createContext<{\n\tconfirm: (options: ConfirmOptions) => Promise<boolean>;\n}>({\n\tconfirm: () => Promise.reject(new Error('ConfirmProvider is missing!'))\n});\n\nfunction ConfirmProvider({children}: React.PropsWithChildren<Record<string, unknown>>) {\n\tconst [visible, setVisible] = useState<boolean>(false);\n\tconst [confirmProps, setConfirmProps] = useState<ConfirmProps>({\n\t\ttitle: '',\n\t\tmessage: '',\n\t\tonAccept: () => {},\n\t\tonDecline: () => {}\n\t});\n\n\tasync function confirm(options: ConfirmOptions) {\n\t\treturn new Promise<boolean>((resolve) => {\n\t\t\tsetVisible(true);\n\t\t\tsetConfirmProps({\n\t\t\t\t...options,\n\t\t\t\tonAccept: () => {\n\t\t\t\t\tsetVisible(false);\n\t\t\t\t\tresolve(true);\n\t\t\t\t},\n\t\t\t\tonDecline: () => {\n\t\t\t\t\tsetVisible(false);\n\t\t\t\t\tresolve(false);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\treturn (\n\t\t<ConfirmContext.Provider value={{confirm}}>\n\t\t\t{children}\n\t\t\t{visible && <Confirm {...confirmProps} />}\n\t\t</ConfirmContext.Provider>\n\t);\n}\n\nexport default ConfirmProvider;\n","import {useContext} from 'react';\n\nimport {ConfirmContext} from './ConfirmProvider';\n\nexport default function useConfirm() {\n\tconst context = useContext(ConfirmContext);\n\tif (!context) {\n\t\tthrow new Error('ConfirmProvider is missing');\n\t}\n\tconst {confirm} = context;\n\treturn confirm;\n}\n","import React from 'react';\nimport {useTranslation} from 'react-i18next';\n\nimport {TranslationDescriptor} from '../../types/i18n';\nimport useConfirm from './useConfirm';\nimport ConfirmProvider from './ConfirmProvider';\nimport {isTranslationDescriptor} from './utils';\n\nexport type ConfirmProps = {\n\tconfirm: (\n\t\ttitle: string | TranslationDescriptor,\n\t\tmessage: string | TranslationDescriptor | React.ReactElement,\n\t\tacceptButtonLabel?: string | TranslationDescriptor,\n\t\tdeclineButtonLabel?: string | TranslationDescriptor,\n\t\tresolveWithConfirmation?: boolean,\n\t\tacceptButtonStyle?: 'primary' | 'danger'\n\t) => Promise<void | boolean>;\n};\n\nexport default function withConfirm<P extends object>(WrappedComponent: React.ComponentType<P & ConfirmProps>) {\n\tfunction WithConfirm(props: P) {\n\t\tconst confirm = useConfirm();\n\t\tconst {t} = useTranslation();\n\n\t\tfunction trans(arg: TranslationDescriptor | string) {\n\t\t\tif (isTranslationDescriptor(arg)) {\n\t\t\t\treturn t(arg.id, {defaultValue: arg.defaultValue});\n\t\t\t}\n\t\t\treturn arg;\n\t\t}\n\n\t\tasync function deprecatedConfirm(\n\t\t\ttitle: string | TranslationDescriptor,\n\t\t\tmessage: string | TranslationDescriptor | React.ReactElement,\n\t\t\tacceptButtonLabel?: string | TranslationDescriptor,\n\t\t\tdeclineButtonLabel?: string | TranslationDescriptor,\n\t\t\tresolveWithConfirmation?: boolean,\n\t\t\tacceptButtonStyle?: 'primary' | 'danger'\n\t\t): Promise<boolean | void> {\n\t\t\tconst accepted = await confirm({\n\t\t\t\ttitle: trans(title),\n\t\t\t\tmessage: isTranslationDescriptor(message) ? trans(message) : message,\n\t\t\t\tacceptButtonLabel: acceptButtonLabel ? trans(acceptButtonLabel) : undefined,\n\t\t\t\tdeclineButtonLabel: declineButtonLabel ? trans(declineButtonLabel) : undefined,\n\t\t\t\tacceptButtonStyle\n\t\t\t});\n\n\t\t\tif (resolveWithConfirmation) {\n\t\t\t\treturn accepted;\n\t\t\t} else if (!accepted) {\n\t\t\t\treturn new Promise(() => {});\n\t\t\t}\n\t\t}\n\n\t\treturn <WrappedComponent {...props} confirm={deprecatedConfirm} />;\n\t}\n\n\treturn function WithConfirmWrapper(props: P) {\n\t\treturn (\n\t\t\t<ConfirmProvider>\n\t\t\t\t<WithConfirm {...props} />\n\t\t\t</ConfirmProvider>\n\t\t);\n\t};\n}\n","export default \"data:image/svg+xml,%3csvg%20id='icon-add_24_sga'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cpolygon%20id='plus'%20points='20%2010%2014%2010%2014%204%2010%204%2010%2010%204%2010%204%2014%2010%2014%2010%2020%2014%2020%2014%2014%2020%2014%2020%2010'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='icon-cross_24_sga'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cpolygon%20id='icon-cross_24'%20points='20%206.28%2017.87%204%2012%209.78%206.13%204%204%206.28%209.78%2011.97%204%2017.66%206.13%2019.93%2012%2014.15%2017.87%2019.93%2020%2017.66%2014.22%2011.97%2020%206.28'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='icon-edit-24_sga'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cg%20id='stift'%3e%3cpath%20d='M7.35,12.65a.5.5,0,0,0,0,.7l3.3,3.3a.5.5,0,0,0,.7,0l8.3-8.3A1.4,1.4,0,0,0,20,7.5v-1a1.4,1.4,0,0,0-.35-.85l-1.3-1.3A1.4,1.4,0,0,0,17.5,4h-1a1.4,1.4,0,0,0-.85.35Z'/%3e%3c/g%3e%3cpath%20d='M5.9,14.49c.06-.27.26-.33.45-.14l3.3,3.3c.19.19.13.39-.14.45l-4,.8a.3.3,0,0,1-.39-.39Z'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='icon-gear-24_sga'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cg%20id='icon-gear-24_sga-2'%20data-name='icon-gear-24_sga'%3e%3cpath%20d='M22.82,14.06A1.25,1.25,0,0,0,24,13,7.66,7.66,0,0,0,24,12,7.66,7.66,0,0,0,24,11a1.25,1.25,0,0,0-1.13-1l-1.09,0A1.49,1.49,0,0,1,20.44,9c-.15-.47-.44-2-.07-2.37l.74-.81a1.16,1.16,0,0,0,0-1.5L19.7,2.87a1.16,1.16,0,0,0-1.5,0l-.81.74a1.5,1.5,0,0,1-1.54.27c-.44-.23-1.72-1.08-1.74-1.63l0-1.09A1.25,1.25,0,0,0,13,.05a7.66,7.66,0,0,0-1,0,7.66,7.66,0,0,0-1,.05,1.25,1.25,0,0,0-1,1.13l0,1.09A1.52,1.52,0,0,1,9,3.56c-.47.15-2,.44-2.37.07L5.8,2.89a1.16,1.16,0,0,0-1.5,0L2.86,4.3a1.18,1.18,0,0,0,0,1.5l.74.81A1.5,1.5,0,0,1,3.9,8.15c-.23.44-1.08,1.72-1.63,1.74l-1.09,0A1.25,1.25,0,0,0,.05,11a7.66,7.66,0,0,0,0,1,7.66,7.66,0,0,0,.05,1,1.25,1.25,0,0,0,1.13,1l1.09,0A1.47,1.47,0,0,1,3.55,15c.16.48.45,2,.08,2.37l-.74.81a1.16,1.16,0,0,0,0,1.5L4.3,21.13a1.16,1.16,0,0,0,1.5,0l.81-.74a1.5,1.5,0,0,1,1.54-.27c.44.23,1.72,1.08,1.75,1.63l0,1.09A1.25,1.25,0,0,0,11,24,7.66,7.66,0,0,0,12,24,7.66,7.66,0,0,0,13,24a1.25,1.25,0,0,0,1-1.13l0-1.09A1.49,1.49,0,0,1,15,20.44c.47-.15,2-.44,2.37-.07l.81.74a1.16,1.16,0,0,0,1.5,0l1.43-1.43a1.16,1.16,0,0,0,0-1.5l-.74-.81a1.5,1.5,0,0,1-.27-1.54c.23-.44,1.08-1.72,1.63-1.74ZM12,15.5A3.5,3.5,0,1,1,15.5,12,3.5,3.5,0,0,1,12,15.5Z'/%3e%3c/g%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cg%3e%3cpath%20d='M22.1,4.91a3,3,0,0,0-3-3H6.44a2.4,2.4,0,0,1,1.34-.4h12.6A2.12,2.12,0,0,1,22.5,3.62V17.26a1.42,1.42,0,0,1-.4,1Z'/%3e%3cpath%20d='M20.38,1H7.78A3,3,0,0,0,5.26,2.4H19.09A2.51,2.51,0,0,1,21.6,4.91V19.12A1.94,1.94,0,0,0,23,17.26V3.62A2.62,2.62,0,0,0,20.38,1Z'/%3e%3c/g%3e%3cg%3e%3cpath%20d='M4,21.5A1.5,1.5,0,0,1,2.5,20V5.8A1.5,1.5,0,0,1,4,4.3H18.2a1.5,1.5,0,0,1,1.5,1.5V20a1.5,1.5,0,0,1-1.5,1.5ZM9.5,18a.5.5,0,0,0,.5.5h2a.5.5,0,0,0,.5-.5V14.5H16a.5.5,0,0,0,.5-.5V12a.5.5,0,0,0-.5-.5H12.5V8a.5.5,0,0,0-.5-.5H10a.5.5,0,0,0-.5.5v3.5H6a.5.5,0,0,0-.5.5v2a.5.5,0,0,0,.5.5H9.5Z'/%3e%3cpath%20d='M18.2,4.8a1,1,0,0,1,1,1V20a1,1,0,0,1-1,1H4a1,1,0,0,1-1-1V5.8a1,1,0,0,1,1-1H18.2M9,11H6a1,1,0,0,0-1,1v2a1,1,0,0,0,1,1H9v3a1,1,0,0,0,1,1h2a1,1,0,0,0,1-1V15h3a1,1,0,0,0,1-1V12a1,1,0,0,0-1-1H13V8a1,1,0,0,0-1-1H10A1,1,0,0,0,9,8v3m9.2-7.2H4a2,2,0,0,0-2,2V20a2,2,0,0,0,2,2H18.2a2,2,0,0,0,2-2V5.8a2,2,0,0,0-2-2ZM6,14V12h4V8h2v4h4v2H12v4H10V14Z'/%3e%3c/g%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%3e%3cpolygon%20points='7.92%2012%202.84%207%2013%207%207.92%2012'/%3e%3crect%20x='5'%20y='2'%20width='6'%20height='5'/%3e%3crect%20x='2'%20y='14'%20width='12'%20height='1'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%3e%3cdefs%3e%3cstyle%3e%20.cls-1%20{%20fill:%20%23fff;%20}%20%3c/style%3e%3c/defs%3e%3cg%3e%3ccircle%20class='cls-1'%20cx='5.5'%20cy='5.5'%20r='4.5'/%3e%3cpath%20d='M5.5,2A3.5,3.5,0,1,1,2,5.5,3.5,3.5,0,0,1,5.5,2m0-1A4.5,4.5,0,1,0,10,5.5,4.49,4.49,0,0,0,5.5,1Z'/%3e%3c/g%3e%3crect%20x='6.79'%20y='10.04'%20width='7.74'%20height='2.16'%20transform='translate(10.98%20-4.28)%20rotate(45)'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20data-name='icon_key'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2027.02%2027'%3e%3cpath%20d='M35.07,16.5a8.52,8.52,0,0,0-7.69,12L17.2,38.8a2.46,2.46,0,0,0,0,3.46,2.41,2.41,0,0,0,3.42,0l1.69-1.7,2.91,2.94L31,37.63l-2.92-3,2.44-2.46a8.31,8.31,0,0,0,4.51,1.33,8.53,8.53,0,0,0,0-17Zm0,3.91A4.62,4.62,0,1,1,30.5,25,4.6,4.6,0,0,1,35.07,20.41Z'%20transform='translate(-16.49%20-16.5)'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cg%20id='Pfeilende'%3e%3cpath%20d='M24,10H15l9-8.93Z'/%3e%3c/g%3e%3cpath%20d='M18.45,18.78A9.33,9.33,0,0,1,2.62,14.86,9.8,9.8,0,0,1,8.89,2.69,9.42,9.42,0,0,1,20.72,9.14H23A11.72,11.72,0,0,0,11.68,0,11.74,11.74,0,0,0,.34,9.14,12,12,0,0,0,8.89,23.65a11.43,11.43,0,0,0,11.16-3.31Z'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20data-name='icon_fullscreen_sga'%20xmlns='http://www.w3.org/2000/svg'%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%3e%3cpolygon%20id='ecke'%20points='2%2014%202%2010%200%2010%200%2016%206%2016%206%2014%202%2014'/%3e%3cpolygon%20id='ecke-2'%20data-name='ecke'%20points='2%202%206%202%206%200%200%200%200%206%202%206%202%202'/%3e%3cpolygon%20id='ecke-3'%20data-name='ecke'%20points='14%2014%2010%2014%2010%2016%2016%2016%2016%2010%2014%2010%2014%2014'/%3e%3cpolygon%20id='ecke-4'%20data-name='ecke'%20points='10%200%2010%202%2014%202%2014%206%2016%206%2016%200%2010%200'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='Icon_help'%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%3e%3cpath%20id='icon_help-2'%20data-name='icon_help'%20d='M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm1,16H11V15h2Zm1.7-6.26a4.85,4.85,0,0,1-.49.81l-1,1.37a1.36,1.36,0,0,0-.18.34,1,1,0,0,0-.07.38L13,14H11l.1-.49a2,2,0,0,1,.13-.77,3.18,3.18,0,0,1,.4-.69l1-1.33a3.21,3.21,0,0,0,.29-.46,1.19,1.19,0,0,0,.11-.47,1.17,1.17,0,0,0-.3-.82,1.07,1.07,0,0,0-.83-.33A1,1,0,0,0,11.1,9a1.25,1.25,0,0,0-.28.83H9a2.94,2.94,0,0,1,.23-1.17,2.45,2.45,0,0,1,.63-.88,2.9,2.9,0,0,1,.93-.55A3.13,3.13,0,0,1,11.94,7a3.31,3.31,0,0,1,1.13.19,2.82,2.82,0,0,1,.94.54,2.62,2.62,0,0,1,.65.88A3,3,0,0,1,14.9,9.8,2.16,2.16,0,0,1,14.7,10.74Z'%20style='opacity:%200.2'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20id='icon_star_16'%20xmlns='http://www.w3.org/2000/svg'%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%3e%3cpath%20id='star'%20d='M8,0l2.45,4.97,5.55,.76-4.04,3.83,.99,5.44-4.94-2.61-4.94,2.61,.99-5.44L0,5.73l5.55-.76L8,0Z'/%3e%3c/svg%3e\"","import iconAdd from '../../assets/svg/icon_add.svg';\nimport iconDel from '../../assets/svg/icon_cross.svg';\nimport iconEdit from '../../assets/svg/icon_edit.svg';\nimport iconConfig from '../../assets/svg/icon_gear.svg';\nimport iconDuplicate from '../../assets/svg/icon_duplicate.svg';\nimport iconDownload from '../../assets/svg/icon_download.svg';\nimport iconSearch from '../../assets/svg/icon_lupe.svg';\nimport iconIconKey from '../../assets/svg/icon_key.svg';\nimport iconSync from '../../assets/svg/icon_reload.svg';\nimport iconFullscreen from '../../assets/svg/icon_fullscreen.svg';\nimport iconDocumentation from '../../assets/svg/icon_help_light.svg';\nimport iconStar from '../../assets/svg/icon_star.svg';\n\nexport type Props = {\n\tadd?: boolean;\n\tdel?: boolean;\n\tedit?: boolean;\n\tconfig?: boolean;\n\tduplicate?: boolean;\n\tsearch?: boolean;\n\tdownload?: boolean;\n\tsync?: boolean;\n\tfullscreen?: boolean;\n\tstar?: boolean;\n\n\t/** key is reserved in React */\n\ticonKey?: boolean;\n\tdocumentation?: boolean;\n\n\t/** renders a larger version of the icon (24x24) */\n\tlarge?: boolean;\n\n\t/** inverts the colors of the icon for display on dark background */\n\tinverted?: boolean;\n\n\t/** @ignore */\n\tclassName?: string;\n};\n\nfunction getSrc(props: Props) {\n\tconst {add, del, edit, config, duplicate, search, download, sync, fullscreen, iconKey, documentation, star} = props;\n\n\tif (add) {\n\t\treturn iconAdd;\n\t} else if (del) {\n\t\treturn iconDel;\n\t} else if (edit) {\n\t\treturn iconEdit;\n\t} else if (config) {\n\t\treturn iconConfig;\n\t} else if (duplicate) {\n\t\treturn iconDuplicate;\n\t} else if (search) {\n\t\treturn iconSearch;\n\t} else if (download) {\n\t\treturn iconDownload;\n\t} else if (sync) {\n\t\treturn iconSync;\n\t} else if (fullscreen) {\n\t\treturn iconFullscreen;\n\t} else if (iconKey) {\n\t\treturn iconIconKey;\n\t} else if (documentation) {\n\t\treturn iconDocumentation;\n\t} else if (star) {\n\t\treturn iconStar;\n\t} else {\n\t\tthrow Error('getSrc: no icon type specified');\n\t}\n}\n\nfunction getAlt(props: Props) {\n\tconst {add, del, edit, config, duplicate, search, download, sync, fullscreen, iconKey, documentation, star} = props;\n\n\tif (add) {\n\t\treturn 'icon add';\n\t} else if (del) {\n\t\treturn 'icon delete';\n\t} else if (edit) {\n\t\treturn 'icon edit';\n\t} else if (config) {\n\t\treturn 'icon config';\n\t} else if (duplicate) {\n\t\treturn 'icon duplicate';\n\t} else if (search) {\n\t\treturn 'icon search';\n\t} else if (download) {\n\t\treturn 'icon download';\n\t} else if (sync) {\n\t\treturn 'icon sync';\n\t} else if (fullscreen) {\n\t\treturn 'icon fullscreen';\n\t} else if (iconKey) {\n\t\treturn 'icon iconKey';\n\t} else if (documentation) {\n\t\treturn 'icon documentation';\n\t} else if (star) {\n\t\treturn 'icon star';\n\t} else {\n\t\tthrow Error('getAlt: no icon type specified');\n\t}\n}\n\nexport default function Icon(props: Props) {\n\tlet style;\n\tif (props.large) {\n\t\tstyle = {width: 24, height: 24};\n\t} else {\n\t\tstyle = {width: 16, height: 16};\n\t}\n\tif (props.inverted) {\n\t\tstyle = {...style, filter: 'invert(1)'};\n\t}\n\n\treturn <img src={getSrc(props)} className={`di icon ${props.className || ''}`} alt={getAlt(props)} style={style} />;\n}\n","import React, {MouseEventHandler, PropsWithChildren, MouseEvent} from 'react';\nimport {Trans} from 'react-i18next';\nimport cx from 'classnames';\n\nimport Icon from '../icon/Icon';\nimport {TranslationDescriptor} from '../../types/i18n';\n\nexport interface Props extends React.HTMLAttributes<HTMLSpanElement> {\n\t/** the label text, either a string or TranslationDescriptor */\n\ttext?: string | TranslationDescriptor;\n\n\t/** a smaller label */\n\tsmall?: boolean;\n\n\t/** a larger label */\n\tlarge?: boolean;\n\n\tonClick?: MouseEventHandler<HTMLSpanElement>;\n\n\t/** adds a delete button that triggers this callback function */\n\tonDelete?: (...args: Array<any>) => any;\n\n\tclassName?: string;\n\n\t/** @ignore */\n\t'data-testid'?: string;\n\n\t/** @ignore */\n\t'delete-button-data-testid'?: string;\n}\n\n/**\n * Label enables an easy way for marking or tagging elements.\n */\nexport default function Label({\n\ttext,\n\tsmall = false,\n\tlarge = false,\n\tonDelete,\n\tclassName,\n\tonClick,\n\tchildren,\n\t...dataTestIds\n}: PropsWithChildren<Props>) {\n\tfunction handleDelete(event: MouseEvent<HTMLSpanElement>) {\n\t\tevent.stopPropagation();\n\t\tif (onDelete) {\n\t\t\tonDelete();\n\t\t}\n\t}\n\n\treturn (\n\t\t<span\n\t\t\tonClick={onClick}\n\t\t\tclassName={cx('di label', className, {large, small, removable: onDelete, clickable: !!onClick})}\n\t\t\tdata-testid={dataTestIds['data-testid']}\n\t\t>\n\t\t\t{typeof text === 'string' ? text : text && <Trans i18nKey={text.id}>{text.defaultValue}</Trans>}\n\t\t\t<>{children}</>\n\t\t\t{onDelete && (\n\t\t\t\t<span data-testid={dataTestIds['delete-button-data-testid']} className=\"remove\" onClick={handleDelete}>\n\t\t\t\t\t<Icon del inverted />\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</span>\n\t);\n}\n","import {\n\tarrow,\n\tautoUpdate,\n\tflip,\n\tFloatingPortal,\n\toffset,\n\tsafePolygon,\n\tshift,\n\tsize,\n\tuseClick,\n\tuseDismiss,\n\tuseFloating,\n\tuseFocus,\n\tuseHover,\n\tuseInteractions\n} from '@floating-ui/react';\nimport cx from 'classnames';\nimport React, {useEffect, useRef} from 'react';\n\nexport type Placement =\n\t| 'top'\n\t| 'bottom'\n\t| 'left'\n\t| 'right'\n\t| 'top-start'\n\t| 'top-end'\n\t| 'bottom-start'\n\t| 'bottom-end'\n\t| 'right-start'\n\t| 'right-end'\n\t| 'left-start'\n\t| 'left-end';\n\nexport type Props = {\n\t/** Element to toggle the Popup */\n\thandler: React.ReactNode;\n\n\t/** Content to be displayed */\n\tchildren: React.ReactNode;\n\n\t/** If true, displays the Popup's content */\n\topen: boolean;\n\n\t/** Function, executed when the Popup gets closed */\n\tonOpenChange: (open: boolean) => void;\n\n\t/** (Optional) if set, sets the direction in which the content should be displayed */\n\tplacement?: Placement;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** (Optional) If set to true, the content is hidden via styles, but still exists in the DOM tree */\n\tpreventDestroyContentOnHide?: boolean;\n\n\t/** (Optional) Class name of the handler wrapping element */\n\thandlerWrapperClassName?: string;\n\n\t/** (Optional) Interaction mode to open the popup */\n\tmode?: Array<'click' | 'hover' | 'focus'>;\n\n\t/** (Optional) Disables the Popup */\n\tdisabled?: boolean;\n};\n\n// Margin from the edge of the viewport\nconst MARGIN = 16;\n\n/**\n * Popup displays content within a small modal.\n * Its usage is highly flexible and used in several other components.\n */\nexport default function Popup({\n\tplacement = 'bottom',\n\tmode = ['click'],\n\tdisabled,\n\thandler,\n\thandlerWrapperClassName,\n\tpreventDestroyContentOnHide,\n\topen,\n\tonOpenChange,\n\tclassName,\n\tchildren\n}: Props) {\n\tconst arrowRef = useRef<HTMLDivElement>(null);\n\n\tconst {\n\t\telements,\n\t\tupdate,\n\t\trefs,\n\t\tfloatingStyles,\n\t\tcontext,\n\t\tmiddlewareData,\n\t\tplacement: computedPlacement\n\t} = useFloating({\n\t\tplacement,\n\t\topen,\n\t\tonOpenChange,\n\t\twhileElementsMounted: !preventDestroyContentOnHide ? autoUpdate : undefined,\n\t\tmiddleware: [\n\t\t\toffset({\n\t\t\t\tmainAxis: 12\n\t\t\t}),\n\t\t\tflip({\n\t\t\t\tpadding: MARGIN,\n\t\t\t\tboundary: 'clippingAncestors',\n\t\t\t\taltBoundary: true\n\t\t\t}),\n\t\t\tshift({\n\t\t\t\tpadding: MARGIN,\n\t\t\t\tboundary: 'clippingAncestors',\n\t\t\t\taltBoundary: true\n\t\t\t}),\n\t\t\tsize({\n\t\t\t\tpadding: MARGIN,\n\t\t\t\tboundary: 'clippingAncestors',\n\t\t\t\taltBoundary: true,\n\t\t\t\tapply({availableHeight, availableWidth, elements}) {\n\t\t\t\t\tconst width = `${Math.max(0, availableWidth - MARGIN)}px`;\n\t\t\t\t\tconst height = `${Math.max(0, availableHeight - MARGIN)}px`;\n\t\t\t\t\telements.floating.style.maxWidth = width;\n\t\t\t\t\telements.floating.style.maxHeight = height;\n\t\t\t\t}\n\t\t\t}),\n\t\t\tarrow({\n\t\t\t\telement: arrowRef\n\t\t\t})\n\t\t]\n\t});\n\n\tuseEffect(() => {\n\t\tif (preventDestroyContentOnHide && open && elements.reference && elements.floating) {\n\t\t\tconst cleanup = autoUpdate(elements.reference, elements.floating, update);\n\t\t\treturn cleanup;\n\t\t}\n\t}, [elements.floating, elements.reference, open, update, preventDestroyContentOnHide]);\n\n\tconst click = useClick(context, {\n\t\tenabled: !disabled && mode.includes('click'),\n\t\tkeyboardHandlers: false // Prevent space key from being blocked in input fields (floating-ui issue #1812)\n\t});\n\tconst hover = useHover(context, {\n\t\tenabled: !disabled && mode.includes('hover'),\n\t\thandleClose: safePolygon()\n\t});\n\tconst focus = useFocus(context, {enabled: !disabled && mode.includes('focus')});\n\tconst dismiss = useDismiss(context);\n\tconst {getReferenceProps, getFloatingProps} = useInteractions([click, hover, focus, dismiss]);\n\n\treturn (\n\t\t<>\n\t\t\t<span\n\t\t\t\tstyle={{display: 'inline-block'}}\n\t\t\t\tclassName={cx('popup-handler-wrapper', handlerWrapperClassName)}\n\t\t\t\tref={refs.setReference}\n\t\t\t\t{...getReferenceProps()}\n\t\t\t>\n\t\t\t\t{handler}\n\t\t\t</span>\n\t\t\t{(open || preventDestroyContentOnHide) && (\n\t\t\t\t<FloatingPortal>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cx('di popup-wrapper', {hidden: preventDestroyContentOnHide && !open})}\n\t\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t\t\tstyle={{...floatingStyles, zIndex: 100000}}\n\t\t\t\t\t\t{...getFloatingProps()}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className={cx('di popup', computedPlacement, className)}>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={cx('popup-arrow', computedPlacement)}\n\t\t\t\t\t\t\t\tref={arrowRef}\n\t\t\t\t\t\t\t\tstyle={{left: middlewareData.arrow?.x, top: middlewareData.arrow?.y}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<div className=\"popup-content\">{children}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</FloatingPortal>\n\t\t\t)}\n\t\t</>\n\t);\n}\n","import React, {useState} from 'react';\n\nimport Popup, {Placement} from '../popup/Popup';\n\nexport type Props = {\n\t/** the Bubble content */\n\tcontent: React.ReactNode;\n\n\t/** inverts the colors */\n\tinverted?: boolean;\n\n\t/** @ignore */\n\tchildren: React.ReactNode;\n\n\t/** @ignore */\n\tstyle?: React.CSSProperties;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** hides the bubble */\n\tdisabled?: boolean;\n\n\t/** changed the direction */\n\tdirection?: Placement;\n};\n\n/**\n * Bubbles are best used to provide some additional information like short instructions or help texts, which are then going to be displayed on Mouse-Over.\n */\nexport default function Bubble({content, inverted, children, disabled, style, direction, className}: Props) {\n\tconst [open, setOpen] = useState(false);\n\treturn (\n\t\t<Popup\n\t\t\topen={open}\n\t\t\tonOpenChange={setOpen}\n\t\t\thandler={children}\n\t\t\tdisabled={disabled}\n\t\t\tmode={['hover']}\n\t\t\tplacement={direction ? direction : 'top'}\n\t\t\tclassName={`bubble ${inverted ? 'inverted' : ''} ${className ? className : ''}`}\n\t\t>\n\t\t\t<span className={`bubble-content`} style={style}>\n\t\t\t\t{content}\n\t\t\t</span>\n\t\t</Popup>\n\t);\n}\n","import React, {useState} from 'react';\n\nimport Popup, {Placement} from '../popup/Popup';\n\nexport type Props = {\n\t/** Content of the Tooltip */\n\tcontent: React.ReactNode;\n\n\t/** Enabler of the Tooltip */\n\tchildren: React.ReactNode;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** (Optional) if set, disables the &lt;Tooltip/&gt; from opening */\n\tdisabled?: boolean;\n\n\t/** (Optional) if set, opens &lt;Tooltip/&gt; in given direction, defaults to 'right' */\n\tdirection?: Placement;\n};\n\n/**\n * Tooltip is best used to display some short additional information or description\n */\nexport default function Tooltip({content, children, className, direction, disabled}: Props) {\n\tconst [open, setOpen] = useState(false);\n\n\treturn (\n\t\t<Popup\n\t\t\topen={open}\n\t\t\tdisabled={disabled}\n\t\t\tmode={['hover']}\n\t\t\tonOpenChange={setOpen}\n\t\t\thandler={children}\n\t\t\tplacement={direction ? direction : 'right'}\n\t\t\tclassName={`tooltip inverted ${className ? className : ''}`}\n\t\t>\n\t\t\t<span className=\"tooltip-content\">{content}</span>\n\t\t</Popup>\n\t);\n}\n","import * as React from 'react';\n\nimport Bubble from '../bubble/Bubble';\n\ntype Page = {\n\tname: string;\n\trenderHeading: () => React.ReactNode;\n\trenderBody?: () => React.ReactNode;\n\ttabDescription?: string;\n};\n\ntype State = {\n\tcurrentTab: string | null | undefined;\n};\n\nexport type Props = {\n\t/** Array of pages to be displayed */\n\tpages: Array<Page>;\n\n\t/** (Optional) if set, disables tab */\n\tdisabled?: boolean;\n\n\t/** (Optional) function, executed if tabs change */\n\tonChange?: (tab: string) => void;\n\n\t/** (Optional) sets the current tab */\n\tcurrentTab?: string | null | undefined;\n};\n\n/**\n * Tabs add the possibility to unite several homogeneous pages into one.\n * Unlike RouteTabs, Tabs cannot be accessed directly via the browser's history\n */\nexport default class Tabs extends React.Component<Props, State> {\n\tstate: State = {\n\t\tcurrentTab: this.props.pages.length ? this.props.pages[0].name : null\n\t};\n\n\thandleClick: (tab: string) => void = (tab: string) => {\n\t\tif (this.props.onChange) {\n\t\t\tthis.props.onChange(tab);\n\t\t} else if (typeof this.props.currentTab === 'undefined') {\n\t\t\tthis.setState({\n\t\t\t\tcurrentTab: tab\n\t\t\t});\n\t\t}\n\t};\n\n\tcurrentTabPage: () => Page | null | undefined = (): Page | null | undefined => {\n\t\tconst currentTab = typeof this.props.currentTab === 'string' ? this.props.currentTab : this.state.currentTab;\n\t\treturn this.props.pages.find(({name}) => currentTab === name);\n\t};\n\n\tisCurrentTab: (tab: string) => boolean = (tab: string) => {\n\t\tconst currentTab = typeof this.props.currentTab === 'string' ? this.props.currentTab : this.state.currentTab;\n\t\treturn currentTab === tab;\n\t};\n\n\trenderBody = () => {\n\t\tconst page = this.currentTabPage();\n\n\t\tif (page && typeof page.renderBody === 'function') {\n\t\t\treturn page.renderBody();\n\t\t}\n\n\t\treturn null;\n\t};\n\n\trender() {\n\t\tconst {pages, disabled} = this.props;\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<div className=\"di tabs\">\n\t\t\t\t\t{pages.map(({name, renderHeading, tabDescription}) =>\n\t\t\t\t\t\ttabDescription ? (\n\t\t\t\t\t\t\t<Bubble inverted key={name} content={tabDescription} className=\"bubble-tab-description\">\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tdata-testid=\"tab-button\"\n\t\t\t\t\t\t\t\t\tclassName={`item ${disabled ? 'disabled' : ''} ${\n\t\t\t\t\t\t\t\t\t\tthis.isCurrentTab(name) ? 'active' : ''\n\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\tonClick={() => !disabled && this.handleClick(name)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{renderHeading()}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</Bubble>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tdata-testid=\"tab-button\"\n\t\t\t\t\t\t\t\tkey={name}\n\t\t\t\t\t\t\t\tclassName={`item ${disabled ? 'disabled' : ''} ${\n\t\t\t\t\t\t\t\t\tthis.isCurrentTab(name) ? 'active' : ''\n\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\tonClick={() => !disabled && this.handleClick(name)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{renderHeading()}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t)\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t{this.renderBody()}\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import * as React from 'react';\nimport {withTranslation, WithTranslation} from 'react-i18next';\n\nimport '../../assets/search-box.css';\nimport {ComponentType, CSSProperties} from 'react';\n\nimport Icon from '../icon/Icon';\nimport Button from '../button/Button';\nimport {TranslationDescriptor} from '../../types/i18n';\n\nexport type Props = {\n\t/** Placeholder text for input field `(string | TranslationDescriptor)` */\n\tplaceholder: string | TranslationDescriptor;\n\n\t/** Function to call if the input changes */\n\tonChange: (value: string) => void;\n\n\t/** Function to call if the search is triggered (button press or return in search field) */\n\tonSubmit?: (value: string) => void;\n\n\t/** if true, a button is shown that clears the input */\n\tclearable?: boolean;\n\n\t/** Value that should initially be displayed in the text box */\n\tinitialValue: string | null | undefined;\n\n\t/** Wrapper styles */\n\tstyle: CSSProperties | undefined;\n};\n\ntype State = {\n\tquery: string;\n};\n\nconst ClearButton = ({\n\tonChange,\n\tinputElement,\n\tstyle\n}: {\n\tonChange: (value: string) => void;\n\tinputElement: HTMLElement | null | undefined;\n\tstyle?: React.CSSProperties;\n}) => (\n\t<Button\n\t\tnaked\n\t\tonClick={() => {\n\t\t\tonChange('');\n\n\t\t\tif (inputElement) {\n\t\t\t\tinputElement.focus();\n\t\t\t}\n\t\t}}\n\t\tstyle={style}\n\t>\n\t\t<Icon del />\n\t</Button>\n);\n\n/**\n * SearchBox is used for searching content and provides a set of `props` for different user experiences\n */\nclass SearchBox extends React.Component<Props & WithTranslation, State> {\n\tstate: State = {\n\t\tquery: this.props.initialValue || ''\n\t};\n\tinput: HTMLInputElement | null | undefined;\n\n\tprintPlaceholder(): string {\n\t\tconst {t, placeholder} = this.props;\n\n\t\tif (typeof placeholder === 'object') {\n\t\t\treturn t(placeholder.id, {\n\t\t\t\tdefaultValue: placeholder.defaultValue\n\t\t\t});\n\t\t} else {\n\t\t\treturn placeholder;\n\t\t}\n\t}\n\n\thandleChange: (value: string) => void = (value: string) => {\n\t\tconst {onChange} = this.props;\n\t\tthis.setState({\n\t\t\tquery: value\n\t\t});\n\t\tonChange(value);\n\t};\n\n\thandleKeyUp: (arg0: any) => void = ({key}) => {\n\t\tconst {onSubmit} = this.props;\n\t\tconst {query} = this.state;\n\n\t\tif (key === 'Enter' && typeof onSubmit === 'function') {\n\t\t\tonSubmit(query);\n\t\t}\n\t};\n\n\trender() {\n\t\tconst {onSubmit, style, clearable} = this.props;\n\t\tconst {query} = this.state;\n\t\treturn (\n\t\t\t<div className=\"search-box\" style={style}>\n\t\t\t\t<input\n\t\t\t\t\tref={(input) => {\n\t\t\t\t\t\tthis.input = input;\n\t\t\t\t\t}}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tvalue={query}\n\t\t\t\t\tplaceholder={this.printPlaceholder()}\n\t\t\t\t\tonKeyUp={this.handleKeyUp}\n\t\t\t\t\tonChange={({target: {value}}) => this.handleChange(value)}\n\t\t\t\t/>\n\t\t\t\t{typeof onSubmit === 'function' ? (\n\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t{query && clearable && (\n\t\t\t\t\t\t\t<ClearButton\n\t\t\t\t\t\t\t\tonChange={this.handleChange}\n\t\t\t\t\t\t\t\tinputElement={this.input}\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tright: 30\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<Button naked onClick={() => onSubmit(query)}>\n\t\t\t\t\t\t\t<Icon search />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</React.Fragment>\n\t\t\t\t) : query && clearable ? (\n\t\t\t\t\t<ClearButton onChange={this.handleChange} inputElement={this.input} />\n\t\t\t\t) : (\n\t\t\t\t\t<Button naked disabled>\n\t\t\t\t\t\t<Icon search />\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nexport default withTranslation()(SearchBox) as ComponentType<Props>;\n"],"mappings":"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"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/components/accordion/Accordion.tsx","../src/components/accordionComponents/AccordionItem.tsx","../src/components/button/Button.tsx","../src/components/button/ButtonRow.tsx","../src/hooks/useOutsideClick.ts","../src/components/modalComponents/ModalWindow.tsx","../src/components/modal/Modal.tsx","../src/components/modalComponents/ModalContainer.tsx","../src/components/spinner/Spinner.tsx","../src/components/spinner/SpinnerContainer.tsx","../src/components/input/Checkbox.tsx","../src/components/confirm/utils.ts","../src/components/confirm/Confirm.tsx","../src/components/confirm/ConfirmProvider.tsx","../src/components/confirm/useConfirm.ts","../src/components/confirm/withConfirm.tsx","../src/assets/svg/icon_add.svg","../src/assets/svg/icon_cross.svg","../src/assets/svg/icon_edit.svg","../src/assets/svg/icon_gear.svg","../src/assets/svg/icon_duplicate.svg","../src/assets/svg/icon_download.svg","../src/assets/svg/icon_lupe.svg","../src/assets/svg/icon_key.svg","../src/assets/svg/icon_reload.svg","../src/assets/svg/icon_fullscreen.svg","../src/assets/svg/icon_help_light.svg","../src/assets/svg/icon_star.svg","../src/components/icon/Icon.tsx","../src/components/label/Label.tsx","../src/components/popup/Popup.tsx","../src/components/bubble/Bubble.tsx","../src/components/tooltip/Tooltip.tsx","../src/components/tabs/Tabs.tsx","../src/components/input/SearchBox.tsx"],"sourcesContent":["import * as React from 'react';\n\nexport type Props = {\n\t/** Should contain Array of &lt;AccordionItems/&gt; elements */\n\tchildren?: Array<React.ReactNode>;\n\n\t/** (Optional) sets additional class for styling purposes */\n\taccordionClass?: string;\n\n\t/** Function to be called if active &lt;AccordionItems/&gt; gets changed */\n\tonPageChange?: (newPageNumber: number) => any;\n\n\t/** (Optional) Index of the &lt;AccordionItem/&gt; which should be opened on initial render cycle */\n\tdefaultOpenPageIndex?: number;\n};\n\ntype State = {\n\tcurrentPageIndex: number;\n};\n\n/**\n * Accordions are best used to display homogenous information, e.g. multiple configurations which would take up a lot of space otherwise.\n */\nexport default class Accordion extends React.Component<Props, State> {\n\tstate: State = {\n\t\tcurrentPageIndex: -1\n\t};\n\n\tcomponentDidMount() {\n\t\tconst {defaultOpenPageIndex} = this.props;\n\n\t\tif (defaultOpenPageIndex !== null && defaultOpenPageIndex !== undefined) {\n\t\t\tthis.handleAccordionToggle(defaultOpenPageIndex);\n\t\t}\n\t}\n\n\thandleAccordionToggle: (index: number) => void = (index: number) => {\n\t\tconst {onPageChange} = this.props;\n\t\tconst newPageIndex = this.state.currentPageIndex !== index ? index : -1;\n\t\tthis.setState({\n\t\t\tcurrentPageIndex: newPageIndex\n\t\t});\n\n\t\tif (onPageChange) {\n\t\t\tonPageChange(newPageIndex);\n\t\t}\n\t};\n\n\trender() {\n\t\tconst {children, accordionClass} = this.props;\n\t\tconst {currentPageIndex} = this.state;\n\t\treturn (\n\t\t\t<div className={accordionClass ? `di accordion ${accordionClass}` : 'di accordion'}>\n\t\t\t\t{children &&\n\t\t\t\t\tchildren.map((child: any, index) =>\n\t\t\t\t\t\tchild ? (\n\t\t\t\t\t\t\t<child.type\n\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\t\tisOpen={currentPageIndex === index}\n\t\t\t\t\t\t\t\ttoggle={() => this.handleAccordionToggle(index)}\n\t\t\t\t\t\t\t\t{...child.props}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null\n\t\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import * as React from 'react';\n\ntype Info = {\n\ttext: string;\n\tcssStyle: Record<string, any>;\n};\n\nexport type Props = {\n\t/** (Optional) Displays either numeric- or text-based badge in front of the &lt;AccordionItems/&gt; */\n\tbadge?: (number | string | React.ReactNode) | null | undefined;\n\n\t/** @ignore */\n\tchildren?: React.ReactNode;\n\n\t/** (Optional) Displays additional information, which is visible in \"closed\" state */\n\tinfo1?: Info;\n\n\t/** If true, expands &lt;AccordionItems/&gt; */\n\tisOpen?: boolean;\n\n\t/** (Optional) Sets additional classes for styling purposes */\n\titemClasses?: string;\n\n\t/** Title of &lt;AccordionItems/&gt; */\n\ttitle: string | React.ReactNode;\n\n\t/** (Optional) Tooltip of &lt;AccordionItems/&gt; */\n\ttitleTooltip?: string;\n\n\t/** Function which is called to open/close &lt;AccordionItems/&gt; */\n\ttoggle?: () => void;\n\n\t/** (Optional) Enables additional handler, e.g., for editing or deleting &lt;AccordionItems/&gt; */\n\ttools?: Array<React.ReactNode>;\n\n\t/** @ignore */\n\t'data-testid'?: string | undefined;\n};\n\nexport default class AccordionItem extends React.PureComponent<Props> {\n\trender() {\n\t\tconst {badge, children, isOpen, info1, itemClasses, title, titleTooltip, toggle, tools, ...rest} = this.props;\n\t\tconst accordionItemClasses = ['item'];\n\n\t\tif (itemClasses) accordionItemClasses.push(itemClasses);\n\t\tif (isOpen) accordionItemClasses.push('open');\n\n\t\treturn (\n\t\t\t<div className={accordionItemClasses.join(' ')}>\n\t\t\t\t<div className=\"head\">\n\t\t\t\t\t<span className=\"title\" onClick={toggle} data-testid={rest['data-testid']}>\n\t\t\t\t\t\t<h1 title={titleTooltip}>{title}</h1>\n\t\t\t\t\t\t{badge && (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName=\"di label\"\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tmargin: '0 0 0 10px',\n\t\t\t\t\t\t\t\t\tbackgroundColor: '#ddd',\n\t\t\t\t\t\t\t\t\tborderColor: 'transparent'\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{badge}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{info1 && <span style={info1.cssStyle}>{info1.text}</span>}\n\t\t\t\t\t</span>\n\t\t\t\t\t<span className=\"tools\">\n\t\t\t\t\t\t{tools &&\n\t\t\t\t\t\t\ttools.map((toolComponent, index) => (\n\t\t\t\t\t\t\t\t<span key={index} className=\"tool\">\n\t\t\t\t\t\t\t\t\t{toolComponent}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"cont\">{children}</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import React, {ComponentType} from 'react';\nimport cx from 'classnames';\nimport {withTranslation, WithTranslation} from 'react-i18next';\n\nimport {TranslationDescriptor} from '../../types/i18n';\n\nexport type Props = {\n\t/** primary style, mutually exclusive with _danger_ and _naked_ */\n\tprimary?: boolean;\n\n\t/** danger style, mutually exclusive with _primary_ and _naked_ */\n\tdanger?: boolean;\n\n\t/** render the button without border and background color, mutually exclusive with _primary_ and _danger_ */\n\tnaked?: boolean;\n\n\t/** a title tooltip */\n\ttitle?: (TranslationDescriptor | null | undefined) | string;\n\n\t/** button | submit | reset */\n\ttype?: 'button' | 'submit' | 'reset';\n\n\t/** a click handler */\n\tonClick?: (...args: Array<any>) => any;\n\n\t/** a smaller button */\n\tsmall?: boolean;\n\n\t/** disable the button */\n\tdisabled?: boolean;\n\n\t/** @ignore */\n\tchildren?: React.ReactNode;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** @ignore */\n\tstyle?: React.CSSProperties;\n\n\t/** @ignore */\n\t'data-testid'?: string;\n\n\t/** @ignore */\n\ttabIndex?: number;\n};\n\n/**\n * Buttons are used to inform the user about a potential user interaction, which then on interaction causes an action.\n * To create a standardized look and feel, different props can be passed to the Button.\n */\nfunction Button({\n\tchildren,\n\ttitle,\n\ttype,\n\tdisabled,\n\tonClick,\n\tstyle,\n\ttabIndex,\n\tt,\n\tprimary,\n\tdanger,\n\tnaked,\n\tclassName,\n\tsmall,\n\t...rest\n}: Props & WithTranslation) {\n\tlet btnTitle = title;\n\n\tif (title && typeof title !== 'string') {\n\t\tbtnTitle = t(title.id, {\n\t\t\tdefaultValue: title.defaultValue\n\t\t});\n\t}\n\n\treturn (\n\t\t<button\n\t\t\tdata-testid={rest['data-testid']}\n\t\t\ttype={type || 'button'}\n\t\t\tclassName={cx('di button', className, {small, primary, danger, link: naked})}\n\t\t\ttitle={typeof btnTitle === 'string' ? btnTitle : undefined}\n\t\t\tdisabled={disabled}\n\t\t\tonClick={onClick}\n\t\t\tstyle={style}\n\t\t\ttabIndex={tabIndex}\n\t\t>\n\t\t\t{children}\n\t\t</button>\n\t);\n}\n\nexport default withTranslation()(Button) as ComponentType<Props>;\n","import * as React from 'react';\n\nexport type Props = {\n\t/** should contain &lt;Button /&gt; elements */\n\tchildren: React.ReactNode;\n\n\t/** show a horizontal row above the buttons */\n\tdividing?: boolean;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** @ignore */\n\tstyle?: React.CSSProperties;\n};\n\n/**\n * ButtonRows align Buttons nicely for all relevant and/or related user actions such as saving or canceling changes.\n * To separate the ButtonRow from the content, the extra property `dividing` can be used.\n */\nconst ButtonRow = ({children, dividing, className, style}: Props) => (\n\t<div style={style} className={`di button-row ${dividing ? 'dividing' : ''} ${className || ''}`}>\n\t\t{children}\n\t</div>\n);\n\nButtonRow.defaultProps = {\n\tdividing: false\n};\n\nexport default ButtonRow;\n","import {useEffect, useRef} from 'react';\n\nconst isTouchEvent = (event: Event): event is TouchEvent => {\n\treturn !!(event as any).touches;\n};\n\nconst isInsideBoundingRect = (element: HTMLElement, event: MouseEvent | TouchEvent) => {\n\tconst rect = element.getBoundingClientRect();\n\n\tlet x, y;\n\tif (isTouchEvent(event)) {\n\t\tx = event.touches[0].pageX;\n\t\ty = event.touches[0].pageY;\n\t} else {\n\t\tx = event.pageX;\n\t\ty = event.pageY;\n\t}\n\n\treturn rect.left <= x && rect.right >= x && rect.top <= y && rect.bottom >= y;\n};\n\nconst useOutsideClick = (\n\telements: Array<HTMLElement | null>,\n\tcallback: (evt: MouseEvent | TouchEvent | undefined) => void\n) => {\n\tconst callbackRef = useRef(callback);\n\n\tuseEffect(() => {\n\t\tcallbackRef.current = callback;\n\t}, [callback]);\n\n\tuseEffect(() => {\n\t\tconst listener = (event: MouseEvent | TouchEvent) => {\n\t\t\tconst elementsNonNull = elements.filter((element) => element != null) as HTMLElement[];\n\t\t\tif (\n\t\t\t\telementsNonNull.every(\n\t\t\t\t\t(element) =>\n\t\t\t\t\t\telement !== event.target &&\n\t\t\t\t\t\t!element.contains(event.target as any) &&\n\t\t\t\t\t\t!isInsideBoundingRect(element, event)\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcallbackRef.current(event);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('mousedown', listener, true);\n\t\tdocument.addEventListener('touchstart', listener, true);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('mousedown', listener, true);\n\t\t\tdocument.removeEventListener('touchstart', listener, true);\n\t\t};\n\t}, [elements]);\n};\n\nexport default useOutsideClick;\n","import {useEffect, useRef, useState} from 'react';\nimport Draggable from 'react-draggable';\n\nimport {Props} from '../modal/Modal';\nimport useOutsideClick from '../../hooks/useOutsideClick';\n\nexport default function ModalWindow({className, width, header, content, footer, onOutsideClick}: Props) {\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst [rootElement, setRootElement] = useState<HTMLElement | null>(null);\n\n\tuseEffect(() => {\n\t\tsetRootElement(ref.current);\n\t}, []);\n\n\tuseOutsideClick([rootElement], () => {\n\t\tif (onOutsideClick) onOutsideClick();\n\t});\n\n\treturn (\n\t\t<Draggable handle=\".modal-header\" nodeRef={ref}>\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tclassName={`modal-window ${className || ''}`}\n\t\t\t\tstyle={{\n\t\t\t\t\tmaxWidth: width\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{header && <div className=\"modal-header\">{header}</div>}\n\t\t\t\t{content && <div className=\"modal-content\">{content}</div>}\n\t\t\t\t{footer && <div className=\"modal-footer\">{footer}</div>}\n\t\t\t</div>\n\t\t</Draggable>\n\t);\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport ModalWindow from '../modalComponents/ModalWindow';\n\nexport type Props = {\n\theader?: React.ReactNode;\n\tcontent?: React.ReactNode;\n\tfooter?: React.ReactNode;\n\n\t/** the CSS width setting, either a number or string */\n\twidth?: string | number;\n\tclassName?: string;\n\n\t/** callback function that is executed when the users click outside the modal */\n\tonOutsideClick?: (event?: Event) => void;\n\tonMouseDown?: (event: React.SyntheticEvent<HTMLElement>) => void;\n};\n\nexport default class Modal extends React.Component<\n\tProps,\n\t{\n\t\tclassName: string;\n\t}\n> {\n\tstatic defaultProps: {\n\t\twidth: string;\n\t} = {\n\t\twidth: '60%'\n\t};\n\tcontainer: HTMLDivElement | undefined;\n\tmodalRoot: HTMLElement | null | undefined;\n\ttimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n\tconstructor(props: Props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tclassName: 'di modal'\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.container = document.createElement('div');\n\t\tthis.modalRoot = document.getElementById('modal-root');\n\n\t\tif (this.modalRoot) {\n\t\t\tthis.modalRoot.appendChild(this.container);\n\t\t} else if (document.body) {\n\t\t\tdocument.body.appendChild(this.container);\n\t\t}\n\n\t\tif (this.props.onOutsideClick) {\n\t\t\twindow.addEventListener('keydown', this.keyEventHandler);\n\t\t}\n\n\t\t// set the show class after 10ms for animation\n\t\tthis.timeoutId = setTimeout(\n\t\t\t() =>\n\t\t\t\t// eslint-disable-next-line react/no-did-mount-set-state -- deferred via setTimeout, not a synchronous mount update\n\t\t\t\tthis.setState({\n\t\t\t\t\tclassName: `di modal show ${this.props.className || ''}`\n\t\t\t\t}),\n\t\t\t10\n\t\t);\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif (this.container) {\n\t\t\tif (this.modalRoot) {\n\t\t\t\tthis.modalRoot.removeChild(this.container);\n\t\t\t} else if (document.body) {\n\t\t\t\tdocument.body.removeChild(this.container);\n\t\t\t}\n\t\t}\n\n\t\tif (this.props.onOutsideClick) {\n\t\t\twindow.removeEventListener('keydown', this.keyEventHandler);\n\t\t}\n\n\t\tif (this.timeoutId) {\n\t\t\tclearTimeout(this.timeoutId);\n\t\t}\n\t}\n\n\tkeyEventHandler: (event: KeyboardEvent) => void = (event: KeyboardEvent) => {\n\t\tif (event.key === 'Escape' && this.props.onOutsideClick) {\n\t\t\tthis.props.onOutsideClick(event);\n\t\t}\n\t};\n\n\trender() {\n\t\tif (!this.container) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn ReactDOM.createPortal(\n\t\t\t<div className={this.state.className} onMouseDown={this.props.onMouseDown}>\n\t\t\t\t<ModalWindow {...this.props} />\n\t\t\t</div>,\n\t\t\tthis.container\n\t\t);\n\t}\n}\n","import React from 'react';\n\nexport type Props = Record<string, never>;\n\nexport default class ModalContainer extends React.PureComponent<Props> {\n\trender() {\n\t\treturn <div id=\"modal-root\" />;\n\t}\n}\n","import React from 'react';\n\nexport type Props = {\n\t/** the size of the Spinner in px */\n\tsize?: number;\n\n\t/** @ignore */\n\tcenter?: boolean;\n\n\t/** @ignore */\n\t'data-testid'?: string;\n};\n\n/**\n * Spinners usually show a loading indication.\n */\nexport default class Spinner extends React.Component<Props> {\n\tstatic defaultProps = {\n\t\tsize: 56,\n\t\tcenter: false\n\t};\n\n\trender() {\n\t\tconst {size = 56, center, ...dataAttrs} = this.props;\n\t\tlet style: React.CSSProperties = {\n\t\t\twidth: size,\n\t\t\theight: size\n\t\t};\n\n\t\tif (center) {\n\t\t\tstyle = {\n\t\t\t\t...style,\n\t\t\t\tposition: 'absolute',\n\t\t\t\ttop: '50%',\n\t\t\t\tleft: '50%',\n\t\t\t\tmarginTop: -size / 2,\n\t\t\t\tmarginLeft: -size / 2\n\t\t\t};\n\t\t}\n\n\t\treturn <div className=\"di spinner\" style={style} {...dataAttrs} />;\n\t}\n}\n","import React from 'react';\n\nimport Spinner from './Spinner';\n\nexport type Props = {\n\t/** controls the display of the Spinner */\n\tshow: boolean;\n\n\t/** the size of the Spinner in px */\n\tsize?: number;\n\n\t/** content to be rendered once the loading is done */\n\tchildren?: React.ReactNode;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** @ignore */\n\t'data-testid'?: string;\n};\n\n/**\n * SpinnerContainer wraps the entire content and displays a loading indicator until the loading is done.\n */\nexport default class SpinnerContainer extends React.Component<Props> {\n\tstatic defaultProps: {\n\t\tsize: number;\n\t} = {\n\t\tsize: 56\n\t};\n\n\trender() {\n\t\tconst {show, size, children, className} = this.props;\n\t\tconst classNames = `di spinner-wrapper ${className ? className : ''}`;\n\t\treturn (\n\t\t\t<div className={classNames}>\n\t\t\t\t<div\n\t\t\t\t\tclassName={`di spinner-container ${show ? 'visible' : ''}`}\n\t\t\t\t\tdata-testid={this.props['data-testid']}\n\t\t\t\t>\n\t\t\t\t\t<Spinner size={size} center />\n\t\t\t\t</div>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import * as React from 'react';\nimport {withTranslation, WithTranslation} from 'react-i18next';\n\nimport {TranslationDescriptor} from '../../types/i18n';\n\nexport type Props = {\n\t/** input type selector */\n\ttype?: 'checkbox' | 'radio' | 'toggle';\n\n\t/** Flag to preselect the status of the checkbox */\n\tvalue: boolean;\n\n\t/** Function, executed when toggling the checkbox */\n\tonChange: (nextStatus: boolean) => void;\n\n\t/** Optional input element tooltip */\n\ttitle?: TranslationDescriptor;\n\n\t/** Optional label for checkbox and radio button*/\n\tlabel?: TranslationDescriptor;\n\n\t/** visually indicate that the checkbox is disabled and disable onChange handler */\n\tdisabled?: boolean;\n\n\t/** Optional flag for toggle type: Render a small Toggle */\n\ttoggleSmall?: boolean;\n\n\t/** Optional flag for toggle type: Sets the slider color when the Toggle is truthy */\n\ttoggleColor?: string;\n\n\t/** @ignore */\n\t'data-testid'?: string;\n\n\t/** @ignore */\n\t'wrapper-data-testid'?: string;\n\n\t/** @ignore */\n\t'innerdiv-data-testid'?: string;\n};\n\nconst getWrapperClassName = (type: string, small: boolean) => {\n\tswitch (type) {\n\t\tcase 'checkbox':\n\t\tcase 'radio':\n\t\t\treturn 'di checkbox';\n\n\t\tcase 'toggle':\n\t\t\treturn small ? 'di toggle toggle-small' : 'di toggle';\n\n\t\tdefault:\n\t\t\tthrow Error(`type not support: ${type}`);\n\t}\n};\n\nconst getCheckboxClassName = (type: string, small: boolean) => {\n\tswitch (type) {\n\t\tcase 'checkbox':\n\t\t\treturn 'box';\n\n\t\tcase 'radio':\n\t\t\treturn 'radio';\n\n\t\tcase 'toggle':\n\t\t\treturn small ? 'switch switch-small' : 'switch';\n\n\t\tdefault:\n\t\t\tthrow Error(`type not support: ${type}`);\n\t}\n};\n\n/**\n * Checkbox for enabling user interaction can have one of multiple types which are defined via the `type` prop.\n */\nconst Checkbox = ({\n\ttype = 'checkbox',\n\tvalue,\n\tonChange,\n\ttitle,\n\tlabel,\n\tdisabled = false,\n\ttoggleSmall = false,\n\ttoggleColor = '#259b23',\n\tt,\n\t...other\n}: Props & WithTranslation) => {\n\tconst style =\n\t\ttype === 'toggle'\n\t\t\t? {\n\t\t\t\t\tbackgroundColor: value ? toggleColor : 'gray'\n\t\t\t\t}\n\t\t\t: {};\n\tconst tooltip = title\n\t\t? t(title.id, {\n\t\t\t\tdefaultValue: title.defaultValue\n\t\t\t})\n\t\t: undefined;\n\tconst labelText = label\n\t\t? t(label.id, {\n\t\t\t\tdefaultValue: label.defaultValue\n\t\t\t})\n\t\t: null;\n\treturn (\n\t\t<label\n\t\t\ttitle={tooltip}\n\t\t\tclassName={getWrapperClassName(type, toggleSmall)}\n\t\t\tdata-testid={other['wrapper-data-testid']}\n\t\t>\n\t\t\t<input\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tchecked={value}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonChange={() => onChange(!value)}\n\t\t\t\tdata-testid={other['data-testid']}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclassName={getCheckboxClassName(type, toggleSmall)}\n\t\t\t\tstyle={style}\n\t\t\t\tdata-testid={other['innerdiv-data-testid']}\n\t\t\t/>\n\t\t\t{label && <span className=\"textlabel\">{labelText}</span>}\n\t\t</label>\n\t);\n};\n\nexport default withTranslation()(Checkbox) as React.ComponentType<Props>;\n","import * as React from 'react';\n\nimport {TranslationDescriptor} from '../../types/i18n';\n\nexport function isTranslationDescriptor(\n\targ: TranslationDescriptor | string | React.ReactElement\n): arg is TranslationDescriptor {\n\tconst result =\n\t\ttypeof arg === 'object' && typeof (arg as any).id === 'string' && typeof (arg as any).defaultValue === 'string';\n\n\tif (result) {\n\t\tconsole.warn(\n\t\t\t'Please use strings instead of TranslationDescriptors to initialize the Confirm modal, because TranslationDescriptors are deprecated'\n\t\t);\n\t}\n\n\treturn result;\n}\n","import * as React from 'react';\nimport {Trans} from 'react-i18next';\n\nimport Modal from '../modal/Modal';\nimport Button from '../button/Button';\nimport {TranslationDescriptor} from '../../types/i18n';\nimport {isTranslationDescriptor} from './utils';\n\nexport type Props = {\n\ttitle: string | TranslationDescriptor;\n\tmessage: string | React.ReactElement | TranslationDescriptor;\n\n\t/** @ignore */\n\tonAccept: (...args: Array<any>) => any;\n\n\t/** @ignore */\n\tonDecline: (...args: Array<any>) => any;\n\tacceptButtonLabel?: string | TranslationDescriptor;\n\tdeclineButtonLabel?: string | TranslationDescriptor;\n\tacceptButtonStyle?: 'primary' | 'danger';\n};\n\nfunction transformTextToElement(\n\tmessage: TranslationDescriptor | string | React.ReactElement\n): React.ReactElement | string {\n\tif (isTranslationDescriptor(message)) {\n\t\treturn <Trans i18nKey={message.id}>{message.defaultValue}</Trans>;\n\t}\n\treturn message;\n}\n\n/**\n * Confirm enables the possibility to open up a dialog within a modal, requiring additional user actions.\n * This component should not be used directly, instead use `@withConfirm` to inject a promise based confirm method\n */\nexport default function Confirm({\n\ttitle,\n\tmessage,\n\tonAccept,\n\tonDecline,\n\tacceptButtonLabel,\n\tdeclineButtonLabel,\n\tacceptButtonStyle = 'primary'\n}: Props) {\n\treturn (\n\t\t<Modal\n\t\t\theader={transformTextToElement(title)}\n\t\t\tcontent={transformTextToElement(message)}\n\t\t\tfooter={\n\t\t\t\t<div>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tprimary={acceptButtonStyle === 'primary'}\n\t\t\t\t\t\tdanger={acceptButtonStyle === 'danger'}\n\t\t\t\t\t\tonClick={onAccept}\n\t\t\t\t\t>\n\t\t\t\t\t\t{acceptButtonLabel ? (\n\t\t\t\t\t\t\ttransformTextToElement(acceptButtonLabel)\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Trans i18nKey=\"form.accept\">Accept</Trans>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button onClick={onDecline}>\n\t\t\t\t\t\t{declineButtonLabel ? (\n\t\t\t\t\t\t\ttransformTextToElement(declineButtonLabel)\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Trans i18nKey=\"form.decline\">Decline</Trans>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\twidth={500}\n\t\t/>\n\t);\n}\n","import React, {createContext, useState} from 'react';\n\nimport Confirm, {Props as ConfirmProps} from './Confirm';\n\ntype ConfirmOptions = {\n\ttitle: string;\n\tmessage: string | React.ReactElement;\n\tacceptButtonLabel?: string;\n\tdeclineButtonLabel?: string;\n\tacceptButtonStyle?: 'primary' | 'danger';\n};\n\nexport const ConfirmContext = createContext<{\n\tconfirm: (options: ConfirmOptions) => Promise<boolean>;\n}>({\n\tconfirm: () => Promise.reject(new Error('ConfirmProvider is missing!'))\n});\n\nfunction ConfirmProvider({children}: React.PropsWithChildren<Record<string, unknown>>) {\n\tconst [visible, setVisible] = useState<boolean>(false);\n\tconst [confirmProps, setConfirmProps] = useState<ConfirmProps>({\n\t\ttitle: '',\n\t\tmessage: '',\n\t\tonAccept: () => {},\n\t\tonDecline: () => {}\n\t});\n\n\tasync function confirm(options: ConfirmOptions) {\n\t\treturn new Promise<boolean>((resolve) => {\n\t\t\tsetVisible(true);\n\t\t\tsetConfirmProps({\n\t\t\t\t...options,\n\t\t\t\tonAccept: () => {\n\t\t\t\t\tsetVisible(false);\n\t\t\t\t\tresolve(true);\n\t\t\t\t},\n\t\t\t\tonDecline: () => {\n\t\t\t\t\tsetVisible(false);\n\t\t\t\t\tresolve(false);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\treturn (\n\t\t<ConfirmContext.Provider value={{confirm}}>\n\t\t\t{children}\n\t\t\t{visible && <Confirm {...confirmProps} />}\n\t\t</ConfirmContext.Provider>\n\t);\n}\n\nexport default ConfirmProvider;\n","import {useContext} from 'react';\n\nimport {ConfirmContext} from './ConfirmProvider';\n\nexport default function useConfirm() {\n\tconst context = useContext(ConfirmContext);\n\tif (!context) {\n\t\tthrow new Error('ConfirmProvider is missing');\n\t}\n\tconst {confirm} = context;\n\treturn confirm;\n}\n","import React from 'react';\nimport {useTranslation} from 'react-i18next';\n\nimport {TranslationDescriptor} from '../../types/i18n';\nimport useConfirm from './useConfirm';\nimport ConfirmProvider from './ConfirmProvider';\nimport {isTranslationDescriptor} from './utils';\n\nexport type ConfirmProps = {\n\tconfirm: (\n\t\ttitle: string | TranslationDescriptor,\n\t\tmessage: string | TranslationDescriptor | React.ReactElement,\n\t\tacceptButtonLabel?: string | TranslationDescriptor,\n\t\tdeclineButtonLabel?: string | TranslationDescriptor,\n\t\tresolveWithConfirmation?: boolean,\n\t\tacceptButtonStyle?: 'primary' | 'danger'\n\t) => Promise<void | boolean>;\n};\n\nexport default function withConfirm<P extends object>(WrappedComponent: React.ComponentType<P & ConfirmProps>) {\n\tfunction WithConfirm(props: P) {\n\t\tconst confirm = useConfirm();\n\t\tconst {t} = useTranslation();\n\n\t\tfunction trans(arg: TranslationDescriptor | string) {\n\t\t\tif (isTranslationDescriptor(arg)) {\n\t\t\t\treturn t(arg.id, {defaultValue: arg.defaultValue});\n\t\t\t}\n\t\t\treturn arg;\n\t\t}\n\n\t\tasync function deprecatedConfirm(\n\t\t\ttitle: string | TranslationDescriptor,\n\t\t\tmessage: string | TranslationDescriptor | React.ReactElement,\n\t\t\tacceptButtonLabel?: string | TranslationDescriptor,\n\t\t\tdeclineButtonLabel?: string | TranslationDescriptor,\n\t\t\tresolveWithConfirmation?: boolean,\n\t\t\tacceptButtonStyle?: 'primary' | 'danger'\n\t\t): Promise<boolean | void> {\n\t\t\tconst accepted = await confirm({\n\t\t\t\ttitle: trans(title),\n\t\t\t\tmessage: isTranslationDescriptor(message) ? trans(message) : message,\n\t\t\t\tacceptButtonLabel: acceptButtonLabel ? trans(acceptButtonLabel) : undefined,\n\t\t\t\tdeclineButtonLabel: declineButtonLabel ? trans(declineButtonLabel) : undefined,\n\t\t\t\tacceptButtonStyle\n\t\t\t});\n\n\t\t\tif (resolveWithConfirmation) {\n\t\t\t\treturn accepted;\n\t\t\t} else if (!accepted) {\n\t\t\t\treturn new Promise(() => {});\n\t\t\t}\n\t\t}\n\n\t\treturn <WrappedComponent {...props} confirm={deprecatedConfirm} />;\n\t}\n\n\treturn function WithConfirmWrapper(props: P) {\n\t\treturn (\n\t\t\t<ConfirmProvider>\n\t\t\t\t<WithConfirm {...props} />\n\t\t\t</ConfirmProvider>\n\t\t);\n\t};\n}\n","export default \"data:image/svg+xml,%3csvg%20id='icon-add_24_sga'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cpolygon%20id='plus'%20points='20%2010%2014%2010%2014%204%2010%204%2010%2010%204%2010%204%2014%2010%2014%2010%2020%2014%2020%2014%2014%2020%2014%2020%2010'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='icon-cross_24_sga'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cpolygon%20id='icon-cross_24'%20points='20%206.28%2017.87%204%2012%209.78%206.13%204%204%206.28%209.78%2011.97%204%2017.66%206.13%2019.93%2012%2014.15%2017.87%2019.93%2020%2017.66%2014.22%2011.97%2020%206.28'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='icon-edit-24_sga'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cg%20id='stift'%3e%3cpath%20d='M7.35,12.65a.5.5,0,0,0,0,.7l3.3,3.3a.5.5,0,0,0,.7,0l8.3-8.3A1.4,1.4,0,0,0,20,7.5v-1a1.4,1.4,0,0,0-.35-.85l-1.3-1.3A1.4,1.4,0,0,0,17.5,4h-1a1.4,1.4,0,0,0-.85.35Z'/%3e%3c/g%3e%3cpath%20d='M5.9,14.49c.06-.27.26-.33.45-.14l3.3,3.3c.19.19.13.39-.14.45l-4,.8a.3.3,0,0,1-.39-.39Z'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='icon-gear-24_sga'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cg%20id='icon-gear-24_sga-2'%20data-name='icon-gear-24_sga'%3e%3cpath%20d='M22.82,14.06A1.25,1.25,0,0,0,24,13,7.66,7.66,0,0,0,24,12,7.66,7.66,0,0,0,24,11a1.25,1.25,0,0,0-1.13-1l-1.09,0A1.49,1.49,0,0,1,20.44,9c-.15-.47-.44-2-.07-2.37l.74-.81a1.16,1.16,0,0,0,0-1.5L19.7,2.87a1.16,1.16,0,0,0-1.5,0l-.81.74a1.5,1.5,0,0,1-1.54.27c-.44-.23-1.72-1.08-1.74-1.63l0-1.09A1.25,1.25,0,0,0,13,.05a7.66,7.66,0,0,0-1,0,7.66,7.66,0,0,0-1,.05,1.25,1.25,0,0,0-1,1.13l0,1.09A1.52,1.52,0,0,1,9,3.56c-.47.15-2,.44-2.37.07L5.8,2.89a1.16,1.16,0,0,0-1.5,0L2.86,4.3a1.18,1.18,0,0,0,0,1.5l.74.81A1.5,1.5,0,0,1,3.9,8.15c-.23.44-1.08,1.72-1.63,1.74l-1.09,0A1.25,1.25,0,0,0,.05,11a7.66,7.66,0,0,0,0,1,7.66,7.66,0,0,0,.05,1,1.25,1.25,0,0,0,1.13,1l1.09,0A1.47,1.47,0,0,1,3.55,15c.16.48.45,2,.08,2.37l-.74.81a1.16,1.16,0,0,0,0,1.5L4.3,21.13a1.16,1.16,0,0,0,1.5,0l.81-.74a1.5,1.5,0,0,1,1.54-.27c.44.23,1.72,1.08,1.75,1.63l0,1.09A1.25,1.25,0,0,0,11,24,7.66,7.66,0,0,0,12,24,7.66,7.66,0,0,0,13,24a1.25,1.25,0,0,0,1-1.13l0-1.09A1.49,1.49,0,0,1,15,20.44c.47-.15,2-.44,2.37-.07l.81.74a1.16,1.16,0,0,0,1.5,0l1.43-1.43a1.16,1.16,0,0,0,0-1.5l-.74-.81a1.5,1.5,0,0,1-.27-1.54c.23-.44,1.08-1.72,1.63-1.74ZM12,15.5A3.5,3.5,0,1,1,15.5,12,3.5,3.5,0,0,1,12,15.5Z'/%3e%3c/g%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cg%3e%3cpath%20d='M22.1,4.91a3,3,0,0,0-3-3H6.44a2.4,2.4,0,0,1,1.34-.4h12.6A2.12,2.12,0,0,1,22.5,3.62V17.26a1.42,1.42,0,0,1-.4,1Z'/%3e%3cpath%20d='M20.38,1H7.78A3,3,0,0,0,5.26,2.4H19.09A2.51,2.51,0,0,1,21.6,4.91V19.12A1.94,1.94,0,0,0,23,17.26V3.62A2.62,2.62,0,0,0,20.38,1Z'/%3e%3c/g%3e%3cg%3e%3cpath%20d='M4,21.5A1.5,1.5,0,0,1,2.5,20V5.8A1.5,1.5,0,0,1,4,4.3H18.2a1.5,1.5,0,0,1,1.5,1.5V20a1.5,1.5,0,0,1-1.5,1.5ZM9.5,18a.5.5,0,0,0,.5.5h2a.5.5,0,0,0,.5-.5V14.5H16a.5.5,0,0,0,.5-.5V12a.5.5,0,0,0-.5-.5H12.5V8a.5.5,0,0,0-.5-.5H10a.5.5,0,0,0-.5.5v3.5H6a.5.5,0,0,0-.5.5v2a.5.5,0,0,0,.5.5H9.5Z'/%3e%3cpath%20d='M18.2,4.8a1,1,0,0,1,1,1V20a1,1,0,0,1-1,1H4a1,1,0,0,1-1-1V5.8a1,1,0,0,1,1-1H18.2M9,11H6a1,1,0,0,0-1,1v2a1,1,0,0,0,1,1H9v3a1,1,0,0,0,1,1h2a1,1,0,0,0,1-1V15h3a1,1,0,0,0,1-1V12a1,1,0,0,0-1-1H13V8a1,1,0,0,0-1-1H10A1,1,0,0,0,9,8v3m9.2-7.2H4a2,2,0,0,0-2,2V20a2,2,0,0,0,2,2H18.2a2,2,0,0,0,2-2V5.8a2,2,0,0,0-2-2ZM6,14V12h4V8h2v4h4v2H12v4H10V14Z'/%3e%3c/g%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%3e%3cpolygon%20points='7.92%2012%202.84%207%2013%207%207.92%2012'/%3e%3crect%20x='5'%20y='2'%20width='6'%20height='5'/%3e%3crect%20x='2'%20y='14'%20width='12'%20height='1'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%3e%3cdefs%3e%3cstyle%3e%20.cls-1%20{%20fill:%20%23fff;%20}%20%3c/style%3e%3c/defs%3e%3cg%3e%3ccircle%20class='cls-1'%20cx='5.5'%20cy='5.5'%20r='4.5'/%3e%3cpath%20d='M5.5,2A3.5,3.5,0,1,1,2,5.5,3.5,3.5,0,0,1,5.5,2m0-1A4.5,4.5,0,1,0,10,5.5,4.49,4.49,0,0,0,5.5,1Z'/%3e%3c/g%3e%3crect%20x='6.79'%20y='10.04'%20width='7.74'%20height='2.16'%20transform='translate(10.98%20-4.28)%20rotate(45)'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20data-name='icon_key'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2027.02%2027'%3e%3cpath%20d='M35.07,16.5a8.52,8.52,0,0,0-7.69,12L17.2,38.8a2.46,2.46,0,0,0,0,3.46,2.41,2.41,0,0,0,3.42,0l1.69-1.7,2.91,2.94L31,37.63l-2.92-3,2.44-2.46a8.31,8.31,0,0,0,4.51,1.33,8.53,8.53,0,0,0,0-17Zm0,3.91A4.62,4.62,0,1,1,30.5,25,4.6,4.6,0,0,1,35.07,20.41Z'%20transform='translate(-16.49%20-16.5)'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cg%20id='Pfeilende'%3e%3cpath%20d='M24,10H15l9-8.93Z'/%3e%3c/g%3e%3cpath%20d='M18.45,18.78A9.33,9.33,0,0,1,2.62,14.86,9.8,9.8,0,0,1,8.89,2.69,9.42,9.42,0,0,1,20.72,9.14H23A11.72,11.72,0,0,0,11.68,0,11.74,11.74,0,0,0,.34,9.14,12,12,0,0,0,8.89,23.65a11.43,11.43,0,0,0,11.16-3.31Z'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20data-name='icon_fullscreen_sga'%20xmlns='http://www.w3.org/2000/svg'%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%3e%3cpolygon%20id='ecke'%20points='2%2014%202%2010%200%2010%200%2016%206%2016%206%2014%202%2014'/%3e%3cpolygon%20id='ecke-2'%20data-name='ecke'%20points='2%202%206%202%206%200%200%200%200%206%202%206%202%202'/%3e%3cpolygon%20id='ecke-3'%20data-name='ecke'%20points='14%2014%2010%2014%2010%2016%2016%2016%2016%2010%2014%2010%2014%2014'/%3e%3cpolygon%20id='ecke-4'%20data-name='ecke'%20points='10%200%2010%202%2014%202%2014%206%2016%206%2016%200%2010%200'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='Icon_help'%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%3e%3cpath%20id='icon_help-2'%20data-name='icon_help'%20d='M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm1,16H11V15h2Zm1.7-6.26a4.85,4.85,0,0,1-.49.81l-1,1.37a1.36,1.36,0,0,0-.18.34,1,1,0,0,0-.07.38L13,14H11l.1-.49a2,2,0,0,1,.13-.77,3.18,3.18,0,0,1,.4-.69l1-1.33a3.21,3.21,0,0,0,.29-.46,1.19,1.19,0,0,0,.11-.47,1.17,1.17,0,0,0-.3-.82,1.07,1.07,0,0,0-.83-.33A1,1,0,0,0,11.1,9a1.25,1.25,0,0,0-.28.83H9a2.94,2.94,0,0,1,.23-1.17,2.45,2.45,0,0,1,.63-.88,2.9,2.9,0,0,1,.93-.55A3.13,3.13,0,0,1,11.94,7a3.31,3.31,0,0,1,1.13.19,2.82,2.82,0,0,1,.94.54,2.62,2.62,0,0,1,.65.88A3,3,0,0,1,14.9,9.8,2.16,2.16,0,0,1,14.7,10.74Z'%20style='opacity:%200.2'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20id='icon_star_16'%20xmlns='http://www.w3.org/2000/svg'%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%3e%3cpath%20id='star'%20d='M8,0l2.45,4.97,5.55,.76-4.04,3.83,.99,5.44-4.94-2.61-4.94,2.61,.99-5.44L0,5.73l5.55-.76L8,0Z'/%3e%3c/svg%3e\"","import iconAdd from '../../assets/svg/icon_add.svg';\nimport iconDel from '../../assets/svg/icon_cross.svg';\nimport iconEdit from '../../assets/svg/icon_edit.svg';\nimport iconConfig from '../../assets/svg/icon_gear.svg';\nimport iconDuplicate from '../../assets/svg/icon_duplicate.svg';\nimport iconDownload from '../../assets/svg/icon_download.svg';\nimport iconSearch from '../../assets/svg/icon_lupe.svg';\nimport iconIconKey from '../../assets/svg/icon_key.svg';\nimport iconSync from '../../assets/svg/icon_reload.svg';\nimport iconFullscreen from '../../assets/svg/icon_fullscreen.svg';\nimport iconDocumentation from '../../assets/svg/icon_help_light.svg';\nimport iconStar from '../../assets/svg/icon_star.svg';\n\nexport type Props = {\n\tadd?: boolean;\n\tdel?: boolean;\n\tedit?: boolean;\n\tconfig?: boolean;\n\tduplicate?: boolean;\n\tsearch?: boolean;\n\tdownload?: boolean;\n\tsync?: boolean;\n\tfullscreen?: boolean;\n\tstar?: boolean;\n\n\t/** key is reserved in React */\n\ticonKey?: boolean;\n\tdocumentation?: boolean;\n\n\t/** renders a larger version of the icon (24x24) */\n\tlarge?: boolean;\n\n\t/** inverts the colors of the icon for display on dark background */\n\tinverted?: boolean;\n\n\t/** @ignore */\n\tclassName?: string;\n};\n\nfunction getSrc(props: Props) {\n\tconst {add, del, edit, config, duplicate, search, download, sync, fullscreen, iconKey, documentation, star} = props;\n\n\tif (add) {\n\t\treturn iconAdd;\n\t} else if (del) {\n\t\treturn iconDel;\n\t} else if (edit) {\n\t\treturn iconEdit;\n\t} else if (config) {\n\t\treturn iconConfig;\n\t} else if (duplicate) {\n\t\treturn iconDuplicate;\n\t} else if (search) {\n\t\treturn iconSearch;\n\t} else if (download) {\n\t\treturn iconDownload;\n\t} else if (sync) {\n\t\treturn iconSync;\n\t} else if (fullscreen) {\n\t\treturn iconFullscreen;\n\t} else if (iconKey) {\n\t\treturn iconIconKey;\n\t} else if (documentation) {\n\t\treturn iconDocumentation;\n\t} else if (star) {\n\t\treturn iconStar;\n\t} else {\n\t\tthrow Error('getSrc: no icon type specified');\n\t}\n}\n\nfunction getAlt(props: Props) {\n\tconst {add, del, edit, config, duplicate, search, download, sync, fullscreen, iconKey, documentation, star} = props;\n\n\tif (add) {\n\t\treturn 'icon add';\n\t} else if (del) {\n\t\treturn 'icon delete';\n\t} else if (edit) {\n\t\treturn 'icon edit';\n\t} else if (config) {\n\t\treturn 'icon config';\n\t} else if (duplicate) {\n\t\treturn 'icon duplicate';\n\t} else if (search) {\n\t\treturn 'icon search';\n\t} else if (download) {\n\t\treturn 'icon download';\n\t} else if (sync) {\n\t\treturn 'icon sync';\n\t} else if (fullscreen) {\n\t\treturn 'icon fullscreen';\n\t} else if (iconKey) {\n\t\treturn 'icon iconKey';\n\t} else if (documentation) {\n\t\treturn 'icon documentation';\n\t} else if (star) {\n\t\treturn 'icon star';\n\t} else {\n\t\tthrow Error('getAlt: no icon type specified');\n\t}\n}\n\nexport default function Icon(props: Props) {\n\tlet style;\n\tif (props.large) {\n\t\tstyle = {width: 24, height: 24};\n\t} else {\n\t\tstyle = {width: 16, height: 16};\n\t}\n\tif (props.inverted) {\n\t\tstyle = {...style, filter: 'invert(1)'};\n\t}\n\n\treturn <img src={getSrc(props)} className={`di icon ${props.className || ''}`} alt={getAlt(props)} style={style} />;\n}\n","import React, {MouseEventHandler, PropsWithChildren, MouseEvent} from 'react';\nimport {Trans} from 'react-i18next';\nimport cx from 'classnames';\n\nimport Icon from '../icon/Icon';\nimport {TranslationDescriptor} from '../../types/i18n';\n\nexport interface Props extends React.HTMLAttributes<HTMLSpanElement> {\n\t/** the label text, either a string or TranslationDescriptor */\n\ttext?: string | TranslationDescriptor;\n\n\t/** a smaller label */\n\tsmall?: boolean;\n\n\t/** a larger label */\n\tlarge?: boolean;\n\n\tonClick?: MouseEventHandler<HTMLSpanElement>;\n\n\t/** adds a delete button that triggers this callback function */\n\tonDelete?: (...args: Array<any>) => any;\n\n\tclassName?: string;\n\n\t/** @ignore */\n\t'data-testid'?: string;\n\n\t/** @ignore */\n\t'delete-button-data-testid'?: string;\n}\n\n/**\n * Label enables an easy way for marking or tagging elements.\n */\nexport default function Label({\n\ttext,\n\tsmall = false,\n\tlarge = false,\n\tonDelete,\n\tclassName,\n\tonClick,\n\tchildren,\n\t...dataTestIds\n}: PropsWithChildren<Props>) {\n\tfunction handleDelete(event: MouseEvent<HTMLSpanElement>) {\n\t\tevent.stopPropagation();\n\t\tif (onDelete) {\n\t\t\tonDelete();\n\t\t}\n\t}\n\n\treturn (\n\t\t<span\n\t\t\tonClick={onClick}\n\t\t\tclassName={cx('di label', className, {large, small, removable: onDelete, clickable: !!onClick})}\n\t\t\tdata-testid={dataTestIds['data-testid']}\n\t\t>\n\t\t\t{typeof text === 'string' ? text : text && <Trans i18nKey={text.id}>{text.defaultValue}</Trans>}\n\t\t\t<>{children}</>\n\t\t\t{onDelete && (\n\t\t\t\t<span data-testid={dataTestIds['delete-button-data-testid']} className=\"remove\" onClick={handleDelete}>\n\t\t\t\t\t<Icon del inverted />\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</span>\n\t);\n}\n","import {\n\tarrow,\n\tautoUpdate,\n\tflip,\n\tFloatingPortal,\n\toffset,\n\tsafePolygon,\n\tshift,\n\tsize,\n\tuseClick,\n\tuseDismiss,\n\tuseFloating,\n\tuseFocus,\n\tuseHover,\n\tuseInteractions\n} from '@floating-ui/react';\nimport cx from 'classnames';\nimport React, {useEffect, useRef} from 'react';\n\nexport type Placement =\n\t| 'top'\n\t| 'bottom'\n\t| 'left'\n\t| 'right'\n\t| 'top-start'\n\t| 'top-end'\n\t| 'bottom-start'\n\t| 'bottom-end'\n\t| 'right-start'\n\t| 'right-end'\n\t| 'left-start'\n\t| 'left-end';\n\nexport type Props = {\n\t/** Element to toggle the Popup */\n\thandler: React.ReactNode;\n\n\t/** Content to be displayed */\n\tchildren: React.ReactNode;\n\n\t/** If true, displays the Popup's content */\n\topen: boolean;\n\n\t/** Function, executed when the Popup gets closed */\n\tonOpenChange: (open: boolean) => void;\n\n\t/** (Optional) if set, sets the direction in which the content should be displayed */\n\tplacement?: Placement;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** (Optional) If set to true, the content is hidden via styles, but still exists in the DOM tree */\n\tpreventDestroyContentOnHide?: boolean;\n\n\t/** (Optional) Class name of the handler wrapping element */\n\thandlerWrapperClassName?: string;\n\n\t/** (Optional) Interaction mode to open the popup */\n\tmode?: Array<'click' | 'hover' | 'focus'>;\n\n\t/** (Optional) Disables the Popup */\n\tdisabled?: boolean;\n};\n\n// Margin from the edge of the viewport\nconst MARGIN = 16;\n\n/**\n * Popup displays content within a small modal.\n * Its usage is highly flexible and used in several other components.\n */\nexport default function Popup({\n\tplacement = 'bottom',\n\tmode = ['click'],\n\tdisabled,\n\thandler,\n\thandlerWrapperClassName,\n\tpreventDestroyContentOnHide,\n\topen,\n\tonOpenChange,\n\tclassName,\n\tchildren\n}: Props) {\n\tconst arrowRef = useRef<HTMLDivElement>(null);\n\n\tconst {\n\t\telements,\n\t\tupdate,\n\t\trefs,\n\t\tfloatingStyles,\n\t\tcontext,\n\t\tmiddlewareData,\n\t\tplacement: computedPlacement\n\t} = useFloating({\n\t\tplacement,\n\t\topen,\n\t\tonOpenChange,\n\t\twhileElementsMounted: !preventDestroyContentOnHide ? autoUpdate : undefined,\n\t\tmiddleware: [\n\t\t\toffset({\n\t\t\t\tmainAxis: 12\n\t\t\t}),\n\t\t\tflip({\n\t\t\t\tpadding: MARGIN,\n\t\t\t\tboundary: 'clippingAncestors',\n\t\t\t\taltBoundary: true\n\t\t\t}),\n\t\t\tshift({\n\t\t\t\tpadding: MARGIN,\n\t\t\t\tboundary: 'clippingAncestors',\n\t\t\t\taltBoundary: true\n\t\t\t}),\n\t\t\tsize({\n\t\t\t\tpadding: MARGIN,\n\t\t\t\tboundary: 'clippingAncestors',\n\t\t\t\taltBoundary: true,\n\t\t\t\tapply({availableHeight, availableWidth, elements}) {\n\t\t\t\t\tconst width = `${Math.max(0, availableWidth - MARGIN)}px`;\n\t\t\t\t\tconst height = `${Math.max(0, availableHeight - MARGIN)}px`;\n\t\t\t\t\telements.floating.style.maxWidth = width;\n\t\t\t\t\telements.floating.style.maxHeight = height;\n\t\t\t\t}\n\t\t\t}),\n\t\t\tarrow({\n\t\t\t\telement: arrowRef\n\t\t\t})\n\t\t]\n\t});\n\n\tuseEffect(() => {\n\t\tif (preventDestroyContentOnHide && open && elements.reference && elements.floating) {\n\t\t\tconst cleanup = autoUpdate(elements.reference, elements.floating, update);\n\t\t\treturn cleanup;\n\t\t}\n\t}, [elements.floating, elements.reference, open, update, preventDestroyContentOnHide]);\n\n\tconst click = useClick(context, {\n\t\tenabled: !disabled && mode.includes('click'),\n\t\tkeyboardHandlers: false // Prevent space key from being blocked in input fields (floating-ui issue #1812)\n\t});\n\tconst hover = useHover(context, {\n\t\tenabled: !disabled && mode.includes('hover'),\n\t\thandleClose: safePolygon()\n\t});\n\tconst focus = useFocus(context, {enabled: !disabled && mode.includes('focus')});\n\tconst dismiss = useDismiss(context);\n\tconst {getReferenceProps, getFloatingProps} = useInteractions([click, hover, focus, dismiss]);\n\n\treturn (\n\t\t<>\n\t\t\t<span\n\t\t\t\tstyle={{display: 'inline-block'}}\n\t\t\t\tclassName={cx('popup-handler-wrapper', handlerWrapperClassName)}\n\t\t\t\tref={refs.setReference}\n\t\t\t\t{...getReferenceProps()}\n\t\t\t>\n\t\t\t\t{handler}\n\t\t\t</span>\n\t\t\t{(open || preventDestroyContentOnHide) && (\n\t\t\t\t<FloatingPortal>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cx('di popup-wrapper', {hidden: preventDestroyContentOnHide && !open})}\n\t\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t\t\tstyle={{...floatingStyles, zIndex: 100000}}\n\t\t\t\t\t\t{...getFloatingProps()}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className={cx('di popup', computedPlacement, className)}>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={cx('popup-arrow', computedPlacement)}\n\t\t\t\t\t\t\t\tref={arrowRef}\n\t\t\t\t\t\t\t\tstyle={{left: middlewareData.arrow?.x, top: middlewareData.arrow?.y}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<div className=\"popup-content\">{children}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</FloatingPortal>\n\t\t\t)}\n\t\t</>\n\t);\n}\n","import React, {useState} from 'react';\n\nimport Popup, {Placement} from '../popup/Popup';\n\nexport type Props = {\n\t/** the Bubble content */\n\tcontent: React.ReactNode;\n\n\t/** inverts the colors */\n\tinverted?: boolean;\n\n\t/** @ignore */\n\tchildren: React.ReactNode;\n\n\t/** @ignore */\n\tstyle?: React.CSSProperties;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** hides the bubble */\n\tdisabled?: boolean;\n\n\t/** changed the direction */\n\tdirection?: Placement;\n};\n\n/**\n * Bubbles are best used to provide some additional information like short instructions or help texts, which are then going to be displayed on Mouse-Over.\n */\nexport default function Bubble({content, inverted, children, disabled, style, direction, className}: Props) {\n\tconst [open, setOpen] = useState(false);\n\treturn (\n\t\t<Popup\n\t\t\topen={open}\n\t\t\tonOpenChange={setOpen}\n\t\t\thandler={children}\n\t\t\tdisabled={disabled}\n\t\t\tmode={['hover']}\n\t\t\tplacement={direction ? direction : 'top'}\n\t\t\tclassName={`bubble ${inverted ? 'inverted' : ''} ${className ? className : ''}`}\n\t\t>\n\t\t\t<span className={`bubble-content`} style={style}>\n\t\t\t\t{content}\n\t\t\t</span>\n\t\t</Popup>\n\t);\n}\n","import React, {useState} from 'react';\n\nimport Popup, {Placement} from '../popup/Popup';\n\nexport type Props = {\n\t/** Content of the Tooltip */\n\tcontent: React.ReactNode;\n\n\t/** Enabler of the Tooltip */\n\tchildren: React.ReactNode;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** (Optional) if set, disables the &lt;Tooltip/&gt; from opening */\n\tdisabled?: boolean;\n\n\t/** (Optional) if set, opens &lt;Tooltip/&gt; in given direction, defaults to 'right' */\n\tdirection?: Placement;\n};\n\n/**\n * Tooltip is best used to display some short additional information or description\n */\nexport default function Tooltip({content, children, className, direction, disabled}: Props) {\n\tconst [open, setOpen] = useState(false);\n\n\treturn (\n\t\t<Popup\n\t\t\topen={open}\n\t\t\tdisabled={disabled}\n\t\t\tmode={['hover']}\n\t\t\tonOpenChange={setOpen}\n\t\t\thandler={children}\n\t\t\tplacement={direction ? direction : 'right'}\n\t\t\tclassName={`tooltip inverted ${className ? className : ''}`}\n\t\t>\n\t\t\t<span className=\"tooltip-content\">{content}</span>\n\t\t</Popup>\n\t);\n}\n","import * as React from 'react';\n\nimport Bubble from '../bubble/Bubble';\n\ntype Page = {\n\tname: string;\n\trenderHeading: () => React.ReactNode;\n\trenderBody?: () => React.ReactNode;\n\ttabDescription?: string;\n};\n\ntype State = {\n\tcurrentTab: string | null | undefined;\n};\n\nexport type Props = {\n\t/** Array of pages to be displayed */\n\tpages: Array<Page>;\n\n\t/** (Optional) if set, disables tab */\n\tdisabled?: boolean;\n\n\t/** (Optional) function, executed if tabs change */\n\tonChange?: (tab: string) => void;\n\n\t/** (Optional) sets the current tab */\n\tcurrentTab?: string | null | undefined;\n};\n\n/**\n * Tabs add the possibility to unite several homogeneous pages into one.\n * Unlike RouteTabs, Tabs cannot be accessed directly via the browser's history\n */\nexport default class Tabs extends React.Component<Props, State> {\n\tstate: State = {\n\t\tcurrentTab: this.props.pages.length ? this.props.pages[0].name : null\n\t};\n\n\thandleClick: (tab: string) => void = (tab: string) => {\n\t\tif (this.props.onChange) {\n\t\t\tthis.props.onChange(tab);\n\t\t} else if (typeof this.props.currentTab === 'undefined') {\n\t\t\tthis.setState({\n\t\t\t\tcurrentTab: tab\n\t\t\t});\n\t\t}\n\t};\n\n\tcurrentTabPage: () => Page | null | undefined = (): Page | null | undefined => {\n\t\tconst currentTab = typeof this.props.currentTab === 'string' ? this.props.currentTab : this.state.currentTab;\n\t\treturn this.props.pages.find(({name}) => currentTab === name);\n\t};\n\n\tisCurrentTab: (tab: string) => boolean = (tab: string) => {\n\t\tconst currentTab = typeof this.props.currentTab === 'string' ? this.props.currentTab : this.state.currentTab;\n\t\treturn currentTab === tab;\n\t};\n\n\trenderBody = () => {\n\t\tconst page = this.currentTabPage();\n\n\t\tif (page && typeof page.renderBody === 'function') {\n\t\t\treturn page.renderBody();\n\t\t}\n\n\t\treturn null;\n\t};\n\n\trender() {\n\t\tconst {pages, disabled} = this.props;\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<div className=\"di tabs\">\n\t\t\t\t\t{pages.map(({name, renderHeading, tabDescription}) =>\n\t\t\t\t\t\ttabDescription ? (\n\t\t\t\t\t\t\t<Bubble inverted key={name} content={tabDescription} className=\"bubble-tab-description\">\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tdata-testid=\"tab-button\"\n\t\t\t\t\t\t\t\t\tclassName={`item ${disabled ? 'disabled' : ''} ${\n\t\t\t\t\t\t\t\t\t\tthis.isCurrentTab(name) ? 'active' : ''\n\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\tonClick={() => !disabled && this.handleClick(name)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{renderHeading()}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</Bubble>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tdata-testid=\"tab-button\"\n\t\t\t\t\t\t\t\tkey={name}\n\t\t\t\t\t\t\t\tclassName={`item ${disabled ? 'disabled' : ''} ${\n\t\t\t\t\t\t\t\t\tthis.isCurrentTab(name) ? 'active' : ''\n\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\tonClick={() => !disabled && this.handleClick(name)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{renderHeading()}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t)\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t{this.renderBody()}\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import * as React from 'react';\nimport {withTranslation, WithTranslation} from 'react-i18next';\n\nimport '../../assets/search-box.css';\nimport {ComponentType, CSSProperties} from 'react';\n\nimport Icon from '../icon/Icon';\nimport Button from '../button/Button';\nimport {TranslationDescriptor} from '../../types/i18n';\n\nexport type Props = {\n\t/** Placeholder text for input field `(string | TranslationDescriptor)` */\n\tplaceholder: string | TranslationDescriptor;\n\n\t/** Function to call if the input changes */\n\tonChange: (value: string) => void;\n\n\t/** Function to call if the search is triggered (button press or return in search field) */\n\tonSubmit?: (value: string) => void;\n\n\t/** if true, a button is shown that clears the input */\n\tclearable?: boolean;\n\n\t/** Value that should initially be displayed in the text box */\n\tinitialValue: string | null | undefined;\n\n\t/** Wrapper styles */\n\tstyle: CSSProperties | undefined;\n};\n\ntype State = {\n\tquery: string;\n};\n\nconst ClearButton = ({\n\tonChange,\n\tinputElement,\n\tstyle\n}: {\n\tonChange: (value: string) => void;\n\tinputElement: HTMLElement | null | undefined;\n\tstyle?: React.CSSProperties;\n}) => (\n\t<Button\n\t\tnaked\n\t\tonClick={() => {\n\t\t\tonChange('');\n\n\t\t\tif (inputElement) {\n\t\t\t\tinputElement.focus();\n\t\t\t}\n\t\t}}\n\t\tstyle={style}\n\t>\n\t\t<Icon del />\n\t</Button>\n);\n\n/**\n * SearchBox is used for searching content and provides a set of `props` for different user experiences\n */\nclass SearchBox extends React.Component<Props & WithTranslation, State> {\n\tstate: State = {\n\t\tquery: this.props.initialValue || ''\n\t};\n\tinput: HTMLInputElement | null | undefined;\n\n\tprintPlaceholder(): string {\n\t\tconst {t, placeholder} = this.props;\n\n\t\tif (typeof placeholder === 'object') {\n\t\t\treturn t(placeholder.id, {\n\t\t\t\tdefaultValue: placeholder.defaultValue\n\t\t\t});\n\t\t} else {\n\t\t\treturn placeholder;\n\t\t}\n\t}\n\n\thandleChange: (value: string) => void = (value: string) => {\n\t\tconst {onChange} = this.props;\n\t\tthis.setState({\n\t\t\tquery: value\n\t\t});\n\t\tonChange(value);\n\t};\n\n\thandleKeyUp: (arg0: any) => void = ({key}) => {\n\t\tconst {onSubmit} = this.props;\n\t\tconst {query} = this.state;\n\n\t\tif (key === 'Enter' && typeof onSubmit === 'function') {\n\t\t\tonSubmit(query);\n\t\t}\n\t};\n\n\trender() {\n\t\tconst {onSubmit, style, clearable} = this.props;\n\t\tconst {query} = this.state;\n\t\treturn (\n\t\t\t<div className=\"search-box\" style={style}>\n\t\t\t\t<input\n\t\t\t\t\tref={(input) => {\n\t\t\t\t\t\tthis.input = input;\n\t\t\t\t\t}}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tvalue={query}\n\t\t\t\t\tplaceholder={this.printPlaceholder()}\n\t\t\t\t\tonKeyUp={this.handleKeyUp}\n\t\t\t\t\tonChange={({target: {value}}) => this.handleChange(value)}\n\t\t\t\t/>\n\t\t\t\t{typeof onSubmit === 'function' ? (\n\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t{query && clearable && (\n\t\t\t\t\t\t\t<ClearButton\n\t\t\t\t\t\t\t\tonChange={this.handleChange}\n\t\t\t\t\t\t\t\tinputElement={this.input}\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tright: 30\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<Button naked onClick={() => onSubmit(query)}>\n\t\t\t\t\t\t\t<Icon search />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</React.Fragment>\n\t\t\t\t) : query && clearable ? (\n\t\t\t\t\t<ClearButton onChange={this.handleChange} inputElement={this.input} />\n\t\t\t\t) : (\n\t\t\t\t\t<Button naked disabled>\n\t\t\t\t\t\t<Icon search />\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nexport default withTranslation()(SearchBox) as ComponentType<Props>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["React","React","Button","iconAdd","iconDel","iconEdit","iconConfig","iconDuplicate","iconSearch","iconDownload","iconSync","iconFullscreen","iconIconKey","iconDocumentation","iconStar","_Fragment","_Fragment","React","Button","React"],"sources":["../src/components/accordion/Accordion.tsx","../src/components/accordionComponents/AccordionItem.tsx","../src/components/button/Button.tsx","../src/components/button/ButtonRow.tsx","../src/hooks/useOutsideClick.ts","../src/components/modalComponents/ModalWindow.tsx","../src/components/modal/Modal.tsx","../src/components/modalComponents/ModalContainer.tsx","../src/components/spinner/Spinner.tsx","../src/components/spinner/SpinnerContainer.tsx","../src/components/input/Checkbox.tsx","../src/components/confirm/utils.ts","../src/components/confirm/Confirm.tsx","../src/components/confirm/ConfirmProvider.tsx","../src/components/confirm/useConfirm.ts","../src/components/confirm/withConfirm.tsx","../src/assets/svg/icon_add.svg","../src/assets/svg/icon_cross.svg","../src/assets/svg/icon_edit.svg","../src/assets/svg/icon_gear.svg","../src/assets/svg/icon_duplicate.svg","../src/assets/svg/icon_download.svg","../src/assets/svg/icon_lupe.svg","../src/assets/svg/icon_key.svg","../src/assets/svg/icon_reload.svg","../src/assets/svg/icon_fullscreen.svg","../src/assets/svg/icon_help_light.svg","../src/assets/svg/icon_star.svg","../src/components/icon/Icon.tsx","../src/components/label/Label.tsx","../src/components/popup/Popup.tsx","../src/components/bubble/Bubble.tsx","../src/components/tooltip/Tooltip.tsx","../src/components/tabs/Tabs.tsx","../src/components/input/SearchBox.tsx"],"sourcesContent":["import * as React from 'react';\n\nexport type Props = {\n\t/** Should contain Array of &lt;AccordionItems/&gt; elements */\n\tchildren?: Array<React.ReactNode>;\n\n\t/** (Optional) sets additional class for styling purposes */\n\taccordionClass?: string;\n\n\t/** Function to be called if active &lt;AccordionItems/&gt; gets changed */\n\tonPageChange?: (newPageNumber: number) => any;\n\n\t/** (Optional) Index of the &lt;AccordionItem/&gt; which should be opened on initial render cycle */\n\tdefaultOpenPageIndex?: number;\n};\n\ntype State = {\n\tcurrentPageIndex: number;\n};\n\n/**\n * Accordions are best used to display homogenous information, e.g. multiple configurations which would take up a lot of space otherwise.\n */\nexport default class Accordion extends React.Component<Props, State> {\n\tstate: State = {\n\t\tcurrentPageIndex: -1\n\t};\n\n\tcomponentDidMount() {\n\t\tconst {defaultOpenPageIndex} = this.props;\n\n\t\tif (defaultOpenPageIndex !== null && defaultOpenPageIndex !== undefined) {\n\t\t\tthis.handleAccordionToggle(defaultOpenPageIndex);\n\t\t}\n\t}\n\n\thandleAccordionToggle: (index: number) => void = (index: number) => {\n\t\tconst {onPageChange} = this.props;\n\t\tconst newPageIndex = this.state.currentPageIndex !== index ? index : -1;\n\t\tthis.setState({\n\t\t\tcurrentPageIndex: newPageIndex\n\t\t});\n\n\t\tif (onPageChange) {\n\t\t\tonPageChange(newPageIndex);\n\t\t}\n\t};\n\n\trender() {\n\t\tconst {children, accordionClass} = this.props;\n\t\tconst {currentPageIndex} = this.state;\n\t\treturn (\n\t\t\t<div className={accordionClass ? `di accordion ${accordionClass}` : 'di accordion'}>\n\t\t\t\t{children &&\n\t\t\t\t\tchildren.map((child: any, index) =>\n\t\t\t\t\t\tchild ? (\n\t\t\t\t\t\t\t<child.type\n\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\t\tisOpen={currentPageIndex === index}\n\t\t\t\t\t\t\t\ttoggle={() => this.handleAccordionToggle(index)}\n\t\t\t\t\t\t\t\t{...child.props}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null\n\t\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import * as React from 'react';\n\ntype Info = {\n\ttext: string;\n\tcssStyle: Record<string, any>;\n};\n\nexport type Props = {\n\t/** (Optional) Displays either numeric- or text-based badge in front of the &lt;AccordionItems/&gt; */\n\tbadge?: (number | string | React.ReactNode) | null | undefined;\n\n\t/** @ignore */\n\tchildren?: React.ReactNode;\n\n\t/** (Optional) Displays additional information, which is visible in \"closed\" state */\n\tinfo1?: Info;\n\n\t/** If true, expands &lt;AccordionItems/&gt; */\n\tisOpen?: boolean;\n\n\t/** (Optional) Sets additional classes for styling purposes */\n\titemClasses?: string;\n\n\t/** Title of &lt;AccordionItems/&gt; */\n\ttitle: string | React.ReactNode;\n\n\t/** (Optional) Tooltip of &lt;AccordionItems/&gt; */\n\ttitleTooltip?: string;\n\n\t/** Function which is called to open/close &lt;AccordionItems/&gt; */\n\ttoggle?: () => void;\n\n\t/** (Optional) Enables additional handler, e.g., for editing or deleting &lt;AccordionItems/&gt; */\n\ttools?: Array<React.ReactNode>;\n\n\t/** @ignore */\n\t'data-testid'?: string | undefined;\n};\n\nexport default class AccordionItem extends React.PureComponent<Props> {\n\trender() {\n\t\tconst {badge, children, isOpen, info1, itemClasses, title, titleTooltip, toggle, tools, ...rest} = this.props;\n\t\tconst accordionItemClasses = ['item'];\n\n\t\tif (itemClasses) accordionItemClasses.push(itemClasses);\n\t\tif (isOpen) accordionItemClasses.push('open');\n\n\t\treturn (\n\t\t\t<div className={accordionItemClasses.join(' ')}>\n\t\t\t\t<div className=\"head\">\n\t\t\t\t\t<span className=\"title\" onClick={toggle} data-testid={rest['data-testid']}>\n\t\t\t\t\t\t<h1 title={titleTooltip}>{title}</h1>\n\t\t\t\t\t\t{badge && (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName=\"di label\"\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tmargin: '0 0 0 10px',\n\t\t\t\t\t\t\t\t\tbackgroundColor: '#ddd',\n\t\t\t\t\t\t\t\t\tborderColor: 'transparent'\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{badge}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{info1 && <span style={info1.cssStyle}>{info1.text}</span>}\n\t\t\t\t\t</span>\n\t\t\t\t\t<span className=\"tools\">\n\t\t\t\t\t\t{tools &&\n\t\t\t\t\t\t\ttools.map((toolComponent, index) => (\n\t\t\t\t\t\t\t\t<span key={index} className=\"tool\">\n\t\t\t\t\t\t\t\t\t{toolComponent}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"cont\">{children}</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import React, {ComponentType} from 'react';\nimport cx from 'classnames';\nimport {withTranslation, WithTranslation} from 'react-i18next';\n\nimport {TranslationDescriptor} from '../../types/i18n';\n\nexport type Props = {\n\t/** primary style, mutually exclusive with _danger_ and _naked_ */\n\tprimary?: boolean;\n\n\t/** danger style, mutually exclusive with _primary_ and _naked_ */\n\tdanger?: boolean;\n\n\t/** render the button without border and background color, mutually exclusive with _primary_ and _danger_ */\n\tnaked?: boolean;\n\n\t/** a title tooltip */\n\ttitle?: (TranslationDescriptor | null | undefined) | string;\n\n\t/** button | submit | reset */\n\ttype?: 'button' | 'submit' | 'reset';\n\n\t/** a click handler */\n\tonClick?: (...args: Array<any>) => any;\n\n\t/** a smaller button */\n\tsmall?: boolean;\n\n\t/** disable the button */\n\tdisabled?: boolean;\n\n\t/** @ignore */\n\tchildren?: React.ReactNode;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** @ignore */\n\tstyle?: React.CSSProperties;\n\n\t/** @ignore */\n\t'data-testid'?: string;\n\n\t/** @ignore */\n\ttabIndex?: number;\n};\n\n/**\n * Buttons are used to inform the user about a potential user interaction, which then on interaction causes an action.\n * To create a standardized look and feel, different props can be passed to the Button.\n */\nfunction Button({\n\tchildren,\n\ttitle,\n\ttype,\n\tdisabled,\n\tonClick,\n\tstyle,\n\ttabIndex,\n\tt,\n\tprimary,\n\tdanger,\n\tnaked,\n\tclassName,\n\tsmall,\n\t...rest\n}: Props & WithTranslation) {\n\tlet btnTitle = title;\n\n\tif (title && typeof title !== 'string') {\n\t\tbtnTitle = t(title.id, {\n\t\t\tdefaultValue: title.defaultValue\n\t\t});\n\t}\n\n\treturn (\n\t\t<button\n\t\t\tdata-testid={rest['data-testid']}\n\t\t\ttype={type || 'button'}\n\t\t\tclassName={cx('di button', className, {small, primary, danger, link: naked})}\n\t\t\ttitle={typeof btnTitle === 'string' ? btnTitle : undefined}\n\t\t\tdisabled={disabled}\n\t\t\tonClick={onClick}\n\t\t\tstyle={style}\n\t\t\ttabIndex={tabIndex}\n\t\t>\n\t\t\t{children}\n\t\t</button>\n\t);\n}\n\nexport default withTranslation()(Button) as ComponentType<Props>;\n","import * as React from 'react';\n\nexport type Props = {\n\t/** should contain &lt;Button /&gt; elements */\n\tchildren: React.ReactNode;\n\n\t/** show a horizontal row above the buttons */\n\tdividing?: boolean;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** @ignore */\n\tstyle?: React.CSSProperties;\n};\n\n/**\n * ButtonRows align Buttons nicely for all relevant and/or related user actions such as saving or canceling changes.\n * To separate the ButtonRow from the content, the extra property `dividing` can be used.\n */\nconst ButtonRow = ({children, dividing, className, style}: Props) => (\n\t<div style={style} className={`di button-row ${dividing ? 'dividing' : ''} ${className || ''}`}>\n\t\t{children}\n\t</div>\n);\n\nButtonRow.defaultProps = {\n\tdividing: false\n};\n\nexport default ButtonRow;\n","import {useEffect, useRef} from 'react';\n\nconst isTouchEvent = (event: Event): event is TouchEvent => {\n\treturn !!(event as any).touches;\n};\n\nconst isInsideBoundingRect = (element: HTMLElement, event: MouseEvent | TouchEvent) => {\n\tconst rect = element.getBoundingClientRect();\n\n\tlet x, y;\n\tif (isTouchEvent(event)) {\n\t\tx = event.touches[0].pageX;\n\t\ty = event.touches[0].pageY;\n\t} else {\n\t\tx = event.pageX;\n\t\ty = event.pageY;\n\t}\n\n\treturn rect.left <= x && rect.right >= x && rect.top <= y && rect.bottom >= y;\n};\n\nconst useOutsideClick = (\n\telements: Array<HTMLElement | null>,\n\tcallback: (evt: MouseEvent | TouchEvent | undefined) => void\n) => {\n\tconst callbackRef = useRef(callback);\n\n\tuseEffect(() => {\n\t\tcallbackRef.current = callback;\n\t}, [callback]);\n\n\tuseEffect(() => {\n\t\tconst listener = (event: MouseEvent | TouchEvent) => {\n\t\t\tconst elementsNonNull = elements.filter((element) => element != null) as HTMLElement[];\n\t\t\tif (\n\t\t\t\telementsNonNull.every(\n\t\t\t\t\t(element) =>\n\t\t\t\t\t\telement !== event.target &&\n\t\t\t\t\t\t!element.contains(event.target as any) &&\n\t\t\t\t\t\t!isInsideBoundingRect(element, event)\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcallbackRef.current(event);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('mousedown', listener, true);\n\t\tdocument.addEventListener('touchstart', listener, true);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('mousedown', listener, true);\n\t\t\tdocument.removeEventListener('touchstart', listener, true);\n\t\t};\n\t}, [elements]);\n};\n\nexport default useOutsideClick;\n","import {useEffect, useRef, useState} from 'react';\nimport Draggable from 'react-draggable';\n\nimport {Props} from '../modal/Modal';\nimport useOutsideClick from '../../hooks/useOutsideClick';\n\nexport default function ModalWindow({className, width, header, content, footer, onOutsideClick}: Props) {\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst [rootElement, setRootElement] = useState<HTMLElement | null>(null);\n\n\tuseEffect(() => {\n\t\tsetRootElement(ref.current);\n\t}, []);\n\n\tuseOutsideClick([rootElement], () => {\n\t\tif (onOutsideClick) onOutsideClick();\n\t});\n\n\treturn (\n\t\t<Draggable handle=\".modal-header\" nodeRef={ref}>\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tclassName={`modal-window ${className || ''}`}\n\t\t\t\tstyle={{\n\t\t\t\t\tmaxWidth: width\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{header && <div className=\"modal-header\">{header}</div>}\n\t\t\t\t{content && <div className=\"modal-content\">{content}</div>}\n\t\t\t\t{footer && <div className=\"modal-footer\">{footer}</div>}\n\t\t\t</div>\n\t\t</Draggable>\n\t);\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport ModalWindow from '../modalComponents/ModalWindow';\n\nexport type Props = {\n\theader?: React.ReactNode;\n\tcontent?: React.ReactNode;\n\tfooter?: React.ReactNode;\n\n\t/** the CSS width setting, either a number or string */\n\twidth?: string | number;\n\tclassName?: string;\n\n\t/** callback function that is executed when the users click outside the modal */\n\tonOutsideClick?: (event?: Event) => void;\n\tonMouseDown?: (event: React.SyntheticEvent<HTMLElement>) => void;\n};\n\nexport default class Modal extends React.Component<\n\tProps,\n\t{\n\t\tclassName: string;\n\t}\n> {\n\tstatic defaultProps: {\n\t\twidth: string;\n\t} = {\n\t\twidth: '60%'\n\t};\n\tcontainer: HTMLDivElement | undefined;\n\tmodalRoot: HTMLElement | null | undefined;\n\ttimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n\tconstructor(props: Props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tclassName: 'di modal'\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.container = document.createElement('div');\n\t\tthis.modalRoot = document.getElementById('modal-root');\n\n\t\tif (this.modalRoot) {\n\t\t\tthis.modalRoot.appendChild(this.container);\n\t\t} else if (document.body) {\n\t\t\tdocument.body.appendChild(this.container);\n\t\t}\n\n\t\tif (this.props.onOutsideClick) {\n\t\t\twindow.addEventListener('keydown', this.keyEventHandler);\n\t\t}\n\n\t\t// set the show class after 10ms for animation\n\t\tthis.timeoutId = setTimeout(\n\t\t\t() =>\n\t\t\t\t// eslint-disable-next-line react/no-did-mount-set-state -- deferred via setTimeout, not a synchronous mount update\n\t\t\t\tthis.setState({\n\t\t\t\t\tclassName: `di modal show ${this.props.className || ''}`\n\t\t\t\t}),\n\t\t\t10\n\t\t);\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif (this.container) {\n\t\t\tif (this.modalRoot) {\n\t\t\t\tthis.modalRoot.removeChild(this.container);\n\t\t\t} else if (document.body) {\n\t\t\t\tdocument.body.removeChild(this.container);\n\t\t\t}\n\t\t}\n\n\t\tif (this.props.onOutsideClick) {\n\t\t\twindow.removeEventListener('keydown', this.keyEventHandler);\n\t\t}\n\n\t\tif (this.timeoutId) {\n\t\t\tclearTimeout(this.timeoutId);\n\t\t}\n\t}\n\n\tkeyEventHandler: (event: KeyboardEvent) => void = (event: KeyboardEvent) => {\n\t\tif (event.key === 'Escape' && this.props.onOutsideClick) {\n\t\t\tthis.props.onOutsideClick(event);\n\t\t}\n\t};\n\n\trender() {\n\t\tif (!this.container) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn ReactDOM.createPortal(\n\t\t\t<div className={this.state.className} onMouseDown={this.props.onMouseDown}>\n\t\t\t\t<ModalWindow {...this.props} />\n\t\t\t</div>,\n\t\t\tthis.container\n\t\t);\n\t}\n}\n","import React from 'react';\n\nexport type Props = Record<string, never>;\n\nexport default class ModalContainer extends React.PureComponent<Props> {\n\trender() {\n\t\treturn <div id=\"modal-root\" />;\n\t}\n}\n","import React from 'react';\n\nexport type Props = {\n\t/** the size of the Spinner in px */\n\tsize?: number;\n\n\t/** @ignore */\n\tcenter?: boolean;\n\n\t/** @ignore */\n\t'data-testid'?: string;\n};\n\n/**\n * Spinners usually show a loading indication.\n */\nexport default class Spinner extends React.Component<Props> {\n\tstatic defaultProps = {\n\t\tsize: 56,\n\t\tcenter: false\n\t};\n\n\trender() {\n\t\tconst {size = 56, center, ...dataAttrs} = this.props;\n\t\tlet style: React.CSSProperties = {\n\t\t\twidth: size,\n\t\t\theight: size\n\t\t};\n\n\t\tif (center) {\n\t\t\tstyle = {\n\t\t\t\t...style,\n\t\t\t\tposition: 'absolute',\n\t\t\t\ttop: '50%',\n\t\t\t\tleft: '50%',\n\t\t\t\tmarginTop: -size / 2,\n\t\t\t\tmarginLeft: -size / 2\n\t\t\t};\n\t\t}\n\n\t\treturn <div className=\"di spinner\" style={style} {...dataAttrs} />;\n\t}\n}\n","import React from 'react';\n\nimport Spinner from './Spinner';\n\nexport type Props = {\n\t/** controls the display of the Spinner */\n\tshow: boolean;\n\n\t/** the size of the Spinner in px */\n\tsize?: number;\n\n\t/** content to be rendered once the loading is done */\n\tchildren?: React.ReactNode;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** @ignore */\n\t'data-testid'?: string;\n};\n\n/**\n * SpinnerContainer wraps the entire content and displays a loading indicator until the loading is done.\n */\nexport default class SpinnerContainer extends React.Component<Props> {\n\tstatic defaultProps: {\n\t\tsize: number;\n\t} = {\n\t\tsize: 56\n\t};\n\n\trender() {\n\t\tconst {show, size, children, className} = this.props;\n\t\tconst classNames = `di spinner-wrapper ${className ? className : ''}`;\n\t\treturn (\n\t\t\t<div className={classNames}>\n\t\t\t\t<div\n\t\t\t\t\tclassName={`di spinner-container ${show ? 'visible' : ''}`}\n\t\t\t\t\tdata-testid={this.props['data-testid']}\n\t\t\t\t>\n\t\t\t\t\t<Spinner size={size} center />\n\t\t\t\t</div>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import * as React from 'react';\nimport {withTranslation, WithTranslation} from 'react-i18next';\n\nimport {TranslationDescriptor} from '../../types/i18n';\n\nexport type Props = {\n\t/** input type selector */\n\ttype?: 'checkbox' | 'radio' | 'toggle';\n\n\t/** Flag to preselect the status of the checkbox */\n\tvalue: boolean;\n\n\t/** Function, executed when toggling the checkbox */\n\tonChange: (nextStatus: boolean) => void;\n\n\t/** Optional input element tooltip */\n\ttitle?: TranslationDescriptor;\n\n\t/** Optional label for checkbox and radio button*/\n\tlabel?: TranslationDescriptor;\n\n\t/** visually indicate that the checkbox is disabled and disable onChange handler */\n\tdisabled?: boolean;\n\n\t/** Optional flag for toggle type: Render a small Toggle */\n\ttoggleSmall?: boolean;\n\n\t/** Optional flag for toggle type: Sets the slider color when the Toggle is truthy */\n\ttoggleColor?: string;\n\n\t/** @ignore */\n\t'data-testid'?: string;\n\n\t/** @ignore */\n\t'wrapper-data-testid'?: string;\n\n\t/** @ignore */\n\t'innerdiv-data-testid'?: string;\n};\n\nconst getWrapperClassName = (type: string, small: boolean) => {\n\tswitch (type) {\n\t\tcase 'checkbox':\n\t\tcase 'radio':\n\t\t\treturn 'di checkbox';\n\n\t\tcase 'toggle':\n\t\t\treturn small ? 'di toggle toggle-small' : 'di toggle';\n\n\t\tdefault:\n\t\t\tthrow Error(`type not support: ${type}`);\n\t}\n};\n\nconst getCheckboxClassName = (type: string, small: boolean) => {\n\tswitch (type) {\n\t\tcase 'checkbox':\n\t\t\treturn 'box';\n\n\t\tcase 'radio':\n\t\t\treturn 'radio';\n\n\t\tcase 'toggle':\n\t\t\treturn small ? 'switch switch-small' : 'switch';\n\n\t\tdefault:\n\t\t\tthrow Error(`type not support: ${type}`);\n\t}\n};\n\n/**\n * Checkbox for enabling user interaction can have one of multiple types which are defined via the `type` prop.\n */\nconst Checkbox = ({\n\ttype = 'checkbox',\n\tvalue,\n\tonChange,\n\ttitle,\n\tlabel,\n\tdisabled = false,\n\ttoggleSmall = false,\n\ttoggleColor = '#259b23',\n\tt,\n\t...other\n}: Props & WithTranslation) => {\n\tconst style =\n\t\ttype === 'toggle'\n\t\t\t? {\n\t\t\t\t\tbackgroundColor: value ? toggleColor : 'gray'\n\t\t\t\t}\n\t\t\t: {};\n\tconst tooltip = title\n\t\t? t(title.id, {\n\t\t\t\tdefaultValue: title.defaultValue\n\t\t\t})\n\t\t: undefined;\n\tconst labelText = label\n\t\t? t(label.id, {\n\t\t\t\tdefaultValue: label.defaultValue\n\t\t\t})\n\t\t: null;\n\treturn (\n\t\t<label\n\t\t\ttitle={tooltip}\n\t\t\tclassName={getWrapperClassName(type, toggleSmall)}\n\t\t\tdata-testid={other['wrapper-data-testid']}\n\t\t>\n\t\t\t<input\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tchecked={value}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonChange={() => onChange(!value)}\n\t\t\t\tdata-testid={other['data-testid']}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclassName={getCheckboxClassName(type, toggleSmall)}\n\t\t\t\tstyle={style}\n\t\t\t\tdata-testid={other['innerdiv-data-testid']}\n\t\t\t/>\n\t\t\t{label && <span className=\"textlabel\">{labelText}</span>}\n\t\t</label>\n\t);\n};\n\nexport default withTranslation()(Checkbox) as React.ComponentType<Props>;\n","import * as React from 'react';\n\nimport {TranslationDescriptor} from '../../types/i18n';\n\nexport function isTranslationDescriptor(\n\targ: TranslationDescriptor | string | React.ReactElement\n): arg is TranslationDescriptor {\n\tconst result =\n\t\ttypeof arg === 'object' && typeof (arg as any).id === 'string' && typeof (arg as any).defaultValue === 'string';\n\n\tif (result) {\n\t\tconsole.warn(\n\t\t\t'Please use strings instead of TranslationDescriptors to initialize the Confirm modal, because TranslationDescriptors are deprecated'\n\t\t);\n\t}\n\n\treturn result;\n}\n","import * as React from 'react';\nimport {Trans} from 'react-i18next';\n\nimport Modal from '../modal/Modal';\nimport Button from '../button/Button';\nimport {TranslationDescriptor} from '../../types/i18n';\nimport {isTranslationDescriptor} from './utils';\n\nexport type Props = {\n\ttitle: string | TranslationDescriptor;\n\tmessage: string | React.ReactElement | TranslationDescriptor;\n\n\t/** @ignore */\n\tonAccept: (...args: Array<any>) => any;\n\n\t/** @ignore */\n\tonDecline: (...args: Array<any>) => any;\n\tacceptButtonLabel?: string | TranslationDescriptor;\n\tdeclineButtonLabel?: string | TranslationDescriptor;\n\tacceptButtonStyle?: 'primary' | 'danger';\n};\n\nfunction transformTextToElement(\n\tmessage: TranslationDescriptor | string | React.ReactElement\n): React.ReactElement | string {\n\tif (isTranslationDescriptor(message)) {\n\t\treturn <Trans i18nKey={message.id}>{message.defaultValue}</Trans>;\n\t}\n\treturn message;\n}\n\n/**\n * Confirm enables the possibility to open up a dialog within a modal, requiring additional user actions.\n * This component should not be used directly, instead use `@withConfirm` to inject a promise based confirm method\n */\nexport default function Confirm({\n\ttitle,\n\tmessage,\n\tonAccept,\n\tonDecline,\n\tacceptButtonLabel,\n\tdeclineButtonLabel,\n\tacceptButtonStyle = 'primary'\n}: Props) {\n\treturn (\n\t\t<Modal\n\t\t\theader={transformTextToElement(title)}\n\t\t\tcontent={transformTextToElement(message)}\n\t\t\tfooter={\n\t\t\t\t<div>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tprimary={acceptButtonStyle === 'primary'}\n\t\t\t\t\t\tdanger={acceptButtonStyle === 'danger'}\n\t\t\t\t\t\tonClick={onAccept}\n\t\t\t\t\t>\n\t\t\t\t\t\t{acceptButtonLabel ? (\n\t\t\t\t\t\t\ttransformTextToElement(acceptButtonLabel)\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Trans i18nKey=\"form.accept\">Accept</Trans>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button onClick={onDecline}>\n\t\t\t\t\t\t{declineButtonLabel ? (\n\t\t\t\t\t\t\ttransformTextToElement(declineButtonLabel)\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Trans i18nKey=\"form.decline\">Decline</Trans>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\twidth={500}\n\t\t/>\n\t);\n}\n","import React, {createContext, useState} from 'react';\n\nimport Confirm, {Props as ConfirmProps} from './Confirm';\n\ntype ConfirmOptions = {\n\ttitle: string;\n\tmessage: string | React.ReactElement;\n\tacceptButtonLabel?: string;\n\tdeclineButtonLabel?: string;\n\tacceptButtonStyle?: 'primary' | 'danger';\n};\n\nexport const ConfirmContext = createContext<{\n\tconfirm: (options: ConfirmOptions) => Promise<boolean>;\n}>({\n\tconfirm: () => Promise.reject(new Error('ConfirmProvider is missing!'))\n});\n\nfunction ConfirmProvider({children}: React.PropsWithChildren<Record<string, unknown>>) {\n\tconst [visible, setVisible] = useState<boolean>(false);\n\tconst [confirmProps, setConfirmProps] = useState<ConfirmProps>({\n\t\ttitle: '',\n\t\tmessage: '',\n\t\tonAccept: () => {},\n\t\tonDecline: () => {}\n\t});\n\n\tasync function confirm(options: ConfirmOptions) {\n\t\treturn new Promise<boolean>((resolve) => {\n\t\t\tsetVisible(true);\n\t\t\tsetConfirmProps({\n\t\t\t\t...options,\n\t\t\t\tonAccept: () => {\n\t\t\t\t\tsetVisible(false);\n\t\t\t\t\tresolve(true);\n\t\t\t\t},\n\t\t\t\tonDecline: () => {\n\t\t\t\t\tsetVisible(false);\n\t\t\t\t\tresolve(false);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\treturn (\n\t\t<ConfirmContext.Provider value={{confirm}}>\n\t\t\t{children}\n\t\t\t{visible && <Confirm {...confirmProps} />}\n\t\t</ConfirmContext.Provider>\n\t);\n}\n\nexport default ConfirmProvider;\n","import {useContext} from 'react';\n\nimport {ConfirmContext} from './ConfirmProvider';\n\nexport default function useConfirm() {\n\tconst context = useContext(ConfirmContext);\n\tif (!context) {\n\t\tthrow new Error('ConfirmProvider is missing');\n\t}\n\tconst {confirm} = context;\n\treturn confirm;\n}\n","import React from 'react';\nimport {useTranslation} from 'react-i18next';\n\nimport {TranslationDescriptor} from '../../types/i18n';\nimport useConfirm from './useConfirm';\nimport ConfirmProvider from './ConfirmProvider';\nimport {isTranslationDescriptor} from './utils';\n\nexport type ConfirmProps = {\n\tconfirm: (\n\t\ttitle: string | TranslationDescriptor,\n\t\tmessage: string | TranslationDescriptor | React.ReactElement,\n\t\tacceptButtonLabel?: string | TranslationDescriptor,\n\t\tdeclineButtonLabel?: string | TranslationDescriptor,\n\t\tresolveWithConfirmation?: boolean,\n\t\tacceptButtonStyle?: 'primary' | 'danger'\n\t) => Promise<void | boolean>;\n};\n\nexport default function withConfirm<P extends object>(WrappedComponent: React.ComponentType<P & ConfirmProps>) {\n\tfunction WithConfirm(props: P) {\n\t\tconst confirm = useConfirm();\n\t\tconst {t} = useTranslation();\n\n\t\tfunction trans(arg: TranslationDescriptor | string) {\n\t\t\tif (isTranslationDescriptor(arg)) {\n\t\t\t\treturn t(arg.id, {defaultValue: arg.defaultValue});\n\t\t\t}\n\t\t\treturn arg;\n\t\t}\n\n\t\tasync function deprecatedConfirm(\n\t\t\ttitle: string | TranslationDescriptor,\n\t\t\tmessage: string | TranslationDescriptor | React.ReactElement,\n\t\t\tacceptButtonLabel?: string | TranslationDescriptor,\n\t\t\tdeclineButtonLabel?: string | TranslationDescriptor,\n\t\t\tresolveWithConfirmation?: boolean,\n\t\t\tacceptButtonStyle?: 'primary' | 'danger'\n\t\t): Promise<boolean | void> {\n\t\t\tconst accepted = await confirm({\n\t\t\t\ttitle: trans(title),\n\t\t\t\tmessage: isTranslationDescriptor(message) ? trans(message) : message,\n\t\t\t\tacceptButtonLabel: acceptButtonLabel ? trans(acceptButtonLabel) : undefined,\n\t\t\t\tdeclineButtonLabel: declineButtonLabel ? trans(declineButtonLabel) : undefined,\n\t\t\t\tacceptButtonStyle\n\t\t\t});\n\n\t\t\tif (resolveWithConfirmation) {\n\t\t\t\treturn accepted;\n\t\t\t} else if (!accepted) {\n\t\t\t\treturn new Promise(() => {});\n\t\t\t}\n\t\t}\n\n\t\treturn <WrappedComponent {...props} confirm={deprecatedConfirm} />;\n\t}\n\n\treturn function WithConfirmWrapper(props: P) {\n\t\treturn (\n\t\t\t<ConfirmProvider>\n\t\t\t\t<WithConfirm {...props} />\n\t\t\t</ConfirmProvider>\n\t\t);\n\t};\n}\n","export default \"data:image/svg+xml,%3csvg%20id='icon-add_24_sga'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cpolygon%20id='plus'%20points='20%2010%2014%2010%2014%204%2010%204%2010%2010%204%2010%204%2014%2010%2014%2010%2020%2014%2020%2014%2014%2020%2014%2020%2010'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='icon-cross_24_sga'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cpolygon%20id='icon-cross_24'%20points='20%206.28%2017.87%204%2012%209.78%206.13%204%204%206.28%209.78%2011.97%204%2017.66%206.13%2019.93%2012%2014.15%2017.87%2019.93%2020%2017.66%2014.22%2011.97%2020%206.28'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='icon-edit-24_sga'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cg%20id='stift'%3e%3cpath%20d='M7.35,12.65a.5.5,0,0,0,0,.7l3.3,3.3a.5.5,0,0,0,.7,0l8.3-8.3A1.4,1.4,0,0,0,20,7.5v-1a1.4,1.4,0,0,0-.35-.85l-1.3-1.3A1.4,1.4,0,0,0,17.5,4h-1a1.4,1.4,0,0,0-.85.35Z'/%3e%3c/g%3e%3cpath%20d='M5.9,14.49c.06-.27.26-.33.45-.14l3.3,3.3c.19.19.13.39-.14.45l-4,.8a.3.3,0,0,1-.39-.39Z'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='icon-gear-24_sga'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cg%20id='icon-gear-24_sga-2'%20data-name='icon-gear-24_sga'%3e%3cpath%20d='M22.82,14.06A1.25,1.25,0,0,0,24,13,7.66,7.66,0,0,0,24,12,7.66,7.66,0,0,0,24,11a1.25,1.25,0,0,0-1.13-1l-1.09,0A1.49,1.49,0,0,1,20.44,9c-.15-.47-.44-2-.07-2.37l.74-.81a1.16,1.16,0,0,0,0-1.5L19.7,2.87a1.16,1.16,0,0,0-1.5,0l-.81.74a1.5,1.5,0,0,1-1.54.27c-.44-.23-1.72-1.08-1.74-1.63l0-1.09A1.25,1.25,0,0,0,13,.05a7.66,7.66,0,0,0-1,0,7.66,7.66,0,0,0-1,.05,1.25,1.25,0,0,0-1,1.13l0,1.09A1.52,1.52,0,0,1,9,3.56c-.47.15-2,.44-2.37.07L5.8,2.89a1.16,1.16,0,0,0-1.5,0L2.86,4.3a1.18,1.18,0,0,0,0,1.5l.74.81A1.5,1.5,0,0,1,3.9,8.15c-.23.44-1.08,1.72-1.63,1.74l-1.09,0A1.25,1.25,0,0,0,.05,11a7.66,7.66,0,0,0,0,1,7.66,7.66,0,0,0,.05,1,1.25,1.25,0,0,0,1.13,1l1.09,0A1.47,1.47,0,0,1,3.55,15c.16.48.45,2,.08,2.37l-.74.81a1.16,1.16,0,0,0,0,1.5L4.3,21.13a1.16,1.16,0,0,0,1.5,0l.81-.74a1.5,1.5,0,0,1,1.54-.27c.44.23,1.72,1.08,1.75,1.63l0,1.09A1.25,1.25,0,0,0,11,24,7.66,7.66,0,0,0,12,24,7.66,7.66,0,0,0,13,24a1.25,1.25,0,0,0,1-1.13l0-1.09A1.49,1.49,0,0,1,15,20.44c.47-.15,2-.44,2.37-.07l.81.74a1.16,1.16,0,0,0,1.5,0l1.43-1.43a1.16,1.16,0,0,0,0-1.5l-.74-.81a1.5,1.5,0,0,1-.27-1.54c.23-.44,1.08-1.72,1.63-1.74ZM12,15.5A3.5,3.5,0,1,1,15.5,12,3.5,3.5,0,0,1,12,15.5Z'/%3e%3c/g%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cg%3e%3cpath%20d='M22.1,4.91a3,3,0,0,0-3-3H6.44a2.4,2.4,0,0,1,1.34-.4h12.6A2.12,2.12,0,0,1,22.5,3.62V17.26a1.42,1.42,0,0,1-.4,1Z'/%3e%3cpath%20d='M20.38,1H7.78A3,3,0,0,0,5.26,2.4H19.09A2.51,2.51,0,0,1,21.6,4.91V19.12A1.94,1.94,0,0,0,23,17.26V3.62A2.62,2.62,0,0,0,20.38,1Z'/%3e%3c/g%3e%3cg%3e%3cpath%20d='M4,21.5A1.5,1.5,0,0,1,2.5,20V5.8A1.5,1.5,0,0,1,4,4.3H18.2a1.5,1.5,0,0,1,1.5,1.5V20a1.5,1.5,0,0,1-1.5,1.5ZM9.5,18a.5.5,0,0,0,.5.5h2a.5.5,0,0,0,.5-.5V14.5H16a.5.5,0,0,0,.5-.5V12a.5.5,0,0,0-.5-.5H12.5V8a.5.5,0,0,0-.5-.5H10a.5.5,0,0,0-.5.5v3.5H6a.5.5,0,0,0-.5.5v2a.5.5,0,0,0,.5.5H9.5Z'/%3e%3cpath%20d='M18.2,4.8a1,1,0,0,1,1,1V20a1,1,0,0,1-1,1H4a1,1,0,0,1-1-1V5.8a1,1,0,0,1,1-1H18.2M9,11H6a1,1,0,0,0-1,1v2a1,1,0,0,0,1,1H9v3a1,1,0,0,0,1,1h2a1,1,0,0,0,1-1V15h3a1,1,0,0,0,1-1V12a1,1,0,0,0-1-1H13V8a1,1,0,0,0-1-1H10A1,1,0,0,0,9,8v3m9.2-7.2H4a2,2,0,0,0-2,2V20a2,2,0,0,0,2,2H18.2a2,2,0,0,0,2-2V5.8a2,2,0,0,0-2-2ZM6,14V12h4V8h2v4h4v2H12v4H10V14Z'/%3e%3c/g%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%3e%3cpolygon%20points='7.92%2012%202.84%207%2013%207%207.92%2012'/%3e%3crect%20x='5'%20y='2'%20width='6'%20height='5'/%3e%3crect%20x='2'%20y='14'%20width='12'%20height='1'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%3e%3cdefs%3e%3cstyle%3e%20.cls-1%20{%20fill:%20%23fff;%20}%20%3c/style%3e%3c/defs%3e%3cg%3e%3ccircle%20class='cls-1'%20cx='5.5'%20cy='5.5'%20r='4.5'/%3e%3cpath%20d='M5.5,2A3.5,3.5,0,1,1,2,5.5,3.5,3.5,0,0,1,5.5,2m0-1A4.5,4.5,0,1,0,10,5.5,4.49,4.49,0,0,0,5.5,1Z'/%3e%3c/g%3e%3crect%20x='6.79'%20y='10.04'%20width='7.74'%20height='2.16'%20transform='translate(10.98%20-4.28)%20rotate(45)'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20data-name='icon_key'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2027.02%2027'%3e%3cpath%20d='M35.07,16.5a8.52,8.52,0,0,0-7.69,12L17.2,38.8a2.46,2.46,0,0,0,0,3.46,2.41,2.41,0,0,0,3.42,0l1.69-1.7,2.91,2.94L31,37.63l-2.92-3,2.44-2.46a8.31,8.31,0,0,0,4.51,1.33,8.53,8.53,0,0,0,0-17Zm0,3.91A4.62,4.62,0,1,1,30.5,25,4.6,4.6,0,0,1,35.07,20.41Z'%20transform='translate(-16.49%20-16.5)'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cg%20id='Pfeilende'%3e%3cpath%20d='M24,10H15l9-8.93Z'/%3e%3c/g%3e%3cpath%20d='M18.45,18.78A9.33,9.33,0,0,1,2.62,14.86,9.8,9.8,0,0,1,8.89,2.69,9.42,9.42,0,0,1,20.72,9.14H23A11.72,11.72,0,0,0,11.68,0,11.74,11.74,0,0,0,.34,9.14,12,12,0,0,0,8.89,23.65a11.43,11.43,0,0,0,11.16-3.31Z'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20data-name='icon_fullscreen_sga'%20xmlns='http://www.w3.org/2000/svg'%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%3e%3cpolygon%20id='ecke'%20points='2%2014%202%2010%200%2010%200%2016%206%2016%206%2014%202%2014'/%3e%3cpolygon%20id='ecke-2'%20data-name='ecke'%20points='2%202%206%202%206%200%200%200%200%206%202%206%202%202'/%3e%3cpolygon%20id='ecke-3'%20data-name='ecke'%20points='14%2014%2010%2014%2010%2016%2016%2016%2016%2010%2014%2010%2014%2014'/%3e%3cpolygon%20id='ecke-4'%20data-name='ecke'%20points='10%200%2010%202%2014%202%2014%206%2016%206%2016%200%2010%200'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20id='Icon_help'%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%3e%3cpath%20id='icon_help-2'%20data-name='icon_help'%20d='M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm1,16H11V15h2Zm1.7-6.26a4.85,4.85,0,0,1-.49.81l-1,1.37a1.36,1.36,0,0,0-.18.34,1,1,0,0,0-.07.38L13,14H11l.1-.49a2,2,0,0,1,.13-.77,3.18,3.18,0,0,1,.4-.69l1-1.33a3.21,3.21,0,0,0,.29-.46,1.19,1.19,0,0,0,.11-.47,1.17,1.17,0,0,0-.3-.82,1.07,1.07,0,0,0-.83-.33A1,1,0,0,0,11.1,9a1.25,1.25,0,0,0-.28.83H9a2.94,2.94,0,0,1,.23-1.17,2.45,2.45,0,0,1,.63-.88,2.9,2.9,0,0,1,.93-.55A3.13,3.13,0,0,1,11.94,7a3.31,3.31,0,0,1,1.13.19,2.82,2.82,0,0,1,.94.54,2.62,2.62,0,0,1,.65.88A3,3,0,0,1,14.9,9.8,2.16,2.16,0,0,1,14.7,10.74Z'%20style='opacity:%200.2'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20id='icon_star_16'%20xmlns='http://www.w3.org/2000/svg'%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%3e%3cpath%20id='star'%20d='M8,0l2.45,4.97,5.55,.76-4.04,3.83,.99,5.44-4.94-2.61-4.94,2.61,.99-5.44L0,5.73l5.55-.76L8,0Z'/%3e%3c/svg%3e\"","import iconAdd from '../../assets/svg/icon_add.svg';\nimport iconDel from '../../assets/svg/icon_cross.svg';\nimport iconEdit from '../../assets/svg/icon_edit.svg';\nimport iconConfig from '../../assets/svg/icon_gear.svg';\nimport iconDuplicate from '../../assets/svg/icon_duplicate.svg';\nimport iconDownload from '../../assets/svg/icon_download.svg';\nimport iconSearch from '../../assets/svg/icon_lupe.svg';\nimport iconIconKey from '../../assets/svg/icon_key.svg';\nimport iconSync from '../../assets/svg/icon_reload.svg';\nimport iconFullscreen from '../../assets/svg/icon_fullscreen.svg';\nimport iconDocumentation from '../../assets/svg/icon_help_light.svg';\nimport iconStar from '../../assets/svg/icon_star.svg';\n\nexport type Props = {\n\tadd?: boolean;\n\tdel?: boolean;\n\tedit?: boolean;\n\tconfig?: boolean;\n\tduplicate?: boolean;\n\tsearch?: boolean;\n\tdownload?: boolean;\n\tsync?: boolean;\n\tfullscreen?: boolean;\n\tstar?: boolean;\n\n\t/** key is reserved in React */\n\ticonKey?: boolean;\n\tdocumentation?: boolean;\n\n\t/** renders a larger version of the icon (24x24) */\n\tlarge?: boolean;\n\n\t/** inverts the colors of the icon for display on dark background */\n\tinverted?: boolean;\n\n\t/** @ignore */\n\tclassName?: string;\n};\n\nfunction getSrc(props: Props) {\n\tconst {add, del, edit, config, duplicate, search, download, sync, fullscreen, iconKey, documentation, star} = props;\n\n\tif (add) {\n\t\treturn iconAdd;\n\t} else if (del) {\n\t\treturn iconDel;\n\t} else if (edit) {\n\t\treturn iconEdit;\n\t} else if (config) {\n\t\treturn iconConfig;\n\t} else if (duplicate) {\n\t\treturn iconDuplicate;\n\t} else if (search) {\n\t\treturn iconSearch;\n\t} else if (download) {\n\t\treturn iconDownload;\n\t} else if (sync) {\n\t\treturn iconSync;\n\t} else if (fullscreen) {\n\t\treturn iconFullscreen;\n\t} else if (iconKey) {\n\t\treturn iconIconKey;\n\t} else if (documentation) {\n\t\treturn iconDocumentation;\n\t} else if (star) {\n\t\treturn iconStar;\n\t} else {\n\t\tthrow Error('getSrc: no icon type specified');\n\t}\n}\n\nfunction getAlt(props: Props) {\n\tconst {add, del, edit, config, duplicate, search, download, sync, fullscreen, iconKey, documentation, star} = props;\n\n\tif (add) {\n\t\treturn 'icon add';\n\t} else if (del) {\n\t\treturn 'icon delete';\n\t} else if (edit) {\n\t\treturn 'icon edit';\n\t} else if (config) {\n\t\treturn 'icon config';\n\t} else if (duplicate) {\n\t\treturn 'icon duplicate';\n\t} else if (search) {\n\t\treturn 'icon search';\n\t} else if (download) {\n\t\treturn 'icon download';\n\t} else if (sync) {\n\t\treturn 'icon sync';\n\t} else if (fullscreen) {\n\t\treturn 'icon fullscreen';\n\t} else if (iconKey) {\n\t\treturn 'icon iconKey';\n\t} else if (documentation) {\n\t\treturn 'icon documentation';\n\t} else if (star) {\n\t\treturn 'icon star';\n\t} else {\n\t\tthrow Error('getAlt: no icon type specified');\n\t}\n}\n\nexport default function Icon(props: Props) {\n\tlet style;\n\tif (props.large) {\n\t\tstyle = {width: 24, height: 24};\n\t} else {\n\t\tstyle = {width: 16, height: 16};\n\t}\n\tif (props.inverted) {\n\t\tstyle = {...style, filter: 'invert(1)'};\n\t}\n\n\treturn <img src={getSrc(props)} className={`di icon ${props.className || ''}`} alt={getAlt(props)} style={style} />;\n}\n","import React, {MouseEventHandler, PropsWithChildren, MouseEvent} from 'react';\nimport {Trans} from 'react-i18next';\nimport cx from 'classnames';\n\nimport Icon from '../icon/Icon';\nimport {TranslationDescriptor} from '../../types/i18n';\n\nexport interface Props extends React.HTMLAttributes<HTMLSpanElement> {\n\t/** the label text, either a string or TranslationDescriptor */\n\ttext?: string | TranslationDescriptor;\n\n\t/** a smaller label */\n\tsmall?: boolean;\n\n\t/** a larger label */\n\tlarge?: boolean;\n\n\tonClick?: MouseEventHandler<HTMLSpanElement>;\n\n\t/** adds a delete button that triggers this callback function */\n\tonDelete?: (...args: Array<any>) => any;\n\n\tclassName?: string;\n\n\t/** @ignore */\n\t'data-testid'?: string;\n\n\t/** @ignore */\n\t'delete-button-data-testid'?: string;\n}\n\n/**\n * Label enables an easy way for marking or tagging elements.\n */\nexport default function Label({\n\ttext,\n\tsmall = false,\n\tlarge = false,\n\tonDelete,\n\tclassName,\n\tonClick,\n\tchildren,\n\t...dataTestIds\n}: PropsWithChildren<Props>) {\n\tfunction handleDelete(event: MouseEvent<HTMLSpanElement>) {\n\t\tevent.stopPropagation();\n\t\tif (onDelete) {\n\t\t\tonDelete();\n\t\t}\n\t}\n\n\treturn (\n\t\t<span\n\t\t\tonClick={onClick}\n\t\t\tclassName={cx('di label', className, {large, small, removable: onDelete, clickable: !!onClick})}\n\t\t\tdata-testid={dataTestIds['data-testid']}\n\t\t>\n\t\t\t{typeof text === 'string' ? text : text && <Trans i18nKey={text.id}>{text.defaultValue}</Trans>}\n\t\t\t<>{children}</>\n\t\t\t{onDelete && (\n\t\t\t\t<span data-testid={dataTestIds['delete-button-data-testid']} className=\"remove\" onClick={handleDelete}>\n\t\t\t\t\t<Icon del inverted />\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</span>\n\t);\n}\n","import {\n\tarrow,\n\tautoUpdate,\n\tflip,\n\tFloatingPortal,\n\toffset,\n\tsafePolygon,\n\tshift,\n\tsize,\n\tuseClick,\n\tuseDismiss,\n\tuseFloating,\n\tuseFocus,\n\tuseHover,\n\tuseInteractions\n} from '@floating-ui/react';\nimport cx from 'classnames';\nimport React, {useEffect, useRef} from 'react';\n\nexport type Placement =\n\t| 'top'\n\t| 'bottom'\n\t| 'left'\n\t| 'right'\n\t| 'top-start'\n\t| 'top-end'\n\t| 'bottom-start'\n\t| 'bottom-end'\n\t| 'right-start'\n\t| 'right-end'\n\t| 'left-start'\n\t| 'left-end';\n\nexport type Props = {\n\t/** Element to toggle the Popup */\n\thandler: React.ReactNode;\n\n\t/** Content to be displayed */\n\tchildren: React.ReactNode;\n\n\t/** If true, displays the Popup's content */\n\topen: boolean;\n\n\t/** Function, executed when the Popup gets closed */\n\tonOpenChange: (open: boolean) => void;\n\n\t/** (Optional) if set, sets the direction in which the content should be displayed */\n\tplacement?: Placement;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** (Optional) If set to true, the content is hidden via styles, but still exists in the DOM tree */\n\tpreventDestroyContentOnHide?: boolean;\n\n\t/** (Optional) Class name of the handler wrapping element */\n\thandlerWrapperClassName?: string;\n\n\t/** (Optional) Interaction mode to open the popup */\n\tmode?: Array<'click' | 'hover' | 'focus'>;\n\n\t/** (Optional) Disables the Popup */\n\tdisabled?: boolean;\n};\n\n// Margin from the edge of the viewport\nconst MARGIN = 16;\n\n/**\n * Popup displays content within a small modal.\n * Its usage is highly flexible and used in several other components.\n */\nexport default function Popup({\n\tplacement = 'bottom',\n\tmode = ['click'],\n\tdisabled,\n\thandler,\n\thandlerWrapperClassName,\n\tpreventDestroyContentOnHide,\n\topen,\n\tonOpenChange,\n\tclassName,\n\tchildren\n}: Props) {\n\tconst arrowRef = useRef<HTMLDivElement>(null);\n\n\tconst {\n\t\telements,\n\t\tupdate,\n\t\trefs,\n\t\tfloatingStyles,\n\t\tcontext,\n\t\tmiddlewareData,\n\t\tplacement: computedPlacement\n\t} = useFloating({\n\t\tplacement,\n\t\topen,\n\t\tonOpenChange,\n\t\twhileElementsMounted: !preventDestroyContentOnHide ? autoUpdate : undefined,\n\t\tmiddleware: [\n\t\t\toffset({\n\t\t\t\tmainAxis: 12\n\t\t\t}),\n\t\t\tflip({\n\t\t\t\tpadding: MARGIN,\n\t\t\t\tboundary: 'clippingAncestors',\n\t\t\t\taltBoundary: true\n\t\t\t}),\n\t\t\tshift({\n\t\t\t\tpadding: MARGIN,\n\t\t\t\tboundary: 'clippingAncestors',\n\t\t\t\taltBoundary: true\n\t\t\t}),\n\t\t\tsize({\n\t\t\t\tpadding: MARGIN,\n\t\t\t\tboundary: 'clippingAncestors',\n\t\t\t\taltBoundary: true,\n\t\t\t\tapply({availableHeight, availableWidth, elements}) {\n\t\t\t\t\tconst width = `${Math.max(0, availableWidth - MARGIN)}px`;\n\t\t\t\t\tconst height = `${Math.max(0, availableHeight - MARGIN)}px`;\n\t\t\t\t\telements.floating.style.maxWidth = width;\n\t\t\t\t\telements.floating.style.maxHeight = height;\n\t\t\t\t}\n\t\t\t}),\n\t\t\tarrow({\n\t\t\t\telement: arrowRef\n\t\t\t})\n\t\t]\n\t});\n\n\tuseEffect(() => {\n\t\tif (preventDestroyContentOnHide && open && elements.reference && elements.floating) {\n\t\t\tconst cleanup = autoUpdate(elements.reference, elements.floating, update);\n\t\t\treturn cleanup;\n\t\t}\n\t}, [elements.floating, elements.reference, open, update, preventDestroyContentOnHide]);\n\n\tconst click = useClick(context, {\n\t\tenabled: !disabled && mode.includes('click'),\n\t\tkeyboardHandlers: false // Prevent space key from being blocked in input fields (floating-ui issue #1812)\n\t});\n\tconst hover = useHover(context, {\n\t\tenabled: !disabled && mode.includes('hover'),\n\t\thandleClose: safePolygon()\n\t});\n\tconst focus = useFocus(context, {enabled: !disabled && mode.includes('focus')});\n\tconst dismiss = useDismiss(context);\n\tconst {getReferenceProps, getFloatingProps} = useInteractions([click, hover, focus, dismiss]);\n\n\treturn (\n\t\t<>\n\t\t\t<span\n\t\t\t\tstyle={{display: 'inline-block'}}\n\t\t\t\tclassName={cx('popup-handler-wrapper', handlerWrapperClassName)}\n\t\t\t\tref={refs.setReference}\n\t\t\t\t{...getReferenceProps()}\n\t\t\t>\n\t\t\t\t{handler}\n\t\t\t</span>\n\t\t\t{(open || preventDestroyContentOnHide) && (\n\t\t\t\t<FloatingPortal>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cx('di popup-wrapper', {hidden: preventDestroyContentOnHide && !open})}\n\t\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t\t\tstyle={{...floatingStyles, zIndex: 100000}}\n\t\t\t\t\t\t{...getFloatingProps()}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className={cx('di popup', computedPlacement, className)}>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={cx('popup-arrow', computedPlacement)}\n\t\t\t\t\t\t\t\tref={arrowRef}\n\t\t\t\t\t\t\t\tstyle={{left: middlewareData.arrow?.x, top: middlewareData.arrow?.y}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<div className=\"popup-content\">{children}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</FloatingPortal>\n\t\t\t)}\n\t\t</>\n\t);\n}\n","import React, {useState} from 'react';\n\nimport Popup, {Placement} from '../popup/Popup';\n\nexport type Props = {\n\t/** the Bubble content */\n\tcontent: React.ReactNode;\n\n\t/** inverts the colors */\n\tinverted?: boolean;\n\n\t/** @ignore */\n\tchildren: React.ReactNode;\n\n\t/** @ignore */\n\tstyle?: React.CSSProperties;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** hides the bubble */\n\tdisabled?: boolean;\n\n\t/** changed the direction */\n\tdirection?: Placement;\n};\n\n/**\n * Bubbles are best used to provide some additional information like short instructions or help texts, which are then going to be displayed on Mouse-Over.\n */\nexport default function Bubble({content, inverted, children, disabled, style, direction, className}: Props) {\n\tconst [open, setOpen] = useState(false);\n\treturn (\n\t\t<Popup\n\t\t\topen={open}\n\t\t\tonOpenChange={setOpen}\n\t\t\thandler={children}\n\t\t\tdisabled={disabled}\n\t\t\tmode={['hover']}\n\t\t\tplacement={direction ? direction : 'top'}\n\t\t\tclassName={`bubble ${inverted ? 'inverted' : ''} ${className ? className : ''}`}\n\t\t>\n\t\t\t<span className={`bubble-content`} style={style}>\n\t\t\t\t{content}\n\t\t\t</span>\n\t\t</Popup>\n\t);\n}\n","import React, {useState} from 'react';\n\nimport Popup, {Placement} from '../popup/Popup';\n\nexport type Props = {\n\t/** Content of the Tooltip */\n\tcontent: React.ReactNode;\n\n\t/** Enabler of the Tooltip */\n\tchildren: React.ReactNode;\n\n\t/** @ignore */\n\tclassName?: string;\n\n\t/** (Optional) if set, disables the &lt;Tooltip/&gt; from opening */\n\tdisabled?: boolean;\n\n\t/** (Optional) if set, opens &lt;Tooltip/&gt; in given direction, defaults to 'right' */\n\tdirection?: Placement;\n};\n\n/**\n * Tooltip is best used to display some short additional information or description\n */\nexport default function Tooltip({content, children, className, direction, disabled}: Props) {\n\tconst [open, setOpen] = useState(false);\n\n\treturn (\n\t\t<Popup\n\t\t\topen={open}\n\t\t\tdisabled={disabled}\n\t\t\tmode={['hover']}\n\t\t\tonOpenChange={setOpen}\n\t\t\thandler={children}\n\t\t\tplacement={direction ? direction : 'right'}\n\t\t\tclassName={`tooltip inverted ${className ? className : ''}`}\n\t\t>\n\t\t\t<span className=\"tooltip-content\">{content}</span>\n\t\t</Popup>\n\t);\n}\n","import * as React from 'react';\n\nimport Bubble from '../bubble/Bubble';\n\ntype Page = {\n\tname: string;\n\trenderHeading: () => React.ReactNode;\n\trenderBody?: () => React.ReactNode;\n\ttabDescription?: string;\n};\n\ntype State = {\n\tcurrentTab: string | null | undefined;\n};\n\nexport type Props = {\n\t/** Array of pages to be displayed */\n\tpages: Array<Page>;\n\n\t/** (Optional) if set, disables tab */\n\tdisabled?: boolean;\n\n\t/** (Optional) function, executed if tabs change */\n\tonChange?: (tab: string) => void;\n\n\t/** (Optional) sets the current tab */\n\tcurrentTab?: string | null | undefined;\n};\n\n/**\n * Tabs add the possibility to unite several homogeneous pages into one.\n * Unlike RouteTabs, Tabs cannot be accessed directly via the browser's history\n */\nexport default class Tabs extends React.Component<Props, State> {\n\tstate: State = {\n\t\tcurrentTab: this.props.pages.length ? this.props.pages[0].name : null\n\t};\n\n\thandleClick: (tab: string) => void = (tab: string) => {\n\t\tif (this.props.onChange) {\n\t\t\tthis.props.onChange(tab);\n\t\t} else if (typeof this.props.currentTab === 'undefined') {\n\t\t\tthis.setState({\n\t\t\t\tcurrentTab: tab\n\t\t\t});\n\t\t}\n\t};\n\n\tcurrentTabPage: () => Page | null | undefined = (): Page | null | undefined => {\n\t\tconst currentTab = typeof this.props.currentTab === 'string' ? this.props.currentTab : this.state.currentTab;\n\t\treturn this.props.pages.find(({name}) => currentTab === name);\n\t};\n\n\tisCurrentTab: (tab: string) => boolean = (tab: string) => {\n\t\tconst currentTab = typeof this.props.currentTab === 'string' ? this.props.currentTab : this.state.currentTab;\n\t\treturn currentTab === tab;\n\t};\n\n\trenderBody = () => {\n\t\tconst page = this.currentTabPage();\n\n\t\tif (page && typeof page.renderBody === 'function') {\n\t\t\treturn page.renderBody();\n\t\t}\n\n\t\treturn null;\n\t};\n\n\trender() {\n\t\tconst {pages, disabled} = this.props;\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<div className=\"di tabs\">\n\t\t\t\t\t{pages.map(({name, renderHeading, tabDescription}) =>\n\t\t\t\t\t\ttabDescription ? (\n\t\t\t\t\t\t\t<Bubble inverted key={name} content={tabDescription} className=\"bubble-tab-description\">\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tdata-testid=\"tab-button\"\n\t\t\t\t\t\t\t\t\tclassName={`item ${disabled ? 'disabled' : ''} ${\n\t\t\t\t\t\t\t\t\t\tthis.isCurrentTab(name) ? 'active' : ''\n\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\tonClick={() => !disabled && this.handleClick(name)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{renderHeading()}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</Bubble>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tdata-testid=\"tab-button\"\n\t\t\t\t\t\t\t\tkey={name}\n\t\t\t\t\t\t\t\tclassName={`item ${disabled ? 'disabled' : ''} ${\n\t\t\t\t\t\t\t\t\tthis.isCurrentTab(name) ? 'active' : ''\n\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\tonClick={() => !disabled && this.handleClick(name)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{renderHeading()}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t)\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t{this.renderBody()}\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import * as React from 'react';\nimport {withTranslation, WithTranslation} from 'react-i18next';\n\nimport '../../assets/search-box.css';\nimport {ComponentType, CSSProperties} from 'react';\n\nimport Icon from '../icon/Icon';\nimport Button from '../button/Button';\nimport {TranslationDescriptor} from '../../types/i18n';\n\nexport type Props = {\n\t/** Placeholder text for input field `(string | TranslationDescriptor)` */\n\tplaceholder: string | TranslationDescriptor;\n\n\t/** Function to call if the input changes */\n\tonChange: (value: string) => void;\n\n\t/** Function to call if the search is triggered (button press or return in search field) */\n\tonSubmit?: (value: string) => void;\n\n\t/** if true, a button is shown that clears the input */\n\tclearable?: boolean;\n\n\t/** Value that should initially be displayed in the text box */\n\tinitialValue: string | null | undefined;\n\n\t/** Wrapper styles */\n\tstyle: CSSProperties | undefined;\n};\n\ntype State = {\n\tquery: string;\n};\n\nconst ClearButton = ({\n\tonChange,\n\tinputElement,\n\tstyle\n}: {\n\tonChange: (value: string) => void;\n\tinputElement: HTMLElement | null | undefined;\n\tstyle?: React.CSSProperties;\n}) => (\n\t<Button\n\t\tnaked\n\t\tonClick={() => {\n\t\t\tonChange('');\n\n\t\t\tif (inputElement) {\n\t\t\t\tinputElement.focus();\n\t\t\t}\n\t\t}}\n\t\tstyle={style}\n\t>\n\t\t<Icon del />\n\t</Button>\n);\n\n/**\n * SearchBox is used for searching content and provides a set of `props` for different user experiences\n */\nclass SearchBox extends React.Component<Props & WithTranslation, State> {\n\tstate: State = {\n\t\tquery: this.props.initialValue || ''\n\t};\n\tinput: HTMLInputElement | null | undefined;\n\n\tprintPlaceholder(): string {\n\t\tconst {t, placeholder} = this.props;\n\n\t\tif (typeof placeholder === 'object') {\n\t\t\treturn t(placeholder.id, {\n\t\t\t\tdefaultValue: placeholder.defaultValue\n\t\t\t});\n\t\t} else {\n\t\t\treturn placeholder;\n\t\t}\n\t}\n\n\thandleChange: (value: string) => void = (value: string) => {\n\t\tconst {onChange} = this.props;\n\t\tthis.setState({\n\t\t\tquery: value\n\t\t});\n\t\tonChange(value);\n\t};\n\n\thandleKeyUp: (arg0: any) => void = ({key}) => {\n\t\tconst {onSubmit} = this.props;\n\t\tconst {query} = this.state;\n\n\t\tif (key === 'Enter' && typeof onSubmit === 'function') {\n\t\t\tonSubmit(query);\n\t\t}\n\t};\n\n\trender() {\n\t\tconst {onSubmit, style, clearable} = this.props;\n\t\tconst {query} = this.state;\n\t\treturn (\n\t\t\t<div className=\"search-box\" style={style}>\n\t\t\t\t<input\n\t\t\t\t\tref={(input) => {\n\t\t\t\t\t\tthis.input = input;\n\t\t\t\t\t}}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tvalue={query}\n\t\t\t\t\tplaceholder={this.printPlaceholder()}\n\t\t\t\t\tonKeyUp={this.handleKeyUp}\n\t\t\t\t\tonChange={({target: {value}}) => this.handleChange(value)}\n\t\t\t\t/>\n\t\t\t\t{typeof onSubmit === 'function' ? (\n\t\t\t\t\t<React.Fragment>\n\t\t\t\t\t\t{query && clearable && (\n\t\t\t\t\t\t\t<ClearButton\n\t\t\t\t\t\t\t\tonChange={this.handleChange}\n\t\t\t\t\t\t\t\tinputElement={this.input}\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tright: 30\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<Button naked onClick={() => onSubmit(query)}>\n\t\t\t\t\t\t\t<Icon search />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</React.Fragment>\n\t\t\t\t) : query && clearable ? (\n\t\t\t\t\t<ClearButton onChange={this.handleChange} inputElement={this.input} />\n\t\t\t\t) : (\n\t\t\t\t\t<Button naked disabled>\n\t\t\t\t\t\t<Icon search />\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nexport default withTranslation()(SearchBox) as ComponentType<Props>;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deviceinsight/ng-ui-basic-components",
3
- "version": "7.21.0",
3
+ "version": "7.22.0",
4
4
  "private": false,
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "repository": {
@@ -42,29 +42,29 @@
42
42
  "@floating-ui/react": "^0.27.20",
43
43
  "classnames": "^2.5.1",
44
44
  "dayjs": "^1.11.23",
45
- "react-draggable": "^4.7.1"
45
+ "react-draggable": "^4.7.2"
46
46
  },
47
47
  "peerDependencies": {
48
- "i18next": "^26.3.6",
48
+ "i18next": "^26.4.2",
49
49
  "react": "^19.2.8",
50
50
  "react-dom": "^19.2.8",
51
- "react-i18next": "^17.0.11"
51
+ "react-i18next": "^17.0.15"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@storybook/react-vite": "10.6.0",
55
- "@types/node": "24.13.5",
55
+ "@types/node": "24.13.6",
56
56
  "@types/react": "19.2.18",
57
57
  "@types/react-dom": "19.2.7",
58
58
  "@vitejs/plugin-react": "6.1.1",
59
59
  "husky": "9.1.7",
60
- "i18next": "26.3.6",
60
+ "i18next": "26.4.2",
61
61
  "lint-staged": "17.5.1",
62
- "oxlint": "1.83.0",
63
- "prettier": "3.9.7",
62
+ "oxlint": "1.85.0",
63
+ "prettier": "3.9.9",
64
64
  "prop-types": "15.8.1",
65
65
  "react": "19.2.8",
66
66
  "react-dom": "19.2.8",
67
- "react-i18next": "17.0.11",
67
+ "react-i18next": "17.0.15",
68
68
  "rimraf": "6.1.3",
69
69
  "storybook": "10.6.0",
70
70
  "typescript": "7.0.2",
@@ -76,6 +76,6 @@
76
76
  ]
77
77
  },
78
78
  "engines": {
79
- "node": "^24.18.0"
79
+ "node": "^24.21.0"
80
80
  }
81
81
  }