import { ClearIcon, IconWrapper } from 'shared/components/icons.mjs' import { useTranslation } from 'next-i18next' import { formatFraction128, measurementAsMm, round, formatMm } from 'shared/utils.mjs' import { ShowButtonsToggle } from '../draft/buttons.mjs' const SheetIcon = (props) => ( ) const GrainIcon = (props) => ( ) const FabricSizer = ({ gist, updateGist, activeFabric, sheetWidth }) => { const { t } = useTranslation(['workbench']) let val = formatMm(sheetWidth, gist.units, 'none') // onChange const update = (evt) => { evt.stopPropagation() let evtVal = evt.target.value // set Val immediately so that the input reflects it val = evtVal let useVal = measurementAsMm(evtVal, gist.units) // only set to the gist if it's valid if (!isNaN(useVal)) { updateGist(['_state', 'layout', 'forCutting', 'fabric', activeFabric, 'sheetWidth'], useVal) } } return ( ) } export const GrainDirectionPicker = ({ grainDirection, activeFabric, updateGist }) => { const { t } = useTranslation(['workbench']) return ( ) } export const useFabricLength = (isImperial, height) => { // regular conversion from mm to inches or cm const unit = isImperial ? 25.4 : 10 // conversion from inches or cm to yards or meters const fabricUnit = isImperial ? 36 : 100 // for fabric, these divisions are granular enough const rounder = isImperial ? 16 : 10 // we convert the used fabric height to the right units so we can round it const inFabricUnits = height / (fabricUnit * unit) // we multiply it by the rounder, round it up, then divide by the rounder again to get the rounded amount const roundCount = Math.ceil(rounder * inFabricUnits) / rounder // format as a fraction for imperial, a decimal for metric const count = isImperial ? formatFraction128(roundCount, 'none') : round(roundCount, 1) return `${count}${isImperial ? 'yds' : 'm'}` } export const CutLayoutSettings = ({ gist, patternProps, unsetGist, updateGist, activeFabric, sheetWidth, grainDirection, }) => { const { t } = useTranslation(['workbench']) const fabricLength = useFabricLength(gist.units === 'imperial', patternProps.height) return (
{fabricLength}
) }