@sprawlify/svelte 0.0.41 → 0.0.43

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/index.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export * from "./core";
2
+ export * from "./utils";
package/dist/index.js CHANGED
@@ -1 +1,2 @@
1
1
  export * from "./core";
2
+ export * from "./utils";
@@ -0,0 +1,15 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { HTMLAttributes, SvelteHTMLElements } from 'svelte/elements';
3
+ export type Assign<T, U> = Omit<T, keyof U> & U;
4
+ export type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
5
+ export type Accessor<T> = () => T;
6
+ export type HTMLTag = keyof SvelteHTMLElements;
7
+ export type PropsFn<T extends HTMLTag> = (props?: HTMLProps<T>) => HTMLAttributes<HTMLElement>;
8
+ export type HTMLProps<T extends HTMLTag> = SvelteHTMLElements[T];
9
+ export type PolymorphicProps<T extends HTMLTag> = {
10
+ children?: Snippet;
11
+ asChild?: Snippet<[PropsFn<T>]>;
12
+ };
13
+ export interface RefAttribute<T extends Element = Element> {
14
+ ref?: T | null | undefined;
15
+ }
package/dist/types.js ADDED
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,11 @@
1
+ interface CreateContextOptions<T> {
2
+ name?: string;
3
+ defaultValue?: T;
4
+ strict?: boolean;
5
+ hookName?: string;
6
+ providerName?: string;
7
+ errorMessage?: string;
8
+ }
9
+ type CreateContextReturn<T> = [(opts: T) => void, (fallback?: T) => T, symbol];
10
+ export declare const createContext: <T>(options: CreateContextOptions<T>) => CreateContextReturn<T>;
11
+ export {};
@@ -0,0 +1,16 @@
1
+ import { getContext, hasContext, setContext } from 'svelte';
2
+ function getErrorMessage(hook, provider) {
3
+ return `${hook} returned \`undefined\`. Seems you forgot to wrap component within ${provider}`;
4
+ }
5
+ export const createContext = (options) => {
6
+ const { name, strict = true, hookName = 'useContext', providerName = 'Provider', errorMessage, defaultValue, } = options;
7
+ const contextId = Symbol(name);
8
+ const provider = (value) => setContext(contextId, value);
9
+ const consumer = () => {
10
+ const exists = hasContext(contextId);
11
+ if (strict && !exists)
12
+ throw new Error(errorMessage ?? getErrorMessage(hookName, providerName));
13
+ return exists ? getContext(contextId) : defaultValue;
14
+ };
15
+ return [provider, consumer, contextId];
16
+ };
@@ -0,0 +1,3 @@
1
+ type EnsureKeys<ExpectedKeys extends (keyof Target)[], Target> = keyof Target extends ExpectedKeys[number] ? unknown : `Missing required keys: ${Exclude<keyof Target, ExpectedKeys[number]> & string}`;
2
+ export declare const createSplitProps: <Target>() => <Keys extends (keyof Target)[], Props extends Target = Target>(props: Props, keys: Keys & EnsureKeys<Keys, Target>) => [Target, Omit<Props, Extract<(Keys & EnsureKeys<Keys, Target>)[number], string>>];
3
+ export {};
@@ -0,0 +1,9 @@
1
+ export const createSplitProps = () => (props, keys) => keys.reduce((previousValue, currentValue) => {
2
+ const [target, source] = previousValue;
3
+ const key = currentValue;
4
+ if (source[key] !== undefined) {
5
+ target[key] = source[key];
6
+ }
7
+ delete source[key];
8
+ return [target, source];
9
+ }, [{}, { ...props }]);
@@ -0,0 +1 @@
1
+ export { createContext } from './create-context';
@@ -0,0 +1 @@
1
+ export { createContext } from './create-context';
@@ -0,0 +1,9 @@
1
+ import type { Accessor } from '../types';
2
+ export interface RenderStrategyProps {
3
+ lazyMount?: boolean;
4
+ unmountOnExit?: boolean;
5
+ }
6
+ export interface RenderStrategyContext extends Accessor<RenderStrategyProps> {
7
+ }
8
+ export declare const RenderStrategyPropsProvider: (opts: RenderStrategyContext) => void, useRenderStrategyPropsContext: (fallback?: RenderStrategyContext | undefined) => RenderStrategyContext;
9
+ export declare const splitRenderStrategyProps: <T extends RenderStrategyProps>(props: T) => [RenderStrategyProps, Omit<T, "lazyMount" | "unmountOnExit">];
@@ -0,0 +1,9 @@
1
+ import { createContext } from './create-context';
2
+ import { createSplitProps } from './create-split-props';
3
+ export const [RenderStrategyPropsProvider, useRenderStrategyPropsContext] = createContext({
4
+ name: 'RenderStrategyContext',
5
+ hookName: 'useRenderStrategyContext',
6
+ providerName: '<RenderStrategyPropsProvider />',
7
+ });
8
+ const splitFn = createSplitProps();
9
+ export const splitRenderStrategyProps = (props) => splitFn(props, ['lazyMount', 'unmountOnExit']);
@@ -0,0 +1,2 @@
1
+ export type AnyFunction<Arg = unknown, ReturnValue = unknown> = (...args: Arg[]) => ReturnValue;
2
+ export declare const runIfFn: <MaybeReturnValue, FunctionArgs>(valueOrFn: MaybeReturnValue | ((...fnArgs: FunctionArgs[]) => MaybeReturnValue), ...args: FunctionArgs[]) => MaybeReturnValue;
@@ -0,0 +1,4 @@
1
+ const isFunction = (value) => typeof value === 'function';
2
+ export const runIfFn = (valueOrFn, ...args) => isFunction(valueOrFn)
3
+ ? valueOrFn(...args)
4
+ : valueOrFn;
@@ -0,0 +1,5 @@
1
+ export declare const voidSVGTags: string[];
2
+ export declare const isVoidSVGTag: (tag: unknown) => boolean;
3
+ export declare const voidHTMLTags: string[];
4
+ export declare const isVoidHTMLTag: (tag: unknown) => boolean;
5
+ export declare const isVoidTag: (tag: unknown) => boolean;
@@ -0,0 +1,5 @@
1
+ export const voidSVGTags = ['path', 'rect', 'circle', 'ellipse', 'line', 'polygon', 'polyline'];
2
+ export const isVoidSVGTag = (tag) => typeof tag === 'string' && voidSVGTags.includes(tag);
3
+ export const voidHTMLTags = ['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link'];
4
+ export const isVoidHTMLTag = (tag) => typeof tag === 'string' && voidHTMLTags.includes(tag);
5
+ export const isVoidTag = (tag) => isVoidSVGTag(tag) || isVoidHTMLTag(tag);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sprawlify/svelte",
3
- "version": "0.0.41",
3
+ "version": "0.0.43",
4
4
  "type": "module",
5
5
  "description": "Svelte wrapper for primitives.",
6
6
  "author": "sprawlify <npm@sprawlify.com>",
@@ -20,7 +20,7 @@
20
20
  "access": "public"
21
21
  },
22
22
  "dependencies": {
23
- "@sprawlify/primitives": "0.0.41"
23
+ "@sprawlify/primitives": "0.0.43"
24
24
  },
25
25
  "peerDependencies": {
26
26
  "svelte": "^5.0.0"