@prismicio/svelte 0.0.1 → 0.0.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.
package/CHANGELOG.md ADDED
@@ -0,0 +1,43 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
+
5
+ ### [0.0.2](https://github.com/prismicio/prismic-svelte/compare/v0.0.1...v0.0.2) (2022-05-13)
6
+
7
+
8
+ ### Chore
9
+
10
+ * fix release script ([074d4fb](https://github.com/prismicio/prismic-svelte/commit/074d4fbdd6e3a7fd49b2e7fbe6b8a6b7b315491f))
11
+ * fix release script ([026072a](https://github.com/prismicio/prismic-svelte/commit/026072ac3ff6fe08e161ac15c8776767af70f0d3))
12
+
13
+ ### 0.0.1 (2022-05-13)
14
+
15
+
16
+ ### Features
17
+
18
+ * Change PrismicProvider prop to only Command line to bootstrap prismic projects. ([e4675d4](https://github.com/prismicio/prismic-svelte/commit/e4675d48d4a2d9fe89c04aa4273948ef2a84d018))
19
+ * Finish creating components; Create Slices for route. ([5b18487](https://github.com/prismicio/prismic-svelte/commit/5b1848736dcf5d75e09556a57756017fc46847f4))
20
+ * Get htmlSerializer from context in PrismicRichText ([36664bc](https://github.com/prismicio/prismic-svelte/commit/36664bc72d7e9eb6cd353c96ae22ed209143a905))
21
+ * Handle missing url ([54b3a75](https://github.com/prismicio/prismic-svelte/commit/54b3a7529eda7b29542483a5b7b0ab33c2b22643))
22
+ * Improve mock data ([782a0f0](https://github.com/prismicio/prismic-svelte/commit/782a0f031c41aeefb2d14220146087fc164b6eae))
23
+ * Merge Lucie's and Sam's link components ([3ea6c7f](https://github.com/prismicio/prismic-svelte/commit/3ea6c7fdb48ad718a62f0cf70662fdb79e6e7d96))
24
+ * Rename to ([cc271cb](https://github.com/prismicio/prismic-svelte/commit/cc271cb285089f3bc6104b771711fe62fb3f5fea))
25
+ * revamp slicezone component ([65c55b8](https://github.com/prismicio/prismic-svelte/commit/65c55b84f7c7eea7e65470f6b5a101c7749d2cde))
26
+ * setup link component ([0545d48](https://github.com/prismicio/prismic-svelte/commit/0545d48fcb0413f40e917d1f4857996d5f402e69))
27
+ * setup prismic provider ([9b9752f](https://github.com/prismicio/prismic-svelte/commit/9b9752fce5f4754bc195e83f44a4bb081e203b95))
28
+ * Setup Prismicimage component ([0033cb5](https://github.com/prismicio/prismic-svelte/commit/0033cb515f2444a5f45040d28a27bf05ac7e0dd0))
29
+
30
+
31
+ ### Bug Fixes
32
+
33
+ * Add shx so commands work cross platform ([1731f64](https://github.com/prismicio/prismic-svelte/commit/1731f64fa9310fdb93cf15b250320e0939d73f8b))
34
+
35
+
36
+ ### Chore
37
+
38
+ * Add TODOs, rename plaintext component ([691aab7](https://github.com/prismicio/prismic-svelte/commit/691aab7bc9d47d2bdb47024e30ca90301813c85d))
39
+ * init project ([9afa15a](https://github.com/prismicio/prismic-svelte/commit/9afa15a8a4372de8eb5b16e087433d2a640a93a0))
40
+ * maintain repository ([e3ae492](https://github.com/prismicio/prismic-svelte/commit/e3ae492c0c03e121c8bddf03c96065485a448863))
41
+ * migrate to vitest ([bbae453](https://github.com/prismicio/prismic-svelte/commit/bbae45309262b845dde7149ffad938bcc8aabc66))
42
+ * setup todo components ([d57cf26](https://github.com/prismicio/prismic-svelte/commit/d57cf263f5294d9227a43bb9bb82e9e788dca09e))
43
+ * update template config ([93a1b59](https://github.com/prismicio/prismic-svelte/commit/93a1b5971cf796f6eb9433044defc67eccf56bd2))
@@ -0,0 +1,22 @@
1
+ <script>import { setContext } from "svelte";
2
+ import { prismicKey } from "./injectionSymbols";
3
+ import "./types";
4
+ // export let client: PrismicContext["client"] = undefined;
5
+ // export let linkResolver: PrismicContext["linkResolver"] = undefined;
6
+ // export let htmlSerializer: PrismicContext["htmlSerializer"] = undefined;
7
+ export let prismic = {
8
+ client: undefined,
9
+ linkResolver: undefined,
10
+ prismic: undefined,
11
+ htmlSerializer: undefined,
12
+ slices: undefined,
13
+ };
14
+ setContext(prismicKey, {
15
+ client: prismic.client,
16
+ linkResolver: prismic.linkResolver,
17
+ htmlSerializer: prismic.htmlSerializer,
18
+ slices: prismic.slices
19
+ });
20
+ </script>
21
+
22
+ <slot />
@@ -0,0 +1,24 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ prismic?: {
5
+ client: undefined;
6
+ linkResolver: undefined;
7
+ prismic: undefined;
8
+ htmlSerializer: undefined;
9
+ slices: undefined;
10
+ } | undefined;
11
+ };
12
+ events: {
13
+ [evt: string]: CustomEvent<any>;
14
+ };
15
+ slots: {
16
+ default: {};
17
+ };
18
+ };
19
+ export declare type PrismicProviderProps = typeof __propDef.props;
20
+ export declare type PrismicProviderEvents = typeof __propDef.events;
21
+ export declare type PrismicProviderSlots = typeof __propDef.slots;
22
+ export default class PrismicProvider extends SvelteComponentTyped<PrismicProviderProps, PrismicProviderEvents, PrismicProviderSlots> {
23
+ }
24
+ export {};
@@ -0,0 +1,6 @@
1
+ <!-- TODO: Why are embeds 200px wide? -->
2
+
3
+ <script>export let field;
4
+ </script>
5
+
6
+ {@html field.html}
@@ -0,0 +1,17 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ import type * as prismicT from "@prismicio/types";
3
+ declare const __propDef: {
4
+ props: {
5
+ field: prismicT.EmbedField;
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {};
11
+ };
12
+ export declare type PrismicEmbedProps = typeof __propDef.props;
13
+ export declare type PrismicEmbedEvents = typeof __propDef.events;
14
+ export declare type PrismicEmbedSlots = typeof __propDef.slots;
15
+ export default class PrismicEmbed extends SvelteComponentTyped<PrismicEmbedProps, PrismicEmbedEvents, PrismicEmbedSlots> {
16
+ }
17
+ export {};
@@ -0,0 +1,22 @@
1
+ <script>import "@prismicio/types";
2
+ export let field;
3
+ let className;
4
+ // creates a `class` property, even
5
+ // though it is a reserved word
6
+ export { className as class };
7
+ const usePrismicImage = (field) => {
8
+ field.url;
9
+ return {
10
+ url: field.url || "",
11
+ alt: field.alt || "",
12
+ width: field.dimensions?.width || undefined,
13
+ height: field.dimensions?.height || undefined,
14
+ copyright: field.copyright || undefined,
15
+ };
16
+ };
17
+ const image = usePrismicImage(field);
18
+ </script>
19
+
20
+ {#if field.url}
21
+ <img src={image.url} alt={image.alt} height={image.height} />
22
+ {/if}
@@ -0,0 +1,18 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ import * as prismicT from "@prismicio/types";
3
+ declare const __propDef: {
4
+ props: {
5
+ field: prismicT.ImageField;
6
+ class: string;
7
+ };
8
+ events: {
9
+ [evt: string]: CustomEvent<any>;
10
+ };
11
+ slots: {};
12
+ };
13
+ export declare type PrismicImageProps = typeof __propDef.props;
14
+ export declare type PrismicImageEvents = typeof __propDef.events;
15
+ export declare type PrismicImageSlots = typeof __propDef.slots;
16
+ export default class PrismicImage extends SvelteComponentTyped<PrismicImageProps, PrismicImageEvents, PrismicImageSlots> {
17
+ }
18
+ export {};
@@ -0,0 +1,44 @@
1
+ <script>import * as prismicH from "@prismicio/helpers";
2
+ import { usePrismic } from "../usePrismic";
3
+ // const defaultBlankTargetRelAttribute = "noopener noreferrer";
4
+ export let field, linkResolver, download, hreflang, referrerpolicy, rel, target, type, prefetch, noscroll;
5
+ const setRel = () => {
6
+ let rels = [];
7
+ const defaultBlankTargetRelAttribute = ["noopener", "noreferrer"];
8
+ if (rel)
9
+ rels.push(...rel?.split(" "));
10
+ if ((field && "target" in field && field?.target === "_blank") ||
11
+ target === "_blank")
12
+ defaultBlankTargetRelAttribute.forEach((item) => {
13
+ if (!rels.includes(item))
14
+ rels.push(item);
15
+ });
16
+ if (field &&
17
+ "link_type" in field &&
18
+ field?.link_type === "Web" &&
19
+ !rels.includes("external"))
20
+ rels.push("external");
21
+ return rels.join(" ");
22
+ };
23
+ const attrs = {
24
+ download,
25
+ hreflang,
26
+ referrerpolicy,
27
+ target: target || field?.target || undefined,
28
+ rel: setRel(),
29
+ type,
30
+ };
31
+ const link = field
32
+ ? prismicH.asLink(field, linkResolver || usePrismic().linkResolver)
33
+ : "";
34
+ const href = link || "";
35
+ </script>
36
+
37
+ <a
38
+ {href}
39
+ {...attrs}
40
+ sveltekit:prefetch={prefetch}
41
+ sveltekit:noscroll={noscroll}
42
+ >
43
+ <slot />
44
+ </a>
@@ -0,0 +1,29 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ import * as prismicH from "@prismicio/helpers";
3
+ import type * as prismicT from "@prismicio/types";
4
+ declare const __propDef: {
5
+ props: {
6
+ field: prismicT.LinkField | prismicT.PrismicDocument | null | undefined;
7
+ linkResolver: prismicH.LinkResolverFunction | null | undefined;
8
+ download: boolean | null | undefined;
9
+ hreflang: string | undefined;
10
+ referrerpolicy: string | undefined;
11
+ rel: string | undefined;
12
+ target: string | undefined;
13
+ type: string | undefined;
14
+ prefetch: true | undefined;
15
+ noscroll: true | undefined;
16
+ };
17
+ events: {
18
+ [evt: string]: CustomEvent<any>;
19
+ };
20
+ slots: {
21
+ default: {};
22
+ };
23
+ };
24
+ export declare type PrismicLinkProps = typeof __propDef.props;
25
+ export declare type PrismicLinkEvents = typeof __propDef.events;
26
+ export declare type PrismicLinkSlots = typeof __propDef.slots;
27
+ export default class PrismicLink extends SvelteComponentTyped<PrismicLinkProps, PrismicLinkEvents, PrismicLinkSlots> {
28
+ }
29
+ export {};
@@ -0,0 +1,21 @@
1
+ <script>import '@prismicio/client';
2
+ import { goto } from '$app/navigation';
3
+ import { onMount } from "svelte";
4
+ export let linkResolver;
5
+ export let defaultURL;
6
+ export let client;
7
+ onMount(async () => {
8
+ const urlParams = new URLSearchParams(window.location.search);
9
+ const previewToken = urlParams.get("token");
10
+ const documentID = urlParams.get("documentId");
11
+ if (documentID && previewToken) {
12
+ const redirect = await client.resolvePreviewURL({ documentID, defaultURL, previewToken, linkResolver });
13
+ await goto(redirect);
14
+ return;
15
+ }
16
+ console.log("Could not resolve preview URL.");
17
+ // TODO: Handle else
18
+ });
19
+ </script>
20
+
21
+ <slot></slot>
@@ -0,0 +1,20 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ linkResolver: any;
5
+ defaultURL: string;
6
+ client: any;
7
+ };
8
+ events: {
9
+ [evt: string]: CustomEvent<any>;
10
+ };
11
+ slots: {
12
+ default: {};
13
+ };
14
+ };
15
+ export declare type PrismicPreviewProps = typeof __propDef.props;
16
+ export declare type PrismicPreviewEvents = typeof __propDef.events;
17
+ export declare type PrismicPreviewSlots = typeof __propDef.slots;
18
+ export default class PrismicPreview extends SvelteComponentTyped<PrismicPreviewProps, PrismicPreviewEvents, PrismicPreviewSlots> {
19
+ }
20
+ export {};
@@ -0,0 +1,8 @@
1
+ <script>import * as prismicH from "@prismicio/helpers";
2
+ import { usePrismic } from "./..";
3
+ let { htmlSerializer, linkResolver } = usePrismic();
4
+ export let field;
5
+ export { htmlSerializer, linkResolver };
6
+ </script>
7
+
8
+ {@html prismicH.asHTML(field, linkResolver, htmlSerializer)}
@@ -0,0 +1,20 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ import type { RichTextField as RichTextFieldType } from "@prismicio/types";
3
+ import type { TitleField as TitleFieldType } from "@prismicio/types";
4
+ declare const __propDef: {
5
+ props: {
6
+ field: TitleFieldType | RichTextFieldType;
7
+ htmlSerializer?: any;
8
+ linkResolver?: any;
9
+ };
10
+ events: {
11
+ [evt: string]: CustomEvent<any>;
12
+ };
13
+ slots: {};
14
+ };
15
+ export declare type PrismicRichTextProps = typeof __propDef.props;
16
+ export declare type PrismicRichTextEvents = typeof __propDef.events;
17
+ export declare type PrismicRichTextSlots = typeof __propDef.slots;
18
+ export default class PrismicRichText extends SvelteComponentTyped<PrismicRichTextProps, PrismicRichTextEvents, PrismicRichTextSlots> {
19
+ }
20
+ export {};
@@ -0,0 +1,7 @@
1
+ <script>import * as prismicH from "@prismicio/helpers";
2
+ export let field;
3
+ export let separator;
4
+ </script>
5
+
6
+ <!-- TODO: Separator not working for newlines `\n\n` -->
7
+ {@html prismicH.asText(field, separator)}
@@ -0,0 +1,19 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ import type { RichTextField as RichTextFieldType } from "@prismicio/types";
3
+ import type { TitleField as TitleFieldType } from "@prismicio/types";
4
+ declare const __propDef: {
5
+ props: {
6
+ field: TitleFieldType | RichTextFieldType;
7
+ separator: string;
8
+ };
9
+ events: {
10
+ [evt: string]: CustomEvent<any>;
11
+ };
12
+ slots: {};
13
+ };
14
+ export declare type PrismicTextProps = typeof __propDef.props;
15
+ export declare type PrismicTextEvents = typeof __propDef.events;
16
+ export declare type PrismicTextSlots = typeof __propDef.slots;
17
+ export default class PrismicText extends SvelteComponentTyped<PrismicTextProps, PrismicTextEvents, PrismicTextSlots> {
18
+ }
19
+ export {};
@@ -0,0 +1,17 @@
1
+ <script>import TodoSliceComponent from './TodoSliceComponent.svelte';
2
+ export let slices = [];
3
+ export let components = {};
4
+ export let context = {};
5
+ export let defaultComponent = undefined;
6
+ export let dev = process.env.NODE_ENV === "development";
7
+ </script>
8
+
9
+ {#each slices as slice, index}
10
+ {@const type = "slice_type" in slice ? slice.slice_type : slice.type }
11
+ {@const Component = components[type] || defaultComponent}
12
+ {#if Component}
13
+ <svelte:component this={Component} {slice} {slices} {context} {index} />
14
+ {:else}
15
+ <TodoSliceComponent {slice} {dev} />
16
+ {/if}
17
+ {/each}
@@ -0,0 +1,25 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ import type { SvelteComponent } from 'svelte';
3
+ declare const __propDef: {
4
+ props: {
5
+ slices?: ({
6
+ slice_type: string;
7
+ } | {
8
+ type: string;
9
+ })[] | undefined;
10
+ components?: Record<string, SvelteComponent | (new (...args: any[]) => SvelteComponent)> | undefined;
11
+ context?: any;
12
+ defaultComponent?: SvelteComponent | (new (...args: any[]) => SvelteComponent) | undefined;
13
+ dev?: boolean | undefined;
14
+ };
15
+ events: {
16
+ [evt: string]: CustomEvent<any>;
17
+ };
18
+ slots: {};
19
+ };
20
+ export declare type SliceZoneProps = typeof __propDef.props;
21
+ export declare type SliceZoneEvents = typeof __propDef.events;
22
+ export declare type SliceZoneSlots = typeof __propDef.slots;
23
+ export default class SliceZone extends SvelteComponentTyped<SliceZoneProps, SliceZoneEvents, SliceZoneSlots> {
24
+ }
25
+ export {};
@@ -0,0 +1,12 @@
1
+ <script>export let slice;
2
+ export let dev = process.env.NODE_ENV === "development";
3
+ const type = "slice_type" in slice ? slice.slice_type : slice.type;
4
+ if (dev)
5
+ console.warn(`[SliceZone] Could not find a component for Slice type "${type}"`, slice);
6
+ </script>
7
+
8
+ {#if dev}
9
+ <section data-slice-zone-todo-component="" data-slice-type={type}>
10
+ Could not find a component for Slice type &ldquo;{type}&rdquo;
11
+ </section>
12
+ {/if}
@@ -0,0 +1,21 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ slice: {
5
+ slice_type: string;
6
+ } | {
7
+ type: string;
8
+ };
9
+ dev?: boolean | undefined;
10
+ };
11
+ events: {
12
+ [evt: string]: CustomEvent<any>;
13
+ };
14
+ slots: {};
15
+ };
16
+ export declare type TodoSliceComponentProps = typeof __propDef.props;
17
+ export declare type TodoSliceComponentEvents = typeof __propDef.events;
18
+ export declare type TodoSliceComponentSlots = typeof __propDef.slots;
19
+ export default class TodoSliceComponent extends SvelteComponentTyped<TodoSliceComponentProps, TodoSliceComponentEvents, TodoSliceComponentSlots> {
20
+ }
21
+ export {};
@@ -0,0 +1 @@
1
+ export { default as SliceZone } from "./SliceZone.svelte";
@@ -0,0 +1,7 @@
1
+ // export { default as PrismicEmbed } from "./PrismicEmbed.svelte";
2
+ // export { default as PrismicImage } from "./PrismicImage.svelte";
3
+ // export { default as PrismicLink } from "./PrismicLink.svelte";
4
+ // export { default as PrismicText } from "./PrismicText.svelte";
5
+ // export { default as PrismicRichText } from "./PrismicRichText.svelte";
6
+ // export { default as PrismicPreview } from "./PrismicPreview.svelte";
7
+ export { default as SliceZone } from "./SliceZone.svelte";
@@ -0,0 +1,9 @@
1
+ interface globalOptions {
2
+ repositoryName: string;
3
+ htmlSerializer?: any;
4
+ linkResolver?: any;
5
+ routes?: any;
6
+ slices?: any;
7
+ }
8
+ declare const configurePrismic: (globalOptions: globalOptions) => any;
9
+ export default configurePrismic;
@@ -0,0 +1,17 @@
1
+ import * as prismic from "@prismicio/client";
2
+ import * as prismicH from "@prismicio/helpers";
3
+ const configurePrismic = (globalOptions) => {
4
+ const { repositoryName, htmlSerializer, linkResolver, slices } = globalOptions;
5
+ const endpoint = prismic.getEndpoint(repositoryName);
6
+ const client = prismic.createClient(endpoint, globalOptions);
7
+ const clientWithFetch = () => prismic.createClient(endpoint, { ...globalOptions, fetch });
8
+ return {
9
+ ...prismicH,
10
+ client,
11
+ clientWithFetch,
12
+ htmlSerializer,
13
+ linkResolver,
14
+ slices,
15
+ };
16
+ };
17
+ export default configurePrismic;
package/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export { SliceZone, } from "./components";
@@ -0,0 +1 @@
1
+ export declare const prismicKey: unique symbol;
@@ -0,0 +1 @@
1
+ export const prismicKey = Symbol("prismic");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prismicio/svelte",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "Svelte plugin, components, and composables to fetch and present Prismic content",
5
5
  "keywords": [
6
6
  "typescript",
@@ -35,10 +35,6 @@
35
35
  "module": "index.js",
36
36
  "types": "index.d.ts",
37
37
  "svelte": "./index.js",
38
- "files": [
39
- "dist",
40
- "src"
41
- ],
42
38
  "dependencies": {
43
39
  "@prismicio/client": "^6.4.3",
44
40
  "@prismicio/helpers": "^2.3.0"
package/types.d.ts ADDED
@@ -0,0 +1,27 @@
1
+ import type { Client } from "@prismicio/client";
2
+ import type { LinkResolverFunction, HTMLFunctionSerializer, HTMLMapSerializer } from "@prismicio/helpers";
3
+ export interface Route {
4
+ /**
5
+ * The Custom Type of the document.
6
+ */
7
+ type: string;
8
+ /**
9
+ * The resolved path of the document with optional placeholders.
10
+ */
11
+ path: string;
12
+ /**
13
+ * An object that lists the API IDs of the Content Relationships in the route.
14
+ */
15
+ resolvers: Record<string, string>;
16
+ }
17
+ export interface PrismicConfig {
18
+ repoName: string;
19
+ routes?: Route[];
20
+ accessToken?: string;
21
+ options?: null;
22
+ }
23
+ export declare type PrismicContext = {
24
+ client?: Client;
25
+ linkResolver?: LinkResolverFunction;
26
+ htmlSerializer?: HTMLFunctionSerializer | HTMLMapSerializer;
27
+ };
package/types.js ADDED
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ import { PrismicContext } from "./types";
2
+ export declare const usePrismic: () => PrismicContext;
package/usePrismic.js ADDED
@@ -0,0 +1,11 @@
1
+ import { hasContext, getContext } from "svelte";
2
+ import { prismicKey } from "./injectionSymbols";
3
+ import "./types";
4
+ export const usePrismic = () => {
5
+ if (hasContext(prismicKey)) {
6
+ return getContext(prismicKey);
7
+ }
8
+ else {
9
+ return {};
10
+ }
11
+ };