# AUTO GENERATED FILE - DO NOT EDIT

from dash.development.base_component import Component, _explicitize_args


class CrystalToolkitScene(Component):
    """A CrystalToolkitScene component.


Keyword arguments:

- id (optional):
    The ID used to identify this component in Dash callbacks.

- animation (optional):
    Animation type.

- axisView (optional):
    Where is the axis displayed ( 'NW' / 'NE' / 'SE' / 'SW' / 'HIDDEN'
    ).

- currentCameraState (optional):
    THIS PROP IS SET AUTOMATICALLY Object that maintains the current
    state of the camera. e.g. {   position: {x: 0, y: 0, z: 0},
    quarternion: {x: 0, y: 0, z: 0, w: 0},   zoom: 1,
    setByComponentId: \"1\",   following: True }.

- customCameraState (optional):
    Object for setting the scene to a custom camera state. When
    modified, the camera will update to new custom state. e.g. {
    position: {x: 0, y: 0, z: 0},   quarternion: {x: 0, y: 0, z: 0, w:
    0}, (optional)   zoom: 1 (optional) }.

- data (optional):
    Simple3DScene JSON, the easiest way to generate this is to use the
    Scene class in crystal_toolkit.core.scene and its to_json method.

- debug (optional):
    Display a debug view.

- imageData (optional):
    THIS PROP IS SET AUTOMATICALLY Data string for the image generated
    by imageRequest This string can be downloaded as the filetype
    specified in your imageRequest object.

- imageDataTimestamp (optional):
    THIS PROP IS SET AUTOMATICALLY Date string that represents the
    time imageData was set. This is to prevent race conditions between
    imageRequest and imageData when being used in dash callbacks.

- imageRequest (optional):
    Set to trigger a screenshot or scene download. Must be an object
    with the following structure: {    \"filetype\": \"png\" // the
    image format (\"png\", \"dae\") } Passing this prop as an object
    ensures that new requests are triggered any time the prop is set.

- inletPadding (optional):
    Padding of the axis view.

- inletSize (optional):
    Size of the axis view.

- sceneSize (optional):
    Width / Height of the displayed component.

- selectedObject (optional):
    This points to the last clicked objects. Use it in your dash
    callback to know which objects are currently selected in the
    scene.

- setProps (optional):
    Dash-assigned callback that should be called whenever any of the
    properties change.

- settings (optional):
    Options used for generating scene. Supported options and their
    defaults are given as follows: {    antialias: True, // set to
    False to improve performance    renderer: 'webgl', // 'svg' also
    an option, used for unit testing    transparentBackground: False,
    // transparent background    background: '#ffffff', // background
    color if not transparent,    sphereSegments: 32, // decrease to
    improve performance    cylinderSegments: 16, // decrease to
    improve performance    staticScene: True, // disable if animation
    required    defaultZoom: 1, // 1 will zoom to fit object exactly,
    <1 will add padding between object and box bounds    zoomToFit2D:
    False // if True, will zoom to fit object only along the X and Y
    axes (not Z)    extractAxis: False // will remove the axis from
    the main scene    isMultiSelectionEnabled: False // allow to use
    shift to select,    secondaryObjectView: True // show the selected
    object in a detail view    animation: 'play' | 'slider' | 'none'
    // choose which style of animation is use } There are several
    additional options used for debugging and testing, please consult
    the source code directly for these.

- toggleVisibility (optional):
    Hide/show nodes in scene by its name (key), value is 1 to show the
    node and 0 to hide it."""
    @_explicitize_args
    def __init__(self, id=Component.UNDEFINED, data=Component.UNDEFINED, settings=Component.UNDEFINED, toggleVisibility=Component.UNDEFINED, imageRequest=Component.UNDEFINED, imageData=Component.UNDEFINED, imageDataTimestamp=Component.UNDEFINED, selectedObject=Component.UNDEFINED, sceneSize=Component.UNDEFINED, axisView=Component.UNDEFINED, inletSize=Component.UNDEFINED, inletPadding=Component.UNDEFINED, debug=Component.UNDEFINED, animation=Component.UNDEFINED, currentCameraState=Component.UNDEFINED, customCameraState=Component.UNDEFINED, **kwargs):
        self._prop_names = ['id', 'animation', 'axisView', 'currentCameraState', 'customCameraState', 'data', 'debug', 'imageData', 'imageDataTimestamp', 'imageRequest', 'inletPadding', 'inletSize', 'sceneSize', 'selectedObject', 'setProps', 'settings', 'toggleVisibility']
        self._type = 'CrystalToolkitScene'
        self._namespace = 'dash_mp_components'
        self._valid_wildcard_attributes =            []
        self.available_properties = ['id', 'animation', 'axisView', 'currentCameraState', 'customCameraState', 'data', 'debug', 'imageData', 'imageDataTimestamp', 'imageRequest', 'inletPadding', 'inletSize', 'sceneSize', 'selectedObject', 'setProps', 'settings', 'toggleVisibility']
        self.available_wildcard_properties =            []
        _explicit_args = kwargs.pop('_explicit_args')
        _locals = locals()
        _locals.update(kwargs)  # For wildcard attrs
        args = {k: _locals[k] for k in _explicit_args if k != 'children'}
        for k in []:
            if k not in args:
                raise TypeError(
                    'Required argument `' + k + '` was not specified.')
        super(CrystalToolkitScene, self).__init__(**args)
