@rb-games/core 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/chunk-5BLUF2HG.js +25 -0
  2. package/dist/chunk-5BLUF2HG.js.map +1 -0
  3. package/dist/chunk-DOHQE2YZ.js +392 -0
  4. package/dist/chunk-DOHQE2YZ.js.map +1 -0
  5. package/dist/chunk-FOZO6TLY.js +673 -0
  6. package/dist/chunk-FOZO6TLY.js.map +1 -0
  7. package/dist/chunk-G3PMV62Z.js +33 -0
  8. package/dist/chunk-G3PMV62Z.js.map +1 -0
  9. package/dist/chunk-KOHCRCV3.js +490 -0
  10. package/dist/chunk-KOHCRCV3.js.map +1 -0
  11. package/dist/chunk-MI6BP7A6.js +11 -0
  12. package/dist/chunk-MI6BP7A6.js.map +1 -0
  13. package/dist/chunk-NQMORMNP.js +15 -0
  14. package/dist/chunk-NQMORMNP.js.map +1 -0
  15. package/dist/chunk-RAEOBW6E.js +133 -0
  16. package/dist/chunk-RAEOBW6E.js.map +1 -0
  17. package/dist/chunk-UE7T7Z45.js +884 -0
  18. package/dist/chunk-UE7T7Z45.js.map +1 -0
  19. package/dist/devtools/index.js +2 -882
  20. package/dist/devtools/index.js.map +1 -1
  21. package/dist/engine/index.js +6 -1267
  22. package/dist/engine/index.js.map +1 -1
  23. package/dist/filters/index.js +1 -1
  24. package/dist/helpers/index.js +6 -35
  25. package/dist/helpers/index.js.map +1 -1
  26. package/dist/i18n/index.js +4 -525
  27. package/dist/i18n/index.js.map +1 -1
  28. package/dist/layout/index.js +2 -671
  29. package/dist/layout/index.js.map +1 -1
  30. package/dist/particle/index.js +1 -6
  31. package/dist/particle/index.js.map +1 -1
  32. package/dist/plugins/Plugin.types.d.ts +4 -2
  33. package/dist/plugins/Plugin.types.d.ts.map +1 -1
  34. package/dist/plugins/index.js +6 -521
  35. package/dist/plugins/index.js.map +1 -1
  36. package/dist/state-machine/index.js +1 -1
  37. package/dist/store/index.js +1 -1
  38. package/dist/ui/index.js +5 -531
  39. package/dist/ui/index.js.map +1 -1
  40. package/dist/utils/index.js +4 -897
  41. package/dist/utils/index.js.map +1 -1
  42. package/dist/vite/index.js +1 -1
  43. package/package.json +3 -15
@@ -1 +1 @@
1
- {"version":3,"sources":["../../devtools/DraggableController.ts","../../devtools/ResizableController.ts","../../devtools/treePlugin.ts","../../devtools/overlayPlugin.ts","../../devtools/spriteTextPropertiesPlugin.ts","../../devtools/spinePropertiesPlugin.ts","../../devtools/index.ts"],"names":["_a","SECTION"],"mappings":"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","file":"index.js","sourcesContent":["import type { Container, FederatedPointerEvent } from 'pixi.js';\n\nexport interface DraggableContainer extends Container {\n __draggable?: boolean;\n __dragging?: boolean;\n}\n\ninterface DragState {\n offsetX: number;\n offsetY: number;\n}\n\nconst dragStates = new WeakMap<Container, DragState>();\nconst originalEventModes = new WeakMap<Container, string>();\nconst originalCursors = new WeakMap<Container, string>();\n\nfunction onDragStart(this: DraggableContainer, e: FederatedPointerEvent) {\n if (!this.__draggable) return;\n\n this.__dragging = true;\n this.cursor = 'grabbing';\n\n const parent = this.parent;\n if (!parent) return;\n\n const localPos = parent.toLocal(e.global);\n\n dragStates.set(this, {\n offsetX: localPos.x - this.x,\n offsetY: localPos.y - this.y,\n });\n\n e.stopPropagation();\n}\n\nfunction onDragMove(this: DraggableContainer, e: FederatedPointerEvent) {\n if (!this.__dragging) return;\n\n const state = dragStates.get(this);\n if (!state) return;\n\n const parent = this.parent;\n if (!parent) return;\n\n const localPos = parent.toLocal(e.global);\n\n this.x = localPos.x - state.offsetX;\n this.y = localPos.y - state.offsetY;\n}\n\nfunction onDragEnd(this: DraggableContainer) {\n if (!this.__dragging) return;\n\n this.__dragging = false;\n this.cursor = 'grab';\n dragStates.delete(this);\n}\n\nexport function enableDrag(container: DraggableContainer): void {\n originalEventModes.set(container, container.eventMode as string);\n originalCursors.set(container, container.cursor as string);\n\n container.eventMode = 'static';\n container.cursor = 'grab';\n\n container.on('pointerdown', onDragStart, container);\n container.on('globalpointermove', onDragMove, container);\n container.on('pointerup', onDragEnd, container);\n container.on('pointerupoutside', onDragEnd, container);\n}\n\nexport function disableDrag(container: DraggableContainer): void {\n container.off('pointerdown', onDragStart, container);\n container.off('globalpointermove', onDragMove, container);\n container.off('pointerup', onDragEnd, container);\n container.off('pointerupoutside', onDragEnd, container);\n\n const originalMode = originalEventModes.get(container);\n if (originalMode !== undefined) {\n container.eventMode = originalMode as Container['eventMode'];\n }\n\n const originalCursor = originalCursors.get(container);\n if (originalCursor !== undefined) {\n container.cursor = originalCursor;\n }\n\n container.__dragging = false;\n dragStates.delete(container);\n originalEventModes.delete(container);\n originalCursors.delete(container);\n}\n\nexport function isDraggable(container: DraggableContainer): boolean {\n return container.__draggable === true;\n}\n\nexport function isDragging(container: DraggableContainer): boolean {\n return container.__dragging === true;\n}\n","import type { Container } from 'pixi.js';\n\nexport interface ResizableContainer extends Container {\n __resizable?: boolean;\n __resizing?: boolean;\n __resizeOverlay?: ResizeOverlay;\n}\n\ntype HandlePosition = 'nw' | 'n' | 'ne' | 'e' | 'se' | 's' | 'sw' | 'w';\n\ninterface ResizeState {\n handle: HandlePosition;\n startX: number;\n startY: number;\n startScaleX: number;\n startScaleY: number;\n startPosX: number;\n startPosY: number;\n startBounds: { width: number; height: number };\n}\n\ninterface ResizeOverlay {\n container: HTMLDivElement;\n handles: Map<HandlePosition, HTMLDivElement>;\n border: HTMLDivElement;\n animationId: number | null;\n}\n\nconst resizeStates = new WeakMap<Container, ResizeState>();\nconst HANDLE_SIZE = 10;\n\nconst cursors: Record<HandlePosition, string> = {\n nw: 'nwse-resize',\n n: 'ns-resize',\n ne: 'nesw-resize',\n e: 'ew-resize',\n se: 'nwse-resize',\n s: 'ns-resize',\n sw: 'nesw-resize',\n w: 'ew-resize',\n};\n\nfunction getCanvasElement(container: Container): HTMLCanvasElement | null {\n try {\n const renderer = (container as any).__pixiApp?.renderer ??\n (globalThis as any).__PIXI_APP__?.renderer;\n if (renderer?.canvas) return renderer.canvas;\n\n // Fallback: find canvas in DOM\n return document.querySelector('canvas');\n } catch {\n return document.querySelector('canvas');\n }\n}\n\nfunction createOverlayContainer(canvas: HTMLCanvasElement): HTMLDivElement {\n const div = document.createElement('div');\n div.className = '__pixi_resize_overlay__';\n div.style.cssText = `\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 10000;\n `;\n\n // Insert after canvas\n canvas.parentElement?.appendChild(div);\n\n return div;\n}\n\nfunction createBorderDiv(): HTMLDivElement {\n const div = document.createElement('div');\n div.style.cssText = `\n position: absolute;\n border: 2px dashed #00aaff;\n pointer-events: none;\n box-sizing: border-box;\n `;\n return div;\n}\n\nfunction createHandleDiv(pos: HandlePosition): HTMLDivElement {\n const div = document.createElement('div');\n div.dataset.handle = pos;\n div.style.cssText = `\n position: absolute;\n width: ${HANDLE_SIZE}px;\n height: ${HANDLE_SIZE}px;\n background: #00aaff;\n border: 1px solid white;\n border-radius: 2px;\n cursor: ${cursors[pos]};\n pointer-events: auto;\n transform: translate(-50%, -50%);\n transition: background 0.1s;\n `;\n\n div.addEventListener('mouseenter', () => {\n div.style.background = '#ff6600';\n });\n\n div.addEventListener('mouseleave', () => {\n div.style.background = '#00aaff';\n });\n\n return div;\n}\n\nfunction createResizeOverlay(container: ResizableContainer, canvas: HTMLCanvasElement): ResizeOverlay {\n const overlayContainer = createOverlayContainer(canvas);\n const border = createBorderDiv();\n overlayContainer.appendChild(border);\n\n const handles = new Map<HandlePosition, HTMLDivElement>();\n const positions: HandlePosition[] = ['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w'];\n\n positions.forEach((pos) => {\n const handle = createHandleDiv(pos);\n handles.set(pos, handle);\n overlayContainer.appendChild(handle);\n\n handle.addEventListener('pointerdown', (e) => {\n e.preventDefault();\n e.stopPropagation();\n onResizeStart(container, pos, e);\n });\n });\n\n return {\n container: overlayContainer,\n handles,\n border,\n animationId: null,\n };\n}\n\nfunction updateOverlayPositions(container: ResizableContainer, canvas: HTMLCanvasElement): void {\n const overlay = container.__resizeOverlay;\n if (!overlay) return;\n\n const bounds = container.getBounds();\n const canvasRect = canvas.getBoundingClientRect();\n\n // Calculate position relative to canvas\n const renderer = (globalThis as any).__PIXI_APP__?.renderer ??\n (container as any).__pixiApp?.renderer;\n\n let scaleX = 1;\n let scaleY = 1;\n\n if (renderer) {\n scaleX = canvasRect.width / renderer.width;\n scaleY = canvasRect.height / renderer.height;\n }\n\n const x = bounds.x * scaleX;\n const y = bounds.y * scaleY;\n const w = bounds.width * scaleX;\n const h = bounds.height * scaleY;\n\n // Update border\n overlay.border.style.left = `${x}px`;\n overlay.border.style.top = `${y}px`;\n overlay.border.style.width = `${w}px`;\n overlay.border.style.height = `${h}px`;\n\n // Update handles\n const handlePositions: Record<HandlePosition, { x: number; y: number }> = {\n nw: { x: x, y: y },\n n: { x: x + w / 2, y: y },\n ne: { x: x + w, y: y },\n e: { x: x + w, y: y + h / 2 },\n se: { x: x + w, y: y + h },\n s: { x: x + w / 2, y: y + h },\n sw: { x: x, y: y + h },\n w: { x: x, y: y + h / 2 },\n };\n\n overlay.handles.forEach((handle, pos) => {\n const { x: hx, y: hy } = handlePositions[pos];\n handle.style.left = `${hx}px`;\n handle.style.top = `${hy}px`;\n });\n}\n\nfunction startUpdateLoop(container: ResizableContainer, canvas: HTMLCanvasElement): void {\n const overlay = container.__resizeOverlay;\n if (!overlay) return;\n\n const update = () => {\n if (!container.__resizable || !container.__resizeOverlay) return;\n updateOverlayPositions(container, canvas);\n overlay.animationId = requestAnimationFrame(update);\n };\n\n overlay.animationId = requestAnimationFrame(update);\n}\n\nfunction stopUpdateLoop(overlay: ResizeOverlay): void {\n if (overlay.animationId !== null) {\n cancelAnimationFrame(overlay.animationId);\n overlay.animationId = null;\n }\n}\n\nfunction onResizeStart(container: ResizableContainer, handle: HandlePosition, e: PointerEvent): void {\n if (!container.__resizable) return;\n\n container.__resizing = true;\n\n const bounds = container.getLocalBounds();\n\n resizeStates.set(container, {\n handle,\n startX: e.clientX,\n startY: e.clientY,\n startScaleX: container.scale.x,\n startScaleY: container.scale.y,\n startPosX: container.x,\n startPosY: container.y,\n startBounds: { width: bounds.width, height: bounds.height },\n });\n\n const onMove = (moveEvent: PointerEvent) => {\n onResizeMove(container, moveEvent);\n };\n\n const onUp = () => {\n onResizeEnd(container);\n document.removeEventListener('pointermove', onMove);\n document.removeEventListener('pointerup', onUp);\n };\n\n document.addEventListener('pointermove', onMove);\n document.addEventListener('pointerup', onUp);\n}\n\nfunction onResizeMove(container: ResizableContainer, e: PointerEvent): void {\n const state = resizeStates.get(container);\n if (!state || !container.__resizing) return;\n\n const dx = e.clientX - state.startX;\n const dy = e.clientY - state.startY;\n\n const baseWidth = state.startBounds.width;\n const baseHeight = state.startBounds.height;\n const startWidth = baseWidth * state.startScaleX;\n const startHeight = baseHeight * state.startScaleY;\n\n let newScaleX = state.startScaleX;\n let newScaleY = state.startScaleY;\n let newX = state.startPosX;\n let newY = state.startPosY;\n\n switch (state.handle) {\n case 'e':\n newScaleX = (startWidth + dx) / baseWidth;\n break;\n case 'w':\n newScaleX = (startWidth - dx) / baseWidth;\n newX = state.startPosX + dx;\n break;\n case 's':\n newScaleY = (startHeight + dy) / baseHeight;\n break;\n case 'n':\n newScaleY = (startHeight - dy) / baseHeight;\n newY = state.startPosY + dy;\n break;\n case 'se':\n newScaleX = (startWidth + dx) / baseWidth;\n newScaleY = (startHeight + dy) / baseHeight;\n break;\n case 'sw':\n newScaleX = (startWidth - dx) / baseWidth;\n newScaleY = (startHeight + dy) / baseHeight;\n newX = state.startPosX + dx;\n break;\n case 'ne':\n newScaleX = (startWidth + dx) / baseWidth;\n newScaleY = (startHeight - dy) / baseHeight;\n newY = state.startPosY + dy;\n break;\n case 'nw':\n newScaleX = (startWidth - dx) / baseWidth;\n newScaleY = (startHeight - dy) / baseHeight;\n newX = state.startPosX + dx;\n newY = state.startPosY + dy;\n break;\n }\n\n // Minimum scale limit\n if (newScaleX > 0.1) {\n container.scale.x = newScaleX;\n container.x = newX;\n }\n if (newScaleY > 0.1) {\n container.scale.y = newScaleY;\n container.y = newY;\n }\n}\n\nfunction onResizeEnd(container: ResizableContainer): void {\n container.__resizing = false;\n resizeStates.delete(container);\n}\n\nexport function enableResize(container: ResizableContainer): void {\n if (container.__resizeOverlay) return;\n\n const canvas = getCanvasElement(container);\n if (!canvas) {\n console.warn('[ResizableController] Canvas not found');\n return;\n }\n\n const overlay = createResizeOverlay(container, canvas);\n container.__resizeOverlay = overlay;\n\n updateOverlayPositions(container, canvas);\n startUpdateLoop(container, canvas);\n}\n\nexport function disableResize(container: ResizableContainer): void {\n const overlay = container.__resizeOverlay;\n if (overlay) {\n stopUpdateLoop(overlay);\n overlay.container.remove();\n container.__resizeOverlay = undefined;\n }\n container.__resizing = false;\n resizeStates.delete(container);\n}\n\nexport function isResizable(container: ResizableContainer): boolean {\n return container.__resizable === true;\n}\n\nexport function isResizing(container: ResizableContainer): boolean {\n return container.__resizing === true;\n}\n","import type { Container } from 'pixi.js';\nimport type { PixiMetadata, TreeExtension } from '@pixi/devtools';\nimport { enableDrag, disableDrag, type DraggableContainer } from './DraggableController';\nimport { enableResize, disableResize, type ResizableContainer } from './ResizableController';\n\nexport interface TransformableContainer extends DraggableContainer, ResizableContainer { }\n\nexport const draggableTreePlugin: TreeExtension = {\n extension: {\n name: 'draggable-tree',\n type: 'sceneTree',\n },\n updateNodeMetadata(node: TransformableContainer, metadata: PixiMetadata) {\n // Drag toggle button\n metadata.buttons!.push({\n name: 'drag',\n icon: '✋',\n type: 'toggle',\n value: node.__draggable ?? false,\n });\n\n // Resize toggle button\n metadata.buttons!.push({\n name: 'resize',\n icon: '⤡',\n type: 'toggle',\n value: node.__resizable ?? false,\n });\n\n // Suffix indicators\n const suffixes: string[] = [];\n if (node.__draggable) suffixes.push('🔀');\n if (node.__resizable) suffixes.push('📐');\n\n if (suffixes.length > 0) {\n metadata.suffix = (metadata.suffix ?? '') + ' ' + suffixes.join('');\n }\n\n return metadata;\n },\n onButtonPress(container: TransformableContainer, buttonName: string, pressed?: boolean) {\n if (buttonName === 'drag') {\n container.__draggable = pressed;\n if (pressed) {\n enableDrag(container);\n } else {\n disableDrag(container);\n }\n } else if (buttonName === 'resize') {\n container.__resizable = pressed;\n if (pressed) {\n enableResize(container);\n } else {\n disableResize(container);\n }\n }\n },\n};\n","import type { Container } from 'pixi.js';\nimport type { OverlayExtension } from '@pixi/devtools';\nimport { isDragging, type DraggableContainer } from './DraggableController';\nimport { isResizing, type ResizableContainer } from './ResizableController';\n\ntype TransformableNode = DraggableContainer & ResizableContainer;\n\n// Default DevTools styles (from pixijs/devtools overlayExtension.ts)\nconst defaultSelectedStyle: Partial<CSSStyleDeclaration> = {\n backgroundColor: 'hsla(340, 70%, 44%, 0.35)',\n border: '1px solid hsla(0, 0%, 100%, 0.5)',\n};\n\nconst defaultHoverStyle: Partial<CSSStyleDeclaration> = {\n backgroundColor: 'hsla(192, 84%, 40%, 0.40)',\n border: '1px solid hsla(0, 0%, 100%, 0.5)',\n};\n\nexport const draggableOverlayPlugin: OverlayExtension = {\n extension: {\n name: 'draggable-overlay',\n type: 'overlay',\n },\n getSelectedStyle(node: Container | null) {\n const n = node as TransformableNode | null;\n\n // Dragging state - orange dashed\n if (n && isDragging(n)) {\n return {\n backgroundColor: 'rgba(255, 165, 0, 0.3)',\n border: '2px dashed orange',\n };\n }\n\n // Resizing state - orange dashed\n if (n && isResizing(n)) {\n return {\n backgroundColor: 'rgba(255, 165, 0, 0.3)',\n border: '2px dashed orange',\n };\n }\n\n // Draggable/Resizable enabled - orange solid\n if (n && (n.__draggable || n.__resizable)) {\n return {\n backgroundColor: 'rgba(255, 165, 0, 0.2)',\n border: '2px solid orange',\n };\n }\n\n // Default - return standard DevTools style\n return defaultSelectedStyle;\n },\n getHoverStyle(node: Container | null) {\n const n = node as TransformableNode | null;\n\n // Draggable/Resizable enabled - light orange\n if (n && (n.__draggable || n.__resizable)) {\n return {\n backgroundColor: 'rgba(255, 165, 0, 0.15)',\n border: '1px dashed orange',\n };\n }\n\n // Default - return standard DevTools style\n return defaultHoverStyle;\n },\n};","import type { Container } from 'pixi.js';\nimport type { PropertiesExtension, PropertiesEntry } from '@pixi/devtools';\n\nconst SECTION = 'SpriteText';\n\ninterface SpriteTextLike {\n text: string;\n plainText: string;\n font: string;\n fonts: string[];\n bbcodeEnabled: boolean;\n tint: number;\n fontSize: number;\n pivotHorizontal: string;\n pivotVertical: string;\n lineAlign: string;\n letterSpacing: number;\n spaceWidth: number;\n wordWrap: boolean;\n wordWrapWidth: number;\n breakWord: boolean;\n allowLineBreak: boolean;\n kerningEnabled: boolean;\n curveEnabled: boolean;\n curveControlXPercent: number;\n curveControlYPercent: number;\n}\n\nconst spriteTextProps: string[] = [\n 'spriteText.text',\n 'spriteText.font',\n 'spriteText.tint',\n 'spriteText.fontSize',\n 'spriteText.pivotHorizontal',\n 'spriteText.pivotVertical',\n 'spriteText.lineAlign',\n 'spriteText.letterSpacing',\n 'spriteText.spaceWidth',\n 'spriteText.wordWrap',\n 'spriteText.wordWrapWidth',\n 'spriteText.breakWord',\n 'spriteText.allowLineBreak',\n 'spriteText.kerningEnabled',\n 'spriteText.curveEnabled',\n 'spriteText.curveControlXPercent',\n 'spriteText.curveControlYPercent',\n];\n\nfunction isSpriteText(container: Container): boolean {\n // Check by constructor name or duck typing\n const name = container.constructor.name;\n if (name === 'SpriteText') return true;\n\n // Duck typing fallback\n const c = container as any;\n const isDuck = c._text !== undefined &&\n c._font !== undefined &&\n c._glyphs !== undefined;\n\n if (isDuck) {\n console.log('[SpriteText Plugin] Detected via duck typing:', name);\n }\n\n return isDuck;\n}\n\nexport const spriteTextPropertiesPlugin: PropertiesExtension = {\n extension: {\n type: 'sceneProperties' as any,\n name: 'spritetext-properties',\n priority: 10,\n },\n\n testNode(container: Container): boolean {\n return isSpriteText(container);\n },\n\n testProp(prop: string): boolean {\n return spriteTextProps.includes(prop);\n },\n\n setProperty(container: Container, prop: string, value: any): void {\n const spriteText = container as unknown as SpriteTextLike;\n const propName = prop.replace('spriteText.', '');\n\n switch (propName) {\n case 'text':\n spriteText.text = value;\n break;\n case 'font':\n spriteText.font = value;\n break;\n case 'tint':\n // DevTools sends color as number or hex string\n if (typeof value === 'string') {\n // Convert hex string (#ffffff) to number\n spriteText.tint = parseInt(value.replace('#', ''), 16);\n } else {\n spriteText.tint = value;\n }\n break;\n case 'fontSize':\n spriteText.fontSize = value;\n break;\n case 'pivotHorizontal':\n spriteText.pivotHorizontal = value;\n break;\n case 'pivotVertical':\n spriteText.pivotVertical = value;\n break;\n case 'lineAlign':\n spriteText.lineAlign = value;\n break;\n case 'letterSpacing':\n spriteText.letterSpacing = value;\n break;\n case 'spaceWidth':\n spriteText.spaceWidth = value;\n break;\n case 'wordWrap':\n spriteText.wordWrap = value;\n break;\n case 'wordWrapWidth':\n spriteText.wordWrapWidth = value;\n break;\n case 'breakWord':\n spriteText.breakWord = value;\n break;\n case 'allowLineBreak':\n spriteText.allowLineBreak = value;\n break;\n case 'kerningEnabled':\n spriteText.kerningEnabled = value;\n break;\n case 'curveEnabled':\n spriteText.curveEnabled = value;\n break;\n case 'curveControlXPercent':\n spriteText.curveControlXPercent = value;\n break;\n case 'curveControlYPercent':\n spriteText.curveControlYPercent = value;\n break;\n }\n },\n\n getProperties(container: Container): PropertiesEntry[] {\n try {\n const spriteText = container as unknown as SpriteTextLike;\n\n return [\n {\n prop: 'spriteText.text',\n value: spriteText.text,\n entry: {\n section: SECTION,\n label: 'Text',\n type: 'text',\n },\n },\n {\n prop: 'spriteText.plainText',\n value: spriteText.plainText,\n entry: {\n section: SECTION,\n label: 'Plain Text',\n type: 'text',\n },\n },\n {\n prop: 'spriteText.bbcodeEnabled',\n value: spriteText.bbcodeEnabled,\n entry: {\n section: SECTION,\n label: 'BBCode Enabled',\n type: 'boolean',\n },\n },\n {\n prop: 'spriteText.font',\n value: spriteText.font,\n entry: {\n section: SECTION,\n label: 'Font',\n type: 'text',\n },\n },\n {\n prop: 'spriteText.fonts',\n value: spriteText.fonts.join(', '),\n entry: {\n section: SECTION,\n label: 'Fonts',\n type: 'text',\n },\n },\n {\n prop: 'spriteText.tint',\n // DevTools color picker expects number\n value: spriteText.tint,\n entry: {\n section: SECTION,\n label: 'Tint',\n type: 'color',\n },\n },\n {\n prop: 'spriteText.fontSize',\n value: spriteText.fontSize,\n entry: {\n section: SECTION,\n label: 'Font Size',\n type: 'number',\n },\n },\n {\n prop: 'spriteText.pivotHorizontal',\n value: spriteText.pivotHorizontal,\n entry: {\n section: SECTION,\n label: 'Pivot H',\n type: 'select',\n options: { options: ['left', 'center', 'right'] },\n },\n },\n {\n prop: 'spriteText.pivotVertical',\n value: spriteText.pivotVertical,\n entry: {\n section: SECTION,\n label: 'Pivot V',\n type: 'select',\n options: { options: ['top', 'middle', 'bottom'] },\n },\n },\n {\n prop: 'spriteText.lineAlign',\n value: spriteText.lineAlign,\n entry: {\n section: SECTION,\n label: 'Line Align',\n type: 'select',\n options: { options: ['left', 'center', 'right'] },\n },\n },\n {\n prop: 'spriteText.letterSpacing',\n value: spriteText.letterSpacing,\n entry: {\n section: SECTION,\n label: 'Letter Spacing',\n type: 'number',\n },\n },\n {\n prop: 'spriteText.spaceWidth',\n value: spriteText.spaceWidth,\n entry: {\n section: SECTION,\n label: 'Space Width',\n type: 'number',\n },\n },\n {\n prop: 'spriteText.wordWrap',\n value: spriteText.wordWrap,\n entry: {\n section: SECTION,\n label: 'Word Wrap',\n type: 'boolean',\n },\n },\n {\n prop: 'spriteText.wordWrapWidth',\n value: spriteText.wordWrapWidth,\n entry: {\n section: SECTION,\n label: 'Wrap Width',\n type: 'number',\n },\n },\n {\n prop: 'spriteText.breakWord',\n value: spriteText.breakWord,\n entry: {\n section: SECTION,\n label: 'Break Word',\n type: 'boolean',\n },\n },\n {\n prop: 'spriteText.allowLineBreak',\n value: spriteText.allowLineBreak,\n entry: {\n section: SECTION,\n label: 'Allow Line Break',\n type: 'boolean',\n },\n },\n {\n prop: 'spriteText.kerningEnabled',\n value: spriteText.kerningEnabled,\n entry: {\n section: SECTION,\n label: 'Kerning',\n type: 'boolean',\n },\n },\n {\n prop: 'spriteText.curveEnabled',\n value: spriteText.curveEnabled,\n entry: {\n section: SECTION,\n label: 'Curve Enabled',\n type: 'boolean',\n },\n },\n {\n prop: 'spriteText.curveControlXPercent',\n value: spriteText.curveControlXPercent,\n entry: {\n section: SECTION,\n label: 'Curve X %',\n type: 'number',\n },\n },\n {\n prop: 'spriteText.curveControlYPercent',\n value: spriteText.curveControlYPercent,\n entry: {\n section: SECTION,\n label: 'Curve Y %',\n type: 'number',\n },\n },\n ];\n } catch (e) {\n console.error('[SpriteText Plugin] Error getting properties:', e);\n return [];\n }\n },\n};\n","import type { Container } from 'pixi.js';\nimport type { PropertiesExtension, PropertiesEntry } from '@pixi/devtools';\n\nconst SECTION = 'Spine';\n\ninterface SpineLike {\n skeleton: {\n data: {\n animations: Array<{ name: string }>;\n skins: Array<{ name: string }>;\n };\n skin: { name: string } | null;\n };\n state: {\n tracks: Array<{ animation?: { name: string } } | null>;\n setAnimation: (trackIndex: number, animationName: string, loop: boolean) => void;\n setEmptyAnimation: (trackIndex: number, mixDuration: number) => void;\n };\n autoUpdate: boolean;\n}\n\nconst spineProps: string[] = [\n 'spine.currentAnimation',\n 'spine.currentSkin',\n 'spine.autoUpdate',\n 'spine.playAnimation',\n];\n\nfunction isSpine(container: Container): boolean {\n const name = container.constructor.name;\n if (name === 'Spine') return true;\n\n // Duck typing fallback\n const c = container as any;\n return c.skeleton !== undefined &&\n c.state !== undefined &&\n c.skeleton?.data?.animations !== undefined;\n}\n\nfunction getAnimationNames(spine: SpineLike): string[] {\n try {\n return spine.skeleton.data.animations.map(a => a.name);\n } catch {\n return [];\n }\n}\n\nfunction getSkinNames(spine: SpineLike): string[] {\n try {\n return spine.skeleton.data.skins.map(s => s.name);\n } catch {\n return [];\n }\n}\n\nfunction getCurrentAnimation(spine: SpineLike): string {\n try {\n const track = spine.state.tracks[0];\n return track?.animation?.name ?? '(none)';\n } catch {\n return '(none)';\n }\n}\n\nfunction getCurrentSkin(spine: SpineLike): string {\n try {\n return spine.skeleton.skin?.name ?? 'default';\n } catch {\n return 'default';\n }\n}\n\nexport const spinePropertiesPlugin: PropertiesExtension = {\n extension: {\n type: 'sceneProperties' as any,\n name: 'spine-properties',\n priority: 10,\n },\n\n testNode(container: Container): boolean {\n return isSpine(container);\n },\n\n testProp(prop: string): boolean {\n return spineProps.includes(prop);\n },\n\n setProperty(container: Container, prop: string, value: any): void {\n const spine = container as unknown as SpineLike;\n const propName = prop.replace('spine.', '');\n\n switch (propName) {\n case 'currentSkin':\n try {\n (spine.skeleton as any).setSkinByName(value);\n (spine.skeleton as any).setSlotsToSetupPose();\n } catch (e) {\n console.error('[Spine Plugin] Error setting skin:', e);\n }\n break;\n case 'playAnimation':\n try {\n if (value && value !== '(none)') {\n spine.state.setAnimation(0, value, true);\n } else {\n spine.state.setEmptyAnimation(0, 0.2);\n }\n } catch (e) {\n console.error('[Spine Plugin] Error playing animation:', e);\n }\n break;\n case 'autoUpdate':\n spine.autoUpdate = value;\n break;\n }\n },\n\n getProperties(container: Container): PropertiesEntry[] {\n try {\n const spine = container as unknown as SpineLike;\n const animations = getAnimationNames(spine);\n const skins = getSkinNames(spine);\n const currentAnim = getCurrentAnimation(spine);\n const currentSkin = getCurrentSkin(spine);\n\n return [\n {\n prop: 'spine.currentAnimation',\n value: currentAnim,\n entry: {\n section: SECTION,\n label: 'Current Animation',\n type: 'text',\n options: { disabled: true },\n },\n },\n {\n prop: 'spine.playAnimation',\n value: currentAnim,\n entry: {\n section: SECTION,\n label: 'Play Animation',\n type: 'select',\n options: { options: ['(none)', ...animations] },\n },\n },\n {\n prop: 'spine.currentSkin',\n value: currentSkin,\n entry: {\n section: SECTION,\n label: 'Skin',\n type: 'select',\n options: { options: skins },\n },\n },\n {\n prop: 'spine.autoUpdate',\n value: spine.autoUpdate,\n entry: {\n section: SECTION,\n label: 'Auto Update',\n type: 'boolean',\n },\n },\n ];\n } catch (e) {\n console.error('[Spine Plugin] Error getting properties:', e);\n return [];\n }\n },\n};\n","import { draggableTreePlugin } from './treePlugin';\nimport { draggableOverlayPlugin } from './overlayPlugin';\nimport { spriteTextPropertiesPlugin } from './spriteTextPropertiesPlugin';\nimport { spinePropertiesPlugin } from './spinePropertiesPlugin';\n\nexport * from './treePlugin';\nexport * from './overlayPlugin';\nexport * from './DraggableController';\nexport * from './ResizableController';\nexport * from './spriteTextPropertiesPlugin';\nexport * from './spinePropertiesPlugin';\n\ninterface Devtools {\n __PIXI_DEVTOOLS__: {\n extensions: any[];\n };\n}\n\nconst gThis = globalThis as unknown as Devtools;\n\ngThis.__PIXI_DEVTOOLS__ = {\n ...gThis.__PIXI_DEVTOOLS__,\n extensions: [\n ...(gThis.__PIXI_DEVTOOLS__?.extensions ?? []),\n draggableTreePlugin,\n draggableOverlayPlugin,\n spriteTextPropertiesPlugin,\n spinePropertiesPlugin,\n ],\n};\n"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}