📄 index.ts¶
📊 Analysis Summary¶
| Metric | Count |
|---|---|
| 🔧 Functions | 9 |
| 📦 Imports | 16 |
| 📊 Variables & Constants | 2 |
| 🟢 Vue Composition API | 2 |
| 📐 Interfaces | 1 |
| 📑 Type Aliases | 1 |
📚 Table of Contents¶
🛠️ File Location:¶
📂 packages/integrations/useDrauu/index.ts
📦 Imports¶
| Name | Source |
|---|---|
EventHookOn |
@vueuse/core |
MaybeComputedElementRef |
@vueuse/core |
Fn |
@vueuse/shared |
Brush |
drauu |
Drauu |
drauu |
DrawingMode |
drauu |
Options |
drauu |
Ref |
vue |
ShallowRef |
vue |
createEventHook |
@vueuse/core |
unrefElement |
@vueuse/core |
tryOnScopeDispose |
@vueuse/shared |
createDrauu |
drauu |
deepRef |
vue |
shallowRef |
vue |
watch |
vue |
Variables & Constants¶
| Name | Type | Kind | Value | Exported |
|---|---|---|---|---|
disposables |
Fn[] |
let/var | [] |
✗ |
instance |
any |
const | drauuInstance.value |
✗ |
Vue Composition API¶
| Name | Type | Reactive Variables | Composables |
|---|---|---|---|
watch |
watch | none | none |
watch |
watch | none | none |
Functions¶
useDrauu(target: MaybeComputedElementRef, options: UseDrauuOptions): UseDrauuReturn¶
Code
export function useDrauu(
target: MaybeComputedElementRef,
options?: UseDrauuOptions,
): UseDrauuReturn {
const drauuInstance = deepRef<Drauu>()
let disposables: Fn[] = []
const onChangedHook = createEventHook<void>()
const onCanceledHook = createEventHook<void>()
const onCommittedHook = createEventHook<SVGElement | undefined>()
const onStartHook = createEventHook<void>()
const onEndHook = createEventHook<void>()
const canUndo = shallowRef(false)
const canRedo = shallowRef(false)
const altPressed = shallowRef(false)
const shiftPressed = shallowRef(false)
const brush = deepRef<Brush>({
color: 'black',
size: 3,
arrowEnd: false,
cornerRadius: 0,
dasharray: undefined,
fill: 'transparent',
mode: 'draw',
...options?.brush,
})
watch(brush, () => {
const instance = drauuInstance.value
if (instance) {
instance.brush = brush.value
instance.mode = brush.value.mode as DrawingMode
}
}, { deep: true })
const undo = () => drauuInstance.value?.undo()
const redo = () => drauuInstance.value?.redo()
const clear = () => drauuInstance.value?.clear()
const cancel = () => drauuInstance.value?.cancel()
const load = (svg: string) => drauuInstance.value?.load(svg)
const dump = () => drauuInstance.value?.dump()
const cleanup = () => {
disposables.forEach(dispose => dispose())
drauuInstance.value?.unmount()
}
const syncStatus = () => {
if (drauuInstance.value) {
canUndo.value = drauuInstance.value.canUndo()
canRedo.value = drauuInstance.value.canRedo()
altPressed.value = drauuInstance.value.altPressed
shiftPressed.value = drauuInstance.value.shiftPressed
}
}
watch(
() => unrefElement(target),
(el) => {
if (!el || typeof SVGSVGElement === 'undefined' || !(el instanceof SVGSVGElement))
return
if (drauuInstance.value)
cleanup()
drauuInstance.value = createDrauu({ el, ...options })
syncStatus()
disposables = [
drauuInstance.value.on('canceled', () => onCanceledHook.trigger()),
drauuInstance.value.on('committed', (node: SVGElement | undefined) => onCommittedHook.trigger(node)),
drauuInstance.value.on('start', () => onStartHook.trigger()),
drauuInstance.value.on('end', () => onEndHook.trigger()),
drauuInstance.value.on('changed', () => {
syncStatus()
onChangedHook.trigger()
}),
]
},
{ flush: 'post' },
)
tryOnScopeDispose(() => cleanup())
return {
drauuInstance,
load,
dump,
clear,
cancel,
undo,
redo,
canUndo,
canRedo,
brush,
onChanged: onChangedHook.on,
onCommitted: onCommittedHook.on,
onStart: onStartHook.on,
onEnd: onEndHook.on,
onCanceled: onCanceledHook.on,
}
}
-
JSDoc:
-
Parameters:
target: MaybeComputedElementRefoptions: UseDrauuOptions- Return Type:
UseDrauuReturn - Calls:
deepRef (from vue)createEventHook (from @vueuse/core)shallowRef (from vue)watch (from vue)drauuInstance.value?.undodrauuInstance.value?.redodrauuInstance.value?.cleardrauuInstance.value?.canceldrauuInstance.value?.loaddrauuInstance.value?.dumpdisposables.forEachdisposedrauuInstance.value?.unmountdrauuInstance.value.canUndodrauuInstance.value.canRedounrefElement (from @vueuse/core)cleanupcreateDrauu (from drauu)syncStatusdrauuInstance.value.ononCanceledHook.triggeronCommittedHook.triggeronStartHook.triggeronEndHook.triggeronChangedHook.triggertryOnScopeDispose (from @vueuse/shared)
undo(): any¶
- Return Type:
any - Calls:
drauuInstance.value?.undo
redo(): any¶
- Return Type:
any - Calls:
drauuInstance.value?.redo
clear(): any¶
- Return Type:
any - Calls:
drauuInstance.value?.clear
cancel(): any¶
- Return Type:
any - Calls:
drauuInstance.value?.cancel
load(svg: string): any¶
- Parameters:
svg: string- Return Type:
any - Calls:
drauuInstance.value?.load
dump(): any¶
- Return Type:
any - Calls:
drauuInstance.value?.dump
cleanup(): void¶
- Return Type:
void - Calls:
disposables.forEachdisposedrauuInstance.value?.unmount
syncStatus(): void¶
Code
- Return Type:
void - Calls:
drauuInstance.value.canUndodrauuInstance.value.canRedo
Interfaces¶
UseDrauuReturn¶
Interface Code
export interface UseDrauuReturn {
drauuInstance: Ref<Drauu | undefined>
load: (svg: string) => void
dump: () => string | undefined
clear: () => void
cancel: () => void
undo: () => boolean | undefined
redo: () => boolean | undefined
canUndo: ShallowRef<boolean>
canRedo: ShallowRef<boolean>
brush: Ref<Brush>
onChanged: EventHookOn
onCommitted: EventHookOn
onStart: EventHookOn
onEnd: EventHookOn
onCanceled: EventHookOn
}
Properties¶
| Name | Type | Optional | Description |
|---|---|---|---|
drauuInstance |
Ref<Drauu | undefined> |
✗ | |
load |
(svg: string) => void |
✗ | |
dump |
() => string | undefined |
✗ | |
clear |
() => void |
✗ | |
cancel |
() => void |
✗ | |
undo |
() => boolean | undefined |
✗ | |
redo |
() => boolean | undefined |
✗ | |
canUndo |
ShallowRef<boolean> |
✗ | |
canRedo |
ShallowRef<boolean> |
✗ | |
brush |
Ref<Brush> |
✗ | |
onChanged |
EventHookOn |
✗ | |
onCommitted |
EventHookOn |
✗ | |
onStart |
EventHookOn |
✗ | |
onEnd |
EventHookOn |
✗ | |
onCanceled |
EventHookOn |
✗ |