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