@imperosoft/cris-webui-components 1.2.1 → 1.4.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/dist/index.d.mts +179 -1
- package/dist/index.d.ts +179 -1
- package/dist/index.js +687 -237
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +680 -238
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -583,6 +583,12 @@ interface CrisViewDspClasses {
|
|
|
583
583
|
presetPressed?: string;
|
|
584
584
|
/** "Saved" flash overlay. */
|
|
585
585
|
savedFlash?: string;
|
|
586
|
+
/** Group-name header above a section of faders. */
|
|
587
|
+
groupHeader?: string;
|
|
588
|
+
/** Mixer display-group chrome (top input tier). */
|
|
589
|
+
mixerGroup?: string;
|
|
590
|
+
/** Mixer display-group chrome (left output tier; rendered with vertical text). */
|
|
591
|
+
mixerGroupV?: string;
|
|
586
592
|
/** Strip column. */
|
|
587
593
|
strip?: string;
|
|
588
594
|
/** Strip label. */
|
|
@@ -599,6 +605,8 @@ interface CrisViewDspClasses {
|
|
|
599
605
|
mute?: string;
|
|
600
606
|
/** Added to the mute button when muted. */
|
|
601
607
|
muteActive?: string;
|
|
608
|
+
/** Opaque backplate behind the sticky header/label bands (seam guard during drag). */
|
|
609
|
+
mixerBackplate?: string;
|
|
602
610
|
/** Mixer fixed corner. */
|
|
603
611
|
mixerCorner?: string;
|
|
604
612
|
/** Mixer sticky header/label chrome. */
|
|
@@ -659,6 +667,41 @@ interface CrisViewDspFullProps {
|
|
|
659
667
|
}
|
|
660
668
|
declare function CrisViewDspFull({ oid, presets, skipShowInput, skipShowOutput, skipCrosspoints, sustainedPresetFeedback, classes, icons, className, initialTab, }: CrisViewDspFullProps): react_jsx_runtime.JSX.Element;
|
|
661
669
|
|
|
670
|
+
/**
|
|
671
|
+
* Shared prop shape for the standalone, self-subscribing DSP view pieces
|
|
672
|
+
* (CrisViewDspInputs / Outputs / Mixer / Presets / Channels). Each piece accepts
|
|
673
|
+
* styling overrides identical to CrisViewDspFull and an extra root className.
|
|
674
|
+
*/
|
|
675
|
+
|
|
676
|
+
interface DspStylingProps {
|
|
677
|
+
/** Class slot overrides (see CrisViewDspClasses); unset slots use the defaults. */
|
|
678
|
+
classes?: CrisViewDspClasses;
|
|
679
|
+
/** Icon overrides (see CrisViewDspIcons). */
|
|
680
|
+
icons?: CrisViewDspIcons;
|
|
681
|
+
/** Appended to the wrapper root. */
|
|
682
|
+
className?: string;
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
interface CrisViewDspInputsProps extends DspStylingProps {
|
|
686
|
+
/** OID of the DSP custom object. */
|
|
687
|
+
oid: string;
|
|
688
|
+
/** Input channel ids to hide. */
|
|
689
|
+
skip?: number[];
|
|
690
|
+
/** Message shown when there are no inputs. Default 'Sin entradas'. */
|
|
691
|
+
emptyLabel?: string;
|
|
692
|
+
}
|
|
693
|
+
declare function CrisViewDspInputs({ oid, skip, emptyLabel, classes, icons, className, }: CrisViewDspInputsProps): react_jsx_runtime.JSX.Element;
|
|
694
|
+
|
|
695
|
+
interface CrisViewDspOutputsProps extends DspStylingProps {
|
|
696
|
+
/** OID of the DSP custom object. */
|
|
697
|
+
oid: string;
|
|
698
|
+
/** Output channel ids to hide. */
|
|
699
|
+
skip?: number[];
|
|
700
|
+
/** Message shown when there are no outputs. Default 'Sin salidas'. */
|
|
701
|
+
emptyLabel?: string;
|
|
702
|
+
}
|
|
703
|
+
declare function CrisViewDspOutputs({ oid, skip, emptyLabel, classes, icons, className, }: CrisViewDspOutputsProps): react_jsx_runtime.JSX.Element;
|
|
704
|
+
|
|
662
705
|
/**
|
|
663
706
|
* DSP custom-object protocol types (the shape exposed by a DSP backend's custom
|
|
664
707
|
* object, e.g. `DSP1_API` / Dsp.CrisApi.cs). The dynamic DSP view is fed entirely
|
|
@@ -693,6 +736,20 @@ interface DspLinks {
|
|
|
693
736
|
ip?: DspLinkedGroup[];
|
|
694
737
|
op?: DspLinkedGroup[];
|
|
695
738
|
}
|
|
739
|
+
/**
|
|
740
|
+
* Display group (backend `dg`). A higher-level, presentation-only grouping of
|
|
741
|
+
* channels, orthogonal to linked groups (`ln`) and able to overlap them. `id` is
|
|
742
|
+
* the group NAME (e.g. "Mic Diadema"); `ch` its member channel ids. Channels carry
|
|
743
|
+
* a short `lb` ("1", "L", "17") and the group supplies the prefix.
|
|
744
|
+
*/
|
|
745
|
+
interface DspDisplayGroup {
|
|
746
|
+
id: string;
|
|
747
|
+
ch: number[];
|
|
748
|
+
}
|
|
749
|
+
interface DspDisplayGroups {
|
|
750
|
+
ip?: DspDisplayGroup[];
|
|
751
|
+
op?: DspDisplayGroup[];
|
|
752
|
+
}
|
|
696
753
|
/** Active DSP preset. dv = recovered device preset, lc = local preset. */
|
|
697
754
|
interface DspPreset {
|
|
698
755
|
dv?: number;
|
|
@@ -705,6 +762,8 @@ interface DspStatus {
|
|
|
705
762
|
ip: DspIo[];
|
|
706
763
|
op: DspOut[];
|
|
707
764
|
ln?: DspLinks;
|
|
765
|
+
/** Display groups (presentation grouping/ordering of channels). */
|
|
766
|
+
dg?: DspDisplayGroups;
|
|
708
767
|
pr?: DspPreset;
|
|
709
768
|
ps?: DspPreset;
|
|
710
769
|
}
|
|
@@ -755,6 +814,43 @@ type DspStrip = {
|
|
|
755
814
|
declare function collapseStrips(channels: DspIo[], links: DspLinkedGroup[] | undefined): DspStrip[];
|
|
756
815
|
/** Extracts the linked groups from the status for a given direction. */
|
|
757
816
|
declare function linksFor(ln: DspLinks | undefined, io: DspIoDir): DspLinkedGroup[] | undefined;
|
|
817
|
+
/** Extracts the display groups from the status for a given direction. */
|
|
818
|
+
declare function groupsFor(dg: DspDisplayGroups | undefined, io: DspIoDir): DspDisplayGroup[] | undefined;
|
|
819
|
+
/** A section of the Inputs/Outputs page: a display group (named) or the trailing ungrouped channels. */
|
|
820
|
+
interface DspSection {
|
|
821
|
+
/** Display-group name (header). Absent for the trailing ungrouped section. */
|
|
822
|
+
groupName?: string;
|
|
823
|
+
strips: DspStrip[];
|
|
824
|
+
}
|
|
825
|
+
/**
|
|
826
|
+
* Builds the ordered, sectioned fader layout. With no `groups`, returns a single
|
|
827
|
+
* header-less section equal to `collapseStrips` (current behavior). Otherwise emits
|
|
828
|
+
* one section per display group (groups in order, channels in group order, linked
|
|
829
|
+
* pairs collapsed), then a trailing header-less section for every channel in no
|
|
830
|
+
* group, in status-array order.
|
|
831
|
+
*/
|
|
832
|
+
declare function buildIoSections(channels: DspIo[], links: DspLinkedGroup[] | undefined, groups: DspDisplayGroup[] | undefined): DspSection[];
|
|
833
|
+
/**
|
|
834
|
+
* Mixer axis with up to three tiers per channel: display group (tier 1, dg),
|
|
835
|
+
* linked group (tier 2, ln), channel name (tier 3). Channels are ordered by dg
|
|
836
|
+
* (groups in order, then ungrouped in array order); every channel keeps its own
|
|
837
|
+
* column. `*Start`/`*Span` mark the first cell of a spanning run. With no `groups`,
|
|
838
|
+
* only the link + channel tiers are populated (same labels as `buildMixerAxis`).
|
|
839
|
+
*/
|
|
840
|
+
interface MixerAxisItem3 {
|
|
841
|
+
id: number;
|
|
842
|
+
/** Tier 3: own channel name. */
|
|
843
|
+
channelLabel: string;
|
|
844
|
+
/** Tier 2: linked-group label (present on every member of a consecutive run). */
|
|
845
|
+
linkCommon?: string;
|
|
846
|
+
linkStart?: boolean;
|
|
847
|
+
linkSpan?: number;
|
|
848
|
+
/** Tier 1: display-group name (present on every member of the group). */
|
|
849
|
+
groupName?: string;
|
|
850
|
+
groupStart?: boolean;
|
|
851
|
+
groupSpan?: number;
|
|
852
|
+
}
|
|
853
|
+
declare function buildMixerAxisGrouped(channels: DspIo[], links: DspLinkedGroup[] | undefined, groups: DspDisplayGroup[] | undefined): MixerAxisItem3[];
|
|
758
854
|
/**
|
|
759
855
|
* Mixer axis (one entry per channel, in order). For linked groups whose channels
|
|
760
856
|
* are CONSECUTIVE (and therefore adjacent in the grid) it adds the info to paint a
|
|
@@ -774,6 +870,88 @@ interface MixerAxisItem {
|
|
|
774
870
|
}
|
|
775
871
|
declare function buildMixerAxis(channels: DspIo[], links: DspLinkedGroup[] | undefined): MixerAxisItem[];
|
|
776
872
|
|
|
873
|
+
/** Track sizes + derived sticky offsets / z-order of the mixer grid. Passed to the
|
|
874
|
+
* header render-props so a custom header lands on the same tracks as the cells. */
|
|
875
|
+
interface MixerGeometry {
|
|
876
|
+
/** Output display-group column width (left, vertical text). */
|
|
877
|
+
groupW: string;
|
|
878
|
+
/** Output linked-group column width. */
|
|
879
|
+
commonW: string;
|
|
880
|
+
/** Output channel-name column width. groupW+commonW+chanW = label-band width. */
|
|
881
|
+
chanW: string;
|
|
882
|
+
/** Input display-group header row height (top). */
|
|
883
|
+
groupH: string;
|
|
884
|
+
/** Input linked-group header row height. */
|
|
885
|
+
commonH: string;
|
|
886
|
+
/** Input channel-name header row height (toward cells). */
|
|
887
|
+
chanH: string;
|
|
888
|
+
/** Crosspoint cell width. */
|
|
889
|
+
cellW: string;
|
|
890
|
+
/** Output row height. */
|
|
891
|
+
rowH: string;
|
|
892
|
+
/** Sticky `top` of the input link tier (row 2). */
|
|
893
|
+
topLink: string;
|
|
894
|
+
/** Sticky `top` of the input channel tier (row 3). */
|
|
895
|
+
topChan: string;
|
|
896
|
+
/** Sticky `left` of the output link tier (col 2). */
|
|
897
|
+
leftLink: string;
|
|
898
|
+
/** Sticky `left` of the output channel tier (col 3). */
|
|
899
|
+
leftChan: string;
|
|
900
|
+
/** z-order: corner > group > link > chan > cells. */
|
|
901
|
+
z: {
|
|
902
|
+
corner: number;
|
|
903
|
+
group: number;
|
|
904
|
+
link: number;
|
|
905
|
+
chan: number;
|
|
906
|
+
};
|
|
907
|
+
/** Column count = inputs.length; first input column is grid column 4. */
|
|
908
|
+
inputCount: number;
|
|
909
|
+
/** Row count = outputs.length; first output row is grid row 4. */
|
|
910
|
+
outputCount: number;
|
|
911
|
+
}
|
|
912
|
+
/** Caller overrides for the eight grid track sizes (derived offsets are recomputed). */
|
|
913
|
+
type MixerGeometryOverrides = Partial<Pick<MixerGeometry, 'groupW' | 'commonW' | 'chanW' | 'groupH' | 'commonH' | 'chanH' | 'cellW' | 'rowH'>>;
|
|
914
|
+
|
|
915
|
+
interface CrisViewDspMixerProps extends DspStylingProps {
|
|
916
|
+
/** OID of the DSP custom object. */
|
|
917
|
+
oid: string;
|
|
918
|
+
/** Track-size overrides; the rest of the geometry keeps the em defaults. */
|
|
919
|
+
geometry?: MixerGeometryOverrides;
|
|
920
|
+
/** Custom top band (rows 1–3 over the input columns). Default: text tiers. */
|
|
921
|
+
renderInputHeader?: (inAxis: MixerAxisItem3[], geom: MixerGeometry) => ReactNode;
|
|
922
|
+
/** Custom left band (cols 1–3 over the output rows). Default: text tiers. */
|
|
923
|
+
renderOutputHeader?: (outAxis: MixerAxisItem3[], geom: MixerGeometry) => ReactNode;
|
|
924
|
+
/** Custom fixed-corner content. Default: "OUT \ IN". */
|
|
925
|
+
renderCorner?: (geom: MixerGeometry) => ReactNode;
|
|
926
|
+
}
|
|
927
|
+
declare function CrisViewDspMixer({ oid, classes, icons, className, geometry, renderInputHeader, renderOutputHeader, renderCorner, }: CrisViewDspMixerProps): react_jsx_runtime.JSX.Element;
|
|
928
|
+
|
|
929
|
+
interface CrisViewDspPresetsProps extends Pick<DspStylingProps, 'classes' | 'className'> {
|
|
930
|
+
/** OID of the DSP custom object. */
|
|
931
|
+
oid: string;
|
|
932
|
+
/** Presets to show (the backend does not dictate the count). */
|
|
933
|
+
presets: CrisViewDspPreset[];
|
|
934
|
+
/** Keep the active preset highlighted after release. Default true. */
|
|
935
|
+
sustainedPresetFeedback?: boolean;
|
|
936
|
+
}
|
|
937
|
+
declare function CrisViewDspPresets({ oid, presets, sustainedPresetFeedback, classes, className, }: CrisViewDspPresetsProps): react_jsx_runtime.JSX.Element;
|
|
938
|
+
|
|
939
|
+
interface CrisViewDspChannelsProps extends DspStylingProps {
|
|
940
|
+
/** OID of the DSP custom object. */
|
|
941
|
+
oid: string;
|
|
942
|
+
/** Direction: 'in' (inputs) or 'out' (outputs). */
|
|
943
|
+
io: DspIoDir;
|
|
944
|
+
/** Channel ids to show. Omit → all channels of this io. */
|
|
945
|
+
show?: number[];
|
|
946
|
+
/** Wrap in a horizontal-scroll container instead of a plain flex row. Default false. */
|
|
947
|
+
scroll?: boolean;
|
|
948
|
+
/** Show the empty-state message when no channels match. Default false (render nothing). */
|
|
949
|
+
showEmpty?: boolean;
|
|
950
|
+
/** Empty-state message (only when showEmpty). */
|
|
951
|
+
emptyLabel?: string;
|
|
952
|
+
}
|
|
953
|
+
declare function CrisViewDspChannels({ oid, io, show, scroll, showEmpty, emptyLabel, classes, icons, className, }: CrisViewDspChannelsProps): react_jsx_runtime.JSX.Element | null;
|
|
954
|
+
|
|
777
955
|
/**
|
|
778
956
|
* Icon configuration and utilities for CRIS components
|
|
779
957
|
*
|
|
@@ -824,4 +1002,4 @@ declare function getIconUrl(name: string): string;
|
|
|
824
1002
|
*/
|
|
825
1003
|
declare function getIconFilter(active: boolean): string | undefined;
|
|
826
1004
|
|
|
827
|
-
export { type CommIndicatorState, type CommKind, CrisButton, type CrisButtonProps, CrisCoDebug, type CrisCoDebugProps, CrisCoList, type CrisCoListProps, CrisCoMatrixListsTie, type CrisCoMatrixListsTieProps, CrisGauge, type CrisGaugeProps, CrisOfflinePage, type CrisOfflinePageProps, CrisSlider, type CrisSliderProps, CrisSpinner, type CrisSpinnerProps, CrisText, CrisTextInput, type CrisTextInputProps, type CrisTextProps, CrisViewComm, type CrisViewCommClasses, type CrisViewCommIcons, type CrisViewCommProps, type CrisViewDspClasses, CrisViewDspFull, type CrisViewDspFullProps, type CrisViewDspIcons, type CrisViewDspPreset, type DebugModule, type DeviceComm, type DspIo, type DspIoDir, type DspLinkedGroup, type DspLinks, type DspOut, type DspPreset, type DspStatus, type DspStrip, type IconConfig, type ListItem, type ListStatus, type MatrixItem, type MatrixStatus, type MixerAxisItem, type SpinnerSpeed, buildMixerAxis, clampLevel, collapseStrips, commIndicators, configureIcons, getIconConfig, getIconFilter, getIconUrl, levelToPercent, linksFor, normalizeLinked };
|
|
1005
|
+
export { type CommIndicatorState, type CommKind, CrisButton, type CrisButtonProps, CrisCoDebug, type CrisCoDebugProps, CrisCoList, type CrisCoListProps, CrisCoMatrixListsTie, type CrisCoMatrixListsTieProps, CrisGauge, type CrisGaugeProps, CrisOfflinePage, type CrisOfflinePageProps, CrisSlider, type CrisSliderProps, CrisSpinner, type CrisSpinnerProps, CrisText, CrisTextInput, type CrisTextInputProps, type CrisTextProps, CrisViewComm, type CrisViewCommClasses, type CrisViewCommIcons, type CrisViewCommProps, CrisViewDspChannels, type CrisViewDspChannelsProps, type CrisViewDspClasses, CrisViewDspFull, type CrisViewDspFullProps, type CrisViewDspIcons, CrisViewDspInputs, type CrisViewDspInputsProps, CrisViewDspMixer, type CrisViewDspMixerProps, CrisViewDspOutputs, type CrisViewDspOutputsProps, type CrisViewDspPreset, CrisViewDspPresets, type CrisViewDspPresetsProps, type DebugModule, type DeviceComm, type DspDisplayGroup, type DspDisplayGroups, type DspIo, type DspIoDir, type DspLinkedGroup, type DspLinks, type DspOut, type DspPreset, type DspSection, type DspStatus, type DspStrip, type DspStylingProps, type IconConfig, type ListItem, type ListStatus, type MatrixItem, type MatrixStatus, type MixerAxisItem, type MixerAxisItem3, type MixerGeometry, type MixerGeometryOverrides, type SpinnerSpeed, buildIoSections, buildMixerAxis, buildMixerAxisGrouped, clampLevel, collapseStrips, commIndicators, configureIcons, getIconConfig, getIconFilter, getIconUrl, groupsFor, levelToPercent, linksFor, normalizeLinked };
|
package/dist/index.d.ts
CHANGED
|
@@ -583,6 +583,12 @@ interface CrisViewDspClasses {
|
|
|
583
583
|
presetPressed?: string;
|
|
584
584
|
/** "Saved" flash overlay. */
|
|
585
585
|
savedFlash?: string;
|
|
586
|
+
/** Group-name header above a section of faders. */
|
|
587
|
+
groupHeader?: string;
|
|
588
|
+
/** Mixer display-group chrome (top input tier). */
|
|
589
|
+
mixerGroup?: string;
|
|
590
|
+
/** Mixer display-group chrome (left output tier; rendered with vertical text). */
|
|
591
|
+
mixerGroupV?: string;
|
|
586
592
|
/** Strip column. */
|
|
587
593
|
strip?: string;
|
|
588
594
|
/** Strip label. */
|
|
@@ -599,6 +605,8 @@ interface CrisViewDspClasses {
|
|
|
599
605
|
mute?: string;
|
|
600
606
|
/** Added to the mute button when muted. */
|
|
601
607
|
muteActive?: string;
|
|
608
|
+
/** Opaque backplate behind the sticky header/label bands (seam guard during drag). */
|
|
609
|
+
mixerBackplate?: string;
|
|
602
610
|
/** Mixer fixed corner. */
|
|
603
611
|
mixerCorner?: string;
|
|
604
612
|
/** Mixer sticky header/label chrome. */
|
|
@@ -659,6 +667,41 @@ interface CrisViewDspFullProps {
|
|
|
659
667
|
}
|
|
660
668
|
declare function CrisViewDspFull({ oid, presets, skipShowInput, skipShowOutput, skipCrosspoints, sustainedPresetFeedback, classes, icons, className, initialTab, }: CrisViewDspFullProps): react_jsx_runtime.JSX.Element;
|
|
661
669
|
|
|
670
|
+
/**
|
|
671
|
+
* Shared prop shape for the standalone, self-subscribing DSP view pieces
|
|
672
|
+
* (CrisViewDspInputs / Outputs / Mixer / Presets / Channels). Each piece accepts
|
|
673
|
+
* styling overrides identical to CrisViewDspFull and an extra root className.
|
|
674
|
+
*/
|
|
675
|
+
|
|
676
|
+
interface DspStylingProps {
|
|
677
|
+
/** Class slot overrides (see CrisViewDspClasses); unset slots use the defaults. */
|
|
678
|
+
classes?: CrisViewDspClasses;
|
|
679
|
+
/** Icon overrides (see CrisViewDspIcons). */
|
|
680
|
+
icons?: CrisViewDspIcons;
|
|
681
|
+
/** Appended to the wrapper root. */
|
|
682
|
+
className?: string;
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
interface CrisViewDspInputsProps extends DspStylingProps {
|
|
686
|
+
/** OID of the DSP custom object. */
|
|
687
|
+
oid: string;
|
|
688
|
+
/** Input channel ids to hide. */
|
|
689
|
+
skip?: number[];
|
|
690
|
+
/** Message shown when there are no inputs. Default 'Sin entradas'. */
|
|
691
|
+
emptyLabel?: string;
|
|
692
|
+
}
|
|
693
|
+
declare function CrisViewDspInputs({ oid, skip, emptyLabel, classes, icons, className, }: CrisViewDspInputsProps): react_jsx_runtime.JSX.Element;
|
|
694
|
+
|
|
695
|
+
interface CrisViewDspOutputsProps extends DspStylingProps {
|
|
696
|
+
/** OID of the DSP custom object. */
|
|
697
|
+
oid: string;
|
|
698
|
+
/** Output channel ids to hide. */
|
|
699
|
+
skip?: number[];
|
|
700
|
+
/** Message shown when there are no outputs. Default 'Sin salidas'. */
|
|
701
|
+
emptyLabel?: string;
|
|
702
|
+
}
|
|
703
|
+
declare function CrisViewDspOutputs({ oid, skip, emptyLabel, classes, icons, className, }: CrisViewDspOutputsProps): react_jsx_runtime.JSX.Element;
|
|
704
|
+
|
|
662
705
|
/**
|
|
663
706
|
* DSP custom-object protocol types (the shape exposed by a DSP backend's custom
|
|
664
707
|
* object, e.g. `DSP1_API` / Dsp.CrisApi.cs). The dynamic DSP view is fed entirely
|
|
@@ -693,6 +736,20 @@ interface DspLinks {
|
|
|
693
736
|
ip?: DspLinkedGroup[];
|
|
694
737
|
op?: DspLinkedGroup[];
|
|
695
738
|
}
|
|
739
|
+
/**
|
|
740
|
+
* Display group (backend `dg`). A higher-level, presentation-only grouping of
|
|
741
|
+
* channels, orthogonal to linked groups (`ln`) and able to overlap them. `id` is
|
|
742
|
+
* the group NAME (e.g. "Mic Diadema"); `ch` its member channel ids. Channels carry
|
|
743
|
+
* a short `lb` ("1", "L", "17") and the group supplies the prefix.
|
|
744
|
+
*/
|
|
745
|
+
interface DspDisplayGroup {
|
|
746
|
+
id: string;
|
|
747
|
+
ch: number[];
|
|
748
|
+
}
|
|
749
|
+
interface DspDisplayGroups {
|
|
750
|
+
ip?: DspDisplayGroup[];
|
|
751
|
+
op?: DspDisplayGroup[];
|
|
752
|
+
}
|
|
696
753
|
/** Active DSP preset. dv = recovered device preset, lc = local preset. */
|
|
697
754
|
interface DspPreset {
|
|
698
755
|
dv?: number;
|
|
@@ -705,6 +762,8 @@ interface DspStatus {
|
|
|
705
762
|
ip: DspIo[];
|
|
706
763
|
op: DspOut[];
|
|
707
764
|
ln?: DspLinks;
|
|
765
|
+
/** Display groups (presentation grouping/ordering of channels). */
|
|
766
|
+
dg?: DspDisplayGroups;
|
|
708
767
|
pr?: DspPreset;
|
|
709
768
|
ps?: DspPreset;
|
|
710
769
|
}
|
|
@@ -755,6 +814,43 @@ type DspStrip = {
|
|
|
755
814
|
declare function collapseStrips(channels: DspIo[], links: DspLinkedGroup[] | undefined): DspStrip[];
|
|
756
815
|
/** Extracts the linked groups from the status for a given direction. */
|
|
757
816
|
declare function linksFor(ln: DspLinks | undefined, io: DspIoDir): DspLinkedGroup[] | undefined;
|
|
817
|
+
/** Extracts the display groups from the status for a given direction. */
|
|
818
|
+
declare function groupsFor(dg: DspDisplayGroups | undefined, io: DspIoDir): DspDisplayGroup[] | undefined;
|
|
819
|
+
/** A section of the Inputs/Outputs page: a display group (named) or the trailing ungrouped channels. */
|
|
820
|
+
interface DspSection {
|
|
821
|
+
/** Display-group name (header). Absent for the trailing ungrouped section. */
|
|
822
|
+
groupName?: string;
|
|
823
|
+
strips: DspStrip[];
|
|
824
|
+
}
|
|
825
|
+
/**
|
|
826
|
+
* Builds the ordered, sectioned fader layout. With no `groups`, returns a single
|
|
827
|
+
* header-less section equal to `collapseStrips` (current behavior). Otherwise emits
|
|
828
|
+
* one section per display group (groups in order, channels in group order, linked
|
|
829
|
+
* pairs collapsed), then a trailing header-less section for every channel in no
|
|
830
|
+
* group, in status-array order.
|
|
831
|
+
*/
|
|
832
|
+
declare function buildIoSections(channels: DspIo[], links: DspLinkedGroup[] | undefined, groups: DspDisplayGroup[] | undefined): DspSection[];
|
|
833
|
+
/**
|
|
834
|
+
* Mixer axis with up to three tiers per channel: display group (tier 1, dg),
|
|
835
|
+
* linked group (tier 2, ln), channel name (tier 3). Channels are ordered by dg
|
|
836
|
+
* (groups in order, then ungrouped in array order); every channel keeps its own
|
|
837
|
+
* column. `*Start`/`*Span` mark the first cell of a spanning run. With no `groups`,
|
|
838
|
+
* only the link + channel tiers are populated (same labels as `buildMixerAxis`).
|
|
839
|
+
*/
|
|
840
|
+
interface MixerAxisItem3 {
|
|
841
|
+
id: number;
|
|
842
|
+
/** Tier 3: own channel name. */
|
|
843
|
+
channelLabel: string;
|
|
844
|
+
/** Tier 2: linked-group label (present on every member of a consecutive run). */
|
|
845
|
+
linkCommon?: string;
|
|
846
|
+
linkStart?: boolean;
|
|
847
|
+
linkSpan?: number;
|
|
848
|
+
/** Tier 1: display-group name (present on every member of the group). */
|
|
849
|
+
groupName?: string;
|
|
850
|
+
groupStart?: boolean;
|
|
851
|
+
groupSpan?: number;
|
|
852
|
+
}
|
|
853
|
+
declare function buildMixerAxisGrouped(channels: DspIo[], links: DspLinkedGroup[] | undefined, groups: DspDisplayGroup[] | undefined): MixerAxisItem3[];
|
|
758
854
|
/**
|
|
759
855
|
* Mixer axis (one entry per channel, in order). For linked groups whose channels
|
|
760
856
|
* are CONSECUTIVE (and therefore adjacent in the grid) it adds the info to paint a
|
|
@@ -774,6 +870,88 @@ interface MixerAxisItem {
|
|
|
774
870
|
}
|
|
775
871
|
declare function buildMixerAxis(channels: DspIo[], links: DspLinkedGroup[] | undefined): MixerAxisItem[];
|
|
776
872
|
|
|
873
|
+
/** Track sizes + derived sticky offsets / z-order of the mixer grid. Passed to the
|
|
874
|
+
* header render-props so a custom header lands on the same tracks as the cells. */
|
|
875
|
+
interface MixerGeometry {
|
|
876
|
+
/** Output display-group column width (left, vertical text). */
|
|
877
|
+
groupW: string;
|
|
878
|
+
/** Output linked-group column width. */
|
|
879
|
+
commonW: string;
|
|
880
|
+
/** Output channel-name column width. groupW+commonW+chanW = label-band width. */
|
|
881
|
+
chanW: string;
|
|
882
|
+
/** Input display-group header row height (top). */
|
|
883
|
+
groupH: string;
|
|
884
|
+
/** Input linked-group header row height. */
|
|
885
|
+
commonH: string;
|
|
886
|
+
/** Input channel-name header row height (toward cells). */
|
|
887
|
+
chanH: string;
|
|
888
|
+
/** Crosspoint cell width. */
|
|
889
|
+
cellW: string;
|
|
890
|
+
/** Output row height. */
|
|
891
|
+
rowH: string;
|
|
892
|
+
/** Sticky `top` of the input link tier (row 2). */
|
|
893
|
+
topLink: string;
|
|
894
|
+
/** Sticky `top` of the input channel tier (row 3). */
|
|
895
|
+
topChan: string;
|
|
896
|
+
/** Sticky `left` of the output link tier (col 2). */
|
|
897
|
+
leftLink: string;
|
|
898
|
+
/** Sticky `left` of the output channel tier (col 3). */
|
|
899
|
+
leftChan: string;
|
|
900
|
+
/** z-order: corner > group > link > chan > cells. */
|
|
901
|
+
z: {
|
|
902
|
+
corner: number;
|
|
903
|
+
group: number;
|
|
904
|
+
link: number;
|
|
905
|
+
chan: number;
|
|
906
|
+
};
|
|
907
|
+
/** Column count = inputs.length; first input column is grid column 4. */
|
|
908
|
+
inputCount: number;
|
|
909
|
+
/** Row count = outputs.length; first output row is grid row 4. */
|
|
910
|
+
outputCount: number;
|
|
911
|
+
}
|
|
912
|
+
/** Caller overrides for the eight grid track sizes (derived offsets are recomputed). */
|
|
913
|
+
type MixerGeometryOverrides = Partial<Pick<MixerGeometry, 'groupW' | 'commonW' | 'chanW' | 'groupH' | 'commonH' | 'chanH' | 'cellW' | 'rowH'>>;
|
|
914
|
+
|
|
915
|
+
interface CrisViewDspMixerProps extends DspStylingProps {
|
|
916
|
+
/** OID of the DSP custom object. */
|
|
917
|
+
oid: string;
|
|
918
|
+
/** Track-size overrides; the rest of the geometry keeps the em defaults. */
|
|
919
|
+
geometry?: MixerGeometryOverrides;
|
|
920
|
+
/** Custom top band (rows 1–3 over the input columns). Default: text tiers. */
|
|
921
|
+
renderInputHeader?: (inAxis: MixerAxisItem3[], geom: MixerGeometry) => ReactNode;
|
|
922
|
+
/** Custom left band (cols 1–3 over the output rows). Default: text tiers. */
|
|
923
|
+
renderOutputHeader?: (outAxis: MixerAxisItem3[], geom: MixerGeometry) => ReactNode;
|
|
924
|
+
/** Custom fixed-corner content. Default: "OUT \ IN". */
|
|
925
|
+
renderCorner?: (geom: MixerGeometry) => ReactNode;
|
|
926
|
+
}
|
|
927
|
+
declare function CrisViewDspMixer({ oid, classes, icons, className, geometry, renderInputHeader, renderOutputHeader, renderCorner, }: CrisViewDspMixerProps): react_jsx_runtime.JSX.Element;
|
|
928
|
+
|
|
929
|
+
interface CrisViewDspPresetsProps extends Pick<DspStylingProps, 'classes' | 'className'> {
|
|
930
|
+
/** OID of the DSP custom object. */
|
|
931
|
+
oid: string;
|
|
932
|
+
/** Presets to show (the backend does not dictate the count). */
|
|
933
|
+
presets: CrisViewDspPreset[];
|
|
934
|
+
/** Keep the active preset highlighted after release. Default true. */
|
|
935
|
+
sustainedPresetFeedback?: boolean;
|
|
936
|
+
}
|
|
937
|
+
declare function CrisViewDspPresets({ oid, presets, sustainedPresetFeedback, classes, className, }: CrisViewDspPresetsProps): react_jsx_runtime.JSX.Element;
|
|
938
|
+
|
|
939
|
+
interface CrisViewDspChannelsProps extends DspStylingProps {
|
|
940
|
+
/** OID of the DSP custom object. */
|
|
941
|
+
oid: string;
|
|
942
|
+
/** Direction: 'in' (inputs) or 'out' (outputs). */
|
|
943
|
+
io: DspIoDir;
|
|
944
|
+
/** Channel ids to show. Omit → all channels of this io. */
|
|
945
|
+
show?: number[];
|
|
946
|
+
/** Wrap in a horizontal-scroll container instead of a plain flex row. Default false. */
|
|
947
|
+
scroll?: boolean;
|
|
948
|
+
/** Show the empty-state message when no channels match. Default false (render nothing). */
|
|
949
|
+
showEmpty?: boolean;
|
|
950
|
+
/** Empty-state message (only when showEmpty). */
|
|
951
|
+
emptyLabel?: string;
|
|
952
|
+
}
|
|
953
|
+
declare function CrisViewDspChannels({ oid, io, show, scroll, showEmpty, emptyLabel, classes, icons, className, }: CrisViewDspChannelsProps): react_jsx_runtime.JSX.Element | null;
|
|
954
|
+
|
|
777
955
|
/**
|
|
778
956
|
* Icon configuration and utilities for CRIS components
|
|
779
957
|
*
|
|
@@ -824,4 +1002,4 @@ declare function getIconUrl(name: string): string;
|
|
|
824
1002
|
*/
|
|
825
1003
|
declare function getIconFilter(active: boolean): string | undefined;
|
|
826
1004
|
|
|
827
|
-
export { type CommIndicatorState, type CommKind, CrisButton, type CrisButtonProps, CrisCoDebug, type CrisCoDebugProps, CrisCoList, type CrisCoListProps, CrisCoMatrixListsTie, type CrisCoMatrixListsTieProps, CrisGauge, type CrisGaugeProps, CrisOfflinePage, type CrisOfflinePageProps, CrisSlider, type CrisSliderProps, CrisSpinner, type CrisSpinnerProps, CrisText, CrisTextInput, type CrisTextInputProps, type CrisTextProps, CrisViewComm, type CrisViewCommClasses, type CrisViewCommIcons, type CrisViewCommProps, type CrisViewDspClasses, CrisViewDspFull, type CrisViewDspFullProps, type CrisViewDspIcons, type CrisViewDspPreset, type DebugModule, type DeviceComm, type DspIo, type DspIoDir, type DspLinkedGroup, type DspLinks, type DspOut, type DspPreset, type DspStatus, type DspStrip, type IconConfig, type ListItem, type ListStatus, type MatrixItem, type MatrixStatus, type MixerAxisItem, type SpinnerSpeed, buildMixerAxis, clampLevel, collapseStrips, commIndicators, configureIcons, getIconConfig, getIconFilter, getIconUrl, levelToPercent, linksFor, normalizeLinked };
|
|
1005
|
+
export { type CommIndicatorState, type CommKind, CrisButton, type CrisButtonProps, CrisCoDebug, type CrisCoDebugProps, CrisCoList, type CrisCoListProps, CrisCoMatrixListsTie, type CrisCoMatrixListsTieProps, CrisGauge, type CrisGaugeProps, CrisOfflinePage, type CrisOfflinePageProps, CrisSlider, type CrisSliderProps, CrisSpinner, type CrisSpinnerProps, CrisText, CrisTextInput, type CrisTextInputProps, type CrisTextProps, CrisViewComm, type CrisViewCommClasses, type CrisViewCommIcons, type CrisViewCommProps, CrisViewDspChannels, type CrisViewDspChannelsProps, type CrisViewDspClasses, CrisViewDspFull, type CrisViewDspFullProps, type CrisViewDspIcons, CrisViewDspInputs, type CrisViewDspInputsProps, CrisViewDspMixer, type CrisViewDspMixerProps, CrisViewDspOutputs, type CrisViewDspOutputsProps, type CrisViewDspPreset, CrisViewDspPresets, type CrisViewDspPresetsProps, type DebugModule, type DeviceComm, type DspDisplayGroup, type DspDisplayGroups, type DspIo, type DspIoDir, type DspLinkedGroup, type DspLinks, type DspOut, type DspPreset, type DspSection, type DspStatus, type DspStrip, type DspStylingProps, type IconConfig, type ListItem, type ListStatus, type MatrixItem, type MatrixStatus, type MixerAxisItem, type MixerAxisItem3, type MixerGeometry, type MixerGeometryOverrides, type SpinnerSpeed, buildIoSections, buildMixerAxis, buildMixerAxisGrouped, clampLevel, collapseStrips, commIndicators, configureIcons, getIconConfig, getIconFilter, getIconUrl, groupsFor, levelToPercent, linksFor, normalizeLinked };
|