Releases: Nowely/marked-input
Releases · Nowely/marked-input
v0.6.0
0.6.0 (2026-03-15)
Features
- blocks: add block merging via Backspace/Delete and TodoList story (#148) (0685033)
- blocks: Notion-like block editor with keyboard navigation, block operations, and drag-and-drop (#146) (4bd5534)
- drag: replace block mode with drag-and-drop row management (#149) (83034e8)
- storybook: add withPlainValue decorator and enhance drag/text stories (#151) (1d76c1f)
Refactoring
- storybook: standardize stories with PlainValuePanel and StoryObj types across React and Vue (#152) (42d21f3)
Miscellaneous
v0.5.0
0.5.0 (2026-03-07)
Features
Refactoring
- extract shared logic from framework adapters to core (#145) (795c0e8)
- improve Signal typing with interface augmentation for framework-specific use() return types (#143) (e6d4efc)
Miscellaneous
- migrate to pnpm catalog for centralized dependency management (#140) (b71cd55)
- update oxlint configuration (#144) (1db73ec)
Tests
v0.4.0
v0.3.0
markput: v0.2.0
0.1.0
v4.1.0
What's Changed
- Enhance ESLint configuration by @Nowely in #105
- Add SingleEditable experimental story by @Nowely in #106
- Add documentation website by @Nowely in #107
- Fix sidebar showing by @Nowely in #108
- Move integration tests into Storybook’s browser test harness by @Nowely in #109
- Simplify option API with mark/overlay props by @Nowely in #110
- Update minor dependencies by @Nowely in #111
- Refactor useMark hook and rename API properties by @Nowely in #112
Full Changelog: v4.0.0...v4.1.0
v4.0.0
Release Notes (v3.1.1 → v4.0.0)
🚨 Breaking Changes
1. Slots-Based Option Architecture (#103)
The Option interface has been completely refactored to use a slots-based pattern (similar to Material-UI).
Migration:
// Before
const options = [{
trigger: '@',
data: ['alice', 'bob', 'charlie'],
initMark: ({ value, meta }) => ({
label: value,
meta: meta
})
}]
// After
const options = [{
slotProps: {
mark: ({ value, meta }) => ({
label: value,
meta: meta
}),
overlay: {
trigger: '@',
data: ['alice', 'bob', 'charlie']
}
}
}]2. Framework-Agnostic Core Layer (#102)
Introduced separation between core and React-specific types.
Renamed:
MarkedInputProps.trigger→MarkedInputProps.showOverlayOnInnerOption→CoreOptionInnerMarkedInputProps→CoreMarkputPropsDEFAULT_TRIGGER→DEFAULT_OVERLAY_TRIGGER
Removed:
- Internal APIs removed from public exports
- React-specific code removed from core package
3. Slots API for Component Customization (#101)
New Slots API replaces children-based customization.
Migration:
// Before
<MarkedInput ...>
<div onKeyDown={handler} />
<span className="custom" />
</MarkedInput>
// After
<MarkedInput
slots={{ container: 'div', textSpan: 'span' }}
slotProps={{
container: { onKeyDown: handler },
textSpan: { className: 'custom' },
}}
/>4. ESM-Only Build (#99)
Removed CommonJS/UMD build formats. Package now distributed as ESM-only.
5. ParserV2 Migration (#98)
Markup Format Change:
// Before: @[__label__](__value__)
// After: @[__value__](__meta__)Mark Component Props:
// Before
const Mark = ({label, value}) => <mark title={value}>{label}</mark>
// After
const Mark = ({value, meta}) => <mark title={meta}>{value}</mark>✨ New Features
Nested Marks Support (#100)
- Tree-based token structure supporting arbitrary nesting depth
- Two-value patterns for HTML-like tag matching (e.g.,
<value>...</value>) - Enhanced
useMarkhook with nesting metadata (depth, parent, children) __nested__placeholder enables child mark parsing
Slots API (#101)
slotsprop for overriding internal componentsslotPropsprop for type-safe prop passing- Data attributes support with automatic camelCase to kebab-case conversion
Per-Option Component Overrides (#103)
slotsproperty in Option for per-option component customization
⚡ Performance Improvements
ParserV2 Rewrite (#96)
- Significant speed gains across all benchmark test cases
- Exceptional improvements on complex patterns (markdown-like content)
- Single-pass tree building with O(M) complexity
- Memory efficiency improvements with reduced allocations
- Optimized segment matching with dual strategy approach
Architecture Improvements
- Enhanced PatternMatcher with better conflict resolution
- Improved MarkupRegistry with segment deduplication and fast lookups
- Simplified structure and improved readability
🛠️ Infrastructure
CI/CD Improvements (#95)
- Added CI type checking, linting, and formatting
- npm registry setup in Publish workflow (#967f0c5)
- Enable deletion of unnecessary properties in package preparation (#d6d0980)
Dependency Updates (#97)
- Updated all project dependencies to latest versions
Code Quality
- Removed deprecated benchmark files (#94)
- Enhanced test coverage for contentEditable behavior and event handlers
- Comprehensive tests for slots functionality
📚 Documentation
- Updated README with Slots section and examples
- Added Storybook stories for nested marks
- Added Storybook stories for Slots API (
Slots.stories.tsx) - Full TypeScript JSDoc documentation
- Improved Store domain organization documentation
Migration Checklist
To upgrade from v3.1.1 to v4.0.0:
- Update all markup patterns:
__label__→__value__,__value__→__meta__ - Update Mark components: Change props from
{label, value}to{value, meta} - Migrate to slots-based Option API: Move
initMark,overlayTrigger,dataintoslotProps - Replace children-based customization with Slots API
- Update imports: Replace deprecated ParserV1 types with ParserV2 equivalents
- Ensure your build system supports ESM (no CommonJS support)
- Update renamed properties:
trigger→overlayTrigger/showOverlayOn - Review and update any usage of removed internal APIs
Full Changelog: v3.1.1...HEAD (13 commits)
What's Changed
- Add Nested Parser by @Nowely in #93
- Remove deprecated benchmark files by @Nowely in #94
- Add CI type checking, linting, formatting by @Nowely in #95
- Rewrite ParserV2 for performance and clarity improvements by @Nowely in #96
- Update dependencies by @Nowely in #97
- Migrate to ParserV2 by @Nowely in #98
- Convert build to ESM-only by @Nowely in #99
- Implement first nested marks support by @Nowely in #100
- Add Slots API for component customization by @Nowely in #101
- Refactor Option to adopt slots-based architecture by @Nowely in #103
Full Changelog: v3.1.1...v4.0.0
v3.1.1
v3.1.0
What's Changed
- Add support react 19
- Update storybook in #73
- Update deps in #74
- Minor improves in #75
- Update deps in #80
- Add benchmarks in #81
- Add preparcer in #82
- Added preparcer system and tests
- Optimize rerenders
- Add two way bindings to value
- Make the value prop optional
- Make the onChange prop optional
- Add the defaultValue prop
- Updated dependencies
- Improved focus management
- Updated editorconfig
- Update stories
- Refactors inner systems
- and more
- Add default feature in #83
- Fix functional regression in #84
- Update feature structure in #85
Full Changelog: v3.0.1...v3.1.0