UNPKG

@elgato/schemas

Version:

Collection of schemas, and TypeScript declarations, to support the creation and validation of Stream Deck SDK files

930 lines (929 loc) 319 kB
/**! * @author Elgato * @module elgato/streamdeck * @license MIT * @copyright Copyright (c) Corsair Memory Inc. */ var $id$1 = "@elgato/schemas/streamdeck/plugins/layout@0.4.15"; var $schema$1 = "http://json-schema.org/draft-07/schema#"; var $ref$1 = "#/definitions/Layout"; var definitions$1 = { Layout: { type: "object", properties: { $schema: { type: "string", description: "JSON schema responsible for describing the manifest's data format and validation.", markdownDescription: "JSON schema responsible for describing the manifest's data format and validation." }, id: { type: "string", description: "Unique identifier associated with the layout.", markdownDescription: "Unique identifier associated with the layout." }, items: { type: "array", items: { type: "object", properties: { type: { "enum": [ "bar", "gbar", "pixmap", "text" ] } }, required: [ "type" ], allOf: [ { "if": { properties: { type: { type: "string", "const": "bar", description: "Type of layout item this instance represents, e.g. \"pixmap\", \"bar\", etc.\n\nNote: The `type` of the layout item cannot be changed at runtime.", markdownDescription: "Type of layout item this instance represents, e.g. \"pixmap\", \"bar\", etc.\n\nNote: The `type` of the layout item cannot be changed at runtime." } } }, then: { $ref: "#/definitions/Bar" } }, { "if": { properties: { type: { type: "string", "const": "gbar", description: "Type of layout item this instance represents, e.g. \"pixmap\", \"bar\", etc.\n\nNote: The `type` of the layout item cannot be changed at runtime.", markdownDescription: "Type of layout item this instance represents, e.g. \"pixmap\", \"bar\", etc.\n\nNote: The `type` of the layout item cannot be changed at runtime." } } }, then: { $ref: "#/definitions/GBar" } }, { "if": { properties: { type: { type: "string", "const": "pixmap", description: "Type of layout item this instance represents, e.g. \"pixmap\", \"bar\", etc.\n\nNote: The `type` of the layout item cannot be changed at runtime.", markdownDescription: "Type of layout item this instance represents, e.g. \"pixmap\", \"bar\", etc.\n\nNote: The `type` of the layout item cannot be changed at runtime." } } }, then: { $ref: "#/definitions/Pixmap" } }, { "if": { properties: { type: { type: "string", "const": "text", description: "Type of layout item this instance represents, e.g. \"pixmap\", \"bar\", etc.\n\nNote: The `type` of the layout item cannot be changed at runtime.", markdownDescription: "Type of layout item this instance represents, e.g. \"pixmap\", \"bar\", etc.\n\nNote: The `type` of the layout item cannot be changed at runtime." } } }, then: { $ref: "#/definitions/Text" } } ], description: "A layout item.", markdownDescription: "A layout item." }, description: "Items within the layout.", markdownDescription: "Items within the layout." } }, required: [ "id", "items" ], additionalProperties: false, description: "Defines the structure of a custom layout file.", markdownDescription: "Defines the structure of a custom layout file." }, Bar: { type: "object", additionalProperties: false, properties: { bar_bg_c: { type: "string", description: "Bar background color represented as a named color, hexadecimal value, or gradient. Default is `darkGray`. Gradients can be defined by specifying multiple color-stops separated by commas, in the following format `[{offset}:{color}[,]]`.\n\n**Examples:**\n- \"pink\"\n- \"#204cfe\" (Elgato blue)\n- \"0:#ff0000,0.5:yellow,1:#00ff00\" (Gradient)", examples: [ "darkGray" ], markdownDescription: "Bar background color represented as a named color, hexadecimal value, or gradient. Default is `darkGray`. Gradients can be defined by specifying multiple color-stops separated by commas, in the following format `[{offset}:{color}[,]]`.\n\n**Examples:**\n- \"pink\"\n- \"#204cfe\" (Elgato blue)\n- \"0:#ff0000,0.5:yellow,1:#00ff00\" (Gradient)" }, bar_border_c: { type: "string", description: "Border color represented as a named color, or hexadecimal value. Default is `white`.\n\n**Examples:**\n- \"pink\"\n- \"#204cfe\" (Elgato blue)", examples: [ "white" ], markdownDescription: "Border color represented as a named color, or hexadecimal value. Default is `white`.\n\n**Examples:**\n- \"pink\"\n- \"#204cfe\" (Elgato blue)" }, bar_fill_c: { type: "string", description: "Fill color of the bar represented as a named color, hexadecimal value, or gradient. Default is `white`. Gradients can be defined by specifying multiple color-stops separated by commas, in the following format `[{offset}:{color}[,]]`.\n\n**Examples:**\n- \"pink\"\n- \"#204cfe\" (Elgato blue)\n- \"0:#ff0000,0.5:yellow,1:#00ff00\" (Gradient)", examples: [ "white" ], markdownDescription: "Fill color of the bar represented as a named color, hexadecimal value, or gradient. Default is `white`. Gradients can be defined by specifying multiple color-stops separated by commas, in the following format `[{offset}:{color}[,]]`.\n\n**Examples:**\n- \"pink\"\n- \"#204cfe\" (Elgato blue)\n- \"0:#ff0000,0.5:yellow,1:#00ff00\" (Gradient)" }, border_w: { type: "number", description: "Width of the border around the bar, as a whole number. Default is `2`.", examples: [ 2 ], markdownDescription: "Width of the border around the bar, as a whole number. Default is `2`." }, range: { $ref: "#/definitions/Range", description: "Defines the range of the value the bar represents, e.g. 0-20, 0-100, etc.", markdownDescription: "Defines the range of the value the bar represents, e.g. 0-20, 0-100, etc." }, subtype: { type: "number", "enum": [ 0, 1, 2, 3, 4 ], description: "Sub-type used to determine the type of bar to render. Default is {@link BarSubType.Groove } (4).\n\n**Options**\n- Rectangle (0)\n- DoubleRectangle (1)\n- Trapezoid (2)\n- DoubleTrapezoid (3)\n- Groove (4)", markdownDescription: "Sub-type used to determine the type of bar to render. Default is {@link BarSubType.Groove } (4).\n\n**Options**\n- Rectangle (0)\n- DoubleRectangle (1)\n- Trapezoid (2)\n- DoubleTrapezoid (3)\n- Groove (4)" }, value: { type: "number", description: "Value used to determine how much of the bar is filled. Correlates with the item's `range` if specified in the layout's JSON definition; default range is `0..100`.", markdownDescription: "Value used to determine how much of the bar is filled. Correlates with the item's `range` if specified in the layout's JSON definition; default range is `0..100`." }, background: { type: "string", description: "Background color represented as a named color, hexadecimal value, or gradient. Gradients can be defined by specifying multiple color-stops separated by commas, in the following format `[{offset}:{color}[,]]`.\n\n**Examples:**\n- \"pink\"\n- \"#204cfe\" (Elgato blue)\n- \"0:#ff0000,0.5:yellow,1:#00ff00\" (Gradient)", markdownDescription: "Background color represented as a named color, hexadecimal value, or gradient. Gradients can be defined by specifying multiple color-stops separated by commas, in the following format `[{offset}:{color}[,]]`.\n\n**Examples:**\n- \"pink\"\n- \"#204cfe\" (Elgato blue)\n- \"0:#ff0000,0.5:yellow,1:#00ff00\" (Gradient)" }, enabled: { type: "boolean", description: "Determines whether the item is enabled (i.e. visible); default is `true`.", markdownDescription: "Determines whether the item is enabled (i.e. visible); default is `true`." }, key: { type: "string", description: "Unique name used to identify the layout item. When calling `setFeedback` this value should be used as the key as part of the object that represents the feedback.\n\nNote: The `key` of the layout item cannot be changed at runtime.", pattern: "^[A-Za-z0-9\\-_]+$", errorMessage: "String must only contain alphanumeric characters (A-z, 0-9), hyphens (-), and underscores (_)", markdownDescription: "Unique name used to identify the layout item. When calling `setFeedback` this value should be used as the key as part of the object that represents the feedback.\n\nNote: The `key` of the layout item cannot be changed at runtime." }, opacity: { type: "number", "enum": [ 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1 ], description: "Defines the opacity of the item being shown based on a single-decimal value ranging from `0..1`, e.g. `0.1`, `0.2`, etc. with `0` being invisible and `1` being fully visible. Default is `1`.", markdownDescription: "Defines the opacity of the item being shown based on a single-decimal value ranging from `0..1`, e.g. `0.1`, `0.2`, etc. with `0` being invisible and `1` being fully visible. Default is `1`." }, rect: { type: "array", minItems: 4, items: [ { type: "number", description: "X coordinate of the rectangle.", minimum: 0, maximum: 200, title: "x", markdownDescription: "X coordinate of the rectangle." }, { type: "number", description: "Y coordinate of the rectangle.", minimum: 0, maximum: 100, title: "y", markdownDescription: "Y coordinate of the rectangle." }, { type: "number", description: "Width of the rectangle.", minimum: 0, maximum: 200, title: "width", markdownDescription: "Width of the rectangle." }, { type: "number", description: "Height of the rectangle.", minimum: 0, maximum: 100, title: "height", markdownDescription: "Height of the rectangle." } ], maxItems: 4, description: "Array defining the items coordinates in the format `[x, y, width, height]`; coordinates must be within canvas size of 200 x 100, e.g. [0, 0, 200, 100]. Items with the same `zOrder` must **not** have an overlapping `rect`.\n\nNote: The `rect` of the layout item cannot be changed at runtime.", markdownDescription: "Array defining the items coordinates in the format `[x, y, width, height]`; coordinates must be within canvas size of 200 x 100, e.g. [0, 0, 200, 100]. Items with the same `zOrder` must **not** have an overlapping `rect`.\n\nNote: The `rect` of the layout item cannot be changed at runtime." }, type: { type: "string", "const": "bar", description: "Type of layout item this instance represents, e.g. \"pixmap\", \"bar\", etc.\n\nNote: The `type` of the layout item cannot be changed at runtime.", markdownDescription: "Type of layout item this instance represents, e.g. \"pixmap\", \"bar\", etc.\n\nNote: The `type` of the layout item cannot be changed at runtime." }, zOrder: { type: "number", description: "Z-order of the item, used to layer items within a layout; must be between 0-700. Items with the same `zOrder` must **not** have an overlapping `rect`. Default is `0`.", minimum: 0, maximum: 700, markdownDescription: "Z-order of the item, used to layer items within a layout; must be between 0-700. Items with the same `zOrder` must **not** have an overlapping `rect`. Default is `0`." } }, required: [ "key", "rect", "type", "value" ], description: "Bar layout item used to render a horizontal bar with a filler, e.g. a progress bar. The amount to fill the bar by can be specified by setting the `value`.", markdownDescription: "Bar layout item used to render a horizontal bar with a filler, e.g. a progress bar. The amount to fill the bar by can be specified by setting the `value`." }, Range: { type: "object", properties: { min: { type: "number", description: "Minimum value of the bar.", markdownDescription: "Minimum value of the bar." }, max: { type: "number", description: "Maximum value of the bar.", markdownDescription: "Maximum value of the bar." } }, required: [ "min", "max" ], additionalProperties: false, description: "Defines the range of the value the bar represents, e.g. 0-20, 0-100, etc.", markdownDescription: "Defines the range of the value the bar represents, e.g. 0-20, 0-100, etc." }, GBar: { type: "object", additionalProperties: false, properties: { bar_h: { type: "number", description: "Height of the bar's indicator. Default is `10`.", examples: [ 10 ], markdownDescription: "Height of the bar's indicator. Default is `10`." }, bar_bg_c: { type: "string", description: "Bar background color represented as a named color, hexadecimal value, or gradient. Default is `darkGray`. Gradients can be defined by specifying multiple color-stops separated by commas, in the following format `[{offset}:{color}[,]]`.\n\n**Examples:**\n- \"pink\"\n- \"#204cfe\" (Elgato blue)\n- \"0:#ff0000,0.5:yellow,1:#00ff00\" (Gradient)", examples: [ "darkGray" ], markdownDescription: "Bar background color represented as a named color, hexadecimal value, or gradient. Default is `darkGray`. Gradients can be defined by specifying multiple color-stops separated by commas, in the following format `[{offset}:{color}[,]]`.\n\n**Examples:**\n- \"pink\"\n- \"#204cfe\" (Elgato blue)\n- \"0:#ff0000,0.5:yellow,1:#00ff00\" (Gradient)" }, bar_border_c: { type: "string", description: "Border color represented as a named color, or hexadecimal value. Default is `white`.\n\n**Examples:**\n- \"pink\"\n- \"#204cfe\" (Elgato blue)", examples: [ "white" ], markdownDescription: "Border color represented as a named color, or hexadecimal value. Default is `white`.\n\n**Examples:**\n- \"pink\"\n- \"#204cfe\" (Elgato blue)" }, bar_fill_c: { type: "string", description: "Fill color of the bar represented as a named color, hexadecimal value, or gradient. Default is `white`. Gradients can be defined by specifying multiple color-stops separated by commas, in the following format `[{offset}:{color}[,]]`.\n\n**Examples:**\n- \"pink\"\n- \"#204cfe\" (Elgato blue)\n- \"0:#ff0000,0.5:yellow,1:#00ff00\" (Gradient)", examples: [ "white" ], markdownDescription: "Fill color of the bar represented as a named color, hexadecimal value, or gradient. Default is `white`. Gradients can be defined by specifying multiple color-stops separated by commas, in the following format `[{offset}:{color}[,]]`.\n\n**Examples:**\n- \"pink\"\n- \"#204cfe\" (Elgato blue)\n- \"0:#ff0000,0.5:yellow,1:#00ff00\" (Gradient)" }, border_w: { type: "number", description: "Width of the border around the bar, as a whole number. Default is `2`.", examples: [ 2 ], markdownDescription: "Width of the border around the bar, as a whole number. Default is `2`." }, range: { $ref: "#/definitions/Range", description: "Defines the range of the value the bar represents, e.g. 0-20, 0-100, etc.", markdownDescription: "Defines the range of the value the bar represents, e.g. 0-20, 0-100, etc." }, subtype: { type: "number", "enum": [ 0, 1, 2, 3, 4 ], description: "Sub-type used to determine the type of bar to render. Default is {@link BarSubType.Groove } (4).\n\n**Options**\n- Rectangle (0)\n- DoubleRectangle (1)\n- Trapezoid (2)\n- DoubleTrapezoid (3)\n- Groove (4)", markdownDescription: "Sub-type used to determine the type of bar to render. Default is {@link BarSubType.Groove } (4).\n\n**Options**\n- Rectangle (0)\n- DoubleRectangle (1)\n- Trapezoid (2)\n- DoubleTrapezoid (3)\n- Groove (4)" }, value: { type: "number", description: "Value used to determine how much of the bar is filled. Correlates with the item's `range` if specified in the layout's JSON definition; default range is `0..100`.", markdownDescription: "Value used to determine how much of the bar is filled. Correlates with the item's `range` if specified in the layout's JSON definition; default range is `0..100`." }, background: { type: "string", description: "Background color represented as a named color, hexadecimal value, or gradient. Gradients can be defined by specifying multiple color-stops separated by commas, in the following format `[{offset}:{color}[,]]`.\n\n**Examples:**\n- \"pink\"\n- \"#204cfe\" (Elgato blue)\n- \"0:#ff0000,0.5:yellow,1:#00ff00\" (Gradient)", markdownDescription: "Background color represented as a named color, hexadecimal value, or gradient. Gradients can be defined by specifying multiple color-stops separated by commas, in the following format `[{offset}:{color}[,]]`.\n\n**Examples:**\n- \"pink\"\n- \"#204cfe\" (Elgato blue)\n- \"0:#ff0000,0.5:yellow,1:#00ff00\" (Gradient)" }, enabled: { type: "boolean", description: "Determines whether the item is enabled (i.e. visible); default is `true`.", markdownDescription: "Determines whether the item is enabled (i.e. visible); default is `true`." }, key: { type: "string", description: "Unique name used to identify the layout item. When calling `setFeedback` this value should be used as the key as part of the object that represents the feedback.\n\nNote: The `key` of the layout item cannot be changed at runtime.", pattern: "^[A-Za-z0-9\\-_]+$", errorMessage: "String must only contain alphanumeric characters (A-z, 0-9), hyphens (-), and underscores (_)", markdownDescription: "Unique name used to identify the layout item. When calling `setFeedback` this value should be used as the key as part of the object that represents the feedback.\n\nNote: The `key` of the layout item cannot be changed at runtime." }, opacity: { type: "number", "enum": [ 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1 ], description: "Defines the opacity of the item being shown based on a single-decimal value ranging from `0..1`, e.g. `0.1`, `0.2`, etc. with `0` being invisible and `1` being fully visible. Default is `1`.", markdownDescription: "Defines the opacity of the item being shown based on a single-decimal value ranging from `0..1`, e.g. `0.1`, `0.2`, etc. with `0` being invisible and `1` being fully visible. Default is `1`." }, rect: { type: "array", minItems: 4, items: [ { type: "number", description: "X coordinate of the rectangle.", minimum: 0, maximum: 200, title: "x", markdownDescription: "X coordinate of the rectangle." }, { type: "number", description: "Y coordinate of the rectangle.", minimum: 0, maximum: 100, title: "y", markdownDescription: "Y coordinate of the rectangle." }, { type: "number", description: "Width of the rectangle.", minimum: 0, maximum: 200, title: "width", markdownDescription: "Width of the rectangle." }, { type: "number", description: "Height of the rectangle.", minimum: 0, maximum: 100, title: "height", markdownDescription: "Height of the rectangle." } ], maxItems: 4, description: "Array defining the items coordinates in the format `[x, y, width, height]`; coordinates must be within canvas size of 200 x 100, e.g. [0, 0, 200, 100]. Items with the same `zOrder` must **not** have an overlapping `rect`.\n\nNote: The `rect` of the layout item cannot be changed at runtime.", markdownDescription: "Array defining the items coordinates in the format `[x, y, width, height]`; coordinates must be within canvas size of 200 x 100, e.g. [0, 0, 200, 100]. Items with the same `zOrder` must **not** have an overlapping `rect`.\n\nNote: The `rect` of the layout item cannot be changed at runtime." }, type: { type: "string", "const": "gbar", description: "Type of layout item this instance represents, e.g. \"pixmap\", \"bar\", etc.\n\nNote: The `type` of the layout item cannot be changed at runtime.", markdownDescription: "Type of layout item this instance represents, e.g. \"pixmap\", \"bar\", etc.\n\nNote: The `type` of the layout item cannot be changed at runtime." }, zOrder: { type: "number", description: "Z-order of the item, used to layer items within a layout; must be between 0-700. Items with the same `zOrder` must **not** have an overlapping `rect`. Default is `0`.", minimum: 0, maximum: 700, markdownDescription: "Z-order of the item, used to layer items within a layout; must be between 0-700. Items with the same `zOrder` must **not** have an overlapping `rect`. Default is `0`." } }, required: [ "key", "rect", "type", "value" ], description: "Bar layout item used to render a horizontal bar with an indicator represented as a triangle beneath the bar. The location of the indicator can be specified by setting the `value`.", markdownDescription: "Bar layout item used to render a horizontal bar with an indicator represented as a triangle beneath the bar. The location of the indicator can be specified by setting the `value`." }, Pixmap: { type: "object", additionalProperties: false, properties: { value: { type: "string", description: "Image to render; this can be either a path to a local file within the plugin's folder, a base64 encoded `string` with the mime type declared (e.g. PNG, JPEG, etc.), or an SVG `string`.\n\n**Examples:**\n- \"imgs/Logo.png\"\n- \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MHB0IiBoZWlnaHQ9…\"", markdownDescription: "Image to render; this can be either a path to a local file within the plugin's folder, a base64 encoded `string` with the mime type declared (e.g. PNG, JPEG, etc.), or an SVG `string`.\n\n**Examples:**\n- \"imgs/Logo.png\"\n- \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MHB0IiBoZWlnaHQ9…\"" }, background: { type: "string", description: "Background color represented as a named color, hexadecimal value, or gradient. Gradients can be defined by specifying multiple color-stops separated by commas, in the following format `[{offset}:{color}[,]]`.\n\n**Examples:**\n- \"pink\"\n- \"#204cfe\" (Elgato blue)\n- \"0:#ff0000,0.5:yellow,1:#00ff00\" (Gradient)", markdownDescription: "Background color represented as a named color, hexadecimal value, or gradient. Gradients can be defined by specifying multiple color-stops separated by commas, in the following format `[{offset}:{color}[,]]`.\n\n**Examples:**\n- \"pink\"\n- \"#204cfe\" (Elgato blue)\n- \"0:#ff0000,0.5:yellow,1:#00ff00\" (Gradient)" }, enabled: { type: "boolean", description: "Determines whether the item is enabled (i.e. visible); default is `true`.", markdownDescription: "Determines whether the item is enabled (i.e. visible); default is `true`." }, key: { type: "string", description: "Unique name used to identify the layout item. When calling `setFeedback` this value should be used as the key as part of the object that represents the feedback.\n\nNote: The `key` of the layout item cannot be changed at runtime.", pattern: "^[A-Za-z0-9\\-_]+$", errorMessage: "String must only contain alphanumeric characters (A-z, 0-9), hyphens (-), and underscores (_)", markdownDescription: "Unique name used to identify the layout item. When calling `setFeedback` this value should be used as the key as part of the object that represents the feedback.\n\nNote: The `key` of the layout item cannot be changed at runtime." }, opacity: { type: "number", "enum": [ 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1 ], description: "Defines the opacity of the item being shown based on a single-decimal value ranging from `0..1`, e.g. `0.1`, `0.2`, etc. with `0` being invisible and `1` being fully visible. Default is `1`.", markdownDescription: "Defines the opacity of the item being shown based on a single-decimal value ranging from `0..1`, e.g. `0.1`, `0.2`, etc. with `0` being invisible and `1` being fully visible. Default is `1`." }, rect: { type: "array", minItems: 4, items: [ { type: "number", description: "X coordinate of the rectangle.", minimum: 0, maximum: 200, title: "x", markdownDescription: "X coordinate of the rectangle." }, { type: "number", description: "Y coordinate of the rectangle.", minimum: 0, maximum: 100, title: "y", markdownDescription: "Y coordinate of the rectangle." }, { type: "number", description: "Width of the rectangle.", minimum: 0, maximum: 200, title: "width", markdownDescription: "Width of the rectangle." }, { type: "number", description: "Height of the rectangle.", minimum: 0, maximum: 100, title: "height", markdownDescription: "Height of the rectangle." } ], maxItems: 4, description: "Array defining the items coordinates in the format `[x, y, width, height]`; coordinates must be within canvas size of 200 x 100, e.g. [0, 0, 200, 100]. Items with the same `zOrder` must **not** have an overlapping `rect`.\n\nNote: The `rect` of the layout item cannot be changed at runtime.", markdownDescription: "Array defining the items coordinates in the format `[x, y, width, height]`; coordinates must be within canvas size of 200 x 100, e.g. [0, 0, 200, 100]. Items with the same `zOrder` must **not** have an overlapping `rect`.\n\nNote: The `rect` of the layout item cannot be changed at runtime." }, type: { type: "string", "const": "pixmap", description: "Type of layout item this instance represents, e.g. \"pixmap\", \"bar\", etc.\n\nNote: The `type` of the layout item cannot be changed at runtime.", markdownDescription: "Type of layout item this instance represents, e.g. \"pixmap\", \"bar\", etc.\n\nNote: The `type` of the layout item cannot be changed at runtime." }, zOrder: { type: "number", description: "Z-order of the item, used to layer items within a layout; must be between 0-700. Items with the same `zOrder` must **not** have an overlapping `rect`. Default is `0`.", minimum: 0, maximum: 700, markdownDescription: "Z-order of the item, used to layer items within a layout; must be between 0-700. Items with the same `zOrder` must **not** have an overlapping `rect`. Default is `0`." } }, required: [ "key", "rect", "type" ], description: "Image layout item used to render an image sourced from either a local file located under the plugin's folder, or base64 encoded `string`. The `value` defines the image.", markdownDescription: "Image layout item used to render an image sourced from either a local file located under the plugin's folder, or base64 encoded `string`. The `value` defines the image." }, Text: { type: "object", additionalProperties: false, properties: { alignment: { type: "string", "enum": [ "center", "left", "right" ], description: "Alignment of the text. Default is `\"center\"`. **Note**, when the `key` of this layout item is set to `\"title\"` within the layout's JSON definition, these values will be ignored in favour of the user's preferred title settings, as set in property inspector.", markdownDescription: "Alignment of the text. Default is `\"center\"`. **Note**, when the `key` of this layout item is set to `\"title\"` within the layout's JSON definition, these values will be ignored in favour of the user's preferred title settings, as set in property inspector." }, color: { type: "string", description: "Color of the font represented as a named color, or hexadecimal value. Default is `white`. **Note**, when the `key` of this layout item is set to `\"title\"` within the layout's JSON definition, these values will be ignored in favour of the user's preferred title settings, as set in property inspector.\n\n**Examples:**\n- \"pink\"\n- \"#204cfe\" (Elgato blue)", markdownDescription: "Color of the font represented as a named color, or hexadecimal value. Default is `white`. **Note**, when the `key` of this layout item is set to `\"title\"` within the layout's JSON definition, these values will be ignored in favour of the user's preferred title settings, as set in property inspector.\n\n**Examples:**\n- \"pink\"\n- \"#204cfe\" (Elgato blue)" }, font: { type: "object", properties: { size: { type: "number", description: "Size of the font, in pixels, represented as a whole number.\n\n**Note**, when the `key` of this layout item is set to `\"title\"` within the layout's JSON definition, this value will be ignored in favour of the user's preferred title settings, as set in property inspector.", markdownDescription: "Size of the font, in pixels, represented as a whole number.\n\n**Note**, when the `key` of this layout item is set to `\"title\"` within the layout's JSON definition, this value will be ignored in favour of the user's preferred title settings, as set in property inspector." }, weight: { type: "number", description: "Weight of the font; value must be a whole `number` in the range of `100..1000`. **Note**, when the `key` of this layout item is set to `\"title\"` within the layout's JSON definition, this value will be ignored in favour of the user's preferred title settings, as set in property inspector.", minimum: 100, maximum: 1000, markdownDescription: "Weight of the font; value must be a whole `number` in the range of `100..1000`. **Note**, when the `key` of this layout item is set to `\"title\"` within the layout's JSON definition, this value will be ignored in favour of the user's preferred title settings, as set in property inspector." } }, additionalProperties: false, description: "Defines how the font should be rendered. **Note**, when the `key` of this layout item is set to `\"title\"` within the layout's JSON definition, these values will be ignored in favour of the user's preferred title settings, as set in property inspector.", markdownDescription: "Defines how the font should be rendered. **Note**, when the `key` of this layout item is set to `\"title\"` within the layout's JSON definition, these values will be ignored in favour of the user's preferred title settings, as set in property inspector." }, "text-overflow": { type: "string", "enum": [ "clip", "ellipsis", "fade" ], description: "Defines how overflowing text should be rendered on the layout.\n- clip, truncates the text at the boundary of the element (default).\n- ellipsis, truncates the text prior to the boundary of the element, and adds an ellipsis (…) to the end.\n- fade, applies a fade-gradient over the end of the text.", "default": "ellipsis", markdownDescription: "Defines how overflowing text should be rendered on the layout.\n- clip, truncates the text at the boundary of the element (default).\n- ellipsis, truncates the text prior to the boundary of the element, and adds an ellipsis (…) to the end.\n- fade, applies a fade-gradient over the end of the text." }, value: { type: "string", description: "Text to be displayed.", markdownDescription: "Text to be displayed." }, background: { type: "string", description: "Background color represented as a named color, hexadecimal value, or gradient. Gradients can be defined by specifying multiple color-stops separated by commas, in the following format `[{offset}:{color}[,]]`.\n\n**Examples:**\n- \"pink\"\n- \"#204cfe\" (Elgato blue)\n- \"0:#ff0000,0.5:yellow,1:#00ff00\" (Gradient)", markdownDescription: "Background color represented as a named color, hexadecimal value, or gradient. Gradients can be defined by specifying multiple color-stops separated by commas, in the following format `[{offset}:{color}[,]]`.\n\n**Examples:**\n- \"pink\"\n- \"#204cfe\" (Elgato blue)\n- \"0:#ff0000,0.5:yellow,1:#00ff00\" (Gradient)" }, enabled: { type: "boolean", description: "Determines whether the item is enabled (i.e. visible); default is `true`.", markdownDescription: "Determines whether the item is enabled (i.e. visible); default is `true`." }, key: { type: "string", description: "Unique name used to identify the layout item. When calling `setFeedback` this value should be used as the key as part of the object that represents the feedback.\n\nNote: The `key` of the layout item cannot be changed at runtime.", pattern: "^[A-Za-z0-9\\-_]+$", errorMessage: "String must only contain alphanumeric characters (A-z, 0-9), hyphens (-), and underscores (_)", markdownDescription: "Unique name used to identify the layout item. When calling `setFeedback` this value should be used as the key as part of the object that represents the feedback.\n\nNote: The `key` of the layout item cannot be changed at runtime." }, opacity: { type: "number", "enum": [ 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1 ], description: "Defines the opacity of the item being shown based on a single-decimal value ranging from `0..1`, e.g. `0.1`, `0.2`, etc. with `0` being invisible and `1` being fully visible. Default is `1`.", markdownDescription: "Defines the opacity of the item being shown based on a single-decimal value ranging from `0..1`, e.g. `0.1`, `0.2`, etc. with `0` being invisible and `1` being fully visible. Default is `1`." }, rect: { type: "array", minItems: 4, items: [ { type: "number", description: "X coordinate of the rectangle.", minimum: 0, maximum: 200, title: "x", markdownDescription: "X coordinate of the rectangle." }, { type: "number", description: "Y coordinate of the rectangle.", minimum: 0, maximum: 100, title: "y", markdownDescription: "Y coordinate of the rectangle." }, { type: "number", description: "Width of the rectangle.", minimum: 0, maximum: 200, title: "width", markdownDescription: "Width of the rectangle." }, { type: "number", description: "Height of the rectangle.", minimum: 0, maximum: 100, title: "height", markdownDescription: "Height of the rectangle." } ], maxItems: 4, description: "Array defining the items coordinates in the format `[x, y, width, height]`; coordinates must be within canvas size of 200 x 100, e.g. [0, 0, 200, 100]. Items with the same `zOrder` must **not** have an overlapping `rect`.\n\nNote: The `rect` of the layout item cannot be changed at runtime.", markdownDescription: "Array defining the items coordinates in the format `[x, y, width, height]`; coordinates must be within canvas size of 200 x 100, e.g. [0, 0, 200, 100]. Items with the same `zOrder` must **not** have an overlapping `rect`.\n\nNote: The `rect` of the layout item cannot be changed at runtime." }, type: { type: "string", "const": "text", description: "Type of layout item this instance represents, e.g. \"pixmap\", \"bar\", etc.\n\nNote: The `type` of the layout item cannot be changed at runtime.", markdownDescription: "Type of layout item this instance represents, e.g. \"pixmap\", \"bar\", etc.\n\nNote: The `type` of the layout item cannot be changed at runtime." }, zOrder: { type: "number", description: "Z-order of the item, used to layer items within a layout; must be between 0-700. Items with the same `zOrder` must **not** have an overlapping `rect`. Default is `0`.", minimum: 0, maximum: 700, markdownDescription: "Z-order of the item, used to layer items within a layout; must be between 0-700. Items with the same `zOrder` must **not** have an overlapping `rect`. Default is `0`." } }, required: [ "key", "rect", "type" ], description: "Text layout item used to render text within a layout. **Note**, when adding a text item to the layout's JSON definition, setting the `key` to the `\"title\"` keyword will enable the user to specify the font's settings via the property inspector, and will cause `setTitle` to update this item.", markdownDescription: "Text layout item used to render text within a layout. **Note**, when adding a text item to the layout's JSON definition, setting the `key` to the `\"title\"` keyword will enable the user to specify the font's settings via the property inspector, and will cause `setTitle` to update this item." } }; var layout = { $id: $id$1, $schema: $schema$1, $ref: $ref$1, definitions: definitions$1 }; var $id = "@elgato/schemas/streamdeck/plugins/manifest@0.4.15"; var $schema = "http://json-schema.org/draft-07/schema#"; var $ref = "#/definitions/Manifest"; var definitions = { Manifest: { description: "Defines the plugin and available actions, and all information associated with them, including the plugin's entry point, all iconography, action default behavior, etc.", markdownDescription: "Defines the plugin and available actions, and all information associated with them, including the plugin's entry point, all iconography, action default behavior, etc.", allOf: [ { "if": { type: "object", properties: { Software: { type: "object", description: "Determines the Stream Deck software requirements for this plugin.", properties: { MinimumVersion: { type: "string", description: "Minimum version of the Stream Deck application required for this plugin to run.", "const": "6.4" } }, required: [ "MinimumVersion" ] } }, required: [ "Software" ] }, then: { type: "object", additionalProperties: false, properties: { $schema: { type: "string", description: "JSON schema responsible for describing the manifest's data format and validation.", markdownDescription: "JSON schema responsible for describing the manifest's data format and validation." }, Software: { type: "object", properties: { MinimumVersion: { type: "string", "const": "6.4", description: "Minimum version of the Stream Deck application required for this plugin to run.", markdownDescription: "Minimum version of the Stream Deck application required for this plugin to run." } }, required: [ "MinimumVersion" ], additionalProperties: false, description: "Determines the Stream Deck software requirements for this plugin.", markdownDescription: "Determines the Stream Deck software requirements for this plugin." }, ApplicationsToMonitor: { $ref: "#/definitions/ApplicationMonitoring", description: "Applications to monitor on Mac and Windows; upon a monitored application being launched or terminated, Stream Deck will notify the plugin.\n\n**Also see:**\n- `streamDeck.system.onApplicationDidLaunch(...)`\n- `streamDeck.system.onApplicationDidTerminate(...)`", markdownDescription: "Applications to monitor on Mac and Windows; upon a monitored application being launched or terminated, Stream Deck will notify the plugin.\n\n**Also see:**\n- `streamDeck.system.onApplicationDidLaunch(...)`\n- `streamDeck.system.onApplicationDidTerminate(...)`" }, Author: { type: "string", description: "Author's name that will be displayed on the plugin's product page on the Marketplace, e.g. \"Elgato\".", markdownDescription: "Author's name that will be displayed on the plugin's product page on the Marketplace, e.g. \"Elgato\"." }, Category: { type: "string", description: "Defines the actions list group, providing a natural grouping of the plugin's actions with the Stream Deck application's action list.\n\nNote: `Category` should be distinctive and synonymous with your plugin, and it is therefore recommended that this be the same value as the plugin's `Name` field. When `undefined`, the actions will be available under the \"Custom\" group.", markdownDescription: "Defines the actions list group, providing a natural grouping of the plugin's actions with the Stream Deck application's action list.\n\nNote: `Category` should be distinctive and synonymous with your plugin, and it is therefore recommended that this be the same value as the plugin's `Name` field. When `undefined`, the actions will be available under the \"Custom\" group." }, CategoryIcon: { type: "string", description: "Path to the image, with the **file extension omitted**, that will be displayed next to the action list group within the Stream Deck application. The icon should accurately represent the plugin, and enable users to quickly identify the plugin.\n\nImage must be:\n- PNG or SVG format.\n- Provided in two sizes, 28 × 28 px and 56 × 56 px (@2x).\n- Monochromatic, with foreground color of #FFFFFF and a transparent background.\n\n**Examples**:\n- assets/category-icon\n- imgs/category", filePath: { extensions: [ ".svg", ".png" ], includeExtension: false }, imageDimensions: [ 28, 28 ], markdownDescription: "Path to the image, with the **file extension omitted**, that will be displayed next to the action list group within the Stream Deck application. The icon should accurately represent the plugin, and enable users to quickly identify the plugin.\n\nImage must be:\n- PNG or SVG format.\n- Provided in two sizes, 28 × 28 px and 56 × 56 px (@2x).\n- Monochromatic, with foreground color of #FFFFFF and a transparent background.\n\n**Examples**:\n- assets/category-icon\n- imgs/category", pattern: "^(?![~\\.]*[\\\\\\/]+)(?!.*\\.(([Ss][Vv][Gg])|([Pp][Nn][Gg]))$).*$", errorMessage: "String must reference .svg, or .png file in the plugin directory, with the file extension omitted." }, CodePath: { type: "string", description: "Path to the plugin's main entry point; this is executed when the Stream Deck application starts the plugin.\n\n**Examples**:\n- index.js\n- Counter\n- Counter.exe", filePath: true, markdownDescription: "Path to the plugin's main entry point; this is executed when the Stream Deck application starts the plugin.\n\n**Examples**:\n- index.js\n- Counter\n- Counter.exe", pattern: "^(?![~\\.]*[\\\\\\/]+).*$", errorMessage: "String must reference file in the plugin directory." }, CodePathMac: { type: "string", description: "Path to the plugin's entry point specific to macOS; this is executed when the Stream Deck application starts the plugin on macOS.\n\n**Examples:**\n- index.js\n- Counter", filePath: true, markdownDescription: "Path to the plugin's entry point specific to macOS; this is executed when the Stream Deck application starts the plugin on macOS.\n\n**Examples:**\n- index.js\n- Counter", pattern: "^(?![~\\.]*[\\\\\\/]+).*$", errorMessage: "String must reference file in the plugin directory." }, CodePathWin: { type: "string", description: "Path to the plugin's entry point specific to Windows; this is executed when the Stream Deck application starts the plugin on Windows.\n\n**Examples:**\n- index.js\n- Counter.exe", filePath: true, markdownDescription: "Path to the plugin's entry point specific to Windows; this is executed when the Stream Deck application starts the plugin on Windows.\n\n**Examples:**\n- index.js\n- Counter.exe", pattern: "^(?![~\\.]*[\\\\\\/]+).*$", errorMessage: "String must reference file in the plugin directory." }, DefaultWindowSize: { type: "array", items: { type: "number" }, minItems: 2, maxItems: 2, description: "Size of a window (`[width, height]`) opened when calling `window.open()` from the property inspector. Default value is `[500, 650]`.", examples: [ [ 500, 650 ] ], markdownDescription: "Size of a window (`[width, height]`) opened when calling `window.open()` from the property inspector. Default value is `[500, 650]`." }, Description: { type: "string", description: "Description of the plugin, and the functionality it provides, that will be displayed on the plugin's product page on the Marketplace.", markdownDescription: "Description of the plugin, and the functionality it provides, that will be displayed on the plugin's product page on the Marketplace." }, Icon: { type: "string", description: "Path to the image, with the **file extension omitted**, that will be displayed within Stream Deck's preferences.\n\nImage must be:\n- PNG format.\n- Provided in two sizes, 256 × 256 px and 512 × 512 px (@2x).\n\n**Examples:**\n- assets/plugin-icon\n- imgs/plugin", filePath: { extensions: [ ".png" ], includeExtension: false }, imageDimensions: [ 256, 256 ], markdownDescription: "Path to the image, with the **file extension omitted**, that will be displayed within Stream Deck's preferences.\n\nImage must be:\n- PNG format.\n- Provided in two sizes, 256 × 256 px and 512 × 512 px (@2x).\n\n**Examples:**\n- assets/plugin-icon\n- imgs/plugin", pattern: "^(?![~\\.]*[\\\\\\/]+)(?!.*\\.(([Pp][Nn][Gg]))$).*$", errorMessage: "String must reference .png file in the plugin directory, with the file extension omitted." }, Name: { type: "string", description: "Name of the plugin, e.g. \"Wave Link\", \"Camera Hub\", \"Control Center\", etc.", markdownDescription: "Name of the plugin, e.g. \"Wave Link\", \"Camera Hub\", \"Control Center\", etc." }, OS: { type: "array", items: { $ref: "#/definitions/OS" }, minItems: 1, maxItems: 2, description: "Collection of operating systems, and their minimum required versions, that the plugin supports.", markdownDescription: "Collection of operating systems, and their minimum required versions, that the plugin supports." }, PropertyInspectorPath: { type: "string", description: "Optional path to the HTML file that represents the property inspector for all actions; this is displayed to the user in the Stream Deck application when they add an action, allowing them to configure the action's settings.\n\nNote: Path should be relative to the root of the plugin's folder, with no leading slash.\n\n **Examples:**\n- mute.html\n- actions/join-voice-chat/settings.html\n\n**Also see:**\n- `streamDeck.ui.onSendToPlugin(...)`", filePath: { extensions: [ ".htm", ".html" ], includeExtension: true }, markdownDescription: "Optional path to the HTML file that represents the property inspector for all actions; this is displayed to the user in the Stream Deck application when they add an action, allowing them to configure the action's settings.\n\nNote: Path should be relative to the root of the plugin's folder, with no leading slash.\n\n **Examples:**\n- mute.html\n- actions/join-voice-chat/settings.html\n\n**Also see:**\n- `streamDeck.ui.onSendToPlugin(...)`", pattern: "^(?![~\\.]*[\\\\\\/]+).*\\.(([Hh][Tt][Mm])|([Hh][Tt][Mm][Ll]))$", errorMessage: "String must reference .htm, or .html file in the plugin directory." }, URL: { type: "string", description: "Link to the plugin's website.\n\n**Examples**:\n- https://elgato.com\n- https://corsair.com", markdownDescription: "Link to the plugin's website.\n\n**Examples**:\n- https://elgato.com\n- https://corsair.com" }, UUID: { type: "string", description: "Unique identifier of the plugin, represented in reverse-DNS format.\n\n**Allowed characters:**\n- Lowercase alphanumeric characters (a-z, 0-9)\n- Hyphens (-)\n- Periods (.)\n\n**Examples:**\n- com.elgato.wavelink\n- com.elgato.discord\n- tv.twitch", pattern: "^([a-z0-9-]+)(\\.[a-z0-9-]+)+$", errorMessage: "String must be in reverse DNS format, and must only contain lowercase alphanumeric characters (a-z, 0-9), hyphens (-), and periods (.)", markdownDescription: "Unique identifier of the plugin, represented in reverse-DNS format.\n\n**Allowed characters:**\n- Lowercase alphanumeric characters (a-z, 0-9)\n- Hyphens (-)\n- Periods (.)\n\n**Examples:**\n- com.elgato.wavelink\n- com.elgato.discord\n- tv.twitch" }, Version: { type: "string", description: "Version of the plugin, in the format `{major}.{minor}.{patch}.{build}`.", examples: [ "1.0.0.0" ], pattern: "^(0|[1-9]\\d*)(\\.(0|[1-9]\\d*)){3}$", errorMessage: "String must use format {major}.{mi