diff --git a/package-lock.json b/package-lock.json index 4ebafae..73b43d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,12 +15,12 @@ "@codemirror/lint": "6.5.0", "@codemirror/state": "6.4.1", "@codemirror/view": "6.26.3", - "@devvit/previews": "0.10.19-next-2024-04-18-468957c25.0", - "@devvit/protos": "0.10.19-next-2024-04-18-468957c25.0", - "@devvit/public-api": "0.10.19-next-2024-04-18-468957c25.0", - "@devvit/runtime-lite": "0.10.19-next-2024-04-18-468957c25.0", - "@devvit/shared-types": "0.10.19-next-2024-04-18-468957c25.0", - "@devvit/ui-renderer": "0.10.19-next-2024-04-18-468957c25.0", + "@devvit/previews": "0.10.20-next-2024-05-01-553651f2f.0", + "@devvit/protos": "0.10.20-next-2024-05-01-553651f2f.0", + "@devvit/public-api": "0.10.20-next-2024-05-01-553651f2f.0", + "@devvit/runtime-lite": "0.10.20-next-2024-05-01-553651f2f.0", + "@devvit/shared-types": "0.10.20-next-2024-05-01-553651f2f.0", + "@devvit/ui-renderer": "0.10.20-next-2024-05-01-553651f2f.0", "@esm-bundle/chai": "4.3.4-fix.0", "@types/jsdom": "21.1.6", "@types/mocha": "10.0.6", @@ -218,15 +218,15 @@ } }, "node_modules/@devvit/previews": { - "version": "0.10.19-next-2024-04-18-468957c25.0", - "resolved": "https://registry.npmjs.org/@devvit/previews/-/previews-0.10.19-next-2024-04-18-468957c25.0.tgz", - "integrity": "sha512-P+CoTWxMIc8xNFvx2Xj7wcsvZEVz4YM4+hWiu9bPmgrWaPZHI1AqAu72MpIc1EutmaPThPAtJT+snT+eApmI1A==", + "version": "0.10.20-next-2024-05-01-553651f2f.0", + "resolved": "https://registry.npmjs.org/@devvit/previews/-/previews-0.10.20-next-2024-05-01-553651f2f.0.tgz", + "integrity": "sha512-y8S+Wh1fPAaWrZ0j6yodkuBDdW0SMv37x9yXq4siuhG50Kl1OHlNLLQtM/B5vuHlOWCQbyQCAT9oTTlI2L2UjQ==", "dev": true, "dependencies": { - "@devvit/protos": "0.10.19-next-2024-04-18-468957c25.0", - "@devvit/public-api": "0.10.19-next-2024-04-18-468957c25.0", - "@devvit/runtime-lite": "0.10.19-next-2024-04-18-468957c25.0", - "@devvit/ui-renderer": "0.10.19-next-2024-04-18-468957c25.0", + "@devvit/protos": "0.10.20-next-2024-05-01-553651f2f.0", + "@devvit/public-api": "0.10.20-next-2024-05-01-553651f2f.0", + "@devvit/runtime-lite": "0.10.20-next-2024-05-01-553651f2f.0", + "@devvit/ui-renderer": "0.10.20-next-2024-05-01-553651f2f.0", "lit": "2.2.8", "p-queue": "7.3.4" } @@ -272,9 +272,9 @@ } }, "node_modules/@devvit/protos": { - "version": "0.10.19-next-2024-04-18-468957c25.0", - "resolved": "https://registry.npmjs.org/@devvit/protos/-/protos-0.10.19-next-2024-04-18-468957c25.0.tgz", - "integrity": "sha512-f0MQOLxdPrWA0jWGSaS4E8MMR5RsfEZEi3wy6sVsk49t8zsATu1WOlR/Ixu82ghC7jjfCWAmwUEKoSuRCANn0A==", + "version": "0.10.20-next-2024-05-01-553651f2f.0", + "resolved": "https://registry.npmjs.org/@devvit/protos/-/protos-0.10.20-next-2024-05-01-553651f2f.0.tgz", + "integrity": "sha512-7fPEZlDweD5Qf4VAhAillxVgMr/YUz3h4F+zv/MyAd7Flk62Wawab/U//5LeZW1fVVpzL4AfqlBpPk5DSqOcTQ==", "dev": true, "dependencies": { "protobufjs": "7.2.4", @@ -290,14 +290,14 @@ } }, "node_modules/@devvit/public-api": { - "version": "0.10.19-next-2024-04-18-468957c25.0", - "resolved": "https://registry.npmjs.org/@devvit/public-api/-/public-api-0.10.19-next-2024-04-18-468957c25.0.tgz", - "integrity": "sha512-RZO7paSe67nlunF6gaV1zK773UajFgJqMkPdlyyp4TWyCwLZS+LHb3OoGRfIqIK8bdc6CXzttbBxZ6ZyrgWpog==", + "version": "0.10.20-next-2024-05-01-553651f2f.0", + "resolved": "https://registry.npmjs.org/@devvit/public-api/-/public-api-0.10.20-next-2024-05-01-553651f2f.0.tgz", + "integrity": "sha512-a6/xHzBy5io2qIf7pAzpTR2OwBrbrf+m+wrFp5GgiojM+G/F8PPv1yb593o286wsAFQuUCvkkqJ6YUThOWwABQ==", "dev": true, "dependencies": { - "@devvit/protos": "0.10.19-next-2024-04-18-468957c25.0", - "@devvit/runtimes": "0.10.19-next-2024-04-18-468957c25.0", - "@devvit/shared-types": "0.10.19-next-2024-04-18-468957c25.0", + "@devvit/protos": "0.10.20-next-2024-05-01-553651f2f.0", + "@devvit/runtimes": "0.10.20-next-2024-05-01-553651f2f.0", + "@devvit/shared-types": "0.10.20-next-2024-05-01-553651f2f.0", "base64-js": "1.5.1", "clone-deep": "4.0.1", "core-js": "3.27.2", @@ -305,9 +305,9 @@ } }, "node_modules/@devvit/runtime-lite": { - "version": "0.10.19-next-2024-04-18-468957c25.0", - "resolved": "https://registry.npmjs.org/@devvit/runtime-lite/-/runtime-lite-0.10.19-next-2024-04-18-468957c25.0.tgz", - "integrity": "sha512-EVRXX7HstD+/20tfNL9DS3zXBXuQPkJJvzqdLDhMHy3igsUjkEndENy8At9biNdYC/oTFYHSflian0vg+ezrug==", + "version": "0.10.20-next-2024-05-01-553651f2f.0", + "resolved": "https://registry.npmjs.org/@devvit/runtime-lite/-/runtime-lite-0.10.20-next-2024-05-01-553651f2f.0.tgz", + "integrity": "sha512-fDGCqVU9JRsBMq4BiOlQ2RNRRK38nXoDmHvfmEsxM4jFGbcfNRJimon2UGdAEJQo4RoNYjHYqsSTi2NqJmPQJg==", "dev": true, "dependencies": { "@formatjs/intl-datetimeformat": "6.12.0", @@ -318,46 +318,44 @@ } }, "node_modules/@devvit/runtimes": { - "version": "0.10.19-next-2024-04-18-468957c25.0", - "resolved": "https://registry.npmjs.org/@devvit/runtimes/-/runtimes-0.10.19-next-2024-04-18-468957c25.0.tgz", - "integrity": "sha512-evBJL4Cfd7JtZ2u7lzFhc6jSlQ3mZSt2+/3lT+ZnAUaObn9RHytqhpNwU0RqLYDPfFFi8E0yQ0IVi0L72DuZBw==", + "version": "0.10.20-next-2024-05-01-553651f2f.0", + "resolved": "https://registry.npmjs.org/@devvit/runtimes/-/runtimes-0.10.20-next-2024-05-01-553651f2f.0.tgz", + "integrity": "sha512-z0Og9YWMci+BAe+rJUgbVg3O9iAEZcXT6xB9cIPXDPJbfSvpAOpThbKBaixFRjoRWjCcV5n0OqbG4iTxvkd1iQ==", "dev": true, "dependencies": { - "@devvit/protos": "0.10.19-next-2024-04-18-468957c25.0", - "@devvit/shared-types": "0.10.19-next-2024-04-18-468957c25.0", - "@devvit/web-worker": "0.10.19-next-2024-04-18-468957c25.0", + "@devvit/protos": "0.10.20-next-2024-05-01-553651f2f.0", + "@devvit/shared-types": "0.10.20-next-2024-05-01-553651f2f.0", + "@devvit/web-worker": "0.10.20-next-2024-05-01-553651f2f.0", "base64-js": "1.5.1", "buffer": "6.0.3", "cron-parser": "4.7.1", - "grpc-web": "1.4.2", "lru-cache": "7.10.1", "node-localstorage": "2.2.1", "redis": "4.6.6", "rxjs": "7.8.1", "undici": "5.28.2", - "uuid": "9.0.0", - "ws": "8.11.0" + "uuid": "9.0.0" } }, "node_modules/@devvit/shared-types": { - "version": "0.10.19-next-2024-04-18-468957c25.0", - "resolved": "https://registry.npmjs.org/@devvit/shared-types/-/shared-types-0.10.19-next-2024-04-18-468957c25.0.tgz", - "integrity": "sha512-DPSVnL8kBQbo8IMv87YsF0RQGZrUs2w5rcvdShHjT58RRojiCTZ0k+q2Ii/pLregUubtpNLEQj0JBbfdPBOZ/g==", + "version": "0.10.20-next-2024-05-01-553651f2f.0", + "resolved": "https://registry.npmjs.org/@devvit/shared-types/-/shared-types-0.10.20-next-2024-05-01-553651f2f.0.tgz", + "integrity": "sha512-90wdmuLvYkKLi/pdJd/6pTlWg+I/UDnrxImykKzD4VZOdTw+OlohP4T+7PQz+tSxrfm7xoVAzdGlZRKaQgC5uw==", "dev": true, "dependencies": { - "@devvit/protos": "0.10.19-next-2024-04-18-468957c25.0" + "@devvit/protos": "0.10.20-next-2024-05-01-553651f2f.0" } }, "node_modules/@devvit/ui-renderer": { - "version": "0.10.19-next-2024-04-18-468957c25.0", - "resolved": "https://registry.npmjs.org/@devvit/ui-renderer/-/ui-renderer-0.10.19-next-2024-04-18-468957c25.0.tgz", - "integrity": "sha512-klqHCjiofxSs9nn/4tHMQ6vIBRK5F6JsBLfk20M231g46gs2TI+41u0YiF7BD0fsrbfXiwobekAyBLJ1YNcjXg==", + "version": "0.10.20-next-2024-05-01-553651f2f.0", + "resolved": "https://registry.npmjs.org/@devvit/ui-renderer/-/ui-renderer-0.10.20-next-2024-05-01-553651f2f.0.tgz", + "integrity": "sha512-Ldly3qUI0Z9NUyemmpMQj5OAE4/TFfh6NLPms8jekYPSdGH0hBCQwCV8x0uVtICBz/6IzASLtrtnaVD1l9zFMw==", "dev": true, "dependencies": { - "@devvit/protos": "0.10.19-next-2024-04-18-468957c25.0", - "@devvit/runtime-lite": "0.10.19-next-2024-04-18-468957c25.0", - "@devvit/runtimes": "0.10.19-next-2024-04-18-468957c25.0", - "@devvit/shared-types": "0.10.19-next-2024-04-18-468957c25.0", + "@devvit/protos": "0.10.20-next-2024-05-01-553651f2f.0", + "@devvit/runtime-lite": "0.10.20-next-2024-05-01-553651f2f.0", + "@devvit/runtimes": "0.10.20-next-2024-05-01-553651f2f.0", + "@devvit/shared-types": "0.10.20-next-2024-05-01-553651f2f.0", "@dotlottie/player-component": "2.7.2", "nice-grpc-web": "3.3.3", "p-queue": "7.3.4", @@ -428,9 +426,9 @@ } }, "node_modules/@devvit/web-worker": { - "version": "0.10.19-next-2024-04-18-468957c25.0", - "resolved": "https://registry.npmjs.org/@devvit/web-worker/-/web-worker-0.10.19-next-2024-04-18-468957c25.0.tgz", - "integrity": "sha512-6Xb5+Kbnke4018a89yU4HTs7arCidA6MlhxjjOS0DHeH+noyR6J0xe50+XaKeRvw49yJFYrnnr+QUC+ZpDNaQw==", + "version": "0.10.20-next-2024-05-01-553651f2f.0", + "resolved": "https://registry.npmjs.org/@devvit/web-worker/-/web-worker-0.10.20-next-2024-05-01-553651f2f.0.tgz", + "integrity": "sha512-s4ETSzgkefPqEP88y08jdfJM3cf1AIF4I18YmPPVwxiedjcyF/OyX2hnaYSNGPvnH3M5ZG/Y8e+QMF5BsyDn7g==", "dev": true }, "node_modules/@dotlottie/common": { @@ -5029,12 +5027,6 @@ "node": ">=0.10.0" } }, - "node_modules/grpc-web": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/grpc-web/-/grpc-web-1.4.2.tgz", - "integrity": "sha512-gUxWq42l5ldaRplcKb4Pw5O4XBONWZgz3vxIIXnfIeJj8Jc3wYiq2O4c9xzx/NGbbPEej4rhI62C9eTENwLGNw==", - "dev": true - }, "node_modules/gzip-size": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-4.1.0.tgz", @@ -6601,9 +6593,9 @@ } }, "node_modules/node-abi": { - "version": "3.59.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.59.0.tgz", - "integrity": "sha512-HyyfzvTLCE8b1SX2nWimlra8cibEsypcSu/Az4SXMhWhtuctkwAX7qsEYNjUOIoYtPV884oN3wtYTN+iZKBtvw==", + "version": "3.62.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.62.0.tgz", + "integrity": "sha512-CPMcGa+y33xuL1E0TcNIu4YyaZCxnnvkVaEXrsosR3FxN+fV8xvb7Mzpb7IgKler10qeMkE6+Dp8qJhpzdq35g==", "dev": true, "dependencies": { "semver": "^7.3.5" @@ -9331,6 +9323,7 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "dev": true, + "peer": true, "engines": { "node": ">=10.0.0" }, diff --git a/package.json b/package.json index 6da68e9..4ff0463 100644 --- a/package.json +++ b/package.json @@ -31,12 +31,12 @@ "@codemirror/lint": "6.5.0", "@codemirror/state": "6.4.1", "@codemirror/view": "6.26.3", - "@devvit/previews": "0.10.19-next-2024-04-18-468957c25.0", - "@devvit/protos": "0.10.19-next-2024-04-18-468957c25.0", - "@devvit/public-api": "0.10.19-next-2024-04-18-468957c25.0", - "@devvit/runtime-lite": "0.10.19-next-2024-04-18-468957c25.0", - "@devvit/shared-types": "0.10.19-next-2024-04-18-468957c25.0", - "@devvit/ui-renderer": "0.10.19-next-2024-04-18-468957c25.0", + "@devvit/previews": "0.10.20-next-2024-05-01-553651f2f.0", + "@devvit/protos": "0.10.20-next-2024-05-01-553651f2f.0", + "@devvit/public-api": "0.10.20-next-2024-05-01-553651f2f.0", + "@devvit/runtime-lite": "0.10.20-next-2024-05-01-553651f2f.0", + "@devvit/shared-types": "0.10.20-next-2024-05-01-553651f2f.0", + "@devvit/ui-renderer": "0.10.20-next-2024-05-01-553651f2f.0", "@esm-bundle/chai": "4.3.4-fix.0", "@types/jsdom": "21.1.6", "@types/mocha": "10.0.6", diff --git a/src/elements/play-pen-header.ts b/src/elements/play-pen-header.ts index a972743..4529444 100644 --- a/src/elements/play-pen-header.ts +++ b/src/elements/play-pen-header.ts @@ -83,6 +83,8 @@ export class PlayPenHeader extends LitElement { @property() url: string = '' @property({attribute: 'use-experimental-blocks', type: Boolean}) useExperimentalBlocks: boolean = false + @property({attribute: 'use-ui-request', type: Boolean}) + useUIRequest: boolean = false @property({attribute: 'use-local-runtime', type: Boolean}) useLocalRuntime: boolean = false @property({attribute: 'use-remote-runtime', type: Boolean}) @@ -148,6 +150,7 @@ export class PlayPenHeader extends LitElement { ?runtime-debug-logging=${this.runtimeDebugLogging} ?sandbox-app=${this.sandboxApp} ?use-experimental-blocks=${this.useExperimentalBlocks} + ?use-ui-request=${this.useUIRequest} ?use-local-runtime=${this.useLocalRuntime} ?use-remote-runtime=${this.useRemoteRuntime} > diff --git a/src/elements/play-pen/play-pen.ts b/src/elements/play-pen/play-pen.ts index a78d9f1..0cc17ee 100644 --- a/src/elements/play-pen/play-pen.ts +++ b/src/elements/play-pen/play-pen.ts @@ -150,6 +150,7 @@ export class PlayPen extends LitElement { @state() private _useExperimentalBlocks: boolean = false @state() private _useLocalRuntime: boolean = false @state() private _useRemoteRuntime: boolean = false + @state() private _useUIRequest: boolean = false @query('play-editor') private _editor!: PlayEditor @query('play-toast') private _toast!: PlayToast #bundleStore?: BundleStore | undefined @@ -180,6 +181,7 @@ export class PlayPen extends LitElement { this._useExperimentalBlocks = settings.useExperimentalBlocks this._useLocalRuntime = settings.useLocalRuntime this._useRemoteRuntime = settings.useRemoteRuntime + this._useUIRequest = settings.useUIRequest // If remote is enabled, #bundleStore is initialized in willUpdate() and // bundle is loaded. } @@ -210,6 +212,7 @@ export class PlayPen extends LitElement { ?use-experimental-blocks=${this._useExperimentalBlocks} ?use-local-runtime=${this._useLocalRuntime} ?use-remote-runtime=${this._useRemoteRuntime} + ?use-ui-request=${this._useUIRequest} @edit-name=${(ev: CustomEvent) => this.#setName(ev.detail, true)} @edit-src=${(ev: CustomEvent) => { @@ -229,6 +232,8 @@ export class PlayPen extends LitElement { (this._useRemoteRuntime = ev.detail)} @edit-remote-runtime-origin=${(ev: CustomEvent) => (this._remoteRuntimeOrigin = ev.detail)} + @use-ui-request=${(ev: CustomEvent) => + (this._useUIRequest = ev.detail)} @share=${this.#onShare} >
@@ -257,6 +262,7 @@ export class PlayPen extends LitElement { ?use-experimental-blocks=${this._useExperimentalBlocks} ?use-local-runtime=${this._useLocalRuntime} ?use-remote-runtime=${this._useRemoteRuntime} + ?use-ui-request=${this._useUIRequest} @clear-errors=${() => this.#clearPreviewErrors()} @devvit-ui-error=${(ev: CustomEvent) => this.#appendPreviewError(ev.detail)} @@ -299,6 +305,7 @@ export class PlayPen extends LitElement { _useLocalRuntime: boolean _useRemoteRuntime: boolean _remoteRuntimeOrigin: string + _useUIRequest: boolean }> ): Promise { super.willUpdate(props) @@ -311,7 +318,8 @@ export class PlayPen extends LitElement { props.has('_useExperimentalBlocks') || props.has('_remoteRuntimeOrigin') || props.has('_useLocalRuntime') || - props.has('_useRemoteRuntime')) + props.has('_useRemoteRuntime') || + props.has('_useUIRequest')) ) saveSettings(localStorage, { openConsole: this._openConsole, @@ -321,6 +329,7 @@ export class PlayPen extends LitElement { useLocalRuntime: this._useLocalRuntime, useRemoteRuntime: this._useRemoteRuntime, remoteRuntimeOrigin: this._remoteRuntimeOrigin, + useUIRequest: this._useUIRequest, version: 1 }) diff --git a/src/elements/play-preview.ts b/src/elements/play-preview.ts index 2f464f6..5d258d7 100644 --- a/src/elements/play-preview.ts +++ b/src/elements/play-preview.ts @@ -107,6 +107,8 @@ export class PlayPreview extends LitElement { useLocalRuntime: boolean = false @property({attribute: 'use-remote-runtime', type: Boolean}) useRemoteRuntime: boolean = false + @property({attribute: 'use-ui-request', type: Boolean}) + useUIRequest: boolean = false @state() private _err = false @@ -144,6 +146,7 @@ export class PlayPreview extends LitElement { ?runtime-debug-logging=${this.runtimeDebugLogging} style="--rem16: 50px;" ?use-experimental-blocks=${this.useExperimentalBlocks} + ?use-ui-request=${this.useUIRequest} @devvit-ui-error=${() => (this._err = true)} > ` diff --git a/src/elements/play-settings-dialog.ts b/src/elements/play-settings-dialog.ts index e1db90c..0608a5e 100644 --- a/src/elements/play-settings-dialog.ts +++ b/src/elements/play-settings-dialog.ts @@ -20,6 +20,7 @@ declare global { 'use-experimental-blocks': CustomEvent 'use-local-runtime': CustomEvent 'use-remote-runtime': CustomEvent + 'use-ui-request': CustomEvent } interface HTMLElementTagNameMap { 'play-settings-dialog': PlaySettingsDialog @@ -121,6 +122,8 @@ export class PlaySettingsDialog extends LitElement { useLocalRuntime: boolean = false @property({attribute: 'use-remote-runtime', type: Boolean}) useRemoteRuntime: boolean = false + @property({attribute: 'use-ui-request', type: Boolean}) + useUIRequest: boolean = false @query('dialog') private _dialog!: HTMLDialogElement open(): void { @@ -237,6 +240,18 @@ export class PlaySettingsDialog extends LitElement { Use experimental blocks. Default: ${onOff(defaultSettings.useExperimentalBlocks)}. + ` diff --git a/src/storage/settings-save.ts b/src/storage/settings-save.ts index 8aea48d..3ef32e2 100644 --- a/src/storage/settings-save.ts +++ b/src/storage/settings-save.ts @@ -12,6 +12,8 @@ export type SettingsSave = { useLocalRuntime: boolean /** Enable remote runtime. Upload often and execute apps remotely as needed. */ useRemoteRuntime: boolean + /** Enable UI request, the multithreaded renderer for blocks. */ + useUIRequest: boolean /** * Settings version recorded at save time. Used for unpacking old data if * structural changes have been made. Independent of package.json version. @@ -29,6 +31,7 @@ export const defaultSettings: Readonly = { useExperimentalBlocks: false, useLocalRuntime: true, useRemoteRuntime: false, + useUIRequest: false, version: 1 }