\n {props.children}\n \n );\n}","export default function Loader (props) {\n return
;\n}\n","export const EditorContext = React.createContext();\n\n\nexport function capitalize(string) {\n if (!string)\n return '';\n \n return string.charAt(0).toUpperCase() + string.substr(1).toLowerCase();\n}\n\n\nexport function getVerboseName(name) {\n if (name === undefined || name === null)\n return '';\n\n name = name.replace(/_/g, ' ');\n return capitalize(name);\n}\n\n\nexport function getCsrfCookie() {\n if ((document.cookie.split(';').filter((item) => item.trim().indexOf('csrftoken=') === 0)).length) {\n return document.cookie.split(';').filter((item) => item.trim().indexOf('csrftoken=') === 0)[0].split('=')[1];\n }\n return null;\n}\n","import Button from './buttons';\nimport Loader from './loaders';\nimport {EditorContext, getCsrfCookie} from '../util';\n\n\nexport function FormInput({label, help_text, error, inputRef, ...props}) {\n\n if (props.type === 'string')\n props.type = 'text'\n\n if (inputRef)\n props.ref = inputRef;\n\n return (\n \n {label && {label} }\n \n
\n );\n}\n\n\nexport function FormCheckInput({label, help_text, error, value, ...props}) {\n\n if (!label)\n label = props.name.toUpperCase();\n\n if (props.type === 'bool')\n props.type = 'checkbox';\n\n if (props.checked === undefined)\n props.checked = value;\n\n if (props.checked === '')\n props.checked = false\n\n return (\n \n {label} \n
\n );\n}\n\n\nexport function FormRadioInput({label, help_text, error, value, options, ...props}) {\n return (\n \n {label} \n {options.map((option, i) => {\n let label, inputValue;\n if (typeof option === 'object') {\n label = option.label;\n inputValue = option.value;\n } else {\n label = option;\n inputValue = option;\n }\n\n return (\n \n {label}\n \n );\n })}\n
\n );\n}\n\n\nexport function FormSelectInput({label, help_text, error, value, options, ...props}) {\n return (\n \n {label && {label} }\n \n Select... \n {options.map((option, i) => {\n let label, inputValue;\n if (typeof option === 'object') {\n label = option.label;\n inputValue = option.value;\n } else {\n label = option;\n inputValue = option;\n }\n\n return (\n \n {label}\n \n );\n })}\n \n
\n );\n}\n\nexport function dataURItoBlob(dataURI) {\n // Split metadata from data\n const splitted = dataURI.split(\",\");\n // Split params\n const params = splitted[0].split(\";\");\n // Get mime-type from params\n const type = params[0].replace(\"data:\", \"\");\n // Filter the name property from params\n const properties = params.filter(param => {\n return param.split(\"=\")[0] === \"name\";\n });\n // Look for the name and use unknown if no name property.\n let name;\n if (properties.length !== 1) {\n name = \"unknown\";\n } else {\n // Because we filtered out the other property,\n // we only have the name case here.\n name = properties[0].split(\"=\")[1];\n }\n\n // Built the Uint8Array Blob parameter from the base64 string.\n const binary = atob(splitted[1]);\n const array = [];\n for (let i = 0; i < binary.length; i++) {\n array.push(binary.charCodeAt(i));\n }\n // Create the blob object\n const blob = new window.Blob([new Uint8Array(array)], { type });\n\n return {blob, name};\n}\n\n\n\nexport class FormFileInput extends React.Component {\n static contextType = EditorContext;\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: props.value,\n fileName: this.getFileName(),\n loading: false\n };\n\n this.inputRef = React.createRef();\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (this.props.value !== prevProps.value) {\n this.setState({\n value: this.props.value, \n fileName: this.getFileName()\n });\n }\n }\n\n getFileName = () => {\n if (!this.props.value)\n return '';\n\n if (this.props.type === 'data-url') {\n return this.extractFileInfo(this.props.value).name;\n } else if (this.props.type === 'file-url') {\n return this.props.value;\n } else {\n return 'Unknown file';\n }\n }\n\n extractFileInfo = (dataURL) => {\n const {blob, name} = dataURItoBlob(dataURL);\n return {\n name: name,\n size: blob.size,\n type: blob.type\n }\n }\n\n addNameToDataURL = (dataURL, name) => {\n return dataURL.replace(';base64', ';name=' + encodeURIComponent(name) + ';base64');\n }\n\n handleChange = (e) => {\n if (this.props.type === 'data-url') {\n let file = e.target.files[0];\n let fileName = file.name\n\n let reader = new FileReader();\n\n reader.onload = () => {\n\n // this.setState({src: reader.result});\n\n // we create a fake event object\n let event = {\n target: {\n type: 'text',\n value: this.addNameToDataURL(reader.result, fileName),\n name: this.props.name\n }\n };\n\n this.props.onChange(event);\n\n }\n reader.readAsDataURL(file);\n } else if (this.props.type === 'file-url') {\n let endpoint = this.context.fileUploadEndpoint;\n if (!endpoint) {\n console.error(\n \"Error: fileUploadEndpoint option need to be passed \"\n + \"while initializing editor for enabling file uploads.\");\n alert(\"Files can't be uploaded.\");\n return;\n }\n\n this.setState({loading: true});\n\n let formData = new FormData();\n formData.append('field_name', this.context.fieldName);\n formData.append('model_name', this.context.modelName);\n formData.append('coordinates', JSON.stringify(this.props.name.split('-').slice(1)));\n formData.append('file', e.target.files[0]);\n\n fetch(endpoint, {\n method: 'POST',\n headers: {\n 'X-CSRFToken': getCsrfCookie(),\n },\n body: formData\n })\n .then((response) => response.json())\n .then((result) => {\n // we create a fake event object\n let event = {\n target: {\n type: 'text',\n value: result.file_path,\n name: this.props.name\n }\n };\n\n this.props.onChange(event);\n this.setState({loading: false});\n })\n .catch((error) => {\n alert('Something went wrong while uploading file');\n console.error('Error:', error);\n this.setState({loading: false});\n });\n\n }\n\n }\n\n showFileBrowser = () => {\n this.inputRef.current.click();\n }\n\n render() {\n let {label, value, ...props} = {value, ...this.props};\n props.type = 'file';\n props.onChange = this.handleChange;\n\n return (\n \n {label &&
{label} }\n
\n {this.state.value && \n
Current file: {this.state.fileName}
\n }\n {this.state.value && !this.state.loading && 'Change:'}\n {this.state.loading ?\n
Uploading...
\n : \n
\n \n
\n }\n
\n
\n );\n }\n}\n","import Button from './buttons';\n\n\nexport function GroupTitle(props) {\n if (!props.children)\n return null;\n\n return (\n {props.children}
\n );\n}\n\n\nexport function FormRow(props) {\n return (\n \n {props.onRemove &&\n
props.onRemove(name)}\n title=\"Remove\"\n >\n ×\n \n }\n
\n {props.children}\n
\n
\n );\n}\n\n\nexport function FormGroup(props) {\n let hasChildren = React.Children.count(props.children);\n\n let innerClassName = props.level === 0 && !hasChildren\n ? \"\" \n : \"rjf-form-group-inner\";\n\n return (\n \n {props.level === 0 &&
{props.schema.title} }\n
\n {props.level > 0 && {props.schema.title} }\n {props.children}\n {props.addable && \n props.onAdd()}\n title=\"Add new\"\n >\n {hasChildren ? 'Add more' : 'Add'}\n \n }\n
\n
\n );\n}\n","import {getBlankData} from './data';\nimport {Button, FormInput, FormCheckInput, FormRadioInput, FormSelectInput,\n FormFileInput, FormRow, FormGroup} from './components';\nimport {getVerboseName} from './util';\n\n\nfunction handleChange(e, valueType, callback) {\n let type = e.target.type\n let value;\n\n if (type === 'checkbox') {\n value = e.target.checked;\n } else {\n value = e.target.value;\n }\n\n if (valueType === 'number') {\n value = value.trim();\n if (value !== '' && !isNaN(Number(value)))\n value = Number(value);\n }\n\n callback(e.target.name, value);\n}\n\n\nfunction FormField(props) {\n let inputProps = {\n name: props.name,\n value: props.data,\n };\n\n let type = props.schema.type;\n if (props.schema.choices) {\n inputProps.options = props.schema.choices;\n type = 'select';\n }\n if (props.schema.widget)\n type = props.schema.widget;\n\n let InputField;\n\n switch (type) {\n case 'string':\n InputField = FormInput;\n\n if (props.schema.format) {\n if (props.schema.format === 'data-url' || props.schema.format === 'file-url') {\n InputField = FormFileInput;\n }\n inputProps.type = props.schema.format;\n }\n else {\n inputProps.type = 'text';\n }\n break;\n case 'number':\n inputProps.type = 'number';\n InputField = FormInput;\n break;\n case 'integer':\n inputProps.type = 'number';\n InputField = FormInput;\n break;\n case 'boolean':\n inputProps.type = 'checkbox';\n InputField = FormCheckInput;\n break;\n case 'checkbox':\n inputProps.type = 'checkbox';\n InputField = FormCheckInput;\n break;\n case 'radio':\n inputProps.type = 'radio';\n InputField = FormRadioInput;\n break;\n case 'select':\n InputField = FormSelectInput;\n break;\n default:\n inputProps.type = 'text';\n InputField = FormInput;\n }\n\n return (\n {props.schema.title} Edit \n :\n props.schema.title\n }\n onChange={(e) => handleChange(e, props.schema.type, props.onChange)}\n />\n );\n}\n\n\nexport function getStringFormRow(data, schema, name, onChange, onRemove, removable, onEdit, editable) {\n\n return (\n onRemove(name) : null}\n >\n \n \n );\n}\n\nexport function getArrayFormRow(data, schema, name, onChange, onAdd, onRemove, level) {\n let rows = [];\n let groups = [];\n\n let removable = true;\n let min_items = schema.min_items || 0;\n if (data.length <= min_items)\n removable = false;\n\n let addable = true;\n let max_items = schema.max_items || 100;\n if (data.length >= max_items)\n addable = false;\n\n for (let i = 0; i < data.length; i++) {\n let item = data[i];\n let childName = name + '-' + i;\n\n if (schema.items.type === 'array') {\n groups.push(getArrayFormRow(item, schema.items, childName, onChange, onAdd, onRemove, level + 1));\n } else if (schema.items.type === 'object') {\n groups.push(getObjectFormRow(item, schema.items, childName, onChange, onAdd, onRemove, level + 1));\n } else {\n rows.push(getStringFormRow(item, schema.items, childName, onChange, onRemove, removable));\n } \n }\n\n let coords = name; // coordinates for insertion and deletion\n\n if (rows.length || (!rows.length && !groups.length)) {\n rows = (\n onAdd(getBlankData(schema.items), coords)}\n key={'row_group_' + name}\n >\n {rows}\n \n );\n }\n\n if (groups.length) {\n let groupTitle = schema.title ? {schema.title}
: null;\n\n groups = (\n \n {groupTitle}\n {groups.map((i, index) => (\n
\n {removable && \n onRemove(name + '-' + index)}\n title=\"Remove\"\n >\n ×\n \n }\n {i}\n
\n )\n )}\n {addable && \n
onAdd(getBlankData(schema.items), coords)}\n title=\"Add new\"\n >\n Add item\n \n }\n
\n )\n }\n\n return [...rows, ...groups];\n}\n\n\nexport function getObjectFormRow(data, schema, name, onChange, onAdd, onRemove, level) {\n let rows = [];\n\n let keys = [...Object.keys(schema.keys)];\n\n if (schema.additionalProperties)\n keys = [...keys, ...Object.keys(data).filter((k) => keys.indexOf(k) === -1)];\n\n for (let i = 0; i < keys.length; i++) {\n let key = keys[i];\n let value = data[key];\n let childName = name + '-' + key;\n let schemaValue = schema.keys[key] || {type: 'string'};\n\n if (!schemaValue.title)\n schemaValue.title = getVerboseName(key);\n\n let removable = false;\n if (schema.keys[key] === undefined)\n removable = true;\n\n if (schemaValue.type === 'array') {\n rows.push(getArrayFormRow(value, schemaValue, childName, onChange, onAdd, onRemove, level + 1));\n } else if (schemaValue.type === 'object') {\n rows.push(getObjectFormRow(value, schemaValue, childName, onChange, onAdd, onRemove, level + 1));\n } else {\n rows.push(getStringFormRow(\n value, schemaValue, childName, onChange, onRemove, removable, \n () => handleKeyEdit(data, key, value, childName, onAdd, onRemove),\n removable\n ));\n }\n }\n\n if (rows.length || schema.additionalProperties) {\n let className = \"rjf-form-group-inner\";\n if (level === 0 && !rows.length)\n className = \"\";\n \n let coords = name;\n\n rows = (\n handleKeyValueAdd(data, coords, onAdd)}\n key={'row_group_' + name}\n >\n {rows}\n \n );\n }\n\n return rows;\n}\n\n\nfunction handleKeyValueAdd(data, coords, onAdd) {\n let key = prompt(\"Add new key\");\n if (key === null) // clicked cancel\n return;\n\n key = key.trim();\n if (!key)\n alert(\"(!) Can't add empty key.\\r\\n\\r\\n\");\n else if (data.hasOwnProperty(key))\n alert(\"(!) Duplicate keys not allowed. This key already exists.\\r\\n\\r\\n\");\n else\n onAdd(\"\", coords + '-' + key); \n}\n\n\nfunction handleKeyEdit(data, key, value, coords, onAdd, onRemove) {\n let newKey = prompt(\"Rename key\", key);\n if (newKey === null) // clicked cancel\n return;\n\n newKey = newKey.trim();\n\n if (newKey === key) // same keys\n return;\n\n if (!newKey)\n return alert(\"(!) Key name can't be empty.\\r\\n\\r\\n\");\n else if (data.hasOwnProperty(newKey))\n return alert(\"(!) Duplicate keys not allowed. This key already exists.\\r\\n\\r\\n\");\n\n onAdd(value, name + '-' + newKey);\n onRemove(coords);\n}\n","import {getBlankData, getSyncedData} from './data';\nimport {getArrayFormRow, getObjectFormRow} from './ui';\nimport {EditorContext} from './util';\n\n\nexport default class Form extends React.Component {\n constructor(props) {\n super(props);\n\n this.dataInput = document.getElementById(this.props.dataInputId);\n this.schema = props.schema;\n\n let data = props.data;\n\n if (!data) {\n // create empty data from schema\n data = getBlankData(this.schema);\n } else {\n // data might be stale if schema has new keys, so add them to data\n try {\n data = getSyncedData(data, this.schema);\n } catch (error) {\n console.log(\"Error: Schema and data don't match\");\n console.log(error);\n }\n }\n\n this.state = {\n value: '',\n data: data\n };\n \n // update data in the input\n this.populateDataInput();\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (this.state.data !== prevState.data) {\n this.populateDataInput();\n }\n }\n\n populateDataInput = () => {\n this.dataInput.value = JSON.stringify(this.state.data);\n }\n\n handleChange = (coords, value) => {\n /*\n e.target.name is a chain of indices and keys:\n xxx-0-key-1-key2 and so on.\n These can be used as coordinates to locate \n a particular deeply nested item.\n\n This first coordinate is not important and should be removed.\n */\n coords = coords.split('-');\n\n coords.shift(); // remove first coord\n\n function setDataUsingCoords(coords, data, value) {\n let coord = coords.shift();\n if (!isNaN(Number(coord)))\n coord = Number(coord);\n\n if (coords.length) {\n setDataUsingCoords(coords, data[coord], value);\n } else {\n data[coord] = value;\n }\n }\n\n let _data = JSON.parse(JSON.stringify(this.state.data));\n\n setDataUsingCoords(coords, _data, value);\n\n this.setState({data: _data});\n }\n\n getFields = () => {\n let data = this.state.data;\n let formGroups = [];\n\n try {\n if (this.schema.type === 'array') {\n return getArrayFormRow(\n data, this.schema, 'rjf',\n this.handleChange, this.addFieldset, this.removeFieldset,\n 0\n );\n } else if (this.schema.type === 'object') {\n return getObjectFormRow(\n data, this.schema, 'rjf',\n this.handleChange, this.addFieldset, this.removeFieldset,\n 0\n );\n }\n } catch (error) {\n formGroups = (\n \n (!) Error: Schema and data do not match.\n
\n );\n }\n\n return formGroups;\n }\n\n addFieldset = (blankData, coords) => {\n coords = coords.split('-');\n coords.shift();\n\n this.setState((state) => {\n function addDataUsingCoords(coords, data, value) {\n let coord = coords.shift();\n if (!isNaN(Number(coord)))\n coord = Number(coord);\n\n if (coords.length) {\n addDataUsingCoords(coords, data[coord], value);\n } else {\n if (Array.isArray(data)) {\n data.push(value);\n }\n else {\n if (Array.isArray(data[coord])) {\n data[coord].push(value);\n } else {\n data[coord] = value;\n }\n }\n }\n }\n\n let _data = JSON.parse(JSON.stringify(state.data));\n\n addDataUsingCoords(coords, _data, blankData);\n\n return {data: _data};\n });\n }\n\n removeFieldset = (coords) => {\n coords = coords.split('-');\n coords.shift();\n\n this.setState((state) => {\n function removeDataUsingCoords(coords, data) {\n let coord = coords.shift();\n if (!isNaN(Number(coord)))\n coord = Number(coord);\n\n if (coords.length) {\n removeDataUsingCoords(coords, data[coord]);\n } else {\n if (Array.isArray(data))\n data = data.splice(coord, 1); // in-place mutation\n else\n delete data[coord];\n }\n }\n\n let _data = JSON.parse(JSON.stringify(state.data));\n\n removeDataUsingCoords(coords, _data);\n\n return {data: _data};\n });\n }\n\n render() {\n return (\n \n
\n \n {this.getFields()}\n \n \n \n );\n }\n}\n","import JSONForm from './renderer';\n\n\nexport default {\n JSONForm,\n};","import Form from './form';\n\n\nexport default function JSONForm(config) {\n this.containerId = config.containerId;\n this.dataInputId = config.dataInputId;\n this.schema = config.schema;\n this.data = config.data;\n this.fileUploadEndpoint = config.fileUploadEndpoint;\n this.fieldName = config.fieldName;\n this.modelName = config.modelName;\n\n this.render = function() {\n ReactDOM.render(\n ,\n document.getElementById(this.containerId)\n );\n }\n}"],"names":["getBlankObject","schema","keys","key","value","type","getBlankArray","items","push","getBlankData","getSyncedArray","data","newData","JSON","parse","stringify","i","length","item","getSyncedObject","Object","schemaValue","hasOwnProperty","Button","className","props","React","children","Loader","EditorContext","createContext","FormInput","label","inputRef","ref","FormCheckInput","name","toUpperCase","undefined","checked","FormRadioInput","options","map","option","inputValue","FormSelectInput","defaultValue","disabled","FormFileInput","_this","getFileName","extractFileInfo","dataURL","dataURI","splitted","split","params","replace","properties","filter","param","binary","atob","array","charCodeAt","blob","window","Blob","Uint8Array","dataURItoBlob","size","addNameToDataURL","encodeURIComponent","handleChange","e","file","target","files","fileName","reader","FileReader","onload","event","result","onChange","readAsDataURL","endpoint","context","fileUploadEndpoint","console","error","alert","setState","loading","formData","FormData","append","fieldName","modelName","slice","fetch","method","headers","document","cookie","trim","indexOf","body","then","response","json","file_path","showFileBrowser","current","click","state","createRef","componentDidUpdate","prevProps","prevState","this","render","Component","GroupTitle","FormRow","onRemove","onClick","title","FormGroup","hasChildren","Children","count","innerClassName","level","addable","onAdd","FormField","InputField","inputProps","choices","widget","format","editable","onEdit","valueType","callback","isNaN","Number","getStringFormRow","removable","getArrayFormRow","rows","groups","min_items","max_items","childName","getObjectFormRow","coords","index","additionalProperties","k","string","charAt","substr","toLowerCase","getVerboseName","handleKeyEdit","prompt","handleKeyValueAdd","newKey","contextType","Form","populateDataInput","dataInput","shift","_data","setDataUsingCoords","coord","getFields","formGroups","addFieldset","removeFieldset","style","color","blankData","addDataUsingCoords","Array","isArray","removeDataUsingCoords","splice","getElementById","dataInputId","log","Provider","JSONForm","config","containerId","ReactDOM"],"mappings":"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"}
\ No newline at end of file
diff --git a/django_jsonform/static/django_jsonform/style.css b/django_jsonform/static/django_jsonform/style.css
new file mode 100644
index 0000000..fdb27be
--- /dev/null
+++ b/django_jsonform/static/django_jsonform/style.css
@@ -0,0 +1,192 @@
+.rjf-add-button {
+ background: url(./img/icon-addlink.svg) 0 1px no-repeat;
+ padding-left: 16px;
+ font-size: 12px;
+ color: #447e9b;
+ cursor: pointer;
+ margin-top: 8px;
+ border: 0px none;
+}
+.rjf-add-button:hover {
+ color: #036;
+ background-color: #f0faff;
+}
+
+.rjf-form-group-wrapper {
+ position: relative;
+ width: 100%;
+ max-width: 39em;
+}
+.rjf-form-group {
+ margin-bottom: 15px;
+ position: relative;
+ width: 100%;
+ max-width: 39em;
+}
+.rjf-form-group-wrapper > .rjf-form-group {
+ max-width: 100%;
+}
+.rjf-form-group-inner {
+ box-sizing: border-box;
+ position: relative;
+ width: 100%;
+ margin-bottom: 10px;
+ border: 1px solid #e5e5e5;
+ border-radius: 4px;
+ padding: 10px;
+ box-shadow: 0 0 2px rgba(0,0,0,0.075);
+ transition: background-color 0.12s ease-in-out;
+}
+.rjf-form-row {
+ padding: 5px 0;
+ display: table;
+ width: 100%;
+ position: relative;
+}
+.rjf-form-row-inner {
+ transition: background-color 0.12s ease-in-out;
+ padding: 5px;
+}
+
+.rjf-form-row input {
+ width: 20em;
+}
+
+.rjf-form-row label + div {
+ margin-left: 170px;
+}
+
+.rjf-file-field {
+ color: #666;
+}
+
+.rjf-file-field .rjf-file-field-input {
+ display: inline-block;
+}
+.rjf-file-field .rjf-file-field-input input {
+ max-width: 18em;
+}
+
+.rjf-current-file-name {
+ color: #666;
+ max-width: 20em;
+ margin-bottom: 0.5em;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.rjf-current-file-name > span {
+ background-color: #eaf9ff;
+ color: #071d1f;
+ padding: 1px 4px;
+ border-radius: 3px;
+}
+
+.rjf-form-row label input[type="checkbox"] {
+ margin-top: 0;
+ vertical-align: 0;
+ display: inline-block;
+ width: auto;
+}
+
+.rjf-remove-button {
+ position: absolute;
+ top: 2px;
+ right: 5px;
+ text-indent: -9999px;
+ background: url(./img/icon-deletelink.svg) 0 1px no-repeat;
+ width: 3px;
+ height: 16px;
+ border: 0px none;
+ cursor: pointer;
+ z-index: 2;
+}
+.rjf-form-row > .rjf-remove-button {
+ top: 50%;
+ transform: translateY(-50%);
+}
+.rjf-remove-button:hover + .rjf-form-row-inner,
+.rjf-remove-button:hover + .rjf-form-group > .rjf-form-group-inner {
+ background-color: #fff3f3;
+}
+
+.rjf-edit-button {
+ text-indent: -9999px;
+ background: url(./img/icon-changelink.svg) 0 1px no-repeat;
+ width: 3px;
+ height: 16px;
+ border: 0px none;
+ cursor: pointer;
+}
+
+.rjf-file-field-loading {
+ margin-top: 0.6em;
+ vertical-align: middle;
+ display: inline-block;
+}
+.rjf-loader {
+ clear: both;
+ display: inline-block;
+ margin-right: 0.1em;
+ height: 0.9em;
+ width: 0.9em;
+ vertical-align: middle;;
+ border: 2px #a7e6f0 solid;
+ border-top-color: #2d6c8b;
+ border-radius: 50%;
+ -webkit-animation: loaderRotate .4s infinite linear;
+ animation: loaderRotate .4s infinite linear;
+}
+
+@-webkit-keyframes loaderRotate {
+ from {
+ -webkit-transform: rotate(0deg);
+ }
+ to {
+ -webkit-transform: rotate(359deg);
+ }
+}
+@keyframes loaderRotate {
+ from {
+ transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(359deg);
+ }
+}
+
+@media(max-width: 767px) {
+ .rjf-form-group {
+ width: calc(100vw - 30px);
+ max-width: 100%;
+ }
+
+ .rjf-form-row input {
+ width: 100%;
+ }
+
+ .rjf-form-row label input[type="checkbox"] {
+ width: auto;
+ }
+
+ .rjf-form-row > .rjf-remove-button {
+ top: 5px;
+ transform: none;
+ }
+
+ .rjf-form-row label + div {
+ margin-left: auto;
+ }
+
+ .rjf-current-file-name {
+ width: 100%;
+ max-width: 100%;
+ white-space: unset;
+ word-wrap: anywhere;
+ word-break: break-all;
+ }
+
+ .rjf-file-field-loading {
+ margin-top: 0;
+ }
+}
\ No newline at end of file
diff --git a/django_jsonform/static/django_jsonform/vendor/react-dom.production.min.js b/django_jsonform/static/django_jsonform/vendor/react-dom.production.min.js
new file mode 100644
index 0000000..e38d120
--- /dev/null
+++ b/django_jsonform/static/django_jsonform/vendor/react-dom.production.min.js
@@ -0,0 +1,245 @@
+/** @license React v17.0.2
+ * react-dom.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+(function(){/*
+ Modernizr 3.0.0pre (Custom Build) | MIT
+*/
+'use strict';(function(M,ha){"object"===typeof exports&&"undefined"!==typeof module?ha(exports,require("react")):"function"===typeof define&&define.amd?define(["exports","react"],ha):(M=M||self,ha(M.ReactDOM={},M.React))})(this,function(M,ha){function m(a){for(var b="https://reactjs.org/docs/error-decoder.html?invariant="+a,c=1;cb}return!1}function Q(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}function Ed(a,b,c,d){var e=I.hasOwnProperty(b)?I[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return"\n"+e[g].replace(" at new "," at ");while(1<=g&&0<=h)}break}}}finally{Gd=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:"")?Kb(a):""}function pi(a){switch(a.tag){case 5:return Kb(a.type);case 16:return Kb("Lazy");case 13:return Kb("Suspense");
+case 19:return Kb("SuspenseList");case 0:case 2:case 15:return a=Bc(a.type,!1),a;case 11:return a=Bc(a.type.render,!1),a;case 22:return a=Bc(a.type._render,!1),a;case 1:return a=Bc(a.type,!0),a;default:return""}}function hb(a){if(null==a)return null;if("function"===typeof a)return a.displayName||a.name||null;if("string"===typeof a)return a;switch(a){case wa:return"Fragment";case Ua:return"Portal";case Lb:return"Profiler";case Hd:return"StrictMode";case Mb:return"Suspense";case Cc:return"SuspenseList"}if("object"===
+typeof a)switch(a.$$typeof){case Id:return(a.displayName||"Context")+".Consumer";case Jd:return(a._context.displayName||"Context")+".Provider";case Dc:var b=a.render;b=b.displayName||b.name||"";return a.displayName||(""!==b?"ForwardRef("+b+")":"ForwardRef");case Ec:return hb(a.type);case Kd:return hb(a._render);case Ld:b=a._payload;a=a._init;try{return hb(a(b))}catch(c){}}return null}function xa(a){switch(typeof a){case "boolean":case "number":case "object":case "string":case "undefined":return a;
+default:return""}}function Ef(a){var b=a.type;return(a=a.nodeName)&&"input"===a.toLowerCase()&&("checkbox"===b||"radio"===b)}function qi(a){var b=Ef(a)?"checked":"value",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=""+a[b];if(!a.hasOwnProperty(b)&&"undefined"!==typeof c&&"function"===typeof c.get&&"function"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=""+a;f.call(this,a)}});Object.defineProperty(a,
+b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=""+a},stopTracking:function(){a._valueTracker=null;delete a[b]}}}}function Fc(a){a._valueTracker||(a._valueTracker=qi(a))}function Ff(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d="";a&&(d=Ef(a)?a.checked?"true":"false":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Gc(a){a=a||("undefined"!==typeof document?document:void 0);if("undefined"===typeof a)return null;try{return a.activeElement||
+a.body}catch(b){return a.body}}function Md(a,b){var c=b.checked;return B({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Gf(a,b){var c=null==b.defaultValue?"":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=xa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:"checkbox"===b.type||"radio"===b.type?null!=b.checked:null!=b.value}}function Hf(a,b){b=b.checked;null!=b&&Ed(a,"checked",
+b,!1)}function Nd(a,b){Hf(a,b);var c=xa(b.value),d=b.type;if(null!=c)if("number"===d){if(0===c&&""===a.value||a.value!=c)a.value=""+c}else a.value!==""+c&&(a.value=""+c);else if("submit"===d||"reset"===d){a.removeAttribute("value");return}b.hasOwnProperty("value")?Od(a,b.type,c):b.hasOwnProperty("defaultValue")&&Od(a,b.type,xa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}function If(a,b,c){if(b.hasOwnProperty("value")||b.hasOwnProperty("defaultValue")){var d=
+b.type;if(!("submit"!==d&&"reset"!==d||void 0!==b.value&&null!==b.value))return;b=""+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;""!==c&&(a.name="");a.defaultChecked=!!a._wrapperState.initialChecked;""!==c&&(a.name=c)}function Od(a,b,c){if("number"!==b||Gc(a.ownerDocument)!==a)null==c?a.defaultValue=""+a._wrapperState.initialValue:a.defaultValue!==""+c&&(a.defaultValue=""+c)}function ri(a){var b="";ha.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}
+function Pd(a,b){a=B({children:void 0},b);if(b=ri(b.children))a.children=b;return a}function ib(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(m(93));c=c[0]}b=c}null==b&&(b="");c=b}a._wrapperState={initialValue:xa(c)}}function Kf(a,b){var c=xa(b.value),d=xa(b.defaultValue);null!=c&&(c=""+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==
+c&&(a.defaultValue=c));null!=d&&(a.defaultValue=""+d)}function Lf(a,b){b=a.textContent;b===a._wrapperState.initialValue&&""!==b&&null!==b&&(a.value=b)}function Mf(a){switch(a){case "svg":return"http://www.w3.org/2000/svg";case "math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Rd(a,b){return null==a||"http://www.w3.org/1999/xhtml"===a?Mf(b):"http://www.w3.org/2000/svg"===a&&"foreignObject"===b?"http://www.w3.org/1999/xhtml":a}function Nf(a,b,c){return null==
+b||"boolean"===typeof b||""===b?"":c||"number"!==typeof b||0===b||Nb.hasOwnProperty(a)&&Nb[a]?(""+b).trim():b+"px"}function Of(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf("--"),e=Nf(c,b[c],d);"float"===c&&(c="cssFloat");d?a.setProperty(c,e):a[c]=e}}function Sd(a,b){if(b){if(si[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(m(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(m(60));if(!("object"===typeof b.dangerouslySetInnerHTML&&
+"__html"in b.dangerouslySetInnerHTML))throw Error(m(61));}if(null!=b.style&&"object"!==typeof b.style)throw Error(m(62));}}function Td(a,b){if(-1===a.indexOf("-"))return"string"===typeof b.is;switch(a){case "annotation-xml":case "color-profile":case "font-face":case "font-face-src":case "font-face-uri":case "font-face-format":case "font-face-name":case "missing-glyph":return!1;default:return!0}}function Ud(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);
+return 3===a.nodeType?a.parentNode:a}function Pf(a){if(a=Ob(a)){if("function"!==typeof Vd)throw Error(m(280));var b=a.stateNode;b&&(b=Hc(b),Vd(a.stateNode,a.type,b))}}function Qf(a){jb?kb?kb.push(a):kb=[a]:jb=a}function Rf(){if(jb){var a=jb,b=kb;kb=jb=null;Pf(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}function Oc(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Ba(b);a[b]=c}function Hi(a){return 0===a?32:31-(Ii(a)/Ji|0)|0}function Ki(a,b,c,d){Xa||Xd();var e=he,f=Xa;Xa=!0;try{fg(e,a,b,c,d)}finally{(Xa=f)||Wd()}}function Li(a,b,c,d){Mi(Ni,he.bind(null,a,b,c,d))}function he(a,
+b,c,d){if(Pc){var e;if((e=0===(b&4))&&0=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=ug(c)}}function wg(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?wg(a,b.parentNode):"contains"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function xg(){for(var a=window,b=Gc();b instanceof a.HTMLIFrameElement;){try{var c=
+"string"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Gc(a.document)}return b}function ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&("input"===b&&("text"===a.type||"search"===a.type||"tel"===a.type||"url"===a.type||"password"===a.type)||"textarea"===b||"true"===a.contentEditable)}function yg(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;oe||null==qb||qb!==Gc(d)||(d=qb,"selectionStart"in d&&ne(d)?d={start:d.selectionStart,
+end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),$b&&Zb($b,d)||($b=d,d=Tc(pe,"onSelect"),0ub||(a.current=ve[ub],ve[ub]=null,ub--)}function A(a,b,c){ub++;ve[ub]=a.current;a.current=b}function vb(a,b){var c=a.type.contextTypes;if(!c)return Ha;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=
+b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function S(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Sg(a,b,c){if(D.current!==Ha)throw Error(m(168));A(D,b);A(J,c)}function Tg(a,b,c){var d=a.stateNode;a=b.childContextTypes;if("function"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(m(108,hb(b)||"Unknown",e));return B({},c,d)}function Xc(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Ha;Ya=D.current;
+A(D,a);A(J,J.current);return!0}function Ug(a,b,c){var d=a.stateNode;if(!d)throw Error(m(169));c?(a=Tg(a,b,Ya),d.__reactInternalMemoizedMergedChildContext=a,t(J),t(D),A(D,a)):t(J);A(J,c)}function wb(){switch(oj()){case Yc:return 99;case Vg:return 98;case Wg:return 97;case Xg:return 96;case Yg:return 95;default:throw Error(m(332));}}function Zg(a){switch(a){case 99:return Yc;case 98:return Vg;case 97:return Wg;case 96:return Xg;case 95:return Yg;default:throw Error(m(332));}}function Za(a,b){a=Zg(a);
+return pj(a,b)}function bc(a,b,c){a=Zg(a);return we(a,b,c)}function ja(){if(null!==Zc){var a=Zc;Zc=null;xe(a)}$g()}function $g(){if(!ye&&null!==pa){ye=!0;var a=0;try{var b=pa;Za(99,function(){for(;ap?(x=l,l=null):x=l.sibling;var C=r(e,l,h[p],k);if(null===C){null===l&&(l=x);break}a&&l&&null===
+C.alternate&&b(e,l);g=f(C,g,p);null===v?m=C:v.sibling=C;v=C;l=x}if(p===h.length)return c(e,l),m;if(null===l){for(;px?(C=p,p=null):C=p.sibling;var Da=r(e,p,q.value,k);if(null===Da){null===p&&(p=C);break}a&&p&&null===Da.alternate&&b(e,p);g=f(Da,g,x);null===v?l=Da:v.sibling=Da;v=Da;p=C}if(q.done)return c(e,p),l;if(null===p){for(;!q.done;x++,q=h.next())q=n(e,q.value,k),null!==q&&(g=f(q,g,x),null===v?l=q:v.sibling=q,v=q);return l}for(p=d(e,p);!q.done;x++,q=h.next())q=t(p,e,x,q.value,k),null!==q&&(a&&null!==
+q.alternate&&p.delete(null===q.key?x:q.key),g=f(q,g,x),null===v?l=q:v.sibling=q,v=q);a&&p.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k="object"===typeof f&&null!==f&&f.type===wa&&null===f.key;k&&(f=f.props.children);var l="object"===typeof f&&null!==f;if(l)switch(f.$$typeof){case ec:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===wa){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,
+k.sibling);d=e(k,f.props);d.ref=dc(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===wa?(d=zb(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=fd(f.type,f.key,f.props,null,a.mode,h),h.ref=dc(a,d,f),h.return=a,a=h)}return g(a);case Ua:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=
+d.sibling}d=Ee(f,a.mode,h);d.return=a;a=d}return g(a)}if("string"===typeof f||"number"===typeof f)return f=""+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=De(f,a.mode,h),d.return=a,a=d),g(a);if(gd(f))return w(a,d,f,h);if(Jb(f))return z(a,d,f,h);l&&ed(a,f);if("undefined"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(m(152,hb(a.type)||"Component"));}return c(a,d)}}function $a(a){if(a===fc)throw Error(m(174));return a}function Fe(a,b){A(gc,
+b);A(hc,a);A(ka,fc);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Rd(null,"");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=Rd(b,a)}t(ka);A(ka,b)}function Ab(a){t(ka);t(hc);t(gc)}function jh(a){$a(gc.current);var b=$a(ka.current);var c=Rd(b,a.type);b!==c&&(A(hc,a),A(ka,c))}function Ge(a){hc.current===a&&(t(ka),t(hc))}function hd(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||"$?"===c.data||
+"$!"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function kh(a,b){var c=Z(5,null,null,0);c.elementType="DELETED";c.type="DELETED";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=
+a.lastEffect=c}function lh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=""===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}function He(a){if(la){var b=Na;if(b){var c=b;if(!lh(a,b)){b=tb(c.nextSibling);if(!b||!lh(a,b)){a.flags=a.flags&-1025|2;la=!1;ra=a;return}kh(ra,c)}ra=a;Na=tb(b.firstChild)}else a.flags=a.flags&-1025|2,la=!1,
+ra=a}}function mh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;ra=a}function id(a){if(a!==ra)return!1;if(!la)return mh(a),la=!0,!1;var b=a.type;if(5!==a.tag||"head"!==b&&"body"!==b&&!se(b,a.memoizedProps))for(b=Na;b;)kh(a,b),b=tb(b.nextSibling);mh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(m(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if("/$"===c){if(0===b){Na=tb(a.nextSibling);break a}b--}else"$"!==c&&"$!"!==
+c&&"$?"!==c||b++}a=a.nextSibling}Na=null}}else Na=ra?tb(a.stateNode.nextSibling):null;return!0}function Ie(){Na=ra=null;la=!1}function Je(){for(var a=0;af))throw Error(m(301));f+=1;K=N=null;b.updateQueue=null;jc.current=sj;a=c(d,e)}while(kc)}jc.current=jd;b=null!==N&&null!==N.next;ic=0;K=N=y=null;kd=!1;if(b)throw Error(m(300));return a}function ab(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===K?y.memoizedState=K=a:K=K.next=a;return K}function bb(){if(null===N){var a=y.alternate;a=null!==a?a.memoizedState:null}else a=N.next;var b=null===K?y.memoizedState:K.next;if(null!==
+b)K=b,N=a;else{if(null===a)throw Error(m(310));N=a;a={memoizedState:N.memoizedState,baseState:N.baseState,baseQueue:N.baseQueue,queue:N.queue,next:null};null===K?y.memoizedState=K=a:K=K.next=a}return K}function ma(a,b){return"function"===typeof b?b(a):b}function lc(a,b,c){b=bb();c=b.queue;if(null===c)throw Error(m(311));c.lastRenderedReducer=a;var d=N,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;
+var h=g=f=null,k=e;do{var l=k.lane;if((ic&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;y.lanes|=l;La|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;X(d,b.memoizedState)||(fa=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=
+d}return[b.memoizedState,c.dispatch]}function mc(a,b,c){b=bb();c=b.queue;if(null===c)throw Error(m(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);X(f,b.memoizedState)||(fa=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function nh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,
+a=(ic&a)===a)b._workInProgressVersionPrimary=d,Bb.push(b);if(a)return c(b._source);Bb.push(b);throw Error(m(350));}function oh(a,b,c,d){var e=R;if(null===e)throw Error(m(349));var f=b._getVersion,g=f(b._source),h=jc.current,k=h.useState(function(){return nh(e,b,c)}),l=k[1],n=k[0];k=K;var t=a.memoizedState,r=t.refs,w=r.getSnapshot,z=t.source;t=t.subscribe;var B=y;a.memoizedState={refs:r,source:b,subscribe:d};h.useEffect(function(){r.getSnapshot=c;r.setSnapshot=l;var a=f(b._source);if(!X(g,a)){a=c(b._source);
+X(n,a)||(l(a),a=Oa(B),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=e.entanglements,h=a;0c?98:c,function(){a(!0)});Za(97\x3c/script>",a=a.removeChild(a.firstChild)):"string"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),"select"===c&&(g=a,d.multiple?
+g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Fa]=b;a[Wc]=d;xj(a,b,!1,!1);b.stateNode=a;g=Td(c,d);switch(c){case "dialog":z("cancel",a);z("close",a);e=d;break;case "iframe":case "object":case "embed":z("load",a);e=d;break;case "video":case "audio":for(e=0;eWe&&(b.flags|=64,f=!0,oc(d,!1),b.lanes=33554432)}else{if(!f)if(a=hd(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),oc(d,!0),null===d.tail&&"hidden"===d.tailMode&&
+!g.alternate&&!la)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*P()-d.renderingStartTime>We&&1073741824!==c&&(b.flags|=64,f=!0,oc(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=P(),c.sibling=null,b=E.current,A(E,f?b&1|2:b&1),c):null;case 23:case 24:return ta=cb.current,t(cb),null!==a&&null!==
+a.memoizedState!==(null!==b.memoizedState)&&"unstable-defer-without-hiding"!==d.mode&&(b.flags|=4),null}throw Error(m(156,b.tag));}function zj(a,b){switch(a.tag){case 1:return S(a.type)&&(t(J),t(D)),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 3:Ab();t(J);t(D);Je();b=a.flags;if(0!==(b&64))throw Error(m(285));a.flags=b&-4097|64;return a;case 5:return Ge(a),null;case 13:return t(E),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return t(E),null;case 4:return Ab(),null;case 10:return Ae(a),
+null;case 23:case 24:return ta=cb.current,t(cb),null;default:return null}}function Xe(a,b){try{var c="",d=b;do c+=pi(d),d=d.return;while(d);var e=c}catch(f){e="\nError generating stack: "+f.message+"\n"+f.stack}return{value:a,source:b,stack:e}}function Ye(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}function Mh(a,b,c){c=Ia(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){rd||(rd=!0,Ze=d);Ye(a,b)};return c}function Nh(a,b,c){c=Ia(-1,c);c.tag=
+3;var d=a.type.getDerivedStateFromError;if("function"===typeof d){var e=b.value;c.payload=function(){Ye(a,b);return d(e)}}var f=a.stateNode;null!==f&&"function"===typeof f.componentDidCatch&&(c.callback=function(){"function"!==typeof d&&(null===na?na=new Set([this]):na.add(this),Ye(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:""})});return c}function Oh(a){var b=a.ref;if(null!==b)if("function"===typeof b)try{b(null)}catch(c){Qa(a,c)}else b.current=null}function Aj(a,
+b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:ea(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&te(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(m(163));}function Bj(a,b,c,d){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;
+do 3===(a.tag&3)&&(d=a.create,a.destroy=d()),a=a.next;while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Ph(c,a),Cj(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:ea(c.type,b.memoizedProps),a.componentDidUpdate(d,b.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&dh(c,b,a);return;case 3:b=c.updateQueue;
+if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}dh(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&Pg(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&bg(c))));return;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(m(163));}function Qh(a,b){for(var c=a;;){if(5===
+c.tag){var d=c.stateNode;if(b)d=d.style,"function"===typeof d.setProperty?d.setProperty("display","none","important"):d.display="none";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty("display")?e.display:null;d.style.display=Nf("display",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?"":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===a)break;for(;null===c.sibling;){if(null===
+c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}function Rh(a,b,c){if(db&&"function"===typeof db.onCommitFiberUnmount)try{db.onCommitFiberUnmount($e,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Ph(b,c);else{d=b;try{e()}catch(f){Qa(d,f)}}c=c.next}while(c!==a)}break;case 1:Oh(b);a=b.stateNode;if("function"===typeof a.componentWillUnmount)try{a.props=
+b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Qa(b,f)}break;case 5:Oh(b);break;case 4:Sh(a,b)}}function Th(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function Uh(a){return 5===a.tag||3===a.tag||4===a.tag}function Vh(a){a:{for(var b=a.return;null!==b;){if(Uh(b))break a;b=b.return}throw Error(m(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=
+!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(m(161));}c.flags&16&&(qc(b,""),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||Uh(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===c.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?af(a,c,b):bf(a,c,b)}function af(a,b,c){var d=
+a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Vc));else if(4!==d&&(a=a.child,null!==a))for(af(a,b,c),a=a.sibling;null!==a;)af(a,b,c),a=a.sibling}function bf(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);
+else if(4!==d&&(a=a.child,null!==a))for(bf(a,b,c),a=a.sibling;null!==a;)bf(a,b,c),a=a.sibling}function Sh(a,b,c){c=b;for(var d=!1,e,f;;){if(!d){e=c.return;a:for(;;){if(null===e)throw Error(m(160));f=e.stateNode;switch(e.tag){case 5:e=f;f=!1;break a;case 3:e=f.containerInfo;f=!0;break a;case 4:e=f.containerInfo;f=!0;break a}e=e.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(Rh(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===
+k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(Rh(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=
+c.sibling}}function cf(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[Wc]=d;"input"===a&&"radio"===d.type&&null!=d.name&&Hf(c,d);Td(a,e);b=Td(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=P()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>c?4320:1960*Ij(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.")}5!==
+L&&(L=2);k=Xe(k,h);r=g;do{switch(r.tag){case 3:f=k;r.flags|=4096;b&=-b;r.lanes|=b;var B=Mh(r,f,b);ch(r,B);break a;case 1:f=k;var A=r.type,D=r.stateNode;if(0===(r.flags&64)&&("function"===typeof A.getDerivedStateFromError||null!==D&&"function"===typeof D.componentDidCatch&&(null===na||!na.has(D)))){r.flags|=4096;b&=-b;r.lanes|=b;var F=Nh(r,f,b);ch(r,F);break a}}r=r.return}while(null!==r)}ci(c)}catch(qa){b=qa;G===c&&null!==c&&(G=c=c.return);continue}break}while(1)}function Yh(){var a=vd.current;vd.current=
+jd;return null===a?jd:a}function sc(a,b){var c=n;n|=16;var d=Yh();R===a&&O===b||Gb(a,b);do try{Nj();break}catch(e){Zh(a,e)}while(1);ze();n=c;vd.current=d;if(null!==G)throw Error(m(261));R=null;O=0;return L}function Nj(){for(;null!==G;)di(G)}function Hj(){for(;null!==G&&!Oj();)di(G)}function di(a){var b=Pj(a.alternate,a,ta);a.memoizedProps=a.pendingProps;null===b?ci(a):G=b;kf.current=null}function ci(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=vj(c,b,ta);if(null!==c){G=c;return}c=
+b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(ta&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=A,A=h),h=vg(p,A),f=vg(p,g),h&&f&&(1!==u.rangeCount||u.anchorNode!==h.node||u.anchorOffset!==h.offset||u.focusNode!==f.node||u.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),u.removeAllRanges(),A>g?(u.addRange(q),u.extend(f.node,
+f.offset)):(q.setEnd(f.node,f.offset),u.addRange(q))))));q=[];for(u=p;u=u.parentNode;)1===u.nodeType&&q.push({element:u,left:u.scrollLeft,top:u.scrollTop});"function"===typeof p.focus&&p.focus();for(p=0;pP()-df?Gb(a,0):jf|=c);ba(a,b)}function Ej(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===wb()?1:2:(0===ua&&(ua=Fb),b=nb(62914560&~ua),0===b&&(b=4194304)));
+c=W();a=ud(a,b);null!==a&&(Oc(a,b,c),ba(a,c))}function Uj(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.flags=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childLanes=this.lanes=0;this.alternate=null}function Qe(a){a=a.prototype;return!(!a||!a.isReactComponent)}function Vj(a){if("function"===
+typeof a)return Qe(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Dc)return 11;if(a===Ec)return 14}return 2}function Ma(a,b){var c=a.alternate;null===c?(c=Z(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=
+a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};c.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}function fd(a,b,c,d,e,f){var g=2;d=a;if("function"===typeof a)Qe(a)&&(g=1);else if("string"===typeof a)g=5;else a:switch(a){case wa:return zb(c.children,e,f,b);case fi:g=8;e|=16;break;case Hd:g=8;e|=1;break;case Lb:return a=Z(12,c,b,e|8),a.elementType=Lb,a.type=Lb,a.lanes=f,a;case Mb:return a=Z(13,c,b,e),a.type=Mb,a.elementType=Mb,a.lanes=
+f,a;case Cc:return a=Z(19,c,b,e),a.elementType=Cc,a.lanes=f,a;case pf:return Ue(c,e,f,b);case qf:return a=Z(24,c,b,e),a.elementType=qf,a.lanes=f,a;default:if("object"===typeof a&&null!==a)switch(a.$$typeof){case Jd:g=10;break a;case Id:g=9;break a;case Dc:g=11;break a;case Ec:g=14;break a;case Ld:g=16;d=null;break a;case Kd:g=22;break a}throw Error(m(130,null==a?a:typeof a,""));}b=Z(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function zb(a,b,c,d){a=Z(7,a,d,b);a.lanes=c;return a}function Ue(a,
+b,c,d){a=Z(23,a,d,b);a.elementType=pf;a.lanes=c;return a}function De(a,b,c){a=Z(6,a,null,b);a.lanes=c;return a}function Ee(a,b,c){b=Z(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}function Wj(a,b,c){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=
+null;this.callbackPriority=0;this.eventTimes=ge(0);this.expirationTimes=ge(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=ge(0);this.mutableSourceEagerHydrationData=null}function Xj(a,b,c){var d=3"+b.valueOf().toString()+"";for(b=Ad.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}}),qc=function(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=
+b;return}}a.textContent=b},Nb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,
+zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},bk=["Webkit","ms","Moz","O"];Object.keys(Nb).forEach(function(a){bk.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);Nb[b]=Nb[a]})});var si=B({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}),Vd=null,jb=null,kb=null,me=function(a,b){return a(b)},fg=function(a,
+b,c,d,e){return a(b,c,d,e)},Xd=function(){},Sf=me,Xa=!1,Yd=!1,qe=!1;if(oa)try{var xc={};Object.defineProperty(xc,"passive",{get:function(){qe=!0}});window.addEventListener("test",xc,xc);window.removeEventListener("test",xc,xc)}catch(a){qe=!1}var vi=function(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(Da){this.onError(Da)}},Qb=!1,Ic=null,Jc=!1,Zd=null,wi={onError:function(a){Qb=!0;Ic=a}},ca=ha.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.Scheduler,
+ck=ca.unstable_cancelCallback,Bd=ca.unstable_now,$f=ca.unstable_scheduleCallback,dk=ca.unstable_shouldYield,ii=ca.unstable_requestPaint,ae=ca.unstable_runWithPriority,ek=ca.unstable_getCurrentPriorityLevel,fk=ca.unstable_ImmediatePriority,ji=ca.unstable_UserBlockingPriority,ag=ca.unstable_NormalPriority,gk=ca.unstable_LowPriority,hk=ca.unstable_IdlePriority,ce=!1,ia=[],ya=null,za=null,Aa=null,Rb=new Map,Sb=new Map,Vb=[],gg="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" "),
+lb={animationend:Lc("Animation","AnimationEnd"),animationiteration:Lc("Animation","AnimationIteration"),animationstart:Lc("Animation","AnimationStart"),transitionend:Lc("Transition","TransitionEnd")},de={},cg={};oa&&(cg=document.createElement("div").style,"AnimationEvent"in window||(delete lb.animationend.animation,delete lb.animationiteration.animation,delete lb.animationstart.animation),"TransitionEvent"in window||delete lb.transitionend.transition);var Hg=Mc("animationend"),Ig=Mc("animationiteration"),
+Jg=Mc("animationstart"),Kg=Mc("transitionend"),dg=new Map,fe=new Map,ik=["abort","abort",Hg,"animationEnd",Ig,"animationIteration",Jg,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing",
+"playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Kg,"transitionEnd","waiting","waiting"];Bd();var w=8,Ba=Math.clz32?Math.clz32:Hi,Ii=Math.log,Ji=Math.LN2,Ni=ji,Mi=ae,Pc=!0,Ca=null,ie=null,Qc=null,Hb={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},le=V(Hb),yc=B({},Hb,{view:0,detail:0}),hj=V(yc),wf,xf,zc,Cd=B({},yc,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,
+pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:je,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if("movementX"in a)return a.movementX;a!==zc&&(zc&&"mousemove"===a.type?(wf=a.screenX-zc.screenX,xf=a.screenY-zc.screenY):xf=wf=0,zc=a);return wf},movementY:function(a){return"movementY"in a?a.movementY:xf}}),Gg=V(Cd),jk=B({},Cd,{dataTransfer:0}),dj=V(jk),kk=B({},
+yc,{relatedTarget:0}),re=V(kk),lk=B({},Hb,{animationName:0,elapsedTime:0,pseudoElement:0}),fj=V(lk),mk=B({},Hb,{clipboardData:function(a){return"clipboardData"in a?a.clipboardData:window.clipboardData}}),jj=V(mk),nk=B({},Hb,{data:0}),Og=V(nk),mj=Og,ok={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},pk={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",
+16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Pi={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"},qk=B({},yc,{key:function(a){if(a.key){var b=ok[a.key]||a.key;if("Unidentified"!==
+b)return b}return"keypress"===a.type?(a=Rc(a),13===a?"Enter":String.fromCharCode(a)):"keydown"===a.type||"keyup"===a.type?pk[a.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:je,charCode:function(a){return"keypress"===a.type?Rc(a):0},keyCode:function(a){return"keydown"===a.type||"keyup"===a.type?a.keyCode:0},which:function(a){return"keypress"===a.type?Rc(a):"keydown"===a.type||"keyup"===a.type?a.keyCode:0}}),cj=V(qk),rk=B({},
+Cd,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Lg=V(rk),sk=B({},yc,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:je}),ej=V(sk),tk=B({},Hb,{propertyName:0,elapsedTime:0,pseudoElement:0}),gj=V(tk),uk=B({},Cd,{deltaX:function(a){return"deltaX"in a?a.deltaX:"wheelDeltaX"in a?-a.wheelDeltaX:0},deltaY:function(a){return"deltaY"in a?a.deltaY:"wheelDeltaY"in a?-a.wheelDeltaY:"wheelDelta"in
+a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),ij=V(uk),Qi=[9,13,27,32],ke=oa&&"CompositionEvent"in window,Ac=null;oa&&"documentMode"in document&&(Ac=document.documentMode);var lj=oa&&"TextEvent"in window&&!Ac,og=oa&&(!ke||Ac&&8=Ac),ng=String.fromCharCode(32),mg=!1,ob=!1,Ti={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0},Xb=null,Yb=null,Ng=!1;oa&&(Ng=Ui("input")&&(!document.documentMode||9=document.documentMode,qb=null,pe=null,$b=null,oe=!1;ee("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),
+0);ee("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1);ee(ik,2);(function(a,b){for(var c=0;cki?Bd:function(){return Bd()-ki},Gj=fb.ReactCurrentBatchConfig,bd=Ga(null),ad=null,xb=null,$c=null,Ka=!1,hh=(new ha.Component).refs,dd={isMounted:function(a){return(a=a._reactInternals)?Va(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=W(),e=Oa(a),f=Ia(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ja(a,f);Pa(a,e,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=W(),e=Oa(a),f=Ia(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ja(a,f);
+Pa(a,e,d)},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=W(),d=Oa(a),e=Ia(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);Ja(a,e);Pa(a,d,c)}},gd=Array.isArray,od=ih(!0),xh=ih(!1),fc={},ka=Ga(fc),hc=Ga(fc),gc=Ga(fc),E=Ga(0),ra=null,Na=null,la=!1,Bb=[],jc=fb.ReactCurrentDispatcher,aa=fb.ReactCurrentBatchConfig,ic=0,y=null,N=null,K=null,kd=!1,kc=!1,jd={readContext:Y,useCallback:T,useContext:T,useEffect:T,useImperativeHandle:T,useLayoutEffect:T,useMemo:T,useReducer:T,useRef:T,useState:T,
+useDebugValue:T,useDeferredValue:T,useTransition:T,useMutableSource:T,useOpaqueIdentifier:T,unstable_isNewReconciler:!1},qj={readContext:Y,useCallback:function(a,b){ab().memoizedState=[a,void 0===b?null:b];return a},useContext:Y,useEffect:rh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Ne(4,2,th.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Ne(4,2,a,b)},useMemo:function(a,b){var c=ab();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,
+b,c){var d=ab();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Me.bind(null,y,a);return[d.memoizedState,a]},useRef:qh,useState:nc,useDebugValue:Pe,useDeferredValue:function(a){var b=nc(a),c=b[0],d=b[1];rh(function(){var b=aa.transition;aa.transition=1;try{d(a)}finally{aa.transition=b}},[a]);return c},useTransition:function(){var a=nc(!1),b=a[0];a=tj.bind(null,a[1]);qh(a);return[a,b]},useMutableSource:function(a,
+b,c){var d=ab();d.memoizedState={refs:{getSnapshot:b,setSnapshot:null},source:a,subscribe:c};return oh(d,a,b,c)},useOpaqueIdentifier:function(){if(la){var a=!1,b=nj(function(){a||(a=!0,c("r:"+(yf++).toString(36)));throw Error(m(355));}),c=nc(b)[1];0===(y.mode&2)&&(y.flags|=516,ld(5,function(){c("r:"+(yf++).toString(36))},void 0,null));return b}b="r:"+(yf++).toString(36);nc(b);return b},unstable_isNewReconciler:!1},rj={readContext:Y,useCallback:vh,useContext:Y,useEffect:nd,useImperativeHandle:uh,useLayoutEffect:sh,
+useMemo:wh,useReducer:lc,useRef:md,useState:function(a){return lc(ma)},useDebugValue:Pe,useDeferredValue:function(a){var b=lc(ma),c=b[0],d=b[1];nd(function(){var b=aa.transition;aa.transition=1;try{d(a)}finally{aa.transition=b}},[a]);return c},useTransition:function(){var a=lc(ma)[0];return[md().current,a]},useMutableSource:ph,useOpaqueIdentifier:function(){return lc(ma)[0]},unstable_isNewReconciler:!1},sj={readContext:Y,useCallback:vh,useContext:Y,useEffect:nd,useImperativeHandle:uh,useLayoutEffect:sh,
+useMemo:wh,useReducer:mc,useRef:md,useState:function(a){return mc(ma)},useDebugValue:Pe,useDeferredValue:function(a){var b=mc(ma),c=b[0],d=b[1];nd(function(){var b=aa.transition;aa.transition=1;try{d(a)}finally{aa.transition=b}},[a]);return c},useTransition:function(){var a=mc(ma)[0];return[md().current,a]},useMutableSource:ph,useOpaqueIdentifier:function(){return mc(ma)[0]},unstable_isNewReconciler:!1},uj=fb.ReactCurrentOwner,fa=!1,qd={dehydrated:null,retryLane:0};var xj=function(a,b,c,d){for(c=
+b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};var Kh=function(a){};var wj=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){a=b.stateNode;$a(ka.current);e=null;switch(c){case "input":f=Md(a,f);d=Md(a,d);e=[];break;case "option":f=Pd(a,f);d=Pd(a,d);e=[];break;case "select":f=
+B({},f,{value:void 0});d=B({},d,{value:void 0});e=[];break;case "textarea":f=Qd(a,f);d=Qd(a,d);e=[];break;default:"function"!==typeof f.onClick&&"function"===typeof d.onClick&&(a.onclick=Vc)}Sd(c,d);var g;c=null;for(l in f)if(!d.hasOwnProperty(l)&&f.hasOwnProperty(l)&&null!=f[l])if("style"===l){var h=f[l];for(g in h)h.hasOwnProperty(g)&&(c||(c={}),c[g]="")}else"dangerouslySetInnerHTML"!==l&&"children"!==l&&"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(Ib.hasOwnProperty(l)?
+e||(e=[]):(e=e||[]).push(l,null));for(l in d){var k=d[l];h=null!=f?f[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if("style"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]="");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(e||(e=[]),e.push(l,c)),c=k;else"dangerouslySetInnerHTML"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(e=e||[]).push(l,k)):"children"===l?"string"!==typeof k&&"number"!==typeof k||(e=
+e||[]).push(l,""+k):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&(Ib.hasOwnProperty(l)?(null!=k&&"onScroll"===l&&z("scroll",a),e||h===k||(e=[])):"object"===typeof k&&null!==k&&k.$$typeof===ue?k.toString():(e=e||[]).push(l,k))}c&&(e=e||[]).push("style",c);var l=e;if(b.updateQueue=l)b.flags|=4}};var yj=function(a,b,c,d){c!==d&&(b.flags|=4)};var Lj="function"===typeof WeakMap?WeakMap:Map,Dj="function"===typeof WeakSet?WeakSet:Set,Ij=Math.ceil,vd=fb.ReactCurrentDispatcher,kf=
+fb.ReactCurrentOwner,n=0,R=null,G=null,O=0,ta=0,cb=Ga(0),L=0,wd=null,Fb=0,La=0,Cb=0,jf=0,ef=null,df=0,We=Infinity,l=null,rd=!1,Ze=null,na=null,Sa=!1,tc=null,vc=90,nf=[],of=[],va=null,rc=0,ff=null,sd=-1,ua=0,td=0,uc=null,xd=!1;var Pj=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||J.current)fa=!0;else if(0!==(c&d))fa=0!==(a.flags&16384)?!0:!1;else{fa=!1;switch(b.tag){case 3:Dh(b);Ie();break;case 5:jh(b);break;case 1:S(b.type)&&Xc(b);break;case 4:Fe(b,b.stateNode.containerInfo);
+break;case 10:d=b.memoizedProps.value;var e=b.type._context;A(bd,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return Eh(a,b,c);A(E,E.current&1);b=sa(a,b,c);return null!==b?b.sibling:null}A(E,E.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Jh(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);A(E,E.current);if(d)break;else return null;case 23:case 24:return b.lanes=
+0,Se(a,b,c)}return sa(a,b,c)}else fa=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=vb(b,D.current);yb(b,c);e=Le(null,b,d,a,e,c);b.flags|=1;if("object"===typeof e&&null!==e&&"function"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(S(d)){var f=!0;Xc(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;Be(b);var g=d.getDerivedStateFromProps;"function"===typeof g&&
+cd(b,d,g,a);e.updater=dd;b.stateNode=e;e._reactInternals=b;Ce(b,d,a,c);b=Te(null,b,d,!0,f,c)}else b.tag=0,U(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=Vj(e);a=ea(e,a);switch(f){case 0:b=Re(null,b,e,a,c);break a;case 1:b=Ch(null,b,e,a,c);break a;case 11:b=yh(null,b,e,a,c);break a;case 14:b=zh(null,b,e,ea(e.type,a),d,c);break a}throw Error(m(306,e,""));}return b;case 0:return d=
+b.type,e=b.pendingProps,e=b.elementType===d?e:ea(d,e),Re(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ea(d,e),Ch(a,b,d,e,c);case 3:Dh(b);d=b.updateQueue;if(null===a||null===d)throw Error(m(282));d=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;bh(a,b);cc(b,d,null,c);d=b.memoizedState.element;if(d===e)Ie(),b=sa(a,b,c);else{e=b.stateNode;if(f=e.hydrate)Na=tb(b.stateNode.containerInfo.firstChild),ra=b,f=la=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=
+a)for(e=0;e>>1,f=a[c];if(void 0!==f&&0E(g,e))void 0!==h&&0>E(h,g)?(a[c]=h,a[k]=e,c=k):(a[c]=g,a[d]=e,c=d);else if(void 0!==h&&0>E(h,e))a[c]=h,a[k]=e,c=k;else break a}}return b}return null}function E(a,b){var e=a.sortIndex-b.sortIndex;return 0!==e?e:a.id-b.id}function P(a){for(var b=p(r);null!==b;){if(null===b.callback)F(r);else if(b.startTime<=a)F(r),b.sortIndex=b.expirationTime,O(q,b);else break;b=p(r)}}
+function Q(a){z=!1;P(a);if(!u)if(null!==p(q))u=!0,A(R);else{var b=p(r);null!==b&&G(Q,b.startTime-a)}}function R(a,b){u=!1;z&&(z=!1,S());H=!0;var e=g;try{P(b);for(m=p(q);null!==m&&(!(m.expirationTime>b)||a&&!T());){var c=m.callback;if("function"===typeof c){m.callback=null;g=m.priorityLevel;var f=c(m.expirationTime<=b);b=t();"function"===typeof f?m.callback=f:m===p(q)&&F(q);P(b)}else F(q);m=p(q)}if(null!==m)var d=!0;else{var n=p(r);null!==n&&G(Q,n.startTime-b);d=!1}return d}finally{m=null,g=e,H=!1}}
+var w=60103,ha=60106;c.Fragment=60107;c.StrictMode=60108;c.Profiler=60114;var ka=60109,la=60110,ma=60112;c.Suspense=60113;var na=60115,oa=60116;if("function"===typeof Symbol&&Symbol.for){var d=Symbol.for;w=d("react.element");ha=d("react.portal");c.Fragment=d("react.fragment");c.StrictMode=d("react.strict_mode");c.Profiler=d("react.profiler");ka=d("react.provider");la=d("react.context");ma=d("react.forward_ref");c.Suspense=d("react.suspense");na=d("react.memo");oa=d("react.lazy")}var Y="function"===
+typeof Symbol&&Symbol.iterator,ya=Object.prototype.hasOwnProperty,U=Object.assign||function(a,b){if(null==a)throw new TypeError("Object.assign target cannot be null or undefined");for(var e=Object(a),c=1;c=ta};d=function(){};V=function(a){0>a||125d?(a.sortIndex=
+c,O(r,a),null===p(q)&&a===p(r)&&(z?S():z=!0,G(Q,c-d))):(a.sortIndex=e,O(q,a),u||H||(u=!0,A(R)));return a},unstable_cancelCallback:function(a){a.callback=null},unstable_wrapCallback:function(a){var b=g;return function(){var c=g;g=b;try{return a.apply(this,arguments)}finally{g=c}}},unstable_getCurrentPriorityLevel:function(){return g},get unstable_shouldYield(){return T},unstable_requestPaint:d,unstable_continueExecution:function(){u||H||(u=!0,A(R))},unstable_pauseExecution:function(){},unstable_getFirstCallbackNode:function(){return p(q)},
+get unstable_now(){return t},get unstable_forceFrameRate(){return V},unstable_Profiling:null},SchedulerTracing:{__proto__:null,__interactionsRef:null,__subscriberRef:null,unstable_clear:function(a){return a()},unstable_getCurrent:function(){return null},unstable_getThreadID:function(){return++Ea},unstable_trace:function(a,b,c){return c()},unstable_wrap:function(a){return a},unstable_subscribe:function(a){},unstable_unsubscribe:function(a){}}};c.Children={map:D,forEach:function(a,b,c){D(a,function(){b.apply(this,
+arguments)},c)},count:function(a){var b=0;D(a,function(){b++});return b},toArray:function(a){return D(a,function(a){return a})||[]},only:function(a){if(!M(a))throw Error(y(143));return a}};c.Component=v;c.PureComponent=K;c.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=d;c.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(y(267,a));var d=U({},a.props),e=a.key,g=a.ref,n=a._owner;if(null!=b){void 0!==b.ref&&(g=b.ref,n=L.current);void 0!==b.key&&(e=""+b.key);if(a.type&&a.type.defaultProps)var k=
+a.type.defaultProps;for(h in b)ea.call(b,h)&&!fa.hasOwnProperty(h)&&(d[h]=void 0===b[h]&&void 0!==k?k[h]:b[h])}var h=arguments.length-2;if(1===h)d.children=c;else if(1
+
+
+
+
+
diff --git a/django_jsonform/tests.py b/django_jsonform/tests.py
new file mode 100644
index 0000000..7ce503c
--- /dev/null
+++ b/django_jsonform/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/django_jsonform/urls.py b/django_jsonform/urls.py
new file mode 100644
index 0000000..60403f0
--- /dev/null
+++ b/django_jsonform/urls.py
@@ -0,0 +1,9 @@
+from django.urls import path
+from . import views
+
+
+app_name = 'django_jsonform'
+
+urlpatterns = [
+ path('upload/', views.upload_handler, name='upload'),
+]
\ No newline at end of file
diff --git a/django_jsonform/views.py b/django_jsonform/views.py
new file mode 100644
index 0000000..26fc8ec
--- /dev/null
+++ b/django_jsonform/views.py
@@ -0,0 +1,12 @@
+from importlib import import_module
+from django.http import JsonResponse, HttpResponseNotAllowed
+from django.conf import settings
+
+
+def upload_handler(request):
+ if request.method == 'POST':
+ module_path, handler_func = settings.JSONFORM_UPLOAD_HANDLER.rsplit('.', 1)
+ func = getattr(import_module(module_path), handler_func)
+ file_path = func(request)
+ return JsonResponse({'file_path': file_path})
+ return HttpResponseNotAllowed(['POST'], '405 Method Not Allowed')
diff --git a/django_jsonform/widgets.py b/django_jsonform/widgets.py
new file mode 100644
index 0000000..d1d62f7
--- /dev/null
+++ b/django_jsonform/widgets.py
@@ -0,0 +1,38 @@
+import json
+from django import forms
+from django.template.loader import render_to_string
+from django.utils.safestring import mark_safe
+
+
+class JSONFormWidget(forms.Widget):
+ template_name = 'django_jsonform/editor.html'
+
+ def __init__(self, schema, model_name=''):
+ super().__init__()
+
+ self.schema = schema
+ self.model_name = model_name
+
+ def render(self, name, value, attrs=None, renderer=None):
+ context = {
+ 'name': name,
+ 'model_name': self.model_name,
+ 'data': value or json.dumps(''),
+ 'schema': json.dumps(self.schema),
+ }
+ return mark_safe(render_to_string(self.template_name, context))
+
+ @property
+ def media(self):
+ css = {
+ 'all': [
+ 'django_jsonform/style.css',
+ ]
+ }
+ js = [
+ 'django_jsonform/vendor/react.production.min.js',
+ 'django_jsonform/vendor/react-dom.production.min.js',
+ 'django_jsonform/react-json-form.min.js',
+ ]
+
+ return forms.Media(css=css, js=js)
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..9137cd9
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,34 @@
+[metadata]
+name = django-jsonform
+version = attr: django_jsonform.__version__
+description = A user-friendly JSON editing form for Django admin.
+long_description = file: README.md
+long_description_content_type = text/markdown
+url = https://www.github.com/bhch/django-jsonform
+author = Bharat Chauhan
+author_email = tell.bhch@gmail.com
+license = BSD-3-Clause
+classifiers =
+ Environment :: Web Environment
+ Framework :: Django
+ Intended Audience :: Developers
+ License :: OSI Approved :: BSD License
+ Operating System :: OS Independent
+ Programming Language :: Python
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3 :: Only
+ Programming Language :: Python :: 3.4
+ Programming Language :: Python :: 3.5
+ Programming Language :: Python :: 3.6
+ Programming Language :: Python :: 3.7
+ Programming Language :: Python :: 3.8
+ Programming Language :: Python :: 3.9
+ Topic :: Internet :: WWW/HTTP
+ Topic :: Internet :: WWW/HTTP :: Dynamic Content
+
+[options]
+python_requires = >= 3.4
+install_requires = django >= 2.0
+packages = find:
+include_package_data = true
+zip_safe = false
\ No newline at end of file
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..b024da8
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,4 @@
+from setuptools import setup
+
+
+setup()