From 2f48954ace0711fe109a635af5643a4b13cf9278 Mon Sep 17 00:00:00 2001 From: Vitaly Koiro Date: Sat, 17 May 2025 14:08:00 +0300 Subject: [PATCH 1/2] feat(types): TypeScript module typing --- CHANGELOG.md | 8 ++ package.json | 2 +- src/copy/package.json | 5 +- src/types/modules/effectsModule.d.ts | 172 +++++++++++++++++++++++++++ src/types/modules/index.d.ts | 15 +++ src/types/options.d.ts | 144 ---------------------- 6 files changed, 200 insertions(+), 146 deletions(-) create mode 100644 src/types/modules/effectsModule.d.ts create mode 100644 src/types/modules/index.d.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index cb12fd1..d3a5680 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +## 4.1.3 - Released on 2025-05-17 + +### Features + +- Added TypeScript module typing + +
+ ## 4.1.2 - Released on 2025-05-17 ### Fixes diff --git a/package.json b/package.json index eb815a9..a3dadbb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "prismium-src", - "version": "4.1.2", + "version": "4.1.3", "description": "A modern JavaScript accordion library with smooth animations. Easily integrates with React, Vue, and vanilla JavaScript.", "type": "module", "scripts": { diff --git a/src/copy/package.json b/src/copy/package.json index 98e5237..f8e9f2e 100644 --- a/src/copy/package.json +++ b/src/copy/package.json @@ -38,7 +38,10 @@ "./theme/ocean": "./themes/ocean.css", "./theme/sunset": "./themes/sunset.css", - "./modules": "./modules/index.mjs", + "./modules": { + "types": "./types/modules/index.d.ts", + "import": "./modules/index.mjs" + }, "./react": { "types": "./types/react.d.ts", diff --git a/src/types/modules/effectsModule.d.ts b/src/types/modules/effectsModule.d.ts new file mode 100644 index 0000000..ad72a38 --- /dev/null +++ b/src/types/modules/effectsModule.d.ts @@ -0,0 +1,172 @@ +import { PrismiumEffect, PrismiumModule } from '../index'; +import Prismium from '../core'; + +/** + * Options for the EffectsModule + */ +export interface EffectsModuleOptions { + /** + * Animation effect type + */ + effect?: PrismiumEffect; + + /** + * Animation effect selectors + */ + effectSelectors?: string | string[]; + + /** + * Animation effect ignore selectors + */ + effectIgnore?: string | string[]; + + /** + * Animation effect line by line + */ + effectLineByLine?: { + speed?: number; + easing?: string; + delay?: number; + scale?: number; + y?: number | string; + x?: number | string; + opacity?: number; + }; + + /** + * Animation effect fade scale + */ + effectFadeScale?: { + speed?: number; + easing?: string; + scale?: number; + opacity?: number; + }; + + /** + * Animation effect slide + */ + effectSlide?: { + speed?: number; + easing?: string; + directions?: 'up' | 'down' | 'left' | 'right'; + distance?: number | string; + opacity?: number; + }; + + /** + * Animation effect stagger + */ + effectStagger?: { + speed?: number; + easing?: string; + delay?: number; + directions?: Array<'up' | 'right' | 'down' | 'left'>; + distance?: number | string; + opacity?: number; + }; + + /** + * Animation effect wave + */ + effectWave?: { + speed?: number; + easing?: string; + delay?: number; + amplitude?: string | number; + frequency?: number; + opacity?: number; + }; + + /** + * Animation effect flip + */ + effectFlip?: { + speed?: number; + easing?: string; + delay?: number; + perspective?: number | string; + rotation?: number | string; + opacity?: number; + }; + + /** + * Animation effect zoom + */ + effectZoom?: { + speed?: number; + easing?: string; + delay?: number; + scale?: number; + opacity?: number; + origins?: string[]; + }; + + /** + * Animation effect cascade + */ + effectCascade?: { + speed?: number; + easing?: string; + delay?: number; + rotation?: number; + distance?: number | string; + opacity?: number; + }; + + /** + * Animation effect custom + */ + effectCustom?: { + speed?: number; + delay?: number; + setup?: ( + prismium: Prismium, + child: HTMLElement, + index: number, + total: number, + isOpening: boolean + ) => void; + open?: ( + prismium: Prismium, + child: HTMLElement, + index: number, + total: number + ) => void; + close?: ( + prismium: Prismium, + child: HTMLElement, + index: number, + total: number + ) => void; + cleanup?: ( + prismium: Prismium, + child: HTMLElement, + index: number, + total: number, + isOpening: boolean + ) => void; + }; +} + +/** + * Effects module for Prismium + * Adds animation effects to accordion content + */ +export interface EffectsModule extends PrismiumModule { + /** + * Module name + */ + name: 'effects'; + + /** + * Default options for effects + */ + defaultOptions: EffectsModuleOptions; + + /** + * Install the effects module + * @param instance - The Prismium instance + */ + install(instance: Prismium): void; +} diff --git a/src/types/modules/index.d.ts b/src/types/modules/index.d.ts new file mode 100644 index 0000000..41fa2c2 --- /dev/null +++ b/src/types/modules/index.d.ts @@ -0,0 +1,15 @@ +/** + * Type definitions for Prismium modules + */ + +import { EffectsModule } from './effectsModule'; + +/** + * Export all modules types + */ +export { EffectsModule }; + +/** + * Type for the EffectsModule export + */ +export declare const EffectsModule: EffectsModule; diff --git a/src/types/options.d.ts b/src/types/options.d.ts index 6217b37..1f9caa8 100644 --- a/src/types/options.d.ts +++ b/src/types/options.d.ts @@ -2,7 +2,6 @@ import { PrismiumEventCallback, PrismiumEventListeners, PrismiumTheme, - PrismiumEffect, } from './index'; import Prismium from './core'; @@ -133,149 +132,6 @@ export interface PrismiumOptions { */ disabledClass?: string; - /** - * Animation effect type - */ - effect?: PrismiumEffect; - - /** - * Animation effect selectors - */ - effectSelectors?: string | string[]; - - /** - * Animation effect ignore selectors - */ - effectIgnore?: string | string[]; - - /** - * Animation effect line by line - */ - effectLineByLine?: { - speed?: number; - easing?: string; - delay?: number; - scale?: number; - y?: number | string; - x?: number | string; - opacity?: number; - }; - - /** - * Animation effect fade scale - */ - effectFadeScale?: { - speed?: number; - easing?: string; - scale?: number; - opacity?: number; - }; - - /** - * Animation effect slide - */ - effectSlide?: { - speed?: number; - easing?: string; - directions?: 'up' | 'down' | 'left' | 'right'; - distance?: number | string; - opacity?: number; - }; - - /** - * Animation effect stagger - */ - effectStagger?: { - speed?: number; - easing?: string; - delay?: number; - directions?: Array<'up' | 'right' | 'down' | 'left'>; - distance?: number | string; - opacity?: number; - }; - - /** - * Animation effect wave - */ - effectWave?: { - speed?: number; - easing?: string; - delay?: number; - amplitude?: string | number; - frequency?: number; - opacity?: number; - }; - - /** - * Animation effect flip - */ - effectFlip?: { - speed?: number; - easing?: string; - delay?: number; - perspective?: number | string; - rotation?: number | string; - opacity?: number; - }; - - /** - * Animation effect zoom - */ - effectZoom?: { - speed?: number; - easing?: string; - delay?: number; - scale?: number; - opacity?: number; - origins?: string[]; - }; - - /** - * Animation effect cascade - */ - effectCascade?: { - speed?: number; - easing?: string; - delay?: number; - rotation?: number; - distance?: number | string; - opacity?: number; - }; - - /** - * Animation effect custom - */ - effectCustom?: { - speed?: number; - delay?: number; - setup?: ( - prismium: Prismium, - child: HTMLElement, - index: number, - total: number, - isOpening: boolean - ) => void; - open?: ( - prismium: Prismium, - child: HTMLElement, - index: number, - total: number - ) => void; - close?: ( - prismium: Prismium, - child: HTMLElement, - index: number, - total: number - ) => void; - cleanup?: ( - prismium: Prismium, - child: HTMLElement, - index: number, - total: number, - isOpening: boolean - ) => void; - }; - /** * Event listeners */ From 127df40015c378de46ace9e8673d200352f09ba6 Mon Sep 17 00:00:00 2001 From: Vitaly Koiro Date: Sat, 17 May 2025 14:10:34 +0300 Subject: [PATCH 2/2] chore: package --- src/copy/package.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/copy/package.json b/src/copy/package.json index f8e9f2e..f4113c7 100644 --- a/src/copy/package.json +++ b/src/copy/package.json @@ -15,15 +15,18 @@ "vue": ["./types/vue.d.ts"] } }, + "exports": { ".": { "types": "./types/index.d.ts", "import": "./prismium-core.mjs" }, + "./bundle": { "types": "./types/index.d.ts", "import": "./prismium-bundle.mjs" }, + "./css": "./prismium.css", "./css/bundle": "./prismium-bundle.css", @@ -53,10 +56,12 @@ "import": "./vue/index.mjs" } }, + "repository": { "type": "git", "url": "git+https://github.com/koirodev/prismium.git" }, + "keywords": @keywords, "author": "@author", "license": "MIT",