Skip to content

Commit 0a0f5bb

Browse files
committed
feat: convert dgrid-shim to self extracting resources
similar to what we do for wasm files Signed-off-by: Gordon Smith <GordonJSmith@gmail.com>
1 parent 0c1e3df commit 0a0f5bb

25 files changed

Lines changed: 179 additions & 120 deletions

packages/composite/index-preview.html

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
margin-top: 20px;
2424
}
2525
</style>
26-
<script src="https://cdn.jsdelivr.net/npm/@hpcc-js/dgrid-shim/dist/index.min.js"></script>
2726
<script type="importmap">
2827
{
2928
"imports": {
@@ -84,7 +83,11 @@ <h1>ESM Quick Test</h1>
8483

8584
setTimeout(() => {
8685
window.__widget.chartType("PIE").render();
87-
}, 3000);
86+
}, 1000);
87+
88+
setTimeout(() => {
89+
window.__widget.chartType("TABLE").render();
90+
}, 2000);
8891
</script>
8992
<script>
9093
function doResize() {

packages/composite/index.html

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
margin-top: 20px;
2525
}
2626
</style>
27-
<script src="https://cdn.jsdelivr.net/npm/@hpcc-js/dgrid-shim/dist/index.min.js"></script>
2827
</head>
2928

3029
<body onresize="doResize()">
@@ -67,7 +66,11 @@ <h1>ESM Quick Test</h1>
6766

6867
setTimeout(() => {
6968
window.__widget.chartType("PIE").render();
70-
}, 3000);
69+
}, 1000);
70+
71+
setTimeout(() => {
72+
window.__widget.chartType("TABLE").render();
73+
}, 2000);
7174
</script>
7275
<script>
7376
function doResize() {

packages/composite/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,4 @@
6565
"url": "https://github.com/hpcc-systems/Visualization/issues"
6666
},
6767
"homepage": "https://github.com/hpcc-systems/Visualization"
68-
}
68+
}

packages/composite/tests/composite.browser.spec.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { Class, HTMLWidget, SVGWidget } from "@hpcc-js/common";
22
import { describe, it, expect } from "vitest";
33
import { classDef, data, render } from "../../common/tests/index.ts";
4-
import { load_dgrid_shim } from "../../dgrid/tests/index.ts";
54

65
const urlSearch: string = "";
76
const simple = {
@@ -28,12 +27,6 @@ const simple = {
2827
}
2928
};
3029
describe("@hpcc-js/composite", async () => {
31-
await load_dgrid_shim();
32-
33-
it("Shim Loaded", () => {
34-
expect(globalThis["@hpcc-js/dgrid-shim"]).to.exist;
35-
});
36-
3730
const composite = await import("@hpcc-js/composite");
3831
const { MultiChart, Dermatology, MegaChart, MultiChartPanel } = composite;
3932
for (const key in composite) {

packages/dgrid/index-preview.html

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
}
2525
</style>
2626

27-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@hpcc-js/dgrid-shim@2.26.0/dist/index.min.js"></script>
2827
<script type="importmap">
2928
{
3029
"imports": {
@@ -45,31 +44,16 @@ <h1>ESM Quick Test</h1>
4544
<script type="module">
4645
import { Table } from "@hpcc-js/dgrid";
4746

48-
const simple = {
49-
ND: {
50-
columns: ["Subject", "Year 1", "Year 2", "Year 3", "Year 4"],
51-
data: [
52-
["English", 5, 43, 41, 92],
53-
["English II", 17, 43, 83, 93],
54-
["English III", 6, 43, 64, 93],
55-
["Geography", 7, 45, 52, 83],
56-
["Geography II", 16, 73, 52, 83],
57-
["Geography III", 26, 83, 11, 72],
58-
["Science", 66, 60, 85, 6],
59-
["Science II", 46, 20, 53, 7],
60-
["Science III", 46, 20, 38, 7],
61-
["Math", 98, 30, 23, 13],
62-
["Math II", 76, 30, 34, 6],
63-
["Math III", 80, 30, 27, 8]
64-
]
65-
}
66-
};
67-
6847
window.__table = new Table()
6948
.target("placeholder")
70-
.columns(simple.ND.columns)
71-
.data(simple.ND.data)
72-
.multiSelect(true)
49+
.columns(["Mother", "Father", { label: "Children", columns: ["Name", "sex", "age"] }, { label: "Pets", columns: ["Name", "type"] }])
50+
.data([
51+
["<b>Jane</b>", "John", [["Mary", "f", 4], ["Bob", "m", 6], ["Tim", "m", 1]], [["Spot", "dog"], ["Smelly", "cat"], ["Goldie", "Fish"], ["Hammy", "Hamster"]]],
52+
["Penelope", "Alex", [["Bill", "m", 1]], []],
53+
["Jill", "Marcus", [], [["Flappy", "parrot"], ["Stinky", "cat"], ["Rolf", "dog"]]],
54+
["Susan", "Robert", [["Jack", "m", 4], ["Alice", "f", 6]], []]
55+
])
56+
.pagination(true)
7357
.render()
7458
;
7559
</script>

packages/dgrid/index.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
}
2525
</style>
2626

27-
<script type="text/javascript" src="../dgrid-shim/dist/index.js"></script>
2827
</head>
2928

3029
<body onresize="doResize()">

packages/dgrid/src/dgrid-shim.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
import * as dgrid_shim from "@hpcc-js/dgrid-shim";
22

3+
// Note: Resolved at build time and inlined into the dgrid bundle.
4+
// @ts-ignore
5+
import dgridShimBundle from "@hpcc-js/dgrid-shim/dist/index.js?raw";
6+
7+
if (!globalThis["@hpcc-js/dgrid-shim"]) {
8+
(0, eval)(`var self = globalThis; var window = globalThis;\n${dgridShimBundle}`);
9+
}
10+
311
if (!globalThis["@hpcc-js/dgrid-shim"]) {
4-
console.error("dgrid-shim not loaded, please add `<script src=\"https://cdn.jsdelivr.net/npm/@hpcc-js/dgrid-shim/dist/index.min.js\"></script>` or similar to your HTML file");
12+
console.error("dgrid-shim failed to load from inlined bundle");
513
}
614

715
export const Deferred = globalThis["@hpcc-js/dgrid-shim"].Deferred as typeof dgrid_shim.Deferred;

packages/dgrid/tests/dgrid.browser.spec.ts

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Class, HTMLWidget, SVGWidget } from "@hpcc-js/common";
2+
import * as dgridMod from "@hpcc-js/dgrid";
23
import { describe, it, expect } from "vitest";
34
import { classDef, renderMedium } from "../../common/tests/index.ts";
4-
import { load_dgrid_shim } from "./index.ts";
55

66
const simple = {
77
ND: {
@@ -24,20 +24,8 @@ const simple = {
2424
};
2525

2626
describe("@hpcc-js/dgrid", async () => {
27-
await load_dgrid_shim();
28-
29-
it("Shim Loaded", () => {
30-
expect(globalThis["@hpcc-js/dgrid-shim"]).to.exist;
31-
});
32-
33-
const dgridMod = await import("@hpcc-js/dgrid");
34-
35-
it("dgridMod Loaded", () => {
36-
expect(dgridMod).to.exist;
37-
});
38-
3927
for (const key in dgridMod) {
40-
const item = dgridMod[key];
28+
const item = (dgridMod as any)[key];
4129
if (item?.prototype?.constructor?.name) {
4230
describe(`${item.prototype?.constructor?.name}`, () => {
4331
it("Simple", () => {

packages/dgrid/tests/index.ts

Lines changed: 0 additions & 12 deletions
This file was deleted.

packages/dgrid/vite.config.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,23 @@
11
import { resolve } from "node:path";
2-
import { createHpccViteConfig, browserConfig } from "@hpcc-js/esbuild-plugins";
2+
import { createHpccViteConfig, browserConfig, hpccBundleNames } from "@hpcc-js/esbuild-plugins";
33
import pkg from "./package.json" with { type: "json" };
44

55
const myBrowserConfig = { ...browserConfig };
66
myBrowserConfig.test!.include = ["./dgrid/tests/*.spec.ts"];
77

8+
const { external } = hpccBundleNames(pkg);
9+
const dgridExternals = external.filter(dep => dep !== "@hpcc-js/dgrid-shim");
10+
811
export default createHpccViteConfig(pkg, {
912
configOverrides: {
1013
root: resolve(__dirname, ".."),
1114
build: {
1215
outDir: resolve(__dirname, "dist"),
1316
lib: {
1417
entry: resolve(__dirname, "src/index.ts"),
18+
},
19+
rollupOptions: {
20+
external: dgridExternals
1521
}
1622
},
1723
test: {

0 commit comments

Comments
 (0)