@babylonjs/shared-ui-components 7.31.1 → 7.32.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.
@@ -20,6 +20,7 @@ interface ISliderLineComponentProps {
|
|
20
20
|
iconLabel?: string;
|
21
21
|
lockObject: LockObject;
|
22
22
|
unit?: React.ReactNode;
|
23
|
+
allowOverflow?: boolean;
|
23
24
|
}
|
24
25
|
export declare class SliderLineComponent extends React.Component<ISliderLineComponentProps, {
|
25
26
|
value: number;
|
@@ -98,13 +98,13 @@ export class SliderLineComponent extends React.Component {
|
|
98
98
|
}
|
99
99
|
}
|
100
100
|
render() {
|
101
|
-
return (_jsxs("div", { className: "sliderLine", children: [this.props.icon && _jsx("img", { src: this.props.icon, title: this.props.iconLabel, alt: this.props.iconLabel, className: "icon" }), (!this.props.icon || this.props.label != "") && (_jsx("div", { className: this.props.margin ? "label withMargins" : "label", title: this.props.label, children: this.props.label })), _jsx(FloatLineComponent, { lockObject: this.props.lockObject, isInteger: this.props.decimalCount === 0, smallUI: true, label: "", target: this.state, digits: this.props.decimalCount === undefined ? 4 : this.props.decimalCount, propertyName: "value", min: this.props.minimum, max: this.props.maximum, onEnter: () => {
|
101
|
+
return (_jsxs("div", { className: "sliderLine", children: [this.props.icon && _jsx("img", { src: this.props.icon, title: this.props.iconLabel, alt: this.props.iconLabel, className: "icon" }), (!this.props.icon || this.props.label != "") && (_jsx("div", { className: this.props.margin ? "label withMargins" : "label", title: this.props.label, children: this.props.label })), _jsx(FloatLineComponent, { lockObject: this.props.lockObject, isInteger: this.props.decimalCount === 0, smallUI: true, label: "", target: this.state, digits: this.props.decimalCount === undefined ? 4 : this.props.decimalCount, propertyName: "value", min: this.props.allowOverflow ? undefined : this.props.minimum, max: this.props.allowOverflow ? undefined : this.props.maximum, onEnter: () => {
|
102
102
|
const changed = this.prepareDataToRead(this.state.value);
|
103
103
|
this.onChange(changed);
|
104
104
|
}, onChange: () => {
|
105
105
|
const changed = this.prepareDataToRead(this.state.value);
|
106
106
|
this.onChange(changed);
|
107
|
-
}, onPropertyChangedObservable: this.props.onPropertyChangedObservable, unit: this.props.unit }), _jsx("div", { className: "slider", children: _jsx("input", { className: "range", type: "range", step: this.props.step, min: this.prepareDataToRead(this.props.minimum), max: this.prepareDataToRead(this.props.maximum), value: this.prepareDataToRead(this.state.value), onInput: (evt) => this.onInput(evt.target.value), onChange: (evt) => this.onChange(evt.target.value) }) }), _jsx("div", { className: "copy hoverIcon", onClick: () => this.onCopyClick(), title: "Copy to clipboard", children: _jsx("img", { src: copyIcon, alt: "Copy" }) })] }));
|
107
|
+
}, onPropertyChangedObservable: this.props.onPropertyChangedObservable, unit: this.props.unit }), _jsx("div", { className: "slider", children: _jsx("input", { className: "range" + (this.props.allowOverflow && (this.state.value > this.props.maximum || this.state.value < this.props.minimum) ? " overflow" : ""), type: "range", step: this.props.step, min: this.prepareDataToRead(this.props.minimum), max: this.prepareDataToRead(this.props.maximum), value: this.prepareDataToRead(this.state.value), onInput: (evt) => this.onInput(evt.target.value), onChange: (evt) => this.onChange(evt.target.value) }) }), _jsx("div", { className: "copy hoverIcon", onClick: () => this.onCopyClick(), title: "Copy to clipboard", children: _jsx("img", { src: copyIcon, alt: "Copy" }) })] }));
|
108
108
|
}
|
109
109
|
}
|
110
110
|
//# sourceMappingURL=sliderLineComponent.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sliderLineComponent.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/lines/sliderLineComponent.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\r\nimport type { Observable } from \"core/Misc/observable\";\r\nimport type { PropertyChangedEvent } from \"../propertyChangedEvent\";\r\nimport { copyCommandToClipboard, getClassNameWithNamespace } from \"../copyCommandToClipboard\";\r\nimport { Tools } from \"core/Misc/tools\";\r\nimport { FloatLineComponent } from \"./floatLineComponent\";\r\nimport type { LockObject } from \"../tabs/propertyGrids/lockObject\";\r\nimport copyIcon from \"../imgs/copy.svg\";\r\n\r\ninterface ISliderLineComponentProps {\r\n label: string;\r\n target?: any;\r\n propertyName?: string;\r\n minimum: number;\r\n maximum: number;\r\n step: number;\r\n directValue?: number;\r\n useEuler?: boolean;\r\n onChange?: (value: number) => void;\r\n onInput?: (value: number) => void;\r\n onPropertyChangedObservable?: Observable<PropertyChangedEvent>;\r\n decimalCount?: number;\r\n margin?: boolean;\r\n icon?: string;\r\n iconLabel?: string;\r\n lockObject: LockObject;\r\n unit?: React.ReactNode;\r\n}\r\n\r\nexport class SliderLineComponent extends React.Component<ISliderLineComponentProps, { value: number }> {\r\n private _localChange = false;\r\n constructor(props: ISliderLineComponentProps) {\r\n super(props);\r\n\r\n if (this.props.directValue !== undefined) {\r\n this.state = {\r\n value: this.props.directValue,\r\n };\r\n } else {\r\n let value = this.props.target![this.props.propertyName!];\r\n\r\n if (value === undefined) {\r\n value = this.props.maximum;\r\n }\r\n this.state = { value: value };\r\n }\r\n }\r\n\r\n override shouldComponentUpdate(nextProps: ISliderLineComponentProps, nextState: { value: number }) {\r\n if (nextProps.directValue !== undefined) {\r\n nextState.value = nextProps.directValue;\r\n return true;\r\n }\r\n\r\n if (nextProps.label !== this.props.label) {\r\n return true;\r\n }\r\n\r\n let currentState = nextProps.target![nextProps.propertyName!];\r\n if (currentState === undefined) {\r\n currentState = nextProps.maximum;\r\n }\r\n\r\n if (currentState !== nextState.value || this._localChange || nextProps.maximum !== this.props.maximum || nextProps.minimum !== this.props.minimum) {\r\n nextState.value = currentState;\r\n this._localChange = false;\r\n return true;\r\n }\r\n\r\n if (nextProps.unit !== this.props.unit) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n onChange(newValueString: any) {\r\n if (newValueString === \"—\") return;\r\n this._localChange = true;\r\n let newValue = parseFloat(newValueString);\r\n\r\n if (this.props.useEuler) {\r\n newValue = Tools.ToRadians(newValue);\r\n }\r\n\r\n if (this.props.target) {\r\n if (this.props.onPropertyChangedObservable) {\r\n this.props.onPropertyChangedObservable.notifyObservers({\r\n object: this.props.target,\r\n property: this.props.propertyName!,\r\n value: newValue,\r\n initialValue: this.state.value,\r\n });\r\n }\r\n\r\n this.props.target[this.props.propertyName!] = newValue;\r\n }\r\n\r\n if (this.props.onChange) {\r\n this.props.onChange(newValue);\r\n }\r\n\r\n this.setState({ value: newValue });\r\n }\r\n\r\n onInput(newValueString: any) {\r\n const newValue = parseFloat(newValueString);\r\n if (this.props.onInput) {\r\n this.props.onInput(newValue);\r\n }\r\n }\r\n\r\n prepareDataToRead(value: number) {\r\n if (value === null) {\r\n value = 0;\r\n }\r\n\r\n if (this.props.useEuler) {\r\n return Tools.ToDegrees(value);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n // Copy to clipboard the code this slider actually does\r\n // Example : ImageProcessingConfiguration.contrast = 1;\r\n onCopyClick() {\r\n if (this.props && this.props.target) {\r\n const { className, babylonNamespace } = getClassNameWithNamespace(this.props.target);\r\n const targetName = \"globalThis.debugNode\";\r\n const targetProperty = this.props.propertyName;\r\n const value = this.props.target[this.props.propertyName!];\r\n const strCommand = targetName + \".\" + targetProperty + \" = \" + value + \";// (debugNode as \" + babylonNamespace + className + \")\";\r\n copyCommandToClipboard(strCommand);\r\n } else {\r\n copyCommandToClipboard(\"undefined\");\r\n }\r\n }\r\n\r\n override render() {\r\n return (\r\n <div className=\"sliderLine\">\r\n {this.props.icon && <img src={this.props.icon} title={this.props.iconLabel} alt={this.props.iconLabel} className=\"icon\" />}\r\n {(!this.props.icon || this.props.label != \"\") && (\r\n <div className={this.props.margin ? \"label withMargins\" : \"label\"} title={this.props.label}>\r\n {this.props.label}\r\n </div>\r\n )}\r\n <FloatLineComponent\r\n lockObject={this.props.lockObject}\r\n isInteger={this.props.decimalCount === 0}\r\n smallUI={true}\r\n label=\"\"\r\n target={this.state}\r\n digits={this.props.decimalCount === undefined ? 4 : this.props.decimalCount}\r\n propertyName=\"value\"\r\n min={this.props.minimum}\r\n max={this.props.maximum}\r\n onEnter={() => {\r\n const changed = this.prepareDataToRead(this.state.value);\r\n this.onChange(changed);\r\n }}\r\n onChange={() => {\r\n const changed = this.prepareDataToRead(this.state.value);\r\n this.onChange(changed);\r\n }}\r\n onPropertyChangedObservable={this.props.onPropertyChangedObservable}\r\n unit={this.props.unit}\r\n />\r\n <div className=\"slider\">\r\n <input\r\n className=\"range\"\r\n type=\"range\"\r\n step={this.props.step}\r\n min={this.prepareDataToRead(this.props.minimum)}\r\n max={this.prepareDataToRead(this.props.maximum)}\r\n value={this.prepareDataToRead(this.state.value)}\r\n onInput={(evt) => this.onInput((evt.target as HTMLInputElement).value)}\r\n onChange={(evt) => this.onChange(evt.target.value)}\r\n />\r\n </div>\r\n <div className=\"copy hoverIcon\" onClick={() => this.onCopyClick()} title=\"Copy to clipboard\">\r\n <img src={copyIcon} alt=\"Copy\" />\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
|
1
|
+
{"version":3,"file":"sliderLineComponent.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/lines/sliderLineComponent.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\r\nimport type { Observable } from \"core/Misc/observable\";\r\nimport type { PropertyChangedEvent } from \"../propertyChangedEvent\";\r\nimport { copyCommandToClipboard, getClassNameWithNamespace } from \"../copyCommandToClipboard\";\r\nimport { Tools } from \"core/Misc/tools\";\r\nimport { FloatLineComponent } from \"./floatLineComponent\";\r\nimport type { LockObject } from \"../tabs/propertyGrids/lockObject\";\r\nimport copyIcon from \"../imgs/copy.svg\";\r\n\r\ninterface ISliderLineComponentProps {\r\n label: string;\r\n target?: any;\r\n propertyName?: string;\r\n minimum: number;\r\n maximum: number;\r\n step: number;\r\n directValue?: number;\r\n useEuler?: boolean;\r\n onChange?: (value: number) => void;\r\n onInput?: (value: number) => void;\r\n onPropertyChangedObservable?: Observable<PropertyChangedEvent>;\r\n decimalCount?: number;\r\n margin?: boolean;\r\n icon?: string;\r\n iconLabel?: string;\r\n lockObject: LockObject;\r\n unit?: React.ReactNode;\r\n allowOverflow?: boolean;\r\n}\r\n\r\nexport class SliderLineComponent extends React.Component<ISliderLineComponentProps, { value: number }> {\r\n private _localChange = false;\r\n constructor(props: ISliderLineComponentProps) {\r\n super(props);\r\n\r\n if (this.props.directValue !== undefined) {\r\n this.state = {\r\n value: this.props.directValue,\r\n };\r\n } else {\r\n let value = this.props.target![this.props.propertyName!];\r\n\r\n if (value === undefined) {\r\n value = this.props.maximum;\r\n }\r\n this.state = { value: value };\r\n }\r\n }\r\n\r\n override shouldComponentUpdate(nextProps: ISliderLineComponentProps, nextState: { value: number }) {\r\n if (nextProps.directValue !== undefined) {\r\n nextState.value = nextProps.directValue;\r\n return true;\r\n }\r\n\r\n if (nextProps.label !== this.props.label) {\r\n return true;\r\n }\r\n\r\n let currentState = nextProps.target![nextProps.propertyName!];\r\n if (currentState === undefined) {\r\n currentState = nextProps.maximum;\r\n }\r\n\r\n if (currentState !== nextState.value || this._localChange || nextProps.maximum !== this.props.maximum || nextProps.minimum !== this.props.minimum) {\r\n nextState.value = currentState;\r\n this._localChange = false;\r\n return true;\r\n }\r\n\r\n if (nextProps.unit !== this.props.unit) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n onChange(newValueString: any) {\r\n if (newValueString === \"—\") return;\r\n this._localChange = true;\r\n let newValue = parseFloat(newValueString);\r\n\r\n if (this.props.useEuler) {\r\n newValue = Tools.ToRadians(newValue);\r\n }\r\n\r\n if (this.props.target) {\r\n if (this.props.onPropertyChangedObservable) {\r\n this.props.onPropertyChangedObservable.notifyObservers({\r\n object: this.props.target,\r\n property: this.props.propertyName!,\r\n value: newValue,\r\n initialValue: this.state.value,\r\n });\r\n }\r\n\r\n this.props.target[this.props.propertyName!] = newValue;\r\n }\r\n\r\n if (this.props.onChange) {\r\n this.props.onChange(newValue);\r\n }\r\n\r\n this.setState({ value: newValue });\r\n }\r\n\r\n onInput(newValueString: any) {\r\n const newValue = parseFloat(newValueString);\r\n if (this.props.onInput) {\r\n this.props.onInput(newValue);\r\n }\r\n }\r\n\r\n prepareDataToRead(value: number) {\r\n if (value === null) {\r\n value = 0;\r\n }\r\n\r\n if (this.props.useEuler) {\r\n return Tools.ToDegrees(value);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n // Copy to clipboard the code this slider actually does\r\n // Example : ImageProcessingConfiguration.contrast = 1;\r\n onCopyClick() {\r\n if (this.props && this.props.target) {\r\n const { className, babylonNamespace } = getClassNameWithNamespace(this.props.target);\r\n const targetName = \"globalThis.debugNode\";\r\n const targetProperty = this.props.propertyName;\r\n const value = this.props.target[this.props.propertyName!];\r\n const strCommand = targetName + \".\" + targetProperty + \" = \" + value + \";// (debugNode as \" + babylonNamespace + className + \")\";\r\n copyCommandToClipboard(strCommand);\r\n } else {\r\n copyCommandToClipboard(\"undefined\");\r\n }\r\n }\r\n\r\n override render() {\r\n return (\r\n <div className=\"sliderLine\">\r\n {this.props.icon && <img src={this.props.icon} title={this.props.iconLabel} alt={this.props.iconLabel} className=\"icon\" />}\r\n {(!this.props.icon || this.props.label != \"\") && (\r\n <div className={this.props.margin ? \"label withMargins\" : \"label\"} title={this.props.label}>\r\n {this.props.label}\r\n </div>\r\n )}\r\n <FloatLineComponent\r\n lockObject={this.props.lockObject}\r\n isInteger={this.props.decimalCount === 0}\r\n smallUI={true}\r\n label=\"\"\r\n target={this.state}\r\n digits={this.props.decimalCount === undefined ? 4 : this.props.decimalCount}\r\n propertyName=\"value\"\r\n min={this.props.allowOverflow ? undefined : this.props.minimum}\r\n max={this.props.allowOverflow ? undefined : this.props.maximum}\r\n onEnter={() => {\r\n const changed = this.prepareDataToRead(this.state.value);\r\n this.onChange(changed);\r\n }}\r\n onChange={() => {\r\n const changed = this.prepareDataToRead(this.state.value);\r\n this.onChange(changed);\r\n }}\r\n onPropertyChangedObservable={this.props.onPropertyChangedObservable}\r\n unit={this.props.unit}\r\n />\r\n <div className=\"slider\">\r\n <input\r\n className={\"range\" + (this.props.allowOverflow && (this.state.value > this.props.maximum || this.state.value < this.props.minimum) ? \" overflow\" : \"\")}\r\n type=\"range\"\r\n step={this.props.step}\r\n min={this.prepareDataToRead(this.props.minimum)}\r\n max={this.prepareDataToRead(this.props.maximum)}\r\n value={this.prepareDataToRead(this.state.value)}\r\n onInput={(evt) => this.onInput((evt.target as HTMLInputElement).value)}\r\n onChange={(evt) => this.onChange(evt.target.value)}\r\n />\r\n </div>\r\n <div className=\"copy hoverIcon\" onClick={() => this.onCopyClick()} title=\"Copy to clipboard\">\r\n <img src={copyIcon} alt=\"Copy\" />\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
|