diff --git a/package-lock.json b/package-lock.json index 0e07fc15188..68d2d3b1151 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12582,9 +12582,9 @@ } }, "loadjs": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loadjs/-/loadjs-4.2.0.tgz", - "integrity": "sha512-AgQGZisAlTPbTEzrHPb6q+NYBMD+DP9uvGSIjSUM5uG+0jG15cb8axWpxuOIqrmQjn6scaaH8JwloiP27b2KXA==" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loadjs/-/loadjs-4.3.0.tgz", + "integrity": "sha512-vNX4ZZLJBeDEOBvdr2v/F+0aN5oMuPu7JTqrMwp+DtgK+AryOlpy6Xtm2/HpNr+azEa828oQjOtWsB6iDtSfSQ==" }, "locate-path": { "version": "3.0.0", @@ -13472,14 +13472,14 @@ } }, "openblock-blocks": { - "version": "0.1.0-prerelease.20230529180648", - "resolved": "https://registry.npmjs.org/openblock-blocks/-/openblock-blocks-0.1.0-prerelease.20230529180648.tgz", - "integrity": "sha512-OxjvAm/Ch9H7xoY/pfCTAhnuqrXJMCmpcTDa5gby/KsF5GPQyNJacW2Og/tNPG+bYbzgm3VaklwTJoc1Aahc+Q==", + "version": "0.1.0-prerelease.20240616014658", + "resolved": "https://registry.npmjs.org/openblock-blocks/-/openblock-blocks-0.1.0-prerelease.20240616014658.tgz", + "integrity": "sha512-7c2ND/P6VvLm1aGWxSubIJE8PtRfTtJghn9/isvj8BfLIVJAS2aWO6qi23yXHA7PKXg20Hz5YmpulSbj9upXmQ==", "requires": { "exports-loader": "0.6.3", "google-closure-library": "20190301.0.0", "imports-loader": "0.6.5", - "openblock-l10n": "^3.15.20230529115012" + "openblock-l10n": "^3.15.20240615153110" } }, "openblock-l10n": { @@ -13500,9 +13500,9 @@ "integrity": "sha512-QZgF6Bliu8hUSTrZJusTOVEquu7aS7UeaEl7GiFdsGWlJBUFE5JQf6rhfbgHTkN0srBTvwZZdTKqofMa8SSfuA==" }, "openblock-vm": { - "version": "0.2.0-prerelease.20230719104943", - "resolved": "https://registry.npmjs.org/openblock-vm/-/openblock-vm-0.2.0-prerelease.20230719104943.tgz", - "integrity": "sha512-GVrlbBSt5a+YoTArCHF4e3dRdqns5GZZnmktTXpnknbvjfH8lzYmQIWujEOIedffE7NcKTB8hQlgxliH613k3A==", + "version": "0.2.0-prerelease.20240618095638", + "resolved": "https://registry.npmjs.org/openblock-vm/-/openblock-vm-0.2.0-prerelease.20240618095638.tgz", + "integrity": "sha512-+QStR0wvcnK7U0PrkHq/EQKD7s4o3Qxb191PDcZhRjizSTGBu68ofWcNjnVscmjr6LItEnVDNxg0XqGa0VCaLw==", "requires": { "@vernier/godirect": "1.5.0", "arraybuffer-loader": "^1.0.6", @@ -13546,9 +13546,9 @@ "integrity": "sha512-0R2q5f83L0h+zizu3lAA3ZR/mzEl04U1jVVXIqf2rQbZs9eX5YGtx1EFQuuJJHzVXH10ur6hGKehR8yBOQmZlQ==" }, "node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "requires": { "whatwg-url": "^5.0.0" } diff --git a/package.json b/package.json index 4258471c148..68a7818d589 100644 --- a/package.json +++ b/package.json @@ -56,10 +56,10 @@ "minilog": "3.1.0", "monaco-editor": "^0.15.1", "omggif": "1.0.9", - "openblock-blocks": "0.1.0-prerelease.20230529180648", + "openblock-blocks": "0.1.0-prerelease.20240616014658", "openblock-l10n": "^3.15.20240615153110", "openblock-save-svg-as-png": "^1.4.18", - "openblock-vm": "^0.2.0-prerelease.20230719104943", + "openblock-vm": "^0.2.0-prerelease.20240618095638", "papaparse": "5.3.0", "postcss-import": "^12.0.0", "postcss-loader": "^3.0.0", diff --git a/src/lib/libraries/devices/index.jsx b/src/lib/libraries/devices/index.jsx index e58aa4ab24b..4794aac721c 100644 --- a/src/lib/libraries/devices/index.jsx +++ b/src/lib/libraries/devices/index.jsx @@ -562,6 +562,7 @@ const analysisRealDeviceId = deviceId => { if (deviceId.indexOf('_') !== -1) { return deviceId.split('_')[1]; } + return deviceId; }; /** @@ -575,41 +576,24 @@ const makeDeviceLibrary = (deviceList = null) => { let regeneratedDeviceData = []; if (deviceList) { + if (deviceList[0].isOrdered) { // External resources customize the device arrangement + regeneratedDeviceData.push(deviceData[0]); + } else { + deviceList = deviceData.concat(deviceList); + } + deviceList.forEach(dev => { - // Check if this is a build-in device. - const matchedDevice = deviceData.find(item => dev.deviceId === item.deviceId); + const realDeviceId = analysisRealDeviceId(dev.deviceId); + const matchedDevice = deviceData.find(item => realDeviceId === item.deviceId); if (matchedDevice) { - // processing the device which just select only one type - if (matchedDevice.deviceId.indexOf('arduino') !== -1 || - matchedDevice.deviceId.indexOf('microPython') !== -1) { - - const deviceId = matchedDevice.deviceId; - const deviceType = matchedDevice.type; - - let parentId = deviceId.replace(deviceType, ''); - parentId = parentId.replace(parentId[0], parentId[0].toLowerCase()); - if (!deviceList.find(item => item.deviceId === parentId)) { - matchedDevice.hide = false; - matchedDevice.typeList = [deviceType]; - } + if (realDeviceId !== dev.deviceId) { + return regeneratedDeviceData.push(defaults({}, dev, {hide: false}, matchedDevice)); } return regeneratedDeviceData.push(matchedDevice); } - - // This is a third party device. Try to parse it's parent deivce. - const realDeviceId = analysisRealDeviceId(dev.deviceId); - if (realDeviceId) { - const parentDevice = deviceData.find(item => realDeviceId === item.deviceId); - if (parentDevice) { - return regeneratedDeviceData.push(defaults({}, dev, {hide: false}, parentDevice)); - } - log.warn('Cannot find the parent device of this device:', dev.deviceId); - return; - } - return regeneratedDeviceData.push(defaults({}, dev, {hide: false})); + log.warn('Unable to find the corresponding built-in device:', dev.deviceId); + return; }); - - regeneratedDeviceData.unshift(deviceData[0]); // add unselect deive in the head. } else { regeneratedDeviceData = deviceData; }