@buerli.io/react-cad 0.5.0-beta.1 → 0.5.0-beta.3

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/build/index.js CHANGED
@@ -18,7 +18,7 @@ import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutPr
18
18
  import Tooltip from 'antd/lib/tooltip';
19
19
  import RadioGroupImpl from 'antd/lib/radio/group';
20
20
  import RadioButtonImpl from 'antd/lib/radio/radioButton';
21
- import { Menu as Menu$1, Dropdown, Input, Typography, Tag, Table, Space, Tabs as Tabs$1, Divider as Divider$1, Button, Tooltip as Tooltip$1, Badge, Modal, Skeleton as Skeleton$1 } from 'antd';
21
+ import { Dropdown, Input, Typography, Tag, Table, Space, Tabs as Tabs$1, Divider as Divider$1, Button, Tooltip as Tooltip$1, Badge, Modal, Skeleton as Skeleton$1 } from 'antd';
22
22
  import AntdButton from 'antd/lib/button';
23
23
  import guid from 'uuid';
24
24
  import shallow from 'zustand/shallow';
@@ -32,8 +32,8 @@ import { SortableContainer, SortableElement } from 'react-sortable-hoc';
32
32
  import { RgbaColorPicker } from 'react-colorful';
33
33
  import * as deepmerge from 'deepmerge';
34
34
 
35
- function ownKeys$o(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
36
- function _objectSpread$o(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$o(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$o(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
35
+ function ownKeys$p(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
36
+ function _objectSpread$p(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$p(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$p(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
37
37
  function getGraphicId(tree, refOrObjId) {
38
38
  const res = {
39
39
  graphicId: refOrObjId,
@@ -96,7 +96,7 @@ function useSelectedItems(drawingId, refOrObjIds) {
96
96
  window.console.error('Product is not a CC_Part. Assembly is not supported now');
97
97
  }
98
98
  const createSelItem = React__default.useCallback(element => {
99
- return createGraphicItem(prodId, _objectSpread$o(_objectSpread$o({}, element), {}, {
99
+ return createGraphicItem(prodId, _objectSpread$p(_objectSpread$p({}, element), {}, {
100
100
  productId: prodId
101
101
  }));
102
102
  }, [prodId]);
@@ -121,7 +121,7 @@ function useSelectedItems(drawingId, refOrObjIds) {
121
121
  if (grIds && grIds.length > 0) {
122
122
  const elem = cont.map[Number(grIds[0])];
123
123
  if (elem) {
124
- elems.push(_objectSpread$o(_objectSpread$o({}, elem), {}, {
124
+ elems.push(_objectSpread$p(_objectSpread$p({}, elem), {}, {
125
125
  graphicId: contId,
126
126
  type: cont.type
127
127
  }));
@@ -157,8 +157,8 @@ function useSelectedItems(drawingId, refOrObjIds) {
157
157
  return selectedItems;
158
158
  }
159
159
 
160
- function ownKeys$n(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
161
- function _objectSpread$n(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$n(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$n(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
160
+ function ownKeys$o(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
161
+ function _objectSpread$o(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$o(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$o(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
162
162
  function addMembers(drawingId, ccObjId) {
163
163
  const drawingState = getDrawing(drawingId);
164
164
  const objInTree = drawingState.structure.tree[ccObjId];
@@ -169,7 +169,7 @@ function addMembers(drawingId, ccObjId) {
169
169
  const members = {};
170
170
  Object.keys(curMembers).forEach(memberName => {
171
171
  const curMember = curMembers[memberName];
172
- members[memberName] = _objectSpread$n(_objectSpread$n({}, curMember), {}, {
172
+ members[memberName] = _objectSpread$o(_objectSpread$o({}, curMember), {}, {
173
173
  name: memberName
174
174
  });
175
175
  if (curMember.type === MemberType.POINT && Array.isArray(curMember.value)) {
@@ -1059,8 +1059,8 @@ const isAngular = dim => {
1059
1059
  return dim.class === CCClasses.CCAngularDimension || dim.class === CCClasses.CCAngularFeatureDimension || dim.class === CCClasses.CCAngularRefDimension;
1060
1060
  };
1061
1061
 
1062
- function ownKeys$m(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1063
- function _objectSpread$m(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$m(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$m(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1062
+ function ownKeys$n(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1063
+ function _objectSpread$n(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$n(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$n(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1064
1064
  const appApi = (set, get) => ({
1065
1065
  assemblyTree: {
1066
1066
  startProdEditing: (drawingId, objId) => {
@@ -1069,7 +1069,7 @@ const appApi = (set, get) => ({
1069
1069
  const curNode = api.getState().drawing.refs[drawingId].structure.currentNode;
1070
1070
  res = state.assemblyTree.prodStack;
1071
1071
  curNode && res.push(curNode);
1072
- return _objectSpread$m(_objectSpread$m({}, state), {}, {
1072
+ return _objectSpread$n(_objectSpread$n({}, state), {}, {
1073
1073
  assemblyTree: {
1074
1074
  prodStack: [...res]
1075
1075
  }
@@ -1084,7 +1084,7 @@ const appApi = (set, get) => ({
1084
1084
  set(state => {
1085
1085
  const res = state.assemblyTree.prodStack;
1086
1086
  res.pop();
1087
- return _objectSpread$m(_objectSpread$m({}, state), {}, {
1087
+ return _objectSpread$n(_objectSpread$n({}, state), {}, {
1088
1088
  assemblyTree: {
1089
1089
  prodStack: [...res]
1090
1090
  }
@@ -1093,7 +1093,7 @@ const appApi = (set, get) => ({
1093
1093
  ccAPI.assemblyBuilder.setCurrentNode(drawingId, prevProd).catch(console.warn);
1094
1094
  },
1095
1095
  clearProdStack: () => {
1096
- set(state => _objectSpread$m(_objectSpread$m({}, state), {}, {
1096
+ set(state => _objectSpread$n(_objectSpread$n({}, state), {}, {
1097
1097
  assemblyTree: {
1098
1098
  prodStack: []
1099
1099
  }
@@ -1102,7 +1102,7 @@ const appApi = (set, get) => ({
1102
1102
  },
1103
1103
  blankDiv: {
1104
1104
  show: callback => {
1105
- set(state => _objectSpread$m(_objectSpread$m({}, state), {}, {
1105
+ set(state => _objectSpread$n(_objectSpread$n({}, state), {}, {
1106
1106
  blankDiv: {
1107
1107
  isActive: true,
1108
1108
  onClose: callback
@@ -1110,7 +1110,7 @@ const appApi = (set, get) => ({
1110
1110
  }));
1111
1111
  },
1112
1112
  hide: () => {
1113
- set(state => _objectSpread$m(_objectSpread$m({}, state), {}, {
1113
+ set(state => _objectSpread$n(_objectSpread$n({}, state), {}, {
1114
1114
  blankDiv: {
1115
1115
  isActive: false,
1116
1116
  onClose: undefined
@@ -2269,13 +2269,13 @@ function refIdChanged(refId, defId, tree) {
2269
2269
  }
2270
2270
  }
2271
2271
  function useRefsParam(drawingId, objId, memberName) {
2272
- const member = useDrawing(drawingId, d => {
2273
- var _d$structure$tree$obj, _d$structure$tree$obj2;
2274
- return (_d$structure$tree$obj = d.structure.tree[objId]) == null ? void 0 : (_d$structure$tree$obj2 = _d$structure$tree$obj.members) == null ? void 0 : _d$structure$tree$obj2[memberName];
2272
+ const members = useDrawingArr(drawingId, d => {
2273
+ var _d$structure$tree$obj, _d$structure$tree$obj2, _d$structure$tree$obj3;
2274
+ return (_d$structure$tree$obj = d.structure.tree[objId]) == null ? void 0 : (_d$structure$tree$obj2 = _d$structure$tree$obj.members) == null ? void 0 : (_d$structure$tree$obj3 = _d$structure$tree$obj2[memberName]) == null ? void 0 : _d$structure$tree$obj3.members;
2275
2275
  });
2276
2276
  const defaults = React__default.useMemo(() => {
2277
- return member.members.map(m => m.value);
2278
- }, [member]);
2277
+ return members.map(m => m.value);
2278
+ }, [members]);
2279
2279
  const [userValue, setUserValue] = React__default.useState(defaults);
2280
2280
  const validateFns = React__default.useRef([]);
2281
2281
  React__default.useEffect(() => {
@@ -2322,8 +2322,8 @@ function useRefsParam(drawingId, objId, memberName) {
2322
2322
  });
2323
2323
  }
2324
2324
 
2325
- function ownKeys$l(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2326
- function _objectSpread$l(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$l(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$l(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2325
+ function ownKeys$m(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2326
+ function _objectSpread$m(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$m(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$m(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2327
2327
 
2328
2328
  /**
2329
2329
  * Implies the following data structure:
@@ -2451,7 +2451,7 @@ function useTreeObjSelection(drawingId, objId) {
2451
2451
  const isSelected = useIsSelected$1(drawingId, objId);
2452
2452
  const handlers = React__default.useMemo(() => {
2453
2453
  if (isSelectable) {
2454
- return _objectSpread$l(_objectSpread$l({}, hHandlers), sHandlers);
2454
+ return _objectSpread$m(_objectSpread$m({}, hHandlers), sHandlers);
2455
2455
  }
2456
2456
  return {};
2457
2457
  }, [isSelectable, hHandlers, sHandlers]);
@@ -2763,7 +2763,7 @@ function getSketchGrItems(drawingId, childId) {
2763
2763
  }
2764
2764
  function useModes(drawingId, sketchLines, setParamRefs, selectorsOrder) {
2765
2765
  const defCustomSelect = React__default.useCallback((selId, items) => {
2766
- setParamRefs(items);
2766
+ setParamRefs(selId, items);
2767
2767
  const maxLen = getDrawing(drawingId).selection.refs[selId].maxLen;
2768
2768
  // If items len === 0 selector should not be switched
2769
2769
  if (maxLen > 0 && items.length >= maxLen) {
@@ -2814,6 +2814,7 @@ function useModes(drawingId, sketchLines, setParamRefs, selectorsOrder) {
2814
2814
  }), [defCustomSelect, drawingId]);
2815
2815
  return sketchLines ? [chainMode, allMode, singleMode] : [singleMode];
2816
2816
  }
2817
+
2817
2818
  const RefsEditor = ({
2818
2819
  children,
2819
2820
  param,
@@ -2835,7 +2836,7 @@ const RefsEditor = ({
2835
2836
  } = param;
2836
2837
  const picker = React__default.useRef(customIdPicker);
2837
2838
  const [selectorId, setSelectorId] = React__default.useState();
2838
- const setRefsFromItems = React__default.useCallback(selItems => {
2839
+ const setRefsFromItems = React__default.useCallback((selId, selItems) => {
2839
2840
  const newRefs = selItems.map(item => picker.current(item.data));
2840
2841
  setUserValue(newRefs);
2841
2842
  }, [setUserValue]);
@@ -2917,15 +2918,15 @@ const SelectionRestorer = ({
2917
2918
  const selector = getDrawing(drawingId).selection.refs[selectorId];
2918
2919
  const selApi = getDrawing(drawingId).api.selection;
2919
2920
  if (!selApi.areItemsSelected(res, selectorId) || selItems.length !== selector.items.length) {
2920
- setParamRefs(res);
2921
+ setParamRefs(selectorId, res);
2921
2922
  selApi.setItems(selectorId, res);
2922
2923
  }
2923
2924
  }, [graphicSelItems, grItemsIds, selectorId, drawingId, setParamRefs, selItems]);
2924
2925
  return null;
2925
2926
  };
2926
2927
 
2927
- function ownKeys$k(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2928
- function _objectSpread$k(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$k(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$k(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2928
+ function ownKeys$l(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2929
+ function _objectSpread$l(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$l(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$l(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2929
2930
 
2930
2931
  /**
2931
2932
  * Implies the following data structure:
@@ -3019,7 +3020,7 @@ function useMateSelection(drawingId, matePath, csysId) {
3019
3020
  }));
3020
3021
  const handlers = React__default.useMemo(() => {
3021
3022
  if (isSelectable) {
3022
- return _objectSpread$k(_objectSpread$k({}, hHandlers), sHandlers);
3023
+ return _objectSpread$l(_objectSpread$l({}, hHandlers), sHandlers);
3023
3024
  }
3024
3025
  return {};
3025
3026
  }, [isSelectable, hHandlers, sHandlers]);
@@ -3189,10 +3190,10 @@ const MateRestorer = ({
3189
3190
  setMateParam
3190
3191
  }) => {
3191
3192
  const selItems = React__default.useMemo(() => {
3192
- if (!matePath || !csysId) {
3193
+ const tree = getDrawing(drawingId).structure.tree;
3194
+ if (!matePath || !csysId || !tree[csysId] || matePath.some(id => !tree[id])) {
3193
3195
  return [];
3194
3196
  }
3195
- const tree = getDrawing(drawingId).structure.tree;
3196
3197
  const mate = tree[csysId];
3197
3198
  return [createMateItem(matePath, mate, flip, reoriented)];
3198
3199
  }, [drawingId, matePath, csysId, flip, reoriented]);
@@ -3679,8 +3680,8 @@ var index$x = /*#__PURE__*/Object.freeze({
3679
3680
  description: description$x
3680
3681
  });
3681
3682
 
3682
- function ownKeys$j(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3683
- function _objectSpread$j(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$j(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$j(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3683
+ function ownKeys$k(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3684
+ function _objectSpread$k(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$k(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$k(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3684
3685
  function parseVal(val) {
3685
3686
  const float = Number(val);
3686
3687
  if (!isNaN(float)) {
@@ -3903,11 +3904,11 @@ const PointEditor = ({
3903
3904
  const curProdId = getDrawing(drawingId).structure.currentProduct;
3904
3905
  const tree = getDrawing(drawingId).structure.tree;
3905
3906
  const exprSetId = tree[curProdId].expressionSet;
3906
- ccAPI.common.evaluateExpression(drawingId, exprSetId, userValue.value).then(res => setDisplayState(state => _objectSpread$j(_objectSpread$j({}, state), {}, {
3907
+ ccAPI.common.evaluateExpression(drawingId, exprSetId, userValue.value).then(res => setDisplayState(state => _objectSpread$k(_objectSpread$k({}, state), {}, {
3907
3908
  displayVals: res !== null ? res : state.displayVals
3908
3909
  }))).catch();
3909
3910
  } else {
3910
- setDisplayState(state => _objectSpread$j(_objectSpread$j({}, state), {}, {
3911
+ setDisplayState(state => _objectSpread$k(_objectSpread$k({}, state), {}, {
3911
3912
  displayVals: userValue.value
3912
3913
  }));
3913
3914
  }
@@ -3921,7 +3922,7 @@ const PointEditor = ({
3921
3922
  ccAPI.common.evaluateExpression(drawingId, exprSetId, userValue.value).then(res => setDisplayState(state => ({
3922
3923
  editMode: false,
3923
3924
  displayVals: res !== null ? res : state.displayVals
3924
- }))).catch(() => setDisplayState(state => _objectSpread$j(_objectSpread$j({}, state), {}, {
3925
+ }))).catch(() => setDisplayState(state => _objectSpread$k(_objectSpread$k({}, state), {}, {
3925
3926
  editMode: false
3926
3927
  })));
3927
3928
  } else {
@@ -3939,7 +3940,7 @@ const PointEditor = ({
3939
3940
  caption: caption,
3940
3941
  highlighted: param.isChanged()
3941
3942
  }, !editMode && /*#__PURE__*/React__default.createElement(DisplayBase, {
3942
- onClick: () => setDisplayState(state => _objectSpread$j(_objectSpread$j({}, state), {}, {
3943
+ onClick: () => setDisplayState(state => _objectSpread$k(_objectSpread$k({}, state), {}, {
3943
3944
  editMode: true
3944
3945
  }))
3945
3946
  }, /*#__PURE__*/React__default.createElement(Tooltip, {
@@ -4185,10 +4186,10 @@ var Members$r;
4185
4186
  Members["taperAngle"] = "taperAngle";
4186
4187
  Members["capEnds"] = "capEnds";
4187
4188
  })(Members$r || (Members$r = {}));
4188
- var RegionMembers$1;
4189
+ var RegionMembers$2;
4189
4190
  (function (RegionMembers) {
4190
4191
  RegionMembers["Curves"] = "curves";
4191
- })(RegionMembers$1 || (RegionMembers$1 = {}));
4192
+ })(RegionMembers$2 || (RegionMembers$2 = {}));
4192
4193
  const typesCaptions$4 = {
4193
4194
  [ExtrusionType.CUSTOM]: 'Custom',
4194
4195
  [ExtrusionType.DOWN]: 'Down',
@@ -4206,7 +4207,7 @@ const RootImpl$w = ({
4206
4207
  var _drawing$structure$tr, _drawing$structure$tr2;
4207
4208
  return (_drawing$structure$tr = drawing.structure.tree[objectId]) == null ? void 0 : (_drawing$structure$tr2 = _drawing$structure$tr.members) == null ? void 0 : _drawing$structure$tr2.region.value;
4208
4209
  });
4209
- const region = useRefsParam(drawingId, sketchRegionId, RegionMembers$1.Curves);
4210
+ const region = useRefsParam(drawingId, sketchRegionId, RegionMembers$2.Curves);
4210
4211
  const type = useTypeParam(drawingId, objectId, Members$r.Type);
4211
4212
  const limit1 = useNumParam(drawingId, objectId, Members$r.Limit1);
4212
4213
  const limit2 = useNumParam(drawingId, objectId, Members$r.Limit2);
@@ -4329,10 +4330,10 @@ var Members$q;
4329
4330
  Members["StartAngle"] = "startAngle";
4330
4331
  Members["EndAngle"] = "endAngle";
4331
4332
  })(Members$q || (Members$q = {}));
4332
- var RegionMembers;
4333
+ var RegionMembers$1;
4333
4334
  (function (RegionMembers) {
4334
4335
  RegionMembers["Curves"] = "curves";
4335
- })(RegionMembers || (RegionMembers = {}));
4336
+ })(RegionMembers$1 || (RegionMembers$1 = {}));
4336
4337
  const RootImpl$v = ({
4337
4338
  drawingId,
4338
4339
  pluginId
@@ -4344,7 +4345,7 @@ const RootImpl$v = ({
4344
4345
  var _drawing$structure$tr, _drawing$structure$tr2;
4345
4346
  return (_drawing$structure$tr = drawing.structure.tree[objectId]) == null ? void 0 : (_drawing$structure$tr2 = _drawing$structure$tr.members) == null ? void 0 : _drawing$structure$tr2.region.value;
4346
4347
  });
4347
- const region = useRefsParam(drawingId, sketchRegionId, RegionMembers.Curves);
4348
+ const region = useRefsParam(drawingId, sketchRegionId, RegionMembers$1.Curves);
4348
4349
  const axis = useRefsParam(drawingId, objectId, Members$q.Axis);
4349
4350
  const startAngle = useNumParam(drawingId, objectId, Members$q.StartAngle, {
4350
4351
  angle: true
@@ -5688,8 +5689,8 @@ const Digits = ({
5688
5689
 
5689
5690
  const vectorToString = (point, digits) => `${point.toArray().map(n => MathUtils.round(n, digits)).join(', ')}`;
5690
5691
 
5691
- function ownKeys$i(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
5692
- function _objectSpread$i(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$i(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$i(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
5692
+ function ownKeys$j(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
5693
+ function _objectSpread$j(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$j(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$j(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
5693
5694
  const Excluded = [GraphicType.LOOP].concat(EntityTypes);
5694
5695
  const RootImpl$g = ({
5695
5696
  drawingId,
@@ -5760,7 +5761,7 @@ const Output = ({
5760
5761
  const {
5761
5762
  value
5762
5763
  } = res.measureData;
5763
- return _objectSpread$i(_objectSpread$i({}, res), {}, {
5764
+ return _objectSpread$j(_objectSpread$j({}, res), {}, {
5764
5765
  asString: MathUtils.round(value, digits)
5765
5766
  });
5766
5767
  }
@@ -5770,13 +5771,13 @@ const Output = ({
5770
5771
  const {
5771
5772
  value
5772
5773
  } = res.measureData;
5773
- return _objectSpread$i(_objectSpread$i({}, res), {}, {
5774
+ return _objectSpread$j(_objectSpread$j({}, res), {}, {
5774
5775
  asString: vectorToString(value, digits)
5775
5776
  });
5776
5777
  }
5777
5778
  }
5778
5779
  }
5779
- return _objectSpread$i(_objectSpread$i({}, res), {}, {
5780
+ return _objectSpread$j(_objectSpread$j({}, res), {}, {
5780
5781
  asString: ''
5781
5782
  });
5782
5783
  });
@@ -6547,8 +6548,8 @@ function getSketchState(drawingId, pluginId) {
6547
6548
  return plugin.state;
6548
6549
  }
6549
6550
 
6550
- function ownKeys$h(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6551
- function _objectSpread$h(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$h(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$h(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6551
+ function ownKeys$i(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6552
+ function _objectSpread$i(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$i(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$i(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6552
6553
  function CreateAngle(drawingId, pluginId) {
6553
6554
  const {
6554
6555
  set
@@ -6591,8 +6592,8 @@ function CreateAngle(drawingId, pluginId) {
6591
6592
  set(state_ => {
6592
6593
  const tmpAngularDimension = state_.tmpObjects[tmpDimensionId];
6593
6594
  return {
6594
- tmpObjects: _objectSpread$h(_objectSpread$h({}, state_.tmpObjects), {}, {
6595
- [tmpDimensionId]: _objectSpread$h(_objectSpread$h({}, tmpAngularDimension), params)
6595
+ tmpObjects: _objectSpread$i(_objectSpread$i({}, state_.tmpObjects), {}, {
6596
+ [tmpDimensionId]: _objectSpread$i(_objectSpread$i({}, tmpAngularDimension), params)
6596
6597
  })
6597
6598
  };
6598
6599
  });
@@ -6618,7 +6619,7 @@ function CreateAngle(drawingId, pluginId) {
6618
6619
  const dir1 = linesInfo.dir1;
6619
6620
  const center = linesInfo.center;
6620
6621
  const dimPos = center.clone().addScaledVector(dir0.clone().add(dir1).normalize(), 10);
6621
- const tmpAngularDimension = _objectSpread$h(_objectSpread$h({
6622
+ const tmpAngularDimension = _objectSpread$i(_objectSpread$i({
6622
6623
  class: TmpObjClasses.AngularDimension,
6623
6624
  id: tmpDimensionId
6624
6625
  }, linesInfo), {}, {
@@ -6723,8 +6724,8 @@ function getGeometryPriority(object) {
6723
6724
  return -1;
6724
6725
  }
6725
6726
 
6726
- function ownKeys$g(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6727
- function _objectSpread$g(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$g(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$g(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6727
+ function ownKeys$h(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6728
+ function _objectSpread$h(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$h(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$h(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6728
6729
  let timerId;
6729
6730
  const setHoverState = (drawingId, pluginId, cycle, objects) => {
6730
6731
  const {
@@ -6762,7 +6763,7 @@ const setHoverState = (drawingId, pluginId, cycle, objects) => {
6762
6763
  return {
6763
6764
  hovered: hoveredId,
6764
6765
  highlighted: [hoveredId, ...linkedConstraints],
6765
- constraintsToGeometry: _objectSpread$g(_objectSpread$g({}, state_.constraintsToGeometry), constraintsToGeometry),
6766
+ constraintsToGeometry: _objectSpread$h(_objectSpread$h({}, state_.constraintsToGeometry), constraintsToGeometry),
6766
6767
  interaction: {
6767
6768
  cycle,
6768
6769
  objects
@@ -7218,8 +7219,8 @@ const MergedWrapper = ({
7218
7219
  );
7219
7220
  };
7220
7221
 
7221
- function ownKeys$f(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
7222
- function _objectSpread$f(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$f(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$f(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7222
+ function ownKeys$g(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
7223
+ function _objectSpread$g(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$g(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$g(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7223
7224
 
7224
7225
  // Artificial delay in 16 ms.
7225
7226
  const artifDelay = 16;
@@ -7483,7 +7484,7 @@ function Drag(drawingId, pluginId, camControls) {
7483
7484
  name: HandlersList.DRAG,
7484
7485
  filter,
7485
7486
  onDeactivate,
7486
- pointerHandlers: _objectSpread$f({
7487
+ pointerHandlers: _objectSpread$g({
7487
7488
  onPointerDown,
7488
7489
  onPointerUp,
7489
7490
  onPointerMove
@@ -7495,8 +7496,8 @@ function Drag(drawingId, pluginId, camControls) {
7495
7496
  };
7496
7497
  }
7497
7498
 
7498
- function ownKeys$e(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
7499
- function _objectSpread$e(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$e(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$e(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7499
+ function ownKeys$f(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
7500
+ function _objectSpread$f(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$f(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$f(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7500
7501
  function DrawPoint(drawingId, pluginId) {
7501
7502
  const {
7502
7503
  set
@@ -7561,8 +7562,8 @@ function DrawPoint(drawingId, pluginId) {
7561
7562
  const tmpPoint = state.tmpObjects[tmpPointId];
7562
7563
  return {
7563
7564
  mousePos,
7564
- tmpObjects: _objectSpread$e(_objectSpread$e({}, state.tmpObjects), {}, {
7565
- [tmpPointId]: _objectSpread$e(_objectSpread$e({}, tmpPoint), {}, {
7565
+ tmpObjects: _objectSpread$f(_objectSpread$f({}, state.tmpObjects), {}, {
7566
+ [tmpPointId]: _objectSpread$f(_objectSpread$f({}, tmpPoint), {}, {
7566
7567
  position: mousePos
7567
7568
  })
7568
7569
  })
@@ -7583,8 +7584,8 @@ function DrawPoint(drawingId, pluginId) {
7583
7584
  };
7584
7585
  }
7585
7586
 
7586
- function ownKeys$d(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
7587
- function _objectSpread$d(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$d(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$d(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7587
+ function ownKeys$e(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
7588
+ function _objectSpread$e(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$e(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$e(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7588
7589
  function DrawLine(drawingId, pluginId) {
7589
7590
  // Global hooks:
7590
7591
  const {
@@ -7667,7 +7668,7 @@ function DrawLine(drawingId, pluginId) {
7667
7668
  endPId: tmpEndP.id
7668
7669
  };
7669
7670
  return {
7670
- tmpObjects: _objectSpread$d(_objectSpread$d({}, state.tmpObjects), {}, {
7671
+ tmpObjects: _objectSpread$e(_objectSpread$e({}, state.tmpObjects), {}, {
7671
7672
  [tmpStartP.id]: tmpStartP,
7672
7673
  [tmpLine.id]: tmpLine
7673
7674
  })
@@ -7710,8 +7711,8 @@ function DrawLine(drawingId, pluginId) {
7710
7711
  const tmpStartP = state.tmpObjects[tmpStartPId];
7711
7712
  const tmpEndP = state.tmpObjects[tmpEndPId];
7712
7713
  return {
7713
- tmpObjects: _objectSpread$d(_objectSpread$d({}, state.tmpObjects), {}, {
7714
- [tmpStartPId]: _objectSpread$d(_objectSpread$d({}, tmpStartP), {}, {
7714
+ tmpObjects: _objectSpread$e(_objectSpread$e({}, state.tmpObjects), {}, {
7715
+ [tmpStartPId]: _objectSpread$e(_objectSpread$e({}, tmpStartP), {}, {
7715
7716
  position: tmpEndP.position.clone()
7716
7717
  })
7717
7718
  })
@@ -7729,8 +7730,8 @@ function DrawLine(drawingId, pluginId) {
7729
7730
  const tmpEndP = state.tmpObjects[tmpEndPId];
7730
7731
  return {
7731
7732
  mousePos,
7732
- tmpObjects: _objectSpread$d(_objectSpread$d({}, state.tmpObjects), {}, {
7733
- [tmpEndPId]: _objectSpread$d(_objectSpread$d({}, tmpEndP), {}, {
7733
+ tmpObjects: _objectSpread$e(_objectSpread$e({}, state.tmpObjects), {}, {
7734
+ [tmpEndPId]: _objectSpread$e(_objectSpread$e({}, tmpEndP), {}, {
7734
7735
  position: mousePos
7735
7736
  })
7736
7737
  })
@@ -7754,8 +7755,8 @@ function DrawLine(drawingId, pluginId) {
7754
7755
  };
7755
7756
  }
7756
7757
 
7757
- function ownKeys$c(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
7758
- function _objectSpread$c(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$c(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$c(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7758
+ function ownKeys$d(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
7759
+ function _objectSpread$d(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$d(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$d(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7759
7760
  function DrawRectangle(drawingId, pluginId) {
7760
7761
  const {
7761
7762
  set
@@ -7836,7 +7837,7 @@ function DrawRectangle(drawingId, pluginId) {
7836
7837
  isSquare: false,
7837
7838
  isCentered: false
7838
7839
  };
7839
- const newTmpObjects = _objectSpread$c(_objectSpread$c({}, state.tmpObjects), {}, {
7840
+ const newTmpObjects = _objectSpread$d(_objectSpread$d({}, state.tmpObjects), {}, {
7840
7841
  [tmpRect.id]: tmpRect
7841
7842
  });
7842
7843
  delete newTmpObjects[tmpPointId];
@@ -7896,19 +7897,19 @@ function DrawRectangle(drawingId, pluginId) {
7896
7897
  let newTmpObjs = null;
7897
7898
  if (additionIndex === 0) {
7898
7899
  const tmpPoint = state.tmpObjects[tmpPointId];
7899
- newTmpObjs = _objectSpread$c(_objectSpread$c({}, state.tmpObjects), {}, {
7900
- [tmpPointId]: _objectSpread$c(_objectSpread$c({}, tmpPoint), {}, {
7900
+ newTmpObjs = _objectSpread$d(_objectSpread$d({}, state.tmpObjects), {}, {
7901
+ [tmpPointId]: _objectSpread$d(_objectSpread$d({}, tmpPoint), {}, {
7901
7902
  position: snappedPos
7902
7903
  })
7903
7904
  });
7904
7905
  } else {
7905
- newTmpObjs = _objectSpread$c(_objectSpread$c({}, state.tmpObjects), {}, {
7906
- [tmpRectId]: _objectSpread$c(_objectSpread$c({}, state.tmpObjects[tmpRectId]), {}, {
7906
+ newTmpObjs = _objectSpread$d(_objectSpread$d({}, state.tmpObjects), {}, {
7907
+ [tmpRectId]: _objectSpread$d(_objectSpread$d({}, state.tmpObjects[tmpRectId]), {}, {
7907
7908
  end: new THREE.Vector3(snappedPos.x, snappedPos.y, 0)
7908
7909
  })
7909
7910
  });
7910
7911
  }
7911
- return _objectSpread$c(_objectSpread$c({}, state), {}, {
7912
+ return _objectSpread$d(_objectSpread$d({}, state), {}, {
7912
7913
  tmpObjects: newTmpObjs,
7913
7914
  mousePos: snappedPos
7914
7915
  });
@@ -7917,18 +7918,18 @@ function DrawRectangle(drawingId, pluginId) {
7917
7918
  };
7918
7919
  const keydown = e => {
7919
7920
  if (e.code === 'ShiftLeft' || e.code === 'ShiftRight') {
7920
- set(state => _objectSpread$c(_objectSpread$c({}, state), {}, {
7921
- tmpObjects: _objectSpread$c(_objectSpread$c({}, state.tmpObjects), {}, {
7922
- [tmpRectId]: _objectSpread$c(_objectSpread$c({}, state.tmpObjects[tmpRectId]), {}, {
7921
+ set(state => _objectSpread$d(_objectSpread$d({}, state), {}, {
7922
+ tmpObjects: _objectSpread$d(_objectSpread$d({}, state.tmpObjects), {}, {
7923
+ [tmpRectId]: _objectSpread$d(_objectSpread$d({}, state.tmpObjects[tmpRectId]), {}, {
7923
7924
  isSquare: true
7924
7925
  })
7925
7926
  })
7926
7927
  }));
7927
7928
  } else if (e.code === 'AltLeft' || e.code === 'AltRight') {
7928
7929
  e.preventDefault();
7929
- set(state => _objectSpread$c(_objectSpread$c({}, state), {}, {
7930
- tmpObjects: _objectSpread$c(_objectSpread$c({}, state.tmpObjects), {}, {
7931
- [tmpRectId]: _objectSpread$c(_objectSpread$c({}, state.tmpObjects[tmpRectId]), {}, {
7930
+ set(state => _objectSpread$d(_objectSpread$d({}, state), {}, {
7931
+ tmpObjects: _objectSpread$d(_objectSpread$d({}, state.tmpObjects), {}, {
7932
+ [tmpRectId]: _objectSpread$d(_objectSpread$d({}, state.tmpObjects[tmpRectId]), {}, {
7932
7933
  isCentered: true
7933
7934
  })
7934
7935
  })
@@ -7937,18 +7938,18 @@ function DrawRectangle(drawingId, pluginId) {
7937
7938
  };
7938
7939
  const keyup = e => {
7939
7940
  if (e.code === 'ShiftLeft' || e.code === 'ShiftRight') {
7940
- set(state => _objectSpread$c(_objectSpread$c({}, state), {}, {
7941
- tmpObjects: _objectSpread$c(_objectSpread$c({}, state.tmpObjects), {}, {
7942
- [tmpRectId]: _objectSpread$c(_objectSpread$c({}, state.tmpObjects[tmpRectId]), {}, {
7941
+ set(state => _objectSpread$d(_objectSpread$d({}, state), {}, {
7942
+ tmpObjects: _objectSpread$d(_objectSpread$d({}, state.tmpObjects), {}, {
7943
+ [tmpRectId]: _objectSpread$d(_objectSpread$d({}, state.tmpObjects[tmpRectId]), {}, {
7943
7944
  isSquare: false
7944
7945
  })
7945
7946
  })
7946
7947
  }));
7947
7948
  } else if (e.code === 'AltLeft' || e.code === 'AltRight') {
7948
7949
  e.preventDefault();
7949
- set(state => _objectSpread$c(_objectSpread$c({}, state), {}, {
7950
- tmpObjects: _objectSpread$c(_objectSpread$c({}, state.tmpObjects), {}, {
7951
- [tmpRectId]: _objectSpread$c(_objectSpread$c({}, state.tmpObjects[tmpRectId]), {}, {
7950
+ set(state => _objectSpread$d(_objectSpread$d({}, state), {}, {
7951
+ tmpObjects: _objectSpread$d(_objectSpread$d({}, state.tmpObjects), {}, {
7952
+ [tmpRectId]: _objectSpread$d(_objectSpread$d({}, state.tmpObjects[tmpRectId]), {}, {
7952
7953
  isCentered: false
7953
7954
  })
7954
7955
  })
@@ -8131,8 +8132,8 @@ const Circle$1 = ({
8131
8132
  }), /*#__PURE__*/React__default.createElement("meshBasicMaterial", materialProps));
8132
8133
  };
8133
8134
 
8134
- function ownKeys$b(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
8135
- function _objectSpread$b(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$b(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$b(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
8135
+ function ownKeys$c(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
8136
+ function _objectSpread$c(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$c(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$c(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
8136
8137
  function DrawArc(drawingId, pluginId, arcType) {
8137
8138
  // Global hooks:
8138
8139
  const {
@@ -8186,7 +8187,7 @@ function DrawArc(drawingId, pluginId, arcType) {
8186
8187
  additionIndex = 0;
8187
8188
  lastAddedEndPointId = NOCCID;
8188
8189
  set(state => {
8189
- const tmpStartP = _objectSpread$b(_objectSpread$b({}, state.tmpObjects[tmpStartPId]), {}, {
8190
+ const tmpStartP = _objectSpread$c(_objectSpread$c({}, state.tmpObjects[tmpStartPId]), {}, {
8190
8191
  position: lastMousePos.clone()
8191
8192
  });
8192
8193
  return {
@@ -8199,20 +8200,20 @@ function DrawArc(drawingId, pluginId, arcType) {
8199
8200
  additionIndex = 1;
8200
8201
  set(state => {
8201
8202
  const tmpStartP = state.tmpObjects[tmpStartPId];
8202
- const tmpEndP = _objectSpread$b(_objectSpread$b({}, state.tmpObjects[tmpEndPId]), {}, {
8203
+ const tmpEndP = _objectSpread$c(_objectSpread$c({}, state.tmpObjects[tmpEndPId]), {}, {
8203
8204
  position: lastMousePos.clone()
8204
8205
  });
8205
8206
  const centerPos = calculateCenterPoint(tmpStartP.position, lastMousePos, lastMousePos);
8206
- const tmpCenterP = _objectSpread$b(_objectSpread$b({}, state.tmpObjects[tmpCenterPId]), {}, {
8207
+ const tmpCenterP = _objectSpread$c(_objectSpread$c({}, state.tmpObjects[tmpCenterPId]), {}, {
8207
8208
  position: centerPos ? centerPos : lastMousePos.clone()
8208
8209
  });
8209
- const tmpArc = _objectSpread$b(_objectSpread$b({}, state.tmpObjects[tmpArcId]), {}, {
8210
+ const tmpArc = _objectSpread$c(_objectSpread$c({}, state.tmpObjects[tmpArcId]), {}, {
8210
8211
  // In case centerPos couldn't be calculated, the arc should be drawn as a line
8211
8212
  drawAsLine: centerPos === undefined,
8212
8213
  clockwise: false
8213
8214
  });
8214
8215
  return {
8215
- tmpObjects: _objectSpread$b(_objectSpread$b({}, state.tmpObjects), {}, {
8216
+ tmpObjects: _objectSpread$c(_objectSpread$c({}, state.tmpObjects), {}, {
8216
8217
  [tmpEndP.id]: tmpEndP,
8217
8218
  [tmpCenterP.id]: tmpCenterP,
8218
8219
  [tmpArc.id]: tmpArc
@@ -8325,7 +8326,7 @@ function DrawArc(drawingId, pluginId, arcType) {
8325
8326
  clockwise: false
8326
8327
  };
8327
8328
  return {
8328
- tmpObjects: _objectSpread$b(_objectSpread$b({}, state.tmpObjects), {}, {
8329
+ tmpObjects: _objectSpread$c(_objectSpread$c({}, state.tmpObjects), {}, {
8329
8330
  [tmpEndP.id]: tmpEndP,
8330
8331
  [tmpCenterP.id]: tmpCenterP,
8331
8332
  [tmpArc.id]: tmpArc
@@ -8354,7 +8355,7 @@ function DrawArc(drawingId, pluginId, arcType) {
8354
8355
  clockwise: false
8355
8356
  };
8356
8357
  return {
8357
- tmpObjects: _objectSpread$b(_objectSpread$b({}, state.tmpObjects), {}, {
8358
+ tmpObjects: _objectSpread$c(_objectSpread$c({}, state.tmpObjects), {}, {
8358
8359
  [tmpCenterP.id]: tmpCenterP,
8359
8360
  [tmpArc.id]: tmpArc
8360
8361
  })
@@ -8416,11 +8417,11 @@ function DrawArc(drawingId, pluginId, arcType) {
8416
8417
  const tmpEndP = state.tmpObjects[tmpEndPId];
8417
8418
  const tmpCenterP = state.tmpObjects[tmpCenterPId];
8418
8419
  return {
8419
- tmpObjects: _objectSpread$b(_objectSpread$b({}, state.tmpObjects), {}, {
8420
- [tmpStartPId]: _objectSpread$b(_objectSpread$b({}, tmpStartP), {}, {
8420
+ tmpObjects: _objectSpread$c(_objectSpread$c({}, state.tmpObjects), {}, {
8421
+ [tmpStartPId]: _objectSpread$c(_objectSpread$c({}, tmpStartP), {}, {
8421
8422
  position: tmpEndP.position.clone()
8422
8423
  }),
8423
- [tmpCenterPId]: _objectSpread$b(_objectSpread$b({}, tmpCenterP), {}, {
8424
+ [tmpCenterPId]: _objectSpread$c(_objectSpread$c({}, tmpCenterP), {}, {
8424
8425
  position: tmpEndP.position.clone()
8425
8426
  })
8426
8427
  })
@@ -8440,8 +8441,8 @@ function DrawArc(drawingId, pluginId, arcType) {
8440
8441
  const tmpStartP = state.tmpObjects[tmpStartPId];
8441
8442
  return {
8442
8443
  mousePos: lastMousePos,
8443
- tmpObjects: _objectSpread$b(_objectSpread$b({}, state.tmpObjects), {}, {
8444
- [tmpStartPId]: _objectSpread$b(_objectSpread$b({}, tmpStartP), {}, {
8444
+ tmpObjects: _objectSpread$c(_objectSpread$c({}, state.tmpObjects), {}, {
8445
+ [tmpStartPId]: _objectSpread$c(_objectSpread$c({}, tmpStartP), {}, {
8445
8446
  position: lastMousePos.clone()
8446
8447
  })
8447
8448
  })
@@ -8454,14 +8455,14 @@ function DrawArc(drawingId, pluginId, arcType) {
8454
8455
  const centerPos = calculateCenterPoint(tmpStartP.position, lastMousePos, lastMousePos);
8455
8456
  return {
8456
8457
  mousePos: lastMousePos,
8457
- tmpObjects: _objectSpread$b(_objectSpread$b({}, state.tmpObjects), {}, {
8458
- [tmpEndPId]: _objectSpread$b(_objectSpread$b({}, tmpEndP), {}, {
8458
+ tmpObjects: _objectSpread$c(_objectSpread$c({}, state.tmpObjects), {}, {
8459
+ [tmpEndPId]: _objectSpread$c(_objectSpread$c({}, tmpEndP), {}, {
8459
8460
  position: lastMousePos.clone()
8460
8461
  }),
8461
- [tmpCenterPId]: _objectSpread$b(_objectSpread$b({}, tmpCenterP), {}, {
8462
+ [tmpCenterPId]: _objectSpread$c(_objectSpread$c({}, tmpCenterP), {}, {
8462
8463
  position: centerPos ? centerPos : lastMousePos.clone()
8463
8464
  }),
8464
- [tmpArcId]: _objectSpread$b(_objectSpread$b({}, tmpArc), {}, {
8465
+ [tmpArcId]: _objectSpread$c(_objectSpread$c({}, tmpArc), {}, {
8465
8466
  // In case centerPos couldn't be calculated, the arc should be drawn as a line
8466
8467
  drawAsLine: centerPos === undefined,
8467
8468
  clockwise: false
@@ -8476,14 +8477,14 @@ function DrawArc(drawingId, pluginId, arcType) {
8476
8477
  const centerPos = calculateCenterPoint(tmpStartP.position, tmpEndP.position, lastMousePos);
8477
8478
  return {
8478
8479
  mousePos: lastMousePos,
8479
- tmpObjects: _objectSpread$b(_objectSpread$b({}, state.tmpObjects), {}, {
8480
- [tmpEndPId]: _objectSpread$b(_objectSpread$b({}, tmpEndP), {}, {
8480
+ tmpObjects: _objectSpread$c(_objectSpread$c({}, state.tmpObjects), {}, {
8481
+ [tmpEndPId]: _objectSpread$c(_objectSpread$c({}, tmpEndP), {}, {
8481
8482
  position: arcType === HandlersList.DRAWARCTANGENT ? lastMousePos.clone() : tmpEndP.position
8482
8483
  }),
8483
- [tmpCenterPId]: _objectSpread$b(_objectSpread$b({}, tmpCenterP), {}, {
8484
+ [tmpCenterPId]: _objectSpread$c(_objectSpread$c({}, tmpCenterP), {}, {
8484
8485
  position: centerPos ? centerPos : lastMousePos.clone()
8485
8486
  }),
8486
- [tmpArcId]: _objectSpread$b(_objectSpread$b({}, tmpArc), {}, {
8487
+ [tmpArcId]: _objectSpread$c(_objectSpread$c({}, tmpArc), {}, {
8487
8488
  // In case centerPos couldn't be calculated, the arc should be drawn as a line
8488
8489
  drawAsLine: centerPos === undefined,
8489
8490
  clockwise: evaluateClockwise(tmpStartP.position, tmpEndP.position, lastMousePos)
@@ -8510,8 +8511,8 @@ function DrawArc(drawingId, pluginId, arcType) {
8510
8511
  };
8511
8512
  }
8512
8513
 
8513
- function ownKeys$a(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
8514
- function _objectSpread$a(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$a(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$a(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
8514
+ function ownKeys$b(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
8515
+ function _objectSpread$b(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$b(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$b(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
8515
8516
  function DrawCircle(drawingId, pluginId) {
8516
8517
  const {
8517
8518
  set
@@ -8556,7 +8557,7 @@ function DrawCircle(drawingId, pluginId) {
8556
8557
  } else {
8557
8558
  additionIndex = 0;
8558
8559
  set(state => {
8559
- const tmpCenterP = _objectSpread$a(_objectSpread$a({}, state.tmpObjects[tmpCenterPId]), {}, {
8560
+ const tmpCenterP = _objectSpread$b(_objectSpread$b({}, state.tmpObjects[tmpCenterPId]), {}, {
8560
8561
  position: lastMousePos.clone()
8561
8562
  });
8562
8563
  return {
@@ -8587,7 +8588,7 @@ function DrawCircle(drawingId, pluginId) {
8587
8588
  radius: 0.001
8588
8589
  };
8589
8590
  return {
8590
- tmpObjects: _objectSpread$a(_objectSpread$a({}, state.tmpObjects), {}, {
8591
+ tmpObjects: _objectSpread$b(_objectSpread$b({}, state.tmpObjects), {}, {
8591
8592
  [tmpCenterP.id]: tmpCenterP,
8592
8593
  [tmpCircle.id]: tmpCircle
8593
8594
  })
@@ -8611,7 +8612,7 @@ function DrawCircle(drawingId, pluginId) {
8611
8612
  const tmpCenterP = state.tmpObjects[tmpCenterPId];
8612
8613
  return {
8613
8614
  tmpObjects: {
8614
- [tmpCenterPId]: _objectSpread$a(_objectSpread$a({}, tmpCenterP), {}, {
8615
+ [tmpCenterPId]: _objectSpread$b(_objectSpread$b({}, tmpCenterP), {}, {
8615
8616
  position: e.point.clone().applyMatrix4(getGlobalToLocalMatrix(drawingId, sketchId))
8616
8617
  })
8617
8618
  }
@@ -8631,8 +8632,8 @@ function DrawCircle(drawingId, pluginId) {
8631
8632
  const tmpCenterP = state.tmpObjects[tmpCenterPId];
8632
8633
  return {
8633
8634
  mousePos: lastMousePos,
8634
- tmpObjects: _objectSpread$a(_objectSpread$a({}, state.tmpObjects), {}, {
8635
- [tmpCenterPId]: _objectSpread$a(_objectSpread$a({}, tmpCenterP), {}, {
8635
+ tmpObjects: _objectSpread$b(_objectSpread$b({}, state.tmpObjects), {}, {
8636
+ [tmpCenterPId]: _objectSpread$b(_objectSpread$b({}, tmpCenterP), {}, {
8636
8637
  position: snappedPos || localPos
8637
8638
  })
8638
8639
  })
@@ -8642,8 +8643,8 @@ function DrawCircle(drawingId, pluginId) {
8642
8643
  const tmpCircle = state.tmpObjects[tmpCircleId];
8643
8644
  return {
8644
8645
  mousePos: lastMousePos,
8645
- tmpObjects: _objectSpread$a(_objectSpread$a({}, state.tmpObjects), {}, {
8646
- [tmpCircleId]: _objectSpread$a(_objectSpread$a({}, tmpCircle), {}, {
8646
+ tmpObjects: _objectSpread$b(_objectSpread$b({}, state.tmpObjects), {}, {
8647
+ [tmpCircleId]: _objectSpread$b(_objectSpread$b({}, tmpCircle), {}, {
8647
8648
  radius: Math.max(tmpCenterP.position.distanceTo(localPos), 0.001)
8648
8649
  })
8649
8650
  })
@@ -9312,40 +9313,42 @@ const TabIcon = ({
9312
9313
  })));
9313
9314
  };
9314
9315
  const CopyPatternsImpl = () => {
9315
- const {
9316
- TabPane
9317
- } = useBuerli(buerli => buerli.options.elements);
9318
9316
  const ref = React__default.useRef(null);
9319
9317
  const size = useLayoutSize(ref);
9320
- return /*#__PURE__*/React__default.createElement("div", {
9321
- ref: ref
9322
- }, /*#__PURE__*/React__default.createElement(Tabs, {
9323
- sidepadding: size.sidePadding,
9324
- iconmargin: 2 * size.iconMargin,
9325
- tabBarGutter: 0,
9326
- type: "card",
9327
- style: {
9328
- paddingRight: '4px'
9329
- }
9330
- }, /*#__PURE__*/React__default.createElement(TabPane, {
9331
- tab: /*#__PURE__*/React__default.createElement(TabIcon, {
9318
+ const tabItems = [{
9319
+ label: /*#__PURE__*/React__default.createElement(TabIcon, {
9332
9320
  url: resources[Patterns.RECTANGULAR],
9333
9321
  tooltip: "Rectangular copy pattern."
9334
9322
  }),
9335
- key: "Rectangle"
9336
- }, /*#__PURE__*/React__default.createElement(RectPattern, null)), /*#__PURE__*/React__default.createElement(TabPane, {
9337
- tab: /*#__PURE__*/React__default.createElement(TabIcon, {
9323
+ key: 'Rectangle',
9324
+ children: /*#__PURE__*/React__default.createElement(RectPattern, null)
9325
+ }, {
9326
+ label: /*#__PURE__*/React__default.createElement(TabIcon, {
9338
9327
  url: resources[Patterns.CIRCULAR],
9339
9328
  tooltip: "Circular copy pattern."
9340
9329
  }),
9341
- key: "Circular"
9342
- }, /*#__PURE__*/React__default.createElement(CircPattern, null)), /*#__PURE__*/React__default.createElement(TabPane, {
9343
- tab: /*#__PURE__*/React__default.createElement(TabIcon, {
9330
+ key: 'Circular',
9331
+ children: /*#__PURE__*/React__default.createElement(CircPattern, null)
9332
+ }, {
9333
+ label: /*#__PURE__*/React__default.createElement(TabIcon, {
9344
9334
  url: resources[Patterns.MIRROR],
9345
9335
  tooltip: "Mirror copy pattern."
9346
9336
  }),
9347
- key: "Mirror"
9348
- }, /*#__PURE__*/React__default.createElement(MirrorPattern, null))));
9337
+ key: 'Mirror',
9338
+ children: /*#__PURE__*/React__default.createElement(MirrorPattern, null)
9339
+ }];
9340
+ return /*#__PURE__*/React__default.createElement("div", {
9341
+ ref: ref
9342
+ }, /*#__PURE__*/React__default.createElement(Tabs, {
9343
+ sidepadding: size.sidePadding,
9344
+ iconmargin: 2 * size.iconMargin,
9345
+ tabBarGutter: 0,
9346
+ type: "card",
9347
+ style: {
9348
+ paddingRight: '4px'
9349
+ },
9350
+ items: tabItems
9351
+ }));
9349
9352
  };
9350
9353
  const CopyPatterns = () => {
9351
9354
  return /*#__PURE__*/React__default.createElement(SketchGroup, {
@@ -10133,8 +10136,8 @@ function recognizeFilletByArc(object, tree, sketchId) {
10133
10136
  };
10134
10137
  }
10135
10138
 
10136
- function ownKeys$9(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
10137
- function _objectSpread$9(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$9(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$9(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
10139
+ function ownKeys$a(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
10140
+ function _objectSpread$a(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$a(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$a(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
10138
10141
  function Fillet(drawingId, pluginId, camControls) {
10139
10142
  const plugin = getPlugin(drawingId, pluginId);
10140
10143
  const set = plugin.set;
@@ -10273,7 +10276,7 @@ function Fillet(drawingId, pluginId, camControls) {
10273
10276
  if (!data) {
10274
10277
  return;
10275
10278
  }
10276
- ccAPI.sketcher.createFillet(drawingId, sketchId, data.info.lines.map(line => line.id), data.info.lineStarts.map(lineStart => lineStart.id), data.info.incidence, data.info.control, data.params.start, getArcAngles(_objectSpread$9(_objectSpread$9({}, data.params), {}, {
10279
+ ccAPI.sketcher.createFillet(drawingId, sketchId, data.info.lines.map(line => line.id), data.info.lineStarts.map(lineStart => lineStart.id), data.info.incidence, data.info.control, data.params.start, getArcAngles(_objectSpread$a(_objectSpread$a({}, data.params), {}, {
10277
10280
  radius: 1
10278
10281
  })).mid, data.params.end).catch(console.warn);
10279
10282
  set({
@@ -11273,8 +11276,8 @@ const Circle = ({
11273
11276
  }));
11274
11277
  };
11275
11278
 
11276
- function ownKeys$8(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
11277
- function _objectSpread$8(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$8(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$8(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
11279
+ function ownKeys$9(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
11280
+ function _objectSpread$9(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$9(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$9(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
11278
11281
 
11279
11282
  /*
11280
11283
  * !polygonOffset!
@@ -11321,7 +11324,7 @@ const CCLine = props => {
11321
11324
  start: start,
11322
11325
  end: end,
11323
11326
  scalePlus: isHovered || isSelected,
11324
- meshProps: _objectSpread$8(_objectSpread$8({
11327
+ meshProps: _objectSpread$9(_objectSpread$9({
11325
11328
  renderOrder
11326
11329
  }, handlers), {}, {
11327
11330
  userData
@@ -11370,7 +11373,7 @@ const CCPoint = props => {
11370
11373
  // so we have to increase size of hovered or selected point to make the point not occluded buy other ones
11371
11374
  ,
11372
11375
  scalePlus: isHovered || isSelected,
11373
- meshProps: _objectSpread$8(_objectSpread$8({
11376
+ meshProps: _objectSpread$9(_objectSpread$9({
11374
11377
  renderOrder
11375
11378
  }, handlers), {}, {
11376
11379
  userData
@@ -11424,7 +11427,7 @@ const CCArc = props => {
11424
11427
  center: centerPoint,
11425
11428
  clockwise: clockwise,
11426
11429
  scalePlus: isHovered || isSelected,
11427
- meshProps: _objectSpread$8({
11430
+ meshProps: _objectSpread$9({
11428
11431
  renderOrder,
11429
11432
  userData
11430
11433
  }, handlers),
@@ -11466,7 +11469,7 @@ const CCCircle = props => {
11466
11469
  center: center,
11467
11470
  radius: radius,
11468
11471
  scalePlus: isHovered || isSelected,
11469
- meshProps: _objectSpread$8({
11472
+ meshProps: _objectSpread$9({
11470
11473
  renderOrder,
11471
11474
  userData
11472
11475
  }, handlers),
@@ -12324,6 +12327,36 @@ const View$d = ({
12324
12327
  }));
12325
12328
  };
12326
12329
 
12330
+ function styleInject(css, ref) {
12331
+ if ( ref === void 0 ) ref = {};
12332
+ var insertAt = ref.insertAt;
12333
+
12334
+ if (!css || typeof document === 'undefined') { return; }
12335
+
12336
+ var head = document.head || document.getElementsByTagName('head')[0];
12337
+ var style = document.createElement('style');
12338
+ style.type = 'text/css';
12339
+
12340
+ if (insertAt === 'top') {
12341
+ if (head.firstChild) {
12342
+ head.insertBefore(style, head.firstChild);
12343
+ } else {
12344
+ head.appendChild(style);
12345
+ }
12346
+ } else {
12347
+ head.appendChild(style);
12348
+ }
12349
+
12350
+ if (style.styleSheet) {
12351
+ style.styleSheet.cssText = css;
12352
+ } else {
12353
+ style.appendChild(document.createTextNode(css));
12354
+ }
12355
+ }
12356
+
12357
+ var css_248z$4 = ".handlers-dropdown .ant-dropdown-menu-root {\n border: 1px solid rgba(127, 127, 127, 1);\n border-top: 1px solid rgba(255, 255, 255, 1);\n border-radius: 0px;\n padding: 0px;\n margin-top: -2px;\n margin-left: -3px;\n}\n\n.handlers-dropdown .ant-dropdown-menu-root .ant-dropdown-menu-item {\n background-color: initial;\n padding: 0px;\n margin-top: 0px;\n}\n";
12358
+ styleInject(css_248z$4);
12359
+
12327
12360
  const _excluded$4 = ["handlerName", "sideEffect"];
12328
12361
  const HandlerIcon = styled(RadioButtonImpl)`
12329
12362
  width: 30px;
@@ -12400,8 +12433,6 @@ const SubGroup$1 = ({
12400
12433
  iconMargin
12401
12434
  }) => {
12402
12435
  const {
12403
- Menu,
12404
- MenuItem,
12405
12436
  Dropdown
12406
12437
  } = useBuerli(buerli => buerli.options.elements);
12407
12438
  const {
@@ -12410,33 +12441,24 @@ const SubGroup$1 = ({
12410
12441
  } = React__default.useContext(RootContext);
12411
12442
  const activeHandler = useSketchState(drawingId, pluginId, state => state.activeHandler);
12412
12443
  const [lastHandler, setLastHandler] = React__default.useState(handlers[0]);
12413
- const menu = /*#__PURE__*/React__default.createElement(Menu, {
12414
- style: {
12415
- border: '1px solid rgba(127, 127, 127, 1.0)',
12416
- borderTop: '1px solid rgba(255, 255, 255, 1.0)',
12417
- borderRadius: '0px',
12418
- padding: '0px',
12419
- marginTop: '-3px',
12420
- marginLeft: '-3px'
12421
- }
12422
- }, /*#__PURE__*/React__default.createElement(MenuItem, {
12423
- key: "menuItem",
12424
- style: {
12425
- backgroundColor: 'initial',
12426
- padding: '0px',
12427
- marginTop: '0px'
12428
- }
12429
- }, /*#__PURE__*/React__default.createElement(HandlerRadioGroup, {
12430
- iconmargin: iconMargin,
12431
- value: activeHandler,
12432
- size: "small"
12433
- }, handlers.map(hName => /*#__PURE__*/React__default.createElement(HButton, {
12434
- key: hName,
12435
- handlerName: hName,
12436
- sideEffect: () => setLastHandler(hName)
12437
- })))));
12444
+ const menuItems = [{
12445
+ label: /*#__PURE__*/React__default.createElement(HandlerRadioGroup, {
12446
+ iconmargin: iconMargin,
12447
+ value: activeHandler,
12448
+ size: "small"
12449
+ }, handlers.map(hName => /*#__PURE__*/React__default.createElement(HButton, {
12450
+ key: hName,
12451
+ handlerName: hName,
12452
+ sideEffect: () => setLastHandler(hName)
12453
+ }))),
12454
+ key: 'menuItem'
12455
+ }];
12456
+ const menuProps = {
12457
+ items: menuItems
12458
+ };
12438
12459
  return /*#__PURE__*/React__default.createElement(Dropdown, {
12439
- overlay: menu
12460
+ overlayClassName: "handlers-dropdown",
12461
+ menu: menuProps
12440
12462
  }, /*#__PURE__*/React__default.createElement(HButton, {
12441
12463
  handlerName: lastHandler
12442
12464
  }));
@@ -12556,7 +12578,7 @@ function useMenuItems$4(drawingId, featureId, isActive, setEditName) {
12556
12578
  callback: () => {
12557
12579
  const pluginAPI = getDrawing(drawingId).api.plugin;
12558
12580
  if (isActive) pluginAPI.setActiveFeature(null);
12559
- ccAPI.baseModeler.deleteObject(drawingId, featureId).catch(console.warn);
12581
+ ccAPI.baseModeler.deleteObjects(drawingId, [featureId]).catch(console.warn);
12560
12582
  }
12561
12583
  }
12562
12584
  };
@@ -12723,7 +12745,7 @@ const Menu = _ref => {
12723
12745
  children
12724
12746
  } = _ref,
12725
12747
  props = _objectWithoutProperties(_ref, _excluded$3);
12726
- const onItemClick = React__default.useCallback(e => {
12748
+ const onClick = React__default.useCallback(e => {
12727
12749
  e.domEvent.stopPropagation();
12728
12750
  let item = items[e.keyPath.pop()];
12729
12751
  if (item.children) {
@@ -12731,33 +12753,28 @@ const Menu = _ref => {
12731
12753
  }
12732
12754
  item.callback(e.domEvent);
12733
12755
  }, [items]);
12734
- const menu = /*#__PURE__*/React__default.createElement(Menu$1, {
12735
- onClick: onItemClick
12736
- }, Object.keys(items).map(key => {
12756
+ const menuItems = Object.keys(items).map(key => {
12737
12757
  const item = items[key];
12738
- if (item.children) {
12739
- const smItem = item;
12740
- return /*#__PURE__*/React__default.createElement(Menu$1.SubMenu, {
12741
- title: smItem.caption,
12742
- key: key,
12743
- icon: smItem.icon
12744
- }, Object.keys(smItem.children).map(chKey => {
12745
- const chItem = smItem.children[chKey];
12746
- return /*#__PURE__*/React__default.createElement(Menu$1.Item, {
12747
- key: chKey,
12748
- icon: chItem.icon
12749
- }, chItem.caption);
12750
- }));
12751
- } else {
12752
- const item_ = item;
12753
- return /*#__PURE__*/React__default.createElement(Menu$1.Item, {
12754
- key: key,
12755
- icon: item_.icon
12756
- }, item_.caption);
12757
- }
12758
- }));
12758
+ return {
12759
+ label: item.caption,
12760
+ key,
12761
+ icon: item.icon,
12762
+ children: item.children && Object.keys(item.children).map(key_ => {
12763
+ const smItem = item.children[key_];
12764
+ return {
12765
+ label: smItem.caption,
12766
+ key: key_,
12767
+ icon: smItem.icon
12768
+ };
12769
+ })
12770
+ };
12771
+ });
12772
+ const menuProps = {
12773
+ items: menuItems,
12774
+ onClick
12775
+ };
12759
12776
  return /*#__PURE__*/React__default.createElement(Dropdown, _extends({
12760
- overlay: menu,
12777
+ menu: menuProps,
12761
12778
  placement: "bottom"
12762
12779
  }, props), children ? children : /*#__PURE__*/React__default.createElement("div", {
12763
12780
  style: {
@@ -12769,7 +12786,10 @@ const Menu = _ref => {
12769
12786
  }, "..."));
12770
12787
  };
12771
12788
 
12789
+ function ownKeys$8(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
12790
+ function _objectSpread$8(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$8(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$8(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
12772
12791
  const NameEdit = ({
12792
+ style,
12773
12793
  drawingId,
12774
12794
  objId,
12775
12795
  setEditName,
@@ -12802,9 +12822,9 @@ const NameEdit = ({
12802
12822
  const showBlankDiv = useCADStore(s => s.blankDiv.isActive);
12803
12823
  const zIndex = showBlankDiv ? blankZIndex + 1 : 0;
12804
12824
  return /*#__PURE__*/React__default.createElement(Input, {
12805
- style: {
12825
+ style: _objectSpread$8(_objectSpread$8({}, style), {}, {
12806
12826
  zIndex
12807
- },
12827
+ }),
12808
12828
  ref: ref,
12809
12829
  onPressEnter: onEnter,
12810
12830
  onClick: onClick,
@@ -12994,7 +13014,7 @@ const RefTag = ({
12994
13014
  React__default.useEffect(() => {
12995
13015
  return () => remove.current && remove.current();
12996
13016
  }, []);
12997
- const error = !Boolean(refGraphics);
13017
+ const error = !refGraphics;
12998
13018
  const reselection = activeSelection === selectionName;
12999
13019
  const color = reselection ? '#e36b7c' : error ? 'red' : 'gold';
13000
13020
  return /*#__PURE__*/React__default.createElement(Tag, {
@@ -13018,9 +13038,14 @@ const ObjTitle = ({
13018
13038
  } = React__default.useContext(RootContext);
13019
13039
  const name = useDrawingStr(drawingId, d => d.structure.tree[objId].name);
13020
13040
  const objClass = useDrawingStr(drawingId, d => d.structure.tree[objId].class);
13041
+ const activeHandler = useSketchState(drawingId, pluginId, state => state.activeHandler);
13042
+ const globalSelection = useTreeObjSelection(drawingId, objId);
13043
+ const isGHovered = globalSelection.isHovered;
13044
+ const isGSelected = globalSelection.isSelected;
13045
+ const onClickSel = globalSelection.handlers.onClick;
13021
13046
  const isHovered = useSketchState(drawingId, pluginId, s => s.hovered === objId);
13022
13047
  const isSelected = useSketchState(drawingId, pluginId, s => s.selected.indexOf(objId) !== -1);
13023
- const color = isSelected ? '#ffa500' : isHovered ? '#28d79f' : undefined;
13048
+ const color = isSelected || isGSelected ? '#ffa500' : isHovered || isGHovered ? '#28d79f' : undefined;
13024
13049
 
13025
13050
  // TODO: Rename resources so that they have more generic names, i.e. 'CC_Point' instead of 'drawPoint', etc
13026
13051
  const imgName = React__default.useMemo(() => {
@@ -13039,17 +13064,14 @@ const ObjTitle = ({
13039
13064
  }, [objClass]);
13040
13065
  const [rename, setRename] = React__default.useState(false);
13041
13066
  const menuItems = useMenuItems$3(drawingId, pluginId, objId, setRename);
13042
- const activeHandler = useSketchState(drawingId, pluginId, state => state.activeHandler);
13043
- const globalSelection = useTreeObjSelection(drawingId, objId);
13044
- const onClickSel = globalSelection.handlers.onClick;
13045
13067
 
13046
13068
  // TODO: Implement global selection in onClick? Not sure if needed...
13047
- const onClick = React__default.useCallback(() => {
13069
+ const onClick = React__default.useCallback(e => {
13048
13070
  if (activeHandler === HandlersList.DRAG) {
13049
13071
  select(drawingId, pluginId, objId);
13050
13072
  } else if (!activeHandler) {
13051
13073
  // if no handler is active, some selector should be active
13052
- onClickSel && onClickSel();
13074
+ onClickSel && onClickSel(e);
13053
13075
  }
13054
13076
  }, [drawingId, pluginId, objId, activeHandler, onClickSel]);
13055
13077
  const onMouseEnter = React__default.useCallback(() => {
@@ -13174,6 +13196,8 @@ const Details = () => {
13174
13196
  }, [drawingId, sketchChildren, ccUseGeometry]);
13175
13197
  const hasGeometry = geometry.length > 0 || refGeometry.length > 0;
13176
13198
  const hasConstraints = constraints.length > 0;
13199
+ const [geomCollapsed, setGeomCollapsed] = React__default.useState(false);
13200
+ const [constrCollapsed, setConstrCollapsed] = React__default.useState(false);
13177
13201
  return /*#__PURE__*/React__default.createElement(SketchGroup, {
13178
13202
  caption: "Details",
13179
13203
  collapse: true
@@ -13191,9 +13215,20 @@ const Details = () => {
13191
13215
  style: {
13192
13216
  paddingLeft: '2px'
13193
13217
  }
13194
- }, /*#__PURE__*/React__default.createElement(Text$2, {
13218
+ }, /*#__PURE__*/React__default.createElement(FlexRow, {
13219
+ style: {
13220
+ marginLeft: '-5px'
13221
+ }
13222
+ }, /*#__PURE__*/React__default.createElement(CollapseButton, {
13223
+ collapsed: geomCollapsed,
13224
+ onClick: () => setGeomCollapsed(x => !x)
13225
+ }), /*#__PURE__*/React__default.createElement(Text$2, {
13195
13226
  strong: true
13196
- }, "Geometry"), refGeometry.map(([id, refId]) => /*#__PURE__*/React__default.createElement(SketchObj, {
13227
+ }, "Geometry")), /*#__PURE__*/React__default.createElement("div", {
13228
+ style: {
13229
+ display: geomCollapsed ? 'none' : 'block'
13230
+ }
13231
+ }, refGeometry.map(([id, refId]) => /*#__PURE__*/React__default.createElement(SketchObj, {
13197
13232
  objId: id,
13198
13233
  refId: refId,
13199
13234
  key: id,
@@ -13202,17 +13237,29 @@ const Details = () => {
13202
13237
  objId: id,
13203
13238
  key: id,
13204
13239
  level: 0
13205
- }))), hasConstraints && !isTrimActive && /*#__PURE__*/React__default.createElement("div", {
13240
+ })))), hasConstraints && !isTrimActive && /*#__PURE__*/React__default.createElement("div", {
13206
13241
  style: {
13207
- paddingLeft: '2px'
13242
+ paddingLeft: '2px',
13243
+ marginTop: '2px'
13244
+ }
13245
+ }, /*#__PURE__*/React__default.createElement(FlexRow, {
13246
+ style: {
13247
+ marginLeft: '-5px'
13208
13248
  }
13209
- }, /*#__PURE__*/React__default.createElement(Text$2, {
13249
+ }, /*#__PURE__*/React__default.createElement(CollapseButton, {
13250
+ collapsed: constrCollapsed,
13251
+ onClick: () => setConstrCollapsed(x => !x)
13252
+ }), /*#__PURE__*/React__default.createElement(Text$2, {
13210
13253
  strong: true
13211
- }, "Constraints"), constraints.map(id => /*#__PURE__*/React__default.createElement(SketchObj, {
13254
+ }, "Constraints")), /*#__PURE__*/React__default.createElement("div", {
13255
+ style: {
13256
+ display: constrCollapsed ? 'none' : 'block'
13257
+ }
13258
+ }, constraints.map(id => /*#__PURE__*/React__default.createElement(SketchObj, {
13212
13259
  objId: id,
13213
13260
  key: id,
13214
13261
  level: 0
13215
- }))));
13262
+ })))));
13216
13263
  };
13217
13264
 
13218
13265
  const useRetainVisibility = (drawingId, pluginId) => {
@@ -13375,22 +13422,285 @@ const Position = () => {
13375
13422
  })));
13376
13423
  };
13377
13424
 
13378
- const PlaneSelectionMode = ({
13379
- drawingId,
13380
- pluginId
13381
- }) => {
13425
+ function useEditedRegionsParam() {
13426
+ const {
13427
+ drawingId
13428
+ } = React__default.useContext(RootContext);
13429
+ const [value, setValue] = React__default.useState([]);
13430
+ const isChanged = React__default.useCallback(() => {
13431
+ const tree = getDrawing(drawingId).structure.tree;
13432
+ return value.some(region => {
13433
+ var _tree$region$objId, _tree$region$objId$me, _tree$region$objId$me2;
13434
+ const members = ((_tree$region$objId = tree[region.objId]) == null ? void 0 : (_tree$region$objId$me = _tree$region$objId.members) == null ? void 0 : (_tree$region$objId$me2 = _tree$region$objId$me.curves) == null ? void 0 : _tree$region$objId$me2.members) || EMPTYARRAY;
13435
+ return members.length !== region.curves.length || members.some((curve, i) => curve.value !== region.curves[i]);
13436
+ });
13437
+ }, [drawingId, value]);
13438
+ return {
13439
+ value,
13440
+ setValue,
13441
+ isChanged
13442
+ };
13443
+ }
13444
+ const nameRegex$1 = /[a-zA-Z_][a-zA-Z0-9_]*/g;
13445
+ const AddRegion = () => {
13446
+ const {
13447
+ Input,
13448
+ Selection,
13449
+ Button
13450
+ } = useBuerli(buerli => buerli.options.elements);
13451
+ const {
13452
+ drawingId,
13453
+ pluginId
13454
+ } = React__default.useContext(RootContext);
13382
13455
  const sketchId = usePlugin(drawingId, pluginId, plugin => plugin.objectId);
13383
- const curProduct = useDrawing(drawingId, d => d.structure.currentProduct);
13384
- const opSeqId = useOperationSequence(drawingId, curProduct) || NOCCID;
13385
- const opSeqChildren = useDrawingArr(drawingId, d => d.structure.tree[opSeqId].children);
13386
-
13387
- // Makes base planes visible when just created, and turns them off after initialization (i.e. selecting a plane)
13388
- React__default.useEffect(() => {
13389
- if (opSeqChildren.length < 7) {
13390
- // Should probably never happen, but just in case...
13391
- return;
13456
+ const [name, setName] = React__default.useState('');
13457
+ const [selectorId, setSelectorId] = React__default.useState();
13458
+ const selected = useDrawingArr(drawingId, d => {
13459
+ var _d$selection$refs;
13460
+ return (_d$selection$refs = d.selection.refs[selectorId || EMPTYSTR]) == null ? void 0 : _d$selection$refs.items;
13461
+ });
13462
+ const onNameChange = React__default.useCallback(e => {
13463
+ const value = e.target.value;
13464
+ const match = value.match(nameRegex$1);
13465
+ if (value.length === 0 || (match == null ? void 0 : match.length) === 1 && match[0].length === value.length) {
13466
+ setName(value);
13392
13467
  }
13393
- const drawing = getDrawing(drawingId);
13468
+ }, []);
13469
+ const regionFilter = React__default.useCallback((scope, data) => {
13470
+ if (scope !== TreeObjScope) {
13471
+ return false;
13472
+ }
13473
+ const pSketchId = getAncestorIdByClass(drawingId, data.object.id, CCClasses.CCSketch);
13474
+ if (!pSketchId) {
13475
+ return false;
13476
+ }
13477
+ return pSketchId === sketchId && (data.object.class === CCClasses.CCLine || data.object.class === CCClasses.CCArc || data.object.class === CCClasses.CCCircle);
13478
+ }, [drawingId, sketchId]);
13479
+ const addRegion = React__default.useCallback(() => {
13480
+ if (name.length === 0 || selected.length === 0) return;
13481
+ const curves = selected.map(item => item.data.object.id);
13482
+ setName('');
13483
+ getDrawing(drawingId).api.selection.unselectAll(selectorId);
13484
+ getDrawing(drawingId).api.selection.activateSelector(null);
13485
+ return ccAPI.sketcher.addSketchRegion(drawingId, sketchId, name, curves).catch(console.warn);
13486
+ }, [drawingId, sketchId, name, selectorId, selected]);
13487
+ const setRefsFromItems = React__default.useCallback((selId, selItems) => {
13488
+ getDrawing(drawingId).api.selection.setItems(selId, selItems);
13489
+ }, [drawingId]);
13490
+ const modes = useModes(drawingId, true, setRefsFromItems, undefined);
13491
+ return /*#__PURE__*/React__default.createElement("div", {
13492
+ style: {
13493
+ display: 'flex',
13494
+ width: '100%'
13495
+ }
13496
+ }, /*#__PURE__*/React__default.createElement("div", {
13497
+ style: {
13498
+ flex: 4,
13499
+ minWidth: '0px'
13500
+ }
13501
+ }, /*#__PURE__*/React__default.createElement(Input, {
13502
+ placeholder: "Name...",
13503
+ value: name,
13504
+ onChange: onNameChange
13505
+ })), /*#__PURE__*/React__default.createElement("div", {
13506
+ style: {
13507
+ flex: 7,
13508
+ minWidth: '0px',
13509
+ margin: '0px 1px'
13510
+ }
13511
+ }, /*#__PURE__*/React__default.createElement(Selection, {
13512
+ drawingId: drawingId,
13513
+ onCreated: setSelectorId,
13514
+ filter: regionFilter,
13515
+ modes: modes
13516
+ })), /*#__PURE__*/React__default.createElement(Button, {
13517
+ style: {
13518
+ width: '25px',
13519
+ height: '25px',
13520
+ margin: '2px -1px 2px 1px'
13521
+ },
13522
+ tabIndex: -1,
13523
+ icon: /*#__PURE__*/React__default.createElement(PlusOutlined, null),
13524
+ size: "small",
13525
+ onClick: addRegion,
13526
+ title: 'Add new sketch region'
13527
+ }));
13528
+ };
13529
+ var RegionMembers;
13530
+ (function (RegionMembers) {
13531
+ RegionMembers["Curves"] = "curves";
13532
+ })(RegionMembers || (RegionMembers = {}));
13533
+ const EditRegion = ({
13534
+ sketchId,
13535
+ regionId,
13536
+ editedRegions
13537
+ }) => {
13538
+ const {
13539
+ Label
13540
+ } = useBuerli(buerli => buerli.options.elements);
13541
+ const {
13542
+ drawingId
13543
+ } = React__default.useContext(RootContext);
13544
+ const curves = useRefsParam(drawingId, regionId, RegionMembers.Curves);
13545
+ const name = useDrawingStr(drawingId, d => {
13546
+ var _d$structure$tree$reg;
13547
+ return (_d$structure$tree$reg = d.structure.tree[regionId]) == null ? void 0 : _d$structure$tree$reg.name;
13548
+ });
13549
+ const [rename, setRename] = React__default.useState(false);
13550
+ const menuItems = useMenuItems$4(drawingId, regionId, false, setRename);
13551
+
13552
+ // Remove region from edited in case of deletion
13553
+ React__default.useEffect(() => {
13554
+ return () => editedRegions.setValue(value_ => value_.filter(region => region.objId !== regionId));
13555
+ // eslint-disable-next-line react-hooks/exhaustive-deps
13556
+ }, []);
13557
+ React__default.useEffect(() => {
13558
+ editedRegions.setValue(value_ => {
13559
+ const res = value_.filter(region => region.objId !== regionId);
13560
+ if (curves.isChanged()) {
13561
+ res.push({
13562
+ objId: regionId,
13563
+ curves: [...curves.userValue]
13564
+ });
13565
+ }
13566
+ return res;
13567
+ });
13568
+ // eslint-disable-next-line react-hooks/exhaustive-deps
13569
+ }, [curves.userValue]);
13570
+ const regionFilter = React__default.useCallback((scope, data) => {
13571
+ if (scope !== TreeObjScope) {
13572
+ return false;
13573
+ }
13574
+ const pSketchId = getAncestorIdByClass(drawingId, data.object.id, CCClasses.CCSketch);
13575
+ if (!pSketchId) {
13576
+ return false;
13577
+ }
13578
+ return pSketchId === sketchId && (data.object.class === CCClasses.CCLine || data.object.class === CCClasses.CCArc || data.object.class === CCClasses.CCCircle);
13579
+ }, [drawingId, sketchId]);
13580
+ const nameComponent = rename ? /*#__PURE__*/React__default.createElement(NameEdit, {
13581
+ style: {
13582
+ width: '100%',
13583
+ height: '25px',
13584
+ minHeight: '25px',
13585
+ lineHeight: '22px',
13586
+ margin: '2px 1px'
13587
+ },
13588
+ drawingId: drawingId,
13589
+ objId: regionId,
13590
+ setEditName: setRename,
13591
+ name: name
13592
+ }) : /*#__PURE__*/React__default.createElement(Label, {
13593
+ style: {
13594
+ paddingLeft: '4px'
13595
+ },
13596
+ ellipsis: true
13597
+ }, name);
13598
+ return /*#__PURE__*/React__default.createElement("div", {
13599
+ style: {
13600
+ display: 'flex',
13601
+ width: '100%'
13602
+ }
13603
+ }, /*#__PURE__*/React__default.createElement("div", {
13604
+ style: {
13605
+ flex: 4,
13606
+ width: '100%',
13607
+ minWidth: '0px'
13608
+ }
13609
+ }, nameComponent), /*#__PURE__*/React__default.createElement("div", {
13610
+ style: {
13611
+ flex: 7,
13612
+ width: '100%',
13613
+ minWidth: '0px',
13614
+ marginRight: '1px'
13615
+ }
13616
+ }, /*#__PURE__*/React__default.createElement(RefsEditor, {
13617
+ drawingId: drawingId,
13618
+ param: curves,
13619
+ filter: regionFilter,
13620
+ customIdPicker: pickObjId,
13621
+ sketchLines: true
13622
+ })), /*#__PURE__*/React__default.createElement(Menu, {
13623
+ items: menuItems
13624
+ }));
13625
+ };
13626
+ const Regions = () => {
13627
+ const {
13628
+ Button
13629
+ } = useBuerli(buerli => buerli.options.elements);
13630
+ const {
13631
+ drawingId,
13632
+ pluginId
13633
+ } = React__default.useContext(RootContext);
13634
+ const sketchId = usePlugin(drawingId, pluginId, plugin => plugin.objectId);
13635
+ const partId = getAncestorIdByClass(drawingId, sketchId, CCClasses.CCPart) || NOCCID;
13636
+ const geometrySetId = useDrawingCCId(drawingId, d => {
13637
+ var _d$structure$tree$par;
13638
+ return (_d$structure$tree$par = d.structure.tree[partId]) == null ? void 0 : _d$structure$tree$par.geometrySet;
13639
+ });
13640
+ const geometrySetChildren = useDrawingArr(drawingId, d => {
13641
+ var _d$structure$tree$geo;
13642
+ return (_d$structure$tree$geo = d.structure.tree[geometrySetId]) == null ? void 0 : _d$structure$tree$geo.children;
13643
+ });
13644
+ const regions = React__default.useMemo(() => {
13645
+ const tree = getDrawing(drawingId).structure.tree;
13646
+ const ids = geometrySetChildren.filter(child => {
13647
+ var _tree$child$members, _tree$child$members$s;
13648
+ return tree[child].class === CCClasses.CCSketchRegion && ((_tree$child$members = tree[child].members) == null ? void 0 : (_tree$child$members$s = _tree$child$members.sketch) == null ? void 0 : _tree$child$members$s.value) === sketchId;
13649
+ });
13650
+ return ids;
13651
+ }, [drawingId, sketchId, geometrySetChildren]);
13652
+ const editedRegions = useEditedRegionsParam();
13653
+ const updateAvailable = React__default.useMemo(() => {
13654
+ return editedRegions.value.every(region => region.curves.length > 0) && editedRegions.isChanged();
13655
+ }, [editedRegions]);
13656
+ const onClick = React__default.useCallback(() => {
13657
+ getDrawing(drawingId).api.selection.activateSelector(null);
13658
+ const regionIds = editedRegions.value.map(region => region.objId);
13659
+ const curvesArr = editedRegions.value.map(region => region.curves);
13660
+ ccAPI.sketcher.updateSketchRegions(drawingId, regionIds, curvesArr).catch(console.warn);
13661
+ }, [drawingId, editedRegions]);
13662
+ return /*#__PURE__*/React__default.createElement(SketchGroup, {
13663
+ caption: "Regions",
13664
+ collapse: true
13665
+ }, /*#__PURE__*/React__default.createElement("div", {
13666
+ style: {
13667
+ margin: '0px 3px 0px 1px'
13668
+ }
13669
+ }, /*#__PURE__*/React__default.createElement(AddRegion, null), regions.length > 0 && /*#__PURE__*/React__default.createElement("div", {
13670
+ style: {
13671
+ marginTop: '10px'
13672
+ }
13673
+ }, regions.map(regionId => /*#__PURE__*/React__default.createElement(EditRegion, {
13674
+ key: regionId,
13675
+ sketchId: sketchId,
13676
+ regionId: regionId,
13677
+ editedRegions: editedRegions
13678
+ })), /*#__PURE__*/React__default.createElement(Button, {
13679
+ style: {
13680
+ marginTop: '10px'
13681
+ },
13682
+ type: "primary",
13683
+ disabled: !updateAvailable,
13684
+ onClick: onClick
13685
+ }, "Update regions"))));
13686
+ };
13687
+
13688
+ const PlaneSelectionMode = ({
13689
+ drawingId,
13690
+ pluginId
13691
+ }) => {
13692
+ const sketchId = usePlugin(drawingId, pluginId, plugin => plugin.objectId);
13693
+ const curProduct = useDrawing(drawingId, d => d.structure.currentProduct);
13694
+ const opSeqId = useOperationSequence(drawingId, curProduct) || NOCCID;
13695
+ const opSeqChildren = useDrawingArr(drawingId, d => d.structure.tree[opSeqId].children);
13696
+
13697
+ // Makes base planes visible when just created, and turns them off after initialization (i.e. selecting a plane)
13698
+ React__default.useEffect(() => {
13699
+ if (opSeqChildren.length < 7) {
13700
+ // Should probably never happen, but just in case...
13701
+ return;
13702
+ }
13703
+ const drawing = getDrawing(drawingId);
13394
13704
  const tree = drawing.structure.tree;
13395
13705
  const pluginApi = drawing.api.plugin;
13396
13706
 
@@ -13441,7 +13751,7 @@ const SketchMode = ({
13441
13751
  }), [drawingId, pluginId]);
13442
13752
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(RootContext.Provider, {
13443
13753
  value: contextValue
13444
- }, /*#__PURE__*/React__default.createElement(Handlers, null), /*#__PURE__*/React__default.createElement(Constraints$2, null), /*#__PURE__*/React__default.createElement(CopyPatterns, null), /*#__PURE__*/React__default.createElement(Details, null), /*#__PURE__*/React__default.createElement(Position, null)));
13754
+ }, /*#__PURE__*/React__default.createElement(Handlers, null), /*#__PURE__*/React__default.createElement(Constraints$2, null), /*#__PURE__*/React__default.createElement(CopyPatterns, null), /*#__PURE__*/React__default.createElement(Details, null), /*#__PURE__*/React__default.createElement(Regions, null), /*#__PURE__*/React__default.createElement(Position, null)));
13445
13755
  };
13446
13756
  const RootImpl$f = ({
13447
13757
  drawingId,
@@ -13806,26 +14116,22 @@ function linePlaneAngle(drawingId, refsParam) {
13806
14116
  lineStart = gLine.start;
13807
14117
  lineEnd = gLine.end;
13808
14118
  }
13809
- let pointOnPlane = new THREE.Vector3();
13810
14119
  let normal = new THREE.Vector3();
13811
14120
  if (plane.class === CCClasses.CCWorkPlane) {
13812
- var _ccPlane$members, _ccPlane$members2;
14121
+ var _ccPlane$members;
13813
14122
  const ccPlane = plane;
13814
- pointOnPlane = convertToVector((_ccPlane$members = ccPlane.members) == null ? void 0 : _ccPlane$members.Position);
13815
- normal = convertToVector((_ccPlane$members2 = ccPlane.members) == null ? void 0 : _ccPlane$members2.Normal);
14123
+ normal = convertToVector((_ccPlane$members = ccPlane.members) == null ? void 0 : _ccPlane$members.Normal);
13816
14124
  } else {
13817
14125
  const gPlane = plane;
13818
- pointOnPlane = gPlane.pointOnPlane;
13819
14126
  normal = gPlane.normal;
13820
14127
  }
13821
- const pointStartVec = pointOnPlane.clone().sub(lineStart);
13822
- const pointEndVec = pointOnPlane.clone().sub(lineEnd);
14128
+ const lineDir = lineEnd.clone().sub(lineStart);
13823
14129
 
13824
14130
  // compare calculated normals with a tolerance, because the sent normal from server is rounded to 3 decimal places.
13825
14131
  const tolerance = 0.01;
13826
- const isLineOnPlane = Math.abs(normal.dot(pointStartVec)) <= tolerance && Math.abs(normal.dot(pointEndVec)) <= tolerance;
13827
- if (!isLineOnPlane) {
13828
- return ['The line should lie within the plane'];
14132
+ const isPerpendicular = Math.abs(normal.dot(lineDir)) <= tolerance;
14133
+ if (!isPerpendicular) {
14134
+ return ['The line should be perpendicular to the normal of the plane'];
13829
14135
  }
13830
14136
  }
13831
14137
  return [];
@@ -15378,7 +15684,7 @@ const RootImpl$9 = ({
15378
15684
  const [expression, setExpression] = React__default.useState();
15379
15685
  const [showHidden, setShowHidden] = React__default.useState(false);
15380
15686
  const [searchStr, setSearchStr] = React__default.useState();
15381
- const isUpdateable = !Boolean(activeFeature);
15687
+ const isUpdateable = !activeFeature;
15382
15688
  const editedExpressions = useEditedExpressionsParam();
15383
15689
  const deletedExpressions = useDeletedExpressionsParam();
15384
15690
 
@@ -15407,7 +15713,12 @@ const RootImpl$9 = ({
15407
15713
  }];
15408
15714
  setName(undefined);
15409
15715
  setExpression(undefined);
15410
- return ccAPI.feature.updateExpressionSet(drawingId, productId, toAddMembers, [], []).catch(console.warn);
15716
+ return ccAPI.feature.updateExpressionSets(drawingId, [{
15717
+ productId: productId,
15718
+ toAddMembers: toAddMembers,
15719
+ toModifyMembers: [],
15720
+ toDeleteList: []
15721
+ }]).catch(console.warn);
15411
15722
  }, [drawingId, productId, name, expression]);
15412
15723
  const deleteExpression = React__default.useCallback(name_ => {
15413
15724
  const {
@@ -15420,7 +15731,12 @@ const RootImpl$9 = ({
15420
15731
  }
15421
15732
  }, [deletedExpressions]);
15422
15733
  const update = React__default.useCallback(() => {
15423
- return ccAPI.feature.updateExpressionSet(drawingId, productId, [], editedExpressions.serverValue, deletedExpressions.serverValue).then(() => {
15734
+ return ccAPI.feature.updateExpressionSets(drawingId, [{
15735
+ productId: productId,
15736
+ toAddMembers: [],
15737
+ toModifyMembers: editedExpressions.serverValue,
15738
+ toDeleteList: deletedExpressions.serverValue
15739
+ }]).then(() => {
15424
15740
  editedExpressions.setUserValue([]);
15425
15741
  deletedExpressions.setUserValue([]);
15426
15742
  });
@@ -15565,25 +15881,14 @@ function RootImpl$8({
15565
15881
  const xOffset = useNumParam(drawingId, objectId, Members$6.XOffset);
15566
15882
  const yOffset = useNumParam(drawingId, objectId, Members$6.YOffset);
15567
15883
  const zOffset = useNumParam(drawingId, objectId, Members$6.ZOffset);
15568
-
15569
- /* const preview = React.useCallback(() => {
15570
- return ccAPI.assemblyBuilder
15571
- .previewFastenedOriginConstraint(
15572
- drawingId,
15573
- objectId,
15574
- mateRef.serverValue as MateParam,
15575
- xOffset.serverValue,
15576
- yOffset.serverValue,
15577
- zOffset.serverValue,
15578
- )
15579
- .catch()
15580
- }, [drawingId, objectId, mateRef, xOffset, yOffset, zOffset]) */
15581
-
15582
- /* const stopPreview = React.useRef<() => void>(() => void {}) */
15583
-
15584
15884
  const update = React__default.useCallback(async () => {
15585
- /* stopPreview.current() */
15586
- return ccAPI.assemblyBuilder.updateFastenedOriginConstraint(drawingId, objectId, mateRef.serverValue, xOffset.serverValue, yOffset.serverValue, zOffset.serverValue);
15885
+ return ccAPI.assemblyBuilder.updateFastenedOriginConstraints(drawingId, [{
15886
+ constrId: objectId,
15887
+ mate1: mateRef.serverValue,
15888
+ xOffset: xOffset.serverValue,
15889
+ yOffset: yOffset.serverValue,
15890
+ zOffset: zOffset.serverValue
15891
+ }]);
15587
15892
  }, [drawingId, objectId, mateRef, xOffset, yOffset, zOffset]);
15588
15893
  return /*#__PURE__*/React__default.createElement(PluginForm, {
15589
15894
  drawingId: drawingId,
@@ -15745,7 +16050,10 @@ const getReorientedMatrix = (reoriented, zAxis) => {
15745
16050
  const useCsysMatrix = (drawingId, csysId, flip, reoriented) => {
15746
16051
  const csys = useDrawing(drawingId, drawing => drawing.structure.tree[csysId]);
15747
16052
  const tree = getDrawing(drawingId).structure.tree;
15748
- const [xAxisId, yAxisId, zAxisId] = ['xAxis', 'yAxis', 'zAxis'].map(name => csys.children.find(childId => tree[childId].name === name));
16053
+ const [xAxisId, yAxisId, zAxisId] = ['xAxis', 'yAxis', 'zAxis'].map(name => {
16054
+ var _csys$children;
16055
+ return (csys == null ? void 0 : (_csys$children = csys.children) == null ? void 0 : _csys$children.find(childId => tree[childId].name === name)) || NOCCID;
16056
+ });
15749
16057
  const xAxis = useDrawing(drawingId, drawing => {
15750
16058
  var _drawing$structure$tr, _drawing$structure$tr2;
15751
16059
  return (_drawing$structure$tr = drawing.structure.tree[xAxisId]) == null ? void 0 : (_drawing$structure$tr2 = _drawing$structure$tr.members) == null ? void 0 : _drawing$structure$tr2.Direction;
@@ -15759,16 +16067,17 @@ const useCsysMatrix = (drawingId, csysId, flip, reoriented) => {
15759
16067
  return (_drawing$structure$tr5 = drawing.structure.tree[zAxisId]) == null ? void 0 : (_drawing$structure$tr6 = _drawing$structure$tr5.members) == null ? void 0 : _drawing$structure$tr6.Direction;
15760
16068
  });
15761
16069
  const matrix = React__default.useMemo(() => {
15762
- if (!xAxis || !yAxis || !zAxis) {
16070
+ var _csys$members;
16071
+ if (!csys || !xAxis || !yAxis || !zAxis) {
15763
16072
  return new THREE.Matrix4();
15764
16073
  }
15765
- const pos = convertToVector(csys.members.Position);
16074
+ const pos = convertToVector((_csys$members = csys.members) == null ? void 0 : _csys$members.Position);
15766
16075
  const [xDir, yDir, zDir] = [xAxis, yAxis, zAxis].map(axis => convertToVector(axis));
15767
16076
  const baseMatrix = new THREE.Matrix4().makeBasis(xDir, yDir, zDir);
15768
16077
  const flipMatrix = flip !== undefined ? getFlipMatrix(flip, xDir, yDir) : new THREE.Matrix4();
15769
16078
  const reorientedMatrix = reoriented !== undefined ? getReorientedMatrix(reoriented, zDir.clone().transformDirection(flipMatrix)) : new THREE.Matrix4();
15770
16079
  return reorientedMatrix.multiply(flipMatrix).multiply(baseMatrix).setPosition(pos);
15771
- }, [csys.members.Position, xAxis, yAxis, zAxis, flip, reoriented]);
16080
+ }, [csys, xAxis, yAxis, zAxis, flip, reoriented]);
15772
16081
  return matrix;
15773
16082
  };
15774
16083
 
@@ -16194,26 +16503,15 @@ function RootImpl$7({
16194
16503
  const yOffset = useNumParam(drawingId, objectId, Members$5.YOffset);
16195
16504
  const zOffset = useNumParam(drawingId, objectId, Members$5.ZOffset);
16196
16505
  const selOrder = useSelectorsOrder(drawingId);
16197
-
16198
- /* const preview = React.useCallback(() => {
16199
- return ccAPI.assemblyBuilder
16200
- .previewFastenedConstraint(
16201
- drawingId,
16202
- objectId,
16203
- mate1Ref.serverValue as MateParam,
16204
- mate2Ref.serverValue as MateParam,
16205
- xOffset.serverValue,
16206
- yOffset.serverValue,
16207
- zOffset.serverValue,
16208
- )
16209
- .catch()
16210
- }, [drawingId, objectId, mate1Ref, mate2Ref, xOffset, yOffset, zOffset]) */
16211
-
16212
- /* const stopPreview = React.useRef<() => void>(() => void {}) */
16213
-
16214
16506
  const update = React__default.useCallback(async () => {
16215
- /* stopPreview.current() */
16216
- return ccAPI.assemblyBuilder.updateFastenedConstraint(drawingId, objectId, mate1Ref.serverValue, mate2Ref.serverValue, xOffset.serverValue, yOffset.serverValue, zOffset.serverValue);
16507
+ return ccAPI.assemblyBuilder.updateFastenedConstraints(drawingId, [{
16508
+ constrId: objectId,
16509
+ mate1: mate1Ref.serverValue,
16510
+ mate2: mate2Ref.serverValue,
16511
+ xOffset: xOffset.serverValue,
16512
+ yOffset: yOffset.serverValue,
16513
+ zOffset: zOffset.serverValue
16514
+ }]);
16217
16515
  }, [drawingId, objectId, mate1Ref, mate2Ref, xOffset, yOffset, zOffset]);
16218
16516
  return /*#__PURE__*/React__default.createElement(PluginForm, {
16219
16517
  drawingId: drawingId,
@@ -16714,28 +17012,24 @@ function RootImpl$6({
16714
17012
  forceNoLimits: limitsCollapsed
16715
17013
  });
16716
17014
  const selOrder = useSelectorsOrder(drawingId);
16717
-
16718
- /* const preview = React.useCallback(() => {
16719
- return ccAPI.assemblyBuilder.previewSliderConstraint(
16720
- drawingId,
16721
- objectId,
16722
- mate1Ref.serverValue as MateParam,
16723
- mate2Ref.serverValue as MateParam,
16724
- xOffset.serverValue,
16725
- yOffset.serverValue,
16726
- zOffsetLimits.serverValue,
16727
- )
16728
- }, [drawingId, objectId, mate1Ref, mate2Ref, xOffset, yOffset, zOffsetLimits]) */
16729
-
16730
- /* const stopPreview = React.useRef<() => void>(() => void {}) */
16731
17015
  const [disableVals, setDisableVals] = React__default.useState(false);
16732
17016
  const update = React__default.useCallback(async () => {
16733
- /* stopPreview.current() */
16734
17017
  setDisableVals(true);
16735
- return ccAPI.assemblyBuilder.updateSliderConstraint(drawingId, objectId, mate1Ref.serverValue, mate2Ref.serverValue, xOffset.serverValue, yOffset.serverValue, zOffsetLimits.serverValue).then(() => setDisableVals(false));
17018
+ return ccAPI.assemblyBuilder.updateSliderConstraints(drawingId, [{
17019
+ constrId: objectId,
17020
+ mate1: mate1Ref.serverValue,
17021
+ mate2: mate2Ref.serverValue,
17022
+ xOffset: xOffset.serverValue,
17023
+ yOffset: yOffset.serverValue,
17024
+ zOffsetLimits: zOffsetLimits.serverValue
17025
+ }]).then(() => setDisableVals(false));
16736
17026
  }, [drawingId, objectId, mate1Ref, mate2Ref, xOffset, yOffset, zOffsetLimits]);
16737
17027
  const updateValue = React__default.useCallback(value => {
16738
- return ccAPI.assemblyBuilder.update3DConstraintValue(drawingId, objectId, 'zOffsetValue', value);
17028
+ return ccAPI.assemblyBuilder.update3DConstraintValues(drawingId, [{
17029
+ constrId: objectId,
17030
+ paramName: 'zOffsetValue',
17031
+ value
17032
+ }]);
16739
17033
  }, [drawingId, objectId]);
16740
17034
  const validate = React__default.useCallback(() => {
16741
17035
  return validateLimits(zOffsetLimits.userValue, 'Offset Z');
@@ -16869,29 +17163,23 @@ function RootImpl$5({
16869
17163
  forceNoLimits: limitsCollapsed
16870
17164
  });
16871
17165
  const selOrder = useSelectorsOrder(drawingId);
16872
-
16873
- /* const preview = React.useCallback(() => {
16874
- return ccAPI.assemblyBuilder
16875
- .previewRevoluteConstraint(
16876
- drawingId,
16877
- objectId,
16878
- mate1Ref.serverValue as MateParam,
16879
- mate2Ref.serverValue as MateParam,
16880
- zOffset.serverValue,
16881
- zRotationLimits.serverValue,
16882
- )
16883
- .catch()
16884
- }, [drawingId, objectId, mate1Ref, mate2Ref, zOffset, zRotationLimits]) */
16885
-
16886
- /* const stopPreview = React.useRef<() => void>(() => void {}) */
16887
17166
  const [disableVals, setDisableVals] = React__default.useState(false);
16888
17167
  const update = React__default.useCallback(async () => {
16889
- /* stopPreview.current() */
16890
17168
  setDisableVals(true);
16891
- return ccAPI.assemblyBuilder.updateRevoluteConstraint(drawingId, objectId, mate1Ref.serverValue, mate2Ref.serverValue, zOffset.serverValue, zRotationLimits.serverValue).then(() => setDisableVals(false));
17169
+ return ccAPI.assemblyBuilder.updateRevoluteConstraints(drawingId, [{
17170
+ constrId: objectId,
17171
+ mate1: mate1Ref.serverValue,
17172
+ mate2: mate2Ref.serverValue,
17173
+ zOffset: zOffset.serverValue,
17174
+ zRotationLimits: zRotationLimits.serverValue
17175
+ }]).then(() => setDisableVals(false));
16892
17176
  }, [drawingId, objectId, mate1Ref, mate2Ref, zOffset, zRotationLimits]);
16893
17177
  const updateValue = React__default.useCallback(value => {
16894
- return ccAPI.assemblyBuilder.update3DConstraintValue(drawingId, objectId, 'zRotationValue', value);
17178
+ return ccAPI.assemblyBuilder.update3DConstraintValues(drawingId, [{
17179
+ constrId: objectId,
17180
+ paramName: 'zRotationValue',
17181
+ value
17182
+ }]);
16895
17183
  }, [drawingId, objectId]);
16896
17184
  const validate = React__default.useCallback(() => {
16897
17185
  return validateLimits(zRotationLimits.userValue, 'Rotation Z');
@@ -17024,32 +17312,30 @@ function RootImpl$4({
17024
17312
  forceNoLimits: limitsCollapsed
17025
17313
  });
17026
17314
  const selOrder = useSelectorsOrder(drawingId);
17027
-
17028
- /* const preview = React.useCallback(() => {
17029
- return ccAPI.assemblyBuilder
17030
- .previewCylindricalConstraint(
17031
- drawingId,
17032
- objectId,
17033
- mate1Ref.serverValue as MateParam,
17034
- mate2Ref.serverValue as MateParam,
17035
- zOffsetLimits.serverValue,
17036
- zRotationLimits.serverValue,
17037
- )
17038
- .catch()
17039
- }, [drawingId, objectId, mate1Ref, mate2Ref, zOffsetLimits, zRotationLimits]) */
17040
-
17041
- /* const stopPreview = React.useRef<() => void>(() => void {}) */
17042
17315
  const [disableVals, setDisableVals] = React__default.useState(false);
17043
17316
  const update = React__default.useCallback(async () => {
17044
- /* stopPreview.current() */
17045
17317
  setDisableVals(true);
17046
- return ccAPI.assemblyBuilder.updateCylindricalConstraint(drawingId, objectId, mate1Ref.serverValue, mate2Ref.serverValue, zOffsetLimits.serverValue, zRotationLimits.serverValue).then(() => setDisableVals(false));
17318
+ return ccAPI.assemblyBuilder.updateCylindricalConstraints(drawingId, [{
17319
+ constrId: objectId,
17320
+ mate1: mate1Ref.serverValue,
17321
+ mate2: mate2Ref.serverValue,
17322
+ zOffsetLimits: zOffsetLimits.serverValue,
17323
+ zRotationLimits: zRotationLimits.serverValue
17324
+ }]).then(() => setDisableVals(false));
17047
17325
  }, [drawingId, objectId, mate1Ref, mate2Ref, zOffsetLimits, zRotationLimits]);
17048
17326
  const updateOffset = React__default.useCallback(value => {
17049
- return ccAPI.assemblyBuilder.update3DConstraintValue(drawingId, objectId, 'zOffsetValue', value);
17327
+ return ccAPI.assemblyBuilder.update3DConstraintValues(drawingId, [{
17328
+ constrId: objectId,
17329
+ paramName: 'zOffsetValue',
17330
+ value
17331
+ }]);
17050
17332
  }, [drawingId, objectId]);
17051
17333
  const updateRotation = React__default.useCallback(value => {
17052
- return ccAPI.assemblyBuilder.update3DConstraintValue(drawingId, objectId, 'zRotationValue', value);
17334
+ return ccAPI.assemblyBuilder.update3DConstraintValues(drawingId, [{
17335
+ constrId: objectId,
17336
+ paramName: 'zRotationValue',
17337
+ value
17338
+ }]);
17053
17339
  }, [drawingId, objectId]);
17054
17340
  const validate = React__default.useCallback(() => {
17055
17341
  return [...validateLimits(zOffsetLimits.userValue, 'Offset Z'), ...validateLimits(zRotationLimits.userValue, 'Rotation Z')];
@@ -17196,37 +17482,39 @@ function RootImpl$3({
17196
17482
  forceNoLimits: limitsCollapsed
17197
17483
  });
17198
17484
  const selOrder = useSelectorsOrder(drawingId);
17199
-
17200
- /* const preview = React.useCallback(() => {
17201
- return ccAPI.assemblyBuilder
17202
- .previewPlanarConstraint(
17203
- drawingId,
17204
- objectId,
17205
- mate1Ref.serverValue as MateParam,
17206
- mate2Ref.serverValue as MateParam,
17207
- zOffset.serverValue,
17208
- xOffsetLimits.serverValue,
17209
- yOffsetLimits.serverValue,
17210
- zRotationLimits.serverValue,
17211
- )
17212
- .catch()
17213
- }, [drawingId, objectId, mate1Ref, mate2Ref, zOffset, xOffsetLimits, yOffsetLimits, zRotationLimits]) */
17214
-
17215
- /* const stopPreview = React.useRef<() => void>(() => void {}) */
17216
17485
  const [disableVals, setDisableVals] = React__default.useState(false);
17217
17486
  const update = React__default.useCallback(async () => {
17218
- /* stopPreview.current() */
17219
17487
  setDisableVals(true);
17220
- return ccAPI.assemblyBuilder.updatePlanarConstraint(drawingId, objectId, mate1Ref.serverValue, mate2Ref.serverValue, zOffset.serverValue, xOffsetLimits.serverValue, yOffsetLimits.serverValue, zRotationLimits.serverValue).then(() => setDisableVals(false));
17488
+ return ccAPI.assemblyBuilder.updatePlanarConstraints(drawingId, [{
17489
+ constrId: objectId,
17490
+ mate1: mate1Ref.serverValue,
17491
+ mate2: mate2Ref.serverValue,
17492
+ zOffset: zOffset.serverValue,
17493
+ xOffsetLimits: xOffsetLimits.serverValue,
17494
+ yOffsetLimits: yOffsetLimits.serverValue,
17495
+ zRotationLimits: zRotationLimits.serverValue
17496
+ }]).then(() => setDisableVals(false));
17221
17497
  }, [drawingId, objectId, mate1Ref, mate2Ref, zOffset, xOffsetLimits, yOffsetLimits, zRotationLimits]);
17222
17498
  const updateXOffset = React__default.useCallback(value => {
17223
- return ccAPI.assemblyBuilder.update3DConstraintValue(drawingId, objectId, 'xOffsetValue', value);
17499
+ return ccAPI.assemblyBuilder.update3DConstraintValues(drawingId, [{
17500
+ constrId: objectId,
17501
+ paramName: 'xOffsetValue',
17502
+ value
17503
+ }]);
17224
17504
  }, [drawingId, objectId]);
17225
17505
  const updateYOffset = React__default.useCallback(value => {
17226
- return ccAPI.assemblyBuilder.update3DConstraintValue(drawingId, objectId, 'yOffsetValue', value);
17506
+ return ccAPI.assemblyBuilder.update3DConstraintValues(drawingId, [{
17507
+ constrId: objectId,
17508
+ paramName: 'yOffsetValue',
17509
+ value
17510
+ }]);
17227
17511
  }, [drawingId, objectId]);
17228
17512
  const updateRotation = React__default.useCallback(value => {
17229
- return ccAPI.assemblyBuilder.update3DConstraintValue(drawingId, objectId, 'zRotationValue', value);
17513
+ return ccAPI.assemblyBuilder.update3DConstraintValues(drawingId, [{
17514
+ constrId: objectId,
17515
+ paramName: 'zRotationValue',
17516
+ value
17517
+ }]);
17230
17518
  }, [drawingId, objectId]);
17231
17519
  const validate = React__default.useCallback(() => {
17232
17520
  return [...validateLimits(xOffsetLimits.userValue, 'Offset X'), ...validateLimits(yOffsetLimits.userValue, 'Offset Y'), ...validateLimits(zRotationLimits.userValue, 'Rotation Z')];
@@ -17393,40 +17681,46 @@ function RootImpl$2({
17393
17681
  forceNoLimits: limitsCollapsed
17394
17682
  });
17395
17683
  const selOrder = useSelectorsOrder(drawingId);
17396
-
17397
- /* const preview = React.useCallback(() => {
17398
- return ccAPI.assemblyBuilder
17399
- .previewParallelConstraint(
17400
- drawingId,
17401
- objectId,
17402
- mate1Ref.serverValue as MateParam,
17403
- mate2Ref.serverValue as MateParam,
17404
- xOffsetLimits.serverValue,
17405
- yOffsetLimits.serverValue,
17406
- zOffsetLimits.serverValue,
17407
- zRotationLimits.serverValue,
17408
- )
17409
- .catch()
17410
- }, [drawingId, objectId, mate1Ref, mate2Ref, xOffsetLimits, yOffsetLimits, zOffsetLimits, zRotationLimits]) */
17411
-
17412
- /* const stopPreview = React.useRef<() => void>(() => void {}) */
17413
17684
  const [disableVals, setDisableVals] = React__default.useState(false);
17414
17685
  const update = React__default.useCallback(async () => {
17415
- /* stopPreview.current() */
17416
17686
  setDisableVals(true);
17417
- return ccAPI.assemblyBuilder.updateParallelConstraint(drawingId, objectId, mate1Ref.serverValue, mate2Ref.serverValue, xOffsetLimits.serverValue, yOffsetLimits.serverValue, zOffsetLimits.serverValue, zRotationLimits.serverValue).then(() => setDisableVals(false));
17687
+ return ccAPI.assemblyBuilder.updateParallelConstraints(drawingId, [{
17688
+ constrId: objectId,
17689
+ mate1: mate1Ref.serverValue,
17690
+ mate2: mate2Ref.serverValue,
17691
+ xOffsetLimits: xOffsetLimits.serverValue,
17692
+ yOffsetLimits: yOffsetLimits.serverValue,
17693
+ zOffsetLimits: zOffsetLimits.serverValue,
17694
+ zRotationLimits: zRotationLimits.serverValue
17695
+ }]).then(() => setDisableVals(false));
17418
17696
  }, [drawingId, objectId, mate1Ref, mate2Ref, xOffsetLimits, yOffsetLimits, zOffsetLimits, zRotationLimits]);
17419
17697
  const updateXOffset = React__default.useCallback(value => {
17420
- return ccAPI.assemblyBuilder.update3DConstraintValue(drawingId, objectId, 'xOffsetValue', value);
17698
+ return ccAPI.assemblyBuilder.update3DConstraintValues(drawingId, [{
17699
+ constrId: objectId,
17700
+ paramName: 'xOffsetValue',
17701
+ value
17702
+ }]);
17421
17703
  }, [drawingId, objectId]);
17422
17704
  const updateYOffset = React__default.useCallback(value => {
17423
- return ccAPI.assemblyBuilder.update3DConstraintValue(drawingId, objectId, 'yOffsetValue', value);
17705
+ return ccAPI.assemblyBuilder.update3DConstraintValues(drawingId, [{
17706
+ constrId: objectId,
17707
+ paramName: 'yOffsetValue',
17708
+ value
17709
+ }]);
17424
17710
  }, [drawingId, objectId]);
17425
17711
  const updateZOffset = React__default.useCallback(value => {
17426
- return ccAPI.assemblyBuilder.update3DConstraintValue(drawingId, objectId, 'zOffsetValue', value);
17712
+ return ccAPI.assemblyBuilder.update3DConstraintValues(drawingId, [{
17713
+ constrId: objectId,
17714
+ paramName: 'zOffsetValue',
17715
+ value
17716
+ }]);
17427
17717
  }, [drawingId, objectId]);
17428
17718
  const updateRotation = React__default.useCallback(value => {
17429
- return ccAPI.assemblyBuilder.update3DConstraintValue(drawingId, objectId, 'zRotationValue', value);
17719
+ return ccAPI.assemblyBuilder.update3DConstraintValues(drawingId, [{
17720
+ constrId: objectId,
17721
+ paramName: 'zRotationValue',
17722
+ value
17723
+ }]);
17430
17724
  }, [drawingId, objectId]);
17431
17725
  const validate = React__default.useCallback(() => {
17432
17726
  return [...validateLimits(xOffsetLimits.userValue, 'Offset X'), ...validateLimits(yOffsetLimits.userValue, 'Offset Y'), ...validateLimits(zOffsetLimits.userValue, 'Offset Z'), ...validateLimits(zRotationLimits.userValue, 'Rotation Z')];
@@ -17815,18 +18109,22 @@ function useMenuItems$2(drawingId, prodId, setEditName, pluginId) {
17815
18109
  icon: /*#__PURE__*/React__default.createElement(PlusSquareOutlined, null),
17816
18110
  callback: () => {
17817
18111
  const curNodeId = getDrawing(drawingId).structure.currentNode;
17818
- ccAPI.assemblyBuilder.addNode(drawingId, prodId, curNodeId, [{
17819
- x: 0,
17820
- y: 0,
17821
- z: 0
17822
- }, {
17823
- x: 1,
17824
- y: 0,
17825
- z: 0
17826
- }, {
17827
- x: 0,
17828
- y: 1,
17829
- z: 0
18112
+ ccAPI.assemblyBuilder.addNodes(drawingId, [{
18113
+ referenceId: prodId,
18114
+ ownerId: curNodeId,
18115
+ transformation: [{
18116
+ x: 0,
18117
+ y: 0,
18118
+ z: 0
18119
+ }, {
18120
+ x: 1,
18121
+ y: 0,
18122
+ z: 0
18123
+ }, {
18124
+ x: 0,
18125
+ y: 1,
18126
+ z: 0
18127
+ }]
17830
18128
  }]).catch(console.warn);
17831
18129
  }
17832
18130
  },
@@ -17855,7 +18153,7 @@ function useMenuItems$2(drawingId, prodId, setEditName, pluginId) {
17855
18153
  caption: 'delete',
17856
18154
  icon: /*#__PURE__*/React__default.createElement(DeleteOutlined, null),
17857
18155
  callback: () => {
17858
- ccAPI.baseModeler.deleteObject(drawingId, prodId).catch(console.warn);
18156
+ ccAPI.baseModeler.deleteObjects(drawingId, [prodId]).catch(console.warn);
17859
18157
  }
17860
18158
  }
17861
18159
  };
@@ -18312,14 +18610,18 @@ const ViewImpl = ({
18312
18610
  y: pos.y,
18313
18611
  z: pos.z
18314
18612
  };
18315
- ccAPI.assemblyBuilder.addNode(drawingId, prodId, currNodeId, [pos1, {
18316
- x: 1,
18317
- y: 0,
18318
- z: 0
18319
- }, {
18320
- x: 0,
18321
- y: 1,
18322
- z: 0
18613
+ ccAPI.assemblyBuilder.addNodes(drawingId, [{
18614
+ referenceId: prodId,
18615
+ ownerId: currNodeId,
18616
+ transformation: [pos1, {
18617
+ x: 1,
18618
+ y: 0,
18619
+ z: 0
18620
+ }, {
18621
+ x: 0,
18622
+ y: 1,
18623
+ z: 0
18624
+ }]
18323
18625
  }]).catch(console.warn);
18324
18626
  }
18325
18627
  };
@@ -18372,7 +18674,7 @@ var index = /*#__PURE__*/Object.freeze({
18372
18674
  });
18373
18675
 
18374
18676
  const load = (file, singleDrawingApp) => {
18375
- return new Promise(async (resolve, reject) => {
18677
+ return new Promise((resolve, reject) => {
18376
18678
  try {
18377
18679
  const reader = new FileReader();
18378
18680
  reader.onload = async () => {
@@ -18560,6 +18862,7 @@ const HoveredConstraintDisplay = ({
18560
18862
  const csysUDataArray_ = [];
18561
18863
  const members = (_getDrawing = getDrawing(drawingId)) == null ? void 0 : (_getDrawing$structure = _getDrawing.structure.tree[hoveredConstrId]) == null ? void 0 : _getDrawing$structure.members;
18562
18864
  if (members && members[mateNames$1[0]]) {
18865
+ const tree = getDrawing(drawingId).structure.tree;
18563
18866
  mateNames$1.forEach(mateName => {
18564
18867
  const member = members[mateName];
18565
18868
  if (member && member.members.length > 2) {
@@ -18568,14 +18871,16 @@ const HoveredConstraintDisplay = ({
18568
18871
  const csysId = member.members[1].value;
18569
18872
  const flip = ((_member$members$ = member.members[2]) == null ? void 0 : _member$members$.value) !== undefined ? member.members[2].value : FlipType.FLIP_Z;
18570
18873
  const reoriented = ((_member$members$2 = member.members[3]) == null ? void 0 : _member$members$2.value) !== undefined ? member.members[3].value : ReorientedType.REORIENTED_0;
18571
- csysUDataArray_.push({
18572
- matePath,
18573
- csysId,
18574
- flip,
18575
- reoriented,
18576
- isSelected: true,
18577
- onHUD: true
18578
- });
18874
+ if (matePath.every(id => tree[id]) && tree[csysId]) {
18875
+ csysUDataArray_.push({
18876
+ matePath,
18877
+ csysId,
18878
+ flip,
18879
+ reoriented,
18880
+ isSelected: true,
18881
+ onHUD: true
18882
+ });
18883
+ }
18579
18884
  }
18580
18885
  });
18581
18886
  }
@@ -18729,7 +19034,7 @@ const fragmentCode$1 = `
18729
19034
  class OutlineMaterial extends THREE.ShaderMaterial {
18730
19035
  constructor(texelSize = new THREE.Vector2()) {
18731
19036
  super({
18732
- name: "OutlineMaterial",
19037
+ name: 'OutlineMaterial',
18733
19038
  uniforms: {
18734
19039
  inputBuffer: new THREE.Uniform(null),
18735
19040
  texelSize: new THREE.Uniform(new THREE.Vector2()),
@@ -19010,16 +19315,20 @@ const Outline = /*#__PURE__*/React__default.forwardRef(function Outline(_ref, fo
19010
19315
 
19011
19316
  const mateNames = ['firstRefMate', 'secondRefMate'];
19012
19317
  const getMateRefIds = (drawingId, constrId) => {
19013
- var _drawing$structure$tr;
19318
+ var _tree$constrId;
19014
19319
  const drawing = getDrawing(drawingId);
19015
- const members = (_drawing$structure$tr = drawing.structure.tree[constrId]) == null ? void 0 : _drawing$structure$tr.members;
19320
+ const tree = drawing.structure.tree;
19321
+ const members = (_tree$constrId = tree[constrId]) == null ? void 0 : _tree$constrId.members;
19016
19322
  const pRefIds = [];
19017
19323
  if (members && members[mateNames[0]]) {
19018
19324
  mateNames.forEach(mateName => {
19019
- var _member$members$;
19325
+ var _member$members$, _member$members$2;
19020
19326
  const member = members[mateName];
19021
19327
  const matePath = member == null ? void 0 : (_member$members$ = member.members[0]) == null ? void 0 : _member$members$.members;
19022
- if (matePath && matePath.length > 0) {
19328
+ const csysId = member == null ? void 0 : (_member$members$2 = member.members[1]) == null ? void 0 : _member$members$2.value;
19329
+
19330
+ // Only add a product ref id if every other id of this mate is valid
19331
+ if (matePath && matePath.length > 0 && matePath.every(mem => tree[mem.value]) && csysId && tree[csysId]) {
19023
19332
  pRefIds.push(matePath[matePath.length - 1].value);
19024
19333
  }
19025
19334
  });
@@ -19028,12 +19337,12 @@ const getMateRefIds = (drawingId, constrId) => {
19028
19337
  return;
19029
19338
  }
19030
19339
  const curNodeId = drawing.structure.currentNode;
19031
- const curNode = drawing.structure.tree[curNodeId];
19340
+ const curNode = tree[curNodeId];
19032
19341
  const curRefIds = (curNode == null ? void 0 : curNode.instances) || (curNode == null ? void 0 : curNode.children) || [];
19033
19342
  const mateRefIds = [];
19034
19343
  curRefIds.forEach(id => {
19035
- var _drawing$structure$tr2, _drawing$structure$tr3;
19036
- const productRefId = ((_drawing$structure$tr2 = drawing.structure.tree[id].members) == null ? void 0 : (_drawing$structure$tr3 = _drawing$structure$tr2.productRef) == null ? void 0 : _drawing$structure$tr3.value) || id;
19344
+ var _tree$id$members, _tree$id$members$prod;
19345
+ const productRefId = ((_tree$id$members = tree[id].members) == null ? void 0 : (_tree$id$members$prod = _tree$id$members.productRef) == null ? void 0 : _tree$id$members$prod.value) || id;
19037
19346
  if (pRefIds.indexOf(productRefId) !== -1) {
19038
19347
  mateRefIds.push(id);
19039
19348
  }
@@ -19060,6 +19369,17 @@ const SectionHeader = ({
19060
19369
  }, children);
19061
19370
  };
19062
19371
 
19372
+ function usePrecheckErrorId$1(drawingId, constraintId) {
19373
+ const constraintChildren = useDrawingArr(drawingId, d => {
19374
+ var _d$structure$tree$con;
19375
+ return (_d$structure$tree$con = d.structure.tree[constraintId]) == null ? void 0 : _d$structure$tree$con.children;
19376
+ });
19377
+ const errorId = constraintChildren.find(chId => {
19378
+ var _getDrawing$structure;
19379
+ return ((_getDrawing$structure = getDrawing(drawingId).structure.tree[chId]) == null ? void 0 : _getDrawing$structure.class) === CCClasses.BMError;
19380
+ }) || null;
19381
+ return errorId;
19382
+ }
19063
19383
  const SolverState = ({
19064
19384
  drawingId
19065
19385
  }) => {
@@ -19117,6 +19437,23 @@ const Constraints = ({
19117
19437
  constrIds: constrIds
19118
19438
  })));
19119
19439
  };
19440
+ const ErrorWrapper$1 = styled.div`
19441
+ cursor: pointer;
19442
+ margin-right: 4px;
19443
+ `;
19444
+ const PrecheckError$1 = ({
19445
+ drawingId,
19446
+ errorId
19447
+ }) => {
19448
+ var _error$members;
19449
+ const error = useDrawing(drawingId, d => d.structure.tree[errorId]);
19450
+ const title = (error == null ? void 0 : (_error$members = error.members) == null ? void 0 : _error$members.errorMessage.value) || '';
19451
+ return /*#__PURE__*/React__default.createElement(ErrorWrapper$1, null, /*#__PURE__*/React__default.createElement(Tooltip$1, {
19452
+ title: title
19453
+ }, /*#__PURE__*/React__default.createElement(ExclamationCircleTwoTone, {
19454
+ twoToneColor: "#ff5f5f"
19455
+ })));
19456
+ };
19120
19457
  const Constraint = ({
19121
19458
  drawingId,
19122
19459
  constraintId
@@ -19126,13 +19463,14 @@ const Constraint = ({
19126
19463
  return (_d$interaction$hovere = d.interaction.hovered) == null ? void 0 : _d$interaction$hovere.objectId;
19127
19464
  });
19128
19465
  const name = useDrawing(drawingId, d => {
19129
- var _d$structure$tree$con;
19130
- return (_d$structure$tree$con = d.structure.tree[constraintId]) == null ? void 0 : _d$structure$tree$con.name;
19466
+ var _d$structure$tree$con2;
19467
+ return (_d$structure$tree$con2 = d.structure.tree[constraintId]) == null ? void 0 : _d$structure$tree$con2.name;
19131
19468
  });
19132
19469
  const isActive = useDrawing(drawingId, d => d.plugin.active.feature === constraintId);
19133
19470
  const isHovered = hoveredId === constraintId;
19134
19471
  const [rename, setRename] = React__default.useState(false);
19135
19472
  const menuItems = useMenuItems$4(drawingId, constraintId, isActive, setRename);
19473
+ const errorId = usePrecheckErrorId$1(drawingId, constraintId);
19136
19474
  const onDoubleClick = React__default.useCallback(() => {
19137
19475
  getDrawing(drawingId).api.plugin.setActiveFeature(constraintId);
19138
19476
  }, [drawingId, constraintId]);
@@ -19164,7 +19502,14 @@ const Constraint = ({
19164
19502
  onDoubleClick: onDoubleClick,
19165
19503
  onMouseEnter: onMouseEnter,
19166
19504
  onMouseLeave: onMouseLeave
19167
- }, /*#__PURE__*/React__default.createElement(Space, null, nameComponent), /*#__PURE__*/React__default.createElement(Menu, {
19505
+ }, /*#__PURE__*/React__default.createElement(Space, {
19506
+ style: {
19507
+ flex: 1
19508
+ }
19509
+ }, nameComponent), errorId && /*#__PURE__*/React__default.createElement(PrecheckError$1, {
19510
+ drawingId: drawingId,
19511
+ errorId: errorId
19512
+ }), /*#__PURE__*/React__default.createElement(Menu, {
19168
19513
  items: menuItems
19169
19514
  }));
19170
19515
  };
@@ -19989,35 +20334,8 @@ const draggableModalReducer = (state, action) => {
19989
20334
  }
19990
20335
  };
19991
20336
 
19992
- function styleInject(css, ref) {
19993
- if ( ref === void 0 ) ref = {};
19994
- var insertAt = ref.insertAt;
19995
-
19996
- if (!css || typeof document === 'undefined') { return; }
19997
-
19998
- var head = document.head || document.getElementsByTagName('head')[0];
19999
- var style = document.createElement('style');
20000
- style.type = 'text/css';
20001
-
20002
- if (insertAt === 'top') {
20003
- if (head.firstChild) {
20004
- head.insertBefore(style, head.firstChild);
20005
- } else {
20006
- head.appendChild(style);
20007
- }
20008
- } else {
20009
- head.appendChild(style);
20010
- }
20011
-
20012
- if (style.styleSheet) {
20013
- style.styleSheet.cssText = css;
20014
- } else {
20015
- style.appendChild(document.createTextNode(css));
20016
- }
20017
- }
20018
-
20019
- var css_248z$1 = "/**\n * NOTE: This is not compiled.\n */\n\n.ant-design-draggable-modal {\n pointer-events: none;\n overflow: hidden !important;\n}\n\n.ant-design-draggable-modal .ant-modal {\n display: flex;\n max-width: none;\n transform-origin: 50% 50% !important;\n}\n\n.ant-design-draggable-modal .ant-modal-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.ant-design-draggable-modal .ant-modal-header {\n flex: 0;\n padding: 0;\n}\n\n.ant-design-draggable-modal .ant-modal-footer {\n flex: 0;\n padding: 16px;\n}\n\n.ant-design-draggable-modal .ant-design-draggable-modal-title {\n cursor: move;\n padding: 16px;\n}\n\n.ant-design-draggable-modal .ant-design-draggable-modal-title::before {\n content: '\\00a0';\n}\n\n.ant-design-draggable-modal .ant-modal-body {\n flex: 1;\n overflow-x: hidden;\n overflow-y: auto;\n padding: 16px;\n}\n\n.ant-design-draggable-modal-resize-handle-inner {\n width: 12px;\n right: 14px;\n border: 2px solid grey;\n height: 12px;\n bottom: 14px;\n position: absolute;\n border-top: 0;\n border-left: 0;\n}\n\n.ant-design-draggable-modal-resize-handle {\n right: -10px;\n width: 44px;\n bottom: -10px;\n cursor: se-resize;\n height: 44px;\n position: absolute;\n}\n";
20020
- styleInject(css_248z$1);
20337
+ var css_248z$3 = "/**\n * NOTE: This is not compiled.\n */\n\n.ant-design-draggable-modal {\n pointer-events: none;\n overflow: hidden !important;\n}\n\n.ant-design-draggable-modal .ant-modal {\n display: flex;\n max-width: none;\n transform-origin: 50% 50% !important;\n}\n\n.ant-design-draggable-modal .ant-modal-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.ant-design-draggable-modal .ant-modal-header {\n flex: 0;\n padding: 0;\n}\n\n.ant-design-draggable-modal .ant-modal-footer {\n flex: 0;\n padding: 16px;\n}\n\n.ant-design-draggable-modal .ant-design-draggable-modal-title {\n cursor: move;\n padding: 16px;\n}\n\n.ant-design-draggable-modal .ant-design-draggable-modal-title::before {\n content: '\\00a0';\n}\n\n.ant-design-draggable-modal .ant-modal-body {\n flex: 1;\n overflow-x: hidden;\n overflow-y: auto;\n padding: 16px;\n}\n\n.ant-design-draggable-modal-resize-handle-inner {\n width: 12px;\n right: 14px;\n border: 2px solid grey;\n height: 12px;\n bottom: 14px;\n position: absolute;\n border-top: 0;\n border-left: 0;\n}\n\n.ant-design-draggable-modal-resize-handle {\n right: -10px;\n width: 44px;\n bottom: -10px;\n cursor: se-resize;\n height: 44px;\n position: absolute;\n}\n";
20338
+ styleInject(css_248z$3);
20021
20339
 
20022
20340
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
20023
20341
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -20521,7 +20839,7 @@ function useMenuItems$1(drawingId, objectId, setRename) {
20521
20839
  caption: 'delete',
20522
20840
  icon: /*#__PURE__*/React__default.createElement(DeleteOutlined, null),
20523
20841
  callback: () => {
20524
- ccAPI.baseModeler.deleteObject(drawingId, objectId).catch(console.warn);
20842
+ ccAPI.baseModeler.deleteObjects(drawingId, [objectId]).catch(console.warn);
20525
20843
  }
20526
20844
  }
20527
20845
  };
@@ -20734,6 +21052,9 @@ const ListPlaceholder = () => {
20734
21052
  })));
20735
21053
  };
20736
21054
 
21055
+ var css_248z$2 = ".header-dropdown .ant-dropdown-menu-root {\n margin-left: -10px;\n}\n";
21056
+ styleInject(css_248z$2);
21057
+
20737
21058
  const fileTypes = ['ofb', 'stp', 'stl'];
20738
21059
 
20739
21060
  /**
@@ -20787,13 +21108,10 @@ const ModelTreeHeader = ({
20787
21108
  }, type),
20788
21109
  key: type
20789
21110
  }));
20790
- const menu = /*#__PURE__*/React__default.createElement(Menu$1, {
20791
- style: {
20792
- marginLeft: '-10px'
20793
- },
21111
+ const menuProps = {
20794
21112
  items: menuItems,
20795
- onClick: onClick
20796
- });
21113
+ onClick
21114
+ };
20797
21115
  const exportComponent = isFeatureActive ? /*#__PURE__*/React__default.createElement(Tooltip$1, {
20798
21116
  title: "All features should be closed before exporting",
20799
21117
  placement: "left"
@@ -20802,7 +21120,8 @@ const ModelTreeHeader = ({
20802
21120
  size: "small",
20803
21121
  disabled: true
20804
21122
  })) : /*#__PURE__*/React__default.createElement(Dropdown, {
20805
- overlay: menu
21123
+ overlayClassName: "header-dropdown",
21124
+ menu: menuProps
20806
21125
  }, /*#__PURE__*/React__default.createElement(Button, {
20807
21126
  icon: /*#__PURE__*/React__default.createElement(ExportOutlined, null),
20808
21127
  size: "small"
@@ -20975,8 +21294,8 @@ function useMenuItems(setEditName) {
20975
21294
  }, [setEditName]);
20976
21295
  }
20977
21296
 
20978
- var css_248z = "/*\n The only way to customize color picker from react-colorful is using css classes, so we need this file here.\n*/\n.colorPicker .react-colorful {\n width: 100px;\n height: 100px;\n}\n.colorPicker .react-colorful__hue {\n height: 16px;\n}\n.colorPicker .react-colorful__pointer {\n width: 20px;\n height: 20px;\n}\n.colorPicker .react-colorful__saturation {\n border-radius: 4px 4px 0 0;\n}\n.colorPicker .react-colorful__last-control {\n border-radius: 0 0 4px 4px;\n}\n";
20979
- styleInject(css_248z);
21297
+ var css_248z$1 = "/*\n The only way to customize color picker from react-colorful is using css classes, so we need this file here.\n*/\n.colorPicker .react-colorful {\n width: 100px;\n height: 100px;\n}\n\n.colorPicker .react-colorful__hue {\n height: 16px;\n}\n\n.colorPicker .react-colorful__pointer {\n width: 20px;\n height: 20px;\n}\n\n.colorPicker .react-colorful__saturation {\n border-radius: 4px 4px 0 0;\n}\n\n.colorPicker .react-colorful__last-control {\n border-radius: 0 0 4px 4px;\n}\n\n.colorPicker-dropdown {\n color: transparent;\n}\n\n.colorPicker-dropdown .ant-dropdown-menu-root {\n padding: 0px;\n background-color: transparent;\n box-shadow: none;\n}\n\n.colorPicker-dropdown .ant-dropdown-menu-root .ant-dropdown-menu-item {\n padding: 0px;\n color: transparent;\n}\n";
21298
+ styleInject(css_248z$1);
20980
21299
 
20981
21300
  function get256Color(color) {
20982
21301
  if (!color) return {
@@ -21075,8 +21394,8 @@ const ColorPicker = ({
21075
21394
  });
21076
21395
  setShowPicker(false);
21077
21396
  }, [drawingId, solidId, r, g, b, opacity]);
21078
- return /*#__PURE__*/React__default.createElement(Dropdown, {
21079
- overlay: /*#__PURE__*/React__default.createElement("div", {
21397
+ const menuItems = [{
21398
+ label: /*#__PURE__*/React__default.createElement("div", {
21080
21399
  className: "colorPicker"
21081
21400
  }, /*#__PURE__*/React__default.createElement(RgbaColorPicker, {
21082
21401
  color: userColor,
@@ -21102,6 +21421,14 @@ const ColorPicker = ({
21102
21421
  size: "small",
21103
21422
  onClick: cancel
21104
21423
  }))),
21424
+ key: 'colorPicker'
21425
+ }];
21426
+ const menuProps = {
21427
+ items: menuItems
21428
+ };
21429
+ return /*#__PURE__*/React__default.createElement(Dropdown, {
21430
+ overlayClassName: "colorPicker-dropdown",
21431
+ menu: menuProps,
21105
21432
  placement: "bottom",
21106
21433
  open: showPicker
21107
21434
  }, /*#__PURE__*/React__default.createElement("div", {
@@ -21312,6 +21639,9 @@ const SideBar = ({
21312
21639
  }));
21313
21640
  };
21314
21641
 
21642
+ var css_248z = ".toolbar-dropdown .ant-dropdown-menu-root {\n margin-left: -24px;\n}\n";
21643
+ styleInject(css_248z);
21644
+
21315
21645
  var img$p = "data:image/svg+xml,%3csvg width='100' height='100' viewBox='0 0 100 100' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M54.59 49.2615V54.9931H48.7075H42.8251V49.2615V43.5299H48.7075H54.59V49.2615Z' fill='%23C4C4C4'/%3e%3cpath d='M42.8251 43.5299L34.0767 35.0832M42.8251 43.5299V49.2615M42.8251 43.5299H48.7075M42.8251 54.9931L34.0767 64.1437M42.8251 54.9931V49.2615M42.8251 54.9931H48.7075M54.59 54.9931L63.0366 64.1437M54.59 54.9931V49.2615M54.59 54.9931H48.7075M54.59 43.5299L63.0366 35.0832M54.59 43.5299V49.2615M54.59 43.5299H48.7075M54.59 49.2615H79.1254M42.8251 49.2615H17.9879M48.7075 43.5299L48.7075 18.9944M48.7075 54.9931L48.7075 79.8303' stroke='black' stroke-width='4'/%3e%3c/svg%3e";
21316
21646
 
21317
21647
  var img$o = "data:image/svg+xml,%3csvg width='100' height='100' viewBox='0 0 100 100' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg clip-path='url(%23clip0)'%3e%3cpath d='M23.3951 -18.3953C26.7929 -27.63 31.0227 -40.7314 31.0227 -40.7314L38.6065 -18.3796L31.0008 -18.3874L23.3951 -18.3953Z' fill='%23C4C4C4'/%3e%3cpath d='M30.9497 33.7484L31.0008 -18.3874M31.0008 -18.3874L23.3951 -18.3953C26.7929 -27.63 31.0227 -40.7314 31.0227 -40.7314L38.6065 -18.3796L31.0008 -18.3874Z' stroke='%23C4C4C4' stroke-width='5'/%3e%3cpath d='M-19.6068 58.8999C-29.4464 58.8234 -43.2064 59.2709 -43.2064 59.2709L-24.7335 44.5785L-22.1701 51.7392L-19.6068 58.8999Z' fill='%23C4C4C4'/%3e%3cpath d='M26.9146 34.1651L-22.1701 51.7392M-22.1701 51.7392L-19.6068 58.8999C-29.4464 58.8234 -43.2064 59.2709 -43.2064 59.2709L-24.7335 44.5785L-22.1701 51.7392Z' stroke='%23C4C4C4' stroke-width='5'/%3e%3cpath d='M71.7906 62.6511C76.2149 71.4403 82.8953 83.4781 82.8953 83.4781L61.3896 73.7508L66.5901 68.201L71.7906 62.6511Z' fill='black'/%3e%3cpath d='M28.5445 32.5543L66.5901 68.201M66.5901 68.201L71.7906 62.6511C76.2149 71.4403 82.8953 83.4781 82.8953 83.4781L61.3896 73.7508L66.5901 68.201Z' stroke='black' stroke-width='5'/%3e%3ccircle cx='30.9862' cy='33.7406' r='14.6466' transform='rotate(10.304 30.9862 33.7406)' fill='%23C4C4C4'/%3e%3c/g%3e%3cdefs%3e%3cclipPath id='clip0'%3e%3crect width='100' height='100' fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e";
@@ -21384,25 +21714,25 @@ const PartModeCmds = (drawingId, rootId) => {
21384
21714
  icon: /*#__PURE__*/React__default.createElement(Icon, {
21385
21715
  url: img$p
21386
21716
  }),
21387
- callback: wrapper(() => featureApi.createWorkPoint(drawingId, rootId))
21717
+ callback: wrapper(() => featureApi.createWorkGeometry(drawingId, rootId, CCClasses.CCWorkPoint, 'WorkPoint'))
21388
21718
  }, {
21389
21719
  label: 'Workaxis',
21390
21720
  icon: /*#__PURE__*/React__default.createElement(Icon, {
21391
21721
  url: img$o
21392
21722
  }),
21393
- callback: wrapper(() => featureApi.createWorkAxis(drawingId, rootId))
21723
+ callback: wrapper(() => featureApi.createWorkGeometry(drawingId, rootId, CCClasses.CCWorkAxis, 'WorkAxis'))
21394
21724
  }, {
21395
21725
  label: 'Workplane',
21396
21726
  icon: /*#__PURE__*/React__default.createElement(Icon, {
21397
21727
  url: img$n
21398
21728
  }),
21399
- callback: wrapper(() => featureApi.createWorkPlane(drawingId, rootId))
21729
+ callback: wrapper(() => featureApi.createWorkGeometry(drawingId, rootId, CCClasses.CCWorkPlane, 'WorkPlane'))
21400
21730
  }, {
21401
21731
  label: 'WCsys',
21402
21732
  icon: /*#__PURE__*/React__default.createElement(Icon, {
21403
21733
  url: img$m
21404
21734
  }),
21405
- callback: wrapper(() => featureApi.createWorkCoordSystem(drawingId, rootId))
21735
+ callback: wrapper(() => featureApi.createWorkGeometry(drawingId, rootId, CCClasses.CCWorkCoordSystem, 'WorkCoordSystem'))
21406
21736
  }],
21407
21737
  Solid: [{
21408
21738
  label: 'Extrusion',
@@ -21664,15 +21994,10 @@ const SubGroup = ({
21664
21994
  }, command.icon),
21665
21995
  key: command.label
21666
21996
  }));
21667
-
21668
- // Menu appears right under arrow button, but it should be under feature button, so it's shifter for feature button width to the left
21669
- const menu = /*#__PURE__*/React__default.createElement(Menu$1, {
21997
+ const menuProps = {
21670
21998
  items: menuItems,
21671
- onClick: onClick,
21672
- style: {
21673
- marginLeft: '-24px'
21674
- }
21675
- });
21999
+ onClick
22000
+ };
21676
22001
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Button.Group, {
21677
22002
  style: {
21678
22003
  top: '1px'
@@ -21680,7 +22005,8 @@ const SubGroup = ({
21680
22005
  }, /*#__PURE__*/React__default.createElement(FButton, {
21681
22006
  command: commands[curCmdIdx]
21682
22007
  }), /*#__PURE__*/React__default.createElement(Dropdown, {
21683
- overlay: menu
22008
+ overlayClassName: "toolbar-dropdown",
22009
+ menu: menuProps
21684
22010
  }, /*#__PURE__*/React__default.createElement(Button, {
21685
22011
  icon: /*#__PURE__*/React__default.createElement(DownOutlined, null),
21686
22012
  size: "small",