@terraware/web-components 5.0.27-rc.0 → 5.0.27
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/components/AntSwitch/index.js +22 -19
- package/components/Autocomplete/Autocomplete.js +130 -106
- package/components/Badge/index.js +29 -28
- package/components/BusySpinner/index.js +45 -40
- package/components/Button/Button.js +47 -41
- package/components/Checkbox.js +63 -64
- package/components/Confirm/index.js +83 -74
- package/components/DatePicker/DatePicker.js +141 -138
- package/components/DialogBox/DialogBox.js +118 -111
- package/components/Divisor.js +18 -18
- package/components/Dropdown.js +94 -66
- package/components/EditableTable/index.js +271 -211
- package/components/ErrorBox/ErrorBox.js +49 -47
- package/components/FileChooser/index.js +135 -117
- package/components/FormBottomBar/index.js +84 -75
- package/components/Icon/Icon.js +20 -12
- package/components/Icon/icons/index.js +256 -256
- package/components/IconTooltip/index.js +60 -49
- package/components/Map/MapBox.js +452 -545
- package/components/Map/MapContainer.js +29 -25
- package/components/Map/MapDateSliderControl.js +64 -64
- package/components/Map/MapDrawer.js +47 -41
- package/components/Map/MapLegend.js +172 -176
- package/components/Map/MapViewStyleControl.js +63 -59
- package/components/Map/ReactMapboxWrapper.js +2 -3
- package/components/Map/index.js +180 -161
- package/components/Map/types.js +17 -12
- package/components/Map/useMaintainLayerOrder.js +26 -16
- package/components/Markdown/index.js +26 -25
- package/components/Message/Message.js +76 -73
- package/components/MultiSelect/index.js +124 -112
- package/components/Navbar/NavFooter.js +13 -9
- package/components/Navbar/NavItem.js +76 -70
- package/components/Navbar/NavSection.js +19 -17
- package/components/Navbar/Navbar.js +46 -39
- package/components/Navbar/SubNavbar.js +13 -9
- package/components/Note.js +22 -18
- package/components/OverlayModal/OverlayModal.js +63 -56
- package/components/PageForm/index.js +41 -33
- package/components/PhotoChooser/index.js +173 -165
- package/components/PhotosCarousel/PhotoSlide.js +35 -32
- package/components/PhotosCarousel/index.js +85 -80
- package/components/PhotosCarousel/usePhotosCarousel.js +76 -69
- package/components/Pill/index.js +45 -41
- package/components/PillList/index.js +24 -17
- package/components/PlacementWrapper/index.js +59 -38
- package/components/PopoverMenu/Popover.js +85 -68
- package/components/PopoverMenu/index.js +56 -51
- package/components/PopoverMultiSelect/index.js +59 -52
- package/components/ProgressCircle/ProgressCircle.js +32 -28
- package/components/RadioButton.js +19 -17
- package/components/Select/Select.js +15 -13
- package/components/Select/SelectT.js +250 -235
- package/components/Separator/index.js +17 -14
- package/components/Size.js +1 -0
- package/components/Slider/index.js +56 -43
- package/components/SummaryBox.js +72 -70
- package/components/Tabs/index.js +135 -133
- package/components/TextTruncated/index.js +130 -117
- package/components/Textfield/Textfield.js +190 -158
- package/components/Textfield/TruncatedTextArea.js +84 -70
- package/components/TimelineSlider/TimelineMarker.js +30 -25
- package/components/TimelineSlider/TimelineRail.js +11 -8
- package/components/TimelineSlider/index.js +66 -64
- package/components/TimelineSliderV2/ClusterBadge.js +29 -25
- package/components/TimelineSliderV2/TimelineDot.js +35 -31
- package/components/TimelineSliderV2/TimelineRail.js +11 -8
- package/components/TimelineSliderV2/index.js +103 -121
- package/components/TimelineSliderV2/layout.js +147 -124
- package/components/TimelineSliderV2/types.js +1 -0
- package/components/Tooltip/Tooltip.js +56 -47
- package/components/ViewPhotosDialog/index.js +35 -28
- package/components/VirtualWalkthrough/Annotation.js +207 -163
- package/components/VirtualWalkthrough/AnnotationEditPane.js +184 -198
- package/components/VirtualWalkthrough/AnnotationPanel.js +199 -187
- package/components/VirtualWalkthrough/Application.js +34 -31
- package/components/VirtualWalkthrough/AutoRotator.js +223 -85
- package/components/VirtualWalkthrough/BlockingSpinner.js +28 -26
- package/components/VirtualWalkthrough/BoundaryRing.js +34 -30
- package/components/VirtualWalkthrough/BoundaryWall.js +36 -32
- package/components/VirtualWalkthrough/CameraInfo.js +89 -100
- package/components/VirtualWalkthrough/ControlsInfoPane.js +195 -254
- package/components/VirtualWalkthrough/GradientSky.js +73 -72
- package/components/VirtualWalkthrough/SplatControls.js +221 -209
- package/components/VirtualWalkthrough/SplatCrop.js +20 -21
- package/components/VirtualWalkthrough/SplatFadeCrop.js +20 -21
- package/components/VirtualWalkthrough/SplatModel.js +85 -65
- package/components/VirtualWalkthrough/SplatRevealRain.js +46 -41
- package/components/VirtualWalkthrough/TfAnnotationManager.js +379 -197
- package/components/VirtualWalkthrough/TfXrNavigation.js +162 -73
- package/components/VirtualWalkthrough/VirtualWalkthroughViewer.js +431 -438
- package/components/VirtualWalkthrough/VrAnnotationPanel.js +22 -18
- package/components/VirtualWalkthrough/XrAnnotationInteraction.js +17 -14
- package/components/VirtualWalkthrough/XrExitButton.js +17 -14
- package/components/VirtualWalkthrough/XrGazeDwell.js +17 -14
- package/components/VirtualWalkthrough/XrPointerRay.js +17 -14
- package/components/VirtualWalkthrough/XrStartPose.js +121 -67
- package/components/VirtualWalkthrough/boundary-ring.js +117 -87
- package/components/VirtualWalkthrough/boundary-wall.js +258 -175
- package/components/VirtualWalkthrough/camera-adoption.js +64 -18
- package/components/VirtualWalkthrough/groundPlane.js +47 -32
- package/components/VirtualWalkthrough/gsplat-fade-crop-effect.js +35 -35
- package/components/VirtualWalkthrough/splatFormat.js +47 -13
- package/components/VirtualWalkthrough/useAdoptedCamera.js +44 -23
- package/components/VirtualWalkthrough/useRestartOnVr.js +37 -26
- package/components/VirtualWalkthrough/useXrRenderTuning.js +54 -33
- package/components/VirtualWalkthrough/vr-annotation-panel-layout.js +99 -67
- package/components/VirtualWalkthrough/vr-annotation-panel.js +433 -403
- package/components/VirtualWalkthrough/vr-annotation-scroll.js +28 -10
- package/components/VirtualWalkthrough/walkthrough-camera.js +329 -204
- package/components/VirtualWalkthrough/xr-annotation-candidate-buffer.js +80 -39
- package/components/VirtualWalkthrough/xr-annotation-candidates.js +18 -6
- package/components/VirtualWalkthrough/xr-annotation-interaction.js +56 -31
- package/components/VirtualWalkthrough/xr-annotation-targeting.js +38 -22
- package/components/VirtualWalkthrough/xr-button-arming.js +17 -7
- package/components/VirtualWalkthrough/xr-button-hold.js +36 -22
- package/components/VirtualWalkthrough/xr-exit-button-mask.js +36 -22
- package/components/VirtualWalkthrough/xr-exit-button.js +207 -148
- package/components/VirtualWalkthrough/xr-face-buttons.js +29 -19
- package/components/VirtualWalkthrough/xr-gaze-dwell-state.js +34 -23
- package/components/VirtualWalkthrough/xr-gaze-dwell.js +144 -107
- package/components/VirtualWalkthrough/xr-interactive-ui.js +24 -12
- package/components/VirtualWalkthrough/xr-pointer-ray.js +20 -13
- package/components/VirtualWalkthrough/xr-progress-pie-material.js +88 -117
- package/components/VirtualWalkthrough/xr-progress-pie.js +10 -1
- package/components/VirtualWalkthrough/xr-ray-quad.js +30 -16
- package/components/VirtualWalkthrough/xr-render-tuning.js +48 -17
- package/components/VirtualWalkthrough/xr-scene-bounds.js +37 -21
- package/components/VirtualWalkthrough/xr-start-pose.js +73 -27
- package/components/VirtualWalkthrough/xr-teleport-gesture.js +42 -16
- package/components/svg/BlobbyGrayIconImage.js +39 -41
- package/components/svg/BlobbyGrayIconImport.js +39 -41
- package/components/svg/BlobbyGrayIconUploadToTheCloud.js +39 -41
- package/components/svg/BlobbyIconCloudChecked.js +164 -202
- package/components/svg/BlobbyIconExportOrUploadPhoto.js +164 -202
- package/components/svg/BlobbyIconFolder.js +164 -202
- package/components/svg/BlobbyIconGraphReport.js +164 -202
- package/components/svg/BlobbyIconHappy.js +164 -202
- package/components/svg/BlobbyIconHeartMonitor.js +164 -202
- package/components/svg/BlobbyIconLeaf.js +164 -202
- package/components/svg/BlobbyIconLibrary.js +164 -202
- package/components/svg/BlobbyIconNursery.js +166 -204
- package/components/svg/BlobbyIconOrganization.js +164 -202
- package/components/svg/BlobbyIconParchment.js +164 -202
- package/components/svg/BlobbyIconPeople.js +164 -202
- package/components/svg/BlobbyIconSeedBank.js +164 -202
- package/components/svg/BlobbyIconSeedling.js +164 -202
- package/components/svg/BlobbyIconSeeds.js +164 -202
- package/components/svg/BlobbyIconSite.js +167 -206
- package/components/svg/BlobbyIconSparkles.js +164 -202
- package/components/svg/BlobbyIconWrench.js +164 -202
- package/components/svg/Bug.js +21 -19
- package/components/svg/Calendar.js +21 -19
- package/components/svg/CaretDown.js +21 -19
- package/components/svg/CaretLeft.js +21 -19
- package/components/svg/CaretRight.js +21 -19
- package/components/svg/CaretUp.js +21 -19
- package/components/svg/ChevronDown.js +21 -19
- package/components/svg/ChevronUp.js +21 -19
- package/components/svg/Close.js +21 -19
- package/components/svg/Critical.js +21 -19
- package/components/svg/Edit.js +164 -202
- package/components/svg/Error.js +21 -19
- package/components/svg/Filter.js +21 -19
- package/components/svg/Folder.js +21 -19
- package/components/svg/Help.js +21 -19
- package/components/svg/Home.js +21 -19
- package/components/svg/IconAdd.js +21 -19
- package/components/svg/IconArrowRight.js +23 -21
- package/components/svg/IconBusinessNetwork.js +21 -19
- package/components/svg/IconCalendar.js +21 -19
- package/components/svg/IconCancel.js +21 -19
- package/components/svg/IconChargingBattery.js +21 -19
- package/components/svg/IconChecklist.js +23 -21
- package/components/svg/IconCheckmark.js +21 -19
- package/components/svg/IconCoinInHand.js +21 -19
- package/components/svg/IconColumns.js +21 -19
- package/components/svg/IconComment.js +22 -20
- package/components/svg/IconDashboard.js +21 -19
- package/components/svg/IconDataMigration.js +21 -19
- package/components/svg/IconDocument.js +23 -21
- package/components/svg/IconDownloadFromTheCloud.js +23 -21
- package/components/svg/IconEdit.js +23 -21
- package/components/svg/IconExpand.js +23 -21
- package/components/svg/IconExport.js +21 -19
- package/components/svg/IconExternalLink.js +21 -19
- package/components/svg/IconEye.js +21 -19
- package/components/svg/IconEyeOff.js +21 -19
- package/components/svg/IconFile.js +21 -19
- package/components/svg/IconFolder.js +21 -19
- package/components/svg/IconFullScreen.js +22 -20
- package/components/svg/IconFutures.js +21 -19
- package/components/svg/IconGraphReport.js +21 -19
- package/components/svg/IconGrid.js +21 -19
- package/components/svg/IconHeartMonitor.js +21 -19
- package/components/svg/IconHelp.js +23 -21
- package/components/svg/IconHistory.js +21 -19
- package/components/svg/IconImport.js +21 -19
- package/components/svg/IconIndex.js +21 -19
- package/components/svg/IconLayers.js +21 -19
- package/components/svg/IconLibrary.js +22 -20
- package/components/svg/IconList.js +21 -19
- package/components/svg/IconLivePlant.js +21 -19
- package/components/svg/IconLocations.js +21 -19
- package/components/svg/IconMail.js +21 -19
- package/components/svg/IconManager.js +21 -19
- package/components/svg/IconMap.js +21 -19
- package/components/svg/IconMarker.js +21 -19
- package/components/svg/IconMenu.js +21 -19
- package/components/svg/IconMenuHorizontal.js +21 -19
- package/components/svg/IconModule.js +21 -19
- package/components/svg/IconMyLocation.js +21 -19
- package/components/svg/IconNote.js +23 -21
- package/components/svg/IconNursery.js +23 -21
- package/components/svg/IconOrg.js +21 -19
- package/components/svg/IconParchment.js +21 -19
- package/components/svg/IconPhoto.js +21 -19
- package/components/svg/IconPlantsFilled.js +21 -19
- package/components/svg/IconRedo.js +21 -19
- package/components/svg/IconRestorationSite.js +21 -19
- package/components/svg/IconSeedBank.js +21 -19
- package/components/svg/IconSeedling.js +21 -19
- package/components/svg/IconSettings.js +21 -19
- package/components/svg/IconSlice.js +21 -19
- package/components/svg/IconSubmit.js +21 -19
- package/components/svg/IconSubtract.js +23 -21
- package/components/svg/IconSynced.js +21 -19
- package/components/svg/IconTrashCan.js +21 -19
- package/components/svg/IconTreasureMap.js +21 -19
- package/components/svg/IconUnavailable.js +21 -19
- package/components/svg/IconUndo.js +21 -19
- package/components/svg/IconVariable.js +21 -19
- package/components/svg/IconVideo.js +31 -30
- package/components/svg/IconWifi.js +21 -19
- package/components/svg/Info.js +21 -19
- package/components/svg/Key.js +21 -19
- package/components/svg/Leaf.js +21 -19
- package/components/svg/Lock.js +21 -19
- package/components/svg/Logo.js +43 -48
- package/components/svg/MenuVertical.js +21 -19
- package/components/svg/Notification.js +21 -19
- package/components/svg/Person.js +21 -19
- package/components/svg/Plus.js +21 -19
- package/components/svg/RestorationSite.js +21 -19
- package/components/svg/Search.js +21 -19
- package/components/svg/Seeds.js +21 -19
- package/components/svg/Site.js +21 -19
- package/components/svg/Sparkles.js +21 -19
- package/components/svg/Species.js +21 -19
- package/components/svg/Species2.js +164 -202
- package/components/svg/Spinner.js +48 -54
- package/components/svg/Star.js +21 -19
- package/components/svg/Success.js +21 -19
- package/components/svg/SuccessFilled.js +21 -19
- package/components/svg/TerrawareLogoDesktop.js +49 -55
- package/components/svg/TerrawareLogoMobile.js +26 -25
- package/components/svg/Touchscreen.js +21 -19
- package/components/svg/UploadCloud.js +164 -202
- package/components/svg/Warning.js +21 -19
- package/components/svg/WelcomeClipboard.js +133 -156
- package/components/svg/index.js +129 -129
- package/components/table/EnhancedTableToolbar.js +74 -68
- package/components/table/EnhancedTableToolbarV2.js +41 -31
- package/components/table/TableCellRenderer.js +231 -196
- package/components/table/TableHeader.js +73 -71
- package/components/table/TableHeaderItem.js +102 -97
- package/components/table/density.js +19 -18
- package/components/table/index.js +369 -350
- package/components/table/sort.js +52 -27
- package/components/table/types.js +1 -0
- package/components/types/index.js +1 -0
- package/hooks/cameraEntityContext.js +13 -2
- package/hooks/useBoolean.js +13 -17
- package/hooks/useCameraPosition.js +56 -56
- package/hooks/useDevicePerformance.js +17 -17
- package/hooks/useXr.js +87 -85
- package/index.js +58 -58
- package/package.json +1 -1
- package/setupTests.js +4 -0
- package/strings/export.js +170 -111
- package/strings/index.js +54 -25
- package/strings/locales.js +41 -21
- package/strings/strings-en.js +51 -49
- package/strings/strings-es.js +51 -49
- package/strings/strings-fr.js +51 -49
- package/strings/strings-gx.js +51 -49
- package/style-dictionary-dist/TerrawareTheme.js +186 -186
- package/theme.js +76 -74
- package/utils/color.js +15 -8
- package/utils/date.js +108 -42
- package/utils/index.js +4 -4
- package/utils/preventDefaultEvent.js +3 -3
- package/utils/text.js +11 -11
- package/utils/useDeviceInfo.js +79 -42
- package/virtualWalkthrough.js +23 -23
package/utils/date.js
CHANGED
|
@@ -1,48 +1,114 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { DateTime } from
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
import { DateTime } from 'luxon';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Accepted date types for input are:
|
|
6
|
+
* - string for any date ISO string representation
|
|
7
|
+
* - number for timestamp
|
|
8
|
+
* - JS Date
|
|
9
|
+
* - luxon DateTime
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Helper util that returns default time zone as a fallback.
|
|
14
|
+
*/
|
|
15
|
+
const tz = timeZoneId => timeZoneId || 'Etc/UTC';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Parse a date ISO string with zone implied.
|
|
19
|
+
* eg. '2023-01-10 in 'America/Los_Angeles'
|
|
20
|
+
*/
|
|
21
|
+
const getDateFromISOString = (date, timeZoneId) => {
|
|
22
|
+
return DateTime.fromISO(date, {
|
|
23
|
+
zone: tz(timeZoneId)
|
|
24
|
+
});
|
|
12
25
|
};
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Parse a date from milliseconds, with time zone implied.
|
|
29
|
+
*/
|
|
30
|
+
const getDateFromMillis = (date, timeZoneId) => {
|
|
31
|
+
const millis = new Date(date).getTime();
|
|
32
|
+
return DateTime.fromMillis(millis, {
|
|
33
|
+
zone: tz(timeZoneId)
|
|
34
|
+
});
|
|
16
35
|
};
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Return the display value for a date in ISO 8601 format.
|
|
39
|
+
*/
|
|
40
|
+
const getDisplayValue = date => {
|
|
41
|
+
if (date.isValid) {
|
|
42
|
+
return date.toFormat('yyyy-MM-dd');
|
|
43
|
+
}
|
|
44
|
+
return date.toString();
|
|
20
45
|
};
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Returns <Month> <Year> (eg. July 2023).
|
|
49
|
+
*/
|
|
50
|
+
const getShortDate = date => {
|
|
51
|
+
if (date.isValid) {
|
|
52
|
+
return date.toFormat('LLLL yyyy');
|
|
53
|
+
}
|
|
54
|
+
return date.toString();
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Utility that constructs a valid DateTime object from
|
|
59
|
+
* any DateType value passed in (ISO string or epoch milliseconds or DateTime object).
|
|
60
|
+
* Note: the DateTime object input support is mostly for ease of use and will essentially be a pass-through.
|
|
61
|
+
*/
|
|
62
|
+
const getDate = (date, timeZoneId) => {
|
|
63
|
+
if (typeof date === 'string') {
|
|
64
|
+
const fromString = getDateFromISOString(date, timeZoneId);
|
|
65
|
+
if (fromString.isValid) {
|
|
66
|
+
return fromString;
|
|
25
67
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
68
|
+
}
|
|
69
|
+
if (typeof date === 'number') {
|
|
70
|
+
const fromMillis = getDateFromMillis(date, timeZoneId);
|
|
71
|
+
if (fromMillis.isValid) {
|
|
72
|
+
return fromMillis;
|
|
29
73
|
}
|
|
30
|
-
|
|
31
|
-
|
|
74
|
+
}
|
|
75
|
+
if (_.isDate(date) || typeof date === 'string' || typeof date === 'number') {
|
|
76
|
+
return DateTime.fromJSDate(new Date(date), {
|
|
77
|
+
zone: tz(timeZoneId)
|
|
32
78
|
});
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
if
|
|
44
|
-
return
|
|
45
|
-
}
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
79
|
+
}
|
|
80
|
+
return date.setZone(tz(timeZoneId));
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Default export function that provides a display value for a date
|
|
85
|
+
* with optional implied time zone.
|
|
86
|
+
*/
|
|
87
|
+
const getDateDisplayValue = (date, timeZoneId) => {
|
|
88
|
+
if (typeof date === 'string' && date.match(/^\d\d\d\d-\d\d-\d\d$/)) {
|
|
89
|
+
// if already in display format, return as-is, do not apply time zone
|
|
90
|
+
return date;
|
|
91
|
+
}
|
|
92
|
+
const dateObj = getDate(date, timeZoneId);
|
|
93
|
+
return getDisplayValue(dateObj);
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Exported function that returns todays date in a specific (optional) time zone.
|
|
98
|
+
*/
|
|
99
|
+
const getTodaysDateFormatted = timeZoneId => {
|
|
100
|
+
return getDisplayValue(DateTime.now().setZone(tz(timeZoneId)));
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Checks if a date is in the future, time zone for date is optional.
|
|
105
|
+
*/
|
|
106
|
+
const isInTheFuture = (date, timeZoneId) => {
|
|
107
|
+
const d = getDate(date, timeZoneId);
|
|
108
|
+
if (d.isValid) {
|
|
109
|
+
return d.toMillis() > Date.now();
|
|
110
|
+
}
|
|
111
|
+
return false;
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
export { getDateDisplayValue as default, getDate, getShortDate, getTodaysDateFormatted, isInTheFuture, tz };
|
package/utils/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { default as getDateDisplayValue,
|
|
2
|
-
export { default as preventDefaultEvent } from
|
|
3
|
-
export { default as isWhitespaces } from
|
|
4
|
-
export { default as useDeviceInfo } from
|
|
1
|
+
export { getDate, default as getDateDisplayValue, getTodaysDateFormatted, isInTheFuture } from './date.js';
|
|
2
|
+
export { default as preventDefaultEvent } from './preventDefaultEvent.js';
|
|
3
|
+
export { default as isWhitespaces } from './text.js';
|
|
4
|
+
export { default as useDeviceInfo } from './useDeviceInfo.js';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const preventDefault =
|
|
2
|
-
|
|
3
|
-
export default
|
|
1
|
+
const preventDefault = event => event.preventDefault();
|
|
2
|
+
|
|
3
|
+
export { preventDefault as default };
|
package/utils/text.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
const isWhitespaces =
|
|
2
|
-
const titleCase =
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
export { titleCase };
|
|
1
|
+
const isWhitespaces = str => str.match(/^\s+$/);
|
|
2
|
+
const titleCase = str => str.split(' ').map(word => {
|
|
3
|
+
if (word !== word.toUpperCase()) {
|
|
4
|
+
const lowerCaseWord = word.toLowerCase();
|
|
5
|
+
return lowerCaseWord.replace(lowerCaseWord.charAt(0), lowerCaseWord.charAt(0).toUpperCase());
|
|
6
|
+
} else {
|
|
7
|
+
return word;
|
|
8
|
+
}
|
|
9
|
+
}).join(' ');
|
|
10
|
+
|
|
11
|
+
export { isWhitespaces as default, titleCase };
|
package/utils/useDeviceInfo.js
CHANGED
|
@@ -1,43 +1,80 @@
|
|
|
1
|
-
import { useMediaQuery } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
1
|
+
import { useMediaQuery } from 'react-responsive';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Device widths categorized for our purposes.
|
|
5
|
+
* Device widths
|
|
6
|
+
* desktop width > 1023
|
|
7
|
+
* tablet width = 1023 - 768
|
|
8
|
+
* mobile width = < 768
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* This function returns properties on device type.
|
|
13
|
+
*
|
|
14
|
+
* {
|
|
15
|
+
* type: 'desktop' | 'tablet' | 'mobile',
|
|
16
|
+
* orientation: 'portrait' | 'landscape',
|
|
17
|
+
* isDesktop: <boolean>,
|
|
18
|
+
* isTablet: <boolean>,
|
|
19
|
+
* isMobile: <boolean>,
|
|
20
|
+
* isRetina: <boolean>,
|
|
21
|
+
* }
|
|
22
|
+
*
|
|
23
|
+
* Clients can use whichever properties they see fit.
|
|
24
|
+
*
|
|
25
|
+
* This function also acceps a callback function to be called
|
|
26
|
+
* if there's a change in any of our interested device properties.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
const useDeviceInfo = ({
|
|
30
|
+
onChange
|
|
31
|
+
} = {}) => {
|
|
32
|
+
const deviceChangeCallback = matches => {
|
|
33
|
+
if (matches && onChange) {
|
|
34
|
+
onChange();
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
const isDesktop = useMediaQuery({
|
|
38
|
+
minWidth: 1024
|
|
39
|
+
}, undefined, deviceChangeCallback);
|
|
40
|
+
const isTablet = useMediaQuery({
|
|
41
|
+
maxWidth: 1023,
|
|
42
|
+
minWidth: 768
|
|
43
|
+
}, undefined, deviceChangeCallback);
|
|
44
|
+
const isMobile = useMediaQuery({
|
|
45
|
+
maxWidth: 767
|
|
46
|
+
}, undefined, deviceChangeCallback);
|
|
47
|
+
const isPortrait = useMediaQuery({
|
|
48
|
+
orientation: 'portrait'
|
|
49
|
+
}, undefined, deviceChangeCallback);
|
|
50
|
+
const isRetina = useMediaQuery({
|
|
51
|
+
query: '(min-resolution: 2dppx)'
|
|
52
|
+
}, undefined, deviceChangeCallback);
|
|
53
|
+
const getDeviceType = () => {
|
|
54
|
+
if (isTablet) {
|
|
55
|
+
return 'tablet';
|
|
56
|
+
}
|
|
57
|
+
if (isMobile) {
|
|
58
|
+
return 'mobile';
|
|
59
|
+
}
|
|
60
|
+
return 'desktop';
|
|
61
|
+
};
|
|
62
|
+
const getDeviceOrientation = () => {
|
|
63
|
+
if (isPortrait) {
|
|
64
|
+
return 'portrait';
|
|
65
|
+
}
|
|
66
|
+
return 'landscape';
|
|
67
|
+
};
|
|
68
|
+
return {
|
|
69
|
+
type: getDeviceType(),
|
|
70
|
+
orientation: getDeviceOrientation(),
|
|
71
|
+
isRetina,
|
|
72
|
+
isDesktop,
|
|
73
|
+
isTablet,
|
|
74
|
+
isMobile,
|
|
75
|
+
isPortrait,
|
|
76
|
+
isLandscape: !isPortrait
|
|
77
|
+
};
|
|
41
78
|
};
|
|
42
|
-
|
|
43
|
-
export default
|
|
79
|
+
|
|
80
|
+
export { useDeviceInfo as default };
|
package/virtualWalkthrough.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
export { default as Annotation } from
|
|
2
|
-
export { default as AnnotationEditPane } from
|
|
3
|
-
export { default as AnnotationPanel } from
|
|
4
|
-
export { default as Application } from
|
|
5
|
-
export { AutoRotator } from
|
|
6
|
-
export { default as BlockingSpinner } from
|
|
7
|
-
export { default as BoundaryRing } from
|
|
8
|
-
export { default as CameraInfo } from
|
|
9
|
-
export { default as ControlsInfoPane } from
|
|
10
|
-
export { default as GradientSky } from
|
|
11
|
-
export { default as SplatControls } from
|
|
12
|
-
export { default as SplatCrop } from
|
|
13
|
-
export { default as SplatFadeCrop } from
|
|
14
|
-
export { default as SplatModel } from
|
|
15
|
-
export { default as SplatRevealRain } from
|
|
16
|
-
export { TfAnnotationManager } from
|
|
17
|
-
export { TfXrNavigation } from
|
|
18
|
-
export { default as VirtualWalkthroughViewer } from
|
|
19
|
-
export { BoundaryRingScript, boundaryRingMesh } from
|
|
20
|
-
export { computeGroundPlane, yOnPlane } from
|
|
21
|
-
export { detectSplatFormat, splatLoaderFilename } from
|
|
22
|
-
export { WalkthroughCamera } from
|
|
23
|
-
export { useDevicePerformance } from
|
|
1
|
+
export { default as Annotation } from './components/VirtualWalkthrough/Annotation.js';
|
|
2
|
+
export { default as AnnotationEditPane } from './components/VirtualWalkthrough/AnnotationEditPane.js';
|
|
3
|
+
export { default as AnnotationPanel } from './components/VirtualWalkthrough/AnnotationPanel.js';
|
|
4
|
+
export { default as Application } from './components/VirtualWalkthrough/Application.js';
|
|
5
|
+
export { AutoRotator } from './components/VirtualWalkthrough/AutoRotator.js';
|
|
6
|
+
export { default as BlockingSpinner } from './components/VirtualWalkthrough/BlockingSpinner.js';
|
|
7
|
+
export { default as BoundaryRing } from './components/VirtualWalkthrough/BoundaryRing.js';
|
|
8
|
+
export { default as CameraInfo } from './components/VirtualWalkthrough/CameraInfo.js';
|
|
9
|
+
export { default as ControlsInfoPane } from './components/VirtualWalkthrough/ControlsInfoPane.js';
|
|
10
|
+
export { default as GradientSky } from './components/VirtualWalkthrough/GradientSky.js';
|
|
11
|
+
export { default as SplatControls } from './components/VirtualWalkthrough/SplatControls.js';
|
|
12
|
+
export { default as SplatCrop } from './components/VirtualWalkthrough/SplatCrop.js';
|
|
13
|
+
export { default as SplatFadeCrop } from './components/VirtualWalkthrough/SplatFadeCrop.js';
|
|
14
|
+
export { default as SplatModel } from './components/VirtualWalkthrough/SplatModel.js';
|
|
15
|
+
export { default as SplatRevealRain } from './components/VirtualWalkthrough/SplatRevealRain.js';
|
|
16
|
+
export { TfAnnotationManager } from './components/VirtualWalkthrough/TfAnnotationManager.js';
|
|
17
|
+
export { TfXrNavigation } from './components/VirtualWalkthrough/TfXrNavigation.js';
|
|
18
|
+
export { default as VirtualWalkthroughViewer } from './components/VirtualWalkthrough/VirtualWalkthroughViewer.js';
|
|
19
|
+
export { BoundaryRingScript, boundaryRingMesh } from './components/VirtualWalkthrough/boundary-ring.js';
|
|
20
|
+
export { computeGroundPlane, yOnPlane } from './components/VirtualWalkthrough/groundPlane.js';
|
|
21
|
+
export { detectSplatFormat, splatLoaderFilename } from './components/VirtualWalkthrough/splatFormat.js';
|
|
22
|
+
export { WalkthroughCamera } from './components/VirtualWalkthrough/walkthrough-camera.js';
|
|
23
|
+
export { useDevicePerformance } from './hooks/useDevicePerformance.js';
|