pollination-react-io 1.100.0 → 1.101.0

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.
@@ -5,6 +5,7 @@ export declare enum GetModelActions {
5
5
  preview = "preview"
6
6
  }
7
7
  export interface GetModelProps {
8
+ defaultKey: string;
8
9
  onChange?: (event: any) => void;
9
10
  optionsConfig?: {
10
11
  [index in GetModelActions]: {
@@ -15,6 +16,5 @@ export interface GetModelProps {
15
16
  buttonLabel?: string;
16
17
  inputProps?: HTMLProps<HTMLInputElement>;
17
18
  showHelpText?: boolean;
18
- defaultKey?: string;
19
19
  useIcon?: boolean;
20
20
  }
@@ -7,5 +7,5 @@ declare global {
7
7
  export declare const useGetHbjson: () => {
8
8
  host: string;
9
9
  hbjson: Blob;
10
- getHbjson: (key?: any, selection?: any, force?: any) => void;
10
+ getHbjson: (key?: any, selection?: any, force?: any, useSelection?: boolean) => void;
11
11
  };
@@ -41183,14 +41183,18 @@ var useGetHbjson = function () {
41183
41183
  // @ts-ignore
41184
41184
  return function () { return window.parent.readHbjson = undefined; };
41185
41185
  }, [setReturnValue]);
41186
- var dotNetGetHbjson = useCallback(function (key, selection, force) {
41186
+ var dotNetGetHbjson = useCallback(function (key, selection, force, useSelection) {
41187
41187
  if (key === void 0) { key = 'use-get-hbjson'; }
41188
41188
  if (selection === void 0) { selection = false; }
41189
41189
  if (force === void 0) { force = false; }
41190
+ if (useSelection === void 0) { useSelection = true; }
41190
41191
  if (!checkDotNet())
41191
41192
  return;
41192
41193
  var res = window.parent.chrome.webview
41193
- .hostObjects.sync.hbjson.Get(key, selection);
41194
+ .hostObjects.sync.hbjson.Read(key, JSON.stringify({
41195
+ select: selection,
41196
+ useSelection: useSelection
41197
+ }));
41194
41198
  if (res) {
41195
41199
  setReturnValue(res, force);
41196
41200
  }
@@ -41746,15 +41750,42 @@ var GetModelActions$1;
41746
41750
  GetModelActions["preview"] = "preview";
41747
41751
  })(GetModelActions$1 || (GetModelActions$1 = {}));
41748
41752
 
41753
+ /**
41754
+ * Listen for a CustomEvent.
41755
+ * If web it uses document, if panel it uses webview
41756
+ * @param eventName Name of the CustomEvent
41757
+ * @param handler Handler to trigger
41758
+ */
41759
+ var useCustomEvent = function (eventName, handler) {
41760
+ var host = getHost();
41761
+ useEffect(function () {
41762
+ // If web use document
41763
+ var owner = document;
41764
+ // If panel use webview
41765
+ if (host !== 'web') {
41766
+ owner = window.parent.chrome.webview;
41767
+ }
41768
+ owner.addEventListener(eventName, handler);
41769
+ return function () {
41770
+ owner.removeEventListener(eventName, handler);
41771
+ };
41772
+ }, []);
41773
+ };
41774
+
41749
41775
  var GetModel = function (_a) {
41750
41776
  var onChange = _a.onChange, optionsConfig = _a.optionsConfig, _b = _a.buttonLabel, buttonLabel = _b === void 0 ? 'Get Model' : _b, _c = _a.showHelpText, showHelpText = _c === void 0 ? true : _c, _d = _a.defaultKey, defaultKey = _d === void 0 ? 'get-model-btn' : _d, _e = _a.useIcon, useIcon = _e === void 0 ? true : _e;
41751
- var subscribeRef = useRef();
41752
41777
  var sendHbjson = useSendHbjson().sendHbjson;
41753
- var _f = useState(performance.now().toString()), key = _f[0], setKey = _f[1];
41754
- var _g = useState(false), isClicked = _g[0], setIsClicked = _g[1];
41755
- var _h = useState(), selection = _h[0], setSelection = _h[1];
41756
- var _j = useState(), subscribe = _j[0], setSubscribe = _j[1];
41757
- var _k = useState(), preview = _k[0], setPreview = _k[1];
41778
+ var _f = useState(false), isClicked = _f[0], setIsClicked = _f[1];
41779
+ var _g = useState(), selection = _g[0], setSelection = _g[1];
41780
+ var _h = useState(), subscribe = _h[0], setSubscribe = _h[1];
41781
+ var _j = useState(), preview = _j[0], setPreview = _j[1];
41782
+ var _k = useState(), refresh = _k[0], setRefresh = _k[1];
41783
+ var _l = useState(), result = _l[0], setResult = _l[1];
41784
+ // This method does not read runtime state variables. Props only
41785
+ var customEventHandler = function (e) {
41786
+ (e.detail.id === defaultKey) && setRefresh(performance.now().toString());
41787
+ };
41788
+ useCustomEvent('onModelChanged', customEventHandler);
41758
41789
  // Config only on bootstrap
41759
41790
  var initialConfig = useMemo(function () {
41760
41791
  if (!optionsConfig)
@@ -41762,7 +41793,7 @@ var GetModel = function (_a) {
41762
41793
  return optionsConfig;
41763
41794
  }, []);
41764
41795
  // pollination-react-io hooks
41765
- var _l = useGetHbjson(), host = _l.host, hbjson = _l.hbjson, getHbjson = _l.getHbjson;
41796
+ var _m = useGetHbjson(), host = _m.host, hbjson = _m.hbjson, getHbjson = _m.getHbjson;
41766
41797
  // set selection and subscribe on props change
41767
41798
  useEffect(function () {
41768
41799
  if (!initialConfig)
@@ -41777,58 +41808,55 @@ var GetModel = function (_a) {
41777
41808
  setSelection(sel);
41778
41809
  setSubscribe(sub);
41779
41810
  }, [initialConfig]);
41811
+ /**
41812
+ * From Blob geometry to string
41813
+ */
41780
41814
  useEffect(function () {
41781
- // Send data only after the first click
41815
+ // Only if clicked
41782
41816
  if (!hbjson || !isClicked)
41783
41817
  return;
41784
- onChange && onChange(new File([hbjson], "Model_linked_from_".concat(host, ".hbjson")));
41785
- if (onChange) {
41786
- var fr = new FileReader();
41787
- fr.onload = function () {
41788
- if (typeof this.result !== 'string')
41789
- return;
41790
- // If preview is ON
41791
- preview && sendHbjson('SubscribePreviewHBJSON', {
41792
- data: this.result,
41793
- uniqueId: defaultKey,
41794
- options: {}
41795
- });
41796
- // If preview is OFF
41797
- !preview && sendHbjson('ClearHBJSON', {
41798
- data: this.result,
41799
- uniqueId: defaultKey,
41800
- options: {}
41801
- });
41802
- };
41803
- fr.readAsText(hbjson);
41804
- }
41805
- }, [hbjson, host, onChange, preview]);
41806
- // subscribe
41818
+ var fr = new FileReader();
41819
+ fr.onload = function () {
41820
+ if (typeof this.result !== 'string')
41821
+ return;
41822
+ setResult(this.result);
41823
+ };
41824
+ fr.readAsText(hbjson);
41825
+ }, [hbjson]);
41826
+ /**
41827
+ * Set parent state if result change
41828
+ */
41807
41829
  useEffect(function () {
41808
- if (!getHbjson)
41830
+ if (!result || !onChange)
41809
41831
  return;
41810
- if (subscribe
41811
- && typeof subscribeRef.current === 'undefined') {
41812
- subscribeRef.current = setInterval(function () {
41813
- getHbjson(key, false);
41814
- }, 1000);
41815
- }
41816
- else if (!subscribe
41817
- && typeof subscribeRef.current !== 'undefined') {
41818
- clearInterval(subscribeRef.current);
41819
- subscribeRef.current = undefined;
41820
- }
41821
- }, [getHbjson, key, subscribe, subscribeRef]);
41822
- // selection and subscription
41832
+ onChange(new File([hbjson], "Model_linked_from_".concat(host, ".hbjson")));
41833
+ }, [result, onChange]);
41834
+ /**
41835
+ * Preview only
41836
+ */
41823
41837
  useEffect(function () {
41824
- // If selection is deactivated and subscription is active
41825
- if (!selection && typeof subscribeRef.current !== 'undefined') {
41826
- clearInterval(subscribeRef.current);
41827
- subscribeRef.current = undefined;
41828
- // Force subscribe
41829
- setKey(performance.now().toString());
41830
- }
41831
- }, [selection]);
41838
+ if (!result)
41839
+ return;
41840
+ // Preview ON
41841
+ preview && sendHbjson('SubscribePreviewHBJSON', {
41842
+ data: result,
41843
+ uniqueId: defaultKey,
41844
+ options: {}
41845
+ });
41846
+ // Preview OFF
41847
+ !preview && sendHbjson('ClearHBJSON', {
41848
+ data: result,
41849
+ uniqueId: defaultKey,
41850
+ options: {}
41851
+ });
41852
+ }, [result, preview]);
41853
+ // Event effect if subscribe is active
41854
+ // If subscribe is enable or disable rerun
41855
+ useEffect(function () {
41856
+ if (!getHbjson)
41857
+ return;
41858
+ subscribe && getHbjson(defaultKey, false, false, selection);
41859
+ }, [getHbjson, refresh, subscribe]);
41832
41860
  return (host === 'web'
41833
41861
  ? (React__default.createElement(FileInput, { onChange: function (file) {
41834
41862
  if (!file)
@@ -41839,7 +41867,7 @@ var GetModel = function (_a) {
41839
41867
  if (!getHbjson)
41840
41868
  return;
41841
41869
  setIsClicked(true);
41842
- getHbjson(key, selection, true);
41870
+ getHbjson(defaultKey, selection, true, selection);
41843
41871
  }, disabled: !getHbjson,
41844
41872
  // @ts-ignore
41845
41873
  options: host !== 'revit' ? [{
@@ -41863,10 +41891,6 @@ var GetModel = function (_a) {
41863
41891
  checked: selection,
41864
41892
  icon: React__default.createElement(BoundingBox$1, { size: 16 }),
41865
41893
  onSelect: function () {
41866
- // reset key when "select" option is deselected
41867
- if (selection) {
41868
- setKey(performance.now().toString());
41869
- }
41870
41894
  setSelection(function (state) { return !state; });
41871
41895
  },
41872
41896
  },
@@ -42239,7 +42263,7 @@ var ComboFileSelector = function (_a) {
42239
42263
  return (React__default.createElement(FileInput, { onChange: onChange, inputProps: inputProps, accept: typeof inputProps.accept === 'string' ?
42240
42264
  inputProps.accept.split(', ') : undefined }));
42241
42265
  case 'get_model':
42242
- return (React__default.createElement(GetModel, { onChange: onChange, inputProps: inputProps, showHelpText: false }));
42266
+ return (React__default.createElement(GetModel, { defaultKey: projectName, onChange: onChange, inputProps: inputProps, showHelpText: false }));
42243
42267
  case 'get_cloud':
42244
42268
  return (React__default.createElement(SelectCloudArtifacts, { projectOwner: projectOwner, projectName: projectName, value: value, hidden: hidden, fileNameMatch: typeof inputProps.accept === 'string' ?
42245
42269
  ".*(".concat(inputProps.accept.replace(/\./g, '').split(', ').join('$|'), "$)") : '.*', onChange: onChange, client: client }));
@@ -47939,28 +47963,6 @@ var GetModelActions;
47939
47963
  GetModelActions["preview"] = "preview";
47940
47964
  })(GetModelActions || (GetModelActions = {}));
47941
47965
 
47942
- /**
47943
- * Listen for a CustomEvent.
47944
- * If web it uses document, if panel it uses webview
47945
- * @param eventName Name of the CustomEvent
47946
- * @param handler Handler to trigger
47947
- */
47948
- var useCustomEvent = function (eventName, handler) {
47949
- var host = getHost();
47950
- useEffect(function () {
47951
- // If web use document
47952
- var owner = document;
47953
- // If panel use webview
47954
- if (host !== 'web') {
47955
- owner = window.parent.chrome.webview;
47956
- }
47957
- owner.addEventListener(eventName, handler);
47958
- return function () {
47959
- owner.removeEventListener(eventName, handler);
47960
- };
47961
- }, []);
47962
- };
47963
-
47964
47966
  var GetGeometry = function (_a) {
47965
47967
  var setParentState = _a.setParentState, optionsConfig = _a.optionsConfig, _b = _a.buttonLabel, buttonLabel = _b === void 0 ? 'Get Geometry' : _b, _c = _a.defaultKey, defaultKey = _c === void 0 ? 'get-geometry-btn' : _c, _d = _a.useIcon, useIcon = _d === void 0 ? false : _d, _e = _a.meshOptions, meshOptions = _e === void 0 ? {} : _e, _f = _a.geometryFilter, geometryFilter = _f === void 0 ? {} : _f;
47966
47968
  // Hooks
@@ -48040,11 +48042,12 @@ var GetGeometry = function (_a) {
48040
48042
  });
48041
48043
  }, [result, preview]);
48042
48044
  // Event effect if subscribe is active
48045
+ // If subscribe is enable or disable rerun
48043
48046
  useEffect(function () {
48044
48047
  if (!getGeometry)
48045
48048
  return;
48046
48049
  subscribe && getGeometry(defaultKey, false, false, selection);
48047
- }, [getGeometry, refresh]);
48050
+ }, [getGeometry, refresh, subscribe]);
48048
48051
  return (React__default.createElement(SettingsButton, { icon: useIcon && ((isClicked && geometry) ? React__default.createElement(CheckCircle$1, null) : undefined), onClick: function () {
48049
48052
  if (!getGeometry)
48050
48053
  return;