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
@@ -1,9 +1,11 @@
|
|
1
|
+
import { MeshOptions } from "../hooks";
|
1
2
|
export declare enum GetModelActions {
|
2
3
|
selection = "selection",
|
3
4
|
subscribe = "subscribe",
|
4
5
|
preview = "preview"
|
5
6
|
}
|
6
7
|
export interface GetGeometryProps {
|
8
|
+
defaultKey: string;
|
7
9
|
setParentState?: (data: any) => void;
|
8
10
|
optionsConfig?: {
|
9
11
|
[index in GetModelActions]: {
|
@@ -12,6 +14,6 @@ export interface GetGeometryProps {
|
|
12
14
|
};
|
13
15
|
};
|
14
16
|
buttonLabel?: string;
|
15
|
-
defaultKey?: string;
|
16
17
|
useIcon?: boolean;
|
18
|
+
meshOptions?: MeshOptions;
|
17
19
|
}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { EventHandler } from 'react';
|
2
|
+
/**
|
3
|
+
* Listen for a CustomEvent.
|
4
|
+
* If web it uses document, if panel it uses webview
|
5
|
+
* @param eventName Name of the CustomEvent
|
6
|
+
* @param handler Handler to trigger
|
7
|
+
*/
|
8
|
+
export declare const useCustomEvent: (eventName: 'onGeometryChanged' | 'onModelChanged' | 'onResultChanged', handler: EventHandler<any>) => void;
|
@@ -4,8 +4,12 @@ declare global {
|
|
4
4
|
chrome?: any;
|
5
5
|
}
|
6
6
|
}
|
7
|
-
export
|
7
|
+
export interface MeshOptions {
|
8
|
+
gridSize?: number;
|
9
|
+
union?: boolean;
|
10
|
+
}
|
11
|
+
export declare const useGetGeometry: (meshOptions?: MeshOptions) => {
|
8
12
|
host: string;
|
9
13
|
geometry: Blob;
|
10
|
-
getGeometry: (key?: any, selection?:
|
14
|
+
getGeometry: (key?: any, selection?: boolean, force?: boolean, useSelection?: boolean) => void;
|
11
15
|
};
|
package/build/index.esm.js
CHANGED
@@ -41072,12 +41072,13 @@ function stubFalse() {
|
|
41072
41072
|
module.exports = isEqual;
|
41073
41073
|
});
|
41074
41074
|
|
41075
|
-
var useGetGeometry = function () {
|
41075
|
+
var useGetGeometry = function (meshOptions) {
|
41076
|
+
if (meshOptions === void 0) { meshOptions = {}; }
|
41076
41077
|
var host = getHost();
|
41077
41078
|
var _a = useState(undefined), geometry = _a[0], setGeometry = _a[1];
|
41078
41079
|
var geometryRef = useRef(undefined);
|
41079
41080
|
var setReturnVal = useCallback(function (_a, force) {
|
41080
|
-
var data = _a.data;
|
41081
|
+
var data = _a.data;
|
41081
41082
|
var bytes = new TextEncoder().encode(data);
|
41082
41083
|
if (!force && geometryRef.current) {
|
41083
41084
|
if (!lodash_isequal(bytes, geometryRef.current)) {
|
@@ -41104,17 +41105,27 @@ var useGetGeometry = function () {
|
|
41104
41105
|
// @ts-ignore
|
41105
41106
|
return function () { return window.parent.readGeometry = undefined; };
|
41106
41107
|
}, [host, setReturnVal]);
|
41107
|
-
var dotNetGetGeometry = useCallback(function (key, selection, force) {
|
41108
|
+
var dotNetGetGeometry = useCallback(function (key, selection, force, useSelection) {
|
41108
41109
|
if (key === void 0) { key = 'use-get-geometry'; }
|
41109
41110
|
if (selection === void 0) { selection = false; }
|
41110
41111
|
if (force === void 0) { force = false; }
|
41112
|
+
if (useSelection === void 0) { useSelection = true; }
|
41111
41113
|
if (!checkDotNet())
|
41112
41114
|
return;
|
41113
41115
|
var res = {
|
41114
41116
|
data: null,
|
41115
41117
|
identifier: null,
|
41116
41118
|
};
|
41117
|
-
|
41119
|
+
var options = (Object.values(meshOptions).length !== 0) ? {
|
41120
|
+
select: selection,
|
41121
|
+
useSelection: useSelection,
|
41122
|
+
gridSize: meshOptions.gridSize,
|
41123
|
+
merge: meshOptions.union
|
41124
|
+
} : {
|
41125
|
+
select: selection,
|
41126
|
+
useSelection: useSelection
|
41127
|
+
};
|
41128
|
+
res = window.parent.chrome.webview.hostObjects.sync.geometry.Read(key, JSON.stringify(options));
|
41118
41129
|
if (res) {
|
41119
41130
|
setReturnVal(res, force);
|
41120
41131
|
}
|
@@ -47924,23 +47935,50 @@ var GetModelActions;
|
|
47924
47935
|
GetModelActions["preview"] = "preview";
|
47925
47936
|
})(GetModelActions || (GetModelActions = {}));
|
47926
47937
|
|
47938
|
+
/**
|
47939
|
+
* Listen for a CustomEvent.
|
47940
|
+
* If web it uses document, if panel it uses webview
|
47941
|
+
* @param eventName Name of the CustomEvent
|
47942
|
+
* @param handler Handler to trigger
|
47943
|
+
*/
|
47944
|
+
var useCustomEvent = function (eventName, handler) {
|
47945
|
+
var host = getHost();
|
47946
|
+
useEffect(function () {
|
47947
|
+
// If web use document
|
47948
|
+
var owner = document;
|
47949
|
+
// If panel use webview
|
47950
|
+
if (host !== 'web') {
|
47951
|
+
owner = window.parent.chrome.webview;
|
47952
|
+
}
|
47953
|
+
owner.addEventListener(eventName, handler);
|
47954
|
+
return function () {
|
47955
|
+
owner.removeEventListener(eventName, handler);
|
47956
|
+
};
|
47957
|
+
}, []);
|
47958
|
+
};
|
47959
|
+
|
47927
47960
|
var GetGeometry = function (_a) {
|
47928
|
-
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;
|
47929
|
-
|
47961
|
+
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;
|
47962
|
+
// Hooks
|
47930
47963
|
var sendMessage = useSendMessage().sendMessage;
|
47931
|
-
var
|
47932
|
-
var
|
47933
|
-
var
|
47934
|
-
var
|
47935
|
-
var
|
47964
|
+
var _f = useGetGeometry(meshOptions), host = _f.host, geometry = _f.geometry, getGeometry = _f.getGeometry;
|
47965
|
+
var _g = useState(false), isClicked = _g[0], setIsClicked = _g[1];
|
47966
|
+
var _h = useState(), selection = _h[0], setSelection = _h[1];
|
47967
|
+
var _j = useState(), subscribe = _j[0], setSubscribe = _j[1];
|
47968
|
+
var _k = useState(), preview = _k[0], setPreview = _k[1];
|
47969
|
+
var _l = useState(), refresh = _l[0], setRefresh = _l[1];
|
47970
|
+
var _m = useState(), result = _m[0], setResult = _m[1];
|
47971
|
+
// This method does not read runtime state variables. Props only
|
47972
|
+
var customEventHandler = function (e) {
|
47973
|
+
(e.detail.id === defaultKey) && setRefresh(performance.now().toString());
|
47974
|
+
};
|
47975
|
+
useCustomEvent('onGeometryChanged', customEventHandler);
|
47936
47976
|
// Config only on bootstrap
|
47937
47977
|
var initialConfig = useMemo(function () {
|
47938
47978
|
if (!optionsConfig)
|
47939
47979
|
return undefined;
|
47940
47980
|
return optionsConfig;
|
47941
47981
|
}, []);
|
47942
|
-
// pollination-react-io hooks
|
47943
|
-
var _k = useGetGeometry(), host = _k.host, geometry = _k.geometry, getGeometry = _k.getGeometry;
|
47944
47982
|
// set selection and subscribe on props change
|
47945
47983
|
useEffect(function () {
|
47946
47984
|
if (!initialConfig)
|
@@ -47955,61 +47993,59 @@ var GetGeometry = function (_a) {
|
|
47955
47993
|
setSelection(sel);
|
47956
47994
|
setSubscribe(sub);
|
47957
47995
|
}, [initialConfig]);
|
47996
|
+
/**
|
47997
|
+
* From Blob geometry to string
|
47998
|
+
*/
|
47958
47999
|
useEffect(function () {
|
47959
|
-
//
|
47960
|
-
if (!geometry || !
|
48000
|
+
// Only if clicked
|
48001
|
+
if (!geometry || !isClicked)
|
47961
48002
|
return;
|
47962
48003
|
var fr = new FileReader();
|
47963
48004
|
fr.onload = function () {
|
47964
48005
|
if (typeof this.result !== 'string')
|
47965
48006
|
return;
|
47966
|
-
|
47967
|
-
// If preview is ON
|
47968
|
-
preview && sendMessage('SubscribePreviewGeometry', {
|
47969
|
-
data: this.result,
|
47970
|
-
uniqueId: defaultKey,
|
47971
|
-
options: {}
|
47972
|
-
});
|
47973
|
-
// If preview is OFF
|
47974
|
-
!preview && sendMessage('ClearGeometry', {
|
47975
|
-
data: this.result,
|
47976
|
-
uniqueId: defaultKey,
|
47977
|
-
options: {}
|
47978
|
-
});
|
48007
|
+
setResult(this.result);
|
47979
48008
|
};
|
47980
48009
|
fr.readAsText(geometry);
|
47981
|
-
}, [geometry
|
47982
|
-
|
48010
|
+
}, [geometry]);
|
48011
|
+
/**
|
48012
|
+
* Set parent state if result change
|
48013
|
+
*/
|
47983
48014
|
useEffect(function () {
|
47984
|
-
if (!
|
48015
|
+
if (!result || !setParentState)
|
47985
48016
|
return;
|
47986
|
-
|
47987
|
-
|
47988
|
-
|
47989
|
-
|
47990
|
-
|
47991
|
-
}
|
47992
|
-
else if (!subscribe
|
47993
|
-
&& typeof subscribeRef.current !== 'undefined') {
|
47994
|
-
clearInterval(subscribeRef.current);
|
47995
|
-
subscribeRef.current = undefined;
|
47996
|
-
}
|
47997
|
-
}, [getGeometry, key, subscribe, subscribeRef, selection]);
|
47998
|
-
// selection and subscription
|
48017
|
+
setParentState({ geometry: JSON.parse(result) });
|
48018
|
+
}, [result, setParentState]);
|
48019
|
+
/**
|
48020
|
+
* Preview only
|
48021
|
+
*/
|
47999
48022
|
useEffect(function () {
|
48000
|
-
|
48001
|
-
|
48002
|
-
|
48003
|
-
|
48004
|
-
|
48005
|
-
|
48006
|
-
|
48007
|
-
|
48023
|
+
if (!result)
|
48024
|
+
return;
|
48025
|
+
// Preview ON
|
48026
|
+
preview && sendMessage('SubscribePreviewGeometry', {
|
48027
|
+
data: result,
|
48028
|
+
uniqueId: defaultKey,
|
48029
|
+
options: {}
|
48030
|
+
});
|
48031
|
+
// Preview OFF
|
48032
|
+
!preview && sendMessage('ClearGeometry', {
|
48033
|
+
data: result,
|
48034
|
+
uniqueId: defaultKey,
|
48035
|
+
options: {}
|
48036
|
+
});
|
48037
|
+
}, [result, preview]);
|
48038
|
+
// Event effect if subscribe is active
|
48039
|
+
useEffect(function () {
|
48040
|
+
if (!getGeometry)
|
48041
|
+
return;
|
48042
|
+
subscribe && getGeometry(defaultKey, false, false, selection);
|
48043
|
+
}, [getGeometry, refresh]);
|
48008
48044
|
return (React__default.createElement(SettingsButton, { icon: useIcon && ((isClicked && geometry) ? React__default.createElement(CheckCircle$1, null) : undefined), onClick: function () {
|
48009
48045
|
if (!getGeometry)
|
48010
48046
|
return;
|
48011
48047
|
setIsClicked(true);
|
48012
|
-
getGeometry(
|
48048
|
+
getGeometry(defaultKey, selection, true, selection);
|
48013
48049
|
}, disabled: typeof getGeometry === 'undefined',
|
48014
48050
|
// @ts-ignore
|
48015
48051
|
options: host !== 'revit' ? [{
|
@@ -48033,10 +48069,6 @@ var GetGeometry = function (_a) {
|
|
48033
48069
|
checked: selection,
|
48034
48070
|
icon: React__default.createElement(BoundingBox$1, { size: 16 }),
|
48035
48071
|
onSelect: function () {
|
48036
|
-
// reset key when "select" option is deselected
|
48037
|
-
if (selection) {
|
48038
|
-
setKey(performance.now().toString());
|
48039
|
-
}
|
48040
48072
|
setSelection(function (state) { return !state; });
|
48041
48073
|
},
|
48042
48074
|
},
|