@lumiastream/lumia-types 3.6.3 → 3.6.5

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.
@@ -394,7 +394,7 @@ A field object can now contain these properties:
394
394
 
395
395
  | Property | Required | Purpose | Example |
396
396
  | --------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
397
- | **`type`** | ✅ | UI control to render. Must be one of the `FieldType` enum values (`input`, `textarea`, `number`, `checkbox`, `dropdown`, `multiselect`, `colorpicker`, `fontpicker`, `slider`, `imageupload`, `soundupload`, `videoupload`, `actionbutton`). | `"type": "dropdown"` |
397
+ | **`type`** | ✅ | UI control to render. Must be one of the `ConfigsFieldType` enum values (`input`, `textarea`, `number`, `checkbox`, `dropdown`, `multiselect`, `colorpicker`, `fontpicker`, `slider`, `imageupload`, `soundupload`, `videoupload`, `actionbutton`). | `"type": "dropdown"` |
398
398
  | **`label`** | ✅ | Human-readable name shown in the sidebar. | `"label": "Favorite Color:"` |
399
399
  | **`value`** | ❌ | Default value that appears the first time the user opens the overlay (also pre populates `Overlay.data`). Omit it to leave the field blank/unchecked on first load. | `"value": 18` |
400
400
  | **`options`** | ☑️\* | Key value map of selectable choices. Required **only** for `dropdown`, `multiselect` and `slider`; ignored for other types. For `slider`, `options` supports `step`, `min`, `max`, `prefix`, `suffix`. | `"options": { "step": 5, "min": 0, "max": 100 }` |
@@ -402,13 +402,27 @@ A field object can now contain these properties:
402
402
  | **`visibleIf`** | ❌ | **Conditional render rule**. Field is shown **only if** `Overlay.data[visibleIf.key]` strictly equals one of the values in `visibleIf.equals`. | `"visibleIf": { "key": "targetKey", "equals": ["yes", "maybe"] }` |
403
403
  | **`hidden`** | ❌ | **Hard-hide rule.** When set to `true`, the field is **never displayed** in the Configs sidebar, preventing end users from altering it. The value still flows into `Overlay.data`, so the overlay can rely on it internally.<br>Useful for locking event subscriptions or other advanced settings. | `"hidden": true` |
404
404
 
405
- Additional properties for text inputs (`type: "input"`):
405
+ Additional properties for text fields (`type: "input"` and `type: "textarea"`):
406
406
 
407
407
  | Property | Required | Purpose | Example |
408
408
  | ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------- |
409
- | **`placeholder`** | ❌ | Placeholder text inside the input. | `"placeholder": "Enter title..."` |
410
- | **`enableVariables`** | ❌ | When `true`, renders a variable-enabled input that lets users insert variables (e.g., `{{username}}`) from a picker. | `"enableVariables": true` |
409
+ | **`placeholder`** | ❌ | Placeholder text inside the field. | `"placeholder": "Enter title..."` |
410
+ | **`enableVariables`** | ❌ | When `true`, renders a variable-enabled field that lets users insert variables (e.g., `{{username}}`) from a picker. | `"enableVariables": true` |
411
411
  | **`allowedVariables`** | ❌ | When present with `enableVariables: true`, limits the top of the picker to this list. System/function variables are still available below. | `"allowedVariables": ["username", "message"]` |
412
+ | **`rows`** | ❌ | **`textarea` only.** Visible row count. Defaults to `4`. | `"rows": 6` |
413
+
414
+ Additional properties for media upload fields (`type: "imageupload"`, `"soundupload"`, `"videoupload"`):
415
+
416
+ | Property | Required | Purpose | Example |
417
+ | ------------- | -------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------ |
418
+ | **`value`** | ❌ | Default asset URL. The field's `Overlay.data` value is always the uploaded asset's URL string. | `"value": "https://.../logo.png"` |
419
+ | **`accept`** | ❌ | Optional comma-separated MIME accept hint for the upload picker. | `"accept": "image/png,image/jpeg"` |
420
+
421
+ Additional properties for the action button (`type: "actionbutton"`):
422
+
423
+ | Property | Required | Purpose | Example |
424
+ | ----------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- |
425
+ | **`buttonLabel`** | ❌ | Button-text override. Defaults to the field `label`. The action button has **no persisted value** — clicking it fires the `configAction` event. | `"buttonLabel": "Reset game"` |
412
426
 
413
427
  ### Variable-enabled Input Fields
414
428
 
@@ -454,16 +468,21 @@ Before looking at the individual properties (type, label, value, options), remem
454
468
 
455
469
  ### Supported Field Types
456
470
 
457
- | type | UI Control |
458
- | --------------- | --------------------- |
459
- | `"input"` | Single-line text box |
460
- | `"number"` | Numeric input spinner |
461
- | `"checkbox"` | Checkbox selection |
462
- | `"dropdown"` | Select menu |
463
- | `"multiselect"` | Multi-select box |
464
- | `"colorpicker"` | Color picker widget |
465
- | `"fontpicker"` | Font picker (Google) |
466
- | `"slider"` | Number slider |
471
+ | type | UI Control | `Overlay.data` value |
472
+ | --------------- | --------------------------- | --------------------------------------------- |
473
+ | `"input"` | Single-line text box | `string` |
474
+ | `"textarea"` | Multi-line text area | `string` |
475
+ | `"number"` | Numeric input spinner | `number` |
476
+ | `"checkbox"` | Checkbox selection | `boolean` |
477
+ | `"dropdown"` | Select menu | `string` (selected option key) |
478
+ | `"multiselect"` | Multi-select box | `string[]` (selected option keys) |
479
+ | `"colorpicker"` | Color picker widget | `string` (hex/rgba) |
480
+ | `"fontpicker"` | Font picker (Google) | `string` (font family name) |
481
+ | `"slider"` | Number slider | `number` |
482
+ | `"imageupload"` | Image upload picker | `string` (uploaded asset URL) |
483
+ | `"soundupload"` | Audio upload picker | `string` (uploaded asset URL) |
484
+ | `"videoupload"` | Video upload picker | `string` (uploaded asset URL) |
485
+ | `"actionbutton"`| Clickable action button | _none_ — fires the `configAction` event |
467
486
 
468
487
  ### Font Picker
469
488
 
@@ -502,6 +521,95 @@ The key in the json an ddata must match the variable name used in the css
502
521
 
503
522
  > Note we're using variable replacement within the css.
504
523
 
524
+ ### Textarea
525
+
526
+ The `textarea` type renders a multi-line text box for long-form content. It supports the same `placeholder`, `enableVariables`, and `allowedVariables` props as `input`, plus a `rows` prop to control the visible height (defaults to `4`).
527
+
528
+ Configs Tab
529
+
530
+ ```json
531
+ {
532
+ "welcomeMessage": {
533
+ "type": "textarea",
534
+ "label": "Welcome Message",
535
+ "rows": 6,
536
+ "placeholder": "Enter the message shown when the overlay loads",
537
+ "enableVariables": true,
538
+ "allowedVariables": ["username"]
539
+ }
540
+ }
541
+ ```
542
+
543
+ The value flows into `Overlay.data.welcomeMessage` as a plain string and can be used with `{{welcomeMessage}}` replacement just like any other field.
544
+
545
+ ### Media Upload Fields (Image / Sound / Video)
546
+
547
+ The `imageupload`, `soundupload`, and `videoupload` types render an asset picker tied to Lumia's media browser. Once a user picks (or uploads) an asset, the field's value is the **uploaded asset's URL string**. Each type scopes the picker to the matching media kind: images, audio, and video respectively.
548
+
549
+ Configs Tab
550
+
551
+ ```json
552
+ {
553
+ "logo": {
554
+ "type": "imageupload",
555
+ "label": "Logo Image"
556
+ },
557
+ "chime": {
558
+ "type": "soundupload",
559
+ "label": "Alert Sound",
560
+ "accept": "audio/mpeg,audio/ogg"
561
+ },
562
+ "intro": {
563
+ "type": "videoupload",
564
+ "label": "Intro Clip"
565
+ }
566
+ }
567
+ ```
568
+
569
+ Because the value is just a URL, you can use it directly in your HTML, CSS, or JS:
570
+
571
+ ```html
572
+ <img src="{{logo}}" alt="logo" />
573
+ ```
574
+
575
+ ```js
576
+ const chime = new Audio(Overlay.data.chime);
577
+ chime.play();
578
+ ```
579
+
580
+ > The optional `accept` property is a comma-separated MIME hint (e.g. `image/png,image/jpeg`). The picker is already scoped by media type, so `accept` is an extra narrowing hint and can be omitted.
581
+
582
+ ### Action Button
583
+
584
+ The `actionbutton` type renders a clickable button in the Configs sidebar. Unlike every other field, it has **no persisted value** — it is a trigger, not a setting. Clicking it dispatches a `configAction` event that your overlay JS can subscribe to. Use `buttonLabel` to override the button text (it defaults to `label`).
585
+
586
+ Configs Tab
587
+
588
+ ```json
589
+ {
590
+ "resetGame": {
591
+ "type": "actionbutton",
592
+ "label": "Reset",
593
+ "buttonLabel": "Reset game"
594
+ }
595
+ }
596
+ ```
597
+
598
+ JS Tab
599
+
600
+ ```js
601
+ // Fired when the user clicks an actionbutton field in the Configs sidebar.
602
+ // `key` is the field's JSON key; `value` is the field's optional `value`.
603
+ Overlay.on("configAction", ({ key, value }) => {
604
+ if (key === "resetGame") {
605
+ toast("Game reset!");
606
+ // run your reset logic here
607
+ }
608
+ });
609
+ ```
610
+
611
+ > `configAction` is a Configs-driven event, not a platform event — it does not need to be declared in the Data tab's `events` array and is unaffected by the OverlayListener subscriptions.
612
+
505
613
  ### Field Display Order
506
614
 
507
615
  By default, config fields are displayed in alphabetical order by their key names. You can override this behavior using the `order` property:
@@ -628,6 +736,24 @@ In this example, the fields would appear in this order:
628
736
  "prefix": "",
629
737
  "suffix": "px"
630
738
  }
739
+ },
740
+ "bio": {
741
+ "order": 11,
742
+ "type": "textarea",
743
+ "label": "Bio:",
744
+ "rows": 4,
745
+ "placeholder": "Tell us about yourself"
746
+ },
747
+ "logo": {
748
+ "order": 12,
749
+ "type": "imageupload",
750
+ "label": "Logo:"
751
+ },
752
+ "reset": {
753
+ "order": 13,
754
+ "type": "actionbutton",
755
+ "label": "Reset",
756
+ "buttonLabel": "Reset overlay"
631
757
  }
632
758
  }
633
759
  ```
@@ -718,6 +844,10 @@ Custom overlay modules carry an optional `content.flavor` field that tells the r
718
844
 
719
845
  If you're inspecting an imported overlay's JSON and see `"flavor": "streamelements"`, that's why it can call `SE_API.store.set(...)`, `jQuery`, etc. — none of those are part of the native Lumia overlay API, but the shim makes them available for that specific layer.
720
846
 
847
+ StreamElements imports also stamp a `content.sourceProvider` field (`'twitch'`, `'youtube'`, or `'kick'`, defaulting to `'twitch'`). The SE compatibility shim reads it to pick the correct listener-name mapping when forwarding Lumia events into the iframe as `onEventReceived` payloads. Hand-authored overlays don't set it.
848
+
849
+ When the import wizard translates an SE widget's fields into Lumia config fields, it maps SE control types onto the native Lumia field types — `googleFont` → `fontpicker`, `image` / `image-input` → `imageupload`, `sound-input` → `soundupload`, `video-input` → `videoupload`, `button` → `actionbutton`, and SE `hidden` fields onto a plain `input` carrying `hidden: true`. The emitted `type` is always a native `ConfigsFieldType`, so an imported overlay's Configs tab behaves identically to one you author by hand.
850
+
721
851
  ## Code ID
722
852
 
723
853
  The codeId is primarily meant to be used when talking to Lumia Stream. It is used to store storage data, it is used when calling send overlay content that will only send to overlays with that specific code id. It can be retrieved within the overlay using `Overlay.on('overlaycontent', (data) => {...})`
@@ -1865,6 +1865,12 @@ export declare enum SystemVariables {
1865
1865
  SPOTIFY_NOW_PLAYING_URI = "spotify_now_playing_uri",
1866
1866
  /** Now playing track duration in seconds. Use as {{spotify_now_playing_duration}}. */
1867
1867
  SPOTIFY_NOW_PLAYING_DURATION = "spotify_now_playing_duration",
1868
+ /** Now playing track position in seconds at the last play/pause/seek anchor. Use as {{spotify_now_playing_progress}}. */
1869
+ SPOTIFY_NOW_PLAYING_PROGRESS = "spotify_now_playing_progress",
1870
+ /** Epoch ms when the progress anchor was captured (for client-side interpolation). Use as {{spotify_now_playing_progress_ts}}. */
1871
+ SPOTIFY_NOW_PLAYING_PROGRESS_TS = "spotify_now_playing_progress_ts",
1872
+ /** Whether playback is currently advancing (true/false). Use as {{spotify_now_playing_is_playing}}. */
1873
+ SPOTIFY_NOW_PLAYING_IS_PLAYING = "spotify_now_playing_is_playing",
1868
1874
  /** Next song title. Use as {{spotify_next_song}}. */
1869
1875
  SPOTIFY_NEXT_SONG = "spotify_next_song",
1870
1876
  /** Next song artwork URL. Use as {{spotify_next_image}}. */
@@ -1891,6 +1897,12 @@ export declare enum SystemVariables {
1891
1897
  YOUTUBEMUSIC_NOW_PLAYING_URL = "youtubemusic_now_playing_url",
1892
1898
  /** Now playing track duration in seconds. Use as {{youtubemusic_now_playing_duration}}. */
1893
1899
  YOUTUBEMUSIC_NOW_PLAYING_DURATION = "youtubemusic_now_playing_duration",
1900
+ /** Now playing track position in seconds at the last play/pause/seek anchor. Use as {{youtubemusic_now_playing_progress}}. */
1901
+ YOUTUBEMUSIC_NOW_PLAYING_PROGRESS = "youtubemusic_now_playing_progress",
1902
+ /** Epoch ms when the progress anchor was captured (for client-side interpolation). Use as {{youtubemusic_now_playing_progress_ts}}. */
1903
+ YOUTUBEMUSIC_NOW_PLAYING_PROGRESS_TS = "youtubemusic_now_playing_progress_ts",
1904
+ /** Whether playback is currently advancing (true/false). Use as {{youtubemusic_now_playing_is_playing}}. */
1905
+ YOUTUBEMUSIC_NOW_PLAYING_IS_PLAYING = "youtubemusic_now_playing_is_playing",
1894
1906
  /** Next song title. Use as {{youtubemusic_next_song}}. */
1895
1907
  YOUTUBEMUSIC_NEXT_SONG = "youtubemusic_next_song",
1896
1908
  /** Next song artwork URL. Use as {{youtubemusic_next_image}}. */
@@ -1947,6 +1959,12 @@ export declare enum SystemVariables {
1947
1959
  VLC_NOW_PLAYING_URL = "vlc_now_playing_url",
1948
1960
  /** Now playing media duration in seconds. Use as {{vlc_now_playing_duration}}. */
1949
1961
  VLC_NOW_PLAYING_DURATION = "vlc_now_playing_duration",
1962
+ /** Now playing media position in seconds at the last play/pause/seek anchor. Use as {{vlc_now_playing_progress}}. */
1963
+ VLC_NOW_PLAYING_PROGRESS = "vlc_now_playing_progress",
1964
+ /** Epoch ms when the progress anchor was captured (for client-side interpolation). Use as {{vlc_now_playing_progress_ts}}. */
1965
+ VLC_NOW_PLAYING_PROGRESS_TS = "vlc_now_playing_progress_ts",
1966
+ /** Whether playback is currently advancing (true/false). Use as {{vlc_now_playing_is_playing}}. */
1967
+ VLC_NOW_PLAYING_IS_PLAYING = "vlc_now_playing_is_playing",
1950
1968
  /** Media URI. Use as {{vlc_now_playing_uri}}. */
1951
1969
  VLC_NOW_PLAYING_URI = "vlc_now_playing_uri",
1952
1970
  /** Voice changer on (true/false). Use as {{voicemod_voice_changer_on}}. */
@@ -1865,6 +1865,12 @@ export declare enum SystemVariables {
1865
1865
  SPOTIFY_NOW_PLAYING_URI = "spotify_now_playing_uri",
1866
1866
  /** Now playing track duration in seconds. Use as {{spotify_now_playing_duration}}. */
1867
1867
  SPOTIFY_NOW_PLAYING_DURATION = "spotify_now_playing_duration",
1868
+ /** Now playing track position in seconds at the last play/pause/seek anchor. Use as {{spotify_now_playing_progress}}. */
1869
+ SPOTIFY_NOW_PLAYING_PROGRESS = "spotify_now_playing_progress",
1870
+ /** Epoch ms when the progress anchor was captured (for client-side interpolation). Use as {{spotify_now_playing_progress_ts}}. */
1871
+ SPOTIFY_NOW_PLAYING_PROGRESS_TS = "spotify_now_playing_progress_ts",
1872
+ /** Whether playback is currently advancing (true/false). Use as {{spotify_now_playing_is_playing}}. */
1873
+ SPOTIFY_NOW_PLAYING_IS_PLAYING = "spotify_now_playing_is_playing",
1868
1874
  /** Next song title. Use as {{spotify_next_song}}. */
1869
1875
  SPOTIFY_NEXT_SONG = "spotify_next_song",
1870
1876
  /** Next song artwork URL. Use as {{spotify_next_image}}. */
@@ -1891,6 +1897,12 @@ export declare enum SystemVariables {
1891
1897
  YOUTUBEMUSIC_NOW_PLAYING_URL = "youtubemusic_now_playing_url",
1892
1898
  /** Now playing track duration in seconds. Use as {{youtubemusic_now_playing_duration}}. */
1893
1899
  YOUTUBEMUSIC_NOW_PLAYING_DURATION = "youtubemusic_now_playing_duration",
1900
+ /** Now playing track position in seconds at the last play/pause/seek anchor. Use as {{youtubemusic_now_playing_progress}}. */
1901
+ YOUTUBEMUSIC_NOW_PLAYING_PROGRESS = "youtubemusic_now_playing_progress",
1902
+ /** Epoch ms when the progress anchor was captured (for client-side interpolation). Use as {{youtubemusic_now_playing_progress_ts}}. */
1903
+ YOUTUBEMUSIC_NOW_PLAYING_PROGRESS_TS = "youtubemusic_now_playing_progress_ts",
1904
+ /** Whether playback is currently advancing (true/false). Use as {{youtubemusic_now_playing_is_playing}}. */
1905
+ YOUTUBEMUSIC_NOW_PLAYING_IS_PLAYING = "youtubemusic_now_playing_is_playing",
1894
1906
  /** Next song title. Use as {{youtubemusic_next_song}}. */
1895
1907
  YOUTUBEMUSIC_NEXT_SONG = "youtubemusic_next_song",
1896
1908
  /** Next song artwork URL. Use as {{youtubemusic_next_image}}. */
@@ -1947,6 +1959,12 @@ export declare enum SystemVariables {
1947
1959
  VLC_NOW_PLAYING_URL = "vlc_now_playing_url",
1948
1960
  /** Now playing media duration in seconds. Use as {{vlc_now_playing_duration}}. */
1949
1961
  VLC_NOW_PLAYING_DURATION = "vlc_now_playing_duration",
1962
+ /** Now playing media position in seconds at the last play/pause/seek anchor. Use as {{vlc_now_playing_progress}}. */
1963
+ VLC_NOW_PLAYING_PROGRESS = "vlc_now_playing_progress",
1964
+ /** Epoch ms when the progress anchor was captured (for client-side interpolation). Use as {{vlc_now_playing_progress_ts}}. */
1965
+ VLC_NOW_PLAYING_PROGRESS_TS = "vlc_now_playing_progress_ts",
1966
+ /** Whether playback is currently advancing (true/false). Use as {{vlc_now_playing_is_playing}}. */
1967
+ VLC_NOW_PLAYING_IS_PLAYING = "vlc_now_playing_is_playing",
1950
1968
  /** Media URI. Use as {{vlc_now_playing_uri}}. */
1951
1969
  VLC_NOW_PLAYING_URI = "vlc_now_playing_uri",
1952
1970
  /** Voice changer on (true/false). Use as {{voicemod_voice_changer_on}}. */
@@ -802,8 +802,12 @@ export var SystemVariables;
802
802
  SystemVariables["SPOTIFY_NOW_PLAYING_URI"] = "spotify_now_playing_uri";
803
803
  /** Now playing track duration in seconds. Use as {{spotify_now_playing_duration}}. */
804
804
  SystemVariables["SPOTIFY_NOW_PLAYING_DURATION"] = "spotify_now_playing_duration";
805
- // /** Now playing track progress (current position) in seconds. Use as {{spotify_now_playing_progress}}. */
806
- // SPOTIFY_NOW_PLAYING_PROGRESS = 'spotify_now_playing_progress',
805
+ /** Now playing track position in seconds at the last play/pause/seek anchor. Use as {{spotify_now_playing_progress}}. */
806
+ SystemVariables["SPOTIFY_NOW_PLAYING_PROGRESS"] = "spotify_now_playing_progress";
807
+ /** Epoch ms when the progress anchor was captured (for client-side interpolation). Use as {{spotify_now_playing_progress_ts}}. */
808
+ SystemVariables["SPOTIFY_NOW_PLAYING_PROGRESS_TS"] = "spotify_now_playing_progress_ts";
809
+ /** Whether playback is currently advancing (true/false). Use as {{spotify_now_playing_is_playing}}. */
810
+ SystemVariables["SPOTIFY_NOW_PLAYING_IS_PLAYING"] = "spotify_now_playing_is_playing";
807
811
  /** Next song title. Use as {{spotify_next_song}}. */
808
812
  SystemVariables["SPOTIFY_NEXT_SONG"] = "spotify_next_song";
809
813
  /** Next song artwork URL. Use as {{spotify_next_image}}. */
@@ -831,8 +835,12 @@ export var SystemVariables;
831
835
  SystemVariables["YOUTUBEMUSIC_NOW_PLAYING_URL"] = "youtubemusic_now_playing_url";
832
836
  /** Now playing track duration in seconds. Use as {{youtubemusic_now_playing_duration}}. */
833
837
  SystemVariables["YOUTUBEMUSIC_NOW_PLAYING_DURATION"] = "youtubemusic_now_playing_duration";
834
- // /** Now playing track progress (current position) in seconds. Use as {{youtubemusic_now_playing_progress}}. */
835
- // YOUTUBEMUSIC_NOW_PLAYING_PROGRESS = 'youtubemusic_now_playing_progress',
838
+ /** Now playing track position in seconds at the last play/pause/seek anchor. Use as {{youtubemusic_now_playing_progress}}. */
839
+ SystemVariables["YOUTUBEMUSIC_NOW_PLAYING_PROGRESS"] = "youtubemusic_now_playing_progress";
840
+ /** Epoch ms when the progress anchor was captured (for client-side interpolation). Use as {{youtubemusic_now_playing_progress_ts}}. */
841
+ SystemVariables["YOUTUBEMUSIC_NOW_PLAYING_PROGRESS_TS"] = "youtubemusic_now_playing_progress_ts";
842
+ /** Whether playback is currently advancing (true/false). Use as {{youtubemusic_now_playing_is_playing}}. */
843
+ SystemVariables["YOUTUBEMUSIC_NOW_PLAYING_IS_PLAYING"] = "youtubemusic_now_playing_is_playing";
836
844
  /** Next song title. Use as {{youtubemusic_next_song}}. */
837
845
  SystemVariables["YOUTUBEMUSIC_NEXT_SONG"] = "youtubemusic_next_song";
838
846
  /** Next song artwork URL. Use as {{youtubemusic_next_image}}. */
@@ -891,8 +899,12 @@ export var SystemVariables;
891
899
  SystemVariables["VLC_NOW_PLAYING_URL"] = "vlc_now_playing_url";
892
900
  /** Now playing media duration in seconds. Use as {{vlc_now_playing_duration}}. */
893
901
  SystemVariables["VLC_NOW_PLAYING_DURATION"] = "vlc_now_playing_duration";
894
- // /** Now playing media progress (current position) in seconds. Use as {{vlc_now_playing_progress}}. */
895
- // VLC_NOW_PLAYING_PROGRESS = 'vlc_now_playing_progress',
902
+ /** Now playing media position in seconds at the last play/pause/seek anchor. Use as {{vlc_now_playing_progress}}. */
903
+ SystemVariables["VLC_NOW_PLAYING_PROGRESS"] = "vlc_now_playing_progress";
904
+ /** Epoch ms when the progress anchor was captured (for client-side interpolation). Use as {{vlc_now_playing_progress_ts}}. */
905
+ SystemVariables["VLC_NOW_PLAYING_PROGRESS_TS"] = "vlc_now_playing_progress_ts";
906
+ /** Whether playback is currently advancing (true/false). Use as {{vlc_now_playing_is_playing}}. */
907
+ SystemVariables["VLC_NOW_PLAYING_IS_PLAYING"] = "vlc_now_playing_is_playing";
896
908
  /** Media URI. Use as {{vlc_now_playing_uri}}. */
897
909
  SystemVariables["VLC_NOW_PLAYING_URI"] = "vlc_now_playing_uri";
898
910
  // ────────────────────────────────── Voicemod ──────────────────────────────────
@@ -797,6 +797,12 @@ export declare enum SystemVariables {
797
797
  SPOTIFY_NOW_PLAYING_URI = "spotify_now_playing_uri",
798
798
  /** Now playing track duration in seconds. Use as {{spotify_now_playing_duration}}. */
799
799
  SPOTIFY_NOW_PLAYING_DURATION = "spotify_now_playing_duration",
800
+ /** Now playing track position in seconds at the last play/pause/seek anchor. Use as {{spotify_now_playing_progress}}. */
801
+ SPOTIFY_NOW_PLAYING_PROGRESS = "spotify_now_playing_progress",
802
+ /** Epoch ms when the progress anchor was captured (for client-side interpolation). Use as {{spotify_now_playing_progress_ts}}. */
803
+ SPOTIFY_NOW_PLAYING_PROGRESS_TS = "spotify_now_playing_progress_ts",
804
+ /** Whether playback is currently advancing (true/false). Use as {{spotify_now_playing_is_playing}}. */
805
+ SPOTIFY_NOW_PLAYING_IS_PLAYING = "spotify_now_playing_is_playing",
800
806
  /** Next song title. Use as {{spotify_next_song}}. */
801
807
  SPOTIFY_NEXT_SONG = "spotify_next_song",
802
808
  /** Next song artwork URL. Use as {{spotify_next_image}}. */
@@ -823,6 +829,12 @@ export declare enum SystemVariables {
823
829
  YOUTUBEMUSIC_NOW_PLAYING_URL = "youtubemusic_now_playing_url",
824
830
  /** Now playing track duration in seconds. Use as {{youtubemusic_now_playing_duration}}. */
825
831
  YOUTUBEMUSIC_NOW_PLAYING_DURATION = "youtubemusic_now_playing_duration",
832
+ /** Now playing track position in seconds at the last play/pause/seek anchor. Use as {{youtubemusic_now_playing_progress}}. */
833
+ YOUTUBEMUSIC_NOW_PLAYING_PROGRESS = "youtubemusic_now_playing_progress",
834
+ /** Epoch ms when the progress anchor was captured (for client-side interpolation). Use as {{youtubemusic_now_playing_progress_ts}}. */
835
+ YOUTUBEMUSIC_NOW_PLAYING_PROGRESS_TS = "youtubemusic_now_playing_progress_ts",
836
+ /** Whether playback is currently advancing (true/false). Use as {{youtubemusic_now_playing_is_playing}}. */
837
+ YOUTUBEMUSIC_NOW_PLAYING_IS_PLAYING = "youtubemusic_now_playing_is_playing",
826
838
  /** Next song title. Use as {{youtubemusic_next_song}}. */
827
839
  YOUTUBEMUSIC_NEXT_SONG = "youtubemusic_next_song",
828
840
  /** Next song artwork URL. Use as {{youtubemusic_next_image}}. */
@@ -879,6 +891,12 @@ export declare enum SystemVariables {
879
891
  VLC_NOW_PLAYING_URL = "vlc_now_playing_url",
880
892
  /** Now playing media duration in seconds. Use as {{vlc_now_playing_duration}}. */
881
893
  VLC_NOW_PLAYING_DURATION = "vlc_now_playing_duration",
894
+ /** Now playing media position in seconds at the last play/pause/seek anchor. Use as {{vlc_now_playing_progress}}. */
895
+ VLC_NOW_PLAYING_PROGRESS = "vlc_now_playing_progress",
896
+ /** Epoch ms when the progress anchor was captured (for client-side interpolation). Use as {{vlc_now_playing_progress_ts}}. */
897
+ VLC_NOW_PLAYING_PROGRESS_TS = "vlc_now_playing_progress_ts",
898
+ /** Whether playback is currently advancing (true/false). Use as {{vlc_now_playing_is_playing}}. */
899
+ VLC_NOW_PLAYING_IS_PLAYING = "vlc_now_playing_is_playing",
882
900
  /** Media URI. Use as {{vlc_now_playing_uri}}. */
883
901
  VLC_NOW_PLAYING_URI = "vlc_now_playing_uri",
884
902
  /** Voice changer on (true/false). Use as {{voicemod_voice_changer_on}}. */
@@ -807,8 +807,12 @@ var SystemVariables;
807
807
  SystemVariables["SPOTIFY_NOW_PLAYING_URI"] = "spotify_now_playing_uri";
808
808
  /** Now playing track duration in seconds. Use as {{spotify_now_playing_duration}}. */
809
809
  SystemVariables["SPOTIFY_NOW_PLAYING_DURATION"] = "spotify_now_playing_duration";
810
- // /** Now playing track progress (current position) in seconds. Use as {{spotify_now_playing_progress}}. */
811
- // SPOTIFY_NOW_PLAYING_PROGRESS = 'spotify_now_playing_progress',
810
+ /** Now playing track position in seconds at the last play/pause/seek anchor. Use as {{spotify_now_playing_progress}}. */
811
+ SystemVariables["SPOTIFY_NOW_PLAYING_PROGRESS"] = "spotify_now_playing_progress";
812
+ /** Epoch ms when the progress anchor was captured (for client-side interpolation). Use as {{spotify_now_playing_progress_ts}}. */
813
+ SystemVariables["SPOTIFY_NOW_PLAYING_PROGRESS_TS"] = "spotify_now_playing_progress_ts";
814
+ /** Whether playback is currently advancing (true/false). Use as {{spotify_now_playing_is_playing}}. */
815
+ SystemVariables["SPOTIFY_NOW_PLAYING_IS_PLAYING"] = "spotify_now_playing_is_playing";
812
816
  /** Next song title. Use as {{spotify_next_song}}. */
813
817
  SystemVariables["SPOTIFY_NEXT_SONG"] = "spotify_next_song";
814
818
  /** Next song artwork URL. Use as {{spotify_next_image}}. */
@@ -836,8 +840,12 @@ var SystemVariables;
836
840
  SystemVariables["YOUTUBEMUSIC_NOW_PLAYING_URL"] = "youtubemusic_now_playing_url";
837
841
  /** Now playing track duration in seconds. Use as {{youtubemusic_now_playing_duration}}. */
838
842
  SystemVariables["YOUTUBEMUSIC_NOW_PLAYING_DURATION"] = "youtubemusic_now_playing_duration";
839
- // /** Now playing track progress (current position) in seconds. Use as {{youtubemusic_now_playing_progress}}. */
840
- // YOUTUBEMUSIC_NOW_PLAYING_PROGRESS = 'youtubemusic_now_playing_progress',
843
+ /** Now playing track position in seconds at the last play/pause/seek anchor. Use as {{youtubemusic_now_playing_progress}}. */
844
+ SystemVariables["YOUTUBEMUSIC_NOW_PLAYING_PROGRESS"] = "youtubemusic_now_playing_progress";
845
+ /** Epoch ms when the progress anchor was captured (for client-side interpolation). Use as {{youtubemusic_now_playing_progress_ts}}. */
846
+ SystemVariables["YOUTUBEMUSIC_NOW_PLAYING_PROGRESS_TS"] = "youtubemusic_now_playing_progress_ts";
847
+ /** Whether playback is currently advancing (true/false). Use as {{youtubemusic_now_playing_is_playing}}. */
848
+ SystemVariables["YOUTUBEMUSIC_NOW_PLAYING_IS_PLAYING"] = "youtubemusic_now_playing_is_playing";
841
849
  /** Next song title. Use as {{youtubemusic_next_song}}. */
842
850
  SystemVariables["YOUTUBEMUSIC_NEXT_SONG"] = "youtubemusic_next_song";
843
851
  /** Next song artwork URL. Use as {{youtubemusic_next_image}}. */
@@ -896,8 +904,12 @@ var SystemVariables;
896
904
  SystemVariables["VLC_NOW_PLAYING_URL"] = "vlc_now_playing_url";
897
905
  /** Now playing media duration in seconds. Use as {{vlc_now_playing_duration}}. */
898
906
  SystemVariables["VLC_NOW_PLAYING_DURATION"] = "vlc_now_playing_duration";
899
- // /** Now playing media progress (current position) in seconds. Use as {{vlc_now_playing_progress}}. */
900
- // VLC_NOW_PLAYING_PROGRESS = 'vlc_now_playing_progress',
907
+ /** Now playing media position in seconds at the last play/pause/seek anchor. Use as {{vlc_now_playing_progress}}. */
908
+ SystemVariables["VLC_NOW_PLAYING_PROGRESS"] = "vlc_now_playing_progress";
909
+ /** Epoch ms when the progress anchor was captured (for client-side interpolation). Use as {{vlc_now_playing_progress_ts}}. */
910
+ SystemVariables["VLC_NOW_PLAYING_PROGRESS_TS"] = "vlc_now_playing_progress_ts";
911
+ /** Whether playback is currently advancing (true/false). Use as {{vlc_now_playing_is_playing}}. */
912
+ SystemVariables["VLC_NOW_PLAYING_IS_PLAYING"] = "vlc_now_playing_is_playing";
901
913
  /** Media URI. Use as {{vlc_now_playing_uri}}. */
902
914
  SystemVariables["VLC_NOW_PLAYING_URI"] = "vlc_now_playing_uri";
903
915
  // ────────────────────────────────── Voicemod ──────────────────────────────────
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lumiastream/lumia-types",
3
- "version": "3.6.3",
3
+ "version": "3.6.5",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/esm/index.js",