@pisell/materials 6.11.96 → 6.11.97

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.
Files changed (140) hide show
  1. package/build/lowcode/assets-daily.json +11 -11
  2. package/build/lowcode/assets-dev.json +2 -2
  3. package/build/lowcode/assets-prod.json +11 -11
  4. package/build/lowcode/index.js +1 -1
  5. package/build/lowcode/meta.js +1 -1
  6. package/build/lowcode/preview.js +6 -6
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +7 -7
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +8 -8
  11. package/es/components/buttonGroupPreview/index.js +1 -2
  12. package/es/components/pisellFind/index.d.ts +12 -34
  13. package/es/components/pisellFind/index.js +18 -114
  14. package/es/components/pisellRecordBoard/layouts/GridLayout/Grid.js +2 -4
  15. package/es/components/productCard/cartSkuCard/components/AmountFooter/index.js +3 -1
  16. package/es/components/productCard/cartSkuCard/components/AmountFooter/index.less +5 -0
  17. package/es/components/productCard/cartSkuCard/components/resources/index.less +0 -4
  18. package/es/components/productCard/cartSkuCard/components/weighing/index.js +3 -3
  19. package/es/components/productCard/cartSkuCard/components/weighing/index.less +5 -0
  20. package/es/components/productCard/lineItem/BookingLineItem.d.ts +1 -2
  21. package/es/components/productCard/lineItem/BookingLineItem.js +6 -15
  22. package/es/components/productCard/lineItem/index.d.ts +8 -10
  23. package/es/components/productCard/lineItem/index.js +13 -61
  24. package/es/components/productCard/lineItem/index.less +3 -3
  25. package/es/components/productCard/lineItem/types.d.ts +0 -4
  26. package/es/components/productCard/types.d.ts +0 -1
  27. package/lib/components/buttonGroupPreview/index.js +1 -2
  28. package/lib/components/pisellFind/index.d.ts +12 -34
  29. package/lib/components/pisellFind/index.js +5 -80
  30. package/lib/components/pisellRecordBoard/layouts/GridLayout/Grid.js +1 -1
  31. package/lib/components/productCard/cartSkuCard/components/AmountFooter/index.js +17 -5
  32. package/lib/components/productCard/cartSkuCard/components/AmountFooter/index.less +5 -0
  33. package/lib/components/productCard/cartSkuCard/components/resources/index.less +0 -4
  34. package/lib/components/productCard/cartSkuCard/components/weighing/index.js +21 -1
  35. package/lib/components/productCard/cartSkuCard/components/weighing/index.less +5 -0
  36. package/lib/components/productCard/lineItem/BookingLineItem.d.ts +1 -2
  37. package/lib/components/productCard/lineItem/BookingLineItem.js +2 -14
  38. package/lib/components/productCard/lineItem/index.d.ts +8 -10
  39. package/lib/components/productCard/lineItem/index.js +10 -51
  40. package/lib/components/productCard/lineItem/index.less +3 -3
  41. package/lib/components/productCard/lineItem/types.d.ts +0 -4
  42. package/lib/components/productCard/types.d.ts +0 -1
  43. package/lowcode/pisell-find/meta.ts +0 -19
  44. package/package.json +3 -3
  45. package/es/components/PisellScrollView/PisellScrollView.d.ts +0 -5
  46. package/es/components/PisellScrollView/components/Actions/index.d.ts +0 -18
  47. package/es/components/PisellScrollView/types.d.ts +0 -203
  48. package/es/components/dataSourceComponents/dataSourceShow/dataSourceImage/index.d.ts +0 -3
  49. package/es/components/dataSourceComponents/fields/DatePicker/index.d.ts +0 -3
  50. package/es/components/dataSourceComponents/fields/Input.Mobile/serve.d.ts +0 -26
  51. package/es/components/dataSourceComponents/fields/Input.Phone/serve.d.ts +0 -27
  52. package/es/components/pisellDataSourceContainer/components/Pagination/index.d.ts +0 -6
  53. package/es/components/pisellFloorMapLayout/PisellFloorMapLayout.d.ts +0 -13
  54. package/es/components/pisellFloorMapLayout/appearance/floorMapAppearance.d.ts +0 -29
  55. package/es/components/pisellFloorMapLayout/components/EdgeLayer.d.ts +0 -37
  56. package/es/components/pisellFloorMapLayout/components/EditableItemLayer.d.ts +0 -66
  57. package/es/components/pisellFloorMapLayout/components/FloorMapEdgeEditPanel.d.ts +0 -16
  58. package/es/components/pisellFloorMapLayout/components/FloorMapEditPanel.d.ts +0 -14
  59. package/es/components/pisellFloorMapLayout/components/FloorMapEditQuickActions.d.ts +0 -26
  60. package/es/components/pisellFloorMapLayout/components/FloorMapOverview.d.ts +0 -44
  61. package/es/components/pisellFloorMapLayout/components/FloorMapToolbar.d.ts +0 -84
  62. package/es/components/pisellFloorMapLayout/components/FloorMapToolbarViewAllModal.d.ts +0 -20
  63. package/es/components/pisellFloorMapLayout/components/FloorMapZoneElement.d.ts +0 -9
  64. package/es/components/pisellFloorMapLayout/components/NodePortMarkers.d.ts +0 -20
  65. package/es/components/pisellFloorMapLayout/components/ViewControls.d.ts +0 -61
  66. package/es/components/pisellFloorMapLayout/components/ViewControlsWithZoom.d.ts +0 -28
  67. package/es/components/pisellFloorMapLayout/context/mergeFloorMapLayoutContext.d.ts +0 -5
  68. package/es/components/pisellFloorMapLayout/floorMapLayoutConstants.d.ts +0 -35
  69. package/es/components/pisellFloorMapLayout/hooks/useFloorMapEdgeEditing.d.ts +0 -61
  70. package/es/components/pisellFloorMapLayout/hooks/useFloorMapEdgeViewModel.d.ts +0 -15
  71. package/es/components/pisellFloorMapLayout/hooks/useFloorMapEditState.d.ts +0 -79
  72. package/es/components/pisellFloorMapLayout/hooks/useFloorMapTransformMetrics.d.ts +0 -91
  73. package/es/components/pisellFloorMapLayout/hooks/useShopFloorPlanSubscription.d.ts +0 -19
  74. package/es/components/pisellFloorMapLayout/index.d.ts +0 -37
  75. package/es/components/pisellFloorMapLayout/locales-ja.d.ts +0 -184
  76. package/es/components/pisellFloorMapLayout/locales-pt.d.ts +0 -184
  77. package/es/components/pisellFloorMapLayout/locales.d.ts +0 -969
  78. package/es/components/pisellFloorMapLayout/types.d.ts +0 -778
  79. package/es/components/pisellFloorMapLayout/utils/alignSnap.d.ts +0 -64
  80. package/es/components/pisellFloorMapLayout/utils/batchScenePlacementLayout.d.ts +0 -45
  81. package/es/components/pisellFloorMapLayout/utils/edgeRouting.d.ts +0 -267
  82. package/es/components/pisellFloorMapLayout/utils/floorMapConfigMerge.d.ts +0 -8
  83. package/es/components/pisellFloorMapLayout/utils/floorMapElementKindUtils.d.ts +0 -35
  84. package/es/components/pisellFloorMapLayout/utils/floorMapFallbackRender.d.ts +0 -11
  85. package/es/components/pisellFloorMapLayout/utils/floorMapOverviewLayout.d.ts +0 -44
  86. package/es/components/pisellFloorMapLayout/utils/floorMapResourcePickerDisplay.d.ts +0 -27
  87. package/es/components/pisellFloorMapLayout/utils/floorMapResourcePickerTypes.d.ts +0 -109
  88. package/es/components/pisellFloorMapLayout/utils/floorMapToolbarPalette.d.ts +0 -34
  89. package/es/components/productCard/lineItem/components/Holders/index.d.ts +0 -10
  90. package/es/components/productCard/lineItem/components/Holders/index.js +0 -74
  91. package/es/components/productCard/lineItem/components/Holders/index.less +0 -39
  92. package/es/components/productCard/lineItem/components/TimeRange/index.d.ts +0 -12
  93. package/lib/components/PisellScrollView/PisellScrollView.d.ts +0 -5
  94. package/lib/components/PisellScrollView/components/Actions/index.d.ts +0 -18
  95. package/lib/components/PisellScrollView/types.d.ts +0 -203
  96. package/lib/components/dataSourceComponents/dataSourceShow/dataSourceImage/index.d.ts +0 -3
  97. package/lib/components/dataSourceComponents/fields/DatePicker/index.d.ts +0 -3
  98. package/lib/components/dataSourceComponents/fields/Input.Mobile/serve.d.ts +0 -26
  99. package/lib/components/dataSourceComponents/fields/Input.Phone/serve.d.ts +0 -27
  100. package/lib/components/pisellDataSourceContainer/components/Pagination/index.d.ts +0 -6
  101. package/lib/components/pisellFloorMapLayout/PisellFloorMapLayout.d.ts +0 -13
  102. package/lib/components/pisellFloorMapLayout/appearance/floorMapAppearance.d.ts +0 -29
  103. package/lib/components/pisellFloorMapLayout/components/EdgeLayer.d.ts +0 -37
  104. package/lib/components/pisellFloorMapLayout/components/EditableItemLayer.d.ts +0 -66
  105. package/lib/components/pisellFloorMapLayout/components/FloorMapEdgeEditPanel.d.ts +0 -16
  106. package/lib/components/pisellFloorMapLayout/components/FloorMapEditPanel.d.ts +0 -14
  107. package/lib/components/pisellFloorMapLayout/components/FloorMapEditQuickActions.d.ts +0 -26
  108. package/lib/components/pisellFloorMapLayout/components/FloorMapOverview.d.ts +0 -44
  109. package/lib/components/pisellFloorMapLayout/components/FloorMapToolbar.d.ts +0 -84
  110. package/lib/components/pisellFloorMapLayout/components/FloorMapToolbarViewAllModal.d.ts +0 -20
  111. package/lib/components/pisellFloorMapLayout/components/FloorMapZoneElement.d.ts +0 -9
  112. package/lib/components/pisellFloorMapLayout/components/NodePortMarkers.d.ts +0 -20
  113. package/lib/components/pisellFloorMapLayout/components/ViewControls.d.ts +0 -61
  114. package/lib/components/pisellFloorMapLayout/components/ViewControlsWithZoom.d.ts +0 -28
  115. package/lib/components/pisellFloorMapLayout/context/mergeFloorMapLayoutContext.d.ts +0 -5
  116. package/lib/components/pisellFloorMapLayout/floorMapLayoutConstants.d.ts +0 -35
  117. package/lib/components/pisellFloorMapLayout/hooks/useFloorMapEdgeEditing.d.ts +0 -61
  118. package/lib/components/pisellFloorMapLayout/hooks/useFloorMapEdgeViewModel.d.ts +0 -15
  119. package/lib/components/pisellFloorMapLayout/hooks/useFloorMapEditState.d.ts +0 -79
  120. package/lib/components/pisellFloorMapLayout/hooks/useFloorMapTransformMetrics.d.ts +0 -91
  121. package/lib/components/pisellFloorMapLayout/hooks/useShopFloorPlanSubscription.d.ts +0 -19
  122. package/lib/components/pisellFloorMapLayout/index.d.ts +0 -37
  123. package/lib/components/pisellFloorMapLayout/locales-ja.d.ts +0 -184
  124. package/lib/components/pisellFloorMapLayout/locales-pt.d.ts +0 -184
  125. package/lib/components/pisellFloorMapLayout/locales.d.ts +0 -969
  126. package/lib/components/pisellFloorMapLayout/types.d.ts +0 -778
  127. package/lib/components/pisellFloorMapLayout/utils/alignSnap.d.ts +0 -64
  128. package/lib/components/pisellFloorMapLayout/utils/batchScenePlacementLayout.d.ts +0 -45
  129. package/lib/components/pisellFloorMapLayout/utils/edgeRouting.d.ts +0 -267
  130. package/lib/components/pisellFloorMapLayout/utils/floorMapConfigMerge.d.ts +0 -8
  131. package/lib/components/pisellFloorMapLayout/utils/floorMapElementKindUtils.d.ts +0 -35
  132. package/lib/components/pisellFloorMapLayout/utils/floorMapFallbackRender.d.ts +0 -11
  133. package/lib/components/pisellFloorMapLayout/utils/floorMapOverviewLayout.d.ts +0 -44
  134. package/lib/components/pisellFloorMapLayout/utils/floorMapResourcePickerDisplay.d.ts +0 -27
  135. package/lib/components/pisellFloorMapLayout/utils/floorMapResourcePickerTypes.d.ts +0 -109
  136. package/lib/components/pisellFloorMapLayout/utils/floorMapToolbarPalette.d.ts +0 -34
  137. package/lib/components/productCard/lineItem/components/Holders/index.d.ts +0 -10
  138. package/lib/components/productCard/lineItem/components/Holders/index.js +0 -83
  139. package/lib/components/productCard/lineItem/components/Holders/index.less +0 -39
  140. package/lib/components/productCard/lineItem/components/TimeRange/index.d.ts +0 -12
@@ -1,64 +0,0 @@
1
- /**
2
- * 拖动/缩放图元时的「边缘对齐吸附」:对照其他图元的 6 条候选线
3
- * (左/中/右 + 上/中/下),如果当前 rect 的对应边距离它们小于
4
- * 阈值(内容坐标),就把 rect 平移到精确贴合,并返回参考辅助线,
5
- * 供画布上渲染红色对齐线。
6
- *
7
- * 阈值应保持小(典型 4~8 px / scale),避免吞掉正常拖动手感。
8
- */
9
- export interface AlignSnapRect {
10
- /** 用于排除自身。可为 undefined 表示参与对齐的"其他" rect */
11
- id?: string;
12
- left: number;
13
- top: number;
14
- width: number;
15
- height: number;
16
- }
17
- export declare type AlignGuideEdgeX = 'left' | 'centerX' | 'right';
18
- export declare type AlignGuideEdgeY = 'top' | 'centerY' | 'bottom';
19
- export interface AlignGuide {
20
- orientation: 'v' | 'h';
21
- /** 该参考线所在坐标(v: x;h: y) */
22
- position: number;
23
- /** 沿参考线方向的覆盖范围 [min, max],便于 SVG 渲染端到端 */
24
- start: number;
25
- end: number;
26
- /** 命中的当前 rect 边 */
27
- selfEdge: AlignGuideEdgeX | AlignGuideEdgeY;
28
- /** 命中的对方 rect 边 */
29
- otherEdge: AlignGuideEdgeX | AlignGuideEdgeY;
30
- /** 命中的对方 rect id(如果有) */
31
- otherId?: string;
32
- }
33
- export interface AlignSnapResult {
34
- rect: {
35
- left: number;
36
- top: number;
37
- width: number;
38
- height: number;
39
- };
40
- guides: AlignGuide[];
41
- }
42
- /** 拖动模式:x/y 两轴可独立平移;不改尺寸 */
43
- export interface AlignSnapDragOptions {
44
- mode: 'drag';
45
- threshold: number;
46
- }
47
- /** 缩放模式:根据 handle 决定 left/right/top/bottom 哪条边可动 */
48
- export interface AlignSnapResizeOptions {
49
- mode: 'resize';
50
- threshold: number;
51
- /** 哪些边在当前缩放手柄下「可动」 */
52
- movableEdgesX?: ('left' | 'right')[];
53
- movableEdgesY?: ('top' | 'bottom')[];
54
- }
55
- export declare type AlignSnapOptions = AlignSnapDragOptions | AlignSnapResizeOptions;
56
- /**
57
- * 对一个 rect 做边对齐吸附。返回 snap 后的 rect + 实际命中的辅助线(0~2 条)。
58
- *
59
- * 算法:对 x、y 轴独立处理;每轴在所有「自身 3 边 × 所有 other 3 边」组合
60
- * 中选距离最小且 < threshold 的一对,把自身整体平移让它们贴齐;同时记录
61
- * 所有「平移后仍精确贴齐」的参考线(可能不止 1 条,例如 left 和 centerX
62
- * 同时与他人对齐时只有 1 条平移量但 2 条 guide)。
63
- */
64
- export declare function snapRectToOthers(rect: AlignSnapRect, others: AlignSnapRect[], options: AlignSnapOptions): AlignSnapResult;
@@ -1,45 +0,0 @@
1
- /** 批量落点时图元之间的间距(内容坐标 px) */
2
- export declare const BATCH_PLACE_GAP = 16;
3
- export interface BatchPlacementSize {
4
- width: number;
5
- height: number;
6
- }
7
- export interface BatchPlacementRect {
8
- x: number;
9
- y: number;
10
- width: number;
11
- height: number;
12
- }
13
- export interface BatchPlacementLayoutContext {
14
- /** 当前画布已有图元(用于计算右侧锚点) */
15
- existingElements: BatchPlacementRect[];
16
- contentWidth: number;
17
- contentHeight: number;
18
- /** 与 mapLayer.boundingPadding 一致的单侧 padding */
19
- boundingPadding?: number;
20
- }
21
- /**
22
- * 行列数尽量接近正方形(复用全览网格算法)。
23
- */
24
- export declare function getSquareishGridDims(count: number): {
25
- cols: number;
26
- rows: number;
27
- };
28
- /**
29
- * 计算批量落点左上角坐标列表(行优先:先填满第一行再换行)。
30
- */
31
- export declare function computeBatchScenePlacementPositions(sizes: BatchPlacementSize[], ctx: BatchPlacementLayoutContext): Array<{
32
- x: number;
33
- y: number;
34
- }>;
35
- export interface PlacementBoundingBox {
36
- minLeft: number;
37
- minTop: number;
38
- maxRight: number;
39
- maxBottom: number;
40
- }
41
- /** 由批量落点坐标与尺寸计算轴对齐包围盒(可加 margin 便于视口聚焦留边) */
42
- export declare function getPlacementBoundingBox(positions: Array<{
43
- x: number;
44
- y: number;
45
- }>, sizes: BatchPlacementSize[], margin?: number): PlacementBoundingBox | null;
@@ -1,267 +0,0 @@
1
- /**
2
- * 拓扑连线:锚点坐标、自动选边、正交折线路径
3
- */
4
- import type { FloorMapEdge, FloorMapEdgeAnchor, FloorMapEdgeRouting, FloorMapItemBase } from '../types';
5
- export interface FloorMapItemPixelRect {
6
- left: number;
7
- top: number;
8
- width: number;
9
- height: number;
10
- }
11
- export interface FloorMapEdgeRoute {
12
- edgeId: string;
13
- points: [number, number][];
14
- pathD: string;
15
- }
16
- declare const ANCHORS: FloorMapEdgeAnchor[];
17
- /**
18
- * 将图元逻辑坐标转为内容区像素矩形(与 EditableItemLayer 一致)
19
- */
20
- export declare function getItemPixelRect<T extends FloorMapItemBase>(item: T, options: {
21
- cellSize: number;
22
- itemUnit: 'cell' | 'pixel';
23
- itemGap?: number;
24
- override?: Partial<FloorMapItemPixelRect>;
25
- }): FloorMapItemPixelRect;
26
- export declare function rectCenter(rect: FloorMapItemPixelRect): {
27
- x: number;
28
- y: number;
29
- };
30
- /**
31
- * 锚点在矩形边框上的坐标
32
- */
33
- export declare function getAnchorPoint(rect: FloorMapItemPixelRect, anchor: FloorMapEdgeAnchor): {
34
- x: number;
35
- y: number;
36
- };
37
- /** 与 EdgeLayer 端口标签 pill 高度一致 */
38
- export declare const EDGE_PORT_LABEL_HEIGHT = 18;
39
- /** 标签中心相对边框锚点的外移间距(px) */
40
- export declare const EDGE_PORT_LABEL_OFFSET_GAP = 6;
41
- /**
42
- * 编辑态连线锚点圆点外移距离(px),避开 EditableItemLayer 边中点 20×20 缩放手柄。
43
- */
44
- export declare const EDGE_PORT_MARKER_OUTSET = 16;
45
- /** 折线绕开图元矩形的间距(px) */
46
- export declare const EDGE_ROUTE_RECT_CLEARANCE = 10;
47
- /**
48
- * 编辑态锚点圆点 UI 位置(相对图元局部坐标),沿外法线外移,连线几何仍用 {@link getAnchorPoint}。
49
- */
50
- export declare function getPortMarkerDisplayPoint(rect: FloorMapItemPixelRect, anchor: FloorMapEdgeAnchor, outset?: number): {
51
- x: number;
52
- y: number;
53
- };
54
- export declare function getPortLabelPosition(rect: FloorMapItemPixelRect, anchor: FloorMapEdgeAnchor, options?: {
55
- labelHeight?: number;
56
- gap?: number;
57
- }): {
58
- x: number;
59
- y: number;
60
- };
61
- /** 折线中段连接类型标签相对路径的默认外偏移(px) */
62
- export declare const EDGE_CENTER_LABEL_OFFSET = 8;
63
- export declare type EdgeCenterLabelPlacement = 'middle' | 'target-tail' | 'source-tail' | 'longest-horizontal';
64
- /** 与 EdgeLayer PortLabel 估算宽度一致 */
65
- export declare function estimateEdgeLabelWidth(text: string): number;
66
- /**
67
- * 在折线指定段上计算标签中心(水平段:标签在线上方;竖直段:标签在线左侧)。
68
- */
69
- export declare function getEdgeCenterLabelPositionOnSegment(points: [number, number][], segIndex: number, options?: {
70
- along?: number;
71
- offsetPx?: number;
72
- perpOffsetPx?: number;
73
- }): {
74
- x: number;
75
- y: number;
76
- } | null;
77
- /**
78
- * 计算边 `label`(如 connection_type)在正交折线上的显示位置。
79
- * 默认 `target-tail`:靠近路径末端(目标端),避免标在水平总线中段互相重叠。
80
- */
81
- export declare function getEdgeCenterLabelPosition(points: [number, number][], options?: {
82
- placement?: EdgeCenterLabelPlacement;
83
- offsetPx?: number;
84
- /** 0–1,沿标签所在段的位置 */
85
- along?: number;
86
- /** 垂直于段的额外偏移(水平段:y 方向;竖直段:x 方向,正数向左) */
87
- perpOffsetPx?: number;
88
- /** 指定段索引;缺省时由 placement 推导 */
89
- segIndex?: number;
90
- }): {
91
- x: number;
92
- y: number;
93
- } | null;
94
- /** 标签防碰撞:中心点最小间距(px,约等于 pill 高度 + 间距) */
95
- export declare const EDGE_CENTER_LABEL_MIN_GAP = 22;
96
- export interface ResolveEdgeCenterLabelItem {
97
- edgeId: string;
98
- sourceId: string;
99
- targetId: string;
100
- points: [number, number][];
101
- label?: string;
102
- }
103
- /**
104
- * 为多条边的连接类型标签分配互不重叠的位置。
105
- * - 多边汇入同一目标:优先标在各自「水平总线」段中点(天然错开)
106
- * - 仍重叠时按 pill 宽高做 bbox 分离;必要时在目标图元左侧纵向堆叠
107
- */
108
- export declare function resolveEdgeCenterLabelPositions(items: ResolveEdgeCenterLabelItem[], options?: {
109
- placement?: EdgeCenterLabelPlacement;
110
- offsetPx?: number;
111
- rectsById?: Map<string, FloorMapItemPixelRect>;
112
- }): Map<string, {
113
- x: number;
114
- y: number;
115
- }>;
116
- /**
117
- * 未指定锚点时,选朝向对方最近的一侧
118
- */
119
- export declare function pickAutoAnchor(from: FloorMapItemPixelRect, to: FloorMapItemPixelRect): FloorMapEdgeAnchor;
120
- /** 拉线吸附端口时的命中半径(与 {@link EDGE_PORT_MARKER_OUTSET} 同量级) */
121
- export declare const EDGE_PORT_SNAP_THRESHOLD = 16;
122
- export interface DrawingTargetHit {
123
- instanceId: string;
124
- anchor: FloorMapEdgeAnchor;
125
- }
126
- /**
127
- * 距矩形四边锚点最近的一侧
128
- */
129
- export declare function pickNearestAnchorOnRect(pt: {
130
- x: number;
131
- y: number;
132
- }, rect: FloorMapItemPixelRect): FloorMapEdgeAnchor;
133
- /**
134
- * 拉线过程中解析目标:优先吸附到端口圆点,否则落在图元内时取最近端口。
135
- */
136
- export declare function resolveDrawingTargetAtPoint(pt: {
137
- x: number;
138
- y: number;
139
- }, instanceIds: string[], rectsById: Map<string, FloorMapItemPixelRect>, excludeInstanceId: string, snapThreshold?: number): DrawingTargetHit | null;
140
- /** 折线是否有线段穿过矩形内部 */
141
- export declare function pathCrossesRectInterior(points: [number, number][], rect: FloorMapItemPixelRect): boolean;
142
- export interface RouteOrthogonalOptions {
143
- /** 需要绕开的图元矩形(通常为对端节点) */
144
- obstacleRects?: FloorMapItemPixelRect[];
145
- clearance?: number;
146
- /** @deprecated 使用 obstacleRects;保留兼容,等价于 [targetRect] */
147
- sourceRect?: FloorMapItemPixelRect;
148
- targetRect?: FloorMapItemPixelRect;
149
- /**
150
- * 通道偏移(px,带符号):用于让多条共享同一通道的连线错开,避免视觉重叠。
151
- * 影响 Z 型中点(midX/midY)与外侧公共通道(above/below/left/right)。
152
- */
153
- channelOffset?: number;
154
- }
155
- /**
156
- * 正交连线:先最短路径,再对穿框段绕一圈。
157
- */
158
- export declare function routeOrthogonal(sourcePt: {
159
- x: number;
160
- y: number;
161
- }, sourceSide: FloorMapEdgeAnchor, targetPt: {
162
- x: number;
163
- y: number;
164
- }, targetSide: FloorMapEdgeAnchor,
165
- /** @deprecated 已取消固定 stub;可传 number(忽略)或 RouteOrthogonalOptions */
166
- stubOrOptions?: number | RouteOrthogonalOptions, maybeOptions?: RouteOrthogonalOptions): [number, number][];
167
- /**
168
- * 折线转带圆角的 SVG path d
169
- */
170
- export declare function pathFromPoints(points: [number, number][], radius?: number): string;
171
- export interface BuildEdgeRouteOptions {
172
- /** 共享通道时的横向/纵向错位偏移 */
173
- channelOffset?: number;
174
- /** 用户手动调整后的路由覆盖;优先于 edge.routing 字段 */
175
- routingOverride?: FloorMapEdgeRouting;
176
- }
177
- /**
178
- * 把一条已存在的 path 快照(snapshot)的两端「平移对齐」到新的源/目标锚点位置,
179
- * 中间路径完全保留。用于「手动编辑过的连线」在图元被拖动后只更新最近两端。
180
- *
181
- * 规则:
182
- * - 首段(snapshot[0] → snapshot[1]):
183
- * - 若是水平段(y0 === y1):新 snapshot[0] = srcPt;新 snapshot[1] = (原 snapshot[1].x, srcPt.y)
184
- * - 若是竖直段(x0 === x1):新 snapshot[0] = srcPt;新 snapshot[1] = (srcPt.x, 原 snapshot[1].y)
185
- * - 若是斜段(理论上 snapshot 都是正交,但兜底):仅平移 snapshot[0],snapshot[1] 保持不变
186
- * - 末段(snapshot[n-2] → snapshot[n-1]):对称处理
187
- * - 同时对 snapshot[2] / snapshot[n-3] 做"必要的轴向跟随":snapshot[1] → snapshot[2] 段必须保持
188
- * 正交,因此 snapshot[2] 的相邻轴坐标需要跟随 snapshot[1] 更新(同理末端)。
189
- */
190
- export declare function alignSnapshotToAnchors(snapshot: [number, number][], srcPt: {
191
- x: number;
192
- y: number;
193
- }, tgtPt: {
194
- x: number;
195
- y: number;
196
- }): [number, number][];
197
- /**
198
- * 将「中段坐标覆盖」应用到一条正交折线 path 上。
199
- *
200
- * 内部段(既非首段也非末段)按顺序对应 `midSegmentPositions[k]`。
201
- * - 水平段(y1 === y2)→ 把 result[i].y / result[i+1].y 都改成 v
202
- * - 竖直段(x1 === x2)→ 把 result[i].x / result[i+1].x 都改成 v
203
- *
204
- * 移动一个内部段只是平移它的主轴坐标,相邻段(必是另一个方向)会随之延长/缩短,
205
- * 不会破坏正交性。多余的 override 项被忽略,null/undefined 项跳过。
206
- */
207
- /** 首/末段拖动后默认插入的 stub 长度(px);过短时按段长 50% 自动缩小 */
208
- export declare const DEFAULT_EDGE_STUB_LENGTH = 24;
209
- /**
210
- * 在路径起点处插入 stub 转角:把首段变成「沿首段实际方向走 stub → 90° 转弯 →
211
- * 走到原 corner」。
212
- *
213
- * 注意:方向取自 *path 首段实际指向*(points[0]→points[1]),而非 sourceAnchor 字段——
214
- * 这样在 path 已经经过手动编辑、首段方向与锚点 outward 不一致时仍能正确插入。
215
- *
216
- * 路径点数 +2;新增 2 个内部段(stub 段 + 「被拖动段」)。被拖动段的初始另一轴
217
- * 坐标与原首段重合(视觉直线),后续由拖动调整。
218
- */
219
- export declare function applySourceStub(points: [number, number][], stubLength: number | undefined,
220
- /** @deprecated 仅向后兼容,实际方向由 path 首段决定 */
221
- sourceAnchor?: FloorMapEdgeAnchor): [number, number][];
222
- /**
223
- * 对称地在路径末端插入 stub 转角。方向取自 *path 末段实际指向*。
224
- *
225
- * 路径点数 +2;新增 2 个内部段(「被拖动段」 + stub 段)。
226
- */
227
- export declare function applyTargetStub(points: [number, number][], stubLength: number | undefined,
228
- /** @deprecated 仅向后兼容,实际方向由 path 末段决定 */
229
- targetAnchor?: FloorMapEdgeAnchor): [number, number][];
230
- export declare function applyMidSegmentOverrides(points: [number, number][], overrides: (number | null | undefined)[] | undefined): [number, number][];
231
- /**
232
- * 返回正交折线中所有「内部段」的元信息(不含首段与末段),
233
- * 供 UI 渲染中段手柄使用。
234
- */
235
- export interface EdgeInnerSegmentInfo {
236
- /** 该内部段在 `midSegmentPositions` 中的索引(0 = path 的第 2 段) */
237
- index: number;
238
- /** path.points 中该段起点的下标(终点为 i+1) */
239
- pointIndex: number;
240
- axis: 'h' | 'v';
241
- /** 段的主轴坐标:水平段 = y,竖直段 = x */
242
- position: number;
243
- /** 段中点坐标(用于摆放手柄) */
244
- midX: number;
245
- midY: number;
246
- /** 段长度(绝对值),用于判定是否值得渲染手柄(防止极短段误触) */
247
- length: number;
248
- }
249
- export declare function getEdgeInnerSegments(points: [number, number][]): EdgeInnerSegmentInfo[];
250
- export declare function buildEdgeRoute(edge: FloorMapEdge, rectsById: Map<string, FloorMapItemPixelRect>, options?: BuildEdgeRouteOptions): FloorMapEdgeRoute | null;
251
- /**
252
- * 去掉路径中"三点共线"的冗余中间点(比如 routeOrthogonal 里 srcPt → sOut →
253
- * 中段折点都在同一 y 上时,sOut 是冗余的)。
254
- *
255
- * 保留零长度段:用户拖动 first/last 段创建 stub 时,stubEnd 与 midCorner 短暂
256
- * 重合(零长度),不能被合并掉,否则会立刻丢失新插入的转角结构。
257
- */
258
- export declare function simplifyCollinearPath(points: [number, number][]): [number, number][];
259
- /**
260
- * 按 edge 顺序分配交替偏移,让落到同一通道的多条线错开。
261
- * 序列:0, +step, -step, +2*step, -2*step, ...
262
- */
263
- export declare function getEdgeChannelOffset(index: number, step?: number): number;
264
- /** 命中检测:点到折线最近距离 */
265
- export declare function distanceToPolyline(px: number, py: number, points: [number, number][]): number;
266
- export declare function hitTestEdgeAtPoint(px: number, py: number, routes: FloorMapEdgeRoute[], threshold?: number): string | null;
267
- export { ANCHORS as FLOOR_MAP_EDGE_ANCHORS };
@@ -1,8 +0,0 @@
1
- /**
2
- * 将当前画布的 sceneElements 合并为 Layout 使用的 FloorMapMergedItem[]
3
- */
4
- import type { FloorMapViewConfig, FloorMapMergedItem } from '../types';
5
- /**
6
- * 合并指定画布下的 sceneElements 为一份 items(用于 ItemLayer / EditableItemLayer)
7
- */
8
- export declare function mergeCanvasItems(canvasId: string, config: Pick<FloorMapViewConfig, 'sceneElements' | 'elementKinds'>, defaultCellSize?: number): FloorMapMergedItem[];
@@ -1,35 +0,0 @@
1
- /**
2
- * 图元种类解析与绑定展示前校验(供合并项渲染、工具栏逻辑复用)
3
- */
4
- import type { FloorMapElementKindConfig, FloorMapViewConfig, FloorMapSceneElement, FloorMapDataSources, FloorMapElementDataBindingPolicy } from '../types';
5
- /** 与 RecordBoard Story 一致:`floorMapImage` */
6
- export declare function isFloorMapImageElementKind(kind: string | undefined): boolean;
7
- /** 内置图形图元:与 image 类似的「无数据源 + 视觉填充」单体 kind */
8
- export declare function isFloorMapBuiltinShapeElementKind(kind: string | undefined): boolean;
9
- /** dataBindingPolicy 缺省视为 none */
10
- export declare function resolveDataBindingPolicy(kind: FloorMapElementKindConfig | undefined): FloorMapElementDataBindingPolicy;
11
- /**
12
- * 侧栏调色板:点击即可落点,无需数据源 / 数据行等二次选择。
13
- * 含预约「装饰」下的内置图形(厕所/分隔/柱子等)、底图图片等(`dataBindingPolicy: none`)。
14
- * 不含舞台;内置图形须带 `builtinShapeKey` 由 {@link isDirectPlacePaletteEntry} 判断。
15
- */
16
- export declare function isDirectPlacePaletteKind(kind: FloorMapElementKindConfig | undefined): boolean;
17
- export declare function getElementKindConfig(config: Pick<FloorMapViewConfig, 'elementKinds'> | undefined, elementKind: string | undefined): FloorMapElementKindConfig | undefined;
18
- /**
19
- * 与调色板分组一致:取与当前图元 **同一 categoryId**(含未填 categoryId 时落到首个分类)下的可切换种类,
20
- * 排除舞台、底图。若仅有一种则编辑面板可不展示切换器。
21
- */
22
- export declare function getSwappableElementKindsInSameCategory(config: FloorMapViewConfig, elementKind: string | undefined): FloorMapElementKindConfig[];
23
- /** 绑定资源类图元(dataBindingPolicy 为 required/optional)新建默认尺寸 */
24
- export declare const FLOOR_MAP_RESOURCE_PLACE_DEFAULT: {
25
- readonly width: 300;
26
- readonly height: 200;
27
- };
28
- /**
29
- * 在右侧编辑面板将图元改为同分类下的另一种 kind 时的草稿 patch(绑定不兼容则清空)
30
- */
31
- export declare function patchSceneElementForKindSwitch(config: FloorMapViewConfig, element: FloorMapSceneElement, nextKindValue: string): Partial<FloorMapSceneElement>;
32
- /**
33
- * @returns 人类可读错误文案;无问题时返回 null
34
- */
35
- export declare function getSceneElementRenderIssue(element: FloorMapSceneElement, kind: FloorMapElementKindConfig | undefined, dataSources: FloorMapDataSources | undefined): string | null;
@@ -1,11 +0,0 @@
1
- /**
2
- * 无 renderItemByKind 时的占位渲染(装饰、舞台等),避免画布上不显示
3
- */
4
- import React from 'react';
5
- import type { FloorMapMergedItem } from '../types';
6
- /**
7
- * @returns 与 PisellFloorMapLayout 内联 fallback 一致的渲染函数(useCallback 由调用方包裹)
8
- */
9
- /** 绑定校验失败或 renderItemByKind 抛错时的占位 */
10
- export declare function renderFloorMapRenderError(message: string): React.ReactNode;
11
- export declare function renderFloorMapFallbackPlaceholder(item: FloorMapMergedItem): React.ReactNode;
@@ -1,44 +0,0 @@
1
- import type { FloorMapItemUnit, FloorMapLayerConfig, FloorMapMergedItem, FloorMapViewConfig } from '../types';
2
- /** 单个画布在 All 视图中的「区域」描述 */
3
- export interface OverviewCanvasArea {
4
- canvasId: string;
5
- items: FloorMapMergedItem[];
6
- /** 内容区尺寸(已按 boundingPadding 扩边) */
7
- contentWidth: number;
8
- contentHeight: number;
9
- /** ItemLayer 内部图元层偏移(与单画布一致) */
10
- contentOffsetX: number;
11
- contentOffsetY: number;
12
- cellSize: number;
13
- /**
14
- * 区块在大画布坐标系中的左上角(含外置标题带)。
15
- * 带边框的画布内容区从 `y + titleBandHeight` 起算。
16
- */
17
- x: number;
18
- y: number;
19
- /** 外置标题带高度,与 {@link FLOOR_MAP_OVERVIEW_TITLE_BAND_HEIGHT} 一致 */
20
- titleBandHeight: number;
21
- }
22
- export interface OverviewLayout {
23
- areas: OverviewCanvasArea[];
24
- /** 大画布总宽(不含外侧 padding,由调用方在 MapLayer/contentStage 端处理) */
25
- totalWidth: number;
26
- totalHeight: number;
27
- }
28
- /**
29
- * 构造 All 视图布局。
30
- *
31
- * - 顺序:按 `canvas.order` 升序,与顶部 Tab 顺序一致;
32
- * - 尺寸:每个画布按 {@link computeFloorMapContentStage}(含其自己的 boundingPadding)
33
- * 推导内容尺寸,所有画布共享同一比例尺,不缩放;
34
- * - 装箱:{@link packCanvasesIntoShelves} 行装填,目标行宽 ≈ √总面积。
35
- */
36
- export declare function buildFloorMapOverviewLayout(params: {
37
- config: FloorMapViewConfig;
38
- /** 全局 mapLayer(与画布级 mapLayer 合并后仅用于推导 boundingPadding / gap) */
39
- globalMapLayer?: FloorMapLayerConfig;
40
- cellSize: number;
41
- itemUnit: FloorMapItemUnit;
42
- /** 区域之间在大画布坐标系下的间距(像素) */
43
- areaGap: number;
44
- }): OverviewLayout;
@@ -1,27 +0,0 @@
1
- import type { PisellCardPickerCardBadge, PisellCardPickerCardMeta, PisellCardPickerCategoryConfig, PisellCardPickerItem } from './floorMapResourcePickerTypes';
2
- import { parseNestedPathSegments } from './floorMapResourcePickerTypes';
3
- /** @deprecated 使用 PisellCardPickerItem */
4
- export declare type FloorMapResourcePickerRecord = PisellCardPickerItem;
5
- /** 平面图资源选择卡片 meta:在通用 meta 基础上确保 id 存在,便于搜索文本拼接 */
6
- export interface FloorMapResourcePickerCardMeta extends PisellCardPickerCardMeta {
7
- id: string;
8
- }
9
- /** 人数/容量:无值或为 0 时不展示 */
10
- export declare function resolveResourcePickerCapacity(record: PisellCardPickerItem): string | undefined;
11
- /**
12
- * 预约桌位:从 `area` 解析路径,最多 3 段。
13
- * 当前资源多为单段(如 `party_room1`);将来 `广东/中山/三乡` 会自动出现二、三级筛选行。
14
- */
15
- export declare function getFloorMapResourcePickerCategoryPath(record: PisellCardPickerItem): ReturnType<typeof parseNestedPathSegments>;
16
- /** 平面图 / 预约:area 最多三级;仅展示 chip,不显示行左侧「区域」等标签 */
17
- export declare function getFloorMapCardPickerCategoryConfig(): PisellCardPickerCategoryConfig;
18
- /**
19
- * 把 capacity 字符串包装成「人数图标 + 数值」badge。
20
- * 抽出来便于业务侧组合(如再追加 status badge 等)。
21
- */
22
- export declare function buildResourceCapacityBadge(capacity?: string): PisellCardPickerCardBadge | null;
23
- /**
24
- * 小卡片主标题 + 标签(人数等;区域已在筛选区展示,副文案不再重复 area)。
25
- */
26
- export declare function getFloorMapResourcePickerCardMeta(record: PisellCardPickerItem): FloorMapResourcePickerCardMeta;
27
- export declare function floorMapResourcePickerRecordSearchText(record: PisellCardPickerItem): string;
@@ -1,109 +0,0 @@
1
- /**
2
- * 平面图资源选择槽位的通用类型与工具。
3
- * 默认由 `@pisell/materials` 的 `PisellResourcePickerModal` 承担;
4
- * 业务可通过 `renderFilterBar` 注入 Tabbar 等筛选区,或通过 `renderResourcePickerModal` 整页覆盖。
5
- */
6
- import type { ReactNode } from 'react';
7
- /** 选择模式 */
8
- export declare type PisellCardPickerMode = 'single' | 'multiple';
9
- /** 可选条目:至少包含稳定主键 id */
10
- export interface PisellCardPickerItem {
11
- id: string;
12
- [key: string]: unknown;
13
- }
14
- /** 分类路径,最多 3 级(不足时后续为 null;未选层级表示「全部」) */
15
- export declare type PisellCardPickerCategoryPath = [
16
- string | null | undefined,
17
- string | null | undefined,
18
- string | null | undefined
19
- ];
20
- /** 单级分类配置(最多 3 级) */
21
- export interface PisellCardPickerCategoryLevelConfig {
22
- /** 嵌套模式下该级行左侧标签(如「省」「市」「区/镇」) */
23
- label?: string;
24
- /**
25
- * parallel 模式:从 item[field] 读取该维度的 key。
26
- * nested 模式:请用 getCategoryPath / nestedPathField 从单字段拆路径。
27
- */
28
- field?: string;
29
- }
30
- /**
31
- * nested:同一维度嵌套分级(广东 → 中山 → 三乡),子级依赖父级已选。
32
- * parallel:三个独立维度(每级互不影响)。
33
- */
34
- export declare type PisellCardPickerCategoryMode = 'nested' | 'parallel';
35
- /** 分类筛选配置(最多 3 级;数据只有 1 级时 UI 只展示有值的那一行) */
36
- export interface PisellCardPickerCategoryConfig {
37
- /** 默认 nested */
38
- mode?: PisellCardPickerCategoryMode;
39
- /**
40
- * 最多 3 级配置位。
41
- * nested:单字段拆路径;仅 1 段时只出现第 1 行,多段时再逐级出现。
42
- */
43
- levels: [
44
- PisellCardPickerCategoryLevelConfig?,
45
- PisellCardPickerCategoryLevelConfig?,
46
- PisellCardPickerCategoryLevelConfig?
47
- ];
48
- /** 自定义 [L1,L2,L3];优先于 levels[].field */
49
- getCategoryPath?: (item: PisellCardPickerItem) => PisellCardPickerCategoryPath;
50
- /**
51
- * nested 便捷项:从 item[nestedPathField] 用 `/` `>` 等拆成最多 3 段。
52
- * 与 getCategoryPath 同时存在时以 getCategoryPath 为准。
53
- */
54
- nestedPathField?: string;
55
- }
56
- /**
57
- * 卡片小标签(如人数、状态、面积等)。
58
- * - text:必填,纯文本内容
59
- * - icon:可选 ReactNode,前置图标(如 TeamOutlined)
60
- * 业务自由组合多个;空数组等价于不展示。
61
- */
62
- export interface PisellCardPickerCardBadge {
63
- text: string;
64
- icon?: ReactNode;
65
- }
66
- export interface PisellCardPickerCardMeta {
67
- title: string;
68
- subtitles: string[];
69
- /**
70
- * 卡片末行的标签数组(如人数 / 状态)。比 subtitle 更紧凑,支持前置 icon。
71
- */
72
- badges?: PisellCardPickerCardBadge[];
73
- /**
74
- * 左侧缩略图/预览节点。传入字符串走内置 `<img>`,传入 ReactNode 直接渲染
75
- * (如平面图 View All 的 palette preview cell)。
76
- */
77
- image?: ReactNode | string;
78
- }
79
- /**
80
- * 平面图工具栏「打开资源选择」槽位 props。
81
- * 与 `PisellProResourcePickerModalProps` 字段对齐;业务注入 modal 时可透传
82
- * `categoryConfig` / `getSearchText` / `getCardMeta` 等扩展项。
83
- */
84
- export interface FloorMapResourcePickerSlotProps {
85
- open: boolean;
86
- onClose: () => void;
87
- onConfirm: (selectedIds: string[]) => void;
88
- records: PisellCardPickerItem[];
89
- mode?: PisellCardPickerMode;
90
- value?: string[];
91
- title?: string;
92
- disabledIds?: string[];
93
- /** 最多三级分类;不传则仅搜索 + 列表 */
94
- categoryConfig?: PisellCardPickerCategoryConfig;
95
- getSearchText?: (record: PisellCardPickerItem) => string;
96
- getCardMeta?: (record: PisellCardPickerItem) => PisellCardPickerCardMeta;
97
- renderCard?: (record: PisellCardPickerItem, ctx: {
98
- selected: boolean;
99
- disabled: boolean;
100
- }) => ReactNode;
101
- zIndex?: number;
102
- width?: number;
103
- className?: string;
104
- }
105
- /**
106
- * 把单字段中的层级路径解析为 [L1, L2, L3]。
107
- * 例:`广东/中山/三乡` → `['广东','中山','三乡']`;不足三级后续为 null。
108
- */
109
- export declare function parseNestedPathSegments(raw: unknown, maxDepth?: number): PisellCardPickerCategoryPath;
@@ -1,34 +0,0 @@
1
- import type { FloorMapElementKindConfig } from '../types';
2
- import { type FloorMapBuiltinShapeDef } from './floorMapBuiltinShapes';
3
- /** @deprecated 使用 {@link FLOOR_MAP_TOOLBAR_PALETTE_SIDEBAR_LIMIT} */
4
- export declare const FLOOR_MAP_TOOLBAR_PALETTE_VISIBLE_LIMIT = 5;
5
- /** 解析侧栏每类展示上限(至少 1) */
6
- export declare function resolvePaletteSidebarVisibleLimit(limit?: number): number;
7
- /** 分类下图元数是否应显示「查看全部」 */
8
- export declare function shouldShowPaletteViewAll(entryCount: number, limit?: number): boolean;
9
- /** 侧栏直接展示的 palette 条目(前 N 项) */
10
- export declare function getPaletteSidebarVisibleEntries<T>(entries: T[], limit?: number): T[];
11
- /** 批量从弹窗落点时的单项描述(与 {@link FloorMapPlaceMode} scene 子集对齐) */
12
- export interface FloorMapPaletteBulkPlaceItem {
13
- elementKind: string;
14
- builtinShapeKey?: string;
15
- }
16
- /**
17
- * 侧栏 / 弹窗共用的 palette 条目:普通 kind 一项;内置图形 kind 按预设展开多项。
18
- */
19
- export interface FloorMapToolbarPaletteEntry {
20
- key: string;
21
- kind: FloorMapElementKindConfig;
22
- builtinShapeKey?: string;
23
- label: string;
24
- shapeDef?: FloorMapBuiltinShapeDef;
25
- }
26
- /** 该 palette 条目是否点击即落画布(装饰内置图形单卡、无绑定 kind 等) */
27
- export declare function isDirectPlacePaletteEntry(entry: FloorMapToolbarPaletteEntry): boolean;
28
- export declare function buildToolbarPaletteEntries(kinds: FloorMapElementKindConfig[], resolveBuiltinLabel: (shapeDef: FloorMapBuiltinShapeDef) => string): FloorMapToolbarPaletteEntry[];
29
- /** palette 条目 → 批量落点 payload(每项数量 1) */
30
- export declare function paletteEntriesToBulkPlaceItems(entries: FloorMapToolbarPaletteEntry[]): FloorMapPaletteBulkPlaceItem[];
31
- /**
32
- * 按弹窗内各条目数量展开为落点列表(数量为 n 则重复 n 次,落点时阶梯偏移)。
33
- */
34
- export declare function expandPaletteEntriesByQuantity(entries: FloorMapToolbarPaletteEntry[], quantities: Readonly<Record<string, number>>): FloorMapPaletteBulkPlaceItem[];
@@ -1,10 +0,0 @@
1
- import React from 'react';
2
- import type { LineItemHolderOption } from '../../types';
3
- import './index.less';
4
- interface LineItemHoldersProps {
5
- dataSource?: any;
6
- holderOptions?: LineItemHolderOption[];
7
- isFormSubject?: boolean;
8
- }
9
- declare const LineItemHolders: (props: LineItemHoldersProps) => React.JSX.Element | null;
10
- export default LineItemHolders;