From 36c7b68b6a883cce756f44fbb2612fe4cb29c6e1 Mon Sep 17 00:00:00 2001 From: "Samuel M. Bednarz" Date: Sun, 4 Feb 2024 15:02:35 +0100 Subject: [PATCH] observer cleanup --- packages/dye/components/DyePicker.vue | 41 +++++-------------------- packages/dye/components/DyeWrapper.vue | 42 ++++++++++++++++++++++++++ packages/dye/composables/canvas.ts | 15 +++------ 3 files changed, 54 insertions(+), 44 deletions(-) create mode 100644 packages/dye/components/DyeWrapper.vue diff --git a/packages/dye/components/DyePicker.vue b/packages/dye/components/DyePicker.vue index c5f634c..c9cd847 100644 --- a/packages/dye/components/DyePicker.vue +++ b/packages/dye/components/DyePicker.vue @@ -9,6 +9,7 @@ import { OutputColor, useColorCanvas } from '../composables/canvas' import Pallet from './Pallet.vue' import ColorCanvas from './Canvas/ColorCanvas.vue' import HueCanvas from './Canvas/HueCanvas.vue' +import DyeWrapper from './DyeWrapper.vue' interface Dye { name: string @@ -23,13 +24,11 @@ const emit = defineEmits<{ interface DyeProps { default?: string compact?: boolean - compactSize?: number } const props = withDefaults(defineProps(), { default: '#ff0000', - compact: false, - compactSize: 50 + compact: false }) const color = ref({ @@ -42,15 +41,16 @@ const pickerRef = ref(null) function paintComponent(background: string) { if (!pickerRef.value) return + console.log('lolers', pickerRef.value) umbra({ background }).apply({ target: pickerRef.value }) } onMounted(() => paintComponent(color.value.hex)) function change(dye: OutputColor) { - color.value = dye if (dye.mounted) return + color.value = dye paintComponent(dye.hex) emit('change', { @@ -61,16 +61,10 @@ function change(dye: OutputColor) { } const compact = ref(props.compact) -const compactSize = ref(props.compactSize) diff --git a/packages/dye/composables/canvas.ts b/packages/dye/composables/canvas.ts index 4c2ad17..cfa5aed 100644 --- a/packages/dye/composables/canvas.ts +++ b/packages/dye/composables/canvas.ts @@ -1,5 +1,5 @@ import { useMousePressed, useMouse } from '@vueuse/core' -import { computed, watch, ref, Ref, onMounted } from 'vue' +import { computed, watch, ref, Ref, onMounted, onUnmounted } from 'vue' import { rgbToHex, clamp } from './utils' export interface OutputColor extends HexType { @@ -99,13 +99,6 @@ export function outsideCanvas({ canvas, updateCanvas }: OCP) { return { mouseOn, clampedPos } } -function observeCanvas(el: RefCanvas, onResize: () => void) { - if (!el.value) return - if (!ResizeObserver) return - const observer = new ResizeObserver(() => onResize()) - observer.observe(el.value) -} - interface RCP { canvas: RefCanvas updateCanvas: () => void @@ -116,6 +109,8 @@ export function responsiveCanvas({ canvas, updateCanvas }: RCP) { const width = ref(size) const height = ref(size) + const observer = new ResizeObserver(() => setCanvas()) + function setCanvas() { const box = canvas.value?.getBoundingClientRect() width.value = box?.width || size @@ -125,11 +120,11 @@ export function responsiveCanvas({ canvas, updateCanvas }: RCP) { onMounted(() => { if (!canvas.value) return - observeCanvas(canvas, setCanvas) + observer.observe(canvas.value) setCanvas() }) - //look into unmounting the observer + onUnmounted(() => observer.disconnect()) return { width, height } }