Files
ComfyUI_frontend/src/components/maskeditor/PointerZone.vue
Christian Byrne ef4e4a69d5 fix: enable enforce-consistent-class-order tailwind lint rule (#9428)
## Summary

Enable `better-tailwindcss/enforce-consistent-class-order` lint rule and
auto-fix all 1027 violations across 263 files. Stacked on #9427.

## Changes

- **What**: Sort Tailwind classes into consistent order via `eslint
--fix`
- Enable `enforce-consistent-class-order` as `'error'` in eslint config
- Purely cosmetic reordering — no behavioral or visual changes

## Review Focus

Mechanical auto-fix PR — all changes are class reordering only. This is
the largest diff but lowest risk since it changes no class names, only
their order.

**Stack:** #9417#9427 → **this PR**

Fixes #9300 (partial — 3 of 3 rules)

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-9428-fix-enable-enforce-consistent-class-order-tailwind-lint-rule-31a6d73d3650811c9065f5178ba3e724)
by [Unito](https://www.unito.io)
2026-03-05 17:24:34 -08:00

96 lines
2.3 KiB
Vue

<template>
<div
ref="pointerZoneRef"
class="h-full w-[calc(100%-4rem-220px)]"
@pointerdown="handlePointerDown"
@pointermove="handlePointerMove"
@pointerup="handlePointerUp"
@pointerleave="handlePointerLeave"
@pointerenter="handlePointerEnter"
@touchstart="handleTouchStart"
@touchmove="handleTouchMove"
@touchend="handleTouchEnd"
@wheel="handleWheel"
@contextmenu.prevent
/>
</template>
<script setup lang="ts">
import { onMounted, ref, watch } from 'vue'
import type { usePanAndZoom } from '@/composables/maskeditor/usePanAndZoom'
import type { useToolManager } from '@/composables/maskeditor/useToolManager'
import { useMaskEditorStore } from '@/stores/maskEditorStore'
const { toolManager, panZoom } = defineProps<{
toolManager: ReturnType<typeof useToolManager>
panZoom: ReturnType<typeof usePanAndZoom>
}>()
const store = useMaskEditorStore()
const pointerZoneRef = ref<HTMLDivElement>()
onMounted(() => {
if (!pointerZoneRef.value) {
console.error('[PointerZone] Pointer zone ref not initialized')
return
}
store.pointerZone = pointerZoneRef.value
})
watch(
() => store.isPanning,
(isPanning) => {
if (!pointerZoneRef.value) return
if (isPanning) {
pointerZoneRef.value.style.cursor = 'grabbing'
} else {
toolManager.updateCursor()
}
}
)
const handlePointerDown = async (event: PointerEvent) => {
await toolManager.handlePointerDown(event)
}
const handlePointerMove = async (event: PointerEvent) => {
await toolManager.handlePointerMove(event)
}
const handlePointerUp = (event: PointerEvent) => {
void toolManager.handlePointerUp(event)
}
const handlePointerLeave = () => {
store.brushVisible = false
if (pointerZoneRef.value) {
pointerZoneRef.value.style.cursor = ''
}
}
const handlePointerEnter = () => {
toolManager.updateCursor()
}
const handleTouchStart = (event: TouchEvent) => {
panZoom.handleTouchStart(event)
}
const handleTouchMove = async (event: TouchEvent) => {
await panZoom.handleTouchMove(event)
}
const handleTouchEnd = (event: TouchEvent) => {
panZoom.handleTouchEnd(event)
}
const handleWheel = async (event: WheelEvent) => {
await panZoom.zoom(event)
const newCursorPoint = { x: event.clientX, y: event.clientY }
panZoom.updateCursorPosition(newCursorPoint)
}
</script>