svedit 0.6.4 → 0.7.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.
Files changed (66) hide show
  1. package/README.md +117 -45
  2. package/dist/AnnotatedTextProperty.svelte +14 -17
  3. package/dist/AnnotatedTextProperty.svelte.d.ts.map +1 -1
  4. package/dist/Command.svelte.d.ts +3 -3
  5. package/dist/Command.svelte.js +5 -5
  6. package/dist/CustomProperty.svelte +5 -4
  7. package/dist/Node.svelte +29 -14
  8. package/dist/Node.svelte.d.ts.map +1 -1
  9. package/dist/NodeArrayProperty.svelte +29 -9
  10. package/dist/NodeArrayProperty.svelte.d.ts.map +1 -1
  11. package/dist/NodeCaret.svelte +71 -0
  12. package/dist/NodeCaret.svelte.d.ts +27 -0
  13. package/dist/NodeCaret.svelte.d.ts.map +1 -0
  14. package/dist/NodeGap.svelte +249 -0
  15. package/dist/NodeGap.svelte.d.ts +20 -0
  16. package/dist/NodeGap.svelte.d.ts.map +1 -0
  17. package/dist/NodeGapMarkers.svelte +456 -0
  18. package/dist/NodeGapMarkers.svelte.d.ts +12 -0
  19. package/dist/NodeGapMarkers.svelte.d.ts.map +1 -0
  20. package/dist/NodeSelectionMarkers.svelte +49 -0
  21. package/dist/NodeSelectionMarkers.svelte.d.ts +7 -0
  22. package/dist/NodeSelectionMarkers.svelte.d.ts.map +1 -0
  23. package/dist/Session.svelte.d.ts +6 -6
  24. package/dist/Session.svelte.d.ts.map +1 -1
  25. package/dist/Session.svelte.js +13 -69
  26. package/dist/Svedit.svelte +161 -95
  27. package/dist/Svedit.svelte.d.ts.map +1 -1
  28. package/dist/Transaction.svelte.d.ts +1 -1
  29. package/dist/Transaction.svelte.d.ts.map +1 -1
  30. package/dist/Transaction.svelte.js +8 -68
  31. package/dist/doc_utils.d.ts +12 -0
  32. package/dist/doc_utils.d.ts.map +1 -1
  33. package/dist/doc_utils.js +61 -2
  34. package/dist/index.d.ts +4 -0
  35. package/dist/index.js +4 -0
  36. package/dist/node_gap_computation.svelte.d.ts +5 -0
  37. package/dist/node_gap_computation.svelte.d.ts.map +1 -0
  38. package/dist/node_gap_computation.svelte.js +621 -0
  39. package/dist/styles/svedit-colors.css +8 -0
  40. package/dist/transforms.svelte.d.ts +8 -0
  41. package/dist/transforms.svelte.d.ts.map +1 -1
  42. package/dist/transforms.svelte.js +20 -10
  43. package/dist/types.d.ts +56 -68
  44. package/dist/utils.d.ts +0 -3
  45. package/dist/utils.d.ts.map +1 -1
  46. package/dist/utils.js +10 -10
  47. package/package.json +21 -21
  48. package/src/lib/AnnotatedTextProperty.svelte +14 -17
  49. package/src/lib/Command.svelte.js +5 -5
  50. package/src/lib/CustomProperty.svelte +5 -4
  51. package/src/lib/Node.svelte +29 -14
  52. package/src/lib/NodeArrayProperty.svelte +29 -9
  53. package/src/lib/NodeCaret.svelte +71 -0
  54. package/src/lib/NodeGap.svelte +249 -0
  55. package/src/lib/NodeGapMarkers.svelte +456 -0
  56. package/src/lib/NodeSelectionMarkers.svelte +49 -0
  57. package/src/lib/Session.svelte.js +13 -69
  58. package/src/lib/Svedit.svelte +161 -95
  59. package/src/lib/Transaction.svelte.js +8 -68
  60. package/src/lib/doc_utils.js +61 -2
  61. package/src/lib/index.js +4 -0
  62. package/src/lib/node_gap_computation.svelte.js +621 -0
  63. package/src/lib/styles/svedit-colors.css +8 -0
  64. package/src/lib/transforms.svelte.js +20 -10
  65. package/src/lib/types.d.ts +56 -68
  66. package/src/lib/utils.js +10 -10
@@ -1,24 +1,39 @@
1
1
  <script>
2
- import { getContext } from 'svelte';
2
+ import { getContext, setContext } from 'svelte';
3
3
  import UnknownNode from './UnknownNode.svelte';
4
4
  import { snake_to_pascal } from './utils.js';
5
+ import DefaultNodeGap from './NodeGap.svelte';
6
+ import DefaultNodeGapMarkers from './NodeGapMarkers.svelte';
5
7
 
6
8
  /** @import { NodeArrayPropertyProps } from './types.d.ts'; */
7
9
 
8
10
  const svedit = getContext('svedit');
9
- let NodeCursorTrap = $derived(svedit.session.config.system_components.NodeCursorTrap);
11
+ let NodeGap = $derived(svedit.session.config.system_components?.NodeGap ?? DefaultNodeGap);
12
+ let NodeGapMarkers = $derived(svedit.session.config.system_components?.NodeGapMarkers ?? DefaultNodeGapMarkers);
10
13
 
11
14
  /** @type {NodeArrayPropertyProps} */
12
- let { path, tag = 'div', class: css_class } = $props();
15
+ let { path, tag = 'div', class: css_class, style = '', ...rest } = $props();
13
16
 
14
17
  let nodes = $derived(
15
18
  svedit.session
16
19
  .get(path)
17
20
  .map(/** @param {string} node_id */ (node_id) => svedit.session.get(node_id))
18
21
  );
19
- </script>
20
22
 
21
- <svelte:element this={tag} class={css_class} data-type="node_array" data-path={path.join('.')}>
23
+ // Expose array metadata to child Node.svelte instances via context,
24
+ // avoiding expensive session.inspect() / session.get() calls per node.
25
+ setContext('node_array_meta', {
26
+ get length() { return nodes.length; }
27
+ });
28
+ </script>
29
+ <!-- we use the anchor of node_array in Overlays.svelte to position the last insertion point in a horizontal layout based on the right edge of the container -->
30
+ <svelte:element
31
+ this={tag}
32
+ class={css_class}
33
+ data-type="node_array"
34
+ data-path={path.join('.')}
35
+ style="anchor-name: --{path.join('-')};{style ? ` ${style}` : ''}" {...rest}
36
+ >
22
37
  {#if nodes.length === 0 && svedit.editable}
23
38
  <!--
24
39
  Experimental: We'll let .empty-node-array act like a node, so the existing
@@ -32,10 +47,12 @@
32
47
  data-type="node"
33
48
  style="anchor-name: --{[...path, 0].join(
34
49
  '-'
35
- )}; position: relative; min-height: 40px; min-width: 40px;"
36
- >
37
- <NodeCursorTrap path={[...path, 0]} type="position-zero-cursor-trap" />
38
- </div>
50
+ )}; min-height: 40px; min-width: 24px;"
51
+ ></div>
52
+ <!-- Sibling (not child) of .empty-node-array so its .svedit-selectable
53
+ resolves anchor positioning against the shared containing block,
54
+ not the placeholder which inherits .node positioning styles. -->
55
+ <NodeGap path={[...path, 0]} type="gap-before" empty />
39
56
  {/if}
40
57
  {#each nodes as node, index (index)}
41
58
  {@const Component = svedit.session.config.node_components[snake_to_pascal(node.type)]}
@@ -45,4 +62,7 @@
45
62
  <UnknownNode path={[...path, index]} />
46
63
  {/if}
47
64
  {/each}
65
+ {#if svedit.editable && NodeGapMarkers}
66
+ <NodeGapMarkers {path} />
67
+ {/if}
48
68
  </svelte:element>
@@ -1 +1 @@
1
- {"version":3,"file":"NodeArrayProperty.svelte.d.ts","sourceRoot":"","sources":["../src/lib/NodeArrayProperty.svelte.js"],"names":[],"mappings":";;;;;AAgDA,mHAAgE"}
1
+ {"version":3,"file":"NodeArrayProperty.svelte.d.ts","sourceRoot":"","sources":["../src/lib/NodeArrayProperty.svelte.js"],"names":[],"mappings":";;;;;AA8DA,mHAAgE"}
@@ -0,0 +1,71 @@
1
+ <script>
2
+ /**
3
+ * Visual insertion caret rendered inside the active insertion marker.
4
+ *
5
+ * This component is presentation-only. It reads styling tokens for
6
+ * color/shape/animation and switches orientation via var(--row, 1)
7
+ * with the * 99999 multiplier trick — works in all browsers.
8
+ */
9
+ </script>
10
+
11
+ <div class="caret" role="none"></div>
12
+
13
+ <style>
14
+ @keyframes node-caret-blink {
15
+ 0%, 60% { opacity: 1; }
16
+ 68% { opacity: 0; }
17
+ 88% { opacity: 0; }
18
+ 100% { opacity: 1; }
19
+ }
20
+
21
+ .caret {
22
+ --_R: var(--row, 1);
23
+ --_C: calc(1 - var(--row, 1));
24
+ position: absolute;
25
+ inset: 0;
26
+ pointer-events: none;
27
+ z-index: var(--node-caret-z-index, 20);
28
+ animation: var(
29
+ --node-caret-animation,
30
+ node-caret-blink var(--node-caret-blink-duration, 1.1s) ease-in-out infinite
31
+ );
32
+ }
33
+
34
+ .caret::before {
35
+ --_ci: var(--node-caret-inset, var(--node-caret-marker-inset, 2px));
36
+ --_ct: var(--node-caret-thickness, 2px);
37
+ --_cp: var(--node-caret-row-inline-position, 50%);
38
+ content: '';
39
+ position: absolute;
40
+ background: var(--node-caret-bg, var(--svedit-editing-stroke));
41
+ /* Increase the visibility of the caret by contrasting it with a box shadow that's the inverted brightness of the current text color. */
42
+ /* Component developers must set their background color and text color on the node itself, not a child element, for this to work. */
43
+ box-shadow: var(--node-caret-shadow, 0 0 0 0.5px oklch(from currentColor calc(1 - l) c h));
44
+ border: var(--node-caret-border, none);
45
+ border-radius: var(--node-caret-radius, 1px);
46
+ /*
47
+ * Column: horizontal line at 50% — top=50%, bottom=50%-thickness.
48
+ * Row: vertical line at --_cp — left=cp, right=100%-cp-thickness.
49
+ * No explicit height/width — inset pairs control dimensions.
50
+ */
51
+ top: min(
52
+ calc(50% + var(--_R) * 99999px),
53
+ calc(var(--_ci) + var(--_C) * 99999px)
54
+ );
55
+ bottom: min(
56
+ calc(50% - var(--_ct) + var(--_R) * 99999px),
57
+ calc(var(--_ci) + var(--_C) * 99999px)
58
+ );
59
+ left: min(
60
+ calc(var(--_ci) + var(--_R) * 99999px),
61
+ calc(var(--_cp) + var(--_C) * 99999px)
62
+ );
63
+ right: min(
64
+ calc(var(--_ci) + var(--_R) * 99999px),
65
+ calc(100% - var(--_cp) - var(--_ct) + var(--_C) * 99999px)
66
+ );
67
+ transform:
68
+ translateY(calc(var(--_C) * -0.5px))
69
+ translateX(calc(var(--_R) * -0.5px));
70
+ }
71
+ </style>
@@ -0,0 +1,27 @@
1
+ export default NodeCaret;
2
+ type NodeCaret = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string;
8
+ };
9
+ declare const NodeCaret: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
15
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
16
+ $$bindings?: Bindings;
17
+ } & Exports;
18
+ (internal: unknown, props: {
19
+ $$events?: Events;
20
+ $$slots?: Slots;
21
+ }): Exports & {
22
+ $set?: any;
23
+ $on?: any;
24
+ };
25
+ z_$$bindings?: Bindings;
26
+ }
27
+ //# sourceMappingURL=NodeCaret.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeCaret.svelte.d.ts","sourceRoot":"","sources":["../src/lib/NodeCaret.svelte.js"],"names":[],"mappings":";;;;;;;;AA4BA;;;;mBAAqH;6CATxE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,OAAO,OAAO,QAAQ;IAC3L,cAAc,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,WAAW,OAAO,SAAS;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,249 @@
1
+ <script>
2
+ /**
3
+ * Invisible keyboard caret selectable and gap hit area.
4
+ *
5
+ * Always present in the DOM when editable (stable structure for
6
+ * selection anchoring, scrollTo, etc.). Anchor positioning is
7
+ * activated lazily via the `positioned` prop — only gaps near the
8
+ * viewport pay the layout cost of anchor() resolution. Off-screen
9
+ * gaps are zero-size static elements with no layout cost.
10
+ *
11
+ * `position-visibility: anchors-visible` does NOT skip anchor
12
+ * resolution — the browser resolves all anchor() then hides the
13
+ * result. The `.positioned` class toggle is required to prevent
14
+ * O(N) anchor resolution on every layout pass.
15
+ *
16
+ * Row/column detection uses var(--row, 1) with the * 99999 multiplier
17
+ * trick — no @container style() queries, works in all browsers.
18
+ *
19
+ * Node.svelte does NOT set position: relative, so the selectable's
20
+ * containing block is a higher ancestor that contains all sibling
21
+ * nodes, making cross-sibling anchor references valid.
22
+ */
23
+ let { path, type, empty = false, last = false, positioned = true } = $props();
24
+
25
+ let gap_style = $derived.by(() => {
26
+ const p = path.join('-');
27
+ const arr = path.slice(0, -1).join('-');
28
+ const idx = parseInt(String(path.at(-1)), 10);
29
+ return `--_pa:--${p};--_next:--${arr}-${idx + 1};--_container:--${arr}`;
30
+ });
31
+
32
+ let anchor_name = $derived(`--g-${path.join('-')}-${type}`);
33
+ </script>
34
+
35
+ <div
36
+ class="node-gap {type}"
37
+ class:empty
38
+ class:last
39
+ class:positioned
40
+ data-type={type}
41
+ style={gap_style}
42
+ >
43
+ <div class="svedit-selectable" style="anchor-name:{anchor_name}"><br /></div>
44
+ </div>
45
+
46
+
47
+ <style>
48
+ .node-gap {
49
+ height: 0;
50
+ overflow: visible;
51
+ outline: none;
52
+ pointer-events: none;
53
+ caret-color: transparent;
54
+ }
55
+
56
+ /* ------------------------------------------------------------------ */
57
+ /* Un-positioned: minimal in-DOM presence, no anchor resolution */
58
+ /* ------------------------------------------------------------------ */
59
+
60
+ .node-gap:not(.positioned) .svedit-selectable {
61
+ content-visibility: hidden;
62
+ contain-intrinsic-size: 0 0;
63
+ position: static;
64
+ pointer-events: none;
65
+ width: 0;
66
+ height: 0;
67
+ overflow: clip;
68
+ }
69
+
70
+ /* ------------------------------------------------------------------ */
71
+ /* Positioned: full anchor layout */
72
+ /* ------------------------------------------------------------------ */
73
+
74
+ /*
75
+ * Anchor references resolved from CSS variable names passed via
76
+ * inline style (--_pa, --_next, --_container). Same pattern as
77
+ * NodeGapMarkers — keeps JS minimal and anchor() in CSS.
78
+ */
79
+ .node-gap.positioned {
80
+ --_s-t: anchor(var(--_pa) top);
81
+ --_s-b: anchor(var(--_pa) bottom);
82
+ --_s-l: anchor(var(--_pa) left);
83
+ --_s-r: anchor(var(--_pa) right);
84
+ }
85
+ .positioned.gap-after:not(.last) {
86
+ --_n-t: anchor(var(--_next) top);
87
+ --_n-l: anchor(var(--_next) left);
88
+ --_c-r: anchor(var(--_container) right);
89
+ }
90
+ .positioned.gap-after.last,
91
+ .positioned.gap-before.empty {
92
+ --_c-t: anchor(var(--_container) top);
93
+ --_c-b: anchor(var(--_container) bottom);
94
+ --_c-l: anchor(var(--_container) left);
95
+ --_c-r: anchor(var(--_container) right);
96
+ }
97
+
98
+ .positioned .svedit-selectable {
99
+ --_eg: var(--node-caret-edge-gap, 24px);
100
+ --_gm: var(--node-caret-gap-min-size, 16px);
101
+ --_R: var(--row, 1);
102
+ --_C: calc(1 - var(--row, 1));
103
+ user-select: none;
104
+ pointer-events: auto;
105
+ position: absolute;
106
+ position-anchor: var(--_pa);
107
+ position-visibility: anchors-visible;
108
+ z-index: var(--node-caret-gap-z-index, 1);
109
+ cursor: pointer;
110
+ }
111
+
112
+ /* ------------------------------------------------------------------ */
113
+ /* Merged column / row layout positioning */
114
+ /* */
115
+ /* Uses var(--row, 1) with the * 99999 multiplier trick: */
116
+ /* --_R = var(--row, 1) → 1 in row, 0 in column */
117
+ /* --_C = calc(1 - var(--row, 1))→ 1 in column, 0 in row */
118
+ /* Inside min(), + var(--_R) * 99999px disables a col branch in row, */
119
+ /* + var(--_C) * 99999px disables a row branch in column. */
120
+ /* ------------------------------------------------------------------ */
121
+
122
+ /* Between two siblings: col centers vertically, row centers horizontally */
123
+ .positioned.gap-after:not(.last) .svedit-selectable {
124
+ --_mid: calc((var(--_s-b) + var(--_n-t)) / 2 - var(--_gm) / 2);
125
+ top: min(
126
+ calc(var(--_s-b) + var(--_R) * 99999px),
127
+ calc(var(--_mid) + var(--_R) * 99999px),
128
+ calc(var(--_s-t) + var(--_C) * 99999px)
129
+ );
130
+ bottom: min(
131
+ calc(var(--_n-t) + var(--_R) * 99999px),
132
+ calc(var(--_mid) + var(--_R) * 99999px),
133
+ calc(var(--_s-b) + var(--_C) * 99999px)
134
+ );
135
+ left: min(
136
+ calc(var(--_s-l) + var(--_R) * 99999px),
137
+ calc(var(--_s-r) + var(--_C) * 99999px),
138
+ calc(
139
+ (var(--_s-r) + var(--_n-l)) / 2
140
+ - var(--_gm) / 2
141
+ + max(0px, var(--_s-r) - var(--_n-l)) * 999
142
+ + var(--_C) * 99999px
143
+ ),
144
+ calc(100% - var(--_eg) + var(--_C) * 99999px)
145
+ );
146
+ right: min(
147
+ calc(var(--_s-r) + var(--_R) * 99999px),
148
+ calc(
149
+ max(
150
+ 0px,
151
+ min(
152
+ var(--_n-l),
153
+ calc(
154
+ (var(--_s-r) + var(--_n-l)) / 2
155
+ - var(--_gm) / 2
156
+ ),
157
+ max(
158
+ min(
159
+ calc(var(--_c-r) - var(--_eg)),
160
+ calc(var(--_s-r) - var(--_eg))
161
+ ),
162
+ calc(
163
+ var(--_s-r)
164
+ - (var(--_n-l) - var(--_s-r)) * 999
165
+ )
166
+ )
167
+ )
168
+ )
169
+ + var(--_C) * 99999px
170
+ )
171
+ );
172
+ min-height: calc(var(--_gm) * var(--_C));
173
+ min-width: calc(var(--_gm) * var(--_R));
174
+ }
175
+
176
+ /* After last node: col extends down, row extends right */
177
+ .positioned.gap-after.last .svedit-selectable {
178
+ top: min(
179
+ calc(var(--_s-b) + var(--_R) * 99999px),
180
+ calc(var(--_s-t) + var(--_C) * 99999px)
181
+ );
182
+ bottom: min(
183
+ calc(var(--_s-b) - var(--_eg) + var(--_R) * 99999px),
184
+ calc(var(--_s-b) + var(--_C) * 99999px)
185
+ );
186
+ left: min(
187
+ calc(var(--_s-l) + var(--_R) * 99999px),
188
+ calc(var(--_s-r) + var(--_C) * 99999px),
189
+ calc(100% - var(--_eg) + var(--_C) * 99999px)
190
+ );
191
+ right: min(
192
+ calc(var(--_s-r) + var(--_R) * 99999px),
193
+ calc(
194
+ max(
195
+ 0px,
196
+ min(
197
+ calc(var(--_c-r) - var(--_eg)),
198
+ calc(var(--_s-r) - var(--_eg))
199
+ )
200
+ )
201
+ + var(--_C) * 99999px
202
+ )
203
+ );
204
+ min-height: calc(var(--_eg) * var(--_C));
205
+ min-width: calc(var(--_eg) * var(--_R));
206
+ }
207
+
208
+ /* Before first node: col extends up, row extends left */
209
+ .positioned.gap-before:not(.empty) .svedit-selectable {
210
+ top: min(
211
+ calc(
212
+ max(0px, var(--_s-t) - var(--_eg))
213
+ + var(--_R) * 99999px
214
+ ),
215
+ calc(var(--_s-t) + var(--_C) * 99999px)
216
+ );
217
+ bottom: min(
218
+ calc(var(--_s-t) + var(--_R) * 99999px),
219
+ calc(var(--_s-b) + var(--_C) * 99999px)
220
+ );
221
+ left: min(
222
+ calc(var(--_s-l) + var(--_R) * 99999px),
223
+ calc(
224
+ max(0px, var(--_s-l) - var(--_eg))
225
+ + var(--_C) * 99999px
226
+ )
227
+ );
228
+ right: min(
229
+ calc(var(--_s-r) + var(--_R) * 99999px),
230
+ calc(var(--_s-l) + var(--_C) * 99999px)
231
+ );
232
+ min-height: calc(var(--_eg) * var(--_C));
233
+ min-width: calc(var(--_eg) * var(--_R));
234
+ }
235
+
236
+ /* Empty array: spans the outermost edges of placeholder and container. */
237
+ .positioned.gap-before.empty .svedit-selectable {
238
+ top: min(var(--_s-t), var(--_c-t));
239
+ bottom: min(var(--_s-b), var(--_c-b));
240
+ left: min(var(--_s-l), var(--_c-l));
241
+ right: min(var(--_s-r), var(--_c-r));
242
+ }
243
+
244
+ /* Debugging styles */
245
+ /* .positioned .svedit-selectable {
246
+ outline: 0.1px solid rgba(238, 0, 255, 0.5);
247
+ outline-offset: -0.5px;
248
+ } */
249
+ </style>
@@ -0,0 +1,20 @@
1
+ export default NodeGap;
2
+ type NodeGap = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<$$ComponentProps>): void;
5
+ };
6
+ declare const NodeGap: import("svelte").Component<{
7
+ path: any;
8
+ type: any;
9
+ empty?: boolean;
10
+ last?: boolean;
11
+ positioned?: boolean;
12
+ }, {}, "">;
13
+ type $$ComponentProps = {
14
+ path: any;
15
+ type: any;
16
+ empty?: boolean;
17
+ last?: boolean;
18
+ positioned?: boolean;
19
+ };
20
+ //# sourceMappingURL=NodeGap.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeGap.svelte.d.ts","sourceRoot":"","sources":["../src/lib/NodeGap.svelte.js"],"names":[],"mappings":";;;;;AA8CA;UArB0B,GAAG;UAAQ,GAAG;YAAU,OAAO;WAAS,OAAO;iBAAe,OAAO;WAqBzC;wBArBpC;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE"}