@gradio/model3d 0.15.1-dev.0 → 0.15.1-dev.2

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,75 +1,97 @@
1
- <script>import { createEventDispatcher, tick } from "svelte";
2
- import { Upload, ModifyUpload } from "@gradio/upload";
3
- import { BlockLabel } from "@gradio/atoms";
4
- import { File } from "@gradio/icons";
5
- export let value;
6
- export let display_mode = "solid";
7
- export let clear_color = [0, 0, 0, 0];
8
- export let label = "";
9
- export let show_label;
10
- export let root;
11
- export let i18n;
12
- export let zoom_speed = 1;
13
- export let pan_speed = 1;
14
- export let max_file_size = null;
15
- export let uploading = false;
16
- export let camera_position = [
17
- null,
18
- null,
19
- null
20
- ];
21
- export let upload;
22
- export let stream_handler;
23
- async function handle_upload({
24
- detail
25
- }) {
26
- value = detail;
27
- await tick();
28
- dispatch("change", value);
29
- dispatch("load", value);
30
- }
31
- async function handle_clear() {
32
- value = null;
33
- await tick();
34
- dispatch("clear");
35
- dispatch("change");
36
- }
37
- let use_3dgs = false;
38
- let Canvas3DGSComponent;
39
- let Canvas3DComponent;
40
- async function loadCanvas3D() {
41
- const module = await import("./Canvas3D.svelte");
42
- return module.default;
43
- }
44
- async function loadCanvas3DGS() {
45
- const module = await import("./Canvas3DGS.svelte");
46
- return module.default;
47
- }
48
- $: if (value) {
49
- use_3dgs = value.path.endsWith(".splat") || value.path.endsWith(".ply");
50
- if (use_3dgs) {
51
- loadCanvas3DGS().then((component) => {
52
- Canvas3DGSComponent = component;
53
- });
54
- } else {
55
- loadCanvas3D().then((component) => {
56
- Canvas3DComponent = component;
57
- });
58
- }
59
- }
60
- let canvas3d;
61
- async function handle_undo() {
62
- canvas3d?.reset_camera_position();
63
- }
64
- const dispatch = createEventDispatcher();
65
- let dragging = false;
66
- $: dispatch("drag", dragging);
1
+ <script lang="ts">
2
+ import { createEventDispatcher, tick } from "svelte";
3
+ import { Upload, ModifyUpload } from "@gradio/upload";
4
+ import type { FileData, Client } from "@gradio/client";
5
+ import { BlockLabel } from "@gradio/atoms";
6
+ import { File } from "@gradio/icons";
7
+ import type { I18nFormatter } from "@gradio/utils";
8
+ import type Canvas3DGS from "./Canvas3DGS.svelte";
9
+ import type Canvas3D from "./Canvas3D.svelte";
10
+
11
+ export let value: null | FileData;
12
+ export let display_mode: "solid" | "point_cloud" | "wireframe" = "solid";
13
+ export let clear_color: [number, number, number, number] = [0, 0, 0, 0];
14
+ export let label = "";
15
+ export let show_label: boolean;
16
+ export let root: string;
17
+ export let i18n: I18nFormatter;
18
+ export let zoom_speed = 1;
19
+ export let pan_speed = 1;
20
+ export let max_file_size: number | null = null;
21
+ export let uploading = false;
22
+ export let upload_promise: Promise<(FileData | null)[]> | null = null;
23
+
24
+ // alpha, beta, radius
25
+ export let camera_position: [number | null, number | null, number | null] = [
26
+ null,
27
+ null,
28
+ null
29
+ ];
30
+ export let upload: Client["upload"];
31
+ export let stream_handler: Client["stream"];
32
+
33
+ async function handle_upload({
34
+ detail
35
+ }: CustomEvent<FileData>): Promise<void> {
36
+ value = detail;
37
+ await tick();
38
+ dispatch("change", value);
39
+ dispatch("load", value);
40
+ }
41
+
42
+ async function handle_clear(): Promise<void> {
43
+ value = null;
44
+ await tick();
45
+ dispatch("clear");
46
+ dispatch("change");
47
+ }
48
+
49
+ let use_3dgs = false;
50
+ let Canvas3DGSComponent: typeof Canvas3DGS;
51
+ let Canvas3DComponent: typeof Canvas3D;
52
+ async function loadCanvas3D(): Promise<typeof Canvas3D> {
53
+ const module = await import("./Canvas3D.svelte");
54
+ return module.default;
55
+ }
56
+ async function loadCanvas3DGS(): Promise<typeof Canvas3DGS> {
57
+ const module = await import("./Canvas3DGS.svelte");
58
+ return module.default;
59
+ }
60
+ $: if (value) {
61
+ use_3dgs = value.path.endsWith(".splat") || value.path.endsWith(".ply");
62
+ if (use_3dgs) {
63
+ loadCanvas3DGS().then((component) => {
64
+ Canvas3DGSComponent = component;
65
+ });
66
+ } else {
67
+ loadCanvas3D().then((component) => {
68
+ Canvas3DComponent = component;
69
+ });
70
+ }
71
+ }
72
+
73
+ let canvas3d: Canvas3D | undefined;
74
+ async function handle_undo(): Promise<void> {
75
+ canvas3d?.reset_camera_position();
76
+ }
77
+
78
+ const dispatch = createEventDispatcher<{
79
+ change: FileData | null;
80
+ clear: undefined;
81
+ drag: boolean;
82
+ load: FileData;
83
+ }>();
84
+
85
+ let dragging = false;
86
+
87
+ $: dispatch("drag", dragging);
67
88
  </script>
68
89
 
69
90
  <BlockLabel {show_label} Icon={File} label={label || "3D Model"} />
70
91
 
71
- {#if value === null}
92
+ {#if value == null}
72
93
  <Upload
94
+ bind:upload_promise
73
95
  {upload}
74
96
  {stream_handler}
75
97
  on:load={handle_upload}
@@ -1,41 +1,51 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type { FileData, Client } from "@gradio/client";
3
2
  import type { I18nFormatter } from "@gradio/utils";
4
- declare const __propDef: {
5
- props: {
6
- value: null | FileData;
7
- display_mode?: "solid" | "point_cloud" | "wireframe";
8
- clear_color?: [number, number, number, number];
9
- label?: string;
10
- show_label: boolean;
11
- root: string;
12
- i18n: I18nFormatter;
13
- zoom_speed?: number;
14
- pan_speed?: number;
15
- max_file_size?: number | null;
16
- uploading?: boolean;
17
- camera_position?: [number | null, number | null, number | null];
18
- upload: Client["upload"];
19
- stream_handler: Client["stream"];
3
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
4
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
5
+ $$bindings?: Bindings;
6
+ } & Exports;
7
+ (internal: unknown, props: Props & {
8
+ $$events?: Events;
9
+ $$slots?: Slots;
10
+ }): Exports & {
11
+ $set?: any;
12
+ $on?: any;
20
13
  };
21
- events: {
22
- error: CustomEvent<any>;
23
- change: CustomEvent<any>;
24
- clear: CustomEvent<undefined>;
25
- drag: CustomEvent<boolean>;
26
- load: CustomEvent<FileData>;
27
- } & {
28
- [evt: string]: CustomEvent<any>;
29
- };
30
- slots: {
31
- default: {};
32
- };
33
- exports?: {} | undefined;
34
- bindings?: string | undefined;
35
- };
36
- export type Model3DUploadProps = typeof __propDef.props;
37
- export type Model3DUploadEvents = typeof __propDef.events;
38
- export type Model3DUploadSlots = typeof __propDef.slots;
39
- export default class Model3DUpload extends SvelteComponent<Model3DUploadProps, Model3DUploadEvents, Model3DUploadSlots> {
14
+ z_$$bindings?: Bindings;
40
15
  }
41
- export {};
16
+ type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
17
+ default: any;
18
+ } ? Props extends Record<string, never> ? any : {
19
+ children?: any;
20
+ } : {});
21
+ declare const Model3DUpload: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
22
+ value: null | FileData;
23
+ display_mode?: "solid" | "point_cloud" | "wireframe";
24
+ clear_color?: [number, number, number, number];
25
+ label?: string;
26
+ show_label: boolean;
27
+ root: string;
28
+ i18n: I18nFormatter;
29
+ zoom_speed?: number;
30
+ pan_speed?: number;
31
+ max_file_size?: number | null;
32
+ uploading?: boolean;
33
+ upload_promise?: Promise<(FileData | null)[]> | null;
34
+ camera_position?: [number | null, number | null, number | null];
35
+ upload: Client["upload"];
36
+ stream_handler: Client["stream"];
37
+ }, {
38
+ default: {};
39
+ }>, {
40
+ error: CustomEvent<any>;
41
+ change: CustomEvent<FileData | null>;
42
+ clear: CustomEvent<undefined>;
43
+ drag: CustomEvent<boolean>;
44
+ load: CustomEvent<FileData>;
45
+ } & {
46
+ [evt: string]: CustomEvent<any>;
47
+ }, {
48
+ default: {};
49
+ }, {}, string>;
50
+ type Model3DUpload = InstanceType<typeof Model3DUpload>;
51
+ export default Model3DUpload;
@@ -0,0 +1,19 @@
1
+ import type { FileData } from "@gradio/client";
2
+ import type { LoadingStatus } from "js/statustracker";
3
+ export interface Model3DProps {
4
+ value: null | FileData;
5
+ display_mode: "solid" | "point_cloud" | "wireframe";
6
+ clear_color: [number, number, number, number];
7
+ height: number | undefined;
8
+ zoom_speed: number;
9
+ has_change_history: boolean;
10
+ camera_position: [number | null, number | null, number | null];
11
+ }
12
+ export interface Model3DEvents {
13
+ change: FileData | null;
14
+ upload: FileData;
15
+ edit: never;
16
+ clear: never;
17
+ clear_status: LoadingStatus;
18
+ error: string;
19
+ }
package/dist/types.js ADDED
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,27 +1,27 @@
1
1
  {
2
2
  "name": "@gradio/model3d",
3
- "version": "0.15.1-dev.0",
3
+ "version": "0.15.1-dev.2",
4
4
  "description": "Gradio UI packages",
5
5
  "type": "module",
6
6
  "author": "",
7
7
  "license": "ISC",
8
8
  "private": false,
9
9
  "dependencies": {
10
- "@types/babylon": "^6.16.6",
11
- "@babylonjs/viewer": "^8.2.0",
12
- "@babylonjs/core": "^8.2.0",
13
- "@babylonjs/loaders": "^8.2.0",
14
- "dequal": "^2.0.2",
10
+ "@babylonjs/core": "^8.30.5",
11
+ "@babylonjs/loaders": "^8.30.5",
12
+ "@babylonjs/viewer": "^8.30.5",
13
+ "@types/babylon": "^6.16.9",
14
+ "dequal": "^2.0.3",
15
15
  "gsplat": "^1.2.9",
16
- "@gradio/atoms": "^0.18.1",
17
- "@gradio/client": "^2.0.0-dev.0",
18
- "@gradio/icons": "^0.14.0",
19
- "@gradio/statustracker": "^0.11.1",
20
- "@gradio/utils": "^0.10.2",
21
- "@gradio/upload": "^0.17.2-dev.0"
16
+ "@gradio/atoms": "^0.19.0-dev.1",
17
+ "@gradio/statustracker": "^0.12.0-dev.1",
18
+ "@gradio/client": "^2.0.0-dev.2",
19
+ "@gradio/icons": "^0.15.0-dev.0",
20
+ "@gradio/upload": "^0.17.2-dev.2",
21
+ "@gradio/utils": "^0.10.3-dev.0"
22
22
  },
23
23
  "devDependencies": {
24
- "@gradio/preview": "^0.14.0"
24
+ "@gradio/preview": "^0.15.0-dev.0"
25
25
  },
26
26
  "main_changeset": true,
27
27
  "main": "./Index.svelte",
@@ -36,10 +36,15 @@
36
36
  "svelte": "./dist/Example.svelte",
37
37
  "types": "./dist/Example.svelte.d.ts"
38
38
  },
39
+ "./base": {
40
+ "gradio": "./shared/Model3D.svelte",
41
+ "svelte": "./dist/shared/Model3D.svelte",
42
+ "types": "./dist/shared/Model3D.svelte.d.ts"
43
+ },
39
44
  "./package.json": "./package.json"
40
45
  },
41
46
  "peerDependencies": {
42
- "svelte": "^4.0.0"
47
+ "svelte": "^5.43.4"
43
48
  },
44
49
  "repository": {
45
50
  "type": "git",
@@ -22,7 +22,7 @@
22
22
  onMount(() => {
23
23
  const initViewer = async (): Promise<void> => {
24
24
  BABYLON_VIEWER = await import("@babylonjs/viewer");
25
- BABYLON_VIEWER.createViewerForCanvas(canvas, {
25
+ BABYLON_VIEWER.CreateViewerForCanvas(canvas, {
26
26
  clearColor: clear_color,
27
27
  useRightHandedSystem: true,
28
28
  animationAutoPlay: true,
@@ -19,6 +19,7 @@
19
19
  export let pan_speed = 1;
20
20
  export let max_file_size: number | null = null;
21
21
  export let uploading = false;
22
+ export let upload_promise: Promise<(FileData | null)[]> | null = null;
22
23
 
23
24
  // alpha, beta, radius
24
25
  export let camera_position: [number | null, number | null, number | null] = [
@@ -88,8 +89,9 @@
88
89
 
89
90
  <BlockLabel {show_label} Icon={File} label={label || "3D Model"} />
90
91
 
91
- {#if value === null}
92
+ {#if value == null}
92
93
  <Upload
94
+ bind:upload_promise
93
95
  {upload}
94
96
  {stream_handler}
95
97
  on:load={handle_upload}
package/types.ts ADDED
@@ -0,0 +1,21 @@
1
+ import type { FileData } from "@gradio/client";
2
+ import type { LoadingStatus } from "js/statustracker";
3
+
4
+ export interface Model3DProps {
5
+ value: null | FileData;
6
+ display_mode: "solid" | "point_cloud" | "wireframe";
7
+ clear_color: [number, number, number, number];
8
+ height: number | undefined;
9
+ zoom_speed: number;
10
+ has_change_history: boolean;
11
+ camera_position: [number | null, number | null, number | null];
12
+ }
13
+
14
+ export interface Model3DEvents {
15
+ change: FileData | null;
16
+ upload: FileData;
17
+ edit: never;
18
+ clear: never;
19
+ clear_status: LoadingStatus;
20
+ error: string;
21
+ }