@gradio/imageeditor 0.9.0 → 0.10.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/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @gradio/imageeditor
2
2
 
3
+ ## 0.10.0
4
+
5
+ ### Features
6
+
7
+ - [#8930](https://github.com/gradio-app/gradio/pull/8930) [`41d5ab9`](https://github.com/gradio-app/gradio/commit/41d5ab987ba9728753be4509490c79041655809b) - Add `placeholder` param to Image and ImageEditor to replace upload image text. Thanks @hannahblair!
8
+ - [#9118](https://github.com/gradio-app/gradio/pull/9118) [`e1c404d`](https://github.com/gradio-app/gradio/commit/e1c404da1143fb52b659d03e028bdba1badf443d) - setup npm-previews of all packages. Thanks @pngwn!
9
+
10
+ ### Dependency updates
11
+
12
+ - @gradio/utils@0.6.0
13
+ - @gradio/upload@0.12.3
14
+ - @gradio/atoms@0.8.0
15
+ - @gradio/client@1.5.1
16
+ - @gradio/statustracker@0.7.5
17
+ - @gradio/wasm@0.13.0
18
+ - @gradio/icons@0.7.1
19
+ - @gradio/image@0.15.0
20
+
3
21
  ## 0.9.0
4
22
 
5
23
  ### Features
@@ -214,6 +214,7 @@
214
214
  orig_name: "cheetah.jpg"
215
215
  },
216
216
  type: "pil",
217
+ placeholder: "Upload an image of a cat",
217
218
  sources: ["upload", "webcam"],
218
219
  interactive: "true",
219
220
  brush: {
package/Index.svelte CHANGED
@@ -44,6 +44,7 @@
44
44
  "webcam"
45
45
  ];
46
46
  export let interactive: boolean;
47
+ export let placeholder: string | undefined;
47
48
 
48
49
  export let brush: Brush;
49
50
  export let eraser: Eraser;
@@ -214,6 +215,7 @@
214
215
  status={loading_status?.status}
215
216
  upload={gradio.client.upload}
216
217
  stream_handler={gradio.client.stream}
218
+ {placeholder}
217
219
  ></InteractiveImageEditor>
218
220
  </Block>
219
221
  {/if}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gradio/imageeditor",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "description": "Gradio UI packages",
5
5
  "type": "module",
6
6
  "author": "",
@@ -10,17 +10,17 @@
10
10
  "@types/tinycolor2": "^1.4.6",
11
11
  "pixi.js": "^7.3.2",
12
12
  "tinycolor2": "^1.6.0",
13
- "@gradio/atoms": "^0.7.9",
14
- "@gradio/client": "^1.5.0",
15
- "@gradio/icons": "^0.7.0",
16
- "@gradio/image": "^0.14.0",
17
- "@gradio/statustracker": "^0.7.4",
18
- "@gradio/utils": "^0.5.2",
19
- "@gradio/wasm": "^0.12.0",
20
- "@gradio/upload": "^0.12.2"
13
+ "@gradio/atoms": "^0.8.0",
14
+ "@gradio/client": "^1.5.1",
15
+ "@gradio/icons": "^0.7.1",
16
+ "@gradio/image": "^0.15.0",
17
+ "@gradio/utils": "^0.6.0",
18
+ "@gradio/upload": "^0.12.3",
19
+ "@gradio/statustracker": "^0.7.5",
20
+ "@gradio/wasm": "^0.13.0"
21
21
  },
22
22
  "devDependencies": {
23
- "@gradio/preview": "^0.10.2"
23
+ "@gradio/preview": "^0.11.0"
24
24
  },
25
25
  "main_changeset": true,
26
26
  "main": "./Index.svelte",
@@ -28,5 +28,10 @@
28
28
  ".": "./Index.svelte",
29
29
  "./example": "./Example.svelte",
30
30
  "./package.json": "./package.json"
31
+ },
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "git+https://github.com/gradio-app/gradio.git",
35
+ "directory": "js/imageeditor"
31
36
  }
32
37
  }
@@ -25,6 +25,7 @@
25
25
  import { Tools, Crop, Brush, Sources } from "./tools";
26
26
  import { BlockLabel } from "@gradio/atoms";
27
27
  import { Image as ImageIcon } from "@gradio/icons";
28
+ import { inject } from "./utils/parse_placeholder";
28
29
 
29
30
  export let brush: IBrush | null;
30
31
  export let eraser: Eraser | null;
@@ -49,6 +50,7 @@
49
50
  export let upload: Client["upload"];
50
51
  export let stream_handler: Client["stream"];
51
52
  export let dragging: boolean;
53
+ export let placeholder: string | undefined = undefined;
52
54
 
53
55
  const dispatch = createEventDispatcher<{
54
56
  clear?: never;
@@ -197,6 +199,8 @@
197
199
 
198
200
  let active_mode: "webcam" | "color" | null = null;
199
201
  let editor_height = 0;
202
+
203
+ $: [heading, paragraph] = placeholder ? inject(placeholder) : [false, false];
200
204
  </script>
201
205
 
202
206
  <BlockLabel
@@ -254,13 +258,22 @@
254
258
  {#if !bg && !history && active_mode !== "webcam" && status !== "error"}
255
259
  <div class="empty wrap" style:height={`${editor_height}px`}>
256
260
  {#if sources && sources.length}
257
- <div>Upload an image</div>
261
+ {#if heading || paragraph}
262
+ {#if heading}
263
+ <h2>{heading}</h2>
264
+ {/if}
265
+ {#if paragraph}
266
+ <p>{paragraph}</p>
267
+ {/if}
268
+ {:else}
269
+ <div>Upload an image</div>
270
+ {/if}
258
271
  {/if}
259
272
 
260
- {#if sources && sources.length && brush}
273
+ {#if sources && sources.length && brush && !placeholder}
261
274
  <div class="or">or</div>
262
275
  {/if}
263
- {#if brush}
276
+ {#if brush && !placeholder}
264
277
  <div>select the draw tool to start</div>
265
278
  {/if}
266
279
  </div>
@@ -268,6 +281,15 @@
268
281
  </ImageEditor>
269
282
 
270
283
  <style>
284
+ h2 {
285
+ font-size: var(--text-xl);
286
+ }
287
+
288
+ p,
289
+ h2 {
290
+ white-space: pre-line;
291
+ }
292
+
271
293
  .empty {
272
294
  display: flex;
273
295
  flex-direction: column;
@@ -292,7 +314,7 @@
292
314
  align-items: center;
293
315
  color: var(--block-label-text-color);
294
316
  line-height: var(--line-md);
295
- font-size: var(--text-lg);
317
+ font-size: var(--text-md);
296
318
  pointer-events: none;
297
319
  }
298
320
 
@@ -0,0 +1,27 @@
1
+ const RE_HEADING = /^(#\s*)(.+)$/m;
2
+
3
+ export function inject(text: string): [string | false, string | false] {
4
+ const trimmed_text = text.trim();
5
+
6
+ const heading_match = trimmed_text.match(RE_HEADING);
7
+ if (!heading_match) {
8
+ return [false, trimmed_text || false];
9
+ }
10
+
11
+ const [full_match, , heading_content] = heading_match;
12
+ const _heading = heading_content.trim();
13
+
14
+ if (trimmed_text === full_match) {
15
+ return [_heading, false];
16
+ }
17
+
18
+ const heading_end_index =
19
+ heading_match.index !== undefined
20
+ ? heading_match.index + full_match.length
21
+ : 0;
22
+ const remaining_text = trimmed_text.substring(heading_end_index).trim();
23
+
24
+ const _paragraph = remaining_text || false;
25
+
26
+ return [_heading, _paragraph];
27
+ }