@devvit/ui-renderer 0.10.20-next-2024-04-29-c515e730a.0 → 0.10.20-next-2024-04-29-88a67326c.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.
@@ -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;AAE5C;;;;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;IAEH,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"}
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;AAEjC,qBAAa,eAAe;;IAC1B,KAAK,EAAE,SAAS,EAAE,CAAM;gBAKZ,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,sBAAsB;IAK9D,QAAQ,IAAI,MAAM;IAQlB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAmB1B,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA4H/C,WAAW,IAAI,QAAQ;IAIvB,eAAe,IAAI,OAAO;IA0D1B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAGjC"}
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
- return JSON.stringify(validFiles.map((media) => media.value));
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-c515e730a.0",
3
+ "version": "0.10.20-next-2024-04-29-88a67326c.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-c515e730a.0",
59
- "@devvit/runtime-lite": "0.10.20-next-2024-04-29-c515e730a.0",
60
- "@devvit/runtimes": "0.10.20-next-2024-04-29-c515e730a.0",
61
- "@devvit/shared-types": "0.10.20-next-2024-04-29-c515e730a.0",
58
+ "@devvit/protos": "0.10.20-next-2024-04-29-88a67326c.0",
59
+ "@devvit/runtime-lite": "0.10.20-next-2024-04-29-88a67326c.0",
60
+ "@devvit/runtimes": "0.10.20-next-2024-04-29-88a67326c.0",
61
+ "@devvit/shared-types": "0.10.20-next-2024-04-29-88a67326c.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-c515e730a.0",
88
+ "@devvit/public-api": "0.10.20-next-2024-04-29-88a67326c.0",
89
89
  "@devvit/repo-tools": "0.10.19",
90
- "@devvit/tsconfig": "0.10.20-next-2024-04-29-c515e730a.0",
90
+ "@devvit/tsconfig": "0.10.20-next-2024-04-29-88a67326c.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": "925b0c38617e396ce1b66d3df943e4b04e9075fe"
122
+ "gitHead": "90577d36abb852d892de96b797f3732506662cef"
123
123
  }