@harperfast/harper 5.2.0 → 5.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/copyDb.ts +40 -11
- package/bin/harper.ts +20 -51
- package/bin/help.ts +216 -0
- package/components/Application.ts +236 -46
- package/components/ApplicationScope.ts +26 -0
- package/components/EntryHandler.ts +410 -105
- package/components/RuntimeModuleTracker.ts +189 -0
- package/components/Scope.ts +68 -24
- package/components/componentLoader.ts +70 -16
- package/components/deployLifecycle.ts +119 -33
- package/components/deploymentRecorder.ts +102 -11
- package/components/mcp/tools/operations.ts +6 -0
- package/components/operations.js +8 -6
- package/config/configUtils.ts +78 -20
- package/config/harperConfigEnvVars.ts +114 -17
- package/config-root.schema.json +10 -0
- package/dataLayer/harperBridge/ResourceBridge.ts +26 -5
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +4 -4
- package/dataLayer/hdbInfoController.ts +8 -0
- package/dataLayer/schemaDescribe.ts +2 -1
- package/dist/bin/copyDb.js +33 -9
- package/dist/bin/copyDb.js.map +1 -1
- package/dist/bin/harper.d.ts +6 -0
- package/dist/bin/harper.js +18 -50
- package/dist/bin/harper.js.map +1 -1
- package/dist/bin/help.d.ts +8 -0
- package/dist/bin/help.js +192 -0
- package/dist/bin/help.js.map +1 -0
- package/dist/components/Application.d.ts +16 -1
- package/dist/components/Application.js +210 -38
- package/dist/components/Application.js.map +1 -1
- package/dist/components/ApplicationScope.d.ts +7 -0
- package/dist/components/ApplicationScope.js +22 -0
- package/dist/components/ApplicationScope.js.map +1 -1
- package/dist/components/EntryHandler.d.ts +4 -4
- package/dist/components/EntryHandler.js +386 -95
- package/dist/components/EntryHandler.js.map +1 -1
- package/dist/components/RuntimeModuleTracker.d.ts +11 -0
- package/dist/components/RuntimeModuleTracker.js +189 -0
- package/dist/components/RuntimeModuleTracker.js.map +1 -0
- package/dist/components/Scope.d.ts +1 -0
- package/dist/components/Scope.js +69 -22
- package/dist/components/Scope.js.map +1 -1
- package/dist/components/componentLoader.js +69 -10
- package/dist/components/componentLoader.js.map +1 -1
- package/dist/components/deployLifecycle.d.ts +6 -2
- package/dist/components/deployLifecycle.js +109 -31
- package/dist/components/deployLifecycle.js.map +1 -1
- package/dist/components/deploymentRecorder.d.ts +6 -0
- package/dist/components/deploymentRecorder.js +94 -12
- package/dist/components/deploymentRecorder.js.map +1 -1
- package/dist/components/mcp/tools/operations.js +6 -0
- package/dist/components/mcp/tools/operations.js.map +1 -1
- package/dist/components/operations.js +8 -6
- package/dist/components/operations.js.map +1 -1
- package/dist/config/configUtils.d.ts +6 -0
- package/dist/config/configUtils.js +78 -18
- package/dist/config/configUtils.js.map +1 -1
- package/dist/config/harperConfigEnvVars.js +108 -16
- package/dist/config/harperConfigEnvVars.js.map +1 -1
- package/dist/dataLayer/harperBridge/ResourceBridge.js +12 -5
- package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +4 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js.map +1 -1
- package/dist/dataLayer/hdbInfoController.js +4 -0
- package/dist/dataLayer/hdbInfoController.js.map +1 -1
- package/dist/dataLayer/schemaDescribe.js +2 -1
- package/dist/dataLayer/schemaDescribe.js.map +1 -1
- package/dist/resources/DatabaseTransaction.d.ts +57 -0
- package/dist/resources/DatabaseTransaction.js +284 -104
- package/dist/resources/DatabaseTransaction.js.map +1 -1
- package/dist/resources/ResourceInterface.d.ts +8 -2
- package/dist/resources/ResourceInterface.js.map +1 -1
- package/dist/resources/Resources.js +22 -4
- package/dist/resources/Resources.js.map +1 -1
- package/dist/resources/Table.d.ts +8 -6
- package/dist/resources/Table.js +158 -31
- package/dist/resources/Table.js.map +1 -1
- package/dist/resources/analytics/write.js +6 -6
- package/dist/resources/analytics/write.js.map +1 -1
- package/dist/resources/auditStore.js +27 -1
- package/dist/resources/auditStore.js.map +1 -1
- package/dist/resources/blob.d.ts +0 -1
- package/dist/resources/blob.js +15 -7
- package/dist/resources/blob.js.map +1 -1
- package/dist/resources/databases.d.ts +22 -5
- package/dist/resources/databases.js +118 -9
- package/dist/resources/databases.js.map +1 -1
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +15 -2
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +128 -39
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
- package/dist/resources/jsResource.d.ts +4 -26
- package/dist/resources/jsResource.js +5 -59
- package/dist/resources/jsResource.js.map +1 -1
- package/dist/resources/models/Models.d.ts +11 -1
- package/dist/resources/models/Models.js +10 -1
- package/dist/resources/models/Models.js.map +1 -1
- package/dist/resources/models/backendRegistry.d.ts +9 -0
- package/dist/resources/models/backendRegistry.js +10 -0
- package/dist/resources/models/backendRegistry.js.map +1 -1
- package/dist/resources/models/openaiStream.d.ts +16 -1
- package/dist/resources/models/openaiStream.js +113 -21
- package/dist/resources/models/openaiStream.js.map +1 -1
- package/dist/resources/models/v1/chatCompletions.d.ts +54 -0
- package/dist/resources/models/v1/chatCompletions.js +115 -0
- package/dist/resources/models/v1/chatCompletions.js.map +1 -0
- package/dist/resources/models/v1/embeddings.d.ts +11 -0
- package/dist/resources/models/v1/embeddings.js +71 -0
- package/dist/resources/models/v1/embeddings.js.map +1 -0
- package/dist/resources/models/v1/errors.d.ts +54 -0
- package/dist/resources/models/v1/errors.js +130 -0
- package/dist/resources/models/v1/errors.js.map +1 -0
- package/dist/resources/models/v1/index.d.ts +36 -0
- package/dist/resources/models/v1/index.js +75 -0
- package/dist/resources/models/v1/index.js.map +1 -0
- package/dist/resources/models/v1/models.d.ts +26 -0
- package/dist/resources/models/v1/models.js +44 -0
- package/dist/resources/models/v1/models.js.map +1 -0
- package/dist/resources/models/v1/translation.d.ts +133 -0
- package/dist/resources/models/v1/translation.js +298 -0
- package/dist/resources/models/v1/translation.js.map +1 -0
- package/dist/resources/roles.d.ts +1 -1
- package/dist/resources/roles.js +54 -7
- package/dist/resources/roles.js.map +1 -1
- package/dist/resources/search.d.ts +1 -1
- package/dist/resources/search.js +7 -3
- package/dist/resources/search.js.map +1 -1
- package/dist/security/jsLoader.js +84 -33
- package/dist/security/jsLoader.js.map +1 -1
- package/dist/security/role.js +4 -0
- package/dist/security/role.js.map +1 -1
- package/dist/security/superUserGuard.d.ts +7 -0
- package/dist/security/superUserGuard.js +23 -0
- package/dist/security/superUserGuard.js.map +1 -0
- package/dist/security/tokenAuthentication.d.ts +0 -1
- package/dist/security/tokenAuthentication.js +6 -2
- package/dist/security/tokenAuthentication.js.map +1 -1
- package/dist/security/user.d.ts +6 -1
- package/dist/security/user.js +23 -1
- package/dist/security/user.js.map +1 -1
- package/dist/server/http.d.ts +23 -2
- package/dist/server/http.js +99 -12
- package/dist/server/http.js.map +1 -1
- package/dist/server/operationsServer.d.ts +0 -2
- package/dist/server/operationsServer.js.map +1 -1
- package/dist/server/serverHelpers/multipartParser.js +9 -0
- package/dist/server/serverHelpers/multipartParser.js.map +1 -1
- package/dist/server/serverHelpers/operationAuthorizationState.d.ts +2 -0
- package/dist/server/serverHelpers/operationAuthorizationState.js +13 -0
- package/dist/server/serverHelpers/operationAuthorizationState.js.map +1 -0
- package/dist/server/serverHelpers/registeredOperations.d.ts +3 -2
- package/dist/server/serverHelpers/registeredOperations.js +14 -13
- package/dist/server/serverHelpers/registeredOperations.js.map +1 -1
- package/dist/server/serverHelpers/serverHandlers.js +19 -3
- package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
- package/dist/server/serverHelpers/serverUtilities.d.ts +1 -1
- package/dist/server/serverHelpers/serverUtilities.js +10 -7
- package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
- package/dist/server/static.js +57 -18
- package/dist/server/static.js.map +1 -1
- package/dist/server/storageReclamation.d.ts +17 -0
- package/dist/server/storageReclamation.js +90 -6
- package/dist/server/storageReclamation.js.map +1 -1
- package/dist/server/threads/manageThreads.js +8 -0
- package/dist/server/threads/manageThreads.js.map +1 -1
- package/dist/server/threads/socketRouter.js +20 -0
- package/dist/server/threads/socketRouter.js.map +1 -1
- package/dist/server/threads/threadServer.js +12 -0
- package/dist/server/threads/threadServer.js.map +1 -1
- package/dist/sqlEngine/diff/differential.js +7 -3
- package/dist/sqlEngine/diff/differential.js.map +1 -1
- package/dist/sqlEngine/parser/normalizer.js +37 -9
- package/dist/sqlEngine/parser/normalizer.js.map +1 -1
- package/dist/sqlTranslator/index.js +6 -1
- package/dist/sqlTranslator/index.js.map +1 -1
- package/dist/upgrade/upgradePrompt.d.ts +2 -2
- package/dist/upgrade/upgradePrompt.js +22 -3
- package/dist/upgrade/upgradePrompt.js.map +1 -1
- package/dist/utility/environment/environmentManager.d.ts +11 -0
- package/dist/utility/environment/environmentManager.js +154 -0
- package/dist/utility/environment/environmentManager.js.map +1 -1
- package/dist/utility/errors/commonErrors.d.ts +1 -0
- package/dist/utility/errors/commonErrors.js +1 -0
- package/dist/utility/errors/commonErrors.js.map +1 -1
- package/dist/utility/hdbTerms.d.ts +2 -0
- package/dist/utility/hdbTerms.js +2 -0
- package/dist/utility/hdbTerms.js.map +1 -1
- package/dist/utility/install/installer.js +32 -0
- package/dist/utility/install/installer.js.map +1 -1
- package/dist/utility/lmdb/environmentUtility.js +2 -1
- package/dist/utility/lmdb/environmentUtility.js.map +1 -1
- package/dist/utility/logging/harper_logger.d.ts +7 -0
- package/dist/utility/logging/harper_logger.js +57 -24
- package/dist/utility/logging/harper_logger.js.map +1 -1
- package/npm-shrinkwrap.json +208 -198
- package/package.json +10 -8
- package/resources/DESIGN.md +1 -0
- package/resources/DatabaseTransaction.ts +313 -102
- package/resources/ResourceInterface.ts +8 -2
- package/resources/Resources.ts +22 -4
- package/resources/Table.ts +398 -259
- package/resources/analytics/write.ts +22 -20
- package/resources/auditStore.ts +32 -1
- package/resources/blob.ts +15 -8
- package/resources/databases.ts +123 -12
- package/resources/indexes/HierarchicalNavigableSmallWorld.ts +119 -45
- package/resources/jsResource.ts +5 -62
- package/resources/models/Models.ts +14 -1
- package/resources/models/backendRegistry.ts +10 -0
- package/resources/models/openaiStream.ts +131 -19
- package/resources/models/v1/chatCompletions.ts +128 -0
- package/resources/models/v1/embeddings.ts +70 -0
- package/resources/models/v1/errors.ts +141 -0
- package/resources/models/v1/index.ts +72 -0
- package/resources/models/v1/models.ts +53 -0
- package/resources/models/v1/translation.ts +362 -0
- package/resources/roles.ts +67 -7
- package/resources/search.ts +8 -3
- package/security/jsLoader.ts +84 -30
- package/security/role.ts +7 -0
- package/security/superUserGuard.ts +20 -0
- package/security/tokenAuthentication.ts +6 -3
- package/security/user.ts +26 -1
- package/server/DESIGN.md +45 -34
- package/server/http.ts +100 -13
- package/server/operationsServer.ts +0 -2
- package/server/serverHelpers/multipartParser.ts +9 -0
- package/server/serverHelpers/operationAuthorizationState.ts +11 -0
- package/server/serverHelpers/registeredOperations.ts +19 -15
- package/server/serverHelpers/serverHandlers.js +20 -3
- package/server/serverHelpers/serverUtilities.ts +10 -7
- package/server/static.ts +75 -20
- package/server/storageReclamation.ts +104 -8
- package/server/threads/manageThreads.js +8 -0
- package/server/threads/socketRouter.ts +20 -0
- package/server/threads/threadServer.js +11 -0
- package/sqlTranslator/index.ts +6 -1
- package/static/defaultConfig.yaml +2 -0
- package/studio/web/assets/{Chat-DoVWScmq.js → Chat-BMUjPklt.js} +5 -5
- package/studio/web/assets/{Chat-DoVWScmq.js.map → Chat-BMUjPklt.js.map} +1 -1
- package/studio/web/assets/{FloatingChat-UZ2NsUOZ.js → FloatingChat-Cbghuxe5.js} +5 -5
- package/studio/web/assets/{FloatingChat-UZ2NsUOZ.js.map → FloatingChat-Cbghuxe5.js.map} +1 -1
- package/studio/web/assets/{apiToken-BUI_04o7.js → apiToken-CkgTQAqc.js} +2 -2
- package/studio/web/assets/{apiToken-BUI_04o7.js.map → apiToken-CkgTQAqc.js.map} +1 -1
- package/studio/web/assets/{applications-D03NA7wW.js → applications-WvF4NOTN.js} +13 -13
- package/studio/web/assets/applications-WvF4NOTN.js.map +1 -0
- package/studio/web/assets/chevron-right-anDJCGlp.js +2 -0
- package/studio/web/assets/chevron-right-anDJCGlp.js.map +1 -0
- package/studio/web/assets/index-CDeqVx71.css +1 -0
- package/studio/web/assets/index-Sevt3MVx.js +819 -0
- package/studio/web/assets/index-Sevt3MVx.js.map +1 -0
- package/studio/web/assets/index.lazy-Dg5YYPGg.js +14 -0
- package/studio/web/assets/{index.lazy-Dx3MpyDC.js.map → index.lazy-Dg5YYPGg.js.map} +1 -1
- package/studio/web/assets/{jsonMode-Cjj7dtlr.js → jsonMode-CBSEleE7.js} +2 -2
- package/studio/web/assets/{jsonMode-Cjj7dtlr.js.map → jsonMode-CBSEleE7.js.map} +1 -1
- package/studio/web/assets/languageServices-gxedeeTo.js +2 -0
- package/studio/web/assets/languageServices-gxedeeTo.js.map +1 -0
- package/studio/web/assets/{notifications-0edoFTsb.js → notifications-Ap84YyQp.js} +2 -2
- package/studio/web/assets/{notifications-0edoFTsb.js.map → notifications-Ap84YyQp.js.map} +1 -1
- package/studio/web/assets/notifications-vehqyOLM.js +2 -0
- package/studio/web/assets/{notifications-CwKhipK7.js.map → notifications-vehqyOLM.js.map} +1 -1
- package/studio/web/assets/{pollUnlessForbidden-HHdQZW1N.js → pollUnlessForbidden-BhzefVRn.js} +2 -2
- package/studio/web/assets/pollUnlessForbidden-BhzefVRn.js.map +1 -0
- package/studio/web/assets/{profile-DUfEPQtx.js → profile-DzDpRLHY.js} +2 -2
- package/studio/web/assets/{profile-DUfEPQtx.js.map → profile-DzDpRLHY.js.map} +1 -1
- package/studio/web/assets/queryClient-CgtkoiCY.js +2 -0
- package/studio/web/assets/queryClient-CgtkoiCY.js.map +1 -0
- package/studio/web/assets/regions-DpJ8s7iN.js +2 -0
- package/studio/web/assets/regions-DpJ8s7iN.js.map +1 -0
- package/studio/web/assets/register-BDy01-q3.js +3 -0
- package/studio/web/assets/register-BDy01-q3.js.map +1 -0
- package/studio/web/assets/register-CQHRwNP4.js +3 -0
- package/studio/web/assets/register-CQHRwNP4.js.map +1 -0
- package/studio/web/assets/{setComponentFile-DMPo4UjC.js → setComponentFile-D0aPcI3W.js} +2 -2
- package/studio/web/assets/{setComponentFile-DMPo4UjC.js.map → setComponentFile-D0aPcI3W.js.map} +1 -1
- package/studio/web/assets/setup-I15FAF9H.js +3 -0
- package/studio/web/assets/{setup-B56Oz1_u.js.map → setup-I15FAF9H.js.map} +1 -1
- package/studio/web/assets/status-BF1eJshJ.js +62 -0
- package/studio/web/assets/status-BF1eJshJ.js.map +1 -0
- package/studio/web/assets/{swagger-ui-react-lQrBxfwM.js → swagger-ui-react-DwSPXXhl.js} +2 -2
- package/studio/web/assets/{swagger-ui-react-lQrBxfwM.js.map → swagger-ui-react-DwSPXXhl.js.map} +1 -1
- package/studio/web/assets/{textarea-DhLMZ3PA.js → table-DpOjNQHt.js} +2 -10
- package/studio/web/assets/table-DpOjNQHt.js.map +1 -0
- package/studio/web/assets/{tsMode-CrHCRjTK.js → tsMode-Bu51A-VG.js} +2 -2
- package/studio/web/assets/{tsMode-CrHCRjTK.js.map → tsMode-Bu51A-VG.js.map} +1 -1
- package/studio/web/assets/{useEntityRestURL-DoaBMEvU.js → useEntityRestURL-DrV1zMrN.js} +2 -2
- package/studio/web/assets/{useEntityRestURL-DoaBMEvU.js.map → useEntityRestURL-DrV1zMrN.js.map} +1 -1
- package/studio/web/index.html +6 -7
- package/upgrade/upgradePrompt.ts +22 -3
- package/utility/environment/environmentManager.ts +152 -0
- package/utility/errors/commonErrors.ts +2 -0
- package/utility/hdbTerms.ts +2 -0
- package/utility/install/installer.ts +37 -0
- package/utility/lmdb/environmentUtility.ts +2 -1
- package/utility/logging/harper_logger.ts +57 -26
- package/studio/web/assets/applications-D03NA7wW.js.map +0 -1
- package/studio/web/assets/index-Bh_CNAHr.js +0 -809
- package/studio/web/assets/index-Bh_CNAHr.js.map +0 -1
- package/studio/web/assets/index-C8Mv9kHV.css +0 -1
- package/studio/web/assets/index.lazy-Dx3MpyDC.js +0 -14
- package/studio/web/assets/notifications-CwKhipK7.js +0 -2
- package/studio/web/assets/pollUnlessForbidden-HHdQZW1N.js.map +0 -1
- package/studio/web/assets/queryClient-CbA8wM7J.js +0 -2
- package/studio/web/assets/queryClient-CbA8wM7J.js.map +0 -1
- package/studio/web/assets/setup-B56Oz1_u.js +0 -3
- package/studio/web/assets/status-BAod7p3o.js +0 -62
- package/studio/web/assets/status-BAod7p3o.js.map +0 -1
- package/studio/web/assets/textarea-DhLMZ3PA.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regions-DpJ8s7iN.js","names":[],"sources":["../../src/features/admin/regions/components/MultiSelect.tsx","../../src/features/admin/regions/mutations/useCreateRegion.ts","../../src/features/admin/regions/mutations/useUpdateRegion.ts","../../src/features/admin/regions/queries/getLocations.ts","../../src/features/admin/regions/queries/getOrganizations.ts","../../src/features/admin/regions/queries/getRegions.ts","../../src/features/admin/regions/RegionFormSchema.ts","../../src/features/admin/regions/components/RegionFormModal.tsx","../../src/features/admin/regions/index.tsx"],"sourcesContent":["import { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport {\n\tDropdownMenu,\n\tDropdownMenuCheckboxItem,\n\tDropdownMenuContent,\n\tDropdownMenuTrigger,\n} from '@/components/ui/dropdownMenu';\nimport { ChevronDown, XIcon } from 'lucide-react';\nimport { type KeyboardEvent, useEffect, useMemo, useRef, useState } from 'react';\n\nexport interface MultiSelectOption {\n\tvalue: string;\n\tlabel: string;\n}\n\ninterface MultiSelectProps {\n\toptions: MultiSelectOption[];\n\tselected: string[];\n\tonChange: (values: string[]) => void;\n\tplaceholder?: string;\n\temptyText?: string;\n\tariaLabel?: string;\n\tdisabled?: boolean;\n\tid?: string;\n\t/**\n\t * Allow the same value more than once. Preferred locations are a placement list, not a set:\n\t * repeating a location asks for another host there.\n\t */\n\tallowRepeats?: boolean;\n\t/**\n\t * Cap on how many matches are rendered at once. Options aren't virtualized, so a long list needs\n\t * a ceiling; the rest stay reachable by narrowing the filter, and the overflow is shown as a count\n\t * rather than dropped silently.\n\t */\n\tmaxVisibleOptions?: number;\n}\n\n/**\n * A checkbox multi-select with a filter and removable chips. Built on the shared Radix dropdown\n * (the repo has no combobox); the filter input swallows printable keys so Radix's menu typeahead\n * doesn't eat the typing, and each item preventDefaults onSelect so the menu stays open across picks.\n *\n * With `allowRepeats`, `selected` may contain duplicates: every menu click appends another copy\n * (never unselects), each copy is its own chip, and a chip's X removes just that copy — so the X is\n * the only way to remove. Without it the menu toggles and values stay unique.\n */\nexport function MultiSelect({\n\toptions,\n\tselected,\n\tonChange,\n\tplaceholder = 'Select…',\n\temptyText = 'No options',\n\tariaLabel,\n\tdisabled,\n\tid,\n\tallowRepeats,\n\tmaxVisibleOptions,\n}: MultiSelectProps) {\n\tconst [open, setOpen] = useState(false);\n\tconst [filter, setFilter] = useState('');\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\tconst contentRef = useRef<HTMLDivElement>(null);\n\tconst selectedSet = useMemo(() => new Set(selected), [selected]);\n\tconst labelFor = useMemo(() => new Map(options.map((o) => [o.value, o.label])), [options]);\n\n\t// Radix focuses the menu (enabling its typeahead) on open; move focus to the filter input so the\n\t// first keystrokes filter rather than trigger typeahead. Two rAFs: the first lets the portaled\n\t// popper content mount, the second lands after Radix's own mount-autofocus so ours wins.\n\tuseEffect(() => {\n\t\tif (!open) { return; }\n\t\tlet inner = 0;\n\t\tconst outer = requestAnimationFrame(() => {\n\t\t\tinner = requestAnimationFrame(() => inputRef.current?.focus());\n\t\t});\n\t\treturn () => {\n\t\t\tcancelAnimationFrame(outer);\n\t\t\tcancelAnimationFrame(inner);\n\t\t};\n\t}, [open]);\n\n\tconst filtered = useMemo(() => {\n\t\tconst q = filter.trim().toLowerCase();\n\t\tif (!q) { return options; }\n\t\treturn options.filter((o) => o.label.toLowerCase().includes(q) || o.value.toLowerCase().includes(q));\n\t}, [options, filter]);\n\n\tconst visible = maxVisibleOptions ? filtered.slice(0, maxVisibleOptions) : filtered;\n\tconst overflowCount = filtered.length - visible.length;\n\n\t// A menu click adds: with repeats it always appends another copy, so the X on a chip is the only\n\t// way to remove. Without repeats it toggles the value in and out.\n\tconst pick = (value: string) => {\n\t\tif (allowRepeats) { onChange([...selected, value]); }\n\t\telse if (selectedSet.has(value)) { onChange(selected.filter((v) => v !== value)); }\n\t\telse { onChange([...selected, value]); }\n\t};\n\n\t/** Drop one entry by position, so removing a repeat leaves its other copies alone. */\n\tconst removeAt = (index: number) => onChange(selected.filter((_, i) => i !== index));\n\n\t// Radix only moves focus into the list when the keydown target IS the content element, so from the\n\t// filter input the arrow keys need handling here or the list is unreachable by keyboard. Once an\n\t// item has focus, Radix's roving focus takes over the rest of the arrows and Enter/Space.\n\tconst focusEdgeItem = (edge: 'first' | 'last') => {\n\t\tconst items = contentRef.current?.querySelectorAll<HTMLElement>(\n\t\t\t'[role=\"menuitemcheckbox\"]:not([data-disabled])',\n\t\t);\n\t\tif (!items?.length) { return; }\n\t\t(edge === 'first' ? items[0] : items[items.length - 1]).focus();\n\t};\n\n\tconst onFilterKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n\t\tif (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n\t\t\te.preventDefault();\n\t\t\tfocusEdgeItem(e.key === 'ArrowDown' ? 'first' : 'last');\n\t\t\treturn;\n\t\t}\n\t\t// Only swallow printable keys, which are the ones Radix's typeahead would steal. Anything else\n\t\t// (Escape to close, Tab, Enter) has to reach Radix.\n\t\tif (e.key.length === 1 && !e.ctrlKey && !e.altKey && !e.metaKey) { e.stopPropagation(); }\n\t};\n\n\treturn (\n\t\t<div className=\"flex flex-col gap-2\">\n\t\t\t<DropdownMenu\n\t\t\t\topen={open}\n\t\t\t\tonOpenChange={(next) => {\n\t\t\t\t\tsetOpen(next);\n\t\t\t\t\tif (!next) { setFilter(''); }\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<DropdownMenuTrigger asChild disabled={disabled}>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\taria-label={ariaLabel}\n\t\t\t\t\t\tclassName=\"w-full justify-between font-normal\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span className={selected.length ? 'truncate' : 'truncate text-muted-foreground'}>\n\t\t\t\t\t\t\t{selected.length ? `${selected.length} selected` : placeholder}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<ChevronDown className=\"size-4 shrink-0 opacity-60\" />\n\t\t\t\t\t</Button>\n\t\t\t\t</DropdownMenuTrigger>\n\t\t\t\t<DropdownMenuContent\n\t\t\t\t\tref={contentRef}\n\t\t\t\t\tclassName=\"w-(--radix-dropdown-menu-trigger-width) max-h-72 overflow-y-auto\"\n\t\t\t\t\talign=\"start\"\n\t\t\t\t>\n\t\t\t\t\t<input\n\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\tvalue={filter}\n\t\t\t\t\t\tonChange={(e) => setFilter(e.target.value)}\n\t\t\t\t\t\tonKeyDown={onFilterKeyDown}\n\t\t\t\t\t\tplaceholder=\"Filter…\"\n\t\t\t\t\t\taria-label=\"Filter options\"\n\t\t\t\t\t\tclassName=\"mb-1 w-full rounded-md border bg-transparent px-2 py-1 text-sm outline-none\"\n\t\t\t\t\t/>\n\t\t\t\t\t{filtered.length === 0\n\t\t\t\t\t\t? <div className=\"px-2 py-1.5 text-sm text-muted-foreground\">{emptyText}</div>\n\t\t\t\t\t\t: visible.map((o) => (\n\t\t\t\t\t\t\t<DropdownMenuCheckboxItem\n\t\t\t\t\t\t\t\tkey={o.value}\n\t\t\t\t\t\t\t\tchecked={selectedSet.has(o.value)}\n\t\t\t\t\t\t\t\t// Ignore the incoming checked value: with repeats a click on an already-checked\n\t\t\t\t\t\t\t\t// item means \"add another\", not \"unselect\".\n\t\t\t\t\t\t\t\tonCheckedChange={() => pick(o.value)}\n\t\t\t\t\t\t\t\tonSelect={(e) => e.preventDefault()}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{o.label}\n\t\t\t\t\t\t\t</DropdownMenuCheckboxItem>\n\t\t\t\t\t\t))}\n\t\t\t\t\t{overflowCount > 0 && (\n\t\t\t\t\t\t<div className=\"px-2 py-1.5 text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t{overflowCount} more — keep typing to narrow\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</DropdownMenuContent>\n\t\t\t</DropdownMenu>\n\n\t\t\t{selected.length > 0 && (\n\t\t\t\t<div className=\"flex flex-wrap gap-1\">\n\t\t\t\t\t{selected.map((value, index) => {\n\t\t\t\t\t\tconst label = labelFor.get(value) ?? value;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Badge key={`${value}-${index}`} variant=\"secondary\" className=\"gap-1\">\n\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\taria-label={`Remove ${label}`}\n\t\t\t\t\t\t\t\t\tonClick={() => removeAt(index)}\n\t\t\t\t\t\t\t\t\tclassName=\"ml-0.5 rounded-sm hover:text-destructive\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<XIcon className=\"size-3\" />\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import { apiClient } from '@/config/apiClient';\nimport { AdminRegion, AdminRegionPayload } from '@/integrations/api/api.patch';\nimport { useMutation } from '@tanstack/react-query';\n\n/**\n * POST /Admin/Region → create a region (super-user only).\n *\n * The response is cast: the generated schema predates the `active` flag.\n */\nexport async function createRegion(payload: AdminRegionPayload): Promise<AdminRegion> {\n\tconst { data } = await apiClient.post('/Admin/Region/', payload);\n\treturn data as unknown as AdminRegion;\n}\n\nexport function useCreateRegionMutation() {\n\treturn useMutation<AdminRegion, Error, AdminRegionPayload>({ mutationFn: createRegion });\n}\n","import { apiClient } from '@/config/apiClient';\nimport { AdminRegion, AdminRegionPayload } from '@/integrations/api/api.patch';\nimport { useMutation } from '@tanstack/react-query';\n\n/** `id` identifies the region in the path and can't change; everything else is editable. */\nexport type UpdateRegionInput = { id: string; changes: Partial<Omit<AdminRegionPayload, 'id'>> };\n\n/**\n * PATCH /Admin/Region/:id → update a region (super-user only). The id is the immutable primary key,\n * so it's sent in the path, not the body. The response is cast: the generated schema predates the\n * `active` flag.\n */\nexport async function updateRegion({ id, changes }: UpdateRegionInput): Promise<AdminRegion> {\n\tconst { data } = await apiClient.patch(`/Admin/Region/${id}` as '/Admin/Region/{id}', changes);\n\treturn data as unknown as AdminRegion;\n}\n\nexport function useUpdateRegionMutation() {\n\treturn useMutation<AdminRegion, Error, UpdateRegionInput>({ mutationFn: updateRegion });\n}\n","import { apiClient } from '@/config/apiClient';\nimport { AdminLocation } from '@/integrations/api/api.patch';\nimport { queryOptions } from '@tanstack/react-query';\n\n/**\n * GET /Location → every deployment location. Used to populate the region form's per-provider\n * location pickers so an admin can only pick values the Location table actually holds (the\n * RegionAdmin endpoint rejects unknown preferred locations with a 400).\n */\nexport async function getLocations(): Promise<AdminLocation[]> {\n\tconst { data } = await apiClient.get('/Location/');\n\treturn data as unknown as AdminLocation[];\n}\n\nexport const locationsQueryKey = ['fabric-admin', 'locations'];\n\nexport function getLocationsQueryOptions() {\n\treturn queryOptions({\n\t\tqueryKey: locationsQueryKey,\n\t\tqueryFn: getLocations,\n\t\tretry: false,\n\t});\n}\n","import { apiClient } from '@/config/apiClient';\nimport { SchemaOrganization } from '@/integrations/api/api.gen';\nimport { queryOptions } from '@tanstack/react-query';\n\n/** Just what the org picker needs; the endpoint returns full organization records. */\nexport type AdminOrganizationSummary = Pick<SchemaOrganization, 'id' | 'name'>;\n\n/** How an organization is shown everywhere it appears: the id first, then its name in parens. */\nexport function formatOrgLabel(id: string, name?: string): string {\n\treturn name ? `${id} (${name})` : id;\n}\n\n/** Rows per request while sweeping the org table. */\nexport const ORGANIZATION_PAGE_SIZE = 500;\n\n/**\n * Hard stop on the sweep, so a server that keeps returning full pages can't spin forever. Hitting it\n * is reported rather than swallowed — past this point the picker is missing orgs and the list page\n * can't name them.\n */\nexport const ORGANIZATION_PAGE_LIMIT = 40;\n\nexport interface AdminOrganizationsResult {\n\torganizations: AdminOrganizationSummary[];\n\t/** True when {@link ORGANIZATION_PAGE_LIMIT} cut the sweep short of the whole table. */\n\ttruncated: boolean;\n}\n\n/**\n * GET /Admin/Organization → every organization, for the region form's customer scope picker and the\n * list page's id→name lookup (super-user only). Terminated orgs keep a DELETED row, so they're\n * filtered out — scoping a region to one is meaningless.\n *\n * Both callers need the complete set: a single capped request would silently make orgs past the cap\n * unassignable AND leave already-scoped ones rendering as bare ids, so this pages until the server\n * returns a short page. Harper collections carry no total count, so a short page is the only\n * end-of-table signal.\n */\nexport async function getOrganizations(): Promise<AdminOrganizationsResult> {\n\tconst organizations: AdminOrganizationSummary[] = [];\n\tfor (let page = 0; page < ORGANIZATION_PAGE_LIMIT; page++) {\n\t\tconst start = page * ORGANIZATION_PAGE_SIZE;\n\t\tconst query = [\n\t\t\t'status=ne=DELETED',\n\t\t\t'sort(name)',\n\t\t\t`limit(${start},${start + ORGANIZATION_PAGE_SIZE})`,\n\t\t].join('&');\n\t\t// Trailing slash required to get the records array rather than the collection descriptor.\n\t\tconst { data } = await apiClient.get(`/Admin/Organization/?${query}` as '/Admin/Organization/');\n\t\tconst rows = data as unknown as AdminOrganizationSummary[];\n\t\torganizations.push(...rows);\n\t\tif (rows.length < ORGANIZATION_PAGE_SIZE) {\n\t\t\treturn { organizations, truncated: false };\n\t\t}\n\t}\n\treturn { organizations, truncated: true };\n}\n\nexport const organizationsQueryKey = ['fabric-admin', 'organizations'];\n\nexport function getOrganizationsQueryOptions() {\n\treturn queryOptions({\n\t\tqueryKey: organizationsQueryKey,\n\t\tqueryFn: getOrganizations,\n\t\tretry: false,\n\t});\n}\n","import { apiClient } from '@/config/apiClient';\nimport { AdminRegion } from '@/integrations/api/api.patch';\nimport { queryOptions } from '@tanstack/react-query';\n\n/**\n * GET /Admin/Region → every region (super-user only).\n *\n * The response is cast: the generated schema predates the `active` flag and types `organizationIds`\n * as non-nullable, while the API returns null for a public region.\n */\nexport async function getRegions(): Promise<AdminRegion[]> {\n\t// Trailing slash is required: GET /Admin/Region (no slash) returns Harper's collection\n\t// descriptor, /Admin/Region/ returns the records array.\n\tconst { data } = await apiClient.get('/Admin/Region/');\n\treturn data as unknown as AdminRegion[];\n}\n\nexport const regionsQueryKey = ['fabric-admin', 'regions'];\n\nexport function getRegionsQueryOptions() {\n\treturn queryOptions({\n\t\tqueryKey: regionsQueryKey,\n\t\tqueryFn: getRegions,\n\t\tretry: false,\n\t});\n}\n","import { z } from 'zod';\n\n/**\n * Create/edit form for a region. Mirrors the RegionAdmin validation contract: id, name, counts and\n * a latency blurb are required; preferred locations and the organization (customer) scope are\n * optional arrays. Numbers are kept as numbers (the inputs convert on change) and the arrays carry\n * no schema default so the form's input and output types match — react-hook-form needs that to\n * resolve the resolver generic. Blank/create defaults come from the form's defaultValues instead.\n */\nexport const RegionFormSchema = z.object({\n\t// The region's primary key — admin-supplied, immutable after create (e.g. \"global-1\").\n\tid: z\n\t\t.string()\n\t\t.trim()\n\t\t.min(1, 'ID is required')\n\t\t.regex(/^[a-z0-9-]+$/, 'Use lowercase letters, numbers, and hyphens only'),\n\tregion: z.string().trim().min(1, 'Region is required'),\n\tinstanceCount: z.number({ error: 'Enter a whole number' }).int('Must be a whole number').min(1, 'Must be at least 1'),\n\tpurchasedBlockMultiplier: z\n\t\t.number({ error: 'Enter a whole number' })\n\t\t.int('Must be a whole number')\n\t\t.min(1, 'Must be at least 1'),\n\tlatencyDescription: z.string().trim().min(1, 'Latency description is required'),\n\tlinodePreferredLocations: z.array(z.string()),\n\tgcpPreferredLocations: z.array(z.string()),\n\t// When true, deployments are pinned to the preferred locations rather than treating them as hints.\n\tforceLocations: z.boolean(),\n\t// false = retired: hidden from the customer provisioning list. New regions default active.\n\tactive: z.boolean(),\n\t// Empty ⇒ region is available to all organizations (shown as \"Public\").\n\torganizationIds: z.array(z.string()),\n}).superRefine((values, ctx) => {\n\t// With forceLocations the preferred list IS the placement plan rather than a hint, so an empty one\n\t// leaves addDedicatedHosts nothing to pick and provisioning fails with \"No valid locations found\".\n\tif (values.forceLocations && !values.linodePreferredLocations.length && !values.gcpPreferredLocations.length) {\n\t\tctx.addIssue({\n\t\t\tcode: 'custom',\n\t\t\tpath: ['forceLocations'],\n\t\t\tmessage: 'Add at least one preferred location, or turn off Force locations',\n\t\t});\n\t}\n});\n\nexport type RegionFormValues = z.infer<typeof RegionFormSchema>;\n","import { Button } from '@/components/ui/button';\nimport { Dialog, DialogContent, DialogDescription, DialogFooter, DialogTitle } from '@/components/ui/dialog';\nimport { Form } from '@/components/ui/form/Form';\nimport { FormControl } from '@/components/ui/form/FormControl';\nimport { FormField } from '@/components/ui/form/FormField';\nimport { FormItem } from '@/components/ui/form/FormItem';\nimport { FormLabel } from '@/components/ui/form/FormLabel';\nimport { FormMessage } from '@/components/ui/form/FormMessage';\nimport { Input } from '@/components/ui/input';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\nimport { MultiSelect, MultiSelectOption } from '@/features/admin/regions/components/MultiSelect';\nimport { useCreateRegionMutation } from '@/features/admin/regions/mutations/useCreateRegion';\nimport { useUpdateRegionMutation } from '@/features/admin/regions/mutations/useUpdateRegion';\nimport { getLocationsQueryOptions } from '@/features/admin/regions/queries/getLocations';\nimport { formatOrgLabel, getOrganizationsQueryOptions } from '@/features/admin/regions/queries/getOrganizations';\nimport { getRegionsQueryOptions, regionsQueryKey } from '@/features/admin/regions/queries/getRegions';\nimport { RegionFormSchema, RegionFormValues } from '@/features/admin/regions/RegionFormSchema';\nimport { AdminRegion } from '@/integrations/api/api.patch';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport { InfoIcon } from 'lucide-react';\nimport { useEffect, useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { toast } from 'sonner';\n\n/** Menu items rendered at once for the org picker; the filter reaches the rest. */\nconst ORGANIZATION_OPTIONS_RENDERED = 100;\n\ninterface RegionFormModalProps {\n\topen: boolean;\n\tonOpenChange: (open: boolean) => void;\n\t/** The region being edited; omit/null to create a new one. */\n\tregion?: AdminRegion | null;\n}\n\nfunction toFormValues(region?: AdminRegion | null): RegionFormValues {\n\treturn {\n\t\tid: region?.id ?? '',\n\t\tregion: region?.region ?? '',\n\t\tinstanceCount: region?.instanceCount ?? 1,\n\t\tpurchasedBlockMultiplier: region?.purchasedBlockMultiplier ?? 1,\n\t\tlatencyDescription: region?.latencyDescription ?? '',\n\t\tlinodePreferredLocations: region?.linodePreferredLocations ?? [],\n\t\tgcpPreferredLocations: region?.gcpPreferredLocations ?? [],\n\t\tforceLocations: region?.forceLocations ?? false,\n\t\tactive: region?.active ?? true,\n\t\torganizationIds: region?.organizationIds ?? [],\n\t};\n}\n\nexport function RegionFormModal({ open, onOpenChange, region }: RegionFormModalProps) {\n\tconst isEdit = !!region;\n\tconst queryClient = useQueryClient();\n\n\tconst { data: locations = [] } = useQuery({ ...getLocationsQueryOptions(), enabled: open });\n\tconst { data: orgResult } = useQuery({ ...getOrganizationsQueryOptions(), enabled: open });\n\tconst organizations = orgResult?.organizations ?? [];\n\tconst { data: regions = [] } = useQuery({ ...getRegionsQueryOptions(), enabled: open });\n\n\tconst { mutate: createRegion, isPending: isCreating } = useCreateRegionMutation();\n\tconst { mutate: updateRegion, isPending: isUpdating } = useUpdateRegionMutation();\n\tconst isPending = isCreating || isUpdating;\n\n\t// Location labels carry the provider code (e.g. \"Chennai, India (in-maa)\") since that code is\n\t// what's actually stored and what admins recognize.\n\tconst linodeOptions = useMemo<MultiSelectOption[]>(\n\t\t() =>\n\t\t\tlocations\n\t\t\t\t.filter((l) => l.cloudProvider === 'linode')\n\t\t\t\t.map((l) => ({ value: l.location, label: `${l.locationName} (${l.location})` })),\n\t\t[locations],\n\t);\n\tconst gcpOptions = useMemo<MultiSelectOption[]>(\n\t\t() =>\n\t\t\tlocations\n\t\t\t\t.filter((l) => l.cloudProvider === 'gcp')\n\t\t\t\t.map((l) => ({ value: l.location, label: `${l.locationName} (${l.location})` })),\n\t\t[locations],\n\t);\n\tconst orgOptions = useMemo<MultiSelectOption[]>(\n\t\t() => organizations.map((o) => ({ value: o.id, label: formatOrgLabel(o.id, o.name) })),\n\t\t[organizations],\n\t);\n\t// A region's Name must be one of the known region groupings (the union of every location's\n\t// `regions`); a colocated region named for a grouping no location serves would have no hosts.\n\t// Keep an editing region's current name selectable even if it predates this rule.\n\tconst regionNameOptions = useMemo<string[]>(() => {\n\t\tconst names = new Set<string>();\n\t\tfor (const l of locations) { for (const r of l.regions ?? []) { names.add(r); } }\n\t\tif (region?.region) { names.add(region.region); }\n\t\treturn [...names].sort();\n\t}, [locations, region]);\n\n\tconst form = useForm<RegionFormValues>({\n\t\tresolver: zodResolver(RegionFormSchema),\n\t\tdefaultValues: toFormValues(region),\n\t});\n\n\t// Reset to the target region whenever the modal (re)opens or switches which region it edits.\n\tuseEffect(() => {\n\t\tif (open) { form.reset(toFormValues(region)); }\n\t}, [open, region, form]);\n\n\tconst onSubmit = (values: RegionFormValues) => {\n\t\t// Regions intentionally share a name (e.g. several \"Global\" tiers), so the latency description\n\t\t// is the differentiator and must be unique. Only check when it actually changes: the seeded\n\t\t// catalog already ships a collision (us-ne-1 / us-se-1 both use \"49ms, small distribution\"),\n\t\t// and this form submits every field — validating an unchanged value would make those rows\n\t\t// uneditable. Mirrors RegionAdmin's server-side check, which is the source of truth (409).\n\t\tconst norm = (s: string) => s.trim().toLowerCase();\n\t\tconst latencyChanged = !region || norm(region.latencyDescription) !== norm(values.latencyDescription);\n\t\tconst others = regions.filter((r) => r.id !== region?.id);\n\t\tif (latencyChanged && others.some((r) => norm(r.latencyDescription) === norm(values.latencyDescription))) {\n\t\t\tform.setError('latencyDescription', { message: 'A region with this latency description already exists' });\n\t\t\treturn;\n\t\t}\n\n\t\tconst organizationIds = values.organizationIds.length > 0 ? values.organizationIds : null;\n\n\t\tconst onSuccess = () => {\n\t\t\ttoast.success(isEdit ? 'Region updated' : 'Region created');\n\t\t\tvoid queryClient.invalidateQueries({ queryKey: regionsQueryKey });\n\t\t\tonOpenChange(false);\n\t\t};\n\n\t\t// Narrow on `region` itself rather than the `isEdit` alias — equivalent today, but it doesn't\n\t\t// depend on TS's aliased-condition inference surviving a refactor of `isEdit`.\n\t\tif (region) {\n\t\t\tconst { id: _id, ...changes } = values;\n\t\t\tupdateRegion({ id: region.id, changes: { ...changes, organizationIds } }, { onSuccess });\n\t\t} else {\n\t\t\tcreateRegion({ ...values, organizationIds }, { onSuccess });\n\t\t}\n\t};\n\n\treturn (\n\t\t<Dialog open={open} onOpenChange={onOpenChange}>\n\t\t\t<DialogContent className=\"max-w-2xl\">\n\t\t\t\t<DialogTitle>{isEdit ? 'Edit region' : 'Create region'}</DialogTitle>\n\t\t\t\t<DialogDescription>\n\t\t\t\t\t{isEdit\n\t\t\t\t\t\t? 'Update this region. Its ID is fixed once created.'\n\t\t\t\t\t\t: 'Define a new deployment region. Leave organizations empty to make it public (all organizations).'}\n\t\t\t\t</DialogDescription>\n\t\t\t\t<Form {...form}>\n\t\t\t\t\t<form className=\"my-4 flex flex-col gap-4\" onSubmit={form.handleSubmit(onSubmit)}>\n\t\t\t\t\t\t<div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 items-start\">\n\t\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\t\t\t\tname=\"id\"\n\t\t\t\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t\t\t\t<FormLabel className=\"pb-1\">Region ID</FormLabel>\n\t\t\t\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t\t\t\t<Input placeholder=\"e.g. us-east-1\" {...field} disabled={isEdit} />\n\t\t\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\t\t\t\tname=\"region\"\n\t\t\t\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t\t\t\t<FormLabel className=\"pb-1\">Region</FormLabel>\n\t\t\t\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t\t\t\t<Select value={field.value} onValueChange={field.onChange}>\n\t\t\t\t\t\t\t\t\t\t\t\t<SelectTrigger className=\"w-full\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<SelectValue placeholder=\"Select a region\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</SelectTrigger>\n\t\t\t\t\t\t\t\t\t\t\t\t<SelectContent>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{regionNameOptions.map((name) => <SelectItem key={name} value={name}>{name}</SelectItem>)}\n\t\t\t\t\t\t\t\t\t\t\t\t</SelectContent>\n\t\t\t\t\t\t\t\t\t\t\t</Select>\n\t\t\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\t\t\t\tname=\"instanceCount\"\n\t\t\t\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t\t\t\t<FormLabel className=\"pb-1\">Instance count</FormLabel>\n\t\t\t\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\t\t\t\t\tmin={1}\n\t\t\t\t\t\t\t\t\t\t\t\tstep={1}\n\t\t\t\t\t\t\t\t\t\t\t\tname={field.name}\n\t\t\t\t\t\t\t\t\t\t\t\tref={field.ref}\n\t\t\t\t\t\t\t\t\t\t\t\tonBlur={field.onBlur}\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={Number.isFinite(field.value) ? field.value : ''}\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(e) => field.onChange(e.target.valueAsNumber)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\t\t\t\tname=\"purchasedBlockMultiplier\"\n\t\t\t\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-1.5 pb-1\">\n\t\t\t\t\t\t\t\t\t\t\t<FormLabel className=\"!pb-0\">Purchased block multiplier</FormLabel>\n\t\t\t\t\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t\t<TooltipTrigger asChild>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-label=\"What is the purchased block multiplier?\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"text-muted-foreground hover:text-foreground\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<InfoIcon className=\"size-3.5\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t\t\t</TooltipTrigger>\n\t\t\t\t\t\t\t\t\t\t\t\t<TooltipContent className=\"max-w-xs\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tHow many purchased blocks a cluster in this region is billed for. One block covers a baseline\n\t\t\t\t\t\t\t\t\t\t\t\t\tcluster: a 2-node cluster is 1 block and a 4-node cluster is 2 blocks. Each block carries one\n\t\t\t\t\t\t\t\t\t\t\t\t\tlicense against the selected plan's limits; once they're all used up, this many are issued and\n\t\t\t\t\t\t\t\t\t\t\t\t\tbilled again.\n\t\t\t\t\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\t\t\t\t\tmin={1}\n\t\t\t\t\t\t\t\t\t\t\t\tstep={1}\n\t\t\t\t\t\t\t\t\t\t\t\tname={field.name}\n\t\t\t\t\t\t\t\t\t\t\t\tref={field.ref}\n\t\t\t\t\t\t\t\t\t\t\t\tonBlur={field.onBlur}\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={Number.isFinite(field.value) ? field.value : ''}\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(e) => field.onChange(e.target.valueAsNumber)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\t\t\tname=\"latencyDescription\"\n\t\t\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t\t\t<FormLabel className=\"pb-1\">Latency description</FormLabel>\n\t\t\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t\t\t<Input placeholder=\"e.g. 280ms, medium distribution\" {...field} />\n\t\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 items-start\">\n\t\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\t\t\t\tname=\"linodePreferredLocations\"\n\t\t\t\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t\t\t\t<FormLabel className=\"pb-1\">Linode preferred locations</FormLabel>\n\t\t\t\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t\t\t\t<MultiSelect\n\t\t\t\t\t\t\t\t\t\t\t\toptions={linodeOptions}\n\t\t\t\t\t\t\t\t\t\t\t\tselected={field.value}\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={field.onChange}\n\t\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"Any Linode location\"\n\t\t\t\t\t\t\t\t\t\t\t\temptyText=\"No Linode locations\"\n\t\t\t\t\t\t\t\t\t\t\t\tariaLabel=\"Linode preferred locations\"\n\t\t\t\t\t\t\t\t\t\t\t\tallowRepeats\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\t\t\t\tname=\"gcpPreferredLocations\"\n\t\t\t\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t\t\t\t<FormLabel className=\"pb-1\">GCP preferred locations</FormLabel>\n\t\t\t\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t\t\t\t<MultiSelect\n\t\t\t\t\t\t\t\t\t\t\t\toptions={gcpOptions}\n\t\t\t\t\t\t\t\t\t\t\t\tselected={field.value}\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={field.onChange}\n\t\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"Any GCP location\"\n\t\t\t\t\t\t\t\t\t\t\t\temptyText=\"No GCP locations\"\n\t\t\t\t\t\t\t\t\t\t\t\tariaLabel=\"GCP preferred locations\"\n\t\t\t\t\t\t\t\t\t\t\t\tallowRepeats\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\t\t\tname=\"forceLocations\"\n\t\t\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"size-4\"\n\t\t\t\t\t\t\t\t\t\t\t\tchecked={field.value}\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(e) => field.onChange(e.target.checked)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t\t\t<FormLabel className=\"!pb-0\">Force locations</FormLabel>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<p className=\"text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\tPin deployments to the preferred locations above instead of treating them as hints.\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\t\t\tname=\"active\"\n\t\t\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"size-4\"\n\t\t\t\t\t\t\t\t\t\t\t\tchecked={field.value}\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(e) => field.onChange(e.target.checked)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t\t\t<FormLabel className=\"!pb-0\">Active</FormLabel>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<p className=\"text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\tInactive regions stay available to existing deployments but aren't offered for new ones.\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\t\t\tname=\"organizationIds\"\n\t\t\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t\t\t<FormLabel className=\"pb-1\">Organizations (customer scope)</FormLabel>\n\t\t\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t\t\t<MultiSelect\n\t\t\t\t\t\t\t\t\t\t\toptions={orgOptions}\n\t\t\t\t\t\t\t\t\t\t\tselected={field.value}\n\t\t\t\t\t\t\t\t\t\t\tonChange={field.onChange}\n\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"Public — all organizations\"\n\t\t\t\t\t\t\t\t\t\t\temptyText=\"No organizations\"\n\t\t\t\t\t\t\t\t\t\t\tariaLabel=\"Organizations\"\n\t\t\t\t\t\t\t\t\t\t\tmaxVisibleOptions={ORGANIZATION_OPTIONS_RENDERED}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t\t{orgResult?.truncated && (\n\t\t\t\t\t\t\t\t\t\t<p className=\"text-xs text-destructive\">\n\t\t\t\t\t\t\t\t\t\t\tToo many organizations to list them all — some may be missing from this picker.\n\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<DialogFooter>\n\t\t\t\t\t\t\t<div className=\"flex w-full justify-between\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tvariant=\"destructiveOutline\"\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tonClick={() => onOpenChange(false)}\n\t\t\t\t\t\t\t\t\tdisabled={isPending}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tCancel\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t<Button variant=\"submit\" disabled={isPending}>\n\t\t\t\t\t\t\t\t\t{isPending ? 'Saving…' : isEdit ? 'Save changes' : 'Create region'}\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</DialogFooter>\n\t\t\t\t\t</form>\n\t\t\t\t</Form>\n\t\t\t</DialogContent>\n\t\t</Dialog>\n\t);\n}\n","import { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table';\nimport { RegionFormModal } from '@/features/admin/regions/components/RegionFormModal';\nimport { formatOrgLabel, getOrganizationsQueryOptions } from '@/features/admin/regions/queries/getOrganizations';\nimport { getRegionsQueryOptions } from '@/features/admin/regions/queries/getRegions';\nimport { AdminRegion } from '@/integrations/api/api.patch';\nimport { useQuery } from '@tanstack/react-query';\nimport { PencilIcon, PlusIcon } from 'lucide-react';\nimport { useMemo, useState } from 'react';\n\nexport function RegionScope(\n\t{ organizationIds, orgNameById }: { organizationIds?: string[] | null; orgNameById: Map<string, string> },\n) {\n\t// Only a non-empty list restricts a region (isRegionVisibleToOrg); null and [] are both public.\n\tif (organizationIds == null || organizationIds.length === 0) {\n\t\treturn <>Public</>;\n\t}\n\treturn (\n\t\t<div className=\"flex flex-col gap-0.5\">\n\t\t\t{organizationIds.map((id) => (\n\t\t\t\t<span key={id} className=\"break-words\">{formatOrgLabel(id, orgNameById.get(id))}</span>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n\nexport function RegionsIndex() {\n\tconst { data: regions, isLoading, isError } = useQuery(getRegionsQueryOptions());\n\tconst { data: orgResult } = useQuery(getOrganizationsQueryOptions());\n\tconst [modalOpen, setModalOpen] = useState(false);\n\tconst [editing, setEditing] = useState<AdminRegion | null>(null);\n\tconst [search, setSearch] = useState('');\n\n\tconst orgNameById = useMemo(\n\t\t() => new Map((orgResult?.organizations ?? []).map((o) => [o.id, o.name])),\n\t\t[orgResult],\n\t);\n\n\tconst filtered = useMemo(() => {\n\t\tconst q = search.trim().toLowerCase();\n\t\tif (!q || !regions) { return regions ?? []; }\n\t\treturn regions.filter((r) =>\n\t\t\tr.region.toLowerCase().includes(q)\n\t\t\t|| r.id.toLowerCase().includes(q)\n\t\t\t|| r.latencyDescription.toLowerCase().includes(q)\n\t\t\t|| (r.organizationIds ?? []).some((id) =>\n\t\t\t\tid.toLowerCase().includes(q) || (orgNameById.get(id) ?? '').toLowerCase().includes(q)\n\t\t\t)\n\t\t);\n\t}, [regions, search, orgNameById]);\n\n\tconst openCreate = () => {\n\t\tsetEditing(null);\n\t\tsetModalOpen(true);\n\t};\n\tconst openEdit = (region: AdminRegion) => {\n\t\tsetEditing(region);\n\t\tsetModalOpen(true);\n\t};\n\n\treturn (\n\t\t<div className=\"max-w-4xl\">\n\t\t\t<div className=\"flex items-start justify-between gap-4\">\n\t\t\t\t<div>\n\t\t\t\t\t<h1 className=\"text-2xl font-light\">Regions</h1>\n\t\t\t\t\t<p className=\"mt-2 text-sm text-muted-foreground\">\n\t\t\t\t\t\tDeployment regions customers can provision into. A region scoped to organizations is only offered to those\n\t\t\t\t\t\tcustomers; otherwise it's available to everyone.\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t\t<Button variant=\"submit\" onClick={openCreate} className=\"shrink-0\">\n\t\t\t\t\t<PlusIcon />\n\t\t\t\t\tCreate region\n\t\t\t\t</Button>\n\t\t\t</div>\n\n\t\t\t<div className=\"mt-6\">\n\t\t\t\t{isLoading\n\t\t\t\t\t? <p className=\"text-sm text-muted-foreground\">Loading regions…</p>\n\t\t\t\t\t: isError\n\t\t\t\t\t? <p className=\"text-sm text-destructive\">Couldn't load regions.</p>\n\t\t\t\t\t: !regions || regions.length === 0\n\t\t\t\t\t? <p className=\"text-sm text-muted-foreground\">No regions yet. Create one to get started.</p>\n\t\t\t\t\t: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\tvalue={search}\n\t\t\t\t\t\t\t\tonChange={(e) => setSearch(e.target.value)}\n\t\t\t\t\t\t\t\tplaceholder=\"Filter by ID, region, description, or organization…\"\n\t\t\t\t\t\t\t\taria-label=\"Filter regions\"\n\t\t\t\t\t\t\t\tclassName=\"mb-4 max-w-md\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{filtered.length === 0\n\t\t\t\t\t\t\t\t? <p className=\"text-sm text-muted-foreground\">No regions match “{search}”.</p>\n\t\t\t\t\t\t\t\t: (\n\t\t\t\t\t\t\t\t\t<Table>\n\t\t\t\t\t\t\t\t\t\t<TableHeader>\n\t\t\t\t\t\t\t\t\t\t\t<TableRow>\n\t\t\t\t\t\t\t\t\t\t\t\t<TableHead>ID</TableHead>\n\t\t\t\t\t\t\t\t\t\t\t\t<TableHead>Region</TableHead>\n\t\t\t\t\t\t\t\t\t\t\t\t<TableHead className=\"text-right pr-6\">Instances</TableHead>\n\t\t\t\t\t\t\t\t\t\t\t\t<TableHead>Description</TableHead>\n\t\t\t\t\t\t\t\t\t\t\t\t<TableHead>Scope</TableHead>\n\t\t\t\t\t\t\t\t\t\t\t\t<TableHead className=\"w-0\" />\n\t\t\t\t\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t\t\t\t\t</TableHeader>\n\t\t\t\t\t\t\t\t\t\t<TableBody>\n\t\t\t\t\t\t\t\t\t\t\t{filtered.map((region) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<TableRow key={region.id} className={region.active === false ? 'opacity-60' : undefined}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell className=\"font-mono font-medium\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"inline-flex items-center gap-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{region.id}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{region.active === false && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Badge variant=\"secondary\" className=\"text-[10px]\">Inactive</Badge>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell>{region.region}</TableCell>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell className=\"text-right pr-6\">{region.instanceCount}</TableCell>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell className=\"text-muted-foreground\">{region.latencyDescription}</TableCell>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<RegionScope organizationIds={region.organizationIds} orgNameById={orgNameById} />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell className=\"text-right\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={`Edit ${region.id}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\topenEdit(region)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<PencilIcon />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t</TableBody>\n\t\t\t\t\t\t\t\t\t</Table>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t<RegionFormModal open={modalOpen} onOpenChange={setModalOpen} region={editing} />\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/tsMode-Bu51A-VG.js","assets/editor.api-OBQnf1nL.js","assets/vendor-datadog-DyjkTkvg.js","assets/rolldown-runtime-CNC7AqOf.js","assets/editor-jjEx9u7D.css","assets/workers-Bhsi-paP.js","assets/toggleHighContrast-el2uNoWb.js","assets/toggleHighContrast--ixms01u.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{r as e}from"./rolldown-runtime-CNC7AqOf.js";import{i as t}from"./vendor-datadog-DyjkTkvg.js";import{m as n,n as r}from"./editor.api-OBQnf1nL.js";var i=`5.9.3`,a=e({JsxEmit:()=>s,ModuleKind:()=>o,ModuleResolutionKind:()=>u,NewLineKind:()=>c,ScriptTarget:()=>l,getJavaScriptWorker:()=>_,getTypeScriptWorker:()=>g,javascriptDefaults:()=>h,typescriptDefaults:()=>m,typescriptVersion:()=>f}),o=(e=>(e[e.None=0]=`None`,e[e.CommonJS=1]=`CommonJS`,e[e.AMD=2]=`AMD`,e[e.UMD=3]=`UMD`,e[e.System=4]=`System`,e[e.ES2015=5]=`ES2015`,e[e.ESNext=99]=`ESNext`,e))(o||{}),s=(e=>(e[e.None=0]=`None`,e[e.Preserve=1]=`Preserve`,e[e.React=2]=`React`,e[e.ReactNative=3]=`ReactNative`,e[e.ReactJSX=4]=`ReactJSX`,e[e.ReactJSXDev=5]=`ReactJSXDev`,e))(s||{}),c=(e=>(e[e.CarriageReturnLineFeed=0]=`CarriageReturnLineFeed`,e[e.LineFeed=1]=`LineFeed`,e))(c||{}),l=(e=>(e[e.ES3=0]=`ES3`,e[e.ES5=1]=`ES5`,e[e.ES2015=2]=`ES2015`,e[e.ES2016=3]=`ES2016`,e[e.ES2017=4]=`ES2017`,e[e.ES2018=5]=`ES2018`,e[e.ES2019=6]=`ES2019`,e[e.ES2020=7]=`ES2020`,e[e.ESNext=99]=`ESNext`,e[e.JSON=100]=`JSON`,e[e.Latest=99]=`Latest`,e))(l||{}),u=(e=>(e[e.Classic=1]=`Classic`,e[e.NodeJs=2]=`NodeJs`,e))(u||{}),d=class{constructor(e,t,n,i,a){this._onDidChange=new r,this._onDidExtraLibsChange=new r,this._extraLibs=Object.create(null),this._removedExtraLibs=Object.create(null),this._eagerModelSync=!1,this.setCompilerOptions(e),this.setDiagnosticsOptions(t),this.setWorkerOptions(n),this.setInlayHintsOptions(i),this.setModeConfiguration(a),this._onDidExtraLibsChangeTimeout=-1}get onDidChange(){return this._onDidChange.event}get onDidExtraLibsChange(){return this._onDidExtraLibsChange.event}get modeConfiguration(){return this._modeConfiguration}get workerOptions(){return this._workerOptions}get inlayHintsOptions(){return this._inlayHintsOptions}getExtraLibs(){return this._extraLibs}addExtraLib(e,t){let n;if(n=t===void 0?`ts:extralib-${Math.random().toString(36).substring(2,15)}`:t,this._extraLibs[n]&&this._extraLibs[n].content===e)return{dispose:()=>{}};let r=1;return this._removedExtraLibs[n]&&(r=this._removedExtraLibs[n]+1),this._extraLibs[n]&&(r=this._extraLibs[n].version+1),this._extraLibs[n]={content:e,version:r},this._fireOnDidExtraLibsChangeSoon(),{dispose:()=>{let e=this._extraLibs[n];e&&e.version===r&&(delete this._extraLibs[n],this._removedExtraLibs[n]=r,this._fireOnDidExtraLibsChangeSoon())}}}setExtraLibs(e){for(let e in this._extraLibs)this._removedExtraLibs[e]=this._extraLibs[e].version;if(this._extraLibs=Object.create(null),e&&e.length>0)for(let t of e){let e=t.filePath||`ts:extralib-${Math.random().toString(36).substring(2,15)}`,n=t.content,r=1;this._removedExtraLibs[e]&&(r=this._removedExtraLibs[e]+1),this._extraLibs[e]={content:n,version:r}}this._fireOnDidExtraLibsChangeSoon()}_fireOnDidExtraLibsChangeSoon(){this._onDidExtraLibsChangeTimeout===-1&&(this._onDidExtraLibsChangeTimeout=window.setTimeout(()=>{this._onDidExtraLibsChangeTimeout=-1,this._onDidExtraLibsChange.fire(void 0)},0))}getCompilerOptions(){return this._compilerOptions}setCompilerOptions(e){this._compilerOptions=e||Object.create(null),this._onDidChange.fire(void 0)}getDiagnosticsOptions(){return this._diagnosticsOptions}setDiagnosticsOptions(e){this._diagnosticsOptions=e||Object.create(null),this._onDidChange.fire(void 0)}setWorkerOptions(e){this._workerOptions=e||Object.create(null),this._onDidChange.fire(void 0)}setInlayHintsOptions(e){this._inlayHintsOptions=e||Object.create(null),this._onDidChange.fire(void 0)}setMaximumWorkerIdleTime(e){}setEagerModelSync(e){this._eagerModelSync=e}getEagerModelSync(){return this._eagerModelSync}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(void 0)}},f=i,p={completionItems:!0,hovers:!0,documentSymbols:!0,definitions:!0,references:!0,documentHighlights:!0,rename:!0,diagnostics:!0,documentRangeFormattingEdits:!0,signatureHelp:!0,onTypeFormattingEdits:!0,codeActions:!0,inlayHints:!0},m=new d({allowNonTsExtensions:!0,target:99},{noSemanticValidation:!1,noSyntaxValidation:!1,onlyVisible:!1},{},{},p),h=new d({allowNonTsExtensions:!0,allowJs:!0,target:99},{noSemanticValidation:!0,noSyntaxValidation:!1,onlyVisible:!1},{},{},p),g=()=>v().then(e=>e.getTypeScriptWorker()),_=()=>v().then(e=>e.getJavaScriptWorker());function v(){return t(()=>import(`./tsMode-Bu51A-VG.js`),__vite__mapDeps([0,1,2,3,4,5,6,7]))}n.onLanguage(`typescript`,()=>v().then(e=>e.setupTypeScript(m))),n.onLanguage(`javascript`,()=>v().then(e=>e.setupJavaScript(h)));export{m as n,a as t};
|
|
3
|
+
//# sourceMappingURL=register-BDy01-q3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"mappings":"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","names":["typescriptVersion"],"ignoreList":[0,1],"sources":["../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/features/typescript/lib/typescriptServicesMetadata.js","../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/features/typescript/register.js"],"sourcesContent":["const typescriptVersion = \"5.9.3\";\n\nexport { typescriptVersion };\n","import { typescriptVersion as typescriptVersion$1 } from './lib/typescriptServicesMetadata.js';\nimport { languages, Emitter } from '../../../editor/editor.api.js';\n\nvar ModuleKind = /* @__PURE__ */ ((ModuleKind2) => {\n ModuleKind2[ModuleKind2[\"None\"] = 0] = \"None\";\n ModuleKind2[ModuleKind2[\"CommonJS\"] = 1] = \"CommonJS\";\n ModuleKind2[ModuleKind2[\"AMD\"] = 2] = \"AMD\";\n ModuleKind2[ModuleKind2[\"UMD\"] = 3] = \"UMD\";\n ModuleKind2[ModuleKind2[\"System\"] = 4] = \"System\";\n ModuleKind2[ModuleKind2[\"ES2015\"] = 5] = \"ES2015\";\n ModuleKind2[ModuleKind2[\"ESNext\"] = 99] = \"ESNext\";\n return ModuleKind2;\n})(ModuleKind || {});\nvar JsxEmit = /* @__PURE__ */ ((JsxEmit2) => {\n JsxEmit2[JsxEmit2[\"None\"] = 0] = \"None\";\n JsxEmit2[JsxEmit2[\"Preserve\"] = 1] = \"Preserve\";\n JsxEmit2[JsxEmit2[\"React\"] = 2] = \"React\";\n JsxEmit2[JsxEmit2[\"ReactNative\"] = 3] = \"ReactNative\";\n JsxEmit2[JsxEmit2[\"ReactJSX\"] = 4] = \"ReactJSX\";\n JsxEmit2[JsxEmit2[\"ReactJSXDev\"] = 5] = \"ReactJSXDev\";\n return JsxEmit2;\n})(JsxEmit || {});\nvar NewLineKind = /* @__PURE__ */ ((NewLineKind2) => {\n NewLineKind2[NewLineKind2[\"CarriageReturnLineFeed\"] = 0] = \"CarriageReturnLineFeed\";\n NewLineKind2[NewLineKind2[\"LineFeed\"] = 1] = \"LineFeed\";\n return NewLineKind2;\n})(NewLineKind || {});\nvar ScriptTarget = /* @__PURE__ */ ((ScriptTarget2) => {\n ScriptTarget2[ScriptTarget2[\"ES3\"] = 0] = \"ES3\";\n ScriptTarget2[ScriptTarget2[\"ES5\"] = 1] = \"ES5\";\n ScriptTarget2[ScriptTarget2[\"ES2015\"] = 2] = \"ES2015\";\n ScriptTarget2[ScriptTarget2[\"ES2016\"] = 3] = \"ES2016\";\n ScriptTarget2[ScriptTarget2[\"ES2017\"] = 4] = \"ES2017\";\n ScriptTarget2[ScriptTarget2[\"ES2018\"] = 5] = \"ES2018\";\n ScriptTarget2[ScriptTarget2[\"ES2019\"] = 6] = \"ES2019\";\n ScriptTarget2[ScriptTarget2[\"ES2020\"] = 7] = \"ES2020\";\n ScriptTarget2[ScriptTarget2[\"ESNext\"] = 99] = \"ESNext\";\n ScriptTarget2[ScriptTarget2[\"JSON\"] = 100] = \"JSON\";\n ScriptTarget2[ScriptTarget2[\"Latest\"] = 99 /* ESNext */] = \"Latest\";\n return ScriptTarget2;\n})(ScriptTarget || {});\nvar ModuleResolutionKind = /* @__PURE__ */ ((ModuleResolutionKind2) => {\n ModuleResolutionKind2[ModuleResolutionKind2[\"Classic\"] = 1] = \"Classic\";\n ModuleResolutionKind2[ModuleResolutionKind2[\"NodeJs\"] = 2] = \"NodeJs\";\n return ModuleResolutionKind2;\n})(ModuleResolutionKind || {});\nclass LanguageServiceDefaultsImpl {\n constructor(compilerOptions, diagnosticsOptions, workerOptions, inlayHintsOptions, modeConfiguration) {\n this._onDidChange = new Emitter();\n this._onDidExtraLibsChange = new Emitter();\n this._extraLibs = /* @__PURE__ */ Object.create(null);\n this._removedExtraLibs = /* @__PURE__ */ Object.create(null);\n this._eagerModelSync = false;\n this.setCompilerOptions(compilerOptions);\n this.setDiagnosticsOptions(diagnosticsOptions);\n this.setWorkerOptions(workerOptions);\n this.setInlayHintsOptions(inlayHintsOptions);\n this.setModeConfiguration(modeConfiguration);\n this._onDidExtraLibsChangeTimeout = -1;\n }\n get onDidChange() {\n return this._onDidChange.event;\n }\n get onDidExtraLibsChange() {\n return this._onDidExtraLibsChange.event;\n }\n get modeConfiguration() {\n return this._modeConfiguration;\n }\n get workerOptions() {\n return this._workerOptions;\n }\n get inlayHintsOptions() {\n return this._inlayHintsOptions;\n }\n getExtraLibs() {\n return this._extraLibs;\n }\n addExtraLib(content, _filePath) {\n let filePath;\n if (typeof _filePath === \"undefined\") {\n filePath = `ts:extralib-${Math.random().toString(36).substring(2, 15)}`;\n } else {\n filePath = _filePath;\n }\n if (this._extraLibs[filePath] && this._extraLibs[filePath].content === content) {\n return {\n dispose: () => {\n }\n };\n }\n let myVersion = 1;\n if (this._removedExtraLibs[filePath]) {\n myVersion = this._removedExtraLibs[filePath] + 1;\n }\n if (this._extraLibs[filePath]) {\n myVersion = this._extraLibs[filePath].version + 1;\n }\n this._extraLibs[filePath] = {\n content,\n version: myVersion\n };\n this._fireOnDidExtraLibsChangeSoon();\n return {\n dispose: () => {\n let extraLib = this._extraLibs[filePath];\n if (!extraLib) {\n return;\n }\n if (extraLib.version !== myVersion) {\n return;\n }\n delete this._extraLibs[filePath];\n this._removedExtraLibs[filePath] = myVersion;\n this._fireOnDidExtraLibsChangeSoon();\n }\n };\n }\n setExtraLibs(libs) {\n for (const filePath in this._extraLibs) {\n this._removedExtraLibs[filePath] = this._extraLibs[filePath].version;\n }\n this._extraLibs = /* @__PURE__ */ Object.create(null);\n if (libs && libs.length > 0) {\n for (const lib of libs) {\n const filePath = lib.filePath || `ts:extralib-${Math.random().toString(36).substring(2, 15)}`;\n const content = lib.content;\n let myVersion = 1;\n if (this._removedExtraLibs[filePath]) {\n myVersion = this._removedExtraLibs[filePath] + 1;\n }\n this._extraLibs[filePath] = {\n content,\n version: myVersion\n };\n }\n }\n this._fireOnDidExtraLibsChangeSoon();\n }\n _fireOnDidExtraLibsChangeSoon() {\n if (this._onDidExtraLibsChangeTimeout !== -1) {\n return;\n }\n this._onDidExtraLibsChangeTimeout = window.setTimeout(() => {\n this._onDidExtraLibsChangeTimeout = -1;\n this._onDidExtraLibsChange.fire(void 0);\n }, 0);\n }\n getCompilerOptions() {\n return this._compilerOptions;\n }\n setCompilerOptions(options) {\n this._compilerOptions = options || /* @__PURE__ */ Object.create(null);\n this._onDidChange.fire(void 0);\n }\n getDiagnosticsOptions() {\n return this._diagnosticsOptions;\n }\n setDiagnosticsOptions(options) {\n this._diagnosticsOptions = options || /* @__PURE__ */ Object.create(null);\n this._onDidChange.fire(void 0);\n }\n setWorkerOptions(options) {\n this._workerOptions = options || /* @__PURE__ */ Object.create(null);\n this._onDidChange.fire(void 0);\n }\n setInlayHintsOptions(options) {\n this._inlayHintsOptions = options || /* @__PURE__ */ Object.create(null);\n this._onDidChange.fire(void 0);\n }\n setMaximumWorkerIdleTime(value) {\n }\n setEagerModelSync(value) {\n this._eagerModelSync = value;\n }\n getEagerModelSync() {\n return this._eagerModelSync;\n }\n setModeConfiguration(modeConfiguration) {\n this._modeConfiguration = modeConfiguration || /* @__PURE__ */ Object.create(null);\n this._onDidChange.fire(void 0);\n }\n}\nconst typescriptVersion = typescriptVersion$1;\nconst modeConfigurationDefault = {\n completionItems: true,\n hovers: true,\n documentSymbols: true,\n definitions: true,\n references: true,\n documentHighlights: true,\n rename: true,\n diagnostics: true,\n documentRangeFormattingEdits: true,\n signatureHelp: true,\n onTypeFormattingEdits: true,\n codeActions: true,\n inlayHints: true\n};\nconst typescriptDefaults = new LanguageServiceDefaultsImpl(\n { allowNonTsExtensions: true, target: 99 /* Latest */ },\n { noSemanticValidation: false, noSyntaxValidation: false, onlyVisible: false },\n {},\n {},\n modeConfigurationDefault\n);\nconst javascriptDefaults = new LanguageServiceDefaultsImpl(\n { allowNonTsExtensions: true, allowJs: true, target: 99 /* Latest */ },\n { noSemanticValidation: true, noSyntaxValidation: false, onlyVisible: false },\n {},\n {},\n modeConfigurationDefault\n);\nconst getTypeScriptWorker = () => {\n return getMode().then((mode) => mode.getTypeScriptWorker());\n};\nconst getJavaScriptWorker = () => {\n return getMode().then((mode) => mode.getJavaScriptWorker());\n};\nfunction getMode() {\n return import('./tsMode.js');\n}\nlanguages.onLanguage(\"typescript\", () => {\n return getMode().then((mode) => mode.setupTypeScript(typescriptDefaults));\n});\nlanguages.onLanguage(\"javascript\", () => {\n return getMode().then((mode) => mode.setupJavaScript(javascriptDefaults));\n});\n\nexport { JsxEmit, ModuleKind, ModuleResolutionKind, NewLineKind, ScriptTarget, getJavaScriptWorker, getTypeScriptWorker, javascriptDefaults, typescriptDefaults, typescriptVersion };\n"],"file":"register-BDy01-q3.js"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/jsonMode-CBSEleE7.js","assets/tokenization-uOBOyHAS.js","assets/editor.api-OBQnf1nL.js","assets/vendor-datadog-DyjkTkvg.js","assets/rolldown-runtime-CNC7AqOf.js","assets/editor-jjEx9u7D.css","assets/workers-Bhsi-paP.js","assets/toggleHighContrast-el2uNoWb.js","assets/toggleHighContrast--ixms01u.css","assets/lspLanguageFeatures-DxCM7LI8.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{r as e}from"./rolldown-runtime-CNC7AqOf.js";import{i as t}from"./vendor-datadog-DyjkTkvg.js";import{m as n,n as r}from"./editor.api-OBQnf1nL.js";var i=e({getWorker:()=>o,jsonDefaults:()=>a}),a=new class{constructor(e,t,n){this._onDidChange=new r,this._languageId=e,this.setDiagnosticsOptions(t),this.setModeConfiguration(n)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get modeConfiguration(){return this._modeConfiguration}get diagnosticsOptions(){return this._diagnosticsOptions}setDiagnosticsOptions(e){this._diagnosticsOptions=e||Object.create(null),this._onDidChange.fire(this)}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)}}(`json`,{validate:!0,allowComments:!0,schemas:[],enableSchemaRequest:!1,schemaRequest:`warning`,schemaValidation:`warning`,comments:`error`,trailingCommas:`error`},{documentFormattingEdits:!0,documentRangeFormattingEdits:!0,completionItems:!0,hovers:!0,documentSymbols:!0,tokens:!0,colors:!0,foldingRanges:!0,diagnostics:!0,selectionRanges:!0}),o=()=>s().then(e=>e.getWorker());function s(){return t(()=>import(`./jsonMode-CBSEleE7.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]))}n.register({id:`json`,extensions:[`.json`,`.bowerrc`,`.jshintrc`,`.jscsrc`,`.eslintrc`,`.babelrc`,`.har`],aliases:[`JSON`,`json`],mimetypes:[`application/json`]}),n.onLanguage(`json`,()=>{s().then(e=>e.setupMode(a))});export{i as t};
|
|
3
|
+
//# sourceMappingURL=register-CQHRwNP4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"mappings":";sMAoDM,EAAe,IAAI,KAlDS,CAChC,YAAY,EAAY,EAAoB,EAAmB,CAC7D,KAAK,aAAe,IAAI,EACxB,KAAK,YAAc,EACnB,KAAK,sBAAsB,CAAkB,EAC7C,KAAK,qBAAqB,CAAiB,CAC7C,CACA,IAAI,aAAc,CAChB,OAAO,KAAK,aAAa,KAC3B,CACA,IAAI,YAAa,CACf,OAAO,KAAK,WACd,CACA,IAAI,mBAAoB,CACtB,OAAO,KAAK,kBACd,CACA,IAAI,oBAAqB,CACvB,OAAO,KAAK,mBACd,CACA,sBAAsB,EAAS,CAC7B,KAAK,oBAAsB,GAA2B,OAAO,OAAO,IAAI,EACxE,KAAK,aAAa,KAAK,IAAI,CAC7B,CACA,qBAAqB,EAAmB,CACtC,KAAK,mBAAqB,GAAqC,OAAO,OAAO,IAAI,EACjF,KAAK,aAAa,KAAK,IAAI,CAC7B,CACF,EAwBE,OACA,CAvBA,SAAU,GACV,cAAe,GACf,QAAS,CAAC,EACV,oBAAqB,GACrB,cAAe,UACf,iBAAkB,UAClB,SAAU,QACV,eAAgB,OAgBA,EAChB,CAdA,wBAAyB,GACzB,6BAA8B,GAC9B,gBAAiB,GACjB,OAAQ,GACR,gBAAiB,GACjB,OAAQ,GACR,OAAQ,GACR,cAAe,GACf,YAAa,GACb,gBAAiB,EAKM,CACzB,EACM,MAAkB,EAAQ,CAAC,CAAC,KAAM,GAAU,EAAM,UAAU,CAAC,EACnE,SAAS,GAAU,CACjB,aAAO,OAAO,iEAChB,CACA,EAAU,SAAS,CACjB,GAAI,OACJ,WAAY,CAAC,QAAS,WAAY,YAAa,UAAW,YAAa,WAAY,MAAM,EACzF,QAAS,CAAC,OAAQ,MAAM,EACxB,UAAW,CAAC,kBAAkB,CAChC,CAAC,EACD,EAAU,WAAW,WAAc,CACjC,EAAQ,CAAC,CAAC,KAAM,GAAU,EAAM,UAAU,CAAY,CAAC,CACzD,CAAC","names":[],"ignoreList":[0],"sources":["../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/features/json/register.js"],"sourcesContent":["import { languages, Emitter } from '../../../editor/editor.api.js';\n\nclass LanguageServiceDefaultsImpl {\n constructor(languageId, diagnosticsOptions, modeConfiguration) {\n this._onDidChange = new Emitter();\n this._languageId = languageId;\n this.setDiagnosticsOptions(diagnosticsOptions);\n this.setModeConfiguration(modeConfiguration);\n }\n get onDidChange() {\n return this._onDidChange.event;\n }\n get languageId() {\n return this._languageId;\n }\n get modeConfiguration() {\n return this._modeConfiguration;\n }\n get diagnosticsOptions() {\n return this._diagnosticsOptions;\n }\n setDiagnosticsOptions(options) {\n this._diagnosticsOptions = options || /* @__PURE__ */ Object.create(null);\n this._onDidChange.fire(this);\n }\n setModeConfiguration(modeConfiguration) {\n this._modeConfiguration = modeConfiguration || /* @__PURE__ */ Object.create(null);\n this._onDidChange.fire(this);\n }\n}\nconst diagnosticDefault = {\n validate: true,\n allowComments: true,\n schemas: [],\n enableSchemaRequest: false,\n schemaRequest: \"warning\",\n schemaValidation: \"warning\",\n comments: \"error\",\n trailingCommas: \"error\"\n};\nconst modeConfigurationDefault = {\n documentFormattingEdits: true,\n documentRangeFormattingEdits: true,\n completionItems: true,\n hovers: true,\n documentSymbols: true,\n tokens: true,\n colors: true,\n foldingRanges: true,\n diagnostics: true,\n selectionRanges: true\n};\nconst jsonDefaults = new LanguageServiceDefaultsImpl(\n \"json\",\n diagnosticDefault,\n modeConfigurationDefault\n);\nconst getWorker = () => getMode().then((mode2) => mode2.getWorker());\nfunction getMode() {\n return import('./jsonMode.js');\n}\nlanguages.register({\n id: \"json\",\n extensions: [\".json\", \".bowerrc\", \".jshintrc\", \".jscsrc\", \".eslintrc\", \".babelrc\", \".har\"],\n aliases: [\"JSON\", \"json\"],\n mimetypes: [\"application/json\"]\n});\nlanguages.onLanguage(\"json\", () => {\n getMode().then((mode2) => mode2.setupMode(jsonDefaults));\n});\n\nexport { getWorker, jsonDefaults };\n"],"file":"register-CQHRwNP4.js"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{A as e}from"./vendor-tanstack-0SjDjtT0.js";import{t}from"./createLucideIcon-BDx8noBh.js";import{r as n}from"./pollUnlessForbidden-
|
|
2
|
-
//# sourceMappingURL=setComponentFile-
|
|
1
|
+
import{A as e}from"./vendor-tanstack-0SjDjtT0.js";import{t}from"./createLucideIcon-BDx8noBh.js";import{r as n}from"./pollUnlessForbidden-BhzefVRn.js";import{st as r}from"./index-Sevt3MVx.js";var i=t(`file`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}]]),a=t(`folder`,[[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]);function o(...e){let t=e.flat(1);return t.map((e,n)=>typeof e==`string`?s(e,n!==0,n!==t.length-1):e).join(`/`)}function s(e,t=!0,n=!0){let r=t&&e[0]===`/`,i=n&&e[e.length-1]===`/`;return r&&i?e.slice(1,-1):r?e.slice(1):i?e.slice(0,-1):e}var c=`https://github.com/HarperFast/create-harper/tree/main`;function l(e){return{...e,npmPackage:`@harperfast/template-${e.name}-studio`,githubUrl:`${c}/template-${e.name}`}}var u=[l({name:`vanilla-ts`,framework:`vanilla`,title:`Vanilla + TypeScript`,description:`The same Web + REST ORM from the first template, but with TypeScript sprinkled in.`,tags:[`Vanilla`,`TypeScript`,`GraphQL`],typescript:!0,ssr:!1}),l({name:`vanilla`,framework:`vanilla`,title:`Vanilla JS`,description:`Define your entities in schema.graphql, add your HTML/CSS/JS in web, and you're cooking!`,tags:[`Vanilla`,`REST`,`GraphQL`,`ORM`],typescript:!1,ssr:!1}),l({name:`react-ts`,framework:`react`,title:`React + TypeScript`,description:`The same Vite-powered React app, with end-to-end type safety from TypeScript.`,tags:[`React`,`TypeScript`,`Vite`,`SPA`],typescript:!0,ssr:!1}),l({name:`react`,framework:`react`,title:`React`,description:`A Vite-powered React single-page app, wired up to Harper's REST + GraphQL APIs out of the box.`,tags:[`React`,`Vite`,`SPA`,`GraphQL`],typescript:!1,ssr:!1}),l({name:`react-ts-ssr`,framework:`react`,title:`React + TypeScript + SSR`,description:`Server-rendered React with Vite and TypeScript for type-safe, SEO-friendly pages on Harper.`,tags:[`React`,`TypeScript`,`SSR`,`Vite`],typescript:!0,ssr:!0}),l({name:`react-ssr`,framework:`react`,title:`React + SSR`,description:`Server-rendered React with Vite for fast first paints, hydrating into a full SPA on Harper.`,tags:[`React`,`SSR`,`Vite`,`GraphQL`],typescript:!1,ssr:!0}),l({name:`vue-ts`,framework:`vue`,title:`Vue + TypeScript`,description:`The same Vite-powered Vue app, with end-to-end type safety from TypeScript.`,tags:[`Vue`,`TypeScript`,`Vite`,`SPA`],typescript:!0,ssr:!1}),l({name:`vue`,framework:`vue`,title:`Vue`,description:`A Vite-powered Vue single-page app, wired up to Harper's REST + GraphQL APIs out of the box.`,tags:[`Vue`,`Vite`,`SPA`,`GraphQL`],typescript:!1,ssr:!1}),l({name:`vue-ts-ssr`,framework:`vue`,title:`Vue + TypeScript + SSR`,description:`Server-rendered Vue with Vite and TypeScript for type-safe, SEO-friendly pages on Harper.`,tags:[`Vue`,`TypeScript`,`SSR`,`Vite`],typescript:!0,ssr:!0}),l({name:`vue-ssr`,framework:`vue`,title:`Vue + SSR`,description:`Server-rendered Vue with Vite for fast first paints, hydrating into a full SPA on Harper.`,tags:[`Vue`,`SSR`,`Vite`,`GraphQL`],typescript:!1,ssr:!0})],d=u.map(e=>e.name),f=[`vanilla`,`react`,`vue`];function p(e){let t=f.indexOf(e);return t===-1?1/0:t}var m=[...u].sort((e,t)=>p(e.framework)-p(t.framework)||Number(e.ssr)-Number(t.ssr)||Number(e.typescript)-Number(t.typescript)).map(e=>({id:e.name,name:e.title,description:e.description,tags:[...e.tags],npm:e.npmPackage,githubUrl:e.githubUrl}));async function h({instanceClient:e,project:t,template:n,entityType:r}){let{data:i}=await e.post(`/`,{operation:`add_component`,project:t,template:n,replicated:r===`cluster`},{timeout:3e5});return i}function g(){return e({mutationFn:h})}function _(e,t,n){for(let r of e)if(r[t]===n)return r}async function v({file:e,project:t,entityType:n,instanceClient:r}){let{data:i}=await r.post(`/`,{operation:`drop_component`,file:e||void 0,project:t,replicated:n===`cluster`});return i}var y=`__root__`,b=`importedApplications`,x=`newApplication`;function S(e){let t={},i=[],a=[],o=[];for(let n of e)r(n)?n.package?a.push(n.path):i.push(n.path):o.push(n.path),C(t,n);return t[y]={index:y,isFolder:!0,children:[x,b,...i,...o].filter(n),data:void 0,canMove:!1,canRename:!1},t[b]={index:b,isFolder:!0,children:a,data:{name:`Imported Applications`,path:b,package:b,project:``,entries:[]},canMove:!1,canRename:!1},t[x]={index:x,isFolder:!1,data:{name:`New Application`,path:x,project:``},canMove:!1,canRename:!1},{items:t,rootId:y}}function C(e,t){let n=t.path;if(r(t)){let i=t,a=[],o=[];for(let e of i.entries)r(e)?a.push(e.path):o.push(e.path);e[n]={index:n,isFolder:!0,children:[...a,...o],data:t,canMove:!1,canRename:!1};for(let t of i.entries)C(e,t)}else e[n]={index:n,isFolder:!1,data:t,canMove:!t.package,canRename:!t.package}}function w(e,t,n,r=[]){let i=[];for(let a of e){let e=n(a,r);i.push(e);let o=a,s=o[t];s&&(e[t]=w(s,t,n,[...r,o]))}return i}function T(e){let t=new Set;return{rootEntries:w(e||[],`entries`,(e,n)=>{let i=r(e)&&e.entries.find(e=>e.name.toLowerCase()===`readme.md`),a=[...n.map(e=>e.name),e.name].join(`/`);return t.add(a),{name:e.name,path:a,project:(n[0]||e)?.name,package:(n[0]||e)?.package,overviewEntry:i&&!r(i)&&{name:i.name,path:[...n.map(e=>e.name),e.name,i.name].join(`/`),project:(n[0]||e)?.name,package:(n[0]||e)?.package}||void 0}}),pathsRegistry:t}}async function E({file:e,payload:t,project:n,entityType:r,instanceClient:i,encoding:a}){let{data:o}=await i.post(`/`,{operation:`set_component_file`,file:e,payload:t,project:n,encoding:a,replicated:r===`cluster`},{timeout:3e5});return o}function D(){return e({mutationFn:E})}export{b as a,v as c,g as d,m as f,i as g,a as h,S as i,_ as l,o as m,D as n,x as o,d as p,T as r,y as s,E as t,h as u};
|
|
2
|
+
//# sourceMappingURL=setComponentFile-D0aPcI3W.js.map
|
package/studio/web/assets/{setComponentFile-DMPo4UjC.js.map → setComponentFile-D0aPcI3W.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setComponentFile-DMPo4UjC.js","names":["__iconNode","templates"],"sources":["../../node_modules/.pnpm/lucide-react@1.26.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/file.mjs","../../node_modules/.pnpm/lucide-react@1.26.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/folder.mjs","../../src/lib/string/paths/joinPath.ts","../../node_modules/.pnpm/create-harper@1.10.12/node_modules/create-harper/lib/constants/templates.js","../../src/features/instance/applications/components/NewApplication/templates.ts","../../src/integrations/api/instance/applications/addComponent.ts","../../src/lib/arrays/findBy.ts","../../src/integrations/api/instance/applications/dropComponent.ts","../../src/features/instance/applications/components/ApplicationsSidebar/specialItems.ts","../../src/features/instance/applications/components/ApplicationsSidebar/buildItems.tsx","../../src/lib/arrays/transformNodes.ts","../../src/features/instance/applications/components/ApplicationsSidebar/calculateRootEntries.ts","../../src/integrations/api/instance/applications/setComponentFile.ts"],"sourcesContent":["/**\n * @license lucide-react v1.26.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }]\n];\nconst File = createLucideIcon(\"file\", __iconNode);\n\nexport { __iconNode, File as default };\n//# sourceMappingURL=file.mjs.map\n","/**\n * @license lucide-react v1.26.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\",\n key: \"1kt360\"\n }\n ]\n];\nconst Folder = createLucideIcon(\"folder\", __iconNode);\n\nexport { __iconNode, Folder as default };\n//# sourceMappingURL=folder.mjs.map\n","export function joinPath(...parts: (string | string[])[]): string {\n\tconst flattened = parts.flat(1);\n\treturn flattened\n\t\t.map((p, i) =>\n\t\t\ttypeof p !== 'string'\n\t\t\t\t? p\n\t\t\t\t: trimSlashes(p, i !== 0, i !== flattened.length - 1)\n\t\t)\n\t\t.join('/');\n}\n\nfunction trimSlashes(str: string, start: boolean = true, end: boolean = true) {\n\tconst trimStart = start && str[0] === '/';\n\tconst trimEnd = end && str[str.length - 1] === '/';\n\tif (trimStart && trimEnd) {\n\t\treturn str.slice(1, -1);\n\t}\n\tif (trimStart) {\n\t\treturn str.slice(1);\n\t}\n\tif (trimEnd) {\n\t\treturn str.slice(0, -1);\n\t}\n\treturn str;\n}\n","const CREATE_HARPER_TREE = 'https://github.com/HarperFast/create-harper/tree/main';\n\n/**\n * @typedef {'vanilla' | 'react' | 'vue'} Framework\n */\n\n/**\n * @typedef {Object} TemplateInfo\n * @property {string} name - The canonical template name (e.g. 'vanilla', 'react-ts'). Used to scaffold.\n * @property {Framework} framework - The framework family this template belongs to.\n * @property {string} title - A human-friendly display title.\n * @property {string} description - A short description of the template.\n * @property {string[]} tags - Tags describing the template's stack.\n * @property {boolean} typescript - Whether the template uses TypeScript.\n * @property {boolean} ssr - Whether the template is server-side rendered.\n * @property {string} npmPackage - The published Studio template package for this template.\n * @property {string} githubUrl - A link to the template's source on GitHub.\n */\n\n/**\n * Build a {@link TemplateInfo} entry, deriving the npm package and GitHub URL from the template name.\n *\n * @param {Omit<TemplateInfo, 'npmPackage' | 'githubUrl'>} info\n * @returns {TemplateInfo}\n */\nfunction template(info) {\n\treturn {\n\t\t...info,\n\t\tnpmPackage: `@harperfast/template-${info.name}-studio`,\n\t\tgithubUrl: `${CREATE_HARPER_TREE}/template-${info.name}`,\n\t};\n}\n\n/**\n * The catalog of every template create-harper can scaffold. This is the single source of truth from\n * which {@link templateNames} (the flat name list) and\n * {@link import('./frameworks.js').frameworks} (the interactive picker) are derived.\n *\n * Order is significant: it determines the order of the flat name list and the CLI picker.\n *\n * @type {TemplateInfo[]}\n */\nexport const templates = [\n\ttemplate({\n\t\tname: 'vanilla-ts',\n\t\tframework: 'vanilla',\n\t\ttitle: 'Vanilla + TypeScript',\n\t\tdescription: 'The same Web + REST ORM from the first template, but with TypeScript sprinkled in.',\n\t\ttags: ['Vanilla', 'TypeScript', 'GraphQL'],\n\t\ttypescript: true,\n\t\tssr: false,\n\t}),\n\ttemplate({\n\t\tname: 'vanilla',\n\t\tframework: 'vanilla',\n\t\ttitle: 'Vanilla JS',\n\t\tdescription: \"Define your entities in schema.graphql, add your HTML/CSS/JS in web, and you're cooking!\",\n\t\ttags: ['Vanilla', 'REST', 'GraphQL', 'ORM'],\n\t\ttypescript: false,\n\t\tssr: false,\n\t}),\n\ttemplate({\n\t\tname: 'react-ts',\n\t\tframework: 'react',\n\t\ttitle: 'React + TypeScript',\n\t\tdescription: 'The same Vite-powered React app, with end-to-end type safety from TypeScript.',\n\t\ttags: ['React', 'TypeScript', 'Vite', 'SPA'],\n\t\ttypescript: true,\n\t\tssr: false,\n\t}),\n\ttemplate({\n\t\tname: 'react',\n\t\tframework: 'react',\n\t\ttitle: 'React',\n\t\tdescription: \"A Vite-powered React single-page app, wired up to Harper's REST + GraphQL APIs out of the box.\",\n\t\ttags: ['React', 'Vite', 'SPA', 'GraphQL'],\n\t\ttypescript: false,\n\t\tssr: false,\n\t}),\n\ttemplate({\n\t\tname: 'react-ts-ssr',\n\t\tframework: 'react',\n\t\ttitle: 'React + TypeScript + SSR',\n\t\tdescription: 'Server-rendered React with Vite and TypeScript for type-safe, SEO-friendly pages on Harper.',\n\t\ttags: ['React', 'TypeScript', 'SSR', 'Vite'],\n\t\ttypescript: true,\n\t\tssr: true,\n\t}),\n\ttemplate({\n\t\tname: 'react-ssr',\n\t\tframework: 'react',\n\t\ttitle: 'React + SSR',\n\t\tdescription: 'Server-rendered React with Vite for fast first paints, hydrating into a full SPA on Harper.',\n\t\ttags: ['React', 'SSR', 'Vite', 'GraphQL'],\n\t\ttypescript: false,\n\t\tssr: true,\n\t}),\n\ttemplate({\n\t\tname: 'vue-ts',\n\t\tframework: 'vue',\n\t\ttitle: 'Vue + TypeScript',\n\t\tdescription: 'The same Vite-powered Vue app, with end-to-end type safety from TypeScript.',\n\t\ttags: ['Vue', 'TypeScript', 'Vite', 'SPA'],\n\t\ttypescript: true,\n\t\tssr: false,\n\t}),\n\ttemplate({\n\t\tname: 'vue',\n\t\tframework: 'vue',\n\t\ttitle: 'Vue',\n\t\tdescription: \"A Vite-powered Vue single-page app, wired up to Harper's REST + GraphQL APIs out of the box.\",\n\t\ttags: ['Vue', 'Vite', 'SPA', 'GraphQL'],\n\t\ttypescript: false,\n\t\tssr: false,\n\t}),\n\ttemplate({\n\t\tname: 'vue-ts-ssr',\n\t\tframework: 'vue',\n\t\ttitle: 'Vue + TypeScript + SSR',\n\t\tdescription: 'Server-rendered Vue with Vite and TypeScript for type-safe, SEO-friendly pages on Harper.',\n\t\ttags: ['Vue', 'TypeScript', 'SSR', 'Vite'],\n\t\ttypescript: true,\n\t\tssr: true,\n\t}),\n\ttemplate({\n\t\tname: 'vue-ssr',\n\t\tframework: 'vue',\n\t\ttitle: 'Vue + SSR',\n\t\tdescription: 'Server-rendered Vue with Vite for fast first paints, hydrating into a full SPA on Harper.',\n\t\ttags: ['Vue', 'SSR', 'Vite', 'GraphQL'],\n\t\ttypescript: false,\n\t\tssr: true,\n\t}),\n];\n\n/**\n * The flat list of every template name, in catalog order. This is the canonical, dependency-free list\n * other tools can import to validate or enumerate templates.\n *\n * @type {string[]}\n */\nexport const templateNames = templates.map((t) => t.name);\n","import { templates as catalog } from 'create-harper/templates';\n\n// create-harper is the single source of truth for the template list, descriptions, npm packages, and\n// GitHub links. New templates added there flow through here (and into the createApp agent tool)\n// automatically. create-harper lists TypeScript-first; we re-sort to Studio's established display order\n// (by framework, then non-SSR before SSR, then JavaScript before TypeScript) so the picker and its\n// default selection stay stable.\nconst FRAMEWORK_ORDER = ['vanilla', 'react', 'vue'] as const;\n\n// Rank a framework by its position in FRAMEWORK_ORDER. Any framework not listed (e.g. a future\n// Svelte/Angular template added to create-harper) sorts to the end rather than the top.\nfunction frameworkRank(framework: string): number {\n\tconst index = (FRAMEWORK_ORDER as readonly string[]).indexOf(framework);\n\treturn index === -1 ? Infinity : index;\n}\n\nexport const templates = [...catalog]\n\t.sort((a, b) =>\n\t\tframeworkRank(a.framework) - frameworkRank(b.framework)\n\t\t|| Number(a.ssr) - Number(b.ssr)\n\t\t|| Number(a.typescript) - Number(b.typescript)\n\t)\n\t.map((t) => ({\n\t\t// Widen to `string`: the New Application form supplies the selected id as a plain string.\n\t\tid: t.name as string,\n\t\tname: t.title,\n\t\tdescription: t.description,\n\t\ttags: [...t.tags],\n\t\tnpm: t.npmPackage,\n\t\tgithubUrl: t.githubUrl,\n\t}));\n","import { InstanceClientConfig, InstanceTypeConfig } from '@/config/instanceClientConfig';\nimport { ReplicatedResponse } from '@/integrations/api/replication';\nimport { useMutation } from '@tanstack/react-query';\n\nexport interface CreateComponentFormData {\n\tproject: string;\n\ttemplate: string;\n}\n\nexport async function addComponent({\n\tinstanceClient,\n\tproject,\n\ttemplate,\n\tentityType,\n}: CreateComponentFormData & InstanceClientConfig & InstanceTypeConfig): Promise<ReplicatedResponse> {\n\tconst { data } = await instanceClient.post('/', {\n\t\toperation: 'add_component',\n\t\tproject,\n\t\ttemplate,\n\t\treplicated: entityType === 'cluster',\n\t}, { timeout: 300_000 });\n\treturn data;\n}\n\nexport function useAddComponentMutation() {\n\treturn useMutation({\n\t\tmutationFn: addComponent,\n\t});\n}\n","export function findBy<T, F extends keyof T>(array: T[], fieldName: F, value: T[F]): T | undefined {\n\tfor (const element of array) {\n\t\tif (element[fieldName] === value) {\n\t\t\treturn element;\n\t\t}\n\t}\n\treturn undefined;\n}\n","import { InstanceClientConfig, InstanceTypeConfig } from '@/config/instanceClientConfig';\nimport { ReplicatedResponse } from '@/integrations/api/replication';\nimport { useMutation } from '@tanstack/react-query';\n\ninterface DropComponentRequest extends InstanceClientConfig, InstanceTypeConfig {\n\tproject: string;\n\tfile: string | undefined;\n}\n\nexport async function dropComponent({\n\tfile,\n\tproject,\n\tentityType,\n\tinstanceClient,\n}: DropComponentRequest): Promise<ReplicatedResponse> {\n\tconst { data } = await instanceClient.post('/', {\n\t\toperation: 'drop_component',\n\t\tfile: file || undefined,\n\t\tproject,\n\t\treplicated: entityType === 'cluster',\n\t});\n\treturn data;\n}\n\nexport function useDropComponent() {\n\treturn useMutation({\n\t\tmutationFn: dropComponent,\n\t});\n}\n","export const rootId = '__root__';\nexport const importedApplications = 'importedApplications';\nexport const newApplication = 'newApplication';\n","import type { DirectoryEntry } from '@/features/instance/applications/context/directoryEntry';\nimport type { FileEntry } from '@/features/instance/applications/context/fileEntry';\nimport { isDirectory } from '@/features/instance/applications/context/isDirectory';\nimport { excludeFalsy } from '@/lib/arrays/excludeFalsy';\nimport type { TreeItem } from 'react-complex-tree';\nimport { importedApplications, newApplication, rootId } from './specialItems';\n\nexport function buildItems(rootEntries: Array<DirectoryEntry | FileEntry>): {\n\titems: Record<string, TreeItem<DirectoryEntry | FileEntry | undefined>>;\n\trootId: string;\n} {\n\tconst items: Record<string, TreeItem<DirectoryEntry | FileEntry | undefined>> = {};\n\n\tconst directoryIds: string[] = [];\n\tconst applicationIds: string[] = [];\n\tconst fileIds: string[] = [];\n\tfor (const entry of rootEntries) {\n\t\tif (isDirectory(entry)) {\n\t\t\tif (entry.package) {\n\t\t\t\tapplicationIds.push(entry.path);\n\t\t\t} else {\n\t\t\t\tdirectoryIds.push(entry.path);\n\t\t\t}\n\t\t} else {\n\t\t\tfileIds.push(entry.path);\n\t\t}\n\t\taddEntry(items, entry);\n\t}\n\n\titems[rootId] = {\n\t\tindex: rootId,\n\t\tisFolder: true,\n\t\tchildren: [\n\t\t\tnewApplication,\n\t\t\timportedApplications,\n\t\t\t...directoryIds,\n\t\t\t...fileIds,\n\t\t].filter(\n\t\t\texcludeFalsy,\n\t\t),\n\t\tdata: undefined,\n\t\tcanMove: false,\n\t\tcanRename: false,\n\t} satisfies TreeItem<undefined>;\n\n\titems[importedApplications] = {\n\t\tindex: importedApplications,\n\t\tisFolder: true,\n\t\tchildren: applicationIds,\n\t\tdata: {\n\t\t\tname: 'Imported Applications',\n\t\t\tpath: importedApplications,\n\t\t\tpackage: importedApplications,\n\t\t\tproject: '',\n\t\t\tentries: [],\n\t\t},\n\t\tcanMove: false,\n\t\tcanRename: false,\n\t} satisfies TreeItem<DirectoryEntry>;\n\n\titems[newApplication] = {\n\t\tindex: newApplication,\n\t\tisFolder: false,\n\t\tdata: {\n\t\t\tname: 'New Application',\n\t\t\tpath: newApplication,\n\t\t\tproject: '',\n\t\t},\n\t\tcanMove: false,\n\t\tcanRename: false,\n\t} satisfies TreeItem<FileEntry>;\n\n\treturn { items, rootId };\n}\n\nfunction addEntry(\n\titems: Record<string, TreeItem<DirectoryEntry | FileEntry | undefined>>,\n\tentry: DirectoryEntry | FileEntry,\n) {\n\tconst index = entry.path;\n\tif (isDirectory(entry)) {\n\t\tconst dir = entry as DirectoryEntry;\n\t\tconst childDirectoryIds: string[] = [];\n\t\tconst childFileIds: string[] = [];\n\t\tfor (const childEntry of dir.entries) {\n\t\t\tif (isDirectory(childEntry)) {\n\t\t\t\tchildDirectoryIds.push(childEntry.path);\n\t\t\t} else {\n\t\t\t\tchildFileIds.push(childEntry.path);\n\t\t\t}\n\t\t}\n\t\titems[index] = {\n\t\t\tindex,\n\t\t\tisFolder: true,\n\t\t\tchildren: [...childDirectoryIds, ...childFileIds],\n\t\t\tdata: entry,\n\t\t\tcanMove: false,\n\t\t\tcanRename: false,\n\t\t} satisfies TreeItem<DirectoryEntry>;\n\t\tfor (const child of dir.entries) {\n\t\t\taddEntry(items, child);\n\t\t}\n\t} else {\n\t\titems[index] = {\n\t\t\tindex,\n\t\t\tisFolder: false,\n\t\t\tdata: entry,\n\t\t\tcanMove: !entry.package,\n\t\t\tcanRename: !entry.package,\n\t\t} satisfies TreeItem<FileEntry>;\n\t}\n}\n","export function transformNodes<Transformed, Branch, Leaf>(\n\tnodes: Array<Branch | Leaf>,\n\tnestedPropertyName: keyof Branch,\n\ttransformer: (node: Branch | Leaf, parents: Branch[]) => Transformed,\n\tparents: Branch[] = [],\n): Transformed[] {\n\tconst results: Transformed[] = [];\n\n\tfor (const node of nodes) {\n\t\tconst transformed = transformer(node, parents);\n\t\tresults.push(transformed);\n\t\tconst potentialBranch = node as Branch;\n\t\tconst nestedNodes = potentialBranch[nestedPropertyName] as Array<Branch | Leaf>;\n\t\tif (nestedNodes) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\t(transformed as any)[nestedPropertyName] = transformNodes(nestedNodes, nestedPropertyName, transformer, [\n\t\t\t\t...parents,\n\t\t\t\tpotentialBranch,\n\t\t\t]);\n\t\t}\n\t}\n\n\treturn results;\n}\n","import { DirectoryEntry } from '@/features/instance/applications/context/directoryEntry';\nimport { FileEntry } from '@/features/instance/applications/context/fileEntry';\nimport { isDirectory } from '@/features/instance/applications/context/isDirectory';\nimport { APIDirectoryEntry, APIFileEntry } from '@/integrations/api/instance/applications/getComponents';\nimport { transformNodes } from '@/lib/arrays/transformNodes';\n\nexport function calculateRootEntries(entries: Array<APIDirectoryEntry | APIFileEntry>): {\n\trootEntries: Array<DirectoryEntry | FileEntry>;\n\tpathsRegistry: Set<string>;\n} {\n\tconst pathsRegistry = new Set<string>();\n\tconst rootEntries = transformNodes(\n\t\tentries || [],\n\t\t'entries',\n\t\t(node: APIFileEntry | APIDirectoryEntry, parents: APIDirectoryEntry[]) => {\n\t\t\tconst readMeAPIFile = isDirectory(node) && node.entries.find(e => e.name.toLowerCase() === 'readme.md');\n\t\t\tconst path = [...parents.map(p => p.name), node.name].join('/');\n\t\t\tpathsRegistry.add(path);\n\t\t\treturn {\n\t\t\t\tname: node.name,\n\t\t\t\tpath,\n\t\t\t\tproject: (parents[0] || node)?.name,\n\t\t\t\tpackage: (parents[0] || node)?.package,\n\t\t\t\toverviewEntry: readMeAPIFile && !isDirectory(readMeAPIFile) && {\n\t\t\t\t\t\t\tname: readMeAPIFile.name,\n\t\t\t\t\t\t\tpath: [...parents.map(p => p.name), node.name, readMeAPIFile.name].join('/'),\n\t\t\t\t\t\t\tproject: (parents[0] || node)?.name,\n\t\t\t\t\t\t\tpackage: (parents[0] || node)?.package,\n\t\t\t\t\t\t} || undefined,\n\t\t\t} satisfies DirectoryEntry | FileEntry;\n\t\t},\n\t);\n\treturn {\n\t\trootEntries,\n\t\tpathsRegistry,\n\t};\n}\n","import { InstanceClientConfig, InstanceTypeConfig } from '@/config/instanceClientConfig';\nimport { useMutation } from '@tanstack/react-query';\n\nexport interface SetComponentFileRequest extends InstanceClientConfig, InstanceTypeConfig {\n\tfile: string;\n\tpayload?: string;\n\tproject: string;\n\tencoding?: 'utf8' | 'ASCII' | 'binary' | 'hex' | 'base64' | 'utf16le' | 'latin1' | 'ucs2';\n}\n\nexport async function setComponentFile({\n\tfile,\n\tpayload,\n\tproject,\n\tentityType,\n\tinstanceClient,\n\tencoding,\n}: SetComponentFileRequest) {\n\tconst { data } = await instanceClient.post('/', {\n\t\toperation: 'set_component_file',\n\t\tfile,\n\t\tpayload,\n\t\tproject,\n\t\tencoding,\n\t\treplicated: entityType === 'cluster',\n\t}, { timeout: 300_000 });\n\treturn data;\n}\n\nexport function useSetComponentFile() {\n\treturn useMutation({\n\t\tmutationFn: setComponentFile,\n\t});\n}\n"],"x_google_ignoreList":[0,1,3],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setComponentFile-D0aPcI3W.js","names":["__iconNode","templates"],"sources":["../../node_modules/.pnpm/lucide-react@1.26.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/file.mjs","../../node_modules/.pnpm/lucide-react@1.26.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/folder.mjs","../../src/lib/string/paths/joinPath.ts","../../node_modules/.pnpm/create-harper@1.10.12/node_modules/create-harper/lib/constants/templates.js","../../src/features/instance/applications/components/NewApplication/templates.ts","../../src/integrations/api/instance/applications/addComponent.ts","../../src/lib/arrays/findBy.ts","../../src/integrations/api/instance/applications/dropComponent.ts","../../src/features/instance/applications/components/ApplicationsSidebar/specialItems.ts","../../src/features/instance/applications/components/ApplicationsSidebar/buildItems.tsx","../../src/lib/arrays/transformNodes.ts","../../src/features/instance/applications/components/ApplicationsSidebar/calculateRootEntries.ts","../../src/integrations/api/instance/applications/setComponentFile.ts"],"sourcesContent":["/**\n * @license lucide-react v1.26.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }]\n];\nconst File = createLucideIcon(\"file\", __iconNode);\n\nexport { __iconNode, File as default };\n//# sourceMappingURL=file.mjs.map\n","/**\n * @license lucide-react v1.26.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\",\n key: \"1kt360\"\n }\n ]\n];\nconst Folder = createLucideIcon(\"folder\", __iconNode);\n\nexport { __iconNode, Folder as default };\n//# sourceMappingURL=folder.mjs.map\n","export function joinPath(...parts: (string | string[])[]): string {\n\tconst flattened = parts.flat(1);\n\treturn flattened\n\t\t.map((p, i) =>\n\t\t\ttypeof p !== 'string'\n\t\t\t\t? p\n\t\t\t\t: trimSlashes(p, i !== 0, i !== flattened.length - 1)\n\t\t)\n\t\t.join('/');\n}\n\nfunction trimSlashes(str: string, start: boolean = true, end: boolean = true) {\n\tconst trimStart = start && str[0] === '/';\n\tconst trimEnd = end && str[str.length - 1] === '/';\n\tif (trimStart && trimEnd) {\n\t\treturn str.slice(1, -1);\n\t}\n\tif (trimStart) {\n\t\treturn str.slice(1);\n\t}\n\tif (trimEnd) {\n\t\treturn str.slice(0, -1);\n\t}\n\treturn str;\n}\n","const CREATE_HARPER_TREE = 'https://github.com/HarperFast/create-harper/tree/main';\n\n/**\n * @typedef {'vanilla' | 'react' | 'vue'} Framework\n */\n\n/**\n * @typedef {Object} TemplateInfo\n * @property {string} name - The canonical template name (e.g. 'vanilla', 'react-ts'). Used to scaffold.\n * @property {Framework} framework - The framework family this template belongs to.\n * @property {string} title - A human-friendly display title.\n * @property {string} description - A short description of the template.\n * @property {string[]} tags - Tags describing the template's stack.\n * @property {boolean} typescript - Whether the template uses TypeScript.\n * @property {boolean} ssr - Whether the template is server-side rendered.\n * @property {string} npmPackage - The published Studio template package for this template.\n * @property {string} githubUrl - A link to the template's source on GitHub.\n */\n\n/**\n * Build a {@link TemplateInfo} entry, deriving the npm package and GitHub URL from the template name.\n *\n * @param {Omit<TemplateInfo, 'npmPackage' | 'githubUrl'>} info\n * @returns {TemplateInfo}\n */\nfunction template(info) {\n\treturn {\n\t\t...info,\n\t\tnpmPackage: `@harperfast/template-${info.name}-studio`,\n\t\tgithubUrl: `${CREATE_HARPER_TREE}/template-${info.name}`,\n\t};\n}\n\n/**\n * The catalog of every template create-harper can scaffold. This is the single source of truth from\n * which {@link templateNames} (the flat name list) and\n * {@link import('./frameworks.js').frameworks} (the interactive picker) are derived.\n *\n * Order is significant: it determines the order of the flat name list and the CLI picker.\n *\n * @type {TemplateInfo[]}\n */\nexport const templates = [\n\ttemplate({\n\t\tname: 'vanilla-ts',\n\t\tframework: 'vanilla',\n\t\ttitle: 'Vanilla + TypeScript',\n\t\tdescription: 'The same Web + REST ORM from the first template, but with TypeScript sprinkled in.',\n\t\ttags: ['Vanilla', 'TypeScript', 'GraphQL'],\n\t\ttypescript: true,\n\t\tssr: false,\n\t}),\n\ttemplate({\n\t\tname: 'vanilla',\n\t\tframework: 'vanilla',\n\t\ttitle: 'Vanilla JS',\n\t\tdescription: \"Define your entities in schema.graphql, add your HTML/CSS/JS in web, and you're cooking!\",\n\t\ttags: ['Vanilla', 'REST', 'GraphQL', 'ORM'],\n\t\ttypescript: false,\n\t\tssr: false,\n\t}),\n\ttemplate({\n\t\tname: 'react-ts',\n\t\tframework: 'react',\n\t\ttitle: 'React + TypeScript',\n\t\tdescription: 'The same Vite-powered React app, with end-to-end type safety from TypeScript.',\n\t\ttags: ['React', 'TypeScript', 'Vite', 'SPA'],\n\t\ttypescript: true,\n\t\tssr: false,\n\t}),\n\ttemplate({\n\t\tname: 'react',\n\t\tframework: 'react',\n\t\ttitle: 'React',\n\t\tdescription: \"A Vite-powered React single-page app, wired up to Harper's REST + GraphQL APIs out of the box.\",\n\t\ttags: ['React', 'Vite', 'SPA', 'GraphQL'],\n\t\ttypescript: false,\n\t\tssr: false,\n\t}),\n\ttemplate({\n\t\tname: 'react-ts-ssr',\n\t\tframework: 'react',\n\t\ttitle: 'React + TypeScript + SSR',\n\t\tdescription: 'Server-rendered React with Vite and TypeScript for type-safe, SEO-friendly pages on Harper.',\n\t\ttags: ['React', 'TypeScript', 'SSR', 'Vite'],\n\t\ttypescript: true,\n\t\tssr: true,\n\t}),\n\ttemplate({\n\t\tname: 'react-ssr',\n\t\tframework: 'react',\n\t\ttitle: 'React + SSR',\n\t\tdescription: 'Server-rendered React with Vite for fast first paints, hydrating into a full SPA on Harper.',\n\t\ttags: ['React', 'SSR', 'Vite', 'GraphQL'],\n\t\ttypescript: false,\n\t\tssr: true,\n\t}),\n\ttemplate({\n\t\tname: 'vue-ts',\n\t\tframework: 'vue',\n\t\ttitle: 'Vue + TypeScript',\n\t\tdescription: 'The same Vite-powered Vue app, with end-to-end type safety from TypeScript.',\n\t\ttags: ['Vue', 'TypeScript', 'Vite', 'SPA'],\n\t\ttypescript: true,\n\t\tssr: false,\n\t}),\n\ttemplate({\n\t\tname: 'vue',\n\t\tframework: 'vue',\n\t\ttitle: 'Vue',\n\t\tdescription: \"A Vite-powered Vue single-page app, wired up to Harper's REST + GraphQL APIs out of the box.\",\n\t\ttags: ['Vue', 'Vite', 'SPA', 'GraphQL'],\n\t\ttypescript: false,\n\t\tssr: false,\n\t}),\n\ttemplate({\n\t\tname: 'vue-ts-ssr',\n\t\tframework: 'vue',\n\t\ttitle: 'Vue + TypeScript + SSR',\n\t\tdescription: 'Server-rendered Vue with Vite and TypeScript for type-safe, SEO-friendly pages on Harper.',\n\t\ttags: ['Vue', 'TypeScript', 'SSR', 'Vite'],\n\t\ttypescript: true,\n\t\tssr: true,\n\t}),\n\ttemplate({\n\t\tname: 'vue-ssr',\n\t\tframework: 'vue',\n\t\ttitle: 'Vue + SSR',\n\t\tdescription: 'Server-rendered Vue with Vite for fast first paints, hydrating into a full SPA on Harper.',\n\t\ttags: ['Vue', 'SSR', 'Vite', 'GraphQL'],\n\t\ttypescript: false,\n\t\tssr: true,\n\t}),\n];\n\n/**\n * The flat list of every template name, in catalog order. This is the canonical, dependency-free list\n * other tools can import to validate or enumerate templates.\n *\n * @type {string[]}\n */\nexport const templateNames = templates.map((t) => t.name);\n","import { templates as catalog } from 'create-harper/templates';\n\n// create-harper is the single source of truth for the template list, descriptions, npm packages, and\n// GitHub links. New templates added there flow through here (and into the createApp agent tool)\n// automatically. create-harper lists TypeScript-first; we re-sort to Studio's established display order\n// (by framework, then non-SSR before SSR, then JavaScript before TypeScript) so the picker and its\n// default selection stay stable.\nconst FRAMEWORK_ORDER = ['vanilla', 'react', 'vue'] as const;\n\n// Rank a framework by its position in FRAMEWORK_ORDER. Any framework not listed (e.g. a future\n// Svelte/Angular template added to create-harper) sorts to the end rather than the top.\nfunction frameworkRank(framework: string): number {\n\tconst index = (FRAMEWORK_ORDER as readonly string[]).indexOf(framework);\n\treturn index === -1 ? Infinity : index;\n}\n\nexport const templates = [...catalog]\n\t.sort((a, b) =>\n\t\tframeworkRank(a.framework) - frameworkRank(b.framework)\n\t\t|| Number(a.ssr) - Number(b.ssr)\n\t\t|| Number(a.typescript) - Number(b.typescript)\n\t)\n\t.map((t) => ({\n\t\t// Widen to `string`: the New Application form supplies the selected id as a plain string.\n\t\tid: t.name as string,\n\t\tname: t.title,\n\t\tdescription: t.description,\n\t\ttags: [...t.tags],\n\t\tnpm: t.npmPackage,\n\t\tgithubUrl: t.githubUrl,\n\t}));\n","import { InstanceClientConfig, InstanceTypeConfig } from '@/config/instanceClientConfig';\nimport { ReplicatedResponse } from '@/integrations/api/replication';\nimport { useMutation } from '@tanstack/react-query';\n\nexport interface CreateComponentFormData {\n\tproject: string;\n\ttemplate: string;\n}\n\nexport async function addComponent({\n\tinstanceClient,\n\tproject,\n\ttemplate,\n\tentityType,\n}: CreateComponentFormData & InstanceClientConfig & InstanceTypeConfig): Promise<ReplicatedResponse> {\n\tconst { data } = await instanceClient.post('/', {\n\t\toperation: 'add_component',\n\t\tproject,\n\t\ttemplate,\n\t\treplicated: entityType === 'cluster',\n\t}, { timeout: 300_000 });\n\treturn data;\n}\n\nexport function useAddComponentMutation() {\n\treturn useMutation({\n\t\tmutationFn: addComponent,\n\t});\n}\n","export function findBy<T, F extends keyof T>(array: T[], fieldName: F, value: T[F]): T | undefined {\n\tfor (const element of array) {\n\t\tif (element[fieldName] === value) {\n\t\t\treturn element;\n\t\t}\n\t}\n\treturn undefined;\n}\n","import { InstanceClientConfig, InstanceTypeConfig } from '@/config/instanceClientConfig';\nimport { ReplicatedResponse } from '@/integrations/api/replication';\nimport { useMutation } from '@tanstack/react-query';\n\ninterface DropComponentRequest extends InstanceClientConfig, InstanceTypeConfig {\n\tproject: string;\n\tfile: string | undefined;\n}\n\nexport async function dropComponent({\n\tfile,\n\tproject,\n\tentityType,\n\tinstanceClient,\n}: DropComponentRequest): Promise<ReplicatedResponse> {\n\tconst { data } = await instanceClient.post('/', {\n\t\toperation: 'drop_component',\n\t\tfile: file || undefined,\n\t\tproject,\n\t\treplicated: entityType === 'cluster',\n\t});\n\treturn data;\n}\n\nexport function useDropComponent() {\n\treturn useMutation({\n\t\tmutationFn: dropComponent,\n\t});\n}\n","export const rootId = '__root__';\nexport const importedApplications = 'importedApplications';\nexport const newApplication = 'newApplication';\n","import type { DirectoryEntry } from '@/features/instance/applications/context/directoryEntry';\nimport type { FileEntry } from '@/features/instance/applications/context/fileEntry';\nimport { isDirectory } from '@/features/instance/applications/context/isDirectory';\nimport { excludeFalsy } from '@/lib/arrays/excludeFalsy';\nimport type { TreeItem } from 'react-complex-tree';\nimport { importedApplications, newApplication, rootId } from './specialItems';\n\nexport function buildItems(rootEntries: Array<DirectoryEntry | FileEntry>): {\n\titems: Record<string, TreeItem<DirectoryEntry | FileEntry | undefined>>;\n\trootId: string;\n} {\n\tconst items: Record<string, TreeItem<DirectoryEntry | FileEntry | undefined>> = {};\n\n\tconst directoryIds: string[] = [];\n\tconst applicationIds: string[] = [];\n\tconst fileIds: string[] = [];\n\tfor (const entry of rootEntries) {\n\t\tif (isDirectory(entry)) {\n\t\t\tif (entry.package) {\n\t\t\t\tapplicationIds.push(entry.path);\n\t\t\t} else {\n\t\t\t\tdirectoryIds.push(entry.path);\n\t\t\t}\n\t\t} else {\n\t\t\tfileIds.push(entry.path);\n\t\t}\n\t\taddEntry(items, entry);\n\t}\n\n\titems[rootId] = {\n\t\tindex: rootId,\n\t\tisFolder: true,\n\t\tchildren: [\n\t\t\tnewApplication,\n\t\t\timportedApplications,\n\t\t\t...directoryIds,\n\t\t\t...fileIds,\n\t\t].filter(\n\t\t\texcludeFalsy,\n\t\t),\n\t\tdata: undefined,\n\t\tcanMove: false,\n\t\tcanRename: false,\n\t} satisfies TreeItem<undefined>;\n\n\titems[importedApplications] = {\n\t\tindex: importedApplications,\n\t\tisFolder: true,\n\t\tchildren: applicationIds,\n\t\tdata: {\n\t\t\tname: 'Imported Applications',\n\t\t\tpath: importedApplications,\n\t\t\tpackage: importedApplications,\n\t\t\tproject: '',\n\t\t\tentries: [],\n\t\t},\n\t\tcanMove: false,\n\t\tcanRename: false,\n\t} satisfies TreeItem<DirectoryEntry>;\n\n\titems[newApplication] = {\n\t\tindex: newApplication,\n\t\tisFolder: false,\n\t\tdata: {\n\t\t\tname: 'New Application',\n\t\t\tpath: newApplication,\n\t\t\tproject: '',\n\t\t},\n\t\tcanMove: false,\n\t\tcanRename: false,\n\t} satisfies TreeItem<FileEntry>;\n\n\treturn { items, rootId };\n}\n\nfunction addEntry(\n\titems: Record<string, TreeItem<DirectoryEntry | FileEntry | undefined>>,\n\tentry: DirectoryEntry | FileEntry,\n) {\n\tconst index = entry.path;\n\tif (isDirectory(entry)) {\n\t\tconst dir = entry as DirectoryEntry;\n\t\tconst childDirectoryIds: string[] = [];\n\t\tconst childFileIds: string[] = [];\n\t\tfor (const childEntry of dir.entries) {\n\t\t\tif (isDirectory(childEntry)) {\n\t\t\t\tchildDirectoryIds.push(childEntry.path);\n\t\t\t} else {\n\t\t\t\tchildFileIds.push(childEntry.path);\n\t\t\t}\n\t\t}\n\t\titems[index] = {\n\t\t\tindex,\n\t\t\tisFolder: true,\n\t\t\tchildren: [...childDirectoryIds, ...childFileIds],\n\t\t\tdata: entry,\n\t\t\tcanMove: false,\n\t\t\tcanRename: false,\n\t\t} satisfies TreeItem<DirectoryEntry>;\n\t\tfor (const child of dir.entries) {\n\t\t\taddEntry(items, child);\n\t\t}\n\t} else {\n\t\titems[index] = {\n\t\t\tindex,\n\t\t\tisFolder: false,\n\t\t\tdata: entry,\n\t\t\tcanMove: !entry.package,\n\t\t\tcanRename: !entry.package,\n\t\t} satisfies TreeItem<FileEntry>;\n\t}\n}\n","export function transformNodes<Transformed, Branch, Leaf>(\n\tnodes: Array<Branch | Leaf>,\n\tnestedPropertyName: keyof Branch,\n\ttransformer: (node: Branch | Leaf, parents: Branch[]) => Transformed,\n\tparents: Branch[] = [],\n): Transformed[] {\n\tconst results: Transformed[] = [];\n\n\tfor (const node of nodes) {\n\t\tconst transformed = transformer(node, parents);\n\t\tresults.push(transformed);\n\t\tconst potentialBranch = node as Branch;\n\t\tconst nestedNodes = potentialBranch[nestedPropertyName] as Array<Branch | Leaf>;\n\t\tif (nestedNodes) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\t(transformed as any)[nestedPropertyName] = transformNodes(nestedNodes, nestedPropertyName, transformer, [\n\t\t\t\t...parents,\n\t\t\t\tpotentialBranch,\n\t\t\t]);\n\t\t}\n\t}\n\n\treturn results;\n}\n","import { DirectoryEntry } from '@/features/instance/applications/context/directoryEntry';\nimport { FileEntry } from '@/features/instance/applications/context/fileEntry';\nimport { isDirectory } from '@/features/instance/applications/context/isDirectory';\nimport { APIDirectoryEntry, APIFileEntry } from '@/integrations/api/instance/applications/getComponents';\nimport { transformNodes } from '@/lib/arrays/transformNodes';\n\nexport function calculateRootEntries(entries: Array<APIDirectoryEntry | APIFileEntry>): {\n\trootEntries: Array<DirectoryEntry | FileEntry>;\n\tpathsRegistry: Set<string>;\n} {\n\tconst pathsRegistry = new Set<string>();\n\tconst rootEntries = transformNodes(\n\t\tentries || [],\n\t\t'entries',\n\t\t(node: APIFileEntry | APIDirectoryEntry, parents: APIDirectoryEntry[]) => {\n\t\t\tconst readMeAPIFile = isDirectory(node) && node.entries.find(e => e.name.toLowerCase() === 'readme.md');\n\t\t\tconst path = [...parents.map(p => p.name), node.name].join('/');\n\t\t\tpathsRegistry.add(path);\n\t\t\treturn {\n\t\t\t\tname: node.name,\n\t\t\t\tpath,\n\t\t\t\tproject: (parents[0] || node)?.name,\n\t\t\t\tpackage: (parents[0] || node)?.package,\n\t\t\t\toverviewEntry: readMeAPIFile && !isDirectory(readMeAPIFile) && {\n\t\t\t\t\t\t\tname: readMeAPIFile.name,\n\t\t\t\t\t\t\tpath: [...parents.map(p => p.name), node.name, readMeAPIFile.name].join('/'),\n\t\t\t\t\t\t\tproject: (parents[0] || node)?.name,\n\t\t\t\t\t\t\tpackage: (parents[0] || node)?.package,\n\t\t\t\t\t\t} || undefined,\n\t\t\t} satisfies DirectoryEntry | FileEntry;\n\t\t},\n\t);\n\treturn {\n\t\trootEntries,\n\t\tpathsRegistry,\n\t};\n}\n","import { InstanceClientConfig, InstanceTypeConfig } from '@/config/instanceClientConfig';\nimport { useMutation } from '@tanstack/react-query';\n\nexport interface SetComponentFileRequest extends InstanceClientConfig, InstanceTypeConfig {\n\tfile: string;\n\tpayload?: string;\n\tproject: string;\n\tencoding?: 'utf8' | 'ASCII' | 'binary' | 'hex' | 'base64' | 'utf16le' | 'latin1' | 'ucs2';\n}\n\nexport async function setComponentFile({\n\tfile,\n\tpayload,\n\tproject,\n\tentityType,\n\tinstanceClient,\n\tencoding,\n}: SetComponentFileRequest) {\n\tconst { data } = await instanceClient.post('/', {\n\t\toperation: 'set_component_file',\n\t\tfile,\n\t\tpayload,\n\t\tproject,\n\t\tencoding,\n\t\treplicated: entityType === 'cluster',\n\t}, { timeout: 300_000 });\n\treturn data;\n}\n\nexport function useSetComponentFile() {\n\treturn useMutation({\n\t\tmutationFn: setComponentFile,\n\t});\n}\n"],"x_google_ignoreList":[0,1,3],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/cssMode-CELnYoD2.js","assets/editor.api-OBQnf1nL.js","assets/vendor-datadog-DyjkTkvg.js","assets/rolldown-runtime-CNC7AqOf.js","assets/editor-jjEx9u7D.css","assets/workers-Bhsi-paP.js","assets/toggleHighContrast-el2uNoWb.js","assets/toggleHighContrast--ixms01u.css","assets/lspLanguageFeatures-DxCM7LI8.js","assets/htmlMode-C-XeByKD.js","assets/html-BVEzO_JE.js","assets/javascript-RfS7BpXx.js","assets/typescript-C-f5yNpf.js","assets/xml-CYWXNNmu.js","assets/yaml-C94SWN2B.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{i as e}from"./vendor-datadog-DyjkTkvg.js";import{J as t,t as n}from"./index-Sevt3MVx.js";import{loader as r}from"./dist-3T7cRma3.js";import{m as i,n as a}from"./editor.api-OBQnf1nL.js";import{s as o}from"./toggleHighContrast-el2uNoWb.js";import"./register-BDy01-q3.js";import"./register-CQHRwNP4.js";import{t as s}from"./editor-DK9rdQRE.js";var c=`__monacoFindWidgetTabIndexPatchApplied`,l=`__monacoFindWidgetOriginalTabIndex`;function u(e,t){let n=e?._domNode;if(!n)return;let r=n.querySelectorAll(`input, textarea, [tabindex], [role="button"], [role="checkbox"]`);for(let e of r)if(e instanceof HTMLElement)if(t){if(!(l in e.dataset))continue;let t=e.dataset[l];t===``?e.removeAttribute(`tabindex`):e.tabIndex=Number(t),delete e.dataset[l]}else l in e.dataset||(e.dataset[l]=e.getAttribute(`tabindex`)??``),e.tabIndex=-1}if(!o[c]){let e=o.prototype._reveal,t=o.prototype._hide;o.prototype._reveal=function(...t){e.apply(this,t),u(this,!0)},o.prototype._hide=function(...e){t.apply(this,e),u(this,!1)},o[c]=!0}var d=class{constructor(e,t,n){this._onDidChange=new a,this._languageId=e,this.setOptions(t),this.setModeConfiguration(n)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get modeConfiguration(){return this._modeConfiguration}get diagnosticsOptions(){return this.options}get options(){return this._options}setOptions(e){this._options=e||Object.create(null),this._onDidChange.fire(this)}setDiagnosticsOptions(e){this.setOptions(e)}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)}},f={validate:!0,lint:{compatibleVendorPrefixes:`ignore`,vendorPrefix:`warning`,duplicateProperties:`warning`,emptyRules:`warning`,importStatement:`ignore`,boxModel:`ignore`,universalSelector:`ignore`,zeroUnits:`ignore`,fontFaceProperties:`warning`,hexColorLength:`error`,argumentsInColorFunction:`error`,unknownProperties:`warning`,ieHack:`ignore`,unknownVendorSpecificProperties:`ignore`,propertyIgnoredDueToDisplay:`warning`,important:`ignore`,float:`ignore`,idSelector:`ignore`},data:{useDefaultDataProvider:!0},format:{newlineBetweenSelectors:!0,newlineBetweenRules:!0,spaceAroundSelectorSeparator:!1,braceStyle:`collapse`,maxPreserveNewLines:void 0,preserveNewLines:!0}},p={completionItems:!0,hovers:!0,documentSymbols:!0,definitions:!0,references:!0,documentHighlights:!0,rename:!0,colors:!0,foldingRanges:!0,diagnostics:!0,selectionRanges:!0,documentFormattingEdits:!0,documentRangeFormattingEdits:!0},m=new d(`css`,f,p),h=new d(`scss`,f,p),g=new d(`less`,f,p);function _(){return e(()=>import(`./cssMode-CELnYoD2.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8]))}i.onLanguage(`less`,()=>{_().then(e=>e.setupMode(g))}),i.onLanguage(`scss`,()=>{_().then(e=>e.setupMode(h))}),i.onLanguage(`css`,()=>{_().then(e=>e.setupMode(m))});var v=class{constructor(e,t,n){this._onDidChange=new a,this._languageId=e,this.setOptions(t),this.setModeConfiguration(n)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get options(){return this._options}get modeConfiguration(){return this._modeConfiguration}setOptions(e){this._options=e||Object.create(null),this._onDidChange.fire(this)}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)}},y={format:{tabSize:4,insertSpaces:!1,wrapLineLength:120,unformatted:`default": "a, abbr, acronym, b, bdo, big, br, button, cite, code, dfn, em, i, img, input, kbd, label, map, object, q, samp, select, small, span, strong, sub, sup, textarea, tt, var`,contentUnformatted:`pre`,indentInnerHtml:!1,preserveNewLines:!0,maxPreserveNewLines:void 0,indentHandlebars:!1,endWithNewline:!1,extraLiners:`head, body, /html`,wrapAttributes:`auto`},suggest:{},data:{useDefaultDataProvider:!0}};function b(e){return{completionItems:!0,hovers:!0,documentSymbols:!0,links:!0,documentHighlights:!0,rename:!0,colors:!0,foldingRanges:!0,selectionRanges:!0,diagnostics:e===x,documentFormattingEdits:e===x,documentRangeFormattingEdits:e===x}}var x=`html`,S=`handlebars`,C=`razor`;T(x,y,b(x)).defaults,T(S,y,b(S)).defaults,T(C,y,b(C)).defaults;function w(){return e(()=>import(`./htmlMode-C-XeByKD.js`),__vite__mapDeps([9,1,2,3,4,5,6,7,8]))}function T(e,t=y,n=b(e)){let r=new v(e,t,n),a,o=i.onLanguage(e,async()=>{a=(await w()).setupMode(r)});return{defaults:r,dispose(){o.dispose(),a?.dispose(),a=void 0}}}var E={},D={},O=class e{static getOrCreate(t){return D[t]||(D[t]=new e(t)),D[t]}constructor(e){this._languageId=e,this._loadingTriggered=!1,this._lazyLoadPromise=new Promise((e,t)=>{this._lazyLoadPromiseResolve=e,this._lazyLoadPromiseReject=t})}load(){return this._loadingTriggered||(this._loadingTriggered=!0,E[this._languageId].loader().then(e=>this._lazyLoadPromiseResolve(e),e=>this._lazyLoadPromiseReject(e))),this._lazyLoadPromise}};function k(e){let t=e.id;E[t]=e,i.register(e);let n=O.getOrCreate(t);i.registerTokensProviderFactory(t,{create:async()=>(await n.load()).language}),i.onLanguageEncountered(t,async()=>{let e=await n.load();i.setLanguageConfiguration(t,e.conf)})}k({id:`css`,extensions:[`.css`],aliases:[`CSS`,`css`],mimetypes:[`text/css`],loader:()=>e(()=>import(`./css-DIMkf-bt.js`),[])}),k({id:`graphql`,extensions:[`.graphql`,`.gql`],aliases:[`GraphQL`,`graphql`,`gql`],mimetypes:[`application/graphql`],loader:()=>e(()=>import(`./graphql-fmXr3nnJ.js`),[])}),k({id:`html`,extensions:[`.html`,`.htm`,`.shtml`,`.xhtml`,`.mdoc`,`.jsp`,`.asp`,`.aspx`,`.jshtm`],aliases:[`HTML`,`htm`,`html`,`xhtml`],mimetypes:[`text/html`,`text/x-jshtm`,`text/template`,`text/ng-template`],loader:()=>e(()=>import(`./html-BVEzO_JE.js`),__vite__mapDeps([10,1,2,3,4]))}),k({id:`javascript`,extensions:[`.js`,`.es6`,`.jsx`,`.mjs`,`.cjs`],firstLine:`^#!.*\\bnode`,filenames:[`jakefile`],aliases:[`JavaScript`,`javascript`,`js`],mimetypes:[`text/javascript`],loader:()=>e(()=>import(`./javascript-RfS7BpXx.js`),__vite__mapDeps([11,12,1,2,3,4]))}),k({id:`markdown`,extensions:[`.md`,`.markdown`,`.mdown`,`.mkdn`,`.mkd`,`.mdwn`,`.mdtxt`,`.mdtext`],aliases:[`Markdown`,`markdown`],loader:()=>e(()=>import(`./markdown-Cimd5fb3.js`),[])}),k({id:`typescript`,extensions:[`.ts`,`.tsx`,`.cts`,`.mts`],aliases:[`TypeScript`,`ts`,`typescript`],mimetypes:[`text/typescript`],loader:()=>e(()=>import(`./typescript-C-f5yNpf.js`),__vite__mapDeps([12,1,2,3,4]))}),k({id:`xml`,extensions:[`.xml`,`.xsd`,`.dtd`,`.ascx`,`.csproj`,`.config`,`.props`,`.targets`,`.wxi`,`.wxl`,`.wxs`,`.xaml`,`.svg`,`.svgz`,`.opf`,`.xslt`,`.xsl`],firstLine:`(\\<\\?xml.*)|(\\<svg)|(\\<\\!doctype\\s+svg)`,aliases:[`XML`,`xml`],mimetypes:[`text/xml`,`application/xml`,`application/xaml+xml`,`application/xml-dtd`],loader:()=>e(()=>import(`./xml-CYWXNNmu.js`),__vite__mapDeps([13,1,2,3,4]))}),k({id:`yaml`,extensions:[`.yaml`,`.yml`],aliases:[`YAML`,`yaml`,`YML`,`yml`],mimetypes:[`application/x-yaml`,`text/x-yaml`],loader:()=>e(()=>import(`./yaml-C94SWN2B.js`),__vite__mapDeps([14,1,2,3,4]))});function A(e){return new Worker(`/assets/editor.worker-DSRLG71d.js`,{type:`module`,name:e?.name})}function j(e){return new Worker(`/assets/css.worker-CKX4Om_9.js`,{type:`module`,name:e?.name})}function M(e){return new Worker(`/assets/html.worker-DA4qty_i.js`,{type:`module`,name:e?.name})}function N(e){return new Worker(`/assets/json.worker-BBwVQl7H.js`,{type:`module`,name:e?.name})}function P(e){return new Worker(`/assets/ts.worker-CLx2uvU0.js`,{type:`module`,name:e?.name})}function F(e){return new Worker(`/assets/yaml.worker-Cc_Rnkid.js`,{type:`module`,name:e?.name})}var I=globalThis;function L(e){switch(e){case`json`:return new N;case`css`:case`scss`:case`less`:return new j;case`html`:case`handlebars`:case`razor`:return new M;case`typescript`:case`javascript`:return new P;case`yaml`:return new F;default:return new A}}I.MonacoEnvironment={getWorker(e,t){let r=L(t);return r.addEventListener(`error`,()=>n()),r}},t(i),r.config({monaco:s});
|
|
3
|
+
//# sourceMappingURL=setup-I15FAF9H.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"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","names":["LanguageServiceDefaultsImpl","optionsDefault","getMode"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11],"sources":["../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/features/find/register.js","../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/features/css/register.js","../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/features/html/register.js","../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/definitions/_.contribution.js","../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/definitions/css/register.js","../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/definitions/graphql/register.js","../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/definitions/html/register.js","../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/definitions/javascript/register.js","../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/definitions/markdown/register.js","../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/definitions/typescript/register.js","../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/definitions/xml/register.js","../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/definitions/yaml/register.js","../../src/lib/monaco/setup.ts"],"sourcesContent":["import '../../editor/contrib/find/browser/findController.js';\nimport { FindWidget } from '../../editor/contrib/find/browser/findWidget.js';\n\nconst tabIndexPatchKey = \"__monacoFindWidgetTabIndexPatchApplied\";\nconst originalTabIndexKey = \"__monacoFindWidgetOriginalTabIndex\";\nfunction setFindWidgetTabbableState(widget, visible) {\n const domNode = widget?._domNode;\n if (!domNode) {\n return;\n }\n const focusableElements = domNode.querySelectorAll('input, textarea, [tabindex], [role=\"button\"], [role=\"checkbox\"]');\n for (const element of focusableElements) {\n if (!(element instanceof HTMLElement)) {\n continue;\n }\n if (visible) {\n if (!(originalTabIndexKey in element.dataset)) {\n continue;\n }\n const originalTabIndex = element.dataset[originalTabIndexKey];\n if (originalTabIndex === \"\") {\n element.removeAttribute(\"tabindex\");\n } else {\n element.tabIndex = Number(originalTabIndex);\n }\n delete element.dataset[originalTabIndexKey];\n } else {\n if (!(originalTabIndexKey in element.dataset)) {\n element.dataset[originalTabIndexKey] = element.getAttribute(\"tabindex\") ?? \"\";\n }\n element.tabIndex = -1;\n }\n }\n}\nif (!FindWidget[tabIndexPatchKey]) {\n const originalReveal = FindWidget.prototype._reveal;\n const originalHide = FindWidget.prototype._hide;\n FindWidget.prototype._reveal = function(...args) {\n originalReveal.apply(this, args);\n setFindWidgetTabbableState(this, true);\n };\n FindWidget.prototype._hide = function(...args) {\n originalHide.apply(this, args);\n setFindWidgetTabbableState(this, false);\n };\n FindWidget[tabIndexPatchKey] = true;\n}\n","import { languages, Emitter } from '../../../editor/editor.api.js';\n\nclass LanguageServiceDefaultsImpl {\n constructor(languageId, options, modeConfiguration) {\n this._onDidChange = new Emitter();\n this._languageId = languageId;\n this.setOptions(options);\n this.setModeConfiguration(modeConfiguration);\n }\n get onDidChange() {\n return this._onDidChange.event;\n }\n get languageId() {\n return this._languageId;\n }\n get modeConfiguration() {\n return this._modeConfiguration;\n }\n get diagnosticsOptions() {\n return this.options;\n }\n get options() {\n return this._options;\n }\n setOptions(options) {\n this._options = options || /* @__PURE__ */ Object.create(null);\n this._onDidChange.fire(this);\n }\n setDiagnosticsOptions(options) {\n this.setOptions(options);\n }\n setModeConfiguration(modeConfiguration) {\n this._modeConfiguration = modeConfiguration || /* @__PURE__ */ Object.create(null);\n this._onDidChange.fire(this);\n }\n}\nconst optionsDefault = {\n validate: true,\n lint: {\n compatibleVendorPrefixes: \"ignore\",\n vendorPrefix: \"warning\",\n duplicateProperties: \"warning\",\n emptyRules: \"warning\",\n importStatement: \"ignore\",\n boxModel: \"ignore\",\n universalSelector: \"ignore\",\n zeroUnits: \"ignore\",\n fontFaceProperties: \"warning\",\n hexColorLength: \"error\",\n argumentsInColorFunction: \"error\",\n unknownProperties: \"warning\",\n ieHack: \"ignore\",\n unknownVendorSpecificProperties: \"ignore\",\n propertyIgnoredDueToDisplay: \"warning\",\n important: \"ignore\",\n float: \"ignore\",\n idSelector: \"ignore\"\n },\n data: { useDefaultDataProvider: true },\n format: {\n newlineBetweenSelectors: true,\n newlineBetweenRules: true,\n spaceAroundSelectorSeparator: false,\n braceStyle: \"collapse\",\n maxPreserveNewLines: void 0,\n preserveNewLines: true\n }\n};\nconst modeConfigurationDefault = {\n completionItems: true,\n hovers: true,\n documentSymbols: true,\n definitions: true,\n references: true,\n documentHighlights: true,\n rename: true,\n colors: true,\n foldingRanges: true,\n diagnostics: true,\n selectionRanges: true,\n documentFormattingEdits: true,\n documentRangeFormattingEdits: true\n};\nconst cssDefaults = new LanguageServiceDefaultsImpl(\n \"css\",\n optionsDefault,\n modeConfigurationDefault\n);\nconst scssDefaults = new LanguageServiceDefaultsImpl(\n \"scss\",\n optionsDefault,\n modeConfigurationDefault\n);\nconst lessDefaults = new LanguageServiceDefaultsImpl(\n \"less\",\n optionsDefault,\n modeConfigurationDefault\n);\nfunction getMode() {\n return import('./cssMode.js');\n}\nlanguages.onLanguage(\"less\", () => {\n getMode().then((mode2) => mode2.setupMode(lessDefaults));\n});\nlanguages.onLanguage(\"scss\", () => {\n getMode().then((mode2) => mode2.setupMode(scssDefaults));\n});\nlanguages.onLanguage(\"css\", () => {\n getMode().then((mode2) => mode2.setupMode(cssDefaults));\n});\n\nexport { cssDefaults, lessDefaults, scssDefaults };\n","import { languages, Emitter } from '../../../editor/editor.api.js';\n\nclass LanguageServiceDefaultsImpl {\n constructor(languageId, options, modeConfiguration) {\n this._onDidChange = new Emitter();\n this._languageId = languageId;\n this.setOptions(options);\n this.setModeConfiguration(modeConfiguration);\n }\n get onDidChange() {\n return this._onDidChange.event;\n }\n get languageId() {\n return this._languageId;\n }\n get options() {\n return this._options;\n }\n get modeConfiguration() {\n return this._modeConfiguration;\n }\n setOptions(options) {\n this._options = options || /* @__PURE__ */ Object.create(null);\n this._onDidChange.fire(this);\n }\n setModeConfiguration(modeConfiguration) {\n this._modeConfiguration = modeConfiguration || /* @__PURE__ */ Object.create(null);\n this._onDidChange.fire(this);\n }\n}\nconst formatDefaults = {\n tabSize: 4,\n insertSpaces: false,\n wrapLineLength: 120,\n unformatted: 'default\": \"a, abbr, acronym, b, bdo, big, br, button, cite, code, dfn, em, i, img, input, kbd, label, map, object, q, samp, select, small, span, strong, sub, sup, textarea, tt, var',\n contentUnformatted: \"pre\",\n indentInnerHtml: false,\n preserveNewLines: true,\n maxPreserveNewLines: void 0,\n indentHandlebars: false,\n endWithNewline: false,\n extraLiners: \"head, body, /html\",\n wrapAttributes: \"auto\"\n};\nconst optionsDefault = {\n format: formatDefaults,\n suggest: {},\n data: { useDefaultDataProvider: true }\n};\nfunction getConfigurationDefault(languageId) {\n return {\n completionItems: true,\n hovers: true,\n documentSymbols: true,\n links: true,\n documentHighlights: true,\n rename: true,\n colors: true,\n foldingRanges: true,\n selectionRanges: true,\n diagnostics: languageId === htmlLanguageId,\n // turned off for Razor and Handlebar\n documentFormattingEdits: languageId === htmlLanguageId,\n // turned off for Razor and Handlebar\n documentRangeFormattingEdits: languageId === htmlLanguageId\n // turned off for Razor and Handlebar\n };\n}\nconst htmlLanguageId = \"html\";\nconst handlebarsLanguageId = \"handlebars\";\nconst razorLanguageId = \"razor\";\nconst htmlLanguageService = registerHTMLLanguageService(\n htmlLanguageId,\n optionsDefault,\n getConfigurationDefault(htmlLanguageId)\n);\nconst htmlDefaults = htmlLanguageService.defaults;\nconst handlebarLanguageService = registerHTMLLanguageService(\n handlebarsLanguageId,\n optionsDefault,\n getConfigurationDefault(handlebarsLanguageId)\n);\nconst handlebarDefaults = handlebarLanguageService.defaults;\nconst razorLanguageService = registerHTMLLanguageService(\n razorLanguageId,\n optionsDefault,\n getConfigurationDefault(razorLanguageId)\n);\nconst razorDefaults = razorLanguageService.defaults;\nfunction getMode() {\n return import('./htmlMode.js');\n}\nfunction registerHTMLLanguageService(languageId, options = optionsDefault, modeConfiguration = getConfigurationDefault(languageId)) {\n const defaults = new LanguageServiceDefaultsImpl(languageId, options, modeConfiguration);\n let mode2;\n const onLanguageListener = languages.onLanguage(languageId, async () => {\n mode2 = (await getMode()).setupMode(defaults);\n });\n return {\n defaults,\n dispose() {\n onLanguageListener.dispose();\n mode2?.dispose();\n mode2 = void 0;\n }\n };\n}\n\nexport { handlebarDefaults, handlebarLanguageService, htmlDefaults, htmlLanguageService, razorDefaults, razorLanguageService, registerHTMLLanguageService };\n","import { languages } from '../../editor/editor.api.js';\n\nconst languageDefinitions = {};\nconst lazyLanguageLoaders = {};\nclass LazyLanguageLoader {\n static getOrCreate(languageId) {\n if (!lazyLanguageLoaders[languageId]) {\n lazyLanguageLoaders[languageId] = new LazyLanguageLoader(languageId);\n }\n return lazyLanguageLoaders[languageId];\n }\n constructor(languageId) {\n this._languageId = languageId;\n this._loadingTriggered = false;\n this._lazyLoadPromise = new Promise((resolve, reject) => {\n this._lazyLoadPromiseResolve = resolve;\n this._lazyLoadPromiseReject = reject;\n });\n }\n load() {\n if (!this._loadingTriggered) {\n this._loadingTriggered = true;\n languageDefinitions[this._languageId].loader().then(\n (mod) => this._lazyLoadPromiseResolve(mod),\n (err) => this._lazyLoadPromiseReject(err)\n );\n }\n return this._lazyLoadPromise;\n }\n}\nfunction registerLanguage(def) {\n const languageId = def.id;\n languageDefinitions[languageId] = def;\n languages.register(def);\n const lazyLanguageLoader = LazyLanguageLoader.getOrCreate(languageId);\n languages.registerTokensProviderFactory(languageId, {\n create: async () => {\n const mod = await lazyLanguageLoader.load();\n return mod.language;\n }\n });\n languages.onLanguageEncountered(languageId, async () => {\n const mod = await lazyLanguageLoader.load();\n languages.setLanguageConfiguration(languageId, mod.conf);\n });\n}\n\nexport { registerLanguage };\n","import { registerLanguage } from '../_.contribution.js';\n\nregisterLanguage({\n id: \"css\",\n extensions: [\".css\"],\n aliases: [\"CSS\", \"css\"],\n mimetypes: [\"text/css\"],\n loader: () => import('./css.js')\n});\n","import { registerLanguage } from '../_.contribution.js';\n\nregisterLanguage({\n id: \"graphql\",\n extensions: [\".graphql\", \".gql\"],\n aliases: [\"GraphQL\", \"graphql\", \"gql\"],\n mimetypes: [\"application/graphql\"],\n loader: () => import('./graphql.js')\n});\n","import { registerLanguage } from '../_.contribution.js';\n\nregisterLanguage({\n id: \"html\",\n extensions: [\".html\", \".htm\", \".shtml\", \".xhtml\", \".mdoc\", \".jsp\", \".asp\", \".aspx\", \".jshtm\"],\n aliases: [\"HTML\", \"htm\", \"html\", \"xhtml\"],\n mimetypes: [\"text/html\", \"text/x-jshtm\", \"text/template\", \"text/ng-template\"],\n loader: () => import('./html.js')\n});\n","import { registerLanguage } from '../_.contribution.js';\n\nregisterLanguage({\n id: \"javascript\",\n extensions: [\".js\", \".es6\", \".jsx\", \".mjs\", \".cjs\"],\n firstLine: \"^#!.*\\\\bnode\",\n filenames: [\"jakefile\"],\n aliases: [\"JavaScript\", \"javascript\", \"js\"],\n mimetypes: [\"text/javascript\"],\n loader: () => import('./javascript.js')\n});\n","import { registerLanguage } from '../_.contribution.js';\n\nregisterLanguage({\n id: \"markdown\",\n extensions: [\".md\", \".markdown\", \".mdown\", \".mkdn\", \".mkd\", \".mdwn\", \".mdtxt\", \".mdtext\"],\n aliases: [\"Markdown\", \"markdown\"],\n loader: () => import('./markdown.js')\n});\n","import { registerLanguage } from '../_.contribution.js';\n\nregisterLanguage({\n id: \"typescript\",\n extensions: [\".ts\", \".tsx\", \".cts\", \".mts\"],\n aliases: [\"TypeScript\", \"ts\", \"typescript\"],\n mimetypes: [\"text/typescript\"],\n loader: () => {\n return import('./typescript.js');\n }\n});\n","import { registerLanguage } from '../_.contribution.js';\n\nregisterLanguage({\n id: \"xml\",\n extensions: [\n \".xml\",\n \".xsd\",\n \".dtd\",\n \".ascx\",\n \".csproj\",\n \".config\",\n \".props\",\n \".targets\",\n \".wxi\",\n \".wxl\",\n \".wxs\",\n \".xaml\",\n \".svg\",\n \".svgz\",\n \".opf\",\n \".xslt\",\n \".xsl\"\n ],\n firstLine: \"(\\\\<\\\\?xml.*)|(\\\\<svg)|(\\\\<\\\\!doctype\\\\s+svg)\",\n aliases: [\"XML\", \"xml\"],\n mimetypes: [\"text/xml\", \"application/xml\", \"application/xaml+xml\", \"application/xml-dtd\"],\n loader: () => import('./xml.js')\n});\n","import { registerLanguage } from '../_.contribution.js';\n\nregisterLanguage({\n id: \"yaml\",\n extensions: [\".yaml\", \".yml\"],\n aliases: [\"YAML\", \"yaml\", \"YML\", \"yml\"],\n mimetypes: [\"application/x-yaml\", \"text/x-yaml\"],\n loader: () => import('./yaml.js')\n});\n","/**\n * Self-host the Monaco editor instead of loading it from a CDN.\n *\n * `@monaco-editor/react` defaults to fetching Monaco (and its workers) from a\n * CDN at runtime. That works for highlighting, but cross-origin web workers are\n * unreliable in that mode (Monaco silently falls back to running language\n * services on the main thread), and there is no way to supply monaco-yaml's\n * worker. Bundling Monaco locally lets Vite build every language worker\n * (including YAML), so the TypeScript/JSON/YAML language services run in real\n * workers.\n *\n * This is a curated Monaco build: rather than `import 'monaco-editor'` (which\n * bundles all ~90 languages), we import the editor + all editor features, then\n * only the languages the Applications editor opens — TS/JS (+TSX/JSX), JSON,\n * CSS, HTML, Markdown, GraphQL (Harper schemas), YAML, and XML (SVG source).\n *\n * The specifiers below are monaco-editor 0.56's public, tree-shakeable entry\n * points (0.56 added an `exports` map that re-roots the package at `esm/vs`, so\n * the old `monaco-editor/esm/vs/…` deep paths no longer resolve at all).\n *\n * This module has side effects and must run before the first `<Editor>` mounts,\n * so it is imported at the top of `main.tsx`.\n */\nimport { reportPossibleStaleDeploy } from '@/lib/installStaleDeployReload';\nimport { registerWorkerFreeJsonLanguage } from '@/lib/monaco/workerFreeJsonLanguage';\nimport { loader } from '@monaco-editor/react';\n// Typed Monaco API namespace.\nimport * as monaco from 'monaco-editor/editor';\n// All editor features (find, folding, suggest, hover, command palette, …) on top\n// of the core namespace imported above — without Monaco's bundled languages.\nimport 'monaco-editor/features/register.all';\n// Rich language services (IntelliSense + diagnostics, each backed by a worker).\nimport 'monaco-editor/languages/features/css/register';\nimport 'monaco-editor/languages/features/html/register';\nimport 'monaco-editor/languages/features/json/register';\nimport 'monaco-editor/languages/features/typescript/register';\n// Syntax highlighting (Monarch grammars). TS/JS need these for highlighting\n// (their language service only adds IntelliSense); CSS/HTML round out the\n// grammar alongside their services; Markdown, YAML, and XML are highlighting-only\n// here (YAML schema features come from monaco-yaml; XML backs the SVG source\n// editor with no worker/validation of its own).\nimport 'monaco-editor/languages/definitions/css/register';\nimport 'monaco-editor/languages/definitions/graphql/register';\nimport 'monaco-editor/languages/definitions/html/register';\nimport 'monaco-editor/languages/definitions/javascript/register';\nimport 'monaco-editor/languages/definitions/markdown/register';\nimport 'monaco-editor/languages/definitions/typescript/register';\nimport 'monaco-editor/languages/definitions/xml/register';\nimport 'monaco-editor/languages/definitions/yaml/register';\n// Workers (Vite-bundled).\nimport editorWorker from 'monaco-editor/editor/editor.worker.js?worker';\nimport cssWorker from 'monaco-editor/languages/features/css/css.worker.js?worker';\nimport htmlWorker from 'monaco-editor/languages/features/html/html.worker.js?worker';\nimport jsonWorker from 'monaco-editor/languages/features/json/json.worker.js?worker';\nimport tsWorker from 'monaco-editor/languages/features/typescript/ts.worker.js?worker';\nimport yamlWorker from 'monaco-yaml/yaml.worker?worker';\n\nconst globalScope = globalThis as unknown as { MonacoEnvironment?: monaco.Environment };\n\nfunction createLanguageWorker(label: string): Worker {\n\tswitch (label) {\n\t\tcase 'json':\n\t\t\treturn new jsonWorker();\n\t\tcase 'css':\n\t\tcase 'scss':\n\t\tcase 'less':\n\t\t\treturn new cssWorker();\n\t\tcase 'html':\n\t\tcase 'handlebars':\n\t\tcase 'razor':\n\t\t\treturn new htmlWorker();\n\t\tcase 'typescript':\n\t\tcase 'javascript':\n\t\t\treturn new tsWorker();\n\t\tcase 'yaml':\n\t\t\treturn new yamlWorker();\n\t\tdefault:\n\t\t\treturn new editorWorker();\n\t}\n}\n\nglobalScope.MonacoEnvironment = {\n\tgetWorker(_workerId: string, label: string): Worker {\n\t\tconst worker = createLanguageWorker(label);\n\t\t// A worker whose hashed chunk 404s after a redeploy fails to load and\n\t\t// fires its own `error` event — NOT Vite's `vite:preloadError`, so the\n\t\t// window listener never sees it. Left unhandled, Monaco silently swaps in\n\t\t// a degraded main-thread fallback for the rest of the session (issue\n\t\t// #1406). Route the failure into the same one-shot, rate-limited reload\n\t\t// recovery so the session heals on the fresh chunks instead.\n\t\tworker.addEventListener('error', () => reportPossibleStaleDeploy());\n\t\treturn worker;\n\t},\n};\n\n// A JSON highlight language with no language worker, for the browse record\n// editors — see `workerFreeJsonLanguage.ts`. Registered here, alongside the\n// built-in `json` contribution above, so it exists before the first editor mounts.\nregisterWorkerFreeJsonLanguage(monaco.languages);\n\n// Point @monaco-editor/react at the locally bundled Monaco rather than the CDN.\nloader.config({ monaco });\n\n// Dev-only convenience: expose the Monaco instance for debugging in the console.\n// (When CDN-loaded, Monaco set `window.monaco` itself; the bundled module does not.)\nif (import.meta.env.DEV) {\n\t(globalThis as typeof globalThis & { monaco?: typeof monaco }).monaco = monaco;\n}\n"],"file":"setup-B56Oz1_u.js"}
|
|
1
|
+
{"version":3,"mappings":"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","names":["LanguageServiceDefaultsImpl","optionsDefault","getMode"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11],"sources":["../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/features/find/register.js","../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/features/css/register.js","../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/features/html/register.js","../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/definitions/_.contribution.js","../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/definitions/css/register.js","../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/definitions/graphql/register.js","../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/definitions/html/register.js","../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/definitions/javascript/register.js","../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/definitions/markdown/register.js","../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/definitions/typescript/register.js","../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/definitions/xml/register.js","../../node_modules/.pnpm/monaco-editor@0.56.0/node_modules/monaco-editor/esm/vs/languages/definitions/yaml/register.js","../../src/lib/monaco/setup.ts"],"sourcesContent":["import '../../editor/contrib/find/browser/findController.js';\nimport { FindWidget } from '../../editor/contrib/find/browser/findWidget.js';\n\nconst tabIndexPatchKey = \"__monacoFindWidgetTabIndexPatchApplied\";\nconst originalTabIndexKey = \"__monacoFindWidgetOriginalTabIndex\";\nfunction setFindWidgetTabbableState(widget, visible) {\n const domNode = widget?._domNode;\n if (!domNode) {\n return;\n }\n const focusableElements = domNode.querySelectorAll('input, textarea, [tabindex], [role=\"button\"], [role=\"checkbox\"]');\n for (const element of focusableElements) {\n if (!(element instanceof HTMLElement)) {\n continue;\n }\n if (visible) {\n if (!(originalTabIndexKey in element.dataset)) {\n continue;\n }\n const originalTabIndex = element.dataset[originalTabIndexKey];\n if (originalTabIndex === \"\") {\n element.removeAttribute(\"tabindex\");\n } else {\n element.tabIndex = Number(originalTabIndex);\n }\n delete element.dataset[originalTabIndexKey];\n } else {\n if (!(originalTabIndexKey in element.dataset)) {\n element.dataset[originalTabIndexKey] = element.getAttribute(\"tabindex\") ?? \"\";\n }\n element.tabIndex = -1;\n }\n }\n}\nif (!FindWidget[tabIndexPatchKey]) {\n const originalReveal = FindWidget.prototype._reveal;\n const originalHide = FindWidget.prototype._hide;\n FindWidget.prototype._reveal = function(...args) {\n originalReveal.apply(this, args);\n setFindWidgetTabbableState(this, true);\n };\n FindWidget.prototype._hide = function(...args) {\n originalHide.apply(this, args);\n setFindWidgetTabbableState(this, false);\n };\n FindWidget[tabIndexPatchKey] = true;\n}\n","import { languages, Emitter } from '../../../editor/editor.api.js';\n\nclass LanguageServiceDefaultsImpl {\n constructor(languageId, options, modeConfiguration) {\n this._onDidChange = new Emitter();\n this._languageId = languageId;\n this.setOptions(options);\n this.setModeConfiguration(modeConfiguration);\n }\n get onDidChange() {\n return this._onDidChange.event;\n }\n get languageId() {\n return this._languageId;\n }\n get modeConfiguration() {\n return this._modeConfiguration;\n }\n get diagnosticsOptions() {\n return this.options;\n }\n get options() {\n return this._options;\n }\n setOptions(options) {\n this._options = options || /* @__PURE__ */ Object.create(null);\n this._onDidChange.fire(this);\n }\n setDiagnosticsOptions(options) {\n this.setOptions(options);\n }\n setModeConfiguration(modeConfiguration) {\n this._modeConfiguration = modeConfiguration || /* @__PURE__ */ Object.create(null);\n this._onDidChange.fire(this);\n }\n}\nconst optionsDefault = {\n validate: true,\n lint: {\n compatibleVendorPrefixes: \"ignore\",\n vendorPrefix: \"warning\",\n duplicateProperties: \"warning\",\n emptyRules: \"warning\",\n importStatement: \"ignore\",\n boxModel: \"ignore\",\n universalSelector: \"ignore\",\n zeroUnits: \"ignore\",\n fontFaceProperties: \"warning\",\n hexColorLength: \"error\",\n argumentsInColorFunction: \"error\",\n unknownProperties: \"warning\",\n ieHack: \"ignore\",\n unknownVendorSpecificProperties: \"ignore\",\n propertyIgnoredDueToDisplay: \"warning\",\n important: \"ignore\",\n float: \"ignore\",\n idSelector: \"ignore\"\n },\n data: { useDefaultDataProvider: true },\n format: {\n newlineBetweenSelectors: true,\n newlineBetweenRules: true,\n spaceAroundSelectorSeparator: false,\n braceStyle: \"collapse\",\n maxPreserveNewLines: void 0,\n preserveNewLines: true\n }\n};\nconst modeConfigurationDefault = {\n completionItems: true,\n hovers: true,\n documentSymbols: true,\n definitions: true,\n references: true,\n documentHighlights: true,\n rename: true,\n colors: true,\n foldingRanges: true,\n diagnostics: true,\n selectionRanges: true,\n documentFormattingEdits: true,\n documentRangeFormattingEdits: true\n};\nconst cssDefaults = new LanguageServiceDefaultsImpl(\n \"css\",\n optionsDefault,\n modeConfigurationDefault\n);\nconst scssDefaults = new LanguageServiceDefaultsImpl(\n \"scss\",\n optionsDefault,\n modeConfigurationDefault\n);\nconst lessDefaults = new LanguageServiceDefaultsImpl(\n \"less\",\n optionsDefault,\n modeConfigurationDefault\n);\nfunction getMode() {\n return import('./cssMode.js');\n}\nlanguages.onLanguage(\"less\", () => {\n getMode().then((mode2) => mode2.setupMode(lessDefaults));\n});\nlanguages.onLanguage(\"scss\", () => {\n getMode().then((mode2) => mode2.setupMode(scssDefaults));\n});\nlanguages.onLanguage(\"css\", () => {\n getMode().then((mode2) => mode2.setupMode(cssDefaults));\n});\n\nexport { cssDefaults, lessDefaults, scssDefaults };\n","import { languages, Emitter } from '../../../editor/editor.api.js';\n\nclass LanguageServiceDefaultsImpl {\n constructor(languageId, options, modeConfiguration) {\n this._onDidChange = new Emitter();\n this._languageId = languageId;\n this.setOptions(options);\n this.setModeConfiguration(modeConfiguration);\n }\n get onDidChange() {\n return this._onDidChange.event;\n }\n get languageId() {\n return this._languageId;\n }\n get options() {\n return this._options;\n }\n get modeConfiguration() {\n return this._modeConfiguration;\n }\n setOptions(options) {\n this._options = options || /* @__PURE__ */ Object.create(null);\n this._onDidChange.fire(this);\n }\n setModeConfiguration(modeConfiguration) {\n this._modeConfiguration = modeConfiguration || /* @__PURE__ */ Object.create(null);\n this._onDidChange.fire(this);\n }\n}\nconst formatDefaults = {\n tabSize: 4,\n insertSpaces: false,\n wrapLineLength: 120,\n unformatted: 'default\": \"a, abbr, acronym, b, bdo, big, br, button, cite, code, dfn, em, i, img, input, kbd, label, map, object, q, samp, select, small, span, strong, sub, sup, textarea, tt, var',\n contentUnformatted: \"pre\",\n indentInnerHtml: false,\n preserveNewLines: true,\n maxPreserveNewLines: void 0,\n indentHandlebars: false,\n endWithNewline: false,\n extraLiners: \"head, body, /html\",\n wrapAttributes: \"auto\"\n};\nconst optionsDefault = {\n format: formatDefaults,\n suggest: {},\n data: { useDefaultDataProvider: true }\n};\nfunction getConfigurationDefault(languageId) {\n return {\n completionItems: true,\n hovers: true,\n documentSymbols: true,\n links: true,\n documentHighlights: true,\n rename: true,\n colors: true,\n foldingRanges: true,\n selectionRanges: true,\n diagnostics: languageId === htmlLanguageId,\n // turned off for Razor and Handlebar\n documentFormattingEdits: languageId === htmlLanguageId,\n // turned off for Razor and Handlebar\n documentRangeFormattingEdits: languageId === htmlLanguageId\n // turned off for Razor and Handlebar\n };\n}\nconst htmlLanguageId = \"html\";\nconst handlebarsLanguageId = \"handlebars\";\nconst razorLanguageId = \"razor\";\nconst htmlLanguageService = registerHTMLLanguageService(\n htmlLanguageId,\n optionsDefault,\n getConfigurationDefault(htmlLanguageId)\n);\nconst htmlDefaults = htmlLanguageService.defaults;\nconst handlebarLanguageService = registerHTMLLanguageService(\n handlebarsLanguageId,\n optionsDefault,\n getConfigurationDefault(handlebarsLanguageId)\n);\nconst handlebarDefaults = handlebarLanguageService.defaults;\nconst razorLanguageService = registerHTMLLanguageService(\n razorLanguageId,\n optionsDefault,\n getConfigurationDefault(razorLanguageId)\n);\nconst razorDefaults = razorLanguageService.defaults;\nfunction getMode() {\n return import('./htmlMode.js');\n}\nfunction registerHTMLLanguageService(languageId, options = optionsDefault, modeConfiguration = getConfigurationDefault(languageId)) {\n const defaults = new LanguageServiceDefaultsImpl(languageId, options, modeConfiguration);\n let mode2;\n const onLanguageListener = languages.onLanguage(languageId, async () => {\n mode2 = (await getMode()).setupMode(defaults);\n });\n return {\n defaults,\n dispose() {\n onLanguageListener.dispose();\n mode2?.dispose();\n mode2 = void 0;\n }\n };\n}\n\nexport { handlebarDefaults, handlebarLanguageService, htmlDefaults, htmlLanguageService, razorDefaults, razorLanguageService, registerHTMLLanguageService };\n","import { languages } from '../../editor/editor.api.js';\n\nconst languageDefinitions = {};\nconst lazyLanguageLoaders = {};\nclass LazyLanguageLoader {\n static getOrCreate(languageId) {\n if (!lazyLanguageLoaders[languageId]) {\n lazyLanguageLoaders[languageId] = new LazyLanguageLoader(languageId);\n }\n return lazyLanguageLoaders[languageId];\n }\n constructor(languageId) {\n this._languageId = languageId;\n this._loadingTriggered = false;\n this._lazyLoadPromise = new Promise((resolve, reject) => {\n this._lazyLoadPromiseResolve = resolve;\n this._lazyLoadPromiseReject = reject;\n });\n }\n load() {\n if (!this._loadingTriggered) {\n this._loadingTriggered = true;\n languageDefinitions[this._languageId].loader().then(\n (mod) => this._lazyLoadPromiseResolve(mod),\n (err) => this._lazyLoadPromiseReject(err)\n );\n }\n return this._lazyLoadPromise;\n }\n}\nfunction registerLanguage(def) {\n const languageId = def.id;\n languageDefinitions[languageId] = def;\n languages.register(def);\n const lazyLanguageLoader = LazyLanguageLoader.getOrCreate(languageId);\n languages.registerTokensProviderFactory(languageId, {\n create: async () => {\n const mod = await lazyLanguageLoader.load();\n return mod.language;\n }\n });\n languages.onLanguageEncountered(languageId, async () => {\n const mod = await lazyLanguageLoader.load();\n languages.setLanguageConfiguration(languageId, mod.conf);\n });\n}\n\nexport { registerLanguage };\n","import { registerLanguage } from '../_.contribution.js';\n\nregisterLanguage({\n id: \"css\",\n extensions: [\".css\"],\n aliases: [\"CSS\", \"css\"],\n mimetypes: [\"text/css\"],\n loader: () => import('./css.js')\n});\n","import { registerLanguage } from '../_.contribution.js';\n\nregisterLanguage({\n id: \"graphql\",\n extensions: [\".graphql\", \".gql\"],\n aliases: [\"GraphQL\", \"graphql\", \"gql\"],\n mimetypes: [\"application/graphql\"],\n loader: () => import('./graphql.js')\n});\n","import { registerLanguage } from '../_.contribution.js';\n\nregisterLanguage({\n id: \"html\",\n extensions: [\".html\", \".htm\", \".shtml\", \".xhtml\", \".mdoc\", \".jsp\", \".asp\", \".aspx\", \".jshtm\"],\n aliases: [\"HTML\", \"htm\", \"html\", \"xhtml\"],\n mimetypes: [\"text/html\", \"text/x-jshtm\", \"text/template\", \"text/ng-template\"],\n loader: () => import('./html.js')\n});\n","import { registerLanguage } from '../_.contribution.js';\n\nregisterLanguage({\n id: \"javascript\",\n extensions: [\".js\", \".es6\", \".jsx\", \".mjs\", \".cjs\"],\n firstLine: \"^#!.*\\\\bnode\",\n filenames: [\"jakefile\"],\n aliases: [\"JavaScript\", \"javascript\", \"js\"],\n mimetypes: [\"text/javascript\"],\n loader: () => import('./javascript.js')\n});\n","import { registerLanguage } from '../_.contribution.js';\n\nregisterLanguage({\n id: \"markdown\",\n extensions: [\".md\", \".markdown\", \".mdown\", \".mkdn\", \".mkd\", \".mdwn\", \".mdtxt\", \".mdtext\"],\n aliases: [\"Markdown\", \"markdown\"],\n loader: () => import('./markdown.js')\n});\n","import { registerLanguage } from '../_.contribution.js';\n\nregisterLanguage({\n id: \"typescript\",\n extensions: [\".ts\", \".tsx\", \".cts\", \".mts\"],\n aliases: [\"TypeScript\", \"ts\", \"typescript\"],\n mimetypes: [\"text/typescript\"],\n loader: () => {\n return import('./typescript.js');\n }\n});\n","import { registerLanguage } from '../_.contribution.js';\n\nregisterLanguage({\n id: \"xml\",\n extensions: [\n \".xml\",\n \".xsd\",\n \".dtd\",\n \".ascx\",\n \".csproj\",\n \".config\",\n \".props\",\n \".targets\",\n \".wxi\",\n \".wxl\",\n \".wxs\",\n \".xaml\",\n \".svg\",\n \".svgz\",\n \".opf\",\n \".xslt\",\n \".xsl\"\n ],\n firstLine: \"(\\\\<\\\\?xml.*)|(\\\\<svg)|(\\\\<\\\\!doctype\\\\s+svg)\",\n aliases: [\"XML\", \"xml\"],\n mimetypes: [\"text/xml\", \"application/xml\", \"application/xaml+xml\", \"application/xml-dtd\"],\n loader: () => import('./xml.js')\n});\n","import { registerLanguage } from '../_.contribution.js';\n\nregisterLanguage({\n id: \"yaml\",\n extensions: [\".yaml\", \".yml\"],\n aliases: [\"YAML\", \"yaml\", \"YML\", \"yml\"],\n mimetypes: [\"application/x-yaml\", \"text/x-yaml\"],\n loader: () => import('./yaml.js')\n});\n","/**\n * Self-host the Monaco editor instead of loading it from a CDN.\n *\n * `@monaco-editor/react` defaults to fetching Monaco (and its workers) from a\n * CDN at runtime. That works for highlighting, but cross-origin web workers are\n * unreliable in that mode (Monaco silently falls back to running language\n * services on the main thread), and there is no way to supply monaco-yaml's\n * worker. Bundling Monaco locally lets Vite build every language worker\n * (including YAML), so the TypeScript/JSON/YAML language services run in real\n * workers.\n *\n * This is a curated Monaco build: rather than `import 'monaco-editor'` (which\n * bundles all ~90 languages), we import the editor + all editor features, then\n * only the languages the Applications editor opens — TS/JS (+TSX/JSX), JSON,\n * CSS, HTML, Markdown, GraphQL (Harper schemas), YAML, and XML (SVG source).\n *\n * The specifiers below are monaco-editor 0.56's public, tree-shakeable entry\n * points (0.56 added an `exports` map that re-roots the package at `esm/vs`, so\n * the old `monaco-editor/esm/vs/…` deep paths no longer resolve at all).\n *\n * This module has side effects and must run before the first `<Editor>` mounts,\n * so it is imported at the top of `main.tsx`.\n */\nimport { reportPossibleStaleDeploy } from '@/lib/installStaleDeployReload';\nimport { registerWorkerFreeJsonLanguage } from '@/lib/monaco/workerFreeJsonLanguage';\nimport { loader } from '@monaco-editor/react';\n// Typed Monaco API namespace.\nimport * as monaco from 'monaco-editor/editor';\n// All editor features (find, folding, suggest, hover, command palette, …) on top\n// of the core namespace imported above — without Monaco's bundled languages.\nimport 'monaco-editor/features/register.all';\n// Rich language services (IntelliSense + diagnostics, each backed by a worker).\nimport 'monaco-editor/languages/features/css/register';\nimport 'monaco-editor/languages/features/html/register';\nimport 'monaco-editor/languages/features/json/register';\nimport 'monaco-editor/languages/features/typescript/register';\n// Syntax highlighting (Monarch grammars). TS/JS need these for highlighting\n// (their language service only adds IntelliSense); CSS/HTML round out the\n// grammar alongside their services; Markdown, YAML, and XML are highlighting-only\n// here (YAML schema features come from monaco-yaml; XML backs the SVG source\n// editor with no worker/validation of its own).\nimport 'monaco-editor/languages/definitions/css/register';\nimport 'monaco-editor/languages/definitions/graphql/register';\nimport 'monaco-editor/languages/definitions/html/register';\nimport 'monaco-editor/languages/definitions/javascript/register';\nimport 'monaco-editor/languages/definitions/markdown/register';\nimport 'monaco-editor/languages/definitions/typescript/register';\nimport 'monaco-editor/languages/definitions/xml/register';\nimport 'monaco-editor/languages/definitions/yaml/register';\n// Workers (Vite-bundled).\nimport editorWorker from 'monaco-editor/editor/editor.worker.js?worker';\nimport cssWorker from 'monaco-editor/languages/features/css/css.worker.js?worker';\nimport htmlWorker from 'monaco-editor/languages/features/html/html.worker.js?worker';\nimport jsonWorker from 'monaco-editor/languages/features/json/json.worker.js?worker';\nimport tsWorker from 'monaco-editor/languages/features/typescript/ts.worker.js?worker';\nimport yamlWorker from 'monaco-yaml/yaml.worker?worker';\n\nconst globalScope = globalThis as unknown as { MonacoEnvironment?: monaco.Environment };\n\nfunction createLanguageWorker(label: string): Worker {\n\tswitch (label) {\n\t\tcase 'json':\n\t\t\treturn new jsonWorker();\n\t\tcase 'css':\n\t\tcase 'scss':\n\t\tcase 'less':\n\t\t\treturn new cssWorker();\n\t\tcase 'html':\n\t\tcase 'handlebars':\n\t\tcase 'razor':\n\t\t\treturn new htmlWorker();\n\t\tcase 'typescript':\n\t\tcase 'javascript':\n\t\t\treturn new tsWorker();\n\t\tcase 'yaml':\n\t\t\treturn new yamlWorker();\n\t\tdefault:\n\t\t\treturn new editorWorker();\n\t}\n}\n\nglobalScope.MonacoEnvironment = {\n\tgetWorker(_workerId: string, label: string): Worker {\n\t\tconst worker = createLanguageWorker(label);\n\t\t// A worker whose hashed chunk 404s after a redeploy fails to load and\n\t\t// fires its own `error` event — NOT Vite's `vite:preloadError`, so the\n\t\t// window listener never sees it. Left unhandled, Monaco silently swaps in\n\t\t// a degraded main-thread fallback for the rest of the session (issue\n\t\t// #1406). Route the failure into the same one-shot, rate-limited reload\n\t\t// recovery so the session heals on the fresh chunks instead.\n\t\tworker.addEventListener('error', () => reportPossibleStaleDeploy());\n\t\treturn worker;\n\t},\n};\n\n// A JSON highlight language with no language worker, for the browse record\n// editors — see `workerFreeJsonLanguage.ts`. Registered here, alongside the\n// built-in `json` contribution above, so it exists before the first editor mounts.\nregisterWorkerFreeJsonLanguage(monaco.languages);\n\n// Point @monaco-editor/react at the locally bundled Monaco rather than the CDN.\nloader.config({ monaco });\n\n// Dev-only convenience: expose the Monaco instance for debugging in the console.\n// (When CDN-loaded, Monaco set `window.monaco` itself; the bundled module does not.)\nif (import.meta.env.DEV) {\n\t(globalThis as typeof globalThis & { monaco?: typeof monaco }).monaco = monaco;\n}\n"],"file":"setup-I15FAF9H.js"}
|