brighterscript 1.0.0-alpha.40 → 1.0.0-alpha.42

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 (211) hide show
  1. package/CHANGELOG.md +67 -1
  2. package/dist/AstValidationSegmenter.d.ts +3 -0
  3. package/dist/AstValidationSegmenter.js +62 -2
  4. package/dist/AstValidationSegmenter.js.map +1 -1
  5. package/dist/BsConfig.d.ts +7 -7
  6. package/dist/CrossScopeValidator.js +3 -3
  7. package/dist/CrossScopeValidator.js.map +1 -1
  8. package/dist/DiagnosticFilterer.d.ts +5 -1
  9. package/dist/DiagnosticFilterer.js +92 -33
  10. package/dist/DiagnosticFilterer.js.map +1 -1
  11. package/dist/DiagnosticManager.js +12 -9
  12. package/dist/DiagnosticManager.js.map +1 -1
  13. package/dist/DiagnosticMessages.d.ts +374 -225
  14. package/dist/DiagnosticMessages.js +641 -424
  15. package/dist/DiagnosticMessages.js.map +1 -1
  16. package/dist/DiagnosticSeverityAdjuster.js +4 -0
  17. package/dist/DiagnosticSeverityAdjuster.js.map +1 -1
  18. package/dist/LanguageServer.js +0 -7
  19. package/dist/LanguageServer.js.map +1 -1
  20. package/dist/PluginInterface.js +2 -0
  21. package/dist/PluginInterface.js.map +1 -1
  22. package/dist/Program.d.ts +22 -1
  23. package/dist/Program.js +206 -49
  24. package/dist/Program.js.map +1 -1
  25. package/dist/SymbolTable.d.ts +3 -0
  26. package/dist/SymbolTable.js +19 -1
  27. package/dist/SymbolTable.js.map +1 -1
  28. package/dist/XmlScope.js +3 -6
  29. package/dist/XmlScope.js.map +1 -1
  30. package/dist/astUtils/creators.d.ts +35 -3
  31. package/dist/astUtils/creators.js +52 -1
  32. package/dist/astUtils/creators.js.map +1 -1
  33. package/dist/astUtils/reflection.d.ts +4 -2
  34. package/dist/astUtils/reflection.js +12 -3
  35. package/dist/astUtils/reflection.js.map +1 -1
  36. package/dist/astUtils/visitors.d.ts +3 -2
  37. package/dist/astUtils/visitors.js +37 -14
  38. package/dist/astUtils/visitors.js.map +1 -1
  39. package/dist/astUtils/visitors.spec.js +172 -6
  40. package/dist/astUtils/visitors.spec.js.map +1 -1
  41. package/dist/bscPlugin/codeActions/CodeActionsProcessor.d.ts +0 -1
  42. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +0 -13
  43. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  44. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +2 -1
  45. package/dist/bscPlugin/completions/CompletionsProcessor.js +5 -5
  46. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
  47. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +106 -2
  48. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -1
  49. package/dist/bscPlugin/hover/HoverProcessor.spec.js +51 -3
  50. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
  51. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.d.ts +1 -0
  52. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js +149 -0
  53. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -1
  54. package/dist/bscPlugin/validation/BrsFileValidator.js +15 -8
  55. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  56. package/dist/bscPlugin/validation/BrsFileValidator.spec.js +80 -9
  57. package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -1
  58. package/dist/bscPlugin/validation/ScopeValidator.d.ts +9 -0
  59. package/dist/bscPlugin/validation/ScopeValidator.js +155 -79
  60. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  61. package/dist/bscPlugin/validation/ScopeValidator.spec.js +1269 -35
  62. package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -1
  63. package/dist/bscPlugin/validation/XmlFileValidator.js +0 -8
  64. package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -1
  65. package/dist/diagnosticUtils.js +6 -5
  66. package/dist/diagnosticUtils.js.map +1 -1
  67. package/dist/files/BrsFile.Class.spec.js +87 -28
  68. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  69. package/dist/files/BrsFile.d.ts +1 -0
  70. package/dist/files/BrsFile.js +20 -8
  71. package/dist/files/BrsFile.js.map +1 -1
  72. package/dist/files/BrsFile.spec.js +133 -34
  73. package/dist/files/BrsFile.spec.js.map +1 -1
  74. package/dist/files/XmlFile.js +2 -2
  75. package/dist/files/XmlFile.js.map +1 -1
  76. package/dist/files/XmlFile.spec.js +3 -20
  77. package/dist/files/XmlFile.spec.js.map +1 -1
  78. package/dist/globalCallables.js +1 -1
  79. package/dist/index.d.ts +8 -3
  80. package/dist/index.js +24 -16
  81. package/dist/index.js.map +1 -1
  82. package/dist/interfaces.d.ts +18 -0
  83. package/dist/interfaces.js.map +1 -1
  84. package/dist/lexer/Lexer.js +17 -11
  85. package/dist/lexer/Lexer.js.map +1 -1
  86. package/dist/lexer/Lexer.spec.js +21 -3
  87. package/dist/lexer/Lexer.spec.js.map +1 -1
  88. package/dist/lexer/TokenKind.d.ts +9 -0
  89. package/dist/lexer/TokenKind.js +11 -1
  90. package/dist/lexer/TokenKind.js.map +1 -1
  91. package/dist/parser/AstNode.d.ts +2 -1
  92. package/dist/parser/AstNode.js +3 -2
  93. package/dist/parser/AstNode.js.map +1 -1
  94. package/dist/parser/Expression.d.ts +22 -2
  95. package/dist/parser/Expression.js +76 -48
  96. package/dist/parser/Expression.js.map +1 -1
  97. package/dist/parser/Parser.Class.spec.js +3 -3
  98. package/dist/parser/Parser.Class.spec.js.map +1 -1
  99. package/dist/parser/Parser.js +73 -61
  100. package/dist/parser/Parser.js.map +1 -1
  101. package/dist/parser/Parser.spec.js +198 -15
  102. package/dist/parser/Parser.spec.js.map +1 -1
  103. package/dist/parser/SGParser.js +9 -9
  104. package/dist/parser/SGParser.js.map +1 -1
  105. package/dist/parser/SGParser.spec.js +3 -2
  106. package/dist/parser/SGParser.spec.js.map +1 -1
  107. package/dist/parser/Statement.d.ts +16 -18
  108. package/dist/parser/Statement.js +136 -82
  109. package/dist/parser/Statement.js.map +1 -1
  110. package/dist/parser/tests/controlFlow/If.spec.js +1 -1
  111. package/dist/parser/tests/controlFlow/If.spec.js.map +1 -1
  112. package/dist/parser/tests/expression/ArrayLiterals.spec.js +3 -3
  113. package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +1 -1
  114. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +3 -3
  115. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +1 -1
  116. package/dist/parser/tests/expression/Call.spec.js +9 -9
  117. package/dist/parser/tests/expression/Call.spec.js.map +1 -1
  118. package/dist/parser/tests/expression/Indexing.spec.js +3 -3
  119. package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
  120. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +1 -1
  121. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
  122. package/dist/parser/tests/expression/TernaryExpression.spec.js +353 -71
  123. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
  124. package/dist/parser/tests/statement/Dim.spec.js +10 -3
  125. package/dist/parser/tests/statement/Dim.spec.js.map +1 -1
  126. package/dist/parser/tests/statement/Enum.spec.js +2 -2
  127. package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
  128. package/dist/parser/tests/statement/Increment.spec.js +3 -5
  129. package/dist/parser/tests/statement/Increment.spec.js.map +1 -1
  130. package/dist/parser/tests/statement/PrintStatement.spec.js +3 -3
  131. package/dist/parser/tests/statement/TryCatch.spec.js +1 -1
  132. package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
  133. package/dist/roku-types/data.json +430 -235
  134. package/dist/roku-types/index.d.ts +30 -37
  135. package/dist/types/ArrayType.d.ts +2 -0
  136. package/dist/types/ArrayType.js +14 -4
  137. package/dist/types/ArrayType.js.map +1 -1
  138. package/dist/types/AssociativeArrayType.d.ts +1 -0
  139. package/dist/types/AssociativeArrayType.js +1 -0
  140. package/dist/types/AssociativeArrayType.js.map +1 -1
  141. package/dist/types/BaseFunctionType.d.ts +1 -0
  142. package/dist/types/BaseFunctionType.js +1 -0
  143. package/dist/types/BaseFunctionType.js.map +1 -1
  144. package/dist/types/BooleanType.d.ts +1 -0
  145. package/dist/types/BooleanType.js +1 -0
  146. package/dist/types/BooleanType.js.map +1 -1
  147. package/dist/types/BscType.d.ts +8 -1
  148. package/dist/types/BscType.js +12 -3
  149. package/dist/types/BscType.js.map +1 -1
  150. package/dist/types/BuiltInInterfaceAdder.js +10 -6
  151. package/dist/types/BuiltInInterfaceAdder.js.map +1 -1
  152. package/dist/types/ClassType.d.ts +1 -0
  153. package/dist/types/ClassType.js +5 -2
  154. package/dist/types/ClassType.js.map +1 -1
  155. package/dist/types/ComponentType.d.ts +11 -4
  156. package/dist/types/ComponentType.js +100 -8
  157. package/dist/types/ComponentType.js.map +1 -1
  158. package/dist/types/DoubleType.d.ts +2 -0
  159. package/dist/types/DoubleType.js +2 -0
  160. package/dist/types/DoubleType.js.map +1 -1
  161. package/dist/types/DynamicType.d.ts +1 -0
  162. package/dist/types/DynamicType.js +4 -0
  163. package/dist/types/DynamicType.js.map +1 -1
  164. package/dist/types/EnumType.d.ts +2 -0
  165. package/dist/types/EnumType.js +20 -2
  166. package/dist/types/EnumType.js.map +1 -1
  167. package/dist/types/FloatType.d.ts +2 -0
  168. package/dist/types/FloatType.js +2 -0
  169. package/dist/types/FloatType.js.map +1 -1
  170. package/dist/types/InheritableType.d.ts +1 -0
  171. package/dist/types/InheritableType.js +14 -1
  172. package/dist/types/InheritableType.js.map +1 -1
  173. package/dist/types/IntegerType.d.ts +2 -0
  174. package/dist/types/IntegerType.js +2 -0
  175. package/dist/types/IntegerType.js.map +1 -1
  176. package/dist/types/InterfaceType.js +4 -1
  177. package/dist/types/InterfaceType.js.map +1 -1
  178. package/dist/types/InvalidType.d.ts +2 -1
  179. package/dist/types/InvalidType.js +1 -0
  180. package/dist/types/InvalidType.js.map +1 -1
  181. package/dist/types/LongIntegerType.d.ts +2 -0
  182. package/dist/types/LongIntegerType.js +2 -0
  183. package/dist/types/LongIntegerType.js.map +1 -1
  184. package/dist/types/ObjectType.d.ts +1 -0
  185. package/dist/types/ObjectType.js +1 -0
  186. package/dist/types/ObjectType.js.map +1 -1
  187. package/dist/types/ReferenceType.d.ts +20 -2
  188. package/dist/types/ReferenceType.js +106 -5
  189. package/dist/types/ReferenceType.js.map +1 -1
  190. package/dist/types/StringType.d.ts +1 -0
  191. package/dist/types/StringType.js +1 -0
  192. package/dist/types/StringType.js.map +1 -1
  193. package/dist/types/TypedFunctionType.d.ts +1 -1
  194. package/dist/types/TypedFunctionType.js +8 -2
  195. package/dist/types/TypedFunctionType.js.map +1 -1
  196. package/dist/types/UninitializedType.d.ts +2 -0
  197. package/dist/types/UninitializedType.js +5 -6
  198. package/dist/types/UninitializedType.js.map +1 -1
  199. package/dist/types/UnionType.js +8 -2
  200. package/dist/types/UnionType.js.map +1 -1
  201. package/dist/types/VoidType.d.ts +4 -1
  202. package/dist/types/VoidType.js +5 -0
  203. package/dist/types/VoidType.js.map +1 -1
  204. package/dist/types/helpers.js +8 -1
  205. package/dist/types/helpers.js.map +1 -1
  206. package/dist/util.d.ts +15 -5
  207. package/dist/util.js +281 -14
  208. package/dist/util.js.map +1 -1
  209. package/dist/validators/ClassValidator.js +13 -5
  210. package/dist/validators/ClassValidator.js.map +1 -1
  211. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  {
2
- "generatedDate": "2024-08-23T13:39:25.188Z",
2
+ "generatedDate": "2024-12-12T20:09:24.643Z",
3
3
  "nodes": {
4
4
  "animation": {
5
5
  "description": "Extends [**AnimationBase**](https://developer.roku.com/docs/references/scenegraph/abstract-nodes/animationbase.md\n\nThe Animation node class provides animations of renderable nodes, by applying interpolator functions to the values in specified renderable node fields. For an animation to take effect, an Animation node definition must include a child field interpolator node ([FloatFieldInterpolator](https://developer.roku.com/docs/references/scenegraph/animation-nodes/floatfieldinterpolator.md\"FloatFieldInterpolator\"), [Vector2DFieldInterpolator](https://developer.roku.com/docs/references/scenegraph/animation-nodes/vector2dfieldinterpolator.md\"Vector2DFieldInterpolator\"), [ColorFieldInterpolator](https://developer.roku.com/docs/references/scenegraph/animation-nodes/colorfieldinterpolator.md\"ColorFieldInterpolator\")) definition for each renderable node field that is animated.\n\nThe Animation node class provides a simple linear interpolator function, where the animation takes place smoothly and simply from beginning to end. The Animation node class also provides several more complex interpolator functions to allow custom animation effects. For example, you can move a graphic image around the screen at differing speeds and curved trajectories at different times in the animation by specifying the appropriate function in the easeFunction field (quadratic and exponential are two examples of functions that can be specified). The interpolator functions are divided into two parts: the beginning of the animation (ease-in), and the end of the animation (ease-out). You can apply a specified interpolator function to either or both ease-in and ease-out, or specify no function for either or both (which is the linear function). You can also change the portion of the animation that is ease-in and ease-out to arbitrary fractional values for a quadratic interpolator function applied to both ease-in and ease-out.",
@@ -40,7 +40,7 @@
40
40
  {
41
41
  "accessPermission": "READ_WRITE",
42
42
  "default": "false",
43
- "description": "Set to true to skip animations on lower performing Roku devices (Paolo, Giga, Jackson, Tyler, and Sugarland). See \\[Roku Devices\\](/docs/specs/hardware.md#current-models \"Roku Devices\") for model numbers and code names. When an Animation has optional set to true, setting the control field to start will cause the state field to change to running and immediately change again to finished. These state changes allow any logic tied to state field observers that run at the start and end of the Animation to be properly called",
43
+ "description": "Set to true to skip animations on lower performing Roku devices. See \\[Roku Devices\\](/docs/specs/hardware.md#current-models \"Roku Devices\") for model numbers and code names. When an Animation has optional set to true, setting the control field to start will cause the state field to change to running and immediately change again to finished. These state changes allow any logic tied to state field observers that run at the start and end of the Animation to be properly called",
44
44
  "name": "optional",
45
45
  "type": "boolean"
46
46
  },
@@ -57,7 +57,7 @@
57
57
  "url": "https://developer.roku.com/docs/references/scenegraph/animation-nodes/animation.md"
58
58
  },
59
59
  "animationbase": {
60
- "description": "Extends [**Node**](https://developer.roku.com/docs/references/scenegraph/node.md\"**Node**\")\n\nAnimationBase is an abstract node class that contains the fields common to the [Animation](https://developer.roku.com/docs/references/scenegraph/animation-nodes/animation.md\"Animation\"), [SequentialAnimation](https://developer.roku.com/docs/references/scenegraph/animation-nodes/sequentialanimation.md\"SequentialAnimation\"), and [ParallelAnimation](https://developer.roku.com/docs/references/scenegraph/animation-nodes/parallelanimation.md\"ParallelAnimation\") nodes. The purpose of the AnimationBase node class is to provide the basic functionality needed to animate screen elements, such as moving them across the display screen, fading them in and out of view, or changing their color. All node classes extended from AnimationBase require the use of the interpolator node classes [FloatFieldInterpolator](https://developer.roku.com/docs/references/scenegraph/animation-nodes/floatfieldinterpolator.md\"FloatFieldInterpolator\"), [Vector2DFieldInterpolator](https://developer.roku.com/docs/references/scenegraph/animation-nodes/vector2dfieldinterpolator.md\"Vector2DFieldInterpolator\"), and [ColorFieldInterpolator](https://developer.roku.com/docs/references/scenegraph/animation-nodes/colorfieldinterpolator.md\"ColorFieldInterpolator\") as child nodes to achieve a specific animation effect.\n\n> AnimationBase is not meant to be instantiated directly by channel code",
60
+ "description": "Extends [**Node**](https://developer.roku.com/docs/references/scenegraph/node.md\"**Node**\")\n\nAnimationBase is an abstract node class that contains the fields common to the [Animation](https://developer.roku.com/docs/references/scenegraph/animation-nodes/animation.md\"Animation\"), [SequentialAnimation](https://developer.roku.com/docs/references/scenegraph/animation-nodes/sequentialanimation.md\"SequentialAnimation\"), and [ParallelAnimation](https://developer.roku.com/docs/references/scenegraph/animation-nodes/parallelanimation.md\"ParallelAnimation\") nodes. The purpose of the AnimationBase node class is to provide the basic functionality needed to animate screen elements, such as moving them across the display screen, fading them in and out of view, or changing their color. All node classes extended from AnimationBase require the use of the interpolator node classes [FloatFieldInterpolator](https://developer.roku.com/docs/references/scenegraph/animation-nodes/floatfieldinterpolator.md\"FloatFieldInterpolator\"), [Vector2DFieldInterpolator](https://developer.roku.com/docs/references/scenegraph/animation-nodes/vector2dfieldinterpolator.md\"Vector2DFieldInterpolator\"), and [ColorFieldInterpolator](https://developer.roku.com/docs/references/scenegraph/animation-nodes/colorfieldinterpolator.md\"ColorFieldInterpolator\") as child nodes to achieve a specific animation effect.\n\n> AnimationBase is not meant to be instantiated directly by app code",
61
61
  "events": [],
62
62
  "extends": {
63
63
  "name": "Node",
@@ -98,7 +98,7 @@
98
98
  "url": "https://developer.roku.com/docs/references/scenegraph/abstract-nodes/animationbase.md"
99
99
  },
100
100
  "arraygrid": {
101
- "description": "Extends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\"**Group**\")\n\nThe ArrayGrid node class is an abstract base class that provides functionality to the list and grid node classes that are extended from ArrayGrid. The field value settings and their effect in this abstract base class depend in many cases on whether a list, or a grid, node class is extended from ArrayGrid, and the specific type of list or grid.\n\nThe following node classes extended from ArrayGrid derive their basic functionality from the ArrayGrid abstract node class:\n\n* [LabelList](https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/labellist.md\"LabelList\")\n* [MarkupList](https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/markuplist.md\"MarkupList\")\n* [PosterGrid](https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/postergrid.md\"PosterGrid\")\n* [MarkupGrid](https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/markupgrid.md\"MarkupGrid\")\n* [RowList](https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/rowlist.md\"RowList\")\n\n> ArrayGrid is not meant to be instantiated directly by channel code",
101
+ "description": "Extends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\"**Group**\")\n\nThe ArrayGrid node class is an abstract base class that provides functionality to the list and grid node classes that are extended from ArrayGrid. The field value settings and their effect in this abstract base class depend in many cases on whether a list, or a grid, node class is extended from ArrayGrid, and the specific type of list or grid.\n\nThe following node classes extended from ArrayGrid derive their basic functionality from the ArrayGrid abstract node class:\n\n* [LabelList](https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/labellist.md\"LabelList\")\n* [MarkupList](https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/markuplist.md\"MarkupList\")\n* [PosterGrid](https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/postergrid.md\"PosterGrid\")\n* [MarkupGrid](https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/markupgrid.md\"MarkupGrid\")\n* [RowList](https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/rowlist.md\"RowList\")\n\n> ArrayGrid is not meant to be instantiated directly by app code",
102
102
  "events": [],
103
103
  "extends": {
104
104
  "name": "Group",
@@ -641,7 +641,7 @@
641
641
  "url": "https://developer.roku.com/en-ca/docs/references/scenegraph/media-playback-nodes/video.md#ui-fields"
642
642
  },
643
643
  "busyspinner": {
644
- "description": "Extends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\n\nThe BusySpinner node class is a simple widget that displays a continuously rotating bitmap. Since the BusySpinner node class uses an internal Poster node instance, the busy spinner bitmap can be specified by setting the internal Poster node uri field.\n\n[SimpleBusySpinner](https://github.com/rokudev/samples/tree/master/ux%20components/widgets) is a sample channel that demonstrates usage of the BusySpinner.\n\n> Not all Roku Player hardware versions support arbitrary rotations. In particular, some hardware versions only support 90 degree rotation increments. In those cases, the icon will step through 90 degree, 180 degree, 270 degree and back to 0 degree rotations, rather than spin smoothly.",
644
+ "description": "Extends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\n\nThe BusySpinner node class is a simple widget that displays a continuously rotating bitmap. Since the BusySpinner node class uses an internal Poster node instance, the busy spinner bitmap can be specified by setting the internal Poster node uri field.\n\n[SimpleBusySpinner](https://github.com/rokudev/samples/tree/master/ux%20components/widgets) is a sample app that demonstrates usage of the BusySpinner.\n\n> Not all Roku Player hardware versions support arbitrary rotations. In particular, some hardware versions only support 90 degree rotation increments. In those cases, the icon will step through 90 degree, 180 degree, 270 degree and back to 0 degree rotations, rather than spin smoothly.",
645
645
  "events": [],
646
646
  "extends": {
647
647
  "name": "Group",
@@ -918,7 +918,7 @@
918
918
  "url": "https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/buttongroup.md"
919
919
  },
920
920
  "channelstore": {
921
- "description": "Extends [**Node**](https://developer.roku.com/docs/references/scenegraph/node.md\n\nThe **ChannelStore** node class provides an interface to the Roku Channel Store. It provides functionality equivalent to the [roChannelStore](https://developer.roku.com/docs/references/brightscript/interfaces/ifchannelstore.md component. In general, the **ChannelStore** node class allows developers to issue one of several commands, which involves the following steps:\n\n1. Set the fields containing the data needed by the command (optional).\n2. Set up an observer of the result field associated with the command.\n3. Set the command field to the appropriate string to start the command execution.\n4. The field associated with the command is set to a **ContentNode** object containing the results of the command.\n\nEach of the commands starts a sequence of actions associated with the financial transaction that are handled by the Roku OS outside of control or monitoring by the channel SceneGraph markup. The SceneGraph markup merely initiates the purchase and receives a final result.",
921
+ "description": "Extends [**Node**](https://developer.roku.com/docs/references/scenegraph/node.md\n\nThe **ChannelStore** node class provides an interface to the Streaming Store. It provides functionality equivalent to the [roChannelStore](https://developer.roku.com/docs/references/brightscript/interfaces/ifchannelstore.md component. In general, the **ChannelStore** node class allows developers to issue one of several commands, which involves the following steps:\n\n1. Set the fields containing the data needed by the command (optional).\n2. Set up an observer of the result field associated with the command.\n3. Set the command field to the appropriate string to start the command execution.\n4. The field associated with the command is set to a **ContentNode** object containing the results of the command.\n\nEach of the commands starts a sequence of actions associated with the financial transaction that are handled by the Roku OS outside of control or monitoring by the app SceneGraph markup. The SceneGraph markup merely initiates the purchase and receives a final result.",
922
922
  "events": [],
923
923
  "extends": {
924
924
  "name": "Node",
@@ -935,14 +935,14 @@
935
935
  {
936
936
  "accessPermission": "READ_WRITE",
937
937
  "default": "",
938
- "description": "Specifies the command to be executed: \\* \\[getUserData\\](#getuserdata) \\* \\[getUserRegionData\\](#getuserregiondata) () \\* \\[getCatalog\\](#getcatalog) and \\[getStoreCatalog\\](#getstorecatalog) \\* \\[doOrder\\](#doorder) \\* \\[getPurchases\\](#getpurchases) and \\[getAllPurchases\\](#getallpurchases) \\* \\[storeChannelCredData\\](#storechannelcreddata) \\* \\[getChannelCred\\](#getchannelcred) \\* \\[getDeviceAttestationToken\\](#getdeviceattestationtoken) (\\_Available since Roku OS 11.5\\_) \\* \\[requestPartnerOrder\\](#requestpartnerorder) \\* \\[confirmPartnerOrder\\](#confirmpartnerorder)",
938
+ "description": "Specifies the command to be executed: \\* \\[getUserData\\](#getuserdata) \\* \\[getUserRegionData\\](#getuserregiondata) () \\* \\[getCatalog\\](#getcatalog) and \\[getStoreCatalog\\](#getstorecatalog) \\* \\[doOrder\\](#doorder) \\* \\[getPurchases\\](#getpurchases) and \\[getAllPurchases\\](#getallpurchases) \\* \\[storeChannelCredData\\](#storechannelcreddata) \\* \\[getChannelCred\\](#getchannelcred) \\* \\[getDeviceAttestationToken\\](#getdeviceattestationtoken) \\* \\[requestPartnerOrder\\](#requestpartnerorder) \\* \\[confirmPartnerOrder\\](#confirmpartnerorder)",
939
939
  "name": "command",
940
940
  "type": "string"
941
941
  },
942
942
  {
943
943
  "accessPermission": "READ_WRITE",
944
944
  "default": "invalid",
945
- "description": "Confirms the product being ordered from a TVOD channel. The order contains the following fields:\n\n| Field | Type | Description |\n| --- | --- | --- |\n| orderId | string | The orderID returned by Roku in the [RequestPartnerOrderStatus](#requestpartnerorderstatus) content node. |\n| code | string | The product identifier. |\n| priceDisplay | string | The original price of the product. Do not include a currency symbol (for example, set this to \"3.99\" instead of \"$3.99\"). |\n| price | string | The final price of the product, including any discounts. Do not include a currency symbol (for example, set this to \"3.99\" instead of \"$3.99\"). |\n| title | string | The name of the product to be displayed on customers' invoices. |\n| couponCode | string | An alphanumeric string entered by the customer to receive a discounted price on the product. |\n| contentKey | string | The publisher-specific SKU (or other unique identifier) for the product. |",
945
+ "description": "Confirms the product being ordered from a TVOD app. The order contains the following fields:\n\n| Field | Type | Description |\n| --- | --- | --- |\n| orderId | string | The orderID returned by Roku in the [RequestPartnerOrderStatus](#requestpartnerorderstatus) content node. |\n| code | string | The product identifier. |\n| priceDisplay | string | The original price of the product. Do not include a currency symbol (for example, set this to \"3.99\" instead of \"$3.99\"). |\n| price | string | The final price of the product, including any discounts. Do not include a currency symbol (for example, set this to \"3.99\" instead of \"$3.99\"). |\n| title | string | The name of the product to be displayed on customers' invoices. |\n| couponCode | string | An alphanumeric string entered by the customer to receive a discounted price on the product. |\n| contentKey | string | The publisher-specific SKU (or other unique identifier) for the product. |",
946
946
  "name": "confirmPartnerOrder",
947
947
  "type": "ContentNode"
948
948
  },
@@ -963,14 +963,14 @@
963
963
  {
964
964
  "accessPermission": "READ_WRITE",
965
965
  "default": "false",
966
- "description": "Enables a test mode for the \\*\\*ChannelStore\\*\\* node. The test mode disables communication by the ChannelStore node with the Roku Channel Store server, and it causes responses to asynchronous queries and operations to come from XML test configuration files rather than the server. To use this test method, create a \\*\\*csFake\\*\\* folder and add the following XML files to it in order to simulate web service request and response data: \\* \\*\\*csfake/GetCatalog.xml\\*\\*: Simulates the list of products available for purchase in the channel. \\* \\*\\*csfake/GetPurchases.xml\\*\\*: Simulates the list of products already purchased by the user. \\* \\*\\*csfake/PlaceOrder.xml\\*\\*: Contains information about the product to be ordered. \\* \\*\\*csfake/CheckOrder.xml\\*\\*: Verifies the validity of the order placed. For example, if the \\*\\*order\\*\\* and \\*\\*id\\*\\* values in the PlaceOrder and CheckOrder XML files do not match, the fake server will report an error in the order processing. See the \\[SimpleChannelStore sample channel\\](https://github.com/rokudev/samples/tree/master/roku%20pay/SimpleChannelStore/csfake) for how to use this testing method. The \\*\\*fakeServer\\*\\* field must be set to false in a published channel to allow actual \\[In-Channel Product\\](/docs/developer-program/roku-pay/quickstart/in-channel-products.md) purchases by users. It is recommended that developers use \\[billing testing\\](/docs/developer-program/roku-pay/testing/billing-testing.md) instead of the fakeServer.",
966
+ "description": "Enables a test mode for the \\*\\*ChannelStore\\*\\* node. The test mode disables communication by the ChannelStore node with the Streaming Store server, and it causes responses to asynchronous queries and operations to come from XML test configuration files rather than the server. To use this test method, create a \\*\\*csFake\\*\\* folder and add the following XML files to it in order to simulate web service request and response data: \\* \\*\\*csfake/GetCatalog.xml\\*\\*: Simulates the list of products available for purchase in the app. \\* \\*\\*csfake/GetPurchases.xml\\*\\*: Simulates the list of products already purchased by the user. \\* \\*\\*csfake/PlaceOrder.xml\\*\\*: Contains information about the product to be ordered. \\* \\*\\*csfake/CheckOrder.xml\\*\\*: Verifies the validity of the order placed. For example, if the \\*\\*order\\*\\* and \\*\\*id\\*\\* values in the PlaceOrder and CheckOrder XML files do not match, the fake server will report an error in the order processing. See the \\[SimpleChannelStore sample app\\](https://github.com/rokudev/samples/tree/master/roku%20pay/SimpleChannelStore/csfake) for how to use this testing method. The \\*\\*fakeServer\\*\\* field must be set to false in a published app to allow actual \\[In-App Product\\](/docs/developer-program/roku-pay/quickstart/in-channel-products.md) purchases by users. It is recommended that developers use \\[billing testing\\](/docs/developer-program/roku-pay/testing/billing-testing.md) instead of the fakeServer.",
967
967
  "name": "fakeServer",
968
968
  "type": "Boolean"
969
969
  },
970
970
  {
971
971
  "accessPermission": "READ_WRITE",
972
972
  "default": "invalid",
973
- "description": "Contains the order to be filled when the \\[\\*\\*doOrder\\*\\*\\](#doorder) command is executed. This ContentNode contains one child ContentNode for each of the items to be purchased. The child ContentNode must contain the following fields:\n\n| Field | Type | Description |\n| --- | --- | --- |\n| code | string | Identifies the product to be purchased, as entered in the **Product Identifier** field on the [In-Channel Product page in the Developer Dashboard](https://developer.roku.com/products) when the product was created. See [Creating an order](#creating-an-order) for more information. |\n| qty | string | The quantity of the item to be purchased, which is typically 1 for most in-channel products. This is only typically more than 1 if the product is a \"packet\" of identical items (such as game points, number of viewings permitted of some item of content, and so on). |\n| action | string | **For upgrades/downgrades only**. Set this to \"Upgrade\" or \"Downgrade\" to change the subscription plan from a previous purchase (for example, `myOrder.action = \"Upgrade\"`). The required values are case-sensitive; do not pass \"upgrade\" or \"downgrade\". See [On-device upgrade and downgrade](/docs/developer-program/roku-pay/implementation/on-device-upgrade-downgrade.md) for more information. |\n\nTo clear an order, set the \\*\\*order\\*\\* field to \"invalid\".",
973
+ "description": "Contains the order to be filled when the \\[\\*\\*doOrder\\*\\*\\](#doorder) command is executed. This ContentNode contains one child ContentNode for each of the items to be purchased. The child ContentNode must contain the following fields:\n\n| Field | Type | Description |\n| --- | --- | --- |\n| code | string | Identifies the product to be purchased, as entered in the **Product Identifier** field on the [In-App Product page in the Developer Dashboard](https://developer.roku.com/products) when the product was created. See [Creating an order](#creating-an-order) for more information. |\n| qty | string | The quantity of the item to be purchased, which is typically 1 for most in-app products. This is only typically more than 1 if the product is a \"packet\" of identical items (such as game points, number of viewings permitted of some item of content, and so on). |\n| action | string | **For upgrades/downgrades only**. Set this to \"Upgrade\" or \"Downgrade\" to change the subscription plan from a previous purchase (for example, `myOrder.action = \"Upgrade\"`). The required values are case-sensitive; do not pass \"upgrade\" or \"downgrade\". See [On-device upgrade and downgrade](/docs/developer-program/roku-pay/implementation/on-device-upgrade-downgrade.md) for more information. |\n\nTo clear an order, set the \\*\\*order\\*\\* field to \"invalid\".",
974
974
  "name": "order",
975
975
  "type": "ContentNode"
976
976
  },
@@ -991,21 +991,21 @@
991
991
  {
992
992
  "accessPermission": "READ_WRITE",
993
993
  "default": "all",
994
- "description": "Specifies the Roku customer account fields to be retrieved when the \\[\\*\\*getUserData\\*\\*\\](#getuserdata) command is executed. The default value is \"all\", which causes a ContentNode object to be returned from \\*\\*getUserData\\*\\* that includes all of the available Roku customer account information. To request specific Roku customer account information items (for example, an email address, first name, and last name) set this field to a string containing a comma-separated list of values (for example, \"email, firstname, lastname\"). The available values are as follows: \\* email \\* phone \\* firstname \\* lastname \\* street \\* city \\* state \\* zip \\* country \\* birth (\\_available since Roku OS 10.0\\_) \\* gender (\\_available since Roku OS 10.0\\_) In this case, the ContentNode object returned from the \\*\\*getUserData\\*\\* command includes the specified customer account information.",
994
+ "description": "Specifies the Roku customer account fields to be retrieved when the \\[\\*\\*getUserData\\*\\*\\](#getuserdata) command is executed. The default value is \"all\", which causes a ContentNode object to be returned from \\*\\*getUserData\\*\\* that includes all of the available Roku customer account information. To request specific Roku customer account information items (for example, an email address, first name, and last name) set this field to a string containing a comma-separated list of values (for example, \"email, firstname, lastname\"). The available values are as follows: \\* email \\* phone \\* firstname \\* lastname \\* street \\* city \\* state \\* zip \\* country \\* birth \\* gender In this case, the ContentNode object returned from the \\*\\*getUserData\\*\\* command includes the specified customer account information.",
995
995
  "name": "requestedUserData",
996
996
  "type": "string"
997
997
  },
998
998
  {
999
999
  "accessPermission": "READ_WRITE",
1000
1000
  "default": "invalid",
1001
- "description": "Specifies whether the RFI screen is used for customer sign-ups or sign-ins. This may be one of the following values:\n\n| Field | Type | Default | Description |\n| --- | --- | --- | --- |\n| context | string | \"signup\" | Specifies the context of the RFI screen, which may be one of the following values: * \"signup\": The RFI screen displays a \"Let's create your account\" title and lists the customer information specified in the [**requestedUserData** field](#requesteduserdata). The RFI screen uses the \"signup\" context by default. See [Sign-up requirements and best practices](/docs/developer-program/roku-pay/signup-best-practices.md) for more information on implementing the channel sign-up UI. * \"signin: \"The RFI screen displays a \"Sign in\" title and lists only email or phone attributes, if specified in the [**requestedUserData** field](#requesteduserdata). Other attributes are ignored, even if specified. See the [Sign-in example](#sign-in-example) for how to use this field. See [Sign-in requirements and best practices](/docs/developer-program/roku-pay/signin-best-practices.md) for more information on implementing the channel sign-in UI. |\n| forceShowData (_Available since Roku OS 11.0_) | Boolean | false | If true, the RFI signup screen displays the values of the requested customer information to be shared with the channel (for example, Jone Doe, jon.doe@emailaddress.com). By default, this flag is set to false, which means that the default RFI screen for the region is used. For example, in the US, the RFI screen displays the type of customer information being requested (email address, name, and so on). This flag has no effect if the context field is set to \"signin\" (the RFI sign-in screen always displays the customer information values). **Example**: ``` store = CreateObject(\"roSGNode\", \"ChannelStore\") ' Doesn't show user data in dialog unless necessary in the user's region. store.requestedUserData = \"email,firstname,lastname,gender,birth\" store.command = \"getUserData\" ' Shows user data in dialog. info = CreateObject(\"roSGNode\", \"ContentNode\") info.addFields({forceShowData: true}) store.requestedUserDataInfo = info store.requestedUserData = \"email\" store.command = \"getUserData\" ``` |",
1001
+ "description": "Specifies whether the RFI screen is used for customer sign-ups or sign-ins. This may be one of the following values:\n\n| Field | Type | Default | Description |\n| --- | --- | --- | --- |\n| context | string | \"signup\" | Specifies the context of the RFI screen, which may be one of the following values: * \"signup\": The RFI screen displays a \"Let's create your account\" title and lists the customer information specified in the [**requestedUserData** field](#requesteduserdata). The RFI screen uses the \"signup\" context by default. See [Sign-up requirements and best practices](/docs/developer-program/roku-pay/signup-best-practices.md) for more information on implementing the app sign-up UI. * \"signin: \"The RFI screen displays a \"Sign in\" title and lists only email or phone attributes, if specified in the [**requestedUserData** field](#requesteduserdata). Other attributes are ignored, even if specified. See the [Sign-in example](#sign-in-example) for how to use this field. See [Sign-in requirements and best practices](/docs/developer-program/roku-pay/signin-best-practices.md) for more information on implementing the app sign-in UI. |\n| forceShowData | Boolean | false | If true, the RFI signup screen displays the values of the requested customer information to be shared with the app (for example, Jone Doe, jon.doe@emailaddress.com). By default, this flag is set to false, which means that the default RFI screen for the region is used. For example, in the US, the RFI screen displays the type of customer information being requested (email address, name, and so on). This flag has no effect if the context field is set to \"signin\" (the RFI sign-in screen always displays the customer information values). **Example**: ``` store = CreateObject(\"roSGNode\", \"ChannelStore\") ' Doesn't show user data in dialog unless necessary in the user's region. store.requestedUserData = \"email,firstname,lastname,gender,birth\" store.command = \"getUserData\" ' Shows user data in dialog. info = CreateObject(\"roSGNode\", \"ContentNode\") info.addFields({forceShowData: true}) store.requestedUserDataInfo = info store.requestedUserData = \"email\" store.command = \"getUserData\" ``` |",
1002
1002
  "name": "requestedUserDataInfo",
1003
1003
  "type": "ContentNode"
1004
1004
  },
1005
1005
  {
1006
1006
  "accessPermission": "READ_WRITE",
1007
1007
  "default": "invalid",
1008
- "description": "Specifies the product to be ordered from a TVOD channel. The order contains the following fields:\n\n| Field | Type | Description |\n| --- | --- | --- |\n| code | string | Identifies the product to be purchased, as entered in the **Product Identifier** field on the [In-Channel Product page in the Developer Dashboard](https://developer.roku.com/products) when the product was created. For TVOD-exclusive channels, a single in-channel product may be used for all orders. A TVOD-exclusive channel only has transactional products such as movie rentals; it does not offer any subscription products. |\n| priceDisplay | string | The original price of the product. Do not include a currency symbol (for example, set this to \"3.99\" instead of \"$3.99\"). |\n| price | string | The final price of the product, including any discounts. Do not include a currency symbol (for example, set this to \"3.99\" instead of \"$3.99\"). |\n| title | string | A description of the product (for example, the name of a rental movie). |\n| couponCode | string | An alphanumeric string entered by the customer to receive a discounted price on the product. |\n| contentKey | string | The publisher-specific SKU (or other unique identifier) for the product. |",
1008
+ "description": "Specifies the product to be ordered from a TVOD app. The order contains the following fields:\n\n| Field | Type | Description |\n| --- | --- | --- |\n| code | string | Identifies the product to be purchased, as entered in the **Product Identifier** field on the [In-App Product page in the Developer Dashboard](https://developer.roku.com/products) when the product was created. For TVOD-exclusive apps, a single in-app product may be used for all orders. A TVOD-exclusive app only has transactional products such as movie rentals; it does not offer any subscription products. |\n| priceDisplay | string | The original price of the product. Do not include a currency symbol (for example, set this to \"3.99\" instead of \"$3.99\"). |\n| price | string | The final price of the product, including any discounts. Do not include a currency symbol (for example, set this to \"3.99\" instead of \"$3.99\"). |\n| title | string | A description of the product (for example, the name of a rental movie). |\n| couponCode | string | An alphanumeric string entered by the customer to receive a discounted price on the product. |\n| contentKey | string | The publisher-specific SKU (or other unique identifier) for the product. |",
1009
1009
  "name": "requestPartnerOrder",
1010
1010
  "type": "ContentNode"
1011
1011
  },
@@ -1491,7 +1491,7 @@
1491
1491
  {
1492
1492
  "accessPermission": "READ_WRITE",
1493
1493
  "default": "not specified",
1494
- "description": "When set to true the media player will not stop playback when it runs into a streaming related error for this content. Instead, it will skip to the next item in the content list. If this was the last item in the content list the media player will send a regular completion event (like isFullResult). Channels are still notified of any errors via an isRequestFailed notification but a new attribute in the event’s GetInfo object tells the channel the error was ignored. See the changes related to isRequestFailed for more information. The default value is false.",
1494
+ "description": "When set to true the media player will not stop playback when it runs into a streaming related error for this content. Instead, it will skip to the next item in the content list. If this was the last item in the content list the media player will send a regular completion event (like isFullResult). Apps are still notified of any errors via an isRequestFailed notification but a new attribute in the event’s GetInfo object tells the app the error was ignored. See the changes related to isRequestFailed for more information. The default value is false.",
1495
1495
  "name": "IgnoreStreamErrors",
1496
1496
  "type": "Boolean"
1497
1497
  },
@@ -1519,7 +1519,7 @@
1519
1519
  {
1520
1520
  "accessPermission": "READ_WRITE",
1521
1521
  "default": "not specified",
1522
- "description": "Allows a channel to customize Media Player behavior on live streams when playing in the earliest part of a DVR buffer. The stream remains paused even though it is playing in the earliest part of the buffer of a live stream when the value of the attribute is set to \"pause.\" This enables the Roku OS to distinguish between live streams and live streams that eventually transition to video on demand. The possible values of this attribute are \"resume\", \"stop\", \"pause\", with resume being the default value. \\*\\*Currently, this attribute will work only with Smooth and Dash streams.\\*\\* (Available since Roku OS 8.1)",
1522
+ "description": "Allows an app to customize Media Player behavior on live streams when playing in the earliest part of a DVR buffer. The stream remains paused even though it is playing in the earliest part of the buffer of a live stream when the value of the attribute is set to \"pause.\" This enables the Roku OS to distinguish between live streams and live streams that eventually transition to video on demand. The possible values of this attribute are \"resume\", \"stop\", \"pause\", with resume being the default value. \\*\\*Currently, this attribute will work only with Smooth and Dash streams.\\*\\* (Available since Roku OS 8.1)",
1523
1523
  "name": "LiveBoundsPauseBehavior",
1524
1524
  "type": "String"
1525
1525
  },
@@ -1547,14 +1547,14 @@
1547
1547
  {
1548
1548
  "accessPermission": "READ_WRITE",
1549
1549
  "default": "not specified",
1550
- "description": "PlayStart defines the start position of the content, in seconds. The player is not allowed to move to a position prior to this point. Any seek operation prior to this point will be clipped to PlayStart. Channels can use PlayStart and PlayDuration to split one content piece into multiple clips and insert these clips with other content (typically advertisements) into one content list. Starting from Roku OS 8.0, content metadata supports negative PlayStart values. This feature allows the media players to start playbacks distanced from the edge of the live stream",
1550
+ "description": "PlayStart defines the start position of the content, in seconds. The player is not allowed to move to a position prior to this point. Any seek operation prior to this point will be clipped to PlayStart. Apps can use PlayStart and PlayDuration to split one content piece into multiple clips and insert these clips with other content (typically advertisements) into one content list. Starting from Roku OS 8.0, content metadata supports negative PlayStart values. This feature allows the media players to start playbacks distanced from the edge of the live stream",
1551
1551
  "name": "PlayStart",
1552
1552
  "type": "Float"
1553
1553
  },
1554
1554
  {
1555
1555
  "accessPermission": "READ_WRITE",
1556
1556
  "default": "not specified",
1557
- "description": "Specifies the audio codec that should be used during playback. The Media Player will select and report to the channel only those audio renditions that are encoded with the specified codec. Renditions that are encoded with a different codec are ignored. Possible values of this attribute are \"aac\", \"ac3\" and \"eac3\". (Available since Roku OS 9.0)",
1557
+ "description": "Specifies the audio codec that should be used during playback. The Media Player will select and report to the app only those audio renditions that are encoded with the specified codec. Renditions that are encoded with a different codec are ignored. Possible values of this attribute are \"aac\", \"ac3\" and \"eac3\".",
1558
1558
  "name": "PreferredAudioCodec",
1559
1559
  "type": "String"
1560
1560
  },
@@ -1865,7 +1865,7 @@
1865
1865
  "url": "https://developer.roku.com/docs/references/scenegraph/control-nodes/contentnode.md"
1866
1866
  },
1867
1867
  "dialog": {
1868
- "description": "> Roku OS 10.0 introduced a new [StandardDialog node](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md\"**Standard Dialog**\"), which features updated graphics and color palette support. This enables developers to provide a consistent user experience across the dialogs in their channel. Developers should replace the legacy Dialog nodes in their channel with the new [StandardDialog nodes](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md\"**Standard Dialog**\").\n\nExtends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\"**Group**\")\n\nThe Dialog node class defines a modal pop-up dialog used to present the user with information requiring their immediate attention.\n\nSetting the dialog field of the current Scene node to a Dialog node causes the dialog to be displayed.\n\nThe Dialog node is configured to have up to five regions: the title, message, bullet text, graphic, and button regions. All of these are optional except for the title.\n\n* The title region consists of a an icon and a title label, along with a horizontal divider that visually separates the title from the rest of the dialog.\n \n* The message region consist of a string that is displayed below the title divider.\n \n* The bullet text region contains a set of zero or more bullet points. It is displayed below the message.\n \n* The graphic region consists of a single bitmap displayed center-aligned below the message and bullet text and above the button region.\n \n* The button region contains a ButtonGroup node that contains zero or more Button nodes, arranged vertically.\n \n\nDialogs are modal and intercept all key events except pressing the Home key. Dialogs are closed automatically when the user presses the Home key or the Back key. If the optionsDialog field is set to true, pressing the Options key also closes the dialog.\n\nOnly a single dialog may appear at any time. If a second dialog is shown, the previous dialog is closed automatically.",
1868
+ "description": "> Roku OS 10.0 introduced a new [StandardDialog node](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md\"**Standard Dialog**\"), which features updated graphics and color palette support. This enables developers to provide a consistent user experience across the dialogs in their app. Developers should replace the legacy Dialog nodes in their app with the new [StandardDialog nodes](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md\"**Standard Dialog**\").\n\nExtends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\"**Group**\")\n\nThe Dialog node class defines a modal pop-up dialog used to present the user with information requiring their immediate attention.\n\nSetting the dialog field of the current Scene node to a Dialog node causes the dialog to be displayed.\n\nThe Dialog node is configured to have up to five regions: the title, message, bullet text, graphic, and button regions. All of these are optional except for the title.\n\n* The title region consists of a an icon and a title label, along with a horizontal divider that visually separates the title from the rest of the dialog.\n \n* The message region consist of a string that is displayed below the title divider.\n \n* The bullet text region contains a set of zero or more bullet points. It is displayed below the message.\n \n* The graphic region consists of a single bitmap displayed center-aligned below the message and bullet text and above the button region.\n \n* The button region contains a ButtonGroup node that contains zero or more Button nodes, arranged vertically.\n \n\nDialogs are modal and intercept all key events except pressing the Home key. Dialogs are closed automatically when the user presses the Home key or the Back key. If the optionsDialog field is set to true, pressing the Options key also closes the dialog.\n\nOnly a single dialog may appear at any time. If a second dialog is shown, the previous dialog is closed automatically.",
1869
1869
  "events": [],
1870
1870
  "extends": {
1871
1871
  "name": "Group",
@@ -2092,7 +2092,7 @@
2092
2092
  "url": "https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-keyboard.md"
2093
2093
  },
2094
2094
  "dynamickeyboardbase": {
2095
- "description": "Extends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\"**Group**\")\n\n> Channels must use Roku voice keyboards for [email](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-keyboard.md, [PIN](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-pinpad.md, [password](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-keyboard.md entry to pass [certification](/docs/developer-program/certification/certification.md#4-channel-operation).\n\nThe DynamicKeyboardBase is an abstract class that provides the functionality for dynamic voice-enabled keyboards. It combines [**DynamicKeyGrid**](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-key-grid.md and [**VoiceTextEditBox**](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/voice-text-edit-box.md nodes to provide a single node that supports text entry in multiple languages and voice entry in English and Spanish.\n\n* The [**DynamicKeyGrid**](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-key-grid.md provides keyboard functionality. The layout of the keyboard is based on a JSON-formatted Key Definition File.\n \n The classes derived from DynamicKeyboardBase (DynamicKeyboard, DynamicPinPad, and DynamicMiniKeyboard) have built-in Key Definition Files. For example, the DynamicKeyboard node uses a Key Definition File that matches the key layout of the [legacy Keyboard node](https://developer.roku.com/docs/references/scenegraph/widget-nodes/keyboard.md.\n \n The [**DynamicCustomKeyboard** node](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-custom-keyboard.md enables developers to define a custom Key Definition File in order to configure the key layout. In the Key Definition File, the developer specifies the keys in each section and row of the keyboard. The keys support the characters in the Basic Latin, Latin 1 Supplement, Latin Extended-A, and Latin Extended-B blocks. This provides support for most Western European languages, including English, French, German, Italian, Portuguese, and Spanish.\n \n\n* The [**VoiceTextEditBox**](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/voice-text-edit-box.md displays the text that has been entered or spoken. This node supports multiple voice entry modes for entering email addresses, passwords, street addresses, and PINs. This node currently supports voice entry in English and Spanish.\n\n> Developers should upgrade the [legacy keyboards](https://developer.roku.com/docs/references/scenegraph/widget-nodes/keyboard.md in their channels to dynamic voice-enabled keyboards in order to leverage the following benefits:\n> \n> * **Faster on-device sign-ups and sign-ins.** Enable customers to use voice entry to provide their information when subscribing to channels and logging in.\n> \n> * **Localized in-channel search**: Enable customers to search for content in their native language.\n> \n> * **Localized customer information entry**: Enable customers to enter their personal information in their native language.\n>",
2095
+ "description": "Extends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\"**Group**\")\n\n> Apps must use Roku voice keyboards for [email](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-keyboard.md, [PIN](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-pinpad.md, [password](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-keyboard.md entry to pass [certification](/docs/developer-program/certification/certification.md#4-channel-operation).\n\nThe DynamicKeyboardBase is an abstract class that provides the functionality for dynamic voice-enabled keyboards. It combines [**DynamicKeyGrid**](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-key-grid.md and [**VoiceTextEditBox**](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/voice-text-edit-box.md nodes to provide a single node that supports text entry in multiple languages and voice entry in English and Spanish.\n\n* The [**DynamicKeyGrid**](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-key-grid.md provides keyboard functionality. The layout of the keyboard is based on a JSON-formatted Key Definition File.\n \n The classes derived from DynamicKeyboardBase (DynamicKeyboard, DynamicPinPad, and DynamicMiniKeyboard) have built-in Key Definition Files. For example, the DynamicKeyboard node uses a Key Definition File that matches the key layout of the [legacy Keyboard node](https://developer.roku.com/docs/references/scenegraph/widget-nodes/keyboard.md.\n \n The [**DynamicCustomKeyboard** node](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-custom-keyboard.md enables developers to define a custom Key Definition File in order to configure the key layout. In the Key Definition File, the developer specifies the keys in each section and row of the keyboard. The keys support the characters in the Basic Latin, Latin 1 Supplement, Latin Extended-A, and Latin Extended-B blocks. This provides support for most Western European languages, including English, French, German, Italian, Portuguese, and Spanish.\n \n\n* The [**VoiceTextEditBox**](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/voice-text-edit-box.md displays the text that has been entered or spoken. This node supports multiple voice entry modes for entering email addresses, passwords, street addresses, and PINs. This node currently supports voice entry in English and Spanish.\n\n> Developers should upgrade the [legacy keyboards](https://developer.roku.com/docs/references/scenegraph/widget-nodes/keyboard.md in their apps to dynamic voice-enabled keyboards in order to leverage the following benefits:\n> \n> * **Faster on-device sign-ups and sign-ins.** Enable customers to use voice entry to provide their information when subscribing to apps and logging in.\n> \n> * **Localized in-app search**: Enable customers to search for content in their native language.\n> \n> * **Localized customer information entry**: Enable customers to enter their personal information in their native language.\n>",
2096
2096
  "events": [],
2097
2097
  "extends": {
2098
2098
  "name": "Group",
@@ -2280,14 +2280,14 @@
2280
2280
  "default": "[ ]",
2281
2281
  "description": "Specifies the key percentages for the interpolator's keyframes. Each key percentage should be a unique value from 0 to 1 indicating the percentage of the animation where the keyValue should occur. Behavior is undefined if the number of values in the key field does not match the number of values in the keyValue field",
2282
2282
  "name": "key",
2283
- "type": "array of float's"
2283
+ "type": "array of floats"
2284
2284
  },
2285
2285
  {
2286
2286
  "accessPermission": "READ_WRITE",
2287
2287
  "default": "[ ]",
2288
2288
  "description": "Specifies the key values or the interpolator's keyframes. Each value in the keyValue array corresponds to a value in the key field's array. The interpolator's behavior is undefined if the number of values in the key field does not match the number of values in the keyValue field",
2289
2289
  "name": "keyValue",
2290
- "type": "array of float's"
2290
+ "type": "array of floats"
2291
2291
  },
2292
2292
  {
2293
2293
  "accessPermission": "READ_WRITE",
@@ -2443,7 +2443,7 @@
2443
2443
  {
2444
2444
  "accessPermission": "READ_WRITE",
2445
2445
  "default": "false",
2446
- "description": "Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation",
2446
+ "description": "Set to true to suppress the default CVAA text to speech. This allows apps to provide their own custom implementation",
2447
2447
  "name": "muteAudioGuide",
2448
2448
  "type": "Boolean"
2449
2449
  },
@@ -2509,8 +2509,7 @@
2509
2509
  "url": "https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md"
2510
2510
  },
2511
2511
  "infopane": {
2512
- "availableSince": "10.5",
2513
- "description": "_Available since Roku OS 10.5_\n\nThe **InfoPane** node class is used to display an opaque, white-bordered, rounded rectangular label with text providing help for a specific setting. This component can be used to help customers successfully configure settings related to their account profile, closed captioning, parental controls, and so on.\n\n![roku815px - info-pane](https://image.roku.com/ZHZscHItMTc2/infopane.jpg \"info-pane\")",
2512
+ "description": "The **InfoPane** node class is used to display an opaque, white-bordered, rounded rectangular label with text providing help for a specific setting. This component can be used to help customers successfully configure settings related to their account profile, closed captioning, parental controls, and so on.\n\n![roku815px - info-pane](https://image.roku.com/ZHZscHItMTc2/infopane.jpg \"info-pane\")",
2514
2513
  "events": [],
2515
2514
  "fields": [],
2516
2515
  "interfaces": [],
@@ -2588,7 +2587,7 @@
2588
2587
  "url": "https://developer.roku.com/docs/references/scenegraph/widget-nodes/keyboard.md"
2589
2588
  },
2590
2589
  "keyboarddialog": {
2591
- "description": "> Roku OS 10.0 introduced a new [StandardKeyboardDialog node](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-keyboard-dialog.md\"**Standard Keyboard Dialog**\"), which features updated graphics, color palette support, and voice entry support. This enables developers to provide a consistent user experience across the keyboard dialogs in their channel, and help speed up customer sign-ups and sign-ins. Developers must replace the legacy KeyboardDialog nodes in their channel with the new [StandardKeyboardDialog node](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-keyboard-dialog.md\"**Standard Keyboard Dialog**\").\n> \n> To upgrade a legacy keyboard dialog to the standard version, prepend \"Standard\" to the node type. For example, change `keyboarddialog = createObject(\"roSGNode\", \"KeyboardDialog\")` to `keyboarddialog = createObject(\"roSGNode\", \"StandardKeyboardDialog\")`.\n\nExtends [**Dialog**](https://developer.roku.com/docs/references/scenegraph/dialog-nodes/dialog.md\"**Dialog**\")\n\nThe KeyboardDialog node class is a special type of Dialog node that prompts the user to enter an alphanumeric text string. The KeyboardDialog node class includes an interrnal Keyboard node to allow the user to enter the string.\n\nThe KeyboardDialog allows you to add a title (by setting the Dialog title field), a help message (by setting the Dialog message field), and a set of action buttons (by setting the Dialog node buttons field). The bulletText and graphicUrl fields of the Dialog node should not be set. If those Dialog node fields are set, the layout of the dialog will likely not look correct.\n\nAlso, the KeyboardDialog node class inherits the behavior of the interrnal [Keyboard](https://developer.roku.com/docs/references/scenegraph/widget-nodes/keyboard.md\"Keyboard\") node when the Options remote key is pressed. The Keyboard node class toggles between uppercase and lowercase letters when the Options remote key is pressed, to speed the entry of mixed-case strings by the user. Therefore, the optionsDialog field of the Dialog node class should not be set to true.\n\nTypically, you will want to set the KeyboardDialog node title field to prompt the user to enter the string, and add \"OK\" and \"Cancel\" buttons by setting the Dialog node buttons field to \\[ \"OK\", \"Cancel\" \\], then observe the Dialog node class buttonSelected field to react when the user presses one of those buttons. At any time, the text field can be accessed to obtain the string entered by the user.\n\nAnother typical usage of the KeyboardDialog node class adds a \"Hide Text\" button, with an observer function set up to toggle the secureMode field of the Keyboard node internal TextEditBox node (that is, by toggling the value of the keyboard.textEditBox.secureMode field).",
2590
+ "description": "> Roku OS 10.0 introduced a new [StandardKeyboardDialog node](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-keyboard-dialog.md\"**Standard Keyboard Dialog**\"), which features updated graphics, color palette support, and voice entry support. This enables developers to provide a consistent user experience across the keyboard dialogs in their app, and help speed up customer sign-ups and sign-ins. Developers must replace the legacy KeyboardDialog nodes in their app with the new [StandardKeyboardDialog node](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-keyboard-dialog.md\"**Standard Keyboard Dialog**\").\n> \n> To upgrade a legacy keyboard dialog to the standard version, prepend \"Standard\" to the node type. For example, change `keyboarddialog = createObject(\"roSGNode\", \"KeyboardDialog\")` to `keyboarddialog = createObject(\"roSGNode\", \"StandardKeyboardDialog\")`.\n\nExtends [**Dialog**](https://developer.roku.com/docs/references/scenegraph/dialog-nodes/dialog.md\"**Dialog**\")\n\nThe KeyboardDialog node class is a special type of Dialog node that prompts the user to enter an alphanumeric text string. The KeyboardDialog node class includes an interrnal Keyboard node to allow the user to enter the string.\n\nThe KeyboardDialog allows you to add a title (by setting the Dialog title field), a help message (by setting the Dialog message field), and a set of action buttons (by setting the Dialog node buttons field). The bulletText and graphicUrl fields of the Dialog node should not be set. If those Dialog node fields are set, the layout of the dialog will likely not look correct.\n\nAlso, the KeyboardDialog node class inherits the behavior of the interrnal [Keyboard](https://developer.roku.com/docs/references/scenegraph/widget-nodes/keyboard.md\"Keyboard\") node when the Options remote key is pressed. The Keyboard node class toggles between uppercase and lowercase letters when the Options remote key is pressed, to speed the entry of mixed-case strings by the user. Therefore, the optionsDialog field of the Dialog node class should not be set to true.\n\nTypically, you will want to set the KeyboardDialog node title field to prompt the user to enter the string, and add \"OK\" and \"Cancel\" buttons by setting the Dialog node buttons field to \\[ \"OK\", \"Cancel\" \\], then observe the Dialog node class buttonSelected field to react when the user presses one of those buttons. At any time, the text field can be accessed to obtain the string entered by the user.\n\nAnother typical usage of the KeyboardDialog node class adds a \"Hide Text\" button, with an observer function set up to toggle the secureMode field of the Keyboard node internal TextEditBox node (that is, by toggling the value of the keyboard.textEditBox.secureMode field).",
2592
2591
  "events": [],
2593
2592
  "extends": {
2594
2593
  "name": "Dialog",
@@ -2615,7 +2614,7 @@
2615
2614
  "url": "https://developer.roku.com/docs/references/scenegraph/dialog-nodes/keyboarddialog.md"
2616
2615
  },
2617
2616
  "label": {
2618
- "description": "Extends [**LabelBase**](https://developer.roku.com/docs/references/scenegraph/label-nodes/label-base.md\n\n> As of Roku OS 10.5, the Label node inherits most of its functionality from [LabelBase](https://developer.roku.com/docs/references/scenegraph/label-nodes/label-base.md node class. Developers, however, do not need to update their channel application code to account for this refactoring.\n\nThe Label node class is used to display a string of text.",
2617
+ "description": "Extends [**LabelBase**](https://developer.roku.com/docs/references/scenegraph/label-nodes/label-base.md\n\n> As of Roku OS 10.5, the Label node inherits most of its functionality from [LabelBase](https://developer.roku.com/docs/references/scenegraph/label-nodes/label-base.md node class. Developers, however, do not need to update their app code to account for this refactoring.\n\nThe Label node class is used to display a string of text.",
2619
2618
  "events": [],
2620
2619
  "extends": {
2621
2620
  "name": "LabelBase",
@@ -2649,8 +2648,7 @@
2649
2648
  "url": "https://developer.roku.com/docs/references/scenegraph/label-nodes/label.md"
2650
2649
  },
2651
2650
  "labelbase": {
2652
- "availableSince": "10.5",
2653
- "description": "_Available since Roku OS 10.5_\n\nExtends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\n\nThe LabelBase node is an abstract base class for the [**Label**](https://developer.roku.com/docs/references/scenegraph/label-nodes/label.md and [**MultiStyleLabel**](https://developer.roku.com/docs/references/scenegraph/label-nodes/multi-style-label.md nodes. The Label node is used to display a string of text with a single style; the MultiStyleLabel node is used display a string of text with mixed styles (for example, plain and bold text, different fonts, and/or multiple colors). The LabelBase node provides the dimensions, text alignment, wrapping, auto-truncating, and other common functionality for its child nodes.\n\n> The LabelBase node was introduced in Roku OS 10.5 to provide a single base class for the Label node and the new MultiStyleLabel node, which was added as part of the Roku OS 10.5 release. The Label node now inherits most of its functionality from LabelBase node class. Developers, however, do not need to update their channel application code to account for this refactoring.",
2651
+ "description": "Extends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\n\nThe LabelBase node is an abstract base class for the [**Label**](https://developer.roku.com/docs/references/scenegraph/label-nodes/label.md and [**MultiStyleLabel**](https://developer.roku.com/docs/references/scenegraph/label-nodes/multi-style-label.md nodes. The Label node is used to display a string of text with a single style; the MultiStyleLabel node is used display a string of text with mixed styles (for example, plain and bold text, different fonts, and/or multiple colors). The LabelBase node provides the dimensions, text alignment, wrapping, auto-truncating, and other common functionality for its child nodes.\n\n> The LabelBase node was introduced in Roku OS 10.5 to provide a single base class for the Label node and the new MultiStyleLabel node, which was added as part of the Roku OS 10.5 release. The Label node now inherits most of its functionality from LabelBase node class. Developers, however, do not need to update their app code to account for this refactoring.",
2654
2652
  "events": [],
2655
2653
  "extends": {
2656
2654
  "name": "Group",
@@ -2720,6 +2718,13 @@
2720
2718
  "name": "maxLines",
2721
2719
  "type": "integer"
2722
2720
  },
2721
+ {
2722
+ "accessPermission": "READ_WRITE",
2723
+ "default": "false",
2724
+ "description": "Renders numeric values using tabular (fixed-width) fonts.",
2725
+ "name": "monospacedDigits",
2726
+ "type": "Boolean"
2727
+ },
2723
2728
  {
2724
2729
  "accessPermission": "READ_WRITE",
2725
2730
  "default": "0",
@@ -2768,7 +2773,7 @@
2768
2773
  "url": "https://developer.roku.com/docs/references/scenegraph/label-nodes/label-base.md"
2769
2774
  },
2770
2775
  "labellist": {
2771
- "description": "Extends [**ArrayGrid**](https://developer.roku.com/docs/references/scenegraph/abstract-nodes/arraygrid.md\n\nThe LabelList node class is a simple list class that can be used to display a list of items. Each item can include a text string and an optional icon positioned to the left of the text string.\n\nThe list items can be organized into sections that are demarcated by labelled horizontal divider lines between the sections.\n\nIn most cases, you will want to populate the content of a LabelList (or other similar components like PosterGrids, etc.) from a content feed, web service API, or some other dynamic data source. However, to illustrate the basics of how a LabelList is constructed and used, here is a simple example of creating a LabelList and populating it with static data. Static data in a LabelList may be useful for channel screens such as settings or menus with fixed items.\n\n**Static LabelList configuration**\n\n```\n<LabelList\n id = \"moviemenu\"\n translation = \"[160,92]\"\n itemSize = \"[440,48]\" >\n\n <ContentNode id = \"moviemenucontent\" role = \"content\" >\n\n <ContentNode title = \"Drama\" />\n <ContentNode title = \"Action\" />\n <ContentNode title = \"Horror\" />\n <ContentNode title = \"Comedy\" />\n\n </ContentNode>\n\n</LabelList>\n```\n\n**Example**\n\nThis code renders the LabelList shown below.\n\nIn this screen shot, the user has scrolled down one item to highlight \"Drama\" showing the separator after the last list item.\n\n![roku815px - LabelList-example1](https://image.roku.com/ZHZscHItMTc2/LabelList-example1.jpg \"LabelList-example1\")",
2776
+ "description": "Extends [**ArrayGrid**](https://developer.roku.com/docs/references/scenegraph/abstract-nodes/arraygrid.md\n\nThe LabelList node class is a simple list class that can be used to display a list of items. Each item can include a text string and an optional icon positioned to the left of the text string.\n\nThe list items can be organized into sections that are demarcated by labelled horizontal divider lines between the sections.\n\nIn most cases, you will want to populate the content of a LabelList (or other similar components like PosterGrids, etc.) from a content feed, web service API, or some other dynamic data source. However, to illustrate the basics of how a LabelList is constructed and used, here is a simple example of creating a LabelList and populating it with static data. Static data in a LabelList may be useful for app screens such as settings or menus with fixed items.\n\n**Static LabelList configuration**\n\n```\n<LabelList\n id = \"moviemenu\"\n translation = \"[160,92]\"\n itemSize = \"[440,48]\" >\n\n <ContentNode id = \"moviemenucontent\" role = \"content\" >\n\n <ContentNode title = \"Drama\" />\n <ContentNode title = \"Action\" />\n <ContentNode title = \"Horror\" />\n <ContentNode title = \"Comedy\" />\n\n </ContentNode>\n\n</LabelList>\n```\n\n**Example**\n\nThis code renders the LabelList shown below.\n\nIn this screen shot, the user has scrolled down one item to highlight \"Drama\" showing the separator after the last list item.\n\n![roku815px - LabelList-example1](https://image.roku.com/ZHZscHItMTc2/LabelList-example1.jpg \"LabelList-example1\")",
2772
2777
  "events": [],
2773
2778
  "extends": {
2774
2779
  "name": "ArrayGrid",
@@ -3108,7 +3113,7 @@
3108
3113
  "url": "https://developer.roku.com/docs/references/scenegraph/sliding-panels-nodes/listpanel.md"
3109
3114
  },
3110
3115
  "markupgrid": {
3111
- "description": "Extends [**ArrayGrid**](https://developer.roku.com/docs/references/scenegraph/abstract-nodes/arraygrid.md\n\nThe MarkupGrid node class is a is a generic grid class that can be used to display a set of items arranged into a 2D grid. The contents of each grid item is an instance of an XML component specified by the `itemComponentName` field. An instance of the XML component is used to display the data for each item in the grid data model. The appearance of the grid item as it enters/exits the grid focus position can be customized using scripting. [SimpleMarkupList](https://github.com/rokudev/samples/blob/master/ux%20components/lists%20and%20grids/SimpleMarkupList) is a sample channel containing a MarkupGrid where each item is an instance of an XML component. See the section [MarkupGrid XML component](https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/markupgrid.mdmarkupgrid-xml-component) for details.\n\nThe number of columns in the MarkupGrid node is fixed and the number of rows varies as needed to display all of the items in the grid data model. The items in the grid fill each row from left to right, then top to bottom. For example, if the grid data contains 8 items and the number of columns is set to 3, then items 1, 2 and 3 will be in the first row. Items 4, 5 and 6 will be in the second row. The third row will contain items 7 and 8 in the leftmost two columns and blank space in the right column.\n\nThe layout of rows and columns in the grid is very flexible. Possible layouts include:\n\n* a simple layout with all items in the grid having the same size\n* a layout with the items in some rows having varying heights and/or the items in some columns having varying widths\n* a layout with varying width rows and columns and items that occupy one or more rows and columns\n\nThe grid items can be organized into sections that are demarcated by labelled horizontal divider lines between the sections.",
3116
+ "description": "Extends [**ArrayGrid**](https://developer.roku.com/docs/references/scenegraph/abstract-nodes/arraygrid.md\n\nThe MarkupGrid node class is a is a generic grid class that can be used to display a set of items arranged into a 2D grid. The contents of each grid item is an instance of an XML component specified by the `itemComponentName` field. An instance of the XML component is used to display the data for each item in the grid data model. The appearance of the grid item as it enters/exits the grid focus position can be customized using scripting. [SimpleMarkupList](https://github.com/rokudev/samples/blob/master/ux%20components/lists%20and%20grids/SimpleMarkupList) is a sample app containing a MarkupGrid where each item is an instance of an XML component. See the section [MarkupGrid XML component](https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/markupgrid.mdmarkupgrid-xml-component) for details.\n\nThe number of columns in the MarkupGrid node is fixed and the number of rows varies as needed to display all of the items in the grid data model. The items in the grid fill each row from left to right, then top to bottom. For example, if the grid data contains 8 items and the number of columns is set to 3, then items 1, 2 and 3 will be in the first row. Items 4, 5 and 6 will be in the second row. The third row will contain items 7 and 8 in the leftmost two columns and blank space in the right column.\n\nThe layout of rows and columns in the grid is very flexible. Possible layouts include:\n\n* a simple layout with all items in the grid having the same size\n* a layout with the items in some rows having varying heights and/or the items in some columns having varying widths\n* a layout with varying width rows and columns and items that occupy one or more rows and columns\n\nThe grid items can be organized into sections that are demarcated by labelled horizontal divider lines between the sections.",
3112
3117
  "events": [],
3113
3118
  "extends": {
3114
3119
  "name": "ArrayGrid",
@@ -3338,7 +3343,7 @@
3338
3343
  "url": "https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/markupgrid.md"
3339
3344
  },
3340
3345
  "markuplist": {
3341
- "description": "Extends [**ArrayGrid**](https://developer.roku.com/docs/references/scenegraph/abstract-nodes/arraygrid.md\n\nThe MarkupList node class is a generic list class that can be used to display a list of items.\n\nThe contents of each list item is an instance of an XML component specified by the `itemComponentName` field value. An instance of the XML component is used to display the data for each item in the list data model. The appearance of the list item as it enters/exits the list focus position can be customized using BrightScript.\n\n[SimpleMarkupList](https://github.com/rokudev/samples/tree/master/ux%20components/lists%20and%20grids) is a sample channel containing a MarkupList where each item is an instance of an XML component. See the [MarkupList XML component](#markuplist-xml-component) section for details.\n\n**Example**\n\nThe following example displays the use of the MarkupList node.\n\n![roku815px - markuplist-node](https://image.roku.com/ZHZscHItMTc2/markuplist-node.png \"markuplist-node\")",
3346
+ "description": "Extends [**ArrayGrid**](https://developer.roku.com/docs/references/scenegraph/abstract-nodes/arraygrid.md\n\nThe MarkupList node class is a generic list class that can be used to display a list of items.\n\nThe contents of each list item is an instance of an XML component specified by the `itemComponentName` field value. An instance of the XML component is used to display the data for each item in the list data model. The appearance of the list item as it enters/exits the list focus position can be customized using BrightScript.\n\n[SimpleMarkupList](https://github.com/rokudev/samples/tree/master/ux%20components/lists%20and%20grids) is a sample app containing a MarkupList where each item is an instance of an XML component. See the [MarkupList XML component](#markuplist-xml-component) section for details.\n\n**Example**\n\nThe following example displays the use of the MarkupList node.\n\n![roku815px - markuplist-node](https://image.roku.com/ZHZscHItMTc2/markuplist-node.png \"markuplist-node\")",
3342
3347
  "events": [],
3343
3348
  "extends": {
3344
3349
  "name": "ArrayGrid",
@@ -3649,9 +3654,17 @@
3649
3654
  "name": "MiniKeyboard",
3650
3655
  "url": "https://developer.roku.com/docs/references/scenegraph/widget-nodes/minikeyboard.md"
3651
3656
  },
3657
+ "monospacelabel": {
3658
+ "availableSince": "14.0",
3659
+ "description": "_Available since Roku OS 14.0_\n\nThe **MonospaceLabel** node is used to draw a single line of text with all characters spaced at a fixed distance from each other. It transforms proportional fonts into monospaced fonts. It is a substitute for using a monospace font with the **Label** node.\n\n**Fields**\n\n| **Field** | **Type** | **Default** | **Access Permission** | **Description** |\n| --- | --- | --- | --- | --- |\n| text | string | | READ\\_WRITE | Specifies the text to be displayed |\n| color | color | 0xddddddff | READ\\_WRITE | Specifies the text color |\n| font | Font | system default | READ\\_WRITE | Specifies the Font node to be used |\n| horizAlign | string | left | READ\\_WRITE | See [Horizontal Alignment](https://developer.roku.com/docs/references/scenegraph/typographic-nodes/scrollinglabel.mdalignment) |\n| vertAlign | string | top | READ\\_WRITE | See [Vertical Alignment](https://developer.roku.com/docs/references/scenegraph/label-nodes/label-base.mdwrapping-text) |\n| width | float | 0 | READ\\_WRITE | Specifies the width of the label. If set to zero, the width of the label will be set automatically |\n| height | float | 0 | READ\\_WRITE | Specifies the height of the label. If set to zero, the height of the label will be set automatically |\n| characterWidth | float | 0 | READ\\_WRITE | Specifies the width of the label characters. If set to zero, width of font’s character 'M' will be used |\n| ellipsizeOnBoundary | Boolean | false | READ\\_WRITE | If the width field value is greater than zero, controls whether or not the last line of text displayed should be ellipsized if it extends beyond the specified width. It is ignored if the truncateOnDelimiter field value is set to a non-empty stringWhen set to true, text will be ellipsized by whole words. Example: \"This is the last line of...\"When set to false, text will be ellipsized by characters. Example: \"This is the last line of tex...\" |\n| firstCharTrueLeftAlign | Boolean | false | READ\\_WRITE | Forces the first character to left align completely instead of rendering centered in the character box. Subsequent characters are centered in their character box. If enabled monospace text strings with different first characters will shift around. This is primarily used for single characters strings |\n| wordBreakChars | string | | READ\\_WRITE | By default, space and hyphen characters are used to determine where lines can be divided. In addition, this field can specify additional characters to be used to determine where the text can be broken into lines |\n| isTextEllipsized | Boolean | false | READ | Tells whether or not currently displayed text is clipped. |",
3660
+ "events": [],
3661
+ "fields": [],
3662
+ "interfaces": [],
3663
+ "name": "MonospaceLabel",
3664
+ "url": "https://developer.roku.com/docs/references/scenegraph/label-nodes/monospace-label.md"
3665
+ },
3652
3666
  "multistylelabel": {
3653
- "availableSince": "10.5",
3654
- "description": "_Available since Roku OS 10.5_\n\nExtends [**LabelBase**](https://developer.roku.com/docs/references/scenegraph/label-nodes/label-base.md\n\nThe MultiStyleLabel node class is used to create labels with mixed styles. For example, this node can be used to create a single label with plain and bold text, different fonts, and/or multiple colors.\n\n![roku815px - img](https://image.roku.com/ZHZscHItMTc2/emoji-multistylelabel.jpg)",
3667
+ "description": "Extends [**LabelBase**](https://developer.roku.com/docs/references/scenegraph/label-nodes/label-base.md\n\nThe MultiStyleLabel node class is used to create labels with mixed styles. For example, this node can be used to create a single label with plain and bold text, different fonts, and/or multiple colors.\n\n![roku815px - img](https://image.roku.com/ZHZscHItMTc2/emoji-multistylelabel.jpg)",
3655
3668
  "events": [],
3656
3669
  "extends": {
3657
3670
  "name": "LabelBase",
@@ -3742,7 +3755,7 @@
3742
3755
  "url": "https://developer.roku.com/docs/references/scenegraph/node.md"
3743
3756
  },
3744
3757
  "overhang": {
3745
- "description": "Extends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\n\nThe Overhang node provides a information bar that is displayed at the top of a screen in many Roku channels. The regions occupied by the overhang can be filled with either a solid color or a bitmap.\n\nOn the left side, a logo bitmap and/or a string can be displayed. If both are displayed, a vertical divider is drawn to separate them. The string is typically set to display a reminder to the user of their current location in the interface. For example, in the Roku homescreen, the string is set to \"Search\" while the user in the search entry portion of the user interface. Then when the user explores a search result, the string is changed to reflect the name of the content being explored.\n\nOn the right side, a clock and/or an indicator that the options key (\\*) is available can be displayed. If both are displayed, a vertical divider is drawn to separate them.\n\nThe appearance and contents of the Overhang can be customized by setting its fields to the desired values.",
3758
+ "description": "Extends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\n\nThe Overhang node provides a information bar that is displayed at the top of a screen in many Roku apps. The regions occupied by the overhang can be filled with either a solid color or a bitmap.\n\nOn the left side, a logo bitmap and/or a string can be displayed. If both are displayed, a vertical divider is drawn to separate them. The string is typically set to display a reminder to the user of their current location in the interface. For example, in the Roku homescreen, the string is set to \"Search\" while the user in the search entry portion of the user interface. Then when the user explores a search result, the string is changed to reflect the name of the content being explored.\n\nOn the right side, a clock and/or an indicator that the options key (\\*) is available can be displayed. If both are displayed, a vertical divider is drawn to separate them.\n\nThe appearance and contents of the Overhang can be customized by setting its fields to the desired values.",
3746
3759
  "events": [],
3747
3760
  "extends": {
3748
3761
  "name": "Group",
@@ -3754,7 +3767,7 @@
3754
3767
  "url": "https://developer.roku.com/docs/references/scenegraph/sliding-panels-nodes/overhang.md"
3755
3768
  },
3756
3769
  "overhangpanelsetscene": {
3757
- "description": "Extends [**Scene**](https://developer.roku.com/docs/references/scenegraph/scene.md\n\nThe OverhangPanelSetScene node class provides a convenient way to create a Scene node that has set with default Overhang and PanelSet nodes. The layout of the Overhang and PanelSet use the default sizes for SDK2 channels. The node provides access to the PanelSet and Overhang via fields that contain the node objects.\n\n```\nscene = screen.CreateScene(\"OverhangPanelSetScene\")\n```",
3770
+ "description": "Extends [**Scene**](https://developer.roku.com/docs/references/scenegraph/scene.md\n\nThe OverhangPanelSetScene node class provides a convenient way to create a Scene node that has set with default Overhang and PanelSet nodes. The layout of the Overhang and PanelSet use the default sizes for SDK2 apps. The node provides access to the PanelSet and Overhang via fields that contain the node objects.\n\n```\nscene = screen.CreateScene(\"OverhangPanelSetScene\")\n```",
3758
3771
  "events": [],
3759
3772
  "extends": {
3760
3773
  "name": "Scene",
@@ -3766,7 +3779,7 @@
3766
3779
  "url": "https://developer.roku.com/docs/references/scenegraph/sliding-panels-nodes/overhangpanelsetscene.md"
3767
3780
  },
3768
3781
  "panel": {
3769
- "description": "Extends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\n\nThe Panel node is used to create sliding panels for channel UI, similar to those in the Roku OS home screen.",
3782
+ "description": "Extends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\n\nThe Panel node is used to create sliding panels for app UI, similar to those in the Roku OS home screen.",
3770
3783
  "events": [],
3771
3784
  "extends": {
3772
3785
  "name": "Group",
@@ -3840,13 +3853,91 @@
3840
3853
  "parentalcontrolpinpad": {
3841
3854
  "description": "ParentalControlPinPad is a variant of the [PinPad component](https://developer.roku.com/docs/references/scenegraph/widget-nodes/pinpad.md\"PinPad component\"), although it does have a few key differences: The pin, pinLength, and secureMode fields are made private (i.e., not accessible to BrightScript, and secureMode set to true).\n\nThere are two use cases for the ParentalControlPinPad node:\n\n* If the user enters the correct pin, a 2-hour override of content blocking starts, similar to the system behavior on RokuTV\n* If the user enters an incorrect PIN, the text fields are cleared automatically",
3842
3855
  "events": [],
3843
- "fields": [],
3856
+ "fields": [
3857
+ {
3858
+ "accessPermission": "READ_WRITE",
3859
+ "default": "\"\"",
3860
+ "description": "Specifies the URI of an image file to be loaded to replace the keyboard focus indicator. This should be a 9-patch image so that it can be stretched to the appropriate size for the double width keys.",
3861
+ "name": "focusBitmapUri",
3862
+ "type": "string"
3863
+ },
3864
+ {
3865
+ "accessPermission": "READ_WRITE",
3866
+ "default": "0xffffffff",
3867
+ "description": "Specifies the color of the key labels and icons when the keyboard has the focus",
3868
+ "name": "focusedKeyColor",
3869
+ "type": "color"
3870
+ },
3871
+ {
3872
+ "accessPermission": "READ_WRITE",
3873
+ "default": "\"\"",
3874
+ "description": "Specifies the URI of an image file to be loaded to replace the default keyboard image drawn underneath the numeric keys and icons. Note that this image must be carefully designed so that the key positions match the default image. Template images for SD, HD and FHD resolutions are provided below.",
3875
+ "name": "keyboardBitmapUri",
3876
+ "type": "string"
3877
+ },
3878
+ {
3879
+ "accessPermission": "READ_WRITE",
3880
+ "default": "0xffffffff",
3881
+ "description": "Specifies the color of the key labels and icons when the keyboard does not have the focus",
3882
+ "name": "keyColor",
3883
+ "type": "color"
3884
+ },
3885
+ {
3886
+ "accessPermission": "READ_WRITE",
3887
+ "default": "\"\"",
3888
+ "description": "Contains the string of numbers that have been entered.",
3889
+ "name": "pin",
3890
+ "type": "string"
3891
+ },
3892
+ {
3893
+ "accessPermission": "READ_WRITE",
3894
+ "default": "\"\"",
3895
+ "description": "Specifed the URI of an image file to be loaded to replace the default box drawn underneath each entered digit in the pin display. This should be a 9-patch image so that it can be stretched to appropriate size depending on the pinLength field.",
3896
+ "name": "pinDisplayBitmapUri",
3897
+ "type": "string"
3898
+ },
3899
+ {
3900
+ "accessPermission": "READ_WRITE",
3901
+ "default": "0xffffffff",
3902
+ "description": "Specifies the color of the numbers displayed in the pin display boxes",
3903
+ "name": "pinDisplayTextColor",
3904
+ "type": "color"
3905
+ },
3906
+ {
3907
+ "accessPermission": "READ_WRITE",
3908
+ "default": "4",
3909
+ "description": "Contains the maximum number of digits that can be entered",
3910
+ "name": "pinLength",
3911
+ "type": "integer"
3912
+ },
3913
+ {
3914
+ "accessPermission": "READ_WRITE",
3915
+ "default": "incomplete",
3916
+ "description": "\\*\\*Read-only\\*\\* \"true\": Content is now unblocked \"false\": Pin incorrect, \"incomplete\": a full pin is not entered",
3917
+ "name": "pinSuccess",
3918
+ "type": "string"
3919
+ },
3920
+ {
3921
+ "accessPermission": "READ_WRITE",
3922
+ "default": "true",
3923
+ "description": "When set to true, each digit entered is displayed briefly, then replaced with an asterisk. When false, the entered digits always remain visible.",
3924
+ "name": "secureMode",
3925
+ "type": "boolean"
3926
+ },
3927
+ {
3928
+ "accessPermission": "READ_WRITE",
3929
+ "default": "true",
3930
+ "description": "Specifies whether or not the pin display that shows the entered digits is visible. In most cases, it is desirable to display the entered digits so that the user can see the string as it is entered. In some cases though, you might want to only show the keyboard part of the PinPad node. In those cases, the pinfield of the node will still contain the string entered by the user, so that it can displayed in some different manner.",
3931
+ "name": "showPinDisplay",
3932
+ "type": "boolean"
3933
+ }
3934
+ ],
3844
3935
  "interfaces": [],
3845
3936
  "name": "ParentalControlPinPad",
3846
3937
  "url": "https://developer.roku.com/docs/references/scenegraph/widget-nodes/parentalcontrolpinpad.md"
3847
3938
  },
3848
3939
  "pindialog": {
3849
- "description": "> Roku OS 10.0 introduced a new [StandardPinPadDialog node](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-pinpad-dialog.md\"**Standard PinPad Dialog**\"), which features updated graphics, color palette support, and voice entry support. This enables developers to provide a consistent user experience across the PIN pad dialogs in their channel, and help speed up customer sign-ups and sign-ins. Developers must replace the legacy PinDialog nodes in their channel with the new [StandardPinPadDialog node](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-pinpad-dialog.md\"**Standard PinPad Dialog**\").\n> \n> To upgrade a legacy pinpad dialog to the standard version, prepend \"Standard\" to the node type. For example, change `pindialog = createObject(\"roSGNode\", \"PinDialog\")` to `pindialog = createObject(\"roSGNode\", \"StandardPinDialog\")`.\n\nExtends [**Dialog**](https://developer.roku.com/docs/references/scenegraph/dialog-nodes/dialog.md\"**Dialog**\")\n\nThe PinDialog node class is a special type of Dialog node that prompts the user to enter a numeric string. The PinDialog node class includes an internal [PinPad](https://developer.roku.com/docs/references/scenegraph/widget-nodes/pinpad.md\"PinPad\") node to allow the user to input a numeric value, such as a PIN.\n\nThe PinDialog node class allows you to add a title (by setting the Dialog node title field), a message (by setting the Dialog node message field), and a set of action buttons (by setting the Dialog node buttons field). The bulletText and graphicUrl fields of the Dialog node should not be set. If those fields are set, the layout of the PinDialog node will likely not look correct.\n\nTypically, you will want to set the Dialog node title field to prompt the user to enter a PIN, and add \"OK\" and \"Cancel\" buttons by setting the Dialog node buttons field to \\[ \"OK\", \"Cancel\" \\], then observe the Dialog node buttonSelected field to react when the user presses one of those buttons. At any time, the PinDialog node pin field can be accessed to obtain the PIN value entered by the user.\n\nThe PinDialog node displays a privacy hint at the bottom of the dialog instructing the user how to show/hide the PinPad node focus indicator with the Options remote key. This provides more privacy for the user when entering a PIN. You should not override this default behavior of the Options remote key in the PinDialog node.",
3940
+ "description": "> Roku OS 10.0 introduced a new [StandardPinPadDialog node](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-pinpad-dialog.md\"**Standard PinPad Dialog**\"), which features updated graphics, color palette support, and voice entry support. This enables developers to provide a consistent user experience across the PIN pad dialogs in their app, and help speed up customer sign-ups and sign-ins. Developers must replace the legacy PinDialog nodes in their app with the new [StandardPinPadDialog node](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-pinpad-dialog.md\"**Standard PinPad Dialog**\").\n> \n> To upgrade a legacy pinpad dialog to the standard version, prepend \"Standard\" to the node type. For example, change `pindialog = createObject(\"roSGNode\", \"PinDialog\")` to `pindialog = createObject(\"roSGNode\", \"StandardPinDialog\")`.\n\nExtends [**Dialog**](https://developer.roku.com/docs/references/scenegraph/dialog-nodes/dialog.md\"**Dialog**\")\n\nThe PinDialog node class is a special type of Dialog node that prompts the user to enter a numeric string. The PinDialog node class includes an internal [PinPad](https://developer.roku.com/docs/references/scenegraph/widget-nodes/pinpad.md\"PinPad\") node to allow the user to input a numeric value, such as a PIN.\n\nThe PinDialog node class allows you to add a title (by setting the Dialog node title field), a message (by setting the Dialog node message field), and a set of action buttons (by setting the Dialog node buttons field). The bulletText and graphicUrl fields of the Dialog node should not be set. If those fields are set, the layout of the PinDialog node will likely not look correct.\n\nTypically, you will want to set the Dialog node title field to prompt the user to enter a PIN, and add \"OK\" and \"Cancel\" buttons by setting the Dialog node buttons field to \\[ \"OK\", \"Cancel\" \\], then observe the Dialog node buttonSelected field to react when the user presses one of those buttons. At any time, the PinDialog node pin field can be accessed to obtain the PIN value entered by the user.\n\nThe PinDialog node displays a privacy hint at the bottom of the dialog instructing the user how to show/hide the PinPad node focus indicator with the Options remote key. This provides more privacy for the user when entering a PIN. You should not override this default behavior of the Options remote key in the PinDialog node.",
3850
3941
  "events": [],
3851
3942
  "extends": {
3852
3943
  "name": "Dialog",
@@ -4548,7 +4639,7 @@
4548
4639
  "url": "https://developer.roku.com/en-ca/docs/references/scenegraph/media-playback-nodes/video.md#ui-fields"
4549
4640
  },
4550
4641
  "progressdialog": {
4551
- "description": "> Roku OS 10.0 introduced a new [StandardProgressDialog node](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-progress-dialog.md\"**Standard Progress Dialog**\"), which features updated graphics and color palette support. This enables developers to provide a consistent user experience across the progress dialogs in their channel. Developers should replace the legacy ProgressDialog nodes in their channel with the new [StandardProgressDialog nodes](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-progress-dialog.md22 \"**Standard Progress Dialog**\").\n> \n> To upgrade a legacy progress dialog to the standard version, prepend \"Standard\" to the node type. For example, change `progressdialog = createObject(\"roSGNode\", \"ProgressDialog\")` to `progressdialog = createObject(\"roSGNode\", \"StandardProgressDialog\")`.\n\nExtends [**Dialog**](https://developer.roku.com/docs/references/scenegraph/dialog-nodes/dialog.md\"**Dialog**\")\n\nThe ProgressDialog node class is a special type of Dialog node that includes the dialog title region and a spinning icon as the body of the dialog. The ProgressDialog node class uses a BusySpinner node to display the spinning icon.\n\nThe message, bulleted text, graphic, and button regions of the dialog should all be empty. If those dialog regions are not empty, the layout of the dialog will likely not look correct.\n\n> Not all Roku Player hardware supports arbitrary rotations. In particular, some hardware only supports 90 degree rotation increments. In those cases, the icon will step through 90 degree, 180 degree, 270 degree and back to 0 degree rotations, rather than spin smoothly.",
4642
+ "description": "> Roku OS 10.0 introduced a new [StandardProgressDialog node](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-progress-dialog.md\"**Standard Progress Dialog**\"), which features updated graphics and color palette support. This enables developers to provide a consistent user experience across the progress dialogs in their app. Developers should replace the legacy ProgressDialog nodes in their app with the new [StandardProgressDialog nodes](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-progress-dialog.md\"**Standard Progress Dialog**\").\n> \n> To upgrade a legacy progress dialog to the standard version, prepend \"Standard\" to the node type. For example, change `progressdialog = createObject(\"roSGNode\", \"ProgressDialog\")` to `progressdialog = createObject(\"roSGNode\", \"StandardProgressDialog\")`.\n\nExtends [**Dialog**](https://developer.roku.com/docs/references/scenegraph/dialog-nodes/dialog.md\"**Dialog**\")\n\nThe ProgressDialog node class is a special type of Dialog node that includes the dialog title region and a spinning icon as the body of the dialog. The ProgressDialog node class uses a BusySpinner node to display the spinning icon.\n\nThe message, bulleted text, graphic, and button regions of the dialog should all be empty. If those dialog regions are not empty, the layout of the dialog will likely not look correct.\n\n> Not all Roku Player hardware supports arbitrary rotations. In particular, some hardware only supports 90 degree rotation increments. In those cases, the icon will step through 90 degree, 180 degree, 270 degree and back to 0 degree rotations, rather than spin smoothly.",
4552
4643
  "events": [],
4553
4644
  "extends": {
4554
4645
  "name": "Dialog",
@@ -5006,7 +5097,7 @@
5006
5097
  "url": "https://developer.roku.com/en-ca/docs/references/scenegraph/scene.md"
5007
5098
  },
5008
5099
  "scene": {
5009
- "description": "Extends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\"**Group**\")\n\nThe **Scene** node class serves as the root of a SceneGraph node tree. Every **roSGScreen** object must have a **Scene** node, or a node that derives from the **Scene** node class as its root, including an XML markup component that extends the Scene node class or subclass. That node must be created using the **roSGScreen** createScene() function, with an argument that is a string of the name of the **Scene** node object created. For example:\n\n```\nscreen = CreateObject(\"roSGScreen\")\nscene = screen.CreateScene(\"Scene\")\n```\n\nWhile it is technically possible to have more than one scene per channel, we recommend you only have one **roSGScreen** and one **Scene** node. Child nodes of the scene can be treated as different \"scenes\" where you can then implement transitions between them.",
5100
+ "description": "Extends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\"**Group**\")\n\nThe **Scene** node class serves as the root of a SceneGraph node tree. Every **roSGScreen** object must have a **Scene** node, or a node that derives from the **Scene** node class as its root, including an XML markup component that extends the Scene node class or subclass. That node must be created using the **roSGScreen** createScene() function, with an argument that is a string of the name of the **Scene** node object created. For example:\n\n```\nscreen = CreateObject(\"roSGScreen\")\nscene = screen.CreateScene(\"Scene\")\n```\n\nWhile it is technically possible to have more than one scene per app, we recommend you only have one **roSGScreen** and one **Scene** node. Child nodes of the scene can be treated as different \"scenes\" where you can then implement transitions between them.",
5010
5101
  "events": [],
5011
5102
  "extends": {
5012
5103
  "name": "Group",
@@ -5037,7 +5128,7 @@
5037
5128
  {
5038
5129
  "accessPermission": "READ_WRITE",
5039
5130
  "default": "",
5040
- "description": "This read-only field is set when the Scene is initialized. It indicates which of a channel's design resolutions (per manifest's ui\\\\\\_resolutions value) is being used, based on the player model and connected display type. Previously, a developer could deduct the same information by using both \\[roDeviceInfo.GetUIResolution\\](https://developer.roku.com/docs/references/brightscript/interfaces/ifdeviceinfo.mdgetuiresolution-as-object() \"roDeviceInfo.GetUIResolution\") and \\[roAppInfo.getValue\\](https://developer.roku.com/docs/references/brightscript/interfaces/ifappinfo.mdgetvaluekey-as-string-as-string \"roAppInfo.getValue\")(\"ui\\\\\\_resolutions\"). This new field simplifies the process. The field is set to an AA with two numeric-valued keys — width and height — as well as a string value indicating the current design resolution (\"HD\", \"FHD\" or \"SD\"). \\`\\`\\` Brightscript Debugger> ? myNode.getScene().currentDesignResolution \\= { height: 720 resolution: \"HD\" width: 1280 } \\`\\`\\`",
5131
+ "description": "This read-only field is set when the Scene is initialized. It indicates which of an app's design resolutions (per manifest's ui\\\\\\_resolutions value) is being used, based on the player model and connected display type. Previously, a developer could deduct the same information by using both \\[roDeviceInfo.GetUIResolution\\](https://developer.roku.com/docs/references/brightscript/interfaces/ifdeviceinfo.mdgetuiresolution-as-object() \"roDeviceInfo.GetUIResolution\") and \\[roAppInfo.getValue\\](https://developer.roku.com/docs/references/brightscript/interfaces/ifappinfo.mdgetvaluekey-as-string-as-string \"roAppInfo.getValue\")(\"ui\\\\\\_resolutions\"). This new field simplifies the process. The field is set to an AA with two numeric-valued keys — width and height — as well as a string value indicating the current design resolution (\"HD\", \"FHD\" or \"SD\"). \\`\\`\\` Brightscript Debugger> ? myNode.getScene().currentDesignResolution \\= { height: 720 resolution: \"HD\" width: 1280 } \\`\\`\\`",
5041
5132
  "name": "currentDesignResolution",
5042
5133
  "type": "assocarray"
5043
5134
  },
@@ -5058,7 +5149,7 @@
5058
5149
  {
5059
5150
  "accessPermission": "READ_WRITE",
5060
5151
  "default": "not set",
5061
- "description": "Defines the default color palette used by those nodes that have a \\*\\*palette\\*\\* field (for example, the \\*\\*Scene\\*\\* node, \\[standard dialogs\\](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md, \\[dynamic custom voice keyboards\\](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-keyboard-base.md, and so on). Channels typically set the \\*\\*Scene.palette\\*\\* field to consistently color the standard dialogs and keyboards in the channel. Nodes that include a \\*\\*palette\\*\\* field can be set to an \\*\\*RSGPalette\\*\\* node to override the default colors specified in the \\*\\*Scene\\*\\* node. If a node that supports a palette does not set its \\*\\*palette\\*\\* filed, the node looks up the scene graph until it finds a node with its \\*\\*palette\\*\\* field set. If no ancestor node is found with its palette field set, the default color palette is used (grey with white text). The RSGPalette color values used by the Scene node are as follows:\n\n| Palette Color Name | Usages |\n| --- | --- |\n| PrimaryTextColor | The text color used for the entered text displayed in the VoiceTextEditBox node. |\n| SecondaryTextColor | The text color used for the hints displayed in the VoiceTextEditBox. |\n| InputFieldColor | The blend color applied to the VoiceTextEditBox background |\n| DialogBackgroundColor | Blend color for dialog's background bitmap. |\n| DialogItemColor | Blend color for the following items: * [StdDlgProgressItem's](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-progress-item.md spinner bitmap * [StdDlgDeterminateProgressItem's](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-determinate-progress-item.md graphic |\n| DialogTextColor | Color for the text in the following items: * [StdDlgTextItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md and [StdDlgGraphicItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md if the **namedTextStyle** field is set to \"normal\" or \"bold\". * All [content area items](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md, except for [StdDlgTextItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md and [StdDlgGraphicItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md. * [Title area](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-title-area.mdfields). Unfocused button. |\n| DialogFocusColor | Blend color for the following: * The [button area](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button-area.mdfields) focus bitmap. * The focused scrollbar thumb. |\n| DialogFocusItemColor | Color for the text of the focused button. |\n| DialogSecondaryTextColor | Color for the text of in the following items: * [StdDlgTextItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md and [StdDlgGraphicItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md if the **namedTextStyle** field is set to \"secondary\". * Disabled button. |\n| DialogSecondaryItemColor | Color for the following items: * The divider displayed below the title area. * The unfilled portion of the [StdDlgDeterminateProgressItem's](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-determinate-progress-item.md graphic. |\n| DialogInputFieldColor | The blend color for the text edit box background bitmap for keyboards used inside dialogs. |\n| DialogKeyboardColor | The blend color for the keyboard background bitmap for keyboards used inside dialogs |\n| DialogFootprintColor | The blend color for the following items: * The button focus footprint bitmap that is displayed when the [button area](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button-area.mdfields) does not have focus. * Unfocused scrollbar thumb and scrollbar track. |",
5152
+ "description": "Defines the default color palette used by those nodes that have a \\*\\*palette\\*\\* field (for example, the \\*\\*Scene\\*\\* node, \\[standard dialogs\\](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md, \\[dynamic custom voice keyboards\\](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-keyboard-base.md, and so on). Apps typically set the \\*\\*Scene.palette\\*\\* field to consistently color the standard dialogs and keyboards in the app. Nodes that include a \\*\\*palette\\*\\* field can be set to an \\*\\*RSGPalette\\*\\* node to override the default colors specified in the \\*\\*Scene\\*\\* node. If a node that supports a palette does not set its \\*\\*palette\\*\\* filed, the node looks up the scene graph until it finds a node with its \\*\\*palette\\*\\* field set. If no ancestor node is found with its palette field set, the default color palette is used (grey with white text). The RSGPalette color values used by the Scene node are as follows:\n\n| Palette Color Name | Usages |\n| --- | --- |\n| PrimaryTextColor | The text color used for the entered text displayed in the VoiceTextEditBox node. |\n| SecondaryTextColor | The text color used for the hints displayed in the VoiceTextEditBox. |\n| InputFieldColor | The blend color applied to the VoiceTextEditBox background |\n| DialogBackgroundColor | Blend color for dialog's background bitmap. |\n| DialogItemColor | Blend color for the following items: * [StdDlgProgressItem's](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-progress-item.md spinner bitmap * [StdDlgDeterminateProgressItem's](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-determinate-progress-item.md graphic |\n| DialogTextColor | Color for the text in the following items: * [StdDlgTextItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md and [StdDlgGraphicItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md if the **namedTextStyle** field is set to \"normal\" or \"bold\". * All [content area items](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md, except for [StdDlgTextItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md and [StdDlgGraphicItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md. * [Title area](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-title-area.mdfields). Unfocused button. |\n| DialogFocusColor | Blend color for the following: * The [button area](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button-area.mdfields) focus bitmap. * The focused scrollbar thumb. |\n| DialogFocusItemColor | Color for the text of the focused button. |\n| DialogSecondaryTextColor | Color for the text of in the following items: * [StdDlgTextItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md and [StdDlgGraphicItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md if the **namedTextStyle** field is set to \"secondary\". * Disabled button. |\n| DialogSecondaryItemColor | Color for the following items: * The divider displayed below the title area. * The unfilled portion of the [StdDlgDeterminateProgressItem's](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-determinate-progress-item.md graphic. |\n| DialogInputFieldColor | The blend color for the text edit box background bitmap for keyboards used inside dialogs. |\n| DialogKeyboardColor | The blend color for the keyboard background bitmap for keyboards used inside dialogs |\n| DialogFootprintColor | The blend color for the following items: * The button focus footprint bitmap that is displayed when the [button area](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button-area.mdfields) does not have focus. * Unfocused scrollbar thumb and scrollbar track. |",
5062
5153
  "name": "palette",
5063
5154
  "type": "RSGPalette node"
5064
5155
  }
@@ -5260,6 +5351,13 @@
5260
5351
  "name": "clippingRect",
5261
5352
  "type": "array of float"
5262
5353
  },
5354
+ {
5355
+ "accessPermission": "READ_WRITE",
5356
+ "default": "0xddddddff",
5357
+ "description": "Specifies the text color",
5358
+ "name": "color",
5359
+ "type": "color"
5360
+ },
5263
5361
  {
5264
5362
  "accessPermission": "READ_WRITE",
5265
5363
  "default": "false",
@@ -5267,6 +5365,27 @@
5267
5365
  "name": "enableRenderTracking",
5268
5366
  "type": "Boolean"
5269
5367
  },
5368
+ {
5369
+ "accessPermission": "READ_WRITE",
5370
+ "default": "system default",
5371
+ "description": "Specifies the size of the font in points. As noted in the description of the \\`fontUri\\` field, the use of fixed size system fonts ignores the value of the \\`fontSize\\` field.",
5372
+ "name": "fontSize",
5373
+ "type": "integer"
5374
+ },
5375
+ {
5376
+ "accessPermission": "READ_WRITE",
5377
+ "default": "system default",
5378
+ "description": "Specifies either a path to a TrueType or OpenType font file or a built-in system font name. For TrueType or OpenType font files, the file must be included with the application (e.g. \\`pkg:/fonts/SomeFontFile.ttf\\`). If no fontUri is specified, the System Default font is used. The table below shows the options for using built-in system fonts. The \"\\*\\*Fixed Size?\"\\*\\* column indicates whether the \\`fontSize\\` field of the \\*\\*SimpleLabel\\*\\* is respected or not. For those where the size is fixed, the font size cannot be modified.\n\n| fontUri String | Fixed Size? |\n| --- | --- |\n| `font:SmallestSystemFont` | Yes |\n| `font:SmallSystemFont` | Yes |\n| `font:MediumSystemFont` | Yes |\n| `font:LargeSystemFont` | Yes |\n| `font:SmallestBoldSystemFont` | Yes |\n| `font:SmallBoldSystemFont` | Yes |\n| `font:MediumBoldSystemFont` | Yes |\n| `font:LargeBoldSystemFont` | Yes |\n| `font:SystemFontFile` | No |\n| `font:BoldSystemFontFile` | No |\n| System Default (field not set) | Yes |",
5379
+ "name": "fontUri",
5380
+ "type": "string"
5381
+ },
5382
+ {
5383
+ "accessPermission": "READ_WRITE",
5384
+ "default": "left",
5385
+ "description": "See \\[\\*\\*Horizontal Origin\\*\\*\\](https://developer.roku.com/docs/references/scenegraph/renderable-nodes/simplelabel.mdSimpleLabel-HorizontalOrigin)",
5386
+ "name": "horizOrigin",
5387
+ "type": "string"
5388
+ },
5270
5389
  {
5271
5390
  "accessPermission": "READ_WRITE",
5272
5391
  "default": "true",
@@ -5284,7 +5403,7 @@
5284
5403
  {
5285
5404
  "accessPermission": "READ_WRITE",
5286
5405
  "default": "false",
5287
- "description": "Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation",
5406
+ "description": "Set to true to suppress the default CVAA text to speech. This allows apps to provide their own custom implementation",
5288
5407
  "name": "muteAudioGuide",
5289
5408
  "type": "Boolean"
5290
5409
  },
@@ -5330,6 +5449,13 @@
5330
5449
  "name": "scaleRotateCenter",
5331
5450
  "type": "vector2d"
5332
5451
  },
5452
+ {
5453
+ "accessPermission": "READ_WRITE",
5454
+ "default": "\"\"",
5455
+ "description": "Specifies the text to be displayed",
5456
+ "name": "text",
5457
+ "type": "string"
5458
+ },
5333
5459
  {
5334
5460
  "accessPermission": "READ_WRITE",
5335
5461
  "default": "[0.0,0.0]",
@@ -5337,6 +5463,13 @@
5337
5463
  "name": "translation",
5338
5464
  "type": "vector2d"
5339
5465
  },
5466
+ {
5467
+ "accessPermission": "READ_WRITE",
5468
+ "default": "top",
5469
+ "description": "See \\[\\*\\*Vertical Origin\\*\\*\\](https://developer.roku.com/docs/references/scenegraph/renderable-nodes/simplelabel.mdSimpleLabel-VerticalOrigin)",
5470
+ "name": "vertOrigin",
5471
+ "type": "string"
5472
+ },
5340
5473
  {
5341
5474
  "accessPermission": "READ_WRITE",
5342
5475
  "default": "true",
@@ -5350,7 +5483,7 @@
5350
5483
  "url": "https://developer.roku.com/docs/references/scenegraph/renderable-nodes/simplelabel.md"
5351
5484
  },
5352
5485
  "soundeffect": {
5353
- "description": "Extends [**Node**](https://developer.roku.com/docs/references/scenegraph/node.md\n\nThe SoundEffect node class is used to play audio sound effects that can be triggered from events that occur in the UI. Typically, these sound effects are short audio clips, but there is no inherent limit on their length. Currently, up to four simultaneous sounds can be playing at any time, in addition to audio from streaming content and TextToSpeech audio.\n\nFiles can be installed locally as part of the channel package or dynamically downloaded from the network. All files must be WAV (i.e. PCM) format.\n\nFor local files, the convention is to include the WAV files in a directory named \"sounds\".\n\nFor downloaded files, a least-recently-used (LRU) mechanism is used to keep the most recently downloaded/played sounds in temporary storage on the device. If the limits on the maximum number/size of downloaded sounds is exceeded, the least recently used sounds are removed from temporary storage. They will be automatically reloaded the next time the control field is set to \"play\".\n\nA sample demonstrating how to use the SoundEffect node can be found here: [SimpleSoundEffect](https://github.com/rokudev/samples/blob/master/media/SimpleSoundEffect)",
5486
+ "description": "Extends [**Node**](https://developer.roku.com/docs/references/scenegraph/node.md\n\nThe SoundEffect node class is used to play audio sound effects that can be triggered from events that occur in the UI. Typically, these sound effects are short audio clips, but there is no inherent limit on their length. Currently, up to four simultaneous sounds can be playing at any time, in addition to audio from streaming content and TextToSpeech audio.\n\nFiles can be installed locally as part of the package file or dynamically downloaded from the network. All files must be WAV (i.e. PCM) format.\n\nFor local files, the convention is to include the WAV files in a directory named \"sounds\".\n\nFor downloaded files, a least-recently-used (LRU) mechanism is used to keep the most recently downloaded/played sounds in temporary storage on the device. If the limits on the maximum number/size of downloaded sounds is exceeded, the least recently used sounds are removed from temporary storage. They will be automatically reloaded the next time the control field is set to \"play\".\n\nA sample demonstrating how to use the SoundEffect node can be found here: [SimpleSoundEffect](https://github.com/rokudev/samples/blob/master/media/SimpleSoundEffect)",
5354
5487
  "events": [],
5355
5488
  "extends": {
5356
5489
  "name": "Node",
@@ -5374,7 +5507,7 @@
5374
5507
  {
5375
5508
  "accessPermission": "READ_ONLY",
5376
5509
  "default": "none",
5377
- "description": "Can be used to track the progress of current state of local and networked sound files When the field value changes to ready, the sound is ready to be played. The possible values are:\n\n| Value | Meaning |\n| --- | --- |\n| none | No current playback state |\n| playing | Audio is currently playing. |\n| stopped | The audio playback was stopped by setting control to \"stop\". The state will also be set to \"stopped\" if audio was playing and the uri is changed. |\n| finished | The audio playback reached the end of the audio |\n| toomanysounds | Control was to \"play\" while there were already the maximum number of SoundEffect sounds playing. Currently, this limit is 4. |\n| notready | The sound file is not on the device. This is set in response to the control field being set to \"play\". For local WAV files included in a channel package, it will be occur if the path to the file is not correct, or if the file is not a valid WAV file. For network-accessed WAV files, this indicates one of these three conditions is true: * The file has been requested, but is not finished downloading. In this case, the `loadStatus` field will be set to \"loading\". * The file request has completed, but the URL is incorrect or the downloaded file is not a valid WAV filed. In this case, the `loadStatus` field will be set to \"failed\" * The file has previously been downloaded, but has been flushed from the LRU cache. In this case, the `loadStatus` field will be set to \"flushed\". |",
5510
+ "description": "Can be used to track the progress of current state of local and networked sound files When the field value changes to ready, the sound is ready to be played. The possible values are:\n\n| Value | Meaning |\n| --- | --- |\n| none | No current playback state |\n| playing | Audio is currently playing. |\n| stopped | The audio playback was stopped by setting control to \"stop\". The state will also be set to \"stopped\" if audio was playing and the uri is changed. |\n| finished | The audio playback reached the end of the audio |\n| toomanysounds | Control was to \"play\" while there were already the maximum number of SoundEffect sounds playing. Currently, this limit is 4. |\n| notready | The sound file is not on the device. This is set in response to the control field being set to \"play\". For local WAV files included in a package file, it will be occur if the path to the file is not correct, or if the file is not a valid WAV file. For network-accessed WAV files, this indicates one of these three conditions is true: * The file has been requested, but is not finished downloading. In this case, the `loadStatus` field will be set to \"loading\". * The file request has completed, but the URL is incorrect or the downloaded file is not a valid WAV filed. In this case, the `loadStatus` field will be set to \"failed\" * The file has previously been downloaded, but has been flushed from the LRU cache. In this case, the `loadStatus` field will be set to \"flushed\". |",
5378
5511
  "name": "state",
5379
5512
  "type": "value string"
5380
5513
  },
@@ -5398,8 +5531,7 @@
5398
5531
  "url": "https://developer.roku.com/docs/references/scenegraph/media-playback-nodes/soundeffect.md"
5399
5532
  },
5400
5533
  "standarddialog": {
5401
- "availableSince": "10.0",
5402
- "description": "_Available since Roku OS 10.0_\n\nExtends [Group](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\"**Group**\")\n\nThe **StandardDialog** node is the base for Roku's pre-built standard message, keyboard, pinpad, and progress dialogs. It can also be used directly with a custom dialog structure built with the **StdDialogItem** nodes.",
5534
+ "description": "Extends [Group](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\"**Group**\")\n\nThe **StandardDialog** node is the base for Roku's pre-built standard message, keyboard, pinpad, and progress dialogs. It can also be used directly with a custom dialog structure built with the **StdDialogItem** nodes.",
5403
5535
  "events": [],
5404
5536
  "extends": {
5405
5537
  "name": "Group",
@@ -5437,7 +5569,7 @@
5437
5569
  {
5438
5570
  "accessPermission": "READ_WRITE",
5439
5571
  "default": "not set",
5440
- "description": "Sets the color palette for the dialog's background, text, buttons, and other elements. By default, no palette is specified; therefore, the dialog inherits the color palette from the nodes higher in the scene graph (typically, from the dialog's \\[Scene\\](https://developer.roku.com/docs/references/scenegraph/scene.md node, which has a \\*\\*palette\\*\\* field that can be used to consistently color the standard dialogs and keyboards in the channel). The RSGPalette color values used by the StandardDialog node are as follows:\n\n| Palette Color Name | Usages |\n| --- | --- |\n| DialogBackgroundColor | Blend color for dialog's background bitmap. |\n| DialogItemColor | Blend color for the following items: * [StdDlgProgressItem's](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-progress-item.md spinner bitmap * [StdDlgDeterminateProgressItem's](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-determinate-progress-item.md graphic |\n| DialogTextColor | Color for the text in the following items: * [StdDlgTextItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md and [StdDlgGraphicItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md if the **namedTextStyle** field is set to \"normal\" or \"bold\". * All [content area items](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md, except for [StdDlgTextItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md and [StdDlgGraphicItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md. * [Title area](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-title-area.mdfields). Unfocused button. |\n| DialogFocusColor | Blend color for the following: * The [button area](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button-area.mdfields) focus bitmap. * The focused scrollbar thumb. |\n| DialogFocusItemColor | Color for the text of the focused button. |\n| DialogSecondaryTextColor | Color for the text of in the following items: * [StdDlgTextItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md and [StdDlgGraphicItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md if the **namedTextStyle** field is set to \"secondary\". * Disabled button. |\n| DialogSecondaryItemColor | Color for the following items: * The divider displayed below the title area. * The unfilled portion of the [StdDlgDeterminateProgressItem's](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-determinate-progress-item.md graphic. |\n| DialogInputFieldColor | The blend color for the text edit box background bitmap for keyboards used inside dialogs. |\n| DialogKeyboardColor | The blend color for the keyboard background bitmap for keyboards used inside dialogs |\n| DialogFootprintColor | The blend color for the following items: * The button focus footprint bitmap that is displayed when the [button area](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button-area.mdfields) does not have focus. * Unfocused scrollbar thumb and scrollbar track. |",
5572
+ "description": "Sets the color palette for the dialog's background, text, buttons, and other elements. By default, no palette is specified; therefore, the dialog inherits the color palette from the nodes higher in the scene graph (typically, from the dialog's \\[Scene\\](https://developer.roku.com/docs/references/scenegraph/scene.md node, which has a \\*\\*palette\\*\\* field that can be used to consistently color the standard dialogs and keyboards in the app). The RSGPalette color values used by the StandardDialog node are as follows:\n\n| Palette Color Name | Usages |\n| --- | --- |\n| DialogBackgroundColor | Blend color for dialog's background bitmap. |\n| DialogItemColor | Blend color for the following items: * [StdDlgProgressItem's](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-progress-item.md spinner bitmap * [StdDlgDeterminateProgressItem's](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-determinate-progress-item.md graphic |\n| DialogTextColor | Color for the text in the following items: * [StdDlgTextItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md and [StdDlgGraphicItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md if the **namedTextStyle** field is set to \"normal\" or \"bold\". * All [content area items](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md, except for [StdDlgTextItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md and [StdDlgGraphicItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md. * [Title area](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-title-area.mdfields). Unfocused button. |\n| DialogFocusColor | Blend color for the following: * The [button area](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button-area.mdfields) focus bitmap. * The focused scrollbar thumb. |\n| DialogFocusItemColor | Color for the text of the focused button. |\n| DialogSecondaryTextColor | Color for the text of in the following items: * [StdDlgTextItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md and [StdDlgGraphicItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md if the **namedTextStyle** field is set to \"secondary\". * Disabled button. |\n| DialogSecondaryItemColor | Color for the following items: * The divider displayed below the title area. * The unfilled portion of the [StdDlgDeterminateProgressItem's](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-determinate-progress-item.md graphic. |\n| DialogInputFieldColor | The blend color for the text edit box background bitmap for keyboards used inside dialogs. |\n| DialogKeyboardColor | The blend color for the keyboard background bitmap for keyboards used inside dialogs |\n| DialogFootprintColor | The blend color for the following items: * The button focus footprint bitmap that is displayed when the [button area](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button-area.mdfields) does not have focus. * Unfocused scrollbar thumb and scrollbar track. |",
5441
5573
  "name": "palette",
5442
5574
  "type": "RSGPalette node"
5443
5575
  },
@@ -5461,8 +5593,7 @@
5461
5593
  "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md"
5462
5594
  },
5463
5595
  "standardkeyboarddialog": {
5464
- "availableSince": "10.0",
5465
- "description": "_Available since Roku OS 10.0_\n\nExtends [StandardDialog](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md\"**Standard Dialog**\")\n\nThe **StandardKeyboardDialog** node enables text and voice entry of strings consisting of alphanumeric characters as well as many commonly used symbols. It is similar to the legacy [KeyboardDialog](https://developer.roku.com/docs/references/scenegraph/dialog-nodes/keyboarddialog.md node, but includes voice entry functionality, which is provided through its internal **DynamicKeyboard** node.\n\n![roku815px - keyboard-dialog](https://image.roku.com/ZHZscHItMTc2/keyboard-dialog.jpg)",
5596
+ "description": "Extends [StandardDialog](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md\"**Standard Dialog**\")\n\nThe **StandardKeyboardDialog** node enables text and voice entry of strings consisting of alphanumeric characters as well as many commonly used symbols. It is similar to the legacy [KeyboardDialog](https://developer.roku.com/docs/references/scenegraph/dialog-nodes/keyboarddialog.md node, but includes voice entry functionality, which is provided through its internal **DynamicKeyboard** node.\n\n![roku815px - keyboard-dialog](https://image.roku.com/ZHZscHItMTc2/keyboard-dialog.jpg)",
5466
5597
  "events": [],
5467
5598
  "extends": {
5468
5599
  "name": "StandardDialog",
@@ -5517,8 +5648,7 @@
5517
5648
  "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-keyboard-dialog.md"
5518
5649
  },
5519
5650
  "standardmessagedialog": {
5520
- "availableSince": "10.0",
5521
- "description": "_Available since Roku OS 10.0_\n\nExtends [StandardDialog](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md\"**Standard Dialog**\")\n\nThe **StandardMessageDialog** node is used to displays a message to the user. It is similar to the legacy [Dialog](https://developer.roku.com/docs/references/scenegraph/dialog-nodes/dialog.md node. It may contain the following items (from top to bottom):\n\n* One or more blocks of text at the top.\n* One bulleted / numbered list.\n* One or more blocks of text at the bottom.\n\n![roku815px - standard-message-dialog](https://image.roku.com/ZHZscHItMTc2/standard-message-dialog.jpg)",
5651
+ "description": "Extends [StandardDialog](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md\"**Standard Dialog**\")\n\nThe **StandardMessageDialog** node is used to displays a message to the user. It is similar to the legacy [Dialog](https://developer.roku.com/docs/references/scenegraph/dialog-nodes/dialog.md node. It may contain the following items (from top to bottom):\n\n* One or more blocks of text at the top.\n* One bulleted / numbered list.\n* One or more blocks of text at the bottom.\n\n![roku815px - standard-message-dialog](https://image.roku.com/ZHZscHItMTc2/standard-message-dialog.jpg)",
5522
5652
  "events": [],
5523
5653
  "extends": {
5524
5654
  "name": "StandardDialog",
@@ -5573,8 +5703,7 @@
5573
5703
  "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-message-dialog.md"
5574
5704
  },
5575
5705
  "standardpinpaddialog": {
5576
- "availableSince": "10.0",
5577
- "description": "_Available since Roku OS 10.0_\n\nExtends [StandardDialog](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md\"**Standard Dialog**\")\n\nThe **StandardPinPadDialog** node enables text and voice entry of numeric characters—typically, short numeric PIN codes. It is similar to the legacy [PinDialog](https://developer.roku.com/docs/references/scenegraph/dialog-nodes/pindialog.md node, but includes additional voice entry of the numeric digits. This additional functionality is provided through the node's internal DynamicPinPad and VoiceTextEditBox nodes.\n\n![roku815px - pin-pad-dialog](https://image.roku.com/ZHZscHItMTc2/pin-pad-dialog.jpg)",
5706
+ "description": "Extends [StandardDialog](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md\"**Standard Dialog**\")\n\nThe **StandardPinPadDialog** node enables text and voice entry of numeric characters—typically, short numeric PIN codes. It is similar to the legacy [PinDialog](https://developer.roku.com/docs/references/scenegraph/dialog-nodes/pindialog.md node, but includes additional voice entry of the numeric digits. This additional functionality is provided through the node's internal DynamicPinPad and VoiceTextEditBox nodes.\n\n![roku815px - pin-pad-dialog](https://image.roku.com/ZHZscHItMTc2/pin-pad-dialog.jpg)",
5578
5707
  "events": [],
5579
5708
  "extends": {
5580
5709
  "name": "StandardDialog",
@@ -5622,8 +5751,7 @@
5622
5751
  "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-pinpad-dialog.md"
5623
5752
  },
5624
5753
  "standardprogressdialog": {
5625
- "availableSince": "10.0",
5626
- "description": "_Available since Roku OS 10.0_\n\nExtends [StandardDialog](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md\"**Standard Dialog**\")\n\nThe StandardProgressDialog node displays a spinning progress indicator that includes a short progress message to the user. It is similar to the legacy [ProgressDialog](https://developer.roku.com/docs/references/scenegraph/dialog-nodes/progressdialog.md node.\n\n![roku815px - progress-dialog-title](https://image.roku.com/ZHZscHItMTc2/progress-dialog-title-v2.jpg)",
5754
+ "description": "Extends [StandardDialog](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md\"**Standard Dialog**\")\n\nThe StandardProgressDialog node displays a spinning progress indicator that includes a short progress message to the user. It is similar to the legacy [ProgressDialog](https://developer.roku.com/docs/references/scenegraph/dialog-nodes/progressdialog.md node.\n\n![roku815px - progress-dialog-title](https://image.roku.com/ZHZscHItMTc2/progress-dialog-title-v2.jpg)",
5627
5755
  "events": [],
5628
5756
  "extends": {
5629
5757
  "name": "StandardDialog",
@@ -5650,8 +5778,7 @@
5650
5778
  "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-progress-dialog.md"
5651
5779
  },
5652
5780
  "stddlgactioncarditem": {
5653
- "availableSince": "11.0",
5654
- "description": "_Available since Roku OS 11.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md",
5781
+ "description": "Extends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md",
5655
5782
  "events": [],
5656
5783
  "extends": {
5657
5784
  "name": "StdDlgItemBase",
@@ -5678,8 +5805,7 @@
5678
5805
  "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-action-card-item.md"
5679
5806
  },
5680
5807
  "stddlgareabase": {
5681
- "availableSince": "10.0",
5682
- "description": "_Available since Roku OS 10.0_\n\nExtends [Group](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\n\nThe **StdDlgAreaBase** node is the base class and provides the common functionality for the three StandardDialog area nodes: [**StdDlgTitleArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-title-area.md, [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md and [**StdDlgButtonArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button-area.md.",
5808
+ "description": "Extends [Group](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\n\nThe **StdDlgAreaBase** node is the base class and provides the common functionality for the three StandardDialog area nodes: [**StdDlgTitleArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-title-area.md, [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md and [**StdDlgButtonArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button-area.md.",
5683
5809
  "events": [],
5684
5810
  "extends": {
5685
5811
  "name": "Group",
@@ -5691,8 +5817,7 @@
5691
5817
  "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-area-base.md"
5692
5818
  },
5693
5819
  "stddlgbullettextitem": {
5694
- "availableSince": "10.0",
5695
- "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgBulletTextItem** node is used to display a bulleted list of text in the dialog's content area. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![roku815px - StdDlgBulletTextItem](https://image.roku.com/ZHZscHItMTc2/StdDlgBulletTextItem-v2.jpg)",
5820
+ "description": "Extends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgBulletTextItem** node is used to display a bulleted list of text in the dialog's content area. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![roku815px - StdDlgBulletTextItem](https://image.roku.com/ZHZscHItMTc2/StdDlgBulletTextItem-v2.jpg)",
5696
5821
  "events": [],
5697
5822
  "extends": {
5698
5823
  "name": "StdDlgItemBase",
@@ -5719,8 +5844,7 @@
5719
5844
  "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-bullet-text-item.md"
5720
5845
  },
5721
5846
  "stddlgbutton": {
5722
- "availableSince": "10.0",
5723
- "description": "_Available since Roku OS 10.0_\n\nExtends [Group](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\"**Group**\")\n\n**StdDlgButton** is the class used for each button in the [button area](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog-framework-overview.mdstructure). The buttons are displayed in the order in which they are listed as children of the [**StdDlgButtonArea** node](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button-area.md. The size and layout of each button are controlled by the StandardDialog layout algorithm. **StdDlgButton** nodes should only be used as children of a **StdDlgButtonArea** node.\n\n![roku815px - std-dlg-button](https://image.roku.com/ZHZscHItMTc2/std-dlg-button-3.jpg)",
5847
+ "description": "Extends [Group](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\"**Group**\")\n\n**StdDlgButton** is the class used for each button in the [button area](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog-framework-overview.mdstructure). The buttons are displayed in the order in which they are listed as children of the [**StdDlgButtonArea** node](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button-area.md. The size and layout of each button are controlled by the StandardDialog layout algorithm. **StdDlgButton** nodes should only be used as children of a **StdDlgButtonArea** node.\n\n![roku815px - std-dlg-button](https://image.roku.com/ZHZscHItMTc2/std-dlg-button-3.jpg)",
5724
5848
  "events": [],
5725
5849
  "extends": {
5726
5850
  "name": "Group",
@@ -5747,8 +5871,7 @@
5747
5871
  "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button.md"
5748
5872
  },
5749
5873
  "stddlgbuttonarea": {
5750
- "availableSince": "10.0",
5751
- "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgAreaBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-area-base.md\"**StdDlgAreaBase**\")\n\nThe **StdDlgButtonArea** node is always positioned at the bottom of the [StandardDialog](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md. It contains zero or more child nodes of type [**StdDlgButton**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button.md or a type that extends **StdDlgButton**. Each of the **StdDlgButton** nodes provides an option to perform some task related to the purpose of the dialog. For example, dialogs often have \"Continue\" and \"Cancel\" buttons in the bottom area. The buttons are positioned and sized so that they are arranged vertically in the order in which their **StdDlgButton** child nodes are listed.\n\nA dialog may only have a single button area, and the button area is optional.\n\n![roku815px - std-dlg-button-area](https://image.roku.com/ZHZscHItMTc2/std-dlg-button-area.jpg)",
5874
+ "description": "Extends [StdDlgAreaBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-area-base.md\"**StdDlgAreaBase**\")\n\nThe **StdDlgButtonArea** node is always positioned at the bottom of the [StandardDialog](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md. It contains zero or more child nodes of type [**StdDlgButton**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button.md or a type that extends **StdDlgButton**. Each of the **StdDlgButton** nodes provides an option to perform some task related to the purpose of the dialog. For example, dialogs often have \"Continue\" and \"Cancel\" buttons in the bottom area. The buttons are positioned and sized so that they are arranged vertically in the order in which their **StdDlgButton** child nodes are listed.\n\nA dialog may only have a single button area, and the button area is optional.\n\n![roku815px - std-dlg-button-area](https://image.roku.com/ZHZscHItMTc2/std-dlg-button-area.jpg)",
5752
5875
  "events": [],
5753
5876
  "extends": {
5754
5877
  "name": "StdDlgAreaBase",
@@ -5760,8 +5883,7 @@
5760
5883
  "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button-area.md"
5761
5884
  },
5762
5885
  "stddlgcontentarea": {
5763
- "availableSince": "10.0",
5764
- "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgAreaBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-area-base.md\"**StdDlgAreaBase**\")\n\nThe **StdDlgContentArea** node contains the main body of the dialog. It is positioned between the title area and the button area.\n\nIt contains zero or more child nodes that extend [**StdDlgItemBase**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md (for example, [**StdDlgTextItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md, [**StdDlgProgressItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-progress-item.md, [**StdDlgGraphicItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md, and other dialog building blocks). The layout and position of the [**StdDlgItemBase** nodes](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md are based on the dialog's width; the nodes are arranged vertically from top to bottom in the content area based on the order in which they are listed. The content area should contain only [**StdDlgItemBase** nodes](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md; otherwise, its layout and rendering are undefined.\n\n![roku815px - content-area](https://image.roku.com/ZHZscHItMTc2/content-area.jpg)",
5886
+ "description": "Extends [StdDlgAreaBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-area-base.md\"**StdDlgAreaBase**\")\n\nThe **StdDlgContentArea** node contains the main body of the dialog. It is positioned between the title area and the button area.\n\nIt contains zero or more child nodes that extend [**StdDlgItemBase**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md (for example, [**StdDlgTextItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md, [**StdDlgProgressItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-progress-item.md, [**StdDlgGraphicItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md, and other dialog building blocks). The layout and position of the [**StdDlgItemBase** nodes](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md are based on the dialog's width; the nodes are arranged vertically from top to bottom in the content area based on the order in which they are listed. The content area should contain only [**StdDlgItemBase** nodes](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md; otherwise, its layout and rendering are undefined.\n\n![roku815px - content-area](https://image.roku.com/ZHZscHItMTc2/content-area.jpg)",
5765
5887
  "events": [],
5766
5888
  "extends": {
5767
5889
  "name": "StdDlgAreaBase",
@@ -5773,8 +5895,7 @@
5773
5895
  "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md"
5774
5896
  },
5775
5897
  "stddlgcustomitem": {
5776
- "availableSince": "10.5",
5777
- "description": "_Available since Roku OS 10.5_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgCustomItem** node is used to display free-form dialog items in the content area that require a custom layout.\n\n![roku400px - - custom-item](https://image.roku.com/ZHZscHItMTc2/std-dlg-custom-item-multi-column.jpeg)",
5898
+ "description": "Extends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgCustomItem** node is used to display free-form dialog items in the content area that require a custom layout.\n\n![roku400px - - custom-item](https://image.roku.com/ZHZscHItMTc2/std-dlg-custom-item-multi-column.jpeg)",
5778
5899
  "events": [],
5779
5900
  "extends": {
5780
5901
  "name": "StdDlgItemBase",
@@ -5801,8 +5922,7 @@
5801
5922
  "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-custom-item.md"
5802
5923
  },
5803
5924
  "stddlgdeterminateprogressitem": {
5804
- "availableSince": "10.0",
5805
- "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgDeterminateProgressItem** node is used to display a progress indicator in the dialog's content area. It provides the percentage of progress that has been completed for a task that takes a limited amount of time. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![roku815px - std-dlg-determinate-progress-item](https://image.roku.com/ZHZscHItMTc2/std-dlg-determinate-progress-item-2.jpg)",
5925
+ "description": "Extends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgDeterminateProgressItem** node is used to display a progress indicator in the dialog's content area. It provides the percentage of progress that has been completed for a task that takes a limited amount of time. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![roku815px - std-dlg-determinate-progress-item](https://image.roku.com/ZHZscHItMTc2/std-dlg-determinate-progress-item-2.jpg)",
5806
5926
  "events": [],
5807
5927
  "extends": {
5808
5928
  "name": "StdDlgItemBase",
@@ -5829,8 +5949,7 @@
5829
5949
  "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-determinate-progress-item.md"
5830
5950
  },
5831
5951
  "stddlggraphicitem": {
5832
- "availableSince": "10.0",
5833
- "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgGraphicItem** node is used to display an image in the dialog's content area with an optional text label displayed to the left, right, above, or below the image. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![roku815px - std-dlg-graphic-item](https://image.roku.com/ZHZscHItMTc2/std-dlg-graphic-item.jpg)",
5952
+ "description": "Extends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgGraphicItem** node is used to display an image in the dialog's content area with an optional text label displayed to the left, right, above, or below the image. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![roku815px - std-dlg-graphic-item](https://image.roku.com/ZHZscHItMTc2/std-dlg-graphic-item.jpg)",
5834
5953
  "events": [],
5835
5954
  "extends": {
5836
5955
  "name": "StdDlgItemBase",
@@ -5878,8 +5997,7 @@
5878
5997
  "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md"
5879
5998
  },
5880
5999
  "stddlgitembase": {
5881
- "availableSince": "10.0",
5882
- "description": "_Available since Roku OS 10.0_\n\nExtends [Group](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\n\n**StdDlgItemBase** is the base class for all the content area items. It provides the common functionality for all StdDlg\\[_x_\\]Item nodes (for example, [**StdDlgBulletTextItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-bullet-text-item.md, [**StdDlgTextItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md, [**StdDlgKeyboardItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-keyboard-item.md, [**StdDlgProgressItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-progress-item.md, [**StdDlgGraphicItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md, and the other dialog building block nodes).",
6000
+ "description": "Extends [Group](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\n\n**StdDlgItemBase** is the base class for all the content area items. It provides the common functionality for all StdDlg\\[_x_\\]Item nodes (for example, [**StdDlgBulletTextItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-bullet-text-item.md, [**StdDlgTextItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md, [**StdDlgKeyboardItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-keyboard-item.md, [**StdDlgProgressItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-progress-item.md, [**StdDlgGraphicItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md, and the other dialog building block nodes).",
5883
6001
  "events": [],
5884
6002
  "extends": {
5885
6003
  "name": "Group",
@@ -5899,8 +6017,7 @@
5899
6017
  "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md"
5900
6018
  },
5901
6019
  "stddlgitemgroup": {
5902
- "availableSince": "11.0",
5903
- "description": "_Available since Roku OS 11.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\n\nThe **StdDlgItemGroup** node is used to visually group a set of StdDlgAreaBase child nodes in a custom dialog. Developers can use this node to reduce the vertical spacing between the StdDlgItemBase child nodes. For [**StdDlgActionCardItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-action-card-item.md nodes, the **StdDlgItemGroup** node enforces the rule that when multiple items **StdDlgActionCardItem** nodes have their **iconType** field set to \"radiobutton\", only one may have its **selected** status be set to \"true\".\n\nThe **StdDlgItemGroup** node may contain one or more [**StdDlgItemBase**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md child nodes (for example, StdDlgTextItem, StdDlgGraphicItem, and so on) as its children. It will visually group those child **StdDlgItemBase** nodes by reducing the amount of vertical space between them. However, the primary benefit of the StdDlgItemGroup node is managing **StdDlgActionCardItem** child nodes that have their **iconType** field set to \"radiobutton\".\n\n![roku815px - actionCards-radio-checkbox-items](https://image.roku.com/ZHZscHItMTc2/actionCards-radio-checkbox-items.jpg)\n\n> See the [**stdDlgActionCardItem** documentation](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-action-card-item.mdradiobutton-icontype) for code demonstarting how to use the **StdDlgItemGroup** node in a custom dialog.",
6020
+ "description": "Extends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\n\nThe **StdDlgItemGroup** node is used to visually group a set of StdDlgAreaBase child nodes in a custom dialog. Developers can use this node to reduce the vertical spacing between the StdDlgItemBase child nodes. For [**StdDlgActionCardItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-action-card-item.md nodes, the **StdDlgItemGroup** node enforces the rule that when multiple items **StdDlgActionCardItem** nodes have their **iconType** field set to \"radiobutton\", only one may have its **selected** status be set to \"true\".\n\nThe **StdDlgItemGroup** node may contain one or more [**StdDlgItemBase**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md child nodes (for example, StdDlgTextItem, StdDlgGraphicItem, and so on) as its children. It will visually group those child **StdDlgItemBase** nodes by reducing the amount of vertical space between them. However, the primary benefit of the StdDlgItemGroup node is managing **StdDlgActionCardItem** child nodes that have their **iconType** field set to \"radiobutton\".\n\n![roku815px - actionCards-radio-checkbox-items](https://image.roku.com/ZHZscHItMTc2/actionCards-radio-checkbox-items.jpg)\n\n> See the [**stdDlgActionCardItem** documentation](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-action-card-item.mdradiobutton-icontype) for code demonstarting how to use the **StdDlgItemGroup** node in a custom dialog.",
5904
6021
  "events": [],
5905
6022
  "extends": {
5906
6023
  "name": "StdDlgItemBase",
@@ -5920,8 +6037,7 @@
5920
6037
  "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-group.md"
5921
6038
  },
5922
6039
  "stddlgkeyboarditem": {
5923
- "availableSince": "10.0",
5924
- "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgKeyboardItem** node is used to display a keyboard or PINpad in the dialog's content area. It provides text and voice entry of strings containing alphanumeric characters and symbols or numeric digits. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![roku815px - std-dlg-keyboard-item](https://image.roku.com/ZHZscHItMTc2/std-dlg-keyboard-item.jpg)",
6040
+ "description": "Extends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgKeyboardItem** node is used to display a keyboard or PINpad in the dialog's content area. It provides text and voice entry of strings containing alphanumeric characters and symbols or numeric digits. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![roku815px - std-dlg-keyboard-item](https://image.roku.com/ZHZscHItMTc2/std-dlg-keyboard-item.jpg)",
5925
6041
  "events": [],
5926
6042
  "extends": {
5927
6043
  "name": "StdDlgItemBase",
@@ -5955,8 +6071,7 @@
5955
6071
  "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-keyboard-item.md"
5956
6072
  },
5957
6073
  "stddlgmultistyletextitem": {
5958
- "availableSince": "11.0",
5959
- "description": "_Available since Roku OS 11.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md",
6074
+ "description": "Extends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md",
5960
6075
  "events": [],
5961
6076
  "extends": {
5962
6077
  "name": "StdDlgItemBase",
@@ -5990,8 +6105,7 @@
5990
6105
  "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-multi-style-text-item.md"
5991
6106
  },
5992
6107
  "stddlgprogressitem": {
5993
- "availableSince": "10.0",
5994
- "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgProgressItem** node is used to display a spinning progress indicator in the dialog's content area. It provides the status of a task that takes an indeterminate amount of time. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![roku815px - std-dlg-progress-item](https://image.roku.com/ZHZscHItMTc2/std-dlg-progress-item.jpg)",
6108
+ "description": "Extends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgProgressItem** node is used to display a spinning progress indicator in the dialog's content area. It provides the status of a task that takes an indeterminate amount of time. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![roku815px - std-dlg-progress-item](https://image.roku.com/ZHZscHItMTc2/std-dlg-progress-item.jpg)",
5995
6109
  "events": [],
5996
6110
  "extends": {
5997
6111
  "name": "StdDlgItemBase",
@@ -6011,8 +6125,7 @@
6011
6125
  "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-progress-item.md"
6012
6126
  },
6013
6127
  "stddlgsidecardarea": {
6014
- "availableSince": "11.0",
6015
- "description": "_Available since Roku OS 11.0_\n\nExtends [StdDlgAreaBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-area-base.md",
6128
+ "description": "Extends [StdDlgAreaBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-area-base.md",
6016
6129
  "events": [],
6017
6130
  "extends": {
6018
6131
  "name": "StdDlgAreaBase",
@@ -6043,7 +6156,7 @@
6043
6156
  {
6044
6157
  "accessPermission": "READ_WRITE",
6045
6158
  "default": "0.0f",
6046
- "description": "Specifies the width of the \\*\\*StdDlgSideCardArea\\*\\* node. If this field is set to its default value (0.0), the width is set to the width of the \\[\\*\\*StdDlgContentArea\\*\\*\\]((https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md) node's bounding rectangle (the union of the width of all of its child nodes). If set to a value greater than 0.0, the width of the \\*\\*StdDlgSideCardArea\\*\\* node is fixed to that explicit value. The height of \\*\\*StdDlgSideCardArea\\*\\* node is based on the StandardDialog layout logic. This sets the height to a maximum of the height of the \\*\\*StdDlgSideCardArea\\*\\* bounding rectangle and the height of the vertical column containing the dialog's child \\[\\*\\*StdDlgAreaBase\\*\\*\\](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-area-base.md nodes. This is constrained by the maximum permissible height of the dialog such that it is fully visible onscreen.",
6159
+ "description": "Specifies the width of the \\*\\*StdDlgSideCardArea\\*\\* node. If this field is set to its default value (0.0), the width is set to the width of the \\[\\*\\*StdDlgContentArea\\*\\*\\](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md) node's bounding rectangle (the union of the width of all of its child nodes). If set to a value greater than 0.0, the width of the \\*\\*StdDlgSideCardArea\\*\\* node is fixed to that explicit value. The height of \\*\\*StdDlgSideCardArea\\*\\* node is based on the StandardDialog layout logic. This sets the height to a maximum of the height of the \\*\\*StdDlgSideCardArea\\*\\* bounding rectangle and the height of the vertical column containing the dialog's child \\[\\*\\*StdDlgAreaBase\\*\\*\\](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-area-base.md nodes. This is constrained by the maximum permissible height of the dialog such that it is fully visible onscreen.",
6047
6160
  "name": "width",
6048
6161
  "type": "float"
6049
6162
  }
@@ -6053,8 +6166,7 @@
6053
6166
  "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-side-card-area.md"
6054
6167
  },
6055
6168
  "stddlgtextitem": {
6056
- "availableSince": "10.0",
6057
- "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgTextItem** node is used to display a block of text. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![roku815px - StdDlgTextItem](https://image.roku.com/ZHZscHItMTc2/std-dlg-text-item.jpg)\n\n> To separate lines of text, use multiple **StdDlgTextItem** nodes. Do not use newline characters.",
6169
+ "description": "Extends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgTextItem** node is used to display a block of text. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![roku815px - StdDlgTextItem](https://image.roku.com/ZHZscHItMTc2/std-dlg-text-item.jpg)\n\n> To separate lines of text, use multiple **StdDlgTextItem** nodes. Do not use newline characters.",
6058
6170
  "events": [],
6059
6171
  "extends": {
6060
6172
  "name": "StdDlgItemBase",
@@ -6088,8 +6200,7 @@
6088
6200
  "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md"
6089
6201
  },
6090
6202
  "stddlgtitlearea": {
6091
- "availableSince": "10.0",
6092
- "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgAreaBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-area-base.md\"**StdDlgAreaBase**\")\n\nThe **StdDlgTitleArea** node contains the dialog's title information, which is always displayed at the top of the dialog. The title area may also include optional icons that appear left or right justified. The **StdDlgTitleArea** should only be used as a child node of a [**StandardDialog**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md.\n\nA dialog may contain a single title area, and the title area is optional (but is typically used in nearly all cases)\n\n![roku815px - title-area-icon](https://image.roku.com/ZHZscHItMTc2/title-area-icon.jpg)",
6203
+ "description": "Extends [StdDlgAreaBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-area-base.md\"**StdDlgAreaBase**\")\n\nThe **StdDlgTitleArea** node contains the dialog's title information, which is always displayed at the top of the dialog. The title area may also include optional icons that appear left or right justified. The **StdDlgTitleArea** should only be used as a child node of a [**StandardDialog**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md.\n\nA dialog may contain a single title area, and the title area is optional (but is typically used in nearly all cases)\n\n![roku815px - title-area-icon](https://image.roku.com/ZHZscHItMTc2/title-area-icon.jpg)",
6093
6204
  "events": [],
6094
6205
  "extends": {
6095
6206
  "name": "StdDlgAreaBase",
@@ -6252,7 +6363,7 @@
6252
6363
  {
6253
6364
  "accessPermission": "READ_WRITE",
6254
6365
  "default": "false",
6255
- "description": "Specifies whether the current target rectangles (as defined in the read-only currTargetSet field's TargetSet) are drawn or not. Typically this would only be set to true while debugging a channel, although in some use cases its possible that you might want to display the current target rectangles. The rectangles are drawn using the color in the targetSet's TargetSet node's color field",
6366
+ "description": "Specifies whether the current target rectangles (as defined in the read-only currTargetSet field's TargetSet) are drawn or not. Typically this would only be set to true while debugging an app, although in some use cases its possible that you might want to display the current target rectangles. The rectangles are drawn using the color in the targetSet's TargetSet node's color field",
6256
6367
  "name": "showTargetRects",
6257
6368
  "type": "Boolean"
6258
6369
  },
@@ -6482,7 +6593,7 @@
6482
6593
  "url": "https://developer.roku.com/docs/references/scenegraph/widget-nodes/texteditbox.md"
6483
6594
  },
6484
6595
  "timegrid": {
6485
- "description": "OTT providers can use the TimeGrid node to implement an Electronic Program Guide (EPG) in their channels. In an EPG, channels are represented as horizontal rows, one for each channel. Each row has a channel name on the left, and a set of programs airing on that channel to the right. The size of each program depends on its duration. One of these programs has a remote control focus highlight indicator on it, and this highlight can be moved around using the remote control (as long as the TimeGrid node has remote control focus).\n\nThe TimeGrid node also features an alternative Now/Next view that lists only the programs currently airing and airing next, with their respective start times. See [Now/Next mode](https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/timegrid.mdnownext-mode) for more information.\n\n![roku815px - time grid](https://image.roku.com/ZHZscHItMTc2/epg-standard.jpg \"time grid\")",
6596
+ "description": "OTT providers can use the TimeGrid node to implement an Electronic Program Guide (EPG) in their apps. In an EPG, channels are represented as horizontal rows, one for each channel. Each row has an channel name on the left, and a set of programs airing on that app to the right. The size of each program depends on its duration. One of these programs has a remote control focus highlight indicator on it, and this highlight can be moved around using the remote control (as long as the TimeGrid node has remote control focus).\n\nThe TimeGrid node also features an alternative Now/Next view that lists only the programs currently airing and airing next, with their respective start times. See [Now/Next mode](https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/timegrid.mdnownext-mode) for more information.\n\n![roku815px - time grid](https://image.roku.com/ZHZscHItMTc2/epg-standard.jpg \"time grid\")",
6486
6597
  "events": [],
6487
6598
  "fields": [],
6488
6599
  "interfaces": [],
@@ -6626,14 +6737,14 @@
6626
6737
  "default": "[ ]",
6627
6738
  "description": "Specifies the key percentages for the interpolator's keyframes. Each key percentage should be a unique value from 0 to 1 indicating the percentage of the animation where the keyValue should occur. Behavior is undefined if the number of values in the key field does not match the number of values in the keyValue field",
6628
6739
  "name": "key",
6629
- "type": "array of float's"
6740
+ "type": "array of floats"
6630
6741
  },
6631
6742
  {
6632
6743
  "accessPermission": "READ_WRITE",
6633
6744
  "default": "[ ]",
6634
6745
  "description": "Specifies the key values or the interpolator's keyframes. Each value in the keyValue array corresponds to a value in the key field's array. The interpolator's behavior is undefined if the number of values in the key field does not match the number of values in the keyValue field",
6635
6746
  "name": "keyValue",
6636
- "type": "array of float's"
6747
+ "type": "array of vector2d"
6637
6748
  },
6638
6749
  {
6639
6750
  "accessPermission": "READ_WRITE",
@@ -6658,7 +6769,7 @@
6658
6769
  {
6659
6770
  "accessPermission": "WRITE",
6660
6771
  "default": "false",
6661
- "description": "Indicates whether the \"STOP\" command is executed asynchronously (true) or synchronously (false). By default, the STOP command is executed synchronously, which blocks the UI thread. Enabling this field makes the STOP command non-blocking, which enables the video to be switched faster. When this field is enabled, the \\`state\\` field is set to \"stopping\" when the asynnchronous stop begins. The \\`state\\` field then changes to \"stopped\" once the stop has been completed. Any other media player component calls on the UI thread that require the Video node to be re-instantiated should be blocked until the asynnchronous stop has been completed (for example, updating the \\`control\\` field to \"Play\" or \"Prebuffer\", updating the \\`seek\\` field, or updating the \\`seekClip\\` field). This is because a video node in the \"stopping\" state is still using the underlying media player, which is not available at that time. As a result, performing these types of operations on a different video while in the \"stopping\" state may result in a playback failure.",
6772
+ "description": "Indicates whether the \"STOP\" command is executed asynchronously (true) or synchronously (false). By default, the STOP command is executed synchronously, which blocks the UI thread. Enabling this field makes the STOP command non-blocking, which enables the video to be switched faster. When this field is enabled, the \\`state\\` field is set to \"stopping\" when the asynnchronous stop begins. The \\`state\\` field then changes to \"stopped\" once the stop has been completed. Any other media player component calls on the UI thread that require the Video node to be re-instantiated should be blocked until the asynnchronous stop has been completed (for example, updating the \\`control\\` field to \"Play\" or \"Prebuffer\" or updating the \\`seek\\` field). This is because a video node in the \"stopping\" state is still using the underlying media player, which is not available at that time. As a result, performing these types of operations on a different video while in the \"stopping\" state may result in a playback failure.",
6662
6773
  "name": "asyncStopSemantics",
6663
6774
  "type": "boolean"
6664
6775
  },
@@ -6672,14 +6783,14 @@
6672
6783
  {
6673
6784
  "accessPermission": "WRITE_ONLY",
6674
6785
  "default": "{ }",
6675
- "description": "The significance and priority order of the attributes and values for the audio tracks available in the video stream. > A language matching any country code does not match a track that specifies the same language but with no country code. Provide the attribute fields from highest to lowest significance (for example, if the \\*\\*language\\*\\* should take precedence over the \\*\\*description\\*\\*, list \\*\\*language\\*\\* first. For the audio track languages, provide the language code values from highest to lowest priority (for example, if English for the United States \\\\\\[\"en-US\"\\\\\\] has precedence over English for the United Kingdom \\\\\\[\"en-UK\"\\\\\\], list the language codes in the following order: \\\\\\[\"en-US\", \"en-UK\"\\\\\\].\n\n| Field | Type | Description |\n| --- | --- | --- |\n| values | roAssociativeArray | Specify values for the following audio track attributes. List the attributes from highest to lowest significance. <table><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>language</td><td>array of Strings</td><td>A list of (ISO-639)/country (ISO-3166) codes for the audio track. List the languages in priority order (highest to lowest).</td></tr><tr><td>descriptive</td><td>array of Strings</td><td>A flag indicating whether descriptives exist for the video playing in the stream. This is equivalent to the HLS \"public.accessibility.describes-video\" characteristic.</td></tr></tbody></table> |\n| overrideSystem | boolean | Specify whether to use the channel's preferences over the system preferences (true) or use the channel's preferences only when the system preferences do not match any of the available tracks (false), which allows the channel to provide additional rules in this case. The default value is false. |\n\n\\*\\*Example\\*\\* \\`\\`\\` video.audioSelectionPreferences = { values: \\[ { language: \\[\"en-US\", \"en-UK\", \"en\", \"en-\\*\"\\] }, { descriptive: \"false\" } \\], overrideSystem: true } \\`\\`\\` \\*\\*Explanation\\*\\* The audio language with the highest priority is \"en-US\". The next highest priority language is \"en-UK\", then \"en\" with no country code, and finally \"en\" with any country code.",
6786
+ "description": "The significance and priority order of the attributes and values for the audio tracks available in the video stream. > A language matching any country code does not match a track that specifies the same language but with no country code. Provide the attribute fields from highest to lowest significance (for example, if the \\*\\*language\\*\\* should take precedence over the \\*\\*description\\*\\*, list \\*\\*language\\*\\* first. For the audio track languages, provide the language code values from highest to lowest priority (for example, if English for the United States \\\\\\[\"en-US\"\\\\\\] has precedence over English for the United Kingdom \\\\\\[\"en-UK\"\\\\\\], list the language codes in the following order: \\\\\\[\"en-US\", \"en-UK\"\\\\\\].\n\n| Field | Type | Description |\n| --- | --- | --- |\n| values | roAssociativeArray | Specify values for the following audio track attributes. List the attributes from highest to lowest significance. <table><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>language</td><td>array of Strings</td><td>A list of (ISO-639)/country (ISO-3166) codes for the audio track. List the languages in priority order (highest to lowest).</td></tr><tr><td>descriptive</td><td>array of Strings</td><td>A flag indicating whether descriptives exist for the video playing in the stream. This is equivalent to the HLS \"public.accessibility.describes-video\" characteristic.</td></tr></tbody></table> |\n| overrideSystem | boolean | Specify whether to use the app's preferences over the system preferences (true) or use the app's preferences only when the system preferences do not match any of the available tracks (false), which allows the app to provide additional rules in this case. The default value is false. |\n\n\\*\\*Example\\*\\* \\`\\`\\` video.audioSelectionPreferences = { values: \\[ { language: \\[\"en-US\", \"en-UK\", \"en\", \"en-\\*\"\\] }, { descriptive: \"false\" } \\], overrideSystem: true } \\`\\`\\` \\*\\*Explanation\\*\\* The audio language with the highest priority is \"en-US\". The next highest priority language is \"en-UK\", then \"en\" with no country code, and finally \"en\" with any country code.",
6676
6787
  "name": "audioSelectionPreferences",
6677
6788
  "type": "roAssociativeArray"
6678
6789
  },
6679
6790
  {
6680
6791
  "accessPermission": "READ_WRITE",
6681
6792
  "default": "",
6682
- "description": "The track identifier of the selected audio track. Reading this field will return the track identifier of the audio selected by the user. Writing this value will change the audio track. However, channels should not do this unless they are implementing their own track selection menu that users control. This is because the Roku OS selects the best track automatically based on preferred language setting on the device. See \\[Automatic audio track selection\\](#automatic-audio-track-selection) for more information.",
6793
+ "description": "The track identifier of the selected audio track. Reading this field will return the track identifier of the audio selected by the user. Writing this value will change the audio track. However, apps should not do this unless they are implementing their own track selection menu that users control. This is because the Roku OS selects the best track automatically based on preferred language setting on the device. See \\[Automatic audio track selection\\](#automatic-audio-track-selection) for more information.",
6683
6794
  "name": "audioTrack",
6684
6795
  "type": "string"
6685
6796
  },
@@ -6721,7 +6832,7 @@
6721
6832
  {
6722
6833
  "accessPermission": "READ_ONLY",
6723
6834
  "default": "invalid",
6724
- "description": "Contains information about stream buffering progress and status. This field is valid only while buffering is in progress, both at stream startup or when re-buffering is required. Observers will be notified when any element of the array changes, and also when buffering is complete and the field itself becomes invalid. The array contains the following name - value pairs.\n\n| Value | Meaning |\n| --- | --- |\n| percentage | Percent buffering complete as an integer. |\n| isUnderrun | Boolean value indicating if a stream underrun occurred. |\n| prebufferDone (_Available since Roku OS 10.0_) | A boolean value that indicates whether the player has buffered enough data to allow the player to begin playing immediately should \"control\" be set to \"play.\" |\n| actualStart (_Available since Roku OS 10.0_) | A time value that is automatically set when prebufferDone becomes true, specifying the actual time from which playback will resume. This may vary from the time requested in the content node's playStart field, depending on the capabilities of the player and the seekMode setting. |\n\n\\> While it is possible to use the Video node seek field to specify the seek time, it is recommended that channels do the following: > > 1. Set the content node field playStart in seek-to-pause scenarios. > 2. In the video node, set \"control\" to \"prebuffer\". > 3. Wait for \"prebufferDone\" to become \"true\". > 4. Check \"actualStart\" (if desired). > 5. Set \"control\" to \"play\".",
6835
+ "description": "Contains information about stream buffering progress and status. This field is valid only while buffering is in progress, both at stream startup or when re-buffering is required. Observers will be notified when any element of the array changes, and also when buffering is complete and the field itself becomes invalid. The array contains the following name - value pairs.\n\n| Value | Meaning |\n| --- | --- |\n| percentage | Percent buffering complete as an integer. |\n| isUnderrun | Boolean value indicating if a stream underrun occurred. |\n| prebufferDone | A boolean value that indicates whether the player has buffered enough data to allow the player to begin playing immediately should \"control\" be set to \"play.\" |\n| actualStart | A time value that is automatically set when prebufferDone becomes true, specifying the actual time from which playback will resume. This may vary from the time requested in the content node's playStart field, depending on the capabilities of the player and the seekMode setting. |\n\n\\> While it is possible to use the Video node seek field to specify the seek time, it is recommended that apps do the following: > > 1. Set the content node field playStart in seek-to-pause scenarios. > 2. In the video node, set \"control\" to \"prebuffer\". > 3. Wait for \"prebufferDone\" to become \"true\". > 4. Check \"actualStart\" (if desired). > 5. Set \"control\" to \"play\".",
6725
6836
  "name": "bufferingStatus",
6726
6837
  "type": "associative array"
6727
6838
  },
@@ -6735,7 +6846,7 @@
6735
6846
  {
6736
6847
  "accessPermission": "READ_WRITE",
6737
6848
  "default": "system default",
6738
- "description": "Allows channels to style closed captions. For any keys that are absent from the associative array, or for unexpected values, the Default value is assumed for that property. Following are the possible key names and values for this field:\n\n| Property | Possible Values |\n| --- | --- |\n| Text/Font | Default Serif Fixed Width Serif Proportional Sans Serif Fixed Width Sans Serif Proportional Casual Cursive Small Caps |\n| Text/Effect | Default None Raised Depressed Uniform Drop shadow (left) Drop shadow (right) |\n| Text/Size | Default Large Medium Small |\n| Text/Color | Default White Black Red Green Blue Yellow Magenta Cyan |\n| Text/Opacity | Default 25% 50% 75% 100% |\n| Background/Color | Default White Black Red Green Blue Yellow Magenta Cyan |\n| Background/Opacity | Default Off 25% 50% 75% 100% |\n| Window/Color | Default White Black Red Green Blue Yellow Magenta Cyan |\n| Window/Opacity | Default Off 25% 50% 75% 100% |",
6849
+ "description": "Allows apps to style closed captions. For any keys that are absent from the associative array, or for unexpected values, the Default value is assumed for that property. Following are the possible key names and values for this field:\n\n| Property | Possible Values |\n| --- | --- |\n| Text/Font | Default Serif Fixed Width Serif Proportional Sans Serif Fixed Width Sans Serif Proportional Casual Cursive Small Caps |\n| Text/Effect | Default None Raised Depressed Uniform Drop shadow (left) Drop shadow (right) |\n| Text/Size | Default Large Medium Small |\n| Text/Color | Default White Black Red Green Blue Yellow Magenta Cyan |\n| Text/Opacity | Default 25% 50% 75% 100% |\n| Background/Color | Default White Black Red Green Blue Yellow Magenta Cyan |\n| Background/Opacity | Default Off 25% 50% 75% 100% |\n| Window/Color | Default White Black Red Green Blue Yellow Magenta Cyan |\n| Window/Opacity | Default Off 25% 50% 75% 100% |",
6739
6850
  "name": "captionStyle",
6740
6851
  "type": "associative array"
6741
6852
  },
@@ -6889,7 +7000,7 @@
6889
7000
  {
6890
7001
  "accessPermission": "READ_ONLY",
6891
7002
  "default": "",
6892
- "description": "A diagnostic message to help resolve the video play error set in the \\`state\\` field. The roAssociativeArray contains the following fields:\n\n| Field | Type | Description |\n| --- | --- | --- |\n| clipId | integer | The unique ID for the clip |\n| ignored | integer | Indicates whether the error generated an exception (0) or was ignored resulting in the next item in the content list being played (1). |\n| source | string | The module that generated the error. |\n| category | String | The type of error, which includes: \"http\", \"drm\", \"mediaerror\", or \"mediaplayer\". |\n| errcode | integer | The internal Roku code associated with the error. Use the **dbgmsg** field for debugging. |\n| dbgmsg | string | A verbose debug message that can help identify the root cause of the error. |\n| drmerrcode _Available since Roku OS 10.5_ | integer | The error code returned by the DRM system, if any, when a video player error occurs |",
7003
+ "description": "A diagnostic message to help resolve the video play error set in the \\`state\\` field. The roAssociativeArray contains the following fields:\n\n| Field | Type | Description |\n| --- | --- | --- |\n| clipId | integer | The unique ID for the clip |\n| ignored | integer | Indicates whether the error generated an exception (0) or was ignored resulting in the next item in the content list being played (1). |\n| source | string | The module that generated the error. |\n| category | String | The type of error, which includes: \"http\", \"drm\", \"mediaerror\", or \"mediaplayer\". |\n| errcode | integer | The internal Roku code associated with the error. Use the **dbgmsg** field for debugging. |\n| dbgmsg | string | A verbose debug message that can help identify the root cause of the error. |\n| drmerrcode | integer | The error code returned by the DRM system, if any, when a video player error occurs |",
6893
7004
  "name": "errorInfo",
6894
7005
  "type": "roAssociativeArray"
6895
7006
  },
@@ -6910,7 +7021,7 @@
6910
7021
  {
6911
7022
  "accessPermission": "READ_WRITE",
6912
7023
  "default": "Off",
6913
- "description": "Sets the value of the global Roku closed-caption mode. This can be used to allow the user or the application to change the closed-caption mode in an application just before or during video playback. The possible options are:\n\n| Option | Effect |\n| --- | --- |\n| \"Off\" | Turns the global Roku closed-caption mode off. |\n| \"On\" | Turns the global Roku closed-caption mode on. |\n| \"Instant replay\" | Sets the global Roku closed-caption setting to display captions only during instant replay. |\n| \"When mute\" | Sets the global Roku closed-caption setting to display captions only when the volume is muted. (This only applies to Roku TVs.) |\n\nThe channel should set the \\`subtitleTrack\\` field regardless of the selected Caption Mode.",
7024
+ "description": "Sets the value of the global Roku closed-caption mode. This can be used to allow the user or the application to change the closed-caption mode in an application just before or during video playback. The possible options are:\n\n| Option | Effect |\n| --- | --- |\n| \"Off\" | Turns the global Roku closed-caption mode off. |\n| \"On\" | Turns the global Roku closed-caption mode on. |\n| \"Instant replay\" | Sets the global Roku closed-caption setting to display captions only during instant replay. |\n| \"When mute\" | Sets the global Roku closed-caption setting to display captions only when the volume is muted. (This only applies to Roku TVs.) |\n\nThe app should set the \\`subtitleTrack\\` field regardless of the selected Caption Mode.",
6914
7025
  "name": "globalCaptionMode",
6915
7026
  "type": "option string"
6916
7027
  },
@@ -7057,7 +7168,7 @@
7057
7168
  {
7058
7169
  "accessPermission": "READ_ONLY",
7059
7170
  "default": "",
7060
- "description": "Provides timing measurements related to the start of video playback. All measurements are in seconds. The roAssociativeArray contains the following fields:\n\n| Field | Type | Access Permission | Description |\n| --- | --- | --- | --- |\n| total\\_dur | float | READ\\_ONLY | Total video start duration. |\n| manifest\\_dur | float | READ\\_ONLY | Manifest download and parsing. |\n| drm\\_load\\_dur | float | READ\\_ONLY | DRM system initialization. |\n| drm\\_lic\\_acq\\_dur | float | READ\\_ONLY | License acquisition. This typically includes interactions with the license server. |\n| prebuf\\_dur | float | READ\\_ONLY | Prebuffer content. |\n| manifest\\_start (_Available since Roku OS 10.0_) | Float | READ\\_ONLY | Point at which manifest download and parsing begins. |\n| drm\\_load\\_start (_Available since Roku OS 10.0_) | Float | READ\\_ONLY | Point at which DRM system initialization begins. |\n| drm\\_lic\\_acq\\_start (_Available since Roku OS 10.0_) | Float | READ\\_ONLY | Point at which license acquisition begins. |\n| prebuf\\_start (_Available since Roku OS 10.0_) | Float | READ\\_ONLY | Point at which content pre-buffering begins. |\n\n\\> The \\\\\\_start fields correspond to the similarly named \\\\\\_dur (duration) fields in this structure. In each case, the \\\\\\_start point is the number of milliseconds elapsed from the initialization of the media player (t=0.000). If required, ending points for each interval can be derived from its associated starting-point and duration.",
7171
+ "description": "Provides timing measurements related to the start of video playback. All measurements are in seconds. The roAssociativeArray contains the following fields:\n\n| Field | Type | Access Permission | Description |\n| --- | --- | --- | --- |\n| total\\_dur | float | READ\\_ONLY | Total video start duration. |\n| manifest\\_dur | float | READ\\_ONLY | Manifest download and parsing. |\n| drm\\_load\\_dur | float | READ\\_ONLY | DRM system initialization. |\n| drm\\_lic\\_acq\\_dur | float | READ\\_ONLY | License acquisition. This typically includes interactions with the license server. |\n| prebuf\\_dur | float | READ\\_ONLY | Prebuffer content. |\n| manifest\\_start | Float | READ\\_ONLY | Point at which manifest download and parsing begins. |\n| drm\\_load\\_start | Float | READ\\_ONLY | Point at which DRM system initialization begins. |\n| drm\\_lic\\_acq\\_start | Float | READ\\_ONLY | Point at which license acquisition begins. |\n| prebuf\\_start | Float | READ\\_ONLY | Point at which content pre-buffering begins. |\n\n\\> The \\\\\\_start fields correspond to the similarly named \\\\\\_dur (duration) fields in this structure. In each case, the \\\\\\_start point is the number of milliseconds elapsed from the initialization of the media player (t=0.000). If required, ending points for each interval can be derived from its associated starting-point and duration.",
7061
7172
  "name": "playStartInfo",
7062
7173
  "type": "roAssociativeArray"
7063
7174
  },
@@ -7127,14 +7238,14 @@
7127
7238
  {
7128
7239
  "accessPermission": "READ_ONLY",
7129
7240
  "default": "{ }",
7130
- "description": "Information about the video segment that is currently streaming. This is only meaningful for segmented video transports, such as DASH and HLS. The associative array has the following entries:\n\n| Key | Type | Value |\n| --- | --- | --- |\n| segBitrateBps | integer | Bitrate of the segment in bits per second |\n| segSequence | integer | The sequence number of the segment in the video |\n| segStart | time | The start time of the segment from the start of the video, specified in seconds |\n| segUrl | string | URL of the segment |\n| Path | string | A path indicating the Period, AdaptationSet and Representation that is played. This is in UNIX directory notation as: /// |\n| Width | integer | For video segments, the width of the encoded video picture |\n| Height | integer | For video segments, the height of the encoded video picture |",
7241
+ "description": "Information about the video segment that is currently streaming. This is only meaningful for segmented video transports, such as DASH and HLS. The associative array has the following entries:\n\n| Key | Type | Value |\n| --- | --- | --- |\n| segBitrateBps | integer | Bitrate of the segment in bits per second |\n| segSequence | integer | The sequence number of the segment in the video |\n| segStart | time | The start time of the segment from the start of the video, specified in seconds |\n| segUrl | string | URL of the segment |\n| SegType | integer | Type of data in the segment: 1=audio, 2=video, 3=captions, 0=mux |\n| Path | string | A path indicating the Period, AdaptationSet and Representation that is played. This is in UNIX directory notation as: /// |\n| Width | integer | For video segments, the width of the encoded video picture |\n| Height | integer | For video segments, the height of the encoded video picture |",
7131
7242
  "name": "streamingSegment",
7132
7243
  "type": "associative array"
7133
7244
  },
7134
7245
  {
7135
7246
  "accessPermission": "WRITE_ONLY",
7136
7247
  "default": "{ }",
7137
- "description": "The significance and priority order of the attributes and values for the subtitle tracks available in the video stream. Provide the attribute fields from highest to lowest significance (for example, if \\*\\*language\\*\\* should take precedence over all other attributes, list it first). For the subtitle track languages, provide the language codes from highest to lowest priority (for example, if Spanish for Latin America and the Caribbean \\\\\\[\"es-419\"\\\\\\] has precedence over Spanish \\\\\\[\"es\"\\\\\\], list the language codes in the following order: \\\\\\[\"es-419\", \"es\"\\\\\\].\n\n| Field | Type | Description |\n| --- | --- | --- |\n| values | roAssociativeArray | Specify values for the following subtitle track attributes. List the attributes from highest to lowest significance. <table><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>language</td><td>array of Strings</td><td>A list of language (ISO-639)/country (ISO-3166) codes for the subtitles. List the language codes in priority order (highest to lowest).</td></tr><tr><td>caption</td><td>array of Strings</td><td>A flag indicating whether captions exist for the video stream. This is equivalent to the HLS \"public.accessibility.transcribes-spoken-dialog\" characteristic.</td></tr><tr><td>descriptive</td><td>array of Strings</td><td>A flag indicating whether descriptives exist for the music and sounds in the video stream. This is equivalent to the HLS \"public.accessibility.describes-music-and-sound\" characteristic.</td></tr><tr><td>easyReader</td><td>array of Strings</td><td>A flag indicating whether subtitles are easy to read.</td></tr></tbody></table> |\n| overrideSystem | boolean | Specify whether to use the channel's preferences over the system preferences (true) or use the channel's preferences only when the system preferences do not match any of the available tracks (false), which allows the channel to provide additional rules in this case. The default value is false. |\n\n\\*\\*Example\\*\\* \\`\\`\\` video.subtitleSelectionPreferences = { values: \\[ { language: \\[\"es-419\", \"es\", \"es-\\*\", \"fr\", \"en-US\", \"en-UK\", \"en\"\\] }, { caption: \"true\" }, { descriptive: \\[\"false\"\\] }, { easyReader: \"true\" } \\], overrideSystem: true } \\`\\`\\` \\*\\*Explanation\\*\\* The subititle language with the highest priority is \"es\" with a country code of \"419\". The next highest priority language is \"es\" with no country code, and then \"es\" with any country code.",
7248
+ "description": "The significance and priority order of the attributes and values for the subtitle tracks available in the video stream. Provide the attribute fields from highest to lowest significance (for example, if \\*\\*language\\*\\* should take precedence over all other attributes, list it first). For the subtitle track languages, provide the language codes from highest to lowest priority (for example, if Spanish for Latin America and the Caribbean \\\\\\[\"es-419\"\\\\\\] has precedence over Spanish \\\\\\[\"es\"\\\\\\], list the language codes in the following order: \\\\\\[\"es-419\", \"es\"\\\\\\].\n\n| Field | Type | Description |\n| --- | --- | --- |\n| values | roAssociativeArray | Specify values for the following subtitle track attributes. List the attributes from highest to lowest significance. <table><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>language</td><td>array of Strings</td><td>A list of language (ISO-639)/country (ISO-3166) codes for the subtitles. List the language codes in priority order (highest to lowest).</td></tr><tr><td>caption</td><td>array of Strings</td><td>A flag indicating whether captions exist for the video stream. This is equivalent to the HLS \"public.accessibility.transcribes-spoken-dialog\" characteristic.</td></tr><tr><td>descriptive</td><td>array of Strings</td><td>A flag indicating whether descriptives exist for the music and sounds in the video stream. This is equivalent to the HLS \"public.accessibility.describes-music-and-sound\" characteristic.</td></tr><tr><td>easyReader</td><td>array of Strings</td><td>A flag indicating whether subtitles are easy to read.</td></tr></tbody></table> |\n| overrideSystem | boolean | Specify whether to use the app's preferences over the system preferences (true) or use the app's preferences only when the system preferences do not match any of the available tracks (false), which allows the app to provide additional rules in this case. The default value is false. |\n\n\\*\\*Example\\*\\* \\`\\`\\` video.subtitleSelectionPreferences = { values: \\[ { language: \\[\"es-419\", \"es\", \"es-\\*\", \"fr\", \"en-US\", \"en-UK\", \"en\"\\] }, { caption: \"true\" }, { descriptive: \\[\"false\"\\] }, { easyReader: \"true\" } \\], overrideSystem: true } \\`\\`\\` \\*\\*Explanation\\*\\* The subititle language with the highest priority is \"es\" with a country code of \"419\". The next highest priority language is \"es\" with no country code, and then \"es\" with any country code.",
7138
7249
  "name": "subtitleSelectionPreferences",
7139
7250
  "type": "roAssociativeArray"
7140
7251
  },
@@ -7162,7 +7273,7 @@
7162
7273
  {
7163
7274
  "accessPermission": "READ_WRITE",
7164
7275
  "default": "[]",
7165
- "description": "Contains the information about HLS and DASH standard thumbnail tiles as they are discovered within the manifest for streams which contain them. This field was first introduced (for VOD only) starting in Roku OS 9.1. Starting with Roku OS 11.0, the channel can enable this field for HLS and DASH live streams containing standard thumbnails by setting enableThumbnailTilesDuringLive to true. > For Roku OS releases before 9.4, the \\*\\*thumbnailTiles\\*\\* associative array has the following structure: {tile\\\\\\_id: tile\\\\\\_set} (string to associative array) > > For Roku OS 9.4 and later, the \\*\\*thumbnailTiles\\*\\* associative array has the following structure: {tile\\\\\\_id: \\\\\\[tile\\\\\\_set, tile\\\\\\_set, tile\\\\\\_set,...\\\\\\]}(string to array of associative arrays). This format allows discontinuous tile\\\\\\_sets of the same resolution to be grouped together as a \"choice\" for display. The \\*\\*tile\\\\\\_id\\*\\* field is a unique string identifier for the \\*\\*tile\\\\\\_set\\*\\*, which is an associative array containing the attributes of the tile set as well as information about the thumbnails. The \\*\\*tile\\\\\\_set\\*\\* field contains the following fields:\n\n| Field | Type | Default | Description |\n| --- | --- | --- | --- |\n| htiles | integer | 0 | Horizontal number of thumbnails in a tile (columns.) |\n| vtiles | integer | 0 | Vertical number of thumbnails in a tile (rows.) |\n| width | integer | 0 | Number of horizontal pixels in a thumbnail (this is not the tile as the one in the DASH spec). |\n| height | integer | 0 | Number of vertical pixels in a thumbnail (this is not the same tile as the one in the DASH spec). |\n| bandwidth | integer | 0 | Max tile size in bits / duration. |\n| duration | float | 0.0 | Duration of one tile in seconds (assuming a full tile). |\n| initial\\_time _Available since Roku OS 10.0_ | float | 0.0 | Presentation start time of current **tile\\_set** in seconds. Thumbnails in tiles beginning before this time should be skipped, and the first relevant thumbnail duration should be updated accordingly. |\n| final\\_time | float | 0.0 | End time of current tile\\_set in seconds. |\n| tiles | roArray | \\[\\] | Contains information about each tile in the **tile\\_set**. This contains the following fields: * url (index 0). A string with the URL of the tile. * start\\_time (index 1). A float with the start time of the tile in seconds.<br/ * format (index 2). Typically, an empty string, but it may contain the tile format \"jpeg\", \"png\", and so on. |",
7276
+ "description": "Contains the information about HLS and DASH standard thumbnail tiles as they are discovered within the manifest for streams which contain them. This field was first introduced (for VOD only) starting in Roku OS 9.1. Starting with Roku OS 11.0, the app can enable this field for HLS and DASH live streams containing standard thumbnails by setting enableThumbnailTilesDuringLive to true. > For Roku OS releases before 9.4, the \\*\\*thumbnailTiles\\*\\* associative array has the following structure: {tile\\\\\\_id: tile\\\\\\_set} (string to associative array) > > For Roku OS 9.4 and later, the \\*\\*thumbnailTiles\\*\\* associative array has the following structure: {tile\\\\\\_id: \\\\\\[tile\\\\\\_set, tile\\\\\\_set, tile\\\\\\_set,...\\\\\\]}(string to array of associative arrays). This format allows discontinuous tile\\\\\\_sets of the same resolution to be grouped together as a \"choice\" for display. The \\*\\*tile\\\\\\_id\\*\\* field is a unique string identifier for the \\*\\*tile\\\\\\_set\\*\\*, which is an associative array containing the attributes of the tile set as well as information about the thumbnails. The \\*\\*tile\\\\\\_set\\*\\* field contains the following fields:\n\n| Field | Type | Default | Description |\n| --- | --- | --- | --- |\n| htiles | integer | 0 | Horizontal number of thumbnails in a tile (columns.) |\n| vtiles | integer | 0 | Vertical number of thumbnails in a tile (rows.) |\n| width | integer | 0 | Number of horizontal pixels in a thumbnail (this is not the tile as the one in the DASH spec). |\n| height | integer | 0 | Number of vertical pixels in a thumbnail (this is not the same tile as the one in the DASH spec). |\n| bandwidth | integer | 0 | Max tile size in bits / duration. |\n| duration | float | 0.0 | Duration of one tile in seconds (assuming a full tile). |\n| initial\\_time | float | 0.0 | Presentation start time of current **tile\\_set** in seconds. Thumbnails in tiles beginning before this time should be skipped, and the first relevant thumbnail duration should be updated accordingly. |\n| final\\_time | float | 0.0 | End time of current tile\\_set in seconds. |\n| tiles | roArray | \\[\\] | Contains information about each tile in the **tile\\_set**. This contains the following fields: * url (index 0). A string with the URL of the tile. * start\\_time (index 1). A float with the start time of the tile in seconds.<br/ * format (index 2). Typically, an empty string, but it may contain the tile format \"jpeg\", \"png\", and so on. |",
7166
7277
  "name": "thumbnailTiles",
7167
7278
  "type": "roAssociativeArray"
7168
7279
  },
@@ -7204,7 +7315,7 @@
7204
7315
  {
7205
7316
  "accessPermission": "READ_WRITE",
7206
7317
  "default": "internal instance default",
7207
- "description": "The visible TrickPlayBar node. The fields of this internal node are as follows:\n\n| Field | Type | Default | Use |\n| --- | --- | --- | --- |\n| currentTimeMarkerBlendColor | color | 0xFFFFFFFF | This is blended with the marker for the current playback position. This is typically a small vertical bar displayed in the TrickPlayBar node when the user is fast-forwarding or rewinding through the video. |\n| textColor | color | system default | Sets the color of the text next to the trickPlayBar node indicating the time elapsed/remaining. |\n| thumbBlendColor | color | 0xFFFFFFFF | Sets the blend color of the square image in the trickPlayBar node that shows the current position, with the current direction arrows or pause icon on top. The blending is performed by multiplying this value with each pixel in the image. If not changed from the default value, no blending will take place. |\n| filledBarBlendColor | color | 0xFFFFFFFF | This color will be blended with the graphical image specified in the `filledBarImageUri` field. The blending is performed by multiplying this value with each pixel in the image. If not changed from the default value, no blending will take place. |\n| liveFilledBarBlendColor (_Available since Roku OS 11.0_) | Color | 0xFFFFFFFF | The color of the trickplay progress bar to be blended with the **filledBarImageUri** for live linear streams. |\n| filledBarImageUri | uri | \"\" | A 9-patch or ordinary PNG of the bar that represents the completed portion of the work represented by this ProgressBar node. This is typically displayed on the left side of the track. This will be blended with the color specified by the `filledBarBlendColor` field, if set to a non-default value. |\n| trackBlendColor | color | 0xFFFFFFFF | This color is blended with the graphical image specified by `trackImageUri` field. The blending is performed by multiplying this value with each pixel in the image. If not changed from the default value, no blending will take place. |\n| trackImageUri | uri | \"\" | A 9-patch or ordinary PNG of the track of the progress bar, which surrounds the filled and empty bars. This will be blended with the color specified by the `trackBlendColor` field, if set to a non-default value. |",
7318
+ "description": "The visible TrickPlayBar node. The fields of this internal node are as follows:\n\n| Field | Type | Default | Use |\n| --- | --- | --- | --- |\n| currentTimeMarkerBlendColor | color | 0xFFFFFFFF | This is blended with the marker for the current playback position. This is typically a small vertical bar displayed in the TrickPlayBar node when the user is fast-forwarding or rewinding through the video. |\n| textColor | color | system default | Sets the color of the text next to the trickPlayBar node indicating the time elapsed/remaining. |\n| thumbBlendColor | color | 0xFFFFFFFF | Sets the blend color of the square image in the trickPlayBar node that shows the current position, with the current direction arrows or pause icon on top. The blending is performed by multiplying this value with each pixel in the image. If not changed from the default value, no blending will take place. |\n| filledBarBlendColor | color | 0xFFFFFFFF | This color will be blended with the graphical image specified in the `filledBarImageUri` field. The blending is performed by multiplying this value with each pixel in the image. If not changed from the default value, no blending will take place. |\n| liveFilledBarBlendColor | Color | 0xFFFFFFFF | The color of the trickplay progress bar to be blended with the **filledBarImageUri** for live linear streams. |\n| filledBarImageUri | uri | \"\" | A 9-patch or ordinary PNG of the bar that represents the completed portion of the work represented by this ProgressBar node. This is typically displayed on the left side of the track. This will be blended with the color specified by the `filledBarBlendColor` field, if set to a non-default value. |\n| trackBlendColor | color | 0xFFFFFFFF | This color is blended with the graphical image specified by `trackImageUri` field. The blending is performed by multiplying this value with each pixel in the image. If not changed from the default value, no blending will take place. |\n| trackImageUri | uri | \"\" | A 9-patch or ordinary PNG of the track of the progress bar, which surrounds the filled and empty bars. This will be blended with the color specified by the `trackBlendColor` field, if set to a non-default value. |",
7208
7319
  "name": "trickPlayBar",
7209
7320
  "type": "TrickPlayBar node"
7210
7321
  },
@@ -7305,7 +7416,7 @@
7305
7416
  },
7306
7417
  "roappmanager": {
7307
7418
  "constructors": [],
7308
- "description": "The roAppManager component is used to returns information about the channel application.",
7419
+ "description": "The roAppManager component is used to returns information about the app.",
7309
7420
  "events": [],
7310
7421
  "interfaces": [
7311
7422
  {
@@ -7317,9 +7428,8 @@
7317
7428
  "url": "https://developer.roku.com/docs/references/brightscript/components/roappmanager.md"
7318
7429
  },
7319
7430
  "roappmemorymonitor": {
7320
- "availableSince": "10.5",
7321
7431
  "constructors": [],
7322
- "description": "_Available since Roku OS 10.5_\n\nThe **roAppMemoryMonitor** component is used to subscribe channels to low-memory notifications. When a channel is subscribed, it receives a [roAppMemoryMonitorEvent](https://developer.roku.com/docs/references/brightscript/events/roappmemorymonitorevent.md when it reaches a specific percentage of the per-channel memory limit (80%).\n\n> The roAppMemoryMonitor functions are supported on all [current and updatable device models](/docs/specs/hardware.md), except for Liberty, Austin, Mustang and Littlefield.",
7432
+ "description": "The **roAppMemoryMonitor** component is used to subscribe apps to low-memory notifications. When an app is subscribed, it receives a [roAppMemoryMonitorEvent](https://developer.roku.com/docs/references/brightscript/events/roappmemorymonitorevent.md when it reaches a specific percentage of the per-app memory limit (80%).\n\n> The roAppMemoryMonitor functions are supported on all [current and updatable device models](/docs/specs/hardware.md), except for Liberty, Austin, Mustang and Littlefield.",
7323
7433
  "events": [
7324
7434
  {
7325
7435
  "name": "roAppMemoryMonitorEvent",
@@ -7432,7 +7542,7 @@
7432
7542
  "returnType": "roAudioMetadata"
7433
7543
  }
7434
7544
  ],
7435
- "description": "The roAudioMetadata component provides developers access to audio file metadata included in many audio files. This should enable some audiofiles to deliver the information needed to fill out an roSpringboard screen without passing the info in a separate xml feed. roAudioMetadata currently only works with local file URLs.\n\nThe component requires the use of a dynamically loaded library that is not part of the initially booted image. Therefore, an entry must be added to the manifest of any applications that use the roAudioMetadata component so it can be loaded when the channel is launched. Here's the manifest entry:\n\n_requires\\_audiometadata=1_\n\nThis object is created without any arguments:\n\n`CreateObject(\"roAudioMetadata\")`\n\n**Example**\n\n```\nREM printAA() is from generalUtils.brs in our sample apps\nREM and used to print an associative Array\n\nSub SaveCoverArtFile(filename As String)\n meta = CreateObject(\"roAudioMetadata\")\n meta.SetUrl(filename)\n print \"------------- GetTags() -------------------------\"\n tags = meta.GetTags()\n printAA(tags)\n print \"------------- GetAudioProperties() --------------\"\n properties = meta.GetAudioProperties()\n printAA(properties)\n print \"------------- GetCoverArt() ---------------------\"\n thumbnail = meta.GetCoverArt()\n if (thumbnail <> invalid) then\n if (thumbnail.bytes = invalid) then\n return\n end if\n imgtype = thumbnail.type\n image_ext=\"\"\n if (imgtype = \"image/jpeg\" or imgtype = \"jpg\") then\n image_ext = \"jpg\"\n else if (imgtype = \"image/png\" or imgtype = \"png\") then\n image_ext = \"png\"\n else\n image_ext = \"jpg\"\n end if\n tmp_img = \"tmp:/CoverArtImage\" + \".\" + image_ext\n if (tmp_img <> invalid) then\n DeleteFile(tmp_img)\n end if\n thumbnail.bytes.Writefile(tmp_img)\n end if\nEnd Sub\n```",
7545
+ "description": "The roAudioMetadata component provides developers access to audio file metadata included in many audio files. This should enable some audiofiles to deliver the information needed to fill out an roSpringboard screen without passing the info in a separate xml feed. roAudioMetadata currently only works with local file URLs.\n\nThe component requires the use of a dynamically loaded library that is not part of the initially booted image. Therefore, an entry must be added to the manifest of any applications that use the roAudioMetadata component so it can be loaded when the app is launched. Here's the manifest entry:\n\n_requires\\_audiometadata=1_\n\nThis object is created without any arguments:\n\n`CreateObject(\"roAudioMetadata\")`\n\n**Example**\n\n```\nREM printAA() is from generalUtils.brs in our sample apps\nREM and used to print an associative Array\n\nSub SaveCoverArtFile(filename As String)\n meta = CreateObject(\"roAudioMetadata\")\n meta.SetUrl(filename)\n print \"------------- GetTags() -------------------------\"\n tags = meta.GetTags()\n printAA(tags)\n print \"------------- GetAudioProperties() --------------\"\n properties = meta.GetAudioProperties()\n printAA(properties)\n print \"------------- GetCoverArt() ---------------------\"\n thumbnail = meta.GetCoverArt()\n if (thumbnail <> invalid) then\n if (thumbnail.bytes = invalid) then\n return\n end if\n imgtype = thumbnail.type\n image_ext=\"\"\n if (imgtype = \"image/jpeg\" or imgtype = \"jpg\") then\n image_ext = \"jpg\"\n else if (imgtype = \"image/png\" or imgtype = \"png\") then\n image_ext = \"png\"\n else\n image_ext = \"jpg\"\n end if\n tmp_img = \"tmp:/CoverArtImage\" + \".\" + image_ext\n if (tmp_img <> invalid) then\n DeleteFile(tmp_img)\n end if\n thumbnail.bytes.Writefile(tmp_img)\n end if\nEnd Sub\n```",
7436
7546
  "events": [],
7437
7547
  "interfaces": [
7438
7548
  {
@@ -7547,7 +7657,7 @@
7547
7657
  "returnType": "roBitmap"
7548
7658
  }
7549
7659
  ],
7550
- "description": "The roBitmap component contains image data and provides an interface (ifDraw2D) for drawing. Bitmaps can be used for a variety of purposes, such as for sprites, compositing, or as double buffers.\n\nIt stores four color channels: red, green, blue, and alpha, with 32-bits per pixel. They can be any arbitrary size up to 2048x2048. However, the maximum size bitmap uses 16MB of memory, so there are practical memory limitations which would compel smaller bitmap sizes. Coordinates (x,y) for 2D bitmaps have an origin (0,0) at the top left. roBitmap is always offscreen. The top roScreen is the only ifDraw2D surface which is displayed. roBitmap represents something that can be drawn onto, as well as something that can be drawn.\n\nDrawing operations into a roBitmap (or other surface with ifDraw2D interface, such as an [roScreen](https://developer.roku.com/docs/references/brightscript/components/roscreen.md\"roScreen\")) are clipped so the only the part that is within its bounds is rendered. X,Y coordinates that specify a location in a bitmap to render to (for example, as used by DrawObject() or DrawText() ) may be positive or negative. Negative implies that the left and top of the rendered object will be clipped.The same bitmap cannot be used as a source and a destination in a single DrawObject() call.\n\nThere are limitations when using the onscreen bitmap as a source. For example, Alpha blending may not work.\n\nAn empty roBitmap object can be created with CreateObject():\n\n`CreateObject(\"roBitmap\", bitmapProps As Object)`\n\nbitmapProps is an roAssociativeArray with Integers width (Integer), height (Integer), and AlphaEnable (Boolean), and name (String) parameters. The contents of an empty RoBitmap are initialized to zero (transparent black).\n\nExample: `CreateObject(\"roBitmap\", {width:10, height:10, AlphaEnable:false, name:\"MyBitmapName\"})`\n\nAn roBitmap can also load its image data from a file:\n\n`CreateObject(\"roBitmap\", String filename)`\n\n**Example**\n\n```\n' Draw three bitmaps as fast as we can\n'\nScreen=CreateObject(\"roScreen\")\nbm1=CreateObject(\"roBitmap\", \"pkg:/images/myphoto1.jpg\")\nbm2=CreateObject(\"roBitmap\", \"pkg:/images/myphoto2.jpg\")\nbm3=CreateObject(\"roBitmap\", \"pkg:/images/myphoto3.jpg\")\nbmarray=[bm1, bm2, bm3]\nWhile true\n For each bitmap in bmarray\n Screen.DrawObject(0,0, bitmap)\n Screen.Finish()\n End for\nEnd While\n```\n\n**Example: Double buffering with roBitmap**\n\n```\nscreen1=CreateObject(\"roScreen\")\noff=CreateObject(\"roBitmap\", {width:1280, height:720, AlphaEnable:false})\noff.Clear(white)\ndfDrawImage(off, \"pkg:/images/myimage.png\", 50, 50)\noff.DrawRect(150, 150, 200, 200, &hFF) ' black, alpha: all source\nscreen1.DrawObject(0, 0, off)\nScreen1.Finish()\n```",
7660
+ "description": "The roBitmap component contains image data and provides an interface (ifDraw2D) for drawing. Bitmaps can be used for a variety of purposes, such as for sprites, compositing, or as double buffers.\n\nIt stores four color apps: red, green, blue, and alpha, with 32-bits per pixel. They can be any arbitrary size up to 2048x2048. However, the maximum size bitmap uses 16MB of memory, so there are practical memory limitations which would compel smaller bitmap sizes. Coordinates (x,y) for 2D bitmaps have an origin (0,0) at the top left. roBitmap is always offscreen. The top roScreen is the only ifDraw2D surface which is displayed. roBitmap represents something that can be drawn onto, as well as something that can be drawn.\n\nDrawing operations into a roBitmap (or other surface with ifDraw2D interface, such as an [roScreen](https://developer.roku.com/docs/references/brightscript/components/roscreen.md\"roScreen\")) are clipped so the only the part that is within its bounds is rendered. X,Y coordinates that specify a location in a bitmap to render to (for example, as used by DrawObject() or DrawText() ) may be positive or negative. Negative implies that the left and top of the rendered object will be clipped.The same bitmap cannot be used as a source and a destination in a single DrawObject() call.\n\nThere are limitations when using the onscreen bitmap as a source. For example, Alpha blending may not work.\n\nAn empty roBitmap object can be created with CreateObject():\n\n`CreateObject(\"roBitmap\", bitmapProps As Object)`\n\nbitmapProps is an roAssociativeArray with Integers width (Integer), height (Integer), and AlphaEnable (Boolean), and name (String) parameters. The contents of an empty RoBitmap are initialized to zero (transparent black).\n\nExample: `CreateObject(\"roBitmap\", {width:10, height:10, AlphaEnable:false, name:\"MyBitmapName\"})`\n\nAn roBitmap can also load its image data from a file:\n\n`CreateObject(\"roBitmap\", String filename)`\n\n**Example**\n\n```\n' Draw three bitmaps as fast as we can\n'\nScreen=CreateObject(\"roScreen\")\nbm1=CreateObject(\"roBitmap\", \"pkg:/images/myphoto1.jpg\")\nbm2=CreateObject(\"roBitmap\", \"pkg:/images/myphoto2.jpg\")\nbm3=CreateObject(\"roBitmap\", \"pkg:/images/myphoto3.jpg\")\nbmarray=[bm1, bm2, bm3]\nWhile true\n For each bitmap in bmarray\n Screen.DrawObject(0,0, bitmap)\n Screen.Finish()\n End for\nEnd While\n```\n\n**Example: Double buffering with roBitmap**\n\n```\nscreen1=CreateObject(\"roScreen\")\noff=CreateObject(\"roBitmap\", {width:1280, height:720, AlphaEnable:false})\noff.Clear(white)\ndfDrawImage(off, \"pkg:/images/myimage.png\", 50, 50)\noff.DrawRect(150, 150, 200, 200, &hFF) ' black, alpha: all source\nscreen1.DrawObject(0, 0, off)\nScreen1.Finish()\n```",
7551
7661
  "events": [],
7552
7662
  "interfaces": [
7553
7663
  {
@@ -7597,6 +7707,10 @@
7597
7707
  "name": "ifArraySet",
7598
7708
  "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifarrayset.md"
7599
7709
  },
7710
+ {
7711
+ "name": "ifArraySlice",
7712
+ "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifarrayslice.md"
7713
+ },
7600
7714
  {
7601
7715
  "name": "ifByteArray",
7602
7716
  "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifbytearray.md"
@@ -7611,7 +7725,7 @@
7611
7725
  },
7612
7726
  "rocecstatus": {
7613
7727
  "constructors": [],
7614
- "description": "The roCECStatus component enables channels to identify the active-source status for set boxes.",
7728
+ "description": "The roCECStatus component enables apps to identify the active-source status for set boxes.",
7615
7729
  "events": [
7616
7730
  {
7617
7731
  "name": "roCECStatusEvent",
@@ -7638,7 +7752,7 @@
7638
7752
  "returnType": "roChannelStore"
7639
7753
  }
7640
7754
  ],
7641
- "description": "The roChannelStore component allows the application to perform a purchase of an In-Channel Product or upgrade a channel. Most of the purchase flow, screens and messaging associated with the financial transaction are handled by the Roku OS outside of control or monitoring by BrightScript code. The BrightScript code merely initiates the purchase and receives a final result. This will engender trust with users and give them confidence that they are dealing with the Roku Channel Store.\n\nThe roChannelStore component allows purchasing only those In-Channel Products which are associated with the running channel. Please see [Adding in-channel products](/docs/developer-program/roku-pay/quickstart/in-channel-products.md \"Adding in-channel products\") for details on how to create an In-Channel Product and associate it with a channel. After one or Products are created, GetCatalog() can be used to retrieve a list of Products and their attributes. DoOrder() can be called to initiate a purchase of one or more of the Products.\n\nThis object is created without any arguments:\n\n`CreateObject(\"roChannelStore\")`\n\n> Because [ifChannelStore.DoOrder()](https://developer.roku.com/docs/references/brightscript/interfaces/ifchannelstore.mddoorder-as-boolean \"ifChannelStore.DoOrder()\") needs to read the product type returned by GetCatalog(), only one instance of roChannelStore should ever be used for a complete purchase flow - you should never create a separate roChannelStore object to complete a purchase that was initiated by a different instance of roChannelStore.",
7755
+ "description": "The roChannelStore component allows the application to perform a purchase of an In-App Product or upgrade an app. Most of the purchase flow, screens and messaging associated with the financial transaction are handled by the Roku OS outside of control or monitoring by BrightScript code. The BrightScript code merely initiates the purchase and receives a final result. This will engender trust with users and give them confidence that they are dealing with the Streaming Store.\n\nThe roChannelStore component allows purchasing only those In-App Products which are associated with the running app. Please see [Adding in-app products](/docs/developer-program/roku-pay/quickstart/in-channel-products.md \"Adding in-app products\") for details on how to create an In-App Product and associate it with an app. After one or Products are created, GetCatalog() can be used to retrieve a list of Products and their attributes. DoOrder() can be called to initiate a purchase of one or more of the Products.\n\nThis object is created without any arguments:\n\n`CreateObject(\"roChannelStore\")`\n\n> Because [ifChannelStore.DoOrder()](https://developer.roku.com/docs/references/brightscript/interfaces/ifchannelstore.mddoorder-as-boolean \"ifChannelStore.DoOrder()\") needs to read the product type returned by GetCatalog(), only one instance of roChannelStore should ever be used for a complete purchase flow - you should never create a separate roChannelStore object to complete a purchase that was initiated by a different instance of roChannelStore.",
7642
7756
  "events": [
7643
7757
  {
7644
7758
  "name": "roChannelStoreEvent",
@@ -7744,7 +7858,7 @@
7744
7858
  "returnType": "roDeviceCrypto"
7745
7859
  }
7746
7860
  ],
7747
- "description": "The roDeviceCrypto component enables you to encrypt and decrypt data on a device using a key that is unique per channel, device, or model. Using a channel key for example, you can encrypt data for a channel so that it may only be decrypted by that same channel. In this case, you could provision credentials or an API key from the cloud to devices securely. With a device key for example, you could implement a secure-storage like algorithm.",
7861
+ "description": "The roDeviceCrypto component enables you to encrypt and decrypt data on a device using a key that is unique per app, device, or model. Using an app key for example, you can encrypt data for an app so that it may only be decrypted by that same app. In this case, you could provision credentials or an API key from the cloud to devices securely. With a device key for example, you could implement a secure-storage like algorithm.",
7748
7862
  "events": [],
7749
7863
  "interfaces": [
7750
7864
  {
@@ -7804,9 +7918,8 @@
7804
7918
  "url": "https://developer.roku.com/docs/references/brightscript/components/rodouble.md"
7805
7919
  },
7806
7920
  "rodsa": {
7807
- "availableSince": "10.5",
7808
7921
  "constructors": [],
7809
- "description": "_Available since Roku OS 10.5_\n\nThe DSA component provides support for the ECDSA and EdDSA (with Ed25519 form) digital signature algorithms. It is used to provide cryptographically signed evidence that an ad request originated from an actual Roku device.",
7922
+ "description": "The DSA component provides support for the ECDSA and EdDSA (with Ed25519 form) digital signature algorithms. It is used to provide cryptographically signed evidence that an ad request originated from an actual Roku device.",
7810
7923
  "events": [],
7811
7924
  "interfaces": [
7812
7925
  {
@@ -8022,7 +8135,7 @@
8022
8135
  "returnType": "roInput"
8023
8136
  }
8024
8137
  ],
8025
- "description": "An roInput object can be used to receive events sent from a network client using the External Control Protocol (ECP), as described in [External Control API](/docs/developer-program/dev-tools/external-control-api.md \"External Control API\").\n\n> The [supports\\_input\\_launch manifest flag](/docs/developer-program/getting-started/architecture/channel-manifest.md#launch-requirement-attributes) must be set for channels to accept deep linking parameters when already running. This flag enables deep linking into content without relaunching the channel. See the [Deep Linking sample channel](https://github.com/rokudev/deep-Linking-samples) for how to use roInput to handle deep links into content while the channel is already running.\n\nRefer to [External Control Service Commands](/docs/developer-program/dev-tools/external-control-api.md#external-control-service-commands \"External Control Service Commands\") for information about the ECP input command.\n\nThis object is created without any arguments:\n\n`CreateObject(\"roInput\")`\n\n**Example**\n\nThe following prints information received from an external device in JSON format. If the external device sends the following input command:\n\n```\ncurl -d '' '<roku_target_device>:8060/input?my_event=My%20Test&x=100&y=200&action=start'\n```\n\nThe following will be printed:\n\n```\n{\"action\":\"start\",\"my_event\":\"My Test\",\"x\":\"100\",\"y\":\"200\"}\n```\n\n**roInput Example**\n\n```\nmsgPort = CreateObject(\"roMessagePort\")\n\ninput = CreateObject(\"roInput\")\ninput.SetMessagePort(msgPort)\n\nprint \"Waiting for messages...\"\nwhile true\n msg = wait(0, msgPort)\n if type(msg) = \"roInputEvent\"\n if msg.IsInput()\n info = msg.GetInfo()\n print \"Received input: \"; FormatJSON(info)\n end if\n end if\nend while\n```",
8138
+ "description": "An roInput object can be used to receive events sent from a network client using the External Control Protocol (ECP), as described in [External Control API](/docs/developer-program/dev-tools/external-control-api.md \"External Control API\").\n\n> The [supports\\_input\\_launch manifest flag](/docs/developer-program/getting-started/architecture/channel-manifest.md#launch-requirement-attributes) must be set for channels to accept deep linking parameters when already running. This flag enables deep linking into content without relaunching the app. See the [Deep Linking sample app](https://github.com/rokudev/deep-Linking-samples) for how to use roInput to handle deep links into content while the app is already running.\n\nRefer to [External Control Service Commands](/docs/developer-program/dev-tools/external-control-api.md#external-control-service-commands \"External Control Service Commands\") for information about the ECP input command.\n\nThis object is created without any arguments:\n\n`CreateObject(\"roInput\")`\n\n**Example**\n\nThe following prints information received from an external device in JSON format. If the external device sends the following input command:\n\n```\ncurl -d '' '<roku_target_device>:8060/input?my_event=My%20Test&x=100&y=200&action=start'\n```\n\nThe following will be printed:\n\n```\n{\"action\":\"start\",\"my_event\":\"My Test\",\"x\":\"100\",\"y\":\"200\"}\n```\n\n**roInput Example**\n\n```\nmsgPort = CreateObject(\"roMessagePort\")\n\ninput = CreateObject(\"roInput\")\ninput.SetMessagePort(msgPort)\n\nprint \"Waiting for messages...\"\nwhile true\n msg = wait(0, msgPort)\n if type(msg) = \"roInputEvent\"\n if msg.IsInput()\n info = msg.GetInfo()\n print \"Received input: \"; FormatJSON(info)\n end if\n end if\nend while\n```",
8026
8139
  "events": [
8027
8140
  {
8028
8141
  "name": "roInputEvent",
@@ -8078,6 +8191,7 @@
8078
8191
  "url": "https://developer.roku.com/docs/references/brightscript/interfaces/iftostr.md"
8079
8192
  }
8080
8193
  ],
8194
+ "methods": [],
8081
8195
  "name": "roIntrinsicDouble",
8082
8196
  "url": "https://developer.roku.com/docs/references/brightscript/components/rodouble.md"
8083
8197
  },
@@ -8187,7 +8301,7 @@
8187
8301
  },
8188
8302
  "romicrophone": {
8189
8303
  "constructors": [],
8190
- "description": "The roMicrophone API allows channel applications to receive audio data from the user’s microphone-supported remote control device or mobile phone. When a user initiates recording on their remote control device or mobile phone (via the Roku Mobile App) for the first time within the application, the application will request the user’s permission for the application to access the microphone by displaying a UI dialog box.\n\nThe application will only receive microphone access if the permission is granted by the user.\n\n![roku815px - microphone-access](https://image.roku.com/ZHZscHItMTc2/microphone-access.jpg \"microphone-access\")\n\nAfter the permission is granted, whenever a user activates the microphone, the application will display a notice informing the user that the microphone is currently being used by the application.\n\nFrom the settings menu (Settings > Privacy > Microphone), the user can revoke microphone permissions from individual applications, at which time the particular application will not be able to access the microphone unless the user re-enables microphone permissions.\n\nFrom the settings menu, the user may also:\n\n* (a) enable universal microphone access permissions for all applications (thereby eliminating the need to request microphone permission on an application by application basis), and\n* (b) prohibit all applications from accessing the microphone.\n\n![roku815px - microphone-setting](https://image.roku.com/ZHZscHItMTc2/microphone-setting.jpg \"microphone-setting\")\n\nWhen integrating the roMicrophone API, you acknowledge and agree to the following:\n\n* (i) that you will notify your users of your collection, use, and disclosure of any voice recordings or other derived data that you receive through the roMicrophone API;\n* (ii) you will not modify, circumvent, obscure, or otherwise diminish the notices provided by the roMicrophone API to users when they activate or enable microphone recording from their remote control device or mobile phone;\n* (iii) you will not collect any information from, or otherwise activate, the microphone on any remote control device or mobile phone using the roMicrophone API feature without receiving the requisite permissions from the user;\n* (iv) you have and will maintain a legally adequate privacy policy;\n* (v) you have and will maintain all necessary rights and consents from users to use the roMicrophone API features; and\n* (vi) your use of the roMicrophone API features will comply with all applicable laws, rules, and regulations.\n\nYOU FURTHER AGREE YOU WILL NOT USE THE roMicrophone API AND FEATURES IN CONNECTION WITH CONTENT OR CHANNELS DIRECTED TOWARD CHILDREN OR IN CONNECTION WITH USERS KNOWN TO BE CHILDREN. If Roku discovers or determines that you are using the roMicrophone API and features in connection with content or channels directed toward children or with users known to be children, Roku reserves the right to disable or otherwise limit your access to the roMicrophone API feature and related functionality.\n\nYOU MAY NOT ENABLE THE roMicrophone API FEATURES IF YOU DO NOT AGREE TO ABOVE. PLEASE CONTACT ROKU FOR FURTHER INFORMATION. Implementation\n\nThe application should display a focusable button or indicator in the UI that the user selects by pressing and holding the OK button. In response to the OK press event, the application can call:\n\n* [StartRecording()](https://developer.roku.com/docs/references/brightscript/interfaces/ifmicrophone.md\"StartRecording\") - to receive streamed audio data from the microphone asynchronously or\n* [RecordToFile()](https://developer.roku.com/docs/references/brightscript/interfaces/ifmicrophone.md\"RecordToFile()\") - to have the audio data directly captured to a WAV format output file.\n\n> Roku OS will display a HUD to let the user initially consent to be recorded and to subsequently be informed when the microphone is being used. Recording is performed as long as the user holds down the OK button, or until a limit is reached or if an error should occur.",
8304
+ "description": "The roMicrophone API allows apps to receive audio data from the user’s microphone-supported remote control device or mobile phone. When a user initiates recording on their remote control device or mobile phone (via the Roku Mobile App) for the first time within the application, the application will request the user’s permission for the application to access the microphone by displaying a UI dialog box.\n\nThe application will only receive microphone access if the permission is granted by the user.\n\n![roku815px - microphone-access](https://image.roku.com/ZHZscHItMTc2/microphone-access.jpg \"microphone-access\")\n\nAfter the permission is granted, whenever a user activates the microphone, the application will display a notice informing the user that the microphone is currently being used by the application.\n\nFrom the settings menu (Settings > Privacy > Microphone), the user can revoke microphone permissions from individual applications, at which time the particular application will not be able to access the microphone unless the user re-enables microphone permissions.\n\nFrom the settings menu, the user may also:\n\n* (a) enable universal microphone access permissions for all applications (thereby eliminating the need to request microphone permission on an application by application basis), and\n* (b) prohibit all applications from accessing the microphone.\n\n![roku815px - microphone-setting](https://image.roku.com/ZHZscHItMTc2/microphone-setting.jpg \"microphone-setting\")\n\nWhen integrating the roMicrophone API, you acknowledge and agree to the following:\n\n* (i) that you will notify your users of your collection, use, and disclosure of any voice recordings or other derived data that you receive through the roMicrophone API;\n* (ii) you will not modify, circumvent, obscure, or otherwise diminish the notices provided by the roMicrophone API to users when they activate or enable microphone recording from their remote control device or mobile phone;\n* (iii) you will not collect any information from, or otherwise activate, the microphone on any remote control device or mobile phone using the roMicrophone API feature without receiving the requisite permissions from the user;\n* (iv) you have and will maintain a legally adequate privacy policy;\n* (v) you have and will maintain all necessary rights and consents from users to use the roMicrophone API features; and\n* (vi) your use of the roMicrophone API features will comply with all applicable laws, rules, and regulations.\n\nYOU FURTHER AGREE YOU WILL NOT USE THE roMicrophone API AND FEATURES IN CONNECTION WITH CONTENT OR APPS DIRECTED TOWARD CHILDREN OR IN CONNECTION WITH USERS KNOWN TO BE CHILDREN. If Roku discovers or determines that you are using the roMicrophone API and features in connection with content or apps directed toward children or with users known to be children, Roku reserves the right to disable or otherwise limit your access to the roMicrophone API feature and related functionality.\n\nYOU MAY NOT ENABLE THE roMicrophone API FEATURES IF YOU DO NOT AGREE TO ABOVE. PLEASE CONTACT ROKU FOR FURTHER INFORMATION. Implementation\n\nThe application should display a focusable button or indicator in the UI that the user selects by pressing and holding the OK button. In response to the OK press event, the application can call:\n\n* [StartRecording()](https://developer.roku.com/docs/references/brightscript/interfaces/ifmicrophone.md\"StartRecording\") - to receive streamed audio data from the microphone asynchronously or\n* [RecordToFile()](https://developer.roku.com/docs/references/brightscript/interfaces/ifmicrophone.md\"RecordToFile()\") - to have the audio data directly captured to a WAV format output file.\n\n> Roku OS will display a HUD to let the user initially consent to be recorded and to subsequently be informed when the microphone is being used. Recording is performed as long as the user holds down the OK button, or until a limit is reached or if an error should occur.",
8191
8305
  "events": [
8192
8306
  {
8193
8307
  "name": "roMicrophoneEvent",
@@ -8351,7 +8465,7 @@
8351
8465
  "returnType": "roRegistry"
8352
8466
  }
8353
8467
  ],
8354
- "description": "The Registry is an area of non-volatile storage where a small number of persistent settings can be stored.\n\nThe Registry provides a means for an application to write and read small amounts of data such as settings, scores, etc. The data persists even if the user exits the application and even if the player is rebooted. Registry data is removed only when the application explicitly removes it, the user uninstalls the application, which remove the registry for the application, or the user performs a factory reset, which removes the registry for all applications.\n\nAccess to the registry is available through the roRegistry object. This object is created with no parameters:\n\n`CreateObject(\"roRegistry\")`\n\nThere is a separate registry for each [developer ID](/docs/developer-program/publishing/packaging-channels.md#step-3-run-the-genkey-utility-to-create-a-signing-key \"developer ID\"). This allows multiple applications to use the registry without being able to read or modify the registry from other applications. If desired, a single registry can be shared across multiple applications by using the same developer ID to package the applications. This is the conventional way that an \"application suite\" with shared preferences and other shared information should work. Each registry is divided into sections which are specified by the developer for organization and grouping of attributes. Methods in ifRegistry are provided to list the sections in the registry and to provide access to the data in each section.\n\n> The maximum size of each zlib-compressed application registry is **32K bytes**. Channels should minimize the amount of data stored in the registry and the frequency in which they update it.\n> \n> Use the **ifRegistry.GetSpaceAvailable()** function to check the number of bytes available in the registry.\n\nThe Registry also supports the use of a special transient registry section. A registry section named \"Transient\" can be used to store attributes that have the lifetime of a single boot. Within a specific boot session, these values will be persistent to the application and stored as any other registry value. Whenever the user reboots the Roku Streaming Player, all \"Transient\" registry sections are removed and the values no longer persist. This technique is useful for caching data to minimize network access, yet still ensuring that this data is always fresh after a system reboot.\n\nThe registry is encrypted, and updates are relatively performance intensive and should be used sparingly. Note that all writes to the registry are delayed, and not committed to non-volatile storage until ifRegistry.Flush() or ifRegistrySection.Flush() is explicitly called. The platform may choose opportune times to flush data on its own, but no application is technically correct unless it explicitly calls Flush() at appropriate times. Flushing the registry is a relatively time-consuming operation, so it should be done as infrequently as possible. The Registry data is stored in a fault tolerant manner by preserving a backup for each write which is automatically rolled-back in the event of a failure.",
8468
+ "description": "The Registry is an area of non-volatile storage where a small number of persistent settings can be stored.\n\nThe Registry provides a means for an application to write and read small amounts of data such as settings, scores, etc. The data persists even if the user exits the application and even if the player is rebooted. Registry data is removed only when the application explicitly removes it, the user uninstalls the application, which remove the registry for the application, or the user performs a factory reset, which removes the registry for all applications.\n\nAccess to the registry is available through the roRegistry object. This object is created with no parameters:\n\n`CreateObject(\"roRegistry\")`\n\nThere is a separate registry for each [developer ID](/docs/developer-program/publishing/packaging-channels.md#step-3-run-the-genkey-utility-to-create-a-signing-key \"developer ID\"). This allows multiple applications to use the registry without being able to read or modify the registry from other applications. If desired, a single registry can be shared across multiple applications by using the same developer ID to package the applications. This is the conventional way that an \"application suite\" with shared preferences and other shared information should work. Each registry is divided into sections which are specified by the developer for organization and grouping of attributes. Methods in ifRegistry are provided to list the sections in the registry and to provide access to the data in each section.\n\n> The maximum size of each zlib-compressed application registry is **32K bytes**. Apps should minimize the amount of data stored in the registry and the frequency in which they update it.\n> \n> Use the **ifRegistry.GetSpaceAvailable()** function to check the number of bytes available in the registry.\n\nThe Registry also supports the use of a special transient registry section. A registry section named \"Transient\" can be used to store attributes that have the lifetime of a single boot. Within a specific boot session, these values will be persistent to the application and stored as any other registry value. Whenever the user reboots the Roku Streaming Player, all \"Transient\" registry sections are removed and the values no longer persist. This technique is useful for caching data to minimize network access, yet still ensuring that this data is always fresh after a system reboot.\n\nThe registry is encrypted, and updates are relatively performance intensive and should be used sparingly. Note that all writes to the registry are delayed, and not committed to non-volatile storage until ifRegistry.Flush() or ifRegistrySection.Flush() is explicitly called. The platform may choose opportune times to flush data on its own, but no application is technically correct unless it explicitly calls Flush() at appropriate times. Flushing the registry is a relatively time-consuming operation, so it should be done as infrequently as possible. The Registry data is stored in a fault tolerant manner by preserving a backup for each write which is automatically rolled-back in the event of a failure.",
8355
8469
  "events": [],
8356
8470
  "interfaces": [
8357
8471
  {
@@ -8558,7 +8672,7 @@
8558
8672
  "returnType": "roSGScreen"
8559
8673
  }
8560
8674
  ],
8561
- "description": "The roSGScreen object is a SceneGraph canvas that displays the contents of a SceneGraph Scene node instance. The object is created by calling:\n\n`CreateObject(\"roSGScreen\")`\n\n`CreateScene()` takes one argument, the name of the scene component. A channel will typically extend Scene to define its own channel specific Scene type (such as MyScene, etc.) This Scene component name is passed to `CreateScene().`\n\n**roSGScreen typical usage example**\n\n```\nscreen = CreateObject(\"roSGScreen\")\nscene = screen.CreateScene(\"Scene\")\nscreen.show()\n```",
8675
+ "description": "The roSGScreen object is a SceneGraph canvas that displays the contents of a SceneGraph Scene node instance. The object is created by calling:\n\n`CreateObject(\"roSGScreen\")`\n\n`CreateScene()` takes one argument, the name of the scene component. An app will typically extend Scene to define its own app-specific Scene type (such as MyScene, etc.) This Scene component name is passed to `CreateScene().`\n\n**roSGScreen typical usage example**\n\n```\nscreen = CreateObject(\"roSGScreen\")\nscene = screen.CreateScene(\"Scene\")\nscreen.show()\n```",
8562
8676
  "events": [
8563
8677
  {
8564
8678
  "name": "roSGScreenEvent",
@@ -8694,7 +8808,7 @@
8694
8808
  "returnType": "roTextToSpeech"
8695
8809
  }
8696
8810
  ],
8697
- "description": "> To implement CVAA/screen reader support in your channel, use the [roAudioGuide](https://developer.roku.com/docs/references/brightscript/components/roaudioguide.md component object. The roTextToSpeech component object is typically used for book readers and other special-purpose applications.\n> \n> Please note this component is only available on the following devices: Roku Streaming Stick (3600X), Roku Express (3700X) and Express+ (3710X), Roku Premiere (4620X) and Premiere+ (4630X), Roku Ultra (4640X), and any Roku TV running Roku OS version 7.2 and later.\n\nThe roTextToSpeech component provides text to speech capabilities to applications.\n\nAn roTextToSpeech component object is created with no parameters:\n\n`CreateObject(\"roTextToSpeech\")`",
8811
+ "description": "> To implement CVAA/screen reader support in your app, use the [roAudioGuide](https://developer.roku.com/docs/references/brightscript/components/roaudioguide.md component object. The roTextToSpeech component object is typically used for book readers and other special-purpose applications.\n> \n> Please note this component is only available on the following devices: Roku Streaming Stick (3600X), Roku Express (3700X) and Express+ (3710X), Roku Premiere (4620X) and Premiere+ (4630X), Roku Ultra (4640X), and any Roku TV running Roku OS version 7.2 and later.\n\nThe roTextToSpeech component provides text to speech capabilities to applications.\n\nAn roTextToSpeech component object is created with no parameters:\n\n`CreateObject(\"roTextToSpeech\")`",
8698
8812
  "events": [
8699
8813
  {
8700
8814
  "name": "roTextToSpeechEvent",
@@ -8942,7 +9056,7 @@
8942
9056
  "description": "Returns the app's developer ID, or the keyed developer ID, if the application is sideloaded.",
8943
9057
  "name": "GetDevID",
8944
9058
  "params": [],
8945
- "returnDescription": "Channel's Developer ID",
9059
+ "returnDescription": "App's Developer ID",
8946
9060
  "returnType": "String"
8947
9061
  },
8948
9062
  {
@@ -8956,7 +9070,7 @@
8956
9070
  "description": "Returns the title value from the manifest.",
8957
9071
  "name": "GetTitle",
8958
9072
  "params": [],
8959
- "returnDescription": "Title of the channel",
9073
+ "returnDescription": "Title of the app",
8960
9074
  "returnType": "String"
8961
9075
  },
8962
9076
  {
@@ -8978,11 +9092,11 @@
8978
9092
  "description": "Returns the conglomerate version number from the manifest, as formatted major\\_version + minor\\_version + build\\_version.",
8979
9093
  "name": "GetVersion",
8980
9094
  "params": [],
8981
- "returnDescription": "Channel version number. e.g. \"1.2.3\"",
9095
+ "returnDescription": "App version number. e.g. \"1.2.3\"",
8982
9096
  "returnType": "String"
8983
9097
  },
8984
9098
  {
8985
- "description": "Returns true if the application is sideloaded, i.e. the channel ID is \"dev\".",
9099
+ "description": "Returns true if the application is sideloaded, i.e. the app ID is \"dev\".",
8986
9100
  "name": "IsDev",
8987
9101
  "params": [],
8988
9102
  "returnDescription": "True/ False",
@@ -9023,29 +9137,29 @@
9023
9137
  "returnType": "Object"
9024
9138
  },
9025
9139
  {
9026
- "description": "This method returns true if a channel with the specified channelID and the minimum version required is installed.",
9140
+ "description": "This method returns true if an app with the specified channelID and the minimum version required is installed.",
9027
9141
  "name": "IsAppInstalled",
9028
9142
  "params": [
9029
9143
  {
9030
9144
  "default": null,
9031
- "description": "The unique id of the channel.",
9145
+ "description": "The unique id of the app.",
9032
9146
  "isRequired": true,
9033
9147
  "name": "channelID",
9034
9148
  "type": "String"
9035
9149
  },
9036
9150
  {
9037
9151
  "default": null,
9038
- "description": "The minimum version number of the channel to be used for the query.",
9152
+ "description": "The minimum version number of the app to be used for the query.",
9039
9153
  "isRequired": true,
9040
9154
  "name": "version",
9041
9155
  "type": "String"
9042
9156
  }
9043
9157
  ],
9044
- "returnDescription": "A boolean indicating whether the specified channel is installed.",
9158
+ "returnDescription": "A boolean indicating whether the specified BrightScript app is installed.",
9045
9159
  "returnType": "Boolean"
9046
9160
  },
9047
9161
  {
9048
- "description": "Enables or disables the automatic screen reader and override any manifest setting.This is useful for channels that want to temporarily turn off the automatic screen reader for specific screens.",
9162
+ "description": "Enables or disables the automatic screen reader and override any manifest setting.This is useful for apps that want to temporarily turn off the automatic screen reader for specific screens.",
9049
9163
  "name": "SetAutomaticAudioGuideEnabled",
9050
9164
  "params": [
9051
9165
  {
@@ -9073,7 +9187,7 @@
9073
9187
  "returnType": "Void"
9074
9188
  },
9075
9189
  {
9076
- "description": "This method allows a channel to tell Roku when the user is signed in or signed out of the channelIf the channel is removed, the Roku OS will call SetUserSignedIn(false) on the channel's behalf.",
9190
+ "description": "This method allows an app to tell Roku when the user is signed in or signed out of the appIf the app is removed, the Roku OS will call SetUserSignedIn(false) on the app's behalf.",
9077
9191
  "name": "SetUserSignedIn",
9078
9192
  "params": [
9079
9193
  {
@@ -9092,7 +9206,7 @@
9092
9206
  "params": [
9093
9207
  {
9094
9208
  "default": null,
9095
- "description": "The list of text strings to be regsitered. Once a text string is registered, it can be matched to voice requests received by the channel. Each text string is defined with the following attributes: * a **text** key for storing the name or word to be matched. * an optional **link** key for storing a deep link.",
9209
+ "description": "The list of text strings to be regsitered. Once a text string is registered, it can be matched to voice requests received by the app. Each text string is defined with the following attributes: * a **text** key for storing the name or word to be matched. * an optional **link** key for storing a deep link.",
9096
9210
  "isRequired": true,
9097
9211
  "name": "actions",
9098
9212
  "type": "Object"
@@ -9101,12 +9215,12 @@
9101
9215
  "returnType": "Void"
9102
9216
  },
9103
9217
  {
9104
- "description": "Launches the channel store springboard of the specified channel. The channel store springboard contains detailed information about the channel, including ratings, version, date of last update, developer name, and a description.",
9218
+ "description": "Launches the app store springboard of the specified app. The app store springboard contains detailed information about the app, including ratings, version, date of last update, developer name, and a description.",
9105
9219
  "name": "ShowChannelStoreSpringboard",
9106
9220
  "params": [
9107
9221
  {
9108
9222
  "default": null,
9109
- "description": "The unique ID of the channel to be launched.",
9223
+ "description": "The unique ID of the app to be launched.",
9110
9224
  "isRequired": true,
9111
9225
  "name": "channelID",
9112
9226
  "type": "String"
@@ -9115,7 +9229,7 @@
9115
9229
  "returnType": "Void"
9116
9230
  },
9117
9231
  {
9118
- "description": "Triggers a voice request for the viewer to select a user profile if the device is paired with a hands-free Roku Voice remote control. This function should be called by channels that support voice commands and display a user profile selection screen upon launch, which is when this method should be called.",
9232
+ "description": "Triggers a voice request for the viewer to select a user profile if the device is paired with a hands-free Roku Voice remote control. This function should be called by apps that support voice commands and display a user profile selection screen upon launch, which is when this method should be called.",
9119
9233
  "name": "StartVoiceActionSelectionRequest",
9120
9234
  "params": [],
9121
9235
  "returnType": "Void"
@@ -9128,19 +9242,19 @@
9128
9242
  "ifappmemorymonitor": {
9129
9243
  "implementers": [
9130
9244
  {
9131
- "description": "Subscribes channels to low-memory notifications. When a channel is subscribed, it receives a [roAppMemoryMonitorEvent](https://developer.roku.com/docs/references/brightscript/events/roappmemorymonitorevent.md when it reaches a specific percentage of the per-channel memory limit (80%).",
9245
+ "description": "Subscribes channels to low-memory notifications. When an app is subscribed, it receives a [roAppMemoryMonitorEvent](https://developer.roku.com/docs/references/brightscript/events/roappmemorymonitorevent.md when it reaches a specific percentage of the per-app memory limit (80%).",
9132
9246
  "name": "roAppMemoryMonitor",
9133
9247
  "url": "https://developer.roku.com/docs/references/brightscript/components/roappmemorymonitor.md"
9134
9248
  }
9135
9249
  ],
9136
9250
  "methods": [
9137
9251
  {
9138
- "description": "Enables a channel to be alerted when it has reached 80% of its memory usage limit.",
9252
+ "description": "Enables an app to be alerted when it has reached 80% of its memory usage limit.",
9139
9253
  "name": "EnableMemoryWarningEvent",
9140
9254
  "params": [
9141
9255
  {
9142
9256
  "default": null,
9143
- "description": "A flag that enables or disables memory alerts on the channel.",
9257
+ "description": "A flag that enables or disables memory alerts on the app.",
9144
9258
  "isRequired": true,
9145
9259
  "name": "enable",
9146
9260
  "type": "Boolean"
@@ -9150,24 +9264,24 @@
9150
9264
  "returnType": "Boolean"
9151
9265
  },
9152
9266
  {
9153
- "description": "Returns the estimated kilobytes (Kb) of memory available for the channel. This can be used to determine when to release memory when a channel receives low-memory warnings.",
9267
+ "description": "Returns the estimated kilobytes (Kb) of memory available for the app. This can be used to determine when to release memory when an app receives low-memory warnings.",
9154
9268
  "name": "GetChannelAvailableMemory",
9155
9269
  "params": [],
9156
- "returnDescription": "An integer indicating the estimated available memory remaining for the channel or the available memory for the device, whichever is lower.",
9157
- "returnType": "dynamic"
9270
+ "returnDescription": "An integer indicating the estimated available memory remaining for the app or the available memory for the device, whichever is lower.",
9271
+ "returnType": "integer"
9158
9272
  },
9159
9273
  {
9160
- "description": "Returns the amount of foreground and background memory the app may use and the maximum amount of memory that the RokuOS may allocate on behalf of the app (the memory that shows up in the channel's heap memory statistics). This helps developers debug memory issues and find out the maximum available memory for scenarios such as when their app has been suspended and is in the background, is playing a video, and so on.",
9274
+ "description": "Returns the amount of foreground and background memory the app may use and the maximum amount of memory that the RokuOS may allocate on behalf of the app (the memory that shows up in the app's heap memory statistics). This helps developers debug memory issues and find out the maximum available memory for scenarios such as when their app has been suspended and is in the background, is playing a video, and so on.",
9161
9275
  "name": "GetChannelMemoryLimit",
9162
9276
  "params": [],
9163
9277
  "returnType": "Object"
9164
9278
  },
9165
9279
  {
9166
- "description": "Returns the usage percentage of memory limit for the channel.",
9280
+ "description": "Returns the usage percentage of memory limit for the app.",
9167
9281
  "name": "GetMemoryLimitPercent",
9168
9282
  "params": [],
9169
- "returnDescription": "The usage percentage of memory limit for the channel.",
9170
- "returnType": "dynamic"
9283
+ "returnDescription": "The usage percentage of memory limit for the app.",
9284
+ "returnType": "integer"
9171
9285
  }
9172
9286
  ],
9173
9287
  "name": "ifAppMemoryMonitor",
@@ -9268,14 +9382,14 @@
9268
9382
  "returnType": "Void"
9269
9383
  },
9270
9384
  {
9271
- "description": "Removes the first entry (zero index) from the beginning of the array and shifts the other entries up. This method is similar to the [Pop method](#pushtvalue-as-dynamic-as-void), but inserts a new first entry in the array instead of adding a last one.",
9385
+ "description": "Removes the first entry (zero index) from the beginning of the array and shifts the other entries up. This method is similar to the [Pop method](#pushtvalue-as-dynamic-as-void), but removes the first entry in the array instead of the last one.",
9272
9386
  "name": "Shift",
9273
9387
  "params": [],
9274
9388
  "returnDescription": "The first entry (zero index) removed from the array.",
9275
9389
  "returnType": "Dynamic"
9276
9390
  },
9277
9391
  {
9278
- "description": "Adds the specified value to the beginning of the array (at the zero index) and shifts the other entries down. This method is similar to the [Push method](#push-as-dynamic), but inserts a new first entry in the array instead of adding a last one.",
9392
+ "description": "Adds the specified value to the beginning of the array (at the zero index) and shifts the other entries down. This method is similar to the [Push method](#push-as-dynamic), but adds the new entry to the beginning of the array instead of to the end.",
9279
9393
  "name": "Unshift",
9280
9394
  "params": [
9281
9395
  {
@@ -9424,11 +9538,16 @@
9424
9538
  "description": "An array stores an indexed collection of BrightScript objects. Each entry of an array can be a different type, or they may all of the same type.",
9425
9539
  "name": "roArray",
9426
9540
  "url": "https://developer.roku.com/docs/references/brightscript/components/roarray.md"
9541
+ },
9542
+ {
9543
+ "description": "The byte array component is used to contain and manipulate an arbitrary array of bytes",
9544
+ "name": "roByteArray",
9545
+ "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifbytearray.md"
9427
9546
  }
9428
9547
  ],
9429
9548
  "methods": [
9430
9549
  {
9431
- "description": "Returns a new array object with a shallow copy of the specified portion of the array.\n\nThe **start_pos** and **end_pos** fields specify the 0-based indices of items in the array, where the **end_pos** field represents the position **past** the last element to be copied.",
9550
+ "description": "**OVERLOADED METHOD**\n\nReturns a new array object with a shallow copy of the specified portion of the array.\n\n or \n\nReturns a new array object with a shallow copy of the specified portion of the array.\n\nThe **start_pos** and **end_pos** fields specify the 0-based indices of items in the array, where the **end_pos** field represents the position **past** the last element to be copied.",
9432
9551
  "name": "Slice",
9433
9552
  "params": [
9434
9553
  {
@@ -9436,17 +9555,17 @@
9436
9555
  "description": "The 0-based index of first element to copy. A negative index specifies an offset from the end of the array. The default value is 0.",
9437
9556
  "isRequired": false,
9438
9557
  "name": "start_pos",
9439
- "type": "integer"
9558
+ "type": "Integer or integer"
9440
9559
  },
9441
9560
  {
9442
9561
  "default": null,
9443
9562
  "description": "The 0-based index past last element to copy. A negative index indicates an offset from the end of the array. The default value is the array length.",
9444
9563
  "isRequired": false,
9445
9564
  "name": "end_pos",
9446
- "type": "integer"
9565
+ "type": "Integer or integer"
9447
9566
  }
9448
9567
  ],
9449
- "returnDescription": "Shallow copy of specified portion of the array",
9568
+ "returnDescription": "\n\n or \n\nShallow copy of specified portion of the array",
9450
9569
  "returnType": "Object"
9451
9570
  }
9452
9571
  ],
@@ -9878,12 +9997,12 @@
9878
9997
  "returnType": "Void"
9879
9998
  },
9880
9999
  {
9881
- "description": "Specifies the timedMetaData keys that the channel is interested in receiving from the timedMetaData event.",
10000
+ "description": "Specifies the timedMetaData keys that the app is interested in receiving from the timedMetaData event.",
9882
10001
  "name": "SetTimedMetaDataForKeys",
9883
10002
  "params": [
9884
10003
  {
9885
10004
  "default": null,
9886
- "description": "The set of keys to be received from the timedMetaData event. If the keys array is empty, all the timed metadata associated with the current stream is sent with the isTimedMetaData event. If the keys array is invalid, then do not return any keys to the BrightScript channel. Any keys not specified with this method are deleted by the Roku OS and never returned to the BrightScript application.",
10005
+ "description": "The set of keys to be received from the timedMetaData event. If the keys array is empty, all the timed metadata associated with the current stream is sent with the isTimedMetaData event. If the keys array is invalid, then do not return any keys to the BrightScript app. Any keys not specified with this method are deleted by the Roku OS and never returned to the BrightScript application.",
9887
10006
  "isRequired": true,
9888
10007
  "name": "keys",
9889
10008
  "type": "roArray"
@@ -10270,7 +10389,7 @@
10270
10389
  "ifchannelstore": {
10271
10390
  "implementers": [
10272
10391
  {
10273
- "description": "allows the application to perform a purchase of an In-Channel Product or upgrade a channel",
10392
+ "description": "allows the application to perform a purchase of an in-app product or upgrade an app",
10274
10393
  "name": "roChannelStore",
10275
10394
  "url": "https://developer.roku.com/docs/references/brightscript/components/rochannelstore.md"
10276
10395
  }
@@ -10323,7 +10442,7 @@
10323
10442
  "returnType": "Integer"
10324
10443
  },
10325
10444
  {
10326
- "description": "Displays the Roku Channel Store Product Purchase Screen populated with information from the current Order.",
10445
+ "description": "Displays the Streaming Store Product Purchase Screen populated with information from the current Order.",
10327
10446
  "name": "DoOrder",
10328
10447
  "params": [],
10329
10448
  "returnDescription": "A flag indicating whether the user approved the order (true if the order was approved; false otherwise).",
@@ -10350,7 +10469,7 @@
10350
10469
  "returnType": "Void"
10351
10470
  },
10352
10471
  {
10353
- "description": "Requests the list of In-Channel products that are linked to the running channel.",
10472
+ "description": "Requests the list of in-app products that are linked to the running app.",
10354
10473
  "name": "GetCatalog",
10355
10474
  "params": [],
10356
10475
  "returnType": "Void"
@@ -10363,7 +10482,7 @@
10363
10482
  "returnType": "Object"
10364
10483
  },
10365
10484
  {
10366
- "description": "Generates a signed JSON web token (JWT) in the Roku cloud and returns it to the channel application. This token can then be used by the publisher's web services to verify that a message originated from a genuine Roku device. The following example demonstrates how to generate the device attestation token:",
10485
+ "description": "Generates a signed JSON web token (JWT) in the Roku cloud and returns it to the app. This token can then be used by the publisher's web services to verify that a message originated from a genuine Roku device. The following example demonstrates how to generate the device attestation token:",
10367
10486
  "name": "GetDeviceAttestation",
10368
10487
  "params": [
10369
10488
  {
@@ -10374,7 +10493,7 @@
10374
10493
  "type": "String"
10375
10494
  }
10376
10495
  ],
10377
- "returnDescription": "The generated JWT token. The following demonstrates a sample JWT that is returned to the channel. Developers can use a [JWT debugger](https://jwt.io/#debugger-io) to decode this token.",
10496
+ "returnDescription": "The generated JWT token. The following demonstrates a sample JWT that is returned to the app. Developers can use a [JWT debugger](https://jwt.io/#debugger-io) to decode this token.",
10378
10497
  "returnType": "String"
10379
10498
  },
10380
10499
  {
@@ -10397,7 +10516,7 @@
10397
10516
  "params": [
10398
10517
  {
10399
10518
  "default": null,
10400
- "description": "A comma-separated list of the attribute names to be returned. For example, to return only the email address and first name of the user's account, you would call GetPartialUserData(\"email, firstname\"). The full set of user account properties that can be queried with the function is: * firstname * lastname * email * street * city * state * zip * country * phone * birth (_Available since Roku OS 10.0_) * gender (_Available since Roku OS 10.0_)",
10519
+ "description": "A comma-separated list of the attribute names to be returned. For example, to return only the email address and first name of the user's account, you would call GetPartialUserData(\"email, firstname\"). The full set of user account properties that can be queried with the function is: * firstname * lastname * email * street * city * state * zip * country * phone * birth * gender",
10401
10520
  "isRequired": true,
10402
10521
  "name": "properties",
10403
10522
  "type": "String"
@@ -10420,13 +10539,13 @@
10420
10539
  "returnType": "Void"
10421
10540
  },
10422
10541
  {
10423
- "description": "Requests the list of globally available In-Channel products, which are available to all channels.",
10542
+ "description": "Requests the list of globally available in-app products, which are available to all apps.",
10424
10543
  "name": "GetStoreCatalog",
10425
10544
  "params": [],
10426
10545
  "returnType": "Void"
10427
10546
  },
10428
10547
  {
10429
- "description": "The GetUserData() function provides a way to request user authorization to share the user’s account information with the calling channel.",
10548
+ "description": "The GetUserData() function provides a way to request user authorization to share the user’s account information with the calling app.",
10430
10549
  "name": "GetUserData",
10431
10550
  "params": [],
10432
10551
  "returnDescription": "When called, the method presents a dialog screen containing the user’s account information, along with two buttons labeled Share and Don’t Share.",
@@ -10861,7 +10980,7 @@
10861
10980
  "ifdevicecrypto": {
10862
10981
  "implementers": [
10863
10982
  {
10864
- "description": "Encrypts and decrypts data on a device using a key that is unique per channel, device, or model.",
10983
+ "description": "Encrypts and decrypts data on a device using a key that is unique per app, device, or model.",
10865
10984
  "name": "roDeviceCrypto",
10866
10985
  "url": "https://developer.roku.com/docs/references/brightscript/components/rodevicecrypto.md"
10867
10986
  }
@@ -10887,10 +11006,10 @@
10887
11006
  }
10888
11007
  ],
10889
11008
  "returnDescription": "An roByteArray containing the decrypted data.",
10890
- "returnType": "dynamic"
11009
+ "returnType": "roByteArray"
10891
11010
  },
10892
11011
  {
10893
- "description": "Encrypts data on a device that is unique per device, channel, or model.",
11012
+ "description": "Encrypts data on a device that is unique per device, app, or model.",
10894
11013
  "name": "Encrypt",
10895
11014
  "params": [
10896
11015
  {
@@ -10902,14 +11021,14 @@
10902
11021
  },
10903
11022
  {
10904
11023
  "default": null,
10905
- "description": "The encryption key type, which is a string that may be set to \"channel\", \"device\", or \"model\": \n| encType | Description |\n| ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| device | Encrypt data with a device unique key. This can be used to implement a secure storage-like algorithm. |\n| channel | Encrypt data with a channel unique key This enables you to provision credentials, API tokens, or other data from the cloud to devices securely. Channels signed with same signing key will share the encryption key. |\n| model | Encrypt channel with a model unique key This is similar to the \"channel\" encryption type, but with the scope limited to a specific model. |\n",
11024
+ "description": "The encryption key type, which is a string that may be set to \"channel\", \"device\", or \"model\": \n| encType | Description |\n| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| device | Encrypt data with a device unique key. This can be used to implement a secure storage-like algorithm. |\n| channel | Encrypt data with an app unique key This enables you to provision credentials, API tokens, or other data from the cloud to devices securely. Apps signed with same signing key will share the encryption key. |\n| model | Encrypt app with a model unique key This is similar to the \"channel\" encryption type, but with the scope limited to a specific model. |\n",
10906
11025
  "isRequired": true,
10907
11026
  "name": "encType",
10908
11027
  "type": "String"
10909
11028
  }
10910
11029
  ],
10911
11030
  "returnDescription": "An roByteArray containing the encrypted data.",
10912
- "returnType": "dynamic"
11031
+ "returnType": "roByteArray"
10913
11032
  }
10914
11033
  ],
10915
11034
  "name": "ifDeviceCrypto",
@@ -10931,7 +11050,7 @@
10931
11050
  "params": [
10932
11051
  {
10933
11052
  "default": null,
10934
- "description": "An associative array with the audio format to be checked. The general format of the associative arrays for CanDecodeAudio() is similar to the parameter and return associative arrays used in [CanDecodeVideo()](https://developer.roku.com/docs/references/brightscript/interfaces/ifdeviceinfo.mdcandecodevideovideo_format-as-object-as-object): \n| Key | Type | Value | Requirement |\n| ---------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |\n| Codec | string | Specifies the audio codec: “aac”, “ac3”, “eac3”, \"alac\", \"flac\", “mp2”, “mp3”, “vorbis”, “wma” (sunset as of Roku OS 12.5), “wma pro” (sunset as of Roku OS 12.5), “dts”, \"ac4\" | Required |\n| Profile | string | Specifies the codec profile:CodecProfile\"h.265/h.265\"\"main\", \"high\", \"main 10\"\"vp9\"\"profile 0\", \"profile 2\"\"AAC codec profiles\"\"mp2 lc\", \"mp4 he\" | Optional |\n| Level | String | Specifies the codec level:CodecLevel\"h.265/h.265\"4.1, 4.2, 5.0, 5.1\"vp9\"3.0, 3.1, 4.0, 4.1, 5.0, 5.1 | Optional |\n| ChCnt | integer | Specifies the required number of audio channels | Optional |\n| PassThru | integer | Specifies whether the bitstream needs to be decoded on the device. By default, this reports the codec properties of both the Roku device and the attached HDMI device.You can filter the values returned by including one of the following options:**0** \\- Reports only codecs that are supported on the Roku device itself.**1** \\- Reports only codecs of the attached HDMI device (for example, an audio receiver). | Optional |\n| Atmos | Integer | Specifies whether atmos is required. Include 'atmos=1' if it is. | Optional |\n| SampleRate | integer | Specifies the sample rate | Optional |\n| BitRate | integer | Specifies the bit rate in Kbit/sec | Optional |\n| Container | string | Specifies the container format | Optional |\n",
11053
+ "description": "An associative array with the audio format to be checked. The general format of the associative arrays for CanDecodeAudio() is similar to the parameter and return associative arrays used in [CanDecodeVideo()](#candecodevideovideo_format-as-object-as-object). As of Roku OS 14.1, the keys in the associative array are fully case-insensitive. For older OS versions, use lower-case letters for the keys when specified within double quotes (\"\"). \n| Key | Type | Value | Requirement |\n| ---------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |\n| Codec | string | Specifies the audio codec: “aac”, “ac3”, “eac3”, \"alac\", \"flac\", “mp2”, “mp3”, “vorbis”, “wma” (sunset as of Roku OS 12.5), “wma pro” (sunset as of Roku OS 12.5), “dts”, \"ac4\" | Required |\n| Profile | string | Specifies the codec profile:CodecProfile\"h.265/h.265\"\"main\", \"high\", \"main 10\"\"vp9\"\"profile 0\", \"profile 2\"\"AAC codec profiles\"\"mp2 lc\", \"mp4 he\" | Optional |\n| Level | String | Specifies the codec level:CodecLevel\"h.265/h.265\"4.1, 4.2, 5.0, 5.1\"vp9\"3.0, 3.1, 4.0, 4.1, 5.0, 5.1 | Optional |\n| ChCnt | integer | Specifies the required number of audio channels | Optional |\n| PassThru | integer | Specifies whether the bitstream needs to be decoded on the device. By default, this reports the codec properties of both the Roku device and the attached HDMI device.You can filter the values returned by including one of the following options:**0** \\- Reports only codecs that are supported on the Roku device itself.**1** \\- Reports only codecs of the attached HDMI device (for example, an audio receiver). | Optional |\n| Atmos | Integer | Specifies whether Atmos presence is to be validated. Include 'atmos=1' to check for the presence of Atmos. Starting with Roku OS 14.1,'atmos=0' can be used to specifically check for the absence of Atmos. | Optional |\n| SampleRate | integer | Specifies the sample rate | Optional |\n| BitRate | integer | Specifies the bit rate in Kbit/sec | Optional |\n| Container | string | Specifies the container format | Optional |\n",
10935
11054
  "isRequired": true,
10936
11055
  "name": "audio_format",
10937
11056
  "type": "Object"
@@ -10946,7 +11065,7 @@
10946
11065
  "params": [
10947
11066
  {
10948
11067
  "default": null,
10949
- "description": "An associative array with the following key/value pairs specifying the video format to be checked: \n| Key | Type | Value | Requirement |\n| --------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |\n| Codec | string | Specifies the video codec:CodecProfileLevel\"mpeg2\"n/a\"main\", \"high\"\"mpeg4 avc\" 1\"main\", \"high\"\"4.1\", \"4.2\"\"hevc\" 1\"main\", \"main 10\"\"4.1\", \"5.0\", \"5.1\"\"vp9\" 1\"profile 0\", \"profile 2\"\"4.1\", \"5.0\", \"5.1\" | Required |\n| Profile | string | Specifies the profile | Optional |\n| Level | string | Specifies the level | Optional |\n| Container | string | Specifies the container format: “mp4”, “hls”, “mkv”, “ism”, “dash”, “ts” | Optional |\n",
11068
+ "description": "An associative array with the following key/value pairs specifying the video format to be checked. As of Roku OS 14.1, the keys in the associative array are fully case-insensitive. For older OS versions, use lower-case letters for the keys when specified within double quotes (\"\"). \n| Key | Type | Value | Requirement |\n| --------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |\n| Codec | string | Specifies the video codec:CodecProfileLevel\"mpeg2\"n/a\"main\", \"high\"\"mpeg4 avc\" 1\"main\", \"high\"\"4.1\", \"4.2\"\"hevc\" 1\"main\", \"main 10\"\"4.1\", \"5.0\", \"5.1\"\"vp9\" 1\"profile 0\", \"profile 2\"\"4.1\", \"5.0\", \"5.1\" | Required |\n| Profile | string | Specifies the profile | Optional |\n| Level | string | Specifies the level | Optional |\n| Container | string | Specifies the container format: “mp4”, “hls”, “mkv”, “ism”, “dash”, “ts” | Optional |\n",
10950
11069
  "isRequired": true,
10951
11070
  "name": "video_format",
10952
11071
  "type": "Object"
@@ -10956,7 +11075,7 @@
10956
11075
  "returnType": "Object"
10957
11076
  },
10958
11077
  {
10959
- "description": "Notifies the channel when a system overlay event (such as the [confirm partner button HUD](/docs/developer-program/getting-started/architecture/channel-manifest.md#special-purpose-attributes) or the caption control overlay) is displayed. This notification gives the channel the opportunity to do any processing they may want to when the channel loses or regains focus.",
11078
+ "description": "Notifies the app when a system overlay event (such as the [confirm partner button HUD](/docs/developer-program/getting-started/architecture/channel-manifest.md#special-purpose-attributes) or the caption control overlay) is displayed. This notification gives the app the opportunity to do any processing they may want to when the app loses or regains focus.",
10960
11079
  "name": "EnableAppFocusEvent",
10961
11080
  "params": [
10962
11081
  {
@@ -10971,7 +11090,7 @@
10971
11090
  "returnType": "Dynamic"
10972
11091
  },
10973
11092
  {
10974
- "description": "Notifies the channel when the screen reader changes. This function enables the sending of an [roDeviceInfoEvent](https://developer.roku.com/docs/references/brightscript/events/rodeviceinfoevent.md when the screen reader changes. To receive events, you must have first called [SetMessagePort](https://developer.roku.com/docs/references/brightscript/interfaces/ifsetmessageport.md on the roDeviceInfo object specifying the message port that is to receive the events",
11093
+ "description": "Notifies the app when the screen reader changes. This function enables the sending of an [roDeviceInfoEvent](https://developer.roku.com/docs/references/brightscript/events/rodeviceinfoevent.md when the screen reader changes. To receive events, you must have first called [SetMessagePort](https://developer.roku.com/docs/references/brightscript/interfaces/ifsetmessageport.md on the roDeviceInfo object specifying the message port that is to receive the events",
10975
11094
  "name": "EnableAudioGuideChangedEvent",
10976
11095
  "params": [
10977
11096
  {
@@ -10986,7 +11105,7 @@
10986
11105
  "returnType": "Dynamic"
10987
11106
  },
10988
11107
  {
10989
- "description": "Notifies the channel when the audio or video codec changes. This function enables the sending of an [roDeviceInfoEvent](https://developer.roku.com/docs/references/brightscript/events/rodeviceinfoevent.md when the codec changes. To receive events, you must have first called [SetMessagePort](https://developer.roku.com/docs/references/brightscript/interfaces/ifsetmessageport.md on the roDeviceInfo object specifying the message port that is to receive the events",
11108
+ "description": "Notifies the app when the audio or video codec changes. This function enables the sending of an [roDeviceInfoEvent](https://developer.roku.com/docs/references/brightscript/events/rodeviceinfoevent.md when the codec changes. To receive events, you must have first called [SetMessagePort](https://developer.roku.com/docs/references/brightscript/interfaces/ifsetmessageport.md on the roDeviceInfo object specifying the message port that is to receive the events",
10990
11109
  "name": "EnableCodecCapChangedEvent",
10991
11110
  "params": [
10992
11111
  {
@@ -11001,7 +11120,7 @@
11001
11120
  "returnType": "Void"
11002
11121
  },
11003
11122
  {
11004
- "description": "Notifies the channel when an internet connection status event occurs. This function enables the sending of an [roDeviceInfoEvent](https://developer.roku.com/docs/references/brightscript/events/rodeviceinfoevent.md when the network connection status changes, as indicated by `roDeviceInfoEvent.internetStatus`. To receive events, the channel must have first called [SetMessagePort](https://developer.roku.com/docs/references/brightscript/interfaces/ifsetmessageport.md on the roDeviceInfo object specifying the message port that is to receive the events.",
11123
+ "description": "Notifies the app when an internet connection status event occurs. This function enables the sending of an [roDeviceInfoEvent](https://developer.roku.com/docs/references/brightscript/events/rodeviceinfoevent.md when the network connection status changes, as indicated by `roDeviceInfoEvent.internetStatus`. To receive events, the app must have first called [SetMessagePort](https://developer.roku.com/docs/references/brightscript/interfaces/ifsetmessageport.md on the roDeviceInfo object specifying the message port that is to receive the events.",
11005
11124
  "name": "EnableInternetStatusEvent",
11006
11125
  "params": [
11007
11126
  {
@@ -11016,7 +11135,7 @@
11016
11135
  "returnType": "Boolean"
11017
11136
  },
11018
11137
  {
11019
- "description": "Notifies the channel when a network connection status event occurs. This function enables the sending of an [roDeviceInfoEvent](https://developer.roku.com/docs/references/brightscript/events/rodeviceinfoevent.md when the network connection status changes. To receive events, you must have first called [SetMessagePort](https://developer.roku.com/docs/references/brightscript/interfaces/ifsetmessageport.md on the roDeviceInfo object specifying the message port that is to receive the events",
11138
+ "description": "Notifies the app when a network connection status event occurs. This function enables the sending of an [roDeviceInfoEvent](https://developer.roku.com/docs/references/brightscript/events/rodeviceinfoevent.md when the network connection status changes. To receive events, you must have first called [SetMessagePort](https://developer.roku.com/docs/references/brightscript/interfaces/ifsetmessageport.md on the roDeviceInfo object specifying the message port that is to receive the events",
11020
11139
  "name": "EnableLinkStatusEvent",
11021
11140
  "params": [
11022
11141
  {
@@ -11045,7 +11164,7 @@
11045
11164
  "returnType": "Dynamic"
11046
11165
  },
11047
11166
  {
11048
- "description": "Notifies the channel when a screensaver exit event occurs. This function enables the sending of an [roDeviceInfoEvent](https://developer.roku.com/docs/references/brightscript/events/rodeviceinfoevent.md when a user has exited the screensaver.",
11167
+ "description": "Notifies the app when a screensaver exit event occurs. This function enables the sending of an [roDeviceInfoEvent](https://developer.roku.com/docs/references/brightscript/events/rodeviceinfoevent.md when a user has exited the screensaver.",
11049
11168
  "name": "EnableScreensaverExitedEvent",
11050
11169
  "params": [
11051
11170
  {
@@ -11067,7 +11186,7 @@
11067
11186
  "returnType": "Boolean"
11068
11187
  },
11069
11188
  {
11070
- "deprecatedDescription": "**This method is deprecated**.\n\nDevelopers must update their channels to use the [GetRIDA()](/docs/references/brightscript/interfaces/ifdeviceinfo.md#getrida-as-string) method to get the unique identifier.\n",
11189
+ "deprecatedDescription": "**This method is deprecated**.\n\nDevelopers must update their apps to use the [GetRIDA()](/docs/references/brightscript/interfaces/ifdeviceinfo.md#getrida-as-string) method to get the unique identifier.\n",
11071
11190
  "description": "Returns a unique identifier for the device. This identifier is persistent but can be reset by the user from the device's Settings menu or by performing a factory reset on the device.",
11072
11191
  "isDeprecated": true,
11073
11192
  "name": "GetAdvertisingId",
@@ -11076,7 +11195,7 @@
11076
11195
  "returnType": "String"
11077
11196
  },
11078
11197
  {
11079
- "deprecatedDescription": "**This method is deprecated**.\n\nChannel developers should use the [CanDecodeAudio()](#candecodeaudioaudio_format-as-object-as-object) function instead.\n",
11198
+ "deprecatedDescription": "**This method is deprecated**.\n\nDevelopers should use the [CanDecodeAudio()](#candecodeaudioaudio_format-as-object-as-object) function instead.\n",
11080
11199
  "description": "Lists each audio decoder supported by the device, with up to four numbers describing the decoder from the EDID SAD (Short Audio Descriptor). Each value is of the form \"::::\"",
11081
11200
  "isDeprecated": true,
11082
11201
  "name": "GetAudioDecodeInfo",
@@ -11114,19 +11233,19 @@
11114
11233
  "returnType": "String"
11115
11234
  },
11116
11235
  {
11117
- "description": "Returns a unique identifier for the device. The ID is persistent and cannot be reset. This value can be used to manage or identify devices linked to the channel’s content services.",
11236
+ "description": "Returns a unique identifier for the device. The ID is persistent and cannot be reset. This value can be used to manage or identify devices linked to the app’s content services.",
11118
11237
  "name": "GetChannelClientId",
11119
11238
  "params": [],
11120
- "returnDescription": "A unique device identifier. This identifier is different across channels so each channel will get a different identifier when calling this function",
11239
+ "returnDescription": "A unique identifier. This identifier is different across apps so each app will get a different identifier when calling this function",
11121
11240
  "returnType": "String"
11122
11241
  },
11123
11242
  {
11124
- "deprecatedDescription": "**This method is deprecated**.\n\nDevelopers must update their channels to use the [GetChannelClientId](/docs/references/brightscript/interfaces/ifdeviceinfo.md#getchannelclientid-as-string) method to get the unique identifier.\n",
11243
+ "deprecatedDescription": "**This method is deprecated**.\n\nDevelopers must update their apps to use the [GetChannelClientId](/docs/references/brightscript/interfaces/ifdeviceinfo.md#getchannelclientid-as-string) method to get the unique identifier.\n",
11125
11244
  "description": "Returns a unique identifier for the device.",
11126
11245
  "isDeprecated": true,
11127
11246
  "name": "GetClientTrackingId",
11128
11247
  "params": [],
11129
- "returnDescription": "A unique device identifier. This identifier is different across channels so each channel will get a different identifier when calling this function",
11248
+ "returnDescription": "A unique identifier. This identifier is different across apps so each app will get a different identifier when calling this function",
11130
11249
  "returnType": "String"
11131
11250
  },
11132
11251
  {
@@ -11151,10 +11270,10 @@
11151
11270
  "returnType": "String"
11152
11271
  },
11153
11272
  {
11154
- "description": "Checks for the country code of the channel.",
11273
+ "description": "Checks for the country code of the app.",
11155
11274
  "name": "GetCountryCode",
11156
11275
  "params": [],
11157
- "returnDescription": "A value that indicates the Roku Channel Store associated with a user’s Roku account. Typically, the value returned will be an ISO 3166-1 (2-letter) country code representing the country. Alternatively, if the channel owner entered into an additional agreement to have the channel published to a curated [Roku Powered Channel Store](https://www.roku.com/roku-powered) instead of the user country, then a Roku Powered Channel Store Identifier will instead be returned. This may be one of the following values:",
11276
+ "returnDescription": "A value that indicates the Streaming Store associated with a user’s Roku account. Typically, the value returned will be an ISO 3166-1 (2-letter) country code representing the country. Alternatively, if the app owner entered into an additional agreement to have the app published to a curated [Roku Powered Streaming Store](https://www.roku.com/roku-powered) instead of the user country, then a Roku Powered Streaming Store Identifier will instead be returned. This may be one of the following values:",
11158
11277
  "returnType": "String"
11159
11278
  },
11160
11279
  {
@@ -11165,8 +11284,8 @@
11165
11284
  "returnType": "String"
11166
11285
  },
11167
11286
  {
11168
- "deprecatedDescription": "**This method is deprecated**.\n\nDevelopers must update their channels to use the 32-character alphanumeric unique identifier returned by [GetChannelClientId()](/docs/references/brightscript/interfaces/ifdeviceinfo.md#getchannelclientid-as-string).\n",
11169
- "description": "Returns a string of 12 zeroes (it no longer returns the unique identifier for the channel on a device).",
11287
+ "deprecatedDescription": "**This method is deprecated**.\n\nDevelopers must update their apps to use the 32-character alphanumeric unique identifier returned by [GetChannelClientId()](/docs/references/brightscript/interfaces/ifdeviceinfo.md#getchannelclientid-as-string).\n",
11288
+ "description": "Returns a string of 12 zeroes (it no longer returns the unique identifier for the app on a device).",
11170
11289
  "isDeprecated": true,
11171
11290
  "name": "GetDeviceUniqueId",
11172
11291
  "params": [],
@@ -11198,7 +11317,7 @@
11198
11317
  "description": "Checks the display size of a screen.",
11199
11318
  "name": "GetDisplaySize",
11200
11319
  "params": [],
11201
- "returnDescription": "An associative array with the screen width and height. Specifically, the keys \"w\" and \"h\" contain the values for the screen width and height respectively, either 720 and 480, or 1280 and 720",
11320
+ "returnDescription": "An associative array with the screen width and height. Specifically, the keys \"w\" and \"h\" contain the values for the screen width and height respectively. This may be one of the following:",
11202
11321
  "returnType": "Object"
11203
11322
  },
11204
11323
  {
@@ -11209,7 +11328,7 @@
11209
11328
  "returnType": "String"
11210
11329
  },
11211
11330
  {
11212
- "deprecatedDescription": "**This method is deprecated**.\n\nDevelopers must update their channels to use the replacement API [GetDrmInfoEx()](/docs/references/brightscript/interfaces/ifdeviceinfo.md#getdrminfoex-as-object) to return the supported DRM system and features.\n",
11331
+ "deprecatedDescription": "**This method is deprecated**.\n\nDevelopers must update their apps to use the replacement API [GetDrmInfoEx()](/docs/references/brightscript/interfaces/ifdeviceinfo.md#getdrminfoex-as-object) to return the supported DRM system and features.\n",
11213
11332
  "description": "Checks for the supported DRM system and its features.",
11214
11333
  "isDeprecated": true,
11215
11334
  "name": "GetDrmInfo",
@@ -11218,7 +11337,7 @@
11218
11337
  "returnType": "Object"
11219
11338
  },
11220
11339
  {
11221
- "description": "Checks for the DRM system used by the channel.",
11340
+ "description": "Checks for the DRM system used by the app.",
11222
11341
  "name": "GetDrmInfoEx",
11223
11342
  "params": [],
11224
11343
  "returnType": "Object"
@@ -11241,7 +11360,7 @@
11241
11360
  "description": "Checks the general memory levels of the device.",
11242
11361
  "name": "GetGeneralMemoryLevel",
11243
11362
  "params": [],
11244
- "returnDescription": "Returns the general memory levels of the channel, which may be one of the following values:",
11363
+ "returnDescription": "Returns the general memory levels of the app, which may be one of the following values:",
11245
11364
  "returnType": "String"
11246
11365
  },
11247
11366
  {
@@ -11364,7 +11483,7 @@
11364
11483
  "returnType": "String"
11365
11484
  },
11366
11485
  {
11367
- "deprecatedDescription": "**This method is deprecated**.\n\nDevelopers must update their channels to use [GetOSVersion()](/docs/references/brightscript/interfaces/ifdeviceinfo.md#getosversion-as-object) method to get the current Roku OS version running on a device.\n",
11486
+ "deprecatedDescription": "**This method is deprecated**.\n\nDevelopers must update their apps to use [GetOSVersion()](/docs/references/brightscript/interfaces/ifdeviceinfo.md#getosversion-as-object) method to get the current Roku OS version running on a device.\n",
11368
11487
  "description": "Returns the version number of the device.",
11369
11488
  "isDeprecated": true,
11370
11489
  "name": "GetVersion",
@@ -11373,7 +11492,7 @@
11373
11492
  "returnType": "String"
11374
11493
  },
11375
11494
  {
11376
- "deprecatedDescription": "**This method is deprecated**.\n\nChannel developers should use the [CanDecodeVideo()](#candecodevideovideo_format-as-object-as-object) function instead.\n",
11495
+ "deprecatedDescription": "**This method is deprecated**.\n\nDevelopers should use the [CanDecodeVideo()](#candecodevideovideo_format-as-object-as-object) function instead.\n",
11377
11496
  "description": "See [http://en.wikipedia.org/wiki/Extended\\_display\\_identification\\_data#EIA.2FCEA-861\\_extension\\_block](http://en.wikipedia.org/wiki/Extended_display_identification_data#EIA.2FCEA-861_extension_block) for an explanation of the information returned.",
11378
11497
  "isDeprecated": true,
11379
11498
  "name": "GetVideoDecodeInfo",
@@ -11389,12 +11508,14 @@
11389
11508
  "returnType": "String"
11390
11509
  },
11391
11510
  {
11511
+ "deprecatedDescription": "The \"1080p\\_hardware\" argument is deprecated. Apps should use the GetVideoMode() and CanDecodeVideo() functions instead\n",
11392
11512
  "description": "Checks if the current device/firmware supports the passed in feature string.",
11513
+ "isDeprecated": true,
11393
11514
  "name": "HasFeature",
11394
11515
  "params": [
11395
11516
  {
11396
11517
  "default": null,
11397
- "description": "The feature to be checked, which may be one of the following values: * \"5.1\\_surround\\_sound\" * \"can\\_output\\_5.1\\_surround\\_sound\" * \"sd\\_only\\_hardware\" * \"usb\\_hardware\" * \"sdcard\\_hardware\" * \"ethernet\\_hardware\" * \"gaming\\_hardware\" * \"energy\\_star\\_compliant\" * \"soundbar\\_hardware\". Check whether the device has soundbar hardware (for example, speakers). * \"voice\\_remote\" (_Available since Roku OS 10.5_). Checks whether a Roku device is paired with a Roku voice remote. This enables developers to tailor the in-channel user experience for viewers with Roku voice remote controls. * \"handsfree\\_voice\" (_Available since Roku OS 10.5_). Checks whether a Roku device is paired with a hands-free Roku remote control such as the Roku Voice Remote Pro. This enables developers to tailor the in-channel user experience for viewers with hands-free Roku remote controls (for example, displaying voice tips and tricks in the UI).",
11518
+ "description": "The feature to be checked, which may be one of the following values: * \"5.1\\_surround\\_sound\" * \"can\\_output\\_5.1\\_surround\\_sound\" * \"sd\\_only\\_hardware\" * \"usb\\_hardware\" * \"sdcard\\_hardware\" * \"ethernet\\_hardware\" * \"gaming\\_hardware\" * \"energy\\_star\\_compliant\" * \"soundbar\\_hardware\". Check whether the device has soundbar hardware (for example, speakers). * \"voice\\_remote\" (). Checks whether a Roku device is paired with a Roku voice remote. This enables developers to tailor the in-app user experience for viewers with Roku voice remote controls. * \"handsfree\\_voice\" (). Checks whether a Roku device is paired with a hands-free Roku remote control such as the Roku Voice Remote Pro. This enables developers to tailor the in-app user experience for viewers with hands-free Roku remote controls (for example, displaying voice tips and tricks in the UI).",
11398
11519
  "isRequired": true,
11399
11520
  "name": "feature",
11400
11521
  "type": "String"
@@ -11404,7 +11525,7 @@
11404
11525
  "returnType": "Boolean"
11405
11526
  },
11406
11527
  {
11407
- "deprecatedDescription": "**This method is deprecated**.\n\nDevelopers must update their channels to use [IsRIDADisabled()](/docs/references/brightscript/interfaces/ifdeviceinfo.md#isridadisabled-as-boolean) to get the Ad Id tracking status.\n",
11528
+ "deprecatedDescription": "**This method is deprecated**.\n\nDevelopers must update their apps to use [IsRIDADisabled()](/docs/references/brightscript/interfaces/ifdeviceinfo.md#isridadisabled-as-boolean) to get the Ad Id tracking status.\n",
11408
11529
  "description": "If Ad Id tracking is disabled, the identifier returned by GetAdvertisingId() should not be used for Ad targeting",
11409
11530
  "isDeprecated": true,
11410
11531
  "name": "IsAdIdTrackingDisabled",
@@ -11426,7 +11547,7 @@
11426
11547
  "returnType": "Boolean"
11427
11548
  },
11428
11549
  {
11429
- "deprecatedDescription": "**This method is deprecated**.\n\nChannel developers must use the [ifHdmiStatus](/docs/references/brightscript/interfaces/ifhdmistatus.md) interface functions instead.\n",
11550
+ "deprecatedDescription": "**This method is deprecated**.\n\nDevelopers must use the [ifHdmiStatus](/docs/references/brightscript/interfaces/ifhdmistatus.md) interface functions instead.\n",
11430
11551
  "description": "Checks for an HDMI connection.",
11431
11552
  "isDeprecated": true,
11432
11553
  "name": "IsHDMIConnected",
@@ -11434,6 +11555,12 @@
11434
11555
  "returnDescription": "A flag indicating whether an HDMI connection to a TV has been detected.",
11435
11556
  "returnType": "Boolean"
11436
11557
  },
11558
+ {
11559
+ "description": "GetUIResolution() as Object",
11560
+ "name": "IsPassthruCodecActive",
11561
+ "params": [],
11562
+ "returnType": "Boolean"
11563
+ },
11437
11564
  {
11438
11565
  "description": "Indicates whether tracking via Roku's ID for Advertisers (RIDA) is disabled on the device.",
11439
11566
  "name": "IsRIDADisabled",
@@ -11694,7 +11821,7 @@
11694
11821
  "returnType": "Void"
11695
11822
  },
11696
11823
  {
11697
- "description": "Draws the source object, where src is an [roBitmap](https://developer.roku.com/docs/references/brightscript/components/robitmap.md\"roBitmap\") or an [roRegion](https://developer.roku.com/docs/references/brightscript/components/roregion.md\"roRegion\") object, at position x,y rotated by angle theta degrees.",
11824
+ "description": "**OVERLOADED METHOD**\n\nDraws the source object, where src is an [roBitmap](https://developer.roku.com/docs/references/brightscript/components/robitmap.md\"roBitmap\") or an [roRegion](https://developer.roku.com/docs/references/brightscript/components/roregion.md\"roRegion\") object, at position x,y rotated by angle theta degrees.\n\n or \n\nDraws and rotates the source object, where src is an [roBitmap](https://developer.roku.com/docs/references/brightscript/components/robitmap.md\"roBitmap\") or an [roRegion](https://developer.roku.com/docs/references/brightscript/components/roregion.md\"roRegion\") object at position x,y, rotated by angle theta degrees.",
11698
11825
  "name": "DrawRotatedObject",
11699
11826
  "params": [
11700
11827
  {
@@ -11724,6 +11851,13 @@
11724
11851
  "isRequired": true,
11725
11852
  "name": "src",
11726
11853
  "type": "Object"
11854
+ },
11855
+ {
11856
+ "default": null,
11857
+ "description": "The RGBA color of the source object.",
11858
+ "isRequired": false,
11859
+ "name": "rgba",
11860
+ "type": "Integer"
11727
11861
  }
11728
11862
  ],
11729
11863
  "returnDescription": "A flag indicating whether the object was successfully drawn.",
@@ -11822,6 +11956,63 @@
11822
11956
  "returnDescription": "A flag indicating whether the object was successfully drawn.",
11823
11957
  "returnType": "Boolean"
11824
11958
  },
11959
+ {
11960
+ "description": "**OVERLOADED METHOD**\n\nDraws and then scales and rotates the source object, where src is an [roBitmap](https://developer.roku.com/docs/references/brightscript/components/robitmap.md\"roBitmap\") or an [roRegion](https://developer.roku.com/docs/references/brightscript/components/roregion.md\"roRegion\") object; at position x,y; scaled in the x direction by scaleX and in the y direction by scaleY; and rotated by angle theta degrees.",
11961
+ "name": "DrawTransformedObject",
11962
+ "params": [
11963
+ {
11964
+ "default": null,
11965
+ "description": "The x-coordinate of the source object.",
11966
+ "isRequired": true,
11967
+ "name": "x",
11968
+ "type": "Integer"
11969
+ },
11970
+ {
11971
+ "default": null,
11972
+ "description": "The y-coordinate of the source object.",
11973
+ "isRequired": true,
11974
+ "name": "y",
11975
+ "type": "Integer"
11976
+ },
11977
+ {
11978
+ "default": null,
11979
+ "description": "The position which to rotate the source object. This may be 0, 90, 180, and 270 degrees.",
11980
+ "isRequired": true,
11981
+ "name": "theta",
11982
+ "type": "Float"
11983
+ },
11984
+ {
11985
+ "default": null,
11986
+ "description": "The x direction in which the source object is to be scaled.",
11987
+ "isRequired": true,
11988
+ "name": "scaleX",
11989
+ "type": "Float"
11990
+ },
11991
+ {
11992
+ "default": null,
11993
+ "description": "The y direction in which the source object is to be scaled.",
11994
+ "isRequired": true,
11995
+ "name": "scaleY",
11996
+ "type": "Float"
11997
+ },
11998
+ {
11999
+ "default": null,
12000
+ "description": "The [roBitmap](https://developer.roku.com/docs/references/brightscript/components/robitmap.md\"roBitmap\") or an [roRegion](https://developer.roku.com/docs/references/brightscript/components/roregion.md\"roRegion\") object to be drawn.",
12001
+ "isRequired": true,
12002
+ "name": "src",
12003
+ "type": "Object"
12004
+ },
12005
+ {
12006
+ "default": null,
12007
+ "description": "The RGBA color of the source object.",
12008
+ "isRequired": false,
12009
+ "name": "rgba",
12010
+ "type": "Integer"
12011
+ }
12012
+ ],
12013
+ "returnDescription": "A flag indicating whether the object was successfully drawn.",
12014
+ "returnType": "Boolean"
12015
+ },
11825
12016
  {
11826
12017
  "description": "Realizes the bitmap by finishing all queued draw calls. Until Finish() is called, prior graphics operations may not be user visible. For example, they may be in the graphics display pipeline, or in a server queue.",
11827
12018
  "name": "Finish",
@@ -11941,8 +12132,6 @@
11941
12132
  "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifdraw2d.md"
11942
12133
  },
11943
12134
  "ifdsa": {
11944
- "availableSince": "10.5",
11945
- "description": "_Available since Roku OS 10.5_",
11946
12135
  "implementers": [
11947
12136
  {
11948
12137
  "description": "The **roDSA** component provides support for the ECDSA and EdDSA (with Ed25519 form) digital signature algorithms. It is used to provide cryptographically signed evidence that an ad request originated from an actual Roku device.",
@@ -12568,7 +12757,7 @@
12568
12757
  {
12569
12758
  "description": "roFont represents a particular font, from a font-family (eg. Arial), with a particular pixel size (e.g 20), and a particular boldness or italicness",
12570
12759
  "name": "roFont",
12571
- "url": "https://developer.roku.com/docs/references/api-index/brightscript/components/rofont.md"
12760
+ "url": "https://developer.roku.com/docs/references/brightscript/components/rofont.md"
12572
12761
  }
12573
12762
  ],
12574
12763
  "methods": [
@@ -13012,7 +13201,7 @@
13012
13201
  "params": [
13013
13202
  {
13014
13203
  "default": null,
13015
- "description": "The name of the HTTP header to be added to the list of headers. If \"x-roku-reserved-dev-id\" is passed as the name, the value parameter is ignored and in its place, the devid of the currently running channel is used as the value. This allows the developer's server to know which client app is talking to it. Any other headers with names beginning with \"x-roku-reserved-\" are reserved and may not be set.",
13204
+ "description": "The name of the HTTP header to be added to the list of headers. If \"x-roku-reserved-dev-id\" is passed as the name, the value parameter is ignored and in its place, the devid of the currently running app is used as the value. This allows the developer's server to know which client app is talking to it. Any other headers with names beginning with \"x-roku-reserved-\" are reserved and may not be set.",
13016
13205
  "isRequired": true,
13017
13206
  "name": "name",
13018
13207
  "type": "String"
@@ -13104,7 +13293,7 @@
13104
13293
  "params": [
13105
13294
  {
13106
13295
  "default": null,
13107
- "description": "An associative array containing the HTTP headers and values to be included in the HTTP request. If \"x-roku-reserved-dev-id\" is passed as a key, the value parameter is ignored and in its place, the devid of the currently running channel is used as the value. This allows the developer's server to know which client app is talking to it. Any other headers with names beginning with \"x-roku-reserved-\" are reserved and may not be set.",
13296
+ "description": "An associative array containing the HTTP headers and values to be included in the HTTP request. If \"x-roku-reserved-dev-id\" is passed as a key, the value parameter is ignored and in its place, the devid of the currently running app is used as the value. This allows the developer's server to know which client app is talking to it. Any other headers with names beginning with \"x-roku-reserved-\" are reserved and may not be set.",
13108
13297
  "isRequired": true,
13109
13298
  "name": "nameValueMap",
13110
13299
  "type": "Object"
@@ -13199,7 +13388,7 @@
13199
13388
  ],
13200
13389
  "methods": [
13201
13390
  {
13202
- "description": "Registers a channel to receive `roInput transport` events, which are voice commands sent via the Roku remote control, Roku mobile app, or a virtual assistant such as Amazon Alexa or Google Assistant.",
13391
+ "description": "Registers an app to receive `roInput transport` events, which are voice commands sent via the Roku remote control, Roku mobile app, or a virtual assistant such as Amazon Alexa or Google Assistant.",
13203
13392
  "name": "EnableTransportEvents",
13204
13393
  "params": [],
13205
13394
  "returnDescription": "A flag indicating whether transport event notifications were successfully registered.",
@@ -13217,7 +13406,7 @@
13217
13406
  }
13218
13407
  ],
13219
13408
  "returnDescription": "A flag indicating whether the event response operation was successful.",
13220
- "returnType": "Void"
13409
+ "returnType": "Boolean"
13221
13410
  },
13222
13411
  {
13223
13412
  "description": "Returns the message port (if any) currently associated with the object.",
@@ -13584,7 +13773,7 @@
13584
13773
  "ifmicrophone": {
13585
13774
  "implementers": [
13586
13775
  {
13587
- "description": "The roMicrophone API allows channel applications to receive audio data from the user’s microphone-supported remote control device or mobile phone",
13776
+ "description": "The roMicrophone API allows apps to receive audio data from the user’s microphone-supported remote control device or mobile phone",
13588
13777
  "name": "roMicrophone",
13589
13778
  "url": "https://developer.roku.com/docs/references/brightscript/components/romicrophone.md"
13590
13779
  }
@@ -13627,14 +13816,14 @@
13627
13816
  "returnType": "Void"
13628
13817
  },
13629
13818
  {
13630
- "description": "Opens the microphone and begins streaming microphone events to the channel. The channel must have called the [SetMessagePort()](https://developer.roku.com/docs/references/brightscript/interfaces/ifsetmessageport.mdsetmessageportport-as-object--as-void) method previously.",
13819
+ "description": "Opens the microphone and begins streaming microphone events to the app. The app must have called the [SetMessagePort()](https://developer.roku.com/docs/references/brightscript/interfaces/ifsetmessageport.mdsetmessageportport-as-object--as-void) method previously.",
13631
13820
  "name": "StartRecording",
13632
13821
  "params": [],
13633
13822
  "returnDescription": "A flag indicating whether the microphone was opened successfully.",
13634
13823
  "returnType": "Boolean"
13635
13824
  },
13636
13825
  {
13637
- "description": "Stops recording and closes the microphone. This method is useful if the microphone was previously opened via the [StartRecording()](#startrecording-as-boolean) method and the channel needs to cancel the current recording prematurely, (for example, the duration limit was reached or an application error).",
13826
+ "description": "Stops recording and closes the microphone. This method is useful if the microphone was previously opened via the [StartRecording()](#startrecording-as-boolean) method and the app needs to cancel the current recording prematurely, (for example, the duration limit was reached or an application error).",
13638
13827
  "name": "StopRecording",
13639
13828
  "params": [],
13640
13829
  "returnDescription": "A flag indicating whether the microphone was opened and closed successfully.",
@@ -13704,7 +13893,7 @@
13704
13893
  "params": [
13705
13894
  {
13706
13895
  "default": null,
13707
- "description": "The program ID containing the channels to be returned.",
13896
+ "description": "The program ID containing to be returned.",
13708
13897
  "isRequired": true,
13709
13898
  "name": "id",
13710
13899
  "type": "Integer"
@@ -13713,18 +13902,18 @@
13713
13902
  "returnType": "Object"
13714
13903
  },
13715
13904
  {
13716
- "description": "Returns details about the current and next program on a channel.",
13905
+ "description": "Returns details about the current and next program on an app.",
13717
13906
  "name": "GetNowNextPrograms",
13718
13907
  "params": [
13719
13908
  {
13720
13909
  "default": null,
13721
- "description": "The channel number for which programs are to be retrieved.",
13910
+ "description": "The app number for which programs are to be retrieved.",
13722
13911
  "isRequired": true,
13723
13912
  "name": "channel",
13724
13913
  "type": "String"
13725
13914
  }
13726
13915
  ],
13727
- "returnDescription": "An roAssociativeArray containing two roArray components: one for the current program and another for the next program on the channel. Each roArray contains the following key/value pairs detailing the program:",
13916
+ "returnDescription": "An roAssociativeArray containing two roArray components: one for the current program and another for the next program on the app. Each roArray contains the following key/value pairs detailing the program:",
13728
13917
  "returnType": "Dynamic"
13729
13918
  },
13730
13919
  {
@@ -13740,7 +13929,7 @@
13740
13929
  },
13741
13930
  {
13742
13931
  "default": null,
13743
- "description": "The channel number for which programs are to be retrieved.",
13932
+ "description": "The app number for which programs are to be retrieved.",
13744
13933
  "isRequired": true,
13745
13934
  "name": "channel",
13746
13935
  "type": "String"
@@ -14210,7 +14399,7 @@
14210
14399
  "returnType": "Object"
14211
14400
  },
14212
14401
  {
14213
- "description": "Returns the number of bytes available in the channel application's device registry (32K). This function can be used, for example, to check the remaining space and remove older entries before writing newer ones. The following code demonstrates how to do this:",
14402
+ "description": "Returns the number of bytes available in the app's device registry (32K). This function can be used, for example, to check the remaining space and remove older entries before writing newer ones. The following code demonstrates how to do this:",
14214
14403
  "name": "GetSpaceAvailable",
14215
14404
  "params": [],
14216
14405
  "returnDescription": "An integer representing the the number of bytes available in the device registry.",
@@ -14765,17 +14954,17 @@
14765
14954
  "returnType": "Object"
14766
14955
  },
14767
14956
  {
14768
- "description": "Returns an array with every existing node created by the currently running channel.",
14957
+ "description": "Returns an array with every existing node created by the currently running app.",
14769
14958
  "name": "getAll",
14770
14959
  "params": [],
14771
- "returnDescription": "An roArray with the all the existing nodes created by the channel.",
14960
+ "returnDescription": "An roArray with the all the existing nodes created by the app.",
14772
14961
  "returnType": "Object"
14773
14962
  },
14774
14963
  {
14775
- "description": "Returns an array with every existing node created by the currently running channel (similar to the [getAll()](#getall-as-object) method) organized as an XML forest of trees according to the usual parent-child node relationship. Cycles are handled with a reference entry in the tree rather than indefinite recursion.",
14964
+ "description": "Returns a string with every existing node created by the currently running app (similar to the [getAll()](#getall-as-object) method) organized as an XML forest of trees according to the usual parent-child node relationship. Cycles are handled with a reference entry in the tree rather than indefinite recursion.",
14776
14965
  "name": "getAllMeta",
14777
14966
  "params": [],
14778
- "returnDescription": "An roArray of strings with the all the existing nodes created by the channel.",
14967
+ "returnDescription": "A string with the all the existing nodes created by the app.",
14779
14968
  "returnType": "Object"
14780
14969
  },
14781
14970
  {
@@ -14827,19 +15016,19 @@
14827
15016
  "name": "getParent",
14828
15017
  "params": [],
14829
15018
  "returnDescription": "The parent node; otherwise, \"invalid\".",
14830
- "returnType": "dynamic"
15019
+ "returnType": "roSGNode"
14831
15020
  },
14832
15021
  {
14833
- "description": "Returns an array with every existing node without a parent created by the currently running channel.",
15022
+ "description": "Returns an array with every existing node without a parent created by the currently running app.",
14834
15023
  "name": "getRoots",
14835
15024
  "params": [],
14836
15025
  "returnType": "Object"
14837
15026
  },
14838
15027
  {
14839
- "description": "Returns an array with every existing node without a parent created by the currently running channel.",
15028
+ "description": "Returns a string with every existing node without a parent created by the currently running app.",
14840
15029
  "name": "getRootsMeta",
14841
15030
  "params": [],
14842
- "returnDescription": "An roArray with every existing node without a parent created by the currently running channel.",
15031
+ "returnDescription": "A string with every existing node without a parent created by the currently running app.",
14843
15032
  "returnType": "Object"
14844
15033
  },
14845
15034
  {
@@ -14847,7 +15036,7 @@
14847
15036
  "name": "getScene",
14848
15037
  "params": [],
14849
15038
  "returnDescription": "The node's root Scene.",
14850
- "returnType": "dynamic"
15039
+ "returnType": "roSGNode"
14851
15040
  },
14852
15041
  {
14853
15042
  "description": "Inserts a previously-created child node at the position index in the subject node list of children, so that this is the position that the new child node is traversed during render.",
@@ -15416,7 +15605,7 @@
15416
15605
  "returnType": "Boolean"
15417
15606
  },
15418
15607
  {
15419
- "description": "Signals start and/or stop points for measuring channel launch and Electronic Program Grid (EPG) launch times.",
15608
+ "description": "Signals start and/or stop points for measuring app launch and Electronic Program Grid (EPG) launch times.",
15420
15609
  "name": "signalBeacon",
15421
15610
  "params": [
15422
15611
  {
@@ -15587,21 +15776,21 @@
15587
15776
  "name": "getGlobalNode",
15588
15777
  "params": [],
15589
15778
  "returnDescription": "A global reference object.",
15590
- "returnType": "dynamic"
15779
+ "returnType": "roSGNode"
15591
15780
  },
15592
15781
  {
15593
15782
  "description": "Returns the roMessagePort object for the SceneGraph scene.",
15594
15783
  "name": "GetMessagePort",
15595
15784
  "params": [],
15596
15785
  "returnDescription": "The roMessagePort object.",
15597
- "returnType": "dynamic"
15786
+ "returnType": "roMessagePort"
15598
15787
  },
15599
15788
  {
15600
15789
  "description": "The roSGScene object associated with the screen.",
15601
15790
  "name": "GetScene",
15602
15791
  "params": [],
15603
15792
  "returnDescription": "Typically, the scene created in main.brs by a roSGScreen.CreateScene() call.",
15604
- "returnType": "dynamic"
15793
+ "returnType": "roSGNode"
15605
15794
  },
15606
15795
  {
15607
15796
  "description": "Specifies the roMessagePort object for the roSGScreen object",
@@ -17282,7 +17471,7 @@
17282
17471
  "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifsystemlog.md"
17283
17472
  },
17284
17473
  "iftexttospeech": {
17285
- "description": "> To implement CVAA/screen reader support in your channel, use the [roAudioGuide](https://developer.roku.com/docs/references/brightscript/components/roaudioguide.md component object. The roTextToSpeech component object is typically used for book readers and other special-purpose applications.",
17474
+ "description": "> To implement CVAA/screen reader support in your app, use the [roAudioGuide](https://developer.roku.com/docs/references/brightscript/components/roaudioguide.md component object. The roTextToSpeech component object is typically used for book readers and other special-purpose applications.",
17286
17475
  "implementers": [
17287
17476
  {
17288
17477
  "description": "The roTextToSpeech component provides text to speech capabilities to applications",
@@ -17292,7 +17481,7 @@
17292
17481
  ],
17293
17482
  "methods": [
17294
17483
  {
17295
- "description": "Interrupts and stops any current text to speech spoken string, to be used when the channel does not want to the text to speech to continue.",
17484
+ "description": "Interrupts and stops any current text to speech spoken string, to be used when the app does not want to the text to speech to continue.",
17296
17485
  "name": "Flush",
17297
17486
  "params": [],
17298
17487
  "returnType": "Void"
@@ -18174,10 +18363,10 @@
18174
18363
  "returnType": "Object"
18175
18364
  },
18176
18365
  {
18177
- "description": "This method returns the [roCaptionRenderer](https://developer.roku.com/docs/references/brightscript/components/rocaptionrenderer.md\"roCaptionRenderer\") instance associated with this roVideoPlayer.",
18366
+ "description": "This method returns the roCaptionRenderer instance associated with this roVideoPlayer.",
18178
18367
  "name": "GetCaptionRenderer",
18179
18368
  "params": [],
18180
- "returnDescription": "The [roCaptionRenderer](/docs/references/brightscript/components/rocaptionrenderer.md \"roCaptionRenderer\") instance associated with this roVideoPlayer.",
18369
+ "returnDescription": "The roCaptionRenderer instance associated with this roVideoPlayer.",
18181
18370
  "returnType": "Object"
18182
18371
  },
18183
18372
  {
@@ -18294,7 +18483,7 @@
18294
18483
  "returnType": "Void"
18295
18484
  },
18296
18485
  {
18297
- "description": "Mutes the audio during video playback. This is useful, for example, for implementing a video preview feature in a channel.",
18486
+ "description": "Mutes the audio during video playback. This is useful, for example, for implementing a video preview feature in an app.",
18298
18487
  "name": "setEnableAudio",
18299
18488
  "params": [
18300
18489
  {
@@ -18386,12 +18575,12 @@
18386
18575
  "returnType": "Void"
18387
18576
  },
18388
18577
  {
18389
- "description": "Specifies the timedMetaData keys that the BrightScript channel is interested in receiving from the timedMetaData event.",
18578
+ "description": "Specifies the timedMetaData keys that the BrightScript app is interested in receiving from the timedMetaData event.",
18390
18579
  "name": "SetTimedMetaDataForKeys",
18391
18580
  "params": [
18392
18581
  {
18393
18582
  "default": null,
18394
- "description": "An array of timedMetaData keys for the channel to receive from the timedMetaData event. If the keys array is empty, all the timed metadata associated with the current stream is sent with the isTimedMetaData event. If the keys array is invalid, then do not return any keys to the BrightScript channel. Any keys not specified with this method are deleted by the Roku OS and never returned to the BrightScript application.",
18583
+ "description": "An array of timedMetaData keys for the app to receive from the timedMetaData event. If the keys array is empty, all the timed metadata associated with the current stream is sent with the isTimedMetaData event. If the keys array is invalid, then do not return any keys to the BrightScript app. Any keys not specified with this method are deleted by the Roku OS and never returned to the BrightScript application.",
18395
18584
  "isRequired": true,
18396
18585
  "name": "keys",
18397
18586
  "type": "roArray"
@@ -18854,7 +19043,7 @@
18854
19043
  "returnType": "Boolean"
18855
19044
  },
18856
19045
  {
18857
- "description": "This event is fired when an ID3 timecode has passed with an event that includes key/value pairs for timed metadata that the Brightscript channel is interested in.",
19046
+ "description": "This event is fired when an ID3 timecode has passed with an event that includes key/value pairs for timed metadata that the Brightscript app is interested in.",
18858
19047
  "name": "isTimedMetaData",
18859
19048
  "params": [],
18860
19049
  "returnType": "Boolean"
@@ -18865,7 +19054,7 @@
18865
19054
  "url": "https://developer.roku.com/docs/references/brightscript/events/roaudioplayerevent.md"
18866
19055
  },
18867
19056
  "rocecstatusevent": {
18868
- "description": "The roCECStatusEvent determines the active source status for set boxes. Channels subscribing to the roCECStatusEvent are notified when the active-source status of the device changes per the CEC message traffic.\n\nTo use the roCECStatusEvent, follow the steps below:\n\n1. Connect a Roku STB to a TV which transmits and receives CEC messages.\n \n2. Select the HDMI input to which the STB is connected.\n \n3. Switch away and then back to the STB's HDMI input.",
19057
+ "description": "The roCECStatusEvent determines the active source status for set boxes. Apps subscribing to the roCECStatusEvent are notified when the active-source status of the device changes per the CEC message traffic.\n\nTo use the roCECStatusEvent, follow the steps below:\n\n1. Connect a Roku STB to a TV which transmits and receives CEC messages.\n \n2. Select the HDMI input to which the STB is connected.\n \n3. Switch away and then back to the STB's HDMI input.",
18869
19058
  "implementers": [
18870
19059
  {
18871
19060
  "name": "roCECStatus",
@@ -18937,6 +19126,12 @@
18937
19126
  }
18938
19127
  ],
18939
19128
  "methods": [
19129
+ {
19130
+ "description": "Enables an event to be sent when the system clock becomes valid.",
19131
+ "name": "EnableValidClockEvent",
19132
+ "params": [],
19133
+ "returnType": "Void"
19134
+ },
18940
19135
  {
18941
19136
  "description": "Indicates whether the user has changed the closed caption mode or track. This method returns true if the caption mode changed; otherwise, it returns false.",
18942
19137
  "name": "isCaptionModeChanged",
@@ -19092,7 +19287,7 @@
19092
19287
  "url": "https://developer.roku.com/docs/references/brightscript/events/rosgnodeevent.md"
19093
19288
  },
19094
19289
  "rosgscreenevent": {
19095
- "description": "**roSGScreenEvents** are events sent to a scene graph **roSGScreen** by the framework. Other than when notifying the channel's main BrightScript thread that the screen is being closed, and thus that the channel should be terminated, channels do not generally handle these events.",
19290
+ "description": "**roSGScreenEvents** are events sent to a scene graph **roSGScreen** by the framework. Other than when notifying the app's main BrightScript thread that the screen is being closed, and thus that the app should be terminated, apps do not generally handle these events.",
19096
19291
  "implementers": [
19097
19292
  {
19098
19293
  "name": "roSGScreen",
@@ -19438,7 +19633,7 @@
19438
19633
  "returnType": "Boolean"
19439
19634
  },
19440
19635
  {
19441
- "description": "Checks whether an ID3 timecode has passed with an event that includes key-value pairs for timed metadata that the BrightScript channel is interested in.",
19636
+ "description": "Checks whether an ID3 timecode has passed with an event that includes key-value pairs for timed metadata that the BrightScript app is interested in.",
19442
19637
  "name": "isTimedMetaData",
19443
19638
  "params": [],
19444
19639
  "returnType": "Boolean"