diff --git a/src/components/App.vue b/src/components/App.vue
index 465eb2f..d5abf39 100644
--- a/src/components/App.vue
+++ b/src/components/App.vue
@@ -38,6 +38,7 @@ const testNumber = ref(Math.PI)
const testBoolean = ref(false)
const testAlign = ref<'left' | 'center' | 'right'>('left')
const colorSpace = ref<'r|g|b' | 'svh' | 'hsv' | 'hvs' | 'hsvr'>('hsv')
+const cubicBezier = ref([0, 0.5, 0.5, 1] as const)
// interface PaperDesc {
// id?: string
@@ -438,6 +439,9 @@ window.addEventListener('drop', async e => {
+
+
+
diff --git a/src/tweeq/FloatingPane/FloatingPane.vue b/src/tweeq/FloatingPane/FloatingPane.vue
index 6e3fc79..27ace6b 100644
--- a/src/tweeq/FloatingPane/FloatingPane.vue
+++ b/src/tweeq/FloatingPane/FloatingPane.vue
@@ -243,6 +243,7 @@ onMounted(() => {
right 0
bottom 0
left 0
+ overflow hidden
&:has(.resize:hover)
border-color var(--tq-color-primary)
diff --git a/src/tweeq/InputCubicBezier/InputCubicBezier.vue b/src/tweeq/InputCubicBezier/InputCubicBezier.vue
index cfa0db6..e00a094 100644
--- a/src/tweeq/InputCubicBezier/InputCubicBezier.vue
+++ b/src/tweeq/InputCubicBezier/InputCubicBezier.vue
@@ -1,40 +1,18 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/src/tweeq/InputCubicBezier/index.ts b/src/tweeq/InputCubicBezier/index.ts
index 90dfab4..893796b 100644
--- a/src/tweeq/InputCubicBezier/index.ts
+++ b/src/tweeq/InputCubicBezier/index.ts
@@ -1,3 +1,4 @@
import InputCubicBezier from './InputCubicBezier.vue'
+import InputCubicBezierPicker from './InputCubicBezierPicker.vue'
-export default InputCubicBezier
+export {InputCubicBezier, InputCubicBezierPicker}
diff --git a/src/tweeq/InputCubicBezier/types.ts b/src/tweeq/InputCubicBezier/types.ts
deleted file mode 100644
index c6691a2..0000000
--- a/src/tweeq/InputCubicBezier/types.ts
+++ /dev/null
@@ -1 +0,0 @@
-export type CubicBezier = [number, number, number, number]
diff --git a/src/tweeq/InputCubicBezier/util.ts b/src/tweeq/InputCubicBezier/util.ts
new file mode 100644
index 0000000..0b8e001
--- /dev/null
+++ b/src/tweeq/InputCubicBezier/util.ts
@@ -0,0 +1 @@
+export type CubicBezierValue = readonly [number, number, number, number]
diff --git a/src/tweeq/InputNumber/InputNumber.vue b/src/tweeq/InputNumber/InputNumber.vue
index 257d45c..9106620 100644
--- a/src/tweeq/InputNumber/InputNumber.vue
+++ b/src/tweeq/InputNumber/InputNumber.vue
@@ -2,7 +2,7 @@
import {useElementBounding, useFocus, useKeyModifier} from '@vueuse/core'
import {useWheel} from '@vueuse/gesture'
import {scalar, Vec2} from 'linearly'
-import {computed, ref, watch, watchEffect} from 'vue'
+import {computed, ref, watch} from 'vue'
import {useDrag} from '../useDrag'
import {toFixed, unsignedMod} from '../util'
@@ -222,11 +222,16 @@ const onBlur = () => {
}
}
-watchEffect(() => {
- if (tweaking.value) {
- display.value = props.modelValue.toFixed(tweakPrecision.value)
+watch(
+ () => [props.modelValue, tweaking.value, tweakPrecision.value] as const,
+ ([modelValue, tweaking]) => {
+ if (tweaking) {
+ display.value = modelValue.toFixed(tweakPrecision.value)
+ } else {
+ display.value = toFixed(modelValue, props.precision)
+ }
}
-})
+)
const scaleOffset = ref(0)
diff --git a/src/tweeq/InputRotery/InputRotery.vue b/src/tweeq/InputRotery/InputRotery.vue
index 0056bb2..9ebf444 100644
--- a/src/tweeq/InputRotery/InputRotery.vue
+++ b/src/tweeq/InputRotery/InputRotery.vue
@@ -1,5 +1,4 @@