diff --git a/LinkIt7697/France/blocks.js b/LinkIt7697/France/blocks.js
index 54ffebac40..cd327807d2 100644
--- a/LinkIt7697/France/blocks.js
+++ b/LinkIt7697/France/blocks.js
@@ -1,3 +1,571 @@
+Blockly.Blocks['audio_create'] = {
+ init: function() {
+ this.appendDummyInput()
+ .appendField(Blockly.Msg.AUDIO)
+ .appendField(Blockly.Msg.AUDIO_CREATE);
+ this.appendValueInput("id_")
+ .setCheck(null)
+ .setAlign(Blockly.ALIGN_RIGHT)
+ .appendField(Blockly.Msg.ID);
+ this.appendValueInput("src_")
+ .setCheck(null)
+ .setAlign(Blockly.ALIGN_RIGHT)
+ .appendField(Blockly.Msg.AUDIO_SRC);
+ this.appendValueInput("left_")
+ .setCheck("Number")
+ .setAlign(Blockly.ALIGN_RIGHT)
+ .appendField(Blockly.Msg.LEFT);
+ this.appendValueInput("top_")
+ .setCheck("Number")
+ .setAlign(Blockly.ALIGN_RIGHT)
+ .appendField(Blockly.Msg.TOP);
+ this.appendValueInput("zindex_")
+ .setCheck("Number")
+ .setAlign(Blockly.ALIGN_RIGHT)
+ .appendField(Blockly.Msg.ZINDEX);
+ this.setInputsInline(true);
+ this.setPreviousStatement(true);
+ this.setNextStatement(true);
+ this.setColour(Blockly.Msg["HUE_6"]);
+ }
+};
+
+Blockly.Blocks['audio_set'] = {
+ init: function() {
+ this.appendValueInput("id_")
+ .setCheck(null)
+ .appendField(Blockly.Msg.AUDIO)
+ .appendField(Blockly.Msg.AUDIO_ID);
+ this.appendDummyInput()
+ .appendField(Blockly.Msg.AUDIO_SET)
+ .appendField(new Blockly.FieldDropdown([
+ [Blockly.Msg.LEFT,"left"],
+ [Blockly.Msg.TOP,"top"],
+ [Blockly.Msg.AUDIO_AUTOPLAY,"autoplay"],
+ [Blockly.Msg.AUDIO_CONTROLS,"controls"],
+ [Blockly.Msg.AUDIO_LOOP,"loop"],
+ [Blockly.Msg.AUDIO_MUTED,"muted"],
+ [Blockly.Msg.AUDIO_SRC,"src"],
+ [Blockly.Msg.AUDIO_VOLUME,"volume"],
+ [Blockly.Msg.AUDIO_CURRENTTIME,"currentTime"],
+ [Blockly.Msg.PROPERTY_OPACITY,"opacity"],
+ [Blockly.Msg.PROPERTY_ZINDEX,"zindex"],
+ [Blockly.Msg.PROPERTY_DISPLAY,"display"],
+ [Blockly.Msg.PROPERTY_POSITION,"position"],
+ [Blockly.Msg.PROPERTY_DRAGGABLE,"draggable"],
+ [Blockly.Msg.PROPERTY_STYLE,"style"],
+ [Blockly.Msg.PROPERTY_CLASS,"class"]
+ ]), "property_");
+ this.appendValueInput("value_")
+ .setAlign(Blockly.ALIGN_RIGHT)
+ .setCheck(null);
+ this.setInputsInline(true);
+ this.setPreviousStatement(true);
+ this.setNextStatement(true);
+ this.setColour(Blockly.Msg["HUE_6"]);
+ }
+};
+
+Blockly.Blocks['audio_get'] = {
+ init: function () {
+ this.appendValueInput("id_")
+ .setCheck(null)
+ .appendField(Blockly.Msg.AUDIO)
+ .appendField(Blockly.Msg.AUDIO_ID);
+ this.appendDummyInput()
+ .appendField(Blockly.Msg.AUDIO_GET)
+ .appendField(new Blockly.FieldDropdown([
+ [Blockly.Msg.LEFT,"left"],
+ [Blockly.Msg.TOP,"top"],
+ [Blockly.Msg.AUDIO_CURRENTSRC,"currentSrc"],
+ [Blockly.Msg.AUDIO_CURRENTTIME,"currentTime"],
+ [Blockly.Msg.AUDIO_DURATION,"duration"],
+ [Blockly.Msg.AUDIO_ENDED,"ended"],
+ [Blockly.Msg.AUDIO_MUTED,"muted"],
+ [Blockly.Msg.AUDIO_PAUSED,"paused"],
+ [Blockly.Msg.AUDIO_PLAYED,"played"],
+ [Blockly.Msg.AUDIO_SRC,"src"],
+ [Blockly.Msg.AUDIO_VOLUME,"volume"],
+ [Blockly.Msg.PROPERTY_ZINDEX,"zindex"],
+ [Blockly.Msg.PROPERTY_DISPLAY,"display"],
+ [Blockly.Msg.PROPERTY_POSITION,"position"],
+ [Blockly.Msg.PROPERTY_DRAGGABLE,"draggable"],
+ [Blockly.Msg.ELEMENTID,"id"],
+ [Blockly.Msg.PROPERTY_CLASS,"class"]
+ ]), "property_");
+ this.setInputsInline(true);
+ this.setOutput(true, null);
+ this.setColour(Blockly.Msg["HUE_6"]);
+ }
+};
+
+Blockly.Blocks['audio_control'] = {
+ init: function () {
+ this.appendValueInput("id_")
+ .setCheck(null)
+ .appendField(Blockly.Msg.AUDIO)
+ .appendField(Blockly.Msg.AUDIO_ID);
+ this.appendDummyInput()
+ .appendField(Blockly.Msg.AUDIO_CONTROL)
+ .appendField(new Blockly.FieldDropdown([
+ [Blockly.Msg.AUDIO_PLAY,"play"],
+ [Blockly.Msg.AUDIO_PAUSE,"pause"],
+ [Blockly.Msg.AUDIO_LOAD,"load"]
+ ]), "property_");
+ this.setInputsInline(true);
+ this.setPreviousStatement(true);
+ this.setNextStatement(true);
+ this.setColour(Blockly.Msg["HUE_6"]);
+ }
+};
+
+Blockly.Blocks['audio_play_googleTTS'] = {
+ init: function () {
+ this.appendDummyInput()
+ .appendField(Blockly.Msg.AUDIO_SRC)
+ this.appendDummyInput()
+ .setAlign(Blockly.ALIGN_RIGHT)
+ .appendField(Blockly.Msg.AUDIO_TTS)
+ .appendField(new Blockly.FieldDropdown([
+ ["Abkhaz", "ab"],
+ ["Acehnese", "ace"],
+ ["Acholi", "ach"],
+ ["Afrikaans", "af"],
+ ["Albanian", "sq"],
+ ["Alur", "alz"],
+ ["Amharic", "am"],
+ ["Arabic", "ar"],
+ ["Armenian", "hy"],
+ ["Assamese", "as"],
+ ["Awadhi", "awa"],
+ ["Aymara", "ay"],
+ ["Azerbaijani", "az"],
+ ["Balinese", "ban"],
+ ["Bambara", "bm"],
+ ["Bashkir", "ba"],
+ ["Basque", "eu"],
+ ["Batak Karo", "btx"],
+ ["Batak Simalungun", "bts"],
+ ["Batak Toba", "bbc"],
+ ["Belarusian", "be"],
+ ["Bemba", "bem"],
+ ["Bengali", "bn"],
+ ["Betawi", "bew"],
+ ["Bhojpuri", "bho"],
+ ["Bikol", "bik"],
+ ["Bosnian", "bs"],
+ ["Breton", "br"],
+ ["Bulgarian", "bg"],
+ ["Buryat", "bua"],
+ ["Cantonese", "yue"],
+ ["Catalan", "ca"],
+ ["Cebuano", "ceb"],
+ ["Chichewa (Nyanja)", "ny"],
+ ["Chinese (Simplified)", "zh-CN"],
+ ["Chinese (Traditional)", "zh-TW"],
+ ["Chuvash", "cv"],
+ ["Corsican", "co"],
+ ["Crimean Tatar", "crh"],
+ ["Croatian", "hr"],
+ ["Czech", "cs"],
+ ["Danish", "da"],
+ ["Dinka", "din"],
+ ["Divehi", "dv"],
+ ["Dogri", "doi"],
+ ["Dombe", "dov"],
+ ["Dutch", "nl"],
+ ["Dzongkha", "dz"],
+ ["English", "en"],
+ ["Esperanto", "eo"],
+ ["Estonian", "et"],
+ ["Ewe", "ee"],
+ ["Fijian", "fj"],
+ ["Filipino (Tagalog)", "fil"],
+ ["Finnish", "fi"],
+ ["French", "fr"],
+ ["French (French)", "fr-FR"],
+ ["French (Canadian)", "fr-CA"],
+ ["Frisian", "fy"],
+ ["Fulfulde", "ff"],
+ ["Ga", "gaa"],
+ ["Galician", "gl"],
+ ["Ganda (Luganda)", "lg"],
+ ["Georgian", "ka"],
+ ["German", "de"],
+ ["Greek", "el"],
+ ["Guarani", "gn"],
+ ["Gujarati", "gu"],
+ ["Haitian Creole", "ht"],
+ ["Hakha Chin", "cnh"],
+ ["Hausa", "ha"],
+ ["Hawaiian", "haw"],
+ ["Hebrew", "iw or he"],
+ ["Hiligaynon", "hil"],
+ ["Hindi", "hi"],
+ ["Hmong", "hmn"],
+ ["Hungarian", "hu"],
+ ["Hunsrik", "hrx"],
+ ["Icelandic", "is"],
+ ["Igbo", "ig"],
+ ["Iloko", "ilo"],
+ ["Indonesian", "id"],
+ ["Irish", "ga"],
+ ["Italian", "it"],
+ ["Japanese", "ja"],
+ ["Javanese", "jw"],
+ ["Kannada", "kn"],
+ ["Kapampangan", "pam"],
+ ["Kazakh", "kk"],
+ ["Khmer", "km"],
+ ["Kiga", "cgg"],
+ ["Kinyarwanda", "rw"],
+ ["Kituba", "ktu"],
+ ["Konkani", "gom"],
+ ["Korean", "ko"],
+ ["Krio", "kri"],
+ ["Kurdish (Kurmanji)", "ku"],
+ ["Kurdish (Sorani)", "ckb"],
+ ["Kyrgyz", "ky"],
+ ["Lao", "lo"],
+ ["Latgalian", "ltg"],
+ ["Latin", "la"],
+ ["Latvian", "lv"],
+ ["Ligurian", "lij"],
+ ["Limburgan", "li"],
+ ["Lingala", "ln"],
+ ["Lithuanian", "lt"],
+ ["Lombard", "lmo"],
+ ["Luo", "luo"],
+ ["Luxembourgish", "lb"],
+ ["Macedonian", "mk"],
+ ["Maithili", "mai"],
+ ["Makassar", "mak"],
+ ["Malagasy", "mg"],
+ ["Malay", "ms"],
+ ["Malay (Jawi)", "ms-Arab"],
+ ["Malayalam", "ml"],
+ ["Maltese", "mt"],
+ ["Maori", "mi"],
+ ["Marathi", "mr"],
+ ["Meadow Mari", "chm"],
+ ["Meiteilon (Manipuri)", "mni-Mtei"],
+ ["Minang", "min"],
+ ["Mizo", "lus"],
+ ["Mongolian", "mn"],
+ ["Myanmar (Burmese)", "my"],
+ ["Ndebele (South)", "nr"],
+ ["Nepalbhasa (Newari)", "new"],
+ ["Nepali", "ne"],
+ ["Northern Sotho (Sepedi)", "nso"],
+ ["Norwegian", "no"],
+ ["Nuer", "nus"],
+ ["Occitan", "oc"],
+ ["Odia (Oriya)", "or"],
+ ["Oromo", "om"],
+ ["Pangasinan", "pag"],
+ ["Papiamento", "pap"],
+ ["Pashto", "ps"],
+ ["Persian", "fa"],
+ ["Polish", "pl"],
+ ["Portuguese", "pt"],
+ ["Portuguese (Portugal)", "pt-PT"],
+ ["Portuguese (Brazil)", "pt-BR"],
+ ["Punjabi", "pa"],
+ ["Punjabi (Shahmukhi)", "pa-Arab"],
+ ["Quechua", "qu"],
+ ["Romani", "rom"],
+ ["Romanian", "ro"],
+ ["Rundi", "rn"],
+ ["Russian", "ru"],
+ ["Samoan", "sm"],
+ ["Sango", "sg"],
+ ["Sanskrit", "sa"],
+ ["Scots Gaelic", "gd"],
+ ["Serbian", "sr"],
+ ["Sesotho", "st"],
+ ["Seychellois Creole", "crs"],
+ ["Shan", "shn"],
+ ["Shona", "sn"],
+ ["Sicilian", "scn"],
+ ["Silesian", "szl"],
+ ["Sindhi", "sd"],
+ ["Sinhala (Sinhalese)", "si"],
+ ["Slovak", "sk"],
+ ["Slovenian", "sl"],
+ ["Somali", "so"],
+ ["Spanish", "es"],
+ ["Sundanese", "su"],
+ ["Swahili", "sw"],
+ ["Swati", "ss"],
+ ["Swedish", "sv"],
+ ["Tajik", "tg"],
+ ["Tamil", "ta"],
+ ["Tatar", "tt"],
+ ["Telugu", "te"],
+ ["Tetum", "tet"],
+ ["Thai", "th"],
+ ["Tigrinya", "ti"],
+ ["Tsonga", "ts"],
+ ["Tswana", "tn"],
+ ["Turkish", "tr"],
+ ["Turkmen", "tk"],
+ ["Twi (Akan)", "ak"],
+ ["Ukrainian", "uk"],
+ ["Urdu", "ur"],
+ ["Uyghur", "ug"],
+ ["Uzbek", "uz"],
+ ["Vietnamese", "vi"],
+ ["Welsh", "cy"],
+ ["Xhosa", "xh"],
+ ["Yiddish", "yi"],
+ ["Yoruba", "yo"],
+ ["Yucatec Maya", "yua"],
+ ["Zulu", "zu"]
+ ]), "language_");
+ this.appendValueInput("text_")
+ .setAlign(Blockly.ALIGN_RIGHT)
+ .setCheck(null)
+ .appendField(Blockly.Msg.AUDIO_TEXT);
+ this.setInputsInline(false);
+ this.setOutput(true, null);
+ this.setColour(Blockly.Msg["HUE_6"]);
+ }
+};
+
+Blockly.Blocks['audio_save_googleTTS'] = {
+ init: function () {
+ this.appendDummyInput()
+ .appendField(Blockly.Msg.AUDIO)
+ this.appendDummyInput()
+ .setAlign(Blockly.ALIGN_RIGHT)
+ .appendField(Blockly.Msg.AUDIO_TTS)
+ .appendField(new Blockly.FieldDropdown([
+ ["Abkhaz", "ab"],
+ ["Acehnese", "ace"],
+ ["Acholi", "ach"],
+ ["Afrikaans", "af"],
+ ["Albanian", "sq"],
+ ["Alur", "alz"],
+ ["Amharic", "am"],
+ ["Arabic", "ar"],
+ ["Armenian", "hy"],
+ ["Assamese", "as"],
+ ["Awadhi", "awa"],
+ ["Aymara", "ay"],
+ ["Azerbaijani", "az"],
+ ["Balinese", "ban"],
+ ["Bambara", "bm"],
+ ["Bashkir", "ba"],
+ ["Basque", "eu"],
+ ["Batak Karo", "btx"],
+ ["Batak Simalungun", "bts"],
+ ["Batak Toba", "bbc"],
+ ["Belarusian", "be"],
+ ["Bemba", "bem"],
+ ["Bengali", "bn"],
+ ["Betawi", "bew"],
+ ["Bhojpuri", "bho"],
+ ["Bikol", "bik"],
+ ["Bosnian", "bs"],
+ ["Breton", "br"],
+ ["Bulgarian", "bg"],
+ ["Buryat", "bua"],
+ ["Cantonese", "yue"],
+ ["Catalan", "ca"],
+ ["Cebuano", "ceb"],
+ ["Chichewa (Nyanja)", "ny"],
+ ["Chinese (Simplified)", "zh-CN"],
+ ["Chinese (Traditional)", "zh-TW"],
+ ["Chuvash", "cv"],
+ ["Corsican", "co"],
+ ["Crimean Tatar", "crh"],
+ ["Croatian", "hr"],
+ ["Czech", "cs"],
+ ["Danish", "da"],
+ ["Dinka", "din"],
+ ["Divehi", "dv"],
+ ["Dogri", "doi"],
+ ["Dombe", "dov"],
+ ["Dutch", "nl"],
+ ["Dzongkha", "dz"],
+ ["English", "en"],
+ ["Esperanto", "eo"],
+ ["Estonian", "et"],
+ ["Ewe", "ee"],
+ ["Fijian", "fj"],
+ ["Filipino (Tagalog)", "fil"],
+ ["Finnish", "fi"],
+ ["French", "fr"],
+ ["French (French)", "fr-FR"],
+ ["French (Canadian)", "fr-CA"],
+ ["Frisian", "fy"],
+ ["Fulfulde", "ff"],
+ ["Ga", "gaa"],
+ ["Galician", "gl"],
+ ["Ganda (Luganda)", "lg"],
+ ["Georgian", "ka"],
+ ["German", "de"],
+ ["Greek", "el"],
+ ["Guarani", "gn"],
+ ["Gujarati", "gu"],
+ ["Haitian Creole", "ht"],
+ ["Hakha Chin", "cnh"],
+ ["Hausa", "ha"],
+ ["Hawaiian", "haw"],
+ ["Hebrew", "iw or he"],
+ ["Hiligaynon", "hil"],
+ ["Hindi", "hi"],
+ ["Hmong", "hmn"],
+ ["Hungarian", "hu"],
+ ["Hunsrik", "hrx"],
+ ["Icelandic", "is"],
+ ["Igbo", "ig"],
+ ["Iloko", "ilo"],
+ ["Indonesian", "id"],
+ ["Irish", "ga"],
+ ["Italian", "it"],
+ ["Japanese", "ja"],
+ ["Javanese", "jw"],
+ ["Kannada", "kn"],
+ ["Kapampangan", "pam"],
+ ["Kazakh", "kk"],
+ ["Khmer", "km"],
+ ["Kiga", "cgg"],
+ ["Kinyarwanda", "rw"],
+ ["Kituba", "ktu"],
+ ["Konkani", "gom"],
+ ["Korean", "ko"],
+ ["Krio", "kri"],
+ ["Kurdish (Kurmanji)", "ku"],
+ ["Kurdish (Sorani)", "ckb"],
+ ["Kyrgyz", "ky"],
+ ["Lao", "lo"],
+ ["Latgalian", "ltg"],
+ ["Latin", "la"],
+ ["Latvian", "lv"],
+ ["Ligurian", "lij"],
+ ["Limburgan", "li"],
+ ["Lingala", "ln"],
+ ["Lithuanian", "lt"],
+ ["Lombard", "lmo"],
+ ["Luo", "luo"],
+ ["Luxembourgish", "lb"],
+ ["Macedonian", "mk"],
+ ["Maithili", "mai"],
+ ["Makassar", "mak"],
+ ["Malagasy", "mg"],
+ ["Malay", "ms"],
+ ["Malay (Jawi)", "ms-Arab"],
+ ["Malayalam", "ml"],
+ ["Maltese", "mt"],
+ ["Maori", "mi"],
+ ["Marathi", "mr"],
+ ["Meadow Mari", "chm"],
+ ["Meiteilon (Manipuri)", "mni-Mtei"],
+ ["Minang", "min"],
+ ["Mizo", "lus"],
+ ["Mongolian", "mn"],
+ ["Myanmar (Burmese)", "my"],
+ ["Ndebele (South)", "nr"],
+ ["Nepalbhasa (Newari)", "new"],
+ ["Nepali", "ne"],
+ ["Northern Sotho (Sepedi)", "nso"],
+ ["Norwegian", "no"],
+ ["Nuer", "nus"],
+ ["Occitan", "oc"],
+ ["Odia (Oriya)", "or"],
+ ["Oromo", "om"],
+ ["Pangasinan", "pag"],
+ ["Papiamento", "pap"],
+ ["Pashto", "ps"],
+ ["Persian", "fa"],
+ ["Polish", "pl"],
+ ["Portuguese", "pt"],
+ ["Portuguese (Portugal)", "pt-PT"],
+ ["Portuguese (Brazil)", "pt-BR"],
+ ["Punjabi", "pa"],
+ ["Punjabi (Shahmukhi)", "pa-Arab"],
+ ["Quechua", "qu"],
+ ["Romani", "rom"],
+ ["Romanian", "ro"],
+ ["Rundi", "rn"],
+ ["Russian", "ru"],
+ ["Samoan", "sm"],
+ ["Sango", "sg"],
+ ["Sanskrit", "sa"],
+ ["Scots Gaelic", "gd"],
+ ["Serbian", "sr"],
+ ["Sesotho", "st"],
+ ["Seychellois Creole", "crs"],
+ ["Shan", "shn"],
+ ["Shona", "sn"],
+ ["Sicilian", "scn"],
+ ["Silesian", "szl"],
+ ["Sindhi", "sd"],
+ ["Sinhala (Sinhalese)", "si"],
+ ["Slovak", "sk"],
+ ["Slovenian", "sl"],
+ ["Somali", "so"],
+ ["Spanish", "es"],
+ ["Sundanese", "su"],
+ ["Swahili", "sw"],
+ ["Swati", "ss"],
+ ["Swedish", "sv"],
+ ["Tajik", "tg"],
+ ["Tamil", "ta"],
+ ["Tatar", "tt"],
+ ["Telugu", "te"],
+ ["Tetum", "tet"],
+ ["Thai", "th"],
+ ["Tigrinya", "ti"],
+ ["Tsonga", "ts"],
+ ["Tswana", "tn"],
+ ["Turkish", "tr"],
+ ["Turkmen", "tk"],
+ ["Twi (Akan)", "ak"],
+ ["Ukrainian", "uk"],
+ ["Urdu", "ur"],
+ ["Uyghur", "ug"],
+ ["Uzbek", "uz"],
+ ["Vietnamese", "vi"],
+ ["Welsh", "cy"],
+ ["Xhosa", "xh"],
+ ["Yiddish", "yi"],
+ ["Yoruba", "yo"],
+ ["Yucatec Maya", "yua"],
+ ["Zulu", "zu"]
+ ]), "language_");
+ this.appendValueInput("text_")
+ .setAlign(Blockly.ALIGN_RIGHT)
+ .setCheck(null)
+ .appendField(Blockly.Msg.AUDIO_TEXT);
+ this.setInputsInline(false);
+ this.setPreviousStatement(true);
+ this.setNextStatement(true);
+ this.setColour(Blockly.Msg["HUE_6"]);
+ }
+};
+
+Blockly.Blocks['audio_delete'] = {
+ init: function () {
+ this.appendValueInput("id_")
+ .setCheck(null)
+ .appendField(Blockly.Msg.AUDIO)
+ .appendField(Blockly.Msg.AUDIO_ID);
+ this.appendDummyInput()
+ .appendField(Blockly.Msg.AUDIO_DELETE);
+ this.setInputsInline(true);
+ this.setPreviousStatement(true);
+ this.setNextStatement(true);
+ this.setColour(Blockly.Msg["HUE_6"]);
+ }
+};
+
+
+
+
+
+
Blockly.Blocks['page_googlemap_initial'] = {
init: function () {
this.appendDummyInput()
@@ -23449,7 +24017,9 @@ Blockly.Blocks['element_event'] = {
[Blockly.Msg.ELEMENT_TIME,"time"],
[Blockly.Msg.ELEMENT_DATETIME,"datetime"],
[Blockly.Msg.ELEMENT_PROGRESS,"progress"],
- [Blockly.Msg.ELEMENT_PASSWORD,"password"]
+ [Blockly.Msg.ELEMENT_PASSWORD,"password"],
+ [Blockly.Msg.ELEMENT_VIDEO,"video"],
+ [Blockly.Msg.ELEMENT_AUDIO,"audio"]
],this.validate), "element");
this.appendValueInput("id_")
.setCheck(null)
@@ -23523,7 +24093,7 @@ Blockly.Blocks['element_event'] = {
["resize","resize"],
["reset","reset"],
["scroll","scroll"],
- ["seellipseh","seellipseh"],
+ ["search","search"],
["seeked","seeked"],
["seeking","seeking"],
["select","select"],
@@ -23542,7 +24112,14 @@ Blockly.Blocks['element_event'] = {
["unload","unload"],
["volumechange","volumechange"],
["waiting","waiting"],
- ["wheel","wheel"]
+ ["wheel","wheel"],
+ ["loadstart","loadstart"],
+ ["durationchange","durationchange"],
+ ["loadedmetadata","loadedmetadata"],
+ ["loadeddata","loadeddata"],
+ ["progress","progress"],
+ ["canplay","canplay"],
+ ["canplaythrough","canplaythrough"]
]), "event");
this.appendStatementInput("statement");
this.setInputsInline(true);
@@ -23588,7 +24165,9 @@ Blockly.Blocks['element_event_stop'] = {
[Blockly.Msg.ELEMENT_TIME,"time"],
[Blockly.Msg.ELEMENT_DATETIME,"datetime"],
[Blockly.Msg.ELEMENT_PROGRESS,"progress"],
- [Blockly.Msg.ELEMENT_PASSWORD,"password"]
+ [Blockly.Msg.ELEMENT_PASSWORD,"password"],
+ [Blockly.Msg.ELEMENT_VIDEO,"video"],
+ [Blockly.Msg.ELEMENT_AUDIO,"audio"]
],this.validate), "element");
this.appendValueInput("id_")
.setCheck(null)
@@ -23662,7 +24241,7 @@ Blockly.Blocks['element_event_stop'] = {
["resize","resize"],
["reset","reset"],
["scroll","scroll"],
- ["seellipseh","seellipseh"],
+ ["search","search"],
["seeked","seeked"],
["seeking","seeking"],
["select","select"],
@@ -23681,7 +24260,14 @@ Blockly.Blocks['element_event_stop'] = {
["unload","unload"],
["volumechange","volumechange"],
["waiting","waiting"],
- ["wheel","wheel"]
+ ["wheel","wheel"],
+ ["loadstart","loadstart"],
+ ["durationchange","durationchange"],
+ ["loadedmetadata","loadedmetadata"],
+ ["loadeddata","loadeddata"],
+ ["progress","progress"],
+ ["canplay","canplay"],
+ ["canplaythrough","canplaythrough"]
]), "event");
this.setInputsInline(true);
this.setPreviousStatement(true);
@@ -26493,7 +27079,32 @@ Blockly.Blocks['custom_style'] = {
this.appendDummyInput()
.appendField(Blockly.Msg.CUSTOM_STYLE_SHOW);
this.appendDummyInput()
- .appendField(new Blockly.FieldDropdown([[Blockly.Msg.ELEMENT_WINDOW,"window"],[Blockly.Msg.ELEMENT_DOCUMENT,"document"],[Blockly.Msg.ELEMENT_TABLE,"table"],[Blockly.Msg.ELEMENT_IMAGE,"image"],[Blockly.Msg.ELEMENT_CANVAS,"canvas"],[Blockly.Msg.ELEMENT_BUTTON,"button"],[Blockly.Msg.ELEMENT_COLOR,"color"],[Blockly.Msg.ELEMENT_SELECT,"select"],[Blockly.Msg.ELEMENT_RANGE,"range"],[Blockly.Msg.ELEMENT_TEXT,"text"],[Blockly.Msg.ELEMENT_DIV,"div"],[Blockly.Msg.ELEMENT_IFRAME,"iframe"],[Blockly.Msg.ELEMENT_A,"a"],[Blockly.Msg.ELEMENT_RADIO,"radio"],[Blockly.Msg.ELEMENT_CHECKBOX,"checkbox"],[Blockly.Msg.ELEMENT_TEXTAREA,"textarea"],[Blockly.Msg.ELEMENT_NUMBER,"number"],[Blockly.Msg.ELEMENT_DATE,"date"],[Blockly.Msg.ELEMENT_TIME,"time"],[Blockly.Msg.ELEMENT_DATETIME,"datetime"],[Blockly.Msg.ELEMENT_PROGRESS,"progress"],[Blockly.Msg.ELEMENT_PASSWORD,"password"]]), "element");
+ .appendField(new Blockly.FieldDropdown([
+ [Blockly.Msg.ELEMENT_WINDOW,"window"],
+ [Blockly.Msg.ELEMENT_DOCUMENT,"document"],
+ [Blockly.Msg.ELEMENT_TABLE,"table"],
+ [Blockly.Msg.ELEMENT_IMAGE,"image"],
+ [Blockly.Msg.ELEMENT_CANVAS,"canvas"],
+ [Blockly.Msg.ELEMENT_BUTTON,"button"],
+ [Blockly.Msg.ELEMENT_COLOR,"color"],
+ [Blockly.Msg.ELEMENT_SELECT,"select"],
+ [Blockly.Msg.ELEMENT_RANGE,"range"],
+ [Blockly.Msg.ELEMENT_TEXT,"text"],
+ [Blockly.Msg.ELEMENT_DIV,"div"],
+ [Blockly.Msg.ELEMENT_IFRAME,"iframe"],
+ [Blockly.Msg.ELEMENT_A,"a"],
+ [Blockly.Msg.ELEMENT_RADIO,"radio"],
+ [Blockly.Msg.ELEMENT_CHECKBOX,"checkbox"],
+ [Blockly.Msg.ELEMENT_TEXTAREA,"textarea"],
+ [Blockly.Msg.ELEMENT_NUMBER,"number"],
+ [Blockly.Msg.ELEMENT_DATE,"date"],
+ [Blockly.Msg.ELEMENT_TIME,"time"],
+ [Blockly.Msg.ELEMENT_DATETIME,"datetime"],
+ [Blockly.Msg.ELEMENT_PROGRESS,"progress"],
+ [Blockly.Msg.ELEMENT_PASSWORD,"password"],
+ [Blockly.Msg.ELEMENT_VIDEO,"video"],
+ [Blockly.Msg.ELEMENT_AUDIO,"audio"]
+ ]), "element");
this.appendValueInput("id")
.setCheck(null)
.setAlign(Blockly.ALIGN_RIGHT)
diff --git a/LinkIt7697/France/en.js b/LinkIt7697/France/en.js
index fbdebc8bd6..a738007c7f 100644
--- a/LinkIt7697/France/en.js
+++ b/LinkIt7697/France/en.js
@@ -1579,6 +1579,7 @@ Blockly.Msg.ELEMENT_PROGRESS = "Progress";
Blockly.Msg.ELEMENT_PASSWORD = "Password";
Blockly.Msg.ELEMENT_FORM = "Form";
Blockly.Msg.ELEMENT_VIDEO = "Video";
+Blockly.Msg.ELEMENT_AUDIO = "Audio";
Blockly.Msg.ELEMENT_SPAN = "Span";
Blockly.Msg.PROPERTY_ANY = "ANY";
Blockly.Msg.PROPERTY_UP = "UP";
@@ -1850,6 +1851,33 @@ Blockly.Msg["AES_ENCRYPT"] = "AES ENCRYPT";
Blockly.Msg["AES_DECRYPT"] = "AES DECRYPT";
Blockly.Msg["AES_KEY"] = "AES KEY";
+Blockly.Msg["AUDIO"] = "Audio";
+Blockly.Msg["AUDIO_ID"] = "ID";
+Blockly.Msg["AUDIO_CREATE"] = "Create";
+Blockly.Msg["AUDIO_VALUE"] = "Value";
+Blockly.Msg["AUDIO_SET"] = "Set";
+Blockly.Msg["AUDIO_GET"] = "Get";
+Blockly.Msg["AUDIO_DELETE"] = "Delete";
+Blockly.Msg["AUDIO_SRC"] = "Audio Source";
+Blockly.Msg["AUDIO_AUTOPLAY"] = "Autoplay";
+Blockly.Msg["AUDIO_CONTROLS"] = "Controls";
+Blockly.Msg["AUDIO_CONTROL"] = "Control";
+Blockly.Msg["AUDIO_LOOP"] = "Loop";
+Blockly.Msg["AUDIO_MUTED"] = "Muted";
+Blockly.Msg["AUDIO_VOLUME"] = "Volume";
+Blockly.Msg["AUDIO_CURRENTTIME"] = "Current Time";
+Blockly.Msg["AUDIO_CURRENTSRC"] = "Current Source";
+Blockly.Msg["AUDIO_DURATION"] = "";
+Blockly.Msg["AUDIO_ENDED"] = "Ended";
+Blockly.Msg["AUDIO_PAUSED"] = "Paused";
+Blockly.Msg["AUDIO_PLAYED"] = "Played";
+Blockly.Msg["AUDIO_TTS"] = "Text to Speech";
+Blockly.Msg["AUDIO_TTS_SAVE"] = "Text to MP3";
+Blockly.Msg["AUDIO_TEXT"] = "Text";
+Blockly.Msg["AUDIO_PLAY"] = "Play";
+Blockly.Msg["AUDIO_PAUSE"] = "Pause";
+Blockly.Msg["AUDIO_LOAD"] = "Load";
+
Blockly.Msg.ESP32_BUTTON = "button ";
Blockly.Msg.ESP32_BUTTON_PIN = "Button Set Pins ";
Blockly.Msg.ESP32_BUTTON_PIN_A = "A";
diff --git a/LinkIt7697/France/en_category.xml b/LinkIt7697/France/en_category.xml
index 17a31d0ffd..04488a632f 100644
--- a/LinkIt7697/France/en_category.xml
+++ b/LinkIt7697/France/en_category.xml
@@ -62,6 +62,7 @@
catGameElements_sub26Inline Containers
catGameElements_sub27Fetch
catGameElements_sub28Json
+catGameElements_sub29Audio
oledOLED Display
EZ+EZ Start Kit+
airqualityTaiwan Air Quality
diff --git a/LinkIt7697/France/javascript.js b/LinkIt7697/France/javascript.js
index 9cfa3bebd1..2184f082fc 100644
--- a/LinkIt7697/France/javascript.js
+++ b/LinkIt7697/France/javascript.js
@@ -1,3 +1,61 @@
+Blockly.Arduino['audio_create'] = function (block) {
+ var value_id_ = Blockly.Arduino.valueToCode(block, 'id_', Blockly.Arduino.ORDER_ATOMIC);
+ var value_src_ = Blockly.Arduino.valueToCode(block, 'src_', Blockly.Arduino.ORDER_ATOMIC);
+ var value_left_ = Blockly.Arduino.valueToCode(block, 'left_', Blockly.Arduino.ORDER_ATOMIC);
+ var value_top_ = Blockly.Arduino.valueToCode(block, 'top_', Blockly.Arduino.ORDER_ATOMIC);
+ var value_zindex_ = Blockly.Arduino.valueToCode(block, 'zindex_', Blockly.Arduino.ORDER_ATOMIC);
+ var code = 'audio_create(' + value_id_ + ','+ value_src_ + ','+ value_left_ + ',' + value_top_ + ',' + value_zindex_ + ');\n';
+ return code;
+};
+
+Blockly.Arduino['audio_set'] = function (block) {
+ var value_id_ = Blockly.Arduino.valueToCode(block, 'id_', Blockly.Arduino.ORDER_ATOMIC);
+ var value_property_ = block.getFieldValue('property_');
+ var value_value_ = Blockly.Arduino.valueToCode(block, 'value_', Blockly.Arduino.ORDER_ATOMIC);
+ var code = 'audio_set(' + value_id_ + ',"' + value_property_ + '",' + value_value_ + ');\n';
+ return code;
+};
+
+Blockly.Arduino['audio_get'] = function (block) {
+ var value_id_ = Blockly.Arduino.valueToCode(block, 'id_', Blockly.Arduino.ORDER_ATOMIC);
+ var value_property_ = block.getFieldValue('property_');
+ var code = 'audio_get(' + value_id_ + ',"' + value_property_ + '")';
+ return [code, Blockly.Arduino.ORDER_NONE];
+};
+
+Blockly.Arduino['audio_control'] = function (block) {
+ var value_id_ = Blockly.Arduino.valueToCode(block, 'id_', Blockly.Arduino.ORDER_ATOMIC);
+ var value_property_ = block.getFieldValue('property_');
+ var code = 'audio_control(' + value_id_ + ',"' + value_property_ + '");\n';
+ return code;
+};
+
+Blockly.Arduino['audio_play_googleTTS'] = function (block) {
+ var value_language_ = block.getFieldValue('language_');
+ var value_text_ = Blockly.Arduino.valueToCode(block, 'text_', Blockly.Arduino.ORDER_ATOMIC);
+ var code = 'await audio_play_googleTTS_Base64Data("' + value_language_ + '",' + value_text_ + ')';
+ return [code, Blockly.Arduino.ORDER_NONE];
+};
+
+Blockly.Arduino['audio_save_googleTTS'] = function (block) {
+ var value_language_ = block.getFieldValue('language_');
+ var value_text_ = Blockly.Arduino.valueToCode(block, 'text_', Blockly.Arduino.ORDER_ATOMIC);
+ var code = 'await audio_save_googleTTS_Base64Data("' + value_language_ + '",' + value_text_ + ');\n';
+ return code;
+};
+
+Blockly.Arduino['audio_delete'] = function (block) {
+ var value_id_ = Blockly.Arduino.valueToCode(block, 'id_', Blockly.Arduino.ORDER_ATOMIC);
+ var code = 'audio_delete(' + value_id_ + ');\n';
+ return code;
+};
+
+
+
+
+
+
+
Blockly.Arduino['page_googlemap_initial'] = function (block) {
var key = Blockly.Arduino.valueToCode(block, 'key', Blockly.Arduino.ORDER_ATOMIC)||"";
var statement = Blockly.Arduino.statementToCode(block, 'statement');
diff --git a/LinkIt7697/France/toolbox.xml b/LinkIt7697/France/toolbox.xml
index 78e441be3a..51d465f1a2 100644
--- a/LinkIt7697/France/toolbox.xml
+++ b/LinkIt7697/France/toolbox.xml
@@ -8327,6 +8327,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ 999
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ en
+
+
+
+
+
+
+
+ en
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/LinkIt7697/France/zh-hant.js b/LinkIt7697/France/zh-hant.js
index bde26fbedc..846a708552 100644
--- a/LinkIt7697/France/zh-hant.js
+++ b/LinkIt7697/France/zh-hant.js
@@ -1577,6 +1577,7 @@ Blockly.Msg.ELEMENT_PROGRESS = "進度";
Blockly.Msg.ELEMENT_PASSWORD = "密碼欄位";
Blockly.Msg.ELEMENT_FORM = "表單";
Blockly.Msg.ELEMENT_VIDEO = "視訊媒體";
+Blockly.Msg.ELEMENT_AUDIO = "音訊";
Blockly.Msg.ELEMENT_SPAN = "行內容器";
Blockly.Msg.PROPERTY_ANY = "任何方位";
Blockly.Msg.PROPERTY_UP = "上方";
@@ -1849,6 +1850,33 @@ Blockly.Msg["AES_ENCRYPT"] = "AES加密";
Blockly.Msg["AES_DECRYPT"] = "AES解密";
Blockly.Msg["AES_KEY"] = "AES金鑰";
+Blockly.Msg["AUDIO"] = "音訊";
+Blockly.Msg["AUDIO_ID"] = "代碼";
+Blockly.Msg["AUDIO_CREATE"] = "建立";
+Blockly.Msg["AUDIO_VALUE"] = "值";
+Blockly.Msg["AUDIO_SET"] = "設定";
+Blockly.Msg["AUDIO_GET"] = "取得";
+Blockly.Msg["AUDIO_DELETE"] = "刪除";
+Blockly.Msg["AUDIO_SRC"] = "音訊連結";
+Blockly.Msg["AUDIO_AUTOPLAY"] = "自動播放";
+Blockly.Msg["AUDIO_CONTROLS"] = "控制面板";
+Blockly.Msg["AUDIO_CONTROL"] = "控制";
+Blockly.Msg["AUDIO_LOOP"] = "重複播放";
+Blockly.Msg["AUDIO_MUTED"] = "靜音";
+Blockly.Msg["AUDIO_VOLUME"] = "音量";
+Blockly.Msg["AUDIO_CURRENTTIME"] = "目前播放時間";
+Blockly.Msg["AUDIO_CURRENTSRC"] = "目前音訊連結";
+Blockly.Msg["AUDIO_DURATION"] = "";
+Blockly.Msg["AUDIO_ENDED"] = "已播畢";
+Blockly.Msg["AUDIO_PAUSED"] = "已暫停";
+Blockly.Msg["AUDIO_PLAYED"] = "已播放";
+Blockly.Msg["AUDIO_TTS"] = "文字轉語音檔";
+Blockly.Msg["AUDIO_TTS_SAVE"] = "文字轉PM3檔";
+Blockly.Msg["AUDIO_TEXT"] = "文字";
+Blockly.Msg["AUDIO_PLAY"] = "播放";
+Blockly.Msg["AUDIO_PAUSE"] = "暫停";
+Blockly.Msg["AUDIO_LOAD"] = "重新載入";
+
Blockly.Msg.ESP32_BUTTON = "按鈕";
Blockly.Msg.ESP32_BUTTON_PIN = "按鈕 腳位";
Blockly.Msg.ESP32_BUTTON_PIN_A = "A";
diff --git a/LinkIt7697/France/zh-hant_category.xml b/LinkIt7697/France/zh-hant_category.xml
index fbeee0f85c..6ebee4d5b2 100644
--- a/LinkIt7697/France/zh-hant_category.xml
+++ b/LinkIt7697/France/zh-hant_category.xml
@@ -62,6 +62,7 @@
catGameElements_sub26行內容器
catGameElements_sub27Fetch
catGameElements_sub28Json
+catGameElements_sub29音訊
oledOLED顯示器
EZ+EZ Start Kit+
airquality台灣空氣品質