Skip to content

Commit

Permalink
Several App handling/management improvements (#413)
Browse files Browse the repository at this point in the history
* Prevent issues on Regitry if `developerId` has dots

* Added new attributes `runParams` and `creationTime` to the `Interpreter`

* Added `getCreateTime` to `roDeviceInfo` and other small improvements

* Updated private attribute `creationTime` to be `readonly`

* Implemented support for Deep Linking

* Updated `brsFiddle` examples in Readme.md

* Updated API documentation

* Refactoring of common interfaces to simplify app handling among libraries

* Improved web example to use app list and renamed `channel` to `app` in most places

* Renaming web sample app folder to `browser` to avoid confusion with term `app`

* Prettier fix

* Upgraded typescript eslint plugin

* Refactored app launch and splash time

* Fixed some static analysis issues

* Reduced complexity on API

* Missing declaration keyword

* Transformed web-app toggle images to buttons

* Upgraded some dependencies

* Upgraded dependencies and updated package.json

* Prevent TypeScript to upgrade from 5.6.3 for now

* Fixed roAppManager compareVersions and add appList to CLI

* Added tests for `roAppManager`

* Fixed tests

* Refactored runEncrypted function to reduce complexity
  • Loading branch information
lvcabral authored Dec 9, 2024
1 parent 02c210a commit 079629e
Show file tree
Hide file tree
Showing 77 changed files with 1,379 additions and 864 deletions.
1 change: 0 additions & 1 deletion .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ module.exports = {
"plugins": [
"eslint-plugin-import",
"eslint-plugin-jsdoc",
"eslint-plugin-react",
"@typescript-eslint"
],
"root": true,
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.vscode/
.idea/
app/lib/
browser/lib/
bin/
types/
node_modules*/
Expand Down
2 changes: 1 addition & 1 deletion .prettierignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
types
app/lib
browser/lib
bin
package.json
**/*.js.snap
12 changes: 7 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ This repository was originally a fork from [**brs**](https://github.com/rokucomm
**Important Notes:**

- At this stage, apps based on **SceneGraph** are not yet supported, but this feature is in the backlog to be implemented. Please check the [Current Limitations](docs/limitations.md) document for further details on what else is still missing and what is out of scope.
- Although **brs-engine** runs channels with user interface, it has no intention of emulating the full **Roku OS** or hardware devices, it is primarily aimed as a development tool for the **Roku Community**, and also to be used as a framework for running the **BrighScript** language in other platforms.<br /><br />
- Although **brs-engine** runs apps with user interface, it has no intention of emulating the full **Roku OS** or hardware devices, it is primarily aimed as a development tool for the **Roku Community**, and also to be used as a framework for running the **BrighScript** language in other platforms.<br /><br />

<p align="center"><img alt="Simulator Web and Desktop" title="Simulator Web and Desktop" src="docs/images/screenshots.png?raw=true"/></p>

Expand All @@ -30,8 +30,8 @@ The **brs-engine** is developed in [TypeScript](https://www.typescriptlang.org/)

| Library File | Description |
| --- | --- |
| `app/lib/brs.api.js` | Provides the **[Engine API](docs/engine-api.md)** to be imported and used by the Web applications hosting the Simulator.|
| `app/lib/brs.worker.js` | A **[Web Worker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers)** library that runs the language parser and interpreter in a background thread on the browser platform.|
| `browser/lib/brs.api.js` | Provides the **[Engine API](docs/engine-api.md)** to be imported and used by the Web applications hosting the Simulator.|
| `browser/lib/brs.worker.js` | A **[Web Worker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers)** library that runs the language parser and interpreter in a background thread on the browser platform.|
|`bin/brs.cli.js`| Executable **[CLI](docs/run-as-cli.md)** application that can be used from the terminal: <br/>- As a language shell - [REPL (read-eval-print loop)](https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop)<br/>- Executing `brs`, `zip` or `bpk` files<br/>- Packaging `zip` files into encrypted `bpk` packages.|
|`bin/brs.node.js`| A NodeJS library, similar to `brs.worker.js` that exposes the language parser and interpreter to be used by Node.js applications, the engine CLI and automated tests.|
|`bin/brs.ecp.js`| A **[NodeJS Worker](https://nodejs.org/api/worker_threads.html)** library, used by the CLI to launch the ECP and SSDP services.|
Expand All @@ -56,12 +56,14 @@ This repository provides a sample web application you can build and run ([learn

- **BrightScript TV** - Run full Roku games and apps in your browser: <https://lvcabral.com/brs>
- **brsFiddle** - BrightScript playground to test and share code with others: <http://brsFiddle.net>
- Hello World - [Shared Link](https://brsfiddle.net?code=XQAAAALoAQAAAAAAAABJKoMFQkqVI3uU9GwRbyvC8VZIwGr1xxcorn5mLVHBqbYBRZrnQferacFYVXf-MZOo4bT-y0hoecSHWTc3N59pXIhyNOvVsKzC_7nNE-DmSnxEBbk1E9Awl3-ZNlgnG48X9F8HBwgnkZ5Q5UvrozNvOQxdXAMzfFlJdvB3MBxtd3TbLGtyGLYduwviICLK0N7GkhsZnJJssoQhajWMnVLYVvpNHT5OkWVu-_PxpfWxJ-ey-77iAeh-ooC6L7bGzHAMwljI63U5zcarI3AVXB9TQnsj5fbZT8oMiiEtsapDMcoOcqQF84fecgHc7GqK0y7gCFqIovRz9N03KJRXYM6_NY_BT8qbidI7UG7XdQJIEC24vOXkufqid_zZ6G9saWSnjNBW_hw_WQ)
- Hello World - [Shared Link](https://brsfiddle.net?code=XQAAAAL1AQAAAAAAAABJKoLnIqZU8B3-6dP2NsOmYLl2BuS_zvKqVwuCb900INmQka2JaG6109nguctrC4j5eeejusZdPZeqN7ODPGAHtZa3CitoUr0Lzf0CNfBMe_fKYxZVbBd3SFCx2pochQ8vXiLaMlX28Cc1xvIyR03lxJtEM3BO0wVuiOYr28HsPq0Yh-7QOe8y1A-TeWsDOMOEQO0YDxB86jAP7EXurCri8pscM-e70RBruCRmIlFupFBKRsE2GneP6qIr0cz0r69DJ9xuBnscqSBt8CvQFz5haqlrzi9T-BRs4qM1qQid4peKgfvF6s9QEy9nHMwtR_YJMI-5PBvHmU0E4knAAMoNG-Sy1UydLH0sb8RiwTn9IajExgUnwz89MTn5AWfJx2KPUY5QPhpAyFDZnR1H_-j54Fw)
- Bouncing Square - [Shared Link](https://brsfiddle.net?code=XQAAAAJLCgAAAAAAAABJKobnoc8U-fMC7Yn0OmySA8M8XeYQjA-xlBhDmgkQqkyZorrnH8Z2n9OanRbQbS6T-zM3qPN3QH8Fzgr6UPhr5Cbo3rvloawPAr6qehd0XS8TPatky3-TLgFN_hIhDiNkxNg8livrXExKPdBlI1StdF_-qAzOZT6wC1xPKIJj2Sq8hKcRoNJYYH0Bc7y3vXJ1DTvcu9rAqps0k11Aj4tW_J_zSAHhhHD-zHJJTz1lYapWSGrBQHbhn5SMHQViWFzHfVMyo1Pxz8LUAjiUUHgtkOGpX14MRpCMTM85PbPhb8-KbGtaD4y6zaZgy7Q4zS8vtTxZ9QGHO1gsyGNWb01plO7Lk61lg9c6jOrKT4lJtn7mQme28XpLj5TQrGUbXGdw5lKu7TamErtcuypOxuBSMXVi9i_Ti874POAyL47IK7O5ZaBhBO1p5L2A6iQr6j1qzdmfd8N_9ZumCfxhd9XPg69t8sihYQVvI2vORW5vW_vxKQaDPlkjPyTdQtA903T2ZDiyKVXPpfElWsIntZqXdfg9aY0iXeyCV89LXf69WTkge8D4_dOPH8-ia5myHAXNyxi54k9qKwnkgpCDXTpTRdWB8AO_HuDn6AG5mddseP0uuDjZjbcYpwJRBBC5KJ4ocj8rH_bi5ZLCzRa9ryVdyrHwrDOpdwPRiUWsT7Cr9VEUuSPRctUp1amgHbIJKhLTTohiq3TvRAlItkP98bQhC5M_yTMnIyVjZsLrQWb5Q9MAa2VdwByE-pf4b3OF-SeGw5j-K7TOebCGz0yRNnF6zMHgUMPVYhRi9zNU5Mw_avQ0dCXMxtv9oU2_uKzkB0RCOMM6qJGSnTa4a6B0w8D_LbgLUNdbjVlAZCLpOPBl2DhR4VsV0R2zWlA5jqamY7wSeZb-CSsOdRJv30dXmt3bOKc__nYH8rYRcMlAZb4sT4aesdDh5Yx5bsWEGBjWV2Ojp34muGPJbVlkbhWOw0p0aip4dJ-jL9HfaO8zG_blhNCMsANapZ0VonnO1JaDR7cxeQeUDDpcskFPIu2DlIhLzQnGVFRRXUvU8UK97RQ0np_NQ8SUjcAoiMUNlA0HKjK3d06BKaALQwDwPGpCa1I2CksgPBrCt9f1H7csg_qmE-Bx79R0rehOLmorl_iiROXh0riaYyQlXnGwRR8K9lZJ-NU5iq6zaol5GjfdB5JRhWmzqVWFlOw9cvgI9KcWoCD5j5R1zINYsJVeMdQwLYc-LdEBfziGqS6HAyB-2fZoN_8u9gPwdI-kaKx8SCMHyiPOIhX1xk6DlY85qrLxL0LQJKf--0bS)
- Calculate Easter Day - [Shared Link](https://brsfiddle.net?code=XQAAAAL2AwAAAAAAAABJKoUDU-eVDQnCIwGjL4bXrsOaRoDR7xUg7l7ATcAP2V7HvXEvU9p3zuMqYelSIckyYmoqSzPiR_yIJT_knVClROMTQ8ImmKudAnIwKv8WYKGGonwzgVUmLT0867k3otq0ZPQoV5mwSO1oRHzkHjvNCtuBfDH5wrogZOua4KltHWcJnxjl0B9yg82onvoaeBER6jlz1JgQoTBNQl7ZhTg01AoX450nozCe3nyd0BBXDG2it0PHgOg1UILanj2fdpsXuTi8BM14Vj9mmKhiaSk614HkwdEuWIhooOB_d9wRox3XJg21lF7OXupqgZBzZh3hAQa8MUqzSmpVX4dWe9FHkscztF0jbIc7gwmoUyOubjzcRA_3rZuM1AkQr4W4PMq_J63oF4el0DxVbFEbXK5h8stU078VCa_b9Ydi0OMsUY5I_o74zSN9SPD2pmojZTs6Fyh8Eo1vSsd3F_abdPvrOnxkKH1yCt59zo5zpVN144ihVYtaVE8MTZQc66is7A0GXfCNt7Ud592YNxSujFrQST2srrBxR6psz9xPdYhQBQd_ZzkK1J7ctVqHzfBM2tQNkn1Gp2-zBlaLjo1dlJ9Hj3zpcGK6N1VcUF7ptImWf0n2QvcTvo45Ml04CLN7WyNnyMPMBZkIEJAb3dyFwMVQNssvtncDGuAtsf2yxt4O9tjbAehdO-KOw9NXPKXiGQ1mUS7_PoudiVgThfqSrk20LX2fpdJ0Bc3QmeEhWzzOqrcri_-4fOLE)
- Download Image and Music - [Shared Link](https://brsfiddle.net?code=XQAAAAKGCQAAAAAAAABJKoqngm5uKnfSsjl5UQrXmxd6cpL9ibQbDIH2ngkfAM04Aw7W933zvEnJjH04xwGX5MzE4NPnXXJ4R-S0N0Pke0auWD5rKMnq-kCEGc1xzCrQHpBvNufX5RuAZ-XVJ0pCFrcQxv8HOPL4K1KofrJuuuk1NQ3ov0LN9cGj2CQ2T0-RY8gMJK4JG1Gfe53uG3inR2SHLm6rU3entipqNEhWfFixB9H4C40LJgKeeibFjm4RBrYtZ8iomgkVuhpIyYxX2ag4YZvaUBpBFtyy6e6CLiVQmaCSNV0IqKdUci872aZls0WTpvIbX1KSDOCHpW4kDrF0yytMMR7yGnHEKFWsX8ddDwEhYKyRMtwOtYICzyFJ7BCe2jEd4FyaXuYsJ8HUfVrTx2Zul1hB-ejYRSpnoYabZkPVMTbS5gi2tzwSNEDuYLWXsMqq_ZIDiGQiejHWb3X6LOzv39qn-sEtvlhGv7N-fFb_hKp6AzPPdVxQqaCgRoTB-UmdfDSFckPmK8EEVrD9PjrfGx1CMGQm2AzD9hzzzaIMlDnRVHBe5xj2BSNeElVwEVhJ8l5n0qgElmUk8YPi0EjhF-00cGHVWs9Z2jaMZnbObeWb5oZMTQ2OXHGn08y91OG1-rpFsROc1VJe7XG6U95M7TZUwrWRdHK2XSNAVvFKtjLncLlQVZv_twvPzh0ODt0waxhFzc9W_uIJgK2ydXT_0vckVVmzbj1jIFAxCLvp4PbksrZDLoE3He9dQgqmJ7VlnuXVsmFbf4VL9WzKt52AY9B5jlXUlT6b33BfRnSVAcU7APCWih38ivLAPzxkSozpv-RKi2U7UVQsYJHIJm8-si4KeJ5GMSoOuF3Yagg5ZNUwf-sHevTyI3LGh1_hKJRhBHY2lZeRHKr0N-hTWQbXTSFbPY-Nf0kTrykdBNAX7OlmPrdfEMyah2IvNykyMrtQdCcD2DmyPIn5yFkTtYboDvTQPAOaXEoZdF6PzUMixyV_hu0VsuKKQvrxsrVeKtMxx2wDbmHMNWbNXNm5Rg4Avywq8g5bBr2rG86BPkA6bx2B_9m1GUcD1ovzxTaUpwu6p5WTOtnSvbg8sLV6TJfXqRgIm4evVFEv3Sh2zMx2hIKk0hXALe1z6Xn4_LbGyGKyxOeJtfSK12QF56KN-NsUQSMhIv2ucIrJYcYtE-MR8gH0ipvEfuyInRySWEhlsesN_27c__C4yiY)
- Video Playback - [Shared Link](https://brsfiddle.net?code=XQAAAAKMCwAAAAAAAABJKoqngm5uKnfSsjl5UQrxThRucpL9ibQbDIH2ngkfAM04Aw7W933zvEnJjH0_TcYKuAb8pP4_pFUty4bsZ2ZGN6blI4HbCWU1o8kGuMYqVThNrDhiPIDtBh5rXeosnLR79JxTFgkSi4riS7OV1YxU2DSgn9ndUJMQTbe46AIqdpF3LfZnmkXgW4yR9Jd28iMajr1P6G7zSPRt0-hAg4owerHW0KUB0f10IyD_I-zwLEyjuVVjh5VYgE7r9pLU8r845lZ9-hnD0BibKqo7Fei_J_KCRVxMpeDmF-E3ZZdEgPjW5-rLUDn3dv0XDH6rKIuYdnx075Y4XefhFNACmnKFxvoi4mAIwczMbed3zSRLGWW7IqggC8HJ1rH_MDVp4gk_58cB_Bea5Wx6wFgZzrPmk5H8rO-dVkgpnJL7bevIMmyuCUlrrE_HLB2oopUMdnPggp3_s7xnoby6w6CJ4-gjkZYU-bDWC2pRztEk_DbISFmsy_OG_Pd8tTQrRBJGhZtSe2BsSziJ_9mePKvHH_yIjPeQjnR9tijZ6Q_ryDR8RVpuEFZRGJ6z6_kk_vZnFmYidHHBV_Oy_GmhQOpTRKe2htjfyN-pBZJw7Tu3VcTYmOILWPgJUpAbB8MkDj-c2BbWDogdsAgpZdSt_I40tpHDbvRp-vklV69_IUDIx5fquD1el8qPoDtUHblJZGKLHRvASj7lYTC4qGI-mg_IZpReBXMBLvd5VVHViQp-r7T4Y8W8pi7zZ7aqNci8ZXCXqLPyBLFwtEf-0ZICdAgmNjjFztjW217pOUEA4XIXRulcatttsH0VqMDB3y2tQv-pyVbXmSfpb_mgqG7HjfgfmYu4H0aV-Ifp3pwIz1tfk2nEHI90_rh081-lSZWTVT_kOznTwkAvjlLK8i4KzH-GS7jdlkhUW81Hz1ln6sy78NHI_MeqdnJqFzOpy24DX1qUaSyrThOd8_mvSRVcaQNFDJ1KgWimc-oZpD6MJQ1fbYFli9WHdpPhD7lI6OPlAP4dSfwf_sGLe9JHkjrrhCeXNI7dAF34raawlqZwAP2UXY0DQAJev-U2wJXHedkarK7KcLMmlYVFNOIE_bDQ-F0gJmifV7DR64js9WAQTI0NKnN7KP0v86lEF6ZoGxHlqy6bP_0NSmiNEi04UL5b7DKWRTjm2O7HlfKt-3E5AVn40noALDF_JvnykLL2l8BsYOHiQHZeh_p6sWvFLVqqK0JP7n21n6LUDa-lX6Jbjkv1A9XlXhfT2RZCeBrJW-c_d_QkRfqnlP3PKYazNGevfg3dfJHJczSET4jl3gVXXiJY__fIHPo)
- API Call Example - [Shared Link](https://brsfiddle.net?code=XQAAAAKaDwAAAAAAAABJKoJnEhkACX8vDCmMt60KGGoNIX-9BnquVKbSjLc-L1DvpNbgtZS5eIQeJPrqKnZHKcPFPi-V2EYk0SJU-YlSJSWfr4hWs6qlQyn7uHA6iUTUopF3eDWTAHOhq0rKGfghXKHkc5aE2EhK_2wKGUprB5Y2dVgdJCc9PeacM021sytujkTuIIcrXJ6jFbnDu-wT-hR1MFYpSpbn8SiLlQ4IEaPch5rHXjd1YgwluF87--5cGQBgwMWjxZoc7Iyds5DoMRoIQbsiLYJBPERnExhKgpJrWSKcH_BtiBmFwA0oagupDSR1LeT83KMEGXFLiXpgd8QOcUh3L8KCNeei6PVRyaskp-FxXHZaBoaySTrKQo_cEwWpJ2-108EM38JYrgRRA_4Mn_Qyj-6-eGp1Nj3LVUVt_EeOJGi-cRiFx5nIIJfIclVqTL9C9Nuih-AMwR2ob2YQXxm7k2JsXQXuYdJLZKWLeIsMd3h0BolciLvAOn2OdnKM90fRtTQ110KATp1-Shf5Rn-HyOKr_HlaNp7OV3M9Ck-U0DE5dxDspTVmFdJSQJRNlaaZObo55BCjMm1hn831sPoH0jozMs1X2TyuSXnXs2zsUDhjERmRgaK9_wZR6yXreJ34XEFuvebjqyf6Fa0Ddk4uUQNJcij9VAXUhiTKKvdV0SLGnz4k_U5WNfEq5h0NGj38U7r2t_HPKFTULiOfsij9symsKNX0bILzoeuli9B0TqobKCT2g8wFQzDodtCYpKWGTr1EDOrFnVHA__jyZA98vB1VU0j_YJsDC7lNOslovfRCbmZ40wQ7dKoBtR3DaqWo5w6CVdGmsZHlBvE2C7mCznY6G2U5PwXX6aUSjvrrEpYmjcVd83UiptsJWcdtFTw_-Qr1qIcwSi0hC396b-rCWqsuCx12Znp1qA6F9GgDxYNuIutSP6sF0ptZ3Ruq12ulH-YDp0fw0Mc01YLtknHV-PPjjE1lLTyCkVxsgU5CfHLGgqAjDBoIv57t2KQex5idlemNuQ8VjFMBCCxMUeylyEuj-FZfiYX-bn1SBNPVXo50oMHoNwd4R-ikX4nSGk8sypT-MWbxcSc4PM0kJJ6-ERdTtu-Ip7Or4jmVGvLIEe8Lg-6BV0HwB2yrX2LY-o_Ns4abDHekFZCaJ4qhF-k5jsu9ltfnlaTeKOhOyhvk6shNsrLhLeWHRDB9CYneXM8S_9_8lj8ZSAThsFHbMy91tZfWo9_dVMzsZiM7xsuHEyavMQv9GvFIfEvQy0SyeTbPs-3AhQG5U_l3VvdNIyZzN3L6ApiQiV4XZgKR3jqXTYnonVBCmGNiaGJ5-9gtWQ2QaJs8MuGnYAV_pmoWugQpTtGpSPXG2rH9lvC9-GSW7RGWTAflasxAF2AU8PPRVCv2YyozaA5RizbUYpyZ9VrzehvIGBmznwwxhMLaFfiwFCLKmPle17OKhHdS1Sqzk6ya-OqbArBlkCooifrh7B0plHulf1TdZXWM7Xi5zhAskKoWZC4T6dDcO4aYFClxfOqzbldV84kunYEKxs1geTvYl1ei27N85RoX5h5besxzNGuVTRRHAXIfIEac7SHGx3hHx-gXDJc3zE_j3-L91cJVzdTdnhTCLYSqLTSalGa5ktY4H7ML57x_FhD2xMkQWaFUjl0fEaPX3m2N7QeErxFDzyxlC2yjZLCmTwsdz-I1OtRibKhZ8scjkadZD--C7bNHMXSr2t_J__dxH27Xe4JnK9lsZRa93YnGcCe3R23ICyRXvF0PGCkCBjvm4uZQsJvZzq7VQQ04FjaNcgAKanfFMIXFJSnrzimBdOWPIebb-7o727HHX6VzGE3vYpvM-Sx2nTKVySaDzev8u9x7hP_zLtDG)
- API Call Example - [Shared Link](https://brsfiddle.net?code=XQAAAAKDEAAAAAAAAABJKotFIyJTtYn-qlq_R7JJF5alJytQ-ukFasPfytMYIZwnWfTlg9zXrp5bJJXqfYTKfzTV47CRJDpi3IcBcVXiHNSMn59_J7Qhs7_oXHNpJn-txA-iu3s-jGt5ear9zuwGQkCafWzHJg-q_pGp-kDavfBiSjDJJvwVeOsi_H9PW0Bhxoywsc9eABYR9Gw7re5gGWQDnwbigwhWCwnEQ-3BE6550fjnLdGODDiPY5pNZdOTPd01CLJnquhAdDZy8MgPc-jqAkO0VARvVr5Kysy7qSygtw_V_mNFs5gMw7qXbWu0tTao9ePNZZH78dgFAQSKnqZoq7_S3lUtux3c2bkMbpzT2if20fJ420fVVuT5gAwBOVGbDLvn7jtx0W7sUs6ovhSgI_0qBgwViCLjy-QuZ_Ca5QFkfRXLxWhOv9kE4AWLruPpdT5u9qFmzruBqzF_Tl8KcWHaT5lqFyqumCUoZgpADWuOsbXp_4dkKHpab1ZTFLQ3S0-DzrLz0A8QFYmUCdC4omGp63s80wbG9ei3WqDOqy-2sEkJAJYwcTXe12QPrDpHrf6Ov8pLbWwzDCr5gBqigE2PF7ISXQYr6iZfyhoHHgXS2vMO1BHHHNXV2kwrUmHzGSz2xOHfLDXb_pApUAtBCWcujidCf1UyDcyfItdcxfIkV0iQEUw9mAOXvtQGh0NSEvc8EcW6kT8EJvCDA9BXHnxCaD-cpvbR60bGvWW4XGO90TN32nHDFdbbYAXnlsi9tWgLtYbKdcX6q1VtfKV9raIU-VYAUXczq0w2Y_CKNknBAvmtufo2g7rBH9Wa5K1L91W4sdZ5ZMG0IsJkW4nX44HVzDo-rfcQqPG2-8yR78T29EVx26qVAqbi2lRxhPdGlDZR3du6lg0wBGbKB2-KRXPdShgN8CoTRsrs3mSmJXFgWa23P9ovO4W_vmbex4xjMOSJafbP9Q6nK4rltS5f6njXiAG-t5JtBT7y0dx6_WXBwDOTHdhBocrEFMdAoDVHoec6_ILiiKdbYhcMU7pQzjneBiGPgXhTnBXVTDx7vfYUB8b_AgzqT366V_tAHwIvl7BBBkN1L1FoH2CUD9PhkR7r4QHN4hfgZ3n7Ng9qI2pVilgfgcq_KEWR3FB8KNdns1J50W7SYuZ1WA8PMopCNZYevDeSZDOlIXAv01MztGsayTeVbQFeF7aTLC9uUMibiBpEJHVPVncfQyvRRiWvB0mJf3fQanGcuR_Tt9KTxxZl46jrFmY1iuT_pOWytLwuix53ko01X1gcRRXQAZpC1as7IHO9hFVI7VKGRII7Qc1aMLGMUln6PtTTNWzGwU8bQVFco_7BBiDghblJ6JmBd6PCOKZT_cQWMc5i2BdWLAxh3dr0Yq2GsNHPh1iATvPSBH71oKIdiur2N0gQMdrGxKKwrZLxzsUX_5CVDO4JLIWMITEtSYwAAXTeJ0gnBQoATVGO7xf5G58pr3jkRKk1NfdkzcU7rqSNuGEvyRfRqJC-fjgTwURUDEm7VGJ0J1Gapyw6X3tP92V9jyfpCtS4pKAIk-qV_xOSDaM03nAQPPN2cLsVY72yUV-AiZrrDxcrpLkvUysqGfGQybUYmZhjxabohC8tRvO-OAH2AphQiUzEo5gw-MMpfiwoeEh3j1HaufaHffpBRX-SK4RnJS7g-za4cwwGKOCoI8WKYpv-U8IrPIPEr7F8uxyqbWa85-CXJ5_f0VEjOy16XQ5gOc6ZxZfF57GF8spiEY4RqB1V3SMiSj3doH8-IGFw4ND5GVlct5AKf-KBb7hgWRJ41jA4xnl6QYIFS3iyuL3yEsWjSxLyG_XIZEE85iNZDldpBBgzgYKLxukTQUqHR6wbY3GJ9LeZcWKtOw9_Bej_WTKFbF3uUevfQfBpvpQjFTj7Kz9bkAU1ceSWBXLheGp11b8uKiTKkup-OIMWoy775O2fQ7egtANDYFUAJ2kpCtQExo62bT2Z9ahpLFHECFxJZaRqMnGCzJLPqLgdUlONKlbPKnIP__IaUaU)
- Snake Game - [Shared Link](https://brsfiddle.net?code=XQAAAALcDgAAAAAAAABJKoSlctaqcQ9tGaWSdUHrXuqR-y6_GbR6awG83rYQRcdoycHkJ8MFCvKH7gTK_vW6UgUXwXXR3errMRkkWHDAf6EtfvZhhrStj0ebMCVuI-lw2r_IMbOmR-Mp0UisKJluxhBof7Fe8gk7R-rj00p60KZMJaFUITmjx-lE5H1fW4m9pTGoVPDOxvJ0KBpdcrPdzIJZD2ONw-UcA9--COJb9DODV8pyO4e1dn32T1V2kh39SrM5VHgICzTHTsajN6_hBKsKOFc0xivTnldYZ41pbirlPTC1nKX8LjXpkHeTxvV-NWcA50XR8Wrm0Fl05rtjwL7hHumCwZc75GY1ioNTMQoe5JSDL02n0Jf0ZWEwuBleP5O_OckNjn5o0ANbhu39ZlF4TEbpst2ac0F0ad4_eQCIseeB44BgoJwBahG49-Fry-afCaVqC8qtZsvtj7AlCAyYFOPOWiSioqopcqqWTF1XGG7n7HI5Qtj6D1h6ajT9zzy_Pn6jJ7ICSdDbOFq6GP7LGjHglUF6I91yS8Vxh8NQSAZgi4PiYyZbX4uJtsDZsvjhZpFOg4tQvV5TUCtxLtQfe7Nt4SZEN-6OLJiPFMR9hME4EIyV_OfxC_T0XrPKIhduA32al5K1L6STy-ntJPYdkKWfMP3kNl82aDEwm_XCvIflp9dcY5ADxKcvOdFYqCuOyFiqKcWjV_RWI8I_sqr_p2E3cKF7sZl-9jzFCtMarZCM4sQpgyPiJkhjm7IwYFJkEMAzeiAV9BPB7on9ReUWYWIsOOA6aGbP7ZKvdw3CNsda8qImFKeYKrnoPySnBQFCxDe-26_ncaH9QQ3jKc0xzi8z0SSaZ-xYe-rvw6FFMqrKHCg2j4U4Drv-AunjhL7Rh0HjBSPkzm-tYK9GPj5xyOEaIrULWdg8kG6hu6arEfMZMbSS8b0wW44QlTr2l4YzC-wuzRbtmBzxn04f5thX0rHxgUR9GpRvNgQnob1-_pG2phYoezVKaIbFoa2VEp6cQZYGgJxW-4VHGmL_ofJG7taOYjjq04EmhVKm7c21z2JPnOTk31qeEd4ZqHMWVomSPDmVHAvVt-RM9_rda71zSdVrgrNIabT9sFTfFfgUFbpo5JyDASVJ3_w7fLFH7zTIX_kNoWg1WQXnAeay5P-_Hg3LzmnzmT72qolkQKwYzDCYO5RgcrKYc9QfVGDuZwmo9r_tGpvNgTX5ffCa4a_kAL-fGWb6O6gz_lloYvQEM4WHB8d9ZNR-U3jZ4DWRAZHsmeIHdKttU5pPlE-CDrTQAkZMdlReNxWHE-5m2nCp2hfwgUvUKhBai9u34OSoPAd3rE1yePxiy-AVOV0OZUtiA2109a25frwbDLYRg2-lJRSGEzf9kadWrhL90pr52yZcjlBMUAaElB5TtQDJkvejpr0pA3-BJXK2kNK-NNisss1SzCR25FxCzrmiRUHRLInLpNoLk-CxzFAkbjHySCsXXnNp6gtXD3Cm82m8P2kl-ts6QTXhf4rHCcNtUfwYZPWLehVEZtfRgfm-HhI)


### Desktop Application

Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
34 changes: 21 additions & 13 deletions app/css/default.css → browser/css/default.css
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@ body {
z-index: 1;
}

/* * {
border: 1px solid #f00 !important;
} */
#container {
margin: 0 auto;
background: whiteSmoke;
Expand Down Expand Up @@ -59,15 +56,15 @@ body {
visibility: hidden;
}

#channelInfo {
#appInfo {
position: absolute;
left: 320px;
top: 560px;
color: white;
z-index: 30;
}

#channel1 {
#app01 {
position: absolute;
left: 398px;
top: 135px;
Expand All @@ -76,7 +73,7 @@ body {
z-index: 30;
}

#channel2 {
#app02 {
position: absolute;
left: 541px;
top: 135px;
Expand All @@ -85,7 +82,7 @@ body {
z-index: 30;
}

#channel3 {
#app03 {
position: absolute;
left: 683px;
top: 135px;
Expand All @@ -94,7 +91,7 @@ body {
z-index: 30;
}

#channel4 {
#app04 {
position: absolute;
left: 398px;
top: 245px;
Expand All @@ -103,7 +100,7 @@ body {
z-index: 30;
}

#channel5 {
#app05 {
position: absolute;
left: 541px;
top: 245px;
Expand All @@ -112,7 +109,7 @@ body {
z-index: 30;
}

#channel6 {
#app06 {
position: absolute;
left: 683px;
top: 245px;
Expand All @@ -121,7 +118,7 @@ body {
z-index: 30;
}

#channel7 {
#app07 {
position: absolute;
left: 398px;
top: 354px;
Expand All @@ -130,7 +127,7 @@ body {
z-index: 30;
}

#channel8 {
#app08 {
position: absolute;
left: 541px;
top: 354px;
Expand All @@ -139,7 +136,7 @@ body {
z-index: 30;
}

#channel9 {
#app09 {
position: absolute;
left: 683px;
top: 354px;
Expand Down Expand Up @@ -323,3 +320,14 @@ button.modal_dialog_cancel {
background-color: #fff;
color: #662d91;
}

.icon-button {
background: none;
border: none;
padding: 0;
cursor: pointer;
}

.icon-button img {
display: block;
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
31 changes: 14 additions & 17 deletions app/index.html → browser/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -21,31 +21,28 @@
<div id="stats"></div>
<canvas id="display" width="854px" height="480px"></canvas>
<video id="player" crossorigin="anonymous"></video>
<img id="channel1" src="images/icons/rect-bounce-icon.png" title="Open Rectangle Bounce demo app"
alt="Rectangle Bounce app icon" onclick="loadZip('channels/Rect-Bounce.zip')"
style="cursor: pointer;" />
<img id="channel2" src="images/icons/ball-boing-icon.png" title="Open Ball Boing demo app"
alt="Ball Boing app icon" onclick="loadZip('channels/Ball-Boing.zip')" style="cursor: pointer;" />
<img id="channel3" src="images/icons/collisions-icon.png" title="Open Sprite Collisions demo app"
alt="Sprite Collision app icon" onclick="loadZip('channels/Collisions.zip')" style="cursor: pointer;" />
<img id="channel4" src="images/icons/custom-video-player.png" title="Open Video Player demo app"
alt="Custom Video Player app icon" onclick="loadZip('channels/custom-video-player.zip')"
style="cursor: pointer;" />
<span id="channelInfo"></span>
<img id="app01" style="cursor: pointer;" />
<img id="app02" style="cursor: pointer;" />
<img id="app03" style="cursor: pointer;" />
<img id="app04" style="cursor: pointer;" />
<span id="appInfo"></span>
<input type="file" id="file" accept=".brs,.zip,.bpk" style="display: none;" />
<input type="button" id="fileButton" class="fileButton" value="Open a ZIP, BPK or BRS file..." />
<br /><br /><br /><br /><br /><br /><br />
<div id="expand-new" style="text-align: center;">
<img src="./images/expand-new.png" title="Expand Project Information" alt="expand icon" width="298"
height="100" onclick="toggleDiv('details');" style="vertical-align: bottom; cursor: pointer;" />
<button class="icon-button" title="Expand Project Information" onclick="toggleDiv('details');">
<img src="./images/expand-new.png" alt="Expand Project Information" width="298" height="100" />
</button>
</div>
<div id="expand" style="text-align: center; display: none;">
<img src="./images/expand.png" title="Expand Project Information" alt="expand icon" width="298"
height="100" onclick="toggleDiv('details');" style="vertical-align: bottom; cursor: pointer;" />
<button class="icon-button" title="Expand Project Information" onclick="toggleDiv('details');">
<img src="./images/expand.png" alt="Expand Project Information" width="298" height="100" />
</button>
</div>
<div id="collapse" style="text-align: center; display: none;">
<img src="./images/collapse.png" title="Hide Project Information" alt="collapse icon" width="298"
height="100" onclick="toggleDiv('details');" style="vertical-align: bottom; cursor: pointer;" />
<button class="icon-button" title="Hide Project Information" onclick="toggleDiv('details');">
<img src="./images/collapse.png" alt="Hide Project Information" width="298" height="100" />
</button>
</div>
<dialog id="passwordDialog" class="modal_dialog" closed>
<p class="modal_dialog_content">Please enter the password to decrypt the package:</p>
Expand Down
Loading

0 comments on commit 079629e

Please sign in to comment.