diff --git a/bundles/org.openhab.ui/web/package-lock.json b/bundles/org.openhab.ui/web/package-lock.json
index 8696b34b5a..d29c6ee23d 100644
--- a/bundles/org.openhab.ui/web/package-lock.json
+++ b/bundles/org.openhab.ui/web/package-lock.json
@@ -10,12 +10,14 @@
"hasInstallScript": true,
"license": "EPL-2.0",
"dependencies": {
- "@blockly/field-slider": "^6.1.4",
- "@blockly/plugin-typed-variable-modal": "^7.0.15",
- "@blockly/plugin-workspace-search": "^8.1.2",
- "@blockly/shadow-block-converter": "^5.0.0",
- "@blockly/theme-dark": "^6.0.5",
- "@blockly/zoom-to-fit": "^5.0.11",
+ "@blockly/field-colour": "^5.0.19",
+ "@blockly/field-multilineinput": "^5.0.17",
+ "@blockly/field-slider": "^7.0.16",
+ "@blockly/plugin-typed-variable-modal": "^8.0.16",
+ "@blockly/plugin-workspace-search": "^9.1.10",
+ "@blockly/shadow-block-converter": "^6.0.17",
+ "@blockly/theme-dark": "^7.0.12",
+ "@blockly/zoom-to-fit": "^6.0.16",
"@codemirror/autocomplete": "^6.18.6",
"@codemirror/commands": "^6.8.1",
"@codemirror/lang-css": "^6.3.1",
@@ -34,11 +36,11 @@
"@jsep-plugin/object": "^1.2.1",
"@jsep-plugin/regex": "^1.0.3",
"@jsep-plugin/template": "^1.0.4",
- "@mit-app-inventor/blockly-plugin-workspace-multiselect": "^0.1.12",
+ "@mit-app-inventor/blockly-plugin-workspace-multiselect": "^1.0.2",
"@replit/codemirror-indentation-markers": "^6.5.3",
"@uiw/codemirror-theme-gruvbox-dark": "^4.24.2",
"@vue-leaflet/vue-leaflet": "^0.10.1",
- "blockly": "^10.4.2",
+ "blockly": "^11.2.2",
"codemirror": "^6.0.2",
"cronstrue": "^2.50.0",
"crypto-browserify": "^3.12.0",
@@ -165,6 +167,19 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@asamuzakjp/css-color": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz",
+ "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==",
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/css-calc": "^2.1.3",
+ "@csstools/css-color-parser": "^3.0.9",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "lru-cache": "^10.4.3"
+ }
+ },
"node_modules/@babel/code-frame": {
"version": "7.27.1",
"dev": true,
@@ -192,6 +207,7 @@
"version": "7.28.4",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@babel/code-frame": "^7.27.1",
"@babel/generator": "^7.28.3",
@@ -1790,77 +1806,115 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@blockly/field-colour": {
+ "version": "5.0.19",
+ "resolved": "https://registry.npmjs.org/@blockly/field-colour/-/field-colour-5.0.19.tgz",
+ "integrity": "sha512-OLqGHTihuqtnZi51lsmd8uhZK+kyf07V9fd0wFQ+dfFhuyVcqrQkKBEE5NvDzdcdSLgdewWMBesGzweo5Q1XCg==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=8.0.0"
+ },
+ "peerDependencies": {
+ "blockly": "^11.0.0"
+ }
+ },
+ "node_modules/@blockly/field-multilineinput": {
+ "version": "5.0.17",
+ "resolved": "https://registry.npmjs.org/@blockly/field-multilineinput/-/field-multilineinput-5.0.17.tgz",
+ "integrity": "sha512-kI5dgsJDAggXgkjcKDIwHZ59ZqsVQE+96vT6+FUCjRE82vYp1KAV2/PK9tSBqB2LU8nWUAeBdOT1dD8fOwz5yA==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=8.0.0"
+ },
+ "peerDependencies": {
+ "blockly": "^11.0.0"
+ }
+ },
"node_modules/@blockly/field-slider": {
- "version": "6.1.10",
+ "version": "7.0.16",
+ "resolved": "https://registry.npmjs.org/@blockly/field-slider/-/field-slider-7.0.16.tgz",
+ "integrity": "sha512-FsRhdVDuq4n4xJ1NKt+zBUxXOTmGNTja+Nw0beE3PGdMpQHk5NM1AGt3dMMygchPzFm3qf6jt1KlHBBVaRf1nw==",
"license": "Apache-2.0",
"engines": {
"node": ">=8.0.0"
},
"peerDependencies": {
- "blockly": "^10.0.0"
+ "blockly": "^11.0.0"
}
},
"node_modules/@blockly/plugin-modal": {
- "version": "6.0.15",
+ "version": "7.0.16",
+ "resolved": "https://registry.npmjs.org/@blockly/plugin-modal/-/plugin-modal-7.0.16.tgz",
+ "integrity": "sha512-Xh/BzIWkvHk7RmkhSbjy8nGqDMqB+CMzW7wQrbB7bx1Mt8ENIXXQdeap4uunYpgv9AnTzqLvp5okD8sd5xAm0g==",
"license": "Apache 2.0",
"engines": {
"node": ">=8.17.0"
},
"peerDependencies": {
- "blockly": "^10.0.0"
+ "blockly": "^11.0.0"
}
},
"node_modules/@blockly/plugin-typed-variable-modal": {
- "version": "7.0.15",
+ "version": "8.0.16",
+ "resolved": "https://registry.npmjs.org/@blockly/plugin-typed-variable-modal/-/plugin-typed-variable-modal-8.0.16.tgz",
+ "integrity": "sha512-Xl2cb369orlTgAbIV0I6I+PkhQFP9QTZILGJboizbf8C/QNOxNK17Dib4n1/03UJ+TYqCnW0tSQ+MFMRh1Pi3Q==",
"license": "Apache-2.0",
"dependencies": {
- "@blockly/plugin-modal": "^6.0.15"
+ "@blockly/plugin-modal": "^7.0.16"
},
"engines": {
"node": ">=8.17.0"
},
"peerDependencies": {
- "blockly": "^10.0.0"
+ "blockly": "^11.0.0"
}
},
"node_modules/@blockly/plugin-workspace-search": {
- "version": "8.1.8",
+ "version": "9.1.10",
+ "resolved": "https://registry.npmjs.org/@blockly/plugin-workspace-search/-/plugin-workspace-search-9.1.10.tgz",
+ "integrity": "sha512-9fWgrlL5QC+0Cxqc7jtGCiKmVL7kdXKjR9BDxhsoN57BUF95P/38ek8RgvV1NIDo48OjzWtmJtwiGogfMZ24FA==",
"license": "Apache-2.0",
"engines": {
"node": ">=8.17.0"
},
"peerDependencies": {
- "blockly": "^10.0.0"
+ "blockly": "^11.0.0"
}
},
"node_modules/@blockly/shadow-block-converter": {
- "version": "5.0.6",
+ "version": "6.0.17",
+ "resolved": "https://registry.npmjs.org/@blockly/shadow-block-converter/-/shadow-block-converter-6.0.17.tgz",
+ "integrity": "sha512-RUFI28R1ir+BnV4mupCArS4Yk9+uUOTkzzkspN7AO8wiqpJHki4fJSUIKZKgaLh9atLrcxQahQ1WN7X2LoMX8Q==",
"license": "Apache-2.0",
"engines": {
"node": ">=8.0.0"
},
"peerDependencies": {
- "blockly": "^10.0.0"
+ "blockly": "^11.0.0"
}
},
"node_modules/@blockly/theme-dark": {
- "version": "6.0.7",
+ "version": "7.0.12",
+ "resolved": "https://registry.npmjs.org/@blockly/theme-dark/-/theme-dark-7.0.12.tgz",
+ "integrity": "sha512-DbRiiwSfVTAbAISnCQ1ismCxqc0lnSvtPL4t526X/m5WsLlMh0GT09ivDcP4ajXyWV4yk70wkhv3RYhZkmXuAQ==",
"license": "Apache-2.0",
"engines": {
"node": ">=8.17.0"
},
"peerDependencies": {
- "blockly": "^10.0.0"
+ "blockly": "^11.0.0"
}
},
"node_modules/@blockly/zoom-to-fit": {
- "version": "5.0.18",
+ "version": "6.0.16",
+ "resolved": "https://registry.npmjs.org/@blockly/zoom-to-fit/-/zoom-to-fit-6.0.16.tgz",
+ "integrity": "sha512-4z/YIZAkuCb4Q+F8F1G8dxoXC6ENud1mftClcgD/fe9TtbcJiNR+l/F2s5gyJvx7/heRuAprfoSiK1MuyKR67A==",
"license": "Apache-2.0",
"engines": {
"node": ">=8.17.0"
},
"peerDependencies": {
- "blockly": "^10.0.0"
+ "blockly": "^11.0.0"
}
},
"node_modules/@codemirror/autocomplete": {
@@ -1954,6 +2008,7 @@
"node_modules/@codemirror/language": {
"version": "6.11.3",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@codemirror/state": "^6.0.0",
"@codemirror/view": "^6.23.0",
@@ -1991,6 +2046,7 @@
"node_modules/@codemirror/state": {
"version": "6.5.2",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@marijn/find-cluster-break": "^1.0.0"
}
@@ -1998,6 +2054,7 @@
"node_modules/@codemirror/view": {
"version": "6.38.6",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@codemirror/state": "^6.5.0",
"crelt": "^1.0.6",
@@ -2029,7 +2086,6 @@
},
"node_modules/@csstools/color-helpers": {
"version": "5.1.0",
- "dev": true,
"funding": [
{
"type": "github",
@@ -2047,7 +2103,6 @@
},
"node_modules/@csstools/css-calc": {
"version": "2.1.4",
- "dev": true,
"funding": [
{
"type": "github",
@@ -2069,7 +2124,6 @@
},
"node_modules/@csstools/css-color-parser": {
"version": "3.1.0",
- "dev": true,
"funding": [
{
"type": "github",
@@ -2095,7 +2149,6 @@
},
"node_modules/@csstools/css-parser-algorithms": {
"version": "3.0.5",
- "dev": true,
"funding": [
{
"type": "github",
@@ -2107,6 +2160,7 @@
}
],
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=18"
},
@@ -2116,7 +2170,6 @@
},
"node_modules/@csstools/css-tokenizer": {
"version": "3.0.4",
- "dev": true,
"funding": [
{
"type": "github",
@@ -2128,6 +2181,7 @@
}
],
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -2232,6 +2286,7 @@
"version": "7.1.0",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -2637,6 +2692,7 @@
"version": "7.1.0",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -4315,7 +4371,9 @@
"license": "MIT"
},
"node_modules/@mit-app-inventor/blockly-plugin-workspace-multiselect": {
- "version": "0.1.12",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@mit-app-inventor/blockly-plugin-workspace-multiselect/-/blockly-plugin-workspace-multiselect-1.0.2.tgz",
+ "integrity": "sha512-uC0E9ZqQ+ru8e9BFbLkHylYrXRQ3NFg7zG04W6X8dfMY9+AnMICXY9lnt8xpLd4Tr4osYNsEGHF4W0a82flzaQ==",
"license": "Apache-2.0",
"dependencies": {
"dragselect": "^2.7.4"
@@ -4324,7 +4382,7 @@
"node": ">=8.17.0"
},
"peerDependencies": {
- "blockly": ">=10.4.0 <= 11"
+ "blockly": ">=11 <12"
}
},
"node_modules/@napi-rs/wasm-runtime": {
@@ -5551,13 +5609,6 @@
"dev": true,
"license": "Apache-2.0"
},
- "node_modules/@tootallnate/once": {
- "version": "2.0.0",
- "license": "MIT",
- "engines": {
- "node": ">= 10"
- }
- },
"node_modules/@tsconfig/node22": {
"version": "22.0.2",
"dev": true,
@@ -5613,7 +5664,6 @@
"version": "3.7.7",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@types/eslint": "*",
"@types/estree": "*"
@@ -5713,6 +5763,7 @@
"version": "8.46.1",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@typescript-eslint/scope-manager": "8.46.1",
"@typescript-eslint/types": "8.46.1",
@@ -6788,6 +6839,7 @@
"node_modules/@vue/runtime-core": {
"version": "3.5.22",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@vue/reactivity": "3.5.22",
"@vue/shared": "3.5.22"
@@ -6856,7 +6908,6 @@
"version": "1.14.1",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@webassemblyjs/helper-numbers": "1.13.2",
"@webassemblyjs/helper-wasm-bytecode": "1.13.2"
@@ -6865,26 +6916,22 @@
"node_modules/@webassemblyjs/floating-point-hex-parser": {
"version": "1.13.2",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/@webassemblyjs/helper-api-error": {
"version": "1.13.2",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/@webassemblyjs/helper-buffer": {
"version": "1.14.1",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/@webassemblyjs/helper-numbers": {
"version": "1.13.2",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@webassemblyjs/floating-point-hex-parser": "1.13.2",
"@webassemblyjs/helper-api-error": "1.13.2",
@@ -6894,14 +6941,12 @@
"node_modules/@webassemblyjs/helper-wasm-bytecode": {
"version": "1.13.2",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/@webassemblyjs/helper-wasm-section": {
"version": "1.14.1",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-buffer": "1.14.1",
@@ -6913,7 +6958,6 @@
"version": "1.13.2",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@xtuc/ieee754": "^1.2.0"
}
@@ -6922,7 +6966,6 @@
"version": "1.13.2",
"dev": true,
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"@xtuc/long": "4.2.2"
}
@@ -6930,14 +6973,12 @@
"node_modules/@webassemblyjs/utf8": {
"version": "1.13.2",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/@webassemblyjs/wasm-edit": {
"version": "1.14.1",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-buffer": "1.14.1",
@@ -6953,7 +6994,6 @@
"version": "1.14.1",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-wasm-bytecode": "1.13.2",
@@ -6966,7 +7006,6 @@
"version": "1.14.1",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-buffer": "1.14.1",
@@ -6978,7 +7017,6 @@
"version": "1.14.1",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-api-error": "1.13.2",
@@ -6992,7 +7030,6 @@
"version": "1.14.1",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@xtuc/long": "4.2.2"
@@ -7008,24 +7045,18 @@
"node_modules/@xtuc/ieee754": {
"version": "1.2.0",
"dev": true,
- "license": "BSD-3-Clause",
- "peer": true
+ "license": "BSD-3-Clause"
},
"node_modules/@xtuc/long": {
"version": "4.2.2",
"dev": true,
- "license": "Apache-2.0",
- "peer": true
+ "license": "Apache-2.0"
},
"node_modules/@yarnpkg/lockfile": {
"version": "1.1.0",
"dev": true,
"license": "BSD-2-Clause"
},
- "node_modules/abab": {
- "version": "2.0.6",
- "license": "BSD-3-Clause"
- },
"node_modules/abbrev": {
"version": "2.0.0",
"dev": true,
@@ -7038,6 +7069,7 @@
"version": "8.15.0",
"dev": true,
"license": "MIT",
+ "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -7049,7 +7081,6 @@
"version": "1.0.4",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=10.13.0"
},
@@ -7109,13 +7140,12 @@
}
},
"node_modules/agent-base": {
- "version": "6.0.2",
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
"license": "MIT",
- "dependencies": {
- "debug": "4"
- },
"engines": {
- "node": ">= 6.0.0"
+ "node": ">= 14"
}
},
"node_modules/ajv": {
@@ -7424,10 +7454,16 @@
}
},
"node_modules/blockly": {
- "version": "10.4.3",
+ "version": "11.2.2",
+ "resolved": "https://registry.npmjs.org/blockly/-/blockly-11.2.2.tgz",
+ "integrity": "sha512-YJW9jMz4qoBXzOOUqxWBOHL35QhOOTAg2a6sVAFJh+/uNTXW0z506JS7qkqZI4PQ9fnUhDqmhF8a0qWSTL1tjg==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "jsdom": "22.1.0"
+ "jsdom": "25.0.1"
+ },
+ "engines": {
+ "node": ">=18"
}
},
"node_modules/bn.js": {
@@ -7544,6 +7580,7 @@
}
],
"license": "MIT",
+ "peer": true,
"dependencies": {
"baseline-browser-mapping": "^2.8.25",
"caniuse-lite": "^1.0.30001754",
@@ -7712,7 +7749,6 @@
"version": "1.0.4",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=6.0"
}
@@ -7847,6 +7883,7 @@
"node_modules/codemirror": {
"version": "6.0.2",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@codemirror/autocomplete": "^6.0.0",
"@codemirror/commands": "^6.0.0",
@@ -8190,6 +8227,7 @@
"version": "7.1.0",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -8280,29 +8318,39 @@
}
},
"node_modules/cssstyle": {
- "version": "3.0.0",
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz",
+ "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==",
"license": "MIT",
"dependencies": {
- "rrweb-cssom": "^0.6.0"
+ "@asamuzakjp/css-color": "^3.2.0",
+ "rrweb-cssom": "^0.8.0"
},
"engines": {
- "node": ">=14"
+ "node": ">=18"
}
},
+ "node_modules/cssstyle/node_modules/rrweb-cssom": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz",
+ "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==",
+ "license": "MIT"
+ },
"node_modules/csstype": {
"version": "3.1.3",
"license": "MIT"
},
"node_modules/data-urls": {
- "version": "4.0.0",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz",
+ "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==",
"license": "MIT",
"dependencies": {
- "abab": "^2.0.6",
- "whatwg-mimetype": "^3.0.0",
- "whatwg-url": "^12.0.0"
+ "whatwg-mimetype": "^4.0.0",
+ "whatwg-url": "^14.0.0"
},
"engines": {
- "node": ">=14"
+ "node": ">=18"
}
},
"node_modules/data-view-buffer": {
@@ -8627,16 +8675,6 @@
"ssr-window": "^4.0.0"
}
},
- "node_modules/domexception": {
- "version": "4.0.0",
- "license": "MIT",
- "dependencies": {
- "webidl-conversions": "^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/dragselect": {
"version": "2.7.4",
"license": "MIT"
@@ -8941,6 +8979,7 @@
"version": "0.25.10",
"hasInstallScript": true,
"license": "MIT",
+ "peer": true,
"bin": {
"esbuild": "bin/esbuild"
},
@@ -9023,6 +9062,7 @@
"version": "9.37.0",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.8.0",
"@eslint-community/regexpp": "^4.12.1",
@@ -9485,6 +9525,7 @@
"version": "10.2.0",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
"natural-compare": "^1.4.0",
@@ -10239,8 +10280,7 @@
"node_modules/glob-to-regexp": {
"version": "0.4.1",
"dev": true,
- "license": "BSD-2-Clause",
- "peer": true
+ "license": "BSD-2-Clause"
},
"node_modules/glob/node_modules/brace-expansion": {
"version": "2.0.2",
@@ -10511,36 +10551,41 @@
"license": "Apache-2.0"
},
"node_modules/html-encoding-sniffer": {
- "version": "3.0.0",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz",
+ "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==",
"license": "MIT",
"dependencies": {
- "whatwg-encoding": "^2.0.0"
+ "whatwg-encoding": "^3.1.1"
},
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/http-proxy-agent": {
- "version": "5.0.0",
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
"license": "MIT",
"dependencies": {
- "@tootallnate/once": "2",
- "agent-base": "6",
- "debug": "4"
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
},
"engines": {
- "node": ">= 6"
+ "node": ">= 14"
}
},
"node_modules/https-proxy-agent": {
- "version": "5.0.1",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
"license": "MIT",
"dependencies": {
- "agent-base": "6",
+ "agent-base": "^7.1.2",
"debug": "4"
},
"engines": {
- "node": ">= 6"
+ "node": ">= 14"
}
},
"node_modules/human-signals": {
@@ -10560,6 +10605,8 @@
},
"node_modules/iconv-lite": {
"version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
@@ -11287,7 +11334,6 @@
"version": "27.5.1",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@types/node": "*",
"merge-stream": "^2.0.0",
@@ -11358,38 +11404,38 @@
}
},
"node_modules/jsdom": {
- "version": "22.1.0",
+ "version": "25.0.1",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.1.tgz",
+ "integrity": "sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==",
"license": "MIT",
"dependencies": {
- "abab": "^2.0.6",
- "cssstyle": "^3.0.0",
- "data-urls": "^4.0.0",
+ "cssstyle": "^4.1.0",
+ "data-urls": "^5.0.0",
"decimal.js": "^10.4.3",
- "domexception": "^4.0.0",
"form-data": "^4.0.0",
- "html-encoding-sniffer": "^3.0.0",
- "http-proxy-agent": "^5.0.0",
- "https-proxy-agent": "^5.0.1",
+ "html-encoding-sniffer": "^4.0.0",
+ "http-proxy-agent": "^7.0.2",
+ "https-proxy-agent": "^7.0.5",
"is-potential-custom-element-name": "^1.0.1",
- "nwsapi": "^2.2.4",
+ "nwsapi": "^2.2.12",
"parse5": "^7.1.2",
- "rrweb-cssom": "^0.6.0",
+ "rrweb-cssom": "^0.7.1",
"saxes": "^6.0.0",
"symbol-tree": "^3.2.4",
- "tough-cookie": "^4.1.2",
- "w3c-xmlserializer": "^4.0.0",
+ "tough-cookie": "^5.0.0",
+ "w3c-xmlserializer": "^5.0.0",
"webidl-conversions": "^7.0.0",
- "whatwg-encoding": "^2.0.0",
- "whatwg-mimetype": "^3.0.0",
- "whatwg-url": "^12.0.1",
- "ws": "^8.13.0",
- "xml-name-validator": "^4.0.0"
+ "whatwg-encoding": "^3.1.1",
+ "whatwg-mimetype": "^4.0.0",
+ "whatwg-url": "^14.0.0",
+ "ws": "^8.18.0",
+ "xml-name-validator": "^5.0.0"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
},
"peerDependencies": {
- "canvas": "^2.5.0"
+ "canvas": "^2.11.2"
},
"peerDependenciesMeta": {
"canvas": {
@@ -11397,6 +11443,15 @@
}
}
},
+ "node_modules/jsdom/node_modules/xml-name-validator": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz",
+ "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/jse-eval": {
"version": "1.5.2",
"license": "MIT",
@@ -11407,6 +11462,7 @@
"node_modules/jsep": {
"version": "1.4.0",
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">= 10.16.0"
}
@@ -11482,6 +11538,7 @@
"version": "2.4.1",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"acorn": "^8.5.0",
"eslint-visitor-keys": "^3.0.0",
@@ -11596,7 +11653,8 @@
},
"node_modules/leaflet": {
"version": "1.9.4",
- "license": "BSD-2-Clause"
+ "license": "BSD-2-Clause",
+ "peer": true
},
"node_modules/leaflet-providers": {
"version": "2.0.0",
@@ -11890,7 +11948,6 @@
"version": "4.3.1",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=6.11.5"
},
@@ -11969,7 +12026,6 @@
},
"node_modules/lru-cache": {
"version": "10.4.3",
- "dev": true,
"license": "ISC"
},
"node_modules/m3u8-parser": {
@@ -12040,8 +12096,7 @@
"node_modules/merge-stream": {
"version": "2.0.0",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/merge2": {
"version": "1.4.1",
@@ -12322,8 +12377,7 @@
"node_modules/neo-async": {
"version": "2.6.2",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/node-releases": {
"version": "2.0.27",
@@ -14820,6 +14874,7 @@
"dev": true,
"inBundle": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=12"
},
@@ -15607,6 +15662,7 @@
}
],
"license": "MIT",
+ "peer": true,
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
@@ -16259,6 +16315,7 @@
"version": "7.1.0",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -16543,6 +16600,7 @@
"version": "3.6.2",
"dev": true,
"license": "MIT",
+ "peer": true,
"bin": {
"prettier": "bin/prettier.cjs"
},
@@ -16621,16 +16679,6 @@
"dev": true,
"license": "ISC"
},
- "node_modules/psl": {
- "version": "1.15.0",
- "license": "MIT",
- "dependencies": {
- "punycode": "^2.3.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/lupomontero"
- }
- },
"node_modules/public-encrypt": {
"version": "4.0.3",
"license": "MIT",
@@ -16657,6 +16705,7 @@
"node_modules/qrcode": {
"version": "1.5.4",
"license": "MIT",
+ "peer": true,
"dependencies": {
"dijkstrajs": "^1.0.1",
"pngjs": "^5.0.0",
@@ -16669,10 +16718,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/querystringify": {
- "version": "2.2.0",
- "license": "MIT"
- },
"node_modules/queue-microtask": {
"version": "1.2.3",
"dev": true,
@@ -16918,10 +16963,6 @@
"version": "2.0.0",
"license": "ISC"
},
- "node_modules/requires-port": {
- "version": "1.0.0",
- "license": "MIT"
- },
"node_modules/resolve": {
"version": "1.22.10",
"dev": true,
@@ -17111,6 +17152,7 @@
"version": "1.0.0-beta.42",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@oxc-project/types": "=0.94.0",
"@rolldown/pluginutils": "1.0.0-beta.42",
@@ -17148,6 +17190,7 @@
"version": "4.52.4",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@types/estree": "1.0.8"
},
@@ -17411,7 +17454,9 @@
}
},
"node_modules/rrweb-cssom": {
- "version": "0.6.0",
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz",
+ "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==",
"license": "MIT"
},
"node_modules/run-applescript": {
@@ -17545,6 +17590,8 @@
},
"node_modules/safer-buffer": {
"version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"license": "MIT"
},
"node_modules/sax": {
@@ -17584,6 +17631,7 @@
"version": "8.17.1",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.3",
"fast-uri": "^3.0.1",
@@ -18338,6 +18386,7 @@
"version": "0.64.0",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@adobe/css-tools": "~4.3.3",
"debug": "^4.3.2",
@@ -18406,7 +18455,6 @@
"version": "8.1.1",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -18582,7 +18630,6 @@
"version": "5.3.14",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.25",
"jest-worker": "^27.4.5",
@@ -18670,6 +18717,24 @@
"node": ">=14.0.0"
}
},
+ "node_modules/tldts": {
+ "version": "6.1.86",
+ "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz",
+ "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==",
+ "license": "MIT",
+ "dependencies": {
+ "tldts-core": "^6.1.86"
+ },
+ "bin": {
+ "tldts": "bin/cli.js"
+ }
+ },
+ "node_modules/tldts-core": {
+ "version": "6.1.86",
+ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz",
+ "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==",
+ "license": "MIT"
+ },
"node_modules/tmp": {
"version": "0.2.5",
"dev": true,
@@ -18710,33 +18775,27 @@
}
},
"node_modules/tough-cookie": {
- "version": "4.1.4",
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz",
+ "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==",
"license": "BSD-3-Clause",
"dependencies": {
- "psl": "^1.1.33",
- "punycode": "^2.1.1",
- "universalify": "^0.2.0",
- "url-parse": "^1.5.3"
+ "tldts": "^6.1.32"
},
"engines": {
- "node": ">=6"
- }
- },
- "node_modules/tough-cookie/node_modules/universalify": {
- "version": "0.2.0",
- "license": "MIT",
- "engines": {
- "node": ">= 4.0.0"
+ "node": ">=16"
}
},
"node_modules/tr46": {
- "version": "4.1.1",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz",
+ "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==",
"license": "MIT",
"dependencies": {
- "punycode": "^2.3.0"
+ "punycode": "^2.3.1"
},
"engines": {
- "node": ">=14"
+ "node": ">=18"
}
},
"node_modules/ts-api-utils": {
@@ -18955,6 +19014,7 @@
"version": "5.8.3",
"devOptional": true,
"license": "Apache-2.0",
+ "peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -19205,14 +19265,6 @@
"punycode": "^2.1.0"
}
},
- "node_modules/url-parse": {
- "version": "1.5.10",
- "license": "MIT",
- "dependencies": {
- "querystringify": "^2.1.1",
- "requires-port": "^1.0.0"
- }
- },
"node_modules/url-toolkit": {
"version": "2.2.5",
"license": "Apache-2.0"
@@ -19267,6 +19319,7 @@
"version": "7.1.16",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@oxc-project/runtime": "0.92.0",
"fdir": "^6.5.0",
@@ -19679,6 +19732,7 @@
"node_modules/vue": {
"version": "3.5.22",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@vue/compiler-dom": "3.5.22",
"@vue/compiler-sfc": "3.5.22",
@@ -19783,6 +19837,7 @@
"version": "10.2.0",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"debug": "^4.4.0",
"eslint-scope": "^8.2.0",
@@ -19938,20 +19993,30 @@
"license": "MIT"
},
"node_modules/w3c-xmlserializer": {
- "version": "4.0.0",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz",
+ "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==",
"license": "MIT",
"dependencies": {
- "xml-name-validator": "^4.0.0"
+ "xml-name-validator": "^5.0.0"
},
"engines": {
- "node": ">=14"
+ "node": ">=18"
+ }
+ },
+ "node_modules/w3c-xmlserializer/node_modules/xml-name-validator": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz",
+ "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18"
}
},
"node_modules/watchpack": {
"version": "2.4.4",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.1.2"
@@ -19975,6 +20040,8 @@
},
"node_modules/webidl-conversions": {
"version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
"license": "BSD-2-Clause",
"engines": {
"node": ">=12"
@@ -20032,7 +20099,6 @@
"version": "3.3.3",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=10.13.0"
}
@@ -20046,7 +20112,6 @@
"version": "5.1.1",
"dev": true,
"license": "BSD-2-Clause",
- "peer": true,
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^4.1.1"
@@ -20059,37 +20124,42 @@
"version": "4.3.0",
"dev": true,
"license": "BSD-2-Clause",
- "peer": true,
"engines": {
"node": ">=4.0"
}
},
"node_modules/whatwg-encoding": {
- "version": "2.0.0",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
+ "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
"license": "MIT",
"dependencies": {
"iconv-lite": "0.6.3"
},
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/whatwg-mimetype": {
- "version": "3.0.0",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
+ "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
"license": "MIT",
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/whatwg-url": {
- "version": "12.0.1",
+ "version": "14.2.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz",
+ "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==",
"license": "MIT",
"dependencies": {
- "tr46": "^4.1.1",
+ "tr46": "^5.1.0",
"webidl-conversions": "^7.0.0"
},
"engines": {
- "node": ">=14"
+ "node": ">=18"
}
},
"node_modules/which": {
@@ -20376,6 +20446,7 @@
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.3",
"fast-uri": "^3.0.1",
@@ -20542,6 +20613,7 @@
"integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"bin": {
"rollup": "dist/bin/rollup"
},
@@ -20865,6 +20937,7 @@
},
"node_modules/xml-name-validator": {
"version": "4.0.0",
+ "dev": true,
"license": "Apache-2.0",
"engines": {
"node": ">=12"
@@ -20900,6 +20973,7 @@
"version": "1.3.0",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"eslint-visitor-keys": "^3.0.0",
"yaml": "^2.0.0"
diff --git a/bundles/org.openhab.ui/web/package.json b/bundles/org.openhab.ui/web/package.json
index 0a10f8443c..a4a9217326 100644
--- a/bundles/org.openhab.ui/web/package.json
+++ b/bundles/org.openhab.ui/web/package.json
@@ -58,12 +58,14 @@
"Samsung >= 5"
],
"dependencies": {
- "@blockly/field-slider": "^6.1.4",
- "@blockly/plugin-typed-variable-modal": "^7.0.15",
- "@blockly/plugin-workspace-search": "^8.1.2",
- "@blockly/shadow-block-converter": "^5.0.0",
- "@blockly/theme-dark": "^6.0.5",
- "@blockly/zoom-to-fit": "^5.0.11",
+ "@blockly/field-colour": "^5.0.19",
+ "@blockly/field-multilineinput": "^5.0.17",
+ "@blockly/field-slider": "^7.0.16",
+ "@blockly/plugin-typed-variable-modal": "^8.0.16",
+ "@blockly/plugin-workspace-search": "^9.1.10",
+ "@blockly/shadow-block-converter": "^6.0.17",
+ "@blockly/theme-dark": "^7.0.12",
+ "@blockly/zoom-to-fit": "^6.0.16",
"@codemirror/autocomplete": "^6.18.6",
"@codemirror/commands": "^6.8.1",
"@codemirror/lang-css": "^6.3.1",
@@ -82,11 +84,11 @@
"@jsep-plugin/object": "^1.2.1",
"@jsep-plugin/regex": "^1.0.3",
"@jsep-plugin/template": "^1.0.4",
- "@mit-app-inventor/blockly-plugin-workspace-multiselect": "^0.1.12",
+ "@mit-app-inventor/blockly-plugin-workspace-multiselect": "^1.0.2",
"@replit/codemirror-indentation-markers": "^6.5.3",
"@uiw/codemirror-theme-gruvbox-dark": "^4.24.2",
"@vue-leaflet/vue-leaflet": "^0.10.1",
- "blockly": "^10.4.2",
+ "blockly": "^11.2.2",
"codemirror": "^6.0.2",
"cronstrue": "^2.50.0",
"crypto-browserify": "^3.12.0",
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/_tmp/blocks-exec.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/_tmp/blocks-exec.js
index 9340455206..1b37679a58 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/_tmp/blocks-exec.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/_tmp/blocks-exec.js
@@ -1,5 +1,6 @@
-import Blockly from 'blockly'
-import { javascriptGenerator } from 'blockly/javascript.js'
+import * as Blockly from 'blockly'
+import { javascriptGenerator } from 'blockly/javascript'
+import { valueToCode } from '@/assets/definitions/blockly/utils.js'
export default function defineOHBlocks_Exec (f7) {
Blockly.Blocks['oh_exec'] = {
@@ -24,7 +25,7 @@ export default function defineOHBlocks_Exec (f7) {
javascriptGenerator.forBlock['oh_exec'] = function (block) {
let runCommand = block.getFieldValue('execCommand')
- const itemName = javascriptGenerator.valueToCode(block, 'sendTo', javascriptGenerator.ORDER_ATOMIC)
+ const itemName = valueToCode(block, 'sendTo', javascriptGenerator.ORDER_ATOMIC)
let code = 'var exec = Java.type("org.openhab.core.model.script.actions.Exec");\n'
code += 'var duration = Java.type("java.time.Duration");\n'
code += 'var results = exec.executeCommandLine(duration.ofSeconds(1), "' + runCommand + '", "")\n'
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-audio.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-audio.js
index 300f8aa49a..5307262c7d 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-audio.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-audio.js
@@ -10,9 +10,10 @@
* supports jsscripting
*/
-import Blockly from 'blockly'
-import { javascriptGenerator } from 'blockly/javascript.js'
+import * as Blockly from 'blockly'
+import { javascriptGenerator } from 'blockly/javascript'
import { FieldSlider } from '@blockly/field-slider'
+import { valueToCode } from '@/assets/definitions/blockly/utils.js'
export default function (f7, sinks, voices) {
Blockly.Blocks['oh_volumeslider'] = {
@@ -57,8 +58,8 @@ export default function (f7, sinks, voices) {
* Code part
*/
javascriptGenerator.forBlock['oh_playmedia_sink'] = function (block) {
- let fileName = javascriptGenerator.valueToCode(block, 'fileName', javascriptGenerator.ORDER_ATOMIC)
- let sinkName = javascriptGenerator.valueToCode(block, 'sinkName', javascriptGenerator.ORDER_ATOMIC).replace('(', '').replace(/[()]/g, '')
+ let fileName = valueToCode(block, 'fileName', javascriptGenerator.ORDER_ATOMIC)
+ let sinkName = valueToCode(block, 'sinkName', javascriptGenerator.ORDER_ATOMIC).replace('(', '').replace(/[()]/g, '')
return `actions.Audio.playSound(${sinkName}, ${fileName});\n`
}
@@ -93,9 +94,9 @@ export default function (f7, sinks, voices) {
* Code part
*/
javascriptGenerator.forBlock['oh_playmedia_sink_volume'] = function (block) {
- let fileName = javascriptGenerator.valueToCode(block, 'fileName', javascriptGenerator.ORDER_ATOMIC)
- let sinkName = javascriptGenerator.valueToCode(block, 'sinkName', javascriptGenerator.ORDER_ATOMIC).replace('(', '').replace(/[()]/g, '')
- let volume = javascriptGenerator.valueToCode(block, 'volume', javascriptGenerator.ORDER_ATOMIC).replace(/'/g, '')
+ let fileName = valueToCode(block, 'fileName', javascriptGenerator.ORDER_ATOMIC)
+ let sinkName = valueToCode(block, 'sinkName', javascriptGenerator.ORDER_ATOMIC).replace('(', '').replace(/[()]/g, '')
+ let volume = valueToCode(block, 'volume', javascriptGenerator.ORDER_ATOMIC).replace(/'/g, '')
return `actions.Audio.playSound(${sinkName}, ${fileName}, (${volume}/100));\n`
}
@@ -126,8 +127,8 @@ export default function (f7, sinks, voices) {
* Blockly part
*/
javascriptGenerator.forBlock['oh_playstream_sink'] = function (block) {
- let url = javascriptGenerator.valueToCode(block, 'url', javascriptGenerator.ORDER_ATOMIC)
- let sinkName = javascriptGenerator.valueToCode(block, 'sinkName', javascriptGenerator.ORDER_ATOMIC).replace('(', '').replace(/[()]/g, '')
+ let url = valueToCode(block, 'url', javascriptGenerator.ORDER_ATOMIC)
+ let sinkName = valueToCode(block, 'sinkName', javascriptGenerator.ORDER_ATOMIC).replace('(', '').replace(/[()]/g, '')
return `actions.Audio.playStream(${sinkName}, ${url});\n`
}
@@ -156,7 +157,7 @@ export default function (f7, sinks, voices) {
*/
javascriptGenerator.forBlock['oh_stopstream_sink'] = function (block) {
let url = block.getFieldValue('url')
- let sinkName = javascriptGenerator.valueToCode(block, 'sinkName', javascriptGenerator.ORDER_ATOMIC).replace('(', '').replace(/[()]/g, '')
+ let sinkName = valueToCode(block, 'sinkName', javascriptGenerator.ORDER_ATOMIC).replace('(', '').replace(/[()]/g, '')
return `actions.Audio.playStream(${sinkName}, null);\n`
}
@@ -189,9 +190,9 @@ export default function (f7, sinks, voices) {
* Code part
*/
javascriptGenerator.forBlock['oh_say'] = function (block) {
- const textToSay = javascriptGenerator.valueToCode(block, 'textToSay', javascriptGenerator.ORDER_ATOMIC)
- const voiceName = javascriptGenerator.valueToCode(block, 'voice', javascriptGenerator.ORDER_ATOMIC).replace('(', '').replace(/[()]/g, '')
- const deviceSink = javascriptGenerator.valueToCode(block, 'deviceSink', javascriptGenerator.ORDER_ATOMIC).replace('(', '').replace(/[()]/g, '')
+ const textToSay = valueToCode(block, 'textToSay', javascriptGenerator.ORDER_ATOMIC)
+ const voiceName = valueToCode(block, 'voice', javascriptGenerator.ORDER_ATOMIC).replace('(', '').replace(/[()]/g, '')
+ const deviceSink = valueToCode(block, 'deviceSink', javascriptGenerator.ORDER_ATOMIC).replace('(', '').replace(/[()]/g, '')
return `actions.Voice.say(${textToSay}, ${voiceName}, ${deviceSink});\n`
}
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-color.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-color.js
index 5b54731e5a..572a5d2228 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-color.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-color.js
@@ -3,9 +3,9 @@
* supports jsscripting
*/
-import Blockly from 'blockly'
-import { javascriptGenerator } from 'blockly/javascript.js'
-import { blockGetCheckedInputType } from '@/assets/definitions/blockly/utils.js'
+import * as Blockly from 'blockly'
+import { javascriptGenerator } from 'blockly/javascript'
+import { blockGetCheckedInputType, valueToCode } from '@/assets/definitions/blockly/utils.js'
export default function (f7) {
/*
@@ -31,7 +31,7 @@ export default function (f7) {
*/
javascriptGenerator.forBlock['oh_color_to_hsb'] = function (block) {
let conversionFunction = addConvertColourHexToHSB()
- const hexColor = javascriptGenerator.valueToCode(block, 'hexColor', javascriptGenerator.ORDER_ATOMIC)
+ const hexColor = valueToCode(block, 'hexColor', javascriptGenerator.ORDER_ATOMIC)
let code = `${conversionFunction}(${hexColor})`
return [code, 0]
}
@@ -65,7 +65,7 @@ export default function (f7) {
}
javascriptGenerator.forBlock['oh_color_item'] = function (block) {
- const theItem = javascriptGenerator.valueToCode(block, 'item', javascriptGenerator.ORDER_ATOMIC)
+ const theItem = valueToCode(block, 'item', javascriptGenerator.ORDER_ATOMIC)
const inputType = blockGetCheckedInputType(block, 'item')
let attributeName = block.getFieldValue('attributeName')
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-dateoffsets.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-dateoffsets.js
index 84fec4ea85..b71f924f28 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-dateoffsets.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-dateoffsets.js
@@ -1,10 +1,10 @@
/**
* supports jsscripting
*/
-import Blockly from 'blockly'
-import { javascriptGenerator } from 'blockly/javascript.js'
+import * as Blockly from 'blockly'
+import { javascriptGenerator } from 'blockly/javascript'
import { FieldDatePicker } from './fields/date-field.js'
-import { addDateComparisonSupport } from './utils.js'
+import { addDateComparisonSupport, valueToCode } from './utils.js'
export default function (f7) {
/*
@@ -55,7 +55,7 @@ export default function (f7) {
* Code part
*/
javascriptGenerator.forBlock['oh_dayoffset'] = function (block) {
- let offsetValue = javascriptGenerator.valueToCode(block, 'offset', javascriptGenerator.ORDER_ATOMIC)
+ let offsetValue = valueToCode(block, 'offset', javascriptGenerator.ORDER_ATOMIC)
let code = `${offsetValue}`
return [code, javascriptGenerator.ORDER_NONE]
}
@@ -112,7 +112,7 @@ export default function (f7) {
* Code part
*/
javascriptGenerator.forBlock['oh_zdt_plusminus'] = function (block) {
- const offsetValue = javascriptGenerator.valueToCode(block, 'offset', javascriptGenerator.ORDER_ATOMIC)
+ const offsetValue = valueToCode(block, 'offset', javascriptGenerator.ORDER_ATOMIC)
const plusMinus = block.getFieldValue('plusminus')
const period = block.getFieldValue('period')
@@ -159,12 +159,12 @@ export default function (f7) {
* Code part
*/
javascriptGenerator.forBlock['oh_zdt_create'] = function (block) {
- const year = javascriptGenerator.valueToCode(block, 'year', javascriptGenerator.ORDER_ATOMIC)
- const month = javascriptGenerator.valueToCode(block, 'month', javascriptGenerator.ORDER_ATOMIC)
- const day = javascriptGenerator.valueToCode(block, 'day', javascriptGenerator.ORDER_ATOMIC)
- const hour = javascriptGenerator.valueToCode(block, 'hour', javascriptGenerator.ORDER_ATOMIC)
- const minute = javascriptGenerator.valueToCode(block, 'minute', javascriptGenerator.ORDER_ATOMIC)
- const second = javascriptGenerator.valueToCode(block, 'second', javascriptGenerator.ORDER_ATOMIC)
+ const year = valueToCode(block, 'year', javascriptGenerator.ORDER_ATOMIC)
+ const month = valueToCode(block, 'month', javascriptGenerator.ORDER_ATOMIC)
+ const day = valueToCode(block, 'day', javascriptGenerator.ORDER_ATOMIC)
+ const hour = valueToCode(block, 'hour', javascriptGenerator.ORDER_ATOMIC)
+ const minute = valueToCode(block, 'minute', javascriptGenerator.ORDER_ATOMIC)
+ const second = valueToCode(block, 'second', javascriptGenerator.ORDER_ATOMIC)
const code = `time.ZonedDateTime.now().withYear(${year}).withMonth(${month}).withDayOfMonth(${day}).withHour(${hour}).withMinute(${minute}).withSecond(${second}).withNano(0)`
return [code, javascriptGenerator.ORDER_ATOMIC]
@@ -233,7 +233,7 @@ export default function (f7) {
* Code part
*/
javascriptGenerator.forBlock['oh_zdt_fromText'] = function (block) {
- const day = javascriptGenerator.valueToCode(block, 'day', javascriptGenerator.ORDER_ATOMIC)
+ const day = valueToCode(block, 'day', javascriptGenerator.ORDER_ATOMIC)
return [`time.toZDT(${day})`, javascriptGenerator.ORDER_NONE]
}
@@ -259,7 +259,7 @@ export default function (f7) {
* Code part
*/
javascriptGenerator.forBlock['oh_zdt_fromItem'] = function (block) {
- const itemName = javascriptGenerator.valueToCode(block, 'itemName', javascriptGenerator.ORDER_ATOMIC)
+ const itemName = valueToCode(block, 'itemName', javascriptGenerator.ORDER_ATOMIC)
return [`time.toZDT(items.getItem(${itemName}))`, javascriptGenerator.ORDER_NONE]
}
@@ -496,7 +496,7 @@ export default function (f7) {
for (i = 0; i < this.itemCount_; i++) {
if (!this.getInput('ADD' + i)) {
let input = this.appendValueInput('ADD' + i)
- .setAlign(Blockly.ALIGN_RIGHT)
+ .setAlign(Blockly.inputs.Align.RIGHT)
.setCheck('zdtTemporalUnit')
if (i === 0) {
input.appendField(new Blockly.FieldDropdown([['set', 'with'], ['add', 'plus'], ['subtract', 'minus']]), 'operation')
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-dicts.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-dicts.js
index 148f57d7cf..99bc678db1 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-dicts.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-dicts.js
@@ -2,9 +2,13 @@
* supports jsscripting
*/
-import Blockly from 'blockly'
-import { javascriptGenerator } from 'blockly/javascript.js'
-import { blockGetCheckedInputType } from '@/assets/definitions/blockly/utils.js'
+import * as Blockly from 'blockly'
+import { javascriptGenerator } from 'blockly/javascript'
+import {
+ blockGetCheckedInputType,
+ statementToCode,
+ valueToCode
+} from '@/assets/definitions/blockly/utils.js'
export default function (f7) {
Blockly.Blocks['dicts_create_with'] = {
@@ -121,7 +125,7 @@ export default function (f7) {
for (i = 0; i < this.itemCount_; i++) {
if (!this.getInput('ADD' + i)) {
let input = this.appendValueInput('ADD' + i)
- .setAlign(Blockly.ALIGN_RIGHT)
+ .setAlign(Blockly.inputs.Align.RIGHT)
if (i === 0) {
input.appendField('dictionary of')
}
@@ -172,7 +176,7 @@ export default function (f7) {
let elements = new Array(block.itemCount_)
for (let i = 0; i < block.itemCount_; i++) {
elements[i] = '\'' + block.getFieldValue('KEY' + i) + '\': '
- elements[i] += javascriptGenerator.valueToCode(block, 'ADD' + i,
+ elements[i] += valueToCode(block, 'ADD' + i,
javascriptGenerator.ORDER_NONE) || 'null'
}
let code = '{' + elements.join(', ') + '}'
@@ -205,9 +209,9 @@ export default function (f7) {
* Code part
*/
javascriptGenerator.forBlock['dicts_get'] = function (block) {
- const key = javascriptGenerator.valueToCode(block, 'key', javascriptGenerator.ORDER_ATOMIC)
+ const key = valueToCode(block, 'key', javascriptGenerator.ORDER_ATOMIC)
// note: even though the dict can be directly used without a variable, we need to keep the variable name as "varName" for backwards compatibility
- let varName = javascriptGenerator.valueToCode(block, 'varName', javascriptGenerator.ORDER_ATOMIC)
+ let varName = valueToCode(block, 'varName', javascriptGenerator.ORDER_ATOMIC)
const varNameType = blockGetCheckedInputType(block, 'varName')
if (varNameType !== 'Dictionary') {
varName = varName.replace(/'/g, '')
@@ -238,12 +242,12 @@ export default function (f7) {
}
javascriptGenerator.forBlock['dicts_set'] = function (block) {
- const dict = javascriptGenerator.valueToCode(block, 'dictionary', javascriptGenerator.ORDER_ATOMIC).replace(/'/g, '')
- const key = javascriptGenerator.valueToCode(block, 'key', javascriptGenerator.ORDER_ATOMIC)
+ const dict = valueToCode(block, 'dictionary', javascriptGenerator.ORDER_ATOMIC).replace(/'/g, '')
+ const key = valueToCode(block, 'key', javascriptGenerator.ORDER_ATOMIC)
if (dict === '' || key === '\'\'') {
throw new Error('dictionary and key name need to be provided')
}
- const value = javascriptGenerator.valueToCode(block, 'value', javascriptGenerator.ORDER_ATOMIC).replace(/'/g, '')
+ const value = valueToCode(block, 'value', javascriptGenerator.ORDER_ATOMIC).replace(/'/g, '')
let code = `${dict}[${key}] = '${value}';\n`
return code
}
@@ -282,8 +286,8 @@ export default function (f7) {
*/
javascriptGenerator.forBlock['dicts_for'] = function (block) {
const loopVar = block.getField('loopVar').getVariable().name
- const dict = javascriptGenerator.valueToCode(block, 'dict', javascriptGenerator.ORDER_ATOMIC)
- const dictForCode = javascriptGenerator.statementToCode(block, 'dictForCode')
+ const dict = valueToCode(block, 'dict', javascriptGenerator.ORDER_ATOMIC)
+ const dictForCode = statementToCode(block, 'dictForCode')
const dictCheck = block.getInput('dict').connection.targetBlock().outputConnection.getCheck()
const dictType = (dictCheck) ? block.getInput('dict').connection.targetBlock().outputConnection.getCheck()[0] : ''
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-ephemeris.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-ephemeris.js
index 1d16037941..c03b91cd27 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-ephemeris.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-ephemeris.js
@@ -6,8 +6,9 @@
* See usage discussion here: https://community.openhab.org/t/wip-ephemeris-documentation/84536
* supports jsscripting
*/
-import Blockly from 'blockly'
-import { javascriptGenerator } from 'blockly/javascript.js'
+import * as Blockly from 'blockly'
+import { javascriptGenerator } from 'blockly/javascript'
+import { valueToCode } from '@/assets/definitions/blockly/utils.js'
export default function (f7) {
/*
@@ -38,7 +39,7 @@ export default function (f7) {
* Code part
*/
javascriptGenerator.forBlock['oh_ephemeris_check'] = function (block) {
- const dayInfo = javascriptGenerator.valueToCode(block, 'dayInfo', javascriptGenerator.ORDER_NONE)
+ const dayInfo = valueToCode(block, 'dayInfo', javascriptGenerator.ORDER_NONE)
const checkType = block.getFieldValue('checkType')
let code = ''
@@ -79,7 +80,7 @@ export default function (f7) {
* Code part
*/
javascriptGenerator.forBlock['oh_ephemeris_getHolidayName'] = function (block) {
- const dayInfo = javascriptGenerator.valueToCode(block, 'dayInfo', javascriptGenerator.ORDER_NONE)
+ const dayInfo = valueToCode(block, 'dayInfo', javascriptGenerator.ORDER_NONE)
return [`actions.Ephemeris.getBankHolidayName(${dayInfo})`, javascriptGenerator.ORDER_NONE]
}
@@ -105,7 +106,7 @@ export default function (f7) {
* Code part
*/
javascriptGenerator.forBlock['oh_ephemeris_getDaysUntilHoliday'] = function (block) {
- const holidayName = javascriptGenerator.valueToCode(block, 'holidayName', javascriptGenerator.ORDER_NONE)
+ const holidayName = valueToCode(block, 'holidayName', javascriptGenerator.ORDER_NONE)
return [`actions.Ephemeris.getDaysUntil(${holidayName})`, javascriptGenerator.ORDER_NONE]
}
}
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-eventbus.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-eventbus.js
index fe9ec4a139..62c07fef49 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-eventbus.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-eventbus.js
@@ -3,9 +3,9 @@
* supports jsscripting
*/
-import Blockly from 'blockly'
-import { javascriptGenerator } from 'blockly/javascript.js'
-import { blockGetCheckedInputType } from './utils.js'
+import * as Blockly from 'blockly'
+import { javascriptGenerator } from 'blockly/javascript'
+import { blockGetCheckedInputType, valueToCode } from './utils.js'
export default function (f7) {
/*
@@ -19,7 +19,7 @@ export default function (f7) {
.appendField(new Blockly.FieldDropdown([['send command', 'sendCommand'], ['post update', 'postUpdate']]), 'eventType')
this.appendValueInput('itemName')
.appendField('to')
- .setAlign(Blockly.ALIGN_RIGHT)
+ .setAlign(Blockly.inputs.Align.RIGHT)
.setCheck(['String', 'oh_item', 'oh_itemtype'])
this.setInputsInline(true)
this.setPreviousStatement(true, null)
@@ -32,8 +32,8 @@ export default function (f7) {
javascriptGenerator.forBlock['oh_event'] = function (block) {
const eventType = block.getFieldValue('eventType')
- const itemName = javascriptGenerator.valueToCode(block, 'itemName', javascriptGenerator.ORDER_ATOMIC)
- const value = javascriptGenerator.valueToCode(block, 'value', javascriptGenerator.ORDER_ATOMIC)
+ const itemName = valueToCode(block, 'itemName', javascriptGenerator.ORDER_ATOMIC)
+ const value = valueToCode(block, 'value', javascriptGenerator.ORDER_ATOMIC)
const inputType = blockGetCheckedInputType(block, 'itemName')
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-http.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-http.js
index b065fb01eb..aa0bd579f3 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-http.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-http.js
@@ -2,8 +2,9 @@
* Adds HTTP blocks
*/
-import Blockly from 'blockly'
-import { javascriptGenerator } from 'blockly/javascript.js'
+import * as Blockly from 'blockly'
+import { javascriptGenerator } from 'blockly/javascript'
+import { valueToCode } from '@/assets/definitions/blockly/utils.js'
export default function (f7) {
const timeoutImage = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAhCAYAAAC4JqlRAAAACXBIWXMAABYlAAAWJQFJUiTwAAAK1UlEQVRYhcWYaXAT5xnH/3voXMmyJFs+ZCPJ4LsIm8MMbQiEhGAYjiFpDuIpR5qSQkiYtGnaJCSQZNpMCk1MScKRcAYYmhQwhgEDtTmSYohxIECNDYlt+TaWJaNrpdXuvv0gW1yh0295ZvbLM7P7/PY5/s+7SxFC8FMa/ZNGB8ACQGqq5Q4nz/NwOByJycnJyS6X63p+fj4aGhpQWFgIlmULJkyYMHXatOljCwoKrDRNM21tbX2nTp28UlVVVR0KBb9qaroGq9WKhIQE9Pe7wfM8vF4vQqEQKIqKx2lv7wRFCMHEiQ/EnRQFNDe3YN26dbtLS6c/UlhYYMnOHkHPmjX7zUWLFr3CcTodAHR1dd1oaWm+IQiCZLPZTTabLZNhGADA/v379xw6dPCPtbW1bTodB5Zl4Xa7fxSABYCMDOtt70+BEKCkZHzJ8ePH9k+dOnXOxo2bKgBg796967Zs2bwtKcn8rVqtRkPDf+D3BzF69GjEoDrtpaUzHl+wYP4f5s6d69q/f9+Ot99etaCrqwsJCQk/WgKKEIKZM2fEHaIoIhzmsXv3P1pkWVampaUnfvDBmpW7du1ck5aWhqamJkybVgq73Y76+jr4fAGMHz8ekUgEFRX7YDKZwfMhjBkz7onPPtv8hSRJ0pQpk7NPn/66xWbLgCTJ92bA5XLFnR5PP/LyCuzp6el2AFizZvWy8vIPPw4Gg4hGo6AoCrIs4/TpU7hy5TK0Wi0IkZCTkwuzORkOhwMeTz8OHar8sqjISX3yyfqqU6e+ai4tfXTC0aPHz9rtmRBFKR6PBgBZluMXw7AIBgOhmprqL1pbWxqXLn3hb52d3WTt2rWbm5qugaIoHDxYicOHq0BRDJOYaGSvX7+GmppqhEJByLIMlmWRnZ0DrVaLKVMmlx4/fnxvVdWx2qysrPTW1nYAFCRJulUCozERFAXQNA1JksCyLLKyspCXl4/MzExzIOAf39/viRw//q/q9PQ0pKWloqWlFStWrFg9alRR6eOPzx2ZnGwBIMNiSUUkEsHAgBcmkwn19fXo6urB+fN1Z5zOUcUqlVJjNpuh1WrgcrXHMqDTcdBoNGBZFizLguM4ZGZmQqfTIRAI9FdUVBw+cuRwNSEESUlm5ORkw2YbBofDkZKRkTHcYEiE0WiE2ZwMQoCBgQEolUp0dnaCEAKO0+Khhyb/XKFQqHfu3Lne7e4HyzK3SpCamgKHwwGapnG7MrIsC61Wi5SUFOh0ephMRmRkWOHxeBAOh+H3+4N+v98rSRJEUYQoiohGBSQmJqKvrw/d3d3QaDSwWtPh9wfx6quvPPvMM2W/zcvLUQWD/C0AiqKgVCrBsgrIsgxCCFQqdXwqZFlGOByGw2GHVsvd0UR3myzLUCqVMBqNsFgsMJvNMBgMKCoaha1bt26VJBErV65a4/P5bgEQQgabgoBhGCiVSnR3d+Hs2TM4f74ODocDNpsNra2tCAaDUCqV9wWICQ0FiqLh9Xrh9Q5gYGAAPB+C2+3B5s2bP3z66XnLUlIsNDAoxUNGCAFN02BZFp2dHWAYBgzDQqfTITHRgJaWZnR0dCAjIwO3Cdo9JggR6HQ65OcXDELF/AaDARcvXtgB4OXZs+dMBXCUHUrb0FgMgahUKlAUBZqmIQgCwuEwGIYBz/MIBAIghEAUJV4URZGmaXAcd0f/xO6LQJLkuPwajUY0N7dclGUZs2fPeSQO4Ha7kZBggCAIIIRAEATQNAWfz4dwOAKDwTCYTi+GBCkaFUHTdJJer+c8Hg8EQYBCobijF0wmI5RKZVz9ZFmG1zuAjo4Oobi42BEvwYYNmz60WCwTy8rKpvT13fAlJycjEAhi1aq335s3r2w5x3EUIURx8+ZNRqPREJVKRQWDQXAcBwB4+OEpc7Zt23bAbnfEASRJglqtuq2/AEJk+Hw34fV6AykpKYlxgOnTZ4wFMMbpHJnc1tbmkyQRvb09aGi4WldRsX+9x9NPQiFeyszMjAwMDIS+//57UlJSIhUUFD5AiJx24cKFSxzHIRoVBt+UgJBY6iUpprBDGaAoCgqFQgmQCDCohPX158vHjBm7fMmS58dfunTpG5ZV4OLFenCcHuEwD683NjLZ2cPh891Eb68bTz31JARBQGdnBy5d+g46nR6EEFAUhVAoiGHDbMjNzUM4zMezIooiQiEeR48eI11dnVtyc/N+TQNAdXX1GQAoKiqeEI2KsNlsyM8vhMGQgOHDs5GVZYPZbITNZoPd7oBSySI1NQ1GoxEmkym+almWBSEEBkMirNYM8HwI0agYv3w+PywWS4per8fp01/VAYM6UFGx/0hbW1v7uHHjnrhy5QquXm1AIOCHWq0GcL8zY2xkaZoeHDUKoigiGAwiIcEAn+8murt74Ha74Xa70d/fj6amJhQUFDwKAPv2/bMiDlBXd96/deuWd0ePHvMLgyEBHo8HAAW1WgtCCGSZQBTF+4DEgvM8D5qm4XQ6oVQqEAqFwLIMaJoCTVNgGBqBQAALFy56raGh4XJNzYmeOIBWq8WmTRs/BYA33ljxusvlglqtRigUHHwQC41GA1kmCIfDEAQRHMdBq9VCoVAgHI5Aq9Vi0qTJKCoqhlqthkKhgM/nhyAIiEajaG11Yfz4kpScnJz8t95a8ZshyaAIIbDbh8HlasfGjRv+snjx868lJiZQDMPCYEhAJBJBdvYI6HR6CIKAlJRUnDt3DtnZ2aAoIBAIoKOjHenp6cjJycfNmwMYGPCC4zicPHkKSqUCNE2jt7cPjY1XG00ms95isVjT01PQ2dkTywDLMkhLS8GyZS+8DoBUVh485vF40dXVjWHDbEhIMECWY3vCarXCbnfghx9+QH19PZqaGmE0miBJMiKRMCiKQjQaBcOwyM3NgVarQW9vH5Yvf3F+bm5e7qxZMx9SKhXxZUcDQDAYAk3TiEYljBlTnPfgg5Omrl1b/l4kIsBiSY6flggh4HkePB8Cx3FQq9VgGAaiKOLuD5xIJAydTg+e5zF79qyJ5eV/375y5Vu/P3fum2tJSWaEQretYyCmXOnpqfj224vXFi6c/+RLLy3/0/bt2965dOk7uN1uDB25724+6ke2EsMwEAQBtbVn8Nhjv5x04EDl6T179ux45513P7BYkkFRVPx58XU8JJkWSxK2b//8y8WLn5sxf/6CNw8dOnJOrVYbr15tgN/vv29QAPHFdf36dXi9XpSXr127fv2Gk7t27Vw9b968BSqVEjQdK5EoRm814e1fRoQQKJUKiKIEp9OZu337jtOpqWmWLVs2f1RZeeDPCoWi5+uv/w1RFBEI+CAIUZhMJtA0hZycPJjNZjY7e8Rz77+/upymadXSpUt+VVl5YKder0d3d/egtsSsp+fGvQCyLEOhYJGfX4hr1xqh1xtQVla27OWXf/dXjUajaW9v666tra26fPlyXVNTY4cgCJLDkZU0cuTPnGPHjnvU6Rw1EgA+/3zHpx9//NGLjY2NkZKSEvT09MLlaoVGo/n/AEaMyIEgRKBSqXHjRi+MRiOKi0fPXLJk6bM2m22yRqMx3t4XoVBI6Ovrq9u9e9eus2fPbr56tUHQajmo1Sro9Xr09PSirc11D8AdJ6K7LQajgNVqRVdXF2pqqg/l5ua2qdWqR5zOUc6xY8elMwzDNDc39584caIxHA6frKqqqvF6PUhNTQUhsWn4X0b91P8H/gthGyI1+/EU3AAAAABJRU5ErkJggg=='
@@ -219,9 +220,9 @@ export default function (f7) {
javascriptGenerator.forBlock['oh_httprequest'] = function (block, generator) {
const requestType = block.getFieldValue('requestType')
- let url = javascriptGenerator.valueToCode(block, 'url', javascriptGenerator.ORDER_ATOMIC)
+ let url = valueToCode(block, 'url', javascriptGenerator.ORDER_ATOMIC)
- const query = javascriptGenerator.valueToCode(block, 'query', javascriptGenerator.ORDER_ATOMIC)
+ const query = valueToCode(block, 'query', javascriptGenerator.ORDER_ATOMIC)
if (query) {
const queryEncodeFunction = encodeParams(query)
url = `${url} + '?' + ${queryEncodeFunction}(${query})`
@@ -229,7 +230,7 @@ export default function (f7) {
const contentType = block.getFieldValue('contentType')
- let payload = javascriptGenerator.valueToCode(block, 'payload', javascriptGenerator.ORDER_ATOMIC)
+ let payload = valueToCode(block, 'payload', javascriptGenerator.ORDER_ATOMIC)
if (payload) {
if (contentType === 'application/x-www-form-urlencoded') {
const payloadEncodeFunction = encodeParams(payload)
@@ -240,8 +241,8 @@ export default function (f7) {
}
}
- const headers = javascriptGenerator.valueToCode(block, 'requestHeader', javascriptGenerator.ORDER_ATOMIC)
- const timeout = javascriptGenerator.valueToCode(block, 'timeoutInput', javascriptGenerator.ORDER_ATOMIC) || 3000
+ const headers = valueToCode(block, 'requestHeader', javascriptGenerator.ORDER_ATOMIC)
+ const timeout = valueToCode(block, 'timeoutInput', javascriptGenerator.ORDER_ATOMIC) || 3000
let code = ''
if (payload) {
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-items.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-items.js
index e533eb1aeb..de5061ee11 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-items.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-items.js
@@ -3,10 +3,10 @@
* supports jsscripting
*/
-import Blockly from 'blockly'
-import { javascriptGenerator } from 'blockly/javascript.js'
+import * as Blockly from 'blockly'
+import { javascriptGenerator } from 'blockly/javascript'
import { FieldItemModelPicker } from './fields/item-field.js'
-import { blockGetCheckedInputType } from './utils.js'
+import { blockGetCheckedInputType, valueToCode } from './utils.js'
import api from '@/js/openhab/api'
@@ -79,7 +79,7 @@ export default function (f7) {
}
javascriptGenerator.forBlock['oh_groupmembers'] = function (block) {
- const groupName = javascriptGenerator.valueToCode(block, 'groupName', javascriptGenerator.ORDER_ATOMIC)
+ const groupName = valueToCode(block, 'groupName', javascriptGenerator.ORDER_ATOMIC)
return [`items.getItem(${groupName}).members`, 0]
}
@@ -99,7 +99,7 @@ export default function (f7) {
}
javascriptGenerator.forBlock['oh_taggeditems'] = function (block) {
- let tagNames = javascriptGenerator.valueToCode(block, 'tagName', javascriptGenerator.ORDER_ATOMIC).replace(/'/g, '')
+ let tagNames = valueToCode(block, 'tagName', javascriptGenerator.ORDER_ATOMIC).replace(/'/g, '')
const inputType = blockGetCheckedInputType(block, 'tagName')
let tags = ''
if (inputType === '') {
@@ -134,7 +134,7 @@ export default function (f7) {
}
javascriptGenerator.forBlock['oh_getitem'] = function (block) {
- const itemName = javascriptGenerator.valueToCode(block, 'itemName', javascriptGenerator.ORDER_ATOMIC)
+ const itemName = valueToCode(block, 'itemName', javascriptGenerator.ORDER_ATOMIC)
return [`items.getItem(${itemName})`, 0]
}
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-list.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-list.js
index ddf0c59a1c..8faa13e44d 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-list.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-list.js
@@ -2,8 +2,9 @@
* Adds new blocks to the list section
* supports jsscripting
*/
-import Blockly from 'blockly'
-import { javascriptGenerator } from 'blockly/javascript.js'
+import * as Blockly from 'blockly'
+import { javascriptGenerator } from 'blockly/javascript'
+import { valueToCode } from '@/assets/definitions/blockly/utils.js'
export default function (f7) {
/*
@@ -17,7 +18,7 @@ export default function (f7) {
.setCheck('Array')
this.appendValueInput('list2')
.appendField('to')
- .setAlign(Blockly.ALIGN_RIGHT)
+ .setAlign(Blockly.inputs.Align.RIGHT)
.setCheck('Array')
this.setInputsInline(true)
this.setOutput(true, 'Array')
@@ -28,8 +29,8 @@ export default function (f7) {
}
javascriptGenerator.forBlock['oh_list_concatenate'] = function (block) {
- const list1 = javascriptGenerator.valueToCode(block, 'list1', javascriptGenerator.ORDER_ATOMIC)
- const list2 = javascriptGenerator.valueToCode(block, 'list2', javascriptGenerator.ORDER_ATOMIC)
+ const list1 = valueToCode(block, 'list1', javascriptGenerator.ORDER_ATOMIC)
+ const list2 = valueToCode(block, 'list2', javascriptGenerator.ORDER_ATOMIC)
const code = list1 + '.concat(' + list2 + ')'
return [code, 0]
}
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-logging.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-logging.js
index b6bf080b37..bc02f68cb5 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-logging.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-logging.js
@@ -3,8 +3,9 @@
* supports jsscripting
*/
-import Blockly from 'blockly'
-import { javascriptGenerator } from 'blockly/javascript.js'
+import * as Blockly from 'blockly'
+import { javascriptGenerator } from 'blockly/javascript'
+import { valueToCode } from '@/assets/definitions/blockly/utils.js'
export default function (f7) {
Blockly.Blocks['oh_print'] = {
@@ -20,7 +21,7 @@ export default function (f7) {
}
javascriptGenerator.forBlock['oh_print'] = function (block) {
- const message = javascriptGenerator.valueToCode(block, 'message', javascriptGenerator.ORDER_ATOMIC)
+ const message = valueToCode(block, 'message', javascriptGenerator.ORDER_ATOMIC)
return `console.log(${message});\n`
}
@@ -38,7 +39,7 @@ export default function (f7) {
}
javascriptGenerator.forBlock['oh_log'] = function (block) {
- const message = javascriptGenerator.valueToCode(block, 'message', javascriptGenerator.ORDER_ATOMIC)
+ const message = valueToCode(block, 'message', javascriptGenerator.ORDER_ATOMIC)
const severity = block.getFieldValue('severity')
return `console.${severity}(${message});\n`
}
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-logic.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-logic.js
index bced436d64..ba1be5aa45 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-logic.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-logic.js
@@ -2,8 +2,9 @@
* Adds new blocks to the logic section
*/
-import Blockly from 'blockly'
-import { javascriptGenerator } from 'blockly/javascript.js'
+import * as Blockly from 'blockly'
+import { javascriptGenerator } from 'blockly/javascript'
+import { valueToCode } from '@/assets/definitions/blockly/utils.js'
export default function (f7) {
/*
@@ -131,7 +132,7 @@ export default function (f7) {
if (i > 1) {
code += ' ' + operator + ' '
}
- let input = javascriptGenerator.valueToCode(block, 'OPER' + i, javascriptGenerator.ORDER_ATOMIC) || 'false'
+ let input = valueToCode(block, 'OPER' + i, javascriptGenerator.ORDER_ATOMIC) || 'false'
code += '(' + input + ')'
}
return [code, javascriptGenerator.ORDER_ATOMIC]
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-math.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-math.js
index 2f1cec7479..d98f86de0d 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-math.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-math.js
@@ -2,9 +2,9 @@
* Adds new bitwise operator blocks to the math section
*/
-import Blockly from 'blockly'
-import { javascriptGenerator } from 'blockly/javascript.js'
-import { blockGetCheckedInputType } from './utils.js'
+import * as Blockly from 'blockly'
+import { javascriptGenerator } from 'blockly/javascript'
+import { blockGetCheckedInputType, valueToCode } from './utils.js'
export default function (f7) {
Blockly.Blocks['oh_toNumber'] = {
@@ -21,7 +21,7 @@ export default function (f7) {
}
javascriptGenerator.forBlock['oh_toNumber'] = function (block) {
- const value = javascriptGenerator.valueToCode(block, 'valueAsText', javascriptGenerator.ORDER_FUNCTION_CALL)
+ const value = valueToCode(block, 'valueAsText', javascriptGenerator.ORDER_FUNCTION_CALL)
return [`parseFloat(${value})`, 0]
}
@@ -39,7 +39,7 @@ export default function (f7) {
}
javascriptGenerator.forBlock['oh_bit_not'] = function (block) {
- const value = javascriptGenerator.valueToCode(block, 'value', javascriptGenerator.ORDER_BITWISE_NOT)
+ const value = valueToCode(block, 'value', javascriptGenerator.ORDER_BITWISE_NOT)
return [`~${value}`, 0]
}
@@ -75,8 +75,8 @@ export default function (f7) {
}
javascriptGenerator.forBlock['oh_bitwise'] = function (block) {
- const first = javascriptGenerator.valueToCode(block, 'first', javascriptGenerator.ORDER_BITWISE_SHIFT)
- const second = javascriptGenerator.valueToCode(block, 'second', javascriptGenerator.ORDER_NONE)
+ const first = valueToCode(block, 'first', javascriptGenerator.ORDER_BITWISE_SHIFT)
+ const second = valueToCode(block, 'second', javascriptGenerator.ORDER_NONE)
const operand = block.getFieldValue('operand')
let parentheses = 0
@@ -148,7 +148,7 @@ export default function (f7) {
javascriptGenerator.forBlock['math_round'] = function (block) {
const inputType = blockGetCheckedInputType(block, 'NUM')
- const math_number_input = javascriptGenerator.valueToCode(block, 'NUM', javascriptGenerator.ORDER_FUNCTION_CALL)
+ const math_number_input = valueToCode(block, 'NUM', javascriptGenerator.ORDER_FUNCTION_CALL)
let math_number = math_number_input
if (inputType === 'oh_quantity') {
math_number = math_number_input + '.float'
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-metadata.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-metadata.js
index 2a016c8687..2c3d1f9434 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-metadata.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-metadata.js
@@ -3,9 +3,9 @@
* Note that the blocks are only support for GraalVM together with the JSScripting library
*/
-import Blockly from 'blockly'
-import { javascriptGenerator } from 'blockly/javascript.js'
-import { addGetItemMetaConfigValue } from './utils.js'
+import * as Blockly from 'blockly'
+import { javascriptGenerator } from 'blockly/javascript'
+import { addGetItemMetaConfigValue, valueToCode } from './utils.js'
export default function (f7) {
/*
@@ -29,8 +29,8 @@ export default function (f7) {
}
javascriptGenerator.forBlock['oh_get_meta_value'] = function (block) {
- const theItem = javascriptGenerator.valueToCode(block, 'theItem', javascriptGenerator.ORDER_ATOMIC)
- const namespace = javascriptGenerator.valueToCode(block, 'namespace', javascriptGenerator.ORDER_ATOMIC)
+ const theItem = valueToCode(block, 'theItem', javascriptGenerator.ORDER_ATOMIC)
+ const namespace = valueToCode(block, 'namespace', javascriptGenerator.ORDER_ATOMIC)
return [`(items.metadata.getMetadata(${theItem}, ${namespace}) !== null) ? (items.metadata.getMetadata(${theItem}, ${namespace}).value) : 'undefined'`, javascriptGenerator.ORDER_CONDITIONAL]
}
@@ -59,8 +59,8 @@ export default function (f7) {
}
javascriptGenerator.forBlock['oh_get_meta_config'] = function (block) {
- const configKey = javascriptGenerator.valueToCode(block, 'configKey', javascriptGenerator.ORDER_ATOMIC)
- const theItem = javascriptGenerator.valueToCode(block, 'theItem', javascriptGenerator.ORDER_ATOMIC)
+ const configKey = valueToCode(block, 'configKey', javascriptGenerator.ORDER_ATOMIC)
+ const theItem = valueToCode(block, 'theItem', javascriptGenerator.ORDER_ATOMIC)
const namespace = javascriptGenerator.valueToCode(block, 'namespace', javascriptGenerator.ORDER_ATOMIC)
addGetItemMetaConfigValue()
return [`getItemMetaConfigValue(${theItem}, ${namespace}, ${configKey})`, javascriptGenerator.ORDER_CONDITIONAL]
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-notifications.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-notifications.js
index a30a914814..ce2321cd9b 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-notifications.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-notifications.js
@@ -3,9 +3,9 @@
* supports jsscripting
*/
-import Blockly from 'blockly'
-import { javascriptGenerator } from 'blockly/javascript.js'
-import { blockGetCheckedInputType } from './utils.js'
+import * as Blockly from 'blockly'
+import { javascriptGenerator } from 'blockly/javascript'
+import { blockGetCheckedInputType, valueToCode } from './utils.js'
export default function defineOHBlocks_Notifications (f7) {
Blockly.Blocks['oh_sendNotification'] = {
@@ -24,8 +24,8 @@ export default function defineOHBlocks_Notifications (f7) {
}
javascriptGenerator.forBlock['oh_sendNotification'] = function (block) {
- const email = javascriptGenerator.valueToCode(block, 'email', javascriptGenerator.ORDER_ATOMIC)
- const message = javascriptGenerator.valueToCode(block, 'message', javascriptGenerator.ORDER_ATOMIC)
+ const email = valueToCode(block, 'email', javascriptGenerator.ORDER_ATOMIC)
+ const message = valueToCode(block, 'message', javascriptGenerator.ORDER_ATOMIC)
return `actions.notificationBuilder(${message}).addUserId(${email}).send();\n`
}
@@ -49,8 +49,8 @@ export default function defineOHBlocks_Notifications (f7) {
}
javascriptGenerator.forBlock['oh_sendBroadcastNotification'] = function (block) {
- const message = javascriptGenerator.valueToCode(block, 'message', javascriptGenerator.ORDER_ATOMIC)
- const icon = javascriptGenerator.valueToCode(block, 'icon', javascriptGenerator.ORDER_ATOMIC)
+ const message = valueToCode(block, 'message', javascriptGenerator.ORDER_ATOMIC)
+ const icon = valueToCode(block, 'icon', javascriptGenerator.ORDER_ATOMIC)
const severity = block.getFieldValue('severity')
return `actions.notificationBuilder(${message}).withIcon(${icon}).withTag('${severity}').send();\n`
}
@@ -75,8 +75,8 @@ export default function defineOHBlocks_Notifications (f7) {
}
javascriptGenerator.forBlock['oh_sendLogNotification'] = function (block) {
- const message = javascriptGenerator.valueToCode(block, 'message', javascriptGenerator.ORDER_ATOMIC)
- const icon = javascriptGenerator.valueToCode(block, 'icon', javascriptGenerator.ORDER_ATOMIC)
+ const message = valueToCode(block, 'message', javascriptGenerator.ORDER_ATOMIC)
+ const icon = valueToCode(block, 'icon', javascriptGenerator.ORDER_ATOMIC)
const severity = block.getFieldValue('severity')
return `actions.notificationBuilder(${message}).logOnly().withIcon(${icon}).withTag('${severity}').send();\n`
}
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-persistence.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-persistence.js
index 44ca2dc10f..44a70f7e67 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-persistence.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-persistence.js
@@ -2,9 +2,9 @@
* These blocks support the persistence module which stores the data in the database and allows to retrieve historical and statistical data
* supports jsscripting
*/
-import Blockly from 'blockly'
-import { javascriptGenerator } from 'blockly/javascript.js'
-import { blockGetCheckedInputType } from './utils.js'
+import * as Blockly from 'blockly'
+import { javascriptGenerator } from 'blockly/javascript'
+import { blockGetCheckedInputType, valueToCode } from './utils.js'
export default function defineOHBlocks_Persistence (f7, persistenceServices) {
/*
@@ -38,7 +38,7 @@ export default function defineOHBlocks_Persistence (f7, persistenceServices) {
this.methodName = this.getFieldValue('methodName')
this.appendValueInput('itemName')
.appendField('of item')
- .setAlign(Blockly.ALIGN_RIGHT)
+ .setAlign(Blockly.inputs.Align.RIGHT)
.setCheck(['String', 'oh_item', 'oh_itemtype'])
this.appendValueInput('persistenceName')
.appendField('from')
@@ -127,7 +127,7 @@ export default function defineOHBlocks_Persistence (f7, persistenceServices) {
this.appendDummyInput('returnTypeInput')
.appendField('as')
.appendField(new Blockly.FieldDropdown(this.returnTypeNames()), 'returnTypeName')
- .setAlign(Blockly.ALIGN_RIGHT)
+ .setAlign(Blockly.inputs.Align.RIGHT)
this.moveInputBefore('returnTypeInput', 'itemName')
}
@@ -149,7 +149,7 @@ export default function defineOHBlocks_Persistence (f7, persistenceServices) {
if (!this.getInput('skipPrevious')) {
this.appendValueInput('skipPrevious')
.appendField('skip same ')
- .setAlign(Blockly.ALIGN_RIGHT)
+ .setAlign(Blockly.inputs.Align.RIGHT)
.setCheck(['Boolean'])
this.getInput('skipPrevious').setShadowDom(
Blockly.utils.xml.textToDom(`
@@ -295,19 +295,19 @@ export default function defineOHBlocks_Persistence (f7, persistenceServices) {
* Code part
*/
javascriptGenerator.forBlock['oh_get_persistvalue'] = function (block) {
- const itemName = javascriptGenerator.valueToCode(block, 'itemName', javascriptGenerator.ORDER_ATOMIC)
+ const itemName = valueToCode(block, 'itemName', javascriptGenerator.ORDER_ATOMIC)
const inputType = blockGetCheckedInputType(block, 'itemName')
const methodName = block.getFieldValue('methodName')
const returnTypeName = block.getFieldValue('returnTypeName')
- const persistenceName = javascriptGenerator.valueToCode(block, 'persistenceName', javascriptGenerator.ORDER_NONE)
+ const persistenceName = valueToCode(block, 'persistenceName', javascriptGenerator.ORDER_NONE)
const itemCode = generateItemCode(itemName, inputType)
let code = ''
- const dayInfoSince = javascriptGenerator.valueToCode(block, 'dayInfoSince', javascriptGenerator.ORDER_NONE)
- const dayInfoUntil = javascriptGenerator.valueToCode(block, 'dayInfoUntil', javascriptGenerator.ORDER_NONE)
+ const dayInfoSince = valueToCode(block, 'dayInfoSince', javascriptGenerator.ORDER_NONE)
+ const dayInfoUntil = valueToCode(block, 'dayInfoUntil', javascriptGenerator.ORDER_NONE)
const dayInfo = dayInfoSince + ((dayInfoSince && dayInfoUntil) ? ', ' : '') + dayInfoUntil
- let skipPrevious = javascriptGenerator.valueToCode(block, 'skipPrevious', javascriptGenerator.ORDER_NONE)
+ let skipPrevious = valueToCode(block, 'skipPrevious', javascriptGenerator.ORDER_NONE)
skipPrevious = (skipPrevious === 'undefined') ? false : skipPrevious
let riemannType = block.getFieldValue('riemannType')
@@ -393,7 +393,7 @@ export default function defineOHBlocks_Persistence (f7, persistenceServices) {
Blockly.Blocks['oh_persist_changed'] = {
init: function () {
this.appendValueInput('itemName')
- .setAlign(Blockly.ALIGN_RIGHT)
+ .setAlign(Blockly.inputs.Align.RIGHT)
.appendField('the state of')
.setCheck(['String', 'oh_item', 'oh_itemtype'])
const persistenceNameInput = this.appendValueInput('persistenceName')
@@ -407,7 +407,7 @@ export default function defineOHBlocks_Persistence (f7, persistenceServices) {
['has changed since', 'changedSince'], ['will have changed until', 'changedUntil'], ['changes between', 'changedBetween'],
['has been updated since', 'updatedSince'], ['will have been updated until', 'updatedUntil'], ['is updated between', 'updatedBetween']
], this.handleTypeSelection.bind(this)), 'methodName')
- .setAlign(Blockly.ALIGN_RIGHT)
+ .setAlign(Blockly.inputs.Align.RIGHT)
.setCheck(['ZonedDateTime'])
this.methodName = this.getFieldValue('methodName')
@@ -465,12 +465,12 @@ export default function defineOHBlocks_Persistence (f7, persistenceServices) {
* Code part
*/
javascriptGenerator.forBlock['oh_persist_changed'] = function (block) {
- const itemName = javascriptGenerator.valueToCode(block, 'itemName', javascriptGenerator.ORDER_ATOMIC)
+ const itemName = valueToCode(block, 'itemName', javascriptGenerator.ORDER_ATOMIC)
const inputType = blockGetCheckedInputType(block, 'itemName')
const methodName = block.getFieldValue('methodName')
- const dayInfo1 = javascriptGenerator.valueToCode(block, 'dayInfo', javascriptGenerator.ORDER_NONE)
- const dayInfo2 = methodName.endsWith('Between') ? javascriptGenerator.valueToCode(block, 'dayInfo2', javascriptGenerator.ORDER_NONE) : undefined
+ const dayInfo1 = valueToCode(block, 'dayInfo', javascriptGenerator.ORDER_NONE)
+ const dayInfo2 = methodName.endsWith('Between') ? valueToCode(block, 'dayInfo2', javascriptGenerator.ORDER_NONE) : undefined
const dayInfo = dayInfo2 ? `${dayInfo1}, ${dayInfo2}` : dayInfo1
const persistenceName = javascriptGenerator.valueToCode(block, 'persistenceName', javascriptGenerator.ORDER_NONE)
const persistenceExtension = (persistenceName === '\'default\'') ? '' : `, ${persistenceName}`
@@ -553,7 +553,7 @@ export default function defineOHBlocks_Persistence (f7, persistenceServices) {
`))
this.appendValueInput('itemName')
.appendField('for item')
- .setAlign(Blockly.ALIGN_RIGHT)
+ .setAlign(Blockly.inputs.Align.RIGHT)
.setCheck(['String', 'oh_item', 'oh_itemtype'])
const persistenceNameInput = this.appendValueInput('persistenceName')
.appendField('to')
@@ -702,7 +702,7 @@ export default function defineOHBlocks_Persistence (f7, persistenceServices) {
this.methodName = this.getFieldValue('methodName')
this.appendValueInput('itemName')
.appendField('of item')
- .setAlign(Blockly.ALIGN_RIGHT)
+ .setAlign(Blockly.inputs.Align.RIGHT)
.setCheck(['String', 'oh_item', 'oh_itemtype'])
this.appendValueInput('persistenceName')
.appendField('from')
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-scripts.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-scripts.js
index 333db13b80..085dbab37c 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-scripts.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-scripts.js
@@ -5,9 +5,10 @@
* Additionally there is a block that allows transformations based on the Map-File functionality, regular-expressions and applying JSON-paths
* supports jsscripting
*/
-import Blockly from 'blockly'
-import { javascriptGenerator } from 'blockly/javascript.js'
-import { blockGetCheckedInputType } from '@/assets/definitions/blockly/utils.js'
+import * as Blockly from 'blockly'
+import { javascriptGenerator } from 'blockly/javascript'
+import { blockGetCheckedInputType, valueToCode } from '@/assets/definitions/blockly/utils.js'
+import { registerFieldMultilineInput, FieldMultilineInput } from '@blockly/field-multilineinput'
export default function defineOHBlocks_Scripts (f7, transformationServices) {
/*
@@ -33,7 +34,7 @@ export default function defineOHBlocks_Scripts (f7, transformationServices) {
* Code part
*/
javascriptGenerator.forBlock['oh_callscriptfile'] = function (block) {
- const scriptfile = javascriptGenerator.valueToCode(block, 'scriptfile', javascriptGenerator.ORDER_ATOMIC)
+ const scriptfile = valueToCode(block, 'scriptfile', javascriptGenerator.ORDER_ATOMIC)
return `actions.ScriptExecution.callScript(${scriptfile});\n`
}
@@ -65,8 +66,8 @@ export default function defineOHBlocks_Scripts (f7, transformationServices) {
* Code part
*/
javascriptGenerator.forBlock['oh_runrule'] = function (block) {
- const ruleUID = javascriptGenerator.valueToCode(block, 'ruleUID', javascriptGenerator.ORDER_ATOMIC)
- const scriptParameters = javascriptGenerator.valueToCode(block, 'parameters', javascriptGenerator.ORDER_ATOMIC)
+ const ruleUID = valueToCode(block, 'ruleUID', javascriptGenerator.ORDER_ATOMIC)
+ const scriptParameters = valueToCode(block, 'parameters', javascriptGenerator.ORDER_ATOMIC)
return `rules.runRule(${ruleUID}, ${scriptParameters});\n`
}
@@ -81,7 +82,7 @@ export default function defineOHBlocks_Scripts (f7, transformationServices) {
Blockly.Blocks['oh_transformation'] = {
init: function () {
this.appendValueInput('value')
- .setAlign(Blockly.ALIGN_RIGHT)
+ .setAlign(Blockly.inputs.Align.RIGHT)
.appendField('transform')
this.appendValueInput('function')
.appendField('apply')
@@ -129,8 +130,8 @@ export default function defineOHBlocks_Scripts (f7, transformationServices) {
*/
javascriptGenerator.forBlock['oh_transformation'] = function (block) {
const transformationType = block.getFieldValue('type')
- const transformationFunction = javascriptGenerator.valueToCode(block, 'function', javascriptGenerator.ORDER_ATOMIC)
- const transformationValue = javascriptGenerator.valueToCode(block, 'value', javascriptGenerator.ORDER_ATOMIC)
+ const transformationFunction = valueToCode(block, 'function', javascriptGenerator.ORDER_ATOMIC)
+ const transformationValue = valueToCode(block, 'value', javascriptGenerator.ORDER_ATOMIC)
return [`actions.Transformation.transform('${transformationType}', ${transformationFunction}, ${transformationValue})`, 0]
}
@@ -309,7 +310,7 @@ export default function defineOHBlocks_Scripts (f7, transformationServices) {
* Code part
*/
javascriptGenerator.forBlock['oh_context_attribute'] = function (block) {
- const key = javascriptGenerator.valueToCode(block, 'key', javascriptGenerator.ORDER_ATOMIC)
+ const key = valueToCode(block, 'key', javascriptGenerator.ORDER_ATOMIC)
let code = `ctx[${key}]`
return [code, 0]
}
@@ -318,13 +319,14 @@ export default function defineOHBlocks_Scripts (f7, transformationServices) {
* Allows inlining arbitrary code
* Blockly part
*/
+ registerFieldMultilineInput()
Blockly.Blocks['oh_script_inline'] = {
init: function () {
this.appendDummyInput()
.appendField('inline script (advanced)')
const code = 'for (var i = 0; i < 10; i++) {\n console.log(i.toString());\n}'
this.appendDummyInput()
- .appendField(new Blockly.FieldMultilineInput(code), 'inlineScript')
+ .appendField(new FieldMultilineInput(code), 'inlineScript')
this.setInputsInline(false)
this.setPreviousStatement(true, null)
this.setNextStatement(true, null)
@@ -362,8 +364,8 @@ export default function defineOHBlocks_Scripts (f7, transformationServices) {
}
javascriptGenerator.forBlock['oh_rule_enable'] = function (block) {
- const ruleUID = javascriptGenerator.valueToCode(block, 'ruleUID', javascriptGenerator.ORDER_ATOMIC)
- const enableValue = javascriptGenerator.valueToCode(block, 'enable', javascriptGenerator.ORDER_ATOMIC)
+ const ruleUID = valueToCode(block, 'ruleUID', javascriptGenerator.ORDER_ATOMIC)
+ const enableValue = valueToCode(block, 'enable', javascriptGenerator.ORDER_ATOMIC)
const enableType = blockGetCheckedInputType(block, 'enable')
let enable = (enableType === 'Boolean') ? enableValue : (enableValue === '\'true\'' || enableValue === '\'enabled\'')
return `rules.setEnabled(${ruleUID}, ${enable});\n`
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-text.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-text.js
index cb1f54b51f..d83a0f0e48 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-text.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-text.js
@@ -3,8 +3,9 @@
* supports jsscripting
*/
-import Blockly from 'blockly'
-import { javascriptGenerator } from 'blockly/javascript.js'
+import * as Blockly from 'blockly'
+import { javascriptGenerator } from 'blockly/javascript'
+import { valueToCode } from '@/assets/definitions/blockly/utils.js'
export default function (f7) {
/*
@@ -37,11 +38,11 @@ export default function (f7) {
.setCheck('String')
this.appendValueInput('replacement')
.appendField('with')
- .setAlign(Blockly.ALIGN_RIGHT)
+ .setAlign(Blockly.inputs.Align.RIGHT)
.setCheck('String')
this.appendValueInput('origin')
.appendField('in')
- .setAlign(Blockly.ALIGN_RIGHT)
+ .setAlign(Blockly.inputs.Align.RIGHT)
.setCheck('String')
this.setInputsInline(true)
this.setOutput(true, 'String')
@@ -52,9 +53,9 @@ export default function (f7) {
}
javascriptGenerator.forBlock['oh_text_replace'] = function (block) {
- const pattern = javascriptGenerator.valueToCode(block, 'pattern', javascriptGenerator.ORDER_ATOMIC)
- const replacement = javascriptGenerator.valueToCode(block, 'replacement', javascriptGenerator.ORDER_ATOMIC)
- const originText = javascriptGenerator.valueToCode(block, 'origin', javascriptGenerator.ORDER_ATOMIC)
+ const pattern = valueToCode(block, 'pattern', javascriptGenerator.ORDER_ATOMIC)
+ const replacement = valueToCode(block, 'replacement', javascriptGenerator.ORDER_ATOMIC)
+ const originText = valueToCode(block, 'origin', javascriptGenerator.ORDER_ATOMIC)
const code = originText + '.replaceAll(' + pattern + ',' + replacement + ')'
return [code, 0]
}
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-things.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-things.js
index 81ef4d78c0..c452a3aaea 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-things.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-things.js
@@ -3,10 +3,10 @@
* supports jsscripting
*/
-import Blockly from 'blockly'
-import { javascriptGenerator } from 'blockly/javascript.js'
+import * as Blockly from 'blockly'
+import { javascriptGenerator } from 'blockly/javascript'
import { FieldThingPicker } from './fields/thing-field.js'
-import { blockGetCheckedInputType } from './utils.js'
+import { blockGetCheckedInputType, valueToCode } from './utils.js'
export default function defineOHBlocks (f7) {
Blockly.Blocks['oh_thing'] = {
@@ -42,7 +42,7 @@ export default function defineOHBlocks (f7) {
}
javascriptGenerator.forBlock['oh_getthing'] = function (block) {
- const thingUid = javascriptGenerator.valueToCode(block, 'thingUid', javascriptGenerator.ORDER_ATOMIC)
+ const thingUid = valueToCode(block, 'thingUid', javascriptGenerator.ORDER_ATOMIC)
return [`things.getThing(${thingUid})`, 0]
}
@@ -60,7 +60,7 @@ export default function defineOHBlocks (f7) {
}
javascriptGenerator.forBlock['oh_getthing_state'] = function (block) {
- const thingUid = javascriptGenerator.valueToCode(block, 'thingUid', javascriptGenerator.ORDER_ATOMIC)
+ const thingUid = valueToCode(block, 'thingUid', javascriptGenerator.ORDER_ATOMIC)
const inputType = blockGetCheckedInputType(block, 'thingUid')
const code = (inputType === 'oh_thingtype') ? `${thingUid}.status` : `things.getThing(${thingUid}).status`
return [code, 0]
@@ -97,7 +97,7 @@ export default function defineOHBlocks (f7) {
}
javascriptGenerator.forBlock['oh_getthing'] = function (block) {
- const thingUid = javascriptGenerator.valueToCode(block, 'thingUid', javascriptGenerator.ORDER_ATOMIC)
+ const thingUid = valueToCode(block, 'thingUid', javascriptGenerator.ORDER_ATOMIC)
return [`things.getThing(${thingUid})`, 0]
}
@@ -172,7 +172,7 @@ export default function defineOHBlocks (f7) {
* Code part
*/
javascriptGenerator.forBlock['oh_getthing_attribute'] = function (block) {
- const thing = javascriptGenerator.valueToCode(block, 'thing', javascriptGenerator.ORDER_ATOMIC)
+ const thing = valueToCode(block, 'thing', javascriptGenerator.ORDER_ATOMIC)
const inputType = blockGetCheckedInputType(block, 'thing')
const attributeName = block.getFieldValue('attributeName')
const code = (inputType === 'oh_thing') ? `things.getThing(${thing}).${attributeName}` : `${thing}.${attributeName}`
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-timers.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-timers.js
index d7c99c42a2..8580ad0fa9 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-timers.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-timers.js
@@ -3,8 +3,9 @@
* supports jsscripting
*/
-import Blockly from 'blockly'
-import { javascriptGenerator } from 'blockly/javascript.js'
+import * as Blockly from 'blockly'
+import { javascriptGenerator } from 'blockly/javascript'
+import { statementToCode, valueToCode } from '@/assets/definitions/blockly/utils.js'
export default function defineOHBlocks_Timers (f7) {
/*
@@ -80,10 +81,10 @@ export default function defineOHBlocks_Timers (f7) {
*/
javascriptGenerator.forBlock['oh_timer'] = function (block) {
const delayUnits = block.getFieldValue('delayUnits')
- const delay = javascriptGenerator.valueToCode(block, 'delay', javascriptGenerator.ORDER_ATOMIC)
- const timerName = javascriptGenerator.valueToCode(block, 'timerName', javascriptGenerator.ORDER_ATOMIC)
- const timerCode = javascriptGenerator.statementToCode(block, 'timerCode')
- const context = javascriptGenerator.valueToCode(block, 'context', javascriptGenerator.ORDER_ATOMIC)
+ const delay = valueToCode(block, 'delay', javascriptGenerator.ORDER_ATOMIC)
+ const timerName = valueToCode(block, 'timerName', javascriptGenerator.ORDER_ATOMIC)
+ const timerCode = statementToCode(block, 'timerCode')
+ const context = valueToCode(block, 'context', javascriptGenerator.ORDER_ATOMIC)
const cacheType = getCacheType(this)
let code = `if (cache.${cacheType}.exists(${timerName}) === false || cache.${cacheType}.get(${timerName}).hasTerminated()) {\n`
@@ -158,9 +159,9 @@ export default function defineOHBlocks_Timers (f7) {
*/
javascriptGenerator.forBlock['oh_timer_ext'] = function (block) {
const delayUnits = block.getFieldValue('delayUnits')
- const delay = javascriptGenerator.valueToCode(block, 'delay', javascriptGenerator.ORDER_ATOMIC)
+ const delay = valueToCode(block, 'delay', javascriptGenerator.ORDER_ATOMIC)
const timerName = javascriptGenerator.valueToCode(block, 'timerName', javascriptGenerator.ORDER_ATOMIC)
- const timerCode = javascriptGenerator.statementToCode(block, 'timerCode')
+ const timerCode = statementToCode(block, 'timerCode')
const retrigger = block.getFieldValue('retrigger')
const context = javascriptGenerator.valueToCode(block, 'context', javascriptGenerator.ORDER_ATOMIC)
const cacheType = getCacheType(this)
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-uom.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-uom.js
index 4f800b7889..45c1b13ce7 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-uom.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-uom.js
@@ -3,9 +3,9 @@
* supports jsscripting
*/
-import Blockly from 'blockly'
-import { javascriptGenerator } from 'blockly/javascript.js'
-import { blockGetCheckedInputType } from './utils.js'
+import * as Blockly from 'blockly'
+import { javascriptGenerator } from 'blockly/javascript'
+import { blockGetCheckedInputType, valueToCode } from './utils.js'
export default function (f7) {
Blockly.Blocks['oh_quantity_ext'] = {
@@ -25,9 +25,9 @@ export default function (f7) {
}
javascriptGenerator.forBlock['oh_quantity_ext'] = function (block) {
- let value = javascriptGenerator.valueToCode(block, 'value', javascriptGenerator.ORDER_NONE)
+ let value = valueToCode(block, 'value', javascriptGenerator.ORDER_NONE)
- const unit = javascriptGenerator.valueToCode(block, 'unit', javascriptGenerator.ORDER_NONE)
+ const unit = valueToCode(block, 'unit', javascriptGenerator.ORDER_NONE)
const inputType = blockGetCheckedInputType(block, 'value')
let code
@@ -94,7 +94,7 @@ export default function (f7) {
const first = generateQuantityCode(block, 'first')
const second = (blockGetCheckedInputType(block, 'second') !== 'Number')
? generateQuantityCode(block, 'second')
- : javascriptGenerator.valueToCode(block, 'second', javascriptGenerator.ORDER_NONE)
+ : valueToCode(block, 'second', javascriptGenerator.ORDER_NONE)
return [`${first}.${operand}(${second})`, javascriptGenerator.ORDER_NONE]
}
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-valuestorage.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-valuestorage.js
index a144c55c14..95ec661113 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-valuestorage.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/blocks-valuestorage.js
@@ -4,8 +4,9 @@
* supports jsscripting
*/
-import Blockly from 'blockly'
-import { javascriptGenerator } from 'blockly/javascript.js'
+import * as Blockly from 'blockly'
+import { javascriptGenerator } from 'blockly/javascript'
+import { valueToCode } from '@/assets/definitions/blockly/utils.js'
export default function defineOHBlocks_Variables (f7) {
Blockly.Blocks['oh_store_value'] = {
@@ -31,8 +32,8 @@ export default function defineOHBlocks_Variables (f7) {
}
javascriptGenerator.forBlock['oh_store_value'] = function (block) {
- const key = javascriptGenerator.valueToCode(block, 'key', javascriptGenerator.ORDER_ATOMIC)
- const value = javascriptGenerator.valueToCode(block, 'value', javascriptGenerator.ORDER_ATOMIC)
+ const key = valueToCode(block, 'key', javascriptGenerator.ORDER_ATOMIC)
+ const value = valueToCode(block, 'value', javascriptGenerator.ORDER_ATOMIC)
const cacheType = block.getFieldValue('cacheType')
return `cache${cacheType}.put(${key}, ${value});\n`
}
@@ -55,7 +56,7 @@ export default function defineOHBlocks_Variables (f7) {
}
javascriptGenerator.forBlock['oh_get_value'] = function (block) {
- const key = javascriptGenerator.valueToCode(block, 'key', javascriptGenerator.ORDER_ATOMIC)
+ const key = valueToCode(block, 'key', javascriptGenerator.ORDER_ATOMIC)
const cacheType = block.getFieldValue('cacheType')
return [`cache${cacheType}.get(${key})`, javascriptGenerator.ORDER_NONE]
}
@@ -78,7 +79,7 @@ export default function defineOHBlocks_Variables (f7) {
}
javascriptGenerator.forBlock['oh_check_undefined_value'] = function (block) {
- const key = javascriptGenerator.valueToCode(block, 'key', javascriptGenerator.ORDER_ATOMIC)
+ const key = valueToCode(block, 'key', javascriptGenerator.ORDER_ATOMIC)
const cacheType = block.getFieldValue('cacheType')
return [`cache${cacheType}.exists(${key}) === false`, javascriptGenerator.ORDER_NONE]
}
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/fields/audiosink-field.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/fields/audiosink-field.js
index e8495abac0..32cc6cb057 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/fields/audiosink-field.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/fields/audiosink-field.js
@@ -4,7 +4,7 @@
*
* See more background info on openHAB multimedia here: https://www.openhab.org/docs/configuration/multimedia.html
*/
-import Blockly from 'blockly'
+import * as Blockly from 'blockly'
// import AudiosinkPickerPopup from '@/components/audio/audiosink-picker-popup.vue'
export class FieldAudiosinkPicker extends Blockly.FieldTextInput {
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/fields/date-field.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/fields/date-field.js
index 021243023c..b6800dd566 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/fields/date-field.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/fields/date-field.js
@@ -2,7 +2,7 @@
* Field allowing to pick a date from a calendar
*/
-import Blockly from 'blockly'
+import * as Blockly from 'blockly'
import dayjs from 'dayjs'
export class FieldDatePicker extends Blockly.FieldTextInput {
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/fields/item-field.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/fields/item-field.js
index ddcb994286..1cbabdf4a6 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/fields/item-field.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/fields/item-field.js
@@ -2,7 +2,7 @@
* Field allowing to pick the name of an item from the model
*/
-import Blockly from 'blockly'
+import * as Blockly from 'blockly'
import ModelPickerPopup from '@/components/model/model-picker-popup.vue'
export class FieldItemModelPicker extends Blockly.FieldTextInput {
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/fields/thing-field.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/fields/thing-field.js
index a498181aad..b22bed11f3 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/fields/thing-field.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/fields/thing-field.js
@@ -2,7 +2,7 @@
* Field allowing to pick the name of a thing from the model
*/
-import Blockly from 'blockly'
+import * as Blockly from 'blockly'
import ThingPicker from '@/components/config/controls/thing-picker.vue'
export class FieldThingPicker extends Blockly.FieldTextInput {
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/index.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/index.js
index 6923fe65f8..332760927a 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/index.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/index.js
@@ -22,8 +22,6 @@ import defineLogicBlocks from './blocks-logic.js'
import { defineLibraries } from './libraries.js'
-import Blockly from 'blockly'
-
export default function (f7, libraryDefinitions, data) {
defineDictionaryBlocks(f7)
defineDateOffsetsBlocks(f7)
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/libraries.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/libraries.js
index 0d5dfa076c..3a6e02083a 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/libraries.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/libraries.js
@@ -1,6 +1,6 @@
-import Blockly from 'blockly'
-import { javascriptGenerator } from 'blockly/javascript.js'
-import { addOSGiService } from './utils.js'
+import * as Blockly from 'blockly'
+import { javascriptGenerator } from 'blockly/javascript'
+import { addOSGiService, statementToCode, valueToCode } from './utils.js'
const generateCodeForBlock = (block) => {
const blockTypeId = block.openhab.blockTypeId
@@ -57,7 +57,7 @@ const generateCodeForBlock = (block) => {
return code.replace(placeholder, context.fields[placeholderName])
case 'input':
const order = placeholderOption ? javascriptGenerator.forBlock['ORDER_' + placeholderOption.replace('ORDER_', '')] : javascriptGenerator.ORDER_NONE
- context.inputs[placeholderName] = javascriptGenerator.valueToCode(block, placeholderName, order)
+ context.inputs[placeholderName] = valueToCode(block, placeholderName, order)
return code.replace(placeholder, context.inputs[placeholderName])
case 'utility':
if (!context.utilities[placeholderName]) {
@@ -66,13 +66,13 @@ const generateCodeForBlock = (block) => {
return code.replace(placeholder, context.utilities[placeholderName])
case 'temp_name':
if (!context.uniqueIdentifiers[placeholderName]) {
- const realm = placeholderOption ? Blockly.Variables[placeholderOption] : Blockly.Variables.NAME_TYPE
+ const realm = placeholderOption ? Blockly.Names[placeholderOption] : Blockly.Names.NameType
context.uniqueIdentifiers[placeholderName] = javascriptGenerator.variableDB_.getDistinctName(placeholderName, realm)
}
return code.replace(placeholder, context.uniqueIdentifiers[placeholderName])
case 'statements':
if (!context.statements[placeholderName]) {
- context.statements[placeholderName] = javascriptGenerator.statementToCode(block, placeholderName)
+ context.statements[placeholderName] = statementToCode(block, placeholderName)
}
return code.replace(placeholder, context.statements[placeholderName].replace(/^ {2}/, '').trim())
default:
diff --git a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/utils.js b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/utils.js
index c170b8113a..ed60e61b8a 100644
--- a/bundles/org.openhab.ui/web/src/assets/definitions/blockly/utils.js
+++ b/bundles/org.openhab.ui/web/src/assets/definitions/blockly/utils.js
@@ -1,4 +1,4 @@
-import { javascriptGenerator } from 'blockly/javascript.js'
+import { javascriptGenerator } from 'blockly/javascript'
/*
* Function allowing to call classes within the OSGi container
@@ -101,3 +101,54 @@ export function blockGetCheckedInputType (block, inputName) {
}
return ''
}
+
+/**
+ * Generate code representing the specified value input.
+ *
+ * Provides Blockly v10 behaviour for Blockly v11+: Don't throw a ReferenceError if specified input does not exist.
+ *
+ * @param {import('blockly/core/block.d.ts').Block} block The block containing the input.
+ * @param {string} name The name of the input.
+ * @param {number} outerOrder The maximum binding strength (minimum order value) of any
+ * operators adjacent to "block".
+ * @returns {string} Generated code or '' if no blocks are connected or the specified input does not exist.
+ */
+export function valueToCode (block, name, outerOrder) {
+ let code = ''
+ try {
+ code = javascriptGenerator.valueToCode(block, name, outerOrder)
+ } catch (e) {
+ if (e instanceof ReferenceError) {
+ // Ignore to restore Blockly v10 behavior
+ } else {
+ throw e
+ }
+ }
+ return code
+}
+
+/**
+ * Generate a code string representing the blocks attached to the named
+ * statement input. Indent the code.
+ * This is mainly used in generators. When trying to generate code to evaluate
+ * look at using workspaceToCode or blockToCode.
+ *
+ * Provides Blockly v10 behaviour for Blockly v11+: Don't throw a ReferenceError if specified input does not exist.
+ *
+ * @param {import('blockly/core/block.d.ts').Block} block The block containing the input.
+ * @param {string} name The name of the input.
+ * @returns {string} Generated code or '' if no blocks are connected or the specified input does not exist.
+ */
+export function statementToCode (block, name) {
+ let code = ''
+ try {
+ code = javascriptGenerator.statementToCode(block, name)
+ } catch (e) {
+ if (e instanceof ReferenceError) {
+ // Ignore to restore Blockly v10 behavior
+ } else {
+ throw e
+ }
+ }
+ return code
+}
diff --git a/bundles/org.openhab.ui/web/src/components/config/controls/blockly-editor.vue b/bundles/org.openhab.ui/web/src/components/config/controls/blockly-editor.vue
index 753955a83d..686f038296 100644
--- a/bundles/org.openhab.ui/web/src/components/config/controls/blockly-editor.vue
+++ b/bundles/org.openhab.ui/web/src/components/config/controls/blockly-editor.vue
@@ -1193,20 +1193,27 @@
textarea.blocklyHtmlTextAreaInput
background #ffffff
color #000000
+
+.blocklyComment .blocklyCommentPreview.blocklyText
+ fill black
+
+.blocklyComment .blocklyText
+ color black