@xibosignage/xibo-layout-renderer 1.0.27 → 1.0.29

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.
@@ -72,20 +72,25 @@ declare class ActionController {
72
72
  $actionControllerTitle: HTMLElement | null;
73
73
  $actionsContainer: HTMLElement | null;
74
74
  translations: any;
75
+ private keyboardHandler;
75
76
  constructor(parent: ILayout, actions: Action[], options: InactOptions);
76
77
  init(): void;
77
78
  openLayoutInNewTab(layoutCode: string, options: InactOptions): void;
78
- openLayoutInPlayer(layoutCode: string, options: InactOptions): void;
79
+ openLayoutInPlayer(layoutCode: string, _options: InactOptions): void;
79
80
  prevOrNextLayout(targetId: string, actionType: string): void;
80
- /** Change media in region (next/previous) */
81
- nextMediaInRegion(regionId: string, actionType: string): void;
81
+ /** Change media in region (next/previous) with wrap-around at boundaries. */
82
+ gotoMediaInRegion(regionId: string, actionType: string): void;
82
83
  loadMediaInRegion(regionId: string, widgetId: string): void;
83
84
  /** Run action based on action data */
84
85
  runAction(actionData: {
85
86
  [k: string]: any;
86
87
  }, options: InactOptions): void;
87
88
  initTouchActions(): void;
89
+ /** Dispatch an incoming webhook trigger to any matching actions on this layout. */
90
+ handleWebhookTrigger(triggerCode: string, widgetId?: string): void;
88
91
  initKeyboardActions(): void;
92
+ /** Remove the keydown listener registered by initKeyboardActions. Call when the layout ends or is cancelled. */
93
+ removeKeyboardActions(): void;
89
94
  }
90
95
 
91
96
  declare function initRenderingDOM(targetContainer: Element | null): void;
@@ -221,6 +226,23 @@ interface IXlr {
221
226
  getLayoutById(layoutId: number, layoutIndex?: number): ILayout | undefined;
222
227
  gotoNextLayout(): void;
223
228
  gotoPrevLayout(): void;
229
+ /**
230
+ * Navigate directly to a layout identified by its CMS code string.
231
+ * Searches parsed layouts first, then fetches unparsed XLF files via appHost.
232
+ * No-ops silently if the code is not found in the current loop.
233
+ */
234
+ gotoLayoutByCode(layoutCode: string): Promise<void>;
235
+ /**
236
+ * Play the given layout once as an interrupt, then resume the current loop.
237
+ * Used by non-CMS platforms for Navigate to Layout interactive actions.
238
+ * The interrupt is not part of inputLayouts and is spliced in temporarily.
239
+ */
240
+ playInterruptLayout(inputLayout: InputLayoutType): Promise<void>;
241
+ /**
242
+ * Dispatch an incoming webhook trigger code to the current layout's
243
+ * action controller. Pass an optional widgetId to narrow the match.
244
+ */
245
+ triggerAction(triggerCode: string, widgetId?: string): void;
224
246
  init(): Promise<IXlr>;
225
247
  inputLayouts: InputLayoutType[];
226
248
  isInterrupted: boolean;
@@ -241,7 +263,7 @@ interface IXlr {
241
263
  prepareLayoutXlf(inputLayout: ILayout | undefined): Promise<ILayout>;
242
264
  prepareLayouts(): Promise<IXlr>;
243
265
  renderOverlayLayouts(): Promise<void>;
244
- uniqueLayouts: Record<string, InputLayoutType>;
266
+ uniqueLayouts: Map<string, InputLayoutType>;
245
267
  updateInputLayout(layoutIndex: number, layout: InputLayoutType): void;
246
268
  updateLayouts(inputLayouts: InputLayoutType[]): void;
247
269
  updateLoop(inputLayouts: InputLayoutType[]): Promise<void>;
@@ -475,6 +497,7 @@ type InputLayoutType = {
475
497
  duration?: number;
476
498
  isOverlay?: boolean;
477
499
  shareOfVoice?: number;
500
+ code?: string;
478
501
  };
479
502
  type OptionsType = {
480
503
  xlfUrl: string;