{"id":32483,"date":"2023-03-08T16:29:03","date_gmt":"2023-03-08T15:29:03","guid":{"rendered":"https:\/\/mimolive.com\/?post_type=user-manual&#038;p=32483"},"modified":"2025-06-16T19:35:00","modified_gmt":"2025-06-16T17:35:00","slug":"voorinstellingen-afstandsbediening-api","status":"publish","type":"user-manual","link":"https:\/\/mimolive.com\/nl\/user-manual\/custom-layers\/remote-control-presets-api\/","title":{"rendered":"Afstandsbediening Presets API"},"content":{"rendered":"<p>Als je een aangepaste laag maakt, is er zelfs de mogelijkheid om aangepaste besturingspresets bij je laag te voegen. Dit is handig als je laag drukknoppen heeft die het gedrag van je laag regelen als deze live is.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"data-structure\">Gegevensstructuur<\/h3>\n\n\n\n<p>De volgende datastructuur is een voorbeelduitvoer die aanwezig moet zijn in je compositie onder de `tvOut_ControlRepresentations` structuuruitvoersleutel:<\/p>\n\n\n\n<pre class=\"wp-block-code\" data-no-translation=\"\"><code>{\n  \"tvOut_ControlRepresentations\": &#91;\n    {\n      \"title\": \"Compact Cut's\",\n      \"buttons\": &#91;\n        {\n          \"actions\": &#91;\n            {\n              \"layerId\": \"03627C25-CC8A-474F-A738-C4DEB3353FA4\",\n              \"variantId\": \"F6F52194-06DE-462E-983A-8D505C533A69\",\n              \"type\": \"signal\",\n              \"signalKey\": \"tvGroup_Control__Cut_1_TypeSignal\",\n              \"signalName\": \"Cut 1\"\n            }\n          ],\n          \"liveState\": {\n            \"layerId\": \"03627C25-CC8A-474F-A738-C4DEB3353FA4\",\n            \"variantId\": \"F6F52194-06DE-462E-983A-8D505C533A69\",\n            \"dynamicSourceId\": \"tvIn_VideoSourceAImage\"\n          },\n          \"sourcePreview\": {\n            \"layerId\": \"03627C25-CC8A-474F-A738-C4DEB3353FA4\",\n            \"variantId\": \"F6F52194-06DE-462E-983A-8D505C533A69\",\n            \"dynamicSourceId\": \"tvIn_VideoSourceAImage\"\n          },\n          \"color\": \"#BBBBBB\",\n          \"width\": 1,\n          \"height\": 1,\n          \"x\": 0,\n          \"y\": 0,\n          \"icon\": \"facetime-video\",\n          \"dynamicText\": {\n            \"template\": \"{{inputputValues.tvIn_VideoSourceAName}}\",\n            \"layerId\": \"03627C25-CC8A-474F-A738-C4DEB3353FA4\",\n            \"variantId\": \"F6F52194-06DE-462E-983A-8D505C533A69\"\n          }\n        }\n      ]\n    }\n  ]\n}<\/code><\/pre>\n\n\n\n<p>Een preset heeft een \"titel\" en een array van \"knoppen\", maar een enkele knop is ook goed.<\/p>\n\n\n<section class=\"boinx_section\">\n    <div class=\"main_div\">\n        <div class=\"left_div_icon\">\n                <i class=\"icon_highlight\">*<\/i>\n        <\/div>\n\n        <div class=\"right_div_text\">\n                <div><p class=\"text_highlight_headline\"><\/p><\/div>\n                <div><p class=\"text_highlight\">De sleutels `layerId` en `variantId` moeten dynamisch worden ingevuld met de stringgegevens van de compositie-invoersleutels `tvIn_LayerIdentifier` en `tvIn_RuntimeIdentifier`.<\/p><\/div>\n        <\/div>    \n    <\/div>\n<\/section>\n\n\t\t<style>.boinx_section {\n    margin:30px 0;\n    padding:10px;\n    background-color:rgb(217,237,248);\n    border-radius: 8px;\n  \n}\n\n.icon_highlight {\n    display:block;\n    padding:5px;\n    font-size:80px;\n    color:rgb(58,134,172);\n    line-height:60px;\n}\n\n.text_highlight {\n    color:rgb(58,134,172);\n}\n\n.text_highlight_headline{\n    font-weight:bold;\n    color:rgb(58,134,172);\n}\n\n.main_div\n{\n    display:flex !IMPORTANT;\n    flex-wrap: wrap;\n    flex-direction: row;\n    justify-content : flex-start;\n    align-items : flex-start\n    align-content : flex-start;\n}\n.left_div_icon{\n    display:flex !IMPORTANT;\n    width:40px;\n    padding:0;\n    margin:10px 20px 10px 10px;\n    \n}\n.right_div_text{\n    display:flex !IMPORTANT;\n    flex-direction: column;\n    flex-grow: 1;\n    padding:10px;\n    margin:0;\n    width:200px;\n    }<\/style>\n\t\t\n\n\n<h3 class=\"wp-block-heading\" id=\"using-the-remote-control-preset-api-in-quartz-composer\">De voorkeurszender van de afstandsbediening gebruiken <span class=\"caps\">API<\/span> in Kwartscomposer<\/h3>\n\n\n\n\n\n<p>De ingebouwde lagen van mimoLive gebruiken een <span class=\"caps\">LUA<\/span> script om deze datastructuur dynamisch te genereren, omdat Quartz Composer het genereren van datastructuren niet zelf ondersteunt. De <span class=\"caps\">LUA<\/span> Het script bevat een complexe functie addButton() die kan worden gebruikt om de structuur voor een enkele knop te maken. Meestal kun je deze functie gewoon gebruiken en hoef je hem niet aan te passen. Daarom is het vrij eenvoudig om nieuwe standaardinstellingen voor afstandsbedieningen te maken voor je eigen laag.<\/p>\n\n\n\n<p>Dit is bijvoorbeeld de <span class=\"caps\">LUA<\/span> script om de afstandsbedieningen voor de Stop Watch-laag te genereren. Merk op dat je deze code kunt overnemen door alleen de regels 15 tot en met 29 van de code te wijzigen.<\/p>\n\n\n\n<pre class=\"wp-block-code\" data-no-translation=\"\"><code>inLayerIdentifier = QC_STRING\ninVariantIdentifier = QC_STRING\noutControlRepresentations = QC_STRUCT\nmain = function()\n  controlRepresentations = {}\n  -- first representation\n  controlRepresenation = {}\n  -- {\n    controlRepresenation&#91;\"Title\"] = \"Stop Watch\"\n    buttons = {}\n    -- {\n      -- addButton(buttonsTable, buttonTitle, subTitle, positionX, positionY, width, height, color, icon, actionTarget, liveStateSource, previewSource)\n      -- first row\n      addButton(buttons, \"{{outputValues.tvOut_TimeString}}\", \"\", 0, 0, 2, 1, \"#333333\", \"\", \"\", \"\", \"\")\n      addButton(buttons, \"Live\", \"{\\{name\\}}\", 2, 0, 1, 1, \"#333333\", \"\", \"toggleLive\", \"layerVariant\", \"\")\n      -- second row\n      addButton(buttons, \"Start\", \"\", 0, 1, 1, 1, \"#33cc33\", \"play\", \"tvGroup_Control__Start_TypeSignal\", \"\", \"\")\n      addButton(buttons, \"Stop\", \"\", 1, 1, 1, 1, \"#cc3333\", \"pause\", \"tvGroup_Control__Stop_TypeSignal\", \"\", \"\")\n      addButton(buttons, \"Reset\", \"\", 2, 1, 1, 1, \"#cccc33\", \"stop\", \"tvGroup_Control__Reset_TypeSignal\", \"\", \"\")\n    -- }\n    controlRepresenation&#91;\"buttons\"] = buttons\n  -- }\n  table.insert(controlRepresentations , controlRepresenation)\n  outControlRepresentations = controlRepresentations\nend\nfunction addButton(buttonsTable, buttonTitle, buttonSubTitle, positionX, positionY, width, height, color, icon, actionTarget, liveStateSource, previewSource)\n  local button = {}\n  -- {\n  if #buttonTitle &amp;gt; 0 then\n    if string.find(buttonTitle, \"{{\") then\n      -- dynamic titel\n      local dynamicText = {}\n      -- {\n        dynamicText&#91;\"layerId\"] = inLayerIdentifier\n        dynamicText&#91;\"variantId\"] = inVariantIdentifier\n        dynamicText&#91;\"template\"] = buttonTitle\n      -- }\n      button&#91;\"dynamicText\"] = dynamicText\n    else\n      -- static title\n      button&#91;\"text\"] = buttonTitle\n    end -- if dynamic\n  end -- if buttonTitle\n  if #buttonSubTitle &amp;gt; 0 then\n    if string.find(buttonSubTitle, \"{{\") then\n      -- dynamic titel\n      local dynamicSubText = {}\n      -- {\n        dynamicSubText&#91;\"layerId\"] = inLayerIdentifier\n        dynamicSubText&#91;\"variantId\"] = inVariantIdentifier\n        dynamicSubText&#91;\"template\"] = buttonSubTitle\n      -- }\n      button&#91;\"dynamicSubText\"] = dynamicSubText\n    else\n      -- static title\n      button&#91;\"subtext\"] = buttonSubTitle\n    end -- if dynamic\n  end -- if buttonSubTitle\n  button&#91;\"x\"] = positionX\n  button&#91;\"y\"] = positionY\n  button&#91;\"width\"] = width\n  button&#91;\"height\"] = height\n  if #color &amp;gt; 0 then\n    button&#91;\"color\"] = color\n  end -- if\n  if #actionTarget &amp;gt; 0 then\n    local actions = {}\n    -- {\n      local action = {}\n      -- {\n        action&#91;\"layerId\"] = inLayerIdentifier\n        action&#91;\"variantId\"] = inVariantIdentifier\n        if string.ends(actionTarget, \"_TypeSignal\") then\n          action&#91;\"type\"] = \"signal\"\n          action&#91;\"signalKey\"] = actionTarget\n          action&#91;\"signalName\"] = buttonTitle\n        elseif actionTarget == \"toggleLive\" then\n          action&#91;\"type\"] = \"toggleLive\"\n        else\n          action&#91;\"type\"] = \"toggleSwitch\"\n          action&#91;\"toggleSwitchKey\"] = actionTarget\n          action&#91;\"toggleSwitchName\"] = buttonTitle\n        end -- if\n      -- }\n      table.insert(actions , action)\n    -- }\n    button&#91;\"actions\"] = actions\n  end -- if actionTarget\n  if #liveStateSource &amp;gt; 0 then\n    local liveState = {}\n    -- {\n      liveState&#91;\"layerId\"] = inLayerIdentifier\n      liveState&#91;\"variantId\"] = inVariantIdentifier\n      if string.starts(liveStateSource,\"tvIn_VideoSource\") then\n        -- get the live state from a dynamic video source\n        liveState&#91;\"dynamicSourceId\"] = liveStateSource\n      elseif liveStateSource == \"layerVariant\" then\n        -- nor more information needed\n      else\n        liveState&#91;\"propertyPath\"] = liveStateSource            end -- if\n    -- }\n    button&#91;\"liveState\"] = liveState\n  end -- if liveState Source\n  if #previewSource &amp;gt; 0 then\n    local sourcePreview = {}\n    -- {\n      sourcePreview&#91;\"layerId\"] = inLayerIdentifier\n      sourcePreview&#91;\"variantId\"] = inVariantIdentifier\n      sourcePreview&#91;\"dynamicSourceId\"] = previewSource\n    -- }\n    button&#91;\"sourcePreview\"] = sourcePreview\n  end -- if\n  if #icon &amp;gt; 0 then\n    -- See bottom of documentation page for list of avaiable icon names\n    button&#91;\"icon\"] = icon\n  end -- if\n  -- }\n  table.insert(buttonsTable, button)\nend -- func\nfunction string.starts(String,Start)\n   return string.sub(String,1,string.len(Start))==Start\nend\nfunction string.ends(String,End)\n   return End=='' or string.sub(String,-string.len(End))==End\nend<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Button Positionering<\/h3>\n\n\n\n<p>Als je meerdere knoppen gebruikt, moet je de lay-out van de knoppen handmatig regelen. Dat betekent dat knoppen op het raster worden gepositioneerd met behulp van \"x\"- en \"y\"-attributen, die net als de attributen \"breedte\" en \"hoogte\" worden opgegeven in veelvouden van rastercellen. Posities zijn relatief ten opzichte van de rastercel linksboven waar de knoppengroep naartoe werd gesleept.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"button-positioning\">Button Acties<\/h3>\n\n\n\n<p>Buttons kan meerdere acties hebben, \u00e9\u00e9n enkele actie of helemaal geen. Er zijn verschillende geldige combinaties van actiedoelen en actietypes.<br>Merk op dat \"textInput\" en \"numericInput\" acties op zichzelf moeten staan, omdat een consistente gebruikerservaring in de afstandsbediening niet gegarandeerd is.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"action-targets\">Actiedoelen<\/h4>\n\n\n\n<p>Actiedoelen zijn elementen in het mimoLive-document. Ze worden hi\u00ebrarchisch geadresseerd:<\/p>\n\n\n\n<p>De \"document-ID\" wordt altijd tijdens runtime getekend, dus deze hoeft niet aanwezig te zijn in de preset.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Als noch \"layerId\" noch \"variantId\" zijn gegeven, wordt de actie geactiveerd op het document zelf.<\/li>\n\n\n\n<li>Als \"layerId\" is opgegeven, wordt de actie geactiveerd op de opgegeven laag.<\/li>\n\n\n\n<li>Als \"layerId\" <b>en<\/b> \"variantId\" zijn gegeven, wordt de actie geactiveerd op de gespecificeerde variant. Alleen in dit geval kunnen de extra \"toggleSwitchKey\" of \"signalKey\" worden opgegeven (zie Actietypes hieronder).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"action-types\">Soorten acties<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>Soort actie<\/th><th>Uitleg<\/th><th>Extra eigenschappen<\/th><th>Geldige doelen<\/th><\/tr><tr><td>toggleLive<\/td><td>Schakelen tussen live-status<\/td><td>geen<\/td><td>Document (Start\/Stop show), Laag, Variant<\/td><\/tr><tr><td>actief<\/td><td>Live-status instellen op \"live\"<\/td><td>geen<\/td><td>Document (Startscherm), Laag, Variant<\/td><\/tr><tr><td>UIT<\/td><td>Stel live-status in op \"uit\".<\/td><td>geen<\/td><td>Document (Stop tonen), Laag, Variant<\/td><\/tr><tr><td>signaal<\/td><td>Een signaal triggeren<\/td><td>signalKey, signalName (aanbevolen)<\/td><td>Variant<\/td><\/tr><tr><td>toggleSwitch<\/td><td>Een booleaanse invoerwaarde schakelen<\/td><td>toggleSwitchKey, toggleSwitchName (aanbevolen)<\/td><td>Variant<\/td><\/tr><tr><td>tekstinvoer<\/td><td>Opent een tekstinvoerveld dat bij verzenden de waarde bij inputKey bijwerkt.<\/td><td>inputKey, inputName (aanbevolen)<\/td><td>Laag, Variant, Bron<\/td><\/tr><tr><td>numerieke invoer<\/td><td>Schuifregelaar die een numerieke waarde op inputKey controleert.<\/td><td>inputKey, inputDescription (object met zowel min- als max-waarden), inputName (aanbevolen)<\/td><td>Laag, Variant, Bron<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<section class=\"boinx_section\">\n    <div class=\"main_div\">\n        <div class=\"left_div_icon\">\n                <i class=\"icon_highlight\">*<\/i>\n        <\/div>\n\n        <div class=\"right_div_text\">\n                <div><p class=\"text_highlight_headline\"><\/p><\/div>\n                <div><p class=\"text_highlight\">\"textInput\" en \"numericInput\" actietypes zijn beschikbaar sinds mimoLive 5.2.<\/p><\/div>\n        <\/div>    \n    <\/div>\n<\/section>\n\n\n\n\n<h3 class=\"wp-block-heading\" id=\"button-live-state\">Button Levende staat<\/h3>\n\n\n\n<p>Het object \"liveState\" kan worden gebruikt om de status van het statuslampje van de knop te configureren, die aan (rode markering), overgang (gele markering) of uit (geen markering) kan zijn.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"live-state-sources\">Live staatsbronnen<\/h4>\n\n\n\n<p>Net als bij knopactiedoelen kan de live-status worden verkregen uit meerdere bronnen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>De \"document-ID\" wordt altijd tijdens runtime getekend, dus deze hoeft niet aanwezig te zijn in de preset.<\/li>\n\n\n\n<li>Als noch \"layerId\" noch \"variantId\" zijn gegeven, wordt de live-status van het document gebruikt (show is gestart of niet).<\/li>\n\n\n\n<li>Als \"layerId\" is opgegeven, wordt de live-status van de laag gebruikt.<\/li>\n\n\n\n<li>Als \"layerId\" en \"variantId\" zijn gegeven, wordt de live-status van de variant gebruikt.<br>- Alleen in dit geval kan de extra \"propertyPath\" worden opgegeven om aan te geven dat een booleaanse eigenschap op de invoer- of uitvoerwaarden van de variant moet worden gebruikt.<br>- Een andere mogelijkheid (wederzijds exclusief met propertyPath!) is het specificeren van een \"dynamicSourceId\" eigenschap die de live-status lookup omleidt naar een bron (opgehaald door ID), die dynamische veranderingen van de geselecteerde bron respecteert (bijv. in de videoswitcher). De waarde van \"dynamicSourceId\" wordt opgezocht in de invoerwaarden van de variant.<\/li>\n<\/ul>\n\n\n\n<p><i>*<\/i>Geef het volledige pad naar de eigenschap, beginnend bij de variant als root, bijvoorbeeld \"inputValues.some_Boolean_Property\" of \"outputValues.other_Property\".<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Als \"sourceId\" is gegeven, wordt de live-status van de bron gebruikt.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"button-text\">Button Tekst<\/h3>\n\n\n\n<p>Actieknoppen kunnen primaire en secundaire tekstregels weergeven, beide kunnen statisch of dynamisch van aard zijn.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"primary-text\">Primaire tekst<\/h4>\n\n\n\n<p>Deze tekst is de primaire indicator van wat de knop doet voor de gebruiker. Als de vooraf ingestelde knop een tekst-eigenschap bevat, is dit een statische tekst die wordt weergegeven zoals hij is.<\/p>\n\n\n\n<p>Als alternatief kan een dynamicText worden gegeven die het mogelijk maakt om mimoLive laag- of varianteigenschappen op te nemen met behulp van een eenvoudige sjabloneringssyntaxis. In de sjabloonstring kunnen reguliere tekens worden gecombineerd met eigenschappenpaden tussen accolades:<\/p>\n\n\n\n<pre class=\"wp-block-code\" data-no-translation=\"\"><code>\"template\": \"{\\{propertyPath\\}}\"<\/code><\/pre>\n\n\n\n<p>Eigenschapspaden worden ge\u00ebvalueerd relatief ten opzichte van het object dat wordt opgelost met behulp van \"layerId\", \"variantId\", \"sourceId\" en \"filterId\". Doelomzetting volgt deze regels:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>De \"document-ID\" wordt altijd tijdens runtime getekend, dus deze hoeft niet aanwezig te zijn in de preset.<\/li>\n\n\n\n<li>Als \"layerId\" of \"variantId\" niet zijn gegeven, worden de paden van de eigenschappen relatief ten opzichte van het document ge\u00ebvalueerd.<\/li>\n\n\n\n<li>Als \"layerId\" (en optioneel \"variantId\") is gegeven, worden de eigenschapspaden relatief ten opzichte van een laag\/variant ge\u00ebvalueerd.<\/li>\n\n\n\n<li>De bovenliggende laag van een variant is toegankelijk door een pad te beginnen met \"layer\", zoals \"aslayer.name\".<\/li>\n<\/ul>\n\n\n<section class=\"boinx_section\">\n    <div class=\"main_div\">\n        <div class=\"left_div_icon\">\n                <i class=\"icon_highlight\">*<\/i>\n        <\/div>\n\n        <div class=\"right_div_text\">\n                <div><p class=\"text_highlight_headline\"><\/p><\/div>\n                <div><p class=\"text_highlight\">Het eerste padsegment van invoer- en uitvoerwaarden moet camelCased zijn (\"inputValues.tvIn...\") en niet kebab-cased (\"input-values.tvIn...\") zoals in de API-documenten.<\/p><\/div>\n        <\/div>    \n    <\/div>\n<\/section>\n\n\n\n\n<ul class=\"wp-block-list\">\n<li>Statische tekst heeft altijd voorrang op dynamische tekst, omdat gebruikers dan de dynamische tekst kunnen overschrijven met een aangepaste tekst die misschien nuttiger is in hun situatie.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"secondary-text\">Secundaire tekst<\/h4>\n\n\n\n<p>Om de gebruiker meer informatie te geven over een knop, zoals de naam van de bovenliggende laag, kan een secundaire tekst worden gegeven met de eigenschappen \"subtext\" of \"dynamicSubText\".<\/p>\n\n\n\n<p>De syntaxis van templating en objectresolutie volgen exact dezelfde regels als de primaire tekst.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"button-text-and-icon-size\">Button Grootte van tekst en pictogrammen<\/h4>\n\n\n\n<p>De tekst en pictogrammen op knoppen kunnen in grootte vari\u00ebren op basis van de context. Met de optie \"fontScale\" kun je een relatieve schaal opgeven ten opzichte van een standaardgrootte die is berekend voor de huidige schermgrootte. \"1\" is de standaardgrootte. Minder dan 1 (bijv. 0,8) verkleint de lettergrootte en meer dan 1 (bijv. 1,5) vergroot deze.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Button Voorbeeld<\/h3>\n\n\n\n<p>Actieknoppen kunnen een voorbeeldafbeelding weergeven van de bron die ze aansturen, of een andere bron die beschikbaar is in het document.<\/p>\n\n\n\n<p>Afhankelijk van of de bron statisch is (alleen afbeeldingen die naar mimoLive werden gesleept), een statische <span class=\"caps\">PNG<\/span> representatie van de bron wordt eenmaal geladen die een alfakanaal ondersteunt. Voor elke andere bron wordt een <span class=\"caps\">JPEG<\/span> weergave van de bron wordt regelmatig bijgewerkt. De beoogde vernieuwingsfrequentie voor dynamische bronnen is 5 frames per seconde, maar deze snelheid wordt verlaagd als blijkt dat de snelheid van de netwerkverbinding onvoldoende is voor het herhaaldelijk laden van voorbeeldframes.<\/p>\n\n\n\n<p>Het wordt momenteel niet ondersteund om de programma-uitvoer van het document weer te geven op een actieknop. Standaardafbeeldingen van lagen, hoewel niet zichtbaar in de lijst met bronnen, zijn beschikbaar als voorbeeld.<\/p>\n\n\n\n<p>Om een bronvoorbeeld te specificeren, wordt een objectresolutiemechanisme gebruikt:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>De \"document-ID\" wordt altijd tijdens runtime getekend, dus deze hoeft niet aanwezig te zijn in de preset.<\/li>\n\n\n\n<li>Als \"sourceId\" is opgegeven, wordt de bron met die ID gebruikt voor de preview.<\/li>\n\n\n\n<li>Als alle \"layerId\", \"variantId\" en \"dynamicSourceId\" zijn opgegeven, wordt de ID van de bron opgezocht in de variant van de opgegeven laag onder de sleutel in \"dynamicSourceId\". Dit kan worden gebruikt om te verwijzen naar bronnen zoals bron A-G van de videoswitcher, zelfs als ze in het document worden gewijzigd.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Button Kleur<\/h3>\n\n\n\n<p>Door het \"color\" attribuut te gebruiken, kunnen knoppen worden gekleurd met elke kleurcode die kan worden weergegeven in <span class=\"caps\">HTML<\/span> (bijvoorbeeld \"#f80\", \"#ff0088\", \"oranje\" of \"rgb(255, 66, 88)\").<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Button Pictogram<\/h3>\n\n\n\n<p>Buttons kunnen een pictogram weergeven om hun functionaliteit aan te geven. Om een lijst van alle beschikbare pictogrammen te zien, opent u http:\/\/localhost:8989\/icons\/demo.html terwijl mimoLive actief is en de afstandsbedieningen ingeschakeld zijn.<br>Gebruik de gewone naam van het pictogram, bijvoorbeeld \"achteruit\" of \"pijl omlaag\".<\/p>","protected":false},"excerpt":{"rendered":"<p>If you are creating a custom layer, there is the possibility of even including custom control presets with your layer. This come in handy if your layer has push buttons that controls the behaviour of your layer when its live. Data Structure The following data structure is a sample output which needs to be present [&hellip;]<\/p>","protected":false},"author":3,"featured_media":0,"parent":32482,"menu_order":1,"template":"","meta":{"_acf_changed":false,"_angie_page":false,"_lmt_disableupdate":"no","_lmt_disable":"","footnotes":""},"categories":[258],"tags":[],"class_list":["post-32483","user-manual","type-user-manual","status-publish","hentry","category-manual"],"acf":[],"_links":{"self":[{"href":"https:\/\/mimolive.com\/nl\/wp-json\/wp\/v2\/user-manual\/32483","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mimolive.com\/nl\/wp-json\/wp\/v2\/user-manual"}],"about":[{"href":"https:\/\/mimolive.com\/nl\/wp-json\/wp\/v2\/types\/user-manual"}],"author":[{"embeddable":true,"href":"https:\/\/mimolive.com\/nl\/wp-json\/wp\/v2\/users\/3"}],"version-history":[{"count":2,"href":"https:\/\/mimolive.com\/nl\/wp-json\/wp\/v2\/user-manual\/32483\/revisions"}],"predecessor-version":[{"id":40973,"href":"https:\/\/mimolive.com\/nl\/wp-json\/wp\/v2\/user-manual\/32483\/revisions\/40973"}],"up":[{"embeddable":true,"href":"https:\/\/mimolive.com\/nl\/wp-json\/wp\/v2\/user-manual\/32482"}],"wp:attachment":[{"href":"https:\/\/mimolive.com\/nl\/wp-json\/wp\/v2\/media?parent=32483"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mimolive.com\/nl\/wp-json\/wp\/v2\/categories?post=32483"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mimolive.com\/nl\/wp-json\/wp\/v2\/tags?post=32483"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}