-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathindex.ts
More file actions
2004 lines (1983 loc) · 68.8 KB
/
index.ts
File metadata and controls
2004 lines (1983 loc) · 68.8 KB
1
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*
* Copyright (c) 2019 LabKey Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { enableMapSet, enablePatches } from 'immer';
import {
applyURL,
AppURL,
buildURL,
createProductUrl,
createProductUrlFromParts,
createProductUrlFromPartsWithContainer,
spliceURL,
} from './internal/url/AppURL';
import { getHref } from './internal/url/utils';
import { hasParameter, imageURL, toggleParameter } from './internal/url/ActionURL';
import { Container } from './internal/components/base/models/Container';
import { hasAllPermissions, hasAnyPermissions, hasPermissions, User } from './internal/components/base/models/User';
import { GridColumn } from './internal/components/base/models/GridColumn';
import { decodePart, encodePart, getSchemaQuery, resolveKey, SchemaQuery } from './public/SchemaQuery';
import { insertColumnFilter, Operation, QueryColumn, QueryLookup } from './public/QueryColumn';
import { QuerySort } from './public/QuerySort';
import { LastActionStatus, MessageLevel } from './internal/LastActionStatus';
import { inferDomainFromFile, InferDomainResponse } from './public/InferDomainResponse';
import { ViewInfo } from './internal/ViewInfo';
import { QueryInfo, QueryInfoStatus } from './public/QueryInfo';
import { SchemaDetails } from './internal/SchemaDetails';
import { SCHEMAS } from './internal/schemas';
import { isLoading, LoadingState } from './public/LoadingState';
import { ExtendedMap } from './public/ExtendedMap';
import { useContainerUser } from './internal/components/container/actions';
import {
ServerContextConsumer,
ServerContextProvider,
useServerContext,
useServerContextDispatch,
withAppUser,
withServerContext,
} from './internal/components/base/ServerContext';
import { naturalSort, naturalSortByProperty } from './public/sort';
import { AssayDefinitionModel, AssayDomainTypes, AssayLink } from './internal/AssayDefinitionModel';
import {
applyDevTools,
arrayEquals,
blurActiveElement,
capitalizeFirstChar,
caseInsensitive,
debounce,
devToolsActive,
downloadAttachment,
findMissingValues,
generateId,
getDisambiguatedSelectInputOptions,
getValueFromRow,
getValuesSummary,
handleFileInputChange,
handleRequestFailure,
isImage,
isInteger,
isIntegerInRange,
isNonNegativeFloat,
isNonNegativeInteger,
parseCsvString,
parseScientificInt,
quoteValueWithDelimiters,
toggleDevTools,
uncapitalizeFirstChar,
valueIsEmpty,
withTransformedKeys,
} from './internal/util/utils';
import { AutoForm } from './internal/components/AutoForm';
import { HelpIcon } from './internal/components/HelpIcon';
import { getUserProperties, getUserRoleDisplay } from './internal/components/user/actions';
import { BeforeUnload } from './internal/util/BeforeUnload';
import {
deleteErrorMessage,
deleteSuccessMessage,
getActionErrorMessage,
getConfirmDeleteMessage,
getPermissionRestrictionMessage,
resolveErrorMessage,
} from './internal/util/messaging';
import { WHERE_FILTER_TYPE } from './internal/url/WhereFilterType';
import { AddEntityButton, AddEntityElement } from './internal/components/buttons/AddEntityButton';
import { RemoveEntityButton } from './internal/components/buttons/RemoveEntityButton';
import { Alert } from './internal/components/base/Alert';
import { DeleteIcon } from './internal/components/base/DeleteIcon';
import { LockIcon } from './internal/components/base/LockIcon';
import { ExpandableFilterToggle } from './internal/components/base/ExpandableFilterToggle';
import { DragDropHandle } from './internal/components/base/DragDropHandle';
import { FieldExpansionToggle } from './internal/components/base/FieldExpansionToggle';
import { SelectionMenuItem } from './internal/components/menus/SelectionMenuItem';
import { LoadingSpinner } from './internal/components/base/LoadingSpinner';
import { InsufficientPermissionsAlert } from './internal/components/permissions/InsufficientPermissionsAlert';
import { GroupDetailsPanel } from './internal/components/permissions/GroupDetailsPanel';
import { PageHeader } from './internal/components/base/PageHeader';
import { Progress } from './internal/components/base/Progress';
import { LabelHelpTip } from './internal/components/base/LabelHelpTip';
import { Tip } from './internal/components/base/Tip';
import { Grid } from './internal/components/base/Grid';
import { FormSection } from './internal/components/base/FormSection';
import { Section } from './internal/components/base/Section';
import { ContentGroup, ContentGroupLabel } from './internal/components/base/ContentGroup';
import { VerticalScrollPanel } from './internal/components/base/VerticalScrollPanel';
import { FileAttachmentForm } from './public/files/FileAttachmentForm';
import { TemplateDownloadButton } from './public/files/TemplateDownloadButton';
import { DEFAULT_FILE } from './internal/components/files/models';
import { FileAttachmentEntry } from './internal/components/files/FileAttachmentEntry';
import {
createWebDavDirectory,
deleteWebDavResource,
getWebDavFiles,
getWebDavUrl,
uploadWebDavFile,
WebDavFile,
} from './public/files/WebDav';
import { FileTree } from './internal/components/files/FileTree';
import { ReleaseNote } from './internal/components/notifications/ReleaseNote';
import { Notifications } from './internal/components/notifications/Notifications';
import { getPipelineActivityData, markAllNotificationsAsRead } from './internal/components/notifications/actions';
import {
NotificationsContextProvider,
useNotificationsContext,
withNotificationsContext,
} from './internal/components/notifications/NotificationsContext';
import { DisableableAnchor } from './internal/components/base/DisableableAnchor';
import {
DateFormatType,
formatDate,
formatDateTime,
fromDate,
fromNow,
generateNameWithTimestamp,
getContainerFormats,
getDateFNSDateFormat,
getDateFormat,
getDateTimeFormat,
getDateTimeInputOptions,
getDateTimeSettingFormat,
getDateTimeSettingWarning,
getNonStandardFormatWarning,
getParsedRelativeDateStr,
getTimeFormat,
isDateBetween,
isDateTimeInPast,
isRelativeDateFilterValue,
joinDateTimeFormat,
parseDate,
splitDateTimeFormat,
} from './internal/util/Date';
import { SVGIcon, Theme } from './internal/components/base/SVGIcon';
import { CreatedModified } from './internal/components/base/CreatedModified';
import {
NotificationItemModel,
Persistence,
ServerActivityData,
ServerNotificationModel,
} from './internal/components/notifications/model';
import { RequiresPermission } from './internal/components/base/Permissions';
import { PaginationButtons } from './internal/components/buttons/PaginationButtons';
import { ManageDropdownButton } from './internal/components/buttons/ManageDropdownButton';
import { WizardNavButtons } from './internal/components/buttons/WizardNavButtons';
import { ToggleButtons, ToggleIcon } from './internal/components/buttons/ToggleButtons';
import { DisableableButton } from './internal/components/buttons/DisableableButton';
import { ResponsiveMenuButton } from './internal/components/buttons/ResponsiveMenuButton';
import { ResponsiveMenuButtonGroup } from './internal/components/buttons/ResponsiveMenuButtonGroup';
import { Cards } from './internal/components/base/Cards';
import { Setting } from './internal/components/base/Setting';
import { ValueList } from './internal/components/base/ValueList';
import { ChoicesListItem } from './internal/components/base/ChoicesListItem';
import { DataTypeSelector } from './internal/components/entities/DataTypeSelector';
import { EditorMode, EditorModel } from './internal/components/editable/models';
import { EditableGridEvent } from './internal/components/editable/constants';
import {
addColumns,
changeColumn,
initEditorModel,
removeColumn,
removeColumns,
updateGridFromBulkForm,
} from './internal/components/editable/actions';
import {
clearSelected,
getGridIdsFromTransactionId,
getSampleTypesFromTransactionIds,
getSelected,
getSelectedDataDeprecated,
incrementClientSideMetricCount,
replaceSelected,
selectGridIdsFromTransactionId,
setSelected,
setSnapshotSelections,
} from './internal/actions';
import { cancelEvent, isCtrlOrMetaKey } from './internal/events';
import { createGridModelId } from './internal/models';
import { initQueryGridState } from './internal/global';
import {
deleteRows,
getContainerFilter,
getContainerFilterForFolder,
getContainerFilterForLookups,
getQueryDetails,
getVerbForInsertOption,
importData,
InsertFormats,
InsertOptions,
insertRows,
invalidateFullQueryDetailsCache,
invalidateQueryDetailsCache,
loadQueries,
loadQueriesFromTable,
QueryCommandResponse,
selectDistinctRows,
selectRowsDeprecated,
updateRows,
} from './internal/query/api';
import { processSchemas } from './internal/query/utils';
import {
ANCESTOR_MATCHES_ALL_OF_FILTER_TYPE,
BOX_SAMPLES_FILTER,
COLUMN_IN_FILTER_TYPE,
COLUMN_NOT_IN_FILTER_TYPE,
getFilterLabKeySql,
getLegalIdentifier,
IN_EXP_DESCENDANTS_OF_FILTER_TYPE,
isNegativeFilterType,
LOCATION_SAMPLES_FILTER,
NOT_IN_EXP_DESCENDANTS_OF_FILTER_TYPE,
registerFilterType,
} from './internal/query/filter';
import { getSelectedRows, selectRows } from './internal/query/selectRows';
import { flattenBrowseDataTreeResponse, loadReports } from './internal/query/reports';
import {
AssayUploadTabs,
DataViewInfoTypes,
EXPORT_TYPES,
GRID_CHECKBOX_OPTIONS,
IMPORT_DATA_FORM_TYPES,
MAX_EDITABLE_GRID_ROWS,
MAX_SELECTION_ACTION_ROWS,
NO_UPDATES_MESSAGE,
PIPELINE_JOB_NOTIFICATION_EVENT,
PIPELINE_JOB_NOTIFICATION_EVENT_ERROR,
PIPELINE_JOB_NOTIFICATION_EVENT_START,
PIPELINE_JOB_NOTIFICATION_EVENT_SUCCESS,
SHARED_CONTAINER_PATH,
} from './internal/constants';
import { getQueryParams, pushParameters, removeParameters, replaceParameters } from './internal/util/URL';
import { ActionMapper, URL_MAPPERS, URLResolver, URLService } from './internal/url/URLResolver';
import {
DATA_IMPORT_TOPIC,
DATE_FORMATS_TOPIC,
getFolderDateTimeHelp,
getHelpLink,
HELP_LINK_REFERRER,
HelpLink,
JavaDocsLink,
SAMPLE_IMPORT_TOPIC,
} from './internal/util/helpLinks';
import { ExperimentRunResolver, ListResolver } from './internal/url/AppURLResolver';
import { NOT_ANY_FILTER_TYPE } from './internal/url/NotAnyFilterType';
import { genCellKey, incrementRowCountMetric, parseCellKey } from './internal/components/editable/utils';
import { EditableGrid, EditableGridTabs } from './internal/components/editable/EditableGrid';
import { EditableGridLoaderFromSelection } from './internal/components/editable/EditableGridLoaderFromSelection';
import { AliasRenderer } from './internal/renderers/AliasRenderer';
import { ANCESTOR_LOOKUP_CONCEPT_URI, AncestorRenderer } from './internal/renderers/AncestorRenderer';
import { StorageStatusRenderer } from './internal/renderers/StorageStatusRenderer';
import { StoredAmountRenderer } from './internal/renderers/StoredAmountRenderer';
import { SampleStatusRenderer } from './internal/renderers/SampleStatusRenderer';
import { ExpirationDateColumnRenderer } from './internal/renderers/ExpirationDateColumnRenderer';
import { FolderColumnRenderer } from './internal/renderers/FolderColumnRenderer';
import { AppendUnits } from './internal/renderers/AppendUnits';
import { AttachmentCard } from './internal/renderers/AttachmentCard';
import { DefaultRenderer } from './internal/renderers/DefaultRenderer';
import { FileColumnRenderer } from './internal/renderers/FileColumnRenderer';
import { MultiValueRenderer } from './internal/renderers/MultiValueRenderer';
import { LabelColorRenderer } from './internal/renderers/LabelColorRenderer';
import { NoLinkRenderer } from './internal/renderers/NoLinkRenderer';
import { UserDetailsRenderer } from './internal/renderers/UserDetailsRenderer';
import {
ImportAliasRenderer,
ParentImportAliasRenderer,
SampleTypeImportAliasRenderer,
SourceTypeImportAliasRenderer,
} from './internal/renderers/ImportAliasRenderer';
import { addFormsyRule, Formsy, formsyRules, withFormsy } from './internal/components/forms/formsy';
import { DataClassTemplateDownloadRenderer } from './internal/renderers/DataClassTemplateDownloadRenderer';
import { BulkUpdateForm } from './internal/components/forms/BulkUpdateForm';
import { LabelOverlay } from './internal/components/forms/LabelOverlay';
import {
getQueryFormLabelFieldName,
isQueryFormLabelField,
resolveDetailFieldValue,
} from './internal/components/forms/utils';
import { QueryFormInputs } from './internal/components/forms/QueryFormInputs';
import { LookupSelectInput } from './internal/components/forms/input/LookupSelectInput';
import { SelectInput, SelectInputImpl } from './internal/components/forms/input/SelectInput';
import { DatePickerInput } from './internal/components/forms/input/DatePickerInput';
import { FileInput } from './internal/components/forms/input/FileInput';
import { TextInput } from './internal/components/forms/input/TextInput';
import { TextAreaInput } from './internal/components/forms/input/TextAreaInput';
import { ColorPickerInput } from './internal/components/forms/input/ColorPickerInput';
import { COMMENT_FIELD_ID, CommentTextArea } from './internal/components/forms/input/CommentTextArea';
import { ColorIcon } from './internal/components/base/ColorIcon';
import { QuerySelect } from './internal/components/forms/QuerySelect';
import { PageDetailHeader } from './internal/components/forms/PageDetailHeader';
import { DetailPanelHeader } from './internal/components/forms/detail/DetailPanelHeader';
import { resolveDetailRenderer } from './internal/components/forms/detail/DetailDisplay';
import { useDataChangeCommentsRequired } from './internal/components/forms/input/useDataChangeCommentsRequired';
import {
InputRenderContext,
registerInputRenderer,
registerInputRenderers,
} from './internal/components/forms/input/InputRenderFactory';
import { Help } from './internal/components/forms/input/Help';
import {
getUsersWithPermissions,
handleInputTab,
handleTabKeyOnTextArea,
updateRowFieldValue,
useUsersWithPermissions,
} from './internal/components/forms/actions';
import { FormStep, FormTabs, withFormSteps } from './internal/components/forms/FormStep';
import {
EntityIdCreationModel,
EntityParentType,
EntityTypeOption,
OperationConfirmationData,
} from './internal/components/entities/models';
import { EntityMoveModal } from './internal/components/entities/EntityMoveModal';
import { EntityMoveConfirmationModal } from './internal/components/entities/EntityMoveConfirmationModal';
import {
AssayResultsForSamplesButton,
AssayResultsForSamplesMenuItem,
} from './internal/components/entities/AssayResultsForSamplesButton';
import { SampleAliquotViewSelector } from './internal/components/entities/SampleAliquotViewSelector';
import { GridAliquotViewSelector } from './internal/components/entities/GridAliquotViewSelector';
import {
FindDerivativesButton,
FindDerivativesMenuItem,
getSampleFinderLocalStorageKey,
getSearchFilterObjs,
SAMPLE_FINDER_SESSION_PREFIX,
searchFiltersToJson,
} from './internal/components/entities/FindDerivativesButton';
import {
SAMPLE_PROPERTY_ALL_SAMPLE_TYPE,
SEARCH_PAGE_DEFAULT_SIZE,
SearchCategory,
SearchField,
SearchScope,
} from './internal/components/search/constants';
import { SearchPanel } from './internal/components/search/SearchPanel';
import {
getFieldFiltersValidationResult,
getFilterValuesAsArray,
getSearchScopeFromContainerFilter,
isValidFilterField,
SAMPLE_FILTER_METRIC_AREA,
} from './internal/components/search/utils';
import { useAdministrationSubNav } from './internal/components/administration/useAdministrationSubNav';
import { useAdminAppContext } from './internal/components/administration/useAdminAppContext';
import { fetchGroupMembership, getGroupMembership } from './internal/components/administration/actions';
import { MemberType } from './internal/components/administration/models';
import {
ASSAY_DESIGNER_ROLE,
DATA_CLASS_DESIGNER_ROLE,
SAMPLE_TYPE_DESIGNER_ROLE,
} from './internal/components/administration/constants';
import {
deleteSampleSet,
fetchSamples,
getFieldLookupFromSelection,
getGroupedSampleDisplayColumns,
getGroupedSampleDomainFields,
getSampleSet,
getSampleTypeDetails,
getSelectedSampleIdsFromSelectionKey,
getSelectionLineageData,
} from './internal/components/samples/actions';
import { SampleTypeEmptyAlert } from './internal/components/samples/SampleTypeEmptyAlert';
import { SampleAmountEditModal } from './internal/components/samples/SampleAmountEditModal';
import { StorageAmountInput } from './internal/components/samples/StorageAmountInput';
import { AppContextProvider, useAppContext } from './internal/AppContext';
import { AppContexts } from './internal/AppContexts';
import { BaseDomainDesigner } from './internal/components/domainproperties/BaseDomainDesigner';
import {
getFilterForSampleOperation,
getOmittedSampleTypeColumns,
getOperationNotAllowedMessage,
getOperationNotAllowedMessageFromCounts,
getOperationNotPermittedMessage,
getSampleDomainDefaultSystemFields,
getSampleStatus,
getSampleStatusColor,
getSampleStatusContainerFilter,
getSampleStatusType,
getURLParamsForSampleSelectionKey,
isAllSamplesSchema,
isSampleOperationPermitted,
isSamplesSchema,
SamplesEditButtonSections,
} from './internal/components/samples/utils';
import {
AssayContext,
AssayContextConsumer,
AssayContextProvider,
withAssayModels,
withAssayModelsFromLocation,
} from './internal/components/assay/withAssayModels';
import { AssayPicker, AssayPickerTabs } from './internal/components/assay/AssayPicker';
import { AssayStateModel, AssayUploadResultModel } from './internal/components/assay/models';
import { clearAssayDefinitionCache, getAssayDefinitions, getProtocol } from './internal/components/assay/actions';
import { createHorizontalBarLegendData } from './internal/components/chart/utils';
import { ReportItemModal, ReportList, ReportListItem } from './internal/components/report-list/ReportList';
import {
createGridModel,
getImmediateChildLineageFilterValue,
getLineageFilterValue,
getPageNumberChangeURL,
invalidateLineageResults,
TestLineageAPIWrapper,
} from './internal/components/lineage/actions';
import { withLineage } from './internal/components/lineage/withLineage';
import { DEFAULT_LINEAGE_DISTANCE } from './internal/components/lineage/constants';
import {
LINEAGE_DIRECTIONS,
LINEAGE_GROUPING_GENERATIONS,
LineageFilter,
LineageURLResolvers,
} from './internal/components/lineage/types';
import { LineageDepthLimitMessage, LineageGraph } from './internal/components/lineage/LineageGraph';
import { SampleTypeLineageCounts } from './internal/components/lineage/SampleTypeLineageCounts';
import { NavigationBar } from './internal/components/navigation/NavigationBar';
import { HOME_PATH, HOME_TITLE, SEARCH_PLACEHOLDER } from './internal/components/navigation/constants';
import { FindByIdsModal } from './internal/components/search/FindByIdsModal';
import { QueryFilterPanel } from './internal/components/search/QueryFilterPanel';
import { ProductNavigationMenu } from './internal/components/productnavigation/ProductNavigationMenu';
import { LOOK_AND_FEEL_METRIC } from './internal/components/productnavigation/constants';
import { useFolderMenuContext, useSubNavTabsContext } from './internal/components/navigation/hooks';
import { Breadcrumb } from './internal/components/navigation/Breadcrumb';
import { BreadcrumbCreate } from './internal/components/navigation/BreadcrumbCreate';
import { MenuItemModel, MenuSectionModel, ProductMenuModel } from './internal/components/navigation/model';
import { UserSelectInput } from './internal/components/forms/input/UserSelectInput';
import {
FormsyCheckbox,
FormsyInput,
FormsySelect,
FormsyTextArea,
} from './internal/components/forms/input/FormsyReactComponents';
import { UserDetailHeader } from './internal/components/user/UserDetailHeader';
import { UserProfile } from './internal/components/user/UserProfile';
import { ChangePasswordModal } from './internal/components/user/ChangePasswordModal';
import { useUserProperties } from './internal/components/user/hooks';
import { UserLink, UserLinkList } from './internal/components/user/UserLink';
import { APIKeysPanel } from './internal/components/user/APIKeysPanel';
import { UserDetailsPanel } from './internal/components/user/UserDetailsPanel';
import { useAccountSubNav } from './internal/components/user/AccountSubNav';
import { UsersGridPanel } from './internal/components/user/UsersGridPanel';
import {
DEFAULT_DOMAIN_FORM_DISPLAY_OPTIONS,
DERIVATION_DATA_SCOPES,
DOMAIN_FIELD_REQUIRED,
DOMAIN_FIELD_TYPE,
DOMAIN_RANGE_VALIDATOR,
RANGE_URIS,
SAMPLE_TYPE_CONCEPT_URI,
STORAGE_UNIQUE_ID_CONCEPT_URI,
} from './internal/components/domainproperties/constants';
import { ExpandableContainer } from './internal/components/ExpandableContainer';
import { Principal, SecurityAssignment, SecurityPolicy, SecurityRole } from './internal/components/permissions/models';
import {
fetchContainerSecurityPolicy,
getInactiveUsers,
getPrincipals,
getPrincipalsById,
getRolesByUniqueName,
processGetRolesResponse,
} from './internal/components/permissions/actions';
import {
getContainersForPermission,
getDataDeleteConfirmationData,
getDataOperationConfirmationData,
getDeleteConfirmationData,
getEntityTypeOptions,
getExcludedDataTypeNames,
getOperationConfirmationData,
getOrderedSelectedMappedKeysFromQueryModel,
getParentTypeDataForLineage,
getSampleIdentifyingFieldGridData,
getSampleOperationConfirmationData,
saveOrderedSnapshotSelection,
updateCellValuesForSampleIds,
} from './internal/components/entities/actions';
import {
AssayResultDataType,
AssayRunDataType,
AssayRunOperation,
DATA_CLASS_IMPORT_PREFIX,
DataClassDataType,
DataOperation,
ParentEntityLineageColumns,
ParentEntityRequiredColumns,
SAMPLE_SET_IMPORT_PREFIX,
SampleParentDataType,
SamplePropertyDataType,
SampleTypeDataType,
} from './internal/components/entities/constants';
import { getModuleCustomLabels } from './internal/components/labels/actions';
import {
getCellKeyColumnMap,
getEntityDescription,
getEntityNoun,
getInitialParentChoices,
getJobCreationHref,
getSampleIdCellKey,
getUniqueIdColumnMetadata,
isDataClassEntity,
isSampleEntity,
SAMPLE_ID_FIELD_KEY,
sampleDeleteDependencyText,
updateCellKeySampleIdMap,
} from './internal/components/entities/utils';
import {
ALIQUOT_CREATION,
DERIVATIVE_CREATION,
EntityCreationType,
INDEPENDENT_SAMPLE_CREATION,
POOLED_SAMPLE_CREATION,
} from './internal/components/samples/models';
import { DEFAULT_ALIQUOT_NAMING_PATTERN, SampleTypeModel } from './internal/components/domainproperties/samples/models';
import { EditableDetailPanel } from './public/QueryModel/EditableDetailPanel';
import { Pagination } from './internal/components/pagination/Pagination';
import { getQueryModelExportParams, runDetailsColumnsForQueryModel } from './public/QueryModel/utils';
import { CONFIRM_MESSAGE, useRouteLeave } from './internal/util/RouteLeave';
import { useRequestHandler } from './internal/util/RequestHandler';
import { HorizontalBarSection } from './internal/components/chart/HorizontalBarSection';
import { ItemsLegend } from './internal/components/chart/ItemsLegend';
import { AuditDetailsModel, TimelineEventModel } from './internal/components/auditlog/models';
import {
ASSAY_AUDIT_QUERY,
AUDIT_EVENT_TYPE_PARAM,
CONTAINER_AUDIT_QUERY,
DATACLASS_DATA_UPDATE_AUDIT_QUERY,
EXPERIMENT_AUDIT_EVENT,
GROUP_AUDIT_QUERY,
INVENTORY_AUDIT_QUERY,
QUERY_UPDATE_AUDIT_QUERY,
SAMPLE_TIMELINE_AUDIT_QUERY,
SAMPLE_TYPE_AUDIT_QUERY,
SOURCE_AUDIT_QUERY,
USER_AUDIT_QUERY,
WORKFLOW_AUDIT_QUERY,
} from './internal/components/auditlog/constants';
import { AuditDetails } from './internal/components/auditlog/AuditDetails';
import { TimelineView } from './internal/components/auditlog/TimelineView';
import { getAuditQueries, getEventDataValueDisplay, getTimelineEntityUrl } from './internal/components/auditlog/utils';
import {
fetchDomain,
fetchDomainDetails,
saveDomain,
setDomainFields,
} from './internal/components/domainproperties/actions';
import { createFormInputId } from './internal/components/domainproperties/utils';
import {
DomainDesign,
DomainDetails,
DomainException,
DomainField,
PropertyValidator,
} from './internal/components/domainproperties/models';
import { SAMPLE_TYPE } from './internal/components/domainproperties/PropDescType';
import DomainForm from './internal/components/domainproperties/DomainForm';
import { BasePropertiesPanel } from './internal/components/domainproperties/BasePropertiesPanel';
import { DomainFieldsDisplay } from './internal/components/domainproperties/DomainFieldsDisplay';
import { AssayProtocolModel } from './internal/components/domainproperties/assay/models';
import { AssayDesignerPanels } from './internal/components/domainproperties/assay/AssayDesignerPanels';
import { ListModel } from './internal/components/domainproperties/list/models';
import { IssuesListDefModel } from './internal/components/domainproperties/issues/models';
import { IssuesListDefDesignerPanels } from './internal/components/domainproperties/issues/IssuesListDefDesignerPanels';
import { DatasetDesignerPanels } from './internal/components/domainproperties/dataset/DatasetDesignerPanels';
import { DatasetModel } from './internal/components/domainproperties/dataset/models';
import {
fetchListDesign,
getListIdFromDomainId,
getListProperties,
} from './internal/components/domainproperties/list/actions';
import { fetchIssuesListDefDesign } from './internal/components/domainproperties/issues/actions';
import { fetchDatasetDesign } from './internal/components/domainproperties/dataset/actions';
import { SampleTypeDesigner } from './internal/components/domainproperties/samples/SampleTypeDesigner';
import { ListDesignerPanels } from './internal/components/domainproperties/list/ListDesignerPanels';
import { DataClassDesigner } from './internal/components/domainproperties/dataclasses/DataClassDesigner';
import { DataClassModel } from './internal/components/domainproperties/dataclasses/models';
import { deleteDataClass, fetchDataClass } from './internal/components/domainproperties/dataclasses/actions';
import { DesignerDetailTooltip } from './internal/components/domainproperties/DesignerDetailPanel';
import { DomainFieldLabel } from './internal/components/domainproperties/DomainFieldLabel';
import { RangeValidationOptionsModal } from './internal/components/domainproperties/validation/RangeValidationOptions';
import { DataTypeFoldersPanel } from './internal/components/domainproperties/DataTypeFoldersPanel';
import { AssayDesignEmptyAlert } from './internal/components/assay/AssayDesignEmptyAlert';
import {
AppContextTestProvider,
makeQueryInfo,
makeTestISelectRowsResult,
registerDefaultURLMappers,
sleep,
wrapDraggable,
} from './internal/test/testHelpers';
import { renderWithAppContext } from './internal/test/reactTestLibraryHelpers';
import { flattenValuesFromRow, QueryModel } from './public/QueryModel/QueryModel';
import { getExpandQueryInfo, includedColumnsForCustomizationFilter } from './public/QueryModel/CustomizeGridViewModal';
import { withQueryModels } from './public/QueryModel/withQueryModels';
import { GridPanel, GridPanelWithModel } from './public/QueryModel/GridPanel';
import { TabbedGridPanel } from './public/QueryModel/TabbedGridPanel';
import { DetailPanel, DetailPanelWithModel } from './public/QueryModel/DetailPanel';
import { makeTestActions, makeTestQueryModel } from './public/QueryModel/testUtils';
import {
BACKGROUND_IMPORT_MIN_FILE_SIZE,
BACKGROUND_IMPORT_MIN_ROW_SIZE,
DATA_IMPORT_FILE_SIZE_LIMITS,
} from './internal/components/pipeline/constants';
import { DisableableMenuItem } from './internal/components/samples/DisableableMenuItem';
import { SampleStatusTag } from './internal/components/samples/SampleStatusTag';
import { ManageSampleStatusesPanel } from './internal/components/samples/ManageSampleStatusesPanel';
import { SampleStatusLegend } from './internal/components/samples/SampleStatusLegend';
import {
ALIQUOT_FILTER_MODE,
ALIQUOTED_FROM_COL,
DEFAULT_SAMPLE_FIELD_CONFIG,
EXCLUDED_EXPORT_COLUMNS,
FIND_BY_IDS_QUERY_PARAM,
IS_ALIQUOT_COL,
SAMPLE_ALL_PROJECT_LOOKUP_FIELDS,
SAMPLE_DATA_EXPORT_CONFIG,
SAMPLE_ID_FIND_FIELD,
SAMPLE_INSERT_EXTRA_COLUMNS,
SAMPLE_STATE_COLUMN_NAME,
SAMPLE_STATE_TYPE_COLUMN_NAME,
SAMPLE_STATUS_REQUIRED_COLUMNS,
SAMPLE_STORAGE_COLUMNS,
SampleOperation,
SAMPLES_WITH_TYPES_FILTER,
SampleStateType,
SELECTION_KEY_TYPE,
UNIQUE_ID_FIND_FIELD,
} from './internal/components/samples/constants';
import { createMockWithRouteLeave } from './internal/mockUtils';
import { ConceptModel } from './internal/components/ontology/models';
import { OntologyConceptPicker } from './internal/components/ontology/OntologyConceptPicker';
import { OntologyBrowserPage } from './internal/components/ontology/OntologyBrowserPanel';
import { OntologyConceptOverviewPanel } from './internal/components/ontology/ConceptOverviewPanel';
import { OntologyBrowserFilterPanel } from './internal/components/ontology/OntologyBrowserFilterPanel';
import { OntologySearchInput } from './internal/components/ontology/OntologyTreeSearchContainer';
import { AppModel } from './internal/app/models';
import { Picklist, PICKLIST_SAMPLES_FILTER } from './internal/components/picklist/models';
import { PicklistCreationMenuItem } from './internal/components/picklist/PicklistCreationMenuItem';
import { PicklistButton } from './internal/components/picklist/PicklistButton';
import { PicklistEditModal } from './internal/components/picklist/PicklistEditModal';
import { AddToPicklistMenuItem } from './internal/components/picklist/AddToPicklistMenuItem';
import {
deletePicklists,
getOrderedSelectedPicklistSamples,
getPicklistFromId,
getPicklistListingContainerFilter,
getSelectedPicklistSamples,
updatePicklist,
} from './internal/components/picklist/actions';
import { PrintLabelsModal } from './internal/components/labelPrinting/PrintLabelsModal';
import { BarTenderConfiguration } from './internal/components/labelPrinting/models';
import { useLabelPrintingContext } from './internal/components/labelPrinting/LabelPrintingContextProvider';
import { BarTenderSettingsForm } from './internal/components/labelPrinting/BarTenderSettingsForm';
import { ColumnSelectionModal } from './internal/components/ColumnSelectionModal';
import { AppReducers, ProductMenuReducers, ServerNotificationReducers } from './internal/app/reducers';
import {
biologicsIsPrimaryApp,
CloseEventCode,
freezerManagerIsCurrentApp,
getAppHomeFolderId,
getAppHomeFolderPath,
getArchivedFolders,
getCurrentAppProperties,
getCurrentProductName,
getFolderAssayDesignExclusion,
getFolderDataClassExclusion,
getFolderDataExclusion,
getFolderSampleTypeExclusion,
getPrimaryAppProperties,
getProjectPath,
hasModule,
hasPremiumModule,
hasProductFolders,
isAdvancedDomainPropertiesEnabled,
isAllProductFoldersFilteringEnabled,
isApp,
isAppHomeFolder,
isAssayDesignExportEnabled,
isAssayEnabled,
isAssayFileUploadEnabled,
isAssayQCEnabled,
isAssayRequestsEnabled,
isBiologicsEnabled,
isDataChangeCommentRequirementFeatureEnabled,
isELNEnabled,
isExperimentAliasEnabled,
isFreezerManagementEnabled,
isLKSSupportEnabled,
isMediaEnabled,
isNonstandardAssayEnabled,
isNotebookTagsEnabled,
isPlatesEnabled,
isPremiumProductEnabled,
isProductFoldersEnabled,
isProjectContainer,
isProtectedDataEnabled,
isRegistryEnabled,
isSampleAliquotSelectorEnabled,
isSampleManagerEnabled,
isSampleStatusEnabled,
isSharedContainer,
isSourceTypeEnabled,
isWorkflowEnabled,
limsIsPrimaryApp,
setFolderDataExclusion,
setProductFolders,
useMenuSectionConfigs,
userCanDeletePublicPicklists,
userCanDesignLocations,
userCanDesignSourceTypes,
userCanEditSharedViews,
userCanEditStorageData,
userCanManagePicklists,
userCanManageSampleWorkflow,
userCanReadAssays,
userCanReadDataClasses,
userCanReadGroupDetails,
userCanReadMedia,
userCanReadNotebooks,
userCanReadRegistry,
userCanReadSources,
} from './internal/app/utils';
import {
menuInit,
menuInvalidate,
menuReload,
registerPipelineWebSocketListeners,
serverNotificationInit,
serverNotificationInvalidate,
updateUser,
updateUserDisplayName,
} from './internal/app/actions';
import {
TEST_USER_APP_ADMIN,
TEST_USER_ASSAY_DESIGNER,
TEST_USER_AUTHOR,
TEST_USER_EDITOR,
TEST_USER_EDITOR_WITHOUT_DELETE,
TEST_USER_FOLDER_ADMIN,
TEST_USER_GUEST,
TEST_USER_PROJECT_ADMIN,
TEST_USER_QC_ANALYST,
TEST_USER_READER,
TEST_USER_STORAGE_DESIGNER,
TEST_USER_STORAGE_EDITOR,
TEST_USER_WORKFLOW_EDITOR,
} from './internal/userFixtures';
import {
createTestProjectAppContextAdmin,
createTestProjectAppContextNonAdmin,
TEST_ARCHIVED_FOLDER_CONTAINER,
TEST_FOLDER_CONTAINER,
TEST_FOLDER_CONTAINER_ADMIN,
TEST_FOLDER_OTHER_CONTAINER,
TEST_FOLDER_OTHER_CONTAINER_ADMIN,
TEST_PROJECT,
TEST_PROJECT_CONTAINER,
TEST_PROJECT_CONTAINER_ADMIN,
} from './internal/containerFixtures';
import {
ASSAY_DESIGN_KEY,
ASSAYS_KEY,
AUDIT_KEY,
BIOLOGICS_APP_PROPERTIES,
BOXES_KEY,
CROSS_TYPE_KEY,
DATA_CLASS_KEY,
ELN_KEY,
EntityCreationMode,
EXPERIMENTAL_REQUESTS_MENU,
FILE_IMPORT_SAMPLES_HREF,
FILE_UPDATE_SAMPLES_HREF,
FIND_SAMPLES_BY_FILTER_HREF,
FIND_SAMPLES_BY_FILTER_KEY,
FIND_SAMPLES_BY_ID_HREF,
FIND_SAMPLES_BY_ID_KEY,
FREEZER_MANAGER_APP_PROPERTIES,
FREEZERS_KEY,
GRID_INSERT_SAMPLES_HREF,
HOME_KEY,
LIMS_APP_PROPERTIES,
MEDIA_KEY,
MINE_KEY,
MY_PICKLISTS_HREF,
NEW_ASSAY_DESIGN_HREF,
NEW_SAMPLE_TYPE_HREF,
NEW_SOURCE_TYPE_HREF,
NEW_STANDARD_ASSAY_DESIGN_HREF,
NOTIFICATION_TIMEOUT,
PICKLIST_HOME_HREF,
PICKLIST_KEY,
PLATES_KEY,
REGISTRY_KEY,
SAMPLE_MANAGER_APP_PROPERTIES,
SAMPLE_TYPE_KEY,
SAMPLES_KEY,
SEARCH_KEY,
SERVER_NOTIFICATION_MAX_ROWS,
SOURCE_TYPE_KEY,
SOURCES_KEY,
TEAM_KEY,
TEAM_PICKLISTS_HREF,
UPDATE_USER,
UPDATE_USER_DISPLAY_NAME,
USER_KEY,
WORKFLOW_HOME_HREF,
WORKFLOW_KEY,
} from './internal/app/constants';
import { Key, useEnterEscape } from './public/useEnterEscape';
import { DateInput } from './internal/components/DateInput';
import { EditInlineField } from './internal/components/EditInlineField';
import { FileAttachmentArea } from './internal/components/files/FileAttachmentArea';
import { AnnouncementRenderType } from './internal/announcements/model';
import { Discussions } from './internal/announcements/Discussions';
import { Thread } from './internal/announcements/Thread';
import { ThreadBlock } from './internal/announcements/ThreadBlock';
import { ThreadEditor } from './internal/announcements/ThreadEditor';
import { useNotAuthorized, useNotFound, usePortalRef } from './internal/hooks';
import {
TEST_BIO_LIMS_ENTERPRISE_MODULE_CONTEXT,
TEST_BIO_LIMS_STARTER_MODULE_CONTEXT,
TEST_LKS_STARTER_MODULE_CONTEXT,
TEST_LKSM_PROFESSIONAL_MODULE_CONTEXT,
TEST_LKSM_STARTER_AND_WORKFLOW_MODULE_CONTEXT,
TEST_LKSM_STARTER_MODULE_CONTEXT,
} from './internal/productFixtures';
import { GENERAL_ASSAY_PROVIDER_NAME } from './internal/components/assay/constants';
import { GlobalStateContextProvider } from './internal/GlobalStateContext';
import {
areUnitsCompatible,
convertUnitDisplay,
convertUnitsForInput,
getAltMetricUnitOptions,
getAltUnitKeys,
getMetricUnitOptions,
getStoredAmountDisplay,
isValuePrecisionValid,
MEASUREMENT_UNITS,
UnitModel,
} from './internal/util/measurement';
import { DELIMITER, DETAIL_TABLE_CLASSES } from './internal/components/forms/constants';
import {
DISCARD_CONSUMED_CHECKBOX_FIELD,
DiscardConsumedSamplesPanel,
} from './internal/components/samples/DiscardConsumedSamplesPanel';
import { PRIVATE_PICKLIST_CATEGORY, PUBLIC_PICKLIST_CATEGORY } from './internal/components/picklist/constants';
import { getDefaultAPIWrapper, getTestAPIWrapper } from './internal/APIWrapper';
import { FormButtons } from './internal/FormButtons';
import { ModalButtons } from './internal/ModalButtons';
import { getSecurityTestAPIWrapper } from './internal/components/security/APIWrapper';
import { getFolderTestAPIWrapper } from './internal/components/container/FolderAPIWrapper';
import { getLabelsTestAPIWrapper } from './internal/components/labels/APIWrapper';
import { OverlayTrigger, useOverlayTriggerState } from './internal/OverlayTrigger';
import { Tooltip } from './internal/Tooltip';
import { Popover } from './internal/Popover';
import { DropdownMenu, DropdownButton, MenuDivider, MenuHeader, MenuItem, SplitButton } from './internal/dropdowns';
import { DropdownSection } from './internal/DropdownSection';
import { isLoginAutoRedirectEnabled, showPremiumFeatures } from './internal/components/administration/utils';
import { LineageGridModel, LineageResult } from './internal/components/lineage/models';
import { ActiveUserLimit, ActiveUserLimitMessage } from './internal/components/settings/ActiveUserLimit';
import { NameIdSettings } from './internal/components/settings/NameIdSettings';
import { BaseModal, Modal, ModalHeader } from './internal/Modal';
import { Tab, Tabs } from './internal/Tabs';
import { CheckboxLK } from './internal/Checkbox';
import { ArchivedFolderTag } from './internal/components/folder/ArchivedFolderTag';
import { FilterCriteriaRenderer } from './internal/FilterCriteriaRenderer';
// See Immer docs for why we do this: https://immerjs.github.io/immer/docs/installation#pick-your-immer-version
enableMapSet();
enablePatches();
const App = {
AppReducers,
ProductMenuReducers,
ServerNotificationReducers,
CloseEventCode,
EntityCreationMode,
biologicsIsPrimaryApp,
createTestProjectAppContextAdmin,
createTestProjectAppContextNonAdmin,
getCurrentAppProperties,
registerPipelineWebSocketListeners,
getAppHomeFolderPath,
getAppHomeFolderId,
isAdvancedDomainPropertiesEnabled,
isApp,
isAppHomeFolder,
isAssayDesignExportEnabled,
isAssayEnabled,
isAssayFileUploadEnabled,
isAssayQCEnabled,
isAssayRequestsEnabled,
isExperimentAliasEnabled,
isLKSSupportEnabled,
isNotebookTagsEnabled,
isNonstandardAssayEnabled,
isRegistryEnabled,
isSourceTypeEnabled,
isMediaEnabled,
isWorkflowEnabled,
isELNEnabled,
isFreezerManagementEnabled,
isPlatesEnabled,
isSampleManagerEnabled,
isBiologicsEnabled,
isPremiumProductEnabled,
isSampleAliquotSelectorEnabled,
isProjectContainer,
isProtectedDataEnabled,
isDataChangeCommentRequirementFeatureEnabled,
isSharedContainer,
freezerManagerIsCurrentApp,
isSampleStatusEnabled,
isProductFoldersEnabled,
isAllProductFoldersFilteringEnabled,
isSampleEntity,
isDataClassEntity,
getPrimaryAppProperties,
getArchivedFolders,
setFolderDataExclusion,
getFolderDataExclusion,
getFolderAssayDesignExclusion,
getFolderDataClassExclusion,
getFolderSampleTypeExclusion,
getProjectPath,
getFolderTestAPIWrapper,
getLabelsTestAPIWrapper,
getSecurityTestAPIWrapper,
hasPremiumModule,
hasProductFolders,
hasModule,
generateNameWithTimestamp,
getContainerFormats,
getDateFormat,
getDateTimeFormat,
getTimeFormat,
useMenuSectionConfigs,
limsIsPrimaryApp,
menuInit,
menuInvalidate,
menuReload,
registerInputRenderers,
serverNotificationInit,
serverNotificationInvalidate,
updateUser,
updateUserDisplayName,
userCanDesignLocations,
userCanEditStorageData,
userCanDesignSourceTypes,
userCanManagePicklists,
userCanManageSampleWorkflow,
userCanReadAssays,
userCanReadNotebooks,
userCanReadMedia,
userCanReadDataClasses,
userCanReadGroupDetails,