@devvit/ui-renderer 0.10.20-next-2024-04-29-43d2ba7f8.0 → 0.10.20-next-2024-04-29-db4e40775.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/formbuilder/components/image-field/devvit-image-field.d.ts +2 -0
- package/client/formbuilder/components/image-field/devvit-image-field.d.ts.map +1 -1
- package/client/formbuilder/components/image-field/devvit-image-field.js +5 -1
- package/client/formbuilder/components/image-field/media-controller.d.ts.map +1 -1
- package/client/formbuilder/components/image-field/media-controller.js +11 -3
- package/package.json +8 -8
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { InputElement } from '@reddit/faceplate/base-classes/input-element.js';
|
|
2
2
|
import { MediaController } from './media-controller.js';
|
|
3
3
|
import type { PropertyValueMap } from 'lit';
|
|
4
|
+
import type { FormField } from '@devvit/protos';
|
|
4
5
|
/**
|
|
5
6
|
* This entire file was copied from shreddit
|
|
6
7
|
* I removed some parts of it that were too "shreddit post creation" focused, but kept the original code style
|
|
@@ -14,6 +15,7 @@ export declare class DevvitFormImageField extends InputElement {
|
|
|
14
15
|
protected firstUpdated(_changedProperties: PropertyValueMap<unknown>): void;
|
|
15
16
|
fileInputInnerWrapper: HTMLDivElement;
|
|
16
17
|
mediaController: MediaController;
|
|
18
|
+
field: FormField | undefined;
|
|
17
19
|
get value(): string;
|
|
18
20
|
set value(newValue: string);
|
|
19
21
|
_input?: HTMLInputElement;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devvit-image-field.d.ts","sourceRoot":"","sources":["../../../../../library/src/client/formbuilder/components/image-field/devvit-image-field.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,iDAAiD,CAAC;AAG/E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAMxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"devvit-image-field.d.ts","sourceRoot":"","sources":["../../../../../library/src/client/formbuilder/components/image-field/devvit-image-field.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,iDAAiD,CAAC;AAG/E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAMxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;GAIG;AAEH,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1C,qBAAa,oBAAqB,SAAQ,YAAY;;IAMpD,cAAc;IACd,WAAoB,MAAM,mCAEzB;IAED,SAAS,CAAC,YAAY,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,IAAI;IAO1C,qBAAqB,EAAG,cAAc,CAAC;IAIxE,eAAe,EAAE,eAAe,CAE7B;IAE6B,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IAE7D,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,KAAK,CAAC,QAAQ,EAJL,MAIK,EAEjB;IAID,MAAM,CAAC,EAAE,gBAAgB,CAAC;IA2B1B,iBAAiB,QAAO,IAAI,CAQ1B;IAeO,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAW7C,MAAM;CA0ChB"}
|
|
@@ -76,7 +76,7 @@ export class DevvitFormImageField extends InputElement {
|
|
|
76
76
|
// @ts-ignore
|
|
77
77
|
this.setCustomValidity('');
|
|
78
78
|
}
|
|
79
|
-
else if (!disabled && this.value?.length === 0) {
|
|
79
|
+
else if (!disabled && this.value?.length === 0 && this.field?.required) {
|
|
80
80
|
__classPrivateFieldGet(this, _DevvitFormImageField_instances, "m", _DevvitFormImageField_setRequiredFieldError).call(this);
|
|
81
81
|
// @ts-ignore
|
|
82
82
|
this.reportValidity();
|
|
@@ -149,6 +149,10 @@ __decorate([
|
|
|
149
149
|
,
|
|
150
150
|
__metadata("design:type", MediaController)
|
|
151
151
|
], DevvitFormImageField.prototype, "mediaController", void 0);
|
|
152
|
+
__decorate([
|
|
153
|
+
property({ attribute: false }),
|
|
154
|
+
__metadata("design:type", Object)
|
|
155
|
+
], DevvitFormImageField.prototype, "field", void 0);
|
|
152
156
|
__decorate([
|
|
153
157
|
query('input.file-input'),
|
|
154
158
|
__metadata("design:type", HTMLInputElement)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-controller.d.ts","sourceRoot":"","sources":["../../../../../library/src/client/formbuilder/components/image-field/media-controller.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAEtC;;;;GAIG;AAGH,UAAU,cAAc;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACxC,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,oBAAY,QAAQ;IAClB,KAAK,UAAU;CAChB;AAED,KAAK,kBAAkB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAEpD,KAAK,sBAAsB,GAAG;IAC5B,aAAa,CAAC,EAAE,kBAAkB,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,cAAc,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"media-controller.d.ts","sourceRoot":"","sources":["../../../../../library/src/client/formbuilder/components/image-field/media-controller.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAEtC;;;;GAIG;AAGH,UAAU,cAAc;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACxC,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,oBAAY,QAAQ;IAClB,KAAK,UAAU;CAChB;AAED,KAAK,kBAAkB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAEpD,KAAK,sBAAsB,GAAG;IAC5B,aAAa,CAAC,EAAE,kBAAkB,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,cAAc,KAAK,CAAC;AAMjC,qBAAa,eAAe;;IAC1B,KAAK,EAAE,SAAS,EAAE,CAAM;gBAKZ,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,sBAAsB;IAK9D,QAAQ,IAAI,MAAM;IAalB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAmB1B,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6H/C,WAAW,IAAI,QAAQ;IAIvB,eAAe,IAAI,OAAO;IA0D1B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAGjC"}
|
|
@@ -23,6 +23,9 @@ export var PostType;
|
|
|
23
23
|
PostType["image"] = "image";
|
|
24
24
|
})(PostType || (PostType = {}));
|
|
25
25
|
export const MAX_FILE_COUNT = 20;
|
|
26
|
+
function getMediaUrl(mediaItem) {
|
|
27
|
+
return mediaItem.value?.url || '';
|
|
28
|
+
}
|
|
26
29
|
export class MediaController {
|
|
27
30
|
constructor(host, options) {
|
|
28
31
|
_MediaController_instances.add(this);
|
|
@@ -37,7 +40,10 @@ export class MediaController {
|
|
|
37
40
|
if (validFiles.length === 0) {
|
|
38
41
|
return '';
|
|
39
42
|
}
|
|
40
|
-
|
|
43
|
+
if (validFiles.length === 1) {
|
|
44
|
+
return getMediaUrl(validFiles[0]);
|
|
45
|
+
}
|
|
46
|
+
return JSON.stringify(validFiles.map(getMediaUrl));
|
|
41
47
|
}
|
|
42
48
|
setValue(newValue) {
|
|
43
49
|
const val = JSON.parse(newValue);
|
|
@@ -46,7 +52,6 @@ export class MediaController {
|
|
|
46
52
|
async handleMedia(files) {
|
|
47
53
|
try {
|
|
48
54
|
const seed = this.media.length;
|
|
49
|
-
__classPrivateFieldGet(this, _MediaController_setValidation, "f").call(this, '');
|
|
50
55
|
const validFiles = __classPrivateFieldGet(this, _MediaController_instances, "m", _MediaController_filterValidFiles).call(this, files);
|
|
51
56
|
if (validFiles.length > 0) {
|
|
52
57
|
const mediaItems = [];
|
|
@@ -56,6 +61,10 @@ export class MediaController {
|
|
|
56
61
|
this.media = this.media.concat(mediaItems);
|
|
57
62
|
__classPrivateFieldGet(this, _MediaController_host, "f").requestUpdate('mediaLength', seed);
|
|
58
63
|
const mediaResponse = await Promise.all(mediaItems.map((item) => item.mediaResponse));
|
|
64
|
+
// set validity if all uploads ended successfully
|
|
65
|
+
if (mediaResponse.every((response) => !response?.error && response?.url)) {
|
|
66
|
+
__classPrivateFieldGet(this, _MediaController_setValidation, "f").call(this, '');
|
|
67
|
+
}
|
|
59
68
|
__classPrivateFieldGet(this, _MediaController_instances, "m", _MediaController_handleImageResponse).call(this, mediaResponse, seed);
|
|
60
69
|
__classPrivateFieldGet(this, _MediaController_host, "f").requestUpdate();
|
|
61
70
|
}
|
|
@@ -97,7 +106,6 @@ _MediaController_host = new WeakMap(), _MediaController_setValidation = new Weak
|
|
|
97
106
|
const event = new Event('change', { bubbles: true });
|
|
98
107
|
__classPrivateFieldGet(this, _MediaController_host, "f").dispatchEvent(event);
|
|
99
108
|
}, _MediaController_handleImageResponse = function _MediaController_handleImageResponse(mediaResponses, seed) {
|
|
100
|
-
__classPrivateFieldGet(this, _MediaController_host, "f").setAttribute('name', 'image');
|
|
101
109
|
let success = false;
|
|
102
110
|
const failedItemsIndexes = [];
|
|
103
111
|
for (const [i, mediaResponse] of mediaResponses.entries()) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devvit/ui-renderer",
|
|
3
|
-
"version": "0.10.20-next-2024-04-29-
|
|
3
|
+
"version": "0.10.20-next-2024-04-29-db4e40775.0",
|
|
4
4
|
"license": "BSD-3-Clause",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -55,10 +55,10 @@
|
|
|
55
55
|
},
|
|
56
56
|
"types": "./index.d.ts",
|
|
57
57
|
"dependencies": {
|
|
58
|
-
"@devvit/protos": "0.10.20-next-2024-04-29-
|
|
59
|
-
"@devvit/runtime-lite": "0.10.20-next-2024-04-29-
|
|
60
|
-
"@devvit/runtimes": "0.10.20-next-2024-04-29-
|
|
61
|
-
"@devvit/shared-types": "0.10.20-next-2024-04-29-
|
|
58
|
+
"@devvit/protos": "0.10.20-next-2024-04-29-db4e40775.0",
|
|
59
|
+
"@devvit/runtime-lite": "0.10.20-next-2024-04-29-db4e40775.0",
|
|
60
|
+
"@devvit/runtimes": "0.10.20-next-2024-04-29-db4e40775.0",
|
|
61
|
+
"@devvit/shared-types": "0.10.20-next-2024-04-29-db4e40775.0",
|
|
62
62
|
"@dotlottie/player-component": "2.7.2",
|
|
63
63
|
"nice-grpc-web": "3.3.3",
|
|
64
64
|
"p-queue": "7.3.4",
|
|
@@ -85,9 +85,9 @@
|
|
|
85
85
|
},
|
|
86
86
|
"devDependencies": {
|
|
87
87
|
"@devvit/eslint-config": "0.10.19",
|
|
88
|
-
"@devvit/public-api": "0.10.20-next-2024-04-29-
|
|
88
|
+
"@devvit/public-api": "0.10.20-next-2024-04-29-db4e40775.0",
|
|
89
89
|
"@devvit/repo-tools": "0.10.19",
|
|
90
|
-
"@devvit/tsconfig": "0.10.20-next-2024-04-29-
|
|
90
|
+
"@devvit/tsconfig": "0.10.20-next-2024-04-29-db4e40775.0",
|
|
91
91
|
"@lit-labs/ssr": "^2.2.3",
|
|
92
92
|
"@lit/localize": "0.11.4",
|
|
93
93
|
"@open-wc/testing-helpers": "2.3.0",
|
|
@@ -119,5 +119,5 @@
|
|
|
119
119
|
"directory": "dist"
|
|
120
120
|
},
|
|
121
121
|
"source": "./src/index.ts",
|
|
122
|
-
"gitHead": "
|
|
122
|
+
"gitHead": "5b783fce405ea4b3a11c4ffce1dbfa49b44a51c1"
|
|
123
123
|
}
|