@gentomiyano/optimized-web-audio-player 0.1.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.
Files changed (53) hide show
  1. package/README.md +159 -0
  2. package/dist/config/index.d.ts +37 -0
  3. package/dist/config/index.js +280 -0
  4. package/dist/config/index.js.map +1 -0
  5. package/dist/consumer/index.d.ts +27 -0
  6. package/dist/consumer/index.js +38 -0
  7. package/dist/consumer/index.js.map +1 -0
  8. package/dist/consumer-smoke/node_modules/.modules.yaml +30 -0
  9. package/dist/consumer-smoke/node_modules/.package-map.json +1 -0
  10. package/dist/consumer-smoke/node_modules/.pnpm/lock.yaml +57 -0
  11. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/LICENSE +21 -0
  12. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/README.md +9 -0
  13. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler-unstable_mock.development.js +414 -0
  14. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler-unstable_mock.production.js +406 -0
  15. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler-unstable_post_task.development.js +150 -0
  16. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler-unstable_post_task.production.js +140 -0
  17. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.development.js +364 -0
  18. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.native.development.js +350 -0
  19. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.native.production.js +330 -0
  20. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.production.js +340 -0
  21. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/index.js +7 -0
  22. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/index.native.js +7 -0
  23. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/package.json +27 -0
  24. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/unstable_mock.js +7 -0
  25. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/unstable_post_task.js +7 -0
  26. package/dist/consumer-smoke/node_modules/.pnpm-workspace-state-v1.json +29 -0
  27. package/dist/contracts/index.d.ts +15 -0
  28. package/dist/contracts/index.js +3 -0
  29. package/dist/contracts/index.js.map +1 -0
  30. package/dist/index.d.ts +6 -0
  31. package/dist/index.js +368 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/media-delivery/index.d.ts +185 -0
  34. package/dist/media-delivery/index.js +91 -0
  35. package/dist/media-delivery/index.js.map +1 -0
  36. package/dist/media-element-C9dis4aG.d.ts +40 -0
  37. package/dist/player-DE9Vqztu.d.ts +212 -0
  38. package/dist/ports/index.d.ts +32 -0
  39. package/dist/ports/index.js +3 -0
  40. package/dist/ports/index.js.map +1 -0
  41. package/dist/react/index.d.ts +86 -0
  42. package/dist/react/index.js +2393 -0
  43. package/dist/react/index.js.map +1 -0
  44. package/dist/testing/index.d.ts +36 -0
  45. package/dist/testing/index.js +365 -0
  46. package/dist/testing/index.js.map +1 -0
  47. package/dist/ui/index.d.ts +143 -0
  48. package/dist/ui/index.js +1344 -0
  49. package/dist/ui/index.js.map +1 -0
  50. package/dist/ui/player-tokens.css +572 -0
  51. package/dist/ui/player-views.css +654 -0
  52. package/dist/ui/styles.css +2 -0
  53. package/package.json +97 -0
@@ -0,0 +1,654 @@
1
+ .player-compact,
2
+ .player-wide,
3
+ .player-detailed,
4
+ .player-podcast,
5
+ .player-mini,
6
+ .player-queue-panel {
7
+ container-name: player-surface;
8
+ container-type: inline-size;
9
+ }
10
+
11
+ .player-compact {
12
+ max-width: 480px;
13
+ overflow: visible;
14
+ }
15
+
16
+ .player-compact__main {
17
+ display: grid;
18
+ grid-template-areas:
19
+ "play artwork metadata volume"
20
+ "play artwork signal volume";
21
+ grid-template-columns: auto 48px minmax(0, 1fr) auto;
22
+ align-items: center;
23
+ min-width: 0;
24
+ column-gap: 0.65rem;
25
+ row-gap: 0.18rem;
26
+ padding: 0.55rem 0.65rem;
27
+ }
28
+
29
+ .player-compact__main > .player-play-button {
30
+ grid-area: play;
31
+ min-width: var(--player-hit);
32
+ min-height: var(--player-hit);
33
+ }
34
+
35
+ .player-compact__artwork {
36
+ grid-area: artwork;
37
+ width: 48px;
38
+ height: 48px;
39
+ }
40
+
41
+ .player-compact__main > .player-metadata {
42
+ grid-area: metadata;
43
+ gap: 0.05rem;
44
+ }
45
+
46
+ .player-compact .player-collection {
47
+ display: none;
48
+ }
49
+
50
+ .player-compact .player-title {
51
+ font-size: 0.82rem;
52
+ }
53
+
54
+ .player-compact .player-creator {
55
+ font-size: 0.63rem;
56
+ }
57
+
58
+ .player-compact__signal {
59
+ display: grid;
60
+ grid-area: signal;
61
+ grid-template-columns: auto minmax(48px, 1fr) auto;
62
+ align-items: center;
63
+ min-width: 0;
64
+ gap: 0.4rem;
65
+ }
66
+
67
+ .player-compact__main > .player-volume-popover {
68
+ grid-area: volume;
69
+ }
70
+
71
+ .player-compact .player-waveform {
72
+ height: 14px;
73
+ }
74
+
75
+ .player-compact .player-status,
76
+ .player-compact .player-time {
77
+ font-size: 0.52rem;
78
+ letter-spacing: 0.05em;
79
+ }
80
+
81
+ .player-compact .player-time {
82
+ gap: 0.18rem;
83
+ }
84
+
85
+ .player-wide {
86
+ max-width: 680px;
87
+ }
88
+
89
+ .player-wide__grid {
90
+ min-width: 0;
91
+ }
92
+
93
+ .player-wide__header {
94
+ display: grid;
95
+ grid-template-columns: 96px minmax(0, 1fr);
96
+ align-items: center;
97
+ min-width: 0;
98
+ gap: clamp(0.9rem, 3vw, 1.2rem);
99
+ padding: 0.9rem 1.1rem;
100
+ border-bottom: 1px solid var(--player-faint);
101
+ }
102
+
103
+ .player-wide__artwork {
104
+ width: 96px;
105
+ height: 96px;
106
+ }
107
+
108
+ .player-wide__identity {
109
+ display: grid;
110
+ min-width: 0;
111
+ gap: 0.55rem;
112
+ }
113
+
114
+ .player-wide[data-appearance="light"] .player-wide__identity {
115
+ padding: 0.65rem 0.8rem;
116
+ border: 1px solid var(--player-lcd-rule);
117
+ background: var(--player-lcd);
118
+ }
119
+
120
+ .player-wide__identity .player-title {
121
+ font-size: clamp(1.05rem, 4cqi, 1.42rem);
122
+ font-weight: 350;
123
+ }
124
+
125
+ .player-wide__content {
126
+ display: grid;
127
+ min-width: 0;
128
+ gap: 0.35rem;
129
+ padding: 0.65rem 1.1rem 0.8rem;
130
+ }
131
+
132
+ .player-wide .player-transport {
133
+ padding-top: 0.4rem;
134
+ border-top: 1px solid var(--player-faint);
135
+ }
136
+
137
+ .player-timeline,
138
+ .player-podcast__timeline {
139
+ display: grid;
140
+ grid-template-rows: auto auto auto;
141
+ min-width: 0;
142
+ }
143
+
144
+ .player-timeline > .player-waveform,
145
+ .player-podcast__timeline > .player-waveform {
146
+ grid-row: 1;
147
+ }
148
+
149
+ .player-timeline > .player-seek,
150
+ .player-podcast__timeline > .player-seek {
151
+ grid-row: 2;
152
+ }
153
+
154
+ .player-timeline > .player-wide__timeline-footer,
155
+ .player-podcast__timeline > .player-time {
156
+ grid-row: 3;
157
+ }
158
+
159
+ .player-wide .player-waveform {
160
+ height: 50px;
161
+ margin-block: 0;
162
+ }
163
+
164
+ .player-timeline .player-seek,
165
+ .player-podcast__timeline .player-seek {
166
+ min-height: 30px;
167
+ }
168
+
169
+ .player-wide__timeline-footer {
170
+ display: flex;
171
+ align-items: center;
172
+ justify-content: space-between;
173
+ min-width: 0;
174
+ gap: 1.5rem;
175
+ }
176
+
177
+ .player-wide__timeline-footer .player-time {
178
+ width: min(13rem, 42%);
179
+ }
180
+
181
+ .player-wide__timeline-footer .player-volume {
182
+ justify-content: flex-end;
183
+ }
184
+
185
+ .player-detailed {
186
+ max-width: 720px;
187
+ }
188
+
189
+ .player-detailed__display {
190
+ display: grid;
191
+ grid-template-columns: 170px minmax(0, 1fr) 126px;
192
+ min-width: 0;
193
+ border-bottom: 1px solid var(--player-rule);
194
+ }
195
+
196
+ .player-detailed__artwork {
197
+ width: 170px;
198
+ min-height: 170px;
199
+ }
200
+
201
+ .player-detailed__primary {
202
+ display: grid;
203
+ align-content: center;
204
+ min-width: 0;
205
+ gap: 0.25rem;
206
+ padding: 0.65rem 1.2rem 0.25rem;
207
+ border-right: 1px solid var(--player-faint);
208
+ }
209
+
210
+ .player-detailed[data-appearance="light"] .player-detailed__primary {
211
+ background: var(--player-lcd);
212
+ }
213
+
214
+ .player-detailed__primary .player-title {
215
+ font-size: clamp(1.02rem, 3.2cqi, 1.32rem);
216
+ font-weight: 350;
217
+ }
218
+
219
+ .player-detailed__primary .player-waveform {
220
+ height: 28px;
221
+ }
222
+
223
+ .player-detailed__primary .player-seek {
224
+ min-height: 30px;
225
+ }
226
+
227
+ .player-detailed__numbers {
228
+ display: grid;
229
+ align-content: center;
230
+ min-width: 0;
231
+ gap: 0.55rem;
232
+ padding: 0.95rem;
233
+ }
234
+
235
+ .player-detailed__metric {
236
+ display: grid;
237
+ min-width: 0;
238
+ gap: 0.12rem;
239
+ justify-items: end;
240
+ }
241
+
242
+ .player-detailed__metric-label {
243
+ color: var(--player-muted);
244
+ font-size: 0.5rem;
245
+ letter-spacing: 0.13em;
246
+ text-transform: uppercase;
247
+ }
248
+
249
+ .player-detailed__metric-value {
250
+ color: var(--player-text);
251
+ font-family: var(--player-font-digital);
252
+ font-size: 0.68rem;
253
+ font-variant-numeric: tabular-nums;
254
+ letter-spacing: 0.09em;
255
+ }
256
+
257
+ .player-detailed__transport {
258
+ padding: 0.4rem 1rem;
259
+ border-bottom: 1px solid var(--player-rule);
260
+ }
261
+
262
+ .player-section-heading {
263
+ display: flex;
264
+ align-items: center;
265
+ justify-content: space-between;
266
+ min-height: 38px;
267
+ border-bottom: 1px solid var(--player-faint);
268
+ color: var(--player-muted);
269
+ font-size: 0.67rem;
270
+ letter-spacing: 0.13em;
271
+ text-transform: uppercase;
272
+ }
273
+
274
+ .player-detailed__queue {
275
+ padding: 0 1rem 0.65rem;
276
+ }
277
+
278
+ .player-detailed__queue ol,
279
+ .player-queue-panel ol {
280
+ padding: 0;
281
+ margin: 0;
282
+ list-style: none;
283
+ }
284
+
285
+ .player-detailed__queue li,
286
+ .player-queue-panel li {
287
+ border-bottom: 1px solid var(--player-faint);
288
+ }
289
+
290
+ .player-detailed__queue li:last-child,
291
+ .player-queue-panel li:last-child {
292
+ border-bottom: 0;
293
+ }
294
+
295
+ .player-detailed__queue li[data-current="true"],
296
+ .player-queue-panel li[data-current="true"] {
297
+ background: var(--player-active-wash);
298
+ }
299
+
300
+ .player-detailed__queue li[data-current="true"] .player-queue-number,
301
+ .player-detailed__queue li[data-current="true"] .player-queue-title,
302
+ .player-queue-panel li[data-current="true"] .player-queue-number {
303
+ color: var(--player-brand);
304
+ }
305
+
306
+ .player-detailed__queue li[data-current="true"] .player-queue-title,
307
+ .player-queue-panel li[data-current="true"] .player-queue-copy strong {
308
+ font-weight: 650;
309
+ }
310
+
311
+ .player-detailed__queue li > button {
312
+ display: grid;
313
+ grid-template-columns: 2.25rem minmax(0, 1fr) auto;
314
+ align-items: center;
315
+ width: 100%;
316
+ min-height: 38px;
317
+ padding: 0 0.55rem;
318
+ border: 0;
319
+ background: transparent;
320
+ color: inherit;
321
+ text-align: left;
322
+ cursor: pointer;
323
+ }
324
+
325
+ .player-detailed__queue li > button:hover,
326
+ .player-queue-panel li > button:hover {
327
+ background: var(--player-faint);
328
+ }
329
+
330
+ .player-detailed__queue time,
331
+ .player-queue-panel time {
332
+ color: var(--player-muted);
333
+ font-family: var(--player-font-digital);
334
+ font-size: 0.66rem;
335
+ font-variant-numeric: tabular-nums;
336
+ }
337
+
338
+ .player-queue-title {
339
+ overflow: hidden;
340
+ font-size: 0.76rem;
341
+ text-overflow: ellipsis;
342
+ white-space: nowrap;
343
+ }
344
+
345
+ .player-empty {
346
+ margin: 0;
347
+ padding: 1.4rem 0.6rem;
348
+ color: var(--player-muted);
349
+ font-size: 0.8rem;
350
+ }
351
+
352
+ .player-podcast {
353
+ max-width: 760px;
354
+ }
355
+
356
+ .player-podcast__header {
357
+ display: grid;
358
+ grid-template-columns: 112px minmax(0, 1fr) auto;
359
+ align-items: center;
360
+ min-width: 0;
361
+ gap: clamp(1rem, 4vw, 1.6rem);
362
+ padding: 1.15rem;
363
+ border-bottom: 1px solid var(--player-faint);
364
+ }
365
+
366
+ .player-podcast__artwork {
367
+ width: 112px;
368
+ height: 112px;
369
+ }
370
+
371
+ .player-podcast__header .player-title {
372
+ font-size: clamp(1.05rem, 3.6cqi, 1.4rem);
373
+ font-weight: 350;
374
+ }
375
+
376
+ .player-podcast[data-appearance="light"]
377
+ .player-podcast__header
378
+ > .player-metadata {
379
+ padding: 0.65rem 0.8rem;
380
+ border: 1px solid var(--player-lcd-rule);
381
+ background: var(--player-lcd);
382
+ }
383
+
384
+ .player-podcast__transport {
385
+ display: flex;
386
+ align-items: center;
387
+ justify-content: center;
388
+ gap: clamp(0.15rem, 2vw, 1rem);
389
+ padding: 0.45rem 1rem;
390
+ border-top: 1px solid var(--player-rule);
391
+ }
392
+
393
+ .player-podcast__timeline {
394
+ padding: 0.75rem 1.15rem 1.1rem;
395
+ }
396
+
397
+ .player-podcast__timeline .player-waveform {
398
+ height: 60px;
399
+ }
400
+
401
+ .player-mini {
402
+ max-width: 100%;
403
+ overflow: visible;
404
+ }
405
+
406
+ .player-mini__main {
407
+ display: grid;
408
+ grid-template-columns: 48px minmax(120px, 1fr) auto auto minmax(130px, 0.65fr);
409
+ align-items: center;
410
+ min-width: 0;
411
+ gap: 0.55rem;
412
+ padding: 0.4rem 0.65rem;
413
+ }
414
+
415
+ .player-mini__artwork {
416
+ width: 48px;
417
+ height: 48px;
418
+ }
419
+
420
+ .player-mini__controls {
421
+ display: flex;
422
+ align-items: center;
423
+ gap: 0;
424
+ }
425
+
426
+ .player-mini__timeline {
427
+ display: grid;
428
+ min-width: 0;
429
+ }
430
+
431
+ .player-mini__timeline .player-seek {
432
+ min-height: 24px;
433
+ }
434
+
435
+ .player-queue-panel {
436
+ max-width: 460px;
437
+ }
438
+
439
+ .player-queue-panel > header {
440
+ display: grid;
441
+ grid-template-columns: minmax(0, 1fr) auto auto;
442
+ align-items: center;
443
+ min-height: 60px;
444
+ padding: 0.5rem 0.65rem 0.5rem 1rem;
445
+ border-bottom: 1px solid var(--player-rule);
446
+ }
447
+
448
+ .player-queue-panel h2 {
449
+ margin: 0.12rem 0 0;
450
+ overflow: hidden;
451
+ font-size: 0.92rem;
452
+ font-weight: 600;
453
+ text-overflow: ellipsis;
454
+ white-space: nowrap;
455
+ }
456
+
457
+ .player-queue-panel li > button {
458
+ display: grid;
459
+ grid-template-columns: 2.3rem minmax(0, 1fr) auto;
460
+ align-items: center;
461
+ width: 100%;
462
+ min-height: 48px;
463
+ padding: 0.3rem 0.8rem 0.3rem 0.65rem;
464
+ border: 0;
465
+ background: transparent;
466
+ color: inherit;
467
+ text-align: left;
468
+ cursor: pointer;
469
+ }
470
+
471
+ .player-queue-copy {
472
+ display: grid;
473
+ min-width: 0;
474
+ gap: 0.08rem;
475
+ }
476
+
477
+ .player-queue-copy strong,
478
+ .player-queue-copy small {
479
+ overflow: hidden;
480
+ text-overflow: ellipsis;
481
+ white-space: nowrap;
482
+ }
483
+
484
+ .player-queue-copy strong {
485
+ font-size: 0.78rem;
486
+ font-weight: 540;
487
+ }
488
+
489
+ .player-queue-copy small {
490
+ color: var(--player-muted);
491
+ font-size: 0.66rem;
492
+ }
493
+
494
+ .player-transport .player-icon-button:not(.player-play-button),
495
+ .player-podcast__transport .player-icon-button:not(.player-play-button) {
496
+ color: var(--player-muted);
497
+ }
498
+
499
+ .player-transport .player-icon-button[aria-pressed="true"],
500
+ .player-transport .player-icon-button:hover:not(:disabled),
501
+ .player-podcast__transport .player-icon-button:hover:not(:disabled) {
502
+ color: var(--player-brand);
503
+ }
504
+
505
+ @container player-surface (max-width: 680px) {
506
+ .player-detailed__display {
507
+ grid-template-columns: 104px minmax(0, 1fr);
508
+ }
509
+
510
+ .player-detailed__artwork {
511
+ width: 104px;
512
+ height: 104px;
513
+ min-height: 0;
514
+ align-self: start;
515
+ }
516
+
517
+ .player-detailed__primary {
518
+ padding: 0.75rem;
519
+ border-right: 0;
520
+ }
521
+
522
+ .player-detailed__primary .player-waveform {
523
+ height: 24px;
524
+ }
525
+
526
+ .player-detailed__numbers {
527
+ grid-column: 1 / -1;
528
+ grid-template-columns: repeat(4, minmax(0, 1fr));
529
+ align-items: center;
530
+ padding: 0.5rem 0.75rem;
531
+ border-top: 1px solid var(--player-faint);
532
+ }
533
+
534
+ .player-detailed__metric {
535
+ justify-items: start;
536
+ }
537
+
538
+ .player-detailed__transport {
539
+ padding-inline: 0.5rem;
540
+ }
541
+
542
+ .player-detailed__transport .player-transport {
543
+ width: 100%;
544
+ justify-content: space-between;
545
+ gap: 0;
546
+ }
547
+
548
+ .player-podcast__header {
549
+ grid-template-columns: 86px minmax(0, 1fr);
550
+ gap: 0.85rem;
551
+ padding: 0.85rem;
552
+ }
553
+
554
+ .player-podcast__artwork {
555
+ width: 86px;
556
+ height: 86px;
557
+ }
558
+
559
+ .player-podcast__header > .player-status {
560
+ grid-column: 2;
561
+ }
562
+
563
+ .player-podcast__transport {
564
+ gap: 0;
565
+ padding-inline: 0.3rem;
566
+ }
567
+
568
+ .player-mini__main {
569
+ grid-template-columns: 46px minmax(0, 1fr) auto;
570
+ }
571
+
572
+ .player-mini__controls > .player-volume-popover {
573
+ display: none;
574
+ }
575
+
576
+ .player-mini__artwork {
577
+ width: 46px;
578
+ height: 46px;
579
+ }
580
+
581
+ .player-mini__main > .player-status,
582
+ .player-mini__timeline {
583
+ display: none;
584
+ }
585
+ }
586
+
587
+ @container player-surface (max-width: 440px) {
588
+ .player-compact__main {
589
+ grid-template-areas:
590
+ "play artwork metadata"
591
+ "play artwork signal";
592
+ grid-template-columns: auto 48px minmax(0, 1fr);
593
+ }
594
+
595
+ .player-compact__main > .player-volume-popover {
596
+ display: none;
597
+ }
598
+
599
+ .player-compact__signal {
600
+ grid-template-columns: minmax(48px, 1fr) auto;
601
+ }
602
+
603
+ .player-compact .player-status {
604
+ display: none;
605
+ }
606
+
607
+ .player-wide__header {
608
+ grid-template-columns: 78px minmax(0, 1fr);
609
+ gap: 0.85rem;
610
+ padding: 0.85rem;
611
+ }
612
+
613
+ .player-wide__artwork {
614
+ width: 78px;
615
+ height: 78px;
616
+ }
617
+
618
+ .player-wide__identity {
619
+ gap: 0.55rem;
620
+ }
621
+
622
+ .player-wide__content {
623
+ padding: 0.7rem 0.85rem 1rem;
624
+ }
625
+
626
+ .player-wide__timeline-footer .player-volume {
627
+ display: none;
628
+ }
629
+
630
+ .player-wide__timeline-footer .player-time {
631
+ width: 100%;
632
+ }
633
+
634
+ .player-transport {
635
+ justify-content: space-between;
636
+ }
637
+
638
+ .player-detailed__queue {
639
+ padding-inline: 0.5rem;
640
+ }
641
+
642
+ .player-detailed__transport {
643
+ padding-inline: 0.25rem;
644
+ }
645
+
646
+ .player-queue-panel > header {
647
+ padding-left: 0.65rem;
648
+ }
649
+
650
+ .player-queue-panel li > button {
651
+ grid-template-columns: 1.9rem minmax(0, 1fr) auto;
652
+ padding-inline: 0.45rem;
653
+ }
654
+ }
@@ -0,0 +1,2 @@
1
+ @import "./player-tokens.css";
2
+ @import "./player-views.css";