@omerdlw/base-framework 1.0.4 → 1.0.6
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/index.js +125 -94
- package/dist/index.js.map +1 -1
- package/dist/modules/ambient/color.d.ts +9 -4
- package/dist/modules/ambient/color.d.ts.map +1 -1
- package/dist/modules/ambient/extractor.d.ts +8 -0
- package/dist/modules/ambient/extractor.d.ts.map +1 -1
- package/dist/modules/ambient/index.js +78 -69
- package/dist/modules/ambient/index.js.map +1 -1
- package/dist/modules/dock/index.js +425 -393
- package/dist/modules/dock/index.js.map +1 -1
- package/dist/modules/dock/surface/context.d.ts.map +1 -1
- package/dist/modules/dock/surface/hooks.d.ts +5 -3
- package/dist/modules/dock/surface/hooks.d.ts.map +1 -1
- package/dist/modules/dock/surface/stack.d.ts.map +1 -1
- package/dist/modules/index.js +125 -94
- package/dist/modules/index.js.map +1 -1
- package/docs/modules/ambient.md +4 -4
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/modules/dock/surface/context.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/modules/dock/surface/context.tsx"],"names":[],"mappings":"AAWA,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,eAAe,EACpB,KAAK,SAAS,EACf,MAAM,UAAU,CAAC;AAGlB,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAE/D,eAAO,MAAM,wBAAwB;gBACvB,sBAAsB;mBACnB,wBAAwB;SACE,CAAC;AAE5C,eAAO,MAAM,kBAAkB;QACzB,UAAU;WACP,MAAM,GAAG,MAAM,GAAG,IAAI;EAI7B,CAAC;AAEH,wBAAgB,oBAAoB;;EAGnC;AAED,wBAAgB,YAAY,eAE3B;AAED,wBAAgB,gBAAgB,YAMtB;IAAE,YAAY,CAAC,EAAE,eAAe,CAAA;CAAE,GAClC,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;IAAE,YAAY,CAAC,EAAE,eAAe,CAAA;CAAE,CAAC,UASlE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,QAQnE;AAED,qBAAa,wBAAwB;IACnC,OAAO,CAAC,KAAK,CAMV;IAEH,IAAI,OAAO,WAEV;IAED,SAAS,GAAI,UAAU,MAAM,IAAI,gBAAoC;IAErE,SAAS,GAAI,WAAW,UAAU,weAIhC;IAEF,SAAS,GAAI,WAAW,UAAU,EAAE,QAAQ,eAAe,UAWzD;IAEF,YAAY,GAAI,WAAW,UAAU,UASnC;IAEF,YAAY,GAAI,WAAW,UAAU,UAAkC;CACxE;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,mBAAmB,CAGvB;IACJ,OAAO,CAAC,mBAAmB,CAAmD;IAC9E,OAAO,CAAC,KAAK,CAAoD;IAEjE,IAAI,OAAO,WAEV;IAED,SAAS,GAAI,UAAU,MAAM,IAAI,gBAAoC;IAErE,OAAO,CAAC,MAAM,CAGZ;IAEF,uBAAuB,GACrB,WAAW,UAAU,KACpB,0BAA0B,EAAE,CA4C7B;IAEF,YAAY,GAAI,WAAW,UAAU,EAAE,WAAW,OAAO,UA2BvD;IAEF,eAAe,GAAI,WAAW,UAAU,EAAE,aAAa,MAAM,UAc3D;IAEF,YAAY,GAAI,WAAW,UAAU,UAKnC;CACH"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type RefObject, type ReactNode } from "react";
|
|
1
|
+
import { type ComponentType, type RefObject, type ReactNode } from "react";
|
|
2
2
|
import { type PanInfo } from "motion/react";
|
|
3
|
-
import { DockSurfaceShellProps, type DockScheduledTaskId, type DockScheduler, type DockSurfaceActions, type SurfaceFlowDefinition, type SurfaceFlowDefinitionInput, type SurfaceFlowHandle, type SurfaceResult, type SurfaceStackEntry, type DockItem, type NormalizedSurfaceExtension, type SurfaceFlowContextValue, type SurfaceFlowState, type DockIconSource } from "../types";
|
|
3
|
+
import { DockSurfaceShellProps, type DockComponentProps, type DockScheduledTaskId, type DockScheduler, type DockSurfaceActions, type SurfaceFlowDefinition, type SurfaceFlowDefinitionInput, type SurfaceFlowHandle, type SurfaceResult, type SurfaceStackEntry, type DockItem, type NormalizedSurfaceExtension, type SurfaceFlowContextValue, type SurfaceFlowState, type DockIconSource } from "../types";
|
|
4
4
|
import { type SurfaceRuntimeRefs } from "./machine";
|
|
5
5
|
export declare function useSurfaceFlows({ closeSurface, openSurface, refs, syncSurfaceStack, }: {
|
|
6
6
|
closeSurface: DockSurfaceActions["closeSurface"];
|
|
@@ -66,12 +66,14 @@ export declare function useDockSurfaceControlsModel({ activeItem, hasExtensions,
|
|
|
66
66
|
export declare function SurfaceExtensionsProvider({ children, }: {
|
|
67
67
|
children: ReactNode;
|
|
68
68
|
}): import("react").JSX.Element;
|
|
69
|
-
export declare function useDockSurfaceExtension({ align, children, className, id, order, unstyled, }: {
|
|
69
|
+
export declare function useDockSurfaceExtension({ align, children, className, component, id, order, props: extensionProps, unstyled, }: {
|
|
70
70
|
align?: string;
|
|
71
71
|
children?: ReactNode;
|
|
72
72
|
className?: string;
|
|
73
|
+
component?: ComponentType<DockComponentProps> | null;
|
|
73
74
|
id?: string;
|
|
74
75
|
order?: number;
|
|
76
|
+
props?: DockComponentProps;
|
|
75
77
|
unstyled?: boolean;
|
|
76
78
|
}): void;
|
|
77
79
|
export declare function useIsSurfaceExtensionsVisible(activeItem: DockItem | null | undefined): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../../src/modules/dock/surface/hooks.tsx"],"names":[],"mappings":"AAEA,OAAO,EAUL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAIL,KAAK,OAAO,EACb,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,qBAAqB,EACrB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAQlB,OAAO,EAQL,KAAK,kBAAkB,EACxB,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../../src/modules/dock/surface/hooks.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../../../../src/modules/dock/surface/stack.ts"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,aAAa,EAElB,KAAK,kBAAkB,EAEvB,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,aAAa,EAElB,KAAK,WAAW,EAGjB,MAAM,UAAU,CAAC;AA6BlB,wBAAgB,eAAe,CAAC,EAC9B,oBAA2B,EAC3B,SAAgB,EAChB,WAAW,EACX,cAAc,GACf,EAAE;IACD,oBAAoB,CAAC,EACjB,CAAC,CAAC,OAAO,EAAE;QACT,IAAI,EAAE,kBAAkB,CAAC;QACzB,MAAM,EAAE,aAAa,CAAC;KACvB,KAAK,OAAO,CAAC,GACd,IAAI,CAAC;IACT,SAAS,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;;;oCAuRY,aAAa;gCA1BZ,aAAa,oBACJ,SAAS,GAAG,IAAI;;;;0BAhC3B,MAAM,oBAAmB,SAAS,GAAG,IAAI;6BAwExC,YAAY,WACX,kBAAkB,KACzB,OAAO,CAAC,aAAa,CAAC;;
|
|
1
|
+
{"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../../../../src/modules/dock/surface/stack.ts"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,aAAa,EAElB,KAAK,kBAAkB,EAEvB,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,aAAa,EAElB,KAAK,WAAW,EAGjB,MAAM,UAAU,CAAC;AA6BlB,wBAAgB,eAAe,CAAC,EAC9B,oBAA2B,EAC3B,SAAgB,EAChB,WAAW,EACX,cAAc,GACf,EAAE;IACD,oBAAoB,CAAC,EACjB,CAAC,CAAC,OAAO,EAAE;QACT,IAAI,EAAE,kBAAkB,CAAC;QACzB,MAAM,EAAE,aAAa,CAAC;KACvB,KAAK,OAAO,CAAC,GACd,IAAI,CAAC;IACT,SAAS,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;;;oCAuRY,aAAa;gCA1BZ,aAAa,oBACJ,SAAS,GAAG,IAAI;;;;0BAhC3B,MAAM,oBAAmB,SAAS,GAAG,IAAI;6BAwExC,YAAY,WACX,kBAAkB,KACzB,OAAO,CAAC,aAAa,CAAC;;uBAjMZ,CAAC;oBAAmB,CAAC;;oCA4FhB,SAAS,GAAG,IAAI;8BAzCtB,WAAW,oBAAmB,SAAS,GAAG,IAAI;;;;;;;;;;;;EAsS7D"}
|
package/dist/modules/index.js
CHANGED
|
@@ -5580,13 +5580,18 @@ init_theme();
|
|
|
5580
5580
|
// src/modules/ambient/color.ts
|
|
5581
5581
|
var COLOR_EXTRACT_CONFIG = Object.freeze({
|
|
5582
5582
|
blackChromaFactor: 0.35,
|
|
5583
|
-
primaryLightness: 0.74,
|
|
5584
|
-
maxBlackChroma: 0.055,
|
|
5585
5583
|
blackLightness: 0.15,
|
|
5586
5584
|
cacheLimit: 100,
|
|
5585
|
+
chromaGain: 9.4,
|
|
5586
|
+
hueBins: 36,
|
|
5587
|
+
maxBlackChroma: 0.055,
|
|
5587
5588
|
maxChroma: 0.28,
|
|
5588
|
-
|
|
5589
|
-
|
|
5589
|
+
maxPrimaryChroma: 0.24,
|
|
5590
|
+
minPixelChroma: 0.03,
|
|
5591
|
+
minPresence: 0.04,
|
|
5592
|
+
neutralChroma: 0.012,
|
|
5593
|
+
primaryLightness: 0.74,
|
|
5594
|
+
sampleSize: 64
|
|
5590
5595
|
});
|
|
5591
5596
|
function srgbToLinear(c) {
|
|
5592
5597
|
const v = c / 255;
|
|
@@ -5623,100 +5628,104 @@ function oklchToString(l, c, h, alpha = 1) {
|
|
|
5623
5628
|
}
|
|
5624
5629
|
return `oklch(${safeL} ${safeC} ${safeH})`;
|
|
5625
5630
|
}
|
|
5631
|
+
function clamp2(value, min, max) {
|
|
5632
|
+
return Math.max(min, Math.min(max, value));
|
|
5633
|
+
}
|
|
5626
5634
|
function derivePalette(sampled) {
|
|
5627
5635
|
const {
|
|
5628
5636
|
blackChromaFactor,
|
|
5629
5637
|
blackLightness,
|
|
5638
|
+
chromaGain,
|
|
5630
5639
|
maxBlackChroma,
|
|
5631
5640
|
maxChroma,
|
|
5632
|
-
|
|
5641
|
+
maxPrimaryChroma,
|
|
5642
|
+
neutralChroma,
|
|
5633
5643
|
primaryLightness
|
|
5634
5644
|
} = COLOR_EXTRACT_CONFIG;
|
|
5635
|
-
const chroma =
|
|
5636
|
-
const
|
|
5637
|
-
|
|
5638
|
-
|
|
5639
|
-
|
|
5640
|
-
|
|
5641
|
-
0.
|
|
5642
|
-
|
|
5643
|
-
);
|
|
5645
|
+
const chroma = sampled.c < neutralChroma ? 0 : clamp2(sampled.c, 0, maxChroma);
|
|
5646
|
+
const hue = chroma === 0 ? 0 : sampled.h;
|
|
5647
|
+
const primaryChroma = maxPrimaryChroma * (1 - Math.exp(-chroma * chromaGain));
|
|
5648
|
+
const primaryL = clamp2(
|
|
5649
|
+
primaryLightness + (sampled.l - 0.6) * 0.5,
|
|
5650
|
+
0.6,
|
|
5651
|
+
0.86
|
|
5652
|
+
);
|
|
5653
|
+
const blackChroma = Math.min(maxBlackChroma, chroma * blackChromaFactor);
|
|
5654
|
+
const blackL = clamp2(blackLightness + (sampled.l - 0.6) * 0.06, 0.12, 0.18);
|
|
5644
5655
|
return {
|
|
5645
|
-
black: oklchToString(
|
|
5646
|
-
primary: oklchToString(
|
|
5656
|
+
black: oklchToString(blackL, blackChroma, hue),
|
|
5657
|
+
primary: oklchToString(primaryL, primaryChroma, hue)
|
|
5647
5658
|
};
|
|
5648
5659
|
}
|
|
5649
5660
|
|
|
5650
5661
|
// src/modules/ambient/extractor.ts
|
|
5651
5662
|
function sampleImageData(imageData) {
|
|
5663
|
+
const { hueBins, minPixelChroma, minPresence } = COLOR_EXTRACT_CONFIG;
|
|
5652
5664
|
const data = imageData.data;
|
|
5653
|
-
const
|
|
5654
|
-
const
|
|
5655
|
-
|
|
5656
|
-
|
|
5657
|
-
count: 0,
|
|
5665
|
+
const binAngle = 360 / hueBins;
|
|
5666
|
+
const bins = Array.from({ length: hueBins }, () => ({
|
|
5667
|
+
cos: 0,
|
|
5668
|
+
sin: 0,
|
|
5658
5669
|
sumC: 0,
|
|
5659
|
-
sumCos: 0,
|
|
5660
5670
|
sumL: 0,
|
|
5661
|
-
|
|
5671
|
+
weight: 0
|
|
5662
5672
|
}));
|
|
5663
|
-
let
|
|
5664
|
-
let
|
|
5673
|
+
let opaqueCount = 0;
|
|
5674
|
+
let opaqueSumL = 0;
|
|
5665
5675
|
let chromaticCount = 0;
|
|
5666
|
-
|
|
5667
|
-
|
|
5668
|
-
if (
|
|
5669
|
-
const
|
|
5670
|
-
|
|
5671
|
-
|
|
5672
|
-
|
|
5673
|
-
if (
|
|
5674
|
-
|
|
5675
|
-
neutralSumL += oklch.l;
|
|
5676
|
+
let midNeutralCount = 0;
|
|
5677
|
+
for (let i = 0; i < data.length; i += 4) {
|
|
5678
|
+
if (data[i + 3] < 128) continue;
|
|
5679
|
+
const { c, h, l } = rgbToOklch(data[i], data[i + 1], data[i + 2]);
|
|
5680
|
+
opaqueCount++;
|
|
5681
|
+
opaqueSumL += l;
|
|
5682
|
+
if (l < 0.06 || l > 0.96) continue;
|
|
5683
|
+
if (c < minPixelChroma) {
|
|
5684
|
+
midNeutralCount++;
|
|
5676
5685
|
continue;
|
|
5677
5686
|
}
|
|
5678
|
-
const
|
|
5679
|
-
const
|
|
5680
|
-
const
|
|
5681
|
-
bin.
|
|
5682
|
-
bin.
|
|
5683
|
-
bin.sumC +=
|
|
5684
|
-
bin.
|
|
5685
|
-
bin.
|
|
5687
|
+
const usable = 1 - 0.7 * Math.min(1, Math.abs(l - 0.62) / 0.62);
|
|
5688
|
+
const weight2 = c * c * usable;
|
|
5689
|
+
const rad = h * (Math.PI / 180);
|
|
5690
|
+
const bin = bins[Math.floor(h / binAngle) % hueBins];
|
|
5691
|
+
bin.weight += weight2;
|
|
5692
|
+
bin.sumC += c * weight2;
|
|
5693
|
+
bin.sumL += l * weight2;
|
|
5694
|
+
bin.cos += Math.cos(rad) * weight2;
|
|
5695
|
+
bin.sin += Math.sin(rad) * weight2;
|
|
5686
5696
|
chromaticCount++;
|
|
5687
5697
|
}
|
|
5688
|
-
|
|
5689
|
-
|
|
5690
|
-
|
|
5691
|
-
|
|
5698
|
+
const averageL = opaqueCount > 0 ? opaqueSumL / opaqueCount : 0.5;
|
|
5699
|
+
const neutral = { c: 0, h: 0, l: Number(averageL.toFixed(3)) };
|
|
5700
|
+
const presence = chromaticCount / Math.max(1, chromaticCount + midNeutralCount);
|
|
5701
|
+
if (chromaticCount === 0 || presence < minPresence) return neutral;
|
|
5692
5702
|
let bestIndex = 0;
|
|
5693
|
-
let
|
|
5694
|
-
for (let i = 0; i <
|
|
5695
|
-
const
|
|
5696
|
-
const
|
|
5697
|
-
const
|
|
5698
|
-
|
|
5699
|
-
|
|
5700
|
-
maxWindowCount = windowCount;
|
|
5703
|
+
let bestScore = -1;
|
|
5704
|
+
for (let i = 0; i < hueBins; i++) {
|
|
5705
|
+
const prev = bins[(i - 1 + hueBins) % hueBins];
|
|
5706
|
+
const next = bins[(i + 1) % hueBins];
|
|
5707
|
+
const score = prev.weight * 0.5 + bins[i].weight + next.weight * 0.5;
|
|
5708
|
+
if (score > bestScore) {
|
|
5709
|
+
bestScore = score;
|
|
5701
5710
|
bestIndex = i;
|
|
5702
5711
|
}
|
|
5703
5712
|
}
|
|
5704
|
-
const
|
|
5705
|
-
|
|
5706
|
-
|
|
5707
|
-
|
|
5708
|
-
|
|
5709
|
-
|
|
5710
|
-
|
|
5711
|
-
const
|
|
5712
|
-
const
|
|
5713
|
-
const
|
|
5714
|
-
const
|
|
5715
|
-
const
|
|
5713
|
+
const window2 = [
|
|
5714
|
+
bins[(bestIndex - 1 + hueBins) % hueBins],
|
|
5715
|
+
bins[bestIndex],
|
|
5716
|
+
bins[(bestIndex + 1) % hueBins]
|
|
5717
|
+
];
|
|
5718
|
+
const weight = window2.reduce((sum, bin) => sum + bin.weight, 0);
|
|
5719
|
+
if (weight === 0) return neutral;
|
|
5720
|
+
const sumC = window2.reduce((sum, bin) => sum + bin.sumC, 0);
|
|
5721
|
+
const sumL = window2.reduce((sum, bin) => sum + bin.sumL, 0);
|
|
5722
|
+
const sin = window2.reduce((sum, bin) => sum + bin.sin, 0);
|
|
5723
|
+
const cos = window2.reduce((sum, bin) => sum + bin.cos, 0);
|
|
5724
|
+
const dilution = 0.45 + 0.55 * Math.min(1, presence / 0.3);
|
|
5716
5725
|
return {
|
|
5717
|
-
c: Number(
|
|
5718
|
-
h: Number(
|
|
5719
|
-
l: Number(
|
|
5726
|
+
c: Number((sumC / weight * dilution).toFixed(3)),
|
|
5727
|
+
h: Number(((Math.atan2(sin, cos) * (180 / Math.PI) + 360) % 360).toFixed(1)),
|
|
5728
|
+
l: Number((sumL / weight).toFixed(3))
|
|
5720
5729
|
};
|
|
5721
5730
|
}
|
|
5722
5731
|
function createDefaultPalette(fallback) {
|
|
@@ -6465,6 +6474,7 @@ init_utils();
|
|
|
6465
6474
|
init_atoms();
|
|
6466
6475
|
|
|
6467
6476
|
// src/modules/dock/surface/context.tsx
|
|
6477
|
+
init_kernel();
|
|
6468
6478
|
init_utils();
|
|
6469
6479
|
|
|
6470
6480
|
// src/modules/dock/surface/helpers.ts
|
|
@@ -6596,7 +6606,7 @@ function normalizeSurfaceExtension(input) {
|
|
|
6596
6606
|
if (typeof input !== "object") return null;
|
|
6597
6607
|
const extension = input;
|
|
6598
6608
|
const component = isValidComponentType(extension.component) ? extension.component : null;
|
|
6599
|
-
const content = isValidElement(extension.content) || typeof extension.content === "string" || typeof extension.content === "number" ? extension.content : null;
|
|
6609
|
+
const content = isValidElement(extension.content) || typeof extension.content === "string" && extension.content !== "" || typeof extension.content === "number" ? extension.content : null;
|
|
6600
6610
|
if (!component && content == null) return null;
|
|
6601
6611
|
const align = extension.align === "right" || extension.align === "end" ? "right" : extension.align === "center" ? "center" : "left";
|
|
6602
6612
|
return {
|
|
@@ -6641,8 +6651,8 @@ function resolveSurfaceFlowReturnHandshake(definition, input) {
|
|
|
6641
6651
|
}
|
|
6642
6652
|
|
|
6643
6653
|
// src/modules/dock/surface/context.tsx
|
|
6644
|
-
var SurfaceExtensionsContext =
|
|
6645
|
-
var SurfaceItemContext =
|
|
6654
|
+
var SurfaceExtensionsContext = getOrCreateGlobalContext("SurfaceExtensionsContext", null);
|
|
6655
|
+
var SurfaceItemContext = getOrCreateGlobalContext("SurfaceItemContext", {
|
|
6646
6656
|
id: null,
|
|
6647
6657
|
width: null
|
|
6648
6658
|
});
|
|
@@ -6656,12 +6666,12 @@ var SurfaceHeaderActionStore = class {
|
|
|
6656
6666
|
}
|
|
6657
6667
|
subscribe = (listener) => this.store.subscribe(listener);
|
|
6658
6668
|
getAction = (surfaceId) => {
|
|
6659
|
-
const sId = surfaceId != null ? String(surfaceId) : "
|
|
6669
|
+
const sId = surfaceId != null ? String(surfaceId) : "active";
|
|
6660
6670
|
const { actionsBySurface } = this.store.getSnapshot();
|
|
6661
|
-
return actionsBySurface[sId] ?? actionsBySurface.global ?? null;
|
|
6671
|
+
return actionsBySurface[sId] ?? actionsBySurface.active ?? actionsBySurface.global ?? null;
|
|
6662
6672
|
};
|
|
6663
6673
|
setAction = (surfaceId, action) => {
|
|
6664
|
-
const sId = surfaceId != null ? String(surfaceId) : "
|
|
6674
|
+
const sId = surfaceId != null ? String(surfaceId) : "active";
|
|
6665
6675
|
const current = this.store.getSnapshot();
|
|
6666
6676
|
if (current.actionsBySurface[sId] === action) return;
|
|
6667
6677
|
this.store.setState({
|
|
@@ -6673,7 +6683,7 @@ var SurfaceHeaderActionStore = class {
|
|
|
6673
6683
|
});
|
|
6674
6684
|
};
|
|
6675
6685
|
removeAction = (surfaceId) => {
|
|
6676
|
-
const sId = surfaceId != null ? String(surfaceId) : "
|
|
6686
|
+
const sId = surfaceId != null ? String(surfaceId) : "active";
|
|
6677
6687
|
const current = this.store.getSnapshot();
|
|
6678
6688
|
if (!(sId in current.actionsBySurface)) return;
|
|
6679
6689
|
const { [sId]: _, ...nextActions } = current.actionsBySurface;
|
|
@@ -6697,17 +6707,32 @@ var SurfaceExtensionsStore = class {
|
|
|
6697
6707
|
this.store.setState((prev) => ({ version: prev.version + 1 }));
|
|
6698
6708
|
};
|
|
6699
6709
|
getExtensionsForSurface = (surfaceId) => {
|
|
6700
|
-
const sId = surfaceId != null ? String(surfaceId) : "
|
|
6710
|
+
const sId = surfaceId != null ? String(surfaceId) : "active";
|
|
6701
6711
|
if (this.cachedListBySurface.has(sId))
|
|
6702
6712
|
return this.cachedListBySurface.get(sId);
|
|
6703
6713
|
const globalExts = this.extensionsBySurface.get("global");
|
|
6704
|
-
const
|
|
6705
|
-
|
|
6714
|
+
const activeExts = this.extensionsBySurface.get("active");
|
|
6715
|
+
const surfaceExts = sId !== "global" && sId !== "active" ? this.extensionsBySurface.get(sId) : void 0;
|
|
6716
|
+
let fallbackExts;
|
|
6717
|
+
if (!globalExts && !activeExts && !surfaceExts && this.extensionsBySurface.size > 0) {
|
|
6718
|
+
for (const map of this.extensionsBySurface.values()) {
|
|
6719
|
+
if (map.size > 0) {
|
|
6720
|
+
fallbackExts = map;
|
|
6721
|
+
break;
|
|
6722
|
+
}
|
|
6723
|
+
}
|
|
6724
|
+
}
|
|
6725
|
+
if (!globalExts && !activeExts && !surfaceExts && !fallbackExts) {
|
|
6706
6726
|
const empty = [];
|
|
6707
6727
|
this.cachedListBySurface.set(sId, empty);
|
|
6708
6728
|
return empty;
|
|
6709
6729
|
}
|
|
6710
|
-
const merged = new Map([
|
|
6730
|
+
const merged = new Map([
|
|
6731
|
+
...globalExts || [],
|
|
6732
|
+
...activeExts || [],
|
|
6733
|
+
...surfaceExts || [],
|
|
6734
|
+
...fallbackExts || []
|
|
6735
|
+
]);
|
|
6711
6736
|
const result = Array.from(merged.values()).sort(
|
|
6712
6737
|
(a, b) => a.order - b.order
|
|
6713
6738
|
);
|
|
@@ -6718,7 +6743,7 @@ var SurfaceExtensionsStore = class {
|
|
|
6718
6743
|
if (!extension) return;
|
|
6719
6744
|
const normalized = normalizeSurfaceExtension(extension);
|
|
6720
6745
|
if (!normalized) return;
|
|
6721
|
-
const sId = surfaceId != null ? String(surfaceId) : "
|
|
6746
|
+
const sId = surfaceId != null ? String(surfaceId) : "active";
|
|
6722
6747
|
let surfaceMap = this.extensionsBySurface.get(sId);
|
|
6723
6748
|
if (!surfaceMap) {
|
|
6724
6749
|
surfaceMap = /* @__PURE__ */ new Map();
|
|
@@ -6732,17 +6757,23 @@ var SurfaceExtensionsStore = class {
|
|
|
6732
6757
|
};
|
|
6733
6758
|
removeExtension = (surfaceId, extensionId) => {
|
|
6734
6759
|
if (!extensionId) return;
|
|
6735
|
-
const sId = surfaceId != null ? String(surfaceId) : "
|
|
6736
|
-
|
|
6737
|
-
|
|
6738
|
-
|
|
6739
|
-
|
|
6740
|
-
|
|
6760
|
+
const sId = surfaceId != null ? String(surfaceId) : "active";
|
|
6761
|
+
let removed = false;
|
|
6762
|
+
for (const [key, map] of this.extensionsBySurface.entries()) {
|
|
6763
|
+
if (key === sId || key === "active" || key === "global") {
|
|
6764
|
+
if (map.has(extensionId)) {
|
|
6765
|
+
map.delete(extensionId);
|
|
6766
|
+
if (map.size === 0) this.extensionsBySurface.delete(key);
|
|
6767
|
+
removed = true;
|
|
6768
|
+
}
|
|
6769
|
+
}
|
|
6770
|
+
}
|
|
6771
|
+
if (removed) this.notify();
|
|
6741
6772
|
};
|
|
6742
6773
|
clearSurface = (surfaceId) => {
|
|
6743
|
-
const sId = surfaceId != null ? String(surfaceId) : "
|
|
6744
|
-
if (!this.extensionsBySurface.has(sId)) return;
|
|
6774
|
+
const sId = surfaceId != null ? String(surfaceId) : "active";
|
|
6745
6775
|
this.extensionsBySurface.delete(sId);
|
|
6776
|
+
this.extensionsBySurface.delete("active");
|
|
6746
6777
|
this.notify();
|
|
6747
6778
|
};
|
|
6748
6779
|
};
|
|
@@ -9480,7 +9511,7 @@ function useDockSurfaceControlsModel({
|
|
|
9480
9511
|
const phase = propSurfacePhase ?? activeItem?.surfacePhase;
|
|
9481
9512
|
const isBodyVisible = phase ? phase === DOCK_SURFACE_PHASE.EXPANDING_BODY || phase === DOCK_SURFACE_PHASE.OPEN : true;
|
|
9482
9513
|
const actionStore = use(SurfaceExtensionsContext)?.headerActions ?? null;
|
|
9483
|
-
const surfaceId = activeItem?.surfaceId || "
|
|
9514
|
+
const surfaceId = activeItem?.surfaceId || "active";
|
|
9484
9515
|
const subscribeAction = useCallback(
|
|
9485
9516
|
(onStoreChange) => actionStore ? actionStore.subscribe(onStoreChange) : () => {
|
|
9486
9517
|
},
|
|
@@ -9508,7 +9539,7 @@ function SurfaceExtensionsProvider({
|
|
|
9508
9539
|
}
|
|
9509
9540
|
function useIsSurfaceExtensionsVisible(activeItem) {
|
|
9510
9541
|
const store = use(SurfaceExtensionsContext)?.extensions ?? null;
|
|
9511
|
-
const surfaceId = activeItem?.surfaceId || "
|
|
9542
|
+
const surfaceId = activeItem?.surfaceId || "active";
|
|
9512
9543
|
const isSurface = Boolean(activeItem?.isSurface);
|
|
9513
9544
|
const phase = activeItem?.surfacePhase;
|
|
9514
9545
|
const isBodyVisible = phase === DOCK_SURFACE_PHASE.EXPANDING_BODY || phase === DOCK_SURFACE_PHASE.OPEN;
|
|
@@ -9527,14 +9558,14 @@ function useIsSurfaceExtensionsVisible(activeItem) {
|
|
|
9527
9558
|
return Array.isArray(raw) ? raw.length : 0;
|
|
9528
9559
|
}, [activeItem?.surfaceExtensions, activeItem?.extensions]);
|
|
9529
9560
|
return Boolean(
|
|
9530
|
-
isSurface && isBodyVisible &&
|
|
9561
|
+
isSurface && (isBodyVisible && dynamicCount > 0 || descriptorCount > 0)
|
|
9531
9562
|
);
|
|
9532
9563
|
}
|
|
9533
9564
|
function useDockSurfaceExtensionsBarModel({
|
|
9534
9565
|
activeItem
|
|
9535
9566
|
}) {
|
|
9536
9567
|
const store = use(SurfaceExtensionsContext)?.extensions ?? null;
|
|
9537
|
-
const surfaceId = activeItem?.surfaceId || "
|
|
9568
|
+
const surfaceId = activeItem?.surfaceId || "active";
|
|
9538
9569
|
const subscribe2 = useCallback(
|
|
9539
9570
|
(onStoreChange) => store ? store.subscribe(onStoreChange) : () => {
|
|
9540
9571
|
},
|