# @nuwatop/code-canvas-core

Core components and utilities for code-canvas visualization editor.

## Installation

```bash
npm install @nuwatop/code-canvas-core
```

## Usage

### Configuration

Before using the core package, you need to configure the request and upload handlers:

```typescript
import { setCoreConfig } from '@nuwatop/code-canvas-core';

setCoreConfig({
  request: async (config) => {
    // Your request implementation
    return await fetch(config.baseURL, {
      method: 'GET',
      headers: config.headers
    });
  },
  upload: async (file, config) => {
    // Your upload implementation
    const formData = new FormData();
    formData.append('file', file);
    return await fetch(config?.url || '/upload', {
      method: 'POST',
      body: formData,
      headers: config?.headers
    });
  }
});
```

### Components

All And-* components are available for import:

```typescript
import { AndButton, AndInput, AndText } from '@nuwatop/code-canvas-core';
```

### Runtime

Initialize the runtime module:

```typescript
import { initRuntime } from '@nuwatop/code-canvas-core/runtime';

initRuntime({
  utils: yourUtils,
  moduleLoader: async (moduleName) => {
    // Load your module
    return await import(`./modules/${moduleName}`);
  }
});
```

## 发布到 npm（维护者）

在 **`core` 目录**下，先改好 `package.json` 里的 **`version`**（不能和已发布版本重复），登录 npm 官方源后执行：

```bash
npm publish --access public
```

- **`--access public`**：本包是 scoped 包（`@nuwatop/...`），公开到 npmjs 必须加这一项；否则可能按私有包处理。
- **`prepublishOnly`** 已配置为自动 `npm run build`，一般无需先手动 `build`。

若本机默认 registry 是镜像（如 npmmirror，不能 `publish`），可二选一：

```bash
npm publish --access public --registry https://registry.npmjs.org/
```

或在 `core/.npmrc` 中指定 `registry=https://registry.npmjs.org/`（含 token 时不要提交到 Git）。

其他：`npm login`、Automation Token、发布后依赖方 `npm install @nuwatop/code-canvas-core@latest`、Vite 项目可删 `node_modules/.vite` 再启动等，按团队惯例即可。

## License

MIT

