import React, { useMemo, useEffect, useState } from 'react'
import { MeasurementInput } from '../inputs/measurement.mjs'
import { adult, doll, giant } from '@freesewing/models'
import {
CisFemaleIcon as WomenswearIcon,
CisMaleIcon as MenswearIcon,
} from 'shared/components/icons.mjs'
import { useTranslation } from 'next-i18next'
import { Setting } from '../menu/core-settings/setting.mjs'
import { settings } from '../menu/core-settings/index.mjs'
import { Tab, Tabs } from 'shared/components/mdx/tabs.mjs'
const groups = { adult, doll, giant }
const icons = {
cisFemale: ,
cisMale: ,
}
export const WorkbenchMeasurements = ({ app, design, gist, updateGist, gistReady }) => {
const { t } = useTranslation(['app', 'cfp'])
// Method to handle measurement updates
const updateMeasurements = (value, m = false) => {
if (m === false) {
// Set all measurements
updateGist('measurements', value)
} else {
// Set one measurement
updateGist(['measurements', m], value)
}
}
const [firstInvalid, setFirstInvalid] = useState(undefined)
useEffect(() => {
if (!gistReady) {
return
}
for (const m of design.patternConfig?.measurements || []) {
if (!gist?.measurements?.[m]) {
setFirstInvalid(m)
return
}
setFirstInvalid(undefined)
}
}, [gistReady])
// Save us some typing
const inputProps = useMemo(() => ({ app, updateMeasurements, gist }), [app, gist])
const shortname = design.designConfig.data.name.replace('@freesewing/', '')
return (
{shortname}: {t('measurements')}
{t('cfp:preloadMeasurements')}
{Object.keys(groups).map((group) => (
{Object.keys(icons).map((type) => (
{t(type)}
{Object.keys(groups[group][type]).map((m) => (
-
))}
))}
))}
{t('cfp:enterMeasurements')}
{design.patternConfig.measurements.length > 0 && (
<>
{t('requiredMeasurements')}
{design.patternConfig.measurements.map((m) => (
))}
>
)}
{design.patternConfig.optionalMeasurements.length > 0 && (
<>
{t('optionalMeasurements')}
{design.patternConfig.optionalMeasurements.map((m) => (
))}
>
)}
)
}