{"_id":"@cadcamfun/cad-cam-fun-plugin-sdk","name":"@cadcamfun/cad-cam-fun-plugin-sdk","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@cadcamfun/cad-cam-fun-plugin-sdk","version":"1.0.0","description":"SDK for building plugins for CAD/CAM FUN platform","type":"module","main":"dist/index.js","module":"dist/index.esm.js","types":"dist/index.d.ts","scripts":{"build":"rollup -c","dev":"rollup -c -w","test":"jest","lint":"eslint src/**/*.{ts,tsx}","prepublishOnly":"npm run build"},"keywords":["cad","cam","plugin","sdk","typescript"],"repository":{"type":"git","url":"git+https://github.com/nikomatt69/plugin-sdk.git"},"author":{"name":"CAD/CAM FUN Team"},"license":"MIT","bugs":{"url":"https://github.com/nikomatt69/plugin-sdk/issues"},"homepage":"https://github.com/nikomatt69/plugin-sdk#readme","peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"devDependencies":{"@types/react":"^18.0.28","@types/react-dom":"^18.0.11","@typescript-eslint/eslint-plugin":"^5.59.0","@typescript-eslint/parser":"^5.59.0","eslint":"^8.38.0","eslint-plugin-react":"^7.32.2","eslint-plugin-react-hooks":"^4.6.0","jest":"^29.5.0","rollup":"^3.20.2","rollup-plugin-typescript2":"^0.34.1","typescript":"^5.0.4"},"dependencies":{"mitt":"^3.0.0","zustand":"^4.3.7"},"_id":"@cadcamfun/cad-cam-fun-plugin-sdk@1.0.0","gitHead":"1f250db5204e8f1ad85b6b53d4b21b0a97f4422b","_nodeVersion":"23.10.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-5n06QXG7vVdrfDf7aIr3RP0gvUM68mDZ/OkigBMmdaCjWxygnDExwWnfGBBVSp9rAuxwVAXnjmCVxzn+yBinLQ==","shasum":"c154b1b736b0d2259707cc9f1e6fb63762f554af","tarball":"https://registry.npmjs.org/@cadcamfun/cad-cam-fun-plugin-sdk/-/cad-cam-fun-plugin-sdk-1.0.0.tgz","fileCount":13,"unpackedSize":55668,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIA69Ix/ils+74ekPUqGo3ckBLD13Epymk8B2nTgvATImAiEArOCxzD14QRHxMW69SygmvhLQuYY3SnPauhjsyRZUrGc="}]},"_npmUser":{"name":"cadcamfun","email":"nicom.19@icloud.com"},"directories":{},"maintainers":[{"name":"cadcamfun","email":"nicom.19@icloud.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cad-cam-fun-plugin-sdk_1.0.0_1744076399494_0.006395437570429596"},"_hasShrinkwrap":false}},"time":{"created":"2025-04-08T01:39:59.442Z","1.0.0":"2025-04-08T01:39:59.800Z","modified":"2025-04-08T01:40:00.044Z"},"maintainers":[{"name":"cadcamfun","email":"nicom.19@icloud.com"}],"description":"SDK for building plugins for CAD/CAM FUN platform","homepage":"https://github.com/nikomatt69/plugin-sdk#readme","keywords":["cad","cam","plugin","sdk","typescript"],"repository":{"type":"git","url":"git+https://github.com/nikomatt69/plugin-sdk.git"},"author":{"name":"CAD/CAM FUN Team"},"bugs":{"url":"https://github.com/nikomatt69/plugin-sdk/issues"},"license":"MIT","readme":"# CAD/CAM FUN Plugin SDK\n\nOfficial SDK for building plugins for the CAD/CAM FUN platform.\n\n## Installation\n\n```bash\nnpm install @cad-cam-fun/plugin-sdk\n```\n\nor\n\n```bash\nyarn add @cad-cam-fun/plugin-sdk\n```\n\n## Quick Start\n\n```typescript\nimport { definePlugin, createExtension } from '@cad-cam-fun/plugin-sdk';\n\nexport default definePlugin((api) => {\n  // Register sidebar extension\n  api.registerExtension(\n    createExtension({\n      type: 'sidebar',\n      component: () => import('./components/Sidebar'),\n      metadata: {\n        title: 'My Plugin',\n        icon: 'settings'\n      }\n    })\n  );\n  \n  return {\n    onEnable: () => {\n      console.log('Plugin enabled');\n    },\n    onDisable: () => {\n      console.log('Plugin disabled');\n    }\n  };\n});\n```\n\n## Plugin Structure\n\nA typical plugin consists of:\n\n1. **Main Entry Point**: Defines the plugin and its lifecycle methods\n2. **UI Components**: React components for user interface extensions\n3. **Business Logic**: Code for manipulating elements, layers, etc.\n\n## Extension Points\n\nYou can extend the CAD/CAM FUN platform at these extension points:\n\n- **sidebar**: Add a panel to the sidebar\n- **toolbar**: Add buttons to the toolbar\n- **rightSidebar**: Add content to the right sidebar\n- **modal**: Create modal dialogs\n- **overlay**: Add an overlay to the canvas\n- **contextMenu**: Add items to context menus\n- **cadTool**: Add custom CAD tools\n- **camOperation**: Add custom CAM operations\n- **importer**: Add file import capabilities\n- **exporter**: Add file export capabilities\n- **renderer**: Customize rendering\n\n## Available Hooks\n\n```typescript\n// Access the plugin API\nconst api = usePluginAPI();\n\n// Access canvas elements\nconst { elements, createElement, updateElement, deleteElement } = useElements();\n\n// Access current selection\nconst { selectedIds, selectedElements } = useSelection();\n\n// Access layers\nconst { layers } = useLayers();\n\n// Access viewport\nconst viewport = useViewport();\n\n// Subscribe to events\nusePluginEvent('element:created', (event) => {\n  console.log('Element created:', event.id);\n});\n\n// Access plugin settings\nconst { settings, updateSettings } = usePluginSettings();\n```\n\n## Documentation\n\nFor full documentation, visit our [documentation site](https://docs.cadcamfun.xyz/plugin-sdk).\n\n## Examples\n\nCheck out the [examples directory](./examples) for sample plugins.\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Build the SDK\nnpm run build\n\n# Watch for changes\nnpm run dev\n\n# Run tests\nnpm test\n```\n\n## License\n\nMIT © CAD/CAM FUN Team ","readmeFilename":"README.md","_rev":"1-a3aef3a1069fa5e68bb6b0577ab021a9"}