@atlaskit/editor-plugin-block-controls 2.15.1 → 2.15.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/CHANGELOG.md +9 -0
- package/dist/cjs/blockControlsPlugin.js +2 -2
- package/dist/cjs/editor-commands/move-node.js +4 -4
- package/dist/cjs/editor-commands/show-drag-handle.js +2 -2
- package/dist/cjs/ui/drag-handle.js +4 -3
- package/dist/es2019/blockControlsPlugin.js +1 -1
- package/dist/es2019/editor-commands/move-node.js +2 -2
- package/dist/es2019/editor-commands/show-drag-handle.js +1 -1
- package/dist/es2019/index.js +3 -0
- package/dist/es2019/ui/drag-handle.js +2 -1
- package/dist/esm/blockControlsPlugin.js +1 -1
- package/dist/esm/editor-commands/move-node.js +2 -2
- package/dist/esm/editor-commands/show-drag-handle.js +1 -1
- package/dist/esm/index.js +3 -0
- package/dist/esm/ui/drag-handle.js +2 -1
- package/dist/types/pm-plugins/utils/getSelection.d.ts +1 -1
- package/dist/types-ts4.5/pm-plugins/utils/getSelection.d.ts +1 -1
- package/package.json +2 -2
- package/dist/cjs/pm-plugins/utils/index.js +0 -37
- package/dist/es2019/pm-plugins/utils/index.js +0 -2
- package/dist/esm/pm-plugins/utils/index.js +0 -2
- package/dist/types/pm-plugins/utils/index.d.ts +0 -2
- package/dist/types-ts4.5/pm-plugins/utils/index.d.ts +0 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-block-controls
|
|
2
2
|
|
|
3
|
+
## 2.15.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#176596](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/176596)
|
|
8
|
+
[`86e9b63cc47f0`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/86e9b63cc47f0) -
|
|
9
|
+
Remove internal re-exports
|
|
10
|
+
- Updated dependencies
|
|
11
|
+
|
|
3
12
|
## 2.15.1
|
|
4
13
|
|
|
5
14
|
### Patch Changes
|
|
@@ -10,7 +10,7 @@ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
|
10
10
|
var _moveNode = require("./editor-commands/move-node");
|
|
11
11
|
var _moveToLayout = require("./editor-commands/move-to-layout");
|
|
12
12
|
var _main = require("./pm-plugins/main");
|
|
13
|
-
var
|
|
13
|
+
var _getSelection = require("./pm-plugins/utils/getSelection");
|
|
14
14
|
var _dragHandleMenu = require("./ui/drag-handle-menu");
|
|
15
15
|
var _globalStyles = require("./ui/global-styles");
|
|
16
16
|
var blockControlsPlugin = exports.blockControlsPlugin = function blockControlsPlugin(_ref) {
|
|
@@ -52,7 +52,7 @@ var blockControlsPlugin = exports.blockControlsPlugin = function blockControlsPl
|
|
|
52
52
|
return tr;
|
|
53
53
|
}
|
|
54
54
|
if (!(0, _platformFeatureFlags.fg)('platform_editor_element_drag_and_drop_ed_24885')) {
|
|
55
|
-
tr = (0,
|
|
55
|
+
tr = (0, _getSelection.selectNode)(tr, pos, nodeType);
|
|
56
56
|
}
|
|
57
57
|
tr.setMeta(_main.key, {
|
|
58
58
|
isDragging: true,
|
|
@@ -18,9 +18,9 @@ var _utils3 = require("@atlaskit/editor-tables/utils");
|
|
|
18
18
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
19
19
|
var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
|
|
20
20
|
var _main = require("../pm-plugins/main");
|
|
21
|
-
var _utils4 = require("../pm-plugins/utils");
|
|
22
21
|
var _consts = require("../pm-plugins/utils/consts");
|
|
23
22
|
var _fireAnalytics = require("../pm-plugins/utils/fire-analytics");
|
|
23
|
+
var _getNestedNodePosition = require("../pm-plugins/utils/getNestedNodePosition");
|
|
24
24
|
var _getSelection = require("../pm-plugins/utils/getSelection");
|
|
25
25
|
var _removeFromSource = require("../pm-plugins/utils/remove-from-source");
|
|
26
26
|
var _validation = require("../pm-plugins/utils/validation");
|
|
@@ -79,7 +79,7 @@ var getCurrentNodePos = function getCurrentNodePos(state, isParentNodeOfTypeLayo
|
|
|
79
79
|
// 3. the start of the selection is inside the node
|
|
80
80
|
currentNodePos = selection.$from.before(1);
|
|
81
81
|
if (selection.$from.depth > 0 && (0, _experiments.editorExperiment)('nested-dnd', true) && (0, _platformFeatureFlags.fg)('platform_editor_element_dnd_nested_a11y')) {
|
|
82
|
-
currentNodePos = (0,
|
|
82
|
+
currentNodePos = (0, _getNestedNodePosition.getNestedNodePosition)(state);
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
return currentNodePos;
|
|
@@ -146,7 +146,7 @@ var moveNodeViaShortcut = exports.moveNodeViaShortcut = function moveNodeViaShor
|
|
|
146
146
|
// If the node is first/last one, only select the node
|
|
147
147
|
api === null || api === void 0 || (_api$core2 = api.core) === null || _api$core2 === void 0 || _api$core2.actions.execute(function (_ref3) {
|
|
148
148
|
var tr = _ref3.tr;
|
|
149
|
-
(0,
|
|
149
|
+
(0, _getSelection.selectNode)(tr, currentNodePos, nodeType);
|
|
150
150
|
tr.scrollIntoView();
|
|
151
151
|
return tr;
|
|
152
152
|
});
|
|
@@ -212,7 +212,7 @@ var moveNode = exports.moveNode = function moveNode(api) {
|
|
|
212
212
|
mappedTo = tr.mapping.map(to);
|
|
213
213
|
tr.insert(mappedTo, _nodeCopy); // insert the content at the new position
|
|
214
214
|
}
|
|
215
|
-
tr = inputMethod === _analytics.INPUT_METHOD.DRAG_AND_DROP && (0, _platformFeatureFlags.fg)('platform_editor_element_dnd_nested_fix_patch_2') ? (0, _getSelection.setCursorPositionAtMovedNode)(tr, mappedTo) : (0,
|
|
215
|
+
tr = inputMethod === _analytics.INPUT_METHOD.DRAG_AND_DROP && (0, _platformFeatureFlags.fg)('platform_editor_element_dnd_nested_fix_patch_2') ? (0, _getSelection.setCursorPositionAtMovedNode)(tr, mappedTo) : (0, _getSelection.selectNode)(tr, mappedTo, node.type.name);
|
|
216
216
|
tr.setMeta(_main.key, {
|
|
217
217
|
nodeMoved: true
|
|
218
218
|
});
|
|
@@ -8,7 +8,7 @@ var _utils = require("@atlaskit/editor-tables/utils");
|
|
|
8
8
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
9
9
|
var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
|
|
10
10
|
var _main = require("../pm-plugins/main");
|
|
11
|
-
var
|
|
11
|
+
var _getNestedNodePosition = require("../pm-plugins/utils/getNestedNodePosition");
|
|
12
12
|
var showDragHandleAtSelection = exports.showDragHandleAtSelection = function showDragHandleAtSelection(api, shouldFocusParentNode) {
|
|
13
13
|
return function (state, _, view) {
|
|
14
14
|
var $from = state.selection.$from;
|
|
@@ -20,7 +20,7 @@ var showDragHandleAtSelection = exports.showDragHandleAtSelection = function sho
|
|
|
20
20
|
|
|
21
21
|
// if the node is already focused, pressing the keymap second times should focus the parent node
|
|
22
22
|
shouldFocusParentNode = activeNode && ((_activeNode$handleOpt = activeNode.handleOptions) === null || _activeNode$handleOpt === void 0 ? void 0 : _activeNode$handleOpt.isFocused);
|
|
23
|
-
var parentPos = (0, _utils.isInTable)(state) ? $from.before(1) : shouldFocusParentNode ? $from.before(1) : (0,
|
|
23
|
+
var parentPos = (0, _utils.isInTable)(state) ? $from.before(1) : shouldFocusParentNode ? $from.before(1) : (0, _getNestedNodePosition.getNestedNodePosition)(state) + 1;
|
|
24
24
|
var parentElement = view === null || view === void 0 || (_view$domAtPos = view.domAtPos(parentPos, 0)) === null || _view$domAtPos === void 0 ? void 0 : _view$domAtPos.node;
|
|
25
25
|
if (parentElement) {
|
|
26
26
|
var anchorName = parentElement.getAttribute('data-drag-handler-anchor-name');
|
|
@@ -22,8 +22,9 @@ var _setCustomNativeDragPreview = require("@atlaskit/pragmatic-drag-and-drop/ele
|
|
|
22
22
|
var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
|
|
23
23
|
var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
|
|
24
24
|
var _main = require("../pm-plugins/main");
|
|
25
|
-
var _utils = require("../pm-plugins/utils");
|
|
26
25
|
var _dragHandlePositions = require("../pm-plugins/utils/drag-handle-positions");
|
|
26
|
+
var _getNestedNodePosition = require("../pm-plugins/utils/getNestedNodePosition");
|
|
27
|
+
var _getSelection = require("../pm-plugins/utils/getSelection");
|
|
27
28
|
var _consts = require("./consts");
|
|
28
29
|
var _dragPreview = require("./drag-preview");
|
|
29
30
|
/**
|
|
@@ -122,7 +123,7 @@ var DragHandle = exports.DragHandle = function DragHandle(_ref) {
|
|
|
122
123
|
if (startPos === undefined) {
|
|
123
124
|
return tr;
|
|
124
125
|
}
|
|
125
|
-
tr = (0,
|
|
126
|
+
tr = (0, _getSelection.selectNode)(tr, startPos, nodeType);
|
|
126
127
|
var resolvedMovingNode = tr.doc.resolve(startPos);
|
|
127
128
|
var maybeNode = resolvedMovingNode.nodeAfter;
|
|
128
129
|
tr.setMeta('scrollIntoView', false);
|
|
@@ -401,7 +402,7 @@ var DragHandle = exports.DragHandle = function DragHandle(_ref) {
|
|
|
401
402
|
}];
|
|
402
403
|
var isParentNodeOfTypeLayout;
|
|
403
404
|
if (!isTopLevelNode && handleOptions !== null && handleOptions !== void 0 && handleOptions.isFocused && (0, _experiments.editorExperiment)('nested-dnd', true) && (0, _platformFeatureFlags.fg)('platform_editor_element_dnd_nested_a11y')) {
|
|
404
|
-
isParentNodeOfTypeLayout = nodeType === 'layoutSection' || view.state.doc.resolve((0,
|
|
405
|
+
isParentNodeOfTypeLayout = nodeType === 'layoutSection' || view.state.doc.resolve((0, _getNestedNodePosition.getNestedNodePosition)(view.state)).node().type.name === 'layoutColumn';
|
|
405
406
|
if (isParentNodeOfTypeLayout) {
|
|
406
407
|
helpDescriptors = [].concat((0, _toConsumableArray2.default)(helpDescriptors), [{
|
|
407
408
|
description: formatMessage(_messages.blockControlsMessages.moveLeft),
|
|
@@ -3,7 +3,7 @@ import { fg } from '@atlaskit/platform-feature-flags';
|
|
|
3
3
|
import { moveNode } from './editor-commands/move-node';
|
|
4
4
|
import { moveToLayout } from './editor-commands/move-to-layout';
|
|
5
5
|
import { createPlugin, key } from './pm-plugins/main';
|
|
6
|
-
import { selectNode } from './pm-plugins/utils';
|
|
6
|
+
import { selectNode } from './pm-plugins/utils/getSelection';
|
|
7
7
|
import { DragHandleMenu } from './ui/drag-handle-menu';
|
|
8
8
|
import { GlobalStylesWrapper } from './ui/global-styles';
|
|
9
9
|
export const blockControlsPlugin = ({
|
|
@@ -10,10 +10,10 @@ import { findTable, isInTable, isTableSelected } from '@atlaskit/editor-tables/u
|
|
|
10
10
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
11
11
|
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
12
12
|
import { key } from '../pm-plugins/main';
|
|
13
|
-
import { getNestedNodePosition, selectNode } from '../pm-plugins/utils';
|
|
14
13
|
import { DIRECTION } from '../pm-plugins/utils/consts';
|
|
15
14
|
import { fireMoveNodeAnalytics } from '../pm-plugins/utils/fire-analytics';
|
|
16
|
-
import {
|
|
15
|
+
import { getNestedNodePosition } from '../pm-plugins/utils/getNestedNodePosition';
|
|
16
|
+
import { selectNode, setCursorPositionAtMovedNode } from '../pm-plugins/utils/getSelection';
|
|
17
17
|
import { removeFromSource } from '../pm-plugins/utils/remove-from-source';
|
|
18
18
|
import { canMoveNodeToIndex, isInsideTable, transformSliceExpandToNestedExpand } from '../pm-plugins/utils/validation';
|
|
19
19
|
|
|
@@ -2,7 +2,7 @@ import { isInTable } from '@atlaskit/editor-tables/utils';
|
|
|
2
2
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
3
3
|
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
4
4
|
import { key } from '../pm-plugins/main';
|
|
5
|
-
import { getNestedNodePosition } from '../pm-plugins/utils';
|
|
5
|
+
import { getNestedNodePosition } from '../pm-plugins/utils/getNestedNodePosition';
|
|
6
6
|
export const showDragHandleAtSelection = (api, shouldFocusParentNode) => (state, _, view) => {
|
|
7
7
|
const {
|
|
8
8
|
$from
|
package/dist/es2019/index.js
CHANGED
|
@@ -18,8 +18,9 @@ import { setCustomNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/el
|
|
|
18
18
|
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
19
19
|
import Tooltip from '@atlaskit/tooltip';
|
|
20
20
|
import { key } from '../pm-plugins/main';
|
|
21
|
-
import { getNestedNodePosition, selectNode } from '../pm-plugins/utils';
|
|
22
21
|
import { getLeftPosition, getTopPosition } from '../pm-plugins/utils/drag-handle-positions';
|
|
22
|
+
import { getNestedNodePosition } from '../pm-plugins/utils/getNestedNodePosition';
|
|
23
|
+
import { selectNode } from '../pm-plugins/utils/getSelection';
|
|
23
24
|
import { DRAG_HANDLE_BORDER_RADIUS, DRAG_HANDLE_HEIGHT, DRAG_HANDLE_WIDTH, DRAG_HANDLE_ZINDEX, dragHandleGap, topPositionAdjustment } from './consts';
|
|
24
25
|
import { dragPreview } from './drag-preview';
|
|
25
26
|
const dragHandleButtonStyles = css({
|
|
@@ -3,7 +3,7 @@ import { fg } from '@atlaskit/platform-feature-flags';
|
|
|
3
3
|
import { moveNode } from './editor-commands/move-node';
|
|
4
4
|
import { moveToLayout } from './editor-commands/move-to-layout';
|
|
5
5
|
import { createPlugin, key } from './pm-plugins/main';
|
|
6
|
-
import { selectNode } from './pm-plugins/utils';
|
|
6
|
+
import { selectNode } from './pm-plugins/utils/getSelection';
|
|
7
7
|
import { DragHandleMenu } from './ui/drag-handle-menu';
|
|
8
8
|
import { GlobalStylesWrapper } from './ui/global-styles';
|
|
9
9
|
export var blockControlsPlugin = function blockControlsPlugin(_ref) {
|
|
@@ -13,10 +13,10 @@ import { findTable, isInTable, isTableSelected } from '@atlaskit/editor-tables/u
|
|
|
13
13
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
14
14
|
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
15
15
|
import { key } from '../pm-plugins/main';
|
|
16
|
-
import { getNestedNodePosition, selectNode } from '../pm-plugins/utils';
|
|
17
16
|
import { DIRECTION } from '../pm-plugins/utils/consts';
|
|
18
17
|
import { fireMoveNodeAnalytics } from '../pm-plugins/utils/fire-analytics';
|
|
19
|
-
import {
|
|
18
|
+
import { getNestedNodePosition } from '../pm-plugins/utils/getNestedNodePosition';
|
|
19
|
+
import { selectNode, setCursorPositionAtMovedNode } from '../pm-plugins/utils/getSelection';
|
|
20
20
|
import { removeFromSource } from '../pm-plugins/utils/remove-from-source';
|
|
21
21
|
import { canMoveNodeToIndex, isInsideTable, transformSliceExpandToNestedExpand } from '../pm-plugins/utils/validation';
|
|
22
22
|
|
|
@@ -2,7 +2,7 @@ import { isInTable } from '@atlaskit/editor-tables/utils';
|
|
|
2
2
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
3
3
|
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
4
4
|
import { key } from '../pm-plugins/main';
|
|
5
|
-
import { getNestedNodePosition } from '../pm-plugins/utils';
|
|
5
|
+
import { getNestedNodePosition } from '../pm-plugins/utils/getNestedNodePosition';
|
|
6
6
|
export var showDragHandleAtSelection = function showDragHandleAtSelection(api, shouldFocusParentNode) {
|
|
7
7
|
return function (state, _, view) {
|
|
8
8
|
var $from = state.selection.$from;
|
package/dist/esm/index.js
CHANGED
|
@@ -20,8 +20,9 @@ import { setCustomNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/el
|
|
|
20
20
|
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
21
21
|
import Tooltip from '@atlaskit/tooltip';
|
|
22
22
|
import { key } from '../pm-plugins/main';
|
|
23
|
-
import { getNestedNodePosition, selectNode } from '../pm-plugins/utils';
|
|
24
23
|
import { getLeftPosition, getTopPosition } from '../pm-plugins/utils/drag-handle-positions';
|
|
24
|
+
import { getNestedNodePosition } from '../pm-plugins/utils/getNestedNodePosition';
|
|
25
|
+
import { selectNode } from '../pm-plugins/utils/getSelection';
|
|
25
26
|
import { DRAG_HANDLE_BORDER_RADIUS, DRAG_HANDLE_HEIGHT, DRAG_HANDLE_WIDTH, DRAG_HANDLE_ZINDEX, dragHandleGap, topPositionAdjustment } from './consts';
|
|
26
27
|
import { dragPreview } from './drag-preview';
|
|
27
28
|
var dragHandleButtonStyles = css({
|
|
@@ -3,6 +3,6 @@ export declare const getInlineNodePos: (tr: Transaction, start: number, nodeSize
|
|
|
3
3
|
inlineNodePos: number;
|
|
4
4
|
inlineNodeEndPos: number;
|
|
5
5
|
};
|
|
6
|
-
export declare const getSelection: (tr: Transaction, start: number) =>
|
|
6
|
+
export declare const getSelection: (tr: Transaction, start: number) => TextSelection | NodeSelection;
|
|
7
7
|
export declare const selectNode: (tr: Transaction, start: number, nodeType: string) => Transaction;
|
|
8
8
|
export declare const setCursorPositionAtMovedNode: (tr: Transaction, start: number) => Transaction;
|
|
@@ -3,6 +3,6 @@ export declare const getInlineNodePos: (tr: Transaction, start: number, nodeSize
|
|
|
3
3
|
inlineNodePos: number;
|
|
4
4
|
inlineNodeEndPos: number;
|
|
5
5
|
};
|
|
6
|
-
export declare const getSelection: (tr: Transaction, start: number) =>
|
|
6
|
+
export declare const getSelection: (tr: Transaction, start: number) => TextSelection | NodeSelection;
|
|
7
7
|
export declare const selectNode: (tr: Transaction, start: number, nodeType: string) => Transaction;
|
|
8
8
|
export declare const setCursorPositionAtMovedNode: (tr: Transaction, start: number) => Transaction;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/editor-plugin-block-controls",
|
|
3
|
-
"version": "2.15.
|
|
3
|
+
"version": "2.15.2",
|
|
4
4
|
"description": "Block controls plugin for @atlaskit/editor-core",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"@atlaskit/pragmatic-drag-and-drop-react-drop-indicator": "^1.1.0",
|
|
49
49
|
"@atlaskit/primitives": "^13.3.0",
|
|
50
50
|
"@atlaskit/theme": "^14.0.0",
|
|
51
|
-
"@atlaskit/tmp-editor-statsig": "^2.
|
|
51
|
+
"@atlaskit/tmp-editor-statsig": "^2.25.0",
|
|
52
52
|
"@atlaskit/tokens": "^2.4.0",
|
|
53
53
|
"@atlaskit/tooltip": "^18.9.0",
|
|
54
54
|
"@babel/runtime": "^7.0.0",
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
Object.defineProperty(exports, "getInlineNodePos", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: function get() {
|
|
9
|
-
return _getSelection.getInlineNodePos;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
Object.defineProperty(exports, "getNestedNodePosition", {
|
|
13
|
-
enumerable: true,
|
|
14
|
-
get: function get() {
|
|
15
|
-
return _getNestedNodePosition.getNestedNodePosition;
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
Object.defineProperty(exports, "getSelection", {
|
|
19
|
-
enumerable: true,
|
|
20
|
-
get: function get() {
|
|
21
|
-
return _getSelection.getSelection;
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
Object.defineProperty(exports, "selectNode", {
|
|
25
|
-
enumerable: true,
|
|
26
|
-
get: function get() {
|
|
27
|
-
return _getSelection.selectNode;
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
Object.defineProperty(exports, "setCursorPositionAtMovedNode", {
|
|
31
|
-
enumerable: true,
|
|
32
|
-
get: function get() {
|
|
33
|
-
return _getSelection.setCursorPositionAtMovedNode;
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
var _getSelection = require("./getSelection");
|
|
37
|
-
var _getNestedNodePosition = require("./getNestedNodePosition");
|