Add customizer support for OpenSCAD
This also includes sending metadata and part of the concatenated gzip, not in the s3 metadata as that has a 2kb limit. Resolves #320
This commit is contained in:
@@ -130,7 +130,6 @@ const workerHelper = new WorkerHelper()
|
||||
|
||||
export const render: DefaultKernelExport['render'] = async ({
|
||||
code,
|
||||
parameters,
|
||||
settings,
|
||||
}: RenderArgs) => {
|
||||
if (!scriptWorker) {
|
||||
@@ -169,11 +168,11 @@ export const render: DefaultKernelExport['render'] = async ({
|
||||
}
|
||||
})
|
||||
|
||||
workerHelper.resolver()
|
||||
workerHelper.resolver(null)
|
||||
scriptWorker.postMessage({ action: 'init', baseURI, alias: [] })
|
||||
}
|
||||
|
||||
return workerHelper.render(code, parameters)
|
||||
return workerHelper.render(code, settings.parameters)
|
||||
}
|
||||
|
||||
const jsCadController: DefaultKernelExport = {
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
import { CadhubNumberChoiceParam, CadhubNumberOption, CadhubParams, CadhubStringChoiceParam, CadhubStringOption } from 'src/components/Customizer/customizerConverter'
|
||||
import {
|
||||
CadhubNumberChoiceParam,
|
||||
CadhubNumberOption,
|
||||
CadhubParams,
|
||||
CadhubStringChoiceParam,
|
||||
CadhubStringOption,
|
||||
} from 'src/components/Customizer/customizerConverter'
|
||||
|
||||
type JscadTypeNames =
|
||||
| 'group'
|
||||
@@ -19,6 +25,7 @@ interface JscadParamBase {
|
||||
type: JscadTypeNames
|
||||
caption: string
|
||||
name: string
|
||||
initial?: number | string | boolean
|
||||
}
|
||||
interface JscadGroupParam extends JscadParamBase {
|
||||
type: 'group'
|
||||
@@ -81,6 +88,10 @@ type JsCadParams =
|
||||
export function jsCadToCadhubParams(input: JsCadParams[]): CadhubParams[] {
|
||||
return input
|
||||
.map((param): CadhubParams => {
|
||||
const common: { caption: string; name: string } = {
|
||||
caption: param.caption,
|
||||
name: param.name,
|
||||
}
|
||||
switch (param.type) {
|
||||
case 'slider':
|
||||
case 'number':
|
||||
@@ -88,8 +99,7 @@ export function jsCadToCadhubParams(input: JsCadParams[]): CadhubParams[] {
|
||||
return {
|
||||
type: 'number',
|
||||
input: 'default-number',
|
||||
caption: param.caption,
|
||||
name: param.name,
|
||||
...common,
|
||||
initial: param.initial,
|
||||
min: param.min,
|
||||
max: param.max,
|
||||
@@ -105,8 +115,7 @@ export function jsCadToCadhubParams(input: JsCadParams[]): CadhubParams[] {
|
||||
return {
|
||||
type: 'string',
|
||||
input: 'default-string',
|
||||
caption: param.caption,
|
||||
name: param.name,
|
||||
...common,
|
||||
initial: param.initial,
|
||||
placeholder:
|
||||
param.type === 'text' ||
|
||||
@@ -123,43 +132,38 @@ export function jsCadToCadhubParams(input: JsCadParams[]): CadhubParams[] {
|
||||
return {
|
||||
type: 'boolean',
|
||||
input: 'default-boolean',
|
||||
caption: param.caption,
|
||||
name: param.name,
|
||||
...common,
|
||||
initial: !!param.initial,
|
||||
}
|
||||
case 'choice':
|
||||
case 'radio':
|
||||
if(typeof param.values[0] === 'number'){
|
||||
let options:Array<CadhubNumberOption> = []
|
||||
let captions = param.captions || param.values
|
||||
param.values.forEach((value,i)=>{
|
||||
options[i] = {name:String(captions[i]), value:Number(value)}
|
||||
})
|
||||
return {
|
||||
type: 'number',
|
||||
input: 'choice-number',
|
||||
caption: param.caption,
|
||||
name: param.name,
|
||||
initial: Number(param.initial),
|
||||
options
|
||||
}
|
||||
}else{
|
||||
let options:Array<CadhubStringOption> = []
|
||||
let captions = param.captions || param.values
|
||||
param.values.forEach((value,i)=>{
|
||||
options[i] = {name:String(captions[i]), value:String(value)}
|
||||
})
|
||||
return {
|
||||
type: 'string',
|
||||
input: 'choice-string',
|
||||
caption: param.caption,
|
||||
name: param.name,
|
||||
initial: String(param.initial),
|
||||
options
|
||||
}
|
||||
case 'choice':
|
||||
case 'radio':
|
||||
if (typeof param.values[0] === 'number') {
|
||||
const options: Array<CadhubNumberOption> = []
|
||||
const captions = param.captions || param.values
|
||||
param.values.forEach((value, i) => {
|
||||
options[i] = { name: String(captions[i]), value: Number(value) }
|
||||
})
|
||||
return {
|
||||
type: 'number',
|
||||
input: 'choice-number',
|
||||
...common,
|
||||
initial: Number(param.initial),
|
||||
options,
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
const options: Array<CadhubStringOption> = []
|
||||
const captions = param.captions || param.values
|
||||
param.values.forEach((value, i) => {
|
||||
options[i] = { name: String(captions[i]), value: String(value) }
|
||||
})
|
||||
return {
|
||||
type: 'string',
|
||||
input: 'choice-string',
|
||||
...common,
|
||||
initial: String(param.initial),
|
||||
options,
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
.filter((a) => a)
|
||||
|
||||
Reference in New Issue
Block a user