pollination-react-io 1.98.1 → 1.99.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.
- package/build/GetGeometry/GetGeometry.types.d.ts +3 -1
- package/build/hooks/useCustomEvent.d.ts +8 -0
- package/build/hooks/useGetGeometry.d.ts +6 -2
- package/build/index.esm.js +89 -57
- package/build/index.esm.js.map +1 -1
- package/build/index.js +89 -57
- package/build/index.js.map +1 -1
- package/package.json +1 -1
package/build/index.js
CHANGED
@@ -41099,12 +41099,13 @@ function stubFalse() {
|
|
41099
41099
|
module.exports = isEqual;
|
41100
41100
|
});
|
41101
41101
|
|
41102
|
-
var useGetGeometry = function () {
|
41102
|
+
var useGetGeometry = function (meshOptions) {
|
41103
|
+
if (meshOptions === void 0) { meshOptions = {}; }
|
41103
41104
|
var host = getHost();
|
41104
41105
|
var _a = React.useState(undefined), geometry = _a[0], setGeometry = _a[1];
|
41105
41106
|
var geometryRef = React.useRef(undefined);
|
41106
41107
|
var setReturnVal = React.useCallback(function (_a, force) {
|
41107
|
-
var data = _a.data;
|
41108
|
+
var data = _a.data;
|
41108
41109
|
var bytes = new TextEncoder().encode(data);
|
41109
41110
|
if (!force && geometryRef.current) {
|
41110
41111
|
if (!lodash_isequal(bytes, geometryRef.current)) {
|
@@ -41131,17 +41132,27 @@ var useGetGeometry = function () {
|
|
41131
41132
|
// @ts-ignore
|
41132
41133
|
return function () { return window.parent.readGeometry = undefined; };
|
41133
41134
|
}, [host, setReturnVal]);
|
41134
|
-
var dotNetGetGeometry = React.useCallback(function (key, selection, force) {
|
41135
|
+
var dotNetGetGeometry = React.useCallback(function (key, selection, force, useSelection) {
|
41135
41136
|
if (key === void 0) { key = 'use-get-geometry'; }
|
41136
41137
|
if (selection === void 0) { selection = false; }
|
41137
41138
|
if (force === void 0) { force = false; }
|
41139
|
+
if (useSelection === void 0) { useSelection = true; }
|
41138
41140
|
if (!checkDotNet())
|
41139
41141
|
return;
|
41140
41142
|
var res = {
|
41141
41143
|
data: null,
|
41142
41144
|
identifier: null,
|
41143
41145
|
};
|
41144
|
-
|
41146
|
+
var options = (Object.values(meshOptions).length !== 0) ? {
|
41147
|
+
select: selection,
|
41148
|
+
useSelection: useSelection,
|
41149
|
+
gridSize: meshOptions.gridSize,
|
41150
|
+
merge: meshOptions.union
|
41151
|
+
} : {
|
41152
|
+
select: selection,
|
41153
|
+
useSelection: useSelection
|
41154
|
+
};
|
41155
|
+
res = window.parent.chrome.webview.hostObjects.sync.geometry.Read(key, JSON.stringify(options));
|
41145
41156
|
if (res) {
|
41146
41157
|
setReturnVal(res, force);
|
41147
41158
|
}
|
@@ -47951,23 +47962,50 @@ var GetModelActions;
|
|
47951
47962
|
GetModelActions["preview"] = "preview";
|
47952
47963
|
})(GetModelActions || (GetModelActions = {}));
|
47953
47964
|
|
47965
|
+
/**
|
47966
|
+
* Listen for a CustomEvent.
|
47967
|
+
* If web it uses document, if panel it uses webview
|
47968
|
+
* @param eventName Name of the CustomEvent
|
47969
|
+
* @param handler Handler to trigger
|
47970
|
+
*/
|
47971
|
+
var useCustomEvent = function (eventName, handler) {
|
47972
|
+
var host = getHost();
|
47973
|
+
React.useEffect(function () {
|
47974
|
+
// If web use document
|
47975
|
+
var owner = document;
|
47976
|
+
// If panel use webview
|
47977
|
+
if (host !== 'web') {
|
47978
|
+
owner = window.parent.chrome.webview;
|
47979
|
+
}
|
47980
|
+
owner.addEventListener(eventName, handler);
|
47981
|
+
return function () {
|
47982
|
+
owner.removeEventListener(eventName, handler);
|
47983
|
+
};
|
47984
|
+
}, []);
|
47985
|
+
};
|
47986
|
+
|
47954
47987
|
var GetGeometry = function (_a) {
|
47955
|
-
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;
|
47956
|
-
|
47988
|
+
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;
|
47989
|
+
// Hooks
|
47957
47990
|
var sendMessage = useSendMessage().sendMessage;
|
47958
|
-
var
|
47959
|
-
var
|
47960
|
-
var
|
47961
|
-
var
|
47962
|
-
var
|
47991
|
+
var _f = useGetGeometry(meshOptions), host = _f.host, geometry = _f.geometry, getGeometry = _f.getGeometry;
|
47992
|
+
var _g = React.useState(false), isClicked = _g[0], setIsClicked = _g[1];
|
47993
|
+
var _h = React.useState(), selection = _h[0], setSelection = _h[1];
|
47994
|
+
var _j = React.useState(), subscribe = _j[0], setSubscribe = _j[1];
|
47995
|
+
var _k = React.useState(), preview = _k[0], setPreview = _k[1];
|
47996
|
+
var _l = React.useState(), refresh = _l[0], setRefresh = _l[1];
|
47997
|
+
var _m = React.useState(), result = _m[0], setResult = _m[1];
|
47998
|
+
// This method does not read runtime state variables. Props only
|
47999
|
+
var customEventHandler = function (e) {
|
48000
|
+
(e.detail.id === defaultKey) && setRefresh(performance.now().toString());
|
48001
|
+
};
|
48002
|
+
useCustomEvent('onGeometryChanged', customEventHandler);
|
47963
48003
|
// Config only on bootstrap
|
47964
48004
|
var initialConfig = React.useMemo(function () {
|
47965
48005
|
if (!optionsConfig)
|
47966
48006
|
return undefined;
|
47967
48007
|
return optionsConfig;
|
47968
48008
|
}, []);
|
47969
|
-
// pollination-react-io hooks
|
47970
|
-
var _k = useGetGeometry(), host = _k.host, geometry = _k.geometry, getGeometry = _k.getGeometry;
|
47971
48009
|
// set selection and subscribe on props change
|
47972
48010
|
React.useEffect(function () {
|
47973
48011
|
if (!initialConfig)
|
@@ -47982,61 +48020,59 @@ var GetGeometry = function (_a) {
|
|
47982
48020
|
setSelection(sel);
|
47983
48021
|
setSubscribe(sub);
|
47984
48022
|
}, [initialConfig]);
|
48023
|
+
/**
|
48024
|
+
* From Blob geometry to string
|
48025
|
+
*/
|
47985
48026
|
React.useEffect(function () {
|
47986
|
-
//
|
47987
|
-
if (!geometry || !
|
48027
|
+
// Only if clicked
|
48028
|
+
if (!geometry || !isClicked)
|
47988
48029
|
return;
|
47989
48030
|
var fr = new FileReader();
|
47990
48031
|
fr.onload = function () {
|
47991
48032
|
if (typeof this.result !== 'string')
|
47992
48033
|
return;
|
47993
|
-
|
47994
|
-
// If preview is ON
|
47995
|
-
preview && sendMessage('SubscribePreviewGeometry', {
|
47996
|
-
data: this.result,
|
47997
|
-
uniqueId: defaultKey,
|
47998
|
-
options: {}
|
47999
|
-
});
|
48000
|
-
// If preview is OFF
|
48001
|
-
!preview && sendMessage('ClearGeometry', {
|
48002
|
-
data: this.result,
|
48003
|
-
uniqueId: defaultKey,
|
48004
|
-
options: {}
|
48005
|
-
});
|
48034
|
+
setResult(this.result);
|
48006
48035
|
};
|
48007
48036
|
fr.readAsText(geometry);
|
48008
|
-
}, [geometry
|
48009
|
-
|
48037
|
+
}, [geometry]);
|
48038
|
+
/**
|
48039
|
+
* Set parent state if result change
|
48040
|
+
*/
|
48010
48041
|
React.useEffect(function () {
|
48011
|
-
if (!
|
48042
|
+
if (!result || !setParentState)
|
48012
48043
|
return;
|
48013
|
-
|
48014
|
-
|
48015
|
-
|
48016
|
-
|
48017
|
-
|
48018
|
-
}
|
48019
|
-
else if (!subscribe
|
48020
|
-
&& typeof subscribeRef.current !== 'undefined') {
|
48021
|
-
clearInterval(subscribeRef.current);
|
48022
|
-
subscribeRef.current = undefined;
|
48023
|
-
}
|
48024
|
-
}, [getGeometry, key, subscribe, subscribeRef, selection]);
|
48025
|
-
// selection and subscription
|
48044
|
+
setParentState({ geometry: JSON.parse(result) });
|
48045
|
+
}, [result, setParentState]);
|
48046
|
+
/**
|
48047
|
+
* Preview only
|
48048
|
+
*/
|
48026
48049
|
React.useEffect(function () {
|
48027
|
-
|
48028
|
-
|
48029
|
-
|
48030
|
-
|
48031
|
-
|
48032
|
-
|
48033
|
-
|
48034
|
-
|
48050
|
+
if (!result)
|
48051
|
+
return;
|
48052
|
+
// Preview ON
|
48053
|
+
preview && sendMessage('SubscribePreviewGeometry', {
|
48054
|
+
data: result,
|
48055
|
+
uniqueId: defaultKey,
|
48056
|
+
options: {}
|
48057
|
+
});
|
48058
|
+
// Preview OFF
|
48059
|
+
!preview && sendMessage('ClearGeometry', {
|
48060
|
+
data: result,
|
48061
|
+
uniqueId: defaultKey,
|
48062
|
+
options: {}
|
48063
|
+
});
|
48064
|
+
}, [result, preview]);
|
48065
|
+
// Event effect if subscribe is active
|
48066
|
+
React.useEffect(function () {
|
48067
|
+
if (!getGeometry)
|
48068
|
+
return;
|
48069
|
+
subscribe && getGeometry(defaultKey, false, false, selection);
|
48070
|
+
}, [getGeometry, refresh]);
|
48035
48071
|
return (React__default["default"].createElement(SettingsButton, { icon: useIcon && ((isClicked && geometry) ? React__default["default"].createElement(CheckCircle$1, null) : undefined), onClick: function () {
|
48036
48072
|
if (!getGeometry)
|
48037
48073
|
return;
|
48038
48074
|
setIsClicked(true);
|
48039
|
-
getGeometry(
|
48075
|
+
getGeometry(defaultKey, selection, true, selection);
|
48040
48076
|
}, disabled: typeof getGeometry === 'undefined',
|
48041
48077
|
// @ts-ignore
|
48042
48078
|
options: host !== 'revit' ? [{
|
@@ -48060,10 +48096,6 @@ var GetGeometry = function (_a) {
|
|
48060
48096
|
checked: selection,
|
48061
48097
|
icon: React__default["default"].createElement(BoundingBox$1, { size: 16 }),
|
48062
48098
|
onSelect: function () {
|
48063
|
-
// reset key when "select" option is deselected
|
48064
|
-
if (selection) {
|
48065
|
-
setKey(performance.now().toString());
|
48066
|
-
}
|
48067
48099
|
setSelection(function (state) { return !state; });
|
48068
48100
|
},
|
48069
48101
|
},
|