@devvit/client 0.12.1-next-2025-10-01-18-10-24-62f08d94f.0 → 0.12.1-next-2025-10-02-15-00-39-af5d076c7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client-meta.min.json +7 -12
- package/client.min.js +1 -1
- package/client.min.js.map +3 -3
- package/effects/web-view-mode.d.ts +12 -3
- package/effects/web-view-mode.d.ts.map +1 -1
- package/effects/web-view-mode.js +22 -8
- package/package.json +8 -8
|
@@ -2,26 +2,32 @@
|
|
|
2
2
|
* The presentation mode of the web view.
|
|
3
3
|
* 'inline' The web view is displayed inline within a feed or post detail page
|
|
4
4
|
* 'expanded' The web view is displayed in a larger modal presentation
|
|
5
|
+
* @experimental
|
|
5
6
|
*/
|
|
6
7
|
export type WebViewMode = 'inline' | 'expanded';
|
|
7
8
|
/**
|
|
8
9
|
* A listener that is called when the web view mode changes.
|
|
9
10
|
* @param mode The new mode, either 'inline' or 'expanded'.
|
|
11
|
+
* @experimental
|
|
10
12
|
*/
|
|
11
13
|
export type WebViewModeListener = (mode: WebViewMode) => void;
|
|
12
14
|
/**
|
|
13
15
|
* Represents the current web view mode state for the application.
|
|
14
16
|
*
|
|
15
|
-
* @
|
|
17
|
+
* @experimental
|
|
16
18
|
*/
|
|
17
19
|
export declare const getWebViewMode: () => WebViewMode;
|
|
18
20
|
/**
|
|
19
21
|
* Requests expanded mode for the web view.
|
|
20
22
|
* This will display the web view in a larger modal presentation.
|
|
21
23
|
*
|
|
22
|
-
* @param event The
|
|
24
|
+
* @param event The gesture that triggered the request, must be a trusted event.
|
|
25
|
+
* @param entry The destination URI name. Eg, `'splash'` or `'default'`. Entry
|
|
26
|
+
* names are the `devvit.json` `post.entrypoints` keys. Passing the
|
|
27
|
+
* same entrypoint as currently loaded causes a reload.
|
|
23
28
|
* @returns A promise that resolves request has been received.
|
|
24
29
|
*
|
|
30
|
+
* @experimental
|
|
25
31
|
* @example
|
|
26
32
|
* ```ts
|
|
27
33
|
* button.addEventListener('click', async (event) => {
|
|
@@ -29,7 +35,7 @@ export declare const getWebViewMode: () => WebViewMode;
|
|
|
29
35
|
* });
|
|
30
36
|
* ```
|
|
31
37
|
*/
|
|
32
|
-
export declare function requestExpandedMode(event: PointerEvent): Promise<void>;
|
|
38
|
+
export declare function requestExpandedMode(event: PointerEvent, entry: string): Promise<void>;
|
|
33
39
|
/**
|
|
34
40
|
* Exits expanded mode for the web view.
|
|
35
41
|
* This will display the web view in an inline presentation.
|
|
@@ -37,6 +43,7 @@ export declare function requestExpandedMode(event: PointerEvent): Promise<void>;
|
|
|
37
43
|
* @param event The event that triggered the request, must be a trusted event.
|
|
38
44
|
* @returns A promise that resolves request has been received.
|
|
39
45
|
*
|
|
46
|
+
* @experimental
|
|
40
47
|
* @example
|
|
41
48
|
* ```ts
|
|
42
49
|
* button.addEventListener('click', async (event) => {
|
|
@@ -50,12 +57,14 @@ export declare function exitExpandedMode(event: PointerEvent): Promise<void>;
|
|
|
50
57
|
* The listener will be called with the new mode, either 'inline' or 'expanded'.
|
|
51
58
|
*
|
|
52
59
|
* @param callback The callback to be called when the mode changes.
|
|
60
|
+
* @experimental
|
|
53
61
|
*/
|
|
54
62
|
export declare function addWebViewModeListener(callback: WebViewModeListener): void;
|
|
55
63
|
/**
|
|
56
64
|
* Removes a listener that was previously added with `addWebViewModeListener`.
|
|
57
65
|
*
|
|
58
66
|
* @param callback The callback to be removed.
|
|
67
|
+
* @experimental
|
|
59
68
|
*/
|
|
60
69
|
export declare function removeWebViewModeListener(callback: WebViewModeListener): void;
|
|
61
70
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-view-mode.d.ts","sourceRoot":"","sources":["../../src/effects/web-view-mode.ts"],"names":[],"mappings":"AAKA
|
|
1
|
+
{"version":3,"file":"web-view-mode.d.ts","sourceRoot":"","sources":["../../src/effects/web-view-mode.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEhD;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;AAI9D;;;;GAIG;AACH,eAAO,MAAM,cAAc,QAAO,WAA8C,CAAC;AAEjF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnE;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAE7E;AA2BD;;;GAGG;AACH,wBAAgB,gBAAgB,SAgB/B"}
|
package/effects/web-view-mode.js
CHANGED
|
@@ -4,16 +4,20 @@ const modeListeners = new Set();
|
|
|
4
4
|
/**
|
|
5
5
|
* Represents the current web view mode state for the application.
|
|
6
6
|
*
|
|
7
|
-
* @
|
|
7
|
+
* @experimental
|
|
8
8
|
*/
|
|
9
9
|
export const getWebViewMode = () => webViewMode(devvit.webViewMode);
|
|
10
10
|
/**
|
|
11
11
|
* Requests expanded mode for the web view.
|
|
12
12
|
* This will display the web view in a larger modal presentation.
|
|
13
13
|
*
|
|
14
|
-
* @param event The
|
|
14
|
+
* @param event The gesture that triggered the request, must be a trusted event.
|
|
15
|
+
* @param entry The destination URI name. Eg, `'splash'` or `'default'`. Entry
|
|
16
|
+
* names are the `devvit.json` `post.entrypoints` keys. Passing the
|
|
17
|
+
* same entrypoint as currently loaded causes a reload.
|
|
15
18
|
* @returns A promise that resolves request has been received.
|
|
16
19
|
*
|
|
20
|
+
* @experimental
|
|
17
21
|
* @example
|
|
18
22
|
* ```ts
|
|
19
23
|
* button.addEventListener('click', async (event) => {
|
|
@@ -21,8 +25,8 @@ export const getWebViewMode = () => webViewMode(devvit.webViewMode);
|
|
|
21
25
|
* });
|
|
22
26
|
* ```
|
|
23
27
|
*/
|
|
24
|
-
export function requestExpandedMode(event) {
|
|
25
|
-
return emitModeEffect(WebViewImmersiveMode.IMMERSIVE_MODE, event);
|
|
28
|
+
export function requestExpandedMode(event, entry) {
|
|
29
|
+
return emitModeEffect(WebViewImmersiveMode.IMMERSIVE_MODE, event, entry);
|
|
26
30
|
}
|
|
27
31
|
/**
|
|
28
32
|
* Exits expanded mode for the web view.
|
|
@@ -31,6 +35,7 @@ export function requestExpandedMode(event) {
|
|
|
31
35
|
* @param event The event that triggered the request, must be a trusted event.
|
|
32
36
|
* @returns A promise that resolves request has been received.
|
|
33
37
|
*
|
|
38
|
+
* @experimental
|
|
34
39
|
* @example
|
|
35
40
|
* ```ts
|
|
36
41
|
* button.addEventListener('click', async (event) => {
|
|
@@ -39,13 +44,14 @@ export function requestExpandedMode(event) {
|
|
|
39
44
|
* ```
|
|
40
45
|
*/
|
|
41
46
|
export function exitExpandedMode(event) {
|
|
42
|
-
return emitModeEffect(WebViewImmersiveMode.INLINE_MODE, event);
|
|
47
|
+
return emitModeEffect(WebViewImmersiveMode.INLINE_MODE, event, undefined);
|
|
43
48
|
}
|
|
44
49
|
/**
|
|
45
50
|
* Adds a listener that is called when the web view mode changes.
|
|
46
51
|
* The listener will be called with the new mode, either 'inline' or 'expanded'.
|
|
47
52
|
*
|
|
48
53
|
* @param callback The callback to be called when the mode changes.
|
|
54
|
+
* @experimental
|
|
49
55
|
*/
|
|
50
56
|
export function addWebViewModeListener(callback) {
|
|
51
57
|
modeListeners.add(callback);
|
|
@@ -54,24 +60,32 @@ export function addWebViewModeListener(callback) {
|
|
|
54
60
|
* Removes a listener that was previously added with `addWebViewModeListener`.
|
|
55
61
|
*
|
|
56
62
|
* @param callback The callback to be removed.
|
|
63
|
+
* @experimental
|
|
57
64
|
*/
|
|
58
65
|
export function removeWebViewModeListener(callback) {
|
|
59
66
|
modeListeners.delete(callback);
|
|
60
67
|
}
|
|
61
|
-
async function emitModeEffect(mode, event) {
|
|
68
|
+
async function emitModeEffect(mode, event, entry) {
|
|
62
69
|
if (!event.isTrusted || event.type !== 'click') {
|
|
63
70
|
console.error('Expanded mode effect ignored due to untrusted event');
|
|
64
71
|
throw new Error('Untrusted event');
|
|
65
72
|
}
|
|
73
|
+
if (entry != null && !devvit.entrypoints[entry])
|
|
74
|
+
throw Error(`no entrypoint named "${entry}"; all entrypoints must appear in \`devvit.json\` \`post.entrypoints\``);
|
|
66
75
|
const type = 9;
|
|
67
|
-
await emitEffect({
|
|
76
|
+
await emitEffect({
|
|
77
|
+
type,
|
|
78
|
+
immersiveMode: {
|
|
79
|
+
entryUrl: devvit.entrypoints[entry ?? ''],
|
|
80
|
+
immersiveMode: mode,
|
|
81
|
+
},
|
|
82
|
+
});
|
|
68
83
|
}
|
|
69
84
|
/**
|
|
70
85
|
* @internal
|
|
71
86
|
* Handles incoming messages from the client, like when the user closes the immersive modal
|
|
72
87
|
*/
|
|
73
88
|
export function registerListener() {
|
|
74
|
-
console.log('Registering web view mode listener');
|
|
75
89
|
addEventListener('message', (event) => {
|
|
76
90
|
const { type, data } = event.data;
|
|
77
91
|
if (type !== 'devvit-message') {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devvit/client",
|
|
3
|
-
"version": "0.12.1-next-2025-10-
|
|
3
|
+
"version": "0.12.1-next-2025-10-02-15-00-39-af5d076c7.0",
|
|
4
4
|
"license": "BSD-3-Clause",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -33,15 +33,15 @@
|
|
|
33
33
|
"test:unit-with-coverage": "vitest run --coverage"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@devvit/protos": "0.12.1-next-2025-10-
|
|
37
|
-
"@devvit/shared": "0.12.1-next-2025-10-
|
|
38
|
-
"@devvit/shared-types": "0.12.1-next-2025-10-
|
|
39
|
-
"@devvit/web-view-scripts": "0.12.1-next-2025-10-
|
|
36
|
+
"@devvit/protos": "0.12.1-next-2025-10-02-15-00-39-af5d076c7.0",
|
|
37
|
+
"@devvit/shared": "0.12.1-next-2025-10-02-15-00-39-af5d076c7.0",
|
|
38
|
+
"@devvit/shared-types": "0.12.1-next-2025-10-02-15-00-39-af5d076c7.0",
|
|
39
|
+
"@devvit/web-view-scripts": "0.12.1-next-2025-10-02-15-00-39-af5d076c7.0"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@ampproject/filesize": "4.3.0",
|
|
43
|
-
"@devvit/repo-tools": "0.12.1-next-2025-10-
|
|
44
|
-
"@devvit/tsconfig": "0.12.1-next-2025-10-
|
|
43
|
+
"@devvit/repo-tools": "0.12.1-next-2025-10-02-15-00-39-af5d076c7.0",
|
|
44
|
+
"@devvit/tsconfig": "0.12.1-next-2025-10-02-15-00-39-af5d076c7.0",
|
|
45
45
|
"esbuild": "0.25.9",
|
|
46
46
|
"eslint": "9.11.1",
|
|
47
47
|
"typescript": "5.8.3",
|
|
@@ -53,5 +53,5 @@
|
|
|
53
53
|
"none": "106 KB"
|
|
54
54
|
}
|
|
55
55
|
},
|
|
56
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "6fd0be0d6288a41e40c93579d4f16abe272beb69"
|
|
57
57
|
}
|