@abcnews/components-builder 0.0.1
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/README.md +134 -0
- package/dist/BuilderStyleRoot/BuilderStyleRoot.svelte +175 -0
- package/dist/BuilderStyleRoot/BuilderStyleRoot.svelte.d.ts +5 -0
- package/dist/ContextMenu/ContextMenu.stories.svelte +66 -0
- package/dist/ContextMenu/ContextMenu.stories.svelte.d.ts +27 -0
- package/dist/ContextMenu/ContextMenu.svelte +111 -0
- package/dist/ContextMenu/ContextMenu.svelte.d.ts +7 -0
- package/dist/GoogleDocScrollyteller/GoogleDocScrollyteller.stories.svelte +24 -0
- package/dist/GoogleDocScrollyteller/GoogleDocScrollyteller.stories.svelte.d.ts +27 -0
- package/dist/GoogleDocScrollyteller/GoogleDocScrollyteller.svelte +211 -0
- package/dist/GoogleDocScrollyteller/GoogleDocScrollyteller.svelte.d.ts +9 -0
- package/dist/GoogleDocScrollyteller/utils.d.ts +23 -0
- package/dist/GoogleDocScrollyteller/utils.js +94 -0
- package/dist/Modal/Modal.stories.svelte +32 -0
- package/dist/Modal/Modal.stories.svelte.d.ts +27 -0
- package/dist/Modal/Modal.svelte +116 -0
- package/dist/Modal/Modal.svelte.d.ts +8 -0
- package/dist/ScreenshotTool/ScreenshotTool.stories.svelte +26 -0
- package/dist/ScreenshotTool/ScreenshotTool.stories.svelte.d.ts +27 -0
- package/dist/ScreenshotTool/ScreenshotTool.svelte +292 -0
- package/dist/ScreenshotTool/ScreenshotTool.svelte.d.ts +17 -0
- package/dist/Typeahead/Typeahead.stories.svelte +26 -0
- package/dist/Typeahead/Typeahead.stories.svelte.d.ts +27 -0
- package/dist/Typeahead/Typeahead.svelte +177 -0
- package/dist/Typeahead/Typeahead.svelte.d.ts +12 -0
- package/dist/UpdateChecker/UpdateChecker.stories.svelte +27 -0
- package/dist/UpdateChecker/UpdateChecker.stories.svelte.d.ts +27 -0
- package/dist/UpdateChecker/UpdateChecker.svelte +127 -0
- package/dist/UpdateChecker/UpdateChecker.svelte.d.ts +11 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -0
- package/package.json +71 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import Modal from "../Modal/Modal.svelte";
|
|
3
|
+
import { onMount } from "svelte";
|
|
4
|
+
|
|
5
|
+
type NewVersion = {
|
|
6
|
+
newVersion: string;
|
|
7
|
+
thisVersion: string;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
let {
|
|
11
|
+
overrideNewVersion,
|
|
12
|
+
buttonText = "Open new builder",
|
|
13
|
+
}: { overrideNewVersion: NewVersion; buttonText: string } = $props();
|
|
14
|
+
|
|
15
|
+
let newVersion = $state<NewVersion>(overrideNewVersion);
|
|
16
|
+
let isOpen = $state(!!newVersion);
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Check for a new version of the given project
|
|
20
|
+
* @param {string} projectName - Project name (e.g. 'globey')
|
|
21
|
+
* @param {string} startingAt - Version to start checking at (e.g. '1.0.0')
|
|
22
|
+
*/
|
|
23
|
+
async function newVersionCheck(projectName = "", startingAt = "") {
|
|
24
|
+
console.log("checking for new version of", projectName, { startingAt });
|
|
25
|
+
const baseUrl = `https://www.abc.net.au/res/sites/news-projects/${projectName}/`;
|
|
26
|
+
let newVersion;
|
|
27
|
+
let latestVersion = startingAt;
|
|
28
|
+
let i = 0;
|
|
29
|
+
do {
|
|
30
|
+
if (i++ > 30) {
|
|
31
|
+
// just in case something messes up
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
const [major, minor, patch] = latestVersion.split(".");
|
|
35
|
+
const nextVersions = [
|
|
36
|
+
[1 + Number(major), 0, 0],
|
|
37
|
+
[major, 1 + Number(minor), 0],
|
|
38
|
+
[major, minor, 1 + Number(patch)],
|
|
39
|
+
].map((version) => version.join("."));
|
|
40
|
+
const newVersions = await Promise.all(
|
|
41
|
+
nextVersions.map((version) => {
|
|
42
|
+
const url = `${baseUrl}${version}/index.html`;
|
|
43
|
+
console.info("checking new version at", url);
|
|
44
|
+
return fetch(url, { cache: "no-store" })
|
|
45
|
+
.then((response) => (response.status !== 200 ? false : version))
|
|
46
|
+
.catch(() => false);
|
|
47
|
+
}),
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
// @ts-ignore - there is no way for latestVersion to be `true`, only truthy.
|
|
51
|
+
latestVersion = newVersions.find(Boolean) || "";
|
|
52
|
+
if (latestVersion) {
|
|
53
|
+
newVersion = latestVersion;
|
|
54
|
+
}
|
|
55
|
+
} while (latestVersion);
|
|
56
|
+
|
|
57
|
+
return {
|
|
58
|
+
thisVersion: startingAt,
|
|
59
|
+
newVersion,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
async function check() {
|
|
64
|
+
if (newVersion?.newVersion) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const [projectName, thisVersion] =
|
|
68
|
+
window.location.pathname
|
|
69
|
+
.match(/\/news-projects\/([^/]+)\/(\d+\.\d+\.\d+)/)
|
|
70
|
+
?.slice(1) || [];
|
|
71
|
+
if (!thisVersion) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const result = await newVersionCheck(projectName, thisVersion);
|
|
75
|
+
|
|
76
|
+
if (result.newVersion) {
|
|
77
|
+
newVersion = { ...result, newVersion: String(result.newVersion) };
|
|
78
|
+
isOpen = true;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
onMount(() => {
|
|
83
|
+
check();
|
|
84
|
+
window.addEventListener("focus", check);
|
|
85
|
+
const timeout = setInterval(check, 1000 * 60 * 10);
|
|
86
|
+
return () => {
|
|
87
|
+
window.removeEventListener("focus", check);
|
|
88
|
+
clearInterval(timeout);
|
|
89
|
+
};
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
function onClick() {
|
|
93
|
+
// @ts-ignore
|
|
94
|
+
window.location = String(Window.location).replace(
|
|
95
|
+
`/${newVersion?.thisVersion}/`,
|
|
96
|
+
`/${newVersion?.newVersion}/`,
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function onClose() {
|
|
101
|
+
isOpen = false;
|
|
102
|
+
}
|
|
103
|
+
</script>
|
|
104
|
+
|
|
105
|
+
{#snippet Buttons()}
|
|
106
|
+
<button onclick={onClick}>{buttonText}</button>
|
|
107
|
+
{/snippet}
|
|
108
|
+
|
|
109
|
+
{#if isOpen && newVersion?.newVersion}
|
|
110
|
+
<Modal title="New version available" {onClose} footerChildren={Buttons}>
|
|
111
|
+
<p>
|
|
112
|
+
You are using <code>{newVersion.thisVersion}</code> but
|
|
113
|
+
<code>{newVersion.newVersion}</code> is available.
|
|
114
|
+
</p>
|
|
115
|
+
|
|
116
|
+
<p>
|
|
117
|
+
Your current state will be brought across to the new version, and you can
|
|
118
|
+
always click back to return to this page.
|
|
119
|
+
</p>
|
|
120
|
+
</Modal>
|
|
121
|
+
{/if}
|
|
122
|
+
|
|
123
|
+
<style>
|
|
124
|
+
p {
|
|
125
|
+
max-width: 32em;
|
|
126
|
+
}
|
|
127
|
+
</style>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type NewVersion = {
|
|
2
|
+
newVersion: string;
|
|
3
|
+
thisVersion: string;
|
|
4
|
+
};
|
|
5
|
+
type $$ComponentProps = {
|
|
6
|
+
overrideNewVersion: NewVersion;
|
|
7
|
+
buttonText: string;
|
|
8
|
+
};
|
|
9
|
+
declare const UpdateChecker: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
10
|
+
type UpdateChecker = ReturnType<typeof UpdateChecker>;
|
|
11
|
+
export default UpdateChecker;
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/index.js
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@abcnews/components-builder",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"scripts": {
|
|
5
|
+
"dev": "vite dev",
|
|
6
|
+
"build": "vite build && npm run prepack",
|
|
7
|
+
"preview": "vite preview",
|
|
8
|
+
"prepare": "svelte-kit sync || echo ''",
|
|
9
|
+
"prepack": "svelte-kit sync && svelte-package && publint",
|
|
10
|
+
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
|
11
|
+
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
|
|
12
|
+
"format": "prettier --write .",
|
|
13
|
+
"lint": "prettier --check .",
|
|
14
|
+
"storybook": "storybook dev -p 6006 --ci",
|
|
15
|
+
"build-storybook": "storybook build"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"!dist/**/*.test.*",
|
|
20
|
+
"!dist/**/*.spec.*"
|
|
21
|
+
],
|
|
22
|
+
"sideEffects": [
|
|
23
|
+
"**/*.css"
|
|
24
|
+
],
|
|
25
|
+
"svelte": "./dist/index.js",
|
|
26
|
+
"types": "./dist/index.d.ts",
|
|
27
|
+
"type": "module",
|
|
28
|
+
"exports": {
|
|
29
|
+
".": {
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"svelte": "./dist/index.js"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"peerDependencies": {
|
|
35
|
+
"svelte": "^5.0.0"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@storybook/addon-essentials": "^8.6.12",
|
|
39
|
+
"@storybook/addon-interactions": "^8.6.12",
|
|
40
|
+
"@storybook/addon-svelte-csf": "^5.0.0-next.0",
|
|
41
|
+
"@storybook/blocks": "^8.6.12",
|
|
42
|
+
"@storybook/svelte": "^8.6.12",
|
|
43
|
+
"@storybook/sveltekit": "^8.6.12",
|
|
44
|
+
"@storybook/test": "^8.6.12",
|
|
45
|
+
"@sveltejs/adapter-auto": "^6.0.0",
|
|
46
|
+
"@sveltejs/kit": "^2.16.0",
|
|
47
|
+
"@sveltejs/package": "^2.0.0",
|
|
48
|
+
"@sveltejs/vite-plugin-svelte": "^5.0.0",
|
|
49
|
+
"@types/node": "^20",
|
|
50
|
+
"prettier": "^3.4.2",
|
|
51
|
+
"prettier-plugin-svelte": "^3.3.3",
|
|
52
|
+
"publint": "^0.3.2",
|
|
53
|
+
"storybook": "^8.6.12",
|
|
54
|
+
"svelte": "^5.0.0",
|
|
55
|
+
"svelte-check": "^4.0.0",
|
|
56
|
+
"typescript": "^5.0.0",
|
|
57
|
+
"vite": "^6.2.6"
|
|
58
|
+
},
|
|
59
|
+
"keywords": [
|
|
60
|
+
"svelte"
|
|
61
|
+
],
|
|
62
|
+
"dependencies": {
|
|
63
|
+
"@abcnews/alternating-case-to-object": "^3.2.0",
|
|
64
|
+
"@abcnews/svelte-scrollyteller": "github:abcnews/svelte-scrollyteller#feature/future-news",
|
|
65
|
+
"async": "^3.2.6",
|
|
66
|
+
"bootstrap-icons": "^1.11.3",
|
|
67
|
+
"file-saver": "^2.0.5",
|
|
68
|
+
"jszip": "^3.10.1",
|
|
69
|
+
"svelte-bootstrap-icons": "^3.1.2"
|
|
70
|
+
}
|
|
71
|
+
}
|