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