@inkbar/svelte 0.6.0 → 0.8.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.
Files changed (44) hide show
  1. package/README.md +13 -0
  2. package/dist/components/InkFindBar.svelte +213 -0
  3. package/dist/components/InkFindBar.svelte.d.ts +6 -0
  4. package/dist/components/InkFindBar.svelte.d.ts.map +1 -0
  5. package/dist/components/InkFormAlert.svelte +108 -0
  6. package/dist/components/InkFormAlert.svelte.d.ts +13 -0
  7. package/dist/components/InkFormAlert.svelte.d.ts.map +1 -0
  8. package/dist/components/InkRoot.svelte +136 -4
  9. package/dist/components/InkRoot.svelte.d.ts +22 -2
  10. package/dist/components/InkRoot.svelte.d.ts.map +1 -1
  11. package/dist/components/InkSearchButton.svelte +56 -0
  12. package/dist/components/InkSearchButton.svelte.d.ts +5 -0
  13. package/dist/components/InkSearchButton.svelte.d.ts.map +1 -0
  14. package/dist/components/InkSignFieldPopover.svelte +187 -0
  15. package/dist/components/InkSignFieldPopover.svelte.d.ts +10 -0
  16. package/dist/components/InkSignFieldPopover.svelte.d.ts.map +1 -0
  17. package/dist/components/InkSignatureDialog.svelte +11 -3
  18. package/dist/components/InkSignatureDialog.svelte.d.ts +9 -3
  19. package/dist/components/InkSignatureDialog.svelte.d.ts.map +1 -1
  20. package/dist/components/InkSignatureMenu.svelte +10 -99
  21. package/dist/components/InkSignatureMenu.svelte.d.ts.map +1 -1
  22. package/dist/components/InkViewport.svelte +46 -1
  23. package/dist/components/InkViewport.svelte.d.ts.map +1 -1
  24. package/dist/components/SignatureForm.svelte +7 -2
  25. package/dist/components/SignatureForm.svelte.d.ts +2 -0
  26. package/dist/components/SignatureForm.svelte.d.ts.map +1 -1
  27. package/dist/components/SignatureMenuPanel.svelte +127 -0
  28. package/dist/components/SignatureMenuPanel.svelte.d.ts +13 -0
  29. package/dist/components/SignatureMenuPanel.svelte.d.ts.map +1 -0
  30. package/dist/components/search-button.d.ts +10 -0
  31. package/dist/components/search-button.d.ts.map +1 -0
  32. package/dist/components/search-button.js +1 -0
  33. package/dist/context.d.ts +14 -2
  34. package/dist/context.d.ts.map +1 -1
  35. package/dist/hooks/useForm.svelte.d.ts +17 -0
  36. package/dist/hooks/useForm.svelte.d.ts.map +1 -0
  37. package/dist/hooks/useForm.svelte.js +20 -0
  38. package/dist/hooks/useSearch.svelte.d.ts +11 -0
  39. package/dist/hooks/useSearch.svelte.d.ts.map +1 -0
  40. package/dist/hooks/useSearch.svelte.js +31 -0
  41. package/dist/index.d.ts +7 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +4 -0
  44. package/package.json +6 -5
@@ -24,10 +24,13 @@
24
24
 
25
25
  let {
26
26
  fonts,
27
+ select,
27
28
  onSaved,
28
29
  onClose,
29
30
  }: {
30
31
  fonts: readonly string[] | undefined
32
+ /** Whether saving selects the new signature for the `signature` tool. */
33
+ select: boolean
31
34
  onSaved: (t: SignatureTemplate) => void
32
35
  onClose: () => void
33
36
  } = $props()
@@ -54,8 +57,10 @@
54
57
  draft.save(ctx.signatures).then(
55
58
  (t) => {
56
59
  if (!t) return
57
- signature.setOptions({ templateId: t.id })
58
- current.setTool('signature')
60
+ if (select) {
61
+ signature.setOptions({ templateId: t.id })
62
+ current.setTool('signature')
63
+ }
59
64
  onSaved(t)
60
65
  onClose()
61
66
  },
@@ -1,6 +1,8 @@
1
1
  import type { SignatureTemplate } from '@inkbar/core';
2
2
  type $$ComponentProps = {
3
3
  fonts: readonly string[] | undefined;
4
+ /** Whether saving selects the new signature for the `signature` tool. */
5
+ select: boolean;
4
6
  onSaved: (t: SignatureTemplate) => void;
5
7
  onClose: () => void;
6
8
  };
@@ -1 +1 @@
1
- {"version":3,"file":"SignatureForm.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/SignatureForm.svelte.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEvE,KAAK,gBAAgB,GAAI;IACtB,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;IACpC,OAAO,EAAE,CAAC,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACvC,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,CAAC;AAuHJ,QAAA,MAAM,aAAa,sDAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"SignatureForm.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/SignatureForm.svelte.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEvE,KAAK,gBAAgB,GAAI;IACtB,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;IACpC,yEAAyE;IACzE,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,CAAC,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACvC,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,CAAC;AA0HJ,QAAA,MAAM,aAAa,sDAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
@@ -0,0 +1,127 @@
1
+ <script lang="ts">
2
+ /*
3
+ * The signature menu's items: the saved signatures as previews, each with a remove button,
4
+ * then "Create signature", and the store's removal error. The toolbar's `InkSignatureMenu`
5
+ * and a signature field's `InkSignFieldPopover` both render it inside their `role="menu"`
6
+ * content, which `menu` returns.
7
+ */
8
+ import { SIGNATURE_LABELS, signaturePreview } from '@inkbar/core/dom'
9
+ import { Plus, Trash2 } from '@inkbar/icons'
10
+ import { tick } from 'svelte'
11
+
12
+ import { useInkContext } from '../context.js'
13
+ import { useReadable } from '../use-readable.svelte.js'
14
+
15
+ import InkIcon from './InkIcon.svelte'
16
+
17
+ import type { SignatureTemplate } from '@inkbar/core'
18
+ import type { SignatureMenuItem } from '@inkbar/core/dom'
19
+
20
+ let {
21
+ items,
22
+ menu,
23
+ onChoose,
24
+ onCreate,
25
+ }: {
26
+ items: readonly SignatureMenuItem[]
27
+ /** The menu element the items sit in, for moving focus after a removal. */
28
+ menu: () => HTMLElement | null
29
+ onChoose: (template: SignatureTemplate) => void
30
+ onCreate: () => void
31
+ } = $props()
32
+
33
+ const ctx = useInkContext('SignatureMenuPanel')
34
+ const removeError = useReadable(() => ctx.signatures.removeError, undefined)
35
+
36
+ /** Removes a template; focus moves to the signature now in its row, else "Create signature". */
37
+ function remove(id: string, row: number): void {
38
+ ctx.signatures.remove(id).then(
39
+ async () => {
40
+ await tick()
41
+ const panel = menu()
42
+ if (!panel) return
43
+ const rows = panel.querySelectorAll<HTMLElement>('.ink-signature-item')
44
+ const next =
45
+ rows[Math.min(row, rows.length - 1)] ??
46
+ panel.querySelector<HTMLElement>('[data-ink-signature-create]')
47
+ next?.focus({ preventScroll: true })
48
+ },
49
+ () => {
50
+ // The host's store refused: the signature stays.
51
+ }
52
+ )
53
+ }
54
+ </script>
55
+
56
+ {#if items.length > 0}
57
+ <div
58
+ role="group"
59
+ aria-label={SIGNATURE_LABELS.saved}
60
+ class="ink-signature-list"
61
+ data-ink-menu-columns="2"
62
+ >
63
+ {#each items as item, row (item.id)}
64
+ {@const preview =
65
+ item.template.kind === 'ink' ? signaturePreview(item.template) : null}
66
+ <button
67
+ type="button"
68
+ role="menuitemradio"
69
+ aria-checked={item.checked}
70
+ aria-label={item.label}
71
+ tabindex={-1}
72
+ class="ink-select-item ink-menu-item ink-signature-item"
73
+ data-ink-select-item=""
74
+ data-key={item.id}
75
+ data-state={item.checked ? 'checked' : 'unchecked'}
76
+ onclick={() => onChoose(item.template)}
77
+ >
78
+ <span class="ink-signature-preview" data-kind={item.template.kind}>
79
+ {#if item.template.kind === 'image'}
80
+ <img src={item.template.imagedata} alt="" draggable="false" />
81
+ {:else if preview}
82
+ <svg viewBox={preview.viewBox} aria-hidden="true">
83
+ {#each preview.paths as d, i (i)}
84
+ <path {d} fill="currentColor" />
85
+ {/each}
86
+ </svg>
87
+ {/if}
88
+ </span>
89
+ </button>
90
+ <button
91
+ type="button"
92
+ role="menuitem"
93
+ aria-label={item.removeLabel}
94
+ title={item.removeLabel}
95
+ tabindex={-1}
96
+ class="ink-menu-item ink-signature-remove"
97
+ data-ink-signature-remove=""
98
+ data-key={item.id}
99
+ onclick={() => remove(item.id, row)}
100
+ >
101
+ <InkIcon icon={Trash2} size={16} />
102
+ </button>
103
+ {/each}
104
+ </div>
105
+ <div role="separator" class="ink-select-separator"></div>
106
+ {/if}
107
+ <button
108
+ type="button"
109
+ role="menuitem"
110
+ tabindex={-1}
111
+ class="ink-select-item ink-menu-item ink-signature-create"
112
+ data-ink-select-item=""
113
+ data-ink-signature-create=""
114
+ onclick={onCreate}
115
+ >
116
+ <InkIcon icon={Plus} size={16} />
117
+ {SIGNATURE_LABELS.create}
118
+ </button>
119
+ {#if removeError.current}
120
+ <p
121
+ class="ink-field-error ink-signature-remove-error"
122
+ role="alert"
123
+ data-ink-signature-remove-error=""
124
+ >
125
+ {removeError.current}
126
+ </p>
127
+ {/if}
@@ -0,0 +1,13 @@
1
+ import type { SignatureTemplate } from '@inkbar/core';
2
+ import type { SignatureMenuItem } from '@inkbar/core/dom';
3
+ type $$ComponentProps = {
4
+ items: readonly SignatureMenuItem[];
5
+ /** The menu element the items sit in, for moving focus after a removal. */
6
+ menu: () => HTMLElement | null;
7
+ onChoose: (template: SignatureTemplate) => void;
8
+ onCreate: () => void;
9
+ };
10
+ declare const SignatureMenuPanel: import("svelte").Component<$$ComponentProps, {}, "">;
11
+ type SignatureMenuPanel = ReturnType<typeof SignatureMenuPanel>;
12
+ export default SignatureMenuPanel;
13
+ //# sourceMappingURL=SignatureMenuPanel.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignatureMenuPanel.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/SignatureMenuPanel.svelte.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,KAAK,gBAAgB,GAAI;IACtB,KAAK,EAAE,SAAS,iBAAiB,EAAE,CAAA;IACnC,2EAA2E;IAC3E,IAAI,EAAE,MAAM,WAAW,GAAG,IAAI,CAAA;IAC9B,QAAQ,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAA;IAC/C,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB,CAAC;AAkFJ,QAAA,MAAM,kBAAkB,sDAAwC,CAAC;AACjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ChildSnippet } from './child-snippet.js';
2
+ import type { Snippet } from 'svelte';
3
+ import type { HTMLButtonAttributes } from 'svelte/elements';
4
+ /** Props of `InkSearchButton`: a toolbar button that may render through `child`. */
5
+ export interface InkSearchButtonProps extends Omit<HTMLButtonAttributes, 'children'> {
6
+ children?: Snippet | undefined;
7
+ /** Render your own button: spread `props` on it. */
8
+ child?: ChildSnippet | undefined;
9
+ }
10
+ //# sourceMappingURL=search-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-button.d.ts","sourceRoot":"","sources":["../../src/lib/components/search-button.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAE3D,oFAAoF;AACpF,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC;IAClF,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC9B,oDAAoD;IACpD,KAAK,CAAC,EAAE,YAAY,GAAG,SAAS,CAAA;CACjC"}
@@ -0,0 +1 @@
1
+ export {};
package/dist/context.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { Annotation, InkDocument, InkStatus, PdfAssets, PluginHistory, SignatureLibrary, Writable } from '@inkbar/core';
2
- import type { DecorateAnnotation, PluginHost, Tool, ToolController, ToolId, ToolOptions, ToolStyle, Viewport, ZoomValue } from '@inkbar/core/dom';
1
+ import type { Annotation, FormAction, InkDocument, InkError, InkStatus, PdfAssets, PluginHistory, SignatureLibrary, Writable } from '@inkbar/core';
2
+ import type { DecorateAnnotation, PluginHost, SearchController, Tool, ToolController, ToolId, ToolOptions, ToolStyle, Viewport, ZoomValue } from '@inkbar/core/dom';
3
3
  export type { InkStatus };
4
4
  /**
5
5
  * Undo and redo for the current document, whichever mode its annotations are in. `track` and
@@ -36,6 +36,12 @@ export interface InkContext {
36
36
  * InkCommand places its commands.
37
37
  */
38
38
  readonly pluginHost: PluginHost | null;
39
+ /**
40
+ * The root's search controller, built with the plugin host and kept for its life; `null`
41
+ * before the root has mounted, and on the server. InkViewport hands it to the engine, which
42
+ * draws the highlights; `useSearch` and the find bar read it.
43
+ */
44
+ readonly search: SearchController | null;
39
45
  /** InkViewport's scroll element while it is mounted: the plugins' `root`. */
40
46
  readonly viewportEl: Writable<HTMLElement | null>;
41
47
  /** Set by InkViewport once it has built its viewport and tool controller. */
@@ -74,6 +80,12 @@ export interface InkContext {
74
80
  readonly history: InkHistory;
75
81
  readonly rootEl: HTMLElement | null;
76
82
  setViewport(viewport: Viewport | null, tools: ToolController | null): void;
83
+ /** InkRoot's `formHighlight`; InkViewport reads it when it builds the viewer. */
84
+ readonly formHighlight: boolean | undefined;
85
+ /** Calls InkRoot's `onformaction`. */
86
+ reportFormAction(action: FormAction): void;
87
+ /** Calls InkRoot's `onError`, for failures after the document opened (a refused signing). */
88
+ reportError(error: InkError): void;
77
89
  }
78
90
  /** Called once by InkRoot during its initialisation. */
79
91
  export declare function setInkContext(ctx: InkContext, peekActivated: () => string | null): void;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/lib/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,SAAS,EACT,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACT,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EACV,kBAAkB,EAClB,UAAU,EACV,IAAI,EACJ,cAAc,EACd,MAAM,EACN,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACV,MAAM,kBAAkB,CAAA;AAEzB,YAAY,EAAE,SAAS,EAAE,CAAA;AAEzB;;;GAGG;AACH,MAAM,WAAW,UAAW,SAAQ,aAAa;IAC/C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,IAAI,IAAI,IAAI,CAAA;IACZ,IAAI,IAAI,IAAI,CAAA;IACZ,KAAK,IAAI,IAAI,CAAA;IACb;;;;;OAKG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAAA;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAA;IACrC,2FAA2F;IAC3F,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;IAC1B,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAA;IAC3C,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAA;IACtC,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;IACjD,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;IACrC,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,SAAS,CAAA;IACtC,+FAA+F;IAC/F,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,SAAS,CAAA;IAC3D,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,+EAA+E;IAC/E,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,mFAAmF;IACnF,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAA;IACrC,8FAA8F;IAC9F,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1C,wEAAwE;IACxE,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;IACpC,yFAAyF;IACzF,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAA;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,UAAU,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IAC9B,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,gGAAgG;IAChG,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC;;;;OAIG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAA;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;IACnC,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,CAAA;CAC3E;AAWD,wDAAwD;AACxD,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAGvF;AAED,4FAA4F;AAC5F,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAG5D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAY1D"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/lib/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { FieldValues, FormField, FormSetResult } from '@inkbar/core';
2
+ export interface FormHandle {
3
+ /** The open document's form fields; empty while none is open or it has none. */
4
+ readonly fields: readonly FormField[];
5
+ /** What the fields hold now, keyed by full name. */
6
+ readonly values: FieldValues;
7
+ /**
8
+ * Commits values as a person would: scripts run, and the call is one undo step. Returns the
9
+ * names applied and rejected, or `undefined` while no document is open.
10
+ */
11
+ set: (values: FieldValues) => FormSetResult | undefined;
12
+ /** Restores the PDF's default values of `names`, or of every field. */
13
+ reset: (names?: string[]) => void;
14
+ }
15
+ /** The open document's form: its fields, their values, and `set` and `reset`. */
16
+ export declare function useForm(): FormHandle;
17
+ //# sourceMappingURL=useForm.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useForm.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/hooks/useForm.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAKzE,MAAM,WAAW,UAAU;IACzB,gFAAgF;IAChF,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAA;IACrC,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B;;;OAGG;IACH,GAAG,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,aAAa,GAAG,SAAS,CAAA;IACvD,uEAAuE;IACvE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;CAClC;AAED,iFAAiF;AACjF,wBAAgB,OAAO,IAAI,UAAU,CAcpC"}
@@ -0,0 +1,20 @@
1
+ import { useInkContext } from '../context.js';
2
+ import { useReadable } from '../use-readable.svelte.js';
3
+ const NO_FIELDS = [];
4
+ const NO_VALUES = Object.freeze({});
5
+ /** The open document's form: its fields, their values, and `set` and `reset`. */
6
+ export function useForm() {
7
+ const ctx = useInkContext('useForm()');
8
+ const fields = useReadable(() => ctx.document?.form.fields, NO_FIELDS);
9
+ const values = useReadable(() => ctx.document?.form.values, NO_VALUES);
10
+ return {
11
+ get fields() {
12
+ return fields.current;
13
+ },
14
+ get values() {
15
+ return values.current;
16
+ },
17
+ set: (v) => ctx.document?.form.set(v),
18
+ reset: (names) => ctx.document?.form.reset(names),
19
+ };
20
+ }
@@ -0,0 +1,11 @@
1
+ import type { SearchState, ViewerSearch } from '@inkbar/core/dom';
2
+ /**
3
+ * The document search for hosts building their own control: the state, and the actions the
4
+ * find bar uses. Search is set up once InkRoot has mounted, so until then (and on the server)
5
+ * the state is closed and the actions do nothing. `open()` runs the search and draws the
6
+ * highlights even when no find bar is mounted.
7
+ */
8
+ export declare function useSearch(): {
9
+ readonly state: SearchState;
10
+ } & Omit<ViewerSearch, 'state'>;
11
+ //# sourceMappingURL=useSearch.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSearch.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/hooks/useSearch.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAWjE;;;;;GAKG;AACH,wBAAgB,SAAS,IAAI;IAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GAAG,IAAI,CACjE,YAAY,EACZ,OAAO,CACR,CAcA"}
@@ -0,0 +1,31 @@
1
+ import { useInkContext } from '../context.js';
2
+ import { useReadable } from '../use-readable.svelte.js';
3
+ const CLOSED = {
4
+ open: false,
5
+ query: '',
6
+ matchCase: false,
7
+ hits: [],
8
+ current: -1,
9
+ scanning: false,
10
+ };
11
+ /**
12
+ * The document search for hosts building their own control: the state, and the actions the
13
+ * find bar uses. Search is set up once InkRoot has mounted, so until then (and on the server)
14
+ * the state is closed and the actions do nothing. `open()` runs the search and draws the
15
+ * highlights even when no find bar is mounted.
16
+ */
17
+ export function useSearch() {
18
+ const ctx = useInkContext('useSearch()');
19
+ const state = useReadable(() => ctx.search?.state, CLOSED);
20
+ return {
21
+ get state() {
22
+ return state.current;
23
+ },
24
+ open: (query) => ctx.search?.open(query),
25
+ setQuery: (query) => ctx.search?.setQuery(query),
26
+ setMatchCase: (on) => ctx.search?.setMatchCase(on),
27
+ next: () => ctx.search?.next(),
28
+ previous: () => ctx.search?.previous(),
29
+ close: () => ctx.search?.close(),
30
+ };
31
+ }
package/dist/index.d.ts CHANGED
@@ -15,8 +15,11 @@ export { useSelection } from './hooks/useSelection.svelte.js';
15
15
  export { useZoom } from './hooks/useZoom.svelte.js';
16
16
  export { usePage } from './hooks/usePage.svelte.js';
17
17
  export { useHistory } from './hooks/useHistory.svelte.js';
18
+ export { useSearch } from './hooks/useSearch.svelte.js';
18
19
  export { useEmbedded } from './hooks/useEmbedded.svelte.js';
19
20
  export { useCommand } from './hooks/useCommand.svelte.js';
21
+ export { useForm } from './hooks/useForm.svelte.js';
22
+ export type { FormHandle } from './hooks/useForm.svelte.js';
20
23
  export type { CommandHandle } from './hooks/useCommand.svelte.js';
21
24
  export { default as InkRoot } from './components/InkRoot.svelte';
22
25
  export type { InkRootProps } from './components/InkRoot.svelte';
@@ -43,6 +46,10 @@ export type { InkHistoryButtonProps } from './components/history-button.js';
43
46
  export { default as InkZoomIn } from './components/InkZoomIn.svelte';
44
47
  export { default as InkZoomOut } from './components/InkZoomOut.svelte';
45
48
  export type { InkZoomButtonProps } from './components/zoom-button.js';
49
+ export { default as InkSearchButton } from './components/InkSearchButton.svelte';
50
+ export type { InkSearchButtonProps } from './components/search-button.js';
51
+ export { default as InkFindBar } from './components/InkFindBar.svelte';
52
+ export type { InkFindBarProps } from './components/InkFindBar.svelte';
46
53
  export { default as InkColorMenu } from './components/InkColorMenu.svelte';
47
54
  export type { InkColorMenuProps } from './components/InkColorMenu.svelte';
48
55
  export { default as InkShapeMenu } from './components/InkShapeMenu.svelte';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -9,8 +9,10 @@ export { useSelection } from './hooks/useSelection.svelte.js';
9
9
  export { useZoom } from './hooks/useZoom.svelte.js';
10
10
  export { usePage } from './hooks/usePage.svelte.js';
11
11
  export { useHistory } from './hooks/useHistory.svelte.js';
12
+ export { useSearch } from './hooks/useSearch.svelte.js';
12
13
  export { useEmbedded } from './hooks/useEmbedded.svelte.js';
13
14
  export { useCommand } from './hooks/useCommand.svelte.js';
15
+ export { useForm } from './hooks/useForm.svelte.js';
14
16
  export { default as InkRoot } from './components/InkRoot.svelte';
15
17
  export { default as InkViewport } from './components/InkViewport.svelte';
16
18
  export { default as InkPage } from './components/InkPage.svelte';
@@ -24,6 +26,8 @@ export { default as InkUndo } from './components/InkUndo.svelte';
24
26
  export { default as InkRedo } from './components/InkRedo.svelte';
25
27
  export { default as InkZoomIn } from './components/InkZoomIn.svelte';
26
28
  export { default as InkZoomOut } from './components/InkZoomOut.svelte';
29
+ export { default as InkSearchButton } from './components/InkSearchButton.svelte';
30
+ export { default as InkFindBar } from './components/InkFindBar.svelte';
27
31
  export { default as InkColorMenu } from './components/InkColorMenu.svelte';
28
32
  export { default as InkShapeMenu } from './components/InkShapeMenu.svelte';
29
33
  export { default as InkSignatureMenu } from './components/InkSignatureMenu.svelte';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inkbar/svelte",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "description": "Svelte 5 components and hooks for Inkbar, the browser PDF viewer and editor.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://inkbar.dev",
@@ -26,22 +26,23 @@
26
26
  "./package.json": "./package.json"
27
27
  },
28
28
  "dependencies": {
29
- "@inkbar/icons": "^0.6.0",
29
+ "@inkbar/icons": "^0.8.0",
30
30
  "@internationalized/date": "^3.12.4",
31
31
  "bits-ui": "^2.19.5",
32
32
  "esm-env": "^1.2.0"
33
33
  },
34
34
  "peerDependencies": {
35
- "@inkbar/core": "^0.6.0",
35
+ "@inkbar/core": "^0.8.0",
36
36
  "svelte": "^5.46.4"
37
37
  },
38
38
  "devDependencies": {
39
- "@inkbar/core": "0.6.0",
39
+ "@inkbar/core": "0.8.0",
40
40
  "@inkbar/fixtures": "0.0.0",
41
- "@inkbar/theme": "0.6.0",
41
+ "@inkbar/theme": "0.8.0",
42
42
  "@sveltejs/package": "^3.0.0",
43
43
  "@sveltejs/vite-plugin-svelte": "^7.3.1",
44
44
  "@vitest/browser-playwright": "^5.0.4",
45
+ "axe-core": "^4.13.0",
45
46
  "playwright": "1.62.1",
46
47
  "svelte": "^5.57.2",
47
48
  "svelte-check": "^4.7.6",