@jackuait/blok 0.23.1 → 0.23.2
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/README.md +3 -1
- package/dist/blok.cjs +1 -1
- package/dist/blok.iife.js +1 -1
- package/dist/blok.mjs +2 -2
- package/dist/blok.umd.js +1 -1
- package/dist/chunks/{blok-Ci1zCOUg.cjs → blok-9mk1DbT_.cjs} +1 -1
- package/dist/chunks/{blok-BPeM6wKv.mjs → blok-Cm1FH7mi.mjs} +1 -1
- package/dist/chunks/{constants-DR3sya6U.mjs → constants-BTnQPoO-.mjs} +1 -1
- package/dist/chunks/{constants-Bkncy0y5.cjs → constants-CrepXIds.cjs} +1 -1
- package/dist/chunks/{tools-B72rczVw.mjs → tools-CJIl8RiU.mjs} +1 -1
- package/dist/chunks/{tools-DlOZpcVU.cjs → tools-ZtOAeoEZ.cjs} +1 -1
- package/dist/full.cjs +1 -1
- package/dist/full.mjs +3 -3
- package/dist/react.cjs +1 -1
- package/dist/react.mjs +1 -1
- package/dist/tools.cjs +1 -1
- package/dist/tools.mjs +2 -2
- package/package.json +1 -1
- package/src/react/BlokEditor.tsx +10 -1
- package/types/react.d.ts +11 -2
package/dist/full.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./chunks/blok-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./chunks/blok-9mk1DbT_.cjs`),t=require(`./chunks/constants-CrepXIds.cjs`),n=require(`./chunks/objectSpread2-iNkE6aJh.cjs`),r=require(`./chunks/tools-ZtOAeoEZ.cjs`);var i={paragraph:{class:r.k,inlineToolbar:!0,config:{preserveBlank:!0}},header:{class:r.O,inlineToolbar:!0},list:{class:r.D,inlineToolbar:!0}},a=n.t(n.t({},i),{},{bold:{class:r.l},italic:{class:r.c},marker:{class:r.o},underline:{class:r.a},strikethrough:{class:r.i},link:{class:r.s}});exports.Blok=e.t,exports.Bold=r.l,exports.DATA_ATTR=t.ja,exports.Header=r.O,exports.Italic=r.c,exports.Link=r.s,exports.List=r.D,exports.Marker=r.o,exports.Paragraph=r.k,exports.Strikethrough=r.i,exports.Toggle=r.T,exports.Underline=r.a,exports.allTools=a,exports.defaultBlockTools=r.t,exports.defaultInlineTools=r.n,exports.defaultTools=i,exports.version=e.n;
|
package/dist/full.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { n as e, t } from "./chunks/blok-
|
|
2
|
-
import { ja as n } from "./chunks/constants-
|
|
1
|
+
import { n as e, t } from "./chunks/blok-Cm1FH7mi.mjs";
|
|
2
|
+
import { ja as n } from "./chunks/constants-BTnQPoO-.mjs";
|
|
3
3
|
import { t as r } from "./chunks/objectSpread2-jlBcdYeb.mjs";
|
|
4
|
-
import { D as i, O as a, T as o, a as s, c, i as l, k as u, l as d, n as f, o as p, s as m, t as h } from "./chunks/tools-
|
|
4
|
+
import { D as i, O as a, T as o, a as s, c, i as l, k as u, l as d, n as f, o as p, s as m, t as h } from "./chunks/tools-CJIl8RiU.mjs";
|
|
5
5
|
//#region src/full.ts
|
|
6
6
|
var g = {
|
|
7
7
|
paragraph: {
|
package/dist/react.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunks/chunk-BL1yB9zm.cjs`);const e=require(`./chunks/blok-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunks/chunk-BL1yB9zm.cjs`);const e=require(`./chunks/blok-9mk1DbT_.cjs`),t=require(`./chunks/objectSpread2-iNkE6aJh.cjs`);let n=require(`react`),r=require(`react/jsx-runtime`);var i=new WeakMap;function a(e,t){i.set(e,t)}function o(e){return i.get(e)}function s(e){i.delete(e)}function c(r,i){let[o,c]=(0,n.useState)(null),u=(0,n.useRef)(r);u.current=r;let d=(0,n.useRef)({editor:null,holder:null,destroyTimeout:null,isDestroyed:!1,depsToken:null}),f=(0,n.useMemo)(()=>({}),i==null?[]:i);(0,n.useEffect)(()=>{if(typeof window>`u`)return;let n=d.current;if(n.destroyTimeout!==null&&(clearTimeout(n.destroyTimeout),n.destroyTimeout=null),n.editor!==null&&!n.isDestroyed&&n.depsToken===f)return c(n.editor),()=>{l(n,c)};if(n.editor!==null&&!n.isDestroyed){s(n.editor);try{n.editor.destroy()}catch(e){}n.editor=null,n.holder=null,n.isDestroyed=!0,c(null)}let r=document.createElement(`div`);n.holder=r,n.isDestroyed=!1,n.depsToken=f;let i=u.current,o=new e.t(t.t(t.t({},i),{},{holder:r,onReady:()=>{var e,t;(e=(t=u.current).onReady)==null||e.call(t)},onChange:(...e)=>{var t,n;(t=(n=u.current).onChange)==null||t.call(n,...e)}}));return n.editor=o,a(o,r),o.isReady.then(()=>{n.editor===o&&!n.isDestroyed&&c(o)}).catch(()=>{if(n.editor===o&&!n.isDestroyed){s(o);try{o.destroy()}catch(e){}n.editor=null,n.holder=null,n.isDestroyed=!0,c(null)}}),()=>{l(n,c)}},[f]);let{readOnly:p}=r;(0,n.useEffect)(()=>{o!==null&&o.readOnly.set(p==null?!1:p)},[o,p]);let{autofocus:m}=r;(0,n.useEffect)(()=>{o===null||!m||o.focus()},[o,m]);let{theme:h}=r;(0,n.useEffect)(()=>{o===null||h===void 0||o.theme.set(h)},[o,h]);let{width:g}=r;(0,n.useEffect)(()=>{o===null||g===void 0||o.width.set(g)},[o,g]);let{placeholder:_}=r;return(0,n.useEffect)(()=>{o===null||_===void 0||o.placeholder.set(_)},[o,_]),o}function l(e,t){e.destroyTimeout=setTimeout(()=>{if(e.editor!==null){s(e.editor);try{e.editor.destroy()}catch(e){}e.editor=null,e.holder=null,e.isDestroyed=!0,e.destroyTimeout=null,t(null)}},0)}var u=[`editor`],d=(0,n.forwardRef)(function(i,a){let{editor:s}=i,c=e.i(i,u),l=(0,n.useRef)(null);return(0,n.useEffect)(()=>{if(s===null||l.current===null)return;let e=o(s);if(e!==void 0)return l.current.appendChild(e),()=>{e.remove()}},[s]),(0,r.jsx)(`div`,t.t({ref:e=>{if(l.current=e,typeof a==`function`)a(e);else if(a!=null){let t=a;t.current=e}}},c))}),f=`autofocus.defaultBlock.dataModel.placeholder.sanitizer.hideToolbar.maxHistoryLength.historyDebounceTime.newGroupDelay.globalUndoRedo.tools.data.minHeight.logLevel.readOnly.i18n.linkPaste.onReady.onChange.inlineToolbar.tunes.style.theme.onThemeChange.scrollToBlock.user.resolveUser.notifierPosition.notifier.width`.split(`.`),p=[`deps`,`onReady`],m=new Set(f),h=(0,n.forwardRef)(function(i,a){let{deps:o,onReady:s}=i,l=e.i(i,p),u={},f={};for(let e of Object.keys(l)){let t=l[e];m.has(e)?u[e]=t:f[e]=t}let h=c(u,o);(0,n.useImperativeHandle)(a,()=>h,[h]);let g=(0,n.useRef)(s);return g.current=s,(0,n.useEffect)(()=>{if(h!==null){var e;(e=g.current)==null||e.call(g,h)}},[h]),(0,r.jsx)(d,t.t({editor:h},f))});exports.BlokContent=d,exports.BlokEditor=h,exports.useBlok=c;
|
package/dist/react.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as e, t } from "./chunks/blok-
|
|
1
|
+
import { i as e, t } from "./chunks/blok-Cm1FH7mi.mjs";
|
|
2
2
|
import { t as n } from "./chunks/objectSpread2-jlBcdYeb.mjs";
|
|
3
3
|
import { forwardRef as r, useEffect as i, useImperativeHandle as a, useMemo as o, useRef as s, useState as c } from "react";
|
|
4
4
|
import { jsx as l } from "react/jsx-runtime";
|
package/dist/tools.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./chunks/constants-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./chunks/constants-CrepXIds.cjs`),t=require(`./chunks/tools-ZtOAeoEZ.cjs`);exports.Audio=t.g,exports.Bold=t.l,exports.Bookmark=t.u,exports.Callout=t.w,exports.Code=t.y,exports.Column=t.p,exports.ColumnList=t.m,exports.Columns=t.f,exports.Convert=e.m,exports.Database=t.C,exports.DatabaseRow=t.S,exports.Divider=t.x,exports.Embed=t.d,exports.File=t._,exports.Header=t.O,exports.Image=t.v,exports.InlineCode=t.r,exports.Italic=t.c,exports.Link=t.s,exports.List=t.D,exports.Marker=t.o,exports.Paragraph=t.k,exports.Quote=t.b,exports.Strikethrough=t.i,exports.Table=t.E,exports.Toggle=t.T,exports.Underline=t.a,exports.Video=t.h,exports.defaultBlockTools=t.t,exports.defaultInlineTools=t.n;
|
package/dist/tools.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { m as e } from "./chunks/constants-
|
|
2
|
-
import { C as t, D as n, E as r, O as i, S as a, T as o, _ as s, a as c, b as l, c as u, d, f, g as p, h as m, i as h, k as g, l as _, m as v, n as y, o as b, p as x, r as S, s as C, t as w, u as T, v as E, w as D, x as O, y as k } from "./chunks/tools-
|
|
1
|
+
import { m as e } from "./chunks/constants-BTnQPoO-.mjs";
|
|
2
|
+
import { C as t, D as n, E as r, O as i, S as a, T as o, _ as s, a as c, b as l, c as u, d, f, g as p, h as m, i as h, k as g, l as _, m as v, n as y, o as b, p as x, r as S, s as C, t as w, u as T, v as E, w as D, x as O, y as k } from "./chunks/tools-CJIl8RiU.mjs";
|
|
3
3
|
export { p as Audio, _ as Bold, T as Bookmark, D as Callout, k as Code, x as Column, v as ColumnList, f as Columns, e as Convert, t as Database, a as DatabaseRow, O as Divider, d as Embed, s as File, i as Header, E as Image, S as InlineCode, u as Italic, C as Link, n as List, b as Marker, g as Paragraph, l as Quote, h as Strikethrough, r as Table, o as Toggle, c as Underline, m as Video, w as defaultBlockTools, y as defaultInlineTools };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jackuait/blok",
|
|
3
|
-
"version": "0.23.
|
|
3
|
+
"version": "0.23.2",
|
|
4
4
|
"description": "Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch",
|
|
5
5
|
"module": "dist/blok.mjs",
|
|
6
6
|
"main": "./dist/blok.cjs",
|
package/src/react/BlokEditor.tsx
CHANGED
|
@@ -28,7 +28,11 @@ import type { UseBlokConfig } from './types';
|
|
|
28
28
|
export interface BlokEditorProps
|
|
29
29
|
extends Omit<UseBlokConfig, 'onReady'>,
|
|
30
30
|
Omit<HTMLAttributes<HTMLDivElement>, 'style' | 'onChange'> {
|
|
31
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* When any value changes, the editor is destroyed and recreated. Keep each
|
|
33
|
+
* value referentially stable (primitives or useMemo-stable objects) — a dep
|
|
34
|
+
* whose identity changes every render recreates the editor each time.
|
|
35
|
+
*/
|
|
32
36
|
deps?: DependencyList;
|
|
33
37
|
/** Test id forwarded to the editor container element (via data-testid). */
|
|
34
38
|
'data-testid'?: string;
|
|
@@ -46,6 +50,11 @@ const CONFIG_KEY_SET = new Set<string>(USE_BLOK_CONFIG_KEYS);
|
|
|
46
50
|
* The recommended way to embed Blok in React. Internally wires `useBlok` and
|
|
47
51
|
* `BlokContent`, and forwards a ref to the live `Blok` instance.
|
|
48
52
|
*
|
|
53
|
+
* Don't wrap this component in `styled()` or any HOC that reserves the `theme`
|
|
54
|
+
* prop — styled-components claims `theme` for its own `ThemeProvider`, so it
|
|
55
|
+
* never reaches the editor and theme sync silently breaks. Render it directly
|
|
56
|
+
* and style the container via `className`.
|
|
57
|
+
*
|
|
49
58
|
* @example
|
|
50
59
|
* ```tsx
|
|
51
60
|
* const ref = useRef<Blok | null>(null);
|
package/types/react.d.ts
CHANGED
|
@@ -34,7 +34,7 @@ export interface BlokContentProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
34
34
|
* React hook that creates and manages a Blok editor instance.
|
|
35
35
|
*
|
|
36
36
|
* @param config - Editor configuration (all BlokConfig props except `holder`)
|
|
37
|
-
* @param deps - Optional dependency array. When any dep changes, the editor is destroyed and recreated.
|
|
37
|
+
* @param deps - Optional dependency array. When any dep changes, the editor is destroyed and recreated. Keep each value referentially stable (primitives or useMemo-stable objects) so the editor isn't recreated every render.
|
|
38
38
|
* @returns The Blok editor instance, or null during SSR / before initialization.
|
|
39
39
|
*
|
|
40
40
|
* @example
|
|
@@ -72,7 +72,11 @@ export declare const BlokContent: React.ForwardRefExoticComponent<BlokContentPro
|
|
|
72
72
|
export interface BlokEditorProps
|
|
73
73
|
extends Omit<UseBlokConfig, 'onReady'>,
|
|
74
74
|
Omit<React.HTMLAttributes<HTMLDivElement>, 'style' | 'onChange'> {
|
|
75
|
-
/**
|
|
75
|
+
/**
|
|
76
|
+
* When any value changes, the editor is destroyed and recreated. Keep each
|
|
77
|
+
* value referentially stable (primitives or useMemo-stable objects) — a dep
|
|
78
|
+
* whose identity changes every render recreates the editor each time.
|
|
79
|
+
*/
|
|
76
80
|
deps?: React.DependencyList;
|
|
77
81
|
/** Test id forwarded to the editor container element (via data-testid). */
|
|
78
82
|
'data-testid'?: string;
|
|
@@ -84,6 +88,11 @@ export interface BlokEditorProps
|
|
|
84
88
|
* The recommended all-in-one React component. Wires useBlok + BlokContent and
|
|
85
89
|
* forwards a ref to the live Blok instance (null before the editor is ready).
|
|
86
90
|
*
|
|
91
|
+
* Don't wrap this component in `styled()` or any HOC that reserves the `theme`
|
|
92
|
+
* prop — styled-components claims `theme` for its own `ThemeProvider`, so it
|
|
93
|
+
* never reaches the editor and theme sync silently breaks. Render it directly
|
|
94
|
+
* and style the container via `className`.
|
|
95
|
+
*
|
|
87
96
|
* @example
|
|
88
97
|
* ```tsx
|
|
89
98
|
* const ref = useRef<Blok | null>(null);
|