{"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":"preset-di-controllo-remoto-api","status":"publish","type":"user-manual","link":"https:\/\/mimolive.com\/it\/user-manual\/custom-layers\/remote-control-presets-api\/","title":{"rendered":"Preset di controllo remoto API"},"content":{"rendered":"<p>Se si crea un livello personalizzato, \u00e8 possibile includere nel livello anche le preimpostazioni di controllo personalizzate. Questo \u00e8 utile se il livello ha dei pulsanti che controllano il comportamento del livello quando \u00e8 attivo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"data-structure\">Struttura dei dati<\/h3>\n\n\n\n<p>La seguente struttura di dati \u00e8 un esempio di output che deve essere presente nella composizione sotto la chiave di output della struttura `tvOut_ControlRepresentations`:<\/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>Una preimpostazione ha un \"titolo\" e un array di \"pulsanti\", ma va bene anche un singolo pulsante.<\/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\">Le chiavi `layerId` e `variantId` devono essere compilate dinamicamente con i dati stringa delle chiavi di input della composizione `tvIn_LayerIdentifier` e `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\">Utilizzo della preimpostazione del telecomando <span class=\"caps\">API<\/span> in Quartz Composer<\/h3>\n\n\n\n\n\n<p>I livelli incorporati di mimoLive utilizzano un <span class=\"caps\">LUA<\/span> per generare dinamicamente questa struttura di dati, perch\u00e9 Quartz Composer non supporta la generazione di strutture di dati da solo. Il <span class=\"caps\">LUA<\/span> contiene una funzione complessa addButton() che pu\u00f2 essere utilizzata per creare la struttura di un singolo pulsante. Di solito \u00e8 sufficiente utilizzare questa funzione e non \u00e8 necessario modificarla. \u00c8 quindi abbastanza facile creare nuove impostazioni predefinite del telecomando per il proprio livello.<\/p>\n\n\n\n<p>Ad esempio, questo \u00e8 il <span class=\"caps\">LUA<\/span> per generare i controlli remoti per il livello Stop Watch. Si noti che \u00e8 possibile adottare questo codice modificando semplicemente le righe da 15 a 29 del codice.<\/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 Posizionamento<\/h3>\n\n\n\n<p>Quando si utilizzano pi\u00f9 pulsanti, la disposizione dei pulsanti deve essere controllata manualmente. Ci\u00f2 significa che i pulsanti vengono posizionati sulla griglia utilizzando gli attributi \"x\" e \"y\" che, proprio come gli attributi \"larghezza\" e \"altezza\", sono espressi in multipli di celle della griglia. Le posizioni sono relative alla cella della griglia in alto a sinistra su cui \u00e8 stato trascinato il gruppo di pulsanti.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"button-positioning\">Button Azioni<\/h3>\n\n\n\n<p>Le Buttons possono avere pi\u00f9 azioni, una singola azione o nessuna. Esistono diverse combinazioni valide di obiettivi e tipi di azione.<br>Si noti che le azioni \"textInput\" e \"numericInput\" dovrebbero essere indipendenti, poich\u00e9 non \u00e8 garantita un'esperienza utente coerente nel telecomando.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"action-targets\">Obiettivi d'azione<\/h4>\n\n\n\n<p>Gli obiettivi di azione sono elementi all'interno del documento mimoLive. Sono indirizzati in modo gerarchico:<\/p>\n\n\n\n<p>L'\"ID documento\" viene sempre disegnato in fase di esecuzione, quindi non deve essere presente nella preimpostazione.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Se non vengono forniti n\u00e9 \"layerId\" n\u00e9 \"variantId\", l'azione verr\u00e0 attivata sul documento stesso.<\/li>\n\n\n\n<li>Se viene dato \"layerId\", l'azione verr\u00e0 attivata sul livello specificato.<\/li>\n\n\n\n<li>Se \"layerId\" <b>e<\/b> \"variantId\", l'azione sar\u00e0 attivata sulla variante specificata. Solo in questo caso, \u00e8 possibile specificare gli elementi aggiuntivi \"toggleSwitchKey\" o \"signalKey\" (vedere Tipi di azione di seguito).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"action-types\">Tipi di azione<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>Tipo di azione<\/th><th>Spiegazione<\/th><th>Attributi aggiuntivi<\/th><th>Obiettivi validi<\/th><\/tr><tr><td>attivare la funzioneLive<\/td><td>Alterna lo stato live<\/td><td>nessuno<\/td><td>Documento (Avvio\/Arresto spettacolo), Strato, Variante<\/td><\/tr><tr><td>setLive<\/td><td>Impostare lo stato \"live\" su \"live\".<\/td><td>nessuno<\/td><td>Documento (Avviamento della mostra), Strato, Variante<\/td><\/tr><tr><td>setOff<\/td><td>Impostare lo stato live su \"off\".<\/td><td>nessuno<\/td><td>Documento (Stop Show), Strato, Variante<\/td><\/tr><tr><td>segnale<\/td><td>Attivazione di un segnale<\/td><td>signalKey, signalName (consigliato)<\/td><td>Variante<\/td><\/tr><tr><td>interruttore a levetta<\/td><td>Alterna un valore di ingresso booleano<\/td><td>toggleSwitchKey, toggleSwitchName (consigliato)<\/td><td>Variante<\/td><\/tr><tr><td>testoInput<\/td><td>Apre un campo di input di testo che, all'invio, aggiorna il valore di inputKey.<\/td><td>inputKey, inputName (consigliato)<\/td><td>Strato, Variante, Sorgente<\/td><\/tr><tr><td>ingresso numerico<\/td><td>Cursore che controlla un valore numerico su inputKey.<\/td><td>inputKey, inputDescription (oggetto con valori minimi e massimi), inputName (consigliato)<\/td><td>Strato, Variante, Sorgente<\/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\">I tipi di azione \"textInput\" e \"numericInput\" sono disponibili a partire da 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 Stato vivo<\/h3>\n\n\n\n<p>L'oggetto \"liveState\" pu\u00f2 essere utilizzato per configurare lo stato della luce del conteggio del pulsante, che pu\u00f2 essere acceso (marcatura rossa), in transizione (marcatura gialla) o spento (nessuna marcatura).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"live-state-sources\">Fonti statali vive<\/h4>\n\n\n\n<p>Come per gli obiettivi delle azioni dei pulsanti, lo stato live pu\u00f2 essere ottenuto da pi\u00f9 fonti:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>L'\"ID documento\" viene sempre disegnato in fase di esecuzione, quindi non deve essere presente nella preimpostazione.<\/li>\n\n\n\n<li>Se non vengono forniti n\u00e9 \"layerId\" n\u00e9 \"variantId\", viene utilizzato lo stato live del documento (la mostra \u00e8 iniziata o meno).<\/li>\n\n\n\n<li>Se viene fornito \"layerId\", viene utilizzato lo stato live del livello.<\/li>\n\n\n\n<li>Se vengono forniti \"layerId\" e \"variantId\", viene utilizzato lo stato live della variante.<br>- Solo in questo caso, \u00e8 possibile specificare l'ulteriore \"propertyPath\" per indicare che deve essere utilizzata una propriet\u00e0 booleana sui valori di ingresso o di uscita della variante.<br>- Un'altra possibilit\u00e0 (mutuamente esclusiva con propertyPath!) \u00e8 quella di specificare una propriet\u00e0 \"dynamicSourceId\" che reindirizza la ricerca dello stato live a una sorgente (recuperata per ID), che rispetta le modifiche dinamiche della sorgente selezionata (ad esempio, nel video switcher). Il valore di \"dynamicSourceId\" viene cercato nei valori di ingresso della variante.<\/li>\n<\/ul>\n\n\n\n<p><i>*<\/i>Indicare il percorso completo della propriet\u00e0, partendo dalla variante come radice, ad esempio \"inputValues.some_Boolean_Property\" o \"outputValues.other_Property\".<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Se viene fornito \"sourceId\", viene utilizzato lo stato live della sorgente.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"button-text\">Button Testo<\/h3>\n\n\n\n<p>I pulsanti di azione possono visualizzare linee di testo primarie e secondarie, entrambe di natura statica o dinamica.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"primary-text\">Testo primario<\/h4>\n\n\n\n<p>Questo testo sar\u00e0 l'indicatore principale di ci\u00f2 che il pulsante far\u00e0 per l'utente. Se la preimpostazione del pulsante contiene una propriet\u00e0 text, si tratta di un testo statico che verr\u00e0 visualizzato cos\u00ec com'\u00e8.<\/p>\n\n\n\n<p>In alternativa, \u00e8 possibile fornire un dynamicText che consente di includere le propriet\u00e0 dei livelli o delle varianti di mimoLive utilizzando una semplice sintassi di template. Nella stringa del modello, i caratteri regolari possono essere combinati con i percorsi delle propriet\u00e0 racchiusi tra parentesi graffe:<\/p>\n\n\n\n<pre class=\"wp-block-code\" data-no-translation=\"\"><code>\"template\": \"{\\{propertyPath\\}}\"<\/code><\/pre>\n\n\n\n<p>I percorsi delle propriet\u00e0 vengono valutati rispetto all'oggetto che viene risolto utilizzando \"layerId\", \"variantId\", \"sourceId\" e \"filterId\". La risoluzione dei target segue queste regole:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>L'\"ID documento\" viene sempre disegnato in fase di esecuzione, quindi non deve essere presente nella preimpostazione.<\/li>\n\n\n\n<li>Se non vengono forniti n\u00e9 \"layerId\" n\u00e9 \"variantId\", i percorsi delle propriet\u00e0 vengono valutati relativamente al documento<\/li>\n\n\n\n<li>Se viene fornito \"layerId\" (e facoltativamente \"variantId\"), i percorsi delle propriet\u00e0 vengono valutati rispetto a un layer\/variante.<\/li>\n\n\n\n<li>\u00c8 possibile accedere al livello padre di una variante iniziando un percorso con \"layer\", ad esempio \"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\">Il primo segmento di percorso dei valori di ingresso e di uscita deve essere camelCased (\"inputValues.tvIn...\") e non kebab-cased (\"input-values.tvIn...\") come nella documentazione API.<\/p><\/div>\n        <\/div>    \n    <\/div>\n<\/section>\n\n\n\n\n<ul class=\"wp-block-list\">\n<li>Il testo statico avr\u00e0 sempre la precedenza sul testo dinamico, perch\u00e9 questo consente agli utenti di sovrascrivere il testo dinamico con un testo personalizzato che potrebbe essere pi\u00f9 utile nella loro situazione.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"secondary-text\">Testo secondario<\/h4>\n\n\n\n<p>Per fornire all'utente ulteriori informazioni su un pulsante, come il nome del livello padre, \u00e8 possibile fornire un testo secondario utilizzando le propriet\u00e0 \"subtext\" o \"dynamicSubText\".<\/p>\n\n\n\n<p>La sintassi del template e la risoluzione degli oggetti seguono le stesse regole del testo primario.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"button-text-and-icon-size\">Button Dimensione del testo e delle icone<\/h4>\n\n\n\n<p>Il testo e le icone dei pulsanti possono variare di dimensione a seconda del contesto. Con l'opzione \"fontScale\" \u00e8 possibile specificare una scala relativa a una dimensione predefinita calcolata per la dimensione corrente dello schermo. \"1\" sar\u00e0 la dimensione predefinita. Un valore inferiore a 1 (ad esempio 0,8) ridimensiona la dimensione del carattere, mentre un valore superiore a 1 (ad esempio 1,5) la aumenta.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Button Anteprima<\/h3>\n\n\n\n<p>I pulsanti di azione possono visualizzare un'immagine di anteprima della sorgente che controllano o di qualsiasi altra sorgente disponibile nel documento.<\/p>\n\n\n\n<p>A seconda che la sorgente sia statica (solo le immagini trascinate in mimoLive), una sorgente statica <span class=\"caps\">PNG<\/span> della sorgente che supporta un canale alfa. Per qualsiasi altra sorgente, viene caricata una rappresentazione <span class=\"caps\">JPEG<\/span> La rappresentazione della sorgente viene aggiornata regolarmente. La frequenza di aggiornamento target per le sorgenti dinamiche \u00e8 di 5 fotogrammi al secondo, ma questa frequenza viene ridotta quando la velocit\u00e0 della connessione di rete si rivela insufficiente per il caricamento ripetuto dei fotogrammi di anteprima.<\/p>\n\n\n\n<p>Attualmente non \u00e8 supportata la visualizzazione dell'output del programma del documento su un pulsante di azione. Le immagini predefinite del layer, anche se non visibili nell'elenco delle fonti, sono disponibili per l'anteprima.<\/p>\n\n\n\n<p>Per specificare un'anteprima della sorgente, si utilizza un meccanismo di risoluzione degli oggetti:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>L'\"ID documento\" viene sempre disegnato in fase di esecuzione, quindi non deve essere presente nella preimpostazione.<\/li>\n\n\n\n<li>Se viene indicato \"sourceId\", per l'anteprima viene utilizzata la sorgente con quell'ID.<\/li>\n\n\n\n<li>Se tutti i valori di \"layerId\", \"variantId\" e \"dynamicSourceId\" sono indicati, l'ID della sorgente sar\u00e0 cercato nella variante del livello specificato sotto la chiave in \"dynamicSourceId\". Questo pu\u00f2 essere usato per fare riferimento a sorgenti come la sorgente A-G del video switcher, anche quando vengono modificate nel documento.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Button Colore<\/h3>\n\n\n\n<p>Utilizzando l'attributo \"color\", i pulsanti possono essere colorati con qualsiasi codice colore rappresentabile in <span class=\"caps\">HTML<\/span> (ad esempio \"#f80\", \"#ff0088\", \"arancione\" o \"rgb(255, 66, 88)\").<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Icona Button<\/h3>\n\n\n\n<p>Le Buttons possono visualizzare un'icona per indicare la loro funzionalit\u00e0. Per visualizzare un elenco di tutte le icone disponibili, aprire http:\/\/localhost:8989\/icons\/demo.html mentre mimoLive \u00e8 in esecuzione e i telecomandi sono abilitati.<br>Utilizzare il nome semplice dell'icona, ad esempio \"indietro\" o \"freccia gi\u00f9\".<\/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\/it\/wp-json\/wp\/v2\/user-manual\/32483","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mimolive.com\/it\/wp-json\/wp\/v2\/user-manual"}],"about":[{"href":"https:\/\/mimolive.com\/it\/wp-json\/wp\/v2\/types\/user-manual"}],"author":[{"embeddable":true,"href":"https:\/\/mimolive.com\/it\/wp-json\/wp\/v2\/users\/3"}],"version-history":[{"count":2,"href":"https:\/\/mimolive.com\/it\/wp-json\/wp\/v2\/user-manual\/32483\/revisions"}],"predecessor-version":[{"id":40973,"href":"https:\/\/mimolive.com\/it\/wp-json\/wp\/v2\/user-manual\/32483\/revisions\/40973"}],"up":[{"embeddable":true,"href":"https:\/\/mimolive.com\/it\/wp-json\/wp\/v2\/user-manual\/32482"}],"wp:attachment":[{"href":"https:\/\/mimolive.com\/it\/wp-json\/wp\/v2\/media?parent=32483"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mimolive.com\/it\/wp-json\/wp\/v2\/categories?post=32483"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mimolive.com\/it\/wp-json\/wp\/v2\/tags?post=32483"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}