@openspecui/web 7.0.0 → 7.0.1
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/dist/assets/{App-D04w0rKO.js → App-CdCpY5Oi.js} +80 -80
- package/dist/assets/App-Ddx3wr17.css +1 -0
- package/dist/assets/{main-Bh5BqDEB.js → main-BJ6w67mJ.js} +2 -2
- package/dist/assets/{trpc-vqcD0NTx.js → trpc-DkR_dtsV.js} +1 -1
- package/dist/index.html +1 -1
- package/dist-ssg/client/.vite/ssr-manifest.json +69 -29
- package/dist-ssg/client/assets/CanvasRenderer-SxkLA4OO.js +1 -0
- package/dist-ssg/client/assets/WebGLRenderer-BlVqxY1i.js +1 -0
- package/dist-ssg/client/assets/WebGPURenderer-B3sn-S62.js +1 -0
- package/dist-ssg/client/assets/browserAll-Bq1Uo1-9.js +1 -0
- package/dist-ssg/client/assets/{config-guide-presentation-BEF34WAK.js → config-guide-presentation-m4L_6Aw1.js} +1 -1
- package/dist-ssg/client/assets/{dist-BzOaRFB5.js → dist-BINRJsSD.js} +1 -1
- package/dist-ssg/client/assets/{dist-DwdkRYfv.js → dist-Bg_7PXKP.js} +1 -1
- package/dist-ssg/client/assets/dist-Bh5C-oZl.js +1 -0
- package/dist-ssg/client/assets/{dist-gcj7KpQ7.js → dist-BhVT4aPf.js} +1 -1
- package/dist-ssg/client/assets/{dist-CQfLbMfn.js → dist-CQkg2GXo.js} +1 -1
- package/dist-ssg/client/assets/dist-CzUl1_ZX.js +1 -0
- package/dist-ssg/client/assets/{dist-BRX0vHHj.js → dist-D9y725wE.js} +1 -1
- package/dist-ssg/client/assets/{dist-C7ncT3z3.js → dist-D_dL7IEq.js} +1 -1
- package/dist-ssg/client/assets/{dist-DU7FOddi.js → dist-DaBfRE0W.js} +1 -1
- package/dist-ssg/client/assets/dist-Do7XHNay.js +1 -0
- package/dist-ssg/client/assets/{dist-XQwsfb9S.js → dist-Dy8gt0Ib.js} +1 -1
- package/dist-ssg/client/assets/{dist-CBT1FQBi.js → dist-JPSLeMZt.js} +1 -1
- package/dist-ssg/client/assets/{ghostty-web-BuKlD9v-.js → ghostty-web-BfmV5WPs.js} +1 -1
- package/dist-ssg/client/assets/index-Dcu2Vogo.css +1 -0
- package/dist-ssg/client/assets/{index.ssg-DRSFMaRS.js → index.ssg-CTvsWc75.js} +153 -153
- package/dist-ssg/client/assets/{init-Cna88xtL.js → init-ExESwXkv.js} +1 -1
- package/dist-ssg/client/assets/{trpc-5KfqD8Sg.js → trpc-aDW3YZC2.js} +1 -1
- package/dist-ssg/client/assets/webworkerAll-DPGdqK5A.js +1 -0
- package/dist-ssg/client/index.ssg.html +2 -2
- package/dist-ssg/server/assets/CanvasRenderer-CwiiSPbH.js +3 -0
- package/dist-ssg/server/assets/WebGLRenderer-DZq9g4pY.js +3 -0
- package/dist-ssg/server/assets/WebGPURenderer-CC9srvlc.js +3 -0
- package/dist-ssg/server/assets/{browserAll-Br-Ym0s3.js → browserAll-CbppWmmr.js} +2 -2
- package/dist-ssg/server/assets/{config-guide-presentation-BNsPtfSX.js → config-guide-presentation-BysIO8oY.js} +1 -1
- package/dist-ssg/server/assets/{dist-D4wdS9IG.js → dist-9eozfPDO.js} +1 -1
- package/dist-ssg/server/assets/{dist-jJ40WsNS.js → dist-BL9BN3bD.js} +1 -1
- package/dist-ssg/server/assets/{dist-DLLg4uMo.js → dist-BvJegMAu.js} +1 -1
- package/dist-ssg/server/assets/{dist-BKolbUhu.js → dist-Bxv0KpK2.js} +1 -1
- package/dist-ssg/server/assets/{dist-DkcAEJix.js → dist-C3YYTwOF.js} +1 -1
- package/dist-ssg/server/assets/{dist-C-ifGdHx.js → dist-CBWX0qVQ.js} +1 -1
- package/dist-ssg/server/assets/{dist-tmI1Vtui.js → dist-CWgzRN8l.js} +1 -1
- package/dist-ssg/server/assets/dist-D3UkzXNJ.js +3 -0
- package/dist-ssg/server/assets/{dist-2q5MBzNz.js → dist-DLmT_-xD.js} +1 -1
- package/dist-ssg/server/assets/dist-X54KSZxt.js +3 -0
- package/dist-ssg/server/assets/dist-qBAal1ou.js +3 -0
- package/dist-ssg/server/assets/{dist-BXMtMtrz.js → dist-uy4rKjdF.js} +1 -1
- package/dist-ssg/server/assets/{entry-server-BrAwgnce.js → entry-server-C1flMDyD.js} +261 -155
- package/dist-ssg/server/assets/{init-d-mn_N98.js → init-CzleJ4fV.js} +1 -1
- package/dist-ssg/server/assets/trpc-4lRaWiqp.js +3 -0
- package/dist-ssg/server/assets/webworkerAll-Boyd6QDj.js +4 -0
- package/dist-ssg/server/ssr-entry-manifest.json +25 -25
- package/package.json +4 -4
- package/dist/assets/App-J7QMKvLP.css +0 -1
- package/dist-ssg/client/assets/CanvasRenderer-Dgiuwgmn.js +0 -1
- package/dist-ssg/client/assets/WebGLRenderer-BlOEHuOZ.js +0 -1
- package/dist-ssg/client/assets/WebGPURenderer-P8I2K_Xf.js +0 -1
- package/dist-ssg/client/assets/browserAll-D8-fUgsu.js +0 -1
- package/dist-ssg/client/assets/dist-BOrzLvBw.js +0 -1
- package/dist-ssg/client/assets/dist-D-Qw6bA0.js +0 -1
- package/dist-ssg/client/assets/dist-kaLCvHyA.js +0 -1
- package/dist-ssg/client/assets/index-BvRDTcR7.css +0 -1
- package/dist-ssg/client/assets/webworkerAll-CortW4j-.js +0 -1
- package/dist-ssg/server/assets/CanvasRenderer-BddS1srD.js +0 -3
- package/dist-ssg/server/assets/WebGLRenderer-CI_abbD1.js +0 -3
- package/dist-ssg/server/assets/WebGPURenderer-CGD9VYdm.js +0 -3
- package/dist-ssg/server/assets/dist-BuMA6YKx.js +0 -3
- package/dist-ssg/server/assets/dist-DHm81glc.js +0 -3
- package/dist-ssg/server/assets/dist-DweGKZ3K.js +0 -3
- package/dist-ssg/server/assets/trpc-DUmUqj4-.js +0 -3
- package/dist-ssg/server/assets/webworkerAll-BE4Faerg.js +0 -4
|
@@ -30908,7 +30908,7 @@ var NavController = class {
|
|
|
30908
30908
|
this.storageKey = scopedStorageKey;
|
|
30909
30909
|
this.rebindProjectScopedLayout(scopedStorageKey);
|
|
30910
30910
|
}
|
|
30911
|
-
const { trpcClient } = await import("./trpc-
|
|
30911
|
+
const { trpcClient } = await import("./trpc-4lRaWiqp.js");
|
|
30912
30912
|
const remote = parsePersistedLayout(await trpcClient.kv.get.query({ key: this.storageKey }));
|
|
30913
30913
|
if (remote) {
|
|
30914
30914
|
if (remote.updatedAt > this.state.updatedAt) this.dispatch({
|
|
@@ -31051,7 +31051,7 @@ var NavController = class {
|
|
|
31051
31051
|
this.cancelPersistTimer();
|
|
31052
31052
|
this.persistTimer = setTimeout(() => {
|
|
31053
31053
|
this.persistTimer = null;
|
|
31054
|
-
import("./trpc-
|
|
31054
|
+
import("./trpc-4lRaWiqp.js").then(({ trpcClient }) => trpcClient.kv.set.mutate({
|
|
31055
31055
|
key: this.storageKey,
|
|
31056
31056
|
value: {
|
|
31057
31057
|
mainTabs: this.state.mainTabs,
|
|
@@ -71013,7 +71013,7 @@ var browserExt = {
|
|
|
71013
71013
|
},
|
|
71014
71014
|
test: () => true,
|
|
71015
71015
|
load: async () => {
|
|
71016
|
-
await import("./browserAll-
|
|
71016
|
+
await import("./browserAll-CbppWmmr.js");
|
|
71017
71017
|
}
|
|
71018
71018
|
};
|
|
71019
71019
|
//#endregion
|
|
@@ -71026,7 +71026,7 @@ var webworkerExt = {
|
|
|
71026
71026
|
},
|
|
71027
71027
|
test: () => typeof self !== "undefined" && self.WorkerGlobalScope !== void 0,
|
|
71028
71028
|
load: async () => {
|
|
71029
|
-
await import("./webworkerAll-
|
|
71029
|
+
await import("./webworkerAll-Boyd6QDj.js");
|
|
71030
71030
|
}
|
|
71031
71031
|
};
|
|
71032
71032
|
//#endregion
|
|
@@ -73620,7 +73620,7 @@ async function autoDetectRenderer(options) {
|
|
|
73620
73620
|
for (let i = 0; i < preferredOrder.length; i++) {
|
|
73621
73621
|
const rendererType = preferredOrder[i];
|
|
73622
73622
|
if (rendererType === "webgpu" && await isWebGPUSupported()) {
|
|
73623
|
-
const { WebGPURenderer } = await import("./WebGPURenderer-
|
|
73623
|
+
const { WebGPURenderer } = await import("./WebGPURenderer-CC9srvlc.js");
|
|
73624
73624
|
RendererClass = WebGPURenderer;
|
|
73625
73625
|
finalOptions = {
|
|
73626
73626
|
...options,
|
|
@@ -73628,7 +73628,7 @@ async function autoDetectRenderer(options) {
|
|
|
73628
73628
|
};
|
|
73629
73629
|
break;
|
|
73630
73630
|
} else if (rendererType === "webgl" && isWebGLSupported(options.failIfMajorPerformanceCaveat ?? AbstractRenderer.defaultOptions.failIfMajorPerformanceCaveat)) {
|
|
73631
|
-
const { WebGLRenderer } = await import("./WebGLRenderer-
|
|
73631
|
+
const { WebGLRenderer } = await import("./WebGLRenderer-DZq9g4pY.js");
|
|
73632
73632
|
RendererClass = WebGLRenderer;
|
|
73633
73633
|
finalOptions = {
|
|
73634
73634
|
...options,
|
|
@@ -73636,7 +73636,7 @@ async function autoDetectRenderer(options) {
|
|
|
73636
73636
|
};
|
|
73637
73637
|
break;
|
|
73638
73638
|
} else if (rendererType === "canvas") {
|
|
73639
|
-
const { CanvasRenderer } = await import("./CanvasRenderer-
|
|
73639
|
+
const { CanvasRenderer } = await import("./CanvasRenderer-CwiiSPbH.js");
|
|
73640
73640
|
RendererClass = CanvasRenderer;
|
|
73641
73641
|
finalOptions = {
|
|
73642
73642
|
...options,
|
|
@@ -97337,7 +97337,7 @@ var TerminalController = class {
|
|
|
97337
97337
|
if (this.configPersistTimer) clearTimeout(this.configPersistTimer);
|
|
97338
97338
|
this.configPersistTimer = setTimeout(() => {
|
|
97339
97339
|
this.configPersistTimer = null;
|
|
97340
|
-
import("./trpc-
|
|
97340
|
+
import("./trpc-4lRaWiqp.js").then(({ trpcClient }) => {
|
|
97341
97341
|
trpcClient.config.update.mutate({ terminal: { fontSize: this.config.fontSize } });
|
|
97342
97342
|
}).catch(() => {});
|
|
97343
97343
|
}, CONFIG_PERSIST_DEBOUNCE);
|
|
@@ -107862,7 +107862,7 @@ var languages = [
|
|
|
107862
107862
|
name: "CSS",
|
|
107863
107863
|
extensions: ["css"],
|
|
107864
107864
|
load() {
|
|
107865
|
-
return import("./dist-
|
|
107865
|
+
return import("./dist-D3UkzXNJ.js").then((m) => m.css());
|
|
107866
107866
|
}
|
|
107867
107867
|
}),
|
|
107868
107868
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -107882,7 +107882,7 @@ var languages = [
|
|
|
107882
107882
|
"hbs"
|
|
107883
107883
|
],
|
|
107884
107884
|
load() {
|
|
107885
|
-
return import("./dist-
|
|
107885
|
+
return import("./dist-9eozfPDO.js").then((m) => m.html());
|
|
107886
107886
|
}
|
|
107887
107887
|
}),
|
|
107888
107888
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -107916,7 +107916,7 @@ var languages = [
|
|
|
107916
107916
|
"jinja2"
|
|
107917
107917
|
],
|
|
107918
107918
|
load() {
|
|
107919
|
-
return import("./dist-
|
|
107919
|
+
return import("./dist-C3YYTwOF.js").then((m) => m.jinja());
|
|
107920
107920
|
}
|
|
107921
107921
|
}),
|
|
107922
107922
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -107924,7 +107924,7 @@ var languages = [
|
|
|
107924
107924
|
alias: ["json5"],
|
|
107925
107925
|
extensions: ["json", "map"],
|
|
107926
107926
|
load() {
|
|
107927
|
-
return import("./dist-
|
|
107927
|
+
return import("./dist-qBAal1ou.js").then((m) => m.json());
|
|
107928
107928
|
}
|
|
107929
107929
|
}),
|
|
107930
107930
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -107938,14 +107938,14 @@ var languages = [
|
|
|
107938
107938
|
name: "LESS",
|
|
107939
107939
|
extensions: ["less"],
|
|
107940
107940
|
load() {
|
|
107941
|
-
return import("./dist-
|
|
107941
|
+
return import("./dist-Bxv0KpK2.js").then((m) => m.less());
|
|
107942
107942
|
}
|
|
107943
107943
|
}),
|
|
107944
107944
|
/* @__PURE__ */ LanguageDescription.of({
|
|
107945
107945
|
name: "Liquid",
|
|
107946
107946
|
extensions: ["liquid"],
|
|
107947
107947
|
load() {
|
|
107948
|
-
return import("./dist-
|
|
107948
|
+
return import("./dist-CWgzRN8l.js").then((m) => m.liquid());
|
|
107949
107949
|
}
|
|
107950
107950
|
}),
|
|
107951
107951
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -107962,7 +107962,7 @@ var languages = [
|
|
|
107962
107962
|
"mkd"
|
|
107963
107963
|
],
|
|
107964
107964
|
load() {
|
|
107965
|
-
return import("./dist-
|
|
107965
|
+
return import("./dist-uy4rKjdF.js").then((m) => m.markdown());
|
|
107966
107966
|
}
|
|
107967
107967
|
}),
|
|
107968
107968
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -107988,7 +107988,7 @@ var languages = [
|
|
|
107988
107988
|
"phtml"
|
|
107989
107989
|
],
|
|
107990
107990
|
load() {
|
|
107991
|
-
return import("./dist-
|
|
107991
|
+
return import("./dist-DLmT_-xD.js").then((m) => m.php());
|
|
107992
107992
|
}
|
|
107993
107993
|
}),
|
|
107994
107994
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -108028,14 +108028,14 @@ var languages = [
|
|
|
108028
108028
|
name: "Sass",
|
|
108029
108029
|
extensions: ["sass"],
|
|
108030
108030
|
load() {
|
|
108031
|
-
return import("./dist-
|
|
108031
|
+
return import("./dist-BL9BN3bD.js").then((m) => m.sass({ indented: true }));
|
|
108032
108032
|
}
|
|
108033
108033
|
}),
|
|
108034
108034
|
/* @__PURE__ */ LanguageDescription.of({
|
|
108035
108035
|
name: "SCSS",
|
|
108036
108036
|
extensions: ["scss"],
|
|
108037
108037
|
load() {
|
|
108038
|
-
return import("./dist-
|
|
108038
|
+
return import("./dist-BL9BN3bD.js").then((m) => m.sass());
|
|
108039
108039
|
}
|
|
108040
108040
|
}),
|
|
108041
108041
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -108102,7 +108102,7 @@ var languages = [
|
|
|
108102
108102
|
alias: ["yml"],
|
|
108103
108103
|
extensions: ["yaml", "yml"],
|
|
108104
108104
|
load() {
|
|
108105
|
-
return import("./dist-
|
|
108105
|
+
return import("./dist-X54KSZxt.js").then((m) => m.yaml());
|
|
108106
108106
|
}
|
|
108107
108107
|
}),
|
|
108108
108108
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -108989,13 +108989,13 @@ var languages = [
|
|
|
108989
108989
|
name: "Vue",
|
|
108990
108990
|
extensions: ["vue"],
|
|
108991
108991
|
load() {
|
|
108992
|
-
return import("./dist-
|
|
108992
|
+
return import("./dist-CBWX0qVQ.js").then((m) => m.vue());
|
|
108993
108993
|
}
|
|
108994
108994
|
}),
|
|
108995
108995
|
/* @__PURE__ */ LanguageDescription.of({
|
|
108996
108996
|
name: "Angular Template",
|
|
108997
108997
|
load() {
|
|
108998
|
-
return import("./dist-
|
|
108998
|
+
return import("./dist-BvJegMAu.js").then((m) => m.angular());
|
|
108999
108999
|
}
|
|
109000
109000
|
})
|
|
109001
109001
|
];
|
|
@@ -168623,6 +168623,113 @@ var motion = /* @__PURE__ */ createMotionProxy({
|
|
|
168623
168623
|
...layout
|
|
168624
168624
|
}, createDomVisualElement);
|
|
168625
168625
|
//#endregion
|
|
168626
|
+
//#region src/components/progressive-blur.tsx
|
|
168627
|
+
/**
|
|
168628
|
+
* Orthogonal intents (created 2026-08-04 Asia/Shanghai):
|
|
168629
|
+
* 1. Render a direction-aware progressive backdrop blur from a bounded level tuple.
|
|
168630
|
+
* 2. Scale overlapping mask bands from the actual level count instead of assuming eight levels.
|
|
168631
|
+
* 3. Preserve positioning-free Grid composition and expose one theme-owned surface layer.
|
|
168632
|
+
*
|
|
168633
|
+
* Original request (2026-08-04): refine Kanban edge fusion from Magic UI Progressive Blur while reducing blurLevels because eight instances render together.
|
|
168634
|
+
*/
|
|
168635
|
+
var DEFAULT_BLUR_LEVELS = [
|
|
168636
|
+
.5,
|
|
168637
|
+
2,
|
|
168638
|
+
6
|
|
168639
|
+
];
|
|
168640
|
+
function formatPercent(value) {
|
|
168641
|
+
return Number(value.toFixed(4)).toString();
|
|
168642
|
+
}
|
|
168643
|
+
function createLayerMask(index, layerCount, position) {
|
|
168644
|
+
const direction = position === "bottom" ? "to bottom" : "to top";
|
|
168645
|
+
const step = 100 / layerCount;
|
|
168646
|
+
if (index === layerCount - 1) return `linear-gradient(${direction}, transparent ${formatPercent(100 - step)}%, black 100%)`;
|
|
168647
|
+
const transparentStart = index * step;
|
|
168648
|
+
const opaqueStart = (index + 1) * step;
|
|
168649
|
+
const opaqueEnd = (index + 2) * step;
|
|
168650
|
+
const transparentEnd = (index + 3) * step;
|
|
168651
|
+
return `linear-gradient(${direction}, transparent ${formatPercent(transparentStart)}%, black ${formatPercent(opaqueStart)}%, black ${formatPercent(opaqueEnd)}%, transparent ${formatPercent(transparentEnd)}%)`;
|
|
168652
|
+
}
|
|
168653
|
+
/** Progressive backdrop blur whose overlapping bands scale with its blur-level count. */
|
|
168654
|
+
function ProgressiveBlur({ position, blurLevels = DEFAULT_BLUR_LEVELS, surfaceClassName, className, ...divProps }) {
|
|
168655
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
168656
|
+
...divProps,
|
|
168657
|
+
"aria-hidden": "true",
|
|
168658
|
+
"data-progressive-blur": position,
|
|
168659
|
+
"data-progressive-blur-levels": blurLevels.length,
|
|
168660
|
+
className: cn$1("progressive-blur grid", className),
|
|
168661
|
+
children: [blurLevels.map((blur, index) => {
|
|
168662
|
+
const maskImage = createLayerMask(index, blurLevels.length, position);
|
|
168663
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
168664
|
+
"data-progressive-blur-layer": index,
|
|
168665
|
+
className: "progressive-blur__layer",
|
|
168666
|
+
style: {
|
|
168667
|
+
zIndex: index + 1,
|
|
168668
|
+
backdropFilter: `blur(${blur}px)`,
|
|
168669
|
+
WebkitBackdropFilter: `blur(${blur}px)`,
|
|
168670
|
+
maskImage,
|
|
168671
|
+
WebkitMaskImage: maskImage
|
|
168672
|
+
}
|
|
168673
|
+
}, `${blur}:${index}`);
|
|
168674
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
168675
|
+
"data-progressive-blur-surface": "",
|
|
168676
|
+
className: cn$1("progressive-blur__surface", surfaceClassName),
|
|
168677
|
+
style: { zIndex: blurLevels.length + 1 }
|
|
168678
|
+
})]
|
|
168679
|
+
});
|
|
168680
|
+
}
|
|
168681
|
+
//#endregion
|
|
168682
|
+
//#region src/components/kanban/kanban-lane-viewport.tsx
|
|
168683
|
+
/**
|
|
168684
|
+
* Orthogonal intents (updated 2026-08-04 Asia/Shanghai):
|
|
168685
|
+
* 1. Layer one semantic lane header and two visual edge veils over a full-height row scroller.
|
|
168686
|
+
* 2. Reserve readable header/footer landing space through density-owned scroll padding.
|
|
168687
|
+
* 3. Forward native section interactions without owning Kanban data or operations.
|
|
168688
|
+
*
|
|
168689
|
+
* Original request (2026-08-03): layer title and bottom space over a padded list with Grid, gradients, and progressive backdrop blur.
|
|
168690
|
+
* Owner refinement (2026-08-04): follow Magic UI Progressive Blur with fewer blur levels because eight lane-edge instances render together.
|
|
168691
|
+
*/
|
|
168692
|
+
var KANBAN_BLUR_LEVELS = [
|
|
168693
|
+
.5,
|
|
168694
|
+
2,
|
|
168695
|
+
6
|
|
168696
|
+
];
|
|
168697
|
+
/** Grid-layered lane viewport with one independent block-axis scroll owner. */
|
|
168698
|
+
function KanbanLaneViewport({ laneId, density, header, children, className, ...sectionProps }) {
|
|
168699
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", {
|
|
168700
|
+
...sectionProps,
|
|
168701
|
+
"data-kanban-lane": laneId,
|
|
168702
|
+
"data-kanban-lane-density": density,
|
|
168703
|
+
className: cn$1("kanban-lane-viewport border-border/70 grid min-h-0 min-w-0 overflow-hidden border-t", className),
|
|
168704
|
+
children: [
|
|
168705
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
168706
|
+
"data-kanban-lane-scroll": laneId,
|
|
168707
|
+
className: "kanban-lane-viewport__scroll scrollbar-thin scrollbar-track-transparent scrollbar-thumb-[color-mix(in_srgb,currentColor,transparent_78%)] min-h-0 overflow-y-auto overflow-x-hidden overscroll-contain pr-1",
|
|
168708
|
+
children
|
|
168709
|
+
}),
|
|
168710
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProgressiveBlur, {
|
|
168711
|
+
position: "top",
|
|
168712
|
+
blurLevels: KANBAN_BLUR_LEVELS,
|
|
168713
|
+
"data-kanban-lane-veil": "top",
|
|
168714
|
+
className: "kanban-lane-viewport__veil kanban-lane-viewport__veil--top",
|
|
168715
|
+
surfaceClassName: "kanban-lane-viewport__veil-surface kanban-lane-viewport__veil-surface--top"
|
|
168716
|
+
}),
|
|
168717
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("header", {
|
|
168718
|
+
"data-kanban-lane-header": laneId,
|
|
168719
|
+
className: "kanban-lane-viewport__header",
|
|
168720
|
+
children: header
|
|
168721
|
+
}),
|
|
168722
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProgressiveBlur, {
|
|
168723
|
+
position: "bottom",
|
|
168724
|
+
blurLevels: KANBAN_BLUR_LEVELS,
|
|
168725
|
+
"data-kanban-lane-veil": "bottom",
|
|
168726
|
+
className: "kanban-lane-viewport__veil kanban-lane-viewport__veil--bottom",
|
|
168727
|
+
surfaceClassName: "kanban-lane-viewport__veil-surface kanban-lane-viewport__veil-surface--bottom"
|
|
168728
|
+
})
|
|
168729
|
+
]
|
|
168730
|
+
});
|
|
168731
|
+
}
|
|
168732
|
+
//#endregion
|
|
168626
168733
|
//#region src/components/kanban/kanban-model.ts
|
|
168627
168734
|
/**
|
|
168628
168735
|
* Orthogonal intents (created 2026-07-28 Asia/Shanghai):
|
|
@@ -168687,14 +168794,15 @@ function getKanbanArchiveTimestamp(item) {
|
|
|
168687
168794
|
//#endregion
|
|
168688
168795
|
//#region src/components/kanban/interactive-kanban.tsx
|
|
168689
168796
|
/**
|
|
168690
|
-
* Orthogonal intents (
|
|
168797
|
+
* Orthogonal intents (updated 2026-08-03 Asia/Shanghai):
|
|
168691
168798
|
* 1. Render live objective lanes with independent active/archive lifecycle evidence.
|
|
168692
168799
|
* 2. Expose accessible Apply/Archive launchers without mutating projected state.
|
|
168693
168800
|
* 3. Resolve archive drops through DataTransfer identity and current-row authority.
|
|
168694
|
-
* 4. Preserve progressive evidence while assigning one inline scroller and
|
|
168801
|
+
* 4. Preserve progressive evidence while assigning one inline scroller and layered lane block scrollers.
|
|
168695
168802
|
*
|
|
168696
168803
|
* Original request (2026-07-28): implement the reviewed interactive Kanban rewrite.
|
|
168697
168804
|
* Owner correction (2026-07-28): remove double horizontal scrolling and let each lane scroll vertically.
|
|
168805
|
+
* Original request (2026-08-03): layer title and bottom space over a padded list with Grid, gradients, and progressive backdrop blur.
|
|
168698
168806
|
*/
|
|
168699
168807
|
var CHANGE_DRAG_MIME = "application/x-openspecui-change-id";
|
|
168700
168808
|
var RANGE_OPTIONS$1 = [
|
|
@@ -168753,7 +168861,9 @@ function InteractiveKanban({ activeItems, archivedItems, statuses, range, onRang
|
|
|
168753
168861
|
const rowCount = archived ? archiveRows.length : activeRows.length;
|
|
168754
168862
|
const initialLoading = archived ? archiveState.initialLoading : activeState.initialLoading;
|
|
168755
168863
|
const updating = archived ? archiveState.updating : activeState.updating;
|
|
168756
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.
|
|
168864
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(KanbanLaneViewport, {
|
|
168865
|
+
laneId: lane.id,
|
|
168866
|
+
density: "full",
|
|
168757
168867
|
"data-lane": lane.id,
|
|
168758
168868
|
onDragOver: archived ? (event) => {
|
|
168759
168869
|
if (!archiveDropCurrent || !event.dataTransfer.types.includes(CHANGE_DRAG_MIME)) return;
|
|
@@ -168765,9 +168875,9 @@ function InteractiveKanban({ activeItems, archivedItems, statuses, range, onRang
|
|
|
168765
168875
|
if (!event.currentTarget.contains(event.relatedTarget)) setDropActive(false);
|
|
168766
168876
|
} : void 0,
|
|
168767
168877
|
onDrop: archived ? handleArchiveDrop : void 0,
|
|
168768
|
-
className: cn$1("
|
|
168769
|
-
|
|
168770
|
-
className: "flex h-
|
|
168878
|
+
className: cn$1("transition-colors", archived && dropActive && "border-primary bg-primary/5"),
|
|
168879
|
+
header: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
168880
|
+
className: "flex h-full min-w-0 items-center justify-between gap-2 px-1",
|
|
168771
168881
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
168772
168882
|
className: "flex min-w-0 items-center gap-2",
|
|
168773
168883
|
children: [
|
|
@@ -168788,79 +168898,76 @@ function InteractiveKanban({ activeItems, archivedItems, statuses, range, onRang
|
|
|
168788
168898
|
options: RANGE_OPTIONS$1,
|
|
168789
168899
|
onValueChange: onRangeChange,
|
|
168790
168900
|
ariaLabel: "Archived time range",
|
|
168791
|
-
className: "h-7 min-w-0 gap-1 px-2 text-xs"
|
|
168901
|
+
className: "pointer-events-auto h-7 min-w-0 gap-1 px-2 text-xs"
|
|
168792
168902
|
}) : null]
|
|
168793
|
-
}),
|
|
168794
|
-
|
|
168795
|
-
|
|
168796
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.
|
|
168797
|
-
|
|
168798
|
-
|
|
168799
|
-
|
|
168800
|
-
|
|
168801
|
-
|
|
168802
|
-
|
|
168803
|
-
|
|
168804
|
-
|
|
168805
|
-
|
|
168806
|
-
|
|
168807
|
-
|
|
168808
|
-
|
|
168809
|
-
|
|
168810
|
-
|
|
168811
|
-
|
|
168812
|
-
|
|
168813
|
-
|
|
168814
|
-
|
|
168815
|
-
|
|
168816
|
-
|
|
168817
|
-
|
|
168818
|
-
|
|
168819
|
-
|
|
168820
|
-
|
|
168821
|
-
|
|
168822
|
-
|
|
168823
|
-
|
|
168824
|
-
|
|
168825
|
-
|
|
168826
|
-
|
|
168827
|
-
|
|
168828
|
-
|
|
168829
|
-
|
|
168830
|
-
|
|
168831
|
-
|
|
168832
|
-
|
|
168833
|
-
|
|
168834
|
-
|
|
168835
|
-
|
|
168836
|
-
|
|
168837
|
-
|
|
168838
|
-
|
|
168839
|
-
|
|
168840
|
-
|
|
168841
|
-
|
|
168842
|
-
|
|
168843
|
-
|
|
168844
|
-
|
|
168845
|
-
onApply,
|
|
168846
|
-
onArchive
|
|
168847
|
-
})
|
|
168848
|
-
}, `active:${item.id}`))]
|
|
168849
|
-
}),
|
|
168850
|
-
!initialLoading && rowCount === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
168851
|
-
className: "border-border/60 text-muted-foreground flex h-20 items-center justify-center rounded-md border border-dashed",
|
|
168852
|
-
children: lane.id === "no-tasks" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FileQuestion, {
|
|
168853
|
-
className: "h-4 w-4",
|
|
168854
|
-
"aria-label": "No entries"
|
|
168855
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ListChecks, {
|
|
168856
|
-
className: "h-4 w-4",
|
|
168857
|
-
"aria-label": "No entries"
|
|
168903
|
+
}),
|
|
168904
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RealtimeRevalidateCue, {
|
|
168905
|
+
active: updating && rowCount > 0,
|
|
168906
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(motion.div, {
|
|
168907
|
+
layout: true,
|
|
168908
|
+
className: "min-h-24 space-y-2",
|
|
168909
|
+
children: [
|
|
168910
|
+
initialLoading && rowCount === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChangeListSkeleton, { count: 2 }) : null,
|
|
168911
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(AnimatePresence, {
|
|
168912
|
+
initial: false,
|
|
168913
|
+
mode: "popLayout",
|
|
168914
|
+
children: [archiveRows.map((item) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(motion.div, {
|
|
168915
|
+
layout: true,
|
|
168916
|
+
layoutId: `live-kanban:${item.id}`,
|
|
168917
|
+
initial: {
|
|
168918
|
+
opacity: 0,
|
|
168919
|
+
y: 4
|
|
168920
|
+
},
|
|
168921
|
+
animate: {
|
|
168922
|
+
opacity: 1,
|
|
168923
|
+
y: 0
|
|
168924
|
+
},
|
|
168925
|
+
exit: {
|
|
168926
|
+
opacity: 0,
|
|
168927
|
+
scale: .98
|
|
168928
|
+
},
|
|
168929
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ArchivedRow, { item })
|
|
168930
|
+
}, `archived:${item.id}`)), activeRows.map((item) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(motion.div, {
|
|
168931
|
+
layout: true,
|
|
168932
|
+
layoutId: `live-kanban:${item.id}`,
|
|
168933
|
+
initial: {
|
|
168934
|
+
opacity: 0,
|
|
168935
|
+
y: 4
|
|
168936
|
+
},
|
|
168937
|
+
animate: {
|
|
168938
|
+
opacity: 1,
|
|
168939
|
+
y: 0
|
|
168940
|
+
},
|
|
168941
|
+
exit: {
|
|
168942
|
+
opacity: 0,
|
|
168943
|
+
scale: .98
|
|
168944
|
+
},
|
|
168945
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ActiveRow, {
|
|
168946
|
+
item,
|
|
168947
|
+
status: statusById.get(item.id),
|
|
168948
|
+
canApply: activeOperationsCurrent && applyStatusCurrent,
|
|
168949
|
+
canArchive: activeOperationsCurrent,
|
|
168950
|
+
canDragArchive: archiveDropCurrent,
|
|
168951
|
+
applyBlockedReason: rootBlockedReason ?? (applyStatusCurrent ? null : "Apply availability is not current."),
|
|
168952
|
+
archiveBlockedReason: rootBlockedReason,
|
|
168953
|
+
onApply,
|
|
168954
|
+
onArchive
|
|
168858
168955
|
})
|
|
168859
|
-
})
|
|
168860
|
-
|
|
168861
|
-
|
|
168956
|
+
}, `active:${item.id}`))]
|
|
168957
|
+
}),
|
|
168958
|
+
!initialLoading && rowCount === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
168959
|
+
className: "border-border/60 text-muted-foreground flex h-20 items-center justify-center rounded-md border border-dashed",
|
|
168960
|
+
children: lane.id === "no-tasks" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FileQuestion, {
|
|
168961
|
+
className: "h-4 w-4",
|
|
168962
|
+
"aria-label": "No entries"
|
|
168963
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ListChecks, {
|
|
168964
|
+
className: "h-4 w-4",
|
|
168965
|
+
"aria-label": "No entries"
|
|
168966
|
+
})
|
|
168967
|
+
}) : null
|
|
168968
|
+
]
|
|
168862
168969
|
})
|
|
168863
|
-
})
|
|
168970
|
+
})
|
|
168864
168971
|
}, lane.id);
|
|
168865
168972
|
})
|
|
168866
168973
|
})]
|
|
@@ -169013,15 +169120,16 @@ function ProjectionEvidence({ activeError, archiveError, applyStatusError, rowEr
|
|
|
169013
169120
|
//#endregion
|
|
169014
169121
|
//#region src/components/kanban/readonly-kanban.tsx
|
|
169015
169122
|
/**
|
|
169016
|
-
* Orthogonal intents (updated 2026-
|
|
169123
|
+
* Orthogonal intents (updated 2026-08-03 Asia/Shanghai):
|
|
169017
169124
|
* 1. Render objective Change lanes with navigation and no operation callbacks.
|
|
169018
169125
|
* 2. Share one compact/full presentation while compact Pending geometry stays fixed.
|
|
169019
|
-
* 3. Own a 1/2/4-column container-responsive topology
|
|
169126
|
+
* 3. Own a 1/2/4-column container-responsive topology composed from layered lane viewports.
|
|
169020
169127
|
* 4. Preserve list continuity through motion layout transitions and stable identities.
|
|
169021
169128
|
*
|
|
169022
169129
|
* Original request (2026-07-28): add ReadonlyKanban to Dashboard and keep static mode objective.
|
|
169023
169130
|
* Owner correction (2026-07-28): use container queries for 4x1, 2x2, and 1x4 without horizontal scrolling.
|
|
169024
169131
|
* Original request (2026-07-31): "Kanban 的高度可以固定下来,并且要让每个group都可以独立滚动"
|
|
169132
|
+
* Original request (2026-08-03): layer title and bottom space over a padded list with Grid, gradients, and progressive backdrop blur.
|
|
169025
169133
|
*/
|
|
169026
169134
|
/** Readonly objective Kanban with navigation but no mutation capability. */
|
|
169027
169135
|
function ReadonlyKanban({ activeItems, archivedItems, activeCounts, archivedCount, variant = "full", pending = false, className }) {
|
|
@@ -169033,14 +169141,15 @@ function ReadonlyKanban({ activeItems, archivedItems, activeCounts, archivedCoun
|
|
|
169033
169141
|
className: cn$1("@container min-w-0 max-w-full overflow-x-clip", compact && "@[32rem]:h-[32rem] @[64rem]:h-72 h-[46rem]", className),
|
|
169034
169142
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
169035
169143
|
"data-testid": "readonly-kanban-grid",
|
|
169036
|
-
className: cn$1("@[32rem]:grid-cols-2 @[64rem]:grid-cols-4 grid w-full min-w-0 max-w-full grid-cols-1 gap-3 overflow-x-clip
|
|
169144
|
+
className: cn$1("@[32rem]:grid-cols-2 @[64rem]:grid-cols-4 grid w-full min-w-0 max-w-full grid-cols-1 gap-3 overflow-x-clip", compact && "@[32rem]:grid-rows-2 @[64rem]:grid-rows-1 h-full min-h-0 grid-rows-4"),
|
|
169037
169145
|
children: KANBAN_LANES.map((lane) => {
|
|
169038
169146
|
const rows = lane.id === "archived" ? archivedItems : grouped[lane.id];
|
|
169039
169147
|
const count = lane.id === "archived" ? archivedCount : activeCounts[lane.id];
|
|
169040
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.
|
|
169041
|
-
|
|
169042
|
-
|
|
169043
|
-
|
|
169148
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(KanbanLaneViewport, {
|
|
169149
|
+
laneId: lane.id,
|
|
169150
|
+
density: compact ? "compact" : "full",
|
|
169151
|
+
header: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
169152
|
+
className: "flex h-full min-w-0 items-center justify-between gap-2 px-1",
|
|
169044
169153
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
169045
169154
|
className: "flex min-w-0 items-center gap-2",
|
|
169046
169155
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: cn$1("h-2 w-2 shrink-0 rounded-full", lane.accentClass) }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", {
|
|
@@ -169053,57 +169162,54 @@ function ReadonlyKanban({ activeItems, archivedItems, activeCounts, archivedCoun
|
|
|
169053
169162
|
size: "xs",
|
|
169054
169163
|
shape: "pill"
|
|
169055
169164
|
})]
|
|
169056
|
-
}),
|
|
169057
|
-
|
|
169058
|
-
className: "
|
|
169059
|
-
|
|
169060
|
-
|
|
169061
|
-
"
|
|
169062
|
-
children:
|
|
169063
|
-
|
|
169064
|
-
|
|
169065
|
-
|
|
169066
|
-
|
|
169067
|
-
|
|
169068
|
-
|
|
169069
|
-
|
|
169070
|
-
|
|
169071
|
-
|
|
169072
|
-
|
|
169073
|
-
|
|
169074
|
-
|
|
169075
|
-
|
|
169076
|
-
|
|
169077
|
-
|
|
169078
|
-
|
|
169079
|
-
|
|
169080
|
-
|
|
169081
|
-
|
|
169082
|
-
|
|
169083
|
-
|
|
169084
|
-
|
|
169085
|
-
|
|
169086
|
-
|
|
169087
|
-
|
|
169088
|
-
|
|
169089
|
-
|
|
169090
|
-
|
|
169091
|
-
laneId: lane.id,
|
|
169092
|
-
compact
|
|
169093
|
-
})
|
|
169094
|
-
}, `${lane.id}:${item.id}`))
|
|
169095
|
-
}), rows.length === 0 && count === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
169096
|
-
className: "border-border/60 text-muted-foreground flex h-16 items-center justify-center rounded-md border border-dashed",
|
|
169097
|
-
children: lane.id === "no-tasks" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FileQuestion, {
|
|
169098
|
-
className: "h-4 w-4",
|
|
169099
|
-
"aria-label": "No entries"
|
|
169100
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ListChecks, {
|
|
169101
|
-
className: "h-4 w-4",
|
|
169102
|
-
"aria-label": "No entries"
|
|
169165
|
+
}),
|
|
169166
|
+
children: pending ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
169167
|
+
className: "space-y-2",
|
|
169168
|
+
"aria-hidden": "true",
|
|
169169
|
+
children: Array.from({ length: 3 }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
169170
|
+
className: "border-border/70 bg-card space-y-2 rounded-md border px-2.5 py-2",
|
|
169171
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(RealtimeSkeleton, { className: "h-3 w-3/4" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RealtimeSkeleton, { className: "h-2.5 w-1/2" })]
|
|
169172
|
+
}, index))
|
|
169173
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(motion.div, {
|
|
169174
|
+
layout: true,
|
|
169175
|
+
className: "space-y-2",
|
|
169176
|
+
"data-lane": lane.id,
|
|
169177
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(AnimatePresence, {
|
|
169178
|
+
initial: false,
|
|
169179
|
+
mode: "popLayout",
|
|
169180
|
+
children: rows.map((item) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(motion.div, {
|
|
169181
|
+
layout: true,
|
|
169182
|
+
layoutId: `readonly-kanban:${item.id}`,
|
|
169183
|
+
initial: {
|
|
169184
|
+
opacity: 0,
|
|
169185
|
+
y: 4
|
|
169186
|
+
},
|
|
169187
|
+
animate: {
|
|
169188
|
+
opacity: 1,
|
|
169189
|
+
y: 0
|
|
169190
|
+
},
|
|
169191
|
+
exit: {
|
|
169192
|
+
opacity: 0,
|
|
169193
|
+
scale: .98
|
|
169194
|
+
},
|
|
169195
|
+
transition: { duration: .16 },
|
|
169196
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ReadonlyKanbanRow, {
|
|
169197
|
+
item,
|
|
169198
|
+
laneId: lane.id,
|
|
169199
|
+
compact
|
|
169103
169200
|
})
|
|
169104
|
-
})
|
|
169105
|
-
})
|
|
169106
|
-
|
|
169201
|
+
}, `${lane.id}:${item.id}`))
|
|
169202
|
+
}), rows.length === 0 && count === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
169203
|
+
className: "border-border/60 text-muted-foreground flex h-16 items-center justify-center rounded-md border border-dashed",
|
|
169204
|
+
children: lane.id === "no-tasks" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FileQuestion, {
|
|
169205
|
+
className: "h-4 w-4",
|
|
169206
|
+
"aria-label": "No entries"
|
|
169207
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ListChecks, {
|
|
169208
|
+
className: "h-4 w-4",
|
|
169209
|
+
"aria-label": "No entries"
|
|
169210
|
+
})
|
|
169211
|
+
}) : null]
|
|
169212
|
+
})
|
|
169107
169213
|
}, lane.id);
|
|
169108
169214
|
})
|
|
169109
169215
|
})
|
|
@@ -171752,7 +171858,7 @@ var CONFIG_GUIDE_STAGE_META = {
|
|
|
171752
171858
|
//#region src/components/config/config-guide.tsx
|
|
171753
171859
|
var ConfigGuideContext = (0, import_react.createContext)(null);
|
|
171754
171860
|
(0, import_react.lazy)(async () => {
|
|
171755
|
-
return { default: (await import("./config-guide-presentation-
|
|
171861
|
+
return { default: (await import("./config-guide-presentation-BysIO8oY.js")).ConfigGuidePresentationLayer };
|
|
171756
171862
|
});
|
|
171757
171863
|
/** Access the root-owned adaptive Guide runtime. */
|
|
171758
171864
|
function useConfigGuide() {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { it as extensions } from "./Geometry-jQ4l8GtP.js";
|
|
2
|
-
import { M as FilterPipe, j as FilterSystem } from "./entry-server-
|
|
2
|
+
import { M as FilterPipe, j as FilterSystem } from "./entry-server-C1flMDyD.js";
|
|
3
3
|
//#region ../../node_modules/.pnpm/pixi.js@8.16.0/node_modules/pixi.js/lib/filters/init.mjs
|
|
4
4
|
extensions.add(FilterSystem);
|
|
5
5
|
extensions.add(FilterPipe);
|