@prolibu-suite/cobalt-core 0.11.4 → 0.11.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/custom-elements.json +65 -31
- package/dist/cjs/co-audio-player.cjs.entry.js +198 -46
- package/dist/cjs/co-kbd_2.cjs.entry.js +10 -3
- package/dist/cjs/cobalt.cjs.js +1 -1
- package/dist/cjs/index-bHoidDwv.js +4 -4
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cobalt/cobalt.esm.js +1 -1
- package/dist/cobalt/p-4a7fd0b4.entry.js +1 -0
- package/dist/cobalt/p-868d1a18.entry.js +1 -0
- package/dist/collection/components/co-audio-player/co-audio-player.js +40 -47
- package/dist/collection/components/co-audio-player/co-audio-player.peaks-cache.js +104 -0
- package/dist/collection/components/co-audio-player/co-audio-player.utils.js +61 -0
- package/dist/collection/components/co-autocomplete/co-autocomplete.js +1 -1
- package/dist/collection/components/co-avatar-group/co-avatar-group.js +1 -1
- package/dist/collection/components/co-checkbox-group/co-checkbox-group.js +1 -1
- package/dist/collection/components/co-color-area/co-color-area.js +2 -2
- package/dist/collection/components/co-color-slider/co-color-slider.js +1 -1
- package/dist/collection/components/co-combobox/co-combobox.js +1 -1
- package/dist/collection/components/co-command-search/co-command-search.js +1 -1
- package/dist/collection/components/co-data-table/co-data-table.js +1 -1
- package/dist/collection/components/co-date-range-picker/co-date-range-picker.js +2 -2
- package/dist/collection/components/co-document-editor/co-document-editor.js +5 -5
- package/dist/collection/components/co-popover/co-popover.js +1 -1
- package/dist/collection/components/co-radio-group/co-radio-group.js +1 -1
- package/dist/collection/components/co-ref-field/co-ref-field.js +4 -4
- package/dist/collection/components/co-segmented-bar/co-segmented-bar.js +1 -1
- package/dist/collection/components/co-select/co-select.js +1 -1
- package/dist/collection/components/co-sidebar-nav/co-sidebar-nav.js +1 -1
- package/dist/collection/components/co-toast/co-toast.js +2 -2
- package/dist/collection/components/co-tooltip/co-tooltip.css +14 -5
- package/dist/collection/components/co-tooltip/co-tooltip.js +29 -2
- package/dist/collection/components/co-transfer-list/co-transfer-list.js +1 -1
- package/dist/collection/components/co-tree-item/co-tree-item.js +2 -2
- package/dist/components/co-audio-player.js +1 -1
- package/dist/components/co-autocomplete.js +1 -1
- package/dist/components/co-avatar-group.js +1 -1
- package/dist/components/co-avatar.js +1 -1
- package/dist/components/co-combobox.js +1 -1
- package/dist/components/co-command-search.js +1 -1
- package/dist/components/co-data-table.js +1 -1
- package/dist/components/co-document-editor.js +1 -1
- package/dist/components/co-file-field.js +1 -1
- package/dist/components/co-list-item.js +1 -1
- package/dist/components/co-option-list.js +1 -1
- package/dist/components/co-ref-field.js +1 -1
- package/dist/components/co-sidebar-nav.js +1 -1
- package/dist/components/co-tooltip.js +1 -1
- package/dist/components/{p-BqFBZ1PT.js → p-BW10Sgiy.js} +1 -1
- package/dist/components/{p-VcrjNCew.js → p-BzNBPHen.js} +1 -1
- package/dist/components/p-V7HYy0VO.js +1 -0
- package/dist/esm/co-audio-player.entry.js +198 -46
- package/dist/esm/co-kbd_2.entry.js +10 -3
- package/dist/esm/cobalt.js +1 -1
- package/dist/esm/index-DJkaRtbb.js +4 -4
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/co-audio-player/co-audio-player.d.ts +8 -1
- package/dist/types/components/co-audio-player/co-audio-player.peaks-cache.d.ts +58 -0
- package/dist/types/components/co-audio-player/co-audio-player.utils.d.ts +33 -0
- package/dist/types/components/co-tooltip/co-tooltip.d.ts +6 -0
- package/dist/types/components.d.ts +11 -0
- package/package.json +4 -4
- package/dist/cobalt/p-358a6c2a.entry.js +0 -1
- package/dist/cobalt/p-db623519.entry.js +0 -1
- package/dist/components/p-9VoFSbIH.js +0 -1
|
@@ -60,7 +60,8 @@ export declare class CoAudioPlayer {
|
|
|
60
60
|
}>;
|
|
61
61
|
private audio?;
|
|
62
62
|
private waveEl?;
|
|
63
|
-
private
|
|
63
|
+
private peakEnvelope;
|
|
64
|
+
private exactPeaks;
|
|
64
65
|
private decodedDuration;
|
|
65
66
|
private loadToken;
|
|
66
67
|
private resizeObserver?;
|
|
@@ -77,8 +78,14 @@ export declare class CoAudioPlayer {
|
|
|
77
78
|
disconnectedCallback(): void;
|
|
78
79
|
onSrcChange(): void;
|
|
79
80
|
private rebuildBars;
|
|
81
|
+
private decodedBars;
|
|
80
82
|
private init;
|
|
81
83
|
private teardown;
|
|
84
|
+
/**
|
|
85
|
+
* Picos + duración del decode, vía el caché de módulo (`co-audio-player.peaks-cache`):
|
|
86
|
+
* dos instancias con la misma `src` comparten UNA descarga y UN decode, y lo que
|
|
87
|
+
* vuelve es la envolvente acotada, no el PCM.
|
|
88
|
+
*/
|
|
82
89
|
private extractPeaks;
|
|
83
90
|
/** Re-derive the shown duration from whichever source knows it. Called from both
|
|
84
91
|
* `loadedmetadata` and the end of the decode, because either can land first. */
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { type PeakEnvelope } from './co-audio-player.utils';
|
|
2
|
+
/**
|
|
3
|
+
* Caché de picos de `co-audio-player`, a nivel de MÓDULO (compartido por todas las
|
|
4
|
+
* instancias del documento).
|
|
5
|
+
*
|
|
6
|
+
* Por qué: la misma grabación suele estar montada dos veces (la tarjeta de la
|
|
7
|
+
* llamada y su detalle) y cada instancia descargaba y decodificaba el audio
|
|
8
|
+
* completo por su cuenta. Acá se guarda solo lo que la onda necesita —la
|
|
9
|
+
* envolvente acotada y la duración decodificada— y los pedidos simultáneos de la
|
|
10
|
+
* misma URL comparten una sola promesa.
|
|
11
|
+
*
|
|
12
|
+
* Fidelidad de la onda: mientras el PCM existe (dentro del decode) se calculan las
|
|
13
|
+
* barras EXACTAS —`resamplePeaks`, lo mismo que antes— para el ancho vigente de cada
|
|
14
|
+
* instancia que está esperando ese decode; esas se pintan idénticas a como se
|
|
15
|
+
* pintaban. Solo un ancho que aparece después (resize, u otra instancia con el caché
|
|
16
|
+
* ya caliente) sale de la envolvente (`resampleEnvelope`, alta resolución).
|
|
17
|
+
*
|
|
18
|
+
* Key = la URL TAL CUAL. No se normaliza: una URL firmada (S3 `?X-Amz-Signature=…`)
|
|
19
|
+
* que se renueva es otra entrada y vuelve a descargar. Es un límite aceptado: una
|
|
20
|
+
* normalización propia (quitar la query) podría confundir dos recursos distintos.
|
|
21
|
+
*/
|
|
22
|
+
export interface AudioPeaks {
|
|
23
|
+
envelope: PeakEnvelope;
|
|
24
|
+
/** Barras exactas (del PCM) por cantidad de barras, para los anchos pedidos
|
|
25
|
+
* mientras el decode estaba en vuelo. Unas pocas entradas de cientos de valores. */
|
|
26
|
+
exact: ReadonlyMap<number, number[]>;
|
|
27
|
+
/** `AudioBuffer.duration` (s): la única duración fiable de un blob sin cabecera. */
|
|
28
|
+
duration: number;
|
|
29
|
+
}
|
|
30
|
+
/** Cantidad de barras que una instancia quiere AHORA; se consulta al terminar el
|
|
31
|
+
* decode (no al pedirlo: el ancho se mide después de `componentWillLoad`). Un valor
|
|
32
|
+
* no positivo = ya no le interesa (src cambiada, desmontada). */
|
|
33
|
+
export type BarsWanted = () => number;
|
|
34
|
+
/** `null` = el entorno no puede decodificar (sin WebAudio o sin fetch): no es un error.
|
|
35
|
+
* `wanted` es un conjunto VIVO: puede crecer mientras la carga está en vuelo. */
|
|
36
|
+
export type PeaksLoader = (url: string, wanted: ReadonlySet<BarsWanted>) => Promise<AudioPeaks | null>;
|
|
37
|
+
/** Tope de entradas. Cada una pesa ≤ 256 KB (`PEAK_ENVELOPE_BINS` Float32) más unas
|
|
38
|
+
* pocas listas de barras exactas, así que el caché lleno queda en ~4 MB. Una
|
|
39
|
+
* instancia montada conserva SU envolvente aunque la entrada se desaloje (es la
|
|
40
|
+
* misma referencia, no una copia). */
|
|
41
|
+
export declare const PEAKS_CACHE_MAX = 16;
|
|
42
|
+
/**
|
|
43
|
+
* Picos + duración de `url`: del caché si están, uniéndose a la carga en vuelo si
|
|
44
|
+
* otra instancia ya la pidió, o cargándolos. Solo se cachea un resultado real: un
|
|
45
|
+
* error (CORS, red, códec) o un `null` se devuelven tal cual y el próximo pedido
|
|
46
|
+
* reintenta.
|
|
47
|
+
*/
|
|
48
|
+
export declare function loadAudioPeaks(url: string, wantBars?: BarsWanted, loader?: PeaksLoader): Promise<AudioPeaks | null>;
|
|
49
|
+
/** Vacía el caché (tests; y un host que necesite liberar memoria a mano). */
|
|
50
|
+
export declare function clearAudioPeaksCache(): void;
|
|
51
|
+
/**
|
|
52
|
+
* Descarga + decode con Web Audio, reducido a la envolvente. El `AudioBuffer`
|
|
53
|
+
* (y con él el PCM completo) no sale de esta función: queda sin referencias
|
|
54
|
+
* apenas se calcula la envolvente.
|
|
55
|
+
*/
|
|
56
|
+
export declare function decodeAudioPeaks(url: string, wanted?: ReadonlySet<BarsWanted>): Promise<AudioPeaks | null>;
|
|
57
|
+
/** Barras exactas para cada ancho que las instancias en espera quieren ahora mismo. */
|
|
58
|
+
export declare function exactBarsFor(pcm: Float32Array | number[], wanted: ReadonlySet<BarsWanted>): Map<number, number[]>;
|
|
@@ -19,6 +19,39 @@ export declare function formatTime(seconds: number): string;
|
|
|
19
19
|
export declare function resolveDuration(fromAudio: number, fromDecode: number): number;
|
|
20
20
|
/** Downsample raw PCM to `bars` peak heights, each normalized to a 0..1 fraction. */
|
|
21
21
|
export declare function resamplePeaks(channelData: Float32Array | number[], bars: number): number[];
|
|
22
|
+
/**
|
|
23
|
+
* Resolución de la envolvente que se retiene por grabación, en bloques.
|
|
24
|
+
*
|
|
25
|
+
* Las barras EXACTAS del ancho vigente se calculan del PCM antes de soltarlo (ver
|
|
26
|
+
* `co-audio-player.peaks-cache`); la envolvente solo sirve los anchos que aparecen
|
|
27
|
+
* DESPUÉS (resize, o una segunda instancia que llega con el caché ya caliente). El
|
|
28
|
+
* reproductor deriva las barras del ancho (`floor(ancho / barDensity)`, ~853 a
|
|
29
|
+
* 2560 px), así que la envolvente tiene que ir muy por encima de eso: 65 536 bloques
|
|
30
|
+
* = ≥ 76 bloques por barra hasta 2560 px, y pesan 256 KB (Float32) frente a ~32 MB
|
|
31
|
+
* del PCM de 3 min a 44,1 kHz. Medido contra el exacto con PCM sintético de 3 min:
|
|
32
|
+
* desvío máx. ≈ 1 px de 40 en las barras que difieren (≈ 0,8 px con ruido blanco).
|
|
33
|
+
*/
|
|
34
|
+
export declare const PEAK_ENVELOPE_BINS = 65536;
|
|
35
|
+
/** Máximos absolutos por bloque de `blockSize` muestras contiguas: lo único que se
|
|
36
|
+
* retiene de un decode. `length` es la cantidad de muestras del PCM original, que
|
|
37
|
+
* `resampleEnvelope` necesita para reproducir el paso de `resamplePeaks`. */
|
|
38
|
+
export interface PeakEnvelope {
|
|
39
|
+
peaks: Float32Array;
|
|
40
|
+
blockSize: number;
|
|
41
|
+
length: number;
|
|
42
|
+
}
|
|
43
|
+
/** PCM → envolvente de a lo sumo `maxBins` bloques. Con `length ≤ maxBins` el bloque
|
|
44
|
+
* es de 1 muestra y la envolvente ES |PCM| (sin pérdida). */
|
|
45
|
+
export declare function buildPeakEnvelope(channelData: Float32Array | number[], maxBins?: number): PeakEnvelope;
|
|
46
|
+
/**
|
|
47
|
+
* Las mismas barras que `resamplePeaks(pcm, bars)`, calculadas desde la envolvente:
|
|
48
|
+
* mismo paso (`floor(length / bars)` muestras), mismo recorte de la cola y misma
|
|
49
|
+
* fórmula de altura. Cada barra toma el máximo de los bloques que TOCA su rango de
|
|
50
|
+
* muestras, así que el resultado es IDÉNTICO cuando `blockSize` es 1 o divide el
|
|
51
|
+
* paso, y en el caso general solo puede sumar el pico de un bloque parcial en cada
|
|
52
|
+
* borde (nunca queda por debajo del exacto).
|
|
53
|
+
*/
|
|
54
|
+
export declare function resampleEnvelope(env: PeakEnvelope, bars: number): number[];
|
|
22
55
|
/** Deterministic pseudo-waveform (stable render + testable — no Math.random). */
|
|
23
56
|
export declare function fallbackPeaks(bars: number): number[];
|
|
24
57
|
/** Clamped 0..1 position of a click within a track rect. */
|
|
@@ -39,6 +39,12 @@ export declare class CoTooltip {
|
|
|
39
39
|
* arrow hide is CSS-only — `arrow`'s own default/behavior is unchanged.
|
|
40
40
|
*/
|
|
41
41
|
variant: 'default' | 'label';
|
|
42
|
+
/**
|
|
43
|
+
* Color tone of the panel (and arrow). `error` = solid `--co-semantic-status-error`
|
|
44
|
+
* surface with white text, for a record/state warning (e.g. "Inactive").
|
|
45
|
+
* Independent of `variant`.
|
|
46
|
+
*/
|
|
47
|
+
tone: 'default' | 'error';
|
|
42
48
|
/** Optional keyboard shortcut rendered as a `co-kbd` chip next to `content`
|
|
43
49
|
* (dark surface, xs size) — e.g. content "Seleccionar" + shortcut "v". In
|
|
44
50
|
* `variant="label"` the chip sits 4px from the pill's right edge
|
|
@@ -5898,6 +5898,11 @@ export namespace Components {
|
|
|
5898
5898
|
* @default 80
|
|
5899
5899
|
*/
|
|
5900
5900
|
"showDelay": number;
|
|
5901
|
+
/**
|
|
5902
|
+
* Color tone of the panel (and arrow). `error` = solid `--co-semantic-status-error` surface with white text, for a record/state warning (e.g. "Inactive"). Independent of `variant`.
|
|
5903
|
+
* @default 'default'
|
|
5904
|
+
*/
|
|
5905
|
+
"tone": 'default' | 'error';
|
|
5901
5906
|
/**
|
|
5902
5907
|
* Visual variant. `label` = compact pill for a labeled trigger with an optional keyboard shortcut (radius `--co-border-radius-xs`, tighter padding, medium (500) text, `line-height: 1`, no shadow, arrow hidden). The arrow hide is CSS-only — `arrow`'s own default/behavior is unchanged.
|
|
5903
5908
|
* @default 'default'
|
|
@@ -15645,6 +15650,11 @@ declare namespace LocalJSX {
|
|
|
15645
15650
|
* @default 80
|
|
15646
15651
|
*/
|
|
15647
15652
|
"showDelay"?: number;
|
|
15653
|
+
/**
|
|
15654
|
+
* Color tone of the panel (and arrow). `error` = solid `--co-semantic-status-error` surface with white text, for a record/state warning (e.g. "Inactive"). Independent of `variant`.
|
|
15655
|
+
* @default 'default'
|
|
15656
|
+
*/
|
|
15657
|
+
"tone"?: 'default' | 'error';
|
|
15648
15658
|
/**
|
|
15649
15659
|
* Visual variant. `label` = compact pill for a labeled trigger with an optional keyboard shortcut (radius `--co-border-radius-xs`, tighter padding, medium (500) text, `line-height: 1`, no shadow, arrow hidden). The arrow hide is CSS-only — `arrow`'s own default/behavior is unchanged.
|
|
15650
15660
|
* @default 'default'
|
|
@@ -17150,6 +17160,7 @@ declare namespace LocalJSX {
|
|
|
17150
17160
|
"maxWidth": string;
|
|
17151
17161
|
"block": boolean;
|
|
17152
17162
|
"variant": 'default' | 'label';
|
|
17163
|
+
"tone": 'default' | 'error';
|
|
17153
17164
|
"shortcut": string;
|
|
17154
17165
|
}
|
|
17155
17166
|
interface CoTransferListAttributes {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prolibu-suite/cobalt-core",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.6",
|
|
4
4
|
"description": "Cobalt Design System — Framework-agnostic Web Components built with Stencil",
|
|
5
5
|
"main": "dist/index.cjs.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -50,10 +50,10 @@
|
|
|
50
50
|
"@phosphor-icons/core": "^2.1.1",
|
|
51
51
|
"dompurify": "^3.2.6",
|
|
52
52
|
"overlayscrollbars": "^2.16.0",
|
|
53
|
-
"@prolibu-suite/cobalt-date-utils": "0.1.2",
|
|
54
|
-
"@prolibu-suite/cobalt-calendar-utils": "0.1.1",
|
|
55
53
|
"@prolibu-suite/cobalt-rich-text": "0.2.1",
|
|
56
|
-
"@prolibu-suite/cobalt-tokens": "0.6.0"
|
|
54
|
+
"@prolibu-suite/cobalt-tokens": "0.6.0",
|
|
55
|
+
"@prolibu-suite/cobalt-date-utils": "0.1.2",
|
|
56
|
+
"@prolibu-suite/cobalt-calendar-utils": "0.1.1"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@stencil/core": "^4.43.4",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as t,c as i,h as a}from"./p-DJkaRtbb.js";function s(t){if(!Number.isFinite(t)||t<0)return"--:--";const i=Math.floor(t);return`${Math.floor(i/60)}:${(i%60).toString().padStart(2,"0")}`}function e(t,i){const a=t.length;if(!a||i<=0)return[];const s=Math.max(1,Math.floor(a/i)),e=[];for(let o=0;o<i;o++){let i=0;const r=o*s;for(let e=r;e<r+s&&e<a;e++){const a=Math.abs(t[e]);a>i&&(i=a)}e.push(.12+.88*i)}return e}function o(t){if(t<=0)return[];const i=[];for(let a=0;a<t;a++){const s=.6*Math.sin(a/Math.max(1,t)*Math.PI)+.3,e=.75+.25*Math.abs(Math.sin(1.7*a));i.push(.12+s*e*.88)}return i}const r=class{constructor(a){t(this,a),this.coPlay=i(this,"coPlay",7),this.coPause=i(this,"coPause",7),this.coEnded=i(this,"coEnded",7),this.coError=i(this,"coError",7),this.coTimeUpdate=i(this,"coTimeUpdate",3),this.compact=!1,this.bars=64,this.barDensity=3,this.preload="metadata",this.downloadFilename="audio",this.noDownload=!1,this.isPlaying=!1,this.isLoading=!1,this.hasError=!1,this.currentTime=0,this.duration=NaN,this.peaks=[],this.containerWidth=0,this.playbackRate=1,this.rawChannelData=null,this.decodedDuration=NaN,this.loadToken=0,this.onMeta=()=>{this.syncDuration(),this.applyPendingSeek()},this.pendingSeek=null,this.onCanPlay=()=>{this.isLoading=!1,this.applyPendingSeek()},this.onWaiting=()=>{this.isLoading=!0},this.onTime=()=>{var t;this.currentTime=(null===(t=this.audio)||void 0===t?void 0:t.currentTime)||0,this.coTimeUpdate.emit({currentTime:this.currentTime,duration:this.knownDuration})},this.onEnded=()=>{this.isPlaying=!1,this.currentTime=0,this.coEnded.emit()},this.onErr=t=>{this.isLoading=!1,this.hasError=!0,this.coError.emit(t)},this.toggle=()=>{this.audio&&!this.hasError&&(this.isPlaying?(this.audio.pause(),this.isPlaying=!1,this.coPause.emit()):this.audio.play().then((()=>{this.isPlaying=!0,this.coPlay.emit()})).catch((()=>{})))},this.SPEEDS=[1,1.5,2,.5],this.cycleSpeed=()=>{const t=this.SPEEDS.indexOf(this.playbackRate);this.playbackRate=this.SPEEDS[(t+1)%this.SPEEDS.length],this.audio&&(this.audio.playbackRate=this.playbackRate)},this.seekAt=t=>{const i=this.knownDuration;if(!this.audio||!this.waveEl||!i)return;const a=function(t,i){return i.width?Math.max(0,Math.min(1,(t-i.left)/i.width)):0}(t,this.waveEl.getBoundingClientRect());this.audio.currentTime=a*i,this.currentTime=this.audio.currentTime},this.onWaveKey=t=>{if(" "===t.key||"Enter"===t.key)return t.preventDefault(),void this.toggle();if(!this.audio)return;const i=this.knownDuration,a=this.audio.currentTime;if("ArrowRight"===t.key)this.audio.currentTime=i?Math.min(i,a+5):a+5;else{if("ArrowLeft"!==t.key)return;this.audio.currentTime=Math.max(0,a-5)}this.currentTime=this.audio.currentTime}}get knownDuration(){return Number.isFinite(this.duration)&&this.duration>0?this.duration:0}get effectiveBars(){return this.containerWidth>0?Math.max(24,Math.floor(this.containerWidth/this.barDensity)):this.bars}componentWillLoad(){this.init()}componentDidLoad(){if("undefined"==typeof ResizeObserver||!this.waveEl)return;this.resizeObserver=new ResizeObserver((t=>{var i;for(const a of t){const t=(null===(i=a.contentRect)||void 0===i?void 0:i.width)||a.target.clientWidth||0;t>2&&Math.abs(t-this.containerWidth)>2&&(this.containerWidth=t,this.rebuildBars())}})),this.resizeObserver.observe(this.waveEl);const t=this.waveEl.clientWidth||0;t>2&&(this.containerWidth=t,this.rebuildBars())}disconnectedCallback(){var t;this.loadToken++,this.teardown(),null===(t=this.resizeObserver)||void 0===t||t.disconnect(),this.resizeObserver=void 0}onSrcChange(){this.init()}rebuildBars(){this.peaks=this.rawChannelData?e(this.rawChannelData,this.effectiveBars):o(this.effectiveBars)}init(){this.teardown();const t=++this.loadToken;if(this.rawChannelData=null,this.decodedDuration=NaN,this.peaks=o(this.effectiveBars),this.currentTime=0,this.duration=NaN,this.playbackRate=1,this.hasError=!1,!this.src)return;if(this.isLoading=!0,this.extractPeaks(this.src,t),"undefined"==typeof Audio)return;const i=new Audio;i.preload=this.preload,i.crossOrigin="anonymous",i.src=this.src,i.addEventListener("loadedmetadata",this.onMeta),i.addEventListener("timeupdate",this.onTime),i.addEventListener("ended",this.onEnded),i.addEventListener("error",this.onErr),i.addEventListener("canplay",this.onCanPlay),i.addEventListener("waiting",this.onWaiting),this.audio=i}teardown(){this.audio&&(this.audio.pause(),this.audio.removeEventListener("loadedmetadata",this.onMeta),this.audio.removeEventListener("timeupdate",this.onTime),this.audio.removeEventListener("ended",this.onEnded),this.audio.removeEventListener("error",this.onErr),this.audio.removeEventListener("canplay",this.onCanPlay),this.audio.removeEventListener("waiting",this.onWaiting),this.audio.src="",this.audio=void 0),this.isPlaying=!1}async extractPeaks(t,i){var a;let s;try{const a=window.OfflineAudioContext||window.webkitOfflineAudioContext,o=window.AudioContext||window.webkitAudioContext;if(!a&&!o||"undefined"==typeof fetch)return;s=a?new a(1,1,44100):new o;const r=await(await fetch(t)).arrayBuffer(),h=await s.decodeAudioData(r);if(i!==this.loadToken)return;this.rawChannelData=h.getChannelData(0),this.decodedDuration=h.duration,this.peaks=e(this.rawChannelData,this.effectiveBars)}catch(t){if(i!==this.loadToken)return;this.rawChannelData=null,this.decodedDuration=NaN,this.peaks=o(this.effectiveBars)}finally{try{await(null===(a=null==s?void 0:s.close)||void 0===a?void 0:a.call(s))}catch(t){}}i===this.loadToken&&this.syncDuration()}syncDuration(){var t,i;const a=(s=null!==(i=null===(t=this.audio)||void 0===t?void 0:t.duration)&&void 0!==i?i:NaN,e=this.decodedDuration,Number.isFinite(s)&&s>0?s:Number.isFinite(e)&&e>0?e:NaN);var s,e;Object.is(a,this.duration)||(this.duration=a)}applyPendingSeek(){if(null==this.pendingSeek||!this.audio)return;const t=this.pendingSeek;this.pendingSeek=null,this.audio.currentTime=t,this.currentTime=this.audio.currentTime,this.coTimeUpdate.emit({currentTime:this.currentTime,duration:this.knownDuration})}async seek(t){var i;if(!this.audio||!Number.isFinite(t))return;const a=this.knownDuration,s=a?Math.max(0,Math.min(a,t)):Math.max(0,t);this.audio.currentTime=s,Math.abs((null!==(i=this.audio.currentTime)&&void 0!==i?i:0)-s)>.05&&(this.pendingSeek=s),this.currentTime=s,this.coTimeUpdate.emit({currentTime:this.currentTime,duration:a})}async play(){if(this.audio&&!this.isPlaying&&!this.hasError)try{await this.audio.play(),this.isPlaying=!0,this.coPlay.emit()}catch(t){}}async download(){if(this.src&&"undefined"!=typeof fetch)try{const t=await(await fetch(this.src)).blob(),i=URL.createObjectURL(t),a=document.createElement("a");a.href=i,a.download=this.downloadFilename,document.body.appendChild(a),a.click(),a.remove(),URL.revokeObjectURL(i)}catch(t){}}render(){const t=Math.max(1,3*this.peaks.length),i=this.knownDuration,e=i?this.currentTime/i*100:0,o=i?Math.floor(i):void 0,r=(t,i,s=!1)=>a("rect",{key:"4b294190b3be5e7cf15282d43e7e51164a3dda4c",x:3*i,y:20-40*t/2,width:1.8,height:Math.max(40*t,2),rx:.6,class:{"co-audio-player__bar":!0,"co-audio-player__bar--played":s}});return a("div",{key:"0758a438c4a71e822de94f8b41219945f62ae62d",class:{"co-audio-player":!0,"co-audio-player--compact":this.compact,"co-audio-player--error":this.hasError,"co-audio-player--playing":this.isPlaying},part:"player"},a("button",{key:"4c4161e7ba7344a9c6a32dcc8fd92c300b750d95",type:"button",class:"co-audio-player__play",part:"play","aria-label":this.hasError?"Audio no disponible":this.isPlaying?"Pausar":"Reproducir","aria-busy":this.isLoading?"true":"false",disabled:this.hasError||!this.src,onClick:this.toggle},a("co-icon",{key:"ea749ee1cf627a49e3859029ca274170c8d69c63",name:this.hasError?"warning-circle":this.isPlaying?"pause":"play",weight:"fill",size:this.compact?12:14})),a("div",{key:"f39bf8bf114860a672979fa53287672dccea1b7f",class:"co-audio-player__wave",part:"wave",role:"slider",tabindex:"0","aria-label":"Progreso de reproducción","aria-valuemin":0,"aria-valuemax":o,"aria-valuenow":Math.floor(this.currentTime),ref:t=>this.waveEl=t,onClick:t=>this.seekAt(t.clientX),onKeyDown:this.onWaveKey},a("svg",{key:"2145f303271ca676988999b5ea7d76ab384c5e2d",class:"co-audio-player__svg",viewBox:`0 0 ${t} 40`,preserveAspectRatio:"none","aria-hidden":"true"},this.peaks.map(((t,i)=>r(t,i))),a("clipPath",{key:"6014c9f96f5df60086265a5e01344be80ebff741",id:"co-ap-clip"},a("rect",{key:"5857fa3098fc0eb9df58b643c2b44316cf819ae8",x:"0",y:"0",width:e/100*t,height:40})),a("g",{key:"241608ddfdb863ba5b18444ed2bffb39e72abeb5","clip-path":"url(#co-ap-clip)"},this.peaks.map(((t,i)=>r(t,i,!0)))))),a("span",{key:"18f190b8b23f8939da5dd2c230214d42a5b330c1",class:"co-audio-player__time",part:"time"},s(this.currentTime)," / ",s(this.duration)),!this.compact&&a("button",{key:"4a29cae938ab347997bc76e0cfe5621b402730f7",type:"button",class:"co-audio-player__speed",part:"speed","aria-label":`Velocidad de reproducción ${this.playbackRate}x`,onClick:this.cycleSpeed},this.playbackRate,"x"),!this.compact&&!this.noDownload&&a("button",{key:"c451449e629584bc3937b27b31b1124e510af91e",type:"button",class:"co-audio-player__dl",part:"download","aria-label":"Descargar",onClick:()=>this.download()},a("co-icon",{key:"f4d014129829ab57ddae0d3e32b1e0930f1bc288",name:"download-simple",size:14})))}static get watchers(){return{src:[{onSrcChange:0}]}}};r.style=":host{display:block;font-family:var(--co-font-family-primary)}.co-audio-player{display:flex;align-items:center;gap:var(--co-spacing-md);padding:var(--co-spacing-sm) var(--co-spacing-md);border:1px solid var(--co-semantic-border-default);border-radius:var(--co-border-radius-xs);background:var(--co-semantic-surface-secondary);min-width:180px}.co-audio-player--compact{gap:var(--co-spacing-sm2);padding:var(--co-spacing-sm2) var(--co-spacing-sm);min-width:140px}.co-audio-player__play{flex:0 0 auto;width:28px;height:28px;border:none;border-radius:50%;cursor:pointer;background:var(--co-semantic-surface-primary);color:var(--co-semantic-text-inverse);display:inline-flex;align-items:center;justify-content:center}.co-audio-player--compact .co-audio-player__play{width:24px;height:24px}.co-audio-player__play:disabled{opacity:.5;cursor:not-allowed}.co-audio-player__play:focus-visible{outline:2px solid var(--co-semantic-border-focus);outline-offset:2px}.co-audio-player__wave{flex:1;height:40px;min-width:0;cursor:pointer;display:flex;align-items:center}.co-audio-player__wave:focus-visible{outline:2px solid var(--co-semantic-border-focus);outline-offset:2px;border-radius:var(--co-border-radius-xxs)}.co-audio-player__svg{width:100%;height:100%;display:block}.co-audio-player__bar{fill:var(--co-semantic-border-field);transition:fill var(--co-motion-duration-fast)}.co-audio-player__wave:hover .co-audio-player__bar{fill:var(--co-semantic-text-muted)}.co-audio-player__bar--played{fill:var(--co-semantic-surface-primary)}.co-audio-player__time{flex:0 0 auto;font-size:var(--co-font-size-12);color:var(--co-semantic-text-muted);font-variant-numeric:tabular-nums;min-width:62px;text-align:right}.co-audio-player__speed{flex:0 0 auto;border:none;background:transparent;cursor:pointer;padding:2px 4px;color:var(--co-semantic-text-muted);font-family:var(--co-font-family-primary);font-size:var(--co-font-size-12);font-variant-numeric:tabular-nums;min-width:34px;text-align:center}.co-audio-player__speed:hover{color:var(--co-semantic-text-default)}.co-audio-player__speed:focus-visible{outline:2px solid var(--co-semantic-border-focus);outline-offset:2px;border-radius:var(--co-border-radius-xxs)}.co-audio-player__dl{flex:0 0 auto;border:none;background:transparent;cursor:pointer;padding:2px;color:var(--co-semantic-text-muted);display:inline-flex}.co-audio-player__dl:hover{color:var(--co-semantic-text-default)}.co-audio-player__dl:focus-visible{outline:2px solid var(--co-semantic-border-focus);outline-offset:2px}.co-audio-player--error .co-audio-player__wave{opacity:.5}.co-audio-player--error .co-audio-player__play{background:var(--co-color-status-error);color:var(--co-semantic-text-inverse);opacity:1}";export{r as co_audio_player}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as t,h as o,a as i}from"./p-DJkaRtbb.js";import{c as s,g as e,f as a}from"./p-BtliEQAT.js";const r={es:{ctrl:"Ctrl",shift:"Shift",alt:"Alt",win:"Win"},en:{ctrl:"Ctrl",shift:"Shift",alt:"Alt",win:"Win"},pt:{ctrl:"Ctrl",shift:"Shift",alt:"Alt",win:"Win"}},n={mod:"command",cmd:"command",shift:"arrow-fat-up",alt:"option",ctrl:"control"};function c(t){return"mod"===t||"cmd"===t||"shift"===t||"alt"===t||"ctrl"===t}function l(t,o,i){if("mac"===o)switch(t){case"mod":case"cmd":return"Cmd";case"shift":return"Shift";case"alt":return"Option";case"ctrl":return"Control"}switch(t){case"mod":case"ctrl":return i.ctrl;case"cmd":return i.win;case"shift":return i.shift;case"alt":return i.alt}}const h=class{constructor(o){t(this,o),this.keys="",this.platform="auto",this.surface="light",this.size="sm",this.chord=!1}resolvePlatform(){return"mac"===this.platform?"mac":"win"===this.platform?"win":function(){if("undefined"==typeof navigator)return!1;const t=navigator.platform||"",o=navigator.userAgent||"";return/Mac/i.test(t)||/Mac/i.test(o)}()?"mac":"win"}render(){const t=this.keys.split("+").map((t=>t.trim().toLowerCase())).filter(Boolean),i=this.resolvePlatform(),s=r[function(t){const o=(t||"").toLowerCase();return o.startsWith("es")?"es":o.startsWith("pt")?"pt":"en"}(this.locale)],e="sm"===this.size?12:10,a=t.map((t=>c(t)?l(t,i,s):t.toUpperCase())).join(" + "),h=t=>c(t)&&"mac"===i,p=(t,e)=>h(t)?o("co-icon",{name:n[t],size:e}):c(t)?l(t,i,s):t.toUpperCase(),d=[];return this.chord?d.push(o("kbd",{class:"co-kbd__key co-kbd__key--chord",part:"key",key:"chord"},t.map(((t,i)=>o("span",{class:{"co-kbd__cell":!0,"co-kbd__cell--icon":h(t),"co-kbd__cell--text":!h(t)},part:"cell",key:`cell-${i}`},p(t,12)))))):t.forEach(((t,i)=>{i>0&&d.push(o("span",{class:"co-kbd__sep",part:"sep",key:`sep-${i}`},"+")),d.push(o("kbd",{class:"co-kbd__key",part:"key",key:`key-${i}`},p(t,e)))})),o("span",{key:"d2b28cba40938051dd4488ceb0e06391e9e4b31d",class:{"co-kbd":!0,[`co-kbd--${this.size}`]:!0,[`co-kbd--${this.surface}`]:!0,"co-kbd--chord":this.chord},role:"group","aria-label":a,part:"group"},d)}};h.style=":host{display:inline-flex}.co-kbd{display:inline-flex;align-items:center;gap:var(--co-spacing-xxs, 2px)}.co-kbd__sep{font-family:var(--co-font-family-primary, 'Geist', sans-serif);font-size:var(--co-font-size-10, 10px);line-height:1;opacity:0.6}.co-kbd__key{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;font-family:var(--co-font-family-primary, 'Geist', sans-serif);font-style:normal;font-weight:var(--co-font-weight-medium, 500);font-size:var(--co-font-size-10, 10px);line-height:1;text-transform:uppercase;border-radius:var(--co-border-radius-xxs, 4px)}.co-kbd--sm .co-kbd__key{min-width:30px;height:18px;padding:0 3px}.co-kbd--xs .co-kbd__key{width:16px;height:16px;padding:0}.co-kbd__cell{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:12px;height:12px;flex-shrink:0;white-space:nowrap}.co-kbd__cell--icon{width:12px}.co-kbd__cell--text{width:auto;padding:0 1px}.co-kbd--xs .co-kbd__key--chord{width:auto;min-width:16px;height:16px;padding:0 2px}.co-kbd--light .co-kbd__key{background:var(--co-semantic-surface-control, #f6f6f6);color:var(--co-semantic-text-default, #1f1c1b)}.co-kbd--light .co-kbd__sep{color:var(--co-semantic-text-default, #1f1c1b)}.co-kbd--dark .co-kbd__key{background:var(--co-color-opacity-blanco-16, rgba(255, 255, 255, 0.16));color:var(--co-color-base-blanco, #fff)}.co-kbd--dark .co-kbd__sep{color:var(--co-color-base-blanco, #fff)}";const p=class{constructor(o){t(this,o),this.content="",this.placement="top",this.offset=8,this.showDelay=80,this.hideDelay=100,this.disabled=!1,this.arrow=!0,this.flip=!0,this.maxWidth="280px",this.block=!1,this.variant="default",this.visible=!1,this.actualPlacement="top",this.closing=!1,this.suppressed=!1,this.scrollParents=[],this.cachedOffsetAncestor=null,this.offsetAncestorComputed=!1,this.scheduleShow=()=>{this.disabled||!this.content||this.suppressed||(this.clearHideTimeout(),this.visible||(this.showTimeout=setTimeout((()=>{this.visible=!0}),this.showDelay)))},this.scheduleHide=()=>{this.clearShowTimeout(),this.visible&&(this.hideTimeout=setTimeout((()=>{this.visible=!1}),this.hideDelay))},this.hideImmediate=()=>{this.clearTimers(),this.visible=!1},this.finishClose=()=>{clearTimeout(this.closeFallbackTimer),this.visible||(this.closing=!1,this.panelEl=void 0)},this.handlePanelTransitionEnd=t=>{!this.visible&&this.closing&&t.target===this.panelEl&&"opacity"===t.propertyName&&this.finishClose()},this.handleMouseEnter=()=>{this.scheduleShow()},this.handleMouseLeave=()=>{this.suppressed=!1,this.scheduleHide()},this.handlePointerDown=()=>{this.suppressed=!0,this.hideImmediate()},this.handleFocusIn=()=>{this.scheduleShow()},this.handleFocusOut=()=>{this.suppressed=!1,this.scheduleHide()},this.handleKeyDown=t=>{"Escape"===t.key&&this.visible&&this.hideImmediate()},this.updatePosition=()=>{if(!this.visible||!this.triggerEl||!this.panelEl)return;const t=this.triggerEl.getBoundingClientRect(),o=this.panelEl.getBoundingClientRect();if(0===o.width&&0===o.height)return;const{top:i,left:a,actualPlacement:r}=s(t,o,{placement:this.placement,offset:this.offset,flip:this.flip});this.actualPlacement=r;let n=i,c=a;if(!this.panelEl.matches(":popover-open")&&(this.offsetAncestorComputed||(this.cachedOffsetAncestor=e(this.panelEl),(this.cachedOffsetAncestor||this.panelEl.isConnected)&&(this.offsetAncestorComputed=!0)),this.cachedOffsetAncestor)){const t=this.cachedOffsetAncestor.getBoundingClientRect();n-=t.top,c-=t.left}this.panelEl&&(this.panelEl.style.top=`${n}px`,this.panelEl.style.left=`${c}px`,this.panelEl.classList.add("co-tooltip__panel--positioned"))},this.scheduleUpdate=()=>{this.rafId&&cancelAnimationFrame(this.rafId),this.rafId=requestAnimationFrame(this.updatePosition)}}disconnectedCallback(){this.clearTimers(),this.cleanupListeners(),clearTimeout(this.closeFallbackTimer),this.closing=!1}onVisibleChange(t){t?(this.closing=!1,clearTimeout(this.closeFallbackTimer),this.scheduleUpdate(),requestAnimationFrame((()=>{requestAnimationFrame((()=>{this.updatePosition()}))})),this.addScrollListeners()):(this.cleanupListeners(),this.cachedOffsetAncestor=null,this.offsetAncestorComputed=!1,this.closing=!0,clearTimeout(this.closeFallbackTimer),this.closeFallbackTimer=setTimeout((()=>this.finishClose()),250))}onDisabledChange(t){t&&this.visible&&(this.visible=!1,this.clearTimers())}clearShowTimeout(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=void 0)}clearHideTimeout(){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=void 0)}clearTimers(){this.clearShowTimeout(),this.clearHideTimeout()}promotePanel(){const t=this.panelEl;if(t&&"function"==typeof t.showPopover)try{t.matches(":popover-open")||t.showPopover()}catch(t){}}addScrollListeners(){window.addEventListener("resize",this.scheduleUpdate,{passive:!0}),window.addEventListener("scroll",this.scheduleUpdate,{passive:!0,capture:!0}),this.scrollParents=a(this.el);for(const t of this.scrollParents)t.addEventListener("scroll",this.scheduleUpdate,{passive:!0})}cleanupListeners(){this.rafId&&(cancelAnimationFrame(this.rafId),this.rafId=void 0),window.removeEventListener("resize",this.scheduleUpdate),window.removeEventListener("scroll",this.scheduleUpdate,{capture:!0});for(const t of this.scrollParents)t.removeEventListener("scroll",this.scheduleUpdate);this.scrollParents=[]}render(){const t=this.actualPlacement.split("-")[0];return o("div",{key:"816e80ee775d782c3827fb3ba43187992e348429",class:"co-tooltip"},o("div",{key:"d4d3b56ae5502ccc4fc5c30c5191860ebef51140",class:"co-tooltip__trigger",ref:t=>this.triggerEl=t,onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,onPointerDown:this.handlePointerDown,onFocusin:this.handleFocusIn,onFocusout:this.handleFocusOut,onKeyDown:this.handleKeyDown,"aria-describedby":this.visible?"tooltip-panel":void 0},o("slot",{key:"357ff69bca524ce8c5f3ec21936fef944733cd22"})),(this.visible||this.closing)&&this.content&&o("div",{key:"7d379c2ddafa6e84fbe5d5a4d3e9192a3ddfac87",id:"tooltip-panel",class:{"co-tooltip__panel":!0,[`co-tooltip__panel--${t}`]:!0,"co-tooltip__panel--closing":this.closing,"co-tooltip__panel--label":"label"===this.variant,"co-tooltip__panel--with-shortcut":!!this.shortcut},role:"tooltip",popover:"manual",part:"panel",onTransitionEnd:this.handlePanelTransitionEnd,ref:t=>{t&&t!==this.panelEl&&(this.panelEl=t,this.promotePanel(),this.scheduleUpdate())},style:{maxWidth:this.maxWidth}},this.arrow&&o("div",{key:"0898aa009807ee6d48cdb01a5db9f4ef773804b9",class:`co-tooltip__arrow co-tooltip__arrow--${t}`}),o("span",{key:"07678a78b9fdf0955c54d4dc2c491e5205e7937d",class:"co-tooltip__content"},this.content),this.shortcut&&o("co-kbd",{key:"24aa138140da114eed006f3488dc6cbc105ccee3",keys:this.shortcut,surface:"dark",size:"xs"})))}get el(){return i(this)}static get watchers(){return{visible:[{onVisibleChange:0}],disabled:[{onDisabledChange:0}]}}};p.style=":host{display:inline-block;position:relative}.co-tooltip{display:inline-block}.co-tooltip__trigger{display:inline-block}:host([block]){display:block;width:100%;min-width:0}:host([block]) .co-tooltip,:host([block]) .co-tooltip__trigger{display:block;width:100%;min-width:0}.co-tooltip__panel{position:fixed;inset:auto;top:0;left:0;margin:0;border:0;max-height:none;overflow:visible;z-index:10000;visibility:hidden;opacity:0;pointer-events:none;background:var(--co-color-base-negro, #1f1c1b);color:var(--co-color-base-blanco, #fff);font-family:var(--co-font-family-primary, 'Geist', sans-serif);font-size:var(--co-font-size-12, 12px);line-height:1.4;font-weight:400;text-transform:none;letter-spacing:var(--co-font-letter-spacing-body, normal);padding:var(--co-spacing-xs, 4px) var(--co-spacing-sm, 8px);border-radius:var(--co-border-radius-xxs, 4px);box-shadow:0 4px 12px rgba(31, 28, 27, 0.12);white-space:normal;word-wrap:break-word;transition:opacity var(--co-motion-duration-fast) var(--co-motion-ease-out), transform var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-tooltip__panel--positioned{visibility:visible;opacity:1}.co-tooltip__panel--closing{visibility:visible;opacity:0;transition:opacity var(--co-motion-duration-instant) var(--co-motion-ease-in), transform var(--co-motion-duration-instant) var(--co-motion-ease-in)}.co-tooltip__panel--top{transform:translateY(4px)}.co-tooltip__panel--top.co-tooltip__panel--positioned{transform:translateY(0)}.co-tooltip__panel--bottom{transform:translateY(-4px)}.co-tooltip__panel--bottom.co-tooltip__panel--positioned{transform:translateY(0)}.co-tooltip__panel--left{transform:translateX(4px)}.co-tooltip__panel--left.co-tooltip__panel--positioned{transform:translateX(0)}.co-tooltip__panel--right{transform:translateX(-4px)}.co-tooltip__panel--right.co-tooltip__panel--positioned{transform:translateX(0)}.co-tooltip__arrow{position:absolute;width:0;height:0;border:5px solid transparent}.co-tooltip__arrow--top{bottom:-10px;left:50%;transform:translateX(-50%);border-top-color:var(--co-color-base-negro, #1f1c1b);border-bottom:none}.co-tooltip__arrow--bottom{top:-5px;left:50%;transform:translateX(-50%);border-bottom-color:var(--co-color-base-negro, #1f1c1b);border-top:none}.co-tooltip__arrow--left{right:-10px;top:50%;transform:translateY(-50%);border-left-color:var(--co-color-base-negro, #1f1c1b);border-right:none}.co-tooltip__arrow--right{left:-5px;top:50%;transform:translateY(-50%);border-right-color:var(--co-color-base-negro, #1f1c1b);border-left:none}.co-tooltip__content{display:block}.co-tooltip__panel--label{padding:4px 8px;border-radius:var(--co-border-radius-xs, 8px);font-weight:var(--co-font-weight-medium, 500);line-height:1;box-shadow:none}.co-tooltip__panel--label .co-tooltip__arrow{display:none}.co-tooltip__panel--with-shortcut{display:flex;align-items:center;gap:6px}.co-tooltip__panel--with-shortcut:not(.co-tooltip__panel--label){padding-right:10px;}.co-tooltip__panel--label.co-tooltip__panel--with-shortcut{padding-right:4px}";export{h as co_kbd,p as co_tooltip}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t,p as o,H as i,h as s}from"./index.js";import{c as e,g as a,f as n}from"./p-BtliEQAT.js";import{d as r}from"./p-KK2vAKs-.js";import{d as l}from"./p-8XzG8pzY.js";const c=o(class extends i{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.content="",this.placement="top",this.offset=8,this.showDelay=80,this.hideDelay=100,this.disabled=!1,this.arrow=!0,this.flip=!0,this.maxWidth="280px",this.block=!1,this.variant="default",this.visible=!1,this.actualPlacement="top",this.closing=!1,this.suppressed=!1,this.scrollParents=[],this.cachedOffsetAncestor=null,this.offsetAncestorComputed=!1,this.scheduleShow=()=>{this.disabled||!this.content||this.suppressed||(this.clearHideTimeout(),this.visible||(this.showTimeout=setTimeout((()=>{this.visible=!0}),this.showDelay)))},this.scheduleHide=()=>{this.clearShowTimeout(),this.visible&&(this.hideTimeout=setTimeout((()=>{this.visible=!1}),this.hideDelay))},this.hideImmediate=()=>{this.clearTimers(),this.visible=!1},this.finishClose=()=>{clearTimeout(this.closeFallbackTimer),this.visible||(this.closing=!1,this.panelEl=void 0)},this.handlePanelTransitionEnd=t=>{!this.visible&&this.closing&&t.target===this.panelEl&&"opacity"===t.propertyName&&this.finishClose()},this.handleMouseEnter=()=>{this.scheduleShow()},this.handleMouseLeave=()=>{this.suppressed=!1,this.scheduleHide()},this.handlePointerDown=()=>{this.suppressed=!0,this.hideImmediate()},this.handleFocusIn=()=>{this.scheduleShow()},this.handleFocusOut=()=>{this.suppressed=!1,this.scheduleHide()},this.handleKeyDown=t=>{"Escape"===t.key&&this.visible&&this.hideImmediate()},this.updatePosition=()=>{if(!this.visible||!this.triggerEl||!this.panelEl)return;const t=this.triggerEl.getBoundingClientRect(),o=this.panelEl.getBoundingClientRect();if(0===o.width&&0===o.height)return;const{top:i,left:s,actualPlacement:n}=e(t,o,{placement:this.placement,offset:this.offset,flip:this.flip});this.actualPlacement=n;let r=i,l=s;if(!this.panelEl.matches(":popover-open")&&(this.offsetAncestorComputed||(this.cachedOffsetAncestor=a(this.panelEl),(this.cachedOffsetAncestor||this.panelEl.isConnected)&&(this.offsetAncestorComputed=!0)),this.cachedOffsetAncestor)){const t=this.cachedOffsetAncestor.getBoundingClientRect();r-=t.top,l-=t.left}this.panelEl&&(this.panelEl.style.top=`${r}px`,this.panelEl.style.left=`${l}px`,this.panelEl.classList.add("co-tooltip__panel--positioned"))},this.scheduleUpdate=()=>{this.rafId&&cancelAnimationFrame(this.rafId),this.rafId=requestAnimationFrame(this.updatePosition)}}disconnectedCallback(){this.clearTimers(),this.cleanupListeners(),clearTimeout(this.closeFallbackTimer),this.closing=!1}onVisibleChange(t){t?(this.closing=!1,clearTimeout(this.closeFallbackTimer),this.scheduleUpdate(),requestAnimationFrame((()=>{requestAnimationFrame((()=>{this.updatePosition()}))})),this.addScrollListeners()):(this.cleanupListeners(),this.cachedOffsetAncestor=null,this.offsetAncestorComputed=!1,this.closing=!0,clearTimeout(this.closeFallbackTimer),this.closeFallbackTimer=setTimeout((()=>this.finishClose()),250))}onDisabledChange(t){t&&this.visible&&(this.visible=!1,this.clearTimers())}clearShowTimeout(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=void 0)}clearHideTimeout(){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=void 0)}clearTimers(){this.clearShowTimeout(),this.clearHideTimeout()}promotePanel(){const t=this.panelEl;if(t&&"function"==typeof t.showPopover)try{t.matches(":popover-open")||t.showPopover()}catch(t){}}addScrollListeners(){window.addEventListener("resize",this.scheduleUpdate,{passive:!0}),window.addEventListener("scroll",this.scheduleUpdate,{passive:!0,capture:!0}),this.scrollParents=n(this.el);for(const t of this.scrollParents)t.addEventListener("scroll",this.scheduleUpdate,{passive:!0})}cleanupListeners(){this.rafId&&(cancelAnimationFrame(this.rafId),this.rafId=void 0),window.removeEventListener("resize",this.scheduleUpdate),window.removeEventListener("scroll",this.scheduleUpdate,{capture:!0});for(const t of this.scrollParents)t.removeEventListener("scroll",this.scheduleUpdate);this.scrollParents=[]}render(){const t=this.actualPlacement.split("-")[0];return s("div",{key:"816e80ee775d782c3827fb3ba43187992e348429",class:"co-tooltip"},s("div",{key:"d4d3b56ae5502ccc4fc5c30c5191860ebef51140",class:"co-tooltip__trigger",ref:t=>this.triggerEl=t,onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,onPointerDown:this.handlePointerDown,onFocusin:this.handleFocusIn,onFocusout:this.handleFocusOut,onKeyDown:this.handleKeyDown,"aria-describedby":this.visible?"tooltip-panel":void 0},s("slot",{key:"357ff69bca524ce8c5f3ec21936fef944733cd22"})),(this.visible||this.closing)&&this.content&&s("div",{key:"7d379c2ddafa6e84fbe5d5a4d3e9192a3ddfac87",id:"tooltip-panel",class:{"co-tooltip__panel":!0,[`co-tooltip__panel--${t}`]:!0,"co-tooltip__panel--closing":this.closing,"co-tooltip__panel--label":"label"===this.variant,"co-tooltip__panel--with-shortcut":!!this.shortcut},role:"tooltip",popover:"manual",part:"panel",onTransitionEnd:this.handlePanelTransitionEnd,ref:t=>{t&&t!==this.panelEl&&(this.panelEl=t,this.promotePanel(),this.scheduleUpdate())},style:{maxWidth:this.maxWidth}},this.arrow&&s("div",{key:"0898aa009807ee6d48cdb01a5db9f4ef773804b9",class:`co-tooltip__arrow co-tooltip__arrow--${t}`}),s("span",{key:"07678a78b9fdf0955c54d4dc2c491e5205e7937d",class:"co-tooltip__content"},this.content),this.shortcut&&s("co-kbd",{key:"24aa138140da114eed006f3488dc6cbc105ccee3",keys:this.shortcut,surface:"dark",size:"xs"})))}get el(){return this}static get watchers(){return{visible:[{onVisibleChange:0}],disabled:[{onDisabledChange:0}]}}static get style(){return":host{display:inline-block;position:relative}.co-tooltip{display:inline-block}.co-tooltip__trigger{display:inline-block}:host([block]){display:block;width:100%;min-width:0}:host([block]) .co-tooltip,:host([block]) .co-tooltip__trigger{display:block;width:100%;min-width:0}.co-tooltip__panel{position:fixed;inset:auto;top:0;left:0;margin:0;border:0;max-height:none;overflow:visible;z-index:10000;visibility:hidden;opacity:0;pointer-events:none;background:var(--co-color-base-negro, #1f1c1b);color:var(--co-color-base-blanco, #fff);font-family:var(--co-font-family-primary, 'Geist', sans-serif);font-size:var(--co-font-size-12, 12px);line-height:1.4;font-weight:400;text-transform:none;letter-spacing:var(--co-font-letter-spacing-body, normal);padding:var(--co-spacing-xs, 4px) var(--co-spacing-sm, 8px);border-radius:var(--co-border-radius-xxs, 4px);box-shadow:0 4px 12px rgba(31, 28, 27, 0.12);white-space:normal;word-wrap:break-word;transition:opacity var(--co-motion-duration-fast) var(--co-motion-ease-out), transform var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-tooltip__panel--positioned{visibility:visible;opacity:1}.co-tooltip__panel--closing{visibility:visible;opacity:0;transition:opacity var(--co-motion-duration-instant) var(--co-motion-ease-in), transform var(--co-motion-duration-instant) var(--co-motion-ease-in)}.co-tooltip__panel--top{transform:translateY(4px)}.co-tooltip__panel--top.co-tooltip__panel--positioned{transform:translateY(0)}.co-tooltip__panel--bottom{transform:translateY(-4px)}.co-tooltip__panel--bottom.co-tooltip__panel--positioned{transform:translateY(0)}.co-tooltip__panel--left{transform:translateX(4px)}.co-tooltip__panel--left.co-tooltip__panel--positioned{transform:translateX(0)}.co-tooltip__panel--right{transform:translateX(-4px)}.co-tooltip__panel--right.co-tooltip__panel--positioned{transform:translateX(0)}.co-tooltip__arrow{position:absolute;width:0;height:0;border:5px solid transparent}.co-tooltip__arrow--top{bottom:-10px;left:50%;transform:translateX(-50%);border-top-color:var(--co-color-base-negro, #1f1c1b);border-bottom:none}.co-tooltip__arrow--bottom{top:-5px;left:50%;transform:translateX(-50%);border-bottom-color:var(--co-color-base-negro, #1f1c1b);border-top:none}.co-tooltip__arrow--left{right:-10px;top:50%;transform:translateY(-50%);border-left-color:var(--co-color-base-negro, #1f1c1b);border-right:none}.co-tooltip__arrow--right{left:-5px;top:50%;transform:translateY(-50%);border-right-color:var(--co-color-base-negro, #1f1c1b);border-left:none}.co-tooltip__content{display:block}.co-tooltip__panel--label{padding:4px 8px;border-radius:var(--co-border-radius-xs, 8px);font-weight:var(--co-font-weight-medium, 500);line-height:1;box-shadow:none}.co-tooltip__panel--label .co-tooltip__arrow{display:none}.co-tooltip__panel--with-shortcut{display:flex;align-items:center;gap:6px}.co-tooltip__panel--with-shortcut:not(.co-tooltip__panel--label){padding-right:10px;}.co-tooltip__panel--label.co-tooltip__panel--with-shortcut{padding-right:4px}"}},[257,"co-tooltip",{content:[1],placement:[1],offset:[2],showDelay:[2,"show-delay"],hideDelay:[2,"hide-delay"],disabled:[4],arrow:[4],flip:[4],maxWidth:[1,"max-width"],block:[516],variant:[1],shortcut:[1],visible:[32],actualPlacement:[32],closing:[32]},void 0,{visible:[{onVisibleChange:0}],disabled:[{onDisabledChange:0}]}]);function h(){"undefined"!=typeof customElements&&["co-tooltip","co-icon","co-kbd"].forEach((o=>{switch(o){case"co-tooltip":customElements.get(t(o))||customElements.define(t(o),c);break;case"co-icon":customElements.get(t(o))||r();break;case"co-kbd":customElements.get(t(o))||l()}}))}h();export{c as C,h as d}
|