@neurodyn/react-room-viewer 0.0.20 → 0.0.22
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/dist/index.js +65 -31
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1088,6 +1088,13 @@ var __webpack_modules__ = {
|
|
|
1088
1088
|
overflow: hidden;
|
|
1089
1089
|
}
|
|
1090
1090
|
|
|
1091
|
+
.line-clamp-3 {
|
|
1092
|
+
-webkit-line-clamp: 3;
|
|
1093
|
+
-webkit-box-orient: vertical;
|
|
1094
|
+
display: -webkit-box;
|
|
1095
|
+
overflow: hidden;
|
|
1096
|
+
}
|
|
1097
|
+
|
|
1091
1098
|
.block {
|
|
1092
1099
|
display: block;
|
|
1093
1100
|
}
|
|
@@ -2957,6 +2964,10 @@ var __webpack_modules__ = {
|
|
|
2957
2964
|
overflow-wrap: break-word;
|
|
2958
2965
|
}
|
|
2959
2966
|
|
|
2967
|
+
.wrap-anywhere {
|
|
2968
|
+
overflow-wrap: anywhere;
|
|
2969
|
+
}
|
|
2970
|
+
|
|
2960
2971
|
.whitespace-nowrap {
|
|
2961
2972
|
white-space: nowrap;
|
|
2962
2973
|
}
|
|
@@ -3428,6 +3439,10 @@ var __webpack_modules__ = {
|
|
|
3428
3439
|
scale: var(--tw-scale-x) var(--tw-scale-y);
|
|
3429
3440
|
}
|
|
3430
3441
|
|
|
3442
|
+
.group-hover\\:border-icons-normal:is(:where(.group):hover *) {
|
|
3443
|
+
border-color: var(--v-icons-normal);
|
|
3444
|
+
}
|
|
3445
|
+
|
|
3431
3446
|
.group-hover\\:opacity-100:is(:where(.group):hover *) {
|
|
3432
3447
|
opacity: 1;
|
|
3433
3448
|
}
|
|
@@ -3772,10 +3787,6 @@ var __webpack_modules__ = {
|
|
|
3772
3787
|
}
|
|
3773
3788
|
}
|
|
3774
3789
|
|
|
3775
|
-
.hover\\:border-icons-normal:hover {
|
|
3776
|
-
border-color: var(--v-icons-normal);
|
|
3777
|
-
}
|
|
3778
|
-
|
|
3779
3790
|
.hover\\:bg-accent:hover {
|
|
3780
3791
|
background-color: var(--accent);
|
|
3781
3792
|
}
|
|
@@ -8857,6 +8868,10 @@ const RESOURCE_IDENTITY_ANSWERS = {
|
|
|
8857
8868
|
function resolveResourceIdentityAnswers(type) {
|
|
8858
8869
|
return RESOURCE_IDENTITY_ANSWERS[resolveResourceProfile(type).identity];
|
|
8859
8870
|
}
|
|
8871
|
+
function getResourceProductName(type, object, material, fallback = '') {
|
|
8872
|
+
const { namesProduct } = resolveMaterialRoleAnswers(type);
|
|
8873
|
+
return namesProduct ? material?.name ?? object?.name ?? object?.kit?.name ?? fallback : object?.kit?.name ?? object?.name ?? material?.name ?? fallback;
|
|
8874
|
+
}
|
|
8860
8875
|
function getMaterialId(material) {
|
|
8861
8876
|
return material.hid ?? '';
|
|
8862
8877
|
}
|
|
@@ -8939,7 +8954,7 @@ function useRoomViewerWallResourceMaterialOptions() {
|
|
|
8939
8954
|
}
|
|
8940
8955
|
function useRoomViewerMaterialCatalog({ includeEmbeddedObject = false } = {}) {
|
|
8941
8956
|
const { material, tinuuid, embeddedObject, selectedObject, setMaterial, setTinuuid, apiKey, baseURL, source, widgetSession, setAccessError, setLoadError } = useRoomViewerResource();
|
|
8942
|
-
const { type } = useRoomViewerMetadata();
|
|
8957
|
+
const { type, name } = useRoomViewerMetadata();
|
|
8943
8958
|
const ownerUuid = embeddedObject?.owner?.uuid;
|
|
8944
8959
|
const { data, error, isFetchingNextPage, fetchNextPage, hasNextPage, isLoading } = useInfiniteQuery({
|
|
8945
8960
|
queryKey: roomViewerOwnerObjectsQueryKey(ownerUuid, {
|
|
@@ -9031,6 +9046,7 @@ function useRoomViewerMaterialCatalog({ includeEmbeddedObject = false } = {}) {
|
|
|
9031
9046
|
return {
|
|
9032
9047
|
materialId,
|
|
9033
9048
|
name: ('material-name' === catalogLabel ? material.name : object.kit?.name ?? object.name) ?? material.name ?? '',
|
|
9049
|
+
productName: getResourceProductName(type, object, material, name),
|
|
9034
9050
|
material,
|
|
9035
9051
|
tinuuid: object.tinuuid
|
|
9036
9052
|
};
|
|
@@ -9039,7 +9055,9 @@ function useRoomViewerMaterialCatalog({ includeEmbeddedObject = false } = {}) {
|
|
|
9039
9055
|
catalogsEveryMaterial,
|
|
9040
9056
|
catalogLabel,
|
|
9041
9057
|
composition,
|
|
9042
|
-
objects
|
|
9058
|
+
objects,
|
|
9059
|
+
type,
|
|
9060
|
+
name
|
|
9043
9061
|
]);
|
|
9044
9062
|
const selectedCollection = 'color-design' === composition && selectedObject?.tinuuid === tinuuid && selectedObject?.kit?.uuid ? objects.find((object)=>getCollapseKey(object) === getCollapseKey(selectedObject)) : void 0;
|
|
9045
9063
|
const selectedMaterialId = selectedCollection?.tinuuid !== tinuuid && selectedCollection ? getMaterialId(selectedCollection.materials?.[0] ?? {}) : material ? getMaterialId(material) : '';
|
|
@@ -15795,7 +15813,7 @@ function createRoomLightingTexture(planeIds, shading, neutral = 128) {
|
|
|
15795
15813
|
texture.needsUpdate = true;
|
|
15796
15814
|
return texture;
|
|
15797
15815
|
}
|
|
15798
|
-
const CACHE_KEY = 'neurodyn-room-scene-
|
|
15816
|
+
const CACHE_KEY = 'neurodyn-room-scene-v5';
|
|
15799
15817
|
const GLSL_DEFINE = 'NEURODYN_ROOM_SCENE_PATCH';
|
|
15800
15818
|
function patchShader(shader, patch, shading) {
|
|
15801
15819
|
shader.uniforms.uPlaneIds = {
|
|
@@ -15820,7 +15838,7 @@ function patchShader(shader, patch, shading) {
|
|
|
15820
15838
|
if (_neurodynRoomCoverage <= 0.001) discard;
|
|
15821
15839
|
|
|
15822
15840
|
${shading ? `
|
|
15823
|
-
float _neurodynRoomGain = texture2D(uRoomLighting, vec2(_neurodynRoomUv.x, 1.0 - _neurodynRoomUv.y)).r * (255.0 / 128.0);
|
|
15841
|
+
float _neurodynRoomGain = min(texture2D(uRoomLighting, vec2(_neurodynRoomUv.x, 1.0 - _neurodynRoomUv.y)).r * (255.0 / 128.0), ${patch.maxRoomGain.toFixed(3)});
|
|
15824
15842
|
outgoingLight = (outgoingLight - ${emissive}) * _neurodynRoomGain + ${emissive};
|
|
15825
15843
|
` : ''}
|
|
15826
15844
|
diffuseColor.a *= smoothstep(0.0, 0.6, _neurodynRoomCoverage);
|
|
@@ -15884,7 +15902,7 @@ function patchMaterialWithRoomScene(material, patch, { shading = true } = {}) {
|
|
|
15884
15902
|
previousOnBeforeCompile?.call(material, shader, renderer);
|
|
15885
15903
|
patchShader(shader, patch, shading);
|
|
15886
15904
|
};
|
|
15887
|
-
material.customProgramCacheKey = ()=>`${previousCustomProgramCacheKey()}|${CACHE_KEY}|shading:${shading}`;
|
|
15905
|
+
material.customProgramCacheKey = ()=>`${previousCustomProgramCacheKey()}|${CACHE_KEY}|shading:${shading}|maxRoomGain:${patch.maxRoomGain}`;
|
|
15888
15906
|
material.needsUpdate = true;
|
|
15889
15907
|
return ()=>{
|
|
15890
15908
|
material.onBeforeCompile = previousOnBeforeCompile;
|
|
@@ -17106,6 +17124,7 @@ function RoomPlane({ plane, geometry, setPlaneRef }) {
|
|
|
17106
17124
|
})
|
|
17107
17125
|
});
|
|
17108
17126
|
}
|
|
17127
|
+
const MAX_ROOM_GAIN = 1.1;
|
|
17109
17128
|
function Room() {
|
|
17110
17129
|
const { type } = useRoomViewerMetadata();
|
|
17111
17130
|
const panelGroup = usePanelGroup();
|
|
@@ -17149,7 +17168,8 @@ function Room() {
|
|
|
17149
17168
|
lightingTexture,
|
|
17150
17169
|
planeIdsSize,
|
|
17151
17170
|
viewport,
|
|
17152
|
-
activePlaneIdUniform: scenePlacement.activePlaneIdUniform
|
|
17171
|
+
activePlaneIdUniform: scenePlacement.activePlaneIdUniform,
|
|
17172
|
+
maxRoomGain: MAX_ROOM_GAIN
|
|
17153
17173
|
}), [
|
|
17154
17174
|
scenePlacement.activePlaneIdUniform,
|
|
17155
17175
|
planeIdsSize,
|
|
@@ -17255,6 +17275,13 @@ const ROOM_VIEWER_CONFIG_QUERY_KEY = [
|
|
|
17255
17275
|
'room-viewer',
|
|
17256
17276
|
'layout-config'
|
|
17257
17277
|
];
|
|
17278
|
+
const HDR_ROTATION = [
|
|
17279
|
+
Math.PI / 2,
|
|
17280
|
+
0,
|
|
17281
|
+
0
|
|
17282
|
+
];
|
|
17283
|
+
const REMOTE_HDR_INTENSITY = 0.5;
|
|
17284
|
+
const FALLBACK_ENVIRONMENT_INTENSITY = 0.9;
|
|
17258
17285
|
function getNeutralHdrUrl(config) {
|
|
17259
17286
|
const url = config?.internal?.links?.find((link)=>link.type === HDR_NEUTRAL_LINK_TYPE)?.url?.trim();
|
|
17260
17287
|
return url || void 0;
|
|
@@ -17271,14 +17298,17 @@ function RemoteNeutralHdrEnvironment() {
|
|
|
17271
17298
|
files: hdrUrl ? [
|
|
17272
17299
|
hdrUrl
|
|
17273
17300
|
] : void 0,
|
|
17274
|
-
preset: hdrUrl ? void 0 : 'warehouse'
|
|
17301
|
+
preset: hdrUrl ? void 0 : 'warehouse',
|
|
17302
|
+
environmentRotation: HDR_ROTATION,
|
|
17303
|
+
environmentIntensity: hdrUrl ? REMOTE_HDR_INTENSITY : FALLBACK_ENVIRONMENT_INTENSITY
|
|
17275
17304
|
});
|
|
17276
17305
|
}
|
|
17277
17306
|
function StaticNeutralHdrEnvironment() {
|
|
17278
17307
|
return /*#__PURE__*/ jsx_runtime_jsx(Environment, {
|
|
17279
17308
|
files: [
|
|
17280
17309
|
HDR_URL
|
|
17281
|
-
]
|
|
17310
|
+
],
|
|
17311
|
+
environmentRotation: HDR_ROTATION
|
|
17282
17312
|
});
|
|
17283
17313
|
}
|
|
17284
17314
|
function RoomEnvironment({ lighting }) {
|
|
@@ -18602,14 +18632,14 @@ function MaterialSelectionContent({ className, gridClassName, titleClassName, on
|
|
|
18602
18632
|
className: "grid min-h-max grid-cols-3 gap-x-2 gap-y-2",
|
|
18603
18633
|
"data-testid": "material-selection-grid-items",
|
|
18604
18634
|
children: [
|
|
18605
|
-
materialItems.map(({ materialId, material, tinuuid,
|
|
18635
|
+
materialItems.map(({ materialId, material, tinuuid, productName })=>{
|
|
18606
18636
|
const isSelected = materialId === selectedMaterialId;
|
|
18607
18637
|
const previewUrl = getMaterialPreviewUrl(material);
|
|
18608
18638
|
return /*#__PURE__*/ jsxs("button", {
|
|
18609
18639
|
type: "button",
|
|
18610
18640
|
"data-selected": isSelected,
|
|
18611
18641
|
"aria-pressed": isSelected,
|
|
18612
|
-
className:
|
|
18642
|
+
className: "group flex min-w-0 flex-col gap-1 rounded-lg bg-background-containers text-left focus-visible:ring-2 focus-visible:ring-icons-normal focus-visible:outline-hidden",
|
|
18613
18643
|
onClick: ()=>handleSelectMaterial(materialId),
|
|
18614
18644
|
onKeyDown: (event)=>{
|
|
18615
18645
|
if ('Enter' === event.key || ' ' === event.key) {
|
|
@@ -18618,23 +18648,28 @@ function MaterialSelectionContent({ className, gridClassName, titleClassName, on
|
|
|
18618
18648
|
}
|
|
18619
18649
|
},
|
|
18620
18650
|
children: [
|
|
18621
|
-
|
|
18622
|
-
|
|
18623
|
-
|
|
18624
|
-
|
|
18625
|
-
|
|
18626
|
-
|
|
18651
|
+
/*#__PURE__*/ jsxs("span", {
|
|
18652
|
+
className: "relative grid aspect-square w-full shrink-0 place-items-center overflow-hidden rounded-lg border border-border p-1 transition group-hover:border-icons-normal",
|
|
18653
|
+
children: [
|
|
18654
|
+
previewUrl ? /*#__PURE__*/ jsx_runtime_jsx("img", {
|
|
18655
|
+
src: previewUrl,
|
|
18656
|
+
alt: "",
|
|
18657
|
+
className: "size-full rounded-md object-cover"
|
|
18658
|
+
}) : /*#__PURE__*/ jsx_runtime_jsx(image_Image, {
|
|
18659
|
+
className: "size-6 text-icons-normal"
|
|
18660
|
+
}),
|
|
18661
|
+
isSelected && /*#__PURE__*/ jsx_runtime_jsx("span", {
|
|
18662
|
+
className: "absolute top-1 right-1 grid size-6 place-items-center rounded-full bg-icons-blue text-icons-white",
|
|
18663
|
+
"data-testid": "material-selection-selected-check",
|
|
18664
|
+
children: /*#__PURE__*/ jsx_runtime_jsx(CheckDone, {
|
|
18665
|
+
className: "size-4"
|
|
18666
|
+
})
|
|
18667
|
+
})
|
|
18668
|
+
]
|
|
18627
18669
|
}),
|
|
18628
18670
|
/*#__PURE__*/ jsx_runtime_jsx("span", {
|
|
18629
|
-
className: "
|
|
18630
|
-
children:
|
|
18631
|
-
}),
|
|
18632
|
-
isSelected && /*#__PURE__*/ jsx_runtime_jsx("span", {
|
|
18633
|
-
className: "absolute top-1 right-1 grid size-6 place-items-center rounded-full bg-icons-blue text-icons-white",
|
|
18634
|
-
"data-testid": "material-selection-selected-check",
|
|
18635
|
-
children: /*#__PURE__*/ jsx_runtime_jsx(CheckDone, {
|
|
18636
|
-
className: "size-4"
|
|
18637
|
-
})
|
|
18671
|
+
className: "typo-base-12 line-clamp-3 w-full wrap-anywhere text-text-base",
|
|
18672
|
+
children: productName
|
|
18638
18673
|
})
|
|
18639
18674
|
]
|
|
18640
18675
|
}, `${tinuuid}-${materialId}`);
|
|
@@ -19220,7 +19255,6 @@ function ProductCardSlot_getMaterialPreviewUrl(material) {
|
|
|
19220
19255
|
function ProductCardSlot({ actions, band, slot, presentation }) {
|
|
19221
19256
|
const { t } = useTranslation();
|
|
19222
19257
|
const { displayUnit, name, type } = useRoomViewerMetadata();
|
|
19223
|
-
const { namesProduct } = resolveMaterialRoleAnswers(type);
|
|
19224
19258
|
const { containerRef } = useRoomViewerSceneState();
|
|
19225
19259
|
const { material, selectedObject, tinuuid } = useRoomViewerResource();
|
|
19226
19260
|
const { variantItems, selectedTinuuid, selectVariant } = useRoomViewerVariantCatalog();
|
|
@@ -19228,7 +19262,7 @@ function ProductCardSlot({ actions, band, slot, presentation }) {
|
|
|
19228
19262
|
const unitLabel = t(`units.${displayUnit}`);
|
|
19229
19263
|
const isOpen = actions.isMaterialSelectionOpen;
|
|
19230
19264
|
const actionLabel = isOpen ? t('floor.scene.hideCatalog') : t(`resourceType.${type}.${presentation.actionLabelResourceTypeKey}`);
|
|
19231
|
-
const materialName =
|
|
19265
|
+
const materialName = getResourceProductName(type, selectedObject, material, name);
|
|
19232
19266
|
const previewUrl = ProductCardSlot_getMaterialPreviewUrl(material) ?? selectedObject?.preview?.subRes?.small ?? selectedObject?.preview?.url ?? selectedObject?.mainPreview;
|
|
19233
19267
|
const selectedVariant = variantItems.find((item)=>item.tinuuid === selectedTinuuid);
|
|
19234
19268
|
const isVariantSelectionCurrent = Boolean(selectedVariant);
|