@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.
Files changed (2) hide show
  1. package/dist/index.js +65 -31
  2. 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-v4';
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, name })=>{
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: utils_cn('group relative grid aspect-square min-w-0 place-items-center overflow-hidden rounded-lg border border-border bg-background-containers p-1 text-left transition hover:border-icons-normal focus-visible:ring-2 focus-visible:ring-icons-normal focus-visible:outline-hidden'),
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
- previewUrl ? /*#__PURE__*/ jsx_runtime_jsx("img", {
18622
- src: previewUrl,
18623
- alt: "",
18624
- className: "size-full rounded-md object-cover"
18625
- }) : /*#__PURE__*/ jsx_runtime_jsx(image_Image, {
18626
- className: "size-6 text-icons-normal"
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: "sr-only",
18630
- children: name
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 = namesProduct ? material?.name ?? selectedObject?.name ?? selectedObject?.kit?.name ?? name : selectedObject?.kit?.name ?? selectedObject?.name ?? material?.name ?? name;
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);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@neurodyn/react-room-viewer",
3
3
  "type": "module",
4
- "version": "0.0.20",
4
+ "version": "0.0.22",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },