@osdk/create-widget 2.0.0-beta.9 → 2.0.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 +39 -0
- package/build/esm/{esm-BZYNTM45.js → esm-C6MU7DAZ.js} +101 -79
- package/build/esm/esm-C6MU7DAZ.js.map +1 -0
- package/build/esm/esm-ENH745KN.js +240 -0
- package/build/esm/esm-ENH745KN.js.map +1 -0
- package/build/esm/index.js +42 -51
- package/build/esm/index.js.map +1 -1
- package/build/types/cli.d.ts.map +1 -0
- package/build/types/cli.test.d.ts.map +1 -0
- package/build/types/consola.d.ts.map +1 -0
- package/build/types/generate/generateFoundryConfigJson.d.ts +4 -4
- package/build/types/generate/generateFoundryConfigJson.d.ts.map +1 -0
- package/build/types/generate/generateFoundryConfigJson.test.d.ts.map +1 -0
- package/build/types/generate/generateNpmRc.d.ts +2 -2
- package/build/types/generate/generateNpmRc.d.ts.map +1 -0
- package/build/types/generate/generateNpmRc.test.d.ts.map +1 -0
- package/build/types/generatedNoCheck/templates.d.ts.map +1 -0
- package/build/types/getPackageFiles.d.ts +3 -1
- package/build/types/getPackageFiles.d.ts.map +1 -0
- package/build/types/highlight.d.ts.map +1 -0
- package/build/types/index.d.ts.map +1 -0
- package/build/types/prompts/promptFoundryUrl.d.ts +3 -1
- package/build/types/prompts/promptFoundryUrl.d.ts.map +1 -0
- package/build/types/prompts/promptFoundryUrl.test.d.ts.map +1 -0
- package/build/types/prompts/promptOsdkPackage.d.ts +3 -1
- package/build/types/prompts/promptOsdkPackage.d.ts.map +1 -0
- package/build/types/prompts/promptOsdkPackage.test.d.ts.map +1 -0
- package/build/types/prompts/promptOsdkRegistryUrl.d.ts +3 -1
- package/build/types/prompts/promptOsdkRegistryUrl.d.ts.map +1 -0
- package/build/types/prompts/promptOsdkRegistryUrl.test.d.ts.map +1 -0
- package/build/types/prompts/promptOverwrite.d.ts +2 -2
- package/build/types/prompts/promptOverwrite.d.ts.map +1 -0
- package/build/types/prompts/promptOverwrite.test.d.ts.map +1 -0
- package/build/types/prompts/promptProject.d.ts +3 -1
- package/build/types/prompts/promptProject.d.ts.map +1 -0
- package/build/types/prompts/promptProject.test.d.ts.map +1 -0
- package/build/types/prompts/promptSdkVersion.d.ts +2 -2
- package/build/types/prompts/promptSdkVersion.d.ts.map +1 -0
- package/build/types/prompts/promptTemplate.d.ts +2 -2
- package/build/types/prompts/promptTemplate.d.ts.map +1 -0
- package/build/types/prompts/promptTemplate.test.d.ts.map +1 -0
- package/build/types/prompts/promptWidgetSetRid.d.ts +3 -1
- package/build/types/prompts/promptWidgetSetRid.d.ts.map +1 -0
- package/build/types/prompts/promptWidgetSetRid.test.d.ts.map +1 -0
- package/build/types/run.d.ts +4 -4
- package/build/types/run.d.ts.map +1 -0
- package/build/types/templates.d.ts +6 -8
- package/build/types/templates.d.ts.map +1 -0
- package/package.json +8 -7
- package/build/esm/esm-BZYNTM45.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,44 @@
|
|
|
1
1
|
# @osdk/create-widget
|
|
2
2
|
|
|
3
|
+
## 2.0.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 776ae5d: Initial create widget CLI
|
|
8
|
+
- ff1ece7: Update create-widget template README and autoVersion strategy
|
|
9
|
+
- 314ae66: Move from "views" naming to "widgets"
|
|
10
|
+
- 255a8f1: Add minimal React widget template without OSDK
|
|
11
|
+
- 14bb6d2: Address comments on new minimal widget template
|
|
12
|
+
- 83e7ea3: Move from a single-widget to widget set model for custom widget libraries
|
|
13
|
+
- d430386: Rename unstable create-widget --widgetSetRid arg to --widgetSet
|
|
14
|
+
|
|
15
|
+
## 2.0.0-beta.16
|
|
16
|
+
|
|
17
|
+
### Minor Changes
|
|
18
|
+
|
|
19
|
+
- 255a8f1: Add minimal React widget template without OSDK
|
|
20
|
+
- 14bb6d2: Address comments on new minimal widget template
|
|
21
|
+
|
|
22
|
+
## 2.0.0-beta.15
|
|
23
|
+
|
|
24
|
+
## 2.0.0-beta.14
|
|
25
|
+
|
|
26
|
+
## 2.0.0-beta.13
|
|
27
|
+
|
|
28
|
+
### Minor Changes
|
|
29
|
+
|
|
30
|
+
- ff1ece7: Update create-widget template README and autoVersion strategy
|
|
31
|
+
|
|
32
|
+
## 2.0.0-beta.12
|
|
33
|
+
|
|
34
|
+
## 2.0.0-beta.11
|
|
35
|
+
|
|
36
|
+
### Minor Changes
|
|
37
|
+
|
|
38
|
+
- d430386: Rename unstable create-widget --widgetSetRid arg to --widgetSet
|
|
39
|
+
|
|
40
|
+
## 2.0.0-beta.10
|
|
41
|
+
|
|
3
42
|
## 2.0.0-beta.9
|
|
4
43
|
|
|
5
44
|
## 2.0.0-beta.8
|
|
@@ -3,29 +3,45 @@ var files = /* @__PURE__ */ new Map([["README.md.hbs", {
|
|
|
3
3
|
type: "raw",
|
|
4
4
|
body: `# {{project}}
|
|
5
5
|
|
|
6
|
-
This project was generated with [\`@osdk/create-widget\`](https://www.npmjs.com/package/@osdk/create-widget) and demonstrates developing
|
|
6
|
+
This project was generated with [\`@osdk/create-widget\`](https://www.npmjs.com/package/@osdk/create-widget) and demonstrates developing custom widgets to be embedded within Foundry UIs such as Workshop. It uses the Ontology SDK package \`{{osdkPackage}}\` with React on top of Vite. Check out the [Vite](https://vitejs.dev/guide/) docs for further configuration. The Vite plugin [\`@osdk/widget.vite-plugin.unstable\`](https://www.npmjs.com/package/@osdk/widget.vite-plugin.unstable) automatically generates a \`widgets.config.json\` manifest file containing metadata about widgets inside this project during the build command.
|
|
7
7
|
|
|
8
8
|
## Developing
|
|
9
9
|
|
|
10
|
-
Run the following command or equivalent with your preferred package manager to start a local development server
|
|
10
|
+
Run the following command or equivalent with your preferred package manager to start a local development server and follow the instructions printed to set up developer mode in Foundry:
|
|
11
11
|
|
|
12
12
|
\`\`\`sh
|
|
13
13
|
npm run dev
|
|
14
14
|
\`\`\`
|
|
15
15
|
|
|
16
|
-
Development configuration is stored in \`.env.development\`.
|
|
17
16
|
|
|
18
17
|
## Deploying
|
|
19
18
|
|
|
20
|
-
|
|
19
|
+
A \`foundry.config.json\` file is included in the root of this project containing the deployment configuration to Foundry.
|
|
20
|
+
|
|
21
|
+
Run the following command or equivalent with your preferred package manager to create a production build of your widgets:
|
|
21
22
|
|
|
22
23
|
\`\`\`sh
|
|
23
24
|
npm run build
|
|
24
25
|
\`\`\`
|
|
25
26
|
|
|
26
|
-
|
|
27
|
+
A \`.palantir/widgets.config.json\` manifest file containing metadata about your widgets is created during the build.
|
|
28
|
+
|
|
29
|
+
Run the following command or equivalent with your preferred package manager to deploy the production build of your widgets:
|
|
30
|
+
|
|
31
|
+
\`\`\`sh
|
|
32
|
+
npx @osdk/cli@beta unstable widgetset deploy
|
|
33
|
+
\`\`\`
|
|
34
|
+
|
|
35
|
+
By default the \`package-json\` strategy is used for determining the version for your widgets from the \`version\` field in this project's \`package.json\` file. Remember to update this field and rerun the build command to update the manifest file when deploying a new version.
|
|
27
36
|
|
|
28
|
-
|
|
37
|
+
If you prefer to infer the version from a git tag, you can use the \`git-describe\` strategy by setting the \`autoVersion\` field in the \`foundry.config.json\` file to:
|
|
38
|
+
|
|
39
|
+
\`\`\`json
|
|
40
|
+
{
|
|
41
|
+
"type": "git-describe",
|
|
42
|
+
"tagPrefix": ""
|
|
43
|
+
}
|
|
44
|
+
\`\`\`
|
|
29
45
|
`
|
|
30
46
|
}], [".gitignore", {
|
|
31
47
|
type: "raw",
|
|
@@ -88,8 +104,8 @@ dist-ssr
|
|
|
88
104
|
"dependencies": {
|
|
89
105
|
"{{osdkPackage}}": "latest",
|
|
90
106
|
"@osdk/client": "^2.0.0",
|
|
91
|
-
"@osdk/widget
|
|
92
|
-
"@osdk/widget
|
|
107
|
+
"@osdk/widget.client-react.unstable": "^1.1.0",
|
|
108
|
+
"@osdk/widget.client.unstable": "^1.1.0",
|
|
93
109
|
"@radix-ui/react-icons": "^1.3.1",
|
|
94
110
|
"@radix-ui/themes": "^3.1.4",
|
|
95
111
|
"react": "^18",
|
|
@@ -97,7 +113,7 @@ dist-ssr
|
|
|
97
113
|
"react-router-dom": "^6.23.1"
|
|
98
114
|
},
|
|
99
115
|
"devDependencies": {
|
|
100
|
-
"@osdk/widget.vite-plugin.unstable": "^1.
|
|
116
|
+
"@osdk/widget.vite-plugin.unstable": "^1.1.0",
|
|
101
117
|
"@eslint/compat": "^1.2.1",
|
|
102
118
|
"@eslint/js": "^9.13.0",
|
|
103
119
|
"@types/react": "^18",
|
|
@@ -105,7 +121,7 @@ dist-ssr
|
|
|
105
121
|
"@typescript-eslint/eslint-plugin": "^8.21.0",
|
|
106
122
|
"@typescript-eslint/parser": "^8.21.0",
|
|
107
123
|
"@vitejs/plugin-react": "^4.2.0",
|
|
108
|
-
"eslint": "^9.
|
|
124
|
+
"eslint": "^9.19.0",
|
|
109
125
|
"eslint-plugin-import": "^2.31.0",
|
|
110
126
|
"eslint-plugin-jsx-a11y": "^6.10.1",
|
|
111
127
|
"eslint-plugin-react": "^7.37.2",
|
|
@@ -115,72 +131,10 @@ dist-ssr
|
|
|
115
131
|
"typescript": "~5.5.4",
|
|
116
132
|
"typescript-eslint": "^8.21.0",
|
|
117
133
|
"vite": "^6.0.11",
|
|
118
|
-
"vitest": "^3.0.
|
|
134
|
+
"vitest": "^3.0.5"
|
|
119
135
|
}
|
|
120
136
|
}`
|
|
121
|
-
}], ["src/
|
|
122
|
-
"type": "base64",
|
|
123
|
-
"body": "aW1wb3J0IHsgdXNlRm91bmRyeVdpZGdldENvbnRleHQgfSBmcm9tICJAb3Nkay93aWRnZXQtY2xpZW50LXJlYWN0LnVuc3RhYmxlIjsKaW1wb3J0IHR5cGUgTWFpbkNvbmZpZyBmcm9tICIuL21haW4uY29uZmlnLmpzIjsKCmV4cG9ydCBjb25zdCB1c2VXaWRnZXRDb250ZXh0ID0gdXNlRm91bmRyeVdpZGdldENvbnRleHQud2l0aFR5cGVzPAogIHR5cGVvZiBNYWluQ29uZmlnCj4oKTsK"
|
|
124
|
-
}], ["src/main.config.ts.hbs", {
|
|
125
|
-
type: "raw",
|
|
126
|
-
body: `import { defineConfig } from "@osdk/widget-client.unstable";
|
|
127
|
-
|
|
128
|
-
export default defineConfig({
|
|
129
|
-
id: "widgetId",
|
|
130
|
-
name: "Custom Widget",
|
|
131
|
-
description: "And example custom widget implementation",
|
|
132
|
-
type: "workshop",
|
|
133
|
-
parameters: {
|
|
134
|
-
headerText: {
|
|
135
|
-
displayName: "Widget title",
|
|
136
|
-
type: "string",
|
|
137
|
-
},
|
|
138
|
-
todoItems: {
|
|
139
|
-
displayName: "Todo items",
|
|
140
|
-
type: "array",
|
|
141
|
-
subType: "string",
|
|
142
|
-
},
|
|
143
|
-
},
|
|
144
|
-
events: {
|
|
145
|
-
updateHeader: {
|
|
146
|
-
displayName: "Update header",
|
|
147
|
-
parameterUpdateIds: ["headerText"],
|
|
148
|
-
},
|
|
149
|
-
updateTodoItems: {
|
|
150
|
-
displayName: "Update todo items",
|
|
151
|
-
parameterUpdateIds: ["todoItems"],
|
|
152
|
-
},
|
|
153
|
-
},
|
|
154
|
-
});
|
|
155
|
-
`
|
|
156
|
-
}], ["src/main.css", {
|
|
157
|
-
"type": "base64",
|
|
158
|
-
"body": ""
|
|
159
|
-
}], ["src/main.tsx", {
|
|
160
|
-
type: "raw",
|
|
161
|
-
body: `import "@radix-ui/themes/styles.css";
|
|
162
|
-
import "./main.css";
|
|
163
|
-
|
|
164
|
-
import { FoundryWidget } from "@osdk/widget-client-react.unstable";
|
|
165
|
-
import { Theme } from "@radix-ui/themes";
|
|
166
|
-
import { createRoot } from "react-dom/client";
|
|
167
|
-
import MainConfig from "./main.config.js";
|
|
168
|
-
import { App } from "./widget.js";
|
|
169
|
-
|
|
170
|
-
const root = document.querySelector("body")!;
|
|
171
|
-
|
|
172
|
-
createRoot(root).render(
|
|
173
|
-
<Theme>
|
|
174
|
-
<FoundryWidget config={MainConfig}>
|
|
175
|
-
<App />
|
|
176
|
-
</FoundryWidget>
|
|
177
|
-
</Theme>,
|
|
178
|
-
);
|
|
179
|
-
`
|
|
180
|
-
}], ["src/vite-env.d.ts", {
|
|
181
|
-
"type": "base64",
|
|
182
|
-
"body": "Ly8vIDxyZWZlcmVuY2UgdHlwZXM9InZpdGUvY2xpZW50IiAvPgo="
|
|
183
|
-
}], ["src/widget.tsx.hbs", {
|
|
137
|
+
}], ["src/Widget.tsx.hbs", {
|
|
184
138
|
type: "raw",
|
|
185
139
|
body: `import { $Actions, $Objects, $Queries } from "{{osdkPackage}}";
|
|
186
140
|
import {
|
|
@@ -198,7 +152,7 @@ import {
|
|
|
198
152
|
import React, { useCallback, useState } from "react";
|
|
199
153
|
import { useWidgetContext } from "./context.js";
|
|
200
154
|
|
|
201
|
-
export const
|
|
155
|
+
export const Widget: React.FC = () => {
|
|
202
156
|
const { parameters, emitEvent } = useWidgetContext();
|
|
203
157
|
const { headerText, todoItems } = parameters.values;
|
|
204
158
|
const [newTodoItem, setNewTodoItem] = useState("");
|
|
@@ -338,6 +292,68 @@ export const App: React.FC = () => {
|
|
|
338
292
|
);
|
|
339
293
|
};
|
|
340
294
|
`
|
|
295
|
+
}], ["src/context.ts", {
|
|
296
|
+
"type": "base64",
|
|
297
|
+
"body": "aW1wb3J0IHsgdXNlRm91bmRyeVdpZGdldENvbnRleHQgfSBmcm9tICJAb3Nkay93aWRnZXQuY2xpZW50LXJlYWN0LnVuc3RhYmxlIjsKaW1wb3J0IHR5cGUgTWFpbkNvbmZpZyBmcm9tICIuL21haW4uY29uZmlnLmpzIjsKCmV4cG9ydCBjb25zdCB1c2VXaWRnZXRDb250ZXh0ID0gdXNlRm91bmRyeVdpZGdldENvbnRleHQud2l0aFR5cGVzPAogIHR5cGVvZiBNYWluQ29uZmlnCj4oKTsK"
|
|
298
|
+
}], ["src/main.config.ts.hbs", {
|
|
299
|
+
type: "raw",
|
|
300
|
+
body: `import { defineConfig } from "@osdk/widget.client.unstable";
|
|
301
|
+
|
|
302
|
+
export default defineConfig({
|
|
303
|
+
id: "widgetId",
|
|
304
|
+
name: "Custom Widget",
|
|
305
|
+
description: "An example custom widget implementation",
|
|
306
|
+
type: "workshop",
|
|
307
|
+
parameters: {
|
|
308
|
+
headerText: {
|
|
309
|
+
displayName: "Widget title",
|
|
310
|
+
type: "string",
|
|
311
|
+
},
|
|
312
|
+
todoItems: {
|
|
313
|
+
displayName: "Todo items",
|
|
314
|
+
type: "array",
|
|
315
|
+
subType: "string",
|
|
316
|
+
},
|
|
317
|
+
},
|
|
318
|
+
events: {
|
|
319
|
+
updateHeader: {
|
|
320
|
+
displayName: "Update header",
|
|
321
|
+
parameterUpdateIds: ["headerText"],
|
|
322
|
+
},
|
|
323
|
+
updateTodoItems: {
|
|
324
|
+
displayName: "Update todo items",
|
|
325
|
+
parameterUpdateIds: ["todoItems"],
|
|
326
|
+
},
|
|
327
|
+
},
|
|
328
|
+
});
|
|
329
|
+
`
|
|
330
|
+
}], ["src/main.css", {
|
|
331
|
+
"type": "base64",
|
|
332
|
+
"body": ""
|
|
333
|
+
}], ["src/main.tsx", {
|
|
334
|
+
type: "raw",
|
|
335
|
+
body: `import "@radix-ui/themes/styles.css";
|
|
336
|
+
import "./main.css";
|
|
337
|
+
|
|
338
|
+
import { FoundryWidget } from "@osdk/widget.client-react.unstable";
|
|
339
|
+
import { Theme } from "@radix-ui/themes";
|
|
340
|
+
import { createRoot } from "react-dom/client";
|
|
341
|
+
import MainConfig from "./main.config.js";
|
|
342
|
+
import { Widget } from "./Widget.js";
|
|
343
|
+
|
|
344
|
+
const root = document.querySelector("body")!;
|
|
345
|
+
|
|
346
|
+
createRoot(root).render(
|
|
347
|
+
<Theme>
|
|
348
|
+
<FoundryWidget config={MainConfig}>
|
|
349
|
+
<Widget />
|
|
350
|
+
</FoundryWidget>
|
|
351
|
+
</Theme>,
|
|
352
|
+
);
|
|
353
|
+
`
|
|
354
|
+
}], ["src/vite-env.d.ts", {
|
|
355
|
+
"type": "base64",
|
|
356
|
+
"body": "Ly8vIDxyZWZlcmVuY2UgdHlwZXM9InZpdGUvY2xpZW50IiAvPgo="
|
|
341
357
|
}], ["tsconfig.json", {
|
|
342
358
|
"type": "base64",
|
|
343
359
|
"body": "ewogICJjb21waWxlck9wdGlvbnMiOiB7CiAgICAidGFyZ2V0IjogIkVTMjAyMCIsCiAgICAidXNlRGVmaW5lRm9yQ2xhc3NGaWVsZHMiOiB0cnVlLAogICAgImxpYiI6IFsiRVMyMDIwIiwgIkRPTSIsICJET00uSXRlcmFibGUiXSwKICAgICJtb2R1bGUiOiAiRVNOZXh0IiwKICAgICJza2lwTGliQ2hlY2siOiB0cnVlLAoKICAgIC8qIEJ1bmRsZXIgbW9kZSAqLwogICAgIm1vZHVsZVJlc29sdXRpb24iOiAiYnVuZGxlciIsCiAgICAiYWxsb3dJbXBvcnRpbmdUc0V4dGVuc2lvbnMiOiB0cnVlLAogICAgInJlc29sdmVKc29uTW9kdWxlIjogdHJ1ZSwKICAgICJpc29sYXRlZE1vZHVsZXMiOiB0cnVlLAogICAgIm5vRW1pdCI6IHRydWUsCiAgICAianN4IjogInJlYWN0LWpzeCIsCgogICAgLyogTGludGluZyAqLwogICAgInN0cmljdCI6IHRydWUsCiAgICAibm9VbnVzZWRMb2NhbHMiOiB0cnVlLAogICAgIm5vVW51c2VkUGFyYW1ldGVycyI6IHRydWUsCiAgICAibm9GYWxsdGhyb3VnaENhc2VzSW5Td2l0Y2giOiB0cnVlCiAgfSwKICAiaW5jbHVkZSI6IFsic3JjIl0sCiAgInJlZmVyZW5jZXMiOiBbeyAicGF0aCI6ICIuL3RzY29uZmlnLm5vZGUuanNvbiIgfV0KfQo="
|
|
@@ -346,20 +362,26 @@ export const App: React.FC = () => {
|
|
|
346
362
|
"body": "ewogICJjb21waWxlck9wdGlvbnMiOiB7CiAgICAiY29tcG9zaXRlIjogdHJ1ZSwKICAgICJza2lwTGliQ2hlY2siOiB0cnVlLAogICAgIm1vZHVsZSI6ICJFU05leHQiLAogICAgIm1vZHVsZVJlc29sdXRpb24iOiAiYnVuZGxlciIsCiAgICAiYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0cyI6IHRydWUKICB9LAogICJpbmNsdWRlIjogWyJ2aXRlLmNvbmZpZy50cyJdCn0K"
|
|
347
363
|
}], ["vite.config.ts.hbs", {
|
|
348
364
|
type: "raw",
|
|
349
|
-
body: `import
|
|
365
|
+
body: `import foundryWidgetPlugin from "@osdk/widget.vite-plugin.unstable";
|
|
350
366
|
import react from "@vitejs/plugin-react";
|
|
351
367
|
import { defineConfig } from "vite";
|
|
352
368
|
|
|
353
369
|
// https://vitejs.dev/config/
|
|
354
370
|
export default defineConfig({
|
|
355
|
-
plugins: [react(),
|
|
371
|
+
plugins: [react(), foundryWidgetPlugin()],
|
|
356
372
|
server: {
|
|
357
373
|
port: 8080,
|
|
374
|
+
cors: true,
|
|
375
|
+
},
|
|
376
|
+
build: {
|
|
377
|
+
rollupOptions: {
|
|
378
|
+
input: ["./index.html"],
|
|
379
|
+
},
|
|
358
380
|
},
|
|
359
381
|
});
|
|
360
382
|
`
|
|
361
383
|
}]]);
|
|
362
384
|
|
|
363
385
|
export { files };
|
|
364
|
-
//# sourceMappingURL=esm-
|
|
365
|
-
//# sourceMappingURL=esm-
|
|
386
|
+
//# sourceMappingURL=esm-C6MU7DAZ.js.map
|
|
387
|
+
//# sourceMappingURL=esm-C6MU7DAZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../create-widget.template.react.v2/build/esm/generatedNoCheck/index.js"],"names":[],"mappings":"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","file":"esm-C6MU7DAZ.js","sourcesContent":["export const files = new Map([[\"README.md.hbs\", {\n type: \"raw\",\n body: `# {{project}}\n\nThis project was generated with [\\`@osdk/create-widget\\`](https://www.npmjs.com/package/@osdk/create-widget) and demonstrates developing custom widgets to be embedded within Foundry UIs such as Workshop. It uses the Ontology SDK package \\`{{osdkPackage}}\\` with React on top of Vite. Check out the [Vite](https://vitejs.dev/guide/) docs for further configuration. The Vite plugin [\\`@osdk/widget.vite-plugin.unstable\\`](https://www.npmjs.com/package/@osdk/widget.vite-plugin.unstable) automatically generates a \\`widgets.config.json\\` manifest file containing metadata about widgets inside this project during the build command.\n\n## Developing\n\nRun the following command or equivalent with your preferred package manager to start a local development server and follow the instructions printed to set up developer mode in Foundry:\n\n\\`\\`\\`sh\nnpm run dev\n\\`\\`\\`\n\n\n## Deploying\n\nA \\`foundry.config.json\\` file is included in the root of this project containing the deployment configuration to Foundry.\n\nRun the following command or equivalent with your preferred package manager to create a production build of your widgets:\n\n\\`\\`\\`sh\nnpm run build\n\\`\\`\\`\n\nA \\`.palantir/widgets.config.json\\` manifest file containing metadata about your widgets is created during the build.\n\nRun the following command or equivalent with your preferred package manager to deploy the production build of your widgets:\n\n\\`\\`\\`sh\nnpx @osdk/cli@beta unstable widgetset deploy\n\\`\\`\\`\n\nBy default the \\`package-json\\` strategy is used for determining the version for your widgets from the \\`version\\` field in this project's \\`package.json\\` file. Remember to update this field and rerun the build command to update the manifest file when deploying a new version.\n\nIf you prefer to infer the version from a git tag, you can use the \\`git-describe\\` strategy by setting the \\`autoVersion\\` field in the \\`foundry.config.json\\` file to:\n\n\\`\\`\\`json\n{\n \"type\": \"git-describe\",\n \"tagPrefix\": \"\"\n}\n\\`\\`\\`\n`\n}], [\".gitignore\", {\n type: \"raw\",\n body: `# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndist-ssr\n*.local\n\n# Editor directories and files\n.vscode/*\n!.vscode/extensions.json\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n`\n}], [\"eslint.config.mjs\", {\n \"type\": \"base64\",\n \"body\": \"Ly8gQHRzLWNoZWNrCmltcG9ydCBlc2xpbnQgZnJvbSAiQGVzbGludC9qcyI7CmltcG9ydCB0c1BhcnNlciBmcm9tICJAdHlwZXNjcmlwdC1lc2xpbnQvcGFyc2VyIjsKaW1wb3J0ICogYXMgaW1wb3J0UGx1Z2luIGZyb20gImVzbGludC1wbHVnaW4taW1wb3J0IjsKaW1wb3J0IGpzeEExMXlQbHVnaW4gZnJvbSAiZXNsaW50LXBsdWdpbi1qc3gtYTExeSI7CmltcG9ydCByZWFjdFBsdWdpbiBmcm9tICJlc2xpbnQtcGx1Z2luLXJlYWN0IjsKaW1wb3J0IHJlYWN0SG9va3NQbHVnaW4gZnJvbSAiZXNsaW50LXBsdWdpbi1yZWFjdC1ob29rcyI7CmltcG9ydCByZWFjdFJlZnJlc2ggZnJvbSAiZXNsaW50LXBsdWdpbi1yZWFjdC1yZWZyZXNoIjsKaW1wb3J0IGdsb2JhbHMgZnJvbSAiZ2xvYmFscyI7CmltcG9ydCB0c2VzbGludCBmcm9tICJ0eXBlc2NyaXB0LWVzbGludCI7CgpleHBvcnQgZGVmYXVsdCB0c2VzbGludC5jb25maWcoewogIGZpbGVzOiBbImVzbGludC5jb25maWcubWpzIiwgInNyYy8qKi8qLntqcyxtanMsY2pzLHRzLGpzeCx0c3h9Il0sCiAgc2V0dGluZ3M6IHsKICAgIHJlYWN0OiB7CiAgICAgIHZlcnNpb246ICJkZXRlY3QiLAogICAgfSwKCiAgICAiaW1wb3J0L3Jlc29sdmVyIjogewogICAgICBub2RlOiB7CiAgICAgICAgZXh0ZW5zaW9uczogWyIuanMiLCAiLmpzeCIsICIudHMiLCAiLnRzeCJdLAogICAgICB9LAogICAgfSwKICB9LAogIGxhbmd1YWdlT3B0aW9uczogewogICAgZ2xvYmFsczogewogICAgICAuLi5nbG9iYWxzLmJyb3dzZXIsCiAgICB9LAoKICAgIHBhcnNlcjogdHNQYXJzZXIsCiAgfSwKICBleHRlbmRzOiBbCiAgICBlc2xpbnQuY29uZmlncy5yZWNvbW1lbmRlZCwKICAgIC4uLnRzZXNsaW50LmNvbmZpZ3MucmVjb21tZW5kZWQsCiAgXSwKICBwbHVnaW5zOiB7CiAgICAicmVhY3QiOiAvKiogQHR5cGUgaW1wb3J0KCJlc2xpbnQiKS5FU0xpbnQuUGx1Z2luICovIChyZWFjdFBsdWdpbiksCiAgICAicmVhY3QtcmVmcmVzaCI6IHJlYWN0UmVmcmVzaCwKICAgICJyZWFjdC1ob29rcyI6CiAgICAgIC8qKiBAdHlwZSBpbXBvcnQoImVzbGludCIpLkVTTGludC5QbHVnaW4gKi8gKHJlYWN0SG9va3NQbHVnaW4pLAogICAgImpzeC1hMTF5IjoganN4QTExeVBsdWdpbiwKICAgICJpbXBvcnQiOiBpbXBvcnRQbHVnaW4sCiAgfSwKICBydWxlczogewogICAgLi4uKAogICAgICAvKiogQHR5cGUgaW1wb3J0KCJlc2xpbnQiKS5MaW50ZXIuUnVsZXNSZWNvcmQgKi8KICAgICAgKHJlYWN0UGx1Z2luLmNvbmZpZ3MuZmxhdD8ucmVjb21tZW5kZWQucnVsZXMpCiAgICApLAogICAgInJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzIjogImVycm9yIiwKICAgICJyZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHMiOiAid2FybiIsCiAgICAuLi5qc3hBMTF5UGx1Z2luLmNvbmZpZ3MucmVjb21tZW5kZWQucnVsZXMsCiAgICAicmVhY3QtcmVmcmVzaC9vbmx5LWV4cG9ydC1jb21wb25lbnRzIjogWyJ3YXJuIiwgewogICAgICBhbGxvd0NvbnN0YW50RXhwb3J0OiB0cnVlLAogICAgfV0sCgogICAgImltcG9ydC9uYW1lZCI6ICJlcnJvciIsCiAgICAiaW1wb3J0L2RlZmF1bHQiOiAiZXJyb3IiLAogICAgImltcG9ydC9uYW1lc3BhY2UiOiAiZXJyb3IiLAogICAgImltcG9ydC9uby1kdXBsaWNhdGVzIjogImVycm9yIiwKICAgICJpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMiOiAiZXJyb3IiLAoKICAgICJyZWFjdC9yZWFjdC1pbi1qc3gtc2NvcGUiOiAib2ZmIiwKICB9LAp9KTsK\"\n}], [\"index.html\", {\n type: \"raw\",\n body: `<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>Widget: Ontology SDK + React</title>\n </head>\n <body>\n <script type=\"module\" src=\"/src/main.tsx\"></script>\n </body>\n</html>\n`\n}], [\"package.json.hbs\", {\n type: \"raw\",\n body: `{\n \"name\": \"{{project}}\",\n \"private\": true,\n \"version\": \"0.0.0\",\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"vite\",\n \"build\": \"tsc && vite build\",\n \"lint\": \"eslint . --report-unused-disable-directives --max-warnings 0\",\n \"test\": \"vitest run --passWithNoTests\",\n \"preview\": \"vite preview\"\n },\n \"dependencies\": {\n \"{{osdkPackage}}\": \"latest\",\n \"@osdk/client\": \"^2.0.0\",\n \"@osdk/widget.client-react.unstable\": \"^1.1.0\",\n \"@osdk/widget.client.unstable\": \"^1.1.0\",\n \"@radix-ui/react-icons\": \"^1.3.1\",\n \"@radix-ui/themes\": \"^3.1.4\",\n \"react\": \"^18\",\n \"react-dom\": \"^18\",\n \"react-router-dom\": \"^6.23.1\"\n },\n \"devDependencies\": {\n \"@osdk/widget.vite-plugin.unstable\": \"^1.1.0\",\n \"@eslint/compat\": \"^1.2.1\",\n \"@eslint/js\": \"^9.13.0\",\n \"@types/react\": \"^18\",\n \"@types/react-dom\": \"^18\",\n \"@typescript-eslint/eslint-plugin\": \"^8.21.0\",\n \"@typescript-eslint/parser\": \"^8.21.0\",\n \"@vitejs/plugin-react\": \"^4.2.0\",\n \"eslint\": \"^9.19.0\",\n \"eslint-plugin-import\": \"^2.31.0\",\n \"eslint-plugin-jsx-a11y\": \"^6.10.1\",\n \"eslint-plugin-react\": \"^7.37.2\",\n \"eslint-plugin-react-hooks\": \"^5.0.0\",\n \"eslint-plugin-react-refresh\": \"^0.4.14\",\n \"globals\": \"^15.11.0\",\n \"typescript\": \"~5.5.4\",\n \"typescript-eslint\": \"^8.21.0\",\n \"vite\": \"^6.0.11\",\n \"vitest\": \"^3.0.5\"\n }\n}`\n}], [\"src/Widget.tsx.hbs\", {\n type: \"raw\",\n body: `import { \\$Actions, \\$Objects, \\$Queries } from \"{{osdkPackage}}\";\nimport {\n Box,\n Button,\n Checkbox,\n Container,\n Flex,\n Heading,\n Skeleton,\n Table,\n Text,\n TextField,\n} from \"@radix-ui/themes\";\nimport React, { useCallback, useState } from \"react\";\nimport { useWidgetContext } from \"./context.js\";\n\nexport const Widget: React.FC = () => {\n const { parameters, emitEvent } = useWidgetContext();\n const { headerText, todoItems } = parameters.values;\n const [newTodoItem, setNewTodoItem] = useState(\"\");\n\n const handleAddTodoItem = useCallback(() => {\n emitEvent(\"updateTodoItems\", {\n parameterUpdates: {\n todoItems: [...(todoItems ?? []), newTodoItem],\n },\n });\n setNewTodoItem(\"\");\n }, [emitEvent, newTodoItem, todoItems]);\n\n const handleNewTodoItemChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setNewTodoItem(event.target.value);\n },\n []\n );\n\n const objectApiNames = Object.keys(\\$Objects);\n const actionApiNames = Object.keys(\\$Actions);\n const queryApiNames = Object.keys(\\$Queries);\n\n return (\n <Box>\n <Container size=\"1\">\n <Flex direction=\"column\" gap=\"4\">\n <Flex p=\"5\" direction=\"column\" gap=\"2\">\n <Heading size=\"4\">\n {parameters.state === \"loading\"\n || parameters.state === \"not-started\"\n ? <Skeleton>Hello, world!</Skeleton>\n : headerText ?? \"{{project}}\"}\n </Heading>\n\n <Table.Root>\n <Table.Header>\n <Table.Row>\n <Table.ColumnHeaderCell>Finished</Table.ColumnHeaderCell>\n <Table.ColumnHeaderCell>Item</Table.ColumnHeaderCell>\n </Table.Row>\n </Table.Header>\n\n <Table.Body>\n {(parameters.state === \"loading\"\n || parameters.state === \"not-started\") && (\n <>\n <Table.Row>\n <Table.Cell>\n <Skeleton>\n <Checkbox />\n </Skeleton>\n </Table.Cell>\n <Table.Cell>\n <Skeleton>Loading cell</Skeleton>\n </Table.Cell>\n </Table.Row>\n <Table.Row>\n <Table.Cell>\n <Skeleton>\n <Checkbox />\n </Skeleton>\n </Table.Cell>\n <Table.Cell>\n <Skeleton>Loading cell</Skeleton>\n </Table.Cell>\n </Table.Row>\n </>\n )}\n {parameters.state === \"loaded\"\n && todoItems?.map((item, index) => (\n <Table.Row key={index}>\n <Table.Cell>\n <Checkbox />\n </Table.Cell>\n <Table.Cell>{item}</Table.Cell>\n </Table.Row>\n ))}\n {parameters.state === \"loaded\"\n && (todoItems ?? []).length === 0 && (\n <Table.Row>\n <Table.Cell colSpan={2}>No items yet</Table.Cell>\n </Table.Row>\n )}\n <Table.Row>\n <Table.Cell colSpan={2}>\n <Flex gap=\"2\">\n <TextField.Root\n value={newTodoItem}\n onChange={handleNewTodoItemChange}\n size=\"2\"\n placeholder=\"Add item…\"\n />\n <Button onClick={handleAddTodoItem}>Add item</Button>\n </Flex>\n </Table.Cell>\n </Table.Row>\n </Table.Body>\n </Table.Root>\n\n </Flex>\n <Box>\n <Flex direction=\"column\" gap=\"2\">\n <Text>\n Try and of the following methods from your Ontology SDK\n </Text>\n <Flex direction=\"column\" gap=\"1\">\n <Heading size=\"4\">Objects ({objectApiNames.length})</Heading>\n <pre>\n {objectApiNames.map((objectApiName) => (\n <div key={objectApiName}>client({objectApiName})</div>\n ))}\n </pre>\n </Flex>\n <Flex direction=\"column\" gap=\"1\">\n <Heading size=\"4\">Actions ({actionApiNames.length})</Heading>\n <pre>\n {actionApiNames.map((actionApiName) => (\n <div key={actionApiName}>client({actionApiName})</div>\n ))}\n </pre>\n </Flex>\n <Flex direction=\"column\" gap=\"1\">\n <Heading size=\"4\">Queries ({queryApiNames.length})</Heading>\n <pre>\n {queryApiNames.map((queryApiName) => (\n <div key={queryApiName}>client({queryApiName})</div>\n ))}\n </pre>\n </Flex>\n </Flex>\n </Box>\n </Flex>\n </Container>\n </Box>\n );\n};\n`\n}], [\"src/context.ts\", {\n \"type\": \"base64\",\n \"body\": \"aW1wb3J0IHsgdXNlRm91bmRyeVdpZGdldENvbnRleHQgfSBmcm9tICJAb3Nkay93aWRnZXQuY2xpZW50LXJlYWN0LnVuc3RhYmxlIjsKaW1wb3J0IHR5cGUgTWFpbkNvbmZpZyBmcm9tICIuL21haW4uY29uZmlnLmpzIjsKCmV4cG9ydCBjb25zdCB1c2VXaWRnZXRDb250ZXh0ID0gdXNlRm91bmRyeVdpZGdldENvbnRleHQud2l0aFR5cGVzPAogIHR5cGVvZiBNYWluQ29uZmlnCj4oKTsK\"\n}], [\"src/main.config.ts.hbs\", {\n type: \"raw\",\n body: `import { defineConfig } from \"@osdk/widget.client.unstable\";\n\nexport default defineConfig({\n id: \"widgetId\",\n name: \"Custom Widget\",\n description: \"An example custom widget implementation\",\n type: \"workshop\",\n parameters: {\n headerText: {\n displayName: \"Widget title\",\n type: \"string\",\n },\n todoItems: {\n displayName: \"Todo items\",\n type: \"array\",\n subType: \"string\",\n },\n },\n events: {\n updateHeader: {\n displayName: \"Update header\",\n parameterUpdateIds: [\"headerText\"],\n },\n updateTodoItems: {\n displayName: \"Update todo items\",\n parameterUpdateIds: [\"todoItems\"],\n },\n },\n});\n`\n}], [\"src/main.css\", {\n \"type\": \"base64\",\n \"body\": \"\"\n}], [\"src/main.tsx\", {\n type: \"raw\",\n body: `import \"@radix-ui/themes/styles.css\";\nimport \"./main.css\";\n\nimport { FoundryWidget } from \"@osdk/widget.client-react.unstable\";\nimport { Theme } from \"@radix-ui/themes\";\nimport { createRoot } from \"react-dom/client\";\nimport MainConfig from \"./main.config.js\";\nimport { Widget } from \"./Widget.js\";\n\nconst root = document.querySelector(\"body\")!;\n\ncreateRoot(root).render(\n <Theme>\n <FoundryWidget config={MainConfig}>\n <Widget />\n </FoundryWidget>\n </Theme>,\n);\n`\n}], [\"src/vite-env.d.ts\", {\n \"type\": \"base64\",\n \"body\": \"Ly8vIDxyZWZlcmVuY2UgdHlwZXM9InZpdGUvY2xpZW50IiAvPgo=\"\n}], [\"tsconfig.json\", {\n \"type\": \"base64\",\n \"body\": \"ewogICJjb21waWxlck9wdGlvbnMiOiB7CiAgICAidGFyZ2V0IjogIkVTMjAyMCIsCiAgICAidXNlRGVmaW5lRm9yQ2xhc3NGaWVsZHMiOiB0cnVlLAogICAgImxpYiI6IFsiRVMyMDIwIiwgIkRPTSIsICJET00uSXRlcmFibGUiXSwKICAgICJtb2R1bGUiOiAiRVNOZXh0IiwKICAgICJza2lwTGliQ2hlY2siOiB0cnVlLAoKICAgIC8qIEJ1bmRsZXIgbW9kZSAqLwogICAgIm1vZHVsZVJlc29sdXRpb24iOiAiYnVuZGxlciIsCiAgICAiYWxsb3dJbXBvcnRpbmdUc0V4dGVuc2lvbnMiOiB0cnVlLAogICAgInJlc29sdmVKc29uTW9kdWxlIjogdHJ1ZSwKICAgICJpc29sYXRlZE1vZHVsZXMiOiB0cnVlLAogICAgIm5vRW1pdCI6IHRydWUsCiAgICAianN4IjogInJlYWN0LWpzeCIsCgogICAgLyogTGludGluZyAqLwogICAgInN0cmljdCI6IHRydWUsCiAgICAibm9VbnVzZWRMb2NhbHMiOiB0cnVlLAogICAgIm5vVW51c2VkUGFyYW1ldGVycyI6IHRydWUsCiAgICAibm9GYWxsdGhyb3VnaENhc2VzSW5Td2l0Y2giOiB0cnVlCiAgfSwKICAiaW5jbHVkZSI6IFsic3JjIl0sCiAgInJlZmVyZW5jZXMiOiBbeyAicGF0aCI6ICIuL3RzY29uZmlnLm5vZGUuanNvbiIgfV0KfQo=\"\n}], [\"tsconfig.node.json\", {\n \"type\": \"base64\",\n \"body\": \"ewogICJjb21waWxlck9wdGlvbnMiOiB7CiAgICAiY29tcG9zaXRlIjogdHJ1ZSwKICAgICJza2lwTGliQ2hlY2siOiB0cnVlLAogICAgIm1vZHVsZSI6ICJFU05leHQiLAogICAgIm1vZHVsZVJlc29sdXRpb24iOiAiYnVuZGxlciIsCiAgICAiYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0cyI6IHRydWUKICB9LAogICJpbmNsdWRlIjogWyJ2aXRlLmNvbmZpZy50cyJdCn0K\"\n}], [\"vite.config.ts.hbs\", {\n type: \"raw\",\n body: `import foundryWidgetPlugin from \"@osdk/widget.vite-plugin.unstable\";\nimport react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n plugins: [react(), foundryWidgetPlugin()],\n server: {\n port: 8080,\n cors: true,\n },\n build: {\n rollupOptions: {\n input: [\"./index.html\"],\n },\n },\n});\n`\n}]]);"]}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
// ../create-widget.template.minimal-react.v2/build/esm/generatedNoCheck/index.js
|
|
2
|
+
var files = /* @__PURE__ */ new Map([["README.md.hbs", {
|
|
3
|
+
type: "raw",
|
|
4
|
+
body: `# {{project}}
|
|
5
|
+
|
|
6
|
+
This project was generated with [\`@osdk/create-widget\`](https://www.npmjs.com/package/@osdk/create-widget) and demonstrates developing custom widgets to be embedded within Foundry UIs such as Workshop. It uses React on top of Vite. Check out the [Vite](https://vitejs.dev/guide/) docs for further configuration. The Vite plugin [\`@osdk/widget.vite-plugin.unstable\`](https://www.npmjs.com/package/@osdk/widget.vite-plugin.unstable) automatically generates a \`widgets.config.json\` manifest file containing metadata about widgets inside this project during the build command.
|
|
7
|
+
|
|
8
|
+
## Developing
|
|
9
|
+
|
|
10
|
+
Run the following command or equivalent with your preferred package manager to start a local development server and follow the instructions printed to set up developer mode in Foundry:
|
|
11
|
+
|
|
12
|
+
\`\`\`sh
|
|
13
|
+
npm run dev
|
|
14
|
+
\`\`\`
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## Deploying
|
|
18
|
+
|
|
19
|
+
A \`foundry.config.json\` file is included in the root of this project containing the deployment configuration to Foundry.
|
|
20
|
+
|
|
21
|
+
Run the following command or equivalent with your preferred package manager to create a production build of your widgets:
|
|
22
|
+
|
|
23
|
+
\`\`\`sh
|
|
24
|
+
npm run build
|
|
25
|
+
\`\`\`
|
|
26
|
+
|
|
27
|
+
A \`.palantir/widgets.config.json\` manifest file containing metadata about your widgets is created during the build.
|
|
28
|
+
|
|
29
|
+
Run the following command or equivalent with your preferred package manager to deploy the production build of your widgets:
|
|
30
|
+
|
|
31
|
+
\`\`\`sh
|
|
32
|
+
npx @osdk/cli@beta unstable widgetset deploy
|
|
33
|
+
\`\`\`
|
|
34
|
+
|
|
35
|
+
By default the \`package-json\` strategy is used for determining the version for your widgets from the \`version\` field in this project's \`package.json\` file. Remember to update this field and rerun the build command to update the manifest file when deploying a new version.
|
|
36
|
+
|
|
37
|
+
If you prefer to infer the version from a git tag, you can use the \`git-describe\` strategy by setting the \`autoVersion\` field in the \`foundry.config.json\` file to:
|
|
38
|
+
|
|
39
|
+
\`\`\`json
|
|
40
|
+
{
|
|
41
|
+
"type": "git-describe",
|
|
42
|
+
"tagPrefix": ""
|
|
43
|
+
}
|
|
44
|
+
\`\`\`
|
|
45
|
+
`
|
|
46
|
+
}], [".gitignore", {
|
|
47
|
+
type: "raw",
|
|
48
|
+
body: `# Logs
|
|
49
|
+
logs
|
|
50
|
+
*.log
|
|
51
|
+
npm-debug.log*
|
|
52
|
+
yarn-debug.log*
|
|
53
|
+
yarn-error.log*
|
|
54
|
+
pnpm-debug.log*
|
|
55
|
+
lerna-debug.log*
|
|
56
|
+
|
|
57
|
+
node_modules
|
|
58
|
+
dist
|
|
59
|
+
dist-ssr
|
|
60
|
+
*.local
|
|
61
|
+
|
|
62
|
+
# Editor directories and files
|
|
63
|
+
.vscode/*
|
|
64
|
+
!.vscode/extensions.json
|
|
65
|
+
.idea
|
|
66
|
+
.DS_Store
|
|
67
|
+
*.suo
|
|
68
|
+
*.ntvs*
|
|
69
|
+
*.njsproj
|
|
70
|
+
*.sln
|
|
71
|
+
*.sw?
|
|
72
|
+
`
|
|
73
|
+
}], ["eslint.config.mjs", {
|
|
74
|
+
"type": "base64",
|
|
75
|
+
"body": "Ly8gQHRzLWNoZWNrCmltcG9ydCBlc2xpbnQgZnJvbSAiQGVzbGludC9qcyI7CmltcG9ydCB0c1BhcnNlciBmcm9tICJAdHlwZXNjcmlwdC1lc2xpbnQvcGFyc2VyIjsKaW1wb3J0ICogYXMgaW1wb3J0UGx1Z2luIGZyb20gImVzbGludC1wbHVnaW4taW1wb3J0IjsKaW1wb3J0IGpzeEExMXlQbHVnaW4gZnJvbSAiZXNsaW50LXBsdWdpbi1qc3gtYTExeSI7CmltcG9ydCByZWFjdFBsdWdpbiBmcm9tICJlc2xpbnQtcGx1Z2luLXJlYWN0IjsKaW1wb3J0IHJlYWN0SG9va3NQbHVnaW4gZnJvbSAiZXNsaW50LXBsdWdpbi1yZWFjdC1ob29rcyI7CmltcG9ydCByZWFjdFJlZnJlc2ggZnJvbSAiZXNsaW50LXBsdWdpbi1yZWFjdC1yZWZyZXNoIjsKaW1wb3J0IGdsb2JhbHMgZnJvbSAiZ2xvYmFscyI7CmltcG9ydCB0c2VzbGludCBmcm9tICJ0eXBlc2NyaXB0LWVzbGludCI7CgpleHBvcnQgZGVmYXVsdCB0c2VzbGludC5jb25maWcoewogIGZpbGVzOiBbImVzbGludC5jb25maWcubWpzIiwgInNyYy8qKi8qLntqcyxtanMsY2pzLHRzLGpzeCx0c3h9Il0sCiAgc2V0dGluZ3M6IHsKICAgIHJlYWN0OiB7CiAgICAgIHZlcnNpb246ICJkZXRlY3QiLAogICAgfSwKCiAgICAiaW1wb3J0L3Jlc29sdmVyIjogewogICAgICBub2RlOiB7CiAgICAgICAgZXh0ZW5zaW9uczogWyIuanMiLCAiLmpzeCIsICIudHMiLCAiLnRzeCJdLAogICAgICB9LAogICAgfSwKICB9LAogIGxhbmd1YWdlT3B0aW9uczogewogICAgZ2xvYmFsczogewogICAgICAuLi5nbG9iYWxzLmJyb3dzZXIsCiAgICB9LAoKICAgIHBhcnNlcjogdHNQYXJzZXIsCiAgfSwKICBleHRlbmRzOiBbCiAgICBlc2xpbnQuY29uZmlncy5yZWNvbW1lbmRlZCwKICAgIC4uLnRzZXNsaW50LmNvbmZpZ3MucmVjb21tZW5kZWQsCiAgXSwKICBwbHVnaW5zOiB7CiAgICAicmVhY3QiOiAvKiogQHR5cGUgaW1wb3J0KCJlc2xpbnQiKS5FU0xpbnQuUGx1Z2luICovIChyZWFjdFBsdWdpbiksCiAgICAicmVhY3QtcmVmcmVzaCI6IHJlYWN0UmVmcmVzaCwKICAgICJyZWFjdC1ob29rcyI6CiAgICAgIC8qKiBAdHlwZSBpbXBvcnQoImVzbGludCIpLkVTTGludC5QbHVnaW4gKi8gKHJlYWN0SG9va3NQbHVnaW4pLAogICAgImpzeC1hMTF5IjoganN4QTExeVBsdWdpbiwKICAgICJpbXBvcnQiOiBpbXBvcnRQbHVnaW4sCiAgfSwKICBydWxlczogewogICAgLi4uKAogICAgICAvKiogQHR5cGUgaW1wb3J0KCJlc2xpbnQiKS5MaW50ZXIuUnVsZXNSZWNvcmQgKi8KICAgICAgKHJlYWN0UGx1Z2luLmNvbmZpZ3MuZmxhdD8ucmVjb21tZW5kZWQucnVsZXMpCiAgICApLAogICAgInJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzIjogImVycm9yIiwKICAgICJyZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHMiOiAid2FybiIsCiAgICAuLi5qc3hBMTF5UGx1Z2luLmNvbmZpZ3MucmVjb21tZW5kZWQucnVsZXMsCiAgICAicmVhY3QtcmVmcmVzaC9vbmx5LWV4cG9ydC1jb21wb25lbnRzIjogWyJ3YXJuIiwgewogICAgICBhbGxvd0NvbnN0YW50RXhwb3J0OiB0cnVlLAogICAgfV0sCgogICAgImltcG9ydC9uYW1lZCI6ICJlcnJvciIsCiAgICAiaW1wb3J0L2RlZmF1bHQiOiAiZXJyb3IiLAogICAgImltcG9ydC9uYW1lc3BhY2UiOiAiZXJyb3IiLAogICAgImltcG9ydC9uby1kdXBsaWNhdGVzIjogImVycm9yIiwKICAgICJpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMiOiAiZXJyb3IiLAoKICAgICJyZWFjdC9yZWFjdC1pbi1qc3gtc2NvcGUiOiAib2ZmIiwKICB9LAp9KTsK"
|
|
76
|
+
}], ["index.html", {
|
|
77
|
+
type: "raw",
|
|
78
|
+
body: `<!doctype html>
|
|
79
|
+
<html lang="en">
|
|
80
|
+
<head>
|
|
81
|
+
<meta charset="UTF-8" />
|
|
82
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
83
|
+
<title>Minimal React Custom Widget</title>
|
|
84
|
+
</head>
|
|
85
|
+
<body>
|
|
86
|
+
<script type="module" src="/src/main.tsx"></script>
|
|
87
|
+
</body>
|
|
88
|
+
</html>
|
|
89
|
+
`
|
|
90
|
+
}], ["package.json.hbs", {
|
|
91
|
+
type: "raw",
|
|
92
|
+
body: `{
|
|
93
|
+
"name": "{{project}}",
|
|
94
|
+
"private": true,
|
|
95
|
+
"version": "0.0.0",
|
|
96
|
+
"type": "module",
|
|
97
|
+
"scripts": {
|
|
98
|
+
"dev": "vite",
|
|
99
|
+
"build": "tsc && vite build",
|
|
100
|
+
"lint": "eslint . --report-unused-disable-directives --max-warnings 0",
|
|
101
|
+
"test": "vitest run --passWithNoTests",
|
|
102
|
+
"preview": "vite preview"
|
|
103
|
+
},
|
|
104
|
+
"dependencies": {
|
|
105
|
+
"@osdk/widget.client-react.unstable": "^1.1.0",
|
|
106
|
+
"@osdk/widget.client.unstable": "^1.1.0",
|
|
107
|
+
"@blueprintjs/core": "^5.16.0",
|
|
108
|
+
"react": "^18",
|
|
109
|
+
"react-dom": "^18",
|
|
110
|
+
"react-router-dom": "^6.23.1"
|
|
111
|
+
},
|
|
112
|
+
"devDependencies": {
|
|
113
|
+
"@osdk/widget.vite-plugin.unstable": "^1.1.0",
|
|
114
|
+
"@eslint/compat": "^1.2.1",
|
|
115
|
+
"@eslint/js": "^9.13.0",
|
|
116
|
+
"@types/react": "^18",
|
|
117
|
+
"@types/react-dom": "^18",
|
|
118
|
+
"@typescript-eslint/eslint-plugin": "^8.21.0",
|
|
119
|
+
"@typescript-eslint/parser": "^8.21.0",
|
|
120
|
+
"@vitejs/plugin-react": "^4.2.0",
|
|
121
|
+
"eslint": "^9.19.0",
|
|
122
|
+
"eslint-plugin-import": "^2.31.0",
|
|
123
|
+
"eslint-plugin-jsx-a11y": "^6.10.1",
|
|
124
|
+
"eslint-plugin-react": "^7.37.2",
|
|
125
|
+
"eslint-plugin-react-hooks": "^5.0.0",
|
|
126
|
+
"eslint-plugin-react-refresh": "^0.4.14",
|
|
127
|
+
"globals": "^15.11.0",
|
|
128
|
+
"typescript": "~5.5.4",
|
|
129
|
+
"typescript-eslint": "^8.21.0",
|
|
130
|
+
"vite": "^6.0.11",
|
|
131
|
+
"vitest": "^3.0.5"
|
|
132
|
+
}
|
|
133
|
+
}`
|
|
134
|
+
}], ["src/Widget.module.css", {
|
|
135
|
+
"type": "base64",
|
|
136
|
+
"body": "LmNvbnRhaW5lciB7CiAgICBwYWRkaW5nOiAxNXB4OwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBoZWlnaHQ6IDEwMCU7Cn0KCi5jYXJkIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMTBweDsKICAgIHdpZHRoOiAxNTBweDsKfQ=="
|
|
137
|
+
}], ["src/Widget.tsx", {
|
|
138
|
+
type: "raw",
|
|
139
|
+
body: `import { Button, Card, H4 } from "@blueprintjs/core";
|
|
140
|
+
import {
|
|
141
|
+
type FoundryWidgetClientContext,
|
|
142
|
+
useFoundryWidgetContext,
|
|
143
|
+
} from "@osdk/widget.client-react.unstable";
|
|
144
|
+
import React, { useCallback, useEffect } from "react";
|
|
145
|
+
import type MainConfig from "./main.config.js";
|
|
146
|
+
import css from "./Widget.module.css";
|
|
147
|
+
|
|
148
|
+
const useWidgetContext: () => FoundryWidgetClientContext<typeof MainConfig> =
|
|
149
|
+
useFoundryWidgetContext.withTypes<typeof MainConfig>();
|
|
150
|
+
|
|
151
|
+
export const Widget: React.FC = () => {
|
|
152
|
+
const { parameters, emitEvent } = useWidgetContext();
|
|
153
|
+
const greetingName = parameters.values.greetingName ?? "World";
|
|
154
|
+
const counterValue = parameters.values.counterValue ?? 0;
|
|
155
|
+
|
|
156
|
+
const setCounterValue = useCallback(
|
|
157
|
+
(value: number) =>
|
|
158
|
+
emitEvent("setCounterValue", {
|
|
159
|
+
parameterUpdates: { counterValue: value },
|
|
160
|
+
}),
|
|
161
|
+
[emitEvent],
|
|
162
|
+
);
|
|
163
|
+
|
|
164
|
+
const handleResetCounter = useCallback(() => setCounterValue(0), [
|
|
165
|
+
setCounterValue,
|
|
166
|
+
]);
|
|
167
|
+
|
|
168
|
+
useEffect(() => {
|
|
169
|
+
const interval = setInterval(() => setCounterValue(counterValue + 1), 1000);
|
|
170
|
+
return () => clearInterval(interval);
|
|
171
|
+
}, [setCounterValue, counterValue]);
|
|
172
|
+
|
|
173
|
+
return (
|
|
174
|
+
<div className={css.container}>
|
|
175
|
+
<H4>Hello, {greetingName}!</H4>
|
|
176
|
+
<Card className={css.card} compact={true}>
|
|
177
|
+
<div>Count: {counterValue}</div>
|
|
178
|
+
<Button onClick={handleResetCounter}>Reset</Button>
|
|
179
|
+
</Card>
|
|
180
|
+
</div>
|
|
181
|
+
);
|
|
182
|
+
};
|
|
183
|
+
`
|
|
184
|
+
}], ["src/main.config.ts", {
|
|
185
|
+
"type": "base64",
|
|
186
|
+
"body": "aW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSAiQG9zZGsvd2lkZ2V0LmNsaWVudC51bnN0YWJsZSI7CgpleHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoewogIGlkOiAid2lkZ2V0SWQiLAogIG5hbWU6ICJDdXN0b20gV2lkZ2V0IiwKICBkZXNjcmlwdGlvbjogIkFuIGV4YW1wbGUgY3VzdG9tIHdpZGdldCBpbXBsZW1lbnRhdGlvbiIsCiAgdHlwZTogIndvcmtzaG9wIiwKICBwYXJhbWV0ZXJzOiB7CiAgICBncmVldGluZ05hbWU6IHsKICAgICAgZGlzcGxheU5hbWU6ICJHcmVldGluZyBuYW1lIiwKICAgICAgdHlwZTogInN0cmluZyIsCiAgICB9LAogICAgY291bnRlclZhbHVlOiB7CiAgICAgIGRpc3BsYXlOYW1lOiAiQ291bnRlciB2YWx1ZSIsCiAgICAgIHR5cGU6ICJudW1iZXIiLAogICAgfSwKICB9LAogIGV2ZW50czogewogICAgc2V0Q291bnRlclZhbHVlOiB7CiAgICAgIGRpc3BsYXlOYW1lOiAiU2V0IGNvdW50ZXIgdmFsdWUiLAogICAgICBwYXJhbWV0ZXJVcGRhdGVJZHM6IFsiY291bnRlclZhbHVlIl0sCiAgICB9LAogIH0sCn0pOwo="
|
|
187
|
+
}], ["src/main.css", {
|
|
188
|
+
"type": "base64",
|
|
189
|
+
"body": "aHRtbCwgYm9keSB7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBtYXJnaW46IDA7Cn0="
|
|
190
|
+
}], ["src/main.tsx", {
|
|
191
|
+
type: "raw",
|
|
192
|
+
body: `import "@blueprintjs/core/lib/css/blueprint.css";
|
|
193
|
+
|
|
194
|
+
import { FoundryWidget } from "@osdk/widget.client-react.unstable";
|
|
195
|
+
import { createRoot } from "react-dom/client";
|
|
196
|
+
import MainConfig from "./main.config.js";
|
|
197
|
+
import { Widget } from "./Widget.js";
|
|
198
|
+
|
|
199
|
+
const root = document.querySelector("body")!;
|
|
200
|
+
|
|
201
|
+
createRoot(root).render(
|
|
202
|
+
<FoundryWidget config={MainConfig}>
|
|
203
|
+
<Widget />
|
|
204
|
+
</FoundryWidget>,
|
|
205
|
+
);
|
|
206
|
+
`
|
|
207
|
+
}], ["src/vite-env.d.ts", {
|
|
208
|
+
"type": "base64",
|
|
209
|
+
"body": "Ly8vIDxyZWZlcmVuY2UgdHlwZXM9InZpdGUvY2xpZW50IiAvPgo="
|
|
210
|
+
}], ["tsconfig.json", {
|
|
211
|
+
"type": "base64",
|
|
212
|
+
"body": "ewogICJjb21waWxlck9wdGlvbnMiOiB7CiAgICAidGFyZ2V0IjogIkVTMjAyMCIsCiAgICAidXNlRGVmaW5lRm9yQ2xhc3NGaWVsZHMiOiB0cnVlLAogICAgImxpYiI6IFsiRVMyMDIwIiwgIkRPTSIsICJET00uSXRlcmFibGUiXSwKICAgICJtb2R1bGUiOiAiRVNOZXh0IiwKICAgICJza2lwTGliQ2hlY2siOiB0cnVlLAoKICAgIC8qIEJ1bmRsZXIgbW9kZSAqLwogICAgIm1vZHVsZVJlc29sdXRpb24iOiAiYnVuZGxlciIsCiAgICAiYWxsb3dJbXBvcnRpbmdUc0V4dGVuc2lvbnMiOiB0cnVlLAogICAgInJlc29sdmVKc29uTW9kdWxlIjogdHJ1ZSwKICAgICJpc29sYXRlZE1vZHVsZXMiOiB0cnVlLAogICAgIm5vRW1pdCI6IHRydWUsCiAgICAianN4IjogInJlYWN0LWpzeCIsCgogICAgLyogTGludGluZyAqLwogICAgInN0cmljdCI6IHRydWUsCiAgICAibm9VbnVzZWRMb2NhbHMiOiB0cnVlLAogICAgIm5vVW51c2VkUGFyYW1ldGVycyI6IHRydWUsCiAgICAibm9GYWxsdGhyb3VnaENhc2VzSW5Td2l0Y2giOiB0cnVlCiAgfSwKICAiaW5jbHVkZSI6IFsic3JjIl0sCiAgInJlZmVyZW5jZXMiOiBbeyAicGF0aCI6ICIuL3RzY29uZmlnLm5vZGUuanNvbiIgfV0KfQo="
|
|
213
|
+
}], ["tsconfig.node.json", {
|
|
214
|
+
"type": "base64",
|
|
215
|
+
"body": "ewogICJjb21waWxlck9wdGlvbnMiOiB7CiAgICAiY29tcG9zaXRlIjogdHJ1ZSwKICAgICJza2lwTGliQ2hlY2siOiB0cnVlLAogICAgIm1vZHVsZSI6ICJFU05leHQiLAogICAgIm1vZHVsZVJlc29sdXRpb24iOiAiYnVuZGxlciIsCiAgICAiYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0cyI6IHRydWUKICB9LAogICJpbmNsdWRlIjogWyJ2aXRlLmNvbmZpZy50cyJdCn0K"
|
|
216
|
+
}], ["vite.config.ts.hbs", {
|
|
217
|
+
type: "raw",
|
|
218
|
+
body: `import foundryWidgetPlugin from "@osdk/widget.vite-plugin.unstable";
|
|
219
|
+
import react from "@vitejs/plugin-react";
|
|
220
|
+
import { defineConfig } from "vite";
|
|
221
|
+
|
|
222
|
+
// https://vitejs.dev/config/
|
|
223
|
+
export default defineConfig({
|
|
224
|
+
plugins: [react(), foundryWidgetPlugin()],
|
|
225
|
+
server: {
|
|
226
|
+
port: 8080,
|
|
227
|
+
cors: true,
|
|
228
|
+
},
|
|
229
|
+
build: {
|
|
230
|
+
rollupOptions: {
|
|
231
|
+
input: ["./index.html"],
|
|
232
|
+
},
|
|
233
|
+
},
|
|
234
|
+
});
|
|
235
|
+
`
|
|
236
|
+
}]]);
|
|
237
|
+
|
|
238
|
+
export { files };
|
|
239
|
+
//# sourceMappingURL=esm-ENH745KN.js.map
|
|
240
|
+
//# sourceMappingURL=esm-ENH745KN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../create-widget.template.minimal-react.v2/build/esm/generatedNoCheck/index.js"],"names":[],"mappings":"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","file":"esm-ENH745KN.js","sourcesContent":["export const files = new Map([[\"README.md.hbs\", {\n type: \"raw\",\n body: `# {{project}}\n\nThis project was generated with [\\`@osdk/create-widget\\`](https://www.npmjs.com/package/@osdk/create-widget) and demonstrates developing custom widgets to be embedded within Foundry UIs such as Workshop. It uses React on top of Vite. Check out the [Vite](https://vitejs.dev/guide/) docs for further configuration. The Vite plugin [\\`@osdk/widget.vite-plugin.unstable\\`](https://www.npmjs.com/package/@osdk/widget.vite-plugin.unstable) automatically generates a \\`widgets.config.json\\` manifest file containing metadata about widgets inside this project during the build command.\n\n## Developing\n\nRun the following command or equivalent with your preferred package manager to start a local development server and follow the instructions printed to set up developer mode in Foundry:\n\n\\`\\`\\`sh\nnpm run dev\n\\`\\`\\`\n\n\n## Deploying\n\nA \\`foundry.config.json\\` file is included in the root of this project containing the deployment configuration to Foundry.\n\nRun the following command or equivalent with your preferred package manager to create a production build of your widgets:\n\n\\`\\`\\`sh\nnpm run build\n\\`\\`\\`\n\nA \\`.palantir/widgets.config.json\\` manifest file containing metadata about your widgets is created during the build.\n\nRun the following command or equivalent with your preferred package manager to deploy the production build of your widgets:\n\n\\`\\`\\`sh\nnpx @osdk/cli@beta unstable widgetset deploy\n\\`\\`\\`\n\nBy default the \\`package-json\\` strategy is used for determining the version for your widgets from the \\`version\\` field in this project's \\`package.json\\` file. Remember to update this field and rerun the build command to update the manifest file when deploying a new version.\n\nIf you prefer to infer the version from a git tag, you can use the \\`git-describe\\` strategy by setting the \\`autoVersion\\` field in the \\`foundry.config.json\\` file to:\n\n\\`\\`\\`json\n{\n \"type\": \"git-describe\",\n \"tagPrefix\": \"\"\n}\n\\`\\`\\`\n`\n}], [\".gitignore\", {\n type: \"raw\",\n body: `# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndist-ssr\n*.local\n\n# Editor directories and files\n.vscode/*\n!.vscode/extensions.json\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n`\n}], [\"eslint.config.mjs\", {\n \"type\": \"base64\",\n \"body\": \"Ly8gQHRzLWNoZWNrCmltcG9ydCBlc2xpbnQgZnJvbSAiQGVzbGludC9qcyI7CmltcG9ydCB0c1BhcnNlciBmcm9tICJAdHlwZXNjcmlwdC1lc2xpbnQvcGFyc2VyIjsKaW1wb3J0ICogYXMgaW1wb3J0UGx1Z2luIGZyb20gImVzbGludC1wbHVnaW4taW1wb3J0IjsKaW1wb3J0IGpzeEExMXlQbHVnaW4gZnJvbSAiZXNsaW50LXBsdWdpbi1qc3gtYTExeSI7CmltcG9ydCByZWFjdFBsdWdpbiBmcm9tICJlc2xpbnQtcGx1Z2luLXJlYWN0IjsKaW1wb3J0IHJlYWN0SG9va3NQbHVnaW4gZnJvbSAiZXNsaW50LXBsdWdpbi1yZWFjdC1ob29rcyI7CmltcG9ydCByZWFjdFJlZnJlc2ggZnJvbSAiZXNsaW50LXBsdWdpbi1yZWFjdC1yZWZyZXNoIjsKaW1wb3J0IGdsb2JhbHMgZnJvbSAiZ2xvYmFscyI7CmltcG9ydCB0c2VzbGludCBmcm9tICJ0eXBlc2NyaXB0LWVzbGludCI7CgpleHBvcnQgZGVmYXVsdCB0c2VzbGludC5jb25maWcoewogIGZpbGVzOiBbImVzbGludC5jb25maWcubWpzIiwgInNyYy8qKi8qLntqcyxtanMsY2pzLHRzLGpzeCx0c3h9Il0sCiAgc2V0dGluZ3M6IHsKICAgIHJlYWN0OiB7CiAgICAgIHZlcnNpb246ICJkZXRlY3QiLAogICAgfSwKCiAgICAiaW1wb3J0L3Jlc29sdmVyIjogewogICAgICBub2RlOiB7CiAgICAgICAgZXh0ZW5zaW9uczogWyIuanMiLCAiLmpzeCIsICIudHMiLCAiLnRzeCJdLAogICAgICB9LAogICAgfSwKICB9LAogIGxhbmd1YWdlT3B0aW9uczogewogICAgZ2xvYmFsczogewogICAgICAuLi5nbG9iYWxzLmJyb3dzZXIsCiAgICB9LAoKICAgIHBhcnNlcjogdHNQYXJzZXIsCiAgfSwKICBleHRlbmRzOiBbCiAgICBlc2xpbnQuY29uZmlncy5yZWNvbW1lbmRlZCwKICAgIC4uLnRzZXNsaW50LmNvbmZpZ3MucmVjb21tZW5kZWQsCiAgXSwKICBwbHVnaW5zOiB7CiAgICAicmVhY3QiOiAvKiogQHR5cGUgaW1wb3J0KCJlc2xpbnQiKS5FU0xpbnQuUGx1Z2luICovIChyZWFjdFBsdWdpbiksCiAgICAicmVhY3QtcmVmcmVzaCI6IHJlYWN0UmVmcmVzaCwKICAgICJyZWFjdC1ob29rcyI6CiAgICAgIC8qKiBAdHlwZSBpbXBvcnQoImVzbGludCIpLkVTTGludC5QbHVnaW4gKi8gKHJlYWN0SG9va3NQbHVnaW4pLAogICAgImpzeC1hMTF5IjoganN4QTExeVBsdWdpbiwKICAgICJpbXBvcnQiOiBpbXBvcnRQbHVnaW4sCiAgfSwKICBydWxlczogewogICAgLi4uKAogICAgICAvKiogQHR5cGUgaW1wb3J0KCJlc2xpbnQiKS5MaW50ZXIuUnVsZXNSZWNvcmQgKi8KICAgICAgKHJlYWN0UGx1Z2luLmNvbmZpZ3MuZmxhdD8ucmVjb21tZW5kZWQucnVsZXMpCiAgICApLAogICAgInJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzIjogImVycm9yIiwKICAgICJyZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHMiOiAid2FybiIsCiAgICAuLi5qc3hBMTF5UGx1Z2luLmNvbmZpZ3MucmVjb21tZW5kZWQucnVsZXMsCiAgICAicmVhY3QtcmVmcmVzaC9vbmx5LWV4cG9ydC1jb21wb25lbnRzIjogWyJ3YXJuIiwgewogICAgICBhbGxvd0NvbnN0YW50RXhwb3J0OiB0cnVlLAogICAgfV0sCgogICAgImltcG9ydC9uYW1lZCI6ICJlcnJvciIsCiAgICAiaW1wb3J0L2RlZmF1bHQiOiAiZXJyb3IiLAogICAgImltcG9ydC9uYW1lc3BhY2UiOiAiZXJyb3IiLAogICAgImltcG9ydC9uby1kdXBsaWNhdGVzIjogImVycm9yIiwKICAgICJpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMiOiAiZXJyb3IiLAoKICAgICJyZWFjdC9yZWFjdC1pbi1qc3gtc2NvcGUiOiAib2ZmIiwKICB9LAp9KTsK\"\n}], [\"index.html\", {\n type: \"raw\",\n body: `<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>Minimal React Custom Widget</title>\n </head>\n <body>\n <script type=\"module\" src=\"/src/main.tsx\"></script>\n </body>\n</html>\n`\n}], [\"package.json.hbs\", {\n type: \"raw\",\n body: `{\n \"name\": \"{{project}}\",\n \"private\": true,\n \"version\": \"0.0.0\",\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"vite\",\n \"build\": \"tsc && vite build\",\n \"lint\": \"eslint . --report-unused-disable-directives --max-warnings 0\",\n \"test\": \"vitest run --passWithNoTests\",\n \"preview\": \"vite preview\"\n },\n \"dependencies\": {\n \"@osdk/widget.client-react.unstable\": \"^1.1.0\",\n \"@osdk/widget.client.unstable\": \"^1.1.0\",\n \"@blueprintjs/core\": \"^5.16.0\",\n \"react\": \"^18\",\n \"react-dom\": \"^18\",\n \"react-router-dom\": \"^6.23.1\"\n },\n \"devDependencies\": {\n \"@osdk/widget.vite-plugin.unstable\": \"^1.1.0\",\n \"@eslint/compat\": \"^1.2.1\",\n \"@eslint/js\": \"^9.13.0\",\n \"@types/react\": \"^18\",\n \"@types/react-dom\": \"^18\",\n \"@typescript-eslint/eslint-plugin\": \"^8.21.0\",\n \"@typescript-eslint/parser\": \"^8.21.0\",\n \"@vitejs/plugin-react\": \"^4.2.0\",\n \"eslint\": \"^9.19.0\",\n \"eslint-plugin-import\": \"^2.31.0\",\n \"eslint-plugin-jsx-a11y\": \"^6.10.1\",\n \"eslint-plugin-react\": \"^7.37.2\",\n \"eslint-plugin-react-hooks\": \"^5.0.0\",\n \"eslint-plugin-react-refresh\": \"^0.4.14\",\n \"globals\": \"^15.11.0\",\n \"typescript\": \"~5.5.4\",\n \"typescript-eslint\": \"^8.21.0\",\n \"vite\": \"^6.0.11\",\n \"vitest\": \"^3.0.5\"\n }\n}`\n}], [\"src/Widget.module.css\", {\n \"type\": \"base64\",\n \"body\": \"LmNvbnRhaW5lciB7CiAgICBwYWRkaW5nOiAxNXB4OwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBoZWlnaHQ6IDEwMCU7Cn0KCi5jYXJkIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMTBweDsKICAgIHdpZHRoOiAxNTBweDsKfQ==\"\n}], [\"src/Widget.tsx\", {\n type: \"raw\",\n body: `import { Button, Card, H4 } from \"@blueprintjs/core\";\nimport {\n type FoundryWidgetClientContext,\n useFoundryWidgetContext,\n} from \"@osdk/widget.client-react.unstable\";\nimport React, { useCallback, useEffect } from \"react\";\nimport type MainConfig from \"./main.config.js\";\nimport css from \"./Widget.module.css\";\n\nconst useWidgetContext: () => FoundryWidgetClientContext<typeof MainConfig> =\n useFoundryWidgetContext.withTypes<typeof MainConfig>();\n\nexport const Widget: React.FC = () => {\n const { parameters, emitEvent } = useWidgetContext();\n const greetingName = parameters.values.greetingName ?? \"World\";\n const counterValue = parameters.values.counterValue ?? 0;\n\n const setCounterValue = useCallback(\n (value: number) =>\n emitEvent(\"setCounterValue\", {\n parameterUpdates: { counterValue: value },\n }),\n [emitEvent],\n );\n\n const handleResetCounter = useCallback(() => setCounterValue(0), [\n setCounterValue,\n ]);\n\n useEffect(() => {\n const interval = setInterval(() => setCounterValue(counterValue + 1), 1000);\n return () => clearInterval(interval);\n }, [setCounterValue, counterValue]);\n\n return (\n <div className={css.container}>\n <H4>Hello, {greetingName}!</H4>\n <Card className={css.card} compact={true}>\n <div>Count: {counterValue}</div>\n <Button onClick={handleResetCounter}>Reset</Button>\n </Card>\n </div>\n );\n};\n`\n}], [\"src/main.config.ts\", {\n \"type\": \"base64\",\n \"body\": \"aW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSAiQG9zZGsvd2lkZ2V0LmNsaWVudC51bnN0YWJsZSI7CgpleHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoewogIGlkOiAid2lkZ2V0SWQiLAogIG5hbWU6ICJDdXN0b20gV2lkZ2V0IiwKICBkZXNjcmlwdGlvbjogIkFuIGV4YW1wbGUgY3VzdG9tIHdpZGdldCBpbXBsZW1lbnRhdGlvbiIsCiAgdHlwZTogIndvcmtzaG9wIiwKICBwYXJhbWV0ZXJzOiB7CiAgICBncmVldGluZ05hbWU6IHsKICAgICAgZGlzcGxheU5hbWU6ICJHcmVldGluZyBuYW1lIiwKICAgICAgdHlwZTogInN0cmluZyIsCiAgICB9LAogICAgY291bnRlclZhbHVlOiB7CiAgICAgIGRpc3BsYXlOYW1lOiAiQ291bnRlciB2YWx1ZSIsCiAgICAgIHR5cGU6ICJudW1iZXIiLAogICAgfSwKICB9LAogIGV2ZW50czogewogICAgc2V0Q291bnRlclZhbHVlOiB7CiAgICAgIGRpc3BsYXlOYW1lOiAiU2V0IGNvdW50ZXIgdmFsdWUiLAogICAgICBwYXJhbWV0ZXJVcGRhdGVJZHM6IFsiY291bnRlclZhbHVlIl0sCiAgICB9LAogIH0sCn0pOwo=\"\n}], [\"src/main.css\", {\n \"type\": \"base64\",\n \"body\": \"aHRtbCwgYm9keSB7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBtYXJnaW46IDA7Cn0=\"\n}], [\"src/main.tsx\", {\n type: \"raw\",\n body: `import \"@blueprintjs/core/lib/css/blueprint.css\";\n\nimport { FoundryWidget } from \"@osdk/widget.client-react.unstable\";\nimport { createRoot } from \"react-dom/client\";\nimport MainConfig from \"./main.config.js\";\nimport { Widget } from \"./Widget.js\";\n\nconst root = document.querySelector(\"body\")!;\n\ncreateRoot(root).render(\n <FoundryWidget config={MainConfig}>\n <Widget />\n </FoundryWidget>,\n);\n`\n}], [\"src/vite-env.d.ts\", {\n \"type\": \"base64\",\n \"body\": \"Ly8vIDxyZWZlcmVuY2UgdHlwZXM9InZpdGUvY2xpZW50IiAvPgo=\"\n}], [\"tsconfig.json\", {\n \"type\": \"base64\",\n \"body\": \"ewogICJjb21waWxlck9wdGlvbnMiOiB7CiAgICAidGFyZ2V0IjogIkVTMjAyMCIsCiAgICAidXNlRGVmaW5lRm9yQ2xhc3NGaWVsZHMiOiB0cnVlLAogICAgImxpYiI6IFsiRVMyMDIwIiwgIkRPTSIsICJET00uSXRlcmFibGUiXSwKICAgICJtb2R1bGUiOiAiRVNOZXh0IiwKICAgICJza2lwTGliQ2hlY2siOiB0cnVlLAoKICAgIC8qIEJ1bmRsZXIgbW9kZSAqLwogICAgIm1vZHVsZVJlc29sdXRpb24iOiAiYnVuZGxlciIsCiAgICAiYWxsb3dJbXBvcnRpbmdUc0V4dGVuc2lvbnMiOiB0cnVlLAogICAgInJlc29sdmVKc29uTW9kdWxlIjogdHJ1ZSwKICAgICJpc29sYXRlZE1vZHVsZXMiOiB0cnVlLAogICAgIm5vRW1pdCI6IHRydWUsCiAgICAianN4IjogInJlYWN0LWpzeCIsCgogICAgLyogTGludGluZyAqLwogICAgInN0cmljdCI6IHRydWUsCiAgICAibm9VbnVzZWRMb2NhbHMiOiB0cnVlLAogICAgIm5vVW51c2VkUGFyYW1ldGVycyI6IHRydWUsCiAgICAibm9GYWxsdGhyb3VnaENhc2VzSW5Td2l0Y2giOiB0cnVlCiAgfSwKICAiaW5jbHVkZSI6IFsic3JjIl0sCiAgInJlZmVyZW5jZXMiOiBbeyAicGF0aCI6ICIuL3RzY29uZmlnLm5vZGUuanNvbiIgfV0KfQo=\"\n}], [\"tsconfig.node.json\", {\n \"type\": \"base64\",\n \"body\": \"ewogICJjb21waWxlck9wdGlvbnMiOiB7CiAgICAiY29tcG9zaXRlIjogdHJ1ZSwKICAgICJza2lwTGliQ2hlY2siOiB0cnVlLAogICAgIm1vZHVsZSI6ICJFU05leHQiLAogICAgIm1vZHVsZVJlc29sdXRpb24iOiAiYnVuZGxlciIsCiAgICAiYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0cyI6IHRydWUKICB9LAogICJpbmNsdWRlIjogWyJ2aXRlLmNvbmZpZy50cyJdCn0K\"\n}], [\"vite.config.ts.hbs\", {\n type: \"raw\",\n body: `import foundryWidgetPlugin from \"@osdk/widget.vite-plugin.unstable\";\nimport react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n plugins: [react(), foundryWidgetPlugin()],\n server: {\n port: 8080,\n cors: true,\n },\n build: {\n rollupOptions: {\n input: [\"./index.html\"],\n },\n },\n});\n`\n}]]);"]}
|