@welshman/editor 0.0.9 → 0.0.11-pre.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 (60) hide show
  1. package/{dist → build/src}/extensions/BreakOrSubmit.js +2 -1
  2. package/build/src/extensions/BreakOrSubmit.js.map +1 -0
  3. package/{dist → build/src}/extensions/CodeInline.js +1 -0
  4. package/build/src/extensions/CodeInline.js.map +1 -0
  5. package/{dist → build/src}/extensions/Welshman.js +8 -9
  6. package/build/src/extensions/Welshman.js.map +1 -0
  7. package/{dist → build/src}/extensions/WordCount.js +1 -0
  8. package/build/src/extensions/WordCount.js.map +1 -0
  9. package/{dist → build/src}/extensions/index.js +1 -0
  10. package/build/src/extensions/index.js.map +1 -0
  11. package/build/src/index.d.ts +4 -0
  12. package/build/src/index.js +5 -0
  13. package/build/src/index.js.map +1 -0
  14. package/build/src/nodeviews/Bolt11NodeView.d.ts +6 -0
  15. package/build/src/nodeviews/Bolt11NodeView.js +15 -0
  16. package/build/src/nodeviews/Bolt11NodeView.js.map +1 -0
  17. package/build/src/nodeviews/EventNodeView.d.ts +6 -0
  18. package/build/src/nodeviews/EventNodeView.js +16 -0
  19. package/build/src/nodeviews/EventNodeView.js.map +1 -0
  20. package/build/src/nodeviews/MediaNodeView.d.ts +7 -0
  21. package/build/src/nodeviews/MediaNodeView.js +27 -0
  22. package/build/src/nodeviews/MediaNodeView.js.map +1 -0
  23. package/build/src/nodeviews/MentionNodeView.d.ts +6 -0
  24. package/build/src/nodeviews/MentionNodeView.js +15 -0
  25. package/build/src/nodeviews/MentionNodeView.js.map +1 -0
  26. package/build/src/nodeviews/index.d.ts +4 -0
  27. package/build/src/nodeviews/index.js +5 -0
  28. package/build/src/nodeviews/index.js.map +1 -0
  29. package/build/src/plugins/TippySuggestion.d.ts +49 -0
  30. package/build/src/plugins/TippySuggestion.js +205 -0
  31. package/build/src/plugins/TippySuggestion.js.map +1 -0
  32. package/{dist → build/src}/plugins/index.js +1 -0
  33. package/build/src/plugins/index.js.map +1 -0
  34. package/build/tsconfig.tsbuildinfo +1 -0
  35. package/package.json +35 -67
  36. package/dist/components/EditBolt11.svelte +0 -10
  37. package/dist/components/EditBolt11.svelte.d.ts +0 -20
  38. package/dist/components/EditEvent.svelte +0 -11
  39. package/dist/components/EditEvent.svelte.d.ts +0 -20
  40. package/dist/components/EditMedia.svelte +0 -10
  41. package/dist/components/EditMedia.svelte.d.ts +0 -20
  42. package/dist/components/EditMention.svelte +0 -10
  43. package/dist/components/EditMention.svelte.d.ts +0 -20
  44. package/dist/components/SuggestionString.svelte +0 -4
  45. package/dist/components/SuggestionString.svelte.d.ts +0 -18
  46. package/dist/components/Suggestions.svelte +0 -71
  47. package/dist/components/Suggestions.svelte.d.ts +0 -41
  48. package/dist/components/index.d.ts +0 -6
  49. package/dist/components/index.js +0 -6
  50. package/dist/index.css +0 -105
  51. package/dist/index.d.ts +0 -4
  52. package/dist/index.js +0 -4
  53. package/dist/plugins/TippySuggestion.d.ts +0 -20
  54. package/dist/plugins/TippySuggestion.js +0 -98
  55. /package/{dist → build/src}/extensions/BreakOrSubmit.d.ts +0 -0
  56. /package/{dist → build/src}/extensions/CodeInline.d.ts +0 -0
  57. /package/{dist → build/src}/extensions/Welshman.d.ts +0 -0
  58. /package/{dist → build/src}/extensions/WordCount.d.ts +0 -0
  59. /package/{dist → build/src}/extensions/index.d.ts +0 -0
  60. /package/{dist → build/src}/plugins/index.d.ts +0 -0
@@ -1,18 +0,0 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- value: any;
5
- };
6
- events: {
7
- [evt: string]: CustomEvent<any>;
8
- };
9
- slots: {};
10
- exports?: {} | undefined;
11
- bindings?: string | undefined;
12
- };
13
- export type SuggestionStringProps = typeof __propDef.props;
14
- export type SuggestionStringEvents = typeof __propDef.events;
15
- export type SuggestionStringSlots = typeof __propDef.slots;
16
- export default class SuggestionString extends SvelteComponent<SuggestionStringProps, SuggestionStringEvents, SuggestionStringSlots> {
17
- }
18
- export {};
@@ -1,71 +0,0 @@
1
- <svelte:options accessors />
2
-
3
- <script>import { fly } from "svelte/transition";
4
- import { throttle, clamp } from "@welshman/lib";
5
- export let term;
6
- export let search;
7
- export let select;
8
- export let component;
9
- export let allowCreate = false;
10
- let index = 0;
11
- let element;
12
- let items = [];
13
- $: populateItems(term);
14
- const populateItems = throttle(300, (term2) => {
15
- items = $search(term2).slice(0, 5);
16
- });
17
- const setIndex = (newIndex, block) => {
18
- index = clamp([0, items.length - 1], newIndex);
19
- };
20
- export const onKeyDown = (e) => {
21
- if (["Enter", "Tab"].includes(e.code)) {
22
- const value = items[index];
23
- if (value) {
24
- select(value);
25
- return true;
26
- } else if (term && allowCreate) {
27
- select(term);
28
- return true;
29
- }
30
- }
31
- if (e.code === "Space" && term && allowCreate) {
32
- select(term);
33
- return true;
34
- }
35
- if (e.code === "ArrowUp") {
36
- setIndex(index - 1, "start");
37
- return true;
38
- }
39
- if (e.code === "ArrowDown") {
40
- setIndex(index + 1, "start");
41
- return true;
42
- }
43
- };
44
- </script>
45
-
46
- {#if term}
47
- <div bind:this={element} transition:fly|local={{duration: 200}} class="tiptap-suggestions">
48
- <div class="tiptap-suggestions__content">
49
- {#if term && allowCreate && !items.includes(term)}
50
- <button
51
- class="tiptap-suggestions__create"
52
- on:mousedown|preventDefault|stopPropagation
53
- on:click|preventDefault|stopPropagation={() => select(term)}>
54
- Use "<svelte:component this={component} value={term} />"
55
- </button>
56
- {/if}
57
- {#each items as value, i (value)}
58
- <button
59
- class="tiptap-suggestions__item"
60
- class:tiptap-suggestions__selected={index === i}
61
- on:mousedown|preventDefault|stopPropagation
62
- on:click|preventDefault|stopPropagation={() => select(value)}>
63
- <svelte:component this={component} {value} />
64
- </button>
65
- {/each}
66
- </div>
67
- {#if items.length === 0}
68
- <div class="tiptap-suggestions__empty">No results</div>
69
- {/if}
70
- </div>
71
- {/if}
@@ -1,41 +0,0 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- term: any;
5
- search: any;
6
- select: any;
7
- component: any;
8
- allowCreate?: boolean;
9
- onKeyDown?: (e: any) => true | undefined;
10
- };
11
- events: {
12
- mousedown: MouseEvent;
13
- } & {
14
- [evt: string]: CustomEvent<any>;
15
- };
16
- slots: {};
17
- exports?: {} | undefined;
18
- bindings?: string | undefined;
19
- };
20
- export type SuggestionsProps = typeof __propDef.props;
21
- export type SuggestionsEvents = typeof __propDef.events;
22
- export type SuggestionsSlots = typeof __propDef.slots;
23
- export default class Suggestions extends SvelteComponent<SuggestionsProps, SuggestionsEvents, SuggestionsSlots> {
24
- get onKeyDown(): (e: any) => true | undefined;
25
- get term(): any;
26
- /**accessor*/
27
- set term(_: any);
28
- get search(): any;
29
- /**accessor*/
30
- set search(_: any);
31
- get select(): any;
32
- /**accessor*/
33
- set select(_: any);
34
- get component(): any;
35
- /**accessor*/
36
- set component(_: any);
37
- get allowCreate(): boolean | undefined;
38
- /**accessor*/
39
- set allowCreate(_: boolean | undefined);
40
- }
41
- export {};
@@ -1,6 +0,0 @@
1
- export { default as Suggestions } from "./Suggestions.svelte";
2
- export { default as SuggestionString } from "./SuggestionString.svelte";
3
- export { default as EditBolt11 } from "./EditBolt11.svelte";
4
- export { default as EditMedia } from "./EditMedia.svelte";
5
- export { default as EditEvent } from "./EditEvent.svelte";
6
- export { default as EditMention } from "./EditMention.svelte";
@@ -1,6 +0,0 @@
1
- export { default as Suggestions } from "./Suggestions.svelte";
2
- export { default as SuggestionString } from "./SuggestionString.svelte";
3
- export { default as EditBolt11 } from "./EditBolt11.svelte";
4
- export { default as EditMedia } from "./EditMedia.svelte";
5
- export { default as EditEvent } from "./EditEvent.svelte";
6
- export { default as EditMention } from "./EditMention.svelte";
package/dist/index.css DELETED
@@ -1,105 +0,0 @@
1
- :root {
2
- --tiptap-object-bg: #eee;
3
- --tiptap-object-fg: #111;
4
- --tiptap-active-bg: #ddd;
5
- --tiptap-active-fg: #111;
6
- }
7
-
8
- .tiptap {
9
- outline: none;
10
- min-height: 0;
11
- height: 100%;
12
- }
13
-
14
- .tiptap p.is-editor-empty:first-child::before {
15
- color: #adb5bd;
16
- content: attr(data-placeholder);
17
- float: left;
18
- height: 0;
19
- pointer-events: none;
20
- }
21
-
22
- .tiptap pre code {
23
- display: block;
24
- max-width: 100%;
25
- overflow: auto;
26
- padding: 0.25rem;
27
- background-color: var(--tiptap-object-bg);
28
- color: var(--tiptap-object-fg);
29
- }
30
-
31
- .tiptap .tiptap-object,
32
- .tiptap p code,
33
- .tiptap [tag] {
34
- max-width: 100%;
35
- overflow: hidden;
36
- text-overflow: ellipsis;
37
- white-space: nowrap;
38
- border-radius: 3px;
39
- padding: 0 0.25rem;
40
- background-color: var(--tiptap-object-bg);
41
- color: var(--tiptap-object-fg);
42
- }
43
-
44
- .tiptap .tiptap-active {
45
- background-color: var(--tiptap-active-bg);
46
- color: var(--tiptap-active-fg);
47
- }
48
-
49
- .tiptap .tiptap-uploading {
50
- animation: tiptapFileUpload 1.5s infinite;
51
- }
52
-
53
- .tiptap-suggestions {
54
- margin-top: 0.5rem;
55
- max-height: 350px;
56
- }
57
-
58
- .tiptap-suggestions__content {
59
- border-radius: 3px;
60
- box-shadow: 0px 5px 8px 0px rgba(0, 0, 0, 0.2);
61
- overflow-y: auto;
62
- overflow-x: hidden;
63
- }
64
-
65
- .tiptap-suggestions__create,
66
- .tiptap-suggestions__item {
67
- white-space: nowrap;
68
- display: block;
69
- width: 100%;
70
- min-width: 0px;
71
- cursor: pointer;
72
- overflow-x: hidden;
73
- text-overflow: ellipsis;
74
- padding: 0.5rem 1rem;
75
- text-align: left;
76
- transition-duration: 100ms;
77
- transition-property: color, background-color;
78
- background-color: var(--tiptap-object-bg);
79
- color: var(--tiptap-object-fg);
80
- }
81
-
82
- .tiptap-suggestions__selected,
83
- .tiptap-suggestions__create:hover,
84
- .tiptap-suggestions__item:hover {
85
- background-color: var(--tiptap-active-bg);
86
- color: var(--tiptap-active-fg);
87
- }
88
-
89
- .tiptap-suggestions__empty {
90
- display: flex;
91
- gap: 0.5rem;
92
- padding: 0.5rem 1rem;
93
- }
94
-
95
- @keyframes tiptapFileUpload {
96
- 0% {
97
- opacity: 0.2;
98
- }
99
- 50% {
100
- opacity: 1;
101
- }
102
- 100% {
103
- opacity: 0.2;
104
- }
105
- }
package/dist/index.d.ts DELETED
@@ -1,4 +0,0 @@
1
- import './index.css';
2
- export * from './components/index.js';
3
- export * from './extensions/index.js';
4
- export * from './plugins/index.js';
package/dist/index.js DELETED
@@ -1,4 +0,0 @@
1
- import './index.css';
2
- export * from './components/index.js';
3
- export * from './extensions/index.js';
4
- export * from './plugins/index.js';
@@ -1,20 +0,0 @@
1
- import type { ComponentType } from "svelte";
2
- import type { Readable } from "svelte/store";
3
- import type { Editor } from "svelte-tiptap";
4
- export type TippySuggestionOptions = {
5
- char: string;
6
- name: string;
7
- editor: Editor;
8
- search: Readable<(term: string) => string[]>;
9
- select: (value: string, props: any) => void;
10
- allowCreate?: boolean;
11
- wrapper?: ComponentType;
12
- component?: ComponentType;
13
- };
14
- export declare const TippySuggestion: ({ char, name, editor, search, select, allowCreate, wrapper, component, }: TippySuggestionOptions) => import("prosemirror-state").Plugin<any>;
15
- export type MentionSuggestionOptions = Partial<TippySuggestionOptions> & {
16
- editor: Editor;
17
- search: Readable<(term: string) => string[]>;
18
- getRelays: (pubkey: string) => string[];
19
- };
20
- export declare const MentionSuggestion: (options: MentionSuggestionOptions) => import("prosemirror-state").Plugin<any>;
@@ -1,98 +0,0 @@
1
- import tippy from "tippy.js";
2
- import { nprofileEncode } from "nostr-tools/nip19";
3
- import { PluginKey } from "@tiptap/pm/state";
4
- import Suggestion from "@tiptap/suggestion";
5
- import Suggestions from "../components/Suggestions.svelte";
6
- import SuggestionString from "../components/SuggestionString.svelte";
7
- export const TippySuggestion = ({ char, name, editor, search, select, allowCreate, wrapper = Suggestions, component = SuggestionString, }) => Suggestion({
8
- char,
9
- editor,
10
- pluginKey: new PluginKey(`suggest-${name}`),
11
- command: ({ editor, range, props }) => {
12
- // increase range.to by one when the next node is of type "text"
13
- // and starts with a space character
14
- const nodeAfter = editor.view.state.selection.$to.nodeAfter;
15
- const overrideSpace = nodeAfter?.text?.startsWith(" ");
16
- if (overrideSpace) {
17
- range.to += 1;
18
- }
19
- editor
20
- .chain()
21
- .focus()
22
- .insertContentAt(range, [
23
- { type: name, attrs: props },
24
- { type: "text", text: " " },
25
- ])
26
- .run();
27
- window.getSelection()?.collapseToEnd();
28
- },
29
- allow: ({ state, range }) => {
30
- const $from = state.doc.resolve(range.from);
31
- const type = state.schema.nodes[name];
32
- return !!$from.parent.type.contentMatch.matchType(type);
33
- },
34
- render: () => {
35
- let popover;
36
- let suggestions;
37
- const mapProps = (props) => ({
38
- term: props.query,
39
- search,
40
- component,
41
- allowCreate,
42
- select: (value) => select(value, props),
43
- });
44
- return {
45
- onStart: props => {
46
- const target = document.createElement("div");
47
- // @ts-ignore
48
- popover = tippy("body", {
49
- getReferenceClientRect: props.clientRect,
50
- appendTo: document.querySelector("dialog[open]") || document.body,
51
- content: target,
52
- showOnCreate: true,
53
- interactive: true,
54
- trigger: "manual",
55
- placement: "bottom-start",
56
- });
57
- if (!props.query)
58
- popover[0].hide();
59
- suggestions = new wrapper({ target, props: mapProps(props) });
60
- },
61
- onUpdate: props => {
62
- if (props.query) {
63
- popover[0].show();
64
- }
65
- else {
66
- popover[0].hide();
67
- }
68
- suggestions.$set(mapProps(props));
69
- if (props.clientRect) {
70
- popover[0].setProps({
71
- getReferenceClientRect: props.clientRect,
72
- });
73
- }
74
- },
75
- onKeyDown: props => {
76
- if (props.event.key === "Escape") {
77
- popover[0].hide();
78
- return true;
79
- }
80
- return Boolean(suggestions.onKeyDown?.(props.event));
81
- },
82
- onExit: () => {
83
- popover[0].destroy();
84
- suggestions.$destroy();
85
- },
86
- };
87
- },
88
- });
89
- export const MentionSuggestion = (options) => TippySuggestion({
90
- char: "@",
91
- name: "nprofile",
92
- select: (pubkey, props) => {
93
- const relays = options.getRelays(pubkey);
94
- const nprofile = nprofileEncode({ pubkey, relays });
95
- return props.command({ pubkey, relays, nprofile });
96
- },
97
- ...options,
98
- });
File without changes
File without changes
File without changes
File without changes
File without changes