@nordicsemiconductor/pc-nrfconnect-shared 119.0.0 → 121.0.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.
Files changed (30) hide show
  1. package/Changelog.md +27 -0
  2. package/coverage/cobertura-coverage.xml +235 -206
  3. package/nrfutil/moduleVersion.ts +25 -0
  4. package/nrfutil/sandbox.ts +2 -22
  5. package/package.json +1 -1
  6. package/src/App/shared.scss +0 -1
  7. package/src/Device/DeviceSelector/DeviceSelector.test.tsx +9 -9
  8. package/src/Device/DeviceSelector/DeviceSelector.tsx +2 -2
  9. package/src/Device/deviceLister.ts +7 -7
  10. package/src/Device/deviceSetup.ts +1 -0
  11. package/src/Dropdown/Dropdown.tsx +2 -2
  12. package/src/InlineInput/InlineInput.tsx +25 -3
  13. package/src/InlineInput/NumberInlineInput.tsx +24 -8
  14. package/src/InlineInput/NumberInputWithDropdown.tsx +132 -0
  15. package/src/index.ts +2 -0
  16. package/src/utils/packageJson.ts +1 -1
  17. package/typings/generated/nrfutil/moduleVersion.d.ts +1 -0
  18. package/typings/generated/nrfutil/moduleVersion.d.ts.map +1 -1
  19. package/typings/generated/nrfutil/sandbox.d.ts.map +1 -1
  20. package/typings/generated/src/Device/deviceSetup.d.ts.map +1 -1
  21. package/typings/generated/src/Dropdown/Dropdown.d.ts +2 -2
  22. package/typings/generated/src/Dropdown/Dropdown.d.ts.map +1 -1
  23. package/typings/generated/src/InlineInput/InlineInput.d.ts +3 -0
  24. package/typings/generated/src/InlineInput/InlineInput.d.ts.map +1 -1
  25. package/typings/generated/src/InlineInput/NumberInlineInput.d.ts +8 -4
  26. package/typings/generated/src/InlineInput/NumberInlineInput.d.ts.map +1 -1
  27. package/typings/generated/src/InlineInput/NumberInputWithDropdown.d.ts +19 -0
  28. package/typings/generated/src/InlineInput/NumberInputWithDropdown.d.ts.map +1 -0
  29. package/typings/generated/src/index.d.ts +2 -0
  30. package/typings/generated/src/index.d.ts.map +1 -1
@@ -4,6 +4,7 @@
4
4
  * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
5
  */
6
6
 
7
+ import packageJson from '../src/utils/packageJson';
7
8
  import {
8
9
  Dependency,
9
10
  isIncrementalVersion,
@@ -55,3 +56,27 @@ export const resolveModuleVersion = (
55
56
  versions: Dependency[] = []
56
57
  ): Dependency | SubDependency | undefined =>
57
58
  findTopLevel(module, versions) ?? findInDependencies(module, versions);
59
+
60
+ const overriddenVersion = (module: string) => {
61
+ const env = { ...process.env };
62
+ if (
63
+ process.env.NODE_ENV !== 'production' ||
64
+ (process.env.NODE_ENV === 'production' &&
65
+ !!process.env.NRF_OVERRIDE_NRFUTIL_SETTINGS)
66
+ ) {
67
+ return env[`NRF_OVERRIDE_VERSION_${module.toLocaleUpperCase()}`];
68
+ }
69
+ };
70
+
71
+ const versionFromPackageJson = (module: string) =>
72
+ packageJson().nrfConnectForDesktop.nrfutil?.[module][0];
73
+
74
+ const failToDetermineVersion = (module: string) => {
75
+ throw new Error(`No version specified for nrfutil-${module}`);
76
+ };
77
+
78
+ export const versionToInstall = (module: string, version?: string) =>
79
+ version ??
80
+ overriddenVersion(module) ??
81
+ versionFromPackageJson(module) ??
82
+ failToDetermineVersion(module);
@@ -10,7 +10,7 @@ import os from 'os';
10
10
  import path from 'path';
11
11
 
12
12
  import describeError from '../src/logging/describeError';
13
- import packageJson from '../src/utils/packageJson';
13
+ import { versionToInstall } from './moduleVersion';
14
14
  import { getNrfutilLogger } from './nrfutilLogger';
15
15
  import {
16
16
  BackgroundTask,
@@ -492,30 +492,10 @@ export default async (
492
492
  version?: string,
493
493
  onProgress?: (progress: Progress, task?: Task) => void
494
494
  ) => {
495
- const env = { ...process.env };
496
- let overrideVersion: string | undefined;
497
- if (
498
- process.env.NODE_ENV !== 'production' ||
499
- (process.env.NODE_ENV === 'production' &&
500
- !!process.env.NRF_OVERRIDE_NRFUTIL_SETTINGS)
501
- ) {
502
- overrideVersion =
503
- env[`NRF_OVERRIDE_VERSION_${module.toLocaleUpperCase()}`] ??
504
- undefined;
505
- }
506
-
507
- const moduleVersions = overrideVersion
508
- ? [overrideVersion]
509
- : packageJson().nrfConnectForDesktop?.nrfutil?.[module];
510
-
511
- if (!version && (!moduleVersions || moduleVersions.length === 0)) {
512
- throw new Error(`No version specified for nrfutil-${module}`);
513
- }
514
-
515
495
  const sandbox = new NrfutilSandbox(
516
496
  baseDir,
517
497
  module,
518
- version ?? (moduleVersions?.[0] as string)
498
+ versionToInstall(module, version)
519
499
  );
520
500
 
521
501
  onProgress?.(convertNrfutilProgress({ progressPercentage: 0 }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nordicsemiconductor/pc-nrfconnect-shared",
3
- "version": "119.0.0",
3
+ "version": "121.0.0",
4
4
  "description": "Shared commodities for developing pc-nrfconnect-* packages",
5
5
  "repository": {
6
6
  "type": "git",
@@ -19,7 +19,6 @@ body,
19
19
  body {
20
20
  -webkit-user-select: none;
21
21
  -webkit-app-region: drag;
22
- cursor: default;
23
22
  }
24
23
 
25
24
  .modal-content {
@@ -5,12 +5,7 @@
5
5
  */
6
6
 
7
7
  import React from 'react';
8
- import {
9
- fireEvent,
10
- screen,
11
- waitFor,
12
- waitForElementToBeRemoved,
13
- } from '@testing-library/react';
8
+ import { fireEvent, screen, waitFor } from '@testing-library/react';
14
9
 
15
10
  import render from '../../../test/testrenderer';
16
11
  import { addDevice, Device, removeDevice } from '../deviceSlice';
@@ -337,14 +332,19 @@ describe('DeviceSelector', () => {
337
332
 
338
333
  fireEvent.click(screen.getByText('Select device'));
339
334
  fireEvent.click(screen.getByText(testDevice.serialNumber));
340
- await screen.findByText('No');
335
+
336
+ await screen.findByText(
337
+ 'Device must be programmed, do you want to proceed?'
338
+ );
339
+
341
340
  fireEvent.click(screen.getByText('No'));
342
341
 
343
- await waitForElementToBeRemoved(() =>
342
+ expect(
344
343
  screen.queryByText(
345
344
  'Device must be programmed, do you want to proceed?'
346
345
  )
347
- );
346
+ ).toBeNull();
347
+
348
348
  expect(screen.getAllByText(testDevice.serialNumber)).toHaveLength(2);
349
349
  });
350
350
  });
@@ -59,10 +59,10 @@ export default ({
59
59
  const showSelectedDevice = deviceIsSelected || waitingToAutoReconnect;
60
60
 
61
61
  const doDeselectDevice = useCallback(() => {
62
- onDeviceDeselected();
63
- dispatch(deselectDevice());
64
62
  dispatch(clearWaitForDevice());
65
63
  dispatch(setAutoSelectDevice(undefined));
64
+ onDeviceDeselected();
65
+ dispatch(deselectDevice());
66
66
  }, [dispatch, onDeviceDeselected]);
67
67
 
68
68
  // Ensure that useCallback is
@@ -143,17 +143,17 @@ const removeDeviceFromList =
143
143
  ): AppThunk =>
144
144
  (dispatch, getState) => {
145
145
  if (
146
- removedDevice.serialNumber ===
146
+ removedDevice.serialNumber !==
147
147
  getState().device.selectedSerialNumber
148
148
  ) {
149
- onDeviceDeselected();
149
+ dispatch(removeDevice(removedDevice));
150
+ onDeviceDisconnected(removedDevice);
151
+ return;
150
152
  }
151
153
 
152
- if (
153
- removedDevice.serialNumber ===
154
- getState().device.selectedSerialNumber &&
155
- !getState().deviceAutoSelect.waitForDevice
156
- ) {
154
+ onDeviceDeselected();
155
+
156
+ if (!getState().deviceAutoSelect.waitForDevice) {
157
157
  dispatch(closeDeviceSetupDialog());
158
158
  }
159
159
 
@@ -153,6 +153,7 @@ export const prepareDevice =
153
153
  };
154
154
 
155
155
  const cancelAction = async () => {
156
+ dispatch(closeDeviceSetupDialog());
156
157
  let i = 0;
157
158
  do {
158
159
  const deviceSetup = validDeviceSetups[i];
@@ -11,9 +11,9 @@ import classNames from '../utils/classNames';
11
11
 
12
12
  import styles from './Dropdown.module.scss';
13
13
 
14
- export interface DropdownItem {
14
+ export interface DropdownItem<T = string> {
15
15
  label: React.ReactNode;
16
- value: string;
16
+ value: T;
17
17
  }
18
18
 
19
19
  export interface DropdownProps {
@@ -57,6 +57,9 @@ interface Props {
57
57
  onKeyboardIncrementAction?: () => string;
58
58
  onKeyboardDecrementAction?: () => string;
59
59
  className?: string;
60
+ textAlignLeft?: boolean;
61
+ onValidityChanged?: (validity: boolean) => void;
62
+ preventDefaultInvalidStyle?: boolean;
60
63
  }
61
64
 
62
65
  const InlineInput = React.forwardRef<HTMLInputElement, Props>(
@@ -70,19 +73,28 @@ const InlineInput = React.forwardRef<HTMLInputElement, Props>(
70
73
  onKeyboardIncrementAction = () => externalValue,
71
74
  onKeyboardDecrementAction = () => externalValue,
72
75
  className = '',
76
+ textAlignLeft = false,
77
+ onValidityChanged,
78
+ preventDefaultInvalidStyle,
73
79
  },
74
80
  ref
75
81
  ) => {
76
82
  const [internalValue, setInternalValue] = useState(externalValue);
77
83
  const [initialValue, setInitialValue] = useState(externalValue);
78
84
  useSynchronisationIfChangedFromOutside(externalValue, setInternalValue);
85
+
79
86
  const onChangeIfValid = (newValue: string) => {
80
87
  if (disabled) {
81
88
  return;
82
89
  }
83
90
 
91
+ const validity = isValid(newValue);
92
+ if (onValidityChanged != null) {
93
+ onValidityChanged(validity);
94
+ }
95
+
84
96
  setInternalValue(newValue);
85
- if (isValid(newValue)) {
97
+ if (validity) {
86
98
  if (externalValue !== newValue) {
87
99
  onChange(newValue);
88
100
  }
@@ -94,7 +106,9 @@ const InlineInput = React.forwardRef<HTMLInputElement, Props>(
94
106
  return;
95
107
  }
96
108
 
97
- if (isValid(internalValue)) {
109
+ const validity = isValid(internalValue);
110
+
111
+ if (validity) {
98
112
  if (initialValue !== internalValue) {
99
113
  setInitialValue(internalValue);
100
114
  onChangeComplete(internalValue);
@@ -102,6 +116,11 @@ const InlineInput = React.forwardRef<HTMLInputElement, Props>(
102
116
  } else {
103
117
  setInternalValue(externalValue);
104
118
  }
119
+
120
+ // Should always end up valid in this case
121
+ if (onValidityChanged != null) {
122
+ onValidityChanged(true);
123
+ }
105
124
  };
106
125
 
107
126
  const onChangeCompleteIfValid = (event: React.KeyboardEvent) => {
@@ -144,8 +163,11 @@ const InlineInput = React.forwardRef<HTMLInputElement, Props>(
144
163
  type="text"
145
164
  className={classNames(
146
165
  'inline-input',
147
- isValid(internalValue) || 'invalid',
166
+ preventDefaultInvalidStyle
167
+ ? null
168
+ : isValid(internalValue) || 'invalid',
148
169
  disabled && 'disabled',
170
+ textAlignLeft && 'tw-pl-2 tw-text-left',
149
171
  className
150
172
  )}
151
173
  size={
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
5
  */
6
6
 
7
- import React, { FC } from 'react';
7
+ import React from 'react';
8
8
 
9
9
  import { isFactor } from '../Slider/factor';
10
10
  import {
@@ -19,12 +19,16 @@ import InlineInput from './InlineInput';
19
19
 
20
20
  import './number-inline-input.scss';
21
21
 
22
- export interface Props {
22
+ export interface NumberInlineInput {
23
23
  disabled?: boolean;
24
24
  value: number;
25
25
  range: RangeOrValues;
26
+ className?: string;
26
27
  onChange: (value: number) => void;
27
28
  onChangeComplete?: (value: number) => void;
29
+ textAlignLeft?: boolean;
30
+ onValidityChanged?: (validity: boolean) => void;
31
+ preventDefaultInvalidStyle?: boolean;
28
32
  }
29
33
 
30
34
  const isInValues = (value: number, values: Values) => values.includes(value);
@@ -77,21 +81,24 @@ const changeValueStepwise = (
77
81
  return nextValue != null ? nextValue : current;
78
82
  };
79
83
 
80
- const NumberInlineInput: FC<Props> = ({
84
+ export default ({
81
85
  disabled,
82
86
  value,
83
87
  range,
88
+ className,
84
89
  onChange,
85
90
  onChangeComplete = () => {},
86
- }) => {
91
+ textAlignLeft,
92
+ onValidityChanged,
93
+ preventDefaultInvalidStyle,
94
+ }: NumberInlineInput) => {
87
95
  useValidatedRangeOrValues(range);
88
96
 
89
97
  return (
90
98
  <InlineInput
91
- className="number-inline-input"
99
+ className={`${className} number-inline-input`}
92
100
  disabled={disabled}
93
101
  value={String(value)}
94
- isValid={newValue => isValid(Number(newValue), range)}
95
102
  onChange={newValue => onChange(Number(newValue))}
96
103
  onChangeComplete={newValue => onChangeComplete(Number(newValue))}
97
104
  onKeyboardIncrementAction={() =>
@@ -100,8 +107,17 @@ const NumberInlineInput: FC<Props> = ({
100
107
  onKeyboardDecrementAction={() =>
101
108
  changeValueStepwise(value, range, -1).toString()
102
109
  }
110
+ textAlignLeft={textAlignLeft}
111
+ isValid={newValue => {
112
+ const validity = isValid(Number(newValue), range);
113
+ if (onValidityChanged != null) {
114
+ // Then propagate the validity back to parent
115
+ onValidityChanged(validity);
116
+ }
117
+ return validity;
118
+ }}
119
+ onValidityChanged={onValidityChanged}
120
+ preventDefaultInvalidStyle={preventDefaultInvalidStyle}
103
121
  />
104
122
  );
105
123
  };
106
-
107
- export default NumberInlineInput;
@@ -0,0 +1,132 @@
1
+ /*
2
+ * Copyright (c) 2023 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import React, { useState } from 'react';
8
+ import FormLabel from 'react-bootstrap/esm/FormLabel';
9
+
10
+ import { DropdownItem } from '../Dropdown/Dropdown';
11
+ import { RangeOrValues } from '../Slider/range';
12
+ import classNames from '../utils/classNames';
13
+ import NumberInlineInput from './NumberInlineInput';
14
+
15
+ import styles from '../Dropdown/Dropdown.module.scss';
16
+
17
+ export type NumberDropdownItem = DropdownItem<number>;
18
+
19
+ interface DropdownProps {
20
+ id?: string;
21
+ label?: React.ReactNode;
22
+ items: NumberDropdownItem[];
23
+ value: number;
24
+ onChange: (value: number) => void;
25
+ range: RangeOrValues;
26
+ numItemsBeforeScroll?: number;
27
+ className?: string;
28
+ disabled?: boolean;
29
+ title?: string;
30
+ }
31
+
32
+ export default ({
33
+ id,
34
+ label,
35
+ items,
36
+ value,
37
+ onChange,
38
+ range,
39
+ numItemsBeforeScroll = 0,
40
+ className = '',
41
+ disabled = false,
42
+ title,
43
+ }: DropdownProps) => {
44
+ const [isActive, setIsActive] = useState(false);
45
+ const [inlineValue, setInlineValue] = useState(value);
46
+ const [isValid, setIsValid] = useState(true);
47
+
48
+ const setNewValue = (newValue: number) => {
49
+ setInlineValue(newValue);
50
+ onChange(newValue);
51
+ setIsActive(false);
52
+ };
53
+ const onClickItem = (item: NumberDropdownItem) => {
54
+ if (item.value != null && typeof item.value === 'number') {
55
+ setNewValue(item.value);
56
+ }
57
+ };
58
+
59
+ return (
60
+ <div
61
+ className={`tw-preflight tw-relative tw-w-full ${className}`}
62
+ onBlur={event => {
63
+ if (!event.currentTarget.contains(event.relatedTarget)) {
64
+ setIsActive(false);
65
+ }
66
+ }}
67
+ title={title}
68
+ >
69
+ <FormLabel className="tw-mb-1 tw-text-xs">{label}</FormLabel>
70
+ <div className="tw-flex tw-h-8 tw-w-full">
71
+ <NumberInlineInput
72
+ value={inlineValue}
73
+ range={range}
74
+ onChange={val => setInlineValue(val)}
75
+ onChangeComplete={val => setNewValue(val)}
76
+ className={`tw-x-2 tw-h-full tw-w-full tw-bg-gray-700 tw-text-white tw-underline tw-underline-offset-2 ${
77
+ isValid ? 'tw-decoration-white' : 'tw-decoration-red'
78
+ }`}
79
+ textAlignLeft
80
+ onValidityChanged={setIsValid}
81
+ preventDefaultInvalidStyle
82
+ />
83
+ <button
84
+ id={id}
85
+ type="button"
86
+ className="tw-overflow-hidden tw-border-b tw-border-solid tw-border-b-gray-200 tw-bg-gray-700 tw-px-2 tw-text-white"
87
+ onClick={() => setIsActive(!isActive)}
88
+ disabled={disabled}
89
+ >
90
+ <span
91
+ className={`mdi mdi-chevron-down tw-text-lg ${classNames(
92
+ isActive && 'tw-rotate-180'
93
+ )}`}
94
+ />
95
+ </button>
96
+ </div>
97
+ {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions -- We need an interactive handler as described below */}
98
+ <div
99
+ onMouseDown={ev => {
100
+ // To prevent the dropdown from closing when users click on the scrollbar of the items
101
+ ev.preventDefault();
102
+ }}
103
+ style={
104
+ numItemsBeforeScroll > 0
105
+ ? {
106
+ maxHeight: `${numItemsBeforeScroll * 24}px`,
107
+ }
108
+ : {}
109
+ }
110
+ data-height={
111
+ numItemsBeforeScroll > 0 &&
112
+ items.length > numItemsBeforeScroll
113
+ }
114
+ className={`tw-text-while tw-absolute tw-right-0 tw-z-10 tw-w-full tw-bg-gray-700 tw-p-0 ${classNames(
115
+ styles.content,
116
+ !isActive && 'tw-hidden'
117
+ )}`}
118
+ >
119
+ {items.map(item => (
120
+ <button
121
+ type="button"
122
+ className="tw-bg-transparent tw-clear-both tw-block tw-h-6 tw-w-full tw-whitespace-nowrap tw-border-0 tw-px-2 tw-py-1 tw-text-left tw-font-normal tw-text-white hover:tw-bg-gray-600 focus:tw-bg-gray-600"
123
+ key={item.value}
124
+ onClick={() => onClickItem(item)}
125
+ >
126
+ {item.label}
127
+ </button>
128
+ ))}
129
+ </div>
130
+ </div>
131
+ );
132
+ };
package/src/index.ts CHANGED
@@ -48,6 +48,8 @@ export { Group, CollapsibleGroup } from './SidePanel/Group';
48
48
  export { default as InlineInput } from './InlineInput/InlineInput';
49
49
  export { default as NumberInlineInput } from './InlineInput/NumberInlineInput';
50
50
  export { default as NumberInputSliderWithUnit } from './NumberInputWithSlider/NumberInputSliderWithUnit';
51
+ export { default as NumberInputWithDropdown } from './InlineInput/NumberInputWithDropdown';
52
+ export type { NumberDropdownItem } from './InlineInput/NumberInputWithDropdown';
51
53
 
52
54
  export { default as Spinner } from './Spinner/Spinner';
53
55
 
@@ -21,7 +21,7 @@ const parsedPackageJson = () => {
21
21
  cache = parsed.data;
22
22
  } else {
23
23
  throw new Error(
24
- `The env variable PACKAGE_JSON_OF_APP must be defined during bundling (through the bundler settings) with a valid package.json but wasn't. Fix this. Error: ${parsed.error.details}`
24
+ `The env variable PACKAGE_JSON_OF_APP must be defined during bundling (through the bundler settings) with a valid package.json but wasn't. Fix this. Error: ${parsed.error.message}`
25
25
  );
26
26
  }
27
27
 
@@ -2,5 +2,6 @@ import { Dependency, SubDependency } from './sandboxTypes';
2
2
  export declare const describeVersion: (version?: SubDependency | string) => string;
3
3
  type KnownModule = 'nrfdl' | 'jprog' | 'JlinkARM';
4
4
  export declare const resolveModuleVersion: (module: KnownModule, versions?: Dependency[]) => Dependency | SubDependency | undefined;
5
+ export declare const versionToInstall: (module: string, version?: string) => string;
5
6
  export {};
6
7
  //# sourceMappingURL=moduleVersion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"moduleVersion.d.ts","sourceRoot":"","sources":["../../../nrfutil/moduleVersion.ts"],"names":[],"mappings":"AAMA,OAAO,EACH,UAAU,EAIV,aAAa,EAChB,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,eAAe,aAAc,aAAa,GAAG,MAAM,WAc/D,CAAC;AAEF,KAAK,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;AAsBlD,eAAO,MAAM,oBAAoB,WACrB,WAAW,aACT,UAAU,EAAE,KACvB,UAAU,GAAG,aAAa,GAAG,SAC0C,CAAC"}
1
+ {"version":3,"file":"moduleVersion.d.ts","sourceRoot":"","sources":["../../../nrfutil/moduleVersion.ts"],"names":[],"mappings":"AAOA,OAAO,EACH,UAAU,EAIV,aAAa,EAChB,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,eAAe,aAAc,aAAa,GAAG,MAAM,WAc/D,CAAC;AAEF,KAAK,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;AAsBlD,eAAO,MAAM,oBAAoB,WACrB,WAAW,aACT,UAAU,EAAE,KACvB,UAAU,GAAG,aAAa,GAAG,SAC0C,CAAC;AAoB3E,eAAO,MAAM,gBAAgB,WAAY,MAAM,YAAY,MAAM,WAI/B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../../nrfutil/sandbox.ts"],"names":[],"mappings":"AAcA,OAAO,EACH,cAAc,EACd,QAAQ,EACR,UAAU,EACV,aAAa,EAGb,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,OAAO,EACV,MAAM,gBAAgB,CAAC;AAcxB,QAAA,MAAM,UAAU,YAAa,MAAM,UAAU,MAAM,WAAW,MAAM;;;;;;;;;;;CAqBnE,CAAC;AAgDF,qBAAa,cAAc;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC,EAAE,CAAM;IAC1D,QAAQ,EAAE,QAAQ,CAAU;IAC5B,GAAG,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;gBAEvB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAQ5D,OAAO,CAAC,kBAAkB,CAOxB;IAEK,gBAAgB,+BAUrB;IAEK,kBAAkB,yBAmBvB;IAEK,cAAc,4BACO,QAAQ,SAAS,IAAI,KAAK,IAAI,gCAsBxD;IAEF,OAAO,CAAC,WAAW,CAqEjB;IAEK,cAAc,oBACR,MAAM,QACT,MAAM,EAAE,2BACU,QAAQ,SAAS,IAAI,KAAK,IAAI,0CAC5B,SAAS,KAAK,IAAI,0DACF,IAAI,4BACjC,eAAe;;;OAS1B;IAEN,OAAO,CAAC,WAAW,CAyEZ;IAEA,wBAAwB,oBAClB,MAAM,QACT,MAAM,EAAE;yBA2CO,MAAM,IAAI;;qCAKE,KAAK,KAAK,IAAI,qBA3Cf,KAAK,KAAK,IAAI;MAkDhD;IAEK,8BAA8B,eACxB,MAAM,2BACS,QAAQ,SAAS,IAAI,KAAK,IAAI,4BACzC,eAAe,SACtB,MAAM,EAAE,sCAahB;IAEK,kCAAkC,sBAC5B,MAAM,2BACS,QAAQ,SAAS,IAAI,KAAK,IAAI,4BACzC,eAAe,SACtB,MAAM,EAAE,4BAehB;IAEK,+BAA+B,sBACzB,MAAM,eACF,eAAe,SACtB,MAAM,EAAE,gBAehB;IAEK,SAAS,sBAAuB,UAAU,KAAK,IAAI,sBAzW5B,UAAU,KAAK,IAAI,IAiX/C;IAEK,WAAW,UAAW,QAAQ,UAEnC;CACL;kCAGY,MAAM,UACP,MAAM,YACJ,MAAM,2BACQ,QAAQ,SAAS,IAAI,KAAK,IAAI;AAJ1D,wBAyCE"}
1
+ {"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../../nrfutil/sandbox.ts"],"names":[],"mappings":"AAcA,OAAO,EACH,cAAc,EACd,QAAQ,EACR,UAAU,EACV,aAAa,EAGb,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,OAAO,EACV,MAAM,gBAAgB,CAAC;AAcxB,QAAA,MAAM,UAAU,YAAa,MAAM,UAAU,MAAM,WAAW,MAAM;;;;;;;;;;;CAqBnE,CAAC;AAgDF,qBAAa,cAAc;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC,EAAE,CAAM;IAC1D,QAAQ,EAAE,QAAQ,CAAU;IAC5B,GAAG,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;gBAEvB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAQ5D,OAAO,CAAC,kBAAkB,CAOxB;IAEK,gBAAgB,+BAUrB;IAEK,kBAAkB,yBAmBvB;IAEK,cAAc,4BACO,QAAQ,SAAS,IAAI,KAAK,IAAI,gCAsBxD;IAEF,OAAO,CAAC,WAAW,CAqEjB;IAEK,cAAc,oBACR,MAAM,QACT,MAAM,EAAE,2BACU,QAAQ,SAAS,IAAI,KAAK,IAAI,0CAC5B,SAAS,KAAK,IAAI,0DACF,IAAI,4BACjC,eAAe;;;OAS1B;IAEN,OAAO,CAAC,WAAW,CAyEZ;IAEA,wBAAwB,oBAClB,MAAM,QACT,MAAM,EAAE;yBA2CO,MAAM,IAAI;;qCAKE,KAAK,KAAK,IAAI,qBA3Cf,KAAK,KAAK,IAAI;MAkDhD;IAEK,8BAA8B,eACxB,MAAM,2BACS,QAAQ,SAAS,IAAI,KAAK,IAAI,4BACzC,eAAe,SACtB,MAAM,EAAE,sCAahB;IAEK,kCAAkC,sBAC5B,MAAM,2BACS,QAAQ,SAAS,IAAI,KAAK,IAAI,4BACzC,eAAe,SACtB,MAAM,EAAE,4BAehB;IAEK,+BAA+B,sBACzB,MAAM,eACF,eAAe,SACtB,MAAM,EAAE,gBAehB;IAEK,SAAS,sBAAuB,UAAU,KAAK,IAAI,sBAzW5B,UAAU,KAAK,IAAI,IAiX/C;IAEK,WAAW,UAAW,QAAQ,UAEnC;CACL;kCAGY,MAAM,UACP,MAAM,YACJ,MAAM,2BACQ,QAAQ,SAAS,IAAI,KAAK,IAAI;AAJ1D,wBAqBE"}
@@ -1 +1 @@
1
- {"version":3,"file":"deviceSetup.d.ts","sourceRoot":"","sources":["../../../../src/Device/deviceSetup.ts"],"names":[],"mappings":";AAOA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAO/C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,WAAW,QAAQ;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IACxB,uBAAuB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACrD,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK;QACpC,GAAG,EAAE,MAAM,CAAC;QACZ,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,CACX,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,KACvD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;KAC7C,EAAE,CAAC;IACJ,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,QAAQ,CAC5C,SAAS,EACT,OAAO,CAAC;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,OAAO,CAAC;KAC1B,CAAC,CACL,CAAC;IACF,4BAA4B,EAAE,CAC1B,MAAM,EAAE,MAAM,KACb,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,iBAAiB;IAC9B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,aAAa,WAEV,MAAM,qBACK,iBAAiB,sBAChB,MAAM,KAAK,IAAI,oBACjB,OAAO,KAAK,IAAI,+EAGnC,SAAS,SAAS,EAAE,QAAQ,IAAI,CAAC,CAuJnC,CAAC;AAEN,eAAO,MAAM,WAAW,WAER,MAAM,qBACK,iBAAiB,4BACV,MAAM,KAAK,IAAI,oBACvB,MAAM,IAAI,KAC7B,SAAS,SAAS,CA6BhB,CAAC"}
1
+ {"version":3,"file":"deviceSetup.d.ts","sourceRoot":"","sources":["../../../../src/Device/deviceSetup.ts"],"names":[],"mappings":";AAOA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAO/C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,WAAW,QAAQ;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IACxB,uBAAuB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACrD,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK;QACpC,GAAG,EAAE,MAAM,CAAC;QACZ,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,CACX,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,KACvD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;KAC7C,EAAE,CAAC;IACJ,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,QAAQ,CAC5C,SAAS,EACT,OAAO,CAAC;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,OAAO,CAAC;KAC1B,CAAC,CACL,CAAC;IACF,4BAA4B,EAAE,CAC1B,MAAM,EAAE,MAAM,KACb,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,iBAAiB;IAC9B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,aAAa,WAEV,MAAM,qBACK,iBAAiB,sBAChB,MAAM,KAAK,IAAI,oBACjB,OAAO,KAAK,IAAI,+EAGnC,SAAS,SAAS,EAAE,QAAQ,IAAI,CAAC,CAwJnC,CAAC;AAEN,eAAO,MAAM,WAAW,WAER,MAAM,qBACK,iBAAiB,4BACV,MAAM,KAAK,IAAI,oBACvB,MAAM,IAAI,KAC7B,SAAS,SAAS,CA6BhB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
- export interface DropdownItem {
2
+ export interface DropdownItem<T = string> {
3
3
  label: React.ReactNode;
4
- value: string;
4
+ value: T;
5
5
  }
6
6
  export interface DropdownProps {
7
7
  id?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Dropdown.d.ts","sourceRoot":"","sources":["../../../../src/Dropdown/Dropdown.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAOxC,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;mHAWE,aAAa;AAThB,wBAkFE"}
1
+ {"version":3,"file":"Dropdown.d.ts","sourceRoot":"","sources":["../../../../src/Dropdown/Dropdown.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAOxC,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,MAAM;IACpC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,CAAC,CAAC;CACZ;AAED,MAAM,WAAW,aAAa;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;mHAWE,aAAa;AAThB,wBAkFE"}
@@ -9,6 +9,9 @@ interface Props {
9
9
  onKeyboardIncrementAction?: () => string;
10
10
  onKeyboardDecrementAction?: () => string;
11
11
  className?: string;
12
+ textAlignLeft?: boolean;
13
+ onValidityChanged?: (validity: boolean) => void;
14
+ preventDefaultInvalidStyle?: boolean;
12
15
  }
13
16
  declare const InlineInput: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLInputElement>>;
14
17
  export default InlineInput;
@@ -1 +1 @@
1
- {"version":3,"file":"InlineInput.d.ts","sourceRoot":"","sources":["../../../../src/InlineInput/InlineInput.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAI3D,OAAO,qBAAqB,CAAC;AAwC7B,UAAU,KAAK;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,yBAAyB,CAAC,EAAE,MAAM,MAAM,CAAC;IACzC,yBAAyB,CAAC,EAAE,MAAM,MAAM,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,QAAA,MAAM,WAAW,gFA0GhB,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"InlineInput.d.ts","sourceRoot":"","sources":["../../../../src/InlineInput/InlineInput.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAI3D,OAAO,qBAAqB,CAAC;AAwC7B,UAAU,KAAK;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,yBAAyB,CAAC,EAAE,MAAM,MAAM,CAAC;IACzC,yBAAyB,CAAC,EAAE,MAAM,MAAM,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACxC;AAED,QAAA,MAAM,WAAW,gFA6HhB,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -1,13 +1,17 @@
1
- import { FC } from 'react';
1
+ /// <reference types="react" />
2
2
  import { RangeOrValues } from '../Slider/range';
3
3
  import './number-inline-input.scss';
4
- export interface Props {
4
+ export interface NumberInlineInput {
5
5
  disabled?: boolean;
6
6
  value: number;
7
7
  range: RangeOrValues;
8
+ className?: string;
8
9
  onChange: (value: number) => void;
9
10
  onChangeComplete?: (value: number) => void;
11
+ textAlignLeft?: boolean;
12
+ onValidityChanged?: (validity: boolean) => void;
13
+ preventDefaultInvalidStyle?: boolean;
10
14
  }
11
- declare const NumberInlineInput: FC<Props>;
12
- export default NumberInlineInput;
15
+ declare const _default: ({ disabled, value, range, className, onChange, onChangeComplete, textAlignLeft, onValidityChanged, preventDefaultInvalidStyle, }: NumberInlineInput) => JSX.Element;
16
+ export default _default;
13
17
  //# sourceMappingURL=NumberInlineInput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NumberInlineInput.d.ts","sourceRoot":"","sources":["../../../../src/InlineInput/NumberInlineInput.tsx"],"names":[],"mappings":"AAMA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAGlC,OAAO,EAIH,aAAa,EAGhB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,4BAA4B,CAAC;AAEpC,MAAM,WAAW,KAAK;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAoDD,QAAA,MAAM,iBAAiB,EAAE,EAAE,CAAC,KAAK,CAyBhC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"NumberInlineInput.d.ts","sourceRoot":"","sources":["../../../../src/InlineInput/NumberInlineInput.tsx"],"names":[],"mappings":";AASA,OAAO,EAIH,aAAa,EAGhB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,4BAA4B,CAAC;AAEpC,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACxC;2JA8DE,iBAAiB;AAVpB,wBAuCE"}
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import { DropdownItem } from '../Dropdown/Dropdown';
3
+ import { RangeOrValues } from '../Slider/range';
4
+ export type NumberDropdownItem = DropdownItem<number>;
5
+ interface DropdownProps {
6
+ id?: string;
7
+ label?: React.ReactNode;
8
+ items: NumberDropdownItem[];
9
+ value: number;
10
+ onChange: (value: number) => void;
11
+ range: RangeOrValues;
12
+ numItemsBeforeScroll?: number;
13
+ className?: string;
14
+ disabled?: boolean;
15
+ title?: string;
16
+ }
17
+ declare const _default: ({ id, label, items, value, onChange, range, numItemsBeforeScroll, className, disabled, title, }: DropdownProps) => JSX.Element;
18
+ export default _default;
19
+ //# sourceMappingURL=NumberInputWithDropdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberInputWithDropdown.d.ts","sourceRoot":"","sources":["../../../../src/InlineInput/NumberInputWithDropdown.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAMhD,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AAEtD,UAAU,aAAa;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,KAAK,EAAE,aAAa,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;0HAaE,aAAa;AAXhB,wBAoGE"}
@@ -36,6 +36,8 @@ export { Group, CollapsibleGroup } from './SidePanel/Group';
36
36
  export { default as InlineInput } from './InlineInput/InlineInput';
37
37
  export { default as NumberInlineInput } from './InlineInput/NumberInlineInput';
38
38
  export { default as NumberInputSliderWithUnit } from './NumberInputWithSlider/NumberInputSliderWithUnit';
39
+ export { default as NumberInputWithDropdown } from './InlineInput/NumberInputWithDropdown';
40
+ export type { NumberDropdownItem } from './InlineInput/NumberInputWithDropdown';
39
41
  export { default as Spinner } from './Spinner/Spinner';
40
42
  export { default as MasonryLayout } from './MasonryLayout/MasonryLayout';
41
43
  export { default as sendFeedback } from './Feedback/sendFeedback';