aoi-comp 1.0.0
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.
- package/README.md +187 -0
- package/dist/BufferResource-CVU-ZRRz.js +273 -0
- package/dist/CanvasPool-C3aVgvEX.js +30 -0
- package/dist/CanvasRenderer-CVj7HTkL.js +3460 -0
- package/dist/Geometry-CN7W9DnD.js +3802 -0
- package/dist/RenderTargetSystem-D_FiZPnb.js +2572 -0
- package/dist/WebGLRenderer-CurPxJtF.js +2210 -0
- package/dist/WebGPURenderer-CfiYFIN2.js +1840 -0
- package/dist/browserAll-DqFkNC6q.js +977 -0
- package/dist/canvasUtils-D0KM_fKp.js +168 -0
- package/dist/comps.js +4459 -0
- package/dist/getTextureBatchBindGroup-CLFTP_Vc.js +19 -0
- package/dist/hooks-DByotZq7.js +452 -0
- package/dist/hooks.js +2 -0
- package/dist/index.js +2 -0
- package/dist/init-CIaGzij5.js +446 -0
- package/dist/init-DVXFVLyx.js +878 -0
- package/dist/packages-BbFWPD88.js +4002 -0
- package/dist/rolldown-runtime-CWhphoD1.js +23 -0
- package/dist/style.css +2 -0
- package/dist/utils.js +2 -0
- package/dist/webworkerAll-XSXRmCFC.js +2 -0
- package/package.json +65 -0
package/README.md
ADDED
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# React + Vite + Less + Antd
|
|
2
|
+
|
|
3
|
+
前端组件库
|
|
4
|
+
|
|
5
|
+
### 组件库目录结构
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
packages/
|
|
9
|
+
├─ index.js # 组件库入口,导出 AoiGlobal、aoiInit 等初始化能力
|
|
10
|
+
├─ assets/ # 静态资源与枚举配置
|
|
11
|
+
│ ├─ enum/ # 全局枚举、默认配置常量
|
|
12
|
+
│ ├─ images/ # 图片资源
|
|
13
|
+
│ └─ svgs/ # SVG 图标资源,按图标类型分类
|
|
14
|
+
│ ├─ colo/ # 彩色图标
|
|
15
|
+
│ ├─ fill/ # 填充图标
|
|
16
|
+
│ │ └─ status/ # 状态类填充图标
|
|
17
|
+
│ └─ line/ # 线性图标
|
|
18
|
+
│ └─ tool/ # 工具类线性图标
|
|
19
|
+
├─ components/ # 组件源码
|
|
20
|
+
│ ├─ index.jsx # 组件统一导出入口
|
|
21
|
+
│ ├─ base/ # 基础组件
|
|
22
|
+
│ │ ├─ AoiApp/ # 应用外层容器,注入全局状态、消息、权限等上下文
|
|
23
|
+
│ │ ├─ AoiEllipsis/ # 文本省略组件
|
|
24
|
+
│ │ ├─ AoiErr/ # 错误展示组件
|
|
25
|
+
│ │ ├─ AoiIcon/ # 图标组件
|
|
26
|
+
│ │ └─ AoiSwitch/ # 开关组件
|
|
27
|
+
│ ├─ data/ # 数据展示组件
|
|
28
|
+
│ │ ├─ AoiList/ # 列表组件
|
|
29
|
+
│ │ ├─ AoiModal/ # 弹窗组件
|
|
30
|
+
│ │ ├─ AoiNews/ # 消息/通知组件
|
|
31
|
+
│ │ ├─ AoiTable/ # 表格组件
|
|
32
|
+
│ │ └─ AoiView/ # PixiJS 图像与缺陷数据绘制视图
|
|
33
|
+
│ └─ form/ # 表单输入组件
|
|
34
|
+
│ ├─ AoiColor/ # 颜色选择组件
|
|
35
|
+
│ ├─ AoiDate/ # 日期选择组件
|
|
36
|
+
│ ├─ AoiInput/ # 输入框组件
|
|
37
|
+
│ ├─ AoiNumber/ # 数字输入组件
|
|
38
|
+
│ └─ AoiSelect/ # 下拉选择组件
|
|
39
|
+
├─ hooks/ # 公共 React Hooks
|
|
40
|
+
│ ├─ index.js # 对外导出的 hooks
|
|
41
|
+
│ └─ privatize.js # 内部使用的私有 hooks
|
|
42
|
+
├─ locales/ # 国际化资源
|
|
43
|
+
│ ├─ index.js # i18n 初始化与导出
|
|
44
|
+
│ ├─ zh.json # 中文语言包
|
|
45
|
+
│ └─ en.json # 英文语言包
|
|
46
|
+
├─ styles/ # 全局样式与公共 Less 资源
|
|
47
|
+
├─ themes/ # 主题 token 与主题变量
|
|
48
|
+
└─ utils/ # 工具模块
|
|
49
|
+
├─ config.js # 配置初始化与文件路径配置
|
|
50
|
+
├─ defect.js # 缺陷类型配置管理
|
|
51
|
+
├─ event.js # 全局事件定义与发布订阅
|
|
52
|
+
├─ index.js # 工具统一导出入口
|
|
53
|
+
├─ msgs.js # 消息提示封装
|
|
54
|
+
├─ queue.js # 队列工具
|
|
55
|
+
├─ sqldb.js # 数据库访问封装
|
|
56
|
+
└─ util.js # 通用工具函数
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
组件目录通常遵循以下约定:
|
|
60
|
+
|
|
61
|
+
- 每个组件以独立文件夹维护,入口文件为 `index.jsx`。
|
|
62
|
+
- 组件私有样式放在同级 `index.less` 中,并由组件入口按需引入。
|
|
63
|
+
- `packages/components/index.jsx` 负责统一导出所有对外组件。
|
|
64
|
+
- `packages/index.js` 负责组件库全局初始化能力,例如主题、国际化、数据库、事件与配置初始化。
|
|
65
|
+
|
|
66
|
+
### 组件图标
|
|
67
|
+
|
|
68
|
+
- [简约图标库 1](https://www.iconfont.cn/collections/detail?cid=18616)
|
|
69
|
+
- [全能图标库 1](https://www.iconfont.cn/collections/detail?cid=48981)
|
|
70
|
+
|
|
71
|
+
### 组件使用步骤
|
|
72
|
+
|
|
73
|
+
#### 1. 安装依赖
|
|
74
|
+
|
|
75
|
+
组件库安装:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
pnpm install aoi-comp
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
#### 2. 引入全局样式
|
|
82
|
+
|
|
83
|
+
在应用入口文件中引入组件库样式:
|
|
84
|
+
|
|
85
|
+
```js
|
|
86
|
+
import 'aoi-comp/style.css';
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
#### 3. 初始化组件库
|
|
90
|
+
|
|
91
|
+
在渲染 React 应用前调用 `aoiInit`,用于初始化主题、国际化、数据库、事件、配置等全局能力:
|
|
92
|
+
|
|
93
|
+
```js
|
|
94
|
+
import { aoiInit } from 'aoi-comp';
|
|
95
|
+
|
|
96
|
+
const config = {
|
|
97
|
+
exe: window._executer,
|
|
98
|
+
cv: window._cv,
|
|
99
|
+
resource: {
|
|
100
|
+
zh: { welcome: '欢迎使用 Aoi Comp' },
|
|
101
|
+
en: { welcome: 'Welcome to Aoi Comp' },
|
|
102
|
+
},
|
|
103
|
+
sqls: [],
|
|
104
|
+
config: {},
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
aoiInit(config);
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
常用初始化参数:
|
|
111
|
+
|
|
112
|
+
- `exe`:宿主环境注入的执行对象,用于数据库、文件等能力。
|
|
113
|
+
- `cv`:宿主环境注入的图像处理对象。
|
|
114
|
+
- `resource`:业务侧追加的国际化语言包。
|
|
115
|
+
- `lang`:默认语言,默认为 `zh`。
|
|
116
|
+
- `sqls`:数据库表结构与 SQL 配置。
|
|
117
|
+
- `level`:权限配置。
|
|
118
|
+
- `config`:业务配置项。
|
|
119
|
+
- `dev`:是否开启开发模式。
|
|
120
|
+
|
|
121
|
+
#### 4. 挂载 AoiApp
|
|
122
|
+
|
|
123
|
+
使用 `AoiApp` 包裹业务应用,注入 Ant Design 配置、主题、语言包、全局消息和组件库上下文:
|
|
124
|
+
|
|
125
|
+
```jsx
|
|
126
|
+
import { createRoot } from 'react-dom/client';
|
|
127
|
+
import { AoiApp } from 'aoi-comp/comps';
|
|
128
|
+
import zhCN from 'antd/locale/zh_CN';
|
|
129
|
+
import App from './App';
|
|
130
|
+
|
|
131
|
+
createRoot(document.getElementById('root')).render(
|
|
132
|
+
<AoiApp lang="zh" locale={zhCN}>
|
|
133
|
+
<App />
|
|
134
|
+
</AoiApp>
|
|
135
|
+
);
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
#### 5. 使用组件
|
|
139
|
+
|
|
140
|
+
从 `aoi-comp/comps` 按需导入组件:
|
|
141
|
+
|
|
142
|
+
```jsx
|
|
143
|
+
import { AoiInput, AoiTable, AoiView } from 'aoi-comp/comps';
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
示例:
|
|
147
|
+
|
|
148
|
+
```jsx
|
|
149
|
+
import { AoiInput, AoiNumber, AoiTable } from 'aoi-comp/comps';
|
|
150
|
+
|
|
151
|
+
const Demo = () => (
|
|
152
|
+
<>
|
|
153
|
+
<AoiInput value="test" />
|
|
154
|
+
<AoiNumber value={8} max={10} />
|
|
155
|
+
<AoiTable rowKey="id" columns={[]} data={[]} />
|
|
156
|
+
</>
|
|
157
|
+
);
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
#### 6. 使用 Hooks 和工具函数
|
|
161
|
+
|
|
162
|
+
Hooks 从 `aoi-comp/hooks` 导入:
|
|
163
|
+
|
|
164
|
+
```js
|
|
165
|
+
import { useMessage, useStore, usePagination, useVastState } from 'aoi-comp/hooks';
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
工具函数从 `aoi-comp/utils` 导入:
|
|
169
|
+
|
|
170
|
+
```js
|
|
171
|
+
import { Msg, uid, emit, on, off } from 'aoi-comp/utils';
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
#### 7. 本地开发验证
|
|
175
|
+
|
|
176
|
+
当前仓库可通过以下命令启动和构建:
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
pnpm dev
|
|
180
|
+
pnpm build
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
本地测试入口参考:
|
|
184
|
+
|
|
185
|
+
- `test/main.jsx`:组件库初始化与 `AoiApp` 挂载示例。
|
|
186
|
+
- `test/config.js`:`aoiInit` 配置示例。
|
|
187
|
+
- `test/App.jsx`:组件使用示例。
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
import { R as e, Z as t, n, nt as r, p as i, r as a } from "./Geometry-CN7W9DnD.js";
|
|
2
|
+
import { k as o, w as s } from "./RenderTargetSystem-D_FiZPnb.js";
|
|
3
|
+
//#region node_modules/.pnpm/pixi.js@8.20.1/node_modules/pixi.js/lib/rendering/high-shader/shader-bits/localUniformBit.mjs
|
|
4
|
+
var c = {
|
|
5
|
+
name: "local-uniform-bit",
|
|
6
|
+
vertex: {
|
|
7
|
+
header: "\n\n struct LocalUniforms {\n uTransformMatrix:mat3x3<f32>,\n uColor:vec4<f32>,\n uRound:f32,\n }\n\n @group(1) @binding(0) var<uniform> localUniforms : LocalUniforms;\n ",
|
|
8
|
+
main: "\n vColor *= localUniforms.uColor;\n modelMatrix *= localUniforms.uTransformMatrix;\n ",
|
|
9
|
+
end: "\n if(localUniforms.uRound == 1)\n {\n vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);\n }\n "
|
|
10
|
+
}
|
|
11
|
+
}, l = {
|
|
12
|
+
...c,
|
|
13
|
+
vertex: {
|
|
14
|
+
...c.vertex,
|
|
15
|
+
header: c.vertex.header.replace("group(1)", "group(2)")
|
|
16
|
+
}
|
|
17
|
+
}, u = {
|
|
18
|
+
name: "local-uniform-bit",
|
|
19
|
+
vertex: {
|
|
20
|
+
header: "\n\n uniform mat3 uTransformMatrix;\n uniform vec4 uColor;\n uniform float uRound;\n ",
|
|
21
|
+
main: "\n vColor *= uColor;\n modelMatrix = uTransformMatrix;\n ",
|
|
22
|
+
end: "\n if(uRound == 1.)\n {\n gl_Position.xy = roundPixels(gl_Position.xy, uResolution);\n }\n "
|
|
23
|
+
}
|
|
24
|
+
}, d = {
|
|
25
|
+
name: "texture-bit",
|
|
26
|
+
vertex: {
|
|
27
|
+
header: "\n\n struct TextureUniforms {\n uTextureMatrix:mat3x3<f32>,\n }\n\n @group(2) @binding(2) var<uniform> textureUniforms : TextureUniforms;\n ",
|
|
28
|
+
main: "\n uv = (textureUniforms.uTextureMatrix * vec3(uv, 1.0)).xy;\n "
|
|
29
|
+
},
|
|
30
|
+
fragment: {
|
|
31
|
+
header: "\n @group(2) @binding(0) var uTexture: texture_2d<f32>;\n @group(2) @binding(1) var uSampler: sampler;\n\n\n ",
|
|
32
|
+
main: "\n outColor = textureSample(uTexture, uSampler, vUV);\n "
|
|
33
|
+
}
|
|
34
|
+
}, f = {
|
|
35
|
+
name: "texture-bit",
|
|
36
|
+
vertex: {
|
|
37
|
+
header: "\n uniform mat3 uTextureMatrix;\n ",
|
|
38
|
+
main: "\n uv = (uTextureMatrix * vec3(uv, 1.0)).xy;\n "
|
|
39
|
+
},
|
|
40
|
+
fragment: {
|
|
41
|
+
header: "\n uniform sampler2D uTexture;\n\n\n ",
|
|
42
|
+
main: "\n outColor = texture(uTexture, vUV);\n "
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
//#endregion
|
|
46
|
+
//#region node_modules/.pnpm/pixi.js@8.20.1/node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/ensureAttributes.mjs
|
|
47
|
+
function p(t, n) {
|
|
48
|
+
for (let r in t.attributes) {
|
|
49
|
+
let i = t.attributes[r], a = n[r];
|
|
50
|
+
a ? (i.format ??= a.format, i.offset ??= a.offset, i.instance ??= a.instance) : e(`Attribute ${r} is not present in the shader, but is present in the geometry. Unable to infer attribute details.`);
|
|
51
|
+
}
|
|
52
|
+
m(t);
|
|
53
|
+
}
|
|
54
|
+
function m(e) {
|
|
55
|
+
let { buffers: t, attributes: n } = e, r = {}, a = {};
|
|
56
|
+
for (let e in t) {
|
|
57
|
+
let n = t[e];
|
|
58
|
+
r[n.uid] = 0, a[n.uid] = 0;
|
|
59
|
+
}
|
|
60
|
+
for (let e in n) {
|
|
61
|
+
let t = n[e];
|
|
62
|
+
r[t.buffer.uid] += i(t.format).stride;
|
|
63
|
+
}
|
|
64
|
+
for (let e in n) {
|
|
65
|
+
let t = n[e];
|
|
66
|
+
t.stride ??= r[t.buffer.uid], t.start ??= a[t.buffer.uid], a[t.buffer.uid] += i(t.format).stride;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//#endregion
|
|
70
|
+
//#region node_modules/.pnpm/pixi.js@8.20.1/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuStencilModesToPixi.mjs
|
|
71
|
+
var h = [];
|
|
72
|
+
h[s.NONE] = void 0, h[s.DISABLED] = {
|
|
73
|
+
stencilWriteMask: 0,
|
|
74
|
+
stencilReadMask: 0
|
|
75
|
+
}, h[s.RENDERING_MASK_ADD] = {
|
|
76
|
+
stencilFront: {
|
|
77
|
+
compare: "equal",
|
|
78
|
+
passOp: "increment-clamp"
|
|
79
|
+
},
|
|
80
|
+
stencilBack: {
|
|
81
|
+
compare: "equal",
|
|
82
|
+
passOp: "increment-clamp"
|
|
83
|
+
}
|
|
84
|
+
}, h[s.RENDERING_MASK_REMOVE] = {
|
|
85
|
+
stencilFront: {
|
|
86
|
+
compare: "equal",
|
|
87
|
+
passOp: "decrement-clamp"
|
|
88
|
+
},
|
|
89
|
+
stencilBack: {
|
|
90
|
+
compare: "equal",
|
|
91
|
+
passOp: "decrement-clamp"
|
|
92
|
+
}
|
|
93
|
+
}, h[s.MASK_ACTIVE] = {
|
|
94
|
+
stencilWriteMask: 0,
|
|
95
|
+
stencilFront: {
|
|
96
|
+
compare: "equal",
|
|
97
|
+
passOp: "keep"
|
|
98
|
+
},
|
|
99
|
+
stencilBack: {
|
|
100
|
+
compare: "equal",
|
|
101
|
+
passOp: "keep"
|
|
102
|
+
}
|
|
103
|
+
}, h[s.INVERSE_MASK_ACTIVE] = {
|
|
104
|
+
stencilWriteMask: 0,
|
|
105
|
+
stencilFront: {
|
|
106
|
+
compare: "not-equal",
|
|
107
|
+
passOp: "keep"
|
|
108
|
+
},
|
|
109
|
+
stencilBack: {
|
|
110
|
+
compare: "not-equal",
|
|
111
|
+
passOp: "keep"
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
//#endregion
|
|
115
|
+
//#region node_modules/.pnpm/pixi.js@8.20.1/node_modules/pixi.js/lib/rendering/renderers/shared/shader/UboSystem.mjs
|
|
116
|
+
var g = class {
|
|
117
|
+
constructor(e) {
|
|
118
|
+
this._syncFunctionHash = /* @__PURE__ */ Object.create(null), this._adaptor = e, this._systemCheck();
|
|
119
|
+
}
|
|
120
|
+
_systemCheck() {
|
|
121
|
+
if (!o()) throw Error("Current environment does not allow unsafe-eval, please use pixi.js/unsafe-eval module to enable support.");
|
|
122
|
+
}
|
|
123
|
+
ensureUniformGroup(e) {
|
|
124
|
+
let t = this.getUniformGroupData(e);
|
|
125
|
+
e.buffer ||= new n({
|
|
126
|
+
data: new Float32Array(t.layout.size / 4),
|
|
127
|
+
usage: a.UNIFORM | a.COPY_DST
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
getUniformGroupData(e) {
|
|
131
|
+
return this._syncFunctionHash[e._signature] || this._initUniformGroup(e);
|
|
132
|
+
}
|
|
133
|
+
_initUniformGroup(e) {
|
|
134
|
+
let t = e._signature, n = this._syncFunctionHash[t];
|
|
135
|
+
if (!n) {
|
|
136
|
+
let r = Object.keys(e.uniformStructures).map((t) => e.uniformStructures[t]), i = this._adaptor.createUboElements(r), a = this._generateUboSync(i.uboElements);
|
|
137
|
+
n = this._syncFunctionHash[t] = {
|
|
138
|
+
layout: i,
|
|
139
|
+
syncFunction: a
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
return this._syncFunctionHash[t];
|
|
143
|
+
}
|
|
144
|
+
_generateUboSync(e) {
|
|
145
|
+
return this._adaptor.generateUboSync(e);
|
|
146
|
+
}
|
|
147
|
+
syncUniformGroup(e, t, r) {
|
|
148
|
+
let i = this.getUniformGroupData(e);
|
|
149
|
+
e.buffer ||= new n({
|
|
150
|
+
data: new Float32Array(i.layout.size / 4),
|
|
151
|
+
usage: a.UNIFORM | a.COPY_DST
|
|
152
|
+
});
|
|
153
|
+
let o = null;
|
|
154
|
+
return t || (t = e.buffer.data, o = e.buffer.dataInt32), r ||= 0, i.syncFunction(e.uniforms, t, o, r), !0;
|
|
155
|
+
}
|
|
156
|
+
updateUniformGroup(e) {
|
|
157
|
+
if (e.isStatic && !e._dirtyId) return !1;
|
|
158
|
+
e._dirtyId = 0;
|
|
159
|
+
let t = this.syncUniformGroup(e);
|
|
160
|
+
return e.buffer.update(), t;
|
|
161
|
+
}
|
|
162
|
+
destroy() {
|
|
163
|
+
this._syncFunctionHash = null;
|
|
164
|
+
}
|
|
165
|
+
}, _ = [
|
|
166
|
+
{
|
|
167
|
+
type: "mat3x3<f32>",
|
|
168
|
+
test: (e) => e.value.a !== void 0,
|
|
169
|
+
ubo: "\n var matrix = uv[name].toArray(true);\n data[offset] = matrix[0];\n data[offset + 1] = matrix[1];\n data[offset + 2] = matrix[2];\n data[offset + 4] = matrix[3];\n data[offset + 5] = matrix[4];\n data[offset + 6] = matrix[5];\n data[offset + 8] = matrix[6];\n data[offset + 9] = matrix[7];\n data[offset + 10] = matrix[8];\n ",
|
|
170
|
+
uniform: "\n gl.uniformMatrix3fv(ud[name].location, false, uv[name].toArray(true));\n "
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
type: "vec4<f32>",
|
|
174
|
+
test: (e) => e.type === "vec4<f32>" && e.size === 1 && e.value.width !== void 0,
|
|
175
|
+
ubo: "\n v = uv[name];\n data[offset] = v.x;\n data[offset + 1] = v.y;\n data[offset + 2] = v.width;\n data[offset + 3] = v.height;\n ",
|
|
176
|
+
uniform: "\n cv = ud[name].value;\n v = uv[name];\n if (cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height) {\n cv[0] = v.x;\n cv[1] = v.y;\n cv[2] = v.width;\n cv[3] = v.height;\n gl.uniform4f(ud[name].location, v.x, v.y, v.width, v.height);\n }\n "
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
type: "vec2<f32>",
|
|
180
|
+
test: (e) => e.type === "vec2<f32>" && e.size === 1 && e.value.x !== void 0,
|
|
181
|
+
ubo: "\n v = uv[name];\n data[offset] = v.x;\n data[offset + 1] = v.y;\n ",
|
|
182
|
+
uniform: "\n cv = ud[name].value;\n v = uv[name];\n if (cv[0] !== v.x || cv[1] !== v.y) {\n cv[0] = v.x;\n cv[1] = v.y;\n gl.uniform2f(ud[name].location, v.x, v.y);\n }\n "
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
type: "vec4<f32>",
|
|
186
|
+
test: (e) => e.type === "vec4<f32>" && e.size === 1 && e.value.red !== void 0,
|
|
187
|
+
ubo: "\n v = uv[name];\n data[offset] = v.red;\n data[offset + 1] = v.green;\n data[offset + 2] = v.blue;\n data[offset + 3] = v.alpha;\n ",
|
|
188
|
+
uniform: "\n cv = ud[name].value;\n v = uv[name];\n if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.alpha) {\n cv[0] = v.red;\n cv[1] = v.green;\n cv[2] = v.blue;\n cv[3] = v.alpha;\n gl.uniform4f(ud[name].location, v.red, v.green, v.blue, v.alpha);\n }\n "
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
type: "vec3<f32>",
|
|
192
|
+
test: (e) => e.type === "vec3<f32>" && e.size === 1 && e.value.red !== void 0,
|
|
193
|
+
ubo: "\n v = uv[name];\n data[offset] = v.red;\n data[offset + 1] = v.green;\n data[offset + 2] = v.blue;\n ",
|
|
194
|
+
uniform: "\n cv = ud[name].value;\n v = uv[name];\n if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue) {\n cv[0] = v.red;\n cv[1] = v.green;\n cv[2] = v.blue;\n gl.uniform3f(ud[name].location, v.red, v.green, v.blue);\n }\n "
|
|
195
|
+
}
|
|
196
|
+
];
|
|
197
|
+
//#endregion
|
|
198
|
+
//#region node_modules/.pnpm/pixi.js@8.20.1/node_modules/pixi.js/lib/rendering/renderers/shared/shader/utils/compileBufferSync.mjs
|
|
199
|
+
function v(e, t, n) {
|
|
200
|
+
let r = ["\n var v = null;\n var v2 = null;\n var t = 0;\n var index = 0;\n var name = null;\n var arrayOffset = null;\n "], i = 0;
|
|
201
|
+
for (let a = 0; a < e.length; a++) {
|
|
202
|
+
let o = e[a], s = o.data.name, c = !1, l = 0;
|
|
203
|
+
for (let e = 0; e < _.length; e++) if (_[e].test(o.data)) {
|
|
204
|
+
l = o.offset / 4, r.push(`name = "${s}";`, `offset += ${l - i};`, _[e].ubo), c = !0;
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
if (!c) if (o.data.size > 1) l = o.offset / 4, r.push(n(o, l - i));
|
|
208
|
+
else {
|
|
209
|
+
let e = t[o.data.type];
|
|
210
|
+
l = o.offset / 4, r.push(`
|
|
211
|
+
v = uv.${s};
|
|
212
|
+
offset += ${l - i};
|
|
213
|
+
${e};
|
|
214
|
+
`);
|
|
215
|
+
}
|
|
216
|
+
i = l;
|
|
217
|
+
}
|
|
218
|
+
let a = r.join("\n");
|
|
219
|
+
return Function("uv", "data", "dataInt32", "offset", a);
|
|
220
|
+
}
|
|
221
|
+
//#endregion
|
|
222
|
+
//#region node_modules/.pnpm/pixi.js@8.20.1/node_modules/pixi.js/lib/rendering/renderers/shared/shader/utils/uboSyncFunctions.mjs
|
|
223
|
+
function y(e, t) {
|
|
224
|
+
return `
|
|
225
|
+
for (let i = 0; i < ${e * t}; i++) {
|
|
226
|
+
data[offset + (((i / ${e})|0) * 4) + (i % ${e})] = v[i];
|
|
227
|
+
}
|
|
228
|
+
`;
|
|
229
|
+
}
|
|
230
|
+
var b = {
|
|
231
|
+
f32: "\n data[offset] = v;",
|
|
232
|
+
i32: "\n dataInt32[offset] = v;",
|
|
233
|
+
u32: "\n dataInt32[offset] = v;",
|
|
234
|
+
"vec2<f32>": "\n data[offset] = v[0];\n data[offset + 1] = v[1];",
|
|
235
|
+
"vec3<f32>": "\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];",
|
|
236
|
+
"vec4<f32>": "\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n data[offset + 3] = v[3];",
|
|
237
|
+
"vec2<i32>": "\n dataInt32[offset] = v[0];\n dataInt32[offset + 1] = v[1];",
|
|
238
|
+
"vec3<i32>": "\n dataInt32[offset] = v[0];\n dataInt32[offset + 1] = v[1];\n dataInt32[offset + 2] = v[2];",
|
|
239
|
+
"vec4<i32>": "\n dataInt32[offset] = v[0];\n dataInt32[offset + 1] = v[1];\n dataInt32[offset + 2] = v[2];\n dataInt32[offset + 3] = v[3];",
|
|
240
|
+
"vec2<u32>": "\n dataInt32[offset] = v[0];\n dataInt32[offset + 1] = v[1];",
|
|
241
|
+
"vec3<u32>": "\n dataInt32[offset] = v[0];\n dataInt32[offset + 1] = v[1];\n dataInt32[offset + 2] = v[2];",
|
|
242
|
+
"vec4<u32>": "\n dataInt32[offset] = v[0];\n dataInt32[offset + 1] = v[1];\n dataInt32[offset + 2] = v[2];\n dataInt32[offset + 3] = v[3];",
|
|
243
|
+
"mat2x2<f32>": "\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 4] = v[2];\n data[offset + 5] = v[3];",
|
|
244
|
+
"mat3x3<f32>": "\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n data[offset + 4] = v[3];\n data[offset + 5] = v[4];\n data[offset + 6] = v[5];\n data[offset + 8] = v[6];\n data[offset + 9] = v[7];\n data[offset + 10] = v[8];",
|
|
245
|
+
"mat4x4<f32>": "\n for (let i = 0; i < 16; i++) {\n data[offset + i] = v[i];\n }",
|
|
246
|
+
"mat3x2<f32>": y(3, 2),
|
|
247
|
+
"mat4x2<f32>": y(4, 2),
|
|
248
|
+
"mat2x3<f32>": y(2, 3),
|
|
249
|
+
"mat4x3<f32>": y(4, 3),
|
|
250
|
+
"mat2x4<f32>": y(2, 4),
|
|
251
|
+
"mat3x4<f32>": y(3, 4)
|
|
252
|
+
}, x = {
|
|
253
|
+
...b,
|
|
254
|
+
"mat2x2<f32>": "\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n data[offset + 3] = v[3];\n "
|
|
255
|
+
}, S = class extends r {
|
|
256
|
+
constructor({ buffer: e, offset: n, size: r }) {
|
|
257
|
+
super(), this.uid = t("buffer"), this._resourceType = "bufferResource", this._touched = 0, this._resourceId = t("resource"), this._bufferResource = !0, this.destroyed = !1, this.buffer = e, this.offset = n | 0, this.size = r, this.buffer.on("change", this.onBufferChange, this);
|
|
258
|
+
}
|
|
259
|
+
get _gcLastUsed() {
|
|
260
|
+
return this.buffer?._gcLastUsed ?? -1;
|
|
261
|
+
}
|
|
262
|
+
set _gcLastUsed(e) {
|
|
263
|
+
this.buffer && (this.buffer._gcLastUsed = e);
|
|
264
|
+
}
|
|
265
|
+
onBufferChange() {
|
|
266
|
+
this._resourceId = t("resource"), this.emit("change", this);
|
|
267
|
+
}
|
|
268
|
+
destroy(e = !1) {
|
|
269
|
+
this.destroyed = !0, e && this.buffer.destroy(), this.emit("change", this), this.buffer = null, this.removeAllListeners();
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
//#endregion
|
|
273
|
+
export { _ as a, p as c, c as d, u as f, v as i, d as l, b as n, g as o, l as p, x as r, h as s, S as t, f as u };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { L as e, b as t, q as n } from "./Geometry-CN7W9DnD.js";
|
|
2
|
+
var r = new class {
|
|
3
|
+
constructor(e) {
|
|
4
|
+
this._canvasPool = /* @__PURE__ */ Object.create(null), this.canvasOptions = e || {}, this.enableFullScreen = !1;
|
|
5
|
+
}
|
|
6
|
+
_createCanvasAndContext(e, n) {
|
|
7
|
+
let r = t.get().createCanvas();
|
|
8
|
+
return r.width = e, r.height = n, {
|
|
9
|
+
canvas: r,
|
|
10
|
+
context: r.getContext("2d")
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
getOptimalCanvasAndContext(e, t, r = 1) {
|
|
14
|
+
e = Math.ceil(e * r - 1e-6), t = Math.ceil(t * r - 1e-6), e = n(e), t = n(t);
|
|
15
|
+
let i = (e << 17) + (t << 1);
|
|
16
|
+
this._canvasPool[i] || (this._canvasPool[i] = []);
|
|
17
|
+
let a = this._canvasPool[i].pop();
|
|
18
|
+
return a ||= this._createCanvasAndContext(e, t), a;
|
|
19
|
+
}
|
|
20
|
+
returnCanvasAndContext(e) {
|
|
21
|
+
let { width: t, height: n } = e.canvas, r = (t << 17) + (n << 1);
|
|
22
|
+
e.context.resetTransform(), e.context.clearRect(0, 0, t, n), this._canvasPool[r].push(e);
|
|
23
|
+
}
|
|
24
|
+
clear() {
|
|
25
|
+
this._canvasPool = {};
|
|
26
|
+
}
|
|
27
|
+
}();
|
|
28
|
+
e.register(r);
|
|
29
|
+
//#endregion
|
|
30
|
+
export { r as t };
|