gitextract_r_s8ij64/ ├── .dockerignore ├── .editorconfig ├── .git-blame-ignore-revs ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── 00-bug-issue.yml │ │ ├── 10-installation-issue.yml │ │ ├── 20-feature-request.yml │ │ └── config.yml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── cla/ │ │ ├── individual-cla.md │ │ └── signatures.json │ └── workflows/ │ ├── cla.yml │ ├── docker.yml │ ├── docker_latest.yml │ ├── fly-build.yml │ ├── fly-cleanup.yml │ ├── fly-deploy.yml │ ├── fly-destroy.yml │ ├── main.yml │ ├── self-hosted.yml │ └── translation_keys.yml ├── .gitignore ├── .nvmrc ├── .yarnrc ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE.txt ├── NOTICE.txt ├── README.md ├── SECURITY.md ├── app/ │ ├── cli.sh │ ├── client/ │ │ ├── DefaultHooks.ts │ │ ├── Hooks.ts │ │ ├── aclui/ │ │ │ ├── ACLColumnList.ts │ │ │ ├── ACLFormulaEditor.ts │ │ │ ├── ACLMemoEditor.ts │ │ │ ├── ACLSelect.ts │ │ │ ├── ACLUsers.ts │ │ │ ├── AccessRules.ts │ │ │ └── PermissionsWidget.ts │ │ ├── apiconsole.ts │ │ ├── app.css │ │ ├── app.js │ │ ├── billingMain.ts │ │ ├── browserCheck.ts │ │ ├── components/ │ │ │ ├── AceEditor.css │ │ │ ├── AceEditor.js │ │ │ ├── AceEditorCompletions.ts │ │ │ ├── ActionCounter.ts │ │ │ ├── ActionLog.css │ │ │ ├── ActionLog.ts │ │ │ ├── Banner.ts │ │ │ ├── BaseView.ts │ │ │ ├── BaseView2.ts │ │ │ ├── BehavioralPromptsManager.ts │ │ │ ├── CellPosition.ts │ │ │ ├── CellSelector.ts │ │ │ ├── ChartView.css │ │ │ ├── ChartView.ts │ │ │ ├── ClientScope.ts │ │ │ ├── Clipboard.css │ │ │ ├── Clipboard.ts │ │ │ ├── CodeEditorPanel.css │ │ │ ├── CodeEditorPanel.ts │ │ │ ├── ColumnFilters.css │ │ │ ├── ColumnTransform.ts │ │ │ ├── Comm.ts │ │ │ ├── CopySelection.ts │ │ │ ├── CoreBanners.ts │ │ │ ├── Cursor.ts │ │ │ ├── CursorMonitor.ts │ │ │ ├── CustomCalendarView.ts │ │ │ ├── CustomView.css │ │ │ ├── CustomView.ts │ │ │ ├── DataTables.ts │ │ │ ├── DetailView.css │ │ │ ├── DetailView.ts │ │ │ ├── DocComm.ts │ │ │ ├── DocumentUsage.ts │ │ │ ├── Drafts.ts │ │ │ ├── DropdownConditionConfig.ts │ │ │ ├── DropdownConditionEditor.ts │ │ │ ├── EditorMonitor.ts │ │ │ ├── EmbedForm.css │ │ │ ├── ExternalAttachmentBanner.ts │ │ │ ├── FieldConfigTab.css │ │ │ ├── FormRenderer.ts │ │ │ ├── FormRendererCss.ts │ │ │ ├── Forms/ │ │ │ │ ├── Columns.ts │ │ │ │ ├── Editor.ts │ │ │ │ ├── Field.ts │ │ │ │ ├── FormConfig.ts │ │ │ │ ├── FormView.ts │ │ │ │ ├── MappedFieldsConfig.ts │ │ │ │ ├── Menu.ts │ │ │ │ ├── Model.ts │ │ │ │ ├── Paragraph.ts │ │ │ │ ├── Section.ts │ │ │ │ ├── Submit.ts │ │ │ │ ├── elements.ts │ │ │ │ └── styles.ts │ │ │ ├── FormulaTransform.ts │ │ │ ├── GridView.css │ │ │ ├── GridView.ts │ │ │ ├── GristClientSocket.ts │ │ │ ├── GristDoc.css │ │ │ ├── GristDoc.ts │ │ │ ├── GristWSConnection.ts │ │ │ ├── Importer.ts │ │ │ ├── KeyboardFocusHighlighter.ts │ │ │ ├── Layout.css │ │ │ ├── Layout.ts │ │ │ ├── LayoutEditor.css │ │ │ ├── LayoutEditor.ts │ │ │ ├── LayoutTray.ts │ │ │ ├── LinkingState.ts │ │ │ ├── Login.css │ │ │ ├── ParseOptions.ts │ │ │ ├── PluginScreen.ts │ │ │ ├── Printing.css │ │ │ ├── Printing.ts │ │ │ ├── RawDataPage.ts │ │ │ ├── RecordCardPopup.ts │ │ │ ├── RecordLayout.css │ │ │ ├── RecordLayout.js │ │ │ ├── RecordLayoutEditor.js │ │ │ ├── RefSelect.ts │ │ │ ├── RegionFocusSwitcher.ts │ │ │ ├── SearchBar.css │ │ │ ├── SelectionSummary.ts │ │ │ ├── TypeConversion.ts │ │ │ ├── TypeTransform.ts │ │ │ ├── UndoStack.ts │ │ │ ├── UnsavedChanges.ts │ │ │ ├── VersionUpdateBanner.ts │ │ │ ├── ViewAsBanner.ts │ │ │ ├── ViewConfigTab.css │ │ │ ├── ViewConfigTab.js │ │ │ ├── ViewLayout.css │ │ │ ├── ViewLayout.ts │ │ │ ├── ViewLinker.css │ │ │ ├── ViewPane.ts │ │ │ ├── VirtualDoc.ts │ │ │ ├── VirtualTable.ts │ │ │ ├── WidgetFrame.ts │ │ │ ├── buildViewSectionDom.ts │ │ │ ├── commandList.ts │ │ │ ├── commands.css │ │ │ ├── commands.ts │ │ │ ├── duplicatePage.ts │ │ │ ├── duplicateWidget.ts │ │ │ ├── modals.ts │ │ │ ├── viewCommon.css │ │ │ └── viewCommon.js │ │ ├── declarations.d.ts │ │ ├── errorMain.ts │ │ ├── exposeModulesForTests.js │ │ ├── formMain.ts │ │ ├── lib/ │ │ │ ├── ACIndex.ts │ │ │ ├── ACSelect.ts │ │ │ ├── ACUserManager.ts │ │ │ ├── BoxSpec.ts │ │ │ ├── CellDiffTool.ts │ │ │ ├── CustomSectionElement.ts │ │ │ ├── Delay.ts │ │ │ ├── DocPluginManager.ts │ │ │ ├── DocSchemaImport.ts │ │ │ ├── FocusLayer.ts │ │ │ ├── GristWindow.ts │ │ │ ├── HomePluginManager.ts │ │ │ ├── ImportSourceElement.ts │ │ │ ├── Mousetrap.js │ │ │ ├── MultiUserManager.ts │ │ │ ├── ObservableMap.js │ │ │ ├── ObservableSet.js │ │ │ ├── ReferenceUtils.ts │ │ │ ├── SafeBrowser.ts │ │ │ ├── SafeBrowserProcess.css │ │ │ ├── Signal.ts │ │ │ ├── Suggestions.ts │ │ │ ├── TokenField.ts │ │ │ ├── UrlState.ts │ │ │ ├── Validator.ts │ │ │ ├── airtable/ │ │ │ │ ├── AirtableImportUI.ts │ │ │ │ ├── AirtableImporter.ts │ │ │ │ ├── startDocAirtableImport.ts │ │ │ │ └── startHomeAirtableImport.ts │ │ │ ├── autocomplete.ts │ │ │ ├── browserGlobals.ts │ │ │ ├── browserInfo.ts │ │ │ ├── chartUtil.ts │ │ │ ├── clipboardUtils.ts │ │ │ ├── dblclick.ts │ │ │ ├── dispose.d.ts │ │ │ ├── dispose.js │ │ │ ├── dom.js │ │ │ ├── domAsync.ts │ │ │ ├── domUtils.ts │ │ │ ├── download.js │ │ │ ├── formUtils.ts │ │ │ ├── formatUtils.ts │ │ │ ├── fromKoSave.ts │ │ │ ├── getOrCreateStyleElement.ts │ │ │ ├── guessTimezone.ts │ │ │ ├── hashUtils.ts │ │ │ ├── helpScout.ts │ │ │ ├── imports.d.ts │ │ │ ├── imports.js │ │ │ ├── isFocusable.ts │ │ │ ├── koArray.d.ts │ │ │ ├── koArray.js │ │ │ ├── koArrayWrap.ts │ │ │ ├── koDom.js │ │ │ ├── koDomScrolly.css │ │ │ ├── koDomScrolly.js │ │ │ ├── koForm.css │ │ │ ├── koForm.js │ │ │ ├── koUtil.js │ │ │ ├── loadScript.ts │ │ │ ├── localStorageObs.ts │ │ │ ├── localization.ts │ │ │ ├── log.ts │ │ │ ├── markdown.ts │ │ │ ├── nameUtils.ts │ │ │ ├── pausableObs.ts │ │ │ ├── popupControl.ts │ │ │ ├── popupUtils.ts │ │ │ ├── sanitizeUrl.ts │ │ │ ├── sessionObs.ts │ │ │ ├── simpleList.ts │ │ │ ├── sortUtil.ts │ │ │ ├── storage.ts │ │ │ ├── tableUtil.ts │ │ │ ├── telemetry.ts │ │ │ ├── testState.ts │ │ │ ├── textUtils.ts │ │ │ ├── timeUtils.ts │ │ │ ├── trapTabKey.ts │ │ │ ├── uploads.ts │ │ │ └── urlUtils.ts │ │ ├── logo.css │ │ ├── models/ │ │ │ ├── AdminChecks.ts │ │ │ ├── AppModel.ts │ │ │ ├── AuditLogsModel.ts │ │ │ ├── BaseRowModel.js │ │ │ ├── ChatHistory.ts │ │ │ ├── ClientColumnGetters.ts │ │ │ ├── ColumnACIndexes.ts │ │ │ ├── ColumnCache.ts │ │ │ ├── ColumnFilter.ts │ │ │ ├── ColumnFilterMenuModel.ts │ │ │ ├── ColumnToMap.ts │ │ │ ├── ConnectState.ts │ │ │ ├── DataRowModel.ts │ │ │ ├── DataTableModel.js │ │ │ ├── DataTableModelWithDiff.ts │ │ │ ├── DocData.ts │ │ │ ├── DocModel.ts │ │ │ ├── DocPageModel.ts │ │ │ ├── FormModel.ts │ │ │ ├── HomeModel.ts │ │ │ ├── MetaRowModel.js │ │ │ ├── MetaTableModel.js │ │ │ ├── NotifyModel.ts │ │ │ ├── QuerySet.ts │ │ │ ├── RuleOwner.ts │ │ │ ├── SearchModel.ts │ │ │ ├── SectionFilter.ts │ │ │ ├── Styles.ts │ │ │ ├── TableData.ts │ │ │ ├── TableModel.js │ │ │ ├── TelemetryModel.ts │ │ │ ├── TimeQuery.ts │ │ │ ├── ToggleEnterpriseModel.ts │ │ │ ├── TreeModel.ts │ │ │ ├── UnionRowSource.ts │ │ │ ├── UserManagerModel.ts │ │ │ ├── UserPrefs.ts │ │ │ ├── UserPresenceModel.ts │ │ │ ├── ViewFieldConfig.ts │ │ │ ├── VirtualTable.ts │ │ │ ├── VirtualTableMeta.ts │ │ │ ├── WorkspaceInfo.ts │ │ │ ├── entities/ │ │ │ │ ├── ACLRuleRec.ts │ │ │ │ ├── CellRec.ts │ │ │ │ ├── ColumnRec.ts │ │ │ │ ├── DocInfoRec.ts │ │ │ │ ├── FilterRec.ts │ │ │ │ ├── PageRec.ts │ │ │ │ ├── ShareRec.ts │ │ │ │ ├── TabBarRec.ts │ │ │ │ ├── TableRec.ts │ │ │ │ ├── ValidationRec.ts │ │ │ │ ├── ViewFieldRec.ts │ │ │ │ ├── ViewRec.ts │ │ │ │ └── ViewSectionRec.ts │ │ │ ├── errors.ts │ │ │ ├── features.ts │ │ │ ├── gristConfigCache.ts │ │ │ ├── gristUrlState.ts │ │ │ ├── homeUrl.ts │ │ │ ├── modelUtil.js │ │ │ ├── rowset.ts │ │ │ └── rowuid.js │ │ ├── tsconfig.json │ │ ├── ui/ │ │ │ ├── AccountPage.ts │ │ │ ├── AccountPageCss.ts │ │ │ ├── AccountWidget.ts │ │ │ ├── AccountWidgetCss.ts │ │ │ ├── ActiveUserList.ts │ │ │ ├── AddNewButton.ts │ │ │ ├── AddNewTip.ts │ │ │ ├── AdminLeftPanel.ts │ │ │ ├── AdminPanel.ts │ │ │ ├── AdminPanelCss.ts │ │ │ ├── AdminPanelName.ts │ │ │ ├── AdminTogglesCss.ts │ │ │ ├── ApiKey.ts │ │ │ ├── App.css │ │ │ ├── App.ts │ │ │ ├── AppHeader.ts │ │ │ ├── AppUI.ts │ │ │ ├── AuditLogStreamingConfig.ts │ │ │ ├── AuditLogsPage.ts │ │ │ ├── AuthenticationSection.ts │ │ │ ├── BottomBar.ts │ │ │ ├── CardContextMenu.ts │ │ │ ├── CellContextMenu.ts │ │ │ ├── ChangeAdminModal.ts │ │ │ ├── CodeHighlight.ts │ │ │ ├── ColumnFilterCalendarView.ts │ │ │ ├── ColumnFilterMenu.ts │ │ │ ├── ColumnFilterMenuUtils.ts │ │ │ ├── ColumnTitle.ts │ │ │ ├── ConfigsAPI.ts │ │ │ ├── CoreHomeImports.ts │ │ │ ├── CoreNewDocMethods.ts │ │ │ ├── CreateTeamModal.ts │ │ │ ├── CustomSectionConfig.ts │ │ │ ├── CustomThemes.ts │ │ │ ├── CustomWidgetGallery.ts │ │ │ ├── DateRangeOptions.ts │ │ │ ├── DefaultActivationPage.ts │ │ │ ├── DescriptionConfig.ts │ │ │ ├── DocHistory.ts │ │ │ ├── DocIcon.ts │ │ │ ├── DocList.ts │ │ │ ├── DocMenu.ts │ │ │ ├── DocMenuCss.ts │ │ │ ├── DocTour.ts │ │ │ ├── DocTutorial.css │ │ │ ├── DocTutorial.ts │ │ │ ├── DocTutorialRenderer.ts │ │ │ ├── DocumentSettings.ts │ │ │ ├── DuplicateTable.ts │ │ │ ├── EmojiPicker.ts │ │ │ ├── ExampleCard.ts │ │ │ ├── ExampleInfo.ts │ │ │ ├── Experiments.ts │ │ │ ├── FieldConfig.ts │ │ │ ├── FieldContextMenu.ts │ │ │ ├── FieldMenus.ts │ │ │ ├── FileDialog.ts │ │ │ ├── FilterBar.ts │ │ │ ├── FilterConfig.ts │ │ │ ├── FloatingPopup.ts │ │ │ ├── FormAPI.ts │ │ │ ├── FormContainer.ts │ │ │ ├── FormErrorPage.ts │ │ │ ├── FormPage.ts │ │ │ ├── FormSuccessPage.ts │ │ │ ├── GetGristComProvider.ts │ │ │ ├── GridOptions.ts │ │ │ ├── GridViewMenus.ts │ │ │ ├── GridViewMenusDateHelpers.ts │ │ │ ├── GristTooltips.ts │ │ │ ├── HomeIntro.ts │ │ │ ├── HomeIntroCards.ts │ │ │ ├── HomeLeftPane.ts │ │ │ ├── IAssistantPopup.ts │ │ │ ├── ImportProgress.ts │ │ │ ├── LanguageMenu.ts │ │ │ ├── LeftPanelCommon.ts │ │ │ ├── LinkConfig.ts │ │ │ ├── LoginPagesCss.ts │ │ │ ├── MakeCopyMenu.ts │ │ │ ├── MarkdownCellRenderer.ts │ │ │ ├── MenuToggle.ts │ │ │ ├── MultiSelector.ts │ │ │ ├── NewRecordButton.ts │ │ │ ├── NotifyUI.ts │ │ │ ├── OnBoardingPopups.ts │ │ │ ├── OnboardingPage.ts │ │ │ ├── OpenAccessibilityModal.ts │ │ │ ├── OpenUserManager.ts │ │ │ ├── OpenVideoTour.ts │ │ │ ├── PagePanels.ts │ │ │ ├── PageWidgetPicker.ts │ │ │ ├── Pages.ts │ │ │ ├── PinnedDocs.ts │ │ │ ├── PredefinedCustomSectionConfig.ts │ │ │ ├── ProposedChangesPage.ts │ │ │ ├── RelativeDatesOptions.ts │ │ │ ├── RenameDocModal.ts │ │ │ ├── RenamePopupStyles.ts │ │ │ ├── RightPanel.ts │ │ │ ├── RightPanelStyles.ts │ │ │ ├── RightPanelUtils.ts │ │ │ ├── RowContextMenu.ts │ │ │ ├── RowHeightConfig.ts │ │ │ ├── ShareMenu.ts │ │ │ ├── ShortcutKey.ts │ │ │ ├── SiteSwitcher.ts │ │ │ ├── SortConfig.ts │ │ │ ├── SortFilterConfig.ts │ │ │ ├── SupportGristButton.ts │ │ │ ├── SupportGristPage.ts │ │ │ ├── TemplateDocs.ts │ │ │ ├── ThemeConfig.ts │ │ │ ├── TimingPage.ts │ │ │ ├── ToggleEnterpriseWidget.ts │ │ │ ├── Tools.ts │ │ │ ├── TopBar.ts │ │ │ ├── TopBarCss.ts │ │ │ ├── TreeViewComponent.ts │ │ │ ├── TreeViewComponentCss.ts │ │ │ ├── TriggerFormulas.ts │ │ │ ├── UserImage.ts │ │ │ ├── UserItem.ts │ │ │ ├── UserManager.ts │ │ │ ├── ViewLayoutMenu.ts │ │ │ ├── ViewSectionMenu.ts │ │ │ ├── VisibleFieldsConfig.ts │ │ │ ├── WebhookPage.ts │ │ │ ├── WelcomeCoachingCall.ts │ │ │ ├── WelcomePage.ts │ │ │ ├── WelcomeSitePicker.ts │ │ │ ├── WelcomeTour.ts │ │ │ ├── WidgetTitle.ts │ │ │ ├── YouTubePlayer.ts │ │ │ ├── buildReassignModal.ts │ │ │ ├── buttons.ts │ │ │ ├── contextMenu.ts │ │ │ ├── createAppPage.ts │ │ │ ├── createPage.ts │ │ │ ├── cssInput.ts │ │ │ ├── errorPages.ts │ │ │ ├── forms.ts │ │ │ ├── googleAuth.ts │ │ │ ├── inputs.ts │ │ │ ├── mouseDrag.ts │ │ │ ├── resizeHandle.ts │ │ │ ├── sanitizeHTML.ts │ │ │ ├── searchDropdown.ts │ │ │ ├── selectBy.ts │ │ │ ├── sendToDrive.ts │ │ │ ├── shadowScroll.ts │ │ │ ├── tooltips.ts │ │ │ ├── transientInput.ts │ │ │ ├── transitions.ts │ │ │ ├── userTrustsCustomWidget.ts │ │ │ ├── viewport.ts │ │ │ └── widgetTypesMap.ts │ │ ├── ui2018/ │ │ │ ├── ColorPalette.ts │ │ │ ├── ColorSelect.ts │ │ │ ├── IconList.ts │ │ │ ├── alerts.ts │ │ │ ├── ariaTabs.ts │ │ │ ├── breadcrumbs.ts │ │ │ ├── buttonSelect.ts │ │ │ ├── buttons.ts │ │ │ ├── checkbox.ts │ │ │ ├── cssVars.ts │ │ │ ├── draggableList.ts │ │ │ ├── editableLabel.ts │ │ │ ├── icons.ts │ │ │ ├── links.ts │ │ │ ├── loaders.ts │ │ │ ├── menus.ts │ │ │ ├── modals.ts │ │ │ ├── pages.ts │ │ │ ├── popups.ts │ │ │ ├── radio.ts │ │ │ ├── search.ts │ │ │ ├── select.ts │ │ │ ├── stretchedLink.ts │ │ │ ├── tabs.ts │ │ │ ├── theme.ts │ │ │ ├── toggleSwitch.ts │ │ │ ├── unstyled.ts │ │ │ └── visuallyHidden.ts │ │ └── widgets/ │ │ ├── AbstractWidget.js │ │ ├── Assistant.ts │ │ ├── AttachmentsEditor.ts │ │ ├── AttachmentsWidget.ts │ │ ├── BaseEditor.js │ │ ├── CellStyle.ts │ │ ├── CheckBox.css │ │ ├── CheckBoxEditor.js │ │ ├── ChoiceEditor.js │ │ ├── ChoiceListCell.ts │ │ ├── ChoiceListEditor.ts │ │ ├── ChoiceListEntry.ts │ │ ├── ChoiceTextBox.ts │ │ ├── ChoiceToken.ts │ │ ├── ConditionalStyle.ts │ │ ├── CurrencyPicker.ts │ │ ├── DateEditor.ts │ │ ├── DateTextBox.js │ │ ├── DateTimeEditor.css │ │ ├── DateTimeEditor.ts │ │ ├── DateTimeTextBox.js │ │ ├── DiffBox.ts │ │ ├── DiscussionEditor.ts │ │ ├── EditorButtons.ts │ │ ├── EditorPlacement.ts │ │ ├── EditorTooltip.ts │ │ ├── ErrorDom.ts │ │ ├── FieldBuilder.css │ │ ├── FieldBuilder.ts │ │ ├── FieldEditor.ts │ │ ├── FloatingEditor.ts │ │ ├── FormulaAssistant.ts │ │ ├── FormulaEditor.ts │ │ ├── HyperLinkEditor.ts │ │ ├── HyperLinkTextBox.ts │ │ ├── MarkdownTextBox.ts │ │ ├── MentionTextBox.ts │ │ ├── NTextBox.ts │ │ ├── NTextEditor.ts │ │ ├── NewAbstractWidget.ts │ │ ├── NewBaseEditor.ts │ │ ├── NumericEditor.ts │ │ ├── NumericSpinner.ts │ │ ├── NumericTextBox.ts │ │ ├── Reference.css │ │ ├── Reference.ts │ │ ├── ReferenceEditor.ts │ │ ├── ReferenceList.ts │ │ ├── ReferenceListEditor.ts │ │ ├── ReverseReferenceConfig.ts │ │ ├── Spinner.css │ │ ├── Spinner.ts │ │ ├── TZAutocomplete.ts │ │ ├── TextBox.css │ │ ├── TextEditor.css │ │ ├── TextEditor.js │ │ ├── Toggle.ts │ │ ├── UserType.ts │ │ └── UserTypeImpl.ts │ ├── common/ │ │ ├── ACLPermissions.ts │ │ ├── ACLRuleCollection.ts │ │ ├── ACLRulesReader.ts │ │ ├── ActionBundle.ts │ │ ├── ActionDispatcher.ts │ │ ├── ActionGroup.ts │ │ ├── ActionRouter.ts │ │ ├── ActionSummarizer.ts │ │ ├── ActionSummary.ts │ │ ├── ActivationAPI.ts │ │ ├── ActiveDocAPI.ts │ │ ├── AlternateActions.ts │ │ ├── ApiError.ts │ │ ├── Assistance.ts │ │ ├── Assistant.ts │ │ ├── AsyncCreate.ts │ │ ├── AsyncFlow.ts │ │ ├── AttachmentColumns.ts │ │ ├── BaseAPI.ts │ │ ├── BasketClientAPI.ts │ │ ├── BigInt.ts │ │ ├── BillingAPI.ts │ │ ├── BinaryIndexedTree.js │ │ ├── BootProbe.ts │ │ ├── BrowserSettings.ts │ │ ├── CircularArray.js │ │ ├── ColumnFilterFunc.ts │ │ ├── ColumnGetters.ts │ │ ├── CommTypes.ts │ │ ├── Config-ti.ts │ │ ├── Config.ts │ │ ├── ConfigAPI.ts │ │ ├── CssCustomProp.ts │ │ ├── CustomWidget.ts │ │ ├── DisposableWithEvents.ts │ │ ├── DocActions.ts │ │ ├── DocComments.ts │ │ ├── DocData.ts │ │ ├── DocDataCache.ts │ │ ├── DocLimits.ts │ │ ├── DocListAPI.ts │ │ ├── DocSchemaImport.ts │ │ ├── DocSchemaImportTypes-ti.ts │ │ ├── DocSchemaImportTypes.ts │ │ ├── DocSnapshot.ts │ │ ├── DocState.ts │ │ ├── DocUsage.ts │ │ ├── DocumentSettings-ti.ts │ │ ├── DocumentSettings.ts │ │ ├── DropdownCondition.ts │ │ ├── EncActionBundle.ts │ │ ├── ErrorWithCode.ts │ │ ├── Features-ti.ts │ │ ├── Features.ts │ │ ├── FilterState.ts │ │ ├── Forms.ts │ │ ├── Formula.ts │ │ ├── GranularAccessClause.ts │ │ ├── GristServerAPI.ts │ │ ├── ICommonUrls-ti.ts │ │ ├── ICommonUrls.ts │ │ ├── InactivityTimer.ts │ │ ├── Install.ts │ │ ├── InstallAPI.ts │ │ ├── Interval.ts │ │ ├── KeyedMutex.ts │ │ ├── KeyedOps.ts │ │ ├── Limits.ts │ │ ├── LinkNode.ts │ │ ├── LocaleCodes.ts │ │ ├── Locales.ts │ │ ├── LoginSessionAPI.ts │ │ ├── MemBuffer.js │ │ ├── NumberFormat.ts │ │ ├── NumberParse.ts │ │ ├── PluginInstance.ts │ │ ├── PredicateFormula.ts │ │ ├── Prefs.ts │ │ ├── RecentItems.js │ │ ├── RecordView.ts │ │ ├── RefCountMap.ts │ │ ├── RelativeDates.ts │ │ ├── RowFilterFunc.ts │ │ ├── SandboxInfo.ts │ │ ├── ServiceAccountTypes-ti.ts │ │ ├── ServiceAccountTypes.ts │ │ ├── ShareAnnotator.ts │ │ ├── ShareOptions.ts │ │ ├── SortFunc.ts │ │ ├── SortSpec.ts │ │ ├── StringUnion.ts │ │ ├── TableData.ts │ │ ├── TabularDiff.ts │ │ ├── Telemetry.ts │ │ ├── TestState.ts │ │ ├── ThemePrefs.ts │ │ ├── Themes.ts │ │ ├── TimeQuery.ts │ │ ├── Triggers-ti.ts │ │ ├── Triggers.ts │ │ ├── User.ts │ │ ├── UserAPI.ts │ │ ├── UserConfig.ts │ │ ├── ValueConverter.ts │ │ ├── ValueFormatter.ts │ │ ├── ValueGuesser.ts │ │ ├── ValueParser.ts │ │ ├── WidgetOptions.ts │ │ ├── airtable/ │ │ │ ├── AirtableAPI.ts │ │ │ ├── AirtableAPITypes-ti.ts │ │ │ ├── AirtableAPITypes.ts │ │ │ ├── AirtableAttachmentTracker.ts │ │ │ ├── AirtableCrosswalk.ts │ │ │ ├── AirtableDataImporter.ts │ │ │ ├── AirtableDataImporterTypes.ts │ │ │ ├── AirtableReferenceTracker.ts │ │ │ └── AirtableSchemaImporter.ts │ │ ├── arrayToString.ts │ │ ├── asyncIterators.ts │ │ ├── csvFormat.ts │ │ ├── declarations.d.ts │ │ ├── delay.ts │ │ ├── emails.ts │ │ ├── getCurrentTime.ts │ │ ├── gristTypes.ts │ │ ├── gristUrls.ts │ │ ├── gutil.ts │ │ ├── isHiddenTable.ts │ │ ├── loginProviders.ts │ │ ├── marshal.ts │ │ ├── normalizedDateTimeString.ts │ │ ├── orgNameUtils.ts │ │ ├── parseDate.ts │ │ ├── plugin.ts │ │ ├── resetOrg.ts │ │ ├── roles.ts │ │ ├── schema.ts │ │ ├── tagManager.ts │ │ ├── tbind.ts │ │ ├── themes/ │ │ │ ├── Base.ts │ │ │ ├── GristDark.ts │ │ │ ├── GristLight.ts │ │ │ └── HighContrastLight.ts │ │ ├── timeFormat.ts │ │ ├── tpromisified.ts │ │ ├── tsconfig.json │ │ ├── tsvFormat.ts │ │ ├── uploads.ts │ │ ├── urlUtils.ts │ │ └── widgetTypes.ts │ ├── gen-server/ │ │ ├── ApiServer.ts │ │ ├── entity/ │ │ │ ├── AclRule.ts │ │ │ ├── Activation.ts │ │ │ ├── Alias.ts │ │ │ ├── BillingAccount.ts │ │ │ ├── BillingAccountManager.ts │ │ │ ├── Config.ts │ │ │ ├── DocPref.ts │ │ │ ├── Document.ts │ │ │ ├── Group.ts │ │ │ ├── Limit.ts │ │ │ ├── Login.ts │ │ │ ├── OAuthClient.ts │ │ │ ├── OAuthGrant.ts │ │ │ ├── Organization.ts │ │ │ ├── Pref.ts │ │ │ ├── Product.ts │ │ │ ├── Proposal.ts │ │ │ ├── Resource.ts │ │ │ ├── Secret.ts │ │ │ ├── ServiceAccount.ts │ │ │ ├── Share.ts │ │ │ ├── User.ts │ │ │ └── Workspace.ts │ │ ├── lib/ │ │ │ ├── ActivationsManager.ts │ │ │ ├── DocApiForwarder.ts │ │ │ ├── DocWorkerMap.ts │ │ │ ├── Doom.ts │ │ │ ├── Housekeeper.ts │ │ │ ├── NotifierTypes.ts │ │ │ ├── Permissions.ts │ │ │ ├── TypeORMPatches.ts │ │ │ ├── Usage.ts │ │ │ ├── homedb/ │ │ │ │ ├── Caches.ts │ │ │ │ ├── GroupsManager.ts │ │ │ │ ├── HomeDBManager.ts │ │ │ │ ├── Interfaces.ts │ │ │ │ ├── ServiceAccountsManager.ts │ │ │ │ └── UsersManager.ts │ │ │ ├── scrubUserFromOrg.ts │ │ │ └── values.ts │ │ ├── migration/ │ │ │ ├── 1536634251710-Initial.ts │ │ │ ├── 1539031763952-Login.ts │ │ │ ├── 1549313797109-PinDocs.ts │ │ │ ├── 1549381727494-UserPicture.ts │ │ │ ├── 1551805156919-LoginDisplayEmail.ts │ │ │ ├── 1552416614755-LoginDisplayEmailNonNull.ts │ │ │ ├── 1553016106336-Indexes.ts │ │ │ ├── 1556726945436-Billing.ts │ │ │ ├── 1557157922339-OrgDomainUnique.ts │ │ │ ├── 1561589211752-Aliases.ts │ │ │ ├── 1568238234987-TeamMembers.ts │ │ │ ├── 1569593726320-FirstLogin.ts │ │ │ ├── 1569946508569-FirstTimeUser.ts │ │ │ ├── 1573569442552-CustomerIndex.ts │ │ │ ├── 1579559983067-ExtraIndexes.ts │ │ │ ├── 1591755411755-OrgHost.ts │ │ │ ├── 1592261300044-DocRemovedAt.ts │ │ │ ├── 1596456522124-Prefs.ts │ │ │ ├── 1623871765992-ExternalBilling.ts │ │ │ ├── 1626369037484-DocOptions.ts │ │ │ ├── 1631286208009-Secret.ts │ │ │ ├── 1644363380225-UserOptions.ts │ │ │ ├── 1647883793388-GracePeriodStart.ts │ │ │ ├── 1651469582887-DocumentUsage.ts │ │ │ ├── 1652273656610-Activations.ts │ │ │ ├── 1652277549983-UserConnectId.ts │ │ │ ├── 1663851423064-UserUUID.ts │ │ │ ├── 1664528376930-UserRefUnique.ts │ │ │ ├── 1673051005072-Forks.ts │ │ │ ├── 1678737195050-ForkIndexes.ts │ │ │ ├── 1682636695021-ActivationPrefs.ts │ │ │ ├── 1685343047786-AssistantLimit.ts │ │ │ ├── 1701557445716-Shares.ts │ │ │ ├── 1711557445716-Billing.ts │ │ │ ├── 1713186031023-UserLastConnection.ts │ │ │ ├── 1722529827161-Activation-Enabled.ts │ │ │ ├── 1727747249153-Configs.ts │ │ │ ├── 1729754662550-LoginsEmailIndex.ts │ │ │ ├── 1732103776245-GracePeriod.ts │ │ │ ├── 1738912357827-UserCreatedAt.ts │ │ │ ├── 1746246433628-DocPref.ts │ │ │ ├── 1749454162428-GroupUsersCreatedAt.ts │ │ │ ├── 1753088213255-GroupTypes.ts │ │ │ ├── 1754077317821-UserDisabledAt.ts │ │ │ ├── 1756799894986-UserUnsubscribeKey.ts │ │ │ ├── 1756918816559-ServiceAccounts.ts │ │ │ ├── 1759256005608-Proposals.ts │ │ │ ├── 1759434763338-DocDisabledAt.ts │ │ │ ├── 1764872085347-OAuthClientsAndGrants.ts │ │ │ └── README.md │ │ └── sqlUtils.ts │ ├── plugin/ │ │ ├── CustomSectionAPI-ti.ts │ │ ├── CustomSectionAPI.ts │ │ ├── DocApiTypes-ti.ts │ │ ├── DocApiTypes.ts │ │ ├── FileParserAPI-ti.ts │ │ ├── FileParserAPI.ts │ │ ├── GristAPI-ti.ts │ │ ├── GristAPI.ts │ │ ├── GristData-ti.ts │ │ ├── GristData.ts │ │ ├── GristTable-ti.ts │ │ ├── GristTable.ts │ │ ├── ImportSourceAPI-ti.ts │ │ ├── ImportSourceAPI.ts │ │ ├── InternalImportSourceAPI-ti.ts │ │ ├── InternalImportSourceAPI.ts │ │ ├── PluginManifest-ti.ts │ │ ├── PluginManifest.ts │ │ ├── README.md │ │ ├── RenderOptions-ti.ts │ │ ├── RenderOptions.ts │ │ ├── StorageAPI-ti.ts │ │ ├── StorageAPI.ts │ │ ├── TableOperations.ts │ │ ├── TableOperationsImpl.ts │ │ ├── TypeCheckers.ts │ │ ├── WidgetAPI-ti.ts │ │ ├── WidgetAPI.ts │ │ ├── grist-plugin-api.ts │ │ ├── gutil.ts │ │ ├── objtypes.ts │ │ └── tsconfig.json │ ├── server/ │ │ ├── MergedServer.ts │ │ ├── companion.ts │ │ ├── declarations.d.ts │ │ ├── devServerMain.ts │ │ ├── generateCheckpoint.ts │ │ ├── generateInitialDocSql.ts │ │ ├── lib/ │ │ │ ├── AccessTokens.ts │ │ │ ├── ActionHistory.ts │ │ │ ├── ActionHistoryImpl.ts │ │ │ ├── ActiveDoc.ts │ │ │ ├── ActiveDocImport.ts │ │ │ ├── ActiveDocUtils.ts │ │ │ ├── AppEndpoint.ts │ │ │ ├── AppSettings.ts │ │ │ ├── Archive.ts │ │ │ ├── Assistant.ts │ │ │ ├── AssistantStatePermit.ts │ │ │ ├── AttachmentFileManager.ts │ │ │ ├── AttachmentStore.ts │ │ │ ├── AttachmentStoreProvider.ts │ │ │ ├── AuditEvent.ts │ │ │ ├── AuthSession.ts │ │ │ ├── Authorizer.ts │ │ │ ├── BootProbes.ts │ │ │ ├── BrowserSession.ts │ │ │ ├── CellDataAccess.ts │ │ │ ├── Client.ts │ │ │ ├── Comm.ts │ │ │ ├── ConfigBackendAPI.ts │ │ │ ├── DiscourseConnect.ts │ │ │ ├── DocApi.ts │ │ │ ├── DocApiTriggers.ts │ │ │ ├── DocApiUtils.ts │ │ │ ├── DocAuthorizer.ts │ │ │ ├── DocClients.ts │ │ │ ├── DocManager.ts │ │ │ ├── DocPluginData.ts │ │ │ ├── DocPluginManager.ts │ │ │ ├── DocSession.ts │ │ │ ├── DocSnapshots.ts │ │ │ ├── DocStorage.ts │ │ │ ├── DocStorageManager.ts │ │ │ ├── DocWorker.ts │ │ │ ├── DocWorkerLoadTracker.ts │ │ │ ├── DocWorkerMap.ts │ │ │ ├── DocWorkerUtils.ts │ │ │ ├── ExcelFormatter.ts │ │ │ ├── ExpandedQuery.ts │ │ │ ├── Export.ts │ │ │ ├── ExportDSV.ts │ │ │ ├── ExportTableSchema.ts │ │ │ ├── ExportXLSX.ts │ │ │ ├── ExternalStorage.ts │ │ │ ├── FileParserElement.ts │ │ │ ├── FlexServer.ts │ │ │ ├── ForwardAuthLogin.ts │ │ │ ├── GetGristComConfig.ts │ │ │ ├── GoogleAuth.ts │ │ │ ├── GoogleExport.ts │ │ │ ├── GoogleImport.ts │ │ │ ├── GranularAccess.ts │ │ │ ├── GristJobs.ts │ │ │ ├── GristServer.ts │ │ │ ├── GristServerSocket.ts │ │ │ ├── GristSocketServer.ts │ │ │ ├── HashUtil.ts │ │ │ ├── HostedMetadataManager.ts │ │ │ ├── HostedStorageManager.ts │ │ │ ├── IAssistant.ts │ │ │ ├── IAuditLogger.ts │ │ │ ├── IBilling.ts │ │ │ ├── IChecksumStore.ts │ │ │ ├── ICreate.ts │ │ │ ├── IDocNotificationManager.ts │ │ │ ├── IDocStorageManager.ts │ │ │ ├── IElectionStore.ts │ │ │ ├── INotifier.ts │ │ │ ├── ISandbox.ts │ │ │ ├── IShell.ts │ │ │ ├── ITestingHooks-ti.ts │ │ │ ├── ITestingHooks.ts │ │ │ ├── InsightLog.ts │ │ │ ├── InstallAdmin.ts │ │ │ ├── LogMethods.ts │ │ │ ├── LoginSystemConfig.ts │ │ │ ├── MemoryPool.ts │ │ │ ├── MinIOExternalStorage.ts │ │ │ ├── MinimalLogin.ts │ │ │ ├── NSandbox.ts │ │ │ ├── NullSandbox.ts │ │ │ ├── OAuth2Clients.ts │ │ │ ├── OIDCConfig.ts │ │ │ ├── OnDemandActions.ts │ │ │ ├── OpenAIAssistantV1.ts │ │ │ ├── Patch.ts │ │ │ ├── PermissionInfo.ts │ │ │ ├── Permit.ts │ │ │ ├── PluginEndpoint.ts │ │ │ ├── PluginManager.ts │ │ │ ├── ProcessMonitor.ts │ │ │ ├── ProxyAgent.ts │ │ │ ├── PubSubCache.ts │ │ │ ├── PubSubManager.ts │ │ │ ├── Requests.ts │ │ │ ├── RowAccess.ts │ │ │ ├── SQLiteDB.ts │ │ │ ├── SafePythonComponent.ts │ │ │ ├── SamlConfig.ts │ │ │ ├── SandboxControl.ts │ │ │ ├── SandboxPyodide.ts │ │ │ ├── ServerColumnGetters.ts │ │ │ ├── ServerLocale.ts │ │ │ ├── Sessions.ts │ │ │ ├── Sharing.ts │ │ │ ├── SqliteCommon.ts │ │ │ ├── SqliteNode.ts │ │ │ ├── TableMetadataLoader.ts │ │ │ ├── TagChecker.ts │ │ │ ├── Telemetry.ts │ │ │ ├── TestLogin.ts │ │ │ ├── TestingHooks.ts │ │ │ ├── Throttle.ts │ │ │ ├── TimeQuery.ts │ │ │ ├── Triggers.ts │ │ │ ├── UnsafeNodeComponent.ts │ │ │ ├── UpdateManager.ts │ │ │ ├── UserPresence.ts │ │ │ ├── WebhookQueue.ts │ │ │ ├── WidgetRepository.ts │ │ │ ├── attachEarlyEndpoints.ts │ │ │ ├── backupSqliteDatabase.ts │ │ │ ├── checksumFile.ts │ │ │ ├── config.ts │ │ │ ├── configCore.ts │ │ │ ├── configCoreFileFormats-ti.ts │ │ │ ├── configCoreFileFormats.ts │ │ │ ├── configureMinIOExternalStorage.ts │ │ │ ├── configureOpenAIAssistantV1.ts │ │ │ ├── cookieUtils.ts │ │ │ ├── coreCreator.ts │ │ │ ├── coreLogins.ts │ │ │ ├── createSavedDoc.ts │ │ │ ├── dbUtils.ts │ │ │ ├── describeDocActions.ts │ │ │ ├── docUtils.d.ts │ │ │ ├── docUtils.js │ │ │ ├── expressWrap.ts │ │ │ ├── extractOrg.ts │ │ │ ├── filterUtils.ts │ │ │ ├── gristSessions.ts │ │ │ ├── gristSettings.ts │ │ │ ├── guessExt.ts │ │ │ ├── hashingUtils.ts │ │ │ ├── httpEncoding.ts │ │ │ ├── idUtils.ts │ │ │ ├── initialDocSql.ts │ │ │ ├── log.ts │ │ │ ├── loginSystemHelpers.ts │ │ │ ├── manifest.ts │ │ │ ├── middleware.ts │ │ │ ├── oidc/ │ │ │ │ └── Protections.ts │ │ │ ├── places.ts │ │ │ ├── reportTimeTaken.ts │ │ │ ├── requestUtils.ts │ │ │ ├── runSQLQuery.ts │ │ │ ├── sandboxUtil.ts │ │ │ ├── scim/ │ │ │ │ ├── index.ts │ │ │ │ └── v2/ │ │ │ │ ├── BaseController.ts │ │ │ │ ├── ScimGroupController.ts │ │ │ │ ├── ScimRoleController.ts │ │ │ │ ├── ScimTypes.ts │ │ │ │ ├── ScimUserController.ts │ │ │ │ ├── ScimUtils.ts │ │ │ │ ├── ScimV2Api.ts │ │ │ │ └── roles/ │ │ │ │ ├── SCIMMYRoleResource.ts │ │ │ │ └── SCIMMYRoleSchema.ts │ │ │ ├── selectBy.ts │ │ │ ├── sendAppPage.ts │ │ │ ├── serverUtils.ts │ │ │ ├── sessionUtils.ts │ │ │ ├── shortDesc.ts │ │ │ ├── shutdown.js │ │ │ ├── updateChecker.ts │ │ │ ├── uploads.ts │ │ │ └── workerExporter.ts │ │ ├── localization.ts │ │ ├── tsconfig.json │ │ └── utils/ │ │ ├── LogSanitizer.ts │ │ ├── gristify.ts │ │ ├── pruneActionHistory.ts │ │ ├── showAuditLogEvents.ts │ │ └── streams.ts │ └── tsconfig.json ├── buildtools/ │ ├── .grist-ee-version │ ├── build.sh │ ├── checkout-ext-directory.sh │ ├── fly-deploy.js │ ├── fly-template.env │ ├── fly-template.toml │ ├── genIconCSS.ts │ ├── generate_locale_list.js │ ├── generate_translation_keys.js │ ├── install_chrome_for_tests.sh │ ├── prepare_ee.sh │ ├── prepare_python.sh │ ├── sanitize_translations.js │ ├── tsconfig-base-ext.json │ ├── tsconfig-base.json │ ├── update_schema.sh │ ├── update_type_info.sh │ ├── webpack.api.config.js │ ├── webpack.check.js │ └── webpack.config.js ├── crowdin.yml ├── docker-compose-examples/ │ ├── grist-local-testing/ │ │ ├── README.md │ │ └── docker-compose.yml │ ├── grist-traefik-basic-auth/ │ │ ├── README.md │ │ ├── configs/ │ │ │ ├── traefik-config.yml │ │ │ └── traefik-dynamic-config.yml │ │ └── docker-compose.yml │ ├── grist-traefik-oidc-auth/ │ │ ├── README.md │ │ ├── configs/ │ │ │ ├── authelia/ │ │ │ │ ├── configuration.yml │ │ │ │ └── users_database.yml │ │ │ └── traefik/ │ │ │ └── config.yml │ │ ├── docker-compose.yml │ │ ├── env-template │ │ ├── generateSecureSecrets.sh │ │ └── secrets_template/ │ │ ├── GRIST_CLIENT_SECRET_DIGEST │ │ ├── HMAC_SECRET │ │ ├── JWT_SECRET │ │ ├── SESSION_SECRET │ │ ├── STORAGE_ENCRYPTION_KEY │ │ └── certs/ │ │ └── private.pem │ ├── grist-with-keycloak-postgres-redis-minio/ │ │ ├── README.md │ │ └── docker-compose.yml │ └── grist-with-postgres-redis-minio/ │ ├── README.md │ └── docker-compose.yml ├── documentation/ │ ├── database.md │ ├── develop.md │ ├── disposal.md │ ├── grainjs.md │ ├── grist-data-format.md │ ├── images/ │ │ └── BDD.drawio │ ├── migrations.md │ ├── overview.md │ ├── translations.md │ └── urls.md ├── eslint.config.js ├── package.json ├── plugins/ │ └── core/ │ └── manifest.yml ├── publiccode.yml ├── sandbox/ │ ├── MANIFEST.in │ ├── bundle_as_wheel.sh │ ├── docker/ │ │ ├── Dockerfile │ │ └── Makefile │ ├── docker_entrypoint.sh │ ├── gen_js_schema.py │ ├── grist/ │ │ ├── acl.py │ │ ├── action_obj.py │ │ ├── action_summary.py │ │ ├── actions.py │ │ ├── attribute_recorder.py │ │ ├── autocomplete_context.py │ │ ├── codebuilder.py │ │ ├── column.py │ │ ├── csv_patch.py │ │ ├── depend.py │ │ ├── docactions.py │ │ ├── docmodel.py │ │ ├── dropdown_condition.py │ │ ├── engine.py │ │ ├── fake_std_streams.py │ │ ├── formula_prompt.py │ │ ├── friendly_errors.py │ │ ├── functions/ │ │ │ ├── __init__.py │ │ │ ├── date.py │ │ │ ├── info.py │ │ │ ├── logical.py │ │ │ ├── lookup.py │ │ │ ├── math.py │ │ │ ├── prevnext.py │ │ │ ├── schedule.py │ │ │ ├── stats.py │ │ │ ├── test_schedule.py │ │ │ ├── text.py │ │ │ └── unimplemented.py │ │ ├── gencode.py │ │ ├── grist.py │ │ ├── identifiers.py │ │ ├── import_actions.py │ │ ├── imports/ │ │ │ ├── __init__.py │ │ │ ├── fixtures/ │ │ │ │ ├── nyc_schools_progress_report_ec_2013.xlsx │ │ │ │ ├── strange_dates.xlsx │ │ │ │ ├── test_boolean.xlsx │ │ │ │ ├── test_empty_rows.xlsx │ │ │ │ ├── test_encoding_utf8.csv │ │ │ │ ├── test_excel.xlsx │ │ │ │ ├── test_excel_numeric_gs.xlsx │ │ │ │ ├── test_excel_types.csv │ │ │ │ ├── test_excel_types.xlsx │ │ │ │ ├── test_falsy_cells.xlsx │ │ │ │ ├── test_headers_with_none_cell.xlsx │ │ │ │ ├── test_import_csv.csv │ │ │ │ ├── test_invalid_dimensions.xlsx │ │ │ │ ├── test_isdigit.csv │ │ │ │ ├── test_long_cell.csv │ │ │ │ └── test_single_merged_cell.xlsx │ │ │ ├── import_csv.py │ │ │ ├── import_csv_test.py │ │ │ ├── import_json.py │ │ │ ├── import_json_test.py │ │ │ ├── import_utils.py │ │ │ ├── import_xls.py │ │ │ ├── import_xls_test.py │ │ │ ├── register.py │ │ │ └── test_imports.py │ │ ├── lookup.py │ │ ├── main.py │ │ ├── match_counter.py │ │ ├── migrations.py │ │ ├── moment.py │ │ ├── objtypes.py │ │ ├── parse_data.py │ │ ├── predicate_formula.py │ │ ├── records.py │ │ ├── relabeling.py │ │ ├── relation.py │ │ ├── reverse_references.py │ │ ├── runtests.py │ │ ├── sandbox.py │ │ ├── schema.py │ │ ├── sort_key.py │ │ ├── sort_specs.py │ │ ├── summary.py │ │ ├── table.py │ │ ├── table_data_set.py │ │ ├── test_acl_formula.py │ │ ├── test_acl_renames.py │ │ ├── test_actions.py │ │ ├── test_codebuilder.py │ │ ├── test_column_actions.py │ │ ├── test_completion.py │ │ ├── test_date_types.py │ │ ├── test_default_formulas.py │ │ ├── test_depend.py │ │ ├── test_derived.py │ │ ├── test_display_cols.py │ │ ├── test_docmodel.py │ │ ├── test_dropdown_condition.py │ │ ├── test_dropdown_condition_renames.py │ │ ├── test_engine.py │ │ ├── test_find_col.py │ │ ├── test_formula_error.py │ │ ├── test_formula_prompt.py │ │ ├── test_formula_undo.py │ │ ├── test_functions.py │ │ ├── test_gencode.py │ │ ├── test_import_actions.py │ │ ├── test_lookup_find.py │ │ ├── test_lookup_perf.py │ │ ├── test_lookup_sort.py │ │ ├── test_lookups.py │ │ ├── test_match_counter.py │ │ ├── test_migrations.py │ │ ├── test_moment.py │ │ ├── test_objtypes.py │ │ ├── test_predicate_formula.py │ │ ├── test_prevnext.py │ │ ├── test_record_func.py │ │ ├── test_recordlist.py │ │ ├── test_reflist_rel.py │ │ ├── test_relabeling.py │ │ ├── test_renames.py │ │ ├── test_renames2.py │ │ ├── test_replace_table_data.py │ │ ├── test_replay.py │ │ ├── test_requests.py │ │ ├── test_rules.py │ │ ├── test_rules_grid.py │ │ ├── test_side_effects.py │ │ ├── test_sort_key.py │ │ ├── test_sort_spec.py │ │ ├── test_summary.py │ │ ├── test_summary2.py │ │ ├── test_summary_choicelist.py │ │ ├── test_summary_undo.py │ │ ├── test_table_actions.py │ │ ├── test_table_data_set.py │ │ ├── test_temp_rowids.py │ │ ├── test_textbuilder.py │ │ ├── test_treeview.py │ │ ├── test_trigger_expression.py │ │ ├── test_trigger_formulas.py │ │ ├── test_twoway_refs.py │ │ ├── test_twowaymap.py │ │ ├── test_types.py │ │ ├── test_undo.py │ │ ├── test_urllib_patch.py │ │ ├── test_user.py │ │ ├── test_useractions.py │ │ ├── testsamples.py │ │ ├── testscript.json │ │ ├── testutil.py │ │ ├── textbuilder.py │ │ ├── timing.py │ │ ├── treeview.py │ │ ├── trigger_expression.py │ │ ├── twowaymap.py │ │ ├── tzdata.data │ │ ├── urllib_patch.py │ │ ├── user.py │ │ ├── useractions.py │ │ ├── usercode.py │ │ ├── usertypes.py │ │ └── xmlrunner.py │ ├── gvisor/ │ │ ├── get_checkpoint_path.sh │ │ ├── run.py │ │ └── update_engine_checkpoint.sh │ ├── install_tz.js │ ├── pyodide/ │ │ ├── Makefile │ │ ├── README.md │ │ ├── build_packages.sh │ │ ├── package.json │ │ ├── package_filenames.json │ │ ├── packages.js │ │ ├── pipe.js │ │ ├── preparePackages.js │ │ └── setup.sh │ ├── requirements.in │ ├── requirements.txt │ ├── run.sh │ ├── setup.py │ ├── supervisor.mjs │ └── watch.sh ├── static/ │ ├── apiconsole.html │ ├── app.html │ ├── custom-widget.html │ ├── custom.css │ ├── error.html │ ├── form.html │ ├── icons/ │ │ ├── grist.icns │ │ ├── gristdoc.icns │ │ ├── icons.css │ │ └── locales/ │ │ └── LICENSE │ ├── index.html │ ├── locales/ │ │ ├── ar.client.json │ │ ├── ar.server.json │ │ ├── bci.client.json │ │ ├── bci.server.json │ │ ├── bg.client.json │ │ ├── bg.server.json │ │ ├── ca.client.json │ │ ├── ca.server.json │ │ ├── cs.client.json │ │ ├── cs.server.json │ │ ├── de.client.json │ │ ├── de.server.json │ │ ├── el.client.json │ │ ├── el.server.json │ │ ├── en.client.json │ │ ├── en.server.json │ │ ├── en_GB.client.json │ │ ├── en_GB.server.json │ │ ├── es.client.json │ │ ├── es.server.json │ │ ├── eu.client.json │ │ ├── eu.server.json │ │ ├── fa.client.json │ │ ├── fa.server.json │ │ ├── fi.client.json │ │ ├── fi.server.json │ │ ├── fr.client.json │ │ ├── fr.server.json │ │ ├── hu.client.json │ │ ├── hu.server.json │ │ ├── id.client.json │ │ ├── id.server.json │ │ ├── ig.client.json │ │ ├── ig.server.json │ │ ├── it.client.json │ │ ├── it.server.json │ │ ├── ja.client.json │ │ ├── ja.server.json │ │ ├── ko.client.json │ │ ├── ko.server.json │ │ ├── nb_NO.client.json │ │ ├── nb_NO.server.json │ │ ├── nl.client.json │ │ ├── nl.server.json │ │ ├── pl.client.json │ │ ├── pl.server.json │ │ ├── pt.client.json │ │ ├── pt.server.json │ │ ├── pt_BR.client.json │ │ ├── pt_BR.server.json │ │ ├── ro.client.json │ │ ├── ro.server.json │ │ ├── ru.client.json │ │ ├── ru.server.json │ │ ├── sk.client.json │ │ ├── sk.server.json │ │ ├── sl.client.json │ │ ├── sl.server.json │ │ ├── sv.client.json │ │ ├── sv.server.json │ │ ├── ta.client.json │ │ ├── ta.server.json │ │ ├── th.client.json │ │ ├── th.server.json │ │ ├── tr.client.json │ │ ├── tr.server.json │ │ ├── uk.client.json │ │ ├── uk.server.json │ │ ├── ur.client.json │ │ ├── ur.server.json │ │ ├── vi.client.json │ │ ├── vi.server.json │ │ ├── zh_Hans.client.json │ │ ├── zh_Hans.server.json │ │ ├── zh_Hant.client.json │ │ ├── zh_Hant.server.json │ │ ├── zun.client.json │ │ └── zun.server.json │ ├── message.html │ ├── swagger-ui-dark.css │ ├── test.html │ └── testWebdriverJQuery.html ├── stubs/ │ └── app/ │ ├── client/ │ │ ├── components/ │ │ │ └── Banners.ts │ │ ├── ui/ │ │ │ ├── ActivationPage.ts │ │ │ ├── AdminControls.ts │ │ │ ├── BillingPage.ts │ │ │ ├── ChangePasswordDialog.ts │ │ │ ├── CustomThemes.ts │ │ │ ├── DeleteAccountDialog.ts │ │ │ ├── HomeImports.ts │ │ │ ├── MFAConfig.ts │ │ │ ├── NewDocMethods.ts │ │ │ ├── Notifications.ts │ │ │ └── ProductUpgrades.ts │ │ └── widgets/ │ │ └── AssistantPopup.ts │ ├── common/ │ │ └── version.ts │ ├── server/ │ │ ├── declarations.d.ts │ │ ├── lib/ │ │ │ ├── create.ts │ │ │ ├── globalConfig.ts │ │ │ └── loginSystems.ts │ │ ├── prometheus-exporter.ts │ │ └── server.ts │ └── tsconfig.json ├── test/ │ ├── assistant/ │ │ ├── data/ │ │ │ └── formula-dataset-index.csv │ │ └── v1/ │ │ ├── runCompletion.js │ │ └── runCompletion_impl.ts │ ├── chai-as-promised.js │ ├── client/ │ │ ├── clientUtil.js │ │ ├── components/ │ │ │ ├── Layout.js │ │ │ ├── WidgetFrame.ts │ │ │ ├── commands.js │ │ │ └── sampleLayout.js │ │ ├── lib/ │ │ │ ├── ACIndex.ts │ │ │ ├── Delay.js │ │ │ ├── DocSchemaImport.ts │ │ │ ├── ImportSourceElement.ts │ │ │ ├── ObservableMap.js │ │ │ ├── ObservableSet.js │ │ │ ├── PluginApi.ts │ │ │ ├── SafeBrowser.ts │ │ │ ├── Signal.ts │ │ │ ├── UrlState.ts │ │ │ ├── chartUtil.ts │ │ │ ├── dispose.js │ │ │ ├── dom.js │ │ │ ├── domAsync.ts │ │ │ ├── koArray.js │ │ │ ├── koArrayWrap.ts │ │ │ ├── koDom.js │ │ │ ├── koDomScrolly.js │ │ │ ├── koForm.js │ │ │ ├── koUtil.js │ │ │ ├── localStorageObs.ts │ │ │ ├── localization.ts │ │ │ ├── nameUtils.ts │ │ │ ├── sanitizeUrl.ts │ │ │ ├── sortUtil.ts │ │ │ ├── textUtils.ts │ │ │ ├── timeUtils.ts │ │ │ └── urlUtils.ts │ │ ├── models/ │ │ │ ├── ColumnFilter.ts │ │ │ ├── TreeModel.ts │ │ │ ├── gristUrlState.ts │ │ │ ├── modelUtil.js │ │ │ ├── rowset.js │ │ │ └── rowuid.js │ │ ├── shortcuts/ │ │ │ ├── excel.js │ │ │ └── gsMac.js │ │ ├── ui/ │ │ │ ├── DocumentSettings.ts │ │ │ ├── RelativeDatesOptions.ts │ │ │ └── UserImage.ts │ │ └── ui2018/ │ │ └── cssVars.ts │ ├── client-harness/ │ │ └── client.js │ ├── common/ │ │ ├── ACLPermissions.ts │ │ ├── AsyncCreate.ts │ │ ├── BigInt.ts │ │ ├── BinaryIndexedTree.js │ │ ├── ChoiceListParser.ts │ │ ├── CircularArray.js │ │ ├── ColumnFilterFunc.ts │ │ ├── DocActions.ts │ │ ├── DocSchemaImport.ts │ │ ├── InactivityTimer.ts │ │ ├── Interval.ts │ │ ├── KeyedMutex.ts │ │ ├── MemBuffer.js │ │ ├── NumberFormat.ts │ │ ├── NumberParse.ts │ │ ├── PluginInstance.ts │ │ ├── RecentItems.js │ │ ├── RefCountMap.ts │ │ ├── RelativeDates.ts │ │ ├── SortFunc.ts │ │ ├── StringUnion.ts │ │ ├── TableData.ts │ │ ├── Telemetry.ts │ │ ├── ThemePrefs.ts │ │ ├── ValueFormatter.ts │ │ ├── ValueGuesser.ts │ │ ├── airtable/ │ │ │ ├── AirtableAPI.ts │ │ │ ├── AirtableDataImporter.ts │ │ │ └── AirtableSchemaImporter.ts │ │ ├── arraySplice.js │ │ ├── csvFormat.ts │ │ ├── getTableTitle.ts │ │ ├── gristUrls.ts │ │ ├── gutil.js │ │ ├── gutil2.ts │ │ ├── marshal.js │ │ ├── parseDate.ts │ │ ├── promises.js │ │ ├── roles.ts │ │ ├── serializeTiming.js │ │ ├── sortTiming.js │ │ ├── timeFormat.js │ │ └── tsvFormat.ts │ ├── declarations.d.ts │ ├── deployment/ │ │ ├── ActionLog.ts │ │ ├── ChoiceList.ts │ │ ├── DuplicateDocument.ts │ │ ├── Fork.ts │ │ ├── HomeIntro.ts │ │ ├── Pages.ts │ │ ├── README.md │ │ ├── ReferenceColumns.ts │ │ ├── ReferenceList.ts │ │ └── Smoke.ts │ ├── fixtures/ │ │ ├── docs/ │ │ │ ├── ACL-Test.grist │ │ │ ├── ActiveDoc-sqlite.grist │ │ │ ├── AllColumns.grist │ │ │ ├── ApiDataRecordsTest.grist │ │ │ ├── AttachmentsJsonMigration.grist │ │ │ ├── BadRules.grist │ │ │ ├── BlobMigrationV1.grist │ │ │ ├── BlobMigrationV16.grist │ │ │ ├── BlobMigrationV17.grist │ │ │ ├── BlobMigrationV2.grist │ │ │ ├── BlobMigrationV3.grist │ │ │ ├── BlobMigrationV4.grist │ │ │ ├── BlobMigrationV5.grist │ │ │ ├── BlobMigrationV6.grist │ │ │ ├── BlobMigrationV7.grist │ │ │ ├── BlobMigrationV8.grist │ │ │ ├── BlobMigrationV9.grist │ │ │ ├── CCTransactions.grist │ │ │ ├── CC_Statement.grist │ │ │ ├── CC_Summaries-v2.grist │ │ │ ├── CC_Summaries-v6.grist │ │ │ ├── CC_Summaries.grist │ │ │ ├── CardView.grist │ │ │ ├── ChartData.grist │ │ │ ├── Class Enrollment.grist │ │ │ ├── Comments_44.grist │ │ │ ├── CopyOptions.grist │ │ │ ├── CopyPaste.grist │ │ │ ├── CopyPaste2.grist │ │ │ ├── Countries-Print.grist │ │ │ ├── Covid-19.grist │ │ │ ├── Currencies.grist │ │ │ ├── CursorWithRefLists1.grist │ │ │ ├── CustomWidget.grist │ │ │ ├── DefaultValuesV5.grist │ │ │ ├── DefaultValuesV6.grist │ │ │ ├── DefaultValuesV7.grist │ │ │ ├── DefaultValuesV8.grist │ │ │ ├── DefaultValuesV9.grist │ │ │ ├── DeleteColumnsUndo.grist │ │ │ ├── DownmigrateTest.grist │ │ │ ├── DropdownCondition.grist │ │ │ ├── Excel.grist │ │ │ ├── ExemptFromFilterBug.grist │ │ │ ├── Exports.grist │ │ │ ├── ExternalAttachmentsInvalidStoreId.grist │ │ │ ├── Favorite_Films.grist │ │ │ ├── Favorite_Films_Raw.grist │ │ │ ├── Favorite_Films_With_Linked_Ref.grist │ │ │ ├── FetchSelectedOptions.grist │ │ │ ├── FieldSettings.grist │ │ │ ├── FilmsWithImages.grist │ │ │ ├── FilterByComplexCellValues.grist │ │ │ ├── FilterLinkChain.grist │ │ │ ├── FilterTest.grist │ │ │ ├── Grist Basics.grist │ │ │ ├── GristNewUserInfo.grist │ │ │ ├── Hello.grist │ │ │ ├── Hooks-v37.grist │ │ │ ├── ImportReferences.grist │ │ │ ├── InvalidValues.grist │ │ │ ├── Investment Research (smaller).grist │ │ │ ├── Investment Research.grist │ │ │ ├── Landlord.grist │ │ │ ├── LastPosition.grist │ │ │ ├── LinkChain.grist │ │ │ ├── LongList.grist │ │ │ ├── ManyRefs.grist │ │ │ ├── Memos-v34.grist │ │ │ ├── NumericFormatting.grist │ │ │ ├── Pages-v19.grist │ │ │ ├── Pages.grist │ │ │ ├── PasteParsing.grist │ │ │ ├── RawSummaryTables.grist │ │ │ ├── Ref-AC-Test.grist │ │ │ ├── Ref-List-AC-Test.grist │ │ │ ├── RemoveTransformColumns.grist │ │ │ ├── SchoolsSample.grist │ │ │ ├── SelectByRefList.grist │ │ │ ├── SelectBySummary.grist │ │ │ ├── SelectBySummaryRef.grist │ │ │ ├── SelectionSummary.grist │ │ │ ├── ShiftSelection.grist │ │ │ ├── SortDates.grist │ │ │ ├── SortFilterIconTest.grist │ │ │ ├── SummarizeByRef.grist │ │ │ ├── SummaryRulesBug.grist │ │ │ ├── SummaryTableFormula.grist │ │ │ ├── TabBar.grist │ │ │ ├── Teams.grist │ │ │ ├── TypeConversions.grist │ │ │ ├── TypeEncoding.grist │ │ │ ├── Widgets.grist │ │ │ ├── World-v0.grist │ │ │ ├── World-v1.grist │ │ │ ├── World-v10.grist │ │ │ ├── World-v11.grist │ │ │ ├── World-v12.grist │ │ │ ├── World-v13.grist │ │ │ ├── World-v14.grist │ │ │ ├── World-v15.grist │ │ │ ├── World-v18.grist │ │ │ ├── World-v20.grist │ │ │ ├── World-v24.grist │ │ │ ├── World-v25.grist │ │ │ ├── World-v3.grist │ │ │ ├── World-v33.grist │ │ │ ├── World-v39.grist │ │ │ ├── World-v8.grist │ │ │ ├── World.grist │ │ │ ├── WorldSQLDB.grist │ │ │ ├── WorldUndo.grist │ │ │ ├── doctour.grist │ │ │ ├── selectBy.grist │ │ │ └── video/ │ │ │ ├── ACME Orders.grist │ │ │ ├── Afterschool Program.grist │ │ │ ├── Candidates.grist │ │ │ ├── Employees HomePage.grist │ │ │ ├── Employees.grist │ │ │ ├── Leases.grist │ │ │ └── Lightweight CRM.grist │ │ ├── export-csv/ │ │ │ ├── CCTransactions-DBA-desc.csv │ │ │ ├── CCTransactions.csv │ │ │ ├── choice.csv │ │ │ ├── date.csv │ │ │ ├── datetime.csv │ │ │ ├── field-options.csv │ │ │ ├── filtered-ref-list.csv │ │ │ ├── filters-manual.csv │ │ │ ├── filters-saved.csv │ │ │ ├── hidden-text.csv │ │ │ ├── integer.csv │ │ │ ├── many-rows.csv │ │ │ ├── numeric.csv │ │ │ ├── order-color-desc.csv │ │ │ ├── order-color-manual.csv │ │ │ ├── order-color-place.csv │ │ │ ├── order-manual.csv │ │ │ ├── reference.csv │ │ │ ├── text.csv │ │ │ └── toggle.csv │ │ ├── export-dsv/ │ │ │ ├── CCTransactions.dsv │ │ │ └── text.dsv │ │ ├── export-tsv/ │ │ │ ├── CCTransactions.tsv │ │ │ └── text.tsv │ │ ├── export-xlsx/ │ │ │ ├── CC_Statement.xlsx │ │ │ ├── CC_Summaries.xlsx │ │ │ ├── Currencies.xlsx │ │ │ ├── Excel.xlsx │ │ │ ├── Exports.xlsx │ │ │ └── World-v0.xlsx │ │ ├── plugins/ │ │ │ ├── .jshintrc │ │ │ ├── browserInstalledPlugins/ │ │ │ │ └── plugins/ │ │ │ │ ├── browser-GristDocAPI/ │ │ │ │ │ ├── main.js │ │ │ │ │ └── manifest.yml │ │ │ │ ├── custom-section/ │ │ │ │ │ ├── index-bis.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── main.js │ │ │ │ │ ├── manifest.yml │ │ │ │ │ ├── test-subscribe-api.html │ │ │ │ │ └── test-subscribe-api.js │ │ │ │ └── dummy-importer/ │ │ │ │ ├── index.html │ │ │ │ ├── main.js │ │ │ │ ├── manifest.yml │ │ │ │ ├── node/ │ │ │ │ │ └── main.js │ │ │ │ ├── sandbox/ │ │ │ │ │ └── main.py │ │ │ │ └── script.js │ │ │ ├── builtInPlugins/ │ │ │ │ └── plugins/ │ │ │ │ ├── 2/ │ │ │ │ │ └── manifest.yml │ │ │ │ ├── experimental-plugin/ │ │ │ │ │ ├── manifest.yml │ │ │ │ │ └── sandbox/ │ │ │ │ │ └── main.py │ │ │ │ ├── invalid-contrib-point/ │ │ │ │ │ └── manifest.yml │ │ │ │ ├── long-call/ │ │ │ │ │ ├── manifest.yml │ │ │ │ │ └── sandbox/ │ │ │ │ │ └── main.py │ │ │ │ ├── missing-component/ │ │ │ │ │ └── manifest.yml │ │ │ │ ├── missing-safePython/ │ │ │ │ │ └── manifest.yml │ │ │ │ ├── safePython-deactivate-fast/ │ │ │ │ │ ├── manifest.yml │ │ │ │ │ └── sandbox/ │ │ │ │ │ └── main.py │ │ │ │ ├── testing-function-call-plugin/ │ │ │ │ │ ├── backend.js │ │ │ │ │ ├── manifest.yml │ │ │ │ │ └── sandbox/ │ │ │ │ │ └── main.py │ │ │ │ ├── valid-file-parser/ │ │ │ │ │ ├── manifest.yml │ │ │ │ │ └── sandbox/ │ │ │ │ │ └── main.py │ │ │ │ ├── valid-import-source/ │ │ │ │ │ └── manifest.yml │ │ │ │ ├── wrong-json/ │ │ │ │ │ └── manifest.json │ │ │ │ └── wrong-yaml/ │ │ │ │ └── manifest.yml │ │ │ └── installedPlugins/ │ │ │ └── plugins/ │ │ │ ├── node-GristDocAPI/ │ │ │ │ ├── TestSubscribe.js │ │ │ │ ├── main.js │ │ │ │ └── manifest.yml │ │ │ ├── node-fail/ │ │ │ │ ├── main.js │ │ │ │ └── manifest.yml │ │ │ ├── node-mini-csv/ │ │ │ │ ├── manifest.yml │ │ │ │ └── nodebox/ │ │ │ │ └── main.js │ │ │ ├── node-wrong-message/ │ │ │ │ ├── main.js │ │ │ │ └── manifest.yml │ │ │ └── valid-import-source/ │ │ │ └── manifest.yml │ │ ├── projects/ │ │ │ ├── AddNewButton.ts │ │ │ ├── ApiKey.ts │ │ │ ├── ColorSelect.ts │ │ │ ├── ColumnFilterMenu.ts │ │ │ ├── DocMenu.ts │ │ │ ├── DocumentSettings.ts │ │ │ ├── ErrorNotify.ts │ │ │ ├── Icons.ts │ │ │ ├── Importer.ts │ │ │ ├── Mentions.ts │ │ │ ├── MultiSelector.ts │ │ │ ├── OnBoardingPopups.ts │ │ │ ├── PagePanels.ts │ │ │ ├── PageWidgetPicker.ts │ │ │ ├── PagesComponent.ts │ │ │ ├── ParseOptions.ts │ │ │ ├── ProgressIndicator.ts │ │ │ ├── Selects.ts │ │ │ ├── TreeViewComponent.ts │ │ │ ├── UI2018.ts │ │ │ ├── UserImage.ts │ │ │ ├── UserManager.ts │ │ │ ├── contextMenu.ts │ │ │ ├── editableLabel.ts │ │ │ ├── forms.ts │ │ │ ├── helpers/ │ │ │ │ ├── MockUserAPI.ts │ │ │ │ ├── Pages.ts │ │ │ │ ├── ParseOptionsData.ts │ │ │ │ ├── States.ts │ │ │ │ ├── gristStyles.ts │ │ │ │ ├── widgetPicker.ts │ │ │ │ └── withLocale.ts │ │ │ ├── modals.ts │ │ │ ├── mouseDrag.ts │ │ │ ├── resizeHandle.ts │ │ │ ├── searchDropdown.ts │ │ │ ├── sessionObs.ts │ │ │ ├── simpleList.ts │ │ │ ├── template.html │ │ │ ├── tokenfield.ts │ │ │ ├── tooltips.ts │ │ │ ├── transitions.ts │ │ │ ├── webpack-test-server.ts │ │ │ └── webpack.config.js │ │ ├── saml/ │ │ │ ├── keycloak.pem │ │ │ ├── saml-login │ │ │ ├── saml-logout │ │ │ ├── saml.crt │ │ │ └── saml.key │ │ ├── sites/ │ │ │ ├── config/ │ │ │ │ ├── index.html │ │ │ │ └── page.js │ │ │ ├── deferred-ready/ │ │ │ │ └── index.html │ │ │ ├── embed/ │ │ │ │ └── embed.html │ │ │ ├── fetchSelectedOptions/ │ │ │ │ ├── index.html │ │ │ │ └── page.js │ │ │ ├── filter/ │ │ │ │ ├── index.html │ │ │ │ └── page.js │ │ │ ├── hello/ │ │ │ │ └── index.html │ │ │ ├── paste/ │ │ │ │ └── paste.html │ │ │ ├── probe/ │ │ │ │ ├── index.html │ │ │ │ └── page.js │ │ │ ├── readout/ │ │ │ │ ├── index.html │ │ │ │ └── page.js │ │ │ ├── types/ │ │ │ │ ├── index.html │ │ │ │ └── page.js │ │ │ ├── types-raw-refs/ │ │ │ │ ├── index.html │ │ │ │ └── page.js │ │ │ ├── types-rest-api/ │ │ │ │ ├── index.html │ │ │ │ └── page.js │ │ │ └── zap/ │ │ │ ├── index.html │ │ │ └── page.js │ │ └── uploads/ │ │ ├── BooleanData.xlsx │ │ ├── CCTransactions.csv │ │ ├── ChartData-Sort_Test.csv │ │ ├── ChartData.csv │ │ ├── Cities.csv │ │ ├── CodeEditor.test.csv │ │ ├── ColumnFilterData_A.csv │ │ ├── ColumnFilterData_B.csv │ │ ├── DateTimeData.xlsx │ │ ├── EmptyDate.csv │ │ ├── FileUploadData.csv │ │ ├── ImportReferences-Tasks.csv │ │ ├── SchoolData.csv │ │ ├── StudentData.csv │ │ ├── UploadedData1.csv │ │ ├── UploadedData1Extended.csv │ │ ├── UploadedData2.csv │ │ ├── UploadedData2Extended.csv │ │ ├── UploadedData3.csv │ │ ├── UploadedDataEmpty.csv │ │ ├── World-v0.xlsx │ │ ├── World-v1.xlsx │ │ ├── cities.jgrist │ │ ├── cities_broken.jgrist │ │ ├── dirtyNames.json │ │ ├── empty_data.jgrist │ │ ├── empty_excel.xlsx │ │ ├── formatted_numbers.csv │ │ ├── homicide_rates.xlsx │ │ ├── htmlfile.html │ │ ├── mixed_dates.csv │ │ ├── name_references.csv │ │ ├── names.json │ │ ├── simple_array.json │ │ ├── spotifyGetSeveralAlbums.json │ │ ├── unicode_headers.csv │ │ ├── unicode_headers.xlsx │ │ └── video/ │ │ └── investment-data.xlsx │ ├── gen-server/ │ │ ├── ApiServer.ts │ │ ├── ApiServerAccess.ts │ │ ├── ApiServerBenchmark.ts │ │ ├── ApiServerBugs.ts │ │ ├── ApiSession.ts │ │ ├── AuthCaching.ts │ │ ├── SqliteSettings.ts │ │ ├── UpdateChecks.ts │ │ ├── apiUtils.ts │ │ ├── lib/ │ │ │ ├── DocApiForwarder.ts │ │ │ ├── DocPrefs.ts │ │ │ ├── DocWorkerMap.ts │ │ │ ├── HealthCheck.ts │ │ │ ├── HomeDBCaches.ts │ │ │ ├── HomeDBManager.ts │ │ │ ├── Housekeeper.ts │ │ │ ├── emails.ts │ │ │ ├── everyone.ts │ │ │ ├── homedb/ │ │ │ │ ├── GroupsManager.ts │ │ │ │ └── UsersManager.ts │ │ │ ├── limits.ts │ │ │ ├── listing.ts │ │ │ ├── mergedOrgs.ts │ │ │ ├── prefs.ts │ │ │ ├── previewer.ts │ │ │ ├── removedAt.ts │ │ │ ├── scrubUserFromOrg.ts │ │ │ ├── suspension.ts │ │ │ └── urlIds.ts │ │ ├── migrations.ts │ │ ├── seed.ts │ │ └── testUtils.ts │ ├── init-mocha-webdriver.js │ ├── nbrowser/ │ │ ├── AccessRules1.ts │ │ ├── AccessRules2.ts │ │ ├── AccessRules3.ts │ │ ├── AccessRules4.ts │ │ ├── AccessRulesAttrs.ts │ │ ├── AccessRulesIntro.ts │ │ ├── AccessRulesSchemaEdit.ts │ │ ├── AccessibilityModal.ts │ │ ├── ActionLog.ts │ │ ├── ActiveUserList.ts │ │ ├── AdminPanel.ts │ │ ├── AdminPanelTools.ts │ │ ├── AirtableImport.ts │ │ ├── ApiConsole.ts │ │ ├── AttachedCustomWidget.ts │ │ ├── AttachmentsLinking.ts │ │ ├── AttachmentsTransfer.ts │ │ ├── AttachmentsWidget.ts │ │ ├── AuthProvider.ts │ │ ├── AuthProviderGetGrist.ts │ │ ├── BehavioralPrompts.ts │ │ ├── Boot.ts │ │ ├── BundleActions.ts │ │ ├── CardView.ts │ │ ├── CellColor.ts │ │ ├── CellFormat.ts │ │ ├── ChartView1.ts │ │ ├── Choice.ts │ │ ├── ChoiceList.ts │ │ ├── ClientUnitTests.ntest.js │ │ ├── CodeEditor.ntest.js │ │ ├── ColumnFilterMenu.ts │ │ ├── ColumnFilterMenu2.ts │ │ ├── ColumnFilterMenu3.ts │ │ ├── ColumnOps.ntest.js │ │ ├── ColumnTransform.ts │ │ ├── Comments.ts │ │ ├── Comparison.ts │ │ ├── CopyPaste.ts │ │ ├── CopyPaste2.ntest.js │ │ ├── CopyPasteColumnOptions.ts │ │ ├── CopyPasteFiles.ts │ │ ├── CopyPasteLinked.ts │ │ ├── CopyWithHeaders.ts │ │ ├── CursorSaving.ts │ │ ├── CustomView.ts │ │ ├── CustomWidgets.ts │ │ ├── CustomWidgetsConfig.ts │ │ ├── DateEditor.ts │ │ ├── Dates.ntest.js │ │ ├── DeleteColumnsUndo.ts │ │ ├── DescriptionColumn.ts │ │ ├── DescriptionWidget.ts │ │ ├── DetailView.ntest.js │ │ ├── DetailView.ts │ │ ├── DocTour.ts │ │ ├── DocTutorial.ts │ │ ├── DocTypeConversion.ts │ │ ├── DocUsageTracking.ts │ │ ├── DropdownConditionEditor.ts │ │ ├── DuplicateDocument.ts │ │ ├── DuplicatePage.ts │ │ ├── Export.ntest.js │ │ ├── ExportSection.ts │ │ ├── Features.ts │ │ ├── FieldConfigTab.ntest.js │ │ ├── FieldEditor.ts │ │ ├── FieldSettings.ntest.js │ │ ├── FieldSettings2.ts │ │ ├── FillLinkedRecords.ntest.js │ │ ├── FillSelectionDown.ts │ │ ├── FilterLinkChain.ts │ │ ├── FilteringBugs.ts │ │ ├── Fork.ts │ │ ├── FormView1.ts │ │ ├── FormView2.ts │ │ ├── FormsUrlValues.ts │ │ ├── FormulaAutocomplete.ts │ │ ├── Formulas.ts │ │ ├── GridOptions.ntest.js │ │ ├── GridViewBugs.ts │ │ ├── GridViewNewColumnMenu.ts │ │ ├── GridViewNewColumnMenuDateHelpers.ts │ │ ├── GridViewNewColumnMenuUtils.ts │ │ ├── HeaderColor.ts │ │ ├── Health.ntest.js │ │ ├── HomeIntro.ts │ │ ├── HomeIntroWithoutPlaygound.ts │ │ ├── ImportReferences.ts │ │ ├── Importer.ts │ │ ├── Importer2.ts │ │ ├── LanguageSettings.ts │ │ ├── LazyLoad.ts │ │ ├── LeftPanel.ts │ │ ├── LinkingBidirectional.ts │ │ ├── LinkingErrors.ts │ │ ├── LinkingSelector.ts │ │ ├── Localization.ts │ │ ├── MultiColumn.ts │ │ ├── NewDocument.ntest.js │ │ ├── NumericEditor.ts │ │ ├── OnDemand.ts │ │ ├── Pages.ts │ │ ├── Printing.ts │ │ ├── Properties.ntest.js │ │ ├── ProposedChangesPage.ts │ │ ├── RawData.ts │ │ ├── RecordCards.ts │ │ ├── RecordLayout.ts │ │ ├── RefNumericChange.ts │ │ ├── RefTransforms.ts │ │ ├── ReferenceColumns.ts │ │ ├── ReferenceList.ts │ │ ├── RegionFocusSwitcher.ts │ │ ├── RemoveTransformColumns.ts │ │ ├── RightPanel.ts │ │ ├── RightPanelSelectBy.ts │ │ ├── RowHeights.ts │ │ ├── RowMenu.ts │ │ ├── SavePosition.ntest.js │ │ ├── Search.ts │ │ ├── Search2.ts │ │ ├── Search3.ts │ │ ├── SearchBar.ntest.ts │ │ ├── SectionFilter.ts │ │ ├── SelectBy.ts │ │ ├── SelectByRefList.ts │ │ ├── SelectByRightPanel.ts │ │ ├── SelectBySummary.ts │ │ ├── SelectBySummaryRef.ts │ │ ├── SelectionSummary.ts │ │ ├── ShiftSelection.ts │ │ ├── Smoke.ts │ │ ├── SortDates.ntest.js │ │ ├── SortEditSave.ntest.js │ │ ├── SortFilterSectionOptions.ts │ │ ├── SortPositions.ts │ │ ├── Summaries.ntest.js │ │ ├── SupportGrist.ts │ │ ├── TermsOfService.ts │ │ ├── TextEditor.ntest.js │ │ ├── Themes.ts │ │ ├── Timing.ts │ │ ├── ToggleColumns.ts │ │ ├── TokenField.ts │ │ ├── TwoWayReference.ts │ │ ├── TypeChange.ntest.js │ │ ├── UndoJumps.ntest.js │ │ ├── UploadLimits.ts │ │ ├── UserManager.ts │ │ ├── UserManager2.ts │ │ ├── VersionUpdateBanner.ts │ │ ├── ViewConfigTab.ntest.js │ │ ├── ViewLayout.ts │ │ ├── ViewLayoutCollapse.ts │ │ ├── ViewLayoutUtils.ts │ │ ├── Views.ntest.js │ │ ├── VisibleFieldsConfig.ts │ │ ├── WebhookOverflow.ts │ │ ├── WebhookPage.ts │ │ ├── aclTestUtils.ts │ │ ├── chartViewTestUtils.ts │ │ ├── customUtil.ts │ │ ├── disabledAt.ts │ │ ├── duplicateWidget.ts │ │ ├── elementUtils.ts │ │ ├── externalAttachmentsHelpers.ts │ │ ├── formTools.ts │ │ ├── gristUtil-nbrowser.js │ │ ├── gristUtils.ts │ │ ├── gristWebDriverUtils.ts │ │ ├── homeUtil.ts │ │ ├── importerTestUtils.ts │ │ ├── links.ts │ │ ├── saveViewSection.ts │ │ ├── testServer.ts │ │ ├── testUtils.ts │ │ ├── webdriverUtils.ts │ │ ├── webdriverjq-nbrowser.js │ │ └── webdriverjq.ntest.js │ ├── nbrowser_with_stubs/ │ │ ├── CreateTeamSite.ts │ │ └── CustomWidgets.ts │ ├── projects/ │ │ ├── AccountWidget.ts │ │ ├── ApiKey.ts │ │ ├── ColorSelect.ts │ │ ├── ColumnFilterMenu.ts │ │ ├── ColumnFilterMenu2.ts │ │ ├── DateRangeFilter.ts │ │ ├── DocMenu.ts │ │ ├── DocumentSettings.ts │ │ ├── Icons.ts │ │ ├── Mentions.ts │ │ ├── MultiSelector.ts │ │ ├── NotifyBar.ts │ │ ├── OnBoardingPopups.ts │ │ ├── PagePanels.ts │ │ ├── PageWidgetPicker.ts │ │ ├── PagesComponent.ts │ │ ├── RangeFilter.ts │ │ ├── TreeViewComponent.ts │ │ ├── UI2018.ts │ │ ├── UserManager.ts │ │ ├── contextMenu.ts │ │ ├── editableLabel.ts │ │ ├── errorPages.ts │ │ ├── filterUtils.ts │ │ ├── modals.ts │ │ ├── mouseDrag.ts │ │ ├── resizeHandle.ts │ │ ├── searchDropdown.ts │ │ ├── sessionObs.ts │ │ ├── simpleList.ts │ │ ├── testUtils.ts │ │ ├── tokenfield.ts │ │ ├── tooltips.ts │ │ └── transitions.ts │ ├── report-why-tests-hang.js │ ├── server/ │ │ ├── Comm.ts │ │ ├── PyMomentTest.ts │ │ ├── Sandbox.ts │ │ ├── customUtil.ts │ │ ├── docTools.ts │ │ ├── generateInitialDocSql.ts │ │ ├── gristClient.ts │ │ ├── lib/ │ │ │ ├── ACLFormula.ts │ │ │ ├── ACLRulesReader.ts │ │ │ ├── AccessTokens.ts │ │ │ ├── ActionHistory.ts │ │ │ ├── ActionHistoryMemory.ts │ │ │ ├── ActionSummary.ts │ │ │ ├── ActiveDoc.ts │ │ │ ├── ActiveDocImport.js │ │ │ ├── ActiveDocShutdown.ts │ │ │ ├── AppSettings.ts │ │ │ ├── Archive.ts │ │ │ ├── AttachmentFileManager.ts │ │ │ ├── AttachmentStoreProvider.ts │ │ │ ├── Authorizer.ts │ │ │ ├── BundleActions.ts │ │ │ ├── CommentAccess.ts │ │ │ ├── CommentAccess2.ts │ │ │ ├── ConfigBackendAPI.ts │ │ │ ├── DocSnapshots.ts │ │ │ ├── DocStorage.js │ │ │ ├── DocStorageManager.ts │ │ │ ├── DocStorageMigrations.ts │ │ │ ├── DocStorageQuery.ts │ │ │ ├── DocWorkerLoadTracker.ts │ │ │ ├── ExportsAccessRules.ts │ │ │ ├── ExternalStorageAttachmentStore.ts │ │ │ ├── FilesystemAttachmentStore.ts │ │ │ ├── GranularAccess.ts │ │ │ ├── GristJobs.ts │ │ │ ├── GristSockets.ts │ │ │ ├── HashUtil.ts │ │ │ ├── HostedMetadataManager.ts │ │ │ ├── HostedStorageManager.ts │ │ │ ├── ManyFetches.ts │ │ │ ├── MemoryPool.ts │ │ │ ├── MinIOExternalStorage.ts │ │ │ ├── OIDCConfig.ts │ │ │ ├── OnDemandActions.ts │ │ │ ├── OpenAIAssistantV1.ts │ │ │ ├── Proposals.ts │ │ │ ├── ProxyAgent.ts │ │ │ ├── PubSubCache.ts │ │ │ ├── PubSubManager.ts │ │ │ ├── RowAccess.ts │ │ │ ├── SQLiteDB.ts │ │ │ ├── SamlConfig.ts │ │ │ ├── Scim.ts │ │ │ ├── TableMetadataLoader.ts │ │ │ ├── Telemetry.ts │ │ │ ├── TestingHooks.ts │ │ │ ├── Throttle.ts │ │ │ ├── TimeQuery.ts │ │ │ ├── Triggers.ts │ │ │ ├── UnhandledErrors.ts │ │ │ ├── UserAttributes.ts │ │ │ ├── UserPresence.ts │ │ │ ├── Webhooks-Proxy.ts │ │ │ ├── checksumFile.ts │ │ │ ├── config.ts │ │ │ ├── configCore.ts │ │ │ ├── configCoreFileFormats.ts │ │ │ ├── docapi/ │ │ │ │ ├── DocApiAnonPlayground.ts │ │ │ │ ├── DocApiAttachments.ts │ │ │ │ ├── DocApiBugsAndFixes.ts │ │ │ │ ├── DocApiColumns.ts │ │ │ │ ├── DocApiCreation.ts │ │ │ │ ├── DocApiDocuments.ts │ │ │ │ ├── DocApiDownloads.ts │ │ │ │ ├── DocApiMisc.ts │ │ │ │ ├── DocApiOrgLimitFlags.ts │ │ │ │ ├── DocApiPermissions.ts │ │ │ │ ├── DocApiQueryParameters.ts │ │ │ │ ├── DocApiRecords.ts │ │ │ │ ├── DocApiReverseProxy.ts │ │ │ │ ├── DocApiSql.ts │ │ │ │ ├── DocApiTables.ts │ │ │ │ ├── DocApiWebhooks.ts │ │ │ │ └── helpers.ts │ │ │ ├── extractOrg.ts │ │ │ ├── helpers/ │ │ │ │ ├── PrepareDatabase.ts │ │ │ │ ├── PrepareFilesystemDirectoryForTests.ts │ │ │ │ ├── Signal.ts │ │ │ │ ├── TestProxyServer.ts │ │ │ │ └── TestServer.ts │ │ │ ├── idUtils.ts │ │ │ ├── requestUtils.ts │ │ │ ├── sandboxUtil.ts │ │ │ ├── serverUtils.js │ │ │ ├── serverUtils2.ts │ │ │ ├── shortDesc.js │ │ │ ├── updateChecker.ts │ │ │ └── uploads.ts │ │ ├── tcpForwarder.ts │ │ ├── testCleanup.ts │ │ ├── testUtils.ts │ │ ├── utils/ │ │ │ ├── CachedFetcher.ts │ │ │ ├── LogSanitizer.ts │ │ │ └── streams.ts │ │ └── wait.ts │ ├── setupPaths.js │ ├── split-tests.js │ ├── testUtils.ts │ ├── test_env.sh │ ├── test_under_docker.sh │ ├── timings/ │ │ ├── nbrowser.txt │ │ └── server.txt │ ├── tsconfig.json │ ├── upgradeDocument │ ├── upgradeDocumentImpl.ts │ ├── utils.js │ └── xunit-file.js ├── tsconfig-ext.json ├── tsconfig-prod.json ├── tsconfig.eslint.json └── tsconfig.json