@portabletext/editor 1.30.2 → 1.30.4
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/lib/_chunks-cjs/plugin.event-listener.cjs +47 -6
- package/lib/_chunks-cjs/plugin.event-listener.cjs.map +1 -1
- package/lib/_chunks-cjs/selector.is-at-the-start-of-block.cjs +11 -12
- package/lib/_chunks-cjs/selector.is-at-the-start-of-block.cjs.map +1 -1
- package/lib/_chunks-es/plugin.event-listener.js +47 -6
- package/lib/_chunks-es/plugin.event-listener.js.map +1 -1
- package/lib/_chunks-es/selector.is-at-the-start-of-block.js +11 -12
- package/lib/_chunks-es/selector.is-at-the-start-of-block.js.map +1 -1
- package/package.json +8 -8
- package/src/editor/PortableTextEditor.tsx +0 -1
- package/src/editor/sync-machine.ts +67 -8
- package/src/selectors/selector.get-selected-spans.test.ts +204 -106
- package/src/selectors/selector.get-selected-spans.ts +18 -12
- package/src/selectors/selector.is-active-annotation.ts +9 -2
|
@@ -29,7 +29,7 @@ const getSelectedSpans = ({
|
|
|
29
29
|
for (const child of block.children)
|
|
30
30
|
if (types.isPortableTextSpan(child)) {
|
|
31
31
|
if (startSpanKey && child._key === startSpanKey) {
|
|
32
|
-
if (selectedSpans.push({
|
|
32
|
+
if (startPoint.offset < child.text.length && selectedSpans.push({
|
|
33
33
|
node: child,
|
|
34
34
|
path: [{
|
|
35
35
|
_key: block._key
|
|
@@ -41,7 +41,7 @@ const getSelectedSpans = ({
|
|
|
41
41
|
continue;
|
|
42
42
|
}
|
|
43
43
|
if (endSpanKey && child._key === endSpanKey) {
|
|
44
|
-
selectedSpans.push({
|
|
44
|
+
endPoint.offset > 0 && selectedSpans.push({
|
|
45
45
|
node: child,
|
|
46
46
|
path: [{
|
|
47
47
|
_key: block._key
|
|
@@ -68,7 +68,7 @@ const getSelectedSpans = ({
|
|
|
68
68
|
for (const child of block.children)
|
|
69
69
|
if (types.isPortableTextSpan(child)) {
|
|
70
70
|
if (endSpanKey && child._key === endSpanKey) {
|
|
71
|
-
selectedSpans.push({
|
|
71
|
+
endPoint.offset > 0 && selectedSpans.push({
|
|
72
72
|
node: child,
|
|
73
73
|
path: [{
|
|
74
74
|
_key: block._key
|
|
@@ -323,12 +323,18 @@ const getSelectedSpans = ({
|
|
|
323
323
|
const firstStyle = firstTextBlock.style;
|
|
324
324
|
if (firstStyle && selectedTextBlocks.every((block) => block.style === firstStyle))
|
|
325
325
|
return firstStyle;
|
|
326
|
-
}
|
|
326
|
+
}, isSelectionCollapsed = ({
|
|
327
|
+
context
|
|
328
|
+
}) => context.selection ? JSON.stringify(context.selection.anchor.path) === JSON.stringify(context.selection.focus.path) && context.selection?.anchor.offset === context.selection?.focus.offset : !1, isSelectionExpanded = ({
|
|
329
|
+
context
|
|
330
|
+
}) => !isSelectionCollapsed({
|
|
331
|
+
context
|
|
332
|
+
});
|
|
327
333
|
function isActiveAnnotation(annotation) {
|
|
328
334
|
return (snapshot) => {
|
|
329
335
|
if (!snapshot.context.selection)
|
|
330
336
|
return !1;
|
|
331
|
-
const selectedBlocks = getSelectedBlocks(snapshot), selectedSpans = getSelectedSpans(snapshot);
|
|
337
|
+
const selectedBlocks = getSelectedBlocks(snapshot), focusSpan = getFocusSpan(snapshot), selectedSpans = isSelectionExpanded(snapshot) ? getSelectedSpans(snapshot) : focusSpan ? [focusSpan] : [];
|
|
332
338
|
if (selectedSpans.length === 0 || selectedSpans.some((span) => !span.node.marks || span.node.marks?.length === 0))
|
|
333
339
|
return !1;
|
|
334
340
|
const selectionMarkDefs = selectedBlocks.flatMap((block) => types.isPortableTextTextBlock(block.node) ? block.node.markDefs ?? [] : []);
|
|
@@ -338,13 +344,6 @@ function isActiveAnnotation(annotation) {
|
|
|
338
344
|
}) ?? []).includes(annotation));
|
|
339
345
|
};
|
|
340
346
|
}
|
|
341
|
-
const isSelectionCollapsed = ({
|
|
342
|
-
context
|
|
343
|
-
}) => context.selection ? JSON.stringify(context.selection.anchor.path) === JSON.stringify(context.selection.focus.path) && context.selection?.anchor.offset === context.selection?.focus.offset : !1, isSelectionExpanded = ({
|
|
344
|
-
context
|
|
345
|
-
}) => !isSelectionCollapsed({
|
|
346
|
-
context
|
|
347
|
-
});
|
|
348
347
|
function isActiveDecorator(decorator) {
|
|
349
348
|
return (snapshot) => {
|
|
350
349
|
if (isSelectionExpanded(snapshot)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selector.is-at-the-start-of-block.cjs","sources":["../../src/behavior-actions/behavior.guards.ts","../../src/selectors/selector.get-selected-spans.ts","../../src/selectors/selectors.ts","../../src/selectors/selector.get-active-list-item.ts","../../src/selectors/selector.get-active-style.ts","../../src/selectors/selector.is-active-annotation.ts","../../src/selectors/selector.is-selection-collapsed.ts","../../src/selectors/selector.is-selection-expanded.ts","../../src/selectors/selector.is-active-decorator.ts","../../src/selectors/selector.is-active-list-item.ts","../../src/selectors/selector.is-active-style.ts","../../src/selectors/selector.is-at-the-end-of-block.ts","../../src/selectors/selector.is-at-the-start-of-block.ts"],"sourcesContent":["import {\n isPortableTextListBlock,\n isPortableTextTextBlock,\n type PortableTextListBlock,\n type PortableTextTextBlock,\n} from '@sanity/types'\nimport type {EditorSchema} from '../editor/define-schema'\n\n/**\n * @alpha\n */\nexport type BehaviorGuards = ReturnType<typeof createGuards>\n\nexport function createGuards({schema}: {schema: EditorSchema}) {\n function isListBlock(block: unknown): block is PortableTextListBlock {\n return isPortableTextListBlock(block) && block._type === schema.block.name\n }\n\n function isTextBlock(block: unknown): block is PortableTextTextBlock {\n return isPortableTextTextBlock(block) && block._type === schema.block.name\n }\n\n return {isListBlock, isTextBlock}\n}\n","import {\n isKeySegment,\n isPortableTextSpan,\n isPortableTextTextBlock,\n type KeyedSegment,\n type PortableTextSpan,\n} from '@sanity/types'\nimport type {EditorSelector} from '../editor/editor-selector'\n\n/**\n * @public\n */\nexport const getSelectedSpans: EditorSelector<\n Array<{\n node: PortableTextSpan\n path: [KeyedSegment, 'children', KeyedSegment]\n }>\n> = ({context}) => {\n if (!context.selection) {\n return []\n }\n\n const selectedSpans: Array<{\n node: PortableTextSpan\n path: [KeyedSegment, 'children', KeyedSegment]\n }> = []\n\n const startPoint = context.selection.backward\n ? context.selection.focus\n : context.selection.anchor\n const endPoint = context.selection.backward\n ? context.selection.anchor\n : context.selection.focus\n\n const startBlockKey = isKeySegment(startPoint.path[0])\n ? startPoint.path[0]._key\n : undefined\n const endBlockKey = isKeySegment(endPoint.path[0])\n ? endPoint.path[0]._key\n : undefined\n\n if (!startBlockKey || !endBlockKey) {\n return selectedSpans\n }\n\n const startSpanKey = isKeySegment(startPoint.path[2])\n ? startPoint.path[2]._key\n : undefined\n const endSpanKey = isKeySegment(endPoint.path[2])\n ? endPoint.path[2]._key\n : undefined\n\n for (const block of context.value) {\n if (!isPortableTextTextBlock(block)) {\n continue\n }\n\n if (block._key === startBlockKey) {\n for (const child of block.children) {\n if (!isPortableTextSpan(child)) {\n continue\n }\n\n if (startSpanKey && child._key === startSpanKey) {\n selectedSpans.push({\n node: child,\n path: [{_key: block._key}, 'children', {_key: child._key}],\n })\n\n if (startSpanKey === endSpanKey) {\n break\n }\n\n continue\n }\n\n if (endSpanKey && child._key === endSpanKey) {\n selectedSpans.push({\n node: child,\n path: [{_key: block._key}, 'children', {_key: child._key}],\n })\n break\n }\n\n if (selectedSpans.length > 0) {\n selectedSpans.push({\n node: child,\n path: [{_key: block._key}, 'children', {_key: child._key}],\n })\n }\n }\n\n if (startBlockKey === endBlockKey) {\n break\n }\n\n continue\n }\n\n if (block._key === endBlockKey) {\n for (const child of block.children) {\n if (!isPortableTextSpan(child)) {\n continue\n }\n\n if (endSpanKey && child._key === endSpanKey) {\n selectedSpans.push({\n node: child,\n path: [{_key: block._key}, 'children', {_key: child._key}],\n })\n break\n }\n\n selectedSpans.push({\n node: child,\n path: [{_key: block._key}, 'children', {_key: child._key}],\n })\n }\n\n break\n }\n\n if (selectedSpans.length > 0) {\n for (const child of block.children) {\n if (!isPortableTextSpan(child)) {\n continue\n }\n\n selectedSpans.push({\n node: child,\n path: [{_key: block._key}, 'children', {_key: child._key}],\n })\n }\n }\n }\n\n return selectedSpans\n}\n","import {\n isKeySegment,\n isPortableTextSpan,\n isPortableTextTextBlock,\n type KeyedSegment,\n type PortableTextBlock,\n type PortableTextListBlock,\n type PortableTextObject,\n type PortableTextSpan,\n type PortableTextTextBlock,\n} from '@sanity/types'\nimport {createGuards} from '../behavior-actions/behavior.guards'\nimport type {EditorSelector} from '../editor/editor-selector'\n\n/**\n * @public\n */\nexport const getFocusBlock: EditorSelector<\n {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const key = context.selection\n ? isKeySegment(context.selection.focus.path[0])\n ? context.selection.focus.path[0]._key\n : undefined\n : undefined\n\n const node = key\n ? context.value.find((block) => block._key === key)\n : undefined\n\n return node && key ? {node, path: [{_key: key}]} : undefined\n}\n\n/**\n * @public\n */\nexport const getFocusListBlock: EditorSelector<\n {node: PortableTextListBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const guards = createGuards(context)\n const focusBlock = getFocusBlock({context})\n\n return focusBlock && guards.isListBlock(focusBlock.node)\n ? {node: focusBlock.node, path: focusBlock.path}\n : undefined\n}\n\n/**\n * @public\n */\nexport const getFocusTextBlock: EditorSelector<\n {node: PortableTextTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const focusBlock = getFocusBlock({context})\n\n return focusBlock && isPortableTextTextBlock(focusBlock.node)\n ? {node: focusBlock.node, path: focusBlock.path}\n : undefined\n}\n\n/**\n * @public\n */\nexport const getFocusBlockObject: EditorSelector<\n {node: PortableTextObject; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const focusBlock = getFocusBlock({context})\n\n return focusBlock && !isPortableTextTextBlock(focusBlock.node)\n ? {node: focusBlock.node, path: focusBlock.path}\n : undefined\n}\n\n/**\n * @public\n */\nexport const getFocusChild: EditorSelector<\n | {\n node: PortableTextObject | PortableTextSpan\n path: [KeyedSegment, 'children', KeyedSegment]\n }\n | undefined\n> = ({context}) => {\n const focusBlock = getFocusTextBlock({context})\n\n if (!focusBlock) {\n return undefined\n }\n\n const key = context.selection\n ? isKeySegment(context.selection.focus.path[2])\n ? context.selection.focus.path[2]._key\n : undefined\n : undefined\n\n const node = key\n ? focusBlock.node.children.find((span) => span._key === key)\n : undefined\n\n return node && key\n ? {node, path: [...focusBlock.path, 'children', {_key: key}]}\n : undefined\n}\n\n/**\n * @public\n */\nexport const getFocusSpan: EditorSelector<\n | {node: PortableTextSpan; path: [KeyedSegment, 'children', KeyedSegment]}\n | undefined\n> = ({context}) => {\n const focusChild = getFocusChild({context})\n\n return focusChild && isPortableTextSpan(focusChild.node)\n ? {node: focusChild.node, path: focusChild.path}\n : undefined\n}\n\n/**\n * @public\n */\nexport const getFirstBlock: EditorSelector<\n {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const node = context.value[0]\n\n return node ? {node, path: [{_key: node._key}]} : undefined\n}\n\n/**\n * @public\n */\nexport const getLastBlock: EditorSelector<\n {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const node = context.value[context.value.length - 1]\n ? context.value[context.value.length - 1]\n : undefined\n\n return node ? {node, path: [{_key: node._key}]} : undefined\n}\n\n/**\n * @public\n */\nexport const getSelectedBlocks: EditorSelector<\n Array<{node: PortableTextBlock; path: [KeyedSegment]}>\n> = ({context}) => {\n if (!context.selection) {\n return []\n }\n\n const selectedBlocks: Array<{node: PortableTextBlock; path: [KeyedSegment]}> =\n []\n const startKey = context.selection.backward\n ? isKeySegment(context.selection.focus.path[0])\n ? context.selection.focus.path[0]._key\n : undefined\n : isKeySegment(context.selection.anchor.path[0])\n ? context.selection.anchor.path[0]._key\n : undefined\n const endKey = context.selection.backward\n ? isKeySegment(context.selection.anchor.path[0])\n ? context.selection.anchor.path[0]._key\n : undefined\n : isKeySegment(context.selection.focus.path[0])\n ? context.selection.focus.path[0]._key\n : undefined\n\n if (!startKey || !endKey) {\n return selectedBlocks\n }\n\n for (const block of context.value) {\n if (block._key === startKey) {\n selectedBlocks.push({node: block, path: [{_key: block._key}]})\n\n if (startKey === endKey) {\n break\n }\n continue\n }\n\n if (block._key === endKey) {\n selectedBlocks.push({node: block, path: [{_key: block._key}]})\n break\n }\n\n if (selectedBlocks.length > 0) {\n selectedBlocks.push({node: block, path: [{_key: block._key}]})\n }\n }\n\n return selectedBlocks\n}\n\n/**\n * @public\n */\nexport const getSelectionStartBlock: EditorSelector<\n | {\n node: PortableTextBlock\n path: [KeyedSegment]\n }\n | undefined\n> = ({context}) => {\n if (!context.selection) {\n return undefined\n }\n\n const key = context.selection.backward\n ? isKeySegment(context.selection.focus.path[0])\n ? context.selection.focus.path[0]._key\n : undefined\n : isKeySegment(context.selection.anchor.path[0])\n ? context.selection.anchor.path[0]._key\n : undefined\n\n const node = key\n ? context.value.find((block) => block._key === key)\n : undefined\n\n return node && key ? {node, path: [{_key: key}]} : undefined\n}\n\n/**\n * @public\n */\nexport const getSelectionEndBlock: EditorSelector<\n | {\n node: PortableTextBlock\n path: [KeyedSegment]\n }\n | undefined\n> = ({context}) => {\n if (!context.selection) {\n return undefined\n }\n\n const key = context.selection.backward\n ? isKeySegment(context.selection.anchor.path[0])\n ? context.selection.anchor.path[0]._key\n : undefined\n : isKeySegment(context.selection.focus.path[0])\n ? context.selection.focus.path[0]._key\n : undefined\n\n const node = key\n ? context.value.find((block) => block._key === key)\n : undefined\n\n return node && key ? {node, path: [{_key: key}]} : undefined\n}\n\n/**\n * @public\n */\nexport const getPreviousBlock: EditorSelector<\n {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n let previousBlock: {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n const selectionStartBlock = getSelectionStartBlock({context})\n\n if (!selectionStartBlock) {\n return undefined\n }\n\n let foundSelectionStartBlock = false\n\n for (const block of context.value) {\n if (block._key === selectionStartBlock.node._key) {\n foundSelectionStartBlock = true\n break\n }\n\n previousBlock = {node: block, path: [{_key: block._key}]}\n }\n\n if (foundSelectionStartBlock && previousBlock) {\n return previousBlock\n }\n\n return undefined\n}\n\n/**\n * @public\n */\nexport const getNextBlock: EditorSelector<\n {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n let nextBlock: {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n const selectionEndBlock = getSelectionEndBlock({context})\n\n if (!selectionEndBlock) {\n return undefined\n }\n\n let foundSelectionEndBlock = false\n\n for (const block of context.value) {\n if (block._key === selectionEndBlock.node._key) {\n foundSelectionEndBlock = true\n continue\n }\n\n if (foundSelectionEndBlock) {\n nextBlock = {node: block, path: [{_key: block._key}]}\n break\n }\n }\n\n if (foundSelectionEndBlock && nextBlock) {\n return nextBlock\n }\n\n return undefined\n}\n","import type {PortableTextListBlock} from '@sanity/types'\nimport {createGuards} from '../behavior-actions/behavior.guards'\nimport type {EditorSelector} from '../editor/editor-selector'\nimport {getSelectedBlocks} from './selectors'\n\n/**\n * @public\n */\nexport const getActiveListItem: EditorSelector<\n PortableTextListBlock['listItem'] | undefined\n> = ({context}) => {\n if (!context.selection) {\n return undefined\n }\n\n const guards = createGuards(context)\n const selectedBlocks = getSelectedBlocks({context}).map((block) => block.node)\n const selectedTextBlocks = selectedBlocks.filter(guards.isTextBlock)\n\n const firstTextBlock = selectedTextBlocks.at(0)\n\n if (!firstTextBlock) {\n return undefined\n }\n\n const firstListItem = firstTextBlock.listItem\n\n if (!firstListItem) {\n return undefined\n }\n\n if (selectedTextBlocks.every((block) => block.listItem === firstListItem)) {\n return firstListItem\n }\n\n return undefined\n}\n","import type {PortableTextTextBlock} from '@sanity/types'\nimport {createGuards} from '../behavior-actions/behavior.guards'\nimport type {EditorSelector} from '../editor/editor-selector'\nimport {getSelectedBlocks} from './selectors'\n\n/**\n * @public\n */\nexport const getActiveStyle: EditorSelector<PortableTextTextBlock['style']> = ({\n context,\n}) => {\n if (!context.selection) {\n return undefined\n }\n\n const guards = createGuards(context)\n const selectedBlocks = getSelectedBlocks({context}).map((block) => block.node)\n const selectedTextBlocks = selectedBlocks.filter(guards.isTextBlock)\n\n const firstTextBlock = selectedTextBlocks.at(0)\n\n if (!firstTextBlock) {\n return undefined\n }\n\n const firstStyle = firstTextBlock.style\n\n if (!firstStyle) {\n return undefined\n }\n\n if (selectedTextBlocks.every((block) => block.style === firstStyle)) {\n return firstStyle\n }\n\n return undefined\n}\n","import {isPortableTextTextBlock} from '@sanity/types'\nimport type {EditorSelector} from '../editor/editor-selector'\nimport {getSelectedSpans} from './selector.get-selected-spans'\nimport {getSelectedBlocks} from './selectors'\n\n/**\n * @public\n */\nexport function isActiveAnnotation(\n annotation: string,\n): EditorSelector<boolean> {\n return (snapshot) => {\n if (!snapshot.context.selection) {\n return false\n }\n\n const selectedBlocks = getSelectedBlocks(snapshot)\n const selectedSpans = getSelectedSpans(snapshot)\n\n if (selectedSpans.length === 0) {\n return false\n }\n\n if (\n selectedSpans.some(\n (span) => !span.node.marks || span.node.marks?.length === 0,\n )\n ) {\n return false\n }\n\n const selectionMarkDefs = selectedBlocks.flatMap((block) =>\n isPortableTextTextBlock(block.node) ? (block.node.markDefs ?? []) : [],\n )\n\n return selectedSpans.every((span) => {\n const spanMarkDefs =\n span.node.marks?.flatMap((mark) => {\n const markDef = selectionMarkDefs.find(\n (markDef) => markDef._key === mark,\n )\n\n return markDef ? [markDef._type] : []\n }) ?? []\n\n return spanMarkDefs.includes(annotation)\n })\n }\n}\n","import type {EditorSelector} from '../editor/editor-selector'\n\n/**\n * @public\n */\nexport const isSelectionCollapsed: EditorSelector<boolean> = ({context}) => {\n if (!context.selection) {\n return false\n }\n\n return (\n JSON.stringify(context.selection.anchor.path) ===\n JSON.stringify(context.selection.focus.path) &&\n context.selection?.anchor.offset === context.selection?.focus.offset\n )\n}\n","import type {EditorSelector} from '../editor/editor-selector'\nimport {isSelectionCollapsed} from './selector.is-selection-collapsed'\n\n/**\n * @public\n */\nexport const isSelectionExpanded: EditorSelector<boolean> = ({context}) => {\n return !isSelectionCollapsed({context})\n}\n","import type {EditorSelector} from '../editor/editor-selector'\nimport {getSelectedSpans} from './selector.get-selected-spans'\nimport {isSelectionExpanded} from './selector.is-selection-expanded'\n\n/**\n * @public\n */\nexport function isActiveDecorator(decorator: string): EditorSelector<boolean> {\n return (snapshot) => {\n if (isSelectionExpanded(snapshot)) {\n const selectedSpans = getSelectedSpans(snapshot)\n\n return (\n selectedSpans.length > 0 &&\n selectedSpans.every((span) => span.node.marks?.includes(decorator))\n )\n }\n\n return snapshot.context.activeDecorators.includes(decorator)\n }\n}\n","import type {EditorSelector} from '../editor/editor-selector'\nimport {getActiveListItem} from './selector.get-active-list-item'\n\n/**\n * @public\n */\nexport function isActiveListItem(listItem: string): EditorSelector<boolean> {\n return (snapshot) => {\n const activeListItem = getActiveListItem(snapshot)\n\n return activeListItem === listItem\n }\n}\n","import type {EditorSelector} from '../editor/editor-selector'\nimport {getActiveStyle} from './selector.get-active-style'\n\n/**\n * @public\n */\nexport function isActiveStyle(style: string): EditorSelector<boolean> {\n return (snapshot) => {\n const activeStyle = getActiveStyle(snapshot)\n\n return activeStyle === style\n }\n}\n","import type {KeyedSegment, PortableTextBlock} from '@sanity/types'\nimport type {EditorSelector} from '../editor/editor-selector'\nimport * as utils from '../utils'\nimport {isSelectionCollapsed} from './selector.is-selection-collapsed'\n\n/**\n * @public\n */\nexport function isAtTheEndOfBlock(block: {\n node: PortableTextBlock\n path: [KeyedSegment]\n}): EditorSelector<boolean> {\n return ({context}) => {\n if (!context.selection || !isSelectionCollapsed({context})) {\n return false\n }\n\n const blockEndPoint = utils.getBlockEndPoint(block)\n\n return utils.isEqualSelectionPoints(context.selection.focus, blockEndPoint)\n }\n}\n","import type {KeyedSegment, PortableTextBlock} from '@sanity/types'\nimport type {EditorSelector} from '../editor/editor-selector'\nimport * as utils from '../utils'\nimport {isSelectionCollapsed} from './selector.is-selection-collapsed'\n\n/**\n * @public\n */\nexport function isAtTheStartOfBlock(block: {\n node: PortableTextBlock\n path: [KeyedSegment]\n}): EditorSelector<boolean> {\n return ({context}) => {\n if (!context.selection || !isSelectionCollapsed({context})) {\n return false\n }\n\n const blockStartPoint = utils.getBlockStartPoint(block)\n\n return utils.isEqualSelectionPoints(\n context.selection.focus,\n blockStartPoint,\n )\n }\n}\n"],"names":["createGuards","schema","isListBlock","block","isPortableTextListBlock","_type","name","isTextBlock","isPortableTextTextBlock","getSelectedSpans","context","selection","selectedSpans","startPoint","backward","focus","anchor","endPoint","startBlockKey","isKeySegment","path","_key","undefined","endBlockKey","startSpanKey","endSpanKey","value","child","children","isPortableTextSpan","push","node","length","getFocusBlock","key","find","getFocusListBlock","guards","focusBlock","getFocusTextBlock","getFocusBlockObject","getFocusChild","span","getFocusSpan","focusChild","getFirstBlock","getLastBlock","getSelectedBlocks","selectedBlocks","startKey","endKey","getSelectionStartBlock","getSelectionEndBlock","getPreviousBlock","previousBlock","selectionStartBlock","foundSelectionStartBlock","getNextBlock","nextBlock","selectionEndBlock","foundSelectionEndBlock","getActiveListItem","selectedTextBlocks","map","filter","firstTextBlock","at","firstListItem","listItem","every","getActiveStyle","firstStyle","style","isActiveAnnotation","annotation","snapshot","some","marks","selectionMarkDefs","flatMap","markDefs","mark","markDef","includes","isSelectionCollapsed","JSON","stringify","offset","isSelectionExpanded","isActiveDecorator","decorator","activeDecorators","isActiveListItem","isActiveStyle","isAtTheEndOfBlock","blockEndPoint","utils","getBlockEndPoint","isEqualSelectionPoints","isAtTheStartOfBlock","blockStartPoint","getBlockStartPoint"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"selector.is-at-the-start-of-block.cjs","sources":["../../src/behavior-actions/behavior.guards.ts","../../src/selectors/selector.get-selected-spans.ts","../../src/selectors/selectors.ts","../../src/selectors/selector.get-active-list-item.ts","../../src/selectors/selector.get-active-style.ts","../../src/selectors/selector.is-selection-collapsed.ts","../../src/selectors/selector.is-selection-expanded.ts","../../src/selectors/selector.is-active-annotation.ts","../../src/selectors/selector.is-active-decorator.ts","../../src/selectors/selector.is-active-list-item.ts","../../src/selectors/selector.is-active-style.ts","../../src/selectors/selector.is-at-the-end-of-block.ts","../../src/selectors/selector.is-at-the-start-of-block.ts"],"sourcesContent":["import {\n isPortableTextListBlock,\n isPortableTextTextBlock,\n type PortableTextListBlock,\n type PortableTextTextBlock,\n} from '@sanity/types'\nimport type {EditorSchema} from '../editor/define-schema'\n\n/**\n * @alpha\n */\nexport type BehaviorGuards = ReturnType<typeof createGuards>\n\nexport function createGuards({schema}: {schema: EditorSchema}) {\n function isListBlock(block: unknown): block is PortableTextListBlock {\n return isPortableTextListBlock(block) && block._type === schema.block.name\n }\n\n function isTextBlock(block: unknown): block is PortableTextTextBlock {\n return isPortableTextTextBlock(block) && block._type === schema.block.name\n }\n\n return {isListBlock, isTextBlock}\n}\n","import {\n isKeySegment,\n isPortableTextSpan,\n isPortableTextTextBlock,\n type KeyedSegment,\n type PortableTextSpan,\n} from '@sanity/types'\nimport type {EditorSelector} from '../editor/editor-selector'\n\n/**\n * @public\n */\nexport const getSelectedSpans: EditorSelector<\n Array<{\n node: PortableTextSpan\n path: [KeyedSegment, 'children', KeyedSegment]\n }>\n> = ({context}) => {\n if (!context.selection) {\n return []\n }\n\n const selectedSpans: Array<{\n node: PortableTextSpan\n path: [KeyedSegment, 'children', KeyedSegment]\n }> = []\n\n const startPoint = context.selection.backward\n ? context.selection.focus\n : context.selection.anchor\n const endPoint = context.selection.backward\n ? context.selection.anchor\n : context.selection.focus\n\n const startBlockKey = isKeySegment(startPoint.path[0])\n ? startPoint.path[0]._key\n : undefined\n const endBlockKey = isKeySegment(endPoint.path[0])\n ? endPoint.path[0]._key\n : undefined\n\n if (!startBlockKey || !endBlockKey) {\n return selectedSpans\n }\n\n const startSpanKey = isKeySegment(startPoint.path[2])\n ? startPoint.path[2]._key\n : undefined\n const endSpanKey = isKeySegment(endPoint.path[2])\n ? endPoint.path[2]._key\n : undefined\n\n for (const block of context.value) {\n if (!isPortableTextTextBlock(block)) {\n continue\n }\n\n if (block._key === startBlockKey) {\n for (const child of block.children) {\n if (!isPortableTextSpan(child)) {\n continue\n }\n\n if (startSpanKey && child._key === startSpanKey) {\n if (startPoint.offset < child.text.length) {\n selectedSpans.push({\n node: child,\n path: [{_key: block._key}, 'children', {_key: child._key}],\n })\n }\n\n if (startSpanKey === endSpanKey) {\n break\n }\n\n continue\n }\n\n if (endSpanKey && child._key === endSpanKey) {\n if (endPoint.offset > 0) {\n selectedSpans.push({\n node: child,\n path: [{_key: block._key}, 'children', {_key: child._key}],\n })\n }\n break\n }\n\n if (selectedSpans.length > 0) {\n selectedSpans.push({\n node: child,\n path: [{_key: block._key}, 'children', {_key: child._key}],\n })\n }\n }\n\n if (startBlockKey === endBlockKey) {\n break\n }\n\n continue\n }\n\n if (block._key === endBlockKey) {\n for (const child of block.children) {\n if (!isPortableTextSpan(child)) {\n continue\n }\n\n if (endSpanKey && child._key === endSpanKey) {\n if (endPoint.offset > 0) {\n selectedSpans.push({\n node: child,\n path: [{_key: block._key}, 'children', {_key: child._key}],\n })\n }\n break\n }\n\n selectedSpans.push({\n node: child,\n path: [{_key: block._key}, 'children', {_key: child._key}],\n })\n }\n\n break\n }\n\n if (selectedSpans.length > 0) {\n for (const child of block.children) {\n if (!isPortableTextSpan(child)) {\n continue\n }\n\n selectedSpans.push({\n node: child,\n path: [{_key: block._key}, 'children', {_key: child._key}],\n })\n }\n }\n }\n\n return selectedSpans\n}\n","import {\n isKeySegment,\n isPortableTextSpan,\n isPortableTextTextBlock,\n type KeyedSegment,\n type PortableTextBlock,\n type PortableTextListBlock,\n type PortableTextObject,\n type PortableTextSpan,\n type PortableTextTextBlock,\n} from '@sanity/types'\nimport {createGuards} from '../behavior-actions/behavior.guards'\nimport type {EditorSelector} from '../editor/editor-selector'\n\n/**\n * @public\n */\nexport const getFocusBlock: EditorSelector<\n {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const key = context.selection\n ? isKeySegment(context.selection.focus.path[0])\n ? context.selection.focus.path[0]._key\n : undefined\n : undefined\n\n const node = key\n ? context.value.find((block) => block._key === key)\n : undefined\n\n return node && key ? {node, path: [{_key: key}]} : undefined\n}\n\n/**\n * @public\n */\nexport const getFocusListBlock: EditorSelector<\n {node: PortableTextListBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const guards = createGuards(context)\n const focusBlock = getFocusBlock({context})\n\n return focusBlock && guards.isListBlock(focusBlock.node)\n ? {node: focusBlock.node, path: focusBlock.path}\n : undefined\n}\n\n/**\n * @public\n */\nexport const getFocusTextBlock: EditorSelector<\n {node: PortableTextTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const focusBlock = getFocusBlock({context})\n\n return focusBlock && isPortableTextTextBlock(focusBlock.node)\n ? {node: focusBlock.node, path: focusBlock.path}\n : undefined\n}\n\n/**\n * @public\n */\nexport const getFocusBlockObject: EditorSelector<\n {node: PortableTextObject; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const focusBlock = getFocusBlock({context})\n\n return focusBlock && !isPortableTextTextBlock(focusBlock.node)\n ? {node: focusBlock.node, path: focusBlock.path}\n : undefined\n}\n\n/**\n * @public\n */\nexport const getFocusChild: EditorSelector<\n | {\n node: PortableTextObject | PortableTextSpan\n path: [KeyedSegment, 'children', KeyedSegment]\n }\n | undefined\n> = ({context}) => {\n const focusBlock = getFocusTextBlock({context})\n\n if (!focusBlock) {\n return undefined\n }\n\n const key = context.selection\n ? isKeySegment(context.selection.focus.path[2])\n ? context.selection.focus.path[2]._key\n : undefined\n : undefined\n\n const node = key\n ? focusBlock.node.children.find((span) => span._key === key)\n : undefined\n\n return node && key\n ? {node, path: [...focusBlock.path, 'children', {_key: key}]}\n : undefined\n}\n\n/**\n * @public\n */\nexport const getFocusSpan: EditorSelector<\n | {node: PortableTextSpan; path: [KeyedSegment, 'children', KeyedSegment]}\n | undefined\n> = ({context}) => {\n const focusChild = getFocusChild({context})\n\n return focusChild && isPortableTextSpan(focusChild.node)\n ? {node: focusChild.node, path: focusChild.path}\n : undefined\n}\n\n/**\n * @public\n */\nexport const getFirstBlock: EditorSelector<\n {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const node = context.value[0]\n\n return node ? {node, path: [{_key: node._key}]} : undefined\n}\n\n/**\n * @public\n */\nexport const getLastBlock: EditorSelector<\n {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const node = context.value[context.value.length - 1]\n ? context.value[context.value.length - 1]\n : undefined\n\n return node ? {node, path: [{_key: node._key}]} : undefined\n}\n\n/**\n * @public\n */\nexport const getSelectedBlocks: EditorSelector<\n Array<{node: PortableTextBlock; path: [KeyedSegment]}>\n> = ({context}) => {\n if (!context.selection) {\n return []\n }\n\n const selectedBlocks: Array<{node: PortableTextBlock; path: [KeyedSegment]}> =\n []\n const startKey = context.selection.backward\n ? isKeySegment(context.selection.focus.path[0])\n ? context.selection.focus.path[0]._key\n : undefined\n : isKeySegment(context.selection.anchor.path[0])\n ? context.selection.anchor.path[0]._key\n : undefined\n const endKey = context.selection.backward\n ? isKeySegment(context.selection.anchor.path[0])\n ? context.selection.anchor.path[0]._key\n : undefined\n : isKeySegment(context.selection.focus.path[0])\n ? context.selection.focus.path[0]._key\n : undefined\n\n if (!startKey || !endKey) {\n return selectedBlocks\n }\n\n for (const block of context.value) {\n if (block._key === startKey) {\n selectedBlocks.push({node: block, path: [{_key: block._key}]})\n\n if (startKey === endKey) {\n break\n }\n continue\n }\n\n if (block._key === endKey) {\n selectedBlocks.push({node: block, path: [{_key: block._key}]})\n break\n }\n\n if (selectedBlocks.length > 0) {\n selectedBlocks.push({node: block, path: [{_key: block._key}]})\n }\n }\n\n return selectedBlocks\n}\n\n/**\n * @public\n */\nexport const getSelectionStartBlock: EditorSelector<\n | {\n node: PortableTextBlock\n path: [KeyedSegment]\n }\n | undefined\n> = ({context}) => {\n if (!context.selection) {\n return undefined\n }\n\n const key = context.selection.backward\n ? isKeySegment(context.selection.focus.path[0])\n ? context.selection.focus.path[0]._key\n : undefined\n : isKeySegment(context.selection.anchor.path[0])\n ? context.selection.anchor.path[0]._key\n : undefined\n\n const node = key\n ? context.value.find((block) => block._key === key)\n : undefined\n\n return node && key ? {node, path: [{_key: key}]} : undefined\n}\n\n/**\n * @public\n */\nexport const getSelectionEndBlock: EditorSelector<\n | {\n node: PortableTextBlock\n path: [KeyedSegment]\n }\n | undefined\n> = ({context}) => {\n if (!context.selection) {\n return undefined\n }\n\n const key = context.selection.backward\n ? isKeySegment(context.selection.anchor.path[0])\n ? context.selection.anchor.path[0]._key\n : undefined\n : isKeySegment(context.selection.focus.path[0])\n ? context.selection.focus.path[0]._key\n : undefined\n\n const node = key\n ? context.value.find((block) => block._key === key)\n : undefined\n\n return node && key ? {node, path: [{_key: key}]} : undefined\n}\n\n/**\n * @public\n */\nexport const getPreviousBlock: EditorSelector<\n {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n let previousBlock: {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n const selectionStartBlock = getSelectionStartBlock({context})\n\n if (!selectionStartBlock) {\n return undefined\n }\n\n let foundSelectionStartBlock = false\n\n for (const block of context.value) {\n if (block._key === selectionStartBlock.node._key) {\n foundSelectionStartBlock = true\n break\n }\n\n previousBlock = {node: block, path: [{_key: block._key}]}\n }\n\n if (foundSelectionStartBlock && previousBlock) {\n return previousBlock\n }\n\n return undefined\n}\n\n/**\n * @public\n */\nexport const getNextBlock: EditorSelector<\n {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n let nextBlock: {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n const selectionEndBlock = getSelectionEndBlock({context})\n\n if (!selectionEndBlock) {\n return undefined\n }\n\n let foundSelectionEndBlock = false\n\n for (const block of context.value) {\n if (block._key === selectionEndBlock.node._key) {\n foundSelectionEndBlock = true\n continue\n }\n\n if (foundSelectionEndBlock) {\n nextBlock = {node: block, path: [{_key: block._key}]}\n break\n }\n }\n\n if (foundSelectionEndBlock && nextBlock) {\n return nextBlock\n }\n\n return undefined\n}\n","import type {PortableTextListBlock} from '@sanity/types'\nimport {createGuards} from '../behavior-actions/behavior.guards'\nimport type {EditorSelector} from '../editor/editor-selector'\nimport {getSelectedBlocks} from './selectors'\n\n/**\n * @public\n */\nexport const getActiveListItem: EditorSelector<\n PortableTextListBlock['listItem'] | undefined\n> = ({context}) => {\n if (!context.selection) {\n return undefined\n }\n\n const guards = createGuards(context)\n const selectedBlocks = getSelectedBlocks({context}).map((block) => block.node)\n const selectedTextBlocks = selectedBlocks.filter(guards.isTextBlock)\n\n const firstTextBlock = selectedTextBlocks.at(0)\n\n if (!firstTextBlock) {\n return undefined\n }\n\n const firstListItem = firstTextBlock.listItem\n\n if (!firstListItem) {\n return undefined\n }\n\n if (selectedTextBlocks.every((block) => block.listItem === firstListItem)) {\n return firstListItem\n }\n\n return undefined\n}\n","import type {PortableTextTextBlock} from '@sanity/types'\nimport {createGuards} from '../behavior-actions/behavior.guards'\nimport type {EditorSelector} from '../editor/editor-selector'\nimport {getSelectedBlocks} from './selectors'\n\n/**\n * @public\n */\nexport const getActiveStyle: EditorSelector<PortableTextTextBlock['style']> = ({\n context,\n}) => {\n if (!context.selection) {\n return undefined\n }\n\n const guards = createGuards(context)\n const selectedBlocks = getSelectedBlocks({context}).map((block) => block.node)\n const selectedTextBlocks = selectedBlocks.filter(guards.isTextBlock)\n\n const firstTextBlock = selectedTextBlocks.at(0)\n\n if (!firstTextBlock) {\n return undefined\n }\n\n const firstStyle = firstTextBlock.style\n\n if (!firstStyle) {\n return undefined\n }\n\n if (selectedTextBlocks.every((block) => block.style === firstStyle)) {\n return firstStyle\n }\n\n return undefined\n}\n","import type {EditorSelector} from '../editor/editor-selector'\n\n/**\n * @public\n */\nexport const isSelectionCollapsed: EditorSelector<boolean> = ({context}) => {\n if (!context.selection) {\n return false\n }\n\n return (\n JSON.stringify(context.selection.anchor.path) ===\n JSON.stringify(context.selection.focus.path) &&\n context.selection?.anchor.offset === context.selection?.focus.offset\n )\n}\n","import type {EditorSelector} from '../editor/editor-selector'\nimport {isSelectionCollapsed} from './selector.is-selection-collapsed'\n\n/**\n * @public\n */\nexport const isSelectionExpanded: EditorSelector<boolean> = ({context}) => {\n return !isSelectionCollapsed({context})\n}\n","import {isPortableTextTextBlock} from '@sanity/types'\nimport type {EditorSelector} from '../editor/editor-selector'\nimport {getSelectedSpans} from './selector.get-selected-spans'\nimport {isSelectionExpanded} from './selector.is-selection-expanded'\nimport {getFocusSpan, getSelectedBlocks} from './selectors'\n\n/**\n * @public\n */\nexport function isActiveAnnotation(\n annotation: string,\n): EditorSelector<boolean> {\n return (snapshot) => {\n if (!snapshot.context.selection) {\n return false\n }\n\n const selectedBlocks = getSelectedBlocks(snapshot)\n const focusSpan = getFocusSpan(snapshot)\n\n const selectedSpans = isSelectionExpanded(snapshot)\n ? getSelectedSpans(snapshot)\n : focusSpan\n ? [focusSpan]\n : []\n\n if (selectedSpans.length === 0) {\n return false\n }\n\n if (\n selectedSpans.some(\n (span) => !span.node.marks || span.node.marks?.length === 0,\n )\n ) {\n return false\n }\n\n const selectionMarkDefs = selectedBlocks.flatMap((block) =>\n isPortableTextTextBlock(block.node) ? (block.node.markDefs ?? []) : [],\n )\n\n return selectedSpans.every((span) => {\n const spanMarkDefs =\n span.node.marks?.flatMap((mark) => {\n const markDef = selectionMarkDefs.find(\n (markDef) => markDef._key === mark,\n )\n\n return markDef ? [markDef._type] : []\n }) ?? []\n\n return spanMarkDefs.includes(annotation)\n })\n }\n}\n","import type {EditorSelector} from '../editor/editor-selector'\nimport {getSelectedSpans} from './selector.get-selected-spans'\nimport {isSelectionExpanded} from './selector.is-selection-expanded'\n\n/**\n * @public\n */\nexport function isActiveDecorator(decorator: string): EditorSelector<boolean> {\n return (snapshot) => {\n if (isSelectionExpanded(snapshot)) {\n const selectedSpans = getSelectedSpans(snapshot)\n\n return (\n selectedSpans.length > 0 &&\n selectedSpans.every((span) => span.node.marks?.includes(decorator))\n )\n }\n\n return snapshot.context.activeDecorators.includes(decorator)\n }\n}\n","import type {EditorSelector} from '../editor/editor-selector'\nimport {getActiveListItem} from './selector.get-active-list-item'\n\n/**\n * @public\n */\nexport function isActiveListItem(listItem: string): EditorSelector<boolean> {\n return (snapshot) => {\n const activeListItem = getActiveListItem(snapshot)\n\n return activeListItem === listItem\n }\n}\n","import type {EditorSelector} from '../editor/editor-selector'\nimport {getActiveStyle} from './selector.get-active-style'\n\n/**\n * @public\n */\nexport function isActiveStyle(style: string): EditorSelector<boolean> {\n return (snapshot) => {\n const activeStyle = getActiveStyle(snapshot)\n\n return activeStyle === style\n }\n}\n","import type {KeyedSegment, PortableTextBlock} from '@sanity/types'\nimport type {EditorSelector} from '../editor/editor-selector'\nimport * as utils from '../utils'\nimport {isSelectionCollapsed} from './selector.is-selection-collapsed'\n\n/**\n * @public\n */\nexport function isAtTheEndOfBlock(block: {\n node: PortableTextBlock\n path: [KeyedSegment]\n}): EditorSelector<boolean> {\n return ({context}) => {\n if (!context.selection || !isSelectionCollapsed({context})) {\n return false\n }\n\n const blockEndPoint = utils.getBlockEndPoint(block)\n\n return utils.isEqualSelectionPoints(context.selection.focus, blockEndPoint)\n }\n}\n","import type {KeyedSegment, PortableTextBlock} from '@sanity/types'\nimport type {EditorSelector} from '../editor/editor-selector'\nimport * as utils from '../utils'\nimport {isSelectionCollapsed} from './selector.is-selection-collapsed'\n\n/**\n * @public\n */\nexport function isAtTheStartOfBlock(block: {\n node: PortableTextBlock\n path: [KeyedSegment]\n}): EditorSelector<boolean> {\n return ({context}) => {\n if (!context.selection || !isSelectionCollapsed({context})) {\n return false\n }\n\n const blockStartPoint = utils.getBlockStartPoint(block)\n\n return utils.isEqualSelectionPoints(\n context.selection.focus,\n blockStartPoint,\n )\n }\n}\n"],"names":["createGuards","schema","isListBlock","block","isPortableTextListBlock","_type","name","isTextBlock","isPortableTextTextBlock","getSelectedSpans","context","selection","selectedSpans","startPoint","backward","focus","anchor","endPoint","startBlockKey","isKeySegment","path","_key","undefined","endBlockKey","startSpanKey","endSpanKey","value","child","children","isPortableTextSpan","offset","text","length","push","node","getFocusBlock","key","find","getFocusListBlock","guards","focusBlock","getFocusTextBlock","getFocusBlockObject","getFocusChild","span","getFocusSpan","focusChild","getFirstBlock","getLastBlock","getSelectedBlocks","selectedBlocks","startKey","endKey","getSelectionStartBlock","getSelectionEndBlock","getPreviousBlock","previousBlock","selectionStartBlock","foundSelectionStartBlock","getNextBlock","nextBlock","selectionEndBlock","foundSelectionEndBlock","getActiveListItem","selectedTextBlocks","map","filter","firstTextBlock","at","firstListItem","listItem","every","getActiveStyle","firstStyle","style","isSelectionCollapsed","JSON","stringify","isSelectionExpanded","isActiveAnnotation","annotation","snapshot","focusSpan","some","marks","selectionMarkDefs","flatMap","markDefs","mark","markDef","includes","isActiveDecorator","decorator","activeDecorators","isActiveListItem","isActiveStyle","isAtTheEndOfBlock","blockEndPoint","utils","getBlockEndPoint","isEqualSelectionPoints","isAtTheStartOfBlock","blockStartPoint","getBlockStartPoint"],"mappings":"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"}
|
|
@@ -1678,7 +1678,7 @@ function findOperationTargetBlock(editor, operation) {
|
|
|
1678
1678
|
let block;
|
|
1679
1679
|
return operation.type === "set_selection" && editor.selection ? block = editor.children[editor.selection.focus.path[0]] : "path" in operation && (block = editor.children[operation.path[0]]), block;
|
|
1680
1680
|
}
|
|
1681
|
-
const syncValueCallback = ({
|
|
1681
|
+
const debug$d = debugWithName("sync machine"), syncValueCallback = ({
|
|
1682
1682
|
sendBack,
|
|
1683
1683
|
input
|
|
1684
1684
|
}) => {
|
|
@@ -1728,7 +1728,15 @@ const syncValueCallback = ({
|
|
|
1728
1728
|
}) => context.initialValueSynced,
|
|
1729
1729
|
"is busy": ({
|
|
1730
1730
|
context
|
|
1731
|
-
}) =>
|
|
1731
|
+
}) => {
|
|
1732
|
+
const editable = !context.readOnly, isProcessingLocalChanges = context.isProcessingLocalChanges, isChanging = isChangingRemotely(context.slateEditor) ?? !1, isBusy = editable && (isProcessingLocalChanges || isChanging);
|
|
1733
|
+
return debug$d("isBusy", {
|
|
1734
|
+
isBusy,
|
|
1735
|
+
editable,
|
|
1736
|
+
isProcessingLocalChanges,
|
|
1737
|
+
isChanging
|
|
1738
|
+
}), isBusy;
|
|
1739
|
+
},
|
|
1732
1740
|
"value changed while syncing": ({
|
|
1733
1741
|
context,
|
|
1734
1742
|
event
|
|
@@ -1775,13 +1783,24 @@ const syncValueCallback = ({
|
|
|
1775
1783
|
initial: "syncing initial value",
|
|
1776
1784
|
states: {
|
|
1777
1785
|
"syncing initial value": {
|
|
1786
|
+
entry: [() => {
|
|
1787
|
+
debug$d("entry: syncing initial value");
|
|
1788
|
+
}],
|
|
1789
|
+
exit: [() => {
|
|
1790
|
+
debug$d("exit: syncing initial value");
|
|
1791
|
+
}],
|
|
1778
1792
|
always: {
|
|
1779
1793
|
guard: "initial value synced",
|
|
1780
1794
|
target: "done syncing initial value"
|
|
1781
1795
|
}
|
|
1782
1796
|
},
|
|
1783
1797
|
"done syncing initial value": {
|
|
1784
|
-
entry: ["emit done syncing initial value"
|
|
1798
|
+
entry: ["emit done syncing initial value", () => {
|
|
1799
|
+
debug$d("entry: done syncing initial value");
|
|
1800
|
+
}],
|
|
1801
|
+
exit: [() => {
|
|
1802
|
+
debug$d("exit: done syncing initial value");
|
|
1803
|
+
}],
|
|
1785
1804
|
type: "final"
|
|
1786
1805
|
}
|
|
1787
1806
|
}
|
|
@@ -1790,6 +1809,12 @@ const syncValueCallback = ({
|
|
|
1790
1809
|
initial: "idle",
|
|
1791
1810
|
states: {
|
|
1792
1811
|
idle: {
|
|
1812
|
+
entry: [() => {
|
|
1813
|
+
debug$d("entry: syncing->idle");
|
|
1814
|
+
}],
|
|
1815
|
+
exit: [() => {
|
|
1816
|
+
debug$d("exit: syncing->idle");
|
|
1817
|
+
}],
|
|
1793
1818
|
on: {
|
|
1794
1819
|
"update value": [{
|
|
1795
1820
|
guard: "is busy",
|
|
@@ -1802,10 +1827,20 @@ const syncValueCallback = ({
|
|
|
1802
1827
|
}
|
|
1803
1828
|
},
|
|
1804
1829
|
busy: {
|
|
1830
|
+
entry: [() => {
|
|
1831
|
+
debug$d("entry: syncing->busy");
|
|
1832
|
+
}],
|
|
1833
|
+
exit: [() => {
|
|
1834
|
+
debug$d("exit: syncing->busy");
|
|
1835
|
+
}],
|
|
1805
1836
|
after: {
|
|
1806
1837
|
1e3: [{
|
|
1807
1838
|
guard: "is busy",
|
|
1808
|
-
|
|
1839
|
+
target: ".",
|
|
1840
|
+
reenter: !0,
|
|
1841
|
+
actions: [() => {
|
|
1842
|
+
debug$d("reenter: syncing->busy");
|
|
1843
|
+
}]
|
|
1809
1844
|
}, {
|
|
1810
1845
|
target: "syncing"
|
|
1811
1846
|
}]
|
|
@@ -1817,6 +1852,12 @@ const syncValueCallback = ({
|
|
|
1817
1852
|
}
|
|
1818
1853
|
},
|
|
1819
1854
|
syncing: {
|
|
1855
|
+
entry: [() => {
|
|
1856
|
+
debug$d("entry: syncing->syncing");
|
|
1857
|
+
}],
|
|
1858
|
+
exit: [() => {
|
|
1859
|
+
debug$d("exit: syncing->syncing");
|
|
1860
|
+
}],
|
|
1820
1861
|
always: {
|
|
1821
1862
|
guard: "pending value equals previous value",
|
|
1822
1863
|
target: "idle",
|
|
@@ -1871,7 +1912,7 @@ const syncValueCallback = ({
|
|
|
1871
1912
|
}
|
|
1872
1913
|
}
|
|
1873
1914
|
}
|
|
1874
|
-
})
|
|
1915
|
+
});
|
|
1875
1916
|
async function updateValue({
|
|
1876
1917
|
context,
|
|
1877
1918
|
sendBack,
|
|
@@ -6643,7 +6684,7 @@ class PortableTextEditor extends Component {
|
|
|
6643
6684
|
* const selectedSlice = useEditorSelector(editor, selectors.getSelectedSlice)
|
|
6644
6685
|
* ```
|
|
6645
6686
|
*/
|
|
6646
|
-
static getFragment = (editor) =>
|
|
6687
|
+
static getFragment = (editor) => editor.editable?.getFragment();
|
|
6647
6688
|
static undo = (editor) => {
|
|
6648
6689
|
debug("Host undoing"), editor.editable?.undo();
|
|
6649
6690
|
};
|