@x33025/sveltely 0.1.9 → 0.1.11
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/dist/components/Library/ArticleEditor/ArticleBlockCode.svelte +21 -0
- package/dist/components/Library/ArticleEditor/ArticleBlockCode.svelte.d.ts +8 -0
- package/dist/components/Library/ArticleEditor/ArticleBlockDragControl.svelte +144 -0
- package/dist/components/Library/ArticleEditor/ArticleBlockDragControl.svelte.d.ts +14 -0
- package/dist/components/Library/ArticleEditor/ArticleBlockFAQ.svelte +47 -0
- package/dist/components/Library/ArticleEditor/ArticleBlockFAQ.svelte.d.ts +8 -0
- package/dist/components/Library/ArticleEditor/ArticleBlockFallback.svelte +79 -0
- package/dist/components/Library/ArticleEditor/ArticleBlockFallback.svelte.d.ts +15 -0
- package/dist/components/Library/ArticleEditor/ArticleBlockHeading.svelte +73 -0
- package/dist/components/Library/ArticleEditor/ArticleBlockHeading.svelte.d.ts +14 -0
- package/dist/components/Library/ArticleEditor/ArticleBlockImage.svelte +48 -0
- package/dist/components/Library/ArticleEditor/ArticleBlockImage.svelte.d.ts +9 -0
- package/dist/components/Library/ArticleEditor/ArticleBlockInsertControl.svelte +120 -0
- package/dist/components/Library/ArticleEditor/ArticleBlockInsertControl.svelte.d.ts +9 -0
- package/dist/components/Library/ArticleEditor/ArticleBlockList.svelte +114 -0
- package/dist/components/Library/ArticleEditor/ArticleBlockList.svelte.d.ts +15 -0
- package/dist/components/Library/ArticleEditor/ArticleBlockParagraph.svelte +79 -0
- package/dist/components/Library/ArticleEditor/ArticleBlockParagraph.svelte.d.ts +15 -0
- package/dist/components/Library/ArticleEditor/ArticleBlockShell.svelte +127 -0
- package/dist/components/Library/ArticleEditor/ArticleBlockShell.svelte.d.ts +22 -0
- package/dist/components/Library/ArticleEditor/ArticleBlockTable.svelte +274 -0
- package/dist/components/Library/ArticleEditor/ArticleBlockTable.svelte.d.ts +13 -0
- package/dist/components/Library/ArticleEditor/ArticleEditor.svelte +192 -0
- package/dist/components/Library/ArticleEditor/ArticleEditor.svelte.d.ts +39 -0
- package/dist/components/Library/ArticleEditor/ArticleEditorBody.svelte +328 -0
- package/dist/components/Library/ArticleEditor/ArticleEditorBody.svelte.d.ts +31 -0
- package/dist/components/Library/ArticleEditor/ArticleEditorHeader.svelte +57 -0
- package/dist/components/Library/ArticleEditor/ArticleEditorHeader.svelte.d.ts +11 -0
- package/dist/components/Library/ArticleEditor/ArticleImagePreview.svelte +71 -0
- package/dist/components/Library/ArticleEditor/ArticleImagePreview.svelte.d.ts +8 -0
- package/dist/components/Library/ArticleEditor/articleEditor.svelte.js +532 -0
- package/dist/components/Library/ArticleEditor/index.d.ts +18 -0
- package/dist/components/Library/ArticleEditor/index.js +16 -0
- package/dist/components/Library/ArticleEditor/types.d.ts +37 -0
- package/dist/components/Library/ArticleEditor/types.js +1 -0
- package/dist/components/Library/Floating/Floating.svelte +8 -8
- package/dist/components/Library/Grid/index.d.ts +1 -0
- package/dist/components/Library/Grid/index.js +1 -0
- package/dist/components/Library/Sheet/Sheet.svelte +1 -0
- package/dist/components/Library/TextEditor/TextEditor.svelte +90 -0
- package/dist/components/Library/TextEditor/TextEditor.svelte.d.ts +17 -0
- package/dist/components/Library/TextEditor/index.d.ts +1 -0
- package/dist/components/Library/TextEditor/index.js +1 -0
- package/dist/components/Local/ComponentGrid.svelte +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +3 -1
- package/dist/style/index.css +1 -0
- package/dist/style/layout.d.ts +2 -2
- package/dist/style/layout.js +2 -3
- package/dist/style/loader.d.ts +2 -2
- package/dist/style/loader.js +2 -3
- package/dist/style/surface.d.ts +2 -2
- package/dist/style/surface.js +2 -3
- package/dist/style.css +233 -0
- package/package.json +1 -1
- package/dist/components/Library/GridItem/index.d.ts +0 -1
- package/dist/components/Library/GridItem/index.js +0 -1
- /package/dist/components/Library/{GridItem → Grid}/GridItem.svelte +0 -0
- /package/dist/components/Library/{GridItem → Grid}/GridItem.svelte.d.ts +0 -0
|
@@ -303,7 +303,7 @@
|
|
|
303
303
|
}
|
|
304
304
|
}
|
|
305
305
|
|
|
306
|
-
function
|
|
306
|
+
function handleOutsidePointerDown(event: PointerEvent) {
|
|
307
307
|
if (!open) return;
|
|
308
308
|
if (isEventInFloatingTree(event)) return;
|
|
309
309
|
closePanel();
|
|
@@ -316,6 +316,7 @@
|
|
|
316
316
|
|
|
317
317
|
function handlePointerMove(event: MouseEvent) {
|
|
318
318
|
if (!closeOnPointerLeave) return;
|
|
319
|
+
if (!parentFloatingId) return;
|
|
319
320
|
if (!open || !triggerEl || !panelEl) return;
|
|
320
321
|
if (isEventInFloatingTree(event)) return;
|
|
321
322
|
if (hasOpenChild(floatingId)) return;
|
|
@@ -323,10 +324,10 @@
|
|
|
323
324
|
const pointer = { x: event.clientX, y: event.clientY };
|
|
324
325
|
const triggerRect = triggerEl.getBoundingClientRect();
|
|
325
326
|
const floatingRect = panelEl.getBoundingClientRect();
|
|
326
|
-
const safePolygon = getSafePolygon(triggerRect, floatingRect, resolvedAnchor);
|
|
327
327
|
|
|
328
328
|
if (isInsideRect(triggerRect, pointer.x, pointer.y)) return;
|
|
329
329
|
if (isInsideRect(floatingRect, pointer.x, pointer.y)) return;
|
|
330
|
+
const safePolygon = getSafePolygon(triggerRect, floatingRect, resolvedAnchor);
|
|
330
331
|
if (pointInPolygon(pointer, safePolygon)) return;
|
|
331
332
|
|
|
332
333
|
closePanel();
|
|
@@ -343,9 +344,11 @@
|
|
|
343
344
|
if (event.type === 'scroll' && isEventInFloatingTree(event)) return;
|
|
344
345
|
closePanel();
|
|
345
346
|
};
|
|
347
|
+
window.addEventListener('pointerdown', handleOutsidePointerDown, true);
|
|
346
348
|
window.addEventListener('scroll', handleWindowChange, true);
|
|
347
349
|
window.addEventListener('resize', handleWindowChange);
|
|
348
350
|
return () => {
|
|
351
|
+
window.removeEventListener('pointerdown', handleOutsidePointerDown, true);
|
|
349
352
|
window.removeEventListener('scroll', handleWindowChange, true);
|
|
350
353
|
window.removeEventListener('resize', handleWindowChange);
|
|
351
354
|
};
|
|
@@ -356,7 +359,8 @@
|
|
|
356
359
|
'--sveltely-floating-inset: var(--sveltely-inset);',
|
|
357
360
|
`top: ${panelCoords.top}px;`,
|
|
358
361
|
`left: ${panelCoords.left}px;`,
|
|
359
|
-
`transform: ${panelTransform}
|
|
362
|
+
`transform: ${panelTransform};`,
|
|
363
|
+
'box-shadow: var(--sveltely-shadow);'
|
|
360
364
|
];
|
|
361
365
|
if (computedPanelRadius) {
|
|
362
366
|
declarations.push(`border-radius: ${computedPanelRadius};`);
|
|
@@ -368,11 +372,7 @@
|
|
|
368
372
|
});
|
|
369
373
|
</script>
|
|
370
374
|
|
|
371
|
-
<svelte:window
|
|
372
|
-
onclick={handleOutsideClick}
|
|
373
|
-
onkeydown={handleEscape}
|
|
374
|
-
onmousemove={handlePointerMove}
|
|
375
|
-
/>
|
|
375
|
+
<svelte:window onkeydown={handleEscape} onmousemove={handlePointerMove} />
|
|
376
376
|
|
|
377
377
|
<div
|
|
378
378
|
bind:this={rootEl}
|
|
@@ -106,6 +106,7 @@
|
|
|
106
106
|
.sheet {
|
|
107
107
|
border-radius: var(--sveltely-border-radius);
|
|
108
108
|
background: var(--sveltely-background-color);
|
|
109
|
+
box-shadow: var(--sveltely-shadow);
|
|
109
110
|
padding: calc(var(--sveltely-padding-y) * 1.33) calc(var(--sveltely-padding-x) * 1.33);
|
|
110
111
|
}
|
|
111
112
|
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { textEditorStyle, type TextEditorProps } from '../../../style/text-editor';
|
|
3
|
+
|
|
4
|
+
type Props = {
|
|
5
|
+
value?: string;
|
|
6
|
+
rows?: number;
|
|
7
|
+
placeholder?: string;
|
|
8
|
+
spellcheck?: boolean;
|
|
9
|
+
autosize?: boolean;
|
|
10
|
+
className?: string;
|
|
11
|
+
onInput?: (event: Event) => void;
|
|
12
|
+
onKeyDown?: (event: KeyboardEvent) => void;
|
|
13
|
+
shouldFocus?: boolean;
|
|
14
|
+
focusPosition?: number | null;
|
|
15
|
+
onFocused?: () => void;
|
|
16
|
+
} & TextEditorProps;
|
|
17
|
+
|
|
18
|
+
let {
|
|
19
|
+
value = '',
|
|
20
|
+
rows = 1,
|
|
21
|
+
placeholder,
|
|
22
|
+
spellcheck,
|
|
23
|
+
autosize = false,
|
|
24
|
+
className = '',
|
|
25
|
+
onInput,
|
|
26
|
+
onKeyDown,
|
|
27
|
+
shouldFocus = false,
|
|
28
|
+
focusPosition = null,
|
|
29
|
+
onFocused,
|
|
30
|
+
textAlign
|
|
31
|
+
}: Props = $props();
|
|
32
|
+
|
|
33
|
+
let textarea: HTMLTextAreaElement | undefined;
|
|
34
|
+
const rootStyle = $derived(textEditorStyle({ textAlign }, 'text-editor'));
|
|
35
|
+
|
|
36
|
+
const resize = () => {
|
|
37
|
+
if (!autosize || !textarea) return;
|
|
38
|
+
textarea.style.height = 'auto';
|
|
39
|
+
textarea.style.height = `${textarea.scrollHeight}px`;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
$effect(() => {
|
|
43
|
+
value;
|
|
44
|
+
resize();
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
$effect(() => {
|
|
48
|
+
if (!shouldFocus || !textarea) return;
|
|
49
|
+
requestAnimationFrame(() => {
|
|
50
|
+
if (!textarea) return;
|
|
51
|
+
textarea.focus();
|
|
52
|
+
const position = focusPosition ?? textarea.value.length;
|
|
53
|
+
textarea.setSelectionRange(position, position);
|
|
54
|
+
onFocused?.();
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
</script>
|
|
58
|
+
|
|
59
|
+
<textarea
|
|
60
|
+
bind:this={textarea}
|
|
61
|
+
{value}
|
|
62
|
+
{rows}
|
|
63
|
+
{placeholder}
|
|
64
|
+
{spellcheck}
|
|
65
|
+
style={rootStyle}
|
|
66
|
+
oninput={(event) => {
|
|
67
|
+
resize();
|
|
68
|
+
onInput?.(event);
|
|
69
|
+
}}
|
|
70
|
+
onkeydown={(event) => onKeyDown?.(event)}
|
|
71
|
+
class={`text-editor ${className}`}
|
|
72
|
+
></textarea>
|
|
73
|
+
|
|
74
|
+
<style>
|
|
75
|
+
.text-editor {
|
|
76
|
+
width: 100%;
|
|
77
|
+
border: 0;
|
|
78
|
+
background: transparent;
|
|
79
|
+
color: inherit;
|
|
80
|
+
outline: none;
|
|
81
|
+
overflow: hidden;
|
|
82
|
+
padding: 0;
|
|
83
|
+
resize: none;
|
|
84
|
+
text-align: var(--text-editor-text-align, start);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.text-editor:where([rows='1']) {
|
|
88
|
+
min-height: 1lh;
|
|
89
|
+
}
|
|
90
|
+
</style>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type TextEditorProps } from '../../../style/text-editor';
|
|
2
|
+
type Props = {
|
|
3
|
+
value?: string;
|
|
4
|
+
rows?: number;
|
|
5
|
+
placeholder?: string;
|
|
6
|
+
spellcheck?: boolean;
|
|
7
|
+
autosize?: boolean;
|
|
8
|
+
className?: string;
|
|
9
|
+
onInput?: (event: Event) => void;
|
|
10
|
+
onKeyDown?: (event: KeyboardEvent) => void;
|
|
11
|
+
shouldFocus?: boolean;
|
|
12
|
+
focusPosition?: number | null;
|
|
13
|
+
onFocused?: () => void;
|
|
14
|
+
} & TextEditorProps;
|
|
15
|
+
declare const TextEditor: import("svelte").Component<Props, {}, "">;
|
|
16
|
+
type TextEditor = ReturnType<typeof TextEditor>;
|
|
17
|
+
export default TextEditor;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './TextEditor.svelte';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './TextEditor.svelte';
|
package/dist/index.d.ts
CHANGED
|
@@ -16,11 +16,12 @@ export type { ScrollAxisValue } from './style/scroll';
|
|
|
16
16
|
export { TextAlignment, TextFieldType, TextInputMode } from './style/text-editor';
|
|
17
17
|
export type { TextAlignmentValue, TextEditorProps, TextFieldTypeValue, TextInputModeValue } from './style/text-editor';
|
|
18
18
|
export { default as AnimatedNumber } from './components/Library/AnimatedNumber';
|
|
19
|
+
export * from './components/Library/ArticleEditor';
|
|
19
20
|
export { default as Button } from './components/Library/Button';
|
|
20
21
|
export { default as Checkbox } from './components/Library/Checkbox';
|
|
21
22
|
export { default as GlowEffect } from './components/Library/GlowEffect';
|
|
22
23
|
export { default as Grid } from './components/Library/Grid';
|
|
23
|
-
export {
|
|
24
|
+
export { GridItem } from './components/Library/Grid';
|
|
24
25
|
export { default as HStack } from './components/Library/HStack';
|
|
25
26
|
export { default as Image } from './components/Library/Image';
|
|
26
27
|
export { default as ImageMask } from './components/Library/ImageMask';
|
|
@@ -41,6 +42,7 @@ export { default as Sheet } from './components/Library/Sheet';
|
|
|
41
42
|
export { default as Spacer } from './components/Library/Spacer';
|
|
42
43
|
export { default as Spinner } from './components/Library/Spinner';
|
|
43
44
|
export { default as TextShimmer } from './components/Library/TextShimmer';
|
|
45
|
+
export { default as TextEditor } from './components/Library/TextEditor';
|
|
44
46
|
export { default as TextField } from './components/Library/TextField';
|
|
45
47
|
export { default as Popover } from './components/Library/Popover';
|
|
46
48
|
export { default as ChipInput } from './components/Library/ChipInput';
|
package/dist/index.js
CHANGED
|
@@ -8,11 +8,12 @@ export { ImageFit, ImageLoading } from './style/media';
|
|
|
8
8
|
export { ScrollAxis } from './style/scroll';
|
|
9
9
|
export { TextAlignment, TextFieldType, TextInputMode } from './style/text-editor';
|
|
10
10
|
export { default as AnimatedNumber } from './components/Library/AnimatedNumber';
|
|
11
|
+
export * from './components/Library/ArticleEditor';
|
|
11
12
|
export { default as Button } from './components/Library/Button';
|
|
12
13
|
export { default as Checkbox } from './components/Library/Checkbox';
|
|
13
14
|
export { default as GlowEffect } from './components/Library/GlowEffect';
|
|
14
15
|
export { default as Grid } from './components/Library/Grid';
|
|
15
|
-
export {
|
|
16
|
+
export { GridItem } from './components/Library/Grid';
|
|
16
17
|
export { default as HStack } from './components/Library/HStack';
|
|
17
18
|
export { default as Image } from './components/Library/Image';
|
|
18
19
|
export { default as ImageMask } from './components/Library/ImageMask';
|
|
@@ -32,6 +33,7 @@ export { default as Sheet } from './components/Library/Sheet';
|
|
|
32
33
|
export { default as Spacer } from './components/Library/Spacer';
|
|
33
34
|
export { default as Spinner } from './components/Library/Spinner';
|
|
34
35
|
export { default as TextShimmer } from './components/Library/TextShimmer';
|
|
36
|
+
export { default as TextEditor } from './components/Library/TextEditor';
|
|
35
37
|
export { default as TextField } from './components/Library/TextField';
|
|
36
38
|
export { default as Popover } from './components/Library/Popover';
|
|
37
39
|
export { default as ChipInput } from './components/Library/ChipInput';
|
package/dist/style/index.css
CHANGED
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
--sveltely-hover-color: color-mix(in oklab, var(--sveltely-active-color) 5%, transparent);
|
|
21
21
|
--sveltely-inactive-hover-color: color-mix(in oklab, var(--sveltely-inactive-color) 88%, white);
|
|
22
22
|
--sveltely-active-hover-color: color-mix(in oklab, var(--sveltely-active-color) 88%, white);
|
|
23
|
+
--sveltely-shadow: 0 16px 40px rgb(0 0 0 / 0.12), 0 4px 14px rgb(0 0 0 / 0.08);
|
|
23
24
|
--sveltely-border-radius-nested: clamp(
|
|
24
25
|
0px,
|
|
25
26
|
calc(var(--sveltely-border-radius) - var(--sveltely-nested-inset)),
|
package/dist/style/layout.d.ts
CHANGED
|
@@ -39,9 +39,9 @@ export type LayoutProps = {
|
|
|
39
39
|
align?: LayoutAlignment;
|
|
40
40
|
justify?: LayoutJustification;
|
|
41
41
|
};
|
|
42
|
-
export declare const extractLayoutProps: <T extends Record<
|
|
42
|
+
export declare const extractLayoutProps: <T extends Record<string, unknown>>(props: T) => {
|
|
43
43
|
layoutProps: Partial<LayoutProps>;
|
|
44
|
-
restProps: Record<
|
|
44
|
+
restProps: Record<string, unknown>;
|
|
45
45
|
};
|
|
46
46
|
export declare const layoutStyle: (styles?: LayoutProps) => string;
|
|
47
47
|
export {};
|
package/dist/style/layout.js
CHANGED
|
@@ -69,9 +69,8 @@ const justifyValues = {
|
|
|
69
69
|
export const extractLayoutProps = (props) => {
|
|
70
70
|
const layoutProps = {};
|
|
71
71
|
const restProps = {};
|
|
72
|
-
for (const key of
|
|
73
|
-
|
|
74
|
-
if (typeof key === 'string' && LAYOUT_PROP_KEYS.has(key)) {
|
|
72
|
+
for (const [key, value] of Object.entries(props)) {
|
|
73
|
+
if (LAYOUT_PROP_KEYS.has(key)) {
|
|
75
74
|
layoutProps[key] = value;
|
|
76
75
|
continue;
|
|
77
76
|
}
|
package/dist/style/loader.d.ts
CHANGED
|
@@ -2,8 +2,8 @@ import type { LoaderOptions } from '../actions/loader';
|
|
|
2
2
|
export type LoaderProps = {
|
|
3
3
|
loader?: LoaderOptions;
|
|
4
4
|
};
|
|
5
|
-
export declare const extractLoaderProps: <T extends Record<
|
|
5
|
+
export declare const extractLoaderProps: <T extends Record<string, unknown>>(props: T) => {
|
|
6
6
|
loaderProps: LoaderProps;
|
|
7
|
-
restProps: Record<
|
|
7
|
+
restProps: Record<string, unknown>;
|
|
8
8
|
};
|
|
9
9
|
export declare const resolveLoaderOptions: (props?: LoaderProps) => LoaderOptions;
|
package/dist/style/loader.js
CHANGED
|
@@ -2,9 +2,8 @@ const LOADER_PROP_KEYS = new Set(['loader']);
|
|
|
2
2
|
export const extractLoaderProps = (props) => {
|
|
3
3
|
const loaderProps = {};
|
|
4
4
|
const restProps = {};
|
|
5
|
-
for (const key of
|
|
6
|
-
|
|
7
|
-
if (typeof key === 'string' && LOADER_PROP_KEYS.has(key)) {
|
|
5
|
+
for (const [key, value] of Object.entries(props)) {
|
|
6
|
+
if (LOADER_PROP_KEYS.has(key)) {
|
|
8
7
|
loaderProps[key] = value;
|
|
9
8
|
continue;
|
|
10
9
|
}
|
package/dist/style/surface.d.ts
CHANGED
|
@@ -10,8 +10,8 @@ export type StyleProps = {
|
|
|
10
10
|
color?: string;
|
|
11
11
|
};
|
|
12
12
|
export type SurfaceStyles = StyleProps;
|
|
13
|
-
export declare const extractStyleProps: <T extends Record<
|
|
13
|
+
export declare const extractStyleProps: <T extends Record<string, unknown>>(props: T) => {
|
|
14
14
|
styleProps: Partial<StyleProps>;
|
|
15
|
-
restProps: Record<
|
|
15
|
+
restProps: Record<string, unknown>;
|
|
16
16
|
};
|
|
17
17
|
export declare const surfaceStyle: (styles?: SurfaceStyles, prefix?: string) => string;
|
package/dist/style/surface.js
CHANGED
|
@@ -19,9 +19,8 @@ const pushVar = (declarations, name, value) => {
|
|
|
19
19
|
export const extractStyleProps = (props) => {
|
|
20
20
|
const styleProps = {};
|
|
21
21
|
const restProps = {};
|
|
22
|
-
for (const key of
|
|
23
|
-
|
|
24
|
-
if (typeof key === 'string' && STYLE_PROP_KEYS.has(key)) {
|
|
22
|
+
for (const [key, value] of Object.entries(props)) {
|
|
23
|
+
if (STYLE_PROP_KEYS.has(key)) {
|
|
25
24
|
styleProps[key] = value;
|
|
26
25
|
continue;
|
|
27
26
|
}
|